igor::iEntitySystemModule Class Reference

#include <iEntitySystemModule.h>

Inherits igor::iModule< iEntitySystemModule >.

Public Member Functions

iEntityScenePtr createScene (const iaString &name="", const iEntitySceneID &id=iEntitySceneID::getInvalid(), bool addIgorSystems=true)
 
iEntityScenePtr getScene (const iEntitySceneID &sceneID)
 
void insert (iPrefabPtr prefab, iEntityPtr dstEntity)
 
void insert (iEntityPtr srcEntity, iEntityPtr dstEntity)
 
void destroyScene (const iEntitySceneID &sceneID)
 
void onUpdate ()
 
void onPreRender (iEntityScenePtr scene)
 
void onRender (iEntityScenePtr scene)
 
void setSimulationRate (float64 simulationRate)
 
float64 getSimulationRate ()
 
template<typename T >
void registerComponentType (iEntityComponentFactory factoryFunction, const iaString &componentTypeName)
 
void registerSystemType (iEntitySystemFactory factoryFunction, const iaString &systemTypeName)
 
iEntitySystemPtr createSystem (const iaString &systemTypeName) const
 
iEntityComponentMask getComponentMask (const std::type_index &typeID)
 
void activateScene (iEntityScenePtr scene)
 
void deactivateScene (iEntityScenePtr scene)
 
std::vector< iEntityScenePtrgetActiveScenes ()
 
std::vector< iEntityScenePtrgetInactiveScenes ()
 
iCreatedEntityEvent & getCreatedEntityEvent ()
 
iDestroyEntityEvent & getDestroyEntityEvent ()
 
iEntityChangedEvent & getEntityChangedEvent ()
 
iHierarchyChangedEvent & getHierarchyChangedEvent ()
 
iEntityNameChangedEvent & getEntityNameChangedEvent ()
 
void clear ()
 
const std::unordered_map< std::type_index, iEntityComponentTypeInfo > & getRegisteredComponentTypes () const
 
const std::unordered_map< iaString, iEntitySystemTypeInfo > & getRegisteredSystemTypes () const
 
template<typename T >
void registerComponentType (iEntityComponentFactory factoryFunction, const iaString &componentTypeName)
 

Friends

class iModule< iEntitySystemModule >
 
class iEntity
 

Additional Inherited Members

- Static Public Member Functions inherited from igor::iModule< iEntitySystemModule >
static IGOR_INLINE iEntitySystemModulegetInstance ()
 
static IGOR_INLINE bool isInstantiated ()
 
static void createInstance ()
 
static void destroyInstance ()
 
- Protected Member Functions inherited from igor::iModule< iEntitySystemModule >
 iModule ()=default
 
virtual ~iModule ()=default
 

Detailed Description

entity system module

Member Function Documentation

◆ activateScene()

void igor::iEntitySystemModule::activateScene ( iEntityScenePtr  scene)

activates given scene

Parameters
scenethe given scene to activate

◆ clear()

void igor::iEntitySystemModule::clear ( )

clear everything

◆ createScene()

iEntityScenePtr igor::iEntitySystemModule::createScene ( const iaString name = "",
const iEntitySceneID id = iEntitySceneID::getInvalid(),
bool  addIgorSystems = true 
)

creates a scene and returns it

ownership of scenes always stay with module

Parameters
namethe name of the scene
idoptional id to override the generated one
addIgorSystemsif true adds all default igor systems to it. if false there will be no systems added to this scene
Returns
new created scene

◆ createSystem()

iEntitySystemPtr igor::iEntitySystemModule::createSystem ( const iaString systemTypeName) const
Returns
newly created system instance
Parameters
systemTypeNametype of system to create

caller takes ownership

◆ deactivateScene()

void igor::iEntitySystemModule::deactivateScene ( iEntityScenePtr  scene)

deactivates given scene

Parameters
scenethe given scene to deactivate

◆ destroyScene()

void igor::iEntitySystemModule::destroyScene ( const iEntitySceneID sceneID)

destroys scene with given id

Parameters
sceneIDthe given scene id

◆ getActiveScenes()

std::vector< iEntityScenePtr > igor::iEntitySystemModule::getActiveScenes ( )
Returns
all active scenes

◆ getComponentMask()

iEntityComponentMask igor::iEntitySystemModule::getComponentMask ( const std::type_index &  typeID)
Returns
mask for given component type
Parameters
typeIDthe given component type

◆ getCreatedEntityEvent()

iCreatedEntityEvent & igor::iEntitySystemModule::getCreatedEntityEvent ( )
Returns
entity got created event

◆ getDestroyEntityEvent()

iDestroyEntityEvent & igor::iEntitySystemModule::getDestroyEntityEvent ( )
Returns
entity will be destroyed event

◆ getEntityChangedEvent()

iEntityChangedEvent & igor::iEntitySystemModule::getEntityChangedEvent ( )
Returns
entity changed event

◆ getEntityNameChangedEvent()

iEntityNameChangedEvent & igor::iEntitySystemModule::getEntityNameChangedEvent ( )
Returns
entity name changed event

◆ getHierarchyChangedEvent()

iHierarchyChangedEvent & igor::iEntitySystemModule::getHierarchyChangedEvent ( )
Returns
hierarchy changed event

◆ getInactiveScenes()

std::vector< iEntityScenePtr > igor::iEntitySystemModule::getInactiveScenes ( )
Returns
all inactive scenes

◆ getRegisteredComponentTypes()

const std::unordered_map< std::type_index, iEntityComponentTypeInfo > & igor::iEntitySystemModule::getRegisteredComponentTypes ( ) const
Returns
registered component types

◆ getRegisteredSystemTypes()

const std::unordered_map< iaString, iEntitySystemTypeInfo > & igor::iEntitySystemModule::getRegisteredSystemTypes ( ) const
Returns
registered system types

◆ getScene()

iEntityScenePtr igor::iEntitySystemModule::getScene ( const iEntitySceneID sceneID)
Returns
scene for given scene id
Parameters
sceneIDthe given id

◆ getSimulationRate()

float64 igor::iEntitySystemModule::getSimulationRate ( )
Returns
simulation rate

◆ insert() [1/2]

void igor::iEntitySystemModule::insert ( iEntityPtr  srcEntity,
iEntityPtr  dstEntity 
)

insert copy of entity at given entity

This copies entities recursively

Parameters
srcEntitythe entity to copy
dstEntitythe entity to copy to

◆ insert() [2/2]

void igor::iEntitySystemModule::insert ( iPrefabPtr  prefab,
iEntityPtr  dstEntity 
)

insert copy of prefab at given entity

This copies entities recursively

Parameters
prefabthe source scene or prefab to insert
entitythe entity inside the destination scene

◆ onPreRender()

void igor::iEntitySystemModule::onPreRender ( iEntityScenePtr  scene)

triggers pre render update stage with given scene

Parameters
scenethe given scene to update/render

◆ onRender()

void igor::iEntitySystemModule::onRender ( iEntityScenePtr  scene)

triggers render update stage with given scene

Parameters
scenethe given scene to update/render

◆ onUpdate()

void igor::iEntitySystemModule::onUpdate ( )

updates all scenes and cleans up scene lists

◆ registerComponentType() [1/2]

template<typename T >
void igor::iEntitySystemModule::registerComponentType ( iEntityComponentFactory  factoryFunction,
const iaString componentTypeName 
)

registers a component type

Parameters
factoryFunctionfactory function returning instance of given component
componentTypeNamecomponent type name (must be unique)

◆ registerComponentType() [2/2]

template<typename T >
void igor::iEntitySystemModule::registerComponentType ( iEntityComponentFactory  factoryFunction,
const iaString &  componentTypeName 
)

◆ registerSystemType()

void igor::iEntitySystemModule::registerSystemType ( iEntitySystemFactory  factoryFunction,
const iaString systemTypeName 
)

registers a system type

Parameters
factoryFunctionfactory function returning instance of given system
systemTypeNamesystem type name (must be unique)

◆ setSimulationRate()

void igor::iEntitySystemModule::setSimulationRate ( float64  simulationRate)

set's the simulation rate in Hz

default is 60Hz

Parameters
simulationRatesimulation rate in Hz

Friends And Related Function Documentation

◆ iEntity

friend class iEntity
friend

◆ iModule< iEntitySystemModule >

friend class iModule< iEntitySystemModule >
friend

The documentation for this class was generated from the following files: