diff --git a/engine/include/editor/editor.h b/engine/include/editor/editor.h index d415d4c..3d7906e 100644 --- a/engine/include/editor/editor.h +++ b/engine/include/editor/editor.h @@ -1,12 +1,13 @@ #pragma once #include "module/module.h" namespace api { - class EDITOR_API EditorModule : public api::IDynamicModule + class EDITOR_API EditorModule : public IDynamicModule { public: void OnLoad(int argc, char** argv) override; void OnUnload() override; void InitMetaData(void) override {}; + void Initialize(void)override; }; IMPLEMENT_DYNAMIC_MODULE(EDITOR_API, EditorModule, editor) } \ No newline at end of file diff --git a/engine/modules/engine/app/impl/app_impl.inl b/engine/modules/engine/app/impl/app_impl.inl index e69de29..f1a4bcf 100644 --- a/engine/modules/engine/app/impl/app_impl.inl +++ b/engine/modules/engine/app/impl/app_impl.inl @@ -0,0 +1,4 @@ +#include "data/global.h" +namespace api { + APP_API EngineConfig gEngineConfig{}; +} \ No newline at end of file diff --git a/engine/modules/engine/app/include/data/global.h b/engine/modules/engine/app/include/data/global.h index dc2677f..8eea15e 100644 --- a/engine/modules/engine/app/include/data/global.h +++ b/engine/modules/engine/app/include/data/global.h @@ -1,6 +1,10 @@ +#include "engine_config.h" +#include "project_config.h" namespace api { constexpr const char* CFileResourcePath = "/work/assets/file_resource.meta"; constexpr const char* CFileFlagName = "/work/assets/file_flag.meta"; constexpr const char* CFileMapName = "/work/assets/file_map.meta"; constexpr const char* CFileMountName = "/work/assets/file_mount.meta"; + + extern APP_API EngineConfig gEngineConfig; } \ No newline at end of file diff --git a/engine/modules/engine/app/src/app.cpp b/engine/modules/engine/app/src/app.cpp index e69de29..96369dc 100644 --- a/engine/modules/engine/app/src/app.cpp +++ b/engine/modules/engine/app/src/app.cpp @@ -0,0 +1,4 @@ +#include "data/engine_config.h" +namespace api { + +} \ No newline at end of file diff --git a/engine/src/editor/editor.cpp b/engine/src/editor/editor.cpp index 64c1969..a17ccbf 100644 --- a/engine/src/editor/editor.cpp +++ b/engine/src/editor/editor.cpp @@ -1,14 +1,26 @@ #include "editor/editor.h" +#include "data/global.h" #include "imgui.h" namespace api { void EditorModule::OnLoad(int argc, char** argv) { - IMGUI_CHECKVERSION(); - ImGui::CreateContext(); + } void EditorModule::OnUnload() { } - + void EditorModule::Initialize(void) + { + IDynamicModule::Initialize(); + IMGUI_CHECKVERSION(); + ImGui::CreateContext(); + ImGui::StyleColorsDark(); + ImGuiIO& io = ImGui::GetIO(); + io.ConfigFlags |= ImGuiConfigFlags_NavEnableKeyboard; // 可选:启用键盘导航 + io.ConfigFlags |= ImGuiConfigFlags_DockingEnable; // 可选:启用Docking + io.ConfigFlags |= ImGuiConfigFlags_ViewportsEnable; // 可选:启用多视口 + if (gEngineConfig.API == GraphicsAPI::Vulkan) { + } + } } \ No newline at end of file diff --git a/engine/src/engine/api.cpp b/engine/src/engine/api.cpp index 66e4137..5619d66 100644 --- a/engine/src/engine/api.cpp +++ b/engine/src/engine/api.cpp @@ -1,4 +1,5 @@ #include "engine/api.h" +#include "app_impl.inl" #include "os/file_manager.h" #include "xmalloc_new_delete.h" class ENGINE_API EngineModule : public api::IDynamicModule diff --git a/engine/xmake.lua b/engine/xmake.lua index d7645e7..c6b1fdc 100644 --- a/engine/xmake.lua +++ b/engine/xmake.lua @@ -13,6 +13,7 @@ target("editor") add_headerfiles("include/editor/*.h") add_includedirs("include") add_files("src/editor/*.cpp") + add_defines("WITH_EDITOR", {public = true}) add_packages("imgui",{public = true}) add_deps("engine",{public = true}) includes("xmake/xmake.lua") diff --git a/game/zworld/src/zworld.cpp b/game/zworld/src/zworld.cpp index f911fd7..01521b4 100644 --- a/game/zworld/src/zworld.cpp +++ b/game/zworld/src/zworld.cpp @@ -1,5 +1,6 @@ #include "zlog.h" #include "zworld.h" +#include "data/global.h" #include "vkn/vulkan_window.h" #include "vkn/vulkan_api.h" #include "render/pass/demo_pass.h" @@ -9,6 +10,7 @@ RenderAPI* API; void ZWorldModule::OnLoad(int argc, char** argv) { // 创建窗口 + gEngineConfig.API = GraphicsAPI::Vulkan; auto window = new vkn::VulkanWindow(&SDL_CreateWindow, { "zengine" , SDL_WINDOW_VULKAN }, 1080, 720); API = new vkn::VulkanAPI(); auto args = vkn::VulkanWindowArgs::Default(); @@ -34,7 +36,7 @@ void ZWorldModule::MainLoop() if (event_.type == SDL_QUIT) { running = false; } - } + } API->graph.AddRenderPass(); API->BeginFrame(); API->Render();