LEAP Documentation 40220
Documentation for the LEAP project
CharacterVolume.h
Go to the documentation of this file.
1// Copyright Blue Isle Studios Inc 2018. All Rights Reserved.
2
3#pragma once
4
5#include "CoreMinimal.h"
6#include "GameFramework/Actor.h"
7#include "CharacterVolume.generated.h"
8
10
11UENUM(BlueprintType, meta = (Bitflags))
12enum class EVolumeEffectsTriggerType : uint8
13{
14 NONE = 0,
15 Enter = (1<<0),
16 Exit = (1<<1),
17 Constant = (1<<2),
18};
19
20ENUM_CLASS_FLAGS(EVolumeEffectsTriggerType)
21
23
24UCLASS()
25class PROJECTX_API ACharacterVolume : public AActor
26{
27 GENERATED_BODY()
28
29public:
31
32 UPROPERTY(BlueprintAssignable)
33 FCharacterEventSignature CharacterEnteredVolumeEvent;
34 UPROPERTY(BlueprintAssignable)
35 FCharacterEventSignature CharacterLeftVolumeEvent;
36
37 UFUNCTION(BlueprintCallable,BlueprintAuthorityOnly)
38 void ToggleActive(bool bNewActiveState);
39
40 UFUNCTION(BlueprintCallable,BlueprintPure)
41 FORCEINLINE bool IsActive() const { return bActiveVolume; }
42
43protected:
44 UFUNCTION(BlueprintImplementableEvent)
45 void OnCharacterEnteredVolume(AProjectXCharacter* Character);
46 UFUNCTION(BlueprintImplementableEvent)
47 void OnCharacterLeftVolume(AProjectXCharacter* Character);
48 UFUNCTION(BlueprintImplementableEvent)
49 void OnCharacterInVolume(AProjectXCharacter* Character);
50 UFUNCTION(BlueprintImplementableEvent)
51 void OnToggleActivation(bool bActive);
52
53 virtual void CharacterEnteredVolume(AProjectXCharacter* Character);
54 virtual void CharacterLeftVolume(AProjectXCharacter* Character);
55
56 virtual void BeginPlay() override;
57 virtual void Tick(float DeltaTime) override;
58
59 UFUNCTION()
60 void OnRep_Active();
61 UFUNCTION()
62 void OnCharacterOverlapStart(AActor* OverlappedActor, AActor* OtherActor);
63 UFUNCTION()
64 void OnCharacterOverlapEnd(AActor* OverlappedActor, AActor* OtherActor);
65
66protected:
67 /* Is the volume Active*/
68 UPROPERTY(EditAnywhere, ReplicatedUsing = OnRep_Active)
69 bool bActiveVolume = true;
70
71 /*What triggers effects*/
72 UPROPERTY(EditDefaultsOnly, Category = Volume, meta = (Bitmask, BitmaskEnum = EVolumeEffectsTriggerType))
73 uint8 TriggerConditions = 0;
74
75 TSet<TWeakObjectPtr<AProjectXCharacter>> Characters;
76
77};
DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FCharacterEventSignature, AProjectXCharacter *, Character)
EVolumeEffectsTriggerType
Definition: CharacterVolume.h:13
Definition: CharacterVolume.h:26
Definition: ProjectXCharacter.h:128
virtual void BeginPlay() override
Definition: ProjectXCharacter.cpp:179