CoriEngine
Loading...
Searching...
No Matches
Physics/Triggers/Trigger.cpp
Go to the documentation of this file.
1#include "Trigger.hpp"
2
3namespace Cori {
4 namespace World {
5 namespace Components {
6 namespace Entity {
7 void Trigger::OnEnter(World::Entity& entity) {
8 if (m_Behavior) {
9 if (m_VisitorBuffer.size() > CORI_MAX_TRIGGER_VISITORS) {
10 CORI_CORE_WARN_TAGGED({ Logger::Tags::World::Self, Logger::Tags::World::Entity::Self, Logger::Tags::World::Entity::Trigger }, "Trigger '{}': Exceeded maximum number of visitors ({}).", m_Behavior->GetDebugName(), CORI_MAX_TRIGGER_VISITORS);
11 return;
12 }
13 CORI_CORE_TRACE_TAGGED({ Logger::Tags::World::Self, Logger::Tags::World::Entity::Self, Logger::Tags::World::Entity::Trigger }, "Trigger '{}': Entity '{}' has entered.", m_Behavior->GetDebugName(), entity.GetDebugData());
14 m_Behavior->OnEnter(entity, m_Trigger);
15 m_VisitorBuffer.push_back(entity);
16 }
17 }
18
19 void Trigger::OnTickUpdate(const float timeStep) {
20 for (auto& visitor : m_VisitorBuffer) {
21 if (m_Behavior) {
22 m_Behavior->OnTickUpdate(visitor, m_Trigger, timeStep);
23 }
24 }
25 }
26
27 void Trigger::OnExit(World::Entity& entity) {
28 if (m_Behavior) {
29 if (m_VisitorBuffer.remove(entity)) {
30 CORI_CORE_TRACE_TAGGED({ Logger::Tags::World::Self, Logger::Tags::World::Entity::Self, Logger::Tags::World::Entity::Trigger }, "Trigger '{}': Entity '{}' has exited.", m_Behavior->GetDebugName(), entity.GetDebugData());
31 m_Behavior->OnExit(entity, m_Trigger);
32 }
33 }
34 }
35 }
36 }
37 }
38}
#define CORI_MAX_TRIGGER_VISITORS
#define CORI_CORE_TRACE_TAGGED(...)
Definition Logger.hpp:1025
#define CORI_CORE_WARN_TAGGED(...)
Definition Logger.hpp:1038
Components designed to be used with entities.
Components that are used with the WorldSystem (ECS).
Anything connected to WorldSystem (ECS) is in this namespace.
Global engine namespace.
static constexpr char Self[]
Definition Logger.hpp:127
static constexpr char Trigger[]
Definition Logger.hpp:129
static constexpr char Self[]
Definition Logger.hpp:119