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