diff --git a/SHADE_Engine/src/Editor/EditorWindow/EditorPopups/SHEditorPopups.h b/SHADE_Engine/src/Editor/EditorWindow/EditorPopups/SHEditorPopups.h index f1ce4fb5..9e37a98a 100644 --- a/SHADE_Engine/src/Editor/EditorWindow/EditorPopups/SHEditorPopups.h +++ b/SHADE_Engine/src/Editor/EditorWindow/EditorPopups/SHEditorPopups.h @@ -1,10 +1,11 @@ #pragma once +#include "SH_API.h" #include "Editor/EditorWindow/SHPopUpWindow.h" namespace SHADE { - class SHSceneSavePrompt : SHPopUpWindow + class SHSceneSavePrompt : public SHPopUpWindow { public: SHSceneSavePrompt():SHPopUpWindow("Save Scene As", true, 0, 0){} diff --git a/SHADE_Engine/src/Editor/EditorWindow/SHPopUpWindow.h b/SHADE_Engine/src/Editor/EditorWindow/SHPopUpWindow.h index 5d4e5117..b69b3e99 100644 --- a/SHADE_Engine/src/Editor/EditorWindow/SHPopUpWindow.h +++ b/SHADE_Engine/src/Editor/EditorWindow/SHPopUpWindow.h @@ -5,6 +5,7 @@ //#==============================================================# #include #include +#include "SH_API.h" namespace SHADE { @@ -13,9 +14,11 @@ namespace SHADE { public: SHPopUpWindow(std::string_view const& name, bool modal, ImGuiPopupFlags inPopupFlags, ImGuiWindowFlags inWindowFlags); - + virtual ~SHPopUpWindow() = default; virtual void Draw(){}; + bool isOpen; + protected: virtual bool Begin(); @@ -23,7 +26,6 @@ namespace SHADE std::string_view windowName; ImGuiPopupFlags popupFlags; ImGuiWindowFlags windowFlags; - bool isOpen; bool isModal; }; } \ No newline at end of file diff --git a/SHADE_Engine/src/Editor/SHEditor.cpp b/SHADE_Engine/src/Editor/SHEditor.cpp index 4556ae36..fba1c591 100644 --- a/SHADE_Engine/src/Editor/SHEditor.cpp +++ b/SHADE_Engine/src/Editor/SHEditor.cpp @@ -32,6 +32,9 @@ #include "EditorWindow/SHEditorWindowManager.h" #include "EditorWindow/SHEditorWindowIncludes.h" +#include "EditorWindow/SHPopUpWindow.h" +#include "EditorWindow/EditorPopups/SHEditorPopups.h" + //#==============================================================# //|| Library Includes || //#==============================================================# @@ -107,6 +110,9 @@ namespace SHADE SHEditorWindowManager::CreateEditorWindow(); + //Add popup windows + SHEditorWindowManager::CreatePopupWindow(); + io = &ImGui::GetIO(); io->ConfigFlags |= ImGuiConfigFlags_NavEnableKeyboard; // Enable Keyboard Controls @@ -163,7 +169,6 @@ namespace SHADE popupWindow->Draw(); } - RenderSceneNamePrompt(); RenderUnsavedChangesPrompt(); //PollPicking(); @@ -182,37 +187,6 @@ namespace SHADE } } - void SHEditor::RenderSceneNamePrompt() noexcept - { - if(isSceneNamePromptOpen) - { - ImGui::OpenPopup(sceneNamePromptName.data()); - } - - if(ImGui::BeginPopupModal(sceneNamePromptName.data(), &isSceneNamePromptOpen)) - { - static std::string newSceneName{}; - ImGui::Text("Enter new scene name"); - ImGui::InputText("##name", &newSceneName); - ImGui::BeginDisabled(newSceneName.empty()); - if(ImGui::Button("Save")) - { - SaveScene(newSceneName); - newSceneName.clear(); - isSceneNamePromptOpen = false; - ImGui::CloseCurrentPopup(); - } - ImGui::EndDisabled(); - ImGui::SameLine(); - if(ImGui::Button("Cancel")) - { - isSceneNamePromptOpen = false; - ImGui::CloseCurrentPopup(); - } - ImGui::EndPopup(); - } - } - void SHEditor::RenderUnsavedChangesPrompt() noexcept { if(isUnsavedChangesPromptOpen) @@ -225,12 +199,12 @@ namespace SHADE ImGui::Text("You have unsaved changes!"); if(ImGui::Button("Save")) { - isSceneNamePromptOpen = true; + SHEditorWindowManager::GetPopupWindow()->isOpen = true; } ImGui::SameLine(); if(ImGui::Button("Cancel")) { - isUnsavedChangesPromptOpen = false; + SHEditorWindowManager::GetPopupWindow()->isOpen = true; ImGui::CloseCurrentPopup(); } } @@ -568,7 +542,7 @@ namespace SHADE if (newSceneName.empty()) { //Prompt for scene name - isSceneNamePromptOpen = true; + SHEditorWindowManager::GetPopupWindow()->isOpen = true; return false; } //Else We have a new name @@ -649,7 +623,7 @@ namespace SHADE editorState = SHEditor::State::STOP; SHCommandManager::SwapStacks(); SHEventManager::BroadcastEvent(STATE_CHANGE_EVENT, SH_EDITOR_ON_STOP_EVENT); - LoadScene(SHSceneManager::GetCurrentSceneAssetID()); + LoadScene(editorConfig->workingSceneID); } void SHEditor::ProcessShortcuts() diff --git a/SHADE_Engine/src/Editor/SHEditor.h b/SHADE_Engine/src/Editor/SHEditor.h index 103f834f..d616c096 100644 --- a/SHADE_Engine/src/Editor/SHEditor.h +++ b/SHADE_Engine/src/Editor/SHEditor.h @@ -37,8 +37,6 @@ namespace SHADE class SHVkCommandBuffer; class SHVkCommandPool; - - /** * @brief SHEditor static class contains editor variables and implementation of editor functions. * @@ -144,8 +142,6 @@ namespace SHADE */ void Render(); - void RenderSceneNamePrompt() noexcept; - void RenderUnsavedChangesPrompt() noexcept; void InitLayout() noexcept; @@ -156,8 +152,6 @@ namespace SHADE SHEventHandle onEditorStateChanged(SHEventPtr eventPtr); - bool isSceneNamePromptOpen = false; - bool isUnsavedChangesPromptOpen = false; static constexpr std::string_view sceneNamePromptName = "Save scene as...";