Plasma Engine  2.0
Loading...
Searching...
No Matches
plComponentManagerBase Class Referenceabstract

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

#include <ComponentManager.h>

Inheritance diagram for plComponentManagerBase:

Public Member Functions

bool IsValidComponent (const plComponentHandle &hComponent) const
 Checks whether the given handle references a valid component.
 
bool TryGetComponent (const plComponentHandle &hComponent, plComponent *&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 plComponentHandle &hComponent, const plComponent *&out_pComponent) const
 Returns if a component with the given handle exists and if so writes out the corresponding pointer to out_pComponent.
 
plUInt32 GetComponentCount () const
 Returns the number of components managed by this manager.
 
plComponentHandle CreateComponent (plGameObject *pOwnerObject)
 Create a new component instance and returns a handle to it.
 
template<typename ComponentType >
plComponentHandle CreateComponent (plGameObject *pOwnerObject, ComponentType *&out_pComponent)
 Create a new component instance and returns a handle to it.
 
void DeleteComponent (const plComponentHandle &hComponent)
 Deletes the given component. Note that the component will be invalidated first and the actual deletion is postponed.
 
void DeleteComponent (plComponent *pComponent)
 Deletes the given component. Note that the component will be invalidated first and the actual deletion is postponed.
 
virtual void CollectAllComponents (plDynamicArray< plComponentHandle > &out_allComponents, bool bOnlyActive)=0
 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 plComponentManagerBase pointer.
 
virtual void CollectAllComponents (plDynamicArray< plComponent * > &out_allComponents, bool bOnlyActive)=0
 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 plComponentManagerBase pointer.
 
template<typename ComponentType >
PL_ALWAYS_INLINE plComponentHandle CreateComponent (plGameObject *pOwnerObject, ComponentType *&out_pComponent)
 
- Public Member Functions inherited from plWorldModule
plWorldGetWorld ()
 Returns the corresponding world to this module.
 
const plWorldGetWorld () const
 Returns the corresponding world to this module.
 
plUInt32 GetWorldIndex () const
 Same as GetWorld()->GetIndex(). Needed to break circular include dependencies.
 
- Public Member Functions inherited from plReflectedClass
virtual const plRTTIGetDynamicRTTI () const
 
bool IsInstanceOf (const plRTTI *pType) const
 Returns whether the type of this instance is of the given type or derived from it.
 
template<typename T >
PL_ALWAYS_INLINE bool IsInstanceOf () const
 Returns whether the type of this instance is of the given type or derived from it.
 

Protected Member Functions

 plComponentManagerBase (plWorld *pWorld)
 
- Protected Member Functions inherited from plWorldModule
 plWorldModule (plWorld *pWorld)
 
void RegisterUpdateFunction (const UpdateFunctionDesc &desc)
 Registers the given update function at the world.
 
void DeregisterUpdateFunction (const UpdateFunctionDesc &desc)
 De-registers the given update function from the world. Note that only the m_Function and the m_Phase of the description have to be valid for de-registration.
 
plAllocatorGetAllocator ()
 Returns the allocator used by the world.
 
plInternal::WorldLargeBlockAllocatorGetBlockAllocator ()
 Returns the block allocator used by the world.
 
bool GetWorldSimulationEnabled () const
 Returns whether the world simulation is enabled.
 
virtual void Initialize ()
 This method is called after the constructor. A derived type can override this method to do initialization work. Typically this is the method where updates function are registered.
 
virtual void Deinitialize ()
 This method is called before the destructor. A derived type can override this method to do deinitialization work.
 
virtual void OnSimulationStarted ()
 This method is called at the start of the next world update when the world is simulated. This method will be called after the initialization method.
 
virtual void WorldClear ()
 Called by plWorld::Clear(). Can be used to clear cached data when a world is completely cleared of objects (but not deleted).
 

Protected Attributes

plIdTable< plComponentId, plComponent * > m_Components
 
- Protected Attributes inherited from plWorldModule
plWorldm_pWorld
 

Additional Inherited Members

- Static Public Member Functions inherited from plNoBase
static const plRTTIGetStaticRTTI ()
 
- Protected Types inherited from plWorldModule
using UpdateFunction = plDelegate<void(const UpdateContext&)>
 Update function delegate.
 

Detailed Description

Base class for all component managers. Do not derive directly from this class, but derive from plComponentManager 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 plWorld. Use plWorld::CreateComponentManager to create an instance of a component manager within a specific world.

Member Function Documentation

◆ CollectAllComponents() [1/2]

virtual void plComponentManagerBase::CollectAllComponents ( plDynamicArray< plComponent * > & 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 plComponentManagerBase pointer.

Implemented in plComponentManager< T, StorageType >, plComponentManager< class plAnimatedMeshComponent, plBlockStorageType::FreeList >, plComponentManager< class plAreaDamageComponent, plBlockStorageType::FreeList >, plComponentManager< class plAudioTriggerComponent, plBlockStorageType::FreeList >, plComponentManager< class plBoxReflectionProbeComponent, plBlockStorageType::Compact >, plComponentManager< class plCameraComponent, plBlockStorageType::Compact >, plComponentManager< class plClothSheetComponent, plBlockStorageType::FreeList >, plComponentManager< class plDecalComponent, plBlockStorageType::Compact >, plComponentManager< class plFakeRopeComponent, plBlockStorageType::FreeList >, plComponentManager< class plFmodEventComponent, plBlockStorageType::FreeList >, plComponentManager< class plFmodListenerComponent, plBlockStorageType::Compact >, plComponentManager< class plInstancedMeshComponent, plBlockStorageType::Compact >, plComponentManager< class plJoltClothSheetComponent, plBlockStorageType::FreeList >, plComponentManager< class plJoltDynamicActorComponent, plBlockStorageType::FreeList >, plComponentManager< class plJoltQueryShapeActorComponent, plBlockStorageType::FreeList >, plComponentManager< class plJoltRagdollComponent, plBlockStorageType::FreeList >, plComponentManager< class plJoltRopeComponent, plBlockStorageType::Compact >, plComponentManager< class plJoltTriggerComponent, plBlockStorageType::FreeList >, plComponentManager< class plJoltVisColMeshComponent, plBlockStorageType::Compact >, plComponentManager< class plKrautTreeComponent, plBlockStorageType::Compact >, plComponentManager< class plLineToComponent, plBlockStorageType::FreeList >, plComponentManager< class plOccluderComponent, plBlockStorageType::FreeList >, plComponentManager< class plParticleComponent, plBlockStorageType::Compact >, plComponentManager< class plParticleFinisherComponent, plBlockStorageType::Compact >, plComponentManager< class plPathComponent, plBlockStorageType::FreeList >, plComponentManager< class plPostProcessingComponent, plBlockStorageType::Compact >, plComponentManager< class plRaycastComponent, plBlockStorageType::Compact >, plComponentManager< class plRcAgentComponent, plBlockStorageType::FreeList >, plComponentManager< class plRcNavMeshComponent, plBlockStorageType::Compact >, plComponentManager< class plSkeletonPoseComponent, plBlockStorageType::Compact >, plComponentManager< class plSphereReflectionProbeComponent, plBlockStorageType::Compact >, plComponentManager< class plStateMachineComponent, plBlockStorageType::Compact >, plComponentManager< class plTypeScriptComponent, plBlockStorageType::FreeList >, plComponentManager< ComponentType, plBlockStorageType::FreeList >, plComponentManager< plDetourCrowdAgentComponent, plBlockStorageType::FreeList >, plComponentManager< plGizmoComponent, plBlockStorageType::FreeList >, plComponentManager< plHeightfieldComponent, plBlockStorageType::Compact >, plComponentManager< plPrefabReferenceComponent, plBlockStorageType::Compact >, plComponentManager< plProcPlacementComponent, plBlockStorageType::Compact >, plComponentManager< plProcVertexColorComponent, plBlockStorageType::Compact >, plComponentManager< T, plBlockStorageType::FreeList >, plSettingsComponentManager< ComponentType >, and plSettingsComponentManager< class plBakedProbesComponent >.

◆ CollectAllComponents() [2/2]

virtual void plComponentManagerBase::CollectAllComponents ( plDynamicArray< plComponentHandle > & 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 plComponentManagerBase pointer.

Implemented in plComponentManager< T, StorageType >, plComponentManager< class plAnimatedMeshComponent, plBlockStorageType::FreeList >, plComponentManager< class plAreaDamageComponent, plBlockStorageType::FreeList >, plComponentManager< class plAudioTriggerComponent, plBlockStorageType::FreeList >, plComponentManager< class plBoxReflectionProbeComponent, plBlockStorageType::Compact >, plComponentManager< class plCameraComponent, plBlockStorageType::Compact >, plComponentManager< class plClothSheetComponent, plBlockStorageType::FreeList >, plComponentManager< class plDecalComponent, plBlockStorageType::Compact >, plComponentManager< class plFakeRopeComponent, plBlockStorageType::FreeList >, plComponentManager< class plFmodEventComponent, plBlockStorageType::FreeList >, plComponentManager< class plFmodListenerComponent, plBlockStorageType::Compact >, plComponentManager< class plInstancedMeshComponent, plBlockStorageType::Compact >, plComponentManager< class plJoltClothSheetComponent, plBlockStorageType::FreeList >, plComponentManager< class plJoltDynamicActorComponent, plBlockStorageType::FreeList >, plComponentManager< class plJoltQueryShapeActorComponent, plBlockStorageType::FreeList >, plComponentManager< class plJoltRagdollComponent, plBlockStorageType::FreeList >, plComponentManager< class plJoltRopeComponent, plBlockStorageType::Compact >, plComponentManager< class plJoltTriggerComponent, plBlockStorageType::FreeList >, plComponentManager< class plJoltVisColMeshComponent, plBlockStorageType::Compact >, plComponentManager< class plKrautTreeComponent, plBlockStorageType::Compact >, plComponentManager< class plLineToComponent, plBlockStorageType::FreeList >, plComponentManager< class plOccluderComponent, plBlockStorageType::FreeList >, plComponentManager< class plParticleComponent, plBlockStorageType::Compact >, plComponentManager< class plParticleFinisherComponent, plBlockStorageType::Compact >, plComponentManager< class plPathComponent, plBlockStorageType::FreeList >, plComponentManager< class plPostProcessingComponent, plBlockStorageType::Compact >, plComponentManager< class plRaycastComponent, plBlockStorageType::Compact >, plComponentManager< class plRcAgentComponent, plBlockStorageType::FreeList >, plComponentManager< class plRcNavMeshComponent, plBlockStorageType::Compact >, plComponentManager< class plSkeletonPoseComponent, plBlockStorageType::Compact >, plComponentManager< class plSphereReflectionProbeComponent, plBlockStorageType::Compact >, plComponentManager< class plStateMachineComponent, plBlockStorageType::Compact >, plComponentManager< class plTypeScriptComponent, plBlockStorageType::FreeList >, plComponentManager< ComponentType, plBlockStorageType::FreeList >, plComponentManager< plDetourCrowdAgentComponent, plBlockStorageType::FreeList >, plComponentManager< plGizmoComponent, plBlockStorageType::FreeList >, plComponentManager< plHeightfieldComponent, plBlockStorageType::Compact >, plComponentManager< plPrefabReferenceComponent, plBlockStorageType::Compact >, plComponentManager< plProcPlacementComponent, plBlockStorageType::Compact >, plComponentManager< plProcVertexColorComponent, plBlockStorageType::Compact >, plComponentManager< T, plBlockStorageType::FreeList >, plSettingsComponentManager< ComponentType >, and plSettingsComponentManager< class plBakedProbesComponent >.


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