From c9a4b6f50ba5ef8b7097634859a4418cf92c1a40 Mon Sep 17 00:00:00 2001 From: daimini Date: Thu, 22 Apr 2021 14:53:07 -0700 Subject: [PATCH] Better handle the default case for Instantiate --- .../Prefab/PrefabPublicHandler.cpp | 21 +++++++++++-------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabPublicHandler.cpp b/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabPublicHandler.cpp index 8860d4b155..aa43d81a03 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabPublicHandler.cpp +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabPublicHandler.cpp @@ -155,24 +155,27 @@ namespace AzToolsFramework auto prefabEditorEntityOwnershipInterface = AZ::Interface::Get(); if (!prefabEditorEntityOwnershipInterface) { - return AZ::Failure(AZStd::string("Could not create a new prefab out of the entities provided - internal error " + return AZ::Failure(AZStd::string("Could not instantiate prefab - internal error " "(PrefabEditorEntityOwnershipInterface unavailable).")); } - auto instanceToParentUnder = m_instanceEntityMapperInterface->FindOwningInstance(parent); + InstanceOptionalReference instanceToParentUnder; - if (!instanceToParentUnder) + // Get parent entity and owning instance + if (parent.IsValid()) { - instanceToParentUnder = prefabEditorEntityOwnershipInterface->GetRootPrefabInstance(); - if (!parent.IsValid()) - { - parent = instanceToParentUnder->get().GetContainerEntityId(); - } + instanceToParentUnder = m_instanceEntityMapperInterface->FindOwningInstance(parent); } + if (!instanceToParentUnder.has_value()) + { + instanceToParentUnder = prefabEditorEntityOwnershipInterface->GetRootPrefabInstance(); + parent = instanceToParentUnder->get().GetContainerEntityId(); + } + { // Initialize Undo Batch object - ScopedUndoBatch undoBatch("Initialize Prefab"); + ScopedUndoBatch undoBatch("Instantiate Prefab"); PrefabDom instanceToParentUnderDomBeforeCreate; m_instanceToTemplateInterface->GenerateDomForInstance(