#pragma once #include "CoreMinimal.h" #include "UObject/NoExportTypes.h" #include "UObject/NoExportTypes.h" #include "UObject/NoExportTypes.h" #include "EnemyPawn.h" #include "TentacleBase.generated.h" class AStabberVineRoot; class USceneComponent; class USplineComponent; UCLASS(Abstract, Blueprintable) class ATentacleBase : public AEnemyPawn { GENERATED_BODY() public: UPROPERTY(BlueprintReadWrite, EditAnywhere, Instanced, meta=(AllowPrivateAccess=true)) USplineComponent* SplineComponent; protected: UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) FTransform RestTransform; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) FVector TargetLocation; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) float HeadMovementDuration; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) float CanSwayCooldown; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) FVector2D SwayRange; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) float NeckBaseTangentLength; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) FVector NeckBasePositionOffset; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) FVector NeckBaseTangentOffset; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) float NeckTopTangentLength; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) float DurationTentacleRetract; UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true)) float DurationTentacleFoldout; UPROPERTY(BlueprintReadWrite, EditAnywhere, Instanced, Transient, meta=(AllowPrivateAccess=true)) USceneComponent* HeadRoot; UPROPERTY(BlueprintReadWrite, EditAnywhere, Instanced, Transient, meta=(AllowPrivateAccess=true)) USceneComponent* HeadRotator; public: ATentacleBase(); UFUNCTION(BlueprintCallable) void SetRestingTransform(const FTransform& restingTransform, bool startAtRest); protected: UFUNCTION(BlueprintCallable, BlueprintImplementableEvent) void Recieve_OnRep_Owner(); public: UFUNCTION(BlueprintCallable) void MoveHydraHead(FTransform newDesiredTransform, float newCanSwayCooldown, float newHeadMovementDuration, bool UseSpring); protected: UFUNCTION(BlueprintCallable, BlueprintPure) AStabberVineRoot* GetStabberVineRoot() const; UFUNCTION(BlueprintCallable, BlueprintImplementableEvent) USceneComponent* GetHeadRotator(); UFUNCTION(BlueprintCallable, BlueprintImplementableEvent) USceneComponent* GetHeadRoot(); };