Payback 0.0.1
CK Graduation Project
로딩중...
검색중...
일치하는것 없음
WeaponBlackholeAction.h
이 파일의 문서화 페이지로 가기
1// Fill out your copyright notice in the Description page of Project Settings.
2
3#pragma once
4
5#include "CK_UE.h"
6#include "Engine/EngineTypes.h"
8#include "WeaponBlackholeAction.generated.h"
9
10class UCurveFloat;
11class UWorld;
12
13
14USTRUCT(BlueprintType)
16{
17 GENERATED_BODY()
18
19public:
21
22 FWeaponBlackholeActionContext(AActor* InAvatar, AProjectileBase* InProjectile, const FVector& InImpactPoint, const float InSpawnAltitude) : Avatar(InAvatar), Projectile(InProjectile), ImpactPoint(InImpactPoint), SpawnAltitude(InSpawnAltitude) { }
23
24 FORCEINLINE AActor* GetAvatar() const
25 {
26 return Avatar.Get();
27 }
28
29 FORCEINLINE AProjectileBase* GetProjectile() const
30 {
31 return Projectile.Get();
32 }
33
34 FORCEINLINE const FVector& GetImpactPoint() const
35 {
36 return ImpactPoint;
37 }
38
39 FORCEINLINE float GetSpawnAltitude() const
40 {
41 return SpawnAltitude;
42 }
43
44protected:
45 UPROPERTY(Transient, BlueprintReadOnly, Category = "WeaponPull")
46 TObjectPtr<AActor> Avatar = nullptr;
47
48 UPROPERTY(Transient, BlueprintReadOnly, Category = "WeaponPull")
49 TObjectPtr<AProjectileBase> Projectile = nullptr;
50
51 UPROPERTY(Transient, BlueprintReadOnly, Category = "WeaponPull")
52 FVector ImpactPoint = FVector::ZeroVector;
53
54 UPROPERTY(Transient, BlueprintReadOnly, Category = "WeaponPull")
55 float SpawnAltitude = 0.0f;
56};
57
58
62UCLASS(EditInlineNew, DefaultToInstanced, BlueprintType, Blueprintable)
64{
65 GENERATED_BODY()
66
67public:
68 virtual void Enter(const FInstancedStruct& InContext) override;
69 virtual void BindProjectile(AProjectileBase* InProjectile) override;
70 virtual void Update(float DeltaTime) override;
71 virtual void Exit() override;
72
73protected:
74 void PerformPullAtLocation(const FVector& Center, float Radius, float DeltaTime);
75
76private:
77 UFUNCTION()
78 void OnProjectileCollided(AActor* SelfActor, AActor* OtherActor, FVector NormalImpulse, const FHitResult& Hit);
79
80protected:
81 UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "WeaponPull")
82 TObjectPtr<UCurveFloat> PullRadiusCurve = nullptr;
83
84 UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "WeaponPull", meta = (ClampMin = "0.0"))
85 float DefaultPullRadius = 400.0f;
86
87 UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "WeaponPull")
88 float PullStrength = 900.0f;
89
90 UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "WeaponPull", meta = (ClampMin = "0.0"))
91 float PullInterpSpeed = 3.0f;
92
93 UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "WeaponPull")
94 TEnumAsByte<ECollisionChannel> PullOverlapChannel = ECC_Pawn;
95
96private:
97 FVector CachedImpactPoint = FVector::ZeroVector;
98 FVector CachedGroundPosition = FVector::ZeroVector;
99 float CachedSpawnAltitude = 0.0f;
100
101 TWeakObjectPtr<UWorld> CachedWorld;
102 TWeakObjectPtr<AActor> CachedAvatar;
103 TWeakObjectPtr<AProjectileBase> CachedProjectile;
104};
Definition ProjectileBase.h:81
Definition TickableProjectileActionBase.h:16
Definition WeaponBlackholeAction.h:64
Definition TickableAction.h:13
Definition WeaponBlackholeAction.h:16
FORCEINLINE AProjectileBase * GetProjectile() const
Definition WeaponBlackholeAction.h:29
FORCEINLINE AActor * GetAvatar() const
Definition WeaponBlackholeAction.h:24
FORCEINLINE float GetSpawnAltitude() const
Definition WeaponBlackholeAction.h:39
FWeaponBlackholeActionContext(AActor *InAvatar, AProjectileBase *InProjectile, const FVector &InImpactPoint, const float InSpawnAltitude)
Definition WeaponBlackholeAction.h:22
FORCEINLINE const FVector & GetImpactPoint() const
Definition WeaponBlackholeAction.h:34