idk why creation of new material is not working here send help. Change to popup for asset creation
This commit is contained in:
parent
e96db99ee3
commit
7c7589ce8e
|
@ -17,7 +17,7 @@
|
|||
namespace SHADE
|
||||
{
|
||||
SHAssetBrowser::SHAssetBrowser()
|
||||
:SHEditorWindow("\xee\x8b\x87 Asset Browser", ImGuiWindowFlags_MenuBar), rootFolder(SHAssetManager::GetRootFolder()), prevFolder(rootFolder), currentFolder(rootFolder), assetBeingCreated(std::nullopt)
|
||||
:SHEditorWindow("\xee\x8b\x87 Asset Browser", ImGuiWindowFlags_MenuBar), rootFolder(SHAssetManager::GetRootFolder()), prevFolder(rootFolder), currentFolder(rootFolder)
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -34,6 +34,8 @@ namespace SHADE
|
|||
RecursivelyDrawTree(rootFolder);
|
||||
DrawMenuBar();
|
||||
DrawCurrentFolder();
|
||||
DrawAssetBeingCreated();
|
||||
|
||||
}
|
||||
ImGui::End();
|
||||
if(refreshQueued)
|
||||
|
@ -60,6 +62,10 @@ namespace SHADE
|
|||
{
|
||||
QueueRefresh();
|
||||
}
|
||||
if(ImGui::SmallButton(ICON_FA_CIRCLE_PLUS))
|
||||
{
|
||||
isAssetBeingCreated = true;
|
||||
}
|
||||
ImGui::EndMenuBar();
|
||||
}
|
||||
}
|
||||
|
@ -81,21 +87,10 @@ namespace SHADE
|
|||
ImGuiID folderID = ImGui::GetItemID();
|
||||
const ImRect nodeRect = ImRect(ImGui::GetItemRectMin(), ImGui::GetItemRectMax());
|
||||
|
||||
if (ImGui::BeginPopupContextItem())
|
||||
{
|
||||
if (ImGui::BeginMenu("Create Asset"))
|
||||
{
|
||||
//TODO: Change to rttr type enum align
|
||||
if (ImGui::Selectable("Material"))
|
||||
{
|
||||
assetBeingCreated = { folder, AssetType::MATERIAL, "NewMaterial" };
|
||||
ImGui::TreeNodeSetOpen(folderID, true);
|
||||
isOpen = true;
|
||||
}
|
||||
ImGui::EndMenu();
|
||||
}
|
||||
ImGui::EndPopup();
|
||||
}
|
||||
//if (ImGui::BeginPopupContextItem())
|
||||
//{
|
||||
// ImGui::EndPopup();
|
||||
//}
|
||||
|
||||
if (ImGui::IsItemClicked())
|
||||
{
|
||||
|
@ -128,8 +123,6 @@ namespace SHADE
|
|||
vertLineEnd.y = midPoint;
|
||||
}
|
||||
drawList->AddLine(vertLineStart, vertLineEnd, treeLineColor, 1);
|
||||
if(assetBeingCreated.has_value() && std::get<0>(assetBeingCreated.value()) == folder)
|
||||
DrawAssetBeingCreated();
|
||||
|
||||
ImGui::TreePop();
|
||||
}
|
||||
|
@ -282,21 +275,52 @@ namespace SHADE
|
|||
|
||||
void SHAssetBrowser::DrawAssetBeingCreated() noexcept
|
||||
{
|
||||
if (!assetBeingCreated.has_value())
|
||||
return;
|
||||
auto& path = std::get<0>(assetBeingCreated.value());
|
||||
auto& type = std::get<1>(assetBeingCreated.value());
|
||||
auto& assetName = std::get<2>(assetBeingCreated.value());
|
||||
if (ImGui::InputText("##newAssetName", &assetName, ImGuiInputTextFlags_EnterReturnsTrue | ImGuiInputTextFlags_CharsNoBlank))
|
||||
if(isAssetBeingCreated)
|
||||
ImGui::OpenPopup(newAssetPopup.data());
|
||||
|
||||
if(ImGui::BeginPopupModal(newAssetPopup.data(), &isAssetBeingCreated))
|
||||
{
|
||||
AssetID assetId = SHAssetManager::CreateNewAsset(type, assetName);
|
||||
ImGui::RadioButton("Material", true);
|
||||
ImGui::SameLine();
|
||||
if (ImGui::InputText("##newAssetName", &nameOfAssetBeingCreated, ImGuiInputTextFlags_EnterReturnsTrue | ImGuiInputTextFlags_CharsNoBlank | ImGuiInputTextFlags_AutoSelectAll))
|
||||
{
|
||||
AssetID assetId = SHAssetManager::CreateNewAsset(AssetType::MATERIAL, nameOfAssetBeingCreated);
|
||||
if (auto matInspector = SHEditorWindowManager::GetEditorWindow<SHMaterialInspector>())
|
||||
{
|
||||
matInspector->OpenMaterial(assetId, true);
|
||||
}
|
||||
assetBeingCreated.reset();
|
||||
nameOfAssetBeingCreated.clear();
|
||||
QueueRefresh();
|
||||
isAssetBeingCreated = false;
|
||||
ImGui::CloseCurrentPopup();
|
||||
}
|
||||
ImGui::ActivateItem(ImGui::GetItemID());
|
||||
ImGui::EndPopup();
|
||||
}
|
||||
//if (ImGui::BeginMenu("Create Asset"))
|
||||
//{
|
||||
// //TODO: Change to rttr type enum align
|
||||
// if (ImGui::Selectable("Material"))
|
||||
// {
|
||||
// assetBeingCreated = { folder, AssetType::MATERIAL, "NewMaterial" };
|
||||
// ImGui::TreeNodeSetOpen(folderID, true);
|
||||
// isOpen = true;
|
||||
// }
|
||||
// ImGui::EndMenu();
|
||||
//}
|
||||
//if (!assetBeingCreated.has_value())
|
||||
// return;
|
||||
//auto& path = std::get<0>(assetBeingCreated.value());
|
||||
//auto& type = std::get<1>(assetBeingCreated.value());
|
||||
//auto& assetName = std::get<2>(assetBeingCreated.value());
|
||||
//if (ImGui::InputText("##newAssetName", &assetName, ImGuiInputTextFlags_EnterReturnsTrue | ImGuiInputTextFlags_CharsNoBlank | ImGuiInputTextFlags_AutoSelectAll))
|
||||
//{
|
||||
// AssetID assetId = SHAssetManager::CreateNewAsset(type, assetName);
|
||||
// if (auto matInspector = SHEditorWindowManager::GetEditorWindow<SHMaterialInspector>())
|
||||
// {
|
||||
// matInspector->OpenMaterial(assetId, true);
|
||||
// }
|
||||
// assetBeingCreated.reset();
|
||||
// QueueRefresh();
|
||||
//}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -10,7 +10,6 @@ namespace SHADE
|
|||
class SHAssetBrowser final : public SHEditorWindow
|
||||
{
|
||||
public:
|
||||
using AssetEntry = std::tuple<FolderPointer, AssetType, std::string>;
|
||||
SHAssetBrowser();
|
||||
|
||||
void Init();
|
||||
|
@ -28,10 +27,12 @@ namespace SHADE
|
|||
void Refresh() noexcept;
|
||||
|
||||
FolderPointer rootFolder, prevFolder, currentFolder;
|
||||
std::optional<AssetEntry> assetBeingCreated;
|
||||
std::vector<FolderPointer> selectedFolders;
|
||||
std::vector<AssetID> selectedAssets;
|
||||
static constexpr float tileWidth = 50.0f;
|
||||
bool refreshQueued = false;
|
||||
bool isAssetBeingCreated = false;
|
||||
static constexpr std::string_view newAssetPopup = "Create New Asset";
|
||||
std::string nameOfAssetBeingCreated;
|
||||
};
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue