由于我们本来就有了场景打开的函数 所以基本上只需要实现拖拽+文件打开场景
ContentBrowserPanel¶
- 加入ID, 加入风格颜色
ImGui::PushID(filenameString.c_str()); ImGui::PushStyleColor(ImGuiCol_Button, ImVec4(0, 0, 0, 0)); if (ImGui::BeginDragDropSource()) { const wchar_t* itemPath = relativePath.c_str(); ImGui::SetDragDropPayload("CONTENT_BROWSER_ITEM", itemPath, (wcslen(itemPath) + 1) * sizeof(wchar_t)); ImGui::EndDragDropSource(); } ImGui::PopID();
EditorLayer¶
//拖拽
if (ImGui::BeginDragDropTarget())
{
if (const ImGuiPayload* payload = ImGui::AcceptDragDropPayload("CONTENT_BROWSER_ITEM"))
{
const wchar_t* path = (const wchar_t*)payload->Data;
OpenScene(std::filesystem::path(g_AssetPath) / path);
}
ImGui::EndDragDropTarget();
}