aboutsummaryrefslogtreecommitdiff
path: root/source/EditorResources.cpp
diff options
context:
space:
mode:
authorhnOsmium0001 <[email protected]>2022-04-09 13:29:41 -0700
committerhnOsmium0001 <[email protected]>2022-04-09 13:29:41 -0700
commit906557f094e407ce21d429ef647bc75fe3179cf1 (patch)
tree5e6aaed6537a0328318b6cd6561f6a76bf8aa27d /source/EditorResources.cpp
parente47a98793e58a5dbbe76bfed27e59408e43538e4 (diff)
More work on editor
Diffstat (limited to 'source/EditorResources.cpp')
-rw-r--r--source/EditorResources.cpp71
1 files changed, 71 insertions, 0 deletions
diff --git a/source/EditorResources.cpp b/source/EditorResources.cpp
index 0f91523..722c1f1 100644
--- a/source/EditorResources.cpp
+++ b/source/EditorResources.cpp
@@ -1 +1,72 @@
#include "EditorResources.hpp"
+
+#include "EditorAttachmentImpl.hpp"
+#include "EditorCore.hpp"
+#include "EditorInspector.hpp"
+#include "EditorNotification.hpp"
+#include "EditorUtils.hpp"
+#include "Shader.hpp"
+
+#include <imgui.h>
+
+EditorContentBrowser::EditorContentBrowser(EditorInspector* inspector)
+ : mInspector{ inspector } {
+}
+
+void EditorContentBrowser::Show() {
+ if (visible) {
+ ImGuiWindowFlags windowFlags;
+ if (docked) {
+ // 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);
+ windowFlags = ImGuiWindowFlags_NoMove | ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoCollapse;
+ } else {
+ windowFlags = 0;
+ }
+ ImGui::Begin("Content Browser", &visible, windowFlags);
+
+ ImGui::Splitter(true, kSplitterThickness, &splitterLeft, &splitterRight, kLeftPaneMinWidth, kRightPaneMinWidth);
+
+ ImGui::BeginChild("LeftPane", ImVec2(splitterLeft - kPadding, 0.0f));
+
+ if (ImGui::Selectable("Settings", mPane == P_Settings)) {
+ mPane = P_Settings;
+ }
+ if (ImGui::Selectable("Shaders", mPane == P_Shader)) {
+ mPane = P_Shader;
+ }
+
+ ImGui::EndChild(); // Window "LeftPane"
+
+ ImGui::SameLine(0.0f, kPadding + kSplitterThickness + kPadding);
+ ImGui::BeginChild("RightPane"); // Fill remaining space
+
+ switch (mPane) {
+ case P_Settings: {
+ ImGui::Checkbox("Docked", &docked);
+ } break;
+
+ case P_Shader: {
+ auto& shaders = ShaderManager::instance->GetShaders();
+ for (auto it = shaders.begin(); it != shaders.end(); ++it) {
+ auto name = it.key();
+ auto shader = it.value().Get();
+
+ shader->GatherDetailsIfAbsent();
+ auto details = shader->GetDetails();
+ auto ea = static_cast<EaShader*>(shader->GetEditorAttachment());
+
+ if (ImGui::Selectable(name, mInspector->GetCurrentTarget() == ea)) {
+ mInspector->SetCurrentTarget(ea);
+ }
+ }
+ } break;
+ }
+
+ ImGui::EndChild(); // Window "RightPane"
+
+ ImGui::End();
+ }
+}