diff --git a/assets/games/liminal/prefabs/EthPrefab.xml b/assets/games/liminal/prefabs/EthPrefab.xml index 13b0cdd2..a009eb74 100644 --- a/assets/games/liminal/prefabs/EthPrefab.xml +++ b/assets/games/liminal/prefabs/EthPrefab.xml @@ -1,13 +1,13 @@ - + - + \ No newline at end of file diff --git a/assets/games/liminal/scenes/Scene1Prologue0.xml b/assets/games/liminal/scenes/Scene1Prologue0.xml index 21fe59dd..de04d42e 100644 --- a/assets/games/liminal/scenes/Scene1Prologue0.xml +++ b/assets/games/liminal/scenes/Scene1Prologue0.xml @@ -3,21 +3,24 @@ + - There is a bucket. + Confused to Angry - It sways above your head like the mouth of a god. You are on Angelwood's best stage, and they are cheering for you, calling you their Queen, their Prom Queen. + Angry to Cross + + And you are dead soon. diff --git a/assets/games/liminal/scenes/SceneBase.xml b/assets/games/liminal/scenes/SceneBase.xml index d121e536..7da93159 100644 --- a/assets/games/liminal/scenes/SceneBase.xml +++ b/assets/games/liminal/scenes/SceneBase.xml @@ -3,16 +3,16 @@ - + - - + + diff --git a/assets/games/liminal/textures/CMakeLists.txt b/assets/games/liminal/textures/CMakeLists.txt index ecebbf32..eff04bb4 100644 --- a/assets/games/liminal/textures/CMakeLists.txt +++ b/assets/games/liminal/textures/CMakeLists.txt @@ -3,7 +3,7 @@ # This software is released under the MIT License. # https://opensource.org/licenses/MIT -set(LIMINIAL_CHARACTER_SCALE 0.20) +set(LIMINIAL_CHARACTER_SCALE 0.2) include("${CMAKE_CURRENT_LIST_DIR}/eth/CMakeLists.txt") diff --git a/assets/games/liminal/textures/eth/faces/CMakeLists.txt b/assets/games/liminal/textures/eth/faces/CMakeLists.txt index 760548c0..a1ee9ec9 100644 --- a/assets/games/liminal/textures/eth/faces/CMakeLists.txt +++ b/assets/games/liminal/textures/eth/faces/CMakeLists.txt @@ -3,5 +3,14 @@ # This software is released under the MIT License. # https://opensource.org/licenses/MIT +set(ETH_FACE_TEXTURE_OPTIONS + SCALE=${LIMINIAL_CHARACTER_SCALE} + FILTER_MIN=nearest + FILTER_MAG=nearest + CROP_END_Y=2833 +) + include(${CMAKE_CURRENT_LIST_DIR}/day/CMakeLists.txt) -include(${CMAKE_CURRENT_LIST_DIR}/night/CMakeLists.txt) \ No newline at end of file +include(${CMAKE_CURRENT_LIST_DIR}/day-alt/CMakeLists.txt) +include(${CMAKE_CURRENT_LIST_DIR}/night/CMakeLists.txt) +include(${CMAKE_CURRENT_LIST_DIR}/night-alt/CMakeLists.txt) \ No newline at end of file diff --git a/assets/games/liminal/textures/eth/faces/day-alt/CMakeLists.txt b/assets/games/liminal/textures/eth/faces/day-alt/CMakeLists.txt new file mode 100644 index 00000000..8daa8426 --- /dev/null +++ b/assets/games/liminal/textures/eth/faces/day-alt/CMakeLists.txt @@ -0,0 +1,50 @@ +# Copyright (c) 2023 Dominic Masters +# +# This software is released under the MIT License. +# https://opensource.org/licenses/MIT + + +tool_texture(texture_eth_face_day_alt_anger + FILE="${CMAKE_CURRENT_LIST_DIR}/anger.png" + ${ETH_FACE_TEXTURE_OPTIONS} +) + +tool_texture(texture_eth_face_day_alt_confused + FILE="${CMAKE_CURRENT_LIST_DIR}/confused.png" + ${ETH_FACE_TEXTURE_OPTIONS} +) + +tool_texture(texture_eth_face_day_alt_eyeroll + FILE="${CMAKE_CURRENT_LIST_DIR}/eyeroll.png" + ${ETH_FACE_TEXTURE_OPTIONS} +) + +tool_texture(texture_eth_face_day_alt_fear + FILE="${CMAKE_CURRENT_LIST_DIR}/fear.png" + ${ETH_FACE_TEXTURE_OPTIONS} +) + +tool_texture(texture_eth_face_day_alt_happy + FILE="${CMAKE_CURRENT_LIST_DIR}/happy.png" + ${ETH_FACE_TEXTURE_OPTIONS} +) + +tool_texture(texture_eth_face_day_alt_haughty + FILE="${CMAKE_CURRENT_LIST_DIR}/haughty.png" + ${ETH_FACE_TEXTURE_OPTIONS} +) + +tool_texture(texture_eth_face_day_alt_neutral + FILE="${CMAKE_CURRENT_LIST_DIR}/neutral.png" + ${ETH_FACE_TEXTURE_OPTIONS} +) + +tool_texture(texture_eth_face_day_alt_sad + FILE="${CMAKE_CURRENT_LIST_DIR}/sad.png" + ${ETH_FACE_TEXTURE_OPTIONS} +) + +tool_texture(texture_eth_face_day_alt_surprised + FILE="${CMAKE_CURRENT_LIST_DIR}/surprised.png" + ${ETH_FACE_TEXTURE_OPTIONS} +) \ No newline at end of file diff --git a/assets/games/liminal/textures/eth/faces/day-alt/anger.png b/assets/games/liminal/textures/eth/faces/day-alt/anger.png new file mode 100644 index 00000000..c2e0f430 Binary files /dev/null and b/assets/games/liminal/textures/eth/faces/day-alt/anger.png differ diff --git a/assets/games/liminal/textures/eth/faces/day-alt/confused.png b/assets/games/liminal/textures/eth/faces/day-alt/confused.png new file mode 100644 index 00000000..34582367 Binary files /dev/null and b/assets/games/liminal/textures/eth/faces/day-alt/confused.png differ diff --git a/assets/games/liminal/textures/eth/faces/day-alt/eyeroll.png b/assets/games/liminal/textures/eth/faces/day-alt/eyeroll.png new file mode 100644 index 00000000..820f19d6 Binary files /dev/null and b/assets/games/liminal/textures/eth/faces/day-alt/eyeroll.png differ diff --git a/assets/games/liminal/textures/eth/faces/day-alt/fear.png b/assets/games/liminal/textures/eth/faces/day-alt/fear.png new file mode 100644 index 00000000..d6475ca3 Binary files /dev/null and b/assets/games/liminal/textures/eth/faces/day-alt/fear.png differ diff --git a/assets/games/liminal/textures/eth/faces/day-alt/happy.png b/assets/games/liminal/textures/eth/faces/day-alt/happy.png new file mode 100644 index 00000000..f905c9a9 Binary files /dev/null and b/assets/games/liminal/textures/eth/faces/day-alt/happy.png differ diff --git a/assets/games/liminal/textures/eth/faces/day-alt/haughty.png b/assets/games/liminal/textures/eth/faces/day-alt/haughty.png new file mode 100644 index 00000000..212acc0e Binary files /dev/null and b/assets/games/liminal/textures/eth/faces/day-alt/haughty.png differ diff --git a/assets/games/liminal/textures/eth/faces/day-alt/neutral.png b/assets/games/liminal/textures/eth/faces/day-alt/neutral.png new file mode 100644 index 00000000..77da195f Binary files /dev/null and b/assets/games/liminal/textures/eth/faces/day-alt/neutral.png differ diff --git a/assets/games/liminal/textures/eth/faces/day-alt/sad.png b/assets/games/liminal/textures/eth/faces/day-alt/sad.png new file mode 100644 index 00000000..3dd9a663 Binary files /dev/null and b/assets/games/liminal/textures/eth/faces/day-alt/sad.png differ diff --git a/assets/games/liminal/textures/eth/faces/day-alt/surprised.png b/assets/games/liminal/textures/eth/faces/day-alt/surprised.png new file mode 100644 index 00000000..23b7449c Binary files /dev/null and b/assets/games/liminal/textures/eth/faces/day-alt/surprised.png differ diff --git a/assets/games/liminal/textures/eth/faces/day/CMakeLists.txt b/assets/games/liminal/textures/eth/faces/day/CMakeLists.txt index 08767b28..1e2e2fb2 100644 --- a/assets/games/liminal/textures/eth/faces/day/CMakeLists.txt +++ b/assets/games/liminal/textures/eth/faces/day/CMakeLists.txt @@ -3,66 +3,47 @@ # This software is released under the MIT License. # https://opensource.org/licenses/MIT - tool_texture(texture_eth_face_day_anger FILE="${CMAKE_CURRENT_LIST_DIR}/anger.png" - SCALE=${LIMINIAL_CHARACTER_SCALE} - FILTER_MIN=nearest - FILTER_MAG=nearest + ${ETH_FACE_TEXTURE_OPTIONS} ) tool_texture(texture_eth_face_day_confused FILE="${CMAKE_CURRENT_LIST_DIR}/confused.png" - SCALE=${LIMINIAL_CHARACTER_SCALE} - FILTER_MIN=nearest - FILTER_MAG=nearest + ${ETH_FACE_TEXTURE_OPTIONS} ) tool_texture(texture_eth_face_day_eyeroll FILE="${CMAKE_CURRENT_LIST_DIR}/eyeroll.png" - SCALE=${LIMINIAL_CHARACTER_SCALE} - FILTER_MIN=nearest - FILTER_MAG=nearest + ${ETH_FACE_TEXTURE_OPTIONS} ) tool_texture(texture_eth_face_day_fear FILE="${CMAKE_CURRENT_LIST_DIR}/fear.png" - SCALE=${LIMINIAL_CHARACTER_SCALE} - FILTER_MIN=nearest - FILTER_MAG=nearest + ${ETH_FACE_TEXTURE_OPTIONS} ) tool_texture(texture_eth_face_day_happy FILE="${CMAKE_CURRENT_LIST_DIR}/happy.png" - SCALE=${LIMINIAL_CHARACTER_SCALE} - FILTER_MIN=nearest - FILTER_MAG=nearest + ${ETH_FACE_TEXTURE_OPTIONS} ) tool_texture(texture_eth_face_day_haughty FILE="${CMAKE_CURRENT_LIST_DIR}/haughty.png" - SCALE=${LIMINIAL_CHARACTER_SCALE} - FILTER_MIN=nearest - FILTER_MAG=nearest + ${ETH_FACE_TEXTURE_OPTIONS} ) tool_texture(texture_eth_face_day_neutral FILE="${CMAKE_CURRENT_LIST_DIR}/neutral.png" - SCALE=${LIMINIAL_CHARACTER_SCALE} - FILTER_MIN=nearest - FILTER_MAG=nearest + ${ETH_FACE_TEXTURE_OPTIONS} ) tool_texture(texture_eth_face_day_sad FILE="${CMAKE_CURRENT_LIST_DIR}/sad.png" - SCALE=${LIMINIAL_CHARACTER_SCALE} - FILTER_MIN=nearest - FILTER_MAG=nearest + ${ETH_FACE_TEXTURE_OPTIONS} ) tool_texture(texture_eth_face_day_surprised FILE="${CMAKE_CURRENT_LIST_DIR}/surprised.png" - SCALE=${LIMINIAL_CHARACTER_SCALE} - FILTER_MIN=nearest - FILTER_MAG=nearest + ${ETH_FACE_TEXTURE_OPTIONS} ) \ No newline at end of file diff --git a/assets/games/liminal/textures/eth/faces/night-alt/CMakeLists.txt b/assets/games/liminal/textures/eth/faces/night-alt/CMakeLists.txt new file mode 100644 index 00000000..d1bc6d5f --- /dev/null +++ b/assets/games/liminal/textures/eth/faces/night-alt/CMakeLists.txt @@ -0,0 +1,50 @@ +# Copyright (c) 2023 Dominic Masters +# +# This software is released under the MIT License. +# https://opensource.org/licenses/MIT + + +tool_texture(texture_eth_face_night_alt_anger + FILE="${CMAKE_CURRENT_LIST_DIR}/anger.png" + ${ETH_FACE_TEXTURE_OPTIONS} +) + +tool_texture(texture_eth_face_night_alt_confused + FILE="${CMAKE_CURRENT_LIST_DIR}/confused.png" + ${ETH_FACE_TEXTURE_OPTIONS} +) + +tool_texture(texture_eth_face_night_alt_eyeroll + FILE="${CMAKE_CURRENT_LIST_DIR}/eyeroll.png" + ${ETH_FACE_TEXTURE_OPTIONS} +) + +tool_texture(texture_eth_face_night_alt_fear + FILE="${CMAKE_CURRENT_LIST_DIR}/fear.png" + ${ETH_FACE_TEXTURE_OPTIONS} +) + +tool_texture(texture_eth_face_night_alt_happy + FILE="${CMAKE_CURRENT_LIST_DIR}/happy.png" + ${ETH_FACE_TEXTURE_OPTIONS} +) + +tool_texture(texture_eth_face_night_alt_haughty + FILE="${CMAKE_CURRENT_LIST_DIR}/haughty.png" + ${ETH_FACE_TEXTURE_OPTIONS} +) + +tool_texture(texture_eth_face_night_alt_neutral + FILE="${CMAKE_CURRENT_LIST_DIR}/neutral.png" + ${ETH_FACE_TEXTURE_OPTIONS} +) + +tool_texture(texture_eth_face_night_alt_sad + FILE="${CMAKE_CURRENT_LIST_DIR}/sad.png" + ${ETH_FACE_TEXTURE_OPTIONS} +) + +tool_texture(texture_eth_face_night_alt_surprised + FILE="${CMAKE_CURRENT_LIST_DIR}/surprised.png" + ${ETH_FACE_TEXTURE_OPTIONS} +) \ No newline at end of file diff --git a/assets/games/liminal/textures/eth/faces/night-alt/anger.png b/assets/games/liminal/textures/eth/faces/night-alt/anger.png new file mode 100644 index 00000000..9572a195 Binary files /dev/null and b/assets/games/liminal/textures/eth/faces/night-alt/anger.png differ diff --git a/assets/games/liminal/textures/eth/faces/night-alt/confused.png b/assets/games/liminal/textures/eth/faces/night-alt/confused.png new file mode 100644 index 00000000..827cdcea Binary files /dev/null and b/assets/games/liminal/textures/eth/faces/night-alt/confused.png differ diff --git a/assets/games/liminal/textures/eth/faces/night-alt/eyeroll.png b/assets/games/liminal/textures/eth/faces/night-alt/eyeroll.png new file mode 100644 index 00000000..e6d6fbae Binary files /dev/null and b/assets/games/liminal/textures/eth/faces/night-alt/eyeroll.png differ diff --git a/assets/games/liminal/textures/eth/faces/night-alt/fear.png b/assets/games/liminal/textures/eth/faces/night-alt/fear.png new file mode 100644 index 00000000..d44c6d46 Binary files /dev/null and b/assets/games/liminal/textures/eth/faces/night-alt/fear.png differ diff --git a/assets/games/liminal/textures/eth/faces/night-alt/happy.png b/assets/games/liminal/textures/eth/faces/night-alt/happy.png new file mode 100644 index 00000000..3aebe86c Binary files /dev/null and b/assets/games/liminal/textures/eth/faces/night-alt/happy.png differ diff --git a/assets/games/liminal/textures/eth/faces/night-alt/haughty.png b/assets/games/liminal/textures/eth/faces/night-alt/haughty.png new file mode 100644 index 00000000..7873c50d Binary files /dev/null and b/assets/games/liminal/textures/eth/faces/night-alt/haughty.png differ diff --git a/assets/games/liminal/textures/eth/faces/night-alt/neutral.png b/assets/games/liminal/textures/eth/faces/night-alt/neutral.png new file mode 100644 index 00000000..0573330a Binary files /dev/null and b/assets/games/liminal/textures/eth/faces/night-alt/neutral.png differ diff --git a/assets/games/liminal/textures/eth/faces/night-alt/sad.png b/assets/games/liminal/textures/eth/faces/night-alt/sad.png new file mode 100644 index 00000000..9f8cbf6d Binary files /dev/null and b/assets/games/liminal/textures/eth/faces/night-alt/sad.png differ diff --git a/assets/games/liminal/textures/eth/faces/night-alt/surprised.png b/assets/games/liminal/textures/eth/faces/night-alt/surprised.png new file mode 100644 index 00000000..1e694bf0 Binary files /dev/null and b/assets/games/liminal/textures/eth/faces/night-alt/surprised.png differ diff --git a/assets/games/liminal/textures/eth/faces/night/CMakeLists.txt b/assets/games/liminal/textures/eth/faces/night/CMakeLists.txt index 87774e17..f98af33c 100644 --- a/assets/games/liminal/textures/eth/faces/night/CMakeLists.txt +++ b/assets/games/liminal/textures/eth/faces/night/CMakeLists.txt @@ -6,63 +6,45 @@ tool_texture(texture_eth_face_night_anger FILE="${CMAKE_CURRENT_LIST_DIR}/anger.png" - SCALE=${LIMINIAL_CHARACTER_SCALE} - FILTER_MIN=nearest - FILTER_MAG=nearest + ${ETH_FACE_TEXTURE_OPTIONS} ) tool_texture(texture_eth_face_night_confused FILE="${CMAKE_CURRENT_LIST_DIR}/confused.png" - SCALE=${LIMINIAL_CHARACTER_SCALE} - FILTER_MIN=nearest - FILTER_MAG=nearest + ${ETH_FACE_TEXTURE_OPTIONS} ) tool_texture(texture_eth_face_night_eyeroll FILE="${CMAKE_CURRENT_LIST_DIR}/eyeroll.png" - SCALE=${LIMINIAL_CHARACTER_SCALE} - FILTER_MIN=nearest - FILTER_MAG=nearest + ${ETH_FACE_TEXTURE_OPTIONS} ) tool_texture(texture_eth_face_night_fear FILE="${CMAKE_CURRENT_LIST_DIR}/fear.png" - SCALE=${LIMINIAL_CHARACTER_SCALE} - FILTER_MIN=nearest - FILTER_MAG=nearest + ${ETH_FACE_TEXTURE_OPTIONS} ) tool_texture(texture_eth_face_night_happy FILE="${CMAKE_CURRENT_LIST_DIR}/happy.png" - SCALE=${LIMINIAL_CHARACTER_SCALE} - FILTER_MIN=nearest - FILTER_MAG=nearest + ${ETH_FACE_TEXTURE_OPTIONS} ) tool_texture(texture_eth_face_night_haughty FILE="${CMAKE_CURRENT_LIST_DIR}/haughty.png" - SCALE=${LIMINIAL_CHARACTER_SCALE} - FILTER_MIN=nearest - FILTER_MAG=nearest + ${ETH_FACE_TEXTURE_OPTIONS} ) tool_texture(texture_eth_face_night_neutral FILE="${CMAKE_CURRENT_LIST_DIR}/neutral.png" - SCALE=${LIMINIAL_CHARACTER_SCALE} - FILTER_MIN=nearest - FILTER_MAG=nearest + ${ETH_FACE_TEXTURE_OPTIONS} ) tool_texture(texture_eth_face_night_sad FILE="${CMAKE_CURRENT_LIST_DIR}/sad.png" - SCALE=${LIMINIAL_CHARACTER_SCALE} - FILTER_MIN=nearest - FILTER_MAG=nearest + ${ETH_FACE_TEXTURE_OPTIONS} ) tool_texture(texture_eth_face_night_surprised FILE="${CMAKE_CURRENT_LIST_DIR}/surprised.png" - SCALE=${LIMINIAL_CHARACTER_SCALE} - FILTER_MIN=nearest - FILTER_MAG=nearest + ${ETH_FACE_TEXTURE_OPTIONS} ) \ No newline at end of file diff --git a/assets/games/liminal/textures/eth/poses/CMakeLists.txt b/assets/games/liminal/textures/eth/poses/CMakeLists.txt index 760548c0..fefb3acd 100644 --- a/assets/games/liminal/textures/eth/poses/CMakeLists.txt +++ b/assets/games/liminal/textures/eth/poses/CMakeLists.txt @@ -3,5 +3,14 @@ # This software is released under the MIT License. # https://opensource.org/licenses/MIT +set(ETH_POSE_TEXTURE_OPTIONS + SCALE=${LIMINIAL_CHARACTER_SCALE} + FILTER_MIN=nearest + FILTER_MAG=nearest + CROP_START_Y=1431 +) + include(${CMAKE_CURRENT_LIST_DIR}/day/CMakeLists.txt) -include(${CMAKE_CURRENT_LIST_DIR}/night/CMakeLists.txt) \ No newline at end of file +include(${CMAKE_CURRENT_LIST_DIR}/day-alt/CMakeLists.txt) +include(${CMAKE_CURRENT_LIST_DIR}/night/CMakeLists.txt) +include(${CMAKE_CURRENT_LIST_DIR}/night-alt/CMakeLists.txt) \ No newline at end of file diff --git a/assets/games/liminal/textures/eth/poses/day-alt/CMakeLists.txt b/assets/games/liminal/textures/eth/poses/day-alt/CMakeLists.txt new file mode 100644 index 00000000..be5b07f3 --- /dev/null +++ b/assets/games/liminal/textures/eth/poses/day-alt/CMakeLists.txt @@ -0,0 +1,29 @@ +# Copyright (c) 2023 Dominic Masters +# +# This software is released under the MIT License. +# https://opensource.org/licenses/MIT + +tool_texture(texture_eth_pose_day_alt_back + FILE="${CMAKE_CURRENT_LIST_DIR}/back.png" + ${ETH_POSE_TEXTURE_OPTIONS} +) + +tool_texture(texture_eth_pose_day_alt_cross + FILE="${CMAKE_CURRENT_LIST_DIR}/cross.png" + ${ETH_POSE_TEXTURE_OPTIONS} +) + +tool_texture(texture_eth_pose_day_alt_front + FILE="${CMAKE_CURRENT_LIST_DIR}/front.png" + ${ETH_POSE_TEXTURE_OPTIONS} +) + +tool_texture(texture_eth_pose_day_alt_hips + FILE="${CMAKE_CURRENT_LIST_DIR}/hips.png" + ${ETH_POSE_TEXTURE_OPTIONS} +) + +tool_texture(texture_eth_pose_day_alt_neutral + FILE="${CMAKE_CURRENT_LIST_DIR}/neutral.png" + ${ETH_POSE_TEXTURE_OPTIONS} +) \ No newline at end of file diff --git a/assets/games/liminal/textures/eth/poses/day-alt/back.png b/assets/games/liminal/textures/eth/poses/day-alt/back.png new file mode 100644 index 00000000..12e65bc4 Binary files /dev/null and b/assets/games/liminal/textures/eth/poses/day-alt/back.png differ diff --git a/assets/games/liminal/textures/eth/poses/day-alt/cross.png b/assets/games/liminal/textures/eth/poses/day-alt/cross.png new file mode 100644 index 00000000..27d556e1 Binary files /dev/null and b/assets/games/liminal/textures/eth/poses/day-alt/cross.png differ diff --git a/assets/games/liminal/textures/eth/poses/day-alt/front.png b/assets/games/liminal/textures/eth/poses/day-alt/front.png new file mode 100644 index 00000000..b032d79c Binary files /dev/null and b/assets/games/liminal/textures/eth/poses/day-alt/front.png differ diff --git a/assets/games/liminal/textures/eth/poses/day-alt/hips.png b/assets/games/liminal/textures/eth/poses/day-alt/hips.png new file mode 100644 index 00000000..2f953775 Binary files /dev/null and b/assets/games/liminal/textures/eth/poses/day-alt/hips.png differ diff --git a/assets/games/liminal/textures/eth/poses/day-alt/neutral.png b/assets/games/liminal/textures/eth/poses/day-alt/neutral.png new file mode 100644 index 00000000..666b0904 Binary files /dev/null and b/assets/games/liminal/textures/eth/poses/day-alt/neutral.png differ diff --git a/assets/games/liminal/textures/eth/poses/day/CMakeLists.txt b/assets/games/liminal/textures/eth/poses/day/CMakeLists.txt index 2cb7e92f..95395b09 100644 --- a/assets/games/liminal/textures/eth/poses/day/CMakeLists.txt +++ b/assets/games/liminal/textures/eth/poses/day/CMakeLists.txt @@ -5,35 +5,25 @@ tool_texture(texture_eth_pose_day_back FILE="${CMAKE_CURRENT_LIST_DIR}/back.png" - SCALE=${LIMINIAL_CHARACTER_SCALE} - FILTER_MIN=nearest - FILTER_MAG=nearest + ${ETH_POSE_TEXTURE_OPTIONS} ) tool_texture(texture_eth_pose_day_cross FILE="${CMAKE_CURRENT_LIST_DIR}/cross.png" - SCALE=${LIMINIAL_CHARACTER_SCALE} - FILTER_MIN=nearest - FILTER_MAG=nearest + ${ETH_POSE_TEXTURE_OPTIONS} ) tool_texture(texture_eth_pose_day_front FILE="${CMAKE_CURRENT_LIST_DIR}/front.png" - SCALE=${LIMINIAL_CHARACTER_SCALE} - FILTER_MIN=nearest - FILTER_MAG=nearest + ${ETH_POSE_TEXTURE_OPTIONS} ) tool_texture(texture_eth_pose_day_hips FILE="${CMAKE_CURRENT_LIST_DIR}/hips.png" - SCALE=${LIMINIAL_CHARACTER_SCALE} - FILTER_MIN=nearest - FILTER_MAG=nearest + ${ETH_POSE_TEXTURE_OPTIONS} ) tool_texture(texture_eth_pose_day_neutral FILE="${CMAKE_CURRENT_LIST_DIR}/neutral.png" - SCALE=${LIMINIAL_CHARACTER_SCALE} - FILTER_MIN=nearest - FILTER_MAG=nearest + ${ETH_POSE_TEXTURE_OPTIONS} ) \ No newline at end of file diff --git a/assets/games/liminal/textures/eth/poses/night-alt/CMakeLists.txt b/assets/games/liminal/textures/eth/poses/night-alt/CMakeLists.txt new file mode 100644 index 00000000..af4feb2c --- /dev/null +++ b/assets/games/liminal/textures/eth/poses/night-alt/CMakeLists.txt @@ -0,0 +1,29 @@ +# Copyright (c) 2023 Dominic Masters +# +# This software is released under the MIT License. +# https://opensource.org/licenses/MIT + +tool_texture(texture_eth_pose_night_alt_back + FILE="${CMAKE_CURRENT_LIST_DIR}/back.png" + ${ETH_POSE_TEXTURE_OPTIONS} +) + +tool_texture(texture_eth_pose_night_alt_cross + FILE="${CMAKE_CURRENT_LIST_DIR}/cross.png" + ${ETH_POSE_TEXTURE_OPTIONS} +) + +tool_texture(texture_eth_pose_night_alt_front + FILE="${CMAKE_CURRENT_LIST_DIR}/front.png" + ${ETH_POSE_TEXTURE_OPTIONS} +) + +tool_texture(texture_eth_pose_night_alt_hips + FILE="${CMAKE_CURRENT_LIST_DIR}/hips.png" + ${ETH_POSE_TEXTURE_OPTIONS} +) + +tool_texture(texture_eth_pose_night_alt_neutral + FILE="${CMAKE_CURRENT_LIST_DIR}/neutral.png" + ${ETH_POSE_TEXTURE_OPTIONS} +) \ No newline at end of file diff --git a/assets/games/liminal/textures/eth/poses/night-alt/back.png b/assets/games/liminal/textures/eth/poses/night-alt/back.png new file mode 100644 index 00000000..f9bbbc04 Binary files /dev/null and b/assets/games/liminal/textures/eth/poses/night-alt/back.png differ diff --git a/assets/games/liminal/textures/eth/poses/night-alt/cross.png b/assets/games/liminal/textures/eth/poses/night-alt/cross.png new file mode 100644 index 00000000..81094023 Binary files /dev/null and b/assets/games/liminal/textures/eth/poses/night-alt/cross.png differ diff --git a/assets/games/liminal/textures/eth/poses/night-alt/front.png b/assets/games/liminal/textures/eth/poses/night-alt/front.png new file mode 100644 index 00000000..e9f6f47f Binary files /dev/null and b/assets/games/liminal/textures/eth/poses/night-alt/front.png differ diff --git a/assets/games/liminal/textures/eth/poses/night-alt/hips.png b/assets/games/liminal/textures/eth/poses/night-alt/hips.png new file mode 100644 index 00000000..ff01f99a Binary files /dev/null and b/assets/games/liminal/textures/eth/poses/night-alt/hips.png differ diff --git a/assets/games/liminal/textures/eth/poses/night-alt/neutral.png b/assets/games/liminal/textures/eth/poses/night-alt/neutral.png new file mode 100644 index 00000000..57eb91aa Binary files /dev/null and b/assets/games/liminal/textures/eth/poses/night-alt/neutral.png differ diff --git a/assets/games/liminal/textures/eth/poses/night/CMakeLists.txt b/assets/games/liminal/textures/eth/poses/night/CMakeLists.txt index 423020b2..2e3f859d 100644 --- a/assets/games/liminal/textures/eth/poses/night/CMakeLists.txt +++ b/assets/games/liminal/textures/eth/poses/night/CMakeLists.txt @@ -5,35 +5,25 @@ tool_texture(texture_eth_pose_night_back FILE="${CMAKE_CURRENT_LIST_DIR}/back.png" - SCALE=${LIMINIAL_CHARACTER_SCALE} - FILTER_MIN=nearest - FILTER_MAG=nearest + ${ETH_POSE_TEXTURE_OPTIONS} ) tool_texture(texture_eth_pose_night_cross FILE="${CMAKE_CURRENT_LIST_DIR}/cross.png" - SCALE=${LIMINIAL_CHARACTER_SCALE} - FILTER_MIN=nearest - FILTER_MAG=nearest + ${ETH_POSE_TEXTURE_OPTIONS} ) tool_texture(texture_eth_pose_night_front FILE="${CMAKE_CURRENT_LIST_DIR}/front.png" - SCALE=${LIMINIAL_CHARACTER_SCALE} - FILTER_MIN=nearest - FILTER_MAG=nearest + ${ETH_POSE_TEXTURE_OPTIONS} ) tool_texture(texture_eth_pose_night_hips FILE="${CMAKE_CURRENT_LIST_DIR}/hips.png" - SCALE=${LIMINIAL_CHARACTER_SCALE} - FILTER_MIN=nearest - FILTER_MAG=nearest + ${ETH_POSE_TEXTURE_OPTIONS} ) tool_texture(texture_eth_pose_night_neutral FILE="${CMAKE_CURRENT_LIST_DIR}/neutral.png" - SCALE=${LIMINIAL_CHARACTER_SCALE} - FILTER_MIN=nearest - FILTER_MAG=nearest + ${ETH_POSE_TEXTURE_OPTIONS} ) \ No newline at end of file diff --git a/assets/test.txt b/assets/test.txt deleted file mode 100644 index 1cd91202..00000000 --- a/assets/test.txt +++ /dev/null @@ -1 +0,0 @@ -9Test6 \ No newline at end of file diff --git a/src/dawntools/texturetool/CMakeLists.txt b/src/dawntools/texturetool/CMakeLists.txt index 4a598fa0..3e6bc6bf 100644 --- a/src/dawntools/texturetool/CMakeLists.txt +++ b/src/dawntools/texturetool/CMakeLists.txt @@ -46,6 +46,10 @@ function(tool_texture target) set(WRAP_X "") set(WRAP_Y "") set(SCALE "") + set(CROP_START_X "") + set(CROP_START_Y "") + set(CROP_END_X "") + set(CROP_END_Y "") # Parse Args foreach(_PAIR IN LISTS ARGN) @@ -75,6 +79,10 @@ function(tool_texture target) --filterMin="${FILTER_MIN}" --filterMag="${FILTER_MIN}" --scale="${SCALE}" + --cropStartX="${CROP_START_X}" + --cropStartY="${CROP_START_Y}" + --cropEndX="${CROP_END_X}" + --cropEndY="${CROP_END_Y}" COMMENT "Generating texture ${target} from ${FILE}" DEPENDS ${DEPS} ) diff --git a/src/dawntools/texturetool/TextureTool.cpp b/src/dawntools/texturetool/TextureTool.cpp index a01da438..4e65db9e 100644 --- a/src/dawntools/texturetool/TextureTool.cpp +++ b/src/dawntools/texturetool/TextureTool.cpp @@ -21,7 +21,11 @@ std::map TextureTool::getOptionalFlags() { { "scaleWrapX", "clamp" }, { "scaleWrapY", "clamp" }, { "scaleFilterX", "nearest" }, - { "scaleFilterY", "nearest" } + { "scaleFilterY", "nearest" }, + { "cropStartX", "" }, + { "cropStartY", "" }, + { "cropEndX", "" }, + { "cropEndY", "" } }; } @@ -36,41 +40,84 @@ int32_t TextureTool::start() { std::cout << "Failed to open input file " << in.filename << std::endl; return 1; } - - int w, h, channels; - auto imageRaw = stbi_load_from_file(in.file, &w, &h, &channels, STBI_rgb_alpha); - if(imageRaw == NULL) { + + int32_t originalWidth, originalHeight, channels; + auto bufferCurrent = stbi_load_from_file( + in.file, + &originalWidth, + &originalHeight, + &channels, + STBI_rgb_alpha + ); + if(bufferCurrent == NULL) { std::cout << "Failed to load input texture!" << std::endl; return 1; } in.close(); - // Buffer to output - size_t len = STBI_rgb_alpha * w * h; - uint8_t *dataImage = (uint8_t*)malloc(sizeof(uint8_t) * len); + // Create a temporary buffer to hold pixels. + size_t len = STBI_rgb_alpha * originalWidth * originalHeight; + uint8_t *bufferTemporary = (uint8_t*)malloc(sizeof(uint8_t) * len); + int32_t currentWidth = originalWidth; + int32_t currentHeight = originalHeight; - float_t scale = 1; - if(!flags["scale"].empty()) { - scale = std::stof(flags["scale"]); + // Crop + int32_t cropStartX = 0; + int32_t cropStartY = 0; + int32_t cropEndX = 0; + int32_t cropEndY = 0; + + if(!flags["cropStartX"].empty()) cropStartX = std::stoi(flags["cropStartX"]); + if(!flags["cropStartY"].empty()) cropStartY = std::stoi(flags["cropStartY"]); + if(!flags["cropEndX"].empty()) cropEndX = std::stoi(flags["cropEndX"]); + if(!flags["cropEndY"].empty()) cropEndY = std::stoi(flags["cropEndY"]); + + if(cropStartX > 0 || cropStartY > 0 || cropEndX > 0 || cropEndY > 0) { + int32_t cropWidth = originalWidth - cropStartX - cropEndX; + int32_t cropHeight = originalHeight - cropStartY - cropEndY; + + float_t s0, t0, s1, t1; + s0 = (float_t)cropStartX / (float_t)originalWidth; + t0 = (float_t)cropStartY / (float_t)originalHeight; + s1 = 1.0f - ((float_t)cropEndX / (float_t)originalWidth); + t1 = 1.0f - ((float_t)cropEndY / (float_t)originalHeight); + + stbir_resize_region( + bufferCurrent, currentWidth, currentHeight, 0, + bufferTemporary, cropWidth, cropHeight, 0, + STBIR_TYPE_UINT8, + STBI_rgb_alpha, -1, 0, + STBIR_EDGE_CLAMP, STBIR_EDGE_CLAMP, + STBIR_FILTER_BOX, STBIR_FILTER_BOX, + STBIR_COLORSPACE_LINEAR, NULL, + s0, t0, s1, t1 + ); + memcpy(bufferCurrent, bufferTemporary, sizeof(uint8_t) * len); + + currentWidth = cropWidth; + currentHeight = cropHeight; } - if(scale != 1) { + // Scale + if(!flags["scale"].empty()) { + float_t scale = std::stof(flags["scale"]); + int32_t scaleWidth = currentWidth * scale; + int32_t scaleHeight = currentHeight * scale; + stbir_resize_uint8_generic( - imageRaw, w, h, 0, - dataImage, w * scale, h * scale, 0, + bufferCurrent, currentWidth, currentHeight, 0, + bufferTemporary, scaleWidth, scaleHeight, 0, STBI_rgb_alpha, -1, 0, STBIR_EDGE_CLAMP, STBIR_FILTER_TRIANGLE, STBIR_COLORSPACE_LINEAR, NULL ); - w = w * scale; - h = h * scale; - printf("Changing size to %ix%i\n", w, h); - } else { - memcpy(dataImage, imageRaw, len); + memcpy(bufferCurrent, bufferTemporary, sizeof(uint8_t) * len); + + currentWidth = scaleWidth; + currentHeight = scaleHeight; } - stbi_image_free(imageRaw); - + // Wrapping Settings std::function wrapFromString = [&](std::string wr) { if(wr == "repeat") return 0; if(wr == "mirror") return 1; @@ -94,8 +141,8 @@ int32_t TextureTool::start() { // Write info char headerBuffer[256]; size_t headerBufferLength = sprintf((char *)headerBuffer, "DT_2.00|%i|%i|%i|%i|%i|%i|%i|", - w, - h, + currentWidth, + currentHeight, 4, // RGBA, wrapX, // WRAPX wrapY, // WRAPY @@ -119,11 +166,12 @@ int32_t TextureTool::start() { } // Write texture - if(!out.writeRaw((char *)dataImage, sizeof(uint8_t) * len)) { + if(!out.writeRaw((char*)bufferCurrent, sizeof(uint8_t) * len)) { std::cout << "Failed to write texture data for " << out.filename << std::endl; return 1; } - free(dataImage); + free(bufferCurrent); + free(bufferTemporary); return 0; } \ No newline at end of file