This commit is contained in:
Brandon Thomas
2021-03-07 03:58:51 -05:00
parent 44552c5068
commit f55152f91f
2 changed files with 3 additions and 77 deletions
@@ -12,10 +12,6 @@ DEFINE_LOG_CATEGORY(SpawningActorLog);
ASpawningActor::ASpawningActor()
{
UE_LOG(SpawningActorLog, Log, TEXT("CTOR()"));
// Set this actor to call Tick() every frame.
// You can turn this off to improve performance if you don't need it.
PrimaryActorTick.bCanEverTick = true;
}
ASpawningActor::~ASpawningActor()
@@ -32,58 +28,13 @@ void ASpawningActor::BeginDestroy()
Super::BeginDestroy();
}
void ASpawningActor::Tick(float DeltaTime)
{
Super::Tick(DeltaTime);
}
ASpawnableActor* ASpawningActor::Spawn()
{
// Spawn actor
// TODO(bt): This will memory leak.
ASpawnableActor* spawnedActor = (ASpawnableActor*)GetWorld()->SpawnActor(ASpawnableActor::StaticClass());
// Get player location
FVector playerLocation = GetWorld()->GetFirstPlayerController()->GetPawn()->GetActorLocation();
// Teleport actor randomly
// TODO(bt): Put this in front of the camera, or on the (camera -> player) arc!
float x = FMath::RandRange(-4000.0f, 4000.0f);
float y = FMath::RandRange(-4000.0f, 4000.0f);
float z = FMath::RandRange(3000.0f, 10000.0f);
FVector location(
playerLocation.X + x,
playerLocation.Y + y,
playerLocation.Z + z
);
FRotator rotation;
spawnedActor->SetActorLocationAndRotation(
location,
rotation,
false,
0,
ETeleportType::ResetPhysics
);
// We don't want to keep the actor around indefinitely since they may pile up unused.
// Optionally, we could maintain a queue and cull the oldest actors.
spawnedActor->StartDestroyTimer(100.0);
return spawnedActor;
}
ASpawnableStaticMeshActor* ASpawningActor::SpawnStaticMeshActor()
{
// Spawn actor
// TODO(bt): This will memory leak.
ASpawnableStaticMeshActor* spawnedActor = (ASpawnableStaticMeshActor*)GetWorld()->SpawnActor(ASpawnableStaticMeshActor::StaticClass());
// Get player location
FVector playerLocation = GetWorld()->GetFirstPlayerController()->GetPawn()->GetActorLocation();
FVector playerLocation = LookupPlayerLocation();
// Teleport actor randomly
// TODO(bt): Put this in front of the camera, or on the (camera -> player) arc!
@@ -118,12 +69,6 @@ ASpawnableSkeletalMeshActor* ASpawningActor::SpawnSkeletalMeshActor()
FActorSpawnParameters actorSpawnParams;
actorSpawnParams.SpawnCollisionHandlingOverride = ESpawnActorCollisionHandlingMethod::AlwaysSpawn;
// Spawn actor
// TODO(bt): This will memory leak.
//ASpawnableSkeletalMeshActor* spawnedActor =
// (ASpawnableSkeletalMeshActor*)GetWorld()->SpawnActor(ASpawnableSkeletalMeshActor::StaticClass());
// Get player location
FVector playerLocation = LookupPlayerLocation();
// Teleport actor randomly
@@ -187,13 +132,6 @@ ASoundSpawnActor* ASpawningActor::SpawnSoundActor(USoundBase* sound)
return actor;
}
void ASpawningActor::SpawnCallback(FString Channel, FString Message)
{
UE_LOG(SpawningActorLog, Log, TEXT("SpawnCallback()"));
Spawn();
}
FVector ASpawningActor::LookupPlayerLocation()
{
return GetWorld()->GetFirstPlayerController()->GetPawn()->GetActorLocation();
@@ -24,22 +24,14 @@ public:
ASpawningActor();
~ASpawningActor();
/** Create actor. */
UFUNCTION(BlueprintCallable, Category = "SpawningActor")
ASpawnableActor* Spawn();
/** Create actor. */
/** Create static mesh actor. */
UFUNCTION(BlueprintCallable, Category = "SpawningActor")
ASpawnableStaticMeshActor* SpawnStaticMeshActor();
/** Create actor. */
/** Create skeletal mesh actor. */
UFUNCTION(BlueprintCallable, Category = "SpawningActor")
ASpawnableSkeletalMeshActor* SpawnSkeletalMeshActor();
/** Create actor with delegation callback. */
UFUNCTION(BlueprintCallable, Category = "SpawningActor")
void SpawnCallback(FString Channel, FString Message);
/** Create sound actor. */
UFUNCTION(BlueprintCallable, Category = "SpawningActor")
ASoundSpawnActor* SpawnSoundActor(USoundBase* sound);
@@ -56,8 +48,4 @@ protected:
// Lookup the player's location.
FVector LookupPlayerLocation();
public:
// Called every frame
virtual void Tick(float DeltaTime) override;
};