From 51979d7f0ca38f4b4ec8d75f970198715caccaf0 Mon Sep 17 00:00:00 2001 From: sippeangelo Date: Mon, 18 Jan 2016 23:59:33 +0100 Subject: [PATCH] Changed System to take World through constructor and store it instead, cause it makes more sense. --- .../Engine/Collision/CollidableOctreeSystem.h | 8 +++--- include/Engine/Collision/CollisionSystem.h | 6 ++--- include/Engine/Collision/TriggerSystem.h | 6 ++--- include/Engine/Core/System.h | 14 +++++------ include/Engine/Core/SystemPipeline.h | 18 +++++++------ include/Engine/Core/UniformScaleSystem.h | 4 +-- include/Engine/Editor/EditorRenderSystem.h | 4 +-- include/Engine/Editor/EditorSystem.h | 4 +-- include/Engine/Editor/EditorSystemOld.h | 5 ++-- include/Engine/Rendering/RenderSystem.h | 9 +++---- include/Game/Systems/HealthSystem.h | 4 +-- include/Game/Systems/PlayerMovementSystem.h | 6 ++--- include/Game/Systems/PlayerSpawnSystem.h | 4 +-- include/Game/Systems/PlayerSystem.h | 6 ++--- include/Game/Systems/RaptorCopterSystem.h | 8 +++--- include/Game/Systems/SpawnerSystem.h | 2 +- .../Collision/CollidableOctreeSystem.cpp | 4 +-- src/Engine/Collision/CollisionSystem.cpp | 2 +- src/Engine/Collision/TriggerSystem.cpp | 6 ++--- src/Engine/Core/UniformScaleSystem.cpp | 6 ++--- src/Engine/Editor/EditorRenderSystem.cpp | 14 +++++------ src/Engine/Editor/EditorSystem.cpp | 12 ++++----- src/Engine/Editor/EditorSystemOld.cpp | 10 +++----- src/Engine/Rendering/RenderSystem.cpp | 25 +++++++++---------- src/Game/Game.cpp | 4 +-- src/Game/Systems/HealthSystem.cpp | 8 +++--- src/Game/Systems/PlayerMovementSystem.cpp | 2 +- src/Game/Systems/PlayerSpawnSystem.cpp | 10 ++++---- src/Game/Systems/PlayerSystem.cpp | 4 +-- src/Game/Systems/SpawnerSystem.cpp | 3 ++- src/Tests/HealthSystemTest.cpp | 2 +- src/Tests/OctTreeTestGameClass.cpp | 2 +- 32 files changed, 111 insertions(+), 111 deletions(-) diff --git a/include/Engine/Collision/CollidableOctreeSystem.h b/include/Engine/Collision/CollidableOctreeSystem.h index 8fa1f0a4..5b677186 100644 --- a/include/Engine/Collision/CollidableOctreeSystem.h +++ b/include/Engine/Collision/CollidableOctreeSystem.h @@ -8,14 +8,14 @@ class CollidableOctreeSystem : public ImpureSystem, public PureSystem { public: - CollidableOctreeSystem(EventBroker* eventBroker, Octree* octree) - : System(eventBroker) + CollidableOctreeSystem(World* world, EventBroker* eventBroker, Octree* octree) + : System(world, eventBroker) , PureSystem("Collidable") , m_Octree(octree) { } - virtual void Update(World* world, double dt) override; - virtual void UpdateComponent(World* world, EntityWrapper& entity, ComponentWrapper& component, double dt) override; + virtual void Update(double dt) override; + virtual void UpdateComponent(EntityWrapper& entity, ComponentWrapper& component, double dt) override; private: Octree* m_Octree; diff --git a/include/Engine/Collision/CollisionSystem.h b/include/Engine/Collision/CollisionSystem.h index ea6004d9..6abbf802 100644 --- a/include/Engine/Collision/CollisionSystem.h +++ b/include/Engine/Collision/CollisionSystem.h @@ -13,8 +13,8 @@ class CollisionSystem : public PureSystem { public: - CollisionSystem(EventBroker* eventBroker, Octree* octree) - : System(eventBroker) + CollisionSystem(World* world, EventBroker* eventBroker, Octree* octree) + : System(world, eventBroker) , PureSystem("AABB") , m_Octree(octree) , zPress(false) @@ -23,7 +23,7 @@ public: EVENT_SUBSCRIBE_MEMBER(m_EKeyUp, &CollisionSystem::OnKeyUp); } - virtual void UpdateComponent(World* world, EntityWrapper& entity, ComponentWrapper& component, double dt) override; + virtual void UpdateComponent(EntityWrapper& entity, ComponentWrapper& component, double dt) override; private: Octree* m_Octree; diff --git a/include/Engine/Collision/TriggerSystem.h b/include/Engine/Collision/TriggerSystem.h index ee53ad9b..23de924f 100644 --- a/include/Engine/Collision/TriggerSystem.h +++ b/include/Engine/Collision/TriggerSystem.h @@ -14,13 +14,13 @@ class AABB; class TriggerSystem : public PureSystem { public: - TriggerSystem(EventBroker* eventBroker, Octree* octree) - : System(eventBroker) + TriggerSystem(World* world, EventBroker* eventBroker, Octree* octree) + : System(world, eventBroker) , PureSystem("Trigger") , m_Octree(octree) { } - virtual void UpdateComponent(World* world, EntityWrapper& entity, ComponentWrapper& component, double dt) override; + virtual void UpdateComponent(EntityWrapper& entity, ComponentWrapper& component, double dt) override; private: Octree* m_Octree; diff --git a/include/Engine/Core/System.h b/include/Engine/Core/System.h index b7de9dc2..dc7c879a 100644 --- a/include/Engine/Core/System.h +++ b/include/Engine/Core/System.h @@ -11,14 +11,14 @@ class System friend class SystemPipeline; protected: - System() - : m_EventBroker(nullptr) - { } - System(EventBroker* eventBroker) - : m_EventBroker(eventBroker) + System(World* world, EventBroker) { } + System(World* world, EventBroker* eventBroker) + : m_World(world) + , m_EventBroker(eventBroker) { } virtual ~System() = default; + World* m_World; EventBroker* m_EventBroker; }; @@ -34,7 +34,7 @@ protected: const std::string m_ComponentType; - virtual void UpdateComponent(World* world, EntityWrapper& entity, ComponentWrapper& component, double dt) = 0; + virtual void UpdateComponent(EntityWrapper& entity, ComponentWrapper& cUniformScale, double dt) = 0; }; class ImpureSystem : public virtual System @@ -45,7 +45,7 @@ protected: ImpureSystem() = default; virtual ~ImpureSystem() = default; - virtual void Update(World* world, double dt) = 0; + virtual void Update(double dt) = 0; }; #endif \ No newline at end of file diff --git a/include/Engine/Core/SystemPipeline.h b/include/Engine/Core/SystemPipeline.h index c0cd8ed6..cc3c98e9 100644 --- a/include/Engine/Core/SystemPipeline.h +++ b/include/Engine/Core/SystemPipeline.h @@ -9,9 +9,11 @@ class SystemPipeline { public: - SystemPipeline(EventBroker* eventBroker) - : m_EventBroker(eventBroker) + SystemPipeline(World* world, EventBroker* eventBroker) + : m_World(world) + , m_EventBroker(eventBroker) { } + ~SystemPipeline() { for (UnorderedSystems& group : m_OrderedSystemGroups) { @@ -29,7 +31,7 @@ public: m_OrderedSystemGroups.resize(updateOrderLevel + 1); } UnorderedSystems& group = m_OrderedSystemGroups[updateOrderLevel]; - System* system = new T(m_EventBroker, args...); + System* system = new T(m_World, m_EventBroker, args...); group.Systems[typeid(T).name()] = system; PureSystem* pureSystem = dynamic_cast(system); @@ -47,7 +49,7 @@ public: } } - void Update(World* world, double dt) + void Update(double dt) { for (UnorderedSystems& group : m_OrderedSystemGroups) { // Process events @@ -57,18 +59,18 @@ public: // Update for (auto& system : group.ImpureSystems) { - system->Update(world, dt); + system->Update(dt); } for (auto& pair : group.PureSystems) { const std::string& componentName = pair.first; auto& systems = pair.second; - const ComponentPool* pool = world->GetComponents(componentName); + const ComponentPool* pool = m_World->GetComponents(componentName); if (pool == nullptr) { continue; } for (auto& component : *pool) { for (auto& system : systems) { - system->UpdateComponent(world, EntityWrapper(world, component.EntityID), component, dt); + system->UpdateComponent(EntityWrapper(m_World, component.EntityID), component, dt); } } } @@ -76,7 +78,9 @@ public: } private: + World* m_World; EventBroker* m_EventBroker; + struct UnorderedSystems { std::map Systems; diff --git a/include/Engine/Core/UniformScaleSystem.h b/include/Engine/Core/UniformScaleSystem.h index f44409f0..0ebc0672 100644 --- a/include/Engine/Core/UniformScaleSystem.h +++ b/include/Engine/Core/UniformScaleSystem.h @@ -8,9 +8,9 @@ class UniformScaleSystem : public PureSystem { public: - UniformScaleSystem(EventBroker* eventBroker); + UniformScaleSystem(World* world, EventBroker* eventBroker); - virtual void UpdateComponent(World* world, EntityWrapper& entity, ComponentWrapper& cUniformScale, double dt) override; + virtual void UpdateComponent(EntityWrapper& entity, ComponentWrapper& cUniformScale, double dt) override; private: EntityWrapper m_Camera = EntityWrapper::Invalid; diff --git a/include/Engine/Editor/EditorRenderSystem.h b/include/Engine/Editor/EditorRenderSystem.h index c593e29a..361669ba 100644 --- a/include/Engine/Editor/EditorRenderSystem.h +++ b/include/Engine/Editor/EditorRenderSystem.h @@ -10,9 +10,9 @@ class EditorRenderSystem : public ImpureSystem { public: - EditorRenderSystem(EventBroker* eventBroker, IRenderer* renderer, RenderFrame* renderFrame); + EditorRenderSystem(World* world, EventBroker* eventBroker, IRenderer* renderer, RenderFrame* renderFrame); - virtual void Update(World* world, double dt) override; + virtual void Update(double dt) override; private: IRenderer* m_Renderer; diff --git a/include/Engine/Editor/EditorSystem.h b/include/Engine/Editor/EditorSystem.h index 70ab2f15..8ae3ac2e 100644 --- a/include/Engine/Editor/EditorSystem.h +++ b/include/Engine/Editor/EditorSystem.h @@ -15,10 +15,10 @@ class EditorSystem : public ImpureSystem { public: - EditorSystem(EventBroker* eventBroker, IRenderer* renderer, RenderFrame* renderFrame); + EditorSystem(World* world, EventBroker* eventBroker, IRenderer* renderer, RenderFrame* renderFrame); ~EditorSystem(); - void Update(World* world, double dt); + void Update(double dt); private: IRenderer* m_Renderer; diff --git a/include/Engine/Editor/EditorSystemOld.h b/include/Engine/Editor/EditorSystemOld.h index b2d7df0c..d49c3542 100644 --- a/include/Engine/Editor/EditorSystemOld.h +++ b/include/Engine/Editor/EditorSystemOld.h @@ -18,13 +18,12 @@ class EditorSystemOld : public ImpureSystem { public: - EditorSystemOld(EventBroker* eventBroker, IRenderer* renderer); + EditorSystemOld(World* world, EventBroker* eventBroker, IRenderer* renderer); - virtual void Update(World* world, double dt) override; + virtual void Update(double dt) override; private: IRenderer* m_Renderer; - World* m_World = nullptr; Camera* m_Camera = nullptr; bool m_Enabled; diff --git a/include/Engine/Rendering/RenderSystem.h b/include/Engine/Rendering/RenderSystem.h index 39b35108..198e22ee 100644 --- a/include/Engine/Rendering/RenderSystem.h +++ b/include/Engine/Rendering/RenderSystem.h @@ -20,13 +20,12 @@ class RenderSystem : public ImpureSystem { public: - RenderSystem(EventBroker* eventBrokerer, const IRenderer* renderer, RenderFrame* renderFrame); + RenderSystem(World* world, EventBroker* eventBrokerer, const IRenderer* renderer, RenderFrame* renderFrame); ~RenderSystem(); - virtual void Update(World* world, double dt) override; + virtual void Update(double dt) override; private: - World* m_World = nullptr; const IRenderer* m_Renderer; RenderFrame* m_RenderFrame; Camera* m_Camera; @@ -37,8 +36,8 @@ private: EventRelay m_EInputCommand; bool OnInputCommand(const Events::InputCommand& e); - void fillModels(std::list>& jobs, World* world); - void fillLight(std::list>& jobs, World* world); + void fillModels(std::list>& jobs); + void fillLight(std::list>& jobs); }; #endif \ No newline at end of file diff --git a/include/Game/Systems/HealthSystem.h b/include/Game/Systems/HealthSystem.h index 0db3ec41..f9843f11 100644 --- a/include/Game/Systems/HealthSystem.h +++ b/include/Game/Systems/HealthSystem.h @@ -16,10 +16,10 @@ class HealthSystem : public PureSystem { public: - HealthSystem(EventBroker* eventBroker); + HealthSystem(World* world, EventBroker* eventBroker); //updatecomponent - virtual void UpdateComponent(World* world, EntityWrapper& entity, ComponentWrapper& component, double dt) override; + virtual void UpdateComponent(EntityWrapper& entity, ComponentWrapper& component, double dt) override; private: //methods which will take care of specific events diff --git a/include/Game/Systems/PlayerMovementSystem.h b/include/Game/Systems/PlayerMovementSystem.h index 6dc2dc31..1be61bdd 100644 --- a/include/Game/Systems/PlayerMovementSystem.h +++ b/include/Game/Systems/PlayerMovementSystem.h @@ -5,10 +5,10 @@ class PlayerMovementSystem : public PureSystem { public: - PlayerMovementSystem(EventBroker* eventBroker) - : System(eventBroker) + PlayerMovementSystem(World* world, EventBroker* eventBroker) + : System(world, eventBroker) , PureSystem("Player") { } - virtual void UpdateComponent(World* world, EntityWrapper& entity, ComponentWrapper& component, double dt); + virtual void UpdateComponent(EntityWrapper& entity, ComponentWrapper& component, double dt); }; \ No newline at end of file diff --git a/include/Game/Systems/PlayerSpawnSystem.h b/include/Game/Systems/PlayerSpawnSystem.h index f0e10949..8ade03a6 100644 --- a/include/Game/Systems/PlayerSpawnSystem.h +++ b/include/Game/Systems/PlayerSpawnSystem.h @@ -6,9 +6,9 @@ class PlayerSpawnSystem : public ImpureSystem { public: - PlayerSpawnSystem(EventBroker* eventBroker); + PlayerSpawnSystem(World* world, EventBroker* eventBroker); - virtual void Update(World* world, double dt) override; + virtual void Update(double dt) override; private: EventRelay m_OnInputCommand; diff --git a/include/Game/Systems/PlayerSystem.h b/include/Game/Systems/PlayerSystem.h index a74cbb9f..fdf1132b 100644 --- a/include/Game/Systems/PlayerSystem.h +++ b/include/Game/Systems/PlayerSystem.h @@ -11,8 +11,8 @@ class PlayerSystem : public PureSystem { public: - PlayerSystem(EventBroker* eventBroker) - : System(eventBroker) + PlayerSystem(World* world, EventBroker* eventBroker) + : System(world, eventBroker) , PureSystem("Player") { EVENT_SUBSCRIBE_MEMBER(m_ETouch, &PlayerSystem::OnTouch); @@ -20,7 +20,7 @@ public: EVENT_SUBSCRIBE_MEMBER(m_ELeave, &PlayerSystem::OnLeave); } - virtual void UpdateComponent(World* world, EntityWrapper& entity, ComponentWrapper& component, double dt) override; + virtual void UpdateComponent(EntityWrapper& entity, ComponentWrapper& component, double dt) override; private: float m_Speed = 5; EventRelay m_EEnter; diff --git a/include/Game/Systems/RaptorCopterSystem.h b/include/Game/Systems/RaptorCopterSystem.h index 57a8de86..8bb18de6 100644 --- a/include/Game/Systems/RaptorCopterSystem.h +++ b/include/Game/Systems/RaptorCopterSystem.h @@ -4,14 +4,14 @@ class RaptorCopterSystem : public PureSystem { public: - RaptorCopterSystem(EventBroker* eventBroker) - : System(eventBroker) + RaptorCopterSystem(World* world, EventBroker* eventBroker) + : System(world, eventBroker) , PureSystem("RaptorCopter") { } - virtual void UpdateComponent(World* world, EntityWrapper& entity, ComponentWrapper& component, double dt) override + virtual void UpdateComponent(EntityWrapper& entity, ComponentWrapper& component, double dt) override { - ComponentWrapper& transform = world->GetComponent(component.EntityID, "Transform"); + ComponentWrapper& transform = m_World->GetComponent(component.EntityID, "Transform"); (glm::vec3&)transform["Orientation"] += (float)(double)component["Speed"] * (float)dt * (glm::vec3)component["Axis"]; } }; \ No newline at end of file diff --git a/include/Game/Systems/SpawnerSystem.h b/include/Game/Systems/SpawnerSystem.h index 2c094528..62f6b09a 100644 --- a/include/Game/Systems/SpawnerSystem.h +++ b/include/Game/Systems/SpawnerSystem.h @@ -13,7 +13,7 @@ class SpawnerSystem : public System { public: - SpawnerSystem(EventBroker* eventBroker); + SpawnerSystem(World* world, EventBroker* eventBroker); static EntityWrapper Spawn(EntityWrapper spawner, EntityWrapper parent = EntityWrapper::Invalid); diff --git a/src/Engine/Collision/CollidableOctreeSystem.cpp b/src/Engine/Collision/CollidableOctreeSystem.cpp index 62d742f5..e5da7910 100644 --- a/src/Engine/Collision/CollidableOctreeSystem.cpp +++ b/src/Engine/Collision/CollidableOctreeSystem.cpp @@ -1,11 +1,11 @@ #include "Collision/CollidableOctreeSystem.h" -void CollidableOctreeSystem::Update(World* world, double dt) +void CollidableOctreeSystem::Update(double dt) { m_Octree->ClearDynamicObjects(); } -void CollidableOctreeSystem::UpdateComponent(World* world, EntityWrapper& entity, ComponentWrapper& component, double dt) +void CollidableOctreeSystem::UpdateComponent(EntityWrapper& entity, ComponentWrapper& component, double dt) { if (entity.HasComponent("AABB")) { boost::optional absoluteAABB = Collision::EntityAbsoluteAABB(entity); diff --git a/src/Engine/Collision/CollisionSystem.cpp b/src/Engine/Collision/CollisionSystem.cpp index 96e49153..d4903c5e 100644 --- a/src/Engine/Collision/CollisionSystem.cpp +++ b/src/Engine/Collision/CollisionSystem.cpp @@ -2,7 +2,7 @@ #include "Collision/CollisionSystem.h" #include "Core/AABB.h" -void CollisionSystem::UpdateComponent(World* world, EntityWrapper& entity, ComponentWrapper& component, double dt) +void CollisionSystem::UpdateComponent(EntityWrapper& entity, ComponentWrapper& component, double dt) { if (!entity.HasComponent("Physics")) { return; diff --git a/src/Engine/Collision/TriggerSystem.cpp b/src/Engine/Collision/TriggerSystem.cpp index 58d1e332..20d30ae1 100644 --- a/src/Engine/Collision/TriggerSystem.cpp +++ b/src/Engine/Collision/TriggerSystem.cpp @@ -3,10 +3,10 @@ #include "Core/AABB.h" #include "Rendering/Model.h" -void TriggerSystem::UpdateComponent(World* world, EntityWrapper& entity, ComponentWrapper& component, double dt) +void TriggerSystem::UpdateComponent(EntityWrapper& entity, ComponentWrapper& component, double dt) { //Currently only players can trigger things. - auto players = world->GetComponents("Player"); + auto players = m_World->GetComponents("Player"); if (players == nullptr) { return; } @@ -18,7 +18,7 @@ void TriggerSystem::UpdateComponent(World* world, EntityWrapper& entity, Compone } for (auto& pc : *players) { EntityID pId = pc.EntityID; - boost::optional playerBox = Collision::EntityAbsoluteAABB(EntityWrapper(world, pId)); + boost::optional playerBox = Collision::EntityAbsoluteAABB(EntityWrapper(m_World, pId)); //The player can't trigger anything without an AABB. if (!playerBox) { continue; diff --git a/src/Engine/Core/UniformScaleSystem.cpp b/src/Engine/Core/UniformScaleSystem.cpp index 8cf670fc..ab954a05 100644 --- a/src/Engine/Core/UniformScaleSystem.cpp +++ b/src/Engine/Core/UniformScaleSystem.cpp @@ -1,13 +1,13 @@ #include "Core/UniformScaleSystem.h" -UniformScaleSystem::UniformScaleSystem(EventBroker* eventBroker) - : System(eventBroker) +UniformScaleSystem::UniformScaleSystem(World* world, EventBroker* eventBroker) + : System(world, eventBroker) , PureSystem("UniformScale") { EVENT_SUBSCRIBE_MEMBER(m_ESetCamera, &UniformScaleSystem::OnSetCamera); } -void UniformScaleSystem::UpdateComponent(World* world, EntityWrapper& entity, ComponentWrapper& cUniformScale, double dt) +void UniformScaleSystem::UpdateComponent(EntityWrapper& entity, ComponentWrapper& cUniformScale, double dt) { if (!m_Camera.Valid()) { return; diff --git a/src/Engine/Editor/EditorRenderSystem.cpp b/src/Engine/Editor/EditorRenderSystem.cpp index 2d25338d..d320a198 100644 --- a/src/Engine/Editor/EditorRenderSystem.cpp +++ b/src/Engine/Editor/EditorRenderSystem.cpp @@ -1,7 +1,7 @@ #include "Editor/EditorRenderSystem.h" -EditorRenderSystem::EditorRenderSystem(EventBroker* eventBroker, IRenderer* renderer, RenderFrame* renderFrame) - : System(eventBroker) +EditorRenderSystem::EditorRenderSystem(World* m_World, EventBroker* eventBroker, IRenderer* renderer, RenderFrame* renderFrame) + : System(m_World, eventBroker) , m_Renderer(renderer) , m_RenderFrame(renderFrame) { @@ -10,7 +10,7 @@ EditorRenderSystem::EditorRenderSystem(EventBroker* eventBroker, IRenderer* rend m_EditorCamera = new Camera((float)resolution.Width / resolution.Height, glm::radians(45.f), 0.01f, 5000.f); } -void EditorRenderSystem::Update(World* world, double dt) +void EditorRenderSystem::Update(double dt) { if (m_CurrentCamera) { ComponentWrapper cameraTransform = m_CurrentCamera["Transform"]; @@ -23,7 +23,7 @@ void EditorRenderSystem::Update(World* world, double dt) scene.Camera = m_EditorCamera; scene.Viewport = Rectangle(1920, 1080); - auto models = world->GetComponents("Model"); + auto models = m_World->GetComponents("Model"); if (models != nullptr) { for (auto& cModel : *models) { if (!(bool)cModel["Visible"]) { @@ -45,7 +45,7 @@ void EditorRenderSystem::Update(World* world, double dt) } } - EntityWrapper entity(world, cModel.EntityID); + EntityWrapper entity(m_World, cModel.EntityID); glm::mat4 modelMatrix = Transform::ModelMatrix(entity.ID, entity.World); for (auto matGroup : model->MaterialGroups()) { std::shared_ptr modelJob = std::make_shared(model, nullptr, modelMatrix, matGroup, cModel, entity.World); @@ -54,7 +54,7 @@ void EditorRenderSystem::Update(World* world, double dt) } } - auto pointLights = world->GetComponents("PointLight"); + auto pointLights = m_World->GetComponents("PointLight"); if (pointLights != nullptr) { for (auto& cPointLight : *pointLights) { bool visible = cPointLight["Visible"]; @@ -62,7 +62,7 @@ void EditorRenderSystem::Update(World* world, double dt) continue; } - EntityWrapper entity(world, cPointLight.EntityID); + EntityWrapper entity(m_World, cPointLight.EntityID); ComponentWrapper& cTransform = entity["Transform"]; std::shared_ptr pointLightJob = std::make_shared(cTransform, cPointLight, entity.World); scene.PointLightJobs.push_back(pointLightJob); diff --git a/src/Engine/Editor/EditorSystem.cpp b/src/Engine/Editor/EditorSystem.cpp index b1e09422..64f16cc6 100644 --- a/src/Engine/Editor/EditorSystem.cpp +++ b/src/Engine/Editor/EditorSystem.cpp @@ -2,13 +2,13 @@ #include "Core/UniformScaleSystem.h" #include "Editor/EditorRenderSystem.h" -EditorSystem::EditorSystem(EventBroker* eventBroker, IRenderer* renderer, RenderFrame* renderFrame) - : System(eventBroker) +EditorSystem::EditorSystem(World* world, EventBroker* eventBroker, IRenderer* renderer, RenderFrame* renderFrame) + : System(world, eventBroker) , m_Renderer(renderer) , m_RenderFrame(renderFrame) { m_EditorWorld = new World(); - m_EditorWorldSystemPipeline = new SystemPipeline(eventBroker); + m_EditorWorldSystemPipeline = new SystemPipeline(m_EditorWorld, eventBroker); m_EditorWorldSystemPipeline->AddSystem(0); m_EditorWorldSystemPipeline->AddSystem(1, m_Renderer, m_RenderFrame); @@ -45,11 +45,11 @@ EditorSystem::~EditorSystem() delete m_EditorWorld; } -void EditorSystem::Update(World* world, double dt) +void EditorSystem::Update(double dt) { - m_EditorWorldSystemPipeline->Update(m_EditorWorld, dt); + m_EditorWorldSystemPipeline->Update(dt); - m_EditorGUI->Draw(world); + m_EditorGUI->Draw(m_World); m_EditorStats->Draw(dt); m_DebugCameraInputController->Update(dt); diff --git a/src/Engine/Editor/EditorSystemOld.cpp b/src/Engine/Editor/EditorSystemOld.cpp index 675ea80b..332bef05 100644 --- a/src/Engine/Editor/EditorSystemOld.cpp +++ b/src/Engine/Editor/EditorSystemOld.cpp @@ -2,8 +2,8 @@ #define IMGUI_DEFINE_MATH_OPERATORS #include -EditorSystemOld::EditorSystemOld(EventBroker* eventBroker, IRenderer* renderer) - : System(eventBroker) +EditorSystemOld::EditorSystemOld(World* world, EventBroker* eventBroker, IRenderer* renderer) + : System(world, eventBroker) , ImpureSystem() , m_Renderer(renderer) { @@ -23,10 +23,8 @@ EditorSystemOld::EditorSystemOld(EventBroker* eventBroker, IRenderer* renderer) EVENT_SUBSCRIBE_MEMBER(m_EFileDropped, &EditorSystemOld::OnFileDropped); } -void EditorSystemOld::Update(World* world, double dt) +void EditorSystemOld::Update(double dt) { - m_World = world; - if (!m_Enabled) { return; } @@ -37,7 +35,7 @@ void EditorSystemOld::Update(World* world, double dt) Picking(); updateWidget(); - drawUI(world, dt); + drawUI(m_World, dt); // Clear drop queue if it wasn't handled by any UI element if (!m_LastDroppedFile.empty()) { diff --git a/src/Engine/Rendering/RenderSystem.cpp b/src/Engine/Rendering/RenderSystem.cpp index 2af782e3..7b26bdad 100644 --- a/src/Engine/Rendering/RenderSystem.cpp +++ b/src/Engine/Rendering/RenderSystem.cpp @@ -1,7 +1,7 @@ #include "Rendering/RenderSystem.h" -RenderSystem::RenderSystem(EventBroker* eventBroker, const IRenderer* renderer, RenderFrame* renderFrame) - : System(eventBroker) +RenderSystem::RenderSystem(World* world, EventBroker* eventBroker, const IRenderer* renderer, RenderFrame* renderFrame) + : System(world, eventBroker) , m_Renderer(renderer) , m_RenderFrame(renderFrame) { @@ -29,9 +29,9 @@ bool RenderSystem::OnSetCamera(Events::SetCamera& e) return true; } -void RenderSystem::fillModels(std::list>& jobs, World* world) +void RenderSystem::fillModels(std::list>& jobs) { - auto models = world->GetComponents("Model"); + auto models = m_World->GetComponents("Model"); if (models == nullptr) { return; } @@ -60,17 +60,17 @@ void RenderSystem::fillModels(std::list>& jobs, World } } - glm::mat4 modelMatrix = Transform::ModelMatrix(modelComponent.EntityID, world); + glm::mat4 modelMatrix = Transform::ModelMatrix(modelComponent.EntityID, m_World); for (auto matGroup : model->MaterialGroups()) { - std::shared_ptr modelJob = std::shared_ptr(new ModelJob(model, m_Camera, modelMatrix, matGroup, modelComponent, world)); + std::shared_ptr modelJob = std::shared_ptr(new ModelJob(model, m_Camera, modelMatrix, matGroup, modelComponent, m_World)); jobs.push_back(modelJob); } } } -void RenderSystem::fillLight(std::list>& jobs, World* world) +void RenderSystem::fillLight(std::list>& jobs) { - auto pointLights = world->GetComponents("PointLight"); + auto pointLights = m_World->GetComponents("PointLight"); if (pointLights == nullptr) { return; } @@ -80,7 +80,7 @@ void RenderSystem::fillLight(std::list>& jobs, World* if (!visible) { continue; } - auto transformC = world->GetComponent(pointlightC.EntityID, "Transform"); + auto transformC = m_World->GetComponent(pointlightC.EntityID, "Transform"); if (&transformC == nullptr) { return; } @@ -95,9 +95,8 @@ bool RenderSystem::OnInputCommand(const Events::InputCommand& e) return false; } -void RenderSystem::Update(World* world, double dt) +void RenderSystem::Update(double dt) { - m_World = world; m_EventBroker->Process(); if (m_CurrentCamera) { @@ -110,8 +109,8 @@ void RenderSystem::Update(World* world, double dt) RenderScene scene; scene.Camera = m_Camera; scene.Viewport = Rectangle(1280, 720); - fillModels(scene.ForwardJobs, world); - fillLight(scene.PointLightJobs, world); + fillModels(scene.ForwardJobs); + fillLight(scene.PointLightJobs); m_RenderFrame->Add(scene); } \ No newline at end of file diff --git a/src/Game/Game.cpp b/src/Game/Game.cpp index 5be95802..d60863bb 100644 --- a/src/Game/Game.cpp +++ b/src/Game/Game.cpp @@ -71,7 +71,7 @@ Game::Game(int argc, char* argv[]) m_OctreeCollision = new Octree(AABB(glm::vec3(-100), glm::vec3(100)), 4); m_OctreeFrustrumCulling = new Octree(AABB(glm::vec3(-100), glm::vec3(100)), 4); // Create system pipeline - m_SystemPipeline = new SystemPipeline(m_EventBroker); + m_SystemPipeline = new SystemPipeline(m_World, m_EventBroker); // All systems with orderlevel 0 will be updated first. unsigned int updateOrderLevel = 0; @@ -143,7 +143,7 @@ void Game::Tick() m_ClientOrServer->Update(); } // Iterate through systems and update world! - m_SystemPipeline->Update(m_World, dt); + m_SystemPipeline->Update(dt); debugTick(dt); m_Renderer->Update(dt); m_EventBroker->Process(); diff --git a/src/Game/Systems/HealthSystem.cpp b/src/Game/Systems/HealthSystem.cpp index b6d46dc9..e1cb9175 100644 --- a/src/Game/Systems/HealthSystem.cpp +++ b/src/Game/Systems/HealthSystem.cpp @@ -1,7 +1,7 @@ #include "Systems/HealthSystem.h" -HealthSystem::HealthSystem(EventBroker* eventBroker) - : System(eventBroker) +HealthSystem::HealthSystem(World* m_World, EventBroker* eventBroker) + : System(m_World, eventBroker) , PureSystem("Health") { //subscribe/listenTo playerdamage,healthpickup events (using the eventBroker) @@ -9,10 +9,10 @@ HealthSystem::HealthSystem(EventBroker* eventBroker) EVENT_SUBSCRIBE_MEMBER(m_EPlayerHealthPickup, &HealthSystem::OnPlayerHealthPickup); } -void HealthSystem::UpdateComponent(World* world, EntityWrapper& entity, ComponentWrapper& component, double dt) +void HealthSystem::UpdateComponent(EntityWrapper& entity, ComponentWrapper& component, double dt) { //if entityID of health is 9 then the players ID is also 9 (player,health are connected to the same entity) - ComponentWrapper player = world->GetComponent(component.EntityID, "Player"); + ComponentWrapper player = m_World->GetComponent(component.EntityID, "Player"); double maxHealth = (double)component["MaxHealth"]; //process the DeltaHealthVector and change the entitys health accordingly diff --git a/src/Game/Systems/PlayerMovementSystem.cpp b/src/Game/Systems/PlayerMovementSystem.cpp index 536624b3..6f419b46 100644 --- a/src/Game/Systems/PlayerMovementSystem.cpp +++ b/src/Game/Systems/PlayerMovementSystem.cpp @@ -1,6 +1,6 @@ #include "Systems/PlayerMovementSystem.h" -void PlayerMovementSystem::UpdateComponent(World* world, EntityWrapper& entity, ComponentWrapper& component, double dt) +void PlayerMovementSystem::UpdateComponent(EntityWrapper& entity, ComponentWrapper& component, double dt) { ComponentWrapper& cTransform = entity["Transform"]; if (!entity.HasComponent("Physics")) { diff --git a/src/Game/Systems/PlayerSpawnSystem.cpp b/src/Game/Systems/PlayerSpawnSystem.cpp index 0bf5bdea..4224d46c 100644 --- a/src/Game/Systems/PlayerSpawnSystem.cpp +++ b/src/Game/Systems/PlayerSpawnSystem.cpp @@ -1,21 +1,21 @@ #include "Systems/PlayerSpawnSystem.h" -PlayerSpawnSystem::PlayerSpawnSystem(EventBroker* eventBroker) - : System(eventBroker) +PlayerSpawnSystem::PlayerSpawnSystem(World* m_World, EventBroker* eventBroker) + : System(m_World, eventBroker) { EVENT_SUBSCRIBE_MEMBER(m_OnInputCommand, &PlayerSpawnSystem::OnInputCommand); } -void PlayerSpawnSystem::Update(World* world, double dt) +void PlayerSpawnSystem::Update(double dt) { - auto playerSpawns = world->GetComponents("PlayerSpawn"); + auto playerSpawns = m_World->GetComponents("PlayerSpawn"); if (playerSpawns == nullptr) { return; } for (auto& team : m_SpawnRequests) { for (auto& cPlayerSpawn : *playerSpawns) { - EntityWrapper spawner(world, cPlayerSpawn.EntityID); + EntityWrapper spawner(m_World, cPlayerSpawn.EntityID); if (!spawner.HasComponent("Spawner")) { continue; } diff --git a/src/Game/Systems/PlayerSystem.cpp b/src/Game/Systems/PlayerSystem.cpp index 8cdddf84..a4970ba9 100644 --- a/src/Game/Systems/PlayerSystem.cpp +++ b/src/Game/Systems/PlayerSystem.cpp @@ -1,6 +1,6 @@ #include "Systems/PlayerSystem.h" -void PlayerSystem::UpdateComponent(World* world, EntityWrapper& entity, ComponentWrapper& component, double dt) +void PlayerSystem::UpdateComponent(EntityWrapper& entity, ComponentWrapper& component, double dt) { component["Velocity"] = glm::vec3(0.f, 0.f, 0.f); if ((bool&)component["Forward"] == true) { @@ -18,7 +18,7 @@ void PlayerSystem::UpdateComponent(World* world, EntityWrapper& entity, Componen } if ((glm::vec3)component["Velocity"] != glm::vec3(0.f)) { - ComponentWrapper& transform = world->GetComponent(component.EntityID, "Transform"); + ComponentWrapper& transform = m_World->GetComponent(component.EntityID, "Transform"); (glm::vec3&)transform["Position"] += (glm::vec3)component["Velocity"]; } } diff --git a/src/Game/Systems/SpawnerSystem.cpp b/src/Game/Systems/SpawnerSystem.cpp index 3454c58b..8cb5b99d 100644 --- a/src/Game/Systems/SpawnerSystem.cpp +++ b/src/Game/Systems/SpawnerSystem.cpp @@ -1,6 +1,7 @@ #include "Systems/SpawnerSystem.h" -SpawnerSystem::SpawnerSystem(EventBroker* eventBroker) : System(eventBroker) +SpawnerSystem::SpawnerSystem(World* world, EventBroker* eventBroker) + : System(world, eventBroker) { EVENT_SUBSCRIBE_MEMBER(m_OnSpawnerSpawn, &SpawnerSystem::OnSpawnerSpawn); } diff --git a/src/Tests/HealthSystemTest.cpp b/src/Tests/HealthSystemTest.cpp index 84d6199d..347d8071 100644 --- a/src/Tests/HealthSystemTest.cpp +++ b/src/Tests/HealthSystemTest.cpp @@ -102,7 +102,7 @@ void GameHealthSystemTest::Tick() m_LastTime = currentTime; // Iterate through systems and update world! - m_SystemPipeline->Update(m_World, dt); + m_SystemPipeline->Update(dt); m_EventBroker->Swap(); m_EventBroker->Clear(); diff --git a/src/Tests/OctTreeTestGameClass.cpp b/src/Tests/OctTreeTestGameClass.cpp index 2c45d897..f125f425 100644 --- a/src/Tests/OctTreeTestGameClass.cpp +++ b/src/Tests/OctTreeTestGameClass.cpp @@ -179,7 +179,7 @@ void Game::Tick() #endif // Iterate through systems and update world! - m_SystemPipeline->Update(m_World, dt); + m_SystemPipeline->Update(dt); m_Renderer->Update(dt); m_RenderQueueFactory->Update(m_World);