From 02d9331603037f38044757029613325f641a8ccf Mon Sep 17 00:00:00 2001
From: Angus Antley <amantley@googlemail.com>
Date: Tue, 26 Mar 2019 14:57:07 -0700
Subject: [PATCH] This changes the avatar-animation json so that we have
 override animations for the right and left hand, similar to how we have whole
 body override animations.

---
 .../resources/avatar/avatar-animation.json    | 3009 ++++++++++-------
 interface/src/avatar/MyAvatar.cpp             |   17 +
 interface/src/avatar/MyAvatar.h               |    2 +
 libraries/animation/src/Rig.cpp               |   82 +
 libraries/animation/src/Rig.h                 |   26 +
 5 files changed, 2000 insertions(+), 1136 deletions(-)

diff --git a/interface/resources/avatar/avatar-animation.json b/interface/resources/avatar/avatar-animation.json
index 27e45daa7b..0f2e64f295 100644
--- a/interface/resources/avatar/avatar-animation.json
+++ b/interface/resources/avatar/avatar-animation.json
@@ -197,260 +197,136 @@
                                                                         "id": "rightHandStateMachine",
                                                                         "type": "stateMachine",
                                                                         "data": {
-                                                                            "currentState": "rightHandGrasp",
+                                                                            "currentState": "rightHandAnimNone",
                                                                             "states": [
                                                                                 {
-                                                                                    "id": "rightHandGrasp",
-                                                                                    "interpTarget": 3,
+                                                                                    "id": "rightHandAnimNone",
+                                                                                    "interpTarget": 1,
                                                                                     "interpDuration": 3,
                                                                                     "transitions": [
-                                                                                        { "var": "isRightIndexPoint", "state": "rightIndexPoint" },
-                                                                                        { "var": "isRightThumbRaise", "state": "rightThumbRaise" },
-                                                                                        { "var": "isRightIndexPointAndThumbRaise", "state": "rightIndexPointAndThumbRaise" }
+                                                                                        { "var": "rightHandAnimA", "state": "rightHandAnimA" },
+                                                                                        { "var": "rightHandAnimB", "state": "rightHandAnimB" }
                                                                                     ]
                                                                                 },
                                                                                 {
-                                                                                    "id": "rightIndexPoint",
-                                                                                    "interpTarget": 15,
+                                                                                    "id": "rightHandAnimA",
+                                                                                    "interpTarget": 1,
                                                                                     "interpDuration": 3,
                                                                                     "transitions": [
-                                                                                        { "var": "isRightHandGrasp", "state": "rightHandGrasp" },
-                                                                                        { "var": "isRightThumbRaise", "state": "rightThumbRaise" },
-                                                                                        { "var": "isRightIndexPointAndThumbRaise", "state": "rightIndexPointAndThumbRaise" }
+                                                                                        { "var": "rightHandAnimNone", "state": "rightHandAnimNone" },
+                                                                                        { "var": "rightHandAnimB", "state": "rightHandAnimB" }
                                                                                     ]
                                                                                 },
                                                                                 {
-                                                                                    "id": "rightThumbRaise",
-                                                                                    "interpTarget": 15,
+                                                                                    "id": "rightHandAnimB",
+                                                                                    "interpTarget": 1,
                                                                                     "interpDuration": 3,
                                                                                     "transitions": [
-                                                                                        { "var": "isRightHandGrasp", "state": "rightHandGrasp" },
-                                                                                        { "var": "isRightIndexPoint", "state": "rightIndexPoint" },
-                                                                                        { "var": "isRightIndexPointAndThumbRaise", "state": "rightIndexPointAndThumbRaise" }
-                                                                                    ]
-                                                                                },
-                                                                                {
-                                                                                    "id": "rightIndexPointAndThumbRaise",
-                                                                                    "interpTarget": 15,
-                                                                                    "interpDuration": 3,
-                                                                                    "transitions": [
-                                                                                        { "var": "isRightHandGrasp", "state": "rightHandGrasp" },
-                                                                                        { "var": "isRightIndexPoint", "state": "rightIndexPoint" },
-                                                                                        { "var": "isRightThumbRaise", "state": "rightThumbRaise" }
+                                                                                        { "var": "rightHandAnimNone", "state": "rightHandAnimNone" },
+                                                                                        { "var": "rightHandAnimA", "state": "rightHandAnimA" }
                                                                                     ]
                                                                                 }
                                                                             ]
                                                                         },
                                                                         "children": [
                                                                             {
-                                                                                "id": "rightHandGrasp",
-                                                                                "type": "blendLinear",
-                                                                                "data": {
-                                                                                    "alpha": 0.0,
-                                                                                    "alphaVar": "rightHandGraspAlpha"
-                                                                                },
-                                                                                "children": [
-                                                                                    {
-                                                                                        "id": "rightHandGraspOpen",
-                                                                                        "type": "clip",
-                                                                                        "data": {
-                                                                                            "url": "qrc:///avatar/animations/hydra_pose_open_right.fbx",
-                                                                                            "startFrame": 0.0,
-                                                                                            "endFrame": 0.0,
-                                                                                            "timeScale": 1.0,
-                                                                                            "loopFlag": true
-                                                                                        },
-                                                                                        "children": []
-                                                                                    },
-                                                                                    {
-                                                                                        "id": "rightHandGraspClosed",
-                                                                                        "type": "clip",
-                                                                                        "data": {
-                                                                                            "url": "qrc:///avatar/animations/hydra_pose_closed_right.fbx",
-                                                                                            "startFrame": 0.0,
-                                                                                            "endFrame": 0.0,
-                                                                                            "timeScale": 1.0,
-                                                                                            "loopFlag": true
-                                                                                        },
-                                                                                        "children": []
-                                                                                    }
-                                                                                ]
-                                                                            },
-                                                                            {
-                                                                                "id": "rightIndexPoint",
-                                                                                "type": "blendLinear",
-                                                                                "data":  {
-                                                                                    "alpha": 0.0,
-                                                                                    "alphaVar": "rightHandGraspAlpha"
-                                                                                },
-                                                                                "children": [
-                                                                                    {
-                                                                                        "id": "rightIndexPointOpen",
-                                                                                        "type": "clip",
-                                                                                        "data": {
-                                                                                            "url": "qrc:///avatar/animations/touch_point_open_right.fbx",
-                                                                                            "startFrame": 15.0,
-                                                                                            "endFrame": 15.0,
-                                                                                            "timeScale": 1.0,
-                                                                                            "loopFlag": true
-                                                                                        },
-                                                                                        "children": []
-                                                                                    },
-                                                                                    {
-                                                                                        "id": "rightIndexPointClosed",
-                                                                                        "type": "clip",
-                                                                                        "data": {
-                                                                                            "url": "qrc:///avatar/animations/touch_point_closed_right.fbx",
-                                                                                            "startFrame": 15.0,
-                                                                                            "endFrame": 15.0,
-                                                                                            "timeScale": 1.0,
-                                                                                            "loopFlag": true
-                                                                                        },
-                                                                                        "children": []
-                                                                                    }
-                                                                                ]
-                                                                            },
-                                                                            {
-                                                                                "id": "rightThumbRaise",
-                                                                                "type": "blendLinear",
-                                                                                "data":  {
-                                                                                    "alpha": 0.0,
-                                                                                    "alphaVar": "rightHandGraspAlpha"
-                                                                                },
-                                                                                "children": [
-                                                                                    {
-                                                                                        "id": "rightThumbRaiseOpen",
-                                                                                        "type": "clip",
-                                                                                        "data": {
-                                                                                            "url": "qrc:///avatar/animations/touch_thumb_open_right.fbx",
-                                                                                            "startFrame": 15.0,
-                                                                                            "endFrame": 15.0,
-                                                                                            "timeScale": 1.0,
-                                                                                            "loopFlag": true
-                                                                                        },
-                                                                                        "children": []
-                                                                                    },
-                                                                                    {
-                                                                                        "id": "rightThumbRaiseClosed",
-                                                                                        "type": "clip",
-                                                                                        "data": {
-                                                                                            "url": "qrc:///avatar/animations/touch_thumb_closed_right.fbx",
-                                                                                            "startFrame": 15.0,
-                                                                                            "endFrame": 15.0,
-                                                                                            "timeScale": 1.0,
-                                                                                            "loopFlag": true
-                                                                                        },
-                                                                                        "children": []
-                                                                                    }
-                                                                                ]
-                                                                            },
-                                                                            {
-                                                                                "id": "rightIndexPointAndThumbRaise",
-                                                                                "type": "blendLinear",
-                                                                                "data":  {
-                                                                                    "alpha": 0.0,
-                                                                                    "alphaVar": "rightHandGraspAlpha"
-                                                                                },
-                                                                                "children": [
-                                                                                    {
-                                                                                        "id": "rightIndexPointAndThumbRaiseOpen",
-                                                                                        "type": "clip",
-                                                                                        "data": {
-                                                                                            "url": "qrc:///avatar/animations/touch_thumb_point_open_right.fbx",
-                                                                                            "startFrame": 15.0,
-                                                                                            "endFrame": 15.0,
-                                                                                            "timeScale": 1.0,
-                                                                                            "loopFlag": true
-                                                                                        },
-                                                                                        "children": []
-                                                                                    },
-                                                                                    {
-                                                                                        "id": "rightIndexPointAndThumbRaiseClosed",
-                                                                                        "type": "clip",
-                                                                                        "data": {
-                                                                                            "url": "qrc:///avatar/animations/touch_thumb_point_closed_right.fbx",
-                                                                                            "startFrame": 15.0,
-                                                                                            "endFrame": 15.0,
-                                                                                            "timeScale": 1.0,
-                                                                                            "loopFlag": true
-                                                                                        },
-                                                                                        "children": []
-                                                                                    }
-                                                                                ]
-                                                                            }
-                                                                        ]
-                                                                    },
-                                                                    {
-                                                                        "id": "leftHandOverlay",
-                                                                        "type": "overlay",
-                                                                        "data": {
-                                                                            "alpha": 0.0,
-                                                                            "boneSet": "leftHand",
-                                                                            "alphaVar": "leftHandOverlayAlpha"
-                                                                        },
-                                                                        "children": [
-                                                                            {
-                                                                                "id": "leftHandStateMachine",
+                                                                                "id": "rightHandAnimNone",
                                                                                 "type": "stateMachine",
                                                                                 "data": {
-                                                                                    "currentState": "leftHandGrasp",
+                                                                                    "currentState": "rightHandGrasp",
                                                                                     "states": [
                                                                                         {
-                                                                                            "id": "leftHandGrasp",
+                                                                                            "id": "rightHandGrasp",
                                                                                             "interpTarget": 3,
                                                                                             "interpDuration": 3,
                                                                                             "transitions": [
-                                                                                                { "var": "isLeftIndexPoint", "state": "leftIndexPoint" },
-                                                                                                { "var": "isLeftThumbRaise", "state": "leftThumbRaise" },
-                                                                                                { "var": "isLeftIndexPointAndThumbRaise", "state": "leftIndexPointAndThumbRaise" }
+                                                                                                {
+                                                                                                    "var": "isRightIndexPoint",
+                                                                                                    "state": "rightIndexPoint"
+                                                                                                },
+                                                                                                {
+                                                                                                    "var": "isRightThumbRaise",
+                                                                                                    "state": "rightThumbRaise"
+                                                                                                },
+                                                                                                {
+                                                                                                    "var": "isRightIndexPointAndThumbRaise",
+                                                                                                    "state": "rightIndexPointAndThumbRaise"
+                                                                                                }
                                                                                             ]
                                                                                         },
                                                                                         {
-                                                                                            "id": "leftIndexPoint",
+                                                                                            "id": "rightIndexPoint",
                                                                                             "interpTarget": 15,
                                                                                             "interpDuration": 3,
                                                                                             "transitions": [
-                                                                                                { "var": "isLeftHandGrasp", "state": "leftHandGrasp" },
-                                                                                                { "var": "isLeftThumbRaise", "state": "leftThumbRaise" },
-                                                                                                { "var": "isLeftIndexPointAndThumbRaise", "state": "leftIndexPointAndThumbRaise" }
+                                                                                                {
+                                                                                                    "var": "isRightHandGrasp",
+                                                                                                    "state": "rightHandGrasp"
+                                                                                                },
+                                                                                                {
+                                                                                                    "var": "isRightThumbRaise",
+                                                                                                    "state": "rightThumbRaise"
+                                                                                                },
+                                                                                                {
+                                                                                                    "var": "isRightIndexPointAndThumbRaise",
+                                                                                                    "state": "rightIndexPointAndThumbRaise"
+                                                                                                }
                                                                                             ]
                                                                                         },
                                                                                         {
-                                                                                            "id": "leftThumbRaise",
+                                                                                            "id": "rightThumbRaise",
                                                                                             "interpTarget": 15,
                                                                                             "interpDuration": 3,
                                                                                             "transitions": [
-                                                                                                { "var": "isLeftHandGrasp", "state": "leftHandGrasp" },
-                                                                                                { "var": "isLeftIndexPoint", "state": "leftIndexPoint" },
-                                                                                                { "var": "isLeftIndexPointAndThumbRaise", "state": "leftIndexPointAndThumbRaise" }
+                                                                                                {
+                                                                                                    "var": "isRightHandGrasp",
+                                                                                                    "state": "rightHandGrasp"
+                                                                                                },
+                                                                                                {
+                                                                                                    "var": "isRightIndexPoint",
+                                                                                                    "state": "rightIndexPoint"
+                                                                                                },
+                                                                                                {
+                                                                                                    "var": "isRightIndexPointAndThumbRaise",
+                                                                                                    "state": "rightIndexPointAndThumbRaise"
+                                                                                                }
                                                                                             ]
                                                                                         },
                                                                                         {
-                                                                                            "id": "leftIndexPointAndThumbRaise",
+                                                                                            "id": "rightIndexPointAndThumbRaise",
                                                                                             "interpTarget": 15,
                                                                                             "interpDuration": 3,
                                                                                             "transitions": [
-                                                                                                { "var": "isLeftHandGrasp", "state": "leftHandGrasp" },
-                                                                                                { "var": "isLeftIndexPoint", "state": "leftIndexPoint" },
-                                                                                                { "var": "isLeftThumbRaise", "state": "leftThumbRaise" }
+                                                                                                {
+                                                                                                    "var": "isRightHandGrasp",
+                                                                                                    "state": "rightHandGrasp"
+                                                                                                },
+                                                                                                {
+                                                                                                    "var": "isRightIndexPoint",
+                                                                                                    "state": "rightIndexPoint"
+                                                                                                },
+                                                                                                {
+                                                                                                    "var": "isRightThumbRaise",
+                                                                                                    "state": "rightThumbRaise"
+                                                                                                }
                                                                                             ]
                                                                                         }
                                                                                     ]
                                                                                 },
                                                                                 "children": [
                                                                                     {
-                                                                                        "id": "leftHandGrasp",
+                                                                                        "id": "rightHandGrasp",
                                                                                         "type": "blendLinear",
                                                                                         "data": {
                                                                                             "alpha": 0.0,
-                                                                                            "alphaVar": "leftHandGraspAlpha"
+                                                                                            "alphaVar": "rightHandGraspAlpha"
                                                                                         },
                                                                                         "children": [
                                                                                             {
-                                                                                                "id": "leftHandGraspOpen",
+                                                                                                "id": "rightHandGraspOpen",
                                                                                                 "type": "clip",
                                                                                                 "data": {
-                                                                                                    "url": "qrc:///avatar/animations/hydra_pose_open_left.fbx",
+                                                                                                    "url": "qrc:///avatar/animations/hydra_pose_open_right.fbx",
                                                                                                     "startFrame": 0.0,
                                                                                                     "endFrame": 0.0,
                                                                                                     "timeScale": 1.0,
@@ -459,12 +335,12 @@
                                                                                                 "children": []
                                                                                             },
                                                                                             {
-                                                                                                "id": "leftHandGraspClosed",
+                                                                                                "id": "rightHandGraspClosed",
                                                                                                 "type": "clip",
                                                                                                 "data": {
-                                                                                                    "url": "qrc:///avatar/animations/hydra_pose_closed_left.fbx",
-                                                                                                    "startFrame": 10.0,
-                                                                                                    "endFrame": 10.0,
+                                                                                                    "url": "qrc:///avatar/animations/hydra_pose_closed_right.fbx",
+                                                                                                    "startFrame": 0.0,
+                                                                                                    "endFrame": 0.0,
                                                                                                     "timeScale": 1.0,
                                                                                                     "loopFlag": true
                                                                                                 },
@@ -473,18 +349,18 @@
                                                                                         ]
                                                                                     },
                                                                                     {
-                                                                                        "id": "leftIndexPoint",
+                                                                                        "id": "rightIndexPoint",
                                                                                         "type": "blendLinear",
-                                                                                        "data":  {
+                                                                                        "data": {
                                                                                             "alpha": 0.0,
-                                                                                            "alphaVar": "leftHandGraspAlpha"
+                                                                                            "alphaVar": "rightHandGraspAlpha"
                                                                                         },
                                                                                         "children": [
                                                                                             {
-                                                                                                "id": "leftIndexPointOpen",
+                                                                                                "id": "rightIndexPointOpen",
                                                                                                 "type": "clip",
                                                                                                 "data": {
-                                                                                                    "url": "qrc:///avatar/animations/touch_point_open_left.fbx",
+                                                                                                    "url": "qrc:///avatar/animations/touch_point_open_right.fbx",
                                                                                                     "startFrame": 15.0,
                                                                                                     "endFrame": 15.0,
                                                                                                     "timeScale": 1.0,
@@ -493,10 +369,10 @@
                                                                                                 "children": []
                                                                                             },
                                                                                             {
-                                                                                                "id": "leftIndexPointClosed",
+                                                                                                "id": "rightIndexPointClosed",
                                                                                                 "type": "clip",
                                                                                                 "data": {
-                                                                                                    "url": "qrc:///avatar/animations/touch_point_closed_left.fbx",
+                                                                                                    "url": "qrc:///avatar/animations/touch_point_closed_right.fbx",
                                                                                                     "startFrame": 15.0,
                                                                                                     "endFrame": 15.0,
                                                                                                     "timeScale": 1.0,
@@ -507,18 +383,18 @@
                                                                                         ]
                                                                                     },
                                                                                     {
-                                                                                        "id": "leftThumbRaise",
+                                                                                        "id": "rightThumbRaise",
                                                                                         "type": "blendLinear",
-                                                                                        "data":  {
+                                                                                        "data": {
                                                                                             "alpha": 0.0,
-                                                                                            "alphaVar": "leftHandGraspAlpha"
+                                                                                            "alphaVar": "rightHandGraspAlpha"
                                                                                         },
                                                                                         "children": [
                                                                                             {
-                                                                                                "id": "leftThumbRaiseOpen",
+                                                                                                "id": "rightThumbRaiseOpen",
                                                                                                 "type": "clip",
                                                                                                 "data": {
-                                                                                                    "url": "qrc:///avatar/animations/touch_thumb_open_left.fbx",
+                                                                                                    "url": "qrc:///avatar/animations/touch_thumb_open_right.fbx",
                                                                                                     "startFrame": 15.0,
                                                                                                     "endFrame": 15.0,
                                                                                                     "timeScale": 1.0,
@@ -527,10 +403,10 @@
                                                                                                 "children": []
                                                                                             },
                                                                                             {
-                                                                                                "id": "leftThumbRaiseClosed",
+                                                                                                "id": "rightThumbRaiseClosed",
                                                                                                 "type": "clip",
                                                                                                 "data": {
-                                                                                                    "url": "qrc:///avatar/animations/touch_thumb_closed_left.fbx",
+                                                                                                    "url": "qrc:///avatar/animations/touch_thumb_closed_right.fbx",
                                                                                                     "startFrame": 15.0,
                                                                                                     "endFrame": 15.0,
                                                                                                     "timeScale": 1.0,
@@ -541,18 +417,18 @@
                                                                                         ]
                                                                                     },
                                                                                     {
-                                                                                        "id": "leftIndexPointAndThumbRaise",
+                                                                                        "id": "rightIndexPointAndThumbRaise",
                                                                                         "type": "blendLinear",
-                                                                                        "data":  {
+                                                                                        "data": {
                                                                                             "alpha": 0.0,
-                                                                                            "alphaVar": "leftHandGraspAlpha"
+                                                                                            "alphaVar": "rightHandGraspAlpha"
                                                                                         },
                                                                                         "children": [
                                                                                             {
-                                                                                                "id": "leftIndexPointAndThumbRaiseOpen",
+                                                                                                "id": "rightIndexPointAndThumbRaiseOpen",
                                                                                                 "type": "clip",
                                                                                                 "data": {
-                                                                                                    "url": "qrc:///avatar/animations/touch_thumb_point_open_left.fbx",
+                                                                                                    "url": "qrc:///avatar/animations/touch_thumb_point_open_right.fbx",
                                                                                                     "startFrame": 15.0,
                                                                                                     "endFrame": 15.0,
                                                                                                     "timeScale": 1.0,
@@ -561,10 +437,10 @@
                                                                                                 "children": []
                                                                                             },
                                                                                             {
-                                                                                                "id": "leftIndexPointAndThumbRaiseClosed",
+                                                                                                "id": "rightIndexPointAndThumbRaiseClosed",
                                                                                                 "type": "clip",
                                                                                                 "data": {
-                                                                                                    "url": "qrc:///avatar/animations/touch_thumb_point_closed_left.fbx",
+                                                                                                    "url": "qrc:///avatar/animations/touch_thumb_point_closed_right.fbx",
                                                                                                     "startFrame": 15.0,
                                                                                                     "endFrame": 15.0,
                                                                                                     "timeScale": 1.0,
@@ -577,985 +453,1846 @@
                                                                                 ]
                                                                             },
                                                                             {
-                                                                                "id": "mainStateMachine",
-                                                                                "type": "stateMachine",
+                                                                                "id": "rightHandAnimA",
+                                                                                "type": "clip",
                                                                                 "data": {
-                                                                                    "outputJoints": ["LeftFoot", "RightFoot"],
-                                                                                    "currentState": "idle",
-                                                                                    "states": [
-                                                                                        {
-                                                                                            "id": "idle",
-                                                                                            "interpTarget": 20,
-                                                                                            "interpDuration": 8,
-                                                                                            "interpType": "snapshotPrev",
-                                                                                            "transitions": [
-                                                                                                { "var": "isMovingForward", "state": "WALKFWD" },
-                                                                                                { "var": "isMovingBackward", "state": "WALKBWD" },
-                                                                                                { "var": "isMovingRight", "state": "STRAFERIGHT" },
-                                                                                                { "var": "isMovingLeft", "state": "STRAFELEFT" },
-                                                                                                { "var": "isTurningRight", "state": "turnRight" },
-                                                                                                { "var": "isTurningLeft", "state": "turnLeft" },
-                                                                                                { "var": "isFlying", "state": "fly" },
-                                                                                                { "var": "isTakeoffStand", "state": "takeoffStand" },
-                                                                                                { "var": "isTakeoffRun", "state": "TAKEOFFRUN" },
-                                                                                                { "var": "isInAirStand", "state": "inAirStand" },
-                                                                                                { "var": "isInAirRun", "state": "INAIRRUN" },
-                                                                                                { "var": "isMovingRightHmd", "state": "strafeRightHmd" },
-                                                                                                { "var": "isMovingLeftHmd", "state": "strafeLeftHmd" }
-                                                                                            ]
-                                                                                        },
-                                                                                        {
-                                                                                            "id": "idleToWalkFwd",
-                                                                                            "interpTarget": 12,
-                                                                                            "interpDuration": 8,
-                                                                                            "transitions": [
-                                                                                                { "var": "idleToWalkFwdOnDone", "state": "WALKFWD" },
-                                                                                                { "var": "isNotMoving", "state": "idle" },
-                                                                                                { "var": "isMovingBackward", "state": "WALKBWD" },
-                                                                                                { "var": "isMovingRight", "state": "STRAFERIGHT" },
-                                                                                                { "var": "isMovingLeft", "state": "STRAFELEFT" },
-                                                                                                { "var": "isTurningRight", "state": "turnRight" },
-                                                                                                { "var": "isTurningLeft", "state": "turnLeft" },
-                                                                                                { "var": "isFlying", "state": "fly" },
-                                                                                                { "var": "isTakeoffStand", "state": "takeoffStand" },
-                                                                                                { "var": "isTakeoffRun", "state": "TAKEOFFRUN" },
-                                                                                                { "var": "isInAirStand", "state": "inAirStand" },
-                                                                                                { "var": "isInAirRun", "state": "INAIRRUN" },
-                                                                                                { "var": "isMovingRightHmd", "state": "strafeRightHmd" },
-                                                                                                { "var": "isMovingLeftHmd", "state": "strafeLeftHmd" }
-                                                                                            ]
-                                                                                        },
-                                                                                        {
-                                                                                            "id": "idleSettle",
-                                                                                            "interpTarget": 15,
-                                                                                            "interpDuration": 8,
-                                                                                            "interpType": "snapshotPrev",
-                                                                                            "transitions": [
-                                                                                                {"var": "idleSettleOnDone", "state": "idle" },
-                                                                                                {"var": "isMovingForward", "state": "WALKFWD" },
-                                                                                                { "var": "isMovingBackward", "state": "WALKBWD" },
-                                                                                                { "var": "isMovingRight", "state": "STRAFERIGHT" },
-                                                                                                { "var": "isMovingLeft", "state": "STRAFELEFT" },
-                                                                                                { "var": "isMovingRightHmd", "state": "strafeRightHmd" },
-                                                                                                {  "var": "isMovingLeftHmd", "state": "strafeLeftHmd" },
-                                                                                                {  "var": "isTurningRight", "state": "turnRight" },
-                                                                                                {  "var": "isTurningLeft", "state": "turnLeft" },
-                                                                                                { "var": "isFlying", "state": "fly" },
-                                                                                                { "var": "isTakeoffStand", "state": "takeoffStand" },
-                                                                                                { "var": "isTakeoffRun", "state": "TAKEOFFRUN" },
-                                                                                                { "var": "isInAirStand", "state": "inAirStand" },
-                                                                                                { "var": "isInAirRun", "state": "INAIRRUN" }
-                                                                                            ]
-                                                                                        },
-                                                                                        {
-                                                                                            "id": "WALKFWD",
-                                                                                            "interpTarget": 35,
-                                                                                            "interpDuration": 10,
-                                                                                            "interpType": "snapshotPrev",
-                                                                                            "transitions": [
-                                                                                                { "var": "isNotMoving", "state": "idleSettle" },
-                                                                                                { "var": "isMovingBackward", "state": "WALKBWD" },
-                                                                                                { "var": "isMovingRight", "state": "STRAFERIGHT" },
-                                                                                                { "var": "isMovingLeft", "state": "STRAFELEFT" },
-                                                                                                { "var": "isTurningRight", "state": "turnRight" },
-                                                                                                { "var": "isTurningLeft", "state": "turnLeft" },
-                                                                                                { "var": "isFlying", "state": "fly" },
-                                                                                                { "var": "isTakeoffStand", "state": "takeoffStand" },
-                                                                                                { "var": "isTakeoffRun", "state": "TAKEOFFRUN" },
-                                                                                                { "var": "isInAirStand", "state": "inAirStand" },
-                                                                                                { "var": "isInAirRun", "state": "INAIRRUN" },
-                                                                                                { "var": "isMovingRightHmd", "state": "strafeRightHmd" },
-                                                                                                { "var": "isMovingLeftHmd", "state": "strafeLeftHmd" }
-                                                                                            ]
-                                                                                        },
-                                                                                        {
-                                                                                            "id": "WALKBWD",
-                                                                                            "interpTarget": 35,
-                                                                                            "interpDuration": 10,
-                                                                                            "interpType": "snapshotPrev",
-                                                                                            "transitions": [
-                                                                                                { "var": "isNotMoving", "state": "idleSettle" },
-                                                                                                { "var": "isMovingForward", "state": "WALKFWD" },
-                                                                                                { "var": "isMovingRight", "state": "STRAFERIGHT" },
-                                                                                                { "var": "isMovingLeft", "state": "STRAFELEFT" },
-                                                                                                { "var": "isTurningRight", "state": "turnRight" },
-                                                                                                { "var": "isTurningLeft", "state": "turnLeft" },
-                                                                                                { "var": "isFlying", "state": "fly" },
-                                                                                                { "var": "isTakeoffStand", "state": "takeoffStand" },
-                                                                                                { "var": "isTakeoffRun", "state": "TAKEOFFRUN" },
-                                                                                                { "var": "isInAirStand", "state": "inAirStand" },
-                                                                                                { "var": "isInAirRun", "state": "INAIRRUN" },
-                                                                                                { "var": "isMovingRightHmd", "state": "strafeRightHmd" },
-                                                                                                { "var": "isMovingLeftHmd", "state": "strafeLeftHmd" }
-                                                                                            ]
-                                                                                        },
-                                                                                        {
-                                                                                            "id": "STRAFERIGHT",
-                                                                                            "interpTarget": 25,
-                                                                                            "interpDuration": 8,
-                                                                                            "interpType": "snapshotPrev",
-                                                                                            "transitions": [
-                                                                                                { "var": "isNotMoving", "state": "idleSettle" },
-                                                                                                { "var": "isMovingForward", "state": "WALKFWD" },
-                                                                                                { "var": "isMovingBackward", "state": "WALKBWD" },
-                                                                                                { "var": "isMovingLeft", "state": "STRAFELEFT" },
-                                                                                                { "var": "isTurningRight", "state": "turnRight" },
-                                                                                                { "var": "isTurningLeft", "state": "turnLeft" },
-                                                                                                { "var": "isFlying", "state": "fly" },
-                                                                                                { "var": "isTakeoffStand", "state": "takeoffStand" },
-                                                                                                { "var": "isTakeoffRun", "state": "TAKEOFFRUN" },
-                                                                                                { "var": "isInAirStand", "state": "inAirStand" },
-                                                                                                { "var": "isInAirRun", "state": "INAIRRUN" },
-                                                                                                { "var": "isMovingRightHmd", "state": "strafeRightHmd" },
-                                                                                                { "var": "isMovingLeftHmd", "state": "strafeLeftHmd" }
-                                                                                            ]
-                                                                                        },
-                                                                                        {
-                                                                                            "id": "STRAFELEFT",
-                                                                                            "interpTarget": 25,
-                                                                                            "interpDuration": 8,
-                                                                                            "interpType": "snapshotPrev",
-                                                                                            "transitions": [
-                                                                                                { "var": "isNotMoving", "state": "idleSettle" },
-                                                                                                { "var": "isMovingForward", "state": "WALKFWD" },
-                                                                                                { "var": "isMovingBackward", "state": "WALKBWD" },
-                                                                                                { "var": "isMovingRight", "state": "STRAFERIGHT" },
-                                                                                                { "var": "isTurningRight", "state": "turnRight" },
-                                                                                                { "var": "isTurningLeft", "state": "turnLeft" },
-                                                                                                { "var": "isFlying", "state": "fly" },
-                                                                                                { "var": "isTakeoffStand", "state": "takeoffStand" },
-                                                                                                { "var": "isTakeoffRun", "state": "TAKEOFFRUN" },
-                                                                                                { "var": "isInAirStand", "state": "inAirStand" },
-                                                                                                { "var": "isInAirRun", "state": "INAIRRUN" },
-                                                                                                { "var": "isMovingRightHmd", "state": "strafeRightHmd" },
-                                                                                                { "var": "isMovingLeftHmd", "state": "strafeLeftHmd" }
-                                                                                            ]
-                                                                                        },
-                                                                                        {
-                                                                                            "id": "turnRight",
-                                                                                            "interpTarget": 6,
-                                                                                            "interpDuration": 8,
-                                                                                            "transitions": [
-                                                                                                { "var": "isNotTurning", "state": "idle" },
-                                                                                                { "var": "isMovingForward", "state": "WALKFWD" },
-                                                                                                { "var": "isMovingBackward", "state": "WALKBWD" },
-                                                                                                { "var": "isMovingRight", "state": "STRAFERIGHT" },
-                                                                                                { "var": "isMovingLeft", "state": "STRAFELEFT" },
-                                                                                                { "var": "isTurningLeft", "state": "turnLeft" },
-                                                                                                { "var": "isFlying", "state": "fly" },
-                                                                                                { "var": "isTakeoffStand", "state": "takeoffStand" },
-                                                                                                { "var": "isTakeoffRun", "state": "TAKEOFFRUN" },
-                                                                                                { "var": "isInAirStand", "state": "inAirStand" },
-                                                                                                { "var": "isInAirRun", "state": "INAIRRUN" },
-                                                                                                { "var": "isMovingRightHmd", "state": "strafeRightHmd" },
-                                                                                                { "var": "isMovingLeftHmd", "state": "strafeLeftHmd" }
-                                                                                            ]
-                                                                                        },
-                                                                                        {
-                                                                                            "id": "turnLeft",
-                                                                                            "interpTarget": 6,
-                                                                                            "interpDuration": 8,
-                                                                                            "transitions": [
-                                                                                                { "var": "isNotTurning", "state": "idle" },
-                                                                                                { "var": "isMovingForward", "state": "WALKFWD" },
-                                                                                                { "var": "isMovingBackward", "state": "WALKBWD" },
-                                                                                                { "var": "isMovingRight", "state": "STRAFERIGHT" },
-                                                                                                { "var": "isMovingLeft", "state": "STRAFELEFT" },
-                                                                                                { "var": "isTurningRight", "state": "turnRight" },
-                                                                                                { "var": "isFlying", "state": "fly" },
-                                                                                                { "var": "isTakeoffStand", "state": "takeoffStand" },
-                                                                                                { "var": "isTakeoffRun", "state": "TAKEOFFRUN" },
-                                                                                                { "var": "isInAirStand", "state": "inAirStand" },
-                                                                                                { "var": "isInAirRun", "state": "INAIRRUN" },
-                                                                                                { "var": "isMovingRightHmd", "state": "strafeRightHmd" },
-                                                                                                { "var": "isMovingLeftHmd", "state": "strafeLeftHmd" }
-                                                                                            ]
-                                                                                        },
-                                                                                        {
-                                                                                            "id": "strafeRightHmd",
-                                                                                            "interpTarget": 5,
-                                                                                            "interpDuration": 8,
-                                                                                            "interpType": "snapshotPrev",
-                                                                                            "transitions": [
-                                                                                                { "var": "isNotMoving", "state": "idleSettle" },
-                                                                                                { "var": "isMovingForward", "state": "WALKFWD" },
-                                                                                                { "var": "isMovingBackward", "state": "WALKBWD" },
-                                                                                                { "var": "isMovingLeftHmd", "state": "strafeLeftHmd" },
-                                                                                                { "var": "isMovingRight", "state": "STRAFERIGHT" },
-                                                                                                { "var": "isMovingLeft", "state": "STRAFELEFT" },
-                                                                                                { "var": "isTurningRight", "state": "turnRight" },
-                                                                                                { "var": "isTurningLeft", "state": "turnLeft" },
-                                                                                                { "var": "isFlying", "state": "fly" },
-                                                                                                { "var": "isTakeoffStand", "state": "takeoffStand" },
-                                                                                                { "var": "isTakeoffRun", "state": "TAKEOFFRUN" },
-                                                                                                { "var": "isInAirStand", "state": "inAirStand" },
-                                                                                                { "var": "isInAirRun", "state": "INAIRRUN" }
-                                                                                            ]
-                                                                                        },
-                                                                                        {
-                                                                                            "id": "strafeLeftHmd",
-                                                                                            "interpTarget": 5,
-                                                                                            "interpDuration": 8,
-                                                                                            "interpType": "snapshotPrev",
-                                                                                            "transitions": [
-                                                                                                { "var": "isNotMoving", "state": "idleSettle" },
-                                                                                                { "var": "isMovingForward", "state": "WALKFWD" },
-                                                                                                { "var": "isMovingBackward", "state": "WALKBWD" },
-                                                                                                { "var": "isMovingRightHmd", "state": "strafeRightHmd" },
-                                                                                                { "var": "isMovingRight", "state": "STRAFERIGHT" },
-                                                                                                { "var": "isMovingLeft", "state": "STRAFELEFT" },
-                                                                                                { "var": "isTurningRight", "state": "turnRight" },
-                                                                                                { "var": "isTurningLeft", "state": "turnLeft" },
-                                                                                                { "var": "isFlying", "state": "fly" },
-                                                                                                { "var": "isTakeoffStand", "state": "takeoffStand" },
-                                                                                                { "var": "isTakeoffRun", "state": "TAKEOFFRUN" },
-                                                                                                { "var": "isInAirStand", "state": "inAirStand" },
-                                                                                                { "var": "isInAirRun", "state": "INAIRRUN" }
-                                                                                            ]
-                                                                                        },
-                                                                                        {
-                                                                                            "id": "fly",
-                                                                                            "interpTarget": 6,
-                                                                                            "interpDuration": 6,
-                                                                                            "transitions": [
-                                                                                                { "var": "isNotFlying", "state": "idleSettle" }
-                                                                                            ]
-                                                                                        },
-                                                                                        {
-                                                                                            "id": "takeoffStand",
-                                                                                            "interpTarget": 2,
-                                                                                            "interpDuration": 2,
-                                                                                            "transitions": [
-                                                                                                { "var": "isNotTakeoff", "state": "inAirStand" }
-                                                                                            ]
-                                                                                        },
-                                                                                        {
-                                                                                            "id": "TAKEOFFRUN",
-                                                                                            "interpTarget": 2,
-                                                                                            "interpDuration": 2,
-                                                                                            "transitions": [
-                                                                                                { "var": "isNotTakeoff", "state": "INAIRRUN" }
-                                                                                            ]
-                                                                                        },
-                                                                                        {
-                                                                                            "id": "inAirStand",
-                                                                                            "interpTarget": 3,
-                                                                                            "interpDuration": 3,
-                                                                                            "interpType": "snapshotPrev",
-                                                                                            "transitions": [
-                                                                                                { "var": "isNotInAir", "state": "landStandImpact" }
-                                                                                            ]
-                                                                                        },
-                                                                                        {
-                                                                                            "id": "INAIRRUN",
-                                                                                            "interpTarget": 3,
-                                                                                            "interpDuration": 3,
-                                                                                            "interpType": "snapshotPrev",
-                                                                                            "transitions": [
-                                                                                                { "var": "isNotInAir", "state": "WALKFWD" }
-                                                                                            ]
-                                                                                        },
-                                                                                        {
-                                                                                            "id": "landStandImpact",
-                                                                                            "interpTarget": 1,
-                                                                                            "interpDuration": 1,
-                                                                                            "transitions": [
-                                                                                                { "var": "isFlying", "state": "fly" },
-                                                                                                { "var": "isTakeoffStand", "state": "takeoffStand" },
-                                                                                                { "var": "isTakeoffRun", "state": "TAKEOFFRUN" },
-                                                                                                { "var": "landStandImpactOnDone", "state": "landStand" }
-                                                                                            ]
-                                                                                        },
-                                                                                        {
-                                                                                            "id": "landStand",
-                                                                                            "interpTarget": 1,
-                                                                                            "interpDuration": 1,
-                                                                                            "transitions": [
-                                                                                                { "var": "isMovingForward", "state": "WALKFWD" },
-                                                                                                { "var": "isMovingBackward", "state": "WALKBWD" },
-                                                                                                { "var": "isMovingRight", "state": "STRAFERIGHT" },
-                                                                                                { "var": "isMovingLeft", "state": "STRAFELEFT" },
-                                                                                                { "var": "isTurningRight", "state": "turnRight" },
-                                                                                                { "var": "isTurningLeft", "state": "turnLeft" },
-                                                                                                { "var": "isFlying", "state": "fly" },
-                                                                                                { "var": "isTakeoffStand", "state": "takeoffStand" },
-                                                                                                { "var": "isTakeoffRun", "state": "TAKEOFFRUN" },
-                                                                                                { "var": "isInAirStand", "state": "inAirStand" },
-                                                                                                { "var": "isInAirRun", "state": "INAIRRUN" },
-                                                                                                { "var": "landStandOnDone", "state": "idle" },
-                                                                                                { "var": "isMovingRightHmd", "state": "strafeRightHmd" },
-                                                                                                { "var": "isMovingLeftHmd", "state": "strafeLeftHmd" }
-                                                                                            ]
-                                                                                        },
-                                                                                        {
-                                                                                            "id": "LANDRUN",
-                                                                                            "interpTarget": 2,
-                                                                                            "interpDuration": 2,
-                                                                                            "transitions": [
-                                                                                                { "var": "isFlying", "state": "fly" },
-                                                                                                { "var": "isTakeoffStand", "state": "takeoffStand" },
-                                                                                                { "var": "isTakeoffRun", "state": "TAKEOFFRUN" },
-                                                                                                { "var": "landRunOnDone", "state": "WALKFWD" }
-                                                                                            ]
-                                                                                        }
-                                                                                    ]
+                                                                                    "url": "qrc:///avatar/animations/touch_thumb_point_open_right.fbx",
+                                                                                    "startFrame": 15.0,
+                                                                                    "endFrame": 15.0,
+                                                                                    "timeScale": 1.0,
+                                                                                    "loopFlag": true
                                                                                 },
-                                                                                "children": [
-                                                                                    {
-                                                                                        "id": "idle",
-                                                                                        "type": "stateMachine",
-                                                                                        "data": {
-                                                                                            "currentState": "idleStand",
-                                                                                            "states": [
+                                                                                "children": []
+                                                                            },
+                                                                            {
+                                                                                "id": "rightHandAnimB",
+                                                                                "type": "clip",
+                                                                                "data": {
+                                                                                    "url": "qrc:///avatar/animations/touch_thumb_point_open_right.fbx",
+                                                                                    "startFrame": 15.0,
+                                                                                    "endFrame": 15.0,
+                                                                                    "timeScale": 1.0,
+                                                                                    "loopFlag": true
+                                                                                },
+                                                                                "children": []
+                                                                            }
+                                                                        ]
+                                                                    },
+                                                                        {
+                                                                            "id": "leftHandOverlay",
+                                                                            "type": "overlay",
+                                                                            "data": {
+                                                                                "alpha": 0.0,
+                                                                                "boneSet": "leftHand",
+                                                                                "alphaVar": "leftHandOverlayAlpha"
+                                                                            },
+                                                                            "children": [
+                                                                                {
+                                                                                    "id": "leftHandStateMachine",
+                                                                                    "type": "stateMachine",
+                                                                                    "data": {
+                                                                                        "currentState": "leftHandAnimNone",
+                                                                                        "states": [
+                                                                                            {
+                                                                                                "id": "leftHandAnimNone",
+                                                                                                "interpTarget": 1,
+                                                                                                "interpDuration": 3,
+                                                                                                "transitions": [
+                                                                                                    {
+                                                                                                        "var": "leftHandAnimA",
+                                                                                                        "state": "leftHandAnimA"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "leftHandAnimB",
+                                                                                                        "state": "leftHandAnimB"
+                                                                                                    }
+                                                                                                ]
+                                                                                            },
+                                                                                            {
+                                                                                                "id": "leftHandAnimA",
+                                                                                                "interpTarget": 1,
+                                                                                                "interpDuration": 3,
+                                                                                                "transitions": [
+                                                                                                    {
+                                                                                                        "var": "leftHandAnimNone",
+                                                                                                        "state": "leftHandAnimNone"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "leftHandAnimB",
+                                                                                                        "state": "leftHandAnimB"
+                                                                                                    }
+                                                                                                ]
+                                                                                            },
+                                                                                            {
+                                                                                                "id": "leftHandAnimB",
+                                                                                                "interpTarget": 1,
+                                                                                                "interpDuration": 3,
+                                                                                                "transitions": [
+                                                                                                    {
+                                                                                                        "var": "leftHandAnimNone",
+                                                                                                        "state": "leftHandAnimNone"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "leftHandAnimA",
+                                                                                                        "state": "leftHandAnimA"
+                                                                                                    }
+                                                                                                ]
+                                                                                            }
+                                                                                        ]
+                                                                                    },
+                                                                                    "children": [
+                                                                                        {
+                                                                                            "id": "leftHandAnimNone",
+                                                                                            "type": "stateMachine",
+                                                                                            "data": {
+                                                                                                "currentState": "leftHandGrasp",
+                                                                                                "states": [
+                                                                                                    {
+                                                                                                        "id": "leftHandGrasp",
+                                                                                                        "interpTarget": 3,
+                                                                                                        "interpDuration": 3,
+                                                                                                        "transitions": [
+                                                                                                            {
+                                                                                                                "var": "isLeftIndexPoint",
+                                                                                                                "state": "leftIndexPoint"
+                                                                                                            },
+                                                                                                            {
+                                                                                                                "var": "isLeftThumbRaise",
+                                                                                                                "state": "leftThumbRaise"
+                                                                                                            },
+                                                                                                            {
+                                                                                                                "var": "isLeftIndexPointAndThumbRaise",
+                                                                                                                "state": "leftIndexPointAndThumbRaise"
+                                                                                                            }
+                                                                                                        ]
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "id": "leftIndexPoint",
+                                                                                                        "interpTarget": 15,
+                                                                                                        "interpDuration": 3,
+                                                                                                        "transitions": [
+                                                                                                            {
+                                                                                                                "var": "isLeftHandGrasp",
+                                                                                                                "state": "leftHandGrasp"
+                                                                                                            },
+                                                                                                            {
+                                                                                                                "var": "isLeftThumbRaise",
+                                                                                                                "state": "leftThumbRaise"
+                                                                                                            },
+                                                                                                            {
+                                                                                                                "var": "isLeftIndexPointAndThumbRaise",
+                                                                                                                "state": "leftIndexPointAndThumbRaise"
+                                                                                                            }
+                                                                                                        ]
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "id": "leftThumbRaise",
+                                                                                                        "interpTarget": 15,
+                                                                                                        "interpDuration": 3,
+                                                                                                        "transitions": [
+                                                                                                            {
+                                                                                                                "var": "isLeftHandGrasp",
+                                                                                                                "state": "leftHandGrasp"
+                                                                                                            },
+                                                                                                            {
+                                                                                                                "var": "isLeftIndexPoint",
+                                                                                                                "state": "leftIndexPoint"
+                                                                                                            },
+                                                                                                            {
+                                                                                                                "var": "isLeftIndexPointAndThumbRaise",
+                                                                                                                "state": "leftIndexPointAndThumbRaise"
+                                                                                                            }
+                                                                                                        ]
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "id": "leftIndexPointAndThumbRaise",
+                                                                                                        "interpTarget": 15,
+                                                                                                        "interpDuration": 3,
+                                                                                                        "transitions": [
+                                                                                                            {
+                                                                                                                "var": "isLeftHandGrasp",
+                                                                                                                "state": "leftHandGrasp"
+                                                                                                            },
+                                                                                                            {
+                                                                                                                "var": "isLeftIndexPoint",
+                                                                                                                "state": "leftIndexPoint"
+                                                                                                            },
+                                                                                                            {
+                                                                                                                "var": "isLeftThumbRaise",
+                                                                                                                "state": "leftThumbRaise"
+                                                                                                            }
+                                                                                                        ]
+                                                                                                    }
+                                                                                                ]
+                                                                                            },
+                                                                                            "children": [
                                                                                                 {
-                                                                                                    "id": "idleStand",
-                                                                                                    "interpTarget": 6,
-                                                                                                    "interpDuration": 10,
-                                                                                                    "transitions": [
-                                                                                                        { "var": "isTalking", "state": "idleTalk" }
+                                                                                                    "id": "leftHandGrasp",
+                                                                                                    "type": "blendLinear",
+                                                                                                    "data": {
+                                                                                                        "alpha": 0.0,
+                                                                                                        "alphaVar": "leftHandGraspAlpha"
+                                                                                                    },
+                                                                                                    "children": [
+                                                                                                        {
+                                                                                                            "id": "leftHandGraspOpen",
+                                                                                                            "type": "clip",
+                                                                                                            "data": {
+                                                                                                                "url": "qrc:///avatar/animations/hydra_pose_open_left.fbx",
+                                                                                                                "startFrame": 0.0,
+                                                                                                                "endFrame": 0.0,
+                                                                                                                "timeScale": 1.0,
+                                                                                                                "loopFlag": true
+                                                                                                            },
+                                                                                                            "children": []
+                                                                                                        },
+                                                                                                        {
+                                                                                                            "id": "leftHandGraspClosed",
+                                                                                                            "type": "clip",
+                                                                                                            "data": {
+                                                                                                                "url": "qrc:///avatar/animations/hydra_pose_closed_left.fbx",
+                                                                                                                "startFrame": 10.0,
+                                                                                                                "endFrame": 10.0,
+                                                                                                                "timeScale": 1.0,
+                                                                                                                "loopFlag": true
+                                                                                                            },
+                                                                                                            "children": []
+                                                                                                        }
                                                                                                     ]
                                                                                                 },
                                                                                                 {
-                                                                                                    "id": "idleTalk",
-                                                                                                    "interpTarget": 6,
-                                                                                                    "interpDuration": 10,
-                                                                                                    "transitions": [
-                                                                                                        { "var": "notIsTalking", "state": "idleStand" }
+                                                                                                    "id": "leftIndexPoint",
+                                                                                                    "type": "blendLinear",
+                                                                                                    "data": {
+                                                                                                        "alpha": 0.0,
+                                                                                                        "alphaVar": "leftHandGraspAlpha"
+                                                                                                    },
+                                                                                                    "children": [
+                                                                                                        {
+                                                                                                            "id": "leftIndexPointOpen",
+                                                                                                            "type": "clip",
+                                                                                                            "data": {
+                                                                                                                "url": "qrc:///avatar/animations/touch_point_open_left.fbx",
+                                                                                                                "startFrame": 15.0,
+                                                                                                                "endFrame": 15.0,
+                                                                                                                "timeScale": 1.0,
+                                                                                                                "loopFlag": true
+                                                                                                            },
+                                                                                                            "children": []
+                                                                                                        },
+                                                                                                        {
+                                                                                                            "id": "leftIndexPointClosed",
+                                                                                                            "type": "clip",
+                                                                                                            "data": {
+                                                                                                                "url": "qrc:///avatar/animations/touch_point_closed_left.fbx",
+                                                                                                                "startFrame": 15.0,
+                                                                                                                "endFrame": 15.0,
+                                                                                                                "timeScale": 1.0,
+                                                                                                                "loopFlag": true
+                                                                                                            },
+                                                                                                            "children": []
+                                                                                                        }
+                                                                                                    ]
+                                                                                                },
+                                                                                                {
+                                                                                                    "id": "leftThumbRaise",
+                                                                                                    "type": "blendLinear",
+                                                                                                    "data": {
+                                                                                                        "alpha": 0.0,
+                                                                                                        "alphaVar": "leftHandGraspAlpha"
+                                                                                                    },
+                                                                                                    "children": [
+                                                                                                        {
+                                                                                                            "id": "leftThumbRaiseOpen",
+                                                                                                            "type": "clip",
+                                                                                                            "data": {
+                                                                                                                "url": "qrc:///avatar/animations/touch_thumb_open_left.fbx",
+                                                                                                                "startFrame": 15.0,
+                                                                                                                "endFrame": 15.0,
+                                                                                                                "timeScale": 1.0,
+                                                                                                                "loopFlag": true
+                                                                                                            },
+                                                                                                            "children": []
+                                                                                                        },
+                                                                                                        {
+                                                                                                            "id": "leftThumbRaiseClosed",
+                                                                                                            "type": "clip",
+                                                                                                            "data": {
+                                                                                                                "url": "qrc:///avatar/animations/touch_thumb_closed_left.fbx",
+                                                                                                                "startFrame": 15.0,
+                                                                                                                "endFrame": 15.0,
+                                                                                                                "timeScale": 1.0,
+                                                                                                                "loopFlag": true
+                                                                                                            },
+                                                                                                            "children": []
+                                                                                                        }
+                                                                                                    ]
+                                                                                                },
+                                                                                                {
+                                                                                                    "id": "leftIndexPointAndThumbRaise",
+                                                                                                    "type": "blendLinear",
+                                                                                                    "data": {
+                                                                                                        "alpha": 0.0,
+                                                                                                        "alphaVar": "leftHandGraspAlpha"
+                                                                                                    },
+                                                                                                    "children": [
+                                                                                                        {
+                                                                                                            "id": "leftIndexPointAndThumbRaiseOpen",
+                                                                                                            "type": "clip",
+                                                                                                            "data": {
+                                                                                                                "url": "qrc:///avatar/animations/touch_thumb_point_open_left.fbx",
+                                                                                                                "startFrame": 15.0,
+                                                                                                                "endFrame": 15.0,
+                                                                                                                "timeScale": 1.0,
+                                                                                                                "loopFlag": true
+                                                                                                            },
+                                                                                                            "children": []
+                                                                                                        },
+                                                                                                        {
+                                                                                                            "id": "leftIndexPointAndThumbRaiseClosed",
+                                                                                                            "type": "clip",
+                                                                                                            "data": {
+                                                                                                                "url": "qrc:///avatar/animations/touch_thumb_point_closed_left.fbx",
+                                                                                                                "startFrame": 15.0,
+                                                                                                                "endFrame": 15.0,
+                                                                                                                "timeScale": 1.0,
+                                                                                                                "loopFlag": true
+                                                                                                            },
+                                                                                                            "children": []
+                                                                                                        }
                                                                                                     ]
                                                                                                 }
                                                                                             ]
                                                                                         },
-                                                                                        "children": [
+                                                                                        {
+                                                                                            "id": "leftHandAnimA",
+                                                                                            "type": "clip",
+                                                                                            "data": {
+                                                                                                "url": "qrc:///avatar/animations/touch_thumb_point_open_left.fbx",
+                                                                                                "startFrame": 15.0,
+                                                                                                "endFrame": 15.0,
+                                                                                                "timeScale": 1.0,
+                                                                                                "loopFlag": true
+                                                                                            },
+                                                                                            "children": []
+                                                                                        },
+                                                                                        {
+                                                                                            "id": "leftHandAnimB",
+                                                                                            "type": "clip",
+                                                                                            "data": {
+                                                                                                "url": "qrc:///avatar/animations/touch_thumb_point_open_left.fbx",
+                                                                                                "startFrame": 15.0,
+                                                                                                "endFrame": 15.0,
+                                                                                                "timeScale": 1.0,
+                                                                                                "loopFlag": true
+                                                                                            },
+                                                                                            "children": []
+                                                                                        }
+                                                                                    ]
+                                                                                },
+                                                                                {
+                                                                                    "id": "mainStateMachine",
+                                                                                    "type": "stateMachine",
+                                                                                    "data": {
+                                                                                        "outputJoints": [ "LeftFoot", "RightFoot" ],
+                                                                                        "currentState": "idle",
+                                                                                        "states": [
                                                                                             {
-                                                                                                "id": "idleStand",
-                                                                                                "type": "clip",
-                                                                                                "data": {
-                                                                                                    "url": "qrc:///avatar/animations/idle.fbx",
-                                                                                                    "startFrame": 0.0,
-                                                                                                    "endFrame": 300.0,
-                                                                                                    "timeScale": 1.0,
-                                                                                                    "loopFlag": true
-                                                                                                },
-                                                                                                "children": []
+                                                                                                "id": "idle",
+                                                                                                "interpTarget": 20,
+                                                                                                "interpDuration": 8,
+                                                                                                "interpType": "snapshotPrev",
+                                                                                                "transitions": [
+                                                                                                    {
+                                                                                                        "var": "isMovingForward",
+                                                                                                        "state": "WALKFWD"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isMovingBackward",
+                                                                                                        "state": "WALKBWD"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isMovingRight",
+                                                                                                        "state": "STRAFERIGHT"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isMovingLeft",
+                                                                                                        "state": "STRAFELEFT"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isTurningRight",
+                                                                                                        "state": "turnRight"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isTurningLeft",
+                                                                                                        "state": "turnLeft"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isFlying",
+                                                                                                        "state": "fly"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isTakeoffStand",
+                                                                                                        "state": "takeoffStand"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isTakeoffRun",
+                                                                                                        "state": "TAKEOFFRUN"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isInAirStand",
+                                                                                                        "state": "inAirStand"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isInAirRun",
+                                                                                                        "state": "INAIRRUN"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isMovingRightHmd",
+                                                                                                        "state": "strafeRightHmd"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isMovingLeftHmd",
+                                                                                                        "state": "strafeLeftHmd"
+                                                                                                    }
+                                                                                                ]
                                                                                             },
                                                                                             {
-                                                                                                "id": "idleTalk",
-                                                                                                "type": "clip",
-                                                                                                "data": {
-                                                                                                    "url": "qrc:///avatar/animations/talk.fbx",
-                                                                                                    "startFrame": 0.0,
-                                                                                                    "endFrame": 800.0,
-                                                                                                    "timeScale": 1.0,
-                                                                                                    "loopFlag": true
-                                                                                                },
-                                                                                                "children": []
+                                                                                                "id": "idleToWalkFwd",
+                                                                                                "interpTarget": 12,
+                                                                                                "interpDuration": 8,
+                                                                                                "transitions": [
+                                                                                                    {
+                                                                                                        "var": "idleToWalkFwdOnDone",
+                                                                                                        "state": "WALKFWD"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isNotMoving",
+                                                                                                        "state": "idle"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isMovingBackward",
+                                                                                                        "state": "WALKBWD"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isMovingRight",
+                                                                                                        "state": "STRAFERIGHT"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isMovingLeft",
+                                                                                                        "state": "STRAFELEFT"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isTurningRight",
+                                                                                                        "state": "turnRight"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isTurningLeft",
+                                                                                                        "state": "turnLeft"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isFlying",
+                                                                                                        "state": "fly"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isTakeoffStand",
+                                                                                                        "state": "takeoffStand"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isTakeoffRun",
+                                                                                                        "state": "TAKEOFFRUN"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isInAirStand",
+                                                                                                        "state": "inAirStand"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isInAirRun",
+                                                                                                        "state": "INAIRRUN"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isMovingRightHmd",
+                                                                                                        "state": "strafeRightHmd"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isMovingLeftHmd",
+                                                                                                        "state": "strafeLeftHmd"
+                                                                                                    }
+                                                                                                ]
+                                                                                            },
+                                                                                            {
+                                                                                                "id": "idleSettle",
+                                                                                                "interpTarget": 15,
+                                                                                                "interpDuration": 8,
+                                                                                                "interpType": "snapshotPrev",
+                                                                                                "transitions": [
+                                                                                                    {
+                                                                                                        "var": "idleSettleOnDone",
+                                                                                                        "state": "idle"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isMovingForward",
+                                                                                                        "state": "WALKFWD"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isMovingBackward",
+                                                                                                        "state": "WALKBWD"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isMovingRight",
+                                                                                                        "state": "STRAFERIGHT"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isMovingLeft",
+                                                                                                        "state": "STRAFELEFT"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isMovingRightHmd",
+                                                                                                        "state": "strafeRightHmd"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isMovingLeftHmd",
+                                                                                                        "state": "strafeLeftHmd"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isTurningRight",
+                                                                                                        "state": "turnRight"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isTurningLeft",
+                                                                                                        "state": "turnLeft"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isFlying",
+                                                                                                        "state": "fly"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isTakeoffStand",
+                                                                                                        "state": "takeoffStand"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isTakeoffRun",
+                                                                                                        "state": "TAKEOFFRUN"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isInAirStand",
+                                                                                                        "state": "inAirStand"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isInAirRun",
+                                                                                                        "state": "INAIRRUN"
+                                                                                                    }
+                                                                                                ]
+                                                                                            },
+                                                                                            {
+                                                                                                "id": "WALKFWD",
+                                                                                                "interpTarget": 35,
+                                                                                                "interpDuration": 10,
+                                                                                                "interpType": "snapshotPrev",
+                                                                                                "transitions": [
+                                                                                                    {
+                                                                                                        "var": "isNotMoving",
+                                                                                                        "state": "idleSettle"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isMovingBackward",
+                                                                                                        "state": "WALKBWD"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isMovingRight",
+                                                                                                        "state": "STRAFERIGHT"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isMovingLeft",
+                                                                                                        "state": "STRAFELEFT"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isTurningRight",
+                                                                                                        "state": "turnRight"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isTurningLeft",
+                                                                                                        "state": "turnLeft"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isFlying",
+                                                                                                        "state": "fly"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isTakeoffStand",
+                                                                                                        "state": "takeoffStand"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isTakeoffRun",
+                                                                                                        "state": "TAKEOFFRUN"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isInAirStand",
+                                                                                                        "state": "inAirStand"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isInAirRun",
+                                                                                                        "state": "INAIRRUN"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isMovingRightHmd",
+                                                                                                        "state": "strafeRightHmd"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isMovingLeftHmd",
+                                                                                                        "state": "strafeLeftHmd"
+                                                                                                    }
+                                                                                                ]
+                                                                                            },
+                                                                                            {
+                                                                                                "id": "WALKBWD",
+                                                                                                "interpTarget": 35,
+                                                                                                "interpDuration": 10,
+                                                                                                "interpType": "snapshotPrev",
+                                                                                                "transitions": [
+                                                                                                    {
+                                                                                                        "var": "isNotMoving",
+                                                                                                        "state": "idleSettle"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isMovingForward",
+                                                                                                        "state": "WALKFWD"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isMovingRight",
+                                                                                                        "state": "STRAFERIGHT"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isMovingLeft",
+                                                                                                        "state": "STRAFELEFT"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isTurningRight",
+                                                                                                        "state": "turnRight"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isTurningLeft",
+                                                                                                        "state": "turnLeft"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isFlying",
+                                                                                                        "state": "fly"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isTakeoffStand",
+                                                                                                        "state": "takeoffStand"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isTakeoffRun",
+                                                                                                        "state": "TAKEOFFRUN"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isInAirStand",
+                                                                                                        "state": "inAirStand"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isInAirRun",
+                                                                                                        "state": "INAIRRUN"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isMovingRightHmd",
+                                                                                                        "state": "strafeRightHmd"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isMovingLeftHmd",
+                                                                                                        "state": "strafeLeftHmd"
+                                                                                                    }
+                                                                                                ]
+                                                                                            },
+                                                                                            {
+                                                                                                "id": "STRAFERIGHT",
+                                                                                                "interpTarget": 25,
+                                                                                                "interpDuration": 8,
+                                                                                                "interpType": "snapshotPrev",
+                                                                                                "transitions": [
+                                                                                                    {
+                                                                                                        "var": "isNotMoving",
+                                                                                                        "state": "idleSettle"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isMovingForward",
+                                                                                                        "state": "WALKFWD"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isMovingBackward",
+                                                                                                        "state": "WALKBWD"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isMovingLeft",
+                                                                                                        "state": "STRAFELEFT"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isTurningRight",
+                                                                                                        "state": "turnRight"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isTurningLeft",
+                                                                                                        "state": "turnLeft"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isFlying",
+                                                                                                        "state": "fly"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isTakeoffStand",
+                                                                                                        "state": "takeoffStand"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isTakeoffRun",
+                                                                                                        "state": "TAKEOFFRUN"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isInAirStand",
+                                                                                                        "state": "inAirStand"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isInAirRun",
+                                                                                                        "state": "INAIRRUN"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isMovingRightHmd",
+                                                                                                        "state": "strafeRightHmd"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isMovingLeftHmd",
+                                                                                                        "state": "strafeLeftHmd"
+                                                                                                    }
+                                                                                                ]
+                                                                                            },
+                                                                                            {
+                                                                                                "id": "STRAFELEFT",
+                                                                                                "interpTarget": 25,
+                                                                                                "interpDuration": 8,
+                                                                                                "interpType": "snapshotPrev",
+                                                                                                "transitions": [
+                                                                                                    {
+                                                                                                        "var": "isNotMoving",
+                                                                                                        "state": "idleSettle"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isMovingForward",
+                                                                                                        "state": "WALKFWD"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isMovingBackward",
+                                                                                                        "state": "WALKBWD"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isMovingRight",
+                                                                                                        "state": "STRAFERIGHT"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isTurningRight",
+                                                                                                        "state": "turnRight"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isTurningLeft",
+                                                                                                        "state": "turnLeft"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isFlying",
+                                                                                                        "state": "fly"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isTakeoffStand",
+                                                                                                        "state": "takeoffStand"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isTakeoffRun",
+                                                                                                        "state": "TAKEOFFRUN"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isInAirStand",
+                                                                                                        "state": "inAirStand"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isInAirRun",
+                                                                                                        "state": "INAIRRUN"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isMovingRightHmd",
+                                                                                                        "state": "strafeRightHmd"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isMovingLeftHmd",
+                                                                                                        "state": "strafeLeftHmd"
+                                                                                                    }
+                                                                                                ]
+                                                                                            },
+                                                                                            {
+                                                                                                "id": "turnRight",
+                                                                                                "interpTarget": 6,
+                                                                                                "interpDuration": 8,
+                                                                                                "transitions": [
+                                                                                                    {
+                                                                                                        "var": "isNotTurning",
+                                                                                                        "state": "idle"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isMovingForward",
+                                                                                                        "state": "WALKFWD"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isMovingBackward",
+                                                                                                        "state": "WALKBWD"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isMovingRight",
+                                                                                                        "state": "STRAFERIGHT"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isMovingLeft",
+                                                                                                        "state": "STRAFELEFT"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isTurningLeft",
+                                                                                                        "state": "turnLeft"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isFlying",
+                                                                                                        "state": "fly"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isTakeoffStand",
+                                                                                                        "state": "takeoffStand"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isTakeoffRun",
+                                                                                                        "state": "TAKEOFFRUN"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isInAirStand",
+                                                                                                        "state": "inAirStand"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isInAirRun",
+                                                                                                        "state": "INAIRRUN"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isMovingRightHmd",
+                                                                                                        "state": "strafeRightHmd"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isMovingLeftHmd",
+                                                                                                        "state": "strafeLeftHmd"
+                                                                                                    }
+                                                                                                ]
+                                                                                            },
+                                                                                            {
+                                                                                                "id": "turnLeft",
+                                                                                                "interpTarget": 6,
+                                                                                                "interpDuration": 8,
+                                                                                                "transitions": [
+                                                                                                    {
+                                                                                                        "var": "isNotTurning",
+                                                                                                        "state": "idle"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isMovingForward",
+                                                                                                        "state": "WALKFWD"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isMovingBackward",
+                                                                                                        "state": "WALKBWD"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isMovingRight",
+                                                                                                        "state": "STRAFERIGHT"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isMovingLeft",
+                                                                                                        "state": "STRAFELEFT"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isTurningRight",
+                                                                                                        "state": "turnRight"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isFlying",
+                                                                                                        "state": "fly"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isTakeoffStand",
+                                                                                                        "state": "takeoffStand"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isTakeoffRun",
+                                                                                                        "state": "TAKEOFFRUN"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isInAirStand",
+                                                                                                        "state": "inAirStand"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isInAirRun",
+                                                                                                        "state": "INAIRRUN"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isMovingRightHmd",
+                                                                                                        "state": "strafeRightHmd"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isMovingLeftHmd",
+                                                                                                        "state": "strafeLeftHmd"
+                                                                                                    }
+                                                                                                ]
+                                                                                            },
+                                                                                            {
+                                                                                                "id": "strafeRightHmd",
+                                                                                                "interpTarget": 5,
+                                                                                                "interpDuration": 8,
+                                                                                                "interpType": "snapshotPrev",
+                                                                                                "transitions": [
+                                                                                                    {
+                                                                                                        "var": "isNotMoving",
+                                                                                                        "state": "idleSettle"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isMovingForward",
+                                                                                                        "state": "WALKFWD"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isMovingBackward",
+                                                                                                        "state": "WALKBWD"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isMovingLeftHmd",
+                                                                                                        "state": "strafeLeftHmd"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isMovingRight",
+                                                                                                        "state": "STRAFERIGHT"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isMovingLeft",
+                                                                                                        "state": "STRAFELEFT"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isTurningRight",
+                                                                                                        "state": "turnRight"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isTurningLeft",
+                                                                                                        "state": "turnLeft"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isFlying",
+                                                                                                        "state": "fly"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isTakeoffStand",
+                                                                                                        "state": "takeoffStand"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isTakeoffRun",
+                                                                                                        "state": "TAKEOFFRUN"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isInAirStand",
+                                                                                                        "state": "inAirStand"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isInAirRun",
+                                                                                                        "state": "INAIRRUN"
+                                                                                                    }
+                                                                                                ]
+                                                                                            },
+                                                                                            {
+                                                                                                "id": "strafeLeftHmd",
+                                                                                                "interpTarget": 5,
+                                                                                                "interpDuration": 8,
+                                                                                                "interpType": "snapshotPrev",
+                                                                                                "transitions": [
+                                                                                                    {
+                                                                                                        "var": "isNotMoving",
+                                                                                                        "state": "idleSettle"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isMovingForward",
+                                                                                                        "state": "WALKFWD"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isMovingBackward",
+                                                                                                        "state": "WALKBWD"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isMovingRightHmd",
+                                                                                                        "state": "strafeRightHmd"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isMovingRight",
+                                                                                                        "state": "STRAFERIGHT"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isMovingLeft",
+                                                                                                        "state": "STRAFELEFT"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isTurningRight",
+                                                                                                        "state": "turnRight"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isTurningLeft",
+                                                                                                        "state": "turnLeft"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isFlying",
+                                                                                                        "state": "fly"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isTakeoffStand",
+                                                                                                        "state": "takeoffStand"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isTakeoffRun",
+                                                                                                        "state": "TAKEOFFRUN"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isInAirStand",
+                                                                                                        "state": "inAirStand"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isInAirRun",
+                                                                                                        "state": "INAIRRUN"
+                                                                                                    }
+                                                                                                ]
+                                                                                            },
+                                                                                            {
+                                                                                                "id": "fly",
+                                                                                                "interpTarget": 6,
+                                                                                                "interpDuration": 6,
+                                                                                                "transitions": [
+                                                                                                    {
+                                                                                                        "var": "isNotFlying",
+                                                                                                        "state": "idleSettle"
+                                                                                                    }
+                                                                                                ]
+                                                                                            },
+                                                                                            {
+                                                                                                "id": "takeoffStand",
+                                                                                                "interpTarget": 2,
+                                                                                                "interpDuration": 2,
+                                                                                                "transitions": [
+                                                                                                    {
+                                                                                                        "var": "isNotTakeoff",
+                                                                                                        "state": "inAirStand"
+                                                                                                    }
+                                                                                                ]
+                                                                                            },
+                                                                                            {
+                                                                                                "id": "TAKEOFFRUN",
+                                                                                                "interpTarget": 2,
+                                                                                                "interpDuration": 2,
+                                                                                                "transitions": [
+                                                                                                    {
+                                                                                                        "var": "isNotTakeoff",
+                                                                                                        "state": "INAIRRUN"
+                                                                                                    }
+                                                                                                ]
+                                                                                            },
+                                                                                            {
+                                                                                                "id": "inAirStand",
+                                                                                                "interpTarget": 3,
+                                                                                                "interpDuration": 3,
+                                                                                                "interpType": "snapshotPrev",
+                                                                                                "transitions": [
+                                                                                                    {
+                                                                                                        "var": "isNotInAir",
+                                                                                                        "state": "landStandImpact"
+                                                                                                    }
+                                                                                                ]
+                                                                                            },
+                                                                                            {
+                                                                                                "id": "INAIRRUN",
+                                                                                                "interpTarget": 3,
+                                                                                                "interpDuration": 3,
+                                                                                                "interpType": "snapshotPrev",
+                                                                                                "transitions": [
+                                                                                                    {
+                                                                                                        "var": "isNotInAir",
+                                                                                                        "state": "WALKFWD"
+                                                                                                    }
+                                                                                                ]
+                                                                                            },
+                                                                                            {
+                                                                                                "id": "landStandImpact",
+                                                                                                "interpTarget": 1,
+                                                                                                "interpDuration": 1,
+                                                                                                "transitions": [
+                                                                                                    {
+                                                                                                        "var": "isFlying",
+                                                                                                        "state": "fly"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isTakeoffStand",
+                                                                                                        "state": "takeoffStand"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isTakeoffRun",
+                                                                                                        "state": "TAKEOFFRUN"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "landStandImpactOnDone",
+                                                                                                        "state": "landStand"
+                                                                                                    }
+                                                                                                ]
+                                                                                            },
+                                                                                            {
+                                                                                                "id": "landStand",
+                                                                                                "interpTarget": 1,
+                                                                                                "interpDuration": 1,
+                                                                                                "transitions": [
+                                                                                                    {
+                                                                                                        "var": "isMovingForward",
+                                                                                                        "state": "WALKFWD"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isMovingBackward",
+                                                                                                        "state": "WALKBWD"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isMovingRight",
+                                                                                                        "state": "STRAFERIGHT"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isMovingLeft",
+                                                                                                        "state": "STRAFELEFT"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isTurningRight",
+                                                                                                        "state": "turnRight"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isTurningLeft",
+                                                                                                        "state": "turnLeft"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isFlying",
+                                                                                                        "state": "fly"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isTakeoffStand",
+                                                                                                        "state": "takeoffStand"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isTakeoffRun",
+                                                                                                        "state": "TAKEOFFRUN"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isInAirStand",
+                                                                                                        "state": "inAirStand"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isInAirRun",
+                                                                                                        "state": "INAIRRUN"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "landStandOnDone",
+                                                                                                        "state": "idle"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isMovingRightHmd",
+                                                                                                        "state": "strafeRightHmd"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isMovingLeftHmd",
+                                                                                                        "state": "strafeLeftHmd"
+                                                                                                    }
+                                                                                                ]
+                                                                                            },
+                                                                                            {
+                                                                                                "id": "LANDRUN",
+                                                                                                "interpTarget": 2,
+                                                                                                "interpDuration": 2,
+                                                                                                "transitions": [
+                                                                                                    {
+                                                                                                        "var": "isFlying",
+                                                                                                        "state": "fly"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isTakeoffStand",
+                                                                                                        "state": "takeoffStand"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "isTakeoffRun",
+                                                                                                        "state": "TAKEOFFRUN"
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "var": "landRunOnDone",
+                                                                                                        "state": "WALKFWD"
+                                                                                                    }
+                                                                                                ]
                                                                                             }
                                                                                         ]
                                                                                     },
-                                                                                    {
-                                                                                        "id": "WALKFWD",
-                                                                                        "type": "blendLinearMove",
-                                                                                        "data": {
-                                                                                            "alpha": 0.0,
-                                                                                            "desiredSpeed": 1.4,
-                                                                                            "characteristicSpeeds": [0.5, 1.8, 2.3, 3.2, 4.5],
-                                                                                            "alphaVar": "moveForwardAlpha",
-                                                                                            "desiredSpeedVar": "moveForwardSpeed"
+                                                                                    "children": [
+                                                                                        {
+                                                                                            "id": "idle",
+                                                                                            "type": "stateMachine",
+                                                                                            "data": {
+                                                                                                "currentState": "idleStand",
+                                                                                                "states": [
+                                                                                                    {
+                                                                                                        "id": "idleStand",
+                                                                                                        "interpTarget": 6,
+                                                                                                        "interpDuration": 10,
+                                                                                                        "transitions": [
+                                                                                                            {
+                                                                                                                "var": "isTalking",
+                                                                                                                "state": "idleTalk"
+                                                                                                            }
+                                                                                                        ]
+                                                                                                    },
+                                                                                                    {
+                                                                                                        "id": "idleTalk",
+                                                                                                        "interpTarget": 6,
+                                                                                                        "interpDuration": 10,
+                                                                                                        "transitions": [
+                                                                                                            {
+                                                                                                                "var": "notIsTalking",
+                                                                                                                "state": "idleStand"
+                                                                                                            }
+                                                                                                        ]
+                                                                                                    }
+                                                                                                ]
+                                                                                            },
+                                                                                            "children": [
+                                                                                                {
+                                                                                                    "id": "idleStand",
+                                                                                                    "type": "clip",
+                                                                                                    "data": {
+                                                                                                        "url": "qrc:///avatar/animations/idle.fbx",
+                                                                                                        "startFrame": 0.0,
+                                                                                                        "endFrame": 300.0,
+                                                                                                        "timeScale": 1.0,
+                                                                                                        "loopFlag": true
+                                                                                                    },
+                                                                                                    "children": []
+                                                                                                },
+                                                                                                {
+                                                                                                    "id": "idleTalk",
+                                                                                                    "type": "clip",
+                                                                                                    "data": {
+                                                                                                        "url": "qrc:///avatar/animations/talk.fbx",
+                                                                                                        "startFrame": 0.0,
+                                                                                                        "endFrame": 800.0,
+                                                                                                        "timeScale": 1.0,
+                                                                                                        "loopFlag": true
+                                                                                                    },
+                                                                                                    "children": []
+                                                                                                }
+                                                                                            ]
                                                                                         },
-                                                                                        "children": [
-                                                                                            {
-                                                                                                "id": "walkFwdShort_c",
-                                                                                                "type": "clip",
-                                                                                                "data": {
-                                                                                                    "url": "qrc:///avatar/animations/walk_short_fwd.fbx",
-                                                                                                    "startFrame": 0.0,
-                                                                                                    "endFrame": 39.0,
-                                                                                                    "timeScale": 1.0,
-                                                                                                    "loopFlag": true
-                                                                                                },
-                                                                                                "children": []
+                                                                                        {
+                                                                                            "id": "WALKFWD",
+                                                                                            "type": "blendLinearMove",
+                                                                                            "data": {
+                                                                                                "alpha": 0.0,
+                                                                                                "desiredSpeed": 1.4,
+                                                                                                "characteristicSpeeds": [ 0.5, 1.8, 2.3, 3.2, 4.5 ],
+                                                                                                "alphaVar": "moveForwardAlpha",
+                                                                                                "desiredSpeedVar": "moveForwardSpeed"
                                                                                             },
-                                                                                            {
-                                                                                                "id": "walkFwdNormal_c",
-                                                                                                "type": "clip",
-                                                                                                "data": {
-                                                                                                    "url": "qrc:///avatar/animations/walk_fwd.fbx",
-                                                                                                    "startFrame": 0.0,
-                                                                                                    "endFrame": 30.0,
-                                                                                                    "timeScale": 1.0,
-                                                                                                    "loopFlag": true
+                                                                                            "children": [
+                                                                                                {
+                                                                                                    "id": "walkFwdShort_c",
+                                                                                                    "type": "clip",
+                                                                                                    "data": {
+                                                                                                        "url": "qrc:///avatar/animations/walk_short_fwd.fbx",
+                                                                                                        "startFrame": 0.0,
+                                                                                                        "endFrame": 39.0,
+                                                                                                        "timeScale": 1.0,
+                                                                                                        "loopFlag": true
+                                                                                                    },
+                                                                                                    "children": []
                                                                                                 },
-                                                                                                "children": []
-                                                                                            },
-                                                                                            {
-                                                                                                "id": "walkFwdFast_c",
-                                                                                                "type": "clip",
-                                                                                                "data": {
-                                                                                                    "url": "qrc:///avatar/animations/walk_fwd_fast.fbx",
-                                                                                                    "startFrame": 0.0,
-                                                                                                    "endFrame": 25.0,
-                                                                                                    "timeScale": 1.0,
-                                                                                                    "loopFlag": true
+                                                                                                {
+                                                                                                    "id": "walkFwdNormal_c",
+                                                                                                    "type": "clip",
+                                                                                                    "data": {
+                                                                                                        "url": "qrc:///avatar/animations/walk_fwd.fbx",
+                                                                                                        "startFrame": 0.0,
+                                                                                                        "endFrame": 30.0,
+                                                                                                        "timeScale": 1.0,
+                                                                                                        "loopFlag": true
+                                                                                                    },
+                                                                                                    "children": []
                                                                                                 },
-                                                                                                "children": []
-                                                                                            },
-                                                                                            {
-                                                                                                "id": "walkFwdJog_c",
-                                                                                                "type": "clip",
-                                                                                                "data": {
-                                                                                                    "url": "qrc:///avatar/animations/jog_fwd.fbx",
-                                                                                                    "startFrame": 0.0,
-                                                                                                    "endFrame": 25.0,
-                                                                                                    "timeScale": 1.0,
-                                                                                                    "loopFlag": true
+                                                                                                {
+                                                                                                    "id": "walkFwdFast_c",
+                                                                                                    "type": "clip",
+                                                                                                    "data": {
+                                                                                                        "url": "qrc:///avatar/animations/walk_fwd_fast.fbx",
+                                                                                                        "startFrame": 0.0,
+                                                                                                        "endFrame": 25.0,
+                                                                                                        "timeScale": 1.0,
+                                                                                                        "loopFlag": true
+                                                                                                    },
+                                                                                                    "children": []
                                                                                                 },
-                                                                                                "children": []
-                                                                                            },
-                                                                                            {
-                                                                                                "id": "walkFwdRun_c",
-                                                                                                "type": "clip",
-                                                                                                "data": {
-                                                                                                    "url": "qrc:///avatar/animations/run_fwd.fbx",
-                                                                                                    "startFrame": 1.0,
-                                                                                                    "endFrame": 22.0,
-                                                                                                    "timeScale": 1.0,
-                                                                                                    "loopFlag": true
+                                                                                                {
+                                                                                                    "id": "walkFwdJog_c",
+                                                                                                    "type": "clip",
+                                                                                                    "data": {
+                                                                                                        "url": "qrc:///avatar/animations/jog_fwd.fbx",
+                                                                                                        "startFrame": 0.0,
+                                                                                                        "endFrame": 25.0,
+                                                                                                        "timeScale": 1.0,
+                                                                                                        "loopFlag": true
+                                                                                                    },
+                                                                                                    "children": []
                                                                                                 },
-                                                                                                "children": []
-                                                                                            }
-                                                                                        ]
-                                                                                    },
-                                                                                    {
-                                                                                        "id": "idleToWalkFwd",
-                                                                                        "type": "clip",
-                                                                                        "data": {
-                                                                                            "url": "qrc:///avatar/animations/idle_to_walk.fbx",
-                                                                                            "startFrame": 1.0,
-                                                                                            "endFrame": 13.0,
-                                                                                            "timeScale": 1.0,
-                                                                                            "loopFlag": false
+                                                                                                {
+                                                                                                    "id": "walkFwdRun_c",
+                                                                                                    "type": "clip",
+                                                                                                    "data": {
+                                                                                                        "url": "qrc:///avatar/animations/run_fwd.fbx",
+                                                                                                        "startFrame": 1.0,
+                                                                                                        "endFrame": 22.0,
+                                                                                                        "timeScale": 1.0,
+                                                                                                        "loopFlag": true
+                                                                                                    },
+                                                                                                    "children": []
+                                                                                                }
+                                                                                            ]
                                                                                         },
-                                                                                        "children": []
-                                                                                    },
-                                                                                    {
-                                                                                        "id": "idleSettle",
-                                                                                        "type": "clip",
-                                                                                        "data": {
-                                                                                            "url": "qrc:///avatar/animations/settle_to_idle.fbx",
-                                                                                            "startFrame": 1.0,
-                                                                                            "endFrame": 59.0,
-                                                                                            "timeScale": 1.0,
-                                                                                            "loopFlag": false
+                                                                                        {
+                                                                                            "id": "idleToWalkFwd",
+                                                                                            "type": "clip",
+                                                                                            "data": {
+                                                                                                "url": "qrc:///avatar/animations/idle_to_walk.fbx",
+                                                                                                "startFrame": 1.0,
+                                                                                                "endFrame": 13.0,
+                                                                                                "timeScale": 1.0,
+                                                                                                "loopFlag": false
+                                                                                            },
+                                                                                            "children": []
                                                                                         },
-                                                                                        "children": []
-                                                                                    },
-                                                                                    {
-                                                                                        "id": "WALKBWD",
-                                                                                        "type": "blendLinearMove",
-                                                                                        "data": {
-                                                                                            "alpha": 0.0,
-                                                                                            "desiredSpeed": 1.4,
-                                                                                            "characteristicSpeeds": [0.6, 1.6, 2.3, 3.1],
-                                                                                            "alphaVar": "moveBackwardAlpha",
-                                                                                            "desiredSpeedVar": "moveBackwardSpeed"
+                                                                                        {
+                                                                                            "id": "idleSettle",
+                                                                                            "type": "clip",
+                                                                                            "data": {
+                                                                                                "url": "qrc:///avatar/animations/settle_to_idle.fbx",
+                                                                                                "startFrame": 1.0,
+                                                                                                "endFrame": 59.0,
+                                                                                                "timeScale": 1.0,
+                                                                                                "loopFlag": false
+                                                                                            },
+                                                                                            "children": []
                                                                                         },
-                                                                                        "children": [
-                                                                                            {
-                                                                                                "id": "walkBwdShort_c",
-                                                                                                "type": "clip",
-                                                                                                "data": {
-                                                                                                    "url": "qrc:///avatar/animations/walk_short_bwd.fbx",
-                                                                                                    "startFrame": 0.0,
-                                                                                                    "endFrame": 38.0,
-                                                                                                    "timeScale": 1.0,
-                                                                                                    "loopFlag": true
-                                                                                                },
-                                                                                                "children": []
+                                                                                        {
+                                                                                            "id": "WALKBWD",
+                                                                                            "type": "blendLinearMove",
+                                                                                            "data": {
+                                                                                                "alpha": 0.0,
+                                                                                                "desiredSpeed": 1.4,
+                                                                                                "characteristicSpeeds": [ 0.6, 1.6, 2.3, 3.1 ],
+                                                                                                "alphaVar": "moveBackwardAlpha",
+                                                                                                "desiredSpeedVar": "moveBackwardSpeed"
                                                                                             },
-                                                                                            {
-                                                                                                "id": "walkBwdFast_c",
-                                                                                                "type": "clip",
-                                                                                                "data": {
-                                                                                                    "url": "qrc:///avatar/animations/walk_bwd_fast.fbx",
-                                                                                                    "startFrame": 0.0,
-                                                                                                    "endFrame": 27.0,
-                                                                                                    "timeScale": 1.0,
-                                                                                                    "loopFlag": true
+                                                                                            "children": [
+                                                                                                {
+                                                                                                    "id": "walkBwdShort_c",
+                                                                                                    "type": "clip",
+                                                                                                    "data": {
+                                                                                                        "url": "qrc:///avatar/animations/walk_short_bwd.fbx",
+                                                                                                        "startFrame": 0.0,
+                                                                                                        "endFrame": 38.0,
+                                                                                                        "timeScale": 1.0,
+                                                                                                        "loopFlag": true
+                                                                                                    },
+                                                                                                    "children": []
                                                                                                 },
-                                                                                                "children": []
-                                                                                            },
-                                                                                            {
-                                                                                                "id": "jogBwd_c",
-                                                                                                "type": "clip",
-                                                                                                "data": {
-                                                                                                    "url": "qrc:///avatar/animations/jog_bwd.fbx",
-                                                                                                    "startFrame": 0.0,
-                                                                                                    "endFrame": 24.0,
-                                                                                                    "timeScale": 1.0,
-                                                                                                    "loopFlag": true
+                                                                                                {
+                                                                                                    "id": "walkBwdFast_c",
+                                                                                                    "type": "clip",
+                                                                                                    "data": {
+                                                                                                        "url": "qrc:///avatar/animations/walk_bwd_fast.fbx",
+                                                                                                        "startFrame": 0.0,
+                                                                                                        "endFrame": 27.0,
+                                                                                                        "timeScale": 1.0,
+                                                                                                        "loopFlag": true
+                                                                                                    },
+                                                                                                    "children": []
                                                                                                 },
-                                                                                                "children": []
-                                                                                            },
-                                                                                            {
-                                                                                                "id": "runBwd_c",
-                                                                                                "type": "clip",
-                                                                                                "data": {
-                                                                                                    "url": "qrc:///avatar/animations/run_bwd.fbx",
-                                                                                                    "startFrame": 0.0,
-                                                                                                    "endFrame": 16.0,
-                                                                                                    "timeScale": 1.0,
-                                                                                                    "loopFlag": true
+                                                                                                {
+                                                                                                    "id": "jogBwd_c",
+                                                                                                    "type": "clip",
+                                                                                                    "data": {
+                                                                                                        "url": "qrc:///avatar/animations/jog_bwd.fbx",
+                                                                                                        "startFrame": 0.0,
+                                                                                                        "endFrame": 24.0,
+                                                                                                        "timeScale": 1.0,
+                                                                                                        "loopFlag": true
+                                                                                                    },
+                                                                                                    "children": []
                                                                                                 },
-                                                                                                "children": []
-                                                                                            }
-                                                                                        ]
-                                                                                    },
-                                                                                    {
-                                                                                        "id": "turnLeft",
-                                                                                        "type": "clip",
-                                                                                        "data": {
-                                                                                            "url": "qrc:///avatar/animations/turn_left.fbx",
-                                                                                            "startFrame": 0.0,
-                                                                                            "endFrame": 32.0,
-                                                                                            "timeScale": 1.0,
-                                                                                            "loopFlag": true
+                                                                                                {
+                                                                                                    "id": "runBwd_c",
+                                                                                                    "type": "clip",
+                                                                                                    "data": {
+                                                                                                        "url": "qrc:///avatar/animations/run_bwd.fbx",
+                                                                                                        "startFrame": 0.0,
+                                                                                                        "endFrame": 16.0,
+                                                                                                        "timeScale": 1.0,
+                                                                                                        "loopFlag": true
+                                                                                                    },
+                                                                                                    "children": []
+                                                                                                }
+                                                                                            ]
                                                                                         },
-                                                                                        "children": []
-                                                                                    },
-                                                                                    {
-                                                                                        "id": "turnRight",
-                                                                                        "type": "clip",
-                                                                                        "data": {
-                                                                                            "url": "qrc:///avatar/animations/turn_left.fbx",
-                                                                                            "startFrame": 0.0,
-                                                                                            "endFrame": 32.0,
-                                                                                            "timeScale": 1.0,
-                                                                                            "loopFlag": true,
-                                                                                            "mirrorFlag": true
+                                                                                        {
+                                                                                            "id": "turnLeft",
+                                                                                            "type": "clip",
+                                                                                            "data": {
+                                                                                                "url": "qrc:///avatar/animations/turn_left.fbx",
+                                                                                                "startFrame": 0.0,
+                                                                                                "endFrame": 32.0,
+                                                                                                "timeScale": 1.0,
+                                                                                                "loopFlag": true
+                                                                                            },
+                                                                                            "children": []
                                                                                         },
-                                                                                        "children": []
-                                                                                    },
-                                                                                    {
-                                                                                        "id": "STRAFELEFT",
-                                                                                        "type": "blendLinearMove",
-                                                                                        "data": {
-                                                                                            "alpha": 0.0,
-                                                                                            "desiredSpeed": 1.4,
-                                                                                            "characteristicSpeeds": [0.1, 0.5, 1.0, 2.6, 3.0],
-                                                                                            "alphaVar": "moveLateralAlpha",
-                                                                                            "desiredSpeedVar": "moveLateralSpeed"
+                                                                                        {
+                                                                                            "id": "turnRight",
+                                                                                            "type": "clip",
+                                                                                            "data": {
+                                                                                                "url": "qrc:///avatar/animations/turn_left.fbx",
+                                                                                                "startFrame": 0.0,
+                                                                                                "endFrame": 32.0,
+                                                                                                "timeScale": 1.0,
+                                                                                                "loopFlag": true,
+                                                                                                "mirrorFlag": true
+                                                                                            },
+                                                                                            "children": []
                                                                                         },
-                                                                                        "children": [
-                                                                                            {
-                                                                                                "id": "strafeLeftShortStep_c",
-                                                                                                "type": "clip",
-                                                                                                "data": {
-                                                                                                    "url": "qrc:///avatar/animations/side_step_short_left.fbx",
-                                                                                                    "startFrame": 0.0,
-                                                                                                    "endFrame": 29.0,
-                                                                                                    "timeScale": 1.0,
-                                                                                                    "loopFlag": true
-                                                                                                },
-                                                                                                "children": []
+                                                                                        {
+                                                                                            "id": "STRAFELEFT",
+                                                                                            "type": "blendLinearMove",
+                                                                                            "data": {
+                                                                                                "alpha": 0.0,
+                                                                                                "desiredSpeed": 1.4,
+                                                                                                "characteristicSpeeds": [ 0.1, 0.5, 1.0, 2.6, 3.0 ],
+                                                                                                "alphaVar": "moveLateralAlpha",
+                                                                                                "desiredSpeedVar": "moveLateralSpeed"
                                                                                             },
-                                                                                            {
-                                                                                                "id": "strafeLeftStep_c",
-                                                                                                "type": "clip",
-                                                                                                "data": {
-                                                                                                    "url": "qrc:///avatar/animations/side_step_left.fbx",
-                                                                                                    "startFrame": 0.0,
-                                                                                                    "endFrame": 20.0,
-                                                                                                    "timeScale": 1.0,
-                                                                                                    "loopFlag": true
+                                                                                            "children": [
+                                                                                                {
+                                                                                                    "id": "strafeLeftShortStep_c",
+                                                                                                    "type": "clip",
+                                                                                                    "data": {
+                                                                                                        "url": "qrc:///avatar/animations/side_step_short_left.fbx",
+                                                                                                        "startFrame": 0.0,
+                                                                                                        "endFrame": 29.0,
+                                                                                                        "timeScale": 1.0,
+                                                                                                        "loopFlag": true
+                                                                                                    },
+                                                                                                    "children": []
                                                                                                 },
-                                                                                                "children": []
-                                                                                            },
-                                                                                            {
-                                                                                                "id": "strafeLeftWalk_c",
-                                                                                                "type": "clip",
-                                                                                                "data": {
-                                                                                                    "url": "qrc:///avatar/animations/walk_left.fbx",
-                                                                                                    "startFrame": 0.0,
-                                                                                                    "endFrame": 35.0,
-                                                                                                    "timeScale": 1.0,
-                                                                                                    "loopFlag": true
+                                                                                                {
+                                                                                                    "id": "strafeLeftStep_c",
+                                                                                                    "type": "clip",
+                                                                                                    "data": {
+                                                                                                        "url": "qrc:///avatar/animations/side_step_left.fbx",
+                                                                                                        "startFrame": 0.0,
+                                                                                                        "endFrame": 20.0,
+                                                                                                        "timeScale": 1.0,
+                                                                                                        "loopFlag": true
+                                                                                                    },
+                                                                                                    "children": []
                                                                                                 },
-                                                                                                "children": []
-                                                                                            },
-                                                                                            {
-                                                                                                "id": "strafeLeftWalkFast_c",
-                                                                                                "type": "clip",
-                                                                                                "data": {
-                                                                                                    "url": "qrc:///avatar/animations/walk_left_fast.fbx",
-                                                                                                    "startFrame": 0.0,
-                                                                                                    "endFrame": 21.0,
-                                                                                                    "timeScale": 1.0,
-                                                                                                    "loopFlag": true
+                                                                                                {
+                                                                                                    "id": "strafeLeftWalk_c",
+                                                                                                    "type": "clip",
+                                                                                                    "data": {
+                                                                                                        "url": "qrc:///avatar/animations/walk_left.fbx",
+                                                                                                        "startFrame": 0.0,
+                                                                                                        "endFrame": 35.0,
+                                                                                                        "timeScale": 1.0,
+                                                                                                        "loopFlag": true
+                                                                                                    },
+                                                                                                    "children": []
                                                                                                 },
-                                                                                                "children": []
-                                                                                            },
-                                                                                            {
-                                                                                                "id": "strafeLeftJog_c",
-                                                                                                "type": "clip",
-                                                                                                "data": {
-                                                                                                    "url": "qrc:///avatar/animations/jog_left.fbx",
-                                                                                                    "startFrame": 0.0,
-                                                                                                    "endFrame": 24.0,
-                                                                                                    "timeScale": 1.0,
-                                                                                                    "loopFlag": true
+                                                                                                {
+                                                                                                    "id": "strafeLeftWalkFast_c",
+                                                                                                    "type": "clip",
+                                                                                                    "data": {
+                                                                                                        "url": "qrc:///avatar/animations/walk_left_fast.fbx",
+                                                                                                        "startFrame": 0.0,
+                                                                                                        "endFrame": 21.0,
+                                                                                                        "timeScale": 1.0,
+                                                                                                        "loopFlag": true
+                                                                                                    },
+                                                                                                    "children": []
                                                                                                 },
-                                                                                                "children": []
-                                                                                            }
-                                                                                        ]
-                                                                                    },
-                                                                                    {
-                                                                                        "id": "STRAFERIGHT",
-                                                                                        "type": "blendLinearMove",
-                                                                                        "data": {
-                                                                                            "alpha": 0.0,
-                                                                                            "desiredSpeed": 1.4,
-                                                                                            "characteristicSpeeds": [0.1, 0.5, 1.0, 2.6, 3.0],
-                                                                                            "alphaVar": "moveLateralAlpha",
-                                                                                            "desiredSpeedVar": "moveLateralSpeed"
+                                                                                                {
+                                                                                                    "id": "strafeLeftJog_c",
+                                                                                                    "type": "clip",
+                                                                                                    "data": {
+                                                                                                        "url": "qrc:///avatar/animations/jog_left.fbx",
+                                                                                                        "startFrame": 0.0,
+                                                                                                        "endFrame": 24.0,
+                                                                                                        "timeScale": 1.0,
+                                                                                                        "loopFlag": true
+                                                                                                    },
+                                                                                                    "children": []
+                                                                                                }
+                                                                                            ]
                                                                                         },
-                                                                                        "children": [                                                                                               {
-                                                                                                "id": "strafeRightShortStep_c",
-                                                                                                "type": "clip",
-                                                                                                "data": {
-                                                                                                    "url": "qrc:///avatar/animations/side_step_short_left.fbx",
-                                                                                                    "startFrame": 0.0,
-                                                                                                    "endFrame": 29.0,
-                                                                                                    "timeScale": 1.0,
-                                                                                                    "loopFlag": true,
-                                                                                                    "mirrorFlag": true
-                                                                                                },
-                                                                                                "children": []
+                                                                                        {
+                                                                                            "id": "STRAFERIGHT",
+                                                                                            "type": "blendLinearMove",
+                                                                                            "data": {
+                                                                                                "alpha": 0.0,
+                                                                                                "desiredSpeed": 1.4,
+                                                                                                "characteristicSpeeds": [ 0.1, 0.5, 1.0, 2.6, 3.0 ],
+                                                                                                "alphaVar": "moveLateralAlpha",
+                                                                                                "desiredSpeedVar": "moveLateralSpeed"
                                                                                             },
-                                                                                            {
-                                                                                                "id": "strafeRightStep_c",
-                                                                                                "type": "clip",
-                                                                                                "data": {
-                                                                                                    "url": "qrc:///avatar/animations/side_step_left.fbx",
-                                                                                                    "startFrame": 0.0,
-                                                                                                    "endFrame": 20.0,
-                                                                                                    "timeScale": 1.0,
-                                                                                                    "loopFlag": true,
-                                                                                                    "mirrorFlag": true
+                                                                                            "children": [
+                                                                                                {
+                                                                                                    "id": "strafeRightShortStep_c",
+                                                                                                    "type": "clip",
+                                                                                                    "data": {
+                                                                                                        "url": "qrc:///avatar/animations/side_step_short_left.fbx",
+                                                                                                        "startFrame": 0.0,
+                                                                                                        "endFrame": 29.0,
+                                                                                                        "timeScale": 1.0,
+                                                                                                        "loopFlag": true,
+                                                                                                        "mirrorFlag": true
+                                                                                                    },
+                                                                                                    "children": []
                                                                                                 },
-                                                                                                "children": []
-                                                                                            },
-                                                                                            {
-                                                                                                "id": "strafeRightWalk_c",
-                                                                                                "type": "clip",
-                                                                                                "data": {
-                                                                                                    "url": "qrc:///avatar/animations/walk_left.fbx",
-                                                                                                    "startFrame": 0.0,
-                                                                                                    "endFrame": 35.0,
-                                                                                                    "timeScale": 1.0,
-                                                                                                    "loopFlag": true,
-                                                                                                    "mirrorFlag": true
+                                                                                                {
+                                                                                                    "id": "strafeRightStep_c",
+                                                                                                    "type": "clip",
+                                                                                                    "data": {
+                                                                                                        "url": "qrc:///avatar/animations/side_step_left.fbx",
+                                                                                                        "startFrame": 0.0,
+                                                                                                        "endFrame": 20.0,
+                                                                                                        "timeScale": 1.0,
+                                                                                                        "loopFlag": true,
+                                                                                                        "mirrorFlag": true
+                                                                                                    },
+                                                                                                    "children": []
                                                                                                 },
-                                                                                                "children": []
-                                                                                            },
-                                                                                            {
-                                                                                                "id": "strafeRightFast_c",
-                                                                                                "type": "clip",
-                                                                                                "data": {
-                                                                                                    "url": "qrc:///avatar/animations/walk_left_fast.fbx",
-                                                                                                    "startFrame": 0.0,
-                                                                                                    "endFrame": 21.0,
-                                                                                                    "timeScale": 1.0,
-                                                                                                    "loopFlag": true,
-                                                                                                    "mirrorFlag": true
+                                                                                                {
+                                                                                                    "id": "strafeRightWalk_c",
+                                                                                                    "type": "clip",
+                                                                                                    "data": {
+                                                                                                        "url": "qrc:///avatar/animations/walk_left.fbx",
+                                                                                                        "startFrame": 0.0,
+                                                                                                        "endFrame": 35.0,
+                                                                                                        "timeScale": 1.0,
+                                                                                                        "loopFlag": true,
+                                                                                                        "mirrorFlag": true
+                                                                                                    },
+                                                                                                    "children": []
                                                                                                 },
-                                                                                                "children": []
-                                                                                            },
-                                                                                            {
-                                                                                                "id": "strafeRightJog_c",
-                                                                                                "type": "clip",
-                                                                                                "data": {
-                                                                                                    "url": "qrc:///avatar/animations/jog_left.fbx",
-                                                                                                    "startFrame": 0.0,
-                                                                                                    "endFrame": 24.0,
-                                                                                                    "timeScale": 1.0,
-                                                                                                    "loopFlag": true,
-                                                                                                    "mirrorFlag": true
+                                                                                                {
+                                                                                                    "id": "strafeRightFast_c",
+                                                                                                    "type": "clip",
+                                                                                                    "data": {
+                                                                                                        "url": "qrc:///avatar/animations/walk_left_fast.fbx",
+                                                                                                        "startFrame": 0.0,
+                                                                                                        "endFrame": 21.0,
+                                                                                                        "timeScale": 1.0,
+                                                                                                        "loopFlag": true,
+                                                                                                        "mirrorFlag": true
+                                                                                                    },
+                                                                                                    "children": []
                                                                                                 },
-                                                                                                "children": []
-                                                                                            }
-                                                                                        ]
-                                                                                    },
-                                                                                    {
-                                                                                        "id": "strafeLeftHmd",
-                                                                                        "type": "blendLinearMove",
-                                                                                        "data": {
-                                                                                            "alpha": 0.0,
-                                                                                            "desiredSpeed": 1.4,
-                                                                                            "characteristicSpeeds": [0, 0.5, 2.5],
-                                                                                            "alphaVar": "moveLateralAlpha",
-                                                                                            "desiredSpeedVar": "moveLateralSpeed"
+                                                                                                {
+                                                                                                    "id": "strafeRightJog_c",
+                                                                                                    "type": "clip",
+                                                                                                    "data": {
+                                                                                                        "url": "qrc:///avatar/animations/jog_left.fbx",
+                                                                                                        "startFrame": 0.0,
+                                                                                                        "endFrame": 24.0,
+                                                                                                        "timeScale": 1.0,
+                                                                                                        "loopFlag": true,
+                                                                                                        "mirrorFlag": true
+                                                                                                    },
+                                                                                                    "children": []
+                                                                                                }
+                                                                                            ]
                                                                                         },
-                                                                                        "children": [
-                                                                                            {
-                                                                                                "id": "stepLeftShort_c",
-                                                                                                "type": "clip",
-                                                                                                "data": {
-                                                                                                    "url": "qrc:///avatar/animations/side_step_short_left.fbx",
-                                                                                                    "startFrame": 0.0,
-                                                                                                    "endFrame": 29.0,
-                                                                                                    "timeScale": 1.0,
-                                                                                                    "loopFlag": true
-                                                                                                },
-                                                                                                "children": []
+                                                                                        {
+                                                                                            "id": "strafeLeftHmd",
+                                                                                            "type": "blendLinearMove",
+                                                                                            "data": {
+                                                                                                "alpha": 0.0,
+                                                                                                "desiredSpeed": 1.4,
+                                                                                                "characteristicSpeeds": [ 0, 0.5, 2.5 ],
+                                                                                                "alphaVar": "moveLateralAlpha",
+                                                                                                "desiredSpeedVar": "moveLateralSpeed"
                                                                                             },
-                                                                                            {
-                                                                                                "id": "stepLeft_c",
-                                                                                                "type": "clip",
-                                                                                                "data": {
-                                                                                                    "url": "qrc:///avatar/animations/side_step_left.fbx",
-                                                                                                    "startFrame": 0.0,
-                                                                                                    "endFrame": 20.0,
-                                                                                                    "timeScale": 1.0,
-                                                                                                    "loopFlag": true
+                                                                                            "children": [
+                                                                                                {
+                                                                                                    "id": "stepLeftShort_c",
+                                                                                                    "type": "clip",
+                                                                                                    "data": {
+                                                                                                        "url": "qrc:///avatar/animations/side_step_short_left.fbx",
+                                                                                                        "startFrame": 0.0,
+                                                                                                        "endFrame": 29.0,
+                                                                                                        "timeScale": 1.0,
+                                                                                                        "loopFlag": true
+                                                                                                    },
+                                                                                                    "children": []
                                                                                                 },
-                                                                                                "children": []
+                                                                                                {
+                                                                                                    "id": "stepLeft_c",
+                                                                                                    "type": "clip",
+                                                                                                    "data": {
+                                                                                                        "url": "qrc:///avatar/animations/side_step_left.fbx",
+                                                                                                        "startFrame": 0.0,
+                                                                                                        "endFrame": 20.0,
+                                                                                                        "timeScale": 1.0,
+                                                                                                        "loopFlag": true
+                                                                                                    },
+                                                                                                    "children": []
+                                                                                                },
+                                                                                                {
+                                                                                                    "id": "strafeLeftAnim_c",
+                                                                                                    "type": "clip",
+                                                                                                    "data": {
+                                                                                                        "url": "qrc:///avatar/animations/side_step_left_fast.fbx",
+                                                                                                        "startFrame": 0.0,
+                                                                                                        "endFrame": 16.0,
+                                                                                                        "timeScale": 1.0,
+                                                                                                        "loopFlag": true
+                                                                                                    },
+                                                                                                    "children": []
+                                                                                                }
+                                                                                            ]
+                                                                                        },
+                                                                                        {
+                                                                                            "id": "strafeRightHmd",
+                                                                                            "type": "blendLinearMove",
+                                                                                            "data": {
+                                                                                                "alpha": 0.0,
+                                                                                                "desiredSpeed": 1.4,
+                                                                                                "characteristicSpeeds": [ 0, 0.5, 2.5 ],
+                                                                                                "alphaVar": "moveLateralAlpha",
+                                                                                                "desiredSpeedVar": "moveLateralSpeed"
                                                                                             },
-                                                                                            {
-                                                                                                "id": "strafeLeftAnim_c",
-                                                                                                "type": "clip",
-                                                                                                "data": {
-                                                                                                    "url": "qrc:///avatar/animations/side_step_left_fast.fbx",
-                                                                                                    "startFrame": 0.0,
-                                                                                                    "endFrame": 16.0,
-                                                                                                    "timeScale": 1.0,
-                                                                                                    "loopFlag": true
+                                                                                            "children": [
+                                                                                                {
+                                                                                                    "id": "stepRightShort_c",
+                                                                                                    "type": "clip",
+                                                                                                    "data": {
+                                                                                                        "url": "qrc:///avatar/animations/side_step_short_left.fbx",
+                                                                                                        "startFrame": 0.0,
+                                                                                                        "endFrame": 29.0,
+                                                                                                        "timeScale": 1.0,
+                                                                                                        "loopFlag": true,
+                                                                                                        "mirrorFlag": true
+                                                                                                    },
+                                                                                                    "children": []
                                                                                                 },
-                                                                                                "children": []
-                                                                                            }
-                                                                                        ]
-                                                                                    },
-                                                                                    {
-                                                                                        "id": "strafeRightHmd",
-                                                                                        "type": "blendLinearMove",
-                                                                                        "data": {
-                                                                                            "alpha": 0.0,
-                                                                                            "desiredSpeed": 1.4,
-                                                                                            "characteristicSpeeds": [0, 0.5, 2.5],
-                                                                                            "alphaVar": "moveLateralAlpha",
-                                                                                            "desiredSpeedVar": "moveLateralSpeed"
+                                                                                                {
+                                                                                                    "id": "stepRight_c",
+                                                                                                    "type": "clip",
+                                                                                                    "data": {
+                                                                                                        "url": "qrc:///avatar/animations/side_step_left.fbx",
+                                                                                                        "startFrame": 0.0,
+                                                                                                        "endFrame": 20.0,
+                                                                                                        "timeScale": 1.0,
+                                                                                                        "loopFlag": true,
+                                                                                                        "mirrorFlag": true
+                                                                                                    },
+                                                                                                    "children": []
+                                                                                                },
+                                                                                                {
+                                                                                                    "id": "strafeRightAnim_c",
+                                                                                                    "type": "clip",
+                                                                                                    "data": {
+                                                                                                        "url": "qrc:///avatar/animations/side_step_left_fast.fbx",
+                                                                                                        "startFrame": 0.0,
+                                                                                                        "endFrame": 16.0,
+                                                                                                        "timeScale": 1.0,
+                                                                                                        "loopFlag": true,
+                                                                                                        "mirrorFlag": true
+                                                                                                    },
+                                                                                                    "children": []
+                                                                                                }
+                                                                                            ]
                                                                                         },
-                                                                                        "children": [
-                                                                                            {
-                                                                                                "id": "stepRightShort_c",
-                                                                                                "type": "clip",
-                                                                                                "data": {
-                                                                                                    "url": "qrc:///avatar/animations/side_step_short_left.fbx",
-                                                                                                    "startFrame": 0.0,
-                                                                                                    "endFrame": 29.0,
-                                                                                                    "timeScale": 1.0,
-                                                                                                    "loopFlag": true,
-                                                                                                    "mirrorFlag": true
-                                                                                                },
-                                                                                                "children": []
+                                                                                        {
+                                                                                            "id": "fly",
+                                                                                            "type": "clip",
+                                                                                            "data": {
+                                                                                                "url": "qrc:///avatar/animations/fly.fbx",
+                                                                                                "startFrame": 1.0,
+                                                                                                "endFrame": 80.0,
+                                                                                                "timeScale": 1.0,
+                                                                                                "loopFlag": true
                                                                                             },
-                                                                                            {
-                                                                                                "id": "stepRight_c",
-                                                                                                "type": "clip",
-                                                                                                "data": {
-                                                                                                    "url": "qrc:///avatar/animations/side_step_left.fbx",
-                                                                                                    "startFrame": 0.0,
-                                                                                                    "endFrame": 20.0,
-                                                                                                    "timeScale": 1.0,
-                                                                                                    "loopFlag": true,
-                                                                                                    "mirrorFlag": true
-                                                                                                },
-                                                                                                "children": []
+                                                                                            "children": []
+                                                                                        },
+                                                                                        {
+                                                                                            "id": "takeoffStand",
+                                                                                            "type": "clip",
+                                                                                            "data": {
+                                                                                                "url": "qrc:///avatar/animations/jump_standing_launch.fbx",
+                                                                                                "startFrame": 2.0,
+                                                                                                "endFrame": 16.0,
+                                                                                                "timeScale": 1.0,
+                                                                                                "loopFlag": false
                                                                                             },
-                                                                                            {
-                                                                                                "id": "strafeRightAnim_c",
-                                                                                                "type": "clip",
-                                                                                                "data": {
-                                                                                                    "url": "qrc:///avatar/animations/side_step_left_fast.fbx",
-                                                                                                    "startFrame": 0.0,
-                                                                                                    "endFrame": 16.0,
-                                                                                                    "timeScale": 1.0,
-                                                                                                    "loopFlag": true,
-                                                                                                    "mirrorFlag": true
-                                                                                                },
-                                                                                                "children": []
-                                                                                            }
-                                                                                        ]
-                                                                                    },
-                                                                                    {
-                                                                                        "id": "fly",
-                                                                                        "type": "clip",
-                                                                                        "data": {
-                                                                                            "url": "qrc:///avatar/animations/fly.fbx",
-                                                                                            "startFrame": 1.0,
-                                                                                            "endFrame": 80.0,
-                                                                                            "timeScale": 1.0,
-                                                                                            "loopFlag": true
+                                                                                            "children": []
                                                                                         },
-                                                                                        "children": []
-                                                                                    },
-                                                                                    {
-                                                                                        "id": "takeoffStand",
-                                                                                        "type": "clip",
-                                                                                        "data": {
-                                                                                            "url": "qrc:///avatar/animations/jump_standing_launch.fbx",
-                                                                                            "startFrame": 2.0,
-                                                                                            "endFrame": 16.0,
-                                                                                            "timeScale": 1.0,
-                                                                                            "loopFlag": false
-                                                                                        },
-                                                                                        "children": []
-                                                                                    },
-                                                                                    {
-                                                                                        "id": "TAKEOFFRUN",
-                                                                                        "type": "clip",
-                                                                                        "data": {
-                                                                                            "url": "qrc:///avatar/animations/jump_running_launch_land.fbx",
-                                                                                            "startFrame": 4.0,
-                                                                                            "endFrame": 15.0,
-                                                                                            "timeScale": 1.0,
-                                                                                            "loopFlag": false
-                                                                                        },
-                                                                                        "children": []
-                                                                                    },
-                                                                                    {
-                                                                                        "id": "inAirStand",
-                                                                                        "type": "blendLinear",
-                                                                                        "data": {
-                                                                                            "alpha": 0.0,
-                                                                                            "alphaVar": "inAirAlpha"
-                                                                                        },
-                                                                                        "children": [
-                                                                                            {
-                                                                                                "id": "inAirStandPreApex",
-                                                                                                "type": "clip",
-                                                                                                "data": {
-                                                                                                    "url": "qrc:///avatar/animations/jump_standing_apex.fbx",
-                                                                                                    "startFrame": 0.0,
-                                                                                                    "endFrame": 0.0,
-                                                                                                    "timeScale": 1.0,
-                                                                                                    "loopFlag": false
-                                                                                                },
-                                                                                                "children": []
+                                                                                        {
+                                                                                            "id": "TAKEOFFRUN",
+                                                                                            "type": "clip",
+                                                                                            "data": {
+                                                                                                "url": "qrc:///avatar/animations/jump_running_launch_land.fbx",
+                                                                                                "startFrame": 4.0,
+                                                                                                "endFrame": 15.0,
+                                                                                                "timeScale": 1.0,
+                                                                                                "loopFlag": false
                                                                                             },
-                                                                                            {
-                                                                                                "id": "inAirStandApex",
-                                                                                                "type": "clip",
-                                                                                                "data": {
-                                                                                                    "url": "qrc:///avatar/animations/jump_standing_apex.fbx",
-                                                                                                    "startFrame": 1.0,
-                                                                                                    "endFrame": 1.0,
-                                                                                                    "timeScale": 1.0,
-                                                                                                    "loopFlag": false
-                                                                                                },
-                                                                                                "children": []
+                                                                                            "children": []
+                                                                                        },
+                                                                                        {
+                                                                                            "id": "inAirStand",
+                                                                                            "type": "blendLinear",
+                                                                                            "data": {
+                                                                                                "alpha": 0.0,
+                                                                                                "alphaVar": "inAirAlpha"
                                                                                             },
-                                                                                            {
-                                                                                                "id": "inAirStandPostApex",
-                                                                                                "type": "clip",
-                                                                                                "data": {
-                                                                                                    "url": "qrc:///avatar/animations/jump_standing_apex.fbx",
-                                                                                                    "startFrame": 2.0,
-                                                                                                    "endFrame": 2.0,
-                                                                                                    "timeScale": 1.0,
-                                                                                                    "loopFlag": false
+                                                                                            "children": [
+                                                                                                {
+                                                                                                    "id": "inAirStandPreApex",
+                                                                                                    "type": "clip",
+                                                                                                    "data": {
+                                                                                                        "url": "qrc:///avatar/animations/jump_standing_apex.fbx",
+                                                                                                        "startFrame": 0.0,
+                                                                                                        "endFrame": 0.0,
+                                                                                                        "timeScale": 1.0,
+                                                                                                        "loopFlag": false
+                                                                                                    },
+                                                                                                    "children": []
                                                                                                 },
-                                                                                                "children": []
-                                                                                            }
-                                                                                        ]
-                                                                                    },
-                                                                                    {
-                                                                                        "id": "INAIRRUN",
-                                                                                        "type": "blendLinear",
-                                                                                        "data": {
-                                                                                            "alpha": 0.0,
-                                                                                            "alphaVar": "inAirAlpha"
+                                                                                                {
+                                                                                                    "id": "inAirStandApex",
+                                                                                                    "type": "clip",
+                                                                                                    "data": {
+                                                                                                        "url": "qrc:///avatar/animations/jump_standing_apex.fbx",
+                                                                                                        "startFrame": 1.0,
+                                                                                                        "endFrame": 1.0,
+                                                                                                        "timeScale": 1.0,
+                                                                                                        "loopFlag": false
+                                                                                                    },
+                                                                                                    "children": []
+                                                                                                },
+                                                                                                {
+                                                                                                    "id": "inAirStandPostApex",
+                                                                                                    "type": "clip",
+                                                                                                    "data": {
+                                                                                                        "url": "qrc:///avatar/animations/jump_standing_apex.fbx",
+                                                                                                        "startFrame": 2.0,
+                                                                                                        "endFrame": 2.0,
+                                                                                                        "timeScale": 1.0,
+                                                                                                        "loopFlag": false
+                                                                                                    },
+                                                                                                    "children": []
+                                                                                                }
+                                                                                            ]
                                                                                         },
-                                                                                        "children": [
-                                                                                            {
-                                                                                                "id": "inAirRunPreApex",
-                                                                                                "type": "clip",
-                                                                                                "data": {
-                                                                                                    "url": "qrc:///avatar/animations/jump_running_launch_land.fbx",
-                                                                                                    "startFrame": 16.0,
-                                                                                                    "endFrame": 16.0,
-                                                                                                    "timeScale": 1.0,
-                                                                                                    "loopFlag": false
-                                                                                                },
-                                                                                                "children": []
+                                                                                        {
+                                                                                            "id": "INAIRRUN",
+                                                                                            "type": "blendLinear",
+                                                                                            "data": {
+                                                                                                "alpha": 0.0,
+                                                                                                "alphaVar": "inAirAlpha"
                                                                                             },
-                                                                                            {
-                                                                                                "id": "inAirRunApex",
-                                                                                                "type": "clip",
-                                                                                                "data": {
-                                                                                                    "url": "qrc:///avatar/animations/jump_running_launch_land.fbx",
-                                                                                                    "startFrame": 22.0,
-                                                                                                    "endFrame": 22.0,
-                                                                                                    "timeScale": 1.0,
-                                                                                                    "loopFlag": false
+                                                                                            "children": [
+                                                                                                {
+                                                                                                    "id": "inAirRunPreApex",
+                                                                                                    "type": "clip",
+                                                                                                    "data": {
+                                                                                                        "url": "qrc:///avatar/animations/jump_running_launch_land.fbx",
+                                                                                                        "startFrame": 16.0,
+                                                                                                        "endFrame": 16.0,
+                                                                                                        "timeScale": 1.0,
+                                                                                                        "loopFlag": false
+                                                                                                    },
+                                                                                                    "children": []
                                                                                                 },
-                                                                                                "children": []
+                                                                                                {
+                                                                                                    "id": "inAirRunApex",
+                                                                                                    "type": "clip",
+                                                                                                    "data": {
+                                                                                                        "url": "qrc:///avatar/animations/jump_running_launch_land.fbx",
+                                                                                                        "startFrame": 22.0,
+                                                                                                        "endFrame": 22.0,
+                                                                                                        "timeScale": 1.0,
+                                                                                                        "loopFlag": false
+                                                                                                    },
+                                                                                                    "children": []
+                                                                                                },
+                                                                                                {
+                                                                                                    "id": "inAirRunPostApex",
+                                                                                                    "type": "clip",
+                                                                                                    "data": {
+                                                                                                        "url": "qrc:///avatar/animations/jump_running_launch_land.fbx",
+                                                                                                        "startFrame": 33.0,
+                                                                                                        "endFrame": 33.0,
+                                                                                                        "timeScale": 1.0,
+                                                                                                        "loopFlag": false
+                                                                                                    },
+                                                                                                    "children": []
+                                                                                                }
+                                                                                            ]
+                                                                                        },
+                                                                                        {
+                                                                                            "id": "landStandImpact",
+                                                                                            "type": "clip",
+                                                                                            "data": {
+                                                                                                "url": "qrc:///avatar/animations/jump_standing_land_settle.fbx",
+                                                                                                "startFrame": 1.0,
+                                                                                                "endFrame": 6.0,
+                                                                                                "timeScale": 1.0,
+                                                                                                "loopFlag": false
                                                                                             },
-                                                                                            {
-                                                                                                "id": "inAirRunPostApex",
-                                                                                                "type": "clip",
-                                                                                                "data": {
-                                                                                                    "url": "qrc:///avatar/animations/jump_running_launch_land.fbx",
-                                                                                                    "startFrame": 33.0,
-                                                                                                    "endFrame": 33.0,
-                                                                                                    "timeScale": 1.0,
-                                                                                                    "loopFlag": false
-                                                                                                },
-                                                                                                "children": []
-                                                                                            }
-                                                                                        ]
-                                                                                    },
-                                                                                    {
-                                                                                        "id": "landStandImpact",
-                                                                                        "type": "clip",
-                                                                                        "data": {
-                                                                                            "url": "qrc:///avatar/animations/jump_standing_land_settle.fbx",
-                                                                                            "startFrame": 1.0,
-                                                                                            "endFrame": 6.0,
-                                                                                            "timeScale": 1.0,
-                                                                                            "loopFlag": false
+                                                                                            "children": []
                                                                                         },
-                                                                                        "children": []
-                                                                                    },
-                                                                                    {
-                                                                                        "id": "landStand",
-                                                                                        "type": "clip",
-                                                                                        "data": {
-                                                                                            "url": "qrc:///avatar/animations/jump_standing_land_settle.fbx",
-                                                                                            "startFrame": 6.0,
-                                                                                            "endFrame": 68.0,
-                                                                                            "timeScale": 1.0,
-                                                                                            "loopFlag": false
+                                                                                        {
+                                                                                            "id": "landStand",
+                                                                                            "type": "clip",
+                                                                                            "data": {
+                                                                                                "url": "qrc:///avatar/animations/jump_standing_land_settle.fbx",
+                                                                                                "startFrame": 6.0,
+                                                                                                "endFrame": 68.0,
+                                                                                                "timeScale": 1.0,
+                                                                                                "loopFlag": false
+                                                                                            },
+                                                                                            "children": []
                                                                                         },
-                                                                                        "children": []
-                                                                                    },
-                                                                                    {
-                                                                                        "id": "LANDRUN",
-                                                                                        "type": "clip",
-                                                                                        "data": {
-                                                                                            "url": "qrc:///avatar/animations/jump_running_launch_land.fbx",
-                                                                                            "startFrame": 29.0,
-                                                                                            "endFrame": 40.0,
-                                                                                            "timeScale": 1.0,
-                                                                                            "loopFlag": false
-                                                                                        },
-                                                                                        "children": []
-                                                                                    }
-                                                                                ]
-                                                                            }
+                                                                                        {
+                                                                                            "id": "LANDRUN",
+                                                                                            "type": "clip",
+                                                                                            "data": {
+                                                                                                "url": "qrc:///avatar/animations/jump_running_launch_land.fbx",
+                                                                                                "startFrame": 29.0,
+                                                                                                "endFrame": 40.0,
+                                                                                                "timeScale": 1.0,
+                                                                                                "loopFlag": false
+                                                                                            },
+                                                                                            "children": []
+                                                                                        }
+                                                                                    ]
+                                                                                }
+                                                                            ]
+                                                                        }
                                                                         ]
                                                                     }
-                                                                ]
-                                                            }
                                                         ]
                                                     }
                                                 ]
diff --git a/interface/src/avatar/MyAvatar.cpp b/interface/src/avatar/MyAvatar.cpp
index 8bf6dcbd92..85cdafa529 100644
--- a/interface/src/avatar/MyAvatar.cpp
+++ b/interface/src/avatar/MyAvatar.cpp
@@ -1188,6 +1188,15 @@ void MyAvatar::overrideAnimation(const QString& url, float fps, bool loop, float
     _skeletonModel->getRig().overrideAnimation(url, fps, loop, firstFrame, lastFrame);
 }
 
+void MyAvatar::overrideHandAnimation(bool isLeft, const QString& url, float fps, bool loop, float firstFrame, float lastFrame) {
+    if (QThread::currentThread() != thread()) {
+        QMetaObject::invokeMethod(this, "overrideHandAnimation", Q_ARG(bool, isLeft), Q_ARG(const QString&, url), Q_ARG(float, fps),
+            Q_ARG(bool, loop), Q_ARG(float, firstFrame), Q_ARG(float, lastFrame));
+        return;
+    }
+    _skeletonModel->getRig().overrideHandAnimation(isLeft, url, fps, loop, firstFrame, lastFrame);
+}
+
 void MyAvatar::restoreAnimation() {
     if (QThread::currentThread() != thread()) {
         QMetaObject::invokeMethod(this, "restoreAnimation");
@@ -1196,6 +1205,14 @@ void MyAvatar::restoreAnimation() {
     _skeletonModel->getRig().restoreAnimation();
 }
 
+void MyAvatar::restoreHandAnimation(bool isLeft) {
+    if (QThread::currentThread() != thread()) {
+        QMetaObject::invokeMethod(this, "restoreHandAnimation", Q_ARG(bool, isLeft));
+        return;
+    }
+    _skeletonModel->getRig().restoreHandAnimation(isLeft);
+}
+
 QStringList MyAvatar::getAnimationRoles() {
     if (QThread::currentThread() != thread()) {
         QStringList result;
diff --git a/interface/src/avatar/MyAvatar.h b/interface/src/avatar/MyAvatar.h
index edb686a6a6..d1838c65fc 100755
--- a/interface/src/avatar/MyAvatar.h
+++ b/interface/src/avatar/MyAvatar.h
@@ -576,6 +576,7 @@ public:
      * }, 3000);
      */
     Q_INVOKABLE void overrideAnimation(const QString& url, float fps, bool loop, float firstFrame, float lastFrame);
+    Q_INVOKABLE void overrideHandAnimation(bool isLeft, const QString& url, float fps, bool loop, float firstFrame, float lastFrame);
 
     /**jsdoc
      * Restores the default animations.
@@ -594,6 +595,7 @@ public:
      * }, 3000);
      */
     Q_INVOKABLE void restoreAnimation();
+    Q_INVOKABLE void restoreHandAnimation(bool isLeft);
 
     /**jsdoc
      * Gets the current animation roles.
diff --git a/libraries/animation/src/Rig.cpp b/libraries/animation/src/Rig.cpp
index 82ab067472..ab567ccedd 100644
--- a/libraries/animation/src/Rig.cpp
+++ b/libraries/animation/src/Rig.cpp
@@ -370,6 +370,88 @@ void Rig::restoreAnimation() {
     }
 }
 
+void Rig::overrideHandAnimation(bool isLeft, const QString& url, float fps, bool loop, float firstFrame, float lastFrame) {
+    HandAnimState::ClipNodeEnum clipNodeEnum;
+    if (isLeft) {
+        if (_leftHandAnimState.clipNodeEnum == HandAnimState::None || _leftHandAnimState.clipNodeEnum == HandAnimState::B) {
+            clipNodeEnum = HandAnimState::A;
+        } else {
+            clipNodeEnum = HandAnimState::B;
+        }
+    } else {
+        if (_rightHandAnimState.clipNodeEnum == HandAnimState::None || _rightHandAnimState.clipNodeEnum == HandAnimState::B) {
+            clipNodeEnum = HandAnimState::A;
+        } else {
+            clipNodeEnum = HandAnimState::B;
+        }
+    }
+
+    if (_animNode) {
+        std::shared_ptr<AnimClip> clip;
+        if (isLeft) {
+            if (clipNodeEnum == HandAnimState::A) {
+                clip = std::dynamic_pointer_cast<AnimClip>(_animNode->findByName("leftHandAnimA"));
+            } else {
+                clip = std::dynamic_pointer_cast<AnimClip>(_animNode->findByName("leftHandAnimB"));
+            }
+        } else {
+            if (clipNodeEnum == HandAnimState::A) {
+                clip = std::dynamic_pointer_cast<AnimClip>(_animNode->findByName("rightHandAnimA"));
+            } else {
+                clip = std::dynamic_pointer_cast<AnimClip>(_animNode->findByName("rightHandAnimB"));
+            }
+        }
+
+        if (clip) {
+            // set parameters
+            clip->setLoopFlag(loop);
+            clip->setStartFrame(firstFrame);
+            clip->setEndFrame(lastFrame);
+            const float REFERENCE_FRAMES_PER_SECOND = 30.0f;
+            float timeScale = fps / REFERENCE_FRAMES_PER_SECOND;
+            clip->setTimeScale(timeScale);
+            clip->loadURL(url);
+        }
+    }
+
+    // notify the handAnimStateMachine the desired state.
+    if (isLeft) {
+        // store current hand anim state.
+        _leftHandAnimState = { clipNodeEnum, url, fps, loop, firstFrame, lastFrame };
+        _animVars.set("leftHandAnimNone", false);
+        _animVars.set("leftHandAnimA", clipNodeEnum == HandAnimState::A);
+        _animVars.set("leftHandAnimB", clipNodeEnum == HandAnimState::B);
+    } else {
+        // store current hand anim state.
+        _rightHandAnimState = { clipNodeEnum, url, fps, loop, firstFrame, lastFrame };
+        _animVars.set("rightHandAnimNone", false);
+        _animVars.set("rightHandAnimA", clipNodeEnum == HandAnimState::A);
+        _animVars.set("rightHandAnimB", clipNodeEnum == HandAnimState::B);
+    }
+}
+
+void Rig::restoreHandAnimation(bool isLeft) {
+    if (isLeft) {
+        if (_leftHandAnimState.clipNodeEnum != HandAnimState::None) {
+            _leftHandAnimState.clipNodeEnum = HandAnimState::None;
+
+            // notify the handAnimStateMachine the desired state.
+            _animVars.set("leftHandAnimNone", true);
+            _animVars.set("leftHandAnimA", false);
+            _animVars.set("leftHandAnimB", false);
+        }
+    } else {
+        if (_rightHandAnimState.clipNodeEnum != HandAnimState::None) {
+            _rightHandAnimState.clipNodeEnum = HandAnimState::None;
+
+            // notify the handAnimStateMachine the desired state.
+            _animVars.set("rightHandAnimNone", true);
+            _animVars.set("rightHandAnimA", false);
+            _animVars.set("rightHandAnimB", false);
+        }
+    }
+}
+
 void Rig::overrideNetworkAnimation(const QString& url, float fps, bool loop, float firstFrame, float lastFrame) {
 
     NetworkAnimState::ClipNodeEnum clipNodeEnum = NetworkAnimState::None;
diff --git a/libraries/animation/src/Rig.h b/libraries/animation/src/Rig.h
index df13ff5c2b..c75bcf5651 100644
--- a/libraries/animation/src/Rig.h
+++ b/libraries/animation/src/Rig.h
@@ -118,6 +118,9 @@ public:
     void overrideAnimation(const QString& url, float fps, bool loop, float firstFrame, float lastFrame);
     void restoreAnimation();
     
+    void overrideHandAnimation(bool isLeft, const QString& url, float fps, bool loop, float firstFrame, float lastFrame);
+    void restoreHandAnimation(bool isLeft);
+
     void overrideNetworkAnimation(const QString& url, float fps, bool loop, float firstFrame, float lastFrame);
     void triggerNetworkRole(const QString& role);
     void restoreNetworkAnimation();
@@ -356,6 +359,27 @@ protected:
         float blendTime;
     };
 
+    struct HandAnimState {
+        enum ClipNodeEnum {
+            None = 0,
+            A,
+            B
+        };
+
+        HandAnimState() : clipNodeEnum(HandAnimState::None) {}
+        HandAnimState(ClipNodeEnum clipNodeEnumIn, const QString& urlIn, float fpsIn, bool loopIn, float firstFrameIn, float lastFrameIn) :
+            clipNodeEnum(clipNodeEnumIn), url(urlIn), fps(fpsIn), loop(loopIn), firstFrame(firstFrameIn), lastFrame(lastFrameIn) {
+        }
+
+
+        ClipNodeEnum clipNodeEnum;
+        QString url;
+        float fps;
+        bool loop;
+        float firstFrame;
+        float lastFrame;
+    };
+
     struct UserAnimState {
         enum ClipNodeEnum {
             None = 0,
@@ -390,6 +414,8 @@ protected:
 
     UserAnimState _userAnimState;
     NetworkAnimState _networkAnimState;
+    HandAnimState _rightHandAnimState;
+    HandAnimState _leftHandAnimState;
     std::map<QString, RoleAnimState> _roleAnimStates;
 
     float _leftHandOverlayAlpha { 0.0f };