diff options
author | rtk0c <[email protected]> | 2022-04-17 20:08:57 -0700 |
---|---|---|
committer | rtk0c <[email protected]> | 2022-04-17 20:08:57 -0700 |
commit | 5424a1d5434e3ddd911a504719918c2df027e2fd (patch) | |
tree | 6275aab13140d81dcc46c8290e73ac9a8bbb5605 /source/EditorResources.cpp | |
parent | afcac59c7d04f4337d6b04ebed8cac7e871ccc50 (diff) |
Changeset: 8 Initial work on sprites and texture system
Diffstat (limited to 'source/EditorResources.cpp')
-rw-r--r-- | source/EditorResources.cpp | 54 |
1 files changed, 41 insertions, 13 deletions
diff --git a/source/EditorResources.cpp b/source/EditorResources.cpp index be7cefb..4f1a7c4 100644 --- a/source/EditorResources.cpp +++ b/source/EditorResources.cpp @@ -25,20 +25,20 @@ EditorContentBrowser::~EditorContentBrowser() { void EditorContentBrowser::Show(bool* open) { ImGuiWindowFlags windowFlags; - if (docked) { + if (mDocked) { // Center window horizontally, align bottom vertically auto& viewportSize = ImGui::GetMainViewport()->Size; ImGui::SetNextWindowPos(ImVec2(viewportSize.x / 2, viewportSize.y), ImGuiCond_Always, ImVec2(0.5f, 1.0f)); - ImGui::SetNextWindowSizeRelScreen(0.8f, 0.5f); + ImGui::SetNextWindowSizeRelScreen(0.8f, mBrowserHeight); windowFlags = ImGuiWindowFlags_NoMove | ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoCollapse; } else { windowFlags = 0; } ImGui::Begin("Content Browser", open, windowFlags); - ImGui::Splitter(true, kSplitterThickness, &splitterLeft, &splitterRight, kLeftPaneMinWidth, kRightPaneMinWidth); + ImGui::Splitter(true, kSplitterThickness, &mSplitterLeft, &mSplitterRight, kLeftPaneMinWidth, kRightPaneMinWidth); - ImGui::BeginChild("LeftPane", ImVec2(splitterLeft - kPadding, 0.0f)); + ImGui::BeginChild("LeftPane", ImVec2(mSplitterLeft - kPadding, 0.0f)); { if (ImGui::Selectable("Settings", mPane == P_Settings)) { mPane = P_Settings; @@ -49,6 +49,9 @@ void EditorContentBrowser::Show(bool* open) { if (ImGui::Selectable("Materials", mPane == P_Material)) { mPane = P_Material; } + if (ImGui::Selectable("Ires", mPane == P_Ires)) { + mPane = P_Ires; + } } ImGui::EndChild(); @@ -57,7 +60,8 @@ void EditorContentBrowser::Show(bool* open) { { switch (mPane) { case P_Settings: { - ImGui::Checkbox("Docked", &docked); + ImGui::Checkbox("Docked", &mDocked); + ImGui::SliderFloat("Height", &mBrowserHeight, 0.1f, 1.0f); } break; case P_Shader: { @@ -68,10 +72,7 @@ void EditorContentBrowser::Show(bool* open) { if (ImGui::Button("Save all")) { auto& shaders = ShaderManager::instance->GetShaders(); for (auto&& [DISCARD, shader] : shaders) { - auto info = shader->GetInfo(); - if (info) { - info->SaveToFile(shader->GetDesignatedMetadataPath()); - } + shader->SaveMetadataToFile(shader->GetDesignatedMetadataPath()); } } @@ -80,9 +81,6 @@ void EditorContentBrowser::Show(bool* open) { auto shader = it->second.Get(); auto& name = shader->GetName(); - shader->GatherInfoIfAbsent(); - auto details = shader->GetInfo(); - bool selected = mEditor->GetSelectedItPtr() == shader; if (ImGui::Selectable(name.c_str(), selected)) { mEditor->SelectIt(shader, EditorInstance::ITT_Shader); @@ -100,7 +98,7 @@ void EditorContentBrowser::Show(bool* open) { case P_Material: { if (ImGui::Button("New")) { int n = std::rand(); - auto mat = new Material(nullptr, "Unnamed Material " + std::to_string(n)); + auto mat = new Material("Unnamed Material " + std::to_string(n)); auto guard = GuardDeletion(mat); auto [DISCARD, inserted] = MaterialManager::instance->SaveMaterial(mat); if (inserted) { @@ -139,6 +137,36 @@ void EditorContentBrowser::Show(bool* open) { } } } break; + + case P_Ires: { + if (ImGui::Button("New")) { + ImGui::OpenPopup("NewIresMenu"); + } + if (ImGui::BeginPopup("NewIresMenu")) { + for (int i = 0; i < IresObject::KD_COUNT; ++i) { + auto kind = static_cast<IresObject::Kind>(i); + if (ImGui::MenuItem(IresObject::ToString(kind).data())) { + auto ires = IresObject::Create(kind); + auto [DISCARD, success] = IresManager::instance->Add(ires.get()); + if (success) { + (void)ires.release(); + } + } + } + ImGui::EndPopup(); + } + + auto& objects = IresManager::instance->GetObjects(); + for (auto it = objects.begin(); it != objects.end(); ++it) { + auto ires = it->second.Get(); + auto& name = ires->GetName(); + + bool selected = mEditor->GetSelectedItPtr() == ires; + if (ImGui::Selectable(name.c_str(), selected)) { + mEditor->SelectIt(ires, EditorInstance::ITT_Ires); + } + } + } break; } } ImGui::EndChild(); |