mirror of
https://github.com/mwpenny/portal64-still-alive.git
synced 2024-10-19 22:27:36 -04:00
CMake: link level and model animation data
This commit is contained in:
parent
6c625e39e6
commit
87f931a8e4
|
@ -11,42 +11,8 @@ cmake_path(
|
|||
## Model export ##
|
||||
##################
|
||||
|
||||
# Models whose data is loaded/unloaded as needed
|
||||
set(DYNAMIC_MODELS
|
||||
cube/cube
|
||||
props/autoportal_frame/autoportal_frame
|
||||
props/box_dropper_glass
|
||||
props/cylinder_test
|
||||
props/lab_chair
|
||||
props/lab_desk/lab_desk01
|
||||
props/lab_desk/lab_desk02
|
||||
props/lab_desk/lab_desk03
|
||||
props/lab_desk/lab_desk04
|
||||
props/lab_monitor
|
||||
props/light_rail_endcap
|
||||
props/portal_cleanser
|
||||
props/radio
|
||||
signage/clock
|
||||
signage/clock_digits
|
||||
)
|
||||
|
||||
# Animated models whose data is loaded/unloaded as needed
|
||||
set(DYNAMIC_ANIMATED_MODELS
|
||||
pedestal
|
||||
props/box_dropper
|
||||
props/button
|
||||
props/combine_ball_catcher
|
||||
props/combine_ball_launcher
|
||||
props/door_01
|
||||
props/door_02
|
||||
props/security_camera
|
||||
props/switch001
|
||||
)
|
||||
|
||||
# All models
|
||||
set(MODELS
|
||||
${DYNAMIC_MODELS}
|
||||
${DYNAMIC_ANIMATED_MODELS}
|
||||
# Models whose data is always loaded
|
||||
set(STATIC_MODELS
|
||||
fleck_ash2
|
||||
grav_flare
|
||||
player/chell
|
||||
|
@ -67,6 +33,60 @@ set(MODELS
|
|||
props/signage
|
||||
)
|
||||
|
||||
# Models whose data is loaded/unloaded as needed
|
||||
set(DYNAMIC_MODELS
|
||||
cube/cube
|
||||
pedestal
|
||||
props/autoportal_frame/autoportal_frame
|
||||
props/box_dropper
|
||||
props/box_dropper_glass
|
||||
props/button
|
||||
props/combine_ball_catcher
|
||||
props/combine_ball_launcher
|
||||
props/cylinder_test
|
||||
props/door_01
|
||||
props/door_02
|
||||
props/lab_chair
|
||||
props/lab_desk/lab_desk01
|
||||
props/lab_desk/lab_desk02
|
||||
props/lab_desk/lab_desk03
|
||||
props/lab_desk/lab_desk04
|
||||
props/lab_monitor
|
||||
props/light_rail_endcap
|
||||
props/portal_cleanser
|
||||
props/radio
|
||||
props/security_camera
|
||||
props/switch001
|
||||
signage/clock
|
||||
signage/clock_digits
|
||||
)
|
||||
|
||||
# Models with predefined animations
|
||||
set(KEYFRAMED_ANIMATED_MODELS
|
||||
pedestal
|
||||
player/chell
|
||||
portal_gun/v_portalgun
|
||||
props/box_dropper
|
||||
props/combine_ball_catcher
|
||||
props/combine_ball_launcher
|
||||
props/door_01
|
||||
props/door_02
|
||||
props/switch001
|
||||
)
|
||||
|
||||
# All animated models, including those which are only procedurally animated
|
||||
set(ANIMATED_MODELS
|
||||
${KEYFRAMED_ANIMATED_MODELS}
|
||||
props/button
|
||||
props/security_camera
|
||||
)
|
||||
|
||||
# All models
|
||||
set(MODELS
|
||||
${DYNAMIC_MODELS}
|
||||
${STATIC_MODELS}
|
||||
)
|
||||
|
||||
# Most models depend on both of these. Some only depend on one or the other,
|
||||
# but use both for simplicity. Otherwise there would be many special cases.
|
||||
set(MODEL_DEFAULT_MATERIALS
|
||||
|
@ -121,17 +141,22 @@ function(_add_model_generate_command MODEL_NAME MODEL_FBX OUTPUT_LIST)
|
|||
|
||||
set(OUTPUT_FILE_H "${OUTPUT_FILE_NO_EXTENSION}.h")
|
||||
set(OUTPUT_FILE_GEO_C "${OUTPUT_FILE_NO_EXTENSION}_geo.c")
|
||||
set(OUTPUT_FILES
|
||||
${OUTPUT_FILE_H}
|
||||
${OUTPUT_FILE_GEO_C}
|
||||
)
|
||||
|
||||
# TODO: not all models have animations
|
||||
# set(OUTPUT_FILE_ANIM_C "${OUTPUT_FILE_NO_EXTENSION}_anim.c")
|
||||
if (MODEL_NAME IN_LIST KEYFRAMED_ANIMATED_MODELS)
|
||||
set(OUTPUT_FILE_ANIM_C "${OUTPUT_FILE_NO_EXTENSION}_anim.c")
|
||||
list(APPEND OUTPUT_FILES ${OUTPUT_FILE_ANIM_C})
|
||||
endif()
|
||||
|
||||
add_custom_command(
|
||||
DEPENDS
|
||||
# Need to depend on textures since some models embed them
|
||||
textures "$<TARGET_PROPERTY:textures,OUTPUTS>"
|
||||
${CONVERT_ASSET} ${MODEL_FBX} ${MODEL_FLAGS} ${MODEL_MATERIALS}
|
||||
OUTPUT
|
||||
${OUTPUT_FILE_H} ${OUTPUT_FILE_GEO_C} ${OUTPUT_FILE_ANIM_C}
|
||||
${OUTPUT_FILES}
|
||||
COMMAND
|
||||
${CMAKE_COMMAND} -E make_directory ${OUTPUT_DIR}
|
||||
COMMAND
|
||||
|
@ -150,11 +175,7 @@ function(_add_model_generate_command MODEL_NAME MODEL_FBX OUTPUT_LIST)
|
|||
VERBATIM
|
||||
)
|
||||
|
||||
list(APPEND ${OUTPUT_LIST}
|
||||
${OUTPUT_FILE_H}
|
||||
${OUTPUT_FILE_GEO_C}
|
||||
${OUTPUT_FILE_ANIM_C}
|
||||
)
|
||||
list(APPEND ${OUTPUT_LIST} ${OUTPUT_FILES})
|
||||
return(PROPAGATE ${OUTPUT_LIST})
|
||||
endfunction()
|
||||
|
||||
|
@ -217,9 +238,11 @@ foreach(GENERATED_HEADER ${MODEL_GENERATED_HEADERS})
|
|||
)
|
||||
|
||||
if(MODEL_NAME IN_LIST DYNAMIC_MODELS)
|
||||
list(APPEND DYNAMIC_MODEL_HEADERS ${GENERATED_HEADER})
|
||||
elseif(MODEL_NAME IN_LIST DYNAMIC_ANIMATED_MODELS)
|
||||
if(MODEL_NAME IN_LIST ANIMATED_MODELS)
|
||||
list(APPEND DYNAMIC_ANIMATED_MODEL_HEADERS ${GENERATED_HEADER})
|
||||
else()
|
||||
list(APPEND DYNAMIC_MODEL_HEADERS ${GENERATED_HEADER})
|
||||
endif()
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
|
|
|
@ -41,6 +41,17 @@ set(LEVELS
|
|||
test_chamber_10
|
||||
)
|
||||
|
||||
set(ANIMATED_LEVELS
|
||||
test_chamber_00
|
||||
test_chamber_03
|
||||
test_chamber_04
|
||||
test_chamber_06
|
||||
test_chamber_07
|
||||
test_chamber_08
|
||||
test_chamber_09
|
||||
test_chamber_10
|
||||
)
|
||||
|
||||
set(LEVEL_MATERIALS
|
||||
${ASSETS_DIR}/materials/static.skm.yaml
|
||||
)
|
||||
|
@ -87,8 +98,10 @@ function(_add_level_generate_command LEVEL_NAME LEVEL_FBX OUTPUT_LIST)
|
|||
${OUTPUT_FILE_GEO_C}
|
||||
)
|
||||
|
||||
# TODO: not all levels have animations
|
||||
# set(OUTPUT_FILE_ANIM_C "${OUTPUT_FILE_NO_EXTENSION}_anim.c")
|
||||
if (LEVEL_NAME IN_LIST ANIMATED_LEVELS)
|
||||
set(OUTPUT_FILE_ANIM_C "${OUTPUT_FILE_NO_EXTENSION}_anim.c")
|
||||
list(APPEND OUTPUT_FILES ${OUTPUT_FILE_ANIM_C})
|
||||
endif()
|
||||
|
||||
set(MATERIAL_ARGS "")
|
||||
foreach(MATERIAL ${LEVEL_MATERIALS})
|
||||
|
@ -99,6 +112,7 @@ function(_add_level_generate_command LEVEL_NAME LEVEL_FBX OUTPUT_LIST)
|
|||
|
||||
add_custom_command(
|
||||
DEPENDS
|
||||
textures "$<TARGET_PROPERTY:textures,OUTPUTS>"
|
||||
${EXPORT_SCRIPTS} ${LEVEL_FBX} ${LEVEL_YAML} ${LEVEL_MATERIALS}
|
||||
OUTPUT
|
||||
${OUTPUT_FILES}
|
||||
|
|
Loading…
Reference in a new issue