DRG-Femboy-Voice/Source/FSD/Public/FacilityTurret.h
2025-04-15 12:39:31 -07:00

85 lines
2.7 KiB
C++
Executable file

#pragma once
#include "CoreMinimal.h"
#include "UObject/NoExportTypes.h"
#include "Curves/CurveFloat.h"
#include "EnemyPawn.h"
#include "FacilityTurret.generated.h"
class AActor;
class USceneComponent;
class USkeletalMeshComponent;
class USoundCue;
UCLASS(Blueprintable)
class AFacilityTurret : public AEnemyPawn {
GENERATED_BODY()
public:
UPROPERTY(BlueprintReadWrite, EditAnywhere, Instanced, meta=(AllowPrivateAccess=true))
USceneComponent* Root;
UPROPERTY(BlueprintReadWrite, EditAnywhere, Instanced, meta=(AllowPrivateAccess=true))
USkeletalMeshComponent* Mesh;
protected:
UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true))
float IndicatorActivationDelay;
UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true))
bool FinishAttackIgnoreLoS;
UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true))
bool InvulnerableOnInactive;
UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true))
float FoldOutTime;
UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true))
USoundCue* EngagedAudio;
UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true))
float Offset;
UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true))
float AimAcceleration;
UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true))
FRuntimeFloatCurve AimSpeedCurve;
UPROPERTY(BlueprintReadWrite, EditAnywhere, Replicated, Transient, meta=(AllowPrivateAccess=true))
AActor* CurrentTarget;
UPROPERTY(BlueprintReadWrite, EditAnywhere, Transient, ReplicatedUsing=OnRep_TurretEngaged, meta=(AllowPrivateAccess=true))
bool TurretEngaged;
UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true))
bool AlwaysActive;
public:
AFacilityTurret();
virtual void GetLifetimeReplicatedProps(TArray<FLifetimeProperty>& OutLifetimeProps) const override;
protected:
UFUNCTION(BlueprintCallable)
void TurnOffMesh();
UFUNCTION(BlueprintAuthorityOnly, BlueprintCallable)
void SetIsAttacking(bool IsAttacking);
UFUNCTION(BlueprintCallable)
void OnRep_TurretEngaged();
UFUNCTION(BlueprintCallable, BlueprintImplementableEvent)
void OnProjectileSpawned();
UFUNCTION(BlueprintCallable, BlueprintImplementableEvent)
void OnEngagedChanged(bool engaged);
public:
UFUNCTION(BlueprintCallable, BlueprintImplementableEvent)
void OnAttack();
UFUNCTION(BlueprintCallable, BlueprintPure)
FRotator GetLookingDirection() const;
};