diff --git a/src/3rdparty/xmake.lua b/src/3rdparty/xmake.lua index f7f712e..f11784c 100644 --- a/src/3rdparty/xmake.lua +++ b/src/3rdparty/xmake.lua @@ -1,8 +1,13 @@ --includes("*/xmake.lua") add_requires("gtest") -add_requires("vulkansdk",{configs = {utils = { - "glslang", "SPIRV", "SPIRV-Tools", "shaderc", "shaderc_shared","shaderc_util", "shaderc_combined", +--dumpbin /directives glslang.lib +local utils = { + "glslang", "SPIRV", "SPIRV-Tools", "shaderc", "shaderc_shared","shaderc_util", "shaderc_combined", "spirv-cross-glsl","spirv-cross-cpp", "spirv-cross-core", "spirv-cross-reflect","spirv-cross-util" - }}}) +} +for k,v in ipairs(utils) do + utils[k] = v .. "d" +end +add_requires("vulkansdk",{configs = {utils = utils}}) --add_requires("shaderc", "spirv-tools", "glslang", "spirv-cross") add_requires("assimp","freetype","glad","glfw","stb") \ No newline at end of file diff --git a/src/engine/dep/dll/MonoPosixHelper.dll b/src/engine/dep/dll/MonoPosixHelper.dll index b289b6a..aa699e6 100644 Binary files a/src/engine/dep/dll/MonoPosixHelper.dll and b/src/engine/dep/dll/MonoPosixHelper.dll differ diff --git a/src/engine/dep/dll/mono-2.0-sgen.dll b/src/engine/dep/dll/mono-2.0-sgen.dll index a5fdad3..e5233f0 100644 Binary files a/src/engine/dep/dll/mono-2.0-sgen.dll and b/src/engine/dep/dll/mono-2.0-sgen.dll differ diff --git a/src/engine/dep/lib/MonoPosixHelper.lib b/src/engine/dep/lib/MonoPosixHelper.lib index f9ed4c9..c700cb9 100644 Binary files a/src/engine/dep/lib/MonoPosixHelper.lib and b/src/engine/dep/lib/MonoPosixHelper.lib differ diff --git a/src/engine/dep/lib/mono-2.0-sgen.lib b/src/engine/dep/lib/mono-2.0-sgen.lib index 6ff018c..08850ab 100644 Binary files a/src/engine/dep/lib/mono-2.0-sgen.lib and b/src/engine/dep/lib/mono-2.0-sgen.lib differ diff --git a/src/engine/editor/windows/IGE_InspectorWindow_DisplayComponentInnerSpecializations.cpp b/src/engine/editor/windows/IGE_InspectorWindow_DisplayComponentInnerSpecializations.cpp index 03dcd53..a6b1e9d 100644 --- a/src/engine/editor/windows/IGE_InspectorWindow_DisplayComponentInnerSpecializations.cpp +++ b/src/engine/editor/windows/IGE_InspectorWindow_DisplayComponentInnerSpecializations.cpp @@ -51,7 +51,11 @@ namespace idk { - + template<> + inline bool GameObject::HasComponent() const + { + return _component_ranges[ComponentID].count != 0; + } void IGE_InspectorWindow::DisplayComponentInner(Handle c_transform) { ImVec2 cursorPos = ImGui::GetCursorPos(); diff --git a/src/engine/game/AddSystems.cpp b/src/engine/game/AddSystems.cpp index e3af9db..8788ab9 100644 --- a/src/engine/game/AddSystems.cpp +++ b/src/engine/game/AddSystems.cpp @@ -14,6 +14,7 @@ #include #include #include +#include #include #include #include diff --git a/src/engine/idk/script/MonoWrapperEnvironment.cpp b/src/engine/idk/script/MonoWrapperEnvironment.cpp index 27084c5..374b6b8 100644 --- a/src/engine/idk/script/MonoWrapperEnvironment.cpp +++ b/src/engine/idk/script/MonoWrapperEnvironment.cpp @@ -62,8 +62,9 @@ namespace idk::mono auto img = mono_assembly_get_image(_assembly); auto klass = mono_class_from_name(img, "idk", "IDK"); main = mono_class_get_method_from_name(klass, "Main", 1); - void* args[] = { 0 }; - mono_runtime_invoke(main, nullptr, args, nullptr); + const char* args[] = { "arg1", "arg2", "arg3" }; // 传递适当的命令行参数 + void* p = &args; + mono_runtime_invoke(main, nullptr, &p, nullptr); } ScanTypes(); diff --git a/src/engine/idk/script/ScriptSystem.cpp b/src/engine/idk/script/ScriptSystem.cpp index f68daa4..1a73c96 100644 --- a/src/engine/idk/script/ScriptSystem.cpp +++ b/src/engine/idk/script/ScriptSystem.cpp @@ -59,11 +59,12 @@ namespace idk::mono void ScriptSystem::Init() { - auto exe_dir = string{ Core::GetSystem().GetExeDir() }; - mono_set_dirs( - (exe_dir + "/mono/lib/").data(), - (exe_dir + "/mono/etc/").data() - ); + const char* monoPath = getenv("MONO"); + assert(monoPath); + auto& filesys = Core::GetSystem(); + filesys.Mount(monoPath, "/mono"); + mono_set_assemblies_path("mono/lib/mono/4.5"); + mono_set_dirs(filesys.GetFullPath("/mono/lib/").data(), filesys.GetFullPath("/mono/etc/").data()); mono_trace_set_print_handler([](const char* string, [[maybe_unused]] mono_bool is_stdout) { LOG_TO(LogPool::MONO, string); }); @@ -80,9 +81,10 @@ namespace idk::mono } , nullptr); - if (Core::GetSystem().ExistsFull(exe_dir + "/engine_data/idk.dll")) + string dll = filesys.GetFullPath("/mono/me/idk.dll"); + if (Core::GetSystem().ExistsFull(dll)) { - main_environment = std::make_unique(exe_dir + "/engine_data/idk.dll"); + main_environment = std::make_unique(dll); main_environment->Init(); } } @@ -93,6 +95,8 @@ namespace idk::mono string{ Core::GetSystem().GetProjectDir() } + "/Scripts", "/scripts", true); + auto& filesys = Core::GetSystem(); + string file = string{ Core::GetSystem().GetProjectDir() } + "/Scripts"; if (&Core::GetSystem()) CompileGameScripts(); LoadGameScripts(); diff --git a/src/engine/vkn/FrameRenderer.cpp b/src/engine/vkn/FrameRenderer.cpp index c1f4313..c9d7000 100644 --- a/src/engine/vkn/FrameRenderer.cpp +++ b/src/engine/vkn/FrameRenderer.cpp @@ -600,7 +600,9 @@ namespace idk::vkn ++curr_state; //TODO: Submit the command buffers - + if (curr_state >= _pre_states.size()) { + curr_state = 0; + } vector buffers{}; if (cameras.size()==0) diff --git a/src/engine/vkn/VulkanState.cpp b/src/engine/vkn/VulkanState.cpp index da24c8f..33303d3 100644 --- a/src/engine/vkn/VulkanState.cpp +++ b/src/engine/vkn/VulkanState.cpp @@ -314,10 +314,10 @@ namespace idk::vkn { result.graphics_family = static_cast(i); } - //if (family.queueFlags & vk::QueueFlagBits::eTransfer) - //{ - // result.transfer_family = static_cast(i); - //} + if (family.queueFlags & vk::QueueFlagBits::eTransfer) + { + result.transfer_family = static_cast(i); + } } if (result.isComplete()) { diff --git a/xmake.lua b/xmake.lua index cecfb32..b660098 100644 --- a/xmake.lua +++ b/xmake.lua @@ -5,9 +5,9 @@ set_project("idk") set_config("vs_toolset", "14.2") -- 设置 Visual Studio 版本为 2019 set_toolchains("msvc") -set_runtimes("MD") +set_runtimes("MDd") -- 添加 /bigobj 编译选项 -add_cxflags("/bigobj", "-MD", {force = true}) +add_cxflags("/bigobj", "-MDd", {force = true}) includes("src/xmake.lua") --__std_find_trivial_1 msvc 版本不一致会有这个报错 --xmake project -k vsxmake2022 -a x64