summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Animations/TaSTT_Backplate_Resize_00_to_50.anim179
-rw-r--r--Animations/TaSTT_Backplate_Resize_100_to_50.anim215
-rw-r--r--Animations/TaSTT_Backplate_Resize_50_to_00.anim233
-rw-r--r--Animations/TaSTT_Backplate_Resize_50_to_100.anim215
-rw-r--r--Animations/TaSTT_Do_Nothing.anim116
-rw-r--r--Animations/TaSTT_Ellipsis_Off.anim98
-rw-r--r--Animations/TaSTT_Ellipsis_On.anim98
-rw-r--r--Animations/TaSTT_Emerge_000.anim136
-rw-r--r--Animations/TaSTT_Emerge_100.anim143
-rw-r--r--Animations/TaSTT_Lock_Hand_Disable.anim98
-rw-r--r--Animations/TaSTT_Lock_Hand_Enable.anim98
-rw-r--r--Animations/TaSTT_Lock_World_Disable.anim98
-rw-r--r--Animations/TaSTT_Lock_World_Enable.anim98
-rw-r--r--Animations/TaSTT_Speech_Noise_Off.anim98
-rw-r--r--Animations/TaSTT_Speech_Noise_On.anim98
-rw-r--r--Animations/TaSTT_Toggle_Off.anim116
-rw-r--r--Animations/TaSTT_Toggle_On.anim116
-rw-r--r--BrowserSource/index.html114
-rw-r--r--Examples/FX_no_write_defaults.controller15927
-rw-r--r--Fonts/Bitmaps/font-0.pngbin94059 -> 0 bytes
-rw-r--r--Fonts/Bitmaps/font-0.png.meta116
-rw-r--r--Fonts/Bitmaps/font-1.pngbin616594 -> 0 bytes
-rw-r--r--Fonts/Bitmaps/font-1.png.meta116
-rw-r--r--Fonts/Bitmaps/font-2.pngbin1188527 -> 0 bytes
-rw-r--r--Fonts/Bitmaps/font-2.png.meta116
-rw-r--r--Fonts/Bitmaps/font-3.pngbin1293564 -> 0 bytes
-rw-r--r--Fonts/Bitmaps/font-3.png.meta116
-rw-r--r--Fonts/Bitmaps/font-4.pngbin1239816 -> 0 bytes
-rw-r--r--Fonts/Bitmaps/font-4.png.meta116
-rw-r--r--Fonts/Bitmaps/font-5.pngbin303341 -> 0 bytes
-rw-r--r--Fonts/Bitmaps/font-5.png.meta116
-rw-r--r--Fonts/Bitmaps/font-6.pngbin442753 -> 0 bytes
-rw-r--r--Fonts/Bitmaps/font-6.png.meta116
-rw-r--r--Fonts/Bitmaps/font-ascii.pngbin962256 -> 0 bytes
-rw-r--r--Fonts/Bitmaps/font-ascii.png.meta116
-rw-r--r--Fonts/Emotes/.gitignore2
-rw-r--r--Fonts/Emotes/README.md11
-rw-r--r--Fonts/Noto_Sans_Korean/NotoSansKR-Black.otfbin5068164 -> 0 bytes
-rw-r--r--Fonts/Noto_Sans_Korean/NotoSansKR-Bold.otfbin4909668 -> 0 bytes
-rw-r--r--Fonts/Noto_Sans_Korean/NotoSansKR-Light.otfbin4713928 -> 0 bytes
-rw-r--r--Fonts/Noto_Sans_Korean/NotoSansKR-Medium.otfbin4768768 -> 0 bytes
-rw-r--r--Fonts/Noto_Sans_Korean/NotoSansKR-Regular.otfbin4744692 -> 0 bytes
-rw-r--r--Fonts/Noto_Sans_Korean/NotoSansKR-Thin.otfbin4383676 -> 0 bytes
-rw-r--r--Fonts/Noto_Sans_Korean/OFL.txt93
-rw-r--r--Fonts/Noto_Sans_Mono/NotoSansMono-VariableFont_wdth,wght.ttfbin1396280 -> 0 bytes
-rw-r--r--Fonts/Noto_Sans_Mono/OFL.txt93
-rw-r--r--Fonts/Noto_Sans_Mono/README.txt99
-rw-r--r--Fonts/Noto_Sans_Mono/static/NotoSansMono/NotoSansMono-Black.ttfbin352588 -> 0 bytes
-rw-r--r--Fonts/Noto_Sans_Mono/static/NotoSansMono/NotoSansMono-Bold.ttfbin352724 -> 0 bytes
-rw-r--r--Fonts/Noto_Sans_Mono/static/NotoSansMono/NotoSansMono-ExtraBold.ttfbin352976 -> 0 bytes
-rw-r--r--Fonts/Noto_Sans_Mono/static/NotoSansMono/NotoSansMono-ExtraLight.ttfbin353844 -> 0 bytes
-rw-r--r--Fonts/Noto_Sans_Mono/static/NotoSansMono/NotoSansMono-Light.ttfbin353772 -> 0 bytes
-rw-r--r--Fonts/Noto_Sans_Mono/static/NotoSansMono/NotoSansMono-Medium.ttfbin353368 -> 0 bytes
-rw-r--r--Fonts/Noto_Sans_Mono/static/NotoSansMono/NotoSansMono-Regular.ttfbin353000 -> 0 bytes
-rw-r--r--Fonts/Noto_Sans_Mono/static/NotoSansMono/NotoSansMono-SemiBold.ttfbin353228 -> 0 bytes
-rw-r--r--Fonts/Noto_Sans_Mono/static/NotoSansMono/NotoSansMono-Thin.ttfbin353352 -> 0 bytes
-rw-r--r--Fonts/Noto_Sans_Mono/static/NotoSansMono_Condensed/NotoSansMono_Condensed-Black.ttfbin352460 -> 0 bytes
-rw-r--r--Fonts/Noto_Sans_Mono/static/NotoSansMono_Condensed/NotoSansMono_Condensed-Bold.ttfbin352580 -> 0 bytes
-rw-r--r--Fonts/Noto_Sans_Mono/static/NotoSansMono_Condensed/NotoSansMono_Condensed-ExtraBold.ttfbin352812 -> 0 bytes
-rw-r--r--Fonts/Noto_Sans_Mono/static/NotoSansMono_Condensed/NotoSansMono_Condensed-ExtraLight.ttfbin353508 -> 0 bytes
-rw-r--r--Fonts/Noto_Sans_Mono/static/NotoSansMono_Condensed/NotoSansMono_Condensed-Light.ttfbin353384 -> 0 bytes
-rw-r--r--Fonts/Noto_Sans_Mono/static/NotoSansMono_Condensed/NotoSansMono_Condensed-Medium.ttfbin352860 -> 0 bytes
-rw-r--r--Fonts/Noto_Sans_Mono/static/NotoSansMono_Condensed/NotoSansMono_Condensed-Regular.ttfbin352828 -> 0 bytes
-rw-r--r--Fonts/Noto_Sans_Mono/static/NotoSansMono_Condensed/NotoSansMono_Condensed-SemiBold.ttfbin352836 -> 0 bytes
-rw-r--r--Fonts/Noto_Sans_Mono/static/NotoSansMono_Condensed/NotoSansMono_Condensed-Thin.ttfbin353264 -> 0 bytes
-rw-r--r--Fonts/Noto_Sans_Mono/static/NotoSansMono_ExtraCondensed/NotoSansMono_ExtraCondensed-Black.ttfbin351548 -> 0 bytes
-rw-r--r--Fonts/Noto_Sans_Mono/static/NotoSansMono_ExtraCondensed/NotoSansMono_ExtraCondensed-Bold.ttfbin351712 -> 0 bytes
-rw-r--r--Fonts/Noto_Sans_Mono/static/NotoSansMono_ExtraCondensed/NotoSansMono_ExtraCondensed-ExtraBold.ttfbin352024 -> 0 bytes
-rw-r--r--Fonts/Noto_Sans_Mono/static/NotoSansMono_ExtraCondensed/NotoSansMono_ExtraCondensed-ExtraLight.ttfbin352916 -> 0 bytes
-rw-r--r--Fonts/Noto_Sans_Mono/static/NotoSansMono_ExtraCondensed/NotoSansMono_ExtraCondensed-Light.ttfbin352748 -> 0 bytes
-rw-r--r--Fonts/Noto_Sans_Mono/static/NotoSansMono_ExtraCondensed/NotoSansMono_ExtraCondensed-Medium.ttfbin352152 -> 0 bytes
-rw-r--r--Fonts/Noto_Sans_Mono/static/NotoSansMono_ExtraCondensed/NotoSansMono_ExtraCondensed-Regular.ttfbin351800 -> 0 bytes
-rw-r--r--Fonts/Noto_Sans_Mono/static/NotoSansMono_ExtraCondensed/NotoSansMono_ExtraCondensed-SemiBold.ttfbin352124 -> 0 bytes
-rw-r--r--Fonts/Noto_Sans_Mono/static/NotoSansMono_ExtraCondensed/NotoSansMono_ExtraCondensed-Thin.ttfbin352532 -> 0 bytes
-rw-r--r--Fonts/Noto_Sans_Mono/static/NotoSansMono_SemiCondensed/NotoSansMono_SemiCondensed-Black.ttfbin352708 -> 0 bytes
-rw-r--r--Fonts/Noto_Sans_Mono/static/NotoSansMono_SemiCondensed/NotoSansMono_SemiCondensed-Bold.ttfbin352704 -> 0 bytes
-rw-r--r--Fonts/Noto_Sans_Mono/static/NotoSansMono_SemiCondensed/NotoSansMono_SemiCondensed-ExtraBold.ttfbin353176 -> 0 bytes
-rw-r--r--Fonts/Noto_Sans_Mono/static/NotoSansMono_SemiCondensed/NotoSansMono_SemiCondensed-ExtraLight.ttfbin353892 -> 0 bytes
-rw-r--r--Fonts/Noto_Sans_Mono/static/NotoSansMono_SemiCondensed/NotoSansMono_SemiCondensed-Light.ttfbin353696 -> 0 bytes
-rw-r--r--Fonts/Noto_Sans_Mono/static/NotoSansMono_SemiCondensed/NotoSansMono_SemiCondensed-Medium.ttfbin353100 -> 0 bytes
-rw-r--r--Fonts/Noto_Sans_Mono/static/NotoSansMono_SemiCondensed/NotoSansMono_SemiCondensed-Regular.ttfbin353180 -> 0 bytes
-rw-r--r--Fonts/Noto_Sans_Mono/static/NotoSansMono_SemiCondensed/NotoSansMono_SemiCondensed-SemiBold.ttfbin353112 -> 0 bytes
-rw-r--r--Fonts/Noto_Sans_Mono/static/NotoSansMono_SemiCondensed/NotoSansMono_SemiCondensed-Thin.ttfbin353492 -> 0 bytes
-rw-r--r--Fonts/Noto_Sans_Simplified_Chinese/NotoSansSC-Black.otfbin8950680 -> 0 bytes
-rw-r--r--Fonts/Noto_Sans_Simplified_Chinese/NotoSansSC-Bold.otfbin8716392 -> 0 bytes
-rw-r--r--Fonts/Noto_Sans_Simplified_Chinese/NotoSansSC-Light.otfbin8434216 -> 0 bytes
-rw-r--r--Fonts/Noto_Sans_Simplified_Chinese/NotoSansSC-Medium.otfbin8508580 -> 0 bytes
-rw-r--r--Fonts/Noto_Sans_Simplified_Chinese/NotoSansSC-Regular.otfbin8482020 -> 0 bytes
-rw-r--r--Fonts/Noto_Sans_Simplified_Chinese/NotoSansSC-Thin.otfbin7815988 -> 0 bytes
-rw-r--r--Fonts/Noto_Sans_Simplified_Chinese/OFL.txt93
-rw-r--r--Fonts/unifont-15.0.01.ttfbin12273948 -> 0 bytes
-rw-r--r--Fonts/unifont-15.0.01.ttf.LICENSE90
-rw-r--r--GUI/.gitignore14
-rw-r--r--GUI/GUI/.gitignore5
-rw-r--r--GUI/GUI/GUI.sln31
-rw-r--r--GUI/GUI/GUI/.gitignore9
-rw-r--r--GUI/GUI/GUI/App.cpp11
-rw-r--r--GUI/GUI/GUI/App.h13
-rw-r--r--GUI/GUI/GUI/BrowserSource.cpp87
-rw-r--r--GUI/GUI/GUI/BrowserSource.h28
-rw-r--r--GUI/GUI/GUI/Config.cpp230
-rw-r--r--GUI/GUI/GUI/Config.h100
-rw-r--r--GUI/GUI/GUI/ConfigMarshal.h161
-rw-r--r--GUI/GUI/GUI/Frame.cpp2757
-rw-r--r--GUI/GUI/GUI/Frame.h134
-rw-r--r--GUI/GUI/GUI/GUI.rcbin2798 -> 0 bytes
-rw-r--r--GUI/GUI/GUI/GUI.vcxproj196
-rw-r--r--GUI/GUI/GUI/GUI.vcxproj.filters124
-rw-r--r--GUI/GUI/GUI/GUI.vcxproj.user13
-rw-r--r--GUI/GUI/GUI/HTTPMapper.cpp69
-rw-r--r--GUI/GUI/GUI/HTTPMapper.h35
-rw-r--r--GUI/GUI/GUI/HTTPParser.cpp217
-rw-r--r--GUI/GUI/GUI/HTTPParser.h51
-rw-r--r--GUI/GUI/GUI/Logging.cpp121
-rw-r--r--GUI/GUI/GUI/Logging.h50
-rw-r--r--GUI/GUI/GUI/PythonWrapper.cpp894
-rw-r--r--GUI/GUI/GUI/PythonWrapper.h98
-rw-r--r--GUI/GUI/GUI/Resources/logo.icobin4314 -> 0 bytes
-rw-r--r--GUI/GUI/GUI/ScopeGuard.h32
-rw-r--r--GUI/GUI/GUI/Transcript.cpp44
-rw-r--r--GUI/GUI/GUI/Transcript.h31
-rw-r--r--GUI/GUI/GUI/Util.h20
-rw-r--r--GUI/GUI/GUI/WebCommon.h8
-rw-r--r--GUI/GUI/GUI/WebServer.cpp217
-rw-r--r--GUI/GUI/GUI/WebServer.h56
-rw-r--r--GUI/GUI/GUI/main.cpp10
-rw-r--r--GUI/GUI/GUI/resource.h15
-rw-r--r--GUI/Libraries/.gitignore5
-rw-r--r--GUI/Libraries/fetch.ps131
-rw-r--r--GUI/README.md93
-rw-r--r--GUI/package.ps1150
-rw-r--r--Images/four_bit_indexing.pngbin114753 -> 0 bytes
-rw-r--r--Images/logo.pngbin194967 -> 0 bytes
-rw-r--r--Images/logo_16x16.pngbin1135 -> 0 bytes
-rw-r--r--Images/logo_32x32.pngbin2245 -> 0 bytes
-rw-r--r--Images/speech_to_text_demo.gifbin5410888 -> 0 bytes
-rw-r--r--Images/tastt_anim.pngbin42579 -> 0 bytes
-rw-r--r--Images/tastt_blend.pngbin14070 -> 0 bytes
-rw-r--r--Scripts/.gitignore2
-rw-r--r--Scripts/app_config.py39
-rw-r--r--Scripts/browser_src.py138
-rw-r--r--Scripts/cpp_transcribe.py197
-rw-r--r--Scripts/dump_mic_devices.py8
-rw-r--r--Scripts/emotes.py143
-rw-r--r--Scripts/emotes_v2.py149
-rw-r--r--Scripts/generate_fonts.py184
-rw-r--r--Scripts/generate_menu.py41
-rw-r--r--Scripts/generate_params.py131
-rw-r--r--Scripts/generate_shader.py161
-rw-r--r--Scripts/generate_utils.py134
-rw-r--r--Scripts/keybind_event_machine.py21
-rw-r--r--Scripts/lang_compat.py58
-rw-r--r--Scripts/libtastt.py1085
-rw-r--r--Scripts/libunity.py1432
-rw-r--r--Scripts/obfuscate.py92
-rw-r--r--Scripts/osc_ctrl.py185
-rw-r--r--Scripts/paging.py128
-rw-r--r--Scripts/profanity_filter.py43
-rw-r--r--Scripts/remove_audio_sources.py25
-rw-r--r--Scripts/requirements.txt18
-rw-r--r--Scripts/requirements_frozen.txt42
-rw-r--r--Scripts/set_texture_sz.py24
-rw-r--r--Scripts/steamvr.py89
-rw-r--r--Scripts/text_to_text_demo.py96
-rw-r--r--Scripts/text_wrapping.py55
-rw-r--r--Scripts/transcribe_pipeline.py35
-rw-r--r--Scripts/transcribe_v2.py1172
-rw-r--r--Scripts/vad.py315
-rw-r--r--Shaders/.gitignore4
-rw-r--r--Shaders/Motion.cginc90
-rw-r--r--Shaders/PBS.shader65
-rw-r--r--Shaders/PBS_lighting.cginc322
-rw-r--r--Shaders/STT_generated_template.cginc19
-rw-r--r--Shaders/STT_text.cginc165
-rw-r--r--Shaders/TaSTT.shader.meta9
-rw-r--r--Shaders/TaSTT_lighting.cginc57
-rw-r--r--Shaders/TaSTT_template.shader85
-rw-r--r--Shaders/aa_sample_algorithm.py43
-rw-r--r--Shaders/eyes_data.cginc24
-rw-r--r--Shaders/hg_sdf.cginc187
-rw-r--r--Shaders/iq_sdf.cginc143
-rw-r--r--Shaders/math.cginc88
-rw-r--r--Shaders/pbr.cginc91
-rw-r--r--Shaders/pema99.cginc31
-rw-r--r--Shaders/poi.cginc60
-rw-r--r--Shaders/ray_march.cginc361
-rw-r--r--Sounds/aiueo/a.wavbin38654 -> 0 bytes
-rw-r--r--Sounds/aiueo/a.wav.meta22
-rw-r--r--Sounds/aiueo/e.wavbin38654 -> 0 bytes
-rw-r--r--Sounds/aiueo/e.wav.meta22
-rw-r--r--Sounds/aiueo/i.wavbin38654 -> 0 bytes
-rw-r--r--Sounds/aiueo/i.wav.meta22
-rw-r--r--Sounds/aiueo/o.wavbin38654 -> 0 bytes
-rw-r--r--Sounds/aiueo/o.wav.meta22
-rw-r--r--Sounds/aiueo/u.wavbin38654 -> 0 bytes
-rw-r--r--Sounds/aiueo/u.wav.meta22
-rw-r--r--Sounds/speech_noise.vcvbin4651 -> 0 bytes
-rw-r--r--UnityAssets/Materials.meta8
-rw-r--r--UnityAssets/Materials/TaSTT_Text.mat52
-rw-r--r--UnityAssets/Materials/TaSTT_Text.mat.meta8
-rw-r--r--UnityAssets/TaSTT.fbxbin14924 -> 0 bytes
-rw-r--r--UnityAssets/TaSTT.fbx.meta107
-rw-r--r--UnityAssets/TaSTT_Menu.asset56
-rw-r--r--UnityAssets/TaSTT_Menu.asset.meta8
-rw-r--r--UnityAssets/World Constraint.prefab869
-rw-r--r--UnityAssets/World Constraint.prefab.meta7
m---------UnityAssets/World-Constraint0
-rw-r--r--UnityAssets/World-Constraint.meta8
-rw-r--r--UnityAssets/black.pngbin789 -> 0 bytes
-rw-r--r--UnityAssets/black.png.meta92
210 files changed, 0 insertions, 35274 deletions
diff --git a/Animations/TaSTT_Backplate_Resize_00_to_50.anim b/Animations/TaSTT_Backplate_Resize_00_to_50.anim
deleted file mode 100644
index 561c237..0000000
--- a/Animations/TaSTT_Backplate_Resize_00_to_50.anim
+++ /dev/null
@@ -1,179 +0,0 @@
-%YAML 1.1
-%TAG !u! tag:unity3d.com,2011:
---- !u!74 &7400000
-AnimationClip:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: TaSTT_Backplate_Resize_00_to_50
- serializedVersion: 6
- m_Legacy: 0
- m_Compressed: 0
- m_UseHighQualityCurve: 1
- m_RotationCurves: []
- m_CompressedRotationCurves: []
- m_EulerCurves: []
- m_PositionCurves: []
- m_ScaleCurves: []
- m_FloatCurves:
- - curve:
- serializedVersion: 2
- m_Curve:
- - serializedVersion: 3
- time: 0
- value: 1
- inSlope: Infinity
- outSlope: Infinity
- tangentMode: 103
- weightedMode: 0
- inWeight: 0
- outWeight: 0
- m_PreInfinity: 2
- m_PostInfinity: 2
- m_RotationOrder: 4
- attribute: m_IsActive
- path: TaSTT
- classID: 1
- script: {fileID: 0}
- - curve:
- serializedVersion: 2
- m_Curve:
- - serializedVersion: 3
- time: 0
- value: 100
- inSlope: 0
- outSlope: 0
- tangentMode: 136
- weightedMode: 0
- inWeight: 0.33333334
- outWeight: 0.33333334
- - serializedVersion: 3
- time: 0.5
- value: 50
- inSlope: 0
- outSlope: 0
- tangentMode: 136
- weightedMode: 0
- inWeight: 0.33333334
- outWeight: 0.33333334
- - serializedVersion: 3
- time: 1
- value: 50
- inSlope: 0
- outSlope: 0
- tangentMode: 136
- weightedMode: 0
- inWeight: 0.33333334
- outWeight: 0.33333334
- m_PreInfinity: 2
- m_PostInfinity: 2
- m_RotationOrder: 4
- attribute: blendShape.TaSTT_Hide_Backplate
- path: TaSTT
- classID: 137
- script: {fileID: 0}
- m_PPtrCurves: []
- m_SampleRate: 60
- m_WrapMode: 0
- m_Bounds:
- m_Center: {x: 0, y: 0, z: 0}
- m_Extent: {x: 0, y: 0, z: 0}
- m_ClipBindingConstant:
- genericBindings:
- - serializedVersion: 2
- path: 2794480623
- attribute: 2086281974
- script: {fileID: 0}
- typeID: 1
- customType: 0
- isPPtrCurve: 0
- - serializedVersion: 2
- path: 2794480623
- attribute: 2468111145
- script: {fileID: 0}
- typeID: 137
- customType: 20
- isPPtrCurve: 0
- pptrCurveMapping: []
- m_AnimationClipSettings:
- serializedVersion: 2
- m_AdditiveReferencePoseClip: {fileID: 0}
- m_AdditiveReferencePoseTime: 0
- m_StartTime: 0
- m_StopTime: 1
- m_OrientationOffsetY: 0
- m_Level: 0
- m_CycleOffset: 0
- m_HasAdditiveReferencePose: 0
- m_LoopTime: 0
- m_LoopBlend: 0
- m_LoopBlendOrientation: 0
- m_LoopBlendPositionY: 0
- m_LoopBlendPositionXZ: 0
- m_KeepOriginalOrientation: 0
- m_KeepOriginalPositionY: 1
- m_KeepOriginalPositionXZ: 0
- m_HeightFromFeet: 0
- m_Mirror: 0
- m_EditorCurves:
- - curve:
- serializedVersion: 2
- m_Curve:
- - serializedVersion: 3
- time: 0
- value: 1
- inSlope: Infinity
- outSlope: Infinity
- tangentMode: 103
- weightedMode: 0
- inWeight: 0
- outWeight: 0
- m_PreInfinity: 2
- m_PostInfinity: 2
- m_RotationOrder: 4
- attribute: m_IsActive
- path: TaSTT
- classID: 1
- script: {fileID: 0}
- - curve:
- serializedVersion: 2
- m_Curve:
- - serializedVersion: 3
- time: 0
- value: 100
- inSlope: 0
- outSlope: 0
- tangentMode: 136
- weightedMode: 0
- inWeight: 0.33333334
- outWeight: 0.33333334
- - serializedVersion: 3
- time: 0.5
- value: 50
- inSlope: 0
- outSlope: 0
- tangentMode: 136
- weightedMode: 0
- inWeight: 0.33333334
- outWeight: 0.33333334
- - serializedVersion: 3
- time: 1
- value: 50
- inSlope: 0
- outSlope: 0
- tangentMode: 136
- weightedMode: 0
- inWeight: 0.33333334
- outWeight: 0.33333334
- m_PreInfinity: 2
- m_PostInfinity: 2
- m_RotationOrder: 4
- attribute: blendShape.TaSTT_Hide_Backplate
- path: TaSTT
- classID: 137
- script: {fileID: 0}
- m_EulerEditorCurves: []
- m_HasGenericRootTransform: 0
- m_HasMotionFloatCurves: 0
- m_Events: []
diff --git a/Animations/TaSTT_Backplate_Resize_100_to_50.anim b/Animations/TaSTT_Backplate_Resize_100_to_50.anim
deleted file mode 100644
index b2bd44d..0000000
--- a/Animations/TaSTT_Backplate_Resize_100_to_50.anim
+++ /dev/null
@@ -1,215 +0,0 @@
-%YAML 1.1
-%TAG !u! tag:unity3d.com,2011:
---- !u!74 &7400000
-AnimationClip:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: TaSTT_Backplate_Resize_100_to_50
- serializedVersion: 6
- m_Legacy: 0
- m_Compressed: 0
- m_UseHighQualityCurve: 1
- m_RotationCurves: []
- m_CompressedRotationCurves: []
- m_EulerCurves: []
- m_PositionCurves: []
- m_ScaleCurves: []
- m_FloatCurves:
- - curve:
- serializedVersion: 2
- m_Curve:
- - serializedVersion: 3
- time: 0
- value: 1
- inSlope: Infinity
- outSlope: Infinity
- tangentMode: 103
- weightedMode: 0
- inWeight: 0
- outWeight: 0
- - serializedVersion: 3
- time: 0.5
- value: 1
- inSlope: Infinity
- outSlope: Infinity
- tangentMode: 103
- weightedMode: 0
- inWeight: 0
- outWeight: 0
- - serializedVersion: 3
- time: 1
- value: 1
- inSlope: Infinity
- outSlope: Infinity
- tangentMode: 103
- weightedMode: 0
- inWeight: 0
- outWeight: 0
- m_PreInfinity: 2
- m_PostInfinity: 2
- m_RotationOrder: 4
- attribute: m_IsActive
- path: TaSTT
- classID: 1
- script: {fileID: 0}
- - curve:
- serializedVersion: 2
- m_Curve:
- - serializedVersion: 3
- time: 0
- value: 0
- inSlope: 0
- outSlope: 0
- tangentMode: 136
- weightedMode: 0
- inWeight: 0.33333334
- outWeight: 0.33333334
- - serializedVersion: 3
- time: 0.5
- value: 50
- inSlope: 0
- outSlope: 0
- tangentMode: 136
- weightedMode: 0
- inWeight: 0.33333334
- outWeight: 0.33333334
- - serializedVersion: 3
- time: 1
- value: 50
- inSlope: 0
- outSlope: 0
- tangentMode: 136
- weightedMode: 0
- inWeight: 0.33333334
- outWeight: 0.33333334
- m_PreInfinity: 2
- m_PostInfinity: 2
- m_RotationOrder: 4
- attribute: blendShape.TaSTT_Hide_Backplate
- path: TaSTT
- classID: 137
- script: {fileID: 0}
- m_PPtrCurves: []
- m_SampleRate: 60
- m_WrapMode: 0
- m_Bounds:
- m_Center: {x: 0, y: 0, z: 0}
- m_Extent: {x: 0, y: 0, z: 0}
- m_ClipBindingConstant:
- genericBindings:
- - serializedVersion: 2
- path: 2794480623
- attribute: 2086281974
- script: {fileID: 0}
- typeID: 1
- customType: 0
- isPPtrCurve: 0
- - serializedVersion: 2
- path: 2794480623
- attribute: 2468111145
- script: {fileID: 0}
- typeID: 137
- customType: 20
- isPPtrCurve: 0
- pptrCurveMapping: []
- m_AnimationClipSettings:
- serializedVersion: 2
- m_AdditiveReferencePoseClip: {fileID: 0}
- m_AdditiveReferencePoseTime: 0
- m_StartTime: 0
- m_StopTime: 1
- m_OrientationOffsetY: 0
- m_Level: 0
- m_CycleOffset: 0
- m_HasAdditiveReferencePose: 0
- m_LoopTime: 0
- m_LoopBlend: 0
- m_LoopBlendOrientation: 0
- m_LoopBlendPositionY: 0
- m_LoopBlendPositionXZ: 0
- m_KeepOriginalOrientation: 0
- m_KeepOriginalPositionY: 1
- m_KeepOriginalPositionXZ: 0
- m_HeightFromFeet: 0
- m_Mirror: 0
- m_EditorCurves:
- - curve:
- serializedVersion: 2
- m_Curve:
- - serializedVersion: 3
- time: 0
- value: 1
- inSlope: Infinity
- outSlope: Infinity
- tangentMode: 103
- weightedMode: 0
- inWeight: 0
- outWeight: 0
- - serializedVersion: 3
- time: 0.5
- value: 1
- inSlope: Infinity
- outSlope: Infinity
- tangentMode: 103
- weightedMode: 0
- inWeight: 0
- outWeight: 0
- - serializedVersion: 3
- time: 1
- value: 1
- inSlope: Infinity
- outSlope: Infinity
- tangentMode: 103
- weightedMode: 0
- inWeight: 0
- outWeight: 0
- m_PreInfinity: 2
- m_PostInfinity: 2
- m_RotationOrder: 4
- attribute: m_IsActive
- path: TaSTT
- classID: 1
- script: {fileID: 0}
- - curve:
- serializedVersion: 2
- m_Curve:
- - serializedVersion: 3
- time: 0
- value: 0
- inSlope: 0
- outSlope: 0
- tangentMode: 136
- weightedMode: 0
- inWeight: 0.33333334
- outWeight: 0.33333334
- - serializedVersion: 3
- time: 0.5
- value: 50
- inSlope: 0
- outSlope: 0
- tangentMode: 136
- weightedMode: 0
- inWeight: 0.33333334
- outWeight: 0.33333334
- - serializedVersion: 3
- time: 1
- value: 50
- inSlope: 0
- outSlope: 0
- tangentMode: 136
- weightedMode: 0
- inWeight: 0.33333334
- outWeight: 0.33333334
- m_PreInfinity: 2
- m_PostInfinity: 2
- m_RotationOrder: 4
- attribute: blendShape.TaSTT_Hide_Backplate
- path: TaSTT
- classID: 137
- script: {fileID: 0}
- m_EulerEditorCurves: []
- m_HasGenericRootTransform: 0
- m_HasMotionFloatCurves: 0
- m_Events: []
diff --git a/Animations/TaSTT_Backplate_Resize_50_to_00.anim b/Animations/TaSTT_Backplate_Resize_50_to_00.anim
deleted file mode 100644
index a38a9bb..0000000
--- a/Animations/TaSTT_Backplate_Resize_50_to_00.anim
+++ /dev/null
@@ -1,233 +0,0 @@
-%YAML 1.1
-%TAG !u! tag:unity3d.com,2011:
---- !u!74 &7400000
-AnimationClip:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: TaSTT_Backplate_Resize_50_to_00
- serializedVersion: 6
- m_Legacy: 0
- m_Compressed: 0
- m_UseHighQualityCurve: 1
- m_RotationCurves: []
- m_CompressedRotationCurves: []
- m_EulerCurves: []
- m_PositionCurves: []
- m_ScaleCurves: []
- m_FloatCurves:
- - curve:
- serializedVersion: 2
- m_Curve:
- - serializedVersion: 3
- time: 0
- value: 50
- inSlope: 0
- outSlope: 0
- tangentMode: 136
- weightedMode: 0
- inWeight: 0.33333334
- outWeight: 0.33333334
- - serializedVersion: 3
- time: 0.5
- value: 100
- inSlope: 0
- outSlope: 0
- tangentMode: 136
- weightedMode: 0
- inWeight: 0.33333334
- outWeight: 0.33333334
- - serializedVersion: 3
- time: 1
- value: 100
- inSlope: 0
- outSlope: 0
- tangentMode: 136
- weightedMode: 0
- inWeight: 0.33333334
- outWeight: 0.33333334
- m_PreInfinity: 2
- m_PostInfinity: 2
- m_RotationOrder: 4
- attribute: blendShape.TaSTT_Hide_Backplate
- path: TaSTT
- classID: 137
- script: {fileID: 0}
- - curve:
- serializedVersion: 2
- m_Curve:
- - serializedVersion: 3
- time: 0
- value: 1
- inSlope: Infinity
- outSlope: Infinity
- tangentMode: 103
- weightedMode: 0
- inWeight: 0
- outWeight: 0
- - serializedVersion: 3
- time: 0.5
- value: 1
- inSlope: Infinity
- outSlope: Infinity
- tangentMode: 103
- weightedMode: 0
- inWeight: 0
- outWeight: 0
- - serializedVersion: 3
- time: 0.51666665
- value: 0
- inSlope: Infinity
- outSlope: Infinity
- tangentMode: 103
- weightedMode: 0
- inWeight: 0
- outWeight: 0
- - serializedVersion: 3
- time: 1
- value: 0
- inSlope: Infinity
- outSlope: Infinity
- tangentMode: 103
- weightedMode: 0
- inWeight: 0
- outWeight: 0
- m_PreInfinity: 2
- m_PostInfinity: 2
- m_RotationOrder: 4
- attribute: m_IsActive
- path: TaSTT
- classID: 1
- script: {fileID: 0}
- m_PPtrCurves: []
- m_SampleRate: 60
- m_WrapMode: 0
- m_Bounds:
- m_Center: {x: 0, y: 0, z: 0}
- m_Extent: {x: 0, y: 0, z: 0}
- m_ClipBindingConstant:
- genericBindings:
- - serializedVersion: 2
- path: 2794480623
- attribute: 2468111145
- script: {fileID: 0}
- typeID: 137
- customType: 20
- isPPtrCurve: 0
- - serializedVersion: 2
- path: 2794480623
- attribute: 2086281974
- script: {fileID: 0}
- typeID: 1
- customType: 0
- isPPtrCurve: 0
- pptrCurveMapping: []
- m_AnimationClipSettings:
- serializedVersion: 2
- m_AdditiveReferencePoseClip: {fileID: 0}
- m_AdditiveReferencePoseTime: 0
- m_StartTime: 0
- m_StopTime: 1
- m_OrientationOffsetY: 0
- m_Level: 0
- m_CycleOffset: 0
- m_HasAdditiveReferencePose: 0
- m_LoopTime: 0
- m_LoopBlend: 0
- m_LoopBlendOrientation: 0
- m_LoopBlendPositionY: 0
- m_LoopBlendPositionXZ: 0
- m_KeepOriginalOrientation: 0
- m_KeepOriginalPositionY: 1
- m_KeepOriginalPositionXZ: 0
- m_HeightFromFeet: 0
- m_Mirror: 0
- m_EditorCurves:
- - curve:
- serializedVersion: 2
- m_Curve:
- - serializedVersion: 3
- time: 0
- value: 50
- inSlope: 0
- outSlope: 0
- tangentMode: 136
- weightedMode: 0
- inWeight: 0.33333334
- outWeight: 0.33333334
- - serializedVersion: 3
- time: 0.5
- value: 100
- inSlope: 0
- outSlope: 0
- tangentMode: 136
- weightedMode: 0
- inWeight: 0.33333334
- outWeight: 0.33333334
- - serializedVersion: 3
- time: 1
- value: 100
- inSlope: 0
- outSlope: 0
- tangentMode: 136
- weightedMode: 0
- inWeight: 0.33333334
- outWeight: 0.33333334
- m_PreInfinity: 2
- m_PostInfinity: 2
- m_RotationOrder: 4
- attribute: blendShape.TaSTT_Hide_Backplate
- path: TaSTT
- classID: 137
- script: {fileID: 0}
- - curve:
- serializedVersion: 2
- m_Curve:
- - serializedVersion: 3
- time: 0
- value: 1
- inSlope: Infinity
- outSlope: Infinity
- tangentMode: 103
- weightedMode: 0
- inWeight: 0
- outWeight: 0
- - serializedVersion: 3
- time: 0.5
- value: 1
- inSlope: Infinity
- outSlope: Infinity
- tangentMode: 103
- weightedMode: 0
- inWeight: 0
- outWeight: 0
- - serializedVersion: 3
- time: 0.51666665
- value: 0
- inSlope: Infinity
- outSlope: Infinity
- tangentMode: 103
- weightedMode: 0
- inWeight: 0
- outWeight: 0
- - serializedVersion: 3
- time: 1
- value: 0
- inSlope: Infinity
- outSlope: Infinity
- tangentMode: 103
- weightedMode: 0
- inWeight: 0
- outWeight: 0
- m_PreInfinity: 2
- m_PostInfinity: 2
- m_RotationOrder: 4
- attribute: m_IsActive
- path: TaSTT
- classID: 1
- script: {fileID: 0}
- m_EulerEditorCurves: []
- m_HasGenericRootTransform: 0
- m_HasMotionFloatCurves: 0
- m_Events: []
diff --git a/Animations/TaSTT_Backplate_Resize_50_to_100.anim b/Animations/TaSTT_Backplate_Resize_50_to_100.anim
deleted file mode 100644
index 3406b7d..0000000
--- a/Animations/TaSTT_Backplate_Resize_50_to_100.anim
+++ /dev/null
@@ -1,215 +0,0 @@
-%YAML 1.1
-%TAG !u! tag:unity3d.com,2011:
---- !u!74 &7400000
-AnimationClip:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: TaSTT_Backplate_Resize_50_to_100
- serializedVersion: 6
- m_Legacy: 0
- m_Compressed: 0
- m_UseHighQualityCurve: 1
- m_RotationCurves: []
- m_CompressedRotationCurves: []
- m_EulerCurves: []
- m_PositionCurves: []
- m_ScaleCurves: []
- m_FloatCurves:
- - curve:
- serializedVersion: 2
- m_Curve:
- - serializedVersion: 3
- time: 0
- value: 50
- inSlope: 0
- outSlope: 0
- tangentMode: 136
- weightedMode: 0
- inWeight: 0.33333334
- outWeight: 0.33333334
- - serializedVersion: 3
- time: 0.5
- value: 0
- inSlope: 0
- outSlope: 0
- tangentMode: 136
- weightedMode: 0
- inWeight: 0.33333334
- outWeight: 0.33333334
- - serializedVersion: 3
- time: 1
- value: 0
- inSlope: 0
- outSlope: 0
- tangentMode: 136
- weightedMode: 0
- inWeight: 0.33333334
- outWeight: 0.33333334
- m_PreInfinity: 2
- m_PostInfinity: 2
- m_RotationOrder: 4
- attribute: blendShape.TaSTT_Hide_Backplate
- path: TaSTT
- classID: 137
- script: {fileID: 0}
- - curve:
- serializedVersion: 2
- m_Curve:
- - serializedVersion: 3
- time: 0
- value: 1
- inSlope: Infinity
- outSlope: Infinity
- tangentMode: 103
- weightedMode: 0
- inWeight: 0
- outWeight: 0
- - serializedVersion: 3
- time: 0.5
- value: 1
- inSlope: Infinity
- outSlope: Infinity
- tangentMode: 103
- weightedMode: 0
- inWeight: 0
- outWeight: 0
- - serializedVersion: 3
- time: 1
- value: 1
- inSlope: Infinity
- outSlope: Infinity
- tangentMode: 103
- weightedMode: 0
- inWeight: 0
- outWeight: 0
- m_PreInfinity: 2
- m_PostInfinity: 2
- m_RotationOrder: 4
- attribute: m_IsActive
- path: TaSTT
- classID: 1
- script: {fileID: 0}
- m_PPtrCurves: []
- m_SampleRate: 60
- m_WrapMode: 0
- m_Bounds:
- m_Center: {x: 0, y: 0, z: 0}
- m_Extent: {x: 0, y: 0, z: 0}
- m_ClipBindingConstant:
- genericBindings:
- - serializedVersion: 2
- path: 2794480623
- attribute: 2468111145
- script: {fileID: 0}
- typeID: 137
- customType: 20
- isPPtrCurve: 0
- - serializedVersion: 2
- path: 2794480623
- attribute: 2086281974
- script: {fileID: 0}
- typeID: 1
- customType: 0
- isPPtrCurve: 0
- pptrCurveMapping: []
- m_AnimationClipSettings:
- serializedVersion: 2
- m_AdditiveReferencePoseClip: {fileID: 0}
- m_AdditiveReferencePoseTime: 0
- m_StartTime: 0
- m_StopTime: 1
- m_OrientationOffsetY: 0
- m_Level: 0
- m_CycleOffset: 0
- m_HasAdditiveReferencePose: 0
- m_LoopTime: 0
- m_LoopBlend: 0
- m_LoopBlendOrientation: 0
- m_LoopBlendPositionY: 0
- m_LoopBlendPositionXZ: 0
- m_KeepOriginalOrientation: 0
- m_KeepOriginalPositionY: 1
- m_KeepOriginalPositionXZ: 0
- m_HeightFromFeet: 0
- m_Mirror: 0
- m_EditorCurves:
- - curve:
- serializedVersion: 2
- m_Curve:
- - serializedVersion: 3
- time: 0
- value: 50
- inSlope: 0
- outSlope: 0
- tangentMode: 136
- weightedMode: 0
- inWeight: 0.33333334
- outWeight: 0.33333334
- - serializedVersion: 3
- time: 0.5
- value: 0
- inSlope: 0
- outSlope: 0
- tangentMode: 136
- weightedMode: 0
- inWeight: 0.33333334
- outWeight: 0.33333334
- - serializedVersion: 3
- time: 1
- value: 0
- inSlope: 0
- outSlope: 0
- tangentMode: 136
- weightedMode: 0
- inWeight: 0.33333334
- outWeight: 0.33333334
- m_PreInfinity: 2
- m_PostInfinity: 2
- m_RotationOrder: 4
- attribute: blendShape.TaSTT_Hide_Backplate
- path: TaSTT
- classID: 137
- script: {fileID: 0}
- - curve:
- serializedVersion: 2
- m_Curve:
- - serializedVersion: 3
- time: 0
- value: 1
- inSlope: Infinity
- outSlope: Infinity
- tangentMode: 103
- weightedMode: 0
- inWeight: 0
- outWeight: 0
- - serializedVersion: 3
- time: 0.5
- value: 1
- inSlope: Infinity
- outSlope: Infinity
- tangentMode: 103
- weightedMode: 0
- inWeight: 0
- outWeight: 0
- - serializedVersion: 3
- time: 1
- value: 1
- inSlope: Infinity
- outSlope: Infinity
- tangentMode: 103
- weightedMode: 0
- inWeight: 0
- outWeight: 0
- m_PreInfinity: 2
- m_PostInfinity: 2
- m_RotationOrder: 4
- attribute: m_IsActive
- path: TaSTT
- classID: 1
- script: {fileID: 0}
- m_EulerEditorCurves: []
- m_HasGenericRootTransform: 0
- m_HasMotionFloatCurves: 0
- m_Events: []
diff --git a/Animations/TaSTT_Do_Nothing.anim b/Animations/TaSTT_Do_Nothing.anim
deleted file mode 100644
index dbe4aae..0000000
--- a/Animations/TaSTT_Do_Nothing.anim
+++ /dev/null
@@ -1,116 +0,0 @@
-%YAML 1.1
-%TAG !u! tag:unity3d.com,2011:
---- !u!74 &7400000
-AnimationClip:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: TaSTT_Do_Nothing
- serializedVersion: 6
- m_Legacy: 0
- m_Compressed: 0
- m_UseHighQualityCurve: 1
- m_RotationCurves: []
- m_CompressedRotationCurves: []
- m_EulerCurves: []
- m_PositionCurves: []
- m_ScaleCurves: []
- m_FloatCurves:
- - curve:
- serializedVersion: 2
- m_Curve:
- - serializedVersion: 3
- time: 0
- value: 1
- inSlope: Infinity
- outSlope: Infinity
- tangentMode: 103
- weightedMode: 0
- inWeight: 0
- outWeight: 0
- - serializedVersion: 3
- time: 0.016666668
- value: 1
- inSlope: Infinity
- outSlope: Infinity
- tangentMode: 103
- weightedMode: 0
- inWeight: 0
- outWeight: 0
- m_PreInfinity: 2
- m_PostInfinity: 2
- m_RotationOrder: 4
- attribute: m_IsActive
- path: Armature
- classID: 1
- script: {fileID: 0}
- m_PPtrCurves: []
- m_SampleRate: 60
- m_WrapMode: 0
- m_Bounds:
- m_Center: {x: 0, y: 0, z: 0}
- m_Extent: {x: 0, y: 0, z: 0}
- m_ClipBindingConstant:
- genericBindings:
- - serializedVersion: 2
- path: 2104266162
- attribute: 2086281974
- script: {fileID: 0}
- typeID: 1
- customType: 0
- isPPtrCurve: 0
- pptrCurveMapping: []
- m_AnimationClipSettings:
- serializedVersion: 2
- m_AdditiveReferencePoseClip: {fileID: 0}
- m_AdditiveReferencePoseTime: 0
- m_StartTime: 0
- m_StopTime: 0.016666668
- m_OrientationOffsetY: 0
- m_Level: 0
- m_CycleOffset: 0
- m_HasAdditiveReferencePose: 0
- m_LoopTime: 1
- m_LoopBlend: 0
- m_LoopBlendOrientation: 0
- m_LoopBlendPositionY: 0
- m_LoopBlendPositionXZ: 0
- m_KeepOriginalOrientation: 0
- m_KeepOriginalPositionY: 1
- m_KeepOriginalPositionXZ: 0
- m_HeightFromFeet: 0
- m_Mirror: 0
- m_EditorCurves:
- - curve:
- serializedVersion: 2
- m_Curve:
- - serializedVersion: 3
- time: 0
- value: 1
- inSlope: Infinity
- outSlope: Infinity
- tangentMode: 103
- weightedMode: 0
- inWeight: 0
- outWeight: 0
- - serializedVersion: 3
- time: 0.016666668
- value: 1
- inSlope: Infinity
- outSlope: Infinity
- tangentMode: 103
- weightedMode: 0
- inWeight: 0
- outWeight: 0
- m_PreInfinity: 2
- m_PostInfinity: 2
- m_RotationOrder: 4
- attribute: m_IsActive
- path: Armature
- classID: 1
- script: {fileID: 0}
- m_EulerEditorCurves: []
- m_HasGenericRootTransform: 0
- m_HasMotionFloatCurves: 0
- m_Events: []
diff --git a/Animations/TaSTT_Ellipsis_Off.anim b/Animations/TaSTT_Ellipsis_Off.anim
deleted file mode 100644
index 990afa8..0000000
--- a/Animations/TaSTT_Ellipsis_Off.anim
+++ /dev/null
@@ -1,98 +0,0 @@
-%YAML 1.1
-%TAG !u! tag:unity3d.com,2011:
---- !u!74 &7400000
-AnimationClip:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: TaSTT_Ellipsis_Off
- serializedVersion: 6
- m_Legacy: 0
- m_Compressed: 0
- m_UseHighQualityCurve: 1
- m_RotationCurves: []
- m_CompressedRotationCurves: []
- m_EulerCurves: []
- m_PositionCurves: []
- m_ScaleCurves: []
- m_FloatCurves:
- - curve:
- serializedVersion: 2
- m_Curve:
- - serializedVersion: 3
- time: 0
- value: 0
- inSlope: 0
- outSlope: 0
- tangentMode: 136
- weightedMode: 0
- inWeight: 0
- outWeight: 0
- m_PreInfinity: 2
- m_PostInfinity: 2
- m_RotationOrder: 4
- attribute: material._Ellipsis
- path: World Constraint/Container/TaSTT
- classID: 23
- script: {fileID: 0}
- m_PPtrCurves: []
- m_SampleRate: 60
- m_WrapMode: 0
- m_Bounds:
- m_Center: {x: 0, y: 0, z: 0}
- m_Extent: {x: 0, y: 0, z: 0}
- m_ClipBindingConstant:
- genericBindings:
- - serializedVersion: 2
- path: 1272388438
- attribute: 2368089329
- script: {fileID: 0}
- typeID: 23
- customType: 22
- isPPtrCurve: 0
- pptrCurveMapping: []
- m_AnimationClipSettings:
- serializedVersion: 2
- m_AdditiveReferencePoseClip: {fileID: 0}
- m_AdditiveReferencePoseTime: 0
- m_StartTime: 0
- m_StopTime: 0
- m_OrientationOffsetY: 0
- m_Level: 0
- m_CycleOffset: 0
- m_HasAdditiveReferencePose: 0
- m_LoopTime: 1
- m_LoopBlend: 0
- m_LoopBlendOrientation: 0
- m_LoopBlendPositionY: 0
- m_LoopBlendPositionXZ: 0
- m_KeepOriginalOrientation: 0
- m_KeepOriginalPositionY: 1
- m_KeepOriginalPositionXZ: 0
- m_HeightFromFeet: 0
- m_Mirror: 0
- m_EditorCurves:
- - curve:
- serializedVersion: 2
- m_Curve:
- - serializedVersion: 3
- time: 0
- value: 0
- inSlope: 0
- outSlope: 0
- tangentMode: 136
- weightedMode: 0
- inWeight: 0
- outWeight: 0
- m_PreInfinity: 2
- m_PostInfinity: 2
- m_RotationOrder: 4
- attribute: material._Ellipsis
- path: World Constraint/Container/TaSTT
- classID: 23
- script: {fileID: 0}
- m_EulerEditorCurves: []
- m_HasGenericRootTransform: 0
- m_HasMotionFloatCurves: 0
- m_Events: []
diff --git a/Animations/TaSTT_Ellipsis_On.anim b/Animations/TaSTT_Ellipsis_On.anim
deleted file mode 100644
index c6ad724..0000000
--- a/Animations/TaSTT_Ellipsis_On.anim
+++ /dev/null
@@ -1,98 +0,0 @@
-%YAML 1.1
-%TAG !u! tag:unity3d.com,2011:
---- !u!74 &7400000
-AnimationClip:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: TaSTT_Ellipsis_On
- serializedVersion: 6
- m_Legacy: 0
- m_Compressed: 0
- m_UseHighQualityCurve: 1
- m_RotationCurves: []
- m_CompressedRotationCurves: []
- m_EulerCurves: []
- m_PositionCurves: []
- m_ScaleCurves: []
- m_FloatCurves:
- - curve:
- serializedVersion: 2
- m_Curve:
- - serializedVersion: 3
- time: 0
- value: 1
- inSlope: 0
- outSlope: 0
- tangentMode: 136
- weightedMode: 0
- inWeight: 0
- outWeight: 0
- m_PreInfinity: 2
- m_PostInfinity: 2
- m_RotationOrder: 4
- attribute: material._Ellipsis
- path: World Constraint/Container/TaSTT
- classID: 23
- script: {fileID: 0}
- m_PPtrCurves: []
- m_SampleRate: 60
- m_WrapMode: 0
- m_Bounds:
- m_Center: {x: 0, y: 0, z: 0}
- m_Extent: {x: 0, y: 0, z: 0}
- m_ClipBindingConstant:
- genericBindings:
- - serializedVersion: 2
- path: 1272388438
- attribute: 2368089329
- script: {fileID: 0}
- typeID: 23
- customType: 22
- isPPtrCurve: 0
- pptrCurveMapping: []
- m_AnimationClipSettings:
- serializedVersion: 2
- m_AdditiveReferencePoseClip: {fileID: 0}
- m_AdditiveReferencePoseTime: 0
- m_StartTime: 0
- m_StopTime: 0
- m_OrientationOffsetY: 0
- m_Level: 0
- m_CycleOffset: 0
- m_HasAdditiveReferencePose: 0
- m_LoopTime: 1
- m_LoopBlend: 0
- m_LoopBlendOrientation: 0
- m_LoopBlendPositionY: 0
- m_LoopBlendPositionXZ: 0
- m_KeepOriginalOrientation: 0
- m_KeepOriginalPositionY: 1
- m_KeepOriginalPositionXZ: 0
- m_HeightFromFeet: 0
- m_Mirror: 0
- m_EditorCurves:
- - curve:
- serializedVersion: 2
- m_Curve:
- - serializedVersion: 3
- time: 0
- value: 1
- inSlope: 0
- outSlope: 0
- tangentMode: 136
- weightedMode: 0
- inWeight: 0
- outWeight: 0
- m_PreInfinity: 2
- m_PostInfinity: 2
- m_RotationOrder: 4
- attribute: material._Ellipsis
- path: World Constraint/Container/TaSTT
- classID: 23
- script: {fileID: 0}
- m_EulerEditorCurves: []
- m_HasGenericRootTransform: 0
- m_HasMotionFloatCurves: 0
- m_Events: []
diff --git a/Animations/TaSTT_Emerge_000.anim b/Animations/TaSTT_Emerge_000.anim
deleted file mode 100644
index b89d713..0000000
--- a/Animations/TaSTT_Emerge_000.anim
+++ /dev/null
@@ -1,136 +0,0 @@
-%YAML 1.1
-%TAG !u! tag:unity3d.com,2011:
---- !u!74 &7400000
-AnimationClip:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: TaSTT_Emerge_000
- serializedVersion: 6
- m_Legacy: 0
- m_Compressed: 0
- m_UseHighQualityCurve: 1
- m_RotationCurves: []
- m_CompressedRotationCurves: []
- m_EulerCurves: []
- m_PositionCurves: []
- m_ScaleCurves: []
- m_FloatCurves:
- - curve:
- serializedVersion: 2
- m_Curve:
- - serializedVersion: 3
- time: 0
- value: 0
- inSlope: 0
- outSlope: 0
- tangentMode: 136
- weightedMode: 0
- inWeight: 0
- outWeight: 0
- m_PreInfinity: 2
- m_PostInfinity: 2
- m_RotationOrder: 4
- attribute: material._Emerge
- path: World Constraint/Container/TaSTT
- classID: 23
- script: {fileID: 0}
- - curve:
- serializedVersion: 2
- m_Curve:
- - serializedVersion: 3
- time: 0
- value: 0
- inSlope: 0
- outSlope: 0
- tangentMode: 136
- weightedMode: 0
- inWeight: 0
- outWeight: 0
- m_PreInfinity: 2
- m_PostInfinity: 2
- m_RotationOrder: 4
- attribute: material._Ellipsis
- path: World Constraint/Container/TaSTT
- classID: 23
- script: {fileID: 0}
- m_PPtrCurves: []
- m_SampleRate: 60
- m_WrapMode: 0
- m_Bounds:
- m_Center: {x: 0, y: 0, z: 0}
- m_Extent: {x: 0, y: 0, z: 0}
- m_ClipBindingConstant:
- genericBindings:
- - serializedVersion: 2
- path: 1272388438
- attribute: 2395822321
- script: {fileID: 0}
- typeID: 23
- customType: 22
- isPPtrCurve: 0
- pptrCurveMapping: []
- m_AnimationClipSettings:
- serializedVersion: 2
- m_AdditiveReferencePoseClip: {fileID: 0}
- m_AdditiveReferencePoseTime: 0
- m_StartTime: 0
- m_StopTime: 0
- m_OrientationOffsetY: 0
- m_Level: 0
- m_CycleOffset: 0
- m_HasAdditiveReferencePose: 0
- m_LoopTime: 1
- m_LoopBlend: 0
- m_LoopBlendOrientation: 0
- m_LoopBlendPositionY: 0
- m_LoopBlendPositionXZ: 0
- m_KeepOriginalOrientation: 0
- m_KeepOriginalPositionY: 1
- m_KeepOriginalPositionXZ: 0
- m_HeightFromFeet: 0
- m_Mirror: 0
- m_EditorCurves:
- - curve:
- serializedVersion: 2
- m_Curve:
- - serializedVersion: 3
- time: 0
- value: 0
- inSlope: 0
- outSlope: 0
- tangentMode: 136
- weightedMode: 0
- inWeight: 0
- outWeight: 0
- m_PreInfinity: 2
- m_PostInfinity: 2
- m_RotationOrder: 4
- attribute: material._Emerge
- path: World Constraint/Container/TaSTT
- classID: 23
- script: {fileID: 0}
- - curve:
- serializedVersion: 2
- m_Curve:
- - serializedVersion: 3
- time: 0
- value: 0
- inSlope: 0
- outSlope: 0
- tangentMode: 136
- weightedMode: 0
- inWeight: 0
- outWeight: 0
- m_PreInfinity: 2
- m_PostInfinity: 2
- m_RotationOrder: 4
- attribute: material._Ellipsis
- path: World Constraint/Container/TaSTT
- classID: 23
- script: {fileID: 0}
- m_EulerEditorCurves: []
- m_HasGenericRootTransform: 0
- m_HasMotionFloatCurves: 0
- m_Events: []
diff --git a/Animations/TaSTT_Emerge_100.anim b/Animations/TaSTT_Emerge_100.anim
deleted file mode 100644
index e33cdda..0000000
--- a/Animations/TaSTT_Emerge_100.anim
+++ /dev/null
@@ -1,143 +0,0 @@
-%YAML 1.1
-%TAG !u! tag:unity3d.com,2011:
---- !u!74 &7400000
-AnimationClip:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: TaSTT_Emerge_100
- serializedVersion: 6
- m_Legacy: 0
- m_Compressed: 0
- m_UseHighQualityCurve: 1
- m_RotationCurves: []
- m_CompressedRotationCurves: []
- m_EulerCurves: []
- m_PositionCurves: []
- m_ScaleCurves: []
- m_FloatCurves:
- - curve:
- serializedVersion: 2
- m_Curve:
- - serializedVersion: 3
- time: 0
- value: 1
- inSlope: 0
- outSlope: 0
- tangentMode: 136
- weightedMode: 0
- inWeight: 0
- outWeight: 0
- m_PreInfinity: 2
- m_PostInfinity: 2
- m_RotationOrder: 4
- attribute: material._Emerge
- path: World Constraint/Container/TaSTT
- classID: 23
- script: {fileID: 0}
- - curve:
- serializedVersion: 2
- m_Curve:
- - serializedVersion: 3
- time: 0
- value: 1
- inSlope: Infinity
- outSlope: Infinity
- tangentMode: 103
- weightedMode: 0
- inWeight: 0
- outWeight: 0
- m_PreInfinity: 2
- m_PostInfinity: 2
- m_RotationOrder: 4
- attribute: m_IsActive
- path: World Constraint/Container/TaSTT
- classID: 1
- script: {fileID: 0}
- m_PPtrCurves: []
- m_SampleRate: 60
- m_WrapMode: 0
- m_Bounds:
- m_Center: {x: 0, y: 0, z: 0}
- m_Extent: {x: 0, y: 0, z: 0}
- m_ClipBindingConstant:
- genericBindings:
- - serializedVersion: 2
- path: 1272388438
- attribute: 2086281974
- script: {fileID: 0}
- typeID: 1
- customType: 0
- isPPtrCurve: 0
- - serializedVersion: 2
- path: 1272388438
- attribute: 2395822321
- script: {fileID: 0}
- typeID: 23
- customType: 22
- isPPtrCurve: 0
- pptrCurveMapping: []
- m_AnimationClipSettings:
- serializedVersion: 2
- m_AdditiveReferencePoseClip: {fileID: 0}
- m_AdditiveReferencePoseTime: 0
- m_StartTime: 0
- m_StopTime: 0
- m_OrientationOffsetY: 0
- m_Level: 0
- m_CycleOffset: 0
- m_HasAdditiveReferencePose: 0
- m_LoopTime: 1
- m_LoopBlend: 0
- m_LoopBlendOrientation: 0
- m_LoopBlendPositionY: 0
- m_LoopBlendPositionXZ: 0
- m_KeepOriginalOrientation: 0
- m_KeepOriginalPositionY: 1
- m_KeepOriginalPositionXZ: 0
- m_HeightFromFeet: 0
- m_Mirror: 0
- m_EditorCurves:
- - curve:
- serializedVersion: 2
- m_Curve:
- - serializedVersion: 3
- time: 0
- value: 1
- inSlope: 0
- outSlope: 0
- tangentMode: 136
- weightedMode: 0
- inWeight: 0
- outWeight: 0
- m_PreInfinity: 2
- m_PostInfinity: 2
- m_RotationOrder: 4
- attribute: material._Emerge
- path: World Constraint/Container/TaSTT
- classID: 23
- script: {fileID: 0}
- - curve:
- serializedVersion: 2
- m_Curve:
- - serializedVersion: 3
- time: 0
- value: 1
- inSlope: Infinity
- outSlope: Infinity
- tangentMode: 103
- weightedMode: 0
- inWeight: 0
- outWeight: 0
- m_PreInfinity: 2
- m_PostInfinity: 2
- m_RotationOrder: 4
- attribute: m_IsActive
- path: World Constraint/Container/TaSTT
- classID: 1
- script: {fileID: 0}
- m_EulerEditorCurves: []
- m_HasGenericRootTransform: 0
- m_HasMotionFloatCurves: 0
- m_Events: []
diff --git a/Animations/TaSTT_Lock_Hand_Disable.anim b/Animations/TaSTT_Lock_Hand_Disable.anim
deleted file mode 100644
index 1d5b956..0000000
--- a/Animations/TaSTT_Lock_Hand_Disable.anim
+++ /dev/null
@@ -1,98 +0,0 @@
-%YAML 1.1
-%TAG !u! tag:unity3d.com,2011:
---- !u!74 &7400000
-AnimationClip:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: TaSTT_Lock_Hand_Disable
- serializedVersion: 6
- m_Legacy: 0
- m_Compressed: 0
- m_UseHighQualityCurve: 1
- m_RotationCurves: []
- m_CompressedRotationCurves: []
- m_EulerCurves: []
- m_PositionCurves: []
- m_ScaleCurves: []
- m_FloatCurves:
- - curve:
- serializedVersion: 2
- m_Curve:
- - serializedVersion: 3
- time: 0
- value: 0
- inSlope: 0
- outSlope: 0
- tangentMode: 136
- weightedMode: 0
- inWeight: 0
- outWeight: 0
- m_PreInfinity: 2
- m_PostInfinity: 2
- m_RotationOrder: 4
- attribute: m_Sources.Array.data[0].weight
- path: World Constraint/Container/TaSTT
- classID: 1773428102
- script: {fileID: 0}
- m_PPtrCurves: []
- m_SampleRate: 60
- m_WrapMode: 0
- m_Bounds:
- m_Center: {x: 0, y: 0, z: 0}
- m_Extent: {x: 0, y: 0, z: 0}
- m_ClipBindingConstant:
- genericBindings:
- - serializedVersion: 2
- path: 1272388438
- attribute: 15
- script: {fileID: 0}
- typeID: 1773428102
- customType: 35
- isPPtrCurve: 0
- pptrCurveMapping: []
- m_AnimationClipSettings:
- serializedVersion: 2
- m_AdditiveReferencePoseClip: {fileID: 0}
- m_AdditiveReferencePoseTime: 0
- m_StartTime: 0
- m_StopTime: 0
- m_OrientationOffsetY: 0
- m_Level: 0
- m_CycleOffset: 0
- m_HasAdditiveReferencePose: 0
- m_LoopTime: 1
- m_LoopBlend: 0
- m_LoopBlendOrientation: 0
- m_LoopBlendPositionY: 0
- m_LoopBlendPositionXZ: 0
- m_KeepOriginalOrientation: 0
- m_KeepOriginalPositionY: 1
- m_KeepOriginalPositionXZ: 0
- m_HeightFromFeet: 0
- m_Mirror: 0
- m_EditorCurves:
- - curve:
- serializedVersion: 2
- m_Curve:
- - serializedVersion: 3
- time: 0
- value: 0
- inSlope: 0
- outSlope: 0
- tangentMode: 136
- weightedMode: 0
- inWeight: 0
- outWeight: 0
- m_PreInfinity: 2
- m_PostInfinity: 2
- m_RotationOrder: 4
- attribute: m_Sources.Array.data[0].weight
- path: World Constraint/Container/TaSTT
- classID: 1773428102
- script: {fileID: 0}
- m_EulerEditorCurves: []
- m_HasGenericRootTransform: 0
- m_HasMotionFloatCurves: 0
- m_Events: []
diff --git a/Animations/TaSTT_Lock_Hand_Enable.anim b/Animations/TaSTT_Lock_Hand_Enable.anim
deleted file mode 100644
index 9b81fa2..0000000
--- a/Animations/TaSTT_Lock_Hand_Enable.anim
+++ /dev/null
@@ -1,98 +0,0 @@
-%YAML 1.1
-%TAG !u! tag:unity3d.com,2011:
---- !u!74 &7400000
-AnimationClip:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: TaSTT_Lock_Hand_Enable
- serializedVersion: 6
- m_Legacy: 0
- m_Compressed: 0
- m_UseHighQualityCurve: 1
- m_RotationCurves: []
- m_CompressedRotationCurves: []
- m_EulerCurves: []
- m_PositionCurves: []
- m_ScaleCurves: []
- m_FloatCurves:
- - curve:
- serializedVersion: 2
- m_Curve:
- - serializedVersion: 3
- time: 0
- value: 1
- inSlope: 0
- outSlope: 0
- tangentMode: 136
- weightedMode: 0
- inWeight: 0
- outWeight: 0
- m_PreInfinity: 2
- m_PostInfinity: 2
- m_RotationOrder: 4
- attribute: m_Sources.Array.data[0].weight
- path: World Constraint/Container/TaSTT
- classID: 1773428102
- script: {fileID: 0}
- m_PPtrCurves: []
- m_SampleRate: 60
- m_WrapMode: 0
- m_Bounds:
- m_Center: {x: 0, y: 0, z: 0}
- m_Extent: {x: 0, y: 0, z: 0}
- m_ClipBindingConstant:
- genericBindings:
- - serializedVersion: 2
- path: 1272388438
- attribute: 15
- script: {fileID: 0}
- typeID: 1773428102
- customType: 35
- isPPtrCurve: 0
- pptrCurveMapping: []
- m_AnimationClipSettings:
- serializedVersion: 2
- m_AdditiveReferencePoseClip: {fileID: 0}
- m_AdditiveReferencePoseTime: 0
- m_StartTime: 0
- m_StopTime: 0
- m_OrientationOffsetY: 0
- m_Level: 0
- m_CycleOffset: 0
- m_HasAdditiveReferencePose: 0
- m_LoopTime: 1
- m_LoopBlend: 0
- m_LoopBlendOrientation: 0
- m_LoopBlendPositionY: 0
- m_LoopBlendPositionXZ: 0
- m_KeepOriginalOrientation: 0
- m_KeepOriginalPositionY: 1
- m_KeepOriginalPositionXZ: 0
- m_HeightFromFeet: 0
- m_Mirror: 0
- m_EditorCurves:
- - curve:
- serializedVersion: 2
- m_Curve:
- - serializedVersion: 3
- time: 0
- value: 1
- inSlope: 0
- outSlope: 0
- tangentMode: 136
- weightedMode: 0
- inWeight: 0
- outWeight: 0
- m_PreInfinity: 2
- m_PostInfinity: 2
- m_RotationOrder: 4
- attribute: m_Sources.Array.data[0].weight
- path: World Constraint/Container/TaSTT
- classID: 1773428102
- script: {fileID: 0}
- m_EulerEditorCurves: []
- m_HasGenericRootTransform: 0
- m_HasMotionFloatCurves: 0
- m_Events: []
diff --git a/Animations/TaSTT_Lock_World_Disable.anim b/Animations/TaSTT_Lock_World_Disable.anim
deleted file mode 100644
index 7d1f0de..0000000
--- a/Animations/TaSTT_Lock_World_Disable.anim
+++ /dev/null
@@ -1,98 +0,0 @@
-%YAML 1.1
-%TAG !u! tag:unity3d.com,2011:
---- !u!74 &7400000
-AnimationClip:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: TaSTT_Lock_World_Disable
- serializedVersion: 6
- m_Legacy: 0
- m_Compressed: 0
- m_UseHighQualityCurve: 1
- m_RotationCurves: []
- m_CompressedRotationCurves: []
- m_EulerCurves: []
- m_PositionCurves: []
- m_ScaleCurves: []
- m_FloatCurves:
- - curve:
- serializedVersion: 2
- m_Curve:
- - serializedVersion: 3
- time: 0
- value: 1
- inSlope: Infinity
- outSlope: Infinity
- tangentMode: 103
- weightedMode: 0
- inWeight: 0
- outWeight: 0
- m_PreInfinity: 2
- m_PostInfinity: 2
- m_RotationOrder: 4
- attribute: m_Enabled
- path: World Constraint/Container
- classID: 1773428102
- script: {fileID: 0}
- m_PPtrCurves: []
- m_SampleRate: 60
- m_WrapMode: 0
- m_Bounds:
- m_Center: {x: 0, y: 0, z: 0}
- m_Extent: {x: 0, y: 0, z: 0}
- m_ClipBindingConstant:
- genericBindings:
- - serializedVersion: 2
- path: 3572513839
- attribute: 3305885265
- script: {fileID: 0}
- typeID: 1773428102
- customType: 0
- isPPtrCurve: 0
- pptrCurveMapping: []
- m_AnimationClipSettings:
- serializedVersion: 2
- m_AdditiveReferencePoseClip: {fileID: 0}
- m_AdditiveReferencePoseTime: 0
- m_StartTime: 0
- m_StopTime: 0
- m_OrientationOffsetY: 0
- m_Level: 0
- m_CycleOffset: 0
- m_HasAdditiveReferencePose: 0
- m_LoopTime: 1
- m_LoopBlend: 0
- m_LoopBlendOrientation: 0
- m_LoopBlendPositionY: 0
- m_LoopBlendPositionXZ: 0
- m_KeepOriginalOrientation: 0
- m_KeepOriginalPositionY: 1
- m_KeepOriginalPositionXZ: 0
- m_HeightFromFeet: 0
- m_Mirror: 0
- m_EditorCurves:
- - curve:
- serializedVersion: 2
- m_Curve:
- - serializedVersion: 3
- time: 0
- value: 1
- inSlope: Infinity
- outSlope: Infinity
- tangentMode: 103
- weightedMode: 0
- inWeight: 0
- outWeight: 0
- m_PreInfinity: 2
- m_PostInfinity: 2
- m_RotationOrder: 4
- attribute: m_Enabled
- path: World Constraint/Container
- classID: 1773428102
- script: {fileID: 0}
- m_EulerEditorCurves: []
- m_HasGenericRootTransform: 0
- m_HasMotionFloatCurves: 0
- m_Events: []
diff --git a/Animations/TaSTT_Lock_World_Enable.anim b/Animations/TaSTT_Lock_World_Enable.anim
deleted file mode 100644
index 18a40f9..0000000
--- a/Animations/TaSTT_Lock_World_Enable.anim
+++ /dev/null
@@ -1,98 +0,0 @@
-%YAML 1.1
-%TAG !u! tag:unity3d.com,2011:
---- !u!74 &7400000
-AnimationClip:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: TaSTT_Lock_World_Enable
- serializedVersion: 6
- m_Legacy: 0
- m_Compressed: 0
- m_UseHighQualityCurve: 1
- m_RotationCurves: []
- m_CompressedRotationCurves: []
- m_EulerCurves: []
- m_PositionCurves: []
- m_ScaleCurves: []
- m_FloatCurves:
- - curve:
- serializedVersion: 2
- m_Curve:
- - serializedVersion: 3
- time: 0
- value: 0
- inSlope: Infinity
- outSlope: Infinity
- tangentMode: 103
- weightedMode: 0
- inWeight: 0
- outWeight: 0
- m_PreInfinity: 2
- m_PostInfinity: 2
- m_RotationOrder: 4
- attribute: m_Enabled
- path: World Constraint/Container
- classID: 1773428102
- script: {fileID: 0}
- m_PPtrCurves: []
- m_SampleRate: 60
- m_WrapMode: 0
- m_Bounds:
- m_Center: {x: 0, y: 0, z: 0}
- m_Extent: {x: 0, y: 0, z: 0}
- m_ClipBindingConstant:
- genericBindings:
- - serializedVersion: 2
- path: 3572513839
- attribute: 3305885265
- script: {fileID: 0}
- typeID: 1773428102
- customType: 0
- isPPtrCurve: 0
- pptrCurveMapping: []
- m_AnimationClipSettings:
- serializedVersion: 2
- m_AdditiveReferencePoseClip: {fileID: 0}
- m_AdditiveReferencePoseTime: 0
- m_StartTime: 0
- m_StopTime: 0
- m_OrientationOffsetY: 0
- m_Level: 0
- m_CycleOffset: 0
- m_HasAdditiveReferencePose: 0
- m_LoopTime: 1
- m_LoopBlend: 0
- m_LoopBlendOrientation: 0
- m_LoopBlendPositionY: 0
- m_LoopBlendPositionXZ: 0
- m_KeepOriginalOrientation: 0
- m_KeepOriginalPositionY: 1
- m_KeepOriginalPositionXZ: 0
- m_HeightFromFeet: 0
- m_Mirror: 0
- m_EditorCurves:
- - curve:
- serializedVersion: 2
- m_Curve:
- - serializedVersion: 3
- time: 0
- value: 0
- inSlope: Infinity
- outSlope: Infinity
- tangentMode: 103
- weightedMode: 0
- inWeight: 0
- outWeight: 0
- m_PreInfinity: 2
- m_PostInfinity: 2
- m_RotationOrder: 4
- attribute: m_Enabled
- path: World Constraint/Container
- classID: 1773428102
- script: {fileID: 0}
- m_EulerEditorCurves: []
- m_HasGenericRootTransform: 0
- m_HasMotionFloatCurves: 0
- m_Events: []
diff --git a/Animations/TaSTT_Speech_Noise_Off.anim b/Animations/TaSTT_Speech_Noise_Off.anim
deleted file mode 100644
index 9e9487d..0000000
--- a/Animations/TaSTT_Speech_Noise_Off.anim
+++ /dev/null
@@ -1,98 +0,0 @@
-%YAML 1.1
-%TAG !u! tag:unity3d.com,2011:
---- !u!74 &7400000
-AnimationClip:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: TaSTT_Speech_Noise_Off
- serializedVersion: 6
- m_Legacy: 0
- m_Compressed: 0
- m_UseHighQualityCurve: 1
- m_RotationCurves: []
- m_CompressedRotationCurves: []
- m_EulerCurves: []
- m_PositionCurves: []
- m_ScaleCurves: []
- m_FloatCurves:
- - curve:
- serializedVersion: 2
- m_Curve:
- - serializedVersion: 3
- time: 0
- value: 0
- inSlope: Infinity
- outSlope: Infinity
- tangentMode: 103
- weightedMode: 0
- inWeight: 0
- outWeight: 0
- m_PreInfinity: 2
- m_PostInfinity: 2
- m_RotationOrder: 4
- attribute: m_IsActive
- path: World Constraint/Container/Audio Source
- classID: 1
- script: {fileID: 0}
- m_PPtrCurves: []
- m_SampleRate: 60
- m_WrapMode: 0
- m_Bounds:
- m_Center: {x: 0, y: 0, z: 0}
- m_Extent: {x: 0, y: 0, z: 0}
- m_ClipBindingConstant:
- genericBindings:
- - serializedVersion: 2
- path: 3800282094
- attribute: 2086281974
- script: {fileID: 0}
- typeID: 1
- customType: 0
- isPPtrCurve: 0
- pptrCurveMapping: []
- m_AnimationClipSettings:
- serializedVersion: 2
- m_AdditiveReferencePoseClip: {fileID: 0}
- m_AdditiveReferencePoseTime: 0
- m_StartTime: 0
- m_StopTime: 0
- m_OrientationOffsetY: 0
- m_Level: 0
- m_CycleOffset: 0
- m_HasAdditiveReferencePose: 0
- m_LoopTime: 1
- m_LoopBlend: 0
- m_LoopBlendOrientation: 0
- m_LoopBlendPositionY: 0
- m_LoopBlendPositionXZ: 0
- m_KeepOriginalOrientation: 0
- m_KeepOriginalPositionY: 1
- m_KeepOriginalPositionXZ: 0
- m_HeightFromFeet: 0
- m_Mirror: 0
- m_EditorCurves:
- - curve:
- serializedVersion: 2
- m_Curve:
- - serializedVersion: 3
- time: 0
- value: 0
- inSlope: Infinity
- outSlope: Infinity
- tangentMode: 103
- weightedMode: 0
- inWeight: 0
- outWeight: 0
- m_PreInfinity: 2
- m_PostInfinity: 2
- m_RotationOrder: 4
- attribute: m_IsActive
- path: World Constraint/Container/Audio Source
- classID: 1
- script: {fileID: 0}
- m_EulerEditorCurves: []
- m_HasGenericRootTransform: 0
- m_HasMotionFloatCurves: 0
- m_Events: []
diff --git a/Animations/TaSTT_Speech_Noise_On.anim b/Animations/TaSTT_Speech_Noise_On.anim
deleted file mode 100644
index 23f687e..0000000
--- a/Animations/TaSTT_Speech_Noise_On.anim
+++ /dev/null
@@ -1,98 +0,0 @@
-%YAML 1.1
-%TAG !u! tag:unity3d.com,2011:
---- !u!74 &7400000
-AnimationClip:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: TaSTT_Speech_Noise_On
- serializedVersion: 6
- m_Legacy: 0
- m_Compressed: 0
- m_UseHighQualityCurve: 1
- m_RotationCurves: []
- m_CompressedRotationCurves: []
- m_EulerCurves: []
- m_PositionCurves: []
- m_ScaleCurves: []
- m_FloatCurves:
- - curve:
- serializedVersion: 2
- m_Curve:
- - serializedVersion: 3
- time: 0
- value: 1
- inSlope: Infinity
- outSlope: Infinity
- tangentMode: 103
- weightedMode: 0
- inWeight: 0
- outWeight: 0
- m_PreInfinity: 2
- m_PostInfinity: 2
- m_RotationOrder: 4
- attribute: m_IsActive
- path: World Constraint/Container/Audio Source
- classID: 1
- script: {fileID: 0}
- m_PPtrCurves: []
- m_SampleRate: 60
- m_WrapMode: 0
- m_Bounds:
- m_Center: {x: 0, y: 0, z: 0}
- m_Extent: {x: 0, y: 0, z: 0}
- m_ClipBindingConstant:
- genericBindings:
- - serializedVersion: 2
- path: 3800282094
- attribute: 2086281974
- script: {fileID: 0}
- typeID: 1
- customType: 0
- isPPtrCurve: 0
- pptrCurveMapping: []
- m_AnimationClipSettings:
- serializedVersion: 2
- m_AdditiveReferencePoseClip: {fileID: 0}
- m_AdditiveReferencePoseTime: 0
- m_StartTime: 0
- m_StopTime: 0
- m_OrientationOffsetY: 0
- m_Level: 0
- m_CycleOffset: 0
- m_HasAdditiveReferencePose: 0
- m_LoopTime: 1
- m_LoopBlend: 0
- m_LoopBlendOrientation: 0
- m_LoopBlendPositionY: 0
- m_LoopBlendPositionXZ: 0
- m_KeepOriginalOrientation: 0
- m_KeepOriginalPositionY: 1
- m_KeepOriginalPositionXZ: 0
- m_HeightFromFeet: 0
- m_Mirror: 0
- m_EditorCurves:
- - curve:
- serializedVersion: 2
- m_Curve:
- - serializedVersion: 3
- time: 0
- value: 1
- inSlope: Infinity
- outSlope: Infinity
- tangentMode: 103
- weightedMode: 0
- inWeight: 0
- outWeight: 0
- m_PreInfinity: 2
- m_PostInfinity: 2
- m_RotationOrder: 4
- attribute: m_IsActive
- path: World Constraint/Container/Audio Source
- classID: 1
- script: {fileID: 0}
- m_EulerEditorCurves: []
- m_HasGenericRootTransform: 0
- m_HasMotionFloatCurves: 0
- m_Events: []
diff --git a/Animations/TaSTT_Toggle_Off.anim b/Animations/TaSTT_Toggle_Off.anim
deleted file mode 100644
index 644379f..0000000
--- a/Animations/TaSTT_Toggle_Off.anim
+++ /dev/null
@@ -1,116 +0,0 @@
-%YAML 1.1
-%TAG !u! tag:unity3d.com,2011:
---- !u!74 &7400000
-AnimationClip:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: TaSTT_Toggle_Off
- serializedVersion: 6
- m_Legacy: 0
- m_Compressed: 0
- m_UseHighQualityCurve: 1
- m_RotationCurves: []
- m_CompressedRotationCurves: []
- m_EulerCurves: []
- m_PositionCurves: []
- m_ScaleCurves: []
- m_FloatCurves:
- - curve:
- serializedVersion: 2
- m_Curve:
- - serializedVersion: 3
- time: 0
- value: 0
- inSlope: Infinity
- outSlope: Infinity
- tangentMode: 103
- weightedMode: 0
- inWeight: 0
- outWeight: 0
- - serializedVersion: 3
- time: 0.016666668
- value: 0
- inSlope: Infinity
- outSlope: Infinity
- tangentMode: 103
- weightedMode: 0
- inWeight: 0
- outWeight: 0
- m_PreInfinity: 2
- m_PostInfinity: 2
- m_RotationOrder: 4
- attribute: m_IsActive
- path: World Constraint/Container/TaSTT
- classID: 1
- script: {fileID: 0}
- m_PPtrCurves: []
- m_SampleRate: 60
- m_WrapMode: 0
- m_Bounds:
- m_Center: {x: 0, y: 0, z: 0}
- m_Extent: {x: 0, y: 0, z: 0}
- m_ClipBindingConstant:
- genericBindings:
- - serializedVersion: 2
- path: 1409323812
- attribute: 2086281974
- script: {fileID: 0}
- typeID: 1
- customType: 0
- isPPtrCurve: 0
- pptrCurveMapping: []
- m_AnimationClipSettings:
- serializedVersion: 2
- m_AdditiveReferencePoseClip: {fileID: 0}
- m_AdditiveReferencePoseTime: 0
- m_StartTime: 0
- m_StopTime: 0.016666668
- m_OrientationOffsetY: 0
- m_Level: 0
- m_CycleOffset: 0
- m_HasAdditiveReferencePose: 0
- m_LoopTime: 1
- m_LoopBlend: 0
- m_LoopBlendOrientation: 0
- m_LoopBlendPositionY: 0
- m_LoopBlendPositionXZ: 0
- m_KeepOriginalOrientation: 0
- m_KeepOriginalPositionY: 1
- m_KeepOriginalPositionXZ: 0
- m_HeightFromFeet: 0
- m_Mirror: 0
- m_EditorCurves:
- - curve:
- serializedVersion: 2
- m_Curve:
- - serializedVersion: 3
- time: 0
- value: 0
- inSlope: Infinity
- outSlope: Infinity
- tangentMode: 103
- weightedMode: 0
- inWeight: 0
- outWeight: 0
- - serializedVersion: 3
- time: 0.016666668
- value: 0
- inSlope: Infinity
- outSlope: Infinity
- tangentMode: 103
- weightedMode: 0
- inWeight: 0
- outWeight: 0
- m_PreInfinity: 2
- m_PostInfinity: 2
- m_RotationOrder: 4
- attribute: m_IsActive
- path: World Constraint/Container/TaSTT
- classID: 1
- script: {fileID: 0}
- m_EulerEditorCurves: []
- m_HasGenericRootTransform: 0
- m_HasMotionFloatCurves: 0
- m_Events: []
diff --git a/Animations/TaSTT_Toggle_On.anim b/Animations/TaSTT_Toggle_On.anim
deleted file mode 100644
index 97ca5e4..0000000
--- a/Animations/TaSTT_Toggle_On.anim
+++ /dev/null
@@ -1,116 +0,0 @@
-%YAML 1.1
-%TAG !u! tag:unity3d.com,2011:
---- !u!74 &7400000
-AnimationClip:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: TaSTT_Toggle_On
- serializedVersion: 6
- m_Legacy: 0
- m_Compressed: 0
- m_UseHighQualityCurve: 1
- m_RotationCurves: []
- m_CompressedRotationCurves: []
- m_EulerCurves: []
- m_PositionCurves: []
- m_ScaleCurves: []
- m_FloatCurves:
- - curve:
- serializedVersion: 2
- m_Curve:
- - serializedVersion: 3
- time: 0
- value: 1
- inSlope: Infinity
- outSlope: Infinity
- tangentMode: 103
- weightedMode: 0
- inWeight: 0
- outWeight: 0
- - serializedVersion: 3
- time: 0.016666668
- value: 1
- inSlope: Infinity
- outSlope: Infinity
- tangentMode: 103
- weightedMode: 0
- inWeight: 0
- outWeight: 0
- m_PreInfinity: 2
- m_PostInfinity: 2
- m_RotationOrder: 4
- attribute: m_IsActive
- path: World Constraint/Container/TaSTT
- classID: 1
- script: {fileID: 0}
- m_PPtrCurves: []
- m_SampleRate: 60
- m_WrapMode: 0
- m_Bounds:
- m_Center: {x: 0, y: 0, z: 0}
- m_Extent: {x: 0, y: 0, z: 0}
- m_ClipBindingConstant:
- genericBindings:
- - serializedVersion: 2
- path: 1409323812
- attribute: 2086281974
- script: {fileID: 0}
- typeID: 1
- customType: 0
- isPPtrCurve: 0
- pptrCurveMapping: []
- m_AnimationClipSettings:
- serializedVersion: 2
- m_AdditiveReferencePoseClip: {fileID: 0}
- m_AdditiveReferencePoseTime: 0
- m_StartTime: 0
- m_StopTime: 0.016666668
- m_OrientationOffsetY: 0
- m_Level: 0
- m_CycleOffset: 0
- m_HasAdditiveReferencePose: 0
- m_LoopTime: 1
- m_LoopBlend: 0
- m_LoopBlendOrientation: 0
- m_LoopBlendPositionY: 0
- m_LoopBlendPositionXZ: 0
- m_KeepOriginalOrientation: 0
- m_KeepOriginalPositionY: 1
- m_KeepOriginalPositionXZ: 0
- m_HeightFromFeet: 0
- m_Mirror: 0
- m_EditorCurves:
- - curve:
- serializedVersion: 2
- m_Curve:
- - serializedVersion: 3
- time: 0
- value: 1
- inSlope: Infinity
- outSlope: Infinity
- tangentMode: 103
- weightedMode: 0
- inWeight: 0
- outWeight: 0
- - serializedVersion: 3
- time: 0.016666668
- value: 1
- inSlope: Infinity
- outSlope: Infinity
- tangentMode: 103
- weightedMode: 0
- inWeight: 0
- outWeight: 0
- m_PreInfinity: 2
- m_PostInfinity: 2
- m_RotationOrder: 4
- attribute: m_IsActive
- path: World Constraint/Container/TaSTT
- classID: 1
- script: {fileID: 0}
- m_EulerEditorCurves: []
- m_HasGenericRootTransform: 0
- m_HasMotionFloatCurves: 0
- m_Events: []
diff --git a/BrowserSource/index.html b/BrowserSource/index.html
deleted file mode 100644
index 573fdcc..0000000
--- a/BrowserSource/index.html
+++ /dev/null
@@ -1,114 +0,0 @@
-<!DOCTYPE html>
-<html>
- <head>
- <title>TaSTT</title>
- <script src="https://code.jquery.com/jquery-3.6.3.min.js"></script>
- <link rel="stylesheet"
- href="https://fonts.googleapis.com/css?family=Noto+Sans+Mono&display=swap">
- </head>
- <style>
- body {
- font-family: 'Noto Sans Mono', monospace;
- font-size: 96px;
- font-weight: 3200;
- /* xdd */
- /* https://stackoverflow.com/a/55097644 */
- text-shadow: 0.0px 10.0px 0.02px #000, 9.8px 2.1px 0.02px #000, 4.2px
- -9.1px 0.02px #000, -8.0px -6.0px 0.02px #000, -7.6px 6.5px 0.02px
- #000, 4.8px 8.8px 0.02px #000, 9.6px -2.8px 0.02px #000, -0.7px -10.0px
- 0.02px #000, -9.9px -1.5px 0.02px #000, -3.5px 9.4px 0.02px #000, 8.4px
- 5.4px 0.02px #000, 7.1px -7.0px 0.02px #000, -5.4px -8.4px 0.02px #000,
- -9.4px 3.5px 0.02px #000, 1.4px 9.9px 0.02px #000, 10.0px 0.8px 0.02px
- #000, 2.9px -9.6px 0.02px #000, -8.7px -4.8px 0.02px #000, -6.6px 7.5px
- 0.02px #000, 5.9px 8.0px 0.02px #000, 9.1px -4.1px 0.02px #000, -2.1px
- -9.8px 0.02px #000, -10.0px -0.1px 0.02px #000, -2.2px 9.8px 0.02px #000,
- 9.1px 4.2px 0.02px #000, 6.1px -8.0px 0.02px #000, -6.5px -7.6px 0.02px
- #000, -8.8px 4.7px 0.02px #000, 2.7px 9.6px 0.02px #000, 10.0px -0.6px
- 0.02px #000, 1.5px -9.9px 0.02px #000, -9.3px -3.6px 0.02px #000, -5.5px
- 8.4px 0.02px #000, 7.0px 7.2px 0.02px #000, 8.5px -5.3px 0.02px #000,
- -3.4px -9.4px 0.02px #000, -9.9px 1.3px 0.02px #000, -0.8px 10.0px 0.02px
- #000, 9.6px 2.9px 0.02px #000, 4.9px -8.7px 0.02px #000, -7.5px -6.7px
- 0.02px #000, -8.1px 5.9px 0.02px #000, 4.0px 9.2px 0.02px #000, 9.8px
- -2.0px 0.02px #000, 0.2px -10.0px 0.02px #000, -9.7px -2.3px 0.02px #000,
- -4.3px 9.0px 0.02px #000, 7.9px 6.1px 0.02px #000;
- }
- .transcript {
- color: white;
- }
- .preview {
- color: white;
- opacity: 0.65;
- }
- .red_circle {
- height: 50px;
- width: 50px;
- background-color: red;
- border-radius: 50%;
- display: inline-block;
- vertical-align: middle;
- margin: 20px;
- }
- .grey_circle {
- height: 50px;
- width: 50px;
- background-color: grey;
- border-radius: 50%;
- display: inline-block;
- vertical-align: middle;
- margin: 20px;
- }
- </style>
- <body>
- <div id="content"></div>
- <script>
- function scrollToBottom() {
- window.scrollTo(0, document.body.scrollHeight);
- }
-
- function getTranscript() {
- const host = window.location.hostname;
- const port = window.location.port;
- $.ajax({
- url: `http://${host}:${port}/api/v0/transcript`,
- method: 'GET',
- dataType: 'json',
- success: function (data) {
- // dirty hack: create a bunch of invisible content to push the
- // transcript down the bottom
- var transcriptHtml = '<span class="transcript" style="opacity: 0">'
- + '___ '.repeat(128) + '</span>';
- data.commits.forEach(function (commit, index) {
- let age = data.ts - commit.ts;
- let min_age_s = 5.0;
- let max_age_s = 60.0;
- let opacity = 1.0 - (age - min_age_s) / (max_age_s - min_age_s);
- opacity = Math.max(0, opacity);
- opacity = Math.min(1, opacity);
- transcriptHtml += `<span class="transcript" style="opacity: ${opacity};">${commit.delta.trim() + ' '}</span>`;
- });
-
- // Append the preview with full opacity if it exists
- if (data.preview && data.preview.preview) {
- transcriptHtml += `<span class="preview" style="opacity: 1;">${data.preview.preview}</span>`;
- }
-
- // Create the circle indicator
- var circleHtml = data.preview.preview ?
- '<span class="red_circle"></span>' :
- '<span class="grey_circle"></span>';
-
- $('#content').html(transcriptHtml + circleHtml);
- $('#content').css("background-color", "#22222280");
- },
- error: function (jqXHR, textStatus, errorThrown) {
- console.error('Error getting transcript: ', textStatus, errorThrown);
- }
- });
- scrollToBottom();
- }
-
- setInterval(getTranscript, /*interval_ms=*/100);
- </script>
-
- </body>
-</html>
diff --git a/Examples/FX_no_write_defaults.controller b/Examples/FX_no_write_defaults.controller
deleted file mode 100644
index 5136e82..0000000
--- a/Examples/FX_no_write_defaults.controller
+++ /dev/null
@@ -1,15927 +0,0 @@
-%YAML 1.1
-%TAG !u! tag:unity3d.com,2011:
---- !u!91 &9100000
-AnimatorController:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: FX_no_write_defaults
- serializedVersion: 5
- m_AnimatorParameters:
- - m_Name: GestureLeftWeight
- m_Type: 1
- m_DefaultFloat: 0
- m_DefaultInt: 0
- m_DefaultBool: 0
- m_Controller: {fileID: 9100000}
- - m_Name: GestureRightWeight
- m_Type: 1
- m_DefaultFloat: 0
- m_DefaultInt: 0
- m_DefaultBool: 0
- m_Controller: {fileID: 9100000}
- - m_Name: GestureRight
- m_Type: 3
- m_DefaultFloat: 0
- m_DefaultInt: 0
- m_DefaultBool: 0
- m_Controller: {fileID: 9100000}
- - m_Name: GestureLeft
- m_Type: 3
- m_DefaultFloat: 0
- m_DefaultInt: 0
- m_DefaultBool: 0
- m_Controller: {fileID: 9100000}
- m_AnimatorLayers:
- - serializedVersion: 5
- m_Name: AllParts
- m_StateMachine: {fileID: 9213968249993944191}
- 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: 9100000}
- - serializedVersion: 5
- m_Name: Left Hand
- m_StateMachine: {fileID: 9213968249993944192}
- 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: 9100000}
- - serializedVersion: 5
- m_Name: Right Hand
- m_StateMachine: {fileID: 9213968249993944195}
- 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: 9100000}
---- !u!1107 &9213968249993944191
-AnimatorStateMachine:
- serializedVersion: 6
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: AllParts
- m_ChildStates: []
- m_ChildStateMachines: []
- m_AnyStateTransitions: []
- m_EntryTransitions: []
- m_StateMachineTransitions: {}
- m_StateMachineBehaviours: []
- m_AnyStatePosition: {x: 50, y: 20, z: 0}
- m_EntryPosition: {x: 50, y: 120, z: 0}
- m_ExitPosition: {x: 800, y: 120, z: 0}
- m_ParentStateMachinePosition: {x: 800, y: 20, z: 0}
- m_DefaultState: {fileID: 0}
---- !u!1107 &9213968249993944192
-AnimatorStateMachine:
- serializedVersion: 6
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: Left Hand
- m_ChildStates:
- - serializedVersion: 1
- m_State: {fileID: 9213968249993944198}
- m_Position: {x: 210, y: 580, z: 0}
- - serializedVersion: 1
- m_State: {fileID: 9213968249993944274}
- m_Position: {x: 210, y: 700, z: 0}
- - serializedVersion: 1
- m_State: {fileID: 9213968249993944320}
- m_Position: {x: 210, y: 640, z: 0}
- - serializedVersion: 1
- m_State: {fileID: 9213968249993944321}
- m_Position: {x: 210, y: 760, z: 0}
- - serializedVersion: 1
- m_State: {fileID: 9213968249993944244}
- m_Position: {x: 210, y: 820, z: 0}
- - serializedVersion: 1
- m_State: {fileID: 9213968249993944322}
- m_Position: {x: 210, y: 880, z: 0}
- - serializedVersion: 1
- m_State: {fileID: 9213968249993944262}
- m_Position: {x: 210, y: 940, z: 0}
- - serializedVersion: 1
- m_State: {fileID: 9213968249993944239}
- m_Position: {x: 100, y: 200, z: 0}
- - serializedVersion: 1
- m_State: {fileID: 9213968249993944225}
- m_Position: {x: 470, y: 580, z: 0}
- - serializedVersion: 1
- m_State: {fileID: 9213968249993944228}
- m_Position: {x: 470, y: 700, z: 0}
- - serializedVersion: 1
- m_State: {fileID: 9213968249993944255}
- m_Position: {x: 470, y: 640, z: 0}
- - serializedVersion: 1
- m_State: {fileID: 9213968249993944234}
- m_Position: {x: 470, y: 760, z: 0}
- - serializedVersion: 1
- m_State: {fileID: 9213968249993944205}
- m_Position: {x: 470, y: 820, z: 0}
- - serializedVersion: 1
- m_State: {fileID: 9213968249993944284}
- m_Position: {x: 470, y: 880, z: 0}
- - serializedVersion: 1
- m_State: {fileID: 9213968249993944237}
- m_Position: {x: 470, y: 940, z: 0}
- - serializedVersion: 1
- m_State: {fileID: 9213968249993944251}
- m_Position: {x: 210, y: 1050, z: 0}
- - serializedVersion: 1
- m_State: {fileID: 9213968249993944217}
- m_Position: {x: 370, y: 1130, z: 0}
- - serializedVersion: 1
- m_State: {fileID: 9213968249993944289}
- m_Position: {x: 330, y: 1220, z: 0}
- - serializedVersion: 1
- m_State: {fileID: 9213968249993944271}
- m_Position: {x: 370, y: 1300, z: 0}
- - serializedVersion: 1
- m_State: {fileID: 9213968249993944264}
- m_Position: {x: 210, y: 1380, z: 0}
- - serializedVersion: 1
- m_State: {fileID: 9213968249993944246}
- m_Position: {x: 790, y: 1380, z: 0}
- - serializedVersion: 1
- m_State: {fileID: 9213968249993944201}
- m_Position: {x: 620, y: 1300, z: 0}
- - serializedVersion: 1
- m_State: {fileID: 9213968249993944223}
- m_Position: {x: 670, y: 1220, z: 0}
- - serializedVersion: 1
- m_State: {fileID: 9213968249993944206}
- m_Position: {x: 620, y: 1130, z: 0}
- - serializedVersion: 1
- m_State: {fileID: 9213968249993944200}
- m_Position: {x: 790, y: 1050, z: 0}
- - serializedVersion: 1
- m_State: {fileID: 9213968249993944231}
- m_Position: {x: 630, y: 1460, z: 0}
- - serializedVersion: 1
- m_State: {fileID: 9213968249993944211}
- m_Position: {x: 670, y: 1540, z: 0}
- - serializedVersion: 1
- m_State: {fileID: 9213968249993944266}
- m_Position: {x: 620, y: 1620, z: 0}
- - serializedVersion: 1
- m_State: {fileID: 9213968249993944323}
- m_Position: {x: 790, y: 1700, z: 0}
- - serializedVersion: 1
- m_State: {fileID: 9213968249993944240}
- m_Position: {x: 330, y: 1540, z: 0}
- - serializedVersion: 1
- m_State: {fileID: 9213968249993944224}
- m_Position: {x: 380, y: 1460, z: 0}
- - serializedVersion: 1
- m_State: {fileID: 9213968249993944210}
- m_Position: {x: 210, y: 1700, z: 0}
- - serializedVersion: 1
- m_State: {fileID: 9213968249993944247}
- m_Position: {x: 370, y: 1620, z: 0}
- m_ChildStateMachines: []
- m_AnyStateTransitions: []
- m_EntryTransitions: []
- m_StateMachineTransitions: {}
- m_StateMachineBehaviours: []
- m_AnyStatePosition: {x: -108, y: 384, z: 0}
- m_EntryPosition: {x: -180, y: 168, z: 0}
- m_ExitPosition: {x: 290, y: -120, z: 0}
- m_ParentStateMachinePosition: {x: 800, y: 20, z: 0}
- m_DefaultState: {fileID: 9213968249993944239}
---- !u!1107 &9213968249993944195
-AnimatorStateMachine:
- serializedVersion: 6
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: Right Hand
- m_ChildStates:
- - serializedVersion: 1
- m_State: {fileID: 9213968249993944433}
- m_Position: {x: 210, y: 580, z: 0}
- - serializedVersion: 1
- m_State: {fileID: 9213968249993944509}
- m_Position: {x: 210, y: 700, z: 0}
- - serializedVersion: 1
- m_State: {fileID: 9213968249993944555}
- m_Position: {x: 210, y: 640, z: 0}
- - serializedVersion: 1
- m_State: {fileID: 9213968249993944556}
- m_Position: {x: 210, y: 760, z: 0}
- - serializedVersion: 1
- m_State: {fileID: 9213968249993944479}
- m_Position: {x: 210, y: 820, z: 0}
- - serializedVersion: 1
- m_State: {fileID: 9213968249993944557}
- m_Position: {x: 210, y: 880, z: 0}
- - serializedVersion: 1
- m_State: {fileID: 9213968249993944497}
- m_Position: {x: 210, y: 940, z: 0}
- - serializedVersion: 1
- m_State: {fileID: 9213968249993944474}
- m_Position: {x: 100, y: 200, z: 0}
- - serializedVersion: 1
- m_State: {fileID: 9213968249993944460}
- m_Position: {x: 470, y: 580, z: 0}
- - serializedVersion: 1
- m_State: {fileID: 9213968249993944463}
- m_Position: {x: 470, y: 700, z: 0}
- - serializedVersion: 1
- m_State: {fileID: 9213968249993944490}
- m_Position: {x: 470, y: 640, z: 0}
- - serializedVersion: 1
- m_State: {fileID: 9213968249993944469}
- m_Position: {x: 470, y: 760, z: 0}
- - serializedVersion: 1
- m_State: {fileID: 9213968249993944440}
- m_Position: {x: 470, y: 820, z: 0}
- - serializedVersion: 1
- m_State: {fileID: 9213968249993944519}
- m_Position: {x: 470, y: 880, z: 0}
- - serializedVersion: 1
- m_State: {fileID: 9213968249993944472}
- m_Position: {x: 470, y: 940, z: 0}
- - serializedVersion: 1
- m_State: {fileID: 9213968249993944486}
- m_Position: {x: 210, y: 1050, z: 0}
- - serializedVersion: 1
- m_State: {fileID: 9213968249993944452}
- m_Position: {x: 370, y: 1130, z: 0}
- - serializedVersion: 1
- m_State: {fileID: 9213968249993944524}
- m_Position: {x: 330, y: 1220, z: 0}
- - serializedVersion: 1
- m_State: {fileID: 9213968249993944506}
- m_Position: {x: 370, y: 1300, z: 0}
- - serializedVersion: 1
- m_State: {fileID: 9213968249993944499}
- m_Position: {x: 210, y: 1380, z: 0}
- - serializedVersion: 1
- m_State: {fileID: 9213968249993944481}
- m_Position: {x: 790, y: 1380, z: 0}
- - serializedVersion: 1
- m_State: {fileID: 9213968249993944436}
- m_Position: {x: 620, y: 1300, z: 0}
- - serializedVersion: 1
- m_State: {fileID: 9213968249993944458}
- m_Position: {x: 670, y: 1220, z: 0}
- - serializedVersion: 1
- m_State: {fileID: 9213968249993944441}
- m_Position: {x: 620, y: 1130, z: 0}
- - serializedVersion: 1
- m_State: {fileID: 9213968249993944435}
- m_Position: {x: 790, y: 1050, z: 0}
- - serializedVersion: 1
- m_State: {fileID: 9213968249993944466}
- m_Position: {x: 630, y: 1460, z: 0}
- - serializedVersion: 1
- m_State: {fileID: 9213968249993944446}
- m_Position: {x: 670, y: 1540, z: 0}
- - serializedVersion: 1
- m_State: {fileID: 9213968249993944501}
- m_Position: {x: 620, y: 1620, z: 0}
- - serializedVersion: 1
- m_State: {fileID: 9213968249993944558}
- m_Position: {x: 790, y: 1700, z: 0}
- - serializedVersion: 1
- m_State: {fileID: 9213968249993944475}
- m_Position: {x: 330, y: 1540, z: 0}
- - serializedVersion: 1
- m_State: {fileID: 9213968249993944459}
- m_Position: {x: 380, y: 1460, z: 0}
- - serializedVersion: 1
- m_State: {fileID: 9213968249993944445}
- m_Position: {x: 210, y: 1700, z: 0}
- - serializedVersion: 1
- m_State: {fileID: 9213968249993944482}
- m_Position: {x: 370, y: 1620, z: 0}
- m_ChildStateMachines: []
- m_AnyStateTransitions: []
- m_EntryTransitions: []
- m_StateMachineTransitions: {}
- m_StateMachineBehaviours: []
- m_AnyStatePosition: {x: -108, y: 384, z: 0}
- m_EntryPosition: {x: -180, y: 168, z: 0}
- m_ExitPosition: {x: 290, y: -120, z: 0}
- m_ParentStateMachinePosition: {x: 800, y: 20, z: 0}
- m_DefaultState: {fileID: 9213968249993944474}
---- !u!1102 &9213968249993944196
-AnimatorState:
- serializedVersion: 6
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: Open 0
- m_Speed: 1
- m_CycleOffset: 0
- m_Transitions: []
- m_StateMachineBehaviours: []
- m_Position: {x: 264, y: 156, z: 0}
- m_IKOnFeet: 0
- m_WriteDefaultValues: 1
- 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: GestureLeftWeight
---- !u!1101 &9213968249993944197
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 6
- m_ConditionEvent: GestureLeft
- m_EventTreshold: 1
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944198}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.1
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1102 &9213968249993944198
-AnimatorState:
- serializedVersion: 6
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: Fist
- m_Speed: 1
- m_CycleOffset: 0
- m_Transitions:
- - {fileID: 9213968249993944281}
- - {fileID: 9213968249993944250}
- m_StateMachineBehaviours: []
- m_Position: {x: -60, y: 192, 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: GestureLeftWeight
---- !u!1101 &9213968249993944199
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 4
- m_ConditionEvent: GestureLeftWeight
- m_EventTreshold: 0.05
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944200}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.02
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1102 &9213968249993944200
-AnimatorState:
- serializedVersion: 6
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: Fist + trigger 10% reset
- m_Speed: 1
- m_CycleOffset: 0
- m_Transitions:
- - {fileID: 9213968249993944229}
- - {fileID: 9213968249993944230}
- 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:
---- !u!1102 &9213968249993944201
-AnimatorState:
- serializedVersion: 6
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: Fist + trigger 40% reset
- m_Speed: 1
- m_CycleOffset: 0
- m_Transitions:
- - {fileID: 9213968249993944202}
- - {fileID: 9213968249993944203}
- 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:
---- !u!1101 &9213968249993944202
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 4
- m_ConditionEvent: GestureLeftWeight
- m_EventTreshold: 0.25
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944223}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.02
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944203
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 3
- m_ConditionEvent: GestureLeftWeight
- m_EventTreshold: 0.25
- - m_ConditionMode: 6
- m_ConditionEvent: GestureLeft
- m_EventTreshold: 1
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944289}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.02
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944204
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 7
- m_ConditionEvent: GestureLeft
- m_EventTreshold: 5
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944205}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.1
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1102 &9213968249993944205
-AnimatorState:
- serializedVersion: 6
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: RockNRoll reset
- m_Speed: 1
- m_CycleOffset: 0
- m_Transitions:
- - {fileID: 9213968249993944221}
- m_StateMachineBehaviours: []
- m_Position: {x: 264, y: 96, 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: GestureLeftWeight
---- !u!1102 &9213968249993944206
-AnimatorState:
- serializedVersion: 6
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: Fist + trigger 20% reset
- m_Speed: 1
- m_CycleOffset: 0
- m_Transitions:
- - {fileID: 9213968249993944207}
- - {fileID: 9213968249993944208}
- 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:
---- !u!1101 &9213968249993944207
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 4
- m_ConditionEvent: GestureLeftWeight
- m_EventTreshold: 0.05
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944200}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.02
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944208
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 3
- m_ConditionEvent: GestureLeftWeight
- m_EventTreshold: 0.05
- - m_ConditionMode: 6
- m_ConditionEvent: GestureLeft
- m_EventTreshold: 1
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944251}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.02
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944209
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 3
- m_ConditionEvent: GestureLeftWeight
- m_EventTreshold: 0.85
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944210}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.02
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1102 &9213968249993944210
-AnimatorState:
- serializedVersion: 6
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: Fist + trigger 90% 1
- m_Speed: 1
- m_CycleOffset: 0
- m_Transitions:
- - {fileID: 9213968249993944257}
- - {fileID: 9213968249993944258}
- 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:
---- !u!1102 &9213968249993944211
-AnimatorState:
- serializedVersion: 6
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: Fist + trigger 70% reset 1
- m_Speed: 1
- m_CycleOffset: 0
- m_Transitions:
- - {fileID: 9213968249993944212}
- - {fileID: 9213968249993944213}
- - {fileID: 9213968249993944214}
- - {fileID: 9213968249993944215}
- 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:
---- !u!1101 &9213968249993944212
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 4
- m_ConditionEvent: GestureLeftWeight
- m_EventTreshold: 0.55
- - m_ConditionMode: 3
- m_ConditionEvent: GestureLeftWeight
- m_EventTreshold: 0.45
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944231}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.02
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944213
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 3
- m_ConditionEvent: GestureLeftWeight
- m_EventTreshold: 0.55
- - m_ConditionMode: 6
- m_ConditionEvent: GestureLeft
- m_EventTreshold: 1
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944224}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.02
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944214
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 4
- m_ConditionEvent: GestureLeftWeight
- m_EventTreshold: 0.45
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944246}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.02
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944215
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 7
- m_ConditionEvent: GestureLeft
- m_EventTreshold: 1
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944246}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.02
- m_TransitionOffset: 0
- m_ExitTime: 0.75
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944216
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 3
- m_ConditionEvent: GestureLeftWeight
- m_EventTreshold: 0.15
- - m_ConditionMode: 6
- m_ConditionEvent: GestureLeft
- m_EventTreshold: 1
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944217}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.02
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1102 &9213968249993944217
-AnimatorState:
- serializedVersion: 6
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: Fist + trigger 20%
- m_Speed: 1
- m_CycleOffset: 0
- m_Transitions:
- - {fileID: 9213968249993944421}
- - {fileID: 9213968249993944272}
- 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:
---- !u!1102 &9213968249993944218
-AnimatorState:
- serializedVersion: 6
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: RockNRoll 0
- m_Speed: 1
- m_CycleOffset: 0
- m_Transitions: []
- m_StateMachineBehaviours: []
- m_Position: {x: 264, y: 96, z: 0}
- m_IKOnFeet: 0
- m_WriteDefaultValues: 1
- 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: GestureLeftWeight
---- !u!1101 &9213968249993944219
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 4
- m_ConditionEvent: GestureLeftWeight
- m_EventTreshold: 0.35
- - m_ConditionMode: 3
- m_ConditionEvent: GestureLeftWeight
- m_EventTreshold: 0.25
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944201}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.02
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944220
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 3
- m_ConditionEvent: GestureLeftWeight
- m_EventTreshold: 0.15
- - m_ConditionMode: 4
- m_ConditionEvent: GestureLeftWeight
- m_EventTreshold: 0.25
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944217}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.02
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944221
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 7
- m_ConditionEvent: GestureLeft
- m_EventTreshold: 5
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944239}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944222
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 7
- m_ConditionEvent: GestureLeft
- m_EventTreshold: 1
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944223}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.02
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1102 &9213968249993944223
-AnimatorState:
- serializedVersion: 6
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: Fist + trigger 30% reset
- m_Speed: 1
- m_CycleOffset: 0
- m_Transitions:
- - {fileID: 9213968249993944282}
- - {fileID: 9213968249993944216}
- - {fileID: 9213968249993944283}
- - {fileID: 9213968249993944277}
- 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:
---- !u!1102 &9213968249993944224
-AnimatorState:
- serializedVersion: 6
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: Fist + trigger 60% 1 0
- m_Speed: 1
- m_CycleOffset: 0
- m_Transitions:
- - {fileID: 9213968249993944420}
- - {fileID: 9213968249993944254}
- 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:
---- !u!1102 &9213968249993944225
-AnimatorState:
- serializedVersion: 6
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: Fist reset
- m_Speed: 1
- m_CycleOffset: 0
- m_Transitions:
- - {fileID: 9213968249993944226}
- - {fileID: 9213968249993944197}
- m_StateMachineBehaviours: []
- m_Position: {x: -60, y: 192, 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: GestureLeftWeight
---- !u!1101 &9213968249993944226
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 7
- m_ConditionEvent: GestureLeft
- m_EventTreshold: 1
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944239}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944227
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 7
- m_ConditionEvent: GestureLeft
- m_EventTreshold: 3
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944228}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.1
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1102 &9213968249993944228
-AnimatorState:
- serializedVersion: 6
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: Point reset
- m_Speed: 1
- m_CycleOffset: 0
- m_Transitions:
- - {fileID: 9213968249993944233}
- m_StateMachineBehaviours: []
- m_Position: {x: 264, y: 36, 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: GestureLeftWeight
---- !u!1101 &9213968249993944229
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 7
- m_ConditionEvent: GestureLeft
- m_EventTreshold: 1
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944225}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944230
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 6
- m_ConditionEvent: GestureLeft
- m_EventTreshold: 1
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944198}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1102 &9213968249993944231
-AnimatorState:
- serializedVersion: 6
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: Fist + trigger 60% reset 1 0
- m_Speed: 1
- m_CycleOffset: 0
- m_Transitions:
- - {fileID: 9213968249993944265}
- - {fileID: 9213968249993944263}
- 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:
---- !u!1101 &9213968249993944232
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions: []
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944211}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.25
- m_TransitionOffset: 0
- m_ExitTime: 0.75
- m_HasExitTime: 1
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944233
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 7
- m_ConditionEvent: GestureLeft
- m_EventTreshold: 3
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944239}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1102 &9213968249993944234
-AnimatorState:
- serializedVersion: 6
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: Peace reset
- m_Speed: 1
- m_CycleOffset: 0
- m_Transitions:
- - {fileID: 9213968249993944235}
- m_StateMachineBehaviours: []
- m_Position: {x: 264, y: 276, 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: GestureLeftWeight
---- !u!1101 &9213968249993944235
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 7
- m_ConditionEvent: GestureLeft
- m_EventTreshold: 4
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944239}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944236
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 7
- m_ConditionEvent: GestureLeft
- m_EventTreshold: 7
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944237}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.1
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1102 &9213968249993944237
-AnimatorState:
- serializedVersion: 6
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: Thumbs up reset
- m_Speed: 1
- m_CycleOffset: 0
- m_Transitions:
- - {fileID: 9213968249993944238}
- m_StateMachineBehaviours: []
- m_Position: {x: 264, y: 216, 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: GestureLeftWeight
---- !u!1101 &9213968249993944238
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 7
- m_ConditionEvent: GestureLeft
- m_EventTreshold: 7
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944239}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1102 &9213968249993944239
-AnimatorState:
- serializedVersion: 6
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: Idle
- m_Speed: 1
- m_CycleOffset: 0
- m_Transitions:
- - {fileID: 9213968249993944260}
- - {fileID: 9213968249993944324}
- - {fileID: 9213968249993944273}
- - {fileID: 9213968249993944409}
- - {fileID: 9213968249993944243}
- - {fileID: 9213968249993944410}
- - {fileID: 9213968249993944261}
- 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: GestureLeftWeight
---- !u!1102 &9213968249993944240
-AnimatorState:
- serializedVersion: 6
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: Fist + trigger 70% 1
- m_Speed: 1
- m_CycleOffset: 0
- m_Transitions:
- - {fileID: 9213968249993944241}
- - {fileID: 9213968249993944209}
- - {fileID: 9213968249993944242}
- 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:
---- !u!1101 &9213968249993944241
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 4
- m_ConditionEvent: GestureLeftWeight
- m_EventTreshold: 0.65
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944211}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.02
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944242
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 3
- m_ConditionEvent: GestureLeftWeight
- m_EventTreshold: 0.75
- - m_ConditionMode: 4
- m_ConditionEvent: GestureLeftWeight
- m_EventTreshold: 0.85
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944247}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.02
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944243
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 6
- m_ConditionEvent: GestureLeft
- m_EventTreshold: 5
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944244}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.1
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1102 &9213968249993944244
-AnimatorState:
- serializedVersion: 6
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: RockNRoll
- m_Speed: 1
- m_CycleOffset: 0
- m_Transitions:
- - {fileID: 9213968249993944204}
- m_StateMachineBehaviours: []
- m_Position: {x: 264, y: 96, 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: GestureLeftWeight
---- !u!1101 &9213968249993944245
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 7
- m_ConditionEvent: GestureLeft
- m_EventTreshold: 1
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944246}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.02
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1102 &9213968249993944246
-AnimatorState:
- serializedVersion: 6
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: Fist + trigger 50% reset
- m_Speed: 1
- m_CycleOffset: 0
- m_Transitions:
- - {fileID: 9213968249993944219}
- - {fileID: 9213968249993944270}
- - {fileID: 9213968249993944222}
- - {fileID: 9213968249993944278}
- - {fileID: 9213968249993944279}
- - {fileID: 9213968249993944280}
- 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:
---- !u!1102 &9213968249993944247
-AnimatorState:
- serializedVersion: 6
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: Fist + trigger 80% 1
- m_Speed: 1
- m_CycleOffset: 0
- m_Transitions:
- - {fileID: 9213968249993944248}
- - {fileID: 9213968249993944249}
- 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:
---- !u!1101 &9213968249993944248
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 4
- m_ConditionEvent: GestureLeftWeight
- m_EventTreshold: 0.75
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944266}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.02
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944249
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 3
- m_ConditionEvent: GestureLeftWeight
- m_EventTreshold: 0.85
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944210}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.02
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944250
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 3
- m_ConditionEvent: GestureLeftWeight
- m_EventTreshold: 0.05
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944251}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.02
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1102 &9213968249993944251
-AnimatorState:
- serializedVersion: 6
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: Fist + trigger 10%
- m_Speed: 1
- m_CycleOffset: 0
- m_Transitions:
- - {fileID: 9213968249993944220}
- - {fileID: 9213968249993944199}
- - {fileID: 9213968249993944252}
- - {fileID: 9213968249993944253}
- 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:
---- !u!1101 &9213968249993944252
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 3
- m_ConditionEvent: GestureLeftWeight
- m_EventTreshold: 0.25
- - m_ConditionMode: 4
- m_ConditionEvent: GestureLeftWeight
- m_EventTreshold: 0.45
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944289}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.02
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944253
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 3
- m_ConditionEvent: GestureLeftWeight
- m_EventTreshold: 0.45
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944264}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.02
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944254
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 3
- m_ConditionEvent: GestureLeftWeight
- m_EventTreshold: 0.65
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944240}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.02
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1102 &9213968249993944255
-AnimatorState:
- serializedVersion: 6
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: Open reset
- m_Speed: 1
- m_CycleOffset: 0
- m_Transitions:
- - {fileID: 9213968249993944256}
- m_StateMachineBehaviours: []
- m_Position: {x: 264, y: 156, 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: GestureLeftWeight
---- !u!1101 &9213968249993944256
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 7
- m_ConditionEvent: GestureLeft
- m_EventTreshold: 2
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944239}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944257
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 7
- m_ConditionEvent: GestureLeft
- m_EventTreshold: 1
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944323}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.01
- m_TransitionOffset: 0
- m_ExitTime: 0.75
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944258
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 4
- m_ConditionEvent: GestureLeftWeight
- m_EventTreshold: 0.85
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944323}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.02
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944259
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 7
- m_ConditionEvent: GestureLeft
- m_EventTreshold: 1
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944225}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944260
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 6
- m_ConditionEvent: GestureLeft
- m_EventTreshold: 1
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944198}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944261
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 6
- m_ConditionEvent: GestureLeft
- m_EventTreshold: 7
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944262}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.1
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1102 &9213968249993944262
-AnimatorState:
- serializedVersion: 6
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: Thumbs up
- m_Speed: 1
- m_CycleOffset: 0
- m_Transitions:
- - {fileID: 9213968249993944236}
- m_StateMachineBehaviours: []
- m_Position: {x: 264, y: 216, 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: GestureLeftWeight
---- !u!1101 &9213968249993944263
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 3
- m_ConditionEvent: GestureLeftWeight
- m_EventTreshold: 0.45
- - m_ConditionMode: 6
- m_ConditionEvent: GestureLeft
- m_EventTreshold: 1
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944264}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.02
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1102 &9213968249993944264
-AnimatorState:
- serializedVersion: 6
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: Fist + trigger 50%
- m_Speed: 1
- m_CycleOffset: 0
- m_Transitions:
- - {fileID: 9213968249993944360}
- - {fileID: 9213968249993944287}
- - {fileID: 9213968249993944427}
- - {fileID: 9213968249993944428}
- 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:
---- !u!1101 &9213968249993944265
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 4
- m_ConditionEvent: GestureLeftWeight
- m_EventTreshold: 0.45
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944246}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.02
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1102 &9213968249993944266
-AnimatorState:
- serializedVersion: 6
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: Fist + trigger 80% reset 1
- m_Speed: 1
- m_CycleOffset: 0
- m_Transitions:
- - {fileID: 9213968249993944267}
- - {fileID: 9213968249993944268}
- 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:
---- !u!1101 &9213968249993944267
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 4
- m_ConditionEvent: GestureLeftWeight
- m_EventTreshold: 0.65
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944211}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.02
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944268
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 3
- m_ConditionEvent: GestureLeftWeight
- m_EventTreshold: 0.65
- - m_ConditionMode: 6
- m_ConditionEvent: GestureLeft
- m_EventTreshold: 1
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944240}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.02
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944269
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 7
- m_ConditionEvent: GestureLeft
- m_EventTreshold: 1
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944225}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944270
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 3
- m_ConditionEvent: GestureLeftWeight
- m_EventTreshold: 0.35
- - m_ConditionMode: 6
- m_ConditionEvent: GestureLeft
- m_EventTreshold: 1
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944271}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.02
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1102 &9213968249993944271
-AnimatorState:
- serializedVersion: 6
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: Fist + trigger 40%
- m_Speed: 1
- m_CycleOffset: 0
- m_Transitions:
- - {fileID: 9213968249993944358}
- - {fileID: 9213968249993944359}
- 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:
---- !u!1101 &9213968249993944272
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 4
- m_ConditionEvent: GestureLeftWeight
- m_EventTreshold: 0.15
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944206}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.02
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944273
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 6
- m_ConditionEvent: GestureLeft
- m_EventTreshold: 3
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944274}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.1
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1102 &9213968249993944274
-AnimatorState:
- serializedVersion: 6
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: Point
- m_Speed: 1
- m_CycleOffset: 0
- m_Transitions:
- - {fileID: 9213968249993944227}
- m_StateMachineBehaviours: []
- m_Position: {x: 264, y: 36, 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: GestureLeftWeight
---- !u!1101 &9213968249993944275
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 3
- m_ConditionEvent: GestureLeftWeight
- m_EventTreshold: 0.45
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944264}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.02
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1102 &9213968249993944276
-AnimatorState:
- serializedVersion: 6
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: Point 0
- m_Speed: 1
- m_CycleOffset: 0
- m_Transitions: []
- m_StateMachineBehaviours: []
- m_Position: {x: 264, y: 36, z: 0}
- m_IKOnFeet: 0
- m_WriteDefaultValues: 1
- 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: GestureLeftWeight
---- !u!1101 &9213968249993944277
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 4
- m_ConditionEvent: GestureLeftWeight
- m_EventTreshold: 0.05
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944200}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.02
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944278
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 4
- m_ConditionEvent: GestureLeftWeight
- m_EventTreshold: 0.25
- - m_ConditionMode: 3
- m_ConditionEvent: GestureLeftWeight
- m_EventTreshold: 0.05
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944223}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.02
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944279
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 7
- m_ConditionEvent: GestureLeft
- m_EventTreshold: 1
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944200}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.02
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944280
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 4
- m_ConditionEvent: GestureLeftWeight
- m_EventTreshold: 0.05
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944200}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.02
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944281
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 7
- m_ConditionEvent: GestureLeft
- m_EventTreshold: 1
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944225}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.1
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944282
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 4
- m_ConditionEvent: GestureLeftWeight
- m_EventTreshold: 0.15
- - m_ConditionMode: 3
- m_ConditionEvent: GestureLeftWeight
- m_EventTreshold: 0.05
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944206}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.02
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944283
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 7
- m_ConditionEvent: GestureLeft
- m_EventTreshold: 1
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944200}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.02
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1102 &9213968249993944284
-AnimatorState:
- serializedVersion: 6
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: Gun reset
- m_Speed: 1
- m_CycleOffset: 0
- m_Transitions:
- - {fileID: 9213968249993944285}
- m_StateMachineBehaviours: []
- m_Position: {x: 264, y: 336, 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: GestureLeftWeight
---- !u!1101 &9213968249993944285
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 7
- m_ConditionEvent: GestureLeft
- m_EventTreshold: 6
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944239}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1102 &9213968249993944286
-AnimatorState:
- serializedVersion: 6
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: Thumbs up 0
- m_Speed: 1
- m_CycleOffset: 0
- m_Transitions: []
- m_StateMachineBehaviours: []
- m_Position: {x: 264, y: 216, z: 0}
- m_IKOnFeet: 0
- m_WriteDefaultValues: 1
- 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: GestureLeftWeight
---- !u!1101 &9213968249993944287
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 3
- m_ConditionEvent: GestureLeftWeight
- m_EventTreshold: 0.65
- - m_ConditionMode: 4
- m_ConditionEvent: GestureLeftWeight
- m_EventTreshold: 0.85
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944240}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.02
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944288
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 6
- m_ConditionEvent: GestureLeft
- m_EventTreshold: 1
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944198}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1102 &9213968249993944289
-AnimatorState:
- serializedVersion: 6
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: Fist + trigger 30%
- m_Speed: 1
- m_CycleOffset: 0
- m_Transitions:
- - {fileID: 9213968249993944422}
- - {fileID: 9213968249993944430}
- - {fileID: 9213968249993944275}
- 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:
---- !u!1101 &9213968249993944290
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 7
- m_ConditionEvent: GestureLeft
- m_EventTreshold: 4
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944234}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.1
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!206 &9213968249993944291
-BlendTree:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: BlendTree
- m_Childs: []
- m_BlendParameter: HeightScale
- m_BlendParameterY: Blend
- m_MinThreshold: 0
- m_MaxThreshold: 1
- m_UseAutomaticThresholds: 1
- m_NormalizedBlendValues: 0
- m_BlendType: 0
---- !u!206 &9213968249993944292
-BlendTree:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: CrouchingLocomotion
- m_Childs:
- - serializedVersion: 2
- m_Motion: {fileID: 7400026, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0
- m_Position: {x: 0, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400024, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.25
- m_Position: {x: 0, y: 0.5}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400024, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.5
- m_Position: {x: 0, y: -0.5}
- m_TimeScale: -1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400028, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.75
- m_Position: {x: -0.5, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0.5
- m_DirectBlendParameter: MovementZ
- m_Mirror: 1
- - serializedVersion: 2
- m_Motion: {fileID: 7400028, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 1
- m_Position: {x: 0.5, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- m_BlendParameter: MovementX
- m_BlendParameterY: MovementZ
- m_MinThreshold: 0
- m_MaxThreshold: 1
- m_UseAutomaticThresholds: 1
- m_NormalizedBlendValues: 0
- m_BlendType: 2
---- !u!206 &9213968249993944293
-BlendTree:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: Prone2
- m_Childs:
- - serializedVersion: 2
- m_Motion: {fileID: 7400012, guid: 3c25f9a310357dc4d857376a700f6758, type: 3}
- m_Threshold: 0
- m_Position: {x: 0, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementX
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400010, guid: 3c25f9a310357dc4d857376a700f6758, type: 3}
- m_Threshold: 0.25
- m_Position: {x: 0, y: 1}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementX
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400010, guid: 3c25f9a310357dc4d857376a700f6758, type: 3}
- m_Threshold: 0.5
- m_Position: {x: 0, y: -1}
- m_TimeScale: -1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementX
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400010, guid: 3c25f9a310357dc4d857376a700f6758, type: 3}
- m_Threshold: 0.75
- m_Position: {x: 1, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementX
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400010, guid: 3c25f9a310357dc4d857376a700f6758, type: 3}
- m_Threshold: 1
- m_Position: {x: -1, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0.5
- m_DirectBlendParameter: MovementX
- m_Mirror: 1
- m_BlendParameter: MovementX
- m_BlendParameterY: MovementZ
- m_MinThreshold: 0
- m_MaxThreshold: 1
- m_UseAutomaticThresholds: 1
- m_NormalizedBlendValues: 0
- m_BlendType: 1
---- !u!206 &9213968249993944294
-BlendTree:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: Blend Tree
- m_Childs:
- - serializedVersion: 2
- m_Motion: {fileID: 7400012, guid: 3c25f9a310357dc4d857376a700f6758, type: 3}
- m_Threshold: 0.3
- m_Position: {x: 0, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementX
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400090, guid: 2dc9666c890a37946b1fbb67941e523d, type: 3}
- m_Threshold: 0.65
- m_Position: {x: 0, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400002, guid: 6844dcb6a866ab34fa96c67e39eab693, type: 3}
- m_Threshold: 1
- m_Position: {x: 0, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementX
- m_Mirror: 0
- m_BlendParameter: HeightScaleNOMOVE
- m_BlendParameterY: MovementZ
- m_MinThreshold: 0.3
- m_MaxThreshold: 1
- m_UseAutomaticThresholds: 0
- m_NormalizedBlendValues: 0
- m_BlendType: 0
---- !u!206 &9213968249993944295
-BlendTree:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: BlendTree
- m_Childs: []
- m_BlendParameter: HeightScale
- m_BlendParameterY: Blend
- m_MinThreshold: 0
- m_MaxThreshold: 1
- m_UseAutomaticThresholds: 1
- m_NormalizedBlendValues: 0
- m_BlendType: 0
---- !u!206 &9213968249993944296
-BlendTree:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: StandingLocomotion
- m_Childs:
- - serializedVersion: 2
- m_Motion: {fileID: 7400030, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0
- m_Position: {x: 0, y: 5.96}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400032, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.05882353
- m_Position: {x: 0, y: 3.4}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400034, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.11764706
- m_Position: {x: 0, y: 1.56}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400002, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.1764706
- m_Position: {x: 0, y: 0}
- m_TimeScale: 0.166
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400068, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.23529412
- m_Position: {x: 0, y: -1.56}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400036, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.29411766
- m_Position: {x: 0, y: -2.1}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400038, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.3529412
- m_Position: {x: -3, y: 0}
- m_TimeScale: 2
- m_CycleOffset: 0.5
- m_DirectBlendParameter: MovementZ
- m_Mirror: 1
- - serializedVersion: 2
- m_Motion: {fileID: 7400038, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.4117647
- m_Position: {x: -1.56, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0.5
- m_DirectBlendParameter: MovementZ
- m_Mirror: 1
- - serializedVersion: 2
- m_Motion: {fileID: 7400038, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.47058824
- m_Position: {x: 1.56, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400038, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.5294118
- m_Position: {x: 3, y: 0}
- m_TimeScale: 2
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400040, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.5882353
- m_Position: {x: -1.1, y: -1.1}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400042, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.64705884
- m_Position: {x: 1.1, y: -1.1}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400044, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.7058824
- m_Position: {x: -1.1, y: 1.1}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400046, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.7647059
- m_Position: {x: 1.1, y: 1.1}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400048, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.8235294
- m_Position: {x: -2.44, y: 2.44}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400050, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.88235295
- m_Position: {x: 2.4, y: 2.44}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400070, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.9411765
- m_Position: {x: -1.5, y: -1.5}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400072, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 1
- m_Position: {x: 1.5, y: -1.5}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- m_BlendParameter: MovementX
- m_BlendParameterY: MovementZ
- m_MinThreshold: 0
- m_MaxThreshold: 1
- m_UseAutomaticThresholds: 1
- m_NormalizedBlendValues: 0
- m_BlendType: 2
---- !u!206 &9213968249993944297
-BlendTree:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: ProneLocomotion
- m_Childs:
- - serializedVersion: 2
- m_Motion: {fileID: 7400004, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0
- m_Position: {x: 0, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementX
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400066, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.25
- m_Position: {x: 0, y: 1}
- m_TimeScale: 2
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementX
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400066, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.5
- m_Position: {x: 0, y: -1}
- m_TimeScale: -2
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementX
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400066, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.75
- m_Position: {x: 1, y: 0}
- m_TimeScale: 2
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementX
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400066, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 1
- m_Position: {x: -1, y: 0}
- m_TimeScale: 2
- m_CycleOffset: 0.5
- m_DirectBlendParameter: MovementX
- m_Mirror: 1
- m_BlendParameter: MovementX
- m_BlendParameterY: MovementZ
- m_MinThreshold: 0
- m_MaxThreshold: 1
- m_UseAutomaticThresholds: 0
- m_NormalizedBlendValues: 0
- m_BlendType: 1
---- !u!1101 &9213968249993944298
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions: []
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 0}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.25
- m_TransitionOffset: 0
- m_ExitTime: 0.8947368
- m_HasExitTime: 1
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944299
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 6
- m_ConditionEvent: HandGestureLeft
- m_EventTreshold: 1
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944300}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 4
- m_TransitionOffset: 0
- m_ExitTime: 0.9
- m_HasExitTime: 0
- m_HasFixedDuration: 0
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1102 &9213968249993944300
-AnimatorState:
- serializedVersion: 6
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: Palm 0
- m_Speed: 1
- m_CycleOffset: 0
- m_Transitions: []
- m_StateMachineBehaviours: []
- m_Position: {x: 264, y: 156, z: 0}
- m_IKOnFeet: 0
- m_WriteDefaultValues: 1
- 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:
---- !u!1101 &9213968249993944301
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 6
- m_ConditionEvent: HandGestureLeft
- m_EventTreshold: 3
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944302}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 4
- m_TransitionOffset: 0
- m_ExitTime: 0.9
- m_HasExitTime: 0
- m_HasFixedDuration: 0
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1102 &9213968249993944302
-AnimatorState:
- serializedVersion: 6
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: Peace 0
- m_Speed: 1
- m_CycleOffset: 0
- m_Transitions: []
- m_StateMachineBehaviours: []
- m_Position: {x: 264, y: 276, z: 0}
- m_IKOnFeet: 0
- m_WriteDefaultValues: 1
- 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:
---- !u!1101 &9213968249993944303
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 6
- m_ConditionEvent: HandGestureLeft
- m_EventTreshold: 5
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944304}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 4
- m_TransitionOffset: 0
- m_ExitTime: 0.9
- m_HasExitTime: 0
- m_HasFixedDuration: 0
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1102 &9213968249993944304
-AnimatorState:
- serializedVersion: 6
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: Gun 0
- m_Speed: 1
- m_CycleOffset: 0
- m_Transitions: []
- m_StateMachineBehaviours: []
- m_Position: {x: 264, y: 336, z: 0}
- m_IKOnFeet: 0
- m_WriteDefaultValues: 1
- 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:
---- !u!1101 &9213968249993944305
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 6
- m_ConditionEvent: HandGestureLeft
- m_EventTreshold: 2
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944306}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 4
- m_TransitionOffset: 0
- m_ExitTime: 0.9
- m_HasExitTime: 0
- m_HasFixedDuration: 0
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1102 &9213968249993944306
-AnimatorState:
- serializedVersion: 6
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: Point 0
- m_Speed: 1
- m_CycleOffset: 0
- m_Transitions: []
- m_StateMachineBehaviours: []
- m_Position: {x: 264, y: 36, z: 0}
- m_IKOnFeet: 0
- m_WriteDefaultValues: 1
- 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:
---- !u!1101 &9213968249993944307
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 6
- m_ConditionEvent: HandGestureLeft
- m_EventTreshold: 0
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944308}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 4
- m_TransitionOffset: 0
- m_ExitTime: 0.9
- m_HasExitTime: 0
- m_HasFixedDuration: 0
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1102 &9213968249993944308
-AnimatorState:
- serializedVersion: 6
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: Fist 0
- m_Speed: 1
- m_CycleOffset: 0
- m_Transitions: []
- m_StateMachineBehaviours: []
- m_Position: {x: -60, y: 192, z: 0}
- m_IKOnFeet: 0
- m_WriteDefaultValues: 1
- 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:
---- !u!1101 &9213968249993944309
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 6
- m_ConditionEvent: HandGestureLeft
- m_EventTreshold: 4
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944310}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 4
- m_TransitionOffset: 0
- m_ExitTime: 0.9
- m_HasExitTime: 0
- m_HasFixedDuration: 0
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1102 &9213968249993944310
-AnimatorState:
- serializedVersion: 6
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: RockNRoll 0
- m_Speed: 1
- m_CycleOffset: 0
- m_Transitions: []
- m_StateMachineBehaviours: []
- m_Position: {x: 264, y: 96, z: 0}
- m_IKOnFeet: 0
- m_WriteDefaultValues: 1
- 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:
---- !u!1101 &9213968249993944311
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 6
- m_ConditionEvent: HandGestureLeft
- m_EventTreshold: 6
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944312}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 4
- m_TransitionOffset: 0
- m_ExitTime: 0.9
- m_HasExitTime: 0
- m_HasFixedDuration: 0
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1102 &9213968249993944312
-AnimatorState:
- serializedVersion: 6
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: Thumbs up 0
- m_Speed: 1
- m_CycleOffset: 0
- m_Transitions: []
- m_StateMachineBehaviours: []
- m_Position: {x: 264, y: 216, z: 0}
- m_IKOnFeet: 0
- m_WriteDefaultValues: 1
- 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:
---- !u!1101 &9213968249993944313
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: EmoteExit
- m_Conditions: []
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 0}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 1
- serializedVersion: 3
- m_TransitionDuration: 0.25
- m_TransitionOffset: 0
- m_ExitTime: 0.9423077
- m_HasExitTime: 1
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944314
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions: []
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 0}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 1
- serializedVersion: 3
- m_TransitionDuration: 0.25
- m_TransitionOffset: 0
- m_ExitTime: 0.82558143
- m_HasExitTime: 1
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1102 &9213968249993944315
-AnimatorState:
- serializedVersion: 6
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: Blend Tree
- m_Speed: 1
- m_CycleOffset: 0
- m_Transitions: []
- m_StateMachineBehaviours: []
- m_Position: {x: 120, y: 36, z: 0}
- m_IKOnFeet: 1
- m_WriteDefaultValues: 1
- 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:
---- !u!1102 &9213968249993944316
-AnimatorState:
- serializedVersion: 6
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: Blend Tree
- m_Speed: 1
- m_CycleOffset: 0
- m_Transitions: []
- m_StateMachineBehaviours: []
- m_Position: {x: 120, y: 36, z: 0}
- m_IKOnFeet: 1
- m_WriteDefaultValues: 1
- 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:
---- !u!1102 &9213968249993944317
-AnimatorState:
- serializedVersion: 6
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: Blend Tree
- m_Speed: 1
- m_CycleOffset: 0
- m_Transitions: []
- m_StateMachineBehaviours: []
- m_Position: {x: 120, y: 36, z: 0}
- m_IKOnFeet: 1
- m_WriteDefaultValues: 1
- 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:
---- !u!1102 &9213968249993944318
-AnimatorState:
- serializedVersion: 6
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: Blend Tree
- m_Speed: 1
- m_CycleOffset: 0
- m_Transitions: []
- m_StateMachineBehaviours: []
- m_Position: {x: 120, y: 36, z: 0}
- m_IKOnFeet: 1
- m_WriteDefaultValues: 1
- 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:
---- !u!1102 &9213968249993944319
-AnimatorState:
- serializedVersion: 6
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: Blend Tree
- m_Speed: 1
- m_CycleOffset: 0
- m_Transitions: []
- m_StateMachineBehaviours: []
- m_Position: {x: 120, y: 36, z: 0}
- m_IKOnFeet: 1
- m_WriteDefaultValues: 1
- 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:
---- !u!1102 &9213968249993944320
-AnimatorState:
- serializedVersion: 6
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: Open
- m_Speed: 1
- m_CycleOffset: 0
- m_Transitions:
- - {fileID: 9213968249993944408}
- m_StateMachineBehaviours: []
- m_Position: {x: 264, y: 156, 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: GestureLeftWeight
---- !u!1102 &9213968249993944321
-AnimatorState:
- serializedVersion: 6
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: Peace
- m_Speed: 1
- m_CycleOffset: 0
- m_Transitions:
- - {fileID: 9213968249993944290}
- m_StateMachineBehaviours: []
- m_Position: {x: 264, y: 276, 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: GestureLeftWeight
---- !u!1102 &9213968249993944322
-AnimatorState:
- serializedVersion: 6
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: Gun
- m_Speed: 1
- m_CycleOffset: 0
- m_Transitions:
- - {fileID: 9213968249993944407}
- m_StateMachineBehaviours: []
- m_Position: {x: 264, y: 336, 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: GestureLeftWeight
---- !u!1102 &9213968249993944323
-AnimatorState:
- serializedVersion: 6
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: Fist + trigger 90% reset 1
- m_Speed: 1
- m_CycleOffset: 0
- m_Transitions:
- - {fileID: 9213968249993944357}
- - {fileID: 9213968249993944423}
- - {fileID: 9213968249993944356}
- - {fileID: 9213968249993944424}
- - {fileID: 9213968249993944425}
- - {fileID: 9213968249993944245}
- 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:
---- !u!1101 &9213968249993944324
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 6
- m_ConditionEvent: GestureLeft
- m_EventTreshold: 2
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944320}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.1
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!114 &9213968249993944325
-MonoBehaviour:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 0}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: b658310f3202fc64aac64aa6e603b79a, type: 3}
- m_Name:
- m_EditorClassIdentifier:
---- !u!206 &9213968249993944326
-BlendTree:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: StandingLocomotion
- m_Childs:
- - serializedVersion: 2
- m_Motion: {fileID: 7400030, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0
- m_Position: {x: 0, y: 5.96}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400032, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.05882353
- m_Position: {x: 0, y: 3.4}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400034, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.11764706
- m_Position: {x: 0, y: 1.56}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400002, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.1764706
- m_Position: {x: 0, y: 0}
- m_TimeScale: 0.166
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400068, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.23529412
- m_Position: {x: 0, y: -1.56}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400036, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.29411766
- m_Position: {x: 0, y: -2.1}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400038, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.3529412
- m_Position: {x: -3, y: 0}
- m_TimeScale: 2
- m_CycleOffset: 0.5
- m_DirectBlendParameter: MovementZ
- m_Mirror: 1
- - serializedVersion: 2
- m_Motion: {fileID: 7400038, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.4117647
- m_Position: {x: -1.56, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0.5
- m_DirectBlendParameter: MovementZ
- m_Mirror: 1
- - serializedVersion: 2
- m_Motion: {fileID: 7400038, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.47058824
- m_Position: {x: 1.56, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400038, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.5294118
- m_Position: {x: 3, y: 0}
- m_TimeScale: 2
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400040, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.5882353
- m_Position: {x: -1.1, y: -1.1}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400042, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.64705884
- m_Position: {x: 1.1, y: -1.1}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400044, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.7058824
- m_Position: {x: -1.1, y: 1.1}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400046, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.7647059
- m_Position: {x: 1.1, y: 1.1}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400048, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.8235294
- m_Position: {x: -2.44, y: 2.44}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400050, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.88235295
- m_Position: {x: 2.4, y: 2.44}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400070, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.9411765
- m_Position: {x: -1.5, y: -1.5}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400072, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 1
- m_Position: {x: 1.5, y: -1.5}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- m_BlendParameter: MovementX
- m_BlendParameterY: MovementZ
- m_MinThreshold: 0
- m_MaxThreshold: 1
- m_UseAutomaticThresholds: 1
- m_NormalizedBlendValues: 0
- m_BlendType: 2
---- !u!206 &9213968249993944327
-BlendTree:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: StandingLocomotion
- m_Childs:
- - serializedVersion: 2
- m_Motion: {fileID: 7400030, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0
- m_Position: {x: 0, y: 5.96}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400032, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.05882353
- m_Position: {x: 0, y: 3.4}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400034, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.11764706
- m_Position: {x: 0, y: 1.56}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400002, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.1764706
- m_Position: {x: 0, y: 0}
- m_TimeScale: 0.166
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400068, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.23529412
- m_Position: {x: 0, y: -1.56}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400036, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.29411766
- m_Position: {x: 0, y: -2.1}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400038, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.3529412
- m_Position: {x: -3, y: 0}
- m_TimeScale: 2
- m_CycleOffset: 0.5
- m_DirectBlendParameter: MovementZ
- m_Mirror: 1
- - serializedVersion: 2
- m_Motion: {fileID: 7400038, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.4117647
- m_Position: {x: -1.56, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0.5
- m_DirectBlendParameter: MovementZ
- m_Mirror: 1
- - serializedVersion: 2
- m_Motion: {fileID: 7400038, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.47058824
- m_Position: {x: 1.56, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400038, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.5294118
- m_Position: {x: 3, y: 0}
- m_TimeScale: 2
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400040, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.5882353
- m_Position: {x: -1.1, y: -1.1}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400042, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.64705884
- m_Position: {x: 1.1, y: -1.1}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400044, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.7058824
- m_Position: {x: -1.1, y: 1.1}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400046, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.7647059
- m_Position: {x: 1.1, y: 1.1}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400048, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.8235294
- m_Position: {x: -2.44, y: 2.44}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400050, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.88235295
- m_Position: {x: 2.4, y: 2.44}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400070, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.9411765
- m_Position: {x: -1.5, y: -1.5}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400072, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 1
- m_Position: {x: 1.5, y: -1.5}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- m_BlendParameter: MovementX
- m_BlendParameterY: MovementZ
- m_MinThreshold: 0
- m_MaxThreshold: 1
- m_UseAutomaticThresholds: 1
- m_NormalizedBlendValues: 0
- m_BlendType: 2
---- !u!206 &9213968249993944328
-BlendTree:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: Blend Tree
- m_Childs: []
- m_BlendParameter: MovementX
- m_BlendParameterY: MovementX
- m_MinThreshold: 0
- m_MaxThreshold: 1
- m_UseAutomaticThresholds: 1
- m_NormalizedBlendValues: 0
- m_BlendType: 0
---- !u!206 &9213968249993944329
-BlendTree:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: LocomotionHeightBlend
- m_Childs:
- - serializedVersion: 2
- m_Motion: {fileID: 9213968249993944330}
- m_Threshold: 0.5
- m_Position: {x: 0, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementX
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 9213968249993944331}
- m_Threshold: 0.68
- m_Position: {x: 0, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 9213968249993944332}
- m_Threshold: 1
- m_Position: {x: 0, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- m_BlendParameter: Upright
- m_BlendParameterY: MovementZ
- m_MinThreshold: 0.5
- m_MaxThreshold: 1
- m_UseAutomaticThresholds: 0
- m_NormalizedBlendValues: 0
- m_BlendType: 0
---- !u!206 &9213968249993944330
-BlendTree:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: ProneLocomotion
- m_Childs:
- - serializedVersion: 2
- m_Motion: {fileID: 7400004, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0
- m_Position: {x: 0, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementX
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400066, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.25
- m_Position: {x: 0, y: 0.1}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementX
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400066, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.5
- m_Position: {x: 0, y: -0.1}
- m_TimeScale: -1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementX
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400066, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.75
- m_Position: {x: 0.1, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementX
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400066, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 1
- m_Position: {x: -0.1, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0.5
- m_DirectBlendParameter: MovementX
- m_Mirror: 1
- m_BlendParameter: MovementX
- m_BlendParameterY: MovementZ
- m_MinThreshold: 0
- m_MaxThreshold: 1
- m_UseAutomaticThresholds: 0
- m_NormalizedBlendValues: 0
- m_BlendType: 1
---- !u!206 &9213968249993944331
-BlendTree:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: CrouchingLocomotion
- m_Childs:
- - serializedVersion: 2
- m_Motion: {fileID: 7400026, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0
- m_Position: {x: 0, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400024, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.25
- m_Position: {x: 0, y: 0.5}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400024, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.5
- m_Position: {x: 0, y: -0.5}
- m_TimeScale: -1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400028, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.75
- m_Position: {x: -0.5, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0.5
- m_DirectBlendParameter: MovementZ
- m_Mirror: 1
- - serializedVersion: 2
- m_Motion: {fileID: 7400028, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 1
- m_Position: {x: 0.5, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- m_BlendParameter: MovementX
- m_BlendParameterY: MovementZ
- m_MinThreshold: 0
- m_MaxThreshold: 1
- m_UseAutomaticThresholds: 1
- m_NormalizedBlendValues: 0
- m_BlendType: 2
---- !u!206 &9213968249993944332
-BlendTree:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: StandingLocomotion
- m_Childs:
- - serializedVersion: 2
- m_Motion: {fileID: 7400030, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0
- m_Position: {x: 0, y: 5.96}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400032, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.05882353
- m_Position: {x: 0, y: 3.4}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400034, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.11764706
- m_Position: {x: 0, y: 1.56}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400002, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.1764706
- m_Position: {x: 0, y: 0}
- m_TimeScale: 0.166
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400068, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.23529412
- m_Position: {x: 0, y: -1.56}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400036, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.29411766
- m_Position: {x: 0, y: -2.1}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400038, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.3529412
- m_Position: {x: -3, y: 0}
- m_TimeScale: 2
- m_CycleOffset: 0.5
- m_DirectBlendParameter: MovementZ
- m_Mirror: 1
- - serializedVersion: 2
- m_Motion: {fileID: 7400038, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.4117647
- m_Position: {x: -1.56, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0.5
- m_DirectBlendParameter: MovementZ
- m_Mirror: 1
- - serializedVersion: 2
- m_Motion: {fileID: 7400038, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.47058824
- m_Position: {x: 1.56, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400038, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.5294118
- m_Position: {x: 3, y: 0}
- m_TimeScale: 2
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400040, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.5882353
- m_Position: {x: -1.1, y: -1.1}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400042, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.64705884
- m_Position: {x: 1.1, y: -1.1}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400044, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.7058824
- m_Position: {x: -1.1, y: 1.1}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400046, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.7647059
- m_Position: {x: 1.1, y: 1.1}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400048, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.8235294
- m_Position: {x: -2.44, y: 2.44}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400050, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.88235295
- m_Position: {x: 2.4, y: 2.44}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400070, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.9411765
- m_Position: {x: -1.5, y: -1.5}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400072, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 1
- m_Position: {x: 1.5, y: -1.5}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- m_BlendParameter: MovementX
- m_BlendParameterY: MovementZ
- m_MinThreshold: 0
- m_MaxThreshold: 1
- m_UseAutomaticThresholds: 1
- m_NormalizedBlendValues: 0
- m_BlendType: 2
---- !u!206 &9213968249993944333
-BlendTree:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: ProneLocomotion
- m_Childs:
- - serializedVersion: 2
- m_Motion: {fileID: 7400004, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0
- m_Position: {x: 0, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementX
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400066, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.25
- m_Position: {x: 0, y: 0.1}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementX
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400066, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.5
- m_Position: {x: 0, y: -0.1}
- m_TimeScale: -1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementX
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400066, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.75
- m_Position: {x: 0.1, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementX
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400066, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 1
- m_Position: {x: -0.1, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0.5
- m_DirectBlendParameter: MovementX
- m_Mirror: 1
- m_BlendParameter: MovementX
- m_BlendParameterY: MovementZ
- m_MinThreshold: 0
- m_MaxThreshold: 1
- m_UseAutomaticThresholds: 0
- m_NormalizedBlendValues: 0
- m_BlendType: 1
---- !u!206 &9213968249993944334
-BlendTree:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: Blend Tree
- m_Childs: []
- m_BlendParameter: LocomotionX
- m_BlendParameterY: LocomotionX
- m_MinThreshold: 0
- m_MaxThreshold: 1
- m_UseAutomaticThresholds: 1
- m_NormalizedBlendValues: 0
- m_BlendType: 0
---- !u!206 &9213968249993944335
-BlendTree:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: StandingLocomotion
- m_Childs:
- - serializedVersion: 2
- m_Motion: {fileID: 7400030, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0
- m_Position: {x: 0, y: 5.96}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400032, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.05882353
- m_Position: {x: 0, y: 3.4}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400034, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.11764706
- m_Position: {x: 0, y: 1.56}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400002, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.1764706
- m_Position: {x: 0, y: 0}
- m_TimeScale: 0.166
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400068, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.23529412
- m_Position: {x: 0, y: -1.56}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400036, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.29411766
- m_Position: {x: 0, y: -2.1}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400038, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.3529412
- m_Position: {x: -3, y: 0}
- m_TimeScale: 2
- m_CycleOffset: 0.5
- m_DirectBlendParameter: MovementZ
- m_Mirror: 1
- - serializedVersion: 2
- m_Motion: {fileID: 7400038, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.4117647
- m_Position: {x: -1.56, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0.5
- m_DirectBlendParameter: MovementZ
- m_Mirror: 1
- - serializedVersion: 2
- m_Motion: {fileID: 7400038, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.47058824
- m_Position: {x: 1.56, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400038, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.5294118
- m_Position: {x: 3, y: 0}
- m_TimeScale: 2
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400040, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.5882353
- m_Position: {x: -1.1, y: -1.1}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400042, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.64705884
- m_Position: {x: 1.1, y: -1.1}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400044, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.7058824
- m_Position: {x: -1.1, y: 1.1}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400046, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.7647059
- m_Position: {x: 1.1, y: 1.1}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400048, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.8235294
- m_Position: {x: -2.44, y: 2.44}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400050, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.88235295
- m_Position: {x: 2.4, y: 2.44}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400070, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.9411765
- m_Position: {x: -1.5, y: -1.5}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400072, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 1
- m_Position: {x: 1.5, y: -1.5}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- m_BlendParameter: MovementX
- m_BlendParameterY: MovementZ
- m_MinThreshold: 0
- m_MaxThreshold: 1
- m_UseAutomaticThresholds: 1
- m_NormalizedBlendValues: 0
- m_BlendType: 2
---- !u!206 &9213968249993944336
-BlendTree:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: CrouchingLocomotion
- m_Childs:
- - serializedVersion: 2
- m_Motion: {fileID: 7400026, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0
- m_Position: {x: 0, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400024, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.25
- m_Position: {x: 0, y: 0.5}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400024, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.5
- m_Position: {x: 0, y: -0.5}
- m_TimeScale: -1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400028, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.75
- m_Position: {x: -0.5, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0.5
- m_DirectBlendParameter: MovementZ
- m_Mirror: 1
- - serializedVersion: 2
- m_Motion: {fileID: 7400028, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 1
- m_Position: {x: 0.5, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- m_BlendParameter: MovementX
- m_BlendParameterY: MovementZ
- m_MinThreshold: 0
- m_MaxThreshold: 1
- m_UseAutomaticThresholds: 1
- m_NormalizedBlendValues: 0
- m_BlendType: 2
---- !u!206 &9213968249993944337
-BlendTree:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: StandingLocomotion
- m_Childs:
- - serializedVersion: 2
- m_Motion: {fileID: 7400030, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0
- m_Position: {x: 0, y: 5.96}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400032, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.05882353
- m_Position: {x: 0, y: 3.4}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400034, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.11764706
- m_Position: {x: 0, y: 1.56}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400002, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.1764706
- m_Position: {x: 0, y: 0}
- m_TimeScale: 0.166
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400068, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.23529412
- m_Position: {x: 0, y: -1.56}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400036, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.29411766
- m_Position: {x: 0, y: -2.1}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400038, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.3529412
- m_Position: {x: -3, y: 0}
- m_TimeScale: 2
- m_CycleOffset: 0.5
- m_DirectBlendParameter: MovementZ
- m_Mirror: 1
- - serializedVersion: 2
- m_Motion: {fileID: 7400038, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.4117647
- m_Position: {x: -1.56, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0.5
- m_DirectBlendParameter: MovementZ
- m_Mirror: 1
- - serializedVersion: 2
- m_Motion: {fileID: 7400038, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.47058824
- m_Position: {x: 1.56, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400038, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.5294118
- m_Position: {x: 3, y: 0}
- m_TimeScale: 2
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400040, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.5882353
- m_Position: {x: -1.1, y: -1.1}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400042, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.64705884
- m_Position: {x: 1.1, y: -1.1}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400044, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.7058824
- m_Position: {x: -1.1, y: 1.1}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400046, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.7647059
- m_Position: {x: 1.1, y: 1.1}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400048, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.8235294
- m_Position: {x: -2.44, y: 2.44}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400050, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.88235295
- m_Position: {x: 2.4, y: 2.44}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400070, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.9411765
- m_Position: {x: -1.5, y: -1.5}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400072, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 1
- m_Position: {x: 1.5, y: -1.5}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- m_BlendParameter: MovementX
- m_BlendParameterY: MovementZ
- m_MinThreshold: 0
- m_MaxThreshold: 1
- m_UseAutomaticThresholds: 1
- m_NormalizedBlendValues: 0
- m_BlendType: 2
---- !u!206 &9213968249993944338
-BlendTree:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: LocomotionHeightBlend
- m_Childs:
- - serializedVersion: 2
- m_Motion: {fileID: 9213968249993944339}
- m_Threshold: 0.5
- m_Position: {x: 0, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementX
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 9213968249993944340}
- m_Threshold: 0.68
- m_Position: {x: 0, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 9213968249993944341}
- m_Threshold: 1
- m_Position: {x: 0, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- m_BlendParameter: HeightScale
- m_BlendParameterY: MovementZ
- m_MinThreshold: 0.5
- m_MaxThreshold: 1
- m_UseAutomaticThresholds: 0
- m_NormalizedBlendValues: 0
- m_BlendType: 0
---- !u!206 &9213968249993944339
-BlendTree:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: ProneLocomotion
- m_Childs:
- - serializedVersion: 2
- m_Motion: {fileID: 7400004, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0
- m_Position: {x: 0, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementX
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400066, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.25
- m_Position: {x: 0, y: 0.1}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementX
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400066, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.5
- m_Position: {x: 0, y: -0.1}
- m_TimeScale: -1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementX
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400066, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.75
- m_Position: {x: 0.1, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementX
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400066, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 1
- m_Position: {x: -0.1, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0.5
- m_DirectBlendParameter: MovementX
- m_Mirror: 1
- m_BlendParameter: MovementX
- m_BlendParameterY: MovementZ
- m_MinThreshold: 0
- m_MaxThreshold: 1
- m_UseAutomaticThresholds: 0
- m_NormalizedBlendValues: 0
- m_BlendType: 1
---- !u!206 &9213968249993944340
-BlendTree:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: CrouchingLocomotion
- m_Childs:
- - serializedVersion: 2
- m_Motion: {fileID: 7400026, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0
- m_Position: {x: 0, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400024, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.25
- m_Position: {x: 0, y: 0.5}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400024, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.5
- m_Position: {x: 0, y: -0.5}
- m_TimeScale: -1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400028, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.75
- m_Position: {x: -0.5, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0.5
- m_DirectBlendParameter: MovementZ
- m_Mirror: 1
- - serializedVersion: 2
- m_Motion: {fileID: 7400028, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 1
- m_Position: {x: 0.5, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- m_BlendParameter: MovementX
- m_BlendParameterY: MovementZ
- m_MinThreshold: 0
- m_MaxThreshold: 1
- m_UseAutomaticThresholds: 1
- m_NormalizedBlendValues: 0
- m_BlendType: 2
---- !u!206 &9213968249993944341
-BlendTree:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: StandingLocomotion
- m_Childs:
- - serializedVersion: 2
- m_Motion: {fileID: 7400030, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0
- m_Position: {x: 0, y: 5.96}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400032, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.05882353
- m_Position: {x: 0, y: 3.4}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400034, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.11764706
- m_Position: {x: 0, y: 1.56}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400002, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.1764706
- m_Position: {x: 0, y: 0}
- m_TimeScale: 0.166
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400068, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.23529412
- m_Position: {x: 0, y: -1.56}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400036, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.29411766
- m_Position: {x: 0, y: -2.1}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400038, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.3529412
- m_Position: {x: -3, y: 0}
- m_TimeScale: 2
- m_CycleOffset: 0.5
- m_DirectBlendParameter: MovementZ
- m_Mirror: 1
- - serializedVersion: 2
- m_Motion: {fileID: 7400038, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.4117647
- m_Position: {x: -1.56, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0.5
- m_DirectBlendParameter: MovementZ
- m_Mirror: 1
- - serializedVersion: 2
- m_Motion: {fileID: 7400038, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.47058824
- m_Position: {x: 1.56, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400038, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.5294118
- m_Position: {x: 3, y: 0}
- m_TimeScale: 2
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400040, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.5882353
- m_Position: {x: -1.1, y: -1.1}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400042, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.64705884
- m_Position: {x: 1.1, y: -1.1}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400044, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.7058824
- m_Position: {x: -1.1, y: 1.1}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400046, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.7647059
- m_Position: {x: 1.1, y: 1.1}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400048, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.8235294
- m_Position: {x: -2.44, y: 2.44}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400050, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.88235295
- m_Position: {x: 2.4, y: 2.44}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400070, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.9411765
- m_Position: {x: -1.5, y: -1.5}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400072, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 1
- m_Position: {x: 1.5, y: -1.5}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- m_BlendParameter: MovementX
- m_BlendParameterY: MovementZ
- m_MinThreshold: 0
- m_MaxThreshold: 1
- m_UseAutomaticThresholds: 1
- m_NormalizedBlendValues: 0
- m_BlendType: 2
---- !u!206 &9213968249993944342
-BlendTree:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: LocomotionHeightBlend
- m_Childs:
- - serializedVersion: 2
- m_Motion: {fileID: 9213968249993944343}
- m_Threshold: 0.5
- m_Position: {x: 0, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementX
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 9213968249993944344}
- m_Threshold: 0.68
- m_Position: {x: 0, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 9213968249993944326}
- m_Threshold: 1
- m_Position: {x: 0, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- m_BlendParameter: Upright
- m_BlendParameterY: MovementZ
- m_MinThreshold: 0.5
- m_MaxThreshold: 1
- m_UseAutomaticThresholds: 0
- m_NormalizedBlendValues: 0
- m_BlendType: 0
---- !u!206 &9213968249993944343
-BlendTree:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: ProneLocomotion
- m_Childs:
- - serializedVersion: 2
- m_Motion: {fileID: 7400004, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0
- m_Position: {x: 0, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementX
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400066, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.25
- m_Position: {x: 0, y: 0.1}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementX
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400066, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.5
- m_Position: {x: 0, y: -0.1}
- m_TimeScale: -1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementX
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400066, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.75
- m_Position: {x: 0.1, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementX
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400066, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 1
- m_Position: {x: -0.1, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0.5
- m_DirectBlendParameter: MovementX
- m_Mirror: 1
- m_BlendParameter: MovementX
- m_BlendParameterY: MovementZ
- m_MinThreshold: 0
- m_MaxThreshold: 1
- m_UseAutomaticThresholds: 0
- m_NormalizedBlendValues: 0
- m_BlendType: 1
---- !u!206 &9213968249993944344
-BlendTree:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: CrouchingLocomotion
- m_Childs:
- - serializedVersion: 2
- m_Motion: {fileID: 7400026, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0
- m_Position: {x: 0, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400024, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.25
- m_Position: {x: 0, y: 0.5}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400024, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.5
- m_Position: {x: 0, y: -0.5}
- m_TimeScale: -1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400028, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.75
- m_Position: {x: -0.5, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0.5
- m_DirectBlendParameter: MovementZ
- m_Mirror: 1
- - serializedVersion: 2
- m_Motion: {fileID: 7400028, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 1
- m_Position: {x: 0.5, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- m_BlendParameter: MovementX
- m_BlendParameterY: MovementZ
- m_MinThreshold: 0
- m_MaxThreshold: 1
- m_UseAutomaticThresholds: 1
- m_NormalizedBlendValues: 0
- m_BlendType: 2
---- !u!206 &9213968249993944345
-BlendTree:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: StandingLocomotion
- m_Childs:
- - serializedVersion: 2
- m_Motion: {fileID: 7400030, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0
- m_Position: {x: 0, y: 5.96}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400032, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.05882353
- m_Position: {x: 0, y: 3.4}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400034, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.11764706
- m_Position: {x: 0, y: 1.56}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400002, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.1764706
- m_Position: {x: 0, y: 0}
- m_TimeScale: 0.166
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400068, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.23529412
- m_Position: {x: 0, y: -1.56}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400036, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.29411766
- m_Position: {x: 0, y: -2.1}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400038, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.3529412
- m_Position: {x: -3, y: 0}
- m_TimeScale: 2
- m_CycleOffset: 0.5
- m_DirectBlendParameter: MovementZ
- m_Mirror: 1
- - serializedVersion: 2
- m_Motion: {fileID: 7400038, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.4117647
- m_Position: {x: -1.56, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0.5
- m_DirectBlendParameter: MovementZ
- m_Mirror: 1
- - serializedVersion: 2
- m_Motion: {fileID: 7400038, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.47058824
- m_Position: {x: 1.56, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400038, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.5294118
- m_Position: {x: 3, y: 0}
- m_TimeScale: 2
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400040, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.5882353
- m_Position: {x: -1.1, y: -1.1}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400042, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.64705884
- m_Position: {x: 1.1, y: -1.1}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400044, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.7058824
- m_Position: {x: -1.1, y: 1.1}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400046, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.7647059
- m_Position: {x: 1.1, y: 1.1}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400048, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.8235294
- m_Position: {x: -2.44, y: 2.44}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400050, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.88235295
- m_Position: {x: 2.4, y: 2.44}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400070, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.9411765
- m_Position: {x: -1.5, y: -1.5}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400072, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 1
- m_Position: {x: 1.5, y: -1.5}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- m_BlendParameter: MovementX
- m_BlendParameterY: MovementZ
- m_MinThreshold: 0
- m_MaxThreshold: 1
- m_UseAutomaticThresholds: 1
- m_NormalizedBlendValues: 0
- m_BlendType: 2
---- !u!206 &9213968249993944346
-BlendTree:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: StandingLocomotion
- m_Childs:
- - serializedVersion: 2
- m_Motion: {fileID: 7400030, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0
- m_Position: {x: 0, y: 5.96}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400032, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.05882353
- m_Position: {x: 0, y: 3.4}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400034, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.11764706
- m_Position: {x: 0, y: 1.56}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400002, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.1764706
- m_Position: {x: 0, y: 0}
- m_TimeScale: 0.166
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400068, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.23529412
- m_Position: {x: 0, y: -1.56}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400036, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.29411766
- m_Position: {x: 0, y: -2.1}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400038, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.3529412
- m_Position: {x: -3, y: 0}
- m_TimeScale: 2
- m_CycleOffset: 0.5
- m_DirectBlendParameter: MovementZ
- m_Mirror: 1
- - serializedVersion: 2
- m_Motion: {fileID: 7400038, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.4117647
- m_Position: {x: -1.56, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0.5
- m_DirectBlendParameter: MovementZ
- m_Mirror: 1
- - serializedVersion: 2
- m_Motion: {fileID: 7400038, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.47058824
- m_Position: {x: 1.56, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400038, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.5294118
- m_Position: {x: 3, y: 0}
- m_TimeScale: 2
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400040, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.5882353
- m_Position: {x: -1.1, y: -1.1}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400042, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.64705884
- m_Position: {x: 1.1, y: -1.1}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400044, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.7058824
- m_Position: {x: -1.1, y: 1.1}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400046, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.7647059
- m_Position: {x: 1.1, y: 1.1}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400048, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.8235294
- m_Position: {x: -2.44, y: 2.44}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400050, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.88235295
- m_Position: {x: 2.4, y: 2.44}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400070, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.9411765
- m_Position: {x: -1.5, y: -1.5}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400072, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 1
- m_Position: {x: 1.5, y: -1.5}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- m_BlendParameter: MovementX
- m_BlendParameterY: MovementZ
- m_MinThreshold: 0
- m_MaxThreshold: 1
- m_UseAutomaticThresholds: 1
- m_NormalizedBlendValues: 0
- m_BlendType: 2
---- !u!206 &9213968249993944347
-BlendTree:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: CrouchingLocomotion
- m_Childs:
- - serializedVersion: 2
- m_Motion: {fileID: 7400026, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0
- m_Position: {x: 0, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400024, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.25
- m_Position: {x: 0, y: 0.5}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400024, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.5
- m_Position: {x: 0, y: -0.5}
- m_TimeScale: -1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400028, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.75
- m_Position: {x: -0.5, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0.5
- m_DirectBlendParameter: MovementZ
- m_Mirror: 1
- - serializedVersion: 2
- m_Motion: {fileID: 7400028, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 1
- m_Position: {x: 0.5, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- m_BlendParameter: MovementX
- m_BlendParameterY: MovementZ
- m_MinThreshold: 0
- m_MaxThreshold: 1
- m_UseAutomaticThresholds: 1
- m_NormalizedBlendValues: 0
- m_BlendType: 2
---- !u!206 &9213968249993944348
-BlendTree:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: ProneLocomotion
- m_Childs:
- - serializedVersion: 2
- m_Motion: {fileID: 7400004, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0
- m_Position: {x: 0, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementX
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400066, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.25
- m_Position: {x: 0, y: 0.1}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementX
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400066, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.5
- m_Position: {x: 0, y: -0.1}
- m_TimeScale: -1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementX
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400066, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.75
- m_Position: {x: 0.1, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementX
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400066, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 1
- m_Position: {x: -0.1, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0.5
- m_DirectBlendParameter: MovementX
- m_Mirror: 1
- m_BlendParameter: MovementX
- m_BlendParameterY: MovementZ
- m_MinThreshold: 0
- m_MaxThreshold: 1
- m_UseAutomaticThresholds: 0
- m_NormalizedBlendValues: 0
- m_BlendType: 1
---- !u!206 &9213968249993944349
-BlendTree:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: CrouchingLocomotion
- m_Childs:
- - serializedVersion: 2
- m_Motion: {fileID: 7400026, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0
- m_Position: {x: 0, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400024, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.25
- m_Position: {x: 0, y: 0.5}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400024, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.5
- m_Position: {x: 0, y: -0.5}
- m_TimeScale: -1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400028, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.75
- m_Position: {x: -0.5, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0.5
- m_DirectBlendParameter: MovementZ
- m_Mirror: 1
- - serializedVersion: 2
- m_Motion: {fileID: 7400028, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 1
- m_Position: {x: 0.5, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- m_BlendParameter: MovementX
- m_BlendParameterY: MovementZ
- m_MinThreshold: 0
- m_MaxThreshold: 1
- m_UseAutomaticThresholds: 1
- m_NormalizedBlendValues: 0
- m_BlendType: 2
---- !u!206 &9213968249993944350
-BlendTree:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: ProneLocomotion
- m_Childs:
- - serializedVersion: 2
- m_Motion: {fileID: 7400004, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0
- m_Position: {x: 0, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementX
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400066, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.25
- m_Position: {x: 0, y: 0.1}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementX
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400066, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.5
- m_Position: {x: 0, y: -0.1}
- m_TimeScale: -1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementX
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400066, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.75
- m_Position: {x: 0.1, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementX
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400066, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 1
- m_Position: {x: -0.1, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0.5
- m_DirectBlendParameter: MovementX
- m_Mirror: 1
- m_BlendParameter: MovementX
- m_BlendParameterY: MovementZ
- m_MinThreshold: 0
- m_MaxThreshold: 1
- m_UseAutomaticThresholds: 0
- m_NormalizedBlendValues: 0
- m_BlendType: 1
---- !u!206 &9213968249993944351
-BlendTree:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: CrouchingLocomotion
- m_Childs:
- - serializedVersion: 2
- m_Motion: {fileID: 7400026, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0
- m_Position: {x: 0, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400024, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.25
- m_Position: {x: 0, y: 0.5}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400024, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.5
- m_Position: {x: 0, y: -0.5}
- m_TimeScale: -1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400028, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.75
- m_Position: {x: -0.5, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0.5
- m_DirectBlendParameter: MovementZ
- m_Mirror: 1
- - serializedVersion: 2
- m_Motion: {fileID: 7400028, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 1
- m_Position: {x: 0.5, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- m_BlendParameter: MovementX
- m_BlendParameterY: MovementZ
- m_MinThreshold: 0
- m_MaxThreshold: 1
- m_UseAutomaticThresholds: 1
- m_NormalizedBlendValues: 0
- m_BlendType: 2
---- !u!206 &9213968249993944352
-BlendTree:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: CrouchingLocomotion
- m_Childs:
- - serializedVersion: 2
- m_Motion: {fileID: 7400026, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0
- m_Position: {x: 0, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400024, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.25
- m_Position: {x: 0, y: 0.5}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400024, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.5
- m_Position: {x: 0, y: -0.5}
- m_TimeScale: -1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400028, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.75
- m_Position: {x: -0.5, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0.5
- m_DirectBlendParameter: MovementZ
- m_Mirror: 1
- - serializedVersion: 2
- m_Motion: {fileID: 7400028, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 1
- m_Position: {x: 0.5, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- m_BlendParameter: MovementX
- m_BlendParameterY: MovementZ
- m_MinThreshold: 0
- m_MaxThreshold: 1
- m_UseAutomaticThresholds: 1
- m_NormalizedBlendValues: 0
- m_BlendType: 2
---- !u!206 &9213968249993944353
-BlendTree:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: LocomotionHeightBlend
- m_Childs:
- - serializedVersion: 2
- m_Motion: {fileID: 9213968249993944354}
- m_Threshold: 0.5
- m_Position: {x: 0, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementX
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 9213968249993944352}
- m_Threshold: 0.68
- m_Position: {x: 0, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 9213968249993944335}
- m_Threshold: 1
- m_Position: {x: 0, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- m_BlendParameter: Upright
- m_BlendParameterY: MovementZ
- m_MinThreshold: 0.5
- m_MaxThreshold: 1
- m_UseAutomaticThresholds: 0
- m_NormalizedBlendValues: 0
- m_BlendType: 0
---- !u!206 &9213968249993944354
-BlendTree:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: ProneLocomotion
- m_Childs:
- - serializedVersion: 2
- m_Motion: {fileID: 7400004, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0
- m_Position: {x: 0, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementX
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400066, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.25
- m_Position: {x: 0, y: 0.1}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementX
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400066, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.5
- m_Position: {x: 0, y: -0.1}
- m_TimeScale: -1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementX
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400066, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.75
- m_Position: {x: 0.1, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementX
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400066, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 1
- m_Position: {x: -0.1, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0.5
- m_DirectBlendParameter: MovementX
- m_Mirror: 1
- m_BlendParameter: MovementX
- m_BlendParameterY: MovementZ
- m_MinThreshold: 0
- m_MaxThreshold: 1
- m_UseAutomaticThresholds: 0
- m_NormalizedBlendValues: 0
- m_BlendType: 1
---- !u!206 &9213968249993944355
-BlendTree:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: ProneLocomotion
- m_Childs:
- - serializedVersion: 2
- m_Motion: {fileID: 7400004, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0
- m_Position: {x: 0, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementX
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400066, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.25
- m_Position: {x: 0, y: 0.1}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementX
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400066, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.5
- m_Position: {x: 0, y: -0.1}
- m_TimeScale: -1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementX
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400066, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.75
- m_Position: {x: 0.1, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementX
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400066, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 1
- m_Position: {x: -0.1, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0.5
- m_DirectBlendParameter: MovementX
- m_Mirror: 1
- m_BlendParameter: MovementX
- m_BlendParameterY: MovementZ
- m_MinThreshold: 0
- m_MaxThreshold: 1
- m_UseAutomaticThresholds: 0
- m_NormalizedBlendValues: 0
- m_BlendType: 1
---- !u!1101 &9213968249993944356
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 4
- m_ConditionEvent: GestureLeftWeight
- m_EventTreshold: 0.65
- - m_ConditionMode: 3
- m_ConditionEvent: GestureLeftWeight
- m_EventTreshold: 0.45
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944211}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.02
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944357
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 4
- m_ConditionEvent: GestureLeftWeight
- m_EventTreshold: 0.75
- - m_ConditionMode: 3
- m_ConditionEvent: GestureLeftWeight
- m_EventTreshold: 0.65
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944266}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.02
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944358
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 3
- m_ConditionEvent: GestureLeftWeight
- m_EventTreshold: 0.45
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944264}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.02
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944359
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 4
- m_ConditionEvent: GestureLeftWeight
- m_EventTreshold: 0.35
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944201}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.02
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944360
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 4
- m_ConditionEvent: GestureLeftWeight
- m_EventTreshold: 0.45
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944246}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.01
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944361
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions: []
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 0}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.25
- m_TransitionOffset: 0
- m_ExitTime: 0.8076923
- m_HasExitTime: 1
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944362
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions: []
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 0}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.25
- m_TransitionOffset: 0
- m_ExitTime: 0.75
- m_HasExitTime: 1
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944363
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 3
- m_ConditionEvent: Emote
- m_EventTreshold: 0
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 0}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 1
- serializedVersion: 3
- m_TransitionDuration: 0.25
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944364
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions: []
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 0}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.25
- m_TransitionOffset: 0
- m_ExitTime: 0.8076923
- m_HasExitTime: 1
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944365
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 3
- m_ConditionEvent: Upright
- m_EventTreshold: 0.52
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 0}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.5
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944366
-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: FeetTracking
- m_EventTreshold: 0
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 0}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 1
- serializedVersion: 3
- m_TransitionDuration: 0.25
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944367
-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: FeetTracking
- m_EventTreshold: 0
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 0}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 1
- serializedVersion: 3
- m_TransitionDuration: 0.25
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944368
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 2
- m_ConditionEvent: Grounded
- m_EventTreshold: 0
- - m_ConditionMode: 3
- m_ConditionEvent: HeightScale
- m_EventTreshold: 0.9
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 0}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.25
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944369
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 4
- m_ConditionEvent: Upright
- m_EventTreshold: 0.5
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 0}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.5
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944370
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions: []
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 0}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 1
- serializedVersion: 3
- m_TransitionDuration: 0.25
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 1
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944371
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 6
- m_ConditionEvent: GestureLeft
- m_EventTreshold: 2
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944372}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.1
- m_TransitionOffset: 0
- m_ExitTime: 1
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 0
---- !u!1102 &9213968249993944372
-AnimatorState:
- serializedVersion: 6
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: Open
- m_Speed: 1
- m_CycleOffset: 0
- m_Transitions: []
- m_StateMachineBehaviours: []
- m_Position: {x: 264, y: 156, z: 0}
- m_IKOnFeet: 0
- m_WriteDefaultValues: 0
- m_Mirror: 0
- m_SpeedParameterActive: 0
- m_MirrorParameterActive: 0
- m_CycleOffsetParameterActive: 0
- m_TimeParameterActive: 1
- m_Motion: {fileID: 0}
- m_Tag:
- m_SpeedParameter:
- m_MirrorParameter:
- m_CycleOffsetParameter:
- m_TimeParameter: GestureLeftWeight
---- !u!1101 &9213968249993944373
-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: AFK
- m_EventTreshold: 0
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 0}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 1
- serializedVersion: 3
- m_TransitionDuration: 1
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944374
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions: []
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 0}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.25
- m_TransitionOffset: 0
- m_ExitTime: 0.93697476
- m_HasExitTime: 1
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944375
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 3
- m_ConditionEvent: Upright
- m_EventTreshold: 0.52
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 0}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.5
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944376
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 6
- m_ConditionEvent: GestureLeft
- m_EventTreshold: 1
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944377}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.1
- m_TransitionOffset: 0
- m_ExitTime: 1
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 0
---- !u!1102 &9213968249993944377
-AnimatorState:
- serializedVersion: 6
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: Fist
- m_Speed: 1
- m_CycleOffset: 0
- m_Transitions: []
- m_StateMachineBehaviours: []
- m_Position: {x: -60, y: 192, z: 0}
- m_IKOnFeet: 0
- m_WriteDefaultValues: 0
- m_Mirror: 0
- m_SpeedParameterActive: 0
- m_MirrorParameterActive: 0
- m_CycleOffsetParameterActive: 0
- m_TimeParameterActive: 1
- m_Motion: {fileID: 0}
- m_Tag:
- m_SpeedParameter:
- m_MirrorParameter:
- m_CycleOffsetParameter:
- m_TimeParameter: GestureLeftWeight
---- !u!1101 &9213968249993944378
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 6
- m_ConditionEvent: GestureLeft
- m_EventTreshold: 5
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944379}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.1
- m_TransitionOffset: 0
- m_ExitTime: 1
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 0
---- !u!1102 &9213968249993944379
-AnimatorState:
- serializedVersion: 6
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: RockNRoll
- m_Speed: 1
- m_CycleOffset: 0
- m_Transitions: []
- m_StateMachineBehaviours: []
- m_Position: {x: 264, y: 96, z: 0}
- m_IKOnFeet: 0
- m_WriteDefaultValues: 0
- m_Mirror: 0
- m_SpeedParameterActive: 0
- m_MirrorParameterActive: 0
- m_CycleOffsetParameterActive: 0
- m_TimeParameterActive: 1
- m_Motion: {fileID: 0}
- m_Tag:
- m_SpeedParameter:
- m_MirrorParameter:
- m_CycleOffsetParameter:
- m_TimeParameter: GestureLeftWeight
---- !u!1101 &9213968249993944380
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 4
- m_ConditionEvent: TrackMoveZ
- m_EventTreshold: 0.1
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 0}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.25
- m_TransitionOffset: 0
- m_ExitTime: 0.93697476
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944381
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 6
- m_ConditionEvent: GestureLeft
- m_EventTreshold: 3
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944382}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.1
- m_TransitionOffset: 0
- m_ExitTime: 1
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 0
---- !u!1102 &9213968249993944382
-AnimatorState:
- serializedVersion: 6
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: Point
- m_Speed: 1
- m_CycleOffset: 0
- m_Transitions: []
- m_StateMachineBehaviours: []
- m_Position: {x: 264, y: 36, z: 0}
- m_IKOnFeet: 0
- m_WriteDefaultValues: 0
- m_Mirror: 0
- m_SpeedParameterActive: 0
- m_MirrorParameterActive: 0
- m_CycleOffsetParameterActive: 0
- m_TimeParameterActive: 1
- m_Motion: {fileID: 0}
- m_Tag:
- m_SpeedParameter:
- m_MirrorParameter:
- m_CycleOffsetParameter:
- m_TimeParameter: GestureLeftWeight
---- !u!1101 &9213968249993944383
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 3
- m_ConditionEvent: Upright
- m_EventTreshold: 0.52
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 0}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.5
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944384
-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: Grounded
- m_EventTreshold: 0
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 0}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.04
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944385
-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: AFK
- m_EventTreshold: 0
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 0}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 1
- serializedVersion: 3
- m_TransitionDuration: 1
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944386
-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: AFK
- m_EventTreshold: 0
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 0}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 1
- serializedVersion: 3
- m_TransitionDuration: 1
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944387
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 6
- m_ConditionEvent: GestureLeft
- m_EventTreshold: 7
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944388}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.1
- m_TransitionOffset: 0
- m_ExitTime: 1
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 0
---- !u!1102 &9213968249993944388
-AnimatorState:
- serializedVersion: 6
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: Thumbs up
- m_Speed: 1
- m_CycleOffset: 0
- m_Transitions: []
- m_StateMachineBehaviours: []
- m_Position: {x: 264, y: 216, z: 0}
- m_IKOnFeet: 0
- m_WriteDefaultValues: 0
- m_Mirror: 0
- m_SpeedParameterActive: 0
- m_MirrorParameterActive: 0
- m_CycleOffsetParameterActive: 0
- m_TimeParameterActive: 1
- m_Motion: {fileID: 0}
- m_Tag:
- m_SpeedParameter:
- m_MirrorParameter:
- m_CycleOffsetParameter:
- m_TimeParameter: GestureLeftWeight
---- !u!1101 &9213968249993944389
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 3
- m_ConditionEvent: Emote
- m_EventTreshold: 0
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 0}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 1
- serializedVersion: 3
- m_TransitionDuration: 0.25
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944390
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 3
- m_ConditionEvent: Upright
- m_EventTreshold: 0.7
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 0}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.5
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944391
-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: FeetTracking
- m_EventTreshold: 0
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 0}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 1
- serializedVersion: 3
- m_TransitionDuration: 0.25
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944392
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 6
- m_ConditionEvent: GestureLeft
- m_EventTreshold: 0
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944393}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.1
- m_TransitionOffset: 0
- m_ExitTime: 1
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 0
---- !u!1102 &9213968249993944393
-AnimatorState:
- serializedVersion: 6
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: Idle
- m_Speed: 1
- m_CycleOffset: 0
- m_Transitions: []
- m_StateMachineBehaviours: []
- m_Position: {x: 50, y: 50, z: 0}
- m_IKOnFeet: 0
- m_WriteDefaultValues: 1
- 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:
---- !u!1101 &9213968249993944394
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 3
- m_ConditionEvent: Emote
- m_EventTreshold: 0
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 0}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 1
- serializedVersion: 3
- m_TransitionDuration: 0.25
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944395
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 2
- m_ConditionEvent: Grounded
- m_EventTreshold: 0
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 110226965, guid: 12cd9f87c1f675b4685e0848a464d0cf, type: 2}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.25
- m_TransitionOffset: 0
- m_ExitTime: 0.9
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944396
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 4
- m_ConditionEvent: TrackMoveZ
- m_EventTreshold: 0.1
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 0}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.25
- m_TransitionOffset: 0
- m_ExitTime: 0.93697476
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944397
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions: []
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 0}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.5
- m_TransitionOffset: 0
- m_ExitTime: 0.75
- m_HasExitTime: 1
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944398
-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: Seated
- m_EventTreshold: 0
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 0}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.5
- m_TransitionOffset: 0
- m_ExitTime: 0.75
- m_HasExitTime: 1
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944399
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 6
- m_ConditionEvent: GestureLeft
- m_EventTreshold: 4
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944400}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.1
- m_TransitionOffset: 0
- m_ExitTime: 1
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 0
---- !u!1102 &9213968249993944400
-AnimatorState:
- serializedVersion: 6
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: Peace
- m_Speed: 1
- m_CycleOffset: 0
- m_Transitions: []
- m_StateMachineBehaviours: []
- m_Position: {x: 264, y: 276, z: 0}
- m_IKOnFeet: 0
- m_WriteDefaultValues: 0
- m_Mirror: 0
- m_SpeedParameterActive: 0
- m_MirrorParameterActive: 0
- m_CycleOffsetParameterActive: 0
- m_TimeParameterActive: 1
- m_Motion: {fileID: 0}
- m_Tag:
- m_SpeedParameter:
- m_MirrorParameter:
- m_CycleOffsetParameter:
- m_TimeParameter: GestureLeftWeight
---- !u!1101 &9213968249993944401
-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: Grounded
- m_EventTreshold: 0
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 0}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.039085507
- m_TransitionOffset: 0
- m_ExitTime: 0.72727275
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944402
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 4
- m_ConditionEvent: TrackMoveX
- m_EventTreshold: 0.1
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 0}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.25
- m_TransitionOffset: 0
- m_ExitTime: 0.93697476
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944403
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 6
- m_ConditionEvent: GestureLeft
- m_EventTreshold: 6
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944404}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.1
- m_TransitionOffset: 0
- m_ExitTime: 1
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 0
---- !u!1102 &9213968249993944404
-AnimatorState:
- serializedVersion: 6
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: Gun
- m_Speed: 1
- m_CycleOffset: 0
- m_Transitions: []
- m_StateMachineBehaviours: []
- m_Position: {x: 264, y: 336, z: 0}
- m_IKOnFeet: 0
- m_WriteDefaultValues: 0
- m_Mirror: 0
- m_SpeedParameterActive: 0
- m_MirrorParameterActive: 0
- m_CycleOffsetParameterActive: 0
- m_TimeParameterActive: 1
- m_Motion: {fileID: 0}
- m_Tag:
- m_SpeedParameter:
- m_MirrorParameter:
- m_CycleOffsetParameter:
- m_TimeParameter: GestureLeftWeight
---- !u!1101 &9213968249993944405
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 3
- m_ConditionEvent: TrackMoveZ
- m_EventTreshold: -0.1
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 0}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.25
- m_TransitionOffset: 0
- m_ExitTime: 0.93697476
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944406
-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: Seated
- m_EventTreshold: 0
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 0}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.5
- m_TransitionOffset: 0
- m_ExitTime: 0.75
- m_HasExitTime: 1
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944407
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 7
- m_ConditionEvent: GestureLeft
- m_EventTreshold: 6
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944284}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.1
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944408
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 7
- m_ConditionEvent: GestureLeft
- m_EventTreshold: 2
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944255}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.1
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944409
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 6
- m_ConditionEvent: GestureLeft
- m_EventTreshold: 4
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944321}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.1
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944410
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 6
- m_ConditionEvent: GestureLeft
- m_EventTreshold: 6
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944322}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.1
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1102 &9213968249993944411
-AnimatorState:
- serializedVersion: 6
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: HeightBlend 0
- m_Speed: 1
- m_CycleOffset: 0
- m_Transitions: []
- m_StateMachineBehaviours: []
- m_Position: {x: 50, y: 50, z: 0}
- m_IKOnFeet: 1
- m_WriteDefaultValues: 1
- 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:
---- !u!1102 &9213968249993944412
-AnimatorState:
- serializedVersion: 6
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: HeightBlend 0
- m_Speed: 1
- m_CycleOffset: 0
- m_Transitions: []
- m_StateMachineBehaviours: []
- m_Position: {x: 50, y: 50, z: 0}
- m_IKOnFeet: 1
- m_WriteDefaultValues: 1
- 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:
---- !u!1109 &9213968249993944413
-AnimatorTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 2
- m_ConditionEvent: Seated
- m_EventTreshold: 0
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 0}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 1
- serializedVersion: 1
---- !u!1109 &9213968249993944414
-AnimatorTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 3
- m_ConditionEvent: Emote
- m_EventTreshold: 0
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 0}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 1
---- !u!1109 &9213968249993944415
-AnimatorTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 2
- m_ConditionEvent: Grounded
- m_EventTreshold: 0
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 0}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 1
---- !u!1109 &9213968249993944416
-AnimatorTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 6
- m_ConditionEvent: Emote
- m_EventTreshold: 0
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 0}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 1
- serializedVersion: 1
---- !u!1109 &9213968249993944417
-AnimatorTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 1
- m_ConditionEvent: FeetTracking
- m_EventTreshold: 0
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 0}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 1
---- !u!1102 &9213968249993944418
-AnimatorState:
- serializedVersion: 6
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: Gun 0
- m_Speed: 1
- m_CycleOffset: 0
- m_Transitions: []
- m_StateMachineBehaviours: []
- m_Position: {x: 264, y: 336, z: 0}
- m_IKOnFeet: 0
- m_WriteDefaultValues: 1
- 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: GestureLeftWeight
---- !u!1101 &9213968249993944419
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 6
- m_ConditionEvent: GestureLeft
- m_EventTreshold: 1
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944198}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944420
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 4
- m_ConditionEvent: GestureLeftWeight
- m_EventTreshold: 0.55
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944231}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.02
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944421
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 3
- m_ConditionEvent: GestureLeftWeight
- m_EventTreshold: 0.25
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944289}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.02
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944422
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 3
- m_ConditionEvent: GestureLeftWeight
- m_EventTreshold: 0.35
- - m_ConditionMode: 4
- m_ConditionEvent: GestureLeftWeight
- m_EventTreshold: 0.45
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944271}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.02
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944423
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 7
- m_ConditionEvent: GestureLeft
- m_EventTreshold: 1
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944211}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.02
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944424
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 3
- m_ConditionEvent: GestureLeftWeight
- m_EventTreshold: 0.75
- - m_ConditionMode: 6
- m_ConditionEvent: GestureLeft
- m_EventTreshold: 1
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944247}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.02
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944425
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 4
- m_ConditionEvent: GestureLeftWeight
- m_EventTreshold: 0.45
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944246}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.02
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1102 &9213968249993944426
-AnimatorState:
- serializedVersion: 6
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: Fist 0
- m_Speed: 1
- m_CycleOffset: 0
- m_Transitions: []
- m_StateMachineBehaviours: []
- m_Position: {x: -60, y: 192, z: 0}
- m_IKOnFeet: 0
- m_WriteDefaultValues: 1
- 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: GestureLeftWeight
---- !u!1101 &9213968249993944427
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 3
- m_ConditionEvent: GestureLeftWeight
- m_EventTreshold: 0.55
- - m_ConditionMode: 4
- m_ConditionEvent: GestureLeftWeight
- m_EventTreshold: 0.65
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944224}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.02
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944428
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 3
- m_ConditionEvent: GestureLeftWeight
- m_EventTreshold: 0.85
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944210}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.02
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1102 &9213968249993944429
-AnimatorState:
- serializedVersion: 6
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: Peace 0
- m_Speed: 1
- m_CycleOffset: 0
- m_Transitions: []
- m_StateMachineBehaviours: []
- m_Position: {x: 264, y: 276, z: 0}
- m_IKOnFeet: 0
- m_WriteDefaultValues: 1
- 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: GestureLeftWeight
---- !u!1101 &9213968249993944430
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 4
- m_ConditionEvent: GestureLeftWeight
- m_EventTreshold: 0.25
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944223}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.02
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1102 &9213968249993944431
-AnimatorState:
- serializedVersion: 6
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: Open 0
- m_Speed: 1
- m_CycleOffset: 0
- m_Transitions: []
- m_StateMachineBehaviours: []
- m_Position: {x: 264, y: 156, z: 0}
- m_IKOnFeet: 0
- m_WriteDefaultValues: 1
- 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: GestureRightWeight
---- !u!1101 &9213968249993944432
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 6
- m_ConditionEvent: GestureRight
- m_EventTreshold: 1
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944433}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.1
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1102 &9213968249993944433
-AnimatorState:
- serializedVersion: 6
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: Fist
- m_Speed: 1
- m_CycleOffset: 0
- m_Transitions:
- - {fileID: 9213968249993944516}
- - {fileID: 9213968249993944485}
- m_StateMachineBehaviours: []
- m_Position: {x: -60, y: 192, 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: GestureRightWeight
---- !u!1101 &9213968249993944434
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 4
- m_ConditionEvent: GestureRightWeight
- m_EventTreshold: 0.05
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944435}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.02
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1102 &9213968249993944435
-AnimatorState:
- serializedVersion: 6
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: Fist + trigger 10% reset
- m_Speed: 1
- m_CycleOffset: 0
- m_Transitions:
- - {fileID: 9213968249993944464}
- - {fileID: 9213968249993944465}
- 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:
---- !u!1102 &9213968249993944436
-AnimatorState:
- serializedVersion: 6
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: Fist + trigger 40% reset
- m_Speed: 1
- m_CycleOffset: 0
- m_Transitions:
- - {fileID: 9213968249993944437}
- - {fileID: 9213968249993944438}
- 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:
---- !u!1101 &9213968249993944437
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 4
- m_ConditionEvent: GestureRightWeight
- m_EventTreshold: 0.25
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944458}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.02
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944438
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 3
- m_ConditionEvent: GestureRightWeight
- m_EventTreshold: 0.25
- - m_ConditionMode: 6
- m_ConditionEvent: GestureRight
- m_EventTreshold: 1
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944524}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.02
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944439
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 7
- m_ConditionEvent: GestureRight
- m_EventTreshold: 5
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944440}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.1
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1102 &9213968249993944440
-AnimatorState:
- serializedVersion: 6
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: RockNRoll reset
- m_Speed: 1
- m_CycleOffset: 0
- m_Transitions:
- - {fileID: 9213968249993944456}
- m_StateMachineBehaviours: []
- m_Position: {x: 264, y: 96, 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: GestureRightWeight
---- !u!1102 &9213968249993944441
-AnimatorState:
- serializedVersion: 6
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: Fist + trigger 20% reset
- m_Speed: 1
- m_CycleOffset: 0
- m_Transitions:
- - {fileID: 9213968249993944442}
- - {fileID: 9213968249993944443}
- 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:
---- !u!1101 &9213968249993944442
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 4
- m_ConditionEvent: GestureRightWeight
- m_EventTreshold: 0.05
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944435}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.02
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944443
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 3
- m_ConditionEvent: GestureRightWeight
- m_EventTreshold: 0.05
- - m_ConditionMode: 6
- m_ConditionEvent: GestureRight
- m_EventTreshold: 1
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944486}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.02
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944444
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 3
- m_ConditionEvent: GestureRightWeight
- m_EventTreshold: 0.85
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944445}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.02
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1102 &9213968249993944445
-AnimatorState:
- serializedVersion: 6
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: Fist + trigger 90% 1
- m_Speed: 1
- m_CycleOffset: 0
- m_Transitions:
- - {fileID: 9213968249993944492}
- - {fileID: 9213968249993944493}
- 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:
---- !u!1102 &9213968249993944446
-AnimatorState:
- serializedVersion: 6
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: Fist + trigger 70% reset 1
- m_Speed: 1
- m_CycleOffset: 0
- m_Transitions:
- - {fileID: 9213968249993944447}
- - {fileID: 9213968249993944448}
- - {fileID: 9213968249993944449}
- - {fileID: 9213968249993944450}
- 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:
---- !u!1101 &9213968249993944447
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 4
- m_ConditionEvent: GestureRightWeight
- m_EventTreshold: 0.55
- - m_ConditionMode: 3
- m_ConditionEvent: GestureRightWeight
- m_EventTreshold: 0.45
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944466}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.02
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944448
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 3
- m_ConditionEvent: GestureRightWeight
- m_EventTreshold: 0.55
- - m_ConditionMode: 6
- m_ConditionEvent: GestureRight
- m_EventTreshold: 1
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944459}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.02
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944449
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 4
- m_ConditionEvent: GestureRightWeight
- m_EventTreshold: 0.45
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944481}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.02
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944450
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 7
- m_ConditionEvent: GestureRight
- m_EventTreshold: 1
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944481}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.02
- m_TransitionOffset: 0
- m_ExitTime: 0.75
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944451
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 3
- m_ConditionEvent: GestureRightWeight
- m_EventTreshold: 0.15
- - m_ConditionMode: 6
- m_ConditionEvent: GestureRight
- m_EventTreshold: 1
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944452}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.02
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1102 &9213968249993944452
-AnimatorState:
- serializedVersion: 6
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: Fist + trigger 20%
- m_Speed: 1
- m_CycleOffset: 0
- m_Transitions:
- - {fileID: 9213968249993944656}
- - {fileID: 9213968249993944507}
- 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:
---- !u!1102 &9213968249993944453
-AnimatorState:
- serializedVersion: 6
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: RockNRoll 0
- m_Speed: 1
- m_CycleOffset: 0
- m_Transitions: []
- m_StateMachineBehaviours: []
- m_Position: {x: 264, y: 96, z: 0}
- m_IKOnFeet: 0
- m_WriteDefaultValues: 1
- 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: GestureRightWeight
---- !u!1101 &9213968249993944454
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 4
- m_ConditionEvent: GestureRightWeight
- m_EventTreshold: 0.35
- - m_ConditionMode: 3
- m_ConditionEvent: GestureRightWeight
- m_EventTreshold: 0.25
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944436}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.02
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944455
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 3
- m_ConditionEvent: GestureRightWeight
- m_EventTreshold: 0.15
- - m_ConditionMode: 4
- m_ConditionEvent: GestureRightWeight
- m_EventTreshold: 0.25
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944452}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.02
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944456
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 7
- m_ConditionEvent: GestureRight
- m_EventTreshold: 5
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944474}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944457
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 7
- m_ConditionEvent: GestureRight
- m_EventTreshold: 1
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944458}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.02
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1102 &9213968249993944458
-AnimatorState:
- serializedVersion: 6
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: Fist + trigger 30% reset
- m_Speed: 1
- m_CycleOffset: 0
- m_Transitions:
- - {fileID: 9213968249993944517}
- - {fileID: 9213968249993944451}
- - {fileID: 9213968249993944518}
- - {fileID: 9213968249993944512}
- 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:
---- !u!1102 &9213968249993944459
-AnimatorState:
- serializedVersion: 6
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: Fist + trigger 60% 1 0
- m_Speed: 1
- m_CycleOffset: 0
- m_Transitions:
- - {fileID: 9213968249993944655}
- - {fileID: 9213968249993944489}
- 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:
---- !u!1102 &9213968249993944460
-AnimatorState:
- serializedVersion: 6
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: Fist reset
- m_Speed: 1
- m_CycleOffset: 0
- m_Transitions:
- - {fileID: 9213968249993944461}
- - {fileID: 9213968249993944432}
- m_StateMachineBehaviours: []
- m_Position: {x: -60, y: 192, 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: GestureRightWeight
---- !u!1101 &9213968249993944461
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 7
- m_ConditionEvent: GestureRight
- m_EventTreshold: 1
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944474}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944462
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 7
- m_ConditionEvent: GestureRight
- m_EventTreshold: 3
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944463}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.1
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1102 &9213968249993944463
-AnimatorState:
- serializedVersion: 6
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: Point reset
- m_Speed: 1
- m_CycleOffset: 0
- m_Transitions:
- - {fileID: 9213968249993944468}
- m_StateMachineBehaviours: []
- m_Position: {x: 264, y: 36, 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: GestureRightWeight
---- !u!1101 &9213968249993944464
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 7
- m_ConditionEvent: GestureRight
- m_EventTreshold: 1
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944460}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944465
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 6
- m_ConditionEvent: GestureRight
- m_EventTreshold: 1
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944433}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1102 &9213968249993944466
-AnimatorState:
- serializedVersion: 6
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: Fist + trigger 60% reset 1 0
- m_Speed: 1
- m_CycleOffset: 0
- m_Transitions:
- - {fileID: 9213968249993944500}
- - {fileID: 9213968249993944498}
- 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:
---- !u!1101 &9213968249993944467
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions: []
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944446}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.25
- m_TransitionOffset: 0
- m_ExitTime: 0.75
- m_HasExitTime: 1
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944468
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 7
- m_ConditionEvent: GestureRight
- m_EventTreshold: 3
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944474}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1102 &9213968249993944469
-AnimatorState:
- serializedVersion: 6
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: Peace reset
- m_Speed: 1
- m_CycleOffset: 0
- m_Transitions:
- - {fileID: 9213968249993944470}
- m_StateMachineBehaviours: []
- m_Position: {x: 264, y: 276, 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: GestureRightWeight
---- !u!1101 &9213968249993944470
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 7
- m_ConditionEvent: GestureRight
- m_EventTreshold: 4
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944474}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944471
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 7
- m_ConditionEvent: GestureRight
- m_EventTreshold: 7
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944472}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.1
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1102 &9213968249993944472
-AnimatorState:
- serializedVersion: 6
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: Thumbs up reset
- m_Speed: 1
- m_CycleOffset: 0
- m_Transitions:
- - {fileID: 9213968249993944473}
- m_StateMachineBehaviours: []
- m_Position: {x: 264, y: 216, 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: GestureRightWeight
---- !u!1101 &9213968249993944473
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 7
- m_ConditionEvent: GestureRight
- m_EventTreshold: 7
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944474}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1102 &9213968249993944474
-AnimatorState:
- serializedVersion: 6
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: Idle
- m_Speed: 1
- m_CycleOffset: 0
- m_Transitions:
- - {fileID: 9213968249993944495}
- - {fileID: 9213968249993944559}
- - {fileID: 9213968249993944508}
- - {fileID: 9213968249993944644}
- - {fileID: 9213968249993944478}
- - {fileID: 9213968249993944645}
- - {fileID: 9213968249993944496}
- 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: GestureRightWeight
---- !u!1102 &9213968249993944475
-AnimatorState:
- serializedVersion: 6
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: Fist + trigger 70% 1
- m_Speed: 1
- m_CycleOffset: 0
- m_Transitions:
- - {fileID: 9213968249993944476}
- - {fileID: 9213968249993944444}
- - {fileID: 9213968249993944477}
- 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:
---- !u!1101 &9213968249993944476
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 4
- m_ConditionEvent: GestureRightWeight
- m_EventTreshold: 0.65
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944446}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.02
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944477
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 3
- m_ConditionEvent: GestureRightWeight
- m_EventTreshold: 0.75
- - m_ConditionMode: 4
- m_ConditionEvent: GestureRightWeight
- m_EventTreshold: 0.85
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944482}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.02
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944478
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 6
- m_ConditionEvent: GestureRight
- m_EventTreshold: 5
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944479}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.1
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1102 &9213968249993944479
-AnimatorState:
- serializedVersion: 6
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: RockNRoll
- m_Speed: 1
- m_CycleOffset: 0
- m_Transitions:
- - {fileID: 9213968249993944439}
- m_StateMachineBehaviours: []
- m_Position: {x: 264, y: 96, 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: GestureRightWeight
---- !u!1101 &9213968249993944480
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 7
- m_ConditionEvent: GestureRight
- m_EventTreshold: 1
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944481}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.02
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1102 &9213968249993944481
-AnimatorState:
- serializedVersion: 6
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: Fist + trigger 50% reset
- m_Speed: 1
- m_CycleOffset: 0
- m_Transitions:
- - {fileID: 9213968249993944454}
- - {fileID: 9213968249993944505}
- - {fileID: 9213968249993944457}
- - {fileID: 9213968249993944513}
- - {fileID: 9213968249993944514}
- - {fileID: 9213968249993944515}
- 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:
---- !u!1102 &9213968249993944482
-AnimatorState:
- serializedVersion: 6
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: Fist + trigger 80% 1
- m_Speed: 1
- m_CycleOffset: 0
- m_Transitions:
- - {fileID: 9213968249993944483}
- - {fileID: 9213968249993944484}
- 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:
---- !u!1101 &9213968249993944483
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 4
- m_ConditionEvent: GestureRightWeight
- m_EventTreshold: 0.75
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944501}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.02
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944484
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 3
- m_ConditionEvent: GestureRightWeight
- m_EventTreshold: 0.85
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944445}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.02
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944485
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 3
- m_ConditionEvent: GestureRightWeight
- m_EventTreshold: 0.05
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944486}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.02
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1102 &9213968249993944486
-AnimatorState:
- serializedVersion: 6
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: Fist + trigger 10%
- m_Speed: 1
- m_CycleOffset: 0
- m_Transitions:
- - {fileID: 9213968249993944455}
- - {fileID: 9213968249993944434}
- - {fileID: 9213968249993944487}
- - {fileID: 9213968249993944488}
- 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:
---- !u!1101 &9213968249993944487
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 3
- m_ConditionEvent: GestureRightWeight
- m_EventTreshold: 0.25
- - m_ConditionMode: 4
- m_ConditionEvent: GestureRightWeight
- m_EventTreshold: 0.45
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944524}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.02
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944488
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 3
- m_ConditionEvent: GestureRightWeight
- m_EventTreshold: 0.45
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944499}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.02
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944489
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 3
- m_ConditionEvent: GestureRightWeight
- m_EventTreshold: 0.65
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944475}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.02
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1102 &9213968249993944490
-AnimatorState:
- serializedVersion: 6
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: Open reset
- m_Speed: 1
- m_CycleOffset: 0
- m_Transitions:
- - {fileID: 9213968249993944491}
- m_StateMachineBehaviours: []
- m_Position: {x: 264, y: 156, 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: GestureRightWeight
---- !u!1101 &9213968249993944491
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 7
- m_ConditionEvent: GestureRight
- m_EventTreshold: 2
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944474}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944492
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 7
- m_ConditionEvent: GestureRight
- m_EventTreshold: 1
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944558}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.01
- m_TransitionOffset: 0
- m_ExitTime: 0.75
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944493
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 4
- m_ConditionEvent: GestureRightWeight
- m_EventTreshold: 0.85
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944558}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.02
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944494
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 7
- m_ConditionEvent: GestureRight
- m_EventTreshold: 1
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944460}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944495
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 6
- m_ConditionEvent: GestureRight
- m_EventTreshold: 1
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944433}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944496
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 6
- m_ConditionEvent: GestureRight
- m_EventTreshold: 7
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944497}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.1
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1102 &9213968249993944497
-AnimatorState:
- serializedVersion: 6
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: Thumbs up
- m_Speed: 1
- m_CycleOffset: 0
- m_Transitions:
- - {fileID: 9213968249993944471}
- m_StateMachineBehaviours: []
- m_Position: {x: 264, y: 216, 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: GestureRightWeight
---- !u!1101 &9213968249993944498
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 3
- m_ConditionEvent: GestureRightWeight
- m_EventTreshold: 0.45
- - m_ConditionMode: 6
- m_ConditionEvent: GestureRight
- m_EventTreshold: 1
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944499}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.02
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1102 &9213968249993944499
-AnimatorState:
- serializedVersion: 6
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: Fist + trigger 50%
- m_Speed: 1
- m_CycleOffset: 0
- m_Transitions:
- - {fileID: 9213968249993944595}
- - {fileID: 9213968249993944522}
- - {fileID: 9213968249993944662}
- - {fileID: 9213968249993944663}
- 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:
---- !u!1101 &9213968249993944500
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 4
- m_ConditionEvent: GestureRightWeight
- m_EventTreshold: 0.45
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944481}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.02
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1102 &9213968249993944501
-AnimatorState:
- serializedVersion: 6
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: Fist + trigger 80% reset 1
- m_Speed: 1
- m_CycleOffset: 0
- m_Transitions:
- - {fileID: 9213968249993944502}
- - {fileID: 9213968249993944503}
- 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:
---- !u!1101 &9213968249993944502
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 4
- m_ConditionEvent: GestureRightWeight
- m_EventTreshold: 0.65
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944446}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.02
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944503
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 3
- m_ConditionEvent: GestureRightWeight
- m_EventTreshold: 0.65
- - m_ConditionMode: 6
- m_ConditionEvent: GestureRight
- m_EventTreshold: 1
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944475}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.02
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944504
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 7
- m_ConditionEvent: GestureRight
- m_EventTreshold: 1
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944460}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944505
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 3
- m_ConditionEvent: GestureRightWeight
- m_EventTreshold: 0.35
- - m_ConditionMode: 6
- m_ConditionEvent: GestureRight
- m_EventTreshold: 1
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944506}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.02
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1102 &9213968249993944506
-AnimatorState:
- serializedVersion: 6
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: Fist + trigger 40%
- m_Speed: 1
- m_CycleOffset: 0
- m_Transitions:
- - {fileID: 9213968249993944593}
- - {fileID: 9213968249993944594}
- 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:
---- !u!1101 &9213968249993944507
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 4
- m_ConditionEvent: GestureRightWeight
- m_EventTreshold: 0.15
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944441}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.02
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944508
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 6
- m_ConditionEvent: GestureRight
- m_EventTreshold: 3
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944509}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.1
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1102 &9213968249993944509
-AnimatorState:
- serializedVersion: 6
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: Point
- m_Speed: 1
- m_CycleOffset: 0
- m_Transitions:
- - {fileID: 9213968249993944462}
- m_StateMachineBehaviours: []
- m_Position: {x: 264, y: 36, 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: GestureRightWeight
---- !u!1101 &9213968249993944510
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 3
- m_ConditionEvent: GestureRightWeight
- m_EventTreshold: 0.45
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944499}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.02
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1102 &9213968249993944511
-AnimatorState:
- serializedVersion: 6
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: Point 0
- m_Speed: 1
- m_CycleOffset: 0
- m_Transitions: []
- m_StateMachineBehaviours: []
- m_Position: {x: 264, y: 36, z: 0}
- m_IKOnFeet: 0
- m_WriteDefaultValues: 1
- 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: GestureRightWeight
---- !u!1101 &9213968249993944512
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 4
- m_ConditionEvent: GestureRightWeight
- m_EventTreshold: 0.05
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944435}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.02
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944513
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 4
- m_ConditionEvent: GestureRightWeight
- m_EventTreshold: 0.25
- - m_ConditionMode: 3
- m_ConditionEvent: GestureRightWeight
- m_EventTreshold: 0.05
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944458}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.02
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944514
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 7
- m_ConditionEvent: GestureRight
- m_EventTreshold: 1
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944435}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.02
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944515
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 4
- m_ConditionEvent: GestureRightWeight
- m_EventTreshold: 0.05
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944435}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.02
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944516
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 7
- m_ConditionEvent: GestureRight
- m_EventTreshold: 1
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944460}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.1
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944517
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 4
- m_ConditionEvent: GestureRightWeight
- m_EventTreshold: 0.15
- - m_ConditionMode: 3
- m_ConditionEvent: GestureRightWeight
- m_EventTreshold: 0.05
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944441}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.02
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944518
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 7
- m_ConditionEvent: GestureRight
- m_EventTreshold: 1
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944435}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.02
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1102 &9213968249993944519
-AnimatorState:
- serializedVersion: 6
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: Gun reset
- m_Speed: 1
- m_CycleOffset: 0
- m_Transitions:
- - {fileID: 9213968249993944520}
- m_StateMachineBehaviours: []
- m_Position: {x: 264, y: 336, 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: GestureRightWeight
---- !u!1101 &9213968249993944520
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 7
- m_ConditionEvent: GestureRight
- m_EventTreshold: 6
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944474}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1102 &9213968249993944521
-AnimatorState:
- serializedVersion: 6
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: Thumbs up 0
- m_Speed: 1
- m_CycleOffset: 0
- m_Transitions: []
- m_StateMachineBehaviours: []
- m_Position: {x: 264, y: 216, z: 0}
- m_IKOnFeet: 0
- m_WriteDefaultValues: 1
- 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: GestureRightWeight
---- !u!1101 &9213968249993944522
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 3
- m_ConditionEvent: GestureRightWeight
- m_EventTreshold: 0.65
- - m_ConditionMode: 4
- m_ConditionEvent: GestureRightWeight
- m_EventTreshold: 0.85
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944475}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.02
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944523
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 6
- m_ConditionEvent: GestureRight
- m_EventTreshold: 1
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944433}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1102 &9213968249993944524
-AnimatorState:
- serializedVersion: 6
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: Fist + trigger 30%
- m_Speed: 1
- m_CycleOffset: 0
- m_Transitions:
- - {fileID: 9213968249993944657}
- - {fileID: 9213968249993944665}
- - {fileID: 9213968249993944510}
- 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:
---- !u!1101 &9213968249993944525
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 7
- m_ConditionEvent: GestureRight
- m_EventTreshold: 4
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944469}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.1
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!206 &9213968249993944526
-BlendTree:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: BlendTree
- m_Childs: []
- m_BlendParameter: HeightScale
- m_BlendParameterY: Blend
- m_MinThreshold: 0
- m_MaxThreshold: 1
- m_UseAutomaticThresholds: 1
- m_NormalizedBlendValues: 0
- m_BlendType: 0
---- !u!206 &9213968249993944527
-BlendTree:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: CrouchingLocomotion
- m_Childs:
- - serializedVersion: 2
- m_Motion: {fileID: 7400026, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0
- m_Position: {x: 0, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400024, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.25
- m_Position: {x: 0, y: 0.5}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400024, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.5
- m_Position: {x: 0, y: -0.5}
- m_TimeScale: -1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400028, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.75
- m_Position: {x: -0.5, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0.5
- m_DirectBlendParameter: MovementZ
- m_Mirror: 1
- - serializedVersion: 2
- m_Motion: {fileID: 7400028, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 1
- m_Position: {x: 0.5, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- m_BlendParameter: MovementX
- m_BlendParameterY: MovementZ
- m_MinThreshold: 0
- m_MaxThreshold: 1
- m_UseAutomaticThresholds: 1
- m_NormalizedBlendValues: 0
- m_BlendType: 2
---- !u!206 &9213968249993944528
-BlendTree:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: Prone2
- m_Childs:
- - serializedVersion: 2
- m_Motion: {fileID: 7400012, guid: 3c25f9a310357dc4d857376a700f6758, type: 3}
- m_Threshold: 0
- m_Position: {x: 0, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementX
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400010, guid: 3c25f9a310357dc4d857376a700f6758, type: 3}
- m_Threshold: 0.25
- m_Position: {x: 0, y: 1}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementX
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400010, guid: 3c25f9a310357dc4d857376a700f6758, type: 3}
- m_Threshold: 0.5
- m_Position: {x: 0, y: -1}
- m_TimeScale: -1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementX
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400010, guid: 3c25f9a310357dc4d857376a700f6758, type: 3}
- m_Threshold: 0.75
- m_Position: {x: 1, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementX
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400010, guid: 3c25f9a310357dc4d857376a700f6758, type: 3}
- m_Threshold: 1
- m_Position: {x: -1, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0.5
- m_DirectBlendParameter: MovementX
- m_Mirror: 1
- m_BlendParameter: MovementX
- m_BlendParameterY: MovementZ
- m_MinThreshold: 0
- m_MaxThreshold: 1
- m_UseAutomaticThresholds: 1
- m_NormalizedBlendValues: 0
- m_BlendType: 1
---- !u!206 &9213968249993944529
-BlendTree:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: Blend Tree
- m_Childs:
- - serializedVersion: 2
- m_Motion: {fileID: 7400012, guid: 3c25f9a310357dc4d857376a700f6758, type: 3}
- m_Threshold: 0.3
- m_Position: {x: 0, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementX
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400090, guid: 2dc9666c890a37946b1fbb67941e523d, type: 3}
- m_Threshold: 0.65
- m_Position: {x: 0, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400002, guid: 6844dcb6a866ab34fa96c67e39eab693, type: 3}
- m_Threshold: 1
- m_Position: {x: 0, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementX
- m_Mirror: 0
- m_BlendParameter: HeightScaleNOMOVE
- m_BlendParameterY: MovementZ
- m_MinThreshold: 0.3
- m_MaxThreshold: 1
- m_UseAutomaticThresholds: 0
- m_NormalizedBlendValues: 0
- m_BlendType: 0
---- !u!206 &9213968249993944530
-BlendTree:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: BlendTree
- m_Childs: []
- m_BlendParameter: HeightScale
- m_BlendParameterY: Blend
- m_MinThreshold: 0
- m_MaxThreshold: 1
- m_UseAutomaticThresholds: 1
- m_NormalizedBlendValues: 0
- m_BlendType: 0
---- !u!206 &9213968249993944531
-BlendTree:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: StandingLocomotion
- m_Childs:
- - serializedVersion: 2
- m_Motion: {fileID: 7400030, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0
- m_Position: {x: 0, y: 5.96}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400032, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.05882353
- m_Position: {x: 0, y: 3.4}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400034, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.11764706
- m_Position: {x: 0, y: 1.56}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400002, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.1764706
- m_Position: {x: 0, y: 0}
- m_TimeScale: 0.166
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400068, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.23529412
- m_Position: {x: 0, y: -1.56}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400036, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.29411766
- m_Position: {x: 0, y: -2.1}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400038, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.3529412
- m_Position: {x: -3, y: 0}
- m_TimeScale: 2
- m_CycleOffset: 0.5
- m_DirectBlendParameter: MovementZ
- m_Mirror: 1
- - serializedVersion: 2
- m_Motion: {fileID: 7400038, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.4117647
- m_Position: {x: -1.56, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0.5
- m_DirectBlendParameter: MovementZ
- m_Mirror: 1
- - serializedVersion: 2
- m_Motion: {fileID: 7400038, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.47058824
- m_Position: {x: 1.56, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400038, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.5294118
- m_Position: {x: 3, y: 0}
- m_TimeScale: 2
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400040, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.5882353
- m_Position: {x: -1.1, y: -1.1}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400042, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.64705884
- m_Position: {x: 1.1, y: -1.1}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400044, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.7058824
- m_Position: {x: -1.1, y: 1.1}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400046, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.7647059
- m_Position: {x: 1.1, y: 1.1}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400048, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.8235294
- m_Position: {x: -2.44, y: 2.44}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400050, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.88235295
- m_Position: {x: 2.4, y: 2.44}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400070, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.9411765
- m_Position: {x: -1.5, y: -1.5}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400072, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 1
- m_Position: {x: 1.5, y: -1.5}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- m_BlendParameter: MovementX
- m_BlendParameterY: MovementZ
- m_MinThreshold: 0
- m_MaxThreshold: 1
- m_UseAutomaticThresholds: 1
- m_NormalizedBlendValues: 0
- m_BlendType: 2
---- !u!206 &9213968249993944532
-BlendTree:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: ProneLocomotion
- m_Childs:
- - serializedVersion: 2
- m_Motion: {fileID: 7400004, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0
- m_Position: {x: 0, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementX
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400066, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.25
- m_Position: {x: 0, y: 1}
- m_TimeScale: 2
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementX
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400066, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.5
- m_Position: {x: 0, y: -1}
- m_TimeScale: -2
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementX
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400066, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.75
- m_Position: {x: 1, y: 0}
- m_TimeScale: 2
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementX
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400066, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 1
- m_Position: {x: -1, y: 0}
- m_TimeScale: 2
- m_CycleOffset: 0.5
- m_DirectBlendParameter: MovementX
- m_Mirror: 1
- m_BlendParameter: MovementX
- m_BlendParameterY: MovementZ
- m_MinThreshold: 0
- m_MaxThreshold: 1
- m_UseAutomaticThresholds: 0
- m_NormalizedBlendValues: 0
- m_BlendType: 1
---- !u!1101 &9213968249993944533
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions: []
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 0}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.25
- m_TransitionOffset: 0
- m_ExitTime: 0.8947368
- m_HasExitTime: 1
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944534
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 6
- m_ConditionEvent: HandGestureRight
- m_EventTreshold: 1
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944535}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 4
- m_TransitionOffset: 0
- m_ExitTime: 0.9
- m_HasExitTime: 0
- m_HasFixedDuration: 0
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1102 &9213968249993944535
-AnimatorState:
- serializedVersion: 6
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: Palm 0
- m_Speed: 1
- m_CycleOffset: 0
- m_Transitions: []
- m_StateMachineBehaviours: []
- m_Position: {x: 264, y: 156, z: 0}
- m_IKOnFeet: 0
- m_WriteDefaultValues: 1
- 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:
---- !u!1101 &9213968249993944536
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 6
- m_ConditionEvent: HandGestureRight
- m_EventTreshold: 3
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944537}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 4
- m_TransitionOffset: 0
- m_ExitTime: 0.9
- m_HasExitTime: 0
- m_HasFixedDuration: 0
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1102 &9213968249993944537
-AnimatorState:
- serializedVersion: 6
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: Peace 0
- m_Speed: 1
- m_CycleOffset: 0
- m_Transitions: []
- m_StateMachineBehaviours: []
- m_Position: {x: 264, y: 276, z: 0}
- m_IKOnFeet: 0
- m_WriteDefaultValues: 1
- 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:
---- !u!1101 &9213968249993944538
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 6
- m_ConditionEvent: HandGestureRight
- m_EventTreshold: 5
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944539}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 4
- m_TransitionOffset: 0
- m_ExitTime: 0.9
- m_HasExitTime: 0
- m_HasFixedDuration: 0
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1102 &9213968249993944539
-AnimatorState:
- serializedVersion: 6
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: Gun 0
- m_Speed: 1
- m_CycleOffset: 0
- m_Transitions: []
- m_StateMachineBehaviours: []
- m_Position: {x: 264, y: 336, z: 0}
- m_IKOnFeet: 0
- m_WriteDefaultValues: 1
- 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:
---- !u!1101 &9213968249993944540
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 6
- m_ConditionEvent: HandGestureRight
- m_EventTreshold: 2
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944541}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 4
- m_TransitionOffset: 0
- m_ExitTime: 0.9
- m_HasExitTime: 0
- m_HasFixedDuration: 0
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1102 &9213968249993944541
-AnimatorState:
- serializedVersion: 6
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: Point 0
- m_Speed: 1
- m_CycleOffset: 0
- m_Transitions: []
- m_StateMachineBehaviours: []
- m_Position: {x: 264, y: 36, z: 0}
- m_IKOnFeet: 0
- m_WriteDefaultValues: 1
- 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:
---- !u!1101 &9213968249993944542
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 6
- m_ConditionEvent: HandGestureRight
- m_EventTreshold: 0
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944543}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 4
- m_TransitionOffset: 0
- m_ExitTime: 0.9
- m_HasExitTime: 0
- m_HasFixedDuration: 0
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1102 &9213968249993944543
-AnimatorState:
- serializedVersion: 6
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: Fist 0
- m_Speed: 1
- m_CycleOffset: 0
- m_Transitions: []
- m_StateMachineBehaviours: []
- m_Position: {x: -60, y: 192, z: 0}
- m_IKOnFeet: 0
- m_WriteDefaultValues: 1
- 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:
---- !u!1101 &9213968249993944544
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 6
- m_ConditionEvent: HandGestureRight
- m_EventTreshold: 4
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944545}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 4
- m_TransitionOffset: 0
- m_ExitTime: 0.9
- m_HasExitTime: 0
- m_HasFixedDuration: 0
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1102 &9213968249993944545
-AnimatorState:
- serializedVersion: 6
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: RockNRoll 0
- m_Speed: 1
- m_CycleOffset: 0
- m_Transitions: []
- m_StateMachineBehaviours: []
- m_Position: {x: 264, y: 96, z: 0}
- m_IKOnFeet: 0
- m_WriteDefaultValues: 1
- 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:
---- !u!1101 &9213968249993944546
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 6
- m_ConditionEvent: HandGestureRight
- m_EventTreshold: 6
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944547}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 4
- m_TransitionOffset: 0
- m_ExitTime: 0.9
- m_HasExitTime: 0
- m_HasFixedDuration: 0
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1102 &9213968249993944547
-AnimatorState:
- serializedVersion: 6
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: Thumbs up 0
- m_Speed: 1
- m_CycleOffset: 0
- m_Transitions: []
- m_StateMachineBehaviours: []
- m_Position: {x: 264, y: 216, z: 0}
- m_IKOnFeet: 0
- m_WriteDefaultValues: 1
- 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:
---- !u!1101 &9213968249993944548
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: EmoteExit
- m_Conditions: []
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 0}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 1
- serializedVersion: 3
- m_TransitionDuration: 0.25
- m_TransitionOffset: 0
- m_ExitTime: 0.9423077
- m_HasExitTime: 1
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944549
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions: []
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 0}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 1
- serializedVersion: 3
- m_TransitionDuration: 0.25
- m_TransitionOffset: 0
- m_ExitTime: 0.82558143
- m_HasExitTime: 1
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1102 &9213968249993944550
-AnimatorState:
- serializedVersion: 6
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: Blend Tree
- m_Speed: 1
- m_CycleOffset: 0
- m_Transitions: []
- m_StateMachineBehaviours: []
- m_Position: {x: 120, y: 36, z: 0}
- m_IKOnFeet: 1
- m_WriteDefaultValues: 1
- 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:
---- !u!1102 &9213968249993944551
-AnimatorState:
- serializedVersion: 6
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: Blend Tree
- m_Speed: 1
- m_CycleOffset: 0
- m_Transitions: []
- m_StateMachineBehaviours: []
- m_Position: {x: 120, y: 36, z: 0}
- m_IKOnFeet: 1
- m_WriteDefaultValues: 1
- 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:
---- !u!1102 &9213968249993944552
-AnimatorState:
- serializedVersion: 6
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: Blend Tree
- m_Speed: 1
- m_CycleOffset: 0
- m_Transitions: []
- m_StateMachineBehaviours: []
- m_Position: {x: 120, y: 36, z: 0}
- m_IKOnFeet: 1
- m_WriteDefaultValues: 1
- 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:
---- !u!1102 &9213968249993944553
-AnimatorState:
- serializedVersion: 6
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: Blend Tree
- m_Speed: 1
- m_CycleOffset: 0
- m_Transitions: []
- m_StateMachineBehaviours: []
- m_Position: {x: 120, y: 36, z: 0}
- m_IKOnFeet: 1
- m_WriteDefaultValues: 1
- 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:
---- !u!1102 &9213968249993944554
-AnimatorState:
- serializedVersion: 6
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: Blend Tree
- m_Speed: 1
- m_CycleOffset: 0
- m_Transitions: []
- m_StateMachineBehaviours: []
- m_Position: {x: 120, y: 36, z: 0}
- m_IKOnFeet: 1
- m_WriteDefaultValues: 1
- 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:
---- !u!1102 &9213968249993944555
-AnimatorState:
- serializedVersion: 6
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: Open
- m_Speed: 1
- m_CycleOffset: 0
- m_Transitions:
- - {fileID: 9213968249993944643}
- m_StateMachineBehaviours: []
- m_Position: {x: 264, y: 156, 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: GestureRightWeight
---- !u!1102 &9213968249993944556
-AnimatorState:
- serializedVersion: 6
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: Peace
- m_Speed: 1
- m_CycleOffset: 0
- m_Transitions:
- - {fileID: 9213968249993944525}
- m_StateMachineBehaviours: []
- m_Position: {x: 264, y: 276, 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: GestureRightWeight
---- !u!1102 &9213968249993944557
-AnimatorState:
- serializedVersion: 6
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: Gun
- m_Speed: 1
- m_CycleOffset: 0
- m_Transitions:
- - {fileID: 9213968249993944642}
- m_StateMachineBehaviours: []
- m_Position: {x: 264, y: 336, 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: GestureRightWeight
---- !u!1102 &9213968249993944558
-AnimatorState:
- serializedVersion: 6
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: Fist + trigger 90% reset 1
- m_Speed: 1
- m_CycleOffset: 0
- m_Transitions:
- - {fileID: 9213968249993944592}
- - {fileID: 9213968249993944658}
- - {fileID: 9213968249993944591}
- - {fileID: 9213968249993944659}
- - {fileID: 9213968249993944660}
- - {fileID: 9213968249993944480}
- 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:
---- !u!1101 &9213968249993944559
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 6
- m_ConditionEvent: GestureRight
- m_EventTreshold: 2
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944555}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.1
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!114 &9213968249993944560
-MonoBehaviour:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 0}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: b658310f3202fc64aac64aa6e603b79a, type: 3}
- m_Name:
- m_EditorClassIdentifier:
---- !u!206 &9213968249993944561
-BlendTree:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: StandingLocomotion
- m_Childs:
- - serializedVersion: 2
- m_Motion: {fileID: 7400030, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0
- m_Position: {x: 0, y: 5.96}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400032, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.05882353
- m_Position: {x: 0, y: 3.4}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400034, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.11764706
- m_Position: {x: 0, y: 1.56}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400002, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.1764706
- m_Position: {x: 0, y: 0}
- m_TimeScale: 0.166
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400068, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.23529412
- m_Position: {x: 0, y: -1.56}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400036, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.29411766
- m_Position: {x: 0, y: -2.1}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400038, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.3529412
- m_Position: {x: -3, y: 0}
- m_TimeScale: 2
- m_CycleOffset: 0.5
- m_DirectBlendParameter: MovementZ
- m_Mirror: 1
- - serializedVersion: 2
- m_Motion: {fileID: 7400038, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.4117647
- m_Position: {x: -1.56, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0.5
- m_DirectBlendParameter: MovementZ
- m_Mirror: 1
- - serializedVersion: 2
- m_Motion: {fileID: 7400038, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.47058824
- m_Position: {x: 1.56, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400038, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.5294118
- m_Position: {x: 3, y: 0}
- m_TimeScale: 2
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400040, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.5882353
- m_Position: {x: -1.1, y: -1.1}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400042, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.64705884
- m_Position: {x: 1.1, y: -1.1}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400044, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.7058824
- m_Position: {x: -1.1, y: 1.1}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400046, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.7647059
- m_Position: {x: 1.1, y: 1.1}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400048, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.8235294
- m_Position: {x: -2.44, y: 2.44}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400050, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.88235295
- m_Position: {x: 2.4, y: 2.44}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400070, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.9411765
- m_Position: {x: -1.5, y: -1.5}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400072, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 1
- m_Position: {x: 1.5, y: -1.5}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- m_BlendParameter: MovementX
- m_BlendParameterY: MovementZ
- m_MinThreshold: 0
- m_MaxThreshold: 1
- m_UseAutomaticThresholds: 1
- m_NormalizedBlendValues: 0
- m_BlendType: 2
---- !u!206 &9213968249993944562
-BlendTree:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: StandingLocomotion
- m_Childs:
- - serializedVersion: 2
- m_Motion: {fileID: 7400030, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0
- m_Position: {x: 0, y: 5.96}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400032, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.05882353
- m_Position: {x: 0, y: 3.4}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400034, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.11764706
- m_Position: {x: 0, y: 1.56}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400002, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.1764706
- m_Position: {x: 0, y: 0}
- m_TimeScale: 0.166
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400068, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.23529412
- m_Position: {x: 0, y: -1.56}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400036, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.29411766
- m_Position: {x: 0, y: -2.1}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400038, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.3529412
- m_Position: {x: -3, y: 0}
- m_TimeScale: 2
- m_CycleOffset: 0.5
- m_DirectBlendParameter: MovementZ
- m_Mirror: 1
- - serializedVersion: 2
- m_Motion: {fileID: 7400038, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.4117647
- m_Position: {x: -1.56, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0.5
- m_DirectBlendParameter: MovementZ
- m_Mirror: 1
- - serializedVersion: 2
- m_Motion: {fileID: 7400038, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.47058824
- m_Position: {x: 1.56, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400038, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.5294118
- m_Position: {x: 3, y: 0}
- m_TimeScale: 2
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400040, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.5882353
- m_Position: {x: -1.1, y: -1.1}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400042, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.64705884
- m_Position: {x: 1.1, y: -1.1}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400044, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.7058824
- m_Position: {x: -1.1, y: 1.1}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400046, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.7647059
- m_Position: {x: 1.1, y: 1.1}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400048, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.8235294
- m_Position: {x: -2.44, y: 2.44}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400050, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.88235295
- m_Position: {x: 2.4, y: 2.44}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400070, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.9411765
- m_Position: {x: -1.5, y: -1.5}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400072, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 1
- m_Position: {x: 1.5, y: -1.5}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- m_BlendParameter: MovementX
- m_BlendParameterY: MovementZ
- m_MinThreshold: 0
- m_MaxThreshold: 1
- m_UseAutomaticThresholds: 1
- m_NormalizedBlendValues: 0
- m_BlendType: 2
---- !u!206 &9213968249993944563
-BlendTree:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: Blend Tree
- m_Childs: []
- m_BlendParameter: MovementX
- m_BlendParameterY: MovementX
- m_MinThreshold: 0
- m_MaxThreshold: 1
- m_UseAutomaticThresholds: 1
- m_NormalizedBlendValues: 0
- m_BlendType: 0
---- !u!206 &9213968249993944564
-BlendTree:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: LocomotionHeightBlend
- m_Childs:
- - serializedVersion: 2
- m_Motion: {fileID: 9213968249993944565}
- m_Threshold: 0.5
- m_Position: {x: 0, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementX
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 9213968249993944566}
- m_Threshold: 0.68
- m_Position: {x: 0, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 9213968249993944567}
- m_Threshold: 1
- m_Position: {x: 0, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- m_BlendParameter: Upright
- m_BlendParameterY: MovementZ
- m_MinThreshold: 0.5
- m_MaxThreshold: 1
- m_UseAutomaticThresholds: 0
- m_NormalizedBlendValues: 0
- m_BlendType: 0
---- !u!206 &9213968249993944565
-BlendTree:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: ProneLocomotion
- m_Childs:
- - serializedVersion: 2
- m_Motion: {fileID: 7400004, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0
- m_Position: {x: 0, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementX
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400066, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.25
- m_Position: {x: 0, y: 0.1}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementX
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400066, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.5
- m_Position: {x: 0, y: -0.1}
- m_TimeScale: -1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementX
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400066, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.75
- m_Position: {x: 0.1, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementX
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400066, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 1
- m_Position: {x: -0.1, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0.5
- m_DirectBlendParameter: MovementX
- m_Mirror: 1
- m_BlendParameter: MovementX
- m_BlendParameterY: MovementZ
- m_MinThreshold: 0
- m_MaxThreshold: 1
- m_UseAutomaticThresholds: 0
- m_NormalizedBlendValues: 0
- m_BlendType: 1
---- !u!206 &9213968249993944566
-BlendTree:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: CrouchingLocomotion
- m_Childs:
- - serializedVersion: 2
- m_Motion: {fileID: 7400026, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0
- m_Position: {x: 0, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400024, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.25
- m_Position: {x: 0, y: 0.5}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400024, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.5
- m_Position: {x: 0, y: -0.5}
- m_TimeScale: -1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400028, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.75
- m_Position: {x: -0.5, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0.5
- m_DirectBlendParameter: MovementZ
- m_Mirror: 1
- - serializedVersion: 2
- m_Motion: {fileID: 7400028, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 1
- m_Position: {x: 0.5, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- m_BlendParameter: MovementX
- m_BlendParameterY: MovementZ
- m_MinThreshold: 0
- m_MaxThreshold: 1
- m_UseAutomaticThresholds: 1
- m_NormalizedBlendValues: 0
- m_BlendType: 2
---- !u!206 &9213968249993944567
-BlendTree:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: StandingLocomotion
- m_Childs:
- - serializedVersion: 2
- m_Motion: {fileID: 7400030, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0
- m_Position: {x: 0, y: 5.96}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400032, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.05882353
- m_Position: {x: 0, y: 3.4}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400034, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.11764706
- m_Position: {x: 0, y: 1.56}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400002, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.1764706
- m_Position: {x: 0, y: 0}
- m_TimeScale: 0.166
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400068, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.23529412
- m_Position: {x: 0, y: -1.56}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400036, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.29411766
- m_Position: {x: 0, y: -2.1}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400038, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.3529412
- m_Position: {x: -3, y: 0}
- m_TimeScale: 2
- m_CycleOffset: 0.5
- m_DirectBlendParameter: MovementZ
- m_Mirror: 1
- - serializedVersion: 2
- m_Motion: {fileID: 7400038, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.4117647
- m_Position: {x: -1.56, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0.5
- m_DirectBlendParameter: MovementZ
- m_Mirror: 1
- - serializedVersion: 2
- m_Motion: {fileID: 7400038, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.47058824
- m_Position: {x: 1.56, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400038, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.5294118
- m_Position: {x: 3, y: 0}
- m_TimeScale: 2
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400040, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.5882353
- m_Position: {x: -1.1, y: -1.1}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400042, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.64705884
- m_Position: {x: 1.1, y: -1.1}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400044, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.7058824
- m_Position: {x: -1.1, y: 1.1}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400046, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.7647059
- m_Position: {x: 1.1, y: 1.1}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400048, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.8235294
- m_Position: {x: -2.44, y: 2.44}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400050, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.88235295
- m_Position: {x: 2.4, y: 2.44}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400070, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.9411765
- m_Position: {x: -1.5, y: -1.5}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400072, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 1
- m_Position: {x: 1.5, y: -1.5}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- m_BlendParameter: MovementX
- m_BlendParameterY: MovementZ
- m_MinThreshold: 0
- m_MaxThreshold: 1
- m_UseAutomaticThresholds: 1
- m_NormalizedBlendValues: 0
- m_BlendType: 2
---- !u!206 &9213968249993944568
-BlendTree:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: ProneLocomotion
- m_Childs:
- - serializedVersion: 2
- m_Motion: {fileID: 7400004, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0
- m_Position: {x: 0, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementX
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400066, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.25
- m_Position: {x: 0, y: 0.1}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementX
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400066, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.5
- m_Position: {x: 0, y: -0.1}
- m_TimeScale: -1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementX
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400066, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.75
- m_Position: {x: 0.1, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementX
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400066, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 1
- m_Position: {x: -0.1, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0.5
- m_DirectBlendParameter: MovementX
- m_Mirror: 1
- m_BlendParameter: MovementX
- m_BlendParameterY: MovementZ
- m_MinThreshold: 0
- m_MaxThreshold: 1
- m_UseAutomaticThresholds: 0
- m_NormalizedBlendValues: 0
- m_BlendType: 1
---- !u!206 &9213968249993944569
-BlendTree:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: Blend Tree
- m_Childs: []
- m_BlendParameter: LocomotionX
- m_BlendParameterY: LocomotionX
- m_MinThreshold: 0
- m_MaxThreshold: 1
- m_UseAutomaticThresholds: 1
- m_NormalizedBlendValues: 0
- m_BlendType: 0
---- !u!206 &9213968249993944570
-BlendTree:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: StandingLocomotion
- m_Childs:
- - serializedVersion: 2
- m_Motion: {fileID: 7400030, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0
- m_Position: {x: 0, y: 5.96}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400032, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.05882353
- m_Position: {x: 0, y: 3.4}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400034, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.11764706
- m_Position: {x: 0, y: 1.56}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400002, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.1764706
- m_Position: {x: 0, y: 0}
- m_TimeScale: 0.166
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400068, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.23529412
- m_Position: {x: 0, y: -1.56}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400036, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.29411766
- m_Position: {x: 0, y: -2.1}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400038, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.3529412
- m_Position: {x: -3, y: 0}
- m_TimeScale: 2
- m_CycleOffset: 0.5
- m_DirectBlendParameter: MovementZ
- m_Mirror: 1
- - serializedVersion: 2
- m_Motion: {fileID: 7400038, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.4117647
- m_Position: {x: -1.56, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0.5
- m_DirectBlendParameter: MovementZ
- m_Mirror: 1
- - serializedVersion: 2
- m_Motion: {fileID: 7400038, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.47058824
- m_Position: {x: 1.56, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400038, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.5294118
- m_Position: {x: 3, y: 0}
- m_TimeScale: 2
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400040, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.5882353
- m_Position: {x: -1.1, y: -1.1}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400042, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.64705884
- m_Position: {x: 1.1, y: -1.1}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400044, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.7058824
- m_Position: {x: -1.1, y: 1.1}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400046, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.7647059
- m_Position: {x: 1.1, y: 1.1}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400048, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.8235294
- m_Position: {x: -2.44, y: 2.44}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400050, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.88235295
- m_Position: {x: 2.4, y: 2.44}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400070, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.9411765
- m_Position: {x: -1.5, y: -1.5}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400072, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 1
- m_Position: {x: 1.5, y: -1.5}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- m_BlendParameter: MovementX
- m_BlendParameterY: MovementZ
- m_MinThreshold: 0
- m_MaxThreshold: 1
- m_UseAutomaticThresholds: 1
- m_NormalizedBlendValues: 0
- m_BlendType: 2
---- !u!206 &9213968249993944571
-BlendTree:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: CrouchingLocomotion
- m_Childs:
- - serializedVersion: 2
- m_Motion: {fileID: 7400026, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0
- m_Position: {x: 0, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400024, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.25
- m_Position: {x: 0, y: 0.5}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400024, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.5
- m_Position: {x: 0, y: -0.5}
- m_TimeScale: -1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400028, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.75
- m_Position: {x: -0.5, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0.5
- m_DirectBlendParameter: MovementZ
- m_Mirror: 1
- - serializedVersion: 2
- m_Motion: {fileID: 7400028, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 1
- m_Position: {x: 0.5, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- m_BlendParameter: MovementX
- m_BlendParameterY: MovementZ
- m_MinThreshold: 0
- m_MaxThreshold: 1
- m_UseAutomaticThresholds: 1
- m_NormalizedBlendValues: 0
- m_BlendType: 2
---- !u!206 &9213968249993944572
-BlendTree:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: StandingLocomotion
- m_Childs:
- - serializedVersion: 2
- m_Motion: {fileID: 7400030, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0
- m_Position: {x: 0, y: 5.96}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400032, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.05882353
- m_Position: {x: 0, y: 3.4}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400034, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.11764706
- m_Position: {x: 0, y: 1.56}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400002, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.1764706
- m_Position: {x: 0, y: 0}
- m_TimeScale: 0.166
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400068, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.23529412
- m_Position: {x: 0, y: -1.56}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400036, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.29411766
- m_Position: {x: 0, y: -2.1}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400038, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.3529412
- m_Position: {x: -3, y: 0}
- m_TimeScale: 2
- m_CycleOffset: 0.5
- m_DirectBlendParameter: MovementZ
- m_Mirror: 1
- - serializedVersion: 2
- m_Motion: {fileID: 7400038, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.4117647
- m_Position: {x: -1.56, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0.5
- m_DirectBlendParameter: MovementZ
- m_Mirror: 1
- - serializedVersion: 2
- m_Motion: {fileID: 7400038, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.47058824
- m_Position: {x: 1.56, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400038, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.5294118
- m_Position: {x: 3, y: 0}
- m_TimeScale: 2
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400040, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.5882353
- m_Position: {x: -1.1, y: -1.1}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400042, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.64705884
- m_Position: {x: 1.1, y: -1.1}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400044, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.7058824
- m_Position: {x: -1.1, y: 1.1}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400046, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.7647059
- m_Position: {x: 1.1, y: 1.1}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400048, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.8235294
- m_Position: {x: -2.44, y: 2.44}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400050, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.88235295
- m_Position: {x: 2.4, y: 2.44}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400070, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.9411765
- m_Position: {x: -1.5, y: -1.5}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400072, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 1
- m_Position: {x: 1.5, y: -1.5}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- m_BlendParameter: MovementX
- m_BlendParameterY: MovementZ
- m_MinThreshold: 0
- m_MaxThreshold: 1
- m_UseAutomaticThresholds: 1
- m_NormalizedBlendValues: 0
- m_BlendType: 2
---- !u!206 &9213968249993944573
-BlendTree:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: LocomotionHeightBlend
- m_Childs:
- - serializedVersion: 2
- m_Motion: {fileID: 9213968249993944574}
- m_Threshold: 0.5
- m_Position: {x: 0, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementX
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 9213968249993944575}
- m_Threshold: 0.68
- m_Position: {x: 0, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 9213968249993944576}
- m_Threshold: 1
- m_Position: {x: 0, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- m_BlendParameter: HeightScale
- m_BlendParameterY: MovementZ
- m_MinThreshold: 0.5
- m_MaxThreshold: 1
- m_UseAutomaticThresholds: 0
- m_NormalizedBlendValues: 0
- m_BlendType: 0
---- !u!206 &9213968249993944574
-BlendTree:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: ProneLocomotion
- m_Childs:
- - serializedVersion: 2
- m_Motion: {fileID: 7400004, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0
- m_Position: {x: 0, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementX
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400066, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.25
- m_Position: {x: 0, y: 0.1}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementX
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400066, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.5
- m_Position: {x: 0, y: -0.1}
- m_TimeScale: -1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementX
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400066, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.75
- m_Position: {x: 0.1, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementX
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400066, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 1
- m_Position: {x: -0.1, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0.5
- m_DirectBlendParameter: MovementX
- m_Mirror: 1
- m_BlendParameter: MovementX
- m_BlendParameterY: MovementZ
- m_MinThreshold: 0
- m_MaxThreshold: 1
- m_UseAutomaticThresholds: 0
- m_NormalizedBlendValues: 0
- m_BlendType: 1
---- !u!206 &9213968249993944575
-BlendTree:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: CrouchingLocomotion
- m_Childs:
- - serializedVersion: 2
- m_Motion: {fileID: 7400026, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0
- m_Position: {x: 0, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400024, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.25
- m_Position: {x: 0, y: 0.5}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400024, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.5
- m_Position: {x: 0, y: -0.5}
- m_TimeScale: -1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400028, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.75
- m_Position: {x: -0.5, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0.5
- m_DirectBlendParameter: MovementZ
- m_Mirror: 1
- - serializedVersion: 2
- m_Motion: {fileID: 7400028, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 1
- m_Position: {x: 0.5, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- m_BlendParameter: MovementX
- m_BlendParameterY: MovementZ
- m_MinThreshold: 0
- m_MaxThreshold: 1
- m_UseAutomaticThresholds: 1
- m_NormalizedBlendValues: 0
- m_BlendType: 2
---- !u!206 &9213968249993944576
-BlendTree:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: StandingLocomotion
- m_Childs:
- - serializedVersion: 2
- m_Motion: {fileID: 7400030, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0
- m_Position: {x: 0, y: 5.96}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400032, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.05882353
- m_Position: {x: 0, y: 3.4}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400034, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.11764706
- m_Position: {x: 0, y: 1.56}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400002, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.1764706
- m_Position: {x: 0, y: 0}
- m_TimeScale: 0.166
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400068, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.23529412
- m_Position: {x: 0, y: -1.56}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400036, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.29411766
- m_Position: {x: 0, y: -2.1}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400038, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.3529412
- m_Position: {x: -3, y: 0}
- m_TimeScale: 2
- m_CycleOffset: 0.5
- m_DirectBlendParameter: MovementZ
- m_Mirror: 1
- - serializedVersion: 2
- m_Motion: {fileID: 7400038, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.4117647
- m_Position: {x: -1.56, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0.5
- m_DirectBlendParameter: MovementZ
- m_Mirror: 1
- - serializedVersion: 2
- m_Motion: {fileID: 7400038, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.47058824
- m_Position: {x: 1.56, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400038, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.5294118
- m_Position: {x: 3, y: 0}
- m_TimeScale: 2
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400040, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.5882353
- m_Position: {x: -1.1, y: -1.1}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400042, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.64705884
- m_Position: {x: 1.1, y: -1.1}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400044, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.7058824
- m_Position: {x: -1.1, y: 1.1}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400046, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.7647059
- m_Position: {x: 1.1, y: 1.1}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400048, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.8235294
- m_Position: {x: -2.44, y: 2.44}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400050, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.88235295
- m_Position: {x: 2.4, y: 2.44}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400070, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.9411765
- m_Position: {x: -1.5, y: -1.5}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400072, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 1
- m_Position: {x: 1.5, y: -1.5}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- m_BlendParameter: MovementX
- m_BlendParameterY: MovementZ
- m_MinThreshold: 0
- m_MaxThreshold: 1
- m_UseAutomaticThresholds: 1
- m_NormalizedBlendValues: 0
- m_BlendType: 2
---- !u!206 &9213968249993944577
-BlendTree:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: LocomotionHeightBlend
- m_Childs:
- - serializedVersion: 2
- m_Motion: {fileID: 9213968249993944578}
- m_Threshold: 0.5
- m_Position: {x: 0, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementX
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 9213968249993944579}
- m_Threshold: 0.68
- m_Position: {x: 0, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 9213968249993944561}
- m_Threshold: 1
- m_Position: {x: 0, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- m_BlendParameter: Upright
- m_BlendParameterY: MovementZ
- m_MinThreshold: 0.5
- m_MaxThreshold: 1
- m_UseAutomaticThresholds: 0
- m_NormalizedBlendValues: 0
- m_BlendType: 0
---- !u!206 &9213968249993944578
-BlendTree:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: ProneLocomotion
- m_Childs:
- - serializedVersion: 2
- m_Motion: {fileID: 7400004, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0
- m_Position: {x: 0, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementX
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400066, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.25
- m_Position: {x: 0, y: 0.1}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementX
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400066, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.5
- m_Position: {x: 0, y: -0.1}
- m_TimeScale: -1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementX
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400066, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.75
- m_Position: {x: 0.1, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementX
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400066, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 1
- m_Position: {x: -0.1, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0.5
- m_DirectBlendParameter: MovementX
- m_Mirror: 1
- m_BlendParameter: MovementX
- m_BlendParameterY: MovementZ
- m_MinThreshold: 0
- m_MaxThreshold: 1
- m_UseAutomaticThresholds: 0
- m_NormalizedBlendValues: 0
- m_BlendType: 1
---- !u!206 &9213968249993944579
-BlendTree:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: CrouchingLocomotion
- m_Childs:
- - serializedVersion: 2
- m_Motion: {fileID: 7400026, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0
- m_Position: {x: 0, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400024, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.25
- m_Position: {x: 0, y: 0.5}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400024, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.5
- m_Position: {x: 0, y: -0.5}
- m_TimeScale: -1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400028, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.75
- m_Position: {x: -0.5, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0.5
- m_DirectBlendParameter: MovementZ
- m_Mirror: 1
- - serializedVersion: 2
- m_Motion: {fileID: 7400028, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 1
- m_Position: {x: 0.5, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- m_BlendParameter: MovementX
- m_BlendParameterY: MovementZ
- m_MinThreshold: 0
- m_MaxThreshold: 1
- m_UseAutomaticThresholds: 1
- m_NormalizedBlendValues: 0
- m_BlendType: 2
---- !u!206 &9213968249993944580
-BlendTree:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: StandingLocomotion
- m_Childs:
- - serializedVersion: 2
- m_Motion: {fileID: 7400030, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0
- m_Position: {x: 0, y: 5.96}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400032, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.05882353
- m_Position: {x: 0, y: 3.4}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400034, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.11764706
- m_Position: {x: 0, y: 1.56}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400002, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.1764706
- m_Position: {x: 0, y: 0}
- m_TimeScale: 0.166
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400068, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.23529412
- m_Position: {x: 0, y: -1.56}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400036, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.29411766
- m_Position: {x: 0, y: -2.1}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400038, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.3529412
- m_Position: {x: -3, y: 0}
- m_TimeScale: 2
- m_CycleOffset: 0.5
- m_DirectBlendParameter: MovementZ
- m_Mirror: 1
- - serializedVersion: 2
- m_Motion: {fileID: 7400038, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.4117647
- m_Position: {x: -1.56, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0.5
- m_DirectBlendParameter: MovementZ
- m_Mirror: 1
- - serializedVersion: 2
- m_Motion: {fileID: 7400038, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.47058824
- m_Position: {x: 1.56, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400038, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.5294118
- m_Position: {x: 3, y: 0}
- m_TimeScale: 2
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400040, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.5882353
- m_Position: {x: -1.1, y: -1.1}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400042, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.64705884
- m_Position: {x: 1.1, y: -1.1}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400044, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.7058824
- m_Position: {x: -1.1, y: 1.1}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400046, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.7647059
- m_Position: {x: 1.1, y: 1.1}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400048, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.8235294
- m_Position: {x: -2.44, y: 2.44}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400050, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.88235295
- m_Position: {x: 2.4, y: 2.44}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400070, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.9411765
- m_Position: {x: -1.5, y: -1.5}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400072, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 1
- m_Position: {x: 1.5, y: -1.5}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- m_BlendParameter: MovementX
- m_BlendParameterY: MovementZ
- m_MinThreshold: 0
- m_MaxThreshold: 1
- m_UseAutomaticThresholds: 1
- m_NormalizedBlendValues: 0
- m_BlendType: 2
---- !u!206 &9213968249993944581
-BlendTree:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: StandingLocomotion
- m_Childs:
- - serializedVersion: 2
- m_Motion: {fileID: 7400030, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0
- m_Position: {x: 0, y: 5.96}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400032, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.05882353
- m_Position: {x: 0, y: 3.4}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400034, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.11764706
- m_Position: {x: 0, y: 1.56}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400002, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.1764706
- m_Position: {x: 0, y: 0}
- m_TimeScale: 0.166
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400068, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.23529412
- m_Position: {x: 0, y: -1.56}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400036, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.29411766
- m_Position: {x: 0, y: -2.1}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400038, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.3529412
- m_Position: {x: -3, y: 0}
- m_TimeScale: 2
- m_CycleOffset: 0.5
- m_DirectBlendParameter: MovementZ
- m_Mirror: 1
- - serializedVersion: 2
- m_Motion: {fileID: 7400038, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.4117647
- m_Position: {x: -1.56, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0.5
- m_DirectBlendParameter: MovementZ
- m_Mirror: 1
- - serializedVersion: 2
- m_Motion: {fileID: 7400038, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.47058824
- m_Position: {x: 1.56, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400038, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.5294118
- m_Position: {x: 3, y: 0}
- m_TimeScale: 2
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400040, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.5882353
- m_Position: {x: -1.1, y: -1.1}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400042, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.64705884
- m_Position: {x: 1.1, y: -1.1}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400044, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.7058824
- m_Position: {x: -1.1, y: 1.1}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400046, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.7647059
- m_Position: {x: 1.1, y: 1.1}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400048, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.8235294
- m_Position: {x: -2.44, y: 2.44}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400050, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.88235295
- m_Position: {x: 2.4, y: 2.44}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400070, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.9411765
- m_Position: {x: -1.5, y: -1.5}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400072, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 1
- m_Position: {x: 1.5, y: -1.5}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- m_BlendParameter: MovementX
- m_BlendParameterY: MovementZ
- m_MinThreshold: 0
- m_MaxThreshold: 1
- m_UseAutomaticThresholds: 1
- m_NormalizedBlendValues: 0
- m_BlendType: 2
---- !u!206 &9213968249993944582
-BlendTree:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: CrouchingLocomotion
- m_Childs:
- - serializedVersion: 2
- m_Motion: {fileID: 7400026, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0
- m_Position: {x: 0, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400024, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.25
- m_Position: {x: 0, y: 0.5}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400024, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.5
- m_Position: {x: 0, y: -0.5}
- m_TimeScale: -1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400028, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.75
- m_Position: {x: -0.5, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0.5
- m_DirectBlendParameter: MovementZ
- m_Mirror: 1
- - serializedVersion: 2
- m_Motion: {fileID: 7400028, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 1
- m_Position: {x: 0.5, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- m_BlendParameter: MovementX
- m_BlendParameterY: MovementZ
- m_MinThreshold: 0
- m_MaxThreshold: 1
- m_UseAutomaticThresholds: 1
- m_NormalizedBlendValues: 0
- m_BlendType: 2
---- !u!206 &9213968249993944583
-BlendTree:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: ProneLocomotion
- m_Childs:
- - serializedVersion: 2
- m_Motion: {fileID: 7400004, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0
- m_Position: {x: 0, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementX
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400066, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.25
- m_Position: {x: 0, y: 0.1}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementX
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400066, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.5
- m_Position: {x: 0, y: -0.1}
- m_TimeScale: -1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementX
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400066, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.75
- m_Position: {x: 0.1, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementX
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400066, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 1
- m_Position: {x: -0.1, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0.5
- m_DirectBlendParameter: MovementX
- m_Mirror: 1
- m_BlendParameter: MovementX
- m_BlendParameterY: MovementZ
- m_MinThreshold: 0
- m_MaxThreshold: 1
- m_UseAutomaticThresholds: 0
- m_NormalizedBlendValues: 0
- m_BlendType: 1
---- !u!206 &9213968249993944584
-BlendTree:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: CrouchingLocomotion
- m_Childs:
- - serializedVersion: 2
- m_Motion: {fileID: 7400026, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0
- m_Position: {x: 0, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400024, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.25
- m_Position: {x: 0, y: 0.5}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400024, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.5
- m_Position: {x: 0, y: -0.5}
- m_TimeScale: -1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400028, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.75
- m_Position: {x: -0.5, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0.5
- m_DirectBlendParameter: MovementZ
- m_Mirror: 1
- - serializedVersion: 2
- m_Motion: {fileID: 7400028, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 1
- m_Position: {x: 0.5, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- m_BlendParameter: MovementX
- m_BlendParameterY: MovementZ
- m_MinThreshold: 0
- m_MaxThreshold: 1
- m_UseAutomaticThresholds: 1
- m_NormalizedBlendValues: 0
- m_BlendType: 2
---- !u!206 &9213968249993944585
-BlendTree:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: ProneLocomotion
- m_Childs:
- - serializedVersion: 2
- m_Motion: {fileID: 7400004, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0
- m_Position: {x: 0, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementX
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400066, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.25
- m_Position: {x: 0, y: 0.1}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementX
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400066, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.5
- m_Position: {x: 0, y: -0.1}
- m_TimeScale: -1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementX
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400066, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.75
- m_Position: {x: 0.1, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementX
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400066, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 1
- m_Position: {x: -0.1, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0.5
- m_DirectBlendParameter: MovementX
- m_Mirror: 1
- m_BlendParameter: MovementX
- m_BlendParameterY: MovementZ
- m_MinThreshold: 0
- m_MaxThreshold: 1
- m_UseAutomaticThresholds: 0
- m_NormalizedBlendValues: 0
- m_BlendType: 1
---- !u!206 &9213968249993944586
-BlendTree:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: CrouchingLocomotion
- m_Childs:
- - serializedVersion: 2
- m_Motion: {fileID: 7400026, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0
- m_Position: {x: 0, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400024, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.25
- m_Position: {x: 0, y: 0.5}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400024, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.5
- m_Position: {x: 0, y: -0.5}
- m_TimeScale: -1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400028, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.75
- m_Position: {x: -0.5, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0.5
- m_DirectBlendParameter: MovementZ
- m_Mirror: 1
- - serializedVersion: 2
- m_Motion: {fileID: 7400028, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 1
- m_Position: {x: 0.5, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- m_BlendParameter: MovementX
- m_BlendParameterY: MovementZ
- m_MinThreshold: 0
- m_MaxThreshold: 1
- m_UseAutomaticThresholds: 1
- m_NormalizedBlendValues: 0
- m_BlendType: 2
---- !u!206 &9213968249993944587
-BlendTree:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: CrouchingLocomotion
- m_Childs:
- - serializedVersion: 2
- m_Motion: {fileID: 7400026, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0
- m_Position: {x: 0, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400024, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.25
- m_Position: {x: 0, y: 0.5}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400024, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.5
- m_Position: {x: 0, y: -0.5}
- m_TimeScale: -1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400028, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.75
- m_Position: {x: -0.5, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0.5
- m_DirectBlendParameter: MovementZ
- m_Mirror: 1
- - serializedVersion: 2
- m_Motion: {fileID: 7400028, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 1
- m_Position: {x: 0.5, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- m_BlendParameter: MovementX
- m_BlendParameterY: MovementZ
- m_MinThreshold: 0
- m_MaxThreshold: 1
- m_UseAutomaticThresholds: 1
- m_NormalizedBlendValues: 0
- m_BlendType: 2
---- !u!206 &9213968249993944588
-BlendTree:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: LocomotionHeightBlend
- m_Childs:
- - serializedVersion: 2
- m_Motion: {fileID: 9213968249993944589}
- m_Threshold: 0.5
- m_Position: {x: 0, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementX
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 9213968249993944587}
- m_Threshold: 0.68
- m_Position: {x: 0, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 9213968249993944570}
- m_Threshold: 1
- m_Position: {x: 0, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementZ
- m_Mirror: 0
- m_BlendParameter: Upright
- m_BlendParameterY: MovementZ
- m_MinThreshold: 0.5
- m_MaxThreshold: 1
- m_UseAutomaticThresholds: 0
- m_NormalizedBlendValues: 0
- m_BlendType: 0
---- !u!206 &9213968249993944589
-BlendTree:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: ProneLocomotion
- m_Childs:
- - serializedVersion: 2
- m_Motion: {fileID: 7400004, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0
- m_Position: {x: 0, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementX
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400066, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.25
- m_Position: {x: 0, y: 0.1}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementX
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400066, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.5
- m_Position: {x: 0, y: -0.1}
- m_TimeScale: -1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementX
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400066, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.75
- m_Position: {x: 0.1, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementX
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400066, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 1
- m_Position: {x: -0.1, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0.5
- m_DirectBlendParameter: MovementX
- m_Mirror: 1
- m_BlendParameter: MovementX
- m_BlendParameterY: MovementZ
- m_MinThreshold: 0
- m_MaxThreshold: 1
- m_UseAutomaticThresholds: 0
- m_NormalizedBlendValues: 0
- m_BlendType: 1
---- !u!206 &9213968249993944590
-BlendTree:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: ProneLocomotion
- m_Childs:
- - serializedVersion: 2
- m_Motion: {fileID: 7400004, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0
- m_Position: {x: 0, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementX
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400066, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.25
- m_Position: {x: 0, y: 0.1}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementX
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400066, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.5
- m_Position: {x: 0, y: -0.1}
- m_TimeScale: -1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementX
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400066, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 0.75
- m_Position: {x: 0.1, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: MovementX
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400066, guid: 7e5debf235ac2d54397a268de3328672, type: 3}
- m_Threshold: 1
- m_Position: {x: -0.1, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0.5
- m_DirectBlendParameter: MovementX
- m_Mirror: 1
- m_BlendParameter: MovementX
- m_BlendParameterY: MovementZ
- m_MinThreshold: 0
- m_MaxThreshold: 1
- m_UseAutomaticThresholds: 0
- m_NormalizedBlendValues: 0
- m_BlendType: 1
---- !u!1101 &9213968249993944591
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 4
- m_ConditionEvent: GestureRightWeight
- m_EventTreshold: 0.65
- - m_ConditionMode: 3
- m_ConditionEvent: GestureRightWeight
- m_EventTreshold: 0.45
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944446}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.02
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944592
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 4
- m_ConditionEvent: GestureRightWeight
- m_EventTreshold: 0.75
- - m_ConditionMode: 3
- m_ConditionEvent: GestureRightWeight
- m_EventTreshold: 0.65
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944501}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.02
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944593
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 3
- m_ConditionEvent: GestureRightWeight
- m_EventTreshold: 0.45
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944499}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.02
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944594
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 4
- m_ConditionEvent: GestureRightWeight
- m_EventTreshold: 0.35
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944436}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.02
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944595
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 4
- m_ConditionEvent: GestureRightWeight
- m_EventTreshold: 0.45
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944481}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.01
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944596
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions: []
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 0}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.25
- m_TransitionOffset: 0
- m_ExitTime: 0.8076923
- m_HasExitTime: 1
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944597
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions: []
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 0}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.25
- m_TransitionOffset: 0
- m_ExitTime: 0.75
- m_HasExitTime: 1
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944598
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 3
- m_ConditionEvent: Emote
- m_EventTreshold: 0
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 0}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 1
- serializedVersion: 3
- m_TransitionDuration: 0.25
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944599
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions: []
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 0}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.25
- m_TransitionOffset: 0
- m_ExitTime: 0.8076923
- m_HasExitTime: 1
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944600
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 3
- m_ConditionEvent: Upright
- m_EventTreshold: 0.52
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 0}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.5
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944601
-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: FeetTracking
- m_EventTreshold: 0
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 0}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 1
- serializedVersion: 3
- m_TransitionDuration: 0.25
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944602
-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: FeetTracking
- m_EventTreshold: 0
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 0}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 1
- serializedVersion: 3
- m_TransitionDuration: 0.25
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944603
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 2
- m_ConditionEvent: Grounded
- m_EventTreshold: 0
- - m_ConditionMode: 3
- m_ConditionEvent: HeightScale
- m_EventTreshold: 0.9
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 0}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.25
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944604
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 4
- m_ConditionEvent: Upright
- m_EventTreshold: 0.5
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 0}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.5
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944605
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions: []
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 0}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 1
- serializedVersion: 3
- m_TransitionDuration: 0.25
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 1
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944606
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 6
- m_ConditionEvent: GestureRight
- m_EventTreshold: 2
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944607}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.1
- m_TransitionOffset: 0
- m_ExitTime: 1
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 0
---- !u!1102 &9213968249993944607
-AnimatorState:
- serializedVersion: 6
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: Open
- m_Speed: 1
- m_CycleOffset: 0
- m_Transitions: []
- m_StateMachineBehaviours: []
- m_Position: {x: 264, y: 156, z: 0}
- m_IKOnFeet: 0
- m_WriteDefaultValues: 0
- m_Mirror: 0
- m_SpeedParameterActive: 0
- m_MirrorParameterActive: 0
- m_CycleOffsetParameterActive: 0
- m_TimeParameterActive: 1
- m_Motion: {fileID: 0}
- m_Tag:
- m_SpeedParameter:
- m_MirrorParameter:
- m_CycleOffsetParameter:
- m_TimeParameter: GestureRightWeight
---- !u!1101 &9213968249993944608
-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: AFK
- m_EventTreshold: 0
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 0}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 1
- serializedVersion: 3
- m_TransitionDuration: 1
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944609
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions: []
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 0}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.25
- m_TransitionOffset: 0
- m_ExitTime: 0.93697476
- m_HasExitTime: 1
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944610
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 3
- m_ConditionEvent: Upright
- m_EventTreshold: 0.52
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 0}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.5
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944611
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 6
- m_ConditionEvent: GestureRight
- m_EventTreshold: 1
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944612}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.1
- m_TransitionOffset: 0
- m_ExitTime: 1
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 0
---- !u!1102 &9213968249993944612
-AnimatorState:
- serializedVersion: 6
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: Fist
- m_Speed: 1
- m_CycleOffset: 0
- m_Transitions: []
- m_StateMachineBehaviours: []
- m_Position: {x: -60, y: 192, z: 0}
- m_IKOnFeet: 0
- m_WriteDefaultValues: 0
- m_Mirror: 0
- m_SpeedParameterActive: 0
- m_MirrorParameterActive: 0
- m_CycleOffsetParameterActive: 0
- m_TimeParameterActive: 1
- m_Motion: {fileID: 0}
- m_Tag:
- m_SpeedParameter:
- m_MirrorParameter:
- m_CycleOffsetParameter:
- m_TimeParameter: GestureRightWeight
---- !u!1101 &9213968249993944613
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 6
- m_ConditionEvent: GestureRight
- m_EventTreshold: 5
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944614}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.1
- m_TransitionOffset: 0
- m_ExitTime: 1
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 0
---- !u!1102 &9213968249993944614
-AnimatorState:
- serializedVersion: 6
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: RockNRoll
- m_Speed: 1
- m_CycleOffset: 0
- m_Transitions: []
- m_StateMachineBehaviours: []
- m_Position: {x: 264, y: 96, z: 0}
- m_IKOnFeet: 0
- m_WriteDefaultValues: 0
- m_Mirror: 0
- m_SpeedParameterActive: 0
- m_MirrorParameterActive: 0
- m_CycleOffsetParameterActive: 0
- m_TimeParameterActive: 1
- m_Motion: {fileID: 0}
- m_Tag:
- m_SpeedParameter:
- m_MirrorParameter:
- m_CycleOffsetParameter:
- m_TimeParameter: GestureRightWeight
---- !u!1101 &9213968249993944615
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 4
- m_ConditionEvent: TrackMoveZ
- m_EventTreshold: 0.1
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 0}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.25
- m_TransitionOffset: 0
- m_ExitTime: 0.93697476
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944616
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 6
- m_ConditionEvent: GestureRight
- m_EventTreshold: 3
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944617}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.1
- m_TransitionOffset: 0
- m_ExitTime: 1
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 0
---- !u!1102 &9213968249993944617
-AnimatorState:
- serializedVersion: 6
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: Point
- m_Speed: 1
- m_CycleOffset: 0
- m_Transitions: []
- m_StateMachineBehaviours: []
- m_Position: {x: 264, y: 36, z: 0}
- m_IKOnFeet: 0
- m_WriteDefaultValues: 0
- m_Mirror: 0
- m_SpeedParameterActive: 0
- m_MirrorParameterActive: 0
- m_CycleOffsetParameterActive: 0
- m_TimeParameterActive: 1
- m_Motion: {fileID: 0}
- m_Tag:
- m_SpeedParameter:
- m_MirrorParameter:
- m_CycleOffsetParameter:
- m_TimeParameter: GestureRightWeight
---- !u!1101 &9213968249993944618
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 3
- m_ConditionEvent: Upright
- m_EventTreshold: 0.52
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 0}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.5
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944619
-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: Grounded
- m_EventTreshold: 0
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 0}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.04
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944620
-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: AFK
- m_EventTreshold: 0
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 0}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 1
- serializedVersion: 3
- m_TransitionDuration: 1
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944621
-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: AFK
- m_EventTreshold: 0
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 0}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 1
- serializedVersion: 3
- m_TransitionDuration: 1
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944622
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 6
- m_ConditionEvent: GestureRight
- m_EventTreshold: 7
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944623}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.1
- m_TransitionOffset: 0
- m_ExitTime: 1
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 0
---- !u!1102 &9213968249993944623
-AnimatorState:
- serializedVersion: 6
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: Thumbs up
- m_Speed: 1
- m_CycleOffset: 0
- m_Transitions: []
- m_StateMachineBehaviours: []
- m_Position: {x: 264, y: 216, z: 0}
- m_IKOnFeet: 0
- m_WriteDefaultValues: 0
- m_Mirror: 0
- m_SpeedParameterActive: 0
- m_MirrorParameterActive: 0
- m_CycleOffsetParameterActive: 0
- m_TimeParameterActive: 1
- m_Motion: {fileID: 0}
- m_Tag:
- m_SpeedParameter:
- m_MirrorParameter:
- m_CycleOffsetParameter:
- m_TimeParameter: GestureRightWeight
---- !u!1101 &9213968249993944624
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 3
- m_ConditionEvent: Emote
- m_EventTreshold: 0
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 0}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 1
- serializedVersion: 3
- m_TransitionDuration: 0.25
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944625
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 3
- m_ConditionEvent: Upright
- m_EventTreshold: 0.7
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 0}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.5
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944626
-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: FeetTracking
- m_EventTreshold: 0
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 0}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 1
- serializedVersion: 3
- m_TransitionDuration: 0.25
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944627
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 6
- m_ConditionEvent: GestureRight
- m_EventTreshold: 0
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944628}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.1
- m_TransitionOffset: 0
- m_ExitTime: 1
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 0
---- !u!1102 &9213968249993944628
-AnimatorState:
- serializedVersion: 6
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: Idle
- m_Speed: 1
- m_CycleOffset: 0
- m_Transitions: []
- m_StateMachineBehaviours: []
- m_Position: {x: 50, y: 50, z: 0}
- m_IKOnFeet: 0
- m_WriteDefaultValues: 1
- 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:
---- !u!1101 &9213968249993944629
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 3
- m_ConditionEvent: Emote
- m_EventTreshold: 0
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 0}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 1
- serializedVersion: 3
- m_TransitionDuration: 0.25
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944630
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 2
- m_ConditionEvent: Grounded
- m_EventTreshold: 0
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 110226965, guid: 12cd9f87c1f675b4685e0848a464d0cf, type: 2}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.25
- m_TransitionOffset: 0
- m_ExitTime: 0.9
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944631
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 4
- m_ConditionEvent: TrackMoveZ
- m_EventTreshold: 0.1
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 0}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.25
- m_TransitionOffset: 0
- m_ExitTime: 0.93697476
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944632
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions: []
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 0}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.5
- m_TransitionOffset: 0
- m_ExitTime: 0.75
- m_HasExitTime: 1
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944633
-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: Seated
- m_EventTreshold: 0
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 0}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.5
- m_TransitionOffset: 0
- m_ExitTime: 0.75
- m_HasExitTime: 1
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944634
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 6
- m_ConditionEvent: GestureRight
- m_EventTreshold: 4
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944635}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.1
- m_TransitionOffset: 0
- m_ExitTime: 1
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 0
---- !u!1102 &9213968249993944635
-AnimatorState:
- serializedVersion: 6
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: Peace
- m_Speed: 1
- m_CycleOffset: 0
- m_Transitions: []
- m_StateMachineBehaviours: []
- m_Position: {x: 264, y: 276, z: 0}
- m_IKOnFeet: 0
- m_WriteDefaultValues: 0
- m_Mirror: 0
- m_SpeedParameterActive: 0
- m_MirrorParameterActive: 0
- m_CycleOffsetParameterActive: 0
- m_TimeParameterActive: 1
- m_Motion: {fileID: 0}
- m_Tag:
- m_SpeedParameter:
- m_MirrorParameter:
- m_CycleOffsetParameter:
- m_TimeParameter: GestureRightWeight
---- !u!1101 &9213968249993944636
-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: Grounded
- m_EventTreshold: 0
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 0}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.039085507
- m_TransitionOffset: 0
- m_ExitTime: 0.72727275
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944637
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 4
- m_ConditionEvent: TrackMoveX
- m_EventTreshold: 0.1
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 0}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.25
- m_TransitionOffset: 0
- m_ExitTime: 0.93697476
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944638
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 6
- m_ConditionEvent: GestureRight
- m_EventTreshold: 6
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944639}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.1
- m_TransitionOffset: 0
- m_ExitTime: 1
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 0
---- !u!1102 &9213968249993944639
-AnimatorState:
- serializedVersion: 6
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: Gun
- m_Speed: 1
- m_CycleOffset: 0
- m_Transitions: []
- m_StateMachineBehaviours: []
- m_Position: {x: 264, y: 336, z: 0}
- m_IKOnFeet: 0
- m_WriteDefaultValues: 0
- m_Mirror: 0
- m_SpeedParameterActive: 0
- m_MirrorParameterActive: 0
- m_CycleOffsetParameterActive: 0
- m_TimeParameterActive: 1
- m_Motion: {fileID: 0}
- m_Tag:
- m_SpeedParameter:
- m_MirrorParameter:
- m_CycleOffsetParameter:
- m_TimeParameter: GestureRightWeight
---- !u!1101 &9213968249993944640
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 3
- m_ConditionEvent: TrackMoveZ
- m_EventTreshold: -0.1
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 0}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.25
- m_TransitionOffset: 0
- m_ExitTime: 0.93697476
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944641
-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: Seated
- m_EventTreshold: 0
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 0}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.5
- m_TransitionOffset: 0
- m_ExitTime: 0.75
- m_HasExitTime: 1
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944642
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 7
- m_ConditionEvent: GestureRight
- m_EventTreshold: 6
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944519}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.1
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944643
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 7
- m_ConditionEvent: GestureRight
- m_EventTreshold: 2
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944490}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.1
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944644
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 6
- m_ConditionEvent: GestureRight
- m_EventTreshold: 4
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944556}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.1
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944645
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 6
- m_ConditionEvent: GestureRight
- m_EventTreshold: 6
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944557}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.1
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1102 &9213968249993944646
-AnimatorState:
- serializedVersion: 6
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: HeightBlend 0
- m_Speed: 1
- m_CycleOffset: 0
- m_Transitions: []
- m_StateMachineBehaviours: []
- m_Position: {x: 50, y: 50, z: 0}
- m_IKOnFeet: 1
- m_WriteDefaultValues: 1
- 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:
---- !u!1102 &9213968249993944647
-AnimatorState:
- serializedVersion: 6
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: HeightBlend 0
- m_Speed: 1
- m_CycleOffset: 0
- m_Transitions: []
- m_StateMachineBehaviours: []
- m_Position: {x: 50, y: 50, z: 0}
- m_IKOnFeet: 1
- m_WriteDefaultValues: 1
- 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:
---- !u!1109 &9213968249993944648
-AnimatorTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 2
- m_ConditionEvent: Seated
- m_EventTreshold: 0
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 0}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 1
- serializedVersion: 1
---- !u!1109 &9213968249993944649
-AnimatorTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 3
- m_ConditionEvent: Emote
- m_EventTreshold: 0
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 0}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 1
---- !u!1109 &9213968249993944650
-AnimatorTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 2
- m_ConditionEvent: Grounded
- m_EventTreshold: 0
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 0}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 1
---- !u!1109 &9213968249993944651
-AnimatorTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 6
- m_ConditionEvent: Emote
- m_EventTreshold: 0
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 0}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 1
- serializedVersion: 1
---- !u!1109 &9213968249993944652
-AnimatorTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 1
- m_ConditionEvent: FeetTracking
- m_EventTreshold: 0
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 0}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 1
---- !u!1102 &9213968249993944653
-AnimatorState:
- serializedVersion: 6
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: Gun 0
- m_Speed: 1
- m_CycleOffset: 0
- m_Transitions: []
- m_StateMachineBehaviours: []
- m_Position: {x: 264, y: 336, z: 0}
- m_IKOnFeet: 0
- m_WriteDefaultValues: 1
- 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: GestureRightWeight
---- !u!1101 &9213968249993944654
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 6
- m_ConditionEvent: GestureRight
- m_EventTreshold: 1
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944433}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944655
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 4
- m_ConditionEvent: GestureRightWeight
- m_EventTreshold: 0.55
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944466}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.02
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944656
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 3
- m_ConditionEvent: GestureRightWeight
- m_EventTreshold: 0.25
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944524}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.02
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944657
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 3
- m_ConditionEvent: GestureRightWeight
- m_EventTreshold: 0.35
- - m_ConditionMode: 4
- m_ConditionEvent: GestureRightWeight
- m_EventTreshold: 0.45
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944506}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.02
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944658
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 7
- m_ConditionEvent: GestureRight
- m_EventTreshold: 1
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944446}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.02
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944659
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 3
- m_ConditionEvent: GestureRightWeight
- m_EventTreshold: 0.75
- - m_ConditionMode: 6
- m_ConditionEvent: GestureRight
- m_EventTreshold: 1
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944482}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.02
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944660
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 4
- m_ConditionEvent: GestureRightWeight
- m_EventTreshold: 0.45
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944481}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.02
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1102 &9213968249993944661
-AnimatorState:
- serializedVersion: 6
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: Fist 0
- m_Speed: 1
- m_CycleOffset: 0
- m_Transitions: []
- m_StateMachineBehaviours: []
- m_Position: {x: -60, y: 192, z: 0}
- m_IKOnFeet: 0
- m_WriteDefaultValues: 1
- 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: GestureRightWeight
---- !u!1101 &9213968249993944662
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 3
- m_ConditionEvent: GestureRightWeight
- m_EventTreshold: 0.55
- - m_ConditionMode: 4
- m_ConditionEvent: GestureRightWeight
- m_EventTreshold: 0.65
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944459}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.02
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1101 &9213968249993944663
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 3
- m_ConditionEvent: GestureRightWeight
- m_EventTreshold: 0.85
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944445}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.02
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
---- !u!1102 &9213968249993944664
-AnimatorState:
- serializedVersion: 6
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: Peace 0
- m_Speed: 1
- m_CycleOffset: 0
- m_Transitions: []
- m_StateMachineBehaviours: []
- m_Position: {x: 264, y: 276, z: 0}
- m_IKOnFeet: 0
- m_WriteDefaultValues: 1
- 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: GestureRightWeight
---- !u!1101 &9213968249993944665
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions:
- - m_ConditionMode: 4
- m_ConditionEvent: GestureRightWeight
- m_EventTreshold: 0.25
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 9213968249993944458}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0.02
- m_TransitionOffset: 0
- m_ExitTime: 0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 0
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
diff --git a/Fonts/Bitmaps/font-0.png b/Fonts/Bitmaps/font-0.png
deleted file mode 100644
index a106708..0000000
--- a/Fonts/Bitmaps/font-0.png
+++ /dev/null
Binary files differ
diff --git a/Fonts/Bitmaps/font-0.png.meta b/Fonts/Bitmaps/font-0.png.meta
deleted file mode 100644
index b70fd04..0000000
--- a/Fonts/Bitmaps/font-0.png.meta
+++ /dev/null
@@ -1,116 +0,0 @@
-fileFormatVersion: 2
-guid: 0417deb9fee97e24e9099569bed34c6c
-TextureImporter:
- internalIDToNameTable: []
- externalObjects: {}
- serializedVersion: 11
- mipmaps:
- mipMapMode: 1
- enableMipMap: 1
- sRGBTexture: 1
- linearTexture: 0
- fadeOut: 0
- borderMipMap: 0
- mipMapsPreserveCoverage: 1
- alphaTestReferenceValue: 0
- mipMapFadeDistanceStart: 1
- mipMapFadeDistanceEnd: 3
- bumpmap:
- convertToNormalMap: 0
- externalNormalMap: 0
- heightScale: 0.25
- normalMapFilter: 0
- isReadable: 0
- streamingMipmaps: 1
- streamingMipmapsPriority: 0
- grayScaleToAlpha: 0
- generateCubemap: 6
- cubemapConvolution: 0
- seamlessCubemap: 0
- textureFormat: 1
- maxTextureSize: 4096
- textureSettings:
- serializedVersion: 2
- filterMode: 1
- aniso: 1
- mipBias: 0
- wrapU: 0
- wrapV: 0
- wrapW: 0
- nPOTScale: 1
- lightmap: 0
- compressionQuality: 100
- spriteMode: 0
- spriteExtrude: 1
- spriteMeshType: 1
- alignment: 0
- spritePivot: {x: 0.5, y: 0.5}
- spritePixelsToUnits: 100
- spriteBorder: {x: 0, y: 0, z: 0, w: 0}
- spriteGenerateFallbackPhysicsShape: 1
- alphaUsage: 1
- alphaIsTransparency: 0
- spriteTessellationDetail: -1
- textureType: 0
- textureShape: 1
- singleChannelComponent: 0
- maxTextureSizeSet: 0
- compressionQualitySet: 0
- textureFormatSet: 0
- applyGammaDecoding: 0
- platformSettings:
- - serializedVersion: 3
- buildTarget: DefaultTexturePlatform
- maxTextureSize: 4096
- resizeAlgorithm: 1
- textureFormat: -1
- textureCompression: 2
- compressionQuality: 100
- crunchedCompression: 0
- allowsAlphaSplitting: 0
- overridden: 0
- androidETC2FallbackOverride: 0
- forceMaximumCompressionQuality_BC6H_BC7: 0
- - serializedVersion: 3
- buildTarget: Standalone
- maxTextureSize: 4096
- resizeAlgorithm: 1
- textureFormat: -1
- textureCompression: 2
- compressionQuality: 100
- crunchedCompression: 0
- allowsAlphaSplitting: 0
- overridden: 0
- androidETC2FallbackOverride: 0
- forceMaximumCompressionQuality_BC6H_BC7: 0
- - serializedVersion: 3
- buildTarget: Android
- maxTextureSize: 4096
- resizeAlgorithm: 1
- textureFormat: -1
- textureCompression: 2
- compressionQuality: 100
- crunchedCompression: 0
- allowsAlphaSplitting: 0
- overridden: 0
- androidETC2FallbackOverride: 0
- forceMaximumCompressionQuality_BC6H_BC7: 0
- spriteSheet:
- serializedVersion: 2
- sprites: []
- outline: []
- physicsShape: []
- bones: []
- spriteID:
- internalID: 0
- vertices: []
- indices:
- edges: []
- weights: []
- secondaryTextures: []
- spritePackingTag:
- pSDRemoveMatte: 0
- pSDShowRemoveMatteOption: 0
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Fonts/Bitmaps/font-1.png b/Fonts/Bitmaps/font-1.png
deleted file mode 100644
index 95ea483..0000000
--- a/Fonts/Bitmaps/font-1.png
+++ /dev/null
Binary files differ
diff --git a/Fonts/Bitmaps/font-1.png.meta b/Fonts/Bitmaps/font-1.png.meta
deleted file mode 100644
index feacf61..0000000
--- a/Fonts/Bitmaps/font-1.png.meta
+++ /dev/null
@@ -1,116 +0,0 @@
-fileFormatVersion: 2
-guid: 45d1d35ef90dd5742bab73718b1fa64e
-TextureImporter:
- internalIDToNameTable: []
- externalObjects: {}
- serializedVersion: 11
- mipmaps:
- mipMapMode: 1
- enableMipMap: 1
- sRGBTexture: 1
- linearTexture: 0
- fadeOut: 0
- borderMipMap: 0
- mipMapsPreserveCoverage: 1
- alphaTestReferenceValue: 0
- mipMapFadeDistanceStart: 1
- mipMapFadeDistanceEnd: 3
- bumpmap:
- convertToNormalMap: 0
- externalNormalMap: 0
- heightScale: 0.25
- normalMapFilter: 0
- isReadable: 0
- streamingMipmaps: 1
- streamingMipmapsPriority: 0
- grayScaleToAlpha: 0
- generateCubemap: 6
- cubemapConvolution: 0
- seamlessCubemap: 0
- textureFormat: 1
- maxTextureSize: 2048
- textureSettings:
- serializedVersion: 2
- filterMode: 1
- aniso: 1
- mipBias: 0
- wrapU: 0
- wrapV: 0
- wrapW: 0
- nPOTScale: 1
- lightmap: 0
- compressionQuality: 100
- spriteMode: 0
- spriteExtrude: 1
- spriteMeshType: 1
- alignment: 0
- spritePivot: {x: 0.5, y: 0.5}
- spritePixelsToUnits: 100
- spriteBorder: {x: 0, y: 0, z: 0, w: 0}
- spriteGenerateFallbackPhysicsShape: 1
- alphaUsage: 1
- alphaIsTransparency: 0
- spriteTessellationDetail: -1
- textureType: 0
- textureShape: 1
- singleChannelComponent: 0
- maxTextureSizeSet: 0
- compressionQualitySet: 0
- textureFormatSet: 0
- applyGammaDecoding: 0
- platformSettings:
- - serializedVersion: 3
- buildTarget: DefaultTexturePlatform
- maxTextureSize: 4096
- resizeAlgorithm: 1
- textureFormat: -1
- textureCompression: 2
- compressionQuality: 100
- crunchedCompression: 0
- allowsAlphaSplitting: 0
- overridden: 0
- androidETC2FallbackOverride: 0
- forceMaximumCompressionQuality_BC6H_BC7: 0
- - serializedVersion: 3
- buildTarget: Standalone
- maxTextureSize: 4096
- resizeAlgorithm: 1
- textureFormat: -1
- textureCompression: 2
- compressionQuality: 100
- crunchedCompression: 0
- allowsAlphaSplitting: 0
- overridden: 0
- androidETC2FallbackOverride: 0
- forceMaximumCompressionQuality_BC6H_BC7: 0
- - serializedVersion: 3
- buildTarget: Android
- maxTextureSize: 4096
- resizeAlgorithm: 1
- textureFormat: -1
- textureCompression: 2
- compressionQuality: 100
- crunchedCompression: 0
- allowsAlphaSplitting: 0
- overridden: 0
- androidETC2FallbackOverride: 0
- forceMaximumCompressionQuality_BC6H_BC7: 0
- spriteSheet:
- serializedVersion: 2
- sprites: []
- outline: []
- physicsShape: []
- bones: []
- spriteID:
- internalID: 0
- vertices: []
- indices:
- edges: []
- weights: []
- secondaryTextures: []
- spritePackingTag:
- pSDRemoveMatte: 0
- pSDShowRemoveMatteOption: 0
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Fonts/Bitmaps/font-2.png b/Fonts/Bitmaps/font-2.png
deleted file mode 100644
index 484be7e..0000000
--- a/Fonts/Bitmaps/font-2.png
+++ /dev/null
Binary files differ
diff --git a/Fonts/Bitmaps/font-2.png.meta b/Fonts/Bitmaps/font-2.png.meta
deleted file mode 100644
index dda53c9..0000000
--- a/Fonts/Bitmaps/font-2.png.meta
+++ /dev/null
@@ -1,116 +0,0 @@
-fileFormatVersion: 2
-guid: fbb9dcb303ae5fc46a1b4f6b82b55a16
-TextureImporter:
- internalIDToNameTable: []
- externalObjects: {}
- serializedVersion: 11
- mipmaps:
- mipMapMode: 1
- enableMipMap: 1
- sRGBTexture: 1
- linearTexture: 0
- fadeOut: 0
- borderMipMap: 0
- mipMapsPreserveCoverage: 1
- alphaTestReferenceValue: 0
- mipMapFadeDistanceStart: 1
- mipMapFadeDistanceEnd: 3
- bumpmap:
- convertToNormalMap: 0
- externalNormalMap: 0
- heightScale: 0.25
- normalMapFilter: 0
- isReadable: 0
- streamingMipmaps: 1
- streamingMipmapsPriority: 0
- grayScaleToAlpha: 0
- generateCubemap: 6
- cubemapConvolution: 0
- seamlessCubemap: 0
- textureFormat: 1
- maxTextureSize: 2048
- textureSettings:
- serializedVersion: 2
- filterMode: 1
- aniso: 1
- mipBias: 0
- wrapU: 0
- wrapV: 0
- wrapW: 0
- nPOTScale: 1
- lightmap: 0
- compressionQuality: 100
- spriteMode: 0
- spriteExtrude: 1
- spriteMeshType: 1
- alignment: 0
- spritePivot: {x: 0.5, y: 0.5}
- spritePixelsToUnits: 100
- spriteBorder: {x: 0, y: 0, z: 0, w: 0}
- spriteGenerateFallbackPhysicsShape: 1
- alphaUsage: 1
- alphaIsTransparency: 0
- spriteTessellationDetail: -1
- textureType: 0
- textureShape: 1
- singleChannelComponent: 0
- maxTextureSizeSet: 0
- compressionQualitySet: 0
- textureFormatSet: 0
- applyGammaDecoding: 0
- platformSettings:
- - serializedVersion: 3
- buildTarget: DefaultTexturePlatform
- maxTextureSize: 4096
- resizeAlgorithm: 1
- textureFormat: -1
- textureCompression: 2
- compressionQuality: 100
- crunchedCompression: 0
- allowsAlphaSplitting: 0
- overridden: 0
- androidETC2FallbackOverride: 0
- forceMaximumCompressionQuality_BC6H_BC7: 0
- - serializedVersion: 3
- buildTarget: Standalone
- maxTextureSize: 4096
- resizeAlgorithm: 1
- textureFormat: -1
- textureCompression: 2
- compressionQuality: 100
- crunchedCompression: 0
- allowsAlphaSplitting: 0
- overridden: 0
- androidETC2FallbackOverride: 0
- forceMaximumCompressionQuality_BC6H_BC7: 0
- - serializedVersion: 3
- buildTarget: Android
- maxTextureSize: 4096
- resizeAlgorithm: 1
- textureFormat: -1
- textureCompression: 2
- compressionQuality: 100
- crunchedCompression: 0
- allowsAlphaSplitting: 0
- overridden: 0
- androidETC2FallbackOverride: 0
- forceMaximumCompressionQuality_BC6H_BC7: 0
- spriteSheet:
- serializedVersion: 2
- sprites: []
- outline: []
- physicsShape: []
- bones: []
- spriteID:
- internalID: 0
- vertices: []
- indices:
- edges: []
- weights: []
- secondaryTextures: []
- spritePackingTag:
- pSDRemoveMatte: 0
- pSDShowRemoveMatteOption: 0
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Fonts/Bitmaps/font-3.png b/Fonts/Bitmaps/font-3.png
deleted file mode 100644
index 0c00da4..0000000
--- a/Fonts/Bitmaps/font-3.png
+++ /dev/null
Binary files differ
diff --git a/Fonts/Bitmaps/font-3.png.meta b/Fonts/Bitmaps/font-3.png.meta
deleted file mode 100644
index 186b8d6..0000000
--- a/Fonts/Bitmaps/font-3.png.meta
+++ /dev/null
@@ -1,116 +0,0 @@
-fileFormatVersion: 2
-guid: cf2fc1dc6a21e9d42bf08d8148dba0b7
-TextureImporter:
- internalIDToNameTable: []
- externalObjects: {}
- serializedVersion: 11
- mipmaps:
- mipMapMode: 1
- enableMipMap: 1
- sRGBTexture: 1
- linearTexture: 0
- fadeOut: 0
- borderMipMap: 0
- mipMapsPreserveCoverage: 1
- alphaTestReferenceValue: 0
- mipMapFadeDistanceStart: 1
- mipMapFadeDistanceEnd: 3
- bumpmap:
- convertToNormalMap: 0
- externalNormalMap: 0
- heightScale: 0.25
- normalMapFilter: 0
- isReadable: 0
- streamingMipmaps: 1
- streamingMipmapsPriority: 0
- grayScaleToAlpha: 0
- generateCubemap: 6
- cubemapConvolution: 0
- seamlessCubemap: 0
- textureFormat: 1
- maxTextureSize: 2048
- textureSettings:
- serializedVersion: 2
- filterMode: 1
- aniso: 1
- mipBias: 0
- wrapU: 0
- wrapV: 0
- wrapW: 0
- nPOTScale: 1
- lightmap: 0
- compressionQuality: 100
- spriteMode: 0
- spriteExtrude: 1
- spriteMeshType: 1
- alignment: 0
- spritePivot: {x: 0.5, y: 0.5}
- spritePixelsToUnits: 100
- spriteBorder: {x: 0, y: 0, z: 0, w: 0}
- spriteGenerateFallbackPhysicsShape: 1
- alphaUsage: 1
- alphaIsTransparency: 0
- spriteTessellationDetail: -1
- textureType: 0
- textureShape: 1
- singleChannelComponent: 0
- maxTextureSizeSet: 0
- compressionQualitySet: 0
- textureFormatSet: 0
- applyGammaDecoding: 0
- platformSettings:
- - serializedVersion: 3
- buildTarget: DefaultTexturePlatform
- maxTextureSize: 4096
- resizeAlgorithm: 1
- textureFormat: -1
- textureCompression: 2
- compressionQuality: 100
- crunchedCompression: 0
- allowsAlphaSplitting: 0
- overridden: 0
- androidETC2FallbackOverride: 0
- forceMaximumCompressionQuality_BC6H_BC7: 0
- - serializedVersion: 3
- buildTarget: Standalone
- maxTextureSize: 4096
- resizeAlgorithm: 1
- textureFormat: -1
- textureCompression: 2
- compressionQuality: 100
- crunchedCompression: 0
- allowsAlphaSplitting: 0
- overridden: 0
- androidETC2FallbackOverride: 0
- forceMaximumCompressionQuality_BC6H_BC7: 0
- - serializedVersion: 3
- buildTarget: Android
- maxTextureSize: 4096
- resizeAlgorithm: 1
- textureFormat: -1
- textureCompression: 2
- compressionQuality: 100
- crunchedCompression: 0
- allowsAlphaSplitting: 0
- overridden: 0
- androidETC2FallbackOverride: 0
- forceMaximumCompressionQuality_BC6H_BC7: 0
- spriteSheet:
- serializedVersion: 2
- sprites: []
- outline: []
- physicsShape: []
- bones: []
- spriteID:
- internalID: 0
- vertices: []
- indices:
- edges: []
- weights: []
- secondaryTextures: []
- spritePackingTag:
- pSDRemoveMatte: 0
- pSDShowRemoveMatteOption: 0
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Fonts/Bitmaps/font-4.png b/Fonts/Bitmaps/font-4.png
deleted file mode 100644
index 01a7818..0000000
--- a/Fonts/Bitmaps/font-4.png
+++ /dev/null
Binary files differ
diff --git a/Fonts/Bitmaps/font-4.png.meta b/Fonts/Bitmaps/font-4.png.meta
deleted file mode 100644
index e8727f5..0000000
--- a/Fonts/Bitmaps/font-4.png.meta
+++ /dev/null
@@ -1,116 +0,0 @@
-fileFormatVersion: 2
-guid: d06c79dd35cbaa94c81b2eb9240a7c57
-TextureImporter:
- internalIDToNameTable: []
- externalObjects: {}
- serializedVersion: 11
- mipmaps:
- mipMapMode: 1
- enableMipMap: 1
- sRGBTexture: 1
- linearTexture: 0
- fadeOut: 0
- borderMipMap: 0
- mipMapsPreserveCoverage: 1
- alphaTestReferenceValue: 0
- mipMapFadeDistanceStart: 1
- mipMapFadeDistanceEnd: 3
- bumpmap:
- convertToNormalMap: 0
- externalNormalMap: 0
- heightScale: 0.25
- normalMapFilter: 0
- isReadable: 0
- streamingMipmaps: 1
- streamingMipmapsPriority: 0
- grayScaleToAlpha: 0
- generateCubemap: 6
- cubemapConvolution: 0
- seamlessCubemap: 0
- textureFormat: 1
- maxTextureSize: 2048
- textureSettings:
- serializedVersion: 2
- filterMode: 1
- aniso: 1
- mipBias: 0
- wrapU: 0
- wrapV: 0
- wrapW: 0
- nPOTScale: 1
- lightmap: 0
- compressionQuality: 100
- spriteMode: 0
- spriteExtrude: 1
- spriteMeshType: 1
- alignment: 0
- spritePivot: {x: 0.5, y: 0.5}
- spritePixelsToUnits: 100
- spriteBorder: {x: 0, y: 0, z: 0, w: 0}
- spriteGenerateFallbackPhysicsShape: 1
- alphaUsage: 1
- alphaIsTransparency: 0
- spriteTessellationDetail: -1
- textureType: 0
- textureShape: 1
- singleChannelComponent: 0
- maxTextureSizeSet: 0
- compressionQualitySet: 0
- textureFormatSet: 0
- applyGammaDecoding: 0
- platformSettings:
- - serializedVersion: 3
- buildTarget: DefaultTexturePlatform
- maxTextureSize: 4096
- resizeAlgorithm: 1
- textureFormat: -1
- textureCompression: 2
- compressionQuality: 100
- crunchedCompression: 0
- allowsAlphaSplitting: 0
- overridden: 0
- androidETC2FallbackOverride: 0
- forceMaximumCompressionQuality_BC6H_BC7: 0
- - serializedVersion: 3
- buildTarget: Standalone
- maxTextureSize: 4096
- resizeAlgorithm: 1
- textureFormat: -1
- textureCompression: 2
- compressionQuality: 100
- crunchedCompression: 0
- allowsAlphaSplitting: 0
- overridden: 0
- androidETC2FallbackOverride: 0
- forceMaximumCompressionQuality_BC6H_BC7: 0
- - serializedVersion: 3
- buildTarget: Android
- maxTextureSize: 4096
- resizeAlgorithm: 1
- textureFormat: -1
- textureCompression: 2
- compressionQuality: 100
- crunchedCompression: 0
- allowsAlphaSplitting: 0
- overridden: 0
- androidETC2FallbackOverride: 0
- forceMaximumCompressionQuality_BC6H_BC7: 0
- spriteSheet:
- serializedVersion: 2
- sprites: []
- outline: []
- physicsShape: []
- bones: []
- spriteID:
- internalID: 0
- vertices: []
- indices:
- edges: []
- weights: []
- secondaryTextures: []
- spritePackingTag:
- pSDRemoveMatte: 0
- pSDShowRemoveMatteOption: 0
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Fonts/Bitmaps/font-5.png b/Fonts/Bitmaps/font-5.png
deleted file mode 100644
index ffa6a58..0000000
--- a/Fonts/Bitmaps/font-5.png
+++ /dev/null
Binary files differ
diff --git a/Fonts/Bitmaps/font-5.png.meta b/Fonts/Bitmaps/font-5.png.meta
deleted file mode 100644
index 48c55f6..0000000
--- a/Fonts/Bitmaps/font-5.png.meta
+++ /dev/null
@@ -1,116 +0,0 @@
-fileFormatVersion: 2
-guid: dea31226b42fe7e4d9470806d43afcf8
-TextureImporter:
- internalIDToNameTable: []
- externalObjects: {}
- serializedVersion: 11
- mipmaps:
- mipMapMode: 1
- enableMipMap: 1
- sRGBTexture: 1
- linearTexture: 0
- fadeOut: 0
- borderMipMap: 0
- mipMapsPreserveCoverage: 1
- alphaTestReferenceValue: 0
- mipMapFadeDistanceStart: 1
- mipMapFadeDistanceEnd: 3
- bumpmap:
- convertToNormalMap: 0
- externalNormalMap: 0
- heightScale: 0.25
- normalMapFilter: 0
- isReadable: 0
- streamingMipmaps: 1
- streamingMipmapsPriority: 0
- grayScaleToAlpha: 0
- generateCubemap: 6
- cubemapConvolution: 0
- seamlessCubemap: 0
- textureFormat: 1
- maxTextureSize: 2048
- textureSettings:
- serializedVersion: 2
- filterMode: 1
- aniso: 1
- mipBias: 0
- wrapU: 0
- wrapV: 0
- wrapW: 0
- nPOTScale: 1
- lightmap: 0
- compressionQuality: 100
- spriteMode: 0
- spriteExtrude: 1
- spriteMeshType: 1
- alignment: 0
- spritePivot: {x: 0.5, y: 0.5}
- spritePixelsToUnits: 100
- spriteBorder: {x: 0, y: 0, z: 0, w: 0}
- spriteGenerateFallbackPhysicsShape: 1
- alphaUsage: 1
- alphaIsTransparency: 0
- spriteTessellationDetail: -1
- textureType: 0
- textureShape: 1
- singleChannelComponent: 0
- maxTextureSizeSet: 0
- compressionQualitySet: 0
- textureFormatSet: 0
- applyGammaDecoding: 0
- platformSettings:
- - serializedVersion: 3
- buildTarget: DefaultTexturePlatform
- maxTextureSize: 4096
- resizeAlgorithm: 1
- textureFormat: -1
- textureCompression: 2
- compressionQuality: 100
- crunchedCompression: 0
- allowsAlphaSplitting: 0
- overridden: 0
- androidETC2FallbackOverride: 0
- forceMaximumCompressionQuality_BC6H_BC7: 0
- - serializedVersion: 3
- buildTarget: Standalone
- maxTextureSize: 4096
- resizeAlgorithm: 1
- textureFormat: -1
- textureCompression: 2
- compressionQuality: 100
- crunchedCompression: 0
- allowsAlphaSplitting: 0
- overridden: 0
- androidETC2FallbackOverride: 0
- forceMaximumCompressionQuality_BC6H_BC7: 0
- - serializedVersion: 3
- buildTarget: Android
- maxTextureSize: 4096
- resizeAlgorithm: 1
- textureFormat: -1
- textureCompression: 2
- compressionQuality: 100
- crunchedCompression: 0
- allowsAlphaSplitting: 0
- overridden: 0
- androidETC2FallbackOverride: 0
- forceMaximumCompressionQuality_BC6H_BC7: 0
- spriteSheet:
- serializedVersion: 2
- sprites: []
- outline: []
- physicsShape: []
- bones: []
- spriteID:
- internalID: 0
- vertices: []
- indices:
- edges: []
- weights: []
- secondaryTextures: []
- spritePackingTag:
- pSDRemoveMatte: 0
- pSDShowRemoveMatteOption: 0
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Fonts/Bitmaps/font-6.png b/Fonts/Bitmaps/font-6.png
deleted file mode 100644
index 9dccf1c..0000000
--- a/Fonts/Bitmaps/font-6.png
+++ /dev/null
Binary files differ
diff --git a/Fonts/Bitmaps/font-6.png.meta b/Fonts/Bitmaps/font-6.png.meta
deleted file mode 100644
index 2d2e7fd..0000000
--- a/Fonts/Bitmaps/font-6.png.meta
+++ /dev/null
@@ -1,116 +0,0 @@
-fileFormatVersion: 2
-guid: e8c2974f31efa7a4e9e7588c90561a85
-TextureImporter:
- internalIDToNameTable: []
- externalObjects: {}
- serializedVersion: 11
- mipmaps:
- mipMapMode: 1
- enableMipMap: 1
- sRGBTexture: 1
- linearTexture: 0
- fadeOut: 0
- borderMipMap: 0
- mipMapsPreserveCoverage: 1
- alphaTestReferenceValue: 0
- mipMapFadeDistanceStart: 1
- mipMapFadeDistanceEnd: 3
- bumpmap:
- convertToNormalMap: 0
- externalNormalMap: 0
- heightScale: 0.25
- normalMapFilter: 0
- isReadable: 0
- streamingMipmaps: 1
- streamingMipmapsPriority: 0
- grayScaleToAlpha: 0
- generateCubemap: 6
- cubemapConvolution: 0
- seamlessCubemap: 0
- textureFormat: 1
- maxTextureSize: 2048
- textureSettings:
- serializedVersion: 2
- filterMode: 1
- aniso: 1
- mipBias: 0
- wrapU: 0
- wrapV: 0
- wrapW: 0
- nPOTScale: 1
- lightmap: 0
- compressionQuality: 100
- spriteMode: 0
- spriteExtrude: 1
- spriteMeshType: 1
- alignment: 0
- spritePivot: {x: 0.5, y: 0.5}
- spritePixelsToUnits: 100
- spriteBorder: {x: 0, y: 0, z: 0, w: 0}
- spriteGenerateFallbackPhysicsShape: 1
- alphaUsage: 1
- alphaIsTransparency: 0
- spriteTessellationDetail: -1
- textureType: 0
- textureShape: 1
- singleChannelComponent: 0
- maxTextureSizeSet: 0
- compressionQualitySet: 0
- textureFormatSet: 0
- applyGammaDecoding: 0
- platformSettings:
- - serializedVersion: 3
- buildTarget: DefaultTexturePlatform
- maxTextureSize: 4096
- resizeAlgorithm: 1
- textureFormat: -1
- textureCompression: 2
- compressionQuality: 100
- crunchedCompression: 0
- allowsAlphaSplitting: 0
- overridden: 0
- androidETC2FallbackOverride: 0
- forceMaximumCompressionQuality_BC6H_BC7: 0
- - serializedVersion: 3
- buildTarget: Standalone
- maxTextureSize: 4096
- resizeAlgorithm: 1
- textureFormat: -1
- textureCompression: 2
- compressionQuality: 100
- crunchedCompression: 0
- allowsAlphaSplitting: 0
- overridden: 0
- androidETC2FallbackOverride: 0
- forceMaximumCompressionQuality_BC6H_BC7: 0
- - serializedVersion: 3
- buildTarget: Android
- maxTextureSize: 4096
- resizeAlgorithm: 1
- textureFormat: -1
- textureCompression: 2
- compressionQuality: 100
- crunchedCompression: 0
- allowsAlphaSplitting: 0
- overridden: 0
- androidETC2FallbackOverride: 0
- forceMaximumCompressionQuality_BC6H_BC7: 0
- spriteSheet:
- serializedVersion: 2
- sprites: []
- outline: []
- physicsShape: []
- bones: []
- spriteID:
- internalID: 0
- vertices: []
- indices:
- edges: []
- weights: []
- secondaryTextures: []
- spritePackingTag:
- pSDRemoveMatte: 0
- pSDShowRemoveMatteOption: 0
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Fonts/Bitmaps/font-ascii.png b/Fonts/Bitmaps/font-ascii.png
deleted file mode 100644
index 098d651..0000000
--- a/Fonts/Bitmaps/font-ascii.png
+++ /dev/null
Binary files differ
diff --git a/Fonts/Bitmaps/font-ascii.png.meta b/Fonts/Bitmaps/font-ascii.png.meta
deleted file mode 100644
index c6d24ff..0000000
--- a/Fonts/Bitmaps/font-ascii.png.meta
+++ /dev/null
@@ -1,116 +0,0 @@
-fileFormatVersion: 2
-guid: 0417deb9fee97e24e9099569bed34c6c
-TextureImporter:
- internalIDToNameTable: []
- externalObjects: {}
- serializedVersion: 11
- mipmaps:
- mipMapMode: 1
- enableMipMap: 1
- sRGBTexture: 1
- linearTexture: 0
- fadeOut: 0
- borderMipMap: 0
- mipMapsPreserveCoverage: 1
- alphaTestReferenceValue: 0
- mipMapFadeDistanceStart: 1
- mipMapFadeDistanceEnd: 3
- bumpmap:
- convertToNormalMap: 0
- externalNormalMap: 0
- heightScale: 0.25
- normalMapFilter: 0
- isReadable: 0
- streamingMipmaps: 1
- streamingMipmapsPriority: 0
- grayScaleToAlpha: 0
- generateCubemap: 6
- cubemapConvolution: 0
- seamlessCubemap: 0
- textureFormat: 1
- maxTextureSize: 512
- textureSettings:
- serializedVersion: 2
- filterMode: 1
- aniso: 1
- mipBias: 0
- wrapU: 0
- wrapV: 0
- wrapW: 0
- nPOTScale: 1
- lightmap: 0
- compressionQuality: 100
- spriteMode: 0
- spriteExtrude: 1
- spriteMeshType: 1
- alignment: 0
- spritePivot: {x: 0.5, y: 0.5}
- spritePixelsToUnits: 100
- spriteBorder: {x: 0, y: 0, z: 0, w: 0}
- spriteGenerateFallbackPhysicsShape: 1
- alphaUsage: 1
- alphaIsTransparency: 0
- spriteTessellationDetail: -1
- textureType: 0
- textureShape: 1
- singleChannelComponent: 0
- maxTextureSizeSet: 0
- compressionQualitySet: 0
- textureFormatSet: 0
- applyGammaDecoding: 0
- platformSettings:
- - serializedVersion: 3
- buildTarget: DefaultTexturePlatform
- maxTextureSize: 512
- resizeAlgorithm: 1
- textureFormat: -1
- textureCompression: 2
- compressionQuality: 100
- crunchedCompression: 0
- allowsAlphaSplitting: 0
- overridden: 0
- androidETC2FallbackOverride: 0
- forceMaximumCompressionQuality_BC6H_BC7: 0
- - serializedVersion: 3
- buildTarget: Standalone
- maxTextureSize: 512
- resizeAlgorithm: 1
- textureFormat: -1
- textureCompression: 2
- compressionQuality: 100
- crunchedCompression: 0
- allowsAlphaSplitting: 0
- overridden: 0
- androidETC2FallbackOverride: 0
- forceMaximumCompressionQuality_BC6H_BC7: 0
- - serializedVersion: 3
- buildTarget: Android
- maxTextureSize: 512
- resizeAlgorithm: 1
- textureFormat: -1
- textureCompression: 2
- compressionQuality: 100
- crunchedCompression: 0
- allowsAlphaSplitting: 0
- overridden: 0
- androidETC2FallbackOverride: 0
- forceMaximumCompressionQuality_BC6H_BC7: 0
- spriteSheet:
- serializedVersion: 2
- sprites: []
- outline: []
- physicsShape: []
- bones: []
- spriteID:
- internalID: 0
- vertices: []
- indices:
- edges: []
- weights: []
- secondaryTextures: []
- spritePackingTag:
- pSDRemoveMatte: 0
- pSDShowRemoveMatteOption: 0
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Fonts/Emotes/.gitignore b/Fonts/Emotes/.gitignore
deleted file mode 100644
index e17b68d..0000000
--- a/Fonts/Emotes/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-# Don't check in any images (licensing risk).
-*.png
diff --git a/Fonts/Emotes/README.md b/Fonts/Emotes/README.md
deleted file mode 100644
index fb12665..0000000
--- a/Fonts/Emotes/README.md
+++ /dev/null
@@ -1,11 +0,0 @@
-To add emotes to the text box, place one or more .png files in this directory.
-The name of the file should be the word you will say in game to make the emote
-appear.
-
-For example,consider the following contents:
-
- Emotes/smile.png
- Emotes/cry.png
-
-Saying "smile" would cause the image smile.png to show up on the text box.
-
diff --git a/Fonts/Noto_Sans_Korean/NotoSansKR-Black.otf b/Fonts/Noto_Sans_Korean/NotoSansKR-Black.otf
deleted file mode 100644
index 5599581..0000000
--- a/Fonts/Noto_Sans_Korean/NotoSansKR-Black.otf
+++ /dev/null
Binary files differ
diff --git a/Fonts/Noto_Sans_Korean/NotoSansKR-Bold.otf b/Fonts/Noto_Sans_Korean/NotoSansKR-Bold.otf
deleted file mode 100644
index be388bf..0000000
--- a/Fonts/Noto_Sans_Korean/NotoSansKR-Bold.otf
+++ /dev/null
Binary files differ
diff --git a/Fonts/Noto_Sans_Korean/NotoSansKR-Light.otf b/Fonts/Noto_Sans_Korean/NotoSansKR-Light.otf
deleted file mode 100644
index 548e667..0000000
--- a/Fonts/Noto_Sans_Korean/NotoSansKR-Light.otf
+++ /dev/null
Binary files differ
diff --git a/Fonts/Noto_Sans_Korean/NotoSansKR-Medium.otf b/Fonts/Noto_Sans_Korean/NotoSansKR-Medium.otf
deleted file mode 100644
index 5ddbbc0..0000000
--- a/Fonts/Noto_Sans_Korean/NotoSansKR-Medium.otf
+++ /dev/null
Binary files differ
diff --git a/Fonts/Noto_Sans_Korean/NotoSansKR-Regular.otf b/Fonts/Noto_Sans_Korean/NotoSansKR-Regular.otf
deleted file mode 100644
index 7c5c2fa..0000000
--- a/Fonts/Noto_Sans_Korean/NotoSansKR-Regular.otf
+++ /dev/null
Binary files differ
diff --git a/Fonts/Noto_Sans_Korean/NotoSansKR-Thin.otf b/Fonts/Noto_Sans_Korean/NotoSansKR-Thin.otf
deleted file mode 100644
index 1299fef..0000000
--- a/Fonts/Noto_Sans_Korean/NotoSansKR-Thin.otf
+++ /dev/null
Binary files differ
diff --git a/Fonts/Noto_Sans_Korean/OFL.txt b/Fonts/Noto_Sans_Korean/OFL.txt
deleted file mode 100644
index d4e7958..0000000
--- a/Fonts/Noto_Sans_Korean/OFL.txt
+++ /dev/null
@@ -1,93 +0,0 @@
-Copyright 2012 Google Inc. All Rights Reserved.
-
-This Font Software is licensed under the SIL Open Font License, Version 1.1.
-This license is copied below, and is also available with a FAQ at:
-http://scripts.sil.org/OFL
-
-
------------------------------------------------------------
-SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
------------------------------------------------------------
-
-PREAMBLE
-The goals of the Open Font License (OFL) are to stimulate worldwide
-development of collaborative font projects, to support the font creation
-efforts of academic and linguistic communities, and to provide a free and
-open framework in which fonts may be shared and improved in partnership
-with others.
-
-The OFL allows the licensed fonts to be used, studied, modified and
-redistributed freely as long as they are not sold by themselves. The
-fonts, including any derivative works, can be bundled, embedded,
-redistributed and/or sold with any software provided that any reserved
-names are not used by derivative works. The fonts and derivatives,
-however, cannot be released under any other type of license. The
-requirement for fonts to remain under this license does not apply
-to any document created using the fonts or their derivatives.
-
-DEFINITIONS
-"Font Software" refers to the set of files released by the Copyright
-Holder(s) under this license and clearly marked as such. This may
-include source files, build scripts and documentation.
-
-"Reserved Font Name" refers to any names specified as such after the
-copyright statement(s).
-
-"Original Version" refers to the collection of Font Software components as
-distributed by the Copyright Holder(s).
-
-"Modified Version" refers to any derivative made by adding to, deleting,
-or substituting -- in part or in whole -- any of the components of the
-Original Version, by changing formats or by porting the Font Software to a
-new environment.
-
-"Author" refers to any designer, engineer, programmer, technical
-writer or other person who contributed to the Font Software.
-
-PERMISSION & CONDITIONS
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of the Font Software, to use, study, copy, merge, embed, modify,
-redistribute, and sell modified and unmodified copies of the Font
-Software, subject to the following conditions:
-
-1) Neither the Font Software nor any of its individual components,
-in Original or Modified Versions, may be sold by itself.
-
-2) Original or Modified Versions of the Font Software may be bundled,
-redistributed and/or sold with any software, provided that each copy
-contains the above copyright notice and this license. These can be
-included either as stand-alone text files, human-readable headers or
-in the appropriate machine-readable metadata fields within text or
-binary files as long as those fields can be easily viewed by the user.
-
-3) No Modified Version of the Font Software may use the Reserved Font
-Name(s) unless explicit written permission is granted by the corresponding
-Copyright Holder. This restriction only applies to the primary font name as
-presented to the users.
-
-4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
-Software shall not be used to promote, endorse or advertise any
-Modified Version, except to acknowledge the contribution(s) of the
-Copyright Holder(s) and the Author(s) or with their explicit written
-permission.
-
-5) The Font Software, modified or unmodified, in part or in whole,
-must be distributed entirely under this license, and must not be
-distributed under any other license. The requirement for fonts to
-remain under this license does not apply to any document created
-using the Font Software.
-
-TERMINATION
-This license becomes null and void if any of the above conditions are
-not met.
-
-DISCLAIMER
-THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
-OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
-COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
-DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
-OTHER DEALINGS IN THE FONT SOFTWARE.
diff --git a/Fonts/Noto_Sans_Mono/NotoSansMono-VariableFont_wdth,wght.ttf b/Fonts/Noto_Sans_Mono/NotoSansMono-VariableFont_wdth,wght.ttf
deleted file mode 100644
index bb1d627..0000000
--- a/Fonts/Noto_Sans_Mono/NotoSansMono-VariableFont_wdth,wght.ttf
+++ /dev/null
Binary files differ
diff --git a/Fonts/Noto_Sans_Mono/OFL.txt b/Fonts/Noto_Sans_Mono/OFL.txt
deleted file mode 100644
index d4e7958..0000000
--- a/Fonts/Noto_Sans_Mono/OFL.txt
+++ /dev/null
@@ -1,93 +0,0 @@
-Copyright 2012 Google Inc. All Rights Reserved.
-
-This Font Software is licensed under the SIL Open Font License, Version 1.1.
-This license is copied below, and is also available with a FAQ at:
-http://scripts.sil.org/OFL
-
-
------------------------------------------------------------
-SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
------------------------------------------------------------
-
-PREAMBLE
-The goals of the Open Font License (OFL) are to stimulate worldwide
-development of collaborative font projects, to support the font creation
-efforts of academic and linguistic communities, and to provide a free and
-open framework in which fonts may be shared and improved in partnership
-with others.
-
-The OFL allows the licensed fonts to be used, studied, modified and
-redistributed freely as long as they are not sold by themselves. The
-fonts, including any derivative works, can be bundled, embedded,
-redistributed and/or sold with any software provided that any reserved
-names are not used by derivative works. The fonts and derivatives,
-however, cannot be released under any other type of license. The
-requirement for fonts to remain under this license does not apply
-to any document created using the fonts or their derivatives.
-
-DEFINITIONS
-"Font Software" refers to the set of files released by the Copyright
-Holder(s) under this license and clearly marked as such. This may
-include source files, build scripts and documentation.
-
-"Reserved Font Name" refers to any names specified as such after the
-copyright statement(s).
-
-"Original Version" refers to the collection of Font Software components as
-distributed by the Copyright Holder(s).
-
-"Modified Version" refers to any derivative made by adding to, deleting,
-or substituting -- in part or in whole -- any of the components of the
-Original Version, by changing formats or by porting the Font Software to a
-new environment.
-
-"Author" refers to any designer, engineer, programmer, technical
-writer or other person who contributed to the Font Software.
-
-PERMISSION & CONDITIONS
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of the Font Software, to use, study, copy, merge, embed, modify,
-redistribute, and sell modified and unmodified copies of the Font
-Software, subject to the following conditions:
-
-1) Neither the Font Software nor any of its individual components,
-in Original or Modified Versions, may be sold by itself.
-
-2) Original or Modified Versions of the Font Software may be bundled,
-redistributed and/or sold with any software, provided that each copy
-contains the above copyright notice and this license. These can be
-included either as stand-alone text files, human-readable headers or
-in the appropriate machine-readable metadata fields within text or
-binary files as long as those fields can be easily viewed by the user.
-
-3) No Modified Version of the Font Software may use the Reserved Font
-Name(s) unless explicit written permission is granted by the corresponding
-Copyright Holder. This restriction only applies to the primary font name as
-presented to the users.
-
-4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
-Software shall not be used to promote, endorse or advertise any
-Modified Version, except to acknowledge the contribution(s) of the
-Copyright Holder(s) and the Author(s) or with their explicit written
-permission.
-
-5) The Font Software, modified or unmodified, in part or in whole,
-must be distributed entirely under this license, and must not be
-distributed under any other license. The requirement for fonts to
-remain under this license does not apply to any document created
-using the Font Software.
-
-TERMINATION
-This license becomes null and void if any of the above conditions are
-not met.
-
-DISCLAIMER
-THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
-OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
-COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
-DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
-OTHER DEALINGS IN THE FONT SOFTWARE.
diff --git a/Fonts/Noto_Sans_Mono/README.txt b/Fonts/Noto_Sans_Mono/README.txt
deleted file mode 100644
index 93b2056..0000000
--- a/Fonts/Noto_Sans_Mono/README.txt
+++ /dev/null
@@ -1,99 +0,0 @@
-Noto Sans Mono Variable Font
-============================
-
-This download contains Noto Sans Mono as both a variable font and static fonts.
-
-Noto Sans Mono is a variable font with these axes:
- wdth
- wght
-
-This means all the styles are contained in a single file:
- NotoSansMono-VariableFont_wdth,wght.ttf
-
-If your app fully supports variable fonts, you can now pick intermediate styles
-that aren’t available as static fonts. Not all apps support variable fonts, and
-in those cases you can use the static font files for Noto Sans Mono:
- static/NotoSansMono_ExtraCondensed/NotoSansMono_ExtraCondensed-Thin.ttf
- static/NotoSansMono_ExtraCondensed/NotoSansMono_ExtraCondensed-ExtraLight.ttf
- static/NotoSansMono_ExtraCondensed/NotoSansMono_ExtraCondensed-Light.ttf
- static/NotoSansMono_ExtraCondensed/NotoSansMono_ExtraCondensed-Regular.ttf
- static/NotoSansMono_ExtraCondensed/NotoSansMono_ExtraCondensed-Medium.ttf
- static/NotoSansMono_ExtraCondensed/NotoSansMono_ExtraCondensed-SemiBold.ttf
- static/NotoSansMono_ExtraCondensed/NotoSansMono_ExtraCondensed-Bold.ttf
- static/NotoSansMono_ExtraCondensed/NotoSansMono_ExtraCondensed-ExtraBold.ttf
- static/NotoSansMono_ExtraCondensed/NotoSansMono_ExtraCondensed-Black.ttf
- static/NotoSansMono_Condensed/NotoSansMono_Condensed-Thin.ttf
- static/NotoSansMono_Condensed/NotoSansMono_Condensed-ExtraLight.ttf
- static/NotoSansMono_Condensed/NotoSansMono_Condensed-Light.ttf
- static/NotoSansMono_Condensed/NotoSansMono_Condensed-Regular.ttf
- static/NotoSansMono_Condensed/NotoSansMono_Condensed-Medium.ttf
- static/NotoSansMono_Condensed/NotoSansMono_Condensed-SemiBold.ttf
- static/NotoSansMono_Condensed/NotoSansMono_Condensed-Bold.ttf
- static/NotoSansMono_Condensed/NotoSansMono_Condensed-ExtraBold.ttf
- static/NotoSansMono_Condensed/NotoSansMono_Condensed-Black.ttf
- static/NotoSansMono_SemiCondensed/NotoSansMono_SemiCondensed-Thin.ttf
- static/NotoSansMono_SemiCondensed/NotoSansMono_SemiCondensed-ExtraLight.ttf
- static/NotoSansMono_SemiCondensed/NotoSansMono_SemiCondensed-Light.ttf
- static/NotoSansMono_SemiCondensed/NotoSansMono_SemiCondensed-Regular.ttf
- static/NotoSansMono_SemiCondensed/NotoSansMono_SemiCondensed-Medium.ttf
- static/NotoSansMono_SemiCondensed/NotoSansMono_SemiCondensed-SemiBold.ttf
- static/NotoSansMono_SemiCondensed/NotoSansMono_SemiCondensed-Bold.ttf
- static/NotoSansMono_SemiCondensed/NotoSansMono_SemiCondensed-ExtraBold.ttf
- static/NotoSansMono_SemiCondensed/NotoSansMono_SemiCondensed-Black.ttf
- static/NotoSansMono/NotoSansMono-Thin.ttf
- static/NotoSansMono/NotoSansMono-ExtraLight.ttf
- static/NotoSansMono/NotoSansMono-Light.ttf
- static/NotoSansMono/NotoSansMono-Regular.ttf
- static/NotoSansMono/NotoSansMono-Medium.ttf
- static/NotoSansMono/NotoSansMono-SemiBold.ttf
- static/NotoSansMono/NotoSansMono-Bold.ttf
- static/NotoSansMono/NotoSansMono-ExtraBold.ttf
- static/NotoSansMono/NotoSansMono-Black.ttf
-
-Get started
------------
-
-1. Install the font files you want to use
-
-2. Use your app's font picker to view the font family and all the
-available styles
-
-Learn more about variable fonts
--------------------------------
-
- https://developers.google.com/web/fundamentals/design-and-ux/typography/variable-fonts
- https://variablefonts.typenetwork.com
- https://medium.com/variable-fonts
-
-In desktop apps
-
- https://theblog.adobe.com/can-variable-fonts-illustrator-cc
- https://helpx.adobe.com/nz/photoshop/using/fonts.html#variable_fonts
-
-Online
-
- https://developers.google.com/fonts/docs/getting_started
- https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Fonts/Variable_Fonts_Guide
- https://developer.microsoft.com/en-us/microsoft-edge/testdrive/demos/variable-fonts
-
-Installing fonts
-
- MacOS: https://support.apple.com/en-us/HT201749
- Linux: https://www.google.com/search?q=how+to+install+a+font+on+gnu%2Blinux
- Windows: https://support.microsoft.com/en-us/help/314960/how-to-install-or-remove-a-font-in-windows
-
-Android Apps
-
- https://developers.google.com/fonts/docs/android
- https://developer.android.com/guide/topics/ui/look-and-feel/downloadable-fonts
-
-License
--------
-Please read the full license text (OFL.txt) to understand the permissions,
-restrictions and requirements for usage, redistribution, and modification.
-
-You can use them in your products & projects – print or digital,
-commercial or otherwise.
-
-This isn't legal advice, please consider consulting a lawyer and see the full
-license for all details.
diff --git a/Fonts/Noto_Sans_Mono/static/NotoSansMono/NotoSansMono-Black.ttf b/Fonts/Noto_Sans_Mono/static/NotoSansMono/NotoSansMono-Black.ttf
deleted file mode 100644
index 5af77aa..0000000
--- a/Fonts/Noto_Sans_Mono/static/NotoSansMono/NotoSansMono-Black.ttf
+++ /dev/null
Binary files differ
diff --git a/Fonts/Noto_Sans_Mono/static/NotoSansMono/NotoSansMono-Bold.ttf b/Fonts/Noto_Sans_Mono/static/NotoSansMono/NotoSansMono-Bold.ttf
deleted file mode 100644
index f74b877..0000000
--- a/Fonts/Noto_Sans_Mono/static/NotoSansMono/NotoSansMono-Bold.ttf
+++ /dev/null
Binary files differ
diff --git a/Fonts/Noto_Sans_Mono/static/NotoSansMono/NotoSansMono-ExtraBold.ttf b/Fonts/Noto_Sans_Mono/static/NotoSansMono/NotoSansMono-ExtraBold.ttf
deleted file mode 100644
index 0c23287..0000000
--- a/Fonts/Noto_Sans_Mono/static/NotoSansMono/NotoSansMono-ExtraBold.ttf
+++ /dev/null
Binary files differ
diff --git a/Fonts/Noto_Sans_Mono/static/NotoSansMono/NotoSansMono-ExtraLight.ttf b/Fonts/Noto_Sans_Mono/static/NotoSansMono/NotoSansMono-ExtraLight.ttf
deleted file mode 100644
index ced2b03..0000000
--- a/Fonts/Noto_Sans_Mono/static/NotoSansMono/NotoSansMono-ExtraLight.ttf
+++ /dev/null
Binary files differ
diff --git a/Fonts/Noto_Sans_Mono/static/NotoSansMono/NotoSansMono-Light.ttf b/Fonts/Noto_Sans_Mono/static/NotoSansMono/NotoSansMono-Light.ttf
deleted file mode 100644
index 2846c3b..0000000
--- a/Fonts/Noto_Sans_Mono/static/NotoSansMono/NotoSansMono-Light.ttf
+++ /dev/null
Binary files differ
diff --git a/Fonts/Noto_Sans_Mono/static/NotoSansMono/NotoSansMono-Medium.ttf b/Fonts/Noto_Sans_Mono/static/NotoSansMono/NotoSansMono-Medium.ttf
deleted file mode 100644
index f4b3823..0000000
--- a/Fonts/Noto_Sans_Mono/static/NotoSansMono/NotoSansMono-Medium.ttf
+++ /dev/null
Binary files differ
diff --git a/Fonts/Noto_Sans_Mono/static/NotoSansMono/NotoSansMono-Regular.ttf b/Fonts/Noto_Sans_Mono/static/NotoSansMono/NotoSansMono-Regular.ttf
deleted file mode 100644
index 9c8ee3c..0000000
--- a/Fonts/Noto_Sans_Mono/static/NotoSansMono/NotoSansMono-Regular.ttf
+++ /dev/null
Binary files differ
diff --git a/Fonts/Noto_Sans_Mono/static/NotoSansMono/NotoSansMono-SemiBold.ttf b/Fonts/Noto_Sans_Mono/static/NotoSansMono/NotoSansMono-SemiBold.ttf
deleted file mode 100644
index fe7b4ea..0000000
--- a/Fonts/Noto_Sans_Mono/static/NotoSansMono/NotoSansMono-SemiBold.ttf
+++ /dev/null
Binary files differ
diff --git a/Fonts/Noto_Sans_Mono/static/NotoSansMono/NotoSansMono-Thin.ttf b/Fonts/Noto_Sans_Mono/static/NotoSansMono/NotoSansMono-Thin.ttf
deleted file mode 100644
index e17d87d..0000000
--- a/Fonts/Noto_Sans_Mono/static/NotoSansMono/NotoSansMono-Thin.ttf
+++ /dev/null
Binary files differ
diff --git a/Fonts/Noto_Sans_Mono/static/NotoSansMono_Condensed/NotoSansMono_Condensed-Black.ttf b/Fonts/Noto_Sans_Mono/static/NotoSansMono_Condensed/NotoSansMono_Condensed-Black.ttf
deleted file mode 100644
index c920e76..0000000
--- a/Fonts/Noto_Sans_Mono/static/NotoSansMono_Condensed/NotoSansMono_Condensed-Black.ttf
+++ /dev/null
Binary files differ
diff --git a/Fonts/Noto_Sans_Mono/static/NotoSansMono_Condensed/NotoSansMono_Condensed-Bold.ttf b/Fonts/Noto_Sans_Mono/static/NotoSansMono_Condensed/NotoSansMono_Condensed-Bold.ttf
deleted file mode 100644
index 7d08cc8..0000000
--- a/Fonts/Noto_Sans_Mono/static/NotoSansMono_Condensed/NotoSansMono_Condensed-Bold.ttf
+++ /dev/null
Binary files differ
diff --git a/Fonts/Noto_Sans_Mono/static/NotoSansMono_Condensed/NotoSansMono_Condensed-ExtraBold.ttf b/Fonts/Noto_Sans_Mono/static/NotoSansMono_Condensed/NotoSansMono_Condensed-ExtraBold.ttf
deleted file mode 100644
index 73966ba..0000000
--- a/Fonts/Noto_Sans_Mono/static/NotoSansMono_Condensed/NotoSansMono_Condensed-ExtraBold.ttf
+++ /dev/null
Binary files differ
diff --git a/Fonts/Noto_Sans_Mono/static/NotoSansMono_Condensed/NotoSansMono_Condensed-ExtraLight.ttf b/Fonts/Noto_Sans_Mono/static/NotoSansMono_Condensed/NotoSansMono_Condensed-ExtraLight.ttf
deleted file mode 100644
index 183266d..0000000
--- a/Fonts/Noto_Sans_Mono/static/NotoSansMono_Condensed/NotoSansMono_Condensed-ExtraLight.ttf
+++ /dev/null
Binary files differ
diff --git a/Fonts/Noto_Sans_Mono/static/NotoSansMono_Condensed/NotoSansMono_Condensed-Light.ttf b/Fonts/Noto_Sans_Mono/static/NotoSansMono_Condensed/NotoSansMono_Condensed-Light.ttf
deleted file mode 100644
index 9345b27..0000000
--- a/Fonts/Noto_Sans_Mono/static/NotoSansMono_Condensed/NotoSansMono_Condensed-Light.ttf
+++ /dev/null
Binary files differ
diff --git a/Fonts/Noto_Sans_Mono/static/NotoSansMono_Condensed/NotoSansMono_Condensed-Medium.ttf b/Fonts/Noto_Sans_Mono/static/NotoSansMono_Condensed/NotoSansMono_Condensed-Medium.ttf
deleted file mode 100644
index 032cbb1..0000000
--- a/Fonts/Noto_Sans_Mono/static/NotoSansMono_Condensed/NotoSansMono_Condensed-Medium.ttf
+++ /dev/null
Binary files differ
diff --git a/Fonts/Noto_Sans_Mono/static/NotoSansMono_Condensed/NotoSansMono_Condensed-Regular.ttf b/Fonts/Noto_Sans_Mono/static/NotoSansMono_Condensed/NotoSansMono_Condensed-Regular.ttf
deleted file mode 100644
index c1f3b52..0000000
--- a/Fonts/Noto_Sans_Mono/static/NotoSansMono_Condensed/NotoSansMono_Condensed-Regular.ttf
+++ /dev/null
Binary files differ
diff --git a/Fonts/Noto_Sans_Mono/static/NotoSansMono_Condensed/NotoSansMono_Condensed-SemiBold.ttf b/Fonts/Noto_Sans_Mono/static/NotoSansMono_Condensed/NotoSansMono_Condensed-SemiBold.ttf
deleted file mode 100644
index 23e0283..0000000
--- a/Fonts/Noto_Sans_Mono/static/NotoSansMono_Condensed/NotoSansMono_Condensed-SemiBold.ttf
+++ /dev/null
Binary files differ
diff --git a/Fonts/Noto_Sans_Mono/static/NotoSansMono_Condensed/NotoSansMono_Condensed-Thin.ttf b/Fonts/Noto_Sans_Mono/static/NotoSansMono_Condensed/NotoSansMono_Condensed-Thin.ttf
deleted file mode 100644
index 435a4d9..0000000
--- a/Fonts/Noto_Sans_Mono/static/NotoSansMono_Condensed/NotoSansMono_Condensed-Thin.ttf
+++ /dev/null
Binary files differ
diff --git a/Fonts/Noto_Sans_Mono/static/NotoSansMono_ExtraCondensed/NotoSansMono_ExtraCondensed-Black.ttf b/Fonts/Noto_Sans_Mono/static/NotoSansMono_ExtraCondensed/NotoSansMono_ExtraCondensed-Black.ttf
deleted file mode 100644
index d45aa96..0000000
--- a/Fonts/Noto_Sans_Mono/static/NotoSansMono_ExtraCondensed/NotoSansMono_ExtraCondensed-Black.ttf
+++ /dev/null
Binary files differ
diff --git a/Fonts/Noto_Sans_Mono/static/NotoSansMono_ExtraCondensed/NotoSansMono_ExtraCondensed-Bold.ttf b/Fonts/Noto_Sans_Mono/static/NotoSansMono_ExtraCondensed/NotoSansMono_ExtraCondensed-Bold.ttf
deleted file mode 100644
index 8efd388..0000000
--- a/Fonts/Noto_Sans_Mono/static/NotoSansMono_ExtraCondensed/NotoSansMono_ExtraCondensed-Bold.ttf
+++ /dev/null
Binary files differ
diff --git a/Fonts/Noto_Sans_Mono/static/NotoSansMono_ExtraCondensed/NotoSansMono_ExtraCondensed-ExtraBold.ttf b/Fonts/Noto_Sans_Mono/static/NotoSansMono_ExtraCondensed/NotoSansMono_ExtraCondensed-ExtraBold.ttf
deleted file mode 100644
index c3bb76c..0000000
--- a/Fonts/Noto_Sans_Mono/static/NotoSansMono_ExtraCondensed/NotoSansMono_ExtraCondensed-ExtraBold.ttf
+++ /dev/null
Binary files differ
diff --git a/Fonts/Noto_Sans_Mono/static/NotoSansMono_ExtraCondensed/NotoSansMono_ExtraCondensed-ExtraLight.ttf b/Fonts/Noto_Sans_Mono/static/NotoSansMono_ExtraCondensed/NotoSansMono_ExtraCondensed-ExtraLight.ttf
deleted file mode 100644
index f3ec294..0000000
--- a/Fonts/Noto_Sans_Mono/static/NotoSansMono_ExtraCondensed/NotoSansMono_ExtraCondensed-ExtraLight.ttf
+++ /dev/null
Binary files differ
diff --git a/Fonts/Noto_Sans_Mono/static/NotoSansMono_ExtraCondensed/NotoSansMono_ExtraCondensed-Light.ttf b/Fonts/Noto_Sans_Mono/static/NotoSansMono_ExtraCondensed/NotoSansMono_ExtraCondensed-Light.ttf
deleted file mode 100644
index 172edbb..0000000
--- a/Fonts/Noto_Sans_Mono/static/NotoSansMono_ExtraCondensed/NotoSansMono_ExtraCondensed-Light.ttf
+++ /dev/null
Binary files differ
diff --git a/Fonts/Noto_Sans_Mono/static/NotoSansMono_ExtraCondensed/NotoSansMono_ExtraCondensed-Medium.ttf b/Fonts/Noto_Sans_Mono/static/NotoSansMono_ExtraCondensed/NotoSansMono_ExtraCondensed-Medium.ttf
deleted file mode 100644
index 573be69..0000000
--- a/Fonts/Noto_Sans_Mono/static/NotoSansMono_ExtraCondensed/NotoSansMono_ExtraCondensed-Medium.ttf
+++ /dev/null
Binary files differ
diff --git a/Fonts/Noto_Sans_Mono/static/NotoSansMono_ExtraCondensed/NotoSansMono_ExtraCondensed-Regular.ttf b/Fonts/Noto_Sans_Mono/static/NotoSansMono_ExtraCondensed/NotoSansMono_ExtraCondensed-Regular.ttf
deleted file mode 100644
index e113920..0000000
--- a/Fonts/Noto_Sans_Mono/static/NotoSansMono_ExtraCondensed/NotoSansMono_ExtraCondensed-Regular.ttf
+++ /dev/null
Binary files differ
diff --git a/Fonts/Noto_Sans_Mono/static/NotoSansMono_ExtraCondensed/NotoSansMono_ExtraCondensed-SemiBold.ttf b/Fonts/Noto_Sans_Mono/static/NotoSansMono_ExtraCondensed/NotoSansMono_ExtraCondensed-SemiBold.ttf
deleted file mode 100644
index 60c7b94..0000000
--- a/Fonts/Noto_Sans_Mono/static/NotoSansMono_ExtraCondensed/NotoSansMono_ExtraCondensed-SemiBold.ttf
+++ /dev/null
Binary files differ
diff --git a/Fonts/Noto_Sans_Mono/static/NotoSansMono_ExtraCondensed/NotoSansMono_ExtraCondensed-Thin.ttf b/Fonts/Noto_Sans_Mono/static/NotoSansMono_ExtraCondensed/NotoSansMono_ExtraCondensed-Thin.ttf
deleted file mode 100644
index 84ce2fb..0000000
--- a/Fonts/Noto_Sans_Mono/static/NotoSansMono_ExtraCondensed/NotoSansMono_ExtraCondensed-Thin.ttf
+++ /dev/null
Binary files differ
diff --git a/Fonts/Noto_Sans_Mono/static/NotoSansMono_SemiCondensed/NotoSansMono_SemiCondensed-Black.ttf b/Fonts/Noto_Sans_Mono/static/NotoSansMono_SemiCondensed/NotoSansMono_SemiCondensed-Black.ttf
deleted file mode 100644
index 387145b..0000000
--- a/Fonts/Noto_Sans_Mono/static/NotoSansMono_SemiCondensed/NotoSansMono_SemiCondensed-Black.ttf
+++ /dev/null
Binary files differ
diff --git a/Fonts/Noto_Sans_Mono/static/NotoSansMono_SemiCondensed/NotoSansMono_SemiCondensed-Bold.ttf b/Fonts/Noto_Sans_Mono/static/NotoSansMono_SemiCondensed/NotoSansMono_SemiCondensed-Bold.ttf
deleted file mode 100644
index c93ed18..0000000
--- a/Fonts/Noto_Sans_Mono/static/NotoSansMono_SemiCondensed/NotoSansMono_SemiCondensed-Bold.ttf
+++ /dev/null
Binary files differ
diff --git a/Fonts/Noto_Sans_Mono/static/NotoSansMono_SemiCondensed/NotoSansMono_SemiCondensed-ExtraBold.ttf b/Fonts/Noto_Sans_Mono/static/NotoSansMono_SemiCondensed/NotoSansMono_SemiCondensed-ExtraBold.ttf
deleted file mode 100644
index 8162f99..0000000
--- a/Fonts/Noto_Sans_Mono/static/NotoSansMono_SemiCondensed/NotoSansMono_SemiCondensed-ExtraBold.ttf
+++ /dev/null
Binary files differ
diff --git a/Fonts/Noto_Sans_Mono/static/NotoSansMono_SemiCondensed/NotoSansMono_SemiCondensed-ExtraLight.ttf b/Fonts/Noto_Sans_Mono/static/NotoSansMono_SemiCondensed/NotoSansMono_SemiCondensed-ExtraLight.ttf
deleted file mode 100644
index 16ba008..0000000
--- a/Fonts/Noto_Sans_Mono/static/NotoSansMono_SemiCondensed/NotoSansMono_SemiCondensed-ExtraLight.ttf
+++ /dev/null
Binary files differ
diff --git a/Fonts/Noto_Sans_Mono/static/NotoSansMono_SemiCondensed/NotoSansMono_SemiCondensed-Light.ttf b/Fonts/Noto_Sans_Mono/static/NotoSansMono_SemiCondensed/NotoSansMono_SemiCondensed-Light.ttf
deleted file mode 100644
index 20c941e..0000000
--- a/Fonts/Noto_Sans_Mono/static/NotoSansMono_SemiCondensed/NotoSansMono_SemiCondensed-Light.ttf
+++ /dev/null
Binary files differ
diff --git a/Fonts/Noto_Sans_Mono/static/NotoSansMono_SemiCondensed/NotoSansMono_SemiCondensed-Medium.ttf b/Fonts/Noto_Sans_Mono/static/NotoSansMono_SemiCondensed/NotoSansMono_SemiCondensed-Medium.ttf
deleted file mode 100644
index 796b5f6..0000000
--- a/Fonts/Noto_Sans_Mono/static/NotoSansMono_SemiCondensed/NotoSansMono_SemiCondensed-Medium.ttf
+++ /dev/null
Binary files differ
diff --git a/Fonts/Noto_Sans_Mono/static/NotoSansMono_SemiCondensed/NotoSansMono_SemiCondensed-Regular.ttf b/Fonts/Noto_Sans_Mono/static/NotoSansMono_SemiCondensed/NotoSansMono_SemiCondensed-Regular.ttf
deleted file mode 100644
index d47a557..0000000
--- a/Fonts/Noto_Sans_Mono/static/NotoSansMono_SemiCondensed/NotoSansMono_SemiCondensed-Regular.ttf
+++ /dev/null
Binary files differ
diff --git a/Fonts/Noto_Sans_Mono/static/NotoSansMono_SemiCondensed/NotoSansMono_SemiCondensed-SemiBold.ttf b/Fonts/Noto_Sans_Mono/static/NotoSansMono_SemiCondensed/NotoSansMono_SemiCondensed-SemiBold.ttf
deleted file mode 100644
index 2feb57b..0000000
--- a/Fonts/Noto_Sans_Mono/static/NotoSansMono_SemiCondensed/NotoSansMono_SemiCondensed-SemiBold.ttf
+++ /dev/null
Binary files differ
diff --git a/Fonts/Noto_Sans_Mono/static/NotoSansMono_SemiCondensed/NotoSansMono_SemiCondensed-Thin.ttf b/Fonts/Noto_Sans_Mono/static/NotoSansMono_SemiCondensed/NotoSansMono_SemiCondensed-Thin.ttf
deleted file mode 100644
index acbf136..0000000
--- a/Fonts/Noto_Sans_Mono/static/NotoSansMono_SemiCondensed/NotoSansMono_SemiCondensed-Thin.ttf
+++ /dev/null
Binary files differ
diff --git a/Fonts/Noto_Sans_Simplified_Chinese/NotoSansSC-Black.otf b/Fonts/Noto_Sans_Simplified_Chinese/NotoSansSC-Black.otf
deleted file mode 100644
index 7529643..0000000
--- a/Fonts/Noto_Sans_Simplified_Chinese/NotoSansSC-Black.otf
+++ /dev/null
Binary files differ
diff --git a/Fonts/Noto_Sans_Simplified_Chinese/NotoSansSC-Bold.otf b/Fonts/Noto_Sans_Simplified_Chinese/NotoSansSC-Bold.otf
deleted file mode 100644
index 172eb67..0000000
--- a/Fonts/Noto_Sans_Simplified_Chinese/NotoSansSC-Bold.otf
+++ /dev/null
Binary files differ
diff --git a/Fonts/Noto_Sans_Simplified_Chinese/NotoSansSC-Light.otf b/Fonts/Noto_Sans_Simplified_Chinese/NotoSansSC-Light.otf
deleted file mode 100644
index 85ccdf4..0000000
--- a/Fonts/Noto_Sans_Simplified_Chinese/NotoSansSC-Light.otf
+++ /dev/null
Binary files differ
diff --git a/Fonts/Noto_Sans_Simplified_Chinese/NotoSansSC-Medium.otf b/Fonts/Noto_Sans_Simplified_Chinese/NotoSansSC-Medium.otf
deleted file mode 100644
index 0a5bd9e..0000000
--- a/Fonts/Noto_Sans_Simplified_Chinese/NotoSansSC-Medium.otf
+++ /dev/null
Binary files differ
diff --git a/Fonts/Noto_Sans_Simplified_Chinese/NotoSansSC-Regular.otf b/Fonts/Noto_Sans_Simplified_Chinese/NotoSansSC-Regular.otf
deleted file mode 100644
index d350ffa..0000000
--- a/Fonts/Noto_Sans_Simplified_Chinese/NotoSansSC-Regular.otf
+++ /dev/null
Binary files differ
diff --git a/Fonts/Noto_Sans_Simplified_Chinese/NotoSansSC-Thin.otf b/Fonts/Noto_Sans_Simplified_Chinese/NotoSansSC-Thin.otf
deleted file mode 100644
index 0e98049..0000000
--- a/Fonts/Noto_Sans_Simplified_Chinese/NotoSansSC-Thin.otf
+++ /dev/null
Binary files differ
diff --git a/Fonts/Noto_Sans_Simplified_Chinese/OFL.txt b/Fonts/Noto_Sans_Simplified_Chinese/OFL.txt
deleted file mode 100644
index d4e7958..0000000
--- a/Fonts/Noto_Sans_Simplified_Chinese/OFL.txt
+++ /dev/null
@@ -1,93 +0,0 @@
-Copyright 2012 Google Inc. All Rights Reserved.
-
-This Font Software is licensed under the SIL Open Font License, Version 1.1.
-This license is copied below, and is also available with a FAQ at:
-http://scripts.sil.org/OFL
-
-
------------------------------------------------------------
-SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
------------------------------------------------------------
-
-PREAMBLE
-The goals of the Open Font License (OFL) are to stimulate worldwide
-development of collaborative font projects, to support the font creation
-efforts of academic and linguistic communities, and to provide a free and
-open framework in which fonts may be shared and improved in partnership
-with others.
-
-The OFL allows the licensed fonts to be used, studied, modified and
-redistributed freely as long as they are not sold by themselves. The
-fonts, including any derivative works, can be bundled, embedded,
-redistributed and/or sold with any software provided that any reserved
-names are not used by derivative works. The fonts and derivatives,
-however, cannot be released under any other type of license. The
-requirement for fonts to remain under this license does not apply
-to any document created using the fonts or their derivatives.
-
-DEFINITIONS
-"Font Software" refers to the set of files released by the Copyright
-Holder(s) under this license and clearly marked as such. This may
-include source files, build scripts and documentation.
-
-"Reserved Font Name" refers to any names specified as such after the
-copyright statement(s).
-
-"Original Version" refers to the collection of Font Software components as
-distributed by the Copyright Holder(s).
-
-"Modified Version" refers to any derivative made by adding to, deleting,
-or substituting -- in part or in whole -- any of the components of the
-Original Version, by changing formats or by porting the Font Software to a
-new environment.
-
-"Author" refers to any designer, engineer, programmer, technical
-writer or other person who contributed to the Font Software.
-
-PERMISSION & CONDITIONS
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of the Font Software, to use, study, copy, merge, embed, modify,
-redistribute, and sell modified and unmodified copies of the Font
-Software, subject to the following conditions:
-
-1) Neither the Font Software nor any of its individual components,
-in Original or Modified Versions, may be sold by itself.
-
-2) Original or Modified Versions of the Font Software may be bundled,
-redistributed and/or sold with any software, provided that each copy
-contains the above copyright notice and this license. These can be
-included either as stand-alone text files, human-readable headers or
-in the appropriate machine-readable metadata fields within text or
-binary files as long as those fields can be easily viewed by the user.
-
-3) No Modified Version of the Font Software may use the Reserved Font
-Name(s) unless explicit written permission is granted by the corresponding
-Copyright Holder. This restriction only applies to the primary font name as
-presented to the users.
-
-4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
-Software shall not be used to promote, endorse or advertise any
-Modified Version, except to acknowledge the contribution(s) of the
-Copyright Holder(s) and the Author(s) or with their explicit written
-permission.
-
-5) The Font Software, modified or unmodified, in part or in whole,
-must be distributed entirely under this license, and must not be
-distributed under any other license. The requirement for fonts to
-remain under this license does not apply to any document created
-using the Font Software.
-
-TERMINATION
-This license becomes null and void if any of the above conditions are
-not met.
-
-DISCLAIMER
-THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
-OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
-COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
-DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
-OTHER DEALINGS IN THE FONT SOFTWARE.
diff --git a/Fonts/unifont-15.0.01.ttf b/Fonts/unifont-15.0.01.ttf
deleted file mode 100644
index bc3428d..0000000
--- a/Fonts/unifont-15.0.01.ttf
+++ /dev/null
Binary files differ
diff --git a/Fonts/unifont-15.0.01.ttf.LICENSE b/Fonts/unifont-15.0.01.ttf.LICENSE
deleted file mode 100644
index 94339e0..0000000
--- a/Fonts/unifont-15.0.01.ttf.LICENSE
+++ /dev/null
@@ -1,90 +0,0 @@
-The SIL Open Font License version 1.1 is copied below, and is also
-available with a FAQ at http://scripts.sil.org/OFL.
-
-
------------------------------------------------------------
-SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
------------------------------------------------------------
-
-PREAMBLE
-The goals of the Open Font License (OFL) are to stimulate worldwide
-development of collaborative font projects, to support the font creation
-efforts of academic and linguistic communities, and to provide a free and
-open framework in which fonts may be shared and improved in partnership
-with others.
-
-The OFL allows the licensed fonts to be used, studied, modified and
-redistributed freely as long as they are not sold by themselves. The
-fonts, including any derivative works, can be bundled, embedded,
-redistributed and/or sold with any software provided that any reserved
-names are not used by derivative works. The fonts and derivatives,
-however, cannot be released under any other type of license. The
-requirement for fonts to remain under this license does not apply
-to any document created using the fonts or their derivatives.
-
-DEFINITIONS
-"Font Software" refers to the set of files released by the Copyright
-Holder(s) under this license and clearly marked as such. This may
-include source files, build scripts and documentation.
-
-"Reserved Font Name" refers to any names specified as such after the
-copyright statement(s).
-
-"Original Version" refers to the collection of Font Software components as
-distributed by the Copyright Holder(s).
-
-"Modified Version" refers to any derivative made by adding to, deleting,
-or substituting -- in part or in whole -- any of the components of the
-Original Version, by changing formats or by porting the Font Software to a
-new environment.
-
-"Author" refers to any designer, engineer, programmer, technical
-writer or other person who contributed to the Font Software.
-
-PERMISSION & CONDITIONS
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of the Font Software, to use, study, copy, merge, embed, modify,
-redistribute, and sell modified and unmodified copies of the Font
-Software, subject to the following conditions:
-
-1) Neither the Font Software nor any of its individual components,
-in Original or Modified Versions, may be sold by itself.
-
-2) Original or Modified Versions of the Font Software may be bundled,
-redistributed and/or sold with any software, provided that each copy
-contains the above copyright notice and this license. These can be
-included either as stand-alone text files, human-readable headers or
-in the appropriate machine-readable metadata fields within text or
-binary files as long as those fields can be easily viewed by the user.
-
-3) No Modified Version of the Font Software may use the Reserved Font
-Name(s) unless explicit written permission is granted by the corresponding
-Copyright Holder. This restriction only applies to the primary font name as
-presented to the users.
-
-4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
-Software shall not be used to promote, endorse or advertise any
-Modified Version, except to acknowledge the contribution(s) of the
-Copyright Holder(s) and the Author(s) or with their explicit written
-permission.
-
-5) The Font Software, modified or unmodified, in part or in whole,
-must be distributed entirely under this license, and must not be
-distributed under any other license. The requirement for fonts to
-remain under this license does not apply to any document created
-using the Font Software.
-
-TERMINATION
-This license becomes null and void if any of the above conditions are
-not met.
-
-DISCLAIMER
-THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
-OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
-COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
-DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
-OTHER DEALINGS IN THE FONT SOFTWARE.
diff --git a/GUI/.gitignore b/GUI/.gitignore
deleted file mode 100644
index 727e4ae..0000000
--- a/GUI/.gitignore
+++ /dev/null
@@ -1,14 +0,0 @@
-# ignore generated package files
-TaSTT
-TaSTT.zip
-
-# ignore net-fetched dependencies
-PortableGit*
-Python*
-python-*
-UwwwuPP
-Profanity
-curl
-
-# Frequently created during development
-freeze.txt
diff --git a/GUI/GUI/.gitignore b/GUI/GUI/.gitignore
deleted file mode 100644
index 7082b1d..0000000
--- a/GUI/GUI/.gitignore
+++ /dev/null
@@ -1,5 +0,0 @@
-# Don't check in build artifacts
-x64
-x86
-# Ignore visual studio cruft
-.vs
diff --git a/GUI/GUI/GUI.sln b/GUI/GUI/GUI.sln
deleted file mode 100644
index 5ef5534..0000000
--- a/GUI/GUI/GUI.sln
+++ /dev/null
@@ -1,31 +0,0 @@
-
-Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio Version 17
-VisualStudioVersion = 17.4.33122.133
-MinimumVisualStudioVersion = 10.0.40219.1
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "GUI", "GUI\GUI.vcxproj", "{E17AD8B1-0565-459B-B8D0-2024CC6C5CD4}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|x64 = Debug|x64
- Debug|x86 = Debug|x86
- Release|x64 = Release|x64
- Release|x86 = Release|x86
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {E17AD8B1-0565-459B-B8D0-2024CC6C5CD4}.Debug|x64.ActiveCfg = Debug|x64
- {E17AD8B1-0565-459B-B8D0-2024CC6C5CD4}.Debug|x64.Build.0 = Debug|x64
- {E17AD8B1-0565-459B-B8D0-2024CC6C5CD4}.Debug|x86.ActiveCfg = Debug|Win32
- {E17AD8B1-0565-459B-B8D0-2024CC6C5CD4}.Debug|x86.Build.0 = Debug|Win32
- {E17AD8B1-0565-459B-B8D0-2024CC6C5CD4}.Release|x64.ActiveCfg = Release|x64
- {E17AD8B1-0565-459B-B8D0-2024CC6C5CD4}.Release|x64.Build.0 = Release|x64
- {E17AD8B1-0565-459B-B8D0-2024CC6C5CD4}.Release|x86.ActiveCfg = Release|Win32
- {E17AD8B1-0565-459B-B8D0-2024CC6C5CD4}.Release|x86.Build.0 = Release|Win32
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
- GlobalSection(ExtensibilityGlobals) = postSolution
- SolutionGuid = {FA0FE5DA-8B30-47E0-9715-792C7CA1D5F8}
- EndGlobalSection
-EndGlobal
diff --git a/GUI/GUI/GUI/.gitignore b/GUI/GUI/GUI/.gitignore
deleted file mode 100644
index 75f9933..0000000
--- a/GUI/GUI/GUI/.gitignore
+++ /dev/null
@@ -1,9 +0,0 @@
-# Don't check in build artifacts
-x64
-x86
-# No .rc generated files
-GUI.APS
-# No fetched files
-ryml.h
-whisper/
-oatpp/
diff --git a/GUI/GUI/GUI/App.cpp b/GUI/GUI/GUI/App.cpp
deleted file mode 100644
index 94a01a4..0000000
--- a/GUI/GUI/GUI/App.cpp
+++ /dev/null
@@ -1,11 +0,0 @@
-#include "App.h"
-#include "Frame.h"
-
-bool MyApp::OnInit()
-{
- Frame* frame = new Frame();
-
- frame->Show(true);
-
- return true;
-}
diff --git a/GUI/GUI/GUI/App.h b/GUI/GUI/GUI/App.h
deleted file mode 100644
index fe6eeec..0000000
--- a/GUI/GUI/GUI/App.h
+++ /dev/null
@@ -1,13 +0,0 @@
-#pragma once
-
-#include <wx/wxprec.h>
-
-#ifndef WX_PRECOMP
-#include <wx/wx.h>
-#endif
-
-class MyApp : public wxApp
-{
-public:
- virtual bool OnInit();
-};
diff --git a/GUI/GUI/GUI/BrowserSource.cpp b/GUI/GUI/GUI/BrowserSource.cpp
deleted file mode 100644
index fce1bee..0000000
--- a/GUI/GUI/GUI/BrowserSource.cpp
+++ /dev/null
@@ -1,87 +0,0 @@
-#include "BrowserSource.h"
-#include "Logging.h"
-#include "ScopeGuard.h"
-#include "WebCommon.h"
-#include "WebServer.h"
-
-using ::Logging::Log;
-
-BrowserSource::BrowserSource(uint16_t port, wxTextCtrl *out, Transcript *transcript)
- : port_(port), out_(out), transcript_(transcript)
-{}
-
-void BrowserSource::Run(volatile bool* run)
-{
- WebServer::WebServer ws(out_, port_);
-
- ws.RegisterPathHandler("GET", "/",
- [&](int& status_code, std::string& payload,
- WebServer::ContentType& type) -> void {
- auto html_path = std::filesystem::path("Resources/BrowserSource/index.html");
-
- std::ifstream html_ifs(html_path);
- std::vector<char> resp(4096 * 16, 0);
- html_ifs.read(resp.data(), resp.size());
-
- std::string html(resp.data());
- resp.clear();
-
- size_t pos = 0;
- std::string key = "%PORT%";
- std::string value = std::to_string(port_);
- while ((pos = html.find("%PORT%", pos)) != std::string::npos) {
- html.replace(pos, key.size(), value);
- pos += value.size();
- }
-
- status_code = 200;
- payload = html;
- type = WebServer::HTML;
- });
-
- ws.RegisterPathHandler("GET", "/api/transcript",
- [&](int& status_code, std::string& payload,
- WebServer::ContentType& type) -> void {
- status_code = 200;
-
- std::ostringstream transcript_oss;
- std::vector<std::string> transcript = transcript_->Get();
- // Hack: escape transcription to work inside JSON blob.
- for (auto& segment : transcript) {
- size_t pos;
- while ((pos = segment.find('"')) != std::string::npos) {
- segment[pos] = '\'';
- }
- transcript_oss << segment;
- }
-
- std::ostringstream preview_oss;
- std::vector<std::string> preview = transcript_->GetPreview();
- // Hack: escape transcription to work inside JSON blob.
- for (auto& segment : preview) {
- size_t pos;
- while ((pos = segment.find('"')) != std::string::npos) {
- segment[pos] = '\'';
- }
- preview_oss << segment;
- }
-
- bool is_final = transcript_->IsFinalized();
-
- std::ostringstream resp_oss;
- resp_oss << "{";
- resp_oss << "\"transcript\":\"" << transcript_oss.str() << "\",";
- resp_oss << "\"preview\":\"" << preview_oss.str() << "\",";
- resp_oss << "\"is_final\":" << std::to_string(is_final ? 1 : 0) << "";
- resp_oss << "}";
- payload = resp_oss.str();
- type = WebServer::JSON;
-
- //Log(out_, "Serving transcript to port {}: {}\n", port_, transcript_oss.str());
- });
-
- if (!ws.Run(run)) {
- Log(out_, "Failed to launch browser source!\n");
- }
- return;
-}
diff --git a/GUI/GUI/GUI/BrowserSource.h b/GUI/GUI/GUI/BrowserSource.h
deleted file mode 100644
index fe732ba..0000000
--- a/GUI/GUI/GUI/BrowserSource.h
+++ /dev/null
@@ -1,28 +0,0 @@
-#pragma once
-
-#include <wx/wxprec.h>
-
-#ifndef WX_PRECOMP
-#include <wx/wx.h>
-#endif
-
-#include "Transcript.h"
-
-#include <stdint.h>
-
-#include <filesystem>
-#include <fstream>
-
-class BrowserSource
-{
-public:
- BrowserSource(uint16_t port, wxTextCtrl *out, Transcript *transcript);
-
- void Run(volatile bool* run);
-
-private:
- const uint16_t port_;
- wxTextCtrl* const out_;
- Transcript* const transcript_;
-};
-
diff --git a/GUI/GUI/GUI/Config.cpp b/GUI/GUI/GUI/Config.cpp
deleted file mode 100644
index 948b1af..0000000
--- a/GUI/GUI/GUI/Config.cpp
+++ /dev/null
@@ -1,230 +0,0 @@
-#include <wx/wxprec.h>
-
-#ifndef WX_PRECOMP
-#include <wx/wx.h>
-#endif
-
-#include "Config.h"
-#include "ConfigMarshal.h"
-#include "Logging.h"
-
-#include <fstream>
-#include <memory>
-#include <string>
-
-using ::Logging::Log;
-
-bool Config::Serialize(const std::filesystem::path& path,
- const ConfigMarshal& cm) {
- // If there's an old config, delete it.
- struct stat tmpstat;
- if (stat(path.string().c_str(), &tmpstat) == 0) {
- if (::_unlink(path.string().c_str())) {
- Log(out_, "Failed to delete old config at {}: {}\n",
- path.string().c_str(), strerror(errno));
- return false;
- }
- }
-
- // Write the config to a tmp file. If we crash in the middle of this, it
- // doesn't matter, since the next process will just overwrite it.
- std::filesystem::path tmp_path = path;
-
- if (stat(tmp_path.string().c_str(), &tmpstat) == 0) {
- if (::_unlink(tmp_path.string().c_str())) {
- Log(out_, "Failed to delete old tmp config at {}: {}\n",
- tmp_path.string().c_str(), strerror(errno));
- return false;
- }
- }
-
- if (!cm.Save(tmp_path)) {
- Log(out_, "Failed to save config to {}\n", tmp_path.string());
- return false;
- }
-
- // File renames within the same filesystem are atomic, so there's no risk
- // of leaving a corrupt file on disk.
- if (rename(tmp_path.string().c_str(), path.string().c_str()) != 0) {
- Log(out_, "Failed to save config to {}: {}\n", path.string().c_str(),
- strerror(errno));
- return false;
- }
-
- return true;
-}
-
-bool Config::Deserialize(const std::filesystem::path& path,
- ConfigMarshal& cm) {
- return cm.Load(path);
-}
-
-AppConfig::AppConfig(wxTextCtrl* out)
- : Config(out),
-
- microphone("index"),
- language("english"),
- language_target("Do not translate"),
- model("small.en"),
- model_translation("nllb-200-distilled-600M"),
- button("left joystick"),
- prio("normal"),
- compute_type("float16"),
-
- enable_local_beep(true),
- enable_orig_lang(true),
- enable_browser_src(false),
- browser_src_port(8097),
- commit_fuzz_threshold(4),
- use_cpu(false),
- use_flash_attention(false),
- use_builtin(true),
- enable_uwu_filter(false),
- remove_trailing_period(false),
- enable_uppercase_filter(false),
- enable_lowercase_filter(false),
- enable_profanity_filter(false),
- enable_debug_mode(false),
- reset_on_toggle(true),
- enable_previews(true),
- enable_lock_at_spawn(true),
- gpu_idx(0),
- min_silence_duration_ms(250),
- max_speech_duration_s(10),
- reset_after_silence_s(15),
- transcription_loop_delay_ms(100),
- keybind("ctrl+x"),
-
- chars_per_sync(10),
- bytes_per_char(1),
- rows(4),
- cols(40),
- texture_sz(512),
-
- assets_path(),
- fx_path(),
- params_path(),
- menu_path(),
- unity_generated_dir("TaSTT_Generated"),
- clear_osc(true),
- enable_phonemes(false)
-{}
-
-bool AppConfig::Serialize(const std::filesystem::path& path) {
- ConfigMarshal cm(out_);
-
- cm.Set("microphone", microphone);
- cm.Set("language", language);
- cm.Set("language_target", language_target);
- cm.Set("model", model);
- cm.Set("model_translation", model_translation);
- cm.Set("button", button);
- cm.Set("prio", prio);
- cm.Set("compute_type", compute_type);
-
- cm.Set("enable_local_beep", enable_local_beep);
- cm.Set("enable_orig_lang", enable_orig_lang);
- cm.Set("enable_browser_src", enable_browser_src);
- cm.Set("browser_src_port", browser_src_port);
- cm.Set("commit_fuzz_threshold", commit_fuzz_threshold);
- cm.Set("use_cpu", use_cpu);
- cm.Set("use_flash_attention", use_flash_attention);
- cm.Set("use_builtin", use_builtin);
- cm.Set("enable_uwu_filter", enable_uwu_filter);
- cm.Set("remove_trailing_period", remove_trailing_period);
- cm.Set("enable_uppercase_filter", enable_uppercase_filter);
- cm.Set("enable_lowercase_filter", enable_lowercase_filter);
- cm.Set("enable_profanity_filter", enable_profanity_filter);
- cm.Set("enable_debug_mode", enable_debug_mode);
- cm.Set("reset_on_toggle", reset_on_toggle);
- cm.Set("enable_previews", enable_previews);
- cm.Set("enable_lock_at_spawn", enable_lock_at_spawn);
- cm.Set("gpu_idx", gpu_idx);
- cm.Set("min_silence_duration_ms", min_silence_duration_ms);
- cm.Set("max_speech_duration_s", max_speech_duration_s);
- cm.Set("reset_after_silence_s", reset_after_silence_s);
- cm.Set("transcription_loop_delay_ms", transcription_loop_delay_ms);
- cm.Set("keybind", keybind);
-
- cm.Set("chars_per_sync", chars_per_sync);
- cm.Set("bytes_per_char", bytes_per_char);
- cm.Set("rows", rows);
- cm.Set("cols", cols);
- cm.Set("texture_sz", texture_sz);
-
- cm.Set("assets_path", assets_path);
- cm.Set("fx_path", fx_path);
- cm.Set("params_path", params_path);
- cm.Set("menu_path", menu_path);
- cm.Set("unity_generated_dir", unity_generated_dir);
- cm.Set("clear_osc", clear_osc);
- cm.Set("enable_phonemes", enable_phonemes);
-
- return Config::Serialize(path, cm);
-}
-
-bool AppConfig::Deserialize(const std::filesystem::path& path) {
- std::error_code err;
- if (!std::filesystem::exists(path, err)) {
- *this = AppConfig(out_);
- return true;
- }
-
- ConfigMarshal cm(out_);
- if (!Config::Deserialize(path, cm)) {
- Log(out_, "Deserialization failed at {}\n", path.string());
- return false;
- }
-
- AppConfig c(out_);
- cm.Get("microphone", c.microphone);
- cm.Get("language", c.language);
- cm.Get("language_target", c.language_target);
- cm.Get("model", c.model);
- cm.Get("model_translation", c.model_translation);
- cm.Get("button", c.button);
- cm.Get("prio", c.prio);
- cm.Get("compute_type", c.compute_type);
-
- cm.Get("enable_local_beep", c.enable_local_beep);
- cm.Get("enable_orig_lang", c.enable_orig_lang);
- cm.Get("enable_browser_src", c.enable_browser_src);
- cm.Get("browser_src_port", c.browser_src_port);
- cm.Get("commit_fuzz_threshold", c.commit_fuzz_threshold);
- cm.Get("use_cpu", c.use_cpu);
- cm.Get("use_flash_attention", c.use_flash_attention);
- cm.Get("use_builtin", c.use_builtin);
- cm.Get("enable_uwu_filter", c.enable_uwu_filter);
- cm.Get("remove_trailing_period", c.remove_trailing_period);
- cm.Get("enable_uppercase_filter", c.enable_uppercase_filter);
- cm.Get("enable_lowercase_filter", c.enable_lowercase_filter);
- cm.Get("enable_profanity_filter", c.enable_profanity_filter);
- cm.Get("enable_debug_mode", c.enable_debug_mode);
- cm.Get("reset_on_toggle", c.reset_on_toggle);
- cm.Get("enable_previews", c.enable_previews);
- cm.Get("enable_lock_at_spawn", c.enable_lock_at_spawn);
- cm.Get("gpu_idx", c.gpu_idx);
- cm.Get("min_silence_duration_ms", c.min_silence_duration_ms);
- cm.Get("max_speech_duration_s", c.max_speech_duration_s);
- cm.Get("reset_after_silence_s", c.reset_after_silence_s);
- cm.Get("transcription_loop_delay_ms", c.transcription_loop_delay_ms);
- cm.Get("keybind", c.keybind);
-
- cm.Get("chars_per_sync", c.chars_per_sync);
- cm.Get("bytes_per_char", c.bytes_per_char);
- cm.Get("rows", c.rows);
- cm.Get("cols", c.cols);
- cm.Get("texture_sz", c.texture_sz);
-
- cm.Get("assets_path", c.assets_path);
- cm.Get("fx_path", c.fx_path);
- cm.Get("params_path", c.params_path);
- cm.Get("menu_path", c.menu_path);
- cm.Get("unity_generated_dir", c.unity_generated_dir);
- cm.Get("clear_osc", c.clear_osc);
- cm.Get("enable_phonemes", c.enable_phonemes);
-
- *this = std::move(c);
- return true;
-}
-
diff --git a/GUI/GUI/GUI/Config.h b/GUI/GUI/GUI/Config.h
deleted file mode 100644
index 48b49a2..0000000
--- a/GUI/GUI/GUI/Config.h
+++ /dev/null
@@ -1,100 +0,0 @@
-#pragma once
-
-#include <wx/wxprec.h>
-
-#ifndef WX_PRECOMP
-#include <wx/wx.h>
-#endif
-
-#include "ConfigMarshal.h"
-
-#include <filesystem>
-
-// Represents a disk-backed configuration. Knows how to save to disk
-// (Serialize) and restore from disk (Deserialize).
-class Config {
-public:
- Config(wxTextCtrl* out) : out_(out) {}
-
- virtual ~Config() {}
-
- virtual bool Serialize(const std::filesystem::path& path) = 0;
-
- virtual bool Deserialize(const std::filesystem::path& path) = 0;
-
-protected:
- virtual bool Serialize(const std::filesystem::path& path,
- const ConfigMarshal& cm);
-
- virtual bool Deserialize(const std::filesystem::path& path,
- ConfigMarshal& cm);
-
- wxTextCtrl* out_;
-};
-
-// Represents the configurable fields for the GUI. Used by both the
-// Transcription panel and the Unity panel.
-class AppConfig : public Config {
-public:
- virtual ~AppConfig() {}
-
- AppConfig(wxTextCtrl* out);
-
- bool Serialize(const std::filesystem::path& path) override;
-
- bool Deserialize(const std::filesystem::path& path) override;
-
- // The default path at which configs are serialized.
- static constexpr char kConfigPath[] = "Resources/app_config.yml";
-
- // Transcription-specific settings.
- std::string microphone;
- std::string language;
- std::string language_target;
- std::string model;
- std::string model_translation;
- std::string button;
- std::string prio;
- std::string compute_type;
-
- bool enable_local_beep;
- bool enable_orig_lang;
- bool enable_browser_src;
- int browser_src_port;
- int commit_fuzz_threshold;
- bool use_cpu;
- bool use_flash_attention;
- bool use_builtin;
- bool enable_uwu_filter;
- bool remove_trailing_period;
- bool enable_uppercase_filter;
- bool enable_lowercase_filter;
- bool enable_profanity_filter;
- bool enable_debug_mode;
- bool reset_on_toggle;
- bool enable_previews;
- bool enable_lock_at_spawn;
- int gpu_idx;
- int min_silence_duration_ms;
- int max_speech_duration_s;
- int reset_after_silence_s;
- int transcription_loop_delay_ms;
- std::string keybind;
-
- // Unity and transcription shared settings.
- int chars_per_sync;
- int bytes_per_char;
- int rows;
- int cols;
- int texture_sz;
-
- // Unity-specific settings.
- std::string assets_path;
- std::string fx_path;
- std::string params_path;
- std::string menu_path;
- std::string unity_generated_dir;
- bool clear_osc;
- bool enable_phonemes;
-};
-
diff --git a/GUI/GUI/GUI/ConfigMarshal.h b/GUI/GUI/GUI/ConfigMarshal.h
deleted file mode 100644
index 0f40ed4..0000000
--- a/GUI/GUI/GUI/ConfigMarshal.h
+++ /dev/null
@@ -1,161 +0,0 @@
-#pragma once
-
-#include <wx/wxprec.h>
-
-#ifndef WX_PRECOMP
-#include <wx/wx.h>
-#endif
-
-#include "Logging.h"
-
-#include <filesystem>
-#include <fstream>
-#include <map>
-#include <sstream>
-#include <string>
-#include <type_traits>
-
-class ConfigMarshal
-{
-public:
- ConfigMarshal(wxTextCtrl* const out)
- : out_(out)
- {}
-
- bool Save(const std::filesystem::path& path) const {
- std::ostringstream oss;
- for (const auto& [k, v] : kv_str_) {
- oss << k << ": " << v << std::endl;
- }
- for (const auto& [k, v] : kv_int_) {
- oss << k << ": " << std::to_string(v) << std::endl;
- }
- for (const auto& [k, v] : kv_float_) {
- oss << k << ": " << std::to_string(v) << std::endl;
- }
-
- std::ofstream ofs(path.string());
- ofs << oss.str();
- ofs.close();
-
- return true;
- }
-
- bool Load(const std::filesystem::path& path) {
- std::ifstream ifs(path.string());
- std::string line;
- while (std::getline(ifs, line)) {
- int n_words = 0;
-
- std::string delim = ": ";
- size_t delim_pos = line.find(delim, 0);
- if (delim_pos == std::string::npos) {
- Logging::Log(out_, "Invalid config file: line {} has no delimiter\n", line);
- return false;
- }
- std::string key = line.substr(0, delim_pos);
- std::string val = line.substr(delim_pos + delim.length());
-
- try {
- size_t pos;
- int val_i = std::stoi(val, &pos);
- if (pos == val.length()) {
- // The entire value is an int -> interpret as an int. Corollary: users
- // can't store ints as strings!
- kv_int_[key] = val_i;
- continue;
- }
- }
- catch (const std::invalid_argument&) {}
- catch (const std::out_of_range&) {}
-
- try {
- size_t pos;
- float val_f = std::stof(val, &pos);
- if (pos == val.length()) {
- // The entire value is a float -> interpret as a float. Corollary: users
- // can't store floats as strings!
- kv_float_[key] = val_f;
- continue;
- }
- }
- catch (const std::invalid_argument&) {}
- catch (const std::out_of_range&) {}
-
- kv_str_[key] = val;
- }
- return true;
- }
-
- template <typename T>
- bool Set(const std::string& key, const T& value) {
- if constexpr (std::is_same_v<T, std::string>) {
- kv_str_[key] = value;
- return true;
- }
- if constexpr (std::is_same_v<T, int> || std::is_same_v<T, bool>) {
- kv_int_[key] = static_cast<int>(value);
- return true;
- }
- if constexpr (std::is_same_v<T, float>) {
- kv_float_[key] = value;
- return true;
- }
- Logging::Log(out_, "ConfigMarshal unsupported type: {}\n", typeid(T).name());
- return false;
- }
-
- template <typename T>
- bool Get(const std::string& key, T& value) const {
- if constexpr (std::is_same_v<T, std::string>) {
- auto iter = kv_str_.find(key);
- if (iter == kv_str_.end()) {
- // Edge case: string may be represented entirely as an int, so
- // it was parsed out as an int.
- auto iter = kv_int_.find(key);
- if (iter == kv_int_.end()) {
- Logging::Log(out_, "Config contains no field named `{}`\n", key);
- return false;
- }
- value = std::to_string(iter->second);
- return true;
- }
- value = iter->second;
- return true;
- }
- if constexpr (std::is_same_v<T, float>) {
- auto iter = kv_float_.find(key);
- if (iter == kv_float_.end()) {
- Logging::Log(out_, "Config contains no field named `{}`\n", key);
- return false;
- }
- value = iter->second;
- return true;
- }
- if constexpr (std::is_same_v<T, int> || std::is_same_v<T, bool>) {
- auto iter = kv_int_.find(key);
- if (iter == kv_int_.end()) {
- Logging::Log(out_, "Config contains no field named `{}`\n", key);
- return false;
- }
- if constexpr (std::is_same_v<T, bool>) {
- if (iter->second < 0 || iter->second > 1) {
- Logging::Log(out_, "Config field {} is out of boolean range: {}\n", key, iter->second);
- return false;
- }
- }
- value = static_cast<T>(iter->second);
- return true;
- }
- Logging::Log(out_, "ConfigMarshal unsupported type: {}\n", typeid(T).name());
- return false;
- }
-
-
-private:
- wxTextCtrl* out_;
-
- std::map<std::string, std::string> kv_str_;
- std::map<std::string, int> kv_int_;
- std::map<std::string, float> kv_float_;
-};
diff --git a/GUI/GUI/GUI/Frame.cpp b/GUI/GUI/GUI/Frame.cpp
deleted file mode 100644
index 697e18a..0000000
--- a/GUI/GUI/GUI/Frame.cpp
+++ /dev/null
@@ -1,2757 +0,0 @@
-#include "BrowserSource.h"
-#include "Frame.h"
-#include "Logging.h"
-#include "PythonWrapper.h"
-#include "ScopeGuard.h"
-#include "Util.h"
-
-#include <filesystem>
-#include <fstream>
-#include <numeric>
-#include <regex>
-#include <sstream>
-#include <string>
-#include <vector>
-#include <wx/filepicker.h>
-#include <wx/txtstrm.h>
-
-// Does `lhs_type lhs = rhs`, where rhs returns `std::optional<lhs_type>`.
-// If the optional doesn't return a value, this returns.
-// TODO(yum) do this without creating a named temporary.
-// Example:
-// ASSIGN_OR_RETURN(int, foo, 1)
-#define ASSIGN_OR_RETURN_VOID(lhs_type, lhs, rhs) \
- std::optional<lhs_type> lhs ## _tmp = rhs; \
- if (!lhs ## _tmp.has_value()) return; \
- lhs_type lhs = std::move(lhs ## _tmp).value()
-
-#define ASSIGN_OR_RETURN_BOOL(lhs_type, lhs, rhs) \
- std::optional<lhs_type> lhs ## _tmp = rhs; \
- if (!lhs ## _tmp.has_value()) return false; \
- lhs_type lhs = std::move(lhs ## _tmp).value()
-
-using ::Logging::DrainAsyncOutput;
-using ::Logging::Log;
-
-namespace {
- enum FrameIds {
- ID_MAIN_PANEL,
- ID_NAVBAR,
- ID_NAVBAR_BUTTON_TRANSCRIBE,
- ID_NAVBAR_BUTTON_UNITY,
- ID_NAVBAR_BUTTON_DEBUG,
- ID_PY_PANEL,
- ID_PY_CONFIG_PANEL,
- ID_PY_APP_CONFIG_PANEL_PAIRS,
- ID_PY_DUMP_MICS_BUTTON,
- ID_PY_APP_DRAIN,
- ID_PY_APP_START_BUTTON,
- ID_PY_APP_STOP_BUTTON,
- ID_TRANSCRIBE_OUT,
- ID_PY_APP_MIC,
- ID_PY_APP_MIC_PANEL,
- ID_PY_APP_LANG,
- ID_PY_APP_TRANSLATE_TARGET,
- ID_PY_APP_LANG_PANEL,
- ID_PY_APP_MODEL,
- ID_PY_APP_MODEL_TRANSLATION,
- ID_PY_APP_CHARS_PER_SYNC,
- ID_PY_APP_BYTES_PER_CHAR,
- ID_PY_APP_BUTTON,
- ID_PY_APP_PRIO,
- ID_PY_APP_COMPUTE_TYPE,
- ID_PY_APP_MODEL_PANEL,
- ID_PY_APP_ENABLE_LOCAL_BEEP,
- ID_PY_APP_ENABLE_ORIG_LANG,
- ID_PY_APP_ENABLE_BROWSER_SRC,
- ID_PY_APP_USE_CPU,
- ID_PY_APP_USE_BUILTIN,
- ID_PY_APP_ENABLE_UWU_FILTER,
- ID_PY_APP_REMOVE_TRAILING_PERIOD,
- ID_PY_APP_ENABLE_UPPERCASE_FILTER,
- ID_PY_APP_ENABLE_LOWERCASE_FILTER,
- ID_PY_APP_ENABLE_PROFANITY_FILTER,
- ID_PY_APP_ENABLE_DEBUG_MODE,
- ID_PY_APP_RESET_ON_TOGGLE,
- ID_PY_APP_ENABLE_PREVIEWS,
- ID_PY_APP_ENABLE_LOCK_AT_SPAWN,
- ID_PY_APP_ROWS,
- ID_PY_APP_COLS,
- ID_PY_APP_GPU_IDX,
- ID_PY_APP_MIN_SILENCE_DURATION_MS,
- ID_PY_APP_MAX_SPEECH_DURATION_S,
- ID_PY_APP_RESET_AFTER_SILENCE_S,
- ID_PY_APP_TRANSCRIPTION_LOOP_DELAY_MS,
- ID_PY_APP_KEYBIND,
- ID_PY_APP_BROWSER_SRC_PORT,
- ID_PY_APP_COMMIT_FUZZ_THRESHOLD,
- ID_UNITY_PANEL,
- ID_UNITY_CONFIG_PANEL,
- ID_UNITY_OUT,
- ID_UNITY_ASSETS_FILE_PICKER,
- ID_UNITY_ANIMATOR_FILE_PICKER,
- ID_UNITY_PARAMETERS_FILE_PICKER,
- ID_UNITY_MENU_FILE_PICKER,
- ID_UNITY_CONFIG_PANEL_PAIRS,
- ID_UNITY_ANIMATOR_GENERATED_DIR,
- ID_UNITY_ANIMATOR_GENERATED_NAME,
- ID_UNITY_PARAMETERS_GENERATED_NAME,
- ID_UNITY_MENU_GENERATED_NAME,
- ID_UNITY_BUTTON_GEN_ANIMATOR,
- ID_UNITY_BUTTON_AUTO_REFRESH,
- ID_UNITY_BUTTON_AUTO_REFRESH_STOP,
- ID_UNITY_CHARS_PER_SYNC,
- ID_UNITY_BYTES_PER_CHAR,
- ID_UNITY_ROWS,
- ID_UNITY_COLS,
- ID_UNITY_TEXTURE_SZ,
- ID_UNITY_CLEAR_OSC,
- ID_UNITY_ENABLE_PHONEMES,
- ID_DEBUG_PANEL,
- ID_DEBUG_OUT,
- ID_DEBUG_CONFIG_PANEL,
- ID_DEBUG_BUTTON_CLEAR_PIP,
- ID_DEBUG_BUTTON_LIST_PIP,
- ID_DEBUG_BUTTON_RESET_VENV,
- ID_DEBUG_BUTTON_CLEAR_OSC,
- ID_DEBUG_BUTTON_BACKUP_VENV,
- ID_DEBUG_BUTTON_RESTORE_VENV,
- ID_DEBUG_BUTTON_SETUP_VENV,
- };
-
- const wxString kMicChoices[] = {
- "index",
- "beyond",
- "focusrite",
- "motu",
- // ok now this is epic
- "0",
- "1",
- "2",
- "3",
- "4",
- "5",
- "6",
- "7",
- "8",
- "9",
- "10",
- "11",
- "12",
- "13",
- "14",
- "15",
- "16",
- "17",
- "18",
- "19",
- };
- const size_t kNumMicChoices = sizeof(kMicChoices) / sizeof(kMicChoices[0]);
- constexpr int kMicDefault = 0; // index
-
- // lifted from whisper/tokenizer.py
- const wxString kLangChoices[] = {
- "english",
- "afrikaans",
- "albanian",
- "amharic",
- "arabic",
- "armenian",
- "assamese",
- "azerbaijani",
- "bashkir",
- "basque",
- "belarusian",
- "bengali",
- "bosnian",
- "breton",
- "bulgarian",
- "catalan",
- "chinese",
- "croatian",
- "czech",
- "danish",
- "dutch",
- "estonian",
- "faroese",
- "finnish",
- "french",
- "galician",
- "georgian",
- "german",
- "greek",
- "gujarati",
- "haitian creole",
- "hausa",
- "hawaiian",
- "hebrew",
- "hindi",
- "hungarian",
- "icelandic",
- "indonesian",
- "italian",
- "japanese",
- "javanese",
- "kannada",
- "kazakh",
- "khmer",
- "korean",
- "lao",
- "latin",
- "latvian",
- "lingala",
- "lithuanian",
- "luxembourgish",
- "macedonian",
- "malagasy",
- "malay",
- "malayalam",
- "maltese",
- "maori",
- "marathi",
- "mongolian",
- "myanmar",
- "nepali",
- "norwegian",
- "nynorsk",
- "occitan",
- "pashto",
- "persian",
- "polish",
- "portuguese",
- "punjabi",
- "romanian",
- "russian",
- "sanskrit",
- "serbian",
- "shona",
- "sindhi",
- "sinhala",
- "slovak",
- "slovenian",
- "somali",
- "spanish",
- "sundanese"
- "swahili",
- "swedish",
- "tagalog",
- "tajik",
- "tamil",
- "tatar",
- "telugu",
- "thai",
- "tibetan",
- "turkish",
- "turkmen",
- "ukrainian",
- "urdu",
- "uzbek",
- "vietnamese",
- "welsh",
- "yiddish",
- "yoruba",
- };
- const size_t kNumLangChoices = sizeof(kLangChoices) / sizeof(kLangChoices[0]);
- constexpr int kLangDefault = 0; // english
-
- const wxString kLangTargetChoices[] = {
- "Do not translate",
- "Acehnese(Arabic script) | ace_Arab",
- "Acehnese(Latin script) | ace_Latn",
- "Afrikaans | afr_Latn",
- "Akan | aka_Latn",
- "Amharic | amh_Ethi",
- "Armenian | hye_Armn",
- "Assamese | asm_Beng",
- "Asturian | ast_Latn",
- "Awadhi | awa_Deva",
- "Ayacucho Quechua | quy_Latn",
- "Balinese | ban_Latn",
- "Bambara | bam_Latn",
- "Banjar(Arabic script) | bjn_Arab",
- "Banjar(Latin script) | bjn_Latn",
- "Bashkir | bak_Cyrl",
- "Basque | eus_Latn",
- "Belarusian | bel_Cyrl",
- "Bemba | bem_Latn",
- "Bengali | ben_Beng",
- "Bhojpuri | bho_Deva",
- "Bosnian | bos_Latn",
- "Buginese | bug_Latn",
- "Bulgarian | bul_Cyrl",
- "Burmese | mya_Mymr",
- "Catalan | cat_Latn",
- "Cebuano | ceb_Latn",
- "Central Atlas Tamazight | tzm_Tfng",
- "Central Aymara | ayr_Latn",
- "Central Kanuri(Arabic script) | knc_Arab",
- "Central Kanuri(Latin script) | knc_Latn",
- "Central Kurdish | ckb_Arab",
- "Chhattisgarhi | hne_Deva",
- "Chinese(Simplified) | zho_Hans",
- "Chinese(Traditional) | zho_Hant",
- "Chokwe | cjk_Latn",
- "Crimean Tatar | crh_Latn",
- "Croatian | hrv_Latn",
- "Czech | ces_Latn",
- "Danish | dan_Latn",
- "Dari | prs_Arab",
- "Dutch | nld_Latn",
- "Dyula | dyu_Latn",
- "Dzongkha | dzo_Tibt",
- "Eastern Panjabi | pan_Guru",
- "Eastern Yiddish | ydd_Hebr",
- "Egyptian Arabic | arz_Arab",
- "English | eng_Latn",
- "Esperanto | epo_Latn",
- "Estonian | est_Latn",
- "Ewe | ewe_Latn",
- "Faroese | fao_Latn",
- "Fijian | fij_Latn",
- "Finnish | fin_Latn",
- "Fon | fon_Latn",
- "French | fra_Latn",
- "Friulian | fur_Latn",
- "Galician | glg_Latn",
- "Ganda | lug_Latn",
- "Georgian | kat_Geor",
- "German | deu_Latn",
- "Greek | ell_Grek",
- "Guarani | grn_Latn",
- "Gujarati | guj_Gujr",
- "Haitian Creole | hat_Latn",
- "Halh Mongolian | khk_Cyrl",
- "Hausa | hau_Latn",
- "Hebrew | heb_Hebr",
- "Hindi | hin_Deva",
- "Hungarian | hun_Latn",
- "Icelandic | isl_Latn",
- "Igbo | ibo_Latn",
- "Ilocano | ilo_Latn",
- "Indonesian | ind_Latn",
- "Irish | gle_Latn",
- "Italian | ita_Latn",
- "Japanese | jpn_Jpan",
- "Javanese | jav_Latn",
- "Jingpho | kac_Latn",
- "Kabiyè | kbp_Latn",
- "Kabuverdianu | kea_Latn",
- "Kabyle | kab_Latn",
- "Kamba | kam_Latn",
- "Kannada | kan_Knda",
- "Kashmiri(Arabic script) | kas_Arab",
- "Kashmiri(Devanagari script) | kas_Deva",
- "Kazakh | kaz_Cyrl",
- "Khmer | khm_Khmr",
- "Kikongo | kon_Latn",
- "Kikuyu | kik_Latn",
- "Kimbundu | kmb_Latn",
- "Kinyarwanda | kin_Latn",
- "Korean | kor_Hang",
- "Kyrgyz | kir_Cyrl",
- "Lao | lao_Laoo",
- "Latgalian | ltg_Latn",
- "Ligurian | lij_Latn",
- "Limburgish | lim_Latn",
- "Lingala | lin_Latn",
- "Lithuanian | lit_Latn",
- "Lombard | lmo_Latn",
- "Luba - Kasai | lua_Latn",
- "Luo | luo_Latn",
- "Luxembourgish | ltz_Latn",
- "Macedonian | mkd_Cyrl",
- "Magahi | mag_Deva",
- "Maithili | mai_Deva",
- "Malayalam | mal_Mlym",
- "Maltese | mlt_Latn",
- "Maori | mri_Latn",
- "Marathi | mar_Deva",
- "Meitei(Bengali script) | mni_Beng",
- "Mesopotamian Arabic | acm_Arab",
- "Minangkabau(Arabic script) | min_Arab",
- "Minangkabau(Latin script) | min_Latn",
- "Mizo | lus_Latn",
- "Modern Standard Arabic | arb_Arab",
- "Modern Standard Arabic(Romanized) | arb_Latn",
- "Moroccan Arabic | ary_Arab",
- "Mossi | mos_Latn",
- "Najdi Arabic | ars_Arab",
- "Nepali | npi_Deva",
- "Nigerian Fulfulde | fuv_Latn",
- "North Azerbaijani | azj_Latn",
- "North Levantine Arabic | apc_Arab",
- "Northern Kurdish | kmr_Latn",
- "Northern Sotho | nso_Latn",
- "Northern Uzbek | uzn_Latn",
- "Norwegian Bokmål | nob_Latn",
- "Norwegian Nynorsk | nno_Latn",
- "Nuer | nus_Latn",
- "Nyanja | nya_Latn",
- "Occitan | oci_Latn",
- "Odia | ory_Orya",
- "Pangasinan | pag_Latn",
- "Papiamento | pap_Latn",
- "Plateau Malagasy | plt_Latn",
- "Polish | pol_Latn",
- "Portuguese | por_Latn",
- "Romanian | ron_Latn",
- "Rundi | run_Latn",
- "Russian | rus_Cyrl",
- "Samoan | smo_Latn",
- "Sango | sag_Latn",
- "Sanskrit | san_Deva",
- "Santali | sat_Olck",
- "Sardinian | srd_Latn",
- "Scottish Gaelic | gla_Latn",
- "Serbian | srp_Cyrl",
- "Shan | shn_Mymr",
- "Shona | sna_Latn",
- "Sicilian | scn_Latn",
- "Silesian | szl_Latn",
- "Sindhi | snd_Arab",
- "Sinhala | sin_Sinh",
- "Slovak | slk_Latn",
- "Slovenian | slv_Latn",
- "Somali | som_Latn",
- "South Azerbaijani | azb_Arab",
- "South Levantine Arabic | ajp_Arab",
- "Southern Pashto | pbt_Arab",
- "Southern Sotho | sot_Latn",
- "Southwestern Dinka | dik_Latn",
- "Spanish | spa_Latn",
- "Standard Latvian | lvs_Latn",
- "Standard Malay | zsm_Latn",
- "Standard Tibetan | bod_Tibt",
- "Sundanese | sun_Latn",
- "Swahili | swh_Latn",
- "Swati | ssw_Latn",
- "Swedish | swe_Latn",
- "Ta'izzi - Adeni Arabic | acq_Arab",
- "Tagalog | tgl_Latn",
- "Tajik | tgk_Cyrl",
- "Tamasheq(Latin script) | taq_Latn",
- "Tamasheq(Tifinagh script) | taq_Tfng",
- "Tamil | tam_Taml",
- "Tatar | tat_Cyrl",
- "Telugu | tel_Telu",
- "Thai | tha_Thai",
- "Tigrinya | tir_Ethi",
- "Tok Pisin | tpi_Latn",
- "Tosk Albanian | als_Latn",
- "Tsonga | tso_Latn",
- "Tswana | tsn_Latn",
- "Tumbuka | tum_Latn",
- "Tunisian Arabic | aeb_Arab",
- "Turkish | tur_Latn",
- "Turkmen | tuk_Latn",
- "Twi | twi_Latn",
- "Ukrainian | ukr_Cyrl",
- "Umbundu | umb_Latn",
- "Urdu | urd_Arab",
- "Uyghur | uig_Arab",
- "Venetian | vec_Latn",
- "Vietnamese | vie_Latn",
- "Waray | war_Latn",
- "Welsh | cym_Latn",
- "West Central Oromo | gaz_Latn",
- "Western Persian | pes_Arab",
- "Wolof | wol_Latn",
- "Xhosa | xho_Latn",
- "Yoruba | yor_Latn",
- "Yue Chinese | yue_Hant",
- "Zulu | zul_Latn",
- };
- const size_t kNumLangTargetChoices = sizeof(kLangTargetChoices) / sizeof(kLangTargetChoices[0]);
- constexpr int kLangTargetDefault = 0; // do not translate
-
- // lifted from whisper/__init__.py
- const wxString kModelChoices[] = {
- "tiny.en",
- "tiny",
- "base.en",
- "base",
- "distil-small.en",
- "small.en",
- "small",
- "distil-medium.en",
- "medium.en",
- "medium",
- "large-v1",
- "distil-large-v2",
- "large-v2",
- "distil-large-v3",
- "large-v3",
- "large-v3-turbo",
- };
- const size_t kNumModelChoices = sizeof(kModelChoices) / sizeof(kModelChoices[0]);
- constexpr int kModelDefault = 2; // base.en
-
- const wxString kModelTranslationChoices[] = {
- "nllb-200-distilled-600M",
- "nllb-200-distilled-1.3B",
- };
- const size_t kNumModelTranslationChoices = sizeof(kModelTranslationChoices) / sizeof(kModelTranslationChoices[0]);
- constexpr int kModelTranslationDefault = 2; // base.en
-
- const wxString kCharsPerSync[] = {
- "1",
- "2",
- "3",
- "4",
- "5",
- "6",
- "7",
- "8",
- "9",
- "10",
- "11",
- "12",
- "13",
- "14",
- "15",
- "16",
- "17",
- "18",
- "19",
- "20",
- "21",
- "22",
- "23",
- "24",
- };
- const size_t kNumCharsPerSync = sizeof(kCharsPerSync) / sizeof(kCharsPerSync[0]);
- // 20 chars per sync is a good balance between parameter space and speed:
- // 20 * 8 + 25 = 185 bits, leaving 71 bits for other systems.
- constexpr int kCharsDefault = kNumCharsPerSync - 5;
-
- const wxString kBytesPerChar[] = {
- "1",
- "2",
- };
- const size_t kNumBytesPerChar = sizeof(kBytesPerChar) / sizeof(kBytesPerChar[0]);
- // Sorry international users. Optimize for English speakers, by default.
- constexpr int kBytesDefault = 0;
-
- const wxString kButton[] = {
- "left thumbstick",
- "left a",
- "left b",
- "right thumbstick",
- "right a",
- "right b",
- };
- const size_t kNumButtons = sizeof(kButton) / sizeof(kButton[0]);
- constexpr int kButtonDefault = 0;
-
- const wxString kPrio[] = {
- "idle",
- "below normal",
- "normal",
- "above normal",
- "high",
- "realtime",
- };
- const size_t kNumPrios = sizeof(kPrio) / sizeof(kPrio[0]);
- constexpr int kPrioDefault = 0;
-
- const wxString kComputeType[] = {
- "int8",
- "int8_float32",
- "int8_float16",
- "int8_bfloat16",
- "int16",
- "float16",
- "bfloat16",
- "float32",
- };
- const size_t kNumComputeTypes = sizeof(kComputeType) / sizeof(kComputeType[0]);
- constexpr int kComputeTypeDefault = 4;
-
- const wxString kDecodeMethods[] = {
- "greedy",
- "beam",
- };
- const size_t kNumDecodeMethods = sizeof(kDecodeMethods) / sizeof(kDecodeMethods[0]);
- constexpr int kDecodeMethodDefault = 0;
-
- // Given the string value of a dropdown menu's entry, find its index. If no
- // entry matches, return `default_index`.
- int GetDropdownChoiceIndex(const wxString menu[],
- const size_t num_menu_entries, const std::string& entry,
- const int default_index) {
- for (int i = 0; i < num_menu_entries; i++) {
- if (entry == menu[i]) {
- return i;
- }
- }
- return default_index;
- }
-
- std::optional<int> stoiInRange(wxTextCtrl* out, const std::string& int_s, const std::string int_name, int min, int max) {
- int res;
- try {
- res = std::stoi(int_s);
- }
- catch (const std::invalid_argument&) {
- Log(out, "Could not parse {} \"{}\" as an integer: invalid\n",
- int_name, int_s);
- return {};
- }
- catch (const std::out_of_range&) {
- Log(out, "Could not parse {} \"{}\" as an integer: out of "
- "range\n", int_name, int_s);
- return {};
- }
- if (res < min || res > max) {
- Log(out, "Int argument {} is out of the allowed range [{},{}]\n",
- int_name, min, max);
- return {};
- }
- return res;
- }
-
-} // namespace
-
-Frame::Frame()
- : wxFrame(nullptr, wxID_ANY, "TaSTT"),
- run_py_app_(false),
- py_app_drain_(this, ID_PY_APP_DRAIN)
-{
- app_c_ = std::make_unique<AppConfig>(nullptr);
-
- // Initialize futures so that valid() returns true. We use this as a proxy
- // to tell whether they're still executing.
- {
- auto p = std::promise<bool>();
- py_app_ = p.get_future();
- p.set_value(true);
- }
- {
- auto p = std::promise<bool>();
- obs_app_ = p.get_future();
- p.set_value(true);
- }
- {
- auto p = std::promise<bool>();
- unity_app_ = p.get_future();
- p.set_value(true);
- }
- {
- auto p = std::promise<bool>();
- unity_auto_refresh_ = p.get_future();
- p.set_value(true);
- }
- {
- auto p = std::promise<bool>();
- dump_mics_ = p.get_future();
- p.set_value(true);
- }
- {
- auto p = std::promise<bool>();
- env_proc_ = p.get_future();
- p.set_value(true);
- }
- {
- auto p = std::promise<void>();
- reset_venv_proc_ = p.get_future();
- p.set_value();
- }
-
- auto* main_panel = new wxPanel(this, ID_MAIN_PANEL);
- main_panel_ = main_panel;
- {
- auto* navbar = new wxPanel(main_panel, ID_NAVBAR);
- {
- auto* navbar_button_transcribe = new wxButton(navbar,
- ID_NAVBAR_BUTTON_TRANSCRIBE, "Transcription");
- auto* navbar_button_unity = new wxButton(navbar,
- ID_NAVBAR_BUTTON_UNITY, "Unity");
- auto* navbar_button_debug = new wxButton(navbar,
- ID_NAVBAR_BUTTON_DEBUG, "Debug");
-
- auto* sizer = new wxBoxSizer(wxVERTICAL);
- navbar->SetSizer(sizer);
-
- sizer->Add(navbar_button_transcribe, /*proportion=*/0,
- /*flags=*/wxEXPAND);
- sizer->Add(navbar_button_unity, /*proportion=*/0,
- /*flags=*/wxEXPAND);
- sizer->Add(navbar_button_debug, /*proportion=*/0,
- /*flags=*/wxEXPAND);
- }
-
- auto* transcribe_panel = new wxPanel(main_panel, ID_PY_PANEL);
- transcribe_panel_ = transcribe_panel;
- {
- const auto transcribe_out_sz = wxSize(/*x_px=*/480, /*y_px=*/160);
- auto* transcribe_out = new wxTextCtrl(transcribe_panel,
- ID_TRANSCRIBE_OUT, wxEmptyString, wxDefaultPosition,
- transcribe_out_sz, wxTE_MULTILINE | wxTE_READONLY);
- transcribe_out->SetMinSize(transcribe_out_sz);
- transcribe_out_ = transcribe_out;
-
- Log(transcribe_out_, "{}\n", PythonWrapper::GetVersion());
-
- auto* py_config_panel = new wxPanel(transcribe_panel,
- ID_PY_CONFIG_PANEL);
- {
- auto* py_dump_mics_button = new wxButton(py_config_panel,
- ID_PY_DUMP_MICS_BUTTON, "List input devices");
- py_dump_mics_button->SetToolTip(
- "List the microphones (and input devices) attached to "
- "your computer. To use a microphone, enter the number "
- "to its left in the 'Microphone' dropdown.");
- auto* py_app_config_panel_pairs = new wxPanel(py_config_panel,
- ID_PY_APP_CONFIG_PANEL_PAIRS);
- {
- auto* py_app_mic = new wxChoice(py_app_config_panel_pairs,
- ID_PY_APP_MIC, wxDefaultPosition,
- wxDefaultSize, kNumMicChoices, kMicChoices);
- py_app_mic->SetToolTip(
- "Select which microphone to listen to when "
- "transcribing. To get list microphones and get their "
- "numbers, click 'List input devices'.");
- py_app_mic_ = py_app_mic;
-
- auto* py_app_lang = new wxChoice(py_app_config_panel_pairs,
- ID_PY_APP_LANG, wxDefaultPosition, wxDefaultSize,
- kNumLangChoices, kLangChoices);
- py_app_lang->SetToolTip("Select which language you will "
- "speak in.");
- py_app_lang_ = py_app_lang;
-
- auto* py_app_translate_target = new wxChoice(py_app_config_panel_pairs,
- ID_PY_APP_TRANSLATE_TARGET, wxDefaultPosition, wxDefaultSize,
- kNumLangTargetChoices, kLangTargetChoices);
- py_app_translate_target->SetToolTip("Select which "
- "language to translate to. This is the language "
- "that will appear in game. "
- "If using a language with non-ASCII characters (i.e. "
- "not English), make sure you have 'bytes per char' "
- "set to 2.");
- py_app_translate_target_ = py_app_translate_target;
-
- auto* py_app_model = new wxChoice(
- py_app_config_panel_pairs, ID_PY_APP_MODEL,
- wxDefaultPosition, wxDefaultSize, kNumModelChoices,
- kModelChoices);
- py_app_model->SetToolTip("Select which version of "
- "the transcription model to use. 'base' is a good "
- "choice for most users. 'small' is slightly more "
- "accurate, slower, and uses more VRAM. The *.en "
- "models are fine-tuned English language models, and "
- "don't work for other languages.");
- py_app_model_ = py_app_model;
-
- auto* py_app_model_translation = new wxChoice(
- py_app_config_panel_pairs, ID_PY_APP_MODEL_TRANSLATION,
- wxDefaultPosition, wxDefaultSize, kNumModelTranslationChoices,
- kModelTranslationChoices);
- py_app_model_translation->SetToolTip("Select which "
- "version of the translation model to use. 600M params "
- "uses 4.1 GB of memory, while 1.3B uses ~7GB of "
- "memory. If 'Translate to' is set to 'Do not "
- "translate', this does nothing.");
- py_app_model_translation_ = py_app_model_translation;
-
- auto* py_app_chars_per_sync = new wxChoice(
- py_app_config_panel_pairs, ID_PY_APP_CHARS_PER_SYNC,
- wxDefaultPosition, wxDefaultSize, kNumCharsPerSync,
- kCharsPerSync);
- py_app_chars_per_sync->SetToolTip(
- "VRChat syncs avatar parameters roughly 5 times per "
- "second. We use this to send text to the box. By "
- "sending more characters per sync, the box will be "
- "faster, but you'll use more avatar parameters.");
- py_app_chars_per_sync_ = py_app_chars_per_sync;
-
- auto* py_app_bytes_per_char = new wxChoice(
- py_app_config_panel_pairs, ID_PY_APP_BYTES_PER_CHAR,
- wxDefaultPosition, wxDefaultSize, kNumBytesPerChar,
- kBytesPerChar);
- py_app_bytes_per_char->SetToolTip(
- "If you speak a language that uses non-ASCII "
- "characters (i.e. not English), set this to 2.");
- py_app_bytes_per_char_ = py_app_bytes_per_char;
-
- auto* py_app_button = new wxChoice(py_app_config_panel_pairs,
- ID_PY_APP_BUTTON, wxDefaultPosition,
- wxDefaultSize, kNumButtons, kButton);
- py_app_button->SetToolTip(
- "You will use this button in game to start and stop "
- "transcription. Set it to a button you're not using "
- "for anything else!");
- py_app_button_ = py_app_button;
-
- auto* py_app_prio = new wxChoice(py_app_config_panel_pairs,
- ID_PY_APP_PRIO, wxDefaultPosition,
- wxDefaultSize, kNumPrios, kPrio);
- py_app_prio->SetToolTip(
- "The priority level at which the transcription process runs.");
- py_app_prio_ = py_app_prio;
-
- auto* py_app_compute_type = new wxChoice(py_app_config_panel_pairs,
- ID_PY_APP_COMPUTE_TYPE, wxDefaultPosition,
- wxDefaultSize, kNumComputeTypes, kComputeType);
- py_app_compute_type->SetToolTip(
- "The compute type to use for GPU inference. Ignored "
- "if CPU mode is enabled.");
- py_app_compute_type_ = py_app_compute_type;
-
- auto* py_app_rows = new wxTextCtrl(py_app_config_panel_pairs,
- ID_PY_APP_ROWS, std::to_string(app_c_->rows),
- wxDefaultPosition, wxDefaultSize, /*style=*/0);
- py_app_rows->SetToolTip(
- "The number of rows on the text box.");
- py_app_rows_ = py_app_rows;
-
- auto* py_app_cols = new wxTextCtrl(py_app_config_panel_pairs,
- ID_PY_APP_COLS, std::to_string(app_c_->cols),
- wxDefaultPosition, wxDefaultSize, /*style=*/0);
- py_app_cols->SetToolTip(
- "The number of columns on the text box.");
- py_app_cols_ = py_app_cols;
-
- auto* py_app_gpu_idx = new wxTextCtrl(
- py_app_config_panel_pairs, ID_PY_APP_GPU_IDX,
- std::to_string(app_c_->gpu_idx), wxDefaultPosition,
- wxDefaultSize, /*style=*/0);
- py_app_gpu_idx->SetToolTip(
- "The index of the GPU to use. 0 is usually your CPU's "
- "onboard GPU (if you have one), 1 is usually your "
- "discrete GPU.");
- py_app_gpu_idx_ = py_app_gpu_idx;
-
- auto* py_app_min_silence_duration_ms = new wxTextCtrl(
- py_app_config_panel_pairs, ID_PY_APP_MIN_SILENCE_DURATION_MS,
- std::to_string(app_c_->min_silence_duration_ms), wxDefaultPosition,
- wxDefaultSize, /*style=*/0);
- py_app_min_silence_duration_ms->SetToolTip(
- "The minimum duration, in milliseconds, of a silence "
- "used to segment speech.");
- py_app_min_silence_duration_ms_ = py_app_min_silence_duration_ms;
-
- auto* py_app_max_speech_duration_s = new wxTextCtrl(
- py_app_config_panel_pairs, ID_PY_APP_MAX_SPEECH_DURATION_S,
- std::to_string(app_c_->max_speech_duration_s), wxDefaultPosition,
- wxDefaultSize, /*style=*/0);
- py_app_max_speech_duration_s->SetToolTip(
- "The maximum duration, in seconds, of any segment of "
- "speech. Continuous speech longer than this is split "
- "at the last pause lasting longer than 100 "
- "milliseconds.");
- py_app_max_speech_duration_s_ = py_app_max_speech_duration_s;
-
- auto* py_app_reset_after_silence_s = new wxTextCtrl(
- py_app_config_panel_pairs, ID_PY_APP_RESET_AFTER_SILENCE_S,
- std::to_string(app_c_->reset_after_silence_s), wxDefaultPosition,
- wxDefaultSize, /*style=*/0);
- py_app_reset_after_silence_s->SetToolTip(
- "If you pause for at least this long between "
- "sentences, the transcript before the pause will be "
- "removed. To disable this feature, set it to -1.");
- py_app_reset_after_silence_s_ = py_app_reset_after_silence_s;
-
- auto* py_app_transcription_loop_delay_ms = new wxTextCtrl(
- py_app_config_panel_pairs, ID_PY_APP_TRANSCRIPTION_LOOP_DELAY_MS,
- std::to_string(app_c_->transcription_loop_delay_ms), wxDefaultPosition,
- wxDefaultSize, /*style=*/0);
- py_app_transcription_loop_delay_ms->SetToolTip(
- "The amount of time, in milliseconds, that the "
- "application will sleep between every subsequent "
- "transcription.");
- py_app_transcription_loop_delay_ms_ = py_app_transcription_loop_delay_ms;
-
- auto* py_app_keybind = new wxTextCtrl(
- py_app_config_panel_pairs, ID_PY_APP_KEYBIND,
- app_c_->keybind, wxDefaultPosition,
- wxDefaultSize, /*style=*/0);
- py_app_keybind->SetToolTip(
- "The keybind to use to toggle the STT when in desktop "
- "mode. To dismiss the STT, double press the keybind "
- "quickly.");
- py_app_keybind_ = py_app_keybind;
-
- auto* py_app_browser_src_port = new wxTextCtrl(
- py_app_config_panel_pairs, ID_PY_APP_BROWSER_SRC_PORT,
- std::to_string(app_c_->browser_src_port), wxDefaultPosition,
- wxDefaultSize, /*style=*/0);
- py_app_browser_src_port->SetToolTip(
- "The port to send the transcript to when `Enable "
- "browser source` is enabled. To preview, go to "
- "localhost:$PORT in your browser, where $PORT is the "
- "value you configure here.");
- py_app_browser_src_port_ = py_app_browser_src_port;
-
- auto* sizer = new wxFlexGridSizer(/*cols=*/2);
- py_app_config_panel_pairs->SetSizer(sizer);
-
- sizer->Add(new wxStaticText(py_app_config_panel_pairs,
- wxID_ANY, /*label=*/"Microphone:"));
- sizer->Add(py_app_mic, /*proportion=*/0,
- /*flags=*/wxEXPAND);
-
- sizer->Add(new wxStaticText(py_app_config_panel_pairs,
- wxID_ANY, /*label=*/"Spoken language:"));
- sizer->Add(py_app_lang, /*proportion=*/0,
- /*flags=*/wxEXPAND);
-
- sizer->Add(new wxStaticText(py_app_config_panel_pairs,
- wxID_ANY, /*label=*/"Transcription model:"));
- sizer->Add(py_app_model, /*proportion=*/0,
- /*flags=*/wxEXPAND);
-
- sizer->Add(new wxStaticText(py_app_config_panel_pairs,
- wxID_ANY, /*label=*/"Translate to:"));
- sizer->Add(py_app_translate_target, /*proportion=*/0,
- /*flags=*/wxEXPAND);
-
- sizer->Add(new wxStaticText(py_app_config_panel_pairs,
- wxID_ANY, /*label=*/"Translation model:"));
- sizer->Add(py_app_model_translation, /*proportion=*/0,
- /*flags=*/wxEXPAND);
-
- sizer->Add(new wxStaticText(py_app_config_panel_pairs,
- wxID_ANY, /*label=*/"Characters per sync:"));
- sizer->Add(py_app_chars_per_sync, /*proportion=*/0,
- /*flags=*/wxEXPAND);
-
- sizer->Add(new wxStaticText(py_app_config_panel_pairs,
- wxID_ANY, /*label=*/"Bytes per character:"));
- sizer->Add(py_app_bytes_per_char, /*proportion=*/0,
- /*flags=*/wxEXPAND);
-
- sizer->Add(new wxStaticText(py_app_config_panel_pairs,
- wxID_ANY, /*label=*/"Button:"));
- sizer->Add(py_app_button, /*proportion=*/0,
- /*flags=*/wxEXPAND);
-
- sizer->Add(new wxStaticText(py_app_config_panel_pairs,
- wxID_ANY, /*label=*/"Process priority:"));
- sizer->Add(py_app_prio, /*proportion=*/0,
- /*flags=*/wxEXPAND);
-
- sizer->Add(new wxStaticText(py_app_config_panel_pairs,
- wxID_ANY, /*label=*/"GPU compute type:"));
- sizer->Add(py_app_compute_type, /*proportion=*/0,
- /*flags=*/wxEXPAND);
-
- sizer->Add(new wxStaticText(py_app_config_panel_pairs,
- wxID_ANY, /*label=*/"Desktop keybind:"));
- sizer->Add(py_app_keybind, /*proportion=*/0,
- /*flags=*/wxEXPAND);
-
- sizer->Add(new wxStaticText(py_app_config_panel_pairs,
- wxID_ANY, /*label=*/"Text box rows:"));
- sizer->Add(py_app_rows, /*proportion=*/0,
- /*flags=*/wxEXPAND);
-
- sizer->Add(new wxStaticText(py_app_config_panel_pairs,
- wxID_ANY, /*label=*/"Text box columns:"));
- sizer->Add(py_app_cols, /*proportion=*/0,
- /*flags=*/wxEXPAND);
-
- sizer->Add(new wxStaticText(py_app_config_panel_pairs,
- wxID_ANY, /*label=*/"GPU index:"));
- sizer->Add(py_app_gpu_idx, /*proportion=*/0,
- /*flags=*/wxEXPAND);
-
- sizer->Add(new wxStaticText(py_app_config_panel_pairs,
- wxID_ANY, /*label=*/"Minimum silence duration (ms):"));
- sizer->Add(py_app_min_silence_duration_ms, /*proportion=*/0,
- /*flags=*/wxEXPAND);
-
- sizer->Add(new wxStaticText(py_app_config_panel_pairs,
- wxID_ANY, /*label=*/"Maximum speech duration (s):"));
- sizer->Add(py_app_max_speech_duration_s, /*proportion=*/0,
- /*flags=*/wxEXPAND);
-
- sizer->Add(new wxStaticText(py_app_config_panel_pairs,
- wxID_ANY, /*label=*/"Reset after silence (s):"));
- sizer->Add(py_app_reset_after_silence_s, /*proportion=*/0,
- /*flags=*/wxEXPAND);
-
- sizer->Add(new wxStaticText(py_app_config_panel_pairs,
- wxID_ANY, /*label=*/"Transcription loop delay (ms):"));
- sizer->Add(py_app_transcription_loop_delay_ms, /*proportion=*/0,
- /*flags=*/wxEXPAND);
-
- sizer->Add(new wxStaticText(py_app_config_panel_pairs,
- wxID_ANY, /*label=*/"Browser source port:"));
- sizer->Add(py_app_browser_src_port, /*proportion=*/0,
- /*flags=*/wxEXPAND);
- }
-
- auto* py_app_enable_browser_src = new wxCheckBox(py_config_panel,
- ID_PY_APP_ENABLE_BROWSER_SRC, "Enable browser source");
- py_app_enable_browser_src->SetValue(app_c_->enable_browser_src);
- py_app_enable_browser_src->SetToolTip(
- "Stream transcript to a browser source. To preview, go to "
- "localhost:8097, or whatever port you configured.");
- py_app_enable_browser_src_ = py_app_enable_browser_src;
-
- auto* py_app_enable_local_beep = new wxCheckBox(py_config_panel,
- ID_PY_APP_ENABLE_LOCAL_BEEP, "Enable local beep");
- py_app_enable_local_beep->SetValue(app_c_->enable_local_beep);
- py_app_enable_local_beep->SetToolTip(
- "By default, TaSTT will play a sound (audible only to "
- "you) when it begins transcription and when it stops. "
- "Uncheck this to disable that behavior."
- );
- py_app_enable_local_beep_ = py_app_enable_local_beep;
-
- auto* py_app_enable_orig_lang = new wxCheckBox(py_config_panel,
- ID_PY_APP_ENABLE_ORIG_LANG, "Translation shows original language");
- py_app_enable_orig_lang->SetValue(app_c_->enable_orig_lang);
- py_app_enable_orig_lang->SetToolTip(
- "When translation is enabled, this checkbox determines whether "
- "the original language is shown in parentheses after the "
- "translated text - c'est comme ça. ( like this)."
- );
- py_app_enable_orig_lang_ = py_app_enable_orig_lang;
-
- auto* py_app_use_cpu = new wxCheckBox(py_config_panel,
- ID_PY_APP_USE_CPU, "Use CPU");
- py_app_use_cpu->SetValue(app_c_->use_cpu);
- py_app_use_cpu->SetToolTip(
- "If checked, the transcription engine will run on your "
- "CPU instead of your GPU. This is typically much slower "
- "and should only be used if you aren't able to use your "
- "GPU."
- );
- py_app_use_cpu_ = py_app_use_cpu;
-
- auto* py_app_use_builtin = new wxCheckBox(py_config_panel,
- ID_PY_APP_USE_BUILTIN, "Use built-in chatbox");
- py_app_use_builtin->SetValue(app_c_->use_builtin);
- py_app_use_builtin->SetToolTip(
- "If checked, text will be sent to the built-in text box "
- "instead of one attached to the current avatar."
- );
- py_app_use_builtin_ = py_app_use_builtin;
-
- auto* py_app_enable_uwu_filter = new wxCheckBox(py_config_panel,
- ID_PY_APP_ENABLE_UWU_FILTER, "Enable uwu filter :3");
- py_app_enable_uwu_filter->SetValue(app_c_->enable_uwu_filter);
- py_app_enable_uwu_filter->SetToolTip(
- "If checked, transcribed text will be passed through an "
- "uwu filter."
- );
- py_app_enable_uwu_filter_ = py_app_enable_uwu_filter;
-
- auto* py_app_remove_trailing_period = new wxCheckBox(py_config_panel,
- ID_PY_APP_REMOVE_TRAILING_PERIOD, "Remove trailing period");
- py_app_remove_trailing_period->SetValue(app_c_->remove_trailing_period);
- py_app_remove_trailing_period->SetToolTip(
- "If checked, transcriptions will never end with a period."
- );
- py_app_remove_trailing_period_ = py_app_remove_trailing_period;
-
- auto* py_app_enable_uppercase_filter = new wxCheckBox(py_config_panel,
- ID_PY_APP_ENABLE_UPPERCASE_FILTER, "Enable uppercase filter");
- py_app_enable_uppercase_filter->SetValue(app_c_->enable_uppercase_filter);
- py_app_enable_uppercase_filter->SetToolTip(
- "If checked, transcribed text will be converted to UPPERCASE."
- );
- py_app_enable_uppercase_filter_ = py_app_enable_uppercase_filter;
-
- auto* py_app_enable_lowercase_filter = new wxCheckBox(py_config_panel,
- ID_PY_APP_ENABLE_LOWERCASE_FILTER, "Enable lowercase filter");
- py_app_enable_lowercase_filter->SetValue(app_c_->enable_lowercase_filter);
- py_app_enable_lowercase_filter->SetToolTip(
- "If checked, transcribed text will be converted to lowercase."
- );
- py_app_enable_lowercase_filter_ = py_app_enable_lowercase_filter;
-
- auto* py_app_enable_profanity_filter = new wxCheckBox(py_config_panel,
- ID_PY_APP_ENABLE_PROFANITY_FILTER, "Enable profanity filter");
- py_app_enable_profanity_filter->SetValue(app_c_->enable_profanity_filter);
- py_app_enable_profanity_filter->SetToolTip(
- "If checked, profane words in your transcript will have "
- "their vowels replaced with asterisks. Currently only "
- "English is supported."
- );
- py_app_enable_profanity_filter_ = py_app_enable_profanity_filter;
-
- auto* py_app_enable_debug_mode = new wxCheckBox(py_config_panel,
- ID_PY_APP_ENABLE_DEBUG_MODE, "Enable debug mode");
- py_app_enable_debug_mode->SetValue(app_c_->enable_debug_mode);
- py_app_enable_debug_mode->SetToolTip(
- "If checked, the transcription engine will print out "
- "additional information. Use this if you're debugging a "
- "technical issue."
- );
- py_app_enable_debug_mode_ = py_app_enable_debug_mode;
-
- auto* py_app_reset_on_toggle = new wxCheckBox(py_config_panel,
- ID_PY_APP_RESET_ON_TOGGLE, "Reset transcript on toggle");
- py_app_reset_on_toggle->SetValue(app_c_->reset_on_toggle);
- py_app_reset_on_toggle->SetToolTip(
- "If checked, the transcript will be reset (cleared) every "
- "time that transcription is toggled on. Only affects "
- "keyboard controls, not the VR controls."
- );
- py_app_reset_on_toggle_ = py_app_reset_on_toggle;
-
- auto* py_app_enable_previews = new wxCheckBox(py_config_panel,
- ID_PY_APP_ENABLE_PREVIEWS, "Enable previews");
- py_app_enable_previews->SetValue(app_c_->enable_previews);
- py_app_enable_previews->SetToolTip(
- "If checked, audio that has not yet stabilized will also "
- "be transcribed and shown. Turn this off if you're on a "
- "resource-constrained system or if transcription is "
- "running slowly."
- );
- py_app_enable_previews_ = py_app_enable_previews;
-
- auto* py_app_enable_lock_at_spawn = new wxCheckBox(py_config_panel,
- ID_PY_APP_ENABLE_LOCK_AT_SPAWN, "Lock chatbox at spawn");
- py_app_enable_lock_at_spawn->SetValue(app_c_->enable_lock_at_spawn);
- py_app_enable_lock_at_spawn->SetToolTip(
- "If checked, the custom chatbox will be locked in world "
- "space when spawned. This minimizes the visual "
- "disruption for other players.");
- py_app_enable_lock_at_spawn_ = py_app_enable_lock_at_spawn;
-
- // Hack: Add newlines before and after the button text to make
- // the buttons bigger, and easier to click from inside VR.
- auto* py_app_start_button = new wxButton(py_config_panel,
- ID_PY_APP_START_BUTTON, "\nBegin transcribing\n\n");
- auto* py_app_stop_button = new wxButton(py_config_panel,
- ID_PY_APP_STOP_BUTTON, "\nStop transcribing\n\n");
-
- auto* sizer = new wxBoxSizer(wxVERTICAL);
- py_config_panel->SetSizer(sizer);
- sizer->Add(py_dump_mics_button, /*proportion=*/0,
- /*flags=*/wxEXPAND);
- sizer->Add(py_app_config_panel_pairs, /*proportion=*/0,
- /*flags=*/wxEXPAND);
- sizer->Add(py_app_reset_on_toggle, /*proportion=*/0,
- /*flags=*/wxEXPAND);
- sizer->Add(py_app_enable_previews, /*proportion=*/0,
- /*flags=*/wxEXPAND);
- sizer->Add(py_app_enable_lock_at_spawn, /*proportion=*/0,
- /*flags=*/wxEXPAND);
- sizer->Add(py_app_enable_browser_src, /*proportion=*/0,
- /*flags=*/wxEXPAND);
- sizer->Add(py_app_enable_local_beep, /*proportion=*/0,
- /*flags=*/wxEXPAND);
- sizer->Add(py_app_enable_orig_lang, /*proportion=*/0,
- /*flags=*/wxEXPAND);
- sizer->Add(py_app_use_cpu, /*proportion=*/0,
- /*flags=*/wxEXPAND);
- sizer->Add(py_app_use_builtin, /*proportion=*/0,
- /*flags=*/wxEXPAND);
- sizer->Add(py_app_enable_uwu_filter, /*proportion=*/0,
- /*flags=*/wxEXPAND);
- sizer->Add(py_app_remove_trailing_period, /*proportion=*/0,
- /*flags=*/wxEXPAND);
- sizer->Add(py_app_enable_uppercase_filter, /*proportion=*/0,
- /*flags=*/wxEXPAND);
- sizer->Add(py_app_enable_lowercase_filter, /*proportion=*/0,
- /*flags=*/wxEXPAND);
- sizer->Add(py_app_enable_profanity_filter, /*proportion=*/0,
- /*flags=*/wxEXPAND);
- sizer->Add(py_app_enable_debug_mode, /*proportion=*/0,
- /*flags=*/wxEXPAND);
- sizer->Add(py_app_start_button, /*proportion=*/0,
- /*flags=*/wxEXPAND);
- sizer->Add(py_app_stop_button, /*proportion=*/0,
- /*flags=*/wxEXPAND);
- }
-
- auto* sizer = new wxBoxSizer(wxHORIZONTAL);
- transcribe_panel->SetSizer(sizer);
- sizer->Add(py_config_panel, /*proportion=*/0, /*flags=*/wxEXPAND);
- sizer->Add(transcribe_out, /*proportion=*/1, /*flags=*/wxEXPAND);
- }
-
- auto* unity_panel = new wxPanel(main_panel, ID_UNITY_PANEL);
- unity_panel_ = unity_panel;
- {
- const auto unity_out_sz = wxSize(/*x_px=*/480, /*y_px=*/160);
- auto* unity_out = new wxTextCtrl(unity_panel, ID_UNITY_OUT,
- wxEmptyString,
- wxDefaultPosition,
- unity_out_sz, wxTE_MULTILINE | wxTE_READONLY);
- unity_out->SetMinSize(unity_out_sz);
- unity_out_ = unity_out;
-
- auto* unity_config_panel = new wxPanel(unity_panel,
- ID_UNITY_CONFIG_PANEL);
- {
- auto* unity_config_panel_pairs = new wxPanel(unity_config_panel,
- ID_UNITY_CONFIG_PANEL_PAIRS);
- {
- auto* unity_assets_file_picker = new wxDirPickerCtrl(
- unity_config_panel_pairs,
- ID_UNITY_ASSETS_FILE_PICKER,
- /*path=*/app_c_->assets_path,
- /*message=*/"Unity Assets folder"
- );
- unity_assets_file_picker->SetToolTip(
- "The path to the Assets folder for your avatar's "
- "Unity project. Example:\n"
- "C:\\Users\\yum\\unity\\kumadan\\Assets");
- unity_assets_file_picker_ = unity_assets_file_picker;
-
- auto* unity_animator_file_picker = new wxFilePickerCtrl(
- unity_config_panel_pairs,
- ID_UNITY_ANIMATOR_FILE_PICKER,
- /*path=*/app_c_->fx_path,
- /*message=*/"FX controller path",
- /*wildcard=*/wxFileSelectorDefaultWildcardStr,
- /*pos=*/wxDefaultPosition,
- /*size=*/wxDefaultSize
- );
- unity_animator_file_picker->SetToolTip(
- "The path to your avatar's FX layer. You can find "
- "this in your avatar descriptor. Example:\n"
- "C:\\Users\\yum\\unity\\kumadan\\Assets\\kumadan_fx.controller");
- unity_animator_file_picker_ = unity_animator_file_picker;
-
- auto* unity_parameters_file_picker = new wxFilePickerCtrl(
- unity_config_panel_pairs,
- ID_UNITY_PARAMETERS_FILE_PICKER,
- /*path=*/app_c_->params_path,
- /*message=*/"Avatar parameters path",
- /*wildcard=*/wxFileSelectorDefaultWildcardStr,
- /*pos=*/wxDefaultPosition,
- /*size=*/wxDefaultSize
- );
- unity_parameters_file_picker->SetToolTip(
- "The path to your avatar's parameters. You can find "
- "this in your avatar descriptor. Example:\n"
- "C:\\Users\\yum\\unity\\kumadan\\Assets\\kumadan_parameters.asset");
- unity_parameters_file_picker_ =
- unity_parameters_file_picker;
-
- auto* unity_menu_file_picker = new wxFilePickerCtrl(
- unity_config_panel_pairs,
- ID_UNITY_MENU_FILE_PICKER,
- /*path=*/app_c_->menu_path,
- /*message=*/"Avatar menu path",
- /*wildcard=*/wxFileSelectorDefaultWildcardStr,
- /*pos=*/wxDefaultPosition,
- /*size=*/wxDefaultSize
- );
- unity_menu_file_picker->SetToolTip(
- "The path to your avatar's menu. You can find "
- "this in your avatar descriptor. Example:\n"
- "C:\\Users\\yum\\unity\\kumadan\\Assets\\kumadan_menu.asset");
- unity_menu_file_picker_ = unity_menu_file_picker;
-
- auto* unity_animator_generated_dir = new wxTextCtrl(
- unity_config_panel_pairs,
- ID_UNITY_ANIMATOR_GENERATED_DIR,
- wxEmptyString, wxDefaultPosition, wxDefaultSize,
- /*style=*/0);
- unity_animator_generated_dir->AppendText("TaSTT_Generated");
- unity_animator_generated_dir->SetToolTip(
- "TaSTT will create a bunch of files "
- "(animations, shaders, etc.) to drive the text box. "
- "It places them in this folder, which it creates "
- "under your Unity project's Assets folder. Any data "
- "inside this folder may be overwritten!");
- unity_animator_generated_dir_ =
- unity_animator_generated_dir;
-
- auto* unity_animator_generated_name = new wxTextCtrl(
- unity_config_panel_pairs,
- ID_UNITY_ANIMATOR_GENERATED_NAME,
- wxEmptyString, wxDefaultPosition, wxDefaultSize,
- wxTE_READONLY);
- unity_animator_generated_name->AppendText("TaSTT.controller");
- unity_animator_generated_name->SetToolTip(
- "The name of the FX layer that TaSTT generates. "
- "It will be placed inside the generated assets "
- "folder. Put this on your avatar descriptor when "
- "you're done!");
- unity_animator_generated_name_ = unity_animator_generated_name;
-
- auto* unity_parameters_generated_name = new wxTextCtrl(
- unity_config_panel_pairs,
- ID_UNITY_PARAMETERS_GENERATED_NAME,
- wxEmptyString, wxDefaultPosition, wxDefaultSize,
- wxTE_READONLY);
- unity_parameters_generated_name->AppendText(
- "TaSTT_Parameters.asset");
- unity_parameters_generated_name->SetToolTip(
- "The name of the parameters file that TaSTT generates. "
- "It will be placed inside the generated assets "
- "folder. Put this on your avatar descriptor when "
- "you're done!");
- unity_parameters_generated_name_ =
- unity_parameters_generated_name;
-
- auto* unity_menu_generated_name = new wxTextCtrl(
- unity_config_panel_pairs,
- ID_UNITY_MENU_GENERATED_NAME,
- wxEmptyString, wxDefaultPosition, wxDefaultSize,
- wxTE_READONLY);
- unity_menu_generated_name->AppendText("TaSTT_Menu.asset");
- unity_menu_generated_name->SetToolTip(
- "The name of the menu file that TaSTT generates. "
- "It will be placed inside the generated assets "
- "folder. Put this on your avatar descriptor when "
- "you're done!");
- unity_menu_generated_name_ = unity_menu_generated_name;
-
- auto* unity_chars_per_sync = new wxChoice(
- unity_config_panel_pairs,
- ID_UNITY_CHARS_PER_SYNC, wxDefaultPosition,
- wxDefaultSize, kNumCharsPerSync, kCharsPerSync);
- unity_chars_per_sync->SetToolTip(
- "VRChat syncs avatar parameters roughly 5 times per "
- "second. We use this to send text to the box. By "
- "sending more characters per sync, the box will be "
- "faster, but you'll use more avatar parameters.");
- unity_chars_per_sync_ = unity_chars_per_sync;
-
- auto* unity_bytes_per_char = new wxChoice(
- unity_config_panel_pairs,
- ID_UNITY_BYTES_PER_CHAR, wxDefaultPosition,
- wxDefaultSize, kNumBytesPerChar, kBytesPerChar);
- unity_bytes_per_char->SetToolTip(
- "If you speak a language that uses non-ASCII "
- "characters (i.e. not English), set this to 2.");
- unity_bytes_per_char_ = unity_bytes_per_char;
-
- auto* unity_rows = new wxTextCtrl(unity_config_panel_pairs,
- ID_UNITY_ROWS, std::to_string(app_c_->rows),
- wxDefaultPosition, wxDefaultSize, /*style=*/0);
- unity_rows->SetToolTip(
- "The number of rows on the text box.");
- unity_rows_ = unity_rows;
-
- auto* unity_cols = new wxTextCtrl(unity_config_panel_pairs,
- ID_UNITY_COLS, std::to_string(app_c_->cols),
- wxDefaultPosition, wxDefaultSize, /*style=*/0);
- unity_cols->SetToolTip(
- "The number of columns on the text box.");
- unity_cols_ = unity_cols;
-
- auto* unity_texture_sz = new wxTextCtrl(unity_config_panel_pairs,
- ID_UNITY_TEXTURE_SZ, std::to_string(app_c_->texture_sz),
- wxDefaultPosition, wxDefaultSize, /*style=*/0);
- unity_texture_sz->SetToolTip(
- "The size of the textures holding text glyphs.");
- unity_texture_sz_ = unity_texture_sz;
-
- auto* sizer = new wxFlexGridSizer(/*cols=*/2);
- unity_config_panel_pairs->SetSizer(sizer);
-
- sizer->Add(new wxStaticText(unity_config_panel_pairs,
- wxID_ANY, /*label=*/"Unity Assets folder:"));
- sizer->Add(unity_assets_file_picker);
-
- sizer->Add(new wxStaticText(unity_config_panel_pairs,
- wxID_ANY, /*label=*/"FX controller:"));
- sizer->Add(unity_animator_file_picker);
-
- sizer->Add(new wxStaticText(unity_config_panel_pairs,
- wxID_ANY, /*label=*/"Avatar parameters:"));
- sizer->Add(unity_parameters_file_picker);
-
- sizer->Add(new wxStaticText(unity_config_panel_pairs,
- wxID_ANY, /*label=*/"Avatar menu:"));
- sizer->Add(unity_menu_file_picker);
-
- sizer->Add(new wxStaticText(unity_config_panel_pairs,
- wxID_ANY, /*label=*/"Generated assets folder:"));
- sizer->Add(unity_animator_generated_dir);
-
- sizer->Add(new wxStaticText(unity_config_panel_pairs,
- wxID_ANY, /*label=*/"Generated FX controller:"));
- sizer->Add(unity_animator_generated_name);
-
- sizer->Add(new wxStaticText(unity_config_panel_pairs,
- wxID_ANY, /*label=*/"Generated parameters:"));
- sizer->Add(unity_parameters_generated_name);
-
- sizer->Add(new wxStaticText(unity_config_panel_pairs,
- wxID_ANY, /*label=*/"Generated menu:"));
- sizer->Add(unity_menu_generated_name);
-
- sizer->Add(new wxStaticText(unity_config_panel_pairs,
- wxID_ANY, /*label=*/"Characters per sync:"));
- sizer->Add(unity_chars_per_sync, /*proportion=*/0,
- /*flags=*/wxEXPAND);
-
- sizer->Add(new wxStaticText(unity_config_panel_pairs,
- wxID_ANY, /*label=*/"Bytes per character:"));
- sizer->Add(unity_bytes_per_char, /*proportion=*/0,
- /*flags=*/wxEXPAND);
-
- sizer->Add(new wxStaticText(unity_config_panel_pairs,
- wxID_ANY, /*label=*/"Text box rows:"));
- sizer->Add(unity_rows, /*proportion=*/0,
- /*flags=*/wxEXPAND);
-
- sizer->Add(new wxStaticText(unity_config_panel_pairs,
- wxID_ANY, /*label=*/"Text box columns:"));
- sizer->Add(unity_cols, /*proportion=*/0,
- /*flags=*/wxEXPAND);
-
- sizer->Add(new wxStaticText(unity_config_panel_pairs,
- wxID_ANY, /*label=*/"Texture size:"));
- sizer->Add(unity_texture_sz, /*proportion=*/0,
- /*flags=*/wxEXPAND);
- }
-
- auto* clear_osc = new wxCheckBox(unity_config_panel,
- ID_UNITY_CLEAR_OSC, "Clear OSC configs");
- clear_osc->SetValue(app_c_->clear_osc);
- clear_osc->SetToolTip(
- "If checked, VRChat's OSC configs will be cleared. "
- "VRC SDK has a bug where parameters added to an "
- "existing avatar are not added to the avatar's OSC "
- "config. By clearing configs, VRC SDK is forced to "
- "regenerate them. The regenerated config will include "
- "the STT parameters. Check this if you are updating "
- "an existing avatar.");
- unity_clear_osc_ = clear_osc;
-
- auto* enable_phonemes = new wxCheckBox(unity_config_panel,
- ID_UNITY_ENABLE_PHONEMES, "Enable phonemes");
- enable_phonemes->SetValue(app_c_->enable_phonemes);
- enable_phonemes->SetToolTip(
- "If checked, the chatbox will be created with 5 audio "
- "sources for each English vowel sound: a, e, i, o, and u. "
- "Whenever a page of data is sent into the game, any "
- "vowels will have the corresponding audio source enabled. "
- "This uses 6 parameter bits.");
- unity_enable_phonemes_ = enable_phonemes;
-
- auto* unity_button_gen_fx = new wxButton(unity_config_panel,
- ID_UNITY_BUTTON_GEN_ANIMATOR, "Generate avatar assets");
- unity_button_gen_fx->SetWindowStyleFlag(wxBU_EXACTFIT);
-
- auto* unity_button_auto_refresh = new wxButton(unity_config_panel,
- ID_UNITY_BUTTON_AUTO_REFRESH, "Begin auto generating assets on change");
- unity_button_auto_refresh->SetWindowStyleFlag(wxBU_EXACTFIT);
- unity_button_auto_refresh->SetToolTip(
- "When the configured FX controller, parameters, or menu "
- "change (as determined by its hash changing), "
- "automatically regenerate TaSTT assets."
- );
-
- auto* unity_button_auto_refresh_stop = new wxButton(unity_config_panel,
- ID_UNITY_BUTTON_AUTO_REFRESH_STOP,
- "Stop auto generating assets on change");
- unity_button_auto_refresh_stop->SetWindowStyleFlag(wxBU_EXACTFIT);
- unity_button_auto_refresh_stop->SetToolTip(
- "Stop auto-generating TaSTT assets on change.");
-
- auto* sizer = new wxBoxSizer(wxVERTICAL);
- unity_config_panel->SetSizer(sizer);
- sizer->Add(unity_config_panel_pairs);
- sizer->Add(clear_osc);
- sizer->Add(enable_phonemes);
- sizer->Add(unity_button_gen_fx, /*proportion=*/0,
- /*flags=*/wxEXPAND);
- sizer->Add(unity_button_auto_refresh, /*proportion=*/0,
- /*flags=*/wxEXPAND);
- sizer->Add(unity_button_auto_refresh_stop, /*proportion=*/0,
- /*flags=*/wxEXPAND);
- }
-
- auto* sizer = new wxBoxSizer(wxHORIZONTAL);
- unity_panel->SetSizer(sizer);
- sizer->Add(unity_config_panel, /*proportion=*/0,
- /*flags=*/wxEXPAND);
- sizer->Add(unity_out, /*proportion=*/1, /*flags=*/wxEXPAND);
- }
- unity_panel_->Hide();
-
- auto* debug_panel = new wxPanel(main_panel, ID_DEBUG_PANEL);
- debug_panel_ = debug_panel;
- {
- const auto debug_out_sz = wxSize(/*x_px=*/480, /*y_px=*/160);
- auto* debug_out = new wxTextCtrl(debug_panel, ID_DEBUG_OUT,
- wxEmptyString,
- wxDefaultPosition,
- debug_out_sz, wxTE_MULTILINE | wxTE_READONLY);
- debug_out->SetMinSize(debug_out_sz);
- debug_out_ = debug_out;
-
- auto* debug_config_panel = new wxPanel(debug_panel,
- ID_DEBUG_CONFIG_PANEL);
- {
- auto* debug_button_list_pip = new wxButton(debug_config_panel,
- ID_DEBUG_BUTTON_LIST_PIP, "List pip packages");
- debug_button_list_pip->SetToolTip(
- "List the packages (and versions) installed in the "
- "virtual environment by pip. Also list the contents "
- "of the pip cache.");
- debug_button_list_pip->SetWindowStyleFlag(wxBU_EXACTFIT);
-
- auto* debug_button_clear_pip = new wxButton(debug_config_panel,
- ID_DEBUG_BUTTON_CLEAR_PIP, "Clear pip cache");
- // The real explanation: we install a special version of torch
- // using --extra-index-url, and I'm like 99% sure that pip
- // doesn't correctly detect that we want this version instead
- // of the normal version.
- debug_button_clear_pip->SetToolTip(
- "TaSTT uses a piece of software called pip to install "
- "Python dependencies. To enable reusing packages across "
- "different Python projects, pip installs packages in a "
- "system-wide cache. Sometimes the contents of this cache "
- "can get stale (it's complicated) and clearing the cache "
- "can fix issues.");
- debug_button_clear_pip->SetWindowStyleFlag(wxBU_EXACTFIT);
-
- auto* debug_button_reset_venv = new wxButton(
- debug_config_panel, ID_DEBUG_BUTTON_RESET_VENV,
- "Reset python virtual environment");
- debug_button_reset_venv->SetToolTip(
- "Uninstall all Python packages installed into the virtual "
- "environment. Do this after clearing pip!");
- debug_button_reset_venv->SetWindowStyleFlag(wxBU_EXACTFIT);
-
- auto* debug_button_clear_osc = new wxButton(debug_config_panel,
- ID_DEBUG_BUTTON_CLEAR_OSC, "Clear OSC configs");
- debug_button_clear_osc->SetToolTip(
- "No idea if this actually does anything valuable yet. I "
- "think making certain animator changes (s.a. turning on "
- "multi-byte character encoding) require you to reset "
- "(i.e. delete) your OSC config. This button deletes all "
- "your OSC configs.");
- debug_button_clear_osc->SetWindowStyleFlag(wxBU_EXACTFIT);
-
- auto* debug_button_backup_venv = new wxButton(
- debug_config_panel, ID_DEBUG_BUTTON_BACKUP_VENV,
- "Back up virtual env");
- debug_button_backup_venv->SetToolTip(
- "Back up the virtual environment to "
- "~/Downloads/TaSTT_venv");
- debug_button_backup_venv->SetWindowStyleFlag(wxBU_EXACTFIT);
-
- auto* debug_button_restore_venv = new wxButton(
- debug_config_panel, ID_DEBUG_BUTTON_RESTORE_VENV,
- "Restore virtual env");
- debug_button_restore_venv->SetToolTip(
- "Restore the virtual environment from "
- "~/Downloads/TaSTT_venv");
- debug_button_restore_venv->SetWindowStyleFlag(wxBU_EXACTFIT);
-
- auto* debug_button_setup_venv = new wxButton(
- debug_config_panel, ID_DEBUG_BUTTON_SETUP_VENV,
- "Set up virtual env");
- debug_button_setup_venv->SetToolTip(
- "Reinstall packages to the virtual environment");
- debug_button_setup_venv->SetWindowStyleFlag(wxBU_EXACTFIT);
-
- auto* sizer = new wxBoxSizer(wxVERTICAL);
- debug_config_panel->SetSizer(sizer);
- sizer->Add(debug_button_list_pip, /*proportion=*/0,
- /*flags=*/wxEXPAND);
- sizer->Add(debug_button_clear_pip, /*proportion=*/0,
- /*flags=*/wxEXPAND);
- sizer->Add(debug_button_reset_venv, /*proportion=*/0,
- /*flags=*/wxEXPAND);
- sizer->Add(debug_button_clear_osc, /*proportion=*/0,
- /*flags=*/wxEXPAND);
- sizer->Add(debug_button_backup_venv, /*proportion=*/0,
- /*flags=*/wxEXPAND);
- sizer->Add(debug_button_restore_venv, /*proportion=*/0,
- /*flags=*/wxEXPAND);
- sizer->Add(debug_button_setup_venv, /*proportion=*/0,
- /*flags=*/wxEXPAND);
- }
-
- auto* sizer = new wxBoxSizer(wxHORIZONTAL);
- debug_panel->SetSizer(sizer);
- sizer->Add(debug_config_panel, /*proportion=*/0,
- /*flags=*/wxEXPAND);
- sizer->Add(debug_out, /*proportion=*/1, /*flags=*/wxEXPAND);
- }
- debug_panel_->Hide();
-
- auto* sizer = new wxBoxSizer(wxHORIZONTAL);
- main_panel->SetSizer(sizer);
- sizer->Add(navbar, /*proportion=*/0, /*flags=*/wxEXPAND);
- sizer->Add(transcribe_panel, /*proportion=*/1, /*flags=*/wxEXPAND);
- sizer->Add(unity_panel, /*proportion=*/1, /*flags=*/wxEXPAND);
- sizer->Add(debug_panel, /*proportion=*/1, /*flags=*/wxEXPAND);
- }
-
- // Now that transcribe_out_ has been created, we can deserialize.
- app_c_ = std::make_unique<AppConfig>(transcribe_out_);
- app_c_->Deserialize(AppConfig::kConfigPath);
-
- Bind(wxEVT_CLOSE_WINDOW, &Frame::OnExit, this);
- Bind(wxEVT_BUTTON, &Frame::OnNavbarTranscribe, this,
- ID_NAVBAR_BUTTON_TRANSCRIBE);
- Bind(wxEVT_BUTTON, &Frame::OnNavbarUnity, this, ID_NAVBAR_BUTTON_UNITY);
- Bind(wxEVT_BUTTON, &Frame::OnNavbarDebug, this, ID_NAVBAR_BUTTON_DEBUG);
- Bind(wxEVT_BUTTON, &Frame::OnAppStart, this, ID_PY_APP_START_BUTTON);
- Bind(wxEVT_BUTTON, &Frame::OnAppStop, this, ID_PY_APP_STOP_BUTTON);
- Bind(wxEVT_TIMER, &Frame::OnAppDrain, this, ID_PY_APP_DRAIN);
- Bind(wxEVT_BUTTON, &Frame::OnDumpMics, this, ID_PY_DUMP_MICS_BUTTON);
- Bind(wxEVT_BUTTON, &Frame::OnGenerateFX, this,
- ID_UNITY_BUTTON_GEN_ANIMATOR);
- Bind(wxEVT_BUTTON, &Frame::OnUnityAutoRefresh, this,
- ID_UNITY_BUTTON_AUTO_REFRESH);
- Bind(wxEVT_BUTTON, &Frame::OnUnityAutoRefreshStop, this,
- ID_UNITY_BUTTON_AUTO_REFRESH_STOP);
- Bind(wxEVT_BUTTON, &Frame::OnListPip, this, ID_DEBUG_BUTTON_LIST_PIP);
- Bind(wxEVT_BUTTON, &Frame::OnClearPip, this, ID_DEBUG_BUTTON_CLEAR_PIP);
- Bind(wxEVT_BUTTON, &Frame::OnListPip, this, ID_DEBUG_BUTTON_LIST_PIP);
- Bind(wxEVT_BUTTON, &Frame::OnResetVenv, this, ID_DEBUG_BUTTON_RESET_VENV);
- Bind(wxEVT_BUTTON, &Frame::OnClearOSC, this, ID_DEBUG_BUTTON_CLEAR_OSC);
- Bind(wxEVT_BUTTON, &Frame::OnBackupVenv, this, ID_DEBUG_BUTTON_BACKUP_VENV);
- Bind(wxEVT_BUTTON, &Frame::OnRestoreVenv, this,
- ID_DEBUG_BUTTON_RESTORE_VENV);
- Bind(wxEVT_BUTTON, &Frame::OnSetupVenv, this,
- ID_DEBUG_BUTTON_SETUP_VENV);
- Bind(wxEVT_CHOICE, &Frame::OnUnityParamChange, this,
- ID_UNITY_CHARS_PER_SYNC);
- Bind(wxEVT_CHOICE, &Frame::OnUnityParamChange, this,
- ID_UNITY_BYTES_PER_CHAR);
- Bind(wxEVT_CHECKBOX, &Frame::OnUnityParamChange, this,
- ID_UNITY_ENABLE_PHONEMES);
-
- // wx needs this to be able to load PNGs.
- wxImage::AddHandler(&png_handler_);
- LoadAndSetIcons();
-
- // Make tooltips show up for longer.
- wxToolTip::SetAutoPop(/*milliseconds=*/ 10 * 1000);
-
- // Initialize input fields using AppConfig.
- ApplyConfigToInputFields();
-
- Resize();
- OnUnityParamChangeImpl();
-
- // Every 100 milliseconds we drain output from the Python app.
- py_app_drain_.Start(/*milliseconds=*/100);
-}
-
-void Frame::ApplyConfigToInputFields()
-{
- // Transcription panel
- auto* py_app_mic = static_cast<wxChoice*>(FindWindowById(ID_PY_APP_MIC));
- int mic_idx = GetDropdownChoiceIndex(kMicChoices,
- kNumMicChoices, app_c_->microphone, kMicDefault);
- py_app_mic->SetSelection(mic_idx);
-
- auto* py_app_lang = static_cast<wxChoice*>(FindWindowById(ID_PY_APP_LANG));
- int lang_idx = GetDropdownChoiceIndex(kLangChoices,
- kNumLangChoices, app_c_->language, kLangDefault);
- py_app_lang->SetSelection(lang_idx);
-
- auto* py_app_translate_target = static_cast<wxChoice*>(FindWindowById(ID_PY_APP_TRANSLATE_TARGET));
- int translate_target_idx = GetDropdownChoiceIndex(kLangTargetChoices,
- kNumLangTargetChoices, app_c_->language_target, kLangTargetDefault);
- py_app_translate_target->SetSelection(translate_target_idx);
-
- auto* py_app_model = static_cast<wxChoice*>(FindWindowById(ID_PY_APP_MODEL));
- int model_idx = GetDropdownChoiceIndex(kModelChoices,
- kNumModelChoices, app_c_->model, kModelDefault);
- py_app_model->SetSelection(model_idx);
-
- auto* py_app_model_translation = static_cast<wxChoice*>(FindWindowById(ID_PY_APP_MODEL_TRANSLATION));
- int model_translation_idx = GetDropdownChoiceIndex(kModelTranslationChoices,
- kNumModelTranslationChoices, app_c_->model_translation, kModelTranslationDefault);
- py_app_model_translation->SetSelection(model_translation_idx);
-
- auto* py_app_chars_per_sync = static_cast<wxChoice*>(FindWindowById(ID_PY_APP_CHARS_PER_SYNC));
- int chars_idx = GetDropdownChoiceIndex(kCharsPerSync,
- kNumCharsPerSync, std::to_string(app_c_->chars_per_sync),
- kCharsDefault);
- py_app_chars_per_sync->SetSelection(chars_idx);
-
- auto* py_app_bytes_per_char = static_cast<wxChoice*>(FindWindowById(ID_PY_APP_BYTES_PER_CHAR));
- int bytes_idx = GetDropdownChoiceIndex(kBytesPerChar,
- kNumBytesPerChar, std::to_string(app_c_->bytes_per_char),
- kBytesDefault);
- py_app_bytes_per_char->SetSelection(bytes_idx);
-
- auto* py_app_button = static_cast<wxChoice*>(FindWindowById(ID_PY_APP_BUTTON));
- int button_idx = GetDropdownChoiceIndex(kButton,
- kNumButtons, app_c_->button, kButtonDefault);
- py_app_button->SetSelection(button_idx);
-
- auto* py_app_prio = static_cast<wxChoice*>(FindWindowById(ID_PY_APP_PRIO));
- int prio_idx = GetDropdownChoiceIndex(kPrio,
- kNumPrios, app_c_->prio, kPrioDefault);
- py_app_prio->SetSelection(prio_idx);
-
- auto* py_app_compute_type = static_cast<wxChoice*>(FindWindowById(ID_PY_APP_COMPUTE_TYPE));
- int compute_type_idx = GetDropdownChoiceIndex(kComputeType,
- kNumComputeTypes, app_c_->compute_type, kComputeTypeDefault);
- py_app_compute_type->SetSelection(compute_type_idx);
-
- auto* py_app_desktop_keybind = static_cast<wxTextCtrl*>(FindWindowById(ID_PY_APP_KEYBIND));
- py_app_desktop_keybind->Clear();
- py_app_desktop_keybind->AppendText(app_c_->keybind);
-
- auto* py_app_desktop_browser_src_port = static_cast<wxTextCtrl*>(FindWindowById(ID_PY_APP_BROWSER_SRC_PORT));
- py_app_desktop_browser_src_port->Clear();
- py_app_desktop_browser_src_port->AppendText(std::to_string(app_c_->browser_src_port));
-
- auto* py_app_rows = static_cast<wxTextCtrl*>(FindWindowById(ID_PY_APP_ROWS));
- py_app_rows->Clear();
- py_app_rows->AppendText(std::to_string(app_c_->rows));
-
- auto* py_app_cols = static_cast<wxTextCtrl*>(FindWindowById(ID_PY_APP_COLS));
- py_app_cols->Clear();
- py_app_cols->AppendText(std::to_string(app_c_->cols));
-
- auto* py_app_gpu_idx = static_cast<wxTextCtrl*>(FindWindowById(ID_PY_APP_GPU_IDX));
- py_app_gpu_idx->Clear();
- py_app_gpu_idx->AppendText(std::to_string(app_c_->gpu_idx));
-
- auto* py_app_min_silence_duration_ms = static_cast<wxTextCtrl*>(FindWindowById(ID_PY_APP_MIN_SILENCE_DURATION_MS));
- py_app_min_silence_duration_ms->Clear();
- py_app_min_silence_duration_ms->AppendText(std::to_string(app_c_->min_silence_duration_ms));
-
- auto* py_app_max_speech_duration_s = static_cast<wxTextCtrl*>(FindWindowById(ID_PY_APP_MAX_SPEECH_DURATION_S));
- py_app_max_speech_duration_s->Clear();
- py_app_max_speech_duration_s->AppendText(std::to_string(app_c_->max_speech_duration_s));
-
- auto* py_app_reset_after_silence_s = static_cast<wxTextCtrl*>(FindWindowById(ID_PY_APP_RESET_AFTER_SILENCE_S));
- py_app_reset_after_silence_s->Clear();
- py_app_reset_after_silence_s->AppendText(std::to_string(app_c_->reset_after_silence_s));
-
- auto* py_app_transcription_loop_delay_ms = static_cast<wxTextCtrl*>(FindWindowById(ID_PY_APP_TRANSCRIPTION_LOOP_DELAY_MS));
- py_app_transcription_loop_delay_ms->Clear();
- py_app_transcription_loop_delay_ms->AppendText(std::to_string(app_c_->transcription_loop_delay_ms));
-
- auto* py_app_enable_local_beep = static_cast<wxCheckBox*>(FindWindowById(ID_PY_APP_ENABLE_LOCAL_BEEP));
- py_app_enable_local_beep->SetValue(app_c_->enable_local_beep);
-
- auto* py_app_enable_orig_lang = static_cast<wxCheckBox*>(FindWindowById(ID_PY_APP_ENABLE_ORIG_LANG));
- py_app_enable_orig_lang->SetValue(app_c_->enable_orig_lang);
-
- auto* py_app_enable_browser_src = static_cast<wxCheckBox*>(FindWindowById(ID_PY_APP_ENABLE_BROWSER_SRC));
- py_app_enable_browser_src->SetValue(app_c_->enable_browser_src);
-
- auto* py_app_use_cpu = static_cast<wxCheckBox*>(FindWindowById(ID_PY_APP_USE_CPU));
- py_app_use_cpu->SetValue(app_c_->use_cpu);
-
- auto* py_app_use_builtin = static_cast<wxCheckBox*>(FindWindowById(ID_PY_APP_USE_BUILTIN));
- py_app_use_builtin->SetValue(app_c_->use_builtin);
-
- auto* py_app_enable_uwu_filter = static_cast<wxCheckBox*>(FindWindowById(ID_PY_APP_ENABLE_UWU_FILTER));
- py_app_enable_uwu_filter->SetValue(app_c_->enable_uwu_filter);
-
- auto* py_app_remove_trailing_period = static_cast<wxCheckBox*>(FindWindowById(ID_PY_APP_REMOVE_TRAILING_PERIOD));
- py_app_remove_trailing_period->SetValue(app_c_->remove_trailing_period);
-
- auto* py_app_enable_uppercase_filter = static_cast<wxCheckBox*>(FindWindowById(ID_PY_APP_ENABLE_UPPERCASE_FILTER));
- py_app_enable_uppercase_filter->SetValue(app_c_->enable_uppercase_filter);
-
- auto* py_app_enable_lowercase_filter = static_cast<wxCheckBox*>(FindWindowById(ID_PY_APP_ENABLE_LOWERCASE_FILTER));
- py_app_enable_lowercase_filter->SetValue(app_c_->enable_lowercase_filter);
-
- auto* py_app_enable_profanity_filter = static_cast<wxCheckBox*>(FindWindowById(ID_PY_APP_ENABLE_PROFANITY_FILTER));
- py_app_enable_profanity_filter->SetValue(app_c_->enable_profanity_filter);
-
- auto* py_app_enable_debug_mode = static_cast<wxCheckBox*>(FindWindowById(ID_PY_APP_ENABLE_DEBUG_MODE));
- py_app_enable_debug_mode->SetValue(app_c_->enable_debug_mode);
-
- auto* py_app_reset_on_toggle = static_cast<wxCheckBox*>(FindWindowById(ID_PY_APP_RESET_ON_TOGGLE));
- py_app_reset_on_toggle->SetValue(app_c_->reset_on_toggle);
-
- auto* py_app_enable_previews = static_cast<wxCheckBox*>(FindWindowById(ID_PY_APP_ENABLE_PREVIEWS));
- py_app_enable_previews->SetValue(app_c_->enable_previews);
-
- auto* py_app_enable_lock_at_spawn = static_cast<wxCheckBox*>(FindWindowById(ID_PY_APP_ENABLE_LOCK_AT_SPAWN));
- py_app_enable_lock_at_spawn->SetValue(app_c_->enable_lock_at_spawn);
-
- // Unity panel
- auto* unity_assets_path = static_cast<wxDirPickerCtrl*>(FindWindowById(ID_UNITY_ASSETS_FILE_PICKER));
- unity_assets_path->SetPath(app_c_->assets_path);
-
- auto* unity_animator_path = static_cast<wxFilePickerCtrl*>(FindWindowById(ID_UNITY_ANIMATOR_FILE_PICKER));
- unity_animator_path->SetPath(app_c_->fx_path);
-
- auto* unity_params_path = static_cast<wxFilePickerCtrl*>(FindWindowById(ID_UNITY_PARAMETERS_FILE_PICKER));
- unity_params_path->SetPath(app_c_->params_path);
-
- auto* unity_menu_path = static_cast<wxFilePickerCtrl*>(FindWindowById(ID_UNITY_MENU_FILE_PICKER));
- unity_menu_path->SetPath(app_c_->menu_path);
-
- auto* unity_generated_dir = static_cast<wxTextCtrl*>(FindWindowById(ID_UNITY_ANIMATOR_GENERATED_DIR));
- unity_generated_dir->Clear();
- unity_generated_dir->AppendText(app_c_->unity_generated_dir);
-
- auto* unity_chars_per_sync = static_cast<wxChoice*>(FindWindowById(ID_UNITY_CHARS_PER_SYNC));
- unity_chars_per_sync->SetSelection(chars_idx);
-
- auto* unity_bytes_per_char = static_cast<wxChoice*>(FindWindowById(ID_UNITY_BYTES_PER_CHAR));
- unity_bytes_per_char->SetSelection(bytes_idx);
-
- auto* unity_rows = static_cast<wxTextCtrl*>(FindWindowById(ID_UNITY_ROWS));
- unity_rows->Clear();
- unity_rows->AppendText(std::to_string(app_c_->rows));
-
- auto* unity_cols = static_cast<wxTextCtrl*>(FindWindowById(ID_UNITY_COLS));
- unity_cols->Clear();
- unity_cols->AppendText(std::to_string(app_c_->cols));
-
- auto* unity_texture_sz = static_cast<wxTextCtrl*>(FindWindowById(ID_UNITY_TEXTURE_SZ));
- unity_texture_sz->Clear();
- unity_texture_sz->AppendText(std::to_string(app_c_->texture_sz));
-
- auto* unity_clear_osc = static_cast<wxCheckBox*>(FindWindowById(ID_UNITY_CLEAR_OSC));
- unity_clear_osc->SetValue(app_c_->clear_osc);
-
- auto* unity_enable_phonemes = static_cast<wxCheckBox*>(FindWindowById(ID_UNITY_ENABLE_PHONEMES));
- unity_enable_phonemes->SetValue(app_c_->enable_phonemes);
-}
-
-void Frame::OnExit(wxCloseEvent& event)
-{
- OnAppStop();
- OnUnityAutoRefreshStop();
- event.Skip();
-}
-
-void Frame::OnNavbarTranscribe(wxCommandEvent& event)
-{
- transcribe_panel_->Hide();
- unity_panel_->Hide();
- debug_panel_->Hide();
-
- // Initialize input fields using AppConfig.
- ApplyConfigToInputFields();
-
- transcribe_panel_->Show();
- Resize();
-}
-
-void Frame::OnNavbarUnity(wxCommandEvent& event)
-{
- transcribe_panel_->Hide();
- unity_panel_->Hide();
- debug_panel_->Hide();
-
- // Initialize input fields using AppConfig.
- ApplyConfigToInputFields();
-
- unity_panel_->Show();
- Resize();
-}
-
-void Frame::OnNavbarDebug(wxCommandEvent& event)
-{
- transcribe_panel_->Hide();
- unity_panel_->Hide();
- debug_panel_->Hide();
-
- // Initialize input fields using AppConfig.
- ApplyConfigToInputFields();
-
- debug_panel_->Show();
- Resize();
-}
-
-bool FindDirectoryByPrefix(wxTextCtrl* out, const std::string& prefix, std::filesystem::path& path) {
- std::error_code ec;
- // Find directory starting with "cudnn"
- for (const auto& entry :
- std::filesystem::directory_iterator(".", ec)) {
- if (ec) {
- Log(out, "Failed to iterate cwd: {}\n",
- ec.message());
- return false;
- }
-
- if (entry.is_directory(ec) &&
- !ec &&
- entry.path().filename().string().starts_with(prefix)) {
- path = entry.path();
- return true;
- }
- }
- return false;
-}
-
-void Frame::EnsureVirtualEnv(bool block, bool force)
-{
- auto status = env_proc_.wait_for(std::chrono::seconds(0));
- if (status != std::future_status::ready) {
- Log(transcribe_out_, "Virtual environment setup already running\n");
- return;
- }
-
- static const std::filesystem::path venv_flag = std::filesystem::current_path() / ".venv_is_set_up";
- if (!force && std::filesystem::exists(venv_flag)) {
- std::ifstream venv_flag_ifs(venv_flag);
- std::string venv_flag_ts_str;
- std::getline(venv_flag_ifs, venv_flag_ts_str);
-
- int64_t venv_flag_ts;
- bool is_valid = false;
- try {
- venv_flag_ts = std::stol(venv_flag_ts_str);
- is_valid = true;
- }
- catch (const std::invalid_argument&) {
- Log(transcribe_out_, "Could not venv flag timestamp \"{}\" as long "
- "- will re-setup venv");
- }
- catch (const std::out_of_range&) {
- Log(transcribe_out_, "Could not venv flag timestamp \"{}\" as long "
- "- will re-setup venv");
- }
- return;
- }
-
- env_proc_ = std::move(std::async(std::launch::async, [&]() {
- Log(transcribe_out_, "Setting up Python virtual environment\n");
- Log(transcribe_out_, "This could take several minutes, please be "
- "patient!\n");
- Log(transcribe_out_, "This will download ~1GB of dependencies.\n");
-
- {
- Log(transcribe_out_, " Installing pip\n");
- auto out_cb = [&](const std::string& out, const std::string& err) {
- Log(transcribe_out_, "{}", out);
- Log(transcribe_out_, "{}", err);
- };
- if (!PythonWrapper::InstallPip(std::move(out_cb))) {
- Log(transcribe_out_, "Failed to install pip!\n");
- return false;
- }
- }
-
- Log(transcribe_out_, " Installing python dependencies\n");
- auto out_cb = [&](const std::string& out, const std::string& err) {
- Log(transcribe_out_, "{}", out);
- Log(transcribe_out_, "{}", err);
- };
- if (!PythonWrapper::InvokeWithArgs(*app_c_,
- {
- "-u", // Unbuffered output
- "-m pip",
- "install",
- "-r Resources/Scripts/requirements_frozen.txt",
- }, out_cb)) {
- Log(transcribe_out_, "Failed to launch environment setup thread!\n");
- return false;
- }
-
- Log(transcribe_out_, " Fetching CuDNN\n");
- if (!PythonWrapper::InvokeWithArgs(*app_c_,
- {
- "-m wget",
- "https://developer.download.nvidia.com/compute/cudnn/redist/cudnn/windows-x86_64/cudnn-windows-x86_64-9.5.1.17_cuda12-archive.zip"
- }, out_cb)) {
- }
- Log(transcribe_out_, " Unzipping CuDNN\n");
- if (!PythonWrapper::InvokeWithArgs(*app_c_,
- {
- "-m zipfile -e",
- "cudnn-windows-x86_64-9.5.1.17_cuda12-archive.zip",
- "."
- }, out_cb)) {
- }
- Log(transcribe_out_, " Installing CuDNN\n");
- {
- std::filesystem::path cudnn_dir;
- if (!FindDirectoryByPrefix(transcribe_out_, "cudnn", cudnn_dir)) {
- Log(transcribe_out_, "Failed to find unzipped cudnn "
- "directory\n");
- return false;
- }
- std::error_code ec;
- const std::filesystem::path dest_dir = "Resources/Scripts";
- for (const auto& entry :
- std::filesystem::recursive_directory_iterator(cudnn_dir, ec)) {
- if (ec) {
- Log(transcribe_out_, "Failed to iterate cudnn dir: {}\n",
- ec.message());
- return false;
- }
- if (!entry.is_regular_file(ec)) {
- continue;
- }
- if (ec) {
- Log(transcribe_out_, "Skipping unrecognized file type "
- "{}: {}\n", entry.path().string(), ec.message());
- continue;
- }
- if (entry.path().extension() != ".dll") {
- continue;
- }
- std::filesystem::path dest =
- dest_dir / entry.path().filename();
- // Remove destination
- std::filesystem::remove(dest, ec);
- if (ec) {
- Log(transcribe_out_, "Failed to delete old CuDNN .dll: {}\n",
- ec.message());
- return false;
- }
- // Rename file
- std::filesystem::rename(entry.path(), dest, ec);
- if (ec) {
- Log(transcribe_out_, "Failed to move CuDNN .dll: {}\n",
- ec.message());
- }
- }
- // Delete cudnn dir
- std::filesystem::remove_all(cudnn_dir, ec);
- if (ec) {
- Log(transcribe_out_, "Failed to remove old CuDNN dir: {}\n",
- ec.message());
- }
- }
-
- Log(transcribe_out_, "Successfully set up virtual environment!\n");
-
- std::ofstream venv_flag_ofs(venv_flag);
- auto now = std::chrono::system_clock::now();
- const int64_t seconds_since_epoch = std::chrono::duration_cast<std::chrono::seconds>(now.time_since_epoch()).count();
- venv_flag_ofs << std::to_string(seconds_since_epoch);
-
- return true;
- }));
-
- if (block) {
- // Spinning prevents the GUI from hanging.
- while (true) {
- auto status = env_proc_.wait_for(std::chrono::milliseconds(1));
- if (status == std::future_status::ready) {
- break;
- }
- }
- }
-}
-
-void Frame::OnDumpMics(wxCommandEvent& event)
-{
- auto status = dump_mics_.wait_for(std::chrono::seconds(0));
- if (status != std::future_status::ready) {
- Log(transcribe_out_, "Mic dump already running\n");
- return;
- }
- dump_mics_ = std::move(std::async(std::launch::async, [&]() {
- EnsureVirtualEnv(/*block=*/true);
- Log(transcribe_out_, "Getting mics...\n");
- Log(transcribe_out_, "{}\n", PythonWrapper::DumpMics());
- return true;
- }));
-}
-
-bool GetUserPath(wxTextCtrl* out,
- const std::string& raw, std::filesystem::path& clean,
- const std::string& err_prefix = "", bool must_exist = true) {
- clean = raw;
- if (must_exist && !std::filesystem::exists(clean)) {
- std::ostringstream oss;
- oss << err_prefix << ": User-provided path does not exist at "
- << clean << std::endl;
- Log(out, oss.str().c_str());
- return false;
- }
- return true;
-}
-
-void Frame::OnGenerateFX(wxCommandEvent& event)
-{
- auto status = unity_app_.wait_for(std::chrono::seconds(0));
- if (status != std::future_status::ready) {
- Log(unity_out_, "Unity process already running\n");
- return;
- }
-
- unity_app_ = std::move(std::async(std::launch::async, [&]() {
- Log(unity_out_, "Generating animator\n");
-
- EnsureVirtualEnv(/*block=*/true);
-
- std::filesystem::path unity_assets_path;
- if (!GetUserPath(unity_out_,
- unity_assets_file_picker_->GetPath().ToStdString(),
- unity_assets_path,
- "Cannot generate FX layer: Failed to validate assets directory")) {
- return false;
- }
- std::filesystem::path unity_animator_path;
- if (!GetUserPath(unity_out_,
- unity_animator_file_picker_->GetPath().ToStdString(),
- unity_animator_path,
- "Cannot generate FX layer: Failed to validate animator directory")) {
- return false;
- }
- std::filesystem::path unity_parameters_path;
- if (!GetUserPath(unity_out_,
- unity_parameters_file_picker_->GetPath().ToStdString(),
- unity_parameters_path,
- "Cannot generate FX layer: Failed to validate parameters directory")) {
- return false;
- }
- std::filesystem::path unity_menu_path;
- if (!GetUserPath(unity_out_, unity_menu_file_picker_->GetPath().ToStdString(),
- unity_menu_path,
- "Cannot generate FX layer: Failed to validate menu directory")) {
- return false;
- }
-
- std::string unity_animator_generated_dir =
- unity_animator_generated_dir_->GetLineText(0).ToStdString();
- std::string unity_animator_generated_name =
- unity_animator_generated_name_->GetLineText(0).ToStdString();
- std::string unity_parameters_generated_name =
- unity_parameters_generated_name_->GetLineText(0).ToStdString();
- std::string unity_menu_generated_name =
- unity_menu_generated_name_->GetLineText(0).ToStdString();
-
- int chars_per_sync_idx = unity_chars_per_sync_->GetSelection();
- if (chars_per_sync_idx == wxNOT_FOUND) {
- chars_per_sync_idx = kCharsDefault;
- }
- int bytes_per_char_idx = unity_bytes_per_char_->GetSelection();
- if (bytes_per_char_idx == wxNOT_FOUND) {
- bytes_per_char_idx = kBytesDefault;
- }
-
- ASSIGN_OR_RETURN_BOOL(int, rows, stoiInRange(transcribe_out_, unity_rows_->GetValue().ToStdString(), "rows", 1, 10));
- ASSIGN_OR_RETURN_BOOL(int, cols, stoiInRange(transcribe_out_, unity_cols_->GetValue().ToStdString(), "cols", 1, 120));
- ASSIGN_OR_RETURN_BOOL(int, texture_sz, stoiInRange(transcribe_out_, unity_texture_sz_->GetValue().ToStdString(), "texture_sz", 128, 8192));
- ASSIGN_OR_RETURN_BOOL(int, chars_per_sync, stoiInRange(transcribe_out_, kCharsPerSync[chars_per_sync_idx].ToStdString(), "chars_per_sync", 1, 24));
- ASSIGN_OR_RETURN_BOOL(int, bytes_per_char, stoiInRange(transcribe_out_, kBytesPerChar[bytes_per_char_idx].ToStdString(), "bytes_per_char", 1, 2));
-
- app_c_->assets_path = unity_assets_path.string();
- app_c_->fx_path = unity_animator_path.string();
- app_c_->params_path = unity_parameters_path.string();
- app_c_->menu_path = unity_menu_path.string();
- app_c_->unity_generated_dir = unity_animator_generated_dir;
- app_c_->bytes_per_char = bytes_per_char;
- app_c_->chars_per_sync = chars_per_sync;
- app_c_->rows = rows;
- app_c_->cols = cols;
- app_c_->texture_sz = texture_sz;
- app_c_->clear_osc = unity_clear_osc_->GetValue();
- app_c_->enable_phonemes = unity_enable_phonemes_->GetValue();
- app_c_->Serialize(AppConfig::kConfigPath);
-
- std::string out;
- if (!PythonWrapper::GenerateAnimator(
- *app_c_,
- std::string(AppConfig::kConfigPath),
- unity_animator_generated_dir,
- unity_animator_generated_name,
- unity_parameters_generated_name,
- unity_menu_generated_name,
- unity_out_)) {
- Log(unity_out_, "Failed to generate animator:\n%s\n", out.c_str());
- }
- return true;
- }));
-}
-
-// Return a non-cryptographic hash of the file at `path`.
-std::string hash_non_crypto(const std::string& path) {
- std::ifstream file_ifs(path, std::ios::binary);
- if (!file_ifs) {
- std::cerr << "Could not open the file: " << path << '\n';
- return 0;
- }
-
- // Read all bytes from the file into a vector
- std::vector<uint8_t> data((std::istreambuf_iterator<char>(file_ifs)),
- std::istreambuf_iterator<char>());
-
- // Compute the hash as a sum of all bytes
- uint32_t hash = std::accumulate(data.begin(), data.end(), 0);
-
- std::stringstream ss;
- ss << std::hex << hash;
- return ss.str();
-}
-
-void Frame::OnUnityAutoRefresh(wxCommandEvent& event)
-{
- auto status = unity_auto_refresh_.wait_for(std::chrono::seconds(0));
- if (status != std::future_status::ready) {
- Log(unity_out_, "Auto refresh thread already running\n");
- return;
- }
-
- run_unity_auto_refresh_ = true;
-
- unity_auto_refresh_ = std::move(std::async(std::launch::async, [&]() {
- std::string fx_hash_prev;
- std::string params_hash_prev;
- std::string menu_hash_prev;
- while (run_unity_auto_refresh_) {
- std::this_thread::sleep_for(std::chrono::seconds(3));
-
- std::filesystem::path unity_animator_path;
- if (!GetUserPath(unity_out_,
- unity_animator_file_picker_->GetPath().ToStdString(),
- unity_animator_path,
- "Cannot auto-refresh FX layer: Failed to validate animator directory")) {
- return false;
- }
- std::filesystem::path unity_parameters_path;
- if (!GetUserPath(unity_out_,
- unity_parameters_file_picker_->GetPath().ToStdString(),
- unity_parameters_path,
- "Cannot auto-refresh FX layer: Failed to validate parameters directory")) {
- return false;
- }
- std::filesystem::path unity_menu_path;
- if (!GetUserPath(unity_out_, unity_menu_file_picker_->GetPath().ToStdString(),
- unity_menu_path,
- "Cannot auto-refresh FX layer: Failed to validate menu directory")) {
- return false;
- }
-
- if (fx_hash_prev.empty() || params_hash_prev.empty() || menu_hash_prev.empty()) {
- Log(unity_out_, "Generating initial hash of animator, parameters and menu\n");
- fx_hash_prev = hash_non_crypto(unity_animator_path.string());
- params_hash_prev = hash_non_crypto(unity_parameters_path.string());
- menu_hash_prev = hash_non_crypto(unity_menu_path.string());
- continue;
- }
-
- const std::string fx_hash = hash_non_crypto(unity_animator_path.string());
- const std::string params_hash = hash_non_crypto(unity_parameters_path.string());
- const std::string menu_hash = hash_non_crypto(unity_menu_path.string());
-
- if (fx_hash.empty() || params_hash.empty() || menu_hash.empty()) {
- Log(unity_out_, "Failed to hash animator ({}, {}), parameters ({}, {}), or menu ({}, {})\n",
- unity_animator_path.string(), fx_hash,
- unity_parameters_path.string(), params_hash,
- unity_menu_path.string(), menu_hash);
- continue;
- }
-
- if (fx_hash != fx_hash_prev ||
- params_hash != params_hash_prev ||
- menu_hash != menu_hash_prev) {
- Log(unity_out_, "Detected change in animator ({}), params ({}), or menu ({}), regenerating unity assets\n",
- fx_hash != fx_hash_prev ? "CHANGED" : "NO_CHANGE",
- params_hash != params_hash_prev ? "CHANGED" : "NO_CHANGE",
- menu_hash != menu_hash_prev ? "CHANGED" : "NO_CHANGE");
- OnGenerateFX(event);
- fx_hash_prev = fx_hash;
- params_hash_prev = params_hash;
- menu_hash_prev = menu_hash;
- }
- }
- Log(unity_out_, "Stopping unity asset auto-generation\n");
- return true;
- }));
-}
-
-void Frame::OnUnityAutoRefreshStop() {
- run_unity_auto_refresh_ = false;
- auto status = unity_auto_refresh_.wait_for(std::chrono::seconds(0));
- if (status == std::future_status::ready) {
- Log(transcribe_out_, "Auto-refresh thread already stopped.\n");
- }
- else {
- unity_auto_refresh_.wait();
- Log(transcribe_out_, "Stopped transcription engine\n");
- }
-}
-
-void Frame::OnUnityAutoRefreshStop(wxCommandEvent& event) {
- OnUnityAutoRefreshStop();
-}
-
-void Frame::OnListPip(wxCommandEvent& event)
-{
- Log(debug_out_, "Listing pip packages... ");
- PythonWrapper::InvokeWithArgs(*app_c_, {
- "-m pip",
- "list",
- }, "Failed to list pip packages", debug_out_);
-
- Log(debug_out_, "Listing pip cache... ");
- PythonWrapper::InvokeWithArgs(*app_c_, {
- "-m pip",
- "cache",
- "list",
- }, "Failed to list pip cache", debug_out_);
-}
-
-void Frame::OnClearPip(wxCommandEvent& event)
-{
- Log(debug_out_, "Clearing pip cache... ");
- PythonWrapper::InvokeWithArgs(*app_c_, {
- "-m pip",
- "cache",
- "purge",
- }, "Failed to clear pip cache", debug_out_);
-}
-
-void Frame::OnResetVenv(wxCommandEvent& event)
-{
- auto status = reset_venv_proc_.wait_for(std::chrono::seconds(0));
- if (status != std::future_status::ready) {
- Log(debug_out_, "Virtual environment reset already running\n");
- return;
- }
-
- /*
- Equivalent shell:
- python -m pip freeze > venv_pkgs.txt
- python -m pip uninstall -r venv_pkgs.txt
- rm venv_pkgs.txt
- */
-
- reset_venv_proc_ = std::move(std::async(std::launch::async, [&]() {
- Log(debug_out_, "Resetting virtual environment...\n");
-
- {
- std::stringstream pkg_list_ss;
- auto out_cb = [&](const std::string& out, const std::string& err) {
- Log(debug_out_, "{}", out);
- Log(debug_out_, "{}", err);
- pkg_list_ss << out;
- };
- auto in_cb = [&](std::string& in) {};
- Log(debug_out_, "Freezing packages...\n");
- if (!PythonWrapper::InvokeWithArgs(*app_c_, { "-m pip freeze" }, out_cb, in_cb)) {
- Log(debug_out_, "failed!\n");
- return;
- }
-
- std::stringstream pkg_list_ss2;
- std::string pkg_line;
- while (std::getline(pkg_list_ss, pkg_line)) {
- if (pkg_line.find("future") != std::string::npos) {
- continue;
- }
- pkg_list_ss2 << pkg_line << std::endl;
- }
-
- std::ofstream pkgs_ofs("venv_pkgs.txt");
- pkgs_ofs << pkg_list_ss2.str();
- pkgs_ofs.close();
- }
-
- // For now, leave venv_pkgs.txt on disk for better debuggability.
- //ScopeGuard venv_pkgs_cleanup([]() { std::filesystem::remove("venv_pkgs.txt"); });
-
- {
- auto out_cb = [&](const std::string& out, const std::string& err) {
- Log(debug_out_, "{}", out);
- Log(debug_out_, "{}", err);
- };
- auto in_cb = [&](std::string& in) {};
- Log(debug_out_, "Uninstalling packages...\n");
- if (!PythonWrapper::InvokeWithArgs(*app_c_, { "-m pip uninstall -y -r venv_pkgs.txt" }, out_cb, in_cb)) {
- Log(debug_out_, "failed!\n");
- return;
- }
- }
-
- Log(debug_out_, "Virtual environment reset done!\n");
- }));
-}
-
-void Frame::OnClearOSC(wxCommandEvent& event)
-{
- std::filesystem::path osc_path = "C:/Users";
- osc_path /= wxGetUserName().ToStdString();
- osc_path /= "AppData/LocalLow/VRChat/vrchat/OSC";
- osc_path = osc_path.lexically_normal();
- Log(debug_out_, "OSC configs are stored at {}\n", osc_path.string());
-
- if (!std::filesystem::is_directory(osc_path)) {
- Log(debug_out_, "OSC configs do not exist at {}, assuming already "
- "deleted!\n", osc_path.string());
- return;
- }
-
- Log(debug_out_, "Deleting OSC configs... ");
- std::error_code err;
- if (std::filesystem::remove_all(osc_path, err)) {
- Log(debug_out_, "success!\n");
- }
- else {
- wxLogError("Failed to delete OSC configs: %s", err.message());
- Log(debug_out_, "failed!\n");
- }
-}
-
-void Frame::OnBackupVenv(wxCommandEvent& event)
-{
- std::filesystem::path venv_path = "C:/Users";
- venv_path /= wxGetUserName().ToStdString();
- venv_path /= "Downloads/TaSTT_venv";
- venv_path = venv_path.lexically_normal();
- Log(debug_out_, "Backing up virtual environment to {}\n",
- venv_path.string());
-
- if (std::filesystem::is_directory(venv_path)) {
- Log(debug_out_, "Old backup found, removing... ");
- std::error_code err;
- if (!std::filesystem::remove_all(venv_path, err)) {
- wxLogError("Failed to remove old virtual environment backup: %s",
- err.message());
- Log(debug_out_, "failed!\n");
- return;
- }
- Log(debug_out_, "success!\n");
- }
-
- Log(debug_out_, "Copying venv... ");
- auto opts = std::filesystem::copy_options();
- opts |= std::filesystem::copy_options::overwrite_existing;
- opts |= std::filesystem::copy_options::recursive;
- std::error_code error;
- std::filesystem::copy("Resources/Python", venv_path, opts, error);
- if (error.value()) {
- wxLogError("Failed to back up virtual environment: %s (%d)",
- error.message(), error.value());
- Log(debug_out_, "failed!\n");
- return;
- }
- Log(debug_out_, "success!\n");
-}
-
-void Frame::OnRestoreVenv(wxCommandEvent& event)
-{
- std::filesystem::path venv_path = "C:/Users";
- venv_path /= wxGetUserName().ToStdString();
- venv_path /= "Downloads/TaSTT_venv";
- venv_path = venv_path.lexically_normal();
- Log(debug_out_, "Restoring virtual environment from {}\n",
- venv_path.string());
-
- if (!std::filesystem::is_directory(venv_path)) {
- wxLogError("Virtual environment backup does not exist at %s",
- venv_path.string());
- Log(debug_out_, "Failed!\n");
- }
-
- if (std::filesystem::is_directory("Resources/Python")) {
- Log(debug_out_, "Removing active virtual environment... ");
- std::error_code err;
- if (!std::filesystem::remove_all("Resources/Python", err)) {
- wxLogError("Failed to remove active virtual environment: %s",
- err.message());
- Log(debug_out_, "failed!\n");
- return;
- }
- Log(debug_out_, "success!\n");
- }
-
- Log(debug_out_, "Copying venv... ");
- auto opts = std::filesystem::copy_options();
- opts |= std::filesystem::copy_options::overwrite_existing;
- opts |= std::filesystem::copy_options::recursive;
- std::error_code error;
- std::filesystem::copy(venv_path, "Resources/Python", opts, error);
- if (error.value()) {
- wxLogError("Failed to copy venv: %s (%d)", error.message(),
- error.value());
- Log(debug_out_, "failed!\n");
- return;
- }
- Log(debug_out_, "success!\n");
-
- Log(debug_out_, "Setting up virtual env to ensure consistency. Most "
- "packages should not be re-acquired. Output is printed to the "
- "transcription panel.\n");
- EnsureVirtualEnv(/*block=*/false);
-}
-
-void Frame::OnSetupVenv(wxCommandEvent& event)
-{
- Log(debug_out_, "Setting up virtual environment. Output is printed to the "
- "transcription panel.\n");
- EnsureVirtualEnv(/*block=*/false, /*force=*/true);
-}
-
-void Frame::OnUnityParamChangeImpl() {
- int chars_per_sync_idx = unity_chars_per_sync_->GetSelection();
- if (chars_per_sync_idx == wxNOT_FOUND) {
- chars_per_sync_idx = kCharsDefault;
- }
- ASSIGN_OR_RETURN_VOID(int, chars_per_sync, stoiInRange(transcribe_out_, kCharsPerSync[chars_per_sync_idx].ToStdString(), "chars_per_sync", 1, 24));
- int bytes_per_char_idx = unity_bytes_per_char_->GetSelection();
- if (bytes_per_char_idx == wxNOT_FOUND) {
- bytes_per_char_idx = kBytesDefault;
- }
- ASSIGN_OR_RETURN_VOID(int, bytes_per_char, stoiInRange(transcribe_out_, kBytesPerChar[bytes_per_char_idx].ToStdString(), "bytes_per_char", 1, 2));
-
- // Used to select which region is being updated.
- int select_bits = 8;
- // Used to update the active region.
- int layer_bits = (chars_per_sync * bytes_per_char) * 8;
- // Used to control the size of the board.
- int scale_bits = 8;
- // These are all the misc bits we use:
- // 1. dummy (we should get rid of this one)
- // 2. show
- // 3. disable
- // 4. lock
- // 5. clear
- int misc_bits = 5;
-
- int phoneme_bits = 0;
- if (unity_enable_phonemes_->GetValue()) {
- phoneme_bits = 6;
- }
-
- int total_bits = select_bits + layer_bits + scale_bits + misc_bits + phoneme_bits;
-
- Log(unity_out_, "This configuration will use {} bits of avatar parameter space:\n", total_bits);
- Log(unity_out_, " {} bits coming from ({} characters per sync) * ({} bytes per character)\n", layer_bits, chars_per_sync, bytes_per_char);
- Log(unity_out_, " {} bits coming from fixed overheads\n", select_bits + scale_bits + misc_bits);
- if (phoneme_bits > 0) {
- Log(unity_out_, " {} bits coming from phonemes\n", phoneme_bits);
- }
-}
-
-void Frame::OnUnityParamChange(wxCommandEvent& event) {
- OnUnityParamChangeImpl();
-}
-
-void Frame::OnAppStart(wxCommandEvent& event) {
- auto status = py_app_.wait_for(std::chrono::seconds(0));
- if (status != std::future_status::ready) {
- Log(transcribe_out_, "Transcription engine already running\n");
- return;
- }
-
- status = obs_app_.wait_for(std::chrono::seconds(0));
- if (status != std::future_status::ready) {
- Log(transcribe_out_, "Transcription engine (OBS server) already running\n");
- return;
- }
-
- Log(transcribe_out_, "Launching transcription engine\n");
-
- int which_mic = py_app_mic_->GetSelection();
- if (which_mic == wxNOT_FOUND) {
- which_mic = kMicDefault;
- }
- int which_lang = py_app_lang_->GetSelection();
- if (which_lang == wxNOT_FOUND) {
- which_lang = kLangDefault;
- }
- int which_translate_target = py_app_translate_target_->GetSelection();
- if (which_translate_target == wxNOT_FOUND) {
- which_translate_target = kLangDefault;
- }
- int which_model = py_app_model_->GetSelection();
- if (which_model == wxNOT_FOUND) {
- which_model = kModelDefault;
- }
- int which_model_translation = py_app_model_translation_->GetSelection();
- if (which_model_translation == wxNOT_FOUND) {
- which_model_translation = kModelTranslationDefault;
- }
- int chars_per_sync_idx = py_app_chars_per_sync_->GetSelection();
- if (chars_per_sync_idx == wxNOT_FOUND) {
- chars_per_sync_idx = kCharsDefault;
- }
- int bytes_per_char_idx = py_app_bytes_per_char_->GetSelection();
- if (bytes_per_char_idx == wxNOT_FOUND) {
- bytes_per_char_idx = kBytesDefault;
- }
- int button_idx = py_app_button_->GetSelection();
- if (button_idx == wxNOT_FOUND) {
- button_idx = kButtonDefault;
- }
- int prio_idx = py_app_prio_->GetSelection();
- if (prio_idx == wxNOT_FOUND) {
- prio_idx = kPrioDefault;
- }
- int compute_type_idx = py_app_compute_type_->GetSelection();
- if (compute_type_idx == wxNOT_FOUND) {
- compute_type_idx = kComputeTypeDefault;
- }
-
- const bool enable_local_beep = py_app_enable_local_beep_->GetValue();
- const bool enable_orig_lang = py_app_enable_orig_lang_->GetValue();
- const bool enable_browser_src = py_app_enable_browser_src_->GetValue();
- const bool use_cpu = py_app_use_cpu_->GetValue();
- const bool use_builtin = py_app_use_builtin_->GetValue();
- const bool enable_uwu_filter = py_app_enable_uwu_filter_->GetValue();
- const bool remove_trailing_period = py_app_remove_trailing_period_->GetValue();
- const bool enable_uppercase_filter = py_app_enable_uppercase_filter_->GetValue();
- const bool enable_lowercase_filter = py_app_enable_lowercase_filter_->GetValue();
- const bool enable_profanity_filter = py_app_enable_profanity_filter_->GetValue();
- const bool enable_debug_mode = py_app_enable_debug_mode_->GetValue();
- const bool reset_on_toggle = py_app_reset_on_toggle_->GetValue();
- const bool enable_previews = py_app_enable_previews_->GetValue();
- const bool enable_lock_at_spawn = py_app_enable_lock_at_spawn_->GetValue();
-
- ASSIGN_OR_RETURN_VOID(int, rows, stoiInRange(transcribe_out_, py_app_rows_->GetValue().ToStdString(), "rows", 1, 10));
- ASSIGN_OR_RETURN_VOID(int, cols, stoiInRange(transcribe_out_, py_app_cols_->GetValue().ToStdString(), "cols", 1, 120));
- ASSIGN_OR_RETURN_VOID(int, chars_per_sync, stoiInRange(transcribe_out_, kCharsPerSync[chars_per_sync_idx].ToStdString(), "chars_per_sync", 1, 24));
- ASSIGN_OR_RETURN_VOID(int, bytes_per_char, stoiInRange(transcribe_out_, kBytesPerChar[bytes_per_char_idx].ToStdString(), "bytes_per_char", 1, 2));
- ASSIGN_OR_RETURN_VOID(int, gpu_idx, stoiInRange(transcribe_out_, py_app_gpu_idx_->GetValue().ToStdString(), "gpu_idx", 0, 10));
- ASSIGN_OR_RETURN_VOID(int, min_silence_duration_ms, stoiInRange(transcribe_out_, py_app_min_silence_duration_ms_->GetValue().ToStdString(), "min_silence_duration_ms", 50, 5000));
- ASSIGN_OR_RETURN_VOID(int, max_speech_duration_s, stoiInRange(transcribe_out_, py_app_max_speech_duration_s_->GetValue().ToStdString(), "max_speech_duration_s", 1, 30));
- ASSIGN_OR_RETURN_VOID(int, reset_after_silence_s, stoiInRange(transcribe_out_, py_app_reset_after_silence_s_->GetValue().ToStdString(), "reset_after_silence_s", -1, 30));
- ASSIGN_OR_RETURN_VOID(int, transcription_loop_delay_ms, stoiInRange(transcribe_out_, py_app_transcription_loop_delay_ms_->GetValue().ToStdString(), "transcription_loop_delay_ms", 0, 10000));
- ASSIGN_OR_RETURN_VOID(int, browser_src_port, stoiInRange(transcribe_out_, py_app_browser_src_port_->GetValue().ToStdString(), "browser_src_port", 1024, 65535));
-
- std::string keybind = py_app_keybind_->GetValue().ToStdString();
-
- app_c_->microphone = kMicChoices[which_mic].ToStdString();
- app_c_->language = kLangChoices[which_lang].ToStdString();
- app_c_->language_target = kLangTargetChoices[which_translate_target].ToStdString();
- app_c_->model = kModelChoices[which_model].ToStdString();
- app_c_->model_translation = kModelTranslationChoices[which_model_translation].ToStdString();
- app_c_->chars_per_sync = chars_per_sync;
- app_c_->bytes_per_char = bytes_per_char;
- app_c_->button = kButton[button_idx].ToStdString();
- app_c_->prio = kPrio[prio_idx].ToStdString();
- app_c_->compute_type = kComputeType[compute_type_idx].ToStdString();
- app_c_->rows = rows;
- app_c_->cols = cols;
- app_c_->enable_local_beep = enable_local_beep;
- app_c_->enable_orig_lang = enable_orig_lang;
- app_c_->enable_browser_src = enable_browser_src;
- app_c_->browser_src_port = browser_src_port;
- app_c_->use_cpu = use_cpu;
- app_c_->use_builtin = use_builtin;
- app_c_->enable_uwu_filter = enable_uwu_filter;
- app_c_->remove_trailing_period = remove_trailing_period;
- app_c_->enable_uppercase_filter = enable_uppercase_filter;
- app_c_->enable_lowercase_filter = enable_lowercase_filter;
- app_c_->enable_profanity_filter = enable_profanity_filter;
- app_c_->enable_debug_mode = enable_debug_mode;
- app_c_->reset_on_toggle = reset_on_toggle;
- app_c_->enable_previews = enable_previews;
- app_c_->enable_lock_at_spawn = enable_lock_at_spawn;
- app_c_->gpu_idx = gpu_idx;
- app_c_->min_silence_duration_ms = min_silence_duration_ms;
- app_c_->max_speech_duration_s = max_speech_duration_s;
- app_c_->reset_after_silence_s = reset_after_silence_s;
- app_c_->transcription_loop_delay_ms = transcription_loop_delay_ms;
- app_c_->keybind = keybind;
- app_c_->Serialize(AppConfig::kConfigPath);
-
- auto out_cb = [&](const std::string& out, const std::string& err) {
- Log(transcribe_out_, "{}", out);
- Log(transcribe_out_, "{}", err);
-
- std::istringstream out_iss(out);
- std::string out_line;
- while (std::getline(out_iss, out_line)) {
- if (out_line.starts_with("Finalized: 1")) {
- transcript_.SetFinalized(true);
- }
- else if (out_line.starts_with("Finalized: 0")) {
- transcript_.SetFinalized(false);
- }
-
- std::regex pattern("^Transcript: ");
- if (std::regex_search(out_line, pattern)) {
- std::string filtered_transcript = std::regex_replace(out_line, pattern, "");
- filtered_transcript.erase(std::remove_if(filtered_transcript.begin(), filtered_transcript.end(), [](char c) {
- return c == '\n' || c == '\r';
- }), filtered_transcript.end());
- //Log(transcribe_out_, "Got transcription line! Transcript: \"{}\"", filtered_transcript);
- transcript_.Set(std::move(filtered_transcript));
- }
-
- pattern = std::regex("^Preview: ");
- if (std::regex_search(out_line, pattern)) {
- std::string filtered_transcript = std::regex_replace(out_line, pattern, "");
- filtered_transcript.erase(std::remove_if(filtered_transcript.begin(), filtered_transcript.end(), [](char c) {
- return c == '\n' || c == '\r';
- }), filtered_transcript.end());
- //Log(transcribe_out_, "Got transcription line! Transcript: \"{}\"", filtered_transcript);
- transcript_.SetPreview(std::move(filtered_transcript));
- }
- }
- };
- auto in_cb = [&](std::string& in) {
- if (!run_py_app_) {
- std::ostringstream oss;
- oss << "exit" << std::endl;
- in = oss.str();
- }
- };
- auto run_cb = [&]() {
- return run_py_app_;
- };
- run_py_app_ = true;
- auto prestart_cb = [this]() -> void {
- EnsureVirtualEnv(/*block=*/true);
- };
-
-#if 0
- obs_app_ = std::async(std::launch::async,
- [this, enable_browser_src, browser_src_port]() -> bool {
- if (enable_browser_src) {
- BrowserSource browser_src(browser_src_port, transcribe_out_, &transcript_);
- browser_src.Run(&run_py_app_);
- }
- return true;
- });
-#endif
- const std::string config_path(AppConfig::kConfigPath);
- py_app_ = std::move(PythonWrapper::StartApp(*app_c_,
- config_path, transcribe_out_,
- std::move(out_cb), std::move(in_cb), std::move(run_cb),
- std::move(prestart_cb)));
- Log(transcribe_out_, "py app valid: {}\n", py_app_.valid());
-}
-
-void Frame::OnAppStop() {
- run_py_app_ = false;
- auto status = py_app_.wait_for(std::chrono::seconds(0));
- if (status == std::future_status::ready) {
- Log(transcribe_out_, "Transcription engine already stopped\n");
- }
- else {
- py_app_.wait();
- Log(transcribe_out_, "Stopped transcription engine\n");
- }
- status = obs_app_.wait_for(std::chrono::seconds(0));
- if (status == std::future_status::ready) {
- Log(transcribe_out_, "Browser source already stopped\n");
- }
- else {
- obs_app_.wait();
- Log(transcribe_out_, "Stopped browser source\n");
- }
- transcript_.Clear();
-}
-
-void Frame::OnAppStop(wxCommandEvent& event) {
- OnAppStop();
-}
-
-void Frame::OnAppDrain(wxTimerEvent& event) {
- Logging::kThreadLogger.Drain();
-}
-
-void Frame::LoadAndSetIcons() {
- const char* icons[] = {
- "Resources/Images/logo.png",
- "Resources/Images/logo_16x16.png",
- "Resources/Images/logo_32x32.png",
- };
- wxIconBundle icon_bundle;
- for (const auto& icon_path : icons) {
- if (!std::filesystem::exists(icon_path)) {
- wxLogFatalError("Logo is missing from %s", icon_path);
- }
- icon_bundle.AddIcon(icon_path, wxBITMAP_TYPE_PNG);
- }
- SetIcons(icon_bundle);
-}
-
-void Frame::Resize()
-{
- auto frame_sz = GetBestSize();
- auto panel_sz = main_panel_->GetBestSize();
-
- //auto ideal_sz = panel_sz;
- //ideal_sz.x += frame_sz.x;
- //ideal_sz.y += frame_sz.y;
-
- this->SetSize(panel_sz);
-}
-
diff --git a/GUI/GUI/GUI/Frame.h b/GUI/GUI/GUI/Frame.h
deleted file mode 100644
index 7e5c7c7..0000000
--- a/GUI/GUI/GUI/Frame.h
+++ /dev/null
@@ -1,134 +0,0 @@
-#pragma once
-
-#include <wx/filepicker.h>
-#include <wx/wxprec.h>
-
-#ifndef WX_PRECOMP
-#include <wx/wx.h>
-#endif
-
-#include "Config.h"
-#include "Transcript.h"
-
-#include <future>
-#include <memory>
-
-class Frame : public wxFrame
-{
-public:
- Frame();
-
-private:
- wxPNGHandler png_handler_;
-
- wxPanel* main_panel_;
- wxPanel* transcribe_panel_;
- wxPanel* unity_panel_;
- wxPanel* debug_panel_;
-
- wxTextCtrl* transcribe_out_;
- wxTextCtrl* unity_out_;
- wxTextCtrl* debug_out_;
-
- wxTextCtrl* unity_animator_generated_dir_;
- wxTextCtrl* unity_animator_generated_name_;
- wxTextCtrl* unity_parameters_generated_name_;
- wxTextCtrl* unity_menu_generated_name_;
-
- wxTextCtrl* py_app_rows_;
- wxTextCtrl* py_app_cols_;
- wxTextCtrl* py_app_gpu_idx_;
- wxTextCtrl* py_app_min_silence_duration_ms_;
- wxTextCtrl* py_app_max_speech_duration_s_;
- wxTextCtrl* py_app_reset_after_silence_s_;
- wxTextCtrl* py_app_transcription_loop_delay_ms_;
- wxTextCtrl* py_app_keybind_;
- wxTextCtrl* py_app_browser_src_port_;
- wxTextCtrl* py_app_commit_fuzz_threshold_;
- wxTextCtrl* unity_rows_;
- wxTextCtrl* unity_cols_;
- wxTextCtrl* unity_texture_sz_;
-
- wxDirPickerCtrl* unity_assets_file_picker_;
- wxFilePickerCtrl* unity_animator_file_picker_;
- wxFilePickerCtrl* unity_parameters_file_picker_;
- wxFilePickerCtrl* unity_menu_file_picker_;
-
- wxChoice* py_app_mic_;
- wxChoice* py_app_lang_;
- wxChoice* py_app_translate_target_;
- wxChoice* py_app_model_;
- wxChoice* py_app_model_translation_;
- // TODO(yum) figure out how to deduplicate these objects
- wxChoice* py_app_chars_per_sync_;
- wxChoice* py_app_bytes_per_char_;
- wxChoice* py_app_button_;
- wxChoice* py_app_prio_;
- wxChoice* py_app_compute_type_;
- wxChoice* unity_chars_per_sync_;
- wxChoice* unity_bytes_per_char_;
-
- wxCheckBox* py_app_enable_local_beep_;
- wxCheckBox* py_app_enable_orig_lang_;
- wxCheckBox* py_app_enable_browser_src_;
- wxCheckBox* py_app_use_cpu_;
- wxCheckBox* py_app_use_builtin_;
- wxCheckBox* py_app_enable_uwu_filter_;
- wxCheckBox* py_app_remove_trailing_period_;
- wxCheckBox* py_app_enable_uppercase_filter_;
- wxCheckBox* py_app_enable_lowercase_filter_;
- wxCheckBox* py_app_enable_profanity_filter_;
- wxCheckBox* py_app_enable_debug_mode_;
- wxCheckBox* py_app_reset_on_toggle_;
- wxCheckBox* py_app_enable_previews_;
- wxCheckBox* py_app_enable_lock_at_spawn_;
- wxCheckBox* unity_clear_osc_;
- wxCheckBox* unity_enable_phonemes_;
-
- std::future<bool> py_app_;
- std::future<bool> obs_app_;
- Transcript transcript_;
- bool run_py_app_;
- bool run_unity_auto_refresh_;
- std::future<bool> unity_app_;
- std::future<bool> unity_auto_refresh_;
- std::future<bool> dump_mics_;
- std::future<bool> env_proc_;
- std::future<void> reset_venv_proc_;
-
- wxTimer py_app_drain_;
-
- std::unique_ptr<AppConfig> app_c_;
-
- // Initialize GUI input fields using `app_c_`.
- void ApplyConfigToInputFields();
- // Ensure that virtual env is set up.
- void EnsureVirtualEnv(bool block, bool force = false);
-
- void OnExit(wxCloseEvent& event);
- void OnNavbarTranscribe(wxCommandEvent& event);
- void OnNavbarUnity(wxCommandEvent& event);
- void OnNavbarDebug(wxCommandEvent& event);
- void OnDumpMics(wxCommandEvent& event);
- void OnAppStart(wxCommandEvent& event);
- void OnAppStop();
- void OnAppStop(wxCommandEvent& event);
- void OnAppDrain(wxTimerEvent& event);
- void OnGenerateFX(wxCommandEvent& event);
- void OnUnityAutoRefresh(wxCommandEvent& event);
- void OnUnityAutoRefreshStop();
- void OnUnityAutoRefreshStop(wxCommandEvent& event);
- void OnUnityParamChangeImpl();
- void OnUnityParamChange(wxCommandEvent& event);
- void OnListPip(wxCommandEvent& event);
- void OnClearPip(wxCommandEvent& event);
- void OnResetVenv(wxCommandEvent& event);
- void OnClearOSC(wxCommandEvent& event);
- void OnBackupVenv(wxCommandEvent& event);
- void OnRestoreVenv(wxCommandEvent& event);
- void OnSetupVenv(wxCommandEvent& event);
-
- void LoadAndSetIcons();
- void Resize();
-};
-
diff --git a/GUI/GUI/GUI/GUI.rc b/GUI/GUI/GUI/GUI.rc
deleted file mode 100644
index 01c922a..0000000
--- a/GUI/GUI/GUI/GUI.rc
+++ /dev/null
Binary files differ
diff --git a/GUI/GUI/GUI/GUI.vcxproj b/GUI/GUI/GUI/GUI.vcxproj
deleted file mode 100644
index e5874c4..0000000
--- a/GUI/GUI/GUI/GUI.vcxproj
+++ /dev/null
@@ -1,196 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <VCProjectVersion>16.0</VCProjectVersion>
- <Keyword>Win32Proj</Keyword>
- <ProjectGuid>{e17ad8b1-0565-459b-b8d0-2024cc6c5cd4}</ProjectGuid>
- <RootNamespace>GUI</RootNamespace>
- <WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <UseDebugLibraries>true</UseDebugLibraries>
- <PlatformToolset>v143</PlatformToolset>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <UseDebugLibraries>false</UseDebugLibraries>
- <PlatformToolset>v143</PlatformToolset>
- <WholeProgramOptimization>true</WholeProgramOptimization>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <UseDebugLibraries>true</UseDebugLibraries>
- <PlatformToolset>v143</PlatformToolset>
- <CharacterSet>Unicode</CharacterSet>
- <EnableASAN>false</EnableASAN>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <UseDebugLibraries>false</UseDebugLibraries>
- <PlatformToolset>v143</PlatformToolset>
- <WholeProgramOptimization>true</WholeProgramOptimization>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Label="Shared">
- </ImportGroup>
- <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="..\..\Libraries\wx\wxwidgets.props" />
- </ImportGroup>
- <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="..\..\Libraries\wx\wxwidgets.props" />
- </ImportGroup>
- <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="..\..\Libraries\wx\wxwidgets.props" />
- </ImportGroup>
- <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="..\..\Libraries\wx\wxwidgets.props" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <LibraryPath>$(VC_LibraryPath_x64);$(WindowsSDK_LibraryPath_x64);$(ProjectDir)/whisper;$(ProjectDir)/oatpp</LibraryPath>
- <IncludePath>$(VC_IncludePath);$(WindowsSDK_IncludePath);$(ProjectDir)</IncludePath>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <LibraryPath>$(VC_LibraryPath_x64);$(WindowsSDK_LibraryPath_x64);$(ProjectDir)/whisper;$(ProjectDir)/oatpp</LibraryPath>
- <IncludePath>$(VC_IncludePath);$(WindowsSDK_IncludePath);$(ProjectDir)</IncludePath>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <ConformanceMode>true</ConformanceMode>
- <LanguageStandard>stdcpp20</LanguageStandard>
- <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
- </ClCompile>
- <Link>
- <SubSystem>Windows</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <WarningLevel>Level3</WarningLevel>
- <FunctionLevelLinking>true</FunctionLevelLinking>
- <IntrinsicFunctions>true</IntrinsicFunctions>
- <SDLCheck>true</SDLCheck>
- <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <ConformanceMode>true</ConformanceMode>
- <LanguageStandard>stdcpp20</LanguageStandard>
- <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
- </ClCompile>
- <Link>
- <SubSystem>Windows</SubSystem>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <OptimizeReferences>true</OptimizeReferences>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <AdditionalDependencies>kernel32.lib;user32.lib;gdi32.lib;comdlg32.lib;winspool.lib;shell32.lib;shlwapi.lib;ole32.lib;oleaut32.lib;uuid.lib;advapi32.lib;version.lib;comctl32.lib;rpcrt4.lib;ws2_32.lib;wininet.lib;winmm.lib;Whisper.lib;%(AdditionalDependencies)</AdditionalDependencies>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <ClCompile>
- <WarningLevel>Level3</WarningLevel>
- <SDLCheck>true</SDLCheck>
- <PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <ConformanceMode>true</ConformanceMode>
- <LanguageStandard>stdcpp20</LanguageStandard>
- <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
- </ClCompile>
- <Link>
- <SubSystem>Windows</SubSystem>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <AdditionalDependencies>kernel32.lib;user32.lib;gdi32.lib;comdlg32.lib;winspool.lib;shell32.lib;shlwapi.lib;ole32.lib;oleaut32.lib;uuid.lib;advapi32.lib;version.lib;comctl32.lib;rpcrt4.lib;ws2_32.lib;wininet.lib;winmm.lib;Whisper.lib;%(AdditionalDependencies)</AdditionalDependencies>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <ClCompile>
- <WarningLevel>Level3</WarningLevel>
- <FunctionLevelLinking>true</FunctionLevelLinking>
- <IntrinsicFunctions>true</IntrinsicFunctions>
- <SDLCheck>true</SDLCheck>
- <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <ConformanceMode>true</ConformanceMode>
- <LanguageStandard>stdcpp20</LanguageStandard>
- <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
- </ClCompile>
- <Link>
- <SubSystem>Windows</SubSystem>
- <EnableCOMDATFolding>true</EnableCOMDATFolding>
- <OptimizeReferences>true</OptimizeReferences>
- <GenerateDebugInformation>true</GenerateDebugInformation>
- <AdditionalDependencies>kernel32.lib;user32.lib;gdi32.lib;comdlg32.lib;winspool.lib;shell32.lib;shlwapi.lib;ole32.lib;oleaut32.lib;uuid.lib;advapi32.lib;version.lib;comctl32.lib;rpcrt4.lib;ws2_32.lib;wininet.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="App.cpp" />
- <ClCompile Include="BrowserSource.cpp" />
- <ClCompile Include="Config.cpp" />
- <ClCompile Include="Frame.cpp" />
- <ClCompile Include="HTTPMapper.cpp" />
- <ClCompile Include="HTTPParser.cpp" />
- <ClCompile Include="Logging.cpp" />
- <ClCompile Include="main.cpp" />
- <ClCompile Include="PythonWrapper.cpp" />
- <ClCompile Include="Transcript.cpp" />
- <ClCompile Include="WebServer.cpp" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="App.h" />
- <ClInclude Include="BrowserSource.h" />
- <ClInclude Include="Config.h" />
- <ClInclude Include="ConfigMarshal.h" />
- <ClInclude Include="Frame.h" />
- <ClInclude Include="HTTPMapper.h" />
- <ClInclude Include="HTTPParser.h" />
- <ClInclude Include="Logging.h" />
- <ClInclude Include="PythonWrapper.h" />
- <ClInclude Include="resource.h" />
- <ClInclude Include="ScopeGuard.h" />
- <ClInclude Include="Transcript.h" />
- <ClInclude Include="Util.h" />
- <ClInclude Include="WebCommon.h" />
- <ClInclude Include="WebServer.h" />
- </ItemGroup>
- <ItemGroup>
- <ResourceCompile Include="GUI.rc" />
- </ItemGroup>
- <ItemGroup>
- <Image Include="..\..\..\Images\logo.png" />
- <Image Include="..\..\..\Images\logo_16x16.png" />
- <Image Include="..\..\..\Images\logo_32x32.png" />
- <Image Include="icon1.ico" />
- <Image Include="Resources\logo.png" />
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/GUI/GUI/GUI/GUI.vcxproj.filters b/GUI/GUI/GUI/GUI.vcxproj.filters
deleted file mode 100644
index 10069e8..0000000
--- a/GUI/GUI/GUI/GUI.vcxproj.filters
+++ /dev/null
@@ -1,124 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
- <Extensions>cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
- <Extensions>h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd</Extensions>
- </Filter>
- <Filter Include="Resource Files">
- <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
- <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
- </Filter>
- <Filter Include="WebServer">
- <UniqueIdentifier>{a0953f26-cbc5-43b7-86c6-2d4b1030b13f}</UniqueIdentifier>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="main.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="App.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="Frame.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="PythonWrapper.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="Logging.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="Config.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="BrowserSource.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="Transcript.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="WebServer.cpp">
- <Filter>WebServer</Filter>
- </ClCompile>
- <ClCompile Include="HTTPMapper.cpp">
- <Filter>WebServer</Filter>
- </ClCompile>
- <ClCompile Include="HTTPParser.cpp">
- <Filter>WebServer</Filter>
- </ClCompile>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="PythonWrapper.h">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="App.h">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="Frame.h">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="ScopeGuard.h">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="resource.h">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="Logging.h">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="Config.h">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="Util.h">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="BrowserSource.h">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="Transcript.h">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="WebCommon.h">
- <Filter>WebServer</Filter>
- </ClInclude>
- <ClInclude Include="WebServer.h">
- <Filter>WebServer</Filter>
- </ClInclude>
- <ClInclude Include="HTTPMapper.h">
- <Filter>WebServer</Filter>
- </ClInclude>
- <ClInclude Include="HTTPParser.h">
- <Filter>WebServer</Filter>
- </ClInclude>
- <ClInclude Include="ConfigMarshal.h">
- <Filter>Header Files</Filter>
- </ClInclude>
- </ItemGroup>
- <ItemGroup>
- <ResourceCompile Include="GUI.rc">
- <Filter>Resource Files</Filter>
- </ResourceCompile>
- </ItemGroup>
- <ItemGroup>
- <Image Include="..\..\..\Images\logo.png">
- <Filter>Resource Files</Filter>
- </Image>
- <Image Include="icon1.ico">
- <Filter>Resource Files</Filter>
- </Image>
- <Image Include="..\..\..\Images\logo_16x16.png">
- <Filter>Resource Files</Filter>
- </Image>
- <Image Include="..\..\..\Images\logo_32x32.png">
- <Filter>Resource Files</Filter>
- </Image>
- <Image Include="Resources\logo.png">
- <Filter>Resource Files</Filter>
- </Image>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/GUI/GUI/GUI/GUI.vcxproj.user b/GUI/GUI/GUI/GUI.vcxproj.user
deleted file mode 100644
index 052eb16..0000000
--- a/GUI/GUI/GUI/GUI.vcxproj.user
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <LocalDebuggerCommand>TaSTT.exe</LocalDebuggerCommand>
- <LocalDebuggerWorkingDirectory>$(ProjectDir)/../../TaSTT/</LocalDebuggerWorkingDirectory>
- <DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <LocalDebuggerCommand>TaSTT.exe</LocalDebuggerCommand>
- <LocalDebuggerWorkingDirectory>$(ProjectDir)/../../TaSTT/</LocalDebuggerWorkingDirectory>
- <DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
- </PropertyGroup>
-</Project> \ No newline at end of file
diff --git a/GUI/GUI/GUI/HTTPMapper.cpp b/GUI/GUI/GUI/HTTPMapper.cpp
deleted file mode 100644
index c9884ae..0000000
--- a/GUI/GUI/GUI/HTTPMapper.cpp
+++ /dev/null
@@ -1,69 +0,0 @@
-#include "HTTPMapper.h"
-
-#include <sstream>
-#include <map>
-
-namespace {
- // Source: RFC 2616 section 6.1.1
- const std::map<int, std::string> kStatusCodeToString{
- {100, "Continue" },
- {101, "Switching Protocols"},
- {200, "OK"},
- {201, "Created"},
- {202, "Accepted"},
- {203, "Non-Authoritative Information"},
- {204, "No Content"},
- {205, "Reset Content"},
- {206, "Partial Content"},
- {300, "Multiple Choices"},
- {301, "Moved Permanently"},
- {302, "Found"},
- {303, "See Other"},
- {304, "Not Modified"},
- {305, "Use Proxy"},
- {307, "Temporary Redirect"},
- {400, "Bad Request"},
- {401, "Unauthorized"},
- {402, "Payment Required"},
- {403, "Forbidden"},
- {404, "Not Found"},
- {405, "Method Not Allowed"},
- {406, "Not Acceptable"},
- };
-}
-
-namespace WebServer {
- std::string HTTPMapper::Map(const int status_code,
- const std::string& payload, const ContentType type) {
- switch (type) {
- case HTML:
- return HTTPMapperHTML().Map(status_code, payload);
- case JSON:
- return HTTPMapperJSON().Map(status_code, payload);
- }
- }
-
- std::string HTTPMapperHTML::Map(const int status_code,
- const std::string& payload) {
- std::ostringstream oss;
- // This might throw and crash the app, but that's ok, just don't use an unsupported code.
- oss << "HTTP/1.1 " << status_code << " " << kStatusCodeToString.at(status_code) << "\r\n";
- oss << "Content-Type: text/html\r\n";
- oss << "Content-Length: " << std::to_string(payload.size()) << "\r\n";
- oss << "\r\n";
- oss << payload;
- return oss.str();
- }
-
- std::string HTTPMapperJSON::Map(const int status_code,
- const std::string& payload) {
- std::ostringstream oss;
- // This might throw and crash the app, but that's ok, just don't use an unsupported code.
- oss << "HTTP/1.1 " << status_code << " " << kStatusCodeToString.at(status_code) << "\r\n";
- oss << "Content-Type: application/json\r\n";
- oss << "Content-Length: " << std::to_string(payload.size()) << "\r\n";
- oss << "\r\n";
- oss << payload;
- return oss.str();
- }
-} \ No newline at end of file
diff --git a/GUI/GUI/GUI/HTTPMapper.h b/GUI/GUI/GUI/HTTPMapper.h
deleted file mode 100644
index 4086fe9..0000000
--- a/GUI/GUI/GUI/HTTPMapper.h
+++ /dev/null
@@ -1,35 +0,0 @@
-#pragma once
-
-#include "WebCommon.h"
-
-#include <string>
-
-namespace WebServer {
-
- class HTTPMapper {
- public:
- HTTPMapper() {}
- virtual ~HTTPMapper() {}
-
- std::string Map(int status_code,
- const std::string& payload, ContentType type);
- };
-
- class HTTPMapperHTML : public HTTPMapper {
- public:
- HTTPMapperHTML() {}
- virtual ~HTTPMapperHTML() {}
-
- std::string Map(int status_code,
- const std::string& payload);
- };
-
- class HTTPMapperJSON : public HTTPMapper {
- public:
- HTTPMapperJSON() {}
- virtual ~HTTPMapperJSON() {}
-
- std::string Map(int status_code,
- const std::string& payload);
- };
-}
diff --git a/GUI/GUI/GUI/HTTPParser.cpp b/GUI/GUI/GUI/HTTPParser.cpp
deleted file mode 100644
index 3e15afa..0000000
--- a/GUI/GUI/GUI/HTTPParser.cpp
+++ /dev/null
@@ -1,217 +0,0 @@
-#include "HTTPParser.h"
-#include "ScopeGuard.h"
-
-#include <sstream>
-
-namespace WebServer {
- HTTPParser::HTTPParser() {}
-
- namespace {
- constexpr const char kLineDelim[] = "\r\n";
- constexpr const char kHeadersDelim[] = "\r\n\r\n";
- constexpr const char kRfcSP[] = " ";
- constexpr const char kRfcHT[] = "\t";
- constexpr const char kRfcLWS[] = " \t\r\n";
- };
-
- bool HTTPParser::Parse(const std::string& raw_http, std::string& err) {
- std::ostringstream err_oss;
- ScopeGuard err_oss_flush([&]() { err += err_oss.str(); });
-
- ParserState state = PARSER_STATE_START_LINE;
- size_t pos = 0;
- while (pos < raw_http.length()) {
- size_t end;
- switch (state) {
- case PARSER_STATE_START_LINE:
- end = raw_http.find(kLineDelim, pos);
- break;
- case PARSER_STATE_HEADERS:
- end = raw_http.find(kHeadersDelim, pos);
- break;
- case PARSER_STATE_PAYLOAD:
- end = raw_http.length();
- break;
- }
- ScopeGuard advance_pos([&]() { pos = end + 1; });
- if (end == std::string::npos) {
- err_oss << "Failed to parse HTTP in state " << state << ": No delimiter!" << std::endl;
- return false;
- }
- std::string_view segment(raw_http.data() + pos, end - pos);
- if (!ParseSegment(segment, state, err)) {
- return false;
- }
- }
- return true;
- }
-
- const std::string& HTTPParser::GetMethod() const {
- return method_;
- }
-
- const std::string& HTTPParser::GetPath() const {
- return path_;
- }
-
- bool HTTPParser::GetHeader(const std::string& header, std::string& value) const {
- auto iter = headers_.find(header);
- if (iter == headers_.end()) {
- return false;
- }
- value = iter->second;
- return true;
- }
-
- const std::map<std::string, std::string>& HTTPParser::GetHeaders() const {
- return headers_;
- }
-
- const std::string& HTTPParser::GetPayload() const {
- return payload_;
- }
-
- bool HTTPParser::ParseSegment(
- const std::string_view segment,
- ParserState& state,
- std::string& err) {
- std::ostringstream err_oss;
- ScopeGuard err_oss_flush([&]() { err += err_oss.str(); });
- switch (state) {
- case PARSER_STATE_START_LINE:
- return ParseStartLine(segment, state, err);
- case PARSER_STATE_HEADERS:
- return ParseHeaders(segment, state, err);
- case PARSER_STATE_PAYLOAD:
- return ParsePayload(segment, state, err);
- }
- }
-
- enum StartLineParserState {
- START_LINE_PARSER_STATE_METHOD,
- START_LINE_PARSER_STATE_PATH,
- START_LINE_PARSER_STATE_VERSION,
- START_LINE_PARSER_STATE_END,
- };
- // Source: RFC 2616 section 5.1.1.
- bool HTTPParser::ParseStartLine(
- const std::string_view segment,
- ParserState& state,
- std::string& err) {
- std::ostringstream err_oss;
- ScopeGuard err_oss_flush([&]() { err += err_oss.str(); });
-
- // Request-Line = Method SP Request-URI SP HTTP-Version CRLF
- // SP == space.
- // Thus we expect to see exactly three space-delimited chunks.
- StartLineParserState cur_state = START_LINE_PARSER_STATE_METHOD;
- size_t pos = 0;
- while (pos < segment.length()) {
- size_t end = segment.find(' ', pos);
- if (end == std::string::npos) {
- end = segment.length();
- }
- ScopeGuard advance_pos([&]() { pos = end + 1; });
-
- std::string_view cur_segment(segment.data() + pos, end - pos);
- switch (cur_state) {
- case START_LINE_PARSER_STATE_METHOD:
- method_ = cur_segment;
- cur_state = START_LINE_PARSER_STATE_PATH;
- continue;
- case START_LINE_PARSER_STATE_PATH:
- path_ = cur_segment;
- cur_state = START_LINE_PARSER_STATE_VERSION;
- continue;
- case START_LINE_PARSER_STATE_VERSION:
- // TODO(yum) check this
- cur_state = START_LINE_PARSER_STATE_END;
- continue;
- case START_LINE_PARSER_STATE_END:
- err_oss << "Invalid start line: has too many parts: " << segment << std::endl;
- return false;
- }
- }
- if (cur_state != START_LINE_PARSER_STATE_END) {
- err_oss << "Invalid start line: missing parts: " << segment << std::endl;
- return false;
- }
-
- state = PARSER_STATE_HEADERS;
- return true;
- }
-
- // Source: RFC 2616 section 4.2.
- bool HTTPParser::ParseHeaders(
- const std::string_view segment,
- ParserState& state,
- std::string& err) {
- std::ostringstream err_oss;
- ScopeGuard err_oss_flush([&]() { err += err_oss.str(); });
-
- // From the RFC:
- // message-header = field-name ":" [ field-value ]
- // field-name = token
- // field-value = *(field-content | LWS)
- // field-content = <the OCTETs making up the field - value
- // and consisting of either * TEXT or combinations
- // of token, separators, and quoted-string>
- // Takewaways:
- // * field-name is guaranteed to not be preceded by whitespace
- // * field-name is guaranteed to be followed by ":"
- // * field-value may be preceded by LWS
- // * multi-line field-values are guaranteed to start with either ' '
- // or '\t'
- size_t pos = 0;
- std::string key, value;
- while (pos < segment.length()) {
- // Divide into lines.
- size_t end = segment.find(kLineDelim, pos);
- if (end == std::string::npos) {
- end = segment.length();
- }
- ScopeGuard advance_pos([&]() { pos = end + 1; });
-
- std::string_view line = segment.substr(pos, end - pos);
- if (line.empty()) {
- continue;
- }
-
- // Lengthen the current line to cover multi-line header.
- while (end + 1 < segment.length() &&
- (segment[end + 1] == ' ' || segment[end + 1] == '\t')) {
- end = segment.find("\r\n", end + 1);
- }
-
- size_t sep = line.find(':');
- if (sep == std::string::npos) {
- err_oss << "Invalid header: No ':' delimiter: " << segment << std::endl;
- return false;
- }
-
- std::string_view key = line.substr(0, sep);
- size_t key_start = key.find_first_not_of(kRfcLWS);
- size_t key_end = key.find_last_not_of(kRfcLWS);
- key = key.substr(key_start, (key_end - key_start) + 1);
- // Value may contain interspersed LWS (linear whitespace).
- // Could scrub it out, but not necessary for our purposes.
- std::string_view value = line.substr(sep + 1);
- size_t value_start = value.find_first_not_of(kRfcLWS);
- size_t value_end = value.find_last_not_of(kRfcLWS);
- value = value.substr(value_start, (value_end - value_start) + 1);
-
- headers_[std::string(key)] = value;
- }
-
- state = PARSER_STATE_PAYLOAD;
- return true;
- }
-
- bool HTTPParser::ParsePayload(
- const std::string_view segment,
- ParserState& state,
- std::string& err) {
- payload_ = segment;
- return true;
- }
-}
diff --git a/GUI/GUI/GUI/HTTPParser.h b/GUI/GUI/GUI/HTTPParser.h
deleted file mode 100644
index 7fcfe0e..0000000
--- a/GUI/GUI/GUI/HTTPParser.h
+++ /dev/null
@@ -1,51 +0,0 @@
-#pragma once
-
-#include <string>
-#include <map>
-
-namespace WebServer {
-
- // A simple HTTP/1.1 message parser based on RFC 2616.
- class HTTPParser
- {
- public:
- HTTPParser();
-
- bool Parse(const std::string& raw_http, std::string& err);
-
- const std::string& GetMethod() const;
- const std::string& GetPath() const;
- bool GetHeader(const std::string& header, std::string& value) const;
- const std::map<std::string, std::string>& GetHeaders() const;
- const std::string& GetPayload() const;
-
- private:
- enum ParserState {
- PARSER_STATE_START_LINE,
- PARSER_STATE_HEADERS,
- PARSER_STATE_PAYLOAD,
- };
-
- bool ParseSegment(
- const std::string_view segment,
- ParserState& state,
- std::string& err);
- bool ParseStartLine(
- const std::string_view segment,
- ParserState& state,
- std::string& err);
- bool ParseHeaders(
- const std::string_view segment,
- ParserState& state,
- std::string& err);
- bool ParsePayload(
- const std::string_view segment,
- ParserState& state,
- std::string& err);
-
- std::string method_;
- std::string path_;
- std::map<std::string, std::string> headers_;
- std::string payload_;
- };
-}
diff --git a/GUI/GUI/GUI/Logging.cpp b/GUI/GUI/GUI/Logging.cpp
deleted file mode 100644
index 6983a40..0000000
--- a/GUI/GUI/GUI/Logging.cpp
+++ /dev/null
@@ -1,121 +0,0 @@
-#include "Logging.h"
-
-#include <wx/wxprec.h>
-
-#ifndef WX_PRECOMP
-#include <wx/wx.h>
-#endif
-
-#include <wx/process.h>
-#include <wx/tokenzr.h>
-#include <wx/txtstrm.h>
-
-#include <filesystem>
-#include <fstream>
-#include <regex>
-#include <sstream>
-#include <string>
-
-Logging::ThreadLogger Logging::kThreadLogger = Logging::ThreadLogger();
-
-Logging::ThreadLogger::ThreadLogger() {}
-
-void Logging::ThreadLogger::Append(wxTextCtrl* frame, const std::string&& message)
-{
- std::scoped_lock l(mu_);
- auto entry = messages_.find(frame);
- if (entry == messages_.end()) {
- messages_[frame] = { std::move(message) };
- }
- else {
- messages_[frame].push_back(message);
- }
-}
-
-void Logging::ThreadLogger::Drain()
-{
- std::scoped_lock l(mu_);
- const std::filesystem::path log_path("Resources/log.txt");
- std::ofstream log_ofs(log_path, std::ios_base::app);
- for (const auto& [frame, messages] : messages_) {
- for (const auto& message : messages) {
- if (frame) {
- frame->AppendText(message);
- }
- else {
- wxLogError("%s", message);
- }
- log_ofs << message;
- }
-
- // Constrain wxTextCtrl's to a few hundred lines to keep memory usage /
- // general snappiness in check.
- if (frame) {
- constexpr int kHalfMaxChars = 50 * 1000;
- int nchars;
- while ((nchars = frame->GetLastPosition()) > kHalfMaxChars) {
- wxString allText = frame->GetValue();
- wxArrayString lines = wxStringTokenize(allText, "\n");
- // Keep only the last kHalfMaxLines lines.
- size_t nlines = lines.GetCount();
- size_t linesToRemove = nlines / 2;
-
- // Remove lines from the beginning
- lines.RemoveAt(0, linesToRemove);
-
- // Join the lines back into a single string
- wxString newText = wxJoin(lines, '\n');
-
- // Update the text in the wxTextCtrl
- frame->Clear();
- frame->AppendText(newText);
- }
- }
- }
- log_ofs.close();
- messages_.clear();
-
- // Drop first 50% of lines in file if larger than 1 MB.
- if (std::filesystem::file_size(log_path) > 1024 * 1024) {
- std::vector<std::string> lines;
- std::ifstream log_ifs(log_path);
- std::string line;
- while (std::getline(log_ifs, line)) {
- lines.push_back(std::move(line));
- }
- log_ofs = std::ofstream(log_path);
- for (int i = lines.size() / 2; i < lines.size(); i++) {
- log_ofs << lines[i];
- }
- }
-}
-
-std::string Logging::HidePII(const std::string&& str,
- const std::string& replacement) {
- try {
- std::regex c_users("([A-Za-z]:\\\\+[Uu]sers\\\\+)[a-zA-Z0-9_ ]+");
- std::string real_replacement = "$1" + replacement;
- return std::regex_replace(str, c_users, real_replacement);
- }
- catch (const std::exception& e) {
- wxLogFatalError(e.what());
- }
- wxLogFatalError("Unhandled regex error (HidePII)");
- return ""; // Compiler thinks we can get here (we can't) and prints a warning.
-}
-
-void Logging::DrainAsyncOutput(wxProcess* proc, wxTextCtrl* frame) {
- if (!proc) {
- return;
- }
-
- while (proc->IsInputAvailable()) {
- wxTextInputStream iss(*(proc->GetInputStream()));
- Log(frame, " {}\n", iss.ReadLine().ToStdString());
- }
-
- while (proc->IsErrorAvailable()) {
- wxTextInputStream iss(*(proc->GetErrorStream()));
- Log(frame, " {}\n", iss.ReadLine().ToStdString());
- }
-}
diff --git a/GUI/GUI/GUI/Logging.h b/GUI/GUI/GUI/Logging.h
deleted file mode 100644
index 193617a..0000000
--- a/GUI/GUI/GUI/Logging.h
+++ /dev/null
@@ -1,50 +0,0 @@
-#pragma once
-
-#pragma once
-
-#include <wx/wxprec.h>
-
-#ifndef WX_PRECOMP
-#include <wx/wx.h>
-#endif
-
-#include <wx/process.h>
-#include <wx/txtstrm.h>
-
-#include <format>
-#include <string>
-#include <string_view>
-
-namespace Logging {
- // Remove personally identifying information (PII) from str.
- //
- // For example, this translates "C:/Users/foo/Desktop" to "C:/Users/*****/Desktop".
- std::string HidePII(const std::string&& str, const std::string& replacement = "*****");
-
- class ThreadLogger {
- public:
- ThreadLogger();
-
- void Append(wxTextCtrl* frame, const std::string&& message);
- void Drain();
- private:
- std::mutex mu_;
- std::unordered_map<wxTextCtrl*, std::list<std::string>> messages_;
- };
-
- extern ThreadLogger kThreadLogger;
-
- // Provides a simple Python format()-like interface to wxTextCtrl.
- // Ex: Log(my_textctrl_, "{}\n", "Hello, world!");
- template<typename... Args>
- void Log(wxTextCtrl* frame, std::string_view format, Args&&... args) {
- const std::string raw = std::vformat(format, std::make_format_args(args...));
- const std::string masked = HidePII(std::move(raw));
- const std::string decoded = wxString::FromUTF8(masked).ToStdString();
-
- kThreadLogger.Append(frame, std::move(decoded));
- }
-
- void DrainAsyncOutput(wxProcess* proc, wxTextCtrl* frame);
-}
-
diff --git a/GUI/GUI/GUI/PythonWrapper.cpp b/GUI/GUI/GUI/PythonWrapper.cpp
deleted file mode 100644
index 765a283..0000000
--- a/GUI/GUI/GUI/PythonWrapper.cpp
+++ /dev/null
@@ -1,894 +0,0 @@
-// Import rand_s() WIN32 API.
-#define _CRT_RAND_S
-// Silence security warnings caused by importing stdlib.h before wx.
-#define _CRT_SECURE_NO_WARNINGS
-
-#include <stdlib.h>
-
-#include "Logging.h"
-#include "PythonWrapper.h"
-#include "ScopeGuard.h"
-#include "Util.h"
-#include "Config.h"
-
-#include <stdio.h>
-#include <Windows.h>
-
-#include <filesystem>
-#include <fstream>
-#include <sstream>
-
-using ::Logging::Log;
-
-namespace {
- constexpr const char kEmotesPickle[] = "Resources/Fonts/Bitmaps/emotes.map";
-} // namespace
-
-class PythonProcess : public wxProcess {
-public:
- PythonProcess(std::function<void(wxProcess* proc, int ret)>&& exit_callback) : exit_cb_(exit_callback) {
- Redirect();
- }
-
- virtual void OnTerminate(int pid, int status) wxOVERRIDE {
- exit_cb_(this, status);
- }
-
-private:
- const std::function<void(wxProcess* proc, int ret)> exit_cb_;
-};
-
-wxProcess* PythonWrapper::InvokeAsyncWithArgs(std::vector<std::string>&& args,
- std::function<void(wxProcess* proc, int ret)>&& exit_callback) {
- std::ostringstream cmd_oss;
- cmd_oss << "Resources/Python/python.exe";
- for (const auto& arg : args) {
- cmd_oss << " " << arg;
- }
-
- auto *p = new PythonProcess(std::move(exit_callback));
- int pid = wxExecute(cmd_oss.str(), wxEXEC_ASYNC, p);
-
- if (!pid) {
- delete p;
- p = nullptr;
- }
-
- return p;
-}
-
-std::string GetWin32ErrMsg() {
- DWORD error = GetLastError();
- LPSTR err_msg = nullptr;
- FormatMessageA(
- FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
- NULL,
- error,
- MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
- (LPSTR)&err_msg,
- 0,
- NULL
- );
- ScopeGuard err_msg_cleanup([&]() { LocalFree(err_msg); });
- return std::to_string(error) + ": " + err_msg;
-}
-
-
-std::string DrainWin32Pipe(const HANDLE pipe) {
- DWORD bytes_avail;
- std::ostringstream oss;
- if (PeekNamedPipe(
- pipe,
- nullptr, // buffer to read into
- 0, // buffer size
- nullptr, // bytes read
- &bytes_avail,
- nullptr // bytes left in this message
- )) {
- DWORD cur_bytes_read = 0;
- DWORD sum_bytes_read = 0;
- std::vector<char> buf(4096, 0);
- while (sum_bytes_read < bytes_avail &&
- ReadFile(pipe, buf.data(), buf.size() - 1, &cur_bytes_read, NULL) &&
- cur_bytes_read > 0) {
- oss << std::string(buf.data(), cur_bytes_read);
- sum_bytes_read += cur_bytes_read;
- }
- }
- return oss.str();
-}
-
-bool PythonWrapper::InvokeCommandWithArgs(
- const AppConfig& app_c,
- const std::string& cmd,
- std::vector<std::string>&& args,
- const std::function<void(const std::string& out, const std::string& err)>&& out_cb,
- const std::function<void(std::string& in)>&& in_cb,
- const std::function<bool()>&& run_cb) {
- std::ostringstream cmd_oss;
- cmd_oss << cmd;
- for (const auto& arg : args) {
- cmd_oss << " " << arg;
- }
-
- HANDLE stdout_read{};
- HANDLE stdout_write{};
- SECURITY_ATTRIBUTES stdout_sec_attr{};
- stdout_sec_attr.nLength = sizeof(stdout_sec_attr);
- stdout_sec_attr.bInheritHandle = TRUE;
- if (!CreatePipe(&stdout_read, &stdout_write, &stdout_sec_attr, 0)) {
- std::ostringstream err_oss;
- err_oss << "Error while executing python command \"" << cmd_oss.str()
- << "\": Failed to create stdout pipe: " << GetWin32ErrMsg() << std::endl;
- out_cb("", err_oss.str());
- return false;
- }
- ScopeGuard stdout_cleanup([&]() {
- if (stdout_read) {
- CloseHandle(stdout_read);
- }
- if (stdout_write) {
- CloseHandle(stdout_write);
- }
- });
- SetHandleInformation(stdout_read, HANDLE_FLAG_INHERIT, 0);
-
- HANDLE stderr_read{};
- HANDLE stderr_write{};
- SECURITY_ATTRIBUTES stderr_sec_attr{};
- stderr_sec_attr.nLength = sizeof(stderr_sec_attr);
- stderr_sec_attr.bInheritHandle = TRUE;
-
- if (!CreatePipe(&stderr_read, &stderr_write, &stderr_sec_attr, 0)) {
- std::ostringstream err_oss;
- err_oss << "Error while executing python command \"" << cmd_oss.str()
- << "\": Failed to create stderr pipe: " << GetWin32ErrMsg() << std::endl;
- out_cb("", err_oss.str());
- return false;
- }
- ScopeGuard stderr_cleanup([&]() {
- if (stderr_read) {
- CloseHandle(stderr_read);
- }
- if (stderr_write) {
- CloseHandle(stderr_write);
- }
- });
- SetHandleInformation(stderr_read, HANDLE_FLAG_INHERIT, 0);
-
- HANDLE stdin_read{};
- HANDLE stdin_write{};
- SECURITY_ATTRIBUTES stdin_sec_attr{};
- stdin_sec_attr.nLength = sizeof(stdin_sec_attr);
- stdin_sec_attr.bInheritHandle = TRUE;
-
- if (!CreatePipe(&stdin_read, &stdin_write, &stdin_sec_attr, 0)) {
- std::ostringstream err_oss;
- err_oss << "Error while executing python command \"" << cmd_oss.str()
- << "\": Failed to create stdin pipe: " << GetWin32ErrMsg() << std::endl;
- out_cb("", err_oss.str());
- return false;
- }
- ScopeGuard stdin_cleanup([&]() {
- if (stdin_read) {
- CloseHandle(stdin_read);
- }
- if (stdin_write) {
- CloseHandle(stdin_write);
- }
- });
- SetHandleInformation(stdin_write, HANDLE_FLAG_INHERIT, 0);
-
- STARTUPINFOA si{};
- si.cb = sizeof(si);
- si.hStdOutput = stdout_write;
- si.hStdError = stderr_write;
- si.hStdInput = stdin_read;
- si.dwFlags |= STARTF_USESTDHANDLES;
- si.dwFlags |= STARTF_USESHOWWINDOW;
- si.wShowWindow = SW_HIDE;
- PROCESS_INFORMATION pi{};
- std::string env;
-
- {
- std::vector<char> buf(4096 * 8, 0);
- DWORD len = GetEnvironmentVariableA("PATH", buf.data(), buf.size() - 1);
- if (len > 0) {
- env = std::string("PATH=") + buf.data();
- }
- else {
- std::ostringstream err_oss;
- err_oss << "Error while executing python command \"" << cmd_oss.str()
- << "\": Failed to get PATH env variable: " << GetWin32ErrMsg() << std::endl;
- out_cb("", err_oss.str());
- return false;
- }
-
- // Add git to PATH
- std::filesystem::path git_path =
- (std::filesystem::current_path() /
- "Resources/PortableGit/bin").lexically_normal();
- if (env.find(git_path.string()) == std::string::npos) {
- env += ";" + git_path.string();
-
- // Add updated PATH to current process's environment
- if (!SetEnvironmentVariableA("PATH", env.c_str())) {
- std::ostringstream err_oss;
- err_oss << "Error while executing python command \""
- << cmd_oss.str()
- << "\": Failed to add git to PATH: " << GetWin32ErrMsg()
- << std::endl;
- out_cb("", err_oss.str());
- return false;
- }
- }
-
- // Add python scripts to PATH
- std::filesystem::path py_bin = (std::filesystem::current_path() /
- "Resources/Python/Scripts").lexically_normal();
- if (env.find(py_bin.string()) == std::string::npos) {
- env += ";" + py_bin.string();
-
- // Add updated PATH to current process's environment
- if (!SetEnvironmentVariableA("PATH", env.c_str())) {
- std::ostringstream err_oss;
- err_oss << "Error while executing python command \""
- << cmd_oss.str()
- << "\": Failed to add python scripts to PATH: "
- << GetWin32ErrMsg() << std::endl;
- out_cb("", err_oss.str());
- return false;
- }
- }
-
- // Add scripts to PATH
- std::filesystem::path dll_bin = (std::filesystem::current_path() /
- "Resources/Scripts").lexically_normal();
- if (env.find(dll_bin.string()) == std::string::npos) {
- env += ";" + dll_bin.string();
-
- // Add updated PATH to current process's environment
- if (!SetEnvironmentVariableA("PATH", env.c_str())) {
- std::ostringstream err_oss;
- err_oss << "Error while executing python command \""
- << cmd_oss.str()
- << "\": Failed to add python scripts to PATH: "
- << GetWin32ErrMsg() << std::endl;
- out_cb("", err_oss.str());
- return false;
- }
- }
- }
-
- std::string cmd_str = cmd_oss.str();
- if (!CreateProcessA(NULL, // application name
- cmd_str.data(),
- NULL, // process attributes
- NULL, // thread attributes
- TRUE, // whether to inherit parent's handles
- 0, // creation flags
- //env.data(),
- nullptr, // environment variables
- std::filesystem::current_path().string().c_str(), // current directory
- &si,
- &pi)) {
- std::ostringstream err_oss;
- err_oss << "Error while executing python command \"" << cmd_oss.str()
- << "\": Failed to launch process: " << GetWin32ErrMsg();
- out_cb("", err_oss.str());
- return false;
- }
- ScopeGuard pi_cleanup([&] {
- CloseHandle(pi.hProcess);
- CloseHandle(pi.hThread);
- });
-
- std::map<std::string, int> prio_stoi = {
- {"above normal", ABOVE_NORMAL_PRIORITY_CLASS},
- {"below normal", BELOW_NORMAL_PRIORITY_CLASS},
- {"normal", NORMAL_PRIORITY_CLASS},
- {"idle", IDLE_PRIORITY_CLASS},
- {"high", HIGH_PRIORITY_CLASS},
- {"realtime", REALTIME_PRIORITY_CLASS},
- };
- if (!SetPriorityClass(pi.hProcess, prio_stoi[app_c.prio])) {
- std::ostringstream err_oss;
- err_oss << "Error while executing python command \"" << cmd_oss.str()
- << "\": Failed to reduce priority class: " << GetWin32ErrMsg();
- out_cb("", err_oss.str());
- return false;
- }
-
- // While the process is running, drain output and send input every 10 ms.
- DWORD timeout_ms = 10;
- DWORD ret = WAIT_TIMEOUT;
- while (run_cb() && ret == WAIT_TIMEOUT) {
- DWORD ret = WaitForSingleObject(pi.hProcess, timeout_ms);
- if (ret != WAIT_TIMEOUT) {
- break;
- }
- std::ostringstream stdout_oss, stderr_oss;
- stdout_oss << DrainWin32Pipe(stdout_read);
- stderr_oss << DrainWin32Pipe(stderr_read);
- out_cb(stdout_oss.str(), stderr_oss.str());
-
- std::string input;
- in_cb(input);
- if (input.size()) {
- DWORD cur_bytes_write = 0;
- DWORD sum_bytes_write = 0;
- std::vector<char> buf(4096, 0);
- while (sum_bytes_write < input.size() &&
- WriteFile(stdin_write, input.data() + sum_bytes_write,
- input.size() - sum_bytes_write, &cur_bytes_write, NULL)) {
- sum_bytes_write += cur_bytes_write;
- }
- }
- }
- if (!run_cb()) {
- DWORD timeout_ms = 1000 * 10;
- DWORD ret = WaitForSingleObject(pi.hProcess, timeout_ms);
-
- if (ret == WAIT_TIMEOUT) {
- std::ostringstream stderr_oss;
- stderr_oss << "Timed out waiting for graceful exit, killing process";
- out_cb("", stderr_oss.str());
-
- TerminateProcess(pi.hProcess, 0);
- }
- }
-
- std::ostringstream stdout_oss, stderr_oss;
- DWORD exit_code;
- if (!GetExitCodeProcess(pi.hProcess, &exit_code)) {
- stderr_oss << "Failed to get exit code: " << GetWin32ErrMsg();
- }
- if (exit_code != 0) {
- stderr_oss << "Command exited with code " << exit_code << ": "
- << GetWin32ErrMsg();
- }
-
- // Close write ends of pipes. If we don't do this, the last read will block forever.
- CloseHandle(stdout_write);
- stdout_write = 0;
- CloseHandle(stderr_write);
- stderr_write = 0;
-
- stdout_oss << DrainWin32Pipe(stdout_read);
- stderr_oss << DrainWin32Pipe(stderr_read);
- out_cb(stdout_oss.str(), stderr_oss.str());
-
- return exit_code == 0;
-}
-
-bool PythonWrapper::InvokeCommandWithArgs(
- const AppConfig& app_c,
- const std::string& cmd,
- std::vector<std::string>&& args,
- std::string* py_stdout, std::string* py_stderr) {
-
- std::ostringstream out_oss, err_oss;
- auto out_cb = [&](const std::string& out, const std::string& err) {
- out_oss << out;
- err_oss << err;
- };
- bool ret = InvokeCommandWithArgs(app_c, cmd, std::move(args), std::move(out_cb));
- if (py_stderr) {
- *py_stderr = err_oss.str();
- }
- *py_stdout = out_oss.str();
- return ret;
-}
-
-bool PythonWrapper::InvokeWithArgs(
- const AppConfig& app_c,
- std::vector<std::string>&& args,
- std::string* py_stdout, std::string* py_stderr) {
- return InvokeCommandWithArgs(app_c, "Resources/Python/python.exe",
- std::move(args), py_stdout, py_stderr);
-}
-
-bool PythonWrapper::InvokeWithArgs(
- const AppConfig& app_c,
- std::vector<std::string>&& args,
- const std::string&& err_msg,
- wxTextCtrl* const out) {
- std::string py_stdout, py_stderr;
- if (InvokeWithArgs(app_c, std::move(args), &py_stdout, &py_stderr)) {
- Log(out, "success!\n");
- Log(out, py_stdout.c_str());
- if (!py_stdout.empty()) {
- Log(out, "\n");
- }
- Log(out, py_stderr.c_str());
- if (!py_stderr.empty()) {
- Log(out, "\n");
- }
- return true;
- }
- else {
- Log(out, "failed!\n");
- Log(out, "Error: {}: {}\n", err_msg, py_stderr);
- return false;
- }
-}
-
-bool PythonWrapper::InvokeWithArgs(
- const AppConfig& app_c,
- std::vector<std::string>&& args,
- const std::function<void(const std::string& out, const std::string& err)>&& out_cb,
- const std::function<void(std::string& in)>&& in_cb,
- const std::function<bool()>&& run_cb) {
- return InvokeCommandWithArgs(app_c,
- "Resources/Python/python.exe",
- std::move(args), std::move(out_cb), std::move(in_cb), std::move(run_cb));
-}
-
-
-std::string PythonWrapper::GetVersion() {
- std::string py_stdout, py_stderr;
- bool ok = InvokeWithArgs(AppConfig(nullptr), { "--version" }, &py_stdout, &py_stderr);
- if (!ok) {
- wxLogError("Failed to get python version: %s", py_stderr.c_str());
- }
- return py_stdout;
-}
-
-std::string PythonWrapper::DumpMics() {
- std::string py_stdout, py_stderr;
- const std::string dump_mics_path = "Resources/Scripts/dump_mic_devices.py";
- bool ok = InvokeWithArgs(AppConfig(nullptr), { dump_mics_path }, &py_stdout, &py_stderr);
- if (!ok) {
- wxLogError("Failed to dump mic devices: %s", py_stderr.c_str());
- }
- return py_stdout;
-}
-
-bool PythonWrapper::InstallPip(std::string* out, std::string* err) {
- std::ostringstream out_oss, err_oss;
- auto out_cb = [&](const std::string& out, const std::string& err) {
- out_oss << out;
- err_oss << err;
- };
- bool ret = InstallPip(std::move(out_cb));
- *out = out_oss.str();
- if (err) {
- *err = err_oss.str();
- }
- return ret;
-}
-
-bool PythonWrapper::InstallPip(
- const std::function<void(const std::string& out, const std::string& err)>&& out_cb,
- const std::function<void(std::string& in)>&& in_cb,
- const std::function<bool()>&& run_cb) {
- std::filesystem::path pip_flag = "Resources/Python/.pip_installed";
- if (std::filesystem::exists(pip_flag)) {
- out_cb("Pip flag exists, already installed\n", "");
- return true;
- }
-
- std::string pip_path = "Resources/Python/get-pip.py";
- if (!InvokeWithArgs(AppConfig(nullptr), { pip_path }, std::move(out_cb), std::move(in_cb),
- std::move(run_cb))) {
- return false;
- }
-
- // Create the flag file so subsstd::chrono::milliseconds(100));equent calls don't reinstall.
- std::ofstream flag_ofs(pip_path);
- flag_ofs.close();
-
- return true;
-}
-
-std::future<bool> PythonWrapper::StartApp(
- const AppConfig& app_c,
- const std::string& config_path,
- wxTextCtrl *out,
- const std::function<void(const std::string& out, const std::string& err)>&& out_cb,
- const std::function<void(std::string& in)>&& in_cb,
- const std::function<bool()>&& run_cb,
- const std::function<void()>&& prestart_cb) {
-
- return std::move(std::async(std::launch::async,
- [](
- const AppConfig app_c,
- const std::string config_path,
- wxTextCtrl *out,
- const std::function<void(const std::string& out, const std::string& err)>&& out_cb,
- const std::function<void(std::string& in)>&& in_cb,
- const std::function<bool()>&& run_cb,
- const std::function<void()>&& prestart_cb) -> bool {
- prestart_cb();
-
- Log(out, "DEBUG::{}:: config_path: {}\n", __func__, config_path);
-
- return InvokeWithArgs(
- app_c,
- {
- "-u", // Unbuffered output
- "Resources/Scripts/transcribe_v2.py",
- "--config", config_path,
- },
- std::move(out_cb),
- std::move(in_cb),
- std::move(run_cb));
- }, app_c, config_path, out, std::move(out_cb), std::move(in_cb),
- std::move(run_cb), std::move(prestart_cb)));
-}
-
-bool PythonWrapper::GenerateAnimator(
- const AppConfig& config,
- const std::string& config_path,
- const std::string& unity_animator_generated_dir,
- const std::string& unity_animator_generated_name,
- const std::string& unity_parameters_generated_name,
- const std::string& unity_menu_generated_name,
- wxTextCtrl* out) {
- // Python script locations
- std::string remove_audio_srcs_path = "Resources/Scripts/remove_audio_sources.py";
- std::string set_texture_sz_path = "Resources/Scripts/set_texture_sz.py";
- std::string libunity_path = "Resources/Scripts/libunity.py";
- std::string libtastt_path = "Resources/Scripts/libtastt.py";
- std::string generate_emotes_path = "Resources/Scripts/emotes_v2.py";
- std::string generate_params_path = "Resources/Scripts/generate_params.py";
- std::string generate_menu_path = "Resources/Scripts/generate_menu.py";
- std::string generate_shader_path = "Resources/Scripts/generate_shader.py";
- std::string shader_template_path = "Resources/Shaders/TaSTT_template.shader";
- std::string shader_lighting_template_path = "Resources/Shaders/STT_generated_template.cginc";
- std::string shader_path = "Resources/Shaders/TaSTT.shader";
- std::string shader_lighting_path = "Resources/Shaders/STT_generated.cginc";
-
- // Generated directory locations
- std::filesystem::path tastt_generated_dir_path =
- std::filesystem::path(config.assets_path) / unity_animator_generated_dir;
- std::filesystem::path guid_map_path =
- tastt_generated_dir_path / "guid.map";
- std::filesystem::path tastt_animations_path =
- tastt_generated_dir_path / "Animations";
- std::filesystem::path tastt_assets_path =
- tastt_generated_dir_path / "UnityAssets";
- std::filesystem::path tastt_sounds_path =
- tastt_generated_dir_path / "Sounds";
- std::filesystem::path tastt_shaders_path =
- tastt_generated_dir_path / "Shaders";
- std::filesystem::path tastt_fonts_path =
- tastt_generated_dir_path / "Fonts";
- std::filesystem::path tastt_params_path =
- tastt_generated_dir_path / unity_parameters_generated_name;
- std::filesystem::path tastt_menu_path =
- tastt_generated_dir_path / unity_menu_generated_name;
- // These are intermediate animators. We apply several transformations before
- // arriving at the final animator.
- std::filesystem::path tastt_fx0_path =
- tastt_generated_dir_path / "FX0.controller";
- std::filesystem::path tastt_fx1_path =
- tastt_generated_dir_path / "FX1.controller";
- // This is the final animator.
- std::filesystem::path tastt_animator_path =
- tastt_generated_dir_path / unity_animator_generated_name;
-
- const int texture_rows = (config.bytes_per_char == 1 ? 8 : 64);
- const int texture_cols = (config.bytes_per_char == 1 ? 16 : 128);
- {
- Log(out, "Generating shader for {}x{} board (pass 0)...", config.rows, config.cols);
- if (!InvokeWithArgs(AppConfig(nullptr), { generate_shader_path,
- "--bytes_per_char", std::to_string(config.bytes_per_char),
- "--board_rows", std::to_string(config.rows),
- "--board_cols", std::to_string(config.cols),
- "--texture_rows", std::to_string(texture_rows),
- "--texture_cols", std::to_string(texture_cols),
- "--shader_template", shader_template_path,
- "--shader_path", shader_path },
- "Failed to generate shader", out)) {
- return false;
- }
- }
- {
- Log(out, "Generating shader for {}x{} board (pass 1)...", config.rows, config.cols);
-
- std::string py_stdout, py_stderr;
- if (!InvokeWithArgs(AppConfig(nullptr), { generate_shader_path,
- "--bytes_per_char", std::to_string(config.bytes_per_char),
- "--board_rows", std::to_string(config.rows),
- "--board_cols", std::to_string(config.cols),
- "--texture_rows", std::to_string(texture_rows),
- "--texture_cols", std::to_string(texture_cols),
- "--shader_template", shader_lighting_template_path,
- "--shader_path", shader_lighting_path },
- "Failed to generate shader", out)) {
- return false;
- }
- }
-#if 0
- {
- Log(out, "Generating emotes... ");
-
- std::string py_stdout, py_stderr;
- if (InvokeWithArgs(AppConfig(nullptr), { generate_emotes_path,
- "Resources/Fonts/Emotes/",
- /*board_aspect_ratio=*/ std::to_string(6),
- /*texture_aspect_ratio=*/ std::to_string(2),
- "Resources/Fonts/Bitmaps/emotes.png",
- kEmotesPickle
- },
- &py_stdout, &py_stderr)) {
- Log(out, "success!\n");
- Log(out, py_stdout.c_str());
- if (!py_stdout.empty()) {
- Log(out, "\n");
- }
- Log(out, py_stderr.c_str());
- if (!py_stderr.empty()) {
- Log(out, "\n");
- }
- }
- else {
- Log(out, "failed!\n");
- Log(out, "stdout: {}\n", py_stdout.c_str());
- Log(out, "stderr: {}\n", py_stderr.c_str());
- return false;
- }
- }
-#endif
- {
- Log(out, "Creating {}\n", tastt_generated_dir_path.string());
- std::filesystem::create_directories(tastt_generated_dir_path);
- }
- {
- Log(out, "Copying canned animations... ");
- auto opts = std::filesystem::copy_options();
- opts |= std::filesystem::copy_options::overwrite_existing;
- opts |= std::filesystem::copy_options::recursive;
- std::error_code error;
- std::filesystem::copy("Resources/Animations", tastt_animations_path, opts, error);
- if (error.value()) {
- Log(out, "failed!\n");
- Log(out, "Error: {} ({})\n", error.message(), error.value());
- return false;
- }
- Log(out, "success!\n");
- }
- {
- Log(out, "Copying canned assets... ");
- auto opts = std::filesystem::copy_options();
- opts |= std::filesystem::copy_options::overwrite_existing;
- opts |= std::filesystem::copy_options::recursive;
- std::error_code error;
- std::filesystem::copy("Resources/UnityAssets", tastt_assets_path, opts, error);
- if (error.value()) {
- Log(out, "failed!\n");
- Log(out, "Error: {} ({})\n", error.message(), error.value());
- return false;
- }
- Log(out, "success!\n");
- }
- if (!config.enable_phonemes) {
- std::string prefab_path = (std::filesystem::path(tastt_assets_path) / "World Constraint.prefab").string();
- Log(out, "Remove audio sources from prefab at {}\n", prefab_path);
- Log(out, "Removing audio sources from prefab... ");
- if (!InvokeWithArgs(AppConfig(nullptr), { remove_audio_srcs_path,
- "--prefab", Quote(prefab_path)
- },
- "Failed to remove audio sources", out)) {
- return false;
- }
- Log(out, "succes!\n");
- }
- {
- Log(out, "Copying canned sounds... ");
- auto opts = std::filesystem::copy_options();
- opts |= std::filesystem::copy_options::overwrite_existing;
- opts |= std::filesystem::copy_options::recursive;
- std::error_code error;
- std::filesystem::copy("Resources/Sounds", tastt_sounds_path, opts, error);
- if (error.value()) {
- Log(out, "failed!\n");
- Log(out, "Error: {} ({})\n", error.message(), error.value());
- return false;
- }
- Log(out, "success!\n");
- }
- {
- Log(out, "Copying canned shaders... ");
- auto opts = std::filesystem::copy_options();
- opts |= std::filesystem::copy_options::overwrite_existing;
- opts |= std::filesystem::copy_options::recursive;
- std::error_code error;
- std::filesystem::copy("Resources/Shaders", tastt_shaders_path, opts, error);
- if (error.value()) {
- Log(out, "failed!\n");
- Log(out, "Error: {} ({})\n", error.message(), error.value());
- return false;
- }
- Log(out, "success!\n");
- }
- {
- Log(out, "Deleting shader templates... ");
- try {
- if (std::filesystem::exists(tastt_shaders_path) && std::filesystem::is_directory(tastt_shaders_path)) {
- for (const auto& entry : std::filesystem::directory_iterator(tastt_shaders_path)) {
- if (entry.is_regular_file()) {
- if (entry.path().stem().string().ends_with("_template")) {
- std::filesystem::remove(entry.path());
- }
- }
- }
- }
- }
- catch (const std::exception& e) {
- Log(out, "failed!\n");
- Log(out, "Error: {}\n", e.what());
- }
- Log(out, "success!\n");
- }
- {
- Log(out, "Copying canned fonts... ");
- auto opts = std::filesystem::copy_options();
- opts |= std::filesystem::copy_options::overwrite_existing;
- opts |= std::filesystem::copy_options::recursive;
- std::error_code error;
- std::filesystem::copy("Resources/Fonts", tastt_fonts_path, opts, error);
- if (error.value()) {
- Log(out, "failed!\n");
- Log(out, "Error: {} ({})\n", error.message(), error.value());
- return false;
- }
- Log(out, "success!\n");
- }
- if (config.bytes_per_char == 1) {
- Log(out, "Applying texture memory optimization for English speakers... ");
- std::error_code err;
- for (int i = 0; i < 8; i++) {
- std::filesystem::remove(tastt_fonts_path / ("Bitmaps/font-" + std::to_string(i) + ".png"), err);
- if (err.value()) {
- Log(out, "failed!\n");
- Log(out, "Error removing unicode texture: {} ({})\n", err.message(), err.value());
- return false;
- }
- std::filesystem::remove(tastt_fonts_path / ("Bitmaps/font-" + std::to_string(i) + ".png.meta"), err);
- if (err.value()) {
- Log(out, "failed!\n");
- Log(out, "Error removing unicode texture: {} ({})\n", err.message(), err.value());
- return false;
- }
- }
- std::filesystem::remove(tastt_fonts_path / "Bitmaps/emotes.png", err);
- if (err.value()) {
- Log(out, "failed!\n");
- Log(out, "Error removing emotes texture: {} ({})\n", err.message(), err.value());
- return false;
- }
-
- Log(out, "success!\n");
- }
- else {
- std::error_code err;
- std::filesystem::remove(tastt_fonts_path / ("Bitmaps/font-ascii.png"), err);
- if (err.value()) {
- Log(out, "failed!\n");
- Log(out, "Error removing unicode texture: {} ({})\n", err.message(), err.value());
- return false;
- }
- std::filesystem::remove(tastt_fonts_path / ("Bitmaps/font-ascii.png.meta"), err);
- if (err.value()) {
- Log(out, "failed!\n");
- Log(out, "Error removing unicode texture: {} ({})\n", err.message(), err.value());
- return false;
- }
- }
- {
- Log(out, "Setting texture sizes... ");
- std::filesystem::path fonts_dir = tastt_fonts_path / "Bitmaps";
- for (const auto& entry : std::filesystem::recursive_directory_iterator(fonts_dir)) {
- Log(out, "Entry get {}\n", entry.path().string());
- Log(out, "Setting size to {}\n", config.texture_sz);
- if (entry.is_regular_file() && entry.path().extension() == ".meta") {
- if (!InvokeWithArgs(AppConfig(nullptr), { set_texture_sz_path,
- "--meta", Quote(entry.path().string()),
- "--size", std::to_string(config.texture_sz)},
- "Failed to set texture size", out)) {
- return false;
- }
- }
- }
- Log(out, "succes!\n");
- }
- {
- Log(out, "Generating guid.map... ");
- if (!InvokeWithArgs(AppConfig(nullptr), { libunity_path, "guid_map",
- "--project_root", Quote(config.assets_path),
- "--save_to", Quote(guid_map_path), },
- "Failed to generate guid.map", out)) {
- return false;
- }
- }
- {
- Log(out, "Generating animations... ");
- if (!InvokeWithArgs(AppConfig(nullptr), { libtastt_path, "gen_anims",
- "--gen_anim_dir", Quote(tastt_animations_path),
- "--guid_map", Quote(guid_map_path),
- "--config", Quote(config_path) },
- "Failed to generate animations", out)) {
- return false;
- }
- }
- {
- Log(out, "Generating FX layer... ");
- if (!InvokeWithArgs(AppConfig(nullptr), { libtastt_path, "gen_fx",
- "--fx_dest", Quote(tastt_fx0_path),
- "--gen_anim_dir", Quote(tastt_animations_path),
- "--guid_map", Quote(guid_map_path),
- "--config", Quote(config_path) },
- "Failed to generate FX layer", out)) {
- return false;
- }
- }
- {
- Log(out, "Merging with user animator... ");
- if (!InvokeWithArgs(AppConfig(nullptr), { libunity_path, "merge",
- "--fx0", Quote(config.fx_path),
- "--fx1", Quote(tastt_fx0_path),
- "--fx_dest", Quote(tastt_fx1_path), },
- "Failed to merge animators", out)) {
- return false;
- }
- }
- {
- Log(out, "Setting noop animations... ");
- if (!InvokeWithArgs(AppConfig(nullptr), { libunity_path, "set_noop_anim",
- "--fx0", Quote(tastt_fx1_path),
- "--fx_dest", Quote(tastt_animator_path),
- "--gen_anim_dir", Quote(tastt_animations_path),
- "--guid_map", Quote(guid_map_path), },
- "Failed to set noop animations", out)) {
- return false;
- }
- }
- {
- Log(out, "Generating avatar parameters... ");
- if (!InvokeWithArgs(AppConfig(nullptr), { generate_params_path,
- "--old_params", Quote(config.params_path),
- "--new_params", Quote(tastt_params_path),
- "--config", Quote(config_path) },
- "Failed to generate avatar parameters", out)) {
- return false;
- }
- }
- {
- Log(out, "Generating avatar menu... ");
- if (!InvokeWithArgs(AppConfig(nullptr), { generate_menu_path,
- "--old_menu", Quote(config.menu_path),
- "--new_menu", Quote(tastt_menu_path) },
- "Failed to generate avatar menu", out)) {
- return false;
- }
- }
- if (config.clear_osc) {
- std::filesystem::path osc_path = "C:/Users";
- osc_path /= wxGetUserName().ToStdString();
- osc_path /= "AppData/LocalLow/VRChat/vrchat/OSC";
- osc_path = osc_path.lexically_normal();
- Log(out, "OSC configs are stored at {}\n", osc_path.string());
- Log(out, "Clearing OSC configs... ");
-
- if (std::filesystem::is_directory(osc_path)) {
- std::error_code err;
- if (std::filesystem::remove_all(osc_path, err)) {
- Log(out, "success!\n");
- }
- else {
- Log(out, "failed!\n");
- Log(out, "Error: {} ({})\n", err.message(), err.value());
- }
- }
- else {
- Log(out, "OSC configs do not exist at {}, assuming already "
- "cleared!\n", osc_path.string());
- }
- }
-
- Log(out, "Done!\n");
- return true;
-}
-
diff --git a/GUI/GUI/GUI/PythonWrapper.h b/GUI/GUI/GUI/PythonWrapper.h
deleted file mode 100644
index b5fe518..0000000
--- a/GUI/GUI/GUI/PythonWrapper.h
+++ /dev/null
@@ -1,98 +0,0 @@
-#pragma once
-
-#include <wx/wxprec.h>
-
-#ifndef WX_PRECOMP
-#include <wx/wx.h>
-#endif
-
-#include <wx/process.h>
-
-#include "Config.h"
-
-#include <filesystem>
-#include <future>
-#include <string>
-#include <vector>
-
-/*
- * This class wraps interactions with the embedded Python interpreter.
-*/
-namespace PythonWrapper
-{
- // Invoke the interpreter asynchronously with the given arguments.
- // When the process exits, `exit_callback` runs.
- // The caller is responsible for deleting wxProcess.
- wxProcess* InvokeAsyncWithArgs(std::vector<std::string>&& args,
- std::function<void(wxProcess* proc, int ret)>&& exit_callback);
-
- // Invoke a command on the shell with arguments.
- // On error, sets `out` to an error message and returns false.
- bool InvokeCommandWithArgs(
- const AppConfig& app_c,
- const std::string& cmd,
- std::vector<std::string>&& args,
- std::string* py_stdout,
- std::string* py_stderr = NULL);
-
- // Invoke a command on the shell with arguments.
- // On error, sets `out` to an error message and returns false.
- bool InvokeCommandWithArgs(
- const AppConfig& app_c,
- const std::string& cmd,
- std::vector<std::string>&& args,
- const std::function<void(const std::string& out, const std::string& err)>&& out_cb,
- const std::function<void(std::string& in)>&& in_cb = [](std::string&) {},
- const std::function<bool()>&& run_cb = []() { return true; });
-
- // Invoke the interpreter with arguments.
- // On error, sets `out` to an error message and returns false.
- bool InvokeWithArgs(
- const AppConfig& app_c,
- std::vector<std::string>&& args, std::string* py_stdout,
- std::string* py_stderr = NULL);
-
- bool InvokeWithArgs(
- const AppConfig& app_c,
- std::vector<std::string>&& args,
- const std::string&& err_msg, wxTextCtrl* out);
-
- bool InvokeWithArgs(
- const AppConfig& app_c,
- std::vector<std::string>&& args,
- const std::function<void(const std::string& out, const std::string& err)>&& out_cb,
- const std::function<void(std::string& in)>&& in_cb = [](std::string&) {},
- const std::function<bool()>&& run_cb = []() { return true; });
-
- // Execute python --version.
- std::string GetVersion();
-
- // Executes dump_mic_devices.py.
- std::string DumpMics();
-
- // Execute get-pip.py.
- bool InstallPip(
- const std::function<void(const std::string& out, const std::string& err)>&& out_cb,
- const std::function<void(std::string& in)>&& in_cb = [](std::string&) {},
- const std::function<bool()>&& run_cb = []() { return true; });
- bool InstallPip(std::string* out, std::string* err = nullptr);
-
- std::future<bool> StartApp(
- const AppConfig& app_c,
- const std::string& config_path,
- wxTextCtrl *out,
- const std::function<void(const std::string& out, const std::string& err)>&& out_cb,
- const std::function<void(std::string& in)>&& in_cb = [](std::string&) {},
- const std::function<bool()>&& run_cb = []() { return true; },
- const std::function<void()>&& prestart_cb = []() {});
-
- bool GenerateAnimator(
- const AppConfig& config,
- const std::string& config_path,
- const std::string& unity_animator_generated_dir,
- const std::string& unity_animator_generated_name,
- const std::string& unity_parameters_generated_name,
- const std::string& unity_menu_generated_name,
- wxTextCtrl* out);
-};
-
diff --git a/GUI/GUI/GUI/Resources/logo.ico b/GUI/GUI/GUI/Resources/logo.ico
deleted file mode 100644
index aca1b5a..0000000
--- a/GUI/GUI/GUI/Resources/logo.ico
+++ /dev/null
Binary files differ
diff --git a/GUI/GUI/GUI/ScopeGuard.h b/GUI/GUI/GUI/ScopeGuard.h
deleted file mode 100644
index 601061c..0000000
--- a/GUI/GUI/GUI/ScopeGuard.h
+++ /dev/null
@@ -1,32 +0,0 @@
-#pragma once
-
-#include <functional>
-#include <utility>
-
-class ScopeGuard {
-public:
- ScopeGuard(std::function<void()>&& cb) : cb_(std::move(cb)), active_(true) {}
- ~ScopeGuard() {
- Invoke();
- }
-
- ScopeGuard() = delete;
- ScopeGuard(ScopeGuard&) = delete;
- ScopeGuard(const ScopeGuard&) = delete;
- ScopeGuard(ScopeGuard&&) = delete;
- ScopeGuard& operator=(ScopeGuard&) = delete;
- ScopeGuard& operator=(const ScopeGuard&) = delete;
-
- void Cancel() { active_ = false; }
-
- void Invoke() {
- if (active_) {
- cb_();
- active_ = false;
- }
- }
-
-private:
- const std::function<void()> cb_;
- bool active_;
-};
diff --git a/GUI/GUI/GUI/Transcript.cpp b/GUI/GUI/GUI/Transcript.cpp
deleted file mode 100644
index 11bab31..0000000
--- a/GUI/GUI/GUI/Transcript.cpp
+++ /dev/null
@@ -1,44 +0,0 @@
-#include "Transcript.h"
-
-void Transcript::Append(std::string&& segment) {
- std::scoped_lock l(mu_);
- segments_.push_back(std::move(segment));
-}
-
-void Transcript::Set(std::string&& segment) {
- std::scoped_lock l(mu_);
- segments_.clear();
- segments_.push_back(std::move(segment));
-}
-
-void Transcript::SetPreview(std::string&& segment) {
- std::scoped_lock l(mu_);
- previews_.clear();
- previews_.push_back(std::move(segment));
-}
-
-void Transcript::Clear() {
- std::scoped_lock l(mu_);
- segments_.clear();
- previews_.clear();
-}
-
-std::vector<std::string> Transcript::Get() {
- std::scoped_lock l(mu_);
- return segments_;
-}
-
-std::vector<std::string> Transcript::GetPreview() {
- std::scoped_lock l(mu_);
- return previews_;
-}
-
-void Transcript::SetFinalized(bool is_finalized) {
- // Accessing anything smaller than a word is always atomic.
- is_finalized_ = is_finalized;
-}
-
-bool Transcript::IsFinalized() {
- // Accessing anything smaller than a word is always atomic.
- return is_finalized_;
-}
diff --git a/GUI/GUI/GUI/Transcript.h b/GUI/GUI/GUI/Transcript.h
deleted file mode 100644
index 1c18afe..0000000
--- a/GUI/GUI/GUI/Transcript.h
+++ /dev/null
@@ -1,31 +0,0 @@
-#pragma once
-
-#include <mutex>
-#include <string>
-#include <vector>
-
-// Simple thread-safe class to share transcription data between layers.
-class Transcript {
-public:
- Transcript() = default;
-
- void Append(std::string&& segment);
- void Set(std::string&& segment);
- void SetPreview(std::string&& segment);
- void Clear();
-
- // Indicate whether the transcript is "finalized", i.e. the transcription
- // engine has committed the entirety of the transcript and will no longer
- // change it.
- void SetFinalized(bool is_finalized);
-
- std::vector<std::string> Get();
- std::vector<std::string> GetPreview();
- bool IsFinalized();
-
-private:
- std::mutex mu_;
- std::vector<std::string> segments_;
- std::vector<std::string> previews_;
- bool is_finalized_{ false };
-};
diff --git a/GUI/GUI/GUI/Util.h b/GUI/GUI/GUI/Util.h
deleted file mode 100644
index 594972e..0000000
--- a/GUI/GUI/GUI/Util.h
+++ /dev/null
@@ -1,20 +0,0 @@
-#pragma once
-
-#include <filesystem>
-#include <string>
-
-// Wrap the filesystem path in quotes, escaping intermediate quotes with \\.
-inline std::string Quote(const std::filesystem::path& p) {
- std::ostringstream oss;
- oss << std::quoted(p.string());
- return oss.str();
-}
-
-inline std::string Unquote(const std::string& s) {
- std::istringstream iss(s);
-
- std::string result;
- iss >> quoted(result);
-
- return result;
-}
diff --git a/GUI/GUI/GUI/WebCommon.h b/GUI/GUI/GUI/WebCommon.h
deleted file mode 100644
index 6e18bb2..0000000
--- a/GUI/GUI/GUI/WebCommon.h
+++ /dev/null
@@ -1,8 +0,0 @@
-#pragma once
-
-namespace WebServer {
- enum ContentType {
- HTML,
- JSON,
- };
-};
diff --git a/GUI/GUI/GUI/WebServer.cpp b/GUI/GUI/GUI/WebServer.cpp
deleted file mode 100644
index 2b589c6..0000000
--- a/GUI/GUI/GUI/WebServer.cpp
+++ /dev/null
@@ -1,217 +0,0 @@
-#include <wx/wxprec.h>
-
-#ifndef WX_PRECOMP
-#include <wx/wx.h>
-#endif
-
-#include "HTTPMapper.h"
-#include "HTTPParser.h"
-#include "ScopeGuard.h"
-#include "WebServer.h"
-
-#include <stdint.h>
-#include <WinSock2.h>
-#include <ws2tcpip.h>
-
-using ::Logging::Log;
-
-namespace WebServer {
- WebServer::WebServer(wxTextCtrl* out, uint16_t port)
- : out_(out), port_(port)
- {
- default_handler_ =
- [](int& status_code, std::string& payload,
- ContentType& type) -> void {
- status_code = 404;
- payload = "404: No route to URI";
- type = HTML;
- };
- }
-
- bool WebServer::RegisterPathHandler(const std::string& method,
- const std::string& path, handler_t&& handler) {
- dispatch_key_t key = GetDispatchKey(method, path);
- if (dispatch_map_.contains(key)) {
- Log(out_, "Failed to register path handler at {} {}: "
- "Handler already exists!\n", method, path);
- return false;
- }
-
- dispatch_map_[key] = std::move(handler);
- return true;
- }
-
- void WebServer::RegisterDefaultHandler(handler_t&& handler) {
- default_handler_ = std::move(handler);
- }
-
- bool WebServer::Run(volatile bool* run) {
- WSADATA wsaData;
- int result = WSAStartup(/*version=*/MAKEWORD(2, 2), &wsaData);
- if (result) {
- Log(out_, "Failed to start winsock: {}\n", result);
- return false;
- }
- ScopeGuard wsa_cleanup([]() { WSACleanup(); });
-
- SOCKET sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
- if (sock == INVALID_SOCKET) {
- Log(out_, "Failed to create socket: {}\n", WSAGetLastError());
- return false;
- }
- ScopeGuard sock_cleanup([sock]() { closesocket(sock); });
-
- sockaddr_in saddr;
- saddr.sin_family = AF_INET;
- saddr.sin_addr.s_addr = INADDR_ANY;
- saddr.sin_port = htons(port_);
- if (bind(sock, (sockaddr*)&saddr, sizeof(saddr)) == SOCKET_ERROR) {
- Log(out_, "Failed to bind to port {}: {}\n", port_, WSAGetLastError());
- return false;
- }
-
- int optval = 1;
- if (setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, (char*)&optval, sizeof(optval)) == SOCKET_ERROR) {
- Log(out_, "Failed to setsockopt(SO_REUSEADDR): {}", WSAGetLastError());
- return 1;
- }
-
- u_long enable_nonblock = 1;
- if (ioctlsocket(sock, FIONBIO, &enable_nonblock) == SOCKET_ERROR) {
- Log(out_, "Failed to enable non-blocking socket: {}\n", WSAGetLastError());
- return false;
- }
-
- if (listen(sock, SOMAXCONN) == SOCKET_ERROR) {
- Log(out_, "Failed to listen on port {}: {}\n", port_, WSAGetLastError());
- return false;
- }
-
- Log(out_, "Server running on port {}\n", port_);
-
- sockaddr_in peer_addr;
- int accept_cnt = 0;
- while (*run) {
- int peer_addr_sz = sizeof(peer_addr);
- SOCKET csock = accept(sock, (sockaddr*)&peer_addr, &peer_addr_sz);
- if (csock == INVALID_SOCKET) {
- int err = WSAGetLastError();
- if (err == WSAEWOULDBLOCK) {
- std::this_thread::sleep_for(std::chrono::milliseconds(10));
- continue;
- }
- Log(out_, "Accept failed: {}\n", WSAGetLastError());
- return false;
- }
-
- // Periodically cull dead connections to prevent runaway memory usage.
- ++accept_cnt;
- if (accept_cnt % 10 == 0) {
- std::vector<std::future<void>> alive_conn;
- for (int i = 0; i < connections_.size(); i++) {
- if (connections_[i].valid()) {
- continue;
- }
- alive_conn.push_back(std::move(connections_[i]));
- }
- //Log(out_, "Culled {} dead connections\n", connections_.size() - alive_conn.size());
- connections_ = std::move(alive_conn);
- accept_cnt = 0; // Prevent overflow
- }
-
- wxTextCtrl* out = out_;
- const auto& dispatch_map = dispatch_map_;
- const auto& default_handler = default_handler_;
- connections_.push_back(std::async(std::launch::async,
- [csock, peer_addr, out, run, dispatch_map, default_handler]() -> void {
- ScopeGuard csock_cleanup([csock]() { closesocket(csock); });
- char peer_ip_str[INET_ADDRSTRLEN]{};
- inet_ntop(AF_INET, &peer_addr.sin_addr, peer_ip_str, sizeof(peer_ip_str));
- //Log(out, "Connection get: peer: {}:{}\n", peer_ip_str, ntohs(peer_addr.sin_port));
-
- std::string buf(4096 * 16, 0);
- int cur_bytes_read = 0;
- int sum_bytes_read = 0;
-
- // Drain socket until we see a valid HTTP message.
- while (*run) {
- cur_bytes_read = recv(csock, buf.data() + sum_bytes_read,
- buf.size() - (1 + sum_bytes_read), /*flags=*/0);
- if (cur_bytes_read == SOCKET_ERROR) {
- if (WSAGetLastError() == WSAEWOULDBLOCK) {
- // Client may try to keep the connection open,
- // so see if there's a complete request in the
- // buffer. If so, terminate the recv loop.
- HTTPParser p;
- std::string err;
- if (p.Parse(buf, err)) {
- // In general we should verify that we got a
- // full message, but since we only need to
- // support GET, this is unnecessary.
- cur_bytes_read = 0;
- break;
- }
- std::this_thread::sleep_for(std::chrono::milliseconds(10));
- continue;
- }
- break;
- }
- sum_bytes_read += cur_bytes_read;
- if (cur_bytes_read == 0) {
- break;
- }
- }
- if (cur_bytes_read == SOCKET_ERROR) {
- Log(out, "Failed to read client socket: {}\n", WSAGetLastError());
- return;
- }
- // Edge case: Server was stopped in the middle of serving a request.
- if (!*run) {
- return;
- }
- buf.resize(sum_bytes_read);
-
- // Parse HTTP. Expect this to succeed, since we only exit the loop once the
- // request parses.
- // TODO(yum) this repeats work! The loop already parsed the request.
- HTTPParser p;
- std::string err;
- if (!p.Parse(buf, err)) {
- Log(out, "Failed to parse client request: {}\n", err);
- Log(out, "Offending request:\n{}\n", buf);
- return;
- }
-
- // Find the dispatch handler for the requested method and path.
- dispatch_key_t dispatch_key = GetDispatchKey(p.GetMethod(), p.GetPath());
- auto iter = dispatch_map.find(dispatch_key);
- handler_t handler;
- if (iter == dispatch_map.end()) {
- handler = default_handler;
- } else {
- handler = iter->second;
- }
-
- // Generate a response.
- int status_code;
- std::string payload;
- ContentType type;
- handler(status_code, payload, type);
- std::string response = HTTPMapper().Map(status_code, payload, type);
-
- // Send the response.
- if (send(csock, response.data(), response.size(), /*flags=*/0) == SOCKET_ERROR) {
- Log(out, "Failed to send response to client: {}\n", WSAGetLastError());
- return;
- }
-
- // Implicitly close the connection by exiting scope. We
- // completely ignore keep-alive requests for now. Browsers
- // should handle this well, there are many reasons why
- // keep-alive requests may be ignored, such as transient
- // network failures.
- }));
- }
- return true;
- }
-}
diff --git a/GUI/GUI/GUI/WebServer.h b/GUI/GUI/GUI/WebServer.h
deleted file mode 100644
index e476ba9..0000000
--- a/GUI/GUI/GUI/WebServer.h
+++ /dev/null
@@ -1,56 +0,0 @@
-#pragma once
-
-#include <wx/wxprec.h>
-
-#ifndef WX_PRECOMP
-#include <wx/wx.h>
-#endif
-
-#include <stdint.h>
-
-#include <functional>
-#include <future>
-#include <map>
-#include <mutex>
-#include <string>
-#include <vector>
-
-#include "Logging.h"
-#include "WebCommon.h"
-
-namespace WebServer {
- class WebServer {
- public:
- WebServer(wxTextCtrl *out, std::uint16_t port);
-
- typedef std::function<void(
- int& status_code,
- std::string& payload,
- ContentType& type)> handler_t;
-
- bool RegisterPathHandler(const std::string& method,
- const std::string& path, handler_t&& handler);
- void RegisterDefaultHandler(handler_t&& handler);
-
- bool Run(volatile bool* run);
-
- private:
- // Dispatch requests by mapping from (method, path) to handler.
- // Dispatch key is (method, path) in that order.
- typedef std::tuple<std::string, std::string> dispatch_key_t;
- static inline dispatch_key_t GetDispatchKey(const std::string& method, const std::string& path)
- {
- return dispatch_key_t(method, path);
- }
-
- typedef std::map<dispatch_key_t, handler_t> dispatch_map_t;
- dispatch_map_t dispatch_map_;
- handler_t default_handler_;
-
- wxTextCtrl* const out_;
- const uint16_t port_;
-
- std::vector<std::future<void>> connections_;
- };
-}
-
diff --git a/GUI/GUI/GUI/main.cpp b/GUI/GUI/GUI/main.cpp
deleted file mode 100644
index d9303f5..0000000
--- a/GUI/GUI/GUI/main.cpp
+++ /dev/null
@@ -1,10 +0,0 @@
-#include "App.h"
-
-#include <wx/wxprec.h>
-
-#ifndef WX_PRECOMP
-#include <wx/wx.h>
-#endif
-
-wxIMPLEMENT_APP(MyApp);
-
diff --git a/GUI/GUI/GUI/resource.h b/GUI/GUI/GUI/resource.h
deleted file mode 100644
index f10e004..0000000
--- a/GUI/GUI/GUI/resource.h
+++ /dev/null
@@ -1,15 +0,0 @@
-//{{NO_DEPENDENCIES}}
-// Microsoft Visual C++ generated include file.
-// Used by GUI.rc
-//
-
-// Next default values for new objects
-//
-#ifdef APSTUDIO_INVOKED
-#ifndef APSTUDIO_READONLY_SYMBOLS
-#define _APS_NEXT_RESOURCE_VALUE 106
-#define _APS_NEXT_COMMAND_VALUE 40001
-#define _APS_NEXT_CONTROL_VALUE 1001
-#define _APS_NEXT_SYMED_VALUE 101
-#endif
-#endif
diff --git a/GUI/Libraries/.gitignore b/GUI/Libraries/.gitignore
deleted file mode 100644
index 26be5d9..0000000
--- a/GUI/Libraries/.gitignore
+++ /dev/null
@@ -1,5 +0,0 @@
-# Don't check in anything we fetch
-wx
-rapidyaml
-whisper
-oatpp
diff --git a/GUI/Libraries/fetch.ps1 b/GUI/Libraries/fetch.ps1
deleted file mode 100644
index f558d3f..0000000
--- a/GUI/Libraries/fetch.ps1
+++ /dev/null
@@ -1,31 +0,0 @@
-param(
- [switch]$overwrite = $False,
- [string]$release = "Release"
-)
-
-echo "Overwrite: $overwrite"
-echo "Release: $release"
-
-Set-PSDebug -trace 0
-
-$WX_3_2_1_URL = "https://github.com/wxWidgets/wxWidgets/releases/download/v3.2.1/wxWidgets-3.2.1.zip"
-$WX_URL = $WX_3_2_1_URL
-$WX_FILE = $(Split-Path -Path $WX_URL -Leaf)
-
-pushd $PSScriptRoot
-
-# WX
-if ((Test-Path wx) -And ($overwrite)) {
- rm -Recurse wx
-}
-
-if (-Not (Test-Path wx)) {
- mkdir wx
- pushd wx > $null
- Invoke-WebRequest $WX_URL -OutFile $WX_FILE
- Expand-Archive $WX_FILE -DestinationPath .
- popd > $null
-}
-
-popd > $null # $PSScriptRoot
-
diff --git a/GUI/README.md b/GUI/README.md
deleted file mode 100644
index 39d3292..0000000
--- a/GUI/README.md
+++ /dev/null
@@ -1,93 +0,0 @@
-## Build instructions
-
-0. Install build dependencies: cmake, git, python3, Visual Studio Community
- 2022
- 0.0. When installing Visual Studio, make sure `Desktop development with C++`
- is selected.
- 0.1. Make sure Windows is using Python 3.10.9. From Powershell, the command
- `python.exe --version` should show that it's using 3.10.9. Direct link:
- https://www.python.org/ftp/python/3.10.9/python-3.10.9-amd64.exe
-1. Open Powershell.
-2. Make sure you've downloaded submodules:
-```
-$ git submodule init
-$ git submodule update
-```
-3. Execute Libraries/fetch.ps1. This will take 2-3 minutes.
- 3.0. If you can't run the script, run `Set-ExecutionPolicyPolicy
- Unrestricted` in an admin instance of powershell. Heed the warning,
- this is a security risk! Never run code from someone you don't trust
- unless you've carefully audited it.
-4. Open `Libraries/wx/build/msw/wx_vc17.sln` with Visual Studio 2022.
-5. Select every project in the Solution Explorer except for `_custom_build`.
-6. Right click, select Properties, go to C/C++, Code Generation, and set
- Runtime Library to Multi-threaded (/MT). Make sure this applies to the
- configuration x64/Release. Click Apply.
-7. Build x64/Release.
- 1. The build configuration is in the top. By default it's probably Debug/x64.
- 2. To build: ctrl+shift+B
- 3. If you saw an error in 7.1, rerun Libraries/fetch.ps1.
-8. Open GUI/GUI.sln with Visual Studio 2022.
-9. Build x64/Release.
-10. Run package.ps1 from powershell.
- 10.0. If you're not creating a redistributable release, use this command
- instead (it's way faster): `package.ps1 -skip_zip`.
- 10.1. When PortableGit creates a window, wait for it to complete, then press
- then press enter in Powershell.
- 10.2. The first time you run this it'll take a long time since it has to
- fetch a few large packages. Subsequent invocations will be much faster
- since it won't reacquire anything already downloaded. On my connection,
- it took 90 minutes to finish downloading, mostly because Google Drive
- downloads are slower than dirt.
-
-## High level design
-
-* The GUI is written using wxWidgets.
-* Python executes core business logic. With libraries like faster\_whisper
- available, this provides a nice balance between flexibility and performance.
-* To skirt licensing complexity, we distribute an embedded python
- that's hacked up to allow installing packages via pip. We use this
- to install packages at runtime (like a net installer), so we don't
- actually distribute all our transitive dependencies. This also keeps
- the initial package size small.
-
-## C++ Style
-
-Follow the Google C++ style guide. This is not absolutely strict but
-it will be used to settle arguments.
-
-https://google.github.io/styleguide/cppguide.html
-
-This should get you 80% of the way there:
-
-* When in doubt, use K&R style
-* 2 space indents
-* Class members `look_like_this_`
-* Functions and methods `LookLikeThis()`
-* Local variables `look_like_this`
-* Global constexprs `kLookLikeThis`
-
-Consistent style reduces cognitive burden. Follow it for the benefit of
-your peers.
-
-## How the embedded python environment works
-
-I'm distributing an embeddable version of python from the official
-python website. It's modified so that packages are installed under
-Python/Lib/site-packages, instead of the usual filesystem paths.
-
-To bootstrap pip & fetch the dependencies needed:
-
-```
-cd TaSTT
-./Resources/Python/python.exe Resources/Python/get-pip.py
-./Resources/Python/python.exe -m pip install $YOUR\_PACKAGE\_HERE
-```
-
-The `future` package imports extra modules, and the embedded python
-search path needs to be told where that is. For that reason, we also
-redistribute the `future` package in source format.
-
-This is logically what the GUI does internally when it creates the
-python environment.
-
diff --git a/GUI/package.ps1 b/GUI/package.ps1
deleted file mode 100644
index 697f1a2..0000000
--- a/GUI/package.ps1
+++ /dev/null
@@ -1,150 +0,0 @@
-param(
- [switch]$skip_zip = $false,
- [string]$release = "Release",
- [string]$install_pip = $true
-)
-
-echo "Skip zip: $skip_zip"
-echo "Release: $release"
-echo "Install pip: $install_pip"
-
-$PSDefaultParameterValues['Out-File:Encoding'] = 'utf8'
-
-$install_dir = "TaSTT"
-
-if (Test-Path $install_dir) {
- rm -Recurse -Force $install_dir
-}
-
-$py_dir = "Python"
-
-if (Test-Path $py_dir) {
- rm -Recurse $py_dir
-}
-if (-Not (Test-Path $py_dir)) {
- echo "Fetching python"
-
- $PYTHON_3_10_9_URL = "https://www.python.org/ftp/python/3.10.9/python-3.10.9-embed-amd64.zip"
- $PYTHON_URL = $PYTHON_3_10_9_URL
- $PYTHON_FILE = $(Split-Path -Path $PYTHON_URL -Leaf)
-
- if (-Not (Test-Path $PYTHON_FILE)) {
- Invoke-WebRequest $PYTHON_URL -OutFile $PYTHON_FILE
- }
-
- mkdir Python
- Expand-Archive $PYTHON_FILE -DestinationPath Python
-
- echo "../Scripts" >> Python/python310._pth
- echo "import site" >> Python/python310._pth
-}
-
-$pip_path = "$py_dir/get-pip.py"
-
-if (Test-Path $pip_path) {
- rm -Force $pip_path
-}
-
-if (-Not (Test-Path $pip_path)) {
- echo "Fetching pip"
-
- $PIP_URL = "https://bootstrap.pypa.io/get-pip.py"
- $PIP_FILE = $(Split-Path -Path $PIP_URL -Leaf)
-
- if (-Not (Test-Path $PIP_FILE)) {
- Invoke-WebRequest $PIP_URL -OutFile $PIP_FILE
- }
-
- mv $PIP_FILE $pip_path
-}
-
-if ($install_pip) {
- ./Python/python.exe Python/get-pip.py
-
- echo "Installing future"
- echo "Assuming host has python 3.10.9 installed" # TODO test for this
- python -m pip install future==0.18.2 --target Python/Lib/site-packages
-}
-
-$git_dir = "PortableGit"
-
-if (-Not (Test-Path $git_dir)) {
- echo "Fetching PortableGit"
-
- # When it's time to update this, get the latest version from here:
- # https://git-scm.com/download/win
- $GIT_2_39_0_URL = "https://github.com/git-for-windows/git/releases/download/v2.39.0.windows.2/PortableGit-2.39.0.2-64-bit.7z.exe"
- $GIT_URL = $GIT_2_39_0_URL
- $GIT_FILE = $(Split-Path -Path $GIT_URL -Leaf)
-
- if (-Not (Test-Path $GIT_FILE)) {
- Invoke-WebRequest $GIT_URL -OutFile $GIT_FILE
- }
- & "./$GIT_FILE"
-
- Read-Host -Prompt "Press enter once PortableGit is installed at $pwd\PortableGit"
-}
-
-if (-Not (Test-Path UwwwuPP)) {
- git clone https://github.com/yum-food/UwwwuPP
- pushd UwwwuPP > $null
- git submodule update --init --recursive
-
- mkdir build
- pushd build > $null
-
- cmake.exe ..
- cmake.exe --build .
-
- popd > $null
- popd > $null
-}
-
-if (-Not (Test-Path Profanity)) {
- mkdir Profanity
- pushd Profanity > $null
-
- $repo = "List-of-Dirty-Naughty-Obscene-and-Otherwise-Bad-Words"
- git clone https://github.com/LDNOOBW/$repo
-
- mkdir Profanity
- cp $repo/LICENSE Profanity/
- cp $repo/en Profanity/
-
- echo "Source: https://github.com/LDNOOBW/List-of-Dirty-Naughty-Obscene-and-Otherwise-Bad-Words" > Profanity/AUTHOR
-
- popd > $null
-}
-
-if (-Not (Test-Path "silero-vad")) {
- git clone "https://github.com/snakers4/silero-vad"
-}
-
-mkdir $install_dir > $null
-mkdir $install_dir/Resources > $null
-cp -Recurse ../Animations TaSTT/Resources/Animations
-mkdir TaSTT/Resources/Fonts
-cp -Recurse ../Fonts/Bitmaps TaSTT/Resources/Fonts/Bitmaps
-cp -Recurse ../Fonts/Emotes TaSTT/Resources/Fonts/Emotes
-cp -Recurse Python TaSTT/Resources/Python
-cp -Recurse PortableGit TaSTT/Resources/PortableGit
-cp -Recurse ../Scripts TaSTT/Resources/Scripts
-mkdir TaSTT/Resources/Images
-cp ../Images/logo*.png TaSTT/Resources/Images/
-cp -Recurse ../Shaders TaSTT/Resources/Shaders
-cp -Recurse ../Sounds TaSTT/Resources/Sounds
-cp -Recurse ../UnityAssets TaSTT/Resources/UnityAssets
-cp -Recurse ../BrowserSource TaSTT/Resources/BrowserSource
-cp GUI/x64/$release/GUI.exe TaSTT/TaSTT.exe
-mkdir TaSTT/Resources/Models
-cp "silero-vad/files/silero_vad.onnx" TaSTT/Resources/Models/
-cp "silero-vad/LICENSE" TaSTT/Resources/Models/silero_vad.onnx.LICENSE
-mkdir TaSTT/Resources/Uwu
-cp UwwwuPP/build/Src/Debug/Uwwwu.exe TaSTT/Resources/Uwu/
-cp UwwwuPP/LICENSE TaSTT/Resources/Uwu/
-cp -r Profanity/Profanity TaSTT/Resources/Profanity
-
-if (-Not $skip_zip) {
- Compress-Archive -Path "$install_dir" -DestinationPath "$install_dir.zip" -Force
-}
-
diff --git a/Images/four_bit_indexing.png b/Images/four_bit_indexing.png
deleted file mode 100644
index 11eb135..0000000
--- a/Images/four_bit_indexing.png
+++ /dev/null
Binary files differ
diff --git a/Images/logo.png b/Images/logo.png
deleted file mode 100644
index 4d86109..0000000
--- a/Images/logo.png
+++ /dev/null
Binary files differ
diff --git a/Images/logo_16x16.png b/Images/logo_16x16.png
deleted file mode 100644
index abdbe8a..0000000
--- a/Images/logo_16x16.png
+++ /dev/null
Binary files differ
diff --git a/Images/logo_32x32.png b/Images/logo_32x32.png
deleted file mode 100644
index d30f6fe..0000000
--- a/Images/logo_32x32.png
+++ /dev/null
Binary files differ
diff --git a/Images/speech_to_text_demo.gif b/Images/speech_to_text_demo.gif
deleted file mode 100644
index 661d80b..0000000
--- a/Images/speech_to_text_demo.gif
+++ /dev/null
Binary files differ
diff --git a/Images/tastt_anim.png b/Images/tastt_anim.png
deleted file mode 100644
index 2cd8612..0000000
--- a/Images/tastt_anim.png
+++ /dev/null
Binary files differ
diff --git a/Images/tastt_blend.png b/Images/tastt_blend.png
deleted file mode 100644
index 7373dfd..0000000
--- a/Images/tastt_blend.png
+++ /dev/null
Binary files differ
diff --git a/Scripts/.gitignore b/Scripts/.gitignore
deleted file mode 100644
index 3f2744f..0000000
--- a/Scripts/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-# Python generated files
-__pycache__
diff --git a/Scripts/app_config.py b/Scripts/app_config.py
deleted file mode 100644
index f911456..0000000
--- a/Scripts/app_config.py
+++ /dev/null
@@ -1,39 +0,0 @@
-import os
-import sys
-import typing
-
-def getConfig(path: str) -> typing.Dict[str, typing.Union[str, float, int, bool]]:
- # Helper functions to detect and convert the type
- def is_int(value: str) -> bool:
- try:
- int(value)
- return True
- except ValueError:
- return False
-
- def is_float(value: str) -> bool:
- try:
- float(value)
- return True
- except ValueError:
- return False
-
- def convert_value(key: str, value: str):
- if key.startswith(("enable_", "remove_", "use_", "clear_")):
- return bool(int(value))
- elif is_int(value):
- return int(value)
- elif is_float(value):
- return float(value)
- else:
- return value
-
- config = {}
- with open(path, 'r') as file:
- for line in file:
- key_value = line.strip().split(": ", maxsplit=1)
- key = key_value[0]
- value = key_value[1] if len(key_value) > 1 else ""
- config[key] = convert_value(key, value.strip())
- return config
-
diff --git a/Scripts/browser_src.py b/Scripts/browser_src.py
deleted file mode 100644
index 4ed3407..0000000
--- a/Scripts/browser_src.py
+++ /dev/null
@@ -1,138 +0,0 @@
-from transcribe_pipeline import StreamingPlugin, TranscriptCommit
-from urllib.parse import urlparse
-
-import copy
-import json
-import http.server
-import os
-import socketserver
-import threading
-import time
-import transcribe_pipeline
-import typing
-
-class HTTPServer:
- def __init__(self, port: int):
- self.port = port
- self.route_map = {}
- self.httpd = None
-
- def register_file_handler(self, http_method: str, path: str, file_path: str):
- print(f"File handler registered at {os.getcwd()}")
- def handler():
- if os.path.exists(file_path):
- with open(file_path, 'r', encoding='utf-8') as f:
- return 200, f.read().replace('%PORT%', str(self.port)), 'text/html'
- else:
- return 404, {'error': 'file not found'}, 'application/json'
- self.route_map[(http_method, path)] = handler
-
- def register_json_handler(self, http_method: str, path: str, handler):
- self.route_map[(http_method, path)] = handler
-
- def run(self):
- def handler(*args, **kwargs):
- MyHandler(http_server_instance=self, *args, **kwargs)
-
- with socketserver.TCPServer(("", self.port), handler) as httpd:
- self.httpd = httpd
- print(f"Webserver running at port {self.port}")
- httpd.serve_forever()
- print(f"Webserver exiting")
- self.httpd = None
-
- def stop(self):
- if self.httpd:
- self.httpd.shutdown()
-
-
-class MyHandler(http.server.BaseHTTPRequestHandler):
- def __init__(self, *args, http_server_instance=None, **kwargs):
- self.http_server_instance = http_server_instance
- super().__init__(*args, **kwargs)
-
- def log_message(self, format, *args):
- # TODO log if cfg["debug_mode_enabled"] is set
- return
-
- def do_GET(self):
- self.handle_request('GET')
-
- def handle_request(self, method: str):
- parsed_path = urlparse(self.path)
- if (method, parsed_path.path) in self.http_server_instance.route_map:
- status_code, response_content, content_type = \
- self.http_server_instance.route_map[(method, parsed_path.path)]()
- self.send_response(status_code)
- self.send_header('Content-Type', content_type)
- self.end_headers()
- if content_type == 'application/json':
- self.wfile.write(json.dumps(response_content).encode('utf-8'))
- else:
- self.wfile.write(response_content.encode('utf-8'))
- else:
- self.send_response(404)
- self.send_header('Content-Type', 'application/json')
- self.end_headers()
- self.wfile.write(json.dumps({'error': 'not found'}).encode('utf-8'))
-
-
-class BrowserSource(StreamingPlugin):
- def __init__(self, cfg: typing.Dict):
- port = cfg["browser_src_port"]
- print(f"Browser source running on port {port}")
- self.commits = []
- self.preview_commit = None
- self.http_server = HTTPServer(port)
- self.http_server.register_json_handler('GET', '/api/v0/transcript', self.get_transcript_json)
-
- index_html_path = os.path.join("Resources", "BrowserSource", "index.html")
- self.http_server.register_file_handler('GET', '/', index_html_path)
- self.http_server.register_file_handler('GET', '/index.html', index_html_path)
-
- # Start the HTTP server in a new thread
- self.server_thread = threading.Thread(target=self.run)
- self.server_thread.start()
-
- def transform(self, commit: TranscriptCommit) -> TranscriptCommit:
- original_commit = commit
- commit = copy.deepcopy(original_commit)
- del commit.audio
- if commit.delta:
- self.commits.append(commit)
- # Limit commits to last N.
- now = time.time()
- self.commits = [commit for commit in self.commits]
- max_commits = 10
- if len(self.commits) > max_commits:
- self.commits = self.commits[-int(max_commits/2):]
- self.preview_commit = commit
- return original_commit
-
- # return (http_code, body, content_type)
- def get_transcript_json(self) -> typing.Tuple[int, str, str]:
- processed_commits = [vars(commit) for commit in self.commits]
- transcript_data = {
- 'commits': processed_commits,
- 'preview': vars(self.preview_commit) if self.preview_commit else None,
- 'ts': time.time()
- }
- return 200, json.dumps(transcript_data), 'text/json'
-
- def run(self):
- self.http_server.run()
-
- def stop(self):
- self.http_server.stop()
- self.server_thread.join()
-
-
-# Example usage
-def my_callback() -> typing.Tuple[int, typing.Dict[str, str]]:
- return 200, {'message': 'Hello, world!'}, 'text/json'
-
-if __name__ == '__main__':
- server = HTTPServer(port=8080)
- server.register_json_handler('GET', '/api/v0/transcript', my_callback)
- server.run()
-
diff --git a/Scripts/cpp_transcribe.py b/Scripts/cpp_transcribe.py
deleted file mode 100644
index c499769..0000000
--- a/Scripts/cpp_transcribe.py
+++ /dev/null
@@ -1,197 +0,0 @@
-#!/usr/bin/env python3
-
-# The app loop does 2 things:
-# 1. Read lines from stdin and send them into the game via OSC.
-# 2. Write control info to stdout.
-# The app exits when stdin closes.
-
-from playsound import playsound
-
-import argparse
-import dataclasses
-import generate_utils
-import os
-import osc_ctrl
-import steamvr
-import sys
-import threading
-import time
-
-@dataclasses.dataclass
-class AudioState:
- text: str
- osc_state: osc_ctrl.OscState
- enable_local_beep: int
- use_builtin: int
- button: str
-
- send_transcript: bool
- run_app: bool
-
-def writeControlMessage(run: bool):
- msg = ""
- if run:
- msg += "1"
- else:
- msg += "0"
- print(f"{msg}")
-
-def readControllerInput(audio_state: AudioState):
- session = None
- first = True
- while session == None and audio_state.run_app == True:
- try:
- session = steamvr.SessionState()
- except:
- print("steamvr is off, no controller input", file=sys.stderr)
- session = None
- time.sleep(5)
-
- RECORD_STATE = 0
- PAUSE_STATE = 1
- state = PAUSE_STATE
- osc_ctrl.indicateSpeech(audio_state.osc_state.client, False)
- osc_ctrl.indicatePaging(audio_state.osc_state.client, False)
-
- hand_id = steamvr.hands[audio_state.button.split()[0]]
- button_id = steamvr.buttons[audio_state.button.split()[1]]
-
- last_rising = time.time()
- while audio_state.run_app == True:
- time.sleep(0.05)
-
- event = steamvr.pollButtonPress(session, hand_id=hand_id,
- button_id=button_id)
-
- if event == steamvr.EVENT_RISING_EDGE:
- last_rising = time.time()
- elif event == steamvr.EVENT_FALLING_EDGE:
- now = time.time()
- if now - last_rising > 0.3:
- # Long hold
- state = PAUSE_STATE
- if not audio_state.use_builtin:
- osc_ctrl.indicateSpeech(audio_state.osc_state.client, False)
- osc_ctrl.toggleBoard(audio_state.osc_state.client, False)
-
- osc_ctrl.send_transcript = False
- osc_ctrl.clear(audio_state.osc_state)
- else:
- # Short hold
- if state == RECORD_STATE:
- state = PAUSE_STATE
- if not audio_state.use_builtin:
- osc_ctrl.indicateSpeech(audio_state.osc_state.client, False)
- osc_ctrl.lockWorld(audio_state.osc_state.client, True)
-
- osc_ctrl.send_transcript = False
-
- if audio_state.enable_local_beep == 1:
- playsound(os.path.abspath("Resources/Sounds/Noise_Off_Quiet.wav"))
- elif state == PAUSE_STATE:
- state = RECORD_STATE
- if not audio_state.use_builtin:
- osc_ctrl.indicateSpeech(audio_state.osc_state.client, True)
- osc_ctrl.toggleBoard(audio_state.osc_state.client, True)
- osc_ctrl.lockWorld(audio_state.osc_state.client, False)
-
- osc_ctrl.send_transcript = True
- osc_ctrl.clear(audio_state.osc_state)
-
- audio_state.drop_transcription = True
- audio_state.audio_paused = False
-
- if audio_state.enable_local_beep == 1:
- playsound(os.path.abspath("Resources/Sounds/Noise_On_Quiet.wav"))
-
-def drainStdin(audio_state: AudioState):
- while True:
- try:
- line = input()
- except EOFError:
- # Invoking process closes the write end of their stdin to signal us
- # to exit.
- # TODO(yum) merge all threads
- audio_state.run_app = False
- return
- if len(line) > 0:
- print(f"stdin get: {line}", file=sys.stderr)
-
-def mainLoop(audio_state: AudioState):
- steamvr_input_thd = threading.Thread(target = readControllerInput,
- args = [audio_state])
- steamvr_input_thd.daemon = True
- steamvr_input_thd.start()
-
- drain_stdin_thd = threading.Thread(target = drainStdin,
- args = [audio_state])
- drain_stdin_thd.daemon = True
- drain_stdin_thd.start()
-
- writeControlMessage(False)
-
- while audio_state.run_app:
- time.sleep(0.01)
- writeControlMessage(audio_state.send_transcript)
-
-if __name__ == "__main__":
- print("args: {}".format(" ".join(sys.argv)), file=sys.stderr)
-
- # Set cwd to TaSTT/
- abspath = os.path.abspath(__file__)
- dname = os.path.dirname(abspath)
- dname = os.path.dirname(dname)
- dname = os.path.dirname(dname)
- os.chdir(dname)
- print(f"Set cwd to {os.getcwd()}", file=sys.stderr)
-
- parser = argparse.ArgumentParser()
- parser.add_argument("--bytes_per_char", type=str, help="The number of bytes to use to represent each character")
- parser.add_argument("--chars_per_sync", type=str, help="The number of characters to send on each sync event")
- parser.add_argument("--rows", type=int, help="The number of rows on the board")
- parser.add_argument("--cols", type=int, help="The number of columns on the board")
- parser.add_argument("--enable_local_beep", type=int,
- help=("Whether to play a local auditory indicator when "
- "transcription starts/stops."))
- parser.add_argument("--use_builtin", type=int,
- help=("If set to 1, use the text box built into the game."))
- parser.add_argument("--button", type=str,
- help=("The controller button used to start/stop transcription. "
- "E.g. \"left joystick\""))
- args = parser.parse_args()
-
- if args.bytes_per_char is None or args.chars_per_sync is None:
- print("--bytes_per_char and --chars_per_sync required", file=sys.stderr)
- sys.exit(1)
- if args.rows is None or args.cols is None:
- print("--rows and --cols required", file=sys.stderr)
- sys.exit(1)
- if args.button is None:
- print("--button required", file=sys.stderr)
- sys.exit(1)
- if args.enable_local_beep is None:
- print("--enable_local_beep required", file=sys.stderr)
- sys.exit(1)
- if args.use_builtin is None:
- print("--use_builtin required", file=sys.stderr)
- sys.exit(1)
-
- generate_utils.config.BYTES_PER_CHAR = int(args.bytes_per_char)
- generate_utils.config.CHARS_PER_SYNC = int(args.chars_per_sync)
- generate_utils.config.BOARD_ROWS = int(args.rows)
- generate_utils.config.BOARD_COLS = int(args.cols)
-
- audio_state = AudioState(
- text = "",
- osc_state = osc_ctrl.OscState(
- generate_utils.config.CHARS_PER_SYNC,
- generate_utils.config.BOARD_ROWS,
- generate_utils.config.BOARD_COLS),
- button = args.button,
- enable_local_beep = args.enable_local_beep,
- use_builtin = args.use_builtin,
- send_transcript = False,
- run_app = True)
-
- mainLoop(audio_state)
-
diff --git a/Scripts/dump_mic_devices.py b/Scripts/dump_mic_devices.py
deleted file mode 100644
index 874445c..0000000
--- a/Scripts/dump_mic_devices.py
+++ /dev/null
@@ -1,8 +0,0 @@
-#!/usr/bin/env python3
-
-from transcribe_v2 import MicStream
-
-if __name__ == "__main__":
- # This implicitly prints mic devices.
- s = MicStream(0)
-
diff --git a/Scripts/emotes.py b/Scripts/emotes.py
deleted file mode 100644
index 6ae0930..0000000
--- a/Scripts/emotes.py
+++ /dev/null
@@ -1,143 +0,0 @@
-#!/usr/bin/env python3
-
-import argparse
-from math import floor
-import os
-# python3 -m pip install pillow
-from PIL import Image
-import sys
-
-# (row, col)
-TEX_SZ = (2048, 2048)
-
-IMG_SZ_PX = 256
-IMG_PER_ROW = int(TEX_SZ[0] / IMG_SZ_PX)
-IMG_PER_COL = int(TEX_SZ[1] / IMG_SZ_PX)
-
-# TODO(yum) this should live in a config file.
-# Note: the name of the emote must be no longer than 6 characters.
-IMG_TEX_DATA = []
-IMG_TEX_DATA.append(("Images/Emotes/xdd.png", "xdd"))
-IMG_TEX_DATA.append(("Images/Emotes/pog.png", "pog"))
-IMG_TEX_DATA.append(("Images/Emotes/lulw.png", "laugh"))
-IMG_TEX_DATA.append(("Images/Emotes/bighardo.png", "hard"))
-IMG_TEX_DATA.append(("Images/Emotes/peepoHappy.png", "happy"))
-IMG_TEX_DATA.append(("Images/Emotes/peepoSad.png", "sad"))
-IMG_TEX_DATA.append(("Images/Emotes/bedge.png", "bed"))
-IMG_TEX_DATA.append(("Images/Emotes/reallymad.png", "mad"))
-IMG_TEX_DATA.append(("Images/Emotes/clueless.png", "surely"))
-IMG_TEX_DATA.append(("Images/Emotes/what.png", "what"))
-IMG_TEX_DATA.append(("Images/Emotes/based.png", "based"))
-IMG_TEX_DATA.append(("Images/Emotes/chad.png", "chad"))
-IMG_TEX_DATA.append(("Images/Emotes/aware.png", "aware"))
-IMG_TEX_DATA.append(("Images/Emotes/girl.png", "girl"))
-IMG_TEX_DATA = []
-
-IMG_TEX_KEYWORD_TO_COORD = {}
-for i in range(0, len(IMG_TEX_DATA)):
- IMG_TEX_KEYWORD_TO_COORD[IMG_TEX_DATA[i][1]] = i
-
-# We treat images like words. To keep things simple, they're the same height as
-# a word, and they're a fixed width.
-IMG_SZ_LETTER_ROWS = 1
-IMG_SZ_LETTER_COLS = 6
-
-def lookup(word: str):
- word = word.lower()
- word = ''.join(c for c in word.lower() if c.isalpha())
- if word in IMG_TEX_KEYWORD_TO_COORD.keys():
- return word, IMG_TEX_KEYWORD_TO_COORD[word]
- return None, None
-
-def openTexture(tex_path: str):
- if not os.path.exists(args.texture_path):
- return Image.new("RGB", TEX_SZ)
- tex = Image.open(args.texture_path)
- if tex.size != TEX_SZ:
- print("Texture at {} has mismatching size {}, creating new texture".format(
- tex_path, tex.size), file=sys.stderr)
- return Image.new("RGB", TEX_SZ)
- return tex
-
-# Add an image to the texture at the coordinates (x, y). x and y should be in
-# the range [0, IMG_PER_COL) and [0, IMG_PER_ROW) respectively.
-def addImageToTexture(tex: Image, img_path: str, x: int, y:int):
- # Transparent images will be composited on top of a black background.
- img = Image.open(img_path).convert('RGBA')
- img_bg = Image.new('RGBA', img.size, (0, 0, 0))
- img = Image.alpha_composite(img_bg, img).convert('RGB')
-
- max_px = IMG_SZ_PX
-
- # Scale the image up so it uses as much space as is given to it.
- # I originally planned to support multiple scales, but this proved to be
- # too much work - getting line wrapping to work with this would be a pain.
- # So for now, all images are the same height as words.
- scale = 1
- img_x, img_y = img.size
- max_dim = max(img_x, img_y)
- img_scale = (max_px / max_dim) * scale
- new_sz = (int(floor(img.size[0] * img_scale)),
- int(floor(img.size[1] * img_scale)))
- print("Add image {}".format(img_path))
- print(" Original size: {}".format(img.size))
- print(" Scaled size: {}".format(new_sz))
- img = img.resize(new_sz)
-
- # Center the image within its new coordinate space.
- padded_img_sz = (IMG_SZ_PX * scale, IMG_SZ_PX * scale)
- padded_img = Image.new("RGB", padded_img_sz)
- centered_x = int(floor((padded_img_sz[0] - new_sz[0]) / 2))
- centered_y = int(floor((padded_img_sz[1] - new_sz[1]) / 2))
- padded_img.paste(img, box=(centered_x, centered_y))
- img = padded_img
-
- # Break the image into tiles and write them into the texture.
- for slot in range(0, scale * scale):
- tile_x = slot % scale
- tile_y = int(floor(slot / scale))
- tile_bbox = (tile_x * IMG_SZ_PX, tile_y * IMG_SZ_PX, (tile_x + 1) * IMG_SZ_PX, (tile_y + 1) * IMG_SZ_PX)
- tile = img.crop(tile_bbox)
- print(" tile {},{} (bbox={})".format(tile_x, tile_y, tile_bbox))
-
- slot_x = x + slot % IMG_PER_ROW
- slot_y = y + int(floor(slot / IMG_PER_ROW))
- slot_x_px = slot_x * IMG_SZ_PX
- slot_y_px = slot_y * IMG_SZ_PX
- print(" Add img at {},{} (px {},{})".format(slot_x, slot_y, slot_x_px, slot_y_px))
-
- tex.paste(tile, box=(slot_x_px, slot_y_px))
-
-def parseArgs():
- parser = argparse.ArgumentParser()
- parser.add_argument("--texture_path", type=str, help="Path to save the generated texture.")
- parser.add_argument("--rows", type=str, help="The number of rows on the board")
- parser.add_argument("--cols", type=str, help="The number of columns on the board")
- args = parser.parse_args()
-
- if not args.texture_path or not args.rows or not args.cols:
- print("--texture_path, --rows, --cols required", file=sys.stderr)
- sys.exit(1)
-
- return args
-
-if __name__ == "__main__":
- args = parseArgs()
-
- rows = int(args.rows)
- cols = int(args.cols)
- # board is this much wider than tall
- board_aspect_ratio = 2
- # each cell a square divided into `rows`x`cols` is this much wider than tall
- cell_aspect_ratio = rows / cols
- # each cell is this much wider than tall
- board_cell_aspect_ratio = board_aspect_ratio * cell_aspect_ratio
-
- tex = openTexture(args.texture_path)
- for i in range(0, len(IMG_TEX_DATA)):
- filename = IMG_TEX_DATA[i][0]
- x = i % IMG_PER_ROW
- y = int(floor(i / IMG_PER_ROW))
- addImageToTexture(tex, filename, x, y)
- tex.save(args.texture_path)
-
diff --git a/Scripts/emotes_v2.py b/Scripts/emotes_v2.py
deleted file mode 100644
index a9c037f..0000000
--- a/Scripts/emotes_v2.py
+++ /dev/null
@@ -1,149 +0,0 @@
-#!/usr/bin/env python3
-
-import argparse
-import os
-import pickle
-import sys
-
-from math import floor
-from PIL import Image
-from typing import Any, Dict, List, Tuple
-
-# The character range [0x0000, 0xDFFF] is reserved for text.
-# The range [0xE000, infinity) is left over for emotes.
-EMOTES_LETTER_OFFSET = 0xE000
-EMOTES_HEIGHT = 512
-EMOTES_TEX_SZ = 4096
-
-def superimpose_image(base_img: Image, overlay_img: Image, position: Tuple[int, int]) -> Image:
- base_img.paste(overlay_img, position, overlay_img)
- return base_img
-
-def i_to_pos(i, sm_wd, sm_ht, big_wd, big_ht) -> Tuple[int, int]:
- x = i * sm_wd % big_wd
- row = floor((i * sm_wd) / big_wd)
- y = row * sm_ht
- return int(x), int(y)
-
-def get_images_from_directory(directory_path: str) -> List[Tuple[Any, str]]:
- images = []
- for filename in os.listdir(directory_path):
- file_path = os.path.join(directory_path, filename)
- if os.path.isfile(file_path) and file_path.endswith(".png"):
- image = Image.open(file_path).convert("RGBA")
- name = os.path.basename(filename).split('.')[0]
- images.append((image, name))
- return images
-
-def split_resized_image(img, wd: int, ht: int) -> List[Any]:
- aspect_ratio = img.width / img.height
- width = int(ht * aspect_ratio)
- img = img.resize((width, ht))
-
- split_images = []
- for i in range(0, img.width, wd):
- split_image = img.crop((i, 0, i + wd, ht))
- split_images.append(split_image)
-
- return split_images
-
-def resize_image_with_aspect_ratio(img: Image, aspect_ratio: float) -> Image:
- original_width, original_height = img.size
- new_width = int(original_height * aspect_ratio)
- new_height = original_height
- return img.resize((new_width, new_height))
-
-def resize_image_to_height(img: Image, height: int) -> Image:
- aspect_ratio = img.width / img.height
- new_width = int(height * aspect_ratio)
- return img.resize((new_width, height))
-
-class EmotesState:
- def __init__(self):
- self.bits = {}
-
- def load(self, pickle_path):
- try:
- with open(pickle_path, 'rb') as f:
- self.bits = pickle.load(f)
- except FileNotFoundError:
- print(f"Emotes map does not exist at {pickle_path}",
- file=sys.stderr)
-
- # This is quite slow since we do a search and replace (O(n))
- # for each keyword O(m) times each variant of said keyword (O(k)).
- # Thus total complexity is O(m*n*k). All three of these numbers are
- # typically small: m and k typically < 10, n typically < 200.
- #
- # Naively one might split the input into words, but this only works for
- # English-like languages. Eastern Asian languages like Japanese don't
- # really divide into words AFAIK so this wouldn't work for them.
- #
- # Unless the performance becomes a user-reported problem, stick with this
- # inefficient but reliable method.
- def encode_emotes(self, msg: str):
- for keyword, bits in self.bits.items():
- bits_str = ""
- for bit in bits:
- bits_str += chr(bit)
- # ALL CAPS
- tmp = keyword.upper()
- msg = msg.replace(tmp, bits_str)
- # lowercase
- tmp = keyword.lower()
- msg = msg.replace(tmp, bits_str)
- # Capitalized
- tmp = keyword.lower().capitalize()
- msg = msg.replace(tmp, bits_str)
- # dashes inserted
- tmp = '-'.join(keyword.upper())
- msg = msg.replace(tmp, bits_str)
- # uppercase, spaces inserted
- tmp = ' '.join(keyword.upper())
- msg = msg.replace(tmp, bits_str)
- # lowercase, spaces inserted
- tmp = ' '.join(keyword.lower())
- msg = msg.replace(tmp, bits_str)
- # uppercase, commas and spaces inserted
- tmp = ', '.join(keyword.upper())
- msg = msg.replace(tmp, bits_str)
- return msg
-
-if __name__ == "__main__":
- parser = argparse.ArgumentParser()
- parser.add_argument("dir", type=str, help="directory to get images from")
- parser.add_argument("board_aspect_ratio", help="aspect ratio of a cell in the board")
- parser.add_argument("texture_aspect_ratio", help="aspect ratio of a cell in the texture")
- parser.add_argument("tex_path", type=str, help="path to save the texture to")
- parser.add_argument("pickle_path", type=str, help="path to save the texture index to")
- args = parser.parse_args()
-
- directory_path = args.dir
- board_aspect_ratio = int(args.board_aspect_ratio)
- texture_aspect_ratio = int(args.texture_aspect_ratio)
-
- base_img = Image.new("RGBA", (EMOTES_TEX_SZ, EMOTES_TEX_SZ), (0, 0, 0, 0))
- images_and_filenames = get_images_from_directory(directory_path)
- i = 0
- bits = {} # Dict[str, List[int]]
- for img, filename in images_and_filenames:
- print(f"Adding {filename}")
- img = resize_image_with_aspect_ratio(img, board_aspect_ratio)
- img = resize_image_to_height(img, EMOTES_HEIGHT)
- img_fragments = split_resized_image(img, int(EMOTES_HEIGHT / texture_aspect_ratio), EMOTES_HEIGHT)
- img_bits = [] # List[int]
- for img_fragment in img_fragments:
- i = i + 1
- img_pos = i_to_pos(i,
- EMOTES_HEIGHT / texture_aspect_ratio, EMOTES_HEIGHT,
- EMOTES_TEX_SZ, EMOTES_TEX_SZ)
- print(f"{img_pos}")
- superimpose_image(base_img, img_fragment, img_pos)
- img_bits.append(EMOTES_LETTER_OFFSET + i)
- emote_name = os.path.basename(filename).split('.')[0]
- print(f"{emote_name} -> {img_bits}")
- bits[emote_name] = img_bits
- base_img.save(args.tex_path)
- with open(args.pickle_path, 'wb') as f:
- pickle.dump(bits, f)
-
diff --git a/Scripts/generate_fonts.py b/Scripts/generate_fonts.py
deleted file mode 100644
index 8dc8a89..0000000
--- a/Scripts/generate_fonts.py
+++ /dev/null
@@ -1,184 +0,0 @@
-#!/usr/bin/env python3
-
-# python3 -m pip install pillow
-# License: HPND license.
-from PIL import Image, ImageFont, ImageDraw
-
-import math
-
-# Use a power of 2 pixels per character so we can evenly divide the plane.
-font_pixels = 128
-full_ratio = 0.75
-half_ratio = 0.5
-full_sz = int(font_pixels * full_ratio)
-half_sz = int(font_pixels * half_ratio)
-layout_engine = ImageFont.Layout.BASIC
-
-unifont = ImageFont.truetype("Fonts/unifont-15.0.01.ttf", full_sz, layout_engine=layout_engine)
-unifont_half = ImageFont.truetype("Fonts/unifont-15.0.01.ttf", half_sz, layout_engine=layout_engine)
-
-noto_sans_mono = ImageFont.truetype(
- "Fonts/Noto_Sans_Mono/static/NotoSansMono/NotoSansMono-Bold.ttf",
- full_sz, index=0, layout_engine=layout_engine)
-
-noto_sans_sc_half = ImageFont.truetype("Fonts/Noto_Sans_Simplified_Chinese/NotoSansSC-Regular.otf", half_sz, layout_engine=layout_engine)
-
-noto_sans_kr_half = ImageFont.truetype("Fonts/Noto_Sans_Korean/NotoSansKR-Regular.otf", half_sz, layout_engine=layout_engine)
-
-n_rows = 64
-n_cols = 128
-
-class FontInfo:
- def __init__(self, font, dy):
- self.font = font
- self.dy = dy
-
-def allow_range(allowlist, lo_hi, font = None, dy = 0):
- for i in range(lo_hi[0], lo_hi[1] + 1):
- allowlist[i] = FontInfo(font, dy)
-def ban_range(allowlist, lo, hi):
- for i in range(lo, hi + 1):
- del allowlist[i]
-allowlist = {}
-# ASCII
-basic_latin = (32, 126)
-allow_range(allowlist, basic_latin, font=noto_sans_mono, dy = -20)
-# Latin-1 supplement
-latin_1_supplement = (0x00A1, 0x00ff)
-allow_range(allowlist, latin_1_supplement, font = noto_sans_mono)
-# Latin extended-A
-latin_extended_a = (0x0100, 0x017f)
-allow_range(allowlist, latin_extended_a, font = noto_sans_mono)
-# Latin extended-B
-latin_extended_b = (0x0180, 0x024f)
-allow_range(allowlist, latin_extended_b, font = noto_sans_mono)
-# Spacing modifier letters
-ipa_extensions = (0x0250, 0x02af)
-allow_range(allowlist, ipa_extensions, font = unifont)
-# Greek and Coptic
-greek = (0x0370, 0x03ff)
-allow_range(allowlist, greek, font = noto_sans_mono)
-ban_range(allowlist, 0x0378, 0x03a2)
-# Cyrillic
-cyrillic = (0x0400, 0x04ff)
-allow_range(allowlist, cyrillic, font = unifont)
-# Currency symbols
-currency_symbols = (0x20a0, 0x20c0)
-allow_range(allowlist, currency_symbols, font = noto_sans_mono)
-
-# CJK
-#
-hangul_jamo = (0x1100, 0x11FF)
-allow_range(allowlist, hangul_jamo, font = noto_sans_kr_half)
-#
-general_punctuation = (0x2000, 0x206f)
-allow_range(allowlist, general_punctuation, font = noto_sans_mono)
-#
-kangxi_radicals = (0x2f00, 0x2fdf)
-allow_range(allowlist, kangxi_radicals, font = noto_sans_sc_half)
-#
-cjk_symbols_and_punctuation = (0x3000, 0x303f)
-allow_range(allowlist, cjk_symbols_and_punctuation, font = noto_sans_sc_half)
-#
-hiragana = (0x3041, 0x309f)
-allow_range(allowlist, hiragana, font = noto_sans_sc_half)
-ban_range(allowlist, 0x3097, 0x3098)
-#
-katakana = (0x30a0, 0x30ff)
-allow_range(allowlist, katakana, font = noto_sans_sc_half)
-#
-hangul_compatibility_jamo = (0x3130, 0x318f)
-allow_range(allowlist, hangul_compatibility_jamo, font = noto_sans_sc_half)
-#
-enclosed_cjk_letters_and_months = (0x3200, 0x32FF)
-allow_range(allowlist, enclosed_cjk_letters_and_months, font = noto_sans_sc_half)
-#
-cjk_compatibility = (0x3300, 0x33ff)
-allow_range(allowlist, cjk_compatibility, font = noto_sans_sc_half)
-#
-cjk_unified_extension_a = (0x3400, 0x4dbf)
-allow_range(allowlist, cjk_unified_extension_a, font = noto_sans_sc_half)
-#
-cjk_ideographs = (0x4e00, 0x9fff)
-allow_range(allowlist, cjk_ideographs, font = noto_sans_sc_half)
-#
-hangul_syllables = (0xAC00, 0xD7A3)
-allow_range(allowlist, hangul_syllables, font = noto_sans_kr_half)
-#
-halfwidth_and_fullwidth = (0xff00, 0xffef)
-allow_range(allowlist, halfwidth_and_fullwidth, font = noto_sans_sc_half)
-
-def in_range(x, range_pair) -> bool:
- return x >= range_pair[0] and x <= range_pair[1]
-
-max_char = max(allowlist)
-print("max char: {}".format(max_char))
-print("num chars: {}".format(len(allowlist)))
-
-def genUnicode():
- total_rows = math.ceil(max_char / n_cols)
- print("total rows {}".format(total_rows))
- total_textures = math.ceil(total_rows / n_rows)
- print("total textures {}".format(total_textures))
-
- for nth_texture in range(0, total_textures):
- # Create an 8K grayscale ("L") or black and white ("1") image
- # Unity will re-encode b&w to grayscale, so using b&w just helps keep
- # the package size low (we vendor these, we don't generate them
- # client-side).
- image = Image.new(mode="1", size=(8192,8192), color=0)
- draw = ImageDraw.Draw(image)
-
- row_begin = nth_texture * n_rows
-
- for row in range(row_begin, row_begin + n_rows):
- line = ""
- for col in range(0, n_cols):
- # Generate the unicode character for this spot.
- n = row * n_cols + col
- char = None
- font_info = None
- if n in allowlist.keys():
- char = chr(n)
- font_info = allowlist[n]
- else:
- char = " "
- font_info = FontInfo(unifont, 0)
- # Hack: Chinese, Japanese, and Korean characters are all double
- # width and are all on textures [1,6]. To fit them in the same
- # grid, we use a half-size font.
- draw.text((col * font_pixels / 2, (row - row_begin) * font_pixels +
- font_info.dy), char, font=font_info.font, fill=255)
-
- image.save("Fonts/Bitmaps/font-%01d.png" % nth_texture)
-
-def genASCII():
- # Create an 8k grayscale image. 16 glyphs wide, 8 glyphs tall.
- # Only characters on the range [0, 128).
- image = Image.new(mode="RGBA", size=(8192,8192), color=0)
- draw = ImageDraw.Draw(image)
- n_rows = 8
- n_cols = 16
-
- font = ImageFont.truetype(
- "Fonts/Noto_Sans_Mono/static/NotoSansMono/NotoSansMono-Bold.ttf",
- int((8192 / 8) * 0.75), index=0, layout_engine=layout_engine)
-
- for row in range(0, n_rows):
- for col in range(0, n_cols):
- n = row * n_cols + col
- char = None
- font_info = None
- if n in allowlist.keys():
- char = chr(n)
- else:
- char = " "
- draw.text((col * font_pixels * 8 / 2, row * font_pixels * 8 - 20),
- char, font=font, fill=(255,255,255))
- image.save("Fonts/Bitmaps/font-ascii.png")
-
-if __name__ == "__main__":
- print("Generating unicode fonts")
- #genUnicode()
- print("Generating ASCII fonts")
- genASCII()
diff --git a/Scripts/generate_menu.py b/Scripts/generate_menu.py
deleted file mode 100644
index 2da50b2..0000000
--- a/Scripts/generate_menu.py
+++ /dev/null
@@ -1,41 +0,0 @@
-#!/usr/bin/env python3
-
-import argparse
-import sys
-
-MENU_SUFFIX = """
- - name: TaSTT
- icon: {fileID: 0}
- type: 103
- parameter:
- name:
- value: 1
- style: 0
- subMenu: {fileID: 11400000, guid: 111d8d5f909f534429bfe46268723200, type: 2}
- subParameters: []
- labels: []
-"""[1:]
-
-def append(old_path, new_path):
- merged = ""
- with open(old_path, "r") as f:
- merged = f.read()
- merged += MENU_SUFFIX
- with open(new_path, "w") as f:
- f.write(merged)
-
-if __name__ == "__main__":
-
- parser = argparse.ArgumentParser()
- parser.add_argument("--old_menu", type=str, help="The menu to append to")
- parser.add_argument("--new_menu", type=str, help="The menu to create")
- args = parser.parse_args()
-
- if not args.old_menu or not args.new_menu:
- print("--old_menu and --new_menu are both required",
- file=sys.stderr)
- parser.print_help()
- parser.exit(1)
-
- append(args.old_menu, args.new_menu)
-
diff --git a/Scripts/generate_params.py b/Scripts/generate_params.py
deleted file mode 100644
index 0d47fde..0000000
--- a/Scripts/generate_params.py
+++ /dev/null
@@ -1,131 +0,0 @@
-#!/usr/bin/env python3
-
-import app_config
-import argparse
-import generate_utils
-import sys
-
-PARAM_HEADER = """
-%YAML 1.1
-%TAG !u! tag:unity3d.com,2011:
---- !u!114 &11400000
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 0}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: -1506855854, guid: 67cc4cb7839cd3741b63733d5adf0442, type: 3}
- m_Name: TaSTT_params
- m_EditorClassIdentifier:
- parameters:
-"""[1:]
-
-INT_PARAM = """
- - name: %PARAM_NAME%
- valueType: 0
- saved: 0
- defaultValue: 0
- networkSynced: %SYNCED%
-"""[1:]
-
-BOOL_PARAM = """
- - name: %PARAM_NAME%
- valueType: 2
- saved: %SAVED%
- defaultValue: 0
- networkSynced: %SYNCED%
-"""[1:]
-
-FLOAT_PARAM = """
- - name: %PARAM_NAME%
- valueType: 1
- saved: 0
- defaultValue: %DEFAULT_FLOAT%
- networkSynced: %SYNCED%
-"""[1:]
-
-def generate(cfg):
- result = ""
-
- # We're working with an 84-character board, and each FX layer is responsible
- # for 8 of those characters.
- params = {}
- params["SAVED"] = "0"
- params["DEFAULT_FLOAT"] = "0"
- params["SYNCED"] = "1"
-
- params["PARAM_NAME"] = generate_utils.getDummyParam()
- result += generate_utils.replaceMacros(BOOL_PARAM, params)
-
- params["PARAM_NAME"] = generate_utils.getEnableParam()
- result += generate_utils.replaceMacros(BOOL_PARAM, params)
-
- params["PARAM_NAME"] = generate_utils.getEllipsisParam()
- result += generate_utils.replaceMacros(BOOL_PARAM, params)
-
- if not cfg["enable_phonemes"]:
- params["SYNCED"] = "0"
- for i in range(5):
- params["PARAM_NAME"] = generate_utils.getSoundParam(i+1)
- result += generate_utils.replaceMacros(BOOL_PARAM, params)
- params["PARAM_NAME"] = generate_utils.getEnablePhonemeParam()
- result += generate_utils.replaceMacros(BOOL_PARAM, params)
- params["SYNCED"] = "1"
-
- params["PARAM_NAME"] = generate_utils.getScaleParam()
- params["DEFAULT_FLOAT"] = "0.05"
- result += generate_utils.replaceMacros(FLOAT_PARAM, params)
- params["DEFAULT_FLOAT"] = "0"
-
- params["PARAM_NAME"] = generate_utils.getToggleParam()
- result += generate_utils.replaceMacros(BOOL_PARAM, params)
-
- params["PARAM_NAME"] = generate_utils.getLockWorldParam()
- result += generate_utils.replaceMacros(BOOL_PARAM, params)
-
- params["PARAM_NAME"] = generate_utils.getClearBoardParam()
- result += generate_utils.replaceMacros(BOOL_PARAM, params)
-
- params["PARAM_NAME"] = generate_utils.getSelectParam()
- result += generate_utils.replaceMacros(INT_PARAM, params)
-
- for byte in range(0, generate_utils.config.BYTES_PER_CHAR):
- for i in range(0, generate_utils.config.CHARS_PER_SYNC):
- params["PARAM_NAME"] = generate_utils.getBlendParam(i, byte)
- result += generate_utils.replaceMacros(FLOAT_PARAM, params)
-
- return result
-
-def append(old_path, params, new_path):
- merged = ""
- with open(old_path, "r") as f:
- merged = f.read()
- merged += params
- with open(new_path, "w") as f:
- f.write(merged)
-
-if __name__ == "__main__":
-
- parser = argparse.ArgumentParser()
- parser.add_argument("--old_params", type=str, help="The parameters to append to")
- parser.add_argument("--new_params", type=str, help="The parameters to create")
- parser.add_argument("--config", type=str, help="The path to the app config.")
- parser.add_argument("--chars_per_sync", type=str, help="The number of characters to send on each sync event")
- args = parser.parse_args()
-
- if not args.old_params or not args.new_params:
- print("--old_params and --new_params are both required",
- file=sys.stderr)
- parser.print_help()
- parser.exit(1)
-
- cfg = app_config.getConfig(args.config)
-
- generate_utils.config.BYTES_PER_CHAR = int(cfg["bytes_per_char"])
- generate_utils.config.CHARS_PER_SYNC = int(cfg["chars_per_sync"])
-
- append(args.old_params, generate(cfg), args.new_params)
-
diff --git a/Scripts/generate_shader.py b/Scripts/generate_shader.py
deleted file mode 100644
index 80f6704..0000000
--- a/Scripts/generate_shader.py
+++ /dev/null
@@ -1,161 +0,0 @@
-#!/usr/bin/env python3
-
-import argparse
-import generate_utils
-import os
-import sys
-
-# A single parameter looks like this:
-# _Letter_Row00_Col00_Byte0("_Letter_Row00_Col00_Byte0", float) = 0
-def generateUnityParams(nbytes: int, nrows: int, ncols: int, prefix: str = "") -> str:
- lines = []
- lines.append(prefix + "// BEGIN GENERATED CODE BLOCK")
- for byte in range(0, nbytes):
- for row in range(0, nrows):
- for col in range(0, ncols):
- param_name = generate_utils.getShaderParamByRowColByte(row, col, byte)
- line = prefix + """{}("{}", float) = 0""".format(param_name, param_name)
- lines.append(line)
- lines.append(prefix + "// END GENERATED CODE BLOCK")
- return '\n'.join(lines)
-
-# A single parameter looks like this:
-# float _Letter_Row00_Col00_Byte0;
-def generateCgParams(nbytes: int, nrows: int, ncols: int, prefix: str = "") -> str:
- lines = []
- lines.append(prefix + "// BEGIN GENERATED CODE BLOCK")
- for byte in range(0, nbytes):
- for row in range(0, nrows):
- for col in range(0, ncols):
- param_name = generate_utils.getShaderParamByRowColByte(row, col, byte)
- line = prefix + """float {};""".format(param_name)
- lines.append(line)
- lines.append(prefix + "// END GENERATED CODE BLOCK")
- return '\n'.join(lines)
-
-# Define 3 constants:
-# uniform int BYTES_PER_CHAR = $nbytes;
-# uniform int NROWS = $nrows;
-# uniform int NCOLS = $ncols;
-def generateCgConstants(nbytes: int, board_nrows: int, board_ncols: int,
- texture_nrows: int, texture_ncols: int, prefix: str = "") -> str:
- lines = []
- lines.append(prefix + "// BEGIN GENERATED CODE BLOCK")
- lines.append(prefix + "#define BYTES_PER_CHAR {}".format(nbytes))
- lines.append(prefix + "#define BOARD_NROWS {}".format(board_nrows))
- lines.append(prefix + "#define BOARD_NCOLS {}".format(board_ncols))
- lines.append(prefix + "#define TEXTURE_NROWS {}".format(texture_nrows))
- lines.append(prefix + "#define TEXTURE_NCOLS {}".format(texture_ncols))
- lines.append(prefix + "// END GENERATED CODE BLOCK")
- return '\n'.join(lines)
-
-# This is the basic idea of what we're generating:
-# // Get the value of the parameter for the cell we're in.
-# uint GetLetterParameter(float2 uv)
-# {
-# float CHAR_COL = floor(uv.x * Cols);
-# float CHAR_ROW = floor(uv.y * Rows);
-# uint res = 0;
-#
-# [forcecase] switch(CHAR_ROW) {
-# case n:
-# case n-1:
-# ...
-#
-# [forcecase] switch (CHAR_COL) {
-# case 0:
-# case 1:
-# ...
-#
-# res |= ((uint) _Letter_Row00_Col00_Byte0) << (0 * 8);
-# res |= ((uint) _Letter_Row00_Col00_Byte1) << (1 * 8);
-# continue;
-# }
-# }
-# return res;
-# }
-# In English, this provides an accessor to the many (possibly thousands)
-# float parameters which hold the text on the board.
-def generateLetterAccessor(nbytes: int, nrows: int, ncols: int, prefix: str = "") -> str:
- lines = []
- lines.append(prefix + "// BEGIN GENERATED CODE BLOCK")
- lines.append(prefix + "[forcecase] switch (CHAR_ROW) {")
- for row in range(0, nrows):
- lines.append(prefix + " case {}:".format(nrows - (row + 1)))
- lines.append(prefix + " [forcecase] switch (CHAR_COL) {")
- for col in range(0, ncols):
- lines.append(prefix + " case {}:".format(col))
- for byte in range(0, nbytes):
- param_name = generate_utils.getShaderParamByRowColByte(row, col, byte)
- lines.append(prefix + " res |= ((uint) {}) << ({} * 8);".format(param_name, byte))
- lines.append(prefix + " return res;")
- lines.append(prefix + " default:")
- lines.append(prefix + " return 0;")
- lines.append(prefix + " }")
- lines.append(prefix + "}")
- lines.append(prefix + "// END GENERATED CODE BLOCK")
- return '\n'.join(lines)
-
-# Replace any line containing `macro` with `replacement`.
-def applyLineMacro(old_path: str, new_path: str, macro: str, replacement: str) -> bool:
- new_lines = []
- times_applied = 0
- with open(old_path, 'r', encoding="utf-8") as f:
- for line in f:
- if line[-1] == '\n':
- line = line[0:len(line)-1]
- if macro in line:
- new_lines.append(replacement)
- times_applied += 1
- else:
- new_lines.append(line)
- with open(new_path, 'w', encoding="utf-8") as f:
- f.write('\n'.join(new_lines))
- return times_applied
-
-if __name__ == "__main__":
- print("args: {}".format(" ".join(sys.argv)))
-
- parser = argparse.ArgumentParser()
- parser.add_argument("--bytes_per_char", type=str, help="The number of bytes to use to represent each character")
- parser.add_argument("--board_rows", type=str, help="The number of rows on the board")
- parser.add_argument("--board_cols", type=str, help="The number of columns on the board")
- parser.add_argument("--texture_rows", type=str, help="The number of rows on the font textures")
- parser.add_argument("--texture_cols", type=str, help="The number of columns on the font textures")
- parser.add_argument("--shader_template", type=str, help="The path to the shader template")
- parser.add_argument("--shader_path", type=str, help="The path where the generated shader will be written")
- args = parser.parse_args()
-
- if not args.bytes_per_char or not args.board_rows or not args.board_cols \
- or not args.texture_rows or not args.texture_cols \
- or not args.shader_template or not args.shader_path:
- print(("--bytes_per_char, --board_rows, --board_cols, --texture_rows, "
- "--texture_cols, --shader_template, --shader_path required"), file=sys.stderr)
- sys.exit(1)
-
- nbytes = int(args.bytes_per_char)
- board_nrows = int(args.board_rows)
- board_ncols = int(args.board_cols)
- texture_nrows = int(args.texture_rows)
- texture_ncols = int(args.texture_cols)
-
- replacement = generateUnityParams(nbytes, board_nrows, board_ncols, prefix = "")
- #print(replacement)
- macro = "// %TEMPLATE__UNITY_ROW_COL_PARAMS%"
- applyLineMacro(args.shader_template, args.shader_path, macro, replacement)
-
- replacement = generateCgParams(nbytes, board_nrows, board_ncols, prefix = " ")
- #print(replacement)
- macro = "// %TEMPLATE__CG_ROW_COL_PARAMS%"
- applyLineMacro(args.shader_path, args.shader_path, macro, replacement)
-
- replacement = generateCgConstants(nbytes, board_nrows, board_ncols,
- texture_nrows, texture_ncols, prefix = " ")
- #print(replacement)
- macro = "// %TEMPLATE__CG_ROW_COL_CONSTANTS%"
- applyLineMacro(args.shader_path, args.shader_path, macro, replacement)
-
- replacement = generateLetterAccessor(nbytes, board_nrows, board_ncols, prefix = " ")
- #print(replacement)
- macro = "// %TEMPLATE__CG_LETTER_ACCESSOR%"
- applyLineMacro(args.shader_path, args.shader_path, macro, replacement)
diff --git a/Scripts/generate_utils.py b/Scripts/generate_utils.py
deleted file mode 100644
index ccc92fc..0000000
--- a/Scripts/generate_utils.py
+++ /dev/null
@@ -1,134 +0,0 @@
-from math import ceil
-from math import floor
-
-def replaceMacros(lines, macro_defs):
- for k,v in macro_defs.items():
- lines = lines.replace("%" + k + "%", v)
- return lines
-
-class Config():
- def __init__(self):
- self.BOARD_ROWS=4
- self.BOARD_COLS=48
- self.CHARS_PER_CELL=256
- self.BYTES_PER_CHAR=2
- self.CHARS_PER_SYNC=10
-
- def numRegions(self, which_layer):
- num_cells = self.BOARD_ROWS * self.BOARD_COLS
- layers_in_last_region = num_cells % self.CHARS_PER_SYNC
- float_result = num_cells / self.CHARS_PER_SYNC
- if which_layer >= layers_in_last_region:
- return floor(float_result)
- else:
- return ceil(float_result)
-
- def layerNeedsParity(self, which_layer):
- num_cells = self.BOARD_ROWS * self.BOARD_COLS
- layers_in_last_region = num_cells % self.CHARS_PER_SYNC
- if layers_in_last_region > 0 and which_layer >= layers_in_last_region:
- return True
- else:
- return False
-
-config = Config()
-
-# Implementation detail. We use this parameter to return from the terminal
-# state of the FX layer to the starting state.
-def getDummyParam():
- return "TaSTT_Dummy"
-
-def getToggleParam():
- return "TaSTT_Toggle"
-
-def getScaleParam():
- return "TaSTT_Scale"
-
-def getEnablePhonemeParam():
- return "TaSTT_Enable_Phoneme"
-
-# When this is set to true, the board clears.
-def getClearBoardParam():
- return "TaSTT_Clear_Board"
-
-def getLockWorldParam():
- return "TaSTT_Lock_World"
-
-# 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: int, byte: int) -> str:
- return "TaSTT_L%02dB%01d" % (which_layer, byte)
-
-def getLayerName(which_layer: int, byte: int) -> str:
- return getLayerParam(which_layer, byte)
-
-def getBlendParam(which_layer: int, byte: int) -> str:
- return "TaSTT_L%02dB%01d_Blend" % (which_layer, byte)
-
-def getDefaultStateName(which_layer:int , byte: int):
- return "TaSTT_L%02dB%01d_Do_Nothing" % (which_layer, byte)
-
-def getActiveStateName(which_layer: int, byte: int):
- return "TaSTT_L%02dB%01d_Active" % (which_layer, byte)
-
-def getSelectStateName(which_layer, select):
- return "TaSTT_L%02d_S%02d_B%01d" % (which_layer, select, byte)
-
-def getBlendStateName(which_layer, select, byte):
- return "TaSTT_L%02d_S%02d_B%01d_Blend" % (which_layer, select, byte)
-
-def getLetterStateName(which_layer, select, letter, byte):
- return "TaSTT_L%02d_S%02d_L%03d_B%01d" % (which_layer, select, letter, byte)
-
-def getSelectParam() -> str:
- return "TaSTT_Select"
-
-def getEnableParam():
- return "TaSTT_Enable"
-
-def getSoundParam(i: int):
- return f"TaSTT_Sound{str(i)}"
-
-def getEllipsisParam():
- return "TaSTT_Ellipsis"
-
-def getBoardIndex(which_layer, select):
- # Because we divide the board into a multiple of 8 cells, some cells may
- # describe animations which don't exist, depending on the size of the board.
- # We work around this by simply wrapping those animations back to the top
- # of the board, and rely on the OSC controller to simply not reference
- # those cells.
- return (select * config.CHARS_PER_SYNC + which_layer) % (config.BOARD_ROWS * config.BOARD_COLS)
-
-def getShaderParamByRowColByte(row, col, byte):
- return "_Letter_Row%02d_Col%02d_Byte%01d" % (row, col, byte)
-
-# Mapping from layer to shader param.
-def getShaderParam(which_layer, select, byte):
- index = getBoardIndex(which_layer, select)
-
- col = index % config.BOARD_COLS
- row = floor(index / config.BOARD_COLS)
-
- return getShaderParamByRowCol(row, col, byte)
-
-# The name of the animation which writes `letter` at a specific position in the
-# display.
-def getLetterAnimationName(row, col, letter, nth_byte):
- return "R%02dC%02dL%02dB%01d" % (row, col, letter, nth_byte)
-
-# The name of the animation which clears the entire board.
-def getClearAnimationName():
- return "TaSTT_Clear_Board"
-
-def getAnimationNameByLayerAndIndex(which_layer, select, letter, nth_byte):
- index = getBoardIndex(which_layer, select)
-
- col = index % config.BOARD_COLS
- row = floor(index / config.BOARD_COLS)
-
- return "R%02dC%02dL%02dB%01d" % (row, col, letter, nth_byte)
-
-# Returns the path to the animation for the given shader parameter + letter.
-def getAnimationPath(shader_param, letter):
- return "generated/animations/%s_Letter%02d.anim" % (shader_param, letter)
diff --git a/Scripts/keybind_event_machine.py b/Scripts/keybind_event_machine.py
deleted file mode 100644
index 3ce6794..0000000
--- a/Scripts/keybind_event_machine.py
+++ /dev/null
@@ -1,21 +0,0 @@
-import keyboard
-import time
-
-class KeybindEventMachine:
- def __init__(self, keybind: str):
- self.keybind = keybind
- self.events = []
- keyboard.add_hotkey(keybind, self.onPress)
-
- def onPress(self) -> None:
- self.events.append(time.time())
-
- # Returns the timestamp when the keybind was pressed, or 0 if no keypresses
- # are queued.
- def getNextPressTime(self) -> int:
- if len(self.events) == 0:
- return 0
- ret = self.events[0]
- self.events = self.events[1:]
- return ret
-
diff --git a/Scripts/lang_compat.py b/Scripts/lang_compat.py
deleted file mode 100644
index af35921..0000000
--- a/Scripts/lang_compat.py
+++ /dev/null
@@ -1,58 +0,0 @@
-# This file provides mappings between language codes used by different
-# third-party libraries.
-
-# Whisper to NLLB.
-whisper_to_nllb = {
- "catalan": "cat_Ltn", # catalan
- "czech": "ces_Latn", # czech
- "danish": "dan_Latn", # danish
- "dutch": "nld_Latn", # dutch
- "english": "eng_Latn", # english
- "finnish": "fin_Latn", # finnish
- "french": "fra_Latn", # french
- "german": "deu_Latn", # german
- "greek": "ell_Grek", # greek
- "hungarian": "hun_Latn", # hungarian
- "icelandic": "isl_Latn", # icelandic
- "italian": "ita_Latn", # italian
- "latvian": "lvs_Latn", # latvian
- "lithuanian": "lit_Latn", # lithuanian
- "norwegian": "nob_Latn", # norwegian (bokmal)
- "polish": "pol_Latn", # polish
- "portugese": "por_Latn", # portugese
- "romanian": "ron_Latn", # romanian
- "russian": "rus_Cyrl", # russian
- "slovak": "slk_Latn", # slovak
- "slovene": "slv_Latn", # slovene
- "spanish": "spa_Latn", # spanish
- "swedish": "swe_Latn", # swedish
- "turkish": "tur_Latn", # turkish
- }
-
-# NLLB to sentence_splitter (SS).
-nllb_to_ss = {
- "cat_Ltn": "ca", # catalan
- "ces_Latn": "cs", # czech
- "dan_Latn": "da", # danish
- "nld_Latn": "nl", # dutch
- "eng_Latn": "en", # english
- "fin_Latn": "fi", # finnish
- "fra_Latn": "fr", # french
- "deu_Latn": "de", # german
- "ell_Grek": "el", # greek
- "hun_Latn": "hu", # hungarian
- "isl_Latn": "is", # icelandic
- "ita_Latn": "it", # italian
- "lvs_Latn": "lv", # latvian
- "lit_Latn": "lt", # lithuanian
- "nob_Latn": "no", # norwegian (bokmal)
- "pol_Latn": "pl", # polish
- "por_Latn": "pt", # portugese
- "ron_Latn": "ro", # romanian
- "rus_Cyrl": "ru", # russian
- "slk_Latn": "sk", # slovak
- "slv_Latn": "sl", # slovene
- "spa_Latn": "es", # spanish
- "swe_Latn": "sv", # swedish
- "tur_Latn": "tr", # turkish
- }
diff --git a/Scripts/libtastt.py b/Scripts/libtastt.py
deleted file mode 100644
index 81baa8b..0000000
--- a/Scripts/libtastt.py
+++ /dev/null
@@ -1,1085 +0,0 @@
-#!/usr/bin/env python3
-
-import app_config
-import argparse
-import array
-import generate_utils
-import libunity
-import os
-import pickle
-import sys
-import typing
-
-# TODO(yum) we're getting the encoding scheme from here, but I think it should
-# be in a different layer.
-import osc_ctrl
-
-SCALE_ANIMATION_TEMPLATE = """
-%YAML 1.1
-%TAG !u! tag:unity3d.com,2011:
---- !u!74 &7400000
-AnimationClip:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: TaSTT_Scale_0
- serializedVersion: 6
- m_Legacy: 0
- m_Compressed: 0
- m_UseHighQualityCurve: 1
- m_RotationCurves: []
- m_CompressedRotationCurves: []
- m_EulerCurves: []
- m_PositionCurves: []
- m_ScaleCurves:
- - curve:
- serializedVersion: 2
- m_Curve:
- - serializedVersion: 3
- time: 0
- value: {x: 5, y: 5, z: 5}
- inSlope: {x: 0, y: 0, z: 0}
- outSlope: {x: 0, y: 0, z: 0}
- tangentMode: 0
- weightedMode: 0
- inWeight: {x: 0, y: 0.33333334, z: 0.33333334}
- outWeight: {x: 0, y: 0.33333334, z: 0.33333334}
- m_PreInfinity: 2
- m_PostInfinity: 2
- m_RotationOrder: 4
- path: World Constraint/Container/TaSTT
- m_FloatCurves: []
- m_PPtrCurves: []
- m_SampleRate: 60
- m_WrapMode: 0
- m_Bounds:
- m_Center: {x: 0, y: 0, z: 0}
- m_Extent: {x: 0, y: 0, z: 0}
- m_ClipBindingConstant:
- genericBindings:
- - serializedVersion: 2
- path: 1272388438
- attribute: 3
- script: {fileID: 0}
- typeID: 4
- customType: 0
- isPPtrCurve: 0
- - serializedVersion: 2
- path: 1272388438
- attribute: 1225223716
- script: {fileID: 0}
- typeID: 23
- customType: 0
- isPPtrCurve: 0
- pptrCurveMapping: []
- m_AnimationClipSettings:
- serializedVersion: 2
- m_AdditiveReferencePoseClip: {fileID: 0}
- m_AdditiveReferencePoseTime: 0
- m_StartTime: 0
- m_StopTime: 0.016666668
- m_OrientationOffsetY: 0
- m_Level: 0
- m_CycleOffset: 0
- m_HasAdditiveReferencePose: 0
- m_LoopTime: 1
- m_LoopBlend: 0
- m_LoopBlendOrientation: 0
- m_LoopBlendPositionY: 0
- m_LoopBlendPositionXZ: 0
- m_KeepOriginalOrientation: 0
- m_KeepOriginalPositionY: 1
- m_KeepOriginalPositionXZ: 0
- m_HeightFromFeet: 0
- m_Mirror: 0
- m_EditorCurves:
- - curve:
- serializedVersion: 2
- m_Curve:
- - serializedVersion: 3
- time: 0
- value: 5
- inSlope: 0
- outSlope: 0
- tangentMode: 136
- weightedMode: 0
- inWeight: 0
- outWeight: 0
- m_PreInfinity: 2
- m_PostInfinity: 2
- m_RotationOrder: 4
- attribute: m_LocalScale.x
- path: World Constraint/Container/TaSTT
- classID: 4
- script: {fileID: 0}
- - curve:
- serializedVersion: 2
- m_Curve:
- - serializedVersion: 3
- time: 0
- value: 5
- inSlope: 0
- outSlope: 0
- tangentMode: 136
- weightedMode: 0
- inWeight: 0
- outWeight: 0
- m_PreInfinity: 2
- m_PostInfinity: 2
- m_RotationOrder: 4
- attribute: m_LocalScale.y
- path: World Constraint/Container/TaSTT
- classID: 4
- script: {fileID: 0}
- - curve:
- serializedVersion: 2
- m_Curve:
- - serializedVersion: 3
- time: 0
- value: 5
- inSlope: 0
- outSlope: 0
- tangentMode: 136
- weightedMode: 0
- inWeight: 0
- outWeight: 0
- m_PreInfinity: 2
- m_PostInfinity: 2
- m_RotationOrder: 4
- attribute: m_LocalScale.z
- path: World Constraint/Container/TaSTT
- classID: 4
- script: {fileID: 0}
- m_EulerEditorCurves: []
- m_HasGenericRootTransform: 0
- m_HasMotionFloatCurves: 0
- m_Events: []
-"""
-
-SOUND_ANIMATION_TEMPLATE = """
-%YAML 1.1
-%TAG !u! tag:unity3d.com,2011:
---- !u!74 &7400000
-AnimationClip:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: Sound1_On
- serializedVersion: 6
- m_Legacy: 0
- m_Compressed: 0
- m_UseHighQualityCurve: 1
- m_RotationCurves: []
- m_CompressedRotationCurves: []
- m_EulerCurves: []
- m_PositionCurves: []
- m_ScaleCurves: []
- m_FloatCurves:
- - curve:
- serializedVersion: 2
- m_Curve:
- - serializedVersion: 3
- time: 0
- value: 1
- inSlope: Infinity
- outSlope: Infinity
- tangentMode: 103
- weightedMode: 0
- inWeight: 0
- outWeight: 0
- m_PreInfinity: 2
- m_PostInfinity: 2
- m_RotationOrder: 4
- attribute: m_IsActive
- path: World Constraint/Container/TaSTT/Audio 1
- classID: 1
- script: {fileID: 0}
- m_PPtrCurves: []
- m_SampleRate: 60
- m_WrapMode: 0
- m_Bounds:
- m_Center: {x: 0, y: 0, z: 0}
- m_Extent: {x: 0, y: 0, z: 0}
- m_ClipBindingConstant:
- genericBindings:
- - serializedVersion: 2
- path: 2267216663
- attribute: 2086281974
- script: {fileID: 0}
- typeID: 1
- customType: 0
- isPPtrCurve: 0
- pptrCurveMapping: []
- m_AnimationClipSettings:
- serializedVersion: 2
- m_AdditiveReferencePoseClip: {fileID: 0}
- m_AdditiveReferencePoseTime: 0
- m_StartTime: 0
- m_StopTime: 0
- m_OrientationOffsetY: 0
- m_Level: 0
- m_CycleOffset: 0
- m_HasAdditiveReferencePose: 0
- m_LoopTime: 0
- m_LoopBlend: 0
- m_LoopBlendOrientation: 0
- m_LoopBlendPositionY: 0
- m_LoopBlendPositionXZ: 0
- m_KeepOriginalOrientation: 0
- m_KeepOriginalPositionY: 1
- m_KeepOriginalPositionXZ: 0
- m_HeightFromFeet: 0
- m_Mirror: 0
- m_EditorCurves: []
- m_EulerEditorCurves: []
- m_HasGenericRootTransform: 0
- m_HasMotionFloatCurves: 0
- m_Events: []
-"""
-
-LETTER_ANIMATION_TEMPLATE = """
-%YAML 1.1
-%TAG !u! tag:unity3d.com,2011:
---- !u!74 &7400000
-AnimationClip:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: REPLACEME_ANIMATION_NAME
- serializedVersion: 6
- m_Legacy: 0
- m_Compressed: 0
- m_UseHighQualityCurve: 1
- m_RotationCurves: []
- m_CompressedRotationCurves: []
- m_EulerCurves: []
- m_PositionCurves: []
- m_ScaleCurves: []
- m_FloatCurves:
- - curve:
- serializedVersion: 2
- m_Curve:
- - serializedVersion: 3
- time: 0
- value: REPLACEME_LETTER_VALUE
- inSlope: 0
- outSlope: 0
- tangentMode: 136
- weightedMode: 0
- inWeight: 0
- outWeight: 0
- - serializedVersion: 3
- time: 0.016666668
- value: REPLACEME_LETTER_VALUE
- inSlope: 0
- outSlope: 0
- tangentMode: 136
- weightedMode: 0
- inWeight: 0
- outWeight: 0
- m_PreInfinity: 2
- m_PostInfinity: 2
- m_RotationOrder: 4
- attribute: material.REPLACEME_LETTER_PARAM
- path: TaSTT
- classID: 23
- script: {fileID: 0}
- - curve:
- serializedVersion: 2
- m_Curve:
- - serializedVersion: 3
- time: 0
- value: REPLACEME_LETTER_VALUE
- inSlope: 0
- outSlope: 0
- tangentMode: 136
- weightedMode: 0
- inWeight: 0
- outWeight: 0
- - serializedVersion: 3
- time: 0.016666668
- value: REPLACEME_LETTER_VALUE
- inSlope: 0
- outSlope: 0
- tangentMode: 136
- weightedMode: 0
- inWeight: 0
- outWeight: 0
- m_PreInfinity: 2
- m_PostInfinity: 2
- m_RotationOrder: 4
- attribute: material.REPLACEME_LETTER_PARAM
- path: TaSTT
- classID: 137
- script: {fileID: 0}
- m_PPtrCurves: []
- m_SampleRate: 60
- m_WrapMode: 0
- m_Bounds:
- m_Center: {x: 0, y: 0, z: 0}
- m_Extent: {x: 0, y: 0, z: 0}
- m_ClipBindingConstant:
- genericBindings:
- - serializedVersion: 2
- path: 2794480623
- attribute: 2284639795
- script: {fileID: 0}
- typeID: 137
- customType: 22
- isPPtrCurve: 0
- pptrCurveMapping: []
- m_AnimationClipSettings:
- serializedVersion: 2
- m_AdditiveReferencePoseClip: {fileID: 0}
- m_AdditiveReferencePoseTime: 0
- m_StartTime: 0
- m_StopTime: 0
- m_OrientationOffsetY: 0
- m_Level: 0
- m_CycleOffset: 0
- m_HasAdditiveReferencePose: 0
- m_LoopTime: 1
- m_LoopBlend: 0
- m_LoopBlendOrientation: 0
- m_LoopBlendPositionY: 0
- m_LoopBlendPositionXZ: 0
- m_KeepOriginalOrientation: 0
- m_KeepOriginalPositionY: 1
- m_KeepOriginalPositionXZ: 0
- m_HeightFromFeet: 0
- m_Mirror: 0
- m_EditorCurves:
- - curve:
- serializedVersion: 2
- m_Curve:
- - serializedVersion: 3
- time: 0
- value: REPLACEME_LETTER_VALUE
- inSlope: 0
- outSlope: 0
- tangentMode: 136
- weightedMode: 0
- inWeight: 0
- outWeight: 0
- - serializedVersion: 3
- time: 0.016666668
- value: REPLACEME_LETTER_VALUE
- inSlope: 0
- outSlope: 0
- tangentMode: 136
- weightedMode: 0
- inWeight: 0
- outWeight: 0
- m_PreInfinity: 2
- m_PostInfinity: 2
- m_RotationOrder: 4
- attribute: material.REPLACEME_LETTER_PARAM
- path: TaSTT
- classID: 23
- script: {fileID: 0}
- - curve:
- serializedVersion: 2
- m_Curve:
- - serializedVersion: 3
- time: 0
- value: REPLACEME_LETTER_VALUE
- inSlope: 0
- outSlope: 0
- tangentMode: 136
- weightedMode: 0
- inWeight: 0
- outWeight: 0
- - serializedVersion: 3
- time: 0.016666668
- value: REPLACEME_LETTER_VALUE
- inSlope: 0
- outSlope: 0
- tangentMode: 136
- weightedMode: 0
- inWeight: 0
- outWeight: 0
- m_PreInfinity: 2
- m_PostInfinity: 2
- m_RotationOrder: 4
- attribute: material.REPLACEME_LETTER_PARAM
- path: TaSTT
- classID: 137
- script: {fileID: 0}
- m_EulerEditorCurves: []
- m_HasGenericRootTransform: 0
- m_HasMotionFloatCurves: 0
- m_Events: []
-"""
-
-ANIMATOR_TEMPLATE = """
---- !u!91 &9100000
-AnimatorController:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: TaSTT_fx
- serializedVersion: 5
- m_AnimatorParameters: []
- m_AnimatorLayers: []
-"""
-
-# For whatever reason, running unrelated animations s.a.
-# facial expressions can have a slight effect on supposedly
-# unrelated parameters, causing letter to flip. Add a
-# little buffer to reduce the odds that this effect causes
-# a letter to change after it has been written.
-UNITY_ANIMATION_FUDGE_MARGIN = 0.1
-
-def generateClearAnimation(anim_dir: str, guid_map: typing.Dict[str, str]):
- print("Generating board clearing animation", file=sys.stderr)
-
- parser = libunity.UnityParser()
- parser.parse(LETTER_ANIMATION_TEMPLATE)
-
- anim_node = parser.nodes[0]
- anim_clip = anim_node.mapping['AnimationClip']
- curve_template = anim_clip.mapping['m_FloatCurves'].sequence[0]
- anim_clip.mapping['m_FloatCurves'].sequence = []
- anim_clip.mapping['m_EditorCurves'].sequence = []
-
- letter = 0
-
- for byte in range(0, generate_utils.config.BYTES_PER_CHAR):
- for row in range(0, generate_utils.config.BOARD_ROWS):
- for col in range(0, generate_utils.config.BOARD_COLS):
- curve = curve_template.copy()
- for keyframe in curve.mapping['curve'].mapping['m_Curve'].sequence:
- keyframe.mapping['value'] = str(letter +
- UNITY_ANIMATION_FUDGE_MARGIN)
- curve.mapping['attribute'] = "material.{}".format(generate_utils.getShaderParamByRowColByte(row, col, byte))
- curve.mapping['path'] = "World Constraint/Container/TaSTT"
- # Add curve to animation
- anim_clip.mapping['m_FloatCurves'].sequence.append(curve)
- anim_clip.mapping['m_EditorCurves'].sequence.append(curve)
- # Serialize animation to file
- anim_name = generate_utils.getClearAnimationName()
- anim_path = os.path.join(anim_dir, anim_name + ".anim")
- print("Generating clear animation at {}".format(anim_path), file=sys.stderr)
- with open(anim_path, "w", encoding="utf-8") as f:
- f.write(libunity.unityYamlToString([anim_node]))
- # Generate metadata
- meta = libunity.Metadata()
- with open(anim_path + ".meta", "w", encoding="utf-8") as f:
- f.write(str(meta))
- # Add metadata to guid map
- guid_map[anim_path] = meta.guid
- guid_map[meta.guid] = anim_path
-
-# sound_chord: whether to play a, e, i, o, u
-# value: 0 or 1
-def generateSoundAnimation(sound_chord: typing.Tuple[int,int,int,int,int],
- value: int,
- anim_name: str,
- anim_dir: str, guid_map: typing.Dict[str, str],
- anim_delay_frames = 2):
- print(f"Generating sound animation {sound_chord} / {anim_name}", file=sys.stderr)
-
- parser = libunity.UnityParser()
- parser.parse(SOUND_ANIMATION_TEMPLATE)
-
- anim_node = parser.nodes[0]
- anim_clip = anim_node.mapping['AnimationClip']
- curve_template = anim_clip.mapping['m_FloatCurves'].sequence[0]
- anim_clip.mapping['m_FloatCurves'].sequence = []
- anim_clip.mapping['m_EditorCurves'].sequence = []
-
- # Animate all notes.
- for note_i in range(len(sound_chord)):
- curve = curve_template.copy()
-
- keyframe_template = curve.mapping['curve'].mapping['m_Curve'].sequence[0]
- curve.mapping['curve'].mapping['m_Curve'].sequence = []
-
- # First keyframe: zero all but first note
- if note_i != 0:
- keyframe = keyframe_template.copy()
- keyframe.mapping['time'] = 0
- keyframe.mapping['value'] = 0
- curve.mapping['path'] = f"World Constraint/Container/TaSTT/Audio {note_i + 1}"
- curve.mapping['curve'].mapping['m_Curve'].sequence.append(keyframe)
-
- # Subsequent keyframes: animate as normal
- keyframe = keyframe_template.copy()
- keyframe.mapping['time']= str(note_i * anim_delay_frames * 1.0 / 60.0)
- keyframe.mapping['value'] = str(sound_chord[note_i])
- curve.mapping['path'] = f"World Constraint/Container/TaSTT/Audio {note_i + 1}"
- curve.mapping['curve'].mapping['m_Curve'].sequence.append(keyframe)
-
- # Add curve to animation
- anim_clip.mapping['m_FloatCurves'].sequence.append(curve)
- anim_clip.mapping['m_EditorCurves'].sequence.append(curve)
-
- anim_clip.mapping['m_AnimationClipSettings'].mapping['m_StopTime'] = str((len(sound_chord)-1) * anim_delay_frames * 1.0 / 60.0)
-
- # Serialize animation to file
- anim_path = os.path.join(anim_dir, anim_name + ".anim")
- with open(anim_path, "w", encoding="utf-8") as f:
- f.write(libunity.unityYamlToString([anim_node]))
- # Generate metadata
- meta = libunity.Metadata()
- with open(anim_path + ".meta", "w", encoding="utf-8") as f:
- f.write(str(meta))
- # Add metadata to guid map
- guid_map[anim_path] = meta.guid
- guid_map[meta.guid] = anim_path
-
-# Generate a toggle animation for a shader parameter.
-def generateToggleAnimations(anim_dir, shader_param, guid_map):
- print("Generating shader toggle animation", file=sys.stderr)
-
- parser = libunity.UnityParser()
- parser.parse(LETTER_ANIMATION_TEMPLATE)
-
- # 0.0 represents false, 1.0 represents true. Don't forget that we add
- # `UNITY_ANIMATION_FUDGE_MARGIN` to everything.
- for shader_value in range(0, 2):
- anim_node = parser.nodes[0]
- anim_clip = anim_node.mapping['AnimationClip']
- curve_template = anim_clip.mapping['m_FloatCurves'].sequence[0]
- anim_clip.mapping['m_FloatCurves'].sequence = []
- anim_clip.mapping['m_EditorCurves'].sequence = []
-
- curve = curve_template.copy()
- for keyframe in curve.mapping['curve'].mapping['m_Curve'].sequence:
- keyframe.mapping['value'] = str(float(shader_value) +
- UNITY_ANIMATION_FUDGE_MARGIN)
- curve.mapping['attribute'] = "material.{}".format(shader_param)
- curve.mapping['path'] = "World Constraint/Container/TaSTT"
- # Add curve to animation
- anim_clip.mapping['m_FloatCurves'].sequence.append(curve)
- anim_clip.mapping['m_EditorCurves'].sequence.append(curve)
-
- # Serialize animation to file
- anim_name = generate_utils.getClearAnimationName()
- anim_suffix = "_Off"
- if shader_value == 1:
- anim_suffix = "_On"
- anim_path = os.path.join(anim_dir, shader_param + anim_suffix +
- ".anim")
- with open(anim_path, "w", encoding="utf-8") as f:
- f.write(libunity.unityYamlToString([anim_node]))
- # Generate metadata
- meta = libunity.Metadata()
- with open(anim_path + ".meta", "w", encoding="utf-8") as f:
- f.write(str(meta))
- # Add metadata to guid map
- guid_map[anim_path] = meta.guid
- guid_map[meta.guid] = anim_path
-
-# Generate a toggle animation for a shader parameter.
-def generateScaleAnimation(anim_name: str, anim_dir: str,
- path: str,
- value: float,
- guid_map: typing.Dict[str, str]) -> str:
- print("Generating scale animation {}".format(path),
- file=sys.stderr)
-
- parser = libunity.UnityParser()
- parser.parse(SCALE_ANIMATION_TEMPLATE)
-
- #print("kill me", file=sys.stderr)
- #print(libunity.unityYamlToString([parser.nodes[0]]), file=sys.stdout)
- #print("NOW", file=sys.stdout)
-
- # 0.0 represents false, 1.0 represents true. Don't forget that we add
- # `UNITY_ANIMATION_FUDGE_MARGIN` to everything.
- anim_node = parser.nodes[0]
- anim_clip = anim_node.mapping['AnimationClip']
- #print("here 3", file=sys.stderr)
- for curve in anim_clip.mapping['m_ScaleCurves'].sequence:
- for keyframe in curve.mapping['curve'].mapping['m_Curve'].sequence:
- keyframe.mapping['value'].mapping['x'] = str(value)
- keyframe.mapping['value'].mapping['y'] = str(value)
- keyframe.mapping['value'].mapping['z'] = str(value)
- #print("here 4", file=sys.stderr)
- for curve in anim_clip.mapping['m_EditorCurves'].sequence:
- for keyframe in curve.mapping['curve'].mapping['m_Curve'].sequence:
- keyframe.mapping['value'] = value
-
- #print("here 5", file=sys.stderr)
-
- # Serialize animation to file
- anim_path = os.path.join(anim_dir, anim_name + ".anim")
- with open(anim_path, "w", encoding="utf-8") as f:
- f.write(libunity.unityYamlToString([anim_node]))
- # Generate metadata
- meta = libunity.Metadata()
- with open(anim_path + ".meta", "w", encoding="utf-8") as f:
- f.write(str(meta))
- # Add metadata to guid map
- guid_map[anim_path] = meta.guid
- guid_map[meta.guid] = anim_path
-
- return meta.guid
-
-def generateAnimations(anim_dir: str, guid_map: typing.Dict[str, str]):
- generateClearAnimation(anim_dir, guid_map)
-
- for chord_bits in range(2**5):
- chord = [0, 0, 0, 0, 0]
- for i in range(5):
- if (chord_bits >> i) % 2 == 1:
- chord[i] = 1
- print(f"Generating chord {chord}", file=sys.stderr)
- anim_name = f"Sound_a{chord[0]}_e{chord[1]}_i{chord[2]}_o{chord[3]}_u{chord[4]}"
- generateSoundAnimation(chord, 0, anim_name, anim_dir, guid_map)
-
- print("Generating letter animations", file=sys.stderr)
-
- parser = libunity.UnityParser()
- parser.parse(LETTER_ANIMATION_TEMPLATE)
-
- anim_node = parser.nodes[0]
- anim_clip = anim_node.mapping['AnimationClip']
- curve_template = anim_clip.mapping['m_FloatCurves'].sequence[0]
- anim_clip.mapping['m_FloatCurves'].sequence = []
- anim_clip.mapping['m_EditorCurves'].sequence = []
-
- # To support more languages, we use 2 bytes per character, giving us a 64K character set.
- for byte in range(0, generate_utils.config.BYTES_PER_CHAR):
- for row in range(0, generate_utils.config.BOARD_ROWS):
- print("Generating letter animations (row {}/{}) (byte {}/2)".format(row,
- generate_utils.config.BOARD_ROWS, byte), file=sys.stderr)
- for col in range(0, generate_utils.config.BOARD_COLS):
- for letter in range(0, 2):
- if letter == 1:
- letter = generate_utils.config.CHARS_PER_CELL - 1
-
- # Make a deep copy of the templates
- node = anim_node.copy()
- curve = curve_template.copy()
- clip = node.mapping['AnimationClip']
- # Populate animation name
- anim_name = generate_utils.getLetterAnimationName(row, col, letter, byte)
- clip.mapping['m_Name'] = anim_name
- # Populate letter value
- for keyframe in curve.mapping['curve'].mapping['m_Curve'].sequence:
- keyframe.mapping['value'] = str(letter + UNITY_ANIMATION_FUDGE_MARGIN)
- # Populate path to letter parameter
- curve.mapping['attribute'] = "material.{}".format(generate_utils.getShaderParamByRowColByte(row, col, byte))
- curve.mapping['path'] = "World Constraint/Container/TaSTT"
- # Add curve to animation
- clip.mapping['m_FloatCurves'].sequence.append(curve)
- clip.mapping['m_EditorCurves'].sequence.append(curve)
- # Serialize animation to file
- anim_path = os.path.join(anim_dir, anim_name + ".anim")
- with open(anim_path, "w", encoding="utf-8") as f:
- f.write(libunity.unityYamlToString([node]))
- # Generate metadata
- meta = libunity.Metadata()
- with open(anim_path + ".meta", "w", encoding="utf-8") as f:
- f.write(str(meta))
- # Add metadata to guid map
- guid_map[anim_path] = meta.guid
- guid_map[meta.guid] = anim_path
-
-def generateFXController(anim: libunity.UnityAnimator) -> typing.Dict[int, libunity.UnityDocument]:
- parser = libunity.UnityParser()
- parser.parse(ANIMATOR_TEMPLATE)
- anim.addNodes(parser.nodes)
-
- anim.addParameter(generate_utils.getEnableParam(), bool)
- anim.addParameter(generate_utils.getDummyParam(), bool)
- anim.addParameter(generate_utils.getToggleParam(), bool)
- anim.addParameter(generate_utils.getClearBoardParam(), bool)
- anim.addParameter(generate_utils.getScaleParam(), float)
- anim.addParameter(generate_utils.getEnablePhonemeParam(), bool)
-
- for i in range(5):
- anim.addParameter(generate_utils.getSoundParam(i+1), bool)
-
- anim.addLayer("=== TaSTT ===", weight=0.0)
-
- layers = {}
- for byte in range(0, generate_utils.config.BYTES_PER_CHAR):
- layers[byte] = {}
- for i in range(0, generate_utils.config.CHARS_PER_SYNC):
- anim.addParameter(generate_utils.getBlendParam(i, byte), float)
-
- layer = anim.addLayer(generate_utils.getLayerName(i, byte))
- layers[byte][i] = layer
- anim.addParameter(generate_utils.getSelectParam(), int)
-
- return layers
-
-def generateFXLayer(which_layer: int, anim: libunity.UnityAnimator, layer:
- libunity.UnityDocument, gen_anim_dir: str, byte: int):
- is_default_state = True
- default_state = anim.addAnimatorState(layer,
- generate_utils.getDefaultStateName(which_layer, byte), is_default_state)
-
- dy = 100
- active_state = anim.addAnimatorState(layer,
- generate_utils.getActiveStateName(which_layer, byte), dy = dy)
-
- active_state_transition = anim.addTransition(active_state)
- enable_param = generate_utils.getEnableParam()
- anim.addTransitionBooleanCondition(default_state, active_state_transition,
- enable_param, True)
-
- select_states = {}
- for i in range(0, generate_utils.config.numRegions(which_layer)):
- dx = i * 200
- dy = 200
-
- # Create blend tree for this region.
- anim_lo_path = os.path.join(gen_anim_dir,
- generate_utils.getAnimationNameByLayerAndIndex(
- which_layer, i, 0, byte) + \
- ".anim")
- guid_lo = guid_map[anim_lo_path]
- anim_hi_path = os.path.join(gen_anim_dir,
- generate_utils.getAnimationNameByLayerAndIndex(
- which_layer, i, generate_utils.config.CHARS_PER_CELL - 1, byte) + \
- ".anim")
- guid_hi = guid_map[anim_hi_path]
-
- select_states[i] = anim.addAnimatorBlendTree(layer,
- generate_utils.getBlendStateName(which_layer, i, byte),
- generate_utils.getBlendParam(which_layer, byte),
- guid_lo, guid_hi, dx = dx, dy = dy)
- state = select_states[i]
-
- # Create transition to state.
- select_state_transition = anim.addTransition(state)
- select_param = generate_utils.getSelectParam()
- anim.addTransitionIntegerEqualityCondition(active_state,
- select_state_transition, select_param, i)
-
- # Create return-home transition.
- home_state_transition = anim.addTransition(default_state)
- home_state_transition.mapping['AnimatorStateTransition'].mapping['m_InterruptionSource'] = '0'
- dummy_param = generate_utils.getDummyParam()
- anim.addTransitionBooleanCondition(state,
- home_state_transition, dummy_param, False)
-
- if generate_utils.config.layerNeedsParity(which_layer):
- # There may be layers which never write to the text box. In this case,
- # when those layers are turned on to write to that last region, they
- # simply transition back to the default (idle) state.
- home_state_transition = anim.addTransition(default_state)
- select_param = generate_utils.getSelectParam()
- i = generate_utils.config.numRegions(0) - 1
- anim.addTransitionIntegerEqualityCondition(active_state,
- home_state_transition, select_param, i)
-
-# Generic toggle adding utility.
-# Generates the layer and parameter.
-# Returns a map containing the off and on states, as well as the
-# transitions between them.
-def generateToggle(layer_name: str,
- parameter_name: str,
- gen_anim_dir: str,
- off_anim_basename: str,
- on_anim_basename: str,
- anim: libunity.UnityAnimator,
- guid_map: typing.Dict[str, str],
- duration_s: float = 0.0) -> typing.Dict[str,
- libunity.UnityDocument]:
- layer = anim.addLayer(layer_name)
-
- # For simplicity, use the layer name as the parameter name.
- anim.addParameter(parameter_name, bool)
-
- off_state = anim.addAnimatorState(layer, layer_name + "_Off",
- is_default_state = True)
- on_state = anim.addAnimatorState(layer, layer_name + "_On", dy=100)
-
- if off_anim_basename:
- off_anim_path = os.path.join(gen_anim_dir, off_anim_basename)
- off_anim_meta = libunity.Metadata()
- off_anim_meta.loadOrCreate(off_anim_path, guid_map)
- anim.setAnimatorStateAnimation(off_state, off_anim_meta.guid)
-
- if on_anim_basename:
- on_anim_path = os.path.join(gen_anim_dir, on_anim_basename)
- on_anim_meta = libunity.Metadata()
- on_anim_meta.loadOrCreate(on_anim_path, guid_map)
- anim.setAnimatorStateAnimation(on_state, on_anim_meta.guid)
-
- off_to_on_trans = anim.addTransition(on_state, duration_s)
- anim.addTransitionBooleanCondition(off_state,
- off_to_on_trans, parameter_name, True)
-
- on_to_off_trans = anim.addTransition(off_state, duration_s)
- anim.addTransitionBooleanCondition(on_state,
- on_to_off_trans, parameter_name, False)
-
- result = {}
- result["off"] = off_state
- result["on"] = on_state
- result["off_to_on"] = off_to_on_trans
- result["on_to_off"] = on_to_off_trans
-
- return result
-
-def generateScaleLayer(anim: libunity.UnityAnimator,
- gen_anim_dir: str,
- guid_map: typing.Dict[str, str]):
-
- scale_layer = anim.addLayer(generate_utils.getScaleParam())
-
- path = "World Constraint/Container/TaSTT"
- attribute = "blendShape.Scale"
-
- guid_lo = generateScaleAnimation("TaSTT_Scale_0", gen_anim_dir,
- path,
- 5.0, guid_map)
- guid_hi = generateScaleAnimation("TaSTT_Scale_100", gen_anim_dir,
- path,
- 100.0, guid_map)
-
- anim.addAnimatorBlendTree(scale_layer,
- generate_utils.getScaleParam(),
- generate_utils.getScaleParam(),
- guid_lo, guid_hi,
- lo_threshold = 0.0, hi_threshold = 1.0);
-
- pass
-
-def generateSoundLayer(anim: libunity.UnityAnimator,
- gen_anim_dir: str,
- guid_map: typing.Dict[str, str],
- anim_len_s = 12.0/60.0):
-
- layer = anim.addLayer("TaSTT_Sound")
-
- idle_state = anim.addAnimatorState(layer, "Idle", is_default_state=True, dy=-100)
- a_state = anim.addAnimatorState(layer, "a")
-
- trans = anim.addTransition(a_state)
- param = generate_utils.getEnablePhonemeParam()
- anim.addTransitionBooleanCondition(idle_state, trans, param, True)
-
- for a_bool in range(2):
- dy = 100
- dx = a_bool * 800
- # Create `e` state.
- ax_e_state = anim.addAnimatorState(layer,
- f"a{a_bool}_e",
- dy=dy, dx=dx)
- # Create transition based on whether `a` is set.
- trans = anim.addTransition(ax_e_state)
- param = generate_utils.getSoundParam(1)
- anim.addTransitionBooleanCondition(a_state, trans, param, a_bool)
-
- for e_bool in range(2):
- dy = 200
- dx = a_bool * 800 + e_bool * 400
-
- # Create `i` state.
- ax_ex_i_state = anim.addAnimatorState(layer,
- f"a{a_bool}_e{e_bool}_i",
- dy=dy, dx=dx)
-
- # Create transition based on whether `e` is set.
- trans = anim.addTransition(ax_ex_i_state)
- param = generate_utils.getSoundParam(2)
- anim.addTransitionBooleanCondition(ax_e_state, trans, param, e_bool)
-
- for i_bool in range(2):
- dy = 300
- dx = a_bool * 800 + e_bool * 400 + i_bool * 200
-
- # Create `o` state.
- ax_ex_ix_o_state = anim.addAnimatorState(layer,
- f"a{a_bool}_e{e_bool}_i{i_bool}_o",
- dy=dy, dx=dx)
- # Create transition based on whether `i` is set.
- trans = anim.addTransition(ax_ex_ix_o_state)
- param = generate_utils.getSoundParam(3)
- anim.addTransitionBooleanCondition(ax_ex_i_state, trans, param, i_bool)
-
- for o_bool in range(2):
- dy = 400
- dx = a_bool * 800 + e_bool * 400 + i_bool * 200 + o_bool * 100
-
- # Create `u` state.
- ax_ex_ix_ox_u_state = anim.addAnimatorState(layer,
- f"a{a_bool}_e{e_bool}_i{i_bool}_o{o_bool}_u",
- dy=dy, dx=dx)
- # Create transition based on whether `o` is set.
- trans = anim.addTransition(ax_ex_ix_ox_u_state)
- param = generate_utils.getSoundParam(4)
- anim.addTransitionBooleanCondition(ax_ex_ix_o_state,
- trans, param, o_bool)
-
- for u_bool in range(2):
- dy = 500
- dx = a_bool * 800 + e_bool * 400 + i_bool * 200 + o_bool * 100 + u_bool * 50
- if u_bool == 1:
- dy = 550
-
- # Create `u` state.
- ax_ex_ix_ox_ux_state = anim.addAnimatorState(layer,
- f"a{a_bool}_e{e_bool}_i{i_bool}_o{o_bool}_u{u_bool}",
- dy=dy, dx=dx)
- # Create transition based on whether `u` is set.
- trans = anim.addTransition(ax_ex_ix_ox_ux_state)
- param = generate_utils.getSoundParam(5)
- anim.addTransitionBooleanCondition(ax_ex_ix_ox_u_state,
- trans, param, u_bool)
-
- chord = [a_bool, e_bool, i_bool, o_bool, u_bool]
- anim_name = f"Sound_a{chord[0]}_e{chord[1]}_i{chord[2]}_o{chord[3]}_u{chord[4]}"
- anim_path = os.path.join(gen_anim_dir, anim_name + ".anim")
- anim_guid = guid_map[anim_path]
- anim.setAnimatorStateAnimation(ax_ex_ix_ox_ux_state, anim_guid)
-
- # Create return-home transitions.
- trans = anim.addTransition(idle_state, dur_s = anim_len_s)
- trans.mapping['AnimatorStateTransition'].mapping['m_InterruptionSource'] = '0'
- param = generate_utils.getSoundParam(1)
- anim.addTransitionBooleanCondition(ax_ex_ix_ox_ux_state, trans, param, 1 - a_bool)
-
- trans = anim.addTransition(idle_state, dur_s = anim_len_s)
- trans.mapping['AnimatorStateTransition'].mapping['m_InterruptionSource'] = '0'
- param = generate_utils.getSoundParam(2)
- anim.addTransitionBooleanCondition(ax_ex_ix_ox_ux_state, trans, param, 1 - e_bool)
-
- trans = anim.addTransition(idle_state, dur_s = anim_len_s)
- trans.mapping['AnimatorStateTransition'].mapping['m_InterruptionSource'] = '0'
- param = generate_utils.getSoundParam(3)
- anim.addTransitionBooleanCondition(ax_ex_ix_ox_ux_state, trans, param, 1 - i_bool)
-
- trans = anim.addTransition(idle_state, dur_s = anim_len_s)
- trans.mapping['AnimatorStateTransition'].mapping['m_InterruptionSource'] = '0'
- param = generate_utils.getSoundParam(4)
- anim.addTransitionBooleanCondition(ax_ex_ix_ox_ux_state, trans, param, 1 - o_bool)
-
- trans = anim.addTransition(idle_state, dur_s = anim_len_s)
- trans.mapping['AnimatorStateTransition'].mapping['m_InterruptionSource'] = '0'
- param = generate_utils.getSoundParam(5)
- anim.addTransitionBooleanCondition(ax_ex_ix_ox_ux_state, trans, param, 1 - u_bool)
-
-def generateFX(guid_map, gen_anim_dir):
- anim = libunity.UnityAnimator()
-
- layers = generateFXController(anim)
-
- # TODO(yum) parallelize
- for byte in range(0, generate_utils.config.BYTES_PER_CHAR):
- for which_layer, layer in layers[byte].items():
- print("Generating layer {}/{}".format(which_layer, len(layers[byte].items())), file=sys.stderr)
- generateFXLayer(which_layer, anim, layer, gen_anim_dir, byte)
-
- generateToggle(generate_utils.getToggleParam(),
- generate_utils.getToggleParam(),
- gen_anim_dir,
- "TaSTT_Toggle_Off.anim",
- "TaSTT_Toggle_On.anim",
- anim, guid_map)
- generateToggle(generate_utils.getLockWorldParam(),
- generate_utils.getLockWorldParam(),
- gen_anim_dir,
- "TaSTT_Lock_World_Disable.anim",
- "TaSTT_Lock_World_Enable.anim",
- anim, guid_map)
- generateToggle(generate_utils.getEllipsisParam(),
- generate_utils.getEllipsisParam(),
- gen_anim_dir,
- "TaSTT_Ellipsis_Off.anim",
- "TaSTT_Ellipsis_On.anim",
- anim, guid_map)
- generateToggle(
- generate_utils.getClearBoardParam(),
- generate_utils.getClearBoardParam(),
- gen_anim_dir,
- None, # No animation in the `off` state.
- generate_utils.getClearAnimationName() + ".anim",
- anim, guid_map)
- generateToggle("TaSTT_Expand",
- generate_utils.getToggleParam(),
- gen_anim_dir,
- "TaSTT_Emerge_000.anim",
- "TaSTT_Emerge_100.anim",
- anim, guid_map, 0.5)
-
- generateScaleLayer(anim, gen_anim_dir, guid_map)
- generateSoundLayer(anim, gen_anim_dir, guid_map)
-
- return anim
-
-def parseArgs():
- print("args: {}".format(" ".join(sys.argv)))
-
- parser = argparse.ArgumentParser()
- parser.add_argument("cmd", type=str, help="")
- parser.add_argument("--config", type=str, help="The app config.")
- parser.add_argument("--gen_dir", type=str, help="The directory under " +
- "which all generated assets are placed")
- parser.add_argument("--gen_anim_dir", type=str, help="The directory under " +
- "which all generated animations are placed.")
- parser.add_argument("--guid_map", type=str, help="The path to a file which will store guids")
- parser.add_argument("--fx_dest", type=str, help="The path at which to save the generated FX controller")
- args = parser.parse_args()
-
- if not args.gen_dir:
- args.gen_dir = "generated/"
-
- if not args.config:
- print("--config required")
- sys.exit(1)
-
- if not args.gen_anim_dir:
- args.gen_anim_dir = args.gen_dir + "animations/"
-
- if not args.guid_map:
- args.guid_map = "guid.map"
-
- if not args.fx_dest:
- args.fx_dest = args.gen_dir + "TaSTT_fx.controller"
-
- return args
-
-if __name__ == "__main__":
- args = parseArgs()
- cfg = app_config.getConfig(args.config)
-
- print(f"chdir to {os.path.dirname(os.path.abspath(__file__))}")
- os.chdir(os.path.dirname(os.path.abspath(__file__)))
-
- if args.cmd == "gen_anims":
- generate_utils.config.BYTES_PER_CHAR = int(cfg["bytes_per_char"])
- generate_utils.config.CHARS_PER_SYNC = int(cfg["chars_per_sync"])
- generate_utils.config.BOARD_ROWS = int(cfg["rows"])
- generate_utils.config.BOARD_COLS = int(cfg["cols"])
-
- guid_map = {}
- with open(args.guid_map, 'rb') as f:
- guid_map = pickle.load(f)
-
- os.makedirs(args.gen_anim_dir, exist_ok=True)
- generateAnimations(args.gen_anim_dir, guid_map)
-
- with open(args.guid_map, 'wb') as f:
- pickle.dump(guid_map, f)
- elif args.cmd == "gen_fx":
- generate_utils.config.BYTES_PER_CHAR = int(cfg["bytes_per_char"])
- generate_utils.config.CHARS_PER_SYNC = int(cfg["chars_per_sync"])
- generate_utils.config.BOARD_ROWS = int(cfg["rows"])
- generate_utils.config.BOARD_COLS = int(cfg["cols"])
-
- guid_map = {}
- with open(args.guid_map, 'rb') as f:
- guid_map = pickle.load(f)
- os.makedirs(os.path.dirname(args.fx_dest), exist_ok=True)
- with open(args.fx_dest, "w", encoding="utf-8") as f:
- f.write(str(generateFX(guid_map, args.gen_anim_dir)))
- with open(args.guid_map, 'wb') as f:
- pickle.dump(guid_map, f)
-
- # If we don't do this, then VRChat will fail to update the animator
- # when users update their avatars.
- if os.path.exists(args.fx_dest + ".meta"):
- os.remove(args.fx_dest + ".meta")
-
diff --git a/Scripts/libunity.py b/Scripts/libunity.py
deleted file mode 100644
index 77eeb95..0000000
--- a/Scripts/libunity.py
+++ /dev/null
@@ -1,1432 +0,0 @@
-#!/usr/bin/env python3
-
-from functools import partial
-
-import argparse
-import copy
-import enum
-import math
-import os
-import pickle
-import random
-import sys
-import typing
-# python3 -m pip install pyyaml
-# License: MIT.
-import yaml
-
-import multiprocessing as mp
-
-WRITE_DEFAULTS_ANIM_TEMPLATE = """
-%YAML 1.1
-%TAG !u! tag:unity3d.com,2011:
---- !u!74 &7400000
-AnimationClip:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: TaSTT_Reset_Animations
- serializedVersion: 6
- m_Legacy: 0
- m_Compressed: 0
- m_UseHighQualityCurve: 1
- m_RotationCurves: []
- m_CompressedRotationCurves: []
- m_EulerCurves: []
- m_PositionCurves: []
- m_ScaleCurves: []
- m_FloatCurves:
- - curve:
- serializedVersion: 2
- m_Curve:
- - serializedVersion: 3
- time: 0
- value: 0
- inSlope: 0
- outSlope: 0
- tangentMode: 136
- weightedMode: 0
- inWeight: 0
- outWeight: 0
- m_PreInfinity: 2
- m_PostInfinity: 2
- m_RotationOrder: 4
- attribute: REPLACEME_ATTRIBUTE
- path: REPLACEME_PATH
- classID: 137
- script: {fileID: 0}
- m_PPtrCurves: []
- m_SampleRate: 60
- m_WrapMode: 0
- m_Bounds:
- m_Center: {x: 0, y: 0, z: 0}
- m_Extent: {x: 0, y: 0, z: 0}
- m_ClipBindingConstant:
- genericBindings:
- - serializedVersion: 2
- path: 2794480623
- attribute: 2284639795
- script: {fileID: 0}
- typeID: 137
- customType: 22
- isPPtrCurve: 0
- pptrCurveMapping: []
- m_AnimationClipSettings:
- serializedVersion: 2
- m_AdditiveReferencePoseClip: {fileID: 0}
- m_AdditiveReferencePoseTime: 0
- m_StartTime: 0
- m_StopTime: 0
- m_OrientationOffsetY: 0
- m_Level: 0
- m_CycleOffset: 0
- m_HasAdditiveReferencePose: 0
- m_LoopTime: 1
- m_LoopBlend: 0
- m_LoopBlendOrientation: 0
- m_LoopBlendPositionY: 0
- m_LoopBlendPositionXZ: 0
- m_KeepOriginalOrientation: 0
- m_KeepOriginalPositionY: 1
- m_KeepOriginalPositionXZ: 0
- m_HeightFromFeet: 0
- m_Mirror: 0
- m_EditorCurves:
- - curve:
- serializedVersion: 2
- m_Curve:
- - serializedVersion: 3
- time: 0
- value: 0
- inSlope: 0
- outSlope: 0
- tangentMode: 136
- weightedMode: 0
- inWeight: 0
- outWeight: 0
- m_PreInfinity: 2
- m_PostInfinity: 2
- m_RotationOrder: 4
- attribute: REPLACEME_ATTRIBUTE
- path: REPLACEME_PATH
- classID: 137
- script: {fileID: 0}
- m_EulerEditorCurves: []
- m_HasGenericRootTransform: 0
- m_HasMotionFloatCurves: 0
- m_Events: []
-"""[1:][:-1]
-
-METADATA_TEMPLATE = """
-fileFormatVersion: 2
-guid: REPLACEME_GUID
-NativeFormatImporter:
- externalObjects: {}
- mainObjectFileID: 7400000
- userData:
- assetBundleName:
- assetBundleVariant:
-"""[1:][:-1]
-
-ANIMATION_STATE_TEMPLATE = """
---- !u!1102 &110200000
-AnimatorState:
- serializedVersion: 6
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: REPLACEME_ANIMATION_NAME
- m_Speed: 1
- m_CycleOffset: 0
- m_Transitions: []
- 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: {}
- m_Tag:
- m_SpeedParameter:
- m_MirrorParameter:
- m_CycleOffsetParameter:
- m_TimeParameter:
-"""[1:][:-1]
-
-TRANSITION_TEMPLATE = """
---- !u!1101 &110100000
-AnimatorStateTransition:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name:
- m_Conditions: []
- m_DstStateMachine: {fileID: 0}
- m_DstState: {fileID: 0}
- m_Solo: 0
- m_Mute: 0
- m_IsExit: 0
- serializedVersion: 3
- m_TransitionDuration: 0
- m_TransitionOffset: 0
- m_ExitTime: 0.0
- m_HasExitTime: 0
- m_HasFixedDuration: 1
- m_InterruptionSource: 2
- m_OrderedInterruption: 1
- m_CanTransitionToSelf: 1
-"""[1:][:-1]
-
-BLEND_TREE_TEMPLATE = """
---- !u!206 &1071664566462684110
-BlendTree:
- m_ObjectHideFlags: 1
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: REPLACEME_BLEND_TREE_NAME
- m_Childs:
- - serializedVersion: 2
- m_Motion: {fileID: 7400000, guid: REPLACEME_GUID_LO, type: 2}
- m_Threshold: -1
- m_Position: {x: 0, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: REPLACEME_BLEND_PARAMETER
- m_Mirror: 0
- - serializedVersion: 2
- m_Motion: {fileID: 7400000, guid: REPLACEME_GUID_HI, type: 2}
- m_Threshold: 1
- m_Position: {x: 0, y: 0}
- m_TimeScale: 1
- m_CycleOffset: 0
- m_DirectBlendParameter: REPLACEME_BLEND_PARAMETER
- m_Mirror: 0
- m_BlendParameter: REPLACEME_BLEND_PARAMETER
- m_BlendParameterY: REPLACEME_BLEND_PARAMETER
- m_MinThreshold: -1
- m_MaxThreshold: 1
- m_UseAutomaticThresholds: 0
- m_NormalizedBlendValues: 0
- m_BlendType: 0
-"""[1:][:-1]
-
-class Metadata:
- def __init__(self):
- self.guid = "%032x" % random.randrange(16 ** 32)
-
- def load(self, path):
- if not path.endswith(".meta"):
- path = path + ".meta"
-
- self.guid = None
- with open(path, "r", encoding="utf-8") as f:
- for line in f:
- if line.startswith("guid"):
- self.guid = line.split()[1]
-
- def loadOrCreate(self, path, guid_map):
- if not path.endswith(".meta"):
- path = path + ".meta"
-
- if os.path.exists(path):
- self.load(path)
- return
-
- self.persist(path, guid_map)
-
- def persist(self, path, guid_map):
- with open(path, "w", encoding="utf-8") as f:
- f.write(str(self))
-
- guid_map[self.guid] = path
- guid_map[path] = self.guid
-
- def __str__(self):
- return METADATA_TEMPLATE.replace("REPLACEME_GUID", self.guid)
-
-class Node:
- def __init__(self):
- # Optional. In Unity, this is the fileID of an object. Not all YAML
- # mappings have an anchor.
- self.anchor = None
-
- # Pointer to the Node containing this one.
- self.parent = None
-
-class Sequence(Node):
- def __init__(self):
- super().__init__()
- self.sequence = []
-
- def copy(self):
- new = Sequence()
- new.anchor = self.anchor
- new.parent = self.parent
-
- for v in self.sequence:
- if hasattr(v, "copy"):
- new.sequence.append(v.copy())
- new.sequence[-1].parent = new
- else:
- new.sequence.append(v)
-
- return new
-
- def prettyPrint(self, first_indent=None, leading_newline=None):
- depth = 0
- p = self.parent
- while p != None:
- depth += 1
- p = p.parent
- indent = " " * depth
-
- lines = []
- first = True
- for item in self.sequence:
- cur_indent = indent
- if first:
- if first_indent != None:
- cur_indent = first_indent
- first = False
- if hasattr(item, "prettyPrint"):
- lines.append("{}- {}".format(cur_indent, item.prettyPrint(first_indent="", leading_newline=False)))
- else:
- lines.append("{}- {}".format(cur_indent, item))
-
- if len(lines) == 0:
- return "[]"
-
- return "\n" + '\n'.join(lines)
-
- def __str__(self):
- return self.prettyPrint()
-
- def addChildMapping(self, anchor = None, add_to_head = False):
- child = Mapping()
- child.anchor = anchor
- child.parent = self
- child.sequence = []
-
- if add_to_head:
- self.sequence = [child] + self.sequence
- else:
- self.sequence.append(child)
-
- return child
-
- def addChildSequence(self, anchor = None):
- child = Sequence()
- child.anchor = anchor
- child.parent = self
- child.sequence = []
-
- self.sequence.append(child)
-
- return child
-
- def forEach(self, cb):
- for k in self.sequence:
- cb(k)
-
-class Mapping(Node):
- def __init__(self):
- super().__init__()
- self.mapping = {}
-
- def copy(self):
- new = Mapping()
- new.anchor = self.anchor
- new.parent = self.parent
-
- for k, v in self.mapping.items():
- if hasattr(v, "copy"):
- new.mapping[k] = v.copy()
- new.mapping[k].parent = new
- else:
- new.mapping[k] = v
-
- return new
-
- def prettyPrint(self, first_indent=None, leading_newline=True):
- depth = 0
- p = self.parent
- while p != None:
- depth += 1
- p = p.parent
- indent = " " * depth
-
- lines = []
- first = True
- for k, v in self.mapping.items():
- cur_indent = indent
- if first:
- if first_indent != None:
- cur_indent = first_indent
- first = False
- lines.append("{}{}: {}".format(cur_indent, k, v))
-
- result = '\n'.join(lines)
-
- # Inline 1-item mappings, matching Unity behavior.
- if len(self.mapping.keys()) == 1 and len(result.split("\n")) == 1:
- if first_indent == None:
- return self.prettyPrint(first_indent="")
- return "{" + lines[0] + "}"
-
- # Empty mappings are represented by '{}'. If we don't do this, Unity
- # will assume that they are Sequences and get very sad.
- if len(self.mapping.keys()) == 0:
- return "{}"
-
- if leading_newline:
- result = "\n" + result
-
- return result
-
- def __str__(self):
- return self.prettyPrint()
-
- def addChildMapping(self, key, anchor = None):
- child = Mapping()
- child.anchor = anchor
- child.parent = self
- child.mapping = {}
-
- self.mapping[key] = child
-
- return child
-
- def addChildSequence(self, key, anchor = None):
- child = Sequence()
- child.anchor = anchor
- child.parent = self
- child.mapping = {}
-
- self.mapping[key] = child
-
- return child
-
- def forEach(self, cb):
- for k, v in self.mapping.items():
- cb(v)
-
-class UnityDocument(Mapping):
- def __init__(self):
- super().__init__()
- self.class_id = None
-
- def __str__(self):
- return super().__str__()
-
- def copy(self):
- result = super().copy()
- result.class_id = self.class_id
- return result
-
-# Class representing a Unity AnimatorController. Implements manipulations, like
-# merging and reanchoring.
-class UnityAnimator():
- def __init__(self):
- self.nodes = []
- self.id_to_node = {}
- self.next_id = 1000 * 1000
-
- def __str__(self):
- return unityYamlToString(self.nodes)
-
- def addNodes(self, nodes):
- for node in nodes:
- self.nodes.append(node)
- anchor = node.anchor
- if anchor == None:
- anchor = self.allocateId()
- if anchor in self.id_to_node:
- raise Exception("Duplicate anchor: {}, node 1: {}, node 2: {}".format(anchor, str(node), str(self.id_to_node[anchor])))
- self.id_to_node[anchor] = node
-
- if int(anchor) > self.next_id:
- self.next_id = int(anchor) + 1
- # I don't know why but this fixes a bug in the `fixWriteDefaults`
- # codepath: two documents wind up with the same anchor.
- self.next_id += 1
-
- def allocateId(self) -> int:
- result = self.next_id
- self.next_id += 1
- return result
-
- # Checks if `old_id` is in `self.id_mapping`, and if so, returns the
- # already-generated ID. Otherwise this allocates a new ID and
- # records it in `self.id_mapping`.
- def mapId(self, old_id: str) -> int:
- new_id = None
- if old_id in self.id_mapping.keys():
- new_id = self.id_mapping[old_id]
- else:
- new_id = self.allocateId()
- self.id_mapping[old_id] = new_id
- return new_id
-
- # Recursively iterate every mapping under `node` and assign new IDs to
- # every identifier. Mappings are recorded in `self.id_mapping`.
- def mergeIterator(self, node):
- if hasattr(node, "mapping"):
- # Don't relabel anything that's defined in an external file.
- # TODO(yum) do this.
- if 'fileID' in node.mapping and not 'guid' in node.mapping:
- if node.mapping['fileID'] != '0':
- old_id = node.mapping['fileID']
- new_id = self.mapId(old_id)
- node.mapping['fileID'] = str(new_id)
- if hasattr(node, "forEach"):
- node.forEach(self.mergeIterator)
-
- # Delete any key-value pairs where the value == the value.
- def scrubReferencesByValue(self, node, values: typing.Set[str]):
- if hasattr(node, "mapping"):
- node.mapping = {k: v for k, v in node.mapping.items() if v not in values}
- if hasattr(node, "forEach"):
- node.forEach(partial(self.scrubReferencesByValue, values=values))
-
- def peekNodeOfClass(self, classId):
- for node in self.nodes:
- if node.class_id == classId:
- return node
- return None
-
- def popNodeOfClass(self, classId):
- result = None
- for node in self.nodes:
- if node.class_id == classId:
- result = node
- self.nodes.remove(result)
- break
- if result:
- del self.id_to_node[result.anchor]
- return result
-
- def pushNode(self, node):
- self.nodes.append(node)
- self.id_to_node[node.anchor] = node
-
- # Merges two animator controllers and returns the result. Any identifiers
- # in the animators are reassigned in a new namespace. The mappings from old
- # identifiers to new identifiers are recorded in `self.id_mapping0` and
- # `self.id_mapping1`.
- def mergeAnimatorControllers(self, ctrl0, ctrl1):
- ctrl0 = copy.deepcopy(ctrl0)
- ctrl1 = copy.deepcopy(ctrl1)
-
- self.id_mapping0 = {}
- self.id_mapping1 = {}
-
- p0 = ctrl0.mapping['AnimatorController'].mapping['m_AnimatorParameters']
- p1 = ctrl1.mapping['AnimatorController'].mapping['m_AnimatorParameters']
-
- a0 = ctrl0.mapping['AnimatorController'].mapping['m_AnimatorLayers']
- a1 = ctrl1.mapping['AnimatorController'].mapping['m_AnimatorLayers']
-
- self.id_mapping = self.id_mapping0
- p0.forEach(self.mergeIterator)
- a0.forEach(self.mergeIterator)
-
- # Hack to prevent ctrl1 from getting a new ID for the animator.
- # TODO(yum) delete this?
- #del self.class_to_next_id['91']
-
- self.id_mapping = self.id_mapping1
- p1.forEach(self.mergeIterator)
- a1.forEach(self.mergeIterator)
-
- p0.sequence += p1.sequence
- a0.sequence += a1.sequence
-
- for elm in p0.sequence:
- elm.mapping['m_Controller'].mapping['fileID'] = ctrl0.anchor
- for elm in a0.sequence:
- elm.mapping['m_Controller'].mapping['fileID'] = ctrl0.anchor
-
- return ctrl0
-
- def merge(self, other):
- ctrl0 = self.popNodeOfClass('91')
- ctrl1 = other.popNodeOfClass('91')
- # Merge animators and populate `self.id_mapping0` and
- # `self.id_mapping1.
- merged_anim = self.mergeAnimatorControllers(ctrl0, ctrl1)
-
- # Mapping from class ID (string) to new class ID (int)
- self.id_mapping = self.id_mapping0
- for node in self.nodes:
- new_id = self.mapId(node.anchor)
- node.anchor = str(new_id)
- node.forEach(self.mergeIterator)
-
- self.id_mapping = self.id_mapping1
- for node in other.nodes:
- new_id = self.mapId(node.anchor)
- node.anchor = str(new_id)
- node.forEach(self.mergeIterator)
-
- nodes = self.nodes
- self.nodes = []
- self.id_to_node = {}
- self.pushNode(merged_anim)
- self.addNodes(nodes)
- self.addNodes(other.nodes)
-
- # TODO(yum) support overwriting duplicates
- def addParameter(self, param_name, param_type):
- unity_type = None
- if param_type == float:
- unity_type = '1'
- elif param_type == int:
- unity_type = '3'
- elif param_type == bool:
- unity_type = '4'
-
- anim = self.peekNodeOfClass('91')
- params = anim.mapping['AnimatorController'].mapping['m_AnimatorParameters']
-
- for p in params.sequence:
- if p.mapping['m_Name'] == param_name:
- return
-
- param = params.addChildMapping()
- param.mapping['m_Name'] = param_name
- param.mapping['m_Type'] = unity_type
- param.mapping['m_DefaultFloat'] = '0'
- param.mapping['m_DefaultInt'] = '0'
- param.mapping['m_DefaultBool'] = '0'
- ctrl = param.addChildMapping('m_Controller')
- ctrl.mapping['fileID'] = anim.anchor
-
- def addLayer(self, layer_name, add_to_head = False, weight: float = 1.0) -> UnityDocument:
- # Add layer to controller
- anim = self.peekNodeOfClass('91')
- layers = anim.mapping['AnimatorController'].mapping['m_AnimatorLayers']
- layer = layers.addChildMapping(add_to_head = add_to_head)
- layer.mapping['serializedVersion'] = '5'
- layer.mapping['m_Name'] = layer_name
- new_id = self.allocateId()
- layer.addChildMapping('m_StateMachine').mapping['fileID'] = str(new_id)
- layer.addChildMapping('m_Mask').mapping['fileID'] = '0'
- layer.addChildSequence('m_Motions')
- layer.addChildSequence('m_Behaviours')
- layer.mapping['m_BlendingMode'] = '0'
- layer.mapping['m_SyncedLayerIndex'] = '-1'
- layer.mapping['m_DefaultWeight'] = str(weight)
- layer.mapping['m_IKPass'] = '0'
- layer.mapping['m_SyncedLayerAffectsTiming'] = '0'
- layer.addChildMapping('m_Controller').mapping['fileID'] = anim.anchor
-
- # Create layer object
- layer = UnityDocument()
- layer.class_id = "1107"
- layer.anchor = str(new_id)
- mach = layer.addChildMapping('AnimatorStateMachine')
-
- mach.mapping['serializedVersion'] = '6'
-
- mach.mapping['m_ObjectHideFlags'] = '1'
- mach.addChildMapping('m_CorrespondingSourceObject').mapping['fileID'] = '0'
- mach.addChildMapping('m_PrefabInstance').mapping['fileID'] = '0'
- mach.addChildMapping('m_PrefabAsset').mapping['fileID'] = '0'
- mach.mapping['m_Name'] = layer_name
- mach.addChildSequence('m_ChildStates')
- mach.addChildSequence('m_ChildStateMachines')
- mach.addChildSequence('m_AnyStateTransitions')
- mach.addChildSequence('m_EntryTransitions')
- mach.addChildMapping('m_StateMachineTransitions')
- mach.addChildSequence('m_StateMachineBehaviours')
- pos = mach.addChildMapping('m_AnyStatePosition')
- pos.mapping['x'] = '50'
- pos.mapping['y'] = '20'
- pos.mapping['z'] = '0'
- pos = mach.addChildMapping('m_EntryPosition')
- pos.mapping['x'] = '50'
- pos.mapping['y'] = '120'
- pos.mapping['z'] = '0'
- pos = mach.addChildMapping('m_ExitPosition')
- pos.mapping['x'] = '800'
- pos.mapping['y'] = '120'
- pos.mapping['z'] = '0'
- pos = mach.addChildMapping('m_ParentStateMachinePosition')
- pos.mapping['x'] = '800'
- pos.mapping['y'] = '20'
- pos.mapping['z'] = '0'
- mach.addChildMapping('m_DefaultState')
-
- self.nodes.append(layer)
- return layer
-
- def addAnimatorState(self, layer, state_name, is_default_state = False,
- dx = 0, dy = 0) -> UnityDocument:
- # Create animation state
- parser = UnityParser()
- parser.parse(ANIMATION_STATE_TEMPLATE)
- new_anim = UnityAnimator()
- new_anim.addNodes(parser.nodes)
- node = new_anim.nodes[0]
-
- new_id = self.allocateId()
- node.class_id = "1102"
- node.anchor = str(new_id)
- state = node.mapping['AnimatorState']
- state.mapping['m_Name'] = state_name
- #state.mapping['m_Motion'].mapping['guid'] = anim_guid
- self.nodes.append(node)
-
- # Add state to layer
- child_state = layer.mapping['AnimatorStateMachine'].mapping['m_ChildStates'].addChildMapping()
- child_state.mapping['serializedVersion'] = '1'
- child_state.addChildMapping('m_State').mapping['fileID'] = str(new_id)
- state_pos = child_state.addChildMapping('m_Position')
- state_pos.mapping['x'] = str(280 + dx)
- state_pos.mapping['y'] = str(80 + dy)
- state_pos.mapping['z'] = '0'
-
- if is_default_state:
- layer.mapping['AnimatorStateMachine'].mapping['m_DefaultState'].mapping['fileID'] = str(new_id)
-
- return node
-
- def setAnimatorStateAnimation(self, anim_state, anim_guid):
- anim_state.mapping['AnimatorState'].mapping['m_Motion'].mapping['guid'] = anim_guid
- anim_state.mapping['AnimatorState'].mapping['m_Motion'].mapping['fileID'] = '7400000'
- anim_state.mapping['AnimatorState'].mapping['m_Motion'].mapping['type'] = '2'
-
- # Adds a blend tree which uses the parameter named `param_name` to blend
- # between anim_lo and anim_hi. Also creates the corresponding animation
- # state.
- def addAnimatorBlendTree(self, layer, state_name, param_name,
- anim_guid_lo, anim_guid_hi, dx = 0, dy = 0,
- lo_threshold = -1.0, hi_threshold = 1.0,
- is_default_state = False) -> UnityDocument:
- # Create the blend tree.
- parser = UnityParser()
- parser.parse(BLEND_TREE_TEMPLATE)
- new_anim = UnityAnimator()
- new_anim.addNodes(parser.nodes)
- node = new_anim.nodes[0]
-
- new_id = self.allocateId()
- node.class_id = "206"
- node.anchor = str(new_id)
- tree = node.mapping['BlendTree']
- tree.mapping['m_Name'] = state_name
- # Low animation
- tree.mapping['m_Childs'].sequence[0].mapping['m_Motion'].mapping['guid'] = anim_guid_lo
- tree.mapping['m_Childs'].sequence[0].mapping['m_DirectBlendParameter'] = param_name
- tree.mapping['m_Childs'].sequence[0].mapping['m_Threshold'] = str(lo_threshold)
- # High animation
- tree.mapping['m_Childs'].sequence[1].mapping['m_Motion'].mapping['guid'] = anim_guid_hi
- tree.mapping['m_Childs'].sequence[1].mapping['m_DirectBlendParameter'] = param_name
- tree.mapping['m_Childs'].sequence[1].mapping['m_Threshold'] = str(hi_threshold)
-
- tree.mapping['m_BlendParameter'] = param_name
- tree.mapping['m_BlendParameterY'] = param_name
-
- self.nodes.append(node)
-
- # Create the corresponding animation state.
- anim_state = self.addAnimatorState(layer, state_name, is_default_state, dx = dx, dy =
- dy)
- anim_state.mapping['AnimatorState'].mapping['m_Motion'].mapping['fileID'] = node.anchor
-
- return anim_state
-
- def addTransition(self, dst_state, dur_s = 0.0):
- # Create animation state
- parser = UnityParser()
- parser.parse(TRANSITION_TEMPLATE)
- new_transition = UnityAnimator()
- new_transition.addNodes(parser.nodes)
- node = new_transition.nodes[0]
-
- new_id = self.allocateId()
- node.class_id = "1101"
- node.anchor = str(new_id)
- state = node.mapping['AnimatorStateTransition']
- state.mapping['m_DstState'].mapping['fileID'] = copy.copy(dst_state.anchor)
- state.mapping['m_TransitionDuration'] = dur_s
- self.nodes.append(node)
-
- return node
-
- def fixWriteDefaults(self, guid_map, generated_anim_path):
- # TODO(yum) we should have an Animation class which encapsulates all
- # this stuff.
- parser = UnityParser()
- parser.parse(WRITE_DEFAULTS_ANIM_TEMPLATE)
- new_anim = UnityAnimator()
- new_anim.addNodes(parser.nodes)
-
- new_clip = new_anim.peekNodeOfClass('74').mapping['AnimationClip']
- curve_template = new_clip.mapping['m_FloatCurves'].sequence[0]
- new_clip.mapping['m_FloatCurves'].sequence = []
- new_clip.mapping['m_EditorCurves'].sequence = []
-
- # Keep track of the (attribute, path) tuples we've already set to avoid
- # animating the same thing twice.
- attributes_set = set()
-
- animator_state_id = '1102'
- for node in self.nodes:
- if node.class_id != animator_state_id:
- continue
-
- # Looking at an animator state.
- if node.mapping['AnimatorState'].mapping['m_WriteDefaultValues'] != '1':
- continue
-
- # Disable write defaults.
- node.mapping['AnimatorState'].mapping['m_WriteDefaultValues'] = '0'
-
- # Looking at an animator state with write defaults.
- motion = node.mapping['AnimatorState'].mapping['m_Motion']
- # Some animations have write defaults but don't trigger an
- # animation. No idea what that's about. For now, just ignore.
- if not 'guid' in motion.mapping:
- continue
- guid = motion.mapping['guid']
-
- # Again, not really sure what's going on here, just ignore and
- # revisit if we hit problems.
- if not guid in guid_map.keys():
- continue
-
- # OK, we found an animation with write defaults, and we know where
- # the animation lives. Crack it open and see what it's writing.
- animation_path = guid_map[guid]
- print("Animation has write defaults: {}".format(animation_path), file=sys.stderr)
- parser = UnityParser()
- parser.parseFile(animation_path)
- anim = UnityAnimator()
- anim.addNodes(parser.nodes)
-
- clip = anim.peekNodeOfClass('74')
-
- for curve in clip.mapping['AnimationClip'].mapping['m_FloatCurves'].sequence:
- attr = curve.mapping['attribute']
- path = curve.mapping['path']
- if (attr, path) in attributes_set:
- continue
- #print("Fix attr/path {}/{}".format(attr, path), file=sys.stderr)
- attributes_set.add((attr, path))
-
- new_curve = curve_template.copy()
- new_curve.mapping['attribute'] = attr
- new_curve.mapping['path'] = path
-
- new_clip.mapping['m_FloatCurves'].sequence.append(new_curve)
- new_clip.mapping['m_EditorCurves'].sequence.append(new_curve)
-
- #print("len float curves: {}".format(len(new_clip.mapping['m_FloatCurves'].sequence)), file=sys.stderr)
-
- def generateOffAnimationForGuid(self, guid_map, generated_anim_dir, guid):
- # Looking at an animation.
- if not guid in guid_map.keys():
- return
-
- animation_path = guid_map[guid]
- print("Checking animation at {}".format(animation_path), file=sys.stderr)
- parser = UnityParser()
- parser.parseFile(animation_path)
- anim = UnityAnimator()
- anim.addNodes(parser.nodes)
-
- clip = anim.peekNodeOfClass('74')
-
- has_nonzero = False
- curve_members = ["m_FloatCurves", "m_EditorCurves"]
- for memb in curve_members:
- for curve in clip.mapping['AnimationClip'].mapping[memb].sequence:
- attr = curve.mapping['attribute']
- path = curve.mapping['path']
-
- for m_curve in curve.mapping['curve'].mapping['m_Curve'].sequence:
- if m_curve.mapping['value'] != '0':
- has_nonzero = True
- m_curve.mapping['value'] = '0'
-
- if not has_nonzero:
- print("Animation does not set anything nonzero")
- return
-
- print("Animation sets things nonzero, fixing")
-
- new_anim_path = "OFF_{}".format(os.path.basename(animation_path))
- new_anim_path = "{}/{}".format(generated_anim_dir, new_anim_path)
-
- with open(new_anim_path, "w", encoding="utf-8") as f:
- f.write(str(anim))
-
- meta = Metadata()
- with open(new_anim_path + ".meta", "w", encoding="utf-8") as f:
- f.write(str(meta))
-
- def generateOffAnimationsAnimStates(self, guid_map, generated_anim_dir):
- animator_state_id = '1102'
- for node in self.nodes:
- if node.class_id != animator_state_id:
- continue
-
- # Looking at an animation state.
- motion = node.mapping['AnimatorState'].mapping['m_Motion']
- if not 'guid' in motion.mapping:
- continue
- guid = motion.mapping['guid']
- self.generateOffAnimationForGuid(guid_map, generated_anim_dir, guid)
-
-
- def generateOffAnimationsBlendTrees(self, guid_map, generated_anim_dir):
- animator_state_id = '206'
- for node in self.nodes:
- if node.class_id != animator_state_id:
- continue
-
- # Looking at an animation state.
- for child in node.mapping['BlendTree'].mapping['m_Childs'].sequence:
- motion = child.mapping['m_Motion']
-
- if not 'guid' in motion.mapping:
- continue
- guid = motion.mapping['guid']
- self.generateOffAnimationForGuid(guid_map, generated_anim_dir, guid)
-
- def generateOffAnimations(self, guid_map, generated_anim_dir):
- self.generateOffAnimationsAnimStates(guid_map, generated_anim_dir)
- self.generateOffAnimationsBlendTrees(guid_map, generated_anim_dir)
-
- def addTransitionBooleanCondition(self, from_state, trans, param, branch):
- # Populate the transition's condition logic.
- cond = trans.mapping['AnimatorStateTransition'].mapping['m_Conditions'].addChildMapping()
- if branch:
- cond.mapping['m_ConditionMode'] = '1'
- else:
- cond.mapping['m_ConditionMode'] = '2'
- cond.mapping['m_ConditionEvent'] = param
- cond.mapping['m_EventThreshold'] = '0'
- # Register the transition with the `from_state`.
- if from_state:
- from_state_trans = from_state.mapping['AnimatorState'].mapping['m_Transitions'].addChildMapping()
- from_state_trans.mapping['fileID'] = copy.copy(trans.anchor)
-
- def addTransitionIntegerEqualityCondition(self, from_state, trans, param, param_val):
- # Populate the transition's condition logic.
- cond = trans.mapping['AnimatorStateTransition'].mapping['m_Conditions'].addChildMapping()
- cond.mapping['m_ConditionMode'] = '6'
- cond.mapping['m_ConditionEvent'] = param
- # Curiously, the typo ("treshold" only has 1 'h') is needed for this to
- # work, but not for boolean conditions to work.
- cond.mapping['m_EventTreshold'] = str(param_val)
- # Register the transition with the `from_state`.
- if from_state:
- from_state_trans = from_state.mapping['AnimatorState'].mapping['m_Transitions'].addChildMapping()
- from_state_trans.mapping['fileID'] = trans.anchor
-
- def addTransitionIntegerGreaterCondition(self, from_state, trans, param, param_val):
- # Populate the transition's condition logic.
- cond = trans.mapping['AnimatorStateTransition'].mapping['m_Conditions'].addChildMapping()
- cond.mapping['m_ConditionMode'] = '3'
- cond.mapping['m_ConditionEvent'] = param
- cond.mapping['m_EventThreshold'] = str(param_val)
- # Register the transition with the `from_state`.
- if from_state:
- from_state_trans = from_state.mapping['AnimatorState'].mapping['m_Transitions'].addChildMapping()
- from_state_trans.mapping['fileID'] = trans.anchor
-
- # TODO(yum) this should be factored out into generate_fx.py
- def addTasttToggle(self, off_anim_path, on_anim_path, toggle_param,
- guid_map):
- self.addParameter(toggle_param, bool)
-
- off_anim_meta = Metadata()
- off_anim_meta.loadOrCreate(off_anim_path, guid_map)
-
- on_anim_meta = Metadata()
- on_anim_meta.loadOrCreate(on_anim_path, guid_map)
-
- layer = self.addLayer('TaSTT_Toggle')
- off_anim = self.addAnimatorState(layer, 'TaSTT_Toggle_Off', is_default_state = True)
- self.setAnimatorStateAnimation(off_anim, off_anim_meta.guid)
- on_anim = self.addAnimatorState(layer, 'TaSTT_Toggle_On')
- self.setAnimatorStateAnimation(on_anim, on_anim_meta.guid)
-
- # TODO(yum) make a Transition class with methods for adding boolean
- # conditions
- off_to_on = self.addTransition(on_anim)
- self.addTransitionBooleanCondition(off_anim, off_to_on, toggle_param, True)
-
- on_to_off = self.addTransition(off_anim)
- self.addTransitionBooleanCondition(on_anim, on_to_off, toggle_param, False)
-
- def setNoopAnimations(self, guid_map, noop_anim_path):
- noop_anim_meta = Metadata()
- noop_anim_meta.loadOrCreate(noop_anim_path, guid_map)
-
- for node in self.nodes:
- if node.class_id != "1102":
- continue
- motion = node.mapping['AnimatorState'].mapping['m_Motion']
- replace = False
-
- name = node.mapping['AnimatorState'].mapping['m_Name']
- anchor = node.anchor
-
- # As of 8 May 2023, idle states look like this:
- # m_Motion: {fileID: 7400000, guid: e5881c5b0c09be854b0fd6fd8144333f, type: 2}
- # Before that, they looked like this:
- # m_Motion: {fileID: 0}
- # The first predicate looks for the new pattern.
- # The second predicate looks for the second pattern.
- if "fileID" in motion.mapping.keys() and \
- "guid" in motion.mapping.keys() and \
- not motion.mapping["guid"] in guid_map:
- motion.mapping["fileID"] = "7400000"
- print(f"Set noop animation to guid {noop_anim_meta.guid} in state {node.anchor}")
- motion.mapping["guid"] = noop_anim_meta.guid
- motion.mapping["type"] = "2"
- elif not ("fileID" in motion.mapping.keys() and
- motion.mapping["fileID"] != "0") and not ("guid" in
- motion.mapping.keys() and motion.mapping["guid"] in
- guid_map):
- motion.mapping["fileID"] = "7400000"
- print(f"Set noop animation to guid {noop_anim_meta.guid} in state {node.anchor}")
- motion.mapping["guid"] = noop_anim_meta.guid
- motion.mapping["type"] = "2"
- else:
- #print(f"Skipping state {anchor} / {name}")
- pass
-
-def unityYamlToString(nodes):
- lines = []
- preamble = """
-%YAML 1.1
-%TAG !u! tag:unity3d.com,2011:
-"""[1:][:-1]
- if len(nodes) > 1 or (len(nodes) == 1 and nodes[0].anchor):
- lines.append(preamble)
- for doc in nodes:
- if len(nodes) > 1 or (len(nodes) == 1 and nodes[0].anchor):
- lines.append("--- !u!" + doc.class_id + " &" + doc.anchor)
- lines.append(str(doc))
- result = '\n'.join(lines)
-
- for i in range(0,10):
- result = result.replace("\n\n", "\n")
-
- return result
-
-class UnityParser:
- STREAM_START = 100
- STREAM_END = 199
-
- DOCUMENT_START = 200
- DOCUMENT_END = 299
-
- MAPPING_START = 300
- MAPPING_KEY = 301
-
- SEQUENCE_VALUE = 400
-
- def __init__(self):
- self.state = self.STREAM_START
- self.cur_scalar = None
- self.cur_node = None
-
- # Simple list of parsed documents. Populated by parse().
- self.nodes = []
- self.prev_states = []
-
- def __str__(self):
- return unityYamlToString(self.nodes)
-
- def pushState(self, state):
- self.prev_states.append(self.state)
- self.state = state
- #print("state {} ({})".format(self.state, len(self.prev_states)))
-
- def popState(self):
- self.state = self.prev_states[-1]
- self.prev_states = self.prev_states[0:len(self.prev_states) - 1]
- #print("state {} ({})".format(self.state, len(self.prev_states)))
- return self.state
-
- def cleanYaml(self, yaml_str):
- lines = []
- first_document = True
- got_document = False
- for line in yaml_str.split("\n"):
- # Add end-of-document indicators.
- if line.startswith("---"):
- got_document = True
- if not first_document:
- lines.append("...\n")
- first_document = False
-
- # Remove class ID tag from each block.
- if line.startswith("---"):
- parts = line.split()
- lines.append(parts[0] + " " + parts[2] + "\n")
- continue
- lines.append(line)
-
- if got_document:
- lines.append("...\n")
- return '\n'.join(lines)
-
- def getClassIds(self, yaml_str):
- anchor_to_class_id = {}
- for line in yaml_str.split("\n"):
- if not line.startswith("---"):
- continue
-
- parts = line.split()
- class_id = parts[1][3:]
- anchor = parts[2][1:]
- anchor_to_class_id[anchor] = class_id
-
- return anchor_to_class_id
-
- def parseFile(self, yaml_file):
- yaml_str = ""
- with open(yaml_file, "r", encoding="utf-8") as f:
- yaml_str = f.read()
- return self.parse(yaml_str)
-
- def parse(self, yaml_str):
- anchor_to_class_id = self.getClassIds(yaml_str)
- yaml_str = self.cleanYaml(yaml_str)
-
- for event in yaml.parse(yaml_str):
- if isinstance(event, yaml.StreamStartEvent):
- if len(self.prev_states) > 0:
- raise Exception("Multiple StreamStartEvents received")
- self.pushState(self.STREAM_START)
-
- elif isinstance(event, yaml.StreamEndEvent):
- if self.state != self.STREAM_START:
- raise Exception("Document end received after state {}".format(self.state))
- self.popState()
- if len(self.prev_states) > 0:
- raise Exception("Extra states at stream end")
-
- elif isinstance(event, yaml.DocumentStartEvent):
- if self.state != self.STREAM_START and self.state != self.DOCUMENT_END:
- raise Exception("Document start received after state {}".format(self.state))
- self.pushState(self.DOCUMENT_START)
-
- elif isinstance(event, yaml.DocumentEndEvent):
- if self.state != self.DOCUMENT_START:
- raise Exception("Document end received after state {}".format(self.state))
- self.popState()
- self.nodes.append(self.cur_node)
- self.cur_node = None
-
- elif isinstance(event, yaml.MappingStartEvent):
- if self.cur_node == None:
- self.cur_node = UnityDocument()
- self.cur_node.anchor = event.anchor
- if event.anchor:
- self.cur_node.class_id = anchor_to_class_id[event.anchor]
- else:
- self.cur_node = self.cur_node.addChildMapping(self.cur_scalar)
- self.pushState(self.MAPPING_START)
-
- elif isinstance(event, yaml.MappingEndEvent):
- if self.state != self.MAPPING_START:
- raise Exception("Mapping end received after state {}".format(self.state))
- self.popState()
- if self.state == self.MAPPING_KEY:
- self.popState()
- if self.cur_node.parent != None:
- self.cur_node = self.cur_node.parent
-
- elif isinstance(event, yaml.SequenceStartEvent):
- self.cur_node = self.cur_node.addChildSequence(self.cur_scalar)
- self.pushState(self.SEQUENCE_VALUE)
-
- elif isinstance(event, yaml.SequenceEndEvent):
- if self.state != self.SEQUENCE_VALUE:
- raise Exception("Sequence end received after state {}".format(self.state))
- self.popState()
- if self.state == self.MAPPING_KEY:
- self.popState()
- self.cur_node = self.cur_node.parent
-
- elif isinstance(event, yaml.ScalarEvent):
- if self.state == self.MAPPING_START:
- self.cur_scalar = event.value
- self.pushState(self.MAPPING_KEY)
- elif self.state == self.MAPPING_KEY:
- self.cur_node.mapping[self.cur_scalar] = event.value
- self.popState()
- elif self.state == self.SEQUENCE_VALUE:
- self.cur_node.sequence.append(event.value)
- else:
- raise Exception("Scalar event received after state {}".format(self.state))
- else:
- raise Exception("Unhandled event {}".format(event))
- continue
-
-class MulticoreUnityParser:
- def parseFile(self, yaml_file):
- yaml_str = ""
- with open(yaml_file, "r", encoding="utf-8") as f:
- yaml_str = f.read()
- return self.parse(yaml_str)
-
- def parse(self, yaml_str):
- lines = []
- documents = []
- first = True
- n_lines = 0
- for line in yaml_str.split("\n"):
- n_lines += 1
- if line.startswith("---"):
- if not first:
- documents.append("\n".join(lines))
- lines = []
- first = False
- lines.append(line)
- if len(lines) > 0:
- documents.append("\n".join(lines))
- lines = []
- print("Got {} documents out of {} lines".format(len(documents), n_lines), file=sys.stderr)
-
- # Divide the work evenly among the # of CPUs we have available.
- n_threads = os.cpu_count()
- window_size = int(math.ceil(len(documents) / n_threads))
- merge_window = []
- merged_documents = []
- for i in range(0, len(documents)):
- if i > 0 and i % window_size == 0:
- merged_documents.append("\n".join(merge_window))
- merge_window = []
- merge_window.append(documents[i])
- if len(merge_window) > 0:
- merged_documents.append("\n".join(merge_window))
- merge_window = []
- documents = merged_documents
-
- mgr = mp.Manager()
-
- print("Spawning {} threads".format(len(documents)), file=sys.stderr)
- threads = []
- for document in documents:
- res = mgr.dict()
- thread = mp.Process(target = self.parseOneSerial, args = (document, res,))
- threads.append((thread, res))
- thread.start()
-
- print("Joining threads", file=sys.stderr)
- nodes = []
- for thread, res in threads:
- thread.join()
- nodes += res['nodes']
-
- print("Creating animator", file=sys.stderr)
- result = UnityAnimator()
- result.addNodes(nodes)
-
- return result
-
- def parseOneSerial(self, document, res):
- parser = UnityParser()
- parser.parse(document)
- res['nodes'] = parser.nodes
-
- def parseFile(self, yaml_file):
- yaml_str = ""
- with open(yaml_file, "r", encoding="utf-8") as f:
- yaml_str = f.read()
- return self.parse(yaml_str)
-
-def getGuidMap(d):
- result = {}
- for f in os.scandir(d):
- path = f.path
- if f.is_dir():
- result.update(getGuidMap(path))
- if not f.is_file():
- continue
- suffix = ".meta"
- if path.endswith(suffix):
- with open(path, "r", encoding="utf-8") as f:
- for line in f:
- if line.startswith("guid"):
- guid = line.split()[1]
- result[guid] = path[:-len(suffix)]
- return result
-
-if __name__ == "__main__":
- os.chdir(os.path.dirname(os.path.abspath(__file__)))
-
- parser = argparse.ArgumentParser()
- parser.add_argument("cmd", type=str, help="One of merge, guid_map, fix_write_defaults")
- parser.add_argument("--fx0", type=str, help="The first animator to merge")
- parser.add_argument("--fx1", type=str, help="The second animator to merge")
- parser.add_argument("--fx_dest", type=str, help="The path at which to " +
- "save the generated/merged animator")
- parser.add_argument("--project_root", type=str, help="The path to the " +
- "Unity project Assets folder")
- parser.add_argument("--save_to", type=str, help="The path to save the " +
- "result of the computation")
- parser.add_argument("--guid_map", type=str, help="Path to guid.map, " +
- "generated by a previous call to `guid_map`")
- parser.add_argument("--guid_map_append", type=bool, help="If set, " +
- "append to GUID map instead of overwriting.")
- parser.add_argument("--gen_anim_dir", type=str, help="The folder under which generated animations are stored")
- args = parser.parse_args()
-
- if args.cmd == "merge":
- if not args.fx0 or not args.fx1 or not args.fx_dest:
- print("--fx0, --fx1, and --fx_dest required", file=sys.stderr)
- parser.print_help()
- parser.exit(1)
-
- print("Parsing {}".format(args.fx0), file=sys.stderr)
- parser0 = MulticoreUnityParser()
- anim0 = parser0.parseFile(args.fx0)
-
- arg1 = "TaSTT_fx.controller"
- print("Parsing {}".format(args.fx1), file=sys.stderr)
- parser1 = MulticoreUnityParser()
- anim1 = parser1.parseFile(args.fx1)
-
- print("Merging animators", file=sys.stderr)
- anim0.merge(anim1)
-
- print("Serializing to {}".format(args.fx_dest), file=sys.stderr)
- with open(args.fx_dest, "w", encoding="utf-8") as f:
- f.write(unityYamlToString(anim0.nodes))
-
- elif args.cmd == "guid_map":
- if not args.project_root or not args.save_to:
- print("--project_root and --save_to required")
- parser.print_help()
- parser.exit(1)
-
- print("Looking up GUIDs under {}".format(args.project_root),
- file=sys.stderr)
- guid_map = getGuidMap(args.project_root)
-
- save_to_dir = os.path.dirname(args.save_to)
- os.makedirs(save_to_dir, exist_ok=True)
-
- if args.guid_map_append:
- tmp_map = {}
- with open(args.save_to, "rb") as f:
- tmp_map = pickle.load(f)
- # combine guid_map and tmp_map
- guid_map = {**guid_map, **tmp_map}
- print("Saving to {}".format(args.save_to), file=sys.stderr)
- with open(args.save_to, 'wb') as f:
- pickle.dump(guid_map, f)
- elif args.cmd == "fix_write_defaults":
- if not args.fx0 or not args.guid_map:
- print("--fx0 and --guid_map required")
- parser.print_help()
- parser.exit(1)
-
- guid_map = {}
- with open(args.guid_map, 'rb') as f:
- guid_map = pickle.load(f)
-
- print("Parsing {}".format(args.fx0), file=sys.stderr)
- parser0 = MulticoreUnityParser()
- anim = parser0.parseFile(args.fx0)
-
- print("Fixing write defaults", file=sys.stderr)
- anim_dir = "generated/animations/"
- os.makedirs(anim_dir, exist_ok=True)
- anim.fixWriteDefaults(guid_map, anim_dir + "TaSTT_Reset_Animation.anim")
- print(str(anim))
-
- elif args.cmd == "gen_off_anims":
- if not args.fx0 or not args.guid_map:
- print("--fx0 and --guid_map required")
- parser.print_help()
- parser.exit(1)
-
- guid_map = {}
- with open(args.guid_map, 'rb') as f:
- guid_map = pickle.load(f)
-
- print("Parsing {}".format(args.fx0), file=sys.stderr)
- parser0 = MulticoreUnityParser()
- anim = parser0.parseFile(args.fx0)
-
- print("Generating off animations", file=sys.stderr)
- anim_dir = "generated/animations/"
- os.makedirs(anim_dir, exist_ok=True)
- anim.generateOffAnimations(guid_map, "generated/animations")
-
- elif args.cmd == "add_toggle":
- if not args.fx0 or not args.fx_dest or not args.gen_anim_dir or not args.guid_map:
- print("--fx0, --fx_dest, --gen_anim_dir and --guid_map required")
- parser.print_help()
- parser.exit(1)
-
- guid_map = {}
- with open(args.guid_map, 'rb') as f:
- guid_map = pickle.load(f)
-
- print("Parsing {}".format(args.fx0), file=sys.stderr)
- parser0 = MulticoreUnityParser()
- anim = parser0.parseFile(args.fx0)
-
- print("Adding toggle", file=sys.stderr)
- anim.addTasttToggle(args.gen_anim_dir + "/TaSTT_Toggle_Off.anim",
- args.gen_anim_dir + "/TaSTT_Toggle_On.anim", "TaSTT_Toggle",
- guid_map)
-
- print("Serializing to {}".format(args.fx_dest), file=sys.stderr)
- with open(args.fx_dest, "w", encoding="utf-8") as f:
- f.write(str(anim))
-
- with open(args.guid_map, 'wb') as f:
- pickle.dump(guid_map, f)
-
- elif args.cmd == "fast_parse_test":
- if not args.fx0:
- print("--fx0 required")
- parser.print_help()
- parser.exit(1)
-
- print("Parsing {}".format(args.fx0), file=sys.stderr)
- parser0 = MulticoreUnityParser()
- anim = parser0.parseFile(args.fx0)
- print(str(anim))
-
- elif args.cmd == "set_noop_anim":
- if not args.fx0 or not args.fx_dest or not args.gen_anim_dir or not args.guid_map:
- print("--fx0, --fx_dest, --gen_anim_dir and --guid_map required")
- parser.print_help()
- parser.exit(1)
-
- guid_map = {}
- with open(args.guid_map, 'rb') as f:
- guid_map = pickle.load(f)
-
- print("Parsing {}".format(args.fx0), file=sys.stderr)
- parser = MulticoreUnityParser()
- anim = parser.parseFile(args.fx0)
-
- anim.setNoopAnimations(guid_map, args.gen_anim_dir + "/TaSTT_Do_Nothing.anim")
-
- with open(args.fx_dest, "w", encoding="utf-8") as f:
- f.write(str(anim))
-
- else:
- print("Unrecognized command: {}".format(args.cmd))
-
diff --git a/Scripts/obfuscate.py b/Scripts/obfuscate.py
deleted file mode 100644
index 8d01e10..0000000
--- a/Scripts/obfuscate.py
+++ /dev/null
@@ -1,92 +0,0 @@
-#!/usr/bin/env python3
-
-# This module is used to implement obfuscation of TaSTT network
-# speech data. At a high level, TaSTT is simply streaming N bits of
-# arbitrary data to a shader via VRChat's parameter sync mechanism.
-#
-# It would be trivial to mine this data for speech information, since
-# we're sending unicode (or ASCII) characters to peers.
-#
-# To raise the cost for the casual data collector, we can obfuscate
-# this data using a one-time pad in cipher-block chaining mode.
-#
-# Making things interesting, encrypted data will arrive at the Unity
-# animator, which processes them in 8 bit chunks. They are written
-# into contiguous blocks of the animator. Thus the shader can decrypt
-# the board by decrypting each block. This is thus stronger than
-# applying a one-time pad to each byte of the plaintext, since the
-# statistical distribution of individual letters is destroyed.
-# Obviously due to the lack of an initialization vector, the
-# distribution of phrases (blocks) is preserved.
-
-import math
-import os
-
-def genKey(n_bits = 128) -> bytearray:
- return os.urandom(int(n_bits / 8))
-
-def saveKey(filename: str, key: str):
- with open(filename, "wb") as f:
- f.write(key)
-
-def loadKey(filename: str) -> bytearray:
- with open(filename, "rb") as f:
- return f.read()
-
-# Apply a symmetric cypher to `data` using cypher-block chaining.
-def obfuscate(data: bytearray, key: bytearray) -> str:
- n_blocks = int(math.ceil(len(data) / len(key)))
- # This is a misnomer. A true IV would be randomized, but we can't
- # do that since the shader doesn't have access to it. We just use
- # this to implement the "chaining" aspect of CBC.
- iv = bytearray(b'\x00') * len(key)
- result = bytearray()
- for i in range(0, n_blocks):
- block_begin = i * len(key)
- block_end = (i + 1) * len(key)
- block_plain = data[block_begin:block_end]
- block_cypher = block_plain.copy()
- for i in range(0, len(block_cypher)):
- block_cypher[i] ^= iv[i]
- block_cypher[i] ^= key[i]
- result += block_cypher
- iv = block_cypher
- return result
-
-def deobfuscate(data: bytearray, key: bytearray) -> str:
- n_blocks = int(math.ceil(len(data) / len(key)))
- # This is a misnomer. A true IV would be randomized, but we can't
- # do that since the shader doesn't have access to it. We just use
- # this to implement the "chaining" aspect of CBC.
- iv = bytearray(b'\x00') * len(key)
- result = bytearray()
- for i in range(0, n_blocks):
- block_begin = i * len(key)
- block_end = (i + 1) * len(key)
- block_cypher = data[block_begin:block_end]
- block_plain = block_cypher.copy()
- for i in range(0, len(block_plain)):
- block_plain[i] ^= key[i]
- block_plain[i] ^= iv[i]
- result += block_plain
- iv = block_cypher
- return result
-
-def test():
- key = genKey()
- saveKey("test.key", key)
- new_key = loadKey("test.key")
- os.remove("test.key")
- assert(key == new_key)
-
- plaintext_original = "Lorem ipsum dolor sit amet, consectetur adipiscing elit."
- plaintext_bytes = bytearray(plaintext_original, "utf-8")
- cyphertext = obfuscate(plaintext_bytes, key)
- assert(len(plaintext_bytes) == len(cyphertext))
- plaintext_recovered = deobfuscate(cyphertext, key).decode("utf-8")
- assert(plaintext_original == plaintext_recovered)
- assert(plaintext_bytes != cyphertext)
-
-if __name__ == "__main__":
- test()
-
diff --git a/Scripts/osc_ctrl.py b/Scripts/osc_ctrl.py
deleted file mode 100644
index c077b2b..0000000
--- a/Scripts/osc_ctrl.py
+++ /dev/null
@@ -1,185 +0,0 @@
-#!/usr/bin/env python3
-
-from emotes_v2 import EmotesState
-from generate_utils import config
-from math import ceil
-from paging import MultiLinePager
-from pythonosc import udp_client
-
-import argparse
-import generate_utils
-import random
-import time
-
-# 5 Hz usually works, but 3 Hz is more reliable in busy lobbies. Feel free to
-# dial this up if you want faster paging, but know that it might break for
-# remote users.
-SYNC_FREQ_HZ = 3.0
-SYNC_DELAY_S = 1.0 / SYNC_FREQ_HZ
-
-def getClient(ip = "127.0.0.1", port = 9000):
- return udp_client.SimpleUDPClient(ip, port)
-
-# The characters in the TaSTT are all numbered from top left to bottom right.
-# This function provides a mapping from letter ('a') to index (26).
-def generateEncoding():
- encoding = {}
- for i in range(0, 65535):
- encoding[chr(i)] = (i % 256, int(i / 256))
- return encoding
-
-class OscState:
- def __init__(self, chars_per_sync: int, rows: int, cols: int,
- bytes_per_char: int,
- ip = "127.0.0.1", port = 9000):
- self.client = getClient(ip, port)
- self.pager = MultiLinePager(chars_per_sync, rows, cols)
- self.encoding= generateEncoding()
- self.bytes_per_char = bytes_per_char
- self.client.bytes_per_char = bytes_per_char
- self.builtin_msg = "" # The last message sent to the built-in chatbox
-
- def reset(self):
- self.pager.reset()
-
-def encodeMessage(encoding, msg):
- encoded = []
- for char in msg:
- encoded.append(encoding[char])
- return encoded
-
-def lockWorld(client, lock: bool):
- addr = "/avatar/parameters/" + generate_utils.getLockWorldParam()
- client.send_message(addr, lock)
-
-def toggleBoard(client, show: bool):
- addr = "/avatar/parameters/" + generate_utils.getToggleParam()
- client.send_message(addr, show)
-
-def enable(client):
- addr="/avatar/parameters/" + generate_utils.getEnableParam()
- client.send_message(addr, True)
-
-def disable(client):
- addr="/avatar/parameters/" + generate_utils.getEnableParam()
- client.send_message(addr, False)
-
-def ellipsis(client, enable: bool):
- addr="/avatar/parameters/" + generate_utils.getEllipsisParam()
- client.send_message(addr, enable)
-
-def clear(osc_state: OscState):
- disable(osc_state.client)
-
- addr="/avatar/parameters/" + generate_utils.getClearBoardParam()
- osc_state.client.send_message(addr, True)
-
- time.sleep(SYNC_DELAY_S)
-
- addr="/avatar/parameters/" + generate_utils.getClearBoardParam()
- osc_state.client.send_message(addr, False)
-
- osc_state.reset()
-
-# Note: `nth_audio` is 1-indexed
-def playAudio(osc_state: OscState, nth_audio: int, value: bool):
- addr="/avatar/parameters/" + generate_utils.getSoundParam(nth_audio)
- osc_state.client.send_message(addr, value)
-
-def updateRegion(client, region_idx, letter_encoded):
- for byte in range(0, client.bytes_per_char):
- addr="/avatar/parameters/" + generate_utils.getBlendParam(region_idx, byte)
- letter_remapped = (-127.5 + letter_encoded[byte]) / 127.5
- client.send_message(addr, letter_remapped)
-
-# Sends one slice of `msg` to the board then returns. Slices are sent
-# in FIFO order; e.g., the most recently spoken words are sent last.
-# Returns True if done paging, False otherwise.
-def pageMessage(cfg, osc_state: OscState, msg: str, estate: EmotesState) -> bool:
- msg = estate.encode_emotes(msg)
-
- msg_slice, slice_idx = osc_state.pager.getNextSlice(msg)
- if slice_idx == -1:
- for i in range(5):
- playAudio(osc_state, i+1, False)
- return True
-
- sounds_to_make = set()
- letter_i = 1
- for letter in ["a", "e", "i", "o", "u"]:
- if letter in msg_slice.lower():
- sounds_to_make.add(letter_i)
- letter_i += 1
- if len(sounds_to_make) > 0:
- for i in range(5):
- if i+1 in sounds_to_make and random.randint(1,3) != 1:
- playAudio(osc_state, i+1, True)
- else:
- playAudio(osc_state, i+1, False)
-
- #print("sending page {}: {} ({})".format(slice_idx, msg_slice,
- # len(msg_slice)))
-
- # Really long messages just wrap back around.
-
- # if in last region:
- # how long is it
- num_cells = cfg["rows"] * cfg["cols"]
- num_regions = ceil(num_cells / cfg["chars_per_sync"])
- which_region = slice_idx % num_regions
- #print(f"which_region: {which_region}")
- #print(f"num_regions: {num_regions}")
- #print("num regions: {}".format(num_regions))
- if which_region == num_regions - 1:
- layers_in_last_region = num_cells % cfg["chars_per_sync"]
- #print(f"layers in last region: {layers_in_last_region}")
- if layers_in_last_region == 0:
- layers_in_last_region = cfg["chars_per_sync"]
- #print("layers in last region: {}".format(layers_in_last_region))
- old_len = len(msg_slice)
- msg_slice = msg_slice[0:layers_in_last_region]
- #print("truncate msg_slice from length {} to length {}".format(old_len,
- # len(msg_slice)))
-
- #print("send \"{}\" to region {}".format(msg_slice, which_region))
-
- enable(osc_state.client)
-
- # Seek to the current region.
- addr="/avatar/parameters/" + generate_utils.getSelectParam()
- osc_state.client.send_message(addr, which_region)
-
- # Update each letter.
- encoded = encodeMessage(osc_state.encoding, msg_slice)
- #print("len encoded: {}".format(len(encoded)))
- for i in range(0, len(encoded)):
- updateRegion(osc_state.client, i, encoded[i])
-
- ellipsis(osc_state.client, False)
-
-# Like `pageMessage` but uses the built-in chatbox. The built-in chatbox
-# truncates data at about 150 chars, so just send the suffix of the message for
-# now.
-def pageMessageBuiltin(cfg, osc_state: OscState, msg: str) -> bool:
- if len(msg) == 0 or msg.isspace():
- return False # Not paging
-
- msg_begin = max(len(msg) - 140, 0)
- msg_suffix = msg[msg_begin:len(msg)]
-
- if osc_state.builtin_msg != msg:
- addr="/chatbox/typing"
- osc_state.client.send_message(addr, False)
-
- addr="/chatbox/input"
- osc_state.client.send_message(addr, (msg_suffix, True))
- osc_state.builtin_msg = msg
-
- return False # Not paging
-
-if __name__ == "__main__":
- parser = argparse.ArgumentParser()
- parser.add_argument("-i", default="127.0.0.1", help="OSC server IP")
- parser.add_argument("-p", type=int, default=9000, help="OSC server port")
- args = parser.parse_args()
-
diff --git a/Scripts/paging.py b/Scripts/paging.py
deleted file mode 100644
index c8ba8c3..0000000
--- a/Scripts/paging.py
+++ /dev/null
@@ -1,128 +0,0 @@
-#!/usr/bin/env python3
-
-from math import ceil
-from text_wrapping import TextWrapper
-
-def getSlice(msg: str, idx: int, slice_len: int) -> str:
- begin = idx * slice_len
- end = (idx + 1) * slice_len
- msg_len = len(msg)
- if msg_len >= end:
- return msg[begin:end]
- if msg_len > begin:
- return msg[begin:end] + (" " * (end - msg_len))
- return None
-
-def setSlice(msg: str, idx: int, slice_len: int, msg_slice: str,
- include_suffix: bool = True) -> str:
- begin = idx * slice_len
- end = (idx + 1) * slice_len
- prefix = msg[0:begin]
- prefix += " " * (begin - len(prefix))
- suffix = msg[end:]
- msg = prefix + msg_slice
- if include_suffix:
- msg += suffix
- return msg
-
-class SingleLinePager:
- def __init__(self, slice_len: int):
- self.msg = ""
- self.slice_len = slice_len
-
- def reset(self):
- self.msg = ""
-
- def getNextSlice(self, msg) -> tuple[str, int]:
- for i in range(0, ceil(len(msg) / self.slice_len)):
- old_slice = getSlice(self.msg, i, self.slice_len)
- new_slice = getSlice(msg, i, self.slice_len)
- if old_slice != new_slice:
- self.msg = setSlice(self.msg, i, self.slice_len, new_slice)
- return new_slice, i
- return "", -1
-
-class MultiLinePager:
- def __init__(self, slice_len: int, rows: int, cols: int):
- # This is a list of lists of SingleLinePagers.
- # It represents a list of pages, each containing a list of lines.
- self.pages = []
- self.slice_len = slice_len
- self.rows = rows
- self.cols = cols
-
- def reset(self):
- self.pages = []
-
- def getNextSlice(self, msg) -> tuple[str, int]:
- pages = TextWrapper(self.rows, self.cols).wrap(msg)
-
- # Wrapping split the input message along line boundaries and along page
- # boundaries. However, we're going to treat each page like a single
- # line, so that `slice_idx` can be used as a region index. Therefore,
- # we need exactly one SingleLinePager per page.
- for pi in range(len(self.pages), len(pages)):
- self.pages.append(SingleLinePager(self.slice_len))
-
- for pi in range(0, len(pages)):
- line = "".join(pages[pi])
- pager = self.pages[pi]
- msg_slice, slice_idx = pager.getNextSlice(line)
- if slice_idx != -1:
- # Reset every page after this. This guarantees that any text
- # written in this operation will eventually be redrawn.
- for pj in range(pi + 1, len(pages)):
- self.pages[pj].reset()
- return msg_slice, slice_idx
- return "", -1
-
-if __name__ == "__main__":
- assert(getSlice("abcdefghij", 0, 1) == "a")
- assert(getSlice("abcdefghij", 9, 1) == "j")
- assert(getSlice("abcdefghij", 0, 2) == "ab")
- assert(getSlice("abcdefghij", 1, 2) == "cd")
- assert(getSlice("abcdefghij", 3, 3) == "j ")
- assert(getSlice("abcdefghij", 10, 1) == None)
- assert(getSlice("abcdefghij", 11, 1) == None)
-
- assert(setSlice("abcdefghij", 1, 2, "kl") == "abklefghij")
- assert(setSlice("abc", 1, 2, "de") == "abde")
- assert(setSlice("abc", 0, 2, "de") == "dec")
-
- slice_len = 2
- p = SingleLinePager(slice_len)
- p.msg = "test"
- assert(p.getNextSlice("test")[0] == "")
- assert(p.getNextSlice("tast")[0] == "ta")
- assert(p.getNextSlice("tast")[0] == "")
-
- p.msg = ""
- assert(p.getNextSlice("test")[0] == "te")
- assert(p.msg == "te")
- assert(p.getNextSlice("test")[0] == "st")
- assert(p.msg == "test")
- assert(p.getNextSlice("test")[0] == "")
- assert(p.msg == "test")
- assert(p.getNextSlice("tests")[0] == "s ")
-
- slice_len = 2
- rows = 2
- cols = 4
- p = MultiLinePager(slice_len, rows, cols)
- assert(p.getNextSlice("")[0] == "")
- assert(p.getNextSlice("yo")[0] == "yo")
- assert(p.getNextSlice("yogi")[0] == "gi")
- assert(p.getNextSlice("yugi")[0] == "yu")
- assert(p.getNextSlice("yugi is a")[0] == "is")
- assert(p.getNextSlice("yugi is a")[0] == " a")
- assert(p.getNextSlice("yugi is a pussy")[0] == "pu")
- assert(p.getNextSlice("yugi is a pussy")[0] == "s-")
- assert(p.getNextSlice("yugi is a pussy")[0] == "sy")
-
- p = MultiLinePager(slice_len, rows, cols)
- assert(p.getNextSlice("yo")[0] == "yo")
- assert(p.getNextSlice("yo")[0] == " ")
- assert(p.getNextSlice("yo")[0] == " ")
- assert(p.getNextSlice("yo")[0] == " ")
- assert(p.getNextSlice("yo")[0] == "")
-
diff --git a/Scripts/profanity_filter.py b/Scripts/profanity_filter.py
deleted file mode 100644
index b8c84ed..0000000
--- a/Scripts/profanity_filter.py
+++ /dev/null
@@ -1,43 +0,0 @@
-#!/usr/bin/env python3
-
-class ProfanityFilter:
- def __init__(self, en_path: str):
- self.en_path = en_path
- self.en_profanity = set()
-
- def load(self):
- with open(self.en_path, 'r') as f:
- for line in f:
- self.en_profanity.add(line.strip())
-
- def filter(self, line: str, language_code: str = "en") -> str:
- filtered = ""
-
- if language_code not in {"en"}:
- raise ValueError(f"Language code \"{language_code}\" is " +
- "unsupported by the profanity filter")
-
- # Translation table converting vowels to asterisks.
- vowel_to_asterisk = str.maketrans('aeiouAEIOU', '**********')
-
- result = []
- for word in line.split():
- word_clean = word.lower()
- # Filter out non-alphabet characters from the word.
- word_clean = ''.join([char for char in word_clean if char.isalpha()])
- if word_clean in self.en_profanity:
- result.append(word.translate(vowel_to_asterisk))
- else:
- result.append(word)
-
- return " ".join(result)
-
-if __name__ == "__main__":
- en_path = "/mnt/d/vrc/TaSTT/GUI/Profanity/Profanity/en"
- p = ProfanityFilter(en_path)
- p.load()
- assert(p.filter("fuck") == "f*ck")
- assert(p.filter("fuck!") == "f*ck!")
- assert(p.filter("fuck shit") == "f*ck sh*t")
- assert(p.filter("fuck shit this should not be filtered") == "f*ck sh*t this should not be filtered")
- assert(p.filter("ASS") == "*SS")
diff --git a/Scripts/remove_audio_sources.py b/Scripts/remove_audio_sources.py
deleted file mode 100644
index 0486169..0000000
--- a/Scripts/remove_audio_sources.py
+++ /dev/null
@@ -1,25 +0,0 @@
-import argparse
-import libunity
-import sys
-
-def removeAudioSources(path: str):
- parser = libunity.MulticoreUnityParser()
- anim = parser.parseFile(path)
- anchors = set()
- node = anim.popNodeOfClass("82")
- while node:
- print("Killed audio source")
- anchors.add(node.anchor)
- node = anim.popNodeOfClass("82")
- for node in anim.nodes:
- anim.scrubReferencesByValue(node, values=anchors)
- with open(path, "w", encoding="utf-8") as f:
- f.write(libunity.unityYamlToString(anim.nodes))
-
-if __name__ == "__main__":
- parser = argparse.ArgumentParser()
- parser.add_argument("--prefab", type=str, help="Path to .prefab file.")
- args = parser.parse_args()
-
- removeAudioSources(args.prefab)
-
diff --git a/Scripts/requirements.txt b/Scripts/requirements.txt
deleted file mode 100644
index 41c581c..0000000
--- a/Scripts/requirements.txt
+++ /dev/null
@@ -1,18 +0,0 @@
-ctranslate2==4.5.0
-editdistance
-faster-whisper@https://github.com/guillaumekln/faster-whisper/archive/53bbe5401683c9a7549db62642e3d4535956b95c.tar.gz
-future==0.18.2
-huggingface_hub==0.16.4
-keyboard
-langcodes
-language-data
-openvr
-pillow
-pyaudio
-pydub
-python-osc
-pyyaml
-sentence_splitter
-transformers>=4.21.0
-wget
-
diff --git a/Scripts/requirements_frozen.txt b/Scripts/requirements_frozen.txt
deleted file mode 100644
index 9e6a6ab..0000000
--- a/Scripts/requirements_frozen.txt
+++ /dev/null
@@ -1,42 +0,0 @@
-av==13.1.0
-certifi==2024.8.30
-charset-normalizer==3.4.0
-colorama==0.4.6
-coloredlogs==15.0.1
-ctranslate2==4.5.0
-editdistance==0.8.1
-faster-whisper @ https://github.com/guillaumekln/faster-whisper/archive/53bbe5401683c9a7549db62642e3d4535956b95c.tar.gz#sha256=17b49d15a58e18d78b4639af59bd35da12bc0bf3bb73c9af4ad48891dd6793f7
-filelock==3.16.1
-flatbuffers==24.3.25
-fsspec==2024.10.0
-future==0.18.2
-huggingface-hub==0.16.4
-humanfriendly==10.0
-idna==3.10
-keyboard==0.13.5
-langcodes==3.4.1
-language_data==1.2.0
-marisa-trie==1.2.1
-mpmath==1.3.0
-numpy==2.1.3
-onnxruntime==1.20.0
-openvr==2.5.101
-packaging==24.2
-pillow==11.0.0
-protobuf==5.28.3
-PyAudio==0.2.14
-pydub==0.25.1
-pyreadline3==3.5.4
-python-osc==1.9.0
-PyYAML==6.0.2
-regex==2024.11.6
-requests==2.32.3
-safetensors==0.4.5
-sentence-splitter==1.4
-sympy==1.13.3
-tokenizers==0.15.2
-tqdm==4.67.0
-transformers==4.35.2
-typing_extensions==4.12.2
-urllib3==2.2.3
-wget==3.2
diff --git a/Scripts/set_texture_sz.py b/Scripts/set_texture_sz.py
deleted file mode 100644
index f6fbb45..0000000
--- a/Scripts/set_texture_sz.py
+++ /dev/null
@@ -1,24 +0,0 @@
-import argparse
-import libunity
-import sys
-
-def setTextureSize(path: str, size: int):
- parser = libunity.MulticoreUnityParser()
- anim = parser.parseFile(path)
-
- node = anim.nodes[0]
- node.mapping['TextureImporter'].mapping['maxTextureSize'] = size
- for plat in node.mapping['TextureImporter'].mapping['platformSettings'].sequence:
- plat.mapping['maxTextureSize'] = size
-
- with open(path, "w", encoding="utf-8") as f:
- f.write(libunity.unityYamlToString(anim.nodes))
-
-if __name__ == "__main__":
- parser = argparse.ArgumentParser()
- parser.add_argument("--meta", type=str, help="Path to texture .meta file.")
- parser.add_argument("--size", type=int, help="Texture size.")
- args = parser.parse_args()
-
- setTextureSize(args.meta, args.size)
-
diff --git a/Scripts/steamvr.py b/Scripts/steamvr.py
deleted file mode 100644
index 3e6c6c9..0000000
--- a/Scripts/steamvr.py
+++ /dev/null
@@ -1,89 +0,0 @@
-#!/usr/bin/env python3
-
-# python3 -m pip install openvr
-# License: BSD-3.0 (requires showing notice in binary distributions)
-import openvr as vr
-import sys
-import time
-
-EVENT_NONE = 0
-EVENT_RISING_EDGE = 1
-EVENT_FALLING_EDGE = 2
-
-class InputEvent:
- def __init__(self,
- opcode: int):
- self.opcode = opcode
-
-# Checks if the given button on the given controller is pressed.
-def pollButtonPress(
- hand: str = "right",
- button: str = "b",
- ctrl = None # ThreadControl object
- ) -> int:
- hands = {}
- hands["left"] = vr.TrackedControllerRole_LeftHand
- hands["right"] = vr.TrackedControllerRole_RightHand
-
- buttons = {}
- buttons["a"] = vr.k_EButton_IndexController_A
- buttons["b"] = vr.k_EButton_IndexController_B
- buttons["thumbstick"] = vr.k_EButton_Axis0
-
- system = None
- first = True
- while ctrl.run_app and not system:
- try:
- system = vr.init(vr.VRApplication_Background)
- except Exception as e:
- if first:
- print(f"Failed to start steamVR input thread: {repr(e)}", file=sys.stderr)
- first = False
- time.sleep(1)
- last_packet = 0
- event_high = False
-
- while ctrl.run_app:
- time.sleep(0.01)
-
- lh_idx = system.getTrackedDeviceIndexForControllerRole(hands[hand])
- #print("left hand device idx: {}".format(lh_idx))
-
- got_state, state = system.getControllerState(lh_idx)
- if not got_state:
- continue
-
- if state.unPacketNum == last_packet:
- continue
-
- # Clicking joysticks and moving joysticks fire the same events. To
- # differentiate movement from clicking, we create a dead zone: if the event
- # fires while the stick isn't moved far from center, we assume it's a
- # click, not movement.
- dead_zone_radius = 0.7
-
- button_mask = (1 << buttons[button])
- ret = EVENT_NONE
- if (state.ulButtonPressed & button_mask) != 0 and\
- (state.rAxis[0].x**2 + state.rAxis[0].y**2 < dead_zone_radius**2):
- #print("button pressed: %016x" % state.ulButtonPressed)
- #for i in range(0, 5):
- # print("axis {} x: {} y: {}".format(i, state.rAxis[i].x, state.rAxis[i].y))
- if not event_high:
- yield InputEvent(EVENT_RISING_EDGE)
- event_high = True
- elif event_high:
- event_high = False
- yield InputEvent(EVENT_FALLING_EDGE)
-
-if __name__ == "__main__":
- gen = pollButtonPress()
- while True:
- time.sleep(0.1)
-
- event = pollButtonPress(session_state)
- if event == EVENT_RISING_EDGE:
- print("rising edge")
- elif event == EVENT_FALLING_EDGE:
- print("falling edge")
-
diff --git a/Scripts/text_to_text_demo.py b/Scripts/text_to_text_demo.py
deleted file mode 100644
index 4810361..0000000
--- a/Scripts/text_to_text_demo.py
+++ /dev/null
@@ -1,96 +0,0 @@
-#!/usr/bin/env python3
-# python3 -m pip install python-osc pillow
-
-from math import ceil
-from paging import MultiLinePager
-from pythonosc import udp_client
-
-import generate_utils
-import osc_ctrl
-import time
-
-class AppConfig:
- def __init__(self,
- rows: int = 4,
- cols: int = 40,
- chars_per_sync: int = 10,
- osc_sync_rate_hz: int = 3):
- self.rows = rows
- self.cols = cols
- self.chars_per_sync = chars_per_sync
- self.osc_sync_rate_hz = osc_sync_rate_hz
- self.client = osc_ctrl.getClient()
-
-def encodeMessage(msg):
- encoded = []
- for char in msg:
- encoded.append(ord(char))
- return encoded
-
-class OSCSyncHelper:
- def __init__(self,
- config: AppConfig):
- self.sync_delay_s = 1.0 / config.osc_sync_rate_hz
- self.last = time.time() - self.sync_delay_s
-
- def waitForSync(self) -> None:
- # sleep() can sleep for too short a time, so use a loop to ensure that
- # we sleep at least a full sync window's worth of time.
- while time.time() - self.last < self.sync_delay_s:
- time.sleep(0.01)
- self.last = time.time()
-
-def sendMessage(msg: str, cfg: AppConfig, osc: OSCSyncHelper) -> None:
- num_cells = cfg.rows * cfg.cols
- num_regions = ceil(num_cells / cfg.chars_per_sync)
-
- pager = MultiLinePager(cfg.chars_per_sync, cfg.rows, cfg.cols)
-
- # Show the chatbox
- osc.waitForSync()
- osc_ctrl.toggleBoard(cfg.client, True)
- osc_ctrl.ellipsis(cfg.client, False)
- osc_ctrl.disable(cfg.client)
-
- # Ensure that the chatbox is cleared.
- addr="/avatar/parameters/" + generate_utils.getClearBoardParam()
- cfg.client.send_message(addr, True)
- osc.waitForSync()
- cfg.client.send_message(addr, False)
-
- slice_idx = 0
- while slice_idx != -1:
-
- msg_slice, slice_idx = pager.getNextSlice(msg)
- which_region = slice_idx % num_regions
-
- print(f"Sending slice '{msg_slice}' to region {which_region}")
-
- # Wait until OSC has had enough time to sync the previous window of
- # data.
- osc.waitForSync()
-
- # Enable chatbox animations.
- osc_ctrl.enable(cfg.client)
-
- # Seek to the current region.
- addr="/avatar/parameters/" + generate_utils.getSelectParam()
- cfg.client.send_message(addr, which_region)
-
- # Send all characters in the current region.
- encoded = encodeMessage(msg_slice)
- for i in range(0, len(msg_slice)):
- print(f"Sending char {msg_slice[i]} / {encoded[i]}")
- addr="/avatar/parameters/" + generate_utils.getBlendParam(i, 0)
- letter_remapped = (-127.5 + encoded[i]) / 127.5
- cfg.client.send_message(addr, letter_remapped)
-
- # Disable chatbox animations to ensure stability.
- osc.waitForSync()
- osc_ctrl.disable(cfg.client)
-
-if __name__ == "__main__":
- cfg = AppConfig()
- osc = OSCSyncHelper(cfg)
- sendMessage("Hello, world! aiueo aiueo aiueo aiueo aiueo eeeeeeeeeeeeeeeeeeeeeeee", cfg, osc)
-
diff --git a/Scripts/text_wrapping.py b/Scripts/text_wrapping.py
deleted file mode 100644
index 7576b78..0000000
--- a/Scripts/text_wrapping.py
+++ /dev/null
@@ -1,55 +0,0 @@
-#!/usr/bin/env python3
-
-class TextWrapper:
- def __init__(self, rows, cols):
- self.rows = rows
- self.cols = cols
-
- # Split `msg` along line boundaries. Long words tend to just go onto new
- # lines. Words that are too long to fit on any line are hyphenated and
- # split.
- # Lines are padded with space (" ") characters so they're all `self.cols`
- # characters long. Pages are padded with lines full of space characters so
- # they're all `self.rows` lines long.
- def wrap(self, msg: str) -> list[list[str]]:
- pages = []
- lines = []
- line = ""
- for word in msg.split():
- if len(line) + 1 + len(word) <= self.cols:
- if len(line):
- line += " "
- line += word
- continue
- # Word won't fit onto this line. End the line.
- if len(line):
- line += " " * (self.cols - len(line))
- lines.append(line)
- line = ""
- while len(word) > self.cols:
- prefix = word[0:self.cols-1] + "-"
- lines.append(prefix)
- suffix = word[self.cols-1:]
- word = suffix
- if len(word):
- line = word
- if len(line):
- line += " " * (self.cols - len(line))
- lines.append(line)
- while len(lines):
- pages.append(lines[0:self.rows])
- lines = lines[self.rows:]
- if len(pages):
- num_extra_lines = (self.rows - (len(pages[-1]) % self.rows)) % self.rows
- pages[-1] += [" " * self.cols] * num_extra_lines
- return pages
-
-if __name__ == "__main__":
- w = TextWrapper(2, 5)
-
- assert(w.wrap("foo") == [["foo ", " "]])
- assert(w.wrap("foo bar") == [["foo ", "bar "]])
- assert(w.wrap("bagel") == [["bagel", " "]])
- assert(w.wrap("bagels") == [["bage-", "ls "]])
- assert(w.wrap("hot bagels") == [["hot ", "bage-"], ["ls ", " "]])
-
diff --git a/Scripts/transcribe_pipeline.py b/Scripts/transcribe_pipeline.py
deleted file mode 100644
index 5914afc..0000000
--- a/Scripts/transcribe_pipeline.py
+++ /dev/null
@@ -1,35 +0,0 @@
-import time
-
-
-class TranscriptCommit:
- def __init__(self,
- delta: str,
- preview: str,
- latency_s: float = None,
- thresh_at_commit: int = None,
- audio: bytes = None,
- duration_s: float = None,
- start_ts: float = None):
- self.delta = delta
- self.preview = preview
- self.latency_s = latency_s
- self.thresh_at_commit = thresh_at_commit
- self.audio = audio
- # Time at which the commit is generated
- self.ts = time.time()
- # Time corresponding to the start of the segment
- self.start_ts = start_ts
- # The duration of the audio segment, in seconds.
- self.duration_s = duration_s
-
-
-class StreamingPlugin:
- def __init__(self):
- pass
-
- def transform(self, commit: TranscriptCommit) -> TranscriptCommit:
- return commit
-
- def stop(self):
- pass
-
diff --git a/Scripts/transcribe_v2.py b/Scripts/transcribe_v2.py
deleted file mode 100644
index e024bae..0000000
--- a/Scripts/transcribe_v2.py
+++ /dev/null
@@ -1,1172 +0,0 @@
-from browser_src import BrowserSource
-from datetime import datetime
-from emotes_v2 import EmotesState
-from faster_whisper import WhisperModel
-from functools import partial
-from huggingface_hub import hf_hub_download
-from profanity_filter import ProfanityFilter
-from pydub import AudioSegment
-from sentence_splitter import split_text_into_sentences
-from transcribe_pipeline import StreamingPlugin, TranscriptCommit
-
-import app_config
-import argparse
-import ctranslate2
-import editdistance
-import glob
-import keybind_event_machine
-import keyboard
-import langcodes
-import lang_compat
-import math
-import numpy as np
-import os
-import osc_ctrl
-import pyaudio
-import steamvr
-import subprocess
-import sys
-import threading
-import time
-import transformers
-import typing
-import vad
-import wave
-import winsound
-
-class ThreadControl:
- def __init__(self, cfg):
- self.cfg = cfg
- self.run_app = True
-
-class AudioStream():
- FORMAT = pyaudio.paInt16
- # Size of each frame (audio sample), in bytes. If you change FORMAT, make
- # sure this stays up to date!
- FRAME_SZ = 2
- # Frames per second.
- FPS = 16000
- CHANNELS = 1
- def __init__(self):
- pass
-
- def getSamples(self) -> bytes:
- raise NotImplementedError("getSamples is not implemented!")
-
-class DiskStream(AudioStream):
- def __init__(self, path: str):
- fmt = None
- if path.endswith(".mp3"):
- fmt = "mp3"
- elif path.endswith(".wav"):
- fmt = "wav"
- else:
- raise NotImplementedError(f"Requested file type {path} " + \
- "is not supported")
- print(f"Loading audio data", file=sys.stderr)
- audio = AudioSegment.from_file(path, format=fmt)
- audio = audio.set_channels(1)
- # TODO(yum) replace manual decimation code with this!
- audio = audio.set_frame_rate(16000)
- frames = np.array(audio.get_array_of_samples())
- frames = np.int16(frames).tobytes()
-
- self.frames = frames
-
- print(f"Loaded data", file=sys.stderr)
-
- def getSamples(self) -> bytes:
- # Give out samples at a fixed rate to minimize
- # noise.
- give_s = 0.2
- nframes = int(give_s * AudioStream.FPS)
- frames = self.frames[0:nframes * AudioStream.FRAME_SZ];
- self.frames = self.frames[nframes * AudioStream.FRAME_SZ:]
-
- if len(frames) < nframes:
- frames += np.zeros(nframes - len(frames), dtype=np.int16).tobytes()
-
- return frames
-
-class MicStream(AudioStream):
- CHUNK_SZ = 1024
-
- def __init__(self, which_mic: str):
- self.p = pyaudio.PyAudio()
- self.stream = None
- self.sample_rate = None
- # Each time pyaudio gives us audio data, it's in the form of a chunk of
- # samples. We keep these in a list to keep the audio callback as light
- # as possible. Whenever downstream layers want data, we collapse the
- # list into a single array of data (a bytes object).
- self.chunks = []
- # If set, incoming frames are simply discarded.
- self.paused = False
-
- print(f"Finding mic {which_mic}", file=sys.stderr)
- self.dumpMicDevices()
-
- got_match = False
- device_index = -1
- if which_mic == "index":
- target_str = "Digital Audio Interface"
- elif which_mic == "focusrite":
- target_str = "Focusrite"
- elif which_mic == "motu":
- target_str = "In 1-2 (MOTU M Series)"
- elif which_mic == "beyond":
- target_str = "Microphone (Beyond)"
- else:
- print(f"Mic {which_mic} requested, treating it as a numerical " +
- "device ID", file=sys.stderr)
- device_index = int(which_mic)
- got_match = True
- if not got_match:
- info = self.p.get_host_api_info_by_index(0)
- numdevices = info.get('deviceCount')
- for i in range(0, numdevices):
- if (self.p.get_device_info_by_host_api_device_index(0, i).get('maxInputChannels')) > 0:
- device_name = self.p.get_device_info_by_host_api_device_index(0, i).get('name')
- if target_str in device_name:
- print(f"Got matching mic: {device_name}",
- file=sys.stderr)
- device_index = i
- got_match = True
- break
- if not got_match:
- raise KeyError(f"Mic {which_mic} not found")
-
- info = self.p.get_device_info_by_host_api_device_index(0, device_index)
- print(f"Found mic {which_mic}: {info['name']}", file=sys.stderr)
- self.sample_rate = int(info['defaultSampleRate'])
- print(f"Mic sample rate: {self.sample_rate}", file=sys.stderr)
-
- self.stream = self.p.open(
- rate=self.sample_rate,
- channels=AudioStream.CHANNELS,
- format=AudioStream.FORMAT,
- input=True,
- frames_per_buffer=MicStream.CHUNK_SZ,
- input_device_index=device_index,
- stream_callback=self.onAudioFramesAvailable)
-
- self.stream.start_stream()
-
- AudioStream.__init__(self)
-
- def pause(self, state: bool = True):
- self.paused = state
-
- def dumpMicDevices(self):
- info = self.p.get_host_api_info_by_index(0)
- numdevices = info.get('deviceCount')
-
- for i in range(0, numdevices):
- if (self.p.get_device_info_by_host_api_device_index(0, i).get('maxInputChannels')) > 0:
- device_name = self.p.get_device_info_by_host_api_device_index(0, i).get('name')
- print("Input Device id ", i, " - ", device_name)
-
- def onAudioFramesAvailable(self,
- frames,
- frame_count,
- time_info,
- status_flags):
- if self.paused:
- # Don't literally pause, just start returning silence. This allows
- # the `min_segment_age_s` check to work while paused.
- n_frames = int(frame_count * AudioStream.FPS /
- float(self.sample_rate))
- self.chunks.append(np.zeros(n_frames,
- dtype=np.int16).tobytes())
- return (frames, pyaudio.paContinue)
-
- decimated = b''
- # In pyaudio, a `frame` is a single sample of audio data.
- frame_len = AudioStream.FRAME_SZ
- next_frame = 0.0
- # The mic probably has a higher sample rate than Whisper wants, so
- # decrease the sample rate by dropping samples. Note that this
- # algorithm only works if the mic's rate is higher than whisper's
- # expected rate.
- keep_every = float(self.sample_rate) / AudioStream.FPS
- for i in range(frame_count):
- if i >= next_frame:
- decimated += frames[i*frame_len:(i+1)*frame_len]
- next_frame += keep_every
- self.chunks.append(decimated)
-
- return (frames, pyaudio.paContinue)
-
- # Get audio data and the corresponding timestamp.
- def getSamples(self) -> bytes:
- chunks = self.chunks
- self.chunks = []
- result = b''.join(chunks)
- return result
-
-class AudioCollector:
- def __init__(self, stream: AudioStream):
- self.stream = stream
- self.frames = b''
- # Note: by design, this is the only spot where we anchor our timestamps
- # against the real world. This is done to make it possible to profile
- # test cases which read from disk (at much faster than real speed) in
- # the same way that we profile real-time data.
- self.wall_ts = time.time()
-
- def getAudio(self) -> bytes:
- frames = self.stream.getSamples()
- if frames:
- self.frames += frames
- return self.frames
-
- def dropAudioPrefix(self, dur_s: float) -> bytes:
- n_bytes = int(dur_s * AudioStream.FPS) * self.stream.FRAME_SZ
- n_bytes = min(n_bytes, len(self.frames))
- cut_portion = self.frames[:n_bytes]
- self.frames = self.frames[n_bytes:]
- self.wall_ts += float(n_bytes / self.stream.FRAME_SZ) / self.stream.FPS
- return cut_portion
-
- def dropAudioPrefixByFrames(self, dur_frames: int) -> bytes:
- n_bytes = dur_frames * self.stream.FRAME_SZ
- n_bytes = min(n_bytes, len(self.frames))
- cut_portion = self.frames[:n_bytes]
- self.frames = self.frames[n_bytes:]
- self.wall_ts += float(n_bytes / self.stream.FRAME_SZ) / self.stream.FPS
- return cut_portion
-
- def keepLast(self, dur_s: float) -> bytes:
- drop_len = max(0, self.duration() - dur_s)
- return self.dropAudioPrefix(drop_len)
-
- def dropAudio(self):
- self.wall_ts += self.duration()
- cut_portion = self.frames
- self.frames = b''
- return cut_portion
-
- def duration(self):
- return len(self.frames) / (AudioStream.FPS * self.stream.FRAME_SZ)
-
- def begin(self):
- return self.wall_ts
-
- def now(self):
- return self.begin() + self.duration()
-
-class AudioCollectorFilter:
- def __init__(self, parent: AudioCollector):
- self.parent = parent
-
- def getAudio(self) -> bytes:
- return self.parent.getAudio()
- def dropAudioPrefix(self, dur_s: float):
- return self.parent.dropAudioPrefix(dur_s)
- def dropAudioPrefixByFrames(self, dur_frames: int):
- return self.parent.dropAudioPrefixByFrames(dur_frames)
- def keepLast(self, dur_s):
- return self.parent.keepLast(dur_s)
- def dropAudio(self):
- return self.parent.dropAudio()
- def duration(self):
- return self.parent.duration()
- def begin(self):
- return self.parent.begin()
- def now(self):
- return self.parent.now()
-
-# Audio collector that enforces a minimum length on its audio data.
-class LengthEnforcingAudioCollector(AudioCollectorFilter):
- def __init__(self, parent: AudioCollector, min_duration_s: float):
- AudioCollectorFilter.__init__(self, parent)
- self.min_duration_s = min_duration_s
-
- def getAudio(self) -> bytes:
- audio = self.parent.getAudio()
- min_duration_frames = int(self.min_duration_s * AudioStream.FPS)
- pad_len_frames = max(0, min_duration_frames - int(len(audio) /
- AudioStream.FRAME_SZ))
- pad = np.zeros(pad_len_frames, dtype=np.int16).tobytes()
- return pad + audio
-
-class NormalizingAudioCollector(AudioCollectorFilter):
- def __init__(self, parent: AudioCollector):
- AudioCollectorFilter.__init__(self, parent)
-
- def getAudio(self) -> bytes:
- audio = self.parent.getAudio()
-
- audio = AudioSegment(audio, sample_width=AudioStream.FRAME_SZ,
- frame_rate=AudioStream.FPS, channels=AudioStream.CHANNELS)
- audio = audio.normalize()
-
- frames = np.array(audio.get_array_of_samples())
- frames = np.int16(frames).tobytes()
-
- return frames
-
-class CompressingAudioCollector(AudioCollectorFilter):
- def __init__(self, parent: AudioCollector):
- AudioCollectorFilter.__init__(self, parent)
-
- def getAudio(self) -> bytes:
- audio = self.parent.getAudio()
-
- audio = AudioSegment(audio, sample_width=AudioStream.FRAME_SZ,
- frame_rate=AudioStream.FPS, channels=AudioStream.CHANNELS)
- # subtle compression has a slight positive effect on my benchmark
- audio = audio.compress_dynamic_range(threshold=-10, ratio=2.0)
-
- frames = np.array(audio.get_array_of_samples())
- frames = np.int16(frames).tobytes()
-
- return frames
-
-class AudioSegmenter:
- def __init__(self,
- min_silence_ms=250,
- max_speech_s=5):
- self.vad_options = vad.VadOptions(
- min_silence_duration_ms=min_silence_ms,
- max_speech_duration_s=max_speech_s)
- pass
-
- def segmentAudio(self, audio: bytes):
- audio = np.frombuffer(audio,
- dtype=np.int16).flatten().astype(np.float32) / 32768.0
- return vad.get_speech_timestamps(audio, vad_options=self.vad_options)
-
- # Returns the stable cutoff (if any) and whether there are any segments.
- def getStableCutoff(self, audio: bytes) -> typing.Tuple[int, bool]:
- min_delta_frames = int((self.vad_options.min_silence_duration_ms *
- AudioStream.FPS) / 1000.0)
- cutoff = None
-
- last_end = None
- segments = self.segmentAudio(audio)
-
- for i in range(len(segments)):
- s = segments[i]
- #print(f"s: {s}")
- #print(f"last_end: {last_end}")
-
- if last_end:
- delta_frames = s['start'] - last_end
- #print(f"delta frames: {delta_frames}")
- if delta_frames > min_delta_frames:
- cutoff = s['start']
- else:
- last_end = s['end']
-
- if i == len(segments) - 1:
- now = int(len(audio) / AudioStream.FRAME_SZ)
- #print(f"now: {now}")
- #print(f"min d: {min_delta_frames}")
- delta_frames = now - s['end']
- if delta_frames > min_delta_frames:
- cutoff = now - int(min_delta_frames / 2)
-
- return (cutoff, len(segments) > 0)
-
-# A segment of transcribed audio. `start_ts` and `end_ts` are floating point
-# number of seconds since the beginning of audio data.
-class Segment:
- def __init__(self,
- transcript: str,
- start_ts: float,
- end_ts: float,
- wall_ts: float,
- avg_logprob: float,
- no_speech_prob: float,
- compression_ratio: float):
- self.transcript = transcript
- # start_ts, end_ts are timestamps in seconds relative to `wall_ts`.
- self.start_ts = start_ts
- self.end_ts = end_ts
- # wall_ts is the time.time() at which the oldest audio sample leading
- # to this transcript was collected.
- self.wall_ts = wall_ts
- self.avg_logprob = avg_logprob
- self.no_speech_prob = no_speech_prob
- self.compression_ratio = compression_ratio
-
- def __str__(self):
- ts = f"(ts: {self.start_ts}-{self.end_ts}) "
-
- wall_ts_start = datetime.utcfromtimestamp(self.start_ts + self.wall_ts).strftime('%H:%M:%S')
- wall_ts_end = datetime.utcfromtimestamp(self.end_ts + self.wall_ts).strftime('%H:%M:%S')
- wall_ts = f"(wall ts: {wall_ts_start}-{wall_ts_end}) "
-
- no_speech = f"(no_speech: {self.no_speech_prob}) "
- avg_logprob = f"(avg_logprob: {self.avg_logprob}) "
- return f"{self.transcript} " + ts + wall_ts + no_speech + avg_logprob
-
-class Whisper:
- def __init__(self,
- collector: AudioCollector,
- cfg: typing.Dict):
- self.collector = collector
- self.model = None
- self.cfg = cfg
-
- abspath = os.path.abspath(__file__)
- my_dir = os.path.dirname(abspath)
- parent_dir = os.path.dirname(my_dir)
-
- model_str = cfg["model"]
- model_root = os.path.join(parent_dir, "Models",
- os.path.normpath(model_str))
- print(f"Model {cfg['model']} will be saved to {model_root}",
- file=sys.stderr)
-
- model_device = "cuda"
- if cfg["use_cpu"]:
- model_device = "cpu"
-
- already_downloaded = os.path.exists(model_root)
-
- self.model = WhisperModel(model_str,
- device = model_device,
- device_index = cfg["gpu_idx"],
- compute_type = cfg["compute_type"],
- download_root = model_root,
- local_files_only = already_downloaded)
-
- def transcribe(self, frames: bytes = None) -> typing.List[Segment]:
- if frames is None:
- frames = self.collector.getAudio()
- # Convert from signed 16-bit int [-32768, 32767] to signed 32-bit float on
- # [-1, 1].
- audio = np.frombuffer(frames,
- dtype=np.int16).flatten().astype(np.float32) / 32768.0
-
- t0 = time.time()
- segments, info = self.model.transcribe(
- audio,
- language = langcodes.find(self.cfg["language"]).language,
- vad_filter = True,
- temperature=0.0,
- without_timestamps = False)
- res = []
- for s in segments:
- # Manual touchup. I see a decent number of hallucinations sneaking
- # in with high `no_speech_prob` and modest `avg_logprob`.
- if s.no_speech_prob > 0.6 and s.avg_logprob < -0.5:
- if cfg["enable_debug_mode"]:
- print(f"Drop probable hallucination (case 1) " +
- f"(text='{s.text}', " +
- f"no_speech_prob={s.no_speech_prob}, " +
- f"avg_logprob={s.avg_logprob})", file=sys.stderr)
- continue
- # Another touchup targeted at the vexatious "thanks for watching!"
- # hallucination. This triggers a lot when listening to
- # instrumental/electronic music.
- if s.no_speech_prob > 0.15 and s.avg_logprob < -0.7:
- if cfg["enable_debug_mode"]:
- print(f"Drop probable hallucination (case 2) " +
- f"(text='{s.text}', " +
- f"no_speech_prob={s.no_speech_prob}, " +
- f"avg_logprob={s.avg_logprob})", file=sys.stderr)
- continue
- if cfg["enable_debug_mode"]:
- print(f"s get: {s}")
- if s.avg_logprob < -1.0:
- continue
- if s.compression_ratio > 2.4:
- continue
- res.append(Segment(s.text, s.start, s.end,
- self.collector.begin(),
- s.avg_logprob, s.no_speech_prob, s.compression_ratio))
- t1 = time.time()
- if cfg["enable_debug_mode"]:
- print(f"Transcription latency (s): {t1 - t0}")
- return res
-
-def saveAudio(audio: bytes, path: str):
- with wave.open(path, 'wb') as wf:
- print(f"Saving audio to {path}", file=sys.stderr)
- wf.setnchannels(AudioStream.CHANNELS)
- wf.setsampwidth(AudioStream.FRAME_SZ)
- wf.setframerate(AudioStream.FPS)
- wf.writeframes(audio)
-
-class VadCommitter:
- def __init__(self,
- cfg: typing.Dict,
- collector: AudioCollector,
- whisper: Whisper,
- segmenter: AudioSegmenter):
- self.cfg = cfg
- self.collector = collector
- self.whisper = whisper
- self.segmenter = segmenter
-
- def getDelta(self) -> TranscriptCommit:
- audio = self.collector.getAudio()
- stable_cutoff, has_audio = self.segmenter.getStableCutoff(audio)
-
- delta = ""
- commit_audio = None
- latency_s = None
- duration_s = self.collector.duration()
- start_ts = self.collector.begin()
-
- if has_audio and stable_cutoff:
- #print(f"stable cutoff get: {stable_cutoff}", file=sys.stderr)
- latency_s = self.collector.now() - self.collector.begin()
- duration_s = stable_cutoff / AudioStream.FPS
- start_ts = self.collector.begin()
- commit_audio = self.collector.dropAudioPrefixByFrames(stable_cutoff)
-
- segments = self.whisper.transcribe(commit_audio)
- delta = ''.join(s.transcript for s in segments)
- audio = self.collector.getAudio()
- if cfg["enable_debug_mode"]:
- for s in segments:
- print(f"commit segment: {s}", file=sys.stderr)
- print(f"delta get: {delta}", file=sys.stderr)
-
- if False:
- ts = datetime.fromtimestamp(self.collector.now() - latency_s)
- filename = str(ts.strftime('%Y_%m_%d__%H-%M-%S')) + ".wav"
- saveAudio(commit_audio, filename)
-
- preview = ""
- if self.cfg["enable_previews"] and has_audio:
- segments = self.whisper.transcribe(audio)
- preview = "".join(s.transcript for s in segments)
-
- if not has_audio:
- #print("VAD detects no audio, skip transcription", file=sys.stderr)
- self.collector.keepLast(1.0)
-
- return TranscriptCommit(
- delta.strip(),
- preview.strip(),
- latency_s,
- audio=audio,
- duration_s=duration_s,
- start_ts=start_ts)
-
-def install_in_venv(pkgs: typing.List[str]) -> bool:
- pkgs_str = " ".join(pkgs)
- print(f"Installing {pkgs_str}")
- pip_proc = subprocess.Popen(
- f"Resources/Python/python.exe -m pip install {pkgs_str} --no-warn-script-location".split(),
- stdout=subprocess.PIPE,
- stderr=subprocess.PIPE)
- pip_stdout, pip_stderr = pip_proc.communicate()
- pip_stdout = pip_stdout.decode("utf-8")
- pip_stderr = pip_stderr.decode("utf-8")
- print(pip_stdout, file=sys.stderr)
- print(pip_stderr, file=sys.stderr)
- if pip_proc.returncode != 0:
- print(f"`pip install {pkgs_str}` exited with {pip_proc.returncode}",
- file=sys.stderr)
- return False
- return True
-
-class TranslationPlugin(StreamingPlugin):
- def __init__(self, cfg):
- lang_bits = cfg["language_target"].split(" | ")
- self.cfg = cfg
- self.language_target = None
- self.translator = None
- self.tokenizer = None
- if len(lang_bits) != 2:
- return
- self.language_target = lang_bits[1]
-
- print("Translation requested", file=sys.stderr)
- # The ctranslate2 model converter needs torch. Grr.
- if not install_in_venv(["torch==2.2.2"]):
- return
-
- output_dir = "Resources/" + cfg["model_translation"]
- # Provided by ctranslate2 Python package
- cmd = "ct2-transformers-converter.exe --model facebook/" + \
- cfg["model_translation"] + " --output_dir " + output_dir
-
- print(f"Fetching translation algorithm ({cfg['model_translation']})",
- file=sys.stderr)
- if not os.path.exists(output_dir):
- ct2_proc = subprocess.Popen(
- cmd.split(),
- stdout=subprocess.PIPE,
- stderr=subprocess.PIPE)
- ct2_stdout, ct2_stderr = ct2_proc.communicate()
- ct2_stdout = ct2_stdout.decode("utf-8")
- ct2_stderr = ct2_stderr.decode("utf-8")
- print(ct2_stdout, file=sys.stderr)
- print(ct2_stderr, file=sys.stderr)
- if ct2_proc.returncode != 0:
- print(f"Failed to get NLLB model: ct2 process exited with "
- "{ct2_proc.returncode}", file=sys.stderr)
- print(f"Using model at {output_dir}", file=sys.stderr)
-
- model_device = "cuda"
- if cfg["use_cpu"]:
- model_device = "cpu"
-
- self.translator = ctranslate2.Translator(output_dir,
- device = model_device,
- device_index = cfg["gpu_idx"],
- compute_type = cfg["compute_type"])
-
- whisper_lang = cfg["language"]
- nllb_lang = lang_compat.whisper_to_nllb[whisper_lang]
-
- self.tokenizer = transformers.AutoTokenizer.from_pretrained(
- "facebook/" + cfg["model_translation"],
- src_lang=nllb_lang)
-
- print(f"Translation ready to go", file=sys.stderr)
-
- def transform(self, commit: TranscriptCommit) -> TranscriptCommit:
- if not self.language_target:
- return commit
-
- def _translate_text(text: str) -> str:
-
- whisper_lang = self.cfg["language"]
- nllb_lang = lang_compat.whisper_to_nllb[whisper_lang]
- ss_lang = lang_compat.nllb_to_ss[nllb_lang]
- sentences = split_text_into_sentences(text, language=ss_lang)
-
- translated_sentences = []
- for sentence in sentences:
- source = self.tokenizer.convert_ids_to_tokens(self.tokenizer.encode(sentence))
- target_prefix = [self.language_target]
- results = self.translator.translate_batch([source], target_prefix=[target_prefix])
- target = results[0].hypotheses[0][1:]
- translated_sentence = self.tokenizer.decode(self.tokenizer.convert_tokens_to_ids(target))
- translated_sentences.append(translated_sentence)
- translated = " ".join(translated_sentences)
- if cfg["enable_orig_lang"] and len(sentences) > 0:
- translated += f" ({text})"
- return translated
-
- commit.delta = _translate_text(commit.delta)
- commit.preview = _translate_text(commit.preview)
- return commit
-
-class LowercasePlugin(StreamingPlugin):
- def __init__(self, cfg):
- self.cfg = cfg
-
- def transform(self, commit: TranscriptCommit) -> TranscriptCommit:
- if self.cfg["enable_lowercase_filter"]:
- commit.delta = commit.delta.lower()
- commit.preview = commit.preview.lower()
- return commit
-
-class UppercasePlugin(StreamingPlugin):
- def __init__(self, cfg):
- self.cfg = cfg
-
- def transform(self, commit: TranscriptCommit) -> TranscriptCommit:
- if self.cfg["enable_uppercase_filter"]:
- commit.delta = commit.delta.upper()
- commit.preview = commit.preview.upper()
- return commit
-
-class UwuPlugin(StreamingPlugin):
- def __init__(self, cfg):
- self.cfg = cfg
-
- def transform(self, commit: TranscriptCommit) -> TranscriptCommit:
- if self.cfg["enable_uwu_filter"]:
- def _to_uwu(s: str) -> str:
- uwu_proc = subprocess.Popen(["Resources/Uwu/Uwwwu.exe", s],
- stdout=subprocess.PIPE,
- stderr=subprocess.PIPE)
- uwu_stdout, uwu_stderr = uwu_proc.communicate()
- uwu_text = uwu_stdout.decode("utf-8")
- uwu_text = uwu_text.replace("\n", "")
- uwu_text = uwu_text.replace("\r", "")
- if uwu_text.isspace():
- return ""
- # Guarantee that the segment starts with a single space and
- # doesn't end with whitespace.
- uwu_text = " " + uwu_text.lstrip().rstrip()
- return uwu_text
- commit.delta = _to_uwu(commit.delta)
- commit.preview = _to_uwu(commit.preview)
- return commit
-
-class ProfanityPlugin(StreamingPlugin):
- def __init__(self, cfg):
- self.cfg = cfg
- en_profanity_path = os.path.abspath("Resources/Profanity/en")
- self.filter = ProfanityFilter(en_profanity_path)
- if cfg["enable_profanity_filter"]:
- self.filter.load()
-
- def transform(self, commit: TranscriptCommit) -> TranscriptCommit:
- if self.cfg["enable_profanity_filter"]:
- commit.delta = self.filter.filter(commit.delta)
- commit.preview = self.filter.filter(commit.preview)
- return commit
-
-class PresentationFilter:
- def __init__(self):
- pass
-
- def transform(self, transcript: str, preview: str) -> typing.Tuple[str, str]:
- return transcript, preview
-
- def stop(self):
- pass
-
-class TrailingPeriodFilter(PresentationFilter):
- def __init__(self, cfg):
- self.cfg = cfg
-
- def transform(self, transcript: str, preview: str) -> typing.Tuple[str, str]:
- if self.cfg["remove_trailing_period"]:
- def _remove_trailing_period(s: str) -> str:
- if len(s) > 0 and s[-1] == '.' and not s.endswith("..."):
- s = s[0:len(s)-1]
- return s
- if len(preview) == 0:
- print("here")
- transcript = _remove_trailing_period(transcript)
- else:
- print("there")
- preview = _remove_trailing_period(preview)
- return transcript, preview
-
-class OscPager:
- def __init__(self, cfg):
- self.osc_state = osc_ctrl.OscState(cfg["chars_per_sync"],
- cfg["rows"],
- cfg["cols"],
- cfg["bytes_per_char"])
- self.cfg = cfg
- self.next_sync_window = time.time()
-
- def page(self, text):
- if self.cfg["use_builtin"]:
- osc_ctrl.pageMessageBuiltin(self.cfg, self.osc_state, text)
- self.bumpSyncWindow(amount_s=1.5)
- else:
- osc_ctrl.pageMessage(self.cfg, self.osc_state, text, EmotesState())
- self.bumpSyncWindow()
-
- def bumpSyncWindow(self, amount_s=osc_ctrl.SYNC_DELAY_S):
- self.next_sync_window = time.time() + amount_s
-
- def getSyncWindow(self):
- while time.time() < self.next_sync_window:
- time.sleep(0.01)
-
- def clear(self):
- osc_ctrl.clear(self.osc_state)
- self.bumpSyncWindow()
-
- def toggleBoard(self, state: bool):
- osc_ctrl.toggleBoard(self.osc_state.client, state)
- self.bumpSyncWindow()
-
- def lockWorld(self, state: bool):
- osc_ctrl.lockWorld(self.osc_state.client, state)
- self.bumpSyncWindow()
-
- def ellipsis(self, state: bool):
- osc_ctrl.ellipsis(self.osc_state.client, state)
- self.bumpSyncWindow()
-
-def transcriptionThread(ctrl: ThreadControl):
- last_stable_commit = None
-
- while ctrl.run_app:
- time.sleep(ctrl.cfg["transcription_loop_delay_ms"] / 1000.0);
-
- op = None
-
- commit = ctrl.committer.getDelta()
-
- for plugin in ctrl.plugins:
- commit = plugin.transform(commit)
-
- if len(commit.delta) > 0 or len(commit.preview) > 0:
- # Avoid re-sending text after long pauses. User controls the length
- # of the pause in the UI.
- if ctrl.cfg["reset_after_silence_s"] > 0:
- silence_duration = 0
- if last_stable_commit:
- last_commit_end_ts = \
- last_stable_commit.start_ts + \
- last_stable_commit.duration_s
- silence_duration = commit.start_ts - last_commit_end_ts
- if silence_duration > ctrl.cfg["reset_after_silence_s"]:
- print(f"Resetting transcript after {silence_duration}-second "
- "silence", file=sys.stderr)
- ctrl.transcript = ""
- ctrl.preview = ""
- if commit.delta:
- last_stable_commit = commit
-
- # Hard-cap displayed transcript length at 4k characters to prevent
- # runaway memory use in UI. Keep the full transcript to avoid
- # breaking OSC pager.
- transcript = ctrl.transcript[-4096:] + commit.delta
- preview = commit.preview
-
- for filt in ctrl.filters:
- transcript, preview = filt.transform(transcript, preview)
-
- try:
- print(f"Transcript: {transcript}")
- except UnicodeEncodeError:
- print("Failed to encode transcript - discarding delta",
- file=sys.stderr)
- continue
- try:
- print(f"Preview: {preview}")
- except UnicodeEncodeError:
- print("Failed to encode preview - discarding", file=sys.stderr)
-
- if cfg["enable_debug_mode"]:
- print(f"commit latency: {commit.latency_s}", file=sys.stderr)
- print(f"commit thresh: {commit.thresh_at_commit}",
- file=sys.stderr)
-
- if len(ctrl.transcript) > 0 and \
- (not ctrl.transcript.endswith(' ')) and \
- (not commit.delta.startswith(' ')):
- commit.delta = ' ' + commit.delta
- if len(commit.delta) > 0 and \
- (not commit.delta.endswith(' ')) and \
- (not commit.preview.startswith(' ')):
- commit.preview = ' ' + commit.preview
-
- ctrl.transcript += commit.delta
- ctrl.preview = ctrl.transcript + commit.preview
- for plugin in ctrl.plugins:
- plugin.stop()
- for filt in ctrl.filters:
- filt.stop()
-
-def vrInputThread(ctrl: ThreadControl):
- RECORD_STATE = 0
- PAUSE_STATE = 1
- state = PAUSE_STATE
-
- hand_id = ctrl.cfg["button"].split()[0]
- button_id = ctrl.cfg["button"].split()[1]
-
- # Rough description of state machine:
- # Single short press: toggle transcription
- # Medium press: dismiss custom chatbox
- # Long press: update chatbox in place
- # Medium press + long press: type transcription
-
- last_rising = time.time()
- last_medium_press_end = 0
-
- waveform0 = os.path.abspath("Resources/Sounds/Noise_On_Quiet.wav")
- waveform1 = os.path.abspath("Resources/Sounds/Noise_Off_Quiet.wav")
- waveform2 = os.path.abspath("Resources/Sounds/Dismiss_Noise_Quiet.wav")
- waveform3 = os.path.abspath("Resources/Sounds/KB_Noise_Off_Quiet.wav")
-
- button_generator = steamvr.pollButtonPress(hand=hand_id, button=button_id,
- ctrl=ctrl)
- while ctrl.run_app:
- time.sleep(0.01)
- try:
- event = next(button_generator)
- except StopIteration:
- break
-
- if event.opcode == steamvr.EVENT_RISING_EDGE:
- last_rising = time.time()
-
- if state == PAUSE_STATE:
- ctrl.stream.pause(False)
- ctrl.stream.getSamples()
-
- elif event.opcode == steamvr.EVENT_FALLING_EDGE:
- now = time.time()
- if now - last_rising > 1.5:
- # Long press: treat as the end of transcription.
- state = PAUSE_STATE
-
- ctrl.stream.pause(True)
-
- if last_rising - last_medium_press_end < 1.0:
- # Type transcription
- if ctrl.cfg["enable_local_beep"]:
- winsound.PlaySound(waveform3, winsound.SND_FILENAME | winsound.SND_ASYNC)
- pass
- # TODO(yum) this is broken! Audio is not being collected
- # while paused anymore.
- #keyboard.write(ctrl.preview)
- else:
- if ctrl.cfg["enable_local_beep"]:
- winsound.PlaySound(waveform1, winsound.SND_FILENAME | winsound.SND_ASYNC)
- pass
-
- elif now - last_rising > 0.5:
- # Medium press
- print("CLEARING", file=sys.stderr)
- last_medium_press_end = now
- state = PAUSE_STATE
-
- if ctrl.cfg["enable_local_beep"]:
- winsound.PlaySound(waveform2, winsound.SND_FILENAME | winsound.SND_ASYNC)
- pass
-
- if not ctrl.cfg["use_builtin"]:
- ctrl.pager.getSyncWindow()
- ctrl.pager.toggleBoard(False)
-
- # Flush the *entire* pipeline.
- ctrl.stream.pause(True)
- ctrl.stream.getSamples()
- ctrl.collector.dropAudio()
- ctrl.pager.clear()
- if ctrl.cfg["enable_lock_at_spawn"]:
- # Give the board 0.5 seconds to disappear before unlocking from
- # world space.
- time.sleep(0.5)
- ctrl.pager.lockWorld(False)
- else:
- # Short hold
- if state == RECORD_STATE:
- print("PAUSED", file=sys.stderr)
- state = PAUSE_STATE
- if not ctrl.cfg["use_builtin"] and not ctrl.cfg["enable_lock_at_spawn"]:
- ctrl.pager.getSyncWindow()
- ctrl.pager.lockWorld(True)
-
- ctrl.stream.pause(True)
-
- if ctrl.cfg["enable_local_beep"]:
- winsound.PlaySound(waveform1, winsound.SND_FILENAME | winsound.SND_ASYNC)
- pass
- elif state == PAUSE_STATE:
- print("RECORDING", file=sys.stderr)
- state = RECORD_STATE
- if not ctrl.cfg["use_builtin"]:
- ctrl.pager.getSyncWindow()
- ctrl.pager.toggleBoard(True)
- ctrl.pager.lockWorld(ctrl.cfg["enable_lock_at_spawn"])
- ctrl.pager.ellipsis(True)
- if ctrl.cfg["reset_on_toggle"]:
- if ctrl.cfg["enable_debug_mode"]:
- print("Toggle detected, dropping transcript (3)",
- file=sys.stderr)
- ctrl.transcript = ""
- ctrl.preview = ""
- #audio_state.drop_transcription = True
- else:
- if ctrl.cfg["enable_debug_mode"]:
- print("Toggle detected, committing preview text (3)", file=sys.stderr)
- #audio_state.text += audio_state.preview_text
-
- ctrl.stream.pause(False)
- ctrl.pager.clear()
-
- if ctrl.cfg["enable_local_beep"]:
- winsound.PlaySound(waveform0, winsound.SND_FILENAME | winsound.SND_ASYNC)
- pass
-
-def kbInputThread(ctrl: ThreadControl):
- machine = keybind_event_machine.KeybindEventMachine(ctrl.cfg["keybind"])
- last_press_time = 0
-
- # double pressing the keybind
- double_press_timeout = 0.5
-
- RECORD_STATE = 0
- PAUSE_STATE = 1
- state = PAUSE_STATE
-
- waveform0 = os.path.abspath("Resources/Sounds/Noise_On_Quiet.wav")
- waveform1 = os.path.abspath("Resources/Sounds/Noise_Off_Quiet.wav")
- waveform2 = os.path.abspath("Resources/Sounds/Dismiss_Noise_Quiet.wav")
- waveform3 = os.path.abspath("Resources/Sounds/KB_Noise_Off_Quiet.wav")
-
- while ctrl.run_app:
- time.sleep(0.01)
-
- cur_press_time = machine.getNextPressTime()
- if cur_press_time == 0:
- continue
-
- EVENT_SINGLE_PRESS = 0
- EVENT_DOUBLE_PRESS = 1
- if last_press_time == 0:
- event = EVENT_SINGLE_PRESS
- elif cur_press_time - last_press_time < double_press_timeout:
- event = EVENT_DOUBLE_PRESS
- else:
- event = EVENT_SINGLE_PRESS
- last_press_time = cur_press_time
-
- if event == EVENT_DOUBLE_PRESS:
- print("CLEARING", file=sys.stderr)
- state = PAUSE_STATE
-
- if ctrl.cfg["enable_local_beep"]:
- winsound.PlaySound(waveform2, winsound.SND_FILENAME | winsound.SND_ASYNC)
- pass
-
- if not ctrl.cfg["use_builtin"]:
- ctrl.pager.getSyncWindow()
- ctrl.pager.toggleBoard(False)
-
- # Flush the *entire* pipeline.
- ctrl.stream.pause(True)
- ctrl.stream.getSamples()
- ctrl.collector.dropAudio()
- ctrl.pager.clear()
- if ctrl.cfg["enable_lock_at_spawn"]:
- # Give the board 0.5 seconds to disappear before unlocking from
- # world space.
- time.sleep(0.5)
- ctrl.pager.lockWorld(False)
- continue
-
- # Short hold
- if state == RECORD_STATE:
- print("PAUSED", file=sys.stderr)
- state = PAUSE_STATE
- if not ctrl.cfg["use_builtin"] and not ctrl.cfg["enable_lock_at_spawn"]:
- ctrl.pager.getSyncWindow()
- ctrl.pager.lockWorld(True)
-
- ctrl.stream.pause(True)
-
- if ctrl.cfg["enable_local_beep"]:
- winsound.PlaySound(waveform1, winsound.SND_FILENAME | winsound.SND_ASYNC)
- pass
- elif state == PAUSE_STATE:
- print("RECORDING", file=sys.stderr)
- state = RECORD_STATE
- if not ctrl.cfg["use_builtin"]:
- ctrl.pager.getSyncWindow()
- ctrl.pager.toggleBoard(True)
- ctrl.pager.lockWorld(ctrl.cfg["enable_lock_at_spawn"])
- ctrl.pager.ellipsis(True)
- if ctrl.cfg["reset_on_toggle"]:
- if ctrl.cfg["enable_debug_mode"]:
- print("Toggle detected, dropping transcript (2)",
- file=sys.stderr)
- ctrl.transcript = ""
- ctrl.preview = ""
- else:
- if ctrl.cfg["enable_debug_mode"]:
- print("Toggle detected, committing preview text (2)",
- file=sys.stderr)
- #audio_state.text += audio_state.preview_text
-
- ctrl.stream.pause(False)
- ctrl.pager.clear()
-
- if ctrl.cfg["enable_local_beep"]:
- winsound.PlaySound(waveform0, winsound.SND_FILENAME | winsound.SND_ASYNC)
- pass
-
-def oscThread(ctrl: ThreadControl):
- while ctrl.run_app:
- ctrl.pager.getSyncWindow()
- ctrl.pager.page(ctrl.preview)
- time.sleep(0.01)
-
-def run(cfg):
- stream = MicStream(cfg["microphone"])
-
- collector = AudioCollector(stream)
- #collector = LengthEnforcingAudioCollector(collector, 5.0)
- collector = NormalizingAudioCollector(collector)
- collector = CompressingAudioCollector(collector)
- whisper = Whisper(collector, cfg)
- segmenter = AudioSegmenter(min_silence_ms=cfg["min_silence_duration_ms"],
- max_speech_s=cfg["max_speech_duration_s"])
- committer = VadCommitter(cfg, collector, whisper, segmenter)
- pager = OscPager(cfg)
-
- ctrl = ThreadControl(cfg)
- ctrl.stream = stream
- ctrl.collector = collector
- ctrl.whisper = whisper
- ctrl.committer = committer
-
- ctrl.plugins = []
- ctrl.plugins.append(TranslationPlugin(cfg))
- ctrl.plugins.append(UppercasePlugin(cfg))
- ctrl.plugins.append(LowercasePlugin(cfg))
- ctrl.plugins.append(ProfanityPlugin(cfg))
- ctrl.plugins.append(UwuPlugin(cfg))
- ctrl.plugins.append(BrowserSource(cfg))
-
- ctrl.filters = []
- ctrl.filters.append(TrailingPeriodFilter(cfg))
-
- ctrl.pager = pager
- ctrl.transcript = ""
- ctrl.preview = ""
-
- transcribe_audio_thd = threading.Thread(target=transcriptionThread, args=[ctrl])
- transcribe_audio_thd.daemon = True
- transcribe_audio_thd.start()
-
- vr_input_thd = threading.Thread(target=vrInputThread, args=[ctrl])
- vr_input_thd.daemon = True
- vr_input_thd.start()
-
- kb_input_thd = threading.Thread(target=kbInputThread, args=[ctrl])
- kb_input_thd.daemon = True
- kb_input_thd.start()
-
- osc_thd = threading.Thread(target=oscThread, args=[ctrl])
- osc_thd.daemon = True
- osc_thd.start()
-
- for line in sys.stdin:
- if "exit" in line or "quit" in line:
- print("Exit requested", file=sys.stderr)
- break
-
- ctrl.run_app = False
- print("Join transcription thread", file=sys.stderr)
- transcribe_audio_thd.join()
- print("Join vr input thread", file=sys.stderr)
- vr_input_thd.join()
- print("Join kb input thread", file=sys.stderr)
- kb_input_thd.join()
- print("Join osc thread", file=sys.stderr)
- osc_thd.join()
- print("Done", file=sys.stderr)
-
-if __name__ == "__main__":
- sys.stdout.reconfigure(encoding="utf-8")
-
- parser = argparse.ArgumentParser()
- parser.add_argument("--config", type=str, help="Path to app config YAML file.")
- args = parser.parse_args()
-
- cfg = app_config.getConfig(args.config)
-
- experiments = [
- ("Evaluate/declaration_short/audio.mp3",
- "Evaluate/declaration_short/control.txt"),
- ("Evaluate/moist/audio.mp3",
- "Evaluate/moist/control.txt"),
- ("Evaluate/vei/audio.mp3",
- "Evaluate/vei/control.txt"),
- ]
-
- if False:
- sum = 0
- for audio, control in experiments:
- print(f"Run experiment {audio} :: {control}", file=sys.stderr)
- sum += evaluate(cfg, audio, control)
- print(f"Total score: {sum}", file=sys.stderr)
- else:
- #optimize(cfg, experiments)
- run(cfg)
-
diff --git a/Scripts/vad.py b/Scripts/vad.py
deleted file mode 100644
index 25f0ad0..0000000
--- a/Scripts/vad.py
+++ /dev/null
@@ -1,315 +0,0 @@
-# MIT License
-#
-# Copyright (c) 2023 Guillaume Klein
-#
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to deal
-# in the Software without restriction, including without limitation the rights
-# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-# copies of the Software, and to permit persons to whom the Software is
-# furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included in all
-# copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-# SOFTWARE.
-
-import bisect
-import functools
-import os
-import warnings
-
-from typing import List, NamedTuple, Optional
-
-import numpy as np
-
-
-# The code below is adapted from https://github.com/snakers4/silero-vad.
-class VadOptions(NamedTuple):
- """VAD options.
-
- Attributes:
- threshold: Speech threshold. Silero VAD outputs speech probabilities for each audio chunk,
- probabilities ABOVE this value are considered as SPEECH. It is better to tune this
- parameter for each dataset separately, but "lazy" 0.5 is pretty good for most datasets.
- min_speech_duration_ms: Final speech chunks shorter min_speech_duration_ms are thrown out.
- max_speech_duration_s: Maximum duration of speech chunks in seconds. Chunks longer
- than max_speech_duration_s will be split at the timestamp of the last silence that
- lasts more than 100ms (if any), to prevent aggressive cutting. Otherwise, they will be
- split aggressively just before max_speech_duration_s.
- min_silence_duration_ms: In the end of each speech chunk wait for min_silence_duration_ms
- before separating it
- window_size_samples: Audio chunks of window_size_samples size are fed to the silero VAD model.
- WARNING! Silero VAD models were trained using 512, 1024, 1536 samples for 16000 sample rate.
- Values other than these may affect model performance!!
- speech_pad_ms: Final speech chunks are padded by speech_pad_ms each side
- """
-
- threshold: float = 0.5
- min_speech_duration_ms: int = 250
- max_speech_duration_s: float = float("inf")
- min_silence_duration_ms: int = 2000
- window_size_samples: int = 1024
- speech_pad_ms: int = 400
-
-
-def get_speech_timestamps(
- audio: np.ndarray,
- vad_options: Optional[VadOptions] = None,
- **kwargs,
-) -> List[dict]:
- """This method is used for splitting long audios into speech chunks using silero VAD.
-
- Args:
- audio: One dimensional float array.
- vad_options: Options for VAD processing.
- kwargs: VAD options passed as keyword arguments for backward compatibility.
-
- Returns:
- List of dicts containing begin and end samples of each speech chunk.
- """
- if vad_options is None:
- vad_options = VadOptions(**kwargs)
-
- threshold = vad_options.threshold
- min_speech_duration_ms = vad_options.min_speech_duration_ms
- max_speech_duration_s = vad_options.max_speech_duration_s
- min_silence_duration_ms = vad_options.min_silence_duration_ms
- window_size_samples = vad_options.window_size_samples
- speech_pad_ms = vad_options.speech_pad_ms
-
- if window_size_samples not in [512, 1024, 1536]:
- warnings.warn(
- "Unusual window_size_samples! Supported window_size_samples:\n"
- " - [512, 1024, 1536] for 16000 sampling_rate"
- )
-
- sampling_rate = 16000
- min_speech_samples = sampling_rate * min_speech_duration_ms / 1000
- speech_pad_samples = sampling_rate * speech_pad_ms / 1000
- max_speech_samples = (
- sampling_rate * max_speech_duration_s
- - window_size_samples
- - 2 * speech_pad_samples
- )
- min_silence_samples = sampling_rate * min_silence_duration_ms / 1000
- min_silence_samples_at_max_speech = sampling_rate * 98 / 1000
-
- audio_length_samples = len(audio)
-
- model = get_vad_model()
- state = model.get_initial_state(batch_size=1)
-
- speech_probs = []
- for current_start_sample in range(0, audio_length_samples, window_size_samples):
- chunk = audio[current_start_sample : current_start_sample + window_size_samples]
- if len(chunk) < window_size_samples:
- chunk = np.pad(chunk, (0, int(window_size_samples - len(chunk))))
- speech_prob, state = model(chunk, state, sampling_rate)
- speech_probs.append(speech_prob)
-
- triggered = False
- speeches = []
- current_speech = {}
- neg_threshold = threshold - 0.15
-
- # to save potential segment end (and tolerate some silence)
- temp_end = 0
- # to save potential segment limits in case of maximum segment size reached
- prev_end = next_start = 0
-
- for i, speech_prob in enumerate(speech_probs):
- if (speech_prob >= threshold) and temp_end:
- temp_end = 0
- if next_start < prev_end:
- next_start = window_size_samples * i
-
- if (speech_prob >= threshold) and not triggered:
- triggered = True
- current_speech["start"] = window_size_samples * i
- continue
-
- if (
- triggered
- and (window_size_samples * i) - current_speech["start"] > max_speech_samples
- ):
- if prev_end:
- current_speech["end"] = prev_end
- speeches.append(current_speech)
- current_speech = {}
- # previously reached silence (< neg_thres) and is still not speech (< thres)
- if next_start < prev_end:
- triggered = False
- else:
- current_speech["start"] = next_start
- prev_end = next_start = temp_end = 0
- else:
- current_speech["end"] = window_size_samples * i
- speeches.append(current_speech)
- current_speech = {}
- prev_end = next_start = temp_end = 0
- triggered = False
- continue
-
- if (speech_prob < neg_threshold) and triggered:
- if not temp_end:
- temp_end = window_size_samples * i
- # condition to avoid cutting in very short silence
- if (window_size_samples * i) - temp_end > min_silence_samples_at_max_speech:
- prev_end = temp_end
- if (window_size_samples * i) - temp_end < min_silence_samples:
- continue
- else:
- current_speech["end"] = temp_end
- if (
- current_speech["end"] - current_speech["start"]
- ) > min_speech_samples:
- speeches.append(current_speech)
- current_speech = {}
- prev_end = next_start = temp_end = 0
- triggered = False
- continue
-
- if (
- current_speech
- and (audio_length_samples - current_speech["start"]) > min_speech_samples
- ):
- current_speech["end"] = audio_length_samples
- speeches.append(current_speech)
-
- for i, speech in enumerate(speeches):
- if i == 0:
- speech["start"] = int(max(0, speech["start"] - speech_pad_samples))
- if i != len(speeches) - 1:
- silence_duration = speeches[i + 1]["start"] - speech["end"]
- if silence_duration < 2 * speech_pad_samples:
- speech["end"] += int(silence_duration // 2)
- speeches[i + 1]["start"] = int(
- max(0, speeches[i + 1]["start"] - silence_duration // 2)
- )
- else:
- speech["end"] = int(
- min(audio_length_samples, speech["end"] + speech_pad_samples)
- )
- speeches[i + 1]["start"] = int(
- max(0, speeches[i + 1]["start"] - speech_pad_samples)
- )
- else:
- speech["end"] = int(
- min(audio_length_samples, speech["end"] + speech_pad_samples)
- )
-
- return speeches
-
-
-def collect_chunks(audio: np.ndarray, chunks: List[dict]) -> np.ndarray:
- """Collects and concatenates audio chunks."""
- if not chunks:
- return np.array([], dtype=np.float32)
-
- return np.concatenate([audio[chunk["start"] : chunk["end"]] for chunk in chunks])
-
-
-class SpeechTimestampsMap:
- """Helper class to restore original speech timestamps."""
-
- def __init__(self, chunks: List[dict], sampling_rate: int, time_precision: int = 2):
- self.sampling_rate = sampling_rate
- self.time_precision = time_precision
- self.chunk_end_sample = []
- self.total_silence_before = []
-
- previous_end = 0
- silent_samples = 0
-
- for chunk in chunks:
- silent_samples += chunk["start"] - previous_end
- previous_end = chunk["end"]
-
- self.chunk_end_sample.append(chunk["end"] - silent_samples)
- self.total_silence_before.append(silent_samples / sampling_rate)
-
- def get_original_time(
- self,
- time: float,
- chunk_index: Optional[int] = None,
- ) -> float:
- if chunk_index is None:
- chunk_index = self.get_chunk_index(time)
-
- total_silence_before = self.total_silence_before[chunk_index]
- return round(total_silence_before + time, self.time_precision)
-
- def get_chunk_index(self, time: float) -> int:
- sample = int(time * self.sampling_rate)
- return min(
- bisect.bisect(self.chunk_end_sample, sample),
- len(self.chunk_end_sample) - 1,
- )
-
-
-@functools.lru_cache
-def get_vad_model():
- """Returns the VAD model instance."""
- abspath = os.path.abspath(__file__)
- my_dir = os.path.dirname(abspath)
- parent_dir = os.path.dirname(my_dir)
-
- path = os.path.join(parent_dir, "Models/silero_vad.onnx")
- return SileroVADModel(path)
-
-
-class SileroVADModel:
- def __init__(self, path):
- try:
- import onnxruntime
- except ImportError as e:
- raise RuntimeError(
- "Applying the VAD filter requires the onnxruntime package"
- ) from e
-
- opts = onnxruntime.SessionOptions()
- opts.inter_op_num_threads = 1
- opts.intra_op_num_threads = 1
- opts.log_severity_level = 4
-
- self.session = onnxruntime.InferenceSession(
- path,
- providers=["CPUExecutionProvider"],
- sess_options=opts,
- )
-
- def get_initial_state(self, batch_size: int):
- h = np.zeros((2, batch_size, 64), dtype=np.float32)
- c = np.zeros((2, batch_size, 64), dtype=np.float32)
- return h, c
-
- def __call__(self, x, state, sr: int):
- if len(x.shape) == 1:
- x = np.expand_dims(x, 0)
- if len(x.shape) > 2:
- raise ValueError(
- f"Too many dimensions for input audio chunk {len(x.shape)}"
- )
- if sr / x.shape[1] > 31.25:
- raise ValueError("Input audio chunk is too short")
-
- h, c = state
-
- ort_inputs = {
- "input": x,
- "h": h,
- "c": c,
- "sr": np.array(sr, dtype="int64"),
- }
-
- out, h, c = self.session.run(None, ort_inputs)
- state = (h, c)
-
- return out, state
diff --git a/Shaders/.gitignore b/Shaders/.gitignore
deleted file mode 100644
index 6f40a98..0000000
--- a/Shaders/.gitignore
+++ /dev/null
@@ -1,4 +0,0 @@
-# This should always be an empty file. I regenerate it sometimes but don't want
-# to accidently check in those changes.
-TaSTT.shader
-
diff --git a/Shaders/Motion.cginc b/Shaders/Motion.cginc
deleted file mode 100644
index d6458e9..0000000
--- a/Shaders/Motion.cginc
+++ /dev/null
@@ -1,90 +0,0 @@
-#ifndef MOTION_
-#define MOTION_
-
-// xyz represent quaternion vector, w represents theta.
-typedef float4 Quaternion;
-
-// Math from here:
-// https://en.wikipedia.org/wiki/Quaternions_and_spatial_rotation
-float3 qrot(in float3 v, in Quaternion q)
-{
- float a = q.w;
- float b = q.x;
- float c = q.y;
- float d = q.z;
-
- float a2 = a*a;
- float b2 = b*b;
- float c2 = c*c;
- float d2 = d*d;
-
- float3x3 rot = float3x3(
- (a2 + b2 - c2) - d2, 2*b*c - 2*a*d, 2*b*d + 2*a*c,
- 2*b*c + 2*a*d, (a2 - b2) + (c2 - d2), 2*c*d - 2*a*b,
- 2*b*d - 2*a*c, 2*c*d + 2*a*b, ((a2 - b2) - c2) + d2
- );
-
- return mul(rot, v);
-}
-
-Quaternion qinv(in Quaternion q)
-{
- return Quaternion(q.xyz, -q.w);
-}
-
-// Multiply two quaternions.
-// Math from here: https://www.haroldserrano.com/blog/quaternions-in-computer-graphics
-Quaternion qmul(in Quaternion a, in Quaternion b)
-{
- return Quaternion(a.w * b.xyz + b.w * a.xyz + cross(a.xyz, b.xyz), a.w * b.w - dot(a.xyz, b.xyz));
-}
-
-float4 affine3(in float3 m)
-{
- return float4(m, 1.0);
-}
-
-float4x4 affine3x3(in float3x3 m)
-{
- return float4x4(
- m[0][0], m[0][1], m[0][2], 0,
- m[1][0], m[1][1], m[1][2], 0,
- m[2][0], m[2][1], m[2][2], 0,
- 0, 0, 0, 1
- );
-}
-
-float4x4 eye()
-{
- return float4x4(
- 1, 0, 0, 0,
- 0, 1, 0, 0,
- 0, 0, 1, 0,
- 0, 0, 0, 1
- );
-}
-
-// Return affine translation matrix.
-float4x4 translate(in float dx, in float dy, in float dz)
-{
- return float4x4(
- 1, 0, 0, dx,
- 0, 1, 0, dy,
- 0, 0, 1, dz,
- 0, 0, 0, 1
- );
-}
-
-// Return affine scaling matrix.
-float4x4 scale(in float sx, in float sy, in float sz)
-{
- return float4x4(
- sx, 0, 0, 0,
- 0, sy, 0, 0,
- 0, 0, sz, 0,
- 0, 0, 0, 1
- );
-}
-
-#endif // MOTION_
-
diff --git a/Shaders/PBS.shader b/Shaders/PBS.shader
deleted file mode 100644
index e0b39da..0000000
--- a/Shaders/PBS.shader
+++ /dev/null
@@ -1,65 +0,0 @@
-Shader "TaSTT/Simple_PBS"
-{
- Properties
- {
- [MaterialToggle] BG_Enable("Enable custom background", float) = 0
- BG_BaseColor("Background base color", 2D) = "black" {}
- [NoScaleOffset] BG_NormalMap ("Background normal map", 2D) = "bump" {}
- BG_NormalStrength ("Background normal strength", Float) = 1
- BG_Smoothness("Background smoothness", 2D) = "black" {}
- [MaterialToggle]BG_Smoothness_Invert("Invert background smoothness", float) = 1
- BG_Metallic("Background metallic", 2D) = "black" {}
- BG_Emission_Mask("Background emission mask", 2D) = "black" {}
- BG_Emission_Color("Background emission color", Color) = (0, 0, 0)
-
- [MaterialToggle] Enable_Custom_Cubemap("Enable custom cubemap", float) = 0
- Custom_Cubemap("Custom cubemap", Cube) = "" {}
-
- // %TEMPLATE__UNITY_ROW_COL_PARAMS%
- }
- SubShader
- {
- Pass {
- Tags {
- "RenderType"="Opaque"
- "Queue"="AlphaTest+499"
- "LightMode" = "ForwardBase"
- }
- Blend SrcAlpha OneMinusSrcAlpha
-
- CGPROGRAM
- #pragma target 3.0
-
- #pragma multi_compile _ VERTEXLIGHT_ON
-
- #pragma vertex vert
- #pragma fragment frag
-
- #define FORWARD_BASE_PASS
-
- #include "PBS_lighting.cginc"
- ENDCG
- }
- Pass {
- Tags {
- "RenderType" = "Opaque"
- "LightMode" = "ForwardAdd"
- "Queue"="AlphaTest+499"
- }
- Blend One One
- ZWrite Off
-
- CGPROGRAM
- #pragma target 3.0
-
- #pragma multi_compile_fwdadd
-
- #pragma vertex vert
- #pragma fragment frag
-
- #include "PBS_lighting.cginc"
- ENDCG
- }
- }
-}
-
diff --git a/Shaders/PBS_lighting.cginc b/Shaders/PBS_lighting.cginc
deleted file mode 100644
index 13bde82..0000000
--- a/Shaders/PBS_lighting.cginc
+++ /dev/null
@@ -1,322 +0,0 @@
-#ifndef PBS_LIGHTING
-#define PBS_LIGHTING
-
-#include "AutoLight.cginc"
-#include "UnityPBSLighting.cginc"
-
-struct appdata
-{
- float4 position : POSITION;
- float2 uv : TEXCOORD0;
- float3 normal : NORMAL;
-};
-
-struct v2f
-{
- float4 position : SV_POSITION;
- float4 uv : TEXCOORD0;
- float3 normal : TEXCOORD1;
- float3 worldPos : TEXCOORD2;
-
- #if defined(VERTEXLIGHT_ON)
- float3 vertexLightColor : TEXCOORD3;
- #endif
-};
-
-float BG_Enable;
-sampler2D BG_BaseColor;
-sampler2D BG_NormalMap;
-sampler2D BG_Metallic;
-sampler2D BG_Smoothness;
-sampler2D BG_Emission_Mask;
-float BG_Smoothness_Invert;
-float BG_NormalStrength;
-float3 BG_Emission_Color;
-float4 BG_BaseColor_ST;
-float4 BG_NormalMap_ST;
-float4 BG_Metallic_ST;
-float4 BG_Smoothness_ST;
-float4 BG_Emission_Mask_ST;
-
-float Enable_Custom_Cubemap;
-UNITY_DECLARE_TEXCUBE(Custom_Cubemap);
-
-void getVertexLightColor(inout v2f i)
-{
- #if defined(VERTEXLIGHT_ON)
- float3 light_pos = float3(unity_4LightPosX0.x, unity_4LightPosY0.x,
- unity_4LightPosZ0.x);
- float3 light_vec = light_pos - i.worldPos;
- float3 light_dir = normalize(light_vec);
- float ndotl = DotClamped(i.normal, light_dir);
- // Light fills an expanding sphere with surface area 4 * pi * r^2.
- // By conservation of energy, this means that at distance r, light intensity
- // is proportional to 1/(r^2).
- float attenuation = 1 / (1 + dot(light_vec, light_vec) * unity_4LightAtten0.x);
- i.vertexLightColor = unity_LightColor[0].rgb * ndotl * attenuation;
-
- i.vertexLightColor = Shade4PointLights(
- unity_4LightPosX0, unity_4LightPosY0, unity_4LightPosZ0,
- unity_LightColor[0].rgb,
- unity_LightColor[1].rgb,
- unity_LightColor[2].rgb,
- unity_LightColor[3].rgb,
- unity_4LightAtten0, i.worldPos, i.normal
- );
- #endif
-}
-
-v2f vert(appdata v)
-{
- v2f o;
- o.position = mul(UNITY_MATRIX_MVP, v.position);
- o.worldPos = mul(unity_ObjectToWorld, v.position);
- o.normal = UnityObjectToWorldNormal(v.normal);
- o.uv.xy = TRANSFORM_TEX(v.uv, BG_BaseColor);
- o.uv.zw = 1.0 - v.uv;
- getVertexLightColor(o);
- return o;
-}
-
-fixed sq_dist(fixed2 p0, fixed2 p1)
-{
- fixed2 delta = p1 - p0;
- return max(abs(delta.x), abs(delta.y));
-}
-
-float3 HUEtoRGB(in float H)
-{
- float R = abs(H * 6 - 3) - 1;
- float G = 2 - abs(H * 6 - 2);
- float B = 2 - abs(H * 6 - 4);
- return saturate(float3(R, G, B));
-}
-
-float3 HSVtoRGB(in float3 HSV)
-{
- float3 RGB = HUEtoRGB(HSV.x);
- return ((RGB - 1) * HSV.y + 1) * HSV.z;
-}
-
-fixed4 effect_squares (v2f i)
-{
- float2 uv = i.uv.zw;
- uv.y *= 2; // Text box has 2:1 aspect ratio
- const fixed time = _Time.y;
-
- #define PI 3.1415926535
- fixed theta = PI/4 + sin(time / 4) * 0.1;
- fixed2x2 rot =
- fixed2x2(cos(theta), -1 * sin(theta),
- sin(theta), cos(theta));
-
- #define NSQ_X 9.0
- #define NSQ_Y 5.0
-
- // Map uv from [0, 1] to [-.5, .5].
- fixed2 p = uv - 0.5;
- p *= fixed2(NSQ_X, NSQ_Y);
- p = mul(rot, p);
- p -= 0.5;
-
- // See how far we are from the nearest grid point
- fixed2 intra_pos = frac(p);
- fixed2 intra_center = fixed2(0.5, 0.5);
- fixed intra_dist = sq_dist(intra_pos, intra_center);
-
- fixed st0 = (sin(time) + 1) / 2;
- fixed st1 = (sin(time + PI/8) + 1) / 2;
- fixed st2 = (sin(time + PI/2) + 1) / 2;
- fixed st3 = (sin(time + PI/2 + PI/8) + 1) / 2;
-
- fixed2 center = fixed2(0, 0);
- center = mul(rot, center);
- center -= 0.5;
- fixed2 rot_lim = fixed2(NSQ_X, NSQ_Y);
- rot_lim = mul(rot, rot_lim);
- rot_lim -= 0.5;
-
- float v = 0;
- float x = 0;
-
- if (intra_dist > 0.5 * (0.5 + sin(time * 1.5) * 0.1)) {
- v = intra_dist;
- } else {
- v = 0;
- }
-
- fixed extra_dist = sq_dist(p, center);
- fixed check = max(rot_lim.x, rot_lim.y) / 2;
- if (extra_dist > check * st0) {
- v = 1.0 - v;
- }
- if (extra_dist > check * st1) {
- v = 1.0 - v;
- }
- if (extra_dist > check * st2) {
- v = 1.0 - v;
- }
- if (extra_dist > check * st3) {
- v = 1.0 - v;
- } else {
- x = 0.50;
- }
-
- fixed3 hsv;
- hsv[0] = (v * 0.2 * (1 - x * .8) + 0.55) - x;
- hsv[1] = 0.7;
- hsv[2] = 0.8;
-
- fixed3 col = HSVtoRGB(hsv);
-
- return fixed4(col, 1.0);
-}
-
-fixed4 margin_effect(v2f i)
-{
- return effect_squares(i);
-}
-
-UnityLight GetLight(v2f i)
-{
- UNITY_LIGHT_ATTENUATION(attenuation, 0, i.worldPos);
- float3 light_color = _LightColor0.rgb * attenuation;
-
- UnityLight light;
- light.color = light_color;
- #if defined(POINT) || defined(POINT_COOKIE) || defined(SPOT)
- light.dir = normalize(_WorldSpaceLightPos0.xyz - i.worldPos);
- #else
- light.dir = _WorldSpaceLightPos0.xyz;
- #endif
- light.ndotl = DotClamped(i.normal, light.dir);
-
- return light;
-}
-
-UnityIndirect GetIndirect(v2f i, float3 view_dir, float smoothness) {
- UnityIndirect indirect;
- indirect.diffuse = 0;
- indirect.specular = 0;
-
- #if defined(VERTEXLIGHT_ON)
- indirect.diffuse = i.vertexLightColor;
- #endif
-
- #if defined(FORWARD_BASE_PASS)
- indirect.diffuse += max(0, ShadeSH9(float4(i.normal, 1)));
- float3 reflect_dir = reflect(-view_dir, i.normal);
- // There's a nonlinear relationship between mipmap level and roughness.
- float roughness = 1 - smoothness;
- roughness *= 1.7 - .7 * roughness;
- float3 env_sample;
- if (Enable_Custom_Cubemap) {
- env_sample = UNITY_SAMPLE_TEXCUBE_LOD(
- Custom_Cubemap,
- reflect_dir,
- roughness * UNITY_SPECCUBE_LOD_STEPS);
- } else {
- env_sample = UNITY_SAMPLE_TEXCUBE_LOD(
- unity_SpecCube0,
- reflect_dir,
- roughness * UNITY_SPECCUBE_LOD_STEPS);
- }
- indirect.specular = env_sample;
- #endif
-
- return indirect;
-}
-
-void initNormal(inout v2f i)
-{
- if (BG_Enable) {
- i.normal = UnpackScaleNormal(
- tex2Dgrad(BG_NormalMap, i.uv.xy, ddx(i.uv.x), ddy(i.uv.y)),
- BG_NormalStrength);
- // Swap Y and Z
- i.normal = i.normal.xzy;
- }
- i.normal = normalize(i.normal);
-}
-
-fixed4 light(v2f i,
- sampler2D albedo_map,
- sampler2D normal_map,
- float normal_str,
- sampler2D metallic_map,
- sampler2D smoothness_map,
- float invert_smoothness,
- sampler2D emission_mask,
- float3 emission_color)
-{
- initNormal(i);
-
- float2 iddx = ddx(i.uv.x);
- float2 iddy = ddy(i.uv.y);
- fixed4 albedo = tex2Dgrad(albedo_map, i.uv, iddx, iddy);
-
- fixed3 normal = UnpackScaleNormal(
- tex2Dgrad(normal_map, i.uv.xy, iddx, iddy),
- normal_str);
- // Swap Y and Z
- normal = normal.xzy;
-
- float3 view_dir = normalize(_WorldSpaceCameraPos - i.worldPos);
-
- float metallic = tex2Dgrad(metallic_map, i.uv.xy, iddx, iddy);
-
- float3 specular_tint;
- float one_minus_reflectivity;
- albedo.rgb = DiffuseAndSpecularFromMetallic(
- albedo, metallic, specular_tint, one_minus_reflectivity);
-
- UnityIndirect indirect_light;
- indirect_light.diffuse = 0;
- indirect_light.specular = 0;
-
- float smoothness = tex2Dgrad(smoothness_map, i.uv.xy, iddx, iddy);
- if (invert_smoothness) {
- smoothness = 1 - smoothness;
- }
-
- fixed3 emission = tex2Dgrad(emission_mask, i.uv.xy, iddx, iddy) * emission_color;
-
- fixed3 pbr = UNITY_BRDF_PBS(albedo, specular_tint,
- one_minus_reflectivity, smoothness,
- i.normal, view_dir, GetLight(i), GetIndirect(i, view_dir, smoothness)).rgb;
- pbr.rgb += emission;
-
- return fixed4(pbr, albedo.a);
-}
-
-fixed4 frag(v2f i) : SV_Target
-{
- float2 uv = i.uv.zw;
- // Fix text orientation
- uv.y = 0.5 - uv.y;
- uv.x = 1.0 - uv.x;
- uv.y *= 2; // Text box has 2:1 aspect ratio
-
- // Derived from github.com/pema99/shader-knowledge (MIT license).
- if (unity_CameraProjection[2][0] != 0.0 ||
- unity_CameraProjection[2][1] != 0.0) {
- uv.x = 1.0 - uv.x;
- }
-
- if (BG_Enable) {
- return light(i,
- BG_BaseColor,
- BG_NormalMap,
- BG_NormalStrength,
- BG_Metallic,
- BG_Smoothness,
- BG_Smoothness_Invert,
- BG_Emission_Mask,
- BG_Emission_Color);
- } else {
- return fixed4(1, 1, 1, 0);
- }
-}
-
-#endif // PBS_LIGHTING
-
diff --git a/Shaders/STT_generated_template.cginc b/Shaders/STT_generated_template.cginc
deleted file mode 100644
index 9091e8e..0000000
--- a/Shaders/STT_generated_template.cginc
+++ /dev/null
@@ -1,19 +0,0 @@
-#ifndef __STT_GENERATED_INC__
-#define __STT_GENERATED_INC__
-
-// %TEMPLATE__CG_ROW_COL_CONSTANTS%
-
-// %TEMPLATE__CG_ROW_COL_PARAMS%
-
-// Get the value of the parameter for the cell we're in.
-uint GetLetterParameter(float2 uv)
-{
- float CHAR_COL = floor(uv.x * BOARD_NCOLS);
- float CHAR_ROW = floor(uv.y * BOARD_NROWS);
- int res = 0;
-
- // %TEMPLATE__CG_LETTER_ACCESSOR%
- return res;
-}
-
-#endif // __STT_GENERATED_INC__
diff --git a/Shaders/STT_text.cginc b/Shaders/STT_text.cginc
deleted file mode 100644
index 85c4a1b..0000000
--- a/Shaders/STT_text.cginc
+++ /dev/null
@@ -1,165 +0,0 @@
-#ifndef __STT_TEXT_INC__
-#define __STT_TEXT_INC__
-
-#include "stt_generated.cginc"
-
-float Enable_Dithering;
-
-SamplerState linear_clamp_sampler;
-
-Texture2D _Font_0x0000_0x1FFF;
-float4 _Font_0x0000_0x1FFF_TexelSize;
-Texture2D _Font_0x2000_0x3FFF;
-float4 _Font_0x2000_0x3FFF_TexelSize;
-Texture2D _Font_0x4000_0x5FFF;
-float4 _Font_0x4000_0x5FFF_TexelSize;
-Texture2D _Font_0x6000_0x7FFF;
-float4 _Font_0x6000_0x7FFF_TexelSize;
-Texture2D _Font_0x8000_0x9FFF;
-float4 _Font_0x8000_0x9FFF_TexelSize;
-Texture2D _Font_0xA000_0xBFFF;
-float4 _Font_0xA000_0xBFFF_TexelSize;
-Texture2D _Font_0xC000_0xDFFF;
-float4 _Font_0xC000_0xDFFF_TexelSize;
-Texture2D _Img_0xE000_0xE03F;
-float4 _Img_0xE000_0xE03F_TexelSize;
-
-float2 AddMarginToUV(float2 uv, float2 margin)
-{
- float2 lo = float2(-margin.x / 2, -margin.y / 2);
- float2 hi = float2(1.0 + margin.x / 2, 1.0 + margin.y / 2);
-
- return clamp(lerp(lo, hi, uv), 0.0, 1.0);
-}
-
-// Generate a random number on [0, 1].
-float prng(float2 p)
-{
- return frac(sin(dot(p, float2(561.0, 885.0))) * 776.2) / 2.0;
-}
-
-bool f3ltf3(float3 a, float3 b)
-{
- return (a[0] < b[0]) *
- (a[1] < b[1]) *
- (a[2] < b[2]);
-}
-
-// Write the nth letter in the current cell and return the value of the
-// pixel.
-// `texture_rows` and `texture_cols` indicate how many rows and columns are
-// in the texture being sampled.
-float2 GetLetterUV(float2 uv, int nth_letter,
- float texture_cols, float texture_rows,
- float board_cols, float board_rows,
- float margin)
-{
- // UV spans from [0,1] to [0,1].
- // 'U' is horizontal; cols.
- // 'V' is vertical; rows.
- //
- // I want to divide the mesh into an m x n grid.
- // I want to know what grid cell I'm in. This is simply u * m, v * n.
-
- // OK, I know what cell I'm in. Now I need to know how far across it I
- // am. Produce a float in the range [0, 1).
- float CHAR_FRAC_COL = uv.x * board_cols - floor(uv.x * board_cols);
- float CHAR_FRAC_ROW = uv.y * board_rows - floor(uv.y * board_rows);
-
- // Avoid rendering pixels right on the edge of the slot. If we were to
- // do this, then that value would get stretched due to clamping
- // (AddMarginToUV), resulting in long lines on the edge of the display.
- float lo = margin / 2;
- float hi = 1.0 - margin / 2;
- bool skip_result = (margin != 0) *
- !(CHAR_FRAC_ROW > lo *
- CHAR_FRAC_COL > lo *
- CHAR_FRAC_ROW < hi *
- CHAR_FRAC_COL < hi);
-
- float LETTER_COL = fmod(nth_letter, floor(texture_cols));
- float LETTER_ROW = floor(texture_rows) - floor(nth_letter / floor(texture_cols));
-
- float LETTER_UV_ROW = (LETTER_ROW + CHAR_FRAC_ROW - 1.00) / texture_rows;
- float LETTER_UV_COL = (LETTER_COL + CHAR_FRAC_COL) / texture_cols;
-
- float2 result;
- result.x = LETTER_UV_COL;
- result.y = LETTER_UV_ROW;
-
- return lerp(result, -1, skip_result);;
-}
-
-float4 GetLetter(float2 uv) {
- uint letter = GetLetterParameter(uv);
-
- float texture_cols;
- float texture_rows;
- float2 letter_uv;
- bool is_emote = false;
-
- if (letter < 0xE000) {
- letter_uv = GetLetterUV(uv, letter % 0x2000, TEXTURE_NCOLS, TEXTURE_NROWS, BOARD_NCOLS, BOARD_NROWS, /*margin=*/0);
- } else {
- is_emote = true;
- texture_cols = 16.0;
- texture_rows = 8.0;
- // This will need to be updated if we create multiple emote textures.
- letter_uv = GetLetterUV(uv, letter % 0x2000, texture_cols, texture_rows, BOARD_NCOLS, BOARD_NROWS, /*margin=*/0);
- }
-
- bool discard_text = (letter_uv.x == -1) * (letter_uv.y == -1);
-
- const float iddx = ddx(uv.x);
- const float iddy = ddy(uv.y);
-
- float4 text = float4(0, 0, 0, 0);
- int which_texture = (int) floor(letter / (uint) (64 * 128));
- [forcecase] switch (which_texture)
- {
- case 0:
- text = _Font_0x0000_0x1FFF.SampleGrad(linear_clamp_sampler,
- letter_uv, iddx, iddy);
- break;
- case 1:
- text = _Font_0x2000_0x3FFF.SampleGrad(linear_clamp_sampler,
- letter_uv, iddx, iddy);
- break;
- case 2:
- text = _Font_0x4000_0x5FFF.SampleGrad(linear_clamp_sampler,
- letter_uv, iddx, iddy);
- break;
- case 3:
- text = _Font_0x6000_0x7FFF.SampleGrad(linear_clamp_sampler,
- letter_uv, iddx, iddy);
- break;
- case 4:
- text = _Font_0x8000_0x9FFF.SampleGrad(linear_clamp_sampler,
- letter_uv, iddx, iddy);
- break;
- case 5:
- text = _Font_0xA000_0xBFFF.SampleGrad(linear_clamp_sampler,
- letter_uv, iddx, iddy);
- break;
- case 6:
- text = _Font_0xC000_0xDFFF.SampleGrad(linear_clamp_sampler,
- letter_uv, iddx, iddy);
- break;
- case 7:
- text = _Img_0xE000_0xE03F.SampleGrad(linear_clamp_sampler,
- letter_uv, iddx, iddy);
- break;
- default:
- // Return some distinctive pattern that will look like a bug.
- return float4(1, 0, _SinTime[0], 1);
- }
-
- // The edges of each letter cell can be slightly grey due to mip maps.
- // Detect this and shade it as the background.
- float3 grey = 0.7;
- bool disc = !(!f3ltf3(text.rgb, grey) * !discard_text * !is_emote);
- return lerp(float4(text.rgb, 1), 0, disc);
-}
-
-#endif // __STT_TEXT_INC__
-
diff --git a/Shaders/TaSTT.shader.meta b/Shaders/TaSTT.shader.meta
deleted file mode 100644
index 2b0abac..0000000
--- a/Shaders/TaSTT.shader.meta
+++ /dev/null
@@ -1,9 +0,0 @@
-fileFormatVersion: 2
-guid: feba055fa9e7f9543aaae032a30ec878
-ShaderImporter:
- externalObjects: {}
- defaultTextures: []
- nonModifiableTextures: []
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Shaders/TaSTT_lighting.cginc b/Shaders/TaSTT_lighting.cginc
deleted file mode 100644
index bc3f3f3..0000000
--- a/Shaders/TaSTT_lighting.cginc
+++ /dev/null
@@ -1,57 +0,0 @@
-#ifndef TASTT_LIGHTING
-#define TASTT_LIGHTING
-
-#include "AutoLight.cginc"
-#include "UnityPBSLighting.cginc"
-#include "ray_march.cginc"
-#include "pbr.cginc"
-#include "poi.cginc"
-#include "stt_generated.cginc"
-#include "stt_text.cginc"
-
-void getVertexLightColor(inout v2f i)
-{
- #if defined(VERTEXLIGHT_ON)
- float3 light_pos = float3(unity_4LightPosX0.x, unity_4LightPosY0.x,
- unity_4LightPosZ0.x);
- float3 light_vec = light_pos - i.worldPos;
- float3 light_dir = normalize(light_vec);
- float ndotl = DotClamped(i.normal, light_dir);
- // Light fills an expanding sphere with surface area 4 * pi * r^2.
- // By conservation of energy, this means that at distance r, light intensity
- // is proportional to 1/(r^2).
- float attenuation = 1 / (1 + dot(light_vec, light_vec) * unity_4LightAtten0.x);
- i.vertexLightColor = unity_LightColor[0].rgb * ndotl * attenuation;
-
- i.vertexLightColor = Shade4PointLights(
- unity_4LightPosX0, unity_4LightPosY0, unity_4LightPosZ0,
- unity_LightColor[0].rgb,
- unity_LightColor[1].rgb,
- unity_LightColor[2].rgb,
- unity_LightColor[3].rgb,
- unity_4LightAtten0, i.worldPos, i.normal
- );
- #endif
-}
-
-v2f vert(appdata v)
-{
- v2f o;
- o.position = UnityObjectToClipPos(v.position);
- o.worldPos = mul(unity_ObjectToWorld, v.position);
- o.normal = UnityObjectToWorldNormal(v.normal);
-
- o.uv = v.uv;
- getVertexLightColor(o);
-
- return o;
-}
-
-fixed4 frag(v2f i, out float depth : SV_DepthLessEqual) : SV_Target
-{
- depth = -1000.0;
-
- return stt_ray_march(i, depth);
-}
-
-#endif // TASTT_LIGHTING
diff --git a/Shaders/TaSTT_template.shader b/Shaders/TaSTT_template.shader
deleted file mode 100644
index e3e9a5d..0000000
--- a/Shaders/TaSTT_template.shader
+++ /dev/null
@@ -1,85 +0,0 @@
-Shader "TaSTT/Chatbox"
-{
- Properties
- {
- _Text_Color ("Text color", Color) = (1, 1, 1, 1)
- _Text_Metallic ("Text metallic", Range(0, 1)) = 0
- _Text_Smoothness ("Text smoothness", Range(0, 1)) = 0
- _Text_Emissive ("Text emission", Range(0, 1)) = 0.2
-
- _BG_Color ("Background color", Color) = (0, 0, 0, 1)
- _BG_Metallic ("Background metallic", Range(0, 1)) = 0
- _BG_Smoothness ("Background smoothness", Range(0, 1)) = 0
- _BG_Emissive ("Background emission", Range(0, 1)) = 0.2
-
- _Frame_Color ("Frame color", Color) = (1, 1, 1, 1)
- _Frame_Metallic ("Frame metallic", Range(0, 1)) = 0
- _Frame_Smoothness ("Frame smoothness", Range(0, 1)) = 0
- _Frame_Emissive ("Frame emission", Range(0, 1)) = 0.2
-
- _Emerge("Emerge animation time", Range(0, 1)) = 1.0
- [MaterialToggle] _Ellipsis("Show ellipsis", float) = 0
-
- _Font_0x0000_0x1FFF ("_Font 0 (unicode 0x0000 - 0x1FFFF)", 2D) = "white" {}
- _Font_0x2000_0x3FFF ("_Font 1 (unicode 0x2000 - 0x3FFFF)", 2D) = "white" {}
- _Font_0x4000_0x5FFF ("_Font 2 (unicode 0x4000 - 0x5FFFF)", 2D) = "white" {}
- _Font_0x6000_0x7FFF ("_Font 3 (unicode 0x6000 - 0x7FFFF)", 2D) = "white" {}
- _Font_0x8000_0x9FFF ("_Font 4 (unicode 0x8000 - 0x9FFFF)", 2D) = "white" {}
- _Font_0xA000_0xBFFF ("_Font 5 (unicode 0xA000 - 0xBFFFF)", 2D) = "white" {}
- _Font_0xC000_0xDFFF ("_Font 6 (unicode 0xC000 - 0xDFFFF)", 2D) = "white" {}
- _Img_0xE000_0xE03F ("_Images", 2D) = "white" {}
-
- // %TEMPLATE__UNITY_ROW_COL_PARAMS%
- }
- SubShader
- {
- Pass {
- Tags {
- "RenderType"="Opaque"
- "Queue"="AlphaTest+499"
- "LightMode" = "ForwardBase"
- }
- Blend SrcAlpha OneMinusSrcAlpha
- Cull Back
- ZWrite On
- ZTest LEqual
-
- CGPROGRAM
- #pragma target 5.0
-
- #pragma multi_compile _ VERTEXLIGHT_ON
-
- #pragma vertex vert
- #pragma fragment frag
-
- #define FORWARD_BASE_PASS
-
- #include "TaSTT_lighting.cginc"
- ENDCG
- }
- Pass {
- Tags {
- "RenderType" = "Opaque"
- "LightMode" = "ForwardAdd"
- "Queue"="AlphaTest+499"
- }
- Blend One One
- Cull Back
- ZWrite On
- ZTest LEqual
-
- CGPROGRAM
- #pragma target 5.0
-
- #pragma multi_compile_fwdadd
-
- #pragma vertex vert
- #pragma fragment frag
-
- #include "TaSTT_lighting.cginc"
- ENDCG
- }
- }
- //CustomEditor "TaSTTShaderGUI"
-}
-
diff --git a/Shaders/aa_sample_algorithm.py b/Shaders/aa_sample_algorithm.py
deleted file mode 100644
index 779e159..0000000
--- a/Shaders/aa_sample_algorithm.py
+++ /dev/null
@@ -1,43 +0,0 @@
-#!/usr/bin/env python3
-
-# This is the algorithm that the anti-aliasing logic inside
-# TaSTT_lighting_template.cginc uses.
-
-from math import fmod
-
-x = .5
-y = .1
-aa = 10
-
-# This lets us handle values smaller than 1. We're creating an m*n rectangle
-# and walking a path left-to-right, top-to-bottom through it.
-x_cap = max(x, 1.0 / x)
-y_cap = max(y, 1.0 / y)
-
-print(f"{x_cap} {y_cap}")
-
-def lerp(lo, hi, fract):
- return lo + (hi - lo) * fract
-
-for i in range(0, aa):
- # We want to subdivide an x*y area into `aa` evenly spaced pieces.
- region = x_cap * y_cap
-
- stride = region / aa
-
- region_i = i * stride + stride/2
- region_x = region_i / y_cap
- region_y = fmod(region_i, y_cap)
-
- print(f"{region_x} {region_y}")
-
- region_x = lerp(0, x, region_x / x_cap)
- region_y = lerp(0, y, region_y / y_cap)
-
- print(f"{region_x} {region_y}")
-
- assert(region_x >= 0)
- assert(region_x <= x)
- assert(region_y >= 0)
- assert(region_y <= y)
-
diff --git a/Shaders/eyes_data.cginc b/Shaders/eyes_data.cginc
deleted file mode 100644
index 0ab3127..0000000
--- a/Shaders/eyes_data.cginc
+++ /dev/null
@@ -1,24 +0,0 @@
-#ifndef __EYES_DATA_INC__
-#define __EYES_DATA_INC__
-
-struct appdata
-{
- float4 position : POSITION;
- float2 uv : TEXCOORD0;
- float3 normal : NORMAL;
-};
-
-struct v2f
-{
- float4 position : SV_POSITION;
- float2 uv : TEXCOORD0;
- float3 normal : TEXCOORD1;
- float3 worldPos : TEXCOORD2;
-
- #if defined(VERTEXLIGHT_ON)
- float3 vertexLightColor : TEXCOORD3;
- #endif
-};
-
-#endif // __EYES_DATA_INC__
-
diff --git a/Shaders/hg_sdf.cginc b/Shaders/hg_sdf.cginc
deleted file mode 100644
index b1de0b0..0000000
--- a/Shaders/hg_sdf.cginc
+++ /dev/null
@@ -1,187 +0,0 @@
-#ifndef __HG_SDF__
-#define __HG_SDF__
-
-#include "pema99.cginc"
-
-////////////////////////////////////////////////////////////////
-//
-// HG_SDF
-//
-// GLSL LIBRARY FOR BUILDING SIGNED DISTANCE BOUNDS
-//
-// version 2021-07-28
-//
-// Check https://mercury.sexy/hg_sdf for updates
-// and usage examples. Send feedback to spheretracing@mercury.sexy.
-//
-// Brought to you by MERCURY https://mercury.sexy/
-//
-//
-//
-// Released dual-licensed under
-// Creative Commons Attribution-NonCommercial (CC BY-NC)
-// or
-// MIT License
-// at your choice.
-//
-// SPDX-License-Identifier: MIT OR CC-BY-NC-4.0
-//
-// /////
-//
-// CC-BY-NC-4.0
-// https://creatifloatommons.org/licenses/by-nc/4.0/legalcode
-// https://creatifloatommons.org/licenses/by-nc/4.0/
-//
-// /////
-//
-// MIT License
-//
-// Copyright (c) 2011-2021 Mercury Demogroup
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in all
-// copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-// SOFTWARE.
-//
-// /////
-//
-////////////////////////////////////////////////////////////////
-//
-// How to use this:
-//
-// 1. Build some system to #include glsl files in each other.
-// Include this one at the very start. Or just paste everywhere.
-// 2. Build a sphere tracer. See those papers:
-// * "Sphere Tracing" https://link.springer.com/article/10.1007%2Fs003710050084
-// * "Enhanced Sphere Tracing" http://diglib.eg.org/handle/10.2312/stag.20141233.001-008
-// * "Improved Ray Casting of Procedural Distance Bounds" https://www.bibsonomy.org/bibtex/258e85442234c3ace18ba4d89de94e57d
-// The Raymnarching Toolbox Thread on pouet can be helpful as well
-// http://www.pouet.net/topic.php?which=7931&page=1
-// and contains links to many more resources.
-// 3. Use the tools in this library to build your distance bound f().
-// 4. ???
-// 5. Win a compo.
-//
-// (6. Buy us a beer or a good vodka or something, if you like.)
-//
-////////////////////////////////////////////////////////////////
-//
-// Table of Contents:
-//
-// * Helper functions and macros
-// * Collection of some primitive objects
-// * Domain Manipulation operators
-// * Object combination operators
-//
-////////////////////////////////////////////////////////////////
-//
-// Why use this?
-//
-// The point of this lib is that everything is structured according
-// to patterns that we ended up using when building geometry.
-// It makes it more easy to write code that is reusable and that somebody
-// else can actually understand. Especially code on Shadertoy (which seems
-// to be what everybody else is looking at for "inspiration") tends to be
-// really ugly. So we were forced to do something about the situation and
-// release this lib ;)
-//
-// Everything in here can probably be done in some better way.
-// Please experiment. We'd love some feedback, especially if you
-// use it in a scene production.
-//
-// The main patterns for building geometry this way are:
-// * Stay Lipschitz continuous. That means: don't have any distance
-// gradient larger than 1. Try to be as close to 1 as possible -
-// Distances are euclidean distances, don't fudge around.
-// Underestimating distances will happen. That's why calling
-// it a "distance bound" is more correct. Don't ever multiply
-// distances by some value to "fix" a Lipschitz continuity
-// violation. The invariant is: each fSomething() function returns
-// a correct distance bound.
-// * Use very few primitives and combine them as building blocks
-// using combine opertors that preserve the invariant.
-// * Multiply objects by repeating the domain (space).
-// If you are using a loop inside your distance function, you are
-// probably doing it wrong (or you are building boring fractals).
-// * At right-angle intersections between objects, build a new local
-// coordinate system from the two distances to combine them in
-// interesting ways.
-// * As usual, there are always times when it is best to not follow
-// specific patterns.
-//
-////////////////////////////////////////////////////////////////
-//
-// FAQ
-//
-// Q: Why is there no sphere tracing code in this lib?
-// A: Because our system is way too complex and always changing.
-// This is the constant part. Also we'd like everyone to
-// explore for themselves.
-//
-// Q: This does not work when I paste it into Shadertoy!!!!
-// A: Yes. It is GLSL, not GLSL ES. We like real OpenGL
-// because it has way more features and is more likely
-// to work compared to browser-based WebGL. We recommend
-// you consider using OpenGL for your productions. Most
-// of this can be ported easily though.
-//
-// Q: How do I material?
-// A: We recommend something like this:
-// Write a material ID, the distance and the local coordinate
-// p into some global variables whenever an object's distance is
-// smaller than the stored distance. Then, at the end, evaluate
-// the material to get color, roughness, etc., and do the shading.
-//
-// Q: I found an error. Or I made some function that would fit in
-// in this lib. Or I have some suggestion.
-// A: Awesome! Drop us a mail at spheretracing@mercury.sexy.
-//
-// Q: Why is this not on github?
-// A: Because we were too lazy. If we get bugged about it enough,
-// we'll do it.
-//
-// Q: Your license sucks for me.
-// A: Oh. What should we change it to?
-//
-// Q: I have trouble understanding what is going on with my distances.
-// A: Some visualization of the distance field helps. Try drawing a
-// plane that you can sweep through your scene with some color
-// representation of the distance field at each point and/or iso
-// lines at regular intervals. Visualizing the length of the
-// gradient (or better: how much it deviates from being equal to 1)
-// is immensely helpful for understanding which parts of the
-// distance field are broken.
-//
-////////////////////////////////////////////////////////////////
-
-#define PI 3.14159265
-
-// Repeat around the origin by a fixed angle.
-// For easier use, num of repetitions is use to specify the angle.
-float pModPolar(inout float2 p, float repetitions) {
- float angle = 2*PI/repetitions;
- float a = atan2(p.y, p.x) + angle/2.;
- float r = length(p);
- float c = floor(a/angle);
- a = glsl_mod(a,angle) - angle/2.;
- p = float2(cos(a), sin(a))*r;
- // For an odd number of repetitions, fix cell index of the cell in -x direction
- // (cell index would be e.g. -5 and 5 in the two halves of the cell):
- if (abs(c) >= (repetitions/2)) c = abs(c);
- return c;
-}
-
-#endif // __HG_SDF__
diff --git a/Shaders/iq_sdf.cginc b/Shaders/iq_sdf.cginc
deleted file mode 100644
index 7951261..0000000
--- a/Shaders/iq_sdf.cginc
+++ /dev/null
@@ -1,143 +0,0 @@
-#ifndef __IQ_SDF_INC__
-#define __IQ_SDF_INC__
-
-#include "pema99.cginc"
-
-// The MIT License
-// Copyright © 2020 Inigo Quilez
-// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-float distance_from_octahedron(in float3 p)
-{
- float s = 1.0;
- float3 pp = abs(p);
- float m = pp.x+pp.y+pp.z-s;
- float3 q;
- if( 3.0*pp.x < m ) q = pp.xyz;
- else if( 3.0*pp.y < m ) q = pp.yzx;
- else if( 3.0*pp.z < m ) q = pp.zxy;
- else return m*0.57735027;
-
- float k = clamp(0.5*(q.z-q.y+s),0.0,s);
- return length(float3(q.x,q.y-s+k,q.z-k));
-}
-
-float distance_from_sphere(float3 p)
-{
- return length(p);
-}
-
-float distance_from_sphere(float3 p, float3 c, float r)
-{
- return length(p - c) - r;
-}
-
-float distance_from_cut_sphere( in float3 p, in float r, in float h )
-{
- float w = sqrt(r*r-h*h); // constant for a given shape
-
- float2 q = float2( length(p.xz), p.y );
-
- float s = max( (h-r)*q.x*q.x+w*w*(h+r-2.0*q.y), h*q.x-w*q.y );
-
- return (s<0.0) ? length(q)-r :
- (q.x<w) ? h - q.y :
- length(q-float2(w,h));
-}
-
-float distance_from_cut_hollow_sphere( float3 p, float r, float h, float t )
-{
- float2 q = float2( length(p.xz), p.y );
-
- float w = sqrt(r*r-h*h);
-
- return ((h*q.x<w*q.y) ? length(q-float2(w,h)) :
- abs(length(q)-r) ) - t;
-}
-
-float distance_from_box(float3 p, float3 b)
-{
- float3 q = abs(p) - b;
- return length(max(q,0.0)) + min(max(q.x,max(q.y,q.z)),0.0);
-}
-
-float distance_from_box_frame(float3 p, float3 b, float e)
-{
- p = abs(p)-b;
- float3 q = abs(p+e)-e;
-
- return min(min(
- length(max(float3(p.x,q.y,q.z),0.0))+min(max(p.x,max(q.y,q.z)),0.0),
- length(max(float3(q.x,p.y,q.z),0.0))+min(max(q.x,max(p.y,q.z)),0.0)),
- length(max(float3(q.x,q.y,p.z),0.0))+min(max(q.x,max(q.y,p.z)),0.0));
-}
-
-float distance_from_pyramid(float3 p, float h, bool invert)
-{
- float m2 = h*h + 0.25;
-
- // symmetry
- p.xz = abs(p.xz); // do p=abs(p) instead for double pyramid
- p.xz = (p.z>p.x) ? p.zx : p.xz;
- p.xz -= 0.5;
-
- // project into face plane (2D)
- float3 q = float3( p.z, h*p.y-0.5*p.x, h*p.x+0.5*p.y);
-
- float s = max(-q.x,0.0);
- float t = clamp( (q.y-0.5*q.x)/(m2+0.25), 0.0, 1.0 );
-
- float a = m2*(q.x+s)*(q.x+s) + q.y*q.y;
- float b = m2*(q.x+0.5*t)*(q.x+0.5*t) + (q.y-m2*t)*(q.y-m2*t);
-
- float d2 = max(-q.y,q.x*m2+q.y*0.5) < 0.0 ? 0.0 : min(a,b);
-
- // recover 3D and scale, and add sign
- return sqrt( (d2+q.z*q.z)/m2 ) * sign(max(q.z,-p.y));;
-}
-
-float distance_from_plane(float3 p, float3 n, float h)
-{
- // n must be normalized
- return dot(p,n) + h;
-}
-
-float distance_from_torus( float3 p, float2 t )
-{
- float2 q = float2(length(p.xz)-t.x,p.y);
- return length(q)-t.y;
-}
-
-float distance_from_capped_torus( float3 p, float2 sc, float ra, float rb)
-{
- p.x = abs(p.x);
- float k = (sc.y*p.x>sc.x*p.y) ? dot(p.xy,sc) : length(p.xy);
- return sqrt( dot(p,p) + ra*ra - 2.0*ra*k ) - rb;
-}
-
-float3 op_rep(in float3 p, in float3 c)
-{
- return glsl_mod(p+0.5*c,c)-0.5*c;
-}
-
-float smoothstep_cubic(float x)
-{
- return x * x * (3.0 - 2.0 * x);
-}
-
-float smoothstep_quintic(float x)
-{
- return x*x*x*(x*(x*6.0-15.0)+10.0);
-}
-
-float distance_from_line_segment( float3 p, float3 a, float3 b, float r )
-{
- float3 pa = p - a, ba = b - a;
- float h = clamp( dot(pa,ba)/dot(ba,ba), 0.0, 1.0 );
- return length( pa - ba*h ) - r;
-}
-
-// End licensed section
-
-#endif // __IQ_SDF_INC__
-
diff --git a/Shaders/math.cginc b/Shaders/math.cginc
deleted file mode 100644
index 061d4c0..0000000
--- a/Shaders/math.cginc
+++ /dev/null
@@ -1,88 +0,0 @@
-#ifndef __MATH_INC
-#define __MATH_INC
-
-#include "pema99.cginc"
-
-#define PI 3.14159265
-
-// Differentiable approximation of the standard `max` function.
-float dmax(float a, float b, float k)
-{
- return log2(exp2(k * a) + exp2(k * b)) / k;
-}
-
-// Differentiable approximation of the standard `min` function.
-float dmin(float a, float b, float k)
-{
- return -1.0 * dmax(-1.0 * a, -1.0 * b, k);
-}
-
-// Generate a random number on [0, 1].
-float rand2(float3 p)
-{
- return glsl_mod(sin(dot(p, float2(561.0, 885.0))) * 776.2, 1.0);
-}
-
-// Generate a random number on [0, 1].
-float rand3(float3 p)
-{
- return glsl_mod(sin(dot(p, float3(897.0, 367.0, 197.0))) * 1073.6, 1.0);
-}
-
-// 3 dimensional value noise. `p` is assumed to be a point inside a unit cube.
-// Theory: https://en.wikipedia.org/wiki/Value_noise
-float vnoise3d(float3 p)
-{
- float3 pu = floor(p);
- float3 pv = glsl_mod(p, 1.0);
-
- // Assign random numbers to the corner of a cube.
- float n000 = rand3(pu + float3(0,0,0));
- float n001 = rand3(pu + float3(0,0,1));
- float n010 = rand3(pu + float3(0,1,0));
- float n011 = rand3(pu + float3(0,1,1));
- float n100 = rand3(pu + float3(1,0,0));
- float n101 = rand3(pu + float3(1,0,1));
- float n110 = rand3(pu + float3(1,1,0));
- float n111 = rand3(pu + float3(1,1,1));
-
- float n00 = lerp(n000, n001, pv.z);
- float n01 = lerp(n010, n011, pv.z);
- float n10 = lerp(n100, n101, pv.z);
- float n11 = lerp(n110, n111, pv.z);
-
- float n0 = lerp(n00, n01, pv.y);
- float n1 = lerp(n10, n11, pv.y);
-
- float n = lerp(n0, n1, pv.x);
-
- return n;
-}
-
-float fbm(float3 p, const int n_octaves, float w)
-{
- float g = exp2(-w);
- float a = 1.0;
- float p_scale = 1.0;
-
- float res = 0.0;
- for (int i = 0; i < n_octaves; i++) {
- res += a * vnoise3d(p * p_scale);
-
- p_scale /= w;
- a *= g;
- }
-
- // On average, vnoise3d returns 0.5.
- // Sum of any geometric series is, for growth parameter r and constant a,
- // a / (1 - r).
- // We want to map onto [0, 1], so divide by this expected sum.
- // Use a = 1, to account for the worst-case possibility that every call to
- // vnoise3d() returns 1.
- res /= (1 / (1 - g));
-
- return res;
-}
-
-#endif // __MATH_INC
-
diff --git a/Shaders/pbr.cginc b/Shaders/pbr.cginc
deleted file mode 100644
index 9b46f8e..0000000
--- a/Shaders/pbr.cginc
+++ /dev/null
@@ -1,91 +0,0 @@
-#ifndef __PBR_INC__
-#define __PBR_INC__
-
-#include "AutoLight.cginc"
-#include "eyes_data.cginc"
-#include "UnityPBSLighting.cginc"
-
-static float BG_Effect_Bias = 0.0;
-static float BG_Effect_Weight = 1.0;
-
-UnityIndirect GetIndirect(v2f i, float3 view_dir, float smoothness) {
- UnityIndirect indirect;
- indirect.diffuse = 0;
- indirect.specular = 0;
-
- #if defined(VERTEXLIGHT_ON)
- indirect.diffuse = i.vertexLightColor;
- #endif
-
- #if defined(FORWARD_BASE_PASS)
- indirect.diffuse += max(0, ShadeSH9(float4(i.normal, 1)));
- float3 reflect_dir = reflect(-view_dir, i.normal);
- // There's a nonlinear relationship between mipmap level and roughness.
- float roughness = 1 - smoothness;
- roughness *= 1.7 - .7 * roughness;
- float3 env_sample;
- env_sample = UNITY_SAMPLE_TEXCUBE_LOD(
- unity_SpecCube0,
- reflect_dir,
- roughness * UNITY_SPECCUBE_LOD_STEPS);
- indirect.specular = env_sample;
- #endif
-
- return indirect;
-}
-
-UnityLight GetLight(v2f i)
-{
- UNITY_LIGHT_ATTENUATION(attenuation, 0, i.worldPos);
- float3 light_color = _LightColor0.rgb * attenuation;
-
- UnityLight light;
- light.color = light_color;
- #if defined(POINT) || defined(POINT_COOKIE) || defined(SPOT)
- light.dir = normalize(_WorldSpaceLightPos0.xyz - i.worldPos);
- #else
- light.dir = _WorldSpaceLightPos0.xyz;
- #endif
- light.ndotl = DotClamped(i.normal, light.dir);
-
- return light;
-}
-
-void initNormal(inout v2f i)
-{
- i.normal = normalize(i.normal);
-}
-
-float4 light(inout v2f i,
- float4 albedo,
- float metallic,
- float smoothness)
-{
- initNormal(i);
-
- float3 specular_tint;
- float one_minus_reflectivity;
- albedo.rgb = DiffuseAndSpecularFromMetallic(
- albedo, metallic, specular_tint, one_minus_reflectivity);
-
- float3 view_dir = normalize(_WorldSpaceCameraPos - i.worldPos);
- float3 pbr = UNITY_BRDF_PBS(albedo,
- specular_tint,
- one_minus_reflectivity,
- smoothness,
- i.normal,
- view_dir,
- GetLight(i),
- GetIndirect(i, view_dir, smoothness)).rgb;
-
- return float4(saturate(pbr), albedo.a);
-}
-
-float getWorldSpaceDepth(in float3 world_pos)
-{
- float4 clip_pos = mul(UNITY_MATRIX_VP, float4(world_pos, 1.0));
- return clip_pos.z / clip_pos.w;
-}
-
-#endif // __PBR_INC__
-
diff --git a/Shaders/pema99.cginc b/Shaders/pema99.cginc
deleted file mode 100644
index c895a48..0000000
--- a/Shaders/pema99.cginc
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
-MIT License
-
-Copyright (c) 2022 Pema Malling
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
-*/
-
-#ifndef __PEMA99_INC__
-#define __PEMA99_INC__
-
-#define glsl_mod(x,y) (((x)-(y)*floor((x)/(y))))
-
-#endif // __PEMA99_INC__
-
diff --git a/Shaders/poi.cginc b/Shaders/poi.cginc
deleted file mode 100644
index 87382bb..0000000
--- a/Shaders/poi.cginc
+++ /dev/null
@@ -1,60 +0,0 @@
-#ifndef __POI_INC__
-#define __POI_INC__
-
-/*
-MIT License
-
-Copyright (c) 2018 King Arthur
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
-*/
-
-static const float Epsilon = 1e-10;
-float3 RGBtoHCV(in float3 RGB)
-{
- // Based on work by Sam Hocevar and Emil Persson
- float4 P = (RGB.g < RGB.b) ? float4(RGB.bg, -1.0, 2.0 / 3.0) : float4(RGB.gb, 0.0, -1.0 / 3.0);
- float4 Q = (RGB.r < P.x) ? float4(P.xyw, RGB.r) : float4(RGB.r, P.yzx);
- float C = Q.x - min(Q.w, Q.y);
- float H = abs((Q.w - Q.y) / (6 * C + Epsilon) + Q.z);
- return float3(H, C, Q.x);
-}
-
-float3 RGBtoHSV(in float3 RGB)
-{
- float3 HCV = RGBtoHCV(RGB);
- float S = HCV.y / (HCV.z + Epsilon);
- return float3(HCV.x, S, HCV.z);
-}
-
-float3 HUEtoRGB(in float H)
-{
- float R = abs(H * 6 - 3) - 1;
- float G = 2 - abs(H * 6 - 2);
- float B = 2 - abs(H * 6 - 4);
- return saturate(float3(R, G, B));
-}
-
-float3 HSVtoRGB(in float3 HSV)
-{
- float3 RGB = HUEtoRGB(HSV.x);
- return ((RGB - 1) * HSV.y + 1) * HSV.z;
-}
-
-#endif // __POI_INC__
diff --git a/Shaders/ray_march.cginc b/Shaders/ray_march.cginc
deleted file mode 100644
index bdedc8b..0000000
--- a/Shaders/ray_march.cginc
+++ /dev/null
@@ -1,361 +0,0 @@
-#ifndef __RAY_MARCH_INC__
-#define __RAY_MARCH_INC__
-
-#include "eyes_data.cginc"
-#include "iq_sdf.cginc"
-#include "math.cginc"
-#include "Motion.cginc"
-#include "pbr.cginc"
-#include "pema99.cginc"
-#include "poi.cginc"
-#include "stt_text.cginc"
-
-float _Emerge;
-float _Ellipsis;
-
-float4 _Text_Color;
-float _Text_Metallic;
-float _Text_Smoothness;
-float _Text_Emissive;
-
-float4 _BG_Color;
-float _BG_Metallic;
-float _BG_Smoothness;
-float _BG_Emissive;
-
-float4 _Frame_Color;
-float _Frame_Metallic;
-float _Frame_Smoothness;
-float _Frame_Emissive;
-
-#define MY_COORD_SCALE 100
-#define MY_COORD_SCALE_INV 1.0 / MY_COORD_SCALE
-#define OBJ_SPACE_TO_MINE \
- float4x4( \
- MY_COORD_SCALE, 0, 0, 0, \
- 0, MY_COORD_SCALE, 0, 0, \
- 0, 0, MY_COORD_SCALE, 0, \
- 0, 0, 0, MY_COORD_SCALE \
- )
-#define WORLD_SPACE_TO_MINE \
- mul(unity_WorldToObject, OBJ_SPACE_TO_MINE)
-#define MY_SPACE_TO_OBJ \
- float4x4( \
- MY_COORD_SCALE_INV, 0, 0, 0, \
- 0, MY_COORD_SCALE_INV, 0, 0, \
- 0, 0, MY_COORD_SCALE_INV, 0, \
- 0, 0, 0, MY_COORD_SCALE_INV \
- )
-#define MY_SPACE_TO_WORLD \
- mul(MY_SPACE_TO_OBJ, unity_ObjectToWorld)
-
-#define MINIMUM_HIT_DISTANCE .00002 * MY_COORD_SCALE
-#define MAXIMUM_TRACE_DISTANCE 2 * MY_COORD_SCALE
-
-// Allows us to divide [0,1] into `n_phases` equal-sized slices and remap `r`
-// onto the `nth_phase`.
-//
-// A few examples:
-// get_phase_fraction(0.9, 0, 2) = 1.0
-// get_phase_fraction(0.9, 1, 2) = 0.8
-// get_phase_fraction(0.5, 0, 3) = 1.0
-// get_phase_fraction(0.5, 1, 3) = 0.5
-// get_phase_fraction(0.5, 2, 3) = 0.0
-//
-// So if `r` is past the slice we're looking at, it returns 1; if it's before
-// the slice we're looking at, it returns 0; if it's on the slice we're looking
-// at, it gets remapped onto [0,1].
-float get_phase_fraction(float r, float nth_phase, float n_phases) {
- float stride = 1.0 / n_phases;
-
- // Prevent boundary condition where saturated values get set to 0 by the
- // glsl_mod below.
- r = min(.9999 * (nth_phase + 1) * stride, r);
-
- float r0 = clamp(r, nth_phase * stride, (nth_phase + 1) * stride);
- r0 = glsl_mod(r0, stride);
-
- return r0 / stride;
-}
-
-// d = base edge length
-// h = height
-// e = frame thickness
-// Pyramid base is on xy plane.
-float distance_from_rect_pyramid_frame(float3 p, float dx, float dy, float h, float e, float skew)
-{
- float3 p0 = float3(dx/2, dy/2, 0);
- float3 p1 = float3(dx/2, -dy/2, 0);
- float3 p3 = float3(-dx/2, dy/2, 0);
- float3 p4 = float3(skew, 0, h);
-
- float3 pp = p;
- // Symmetry
- pp.x = abs(pp.x);
- float d01 = distance_from_line_segment(pp, p0, p1, e);
-
- pp = p;
- pp.y = abs(pp.y);
- float d03 = distance_from_line_segment(pp, p0, p3, e);
- float d04 = distance_from_line_segment(pp, p0, p4, e);
- float d14 = distance_from_line_segment(pp, p3, p4, e);
-
- float dist = 1000;
- dist = min(dist, d01);
- dist = min(dist, d04);
- dist = min(dist, d03);
- dist = min(dist, d14);
-
- return dist;
-}
-
-#define OBJ_ID_NONE 0
-#define OBJ_ID_FRAME 1
-#define OBJ_ID_BG 2
-
-float stt_map(float3 p, out int obj_id, out float2 text_uv)
-{
- obj_id = OBJ_ID_NONE;
-
- float p0r = get_phase_fraction(_Emerge, 0, 4);
- float p1r = get_phase_fraction(_Emerge, 1, 4);
- float p2r = get_phase_fraction(_Emerge, 2, 4);
- float p3r = get_phase_fraction(_Emerge, 3, 4);
-
- float dist = 1000 * 1000 * 1000;
- float3 box_scale_g = float3(1, 1, .85) * MY_COORD_SCALE;
- float3 box_center_g = float3(.020, 0, .0122) * MY_COORD_SCALE;
- {
- float3 pp = p;
- pp -= box_center_g;
-
- float box_thck = .0002 * MY_COORD_SCALE;
-
- float3 box_sz = float3(6, .5, 3) * .003 * box_scale_g;
-
- // Use this to make the box grow out of the bottom left corner instead of the
- // middle.
- float3 emerge_offset = 0;
- emerge_offset.x = lerp(box_sz.x, box_thck, p1r);
- emerge_offset.z = lerp(box_sz.z, box_thck, p2r);
- pp += emerge_offset;
-
- box_sz.y = lerp(box_thck, box_sz.y, p0r) * p0r;
- box_sz.x = lerp(box_thck, box_sz.x, p1r) * p0r;
- box_sz.z = lerp(box_thck, box_sz.z, p2r) * p0r;
-
- float d = distance_from_box_frame(pp, box_sz, box_thck);
-
- obj_id = lerp(obj_id, OBJ_ID_FRAME, d < dist);
- dist = min(dist, d);
- }
- {
- float3 pp = p;
- pp -= box_center_g;
- //pp -= float3(-0.00018, .0013, -.0002) * MY_COORD_SCALE;
- pp -= float3(-0.00018, 0, -.0002) * MY_COORD_SCALE;
-
- float3 box_scale = float3(10, 0.1, 4.9) * .00175 * box_scale_g;
- float3 box_pad = float3(.001, 0, .001) * MY_COORD_SCALE;
- box_scale -= box_pad;
-
- // Use this to make the board grow out of the left edge instead of from the
- // center.
- float3 emerge_offset = 0;
- emerge_offset.x = lerp(box_scale.x, 0, p3r);
- pp += emerge_offset;
-
- box_scale.x = lerp(0, box_scale.x, p3r);
- box_scale.y *= ceil(p3r);
- box_scale.z *= ceil(p3r);
-
- // Only use calculation when in phase 3.
- float d = lerp(1000, distance_from_box(pp, box_scale), ceil(p3r));
-
- text_uv = (clamp(pp.xz, -1 * box_scale.xz, box_scale.xz) / box_scale.xz);
- text_uv = (text_uv + 1) / 2;
-
- bool in_mirror = !((unity_CameraProjection[2][0] == 0.0) * (unity_CameraProjection[2][1] == 0.0));
- text_uv = lerp(text_uv, float2(1.0 - text_uv.x, text_uv.y), in_mirror);
-
- obj_id = lerp(obj_id, OBJ_ID_BG, d < dist);
- dist = min(dist, d);
- }
- {
- float3 pp = p;
-
- pp -= box_center_g - float3(6, 0, 3) * .003 * box_scale_g;
-
- float scale = .0025 + .0002;
- scale *= MY_COORD_SCALE;
- pp.x -= scale/2;
-
- float edgex = 1 * scale;
- float edgey = 1 * scale;
- float height = -1.3 * scale;
- float r = .06 * scale;
- float skew = -.75 * scale;
-
- pp.z += lerp(0, .0008 * MY_COORD_SCALE, p0r) * p0r;
- r = lerp(0, r, p0r) * p0r;
- edgey = lerp(0, edgey, p0r) * p0r;
-
- pp.x += lerp(edgex/2, 0, p1r);
- edgex = lerp(0, edgex, p1r);
-
- height = lerp(0, height, p2r);
- skew = lerp(0, skew, p3r);
-
- float d = distance_from_rect_pyramid_frame(pp, edgex, edgey, height, r, skew);
- obj_id = lerp(obj_id, OBJ_ID_FRAME, d < dist);
- dist = min(dist, d);
- }
- if (_Ellipsis > 0.1 && _Emerge > .99) {
- float3 pp = p;
-
- float3 xoff = float3(.003, 0, 0) * MY_COORD_SCALE;
-
- float r_small = .0005 * MY_COORD_SCALE;
- float r_big = .001 * MY_COORD_SCALE;
- float r_phase = glsl_mod(_Time[1], 1.0);
-
- float r0_p0r = get_phase_fraction(r_phase, 0, 8);
- float r0_p2r = get_phase_fraction(r_phase, 3, 8);
- float r1_p0r = get_phase_fraction(glsl_mod(r_phase + .25, 1.0), 0, 8);
- float r1_p2r = get_phase_fraction(glsl_mod(r_phase + .25, 1.0), 3, 8);
- float r2_p0r = get_phase_fraction(glsl_mod(r_phase + .50, 1.0), 0, 8);
- float r2_p2r = get_phase_fraction(glsl_mod(r_phase + .50, 1.0), 3, 8);
-
- float r0 = lerp(r_small, r_big, r0_p0r * (1 - r0_p2r));
- float r1 = lerp(r_small, r_big, r1_p0r * (1 - r1_p2r));
- float r2 = lerp(r_small, r_big, r2_p0r * (1 - r2_p2r));
-
- pp -= box_center_g;
-
- float d = distance_from_sphere(pp - xoff, 0, r0);
- d = min(d, distance_from_sphere(pp, 0, r1));
- d = min(d, distance_from_sphere(pp + xoff, 0, r2));
-
- obj_id = lerp(obj_id, OBJ_ID_FRAME, d < dist);
- dist = min(dist, d);
- }
-
- return dist;
-}
-
-// Calculate normals for ray-marched STT structure.
-float3 stt_calculate_normal(in float3 p)
-{
- const float3 small_step = float3(0.0001, 0.0, 0.0);
-
- // Calculate the 3D gradient. By definition, the gradient is orthogonal
- // (normal) to the surface.
- int obj_id;
- float2 text_uv;
- float gradient_x = stt_map(p + small_step.xyy, obj_id, text_uv) - stt_map(p - small_step.xyy, obj_id, text_uv);
- float gradient_y = stt_map(p + small_step.yxy, obj_id, text_uv) - stt_map(p - small_step.yxy, obj_id, text_uv);
- float gradient_z = stt_map(p + small_step.yyx, obj_id, text_uv) - stt_map(p - small_step.yyx, obj_id, text_uv);
-
- float3 normal = float3(gradient_x, gradient_y, gradient_z);
-
- return normalize(normal);
-}
-
-float get_letter_mask(float2 text_uv, bool mirror)
-{
- float epsilon = .005;
- if (text_uv.x > epsilon && text_uv.x < 1 - epsilon &&
- text_uv.y > epsilon && text_uv.y < 1 - epsilon) {
- text_uv.y = 1.0 - text_uv.y;
- // Make backside render left-to-right.
- text_uv.x = lerp(text_uv.x, 1.0 - text_uv.x, mirror);
- text_uv = AddMarginToUV(1.0 - text_uv, .01);
- return GetLetter(text_uv);
- }
- return 0;
-}
-
-float3 stt_march(float3 ro, float3 rd, out int obj_id, out float2 text_uv, int steps)
-{
- float total_distance_traveled = 0.0;
- float3 current_position = 0;
- float distance_to_closest = 1;
-
- #define STT_RAY_MARCH_STEPS 48
- for (int i = 0; (i < steps) *
- (distance_to_closest > MINIMUM_HIT_DISTANCE/4) *
- (total_distance_traveled < MAXIMUM_TRACE_DISTANCE); i++)
- {
- current_position = ro + total_distance_traveled * rd;
- distance_to_closest = stt_map(current_position, obj_id, text_uv);
- total_distance_traveled += distance_to_closest;
- }
- obj_id = lerp(OBJ_ID_NONE, obj_id, distance_to_closest < MINIMUM_HIT_DISTANCE);
-
- return current_position;
-}
-
-float4 stt_ray_march(float3 ro, float3 rd, inout v2f v2f_i, inout float depth)
-{
-
- // TODO(yum) remove
- float3 old_world_pos = v2f_i.worldPos;
- depth = getWorldSpaceDepth(old_world_pos);
-
- int obj_id;
- float2 text_uv;
- float3 current_position = stt_march(ro, rd, obj_id, text_uv, /*steps=*/48);
-
- float3 normal = stt_calculate_normal(current_position);
- v2f_i.normal = normalize(mul(MY_SPACE_TO_WORLD, normal));
- v2f_i.worldPos = mul(MY_SPACE_TO_WORLD, float4(current_position, 1.0)).xyz;
-
- float letter_mask = get_letter_mask(text_uv, ((normal.y + 1) / 2) > .01);
-
- float4 text = light(v2f_i, _Text_Color, _Text_Metallic, _Text_Smoothness);
- text += _Text_Color * _Text_Emissive;
- text = clamp(text, 0, 1);
-
- float4 bg = light(v2f_i, _BG_Color, _BG_Metallic, _BG_Smoothness);
- bg += _BG_Color * _BG_Emissive;
- bg = clamp(bg, 0, 1);
-
- float4 frame = light(v2f_i, _Frame_Color, _Frame_Metallic, _Frame_Smoothness);
- frame += _Frame_Color * _Frame_Emissive;
- frame = clamp(frame, 0, 1);
-
- frame += _Frame_Color * _Frame_Emissive;
- frame = clamp(frame, 0, 1);
-
- // TODO(yum) restore
- //depth = getWorldSpaceDepth(v2f_i.worldPos);
-
- [forcecase]
- switch (obj_id) {
- case OBJ_ID_NONE:
- depth = -1000;
- return 0;
- case OBJ_ID_FRAME:
- return frame;
- case OBJ_ID_BG:
- return lerp(bg, text, letter_mask);
- }
-}
-
-float4 stt_ray_march(inout v2f v2f_i, inout float depth)
-{
- float4 ray_march_color;
- {
- float3 camera_position = mul(WORLD_SPACE_TO_MINE, float4(_WorldSpaceCameraPos, 1.0)).xyz;
- float3 ro = camera_position;
- float3 rd = normalize(mul(WORLD_SPACE_TO_MINE, float4(v2f_i.worldPos, 1.0)).xyz - ro);
- float3 old_normal = v2f_i.normal;
- ray_march_color = stt_ray_march(ro, rd, v2f_i, depth);
- //v2f_i.normal = old_normal;
- }
-
- return ray_march_color;
-}
-
-#endif // __RAY_MARCH_INC__
-
diff --git a/Sounds/aiueo/a.wav b/Sounds/aiueo/a.wav
deleted file mode 100644
index 06aabc6..0000000
--- a/Sounds/aiueo/a.wav
+++ /dev/null
Binary files differ
diff --git a/Sounds/aiueo/a.wav.meta b/Sounds/aiueo/a.wav.meta
deleted file mode 100644
index 40c1ea3..0000000
--- a/Sounds/aiueo/a.wav.meta
+++ /dev/null
@@ -1,22 +0,0 @@
-fileFormatVersion: 2
-guid: 7d9f44f7fb873f949b851388b56330d0
-AudioImporter:
- externalObjects: {}
- serializedVersion: 6
- defaultSettings:
- loadType: 0
- sampleRateSetting: 0
- sampleRateOverride: 44100
- compressionFormat: 1
- quality: 1
- conversionMode: 0
- platformSettingOverrides: {}
- forceToMono: 0
- normalize: 1
- preloadAudioData: 1
- loadInBackground: 1
- ambisonic: 0
- 3D: 1
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Sounds/aiueo/e.wav b/Sounds/aiueo/e.wav
deleted file mode 100644
index 5bcebf5..0000000
--- a/Sounds/aiueo/e.wav
+++ /dev/null
Binary files differ
diff --git a/Sounds/aiueo/e.wav.meta b/Sounds/aiueo/e.wav.meta
deleted file mode 100644
index b0e06ae..0000000
--- a/Sounds/aiueo/e.wav.meta
+++ /dev/null
@@ -1,22 +0,0 @@
-fileFormatVersion: 2
-guid: f43790411c411124d9cf1ea2e72acf9b
-AudioImporter:
- externalObjects: {}
- serializedVersion: 6
- defaultSettings:
- loadType: 0
- sampleRateSetting: 0
- sampleRateOverride: 44100
- compressionFormat: 1
- quality: 1
- conversionMode: 0
- platformSettingOverrides: {}
- forceToMono: 0
- normalize: 1
- preloadAudioData: 1
- loadInBackground: 1
- ambisonic: 0
- 3D: 1
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Sounds/aiueo/i.wav b/Sounds/aiueo/i.wav
deleted file mode 100644
index f1d86c9..0000000
--- a/Sounds/aiueo/i.wav
+++ /dev/null
Binary files differ
diff --git a/Sounds/aiueo/i.wav.meta b/Sounds/aiueo/i.wav.meta
deleted file mode 100644
index 6a6f5d3..0000000
--- a/Sounds/aiueo/i.wav.meta
+++ /dev/null
@@ -1,22 +0,0 @@
-fileFormatVersion: 2
-guid: a945b645e3830ef41955ca3af6dba8d3
-AudioImporter:
- externalObjects: {}
- serializedVersion: 6
- defaultSettings:
- loadType: 0
- sampleRateSetting: 0
- sampleRateOverride: 44100
- compressionFormat: 1
- quality: 1
- conversionMode: 0
- platformSettingOverrides: {}
- forceToMono: 0
- normalize: 1
- preloadAudioData: 1
- loadInBackground: 1
- ambisonic: 0
- 3D: 1
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Sounds/aiueo/o.wav b/Sounds/aiueo/o.wav
deleted file mode 100644
index cbafbdb..0000000
--- a/Sounds/aiueo/o.wav
+++ /dev/null
Binary files differ
diff --git a/Sounds/aiueo/o.wav.meta b/Sounds/aiueo/o.wav.meta
deleted file mode 100644
index 49f59a3..0000000
--- a/Sounds/aiueo/o.wav.meta
+++ /dev/null
@@ -1,22 +0,0 @@
-fileFormatVersion: 2
-guid: 4803d8be07ade7a4bb93f231dd60980b
-AudioImporter:
- externalObjects: {}
- serializedVersion: 6
- defaultSettings:
- loadType: 0
- sampleRateSetting: 0
- sampleRateOverride: 44100
- compressionFormat: 1
- quality: 1
- conversionMode: 0
- platformSettingOverrides: {}
- forceToMono: 0
- normalize: 1
- preloadAudioData: 1
- loadInBackground: 1
- ambisonic: 0
- 3D: 1
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Sounds/aiueo/u.wav b/Sounds/aiueo/u.wav
deleted file mode 100644
index 9bb6dda..0000000
--- a/Sounds/aiueo/u.wav
+++ /dev/null
Binary files differ
diff --git a/Sounds/aiueo/u.wav.meta b/Sounds/aiueo/u.wav.meta
deleted file mode 100644
index 8b67768..0000000
--- a/Sounds/aiueo/u.wav.meta
+++ /dev/null
@@ -1,22 +0,0 @@
-fileFormatVersion: 2
-guid: 19c542485b32f114ba70c9092ccb658f
-AudioImporter:
- externalObjects: {}
- serializedVersion: 6
- defaultSettings:
- loadType: 0
- sampleRateSetting: 0
- sampleRateOverride: 44100
- compressionFormat: 1
- quality: 1
- conversionMode: 0
- platformSettingOverrides: {}
- forceToMono: 0
- normalize: 1
- preloadAudioData: 1
- loadInBackground: 1
- ambisonic: 0
- 3D: 1
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Sounds/speech_noise.vcv b/Sounds/speech_noise.vcv
deleted file mode 100644
index a78f261..0000000
--- a/Sounds/speech_noise.vcv
+++ /dev/null
Binary files differ
diff --git a/UnityAssets/Materials.meta b/UnityAssets/Materials.meta
deleted file mode 100644
index 7fd42ea..0000000
--- a/UnityAssets/Materials.meta
+++ /dev/null
@@ -1,8 +0,0 @@
-fileFormatVersion: 2
-guid: b2259d2035713594da6056f047ddfc7c
-folderAsset: yes
-DefaultImporter:
- externalObjects: {}
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/UnityAssets/Materials/TaSTT_Text.mat b/UnityAssets/Materials/TaSTT_Text.mat
deleted file mode 100644
index be8ee90..0000000
--- a/UnityAssets/Materials/TaSTT_Text.mat
+++ /dev/null
@@ -1,52 +0,0 @@
-%YAML 1.1
-%TAG !u! tag:unity3d.com,2011:
---- !u!21 &2100000
-Material:
- serializedVersion: 6
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_Name: TaSTT_Text
- m_Shader: {fileID: 4800000, guid: feba055fa9e7f9543aaae032a30ec878, type: 3}
- m_ShaderKeywords:
- m_LightmapFlags: 4
- m_EnableInstancingVariants: 0
- m_DoubleSidedGI: 0
- m_CustomRenderQueue: -1
- stringTagMap: {}
- disabledShaderPasses: []
- m_SavedProperties:
- serializedVersion: 3
- m_TexEnvs:
- - _Font_0x0000_0x1FFF:
- m_Texture: {fileID: 2800000, guid: 0417deb9fee97e24e9099569bed34c6c, type: 3}
- m_Scale: {x: 1, y: 1}
- m_Offset: {x: 0, y: 0}
- - _Font_0x2000_0x3FFF:
- m_Texture: {fileID: 2800000, guid: 45d1d35ef90dd5742bab73718b1fa64e, type: 3}
- m_Scale: {x: 1, y: 1}
- m_Offset: {x: 0, y: 0}
- - _Font_0x4000_0x5FFF:
- m_Texture: {fileID: 2800000, guid: fbb9dcb303ae5fc46a1b4f6b82b55a16, type: 3}
- m_Scale: {x: 1, y: 1}
- m_Offset: {x: 0, y: 0}
- - _Font_0x6000_0x7FFF:
- m_Texture: {fileID: 2800000, guid: cf2fc1dc6a21e9d42bf08d8148dba0b7, type: 3}
- m_Scale: {x: 1, y: 1}
- m_Offset: {x: 0, y: 0}
- - _Font_0x8000_0x9FFF:
- m_Texture: {fileID: 2800000, guid: d06c79dd35cbaa94c81b2eb9240a7c57, type: 3}
- m_Scale: {x: 1, y: 1}
- m_Offset: {x: 0, y: 0}
- - _Font_0xA000_0xBFFF:
- m_Texture: {fileID: 2800000, guid: dea31226b42fe7e4d9470806d43afcf8, type: 3}
- m_Scale: {x: 1, y: 1}
- m_Offset: {x: 0, y: 0}
- - _Font_0xC000_0xDFFF:
- m_Texture: {fileID: 2800000, guid: e8c2974f31efa7a4e9e7588c90561a85, type: 3}
- m_Scale: {x: 1, y: 1}
- m_Offset: {x: 0, y: 0}
- m_Floats: []
- m_Colors: []
-
diff --git a/UnityAssets/Materials/TaSTT_Text.mat.meta b/UnityAssets/Materials/TaSTT_Text.mat.meta
deleted file mode 100644
index b0f1bf2..0000000
--- a/UnityAssets/Materials/TaSTT_Text.mat.meta
+++ /dev/null
@@ -1,8 +0,0 @@
-fileFormatVersion: 2
-guid: 6e092d0b9710947419066f7ce27d9b23
-NativeFormatImporter:
- externalObjects: {}
- mainObjectFileID: 2100000
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/UnityAssets/TaSTT.fbx b/UnityAssets/TaSTT.fbx
deleted file mode 100644
index cd7a4ad..0000000
--- a/UnityAssets/TaSTT.fbx
+++ /dev/null
Binary files differ
diff --git a/UnityAssets/TaSTT.fbx.meta b/UnityAssets/TaSTT.fbx.meta
deleted file mode 100644
index 9112f3c..0000000
--- a/UnityAssets/TaSTT.fbx.meta
+++ /dev/null
@@ -1,107 +0,0 @@
-fileFormatVersion: 2
-guid: 1c2aa3d76900de6409aaeaa1b238ae8a
-ModelImporter:
- serializedVersion: 19301
- internalIDToNameTable: []
- externalObjects:
- - first:
- type: UnityEngine:Material
- assembly: UnityEngine.CoreModule
- name: TaSTT_Backplate
- second: {fileID: 2100000, guid: 7adae6e6e89555e46816b6d44117a57b, type: 2}
- - first:
- type: UnityEngine:Material
- assembly: UnityEngine.CoreModule
- name: TaSTT_Text
- second: {fileID: 2100000, guid: 6e092d0b9710947419066f7ce27d9b23, type: 2}
- materials:
- materialImportMode: 1
- materialName: 0
- materialSearch: 1
- materialLocation: 1
- animations:
- legacyGenerateAnimations: 4
- bakeSimulation: 0
- resampleCurves: 1
- optimizeGameObjects: 0
- motionNodeName:
- rigImportErrors:
- rigImportWarnings:
- animationImportErrors:
- animationImportWarnings:
- animationRetargetingWarnings:
- animationDoRetargetingWarnings: 0
- importAnimatedCustomProperties: 0
- importConstraints: 0
- animationCompression: 1
- animationRotationError: 0.5
- animationPositionError: 0.5
- animationScaleError: 0.5
- animationWrapMode: 0
- extraExposedTransformPaths: []
- extraUserProperties: []
- clipAnimations: []
- isReadable: 0
- meshes:
- lODScreenPercentages: []
- globalScale: 1
- meshCompression: 0
- addColliders: 0
- useSRGBMaterialColor: 1
- sortHierarchyByName: 1
- importVisibility: 1
- importBlendShapes: 1
- importCameras: 1
- importLights: 1
- fileIdsGeneration: 2
- swapUVChannels: 0
- generateSecondaryUV: 0
- useFileUnits: 1
- keepQuads: 0
- weldVertices: 1
- preserveHierarchy: 0
- skinWeightsMode: 0
- maxBonesPerVertex: 4
- minBoneWeight: 0.001
- meshOptimizationFlags: -1
- indexFormat: 0
- secondaryUVAngleDistortion: 8
- secondaryUVAreaDistortion: 15.000001
- secondaryUVHardAngle: 88
- secondaryUVPackMargin: 4
- useFileScale: 1
- tangentSpace:
- normalSmoothAngle: 60
- normalImportMode: 0
- tangentImportMode: 3
- normalCalculationMode: 4
- legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0
- blendShapeNormalImportMode: 1
- normalSmoothingSource: 0
- referencedClips: []
- importAnimation: 1
- humanDescription:
- serializedVersion: 3
- human: []
- skeleton: []
- armTwist: 0.5
- foreArmTwist: 0.5
- upperLegTwist: 0.5
- legTwist: 0.5
- armStretch: 0.05
- legStretch: 0.05
- feetSpacing: 0
- globalScale: 1
- rootMotionBoneName:
- hasTranslationDoF: 0
- hasExtraRoot: 0
- skeletonHasParents: 1
- lastHumanDescriptionAvatarSource: {instanceID: 0}
- autoGenerateAvatarMappingIfUnspecified: 1
- animationType: 2
- humanoidOversampling: 1
- avatarSetup: 0
- additionalBone: 0
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/UnityAssets/TaSTT_Menu.asset b/UnityAssets/TaSTT_Menu.asset
deleted file mode 100644
index ade2f1f..0000000
--- a/UnityAssets/TaSTT_Menu.asset
+++ /dev/null
@@ -1,56 +0,0 @@
-%YAML 1.1
-%TAG !u! tag:unity3d.com,2011:
---- !u!114 &11400000
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 0}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: -340790334, guid: 67cc4cb7839cd3741b63733d5adf0442, type: 3}
- m_Name: TaSTT_Menu
- m_EditorClassIdentifier:
- controls:
- - name: Show
- icon: {fileID: 0}
- type: 102
- parameter:
- name: TaSTT_Toggle
- value: 1
- style: 0
- subMenu: {fileID: 0}
- subParameters: []
- labels: []
- - name: Lock World
- icon: {fileID: 0}
- type: 102
- parameter:
- name: TaSTT_Lock_World
- value: 1
- style: 0
- subMenu: {fileID: 0}
- subParameters: []
- labels: []
- - name: Scale
- icon: {fileID: 0}
- type: 203
- parameter:
- name:
- value: 1
- style: 0
- subMenu: {fileID: 0}
- subParameters:
- - name: TaSTT_Scale
- labels: []
- - name: Enable phonemes
- icon: {fileID: 0}
- type: 102
- parameter:
- name: TaSTT_Enable_Phoneme
- value: 1
- style: 0
- subMenu: {fileID: 0}
- subParameters: []
- labels: []
diff --git a/UnityAssets/TaSTT_Menu.asset.meta b/UnityAssets/TaSTT_Menu.asset.meta
deleted file mode 100644
index 465d0d1..0000000
--- a/UnityAssets/TaSTT_Menu.asset.meta
+++ /dev/null
@@ -1,8 +0,0 @@
-fileFormatVersion: 2
-guid: 111d8d5f909f534429bfe46268723200
-NativeFormatImporter:
- externalObjects: {}
- mainObjectFileID: 0
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/UnityAssets/World Constraint.prefab b/UnityAssets/World Constraint.prefab
deleted file mode 100644
index b492c7c..0000000
--- a/UnityAssets/World Constraint.prefab
+++ /dev/null
@@ -1,869 +0,0 @@
-%YAML 1.1
-%TAG !u! tag:unity3d.com,2011:
---- !u!1 &1285908867758314142
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 1282676635465832690}
- - component: {fileID: 7830153666400993347}
- m_Layer: 0
- m_Name: World Constraint
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!4 &1282676635465832690
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1285908867758314142}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 0, y: 0, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children:
- - {fileID: 1284274506076556042}
- - {fileID: 3825042190120287176}
- m_Father: {fileID: 0}
- m_RootOrder: 0
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!1773428102 &7830153666400993347
-ParentConstraint:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1285908867758314142}
- m_Enabled: 1
- m_Weight: 1
- m_TranslationAtRest: {x: 0, y: 0, z: 0}
- m_RotationAtRest: {x: 0, y: 0, z: 0}
- m_TranslationOffsets:
- - {x: 0, y: 0, z: 0}
- m_RotationOffsets:
- - {x: 0, y: 0, z: 0}
- m_AffectTranslationX: 1
- m_AffectTranslationY: 1
- m_AffectTranslationZ: 1
- m_AffectRotationX: 1
- m_AffectRotationY: 1
- m_AffectRotationZ: 1
- m_IsContraintActive: 1
- m_IsLocked: 1
- m_Sources:
- - sourceTransform: {fileID: 1720321125886419532, guid: e86e0e4bebce5834ab8ed64ac5f3b3cc,
- type: 3}
- weight: 1
---- !u!1 &1286573024465152014
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 1284274506076556042}
- - component: {fileID: 1286573024465152013}
- m_Layer: 0
- m_Name: Container
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!4 &1284274506076556042
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1286573024465152014}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 0, y: 0, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children:
- - {fileID: 5693225650572274972}
- m_Father: {fileID: 1282676635465832690}
- m_RootOrder: 0
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!1773428102 &1286573024465152013
-ParentConstraint:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1286573024465152014}
- m_Enabled: 1
- m_Weight: 1
- m_TranslationAtRest: {x: 0, y: 0, z: 0}
- m_RotationAtRest: {x: 0, y: 0, z: 0}
- m_TranslationOffsets:
- - {x: 0, y: 0, z: 0}
- m_RotationOffsets:
- - {x: 0, y: 0, z: 0}
- m_AffectTranslationX: 1
- m_AffectTranslationY: 1
- m_AffectTranslationZ: 1
- m_AffectRotationX: 1
- m_AffectRotationY: 1
- m_AffectRotationZ: 1
- m_IsContraintActive: 1
- m_IsLocked: 1
- m_Sources:
- - sourceTransform: {fileID: 3825042190120287176}
- weight: 1
---- !u!1 &3825042190120287179
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 3825042190120287176}
- m_Layer: 0
- m_Name: Reset Target
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!4 &3825042190120287176
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 3825042190120287179}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 0, y: 0, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 1282676635465832690}
- m_RootOrder: 1
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!1 &4920664437401122726
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 5693225650572274972}
- - component: {fileID: 8695814288831390393}
- - component: {fileID: 6866100797661206131}
- m_Layer: 0
- m_Name: TaSTT
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!4 &5693225650572274972
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 4920664437401122726}
- m_LocalRotation: {x: -0.7071068, y: -0, z: -0, w: 0.7071067}
- m_LocalPosition: {x: 0, y: 0, z: 0}
- m_LocalScale: {x: 5, y: 5, z: 5}
- m_Children:
- - {fileID: 7593088928288826146}
- - {fileID: 7593088927784018453}
- - {fileID: 7593088926839592397}
- - {fileID: 7593088928030976518}
- - {fileID: 7593088928060604700}
- m_Father: {fileID: 1284274506076556042}
- m_RootOrder: 0
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!33 &8695814288831390393
-MeshFilter:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 4920664437401122726}
- m_Mesh: {fileID: -5495902117074765545, guid: 1c2aa3d76900de6409aaeaa1b238ae8a, type: 3}
---- !u!23 &6866100797661206131
-MeshRenderer:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 4920664437401122726}
- m_Enabled: 1
- m_CastShadows: 1
- m_ReceiveShadows: 1
- m_DynamicOccludee: 1
- m_MotionVectors: 1
- m_LightProbeUsage: 1
- m_ReflectionProbeUsage: 1
- m_RayTracingMode: 2
- m_RenderingLayerMask: 1
- m_RendererPriority: 0
- m_Materials:
- - {fileID: 2100000, guid: 6e092d0b9710947419066f7ce27d9b23, type: 2}
- m_StaticBatchInfo:
- firstSubMesh: 0
- subMeshCount: 0
- m_StaticBatchRoot: {fileID: 0}
- m_ProbeAnchor: {fileID: 0}
- m_LightProbeVolumeOverride: {fileID: 0}
- m_ScaleInLightmap: 1
- m_ReceiveGI: 1
- m_PreserveUVs: 0
- m_IgnoreNormalsForChartDetection: 0
- m_ImportantGI: 0
- m_StitchLightmapSeams: 1
- m_SelectedEditorRenderState: 3
- m_MinimumChartSize: 4
- m_AutoUVMaxDistance: 0.5
- m_AutoUVMaxAngle: 89
- m_LightmapParameters: {fileID: 0}
- m_SortingLayerID: 0
- m_SortingLayer: 0
- m_SortingOrder: 0
---- !u!1 &7593088926839592396
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 7593088926839592397}
- - component: {fileID: 7593088926839592402}
- m_Layer: 0
- m_Name: Audio 3
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 0
---- !u!4 &7593088926839592397
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 7593088926839592396}
- m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
- m_LocalPosition: {x: 0, y: 0, z: 0}
- m_LocalScale: {x: 0.2, y: 0.19999999, z: 0.20000003}
- m_Children: []
- m_Father: {fileID: 5693225650572274972}
- m_RootOrder: 2
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!82 &7593088926839592402
-AudioSource:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 7593088926839592396}
- m_Enabled: 1
- serializedVersion: 4
- OutputAudioMixerGroup: {fileID: 0}
- m_audioClip: {fileID: 8300000, guid: a945b645e3830ef41955ca3af6dba8d3, type: 3}
- m_PlayOnAwake: 1
- m_Volume: 1
- m_Pitch: 1
- Loop: 0
- Mute: 0
- Spatialize: 0
- SpatializePostEffects: 0
- Priority: 128
- DopplerLevel: 1
- MinDistance: 0.1
- MaxDistance: 1.5
- Pan2D: 0
- rolloffMode: 1
- BypassEffects: 0
- BypassListenerEffects: 0
- BypassReverbZones: 0
- rolloffCustomCurve:
- serializedVersion: 2
- m_Curve:
- - serializedVersion: 3
- time: 0
- value: 1
- inSlope: 0
- outSlope: 0
- tangentMode: 0
- weightedMode: 0
- inWeight: 0.33333334
- outWeight: 0.33333334
- - serializedVersion: 3
- time: 1
- value: 0
- inSlope: 0
- outSlope: 0
- tangentMode: 0
- weightedMode: 0
- inWeight: 0.33333334
- outWeight: 0.33333334
- m_PreInfinity: 2
- m_PostInfinity: 2
- m_RotationOrder: 4
- panLevelCustomCurve:
- serializedVersion: 2
- m_Curve:
- - serializedVersion: 3
- time: 0
- value: 1
- inSlope: 0
- outSlope: 0
- tangentMode: 0
- weightedMode: 0
- inWeight: 0.33333334
- outWeight: 0.33333334
- m_PreInfinity: 2
- m_PostInfinity: 2
- m_RotationOrder: 4
- spreadCustomCurve:
- serializedVersion: 2
- m_Curve:
- - serializedVersion: 3
- time: 0
- value: 0
- inSlope: 0
- outSlope: 0
- tangentMode: 0
- weightedMode: 0
- inWeight: 0.33333334
- outWeight: 0.33333334
- m_PreInfinity: 2
- m_PostInfinity: 2
- m_RotationOrder: 4
- reverbZoneMixCustomCurve:
- serializedVersion: 2
- m_Curve:
- - serializedVersion: 3
- time: 0
- value: 1
- inSlope: 0
- outSlope: 0
- tangentMode: 0
- weightedMode: 0
- inWeight: 0.33333334
- outWeight: 0.33333334
- m_PreInfinity: 2
- m_PostInfinity: 2
- m_RotationOrder: 4
---- !u!1 &7593088927784018452
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 7593088927784018453}
- - component: {fileID: 7593088927784018458}
- m_Layer: 0
- m_Name: Audio 4
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 0
---- !u!4 &7593088927784018453
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 7593088927784018452}
- m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
- m_LocalPosition: {x: 0, y: 0, z: 0}
- m_LocalScale: {x: 0.2, y: 0.19999999, z: 0.20000003}
- m_Children: []
- m_Father: {fileID: 5693225650572274972}
- m_RootOrder: 1
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!82 &7593088927784018458
-AudioSource:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 7593088927784018452}
- m_Enabled: 1
- serializedVersion: 4
- OutputAudioMixerGroup: {fileID: 0}
- m_audioClip: {fileID: 8300000, guid: 4803d8be07ade7a4bb93f231dd60980b, type: 3}
- m_PlayOnAwake: 1
- m_Volume: 1
- m_Pitch: 1
- Loop: 0
- Mute: 0
- Spatialize: 0
- SpatializePostEffects: 0
- Priority: 128
- DopplerLevel: 1
- MinDistance: 0.1
- MaxDistance: 1.5
- Pan2D: 0
- rolloffMode: 1
- BypassEffects: 0
- BypassListenerEffects: 0
- BypassReverbZones: 0
- rolloffCustomCurve:
- serializedVersion: 2
- m_Curve:
- - serializedVersion: 3
- time: 0
- value: 1
- inSlope: 0
- outSlope: 0
- tangentMode: 0
- weightedMode: 0
- inWeight: 0.33333334
- outWeight: 0.33333334
- - serializedVersion: 3
- time: 1
- value: 0
- inSlope: 0
- outSlope: 0
- tangentMode: 0
- weightedMode: 0
- inWeight: 0.33333334
- outWeight: 0.33333334
- m_PreInfinity: 2
- m_PostInfinity: 2
- m_RotationOrder: 4
- panLevelCustomCurve:
- serializedVersion: 2
- m_Curve:
- - serializedVersion: 3
- time: 0
- value: 1
- inSlope: 0
- outSlope: 0
- tangentMode: 0
- weightedMode: 0
- inWeight: 0.33333334
- outWeight: 0.33333334
- m_PreInfinity: 2
- m_PostInfinity: 2
- m_RotationOrder: 4
- spreadCustomCurve:
- serializedVersion: 2
- m_Curve:
- - serializedVersion: 3
- time: 0
- value: 0
- inSlope: 0
- outSlope: 0
- tangentMode: 0
- weightedMode: 0
- inWeight: 0.33333334
- outWeight: 0.33333334
- m_PreInfinity: 2
- m_PostInfinity: 2
- m_RotationOrder: 4
- reverbZoneMixCustomCurve:
- serializedVersion: 2
- m_Curve:
- - serializedVersion: 3
- time: 0
- value: 1
- inSlope: 0
- outSlope: 0
- tangentMode: 0
- weightedMode: 0
- inWeight: 0.33333334
- outWeight: 0.33333334
- m_PreInfinity: 2
- m_PostInfinity: 2
- m_RotationOrder: 4
---- !u!1 &7593088928030976513
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 7593088928030976518}
- - component: {fileID: 7593088928030976519}
- m_Layer: 0
- m_Name: Audio 2
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 0
---- !u!4 &7593088928030976518
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 7593088928030976513}
- m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
- m_LocalPosition: {x: 0, y: 0, z: 0}
- m_LocalScale: {x: 0.2, y: 0.19999999, z: 0.20000003}
- m_Children: []
- m_Father: {fileID: 5693225650572274972}
- m_RootOrder: 3
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!82 &7593088928030976519
-AudioSource:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 7593088928030976513}
- m_Enabled: 1
- serializedVersion: 4
- OutputAudioMixerGroup: {fileID: 0}
- m_audioClip: {fileID: 8300000, guid: f43790411c411124d9cf1ea2e72acf9b, type: 3}
- m_PlayOnAwake: 1
- m_Volume: 1
- m_Pitch: 1
- Loop: 0
- Mute: 0
- Spatialize: 0
- SpatializePostEffects: 0
- Priority: 128
- DopplerLevel: 1
- MinDistance: 0.1
- MaxDistance: 1.5
- Pan2D: 0
- rolloffMode: 1
- BypassEffects: 0
- BypassListenerEffects: 0
- BypassReverbZones: 0
- rolloffCustomCurve:
- serializedVersion: 2
- m_Curve:
- - serializedVersion: 3
- time: 0
- value: 1
- inSlope: 0
- outSlope: 0
- tangentMode: 0
- weightedMode: 0
- inWeight: 0.33333334
- outWeight: 0.33333334
- - serializedVersion: 3
- time: 1
- value: 0
- inSlope: 0
- outSlope: 0
- tangentMode: 0
- weightedMode: 0
- inWeight: 0.33333334
- outWeight: 0.33333334
- m_PreInfinity: 2
- m_PostInfinity: 2
- m_RotationOrder: 4
- panLevelCustomCurve:
- serializedVersion: 2
- m_Curve:
- - serializedVersion: 3
- time: 0
- value: 1
- inSlope: 0
- outSlope: 0
- tangentMode: 0
- weightedMode: 0
- inWeight: 0.33333334
- outWeight: 0.33333334
- m_PreInfinity: 2
- m_PostInfinity: 2
- m_RotationOrder: 4
- spreadCustomCurve:
- serializedVersion: 2
- m_Curve:
- - serializedVersion: 3
- time: 0
- value: 0
- inSlope: 0
- outSlope: 0
- tangentMode: 0
- weightedMode: 0
- inWeight: 0.33333334
- outWeight: 0.33333334
- m_PreInfinity: 2
- m_PostInfinity: 2
- m_RotationOrder: 4
- reverbZoneMixCustomCurve:
- serializedVersion: 2
- m_Curve:
- - serializedVersion: 3
- time: 0
- value: 1
- inSlope: 0
- outSlope: 0
- tangentMode: 0
- weightedMode: 0
- inWeight: 0.33333334
- outWeight: 0.33333334
- m_PreInfinity: 2
- m_PostInfinity: 2
- m_RotationOrder: 4
---- !u!1 &7593088928060604703
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 7593088928060604700}
- - component: {fileID: 7593088928060604701}
- m_Layer: 0
- m_Name: Audio 1
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 0
---- !u!4 &7593088928060604700
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 7593088928060604703}
- m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
- m_LocalPosition: {x: 0, y: 0, z: 0}
- m_LocalScale: {x: 0.2, y: 0.19999999, z: 0.20000003}
- m_Children: []
- m_Father: {fileID: 5693225650572274972}
- m_RootOrder: 4
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!82 &7593088928060604701
-AudioSource:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 7593088928060604703}
- m_Enabled: 1
- serializedVersion: 4
- OutputAudioMixerGroup: {fileID: 0}
- m_audioClip: {fileID: 8300000, guid: 7d9f44f7fb873f949b851388b56330d0, type: 3}
- m_PlayOnAwake: 1
- m_Volume: 1
- m_Pitch: 1
- Loop: 0
- Mute: 0
- Spatialize: 0
- SpatializePostEffects: 0
- Priority: 128
- DopplerLevel: 1
- MinDistance: 0.1
- MaxDistance: 1.5
- Pan2D: 0
- rolloffMode: 1
- BypassEffects: 0
- BypassListenerEffects: 0
- BypassReverbZones: 0
- rolloffCustomCurve:
- serializedVersion: 2
- m_Curve:
- - serializedVersion: 3
- time: 0
- value: 1
- inSlope: 0
- outSlope: 0
- tangentMode: 0
- weightedMode: 0
- inWeight: 0.33333334
- outWeight: 0.33333334
- - serializedVersion: 3
- time: 1
- value: 0
- inSlope: 0
- outSlope: 0
- tangentMode: 0
- weightedMode: 0
- inWeight: 0.33333334
- outWeight: 0.33333334
- m_PreInfinity: 2
- m_PostInfinity: 2
- m_RotationOrder: 4
- panLevelCustomCurve:
- serializedVersion: 2
- m_Curve:
- - serializedVersion: 3
- time: 0
- value: 1
- inSlope: 0
- outSlope: 0
- tangentMode: 0
- weightedMode: 0
- inWeight: 0.33333334
- outWeight: 0.33333334
- m_PreInfinity: 2
- m_PostInfinity: 2
- m_RotationOrder: 4
- spreadCustomCurve:
- serializedVersion: 2
- m_Curve:
- - serializedVersion: 3
- time: 0
- value: 0
- inSlope: 0
- outSlope: 0
- tangentMode: 0
- weightedMode: 0
- inWeight: 0.33333334
- outWeight: 0.33333334
- m_PreInfinity: 2
- m_PostInfinity: 2
- m_RotationOrder: 4
- reverbZoneMixCustomCurve:
- serializedVersion: 2
- m_Curve:
- - serializedVersion: 3
- time: 0
- value: 1
- inSlope: 0
- outSlope: 0
- tangentMode: 0
- weightedMode: 0
- inWeight: 0.33333334
- outWeight: 0.33333334
- m_PreInfinity: 2
- m_PostInfinity: 2
- m_RotationOrder: 4
---- !u!1 &7593088928288826205
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 7593088928288826146}
- - component: {fileID: 7593088928288826147}
- m_Layer: 0
- m_Name: Audio 5
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 0
---- !u!4 &7593088928288826146
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 7593088928288826205}
- m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
- m_LocalPosition: {x: 0, y: 0, z: 0}
- m_LocalScale: {x: 0.2, y: 0.19999999, z: 0.20000003}
- m_Children: []
- m_Father: {fileID: 5693225650572274972}
- m_RootOrder: 0
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!82 &7593088928288826147
-AudioSource:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 7593088928288826205}
- m_Enabled: 1
- serializedVersion: 4
- OutputAudioMixerGroup: {fileID: 0}
- m_audioClip: {fileID: 8300000, guid: 19c542485b32f114ba70c9092ccb658f, type: 3}
- m_PlayOnAwake: 1
- m_Volume: 1
- m_Pitch: 1
- Loop: 0
- Mute: 0
- Spatialize: 0
- SpatializePostEffects: 0
- Priority: 128
- DopplerLevel: 1
- MinDistance: 0.1
- MaxDistance: 1.5
- Pan2D: 0
- rolloffMode: 1
- BypassEffects: 0
- BypassListenerEffects: 0
- BypassReverbZones: 0
- rolloffCustomCurve:
- serializedVersion: 2
- m_Curve:
- - serializedVersion: 3
- time: 0
- value: 1
- inSlope: 0
- outSlope: 0
- tangentMode: 0
- weightedMode: 0
- inWeight: 0.33333334
- outWeight: 0.33333334
- - serializedVersion: 3
- time: 1
- value: 0
- inSlope: 0
- outSlope: 0
- tangentMode: 0
- weightedMode: 0
- inWeight: 0.33333334
- outWeight: 0.33333334
- m_PreInfinity: 2
- m_PostInfinity: 2
- m_RotationOrder: 4
- panLevelCustomCurve:
- serializedVersion: 2
- m_Curve:
- - serializedVersion: 3
- time: 0
- value: 1
- inSlope: 0
- outSlope: 0
- tangentMode: 0
- weightedMode: 0
- inWeight: 0.33333334
- outWeight: 0.33333334
- m_PreInfinity: 2
- m_PostInfinity: 2
- m_RotationOrder: 4
- spreadCustomCurve:
- serializedVersion: 2
- m_Curve:
- - serializedVersion: 3
- time: 0
- value: 0
- inSlope: 0
- outSlope: 0
- tangentMode: 0
- weightedMode: 0
- inWeight: 0.33333334
- outWeight: 0.33333334
- m_PreInfinity: 2
- m_PostInfinity: 2
- m_RotationOrder: 4
- reverbZoneMixCustomCurve:
- serializedVersion: 2
- m_Curve:
- - serializedVersion: 3
- time: 0
- value: 1
- inSlope: 0
- outSlope: 0
- tangentMode: 0
- weightedMode: 0
- inWeight: 0.33333334
- outWeight: 0.33333334
- m_PreInfinity: 2
- m_PostInfinity: 2
- m_RotationOrder: 4
diff --git a/UnityAssets/World Constraint.prefab.meta b/UnityAssets/World Constraint.prefab.meta
deleted file mode 100644
index 9cd49f9..0000000
--- a/UnityAssets/World Constraint.prefab.meta
+++ /dev/null
@@ -1,7 +0,0 @@
-fileFormatVersion: 2
-guid: b2f06c906f910d8458fb568b291b49dc
-PrefabImporter:
- externalObjects: {}
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/UnityAssets/World-Constraint b/UnityAssets/World-Constraint
deleted file mode 160000
-Subproject 1144d5b61d168d6b00064d72f444714e7b11459
diff --git a/UnityAssets/World-Constraint.meta b/UnityAssets/World-Constraint.meta
deleted file mode 100644
index 1233810..0000000
--- a/UnityAssets/World-Constraint.meta
+++ /dev/null
@@ -1,8 +0,0 @@
-fileFormatVersion: 2
-guid: 919dce9e3a5a023468fd3e1005e8d04c
-folderAsset: yes
-DefaultImporter:
- externalObjects: {}
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/UnityAssets/black.png b/UnityAssets/black.png
deleted file mode 100644
index 185328b..0000000
--- a/UnityAssets/black.png
+++ /dev/null
Binary files differ
diff --git a/UnityAssets/black.png.meta b/UnityAssets/black.png.meta
deleted file mode 100644
index 8f12b6f..0000000
--- a/UnityAssets/black.png.meta
+++ /dev/null
@@ -1,92 +0,0 @@
-fileFormatVersion: 2
-guid: 06c9223f22185d54b920542d45168c6b
-TextureImporter:
- internalIDToNameTable: []
- externalObjects: {}
- serializedVersion: 11
- mipmaps:
- mipMapMode: 0
- enableMipMap: 1
- sRGBTexture: 1
- linearTexture: 0
- fadeOut: 0
- borderMipMap: 0
- mipMapsPreserveCoverage: 0
- alphaTestReferenceValue: 0.5
- mipMapFadeDistanceStart: 1
- mipMapFadeDistanceEnd: 3
- bumpmap:
- convertToNormalMap: 0
- externalNormalMap: 0
- heightScale: 0.25
- normalMapFilter: 0
- isReadable: 0
- streamingMipmaps: 0
- streamingMipmapsPriority: 0
- grayScaleToAlpha: 0
- generateCubemap: 6
- cubemapConvolution: 0
- seamlessCubemap: 0
- textureFormat: 1
- maxTextureSize: 2048
- textureSettings:
- serializedVersion: 2
- filterMode: 1
- aniso: 1
- mipBias: 0
- wrapU: 0
- wrapV: 0
- wrapW: 0
- nPOTScale: 1
- lightmap: 0
- compressionQuality: 50
- spriteMode: 0
- spriteExtrude: 1
- spriteMeshType: 1
- alignment: 0
- spritePivot: {x: 0.5, y: 0.5}
- spritePixelsToUnits: 100
- spriteBorder: {x: 0, y: 0, z: 0, w: 0}
- spriteGenerateFallbackPhysicsShape: 1
- alphaUsage: 1
- alphaIsTransparency: 0
- spriteTessellationDetail: -1
- textureType: 0
- textureShape: 1
- singleChannelComponent: 0
- maxTextureSizeSet: 0
- compressionQualitySet: 0
- textureFormatSet: 0
- applyGammaDecoding: 0
- platformSettings:
- - serializedVersion: 3
- buildTarget: DefaultTexturePlatform
- maxTextureSize: 2048
- resizeAlgorithm: 0
- textureFormat: -1
- textureCompression: 1
- compressionQuality: 50
- crunchedCompression: 0
- allowsAlphaSplitting: 0
- overridden: 0
- androidETC2FallbackOverride: 0
- forceMaximumCompressionQuality_BC6H_BC7: 0
- spriteSheet:
- serializedVersion: 2
- sprites: []
- outline: []
- physicsShape: []
- bones: []
- spriteID:
- internalID: 0
- vertices: []
- indices:
- edges: []
- weights: []
- secondaryTextures: []
- spritePackingTag:
- pSDRemoveMatte: 0
- pSDShowRemoveMatteOption: 0
- userData:
- assetBundleName:
- assetBundleVariant: