diff options
| author | yum <yum.food.vr@gmail.com> | 2022-09-30 18:44:36 -0700 |
|---|---|---|
| committer | yum <yumfood@airmail.cc> | 2022-09-30 18:44:36 -0700 |
| commit | 2fa5bc78b5c4500301327bd6a334ab4fb8e04a17 (patch) | |
| tree | d03c01d929431320686d61f7091b96f6be3d14ca /generate_fx.py | |
| parent | 73bbba9de5210ae7f895ae82bd2524eb76e3a38c (diff) | |
Redo FX layer
Apparently the same avatar parameter can only be updated so quickly
before VRChat starts dropping messages. So now we divide the board
into "groups" of 8 characters. Each group can be updated relatively
slowly, but all groups can be updated in parallel. Thus we can update
the board group-by-group, pausing between each group.
* Fix shader bugs - now there are Row05 parameters, and row00 refers
to the topmost row instead of the bottom-most.
* Remove outdated layer/group names files
* Extend osc_ctrl.py to support encoding & sending messages
* Add generate_params.py to handle creating TaSTT_params.asset
* Add generate_utils.py for common code generation facilities &
parameters.
Diffstat (limited to 'generate_fx.py')
| -rw-r--r-- | generate_fx.py | 574 |
1 files changed, 283 insertions, 291 deletions
diff --git a/generate_fx.py b/generate_fx.py index ba1d590..28d6550 100644 --- a/generate_fx.py +++ b/generate_fx.py @@ -15,10 +15,18 @@ # where we're transitioning to. # 12. %TRANSITION_THRESHOLD% - the threshold to use when transitioning. +from generate_utils import replaceMacros +from generate_utils import getDummyParam +from generate_utils import getLayerParam +from generate_utils import getSelectParam +from generate_utils import getEnableParam +from generate_utils import getShaderParam +from generate_utils import getAnimationPath +from generate_utils import NUM_LAYERS +from generate_utils import CHARS_PER_CELL + # To debug, I recommend setting these values low and manually moving things # around in the animator. Then run using Lyuma's avatar 3.0 emulator. -NUM_ROWS=6 -NUM_COLS=14 NUM_LETTERS=80 params = {} @@ -34,33 +42,20 @@ def get_u2(class_id, state): # These !u! and & numbers are, respectively, a class ID and an instance ID. # The instance ID begins with the class ID then has a 5-digit suffix. params["ANIMATOR_CONTROLLER_U"] = "91" -params["ANIMATOR_HEADER_U2"] = "9100000" # this is a special value +params["ANIMATOR_HEADER_U2"] = "9100000" params["ANIMATOR_STATE_MACHINE_U"] = "1107" -params["TASTT_LAYER_U2"] = get_u2("1107", state) params["MONO_BEHAVIOUR_U"] = "114" -params["SET_LETTERS_SCRIPT_U2"] = get_u2("114", state) params["ANIMATOR_STATE_U"] = "1102" -params["TASTT_DEFAULT_STATE_U2"] = get_u2("1102", state) -params["TASTT_ACTIVE_STATE_U2"] = get_u2("1102", state) params["ANIMATOR_STATE_TRANSITION_U"] = "1101" -params["TASTT_ACTIVE_STATE_TRANSITION_U2"] = get_u2("1101", state) -params["TASTT_RESTART_TRANSITION_U2"] = get_u2("1101", state) HEADER=""" %YAML 1.1 %TAG !u! tag:unity3d.com,2011: -"""[1:] - -# Generates the sed cmd args required to replace all parameters defined in -# $1, which is an associative array like `params`. -def replaceMacros(lines, macro_defs): - for k,v in macro_defs.items(): - lines = lines.replace("%" + k + "%", v) - return lines +"""[1:][:-1] def genHeader(): return replaceMacros(HEADER, params) @@ -75,11 +70,11 @@ AnimatorController: m_PrefabAsset: {fileID: 0} m_Name: TaSTT_fx serializedVersion: 5 -"""[1:] +"""[1:][:-1] ANIMATOR_PARAMETER_HEADER = """ m_AnimatorParameters: -"""[1:] +"""[1:][:-1] ANIMATOR_PARAMETER_INT = """ - m_Name: %ANIMATOR_PARAMETER_NAME% @@ -88,7 +83,7 @@ ANIMATOR_PARAMETER_INT = """ m_DefaultInt: 0 m_DefaultBool: 0 m_Controller: {fileID: 0} -"""[1:] +"""[1:][:-1] ANIMATOR_PARAMETER_BOOL = """ - m_Name: %ANIMATOR_PARAMETER_NAME% @@ -97,42 +92,26 @@ ANIMATOR_PARAMETER_BOOL = """ m_DefaultInt: 0 m_DefaultBool: 0 m_Controller: {fileID: 0} -"""[1:] +"""[1:][:-1] ANIMATOR_LAYER_HEADER = """ m_AnimatorLayers: -"""[1:] +"""[1:][:-1] -# We have a single animator layer which does everything. ANIMATOR_LAYER_TASTT = """ - serializedVersion: 5 - m_Name: TaSTT + m_Name: %TASTT_LAYER_NAME% m_StateMachine: {fileID: %TASTT_LAYER_U2%} m_Mask: {fileID: 0} m_Motions: [] m_Behaviours: [] m_BlendingMode: 0 m_SyncedLayerIndex: -1 - m_DefaultWeight: 0 - m_IKPass: 0 - m_SyncedLayerAffectsTiming: 0 - m_Controller: {fileID: %ANIMATOR_HEADER_U2%} -"""[1:] - -ANIMATOR_LAYER_CELL_ANIM = """ - - serializedVersion: 5 - m_Name: %LAYER_NAME% - m_StateMachine: {fileID: %LAYER_STATE_MACHINE_U2%} - m_Mask: {fileID: 0} - m_Motions: [] - m_Behaviours: [] - m_BlendingMode: 0 - m_SyncedLayerIndex: -1 m_DefaultWeight: 1 m_IKPass: 0 m_SyncedLayerAffectsTiming: 0 m_Controller: {fileID: %ANIMATOR_HEADER_U2%} -"""[1:] +"""[1:][:-1] GROUP_NAMES = [ "_Letter_Row00_Col00_03", @@ -252,19 +231,33 @@ def genAnimator(state): print(replaceMacros(ANIMATOR_HEADER, params)) print(ANIMATOR_PARAMETER_HEADER) - params["ANIMATOR_PARAMETER_NAME"] = "TaSTT_Letter" - print(replaceMacros(ANIMATOR_PARAMETER_INT, params)) - params["ANIMATOR_PARAMETER_NAME"] = "TaSTT_Row" - print(replaceMacros(ANIMATOR_PARAMETER_INT, params)) - params["ANIMATOR_PARAMETER_NAME"] = "TaSTT_Col" - print(replaceMacros(ANIMATOR_PARAMETER_INT, params)) - params["ANIMATOR_PARAMETER_NAME"] = "TaSTT_Active" - print(replaceMacros(ANIMATOR_PARAMETER_BOOL, params)) - params["ANIMATOR_PARAMETER_NAME"] = "TaSTT_Dummy" + params["ANIMATOR_PARAMETER_NAME"] = getDummyParam() print(replaceMacros(ANIMATOR_PARAMETER_BOOL, params)) + for i in range(0, NUM_LAYERS): + params["ANIMATOR_PARAMETER_NAME"] = getLayerParam(i) + print(replaceMacros(ANIMATOR_PARAMETER_INT, params)) + + params["ANIMATOR_PARAMETER_NAME"] = getSelectParam(i, 0) + print(replaceMacros(ANIMATOR_PARAMETER_BOOL, params)) + + params["ANIMATOR_PARAMETER_NAME"] = getSelectParam(i, 1) + print(replaceMacros(ANIMATOR_PARAMETER_BOOL, params)) + + params["ANIMATOR_PARAMETER_NAME"] = getSelectParam(i, 2) + print(replaceMacros(ANIMATOR_PARAMETER_BOOL, params)) + + params["ANIMATOR_PARAMETER_NAME"] = getEnableParam(i) + print(replaceMacros(ANIMATOR_PARAMETER_BOOL, params)) + + print(replaceMacros(ANIMATOR_LAYER_HEADER, params)) - print(replaceMacros(ANIMATOR_LAYER_TASTT, params)) + + for i in range(0, NUM_LAYERS): + params[getLayerParam(i) + "_LAYER_U2"] = get_u2("1107", state) + params["TASTT_LAYER_U2"] = params[getLayerParam(i) + "_LAYER_U2"] + params["TASTT_LAYER_NAME"] = getLayerParam(i) + print(replaceMacros(ANIMATOR_LAYER_TASTT, params)) genAnimator(state) TASTT_LAYER_HEADER = """ @@ -275,15 +268,15 @@ AnimatorStateMachine: m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_Name: TaSTT + m_Name: %TASTT_LAYER_NAME% m_ChildStates: -"""[1:] +"""[1:][:-1] TASTT_LAYER_HEADER_CHILD_STATE = """ - serializedVersion: 1 m_State: {fileID: %TASTT_STATE_U2%} m_Position: {x: 330, y: -60, z: 0} -"""[1:] +"""[1:][:-1] TASTT_LAYER_FOOTER = """ m_ChildStateMachines: [] @@ -296,23 +289,26 @@ TASTT_LAYER_FOOTER = """ m_ExitPosition: {x: 800, y: 120, z: 0} m_ParentStateMachinePosition: {x: 800, y: 20, z: 0} m_DefaultState: {fileID: %TASTT_DEFAULT_STATE_U2%} -"""[1:] +"""[1:][:-1] -# Default state. -# One transition to TaSTT_Active. -TASTT_DEFAULT_STATE = """ ---- !u!%ANIMATOR_STATE_U% &%TASTT_DEFAULT_STATE_U2% +# State with one transition. +# Params: +# %TASTT_STATE_NAME%: the name of this state +# %TASTT_STATE_TRANSITION_U2%: the U2 of the transition to the next state +# %TASTT_STATE_TRANSITION_U2% +TASTT_UNARY_STATE = """ +--- !u!%ANIMATOR_STATE_U% &%TASTT_STATE_U2% AnimatorState: serializedVersion: 6 m_ObjectHideFlags: 1 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_Name: TaSTT_Do_Nothing + m_Name: %TASTT_STATE_NAME% m_Speed: 1 m_CycleOffset: 0 m_Transitions: - - {fileID: %TASTT_ACTIVE_STATE_TRANSITION_U2%} + - {fileID: %TASTT_STATE_TRANSITION_U2%} m_StateMachineBehaviours: [] m_Position: {x: 50, y: 50, z: 0} m_IKOnFeet: 0 @@ -328,61 +324,28 @@ AnimatorState: m_MirrorParameter: m_CycleOffsetParameter: m_TimeParameter: -"""[1:] +"""[1:][:-1] -# Transition from TaSTT_Do_nothing. to TaSTT_Active. +# State with two transitions. # Params: -# %TASTT_ACTIVE_STATE_TRANSITION_U2% -# %TASTT_ROW_STATE_U2% - address of row state we're transitioning to -TASTT_ACTIVE_STATE_TRANSITION = """ ---- !u!1101 &%TASTT_ACTIVE_STATE_TRANSITION_U2% -AnimatorStateTransition: - m_ObjectHideFlags: 1 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: - m_Conditions: - - m_ConditionMode: 1 - m_ConditionEvent: TaSTT_Active - m_EventTreshold: 1 - m_DstStateMachine: {fileID: 0} - m_DstState: {fileID: %TASTT_ACTIVE_STATE_U2%} - m_Solo: 0 - m_Mute: 0 - m_IsExit: 0 - serializedVersion: 3 - m_TransitionDuration: 0 - m_TransitionOffset: 0 - m_ExitTime: 0.75 - m_HasExitTime: 0 - m_HasFixedDuration: 1 - m_InterruptionSource: 0 - m_OrderedInterruption: 1 - m_CanTransitionToSelf: 1 -"""[1:] - -# State reached when TaSTT_Active = True. -# One transition per row. -TASTT_ACTIVE_STATE_HEADER = """ ---- !u!1102 &%TASTT_ACTIVE_STATE_U2% +# %TASTT_STATE_NAME%: the name of this state +# %TASTT_STATE_TRANSITION_0_U2% +# %TASTT_STATE_TRANSITION_1_U2% +# %TASTT_STATE_TRANSITION_U2% +TASTT_BINARY_STATE = """ +--- !u!%ANIMATOR_STATE_U% &%TASTT_STATE_U2% AnimatorState: serializedVersion: 6 m_ObjectHideFlags: 1 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_Name: TaSTT_Active + m_Name: %TASTT_STATE_NAME% m_Speed: 1 m_CycleOffset: 0 m_Transitions: -"""[1:] - -TASTT_ACTIVE_STATE_HEADER_TRANSITION = """ - - {fileID: %TASTT_TRANSITION_U2%} -"""[1:] - -TASTT_ACTIVE_STATE_FOOTER = """ + - {fileID: %TASTT_STATE_TRANSITION_0_U2%} + - {fileID: %TASTT_STATE_TRANSITION_1_U2%} m_StateMachineBehaviours: [] m_Position: {x: 50, y: 50, z: 0} m_IKOnFeet: 0 @@ -398,47 +361,40 @@ TASTT_ACTIVE_STATE_FOOTER = """ m_MirrorParameter: m_CycleOffsetParameter: m_TimeParameter: -"""[1:] +"""[1:][:-1] -# Transition from TaSTT_Active to TaSTT_Row*. -# Params: -# TRANSITION_THRESHOLD: The row to transition to (int). -# DST_STATE_U2 -TASTT_ROW_STATE_TRANSITION = """ ---- !u!1101 &%TRANSITION_U2% -AnimatorStateTransition: +TASTT_UNARY_STATE = """ +--- !u!%ANIMATOR_STATE_U% &%TASTT_STATE_U2% +AnimatorState: + serializedVersion: 6 m_ObjectHideFlags: 1 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_Name: - m_Conditions: - - m_ConditionMode: 6 - m_ConditionEvent: TaSTT_Row - m_EventTreshold: %TRANSITION_THRESHOLD% - m_DstStateMachine: {fileID: 0} - m_DstState: {fileID: %DST_STATE_U2%} - m_Solo: 0 - m_Mute: 0 - m_IsExit: 0 - serializedVersion: 3 - m_TransitionDuration: 0 - m_TransitionOffset: 0 - m_ExitTime: 0.75 - m_HasExitTime: 0 - m_HasFixedDuration: 1 - m_InterruptionSource: 0 - m_OrderedInterruption: 1 - m_CanTransitionToSelf: 1 -"""[1:] + m_Name: %TASTT_STATE_NAME% + m_Speed: 1 + m_CycleOffset: 0 + m_Transitions: + - {fileID: %TASTT_STATE_TRANSITION_U2%} + m_StateMachineBehaviours: [] + m_Position: {x: 50, y: 50, z: 0} + m_IKOnFeet: 0 + m_WriteDefaultValues: 0 + m_Mirror: 0 + m_SpeedParameterActive: 0 + m_MirrorParameterActive: 0 + m_CycleOffsetParameterActive: 0 + m_TimeParameterActive: 0 + m_Motion: {fileID: 0} + m_Tag: + m_SpeedParameter: + m_MirrorParameter: + m_CycleOffsetParameter: + m_TimeParameter: +"""[1:][:-1] -# State reached after TaSTT_Active. -# One transition per column. -# Params: -# %TASTT_STATE_NAME%: TaSTT_Row[0-9][0-9]. -# %TASTT_TRANSITION_U2% -TASTT_ROW_STATE_HEADER = """ ---- !u!1102 &%TASTT_STATE_U2% +TASTT_NARY_STATE_HEADER = """ +--- !u!%ANIMATOR_STATE_U% &%TASTT_STATE_U2% AnimatorState: serializedVersion: 6 m_ObjectHideFlags: 1 @@ -449,13 +405,13 @@ AnimatorState: m_Speed: 1 m_CycleOffset: 0 m_Transitions: -"""[1:] +"""[1:][:-1] -TASTT_ROW_STATE_HEADER_TRANSITION = """ - - {fileID: %TASTT_TRANSITION_U2%} -"""[1:] +TASTT_NARY_STATE_HEADER_TRANSITION = """ + - {fileID: %TASTT_STATE_TRANSITION_U2%} +"""[1:][:-1] -TASTT_ROW_STATE_FOOTER = """ +TASTT_NARY_STATE_FOOTER = """ m_StateMachineBehaviours: [] m_Position: {x: 50, y: 50, z: 0} m_IKOnFeet: 0 @@ -471,14 +427,18 @@ TASTT_ROW_STATE_FOOTER = """ m_MirrorParameter: m_CycleOffsetParameter: m_TimeParameter: -"""[1:] +"""[1:][:-1] -# Transition from TaSTT_Row* to TaSTT_Row*_Col*. +# Transition from TaSTT_Do_nothing. to TaSTT_Active. # Params: -# TRANSITION_THRESHOLD: The col to transition to (int). -# DST_STATE_U2 -TASTT_COL_STATE_TRANSITION = """ ---- !u!1101 &%TASTT_TRANSITION_U2% +# %BOOL_PARAM% - the name of the parameter to branch on +# %THRESHOLD% - the condition to branch on (1 == true) +# %TASTT_ACTIVE_STATE_TRANSITION_U2% +# %TASTT_ROW_STATE_U2% - address of row state we're transitioning to +# A bizarre quirk: when branching false, m_ConditionMode = 2; else +# m_ConditionMode = 1. +TASTT_BOOL_STATE_TRANSITION = """ +--- !u!1101 &%TASTT_STATE_TRANSITION_U2% AnimatorStateTransition: m_ObjectHideFlags: 1 m_CorrespondingSourceObject: {fileID: 0} @@ -486,9 +446,9 @@ AnimatorStateTransition: m_PrefabAsset: {fileID: 0} m_Name: m_Conditions: - - m_ConditionMode: 6 - m_ConditionEvent: TaSTT_Col - m_EventTreshold: %TRANSITION_THRESHOLD% + - m_ConditionMode: %MODE% + m_ConditionEvent: %BOOL_PARAM% + m_EventTreshold: %THRESHOLD% m_DstStateMachine: {fileID: 0} m_DstState: {fileID: %DST_STATE_U2%} m_Solo: 0 @@ -503,55 +463,10 @@ AnimatorStateTransition: m_InterruptionSource: 0 m_OrderedInterruption: 1 m_CanTransitionToSelf: 1 -"""[1:] +"""[1:][:-1] -# State reached after TaSTT_Row*. -# One transition per letter. -# Params: -# %TASTT_STATE_NAME%: TaSTT_Row[0-9][0-9]_Col[0-9][0-9] -# %TASTT_TRANSITION_U2% -TASTT_COL_STATE_HEADER = """ ---- !u!1102 &%TASTT_STATE_U2% -AnimatorState: - serializedVersion: 6 - m_ObjectHideFlags: 1 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: %TASTT_STATE_NAME% - m_Speed: 1 - m_CycleOffset: 0 - m_Transitions: -"""[1:] - -TASTT_COL_STATE_HEADER_TRANSITION = """ - - {fileID: %TASTT_TRANSITION_U2%} -"""[1:] - -TASTT_COL_STATE_FOOTER = """ - m_StateMachineBehaviours: [] - m_Position: {x: 50, y: 50, z: 0} - m_IKOnFeet: 0 - m_WriteDefaultValues: 0 - m_Mirror: 0 - m_SpeedParameterActive: 0 - m_MirrorParameterActive: 0 - m_CycleOffsetParameterActive: 0 - m_TimeParameterActive: 0 - m_Motion: {fileID: 0} - m_Tag: - m_SpeedParameter: - m_MirrorParameter: - m_CycleOffsetParameter: - m_TimeParameter: -""" - -# Transition from TaSTT_Row*_Col* to TaSTT_Row*_Col*_Letter*. -# Params: -# TRANSITION_THRESHOLD: The row to transition to (int). -# DST_STATE_U2 -TASTT_LETTER_STATE_TRANSITION = """ ---- !u!1101 &%TASTT_TRANSITION_U2% +TASTT_INT_STATE_TRANSITION = """ +--- !u!1101 &%TASTT_STATE_TRANSITION_U2% AnimatorStateTransition: m_ObjectHideFlags: 1 m_CorrespondingSourceObject: {fileID: 0} @@ -560,7 +475,7 @@ AnimatorStateTransition: m_Name: m_Conditions: - m_ConditionMode: 6 - m_ConditionEvent: TaSTT_Letter + m_ConditionEvent: %INT_PARAM% m_EventTreshold: %TRANSITION_THRESHOLD% m_DstStateMachine: {fileID: 0} m_DstState: {fileID: %DST_STATE_U2%} @@ -568,7 +483,7 @@ AnimatorStateTransition: m_Mute: 0 m_IsExit: 0 serializedVersion: 3 - m_TransitionDuration: 0 + m_TransitionDuration: 0.02 m_TransitionOffset: 0 m_ExitTime: 0.75 m_HasExitTime: 0 @@ -576,7 +491,7 @@ AnimatorStateTransition: m_InterruptionSource: 0 m_OrderedInterruption: 1 m_CanTransitionToSelf: 1 -"""[1:] +"""[1:][:-1] # State reached after TaSTT_Row*_Col*. # One transition back up to TaSTT_Do_Nothing. @@ -597,7 +512,7 @@ AnimatorState: m_Speed: 1 m_CycleOffset: 0 m_Transitions: - - {fileID: %TASTT_RESTART_TRANSITION_U2%} + - {fileID: %TASTT_STATE_TRANSITION_U2%} m_StateMachineBehaviours: [] m_Position: {x: 50, y: 50, z: 0} m_IKOnFeet: 0 @@ -613,7 +528,7 @@ AnimatorState: m_MirrorParameter: m_CycleOffsetParameter: m_TimeParameter: -"""[1:] +"""[1:][:-1] TASTT_RESTART_TRANSITION = """ --- !u!1101 &%TASTT_RESTART_TRANSITION_U2% @@ -641,7 +556,7 @@ AnimatorStateTransition: m_InterruptionSource: 0 m_OrderedInterruption: 1 m_CanTransitionToSelf: 1 -""" +"""[1:][:-1] def getAnimationGuid(anim_meta_filename): with open(anim_meta_filename, 'r') as f: @@ -649,108 +564,185 @@ def getAnimationGuid(anim_meta_filename): if "guid" in line: return line.split()[1] -def genTasttLayer(state): +def getDefaultStateName(which_layer): + return "TaSTT_Do_Nothing" + +def getActiveStateName(which_layer): + return "TaSTT_Active" + +def getS0StateName(which_layer, s0): + return "TaSTT_S%02d" % (s0) + +def getS1StateName(which_layer, s0, s1): + return "TaSTT_S%02d_S%02d" % (s0, s1) + +def getS2StateName(which_layer, s0, s1, s2): + return "TaSTT_S%02d_S%02d_S%02d" % (s0, s1, s2) + +def getLetterStateName(which_layer, s0, s1, s2, letter): + return "TaSTT_S%02d_S%02d_S%02d_L%03d" % (s0, s1, s2, letter) + +def genTasttLayer(state, which_layer): # Generate return-home transition - print(replaceMacros(TASTT_RESTART_TRANSITION, params)) + params["TASTT_RETURN_HOME_TRANSITION_%02d_U2" % which_layer] = get_u2("1101", state) + params["TASTT_STATE_TRANSITION_U2"] = params["TASTT_RETURN_HOME_TRANSITION_%02d_U2" % which_layer] + params["BOOL_PARAM"] = getDummyParam() + params["THRESHOLD"] = str(0) + params["MODE"] = str(2) # See comment above TASTT_BOOL_STATE_TRANSITION. + params["DEFAULT_STATE_U2"] = get_u2("1102", state) + params["DST_STATE_U2"] = params["DEFAULT_STATE_U2"] + print(replaceMacros(TASTT_BOOL_STATE_TRANSITION, params)) # Default state. - print(replaceMacros(TASTT_DEFAULT_STATE, params)) + params["TASTT_STATE_U2"] = params["DEFAULT_STATE_U2"] + params["TASTT_STATE_NAME"] = getDefaultStateName(which_layer) + params["TASTT_STATE_TRANSITION_U2"] = get_u2("1101", state) + print(replaceMacros(TASTT_UNARY_STATE, params)) # Active state transition. - print(replaceMacros(TASTT_ACTIVE_STATE_TRANSITION, params)) + params["BOOL_PARAM"] = getEnableParam(which_layer) + params["THRESHOLD"] = str(1) + params["MODE"] = str(1) # See comment above TASTT_BOOL_STATE_TRANSITION. + params["ACTIVE_STATE_U2"] = get_u2("1102", state) + params["DST_STATE_U2"] = params["ACTIVE_STATE_U2"] + print(replaceMacros(TASTT_BOOL_STATE_TRANSITION, params)) # Active state. - print(replaceMacros(TASTT_ACTIVE_STATE_HEADER, params)) - for row in range(0, NUM_ROWS): - params["TASTT_TRANSITION_ROW%02d_U2" % row] = get_u2("1101", state) - params["TASTT_TRANSITION_U2"] = params["TASTT_TRANSITION_ROW%02d_U2" % row] - print(replaceMacros(TASTT_ACTIVE_STATE_HEADER_TRANSITION, params)) - print(replaceMacros(TASTT_ACTIVE_STATE_FOOTER, params)) - - # Row state transitions (one per row). - for row in range(0, NUM_ROWS): - params["TRANSITION_U2"] = params["TASTT_TRANSITION_ROW%02d_U2" % row] - params["TRANSITION_THRESHOLD"] = str(row) - params["TASTT_ROW%02d_STATE_U2" % row] = get_u2("1102", state) - params["DST_STATE_U2"] = params["TASTT_ROW%02d_STATE_U2" % row] - print(replaceMacros(TASTT_ROW_STATE_TRANSITION, params)) - - # Row states (one per row).. - for row in range(0, NUM_ROWS): - params["TASTT_STATE_U2"] = params["TASTT_ROW%02d_STATE_U2" % row] - params["TASTT_STATE_NAME"] = "TaSTT_Row%02d" % row - print(replaceMacros(TASTT_ROW_STATE_HEADER, params)) - for col in range(0, NUM_COLS): - params["TASTT_TRANSITION_ROW%02d_COL%02d_U2" % (row, col)] = get_u2("1101", state) - params["TASTT_TRANSITION_U2"] = params["TASTT_TRANSITION_ROW%02d_COL%02d_U2" % (row, col)] - print(replaceMacros(TASTT_ROW_STATE_HEADER_TRANSITION, params)) - print(replaceMacros(TASTT_ROW_STATE_FOOTER, params)) - - # Column state transitions (one per row * column). - for row in range(0, NUM_ROWS): - for col in range(0, NUM_COLS): - params["TASTT_TRANSITION_U2"] = params["TASTT_TRANSITION_ROW%02d_COL%02d_U2" % (row, col)] - params["TRANSITION_THRESHOLD"] = str(col) - params["TASTT_ROW%02d_COL%02d_STATE_U2" % (row, col)] = get_u2("1102", state) - params["DST_STATE_U2"] = params["TASTT_ROW%02d_COL%02d_STATE_U2" % (row, col)] - print(replaceMacros(TASTT_COL_STATE_TRANSITION, params)) - - # Column states (one per row * column). - for row in range(0, NUM_ROWS): - for col in range(0, NUM_COLS): - params["TASTT_STATE_U2"] = params["TASTT_ROW%02d_COL%02d_STATE_U2" % (row, col)] - params["TASTT_STATE_NAME"] = "TaSTT_Row%02d_Col%02d" % (row, - col) - print(replaceMacros(TASTT_COL_STATE_HEADER, params)) - for letter in range(0, NUM_LETTERS): - params["TASTT_TRANSITION_ROW%02d_COL%02d_LETTER%02d_U2" % (row, col, letter)] = get_u2("1101", state) - params["TASTT_TRANSITION_U2"] = params["TASTT_TRANSITION_ROW%02d_COL%02d_LETTER%02d_U2" % (row, col, letter)] - print(replaceMacros(TASTT_COL_STATE_HEADER_TRANSITION, params)) - print(replaceMacros(TASTT_COL_STATE_FOOTER, params)) - - # Letter state transitions (one per row * column * letter). - for row in range(0, NUM_ROWS): - for col in range(0, NUM_COLS): - for letter in range(0, NUM_LETTERS): - params["TASTT_TRANSITION_U2"] = params["TASTT_TRANSITION_ROW%02d_COL%02d_LETTER%02d_U2" % (row, col, letter)] - params["TRANSITION_THRESHOLD"] = str(letter) - params["TASTT_ROW%02d_COL%02d_LETTER%02d_STATE_U2" % (row, col, letter)] = get_u2("1102", state) - params["DST_STATE_U2"] = params["TASTT_ROW%02d_COL%02d_LETTER%02d_STATE_U2" % (row, col, letter)] - print(replaceMacros(TASTT_LETTER_STATE_TRANSITION, params)) - - # Letter states (one per row * column * letter). - for row in range(0, NUM_ROWS): - for col in range(0, NUM_COLS): - for letter in range(0, NUM_LETTERS): - params["TASTT_STATE_U2"] = params["TASTT_ROW%02d_COL%02d_LETTER%02d_STATE_U2" % (row, col, letter)] - params["TASTT_STATE_NAME"] = "TaSTT_Row%02d_Col%02d_Letter%02d" % (row, col, letter) - # Get the GUID of the animation we will play here. - anim_meta_filename = "generated/animations/_Letter_Row%02d_Col%02d_Letter%02d.anim.meta" % (row, col, letter) - params["TASTT_ANIM_GUID"] = getAnimationGuid(anim_meta_filename) - print(replaceMacros(TASTT_LETTER_STATE, params)) + params["TASTT_STATE_U2"] = params["ACTIVE_STATE_U2"] + params["TASTT_STATE_NAME"] = getActiveStateName(which_layer) + params[getS0StateName(which_layer, 0) + "_TRANSITION_U2"] = get_u2("1101", state) + params["TASTT_STATE_TRANSITION_0_U2"] = params[getS0StateName(which_layer, 0) + "_TRANSITION_U2"] + params[getS0StateName(which_layer, 1) + "_TRANSITION_U2"] = get_u2("1101", state) + params["TASTT_STATE_TRANSITION_1_U2"] = params[getS0StateName(which_layer, 1) + "_TRANSITION_U2"] + print(replaceMacros(TASTT_BINARY_STATE, params)) + + # S0 state transition. + for s0 in range(0,2): + params["TASTT_STATE_TRANSITION_U2"] = params[getS0StateName(which_layer, s0) + "_TRANSITION_U2"] + params["BOOL_PARAM"] = getSelectParam(which_layer, 0) + params["THRESHOLD"] = str(s0) + params["MODE"] = str(2 - s0) # See comment above TASTT_BOOL_STATE_TRANSITION. + params[getS0StateName(which_layer, s0) + "_U2"] = get_u2("1102", state) + params["DST_STATE_U2"] = params[getS0StateName(which_layer, s0) + "_U2"] + print(replaceMacros(TASTT_BOOL_STATE_TRANSITION, params)) + + # S0 state. + for s0 in range(0,2): + params["TASTT_STATE_U2"] = params[getS0StateName(which_layer, s0) + "_U2"] + params["TASTT_STATE_NAME"] = getS0StateName(which_layer, s0) + params[getS1StateName(which_layer, s0, 0) + "_TRANSITION_U2"] = get_u2("1101", state) + params["TASTT_STATE_TRANSITION_0_U2"] = params[getS1StateName(which_layer, s0, 0) + "_TRANSITION_U2"] + params[getS1StateName(which_layer, s0, 1) + "_TRANSITION_U2"] = get_u2("1101", state) + params["TASTT_STATE_TRANSITION_1_U2"] = params[getS1StateName(which_layer, s0, 1) + "_TRANSITION_U2"] + print(replaceMacros(TASTT_BINARY_STATE, params)) + + # S1 state transition. + for s0 in range(0,2): + for s1 in range(0,2): + params["TASTT_STATE_TRANSITION_U2"] = params[getS1StateName(which_layer, s0, s1) + "_TRANSITION_U2"] + params["BOOL_PARAM"] = getSelectParam(which_layer, 1) + params["THRESHOLD"] = str(s1) + params["MODE"] = str(2 - s1) # See comment above TASTT_BOOL_STATE_TRANSITION. + params[getS1StateName(which_layer, s0, s1) + "_U2"] = get_u2("1102", state) + params["DST_STATE_U2"] = params[getS1StateName(which_layer, s0, s1) + "_U2"] + print(replaceMacros(TASTT_BOOL_STATE_TRANSITION, params)) + + # S1 state. + for s0 in range(0,2): + for s1 in range(0,2): + params["TASTT_STATE_U2"] = params[getS1StateName(which_layer, s0, s1) + "_U2"] + params["TASTT_STATE_NAME"] = getS1StateName(which_layer, s0, s1) + params[getS2StateName(which_layer, s0, s1, 0) + "_TRANSITION_U2"] = get_u2("1101", state) + params["TASTT_STATE_TRANSITION_0_U2"] = params[getS2StateName(which_layer, s0, s1, 0) + "_TRANSITION_U2"] + params[getS2StateName(which_layer, s0, s1, 1) + "_TRANSITION_U2"] = get_u2("1101", state) + params["TASTT_STATE_TRANSITION_1_U2"] = params[getS2StateName(which_layer, s0, s1, 1) + "_TRANSITION_U2"] + print(replaceMacros(TASTT_BINARY_STATE, params)) + + # S2 state transition. + for s0 in range(0,2): + for s1 in range(0,2): + for s2 in range(0,2): + params["TASTT_STATE_TRANSITION_U2"] = params[getS2StateName(which_layer, s0, s1, s2) + "_TRANSITION_U2"] + params["BOOL_PARAM"] = getSelectParam(which_layer, 2) + params["THRESHOLD"] = str(s2) + params["MODE"] = str(2 - s2) # See comment above TASTT_BOOL_STATE_TRANSITION. + params[getS2StateName(which_layer, s0, s1, s2) + "_U2"] = get_u2("1102", state) + params["DST_STATE_U2"] = params[getS2StateName(which_layer, s0, s1, s2) + "_U2"] + print(replaceMacros(TASTT_BOOL_STATE_TRANSITION, params)) + + # S2 state. + for s0 in range(0,2): + for s1 in range(0,2): + for s2 in range(0,2): + params["TASTT_STATE_U2"] = params[getS2StateName(which_layer, s0, s1, s2) + "_U2"] + params["TASTT_STATE_NAME"] = getS2StateName(which_layer, s0, s1, s2) + print(replaceMacros(TASTT_NARY_STATE_HEADER, params)) + for letter in range(0, CHARS_PER_CELL): + params[getLetterStateName(which_layer, s0, s1, s2, letter) + "_TRANSITION_U2"] = get_u2("1101", state) + params["TASTT_STATE_TRANSITION_U2"] = params[getLetterStateName(which_layer, s0, s1, s2, letter) + "_TRANSITION_U2"] + print(replaceMacros(TASTT_NARY_STATE_HEADER_TRANSITION, params)) + print(replaceMacros(TASTT_NARY_STATE_FOOTER, params)) + + # Letter state transition. + for s0 in range(0,2): + for s1 in range(0,2): + for s2 in range(0,2): + for letter in range(0, CHARS_PER_CELL): + params["TASTT_STATE_TRANSITION_U2"] = params[getLetterStateName(which_layer, s0, s1, s2, letter) + "_TRANSITION_U2"] + params["INT_PARAM"] = getLayerParam(which_layer) + params["TRANSITION_THRESHOLD"] = str(letter) + params[getLetterStateName(which_layer, s0, s1, s2, letter) + "_U2"] = get_u2("1102", state) + params["DST_STATE_U2"] = params[getLetterStateName(which_layer, s0, s1, s2, letter) + "_U2"] + print(replaceMacros(TASTT_INT_STATE_TRANSITION, params)) + + # Letter state. + for s0 in range(0,2): + for s1 in range(0,2): + for s2 in range(0,2): + for letter in range(0, CHARS_PER_CELL): + params["TASTT_STATE_U2"] = params[getLetterStateName(which_layer, s0, s1, s2, letter) + "_U2"] + params["TASTT_STATE_NAME"] = getLetterStateName(which_layer, s0, s1, s2, letter) + params["TASTT_STATE_TRANSITION_U2"] = params["TASTT_RETURN_HOME_TRANSITION_%02d_U2" % which_layer] + anim_meta_filename = getAnimationPath(getShaderParam(which_layer, s0, s1, s2), letter) + ".meta" + params["TASTT_ANIM_GUID"] = getAnimationGuid(anim_meta_filename) + print(replaceMacros(TASTT_LETTER_STATE, params)) # TaSTT layer. + params["TASTT_LAYER_U2"] = params[getLayerParam(which_layer) + "_LAYER_U2"] + + params["TASTT_LAYER_NAME"] = getLayerParam(which_layer) print(replaceMacros(TASTT_LAYER_HEADER, params)) - params["TASTT_STATE_U2"] = params["TASTT_DEFAULT_STATE_U2"] + params["TASTT_STATE_U2"] = params["DEFAULT_STATE_U2"] print(replaceMacros(TASTT_LAYER_HEADER_CHILD_STATE, params)) - params["TASTT_STATE_U2"] = params["TASTT_ACTIVE_STATE_U2"] + params["TASTT_STATE_U2"] = params["ACTIVE_STATE_U2"] print(replaceMacros(TASTT_LAYER_HEADER_CHILD_STATE, params)) - for row in range(0, NUM_ROWS): - params["TASTT_STATE_U2"] = params["TASTT_ROW%02d_STATE_U2" % row] + for s0 in range(0,2): + params["TASTT_STATE_U2"] = params[getS0StateName(which_layer, s0) + "_U2"] print(replaceMacros(TASTT_LAYER_HEADER_CHILD_STATE, params)) - for row in range(0, NUM_ROWS): - for col in range(0, NUM_COLS): - params["TASTT_STATE_U2"] = params["TASTT_ROW%02d_COL%02d_STATE_U2" % (row, col)] + for s0 in range(0,2): + for s1 in range(0,2): + params["TASTT_STATE_U2"] = params[getS1StateName(which_layer, s0, s1) + "_U2"] print(replaceMacros(TASTT_LAYER_HEADER_CHILD_STATE, params)) - for row in range(0, NUM_ROWS): - for col in range(0, NUM_COLS): - for letter in range(0, NUM_LETTERS): - params["TASTT_STATE_U2"] = params["TASTT_ROW%02d_COL%02d_LETTER%02d_STATE_U2" % (row, col, letter)] + for s0 in range(0,2): + for s1 in range(0,2): + for s2 in range(0,2): + params["TASTT_STATE_U2"] = params[getS2StateName(which_layer, s0, s1, s2) + "_U2"] print(replaceMacros(TASTT_LAYER_HEADER_CHILD_STATE, params)) -genTasttLayer(state) + for s0 in range(0,2): + for s1 in range(0,2): + for s2 in range(0,2): + for letter in range(0, CHARS_PER_CELL): + params["TASTT_STATE_U2"] = params[getLetterStateName(which_layer, s0, s1, s2, letter) + "_U2"] + print(replaceMacros(TASTT_LAYER_HEADER_CHILD_STATE, params)) + + params["TASTT_DEFAULT_STATE_U2"] = params["DEFAULT_STATE_U2"] + print(replaceMacros(TASTT_LAYER_FOOTER, params)) + +for i in range(0, NUM_LAYERS): + genTasttLayer(state, i) |
