Hymn to Beauty
C++ 3D Engine
TriggerRepeat.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <memory>
4#include <string>
5#include <Utility/LockBox.hpp>
6#include <vector>
7#include "SuperTrigger.hpp"
8
9class Entity;
10class TriggerManager;
11
12namespace Component {
13class Trigger;
14}
15
16namespace triggerEvent {
18 int m_eventID = 0;
19 int m_shapeID = 0;
20 int m_targetID = 0;
21 int m_scriptID = 0;
22 bool check[4] = {false};
23};
24} // namespace triggerEvent
25
26namespace Physics {
27class Trigger;
28}
29
32 friend class ::TriggerManager;
33 friend class ::Component::Trigger;
34
35 public:
38
41
44 void OnEnter();
45
48 void OnRetain();
49
52 void OnLeave();
53
55
58 const std::string& GetName() const;
59
61
64 void SetName(const std::string& value);
65
67
70 std::vector<std::string>* GetTargetFunction();
71
73
76 bool GetStartActive() const;
77
79
82 void SetStartActive(bool value);
83
85
88 float GetDelay() const;
89
91
94 void SetDelay(float value);
95
97
100 float GetCooldown() const;
101
103
106 void SetCooldown(float value);
107
109
112 int GetTriggerCharges() const;
113
115
118 void SetTriggerCharges(int value);
119
121
124 std::vector<Entity*>* GetTargetEntity();
125
127
130 std::vector<Entity*>* GetCollidedEntity();
131
133
136 std::vector<triggerEvent::EventStruct>* GetEventVector();
137
139
142 const Entity* GetOwningEntity() const;
143
145
148 void SetOwningEntity(Entity* value);
149
150 void Process() override;
151 void Update() override;
152 Json::Value Save() override;
153 void InitTriggerUID() override;
154 void InitiateVolumes() override;
155
157
160 void SetCollidedEntityUID(int value);
161
163
167
168 private:
169 void HandleTriggerEvent();
170
171 std::string name = "New Trigger";
172 bool startActive = false;
173 float delay = 0;
174 float cooldown = 0;
175 int triggerCharges = 0;
176 std::vector<std::string> targetFunction;
177 std::vector<Entity*> targetEntity;
178 std::vector<Entity*> collidedEntity;
179 std::vector<triggerEvent::EventStruct> eventVector;
181 bool triggered = false;
182 Entity* owningEntity = nullptr;
183
184 int targetEntityUID = 0;
185 int collidedEntityUID = 0;
186 int owningEntityUID = 0;
187};
Entity containing various components.
Definition: Entity.hpp:16
Super class for triggers to inherit from.
Definition: SuperTrigger.hpp:8
Trigger management.
Definition: TriggerManager.hpp:18
Trigger that can be executed multiple times.
Definition: TriggerRepeat.hpp:31
void Process() override
Process the trigger in case of collision.
Definition: TriggerRepeat.cpp:139
int GetTriggerCharges() const
Get the amount of times a trigger can be activated before it is no longer active.
Definition: TriggerRepeat.cpp:96
void SetOwningEntity(Entity *value)
Set the entity this component belongs to.
Definition: TriggerRepeat.cpp:124
void SetDelay(float value)
Set the delay before the trigger gets active.
Definition: TriggerRepeat.cpp:84
std::vector< triggerEvent::EventStruct > * GetEventVector()
Vector containing the event data.
Definition: TriggerRepeat.cpp:116
std::vector< Entity * > * GetTargetEntity()
Vector containing target entities.
Definition: TriggerRepeat.cpp:104
std::vector< std::string > * GetTargetFunction()
Vector containing name of target functions.
Definition: TriggerRepeat.cpp:68
const std::string & GetName() const
Get the name of the trigger.
Definition: TriggerRepeat.cpp:60
void SetTriggerCharges(int value)
Set the amount of times a trigger can be activated before it is no longer active.
Definition: TriggerRepeat.cpp:100
void SetCooldown(float value)
Set the cooldown before the trigger can get activated again.
Definition: TriggerRepeat.cpp:92
const Entity * GetOwningEntity() const
Get the entity this component belongs to.
Definition: TriggerRepeat.cpp:120
void SetCollidedEntityUID(int value)
Set UID for this triggers collided entity.
Definition: TriggerRepeat.cpp:202
void Update() override
Update position for trigger volume.
Definition: TriggerRepeat.cpp:147
void SetStartActive(bool value)
Set if the trigger starts active or not.
Definition: TriggerRepeat.cpp:76
int GetCollidedEntityUID()
Get UID for this triggers collided entity.
Definition: TriggerRepeat.cpp:206
bool GetStartActive() const
Get if the trigger starts active or not.
Definition: TriggerRepeat.cpp:72
Json::Value Save() override
Save the trigger.
Definition: TriggerRepeat.cpp:167
float GetCooldown() const
Get the cooldown before the trigger can get activated again.
Definition: TriggerRepeat.cpp:88
std::vector< Entity * > * GetCollidedEntity()
Vector containing collided entities.
Definition: TriggerRepeat.cpp:108
TriggerRepeat()
Constructor.
Definition: TriggerRepeat.cpp:12
void OnEnter()
Definition: TriggerRepeat.cpp:27
void SetName(const std::string &value)
Set the name of the trigger.
Definition: TriggerRepeat.cpp:64
void OnLeave()
Definition: TriggerRepeat.cpp:49
void InitiateVolumes() override
Initialize volumes for triggers.
Definition: TriggerRepeat.cpp:157
float GetDelay() const
Get the delay before the trigger gets active.
Definition: TriggerRepeat.cpp:80
~TriggerRepeat()
Destructor.
Definition: TriggerRepeat.cpp:14
void OnRetain()
Definition: TriggerRepeat.cpp:38
void InitTriggerUID() override
Initialize entity references for triggers via entity UIDs.
Definition: TriggerRepeat.cpp:128
Definition: LockBox.hpp:16
Definition: BoxShapeEditor.hpp:5
Definition: IShapeEditor.hpp:7
Definition: TriggerRepeat.hpp:16
Definition: TriggerRepeat.hpp:17
int m_shapeID
Definition: TriggerRepeat.hpp:19
int m_scriptID
Definition: TriggerRepeat.hpp:21
bool check[4]
Definition: TriggerRepeat.hpp:22
int m_targetID
Definition: TriggerRepeat.hpp:20
int m_eventID
Definition: TriggerRepeat.hpp:18