I’ve a number of completely different courses which must carry out the identical advanced operation
So to maintain my code dry, I am utilizing a supervisor object which requires a delegate for the advanced operation
Here is a simplified instance:
DECLARE_DYNAMIC_MULTICAST_DELEGATE(FOnChange);
UCLASS()
class MYPROJECT_API UMyManager : public UObject {
GENERATED_BODY()
public:
UFUNCTION()
void Setup(UObject* NewOwner, FOnChange& NewOnChange) {
Proprietor = NewOwner;
OnChange = &NewOnChange;
}
UFUNCTION()
void DoComplex(){
if(Proprietor == nullptr || OnChange == nullptr){
return;
}
...
}
non-public:
FOnChange* OnChange;
UObject* Proprietor;
};
UCLASS()
class MYPROJECT_API AMyActor : public AActor {
GENERATED_BODY()
public:
UPROPERTY(BlueprintAssignable)
FOnChange OnChangeA;
UPROPERTY()
UMyManager* Supervisor;
digital void BeginPlay() {
Tremendous::BeginPlay();
Supervisor->Setup(this, OnChangeA);
}
};
UCLASS()
class MYPROJECT_API AMyCharacter : public ACharacter {
GENERATED_BODY()
public:
UPROPERTY(BlueprintAssignable)
FOnChange OnChangeB;
UPROPERTY()
UMyManager* Supervisor;
digital void BeginPlay() {
Tremendous::BeginPlay();
Supervisor->Setup(this, OnChangeB);
}
};
Will this trigger any sudden behaviour or issues? Or ought to I take a very completely different method which can permit me to make use of delegates in an analogous approach
Observe:
Please don’t recommend utilizing Blueprint Perform Library, The supervisor additionally handles different performance and has references elsewhere. I’ve solely simplified it within the instance
