Open 3D Engine AzToolsFramework 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.
AzToolsFramework::Prefab::PrefabPublicHandler Class Referencefinal

Inherits AzToolsFramework::Prefab::PrefabPublicInterface.

Public Member Functions

 AZ_CLASS_ALLOCATOR (PrefabPublicHandler, AZ::SystemAllocator)
 
 AZ_RTTI (PrefabPublicHandler, "{35802943-6B60-430F-9DED-075E3A576A25}", PrefabPublicInterface)
 
void RegisterPrefabPublicHandlerInterface ()
 
void UnregisterPrefabPublicHandlerInterface ()
 
CreatePrefabResult CreatePrefabInDisk (const EntityIdList &entityIds, AZ::IO::PathView filePath) override
 
CreatePrefabResult CreatePrefabAndSaveToDisk (const EntityIdList &entityIds, AZ::IO::PathView filePath) override
 
CreatePrefabResult CreatePrefabInMemory (const EntityIdList &entityIds, AZ::IO::PathView filePath) override
 
InstantiatePrefabResult InstantiatePrefab (AZStd::string_view filePath, AZ::EntityId parentId, const AZ::Vector3 &position) override
 
PrefabOperationResult SavePrefab (AZ::IO::Path filePath) override
 
PrefabEntityResult CreateEntity (AZ::EntityId parentId, const AZ::Vector3 &position) override
 
PrefabOperationResult GenerateUndoNodesForEntityChangeAndUpdateCache (AZ::EntityId entityId, UndoSystem::URSequencePoint *parentUndoBatch) override
 
bool IsOwnedByPrefabInstance (AZ::EntityId entityId) const override
 
bool IsOwnedByProceduralPrefabInstance (AZ::EntityId entityId) const override
 
bool IsInstanceContainerEntity (AZ::EntityId entityId) const override
 
bool IsLevelInstanceContainerEntity (AZ::EntityId entityId) const override
 
bool EntitiesBelongToSameInstance (const EntityIdList &entityIds) const
 
AZ::EntityId GetInstanceContainerEntityId (AZ::EntityId entityId) const override
 
AZ::EntityId GetLevelInstanceContainerEntityId () const override
 
AZ::IO::Path GetOwningInstancePrefabPath (AZ::EntityId entityId) const override
 
PrefabRequestResult HasUnsavedChanges (AZ::IO::Path prefabFilePath) const override
 
PrefabOperationResult DeleteEntitiesAndAllDescendantsInInstance (const EntityIdList &entityIds) override
 
DuplicatePrefabResult DuplicateEntitiesInInstance (const EntityIdList &entityIds) override
 
PrefabOperationResult DetachPrefab (const AZ::EntityId &containerEntityId) override
 
- Public Member Functions inherited from AzToolsFramework::Prefab::PrefabPublicInterface
 AZ_RTTI (PrefabPublicInterface, "{931AAE9D-C775-4818-9070-A2DA69489CBE}")
 
virtual CreatePrefabResult CreatePrefabInDisk (const EntityIdList &entityIds, AZ::IO::PathView filePath)=0
 
virtual CreatePrefabResult CreatePrefabAndSaveToDisk (const EntityIdList &entityIds, AZ::IO::PathView filePath)=0
 
virtual CreatePrefabResult CreatePrefabInMemory (const EntityIdList &entityIds, AZ::IO::PathView filePath)=0
 
virtual InstantiatePrefabResult InstantiatePrefab (AZStd::string_view filePath, AZ::EntityId parentId, const AZ::Vector3 &position)=0
 
virtual PrefabOperationResult SavePrefab (AZ::IO::Path filePath)=0
 
virtual PrefabEntityResult CreateEntity (AZ::EntityId parentId, const AZ::Vector3 &position)=0
 
virtual PrefabOperationResult GenerateUndoNodesForEntityChangeAndUpdateCache (AZ::EntityId entityId, UndoSystem::URSequencePoint *parentUndoBatch)=0
 
virtual bool IsOwnedByPrefabInstance (AZ::EntityId entityId) const =0
 
virtual bool IsOwnedByProceduralPrefabInstance (AZ::EntityId entityId) const =0
 
virtual bool IsInstanceContainerEntity (AZ::EntityId entityId) const =0
 
virtual bool IsLevelInstanceContainerEntity (AZ::EntityId entityId) const =0
 
virtual bool EntitiesBelongToSameInstance (const EntityIdList &entityIds) const =0
 
virtual AZ::EntityId GetInstanceContainerEntityId (AZ::EntityId entityId) const =0
 
virtual AZ::EntityId GetLevelInstanceContainerEntityId () const =0
 
virtual AZ::IO::Path GetOwningInstancePrefabPath (AZ::EntityId entityId) const =0
 
virtual PrefabRequestResult HasUnsavedChanges (AZ::IO::Path prefabFilePath) const =0
 
virtual PrefabOperationResult DeleteEntitiesAndAllDescendantsInInstance (const EntityIdList &entityIds)=0
 
virtual DuplicatePrefabResult DuplicateEntitiesInInstance (const EntityIdList &entityIds)=0
 
virtual PrefabOperationResult DetachPrefab (const AZ::EntityId &containerEntityId)=0
 

Member Function Documentation

◆ CreateEntity()

PrefabEntityResult AzToolsFramework::Prefab::PrefabPublicHandler::CreateEntity ( AZ::EntityId  parentId,
const AZ::Vector3 &  position 
)
overridevirtual

Creates a new entity under the entity with id 'parentId' and propagates a change to the template of the owning instance of parentId.

Parameters
parentIdThe id of the parent entity to parent the newly added entity under.
positionThe transform position of the entity being added.
Returns
Returns the entityId of the newly created entity, or an error message if the operation failed.

Implements AzToolsFramework::Prefab::PrefabPublicInterface.

◆ CreatePrefabAndSaveToDisk()

CreatePrefabResult AzToolsFramework::Prefab::PrefabPublicHandler::CreatePrefabAndSaveToDisk ( const EntityIdList &  entityIds,
AZ::IO::PathView  filePath 
)
overridevirtual

Create a prefab out of the entities provided, at the path provided, and save it in disk immediately. Automatically detects descendants of entities, and discerns between entities and child instances. Note: It calls CreatePrefabInMemory internally and then saves the new template in disk.

Parameters
entityIdsThe entities that should form the new prefab (along with their descendants).
filePathThe absolute path for the new prefab file.
Returns
An outcome object with an entityId of the new prefab's container entity; on failure, it comes with an error message detailing the cause of the error.

Implements AzToolsFramework::Prefab::PrefabPublicInterface.

◆ CreatePrefabInDisk()

CreatePrefabResult AzToolsFramework::Prefab::PrefabPublicHandler::CreatePrefabInDisk ( const EntityIdList &  entityIds,
AZ::IO::PathView  filePath 
)
overridevirtual

O3DE_DEPRECATION_NOTICE(GHI-12956) This function is marked for deprecation. Please use CreatePrefabAndSaveToDisk instead.

Implements AzToolsFramework::Prefab::PrefabPublicInterface.

◆ CreatePrefabInMemory()

CreatePrefabResult AzToolsFramework::Prefab::PrefabPublicHandler::CreatePrefabInMemory ( const EntityIdList &  entityIds,
AZ::IO::PathView  filePath 
)
overridevirtual

Create a prefab out of the entities provided, at the path provided, and keep it in memory. Automatically detects descendants of entities, and discerns between entities and child instances. Note: The newly created prefab template cannot be undo/redo. Undo will not remove the templace in system.

Parameters
entityIdsThe entities that should form the new prefab (along with their descendants).
filePathThe absolute path for the new prefab file.
Returns
An outcome object with an entityId of the new prefab's container entity; on failure, it comes with an error message detailing the cause of the error.

Implements AzToolsFramework::Prefab::PrefabPublicInterface.

◆ DeleteEntitiesAndAllDescendantsInInstance()

PrefabOperationResult AzToolsFramework::Prefab::PrefabPublicHandler::DeleteEntitiesAndAllDescendantsInInstance ( const EntityIdList &  entityIds)
overridevirtual

Deletes all entities and their descendants from the owning instance. Bails if the entities don't all belong to the same instance.

Parameters
entitiesThe entities to delete. Their descendants will be discovered by this function.
Returns
An outcome object; on failure, it comes with an error message detailing the cause of the error.

Implements AzToolsFramework::Prefab::PrefabPublicInterface.

◆ DetachPrefab()

PrefabOperationResult AzToolsFramework::Prefab::PrefabPublicHandler::DetachPrefab ( const AZ::EntityId &  containerEntityId)
overridevirtual

If the entity id is a container entity id, detaches the prefab instance corresponding to it. This includes converting the container entity into a regular entity and putting it under the parent prefab, removing the link between this instance and the parent, removing links between this instance and its nested instances, and adding entities directly owned by this instance under the parent instance. Bails if the entity is not a container entity or belongs to the level prefab instance.

Parameters
containerEntityIdThe container entity id of the instance to detach.
Returns
An outcome object; on failure, it comes with an error message detailing the cause of the error.

Implements AzToolsFramework::Prefab::PrefabPublicInterface.

◆ DuplicateEntitiesInInstance()

DuplicatePrefabResult AzToolsFramework::Prefab::PrefabPublicHandler::DuplicateEntitiesInInstance ( const EntityIdList &  entityIds)
overridevirtual

Duplicates all entities in the owning instance. Bails if the entities don't all belong to the same instance.

Parameters
entitiesThe entities to duplicate.
Returns
An outcome object with a list of ids of target entities' duplicates if duplication succeeded; on failure, it comes with an error message detailing the cause of the error.

Implements AzToolsFramework::Prefab::PrefabPublicInterface.

◆ EntitiesBelongToSameInstance()

bool AzToolsFramework::Prefab::PrefabPublicHandler::EntitiesBelongToSameInstance ( const EntityIdList &  entityIds) const
virtual

Detects if a list of entities are under the same instance. The instance of a container entity is special cased to be the parent instance of its instance.

Parameters
entityIdsThe list of entities to query.
Returns
True if all entities in the list have the same instance, false otherwise.

Implements AzToolsFramework::Prefab::PrefabPublicInterface.

◆ GenerateUndoNodesForEntityChangeAndUpdateCache()

PrefabOperationResult AzToolsFramework::Prefab::PrefabPublicHandler::GenerateUndoNodesForEntityChangeAndUpdateCache ( AZ::EntityId  entityId,
UndoSystem::URSequencePoint parentUndoBatch 
)
overridevirtual

Store the changes between the current entity state and its last cached state into undo/redo commands. These changes are stored as patches to the owning prefab instance template, as appropriate. The function also triggers the redo() of the nodes it creates, triggering propagation on the next tick.

Parameters
entityIdThe entity to patch.
parentUndoBatchThe undo batch the undo nodes should be parented to.
Returns
Returns Success if the node was generated correctly, or an error message otherwise.

Implements AzToolsFramework::Prefab::PrefabPublicInterface.

◆ GetInstanceContainerEntityId()

AZ::EntityId AzToolsFramework::Prefab::PrefabPublicHandler::GetInstanceContainerEntityId ( AZ::EntityId  entityId) const
overridevirtual

Gets the entity id for the instance container of the owning instance.

Parameters
entityIdThe id of the entity to query.
Returns
The entity id of the instance container owning the queried entity.

Implements AzToolsFramework::Prefab::PrefabPublicInterface.

◆ GetLevelInstanceContainerEntityId()

AZ::EntityId AzToolsFramework::Prefab::PrefabPublicHandler::GetLevelInstanceContainerEntityId ( ) const
overridevirtual

Gets the entity id for the instance container of the level instance.

Returns
The entity id of the instance container for the currently loaded level.

Implements AzToolsFramework::Prefab::PrefabPublicInterface.

◆ GetOwningInstancePrefabPath()

AZ::IO::Path AzToolsFramework::Prefab::PrefabPublicHandler::GetOwningInstancePrefabPath ( AZ::EntityId  entityId) const
overridevirtual

Get the file path to the prefab file for the prefab instance owning the entity provided.

Parameters
entityIdThe id for the entity being queried.
Returns
Returns the path to the prefab, or an empty path if the entity is owned by the level.

Implements AzToolsFramework::Prefab::PrefabPublicInterface.

◆ HasUnsavedChanges()

PrefabRequestResult AzToolsFramework::Prefab::PrefabPublicHandler::HasUnsavedChanges ( AZ::IO::Path  prefabFilePath) const
overridevirtual

Gets whether the prefab has unsaved changes.

Parameters
filePathThe path to the prefab to query.
Returns
Returns true if the prefab has unsaved changes, false otherwise. If path is invalid, returns an error message.

Implements AzToolsFramework::Prefab::PrefabPublicInterface.

◆ InstantiatePrefab()

InstantiatePrefabResult AzToolsFramework::Prefab::PrefabPublicHandler::InstantiatePrefab ( AZStd::string_view  filePath,
AZ::EntityId  parentId,
const AZ::Vector3 &  position 
)
overridevirtual

Instantiate a prefab from a prefab file.

Parameters
filePathThe path to the prefab file to instantiate.
parentIdThe entity id the prefab should be a child of in the transform hierarchy.
positionThe position in world space the prefab should be instantiated in.
Returns
An outcome object with an entityId of the new prefab's container entity; on failure, it comes with an error message detailing the cause of the error.

Implements AzToolsFramework::Prefab::PrefabPublicInterface.

◆ IsInstanceContainerEntity()

bool AzToolsFramework::Prefab::PrefabPublicHandler::IsInstanceContainerEntity ( AZ::EntityId  entityId) const
overridevirtual

Detects if an entity is the container entity for its owning prefab instance.

Parameters
entityIdThe entity to query.
Returns
True if the entity is the container entity for its owning prefab instance, false otherwise.

Implements AzToolsFramework::Prefab::PrefabPublicInterface.

◆ IsLevelInstanceContainerEntity()

bool AzToolsFramework::Prefab::PrefabPublicHandler::IsLevelInstanceContainerEntity ( AZ::EntityId  entityId) const
overridevirtual

Detects if an entity is the container entity for the level prefab instance.

Parameters
entityIdThe entity to query.
Returns
True if the entity is the container entity for the level prefab instance, false otherwise.

Implements AzToolsFramework::Prefab::PrefabPublicInterface.

◆ IsOwnedByPrefabInstance()

bool AzToolsFramework::Prefab::PrefabPublicHandler::IsOwnedByPrefabInstance ( AZ::EntityId  entityId) const
overridevirtual

Detects if an entity is owned by a prefab.

Parameters
entityIdThe entity to query.
Returns
True if the entity is owned by a prefab instance, false otherwise.

Implements AzToolsFramework::Prefab::PrefabPublicInterface.

◆ IsOwnedByProceduralPrefabInstance()

bool AzToolsFramework::Prefab::PrefabPublicHandler::IsOwnedByProceduralPrefabInstance ( AZ::EntityId  entityId) const
overridevirtual

Detects if an entity is owned by a procedural prefab.

Parameters
entityIdThe entity to query.
Returns
True if the entity is owned by a procedural prefab instance, false otherwise.

Implements AzToolsFramework::Prefab::PrefabPublicInterface.

◆ SavePrefab()

PrefabOperationResult AzToolsFramework::Prefab::PrefabPublicHandler::SavePrefab ( AZ::IO::Path  filePath)
overridevirtual

Saves changes to prefab to disk.

Parameters
filePathThe path to the prefab to save.
Returns
Returns Success if the file was saved, or an error message otherwise.

Implements AzToolsFramework::Prefab::PrefabPublicInterface.


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