diff --git a/docs/editor.todo b/docs/editor.todo index 54abde9..9972ad4 100644 --- a/docs/editor.todo +++ b/docs/editor.todo @@ -2,10 +2,13 @@ Editor: ✔ Come up with project directory structure @done (9/17/2021, 6:46:44 PM) ✔ Make the editor a separate module @high @done (11/1/2021, 2:24:35 PM) - ☐ Implement Run Mode interface class @high + ✔ Implement Run Mode interface class @high @done (2/8/2022, 4:05:17 PM) ☐ Reference raw asset files in a "content" folder@high - ☐ Platform independant file browsing + ✔ Platform independant file browsing @done (2/8/2022, 4:05:29 PM) ☐ Scan script files to make sure they don't overwrite globals + + Panel System: + ☐ Allow for saving custom panel layouts @low Raw Asset Importers: - Need classes to import raw resource files for the editor @@ -17,7 +20,7 @@ Editor: Project (Class for loading and tracking project data): ✔ Generate new project at given location @done (11/9/2021, 3:26:03 PM) ☐ Save project data - ☐ Open existing project + ✔ Open existing project @done (2/8/2022, 4:05:42 PM) GUI Panels: Project Overview (Tree view): diff --git a/src/core/core.cpp b/src/core/core.cpp index 66629e6..d977b54 100644 --- a/src/core/core.cpp +++ b/src/core/core.cpp @@ -68,7 +68,7 @@ namespace lunarium mpInstance->mpWindow->GetPosition(&mpInstance->mState.Display.WindowStartPosition.X, &mpInstance->mState.Display.WindowStartPosition.Y); - //mpInstance->mState.SaveToFile(); + mpInstance->mState.SaveToFile(); // Run Mode shuts down first mpInstance->mpRunMode->Shutdown(); diff --git a/src/run_modes/editor/editor.cpp b/src/run_modes/editor/editor.cpp index fa095b1..ba547ac 100644 --- a/src/run_modes/editor/editor.cpp +++ b/src/run_modes/editor/editor.cpp @@ -10,6 +10,7 @@ #include "panel_manager.h" #include +#include #include #include #include @@ -311,10 +312,13 @@ namespace editor { const ImGuiViewport* viewport = ImGui::GetMainViewport(); ImGui::SetNextWindowViewport(viewport->ID); - float height = viewport->WorkSize.y * 0.05f; + float height = viewport->WorkSize.y * 0.035f; float ypos = (viewport->WorkPos.y + viewport->WorkSize.y) - height; ImGui::SetNextWindowSize(ImVec2(viewport->WorkSize.x, height), ImGuiCond_Always); ImGui::SetNextWindowPos(ImVec2(viewport->WorkPos.x, ypos), ImGuiCond_Always); + ImGui::PushStyleVar( ImGuiStyleVar_WindowRounding, 0.0f ); + ImGui::PushStyleVar( ImGuiStyleVar_WindowBorderSize, 0.1f ); + ImGui::PushStyleVar( ImGuiStyleVar_WindowPadding, ImVec2( 0.0f, 0.0f ) ); ImGui::Begin("status bar", nullptr, ImGuiWindowFlags_NoCollapse | ImGuiWindowFlags_NoMove | ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoTitleBar | ImGuiWindowFlags_NoScrollbar | ImGuiWindowFlags_NoDocking ); @@ -323,7 +327,7 @@ namespace editor { ImGui::AlignTextToFramePadding(); ImGui::TableNextColumn(); - ImGui::Text("Lunarium"); + ImGui::Text("Lunarium (%s)", Version::GetVersion().ToString().c_str()); ImGui::TableNextColumn(); ImGui::Text("Testing"); ImGui::TableNextColumn(); @@ -331,6 +335,7 @@ namespace editor ImGui::EndTable(); } + ImGui::PopStyleVar(3); ImGui::End(); } diff --git a/src/run_modes/editor/panel_manager.cpp b/src/run_modes/editor/panel_manager.cpp index 51e797e..2f132d3 100644 --- a/src/run_modes/editor/panel_manager.cpp +++ b/src/run_modes/editor/panel_manager.cpp @@ -116,11 +116,6 @@ namespace lunarium { namespace editor return nullptr; } - const PanelManager::DockSpaces& PanelManager::GetDockSpaces() const - { - return mDockSpaces; - } - void PanelManager::ResetDocking() { mResetDockSpace = true; @@ -196,25 +191,35 @@ namespace lunarium { namespace editor void PanelManager::MakeDockSpaces() { ImGuiViewport* Viewport = ImGui::GetMainViewport(); - mDockSpaces.Main = ImGui::DockSpace(ImGui::GetID("Lunarium Editor Dockspace")); - if (!ImGui::DockBuilderGetNode(mDockSpaces.Main) || mResetDockSpace) + mDockSpaceID = ImGui::DockSpace(ImGui::GetID("Lunarium Editor Dockspace")); + if (!ImGui::DockBuilderGetNode(mDockSpaceID) || mResetDockSpace) { Logger::Log(mpEditor->GetLogCat(), LogLevel::INFO, "Resetting Dockspaces"); mResetDockSpace = false; - ImGui::DockBuilderRemoveNode(mDockSpaces.Main); - ImGui::DockBuilderAddNode(mDockSpaces.Main, ImGuiDockNodeFlags_DockSpace); - ImGui::DockBuilderSetNodeSize(mDockSpaces.Main, Viewport->Size); + ImGui::DockBuilderRemoveNode(mDockSpaceID); + ImGui::DockBuilderAddNode(mDockSpaceID, ImGuiDockNodeFlags_DockSpace); + ImGui::DockBuilderSetNodeSize(mDockSpaceID, Viewport->Size); //ImGui::DockBuilderSetNodePos(mDockSpaces.Main, Viewport->WorkPos); - ImGui::DockBuilderSplitNode(mDockSpaces.Main, ImGuiDir_Left, 0.25f, &mDockSpaces.Left, &mDockSpaces.Center); - ImGui::DockBuilderSplitNode(mDockSpaces.Center, ImGuiDir_Right, 0.25f, &mDockSpaces.Right, &mDockSpaces.Center); - ImGui::DockBuilderSplitNode(mDockSpaces.Center, ImGuiDir_Down, 0.25f, &mDockSpaces.Bottom, &mDockSpaces.Center); - ImGui::DockBuilderFinish(mDockSpaces.Main); + ImGui::DockBuilderSplitNode(mDockSpaceID, ImGuiDir_Left, 0.25f, &mDockZoneIDs[PanelDockZone::DDZ_LEFT], &mDockZoneIDs[PanelDockZone::DDZ_CENTER]); + ImGui::DockBuilderSplitNode(mDockZoneIDs[PanelDockZone::DDZ_CENTER], ImGuiDir_Right, 0.2f, &mDockZoneIDs[PanelDockZone::DDZ_RIGHT], &mDockZoneIDs[PanelDockZone::DDZ_CENTER]); + ImGui::DockBuilderSplitNode(mDockZoneIDs[PanelDockZone::DDZ_CENTER], ImGuiDir_Down, 0.25f, &mDockZoneIDs[PanelDockZone::DDZ_BOTTOM], &mDockZoneIDs[PanelDockZone::DDZ_CENTER]); + ImGui::DockBuilderFinish(mDockSpaceID); // Dock Panels - ImGui::DockBuilderDockWindow("World View", mDockSpaces.Center); - + // ImGui::DockBuilderDockWindow("World View",mDockZoneIDs[PanelDefaultDockZone::DDZ_CENTER]); + // ImGui::DockBuilderDockWindow("World Tree", mDockZoneIDs[PanelDefaultDockZone::DDZ_LEFT]); + // ImGui::DockBuilderDockWindow("Properties", mDockZoneIDs[PanelDefaultDockZone::DDZ_RIGHT]); + // ImGui::DockBuilderDockWindow("Asset Browser", mDockZoneIDs[PanelDefaultDockZone::DDZ_BOTTOM]); + for (auto iter = mPanels.begin(); iter != mPanels.end(); iter++) + { + PanelDockZone dz = iter->second->GetDockZone(); + if (dz != PanelDockZone::DDZ_NONE) + { + ImGui::DockBuilderDockWindow(iter->second->GetName(), mDockZoneIDs[dz]); + } + } } } diff --git a/src/run_modes/editor/panel_manager.h b/src/run_modes/editor/panel_manager.h index 032af99..a669bd4 100644 --- a/src/run_modes/editor/panel_manager.h +++ b/src/run_modes/editor/panel_manager.h @@ -9,6 +9,7 @@ #ifndef PANEL_MANAGER_H_ #define PANEL_MANAGER_H_ +#include "panels/panel_defs.h" #include //#include "panels/mainPanel.h" #include "panels/iPanel.h" @@ -21,16 +22,6 @@ namespace editor class Editor; class PanelManager { - public: - struct DockSpaces - { - unsigned int Main; - unsigned int Left; - unsigned int Right; - unsigned int Center; - // unsigned int Top; - unsigned int Bottom; - }; public: static PanelManager& GetInstance(); @@ -43,7 +34,6 @@ namespace editor bool IsOpen(PanelType type); Panel* GetPanel(PanelType type); - const DockSpaces& GetDockSpaces() const; void ResetDocking(); void OnTick(double delta); @@ -52,9 +42,10 @@ namespace editor private: Editor* mpEditor; // MainPanel* mpMainPanel; - DockSpaces mDockSpaces; bool mResetDockSpace; std::map mPanels; + unsigned int mDockSpaceID; + std::map mDockZoneIDs; private: static PanelManager* mpInstance; diff --git a/src/run_modes/editor/panels/about.cpp b/src/run_modes/editor/panels/about.cpp index 01be194..3880eac 100644 --- a/src/run_modes/editor/panels/about.cpp +++ b/src/run_modes/editor/panels/about.cpp @@ -16,7 +16,7 @@ namespace lunarium namespace editor { AboutPanel::AboutPanel() - : Panel(PanelType::PT_ABOUT) + : Panel(PanelType::PT_ABOUT, "About", PanelDockZone::DDZ_NONE) { } @@ -27,7 +27,7 @@ namespace editor return false; ImGui::SetNextWindowSize(ImVec2(300, ImGui::GetFrameHeight() * 20)); - if (!ImGui::Begin("About", &mIsOpen, ImGuiWindowFlags_NoCollapse )) + if (!ImGui::Begin(GetName(), &mIsOpen, ImGuiWindowFlags_NoCollapse )) { ImGui::End(); return false; diff --git a/src/run_modes/editor/panels/assetBrowser.cpp b/src/run_modes/editor/panels/assetBrowser.cpp index 4d820f6..45e9064 100644 --- a/src/run_modes/editor/panels/assetBrowser.cpp +++ b/src/run_modes/editor/panels/assetBrowser.cpp @@ -15,7 +15,8 @@ namespace lunarium namespace editor { AssetBrowser::AssetBrowser(std::filesystem::path dir) - : Panel(PanelType::PT_ASSET_BROWSER, true), mAssetDirectory(dir), mTreeRoot(nullptr), mSelectedNode(nullptr) + : Panel(PanelType::PT_ASSET_BROWSER, "Asset Browser", PanelDockZone::DDZ_BOTTOM, true), + mAssetDirectory(dir), mTreeRoot(nullptr), mSelectedNode(nullptr) { mTreeRoot = ReloadAssets(mAssetDirectory); mSelectedNode = mTreeRoot; @@ -31,7 +32,7 @@ namespace editor if (!mIsOpen) return false; - if (!ImGui::Begin("Asset Browser", &mIsOpen, ImGuiWindowFlags_NoCollapse | ImGuiWindowFlags_NoScrollbar)) + if (!ImGui::Begin(GetName(), &mIsOpen, ImGuiWindowFlags_NoCollapse | ImGuiWindowFlags_NoScrollbar)) { ImGui::End(); return false; diff --git a/src/run_modes/editor/panels/iPanel.cpp b/src/run_modes/editor/panels/iPanel.cpp index 0b11272..715e023 100644 --- a/src/run_modes/editor/panels/iPanel.cpp +++ b/src/run_modes/editor/panels/iPanel.cpp @@ -15,8 +15,8 @@ namespace lunarium { namespace editor { - Panel::Panel(PanelType type,bool isOpen) - : mType(type), mIsOpen(isOpen), mForceDock(false) + Panel::Panel(PanelType type, std::string name, PanelDockZone dock_zone, bool isOpen) + : mType(type), mIsOpen(isOpen), mPanelName(name), mDockZone(dock_zone) { } @@ -26,6 +26,16 @@ namespace editor return mType; } + const char* Panel::GetName() const + { + return mPanelName.c_str(); + } + + PanelDockZone Panel::GetDockZone() const + { + return mDockZone; + } + void Panel::SetOpen(bool isOpen) { mIsOpen = isOpen; @@ -48,11 +58,6 @@ namespace editor w = mWidth; h = mHeight; } - - void Panel::ForceDock() - { - mForceDock = true; - } void Panel::Update(float dt) { diff --git a/src/run_modes/editor/panels/iPanel.h b/src/run_modes/editor/panels/iPanel.h index c39ac39..1a04e98 100644 --- a/src/run_modes/editor/panels/iPanel.h +++ b/src/run_modes/editor/panels/iPanel.h @@ -9,29 +9,21 @@ #ifndef PANEL_H_ #define PANEL_H_ +#include "panel_defs.h" + +#include + namespace lunarium { namespace editor { class Editor; - - enum PanelType - { - PT_MAIN, - PT_ABOUT, - PT_WORLD_TREE, - PT_WORLD_VIEW, - PT_ASSET_BROWSER, - PT_PROPERTIES_VIEW, - PT_CONSOLE, - PT_UNKNOWN, - }; - class Panel { public: - Panel(PanelType type, bool isOpen = false); + Panel(PanelType type, std::string name, PanelDockZone dock_zone, bool isOpen = false); PanelType GetType() const; + const char* GetName() const; virtual void Update(float dt); virtual bool DoFrame() = 0; @@ -39,12 +31,13 @@ namespace editor bool IsOpen(); void GetPosition(int& x, int& y) const; void GetSize(int& w, int& h) const; - void ForceDock(); + PanelDockZone GetDockZone() const; protected: PanelType mType; + std::string mPanelName; bool mIsOpen; - bool mForceDock; + PanelDockZone mDockZone; // Editor* mpEditor; int mX; diff --git a/src/run_modes/editor/panels/mainPanel.cpp b/src/run_modes/editor/panels/mainPanel.cpp deleted file mode 100644 index e31c87a..0000000 --- a/src/run_modes/editor/panels/mainPanel.cpp +++ /dev/null @@ -1,248 +0,0 @@ -/****************************************************************************** -* File - mainPanel.cpp -* Author - Joey Pollack -* Date - 2021/11/01 (y/m/d) -* Mod Date - 2021/11/01 (y/m/d) -* Description - The main window for the editor. -******************************************************************************/ - -#include "mainPanel.h" - -#include "../editor.h" -#include -#include -#include // To use the DockWindowXXX methods -#include -#include "../panel_manager.h" - -namespace lunarium -{ -namespace editor -{ - MainPanel* MainPanel::mpInstance = nullptr; - MainPanel::MainPanel() - : Panel(PT_MAIN, true), mpEditor(nullptr), mResetDockSpace(false) - { - } - - - MainPanel& MainPanel::GetInstance() - { - if (!mpInstance) - { - mpInstance = new MainPanel; - } - - return *mpInstance; - } - - - void MainPanel::FreeInstance() - { - delete mpInstance; - mpInstance = nullptr; - } - - void MainPanel::SetEditor(Editor* e) - { - mpEditor = e; - } - - const MainPanel::DockSpaces& MainPanel::GetDockSpaces() const - { - return mDockSpaces; - } - - void MainPanel::ResetDockSpace() - { - mResetDockSpace = true; - } - - bool MainPanel::DoFrame() - { - if (!mIsOpen) - return false; - - DoMainMenu(); - - ImGuiViewport* Viewport = ImGui::GetMainViewport(); - ImGui::SetNextWindowPos( Viewport->WorkPos ); - ImGui::SetNextWindowSize( Viewport->WorkSize ); - ImGui::SetNextWindowViewport( Viewport->ID ); - ImGuiWindowFlags WindowFlags = 0; - WindowFlags |= ImGuiWindowFlags_NoTitleBar | ImGuiWindowFlags_NoCollapse | ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoMove | ImGuiWindowFlags_NoDocking; - WindowFlags |= ImGuiWindowFlags_NoBringToFrontOnFocus | ImGuiWindowFlags_NoNavFocus; - - ImGui::PushStyleVar( ImGuiStyleVar_WindowRounding, 0.0f ); - ImGui::PushStyleVar( ImGuiStyleVar_WindowBorderSize, 0.0f ); - ImGui::PushStyleVar( ImGuiStyleVar_WindowPadding, ImVec2( 0.0f, 0.0f ) ); - - - - // Core::MainWindow().GetFramebufferSize(&mWidth, &mHeight); - // Core::MainWindow().GetPosition(&mX, &mY); - - float double_frame_height = ImGui::GetFrameHeight() * 2; - - // ImGui::PushStyleVar(ImGuiStyleVar_WindowBorderSize, 0.0f); - // ImGui::SetNextWindowSize(ImVec2(mWidth, mHeight - double_frame_height), ImGuiCond_Always); - // ImGui::SetNextWindowPos(ImVec2(mX, mY + ImGui::GetFrameHeight()), ImGuiCond_Always); - if (!ImGui::Begin("Lunarium Editor", &mIsOpen, WindowFlags)) - { - MakeDockSpaces(); - ImGui::End(); - return false; - } - - ImGui::PopStyleVar( 3 ); - - MakeDockSpaces(); - -// ImGui::PopStyleVar(); - ImGui::End(); - - // // STATUS BAR - // const ImGuiViewport* viewport = ImGui::GetMainViewport(); - // ImGui::SetNextWindowViewport(viewport->ID); - // ImGui::SetNextWindowSize(ImVec2(mWidth, ImGui::GetFrameHeight() - 15.0f), ImGuiCond_Always); - // ImGui::SetNextWindowPos(ImVec2(mX, mY + (mHeight - ImGui::GetFrameHeight() - 8.0f)), ImGuiCond_Always); - // ImGui::Begin("status bar", &mIsOpen, ImGuiWindowFlags_NoCollapse - // | ImGuiWindowFlags_NoMove | ImGuiWindowFlags_NoResize - // | ImGuiWindowFlags_NoTitleBar | ImGuiWindowFlags_NoScrollbar | ImGuiWindowFlags_NoDocking ); - - // if (ImGui::BeginTable("status", 3, ImGuiTableFlags_BordersInnerV)) - // { - // ImGui::AlignTextToFramePadding(); - // ImGui::TableNextColumn(); - // ImGui::Text("Lunarium"); - // ImGui::TableNextColumn(); - // ImGui::Text("Testing"); - // ImGui::TableNextColumn(); - // ImGui::Text("Status Bar"); - // ImGui::EndTable(); - // } - - // ImGui::End(); - - return true; - } - - void MainPanel::MakeDockSpaces() - { - ImGuiViewport* Viewport = ImGui::GetMainViewport(); - mDockSpaces.Main = ImGui::DockSpace(ImGui::GetID("Lunarium Editor Dockspace"), Viewport->Size); - if (!ImGui::DockBuilderGetNode(mDockSpaces.Main) || mResetDockSpace) - { - Logger::Log(mpEditor->GetLogCat(), LogLevel::INFO, "Resetting Dockspaces"); - - mResetDockSpace = false; - ImGui::DockBuilderRemoveNode(mDockSpaces.Main); - ImGui::DockBuilderAddNode(mDockSpaces.Main, ImGuiDockNodeFlags_DockSpace); - ImGui::DockBuilderSetNodeSize(mDockSpaces.Main, Viewport->Size); - //ImGui::DockBuilderSetNodePos(mDockSpaces.Main, Viewport->WorkPos); - - ImGui::DockBuilderSplitNode(mDockSpaces.Main, ImGuiDir_Left, 0.25f, &mDockSpaces.Left, &mDockSpaces.Center); - ImGui::DockBuilderSplitNode(mDockSpaces.Center, ImGuiDir_Right, 0.25f, &mDockSpaces.Right, &mDockSpaces.Center); - ImGui::DockBuilderSplitNode(mDockSpaces.Center, ImGuiDir_Down, 0.25f, &mDockSpaces.Bottom, &mDockSpaces.Center); - ImGui::DockBuilderFinish(mDockSpaces.Main); - - // Dock Panels - ImGui::DockBuilderDockWindow("World View", mDockSpaces.Center); - - } - //ImGui::DockSpace(mDockSpaces.Main); - - } - - void MainPanel::DoMainMenu() - { - ImGui::BeginMainMenuBar(); - - // File - if (ImGui::BeginMenu("File")) - { - if (ImGui::MenuItem("New Project")) - { - mpEditor->NewProject(); - } - - if (ImGui::MenuItem("Open Project")) - { - mpEditor->OpenProject(); - } - - if (ImGui::MenuItem("Save Project")) - { - mpEditor->SaveProject(); - } - - if (ImGui::MenuItem("Save Project As")) - { - mpEditor->SaveAs(); - } - - ImGui::Separator(); - - if (ImGui::MenuItem("Exit")) - { - mpEditor->Exit(); - } - ImGui::EndMenu(); - } - - if (ImGui::BeginMenu("Windows")) - { - if (ImGui::MenuItem("Reset Window Docking")) - { - ResetDockSpace(); - PanelManager::GetInstance().ResetDocking(); - } - ImGui::EndMenu(); - } - - // Tools - if (ImGui::BeginMenu("Tools")) - { - if (ImGui::MenuItem("Map Editor")) - { - mpEditor->OpenMapEditor(); - } - ImGui::EndMenu(); - } - - // TODO: If map editor is open show it's menu - if (mpEditor->IsToolOpen(ToolType::TT_MAP_EDITOR)) - { - if (ImGui::BeginMenu("Map Editor")) - { - if (ImGui::BeginMenu("Windows")) - { - - ImGui::EndMenu(); - } - - if (ImGui::BeginMenu("Settings")) - { - - ImGui::EndMenu(); - } - - - ImGui::EndMenu(); - } - } - - if (ImGui::BeginMenu("Help")) - { - if (ImGui::MenuItem("About")) - { - mpEditor->ShowAboutPanel(); - } - - ImGui::EndMenu(); - } - - ImGui::EndMainMenuBar(); - } -} -} \ No newline at end of file diff --git a/src/run_modes/editor/panels/mainPanel.h b/src/run_modes/editor/panels/mainPanel.h deleted file mode 100644 index 15f2dda..0000000 --- a/src/run_modes/editor/panels/mainPanel.h +++ /dev/null @@ -1,61 +0,0 @@ -/****************************************************************************** -* File - mainPanel.h -* Author - Joey Pollack -* Date - 2021/11/01 (y/m/d) -* Mod Date - 2021/11/01 (y/m/d) -* Description - The main window for the editor. -******************************************************************************/ - -#ifndef PANEL_MAIN_H_ -#define PANEL_MAIN_H_ - -#include "iPanel.h" - -namespace lunarium -{ -namespace editor -{ - class Editor; - class MainPanel : public Panel - { - public: - struct DockSpaces - { - unsigned int Main; - unsigned int Left; - unsigned int Right; - unsigned int Center; - // unsigned int Top; - unsigned int Bottom; - }; - - public: - MainPanel(); - static MainPanel& GetInstance(); - static void FreeInstance(); - - void SetEditor(Editor* e); - const DockSpaces& GetDockSpaces() const; - void ResetDockSpace(); - - // Returns false if the window is closed - bool DoFrame(); - - private: - static MainPanel* mpInstance; - MainPanel(const MainPanel&) = delete; - MainPanel& operator=(const MainPanel&) = delete; - - private: - Editor* mpEditor; - DockSpaces mDockSpaces; - bool mResetDockSpace; - - private: // HELPERS - void DoMainMenu(); - void MakeDockSpaces(); - }; -} -} - -#endif // PANEL_MAIN_H_ \ No newline at end of file diff --git a/src/run_modes/editor/panels/panel_defs.h b/src/run_modes/editor/panels/panel_defs.h new file mode 100644 index 0000000..b6f5556 --- /dev/null +++ b/src/run_modes/editor/panels/panel_defs.h @@ -0,0 +1,37 @@ +/****************************************************************************** +* File - panel_defs.h +* Author - Joey Pollack +* Date - 2022/02/08 (y/m/d) +* Mod Date - 2022/02/08 (y/m/d) +* Description - Common definitions for the panel system +******************************************************************************/ + +#ifndef PANEL_DEFS_H_ +#define PANEL_DEFS_H_ + +namespace lunarium { namespace editor +{ + enum PanelType + { + PT_MAIN, + PT_ABOUT, + PT_WORLD_TREE, + PT_WORLD_VIEW, + PT_ASSET_BROWSER, + PT_PROPERTIES_VIEW, + PT_CONSOLE, + PT_UNKNOWN, + }; + + enum PanelDockZone + { + DDZ_LEFT, + DDZ_CENTER, + DDZ_RIGHT, + DDZ_BOTTOM, + DDZ_NONE + }; + +}} + +#endif // PANEL_DEFS_H_ \ No newline at end of file diff --git a/src/run_modes/editor/panels/propertiesView.cpp b/src/run_modes/editor/panels/propertiesView.cpp index d625237..d0163b9 100644 --- a/src/run_modes/editor/panels/propertiesView.cpp +++ b/src/run_modes/editor/panels/propertiesView.cpp @@ -14,7 +14,7 @@ namespace lunarium { namespace editor { PropertiesView::PropertiesView() - : Panel(PT_PROPERTIES_VIEW, true) + : Panel(PT_PROPERTIES_VIEW, "Properties", PanelDockZone::DDZ_RIGHT, true) { } @@ -24,7 +24,7 @@ namespace lunarium { namespace editor if (!mIsOpen) return false; - if (!ImGui::Begin("Properties", &mIsOpen, ImGuiWindowFlags_NoCollapse | ImGuiWindowFlags_NoScrollbar)) + if (!ImGui::Begin(GetName(), &mIsOpen, ImGuiWindowFlags_NoCollapse | ImGuiWindowFlags_NoScrollbar)) { ImGui::End(); return false; diff --git a/src/run_modes/editor/panels/worldTree.cpp b/src/run_modes/editor/panels/worldTree.cpp index df09492..bc6e873 100644 --- a/src/run_modes/editor/panels/worldTree.cpp +++ b/src/run_modes/editor/panels/worldTree.cpp @@ -16,7 +16,7 @@ namespace lunarium namespace editor { WorldTree::WorldTree() - : Panel(PT_WORLD_TREE, true), mpWorld(nullptr) + : Panel(PT_WORLD_TREE, "World Tree", PanelDockZone::DDZ_LEFT, true), mpWorld(nullptr) { } @@ -36,7 +36,7 @@ namespace editor if (!mIsOpen) return false; - if (!ImGui::Begin("World Tree", &mIsOpen, ImGuiWindowFlags_NoCollapse | ImGuiWindowFlags_NoScrollbar)) + if (!ImGui::Begin(GetName(), &mIsOpen, ImGuiWindowFlags_NoCollapse | ImGuiWindowFlags_NoScrollbar)) { ImGui::End(); return false; diff --git a/src/run_modes/editor/panels/worldView.cpp b/src/run_modes/editor/panels/worldView.cpp index 73264b6..791db83 100644 --- a/src/run_modes/editor/panels/worldView.cpp +++ b/src/run_modes/editor/panels/worldView.cpp @@ -18,7 +18,7 @@ namespace lunarium namespace editor { WorldView::WorldView() - : Panel(PT_WORLD_VIEW, true), mpWorld(nullptr) + : Panel(PT_WORLD_VIEW, "World View", PanelDockZone::DDZ_CENTER ,true), mpWorld(nullptr) { } @@ -28,16 +28,7 @@ namespace editor if (!mIsOpen) return false; - //ImGui::SetNextWindowPosition() - - if (mForceDock) - { - mForceDock = false; - //ImGui::SetNextWindowDockID(PanelManager::GetInstance().GetDockSpaces().Center, ImGuiCond_Appearing); - Logger::Log(LogCategory::CORE, LogLevel::INFO, "Attempting force-dock world view panel"); - } - - if (!ImGui::Begin("World View", &mIsOpen, ImGuiWindowFlags_NoCollapse | ImGuiWindowFlags_NoScrollbar)) + if (!ImGui::Begin(GetName(), &mIsOpen, ImGuiWindowFlags_NoCollapse | ImGuiWindowFlags_NoScrollbar)) { ImGui::End(); return false;