diff --git a/SHADE_Engine/src/Editor/EditorWindow/HierarchyPanel/SHHierarchyPanel.cpp b/SHADE_Engine/src/Editor/EditorWindow/HierarchyPanel/SHHierarchyPanel.cpp index f18e1cbd..8cc41d56 100644 --- a/SHADE_Engine/src/Editor/EditorWindow/HierarchyPanel/SHHierarchyPanel.cpp +++ b/SHADE_Engine/src/Editor/EditorWindow/HierarchyPanel/SHHierarchyPanel.cpp @@ -29,6 +29,8 @@ #include "Serialization/Prefab/SHPrefabManager.h" #include "../SHEditorWindowManager.h" #include "../AssetBrowser/SHAssetBrowser.h" +#include "Assets/SHAssetManager.h" +#include "Assets/Asset Types/SHPrefabAsset.h" namespace SHADE @@ -136,6 +138,23 @@ namespace SHADE draggingEntities.clear(); ImGui::ClearDragDrop(); } + //else if(SHDragDrop::currentDragDropTag == SHDragDrop::DRAG_RESOURCE) + //{ + // if (const AssetID* assetPayload = SHDragDrop::AcceptPayload(SHDragDrop::DRAG_RESOURCE)) //If payload is valid + // { + // auto assetId = *assetPayload; + // auto createdEntitiesList = SHSerialization::DeserializeEntitiesFromString(SHAssetManager::GetData(assetId)->data); + // if (!createdEntitiesList.empty()) + // { + // std::vector eidList; + // std::ranges::transform(createdEntitiesList, std::back_inserter(eidList), [](std::pair pair) {return pair.second; }); + // ParentSelectedEntities(eid, eidList); + // SetScrollTo(createdEntitiesList.begin()->second); + // SHPrefabManager::AddEntity(assetId, createdEntitiesList.begin()->second); + // skipFrame = true; + // } + // } + //} } } ImGui::End(); @@ -359,6 +378,20 @@ namespace SHADE draggingEntities.clear(); //ImGui::ClearDragDrop(); } + if (const AssetID* assetPayload = SHDragDrop::AcceptPayload(SHDragDrop::DRAG_RESOURCE)) //If payload is valid + { + auto assetId = *assetPayload; + auto createdEntitiesList = SHSerialization::DeserializeEntitiesFromString(SHAssetManager::GetData(assetId)->data); + if(!createdEntitiesList.empty()) + { + std::vector eidList; + std::ranges::transform(createdEntitiesList, std::back_inserter(eidList), [](std::pair pair){return pair.second;} ); + ParentSelectedEntities(eid, eidList); + SetScrollTo(createdEntitiesList.begin()->second); + SHPrefabManager::AddEntity(assetId, createdEntitiesList.begin()->second); + skipFrame = true; + } + } SHDragDrop::EndTarget(); }