![]() |
Divide Framework 0.1
A free and open-source 3D Framework under heavy development
|
#include <SystemManager.h>
Public Member Functions | |
SystemManager () | |
~SystemManager () override | |
template<class Predicate > | |
void | ForEachSystem (Predicate &&pred) |
template<class T , class... ARGS> | |
T * | AddSystem (ECSEngine &engine, ARGS &&... systemArgs) |
template<class System_ , class Dependency_ > | |
void | AddSystemDependency (System_ target, Dependency_ dependency) |
template<class Target_ , class Dependency_ , class... Dependencies> | |
void | AddSystemDependency (Target_ target, Dependency_ dependency, Dependencies &&... dependencies) |
void | UpdateSystemWorkOrder () |
template<class T > | |
T * | GetSystem () const |
template<class T > | |
void | EnableSystem () |
template<class T > | |
void | DisableSystem () |
template<class T > | |
void | SetSystemUpdateInterval (f32 interval_ms) |
template<class T > | |
void | SetSystemPriority (SystemPriority newPriority) |
SystemWorkStateMask | GetSystemWorkState () const |
void | SetSystemWorkState (SystemWorkStateMask mask) |
template<class... ActiveSystems> | |
SystemWorkStateMask | GenerateActiveSystemWorkState (ActiveSystems &&... activeSystems) |
Private Types | |
using | SystemDependencyMatrix = eastl::vector< eastl::vector< bool > > |
using | SystemRegistry = eastl::unordered_map< u64, ISystem * > |
using | SystemAllocator = Memory::Allocator::LinearAllocator |
using | SystemWorkOrder = eastl::vector< ISystem * > |
Private Member Functions | |
SystemManager (const SystemManager &)=delete | |
SystemManager & | operator= (SystemManager &)=delete |
void | PreUpdate (f32 dt_ms) |
void | Update (f32 dt_ms) |
void | PostUpdate (f32 dt_ms) |
void | OnFrameStart () |
void | OnFrameEnd () |
![]() | |
GlobalMemoryUser () | |
virtual | ~GlobalMemoryUser () |
const void * | Allocate (size_t memSize, const char *user=nullptr) |
void | Free (void *pMem) |
Private Attributes | |
friend | ECSEngine |
SystemAllocator * | m_SystemAllocator |
SystemRegistry | m_Systems |
SystemDependencyMatrix | m_SystemDependencyMatrix |
SystemWorkOrder | m_SystemWorkOrder |
Definition at line 30 of file SystemManager.h.
Definition at line 41 of file SystemManager.h.
|
private |
Definition at line 38 of file SystemManager.h.
|
private |
Definition at line 40 of file SystemManager.h.
|
private |
Definition at line 43 of file SystemManager.h.
|
privatedelete |
ECS::SystemManager::SystemManager | ( | ) |
Definition at line 17 of file SystemManager.cpp.
|
override |
Definition at line 27 of file SystemManager.cpp.
|
inline |
Fn: template<class T, class... ARGS> T* SystemManager::AddSystem(ARGS&&... systemArgs)
Summary: Adds a new system.
Author: Tobias Stein
Date: 24/09/2017
Typeparams: T - Generic type parameter. ARGS - Type of the arguments. Parameters: systemArgs - Variable arguments providing [in,out] The system arguments.
Definition at line 109 of file SystemManager.h.
|
inline |
Fn: template<class System_, class... Dependencies> void SystemManager::AddSystemDependency(System_ target, Dependencies&&... dependencies)
Summary: Adds a system dependency. This will result in an update of the dependency matrix and re-creation of the systems working order. This method can be quite costly so use it sparsely.
Author: Tobias Stein
Date: 24/09/2017
Typeparams: System_ - Type of the system. Dependencies - Type of the dependencies. Parameters: target - Target for the.
Definition at line 172 of file SystemManager.h.
|
inline |
Definition at line 187 of file SystemManager.h.
|
inline |
Definition at line 261 of file SystemManager.h.
|
inline |
Definition at line 239 of file SystemManager.h.
|
inline |
Definition at line 82 of file SystemManager.h.
|
inline |
Definition at line 354 of file SystemManager.h.
|
inline |
Fn: template<class T> inline T* SystemManager::GetSystem() const
Summary: Gets the system.
Author: Tobias Stein
Date: 24/09/2017
Typeparams: T - Generic type parameter.
Definition at line 230 of file SystemManager.h.
SystemWorkStateMask ECS::SystemManager::GetSystemWorkState | ( | ) | const |
Fn: SystemWorkStateMask SystemManager::GetSystemWorkState() const;
Summary: Returns the current work state of all systems. The returned state mask can be stored in local context and reset a later changed working state of systems.
Author: Tobias Stein
Date: 28/09/2017
Definition at line 231 of file SystemManager.cpp.
|
private |
Definition at line 104 of file SystemManager.cpp.
|
private |
Definition at line 93 of file SystemManager.cpp.
|
privatedelete |
|
private |
Definition at line 81 of file SystemManager.cpp.
|
private |
Fn: void SystemManager::Update(f32 dt_ms);
Summary: Main update cycle.
Author: Tobias Stein
Date: 3/10/2017
Parameters:
Definition at line 46 of file SystemManager.cpp.
|
inline |
Definition at line 299 of file SystemManager.h.
|
inline |
Definition at line 282 of file SystemManager.h.
void ECS::SystemManager::SetSystemWorkState | ( | SystemWorkStateMask | mask | ) |
Fn: void SystemManager::SetSystemWorkState(SystemWorkStateMask mask);
Summary: Resets the current working state of systems by the provided state mask.
Author: Tobias Stein
Date: 28/09/2017
Parameters:
Definition at line 243 of file SystemManager.cpp.
|
private |
Definition at line 65 of file SystemManager.cpp.
void ECS::SystemManager::UpdateSystemWorkOrder | ( | ) |
Fn: void UpdateSystemWorkOrder();
Summary: Updates the work order of all systems. This should be called when changed system priorities or adding new system dependencies.
Author: Tobias Stein
Definition at line 115 of file SystemManager.cpp.
|
private |
Definition at line 32 of file SystemManager.h.
|
private |
Definition at line 45 of file SystemManager.h.
|
private |
Definition at line 49 of file SystemManager.h.
|
private |
Definition at line 47 of file SystemManager.h.
|
private |
Definition at line 51 of file SystemManager.h.