Open 3D Engine AzFramework API Reference 23.10.0
O3DE is an open-source, fully-featured, high-fidelity, modular 3D engine for building games and simulations, available to every industry.
AzFramework::SliceEntityOwnershipService Class Reference

#include <SliceEntityOwnershipService.h>

Inherits AzFramework::EntityOwnershipService, SliceEntityOwnershipServiceRequestBus::Handler, and SliceEntityRequestBus::MultiHandler.

Inherited by AzFramework::SliceGameEntityOwnershipService.

Public Member Functions

 AZ_CLASS_ALLOCATOR (SliceEntityOwnershipService, AZ::SystemAllocator)
 
 SliceEntityOwnershipService (const EntityContextId &entityContextId, AZ::SerializeContext *serializeContext)
 
void Initialize () override
 Creates the root-slice asset under which all entities in the level belong.
 
bool IsInitialized () override
 Returns true if root slice asset is present.
 
void Destroy () override
 Destroys the root-slice asset.
 
void Reset () override
 Destroys all the entities under the root-slice without destroying it fully.
 
void AddEntity (AZ::Entity *entity) override
 
void AddEntities (const EntityList &entities) override
 
bool DestroyEntity (AZ::Entity *entity) override
 
bool DestroyEntityById (AZ::EntityId entityId) override
 
void GetNonPrefabEntities (EntityList &entityList) override
 Gets the entities in entity ownership service that do not belong to a prefab.
 
bool GetAllEntities (EntityList &entityList) override
 
void InstantiateAllPrefabs () override
 Instantiates all the prefabs that are in the entity ownership service.
 
void SetEntitiesAddedCallback (OnEntitiesAddedCallback onEntitiesAddedCallback) override
 
void SetEntitiesRemovedCallback (OnEntitiesRemovedCallback onEntityRemovedCallback) override
 
void SetValidateEntitiesCallback (ValidateEntitiesCallback validateEntitiesCallback) override
 
void HandleEntityBeingDestroyed (const AZ::EntityId &entityId) override
 
void OnAssetError (AZ::Data::Asset< AZ::Data::AssetData > asset) override
 
void OnAssetReady (AZ::Data::Asset< AZ::Data::AssetData > asset) override
 
void OnAssetReloaded (AZ::Data::Asset< AZ::Data::AssetData > asset) override
 
bool LoadFromStream (AZ::IO::GenericStream &stream, bool remapIds, EntityIdToEntityIdMap *idRemapTable=nullptr, const AZ::ObjectStream::FilterDescriptor &filterDesc=AZ::ObjectStream::FilterDescriptor()) override
 
void HandleEntitiesAdded (const EntityList &entities) override
 
virtual void Initialize ()=0
 Initializes all assets/entities/components required for managing entities.
 
virtual bool IsInitialized ()=0
 Returns true if the entity ownership service is initialized.
 
virtual void Destroy ()=0
 Destroys all the assets/entities/components created for managing entities.
 
virtual void Reset ()=0
 Resets the assets/entities/components without fully destroying them for managing entities.
 
virtual void AddEntity (AZ::Entity *entity)=0
 
virtual void AddEntities (const EntityList &entities)=0
 
virtual bool DestroyEntity (AZ::Entity *entity)=0
 
virtual bool DestroyEntityById (AZ::EntityId entityId)=0
 
virtual void GetNonPrefabEntities (EntityList &entityList)=0
 
virtual bool GetAllEntities (EntityList &entityList)=0
 
virtual void InstantiateAllPrefabs ()=0
 
virtual void HandleEntitiesAdded (const EntityList &entities)=0
 
virtual bool LoadFromStream (AZ::IO::GenericStream &stream, bool remapIds, EntityIdToEntityIdMap *idRemapTable=nullptr, const AZ::ObjectStream::FilterDescriptor &filterDesc=AZ::ObjectStream::FilterDescriptor())=0
 
virtual void SetEntitiesAddedCallback (OnEntitiesAddedCallback onEntitiesAddedCallback)=0
 
virtual void SetEntitiesRemovedCallback (OnEntitiesRemovedCallback onEntitiesRemovedCallback)=0
 
virtual void SetValidateEntitiesCallback (ValidateEntitiesCallback validateEntitiesCallback)=0
 
virtual void HandleEntityBeingDestroyed (const AZ::EntityId &entityId)=0
 

Static Public Member Functions

static void Reflect (AZ::ReflectContext *context)
 

Protected Member Functions

AZ::SliceComponent::SliceInstanceAddress GetOwningSlice () override
 
AZ::Data::AssetId CurrentlyInstantiatingSlice () override
 
bool HandleRootEntityReloadedFromStream (AZ::Entity *rootEntity, bool remapIds, AZ::SliceComponent::EntityIdToEntityIdMap *idRemapTable=nullptr) override
 
AZ::SliceComponent * GetRootSlice () override
 
const AZ::SliceComponent::EntityIdToEntityIdMap & GetLoadedEntityIdMap () override
 
AZ::EntityId FindLoadedEntityIdMapping (const AZ::EntityId &staticId) const override
 
SliceInstantiationTicket InstantiateSlice (const AZ::Data::Asset< AZ::Data::AssetData > &asset, const AZ::IdUtils::Remapper< AZ::EntityId >::IdMapper &customIdMapper=nullptr, const AZ::Data::AssetFilterCB &assetLoadFilter=nullptr) override
 
AZ::SliceComponent::SliceInstanceAddress CloneSliceInstance (AZ::SliceComponent::SliceInstanceAddress sourceInstance, AZ::SliceComponent::EntityIdToEntityIdMap &sourceToCloneEntityIdMap) override
 
void CancelSliceInstantiation (const SliceInstantiationTicket &ticket) override
 
SliceInstantiationTicket GenerateSliceInstantiationTicket () override
 
void SetIsDynamic (bool isDynamic) override
 
const RootSliceAsset & GetRootAsset () const override
 
AZ::SliceComponent::SliceInstanceAddress GetOwningSlice (AZ::EntityId entityId)
 
AZ::SerializeContext * GetSerializeContext ()
 
virtual void CreateRootSlice ()
 
void CreateRootSlice (AZ::SliceAsset *rootSliceAsset)
 
virtual void HandleNewMetadataEntitiesCreated (AZ::SliceComponent &)
 

Additional Inherited Members

- Public Types inherited from AzFramework::EntityOwnershipService
using EntityIdToEntityIdMap = AZStd::unordered_map< AZ::EntityId, AZ::EntityId >
 
- Public Attributes inherited from AzFramework::EntityOwnershipService
bool m_shouldAssertForLegacySlicesUsage = false
 
- Protected Attributes inherited from AzFramework::EntityOwnershipService
OnEntitiesAddedCallback m_entitiesAddedCallback
 
OnEntitiesRemovedCallback m_entitiesRemovedCallback
 
ValidateEntitiesCallback m_validateEntitiesCallback
 

Detailed Description

SliceEntityOwnershipService uses slices as the prefab mechanism to manage entities used by an entity context. This includes using a root-slice to put all the loose entities in a level that don't belong to any layers or slices.

Member Function Documentation

◆ AddEntities()

void AzFramework::SliceEntityOwnershipService::AddEntities ( const EntityList &  entities)
overridevirtual

Adds the given entities to the root slice.

Parameters
entities

Implements AzFramework::EntityOwnershipService.

◆ AddEntity()

void AzFramework::SliceEntityOwnershipService::AddEntity ( AZ::Entity *  entity)
overridevirtual

Adds an entity to the root-slice.

Parameters
entity

Implements AzFramework::EntityOwnershipService.

◆ Destroy()

void AzFramework::SliceEntityOwnershipService::Destroy ( )
overridevirtual

Destroys the root-slice asset.

Implements AzFramework::EntityOwnershipService.

◆ DestroyEntity()

bool AzFramework::SliceEntityOwnershipService::DestroyEntity ( AZ::Entity *  entity)
overridevirtual

Deletes the entity from the root-slice and destroys it.

Parameters
entity

Implements AzFramework::EntityOwnershipService.

◆ DestroyEntityById()

bool AzFramework::SliceEntityOwnershipService::DestroyEntityById ( AZ::EntityId  entityId)
overridevirtual

Deletes the entity id from the root-slice and destroys it.

Parameters
entityId

Implements AzFramework::EntityOwnershipService.

◆ GetAllEntities()

bool AzFramework::SliceEntityOwnershipService::GetAllEntities ( EntityList &  entityList)
overridevirtual

Gets all entities, including those that are owned by prefabs in the entity ownership service.

Parameters
entityListThe entity list to add the entities to.
Returns
whether fetching entities was successful.

Implements AzFramework::EntityOwnershipService.

◆ GetNonPrefabEntities()

void AzFramework::SliceEntityOwnershipService::GetNonPrefabEntities ( EntityList &  entityList)
overridevirtual

Gets the entities in entity ownership service that do not belong to a prefab.

Implements AzFramework::EntityOwnershipService.

◆ HandleEntitiesAdded()

void AzFramework::SliceEntityOwnershipService::HandleEntitiesAdded ( const EntityList &  entities)
overridevirtual

Executes the post-add actions for the provided list of entities, like connecting to required ebuses.

Parameters
entitiesThe entities to perform the post-add actions for.

Implements AzFramework::EntityOwnershipService.

◆ HandleEntityBeingDestroyed()

void AzFramework::SliceEntityOwnershipService::HandleEntityBeingDestroyed ( const AZ::EntityId &  entityId)
overridevirtual

Called when an entity is in the process of being destroyed

Parameters
entityIdThe entity Id of the entity being destroyed.

Implements AzFramework::EntityOwnershipService.

◆ HandleNewMetadataEntitiesCreated()

virtual void AzFramework::SliceEntityOwnershipService::HandleNewMetadataEntitiesCreated ( AZ::SliceComponent &  )
inlineprotectedvirtual

Properly process new metadata entities created during slice streaming. Because the streaming process bypasses slice creation, the entity context has to make sure they're handled properly.

Parameters
slice- The slice that was streamed in

◆ Initialize()

void AzFramework::SliceEntityOwnershipService::Initialize ( )
overridevirtual

Creates the root-slice asset under which all entities in the level belong.

Implements AzFramework::EntityOwnershipService.

◆ InstantiateAllPrefabs()

void AzFramework::SliceEntityOwnershipService::InstantiateAllPrefabs ( )
overridevirtual

Instantiates all the prefabs that are in the entity ownership service.

Implements AzFramework::EntityOwnershipService.

◆ IsInitialized()

bool AzFramework::SliceEntityOwnershipService::IsInitialized ( )
overridevirtual

Returns true if root slice asset is present.

Implements AzFramework::EntityOwnershipService.

◆ LoadFromStream()

bool AzFramework::SliceEntityOwnershipService::LoadFromStream ( AZ::IO::GenericStream &  stream,
bool  remapIds,
EntityIdToEntityIdMap *  idRemapTable = nullptr,
const AZ::ObjectStream::FilterDescriptor &  filterDesc = AZ::ObjectStream::FilterDescriptor() 
)
overridevirtual

Load the root slice from a stream.

Parameters
streamthe source stream from which to load
remapIdsif true, entity Ids will be remapped post-load
idRemapTableif remapIds is true, the provided table is filled with a map of original ids to new ids
filterDescany ObjectStream::LoadFlags
Returns
whether or not the root slice was successfully loaded from the provided stream

Implements AzFramework::EntityOwnershipService.

◆ Reset()

void AzFramework::SliceEntityOwnershipService::Reset ( )
overridevirtual

Destroys all the entities under the root-slice without destroying it fully.

Implements AzFramework::EntityOwnershipService.

Reimplemented in AzFramework::SliceGameEntityOwnershipService.

◆ SetEntitiesAddedCallback()

void AzFramework::SliceEntityOwnershipService::SetEntitiesAddedCallback ( OnEntitiesAddedCallback  onEntitiesAddedCallback)
overridevirtual

◆ SetEntitiesRemovedCallback()

void AzFramework::SliceEntityOwnershipService::SetEntitiesRemovedCallback ( OnEntitiesRemovedCallback  onEntityRemovedCallback)
overridevirtual

◆ SetValidateEntitiesCallback()

void AzFramework::SliceEntityOwnershipService::SetValidateEntitiesCallback ( ValidateEntitiesCallback  validateEntitiesCallback)
overridevirtual

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