Drag drop prefab onto entity (NON UNDO/REDO ACTION for now)

This commit is contained in:
SHAM-DP 2023-02-28 16:01:52 +08:00
parent 7e34edecdd
commit ef268bc9e5
1 changed files with 33 additions and 0 deletions

View File

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