# Copyright (c) 2023 Dominic Msters # # This software is released under the MIT License. # https://opensource.org/licenses/MIT add_subdirectory(texturegen) add_subdirectory(tilesetgen) add_subdirectory(truetypegen) add_subdirectory(uigen) add_subdirectory(languagegen) add_subdirectory(generatedlanguages) add_subdirectory(sceneitemcomponentregister) # Settings set(DAWN_TOOL_GENERATED_LANG_DIR "${DAWN_TEMP_DIR}/languages" CACHE INTERNAL ${DAWN_CACHE_TARGET}) set(DAWN_SCENE_ITEM_COMPONENT_LIST "" CACHE INTERNAL ${DAWN_CACHE_TARGET}) # Texture Tool function(tool_texture target in) add_custom_target(${target} COMMAND texturegen --input="${DAWN_ASSETS_SOURCE_DIR}/${in}" --output="${DAWN_ASSETS_BUILD_DIR}/${target}" COMMENT "Generating texture ${target} from ${in}" DEPENDS texturegen ) add_dependencies(${DAWN_TARGET_NAME} ${target}) endfunction() # Tileset Tool function(tool_tileset targetTileset targetTexture in cols rows) tool_texture(${targetTexture} ${in}) add_custom_target(${targetTileset} COMMAND tilesetgen "${DAWN_ASSETS_SOURCE_DIR}/${in}" "${DAWN_ASSETS_BUILD_DIR}/${targetTileset}" "${cols}" "${rows}" COMMENT "Generating tileset ${target} from ${in}" DEPENDS tilesetgen ${targetTexture} ) add_dependencies(${DAWN_TARGET_NAME} ${targetTileset}) endfunction() # TrueType Tool function(tool_truetype target in out width height fontSize) add_custom_target(${target} COMMAND truetypegen "${DAWN_ASSETS_SOURCE_DIR}/${in}" "${DAWN_ASSETS_BUILD_DIR}/${out}" "${width}" "${height}" "${fontSize}" COMMENT "Generating truetype ${target} from ${in}" DEPENDS truetypegen ) add_dependencies(${DAWN_TARGET_NAME} ${target}) endfunction() # UI Tool function(tool_ui target in) add_custom_target(${target} COMMAND uigen --input="${DAWN_ASSETS_SOURCE_DIR}/${in}" --output="${DAWN_GENERATED_DIR}/prefabs/ui/${target}" COMMENT "Generating UI ${target} from ${in}" DEPENDS uigen ) target_include_directories(${DAWN_TARGET_NAME} PUBLIC ${DAWN_GENERATED_DIR}/ui ) add_dependencies(${DAWN_TARGET_NAME} ${target}) endfunction() # Generated Language Rollup Tool function(tool_generatedlanguages in) add_custom_target(generatedlanguages COMMAND generatedlanguagestool --input="${DAWN_TOOL_GENERATED_LANG_DIR}" --output="${DAWN_ASSETS_BUILD_DIR}" COMMENT "Generating all languages" DEPENDS generatedlanguagestool ) if(NOT generatedlanguages IN_LIST DAWN_TARGET_DEPENDENCIES_LAST) set( DAWN_TARGET_DEPENDENCIES_LAST generatedlanguages CACHE INTERNAL ${DAWN_CACHE_TARGET} ) endif() endfunction() # Language Tool function(tool_language target in) add_custom_target(${target} COMMAND languagegen --input="${DAWN_ASSETS_SOURCE_DIR}/${in}" --output="${DAWN_TOOL_GENERATED_LANG_DIR}/${target}.language" COMMENT "Generating language set ${target} from ${in}" DEPENDS languagegen ) tool_generatedlanguages("${DAWN_TOOL_GENERATED_LANG_DIR}/${target}.language") add_dependencies(${DAWN_TARGET_NAME} ${target}) endfunction() # Audio Tool if(DAWN_TARGET_OPENAL) add_subdirectory(audiogen) function(tool_audio target in) add_custom_target(${target} COMMAND audiogen --input="${DAWN_ASSETS_SOURCE_DIR}/${in}" --output="${DAWN_ASSETS_BUILD_DIR}/${target}" COMMENT "Generating audio ${target} from ${in}" DEPENDS audiogen ) add_dependencies(${DAWN_TARGET_NAME} ${target}) endfunction() endif() # Scene Item Component Tool function(tool_scenecomponent clazz hfile) # add_custom_target(${clazz}_scenecomponent # COMMENT "Registering component ${hfile}::${clazz}" # DEPENDS ${ARGN} # ) # set( # DAWN_SCENE_ITEM_COMPONENT_LIST # ${DAWN_SCENE_ITEM_COMPONENT_LIST} # ${clazz} # ${hfile} # CACHE INTERNAL ${DAWN_CACHE_TARGET} # ) # file(CONFIGURE OUTPUT # "${DAWN_TEMP_DIR}/SceneItemComponents.txt" # CONTENT "${DAWN_SCENE_ITEM_COMPONENT_LIST}" # ) # if(NOT TARGET sceneitemcomponentgen_cmd) # add_custom_target(sceneitemcomponentgen_cmd # COMMAND sceneitemcomponentgen --input="${DAWN_TEMP_DIR}/SceneItemComponents.txt" --output="${DAWN_GENERATED_DIR}/scene/SceneItemComponentListItems.cpp" # COMMENT "Generating scene item component ${hfile}::${clazz}" # DEPENDS sceneitemcomponentgen # ) # # target_sources(${DAWN_TARGET_NAME} # # PRIVATE # # ${DAWN_GENERATED_DIR}/scene/SceneItemComponentListItems.cpp # # ) # endif() # add_dependencies(sceneitemcomponentgen ${clazz}_scenecomponent) # add_dependencies(${DAWN_TARGET_NAME} ${clazz}_scenecomponent sceneitemcomponentgen sceneitemcomponentgen_cmd) endfunction() if(DAWN_VISUAL_NOVEL) add_subdirectory(vnscenegen) # VN Scene Tool function(tool_vnscene target in) tool_generatedlanguages("${DAWN_TOOL_GENERATED_LANG_DIR}/${target}.language") add_custom_target(${target} COMMAND vnscenegen --input="${DAWN_ASSETS_SOURCE_DIR}/${in}" --output="${DAWN_GENERATED_DIR}/scenes/${target}" --language-out="${DAWN_TOOL_GENERATED_LANG_DIR}/${target}.language" COMMENT "Generating VN Scene ${target} from ${in}" DEPENDS vnscenegen ) target_include_directories(${DAWN_TARGET_NAME} PUBLIC ${DAWN_GENERATED_DIR} ) add_dependencies(${DAWN_TARGET_NAME} ${target}) endfunction() endif()