diff --git a/CMakeLists.txt b/CMakeLists.txt index 77558d1..54a0732 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -11,11 +11,6 @@ set(CREATE_DIRECTORIES ${CMAKE_BINARY_DIR}/characters/shapes/female/chibi ${CMAKE_BINARY_DIR}/characters/male ${CMAKE_BINARY_DIR}/characters/female) -#set(CREATE_SCENES -# ${CMAKE_SOURCE_DIR}/characters/female/vroid-normal-female.scene -# ${CMAKE_SOURCE_DIR}/characters/male/vroid-normal-male.scene -# ) - # workaround horribly broken assimp cmake, fixed with assimp 5.1 #add_library(assimp INTERFACE IMPORTED) #set_target_properties(assimp PROPERTIES @@ -77,6 +72,7 @@ add_subdirectory(src/tests) add_subdirectory(src/physics) add_subdirectory(src/editor) add_subdirectory(assets/blender/buildings/parts) +add_subdirectory(assets/blender/characters) add_subdirectory(resources) add_executable(Game Game.cpp ${WATER_SRC}) @@ -255,83 +251,6 @@ foreach(MATERIAL_FILE ${MATERIAL_FILES}) list(APPEND MATERIALS_OUTPUT ${OUTPUT_FILE}) endforeach() -file(GLOB VRM_FILES RELATIVE ${CMAKE_SOURCE_DIR} ${CMAKE_SOURCE_DIR}/assets/vroid/*.vrm) -file(GLOB MIXAMO_FILES RELATIVE ${CMAKE_SOURCE_DIR} ${CMAKE_SOURCE_DIR}/assets/blender/mixamo/**/*.fbx) -set(VRM_SOURCE) -foreach(VRM_FILE ${VRM_FILES} ${MIXAMO_FILES}) - set(OUTPUT_FILE "${CMAKE_BINARY_DIR}/${VRM_FILE}") - set(INPUT_FILE "${CMAKE_SOURCE_DIR}/${VRM_FILE}") - add_custom_command(OUTPUT "${OUTPUT_FILE}" - COMMAND ${CMAKE_COMMAND} -E copy "${INPUT_FILE}" "${OUTPUT_FILE}" - DEPENDS "${INPUT_FILE}" VERBATIM) - list(APPEND VRM_SOURCE "${OUTPUT_FILE}") -endforeach() - -set(VRM_IMPORTED_BLENDS - ${CMAKE_BINARY_DIR}/assets/blender/vrm-vroid-normal-female.blend - ${CMAKE_BINARY_DIR}/assets/blender/vrm-vroid-normal-male.blend - ${CMAKE_BINARY_DIR}/assets/blender/shapes/male/vrm-vroid-normal-male-chibi.blend -) - -add_custom_command(OUTPUT ${VRM_IMPORTED_BLENDS} - COMMAND ${CMAKE_COMMAND} -E make_directory ${CREATE_DIRECTORIES} - COMMAND ${BLENDER} -b -Y -P ${CMAKE_SOURCE_DIR}/assets/blender/scripts/import_vrm.py - COMMAND ${CMAKE_COMMAND} -E touch_nocreate ${VRM_IMPORTED_BLENDS} - DEPENDS ${CMAKE_SOURCE_DIR}/assets/blender/scripts/import_vrm.py - ${VRM_SOURCE} - WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) - -set(EDITED_BLENDS_LIST - male - female -) -set(EDITED_BLEND_TARGETS) -set(CHARACTER_GLBS) -foreach(EDITED_BLEND ${EDITED_BLENDS_LIST}) -add_custom_command( - OUTPUT ${CMAKE_BINARY_DIR}/assets/blender/edited-normal-${EDITED_BLEND}.blend - DEPENDS ${CMAKE_SOURCE_DIR}/assets/blender/edited-normal-${EDITED_BLEND}.blend - ${CMAKE_BINARY_DIR}/assets/blender/vrm-vroid-normal-${EDITED_BLEND}.blend - COMMAND ${CMAKE_COMMAND} - -E copy ${CMAKE_SOURCE_DIR}/assets/blender/edited-normal-${EDITED_BLEND}.blend - ${CMAKE_BINARY_DIR}/assets/blender/edited-normal-${EDITED_BLEND}.blend - COMMAND ${BLENDER} -b -Y - ${CMAKE_BINARY_DIR}/assets/blender/edited-normal-${EDITED_BLEND}.blend - -P ${CMAKE_SOURCE_DIR}/assets/blender/scripts/copy_animations.py -- - ${CMAKE_BINARY_DIR}/assets/blender/vrm-vroid-normal-${EDITED_BLEND}.blend ${EDITED_BLEND} - WORKING_DIRECTORY ${CMAKE_BINARY_DIR} -) -list(APPEND EDITED_BLEND_TARGETS ${CMAKE_BINARY_DIR}/assets/blender/edited-normal-${EDITED_BLEND}.blend) -list(APPEND CHARACTER_GLBS ${CMAKE_BINARY_DIR}/characters/${EDITED_BLEND}/normal-${EDITED_BLEND}.glb) -endforeach() - -add_custom_command(OUTPUT ${CMAKE_BINARY_DIR}/characters/shapes/male/chibi/vroid-normal-male-chibi.glb -DEPENDS ${CMAKE_BINARY_DIR}/assets/blender/characters/shapes/male/chibi/vroid-normal-male-chibi.glb -COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_BINARY_DIR}/assets/blender/characters/shapes/male/chibi/vroid-normal-male-chibi.glb - ${CMAKE_BINARY_DIR}/characters/shapes/male/chibi/vroid-normal-male-chibi.glb) -add_custom_target(morph ALL DEPENDS MorphTargetsResearch ${CMAKE_BINARY_DIR}/characters/shapes/male/chibi/vroid-normal-male-chibi.glb) - -set(COPY_BLENDS edited-shape-test-male.blend edited-normal-male-base.blend) -foreach (COPY_BLEND_FILE ${COPY_BLENDS}) - add_custom_command(OUTPUT ${CMAKE_BINARY_DIR}/assets/blender/${COPY_BLEND_FILE} - DEPENDS ${CMAKE_SOURCE_DIR}/assets/blender/${COPY_BLEND_FILE} - COMMAND ${CMAKE_COMMAND} -E copy - ${CMAKE_SOURCE_DIR}/assets/blender/${COPY_BLEND_FILE} - ${CMAKE_BINARY_DIR}/assets/blender/${COPY_BLEND_FILE} - ) - list(APPEND EDITED_BLEND_TARGETS ${CMAKE_BINARY_DIR}/assets/blender/${COPY_BLEND_FILE}) -endforeach() - -add_custom_target(edited-blends ALL DEPENDS ${EDITED_BLEND_TARGETS}) - -add_custom_command( - OUTPUT ${CHARACTER_GLBS} - COMMAND ${CMAKE_COMMAND} -E make_directory ${CREATE_DIRECTORIES} - COMMAND ${BLENDER} -b -Y -P ${CMAKE_SOURCE_DIR}/assets/blender/scripts/export_models.py - COMMAND ${CMAKE_COMMAND} -E touch ${CHARACTER_GLBS} - DEPENDS ${CMAKE_SOURCE_DIR}/assets/blender/scripts/export_models.py ${VRM_IMPORTED_BLENDS} ${EDITED_BLEND_TARGETS} - WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) - add_custom_target(stage_files ALL DEPENDS ${CMAKE_BINARY_DIR}/resources.cfg ${MATERIALS_OUTPUT} ${CMAKE_BINARY_DIR}/resources/terrain/world_map.png ${CMAKE_BINARY_DIR}/resources/terrain/brushes.png @@ -339,7 +258,6 @@ add_custom_target(stage_files ALL DEPENDS ${CMAKE_BINARY_DIR}/resources.cfg ${MA add_custom_target(remove_scenes COMMAND rm -f ${VRM_SOURCE} ${VRM_IMPORTED_BLENDS} ${CHARACTER_GLBS}) -add_custom_target(import_vrm DEPENDS ${CHARACTER_GLBS}) target_compile_definitions(Game PRIVATE FLECS_CPP_NO_AUTO_REGISTRATION) install(TARGETS Game DESTINATION bin) diff --git a/assets/blender/edited-normal-female.blend b/assets/blender/characters/edited-normal-female.blend similarity index 100% rename from assets/blender/edited-normal-female.blend rename to assets/blender/characters/edited-normal-female.blend diff --git a/assets/blender/characters/edited-normal-male.blend b/assets/blender/characters/edited-normal-male.blend new file mode 100644 index 0000000..c4d8341 --- /dev/null +++ b/assets/blender/characters/edited-normal-male.blend @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bbbc8f1336bdec038cd6e83134e39401ab5da9dcb5512ef9d722a250ec111847 +size 13123671 diff --git a/assets/blender/edited-normal-male.blend b/assets/blender/edited-normal-male.blend deleted file mode 100644 index e689b52..0000000 --- a/assets/blender/edited-normal-male.blend +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:aad4c8333b7a058aa600e278ed6728801325b3c83917b137734d3e9385d1af1f -size 13203455 diff --git a/src/gamedata/CharacterManagerModule.cpp b/src/gamedata/CharacterManagerModule.cpp index a6d39db..92e5690 100644 --- a/src/gamedata/CharacterManagerModule.cpp +++ b/src/gamedata/CharacterManagerModule.cpp @@ -57,6 +57,7 @@ void createNPCActionNodes(flecs::entity town, int index) anode.props["town"] = town.id(); anode.props["index"] = index; anode.props["npc"] = npcprops; + anode.dynamic = true; npc.actionNodes.push_back(anode); } { @@ -78,6 +79,7 @@ void createNPCActionNodes(flecs::entity town, int index) anode.props["town"] = town.id(); anode.props["index"] = index; anode.props["npc"] = npcprops; + anode.dynamic = true; npc.actionNodes.push_back(anode); } } diff --git a/src/gamedata/PlayerActionModule.h b/src/gamedata/PlayerActionModule.h index 9c9aea3..f1bad94 100644 --- a/src/gamedata/PlayerActionModule.h +++ b/src/gamedata/PlayerActionModule.h @@ -16,6 +16,7 @@ struct ActionNodeList { Ogre::Quaternion rotation; float height; float radius; + bool dynamic; nlohmann::json props; }; struct UIData { diff --git a/src/gamedata/items/town.cpp b/src/gamedata/items/town.cpp index 91c4fa4..8685bb9 100644 --- a/src/gamedata/items/town.cpp +++ b/src/gamedata/items/town.cpp @@ -5817,6 +5817,8 @@ struct TownDecorateFurniture : TownTask { worldSensorPosition; anode.rotation = worldSensorRotation; + anode.dynamic = + false; ECS::get_mut< ActionNodeList>() .addNode(