5#include "CoreMinimal.h"
6#include "Components/ActorComponent.h"
7#include "TelekenesisComponent.generated.h"
10class UPhysicalMaterial;
13class UAfflictionInstance;
20 GENERATED_USTRUCT_BODY()
24 UPROPERTY(EditDefaultsOnly)
27 UPROPERTY(EditDefaultsOnly)
30 UPROPERTY(EditDefaultsOnly)
31 float MaxHealth = 10.0f;
33 UPROPERTY(EditDefaultsOnly)
34 float MinTimeBeforeLaunch = 1.0f;
36 UPROPERTY(EditDefaultsOnly)
37 bool bProvidesFullShield = false;
43UCLASS(Blueprintable, ClassGroup=(
Custom), meta=(BlueprintSpawnableComponent) )
44class PROJECTX_API UTelekenesisComponent : public UActorComponent
49 UTelekenesisComponent();
52 UPROPERTY(EditDefaultsOnly)
53 float InitialEnergyCost = 10.0f;
55 UPROPERTY(EditDefaultsOnly)
56 float HoldEnergyDrainRate = 5.0f;
58 UPROPERTY(EditDefaultsOnly)
59 TMap<UPhysicalMaterial*, FTelekenesisInfo> TelekenesisData;
61 UPROPERTY(EditDefaultsOnly)
62 USoundBase* PullSound =
nullptr;
64 UPROPERTY(EditDefaultsOnly)
65 USoundBase* PushSound =
nullptr;
67 UPROPERTY(EditDefaultsOnly)
68 bool bDebugShielding =
false;
70 UPROPERTY(EditDefaultsOnly)
71 TArray<TSubclassOf<UAfflictionInstance>> InvalidAfflictions;
73 UFUNCTION(
Server, Reliable)
74 virtual void Server_Release(
bool bForce =
false);
76 virtual void TakeDamage(
float&
Damage,
struct FDamageEvent
const& DamageEvent, AController* EventInstigator, AActor* DamageCauser);
78 TWeakObjectPtr<ATelekenesisActor> CurrentTelekensisActor =
nullptr;
80 virtual void BeginPlay()
override;
82 virtual void Pull(
const FHitResult& HitResult);
84 virtual void SetActorFollowProjectileTarget(TWeakObjectPtr<ATelekenesisActor> Actor, TWeakObjectPtr<UWeaponInstanceProjectile>
Weapon);
85 virtual void RemoveInvalidAfflictions();
87 UFUNCTION(
Server, Reliable)
88 virtual void Server_Pull(
const FHitResult& HitResult);
89 UFUNCTION(NetMulticast, Reliable)
90 virtual void Multicast_Pull(
const FHitResult& HitResult);
92 UFUNCTION(NetMulticast, Reliable)
93 virtual void Multicast_Release(
bool bForce =
false);
94 UFUNCTION(NetMulticast, Reliable)
95 virtual void Multicast_TakeDamage(
float Damage);
96 UFUNCTION(NetMulticast, Reliable)
97 virtual void Multicast_Die(
float Damage);
99 int32 PullInterpolatorId = INDEX_NONE;
100 UPhysicalMaterial* ActivePhysicalMaterial =
nullptr;
101 FTimerHandle ReleaseTimer;
102 FTimerHandle PullTimer;
@ Release
Definition: TelekenesisComponent.cpp:166
Definition: TelekenesisActor.h:16
Definition: WeaponInstanceProjectile.h:36
Definition: TelekenesisComponent.h:19