Compare commits

..

3 Commits

Author SHA1 Message Date
baz
f72780bb00 Replace raw pointers with TObjectPtr<> 2025-05-03 01:27:16 +01:00
baz
0a486535f1 Add Damaged and Death particle effects to enemies 2025-05-03 00:22:12 +01:00
baz
be420b98cf Add Projectile Static Mesh 2025-05-02 23:39:46 +01:00
30 changed files with 117 additions and 66 deletions

BIN
Content/Enemy/DA_Enemy.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Content/Enemy/NS_EnemyDamaged.uasset (Stored with Git LFS) Normal file

Binary file not shown.

BIN
Content/Materials/M_Projectile.uasset (Stored with Git LFS) Normal file

Binary file not shown.

BIN
Content/Meshes/SM_Projectile.uasset (Stored with Git LFS) Normal file

Binary file not shown.

BIN
Content/Weapons/DA_Projectile.uasset (Stored with Git LFS) Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -6,15 +6,14 @@
#include "EnemyDataAsset.h" #include "EnemyDataAsset.h"
#include "EXPPickup.h" #include "EXPPickup.h"
#include "HealthComponent.h" #include "HealthComponent.h"
#include "MovieSceneTracksComponentTypes.h"
#include "ObjectPoolComponent.h" #include "ObjectPoolComponent.h"
#include "ObjectPoolManager.h" #include "ObjectPoolManager.h"
#include "PaperFlipbookComponent.h"
#include "VampireAIController.h" #include "VampireAIController.h"
#include "VampireGameMode.h" #include "VampireGameMode.h"
#include "Components/CapsuleComponent.h" #include "Components/CapsuleComponent.h"
#include "Components/SphereComponent.h" #include "Components/SphereComponent.h"
#include "Kismet/GameplayStatics.h" #include "Kismet/GameplayStatics.h"
#include "NiagaraFunctionLibrary.h"
AEnemyCharacter::AEnemyCharacter(const FObjectInitializer& ObjectInitializer) AEnemyCharacter::AEnemyCharacter(const FObjectInitializer& ObjectInitializer)
{ {
@ -54,6 +53,11 @@ void AEnemyCharacter::OnDamaged(FDamageInfo damageInfo)
{ {
UGameplayStatics::PlaySoundAtLocation(GetWorld(), OnDamagedSound, GetActorLocation()); UGameplayStatics::PlaySoundAtLocation(GetWorld(), OnDamagedSound, GetActorLocation());
} }
if (OnDamagedNiagaraSystem)
{
UNiagaraFunctionLibrary::SpawnSystemAtLocation(this, OnDamagedNiagaraSystem, GetActorLocation());
}
} }
void AEnemyCharacter::OnDeath(FDamageInfo damageInfo) void AEnemyCharacter::OnDeath(FDamageInfo damageInfo)
@ -80,6 +84,11 @@ void AEnemyCharacter::OnDeath(FDamageInfo damageInfo)
{ {
UGameplayStatics::PlaySoundAtLocation(GetWorld(), OnDeathSound, GetActorLocation()); UGameplayStatics::PlaySoundAtLocation(GetWorld(), OnDeathSound, GetActorLocation());
} }
if (OnDeathNiagaraSystem)
{
UNiagaraFunctionLibrary::SpawnSystemAtLocation(this, OnDeathNiagaraSystem, GetActorLocation());
}
} }
void AEnemyCharacter::LoadDataFromDataAsset_Implementation(UEnemyDataAsset* enemyDataAsset) void AEnemyCharacter::LoadDataFromDataAsset_Implementation(UEnemyDataAsset* enemyDataAsset)
@ -91,6 +100,8 @@ void AEnemyCharacter::LoadDataFromDataAsset_Implementation(UEnemyDataAsset* enem
PickupTemplate = enemyDataAsset->PickupDataAsset; PickupTemplate = enemyDataAsset->PickupDataAsset;
OnDamagedSound = enemyDataAsset->OnDamagedSoundBase; OnDamagedSound = enemyDataAsset->OnDamagedSoundBase;
OnDeathSound = enemyDataAsset->OnDeathSoundBase; OnDeathSound = enemyDataAsset->OnDeathSoundBase;
OnDamagedNiagaraSystem = enemyDataAsset->OnDamagedNiagaraSystem;
OnDeathNiagaraSystem = enemyDataAsset->OnDeathNiagaraSystem;
} }
} }
@ -101,6 +112,8 @@ void AEnemyCharacter::ResetData_Implementation()
PickupTemplate = nullptr; PickupTemplate = nullptr;
OnDamagedSound = nullptr; OnDamagedSound = nullptr;
OnDeathSound = nullptr; OnDeathSound = nullptr;
OnDamagedNiagaraSystem = nullptr;
OnDeathNiagaraSystem = nullptr;
} }
float AEnemyCharacter::GetCapsuleRadius_Implementation() float AEnemyCharacter::GetCapsuleRadius_Implementation()

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

@ -7,8 +7,8 @@
#include "Engine/DataAsset.h" #include "Engine/DataAsset.h"
#include "EnemyDataAsset.generated.h" #include "EnemyDataAsset.generated.h"
class UPaperFlipbook;
class UBehaviorTree; class UBehaviorTree;
class UNiagaraSystem;
/** /**
* *
@ -20,17 +20,23 @@ 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;
UPROPERTY(EditDefaultsOnly, Meta = (AllowPrivateAccess = "true")) UPROPERTY(EditDefaultsOnly, Meta = (AllowPrivateAccess = "true"))
TObjectPtr<USoundBase> OnDeathSoundBase = nullptr; TObjectPtr<USoundBase> OnDeathSoundBase = nullptr;
UPROPERTY(EditDefaultsOnly, Meta = (AllowPrivateAccess = "true"))
TObjectPtr<UNiagaraSystem> OnDamagedNiagaraSystem;
UPROPERTY(EditDefaultsOnly, Meta = (AllowPrivateAccess = "true"))
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

@ -7,6 +7,7 @@
#include "GameFramework/Character.h" #include "GameFramework/Character.h"
#include "VampireCharacter.generated.h" #include "VampireCharacter.generated.h"
class UNiagaraSystem;
class AWeapon; class AWeapon;
class UWeaponInventoryComponent; class UWeaponInventoryComponent;
class UInputAction; class UInputAction;
@ -20,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);
@ -29,19 +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)
TObjectPtr<UNiagaraSystem> OnDamagedNiagaraSystem;
UPROPERTY(EditAnywhere, BlueprintReadWrite)
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

View File

@ -8,7 +8,7 @@ public class vampires : ModuleRules
{ {
PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs; PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs;
PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore", "EnhancedInput", "Paper2D" }); PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore", "EnhancedInput", "Paper2D", "Niagara" });
PrivateDependencyModuleNames.AddRange(new string[] { }); PrivateDependencyModuleNames.AddRange(new string[] { });