diff --git a/include/Engine/Collision/TriggerSystem.h b/include/Engine/Collision/TriggerSystem.h index ee53ad9b..65e7c271 100644 --- a/include/Engine/Collision/TriggerSystem.h +++ b/include/Engine/Collision/TriggerSystem.h @@ -18,7 +18,11 @@ public: : System(eventBroker) , PureSystem("Trigger") , m_Octree(octree) - { } + { + EVENT_SUBSCRIBE_MEMBER(m_ETouch, &TriggerSystem::OnTouch); + EVENT_SUBSCRIBE_MEMBER(m_EEnter, &TriggerSystem::OnEnter); + EVENT_SUBSCRIBE_MEMBER(m_ELeave, &TriggerSystem::OnLeave); + } virtual void UpdateComponent(World* world, EntityWrapper& entity, ComponentWrapper& component, double dt) override; @@ -27,6 +31,14 @@ private: std::unordered_map> m_EntitiesTouchingTrigger; std::unordered_map> m_EntitiesCompletelyInTrigger; + //TODO: Only exists for debug purposes, remove later. + EventRelay m_EEnter; + bool OnEnter(const Events::TriggerEnter &event); + EventRelay m_ETouch; + bool OnTouch(const Events::TriggerTouch &event); + EventRelay m_ELeave; + bool OnLeave(const Events::TriggerLeave &event); + //True if leave event was thrown. bool throwLeaveIfWasInTrigger(std::unordered_set& triggerSet, EntityID pId, EntityID tId); template diff --git a/include/Game/Systems/PlayerSystem.h b/include/Game/Systems/PlayerSystem.h deleted file mode 100644 index a74cbb9f..00000000 --- a/include/Game/Systems/PlayerSystem.h +++ /dev/null @@ -1,34 +0,0 @@ -#ifndef PlayerSystem_h__ -#define PlayerSystem_h__ - -#include -#include - -#include "Common.h" -#include "Core/System.h" -#include "Collision/ETrigger.h" - -class PlayerSystem : public PureSystem -{ -public: - PlayerSystem(EventBroker* eventBroker) - : System(eventBroker) - , PureSystem("Player") - { - EVENT_SUBSCRIBE_MEMBER(m_ETouch, &PlayerSystem::OnTouch); - EVENT_SUBSCRIBE_MEMBER(m_EEnter, &PlayerSystem::OnEnter); - EVENT_SUBSCRIBE_MEMBER(m_ELeave, &PlayerSystem::OnLeave); - } - - virtual void UpdateComponent(World* world, EntityWrapper& entity, ComponentWrapper& component, double dt) override; -private: - float m_Speed = 5; - EventRelay m_EEnter; - bool OnEnter(const Events::TriggerEnter &event); - EventRelay m_ETouch; - bool PlayerSystem::OnTouch(const Events::TriggerTouch &event); - EventRelay m_ELeave; - bool PlayerSystem::OnLeave(const Events::TriggerLeave &event); -}; - -#endif \ No newline at end of file diff --git a/src/Engine/Collision/TriggerSystem.cpp b/src/Engine/Collision/TriggerSystem.cpp index 58d1e332..0ff4345e 100644 --- a/src/Engine/Collision/TriggerSystem.cpp +++ b/src/Engine/Collision/TriggerSystem.cpp @@ -78,3 +78,20 @@ bool TriggerSystem::throwLeaveIfWasInTrigger(std::unordered_set& trigg return false; } +bool TriggerSystem::OnTouch(const Events::TriggerTouch &event) +{ + LOG_INFO("Player entity %i touched trigger entity %i.", event.Entity, event.Trigger); + return true; +} + +bool TriggerSystem::OnEnter(const Events::TriggerEnter &event) +{ + LOG_INFO("Player entity %i entered trigger entity %i.", event.Entity, event.Trigger); + return true; +} + +bool TriggerSystem::OnLeave(const Events::TriggerLeave &event) +{ + LOG_INFO("Player entity %i left trigger entity %i.", event.Entity, event.Trigger); + return true; +} \ No newline at end of file diff --git a/src/Game/Game.cpp b/src/Game/Game.cpp index ff1e28fd..b0ffa646 100644 --- a/src/Game/Game.cpp +++ b/src/Game/Game.cpp @@ -3,7 +3,6 @@ #include "Collision/TriggerSystem.h" #include "Collision/CollisionSystem.h" #include "Systems/RaptorCopterSystem.h" -#include "Systems/PlayerSystem.h" #include "Systems/HealthSystem.h" #include "Systems/PlayerMovementSystem.h" #include "Systems/SpawnerSystem.h" @@ -76,7 +75,6 @@ Game::Game(int argc, char* argv[]) // All systems with orderlevel 0 will be updated first. unsigned int updateOrderLevel = 0; m_SystemPipeline->AddSystem(updateOrderLevel); - m_SystemPipeline->AddSystem(updateOrderLevel); m_SystemPipeline->AddSystem(updateOrderLevel, m_Renderer); m_SystemPipeline->AddSystem(updateOrderLevel); m_SystemPipeline->AddSystem(updateOrderLevel); diff --git a/src/Game/Systems/PlayerSystem.cpp b/src/Game/Systems/PlayerSystem.cpp deleted file mode 100644 index 8cdddf84..00000000 --- a/src/Game/Systems/PlayerSystem.cpp +++ /dev/null @@ -1,42 +0,0 @@ -#include "Systems/PlayerSystem.h" - -void PlayerSystem::UpdateComponent(World* world, EntityWrapper& entity, ComponentWrapper& component, double dt) -{ - component["Velocity"] = glm::vec3(0.f, 0.f, 0.f); - if ((bool&)component["Forward"] == true) { - ((glm::vec3&)component["Velocity"]).z = m_Speed * float(dt) * -1; - - } - if ((bool&)component["Left"] == true) { - ((glm::vec3&)component["Velocity"]).x = m_Speed * float(dt) * -1; - } - if ((bool&)component["Back"] == true) { - ((glm::vec3&)component["Velocity"]).z = m_Speed * float(dt); - } - if ((bool&)component["Right"] == true) { - ((glm::vec3&)component["Velocity"]).x = m_Speed * float(dt); - } - - if ((glm::vec3)component["Velocity"] != glm::vec3(0.f)) { - ComponentWrapper& transform = world->GetComponent(component.EntityID, "Transform"); - (glm::vec3&)transform["Position"] += (glm::vec3)component["Velocity"]; - } -} - -bool PlayerSystem::OnTouch(const Events::TriggerTouch &event) -{ - LOG_INFO("Player entity %i touched widget (entity %i).", event.Entity, event.Trigger); - return false; -} - -bool PlayerSystem::OnEnter(const Events::TriggerEnter &event) -{ - LOG_INFO("Player entity %i entered widget (entity %i).", event.Entity, event.Trigger); - return false; -} - -bool PlayerSystem::OnLeave(const Events::TriggerLeave &event) -{ - LOG_INFO("Player entity %i left widget (entity %i).", event.Entity, event.Trigger); - return false; -} \ No newline at end of file