diff --git a/editor/CMakeLists.txt b/editor/CMakeLists.txt index 7ccc2b7b..c3864aeb 100644 --- a/editor/CMakeLists.txt +++ b/editor/CMakeLists.txt @@ -14,6 +14,11 @@ add_definitions(-DIMGUI_ENABLE_DOCKING) include(FetchContent) +set(XCENGINE_SHARED_IMGUI_SOURCE_DIR "${XCENGINE_ROOT_DIR}/build/_deps/imgui-src") +if(EXISTS "${XCENGINE_SHARED_IMGUI_SOURCE_DIR}/imgui.cpp") + set(FETCHCONTENT_SOURCE_DIR_IMGUI "${XCENGINE_SHARED_IMGUI_SOURCE_DIR}") +endif() + FetchContent_Declare( imgui GIT_REPOSITORY https://gitee.com/mirrors/imgui.git @@ -24,34 +29,24 @@ FetchContent_Declare( FetchContent_MakeAvailable(imgui) if(NOT TARGET XCEngine) - set(XCENGINE_VULKAN_SDK_HINT "$ENV{VULKAN_SDK}") - if(NOT EXISTS "${XCENGINE_VULKAN_SDK_HINT}/Lib/vulkan-1.lib") - file(GLOB XCENGINE_VULKAN_SDK_DIRS "D:/VulkanSDK/*") - if(XCENGINE_VULKAN_SDK_DIRS) - list(SORT XCENGINE_VULKAN_SDK_DIRS COMPARE NATURAL ORDER DESCENDING) - list(GET XCENGINE_VULKAN_SDK_DIRS 0 XCENGINE_VULKAN_SDK_HINT) + option(XCENGINE_ENABLE_MONO_SCRIPTING "Build the Mono-based C# scripting runtime" ON) + + if(NOT DEFINED XCENGINE_MONO_ROOT_DIR OR XCENGINE_MONO_ROOT_DIR STREQUAL "") + file(GLOB XCENGINE_MONO_ROOT_DIR_CANDIDATES "${XCENGINE_ROOT_DIR}/*/Fermion/Fermion/external/mono") + if(XCENGINE_MONO_ROOT_DIR_CANDIDATES) + list(GET XCENGINE_MONO_ROOT_DIR_CANDIDATES 0 XCENGINE_MONO_ROOT_DIR_DEFAULT) + else() + set(XCENGINE_MONO_ROOT_DIR_DEFAULT "${XCENGINE_ROOT_DIR}/managed/mono") endif() + + set( + XCENGINE_MONO_ROOT_DIR + "${XCENGINE_MONO_ROOT_DIR_DEFAULT}" + CACHE PATH + "Path to the bundled Mono distribution used by the scripting runtime") endif() - if(EXISTS "${XCENGINE_VULKAN_SDK_HINT}/Lib/vulkan-1.lib") - set(Vulkan_ROOT "${XCENGINE_VULKAN_SDK_HINT}") - list(APPEND CMAKE_PREFIX_PATH "${XCENGINE_VULKAN_SDK_HINT}") - endif() - - find_package(Vulkan REQUIRED) - - add_library(XCEngine STATIC IMPORTED GLOBAL) - - set_target_properties(XCEngine PROPERTIES - IMPORTED_CONFIGURATIONS "Debug;Release;RelWithDebInfo;MinSizeRel" - IMPORTED_LOCATION_DEBUG "${XCENGINE_ENGINE_DIR}/build/Debug/XCEngine.lib" - IMPORTED_LOCATION_RELEASE "${XCENGINE_ENGINE_DIR}/build/Release/XCEngine.lib" - IMPORTED_LOCATION_RELWITHDEBINFO "${XCENGINE_ENGINE_DIR}/build/Release/XCEngine.lib" - IMPORTED_LOCATION_MINSIZEREL "${XCENGINE_ENGINE_DIR}/build/Release/XCEngine.lib" - INTERFACE_INCLUDE_DIRECTORIES - "${XCENGINE_ENGINE_DIR}/include;${XCENGINE_ENGINE_DIR}/include/XCEngine;${XCENGINE_ENGINE_DIR}/src;${XCENGINE_ENGINE_DIR}/third_party;${XCENGINE_ENGINE_DIR}/third_party/GLAD/include;${XCENGINE_ENGINE_DIR}/third_party/stb;${XCENGINE_ENGINE_DIR}/third_party/assimp/include" - INTERFACE_LINK_LIBRARIES - "${XCENGINE_ASSIMP_LIB};opengl32;Vulkan::Vulkan") + add_subdirectory("${XCENGINE_ENGINE_DIR}" "${CMAKE_CURRENT_BINARY_DIR}/engine_dependency") endif() set(IMGUI_SOURCES @@ -80,6 +75,7 @@ add_executable(${PROJECT_NAME} WIN32 src/panels/SceneViewPanel.cpp src/Viewport/SceneViewportPicker.cpp src/Viewport/SceneViewportMoveGizmo.cpp + src/Viewport/SceneViewportRotateGizmo.cpp src/Viewport/SceneViewportGrid.cpp src/Viewport/SceneViewportInfiniteGridPass.cpp src/Viewport/SceneViewportSelectionMaskPass.cpp