Space Plunder
Loading...
Searching...
No Matches
ADoubleDoorActor Class Reference

#include <DoubleDoorActor.h>

Inheritance diagram for ADoubleDoorActor:
AOpenableDoorActor AInteractableActor AActorBase IBaseInterface ISaveLoad

Public Member Functions

 ADoubleDoorActor ()
 
- Public Member Functions inherited from AOpenableDoorActor
 AOpenableDoorActor ()
 
virtual void SetStatusMaterial (UPrimitiveComponent *StatusComponent)
 
bool GetIsDoorOpen () const
 
bool GetIsDoorMoving () const
 
void OnDoorOpened ()
 
void OnDoorClosed ()
 
void OnDoorOpenedComplete ()
 
void OnDoorClosedComplete ()
 
void OnDoorLocked (const bool bValue)
 
void SetDoorLocked (const bool bValue)
 
bool GetIsDoorLocked () const
 
- Public Member Functions inherited from AInteractableActor
 AInteractableActor ()
 
virtual void ReceiveStartFocus (AActor *Caller)
 
virtual void ReceiveEndFocus (AActor *Caller)
 
virtual void ReceiveOnEndInteract (AActor *Caller)
 
virtual void ReceiveOnOverlap (AActor *Caller)
 
virtual void ReceiveOnEndOverlap (AActor *Caller)
 
- Public Member Functions inherited from AActorBase
 AActorBase ()
 
virtual bool SaveGame () override
 
virtual bool LoadGame () override
 
void SetGravityEnabledEvent (const bool bValue)
 

Protected Member Functions

virtual void BeginPlay () override
 
virtual void OnConstruction (const FTransform &Transform) override
 
virtual void DisableDoor (const bool bDisable=true) override
 
virtual void OpenDoor (const bool bOpen) override
 
virtual void OpenSecondaryDoor (const bool bOpen)
 
virtual void OpenDoorInstantly () override
 
- Protected Member Functions inherited from AOpenableDoorActor
virtual void ReceiveOnInteract (AActor *Caller, const EInteractionType InteractionType) override
 
virtual void ReceiveToggleSwitch (AActor *Caller, const bool bOn) override
 
virtual void OpenDoorInstantly (const bool bOpen)
 
void OnDoorOpenReplicated ()
 
void OnLockedReplicated ()
 
- Protected Member Functions inherited from AInteractableActor
virtual void Tick (float DeltaTime) override
 
virtual void SetMeshOutline (const bool bValue)
 
- Protected Member Functions inherited from AActorBase
void LogDebugError (const FString &Message) const
 
void LogDebugError (const FString &Message, const int32 Value) const
 
void LogDebugError (const FString &Message, const float Value) const
 
void LogDebugWarning (const FString &Message) const
 
void LogDebugWarning (const FString &Message, const int32 Value) const
 
void LogDebugWarning (const FString &Message, const float Value) const
 
void LogDebugMessage (const FString &Message, const bool bWarning=false, const bool bError=false) const
 
void LogDebugMessage (const FString &Message, const int32 Value, const bool bWarning=false, const bool bError=false) const
 
void LogDebugMessage (const FString &Message, const float Value, const bool bWarning=false, const bool bError=false) const
 
void LogDebugMessage (const FString &Message, const bool bValue, const bool bWarning, const bool bError) const
 
void LogOnScreenMessage (const int32 Key, const FString &Message, FColor Color=FColor::Green) const
 
void SetCategoryName (const FLogCategoryBase &Category)
 

Protected Attributes

UStaticMeshComponent * SecondaryDoorComponent
 
bool bSecondaryDoorBroken = false
 
bool bSecondaryDoorOpen = false
 
bool bSecondaryDoorMoving = false
 
FVector TargetSecondaryLocation
 
FRotator TargetSecondaryRotation
 
- Protected Attributes inherited from AOpenableDoorActor
USceneComponent * RootSceneComponent
 
UStaticMeshComponent * MainDoorComponent
 
class UBoxComponent * BoxComponent
 
bool bHasSwitch = false
 
bool bIsAutomatic = true
 
bool bStartOpen = false
 
UMaterialInstance * StatusMaterial = nullptr
 
UMaterialInstanceDynamic * DynamicMaterial = nullptr
 
FLinearColor LockedColor = FLinearColor::Red
 
FLinearColor UnlockedColor = FLinearColor::Green
 
FLinearColor BrokenColor = FLinearColor::Yellow
 
FName MaterialParamName = "Color"
 
bool bEaseIn = false
 
bool bEaseOut = false
 
float TimeToOpen = 1.0f
 
USoundBase * DoorOpenSound = nullptr
 
bool bPlayingSound = false
 
bool bLockable = false
 
bool bLocked = false
 
FVector TargetLocation
 
FRotator TargetRotation
 
bool bDoorBroken = false
 
bool bDoorOpen = false
 
bool bDoorMoving = false
 
- Protected Attributes inherited from AInteractableActor
class UInteractableActorComponent * InteractableActorComponent
 
class UAudioReactionComponent * AudioReactionComponent
 
class UAIPerceptionStimuliSourceComponent * PerceptionStimuliComponent
 
- Protected Attributes inherited from AActorBase
FString DisplayName = "Display Name"
 
bool bDebuggingMode = false
 

Private Member Functions

void OnSecondaryDoorOpened ()
 
void OnSecondaryDoorClosed ()
 
void OpenSecondaryDoor ()
 
void CloseSecondaryDoor ()
 
void MoveSecondaryDoor (const bool bOpen)
 
void OpenSecondaryDoorInstantly ()
 

Private Attributes

FVector SecondaryDoorStartLocation
 
FRotator SecondaryDoorStartRotation
 
FTimerHandle RetrySecondaryDoorOpen
 
FTimerHandle RetrySecondaryDoorClose
 

Additional Inherited Members

- Public Attributes inherited from AOpenableDoorActor
FOnDoorOpened OnDoorOpenedDelegate
 
int32 Index = 0
 

Constructor & Destructor Documentation

◆ ADoubleDoorActor()

ADoubleDoorActor::ADoubleDoorActor ( )
9{
10 PrimaryActorTick.bCanEverTick = false;
11 SecondaryDoorComponent = CreateDefaultSubobject<UStaticMeshComponent>("Secondary Door");
12 SecondaryDoorComponent->SetupAttachment(RootComponent);
13}
UStaticMeshComponent * SecondaryDoorComponent
Definition DoubleDoorActor.h:29

Member Function Documentation

◆ BeginPlay()

void ADoubleDoorActor::BeginPlay ( )
overrideprotectedvirtual

Reimplemented from AOpenableDoorActor.

26{
27 Super::BeginPlay();
30}
FRotator SecondaryDoorStartRotation
Definition DoubleDoorActor.h:63
FVector SecondaryDoorStartLocation
Definition DoubleDoorActor.h:61

◆ CloseSecondaryDoor()

void ADoubleDoorActor::CloseSecondaryDoor ( )
private
125{
126 if(bSecondaryDoorMoving){return;}
127 GetWorld()->GetTimerManager().ClearTimer(RetrySecondaryDoorClose);
128 MoveSecondaryDoor(false);
129}
FTimerHandle RetrySecondaryDoorClose
Definition DoubleDoorActor.h:66
bool bSecondaryDoorMoving
Definition DoubleDoorActor.h:37
void MoveSecondaryDoor(const bool bOpen)
Definition DoubleDoorActor.cpp:131

◆ DisableDoor()

void ADoubleDoorActor::DisableDoor ( const bool bDisable = true)
overrideprotectedvirtual

Reimplemented from AOpenableDoorActor.

34{
35 Super::DisableDoor(bDisable);
36 bSecondaryDoorBroken = bDisable;
37}
bool bSecondaryDoorBroken
Definition DoubleDoorActor.h:33

◆ MoveSecondaryDoor()

void ADoubleDoorActor::MoveSecondaryDoor ( const bool bOpen)
private
132{
133 FLatentActionInfo Info;
134 Info.CallbackTarget = this;
135 Info.Linkage = 0;
136 if(bOpen)
137 {
138 Info.ExecutionFunction = FName("OnSecondaryDoorOpened");
139 Info.UUID = 126;
140 UKismetSystemLibrary::MoveComponentTo(SecondaryDoorComponent, SecondaryDoorStartLocation + TargetSecondaryLocation,
143 true, EMoveComponentAction::Move, Info);
144 }
145 else
146 {
147 Info.ExecutionFunction = FName("OnSecondaryDoorClosed");
148 Info.UUID = 162;
151 EMoveComponentAction::Move, Info);
152 }
153}
FRotator TargetSecondaryRotation
Definition DoubleDoorActor.h:42
FVector TargetSecondaryLocation
Definition DoubleDoorActor.h:40
float TimeToOpen
Definition OpenableDoorActor.h:109
bool bEaseOut
Definition OpenableDoorActor.h:106
bool bEaseIn
Definition OpenableDoorActor.h:104

◆ OnConstruction()

void ADoubleDoorActor::OnConstruction ( const FTransform & Transform)
overrideprotectedvirtual

Reimplemented from AOpenableDoorActor.

16{
17 Super::OnConstruction(Transform);
18 if(SecondaryDoorComponent == nullptr){return;}
19 if(bReplicates != SecondaryDoorComponent->GetIsReplicated())
20 {
21 SecondaryDoorComponent->SetIsReplicated(bReplicates);
22 }
23}

◆ OnSecondaryDoorClosed()

void ADoubleDoorActor::OnSecondaryDoorClosed ( )
private
101{
103 {
104 UE_LOG(LogDoors,Warning,TEXT("Secondary Door Closed: %s"), *GetHumanReadableName());
105 }
106 bSecondaryDoorMoving = false;
107 bSecondaryDoorOpen = false;
108 // bDoorLeftMoving = false;
109 // bDoorsOpen = false;
110 //- Trigger the Event if the First door is still open //
111 if(bDoorOpen)
112 {
114 }
115}
bool bDebuggingMode
Definition ActorBase.h:53
bool bSecondaryDoorOpen
Definition DoubleDoorActor.h:35
bool bDoorOpen
Definition OpenableDoorActor.h:131
void OnDoorClosedComplete()

◆ OnSecondaryDoorOpened()

void ADoubleDoorActor::OnSecondaryDoorOpened ( )
private
84{
86 {
87 UE_LOG(LogDoors,Warning,TEXT("Secondary Door opened: %s"), *GetHumanReadableName());
88 }
90 bSecondaryDoorOpen = true;
91 // bDoorLeftMoving = false;
92 // bDoorsOpen = true;
93 //- Trigger the Event if the First door is still open //
94 if(bDoorOpen == false)
95 {
97 }
98}
void OnDoorOpenedComplete()

◆ OpenDoor()

void ADoubleDoorActor::OpenDoor ( const bool bOpen)
overrideprotectedvirtual

Reimplemented from AOpenableDoorActor.

40{
41 Super::OpenDoor(bOpen);
42 if(bDoorBroken == false){return;}
43 if(bSecondaryDoorBroken){return;}
44 //- Only open the secondary door if the main is broken, otherwise it will already open //
45 OpenSecondaryDoor(bOpen);
46}
void OpenSecondaryDoor()
Definition DoubleDoorActor.cpp:117
bool bDoorBroken
Definition OpenableDoorActor.h:129

◆ OpenDoorInstantly()

void ADoubleDoorActor::OpenDoorInstantly ( )
overrideprotectedvirtual

Reimplemented from AOpenableDoorActor.

78{
79 Super::OpenDoorInstantly();
81}
void OpenSecondaryDoorInstantly()
Definition DoubleDoorActor.cpp:155

◆ OpenSecondaryDoor() [1/2]

void ADoubleDoorActor::OpenSecondaryDoor ( )
private
118{
119 if(bSecondaryDoorMoving){return;}
120 GetWorld()->GetTimerManager().ClearTimer(RetrySecondaryDoorOpen);
121 MoveSecondaryDoor(true);
122}
FTimerHandle RetrySecondaryDoorOpen
Definition DoubleDoorActor.h:65

◆ OpenSecondaryDoor() [2/2]

void ADoubleDoorActor::OpenSecondaryDoor ( const bool bOpen)
protectedvirtual
49{
50 if(bOpen)
51 {
53 {
54 GetWorld()->GetTimerManager().SetTimer(RetrySecondaryDoorOpen, this, &ADoubleDoorActor::OpenSecondaryDoor, 0.55f, true, 0.25f);
55 }
56 else
57 {
60 }
61 }
62 //- Close doors //
63 else
64 {
66 {
67 GetWorld()->GetTimerManager().SetTimer(RetrySecondaryDoorClose, this, &ADoubleDoorActor::CloseSecondaryDoor, 0.55f, true, 0.25f);
68 }
69 else
70 {
72 MoveSecondaryDoor(false);
73 }
74 }
75}
void CloseSecondaryDoor()
Definition DoubleDoorActor.cpp:124

◆ OpenSecondaryDoorInstantly()

void ADoubleDoorActor::OpenSecondaryDoorInstantly ( )
private
156{
157 FLatentActionInfo Info;
158 Info.CallbackTarget = this;
159 Info.Linkage = 0;
160 Info.ExecutionFunction = FName("OnSecondaryDoorOpened");
161 Info.UUID = 126;
162 UKismetSystemLibrary::MoveComponentTo(SecondaryDoorComponent, SecondaryDoorStartLocation + TargetSecondaryLocation,
164 bEaseOut, bEaseIn, 0.01f, true,
165 EMoveComponentAction::Move, Info);
166}

Member Data Documentation

◆ bSecondaryDoorBroken

bool ADoubleDoorActor::bSecondaryDoorBroken = false
protected

◆ bSecondaryDoorMoving

bool ADoubleDoorActor::bSecondaryDoorMoving = false
protected

◆ bSecondaryDoorOpen

bool ADoubleDoorActor::bSecondaryDoorOpen = false
protected

◆ RetrySecondaryDoorClose

FTimerHandle ADoubleDoorActor::RetrySecondaryDoorClose
private

◆ RetrySecondaryDoorOpen

FTimerHandle ADoubleDoorActor::RetrySecondaryDoorOpen
private

◆ SecondaryDoorComponent

UStaticMeshComponent* ADoubleDoorActor::SecondaryDoorComponent
protected

◆ SecondaryDoorStartLocation

FVector ADoubleDoorActor::SecondaryDoorStartLocation
private

◆ SecondaryDoorStartRotation

FRotator ADoubleDoorActor::SecondaryDoorStartRotation
private

◆ TargetSecondaryLocation

FVector ADoubleDoorActor::TargetSecondaryLocation
protected

◆ TargetSecondaryRotation

FRotator ADoubleDoorActor::TargetSecondaryRotation
protected

The documentation for this class was generated from the following files: