diff options
| author | skal <pascal.massimino@gmail.com> | 2026-01-31 15:57:00 +0100 |
|---|---|---|
| committer | skal <pascal.massimino@gmail.com> | 2026-01-31 15:57:00 +0100 |
| commit | 9a6cd87164995df93cf3df410ce37721910ce240 (patch) | |
| tree | 04bc3f733ca916ad13ea6304069f63cdacec5399 /CMakeLists.txt | |
| parent | 1016d65d4b5bf7cbd05bba4cf79dc2ce172c9fad (diff) | |
feat: Implement Sequence Compiler for data-driven choreography
Adds a 'seq_compiler' tool that converts a text-based timeline (assets/demo.seq) into a generated C++ file. This allows editing effect sequences and timing without modifying engine code. Replaces manual sequence creation with a generated 'LoadTimeline' function.
Diffstat (limited to 'CMakeLists.txt')
| -rw-r--r-- | CMakeLists.txt | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index c7b7508..3812fb7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -120,6 +120,25 @@ else() set(ASSET_PACKER_DEPENDS asset_packer) endif() +# Sequence Compiler Tool +add_executable(seq_compiler tools/seq_compiler.cc) + +# Configure Timeline Generation +set(DEMO_SEQ_PATH ${CMAKE_CURRENT_SOURCE_DIR}/assets/demo.seq) +set(GENERATED_TIMELINE_CC ${CMAKE_CURRENT_BINARY_DIR}/src/timeline.cc) + +add_custom_command( + OUTPUT ${GENERATED_TIMELINE_CC} + COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/src + COMMAND $<TARGET_FILE:seq_compiler> ${DEMO_SEQ_PATH} ${GENERATED_TIMELINE_CC} + DEPENDS seq_compiler ${DEMO_SEQ_PATH} + COMMENT "Compiling demo sequence..." +) + +add_custom_target(generate_timeline ALL + DEPENDS ${GENERATED_TIMELINE_CC} +) + # Configure DEMO asset generation set(DEMO_ASSETS_TXT_PATH ${CMAKE_CURRENT_SOURCE_DIR}/assets/final/demo_assets.txt) set(GENERATED_DEMO_ASSETS_H ${CMAKE_CURRENT_BINARY_DIR}/src/assets.h) @@ -170,9 +189,10 @@ add_executable(demo64k src/util/asset_manager.cc third_party/glfw3webgpu/glfw3webgpu.c ${GENERATED_DEMO_ASSETS_DATA_CC} + ${GENERATED_TIMELINE_CC} ) -add_dependencies(demo64k generate_demo_assets) +add_dependencies(demo64k generate_demo_assets generate_timeline) target_link_libraries(demo64k PRIVATE ${DEMO_LIBS}) target_include_directories(demo64k PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/src) |
