Replace raw pointers with TObjectPtr<>

This commit is contained in:
baz 2025-05-03 01:18:43 +01:00
parent 0a486535f1
commit f72780bb00
17 changed files with 67 additions and 51 deletions

View File

@ -35,13 +35,15 @@ public:
private: private:
UPROPERTY(EditDefaultsOnly, Meta = (AllowPrivateAccess = "true")) UPROPERTY(EditDefaultsOnly, Meta = (AllowPrivateAccess = "true"))
UBehaviorTree* BehaviorTree = nullptr; TObjectPtr<UBehaviorTree> BehaviorTree = nullptr;
UObjectPoolComponent* ObjectPoolComponent = nullptr; UPROPERTY()
TObjectPtr<UObjectPoolComponent> ObjectPoolComponent = nullptr;
UPickupDataAsset* PickupTemplate = nullptr; UPROPERTY()
TObjectPtr<UPickupDataAsset> PickupTemplate = nullptr;
TArray<AActor*> Player; TArray<TObjectPtr<AActor>> Player;
FTimerHandle DamageTimerHandle; FTimerHandle DamageTimerHandle;

View File

@ -20,13 +20,13 @@ class VAMPIRES_API UEnemyDataAsset : public UDataAsset
public: public:
UPROPERTY(BlueprintReadWrite, EditAnywhere) UPROPERTY(BlueprintReadWrite, EditAnywhere)
UStaticMesh* StaticMesh; TObjectPtr<UStaticMesh> StaticMesh;
UPROPERTY(EditDefaultsOnly, Meta = (AllowPrivateAccess = "true")) UPROPERTY(EditDefaultsOnly, Meta = (AllowPrivateAccess = "true"))
UBehaviorTree* BehaviorTree = nullptr; TObjectPtr<UBehaviorTree> BehaviorTree = nullptr;
UPROPERTY(EditDefaultsOnly, Meta = (AllowPrivateAccess = "true")) UPROPERTY(EditDefaultsOnly, Meta = (AllowPrivateAccess = "true"))
UPickupDataAsset* PickupDataAsset = nullptr; TObjectPtr<UPickupDataAsset> PickupDataAsset = nullptr;
UPROPERTY(EditDefaultsOnly, Meta = (AllowPrivateAccess = "true")) UPROPERTY(EditDefaultsOnly, Meta = (AllowPrivateAccess = "true"))
TObjectPtr<USoundBase> OnDamagedSoundBase = nullptr; TObjectPtr<USoundBase> OnDamagedSoundBase = nullptr;
@ -35,8 +35,8 @@ public:
TObjectPtr<USoundBase> OnDeathSoundBase = nullptr; TObjectPtr<USoundBase> OnDeathSoundBase = nullptr;
UPROPERTY(EditDefaultsOnly, Meta = (AllowPrivateAccess = "true")) UPROPERTY(EditDefaultsOnly, Meta = (AllowPrivateAccess = "true"))
UNiagaraSystem* OnDamagedNiagaraSystem; TObjectPtr<UNiagaraSystem> OnDamagedNiagaraSystem;
UPROPERTY(EditDefaultsOnly, Meta = (AllowPrivateAccess = "true")) UPROPERTY(EditDefaultsOnly, Meta = (AllowPrivateAccess = "true"))
UNiagaraSystem* OnDeathNiagaraSystem; TObjectPtr<UNiagaraSystem> OnDeathNiagaraSystem;
}; };

View File

@ -11,7 +11,7 @@ class VAMPIRES_API AObjectPoolManager : public AActor
{ {
GENERATED_BODY() GENERATED_BODY()
TArray<AActor*> ObjectPool = TArray<AActor*>(); TArray<TObjectPtr<AActor>> ObjectPool = TArray<TObjectPtr<AActor>>();
public: public:
void InitializeObjectPool(TSubclassOf<AActor> Object, int InitialObjectPoolSize = 400); void InitializeObjectPool(TSubclassOf<AActor> Object, int InitialObjectPoolSize = 400);

View File

@ -22,22 +22,22 @@ public:
int PickupValue = 1; int PickupValue = 1;
UPROPERTY(EditDefaultsOnly, BlueprintReadWrite) UPROPERTY(EditDefaultsOnly, BlueprintReadWrite)
USphereComponent* InnerSphereComponent = nullptr; TObjectPtr<USphereComponent> InnerSphereComponent = nullptr;
UPROPERTY(EditDefaultsOnly, BlueprintReadWrite) UPROPERTY(EditDefaultsOnly, BlueprintReadWrite)
USphereComponent* OuterSphereComponent = nullptr; TObjectPtr<USphereComponent> OuterSphereComponent = nullptr;
UPROPERTY(EditAnywhere) UPROPERTY(EditAnywhere)
UStaticMeshComponent* StaticMeshComponent = nullptr; TObjectPtr<UStaticMeshComponent> StaticMeshComponent = nullptr;
UPROPERTY(EditDefaultsOnly) UPROPERTY(EditDefaultsOnly)
USoundBase* PickupSoundBase = nullptr; TObjectPtr<USoundBase> PickupSoundBase = nullptr;
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Timeline") UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Timeline")
TObjectPtr<UTimelineComponent> TimelineComponent = nullptr; TObjectPtr<UTimelineComponent> TimelineComponent = nullptr;
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Timeline") UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Timeline")
UCurveFloat* CurveFloat; TObjectPtr<UCurveFloat> CurveFloat;
private: private:
FOnTimelineFloat onTimelineCallback; FOnTimelineFloat onTimelineCallback;

View File

@ -26,13 +26,13 @@ class VAMPIRES_API APlayerCharacter : public AVampireCharacter
public: public:
UPROPERTY(EditAnywhere, BlueprintReadWrite) UPROPERTY(EditAnywhere, BlueprintReadWrite)
UEXPComponent* EXPComponent; TObjectPtr<UEXPComponent> EXPComponent;
UPROPERTY(EditAnywhere, BlueprintReadWrite) UPROPERTY(EditAnywhere, BlueprintReadWrite)
UGoldComponent* GoldComponent; TObjectPtr<UGoldComponent> GoldComponent;
UPROPERTY(EditAnywhere) UPROPERTY(EditAnywhere)
UWidgetComponent* HealthBarWidgetComponent; TObjectPtr<UWidgetComponent> HealthBarWidgetComponent;
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly) UPROPERTY(EditDefaultsOnly, BlueprintReadOnly)
TObjectPtr<UTimelineComponent> CameraShakeTimelineComponent = nullptr; TObjectPtr<UTimelineComponent> CameraShakeTimelineComponent = nullptr;

View File

@ -18,10 +18,10 @@ class VAMPIRES_API AProjectile : public AActor, public IProjectilable
public: public:
UPROPERTY(EditDefaultsOnly, BlueprintReadWrite) UPROPERTY(EditDefaultsOnly, BlueprintReadWrite)
USphereComponent* SphereComponent = nullptr; TObjectPtr<USphereComponent> SphereComponent = nullptr;
UPROPERTY(EditDefaultsOnly, BlueprintReadWrite) UPROPERTY(EditDefaultsOnly, BlueprintReadWrite)
UProjectileMovementComponent* ProjectileMovement = nullptr; TObjectPtr<UProjectileMovementComponent> ProjectileMovement = nullptr;
FVector TargetDirection = FVector::ZeroVector; FVector TargetDirection = FVector::ZeroVector;
@ -29,7 +29,7 @@ public:
float ProjectileSpeed = 500.0f; float ProjectileSpeed = 500.0f;
UPROPERTY(EditAnywhere, BlueprintReadWrite) UPROPERTY(EditAnywhere, BlueprintReadWrite)
UStaticMeshComponent* StaticMeshComponent = nullptr; TObjectPtr<UStaticMeshComponent> StaticMeshComponent = nullptr;
UPROPERTY(EditAnywhere, BlueprintReadWrite) UPROPERTY(EditAnywhere, BlueprintReadWrite)
int RemainingDamagableEnemies = 1; int RemainingDamagableEnemies = 1;

View File

@ -15,7 +15,7 @@
AVampireAIController::AVampireAIController(const FObjectInitializer& object_initializer) : Super( AVampireAIController::AVampireAIController(const FObjectInitializer& object_initializer) : Super(
object_initializer.SetDefaultSubobjectClass<UCrowdFollowingComponent>(TEXT("Path Following Component"))) object_initializer.SetDefaultSubobjectClass<UCrowdFollowingComponent>(TEXT("Path Following Component")))
{ {
Blackboard = CreateDefaultSubobject<UBlackboardComponent>(TEXT("Blackboard")); DefaultBlackboard = CreateDefaultSubobject<UBlackboardComponent>(TEXT("Blackboard"));
BehaviorTree = CreateDefaultSubobject<UBehaviorTreeComponent>(TEXT("Behavior Tree")); BehaviorTree = CreateDefaultSubobject<UBehaviorTreeComponent>(TEXT("Behavior Tree"));
} }
@ -38,7 +38,7 @@ void AVampireAIController::Tick(float DeltaTime)
if (PlayerCharacter) if (PlayerCharacter)
{ {
Blackboard->SetValueAsVector("PlayerLocation", PlayerCharacter->GetActorLocation()); DefaultBlackboard->SetValueAsVector("PlayerLocation", PlayerCharacter->GetActorLocation());
} }
} }
@ -56,13 +56,13 @@ void AVampireAIController::OnPossess(APawn* InPawn)
if (UBehaviorTree* bt = EnemyCharacter->GetBehaviorTree()) if (UBehaviorTree* bt = EnemyCharacter->GetBehaviorTree())
{ {
Blackboard->InitializeBlackboard(*bt->BlackboardAsset); DefaultBlackboard->InitializeBlackboard(*bt->BlackboardAsset);
BehaviorTree->StartTree(*bt); BehaviorTree->StartTree(*bt);
Blackboard->SetValueAsObject("SelfActor", EnemyCharacter); DefaultBlackboard->SetValueAsObject("SelfActor", EnemyCharacter);
if (PlayerCharacter) if (PlayerCharacter)
{ {
Blackboard->SetValueAsObject("Player", PlayerCharacter); DefaultBlackboard->SetValueAsObject("Player", PlayerCharacter);
} }
} }
} }

View File

@ -18,13 +18,17 @@ class VAMPIRES_API AVampireAIController : public AAIController
{ {
GENERATED_BODY() GENERATED_BODY()
UBlackboardComponent* Blackboard; UPROPERTY()
TObjectPtr<UBlackboardComponent> DefaultBlackboard;
UBehaviorTreeComponent* BehaviorTree; UPROPERTY()
TObjectPtr<UBehaviorTreeComponent> BehaviorTree;
ACharacter* PlayerCharacter; UPROPERTY()
TObjectPtr<ACharacter> PlayerCharacter;
AEnemyCharacter* EnemyCharacter; UPROPERTY()
TObjectPtr<AEnemyCharacter> EnemyCharacter;
FTimerHandle PawnMoveToTimerHandle; FTimerHandle PawnMoveToTimerHandle;

View File

@ -21,7 +21,7 @@ class VAMPIRES_API AVampireCharacter : public ACharacter, public IInputable
public: public:
UPROPERTY(BlueprintReadWrite, EditAnywhere) UPROPERTY(BlueprintReadWrite, EditAnywhere)
UStaticMeshComponent* StaticMeshComponent; TObjectPtr<UStaticMeshComponent> StaticMeshComponent;
FVector2D PreviousMovementDirection = FVector2d(1.0f, 0.0f); FVector2D PreviousMovementDirection = FVector2d(1.0f, 0.0f);
@ -30,25 +30,25 @@ public:
protected: protected:
UPROPERTY(VisibleAnywhere) UPROPERTY(VisibleAnywhere)
UHealthComponent* HealthComponent; TObjectPtr<UHealthComponent> HealthComponent;
UPROPERTY(EditAnywhere, BlueprintReadWrite) UPROPERTY(EditAnywhere, BlueprintReadWrite)
TObjectPtr<UInputMappingContext> InputMappingContext; TObjectPtr<UInputMappingContext> InputMappingContext;
UPROPERTY(EditAnywhere, BlueprintReadWrite) UPROPERTY(EditAnywhere, BlueprintReadWrite)
UWeaponInventoryComponent* WeaponInventoryComponent; TObjectPtr<UWeaponInventoryComponent> WeaponInventoryComponent;
UPROPERTY(EditAnywhere, BlueprintReadWrite) UPROPERTY(EditAnywhere, BlueprintReadWrite)
USoundBase* OnDamagedSound; TObjectPtr<USoundBase> OnDamagedSound;
UPROPERTY(EditAnywhere, BlueprintReadWrite) UPROPERTY(EditAnywhere, BlueprintReadWrite)
USoundBase* OnDeathSound; TObjectPtr<USoundBase> OnDeathSound;
UPROPERTY(EditAnywhere, BlueprintReadWrite) UPROPERTY(EditAnywhere, BlueprintReadWrite)
UNiagaraSystem* OnDamagedNiagaraSystem; TObjectPtr<UNiagaraSystem> OnDamagedNiagaraSystem;
UPROPERTY(EditAnywhere, BlueprintReadWrite) UPROPERTY(EditAnywhere, BlueprintReadWrite)
UNiagaraSystem* OnDeathNiagaraSystem; TObjectPtr<UNiagaraSystem> OnDeathNiagaraSystem;
public: public:
// Sets default values for this character's properties // Sets default values for this character's properties

View File

@ -39,20 +39,26 @@ public:
TArray<TObjectPtr<UEnemyDataAsset>> EnemyDataAssets; TArray<TObjectPtr<UEnemyDataAsset>> EnemyDataAssets;
private: private:
UPROPERTY()
TObjectPtr<APlayerCharacter> PlayerCharacter; TObjectPtr<APlayerCharacter> PlayerCharacter;
UPROPERTY()
TObjectPtr<AVampirePlayerController> PlayerController; TObjectPtr<AVampirePlayerController> PlayerController;
FTimerHandle SpawnEnemyTimerDelegate; FTimerHandle SpawnEnemyTimerDelegate;
int EnemyDeathCount = 0; int EnemyDeathCount = 0;
UPROPERTY()
TObjectPtr<AObjectPoolManager> EnemyObjectPoolManager = nullptr; TObjectPtr<AObjectPoolManager> EnemyObjectPoolManager = nullptr;
UPROPERTY()
TObjectPtr<AObjectPoolManager> ProjectileObjectPoolManager = nullptr; TObjectPtr<AObjectPoolManager> ProjectileObjectPoolManager = nullptr;
UPROPERTY()
TObjectPtr<AObjectPoolManager> PickupObjectPoolManager = nullptr; TObjectPtr<AObjectPoolManager> PickupObjectPoolManager = nullptr;
UPROPERTY()
TArray<TObjectPtr<UEnemyDataAsset>> SpawnableEnemyDataAssets; TArray<TObjectPtr<UEnemyDataAsset>> SpawnableEnemyDataAssets;
protected: protected:

View File

@ -33,17 +33,20 @@ public:
// Inputs // Inputs
UPROPERTY(EditDefaultsOnly, BlueprintReadWrite) UPROPERTY(EditDefaultsOnly, BlueprintReadWrite)
UInputAction* MovementAction; TObjectPtr<UInputAction> MovementAction;
UPROPERTY(EditDefaultsOnly, BlueprintReadWrite) UPROPERTY(EditDefaultsOnly, BlueprintReadWrite)
UInputAction* PauseAction; TObjectPtr<UInputAction> PauseAction;
private: private:
UPROPERTY()
TObjectPtr<UHUDWidget> currentPlayerHUD = nullptr; TObjectPtr<UHUDWidget> currentPlayerHUD = nullptr;
UPROPERTY()
TObjectPtr<UPauseWidget> currentPauseUI = nullptr; TObjectPtr<UPauseWidget> currentPauseUI = nullptr;
UPROPERTY()
TObjectPtr<ULevelUpWidget> currentLevelUpUI = nullptr; TObjectPtr<ULevelUpWidget> currentLevelUpUI = nullptr;
FTimerHandle pawnLifeTimeHandle; FTimerHandle pawnLifeTimeHandle;

View File

@ -27,7 +27,7 @@ public:
TObjectPtr<UTexture2D> Icon; TObjectPtr<UTexture2D> Icon;
UPROPERTY(EditDefaultsOnly, Category = "Weapon Properties") UPROPERTY(EditDefaultsOnly, Category = "Weapon Properties")
USoundBase* WeaponActivatedSoundBase = nullptr; TObjectPtr<USoundBase> WeaponActivatedSoundBase = nullptr;
UPROPERTY(EditDefaultsOnly, Category = "Weapon Properties") UPROPERTY(EditDefaultsOnly, Category = "Weapon Properties")
TObjectPtr<UPaperSprite> WeaponSprite = nullptr; TObjectPtr<UPaperSprite> WeaponSprite = nullptr;
@ -51,9 +51,9 @@ public:
protected: protected:
UPROPERTY(EditDefaultsOnly, BlueprintReadWrite) UPROPERTY(EditDefaultsOnly, BlueprintReadWrite)
UBoxComponent* BoxComponent = nullptr; TObjectPtr<UBoxComponent> BoxComponent = nullptr;
TArray<AActor*> OverlappedEnemies = TArray<AActor*>(); TArray<TObjectPtr<AActor>> OverlappedEnemies = TArray<TObjectPtr<AActor>>();
private: private:
FTimerHandle WeaponTimerHandle; FTimerHandle WeaponTimerHandle;

View File

@ -24,7 +24,7 @@ public:
private: private:
UPROPERTY() UPROPERTY()
TArray<AWeapon*> inventory; TArray<TObjectPtr<AWeapon>> inventory;
public: public:
// Sets default values for this component's properties // Sets default values for this component's properties

View File

@ -14,7 +14,8 @@ struct FOverlappedEnemy
{ {
GENERATED_BODY() GENERATED_BODY()
AEnemyCharacter* OverlappedEnemyCharacter; UPROPERTY()
TObjectPtr<AEnemyCharacter> OverlappedEnemyCharacter;
FTimerHandle OverlappedTimerHandle; FTimerHandle OverlappedTimerHandle;
}; };
@ -28,7 +29,7 @@ class VAMPIRES_API AGarlicWeapon : public AWeapon
GENERATED_BODY() GENERATED_BODY()
public: public:
UPROPERTY(VisibleAnywhere, BlueprintReadOnly, meta = (AllowPrivateAccess = "true")) UPROPERTY(VisibleAnywhere, BlueprintReadOnly, meta = (AllowPrivateAccess = "true"))
USphereComponent* SphereComponent; TObjectPtr<USphereComponent> SphereComponent;
TArray<FOverlappedEnemy> GarlicOverlappedEnemies; TArray<FOverlappedEnemy> GarlicOverlappedEnemies;

View File

@ -18,7 +18,7 @@ class VAMPIRES_API APentagramWeapon : public AWeapon
GENERATED_BODY() GENERATED_BODY()
private: private:
TArray<APickup*> OverlappedPickups = TArray<APickup*>(); TArray<TObjectPtr<APickup>> OverlappedPickups = TArray<TObjectPtr<APickup>>();
public: public:
APentagramWeapon(); APentagramWeapon();

View File

@ -15,10 +15,10 @@ class VAMPIRES_API ASwarmAgent : public AActor
public: public:
UPROPERTY(EditDefaultsOnly, BlueprintReadWrite) UPROPERTY(EditDefaultsOnly, BlueprintReadWrite)
USphereComponent* SphereComponent = nullptr; TObjectPtr<USphereComponent> SphereComponent = nullptr;
UPROPERTY(EditAnywhere, BlueprintReadWrite) UPROPERTY(EditAnywhere, BlueprintReadWrite)
UStaticMeshComponent* StaticMeshComponent = nullptr; TObjectPtr<UStaticMeshComponent> StaticMeshComponent = nullptr;
// Sets default values for this actor's properties // Sets default values for this actor's properties
ASwarmAgent(); ASwarmAgent();

View File

@ -33,7 +33,7 @@ public:
private: private:
FOnTimelineFloat onTimelineCallback; FOnTimelineFloat onTimelineCallback;
TArray<ASwarmAgent*> SwarmActors; TArray<TObjectPtr<ASwarmAgent>> SwarmActors;
public: public:
// Sets default values for this actor's properties // Sets default values for this actor's properties