![]() |
ezEngine
Release 25.03
|
Base class for all component managers. Do not derive directly from this class, but derive from ezComponentManager instead. More...
#include <ComponentManager.h>
Inherits ezWorldModule.
Inherited by ezComponentManager< T, StorageType >, ezComponentManager< class ezAnimatedMeshComponent, ezBlockStorageType::FreeList >, ezComponentManager< class ezAnimationControllerComponent, ezBlockStorageType::FreeList >, ezComponentManager< class ezAreaDamageComponent, ezBlockStorageType::FreeList >, ezComponentManager< class ezBoxReflectionProbeComponent, ezBlockStorageType::Compact >, ezComponentManager< class ezCameraComponent, ezBlockStorageType::Compact >, ezComponentManager< class ezClothSheetComponent, ezBlockStorageType::FreeList >, ezComponentManager< class ezDecalComponent, ezBlockStorageType::Compact >, ezComponentManager< class ezFakeRopeComponent, ezBlockStorageType::FreeList >, ezComponentManager< class ezFmodEventComponent, ezBlockStorageType::FreeList >, ezComponentManager< class ezFmodListenerComponent, ezBlockStorageType::Compact >, ezComponentManager< class ezInstancedMeshComponent, ezBlockStorageType::Compact >, ezComponentManager< class ezJoltClothSheetComponent, ezBlockStorageType::FreeList >, ezComponentManager< class ezJoltDynamicActorComponent, ezBlockStorageType::FreeList >, ezComponentManager< class ezJoltQueryShapeActorComponent, ezBlockStorageType::FreeList >, ezComponentManager< class ezJoltRagdollComponent, ezBlockStorageType::FreeList >, ezComponentManager< class ezJoltRopeComponent, ezBlockStorageType::Compact >, ezComponentManager< class ezJoltTriggerComponent, ezBlockStorageType::FreeList >, ezComponentManager< class ezJoltVisColMeshComponent, ezBlockStorageType::Compact >, ezComponentManager< class ezKrautTreeComponent, ezBlockStorageType::Compact >, ezComponentManager< class ezLodAnimatedMeshComponent, ezBlockStorageType::FreeList >, ezComponentManager< class ezOccluderComponent, ezBlockStorageType::FreeList >, ezComponentManager< class ezParticleComponent, ezBlockStorageType::Compact >, ezComponentManager< class ezParticleFinisherComponent, ezBlockStorageType::Compact >, ezComponentManager< class ezPathComponent, ezBlockStorageType::FreeList >, ezComponentManager< class ezPostProcessingComponent, ezBlockStorageType::Compact >, ezComponentManager< class ezPxCharacterControllerComponent, ezBlockStorageType::Compact >, ezComponentManager< class ezPxRopeComponent, ezBlockStorageType::Compact >, ezComponentManager< class ezPxTriggerComponent, ezBlockStorageType::FreeList >, ezComponentManager< class ezPxVisColMeshComponent, ezBlockStorageType::Compact >, ezComponentManager< class ezRaycastComponent, ezBlockStorageType::Compact >, ezComponentManager< class ezRcAgentComponent, ezBlockStorageType::FreeList >, ezComponentManager< class ezRcNavMeshComponent, ezBlockStorageType::Compact >, ezComponentManager< class ezSkeletonPoseComponent, ezBlockStorageType::Compact >, ezComponentManager< class ezSphereReflectionProbeComponent, ezBlockStorageType::Compact >, ezComponentManager< class ezStateMachineComponent, ezBlockStorageType::Compact >, ezComponentManager< class ezTypeScriptComponent, ezBlockStorageType::FreeList >, ezComponentManager< ComponentType, ezBlockStorageType::FreeList >, ezComponentManager< ezDetourCrowdAgentComponent, ezBlockStorageType::FreeList >, ezComponentManager< ezGizmoComponent, ezBlockStorageType::FreeList >, ezComponentManager< ezHeightfieldComponent, ezBlockStorageType::Compact >, ezComponentManager< ezPrefabReferenceComponent, ezBlockStorageType::Compact >, ezComponentManager< ezProcPlacementComponent, ezBlockStorageType::Compact >, ezComponentManager< ezProcVertexColorComponent, ezBlockStorageType::Compact >, ezComponentManager< ezPxDynamicActorComponent, ezBlockStorageType::FreeList >, ezComponentManager< ezPxQueryShapeActorComponent, ezBlockStorageType::FreeList >, ezComponentManager< ezRandomPrefabComponent, ezBlockStorageType::Compact >, ezSettingsComponentManager< ComponentType >, and ezSettingsComponentManager< class ezBakedProbesComponent >.
Public Member Functions | |
bool | IsValidComponent (const ezComponentHandle &hComponent) const |
Checks whether the given handle references a valid component. | |
bool | TryGetComponent (const ezComponentHandle &hComponent, ezComponent *&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 ezComponentHandle &hComponent, const ezComponent *&out_pComponent) const |
Returns if a component with the given handle exists and if so writes out the corresponding pointer to out_pComponent. | |
ezUInt32 | GetComponentCount () const |
Returns the number of components managed by this manager. | |
ezComponentHandle | CreateComponent (ezGameObject *pOwnerObject) |
Create a new component instance and returns a handle to it. | |
template<typename ComponentType > | |
ezTypedComponentHandle< ComponentType > | CreateComponent (ezGameObject *pOwnerObject, ComponentType *&out_pComponent) |
Create a new component instance and returns a handle to it. | |
void | DeleteComponent (const ezComponentHandle &hComponent) |
Deletes the given component. Note that the component will be invalidated first and the actual deletion is postponed. | |
void | DeleteComponent (ezComponent *pComponent) |
Deletes the given component. Note that the component will be invalidated first and the actual deletion is postponed. | |
virtual void | CollectAllComponents (ezDynamicArray< ezComponentHandle > &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 ezComponentManagerBase pointer. | |
virtual void | CollectAllComponents (ezDynamicArray< ezComponent * > &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 ezComponentManagerBase pointer. | |
template<typename ComponentType > | |
EZ_ALWAYS_INLINE ezTypedComponentHandle< ComponentType > | CreateComponent (ezGameObject *pOwnerObject, ComponentType *&out_pComponent) |
![]() | |
ezWorld * | GetWorld () |
Returns the corresponding world to this module. | |
const ezWorld * | GetWorld () const |
Returns the corresponding world to this module. | |
ezUInt32 | GetWorldIndex () const |
Same as GetWorld()->GetIndex(). Needed to break circular include dependencies. | |
![]() | |
virtual const ezRTTI * | GetDynamicRTTI () const |
bool | IsInstanceOf (const ezRTTI *pType) const |
Returns whether the type of this instance is of the given type or derived from it. | |
template<typename T > | |
EZ_ALWAYS_INLINE bool | IsInstanceOf () const |
Returns whether the type of this instance is of the given type or derived from it. | |
Protected Member Functions | |
ezComponentManagerBase (ezWorld *pWorld) | |
![]() | |
ezWorldModule (ezWorld *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. | |
ezAllocator * | GetAllocator () |
Returns the allocator used by the world. | |
ezInternal::WorldLargeBlockAllocator * | GetBlockAllocator () |
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 ezWorld::Clear(). Can be used to clear cached data when a world is completely cleared of objects (but not deleted). | |
Protected Attributes | |
ezIdTable< ezComponentId, ezComponent * > | m_Components |
![]() | |
ezWorld * | m_pWorld |
Additional Inherited Members | |
![]() | |
static const ezRTTI * | GetStaticRTTI () |
![]() | |
using | UpdateFunction = ezDelegate< void(const UpdateContext &)> |
Update function delegate. | |
Base class for all component managers. Do not derive directly from this class, but derive from ezComponentManager 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 ezWorld. Use ezWorld::CreateComponentManager to create an instance of a component manager within a specific world.