Refactored System constructor to take a struct instead of a bunch of parameters to reduce future pain and to be able to extend it with IsClient and IsServer flags.
This commit is contained in:
@@ -9,8 +9,8 @@
|
|||||||
class CollidableOctreeSystem : public ImpureSystem, public PureSystem
|
class CollidableOctreeSystem : public ImpureSystem, public PureSystem
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
CollidableOctreeSystem(World* world, EventBroker* eventBroker, Octree<EntityAABB>* octree, const std::string& componentType)
|
CollidableOctreeSystem(SystemParams params, Octree<EntityAABB>* octree, const std::string& componentType)
|
||||||
: System(world, eventBroker)
|
: System(params)
|
||||||
, PureSystem(componentType)
|
, PureSystem(componentType)
|
||||||
, m_Octree(octree)
|
, m_Octree(octree)
|
||||||
{ }
|
{ }
|
||||||
|
|||||||
@@ -13,8 +13,8 @@
|
|||||||
class CollisionSystem : public PureSystem
|
class CollisionSystem : public PureSystem
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
CollisionSystem(World* world, EventBroker* eventBroker, Octree<EntityAABB>* octree)
|
CollisionSystem(SystemParams params, Octree<EntityAABB>* octree)
|
||||||
: System(world, eventBroker)
|
: System(params)
|
||||||
, PureSystem("Collidable")
|
, PureSystem("Collidable")
|
||||||
, m_Octree(octree)
|
, m_Octree(octree)
|
||||||
{ }
|
{ }
|
||||||
|
|||||||
@@ -15,8 +15,8 @@ class AABB;
|
|||||||
class TriggerSystem : public PureSystem
|
class TriggerSystem : public PureSystem
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
TriggerSystem(World* world, EventBroker* eventBroker, Octree<EntityAABB>* octree)
|
TriggerSystem(SystemParams params, Octree<EntityAABB>* octree)
|
||||||
: System(world, eventBroker)
|
: System(params)
|
||||||
, PureSystem("Trigger")
|
, PureSystem("Trigger")
|
||||||
, m_Octree(octree)
|
, m_Octree(octree)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -6,20 +6,38 @@
|
|||||||
#include "EntityWrapper.h"
|
#include "EntityWrapper.h"
|
||||||
#include "ComponentWrapper.h"
|
#include "ComponentWrapper.h"
|
||||||
|
|
||||||
|
struct SystemParams
|
||||||
|
{
|
||||||
|
SystemParams(::World* World, ::EventBroker* EventBroker, bool IsClient, bool IsServer)
|
||||||
|
: World(World)
|
||||||
|
, EventBroker(EventBroker)
|
||||||
|
, IsClient(IsClient)
|
||||||
|
, IsServer(IsServer)
|
||||||
|
{ }
|
||||||
|
|
||||||
|
::World* World;
|
||||||
|
::EventBroker* EventBroker;
|
||||||
|
bool IsClient = false;
|
||||||
|
bool IsServer = false;
|
||||||
|
};
|
||||||
|
|
||||||
class System
|
class System
|
||||||
{
|
{
|
||||||
friend class SystemPipeline;
|
friend class SystemPipeline;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
System(World* world, EventBroker) { }
|
System(SystemParams params)
|
||||||
System(World* world, EventBroker* eventBroker)
|
: m_World(params.World)
|
||||||
: m_World(world)
|
, m_EventBroker(params.EventBroker)
|
||||||
, m_EventBroker(eventBroker)
|
, IsClient(params.IsClient)
|
||||||
|
, IsServer(params.IsServer)
|
||||||
{ }
|
{ }
|
||||||
virtual ~System() = default;
|
virtual ~System() = default;
|
||||||
|
|
||||||
World* m_World;
|
World* m_World;
|
||||||
EventBroker* m_EventBroker;
|
EventBroker* m_EventBroker;
|
||||||
|
bool IsClient = false;
|
||||||
|
bool IsServer = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
class PureSystem : public virtual System
|
class PureSystem : public virtual System
|
||||||
|
|||||||
@@ -10,9 +10,11 @@
|
|||||||
class SystemPipeline
|
class SystemPipeline
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
SystemPipeline(World* world, EventBroker* eventBroker)
|
SystemPipeline(World* world, EventBroker* eventBroker, bool isClient, bool isServer)
|
||||||
: m_World(world)
|
: m_World(world)
|
||||||
, m_EventBroker(eventBroker)
|
, m_EventBroker(eventBroker)
|
||||||
|
, m_IsClient(isClient)
|
||||||
|
, m_IsServer(isServer)
|
||||||
{
|
{
|
||||||
EVENT_SUBSCRIBE_MEMBER(m_EPause, &SystemPipeline::OnPause);
|
EVENT_SUBSCRIBE_MEMBER(m_EPause, &SystemPipeline::OnPause);
|
||||||
EVENT_SUBSCRIBE_MEMBER(m_EResume, &SystemPipeline::OnResume);
|
EVENT_SUBSCRIBE_MEMBER(m_EResume, &SystemPipeline::OnResume);
|
||||||
@@ -35,7 +37,7 @@ public:
|
|||||||
m_OrderedSystemGroups.resize(updateOrderLevel + 1);
|
m_OrderedSystemGroups.resize(updateOrderLevel + 1);
|
||||||
}
|
}
|
||||||
UnorderedSystems& group = m_OrderedSystemGroups[updateOrderLevel];
|
UnorderedSystems& group = m_OrderedSystemGroups[updateOrderLevel];
|
||||||
System* system = new T(m_World, m_EventBroker, args...);
|
System* system = new T(SystemParams(m_World, m_EventBroker, m_IsClient, m_IsServer), args...);
|
||||||
group.Systems[typeid(T).name()] = system;
|
group.Systems[typeid(T).name()] = system;
|
||||||
|
|
||||||
PureSystem* pureSystem = dynamic_cast<PureSystem*>(system);
|
PureSystem* pureSystem = dynamic_cast<PureSystem*>(system);
|
||||||
@@ -88,6 +90,8 @@ public:
|
|||||||
private:
|
private:
|
||||||
World* m_World;
|
World* m_World;
|
||||||
EventBroker* m_EventBroker;
|
EventBroker* m_EventBroker;
|
||||||
|
bool m_IsClient = false;
|
||||||
|
bool m_IsServer = false;
|
||||||
bool m_Paused = false;
|
bool m_Paused = false;
|
||||||
|
|
||||||
struct UnorderedSystems
|
struct UnorderedSystems
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
class UniformScaleSystem : public PureSystem
|
class UniformScaleSystem : public PureSystem
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
UniformScaleSystem(World* world, EventBroker* eventBroker);
|
UniformScaleSystem(SystemParams params);
|
||||||
|
|
||||||
virtual void UpdateComponent(EntityWrapper& entity, ComponentWrapper& cUniformScale, double dt) override;
|
virtual void UpdateComponent(EntityWrapper& entity, ComponentWrapper& cUniformScale, double dt) override;
|
||||||
|
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
class EditorRenderSystem : public ImpureSystem
|
class EditorRenderSystem : public ImpureSystem
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
EditorRenderSystem(World* world, EventBroker* eventBroker, IRenderer* renderer, RenderFrame* renderFrame);
|
EditorRenderSystem(SystemParams params, IRenderer* renderer, RenderFrame* renderFrame);
|
||||||
|
|
||||||
virtual void Update(double dt) override;
|
virtual void Update(double dt) override;
|
||||||
|
|
||||||
|
|||||||
@@ -17,7 +17,7 @@
|
|||||||
class EditorSystem : public ImpureSystem
|
class EditorSystem : public ImpureSystem
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
EditorSystem(World* world, EventBroker* eventBroker, IRenderer* renderer, RenderFrame* renderFrame);
|
EditorSystem(SystemParams params, IRenderer* renderer, RenderFrame* renderFrame);
|
||||||
~EditorSystem();
|
~EditorSystem();
|
||||||
|
|
||||||
void Update(double dt);
|
void Update(double dt);
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ struct WidgetDelta : Event
|
|||||||
class EditorWidgetSystem : public ImpureSystem, PureSystem
|
class EditorWidgetSystem : public ImpureSystem, PureSystem
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
EditorWidgetSystem(World* world, EventBroker* eventBroker, IRenderer* renderer);
|
EditorWidgetSystem(SystemParams params, IRenderer* renderer);
|
||||||
|
|
||||||
virtual void Update(double dt) override;
|
virtual void Update(double dt) override;
|
||||||
virtual void UpdateComponent(EntityWrapper& entity, ComponentWrapper& cEditorWidget, double dt) override;
|
virtual void UpdateComponent(EntityWrapper& entity, ComponentWrapper& cEditorWidget, double dt) override;
|
||||||
|
|||||||
@@ -13,8 +13,8 @@
|
|||||||
class AnimationSystem : public PureSystem
|
class AnimationSystem : public PureSystem
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
AnimationSystem(World* world, EventBroker* eventBroker)
|
AnimationSystem(SystemParams params)
|
||||||
: System(world, eventBroker)
|
: System(params)
|
||||||
, PureSystem("Animation")
|
, PureSystem("Animation")
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|||||||
@@ -20,7 +20,7 @@
|
|||||||
class RenderSystem : public ImpureSystem
|
class RenderSystem : public ImpureSystem
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
RenderSystem(World* world, EventBroker* eventBrokerer, const IRenderer* renderer, RenderFrame* renderFrame);
|
RenderSystem(SystemParams params, const IRenderer* renderer, RenderFrame* renderFrame);
|
||||||
~RenderSystem();
|
~RenderSystem();
|
||||||
|
|
||||||
virtual void Update(double dt) override;
|
virtual void Update(double dt) override;
|
||||||
@@ -29,7 +29,6 @@ private:
|
|||||||
const IRenderer* m_Renderer;
|
const IRenderer* m_Renderer;
|
||||||
RenderFrame* m_RenderFrame;
|
RenderFrame* m_RenderFrame;
|
||||||
Camera* m_Camera;
|
Camera* m_Camera;
|
||||||
World* m_World;
|
|
||||||
EntityWrapper m_CurrentCamera = EntityWrapper::Invalid;
|
EntityWrapper m_CurrentCamera = EntityWrapper::Invalid;
|
||||||
EntityWrapper m_LocalPlayer = EntityWrapper::Invalid;
|
EntityWrapper m_LocalPlayer = EntityWrapper::Invalid;
|
||||||
|
|
||||||
|
|||||||
@@ -4,8 +4,8 @@
|
|||||||
class ExplosionEffectSystem : public PureSystem
|
class ExplosionEffectSystem : public PureSystem
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
ExplosionEffectSystem(World* world, EventBroker* eventBroker)
|
ExplosionEffectSystem(SystemParams params)
|
||||||
: System(world, eventBroker)
|
: System(params)
|
||||||
, PureSystem("ExplosionEffect")
|
, PureSystem("ExplosionEffect")
|
||||||
{ }
|
{ }
|
||||||
|
|
||||||
|
|||||||
+3
-14
@@ -55,24 +55,13 @@ private:
|
|||||||
Octree<EntityAABB>* m_OctreeFrustrumCulling;
|
Octree<EntityAABB>* m_OctreeFrustrumCulling;
|
||||||
SystemPipeline* m_SystemPipeline;
|
SystemPipeline* m_SystemPipeline;
|
||||||
RenderFrame* m_RenderFrame;
|
RenderFrame* m_RenderFrame;
|
||||||
// Network variables
|
Network* m_Network = nullptr;
|
||||||
boost::thread m_NetworkThread;
|
|
||||||
|
|
||||||
// Network methods
|
bool m_IsClient = false;
|
||||||
void networkFunction();
|
bool m_IsServer = false;
|
||||||
Network* m_ClientOrServer;
|
|
||||||
bool m_IsClientOrServer = false;
|
|
||||||
|
|
||||||
// Sound
|
// Sound
|
||||||
SoundSystem* m_SoundSystem;
|
SoundSystem* m_SoundSystem;
|
||||||
|
|
||||||
//EventRelay<Game, Events::InputCommand> m_EInputCommand;
|
|
||||||
//bool debugOnInputCommand(const Events::InputCommand& e);
|
|
||||||
|
|
||||||
void debugInitialize();
|
|
||||||
void debugTick(double dt);
|
|
||||||
EventRelay<Client, Events::KeyDown> m_EKeyDown;
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ class CapturePointSystem : public PureSystem
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
//WARNING: on new map, destroy all info in the vectors, as well as reset all variables (just make new?)
|
//WARNING: on new map, destroy all info in the vectors, as well as reset all variables (just make new?)
|
||||||
CapturePointSystem(World* world, EventBroker* eventBroker);
|
CapturePointSystem(SystemParams params);
|
||||||
|
|
||||||
//updatecomponent
|
//updatecomponent
|
||||||
virtual void UpdateComponent(EntityWrapper& entity, ComponentWrapper& capturePoint, double dt) override;
|
virtual void UpdateComponent(EntityWrapper& entity, ComponentWrapper& capturePoint, double dt) override;
|
||||||
|
|||||||
@@ -16,7 +16,7 @@
|
|||||||
class HealthSystem : public PureSystem
|
class HealthSystem : public PureSystem
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
HealthSystem(World* world, EventBroker* eventBroker);
|
HealthSystem(SystemParams params);
|
||||||
|
|
||||||
//updatecomponent
|
//updatecomponent
|
||||||
virtual void UpdateComponent(EntityWrapper& entity, ComponentWrapper& component, double dt) override;
|
virtual void UpdateComponent(EntityWrapper& entity, ComponentWrapper& component, double dt) override;
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ class InterpolationSystem : public PureSystem
|
|||||||
float interpolationTime;
|
float interpolationTime;
|
||||||
};
|
};
|
||||||
public:
|
public:
|
||||||
InterpolationSystem(World* world, EventBroker* eventBroker);
|
InterpolationSystem(SystemParams params);
|
||||||
~InterpolationSystem() { }
|
~InterpolationSystem() { }
|
||||||
virtual void UpdateComponent(EntityWrapper& entity, ComponentWrapper& transform, double dt) override;
|
virtual void UpdateComponent(EntityWrapper& entity, ComponentWrapper& transform, double dt) override;
|
||||||
private:
|
private:
|
||||||
|
|||||||
@@ -6,8 +6,8 @@
|
|||||||
class LifetimeSystem : public ImpureSystem, PureSystem
|
class LifetimeSystem : public ImpureSystem, PureSystem
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
LifetimeSystem(World* world, EventBroker* eventBroker)
|
LifetimeSystem(SystemParams params)
|
||||||
: System(world, eventBroker)
|
: System(params)
|
||||||
, PureSystem("Lifetime")
|
, PureSystem("Lifetime")
|
||||||
{ }
|
{ }
|
||||||
|
|
||||||
|
|||||||
@@ -6,18 +6,14 @@
|
|||||||
#include "../../Engine/Rendering/ESetCamera.h"
|
#include "../../Engine/Rendering/ESetCamera.h"
|
||||||
#include <imgui/imgui.h>
|
#include <imgui/imgui.h>
|
||||||
|
|
||||||
class PlayerHUD : public ImpureSystem
|
class PlayerHUDSystem : public ImpureSystem
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
PlayerHUD(World* world, EventBroker* eventBrokerer);
|
PlayerHUDSystem(SystemParams params)
|
||||||
~PlayerHUD();
|
: System(params)
|
||||||
|
{ }
|
||||||
|
|
||||||
virtual void Update(double dt) override;
|
virtual void Update(double dt) override;
|
||||||
|
|
||||||
private:
|
|
||||||
World* m_World;
|
|
||||||
EventBroker* m_EventBroker;
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
@@ -8,7 +8,7 @@
|
|||||||
class PlayerMovementSystem : public ImpureSystem, PureSystem
|
class PlayerMovementSystem : public ImpureSystem, PureSystem
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
PlayerMovementSystem(World* world, EventBroker* eventBroker);
|
PlayerMovementSystem(SystemParams params);
|
||||||
~PlayerMovementSystem();
|
~PlayerMovementSystem();
|
||||||
|
|
||||||
virtual void Update(double dt) override;
|
virtual void Update(double dt) override;
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
class PlayerSpawnSystem : public ImpureSystem
|
class PlayerSpawnSystem : public ImpureSystem
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
PlayerSpawnSystem(World* world, EventBroker* eventBroker);
|
PlayerSpawnSystem(SystemParams params);
|
||||||
|
|
||||||
virtual void Update(double dt) override;
|
virtual void Update(double dt) override;
|
||||||
|
|
||||||
|
|||||||
@@ -4,8 +4,8 @@
|
|||||||
class RaptorCopterSystem : public PureSystem
|
class RaptorCopterSystem : public PureSystem
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
RaptorCopterSystem(World* world, EventBroker* eventBroker)
|
RaptorCopterSystem(SystemParams params)
|
||||||
: System(world, eventBroker)
|
: System(params)
|
||||||
, PureSystem("RaptorCopter")
|
, PureSystem("RaptorCopter")
|
||||||
{ }
|
{ }
|
||||||
|
|
||||||
|
|||||||
@@ -13,7 +13,7 @@
|
|||||||
class SpawnerSystem : public System
|
class SpawnerSystem : public System
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
SpawnerSystem(World* world, EventBroker* eventBroker);
|
SpawnerSystem(SystemParams params);
|
||||||
|
|
||||||
static EntityWrapper Spawn(EntityWrapper spawner, EntityWrapper parent = EntityWrapper::Invalid);
|
static EntityWrapper Spawn(EntityWrapper spawner, EntityWrapper parent = EntityWrapper::Invalid);
|
||||||
|
|
||||||
|
|||||||
@@ -21,7 +21,7 @@
|
|||||||
class WeaponSystem : public ImpureSystem
|
class WeaponSystem : public ImpureSystem
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
WeaponSystem(World* world, EventBroker* eventBroker, IRenderer* renderer);
|
WeaponSystem(SystemParams params, IRenderer* renderer);
|
||||||
|
|
||||||
virtual void Update(double dt) override;
|
virtual void Update(double dt) override;
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
#include "Core/UniformScaleSystem.h"
|
#include "Core/UniformScaleSystem.h"
|
||||||
|
|
||||||
UniformScaleSystem::UniformScaleSystem(World* world, EventBroker* eventBroker)
|
UniformScaleSystem::UniformScaleSystem(SystemParams params)
|
||||||
: System(world, eventBroker)
|
: System(params)
|
||||||
, PureSystem("UniformScale")
|
, PureSystem("UniformScale")
|
||||||
{
|
{
|
||||||
EVENT_SUBSCRIBE_MEMBER(m_ESetCamera, &UniformScaleSystem::OnSetCamera);
|
EVENT_SUBSCRIBE_MEMBER(m_ESetCamera, &UniformScaleSystem::OnSetCamera);
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
#include "Editor/EditorRenderSystem.h"
|
#include "Editor/EditorRenderSystem.h"
|
||||||
|
|
||||||
EditorRenderSystem::EditorRenderSystem(World* m_World, EventBroker* eventBroker, IRenderer* renderer, RenderFrame* renderFrame)
|
EditorRenderSystem::EditorRenderSystem(SystemParams params, IRenderer* renderer, RenderFrame* renderFrame)
|
||||||
: System(m_World, eventBroker)
|
: System(params)
|
||||||
, m_Renderer(renderer)
|
, m_Renderer(renderer)
|
||||||
, m_RenderFrame(renderFrame)
|
, m_RenderFrame(renderFrame)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -3,13 +3,13 @@
|
|||||||
#include "Editor/EditorRenderSystem.h"
|
#include "Editor/EditorRenderSystem.h"
|
||||||
#include "Editor/EditorWidgetSystem.h"
|
#include "Editor/EditorWidgetSystem.h"
|
||||||
|
|
||||||
EditorSystem::EditorSystem(World* world, EventBroker* eventBroker, IRenderer* renderer, RenderFrame* renderFrame)
|
EditorSystem::EditorSystem(SystemParams params, IRenderer* renderer, RenderFrame* renderFrame)
|
||||||
: System(world, eventBroker)
|
: System(params)
|
||||||
, m_Renderer(renderer)
|
, m_Renderer(renderer)
|
||||||
, m_RenderFrame(renderFrame)
|
, m_RenderFrame(renderFrame)
|
||||||
{
|
{
|
||||||
m_EditorWorld = new World();
|
m_EditorWorld = new World();
|
||||||
m_EditorWorldSystemPipeline = new SystemPipeline(m_EditorWorld, eventBroker);
|
m_EditorWorldSystemPipeline = new SystemPipeline(m_EditorWorld, m_EventBroker, IsClient, IsServer);
|
||||||
m_EditorWorldSystemPipeline->AddSystem<UniformScaleSystem>(0);
|
m_EditorWorldSystemPipeline->AddSystem<UniformScaleSystem>(0);
|
||||||
m_EditorWorldSystemPipeline->AddSystem<EditorWidgetSystem>(0, m_Renderer);
|
m_EditorWorldSystemPipeline->AddSystem<EditorWidgetSystem>(0, m_Renderer);
|
||||||
m_EditorWorldSystemPipeline->AddSystem<EditorRenderSystem>(1, m_Renderer, m_RenderFrame);
|
m_EditorWorldSystemPipeline->AddSystem<EditorRenderSystem>(1, m_Renderer, m_RenderFrame);
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
#include "Editor/EditorWidgetSystem.h"
|
#include "Editor/EditorWidgetSystem.h"
|
||||||
|
|
||||||
EditorWidgetSystem::EditorWidgetSystem(World* world, EventBroker* eventBroker, IRenderer* renderer)
|
EditorWidgetSystem::EditorWidgetSystem(SystemParams params, IRenderer* renderer)
|
||||||
: System(world, eventBroker)
|
: System(params)
|
||||||
, PureSystem("EditorWidget")
|
, PureSystem("EditorWidget")
|
||||||
, m_Renderer(renderer)
|
, m_Renderer(renderer)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,10 +1,9 @@
|
|||||||
#include "Rendering/RenderSystem.h"
|
#include "Rendering/RenderSystem.h"
|
||||||
|
|
||||||
RenderSystem::RenderSystem(World* world, EventBroker* eventBroker, const IRenderer* renderer, RenderFrame* renderFrame)
|
RenderSystem::RenderSystem(SystemParams params, const IRenderer* renderer, RenderFrame* renderFrame)
|
||||||
: System(world, eventBroker)
|
: System(params)
|
||||||
, m_Renderer(renderer)
|
, m_Renderer(renderer)
|
||||||
, m_RenderFrame(renderFrame)
|
, m_RenderFrame(renderFrame)
|
||||||
, m_World(world)
|
|
||||||
{
|
{
|
||||||
EVENT_SUBSCRIBE_MEMBER(m_ESetCamera, &RenderSystem::OnSetCamera);
|
EVENT_SUBSCRIBE_MEMBER(m_ESetCamera, &RenderSystem::OnSetCamera);
|
||||||
EVENT_SUBSCRIBE_MEMBER(m_EInputCommand, &RenderSystem::OnInputCommand);
|
EVENT_SUBSCRIBE_MEMBER(m_EInputCommand, &RenderSystem::OnInputCommand);
|
||||||
|
|||||||
+21
-34
@@ -11,7 +11,7 @@
|
|||||||
#include "Core/EntityFileWriter.h"
|
#include "Core/EntityFileWriter.h"
|
||||||
#include "Game/Systems/CapturePointSystem.h"
|
#include "Game/Systems/CapturePointSystem.h"
|
||||||
#include "Game/Systems/WeaponSystem.h"
|
#include "Game/Systems/WeaponSystem.h"
|
||||||
#include "Game/Systems/PlayerHUD.h"
|
#include "Game/Systems/PlayerHUDSystem.h"
|
||||||
#include "Game/Systems/LifetimeSystem.h"
|
#include "Game/Systems/LifetimeSystem.h"
|
||||||
#include "../Engine/Rendering/AnimationSystem.h"
|
#include "../Engine/Rendering/AnimationSystem.h"
|
||||||
|
|
||||||
@@ -71,13 +71,25 @@ Game::Game(int argc, char* argv[])
|
|||||||
fp.MergeEntities(m_World);
|
fp.MergeEntities(m_World);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Initialize network
|
||||||
|
if (m_Config->Get<bool>("Networking.StartNetwork", false)) {
|
||||||
|
bool isServer = m_Config->Get<bool>("Networking.IsServer", false);
|
||||||
|
if (isServer) {
|
||||||
|
m_Network = new Server();
|
||||||
|
m_IsServer = true;
|
||||||
|
} else {
|
||||||
|
m_Network = new Client(m_Config);
|
||||||
|
m_IsClient = true;
|
||||||
|
}
|
||||||
|
m_Network->Start(m_World, m_EventBroker);
|
||||||
|
}
|
||||||
|
|
||||||
// Create Octrees
|
// Create Octrees
|
||||||
m_OctreeCollision = new Octree<EntityAABB>(AABB(glm::vec3(-100), glm::vec3(100)), 4);
|
m_OctreeCollision = new Octree<EntityAABB>(AABB(glm::vec3(-100), glm::vec3(100)), 4);
|
||||||
m_OctreeTrigger = new Octree<EntityAABB>(AABB(glm::vec3(-100), glm::vec3(100)), 4);
|
m_OctreeTrigger = new Octree<EntityAABB>(AABB(glm::vec3(-100), glm::vec3(100)), 4);
|
||||||
m_OctreeFrustrumCulling = new Octree<EntityAABB>(AABB(glm::vec3(-100), glm::vec3(100)), 4);
|
m_OctreeFrustrumCulling = new Octree<EntityAABB>(AABB(glm::vec3(-100), glm::vec3(100)), 4);
|
||||||
// Create system pipeline
|
// Create system pipeline
|
||||||
m_SystemPipeline = new SystemPipeline(m_World, m_EventBroker);
|
m_SystemPipeline = new SystemPipeline(m_World, m_EventBroker, m_IsClient, m_IsServer);
|
||||||
|
|
||||||
// All systems with orderlevel 0 will be updated first.
|
// All systems with orderlevel 0 will be updated first.
|
||||||
unsigned int updateOrderLevel = 0;
|
unsigned int updateOrderLevel = 0;
|
||||||
@@ -95,7 +107,7 @@ Game::Game(int argc, char* argv[])
|
|||||||
++updateOrderLevel;
|
++updateOrderLevel;
|
||||||
m_SystemPipeline->AddSystem<CollidableOctreeSystem>(updateOrderLevel, m_OctreeCollision, "Collidable");
|
m_SystemPipeline->AddSystem<CollidableOctreeSystem>(updateOrderLevel, m_OctreeCollision, "Collidable");
|
||||||
m_SystemPipeline->AddSystem<CollidableOctreeSystem>(updateOrderLevel, m_OctreeTrigger, "Player");
|
m_SystemPipeline->AddSystem<CollidableOctreeSystem>(updateOrderLevel, m_OctreeTrigger, "Player");
|
||||||
m_SystemPipeline->AddSystem<PlayerHUD>(updateOrderLevel);
|
m_SystemPipeline->AddSystem<PlayerHUDSystem>(updateOrderLevel);
|
||||||
m_SystemPipeline->AddSystem<AnimationSystem>(updateOrderLevel);
|
m_SystemPipeline->AddSystem<AnimationSystem>(updateOrderLevel);
|
||||||
|
|
||||||
// Collision and TriggerSystem should update after player.
|
// Collision and TriggerSystem should update after player.
|
||||||
@@ -107,12 +119,6 @@ Game::Game(int argc, char* argv[])
|
|||||||
++updateOrderLevel;
|
++updateOrderLevel;
|
||||||
m_SystemPipeline->AddSystem<EditorSystem>(updateOrderLevel, m_Renderer, m_RenderFrame);
|
m_SystemPipeline->AddSystem<EditorSystem>(updateOrderLevel, m_Renderer, m_RenderFrame);
|
||||||
|
|
||||||
// Invoke network
|
|
||||||
if (m_Config->Get<bool>("Networking.StartNetwork", false)) {
|
|
||||||
//boost::thread workerThread(&Game::networkFunction, this);
|
|
||||||
networkFunction();
|
|
||||||
}
|
|
||||||
|
|
||||||
// Invoke sound system
|
// Invoke sound system
|
||||||
m_SoundSystem = new SoundSystem(m_World, m_EventBroker, m_Config->Get<bool>("Debug.EditorEnabled", false));
|
m_SoundSystem = new SoundSystem(m_World, m_EventBroker, m_Config->Get<bool>("Debug.EditorEnabled", false));
|
||||||
|
|
||||||
@@ -126,6 +132,9 @@ Game::~Game()
|
|||||||
delete m_OctreeFrustrumCulling;
|
delete m_OctreeFrustrumCulling;
|
||||||
delete m_OctreeCollision;
|
delete m_OctreeCollision;
|
||||||
delete m_OctreeTrigger;
|
delete m_OctreeTrigger;
|
||||||
|
if (m_Network != nullptr) {
|
||||||
|
delete m_Network;
|
||||||
|
}
|
||||||
delete m_World;
|
delete m_World;
|
||||||
delete m_FrameStack;
|
delete m_FrameStack;
|
||||||
delete m_InputProxy;
|
delete m_InputProxy;
|
||||||
@@ -154,39 +163,17 @@ void Game::Tick()
|
|||||||
m_EventBroker->Swap();
|
m_EventBroker->Swap();
|
||||||
|
|
||||||
// Update network
|
// Update network
|
||||||
if (m_IsClientOrServer) {
|
if (m_Network != nullptr) {
|
||||||
m_ClientOrServer->Update();
|
m_Network->Update();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Iterate through systems and update world!
|
// Iterate through systems and update world!
|
||||||
m_EventBroker->Process<SystemPipeline>();
|
m_EventBroker->Process<SystemPipeline>();
|
||||||
m_SystemPipeline->Update(dt);
|
m_SystemPipeline->Update(dt);
|
||||||
debugTick(dt);
|
|
||||||
m_Renderer->Update(dt);
|
m_Renderer->Update(dt);
|
||||||
m_SoundSystem->Update(dt);
|
m_SoundSystem->Update(dt);
|
||||||
GLERROR("Game::Tick m_RenderQueueFactory->Update");
|
|
||||||
m_Renderer->Draw(*m_RenderFrame);
|
m_Renderer->Draw(*m_RenderFrame);
|
||||||
m_RenderFrame->Clear();
|
m_RenderFrame->Clear();
|
||||||
GLERROR("Game::Tick m_Renderer->Draw");
|
|
||||||
m_EventBroker->Swap();
|
m_EventBroker->Swap();
|
||||||
m_EventBroker->Clear();
|
m_EventBroker->Clear();
|
||||||
}
|
|
||||||
|
|
||||||
void Game::debugTick(double dt)
|
|
||||||
{
|
|
||||||
m_EventBroker->Process<Game>();
|
|
||||||
}
|
|
||||||
|
|
||||||
void Game::networkFunction()
|
|
||||||
{
|
|
||||||
bool isServer = m_Config->Get<bool>("Networking.IsServer", false);
|
|
||||||
if (!isServer) {
|
|
||||||
m_IsClientOrServer = true;
|
|
||||||
m_ClientOrServer = new Client(m_Config);
|
|
||||||
}
|
|
||||||
if (isServer) {
|
|
||||||
m_IsClientOrServer = true;
|
|
||||||
m_ClientOrServer = new Server();
|
|
||||||
}
|
|
||||||
m_ClientOrServer->Start(m_World, m_EventBroker);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -1,8 +1,8 @@
|
|||||||
#include "Systems/CapturePointSystem.h"
|
#include "Systems/CapturePointSystem.h"
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
|
|
||||||
CapturePointSystem::CapturePointSystem(World* world, EventBroker* eventBroker)
|
CapturePointSystem::CapturePointSystem(SystemParams params)
|
||||||
: System(world, eventBroker)
|
: System(params)
|
||||||
, PureSystem("CapturePoint")
|
, PureSystem("CapturePoint")
|
||||||
{
|
{
|
||||||
//subscribe/listenTo playerdamage,healthpickup events (using the eventBroker)
|
//subscribe/listenTo playerdamage,healthpickup events (using the eventBroker)
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
#include "Systems/HealthSystem.h"
|
#include "Systems/HealthSystem.h"
|
||||||
|
|
||||||
HealthSystem::HealthSystem(World* m_World, EventBroker* eventBroker)
|
HealthSystem::HealthSystem(SystemParams params)
|
||||||
: System(m_World, eventBroker)
|
: System(params)
|
||||||
, PureSystem("Health")
|
, PureSystem("Health")
|
||||||
{
|
{
|
||||||
//subscribe/listenTo playerdamage,healthpickup events (using the eventBroker)
|
//subscribe/listenTo playerdamage,healthpickup events (using the eventBroker)
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
#include "Systems/InterpolationSystem.h"
|
#include "Systems/InterpolationSystem.h"
|
||||||
|
|
||||||
InterpolationSystem::InterpolationSystem(World* world, EventBroker* eventBroker)
|
InterpolationSystem::InterpolationSystem(SystemParams params)
|
||||||
: System(world, eventBroker)
|
: System(params)
|
||||||
, PureSystem("Transform")
|
, PureSystem("Transform")
|
||||||
{
|
{
|
||||||
ConfigFile* config = ResourceManager::Load<ConfigFile>("Config.ini");
|
ConfigFile* config = ResourceManager::Load<ConfigFile>("Config.ini");
|
||||||
|
|||||||
@@ -1,21 +1,6 @@
|
|||||||
#include "Game/Systems/PlayerHUD.h"
|
#include "Game/Systems/PlayerHUDSystem.h"
|
||||||
|
|
||||||
PlayerHUD::PlayerHUD(World* world, EventBroker* eventBrokerer)
|
void PlayerHUDSystem::Update(double dt)
|
||||||
:System(world, eventBrokerer)
|
|
||||||
, m_World(world)
|
|
||||||
, m_EventBroker(eventBrokerer)
|
|
||||||
{
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
PlayerHUD::~PlayerHUD()
|
|
||||||
{
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
void PlayerHUD::Update(double dt)
|
|
||||||
{
|
{
|
||||||
auto healthHUDs = m_World->GetComponents("HealthHUD");
|
auto healthHUDs = m_World->GetComponents("HealthHUD");
|
||||||
if (healthHUDs == nullptr) {
|
if (healthHUDs == nullptr) {
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
#include "Systems/PlayerMovementSystem.h"
|
#include "Systems/PlayerMovementSystem.h"
|
||||||
|
|
||||||
PlayerMovementSystem::PlayerMovementSystem(World* world, EventBroker* eventBroker)
|
PlayerMovementSystem::PlayerMovementSystem(SystemParams params)
|
||||||
: System(world, eventBroker)
|
: System(params)
|
||||||
, PureSystem("Player")
|
, PureSystem("Player")
|
||||||
{
|
{
|
||||||
EVENT_SUBSCRIBE_MEMBER(m_EPlayerSpawned, &PlayerMovementSystem::OnPlayerSpawned);
|
EVENT_SUBSCRIBE_MEMBER(m_EPlayerSpawned, &PlayerMovementSystem::OnPlayerSpawned);
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
#include "Systems/PlayerSpawnSystem.h"
|
#include "Systems/PlayerSpawnSystem.h"
|
||||||
|
|
||||||
PlayerSpawnSystem::PlayerSpawnSystem(World* m_World, EventBroker* eventBroker)
|
PlayerSpawnSystem::PlayerSpawnSystem(SystemParams params)
|
||||||
: System(m_World, eventBroker)
|
: System(params)
|
||||||
{
|
{
|
||||||
EVENT_SUBSCRIBE_MEMBER(m_OnInputCommand, &PlayerSpawnSystem::OnInputCommand);
|
EVENT_SUBSCRIBE_MEMBER(m_OnInputCommand, &PlayerSpawnSystem::OnInputCommand);
|
||||||
EVENT_SUBSCRIBE_MEMBER(m_OnPlayerSpawnerd, &PlayerSpawnSystem::OnPlayerSpawned);
|
EVENT_SUBSCRIBE_MEMBER(m_OnPlayerSpawnerd, &PlayerSpawnSystem::OnPlayerSpawned);
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
#include "Systems/SpawnerSystem.h"
|
#include "Systems/SpawnerSystem.h"
|
||||||
|
|
||||||
SpawnerSystem::SpawnerSystem(World* world, EventBroker* eventBroker)
|
SpawnerSystem::SpawnerSystem(SystemParams params)
|
||||||
: System(world, eventBroker)
|
: System(params)
|
||||||
{
|
{
|
||||||
EVENT_SUBSCRIBE_MEMBER(m_OnSpawnerSpawn, &SpawnerSystem::OnSpawnerSpawn);
|
EVENT_SUBSCRIBE_MEMBER(m_OnSpawnerSpawn, &SpawnerSystem::OnSpawnerSpawn);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
#include "Systems/WeaponSystem.h"
|
#include "Systems/WeaponSystem.h"
|
||||||
|
|
||||||
WeaponSystem::WeaponSystem(World* world, EventBroker* eventBroker, IRenderer* renderer)
|
WeaponSystem::WeaponSystem(SystemParams params, IRenderer* renderer)
|
||||||
: System(world, eventBroker)
|
: System(params)
|
||||||
, ImpureSystem()
|
, ImpureSystem()
|
||||||
, m_Renderer(renderer)
|
, m_Renderer(renderer)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user