aboutsummaryrefslogtreecommitdiff
path: root/source/EditorResources.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'source/EditorResources.cpp')
-rw-r--r--source/EditorResources.cpp54
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();