XII Release 0.1.0
Loading...
Searching...
No Matches
xiiComponentManagerBase Class Referenceabstract

Copyright (c) Theophilus Eriata. All Rights Reserved. More...

#include <ComponentManager.h>

Inheritance diagram for xiiComponentManagerBase:
[legend]

Public Member Functions

bool IsValidComponent (const xiiComponentHandle &hComponent) const
 Checks whether the given handle references a valid component.
bool TryGetComponent (const xiiComponentHandle &hComponent, xiiComponent *&out_pComponent)
 Returns if a component with the given handle exists and if so writes out the corresponding pointer to out_pComponent.
bool TryGetComponent (const xiiComponentHandle &hComponent, const xiiComponent *&out_pComponent) const
 Returns if a component with the given handle exists and if so writes out the corresponding pointer to out_pComponent.
xiiUInt32 GetComponentCount () const
 Returns the number of components managed by this manager.
xiiComponentHandle CreateComponent (xiiGameObject *pOwnerObject)
 Create a new component instance and returns a handle to it.
template<typename ComponentType>
xiiTypedComponentHandle< ComponentType > CreateComponent (xiiGameObject *pOwnerObject, ComponentType *&out_pComponent)
 Create a new component instance and returns a handle to it.
void DeleteComponent (const xiiComponentHandle &hComponent)
 Deletes the given component. Note that the component will be invalidated first and the actual deletion is postponed.
void DeleteComponent (xiiComponent *pComponent)
 Deletes the given component. Note that the component will be invalidated first and the actual deletion is postponed.
virtual void CollectAllComponents (xiiDynamicArray< xiiComponentHandle > &out_allComponents, bool bOnlyActive)=0
virtual void CollectAllComponents (xiiDynamicArray< xiiComponent * > &out_allComponents, bool bOnlyActive)=0
template<typename ComponentType>
XII_ALWAYS_INLINE xiiTypedComponentHandle< ComponentType > CreateComponent (xiiGameObject *pOwnerObject, ComponentType *&out_pComponent)
Public Member Functions inherited from xiiWorldModule
xiiWorld * GetWorld ()
 Returns the corresponding world to this module.
const xiiWorld * GetWorld () const
 Returns the corresponding world to this module.
xiiUInt32 GetWorldIndex () const
 Same as GetWorld()->GetIndex(). Needed to break circular include dependencies.
Public Member Functions inherited from xiiReflectedClass
virtual const xiiRTTI * GetDynamicRTTI () const
bool IsInstanceOf (const xiiRTTI *pType) const
 Returns whether the type of this instance is of the given type or derived from it.
template<typename T>
XII_ALWAYS_INLINE bool IsInstanceOf () const
 Returns whether the type of this instance is of the given type or derived from it.

Protected Member Functions

 xiiComponentManagerBase (xiiWorld *pWorld)
Protected Member Functions inherited from xiiWorldModule
 xiiWorldModule (xiiWorld *pWorld)
void RegisterUpdateFunction (const UpdateFunctionDesc &desc)
 Registers the given update function at the world.
void DeregisterUpdateFunction (const UpdateFunctionDesc &desc)
xiiAllocator * GetAllocator ()
 Returns the allocator used by the world.
xiiInternal::WorldLargeBlockAllocator * GetBlockAllocator ()
 Returns the block allocator used by the world.
bool GetWorldSimulationEnabled () const
 Returns whether the world simulation is enabled.
virtual void Initialize ()
virtual void Deinitialize ()
 This method is called before the destructor. A derived type can override this method to do deinitialization work.
virtual void OnSimulationStarted ()
virtual void WorldClear ()
 Called by xiiWorld::Clear(). Can be used to clear cached data when a world is completely cleared of objects (but not deleted).

Protected Attributes

xiiIdTable< xiiComponentId, xiiComponent * > m_Components
Protected Attributes inherited from xiiWorldModule
xiiWorld *const m_pWorld

Additional Inherited Members

Static Public Member Functions inherited from xiiNoBase
static const xiiRTTI * GetStaticRTTI ()
Protected Types inherited from xiiWorldModule
using UpdateFunction = xiiDelegate<void(const UpdateContext&)>
 Update function delegate.

Detailed Description

Copyright (c) Theophilus Eriata. All Rights Reserved.

Base class for all component managers. Do not derive directly from this class, but derive from xiiComponentManager instead.

Every component type has its corresponding manager type. The manager stores the components in memory blocks to minimize overhead on creation and deletion of components. Each manager can also register update functions to update its components during the different update phases of xiiWorld. Use xiiWorld::CreateComponentManager to create an instance of a component manager within a specific world.

Member Function Documentation

◆ CollectAllComponents() [1/2]

virtual void xiiComponentManagerBase::CollectAllComponents ( xiiDynamicArray< xiiComponent * > & out_allComponents,
bool bOnlyActive )
pure virtual

Adds all components that this manager handles to the given array (array is not cleared). Prefer to use more efficient methods on derived classes, only use this if you need to go through a xiiComponentManagerBase pointer.

Implemented in xiiComponentManager< T, StorageType >, xiiComponentManager< class xiiAlwaysVisibleComponent, xiiBlockStorageType::Compact >, xiiComponentManager< class xiiCollectionComponent, xiiBlockStorageType::Compact >, xiiComponentManager< class xiiCommentComponent, xiiBlockStorageType::Compact >, xiiComponentManager< class xiiDebugTextComponent, xiiBlockStorageType::Compact >, xiiComponentManager< class xiiDecalComponent, xiiBlockStorageType::Compact >, xiiComponentManager< class xiiDirectionalLightComponent, xiiBlockStorageType::Compact >, xiiComponentManager< class xiiDiscAreaLightComponent, xiiBlockStorageType::Compact >, xiiComponentManager< class xiiDynamicMeshComponent, xiiBlockStorageType::Compact >, xiiComponentManager< class xiiForwardEventsToGameStateComponent, xiiBlockStorageType::Compact >, xiiComponentManager< class xiiGlobalBlackboardComponent, xiiBlockStorageType::Compact >, xiiComponentManager< class xiiGrabbableItemComponent, xiiBlockStorageType::Compact >, xiiComponentManager< class xiiInstancedMeshComponent, xiiBlockStorageType::Compact >, xiiComponentManager< class xiiLocalBlackboardComponent, xiiBlockStorageType::Compact >, xiiComponentManager< class xiiLODMeshComponent, xiiBlockStorageType::Compact >, xiiComponentManager< class xiiMarkerComponent, xiiBlockStorageType::Compact >, xiiComponentManager< class xiiMeshComponent, xiiBlockStorageType::Compact >, xiiComponentManager< class xiiParticleColliderComponent, xiiBlockStorageType::FreeList >, xiiComponentManager< class xiiParticleEmitterComponent, xiiBlockStorageType::FreeList >, xiiComponentManager< class xiiParticleForceFieldComponent, xiiBlockStorageType::FreeList >, xiiComponentManager< class xiiParticleMolecularDynamicsComponent, xiiBlockStorageType::FreeList >, xiiComponentManager< class xiiParticleRendererComponent, xiiBlockStorageType::FreeList >, xiiComponentManager< class xiiParticleSimulationDomainComponent, xiiBlockStorageType::FreeList >, xiiComponentManager< class xiiParticleSystemComponent, xiiBlockStorageType::FreeList >, xiiComponentManager< class xiiPlayerStartPointComponent, xiiBlockStorageType::Compact >, xiiComponentManager< class xiiPointLightComponent, xiiBlockStorageType::Compact >, xiiComponentManager< class xiiPostProcessVolumeComponent, xiiBlockStorageType::Compact >, xiiComponentManager< class xiiRectangleAreaLightComponent, xiiBlockStorageType::Compact >, xiiComponentManager< class xiiReflectionCaptureComponent, xiiBlockStorageType::Compact >, xiiComponentManager< class xiiScriptComponent, xiiBlockStorageType::FreeList >, xiiComponentManager< class xiiShapeIconComponent, xiiBlockStorageType::Compact >, xiiComponentManager< class xiiSkinnedMeshComponent, xiiBlockStorageType::Compact >, xiiComponentManager< class xiiSkyAtmosphereComponent, xiiBlockStorageType::Compact >, xiiComponentManager< class xiiSpawnBoxComponent, xiiBlockStorageType::Compact >, xiiComponentManager< class xiiSpawnComponent, xiiBlockStorageType::Compact >, xiiComponentManager< class xiiSphereAreaLightComponent, xiiBlockStorageType::Compact >, xiiComponentManager< class xiiSpotLightComponent, xiiBlockStorageType::Compact >, xiiComponentManager< class xiiStaticMeshComponent, xiiBlockStorageType::Compact >, xiiComponentManager< class xiiTimedDeathComponent, xiiBlockStorageType::Compact >, xiiComponentManager< class xiiTriggerDelayModifierComponent, xiiBlockStorageType::Compact >, xiiComponentManager< class xiiTubeAreaLightComponent, xiiBlockStorageType::Compact >, xiiComponentManager< class xiiVolumeBoxComponent, xiiBlockStorageType::Compact >, xiiComponentManager< class xiiVolumeSphereComponent, xiiBlockStorageType::Compact >, xiiComponentManager< class xiiVolumetricCloudComponent, xiiBlockStorageType::Compact >, xiiSettingsComponentManager< ComponentType >, and xiiSettingsComponentManager< class xiiRenderWorldSettingsComponent >.

◆ CollectAllComponents() [2/2]

virtual void xiiComponentManagerBase::CollectAllComponents ( xiiDynamicArray< xiiComponentHandle > & out_allComponents,
bool bOnlyActive )
pure virtual

Adds all components that this manager handles to the given array (array is not cleared). Prefer to use more efficient methods on derived classes, only use this if you need to go through a xiiComponentManagerBase pointer.

Implemented in xiiComponentManager< T, StorageType >, xiiComponentManager< class xiiAlwaysVisibleComponent, xiiBlockStorageType::Compact >, xiiComponentManager< class xiiCameraComponent, xiiBlockStorageType::Compact >, xiiComponentManager< class xiiCollectionComponent, xiiBlockStorageType::Compact >, xiiComponentManager< class xiiCommentComponent, xiiBlockStorageType::Compact >, xiiComponentManager< class xiiDebugTextComponent, xiiBlockStorageType::Compact >, xiiComponentManager< class xiiDecalComponent, xiiBlockStorageType::Compact >, xiiComponentManager< class xiiDirectionalLightComponent, xiiBlockStorageType::Compact >, xiiComponentManager< class xiiDiscAreaLightComponent, xiiBlockStorageType::Compact >, xiiComponentManager< class xiiDynamicMeshComponent, xiiBlockStorageType::Compact >, xiiComponentManager< class xiiForwardEventsToGameStateComponent, xiiBlockStorageType::Compact >, xiiComponentManager< class xiiGlobalBlackboardComponent, xiiBlockStorageType::Compact >, xiiComponentManager< class xiiGrabbableItemComponent, xiiBlockStorageType::Compact >, xiiComponentManager< class xiiInstancedMeshComponent, xiiBlockStorageType::Compact >, xiiComponentManager< class xiiLocalBlackboardComponent, xiiBlockStorageType::Compact >, xiiComponentManager< class xiiLODMeshComponent, xiiBlockStorageType::Compact >, xiiComponentManager< class xiiMarkerComponent, xiiBlockStorageType::Compact >, xiiComponentManager< class xiiMeshComponent, xiiBlockStorageType::Compact >, xiiComponentManager< class xiiParticleColliderComponent, xiiBlockStorageType::FreeList >, xiiComponentManager< class xiiParticleEmitterComponent, xiiBlockStorageType::FreeList >, xiiComponentManager< class xiiParticleForceFieldComponent, xiiBlockStorageType::FreeList >, xiiComponentManager< class xiiParticleMolecularDynamicsComponent, xiiBlockStorageType::FreeList >, xiiComponentManager< class xiiParticleRendererComponent, xiiBlockStorageType::FreeList >, xiiComponentManager< class xiiParticleSimulationDomainComponent, xiiBlockStorageType::FreeList >, xiiComponentManager< class xiiParticleSystemComponent, xiiBlockStorageType::FreeList >, xiiComponentManager< class xiiPlayerStartPointComponent, xiiBlockStorageType::Compact >, xiiComponentManager< class xiiPointLightComponent, xiiBlockStorageType::Compact >, xiiComponentManager< class xiiPostProcessVolumeComponent, xiiBlockStorageType::Compact >, xiiComponentManager< class xiiRectangleAreaLightComponent, xiiBlockStorageType::Compact >, xiiComponentManager< class xiiReflectionCaptureComponent, xiiBlockStorageType::Compact >, xiiComponentManager< class xiiScriptComponent, xiiBlockStorageType::FreeList >, xiiComponentManager< class xiiShapeIconComponent, xiiBlockStorageType::Compact >, xiiComponentManager< class xiiSkinnedMeshComponent, xiiBlockStorageType::Compact >, xiiComponentManager< class xiiSkyAtmosphereComponent, xiiBlockStorageType::Compact >, xiiComponentManager< class xiiSpawnBoxComponent, xiiBlockStorageType::Compact >, xiiComponentManager< class xiiSpawnComponent, xiiBlockStorageType::Compact >, xiiComponentManager< class xiiSphereAreaLightComponent, xiiBlockStorageType::Compact >, xiiComponentManager< class xiiSpotLightComponent, xiiBlockStorageType::Compact >, xiiComponentManager< class xiiStateMachineComponent, xiiBlockStorageType::Compact >, xiiComponentManager< class xiiStaticMeshComponent, xiiBlockStorageType::Compact >, xiiComponentManager< class xiiTimedDeathComponent, xiiBlockStorageType::Compact >, xiiComponentManager< class xiiTriggerDelayModifierComponent, xiiBlockStorageType::Compact >, xiiComponentManager< class xiiTubeAreaLightComponent, xiiBlockStorageType::Compact >, xiiComponentManager< class xiiVolumeBoxComponent, xiiBlockStorageType::Compact >, xiiComponentManager< class xiiVolumeSphereComponent, xiiBlockStorageType::Compact >, xiiComponentManager< class xiiVolumetricCloudComponent, xiiBlockStorageType::Compact >, xiiComponentManager< ComponentType, xiiBlockStorageType::FreeList >, xiiComponentManager< xiiPrefabReferenceComponent, xiiBlockStorageType::Compact >, xiiComponentManager< xiiVolumetricMediumComponent, xiiBlockStorageType::Compact >, xiiSettingsComponentManager< ComponentType >, and xiiSettingsComponentManager< class xiiRenderWorldSettingsComponent >.

◆ IsValidComponent()

XII_FORCE_INLINE bool xiiComponentManagerBase::IsValidComponent ( const xiiComponentHandle & hComponent) const

Checks whether the given handle references a valid component.

Copyright (c) Theophilus Eriata. All Rights Reserved.


The documentation for this class was generated from the following files:
  • /home/runner/work/XII/XII/Source/Engine/Core/World/ComponentManager.h
  • /home/runner/work/XII/XII/Source/Engine/Core/World/Implementation/ComponentManager.cpp
  • /home/runner/work/XII/XII/Source/Engine/Core/World/Implementation/ComponentManager_inl.h