feat: expand editor scripting asset and viewport flow
This commit is contained in:
@@ -37,6 +37,31 @@ set(XCENGINE_MONO_MSCORLIB_PATH "${XCENGINE_MONO_CORLIB_DIR}/mscorlib.dll")
|
||||
|
||||
set(XCENGINE_SCRIPT_CORE_DLL "${XCENGINE_MANAGED_OUTPUT_DIR}/XCEngine.ScriptCore.dll" CACHE FILEPATH "Generated XCEngine.ScriptCore assembly")
|
||||
set(XCENGINE_GAME_SCRIPTS_DLL "${XCENGINE_MANAGED_OUTPUT_DIR}/GameScripts.dll" CACHE FILEPATH "Generated GameScripts assembly")
|
||||
set(
|
||||
XCENGINE_PROJECT_ASSETS_DIR
|
||||
"${CMAKE_SOURCE_DIR}/project/Assets"
|
||||
CACHE PATH
|
||||
"Project asset root scanned for user C# scripts")
|
||||
set(
|
||||
XCENGINE_PROJECT_MANAGED_OUTPUT_DIR
|
||||
"${CMAKE_SOURCE_DIR}/project/Library/ScriptAssemblies"
|
||||
CACHE PATH
|
||||
"Output directory for project managed assemblies")
|
||||
set(
|
||||
XCENGINE_PROJECT_SCRIPT_CORE_DLL
|
||||
"${XCENGINE_PROJECT_MANAGED_OUTPUT_DIR}/XCEngine.ScriptCore.dll"
|
||||
CACHE FILEPATH
|
||||
"Generated script core assembly copied into the project script assembly directory")
|
||||
set(
|
||||
XCENGINE_PROJECT_GAME_SCRIPTS_DLL
|
||||
"${XCENGINE_PROJECT_MANAGED_OUTPUT_DIR}/GameScripts.dll"
|
||||
CACHE FILEPATH
|
||||
"Generated project game scripts assembly")
|
||||
set(
|
||||
XCENGINE_PROJECT_MONO_MSCORLIB_PATH
|
||||
"${XCENGINE_PROJECT_MANAGED_OUTPUT_DIR}/mscorlib.dll"
|
||||
CACHE FILEPATH
|
||||
"Mono corlib copied into the project script assembly directory")
|
||||
|
||||
foreach(XCENGINE_REQUIRED_PATH
|
||||
"${XCENGINE_CSC_DLL}"
|
||||
@@ -55,7 +80,9 @@ set(XCENGINE_SCRIPT_CORE_SOURCES
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/XCEngine.ScriptCore/Component.cs
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/XCEngine.ScriptCore/Debug.cs
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/XCEngine.ScriptCore/GameObject.cs
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/XCEngine.ScriptCore/Input.cs
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/XCEngine.ScriptCore/InternalCalls.cs
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/XCEngine.ScriptCore/KeyCode.cs
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/XCEngine.ScriptCore/Light.cs
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/XCEngine.ScriptCore/MeshFilter.cs
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/XCEngine.ScriptCore/MeshRenderer.cs
|
||||
@@ -76,15 +103,33 @@ set(XCENGINE_GAME_SCRIPT_SOURCES
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/GameScripts/ScriptComponentApiProbe.cs
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/GameScripts/RuntimeGameObjectProbe.cs
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/GameScripts/HierarchyProbe.cs
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/GameScripts/InputProbe.cs
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/GameScripts/LifecycleProbe.cs
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/GameScripts/MeshComponentProbe.cs
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/GameScripts/MeshRendererEdgeCaseProbe.cs
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/GameScripts/TickLogProbe.cs
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/GameScripts/TransformConversionProbe.cs
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/GameScripts/TransformMotionProbe.cs
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/GameScripts/TransformOrientationProbe.cs
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/GameScripts/TransformSpaceProbe.cs
|
||||
)
|
||||
|
||||
file(
|
||||
GLOB_RECURSE
|
||||
XCENGINE_PROJECT_GAME_SCRIPT_SOURCES
|
||||
CONFIGURE_DEPENDS
|
||||
LIST_DIRECTORIES FALSE
|
||||
"${XCENGINE_PROJECT_ASSETS_DIR}/*.cs")
|
||||
list(SORT XCENGINE_PROJECT_GAME_SCRIPT_SOURCES)
|
||||
|
||||
if(NOT XCENGINE_PROJECT_GAME_SCRIPT_SOURCES)
|
||||
set(XCENGINE_PROJECT_SCRIPT_PLACEHOLDER "${CMAKE_CURRENT_BINARY_DIR}/Generated/EmptyProjectGameScripts.cs")
|
||||
file(GENERATE
|
||||
OUTPUT "${XCENGINE_PROJECT_SCRIPT_PLACEHOLDER}"
|
||||
CONTENT "namespace XCEngine.Generated { public static class EmptyProjectGameScriptsMarker {} }\n")
|
||||
set(XCENGINE_PROJECT_GAME_SCRIPT_SOURCES "${XCENGINE_PROJECT_SCRIPT_PLACEHOLDER}")
|
||||
endif()
|
||||
|
||||
set(XCENGINE_MANAGED_FRAMEWORK_REFERENCES
|
||||
/reference:${XCENGINE_NET472_REFERENCE_DIR}/mscorlib.dll
|
||||
/reference:${XCENGINE_NET472_REFERENCE_DIR}/System.dll
|
||||
@@ -140,3 +185,47 @@ add_custom_target(
|
||||
${XCENGINE_MANAGED_OUTPUT_DIR}/mscorlib.dll
|
||||
)
|
||||
|
||||
add_custom_command(
|
||||
OUTPUT ${XCENGINE_PROJECT_SCRIPT_CORE_DLL}
|
||||
COMMAND ${CMAKE_COMMAND} -E make_directory ${XCENGINE_PROJECT_MANAGED_OUTPUT_DIR}
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_if_different
|
||||
${XCENGINE_SCRIPT_CORE_DLL}
|
||||
${XCENGINE_PROJECT_SCRIPT_CORE_DLL}
|
||||
DEPENDS ${XCENGINE_SCRIPT_CORE_DLL}
|
||||
VERBATIM
|
||||
COMMENT "Copying XCEngine.ScriptCore.dll into the project script assembly directory")
|
||||
|
||||
add_custom_command(
|
||||
OUTPUT ${XCENGINE_PROJECT_GAME_SCRIPTS_DLL}
|
||||
COMMAND ${CMAKE_COMMAND} -E make_directory ${XCENGINE_PROJECT_MANAGED_OUTPUT_DIR}
|
||||
COMMAND ${XCENGINE_DOTNET_EXECUTABLE} ${XCENGINE_CSC_DLL}
|
||||
/nologo
|
||||
/target:library
|
||||
/langversion:latest
|
||||
/nostdlib+
|
||||
/out:${XCENGINE_PROJECT_GAME_SCRIPTS_DLL}
|
||||
${XCENGINE_MANAGED_FRAMEWORK_REFERENCES}
|
||||
/reference:${XCENGINE_PROJECT_SCRIPT_CORE_DLL}
|
||||
${XCENGINE_PROJECT_GAME_SCRIPT_SOURCES}
|
||||
DEPENDS ${XCENGINE_PROJECT_GAME_SCRIPT_SOURCES} ${XCENGINE_PROJECT_SCRIPT_CORE_DLL}
|
||||
VERBATIM
|
||||
COMMENT "Building project GameScripts.dll from project asset scripts")
|
||||
|
||||
add_custom_command(
|
||||
OUTPUT ${XCENGINE_PROJECT_MONO_MSCORLIB_PATH}
|
||||
COMMAND ${CMAKE_COMMAND} -E make_directory ${XCENGINE_PROJECT_MANAGED_OUTPUT_DIR}
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_if_different
|
||||
${XCENGINE_MONO_MSCORLIB_PATH}
|
||||
${XCENGINE_PROJECT_MONO_MSCORLIB_PATH}
|
||||
DEPENDS ${XCENGINE_MONO_MSCORLIB_PATH}
|
||||
VERBATIM
|
||||
COMMENT "Copying mscorlib.dll into the project script assembly directory")
|
||||
|
||||
add_custom_target(
|
||||
xcengine_project_managed_assemblies ALL
|
||||
DEPENDS
|
||||
${XCENGINE_PROJECT_SCRIPT_CORE_DLL}
|
||||
${XCENGINE_PROJECT_GAME_SCRIPTS_DLL}
|
||||
${XCENGINE_PROJECT_MONO_MSCORLIB_PATH}
|
||||
)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user