55 lines
1.1 KiB
C++

// Louis Hobbs | 2024-2025
#pragma once
#include "CoreMinimal.h"
#include "Components/TimelineComponent.h"
#include "vampires/Weapon.h"
#include "SwarmWeapon.generated.h"
class ASwarmAgent;
UCLASS()
class VAMPIRES_API ASwarmWeapon : public AWeapon
{
GENERATED_BODY()
public:
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Timeline")
TObjectPtr<UTimelineComponent> TimelineComponent = nullptr;
UPROPERTY(EditDefaultsOnly, BlueprintReadWrite)
TObjectPtr<UCurveFloat> SwarmCurve;
UPROPERTY(EditAnywhere, BlueprintReadWrite)
float TimelinePlayRate = 1;
UPROPERTY(EditDefaultsOnly, BlueprintReadWrite)
TSubclassOf<ASwarmAgent> SwarmActor;
UPROPERTY(EditAnywhere, BlueprintReadWrite)
float Distance = 250.0f;
private:
FOnTimelineFloat onTimelineCallback;
TArray<ASwarmAgent*> SwarmActors;
public:
// Sets default values for this actor's properties
ASwarmWeapon();
protected:
// Called when the game starts or when spawned
virtual void BeginPlay() override;
public:
UFUNCTION()
void TimelineCallback(float val);
virtual bool UpgradeWeapon_Implementation() override;
private:
void SpawnSwarmAgent();
};