summaryrefslogtreecommitdiffstats
path: root/generate_utils.py
diff options
context:
space:
mode:
authoryum <yum.food.vr@gmail.com>2022-10-23 19:48:34 -0700
committeryum <yum.food.vr@gmail.com>2022-10-23 19:48:34 -0700
commit17ace0cb4ef65bda17dd36630da18dedaa8797b5 (patch)
treee3e1bdfe333044a0a84dc80010089293c90bf3f3 /generate_utils.py
parent0add404dee8124ec1d710416e5827ccef04bc00c (diff)
Rewrite FX and animation generators
* Fix bug where facial animations cause already-written letters to change (!!!) * Add libtastt.py to hold abstractions layered over libunity * Fix * libunity: Fix bug where integer equality state transition conditions ignored the threshold * libunity: Support placing animator states at different positions
Diffstat (limited to 'generate_utils.py')
-rw-r--r--generate_utils.py46
1 files changed, 43 insertions, 3 deletions
diff --git a/generate_utils.py b/generate_utils.py
index 87e8e4f..e066eb1 100644
--- a/generate_utils.py
+++ b/generate_utils.py
@@ -12,6 +12,7 @@ def replaceMacros(lines, macro_defs):
BOARD_ROWS=8
BOARD_COLS=22
INDEX_BITS=4
+#CHARS_PER_CELL=4
CHARS_PER_CELL=80
NUM_LAYERS=ceil((BOARD_ROWS * BOARD_COLS) / (2**INDEX_BITS))
@@ -47,10 +48,34 @@ def getToggleParam():
# Each layer controls a group of cells. There's only one letter per layer, thus
# this is also the name of the parameter which sets the letter for a layer.
-def getLayerParam(which_layer):
+def getLayerParam(which_layer: int) -> str:
return "TaSTT_L%02d" % which_layer
-def getSelectParam(which_layer, which_select):
+def getLayerName(which_layer: int) -> str:
+ return getLayerParam(which_layer)
+
+def getDefaultStateName(which_layer):
+ return "TaSTT_L%02d_Do_Nothing" % which_layer
+
+def getActiveStateName(which_layer):
+ return "TaSTT_L%02d_Active" % which_layer
+
+def getS0StateName(which_layer, s0):
+ return "TaSTT_L%02d_S%02d" % (which_layer, s0)
+
+def getS1StateName(which_layer, s0, s1):
+ return "TaSTT_L%02d_S%02d_S%02d" % (which_layer, s0, s1)
+
+def getS2StateName(which_layer, s0, s1, s2):
+ return "TaSTT_L%02d_S%02d_S%02d_S%02d" % (which_layer, s0, s1, s2)
+
+def getS3StateName(which_layer, s0, s1, s2, s3):
+ return "TaSTT_L%02d_S%02d_S%02d_S%02d_S%02d" % (which_layer, s0, s1, s2, s3)
+
+def getLetterStateName(which_layer, s0, s1, s2, s3, letter):
+ return "TaSTT_L%02d_S%02d_S%02d_S%02d_S%02d_L%03d" % (which_layer, s0, s1, s2, s3, letter)
+
+def getSelectParam(which_layer: int, which_select: int) -> str:
return "TaSTT_L%02d_S%02d" % (which_layer, which_select)
def getEnableParam():
@@ -64,13 +89,28 @@ def getBoardIndex(which_layer, s0, s1, s2, s3):
# those cells.
return ((s0 * 8 + s1 * 4 + s2 * 2 + s3) * NUM_LAYERS + which_layer) % (BOARD_ROWS * BOARD_COLS)
+def getShaderParamByRowCol(row, col):
+ return "_Letter_Row%02d_Col%02d" % (row, col)
+
# Mapping from layer to shader param.
def getShaderParam(which_layer, s0, s1, s2, s3):
index = getBoardIndex(which_layer, s0, s1, s2, s3)
col = index % BOARD_COLS
row = floor(index / BOARD_COLS)
- return "_Letter_Row%02d_Col%02d" % (row, col)
+
+ return getShaderParamByRowCol(row, col)
+
+def getAnimationName(row, col, letter):
+ return "R%02dC%02dL%02d" % (row, col, letter)
+
+def getAnimationNameByLayerAndIndex(which_layer, s0, s1, s2, s3, letter):
+ index = getBoardIndex(which_layer, s0, s1, s2, s3)
+
+ col = index % BOARD_COLS
+ row = floor(index / BOARD_COLS)
+
+ return "R%02dC%02dL%02d" % (row, col, letter)
# Returns the path to the animation for the given shader parameter + letter.
def getAnimationPath(shader_param, letter):