Add optional Lua scripting module, examples, and validation

This commit is contained in:
emil28092005
2026-09-18 11:28:50 +03:00
parent 06210aac23
commit 5a67735ff4
45 changed files with 3887 additions and 92 deletions
+34 -3
View File
@@ -1,6 +1,10 @@
if(TARGET faset_gameplay)
add_executable(faset_schema_exporter ${PROJECT_SOURCE_DIR}/apps/schema_exporter_main.cpp)
target_link_libraries(faset_schema_exporter PRIVATE faset_core faset_gameplay)
target_link_libraries(faset_schema_exporter PRIVATE faset_core faset_gameplay faset_scripting_project)
if(TARGET faset_lua)
target_link_libraries(faset_schema_exporter PRIVATE faset_lua)
target_compile_definitions(faset_schema_exporter PRIVATE FASET_HAS_LUA=1)
endif()
endif()
if(TARGET faset_runtime AND TARGET faset_render AND TARGET faset_assets)
@@ -14,7 +18,11 @@ if(TARGET faset_runtime AND TARGET faset_render AND TARGET faset_assets)
target_compile_definitions(faset_scene_view PRIVATE FASET_HAS_STB=1)
endif()
add_executable(faset_player ${PROJECT_SOURCE_DIR}/apps/player_main.cpp)
target_link_libraries(faset_player PRIVATE faset_scene_view faset_runtime faset_gameplay)
target_link_libraries(faset_player PRIVATE faset_scene_view faset_runtime faset_gameplay faset_scripting_project)
if(TARGET faset_lua)
target_link_libraries(faset_player PRIVATE faset_lua)
target_compile_definitions(faset_player PRIVATE FASET_HAS_LUA=1)
endif()
install(TARGETS faset_player RUNTIME DESTINATION .)
if(BUILD_TESTING)
add_executable(faset_player_tests ${PROJECT_SOURCE_DIR}/tests/runtime_player_tests.cpp)
@@ -28,7 +36,11 @@ if(TARGET faset_runtime AND TARGET faset_render AND TARGET faset_assets)
${PROJECT_SOURCE_DIR}/tests/player_diagnostics/Gameplay.cpp)
target_include_directories(faset_player_diagnostics PRIVATE
${PROJECT_SOURCE_DIR}/tests/player_diagnostics)
target_link_libraries(faset_player_diagnostics PRIVATE faset_scene_view faset_runtime)
target_link_libraries(faset_player_diagnostics PRIVATE faset_scene_view faset_runtime faset_scripting_project)
if(TARGET faset_lua)
target_link_libraries(faset_player_diagnostics PRIVATE faset_lua)
target_compile_definitions(faset_player_diagnostics PRIVATE FASET_HAS_LUA=1)
endif()
find_package(Python3 COMPONENTS Interpreter REQUIRED)
add_test(NAME player_shutdown_diagnostics COMMAND ${Python3_EXECUTABLE}
${PROJECT_SOURCE_DIR}/tests/player_diagnostics_test.py
@@ -36,3 +48,22 @@ if(TARGET faset_runtime AND TARGET faset_render AND TARGET faset_assets)
set_tests_properties(player_shutdown_diagnostics PROPERTIES LABELS "gpu" TIMEOUT 60)
endif()
endif()
if(BUILD_TESTING AND TARGET faset_schema_exporter)
find_package(Python3 COMPONENTS Interpreter REQUIRED)
set(FASET_LUA_CLI_TEST_ARGS --exporter $<TARGET_FILE:faset_schema_exporter>)
if(TARGET faset_player)
list(APPEND FASET_LUA_CLI_TEST_ARGS --player $<TARGET_FILE:faset_player>)
endif()
if(NOT TARGET faset_lua)
list(APPEND FASET_LUA_CLI_TEST_ARGS --disabled)
endif()
add_test(NAME lua_cli_contracts COMMAND ${Python3_EXECUTABLE}
${PROJECT_SOURCE_DIR}/tests/lua_cli_test.py ${FASET_LUA_CLI_TEST_ARGS})
set_tests_properties(lua_cli_contracts PROPERTIES TIMEOUT 90)
if(TARGET faset_lua AND TARGET faset_player)
add_test(NAME lua_player_reload COMMAND ${Python3_EXECUTABLE}
${PROJECT_SOURCE_DIR}/tests/lua_player_reload_test.py $<TARGET_FILE:faset_player>)
set_tests_properties(lua_player_reload PROPERTIES LABELS "gpu" TIMEOUT 90)
endif()
endif()