From 49040e9c4bdb37fb59da4d25ca39bfcc11a157bf Mon Sep 17 00:00:00 2001 From: Tleety Date: Wed, 9 Mar 2016 15:29:42 +0100 Subject: [PATCH] StartMenu system now sets the main menu camera to active as long as it exists. --- include/Game/Systems/StartSystem.h | 5 +++++ resources/Schema/Entities/StartMenu.xml | 6 +++--- src/Game/Game.cpp | 2 ++ src/Game/Systems/StartSystem.cpp | 27 ++++++++++++++++++++++++- 4 files changed, 36 insertions(+), 4 deletions(-) diff --git a/include/Game/Systems/StartSystem.h b/include/Game/Systems/StartSystem.h index 9b89d80a..c7764e1b 100644 --- a/include/Game/Systems/StartSystem.h +++ b/include/Game/Systems/StartSystem.h @@ -5,6 +5,7 @@ #include "Core/ResourceManager.h" #include "Core/Event.h" #include "Core/EventBroker.h" +#include "Rendering/ESetCamera.h" class StartSystem : public ImpureSystem { @@ -13,6 +14,10 @@ public: virtual void Update(double dt) override; private: + EntityWrapper m_activeCamera = EntityWrapper::Invalid; + + EventRelay m_ECameraActivated; + bool OnCameraActivated(const Events::SetCamera& e); }; #endif \ No newline at end of file diff --git a/resources/Schema/Entities/StartMenu.xml b/resources/Schema/Entities/StartMenu.xml index 2785effe..15bcb542 100644 --- a/resources/Schema/Entities/StartMenu.xml +++ b/resources/Schema/Entities/StartMenu.xml @@ -34,7 +34,7 @@ - + @@ -46,11 +46,11 @@ - + - + diff --git a/src/Game/Game.cpp b/src/Game/Game.cpp index 2515ab82..806d26c1 100644 --- a/src/Game/Game.cpp +++ b/src/Game/Game.cpp @@ -39,6 +39,7 @@ #include "GUI/ButtonSystem.h" #include "Game/Systems/MainMenuSystem.h" #include "Game/Systems/ServerListSystem.h" +#include "Game/Systems/StartSystem.h" Game::Game(int argc, char* argv[]) @@ -153,6 +154,7 @@ Game::Game(int argc, char* argv[]) m_SystemPipeline->AddSystem(updateOrderLevel); m_SystemPipeline->AddSystem(updateOrderLevel); m_SystemPipeline->AddSystem(updateOrderLevel, m_Renderer); + m_SystemPipeline->AddSystem(updateOrderLevel); // Populate Octree with collidables ++updateOrderLevel; m_SystemPipeline->AddSystem(updateOrderLevel, m_OctreeCollision, "Collidable"); diff --git a/src/Game/Systems/StartSystem.cpp b/src/Game/Systems/StartSystem.cpp index acc1395d..4c67b210 100644 --- a/src/Game/Systems/StartSystem.cpp +++ b/src/Game/Systems/StartSystem.cpp @@ -4,5 +4,30 @@ StartSystem::StartSystem(SystemParams params) : System(params) , ImpureSystem() { + EVENT_SUBSCRIBE_MEMBER(m_ECameraActivated, &StartSystem::OnCameraActivated); +} -} \ No newline at end of file +void StartSystem::Update(double dt) +{ + auto cameras = m_World->GetComponents("Camera"); + if(cameras == nullptr) { + return; + } + for(auto& cCamera: *cameras) { + EntityWrapper cameraEntity = EntityWrapper(m_World, cCamera.EntityID); + if(cameraEntity == m_activeCamera){ + return; + } + if(cameraEntity.Name() == "Overview_Camera_Start_Menu") { + Events::SetCamera event; + event.CameraEntity = cameraEntity; + m_EventBroker->Publish(event); + } + } +} + +bool StartSystem::OnCameraActivated(const Events::SetCamera& e) +{ + m_activeCamera = e.CameraEntity; + return 1; +}