diff --git a/examples/export/export.sh b/examples/export/export.sh index 2df12cab0..d1384dc33 100755 --- a/examples/export/export.sh +++ b/examples/export/export.sh @@ -23,6 +23,7 @@ rm -rf ../stretchyman/export/* rm -rf ../raptor/export/* rm -rf ../tank/export/* rm -rf ../vine/export/* +rm -rf ../test/export/* echo "" echo "Exporting..." @@ -93,6 +94,11 @@ echo "Exporting..." -i ../tank/images -o ../tank/export -n tank -p atlas-0.5.json \ -i ../tank/images -o ../tank/export -n tank-pma -p atlas-0.5-pma.json \ \ +-i ../test/test.spine -o ../test/export -e json.json \ +-i ../test/test.spine -o ../test/export -e binary.json \ +-i ../test/images -o ../test/export -n test -p atlas-0.5.json \ +-i ../test/images -o ../test/export -n test-pma -p atlas-0.5-pma.json \ +\ -i ../vine/vine.spine -o ../vine/export -e json.json \ -i ../vine/vine.spine -o ../vine/export -e binary.json \ -i ../vine/images -o ../vine/export -n vine -p atlas-1.0.json \ diff --git a/examples/export/runtimes.sh b/examples/export/runtimes.sh index 29443a423..0db4a1051 100755 --- a/examples/export/runtimes.sh +++ b/examples/export/runtimes.sh @@ -68,6 +68,36 @@ cp -f ../tank/export/tank.json ../../spine-cocos2dx/example/Resources/common/ cp -f ../tank/export/tank.atlas ../../spine-cocos2dx/example/Resources/common/ cp -f ../tank/export/tank.png ../../spine-cocos2dx/example/Resources/common/ +echo "spine-love" +rm -f ../../spine-love/data/* +cp -f ../goblins/export/goblins-mesh.json ../../spine-love/data +cp -f ../goblins/export/goblins.atlas ../../spine-love/data +cp -f ../goblins/export/goblins.png ../../spine-love/data + +cp -f ../raptor/export/raptor.json ../../spine-love/data +cp -f ../raptor/export/raptor.atlas ../../spine-love/data +cp -f ../raptor/export/raptor.png ../../spine-love/data + +cp -f ../spineboy/export/spineboy.json ../../spine-love/data +cp -f ../spineboy/export/spineboy.atlas ../../spine-love/data +cp -f ../spineboy/export/spineboy.png ../../spine-love/data + +cp -f ../tank/export/tank.json ../../spine-love/data +cp -f ../tank/export/tank.atlas ../../spine-love/data +cp -f ../tank/export/tank.png ../../spine-love/data + +cp -f ../vine/export/vine.json ../../spine-love/data +cp -f ../vine/export/vine.atlas ../../spine-love/data +cp -f ../vine/export/vine.png ../../spine-love/data + +cp -f ../stretchyman/export/stretchyman.json ../../spine-love/data +cp -f ../stretchyman/export/stretchyman.atlas ../../spine-love/data +cp -f ../stretchyman/export/stretchyman.png ../../spine-love/data + +cp -f ../test/export/test.json ../../spine-love/data +cp -f ../test/export/test.atlas ../../spine-love/data +cp -f ../test/export/test.png ../../spine-love/data + echo "spine-sfml" rm -f ../../spine-sfml/data/* cp -f ../goblins/export/goblins-mesh.json ../../spine-sfml/data/ diff --git a/examples/test/export/test-pma.atlas b/examples/test/export/test-pma.atlas new file mode 100644 index 000000000..01c4b7de1 --- /dev/null +++ b/examples/test/export/test-pma.atlas @@ -0,0 +1,20 @@ + +test-pma.png +size: 256,64 +format: RGBA8888 +filter: Linear,Linear +repeat: none +logo + rotate: false + xy: 193, 2 + size: 60, 60 + orig: 60, 60 + offset: 0, 0 + index: -1 +spine + rotate: false + xy: 2, 2 + size: 189, 60 + orig: 189, 60 + offset: 0, 0 + index: -1 diff --git a/examples/test/export/test-pma.png b/examples/test/export/test-pma.png new file mode 100644 index 000000000..6611ff0c2 Binary files /dev/null and b/examples/test/export/test-pma.png differ diff --git a/examples/test/export/test.atlas b/examples/test/export/test.atlas new file mode 100644 index 000000000..d4f7cb79c --- /dev/null +++ b/examples/test/export/test.atlas @@ -0,0 +1,20 @@ + +test.png +size: 256,64 +format: RGBA8888 +filter: Linear,Linear +repeat: none +logo + rotate: false + xy: 193, 2 + size: 60, 60 + orig: 60, 60 + offset: 0, 0 + index: -1 +spine + rotate: false + xy: 2, 2 + size: 189, 60 + orig: 189, 60 + offset: 0, 0 + index: -1 diff --git a/examples/test/export/test.json b/examples/test/export/test.json new file mode 100644 index 000000000..773d0b805 --- /dev/null +++ b/examples/test/export/test.json @@ -0,0 +1,278 @@ +{ +"skeleton": { "hash": "xbu5IFg+2tCx4+2MavNPurEogzA", "spine": "3.4.02", "width": 1333.78, "height": 1112.91, "images": "./images/" }, +"bones": [ + { "name": "root", "x": 28.68, "y": -105.71 }, + { "name": "attachment", "parent": "root", "x": -267.71, "y": -366.62 }, + { "name": "color", "parent": "root", "x": -298.29, "y": 44.1 }, + { "name": "draworder", "parent": "root", "x": 283.53, "y": -356.27 }, + { "name": "mesh", "parent": "root", "x": -320.74, "y": 413.7 }, + { "name": "meshweighted", "parent": "root", "rotation": -11.22, "x": -353.28, "y": 627.53 }, + { "name": "pathfollower", "parent": "root", "x": 177.52, "y": 56.62 }, + { "name": "rotate", "parent": "root", "x": -305, "y": 201 }, + { "name": "scale", "parent": "root", "x": 183.99, "y": -138 }, + { "name": "shear", "parent": "root", "x": -304, "y": -146 }, + { "name": "transformconstrainttarget", "parent": "root", "x": 604.27, "y": 420.7, "color": "abe323ff" }, + { "name": "transformconstrained", "parent": "root", "x": 169.6, "y": 420.7 }, + { "name": "translate", "parent": "root", "x": 190.99, "y": 201, "color": "abe323ff" } +], +"slots": [ + { "name": "images/spine", "bone": "translate", "attachment": "images/spine" }, + { "name": "images/spine2", "bone": "rotate", "attachment": "images/spine" }, + { "name": "images/spine3", "bone": "scale", "attachment": "images/spine" }, + { "name": "images/spine4", "bone": "shear", "attachment": "images/spine" }, + { "name": "images/spine5", "bone": "color", "attachment": "images/spine" }, + { "name": "path2", "bone": "root", "attachment": "path" }, + { "name": "images/spine6", "bone": "pathfollower", "attachment": "images/spine" }, + { "name": "images/spine7", "bone": "transformconstrained", "attachment": "images/spine" }, + { "name": "images/spine8", "bone": "transformconstrainttarget", "attachment": "images/spine" }, + { "name": "images/spine9", "bone": "mesh", "attachment": "images/spine" }, + { "name": "images/spine10", "bone": "attachment", "attachment": "images/logo" }, + { "name": "draworder2", "bone": "draworder", "attachment": "images/logo" }, + { "name": "draworder1", "bone": "draworder", "attachment": "images/spine" }, + { "name": "images/spine12", "bone": "meshweighted", "attachment": "linkedmesh" } +], +"transform": [ + { + "name": "transformconstraint", + "bones": [ "transformconstrained" ], + "target": "transformconstrainttarget", + "x": -400, + "rotateMix": 0.509, + "translateMix": 0.509, + "scaleMix": 0.509, + "shearMix": 0.509 + } +], +"path": [ + { + "name": "pathconstraint", + "bones": [ "pathfollower" ], + "target": "path2", + "rotation": 34.2 + } +], +"skins": { + "default": { + "draworder1": { + "images/spine": { "path": "spine", "width": 377, "height": 120 } + }, + "draworder2": { + "images/logo": { "path": "logo", "width": 120, "height": 120 } + }, + "images/spine": { + "images/spine": { "path": "spine", "width": 377, "height": 120 } + }, + "images/spine10": { + "images/logo": { "path": "logo", "width": 120, "height": 120 }, + "images/spine": { "path": "spine", "width": 377, "height": 120 } + }, + "images/spine12": { + "images/spine": { + "type": "mesh", + "path": "spine", + "uvs": [ 0, 0, 0.25, 0, 0.5, 0, 0.75, 0, 1, 0, 1, 0.25, 1, 0.5, 1, 0.75, 1, 1, 0.75, 1, 0.5, 1, 0.25, 1, 0, 1, 0, 0.75, 0, 0.5, 0, 0.25, 0.25, 0.25, 0.25, 0.5, 0.25, 0.75, 0.5, 0.25, 0.5, 0.5, 0.5, 0.75, 0.75, 0.25, 0.75, 0.5, 0.75, 0.75 ], + "triangles": [ 15, 0, 1, 16, 1, 2, 15, 1, 16, 19, 2, 3, 16, 2, 19, 22, 3, 4, 19, 3, 22, 22, 4, 5, 14, 15, 16, 17, 16, 19, 14, 16, 17, 20, 19, 22, 17, 19, 20, 23, 22, 5, 20, 22, 23, 23, 5, 6, 13, 14, 17, 18, 17, 20, 13, 17, 18, 21, 20, 23, 18, 20, 21, 24, 23, 6, 21, 23, 24, 24, 6, 7, 12, 13, 18, 11, 18, 21, 12, 18, 11, 10, 21, 24, 11, 21, 10, 9, 24, 7, 10, 24, 9, 9, 7, 8 ], + "vertices": [ 1, 5, -194.67, 21.29, 1, 1, 5, -102.08, 38.91, 1, 1, 5, -9.49, 56.54, 1, 1, 5, 83.08, 74.16, 1, 1, 5, 175.67, 91.79, 1, 1, 5, 181.28, 62.32, 1, 1, 5, 186.89, 32.84, 1, 1, 5, 192.5, 3.38, 1, 1, 5, 198.11, -26.09, 1, 1, 5, 105.52, -43.71, 1, 1, 5, 12.94, -61.33, 1, 1, 5, -79.64, -78.96, 1, 1, 5, -172.23, -96.58, 1, 1, 5, -177.84, -67.11, 1, 1, 5, -183.45, -37.64, 1, 1, 5, -189.06, -8.17, 1, 1, 5, -96.47, 9.45, 1, 1, 5, -90.86, -20.01, 1, 1, 5, -85.25, -49.48, 1, 1, 5, -3.88, 27.07, 1, 1, 5, 1.72, -2.39, 1, 1, 5, 7.33, -31.86, 1, 1, 5, 88.7, 44.69, 1, 1, 5, 94.31, 15.22, 1, 1, 5, 99.92, -14.24, 1 ], + "hull": 16, + "edges": [ 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 18, 20, 20, 22, 22, 24, 24, 26, 26, 28, 28, 30, 30, 0 ], + "width": 377, + "height": 120 + }, + "linkedmesh": { "type": "linkedmesh", "path": "logo", "parent": "images/spine", "width": 120, "height": 120 } + }, + "images/spine2": { + "images/spine": { "path": "spine", "width": 377, "height": 120 } + }, + "images/spine3": { + "images/spine": { "path": "spine", "width": 377, "height": 120 } + }, + "images/spine4": { + "images/spine": { "path": "spine", "rotation": 0.15, "width": 377, "height": 120 } + }, + "images/spine5": { + "images/spine": { "path": "spine", "width": 377, "height": 120 } + }, + "images/spine6": { + "images/spine": { "path": "spine", "width": 377, "height": 120 } + }, + "images/spine7": { + "images/spine": { "path": "spine", "width": 377, "height": 120 } + }, + "images/spine8": { + "images/spine": { "path": "spine", "width": 377, "height": 120 } + }, + "images/spine9": { + "images/spine": { + "type": "mesh", + "path": "spine", + "uvs": [ 1, 0.50124, 1, 1, 0.72412, 1, 0.49981, 1, 0.28581, 1, 0, 1, 0, 0.50124, 0, 0, 0.49207, 0, 1, 0, 0.56941, 0.57414, 0.84014, 0.50124, 0.61841, 0.22584, 0.20589, 0.20154, 0.19558, 0.67134, 0.39152, 0.86574, 0.3941, 0.41214, 0.3941, 0.12864, 0.76021, 0.19344, 0.76537, 0.59034, 0.74474, 0.84144, 0.57716, 0.81714 ], + "triangles": [ 17, 7, 8, 18, 8, 9, 13, 7, 17, 12, 8, 18, 17, 8, 12, 16, 17, 12, 13, 17, 16, 6, 7, 13, 6, 13, 16, 18, 9, 0, 11, 18, 0, 10, 16, 12, 12, 18, 11, 10, 12, 11, 19, 10, 11, 14, 6, 16, 14, 16, 10, 21, 10, 19, 15, 14, 10, 20, 21, 19, 21, 15, 10, 5, 6, 14, 4, 5, 14, 15, 4, 14, 3, 15, 21, 4, 15, 3, 2, 21, 20, 3, 21, 2, 19, 11, 0, 0, 20, 19, 1, 20, 0, 2, 20, 1 ], + "vertices": [ 191.41, -1.12, 191.41, -60.97, 87.4, -60.97, 2.84, -60.97, -77.82, -60.97, -185.58, -60.97, -185.58, -1.12, -185.58, 59.02, -0.07, 59.02, 191.41, 59.02, 29.09, -9.85, 131.14, -1.12, 47.55, 31.92, -107.96, 34.84, -111.85, -21.53, -37.97, -44.86, -37, 9.57, -37, 43.59, 101.01, 35.81, 102.96, -11.81, 95.18, -41.93, 32, -39.02 ], + "hull": 10, + "edges": [ 10, 12, 12, 14, 14, 16, 16, 18, 2, 0, 0, 18, 6, 8, 8, 10, 2, 4, 4, 6 ], + "width": 377, + "height": 120 + } + }, + "path2": { + "path": { + "type": "path", + "closed": true, + "lengths": [ 128.85, 310.24, 465.06, 600.88, 773.97 ], + "vertexCount": 15, + "vertices": [ 258.07, -42.67, 291.94, -17.53, 326.41, 7.22, 391.41, 2.75, 398.05, 46.72, 399.83, 84.07, 274.03, 106.4, 236.7, 117.74, 199.37, 129.09, 116.55, 135.12, 84.41, 115.47, 50.34, 94.04, 56.53, 1.48, 89.01, -5.59, 122.89, -13.58 ] + } + } + } +}, +"animations": { + "animation": { + "slots": { + "images/spine5": { + "color": [ + { "time": 0, "color": "ffffffff" }, + { "time": 0.4333, "color": "ff0901ff" }, + { "time": 0.9, "color": "2dff00ff" }, + { "time": 1.3333, "color": "ffffffff" } + ] + }, + "images/spine10": { + "attachment": [ + { "time": 0, "name": "images/spine" }, + { "time": 0.6666, "name": "images/logo" }, + { "time": 1.3333, "name": "images/spine" } + ] + }, + "images/spine12": { + "attachment": [ + { "time": 0, "name": "images/spine" }, + { "time": 0.6666, "name": "linkedmesh" } + ] + } + }, + "bones": { + "translate": { + "translate": [ + { + "time": 0, + "x": 0, + "y": 0, + "curve": [ 1, 0, 0, 1 ] + }, + { "time": 0.6666, "x": 96.99, "y": -151 }, + { "time": 1.3333, "x": 0, "y": 0 } + ] + }, + "scale": { + "scale": [ + { "time": 0, "x": 1, "y": 1 }, + { "time": 0.6666, "x": 1, "y": 2.34 }, + { "time": 1.3333, "x": 1, "y": 1 } + ] + }, + "rotate": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.6666, "angle": -125.34 }, + { "time": 1.3333, "angle": 0 } + ] + }, + "shear": { + "shear": [ + { "time": 0, "x": 0, "y": 0 }, + { "time": 0.6666, "x": 29.4, "y": 0 }, + { "time": 1.3333, "x": 0, "y": 0 } + ] + }, + "transformconstrainttarget": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.6666, "angle": -74.6 }, + { "time": 1.3333, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 }, + { "time": 0.6666, "x": 176.22, "y": -170.34 }, + { "time": 1.3333, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 }, + { "time": 0.6666, "x": 2, "y": 2 }, + { "time": 1.3333, "x": 1, "y": 1 } + ], + "shear": [ + { "time": 0, "x": 0, "y": 0 }, + { "time": 0.6666, "x": 23.4, "y": 0 }, + { "time": 1.3333, "x": 0, "y": 0 } + ] + } + }, + "transform": { + "transformconstraint": [ + { "time": 0, "rotateMix": 0.509, "translateMix": 0.509, "scaleMix": 0.509, "shearMix": 0.509 }, + { "time": 0.6666 }, + { "time": 1.3333, "rotateMix": 0.5, "translateMix": 0.5, "scaleMix": 0.5, "shearMix": 0.5 } + ] + }, + "paths": { + "pathconstraint": { + "position": [ + { "time": 0 }, + { "time": 1.3333, "position": 1 } + ], + "spacing": [ + { "time": 0, "spacing": 40.1 }, + { "time": 1.3333 } + ], + "mix": [ + { "time": 0.6666, "rotateMix": 0.473, "translateMix": 0.473 }, + { "time": 1.3333 } + ] + } + }, + "deform": { + "default": { + "images/spine9": { + "images/spine": [ + { "time": 0 }, + { + "time": 0.6666, + "vertices": [ 43.09784, 58.11693, 0, 0, 0, 0, -0.653, -57.46399, -50.93396, -47.01593, -43.098, -24.81398, -43.098, -24.81399, -1.0E-5, 1.0E-5, 0, 1.0E-5, 43.09784, 58.11695, 0, 0, 43.09784, 58.11693, 1.0E-5, -1.0E-5, 0, 0, -43.09797, -24.81399, 0, 1.0E-5, 0, 0, 0, 0, 43.09784, 58.11694, 43.09784, 58.11693 ] + }, + { "time": 1.3333 } + ] + }, + "images/spine12": { + "images/spine": [ + { "time": 0 }, + { + "time": 0.3333, + "offset": 4, + "vertices": [ -9.45232, 83.5133, -3.90008, 44.76635, -3.90008, 44.76635, -3.90008, 44.76635, 0, 0, 0, 0, 0, 0, 0, 0, 5.15667, -29.57763, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3.90008, 44.76635 ] + }, + { "time": 0.6666 }, + { + "time": 0.6679, + "vertices": [ -1.21159, -14.52716, -2.76092, -7.75683, -4.30999, -0.98669, 2.38385, 9.78289, -1.56903, 5.49316, -2.93444, 6.75128, -4.30011, 8.00933, -5.66552, 9.2677, -7.031, 10.52575, -3.07855, 14.81561, 4.30986, 0.9859, 5.85907, -5.78436, 7.40826, -12.55462, 5.25317, -13.04797, 3.09832, -13.54083, 0.94323, -14.03411, -0.60595, -7.26379, 1.54907, -6.77056, 3.70422, -6.27746, -2.15495, -0.49346, 0, -3.0E-4, 2.15495, 0.49273, 1.01812, 11.04132, -0.3471, 12.29895, -1.71313, 13.557 ] + }, + { + "time": 1.3333, + "vertices": [ -10.57342, 25.16797, -9.16716, 14.48486, -7.76074, 3.80212, 131.25482, 21.05285, 128.23181, -0.04534, 121.51611, 0.91668, 114.80023, 1.8789, 108.08459, 2.84124, 101.3689, 3.80316, 104.39154, 24.90191, -21.3623, 2.01171, -22.76855, 12.69433, -24.17505, 23.37719, -20.77471, 23.82476, -17.37414, 24.27276, -13.97393, 24.72009, -12.56768, 14.03753, -15.96789, 13.58978, -19.36809, 13.14215, -11.16095, 3.35455, -14.56134, 2.90704, -17.96167, 2.45922, 124.53894, 22.01538, 117.82336, 22.97705, 111.10718, 23.93933 ] + } + ] + } + } + }, + "drawOrder": [ + { "time": 0 }, + { + "time": 0.6666, + "offsets": [ + { "slot": "draworder2", "offset": 1 } + ] + }, + { "time": 1.3333 } + ] + } +} +} \ No newline at end of file diff --git a/examples/test/export/test.png b/examples/test/export/test.png new file mode 100644 index 000000000..b84ab7251 Binary files /dev/null and b/examples/test/export/test.png differ diff --git a/examples/test/export/test.skel b/examples/test/export/test.skel new file mode 100644 index 000000000..d07be9a56 Binary files /dev/null and b/examples/test/export/test.skel differ diff --git a/examples/test/images/logo.png b/examples/test/images/logo.png new file mode 100644 index 000000000..b43595805 Binary files /dev/null and b/examples/test/images/logo.png differ diff --git a/examples/test/images/spine.png b/examples/test/images/spine.png new file mode 100644 index 000000000..8592fcf9b Binary files /dev/null and b/examples/test/images/spine.png differ diff --git a/examples/test/test.spine b/examples/test/test.spine new file mode 100644 index 000000000..f9c6e670b Binary files /dev/null and b/examples/test/test.spine differ diff --git a/spine-as3/spine-as3/src/spine/animation/ShearTimeline.as b/spine-as3/spine-as3/src/spine/animation/ShearTimeline.as index 7c9fdf0f3..3ea018421 100644 --- a/spine-as3/spine-as3/src/spine/animation/ShearTimeline.as +++ b/spine-as3/spine-as3/src/spine/animation/ShearTimeline.as @@ -1,34 +1,65 @@ -package spine.animation { - import spine.Event; - import spine.Skeleton; - import spine.Bone; +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.3 + * + * Copyright (c) 2013-2015, Esoteric Software + * All rights reserved. + * + * You are granted a perpetual, non-exclusive, non-sublicensable and + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), you may not (a) modify, + * translate, adapt or otherwise create derivative works, improvements of the + * Software or develop new applications using the Software or (b) remove, + * delete, alter or obscure any trademarks or any copyright, trademark, patent + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL ESOTERIC SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ -public class ShearTimeline extends TranslateTimeline { - public function ShearTimeline (frameCount:int) { - super(frameCount); - } - - override public function apply (skeleton:Skeleton, lastTime:Number, time:Number, firedEvents:Vector., alpha:Number) : void { - var frames:Vector. = this.frames; - if (time < frames[0]) return; // Time is before first frame. - - var bone:Bone = skeleton.bones[boneIndex]; - if (time >= frames[frames.length - ENTRIES]) { // Time is after last frame. - bone.shearX += (bone.data.shearX + frames[frames.length + PREV_X] - bone.shearX) * alpha; - bone.shearY += (bone.data.shearY + frames[frames.length + PREV_Y] - bone.shearY) * alpha; - return; - } - - // Interpolate between the previous frame and the current frame. - var frame:int = Animation.binarySearch(frames, time, ENTRIES); - var prevX:Number = frames[frame + PREV_X]; - var prevY:Number = frames[frame + PREV_Y]; - var frameTime:Number = frames[frame]; - var percent:Number = getCurvePercent(frame / ENTRIES - 1, 1 - (time - frameTime) / (frames[frame + PREV_TIME] - frameTime)); - - bone.shearX += (bone.data.shearX + (prevX + (frames[frame + X] - prevX) * percent) - bone.shearX) * alpha; - bone.shearY += (bone.data.shearY + (prevY + (frames[frame + Y] - prevY) * percent) - bone.shearY) * alpha; - } +package spine.animation { + import spine.Event; + import spine.Skeleton; + import spine.Bone; + +public class ShearTimeline extends TranslateTimeline { + public function ShearTimeline (frameCount:int) { + super(frameCount); + } + + override public function apply (skeleton:Skeleton, lastTime:Number, time:Number, firedEvents:Vector., alpha:Number) : void { + var frames:Vector. = this.frames; + if (time < frames[0]) return; // Time is before first frame. + + var bone:Bone = skeleton.bones[boneIndex]; + if (time >= frames[frames.length - ENTRIES]) { // Time is after last frame. + bone.shearX += (bone.data.shearX + frames[frames.length + PREV_X] - bone.shearX) * alpha; + bone.shearY += (bone.data.shearY + frames[frames.length + PREV_Y] - bone.shearY) * alpha; + return; + } + + // Interpolate between the previous frame and the current frame. + var frame:int = Animation.binarySearch(frames, time, ENTRIES); + var prevX:Number = frames[frame + PREV_X]; + var prevY:Number = frames[frame + PREV_Y]; + var frameTime:Number = frames[frame]; + var percent:Number = getCurvePercent(frame / ENTRIES - 1, 1 - (time - frameTime) / (frames[frame + PREV_TIME] - frameTime)); + + bone.shearX += (bone.data.shearX + (prevX + (frames[frame + X] - prevX) * percent) - bone.shearX) * alpha; + bone.shearY += (bone.data.shearY + (prevY + (frames[frame + Y] - prevY) * percent) - bone.shearY) * alpha; + } +} + } - -} \ No newline at end of file diff --git a/spine-cocos2dx/README.md b/spine-cocos2dx/README.md index d46d9356c..680e0537b 100644 --- a/spine-cocos2dx/README.md +++ b/spine-cocos2dx/README.md @@ -44,7 +44,7 @@ The Spine cocos2d-x example works on Windows and Mac OS X. 9. Right click the `spine-cocos2d-x` project in the solution explorer and select `Set as Startup Project` from the context menu 10. Click `Local Windows Debugger` to run the example -### Mac OS X +### macOS/iOS 1. Install [Xcode](https://developer.apple.com/xcode/) 2. Install [Homebrew](http://brew.sh/) 3. Open a terminal and install CMake via `brew install cmake` @@ -55,6 +55,19 @@ The Spine cocos2d-x example works on Windows and Mac OS X. 7. Expand the `cocos2d_libs.xcodeproj` sub project, delete the group `editor-support/spine`. This will remove the outdated Spine cocos2d-x runtime shipped by cocos2d-x. 8. Click the `Run` button or type `CMD+R` to run the example +### Android +1. Install the prerequisits for [cocos2d-x Android development](http://www.cocos2d-x.org/docs/installation/Android-terminal/) +2. Install [Homebrew](http://brew.sh/) +3. Open a terminal and install CMake via `brew install cmake` +3. Download the Spine Runtimes repository using git (`git clone https://github.com/esotericsoftware/spine-runtimes`) or download it [as a zip](https://github.com/EsotericSoftware/spine-runtimes/archive/master.zip) +4. Open a terminal, and `cd` into the `spine-runtimes/spine-cocos2dx` folder +5. Type `mkdir build && cd build && cmake ../..`. This will download the cocos2d-x dependency and wire it up with the example source code in `spine-runtimes/spine-cocos2dx/example`. The download is 400mb, so get yourself a cup of tea. +6. Delete `spine-runtimes/spine-cocos2dx/example/cocos2d/cocos/editor-support/spine` +7. Open `spine-runtimes/spine-cocos2dx/example/cocos2d/cocos/Android.mk` and remove the lines `LOCAL_STATIC_LIBRARIES += spine_static` and `$(call import-module,editor-support/spine) +8. Switch to `spine-runtimes/spine-cocos2dx/example/proj.android/jni` and execute `cocos compile -p android -m debug --ndk-mode debug` to compile the example for Android +9. In the same directory, execute `cocos run -p android -m debug` to deploy to the device +10. For debugging, run `ndk-debug` in the `proj.android/jni` folder. This will attach to the running app via GDB. + ## Notes - Images are premultiplied by cocos2d-x, so the Spine atlas images should *not* use premultiplied alpha. @@ -64,4 +77,3 @@ The Spine cocos2d-x example works on Windows and Mac OS X. - [Raptor](https://github.com/EsotericSoftware/spine-runtimes/blob/master/spine-cocos2dx/example/Classes/RaptorExample.cpp) - [Spineboy](https://github.com/EsotericSoftware/spine-runtimes/blob/master/spine-cocos2dx/example/Classes/SpineboyExample.cpp) - [Golbins](https://github.com/EsotericSoftware/spine-runtimes/blob/master/spine-cocos2dx/example/Classes/GoblinsExample.cpp) - diff --git a/spine-cocos2dx/example/.gitignore b/spine-cocos2dx/example/.gitignore new file mode 100644 index 000000000..b7cb5da78 --- /dev/null +++ b/spine-cocos2dx/example/.gitignore @@ -0,0 +1,5 @@ +bin/ +proj.android/bin/ +proj.android/assets/ +proj.android/libs/ +proj.android/obj/ \ No newline at end of file diff --git a/spine-cocos2dx/example/proj.android/.classpath b/spine-cocos2dx/example/proj.android/.classpath new file mode 100755 index 000000000..d57ec0251 --- /dev/null +++ b/spine-cocos2dx/example/proj.android/.classpath @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/spine-cocos2dx/example/proj.android/.cproject b/spine-cocos2dx/example/proj.android/.cproject new file mode 100755 index 000000000..1c27b3670 --- /dev/null +++ b/spine-cocos2dx/example/proj.android/.cproject @@ -0,0 +1,185 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/spine-cocos2dx/example/proj.android/.externalToolBuilders/org.eclipse.cdt.managedbuilder.core.genmakebuilder.launch b/spine-cocos2dx/example/proj.android/.externalToolBuilders/org.eclipse.cdt.managedbuilder.core.genmakebuilder.launch new file mode 100755 index 000000000..e82f6ae04 --- /dev/null +++ b/spine-cocos2dx/example/proj.android/.externalToolBuilders/org.eclipse.cdt.managedbuilder.core.genmakebuilder.launch @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/spine-cocos2dx/example/proj.android/.project b/spine-cocos2dx/example/proj.android/.project new file mode 100755 index 000000000..f34ec2548 --- /dev/null +++ b/spine-cocos2dx/example/proj.android/.project @@ -0,0 +1,71 @@ + + + spine-cocos2dx-example + + + libcocos2dx + + + + com.android.ide.eclipse.adt.ResourceManagerBuilder + + + + + com.android.ide.eclipse.adt.PreCompilerBuilder + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.ui.externaltools.ExternalToolBuilder + full,incremental, + + + LaunchConfigHandle + <project>/.externalToolBuilders/org.eclipse.cdt.managedbuilder.core.genmakebuilder.launch + + + + + com.android.ide.eclipse.adt.ApkBuilder + + + + + org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder + full,incremental, + + + + + + com.android.ide.eclipse.adt.AndroidNature + org.eclipse.jdt.core.javanature + org.eclipse.cdt.core.cnature + org.eclipse.cdt.core.ccnature + org.eclipse.cdt.managedbuilder.core.managedBuildNature + org.eclipse.cdt.managedbuilder.core.ScannerConfigNature + + + + Classes + 2 + $%7BPARENT-1-PROJECT_LOC%7D/Classes + + + cocos2d + 2 + $%7BPARENT-1-PROJECT_LOC%7D/cocos2d + + + libcocos2d + 2 + PARENT-1-PROJECT_LOC/cocos2d/cocos/platform/android/java/src + + + diff --git a/spine-cocos2dx/example/proj.android/.settings/org.eclipse.cdt.codan.core.prefs b/spine-cocos2dx/example/proj.android/.settings/org.eclipse.cdt.codan.core.prefs new file mode 100755 index 000000000..777dc0a30 --- /dev/null +++ b/spine-cocos2dx/example/proj.android/.settings/org.eclipse.cdt.codan.core.prefs @@ -0,0 +1,68 @@ +eclipse.preferences.version=1 +org.eclipse.cdt.codan.checkers.errnoreturn=Warning +org.eclipse.cdt.codan.checkers.errnoreturn.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},implicit\=>false} +org.eclipse.cdt.codan.checkers.errreturnvalue=-Error +org.eclipse.cdt.codan.checkers.errreturnvalue.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}} +org.eclipse.cdt.codan.checkers.noreturn=-Error +org.eclipse.cdt.codan.checkers.noreturn.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},implicit\=>false} +org.eclipse.cdt.codan.internal.checkers.AbstractClassCreation=-Error +org.eclipse.cdt.codan.internal.checkers.AbstractClassCreation.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}} +org.eclipse.cdt.codan.internal.checkers.AmbiguousProblem=-Error +org.eclipse.cdt.codan.internal.checkers.AmbiguousProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}} +org.eclipse.cdt.codan.internal.checkers.AssignmentInConditionProblem=Warning +org.eclipse.cdt.codan.internal.checkers.AssignmentInConditionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}} +org.eclipse.cdt.codan.internal.checkers.AssignmentToItselfProblem=-Error +org.eclipse.cdt.codan.internal.checkers.AssignmentToItselfProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}} +org.eclipse.cdt.codan.internal.checkers.CaseBreakProblem=Warning +org.eclipse.cdt.codan.internal.checkers.CaseBreakProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},no_break_comment\=>"no break",last_case_param\=>false,empty_case_param\=>false} +org.eclipse.cdt.codan.internal.checkers.CatchByReference=Warning +org.eclipse.cdt.codan.internal.checkers.CatchByReference.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},unknown\=>false,exceptions\=>()} +org.eclipse.cdt.codan.internal.checkers.CircularReferenceProblem=-Error +org.eclipse.cdt.codan.internal.checkers.CircularReferenceProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}} +org.eclipse.cdt.codan.internal.checkers.ClassMembersInitialization=Warning +org.eclipse.cdt.codan.internal.checkers.ClassMembersInitialization.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},skip\=>true} +org.eclipse.cdt.codan.internal.checkers.FieldResolutionProblem=-Error +org.eclipse.cdt.codan.internal.checkers.FieldResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}} +org.eclipse.cdt.codan.internal.checkers.FunctionResolutionProblem=-Error +org.eclipse.cdt.codan.internal.checkers.FunctionResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}} +org.eclipse.cdt.codan.internal.checkers.InvalidArguments=-Error +org.eclipse.cdt.codan.internal.checkers.InvalidArguments.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}} +org.eclipse.cdt.codan.internal.checkers.InvalidTemplateArgumentsProblem=-Error +org.eclipse.cdt.codan.internal.checkers.InvalidTemplateArgumentsProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}} +org.eclipse.cdt.codan.internal.checkers.LabelStatementNotFoundProblem=-Error +org.eclipse.cdt.codan.internal.checkers.LabelStatementNotFoundProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}} +org.eclipse.cdt.codan.internal.checkers.MemberDeclarationNotFoundProblem=-Error +org.eclipse.cdt.codan.internal.checkers.MemberDeclarationNotFoundProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}} +org.eclipse.cdt.codan.internal.checkers.MethodResolutionProblem=-Error +org.eclipse.cdt.codan.internal.checkers.MethodResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}} +org.eclipse.cdt.codan.internal.checkers.NamingConventionFunctionChecker=-Info +org.eclipse.cdt.codan.internal.checkers.NamingConventionFunctionChecker.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},pattern\=>"^[a-z]",macro\=>true,exceptions\=>()} +org.eclipse.cdt.codan.internal.checkers.NonVirtualDestructorProblem=Warning +org.eclipse.cdt.codan.internal.checkers.NonVirtualDestructorProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}} +org.eclipse.cdt.codan.internal.checkers.OverloadProblem=-Error +org.eclipse.cdt.codan.internal.checkers.OverloadProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}} +org.eclipse.cdt.codan.internal.checkers.RedeclarationProblem=-Error +org.eclipse.cdt.codan.internal.checkers.RedeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}} +org.eclipse.cdt.codan.internal.checkers.RedefinitionProblem=-Error +org.eclipse.cdt.codan.internal.checkers.RedefinitionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}} +org.eclipse.cdt.codan.internal.checkers.ReturnStyleProblem=-Warning +org.eclipse.cdt.codan.internal.checkers.ReturnStyleProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}} +org.eclipse.cdt.codan.internal.checkers.ScanfFormatStringSecurityProblem=-Warning +org.eclipse.cdt.codan.internal.checkers.ScanfFormatStringSecurityProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}} +org.eclipse.cdt.codan.internal.checkers.StatementHasNoEffectProblem=Warning +org.eclipse.cdt.codan.internal.checkers.StatementHasNoEffectProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},macro\=>true,exceptions\=>()} +org.eclipse.cdt.codan.internal.checkers.SuggestedParenthesisProblem=Warning +org.eclipse.cdt.codan.internal.checkers.SuggestedParenthesisProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},paramNot\=>false} +org.eclipse.cdt.codan.internal.checkers.SuspiciousSemicolonProblem=Warning +org.eclipse.cdt.codan.internal.checkers.SuspiciousSemicolonProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},else\=>false,afterelse\=>false} +org.eclipse.cdt.codan.internal.checkers.TypeResolutionProblem=-Error +org.eclipse.cdt.codan.internal.checkers.TypeResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}} +org.eclipse.cdt.codan.internal.checkers.UnusedFunctionDeclarationProblem=Warning +org.eclipse.cdt.codan.internal.checkers.UnusedFunctionDeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},macro\=>true} +org.eclipse.cdt.codan.internal.checkers.UnusedStaticFunctionProblem=Warning +org.eclipse.cdt.codan.internal.checkers.UnusedStaticFunctionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},macro\=>true} +org.eclipse.cdt.codan.internal.checkers.UnusedVariableDeclarationProblem=Warning +org.eclipse.cdt.codan.internal.checkers.UnusedVariableDeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},macro\=>true,exceptions\=>("@(\#)","$Id")} +org.eclipse.cdt.codan.internal.checkers.VariableResolutionProblem=-Error +org.eclipse.cdt.codan.internal.checkers.VariableResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}} +useParentScope=false diff --git a/spine-cocos2dx/example/proj.android/.settings/org.eclipse.cdt.core.prefs b/spine-cocos2dx/example/proj.android/.settings/org.eclipse.cdt.core.prefs new file mode 100755 index 000000000..f91f6d500 --- /dev/null +++ b/spine-cocos2dx/example/proj.android/.settings/org.eclipse.cdt.core.prefs @@ -0,0 +1,3 @@ +eclipse.preferences.version=1 +environment/project/0.1230402123/append=true +environment/project/0.1230402123/appendContributed=true diff --git a/spine-cocos2dx/example/proj.android/.settings/org.eclipse.ltk.core.refactoring.prefs b/spine-cocos2dx/example/proj.android/.settings/org.eclipse.ltk.core.refactoring.prefs new file mode 100755 index 000000000..b196c64a3 --- /dev/null +++ b/spine-cocos2dx/example/proj.android/.settings/org.eclipse.ltk.core.refactoring.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +org.eclipse.ltk.core.refactoring.enable.project.refactoring.history=false diff --git a/spine-cocos2dx/example/proj.android/AndroidManifest.xml b/spine-cocos2dx/example/proj.android/AndroidManifest.xml new file mode 100755 index 000000000..2139ad1a6 --- /dev/null +++ b/spine-cocos2dx/example/proj.android/AndroidManifest.xml @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/spine-cocos2dx/example/proj.android/ant.properties b/spine-cocos2dx/example/proj.android/ant.properties new file mode 100755 index 000000000..b0971e891 --- /dev/null +++ b/spine-cocos2dx/example/proj.android/ant.properties @@ -0,0 +1,17 @@ +# This file is used to override default values used by the Ant build system. +# +# This file must be checked into Version Control Systems, as it is +# integral to the build system of your project. + +# This file is only used by the Ant script. + +# You can use this to override default values such as +# 'source.dir' for the location of your java source folder and +# 'out.dir' for the location of your output folder. + +# You can also use it define how the release builds are signed by declaring +# the following properties: +# 'key.store' for the location of your keystore and +# 'key.alias' for the name of the key to use. +# The password will be asked during the build when you use the 'release' target. + diff --git a/spine-cocos2dx/example/proj.android/build-cfg.json b/spine-cocos2dx/example/proj.android/build-cfg.json new file mode 100755 index 000000000..611f232c3 --- /dev/null +++ b/spine-cocos2dx/example/proj.android/build-cfg.json @@ -0,0 +1,13 @@ +{ + "ndk_module_path" :[ + "../cocos2d", + "../cocos2d/cocos", + "../cocos2d/external" + ], + "copy_resources": [ + { + "from": "../Resources", + "to": "" + } + ] +} diff --git a/spine-cocos2dx/example/proj.android/build.xml b/spine-cocos2dx/example/proj.android/build.xml new file mode 100755 index 000000000..0f6747c7f --- /dev/null +++ b/spine-cocos2dx/example/proj.android/build.xml @@ -0,0 +1,83 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/spine-cocos2dx/example/proj.android/gen/R.java.d b/spine-cocos2dx/example/proj.android/gen/R.java.d new file mode 100644 index 000000000..f55f34422 --- /dev/null +++ b/spine-cocos2dx/example/proj.android/gen/R.java.d @@ -0,0 +1,6 @@ +/Users/badlogic/workspaces/esotericsoftware/spine-runtimes/spine-cocos2dx/example/proj.android/gen/com/esotericsoftware/cocos2dx/R.java \ + : /Users/badlogic/workspaces/esotericsoftware/spine-runtimes/spine-cocos2dx/example/proj.android/res/drawable-hdpi/icon.png \ +/Users/badlogic/workspaces/esotericsoftware/spine-runtimes/spine-cocos2dx/example/proj.android/res/drawable-ldpi/icon.png \ +/Users/badlogic/workspaces/esotericsoftware/spine-runtimes/spine-cocos2dx/example/proj.android/res/drawable-mdpi/icon.png \ +/Users/badlogic/workspaces/esotericsoftware/spine-runtimes/spine-cocos2dx/example/proj.android/res/values/strings.xml \ +/Users/badlogic/workspaces/esotericsoftware/spine-runtimes/spine-cocos2dx/example/proj.android/bin/AndroidManifest.xml \ diff --git a/spine-cocos2dx/example/proj.android/gen/com/esotericsoftware/cocos2dx/BuildConfig.java b/spine-cocos2dx/example/proj.android/gen/com/esotericsoftware/cocos2dx/BuildConfig.java new file mode 100644 index 000000000..c36728da1 --- /dev/null +++ b/spine-cocos2dx/example/proj.android/gen/com/esotericsoftware/cocos2dx/BuildConfig.java @@ -0,0 +1,6 @@ +/** Automatically generated file. DO NOT MODIFY */ +package com.esotericsoftware.cocos2dx; + +public final class BuildConfig { + public final static boolean DEBUG = true; +} \ No newline at end of file diff --git a/spine-cocos2dx/example/proj.android/gen/com/esotericsoftware/cocos2dx/R.java b/spine-cocos2dx/example/proj.android/gen/com/esotericsoftware/cocos2dx/R.java new file mode 100644 index 000000000..3e36dbf01 --- /dev/null +++ b/spine-cocos2dx/example/proj.android/gen/com/esotericsoftware/cocos2dx/R.java @@ -0,0 +1,19 @@ +/* AUTO-GENERATED FILE. DO NOT MODIFY. + * + * This class was automatically generated by the + * aapt tool from the resource data it found. It + * should not be modified by hand. + */ + +package com.esotericsoftware.cocos2dx; + +public final class R { + public static final class attr { + } + public static final class drawable { + public static final int icon=0x7f020000; + } + public static final class string { + public static final int app_name=0x7f030000; + } +} diff --git a/spine-cocos2dx/example/proj.android/jni/Android.mk b/spine-cocos2dx/example/proj.android/jni/Android.mk new file mode 100755 index 000000000..491b6d2dc --- /dev/null +++ b/spine-cocos2dx/example/proj.android/jni/Android.mk @@ -0,0 +1,80 @@ +LOCAL_PATH := $(call my-dir) + +include $(CLEAR_VARS) + +$(call import-add-path,$(LOCAL_PATH)/../../cocos2d) +$(call import-add-path,$(LOCAL_PATH)/../../cocos2d/external) +$(call import-add-path,$(LOCAL_PATH)/../../cocos2d/cocos) +$(call import-add-path,$(LOCAL_PATH)/../../cocos2d/cocos/audio/include) + +LOCAL_MODULE := MyGame_shared + +LOCAL_MODULE_FILENAME := libMyGame + +LOCAL_SRC_FILES := hellocpp/main.cpp \ + ../../Classes/AppDelegate.cpp \ + ../../Classes/BatchingExample.cpp \ + ../../Classes/GoblinsExample.cpp \ + ../../Classes/RaptorExample.cpp \ + ../../Classes/SimpleCommand.cpp \ + ../../Classes/SpineboyExample.cpp \ + ../../Classes/TankExample.cpp \ + ../../../src/spine/AttachmentVertices.cpp \ + ../../../src/spine/Cocos2dAttachmentLoader.cpp \ + ../../../src/spine/SkeletonAnimation.cpp \ + ../../../src/spine/SkeletonBatch.cpp \ + ../../../src/spine/SkeletonRenderer.cpp \ + ../../../src/spine/spine-cocos2dx.cpp \ + ../../../../spine-c/src/spine/Animation.c \ + ../../../../spine-c/src/spine/AnimationState.c \ + ../../../../spine-c/src/spine/AnimationStateData.c \ + ../../../../spine-c/src/spine/Atlas.c \ + ../../../../spine-c/src/spine/AtlasAttachmentLoader.c \ + ../../../../spine-c/src/spine/Attachment.c \ + ../../../../spine-c/src/spine/AttachmentLoader.c \ + ../../../../spine-c/src/spine/Bone.c \ + ../../../../spine-c/src/spine/BoneData.c \ + ../../../../spine-c/src/spine/BoundingBoxAttachment.c \ + ../../../../spine-c/src/spine/Event.c \ + ../../../../spine-c/src/spine/EventData.c \ + ../../../../spine-c/src/spine/IkConstraint.c \ + ../../../../spine-c/src/spine/IkConstraintData.c \ + ../../../../spine-c/src/spine/Json.c \ + ../../../../spine-c/src/spine/MeshAttachment.c \ + ../../../../spine-c/src/spine/PathAttachment.c \ + ../../../../spine-c/src/spine/PathConstraint.c \ + ../../../../spine-c/src/spine/PathConstraintData.c \ + ../../../../spine-c/src/spine/RegionAttachment.c \ + ../../../../spine-c/src/spine/Skeleton.c \ + ../../../../spine-c/src/spine/SkeletonBinary.c \ + ../../../../spine-c/src/spine/SkeletonBounds.c \ + ../../../../spine-c/src/spine/SkeletonData.c \ + ../../../../spine-c/src/spine/SkeletonJson.c \ + ../../../../spine-c/src/spine/Skin.c \ + ../../../../spine-c/src/spine/Slot.c \ + ../../../../spine-c/src/spine/SlotData.c \ + ../../../../spine-c/src/spine/TransformConstraint.c \ + ../../../../spine-c/src/spine/TransformConstraintData.c \ + ../../../../spine-c/src/spine/VertexAttachment.c \ + ../../../../spine-c/src/spine/extension.c + + +LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../Classes \ + $(LOCAL_PATH)/../../../../spine-c/include \ + $(LOCAL_PATH)/../../../../spine-cocos2dx/src + +# _COCOS_HEADER_ANDROID_BEGIN +# _COCOS_HEADER_ANDROID_END + + +LOCAL_STATIC_LIBRARIES := cocos2dx_static + +# _COCOS_LIB_ANDROID_BEGIN +# _COCOS_LIB_ANDROID_END + +include $(BUILD_SHARED_LIBRARY) + +$(call import-module,.) + +# _COCOS_LIB_IMPORT_ANDROID_BEGIN +# _COCOS_LIB_IMPORT_ANDROID_END diff --git a/spine-cocos2dx/example/proj.android/jni/Application.mk b/spine-cocos2dx/example/proj.android/jni/Application.mk new file mode 100755 index 000000000..4d5f43a0c --- /dev/null +++ b/spine-cocos2dx/example/proj.android/jni/Application.mk @@ -0,0 +1,15 @@ +APP_STL := gnustl_static + +APP_CPPFLAGS := -frtti -DCC_ENABLE_CHIPMUNK_INTEGRATION=1 -std=c++11 -fsigned-char +APP_LDFLAGS := -latomic + +APP_ABI := armeabi + + +ifeq ($(NDK_DEBUG),1) + APP_CPPFLAGS += -DCOCOS2D_DEBUG=1 + APP_OPTIM := debug +else + APP_CPPFLAGS += -DNDEBUG + APP_OPTIM := release +endif diff --git a/spine-cocos2dx/example/proj.android/jni/hellocpp/main.cpp b/spine-cocos2dx/example/proj.android/jni/hellocpp/main.cpp new file mode 100755 index 000000000..2c27096ca --- /dev/null +++ b/spine-cocos2dx/example/proj.android/jni/hellocpp/main.cpp @@ -0,0 +1,15 @@ +#include "AppDelegate.h" +#include "cocos2d.h" +#include "platform/android/jni/JniHelper.h" +#include +#include + +#define LOG_TAG "main" +#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG,LOG_TAG,__VA_ARGS__) + +using namespace cocos2d; + +void cocos_android_app_init (JNIEnv* env) { + LOGD("cocos_android_app_init"); + AppDelegate *pAppDelegate = new AppDelegate(); +} diff --git a/spine-cocos2dx/example/proj.android/local.properties b/spine-cocos2dx/example/proj.android/local.properties new file mode 100644 index 000000000..79dd6bfc0 --- /dev/null +++ b/spine-cocos2dx/example/proj.android/local.properties @@ -0,0 +1,10 @@ +# This file is automatically generated by Android Tools. +# Do not modify this file -- YOUR CHANGES WILL BE ERASED! +# +# This file must *NOT* be checked into Version Control Systems, +# as it contains information specific to your local configuration. + +# location of the SDK. This is only used by Ant +# For customization when using a Version Control System, please read the +# header note. +sdk.dir=/Applications/android-sdk diff --git a/spine-cocos2dx/example/proj.android/proguard-project.txt b/spine-cocos2dx/example/proj.android/proguard-project.txt new file mode 100755 index 000000000..f2fe1559a --- /dev/null +++ b/spine-cocos2dx/example/proj.android/proguard-project.txt @@ -0,0 +1,20 @@ +# To enable ProGuard in your project, edit project.properties +# to define the proguard.config property as described in that file. +# +# Add project specific ProGuard rules here. +# By default, the flags in this file are appended to flags specified +# in ${sdk.dir}/tools/proguard/proguard-android.txt +# You can edit the include path and order by changing the ProGuard +# include property in project.properties. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# Add any project specific keep options here: + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} diff --git a/spine-cocos2dx/example/proj.android/project.properties b/spine-cocos2dx/example/proj.android/project.properties new file mode 100755 index 000000000..933ec550d --- /dev/null +++ b/spine-cocos2dx/example/proj.android/project.properties @@ -0,0 +1,13 @@ +# This file is automatically generated by Android Tools. +# Do not modify this file -- YOUR CHANGES WILL BE ERASED! +# +# This file must be checked in Version Control Systems. +# +# To customize properties used by the Ant build system use, +# "ant.properties", and override values to adapt the script to your +# project structure. + +# Project target. +target=android-13 + +android.library.reference.1=../cocos2d/cocos/platform/android/java diff --git a/spine-cocos2dx/example/proj.android/res/drawable-hdpi/icon.png b/spine-cocos2dx/example/proj.android/res/drawable-hdpi/icon.png new file mode 100755 index 000000000..8aa4767c2 Binary files /dev/null and b/spine-cocos2dx/example/proj.android/res/drawable-hdpi/icon.png differ diff --git a/spine-cocos2dx/example/proj.android/res/drawable-ldpi/icon.png b/spine-cocos2dx/example/proj.android/res/drawable-ldpi/icon.png new file mode 100755 index 000000000..17ce11a08 Binary files /dev/null and b/spine-cocos2dx/example/proj.android/res/drawable-ldpi/icon.png differ diff --git a/spine-cocos2dx/example/proj.android/res/drawable-mdpi/icon.png b/spine-cocos2dx/example/proj.android/res/drawable-mdpi/icon.png new file mode 100755 index 000000000..3780aac46 Binary files /dev/null and b/spine-cocos2dx/example/proj.android/res/drawable-mdpi/icon.png differ diff --git a/spine-cocos2dx/example/proj.android/res/values/strings.xml b/spine-cocos2dx/example/proj.android/res/values/strings.xml new file mode 100755 index 000000000..75bef6a9b --- /dev/null +++ b/spine-cocos2dx/example/proj.android/res/values/strings.xml @@ -0,0 +1,4 @@ + + + spine-cocos2dx-example + diff --git a/spine-cocos2dx/example/proj.android/src/org/cocos2dx/cpp/AppActivity.java b/spine-cocos2dx/example/proj.android/src/org/cocos2dx/cpp/AppActivity.java new file mode 100755 index 000000000..d75797235 --- /dev/null +++ b/spine-cocos2dx/example/proj.android/src/org/cocos2dx/cpp/AppActivity.java @@ -0,0 +1,32 @@ +/**************************************************************************** +Copyright (c) 2008-2010 Ricardo Quesada +Copyright (c) 2010-2012 cocos2d-x.org +Copyright (c) 2011 Zynga Inc. +Copyright (c) 2013-2014 Chukong Technologies Inc. + +http://www.cocos2d-x.org + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +****************************************************************************/ +package org.cocos2dx.cpp; + +import org.cocos2dx.lib.Cocos2dxActivity; + +public class AppActivity extends Cocos2dxActivity { +} diff --git a/spine-corona/README.md b/spine-corona/README.md index 4c41f89dc..a116907b0 100644 --- a/spine-corona/README.md +++ b/spine-corona/README.md @@ -10,9 +10,9 @@ The Spine Runtimes are developed with the intent to be used with data exported f ## Spine version -spine-corona works with data exported from Spine 2.1.27. Updating spine-corona to [v3.0](https://trello.com/c/tF8UykBM/72-update-runtimes-to-support-v3-0-skewing-scale), [v3.1](https://trello.com/c/bERJAFEq/73-update-runtimes-to-support-v3-1-linked-meshes), [v3.2](https://github.com/EsotericSoftware/spine-runtimes/issues/586), and [v3.3](https://github.com/EsotericSoftware/spine-runtimes/issues/613) is in progress. +spine-corona works with data exported from the latest Spine version. -spine-corona supports all Spine features except for rendering meshes due to Corona having a limited graphics API. +spine-corona supports all Spine features. spine-corona does not yet support loading the binary format. @@ -20,12 +20,6 @@ spine-corona does not yet support loading the binary format. 1. Download the Spine Runtimes source using [git](https://help.github.com/articles/set-up-git) or by downloading it [as a zip](https://github.com/EsotericSoftware/spine-runtimes/archive/master.zip). 1. Copy the contents of `spine-lua` to `spine-corona/spine-lua`. -1. Run the `main.lua` file using Corona. There are multiple examples that can be enabled by editing this file. +1. Run the `main.lua` file using Corona. Tap/click to switch between skeletons Alternatively, the `spine-lua` and `spine-corona/spine-corona` directories can be copied into your project. Note that the require statements use `spine-lua.Xxx`, so the spine-lua files must be in a `spine-lua` directory in your project. - -## Examples - -[spineboy Example](https://github.com/EsotericSoftware/spine-runtimes/blob/master/spine-corona/examples/spineboy.lua) -[goblins Example](https://github.com/EsotericSoftware/spine-runtimes/blob/master/spine-corona/examples/goblins.lua) -[dragon Example](https://github.com/EsotericSoftware/spine-runtimes/blob/master/spine-corona/examples/dragon.lua) diff --git a/spine-corona/build.settings b/spine-corona/build.settings index a55b73421..210114d4d 100644 --- a/spine-corona/build.settings +++ b/spine-corona/build.settings @@ -1,11 +1,11 @@ settings = { orientation = { - default = "portrait", - supported = { "portrait", } + default = "landscape", + supported = { "landscape", } }, iphone = { plist = { - UIStatusBarHidden = false, + UIStatusBarHidden = true, UIPrerenderedIcon = true, -- set to false for "shine" overlay } }, diff --git a/spine-corona/data/goblins-mesh.json b/spine-corona/data/goblins-mesh.json new file mode 100644 index 000000000..8119a57a0 --- /dev/null +++ b/spine-corona/data/goblins-mesh.json @@ -0,0 +1,1082 @@ +{ +"skeleton": { "hash": "3Z6FWT/Kylgd8cbSWBEwAsOcPEM", "spine": "3.4.02", "width": 266.87, "height": 349.55, "images": "./images/" }, +"bones": [ + { "name": "root" }, + { "name": "hip", "parent": "root", "x": 0.64, "y": 114.41 }, + { "name": "torso", "parent": "hip", "length": 85.82, "rotation": 93.92, "x": -6.42, "y": 1.97 }, + { "name": "neck", "parent": "torso", "length": 18.38, "rotation": -1.51, "x": 81.67, "y": -6.34 }, + { "name": "head", "parent": "neck", "length": 68.28, "rotation": -13.92, "x": 20.93, "y": 11.59 }, + { "name": "left shoulder", "parent": "torso", "length": 35.43, "rotation": -156.96, "x": 74.04, "y": -20.38 }, + { "name": "left arm", "parent": "left shoulder", "length": 35.62, "rotation": 28.16, "x": 37.85, "y": -2.34 }, + { "name": "left upper leg", "parent": "hip", "length": 50.39, "rotation": -89.09, "x": 14.45, "y": 2.81 }, + { "name": "left lower leg", "parent": "left upper leg", "length": 49.89, "rotation": -16.65, "x": 56.34, "y": 0.98 }, + { "name": "left foot", "parent": "left lower leg", "length": 46.5, "rotation": 102.43, "x": 58.94, "y": -7.61 }, + { "name": "left hand", "parent": "left arm", "length": 11.52, "rotation": 2.7, "x": 35.62, "y": 0.07 }, + { "name": "pelvis", "parent": "hip", "x": 1.41, "y": -6.57 }, + { "name": "right shoulder", "parent": "torso", "length": 37.24, "rotation": 133.88, "x": 76.02, "y": 18.14 }, + { "name": "right arm", "parent": "right shoulder", "length": 36.74, "rotation": 36.32, "x": 37.6, "y": 0.31 }, + { "name": "right upper leg", "parent": "hip", "length": 42.45, "rotation": -97.49, "x": -20.07, "y": -6.83 }, + { "name": "right lower leg", "parent": "right upper leg", "length": 58.52, "rotation": -14.34, "x": 42.99, "y": -0.61 }, + { "name": "right foot", "parent": "right lower leg", "length": 45.45, "rotation": 110.3, "x": 64.88, "y": 0.04 }, + { "name": "right hand", "parent": "right arm", "length": 15.32, "rotation": 2.35, "x": 36.9, "y": 0.34 }, + { "name": "spear1", "parent": "left hand", "length": 65.06, "rotation": 102.43, "x": 0.48, "y": 17.03 }, + { "name": "spear2", "parent": "spear1", "length": 61.41, "rotation": 0.9, "x": 65.05, "y": 0.04 }, + { "name": "spear3", "parent": "spear2", "length": 76.79, "rotation": -0.9, "x": 61.88, "y": 0.57 } +], +"slots": [ + { "name": "left shoulder", "bone": "left shoulder", "attachment": "left shoulder" }, + { "name": "left arm", "bone": "left arm", "attachment": "left arm" }, + { "name": "left hand item", "bone": "left hand", "attachment": "spear" }, + { "name": "left hand", "bone": "left hand", "attachment": "left hand" }, + { "name": "left foot", "bone": "left foot", "attachment": "left foot" }, + { "name": "left lower leg", "bone": "left lower leg", "attachment": "left lower leg" }, + { "name": "left upper leg", "bone": "left upper leg", "attachment": "left upper leg" }, + { "name": "neck", "bone": "neck", "attachment": "neck" }, + { "name": "torso", "bone": "torso", "attachment": "torso" }, + { "name": "pelvis", "bone": "pelvis", "attachment": "pelvis" }, + { "name": "right foot", "bone": "right foot", "attachment": "right foot" }, + { "name": "right lower leg", "bone": "right lower leg", "attachment": "right lower leg" }, + { "name": "undie straps", "bone": "pelvis", "attachment": "undie straps" }, + { "name": "undies", "bone": "pelvis", "attachment": "undies" }, + { "name": "right upper leg", "bone": "right upper leg", "attachment": "right upper leg" }, + { "name": "head", "bone": "head", "attachment": "head" }, + { "name": "eyes", "bone": "head" }, + { "name": "right shoulder", "bone": "right shoulder", "attachment": "right shoulder" }, + { "name": "right arm", "bone": "right arm", "attachment": "right arm" }, + { "name": "right hand thumb", "bone": "right hand", "attachment": "right hand thumb" }, + { "name": "right hand item", "bone": "right hand", "attachment": "dagger" }, + { "name": "right hand", "bone": "right hand", "attachment": "right hand" }, + { "name": "right hand item 2", "bone": "right hand", "attachment": "shield" } +], +"skins": { + "default": { + "left hand item": { + "dagger": { "x": 7.88, "y": -23.45, "rotation": 10.47, "width": 26, "height": 108 }, + "spear": { + "type": "mesh", + "uvs": [ 1, 0.11236, 0.77096, 0.13278, 0.76608, 0.21781, 0.75642, 0.386, 0.74723, 0.54607, 0.72117, 1, 0.28838, 1, 0.24208, 0.54327, 0.22589, 0.38361, 0.2089, 0.21605, 0.20043, 0.13242, 0, 0.11519, 0.4527, 0, 0.58399, 0 ], + "triangles": [ 5, 6, 4, 6, 7, 4, 4, 7, 3, 2, 9, 1, 9, 10, 1, 10, 12, 1, 12, 13, 1, 1, 13, 0, 10, 11, 12, 3, 8, 2, 8, 9, 2, 7, 8, 3 ], + "vertices": [ 1, 20, 38.54, -10.88, 1, 1, 20, 30.97, -5.93, 1, 2, 19, 61.48, -5.58, 0.5116, 20, -0.31, -6.16, 0.48839, 2, 18, 64.73, -5.03, 0.50272, 19, -0.4, -5.06, 0.49728, 1, 10, 4.56, 23.91, 1, 1, 10, 41.7, -138.95, 1, 1, 10, 32.41999, -141.1, 1, 1, 10, -6.49, 22.4, 1, 2, 18, 65.48, 6.64, 0.50272, 19, 0.52999, 6.59, 0.49728, 2, 19, 62.18, 6.66, 0.5116, 20, 0.2, 6.09, 0.48839, 1, 20, 30.96, 6.61, 1, 1, 20, 37.25999, 11.09, 1, 1, 20, 79.75, 1.59, 1, 1, 20, 79.78, -1.29, 1 ], + "hull": 14, + "edges": [ 24, 22, 22, 20, 10, 12, 2, 0, 24, 26, 0, 26, 8, 10, 12, 14, 6, 8, 14, 16, 2, 4, 4, 6, 16, 18, 18, 20, 20, 2 ], + "width": 22, + "height": 368 + } + }, + "right hand item": { + "dagger": { + "type": "mesh", + "uvs": [ 0.78091, 0.38453, 1, 0.38405, 1, 0.44881, 0.73953, 0.4687, 0.74641, 0.81344, 0.34022, 1, 0.15434, 1, 0.11303, 0.78858, 0.23007, 0.47367, 0, 0.45047, 0, 0.38621, 0.22367, 0.38573, 0.24384, 0, 1, 0 ], + "triangles": [ 0, 12, 13, 11, 12, 0, 0, 1, 2, 9, 10, 11, 3, 11, 0, 3, 0, 2, 8, 11, 3, 9, 11, 8, 5, 6, 7, 4, 5, 8, 4, 8, 3, 5, 7, 8 ], + "vertices": [ 15.49, -12.82, 21.13, -13.57, 20.16, -20.49, 13.15, -21.67, 8.13, -58.56, -5.13, -77.04, -9.92, -76.36, -7.79, -53.6, -0.03, -20.36, -5.6, -17.04, -4.63, -10.17, 1.12, -10.93, 7.46, 30.24, 26.93, 27.49 ], + "hull": 14, + "edges": [ 22, 20, 24, 26, 22, 24, 2, 0, 0, 22, 0, 26, 12, 14, 14, 16, 18, 20, 16, 18, 2, 4, 4, 6, 6, 8, 10, 12, 8, 10 ], + "width": 26, + "height": 108 + } + }, + "right hand item 2": { + "shield": { "rotation": 93.49, "width": 70, "height": 72 } + } + }, + "goblin": { + "eyes": { + "eyes closed": { "name": "goblin/eyes-closed", "x": 29.19, "y": -24.89, "rotation": -88.92, "width": 34, "height": 12 } + }, + "head": { + "head": { + "name": "goblin/head", + "type": "mesh", + "uvs": [ 0, 0.60494, 0.14172, 0.5145, 0.24218, 0.55229, 0.32667, 0.67806, 0.37969, 0.79352, 0.53505, 0.93014, 0.86056, 1, 0.94071, 0.94169, 0.92098, 0.69923, 0.9888, 0.65497, 0.99003, 0.51643, 0.89632, 0.43561, 0.94487, 0.41916, 1, 0.39713, 1, 0.2836, 0.94017, 0.27027, 0.87906, 0.25666, 0.80754, 0.16044, 0.66698, 0.01997, 0.4734, 0.01805, 0.29215, 0.19893, 0.25392, 0.31823, 0.09117, 0.324, 0, 0.44331, 0.43271, 0.69153, 0.466, 0.47794, 0.35996, 0.31246, 0.73473, 0.68593, 0.72215, 0.57425, 0.88179, 0.5583, 0.80267, 0.51015 ], + "triangles": [ 5, 27, 6, 7, 27, 8, 7, 6, 27, 4, 24, 5, 5, 24, 27, 4, 3, 24, 27, 29, 8, 8, 29, 9, 24, 28, 27, 24, 25, 28, 24, 3, 25, 29, 28, 30, 29, 27, 28, 25, 2, 26, 25, 3, 2, 9, 29, 10, 0, 23, 1, 28, 25, 30, 29, 11, 10, 29, 30, 11, 2, 21, 26, 2, 1, 21, 23, 22, 1, 1, 22, 21, 30, 16, 11, 30, 17, 16, 30, 25, 17, 17, 26, 18, 18, 26, 19, 26, 17, 25, 11, 15, 12, 11, 16, 15, 12, 15, 13, 15, 14, 13, 21, 20, 26, 26, 20, 19 ], + "vertices": [ 14.56, 50.42, 23.12, 35.47, 17.45999, 26.36, 11.57, 16.86, 3.74, 11.71, -5.89, -3.91, -11.83, -37.23, -8.31, -45.63, 7.75, -44.24, 10.39, -51.33, 19.52, -51.82, 25.21, -43.15, 26.12, -47.43, 27.35, -53.16, 34.84, -53.46, 35.96, -47.33, 37.11, -41.08, 43.75, -33.97, 53.58, -19.87, 54.5, 0.03, 43.31, 19.16, 35.59999, 23.41, 35.89, 40.16999, 28.39, 49.87, 10.25, 5.99, 24.2, 2, 35.55, 12.48, 9.39, -25.1, 16.79999, -24.31, 17.2, -40.65, 20.68, -33.02 ], + "hull": 24, + "edges": [ 0, 2, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 18, 20, 20, 22, 26, 28, 32, 34, 34, 36, 36, 38, 38, 40, 40, 42, 42, 44, 44, 46, 0, 46, 6, 48, 48, 50, 50, 52, 52, 42, 2, 4, 4, 6, 4, 52, 2, 44, 22, 32, 22, 24, 24, 26, 28, 30, 30, 32, 24, 30, 16, 54, 54, 56, 20, 58, 58, 54, 16, 58, 22, 60, 60, 56, 58, 60 ], + "width": 103, + "height": 66 + } + }, + "left arm": { + "left arm": { + "name": "goblin/left-arm", + "type": "mesh", + "uvs": [ 0.68992, 0.29284, 1, 0.46364, 1, 0.74643, 0.84089, 1, 0.66344, 1, 0.33765, 0.64284, 0, 0.44124, 0, 0, 0.34295, 0 ], + "triangles": [ 3, 4, 2, 4, 5, 2, 5, 0, 2, 0, 1, 2, 0, 5, 8, 5, 6, 8, 6, 7, 8 ], + "vertices": [ 18.6, 8.81, 32.18999, 10.31, 38.02, 1.62, 38.08, -9.63, 32.31, -13.49, 14.37, -9.62, -0.75, -10.78, -9.84, 2.77, 1.29, 10.25 ], + "hull": 9, + "edges": [ 14, 16, 16, 0, 0, 2, 2, 4, 6, 4, 6, 8, 8, 10, 12, 14, 10, 12 ], + "width": 37, + "height": 35 + } + }, + "left foot": { + "left foot": { + "name": "goblin/left-foot", + "type": "mesh", + "uvs": [ 0.15733, 0.31873, 0.08195, 0.78502, 0.15884, 0.99366, 0.41633, 0.96804, 0.68822, 0.97636, 1, 0.96388, 0.99385, 0.73501, 0.85294, 0.51862, 0.61479, 0.31056, 0.46991, 0, 0.48032, 0.75604, 0.75994, 0.77706 ], + "triangles": [ 0, 9, 8, 10, 0, 8, 10, 8, 7, 11, 10, 7, 11, 7, 6, 1, 0, 10, 11, 6, 5, 3, 1, 10, 4, 10, 11, 4, 11, 5, 3, 10, 4, 2, 1, 3 ], + "vertices": [ 2.28, 13.07, -1.76, -1.64, 3.59, -7.8, 20.25, -6.04, 37.91, -5.27, 58.12, -3.71, 57.31, 3.34, 47.78, 9.51, 31.95, 15.05, 21.99, 24.11, 24.03, 0.75, 42.21, 1.16 ], + "hull": 10, + "edges": [ 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 0, 18, 6, 20, 20, 16, 2, 20, 8, 22, 22, 14, 20, 22, 22, 10 ], + "width": 65, + "height": 31 + } + }, + "left hand": { + "left hand": { + "name": "goblin/left-hand", + "type": "mesh", + "uvs": [ 0.518, 0.12578, 1, 0.16285, 0.99788, 0.50578, 0.69745, 1, 0.37445, 1, 0, 0.80051, 0, 0.42792, 0.17601, 0, 0.43567, 0 ], + "triangles": [ 2, 0, 1, 0, 5, 6, 6, 7, 0, 0, 7, 8, 3, 4, 0, 4, 5, 0, 2, 3, 0 ], + "vertices": [ -3.11, 15.42, 10.83, 22.27, 15.5, 14.55, 18.35, -8.96, 9.47999, -14.32, -4.58, -14.3, -11.63, -2.63, -14.89, 13.68, -7.75, 17.99 ], + "hull": 9, + "edges": [ 16, 0, 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 14, 16, 12, 14 ], + "width": 36, + "height": 41 + } + }, + "left lower leg": { + "left lower leg": { + "name": "goblin/left-lower-leg", + "type": "mesh", + "uvs": [ 0.95508, 0.20749, 0.81927, 0.65213, 0.94754, 0.77308, 0.67842, 0.97346, 0.46463, 1, 0.26845, 1, 0.04963, 0.90706, 0.2106, 0.60115, 0.07478, 0.40195, 0.18545, 0, 0.28857, 0 ], + "triangles": [ 10, 8, 9, 1, 7, 10, 7, 8, 10, 0, 1, 10, 1, 4, 7, 3, 1, 2, 5, 6, 7, 7, 4, 5, 1, 3, 4 ], + "vertices": [ -0.19, 6.82, 30.97, 10.96, 37.97, 17.33, 53.88, 12.6, 57.58, 6.31, 59.34, 0.08, 55.04, -8.63, 32.99, -9.33, 20.79, -17.43, -7.27, -21.56, -8.18999, -18.29 ], + "hull": 11, + "edges": [ 20, 0, 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 18, 20, 16, 18 ], + "width": 33, + "height": 70 + } + }, + "left shoulder": { + "left shoulder": { + "name": "goblin/left-shoulder", + "type": "mesh", + "uvs": [ 0.7377, 0.40692, 1, 0.75237, 1, 1, 0.62046, 1, 0.26184, 0.56601, 0, 0.29783, 0, 0, 0.44115, 0 ], + "triangles": [ 3, 1, 2, 3, 0, 1, 3, 4, 0, 4, 7, 0, 4, 5, 7, 5, 6, 7 ], + "vertices": [ 15.18, 5.74, 32.16999, 5.32, 41.79, 0.21, 36.63, -9.5, 14.88, -9.72, 0.9, -10.89, -10.66, -4.73999, -4.66, 6.54 ], + "hull": 8, + "edges": [ 12, 14, 14, 0, 4, 2, 0, 2, 4, 6, 6, 8, 10, 12, 8, 10 ], + "width": 29, + "height": 44 + } + }, + "left upper leg": { + "left upper leg": { + "name": "goblin/left-upper-leg", + "type": "mesh", + "uvs": [ 1, 0.12167, 1, 0.54873, 0.91067, 0.78907, 0.76567, 1, 0.3087, 0.9579, 0, 0.68777, 0, 0.219, 0.51961, 0, 0.87552, 0 ], + "triangles": [ 7, 8, 0, 5, 6, 7, 0, 1, 7, 4, 5, 7, 1, 4, 7, 2, 4, 1, 3, 4, 2 ], + "vertices": [ 2.33, 13.06, 33.5, 12.57, 51, 9.34, 66.32, 4.31, 63, -10.71, 43.13, -20.58, 8.91, -20.04, -6.79, -2.64, -6.61, 9.1 ], + "hull": 9, + "edges": [ 10, 8, 8, 6, 6, 4, 4, 2, 10, 12, 12, 14, 14, 16, 2, 0, 16, 0 ], + "width": 33, + "height": 73 + } + }, + "neck": { + "neck": { + "name": "goblin/neck", + "type": "mesh", + "uvs": [ 0.81967, 0.27365, 0.92101, 0.82048, 0.47134, 1, 0.15679, 0.9354, 0, 0.7556, 0.19268, 0.51833, 0.15468, 0.35706, 0, 0.21989, 0.13568, 0, 0.68878, 0, 0.70145, 0.53872 ], + "triangles": [ 3, 5, 2, 2, 10, 1, 2, 5, 10, 3, 4, 5, 10, 0, 1, 0, 10, 6, 10, 5, 6, 7, 8, 6, 6, 9, 0, 6, 8, 9 ], + "vertices": [ 18.62, -11.65, -3.98, -13.85, -10.28, 2.76, -6.91, 13.89, 0.8, 19.04999, 10.06, 11.51, 16.74, 12.45, 22.71, 17.64, 31.4, 12.19, 30.12, -7.67, 8.05, -6.71 ], + "hull": 10, + "edges": [ 14, 12, 12, 10, 10, 8, 8, 6, 6, 4, 4, 2, 2, 20, 20, 0, 0, 18, 16, 18, 14, 16, 0, 2 ], + "width": 36, + "height": 41 + } + }, + "pelvis": { + "pelvis": { + "name": "goblin/pelvis", + "type": "mesh", + "uvs": [ 1, 1, 0, 1, 0, 0, 1, 0 ], + "triangles": [ 1, 2, 3, 1, 3, 0 ], + "vertices": [ 25.38, -20.73, -36.61, -20.73, -36.61, 22.26, 25.38, 22.26 ], + "hull": 4, + "edges": [ 0, 2, 2, 4, 4, 6, 0, 6 ], + "width": 62, + "height": 43 + } + }, + "right arm": { + "right arm": { + "name": "goblin/right-arm", + "type": "mesh", + "uvs": [ 1, 0.09223, 1, 0.8501, 0.72058, 1, 0.24384, 1, 0, 0.86558, 0.20822, 0.10919, 0.50903, 0, 0.85342, 0 ], + "triangles": [ 1, 2, 6, 6, 2, 5, 1, 6, 0, 4, 5, 3, 2, 3, 5, 6, 7, 0 ], + "vertices": [ -4.75, 8.89, 33.03, 11.74, 40.99, 5.89, 41.81, -5.03, 35.53, -11.13, -2.53, -9.2, -8.5, -2.71, -9.09, 5.17999 ], + "hull": 8, + "edges": [ 8, 6, 4, 6, 4, 2, 12, 14, 2, 0, 14, 0, 10, 12, 8, 10 ], + "width": 23, + "height": 50 + } + }, + "right foot": { + "right foot": { + "name": "goblin/right-foot", + "type": "mesh", + "uvs": [ 0.40851, 0.0047, 0.59087, 0.33404, 0.75959, 0.48311, 0.88907, 0.59751, 0.97532, 0.89391, 0.90385, 1, 0.6722, 1, 0.38633, 1, 0.08074, 1, 0, 0.88921, 0, 0.65984, 0, 0.46577, 0.0906, 0.0988, 0.305, 0, 0.47461, 0.71257, 0.715, 0.74681 ], + "triangles": [ 1, 10, 11, 1, 13, 0, 14, 1, 2, 1, 12, 13, 12, 1, 11, 14, 10, 1, 15, 14, 2, 15, 2, 3, 9, 10, 14, 15, 3, 4, 7, 8, 9, 14, 7, 9, 6, 14, 15, 5, 6, 15, 7, 14, 6, 4, 5, 15 ], + "vertices": [ 17.36, 25.99, 29.13, 15.44, 39.89, 10.8, 48.14, 7.24, 53.84, -2.38, 49.43, -6, 34.84, -6.39, 16.84, -6.87, -2.4, -7.38, -7.58, -3.86, -7.78, 3.7, -7.95, 10.1, -2.57, 22.36, 10.84, 25.97, 22.14, 2.75, 37.31, 2.03 ], + "hull": 14, + "edges": [ 0, 2, 6, 8, 8, 10, 16, 18, 22, 24, 24, 26, 0, 26, 10, 12, 2, 4, 4, 6, 12, 14, 14, 16, 18, 20, 20, 22, 2, 28, 28, 14, 20, 28, 4, 30, 30, 12, 28, 30, 30, 8 ], + "width": 63, + "height": 33 + } + }, + "right hand": { + "right hand": { + "name": "goblin/right-hand", + "type": "mesh", + "uvs": [ 0.17957, 0, 0, 0.44772, 0, 0.79734, 0.20057, 0.94264, 0.55057, 1, 0.8539, 1, 0.89823, 0.82004, 0.8259, 0.74285, 0.84223, 0.49993, 0.96356, 0.34102, 0.66023, 0 ], + "triangles": [ 8, 10, 9, 0, 10, 1, 8, 2, 1, 8, 1, 10, 7, 3, 8, 3, 2, 8, 4, 3, 7, 5, 7, 6, 4, 7, 5 ], + "vertices": [ -10.82, -9.45, 5.95, -15.34, 18.87999, -14.9, 24, -7.5, 25.69, 5.16, 25.31, 16.07, 18.61, 17.44, 15.84, 14.74, 6.84, 15.02, 0.81, 19.18, -11.41, 7.83 ], + "hull": 11, + "edges": [ 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 18, 20, 0, 20 ], + "width": 36, + "height": 37 + } + }, + "right hand thumb": { + "right hand thumb": { + "name": "goblin/right-hand", + "type": "mesh", + "uvs": [ 0.88538, 0.22262, 0.76167, 0.3594, 0.75088, 0.78308, 0.95326, 0.84981, 1, 0.60302 ], + "triangles": [ 1, 0, 4, 2, 1, 4, 3, 2, 4 ], + "vertices": [ -2.82, 15.97, 2.4, 11.71, 18.08, 11.9, 20.27, 19.27, 11.09, 20.62 ], + "hull": 5, + "edges": [ 2, 4, 4, 6, 6, 8, 2, 0, 0, 8 ], + "width": 36, + "height": 37 + } + }, + "right lower leg": { + "right lower leg": { + "name": "goblin/right-lower-leg", + "type": "mesh", + "uvs": [ 1, 0.27261, 0.81312, 0.52592, 0.79587, 0.71795, 0.95544, 0.80988, 0.85193, 0.95493, 0.47241, 1, 0.14033, 1, 0, 0.8773, 0.14896, 0.67914, 0.1619, 0.30325, 0.60611, 0 ], + "triangles": [ 1, 10, 0, 9, 10, 1, 8, 9, 1, 2, 8, 1, 4, 2, 3, 6, 7, 8, 5, 6, 8, 2, 5, 8, 4, 5, 2 ], + "vertices": [ 6.26, 8.46, 23.32, 8.04, 37.09999, 12.89, 41.45, 20.82, 53.07, 21.46, 61.33, 10.06, 65.76999, -1.03, 58.99, -9.18999, 43.02, -9.81, 16.33, -20, -12.79, -9.26 ], + "hull": 11, + "edges": [ 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 0, 20, 18, 20 ], + "width": 36, + "height": 76 + } + }, + "right shoulder": { + "right shoulder": { + "name": "goblin/right-shoulder", + "type": "mesh", + "uvs": [ 0.62008, 0.03708, 0.92131, 0.09048, 1, 0.38319, 0.72049, 0.6937, 0.31656, 1, 0, 1, 0, 0.75106, 0.28233, 0.49988 ], + "triangles": [ 4, 6, 7, 4, 7, 3, 4, 5, 6, 7, 0, 3, 2, 0, 1, 2, 3, 0 ], + "vertices": [ -3.17, -11.05, -9, -0.57, -1.01, 10.33, 16.69, 11.17, 37.41, 8.2, 45.45, -1.16, 36.95, -8.46, 21.2, -7.47 ], + "hull": 8, + "edges": [ 10, 12, 12, 14, 14, 0, 0, 2, 2, 4, 4, 6, 8, 10, 6, 8 ], + "width": 39, + "height": 45 + } + }, + "right upper leg": { + "right upper leg": { + "name": "goblin/right-upper-leg", + "type": "mesh", + "uvs": [ 0.27018, 0, 0.11618, 0.18177, 0, 0.70688, 0, 0.89577, 0.26668, 1, 0.48718, 1, 0.67618, 0.83532, 1, 0.5161, 1, 0.25543, 0.74618, 0.0571 ], + "triangles": [ 9, 8, 7, 9, 1, 0, 6, 9, 7, 6, 1, 9, 2, 1, 6, 4, 3, 2, 6, 4, 2, 5, 4, 6 ], + "vertices": [ -9.85, -10.37, 2.17, -14.07, 35.49, -13.66, 47.29, -12.11, 52.61, -2.26, 51.63, 5.16, 40.50999, 10.18, 19.12999, 18.46999, 2.85, 16.32, -8.39999, 6.14 ], + "hull": 10, + "edges": [ 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 0, 18 ], + "width": 34, + "height": 63 + } + }, + "torso": { + "torso": { + "name": "goblin/torso", + "type": "mesh", + "uvs": [ 0, 0.33287, 0.15945, 0.46488, 0.15761, 0.60314, 0.15502, 0.79806, 0.32807, 0.93478, 0.6875, 1, 0.80731, 1, 1, 0.77763, 1, 0.66147, 1, 0.56703, 0.93207, 0.4771, 0.86944, 0.39416, 0.83837, 0.226, 0.68085, 0, 0.14836, 0, 0, 0.07199, 0.78734, 0.86249, 0.43679, 0.79649, 0.76738, 0.61733, 0.44345, 0.58747, 0.54329, 0.38316, 0.77692, 0.73446, 0.66478, 0.51012 ], + "triangles": [ 5, 16, 6, 6, 16, 7, 4, 17, 5, 5, 17, 16, 4, 3, 17, 17, 21, 16, 16, 21, 7, 3, 2, 17, 21, 19, 18, 21, 17, 19, 17, 2, 19, 21, 8, 7, 21, 18, 8, 18, 9, 8, 19, 22, 18, 18, 10, 9, 18, 22, 10, 2, 1, 19, 19, 20, 22, 19, 1, 20, 22, 11, 10, 22, 20, 11, 20, 1, 14, 20, 12, 11, 1, 0, 14, 20, 13, 12, 20, 14, 13, 0, 15, 14 ], + "vertices": [ 56.93, 27.95, 43.37, 18.23, 30.16, 19.5, 11.53, 21.28, -2.55, 10.69, -10.89, -13.12, -11.59, -21.23, 8.54, -36.12, 19.65, -37.08, 28.68, -37.86, 37.68, -34, 45.98, -30.44, 56.4, -29.07, 84.78, -20.92, 87.9, 15.15, 81.87999, 25.79, 1.67, -21.01, 10.03, 2.18, 25.23, -18.25, 29.98, 0, 48.54, -8.39, 13.98, -21.36, 35.9, -15.6 ], + "hull": 16, + "edges": [ 0, 2, 6, 8, 8, 10, 10, 12, 12, 14, 22, 24, 24, 26, 26, 28, 28, 30, 0, 30, 14, 32, 32, 34, 34, 6, 18, 36, 36, 38, 2, 4, 4, 6, 38, 4, 2, 40, 40, 22, 40, 38, 38, 34, 32, 10, 34, 8, 40, 28, 14, 16, 16, 18, 32, 42, 42, 36, 16, 42, 42, 34, 18, 20, 20, 22, 36, 44, 44, 40, 20, 44 ], + "width": 68, + "height": 96 + } + }, + "undie straps": { + "undie straps": { + "name": "goblin/undie-straps", + "type": "mesh", + "uvs": [ 0.36097, 0.44959, 0.66297, 0.60591, 1, 0.19486, 1, 0.57117, 0.75897, 1, 0.38697, 1, 0, 0.26433, 0, 0, 0.12497, 0 ], + "triangles": [ 6, 7, 8, 6, 8, 0, 3, 1, 2, 5, 0, 1, 6, 0, 5, 4, 1, 3, 5, 1, 4 ], + "vertices": [ -10.56, 12.87, 6.53, 9.89999, 25.62, 17.70999, 25.62, 10.56, 11.97, 2.41, -9.09, 2.41, -31, 16.39, -31, 21.41, -23.92, 21.41 ], + "hull": 9, + "edges": [ 14, 16, 16, 0, 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 12, 14, 10, 12, 0, 10, 2, 8 ], + "width": 55, + "height": 19 + } + }, + "undies": { + "undies": { + "name": "goblin/undies", + "type": "mesh", + "uvs": [ 0, 0.32029, 0.14893, 0.59457, 0.22437, 1, 0.35909, 1, 0.50998, 1, 0.79559, 0.58453, 0.9842, 0.28015, 1, 0.00588, 0.46957, 0.17646, 0, 0.03933, 0.48843, 0.59122, 0.48114, 0.43099 ], + "triangles": [ 6, 8, 7, 0, 9, 8, 11, 8, 6, 0, 8, 11, 5, 11, 6, 10, 11, 5, 1, 0, 11, 1, 11, 10, 3, 2, 1, 10, 3, 1, 4, 10, 5, 3, 10, 4 ], + "vertices": [ -13.22, 5.56, -8, -2.47, -5.49, -14.27, -0.64, -14.36, 4.78, -14.45, 15.27, -2.58999, 22.22, 6.11, 22.92, 14.05, 3.75, 9.43999, -13.08, 13.71, 4.21, -2.58999, 4.03, 2.05 ], + "hull": 10, + "edges": [ 0, 2, 2, 4, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 0, 18, 4, 6, 6, 8, 6, 20, 16, 22, 22, 20, 0, 22, 22, 12, 2, 20, 20, 10 ], + "width": 36, + "height": 29 + } + } + }, + "goblingirl": { + "eyes": { + "eyes closed": { "name": "goblingirl/eyes-closed", "x": 28, "y": -25.54, "rotation": -87.04, "width": 37, "height": 21 } + }, + "head": { + "head": { "name": "goblingirl/head", "x": 27.71, "y": -4.32, "rotation": -85.58, "width": 103, "height": 81 } + }, + "left arm": { + "left arm": { "name": "goblingirl/left-arm", "x": 19.64, "y": -2.42, "rotation": 33.05, "width": 37, "height": 35 } + }, + "left foot": { + "left foot": { "name": "goblingirl/left-foot", "x": 25.17, "y": 7.92, "rotation": 3.32, "width": 65, "height": 31 } + }, + "left hand": { + "left hand": { + "name": "goblingirl/left-hand", + "x": 4.34, + "y": 2.39, + "scaleX": 0.896, + "scaleY": 0.896, + "rotation": 30.34, + "width": 35, + "height": 40 + } + }, + "left lower leg": { + "left lower leg": { "name": "goblingirl/left-lower-leg", "x": 25.02, "y": -0.6, "rotation": 105.75, "width": 33, "height": 70 } + }, + "left shoulder": { + "left shoulder": { "name": "goblingirl/left-shoulder", "x": 19.8, "y": -0.42, "rotation": 61.21, "width": 28, "height": 46 } + }, + "left upper leg": { + "left upper leg": { "name": "goblingirl/left-upper-leg", "x": 30.21, "y": -2.95, "rotation": 89.09, "width": 33, "height": 70 } + }, + "neck": { + "neck": { "name": "goblingirl/neck", "x": 6.16, "y": -3.14, "rotation": -98.86, "width": 35, "height": 41 } + }, + "pelvis": { + "pelvis": { "name": "goblingirl/pelvis", "x": -3.87, "y": 3.18, "width": 62, "height": 43 } + }, + "right arm": { + "right arm": { "name": "goblingirl/right-arm", "x": 16.85, "y": -0.66, "rotation": 93.52, "width": 28, "height": 50 } + }, + "right foot": { + "right foot": { "name": "goblingirl/right-foot", "x": 23.46, "y": 9.66, "rotation": 1.52, "width": 63, "height": 33 } + }, + "right hand": { + "right hand": { "name": "goblingirl/right-hand", "x": 7.21, "y": 3.43, "rotation": 91.16, "width": 36, "height": 37 } + }, + "right hand thumb": { + "right hand thumb": { "name": "goblingirl/right-hand", "x": 7.21, "y": 3.43, "rotation": 91.16, "width": 36, "height": 37 } + }, + "right lower leg": { + "right lower leg": { "name": "goblingirl/right-lower-leg", "x": 26.15, "y": -3.27, "rotation": 111.83, "width": 36, "height": 76 } + }, + "right shoulder": { + "right shoulder": { "name": "goblingirl/right-shoulder", "x": 14.46, "y": 0.45, "rotation": 129.85, "width": 39, "height": 45 } + }, + "right upper leg": { + "right upper leg": { "name": "goblingirl/right-upper-leg", "x": 19.69, "y": 2.13, "rotation": 97.49, "width": 34, "height": 63 } + }, + "torso": { + "torso": { "name": "goblingirl/torso", "x": 36.28, "y": -5.14, "rotation": -95.74, "width": 68, "height": 96 } + }, + "undie straps": { + "undie straps": { "name": "goblingirl/undie-straps", "x": -1.51, "y": 14.18, "width": 55, "height": 19 } + }, + "undies": { + "undies": { "name": "goblingirl/undies", "x": 5.4, "y": 1.7, "width": 36, "height": 29 } + } + } +}, +"animations": { + "walk": { + "slots": { + "eyes": { + "attachment": [ + { "time": 0.7, "name": "eyes closed" }, + { "time": 0.8, "name": null } + ] + } + }, + "bones": { + "left upper leg": { + "rotate": [ + { "time": 0, "angle": -26.55 }, + { "time": 0.1333, "angle": -8.78 }, + { "time": 0.2333, "angle": 9.51 }, + { "time": 0.3666, "angle": 30.74 }, + { "time": 0.5, "angle": 25.33 }, + { "time": 0.6333, "angle": 26.11 }, + { "time": 0.7333, "angle": 7.45 }, + { "time": 0.8666, "angle": -21.19 }, + { "time": 1, "angle": -26.55 } + ], + "translate": [ + { "time": 0, "x": -1.32, "y": 1.7 }, + { "time": 0.3666, "x": -0.06, "y": 2.42 }, + { "time": 1, "x": -1.32, "y": 1.7 } + ] + }, + "right upper leg": { + "rotate": [ + { "time": 0, "angle": 42.45 }, + { + "time": 0.1333, + "angle": 49.86, + "curve": [ 0.414, 0, 0.705, 0.99 ] + }, + { "time": 0.2333, "angle": 22.51 }, + { "time": 0.5, "angle": -16.93 }, + { "time": 0.6333, "angle": 1.89 }, + { + "time": 0.7333, + "angle": 34.86, + "curve": [ 0.462, 0.11, 1, 1 ] + }, + { + "time": 0.8666, + "angle": 58.68, + "curve": [ 0.5, 0.02, 1, 1 ] + }, + { "time": 1, "angle": 42.45 } + ], + "translate": [ + { "time": 0, "x": 6.23, "y": 0 }, + { "time": 0.2333, "x": 2.14, "y": 2.4 }, + { "time": 0.5, "x": 2.44, "y": 4.8 }, + { "time": 1, "x": 6.23, "y": 0 } + ] + }, + "left lower leg": { + "rotate": [ + { "time": 0, "angle": -18.05 }, + { "time": 0.1333, "angle": -63.5 }, + { "time": 0.2333, "angle": -83.01 }, + { "time": 0.5, "angle": 5.11 }, + { "time": 0.6333, "angle": -28.29 }, + { "time": 0.7333, "angle": -27.52 }, + { "time": 0.8666, "angle": 3.53 }, + { "time": 1, "angle": -18.05 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 }, + { "time": 0.2333, "x": 2.55, "y": -0.47 }, + { "time": 0.5, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1, "x": 0, "y": 0 } + ] + }, + "left foot": { + "rotate": [ + { "time": 0, "angle": -14.56 }, + { "time": 0.1333, "angle": -10.42 }, + { "time": 0.2333, "angle": -5.01 }, + { "time": 0.3, "angle": 6.67 }, + { "time": 0.3666, "angle": 3.87 }, + { "time": 0.5, "angle": -3.87 }, + { "time": 0.6333, "angle": 2.78 }, + { "time": 0.7333, "angle": -11.99 }, + { "time": 0.8666, "angle": -12.45 }, + { "time": 1, "angle": -14.56 } + ] + }, + "right shoulder": { + "rotate": [ + { + "time": 0, + "angle": 5.29, + "curve": [ 0.264, 0, 0.75, 1 ] + }, + { "time": 0.6333, "angle": 6.65 }, + { "time": 1, "angle": 5.29 } + ] + }, + "right arm": { + "rotate": [ + { + "time": 0, + "angle": -4.02, + "curve": [ 0.267, 0, 0.804, 0.99 ] + }, + { + "time": 0.6333, + "angle": 19.78, + "curve": [ 0.307, 0, 0.787, 0.99 ] + }, + { "time": 1, "angle": -4.02 } + ] + }, + "right hand": { + "rotate": [ + { "time": 0, "angle": 8.98 }, + { "time": 0.6333, "angle": 0.51 }, + { "time": 1, "angle": 8.98 } + ] + }, + "left shoulder": { + "rotate": [ + { + "time": 0, + "angle": 6.25, + "curve": [ 0.339, 0, 0.683, 1 ] + }, + { + "time": 0.5, + "angle": -11.78, + "curve": [ 0.281, 0, 0.686, 0.99 ] + }, + { "time": 1, "angle": 6.25 } + ], + "translate": [ + { "time": 0, "x": 1.15, "y": 0.23 } + ] + }, + "left hand": { + "rotate": [ + { + "time": 0, + "angle": -21.23, + "curve": [ 0.295, 0, 0.755, 0.98 ] + }, + { + "time": 0.5, + "angle": -27.28, + "curve": [ 0.241, 0, 0.75, 0.97 ] + }, + { "time": 1, "angle": -21.23 } + ] + }, + "left arm": { + "rotate": [ + { + "time": 0, + "angle": 28.37, + "curve": [ 0.339, 0, 0.683, 1 ] + }, + { + "time": 0.5, + "angle": 60.09, + "curve": [ 0.281, 0, 0.686, 0.99 ] + }, + { "time": 1, "angle": 28.37 } + ] + }, + "torso": { + "rotate": [ + { "time": 0, "angle": -10.28 }, + { + "time": 0.1333, + "angle": -15.38, + "curve": [ 0.545, 0, 0.818, 1 ] + }, + { + "time": 0.3666, + "angle": -9.78, + "curve": [ 0.58, 0.17, 0.669, 0.99 ] + }, + { + "time": 0.6333, + "angle": -15.75, + "curve": [ 0.235, 0.01, 0.795, 1 ] + }, + { + "time": 0.8666, + "angle": -7.06, + "curve": [ 0.209, 0, 0.816, 0.98 ] + }, + { "time": 1, "angle": -10.28 } + ], + "translate": [ + { "time": 0, "x": -3.72, "y": -0.01 } + ] + }, + "right foot": { + "rotate": [ + { "time": 0, "angle": -5.25 }, + { "time": 0.2333, "angle": -17.76 }, + { "time": 0.3666, "angle": -20.09 }, + { "time": 0.5, "angle": -19.73 }, + { "time": 0.7333, "angle": -11.68 }, + { "time": 0.8, "angle": 4.46 }, + { "time": 0.8666, "angle": 0.46 }, + { "time": 1, "angle": -5.25 } + ] + }, + "right lower leg": { + "rotate": [ + { + "time": 0, + "angle": -3.39, + "curve": [ 0.316, 0.01, 0.741, 0.98 ] + }, + { + "time": 0.1333, + "angle": -43.21, + "curve": [ 0.414, 0, 0.705, 0.99 ] + }, + { "time": 0.2333, "angle": -25.98 }, + { "time": 0.5, "angle": -19.53 }, + { "time": 0.6333, "angle": -64.8 }, + { + "time": 0.7333, + "angle": -89.54, + "curve": [ 0.557, 0.18, 1, 1 ] + }, + { "time": 1, "angle": -3.39 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.5, "x": 0, "y": 0 }, + { "time": 0.6333, "x": 2.18, "y": 0.21 }, + { "time": 1, "x": 0, "y": 0 } + ] + }, + "hip": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": -8.4 }, + { + "time": 0.1333, + "x": 0, + "y": -9.35, + "curve": [ 0.326, 0.05, 0.674, 0.93 ] + }, + { + "time": 0.2333, + "x": 0, + "y": -0.59, + "curve": [ 0.325, 0.39, 0.643, 0.7 ] + }, + { "time": 0.3666, "x": 0, "y": -3.96 }, + { "time": 0.5, "x": 0, "y": -8.4 }, + { + "time": 0.6333, + "x": 0, + "y": -10, + "curve": [ 0.359, 0.47, 0.646, 0.74 ] + }, + { + "time": 0.7333, + "x": 0, + "y": -5.29, + "curve": [ 0.333, 0.36, 0.662, 0.69 ] + }, + { + "time": 0.8, + "x": 0, + "y": -2.49, + "curve": [ 0.322, 0.35, 0.651, 0.68 ] + }, + { "time": 0.8666, "x": 0, "y": -3.96 }, + { "time": 1, "x": 0, "y": -8.4 } + ] + }, + "neck": { + "rotate": [ + { "time": 0, "angle": 3.6 }, + { "time": 0.1333, "angle": 17.49 }, + { "time": 0.2333, "angle": 6.1 }, + { "time": 0.3666, "angle": 3.45 }, + { "time": 0.5, "angle": 5.17 }, + { "time": 0.6333, "angle": 18.36 }, + { "time": 0.7333, "angle": 6.09 }, + { "time": 0.8666, "angle": 2.28 }, + { "time": 1, "angle": 3.6 } + ] + }, + "head": { + "rotate": [ + { + "time": 0, + "angle": 3.6, + "curve": [ 0, 0, 0.704, 1.17 ] + }, + { "time": 0.1333, "angle": -0.2 }, + { "time": 0.2333, "angle": 6.1 }, + { "time": 0.3666, "angle": 3.45 }, + { + "time": 0.5, + "angle": 5.17, + "curve": [ 0, 0, 0.704, 1.61 ] + }, + { "time": 0.6666, "angle": 1.1 }, + { "time": 0.7333, "angle": 6.09 }, + { "time": 0.8666, "angle": 2.28 }, + { "time": 1, "angle": 3.6 } + ] + }, + "pelvis": { + "rotate": [ + { "time": 0, "angle": -1.33 } + ], + "translate": [ + { "time": 0, "x": 0.39, "y": -0.78 } + ] + }, + "spear1": { + "rotate": [ + { "time": 0, "angle": 1.84 }, + { "time": 0.2, "angle": -5.38 }, + { "time": 0.5, "angle": 2.95 }, + { "time": 0.7333, "angle": -3.67 }, + { "time": 1, "angle": 1.84 } + ] + }, + "spear2": { + "rotate": [ + { "time": 0, "angle": 1.84 }, + { "time": 0.2, "angle": -5.38 }, + { "time": 0.5, "angle": 2.95 }, + { "time": 0.7333, "angle": -3.67 }, + { "time": 1, "angle": 1.84 } + ] + }, + "spear3": { + "rotate": [ + { "time": 0, "angle": 3.64 }, + { "time": 0.2, "angle": -3.59 }, + { "time": 0.5, "angle": 4.74 }, + { "time": 0.7333, "angle": -1.87 }, + { "time": 1, "angle": 3.64 } + ] + } + }, + "deform": { + "default": { + "left hand item": { + "spear": [ + { "time": 0 } + ] + }, + "right hand item": { + "dagger": [ + { + "time": 0, + "offset": 26, + "vertices": [ 2.34754, 0.14469 ], + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 0.5, + "offset": 8, + "vertices": [ -1.19415, 4.31531, 0.07279, 6.41351, 1.66048, 6.18882, 1.75232, 3.59555 ], + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 1, + "offset": 26, + "vertices": [ 2.34754, 0.14469 ] + } + ] + } + }, + "goblin": { + "head": { + "head": [ + { + "time": 0, + "curve": [ 0.632, 0, 0.75, 1 ] + }, + { + "time": 0.2, + "vertices": [ -10.97826, -6.68962, -4.68015, -2.46175, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.08534, 0.08391, -1.08534, 0.08391, -1.08534, 0.08391, 0, 0, -2.22324, 2.66465, -4.83295, 2.70084, -5.70553, -0.51941, -3.15962, -1.61501, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6.64741, 0.81612, -11.82285, -1.34955, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.08534, 0.08391 ], + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 0.3666, + "vertices": [ 10.69275, 4.05949, 3.66373, 1.85426, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.47305, 0.09017, 1.47305, 0.09017, 1.47305, 0.09017, 0, 0, 2.69652, -0.22738, 3.77135, 0.11417, 3.6893, 1.55352, 2.49594, 1.65501, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4.4588, -3.9113, 9.19593, -1.66854, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.47305, 0.09017 ], + "curve": [ 0.621, 0, 0.75, 1 ] + }, + { + "time": 0.7, + "vertices": [ -10.97826, -6.68962, -4.68015, -2.46175, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.1755, -0.17183, -1.1755, -0.17182, -1.1755, -0.17183, 0, 0, -2.22324, 2.66465, -4.83295, 2.70084, -5.70553, -0.51941, -3.15962, -1.61501, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6.64741, 0.81612, -11.82285, -1.34955, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.1755, -0.17183 ], + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 0.8666, + "vertices": [ 10.69275, 4.05949, 3.66373, 1.85426, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.38687, 0.08446, 0.38687, 0.08446, 0.38687, 0.08446, 0, 0, 2.69652, -0.22738, 3.77135, 0.11417, 3.6893, 1.55352, 2.49594, 1.65501, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4.4588, -3.9113, 9.19593, -1.66854, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.38687, 0.08446 ], + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 1 } + ] + }, + "left foot": { + "left foot": [ + { + "time": 0, + "offset": 8, + "vertices": [ 3.69298, 2.37572, -7.16969, 18.79732, -12.78161, 14.7778, -12.75775, 6.50514, -3.13475, 1.98906, -0.44401, 0.36629, 0, 0, -3.80085, 2.98474 ] + }, + { "time": 0.1333 }, + { + "time": 0.2333, + "offset": 8, + "vertices": [ -3.96072, -2.34594, -5.80445, -12.47629, -2.23129, -12.99037, 2.02941, -9.1036, 0, 0, 0, 0, 0, 0, -1.35254, -5.2883 ] + }, + { + "time": 0.3666, + "offset": 8, + "vertices": [ 0.66504, 0.33548, 0.33902, 2.69014, -0.4817, 2.54524, -1.13592, 1.38562, 0, 0, 0, 0, 0, 0, -0.11907, 0.79273 ] + }, + { "time": 0.5, "curve": "stepped" }, + { "time": 0.6333 }, + { + "time": 0.7333, + "offset": 8, + "vertices": [ -2.97737, 9.40254, -6.91661, 19.92794, -10.55287, 18.41085, -12.37161, 12.38473, -4.72606, 6.30798, 0, 0, -1.48902, 4.88944, -7.06773, 10.70101 ] + }, + { + "time": 0.8333, + "offset": 6, + "vertices": [ 1.05318, 1.56361, -2.52722, 7.9974, -5.5203, 17.14136, -8.93317, 15.79635, -10.73747, 10.22055, -4.23801, 5.36992, 0, 0, 0, 0, -5.83147, 8.55531 ] + }, + { + "time": 1, + "offset": 8, + "vertices": [ 3.69298, 2.37572, -7.16969, 18.79732, -12.78161, 14.7778, -12.75775, 6.50514, -3.13475, 1.98906, -0.44401, 0.36629, 0, 0, -3.80085, 2.98474 ] + } + ] + }, + "pelvis": { + "pelvis": [ + { "time": 0 }, + { + "time": 0.1333, + "offset": 6, + "vertices": [ -0.68989, -4.13283 ] + }, + { + "time": 0.3333, + "offset": 6, + "vertices": [ -1.04945, -3.10476 ] + }, + { + "time": 0.7, + "offset": 6, + "vertices": [ -1.4245, -6.30616 ] + }, + { + "time": 0.8666, + "offset": 6, + "vertices": [ -1.13541, -1.79035 ] + }, + { "time": 1 } + ] + }, + "right foot": { + "right foot": [ + { "time": 0 }, + { + "time": 0.1333, + "offset": 2, + "vertices": [ -2.81258, 2.63114, -2.35238, 3.89441, -1.99921, 4.8639, -0.93273, 5.57982, -0.48886, 5.09854, -0.34812, 3.42912, -0.17445, 1.36898, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.31305, 1.91371, -1.32986, 3.65703 ] + }, + { + "time": 0.2333, + "offset": 2, + "vertices": [ -6.39088, 6.41245, -7.74575, 8.27191, -7.02471, 11.35894, -4.0347, 13.93454, -2.50399, 12.62962, -1.46124, 7.58915, -0.17445, 1.36898, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3.84765, 2.61215, -4.53955, 7.92357 ] + }, + { + "time": 0.3, + "offset": 2, + "vertices": [ -8.27184, 6.68821, -9.29764, 10.13797, -8.62231, 14.71339, -4.58629, 18.81939, -2.20304, 17.10709, -0.07794, 9.9046, 2.54451, 1.01642, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.94624, 2.38007, -4.59398, 10.01888 ] + }, + { + "time": 0.3666, + "offset": 2, + "vertices": [ -10.47683, 9.44175, -13.36882, 12.40982, -14.32568, 16.94392, -9.24462, 23.55674, -5.51711, 21.51377, -1.19581, 11.53192, 2.54451, 1.01642, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4.14847, 2.29389, -6.63418, 11.37127 ] + }, + { + "time": 0.5, + "offset": 2, + "vertices": [ -5.42473, 4.36854, -10.59004, 7.04468, -11.64251, 11.55845, -6.19665, 20.12805, -1.45497, 18.05411, 4.86619, 6.41678, 2.81462, 0.27601, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.96412, 4.94829 ] + }, + { "time": 0.6333 }, + { + "time": 0.7333, + "offset": 4, + "vertices": [ 1.31462, -6.84099, -0.87905, -12.54479, -5.9851, -14.08367, -7.15892, -11.63193, -5.6792, -4.83544, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.06163, -6.93844 ] + }, + { + "time": 0.8, + "offset": 4, + "vertices": [ 0.65731, -3.42049, -0.43952, -6.27239, -2.99255, -7.04183, -3.57946, -5.81596, -2.83959, -2.41772, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.79687, -1.2802, 0, 0, 0, 0, -1.03081, -3.46922 ] + }, + { "time": 0.8666 } + ] + }, + "right hand": { + "right hand": [ + { + "time": 0, + "offset": 4, + "vertices": [ -1.48416, 0.34736, 0, 0, 1.31152, 0.08085, 1.60295, 0.09881, 0.13673, 0.1547, 0, 0, 0, 0, -0.72862, -0.0449 ] + }, + { "time": 0.5 }, + { + "time": 1, + "offset": 4, + "vertices": [ -1.48416, 0.34736, 0, 0, 1.31152, 0.08085, 1.60295, 0.09881, 0.13673, 0.1547, 0, 0, 0, 0, -0.72862, -0.0449 ] + } + ] + }, + "right lower leg": { + "right lower leg": [ + { "time": 0 }, + { + "time": 0.6, + "offset": 6, + "vertices": [ 1.80396, -1.56552 ] + }, + { "time": 1 } + ] + }, + "right upper leg": { + "right upper leg": [ + { + "time": 0, + "vertices": [ -6.03856, -1.46324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.34684, -1.93101, -1.86047, -5.05265, -2.5014, -3.09984 ] + }, + { "time": 0.3333 }, + { + "time": 0.8666, + "offset": 14, + "vertices": [ 0.13424, -2.35377, -1.33317, -5.99572, -1.35861, -4.43323 ] + }, + { + "time": 1, + "vertices": [ -6.03856, -1.46324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.34684, -1.93101, -1.86047, -5.05265, -2.5014, -3.09984 ] + } + ] + }, + "torso": { + "torso": [ + { + "time": 0, + "offset": 14, + "vertices": [ -1.48952, -0.24021, -2.72312, -2.15489, -0.51183, -3.39752, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.0964, -2.61458, 0, 0, 0.57686, -1.24874, 0, 0, 0, 0, -2.11251, -3.29932 ] + }, + { + "time": 0.1333, + "offset": 14, + "vertices": [ 1.31318, -0.59727, -0.97944, -1.62934, 0.74861, -0.6123, -1.44598, 1.97515, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.65701, -3.95221, 0, 0, -1.46987, -0.31373, 0, 0, 0, 0, -3.31756, -3.5535, -2.56329, 0.29673 ] + }, + { + "time": 0.3, + "offset": 14, + "vertices": [ 6.03761, -3.13561, 7.55475, -1.38111, 6.79747, 0.31171, 4.23503, 1.14012, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4.07575, -5.16824, 0, 0, 4.0041, 0.27245, 0, 0, 0, 0, 3.4376, -3.52286 ] + }, + { + "time": 0.5, + "offset": 14, + "vertices": [ 2.25942, -0.87202, 2.575, -0.56861, 3.17112, -0.57003, 1.48704, 0.9924, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3.22451, -4.43862, 0, 0, 1.48691, 0.01586, 0, 0, 0, 0, 0.31388, -3.28095, -1.53797, 0.17803 ] + }, + { + "time": 0.6333, + "offset": 14, + "vertices": [ 0.75002, -1.51701, -0.97944, -1.62934, 0.74861, -0.6123, -1.44598, 1.97515, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.65701, -3.95221, 0, 0, -1.46987, -0.31373, 0, 0, 0, 0, -3.31756, -3.5535, -2.56329, 0.29673 ] + }, + { + "time": 0.8666, + "offset": 14, + "vertices": [ 0.62202, -1.26262, 0.38489, -2.20701, 3.25048, -0.50042, 2.41108, 2.39315, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.6639, -3.10099, 0, 0, 2.30655, -1.15196, 0, 0, 0, 0, -0.07676, -3.63497, -0.9321, 0.1079 ] + }, + { + "time": 1, + "offset": 14, + "vertices": [ -1.48952, -0.24021, -2.72312, -2.15489, -0.51183, -3.39752, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.0964, -2.61458, 0, 0, 0.57686, -1.24874, 0, 0, 0, 0, -2.11251, -3.29932 ] + } + ] + }, + "undie straps": { + "undie straps": [ + { + "time": 0, + "offset": 2, + "vertices": [ -1.77696, 0.54759, -0.96145, -1.03793, -0.39148, -0.24071, -1.77696, 0.54759 ] + }, + { + "time": 0.1333, + "offset": 2, + "vertices": [ -2.25683, -1.03177, -1.49719, -4.23861, -0.74469, -2.84906, -1.90072, 0.54477 ] + }, + { + "time": 0.3333, + "offset": 2, + "vertices": [ -2.37974, -0.05431, -0.49433, 0.19436, -0.90861, 1.16519, -1.60956, 2.70798, 0.96186, 0.80615 ] + }, + { + "time": 0.7, + "offset": 2, + "vertices": [ -0.91714, -2.76567, -0.62214, -3.63489, -0.8494, -2.26772, -2.56076, 0.5297 ] + }, + { + "time": 0.8666, + "offset": 2, + "vertices": [ -2.56076, 0.5297, -1.58064, 0.32031, -1.3847, 0.32476, -2.56076, 0.5297 ] + }, + { + "time": 1, + "offset": 2, + "vertices": [ -1.77696, 0.54759, -0.80128, 0.53413, -0.80128, 0.53413, -1.77696, 0.54759 ] + } + ] + }, + "undies": { + "undies": [ + { + "time": 0, + "vertices": [ 0.43098, 0.722, 10.60295, -0.11699, 2.29598, 0, 2.29598, 0, 2.29598, 0, 0.58798, 0.24399, -2.40018, -0.65335, -2.2782, -0.77533, 2.29598, 0, 0.58798, -0.48799, 4.98697, -0.11699, 6.50796, -0.23399 ] + }, + { + "time": 0.1333, + "vertices": [ 0.72659, 0.43319, 7.20416, -0.1638, 1.37759, 0, 1.37759, 0, 1.37759, 0, 1.25279, 0.0464, -0.99861, -2.95085, -1.37542, -3.07404, 1.37759, 0, 0.35279, -0.29279, 2.99218, -0.07019, 3.90478, -0.14039 ] + }, + { + "time": 0.3333, + "vertices": [ 1.16999, 0, 2.10599, -0.234, 0, 0, 0, 0, 0, 0, 2.24999, -0.24999, -0.4344, 0.60551, -1.55939, 0.48051 ] + }, + { + "time": 0.5333, + "vertices": [ 1.16999, 0, -0.234, -0.93599, -2.92499, 0.35099, 0, 0, 0, 0, 0.49999, -0.24999, -0.64078, -2.07914, -0.64078, -2.07914 ] + }, + { + "time": 0.7, + "vertices": [ 1.8627, -0.11514, 4.66326, -0.09099, -1.76428, 0.21171, 0, 0, -0.56832, 0.32832, -1.13833, -1.1511, -2.19996, -3.47068, -1.29718, -3.47068, 0, 0, 0, 0, 1.58785, -0.04642, 2.65941, 0.16714 ] + }, + { + "time": 0.8333, + "vertices": [ 2.41687, -0.20725, 8.58108, 0.585, -0.83571, 0.10028, 0, 0, -1.02299, 0.59098, -2.44899, -1.872, -1.62499, 0, 0, 0, 0, 0, 0, 0, 2.85813, -0.08356, 4.78695, 0.30086 ] + }, + { + "time": 0.8666, + "vertices": [ 2.01969, -0.0214, 8.98545, 0.4446, -0.20937, 0.08022, 0.45919, 0, -0.35919, 0.47279, -1.84159, -1.4488, -0.79153, 1.2642, 0.53285, 1.23981, 0.45919, 0, 0.11759, -0.09759, 3.2839, -0.09025, 5.13115, 0.19388 ] + }, + { + "time": 1, + "vertices": [ 0.43098, 0.722, 10.60295, -0.11699, 2.29598, 0, 2.29598, 0, 2.29598, 0, 0.58798, 0.24399, -2.40018, -0.65335, -2.2782, -0.77533, 2.29598, 0, 0.58798, -0.48799, 4.98697, -0.11699, 6.50796, -0.23399 ] + } + ] + } + } + } + } +} +} \ No newline at end of file diff --git a/spine-corona/data/goblins.atlas b/spine-corona/data/goblins.atlas new file mode 100644 index 000000000..0f57a0f6a --- /dev/null +++ b/spine-corona/data/goblins.atlas @@ -0,0 +1,293 @@ + +goblins.png +size: 1024,128 +format: RGBA8888 +filter: Linear,Linear +repeat: none +dagger + rotate: true + xy: 372, 100 + size: 26, 108 + orig: 26, 108 + offset: 0, 0 + index: -1 +goblin/eyes-closed + rotate: false + xy: 2, 7 + size: 34, 12 + orig: 34, 12 + offset: 0, 0 + index: -1 +goblin/head + rotate: false + xy: 107, 36 + size: 103, 66 + orig: 103, 66 + offset: 0, 0 + index: -1 +goblin/left-arm + rotate: false + xy: 901, 56 + size: 37, 35 + orig: 37, 35 + offset: 0, 0 + index: -1 +goblin/left-foot + rotate: false + xy: 929, 95 + size: 65, 31 + orig: 65, 31 + offset: 0, 0 + index: -1 +goblin/left-hand + rotate: false + xy: 452, 2 + size: 36, 41 + orig: 36, 41 + offset: 0, 0 + index: -1 +goblin/left-lower-leg + rotate: true + xy: 713, 93 + size: 33, 70 + orig: 33, 70 + offset: 0, 0 + index: -1 +goblin/left-shoulder + rotate: false + xy: 610, 44 + size: 29, 44 + orig: 29, 44 + offset: 0, 0 + index: -1 +goblin/left-upper-leg + rotate: true + xy: 638, 93 + size: 33, 73 + orig: 33, 73 + offset: 0, 0 + index: -1 +goblin/neck + rotate: false + xy: 490, 2 + size: 36, 41 + orig: 36, 41 + offset: 0, 0 + index: -1 +goblin/pelvis + rotate: false + xy: 482, 45 + size: 62, 43 + orig: 62, 43 + offset: 0, 0 + index: -1 +goblin/right-arm + rotate: true + xy: 690, 2 + size: 23, 50 + orig: 23, 50 + offset: 0, 0 + index: -1 +goblin/right-foot + rotate: false + xy: 771, 58 + size: 63, 33 + orig: 63, 33 + offset: 0, 0 + index: -1 +goblin/right-hand + rotate: false + xy: 940, 56 + size: 36, 37 + orig: 36, 37 + offset: 0, 0 + index: -1 +goblin/right-lower-leg + rotate: true + xy: 482, 90 + size: 36, 76 + orig: 36, 76 + offset: 0, 0 + index: -1 +goblin/right-shoulder + rotate: true + xy: 602, 3 + size: 39, 45 + orig: 39, 45 + offset: 0, 0 + index: -1 +goblin/right-upper-leg + rotate: true + xy: 641, 57 + size: 34, 63 + orig: 34, 63 + offset: 0, 0 + index: -1 +goblin/torso + rotate: true + xy: 212, 34 + size: 68, 96 + orig: 68, 96 + offset: 0, 0 + index: -1 +goblin/undie-straps + rotate: false + xy: 380, 5 + size: 55, 19 + orig: 55, 19 + offset: 0, 0 + index: -1 +goblin/undies + rotate: false + xy: 174, 5 + size: 36, 29 + orig: 36, 29 + offset: 0, 0 + index: -1 +goblingirl/eyes-closed + rotate: false + xy: 269, 11 + size: 37, 21 + orig: 37, 21 + offset: 0, 0 + index: -1 +goblingirl/head + rotate: false + xy: 2, 21 + size: 103, 81 + orig: 103, 81 + offset: 0, 0 + index: -1 +goblingirl/left-arm + rotate: true + xy: 978, 56 + size: 37, 35 + orig: 37, 35 + offset: 0, 0 + index: -1 +goblingirl/left-foot + rotate: false + xy: 107, 3 + size: 65, 31 + orig: 65, 31 + offset: 0, 0 + index: -1 +goblingirl/left-hand + rotate: false + xy: 565, 2 + size: 35, 40 + orig: 35, 40 + offset: 0, 0 + index: -1 +goblingirl/left-lower-leg + rotate: true + xy: 785, 93 + size: 33, 70 + orig: 33, 70 + offset: 0, 0 + index: -1 +goblingirl/left-shoulder + rotate: true + xy: 690, 27 + size: 28, 46 + orig: 28, 46 + offset: 0, 0 + index: -1 +goblingirl/left-upper-leg + rotate: true + xy: 857, 93 + size: 33, 70 + orig: 33, 70 + offset: 0, 0 + index: -1 +goblingirl/neck + rotate: false + xy: 528, 2 + size: 35, 41 + orig: 35, 41 + offset: 0, 0 + index: -1 +goblingirl/pelvis + rotate: false + xy: 546, 45 + size: 62, 43 + orig: 62, 43 + offset: 0, 0 + index: -1 +goblingirl/right-arm + rotate: false + xy: 452, 48 + size: 28, 50 + orig: 28, 50 + offset: 0, 0 + index: -1 +goblingirl/right-foot + rotate: false + xy: 836, 58 + size: 63, 33 + orig: 63, 33 + offset: 0, 0 + index: -1 +goblingirl/right-hand + rotate: true + xy: 771, 20 + size: 36, 37 + orig: 36, 37 + offset: 0, 0 + index: -1 +goblingirl/right-lower-leg + rotate: true + xy: 560, 90 + size: 36, 76 + orig: 36, 76 + offset: 0, 0 + index: -1 +goblingirl/right-shoulder + rotate: false + xy: 649, 10 + size: 39, 45 + orig: 39, 45 + offset: 0, 0 + index: -1 +goblingirl/right-upper-leg + rotate: true + xy: 706, 57 + size: 34, 63 + orig: 34, 63 + offset: 0, 0 + index: -1 +goblingirl/torso + rotate: false + xy: 310, 2 + size: 68, 96 + orig: 68, 96 + offset: 0, 0 + index: -1 +goblingirl/undie-straps + rotate: false + xy: 212, 13 + size: 55, 19 + orig: 55, 19 + offset: 0, 0 + index: -1 +goblingirl/undies + rotate: false + xy: 810, 27 + size: 36, 29 + orig: 36, 29 + offset: 0, 0 + index: -1 +shield + rotate: false + xy: 380, 26 + size: 70, 72 + orig: 70, 72 + offset: 0, 0 + index: -1 +spear + rotate: true + xy: 2, 104 + size: 22, 368 + orig: 22, 368 + offset: 0, 0 + index: -1 diff --git a/spine-corona/data/goblins.png b/spine-corona/data/goblins.png new file mode 100644 index 000000000..9d1ae572a Binary files /dev/null and b/spine-corona/data/goblins.png differ diff --git a/spine-corona/data/raptor.atlas b/spine-corona/data/raptor.atlas new file mode 100644 index 000000000..11728a52d --- /dev/null +++ b/spine-corona/data/raptor.atlas @@ -0,0 +1,279 @@ + +raptor.png +size: 1024,1024 +format: RGBA8888 +filter: Linear,Linear +repeat: none +back_arm + rotate: true + xy: 140, 191 + size: 46, 29 + orig: 46, 29 + offset: 0, 0 + index: -1 +back_bracer + rotate: true + xy: 167, 317 + size: 39, 28 + orig: 39, 28 + offset: 0, 0 + index: -1 +back_hand + rotate: false + xy: 167, 358 + size: 36, 34 + orig: 36, 34 + offset: 0, 0 + index: -1 +back_knee + rotate: false + xy: 299, 478 + size: 49, 67 + orig: 49, 67 + offset: 0, 0 + index: -1 +back_thigh + rotate: true + xy: 167, 437 + size: 39, 24 + orig: 39, 24 + offset: 0, 0 + index: -1 +eyes_closed + rotate: true + xy: 2, 2 + size: 47, 45 + orig: 47, 45 + offset: 0, 0 + index: -1 +eyes_open + rotate: true + xy: 49, 2 + size: 47, 45 + orig: 47, 45 + offset: 0, 0 + index: -1 +eyes_surprised + rotate: true + xy: 96, 2 + size: 47, 45 + orig: 47, 45 + offset: 0, 0 + index: -1 +front_arm + rotate: false + xy: 419, 544 + size: 48, 30 + orig: 48, 30 + offset: 0, 0 + index: -1 +front_bracer + rotate: false + xy: 880, 695 + size: 41, 29 + orig: 41, 29 + offset: 0, 0 + index: -1 +front_hand + rotate: true + xy: 167, 394 + size: 41, 38 + orig: 41, 38 + offset: 0, 0 + index: -1 +front_open_hand + rotate: false + xy: 880, 726 + size: 43, 44 + orig: 43, 44 + offset: 0, 0 + index: -1 +front_thigh + rotate: false + xy: 360, 545 + size: 57, 29 + orig: 57, 29 + offset: 0, 0 + index: -1 +gun + rotate: false + xy: 785, 774 + size: 107, 103 + orig: 107, 103 + offset: 0, 0 + index: -1 +gun_nohand + rotate: false + xy: 614, 703 + size: 105, 102 + orig: 105, 102 + offset: 0, 0 + index: -1 +head + rotate: false + xy: 2, 137 + size: 136, 149 + orig: 136, 149 + offset: 0, 0 + index: -1 +lower_leg + rotate: true + xy: 780, 699 + size: 73, 98 + orig: 73, 98 + offset: 0, 0 + index: -1 +mouth_grind + rotate: false + xy: 469, 544 + size: 47, 30 + orig: 47, 30 + offset: 0, 0 + index: -1 +mouth_oooo + rotate: true + xy: 894, 772 + size: 105, 30 + orig: 105, 30 + offset: 0, 0 + index: -1 +mouth_smile + rotate: true + xy: 140, 239 + size: 47, 30 + orig: 47, 30 + offset: 0, 0 + index: -1 +neck + rotate: true + xy: 538, 577 + size: 18, 21 + orig: 18, 21 + offset: 0, 0 + index: -1 +raptor_arm_back + rotate: false + xy: 940, 936 + size: 82, 86 + orig: 82, 86 + offset: 0, 0 + index: -1 +raptor_body + rotate: false + xy: 2, 737 + size: 610, 285 + orig: 610, 285 + offset: 0, 0 + index: -1 +raptor_front_arm + rotate: true + xy: 195, 464 + size: 81, 102 + orig: 81, 102 + offset: 0, 0 + index: -1 +raptor_front_leg + rotate: false + xy: 2, 478 + size: 191, 257 + orig: 191, 257 + offset: 0, 0 + index: -1 +raptor_hindleg_back + rotate: false + xy: 614, 807 + size: 169, 215 + orig: 169, 215 + offset: 0, 0 + index: -1 +raptor_horn + rotate: false + xy: 360, 655 + size: 182, 80 + orig: 182, 80 + offset: 0, 0 + index: -1 +raptor_horn_back + rotate: false + xy: 360, 576 + size: 176, 77 + orig: 176, 77 + offset: 0, 0 + index: -1 +raptor_jaw + rotate: false + xy: 785, 879 + size: 153, 143 + orig: 153, 143 + offset: 0, 0 + index: -1 +raptor_saddle_noshadow + rotate: false + xy: 2, 288 + size: 163, 188 + orig: 163, 188 + offset: 0, 0 + index: -1 +raptor_saddle_strap_front + rotate: false + xy: 721, 710 + size: 57, 95 + orig: 57, 95 + offset: 0, 0 + index: -1 +raptor_saddle_strap_rear + rotate: true + xy: 940, 880 + size: 54, 74 + orig: 54, 74 + offset: 0, 0 + index: -1 +raptor_saddle_w_shadow + rotate: false + xy: 195, 547 + size: 163, 188 + orig: 163, 188 + offset: 0, 0 + index: -1 +raptor_tongue + rotate: true + xy: 544, 649 + size: 86, 64 + orig: 86, 64 + offset: 0, 0 + index: -1 +stirrup_back + rotate: true + xy: 140, 145 + size: 44, 35 + orig: 44, 35 + offset: 0, 0 + index: -1 +stirrup_front + rotate: false + xy: 538, 597 + size: 45, 50 + orig: 45, 50 + offset: 0, 0 + index: -1 +stirrup_strap + rotate: false + xy: 350, 497 + size: 49, 46 + orig: 49, 46 + offset: 0, 0 + index: -1 +torso + rotate: true + xy: 610, 647 + size: 54, 91 + orig: 54, 91 + offset: 0, 0 + index: -1 +visor + rotate: false + xy: 2, 51 + size: 131, 84 + orig: 131, 84 + offset: 0, 0 + index: -1 diff --git a/spine-corona/data/raptor.json b/spine-corona/data/raptor.json new file mode 100644 index 000000000..b81f95cd1 --- /dev/null +++ b/spine-corona/data/raptor.json @@ -0,0 +1,2621 @@ +{ +"skeleton": { "hash": "xc68H5wnObEhNawCC1Fp/vJNrv4", "spine": "3.4.02", "width": 1223.72, "height": 1055.62, "images": "./images/" }, +"bones": [ + { "name": "root" }, + { "name": "hip", "parent": "root", "rotation": 3.15, "x": -136.78, "y": 415.47, "color": "fbff00ff" }, + { "name": "torso1", "parent": "hip", "length": 126.25, "rotation": -4.97, "x": 30.03, "y": -0.4, "color": "eaff00ff" }, + { "name": "saddle", "parent": "torso1", "length": 50.91, "rotation": 91.8, "x": 4.56, "y": 71.86, "color": "ff7300ff" }, + { "name": "spineboy_hip", "parent": "saddle", "length": 0.52, "rotation": 90.01, "x": 81.88, "y": 2.68, "color": "ffffffff" }, + { + "name": "spineboy_torso", + "parent": "spineboy_hip", + "length": 122.45, + "rotation": -75.85, + "x": 1.05, + "y": -2.1, + "color": "ffffffff" + }, + { "name": "torso2", "parent": "torso1", "length": 121.2, "rotation": 39.84, "x": 126.25, "y": -0.37, "color": "eaff00ff" }, + { "name": "neck", "parent": "torso2", "length": 70.59, "rotation": 41.37, "x": 121.19, "y": 0.34, "color": "eaff00ff" }, + { "name": "head", "parent": "neck", "length": 105.5, "rotation": 9.82, "x": 70.59, "y": 0.03, "color": "eaff00ff" }, + { "name": "horn_rear", "parent": "head", "length": 73.78, "rotation": 44.31, "x": 99.27, "y": -226.79, "color": "e07800ff" }, + { "name": "rear_arm_target", "parent": "horn_rear", "rotation": -133.55, "x": 232.68, "y": 245.84, "color": "e07800ff" }, + { + "name": "back_arm", + "parent": "spineboy_torso", + "length": 67.21, + "rotation": -120.89, + "x": 96.33, + "y": -38.46, + "color": "ffffffff" + }, + { "name": "back_bracer", "parent": "back_arm", "length": 43.68, "rotation": 17.48, "x": 67.21, "y": -0.31, "color": "ffffffff" }, + { + "name": "back_hand", + "parent": "back_bracer", + "length": 41.97, + "rotation": 9.2, + "x": 43.68, + "y": 0.06, + "inheritRotation": false, + "color": "ffffffff" + }, + { "name": "spineboy_rear_arm_goal", "parent": "saddle", "x": -30.43, "y": -100.08, "color": "ff0001ff" }, + { "name": "back_thigh", "parent": "spineboy_hip", "length": 71.15, "rotation": 160.75, "x": -9.57, "y": 2.31, "color": "ffffffff" }, + { "name": "back_knee", "parent": "back_thigh", "length": 97.17, "rotation": -54.97, "x": 71.15, "y": -0.28, "color": "ffffffff" }, + { "name": "horn_front", "parent": "head", "length": 87.48, "rotation": 49.36, "x": 82.09, "y": -221.36, "color": "15ff00ff" }, + { "name": "front_arm_target", "parent": "horn_front", "rotation": -138.59, "x": 294.58, "y": 234.17, "color": "15ff00ff" }, + { + "name": "front_arm", + "parent": "spineboy_torso", + "length": 74.51, + "rotation": -118.16, + "x": 101.37, + "y": 9.78, + "color": "ffffffff" + }, + { "name": "front_bracer", "parent": "front_arm", "length": 39.85, "rotation": 20.3, "x": 74.52, "y": -0.41, "color": "ffffffff" }, + { "name": "front_arm1", "parent": "torso2", "length": 109.99, "rotation": 224.54, "x": 46.37, "y": -84.61, "color": "15ff00ff" }, + { "name": "front_arm2", "parent": "front_arm1", "length": 86.33, "rotation": 105.23, "x": 109.99, "y": 0.2, "color": "15ff00ff" }, + { "name": "front_foot_goal", "parent": "root", "rotation": -0.94, "x": -45.79, "y": -28.67, "color": "ff0000ff" }, + { "name": "front_leg_goal", "parent": "front_foot_goal", "x": -106.06, "y": 115.58, "color": "ff0000ff" }, + { "name": "front_leg1", "parent": "hip", "length": 251.74, "rotation": -51.5, "x": 27.36, "y": -28.27, "color": "15ff00ff" }, + { "name": "front_leg2", "parent": "front_leg1", "length": 208.54, "rotation": 261.93, "x": 251.03, "y": 0.16, "color": "15ff00ff" }, + { "name": "front_leg3", "parent": "front_leg2", "length": 118.18, "rotation": 85.46, "x": 208.5, "y": -1.63, "color": "15ff00ff" }, + { + "name": "front_foot1", + "parent": "front_leg3", + "length": 57.79, + "rotation": 54.46, + "x": 118.19, + "y": -0.79, + "scaleX": 1.126, + "color": "15ff00ff" + }, + { + "name": "front_foot2", + "parent": "front_foot1", + "length": 56.19, + "rotation": -2.15, + "x": 57.78, + "y": -0.02, + "scaleX": 0.73, + "scaleY": 0.823, + "inheritRotation": false, + "color": "15ff00ff" + }, + { + "name": "front_foot3", + "parent": "front_foot2", + "length": 129.88, + "rotation": -2.7, + "x": 49.71, + "y": 20.65, + "scaleX": 1.154, + "color": "15ff00ff" + }, + { "name": "front_hand", "parent": "front_arm2", "length": 47.55, "rotation": -56.83, "x": 86.33, "y": 0.06, "color": "15ff00ff" }, + { + "name": "front_hand2", + "parent": "front_bracer", + "length": 58.18, + "rotation": 13.9, + "x": 39.98, + "y": -0.89, + "inheritRotation": false, + "color": "ffffffff" + }, + { "name": "spineboy_front_arm_goal", "parent": "saddle", "x": -50.7, "y": -96.93, "color": "ff0004ff" }, + { + "name": "front_thigh", + "parent": "spineboy_hip", + "length": 77.79, + "rotation": 163.34, + "x": 15.51, + "y": 17.01, + "color": "ffffffff" + }, + { "name": "lower_leg", "parent": "front_thigh", "length": 111.5, "rotation": -49.62, "x": 77.92, "y": -0.1, "color": "ffffffff" }, + { + "name": "gun", + "parent": "spineboy_hip", + "length": 181.35, + "rotation": 107.11, + "x": 16.86, + "y": -7.89, + "scaleX": 0.816, + "scaleY": 0.816, + "color": "ffffffff" + }, + { "name": "neck2", "parent": "spineboy_torso", "length": 32.04, "rotation": -45.22, "x": 113.44, "y": -15.21, "color": "ffffffff" }, + { "name": "head2", "parent": "neck2", "length": 249.64, "rotation": 11.65, "x": 23.01, "y": 3.47, "color": "ffffffff" }, + { "name": "jaw", "parent": "head", "length": 203.76, "rotation": -140.14, "x": 29.36, "y": -40.15, "color": "ffff00ff" }, + { "name": "rear_arm1", "parent": "torso2", "length": 109.56, "rotation": -124.71, "x": 57.05, "y": -95.38, "color": "e07800ff" }, + { "name": "rear_arm2", "parent": "rear_arm1", "length": 85.8, "rotation": 123.56, "x": 109.56, "color": "e07800ff" }, + { "name": "rear_foot_goal", "parent": "root", "x": 33.43, "y": 30.81, "color": "ff0000ff" }, + { "name": "rear_leg_goal", "parent": "rear_foot_goal", "x": -127.51, "y": 75.99, "color": "ff0000ff" }, + { "name": "rear_leg1", "parent": "hip", "length": 226.27, "rotation": -54.76, "x": 55.19, "y": -71.25, "color": "e07800ff" }, + { "name": "rear_leg2", "parent": "rear_leg1", "length": 172.58, "rotation": -92.25, "x": 226.32, "y": 0.23, "color": "e07800ff" }, + { "name": "rear_leg3", "parent": "rear_leg2", "length": 103.05, "rotation": 82.81, "x": 172.31, "y": 2.21, "color": "e07800ff" }, + { "name": "rear_foot1", "parent": "rear_leg3", "length": 84.51, "rotation": 75.43, "x": 102.37, "y": -0.02, "color": "e07800ff" }, + { + "name": "rear_foot2", + "parent": "rear_foot1", + "length": 102.31, + "rotation": -6.13, + "x": 84.49, + "y": -0.34, + "inheritRotation": false, + "color": "e07800ff" + }, + { "name": "rear_hand", "parent": "rear_arm2", "length": 45.8, "rotation": -76.28, "x": 85.8, "y": 0.1, "color": "e07800ff" }, + { + "name": "saddle_strap_front1", + "parent": "saddle", + "length": 97.27, + "rotation": -148.11, + "x": -27.36, + "y": -73.38, + "color": "ff7300ff" + }, + { + "name": "saddle_strap_front2", + "parent": "saddle_strap_front1", + "length": 102.74, + "rotation": -11.13, + "x": 97.29, + "y": 0.3, + "color": "ff7300ff" + }, + { + "name": "saddle_strap_rear1", + "parent": "saddle", + "length": 38.62, + "rotation": 151.13, + "x": -33.34, + "y": 87.32, + "color": "ff7300ff" + }, + { "name": "saddle_strap_rear2", "parent": "saddle_strap_rear1", "length": 54.36, "x": 38.63, "y": -0.02, "color": "ff7300ff" }, + { + "name": "saddle_strap_rear3", + "parent": "saddle_strap_rear2", + "length": 44.04, + "rotation": 3.63, + "x": 54.86, + "y": 0.19, + "color": "ff7300ff" + }, + { "name": "stirrup", "parent": "saddle", "length": 78.17, "rotation": -68.85, "x": -81.94, "y": -103.38, "color": "ff7300ff" }, + { "name": "stirrup_strap1", "parent": "saddle", "length": 43.69, "rotation": -135, "x": -20.38, "y": -29.37, "color": "ff7300ff" }, + { "name": "stirrup_strap2", "parent": "stirrup_strap1", "length": 51.62, "rotation": 9.38, "x": 43.7, "color": "ff7300ff" }, + { "name": "tail1", "parent": "hip", "length": 162.53, "rotation": 162.92, "x": -20.86, "y": 6.87, "color": "eaff00ff" }, + { "name": "tail2", "parent": "tail1", "length": 130.02, "rotation": 30.3, "x": 162.53, "y": -0.82, "color": "eaff00ff" }, + { "name": "tail3", "parent": "tail2", "length": 141.06, "rotation": 6.88, "x": 130.02, "y": 0.1, "color": "eaff00ff" }, + { "name": "tail4", "parent": "tail3", "length": 126.25, "rotation": -18.86, "x": 141.05, "y": 0.64, "color": "eaff00ff" }, + { "name": "tail5", "parent": "tail4", "length": 91.06, "rotation": -22.34, "x": 126.25, "y": -0.47, "color": "eaff00ff" }, + { "name": "tongue1", "parent": "head", "length": 55.11, "rotation": -129.04, "x": 20.81, "y": -104.75, "color": "ffff00ff" }, + { "name": "tongue2", "parent": "tongue1", "length": 44.66, "rotation": 8.93, "x": 55.59, "y": 0.93, "color": "fff200ff" }, + { "name": "tongue3", "parent": "tongue2", "length": 43.64, "rotation": 12.86, "x": 44.26, "y": -0.2, "color": "fff200ff" } +], +"slots": [ + { "name": "back_hand", "bone": "back_hand", "attachment": "back_hand" }, + { "name": "back_arm", "bone": "back_arm", "attachment": "back_arm" }, + { "name": "back_bracer", "bone": "back_bracer", "attachment": "back_bracer" }, + { "name": "back_knee", "bone": "back_knee", "attachment": "back_knee" }, + { "name": "raptor_horn_back", "bone": "horn_rear", "attachment": "raptor_horn_back" }, + { "name": "raptor_tongue", "bone": "root", "attachment": "raptor_tongue" }, + { "name": "raptor_hindleg_back", "bone": "rear_leg1", "attachment": "raptor_hindleg_back" }, + { "name": "raptor_arm_back", "bone": "root", "attachment": "raptor_arm_back" }, + { "name": "raptor_body", "bone": "torso1", "attachment": "raptor_body" }, + { "name": "back_thigh", "bone": "back_thigh", "attachment": "back_thigh" }, + { "name": "raptor_saddle_strap_front", "bone": "saddle_strap_front1", "attachment": "raptor_saddle_strap_front" }, + { "name": "raptor_saddle_strap_rear", "bone": "saddle_strap_rear1", "attachment": "raptor_saddle_strap_rear" }, + { "name": "raptor_saddle_w_shadow", "bone": "saddle", "attachment": "raptor_saddle_w_shadow" }, + { "name": "raptor_saddle_noshadow", "bone": "saddle" }, + { "name": "raptor_front_arm", "bone": "root", "attachment": "raptor_front_arm" }, + { "name": "raptor_front_leg", "bone": "front_leg1", "attachment": "raptor_front_leg" }, + { "name": "raptor_jaw", "bone": "jaw", "attachment": "raptor_jaw" }, + { "name": "neck", "bone": "neck2", "attachment": "neck" }, + { "name": "spineboy_torso", "bone": "spineboy_torso", "attachment": "torso" }, + { "name": "head", "bone": "head2", "attachment": "head" }, + { "name": "eyes_open", "bone": "head2", "attachment": "eyes_open" }, + { "name": "mouth_smile", "bone": "head2", "attachment": "mouth_smile" }, + { "name": "visor", "bone": "head2", "attachment": "visor" }, + { "name": "raptor_horn", "bone": "horn_front", "attachment": "raptor_horn" }, + { "name": "front_thigh", "bone": "front_thigh", "attachment": "front_thigh" }, + { "name": "stirrup_back", "bone": "stirrup", "attachment": "stirrup_back" }, + { "name": "lower_leg", "bone": "lower_leg", "attachment": "lower_leg" }, + { "name": "stirrup_strap", "bone": "stirrup", "attachment": "stirrup_strap" }, + { "name": "stirrup_front", "bone": "stirrup", "attachment": "stirrup_front" }, + { "name": "gun", "bone": "gun", "attachment": "gun_nohand" }, + { "name": "front_arm", "bone": "front_arm", "attachment": "front_arm" }, + { "name": "front_bracer", "bone": "front_bracer", "attachment": "front_bracer" }, + { "name": "front_hand", "bone": "front_hand2", "attachment": "front_hand" } +], +"ik": [ + { + "name": "front_arm_goal", + "bones": [ "front_arm", "front_bracer" ], + "target": "front_arm_target" + }, + { + "name": "front_foot_goal", + "bones": [ "front_leg3", "front_foot1" ], + "target": "front_foot_goal" + }, + { + "name": "front_leg_goal", + "bones": [ "front_leg1", "front_leg2" ], + "target": "front_leg_goal", + "bendPositive": false + }, + { + "name": "rear_arm_goal", + "bones": [ "back_arm", "back_bracer" ], + "target": "rear_arm_target" + }, + { + "name": "rear_foot_goal", + "bones": [ "rear_leg3", "rear_foot1" ], + "target": "rear_foot_goal" + }, + { + "name": "rear_leg_goal", + "bones": [ "rear_leg1", "rear_leg2" ], + "target": "rear_leg_goal", + "bendPositive": false + }, + { + "name": "spineboy_front_leg_goal", + "bones": [ "front_thigh", "lower_leg" ], + "target": "spineboy_front_arm_goal", + "bendPositive": false + }, + { + "name": "spineboy_rear_leg_goal", + "bones": [ "back_thigh", "back_knee" ], + "target": "spineboy_rear_arm_goal", + "bendPositive": false + }, + { + "name": "stirrup", + "bones": [ "stirrup_strap1", "stirrup_strap2" ], + "target": "stirrup" + } +], +"skins": { + "default": { + "back_arm": { + "back_arm": { "x": 29.71, "y": 2.04, "rotation": 16.75, "width": 91, "height": 57 } + }, + "back_bracer": { + "back_bracer": { "x": 13.19, "y": -4.28, "rotation": -0.72, "width": 77, "height": 55 } + }, + "back_hand": { + "back_hand": { "x": 18.6, "y": 4.23, "rotation": -10.99, "width": 72, "height": 68 } + }, + "back_knee": { + "back_knee": { "x": 45.77, "y": 20.47, "rotation": 74.22, "width": 97, "height": 134 } + }, + "back_thigh": { + "back_thigh": { "x": 37.85, "y": -4.36, "rotation": 19.24, "width": 78, "height": 47 } + }, + "eyes_open": { + "eyes_open": { "x": 93.23, "y": -25.45, "rotation": -70.57, "width": 93, "height": 89 } + }, + "front_arm": { + "front_arm": { "x": 31.38, "y": 5.09, "rotation": 14.02, "width": 96, "height": 60 } + }, + "front_bracer": { + "front_bracer": { "x": 11.68, "y": -1.36, "rotation": -6.28, "width": 81, "height": 58 } + }, + "front_hand": { + "front_hand": { "x": 35.7, "y": 7.84, "rotation": -13.96, "width": 82, "height": 75 }, + "front_open_hand": { "x": 42.54, "y": 4.62, "rotation": 62.19, "width": 86, "height": 87 }, + "gun": { "x": 98.9, "y": 22.97, "rotation": 56.34, "width": 213, "height": 206 } + }, + "front_thigh": { + "front_thigh": { "x": 45.7, "y": -3.1, "rotation": 16.65, "width": 114, "height": 58 } + }, + "gun": { + "gun_nohand": { + "type": "mesh", + "uvs": [ 0.71081, 0.16149, 0.85807, 0.41784, 1, 0.6649, 1, 1, 0.71457, 1, 0.49802, 0.6905, 0.30182, 0.41009, 0, 0.58226, 0, 0.1174, 0.27187, 0.12429, 0.24857, 0, 0.36658, 0, 0.61804, 0, 0.70575, 0.53546, 0.53668, 0.26855 ], + "triangles": [ 3, 13, 2, 5, 13, 4, 3, 4, 13, 13, 6, 14, 13, 5, 6, 13, 1, 2, 6, 8, 9, 6, 7, 8, 13, 14, 1, 14, 0, 1, 6, 9, 14, 9, 11, 14, 14, 12, 0, 14, 11, 12, 9, 10, 11 ], + "vertices": [ 23.48, 50.63, 83.86, 46.32, 142.05, 42.17, 197.91, 3.34, 163.7, -45.86, 86.15, -47.34, 15.9, -48.68, 8.42, -120.68, -69.06, -66.81, -35.32, -20.73, -58.83, -10.35, -44.69, 9.99, -14.55, 53.35, 85.21, 6.43, 20.45, 8.2 ], + "hull": 13, + "edges": [ 14, 12, 6, 8, 6, 4, 14, 16, 16, 18, 18, 20, 20, 22, 22, 24, 8, 10, 10, 12, 6, 26, 10, 26, 4, 2, 26, 2, 22, 28, 28, 26, 12, 28, 2, 0, 0, 24, 28, 0, 18, 12 ], + "width": 210, + "height": 203 + } + }, + "head": { + "head": { "x": 132.33, "y": 1.19, "rotation": -70.57, "width": 271, "height": 298 } + }, + "lower_leg": { + "lower_leg": { "x": 76.2, "y": 22.2, "rotation": 66.28, "width": 146, "height": 195 } + }, + "mouth_smile": { + "mouth_smile": { "x": 27.66, "y": -31.33, "rotation": -70.57, "width": 93, "height": 59 } + }, + "neck": { + "neck": { "x": 15.09, "y": -1.66, "rotation": -58.91, "width": 36, "height": 41 } + }, + "raptor_arm_back": { + "raptor_arm_back": { + "type": "mesh", + "uvs": [ 0.38711, 0.29362, 0.31382, 0.46513, 0.29242, 0.51521, 0.32475, 0.4931, 0.57587, 0.32138, 0.63254, 0.28263, 0.71632, 0.34507, 0.94948, 0.51888, 0.94947, 0.60129, 1, 0.65257, 1, 0.90624, 0.95462, 0.99934, 0.88957, 0.83204, 0.80294, 0.99998, 0.75236, 0.75696, 0.6654, 0.713, 0.62288, 0.63242, 0.58194, 0.65031, 0.22478, 0.80641, 0.07791, 0.73315, 0.07825, 0.66549, 0.07984, 0.34306, 0, 0.29728, 0, 0, 0.32334, 0 ], + "triangles": [ 6, 15, 16, 5, 6, 16, 5, 16, 4, 6, 7, 15, 16, 17, 4, 8, 15, 7, 14, 15, 8, 12, 14, 8, 12, 8, 9, 12, 9, 10, 11, 12, 10, 13, 14, 12, 17, 3, 4, 19, 20, 2, 18, 19, 2, 18, 2, 3, 18, 3, 17, 21, 22, 23, 24, 21, 23, 0, 21, 24, 1, 21, 0, 1, 20, 21, 2, 20, 1 ], + "vertices": [ 2, 40, 36.95, 33.31, 0.91666, 41, 68.53, 41.05, 0.08333, 2, 40, 66.01999, 20.35, 0.76813, 41, 41.41, 24.39, 0.23186, 2, 40, 74.51, 16.57, 0.64468, 41, 33.49, 19.53, 0.35531, 2, 40, 70.89, 21.97, 0.29071, 41, 39.99, 19.45999, 0.70928, 3, 40, 42.77, 63.89, 0.11483, 41, 90.47, 18.95, 0.60854, 49, -17.2, 9, 0.2766, 2, 41, 101.86, 18.83, 0.45955, 49, -14.38, 20.04, 0.54044, 2, 41, 106.47, 2.08, 0.0625, 49, 2.98, 20.56, 0.9375, 1, 49, 51.32, 21.98, 1, 1, 49, 60.41, 11.1, 1, 1, 49, 72.39, 9.60999, 1, 1, 49, 100.37, -23.87, 1, 1, 49, 104.96, -40.9, 1, 1, 49, 78.37, -25.61, 1, 1, 49, 86.05, -56.84, 1, 1, 49, 52.92, -30.04, 1, 2, 41, 62.24, -43.92, 0.0625, 49, 37.18999, -33.33, 0.9375, 2, 41, 64.89, -28.65, 0.3125, 49, 22.98, -27.14, 0.6875, 2, 41, 57.69, -27.17, 0.30612, 49, 19.83, -33.78, 0.69387, 2, 40, 124.19, 3.83, 0.19395, 41, -5.09, -14.23, 0.80604, 2, 40, 110.77, -19.65, 0.3125, 41, -16.87999, 10.1, 0.6875, 2, 40, 99.14, -19.2, 0.51612, 41, -9.93, 19.44, 0.48386, 2, 40, 43.73, -17.03, 0.9375, 41, 23.17, 63.92, 0.0625, 1, 40, 35.41, -29.77, 1, 1, 40, -15.68, -28.02, 1, 1, 40, -13.87, 24.65, 1 ], + "hull": 25, + "edges": [ 44, 46, 44, 42, 38, 36, 32, 30, 30, 28, 28, 26, 24, 22, 18, 16, 16, 14, 46, 48, 38, 4, 6, 4, 6, 36, 42, 40, 40, 38, 4, 2, 2, 0, 40, 2, 10, 32, 36, 34, 34, 32, 10, 8, 8, 6, 34, 8, 14, 12, 12, 10, 12, 30, 18, 20, 22, 20, 26, 24, 48, 0 ], + "width": 163, + "height": 172 + } + }, + "raptor_body": { + "raptor_body": { + "type": "mesh", + "uvs": [ 0.89014, 0.11136, 1, 0.22194, 1, 0.42847, 0.88179, 0.38589, 0.874, 0.47986, 0.84783, 0.51728, 0.82504, 0.54984, 0.82403, 0.61606, 0.82305, 0.67972, 0.74042, 0.86709, 0.61596, 0.93097, 0.49649, 0.90968, 0.41186, 0.71379, 0.36955, 0.70086, 0.32823, 0.68824, 0.30082, 0.69962, 0.27515, 0.71028, 0.25301, 0.71948, 0.22568, 0.73082, 0.20832, 0.72362, 0.19092, 0.7164, 0.15952, 0.70337, 0.1301, 0.69116, 0.09227, 0.67546, 0.06029, 0.63165, 0.02855, 0.58817, 0, 0.49874, 0.05045, 0.53494, 0.08267, 0.54507, 0.11815, 0.55623, 0.14733, 0.54161, 0.17913, 0.52568, 0.20324, 0.5136, 0.22867, 0.50087, 0.24871, 0.47664, 0.27523, 0.44458, 0.32026, 0.39015, 0.37517, 0.35747, 0.43476, 0.32201, 0.4893, 0.35534, 0.56021, 0.39867, 0.61587, 0.40674, 0.67769, 0.4157, 0.69094, 0.31314, 0.69362, 0.14742, 0.79219, 0.08354, 0.51541, 0.74573, 0.62393, 0.75425, 0.70856, 0.7287, 0.76132, 0.63288, 0.7566, 0.49454, 0.80613, 0.27517, 0.65885, 0.59037, 0.53929, 0.54937, 0.42632, 0.52207, 0.3246, 0.55241, 0.22715, 0.618, 0.10574, 0.61341, 0.03969, 0.56109, 0.77916, 0.39461, 0.37556, 0.53721, 0.27743, 0.58416, 0.16958, 0.61582, 0.07259, 0.58715, 0.87545, 0.31683, 0.85488, 0.21417, 0.81012, 0.17403, 0.83214, 0.25662, 0.83823, 0.32214, 0.84622, 0.41719, 0.59954, 0.57003, 0.49074, 0.53763, 0.76917, 0.43888, 0.75912, 0.56845, 0.871, 0.3701, 0.85431, 0.43545, 0.89558, 0.32412, 0.90105, 0.22877, 0.91523, 0.20564, 0.93086, 0.219, 0.93446, 0.25858, 0.91956, 0.2776, 0.9061, 0.26423, 0.9415, 0.25929, 0.93589, 0.21545, 0.91669, 0.19192, 0.89297, 0.22201, 0.90245, 0.28513, 0.92006, 0.281, 0.92143, 0.29619, 0.94856, 0.2643, 0.19894, 0.61694, 0.13973, 0.61469, 0.25158, 0.60156, 0.88779, 0.26675 ], + "triangles": [ 13, 60, 12, 12, 71, 46, 46, 70, 47, 11, 12, 46, 47, 11, 46, 10, 11, 47, 13, 14, 55, 15, 93, 14, 16, 56, 15, 58, 26, 27, 28, 58, 27, 63, 28, 29, 63, 58, 28, 25, 26, 58, 25, 58, 63, 57, 63, 29, 92, 29, 30, 57, 29, 92, 24, 25, 63, 24, 63, 57, 23, 24, 57, 92, 23, 57, 22, 23, 92, 62, 22, 92, 21, 22, 62, 20, 21, 91, 92, 30, 62, 91, 21, 62, 62, 30, 31, 91, 62, 31, 31, 32, 93, 20, 91, 56, 56, 19, 20, 17, 19, 56, 18, 19, 17, 93, 91, 31, 55, 34, 35, 33, 34, 55, 61, 33, 55, 61, 32, 33, 93, 32, 61, 56, 91, 93, 56, 93, 15, 16, 17, 56, 36, 37, 54, 60, 35, 36, 54, 60, 36, 60, 55, 35, 61, 55, 14, 93, 61, 14, 60, 13, 55, 12, 60, 54, 39, 54, 37, 39, 37, 38, 71, 54, 39, 40, 71, 39, 53, 71, 40, 53, 40, 41, 12, 54, 71, 46, 71, 53, 66, 45, 0, 44, 45, 66, 1, 84, 85, 65, 66, 0, 0, 85, 65, 85, 86, 65, 85, 0, 1, 78, 85, 84, 79, 78, 84, 78, 86, 85, 77, 86, 78, 77, 78, 79, 67, 66, 65, 83, 80, 79, 84, 83, 79, 77, 79, 80, 84, 90, 83, 82, 77, 80, 1, 90, 84, 94, 65, 86, 94, 86, 77, 94, 77, 82, 67, 65, 94, 51, 44, 66, 51, 66, 67, 81, 82, 80, 83, 88, 81, 87, 94, 82, 87, 82, 81, 87, 81, 88, 88, 90, 89, 87, 88, 89, 80, 83, 81, 90, 88, 83, 43, 44, 51, 64, 67, 94, 64, 94, 87, 68, 67, 64, 51, 67, 68, 76, 64, 87, 76, 87, 89, 74, 68, 64, 74, 64, 76, 3, 74, 76, 59, 43, 51, 59, 51, 68, 69, 59, 68, 74, 69, 68, 69, 74, 3, 90, 1, 2, 89, 90, 2, 76, 89, 2, 3, 76, 2, 75, 69, 3, 4, 75, 3, 75, 72, 69, 5, 75, 4, 5, 72, 75, 72, 59, 69, 59, 42, 43, 72, 42, 59, 50, 42, 72, 50, 72, 5, 6, 50, 5, 73, 50, 6, 52, 70, 42, 50, 52, 42, 73, 52, 50, 7, 73, 6, 49, 73, 7, 52, 73, 49, 8, 49, 7, 48, 52, 49, 48, 49, 8, 47, 52, 48, 70, 53, 41, 70, 41, 42, 46, 53, 70, 47, 70, 52, 9, 48, 8, 47, 48, 9, 10, 47, 9 ], + "vertices": [ 1, 8, 147.48, -145.48, 1, 1, 8, 89.4, -281.62, 1, 1, 8, -28.24, -285.93, 1, 1, 8, -14.58, -194.68, 1, 4, 6, 238.39, -84.13, 0.20851, 7, 32.09999, -140.85, 0.19336, 8, -61.96, -132.26, 0.42115, 39, 129.57, 6.39, 0.17696, 5, 2, 332.7, 63.71, 0.06905, 6, 199.57, -83.03, 0.29424, 7, 3.69, -114.37, 0.2194, 8, -85.43, -101.32, 0.30859, 39, 127.34, -26.64, 0.1087, 5, 2, 307.08, 43.5, 0.11018, 6, 166.95, -82.12999, 0.37282, 7, -20.18, -92.14, 0.24572, 8, -105.18, -75.33999, 0.21862, 39, 123.08, -64.79, 0.05264, 4, 2, 307.75, 5.7, 0.18627, 6, 143.25, -111.59, 0.58009, 7, -57.43, -98.57, 0.12363, 8, -142.98, -75.33, 0.10999, 2, 2, 308.7, -30.55, 0.25, 6, 120.75, -140.04, 0.75, 2, 2, 213.94, -142.7, 0.75, 6, -23.83, -165.45, 0.25, 3, 2, 64.44999, -187.34, 0.31139, 58, -158.45, 158.33, 0.10379, 1, 84.16, -190.98, 0.5848, 1, 1, -61.47, -178.84, 1, 4, 58, 118.47, 114.74, 0.07383, 59, 17.17, 122.49, 0.17504, 60, -100.71, 132.55, 0.06818, 1, -166.91, -67.94999, 0.68294, 4, 58, 170.4, 123.13, 0.06537, 59, 66.71, 104.77, 0.20999, 60, -53.08, 110.21, 0.12016, 1, -217.69, -61.33, 0.60447, 6, 58, 221.11, 131.31, 0.02179, 59, 115.07, 87.47, 0.23058, 60, -6.58, 88.39, 0.16258, 61, -168.92, 31, 0.02826, 62, -282.82, -90.19, 0.029, 1, -267.66, -55.14, 0.52776, 5, 59, 146.51, 86.08, 0.23635, 60, 26.66, 83.39, 0.19338, 61, -134.99, 41.34, 0.06624, 62, -257.52, -60.65, 0.06962, 1, -298.87, -61.99, 0.43436, 5, 59, 178.73, 86.41, 0.22521, 60, 56.68, 81.29, 0.20997, 61, -107.13, 46.31, 0.11271, 62, -232.44, -51.26, 0.12148, 1, -328.68, -69.24, 0.3306, 5, 59, 203.26, 86.51, 0.21603, 60, 83.06, 77.01999, 0.22457, 61, -79.56, 53.53, 0.13939, 62, -210.89, -28.3, 0.15618, 1, -354.01, -75.41, 0.26379, 5, 59, 238.06, 85.41, 0.20114, 60, 115.65, 74.66, 0.2315, 61, -49.53, 60.58, 0.16455, 62, -185.49, -14.98, 0.19123, 1, -385.33, -83.15, 0.21156, 5, 59, 255.33, 78.85, 0.18224, 60, 133.83, 63.18, 0.23194, 61, -27.04, 56.84, 0.18907, 62, -163.58, -5.26, 0.22658, 1, -406.45, -79.89, 0.17015, 5, 59, 275.48, 71.62, 0.16169, 60, 152.97, 53.58, 0.22885, 61, -5.82, 53.94, 0.21292, 62, -142.85, 0.11, 0.26159, 1, -427.72, -77.47, 0.13493, 5, 59, 313.81, 53.61, 0.14198, 60, 188.04, 35.82, 0.22293, 61, 31.84, 49.3, 0.23478, 62, -106.46, 7.49, 0.29326, 1, -465.96, -72.58999, 0.10702, 5, 59, 345.74, 45.54, 0.12502, 60, 219.6, 19.28, 0.2179, 61, 68.31, 43.02, 0.25622, 62, -70.12999, 18.19, 0.32248, 1, -502.09, -68.19, 0.07835, 4, 59, 390.81, 21.3, 0.11758, 60, 261.62, -3.66, 0.22607, 61, 114.55, 37.83, 0.29087, 62, -26.15, 30.34, 0.36547, 4, 59, 423.87, -11.11, 0.10536, 60, 291.46, -39.06, 0.21954, 61, 154.83, 14.99, 0.30098, 62, 19.91, 25.67, 0.37409, 4, 59, 456.68, -43.27, 0.09949, 60, 321.06, -74.19999, 0.21749, 61, 194.79, -7.66, 0.30788, 62, 65.62, 21.04, 0.37513, 4, 59, 480.34, -100.28, 0.10045, 60, 339.2, -133.2, 0.22026, 61, 232.3, -56.69, 0.31103, 62, 119.7, -8.68999, 0.36824, 4, 59, 424.34, -67.51999, 0.10379, 60, 286.57, -95.27, 0.23087, 61, 169.77, -39.4, 0.30828, 62, 55.51, -18.08, 0.35705, 4, 59, 387.08, -53.84, 0.11505, 60, 250.77, -78.11, 0.2454, 61, 130.24, -35.75, 0.30092, 62, 17.87, -30.67, 0.3386, 4, 59, 346.04, -38.78, 0.13471, 60, 211.34, -59.22, 0.26271, 61, 86.7, -31.72, 0.2888, 62, -23.59, -44.54, 0.31376, 5, 58, 449.17, 125.97, 0.02419, 59, 311.45, -35.25, 0.16384, 60, 175.89, -56.83, 0.2727, 61, 51.53, -43.14, 0.26317, 62, -52.88, -67.87, 0.27607, 5, 58, 418.38, 93.72, 0.05913, 59, 269.72, -40.64, 0.19681, 60, 135.19, -53.82, 0.27688, 61, 13.42, -53.11, 0.23219, 62, -82.03, -93.66, 0.23497, 5, 58, 390.82, 86.58, 0.10638, 59, 241.19, -39.8, 0.2354, 60, 105.59, -52.93, 0.27331, 61, -16.25, -62.16, 0.19459, 62, -108.34, -111.24, 0.19028, 5, 58, 364.8, 62.48, 0.14347, 59, 207.71, -42.14, 0.28099, 60, 73.33, -49.43, 0.26867, 61, -46.11, -70.49, 0.15764, 62, -129.51, -133.56, 0.1492, 5, 58, 345.49, 47.53, 0.18499, 59, 182.34, -50.62, 0.33114, 60, 45.87, -56.62, 0.25881, 61, -71.57, -84.96, 0.1174, 62, -150.85, -153.35, 0.10763, 5, 58, 319.95, 15.15, 0.23755, 59, 145.6, -61.95, 0.39396, 60, 9.60999, -63.26, 0.24619, 61, -101.06, -105.58, 0.06443, 62, -165.65, -187.83, 0.05784, 3, 58, 276.58, -30.61, 0.29942, 59, 85.52, -81.11, 0.46774, 60, -52.01, -76.62, 0.23283, 3, 58, 214.5, -70.36, 0.32855, 59, 11.97, -85.98, 0.48601, 60, -125.69, -74.48, 0.18543, 2, 58, 147.14, -113.5, 0.59565, 59, -67.83999, -91.26, 0.40433, 2, 2, -113.14, 135.84, 0.24192, 58, 91.72, -112.59, 0.75807, 2, 2, -42.12, 116.77, 0.14515, 58, 18.2, -111.17, 0.85484, 1, 2, 44.2, 107.1, 1, 2, 2, 140.09, 96.35, 0.22579, 6, 72.58999, 65.41, 0.7742, 4, 2, 137.69, 169.35, 0.05644, 6, 117.5, 123, 0.24355, 7, 78.3, 94.48, 0.2125, 8, 23.7, 91.74, 0.4875, 2, 7, 171.15, 111.98, 0.25, 8, 118.17, 93.15, 0.75, 1, 8, 158.96, -25.58, 1, 1, 1, -40.63, -86.01, 1, 3, 2, 67.33999, -86.66, 0.33215, 58, -137.02, 59.92, 0.08303, 1, 92.54, -90.61, 0.5848, 2, 2, 170.13, -66.29, 0.75, 6, -8.53, -78.72, 0.25, 2, 2, 231.74, -8.12, 0.4, 6, 76.03, -73.51999, 0.6, 4, 2, 222.04, 70.41, 0.17551, 6, 118.9, -7, 0.55823, 7, -6.58, -3.99, 0.17739, 8, -76.73, 9.18, 0.08884, 1, 8, 50.43, -46.56, 1, 1, 6, -9.88, 20.65, 1, 2, 2, -53.22, 20.53, 0.2, 58, 5.8, -15.09, 0.8, 3, 2, -180.71, 32.22, 0.08564, 58, 132.35, 4.23999, 0.56215, 59, -23.98, 19.01, 0.35219, 3, 58, 246.39, 57.53, 0.30273, 59, 101.61, 10.65, 0.46989, 60, -27.28, 13.2, 0.22737, 5, 58, 346.99, 126.85, 0.13479, 59, 223.17, 22.83, 0.28279, 60, 94.88, 13.77, 0.24481, 61, -47.85, -3.72, 0.17322, 62, -158.02, -73.16, 0.16438, 4, 59, 367.51, -9.96, 0.14656, 60, 235.45, -32.57, 0.23073, 61, 100.06, 1.62, 0.29607, 62, -24.81, -8.63, 0.32661, 4, 59, 440.24, -55.6, 0.10821, 60, 303.52, -84.91, 0.21897, 61, 182.07, -23.8, 0.31097, 62, 60.48, 1.14, 0.36182, 3, 6, 174.99, 22.22, 0.2, 7, 54.82, -19.14, 0.6, 8, -18.79999, -16.2, 0.2, 3, 58, 189.25, 30.83, 0.33253, 59, 38.68, 14.84, 0.48076, 60, -89.52, 23.34, 0.18669, 5, 58, 295.08, 91.08, 0.22891, 59, 160.45, 16.54, 0.38754, 60, 31.85, 13.48, 0.2306, 61, -106.86, -25.89, 0.08042, 62, -203.08, -117.24, 0.0725, 5, 58, 414.43, 146.25, 0.07359, 59, 291.61, 7.27, 0.20198, 60, 161.53, -8.2, 0.23762, 61, 22.27, -1.17999, 0.24024, 62, -94.86, -42.56, 0.24654, 4, 59, 404.01, -32.87, 0.12351, 60, 269.61, -58.84, 0.22261, 61, 141.21, -11.13, 0.30609, 62, 17.98, -3.72, 0.34777, 1, 8, 26.4, -166.06, 1, 1, 8, 87.21, -106.12, 1, 1, 8, 108.19, -49.62, 1, 2, 8, 61.73, -82.12999, 0.50021, 39, 4.42, 52.83, 0.49978, 2, 8, 22.84, -109.4, 0.50021, 39, 51.52, 46.73, 0.49978, 4, 6, 247.12, -50.52, 0.06545, 7, 60.86, -121.4, 0.06069, 8, -30.3, -118, 0.49079, 39, 96.58, 17.21999, 0.38305, 1, 2, 26.73, 14.8, 1, 2, 2, -107.97, 25.67, 0.24192, 58, 60.17, -6.91, 0.75807, 4, 2, 235.53, 102.96, 0.0761, 6, 150.1, 9.35, 0.35533, 7, 27.64, -12.34, 0.41675, 8, -44.43, -4.87, 0.1518, 3, 2, 227.15, 28.49, 0.31015, 6, 95.96, -42.46, 0.60548, 7, -47.23, -15.44, 0.08435, 2, 8, 5.19, -153.1, 0.87618, 39, 90.96, 71.21, 0.12381, 4, 6, 243.13, -60.59, 0.10669, 7, 51.21, -126.33, 0.09893, 8, -40.65, -121.21, 0.47072, 39, 105.71, 17.33, 0.32363, 1, 8, 23.69, -185.21, 1, 1, 8, 79.64, -175.94, 1, 1, 8, 93.96, -187.56, 1, 1, 8, 87.07, -206.55, 1, 1, 8, 64.19999, -216.74, 1, 1, 8, 52.23, -203.68, 1, 1, 8, 59.24, -187.03, 1, 1, 8, 64.26, -223.8, 1, 1, 8, 89.44, -211.41, 1, 1, 8, 102.04, -186.95, 1, 1, 8, 83.1, -166.14, 1, 1, 8, 46.84, -186.41, 1, 1, 8, 50.32, -204.36, 1, 1, 8, 41.7, -206.59, 1, 1, 8, 61.87, -230.97, 1, 5, 58, 374.97, 143.6, 0.10291, 59, 256.29, 17.42, 0.23985, 60, 127.43, 2.07, 0.2431, 61, -13.35, -3.05, 0.20854, 62, -128.14, -55.46, 0.20557, 4, 59, 327.21, 4.42, 0.17789, 60, 196.28, -19.32, 0.24248, 61, 58.71, -1.04999, 0.28055, 62, -62.24, -26.21, 0.29905, 5, 58, 318.32, 113.62, 0.17774, 59, 192.26, 20.14, 0.33383, 60, 64.19, 12.44, 0.24171, 61, -76.55, -13.67, 0.12849, 62, -182.56, -89.31, 0.11821, 2, 8, 56.98, -162.99, 0.89259, 39, 57.54, 112, 0.1074 ], + "hull": 46, + "edges": [ 22, 20, 20, 18, 18, 16, 6, 4, 4, 2, 90, 88, 54, 52, 52, 50, 24, 22, 88, 86, 86, 84, 8, 6, 24, 26, 26, 28, 72, 74, 74, 76, 70, 72, 46, 48, 48, 50, 54, 56, 56, 58, 80, 82, 82, 84, 76, 78, 78, 80, 8, 10, 10, 12, 12, 14, 14, 16, 0, 90, 0, 2, 62, 64, 64, 66, 40, 42, 58, 60, 60, 62, 42, 44, 44, 46, 66, 68, 68, 70, 32, 34, 34, 36, 52, 116, 116, 126, 126, 114, 114, 184, 184, 124, 124, 182, 182, 112, 112, 186, 186, 122, 122, 110, 110, 120, 120, 108, 108, 142, 142, 106, 106, 140, 140, 104, 92, 94, 94, 96, 96, 98, 98, 146, 146, 100, 100, 144, 144, 118, 118, 102, 8, 150, 150, 138, 138, 136, 136, 134, 134, 132, 156, 154, 154, 164, 164, 162, 162, 160, 160, 158, 158, 156, 180, 178, 178, 174, 174, 188, 188, 172, 170, 168, 28, 30, 30, 32, 36, 38, 38, 40 ], + "width": 1219, + "height": 570 + } + }, + "raptor_front_arm": { + "raptor_front_arm": { + "type": "mesh", + "uvs": [ 0.39562, 0.1396, 0.3877, 0.30212, 0.3123, 0.41784, 0.27287, 0.47835, 0.33388, 0.4507, 0.54879, 0.35328, 0.64092, 0.31152, 0.73024, 0.36529, 1, 0.5277, 1, 0.86606, 0.93242, 1, 0.86176, 0.80967, 0.75576, 0.99765, 0.71748, 1, 0.70276, 0.77442, 0.62031, 0.73448, 0.58792, 0.64519, 0.53561, 0.6582, 0.13448, 0.75798, 0, 0.69218, 0.01846, 0.56357, 0.05498, 0.30917, 0, 0.27863, 0, 0.12423, 0, 0, 0.19596, 0, 0.40242, 0, 0.24536, 0.1924, 0.21678, 0.0811 ], + "triangles": [ 0, 28, 26, 23, 25, 28, 28, 25, 26, 23, 24, 25, 6, 7, 16, 6, 16, 5, 15, 16, 7, 7, 14, 15, 8, 14, 7, 11, 14, 8, 11, 8, 9, 12, 14, 11, 13, 14, 12, 10, 11, 9, 17, 4, 5, 16, 17, 5, 18, 19, 3, 18, 3, 4, 18, 4, 17, 27, 28, 0, 27, 22, 23, 27, 23, 28, 1, 27, 0, 21, 22, 27, 21, 27, 1, 2, 21, 1, 2, 20, 21, 3, 20, 2, 19, 20, 3 ], + "vertices": [ 2, 21, 3.06, 31.88, 0.51075, 6, 66.56, -109.48, 0.48924, 1, 21, 35.87, 35.62, 1, 2, 21, 60.94, 27.12, 0.8464, 22, 46.49, 31.12, 0.15358, 2, 21, 74.05, 22.67, 0.3492, 22, 36.5, 21.53, 0.65078, 3, 21, 67, 31.58, 0.10937, 22, 47.66, 23.68, 0.78125, 31, -40.93, -19.44, 0.10937, 2, 22, 86.98, 31.24, 0.65078, 31, -25.75, 17.61, 0.3492, 2, 22, 103.83, 34.49, 0.34375, 31, -19.24, 33.49, 0.65625, 2, 22, 114.04, 19.51, 0.10937, 31, -1.11, 33.84, 0.89062, 1, 31, 53.62, 34.88, 1, 1, 31, 96.03, -19.16, 1, 1, 31, 104.2, -47.31, 1, 1, 31, 71.33999, -23.98, 1, 1, 31, 81.39, -64.61, 1, 1, 31, 76.8, -68.81, 1, 1, 31, 46.65, -34.25, 1, 2, 22, 73.12999, -45.76, 0.10937, 31, 31.14, -36.12, 0.89062, 2, 22, 73.98, -26.9, 0.34375, 31, 15.82, -25.09, 0.65625, 2, 22, 65.1, -26.69, 0.65078, 31, 10.78, -32.41, 0.3492, 3, 21, 133.56, 9.13, 0.10937, 22, -2.94, -25.03, 0.78125, 31, -27.84, -88.47, 0.10937, 2, 21, 123.67, -14.42, 0.3492, 22, -19.29, -5.39, 0.65078, 2, 21, 97.41, -15.43, 0.8464, 22, -8.08, 18.37, 0.15358, 1, 21, 45.46, -17.43, 1, 2, 21, 40.68999, -27.17, 0.45035, 6, -1.69, -93.8, 0.54964, 2, 21, -2.74, -29.63, 0.44352, 6, 18.99, -72.93, 0.55646, 1, 6, 32.11, -48.45, 1, 1, 6, 57.56, -67.43, 1, 1, 6, 84.38, -87.42, 1, 2, 21, 16.44, 5.21, 0.7182, 6, 46.31, -101.86, 0.28178, 2, 21, -4.51, 5.32, 0.48851, 6, 52.82, -81.94, 0.51147 ], + "hull": 27, + "edges": [ 38, 36, 32, 30, 30, 28, 28, 26, 24, 26, 24, 22, 22, 20, 20, 18, 18, 16, 44, 42, 38, 6, 38, 40, 40, 42, 6, 4, 4, 2, 40, 4, 8, 6, 36, 8, 32, 12, 42, 2, 52, 0, 0, 2, 16, 14, 14, 12, 30, 14, 36, 34, 34, 32, 12, 10, 10, 8, 34, 10, 48, 50, 50, 52, 44, 46, 46, 48, 50, 56, 56, 54 ], + "width": 162, + "height": 203 + } + }, + "raptor_front_leg": { + "raptor_front_leg": { + "type": "mesh", + "uvs": [ 0.55116, 0.17817, 0.6279, 0.36027, 0.6671, 0.4533, 0.64879, 0.51527, 0.53553, 0.56893, 0.32335, 0.66946, 0.28674, 0.72086, 0.32538, 0.804, 0.36258, 0.80144, 0.42056, 0.79744, 0.61015, 0.78435, 0.84813, 0.84028, 1, 0.93854, 0.62439, 0.91738, 0.72812, 1, 0.58574, 1, 0.36707, 0.96667, 0.26306, 0.95082, 0.16266, 0.93552, 0.03859, 0.72237, 0, 0.66946, 0.0374, 0.62999, 0.1647, 0.49562, 0.23731, 0.4568, 0.27019, 0.43923, 0.28063, 0.43364, 0.223, 0.4057, 0.12565, 0.35851, 0, 0.29759, 0, 0.1524, 0, 0, 0.32132, 0, 0.32222, 0.22778, 0.4493, 0.38031, 0.47664, 0.44361, 0.4615, 0.47375, 0.35106, 0.53247, 0.20091, 0.65256, 0.18527, 0.72148, 0.25222, 0.86314, 0.30941, 0.88124, 0.55694, 0.89613, 0.55857, 0.89207, 0.47493, 0.85339, 0.6059, 0.91526, 0.39705, 0.89129, 0.13229, 0.09352, 0.36997, 0.45345, 0.37163, 0.43827, 0.32515, 0.39424, 0.23759, 0.34425, 0.34065, 0.47414 ], + "triangles": [ 46, 30, 31, 41, 42, 44, 43, 9, 10, 42, 43, 10, 41, 43, 42, 10, 13, 42, 11, 13, 10, 13, 11, 12, 13, 44, 42, 14, 15, 13, 45, 8, 9, 45, 40, 8, 16, 40, 45, 17, 40, 16, 16, 45, 15, 15, 45, 44, 45, 41, 44, 15, 44, 13, 45, 9, 43, 45, 43, 41, 19, 21, 38, 20, 21, 19, 39, 38, 6, 39, 6, 7, 40, 39, 7, 40, 7, 8, 18, 19, 38, 18, 38, 39, 17, 39, 40, 18, 39, 17, 47, 25, 48, 24, 25, 47, 35, 48, 34, 47, 48, 35, 51, 24, 47, 23, 24, 51, 3, 34, 2, 35, 34, 3, 36, 51, 47, 36, 47, 35, 4, 35, 3, 36, 35, 4, 37, 22, 23, 21, 22, 37, 36, 37, 23, 36, 23, 51, 5, 37, 36, 5, 36, 4, 6, 37, 5, 38, 21, 37, 38, 37, 6, 29, 30, 46, 32, 31, 0, 46, 31, 32, 28, 29, 46, 46, 27, 28, 32, 50, 46, 50, 27, 46, 33, 32, 0, 33, 0, 1, 49, 50, 32, 33, 49, 32, 26, 27, 50, 26, 50, 49, 25, 26, 49, 48, 49, 33, 25, 49, 48, 34, 33, 1, 48, 33, 34, 34, 1, 2 ], + "vertices": [ 2, 25, 128.03, 88.47, 0.8504, 1, 158.83, -71.91, 0.14959, 2, 25, 219.55, 53.15, 0.77988, 26, -48.04, -38.58, 0.22011, 2, 25, 266.3, 35.09999, 0.53544, 26, -36.73, 10.22, 0.46455, 2, 25, 286.89, 9.79, 0.35166, 26, -14.56, 34.14, 0.64832, 2, 25, 281.54, -41.24, 0.09228, 26, 36.71, 36, 0.90771, 3, 25, 271.53, -136.86, 0.05786, 26, 132.77, 39.48, 0.71425, 27, 34.99, 78.76, 0.22787, 3, 26, 158.21, 55.17, 0.5308, 27, 52.65, 54.63, 0.38143, 28, 7.01, 85.54, 0.08776, 5, 26, 167.14, 99.49, 0.21498, 27, 97.55, 49.25, 0.35357, 28, 28.72, 45.87, 0.14219, 29, -21.26, 49.99, 0.22491, 30, -72.29, 25.96, 0.06431, 5, 26, 154.22, 105.55, 0.07537, 27, 102.57, 62.6, 0.23051, 28, 42.51, 49.55, 0.28379, 29, -7.06, 51.39, 0.27004, 30, -58.17, 28.03, 0.14026, 4, 27, 109.72, 83.39, 0.11607, 28, 64.08999, 55.23, 0.08123, 29, 15.12, 53.51, 0.36961, 30, -36.09, 31.19, 0.43307, 1, 30, 35.8, 41.81, 1, 1, 30, 128.11, 17.93, 1, 1, 30, 188.72, -29.42, 1, 2, 29, 93.29, -7.6, 0.47999, 30, 44.86, -26.17, 0.52, 2, 29, 133.17, -49.83, 0.776, 30, 86.69, -66.47, 0.22399, 2, 29, 78.78, -50.15, 0.76799, 30, 32.38, -69.36, 0.232, 1, 29, -4.91, -33.55, 1, 3, 27, 155.04, -5.13, 0.35917, 28, 17.87999, -32.5, 0.30632, 29, -44.62, -25.61, 0.33449, 4, 26, 254.98, 126.27, 0.10154, 27, 131.21, -36.2, 0.54211, 28, -21.24, -31.17, 0.20873, 29, -83.01999, -17.96999, 0.1476, 3, 26, 240.33, 7.81, 0.25586, 27, 11.94, -30.98, 0.61614, 28, -86.31, 68.9, 0.12797, 2, 26, 239.26, -23.1, 0.45486, 27, -18.95999, -32.37, 0.54513, 3, 25, 187.65, -209.73, 0.09777, 26, 216.66, -33.34999, 0.58892, 27, -30.97, -10.65, 0.3133, 2, 25, 163.85, -128.67, 0.19603, 26, 139.75, -68.26, 0.80396, 2, 25, 165.74, -94.49, 0.31962, 26, 105.59, -71.26, 0.68037, 2, 25, 166.39, -79.07, 0.46225, 26, 90.23, -72.76, 0.53774, 2, 25, 166.49, -74.17, 0.53785, 26, 85.42, -73.28, 0.46213, 2, 25, 141.54, -82.46, 0.73138, 26, 97.13, -96.82, 0.26861, 2, 25, 99.76, -97.08, 0.85324, 26, 117.34, -136.23, 0.14675, 2, 25, 45.01, -114.56, 0.83615, 1, -51.09, -135.29, 0.16384, 2, 25, -16.2, -74.76, 0.62989, 1, -42.95, -58.38, 0.3701, 2, 25, -74.73, -19.33, 0.31468, 1, -52.66, 17.54999, 0.68531, 2, 25, 1.67, 76.75, 0.25576, 1, 70.07, 18.78, 0.74423, 1, 25, 93.54, 4.13, 1, 2, 25, 185.14, -6.66, 0.75461, 26, 15.98, -64.26999, 0.24538, 2, 25, 217.11, -18.75, 0.50844, 26, 23.47, -30.93, 0.49154, 2, 25, 225.63, -32.91999, 0.32527, 26, 36.3, -20.5, 0.67472, 2, 25, 223, -84.73, 0.20192, 26, 87.96, -15.86, 0.79807, 3, 25, 235.61, -168.06, 0.0809, 26, 168.69, 8.29, 0.57147, 27, 6.74, 40.47, 0.34761, 3, 26, 191.79, 35.8, 0.32545, 27, 36, 19.62, 0.57243, 28, -31.14, 78.74, 0.10211, 4, 26, 206.64, 111.53, 0.10808, 27, 112.69, 10.82, 0.52067, 28, 6.25, 11.23, 0.23517, 29, -49.03, 19.43, 0.13606, 3, 27, 130.6, 26.41, 0.35067, 28, 29.35, 5.71, 0.28241, 29, -27.12, 10.25, 0.3669, 2, 29, 67.46, 3.16, 0.384, 30, 18.54999, -16.62999, 0.61599, 1, 30, 19.07, -14.51, 1, 2, 29, 36, 24.95, 0.384, 30, -13.89, 3.64, 0.61599, 2, 29, 86.23, -6.55, 0.48799, 30, 37.75, -25.46, 0.512, 4, 26, 164.9, 153.55, 0.02263, 27, 151.18, 56, 0.23908, 28, 65.44, 5.55, 0.19254, 29, 8.45, 4.27, 0.54574, 2, 25, -9.28, -17.5, 0.59605, 1, 7.72, -30.85, 0.40393, 2, 25, 195.9, -53.81, 0.42368, 26, 61.11, -47.06, 0.5763, 2, 25, 190.1, -48.45, 0.53231, 26, 56.61, -53.56, 0.46768, 2, 25, 161.26, -48.26, 0.79873, 26, 60.44, -82.12999, 0.20126, 2, 25, 120.37, -58.54, 0.85455, 26, 76.31, -121.18, 0.14544, 2, 25, 197.37, -69.23, 0.3355, 26, 76.17, -43.46, 0.66449 ], + "hull": 32, + "edges": [ 40, 38, 38, 36, 28, 30, 28, 26, 26, 24, 24, 22, 22, 20, 14, 12, 12, 10, 6, 4, 60, 62, 0, 62, 40, 42, 42, 44, 34, 36, 16, 14, 52, 50, 4, 2, 2, 0, 10, 8, 8, 6, 72, 74, 74, 76, 76, 78, 78, 80, 80, 90, 90, 88, 16, 18, 18, 20, 30, 32, 32, 34, 56, 58, 58, 60, 94, 96, 96, 98, 52, 54, 54, 56, 100, 98, 48, 50, 44, 46, 46, 48, 102, 94, 72, 70, 70, 68, 66, 68, 66, 64, 64, 92, 86, 84, 50, 96, 94, 48, 46, 102, 52, 98, 54, 100, 70, 6, 68, 4, 66, 2, 72, 8, 86, 20, 86, 82, 82, 88, 84, 26, 88, 26 ], + "width": 382, + "height": 514 + } + }, + "raptor_hindleg_back": { + "raptor_hindleg_back": { + "type": "mesh", + "uvs": [ 0.45041, 0.09352, 0.56933, 0.23361, 0.65294, 0.47296, 0.66353, 0.50822, 0.63174, 0.54254, 0.32383, 0.69723, 0.30068, 0.73875, 0.27934, 0.77704, 0.30417, 0.83513, 0.31058, 0.85014, 0.341, 0.85046, 0.45165, 0.85163, 0.59555, 0.81881, 0.91176, 0.92548, 1, 1, 0.56336, 0.96426, 0.48349, 0.9826, 0.29878, 0.98027, 0.22808, 0.98389, 0.15997, 0.98737, 0.15423, 0.95546, 0.13894, 0.87047, 0.07371, 0.78726, 0, 0.75299, 0, 0.7049, 0, 0.671, 0.11875, 0.64652, 0.16535, 0.52659, 0.28495, 0.47397, 0.2901, 0.45773, 0.29427, 0.4446, 0.20635, 0.40396, 0.06128, 0.33691, 0, 0.25247, 0, 0, 0.30793, 0, 0.27599, 0.20261, 0.40397, 0.31121, 0.48439, 0.45963, 0.48317, 0.48383, 0.47029, 0.51062, 0.22698, 0.67328, 0.17141, 0.7242, 0.17122, 0.78241, 0.22995, 0.89469, 0.24677, 0.90829, 0.28672, 0.9146, 0.46582, 0.91414 ], + "triangles": [ 15, 13, 14, 16, 47, 15, 15, 12, 13, 15, 47, 12, 18, 46, 17, 18, 45, 46, 17, 47, 16, 17, 46, 47, 47, 10, 11, 47, 46, 10, 47, 11, 12, 45, 18, 19, 44, 45, 20, 20, 45, 19, 20, 21, 44, 46, 9, 10, 46, 45, 9, 45, 44, 9, 21, 43, 44, 44, 8, 9, 44, 7, 8, 44, 43, 7, 21, 22, 43, 43, 22, 42, 43, 42, 7, 22, 23, 24, 24, 42, 22, 7, 42, 6, 42, 41, 6, 6, 41, 5, 24, 26, 42, 42, 26, 41, 24, 25, 26, 5, 40, 4, 5, 41, 40, 41, 28, 40, 26, 27, 41, 41, 27, 28, 40, 39, 4, 28, 29, 40, 40, 29, 39, 4, 39, 3, 39, 2, 3, 29, 30, 39, 39, 38, 2, 39, 30, 38, 38, 1, 2, 30, 37, 38, 38, 37, 1, 30, 31, 37, 31, 36, 37, 31, 32, 36, 32, 33, 36, 37, 0, 1, 37, 36, 0, 33, 34, 36, 36, 35, 0, 36, 34, 35 ], + "vertices": [ 1, 44, 53.94, 69.15, 1, 1, 44, 126.23, 67.31, 1, 2, 44, 226.42, 31.13, 0.9375, 45, -30.87, -1.11, 0.0625, 2, 44, 240.84, 25.33, 0.7, 45, -25.64, 13.52, 0.3, 2, 44, 246.67, 8.05, 0.3, 45, -8.60999, 20.02, 0.7, 3, 44, 240.81, -115.25, 0.0625, 45, 114.8, 19.01, 0.875, 46, 9.47999, 59.16, 0.0625, 2, 45, 131.07, 29.69, 0.7, 46, 22.11, 44.35, 0.3, 2, 45, 146.06, 39.54, 0.3, 46, 33.75999, 30.71, 0.7, 3, 45, 152.6, 65.01, 0.12566, 46, 59.85, 27.41, 0.75203, 47, 15.85, 48.05, 0.12229, 3, 45, 154.28, 71.58999, 0.05444, 46, 66.58999, 26.56, 0.78401, 47, 16.71999, 41.31, 0.16154, 3, 46, 71.19, 35.75999, 0.64716, 47, 26.78, 39.16999, 0.13169, 48, -67.32, 18.95999, 0.22114, 3, 46, 87.93, 69.21, 0.0625, 47, 63.37, 31.39, 0.675, 48, -30.17, 23.3, 0.26249, 2, 47, 113.82, 35.72, 0.1038, 48, 16.23, 43.56, 0.89619, 1, 48, 128.14, 12.02, 1, 1, 48, 161.85, -15.81, 1, 2, 47, 90.98, -23.36, 0.0138, 48, 13.52, -19.71999, 0.98619, 2, 47, 62.97, -25.81, 0.7, 48, -12.23, -31.02, 0.3, 3, 46, 115.12, -1.33, 0.08333, 47, 1.93, -12.66, 0.83333, 48, -74.26, -38.09999, 0.08333, 2, 46, 106.11, -23.53, 0.3, 47, -21.8, -9.52, 0.7, 2, 46, 97.43, -44.9, 0.7, 47, -44.67, -6.51, 0.3, 2, 46, 84.26, -40.68999, 0.9375, 47, -43.9, 7.29, 0.0625, 1, 46, 49.18, -29.46, 1, 2, 45, 206.75, 5.37, 0.13333, 46, 7.44, -33.77, 0.86666, 2, 45, 219.64, -20.52, 0.36111, 46, -16.64, -49.8, 0.63888, 2, 45, 208.4, -37.82, 0.72083, 46, -35.22, -40.82, 0.27916, 2, 45, 200.49, -50.02, 0.91666, 46, -48.31, -34.48, 0.08333, 1, 45, 161.1, -36.97, 1, 2, 44, 150.1, -116.76, 0.08333, 45, 119.88, -71.55, 0.91666, 2, 44, 154.99, -70.71, 0.42846, 45, 73.68, -68.47, 0.57153, 2, 44, 150.3, -65.26999, 0.35604, 45, 68.42, -73.36, 0.64395, 2, 44, 146.51, -60.87, 0.59147, 45, 64.17, -77.32, 0.40852, 2, 44, 115.12, -75.08, 0.8446, 45, 79.61, -108.13, 0.15538, 1, 44, 63.33, -98.53, 1, 1, 44, 21.78, -94.55, 1, 1, 44, -66.69, -32.04, 1, 1, 44, -6.62, 52.97, 1, 1, 44, 58.14, -6, 1, 1, 44, 121.17, 2.44, 1, 1, 44, 188.87, -12.1, 1, 2, 44, 197.11, -18.42, 0.7, 45, 19.79, -28.44, 0.3, 2, 44, 203.98, -28.61, 0.3, 45, 29.69, -21.17, 0.7, 1, 45, 136.67, -7.42, 1, 2, 45, 164.32, 0.66, 0.7, 46, -2.53, 7.73, 0.3, 2, 45, 177.97, 21.57, 0.25, 46, 19.92, -3.19, 0.75, 1, 46, 71.93, -6.29, 1, 2, 46, 79.66, -3.72, 0.7, 47, -9.28, 21.04, 0.3, 2, 46, 87.98, 7.25, 0.3125, 47, 3.42, 15.76, 0.6875, 3, 46, 114.16, 61.85, 0.04, 47, 62.84, 4.15, 0.7, 48, -21.95, -2.66, 0.26 ], + "hull": 36, + "edges": [ 66, 68, 66, 64, 56, 54, 54, 52, 52, 50, 46, 44, 44, 42, 34, 32, 32, 30, 30, 28, 28, 26, 26, 24, 24, 22, 10, 8, 8, 6, 6, 4, 4, 2, 2, 0, 68, 70, 0, 70, 46, 48, 48, 50, 14, 12, 12, 10, 60, 58, 58, 56, 42, 40, 40, 38, 18, 16, 16, 14, 22, 20, 20, 18, 38, 36, 36, 34, 60, 62, 62, 64, 68, 72, 72, 74, 74, 76, 76, 78, 78, 80, 80, 82, 82, 84, 84, 86, 16, 88, 86, 88, 18, 90, 90, 38, 88, 90, 20, 92, 92, 36, 90, 92, 92, 94, 94, 22, 94, 32, 30, 24, 88, 40, 86, 14, 84, 12, 82, 10, 82, 52, 48, 84, 44, 86, 78, 6, 4, 76, 80, 8, 80, 56, 58, 78, 76, 60 ], + "width": 338, + "height": 429 + } + }, + "raptor_horn": { + "raptor_horn": { "x": 156.2, "y": 74.1, "rotation": -137.26, "width": 363, "height": 159 } + }, + "raptor_horn_back": { + "raptor_horn_back": { "x": 121.42, "y": 83.01, "rotation": -132.21, "width": 351, "height": 153 } + }, + "raptor_jaw": { + "raptor_jaw": { + "type": "mesh", + "uvs": [ 0.40984, 0.22169, 0.42214, 0.3988, 0.67894, 0.53819, 0.7589, 0.62838, 0.99999, 0.4726, 1, 0.53491, 0.87731, 0.77925, 0.63281, 0.94487, 0.39908, 0.96947, 0.19456, 0.89404, 0.21609, 0.6497, 0, 0.46111, 0, 0, 0.26069, 0, 0.19456, 0.29385 ], + "triangles": [ 14, 13, 0, 14, 0, 1, 5, 3, 4, 10, 14, 1, 11, 14, 10, 6, 3, 5, 2, 10, 1, 7, 2, 3, 7, 3, 6, 2, 8, 10, 8, 9, 10, 2, 7, 8, 14, 12, 13, 11, 12, 14 ], + "vertices": [ 1, 39, 28.6, 68.85, 1, 1, 39, 69.65, 38.95, 1, 1, 39, 150.72, 72.87999, 1, 1, 39, 186.16, 74.79, 1, 1, 39, 199.76, 159.69, 1, 1, 39, 213.35, 148.16, 1, 1, 39, 242.43, 74.42, 1, 1, 39, 230.31, -13.08, 1, 1, 39, 189.56, -71.99, 1, 1, 39, 132.76, -105.6, 1, 1, 39, 83.71, -55.39, 1, 2, 8, -18.31, 12.1, 0.67732, 39, -0.04, -70.76, 0.32267, 1, 8, 113.44, 16.95, 1, 1, 8, 116.36, -62.48, 1, 1, 39, 1.86, 5.43, 1 ], + "hull": 14, + "edges": [ 22, 24, 22, 20, 20, 18, 18, 16, 16, 14, 14, 12, 12, 10, 10, 8, 8, 6, 6, 4, 4, 2, 2, 0, 24, 26, 0, 26, 24, 28, 22, 28, 28, 0 ], + "width": 305, + "height": 286 + } + }, + "raptor_saddle_noshadow": { + "raptor_saddle_noshadow": { "x": 80.83, "y": 10.63, "rotation": -88.64, "width": 326, "height": 375 } + }, + "raptor_saddle_strap_front": { + "raptor_saddle_strap_front": { "x": 128.83, "y": -4.71, "rotation": 61.29, "width": 114, "height": 189 } + }, + "raptor_saddle_strap_rear": { + "raptor_saddle_strap_rear": { + "type": "mesh", + "uvs": [ 0.85499, 0.06802, 1, 0.13237, 1, 0.20266, 0.95981, 0.26524, 0.88583, 0.38045, 0.80684, 0.46413, 0.74038, 0.53453, 0.81676, 0.5895, 0.51961, 1, 0.4516, 1, 0.01739, 0.8407, 0, 0.80889, 0.24645, 0.36639, 0.3792, 0.39151, 0.42457, 0.32099, 0.49229, 0.21571, 0.57673, 0.10986, 0.66437, 0, 0.70168, 0, 0.56028, 0.46321, 0.68822, 0.29772, 0.76845, 0.18722, 0.61529, 0.39206 ], + "triangles": [ 7, 8, 6, 9, 10, 13, 13, 11, 12, 6, 8, 19, 8, 9, 19, 9, 13, 19, 13, 10, 11, 19, 22, 6, 13, 14, 19, 19, 14, 22, 6, 22, 5, 22, 20, 5, 5, 20, 4, 14, 15, 22, 22, 15, 20, 20, 21, 4, 15, 16, 20, 4, 21, 3, 20, 16, 21, 2, 3, 0, 3, 21, 0, 0, 1, 2, 21, 16, 18, 16, 17, 18, 21, 18, 0 ], + "vertices": [ 1, 52, 3.9, -3.27, 1, 1, 52, 4.25, 15.05, 1, 1, 52, 13.24, 20.28, 1, 2, 52, 23.42, 21.2, 0.7, 53, -15.2, 21.22, 0.3, 3, 52, 41.11, 22.87, 0.3, 53, 2.48, 22.89, 0.6375, 54, -33.83, 24.96, 0.0625, 3, 52, 52.07, 21.72, 0.0625, 53, 13.43, 21.74, 0.6375, 54, -22.97, 23.11, 0.3, 2, 53, 18.39, 20.76, 0.25, 54, -18.09, 21.82, 0.75, 1, 54, -18.76, 33.09, 1, 1, 54, 49.92, 31.57, 1, 1, 54, 53.21, 25, 1, 1, 54, 53.11, -27.48, 1, 1, 54, 49.74, -31.27, 1, 1, 54, -20.73, -36.75999, 1, 1, 54, -23.82, -22.28, 1, 3, 52, 53.48, -24.61, 0.0625, 53, 14.84, -24.59, 0.575, 54, -24.51, -23.21, 0.3625, 3, 52, 41.43999, -26.12, 0.3, 53, 2.81, -26.09, 0.6375, 54, -36.62, -23.95, 0.0625, 2, 52, 24.38, -26.12, 0.7, 53, -14.24, -26.1, 0.3, 1, 52, 5.57, -26.12, 1, 1, 52, 3.54, -22.64, 1, 1, 54, -23.08, -0.04, 1, 2, 52, 41.66, -1.72, 0.3125, 53, 3.03, -1.7, 0.6875, 2, 52, 23.85, -2.46, 0.7, 53, -14.77, -2.44, 0.3, 2, 53, 13.95, -1.5, 0.64582, 54, -23.94, -0.11, 0.35416 ], + "hull": 19, + "edges": [ 26, 24, 24, 22, 22, 20, 20, 18, 16, 18, 16, 14, 14, 12, 4, 2, 34, 36, 12, 38, 38, 26, 8, 40, 40, 30, 2, 0, 0, 36, 30, 32, 32, 34, 32, 42, 4, 6, 6, 8, 42, 6, 26, 28, 28, 30, 28, 44, 8, 10, 10, 12, 44, 10 ], + "width": 108, + "height": 148 + } + }, + "raptor_saddle_w_shadow": { + "raptor_saddle_w_shadow": { "x": 80.83, "y": 10.63, "rotation": -88.64, "width": 326, "height": 375 } + }, + "raptor_tongue": { + "raptor_tongue": { + "type": "mesh", + "uvs": [ 0.35242, 0.2156, 0.4794, 0.44245, 0.62071, 0.61176, 0.80562, 0.75373, 1, 0.90297, 1, 1, 0.8971, 1, 0.72054, 0.92254, 0.50668, 0.82872, 0.30401, 0.70725, 0.10537, 0.57888, 0, 0.50622, 0, 0, 0.26224, 0 ], + "triangles": [ 8, 7, 6, 6, 4, 5, 4, 6, 3, 6, 7, 3, 7, 8, 3, 8, 2, 3, 9, 10, 1, 8, 9, 2, 9, 1, 2, 1, 10, 0, 10, 11, 0, 0, 12, 13, 0, 11, 12 ], + "vertices": [ 2, 63, 3.63, 27.04, 0.6875, 64, -47.26, 33.87, 0.3125, 3, 63, 39.09, 19.45, 0.3125, 64, -13.41, 20.86, 0.625, 65, -51.54, 33.37, 0.0625, 3, 63, 71.56, 19.02, 0.0625, 64, 18.58, 15.39, 0.625, 65, -21.56, 20.92, 0.3125, 2, 64, 55.03, 16.85, 0.3125, 65, 14.29, 14.23, 0.6875, 2, 64, 93.34, 18.39, 0.08333, 65, 51.98, 7.21, 0.91666, 1, 65, 56.09, -4.5, 1, 2, 64, 85.06, -1.49, 0.08333, 65, 39.48, -10.33, 0.91666, 2, 64, 54.22, -9.18, 0.3125, 65, 7.71, -10.96, 0.6875, 3, 63, 75.14, -14.72, 0.0625, 64, 16.87, -18.5, 0.625, 65, -30.77, -11.73, 0.3125, 3, 63, 38.8, -25.8, 0.3125, 64, -20.74, -23.8, 0.625, 65, -68.62, -8.53, 0.0625, 2, 63, 2.4, -35.77, 0.6875, 64, -58.25, -27.99, 0.3125, 2, 63, -17.28, -40.62, 0.91666, 64, -78.44999, -29.71, 0.08333, 1, 63, -59.91, 8.18, 1, 2, 63, -26.13, 37.68999, 0.91666, 64, -75.01999, 49.02, 0.08333 ], + "hull": 14, + "edges": [ 22, 24, 10, 12, 10, 8, 24, 26, 16, 4, 18, 16, 2, 4, 18, 2, 22, 20, 0, 26, 20, 0, 0, 2, 12, 14, 14, 16, 4, 6, 6, 8, 14, 6, 20, 18 ], + "width": 171, + "height": 128 + } + }, + "spineboy_torso": { + "torso": { "x": 55.88, "y": 4.86, "rotation": -104.14, "width": 108, "height": 182 } + }, + "stirrup_back": { + "stirrup_back": { "x": 53.2, "y": 31.34, "rotation": -21.12, "width": 87, "height": 69 } + }, + "stirrup_front": { + "stirrup_front": { "x": 36.13, "y": 20.39, "rotation": -21.12, "width": 89, "height": 100 } + }, + "stirrup_strap": { + "stirrup_strap": { + "type": "mesh", + "uvs": [ 0.36822, 0.27893, 0.45737, 0.38897, 0.54451, 0.49651, 0.67872, 0.59135, 0.81977, 0.69102, 1, 0.77344, 1, 1, 0.77956, 1, 0.63729, 0.81629, 0.53364, 0.72348, 0.40534, 0.6086, 0.30886, 0.52535, 0.21049, 0.44047, 0, 0.26245, 0, 0, 0.30637, 0, 0.20241, 0.23 ], + "triangles": [ 2, 10, 1, 9, 10, 2, 9, 2, 3, 8, 9, 3, 8, 3, 4, 7, 8, 4, 7, 4, 5, 7, 5, 6, 16, 14, 15, 13, 14, 16, 16, 15, 0, 12, 16, 0, 12, 0, 1, 13, 16, 12, 11, 12, 1, 10, 11, 1 ], + "vertices": [ 2, 56, 24.71, 8.03, 0.80344, 57, -17.42, 11.02, 0.19655, 2, 56, 37.95, 8.04, 0.59978, 57, -4.36, 8.87, 0.40021, 2, 56, 50.88, 8.04, 0.36895, 57, 8.39, 6.77, 0.63103, 2, 56, 65.92, 12.27, 0.17748, 57, 23.91, 8.47999, 0.82251, 2, 56, 81.72, 16.7, 0.05943, 57, 40.23, 10.28, 0.94056, 2, 56, 98.82, 25.04, 0.01209, 57, 58.46, 15.71, 0.9879, 2, 56, 114.44, 11.57, 0.00191, 57, 71.67, -0.11, 0.99808, 2, 56, 100.47, -4.61, 0.01816, 57, 55.25, -13.81, 0.98182, 2, 56, 78.79, -4.14, 0.07487, 57, 33.93999, -9.81, 0.92512, 2, 56, 65.83, -6.24, 0.2028, 57, 20.81, -9.76, 0.79719, 2, 56, 49.78, -8.83, 0.39971, 57, 4.55, -9.7, 0.60028, 2, 56, 37.93, -10.97, 0.62658, 57, -7.48, -9.88, 0.37341, 2, 56, 25.85, -13.15, 0.82034, 57, -19.75, -10.06, 0.17965, 2, 56, 0.25, -18.03, 0.95288, 57, -45.81, -10.7, 0.04711, 2, 56, -17.83, -2.43, 0.97709, 57, -61.11, 7.63, 0.0229, 2, 56, 1.57, 20.07, 0.94774, 57, -38.29, 26.67, 0.05225, 2, 56, 10.84, -1.23, 0.97709, 57, -32.62, 4.14, 0.0229 ], + "hull": 16, + "edges": [ 28, 30, 30, 0, 12, 10, 8, 10, 12, 14, 14, 16, 26, 28, 24, 26, 26, 32, 32, 30, 20, 22, 22, 24, 0, 2, 2, 4, 4, 6, 6, 8, 16, 18, 18, 20 ], + "width": 97, + "height": 91 + } + }, + "visor": { + "visor": { "x": 99.13, "y": 6.51, "rotation": -70.57, "width": 261, "height": 168 } + } + } +}, +"animations": { + "Jump": { + "bones": { + "root": { + "rotate": [ + { "time": 0, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { + "time": 0.3, + "x": 0, + "y": 0, + "curve": [ 0.201, 0.17, 0.815, 0.83 ] + }, + { "time": 0.6666, "x": 1482.78, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 } + ] + }, + "front_foot_goal": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 0.2, "angle": 0 }, + { "time": 0.3, "angle": -41.64 }, + { "time": 0.3666, "angle": -69.66 }, + { "time": 0.4333, "angle": -12.8 }, + { "time": 0.5333, "angle": 5.73 }, + { "time": 0.6666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.3, "x": 0, "y": 0 }, + { "time": 0.3666, "x": -60.01, "y": 111.1 }, + { "time": 0.4333, "x": 213.18, "y": 291.22 }, + { "time": 0.5333, "x": 243.73, "y": 332.61 }, + { "time": 0.6666, "x": 95.94, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.6666, "x": 1, "y": 1 } + ] + }, + "hip": { + "rotate": [ + { "time": 0, "angle": -4.48 }, + { "time": 0.1, "angle": -23.02 }, + { "time": 0.3, "angle": 19.24 }, + { "time": 0.5333, "angle": 20.85 }, + { "time": 0.6666, "angle": -10.76 }, + { "time": 0.7666, "angle": -18.58 }, + { "time": 0.9333, "angle": -3.56 }, + { "time": 1.0666, "angle": -4.48 } + ], + "translate": [ + { "time": 0, "x": -100.65, "y": 49.77 }, + { + "time": 0.1, + "x": 9.37, + "y": -109.06, + "curve": [ 0.245, 0, 0.609, 0.41 ] + }, + { + "time": 0.1666, + "x": 150.37, + "y": -76.51, + "curve": [ 0.401, 0.34, 0.858, 0.87 ] + }, + { "time": 0.3, "x": 361, "y": 36.69 }, + { + "time": 0.5333, + "x": 5.36, + "y": 290.91, + "curve": [ 0.808, 0, 0.892, 0.81 ] + }, + { "time": 0.6666, "x": -56.27, "y": 88.07 }, + { + "time": 0.7666, + "x": 179.93, + "y": -59.94, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 0.9333, + "x": 238.11, + "y": 50.63, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 1.0666, "x": 213.19, "y": 49.77 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "rear_foot_goal": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 0.2, "angle": 0 }, + { "time": 0.3, "angle": -41.64 }, + { "time": 0.3666, "angle": -69.66 }, + { "time": 0.4333, "angle": -57.97 }, + { "time": 0.7, "angle": -9.19 }, + { "time": 0.7333, "angle": -7.78 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.3, "x": 0, "y": 0 }, + { "time": 0.3666, "x": -131.66, "y": 47.58 }, + { "time": 0.4333, "x": -16.1, "y": 205.84 }, + { "time": 0.5333, "x": 61.29, "y": 320.2 }, + { "time": 0.7333, "x": 235.62, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.7, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.7333, "x": 1, "y": 1 } + ] + }, + "front_leg1": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "front_leg_goal": { + "rotate": [ + { "time": 0, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.3, "x": 0, "y": 0 }, + { "time": 0.7, "x": -0.39, "y": 24.29 }, + { "time": 0.7666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 } + ] + }, + "rear_leg1": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "rear_leg_goal": { + "rotate": [ + { "time": 0, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.3, "x": 0, "y": 0 }, + { "time": 0.7, "x": 6.75, "y": 25.64 }, + { "time": 0.7666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 } + ] + }, + "tail1": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.1, "angle": -11.02 }, + { "time": 0.3, "angle": 0.53 }, + { "time": 0.4333, "angle": 8.64 }, + { "time": 0.7, "angle": -9.73 }, + { + "time": 0.7666, + "angle": -4.46, + "curve": [ 0.243, 0, 0.648, 1 ] + }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "torso1": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "front_leg2": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "rear_leg2": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "saddle": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "tail2": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.1, "angle": -39.83 }, + { "time": 0.3, "angle": -31.82 }, + { "time": 0.4333, "angle": -7.28 }, + { "time": 0.5333, "angle": 1.28 }, + { "time": 0.6, "angle": -7.22 }, + { "time": 0.7, "angle": -30.66 }, + { + "time": 0.7666, + "angle": -40.54, + "curve": [ 0.243, 0, 0.648, 1 ] + }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "torso2": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.1, "angle": 0.51 }, + { "time": 0.3, "angle": -1.9 }, + { "time": 0.5333, "angle": 1.04 }, + { "time": 0.7, "angle": -3.25 }, + { "time": 0.7666, "angle": 4.81 }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "front_arm1": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.1666, "angle": -308.79 }, + { "time": 0.3, "angle": -398.7 }, + { "time": 0.5333, "angle": -297.8 }, + { "time": 0.7, "angle": 62.19 }, + { "time": 0.7666, "angle": -325.36 }, + { "time": 0.8333, "angle": -374.42 }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "front_leg3": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "neck": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.1, "angle": -8.25 }, + { "time": 0.3, "angle": -1.9 }, + { "time": 0.5333, "angle": 5.44 }, + { "time": 0.7, "angle": 24.01 }, + { "time": 0.7666, "angle": 4.82 }, + { "time": 0.8666, "angle": -1.78 }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.1, "x": 0, "y": 0 }, + { "time": 0.3, "x": 62.9, "y": -44.25 }, + { "time": 0.5333, "x": -4.35, "y": 17.31 }, + { "time": 0.7, "x": 0, "y": 0 }, + { "time": 0.7666, "x": 23.29, "y": -42.27 }, + { "time": 0.8666, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "rear_arm1": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.1, "angle": 51.2 }, + { "time": 0.3333, "angle": -38.7 }, + { "time": 0.6, "angle": 62.19, "curve": "stepped" }, + { "time": 0.7333, "angle": 62.19 }, + { "time": 0.8, "angle": 34.62 }, + { "time": 0.8666, "angle": -14.43 }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "rear_leg3": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "saddle_strap_front1": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "saddle_strap_rear1": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "spineboy_front_arm_goal": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "spineboy_hip": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 0.8666, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 }, + { "time": 0.1, "x": 35.96, "y": -11.83 }, + { "time": 0.3, "x": 31.1, "y": -50.39 }, + { "time": 0.5333, "x": 12.1, "y": -8.03 }, + { "time": 0.7, "x": 41.7, "y": -19.46 }, + { "time": 0.8666, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.8666, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "spineboy_rear_arm_goal": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "stirrup": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "stirrup_strap1": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "tail3": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.1, "angle": -8.97 }, + { "time": 0.3, "angle": -18.38 }, + { "time": 0.4333, "angle": 0.9 }, + { "time": 0.5333, "angle": 11.43 }, + { "time": 0.6, "angle": 17.22 }, + { "time": 0.7, "angle": 4.74 }, + { + "time": 0.7666, + "angle": -20.69, + "curve": [ 0.243, 0, 0.648, 1 ] + }, + { + "time": 0.9666, + "angle": -20.4, + "curve": [ 0.382, 0.57, 0.735, 1 ] + }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "back_thigh": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "front_arm2": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.1, "angle": 23.1 }, + { "time": 0.3, "angle": -75.92 }, + { "time": 0.5333, "angle": -1.41 }, + { "time": 0.7666, "angle": 26.86 }, + { "time": 0.8333, "angle": -56.14 }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "front_foot1": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "front_thigh": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "gun": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.1, "angle": 15.27 }, + { "time": 0.3, "angle": -53.4 }, + { "time": 0.5666, "angle": -63.35 }, + { "time": 0.7666, "angle": -29.92 }, + { "time": 0.9, "angle": 7.24 }, + { "time": 1, "angle": -3.69 }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "head": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.1, "angle": 9.93 }, + { "time": 0.3, "angle": -3.76 }, + { "time": 0.5333, "angle": -26.63 }, + { "time": 0.7, "angle": -10.23 }, + { "time": 0.7666, "angle": 21.8 }, + { "time": 0.8666, "angle": 15.36 }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "rear_arm2": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.1, "angle": 23.1 }, + { "time": 0.3, "angle": -75.92 }, + { "time": 0.5333, "angle": -1.41 }, + { "time": 0.7666, "angle": 26.86 }, + { "time": 0.8333, "angle": -56.14 }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "rear_foot1": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "saddle_strap_front2": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "saddle_strap_rear2": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "spineboy_torso": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.1666, "angle": -24.93 }, + { "time": 0.2333, "angle": -20.34 }, + { "time": 0.5333, "angle": -11.2 }, + { "time": 0.7, "angle": 10.49 }, + { + "time": 0.8333, + "angle": -30.21, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 1, "angle": 1.34 }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "stirrup_strap2": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "tail4": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.1, "angle": 34.12 }, + { "time": 0.3, "angle": -12.25 }, + { "time": 0.4333, "angle": 11.11 }, + { "time": 0.5333, "angle": 25.19 }, + { "time": 0.6, "angle": 32.5 }, + { "time": 0.7, "angle": 24.4 }, + { + "time": 0.7666, + "angle": 9.9, + "curve": [ 0.243, 0, 0.648, 1 ] + }, + { + "time": 0.9666, + "angle": -11.72, + "curve": [ 0.382, 0.57, 0.735, 1 ] + }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "back_arm": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "back_knee": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "front_arm": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "front_foot2": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 0.3, "angle": 0 }, + { "time": 0.3666, "angle": -63.6 }, + { "time": 0.4333, "angle": -80.16 }, + { "time": 0.5333, "angle": -17.48 }, + { "time": 0.6666, "angle": 24.85 }, + { "time": 0.7666, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.6666, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.6666, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "front_hand": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.5333, "angle": -27.74 }, + { "time": 0.7666, "angle": -27.09 }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "horn_front": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "horn_rear": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "jaw": { + "rotate": [ + { "time": 0, "angle": 15.56 }, + { "time": 0.2333, "angle": -0.92 }, + { "time": 0.5, "angle": 20.4 }, + { "time": 0.7, "angle": 18.32 }, + { "time": 0.7666, "angle": 5.17 }, + { "time": 0.8333, "angle": 20.34 }, + { "time": 1.0666, "angle": 15.56 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "lower_leg": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "neck2": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.1, "angle": 11.08 }, + { "time": 0.8333, "angle": 8.16 }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "rear_foot2": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 0.3, "angle": 0 }, + { "time": 0.3666, "angle": -87.93 }, + { "time": 0.4333, "angle": -126.75 }, + { "time": 0.5333, "angle": -63.79 }, + { "time": 0.7, "angle": 24.85 }, + { "time": 0.7666, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.7, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.7, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "rear_hand": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.5333, "angle": -27.74 }, + { "time": 0.7666, "angle": -27.09 }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "saddle_strap_rear3": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "tail5": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.1, "angle": 76.87 }, + { "time": 0.3, "angle": -12.25 }, + { "time": 0.4333, "angle": 10.5 }, + { "time": 0.5333, "angle": 24.81 }, + { "time": 0.6, "angle": 32.21 }, + { "time": 0.7, "angle": 24.4 }, + { + "time": 0.7666, + "angle": 9.9, + "curve": [ 0.243, 0, 0.648, 1 ] + }, + { + "time": 0.9666, + "angle": -41.66, + "curve": [ 0.382, 0.57, 0.735, 1 ] + }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "tongue1": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "back_bracer": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "front_arm_target": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "front_bracer": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "front_foot3": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 0.3, "angle": 0 }, + { "time": 0.3666, "angle": -84.17 }, + { "time": 0.4333, "angle": -127.53 }, + { "time": 0.5333, "angle": -52.16 }, + { "time": 0.6666, "angle": 10.77 }, + { "time": 0.7666, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.6666, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.6666, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "head2": { + "rotate": [ + { "time": 0, "angle": 15.31 }, + { "time": 0.1, "angle": 29.85 }, + { "time": 0.2, "angle": 22.43 }, + { "time": 0.3, "angle": 12.64 }, + { "time": 0.4666, "angle": 24.85 }, + { "time": 0.5333, "angle": 9.28 }, + { "time": 0.7, "angle": 4.77 }, + { "time": 0.7666, "angle": 37.9 }, + { + "time": 0.8333, + "angle": 18.87, + "curve": [ 0.056, 0.81, 0.75, 1 ] + }, + { "time": 1, "angle": 22.96 }, + { "time": 1.0666, "angle": 15.31 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "rear_arm_target": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "tongue2": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "back_hand": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "front_hand2": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "tongue3": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + } + } + }, + "empty": {}, + "gungrab": { + "slots": { + "front_hand": { + "attachment": [ + { "time": 0, "name": "front_open_hand" }, + { "time": 0.1666, "name": "gun" } + ] + }, + "gun": { + "attachment": [ + { "time": 0, "name": "gun_nohand" }, + { "time": 0.1666, "name": null } + ] + } + }, + "bones": { + "front_hand2": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.1333, "angle": 12.33 }, + { "time": 0.1666, "angle": -89.54 }, + { "time": 0.2333, "angle": -79.78 }, + { "time": 0.4666, "angle": -10.18 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 }, + { "time": 0.1666, "x": 0.938, "y": 0.938 }, + { "time": 0.4666, "x": 1, "y": 1 } + ] + }, + "front_arm": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.0666, "angle": -31.99 }, + { + "time": 0.1666, + "angle": 223.11, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 0.2333, + "angle": 155.19, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 0.3666, + "angle": 246.13, + "curve": [ 0.184, 0.33, 0.75, 1 ] + }, + { "time": 0.4666, "angle": -56.74 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 }, + { "time": 0.1666, "x": 6.49, "y": -2.66 }, + { "time": 0.2333, "x": 6.84, "y": 4.79 }, + { "time": 0.4666, "x": 0, "y": 0 } + ] + }, + "front_bracer": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.1666, "angle": 86.01 }, + { "time": 0.2333, "angle": 114.94 }, + { + "time": 0.3666, + "angle": 81.86, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 0.4666, "angle": 34.73 } + ] + } + }, + "ik": { + "front_arm_goal": [ + { "time": 0, "mix": 0 } + ] + } + }, + "walk": { + "bones": { + "root": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "front_foot_goal": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.2666, "angle": -51.26 }, + { "time": 0.4, "angle": -65.17 }, + { "time": 0.5333, "angle": -76.28 }, + { "time": 0.8, "angle": -76.52 }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 343.28, "y": 36.5 }, + { "time": 0.2666, "x": 86.5, "y": 36.99 }, + { "time": 0.5333, "x": -173.36, "y": 37.42 }, + { "time": 0.6, "x": -68.15, "y": 141.15 }, + { "time": 0.7333, "x": 91.78, "y": 238.01 }, + { "time": 0.8, "x": 155.89, "y": 190.91 }, + { "time": 0.9666, "x": 303.28, "y": 94.4 }, + { "time": 1.0666, "x": 343.28, "y": 36.5 } + ] + }, + "hip": { + "rotate": [ + { "time": 0, "angle": -4.78 }, + { "time": 0.0666, "angle": -3.99 }, + { "time": 0.2666, "angle": -12.49 }, + { "time": 0.5333, "angle": -4.78 }, + { "time": 0.6, "angle": -3.99 }, + { "time": 0.8, "angle": -12.49 }, + { "time": 1.0666, "angle": -4.78 } + ], + "translate": [ + { + "time": 0, + "x": 161.93, + "y": 4.89, + "curve": [ 0.27, 0.37, 0.62, 0.4 ] + }, + { + "time": 0.0666, + "x": 165.04, + "y": -5.99, + "curve": [ 0.244, 0, 0.757, 1 ] + }, + { + "time": 0.2666, + "x": 178.8, + "y": 136.52, + "curve": [ 0.25, 0, 0.841, 0.8 ] + }, + { + "time": 0.5333, + "x": 161.93, + "y": 4.89, + "curve": [ 0.27, 0.37, 0.62, 0.4 ] + }, + { + "time": 0.6, + "x": 165.04, + "y": -5.99, + "curve": [ 0.244, 0, 0.757, 1 ] + }, + { + "time": 0.8, + "x": 178.8, + "y": 136.52, + "curve": [ 0.25, 0, 0.858, 0.82 ] + }, + { "time": 1.0666, "x": 161.93, "y": 4.89 } + ] + }, + "rear_foot_goal": { + "rotate": [ + { "time": 0, "angle": -62.73 }, + { "time": 0.2666, "angle": -107.17 }, + { "time": 0.4666, "angle": -40.51 }, + { "time": 0.8, "angle": -97.15 }, + { "time": 1.0666, "angle": -62.73 } + ], + "translate": [ + { "time": 0, "x": -266.69, "y": -15.46 }, + { "time": 0.1333, "x": -87.88, "y": 124.85 }, + { "time": 0.2666, "x": 88.35, "y": 134.06 }, + { "time": 0.3666, "x": 198.39, "y": 90.64 }, + { "time": 0.4666, "x": 308.19, "y": -26.42 }, + { "time": 0.6, "x": 167.06, "y": -26.42 }, + { "time": 1.0666, "x": -266.69, "y": -15.46 } + ] + }, + "front_leg1": { + "rotate": [ + { "time": 0, "angle": 27.07 }, + { "time": 1.0666, "angle": 31.39 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 }, + { "time": 0.0666, "x": -0.21, "y": 15.19 }, + { "time": 0.5333, "x": -0.33, "y": 12.15 }, + { "time": 0.7333, "x": -4.74, "y": 31.93 }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "front_leg_goal": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": -18.04, "y": -2.88 }, + { "time": 0.4333, "x": -42.2, "y": -88.63 }, + { "time": 0.5333, "x": -27.31, "y": -43.9 }, + { "time": 0.7333, "x": -1.52, "y": -94.28 }, + { "time": 0.8, "x": -24.29, "y": -116.41 }, + { "time": 1, "x": -41.88, "y": -93.3 }, + { "time": 1.0666, "x": -18.04, "y": -2.88 } + ] + }, + "rear_leg1": { + "rotate": [ + { "time": 0, "angle": -64.85 }, + { "time": 1.0666, "angle": -45.71 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "rear_leg_goal": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": -2.05, "y": 15.12 }, + { "time": 0.2666, "x": 17.49, "y": -150.43 }, + { "time": 0.4666, "x": -40.21, "y": -81.76 }, + { "time": 0.5333, "x": -31.68, "y": -82.43 }, + { "time": 0.8, "x": 2.65, "y": -169.21 }, + { "time": 0.9333, "x": -16.76, "y": -98.31 }, + { "time": 1.0666, "x": -2.05, "y": 15.12 } + ] + }, + "tail1": { + "rotate": [ + { "time": 0, "angle": 1.3 }, + { "time": 0.0666, "angle": 4.13 }, + { "time": 0.3333, "angle": -5.77 }, + { "time": 0.6333, "angle": 4.13 }, + { "time": 0.9, "angle": -5.77 }, + { "time": 1.0666, "angle": 1.3 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.0666, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "torso1": { + "rotate": [ + { "time": 0, "angle": 7.21 }, + { "time": 0.2666, "angle": 4.19 }, + { "time": 0.5333, "angle": 7.21 }, + { "time": 0.8, "angle": 4.19 }, + { "time": 1.0666, "angle": 7.21 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "front_leg2": { + "rotate": [ + { "time": 0, "angle": -347.28 }, + { "time": 1.0666, "angle": -362.06 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "rear_leg2": { + "rotate": [ + { "time": 0, "angle": 27.05 }, + { "time": 1.0666, "angle": 9.92 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "saddle": { + "rotate": [ + { "time": 0, "angle": -2.51 }, + { "time": 0.2666, "angle": -4.17 }, + { "time": 0.5333, "angle": -3.85 }, + { "time": 0.8, "angle": -3.09 }, + { "time": 1.0666, "angle": -2.51 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { + "time": 0.2666, + "x": 0, + "y": 0, + "curve": [ 0.149, 0.28, 0.75, 1 ] + }, + { + "time": 0.3333, + "x": -0.03, + "y": 5.91, + "curve": [ 0.421, 0, 0.85, 0.78 ] + }, + { "time": 0.5333, "x": 0, "y": 0 }, + { "time": 0.6, "x": -0.2, "y": -2.35 }, + { + "time": 0.8, + "x": 0, + "y": 0, + "curve": [ 0.149, 0.28, 0.75, 1 ] + }, + { + "time": 0.8666, + "x": -0.03, + "y": 5.91, + "curve": [ 0.421, 0, 0.85, 0.78 ] + }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "tail2": { + "rotate": [ + { "time": 0, "angle": -19.15 }, + { "time": 0.2333, "angle": -11.3 }, + { "time": 0.5, "angle": -9.37 }, + { "time": 0.7666, "angle": -11.3 }, + { "time": 1.0333, "angle": -20.27 }, + { "time": 1.0666, "angle": -19.15 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 0.8, "y": 1 }, + { "time": 0.2333, "x": 0.9, "y": 1 }, + { "time": 0.5, "x": 0.8, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 0.8, "y": 1 } + ] + }, + "torso2": { + "rotate": [ + { "time": 0, "angle": 8.6 }, + { + "time": 0.2666, + "angle": 9.52, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 0.5333, "angle": 8.01 }, + { + "time": 0.8, + "angle": 5.48, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 1.0666, "angle": 8.6 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "front_arm1": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.5, "angle": -367.82 }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 20.64, "y": -7.55 }, + { "time": 0.5, "x": -2.86, "y": 3.32 }, + { "time": 0.8, "x": 24.09, "y": -1.47 }, + { "time": 0.9333, "x": 21.73, "y": -3.7 }, + { "time": 1.0666, "x": 20.64, "y": -7.55 } + ] + }, + "front_leg3": { + "rotate": [ + { "time": 0, "angle": 1.14, "curve": "stepped" }, + { "time": 1.0666, "angle": 1.14 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "neck": { + "rotate": [ + { "time": 0, "angle": 6.5 }, + { "time": 0.2666, "angle": 12.71 }, + { "time": 0.5333, "angle": 6.5 }, + { "time": 0.8, "angle": 12.71 }, + { "time": 1.0666, "angle": 6.5 } + ], + "translate": [ + { "time": 0, "x": 12.59, "y": -31.3 }, + { + "time": 0.2666, + "x": -10.84, + "y": -72.28, + "curve": [ 0.204, 0.01, 0.861, 0.86 ] + }, + { "time": 0.5333, "x": 12.59, "y": -31.3 }, + { + "time": 0.8, + "x": -10.84, + "y": -72.28, + "curve": [ 0.204, 0.01, 0.861, 0.86 ] + }, + { "time": 1.0666, "x": 12.59, "y": -31.3 } + ] + }, + "rear_arm1": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.5, "angle": 13.71 }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 }, + { "time": 0.5, "x": 11.12, "y": -13.38 }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "rear_leg3": { + "rotate": [ + { "time": 0, "angle": -23.18, "curve": "stepped" }, + { "time": 1.0666, "angle": -23.18 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "saddle_strap_front1": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "saddle_strap_rear1": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "tail3": { + "rotate": [ + { "time": 0, "angle": -12.46 }, + { "time": 0.2333, "angle": 12.65 }, + { "time": 0.5, "angle": -20.79 }, + { "time": 0.7666, "angle": 12.65 }, + { "time": 1.0333, "angle": -16.04 }, + { "time": 1.0666, "angle": -12.46 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.2333, "x": 1, "y": 1 }, + { "time": 0.5, "x": 0.997, "y": 1 }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "front_arm2": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.5, "angle": 22.44 }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "front_foot1": { + "rotate": [ + { "time": 0, "angle": -41.33, "curve": "stepped" }, + { "time": 1.0666, "angle": -41.33 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "head": { + "rotate": [ + { "time": 0, "angle": -7.36 }, + { + "time": 0.1333, + "angle": -12.99, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 0.4, "angle": -6.12 }, + { "time": 0.5333, "angle": -7.36 }, + { + "time": 0.6666, + "angle": -12.99, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 0.9333, "angle": -6.12 }, + { "time": 1.0666, "angle": -7.36 } + ], + "translate": [ + { "time": 0, "x": -3.88, "y": -32.87 }, + { "time": 0.9333, "x": -3.33, "y": -22.81 }, + { "time": 1.0666, "x": -3.88, "y": -32.87 } + ] + }, + "rear_arm2": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.5, "angle": -30.2 }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "rear_foot1": { + "rotate": [ + { "time": 0, "angle": 2.07, "curve": "stepped" }, + { "time": 1.0666, "angle": 2.07 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "saddle_strap_front2": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "saddle_strap_rear2": { + "rotate": [ + { "time": 0, "angle": -4.44 }, + { "time": 0.1, "angle": -2.66 }, + { "time": 0.3, "angle": -0.35 }, + { "time": 0.4333, "angle": -1.7 }, + { "time": 0.6333, "angle": -2.54 }, + { "time": 0.9, "angle": -0.51 }, + { "time": 1.0666, "angle": -4.44 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "stirrup": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.2666, "angle": -4.95 }, + { "time": 0.5333, "angle": 0 }, + { "time": 0.8, "angle": -4.95 }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 8.97, "y": 4.99 }, + { "time": 0.2666, "x": 4.85, "y": 0.99 }, + { "time": 0.5333, "x": 7.75, "y": -2.99 }, + { "time": 0.8, "x": 4.85, "y": 0.99 }, + { "time": 1.0666, "x": 8.97, "y": 4.99 } + ] + }, + "tail4": { + "rotate": [ + { "time": 0, "angle": 10.25 }, + { + "time": 0.2333, + "angle": 39.47, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 0.5, "angle": 1.33 }, + { + "time": 0.7666, + "angle": 39.47, + "curve": [ 0.664, 0, 0.75, 1 ] + }, + { "time": 1.0333, "angle": 6.08 }, + { "time": 1.0666, "angle": 10.25 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.2333, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.5, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "front_foot2": { + "rotate": [ + { "time": 0, "angle": 36.9 }, + { "time": 0.0666, "angle": 7.88 }, + { "time": 0.1333, "angle": 4.66 }, + { "time": 0.4, "angle": 7.59 }, + { "time": 0.5333, "angle": 8.08 }, + { "time": 0.6666, "angle": -67.33 }, + { "time": 0.7333, "angle": -65.23 }, + { "time": 1, "angle": 27.74 }, + { "time": 1.0666, "angle": 36.9 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "front_hand": { + "rotate": [ + { "time": 0, "angle": 9.49 }, + { "time": 0.5, "angle": -48.6 }, + { "time": 1.0666, "angle": 9.49 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "horn_front": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 }, + { "time": 0.2666, "x": -7.18, "y": -1.38 }, + { "time": 0.5333, "x": 0, "y": 0 }, + { "time": 0.8, "x": -7.18, "y": -1.38 }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "horn_rear": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 }, + { "time": 0.2666, "x": 12.34, "y": 9.16 }, + { "time": 0.5333, "x": 0, "y": 0 }, + { "time": 0.8, "x": 12.34, "y": 9.16 }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "jaw": { + "rotate": [ + { "time": 0, "angle": 25.56 }, + { "time": 0.2, "angle": 21.27 }, + { "time": 0.3333, "angle": 21.35 }, + { "time": 0.6666, "angle": 15.6 }, + { "time": 0.8666, "angle": 22.96 }, + { "time": 1.0666, "angle": 25.56 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "rear_foot2": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.1333, "angle": -82.37 }, + { "time": 0.2666, "angle": -110.3 }, + { "time": 0.4333, "angle": 36.21 }, + { "time": 0.5333, "angle": 2.1 }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "rear_hand": { + "rotate": [ + { "time": 0, "angle": -28.89 }, + { "time": 0.5, "angle": 12.19 }, + { "time": 1.0666, "angle": -28.89 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "saddle_strap_rear3": { + "rotate": [ + { "time": 0, "angle": -1.31 }, + { "time": 0.1, "angle": 0.46 }, + { "time": 0.3, "angle": 2.77 }, + { "time": 0.4333, "angle": 1.42 }, + { "time": 0.6333, "angle": 0.58 }, + { "time": 0.9, "angle": 2.61 }, + { "time": 1.0666, "angle": -1.31 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "tail5": { + "rotate": [ + { + "time": 0, + "angle": -26.34, + "curve": [ 0.391, -0.58, 0.653, 1.01 ] + }, + { + "time": 0.2333, + "angle": 45.41, + "curve": [ 0.391, -0.58, 0.653, 1.01 ] + }, + { + "time": 0.5, + "angle": -21.92, + "curve": [ 0.391, -0.58, 0.653, 1.01 ] + }, + { + "time": 0.7666, + "angle": 45.41, + "curve": [ 0.391, -0.58, 0.653, 1.01 ] + }, + { "time": 1.0333, "angle": -7.73 }, + { "time": 1.0666, "angle": -26.34 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 0.765, "y": 1 }, + { "time": 0.2333, "x": 1, "y": 1 }, + { "time": 0.5, "x": 0.765, "y": 1 }, + { "time": 0.7666, "x": 1, "y": 1 }, + { "time": 1.0666, "x": 0.765, "y": 1 } + ] + }, + "tongue1": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.3333, "angle": 7.55 }, + { "time": 0.6666, "angle": -1.68 }, + { "time": 0.9333, "angle": 8.11 }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "front_foot3": { + "rotate": [ + { "time": 0, "angle": -1.65 }, + { "time": 0.0666, "angle": -5.29 }, + { "time": 0.1333, "angle": -3.94 }, + { "time": 0.2666, "angle": -3.81 }, + { "time": 0.5333, "angle": -5.89 }, + { "time": 0.6, "angle": -21.2 }, + { "time": 0.6666, "angle": -73.63 }, + { "time": 0.7333, "angle": -102.81 }, + { "time": 0.8333, "angle": -41.3 }, + { "time": 1, "angle": 10.93 }, + { "time": 1.0666, "angle": -1.65 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "tongue2": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.3333, "angle": 7.55 }, + { "time": 0.6666, "angle": -1.68 }, + { "time": 0.9333, "angle": 8.11 }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "tongue3": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.3333, "angle": 7.55 }, + { "time": 0.6666, "angle": -1.68 }, + { "time": 0.9333, "angle": 8.11 }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "head2": { + "rotate": [ + { "time": 0, "angle": 38.59 }, + { "time": 0.2666, "angle": 43.18 }, + { "time": 0.5333, "angle": 38.59 }, + { "time": 0.8, "angle": 43.18 }, + { "time": 1.0666, "angle": 38.59 } + ] + }, + "neck2": { + "rotate": [ + { "time": 0, "angle": 9.65 }, + { "time": 0.2666, "angle": 14.71 }, + { "time": 0.5333, "angle": 9.65 }, + { "time": 0.8, "angle": 14.71 }, + { "time": 1.0666, "angle": 9.65 } + ] + }, + "spineboy_hip": { + "translate": [ + { + "time": 0, + "x": 32.54, + "y": 1.34, + "curve": [ 0.412, 0, 0.872, 0.78 ] + }, + { + "time": 0.2666, + "x": -12.88, + "y": 0.58, + "curve": [ 0.138, 0.17, 0.75, 1 ] + }, + { + "time": 0.5333, + "x": 32.54, + "y": 1.34, + "curve": [ 0.367, 0, 0.867, 0.81 ] + }, + { + "time": 0.8, + "x": -12.88, + "y": 0.58, + "curve": [ 0.164, 0.17, 0.75, 1 ] + }, + { "time": 1.0666, "x": 32.54, "y": 1.34 } + ] + }, + "spineboy_torso": { + "rotate": [ + { "time": 0, "angle": -37.93 }, + { + "time": 0.2666, + "angle": -29.47, + "curve": [ 0.492, 0, 0.75, 1 ] + }, + { "time": 0.5333, "angle": -37.93 }, + { + "time": 0.8, + "angle": -29.47, + "curve": [ 0.492, 0, 0.75, 1 ] + }, + { "time": 1.0666, "angle": -37.71 } + ] + }, + "front_arm": { + "translate": [ + { "time": 0, "x": 0, "y": 0 }, + { "time": 0.3333, "x": -14.43, "y": -11.03 }, + { "time": 0.5333, "x": 0, "y": 0 }, + { "time": 0.8, "x": -14.43, "y": -11.03 }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "gun": { + "rotate": [ + { + "time": 0, + "angle": -11.68, + "curve": [ 0.379, 0.6, 0.724, 1 ] + }, + { "time": 0.0666, "angle": -17.59 }, + { + "time": 0.3333, + "angle": 14.45, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 0.6, + "angle": -24.74, + "curve": [ 0.326, 0, 0.715, 1 ] + }, + { + "time": 0.8666, + "angle": 14.45, + "curve": [ 0.242, 0, 0.666, 0.66 ] + }, + { "time": 1.0666, "angle": -11.68 } + ], + "translate": [ + { "time": 0, "x": 0.84, "y": -3.81 }, + { "time": 0.0666, "x": 0, "y": 0 }, + { "time": 0.3333, "x": 3.37, "y": -15.27 }, + { "time": 0.6, "x": 0, "y": 0 }, + { "time": 0.8666, "x": 3.37, "y": -15.27 }, + { "time": 1.0666, "x": 0.84, "y": -3.81 } + ] + } + }, + "deform": { + "default": { + "raptor_body": { + "raptor_body": [ + { "time": 0 }, + { + "time": 0.2666, + "offset": 314, + "vertices": [ -16.78684, 15.47479, -0.63024, 22.82083, 18.11511, 13.89254, 19.32452, 12.15423, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3.24548, 0.81152, -3.24548, 0.81152, -3.24548, 0.81152, -3.24548, 0.81152, -3.24548, 0.81152, -3.24548, 0.81152, 0, 0, 0, 0, 0, 0, -3.24548, 0.81152, 0, 0, -3.24548, 0.81152 ] + }, + { "time": 0.5333 }, + { + "time": 0.8, + "offset": 314, + "vertices": [ -16.78684, 15.47479, -0.63024, 22.82083, 18.11511, 13.89254, 19.32452, 12.15423, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3.24548, 0.81152, -3.24548, 0.81152, -3.24548, 0.81152, -3.24548, 0.81152, -3.24548, 0.81152, -3.24548, 0.81152, 0, 0, 0, 0, 0, 0, -3.24548, 0.81152, 0, 0, -3.24548, 0.81152 ] + }, + { "time": 1.0666 } + ] + }, + "raptor_front_leg": { + "raptor_front_leg": [ + { "time": 0, "curve": "stepped" }, + { "time": 0.2666 }, + { + "time": 0.5333, + "offset": 138, + "vertices": [ -2.23608, 21.95403, 21.54915, -4.7554 ] + }, + { + "time": 0.6, + "offset": 138, + "vertices": [ 7.17962, 15.14358, 15.26523, -6.91741 ] + }, + { + "time": 0.7333, + "offset": 110, + "vertices": [ -0.82485, 0.73406, -0.01284, -1.10443, 0, 0, 0, 0, 1.4866, -2.59426, 0.98071, 2.82342, 2.7366, -10.49935, 6.12506, 8.95282, -2.60873, -2.28384, 3.43417, -0.47045, -2.28305, -4.76037, 5.08892, 1.40078, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.37966, -1.75515, -2.13229, -0.65667, -2.86239, -0.77365, 2.45989, -1.65319 ] + }, + { "time": 0.8, "curve": "stepped" }, + { "time": 0.9666, "curve": "stepped" }, + { "time": 1.0666 } + ] + } + } + } + } +} +} \ No newline at end of file diff --git a/spine-corona/data/raptor.png b/spine-corona/data/raptor.png new file mode 100644 index 000000000..503d1c446 Binary files /dev/null and b/spine-corona/data/raptor.png differ diff --git a/spine-corona/data/spineboy.atlas b/spine-corona/data/spineboy.atlas new file mode 100644 index 000000000..2454a1f47 --- /dev/null +++ b/spine-corona/data/spineboy.atlas @@ -0,0 +1,216 @@ + +spineboy.png +size: 1024,1024 +format: RGBA8888 +filter: Linear,Linear +repeat: none +eye_indifferent + rotate: true + xy: 648, 629 + size: 93, 89 + orig: 93, 89 + offset: 0, 0 + index: -1 +eye_surprised + rotate: true + xy: 233, 179 + size: 93, 89 + orig: 93, 89 + offset: 0, 0 + index: -1 +front_bracer + rotate: false + xy: 245, 2 + size: 58, 80 + orig: 58, 80 + offset: 0, 0 + index: -1 +front_fist_closed + rotate: false + xy: 168, 45 + size: 75, 82 + orig: 75, 82 + offset: 0, 0 + index: -1 +front_fist_open + rotate: false + xy: 844, 646 + size: 86, 87 + orig: 86, 87 + offset: 0, 0 + index: -1 +front_foot + rotate: true + xy: 310, 326 + size: 126, 69 + orig: 126, 69 + offset: 0, 0 + index: -1 +front_foot_bend1 + rotate: true + xy: 951, 894 + size: 128, 70 + orig: 128, 70 + offset: 0, 0 + index: -1 +front_foot_bend2 + rotate: false + xy: 2, 33 + size: 108, 93 + orig: 108, 93 + offset: 0, 0 + index: -1 +front_shin + rotate: true + xy: 739, 735 + size: 82, 184 + orig: 82, 184 + offset: 0, 0 + index: -1 +front_thigh + rotate: false + xy: 381, 340 + size: 48, 112 + orig: 48, 112 + offset: 0, 0 + index: -1 +front_upper_arm + rotate: false + xy: 112, 29 + size: 54, 97 + orig: 54, 97 + offset: 0, 0 + index: -1 +goggles + rotate: false + xy: 156, 454 + size: 261, 166 + orig: 261, 166 + offset: 0, 0 + index: -1 +gun + rotate: false + xy: 739, 819 + size: 210, 203 + orig: 210, 203 + offset: 0, 0 + index: -1 +head + rotate: false + xy: 466, 724 + size: 271, 298 + orig: 271, 298 + offset: 0, 0 + index: -1 +hoverboard_board + rotate: true + xy: 2, 128 + size: 492, 152 + orig: 492, 152 + offset: 0, 0 + index: -1 +hoverboard_thruster + rotate: false + xy: 602, 558 + size: 60, 64 + orig: 60, 64 + offset: 0, 0 + index: -1 +hoverglow_small + rotate: true + xy: 156, 178 + size: 274, 75 + orig: 274, 75 + offset: 0, 0 + index: -1 +mouth_grind + rotate: true + xy: 951, 799 + size: 93, 59 + orig: 93, 59 + offset: 0, 0 + index: -1 +mouth_oooo + rotate: true + xy: 245, 84 + size: 93, 59 + orig: 93, 59 + offset: 0, 0 + index: -1 +mouth_smile + rotate: false + xy: 925, 738 + size: 93, 59 + orig: 93, 59 + offset: 0, 0 + index: -1 +muzzle + rotate: false + xy: 2, 622 + size: 462, 400 + orig: 462, 400 + offset: 0, 0 + index: -1 +neck + rotate: false + xy: 168, 2 + size: 36, 41 + orig: 36, 41 + offset: 0, 0 + index: -1 +rear_bracer + rotate: false + xy: 932, 664 + size: 56, 72 + orig: 56, 72 + offset: 0, 0 + index: -1 +rear_foot + rotate: false + xy: 487, 562 + size: 113, 60 + orig: 113, 60 + offset: 0, 0 + index: -1 +rear_foot_bend1 + rotate: true + xy: 419, 503 + size: 117, 66 + orig: 117, 66 + offset: 0, 0 + index: -1 +rear_foot_bend2 + rotate: false + xy: 739, 650 + size: 103, 83 + orig: 103, 83 + offset: 0, 0 + index: -1 +rear_shin + rotate: false + xy: 233, 274 + size: 75, 178 + orig: 75, 178 + offset: 0, 0 + index: -1 +rear_thigh + rotate: true + xy: 487, 495 + size: 65, 104 + orig: 65, 104 + offset: 0, 0 + index: -1 +rear_upper_arm + rotate: true + xy: 156, 129 + size: 47, 87 + orig: 47, 87 + offset: 0, 0 + index: -1 +torso + rotate: true + xy: 466, 624 + size: 98, 180 + orig: 98, 180 + offset: 0, 0 + index: -1 diff --git a/spine-corona/spineboy-atlas/spineboy.json b/spine-corona/data/spineboy.json similarity index 97% rename from spine-corona/spineboy-atlas/spineboy.json rename to spine-corona/data/spineboy.json index 2e422677a..074333537 100644 --- a/spine-corona/spineboy-atlas/spineboy.json +++ b/spine-corona/data/spineboy.json @@ -1,39 +1,31 @@ { +"skeleton": { "hash": "rPoYyBLFG6F0CGZ5wsUEBKDJU9U", "spine": "3.4.02", "width": 470.9, "height": 731.49, "images": "./images/" }, "bones": [ { "name": "hip", "y": 247.47 }, - { "name": "front_thigh", "parent": "hip", "length": 74.8, "x": -17.45, "y": -11.64, "rotation": -95.51, "color": "00ff04ff" }, - { "name": "rear_thigh", "parent": "hip", "length": 85.71, "x": 8.91, "y": -5.62, "rotation": -72.54, "color": "ff000dff" }, - { "name": "torso", "parent": "hip", "length": 127.55, "x": -1.61, "y": 4.9, "rotation": 103.82, "color": "e0da19ff" }, - { - "name": "front_shin", - "parent": "front_thigh", - "length": 128.76, - "x": 78.69, - "y": 1.6, - "rotation": -2.21, - "inheritScale": false, - "color": "00ff04ff" - }, - { "name": "front_upper_arm", "parent": "torso", "length": 69.45, "x": 103.75, "y": 19.32, "rotation": 168.37, "color": "00ff04ff" }, - { "name": "neck", "parent": "torso", "length": 25.45, "x": 127.49, "y": -0.3, "rotation": -31.53, "color": "e0da19ff" }, - { "name": "rear_shin", "parent": "rear_thigh", "length": 121.87, "x": 86.1, "y": -1.32, "rotation": -19.83, "color": "ff000dff" }, - { "name": "rear_upper_arm", "parent": "torso", "length": 51.93, "x": 92.35, "y": -19.22, "rotation": -169.55, "color": "ff000dff" }, + { "name": "torso", "parent": "hip", "length": 127.55, "rotation": 103.82, "x": -1.61, "y": 4.9, "color": "e0da19ff" }, + { "name": "front_upper_arm", "parent": "torso", "length": 69.45, "rotation": 168.37, "x": 103.75, "y": 19.32, "color": "00ff04ff" }, { "name": "front_bracer", "parent": "front_upper_arm", "length": 40.57, + "rotation": 18.29, "x": 68.8, "y": -0.68, - "rotation": 18.29, "color": "00ff04ff" }, - { "name": "front_foot", "parent": "front_shin", "length": 91.34, "x": 128.75, "y": -0.33, "rotation": 77.9, "color": "00ff04ff" }, - { "name": "head", "parent": "neck", "length": 263.57, "x": 27.66, "y": -0.25, "rotation": 23.18, "color": "e0da19ff" }, - { "name": "rear_bracer", "parent": "rear_upper_arm", "length": 34.55, "x": 51.35, "rotation": 23.15, "color": "ff000dff" }, - { "name": "rear_foot", "parent": "rear_shin", "length": 82.57, "x": 121.45, "y": -0.75, "rotation": 69.3, "color": "ff000dff" }, - { "name": "front_fist", "parent": "front_bracer", "length": 65.38, "x": 40.56, "y": 0.19, "rotation": 12.43, "color": "00ff04ff" }, - { "name": "gun", "parent": "rear_bracer", "length": 43.1, "x": 34.42, "y": -0.45, "rotation": 5.34, "color": "ff000dff" }, - { "name": "gunTip", "parent": "gun", "x": 201.04, "y": 52.13, "rotation": 6.83, "color": "ff000dff" } + { "name": "front_fist", "parent": "front_bracer", "length": 65.38, "rotation": 12.43, "x": 40.56, "y": 0.19, "color": "00ff04ff" }, + { "name": "front_thigh", "parent": "hip", "length": 74.8, "rotation": -95.51, "x": -17.45, "y": -11.64, "color": "00ff04ff" }, + { "name": "front_shin", "parent": "front_thigh", "length": 128.76, "rotation": -2.21, "x": 78.69, "y": 1.6, "color": "00ff04ff" }, + { "name": "front_foot", "parent": "front_shin", "length": 91.34, "rotation": 77.9, "x": 128.75, "y": -0.33, "color": "00ff04ff" }, + { "name": "rear_upper_arm", "parent": "torso", "length": 51.93, "rotation": -169.55, "x": 92.35, "y": -19.22, "color": "ff000dff" }, + { "name": "rear_bracer", "parent": "rear_upper_arm", "length": 34.55, "rotation": 23.15, "x": 51.35, "color": "ff000dff" }, + { "name": "gun", "parent": "rear_bracer", "length": 43.1, "rotation": 5.34, "x": 34.42, "y": -0.45, "color": "ff000dff" }, + { "name": "gunTip", "parent": "gun", "rotation": 6.83, "x": 201.04, "y": 52.13, "color": "ff000dff" }, + { "name": "neck", "parent": "torso", "length": 25.45, "rotation": -31.53, "x": 127.49, "y": -0.3, "color": "e0da19ff" }, + { "name": "head", "parent": "neck", "length": 263.57, "rotation": 23.18, "x": 27.66, "y": -0.25, "color": "e0da19ff" }, + { "name": "rear_thigh", "parent": "hip", "length": 85.71, "rotation": -72.54, "x": 8.91, "y": -5.62, "color": "ff000dff" }, + { "name": "rear_shin", "parent": "rear_thigh", "length": 121.87, "rotation": -19.83, "x": 86.1, "y": -1.32, "color": "ff000dff" }, + { "name": "rear_foot", "parent": "rear_shin", "length": 82.57, "rotation": 69.3, "x": 121.45, "y": -0.75, "color": "ff000dff" } ], "slots": [ { "name": "rear_upper_arm", "bone": "rear_upper_arm", "attachment": "rear_upper_arm" }, @@ -54,8 +46,8 @@ { "name": "goggles", "bone": "head", "attachment": "goggles" }, { "name": "front_bracer", "bone": "front_bracer", "attachment": "front_bracer" }, { "name": "front_fist", "bone": "front_fist", "attachment": "front_fist_closed" }, - { "name": "muzzle", "bone": "gunTip", "additive": true }, - { "name": "head-bb", "bone": "head", "attachment": "head" } + { "name": "muzzle", "bone": "gunTip", "blend": "additive" }, + { "name": "head-bb", "bone": "head" } ], "skins": { "default": { @@ -96,7 +88,8 @@ "head-bb": { "head": { "type": "boundingbox", - "vertices": [ -19.143097, -70.30209, 40.80313, -118.074234, 257.77155, -115.61827, 285.16193, 57.18005, 120.77191, 164.95125, -5.067627, 76.94907 ] + "vertexCount": 6, + "vertices": [ -19.14, -70.3, 40.8, -118.07, 257.77, -115.61, 285.16, 57.18, 120.77, 164.95, -5.06, 76.94 ] } }, "mouth": { @@ -1832,10 +1825,6 @@ ] }, "muzzle": { - "attachment": [ - { "time": 0.1333, "name": "muzzle" }, - { "time": 0.2666, "name": null } - ], "color": [ { "time": 0.1333, @@ -1848,6 +1837,10 @@ "curve": [ 0.821, 0, 0.909, 0.89 ] }, { "time": 0.2666, "color": "ffffff00" } + ], + "attachment": [ + { "time": 0.1333, "name": "muzzle" }, + { "time": 0.2666, "name": null } ] } }, @@ -2015,7 +2008,7 @@ ] } }, - "draworder": [ + "drawOrder": [ { "time": 0.6666, "offsets": [ diff --git a/spine-corona/data/spineboy.png b/spine-corona/data/spineboy.png new file mode 100644 index 000000000..2eae82219 Binary files /dev/null and b/spine-corona/data/spineboy.png differ diff --git a/spine-corona/data/stretchyman.atlas b/spine-corona/data/stretchyman.atlas new file mode 100644 index 000000000..b9072157f --- /dev/null +++ b/spine-corona/data/stretchyman.atlas @@ -0,0 +1,41 @@ + +stretchyman.png +size: 1024,256 +format: RGBA8888 +filter: Linear,Linear +repeat: none +back arm + rotate: true + xy: 679, 173 + size: 72, 202 + orig: 72, 202 + offset: 0, 0 + index: -1 +back leg + rotate: true + xy: 2, 2 + size: 100, 318 + orig: 100, 318 + offset: 0, 0 + index: -1 +body + rotate: true + xy: 2, 104 + size: 141, 452 + orig: 141, 452 + offset: 0, 0 + index: -1 +front arm + rotate: true + xy: 456, 100 + size: 145, 221 + orig: 145, 221 + offset: 0, 0 + index: -1 +head + rotate: true + xy: 322, 15 + size: 87, 102 + orig: 87, 102 + offset: 0, 0 + index: -1 diff --git a/spine-corona/data/stretchyman.json b/spine-corona/data/stretchyman.json new file mode 100644 index 000000000..63d89f419 --- /dev/null +++ b/spine-corona/data/stretchyman.json @@ -0,0 +1,762 @@ +{ +"skeleton": { "hash": "blOhTH+VBhIluqnZVQ+1mnv7uxQ", "spine": "3.4.02", "width": 264.48, "height": 570.1, "images": "./images/" }, +"bones": [ + { "name": "root" }, + { "name": "hip", "parent": "root", "x": 28.61, "y": 289.9 }, + { "name": "spine 1", "parent": "hip", "length": 34.66, "rotation": 86.68, "x": -4.48, "y": 12.66 }, + { "name": "spine 2", "parent": "spine 1", "length": 41.41, "rotation": 16.47, "x": 34.66 }, + { "name": "spine 3", "parent": "spine 2", "length": 34.44, "rotation": 16.17, "x": 41.41 }, + { "name": "spine 4", "parent": "spine 3", "length": 37.53, "rotation": -13.63, "x": 34.44 }, + { "name": "back arm 1", "parent": "spine 4", "length": 32.43, "rotation": -154.35, "x": 15.99, "y": -4.58, "inheritScale": false }, + { "name": "back arm 2", "parent": "back arm 1", "length": 34.16, "rotation": 3.1, "x": 31.88, "y": 0.02 }, + { "name": "back arm 3", "parent": "back arm 2", "length": 31.26, "rotation": 9.59, "x": 34.16 }, + { "name": "back arm 4", "parent": "back arm 3", "length": 33.3, "rotation": 14.6, "x": 32.03, "y": 0.81 }, + { "name": "back arm 5", "parent": "back arm 4", "length": 37.41, "rotation": 11.3, "x": 33.81, "y": 0.02 }, + { "name": "back leg 1", "parent": "hip", "length": 41, "rotation": -83.65, "x": 10.4, "y": 1.04, "color": "abe323ff" }, + { "name": "back leg 8", "parent": "back leg 1", "length": 41, "rotation": -33.78, "x": 267.28, "y": -77.39, "color": "abe323ff" }, + { + "name": "back foot 1", + "parent": "hip", + "length": 33.23, + "rotation": -6.55, + "x": -34, + "y": -279.68, + "inheritRotation": false, + "inheritScale": false + }, + { "name": "back foot 2", "parent": "back foot 1", "length": 32.28, "rotation": 4.34, "x": 33.23, "inheritScale": false }, + { "name": "back foot 3", "parent": "back foot 2", "length": 15.87, "rotation": 10.06, "x": 32.28, "inheritScale": false }, + { "name": "back leg 2", "parent": "back leg 1", "length": 41, "rotation": -4.07, "x": 34.56, "color": "abe323ff" }, + { "name": "back leg 3", "parent": "back leg 1", "length": 41, "rotation": -5.24, "x": 81.78, "y": -2.29, "color": "abe323ff" }, + { "name": "back leg 4", "parent": "back leg 1", "length": 41, "rotation": -16.6, "x": 121.2, "y": -11.27, "color": "abe323ff" }, + { "name": "back leg 5", "parent": "back leg 1", "length": 41, "rotation": -32.35, "x": 160.15, "y": -24.85, "color": "abe323ff" }, + { "name": "back leg 6", "parent": "back leg 1", "length": 41, "rotation": -30.76, "x": 197.04, "y": -39.98, "color": "abe323ff" }, + { "name": "back leg 7", "parent": "back leg 1", "length": 41, "rotation": -30.63, "x": 233.18, "y": -57.32, "color": "abe323ff" }, + { "name": "back leg IK target", "parent": "root", "x": 46.15, "y": 8.68, "color": "ff3f00ff" }, + { "name": "back leg IK 1", "parent": "hip", "length": 140.17, "rotation": -88.1, "x": 9.62, "y": -0.38 }, + { "name": "back leg IK 2", "parent": "back leg IK 1", "length": 148.96, "rotation": -21.32, "x": 140.17 }, + { "name": "belly", "parent": "spine 1", "x": 35.94, "y": -37.69 }, + { "name": "butt", "parent": "hip", "x": -32.67, "y": -1.87 }, + { "name": "front arm 1", "parent": "spine 4", "length": 38.33, "rotation": 118.58, "x": 27.12, "y": 4.89, "inheritScale": false }, + { "name": "front arm 2", "parent": "front arm 1", "length": 35.66, "rotation": -0.43, "x": 38.33 }, + { "name": "front arm 3", "parent": "front arm 2", "length": 32.65, "rotation": 14.45, "x": 35.66, "y": -0.01 }, + { "name": "front arm 4", "parent": "front arm 3", "length": 29.18, "rotation": 13.89, "x": 32.65 }, + { "name": "front arm 5", "parent": "front arm 4", "length": 46.32, "rotation": 16.09, "x": 29.18, "inheritScale": false }, + { "name": "front leg 1", "parent": "hip", "length": 37.2, "rotation": -88.96, "x": -23.56, "y": -1.99, "color": "abe323ff" }, + { "name": "front leg 8", "parent": "front leg 1", "length": 37.2, "rotation": -31.8, "x": 248.6, "y": -61.02, "color": "abe323ff" }, + { + "name": "front foot 1", + "parent": "hip", + "length": 26.29, + "rotation": -10.97, + "x": -77.04, + "y": -285.03, + "inheritRotation": false, + "inheritScale": false + }, + { "name": "front foot 2", "parent": "front foot 1", "length": 29.11, "rotation": 9.6, "x": 26.29 }, + { "name": "front foot 3", "parent": "front foot 2", "length": 23.48, "rotation": 8.91, "x": 29.11 }, + { "name": "front leg 2", "parent": "front leg 1", "length": 37.2, "rotation": 3.45, "x": 33.74, "color": "abe323ff" }, + { "name": "front leg 3", "parent": "front leg 1", "length": 37.2, "rotation": -6.11, "x": 74.4, "y": -1.07, "color": "abe323ff" }, + { + "name": "front leg 4", + "parent": "front leg 1", + "length": 37.2, + "rotation": -10.01, + "x": 111.39, + "y": -5.27, + "color": "abe323ff" + }, + { + "name": "front leg 5", + "parent": "front leg 1", + "length": 37.2, + "rotation": -28.39, + "x": 147.76, + "y": -14.98, + "color": "abe323ff" + }, + { + "name": "front leg 6", + "parent": "front leg 1", + "length": 37.2, + "rotation": -24.33, + "x": 182.41, + "y": -27.57, + "color": "abe323ff" + }, + { + "name": "front leg 7", + "parent": "front leg 1", + "length": 37.2, + "rotation": -22.99, + "x": 216.43, + "y": -42.55, + "color": "abe323ff" + }, + { "name": "front leg IK target", "parent": "root", "x": -37.73, "y": 5.03, "color": "ff3f00ff" }, + { "name": "front leg IK 1", "parent": "hip", "length": 140.66, "rotation": -89.23, "x": -23.98, "y": 1.88 }, + { "name": "front leg IK 2", "parent": "front leg IK 1", "length": 155.95, "rotation": -21.49, "x": 140.66, "y": 0.02 }, + { "name": "neck 1", "parent": "spine 4", "length": 13.45, "rotation": -30.66, "x": 38.96, "y": -0.83 }, + { "name": "neck 2", "parent": "neck 1", "length": 14.13, "rotation": -11.41, "x": 13.45 }, + { "name": "head", "parent": "neck 2", "length": 89.05, "rotation": 6.98, "x": 15.81, "y": 0.22, "inheritScale": false } +], +"slots": [ + { "name": "back arm", "bone": "root", "attachment": "back arm" }, + { "name": "back leg", "bone": "root", "attachment": "back leg" }, + { "name": "body", "bone": "root", "attachment": "body" }, + { "name": "head", "bone": "head", "attachment": "head" }, + { "name": "front arm", "bone": "root", "attachment": "front arm" }, + { "name": "back leg path", "bone": "hip", "attachment": "back leg path" }, + { "name": "front leg path", "bone": "hip", "attachment": "front leg path" } +], +"ik": [ + { + "name": "back leg IK", + "bones": [ "back leg IK 1", "back leg IK 2" ], + "target": "back leg IK target", + "bendPositive": false + }, + { + "name": "front leg IK", + "bones": [ "front leg IK 1", "front leg IK 2" ], + "target": "front leg IK target", + "bendPositive": false + } +], +"transform": [ + { + "name": "back foot position", + "bones": [ "back foot 1" ], + "target": "back leg 8", + "rotation": 108.8, + "x": 41.2, + "y": -0.02, + "scaleX": 4.0E-4, + "scaleY": -3.0E-4, + "shearY": 0.1, + "rotateMix": 0, + "scaleMix": 0 + }, + { + "name": "front foot position", + "bones": [ "front foot 1" ], + "target": "front leg 8", + "rotation": 101.55, + "x": 38.92, + "y": -0.02, + "scaleX": 4.0E-4, + "scaleY": -2.0E-4, + "shearY": 0.1, + "rotateMix": 0, + "scaleMix": 0 + } +], +"path": [ + { + "name": "back leg path", + "bones": [ "back leg 1", "back leg 2", "back leg 3", "back leg 4", "back leg 5", "back leg 6", "back leg 7", "back leg 8" ], + "target": "back leg path", + "spacingMode": "percent", + "rotateMode": "chainScale", + "spacing": 0.125 + }, + { + "name": "front leg path", + "bones": [ "front leg 1", "front leg 2", "front leg 3", "front leg 4", "front leg 5", "front leg 6", "front leg 7", "front leg 8" ], + "target": "front leg path", + "spacingMode": "percent", + "rotateMode": "chainScale", + "spacing": 0.125 + } +], +"skins": { + "default": { + "back arm": { + "back arm": { + "type": "mesh", + "uvs": [ 0.74522, 0.00989, 0.64111, 0.05762, 0.56303, 0.1559, 0.42508, 0.25885, 0.28974, 0.359, 0.22988, 0.49565, 0.21166, 0.60796, 0.21166, 0.69782, 0.16481, 0.78673, 0.14138, 0.84757, 0.02426, 0.88501, 0.05289, 0.9187, 0.37823, 0.98796, 0.60467, 0.98235, 0.6307, 0.9056, 0.73481, 0.87752, 0.6359, 0.81762, 0.55262, 0.74181, 0.38084, 0.69875, 0.37823, 0.60796, 0.39905, 0.50875, 0.51358, 0.38521, 0.66193, 0.2888, 0.85453, 0.18397, 0.97686, 0.0754, 0.9144, 0.00989 ], + "triangles": [ 11, 9, 12, 9, 8, 12, 12, 8, 18, 13, 12, 14, 12, 18, 17, 18, 8, 7, 14, 12, 17, 11, 10, 9, 14, 16, 15, 14, 17, 16, 7, 19, 18, 7, 6, 19, 6, 5, 19, 19, 5, 20, 5, 4, 20, 20, 4, 21, 4, 3, 21, 21, 3, 22, 3, 2, 22, 22, 2, 23, 2, 1, 23, 23, 1, 24, 1, 0, 24, 0, 25, 24 ], + "vertices": [ 1, 6, -7.68, -11.48, 1, 1, 6, 4.08, -13.62, 1, 1, 6, 23.48, -9.35, 1, 1, 7, 13.44, -9.22999, 1, 2, 7, 35.2, -9.62, 0.50649, 8, -0.57, -9.64999, 0.4935, 1, 8, 26.03, -6.38, 1, 1, 9, 14.15, -6.11, 1, 2, 9, 31.53, -5.56, 0.66492, 10, -3.33, -5.03, 0.33507, 1, 10, 13.08, -11.25, 1, 1, 10, 24.41, -14.88, 1, 1, 10, 30.15, -24.51, 1, 1, 10, 36.93, -23.53, 1, 1, 10, 54.07, -2.33, 1, 1, 10, 55.73, 14.14, 1, 1, 10, 41.39, 18.46999, 1, 1, 10, 37.28, 26.87, 1, 1, 10, 24.65, 21.67, 1, 1, 10, 9.17, 18.1, 1, 2, 9, 31.33, 6.77, 0.4788, 10, -1.11, 7.11, 0.52119, 1, 9, 13.77, 6.04, 1, 2, 8, 24.98, 6.17, 0.89217, 9, -5.47, 6.96, 0.10782, 2, 7, 32.59999, 7.28, 0.59842, 8, -0.32, 7.44, 0.40157, 1, 7, 11.07, 8.84, 1, 1, 6, 17.89, 11.87, 1, 1, 6, -4.82, 9.45, 1, 1, 6, -13.68, -0.69, 1 ], + "hull": 26, + "edges": [ 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 18, 20, 20, 22, 22, 24, 24, 26, 26, 28, 28, 30, 30, 32, 32, 34, 34, 36, 36, 38, 38, 40, 40, 42, 42, 44, 44, 46, 46, 48, 48, 50, 0, 50, 2, 48, 4, 46, 6, 44, 8, 42, 10, 40, 12, 38, 14, 36 ], + "width": 72, + "height": 202 + } + }, + "back leg": { + "back leg": { + "type": "mesh", + "uvs": [ 0.502, 0.01179, 0.36075, 0.06379, 0.40569, 0.15045, 0.44743, 0.23916, 0.47953, 0.3299, 0.51163, 0.42268, 0.52126, 0.50629, 0.48274, 0.58888, 0.41211, 0.66025, 0.3126, 0.74182, 0.21629, 0.81625, 0.1232, 0.89272, 0.00763, 0.97428, 0.29655, 0.98958, 0.47407, 0.99221, 0.64004, 0.99467, 0.80988, 0.9896, 0.91291, 0.98652, 1, 0.95797, 0.83329, 0.94681, 0.71066, 0.9386, 0.57122, 0.9203, 0.41532, 0.89985, 0.3447, 0.89272, 0.36885, 0.87177, 0.42816, 0.82032, 0.502, 0.74793, 0.58225, 0.66942, 0.6593, 0.59092, 0.72992, 0.50527, 0.76524, 0.42166, 0.78129, 0.3248, 0.78771, 0.23406, 0.78771, 0.13924, 0.7235, 0.03728, 0.60152, 0.00567, 0.82116, 0.96897, 0.67872, 0.96396, 0.52111, 0.95739, 0.35935, 0.94213, 0.19388, 0.92921, 0.25375, 0.88158, 0.32792, 0.81839 ], + "triangles": [ 36, 20, 19, 17, 19, 18, 16, 37, 36, 17, 16, 36, 17, 36, 19, 38, 22, 21, 37, 21, 20, 38, 21, 37, 37, 20, 36, 15, 38, 37, 14, 38, 15, 15, 37, 16, 39, 23, 22, 40, 23, 39, 39, 22, 38, 13, 40, 39, 12, 40, 13, 14, 39, 38, 13, 39, 14, 9, 8, 26, 25, 42, 9, 10, 9, 42, 26, 25, 9, 24, 42, 25, 41, 10, 42, 41, 42, 24, 11, 10, 41, 23, 41, 24, 40, 11, 41, 40, 41, 23, 12, 11, 40, 26, 8, 27, 6, 5, 29, 28, 6, 29, 7, 6, 28, 27, 7, 28, 8, 7, 27, 29, 5, 30, 31, 5, 4, 30, 5, 31, 32, 4, 3, 31, 4, 32, 34, 1, 0, 34, 0, 35, 2, 1, 34, 2, 34, 33, 3, 2, 33, 32, 3, 33 ], + "vertices": [ 1, 11, -19.79, -5.66, 1, 2, 11, -5.61, -22.28, 0.83363, 16, -41.06, -23.3, 0.16636, 2, 11, 22.31, -21.98, 0.65187, 16, -13.17, -21.88, 0.34812, 3, 11, 50.83, -22.1, 0.3172, 16, 15.33, -20.86, 0.43086, 17, -19.67, -21.08, 0.25193, 4, 11, 79.83999, -23.28, 0.10791, 16, 44.37, -20.87999, 0.35417, 17, 9.3, -19.19, 0.31919, 18, -25.21, -20.06, 0.21871, 4, 16, 74.05, -20.98, 0.16485, 17, 38.93, -17.34, 0.32776, 18, 4.09, -15.38, 0.2983, 19, -30.1, -17.15, 0.20907, 3, 17, 65.53, -17.61, 0.17522, 18, 30.6, -13.1, 0.39172, 19, -4.11, -11.42, 0.43304, 3, 18, 57.03, -15.71, 0.19717, 19, 22.42, -10.53, 0.5297, 20, -12.96, -9.8, 0.27311, 3, 19, 46.04, -13.46, 0.40991, 20, 10.83, -10.17, 0.34747, 21, -24.93, -10.51, 0.24261, 3, 19, 73.37999, -18.69, 0.19432, 20, 38.58, -12.41, 0.37176, 21, 2.89, -10.98, 0.4339, 3, 20, 64.06, -14.98, 0.16664, 21, 28.48, -11.94, 0.56755, 12, -7.52, -11.48, 0.26578, 3, 21, 54.57, -12.36, 0.52113, 12, 18.54999, -10.93, 0.36167, 13, -3.08, 24.95, 0.11717, 4, 21, 82.97, -14.35, 0.35144, 12, 47, -11.86, 0.29521, 13, -13.06, -1.67, 0.25118, 14, -46.29, 1.83, 0.10216, 1, 13, 16.36, -4.67, 1, 2, 13, 34.31, -4.36, 0.53486, 14, 0.74, -4.42999, 0.46513, 3, 13, 51.09, -4.08, 0.1461, 14, 17.49, -5.42, 0.54314, 15, -15.5, -2.75, 0.31075, 2, 14, 34.66999, -4.01, 0.40714, 15, 1.64, -4.36, 0.59285, 2, 14, 45.08, -3.15, 0.25726, 15, 12.05, -5.34, 0.74273, 2, 14, 53.98, 5.81, 0.25311, 15, 22.38, 1.93, 0.74688, 2, 14, 37.18999, 9.56, 0.4029, 15, 6.5, 8.56, 0.59709, 3, 13, 57.07, 14.16, 0.1335, 14, 24.83, 12.32, 0.54644, 15, -5.17999, 13.44, 0.32003, 4, 21, 47.09, 33.09999, 0.13131, 13, 42.64, 19.07, 0.26349, 14, 10.81, 18.31, 0.49745, 15, -17.93, 21.78, 0.10773, 4, 21, 46.45, 16.09, 0.21158, 12, 9.35999, 17.2, 0.10679, 13, 26.5, 24.56, 0.4495, 14, -4.85, 25, 0.2321, 3, 21, 46.8, 8.62, 0.4011, 12, 9.99, 9.75, 0.24543, 13, 19.24, 26.37, 0.35346, 3, 21, 39.7, 8.6, 0.5825, 12, 2.9, 9.47, 0.30791, 13, 21.25, 33.16999, 0.10958, 3, 20, 59.16, 5.88, 0.21954, 21, 22.27, 8.58, 0.57946, 12, -14.51, 8.79, 0.20099, 3, 19, 71.83, 0.47, 0.21583, 20, 34.96, 6.47, 0.32262, 21, -1.92, 7.62, 0.46154, 3, 19, 45.8, 3.95, 0.40553, 20, 8.7, 7.12, 0.38601, 21, -28.16, 6.61, 0.20844, 3, 18, 56.78, 2.13, 0.25409, 19, 19.83, 7.12, 0.53004, 20, -17.45, 7.46, 0.21584, 3, 17, 66.18, 3.45, 0.22413, 18, 29.22, 7.92, 0.34135, 19, -8.25, 9.24, 0.43451, 4, 16, 76.6, 4.5, 0.19364, 17, 39.78, 8.26, 0.28886, 18, 2.48, 10.18, 0.33579, 19, -35.05, 7.97, 0.1817, 4, 11, 82.87999, 7.08, 0.11658, 16, 46.17, 9.57, 0.35727, 17, 9.08, 11.32, 0.35745, 18, -28.35, 10.29, 0.16869, 3, 11, 54.45, 12.1, 0.35356, 16, 17.57, 13.46, 0.44494, 17, -19.70999, 13.31, 0.20148, 2, 11, 24.65, 16.69, 0.65438, 16, -12.39, 16.85, 0.34561, 2, 11, -8.38, 15.21, 0.8533, 16, -45.34, 14.04, 0.14669, 1, 11, -20.18, 4.56, 1, 2, 14, 35.88, 2.53, 0.40509, 15, 3.98, 1.86, 0.5949, 3, 13, 54.37, 5.91, 0.1392, 14, 21.51, 4.29, 0.54494, 15, -9.85, 6.11, 0.31584, 2, 13, 37.78, 7.63, 0.44938, 14, 5.1, 7.26, 0.55061, 3, 21, 65.37999, 20.69, 0.11857, 13, 20.59, 11.34, 0.75134, 14, -11.76, 12.27, 0.13007, 3, 21, 65.41, 1.81, 0.39679, 12, 24.3, 0.23, 0.28257, 13, 2.06, 14.97, 0.32062, 3, 21, 48, 0.07, 0.55395, 12, 6.93, -0.32, 0.33293, 13, 3.37, 30.47, 0.11311, 3, 20, 65.94999, -2.96, 0.19447, 21, 24.95, -1.57, 0.57382, 12, -15.99, -0.42, 0.2317 ], + "hull": 36, + "edges": [ 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 18, 20, 20, 22, 22, 24, 24, 26, 34, 36, 44, 46, 50, 52, 52, 54, 54, 56, 56, 58, 58, 60, 60, 62, 62, 64, 64, 66, 66, 68, 68, 70, 0, 70, 4, 66, 2, 68, 40, 42, 42, 44, 26, 28, 28, 30, 46, 48, 48, 50, 36, 38, 38, 40, 30, 32, 32, 34, 18, 52, 16, 54, 14, 56, 12, 58, 10, 60, 8, 62, 6, 64, 32, 72, 72, 38, 30, 74, 74, 40, 72, 74, 28, 76, 76, 42, 74, 76, 26, 78, 78, 44, 76, 78, 24, 80, 80, 46, 78, 80, 22, 82, 82, 48, 80, 82, 20, 84, 84, 50, 82, 84 ], + "width": 100, + "height": 318 + } + }, + "back leg path": { + "back leg path": { + "type": "path", + "lengths": [ 137.82, 291.73, 641.11 ], + "vertexCount": 9, + "vertices": [ 1, 23, -43.14, 0.61, 1, 1, 23, -1.30999, 0.43, 1, 1, 23, 63.07, -0.18, 1, 2, 23, 72.07, 13.65, 0.5, 24, -69.11, -16.07, 0.5, 2, 23, 135.74, 0.27, 0.5, 24, -3.96, -2.02, 0.5, 2, 23, 202.92, -15.13, 0.5, 24, 65, 14.09, 0.5, 1, 24, 71.08999, -2.03, 1, 1, 24, 149.06, -1.74, 1, 1, 23, 368.47, -1.81, 1 ] + } + }, + "body": { + "body": { + "type": "mesh", + "uvs": [ 0.35966, 0.01351, 0.26863, 0.04108, 0.26204, 0.0954, 0.34119, 0.14478, 0.39791, 0.19457, 0.40451, 0.24271, 0.38076, 0.27893, 0.35969, 0.3004, 0.34119, 0.31925, 0.34988, 0.34325, 0.35834, 0.36658, 0.36551, 0.40163, 0.37233, 0.43498, 0.38396, 0.4944, 0.3956, 0.5597, 0.39883, 0.59858, 0.40141, 0.62955, 0.40215, 0.65661, 0.34609, 0.71563, 0.27077, 0.78175, 0.22009, 0.82127, 0.17617, 0.85552, 0.13115, 0.88832, 0.08238, 0.92385, 0.00341, 0.97959, 0.18836, 0.99126, 0.32172, 0.99284, 0.46265, 0.9945, 0.61643, 0.98608, 0.71617, 0.97182, 0.6185, 0.9582, 0.48967, 0.95042, 0.39458, 0.94083, 0.27771, 0.92903, 0.23407, 0.9232, 0.26691, 0.89774, 0.3068, 0.8668, 0.34202, 0.83414, 0.38369, 0.7955, 0.45642, 0.72873, 0.52707, 0.66845, 0.56032, 0.63344, 0.57541, 0.60108, 0.59357, 0.56214, 0.61643, 0.49731, 0.63513, 0.43962, 0.64344, 0.40462, 0.7708, 0.39011, 0.84584, 0.37024, 0.90982, 0.35331, 0.9674, 0.31914, 0.97301, 0.28585, 0.96448, 0.23351, 0.8952, 0.16809, 0.79345, 0.12642, 0.75178, 0.10878, 0.71799, 0.09448, 0.66816, 0.07236, 0.61342, 0.04807, 0.47867, 0.0141, 0.49845, 0.38826, 0.66315, 0.34728, 0.67333, 0.30664, 0.8188, 0.29655, 0.8097, 0.24505, 0.72828, 0.17901, 0.68147, 0.13901, 0.59191, 0.0971, 0.3904, 0.09012, 0.53695, 0.14981, 0.57562, 0.19616, 0.64483, 0.25076, 0.79855, 0.33476, 0.6175, 0.97166, 0.4773, 0.97061, 0.23795, 0.95673, 0.15271, 0.92355, 0.14158, 0.94886, 0.23861, 0.86092, 0.51732, 0.30353, 0.50695, 0.34527, 0.50634, 0.43735, 0.50334, 0.49589, 0.51085, 0.32558, 0.50355, 0.41057, 0.19542, 0.8924, 0.36492, 0.96409 ], + "triangles": [ 2, 1, 68, 68, 1, 58, 58, 1, 59, 1, 0, 59, 69, 67, 66, 3, 68, 69, 69, 68, 67, 3, 2, 68, 66, 56, 55, 66, 67, 56, 67, 57, 56, 67, 58, 57, 67, 68, 58, 5, 70, 71, 71, 70, 65, 5, 4, 70, 70, 66, 65, 4, 69, 70, 70, 69, 66, 4, 3, 69, 65, 54, 53, 65, 66, 54, 66, 55, 54, 46, 61, 47, 46, 80, 61, 80, 83, 61, 61, 62, 72, 61, 83, 62, 80, 9, 83, 9, 8, 83, 83, 79, 62, 8, 7, 83, 83, 7, 79, 71, 6, 5, 7, 6, 79, 79, 6, 62, 6, 71, 62, 47, 72, 48, 47, 61, 72, 48, 72, 49, 49, 72, 50, 72, 63, 50, 72, 62, 63, 50, 63, 51, 62, 64, 63, 63, 52, 51, 63, 64, 52, 71, 65, 64, 64, 53, 52, 64, 65, 53, 62, 71, 64, 26, 86, 27, 27, 74, 28, 27, 86, 74, 28, 73, 29, 28, 74, 73, 73, 30, 29, 74, 31, 73, 73, 31, 30, 86, 32, 74, 74, 32, 31, 25, 75, 26, 26, 75, 86, 24, 77, 25, 25, 77, 75, 24, 23, 77, 75, 33, 86, 86, 33, 32, 75, 77, 33, 77, 34, 33, 77, 76, 34, 77, 23, 76, 23, 22, 76, 76, 85, 34, 76, 22, 85, 34, 85, 35, 85, 78, 35, 22, 21, 85, 35, 78, 36, 85, 21, 78, 37, 36, 20, 21, 20, 78, 36, 78, 20, 20, 19, 37, 37, 19, 38, 19, 18, 38, 38, 18, 39, 18, 17, 39, 39, 17, 40, 41, 40, 16, 40, 17, 16, 42, 41, 15, 41, 16, 15, 43, 42, 14, 42, 15, 14, 14, 82, 43, 43, 82, 44, 14, 13, 82, 82, 81, 44, 44, 81, 45, 82, 13, 81, 13, 12, 81, 46, 45, 84, 12, 84, 81, 45, 81, 84, 12, 11, 84, 11, 60, 84, 84, 60, 46, 60, 80, 46, 11, 10, 60, 60, 10, 80, 10, 9, 80 ], + "vertices": [ 1, 5, 30.85, 2.44, 1, 2, 4, 60.42, 12.41, 0.24858, 5, 22.32, 18.17, 0.75141, 2, 4, 39.47, 25.24, 0.44331, 5, -1.05999, 25.71, 0.55668, 3, 3, 48.02, 29.46, 0.3743, 4, 14.54, 26.45, 0.47619, 5, -25.57, 21.01, 0.1495, 3, 2, 50.36, 32.58, 0.11242, 3, 24.29, 26.79, 0.64611, 4, -8.99, 30.49, 0.24146, 3, 32, -45.21, -8.8, 0.10611, 2, 28.68, 30.39, 0.49532, 3, 2.88, 30.84, 0.39856, 3, 32, -28.91, -12.44, 0.25801, 2, 12.15, 32.79, 0.60893, 3, -12.28, 37.83, 0.13304, 3, 32, -18.5, -14.05, 0.28713, 2, 2.33999, 35.97, 0.51935, 26, -7.59, 18.95, 0.1935, 4, 32, -10.78, -18.35, 0.28478, 25, -42.03, 75.56, 0.10294, 2, -6.36, 37.31, 0.37493, 26, -10.2, 10.25, 0.23733, 3, 32, 0.92, -16.95, 0.34086, 2, -17.28, 35.45, 0.32139, 26, -8.2, -0.66, 0.33772, 4, 32, 10.64, -16.31, 0.3269, 37, -24.05, -14.89, 0.16082, 2, -27.57, 33.66, 0.14432, 26, -6.36, -11.04, 0.36794, 4, 32, 28.49, -15.62, 0.24236, 37, -9.54, -15.11, 0.27028, 38, -45.5, -19.11, 0.12131, 26, -3.64, -27.87, 0.36603, 4, 32, 41.59, -14.89, 0.2176, 37, 6.92, -15.34, 0.33285, 38, -26.85, -17.48, 0.20377, 26, -1.29999, -43.27, 0.24577, 3, 37, 33.82, -15.8, 0.47178, 38, 0, -15.85, 0.42626, 39, -31.79, -17.82, 0.10194, 3, 37, 63.38, -16.48, 0.2126, 38, 29.52, -14.21, 0.42737, 39, -2.42, -14.38, 0.36002, 3, 38, 49.78, -15.51, 0.30177, 39, 14.85, -13.08, 0.47126, 40, -21.14, -15.63, 0.22694, 3, 38, 61.09, -13.4, 0.15443, 39, 29.03, -11.64, 0.50848, 40, -3.26, -12.45, 0.33708, 2, 39, 41.23, -10.79, 0.28077, 40, 8.39999, -8.79, 0.71921, 2, 40, 36.23, -8.59, 0.56512, 41, -3.02, -8.83, 0.43487, 3, 40, 67.93, -10.06, 0.16322, 41, 28.68, -7.81, 0.53712, 42, -8.10999, -7.69, 0.29965, 3, 41, 47.76, -8.47, 0.402, 42, 10.97, -7.89, 0.4513, 33, -26.34, -6.21, 0.14668, 3, 41, 64.61, -8.06, 0.25016, 42, 27.8, -8.39999, 0.46039, 33, -12.76, -8.81, 0.28943, 4, 41, 79.12, -10.24, 0.11858, 42, 42.33, -8.03, 0.26981, 33, 4.53, -8.37, 0.48104, 34, -1.55, 35.59999, 0.13056, 2, 33, 20.84, -9.18999, 0.72799, 34, -5.37, 19.54999, 0.272, 1, 34, -11.5, -7.29, 1, 4, 33, 43.23, 16.27, 0.2746, 34, 15.1, -7.51, 0.48158, 35, -12.29, -5.54, 0.12942, 36, -41.75999, 0.94, 0.11439, 4, 33, 36.99, 33.93999, 0.18804, 34, 33.7, -4.57, 0.34252, 35, 6.53, -5.75, 0.18296, 36, -23.19, -2.18, 0.28646, 3, 34, 53.35, -1.58, 0.21646, 35, 26.4, -6.08, 0.26516, 36, -3.61, -5.59, 0.51836, 2, 35, 47.99, -1.76, 0.15752, 36, 18.37, -4.66, 0.84247, 1, 36, 33.16, -0.11, 1, 2, 35, 47.97, 10.84, 0.17387, 36, 20.31, 7.79, 0.82612, 4, 33, 9.83, 48.43, 0.17571, 34, 53.28, 18.69, 0.17038, 35, 29.73, 13.92, 0.136, 36, 2.76, 13.66, 0.5179, 4, 33, 11.45, 34.57, 0.26313, 34, 39.25999, 20.54999, 0.23037, 35, 16.20999, 18.09, 0.15679, 36, -9.93999, 19.87999, 0.3497, 4, 33, 12.4, 17.12999, 0.37056, 34, 22.1, 22.5, 0.30409, 35, -0.37, 22.87, 0.18235, 36, -25.59, 27.17, 0.14297, 3, 33, 12.34, 10.43, 0.44639, 34, 15.56, 23.91, 0.2976, 35, -6.59, 25.36, 0.256, 5, 41, 75.94999, 9.06, 0.10562, 42, 38.15, 11.08, 0.25494, 33, 1.65, 10.97, 0.33578, 34, 17.98, 34.75, 0.16322, 35, -2.38, 35.64, 0.14041, 3, 41, 62.61, 10.94, 0.26063, 42, 26.04, 10.62, 0.49791, 33, -15.14, 10.14, 0.24144, 3, 41, 47.27, 9.67, 0.40348, 42, 9.53, 10.18999, 0.4787, 33, -26.59, 11.93, 0.11781, 3, 40, 69.23, 6.97, 0.16043, 41, 28.63, 9.26, 0.53934, 42, -7.94, 9.38, 0.30019, 2, 40, 37.36, 8, 0.57647, 41, -3.21, 7.8, 0.42351, 2, 39, 45.48, 7.1, 0.29349, 40, 8.38, 9.60999, 0.7065, 3, 38, 62.84, 9, 0.15445, 39, 29.4, 10.82, 0.49324, 40, -8.12, 9.49, 0.35229, 3, 38, 52.14, 9.27, 0.30575, 39, 12.84, 11.73, 0.46742, 40, -26.12, 8.77, 0.22682, 3, 37, 66.66, 11.26, 0.21798, 38, 30.61, 13.69, 0.42844, 39, -3.05, 13.53, 0.35357, 3, 37, 37.7, 16.76, 0.48245, 38, 1.30999, 16.92, 0.41751, 39, -32.49, 14.97, 0.10002, 4, 32, 44.34, 22.11, 0.23459, 37, 11.91, 21.43, 0.43853, 38, -24.76, 19.56, 0.20679, 2, -58.28, -7.19, 0.12007, 4, 32, 28.54, 23.57, 0.31079, 37, -3.76, 23.83, 0.19157, 25, -76.76, 29.22, 0.2153, 2, -42.42, -7.45, 0.2823, 3, 32, 22.31, 41.64, 0.18196, 25, -69.83, 12.46, 0.43955, 2, -34.84, -25, 0.37848, 3, 32, 19.77, 51.42, 0.1392, 25, -59.84, 2.52, 0.47895, 2, -23.89, -35.16, 0.38184, 3, 32, 6.03, 61.53, 0.10543, 25, -52.7, -5.88, 0.51007, 2, -17.1, -43.61, 0.38449, 2, 25, -37.16, -13.13, 0.67426, 2, -1.22, -50.82, 0.32573, 1, 25, -22.09, -13.05, 1, 2, 25, 1.45, -10.49, 0.89018, 2, 37.39, -48.18, 0.10981, 3, 25, 30.4, 0.96, 0.43019, 2, 66.35, -36.72, 0.16237, 3, 19.96999, -44.2, 0.40743, 2, 3, 41.58, -34.52, 0.68164, 4, -9.43999, -33.21, 0.31834, 2, 3, 50.68, -30.61, 0.51066, 4, 0.38, -31.99, 0.48933, 3, 3, 58.06, -27.44, 0.26484, 4, 8.35, -31, 0.61474, 5, -18.04, -36.28, 0.12041, 3, 3, 69.4, -22.88, 0.17395, 4, 20.5, -29.77, 0.5644, 5, -6.52, -32.22, 0.26164, 2, 4, 33.86, -28.42, 0.29085, 5, 6.13, -27.76, 0.70914, 2, 4, 56.55, -19.37, 0.1738, 5, 26.05, -13.63, 0.82619, 5, 32, 20.79, 3.26, 0.38867, 37, -12.73, 4.03, 0.17697, 25, -69.83999, 50.18, 0.10105, 2, -36.22, 13.38, 0.1958, 26, 13.97, -19.24, 0.13748, 4, 32, 2.68, 26.81, 0.26409, 25, -50.86, 29.21, 0.2337, 2, -16.39, -8.72999, 0.34628, 26, 35.78, -0.48, 0.15592, 3, 32, -15.65, 28.57, 0.15678, 25, -33.53, 28.78, 0.29159, 2, 2.02, -9.1, 0.55161, 1, 25, -28.17, 8.37, 1, 1, 25, -5.01, 10.99, 1, 3, 25, 24.12, 24.17, 0.12051, 2, 60.06, -13.51, 0.21384, 3, 20.53, -20.16, 0.66563, 2, 3, 39.63, -17.84, 0.59512, 4, -6.67, -16.65, 0.40487, 3, 3, 60.95, -9.85999, 0.26251, 4, 16.02, -14.92, 0.55541, 5, -14.38, -18.84, 0.18206, 2, 4, 32.68, 8.3, 0.58729, 5, -3.66, 7.65, 0.4127, 2, 3, 39.52, 3.1, 0.47136, 4, -0.95, 3.49, 0.52863, 1, 3, 17.87999, 2.56, 1, 2, 2, 27.01, -3.63, 0.67245, 3, -8.35999, -1.30999, 0.32754, 3, 32, -2.63, 46, 0.10032, 25, -45.41, 10.26, 0.52611, 2, -9.64, -27.46, 0.37355, 2, 35, 47.98, 4.75, 0.16597, 36, 19.37, 1.77, 0.83402, 4, 33, 19.54999, 50.48, 0.12624, 34, 53.3, 9.5, 0.16908, 35, 28.21, 4.85, 0.24846, 36, -0.13, 4.94, 0.4562, 4, 33, 26.31, 16.82, 0.32786, 34, 18.95999, 9.25, 0.38307, 35, -5.68, 10.34, 0.15879, 36, -32.77, 15.61, 0.13026, 2, 33, 16.95999, -0.03, 0.66864, 34, 4.23, 21.71, 0.33135, 3, 33, 28.1, 2.85, 0.4826, 34, 4.91, 10.14, 0.31302, 35, -19.37999, 13.57, 0.20437, 3, 41, 63.21, -0.58, 0.21068, 42, 25.96, 0.78, 0.49386, 33, -11.01, 1.48, 0.29543, 3, 32, -14.83, 8.08, 0.24448, 25, -33.34, 51.23, 0.16324, 2, 2.58999, 13.53, 0.59226, 4, 32, 3.37, 4.96, 0.28616, 25, -51.81, 51.13, 0.16476, 2, -15.86, 13.44, 0.31891, 26, 13.85, -0.52, 0.23015, 4, 32, 46.08, 3.58, 0.24089, 37, 9.06, 3.09, 0.41151, 38, -28.46, 0.64, 0.21862, 26, 17.5, -43.07, 0.12896, 3, 37, 37.22, 1.25, 0.47744, 38, -0.08, 1.25, 0.42162, 39, -36.25, -5.25, 0.10092, 4, 32, -5.23, 6.29, 0.25594, 25, -43.1, 51.32, 0.15578, 2, -7.16, 13.62, 0.42092, 26, 14.16, 8.17, 0.16734, 4, 32, 33.03, 3.37, 0.36684, 37, -3.96, 3.6, 0.31093, 2, -45.32, 9.82, 0.17306, 26, 15.75, -30.14, 0.14914, 4, 41, 77.5, -1.16, 0.11479, 42, 40.23, 0.95, 0.26888, 33, 3.05, 0.72, 0.44972, 34, 7.66, 35.32, 0.16659, 4, 33, 22.72, 34.66999, 0.2209, 34, 37.18, 9.38, 0.26955, 35, 12.29, 7.43, 0.20636, 36, -15.46, 9.95, 0.30317 ], + "hull": 60, + "edges": [ 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 24, 26, 26, 28, 32, 34, 34, 36, 36, 38, 46, 48, 48, 50, 54, 56, 56, 58, 58, 60, 60, 62, 66, 68, 76, 78, 78, 80, 80, 82, 86, 88, 88, 90, 90, 92, 92, 94, 98, 100, 100, 102, 102, 104, 104, 106, 106, 108, 116, 118, 0, 118, 92, 120, 120, 20, 28, 86, 82, 32, 34, 80, 78, 36, 76, 38, 12, 124, 102, 126, 126, 124, 126, 128, 128, 130, 130, 132, 132, 134, 112, 134, 134, 136, 136, 4, 2, 116, 6, 138, 138, 132, 8, 140, 140, 130, 10, 142, 142, 128, 128, 104, 130, 106, 132, 108, 122, 92, 100, 144, 144, 122, 126, 144, 144, 94, 112, 114, 114, 116, 108, 110, 110, 112, 16, 18, 18, 20, 20, 22, 22, 24, 12, 14, 14, 16, 122, 124, 94, 96, 96, 98, 56, 146, 146, 60, 54, 148, 148, 62, 146, 148, 50, 150, 150, 66, 46, 152, 152, 68, 154, 152, 154, 48, 42, 156, 156, 72, 14, 158, 158, 124, 18, 160, 160, 122, 160, 120, 24, 162, 162, 90, 26, 164, 164, 88, 162, 164, 16, 166, 160, 166, 166, 158, 166, 124, 162, 168, 168, 120, 168, 22, 168, 92, 38, 40, 40, 42, 72, 74, 74, 76, 40, 74, 42, 44, 44, 46, 152, 170, 170, 156, 44, 170, 68, 70, 70, 72, 170, 70, 62, 64, 64, 66, 148, 172, 172, 150, 64, 172, 50, 52, 52, 54, 172, 52, 154, 66, 150, 154, 28, 30, 30, 32, 82, 84, 84, 86, 30, 84 ], + "width": 141, + "height": 452 + } + }, + "front arm": { + "front arm": { + "type": "mesh", + "uvs": [ 0.714, 0.00566, 0.67107, 0.08129, 0.60221, 0.15433, 0.53632, 0.21682, 0.44558, 0.28704, 0.34898, 0.35134, 0.29096, 0.3894, 0.25238, 0.41472, 0.22423, 0.4427, 0.19483, 0.47193, 0.15998, 0.50657, 0.09138, 0.59567, 0.05498, 0.70865, 0.02988, 0.81366, 0.01048, 0.94262, 0.10494, 0.98984, 0.25391, 0.9742, 0.31482, 0.88906, 0.28834, 0.82868, 0.13606, 0.74572, 0.14334, 0.71487, 0.18317, 0.62253, 0.25217, 0.5422, 0.29537, 0.50981, 0.33787, 0.47794, 0.38451, 0.45012, 0.43581, 0.41953, 0.5471, 0.36549, 0.68845, 0.29831, 0.74855, 0.35527, 0.85873, 0.38229, 0.99674, 0.37644, 0.95353, 0.33244, 0.91355, 0.29171, 0.87464, 0.25208, 0.83758, 0.21434, 0.78082, 0.12598, 0.78194, 0.06829, 0.63219, 0.23719, 0.66924, 0.15783, 0.75532, 0.20966, 0.7161, 0.11136 ], + "triangles": [ 30, 29, 33, 30, 32, 31, 40, 41, 36, 39, 41, 40, 40, 36, 35, 38, 39, 40, 28, 38, 40, 34, 28, 40, 34, 40, 35, 28, 34, 33, 29, 28, 33, 30, 33, 32, 41, 1, 0, 37, 41, 0, 36, 41, 37, 39, 1, 41, 39, 2, 1, 19, 12, 20, 13, 12, 19, 18, 15, 19, 16, 18, 17, 15, 13, 19, 15, 14, 13, 15, 18, 16, 21, 10, 22, 11, 10, 21, 20, 11, 21, 12, 11, 20, 9, 8, 23, 22, 9, 23, 10, 9, 22, 26, 5, 4, 25, 5, 26, 6, 5, 25, 24, 6, 25, 7, 6, 24, 23, 7, 24, 8, 7, 23, 38, 2, 39, 3, 2, 38, 27, 3, 38, 27, 38, 28, 4, 3, 27, 26, 4, 27 ], + "vertices": [ 1, 47, 21.66, 6.07, 1, 2, 46, 18.12999, 3.37, 0.16553, 47, 3.91, 4.23, 0.83446, 3, 27, -6.12, -15.23, 0.20965, 46, -0.04, 8.85, 0.53629, 5, 43.44, 6.81, 0.25404, 1, 27, 10.35999, -12.02, 1, 2, 27, 30.62, -10.09, 0.88821, 28, -7.63, -10.14999, 0.11178, 2, 27, 50.57, -9.68999, 0.30995, 28, 12.31, -9.60999, 0.69004, 2, 28, 24.21, -9.37, 0.86562, 29, -13.42, -6.2, 0.13437, 2, 28, 32.12, -9.21, 0.73143, 29, -5.72, -8.02, 0.26856, 2, 28, 39.34999, -7.58, 0.54007, 29, 1.68, -8.24, 0.45992, 2, 28, 46.9, -5.88, 0.29036, 29, 9.41, -8.47999, 0.70963, 2, 29, 18.58, -8.76, 0.66539, 30, -15.75, -5.12, 0.3346, 1, 30, 6.03, -8.58, 1, 2, 30, 31.42, -5.97, 0.39256, 31, 0.49, -6.36, 0.60743, 1, 31, 23.79, -9.31, 1, 1, 31, 52.37, -11.28, 1, 1, 31, 62.39, 2.71, 1, 1, 31, 58.29, 24.2, 1, 1, 31, 39.22, 32.48, 1, 1, 31, 25.99, 28.24, 1, 1, 31, 8.33, 5.63, 1, 2, 30, 28.81, 6.64, 0.48313, 31, 1.48, 6.48, 0.51686, 1, 30, 7.61, 5.9, 1, 3, 28, 51.66, 11.07, 0.10767, 29, 18.26, 6.74, 0.55899, 30, -12.34, 10, 0.33333, 2, 28, 42.18, 10.25, 0.31463, 29, 8.87, 8.31, 0.68536, 2, 28, 32.86, 9.43999, 0.59183, 29, -0.35, 9.85999, 0.40816, 2, 28, 23.72, 9.68999, 0.83035, 29, -9.13, 12.38, 0.16964, 2, 27, 52.08, 9.88, 0.2992, 28, 13.67, 9.97, 0.70079, 2, 27, 32.18, 12.59, 0.84686, 28, -6.23, 12.54, 0.15312, 1, 5, 9.42, 3.38, 1, 2, 5, -5.05, -1.59, 0.47199, 4, 29.16, -0.35, 0.528, 1, 4, 16.12999, -11.35, 1, 1, 4, 7.45, -29.43, 1, 2, 5, -8.22999, -31.56, 0.51928, 4, 19, -28.73, 0.4807, 1, 5, 1.99, -28.42, 1, 1, 5, 11.96, -25.36, 1, 1, 5, 21.44, -22.45, 1, 3, 46, 12.69, -14.54, 0.25481, 47, 2.13, -14.4, 0.32231, 5, 42.47, -19.81, 0.42286, 1, 47, 13.63, -8.89, 1, 1, 27, 3.55, 0.9, 1, 2, 46, 1.71, -0.73, 0.5001, 5, 40.06, -2.33, 0.49989, 1, 5, 25.66, -11.24, 1, 3, 46, 13.39, -4.64, 0.33234, 47, 0.86, -4.56, 0.48165, 5, 48.11, -11.65, 0.186 ], + "hull": 38, + "edges": [ 0, 2, 8, 10, 20, 22, 22, 24, 24, 26, 26, 28, 28, 30, 30, 32, 32, 34, 34, 36, 36, 38, 38, 40, 40, 42, 42, 44, 52, 54, 54, 56, 56, 58, 58, 60, 60, 62, 70, 72, 72, 74, 0, 74, 56, 76, 6, 8, 76, 6, 4, 6, 4, 78, 78, 80, 80, 70, 2, 82, 82, 72, 82, 78, 78, 76, 2, 4, 56, 80, 56, 66, 62, 64, 64, 66, 66, 68, 68, 70, 44, 46, 46, 48, 18, 20, 46, 18, 10, 12, 12, 14, 48, 50, 50, 52, 12, 50, 14, 16, 16, 18 ], + "width": 145, + "height": 221 + } + }, + "front leg path": { + "front leg path": { + "type": "path", + "lengths": [ 140.43, 297.34, 652.04 ], + "vertexCount": 9, + "vertices": [ 1, 44, -40.7, -0.41, 1, 1, 44, 1.48, -0.27, 1, 1, 44, 75.42, 0.33, 1, 2, 44, 82.92, 8.49, 0.5, 45, -58.75, -8.53, 0.5, 2, 44, 141.34, 0.52, 0.5, 45, 0.45, 0.71, 0.5, 2, 44, 208.26, -14.83, 0.5, 45, 68.83, 18.53, 0.5, 1, 45, 73.81, 1.41, 1, 1, 45, 156.57, 0.98, 1, 1, 44, 380.59, 0.76, 1 ] + } + }, + "head": { + "head": { + "type": "mesh", + "uvs": [ 0.49583, 0.01984, 0.3073, 0.05802, 0.14319, 0.17024, 0.0279, 0.36227, 0.04553, 0.57745, 0.16625, 0.73247, 0.18795, 0.84353, 0.30324, 0.96963, 0.42124, 0.91063, 0.58535, 0.94649, 0.76303, 0.93261, 0.8694, 0.78599, 0.96783, 0.65033, 0.93351, 0.55575, 0.91494, 0.50457, 0.93281, 0.4436, 0.96241, 0.34261, 0.84983, 0.16792, 0.70199, 0.06496, 0.71827, 0.40045, 0.55822, 0.46524, 0.67191, 0.56924, 0.61248, 0.74982, 0.29238, 0.552, 0.68707, 0.30096, 0.49719, 0.316, 0.38868, 0.29286, 0.30595, 0.24312, 0.32494, 0.40508, 0.4036, 0.55663, 0.63282, 0.6862, 0.75489, 0.67579, 0.72156, 0.43445, 0.60178, 0.47123, 0.67975, 0.53995, 0.86841, 0.4929 ], + "triangles": [ 7, 6, 8, 10, 9, 22, 9, 8, 22, 10, 22, 11, 22, 8, 23, 23, 8, 5, 8, 6, 5, 11, 22, 31, 22, 30, 31, 11, 31, 12, 23, 29, 22, 22, 29, 30, 5, 4, 23, 29, 20, 30, 30, 21, 31, 30, 20, 21, 31, 13, 12, 31, 14, 13, 31, 21, 14, 4, 3, 23, 21, 35, 14, 21, 34, 35, 20, 33, 21, 21, 33, 34, 23, 28, 29, 20, 29, 28, 20, 28, 25, 25, 28, 26, 23, 3, 28, 27, 3, 2, 3, 27, 28, 34, 32, 35, 34, 33, 32, 14, 35, 15, 15, 35, 19, 32, 33, 19, 33, 20, 19, 20, 24, 19, 20, 25, 24, 16, 15, 19, 19, 35, 32, 28, 27, 26, 19, 24, 16, 24, 17, 16, 18, 24, 25, 25, 26, 0, 24, 18, 17, 18, 25, 0, 27, 1, 26, 26, 1, 0, 27, 2, 1 ], + "vertices": [ 1, 48, 90.83, 8.14, 1, 1, 48, 81.69999, 22.33, 1, 1, 48, 66.16, 32, 1, 1, 48, 44.34, 34.97, 1, 1, 48, 24.14, 26.24, 1, 1, 48, 12.71, 11.09, 1, 1, 47, 17.77, 6.06, 1, 1, 47, 10.7, -8.62, 1, 1, 48, 2.94, -15.85, 1, 1, 48, 4.23, -30.53, 1, 1, 48, 10.7, -44.64, 1, 1, 48, 27.89, -48.41, 1, 1, 48, 43.79, -51.9, 1, 1, 48, 51.91, -45.89, 1, 1, 48, 56.29, -42.63, 1, 1, 48, 62.68, -42.04, 1, 1, 48, 73.26, -41.05, 1, 1, 48, 86.81, -25.91, 1, 1, 48, 92.45, -10.29, 1, 1, 48, 60.63, -22.97, 1, 1, 48, 49.77, -12.03, 1, 1, 48, 43.04, -24.87, 1, 1, 48, 23.94, -26.1, 1, 1, 48, 33.73, 6.84, 1, 1, 48, 69.3, -17.04999, 1, 1, 48, 62.36, -1.97, 1, 1, 48, 61.45, 7.7, 1, 1, 48, 63.85, 16.18, 1, 1, 48, 48.81, 9.14, 1, 1, 48, 36.5, -2.43, 1, 1, 48, 30.66, -25.62, 1, 1, 48, 35.18999, -35.29, 1, 1, 48, 57.45, -24.39, 1, 1, 48, 50.45, -15.81, 1, 1, 48, 46.09, -24.53, 1, 1, 48, 56.07, -38.41999, 1 ], + "hull": 19, + "edges": [ 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 18, 20, 32, 34, 34, 36, 0, 36, 28, 30, 30, 32, 30, 38, 38, 40, 40, 42, 42, 28, 20, 22, 22, 24, 22, 44, 44, 46, 32, 48, 48, 50, 50, 52, 52, 54, 54, 56, 56, 58, 58, 60, 60, 62, 24, 26, 26, 28, 62, 26, 64, 66, 66, 40, 66, 68, 68, 70, 70, 64 ], + "width": 87, + "height": 102 + } + } + } +}, +"animations": { + "sneak": { + "bones": { + "hip": { + "rotate": [ + { "time": 0, "angle": 30.27, "curve": "stepped" }, + { "time": 0.1666, "angle": 30.27 }, + { "time": 0.3333, "angle": -31.29 }, + { "time": 0.5333, "angle": -44.75 }, + { "time": 0.7333, "angle": -25.49 }, + { "time": 0.9, "angle": -9.45 }, + { "time": 1.0666, "angle": 30.27 }, + { "time": 1.2333, "angle": -10.1 }, + { "time": 1.6333, "angle": -41.47 }, + { "time": 1.8, "angle": 30.27 } + ], + "translate": [ + { "time": 0, "x": -57.43, "y": -40.92 }, + { + "time": 0.1666, + "x": -16.15, + "y": -96.56, + "curve": [ 0.245, 0, 0.637, 0.55 ] + }, + { + "time": 0.2666, + "x": 85.99, + "y": -143.07, + "curve": [ 0.381, 0.54, 0.742, 1 ] + }, + { "time": 0.3333, "x": 145.44, "y": -159.27 }, + { "time": 0.4333, "x": 344.29, "y": -134.94 }, + { "time": 0.5333, "x": 543.13, "y": -81.1 }, + { "time": 0.7333, "x": 569.68, "y": -62.13 }, + { "time": 0.9, "x": 591.8, "y": -46.32 }, + { + "time": 1.0666, + "x": 653.14, + "y": -96.6, + "curve": [ 0.381, 0.54, 0.742, 1 ] + }, + { "time": 1.1333, "x": 710.16, "y": -143.1 }, + { "time": 1.2333, "x": 795.7, "y": -159.3 }, + { "time": 1.3333, "x": 986.94, "y": -153.35 }, + { "time": 1.4333, "x": 1178.19, "y": -111.88 }, + { "time": 1.6333, "x": 1195.1, "y": -62.1 }, + { "time": 1.8, "x": 1246.53, "y": -40.92 } + ] + }, + "front leg IK target": { + "translate": [ + { "time": 0, "x": -50.42, "y": 44.61 }, + { "time": 0.1666, "x": -50.42, "y": 46.55 }, + { "time": 0.3333, "x": -50.42, "y": 47 }, + { + "time": 0.5333, + "x": -26.42, + "y": 50.21, + "curve": [ 0.532, 0, 0.75, 1 ] + }, + { "time": 0.7333, "x": 566.43, "y": 107.27 }, + { "time": 0.9, "x": 1215.89, "y": 68.21 }, + { "time": 1.0666, "x": 1235.47, "y": 15.8 }, + { "time": 1.2333, "x": 1235.47, "y": 0.97 }, + { "time": 1.5666, "x": 1230.15, "y": 3.76 }, + { "time": 1.7, "x": 1244, "y": 26.76 }, + { "time": 1.8, "x": 1253.53, "y": 44.61 } + ] + }, + "front foot 1": { + "rotate": [ + { "time": 0, "angle": -48.38, "curve": "stepped" }, + { "time": 0.3333, "angle": -48.38 }, + { "time": 0.7, "angle": -121.34 }, + { "time": 0.8, "angle": -80.19 }, + { "time": 0.9, "angle": 45.59 }, + { "time": 1.0666, "angle": 2.1 }, + { "time": 1.2333, "angle": 4.65 }, + { "time": 1.5666, "angle": 5.66 }, + { "time": 1.8, "angle": -48.38 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.6, "x": 1, "y": 1 }, + { "time": 0.6333, "x": 0.954, "y": 1 }, + { "time": 0.7666, "x": 0.82, "y": 1 }, + { "time": 0.9, "x": 1, "y": 1 }, + { "time": 1.0666, "x": 0.851, "y": 1 }, + { "time": 1.3666, "x": 1, "y": 1 } + ] + }, + "front foot 3": { + "rotate": [ + { "time": 0, "angle": 36.32 }, + { "time": 0.3333, "angle": 28.46 }, + { "time": 0.5, "angle": 34.84 }, + { "time": 0.5333, "angle": 30.32 }, + { "time": 0.5666, "angle": 61.67 }, + { "time": 0.7, "angle": -19.47 }, + { "time": 0.9, "angle": -0.12 }, + { "time": 1.0666, "angle": -7.21 }, + { "time": 1.2333, "angle": -11.34 }, + { "time": 1.5666, "angle": -11.23 }, + { "time": 1.8, "angle": 36.32 } + ] + }, + "back leg IK target": { + "translate": [ + { "time": 0, "x": 516.79, "y": 86.68 }, + { "time": 0.1666, "x": 523.71, "y": 16.63 }, + { "time": 0.3333, "x": 523.03, "y": -5, "curve": "stepped" }, + { "time": 0.7, "x": 523.03, "y": -5 }, + { "time": 0.9, "x": 551.31, "y": 41.86 }, + { "time": 1.0666, "x": 554.24, "y": 44.45 }, + { "time": 1.1333, "x": 555.44, "y": 44.74 }, + { "time": 1.2, "x": 556.6, "y": 46.19, "curve": "stepped" }, + { "time": 1.4333, "x": 556.6, "y": 46.19 }, + { "time": 1.5, "x": 746.96, "y": 74.82 }, + { "time": 1.6333, "x": 1127.68, "y": 103.61 }, + { "time": 1.8, "x": 1820.75, "y": 86.68 } + ] + }, + "back foot 1": { + "rotate": [ + { "time": 0, "angle": 74.17 }, + { "time": 0.1666, "angle": -17.01 }, + { "time": 0.3333, "angle": 5.05 }, + { "time": 0.7, "angle": 3.74 }, + { "time": 0.9, "angle": -65.56 }, + { "time": 1.6333, "angle": -92.52 }, + { "time": 1.8, "angle": 74.17 } + ], + "scale": [ + { "time": 0, "x": 0.824, "y": 1 }, + { "time": 0.1666, "x": 0.754, "y": 1 }, + { "time": 0.3333, "x": 0.589, "y": 1 }, + { "time": 0.5666, "x": 0.909, "y": 1 }, + { "time": 0.9, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.4, "x": 1, "y": 1 }, + { "time": 1.5, "x": 0.844, "y": 1 }, + { "time": 1.8, "x": 0.824, "y": 1 } + ] + }, + "back foot 2": { + "rotate": [ + { "time": 0, "angle": 8.13 }, + { "time": 0.1666, "angle": -3.21 }, + { "time": 0.7, "angle": -1.14 }, + { "time": 0.9, "angle": 34.12 }, + { "time": 1.4333, "angle": 46.68 }, + { "time": 1.5333, "angle": -15.6 }, + { "time": 1.6333, "angle": -11.91 }, + { "time": 1.8, "angle": 8.13 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 }, + { "time": 0.1666, "x": 0.835, "y": 1 }, + { "time": 0.3333, "x": 1, "y": 1 } + ] + }, + "front arm 1": { + "rotate": [ + { "time": 0, "angle": -39.71 }, + { "time": 0.1666, "angle": -37.29 }, + { "time": 0.3333, "angle": 30.66 }, + { + "time": 0.9, + "angle": -53.28, + "curve": [ 0.708, 0.01, 0.75, 1 ] + }, + { "time": 1.2333, "angle": 36 }, + { "time": 1.8, "angle": -39.71 } + ] + }, + "neck 1": { + "rotate": [ + { "time": 0, "angle": 21.95, "curve": "stepped" }, + { "time": 0.1666, "angle": 21.95 }, + { "time": 0.2666, "angle": 30.6 }, + { "time": 0.3333, "angle": 36.37 }, + { "time": 0.7333, "angle": 33.6 }, + { "time": 1.1666, "angle": 23.95 }, + { "time": 1.2333, "angle": 36.37 }, + { "time": 1.6333, "angle": 41.16 }, + { "time": 1.8, "angle": 21.95 } + ] + }, + "neck 2": { + "rotate": [ + { "time": 0, "angle": -22.93 }, + { "time": 0.1666, "angle": -23.95 }, + { "time": 0.2666, "angle": 8.84 }, + { "time": 0.3333, "angle": 30.71 }, + { "time": 0.7333, "angle": -3.36 }, + { "time": 0.9, "angle": -17.57 }, + { "time": 1.1666, "angle": 2.19 }, + { "time": 1.2333, "angle": 15.25 }, + { "time": 1.6333, "angle": 4.41 }, + { "time": 1.8, "angle": -22.93 } + ] + }, + "head": { + "rotate": [ + { "time": 0, "angle": -22.93 }, + { "time": 0.1666, "angle": -13.03 }, + { "time": 0.2666, "angle": 2.64 }, + { "time": 0.3333, "angle": 13.1 }, + { "time": 0.5, "angle": 13.1 }, + { "time": 0.7333, "angle": -18.9 }, + { "time": 0.9, "angle": -41.77 }, + { "time": 1.1666, "angle": -4 }, + { "time": 1.2333, "angle": -2.35 }, + { "time": 1.6333, "angle": -22.89 }, + { "time": 1.8, "angle": -22.93 } + ] + }, + "back arm 1": { + "rotate": [ + { "time": 0, "angle": -17.23 }, + { "time": 0.1666, "angle": -18.65 }, + { "time": 0.3333, "angle": 324.98 }, + { "time": 0.5666, "angle": -6.41 }, + { "time": 0.9, "angle": -14.83 }, + { "time": 1.0666, "angle": -16.9 }, + { "time": 1.2333, "angle": 1.49 }, + { "time": 1.4, "angle": 2.56 }, + { "time": 1.8, "angle": -17.23 } + ], + "translate": [ + { "time": 0, "x": -14.25, "y": -6.6 } + ] + }, + "back leg IK 1": { + "scale": [ + { "time": 0, "x": 2.186, "y": 1 }, + { "time": 0.1666, "x": 2.228, "y": 1 }, + { "time": 0.3333, "x": 1.532, "y": 1 }, + { "time": 0.4333, "x": 0.946, "y": 1 }, + { "time": 0.5333, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 }, + { "time": 1.1333, "x": 0.892, "y": 1 }, + { "time": 1.2333, "x": 0.956, "y": 1 }, + { "time": 1.4333, "x": 2.315, "y": 1 }, + { "time": 1.6333, "x": 0.774, "y": 1 }, + { "time": 1.8, "x": 2.186, "y": 1 } + ] + }, + "front leg 1": { + "scale": [ + { "time": 0, "x": 1, "y": 1.117 } + ] + }, + "back leg 1": { + "scale": [ + { "time": 0, "x": 1, "y": 1.038 } + ] + }, + "front leg IK 1": { + "scale": [ + { "time": 0, "x": 1, "y": 1 }, + { "time": 0.2666, "x": 0.858, "y": 1 }, + { "time": 0.3333, "x": 0.972, "y": 1 }, + { + "time": 0.5333, + "x": 2.356, + "y": 1, + "curve": [ 0.532, 0, 0.75, 1 ] + }, + { "time": 0.7, "x": 1, "y": 1 }, + { "time": 0.9, "x": 2.248, "y": 1 }, + { "time": 1.0666, "x": 2.002, "y": 1 }, + { "time": 1.2333, "x": 1.495, "y": 1 }, + { + "time": 1.3, + "x": 1.047, + "y": 1, + "curve": [ 0.339, 0.58, 0.764, 1 ] + }, + { "time": 1.4333, "x": 0.779, "y": 0.762 }, + { "time": 1.8, "x": 1, "y": 1 } + ] + }, + "front leg IK 2": { + "scale": [ + { "time": 0, "x": 1, "y": 1 } + ] + }, + "front arm 3": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.1666, "angle": 17.37 }, + { "time": 0.3333, "angle": 31.94 }, + { + "time": 0.9, + "angle": 4.76, + "curve": [ 0.708, 0.01, 0.75, 1 ] + }, + { "time": 1.2333, "angle": 39.96 }, + { "time": 1.8, "angle": 0 } + ] + }, + "spine 2": { + "rotate": [ + { "time": 0, "angle": -3.49 }, + { "time": 0.2666, "angle": -11.57 }, + { "time": 0.3333, "angle": -9.02 }, + { "time": 0.5, "angle": -2.65 }, + { "time": 0.7333, "angle": -5.78 }, + { "time": 1.1666, "angle": -11.57 }, + { "time": 1.2333, "angle": -6.69 }, + { "time": 1.6333, "angle": -2.5 }, + { "time": 1.8, "angle": -3.49 } + ] + }, + "spine 3": { + "rotate": [ + { "time": 0, "angle": -20.41 }, + { "time": 0.2666, "angle": -11.57 }, + { "time": 0.3333, "angle": -9.02 }, + { "time": 0.5, "angle": -2.65 }, + { "time": 0.7333, "angle": -10.53 }, + { "time": 0.9, "angle": -16.16 }, + { "time": 1.1666, "angle": -11.57 }, + { "time": 1.2333, "angle": -9.02 }, + { "time": 1.6333, "angle": -7.26 }, + { "time": 1.8, "angle": -20.41 } + ] + }, + "back arm 3": { + "rotate": [ + { "time": 0, "angle": 26.23 }, + { "time": 0.1666, "angle": 53.14 }, + { "time": 0.3333, "angle": 116.25 }, + { "time": 0.5666, "angle": 35.72 }, + { "time": 0.9, "angle": 39.32 }, + { "time": 1.0666, "angle": 41.19 }, + { "time": 1.2333, "angle": 78.09 }, + { "time": 1.4, "angle": 36.16 }, + { "time": 1.8, "angle": 26.23 } + ] + }, + "back foot 3": { + "rotate": [ + { "time": 0, "angle": 11.35 }, + { "time": 0.7, "angle": -4.24 }, + { "time": 0.9, "angle": 25.48, "curve": "stepped" }, + { "time": 1.4333, "angle": 25.48 }, + { "time": 1.5333, "angle": -30.51 }, + { "time": 1.6333, "angle": -20.54 }, + { "time": 1.8, "angle": 11.35 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 }, + { "time": 0.1666, "x": 0.835, "y": 1 }, + { "time": 0.3333, "x": 1, "y": 1 } + ] + }, + "spine 1": { + "rotate": [ + { "time": 0, "angle": 10.81 }, + { "time": 0.2666, "angle": -28.69 }, + { "time": 0.3333, "angle": -24.32 }, + { "time": 0.5, "angle": -13.37 }, + { "time": 0.7333, "angle": 21.61 }, + { "time": 0.9, "angle": 46.61 }, + { "time": 1.1666, "angle": -28.69 }, + { "time": 1.2333, "angle": -43.33 }, + { "time": 1.6333, "angle": 24.89 }, + { "time": 1.8, "angle": 10.81 } + ] + }, + "spine 4": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.2666, "angle": -2.8 }, + { "time": 0.3333, "angle": -0.82 }, + { "time": 0.5, "angle": 4.13 }, + { "time": 0.7333, "angle": -3.74 }, + { "time": 0.9, "angle": -9.37 }, + { "time": 1.1666, "angle": -9.02 }, + { "time": 1.2333, "angle": -0.82 }, + { "time": 1.6333, "angle": 3.81 }, + { "time": 1.8, "angle": 0 } + ] + }, + "front foot 2": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.2666, "angle": -1.24 }, + { "time": 0.3333, "angle": -0.2 }, + { "time": 0.5, "angle": 22.72 }, + { "time": 0.5333, "angle": 26.87 }, + { "time": 0.7, "angle": -39.25 }, + { "time": 0.9, "angle": 11.26 }, + { "time": 1.0666, "angle": -18.17 }, + { "time": 1.2333, "angle": -2.64 }, + { "time": 1.5666, "angle": -5.84 }, + { "time": 1.8, "angle": 0 } + ] + }, + "belly": { + "translate": [ + { "time": 0, "x": 3.65, "y": -3.77 }, + { "time": 0.2666, "x": 13.82, "y": -3.82 }, + { "time": 0.6333, "x": -4.11, "y": -3.89 }, + { "time": 0.7666, "x": 10.21, "y": -2.91 }, + { "time": 0.8666, "x": 10.3, "y": -7.38 }, + { "time": 1.1, "x": -0.44, "y": -1.45 }, + { "time": 1.2333, "x": 12.37, "y": 2.32 }, + { "time": 1.3666, "x": 11.51, "y": 5.52 }, + { "time": 1.8, "x": 0, "y": 0 } + ] + }, + "butt": { + "translate": [ + { "time": 0, "x": 0, "y": 0 }, + { "time": 0.7666, "x": 9.88, "y": -25.41 }, + { "time": 0.8333, "x": 15.89, "y": -41.88 }, + { "time": 1.2333, "x": -12.49, "y": -32.99 }, + { "time": 1.8, "x": 0, "y": 0 } + ] + } + }, + "deform": { + "default": { + "back leg": { + "back leg": [ + { "time": 0.3 }, + { + "time": 0.3333, + "offset": 68, + "vertices": [ -1.72897, 2.75445, -1.52529, 2.94189, 0.0625, 3.6552, 0.01776, 3.65397, 0, 0, 0, 0, 0, 0, 0.0625, 3.6552, 0.01776, 3.65397, 0.90136, 3.54112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.98724, -1.57397, -0.03338, -2.08873, -0.0108, -2.08799, -0.51434, -2.02362, 0.98724, -1.57397, 0.87167, -1.68002, -0.03338, -2.08873, -0.0108, -2.08799 ] + }, + { "time": 0.4666, "curve": "stepped" }, + { "time": 1.3333 }, + { + "time": 1.4333, + "offset": 110, + "vertices": [ 2.52801, 0.00428, -0.03569, -4.90118, -3.71691, -3.19396, -4.88018, -0.43807, 5.17279, -0.0625, 5.1499, -0.47689, -0.07238, -10.06842, -7.6351, -6.56073, 6.64205, -0.09958, 6.61151, -0.62642, -0.09275, -12.93914, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.01242, -1.65533, -1.25543, -1.0787, 0.86096, 0.02682, -0.01242, -1.65533, -1.25543, -1.0787 ] + }, + { "time": 1.5 } + ] + }, + "back leg path": { + "back leg path": [ + { "time": 1.4333 }, + { + "time": 1.5, + "vertices": [ 4.67718, -35.44354, 0, 0, -11.37146, 49.53738, -20.9989, -109.72336, 65.45837, -90.53627, -9.56652, -24.74755, 11.45202, -23.93551, -19.0719, 47.32281, -47.53955, 18.58409, 34.69244, -51.5341, 0, 0, 13.30163, -100.17206 ] + }, + { + "time": 1.5666, + "vertices": [ -0.9635, -22.43963, 0, 0, -13.80389, 27.61459, -41.00647, -55.1597, 7.62652, -96.25755, -24.12603, -24.11285, 7.19531, -37.8742, -31.47302, 7.7796, -12.34545, -3.32328, 26.55981, -38.73887, 0, 0, -13.62085, -280.84912 ] + }, + { "time": 1.6666 } + ] + }, + "body": { + "body": [ + { "time": 0 }, + { + "time": 0.3333, + "offset": 164, + "vertices": [ -0.01179, 0.02892, 0.00916, 0.0298, 0, 0, 1.17781, 0.89835, 1.48062, -0.04942, -6.68858, -1.30628, 4.38937, 4.03925, 4.59583, 3.27733, 5.6365, -0.11034, -4.92264, -0.8036, 4.54262, 1.06504, 3.29334, 0.58413, 2.94213, -1.40271, -4.28855, -0.56444, 5.07102, -0.21189, 2.9589, -0.75665, 1.83513, -2.22983, -4.31061, 0.62609, 6.11537, -0.87568, 3.79229, -1.67126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.17403, 0.22007, 0.27403, 0.06015 ] + }, + { + "time": 0.5333, + "offset": 164, + "vertices": [ -0.01886, 0.04627, 0.01467, 0.04768, 0, 0, 1.88449, 1.43737, 2.369, -0.07907, 1.46056, -1.33222, -0.75053, -3.73339, -2.82319, -2.55492, -3.80252, -0.19385, 2.81923, -1.5031, -0.33162, -6.7565, -4.28408, -5.23484, -6.6292, -1.34549, 3.83378, -1.12044, 0.51381, -8.79961, -4.81917, -7.38011, -8.40039, -2.66888, 3.83378, -1.12044, 0.51381, -8.79961, -4.81917, -7.38011, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.27845, 0.35211, 0.43846, 0.09625 ] + }, + { + "time": 0.6333, + "offset": 170, + "vertices": [ -2.09907, 0.0496, -1.943, 1.46153, 1.74966, 0.25744, 0.37649, -3.44555, -2.34342, -2.73068, -3.66285, -0.53692, 0, 0, 0, 0, 0, 0, 0, 0, 1.91689, -0.56022, 0.2569, -4.3998, -2.40958, -3.69005, -4.2002, -1.33444, 1.91689, -0.56022, 0.2569, -4.3998, -2.40958, -3.69005, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.66468, 1.2535, 0.05176, 1.41789 ] + }, + { "time": 0.7333 }, + { + "time": 0.7666, + "offset": 264, + "vertices": [ -2.27499, -1.60417, -2.23925, -1.6137, -2.2196, -1.74293, -1.80918, 2.86346, -1.11117, 2.36199, -1.14221, 2.359, 2.63101, 1.41101, 2.63215, 1.41741, -0.81469, 8.46568, 9.4562, 1.07873, 9.45622, 1.08001, -1.00012, 6.23983, 6.96737, 1.29986, 6.9674, 1.30218, -0.68823, 4.24005, 4.7344, 0.89532, 4.73448, 0.89593, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.05484, 2.78092, 0.01666, 2.78222, 3.10775, -0.05572, 3.10798, -0.05426, -1.17971, 2.87597, -0.99005, 3.55937, 3.97198, 1.27319, 3.97207, 1.27423, -2.74237, 3.14401 ] + }, + { "time": 0.8333, "curve": "stepped" }, + { "time": 1.0666 }, + { + "time": 1.3333, + "offset": 142, + "vertices": [ 4.0227, -1.7984, 0.00683, -4.47886, -0.46118, -4.45536, -0.27441, -4.47041, 4.0227, -1.7984, 0.00683, -4.47886, -0.46118, -4.45536, -0.27441, -4.47041, 0.00683, -4.47886, -0.46118, -4.45536, -0.27441, -4.47041, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4.0227, -1.7984, 0.00683, -4.47886, -0.46118, -4.45536, -0.27441, -4.47041, 4.0227, -1.7984, 0.00683, -4.47886, -0.46118, -4.45536, -0.27441, -4.47041, 4.0227, -1.7984, 0.00683, -4.47886, -0.46118, -4.45536, -0.27441, -4.47041, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4.0227, -1.7984, 0.00683, -4.47886, -0.46118, -4.45536, -0.27441, -4.47041, 4.0227, -1.7984, 0.00683, -4.47886, -0.46118, -4.45536, -0.27441, -4.47041, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4.0227, -1.7984, 0.00683, -4.47886, -0.46118, -4.45536, -0.27441, -4.47041 ] + }, + { "time": 1.4333 } + ] + }, + "front leg path": { + "front leg path": [ + { "time": 0.5666 }, + { + "time": 0.6333, + "vertices": [ 0.16365, -9.90768, 0, 0, -1.90419, 16.99049, 16.55858, -93.6721, 21.4361, -76.03695, -0.72391, -31.37989, 8.21379, -30.29725, -24.90732, 16.177, -28.83566, 5.62575, 82.90021, -63.82897, 0, 0, -39.50021, -13.99932 ] + }, + { + "time": 0.7, + "vertices": [ 0.20397, -12.34891, 0, 0, -2.37338, 21.17691, 20.63858, -116.75269, 26.71791, -94.77228, -0.90228, -39.11182, 10.23765, -37.76242, -31.04443, 20.16297, -35.9407, 7.01193, 22.68159, 24.72715, 0, 0, -292.39255, -342.79443 ] + }, + { "time": 0.8 } + ] + } + } + } + } +} +} \ No newline at end of file diff --git a/spine-corona/data/stretchyman.png b/spine-corona/data/stretchyman.png new file mode 100644 index 000000000..106a42a67 Binary files /dev/null and b/spine-corona/data/stretchyman.png differ diff --git a/spine-corona/data/tank.atlas b/spine-corona/data/tank.atlas new file mode 100644 index 000000000..115f09479 --- /dev/null +++ b/spine-corona/data/tank.atlas @@ -0,0 +1,125 @@ + +tank.png +size: 1024,512 +format: RGBA8888 +filter: Linear,Linear +repeat: none +antenna + rotate: true + xy: 650, 346 + size: 11, 152 + orig: 11, 152 + offset: 0, 0 + index: -1 +cannon + rotate: false + xy: 2, 49 + size: 466, 29 + orig: 466, 29 + offset: 0, 0 + index: -1 +cannonConnector + rotate: true + xy: 843, 231 + size: 56, 68 + orig: 56, 68 + offset: 0, 0 + index: -1 +guntower + rotate: false + xy: 650, 359 + size: 365, 145 + orig: 365, 145 + offset: 0, 0 + index: -1 +machinegun + rotate: false + xy: 2, 18 + size: 166, 29 + orig: 166, 29 + offset: 0, 0 + index: -1 +machinegun-mount + rotate: true + xy: 647, 193 + size: 36, 48 + orig: 36, 48 + offset: 0, 0 + index: -1 +rock + rotate: false + xy: 470, 50 + size: 126, 28 + orig: 126, 28 + offset: 0, 0 + index: -1 +tankBottom + rotate: false + xy: 2, 193 + size: 643, 138 + orig: 643, 138 + offset: 0, 0 + index: -1 +tankBottom-shadow + rotate: false + xy: 2, 333 + size: 646, 171 + orig: 646, 171 + offset: 0, 0 + index: -1 +tankTop + rotate: false + xy: 2, 80 + size: 704, 111 + orig: 704, 111 + offset: 0, 0 + index: -1 +tread + rotate: false + xy: 647, 231 + size: 48, 15 + orig: 48, 15 + offset: 0, 0 + index: -1 +tread-inside + rotate: false + xy: 2, 2 + size: 13, 14 + orig: 13, 14 + offset: 0, 0 + index: -1 +wheel-big + rotate: false + xy: 650, 248 + size: 96, 96 + orig: 96, 96 + offset: 0, 0 + index: -1 +wheel-big-overlay + rotate: false + xy: 748, 251 + size: 93, 93 + orig: 93, 93 + offset: 0, 0 + index: -1 +wheel-mid + rotate: false + xy: 843, 289 + size: 68, 68 + orig: 68, 68 + offset: 0, 0 + index: -1 +wheel-mid-overlay + rotate: false + xy: 913, 289 + size: 68, 68 + orig: 68, 68 + offset: 0, 0 + index: -1 +wheel-small + rotate: false + xy: 913, 251 + size: 36, 36 + orig: 36, 36 + offset: 0, 0 + index: -1 diff --git a/spine-corona/data/tank.json b/spine-corona/data/tank.json new file mode 100644 index 000000000..cab50642b --- /dev/null +++ b/spine-corona/data/tank.json @@ -0,0 +1,1900 @@ +{ +"skeleton": { "hash": "6mxwgn4gKXrDy2eixknadUxKY1c", "spine": "3.4.02", "width": 1914.53, "height": 964.05, "images": "./images/" }, +"bones": [ + { "name": "root" }, + { "name": "tankRoot", "parent": "root", "y": 200 }, + { "name": "tankTreads", "parent": "tankRoot" }, + { "name": "tankBody", "parent": "tankTreads", "y": 10 }, + { "name": "guntower", "parent": "tankBody", "x": -21.72, "y": 245.47 }, + { "name": "antennaRoot", "parent": "guntower", "x": 164.6, "y": 202.52 }, + { "name": "antenna1", "parent": "antennaRoot", "length": 40, "rotation": 90, "y": 39.99, "color": "ffee00ff" }, + { "name": "antenna2", "parent": "antenna1", "length": 42, "x": 42, "color": "ffee00ff" }, + { "name": "antenna3", "parent": "antenna2", "length": 42, "x": 42, "color": "ffee00ff" }, + { "name": "antenna4", "parent": "antenna3", "length": 42, "x": 42, "color": "ffee00ff" }, + { "name": "antenna5", "parent": "antenna4", "length": 42, "x": 42, "color": "ffee00ff" }, + { "name": "antenna6", "parent": "antenna5", "length": 42, "x": 42, "color": "ffee00ff" }, + { "name": "cannonConnector", "parent": "guntower", "x": -235.04, "y": 96.07 }, + { "name": "cannonTarget", "parent": "tankRoot", "x": -1486.66, "y": 351.82, "color": "ff3f00ff" }, + { "name": "cannon", "parent": "cannonConnector", "length": 946.68, "rotation": 180, "color": "ff4000ff" }, + { "name": "cannonTip", "parent": "cannon", "x": 946.68, "color": "ff4000ff" }, + { "name": "machineGunTarget", "parent": "tankRoot", "x": -1474, "y": 559.42, "color": "ff3f00ff" }, + { + "name": "machinegun-mount", + "parent": "guntower", + "length": 90.97, + "rotation": 90, + "x": -123.72, + "y": 218.32, + "color": "15ff00ff" + }, + { + "name": "machinegun", + "parent": "machinegun-mount", + "length": 208.94, + "rotation": 90, + "x": 91.52, + "y": -1.03, + "color": "15ff00ff" + }, + { "name": "machinegun-tip", "parent": "machinegun", "x": 210.42, "y": -12.2 }, + { "name": "rock", "parent": "root", "x": -656.45 }, + { + "name": "tread", + "parent": "tankRoot", + "length": 82, + "rotation": 180, + "x": -22.89, + "y": 213.85, + "scaleX": 0.993, + "color": "e64344ff" + }, + { "name": "tread2", "parent": "tread", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread3", "parent": "tread2", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread4", "parent": "tread3", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread5", "parent": "tread4", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread6", "parent": "tread5", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread7", "parent": "tread6", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread8", "parent": "tread7", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread9", "parent": "tread8", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread10", "parent": "tread9", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread11", "parent": "tread10", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread12", "parent": "tread11", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread13", "parent": "tread12", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread14", "parent": "tread13", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread15", "parent": "tread14", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread16", "parent": "tread15", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread17", "parent": "tread16", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread18", "parent": "tread17", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread19", "parent": "tread18", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread20", "parent": "tread19", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread21", "parent": "tread20", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread22", "parent": "tread21", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread23", "parent": "tread22", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread24", "parent": "tread23", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread25", "parent": "tread24", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread26", "parent": "tread25", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread27", "parent": "tread26", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread28", "parent": "tread27", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread29", "parent": "tread28", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread30", "parent": "tread29", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread31", "parent": "tread30", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread32", "parent": "tread31", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread33", "parent": "tread32", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread34", "parent": "tread33", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread35", "parent": "tread34", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread36", "parent": "tread35", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "wheel-midCenter", "parent": "tankRoot", "y": -114.56 }, + { "name": "treadCollider1", "parent": "wheel-midCenter", "x": -329.57, "y": -85.44, "color": "ff00fbff" }, + { "name": "treadCollider2", "parent": "wheel-midCenter", "x": -165.95, "y": -85.44, "color": "ff00fbff" }, + { "name": "treadCollider3", "parent": "wheel-midCenter", "y": -85.44, "color": "ff00fbff" }, + { "name": "treadCollider4", "parent": "wheel-midCenter", "x": 163.56, "y": -85.44, "color": "ff00fbff" }, + { "name": "treadCollider5", "parent": "wheel-midCenter", "x": 329.12, "y": -85.44, "color": "ff00fbff" }, + { "name": "treadGravity1", "parent": "tankRoot", "rotation": 180, "x": -175.35, "y": 109.99, "color": "ff00fbff" }, + { "name": "treadGravity2", "parent": "tankRoot", "rotation": 180, "x": 177.88, "y": 105.45, "color": "ff00fbff" }, + { "name": "wheel-bigRoot1", "parent": "tankTreads", "x": -549.59, "y": 14.39, "color": "abe323ff" }, + { "name": "wheel-big1", "parent": "wheel-bigRoot1", "x": -0.02, "color": "abe323ff" }, + { "name": "wheel-bigRoot2", "parent": "tankTreads", "x": 547.33, "y": 14.39 }, + { "name": "wheel-big2", "parent": "wheel-bigRoot2" }, + { "name": "wheel-midRoot1", "parent": "wheel-midCenter", "x": -410.57, "color": "abe323ff" }, + { "name": "wheel-mid1", "parent": "wheel-midRoot1", "color": "abe323ff" }, + { "name": "wheel-midRoot2", "parent": "wheel-midCenter", "x": -246.95 }, + { "name": "wheel-mid2", "parent": "wheel-midRoot2" }, + { "name": "wheel-midRoot3", "parent": "wheel-midCenter", "x": -82.72 }, + { "name": "wheel-mid3", "parent": "wheel-midRoot3" }, + { "name": "wheel-midRoot4", "parent": "wheel-midCenter", "x": 80.89 }, + { "name": "wheel-mid4", "parent": "wheel-midRoot4" }, + { "name": "wheel-midRoot5", "parent": "wheel-midCenter", "x": 244.51 }, + { "name": "wheel-mid5", "parent": "wheel-midRoot5" }, + { "name": "wheel-midRoot6", "parent": "wheel-midCenter", "x": 408.73 }, + { "name": "wheel-mid6", "parent": "wheel-midRoot6" }, + { "name": "wheel-smallRoot1", "parent": "tankTreads", "x": -337.38, "y": 109.43 }, + { "name": "wheel-small1", "parent": "wheel-smallRoot1", "color": "abe323ff" }, + { "name": "wheel-smallRoot2", "parent": "tankTreads", "x": 0.08, "y": 109.43 }, + { "name": "wheel-small2", "parent": "wheel-smallRoot2" }, + { "name": "wheel-smallRoot3", "parent": "tankTreads", "x": 334.68, "y": 109.43 }, + { "name": "wheel-small3", "parent": "wheel-smallRoot3" } +], +"slots": [ + { "name": "tankBody-shadow", "bone": "tankBody", "color": "ffffffb9", "attachment": "tankBottom-shadow" }, + { "name": "bottom", "bone": "tankBody", "attachment": "tankBottom" }, + { "name": "tread-inside1", "bone": "tread", "attachment": "tread-inside" }, + { "name": "tread-inside53", "bone": "tread27", "attachment": "tread-inside" }, + { "name": "tread-inside27", "bone": "tread14", "attachment": "tread-inside" }, + { "name": "tread-inside3", "bone": "tread2", "attachment": "tread-inside" }, + { "name": "tread-inside55", "bone": "tread28", "attachment": "tread-inside" }, + { "name": "tread-inside29", "bone": "tread15", "attachment": "tread-inside" }, + { "name": "tread-inside5", "bone": "tread3", "attachment": "tread-inside" }, + { "name": "tread-inside57", "bone": "tread29", "attachment": "tread-inside" }, + { "name": "tread-inside31", "bone": "tread16", "attachment": "tread-inside" }, + { "name": "tread-inside7", "bone": "tread4", "attachment": "tread-inside" }, + { "name": "tread-inside59", "bone": "tread30", "attachment": "tread-inside" }, + { "name": "tread-inside33", "bone": "tread17", "attachment": "tread-inside" }, + { "name": "tread-inside9", "bone": "tread5", "attachment": "tread-inside" }, + { "name": "tread-inside61", "bone": "tread31", "attachment": "tread-inside" }, + { "name": "tread-inside35", "bone": "tread18", "attachment": "tread-inside" }, + { "name": "tread-inside11", "bone": "tread6", "attachment": "tread-inside" }, + { "name": "tread-inside63", "bone": "tread32", "attachment": "tread-inside" }, + { "name": "tread-inside37", "bone": "tread19", "attachment": "tread-inside" }, + { "name": "tread-inside13", "bone": "tread7", "attachment": "tread-inside" }, + { "name": "tread-inside65", "bone": "tread33", "attachment": "tread-inside" }, + { "name": "tread-inside39", "bone": "tread20", "attachment": "tread-inside" }, + { "name": "tread-inside15", "bone": "tread8", "attachment": "tread-inside" }, + { "name": "tread-inside67", "bone": "tread34", "attachment": "tread-inside" }, + { "name": "tread-inside69", "bone": "tread35", "attachment": "tread-inside" }, + { "name": "tread-inside71", "bone": "tread36", "attachment": "tread-inside" }, + { "name": "tread-inside41", "bone": "tread21", "attachment": "tread-inside" }, + { "name": "tread-inside17", "bone": "tread9", "attachment": "tread-inside" }, + { "name": "tread-inside43", "bone": "tread22", "attachment": "tread-inside" }, + { "name": "tread-inside19", "bone": "tread10", "attachment": "tread-inside" }, + { "name": "tread-inside45", "bone": "tread23", "attachment": "tread-inside" }, + { "name": "tread-inside21", "bone": "tread11", "attachment": "tread-inside" }, + { "name": "tread-inside47", "bone": "tread24", "attachment": "tread-inside" }, + { "name": "tread-inside23", "bone": "tread12", "attachment": "tread-inside" }, + { "name": "tread-inside49", "bone": "tread25", "attachment": "tread-inside" }, + { "name": "tread-inside25", "bone": "tread13", "attachment": "tread-inside" }, + { "name": "tread-inside51", "bone": "tread26", "attachment": "tread-inside" }, + { "name": "tread-inside2", "bone": "tread", "attachment": "tread-inside" }, + { "name": "tread-inside54", "bone": "tread27", "attachment": "tread-inside" }, + { "name": "tread-inside28", "bone": "tread14", "attachment": "tread-inside" }, + { "name": "tread-inside4", "bone": "tread2", "attachment": "tread-inside" }, + { "name": "tread-inside56", "bone": "tread28", "attachment": "tread-inside" }, + { "name": "tread-inside30", "bone": "tread15", "attachment": "tread-inside" }, + { "name": "tread-inside6", "bone": "tread3", "attachment": "tread-inside" }, + { "name": "tread-inside58", "bone": "tread29", "attachment": "tread-inside" }, + { "name": "tread-inside32", "bone": "tread16", "attachment": "tread-inside" }, + { "name": "tread-inside8", "bone": "tread4", "attachment": "tread-inside" }, + { "name": "tread-inside60", "bone": "tread30", "attachment": "tread-inside" }, + { "name": "tread-inside34", "bone": "tread17", "attachment": "tread-inside" }, + { "name": "tread-inside10", "bone": "tread5", "attachment": "tread-inside" }, + { "name": "tread-inside62", "bone": "tread31", "attachment": "tread-inside" }, + { "name": "tread-inside36", "bone": "tread18", "attachment": "tread-inside" }, + { "name": "tread-inside12", "bone": "tread6", "attachment": "tread-inside" }, + { "name": "tread-inside64", "bone": "tread32", "attachment": "tread-inside" }, + { "name": "tread-inside38", "bone": "tread19", "attachment": "tread-inside" }, + { "name": "tread-inside14", "bone": "tread7", "attachment": "tread-inside" }, + { "name": "tread-inside66", "bone": "tread33", "attachment": "tread-inside" }, + { "name": "tread-inside40", "bone": "tread20", "attachment": "tread-inside" }, + { "name": "tread-inside16", "bone": "tread8", "attachment": "tread-inside" }, + { "name": "tread-inside68", "bone": "tread34", "attachment": "tread-inside" }, + { "name": "tread-inside70", "bone": "tread35", "attachment": "tread-inside" }, + { "name": "tread-inside72", "bone": "tread36", "attachment": "tread-inside" }, + { "name": "tread-inside42", "bone": "tread21", "attachment": "tread-inside" }, + { "name": "tread-inside18", "bone": "tread9", "attachment": "tread-inside" }, + { "name": "tread-inside44", "bone": "tread22", "attachment": "tread-inside" }, + { "name": "tread-inside20", "bone": "tread10", "attachment": "tread-inside" }, + { "name": "tread-inside46", "bone": "tread23", "attachment": "tread-inside" }, + { "name": "tread-inside22", "bone": "tread11", "attachment": "tread-inside" }, + { "name": "tread-inside48", "bone": "tread24", "attachment": "tread-inside" }, + { "name": "tread-inside24", "bone": "tread12", "attachment": "tread-inside" }, + { "name": "tread-inside50", "bone": "tread25", "attachment": "tread-inside" }, + { "name": "tread-inside26", "bone": "tread13", "attachment": "tread-inside" }, + { "name": "tread-inside52", "bone": "tread26", "attachment": "tread-inside" }, + { "name": "wheel-big", "bone": "wheel-big1", "color": "dbdbdbff", "attachment": "wheel-big" }, + { "name": "wheel-big2", "bone": "wheel-big2", "color": "dbdbdbff", "attachment": "wheel-big" }, + { "name": "wheel-mid", "bone": "wheel-mid1", "attachment": "wheel-mid" }, + { "name": "wheel-mid2", "bone": "wheel-mid2", "attachment": "wheel-mid" }, + { "name": "wheel-mid3", "bone": "wheel-mid3", "attachment": "wheel-mid" }, + { "name": "wheel-mid4", "bone": "wheel-mid4", "attachment": "wheel-mid" }, + { "name": "wheel-mid5", "bone": "wheel-mid5", "attachment": "wheel-mid" }, + { "name": "wheel-mid6", "bone": "wheel-mid6", "attachment": "wheel-mid" }, + { "name": "wheel-small", "bone": "wheel-small1", "attachment": "wheel-small" }, + { "name": "wheel-small2", "bone": "wheel-small2", "attachment": "wheel-small" }, + { "name": "wheel-small3", "bone": "wheel-small3", "attachment": "wheel-small" }, + { + "name": "wheel-mid-overlay", + "bone": "wheel-midRoot1", + "color": "ffffffec", + "attachment": "wheel-mid-overlay", + "blend": "multiply" + }, + { + "name": "wheel-mid-overlay2", + "bone": "wheel-midRoot2", + "color": "ffffffec", + "attachment": "wheel-mid-overlay", + "blend": "multiply" + }, + { + "name": "wheel-mid-overlay3", + "bone": "wheel-midRoot3", + "color": "ffffffec", + "attachment": "wheel-mid-overlay", + "blend": "multiply" + }, + { + "name": "wheel-mid-overlay4", + "bone": "wheel-midRoot4", + "color": "ffffffec", + "attachment": "wheel-mid-overlay", + "blend": "multiply" + }, + { + "name": "wheel-mid-overlay5", + "bone": "wheel-midRoot5", + "color": "ffffffec", + "attachment": "wheel-mid-overlay", + "blend": "multiply" + }, + { + "name": "wheel-mid-overlay6", + "bone": "wheel-midRoot6", + "color": "ffffffec", + "attachment": "wheel-mid-overlay", + "blend": "multiply" + }, + { + "name": "wheel-big-overlay1", + "bone": "wheel-bigRoot1", + "color": "ffffffe9", + "attachment": "wheel-big-overlay", + "blend": "multiply" + }, + { + "name": "wheel-big-overlay2", + "bone": "wheel-bigRoot2", + "color": "ffffffe9", + "attachment": "wheel-big-overlay", + "blend": "multiply" + }, + { "name": "treads", "bone": "tankRoot", "attachment": "treads" }, + { "name": "tread", "bone": "tread", "color": "c0974fff", "attachment": "tread" }, + { "name": "tread27", "bone": "tread27", "color": "adc9b8ff", "attachment": "tread" }, + { "name": "tread14", "bone": "tread14", "attachment": "tread" }, + { "name": "tread2", "bone": "tread2", "attachment": "tread" }, + { "name": "tread28", "bone": "tread28", "attachment": "tread" }, + { "name": "tread15", "bone": "tread15", "color": "adc9b8ff", "attachment": "tread" }, + { "name": "tread3", "bone": "tread3", "color": "adc9b8ff", "attachment": "tread" }, + { "name": "tread29", "bone": "tread29", "color": "adc9b8ff", "attachment": "tread" }, + { "name": "tread16", "bone": "tread16", "attachment": "tread" }, + { "name": "tread4", "bone": "tread4", "attachment": "tread" }, + { "name": "tread30", "bone": "tread30", "attachment": "tread" }, + { "name": "tread17", "bone": "tread17", "color": "adc9b8ff", "attachment": "tread" }, + { "name": "tread5", "bone": "tread5", "color": "adc9b8ff", "attachment": "tread" }, + { "name": "tread31", "bone": "tread31", "color": "adc9b8ff", "attachment": "tread" }, + { "name": "tread18", "bone": "tread18", "attachment": "tread" }, + { "name": "tread6", "bone": "tread6", "attachment": "tread" }, + { "name": "tread32", "bone": "tread32", "attachment": "tread" }, + { "name": "tread19", "bone": "tread19", "color": "adc9b8ff", "attachment": "tread" }, + { "name": "tread7", "bone": "tread7", "color": "adc9b8ff", "attachment": "tread" }, + { "name": "tread33", "bone": "tread33", "color": "adc9b8ff", "attachment": "tread" }, + { "name": "tread20", "bone": "tread20", "attachment": "tread" }, + { "name": "tread8", "bone": "tread8", "attachment": "tread" }, + { "name": "tread34", "bone": "tread34", "attachment": "tread" }, + { "name": "tread35", "bone": "tread35", "color": "adc9b8ff", "attachment": "tread" }, + { "name": "tread36", "bone": "tread36", "color": "adc9b8ff", "attachment": "tread" }, + { "name": "tread21", "bone": "tread21", "color": "adc9b8ff", "attachment": "tread" }, + { "name": "tread9", "bone": "tread9", "color": "adc9b8ff", "attachment": "tread" }, + { "name": "tread22", "bone": "tread22", "attachment": "tread" }, + { "name": "tread10", "bone": "tread10", "attachment": "tread" }, + { "name": "tread23", "bone": "tread23", "color": "adc9b8ff", "attachment": "tread" }, + { "name": "tread11", "bone": "tread11", "color": "adc9b8ff", "attachment": "tread" }, + { "name": "tread24", "bone": "tread24", "attachment": "tread" }, + { "name": "tread12", "bone": "tread12", "attachment": "tread" }, + { "name": "tread25", "bone": "tread25", "color": "adc9b8ff", "attachment": "tread" }, + { "name": "tread13", "bone": "tread13", "color": "adc9b8ff", "attachment": "tread" }, + { "name": "tread26", "bone": "tread26", "attachment": "tread" }, + { "name": "rock", "bone": "rock", "attachment": "rock" }, + { "name": "machinegun", "bone": "machinegun", "attachment": "machinegun" }, + { "name": "machinegun-mount", "bone": "machinegun-mount", "attachment": "machinegun-mount" }, + { "name": "tankTop", "bone": "tankBody", "attachment": "tankTop" }, + { "name": "guntower", "bone": "guntower", "attachment": "guntower" }, + { "name": "cannon", "bone": "cannon", "attachment": "cannon" }, + { "name": "cannonConnector", "bone": "cannonConnector", "attachment": "cannonConnector" }, + { "name": "antenna", "bone": "antennaRoot", "attachment": "antenna" } +], +"ik": [ + { + "name": "cannonTarget", + "bones": [ "cannon" ], + "target": "cannonTarget" + }, + { + "name": "machineGunTarget", + "bones": [ "machinegun" ], + "target": "machineGunTarget", + "mix": 0 + } +], +"transform": [ + { + "name": "wheel-big", + "bones": [ "wheel-big2" ], + "target": "wheel-big1", + "rotation": 65.6, + "translateMix": 0, + "scaleMix": 0, + "shearMix": 0 + }, + { + "name": "wheel-mid1", + "bones": [ "wheel-mid2", "wheel-mid4" ], + "target": "wheel-mid1", + "rotation": 93, + "translateMix": 0, + "scaleMix": 0, + "shearMix": 0 + }, + { + "name": "wheel-mid2", + "bones": [ "wheel-mid3", "wheel-mid5" ], + "target": "wheel-mid1", + "rotation": -89, + "translateMix": 0, + "scaleMix": 0, + "shearMix": 0 + }, + { + "name": "wheel-mid3", + "bones": [ "wheel-mid6" ], + "target": "wheel-mid1", + "rotation": -152.6, + "translateMix": 0, + "scaleMix": 0, + "shearMix": 0 + }, + { + "name": "wheel-small1", + "bones": [ "wheel-small2" ], + "target": "wheel-small1", + "rotation": 87, + "translateMix": 0, + "scaleMix": 0, + "shearMix": 0 + }, + { + "name": "wheel-small2", + "bones": [ "wheel-small3" ], + "target": "wheel-small1", + "rotation": 54.9, + "translateMix": 0, + "scaleMix": 0, + "shearMix": 0 + } +], +"path": [ + { + "name": "treads", + "bones": [ + "tread", + "tread2", + "tread3", + "tread4", + "tread5", + "tread6", + "tread7", + "tread8", + "tread9", + "tread10", + "tread11", + "tread12", + "tread13", + "tread14", + "tread15", + "tread16", + "tread17", + "tread18", + "tread19", + "tread20", + "tread21", + "tread22", + "tread23", + "tread24", + "tread25", + "tread26", + "tread27", + "tread28", + "tread29", + "tread30", + "tread31", + "tread32", + "tread33", + "tread34", + "tread35", + "tread36" + ], + "target": "treads", + "rotateMode": "chain" + } +], +"skins": { + "default": { + "antenna": { + "antenna": { + "type": "mesh", + "uvs": [ 0.64286, 0.07875, 0.65354, 0.15349, 0.66324, 0.22137, 0.67367, 0.29433, 0.68383, 0.36543, 0.69359, 0.43374, 0.7031, 0.50029, 0.71311, 0.5703, 0.72327, 0.64138, 0.73406, 0.71688, 0.7444, 0.78929, 0.75614, 0.8714, 0.76905, 0.9431, 1, 0.9431, 1, 1, 0, 1, 0, 0.9431, 0.20105, 0.9431, 0.20105, 0.87093, 0.21461, 0.78846, 0.22651, 0.71606, 0.23885, 0.64098, 0.25035, 0.57104, 0.26206, 0.49983, 0.27306, 0.4329, 0.2843, 0.36453, 0.29592, 0.29381, 0.308, 0.22037, 0.319, 0.15345, 0.33141, 0.07795, 0.34423, 0, 0.6316, 0 ], + "triangles": [ 30, 31, 0, 29, 30, 0, 29, 0, 1, 28, 29, 1, 28, 1, 2, 27, 28, 2, 27, 2, 3, 26, 3, 4, 25, 26, 4, 25, 4, 5, 26, 27, 3, 24, 5, 6, 23, 24, 6, 7, 23, 6, 24, 25, 5, 22, 7, 8, 21, 22, 8, 21, 8, 9, 7, 22, 23, 20, 9, 10, 19, 20, 10, 20, 21, 9, 19, 10, 11, 18, 19, 11, 17, 18, 11, 17, 11, 12, 15, 16, 17, 12, 13, 14, 15, 17, 12, 14, 15, 12 ], + "vertices": [ 2, 10, 65.37999, -3.14, 0.3125, 11, 23.38, -3.14, 0.6875, 3, 9, 84.73, -3.37, 0.0625, 10, 42.73, -3.37, 0.625, 11, 0.73, -3.37, 0.3125, 3, 9, 64.16, -3.59, 0.3125, 10, 22.16, -3.59, 0.625, 11, -19.83, -3.59, 0.0625, 3, 8, 84.06, -3.82, 0.0625, 9, 42.06, -3.82, 0.625, 10, 0.06, -3.82, 0.3125, 3, 8, 62.51, -4.04, 0.3125, 9, 20.51, -4.04, 0.625, 10, -21.48, -4.04, 0.0625, 3, 7, 83.81, -4.25, 0.0625, 8, 41.81, -4.25, 0.625, 9, -0.18, -4.25, 0.3125, 3, 7, 63.65, -4.46, 0.3125, 8, 21.65, -4.46, 0.625, 9, -20.34, -4.46, 0.0625, 3, 6, 84.43, -4.67999, 0.0625, 7, 42.43, -4.67999, 0.625, 8, 0.43, -4.67999, 0.3125, 3, 6, 62.9, -4.91, 0.3125, 7, 20.9, -4.91, 0.625, 8, -21.09, -4.91, 0.0625, 3, 5, 5.14, 80.01999, 0.0625, 6, 40.02, -5.14, 0.625, 7, -1.97, -5.14, 0.3125, 3, 5, 5.37, 58.08, 0.375, 6, 18.08, -5.37, 0.5625, 7, -23.91, -5.37, 0.0625, 1, 5, 5.63, 33.2, 1, 1, 5, 5.91, 11.48, 1, 1, 5, 11, 11.48, 1, 1, 5, 10.99, -5.75, 1, 1, 5, -11, -5.75, 1, 1, 5, -10.99, 11.48, 1, 1, 5, -6.57, 11.48, 1, 1, 5, -6.57, 33.34, 1, 3, 5, -6.27, 58.33, 0.375, 6, 18.33, 6.27, 0.5625, 7, -23.66, 6.27, 0.0625, 3, 5, -6.01, 80.26999, 0.0625, 6, 40.27, 6.01, 0.625, 7, -1.72, 6.01, 0.3125, 3, 6, 63.02, 5.74, 0.3125, 7, 21.02, 5.74, 0.625, 8, -20.96999, 5.74, 0.0625, 3, 6, 84.21, 5.49, 0.0625, 7, 42.21, 5.49, 0.625, 8, 0.21, 5.49, 0.3125, 3, 7, 63.79, 5.23, 0.3125, 8, 21.79, 5.23, 0.625, 9, -20.2, 5.23, 0.0625, 3, 7, 84.07, 4.98999, 0.0625, 8, 42.07, 4.98999, 0.625, 9, 0.07, 4.98999, 0.3125, 3, 8, 62.78, 4.73999, 0.3125, 9, 20.78, 4.73999, 0.625, 10, -21.21, 4.73999, 0.0625, 3, 8, 84.21, 4.48, 0.0625, 9, 42.21, 4.48, 0.625, 10, 0.21, 4.48, 0.3125, 3, 9, 64.46, 4.21999, 0.3125, 10, 22.46, 4.21999, 0.625, 11, -19.53, 4.21999, 0.0625, 3, 9, 84.74, 3.98, 0.0625, 10, 42.74, 3.98, 0.625, 11, 0.74, 3.98, 0.3125, 2, 10, 65.62, 3.7, 0.3125, 11, 23.62, 3.7, 0.6875, 1, 11, 47.24, 3.42, 1, 1, 11, 47.24, -2.89, 1 ], + "hull": 32, + "edges": [ 28, 30, 28, 26, 30, 32, 26, 24, 24, 22, 32, 34, 34, 24, 34, 36, 36, 22, 60, 62, 38, 36, 20, 22, 38, 20, 40, 38, 18, 20, 40, 18, 42, 40, 16, 18, 42, 16, 44, 42, 14, 16, 44, 14, 46, 44, 12, 14, 46, 12, 48, 46, 10, 12, 48, 10, 50, 48, 8, 10, 50, 8, 52, 50, 6, 8, 52, 6, 54, 52, 4, 6, 54, 4, 56, 54, 2, 4, 56, 2, 60, 58, 58, 56, 62, 0, 0, 2, 58, 0 ], + "width": 22, + "height": 303 + } + }, + "bottom": { + "tankBottom": { "x": -16.66, "y": 9.89, "width": 1285, "height": 276 } + }, + "cannon": { + "cannon": { "x": 481.95, "y": -0.02, "rotation": 179.99, "width": 931, "height": 58 } + }, + "cannonConnector": { + "cannonConnector": { + "type": "mesh", + "uvs": [ 1, 0.03236, 1, 0.10602, 0.90987, 0.32859, 0.81975, 0.55116, 0.72962, 0.77372, 0.6395, 0.99629, 0.42157, 0.99629, 0.20364, 0.99629, 0, 0.85433, 0, 0.69901, 0.02267, 0.52884, 0, 0.31444, 0.21601, 0.12998, 0.43367, 0, 0.63546, 0.0037, 0.48407, 0.77059, 0.31496, 0.52496, 0.64132, 0.19648, 0.21516, 0.76765, 0.58345, 0.5647, 0.68444, 0.40146, 0.46758, 0.36649, 0.28934, 0.34603 ], + "triangles": [ 21, 22, 12, 11, 12, 22, 17, 21, 13, 17, 13, 14, 21, 12, 13, 21, 17, 20, 16, 22, 21, 10, 11, 22, 10, 22, 16, 19, 21, 20, 16, 21, 19, 18, 10, 16, 9, 10, 18, 15, 16, 19, 18, 16, 15, 8, 9, 18, 7, 8, 18, 6, 18, 15, 7, 18, 6, 14, 0, 1, 17, 14, 1, 2, 17, 1, 20, 17, 2, 3, 20, 2, 19, 20, 3, 4, 19, 3, 15, 19, 4, 5, 15, 4, 6, 15, 5 ], + "vertices": [ 1, 12, 35.91, 69.08, 1, 1, 12, 35.91, 59.13, 1, 1, 12, 25.81, 29.09, 1, 1, 12, 15.72, -0.95, 1, 1, 12, 5.63, -31, 1, 1, 12, -4.46, -61.04, 1, 2, 12, -28.87, -61.04, 0.33333, 14, 28.87, 61.03, 0.66666, 1, 14, 53.27, 61.01, 1, 1, 14, 76.08, 41.83, 1, 1, 14, 71.17, 21.62, 1, 1, 14, 72.83, -1.62, 1, 1, 14, 70.37, -29.12, 1, 1, 14, 50.66, -56.13, 1, 2, 12, -28.43, 74.37, 0.41, 14, 28.43, -74.39, 0.58999, 2, 12, -4.91, 72.94999, 0.52, 14, 4.91, -72.94999, 0.48, 2, 12, -21.87, -30.57, 0.49, 14, 21.87, 30.56, 0.51, 1, 14, 40.81, -2.59999, 1, 2, 12, -4.25, 46.92, 0.49, 14, 4.25, -46.92, 0.51, 1, 14, 51.98, 30.15, 1, 2, 12, -10.74, -2.78, 0.49, 14, 10.74, 2.77, 0.51, 2, 12, 0.56, 19.25, 0.49, 14, -0.56, -19.25, 0.51, 1, 14, 23.71, -23.98, 1, 1, 14, 43.68, -26.76, 1 ], + "hull": 15, + "edges": [ 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 18, 20, 20, 22, 22, 24, 24, 26, 26, 28, 28, 0 ], + "width": 112, + "height": 135 + } + }, + "guntower": { + "guntower": { "x": 77.22, "y": 122.58, "width": 730, "height": 289 } + }, + "machinegun": { + "machinegun": { "x": 44.85, "y": -5.72, "rotation": -180, "width": 331, "height": 57 } + }, + "machinegun-mount": { + "machinegun-mount": { "x": 47.42, "y": -1.53, "rotation": -90, "width": 72, "height": 96 } + }, + "rock": { + "rock": { "color": "404040ff", "x": 25.23, "y": 27.35, "width": 252, "height": 55 } + }, + "tankBody-shadow": { + "tankBottom-shadow": { "x": -11.43, "y": -42.88, "width": 1291, "height": 341 } + }, + "tankTop": { + "tankTop": { "x": 6.8, "y": 168.71, "width": 1407, "height": 222 } + }, + "tread": { + "tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread-inside1": { + "tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside10": { + "tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside11": { + "tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside12": { + "tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside13": { + "tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside14": { + "tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside15": { + "tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside16": { + "tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside17": { + "tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside18": { + "tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside19": { + "tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside2": { + "tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside20": { + "tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside21": { + "tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside22": { + "tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside23": { + "tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside24": { + "tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside25": { + "tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside26": { + "tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside27": { + "tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside28": { + "tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside29": { + "tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside3": { + "tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside30": { + "tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside31": { + "tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside32": { + "tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside33": { + "tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside34": { + "tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside35": { + "tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside36": { + "tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside37": { + "tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside38": { + "tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside39": { + "tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside4": { + "tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside40": { + "tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside41": { + "tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside42": { + "tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside43": { + "tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside44": { + "tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside45": { + "tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside46": { + "tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside47": { + "tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside48": { + "tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside49": { + "tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside5": { + "tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside50": { + "tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside51": { + "tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside52": { + "tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside53": { + "tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside54": { + "tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside55": { + "tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside56": { + "tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside57": { + "tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside58": { + "tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside59": { + "tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside6": { + "tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside60": { + "tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside61": { + "tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside62": { + "tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside63": { + "tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside64": { + "tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside65": { + "tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside66": { + "tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside67": { + "tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside68": { + "tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside69": { + "tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside7": { + "tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside70": { + "tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside71": { + "tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside72": { + "tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside8": { + "tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside9": { + "tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread10": { + "tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread11": { + "tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread12": { + "tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread13": { + "tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread14": { + "tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread15": { + "tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread16": { + "tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread17": { + "tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread18": { + "tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread19": { + "tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread2": { + "tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread20": { + "tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread21": { + "tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread22": { + "tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread23": { + "tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread24": { + "tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread25": { + "tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread26": { + "tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread27": { + "tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread28": { + "tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread29": { + "tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread3": { + "tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread30": { + "tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread31": { + "tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread32": { + "tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread33": { + "tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread34": { + "tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread35": { + "tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread36": { + "tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread4": { + "tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread5": { + "tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread6": { + "tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread7": { + "tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread8": { + "tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread9": { + "tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "treads": { + "treads": { + "type": "path", + "closed": true, + "lengths": [ 182.41, 349, 472.77, 602.99, 780.46, 1052.96, 1133.44, 1218.43, 1298.34, 1382.7, 1465.57, 1546.11, 1628.02, 1707.73, 1794.36, 1876.75, 2158.69, 2321.34, 2438.56, 2579.42, 2745.35, 2919.23 ], + "vertexCount": 66, + "vertices": [ 1, 83, 11.23, 41.86, 1, 1, 83, 0.78, 41.93999, 1, 1, 83, -34.72, 42.23, 1, 1, 63, -104.21, 0.41, 1, 1, 63, 0.07, 0.55, 1, 1, 63, 68.8, 0.64, 1, 1, 81, 20.5, 43.47, 1, 1, 81, 1.13, 40.81, 1, 1, 81, -27.38, 36.84, 1, 1, 65, 147.06, 105, 1, 1, 65, 96.21, 96.63, 1, 1, 65, 43.87, 87.71, 1, 1, 65, 16.18, 103.34, 1, 1, 65, -33.66999, 94.2, 1, 1, 65, -99.35, 81.25, 1, 1, 65, -122.04, -1.69, 1, 1, 65, -83.58, -47.92, 1, 1, 65, -33.53, -109.36, 1, 1, 69, -83.56, -66.08999, 1, 1, 69, -2.16, -67.89, 1, 2, 69, 56.68, -41.48, 0.67999, 58, -24.31, -41.49, 0.32, 1, 58, -26.58, 16.69, 1, 1, 58, -2.69, 16.69, 1, 1, 58, 13.51, 16.69, 1, 2, 71, -52.41, -46.51, 0.74399, 58, 30.2, -46.51, 0.256, 1, 71, -0.32, -68.92, 1, 2, 71, 52.09, -44.72, 0.712, 59, -28.9, -44.73, 0.28799, 1, 59, -22.8, 16.24, 1, 1, 59, -1.42, 16.24, 1, 1, 59, 20.46999, 16.24, 1, 2, 73, -47.21, -47.45, 0.744, 59, 36.00999, -47.46, 0.25599, 1, 73, -0.28, -69.65, 1, 2, 73, 45.23, -47.26, 0.736, 60, -37.48, -47.26, 0.26399, 1, 60, -23.76, 15.27, 1, 1, 60, -0.13, 15.27, 1, 1, 60, 24.45, 15.27, 1, 2, 75, -47.36, -48.7, 0.74399, 60, 33.52, -48.7, 0.256, 1, 75, -0.49, -70.39, 1, 2, 75, 49.09, -48.33, 0.744, 61, -33.57, -48.34, 0.25599, 1, 61, -20.89, 15.83, 1, 1, 61, -1.25, 15.83, 1, 1, 61, 15.78, 15.83, 1, 2, 77, -52.49, -48.21, 0.75999, 61, 28.45, -48.21, 0.24, 1, 77, -2.5, -68.92, 1, 2, 77, 55.72, -47.82, 0.752, 62, -28.88, -47.82, 0.248, 1, 62, -21.64, 16.69, 1, 1, 62, -0.48, 16.69, 1, 1, 62, 20.73, 16.69, 1, 2, 79, -53.65, -48.89, 0.76, 62, 25.96, -48.89, 0.23999, 1, 79, 2.27, -69.65, 1, 1, 79, 44.94, -69.74, 1, 1, 65, 1172.98, -85.6, 1, 1, 65, 1190.53, -42.24, 1, 1, 65, 1215.63, 19.75, 1, 1, 65, 1175.55, 76.62, 1, 1, 65, 1134.22, 95.07, 1, 1, 65, 1128.4, 97.66, 1, 1, 65, 1081.79, 87.47, 1, 1, 65, 1017.16, 92.52, 1, 1, 65, 977.9, 95.58, 1, 1, 85, 47.07, 42.29, 1, 1, 85, 0.24, 42.74, 1, 1, 85, -29.63, 43.28, 1, 1, 64, -86.64, 1.35, 1, 1, 64, 0.49, 0.25, 1, 1, 64, 92.42, -0.89, 1 ], + "color": "ff8819ff" + } + }, + "wheel-big": { + "wheel-big": { "width": 191, "height": 191 } + }, + "wheel-big-overlay1": { + "wheel-big-overlay": { "width": 186, "height": 186 } + }, + "wheel-big-overlay2": { + "wheel-big-overlay": { "width": 186, "height": 186 } + }, + "wheel-big2": { + "wheel-big": { "width": 191, "height": 191 } + }, + "wheel-mid": { + "wheel-mid": { "width": 136, "height": 136 } + }, + "wheel-mid-overlay": { + "wheel-mid-overlay": { "width": 136, "height": 136 } + }, + "wheel-mid-overlay2": { + "wheel-mid-overlay": { "width": 136, "height": 136 } + }, + "wheel-mid-overlay3": { + "wheel-mid-overlay": { "width": 136, "height": 136 } + }, + "wheel-mid-overlay4": { + "wheel-mid-overlay": { "width": 136, "height": 136 } + }, + "wheel-mid-overlay5": { + "wheel-mid-overlay": { "width": 136, "height": 136 } + }, + "wheel-mid-overlay6": { + "wheel-mid-overlay": { "width": 136, "height": 136 } + }, + "wheel-mid2": { + "wheel-mid": { "width": 136, "height": 136 } + }, + "wheel-mid3": { + "wheel-mid": { "width": 136, "height": 136 } + }, + "wheel-mid4": { + "wheel-mid": { "width": 136, "height": 136 } + }, + "wheel-mid5": { + "wheel-mid": { "width": 136, "height": 136 } + }, + "wheel-mid6": { + "wheel-mid": { "width": 136, "height": 136 } + }, + "wheel-small": { + "wheel-small": { "width": 71, "height": 71 } + }, + "wheel-small2": { + "wheel-small": { "width": 71, "height": 71 } + }, + "wheel-small3": { + "wheel-small": { "width": 71, "height": 71 } + } + } +}, +"animations": { + "drive": { + "bones": { + "tankRoot": { + "translate": [ + { + "time": 0, + "x": 0, + "y": 0, + "curve": [ 0.549, 0, 0.907, 0.84 ] + }, + { + "time": 3.0333, + "x": -1426.14, + "y": 0, + "curve": [ 0.211, 0.23, 0.851, 0.92 ] + }, + { + "time": 4.8666, + "x": -2806.98, + "y": 0, + "curve": [ 0.253, 0.27, 0.625, 0.94 ] + }, + { "time": 5.3333, "x": -2903.34, "y": 0 } + ] + }, + "wheel-midRoot1": { + "translate": [ + { "time": 0.7666, "x": 0, "y": 0 }, + { + "time": 1.1666, + "x": 0, + "y": 50.95, + "curve": [ 0.633, 0, 0.907, 0.82 ] + }, + { "time": 1.5666, "x": 0, "y": 0 } + ] + }, + "treadCollider1": { + "rotate": [ + { "time": 1.1, "angle": 0 }, + { "time": 1.2333, "angle": -19.78 }, + { "time": 1.4666, "angle": 0 }, + { "time": 1.6, "angle": 28.87 }, + { "time": 1.8, "angle": 0 } + ], + "translate": [ + { "time": 1.1, "x": 0, "y": 0 }, + { + "time": 1.4666, + "x": 0, + "y": 58.66, + "curve": [ 0.352, 0, 0.828, 0.92 ] + }, + { "time": 1.8, "x": 0, "y": 0 } + ] + }, + "wheel-midRoot2": { + "translate": [ + { "time": 1.2666, "x": 0, "y": 0 }, + { + "time": 1.6333, + "x": 0, + "y": 55.07, + "curve": [ 0.889, 0.01, 0.843, 0.81 ] + }, + { "time": 1.9333, "x": 0, "y": 0 } + ] + }, + "treadCollider2": { + "rotate": [ + { "time": 1.5333, "angle": 0 }, + { "time": 1.6333, "angle": -18.67 }, + { "time": 1.8, "angle": 0 }, + { "time": 1.9, "angle": 29.49 }, + { "time": 2.0666, "angle": 0 } + ], + "translate": [ + { + "time": 1.5333, + "x": 0, + "y": 0, + "curve": [ 0.16, 0.25, 0.813, 0.82 ] + }, + { + "time": 1.8, + "x": 0, + "y": 59.03, + "curve": [ 0.376, 0.26, 0.879, 0.79 ] + }, + { "time": 2.0666, "x": 0, "y": 0 } + ] + }, + "wheel-midRoot3": { + "translate": [ + { "time": 1.6666, "x": 0, "y": 0 }, + { + "time": 1.9333, + "x": 0, + "y": 60.17, + "curve": [ 0.544, 0, 0.838, 0.77 ] + }, + { "time": 2.2, "x": 0, "y": 0 } + ] + }, + "treadCollider3": { + "rotate": [ + { "time": 1.8666, "angle": 0 }, + { "time": 1.9333, "angle": -20.16 }, + { "time": 2.0666, "angle": 0.57 }, + { "time": 2.1666, "angle": 33.66 }, + { "time": 2.3333, "angle": 0 } + ], + "translate": [ + { "time": 1.8666, "x": 0, "y": 0 }, + { + "time": 2.0666, + "x": 0, + "y": 61.53, + "curve": [ 0.582, 0, 0.836, 0.77 ] + }, + { "time": 2.3333, "x": 0, "y": 0 } + ] + }, + "wheel-midRoot4": { + "translate": [ + { "time": 1.9333, "x": 0, "y": 0 }, + { + "time": 2.2, + "x": 0, + "y": 58.89, + "curve": [ 0.48, 0, 0.75, 1 ] + }, + { "time": 2.4666, "x": 0, "y": 0 } + ] + }, + "treadCollider4": { + "rotate": [ + { "time": 2.1333, "angle": 0 }, + { "time": 2.2, "angle": -20.43 }, + { "time": 2.3333, "angle": 4.49 }, + { "time": 2.4333, "angle": 35.87 }, + { "time": 2.5666, "angle": 0 } + ], + "translate": [ + { + "time": 2.1333, + "x": 0, + "y": 0, + "curve": [ 0.191, 0.49, 0.75, 1 ] + }, + { "time": 2.3333, "x": 0, "y": 66.64 }, + { "time": 2.5666, "x": 0, "y": 0 } + ] + }, + "wheel-midRoot5": { + "translate": [ + { "time": 2.2, "x": 0, "y": 0 }, + { "time": 2.4333, "x": 0, "y": 60.26 }, + { "time": 2.7, "x": 0, "y": 0 } + ] + }, + "treadCollider5": { + "rotate": [ + { "time": 2.3333, "angle": 0 }, + { "time": 2.4333, "angle": -23.6 }, + { "time": 2.5666, "angle": 6.49 }, + { "time": 2.6666, "angle": 29.93 }, + { "time": 2.8, "angle": -0.13 } + ], + "translate": [ + { "time": 2.3333, "x": 0, "y": 0 }, + { "time": 2.4333, "x": 0, "y": 36.34 }, + { "time": 2.5, "x": 0, "y": 56.39 }, + { "time": 2.5666, "x": 0, "y": 61.34 }, + { "time": 2.8, "x": 0, "y": 2.04 } + ] + }, + "wheel-midRoot6": { + "translate": [ + { + "time": 2.4333, + "x": 0, + "y": 0, + "curve": [ 0.19, 0.26, 0.804, 0.8 ] + }, + { + "time": 2.6333, + "x": 0, + "y": 51.86, + "curve": [ 0.346, 0, 0.852, 0.7 ] + }, + { "time": 2.8, "x": 0, "y": 0 } + ] + }, + "wheel-mid1": { + "rotate": [ + { + "time": 0, + "angle": 21, + "curve": [ 0.504, 0.11, 0.931, 0.71 ] + }, + { "time": 0.8, "angle": 120 }, + { "time": 1.2333, "angle": 240 }, + { "time": 1.6, "angle": 0 }, + { "time": 1.9, "angle": 120 }, + { "time": 2.1666, "angle": 240 }, + { "time": 2.4, "angle": 0 }, + { "time": 2.5666, "angle": 120 }, + { "time": 2.7333, "angle": 240 }, + { "time": 2.9333, "angle": 0 }, + { "time": 3.1, "angle": 120 }, + { "time": 3.2666, "angle": 240 }, + { "time": 3.4333, "angle": 0 }, + { "time": 3.6333, "angle": 120 }, + { "time": 3.8, "angle": 240 }, + { "time": 3.9666, "angle": 0 }, + { "time": 4.1666, "angle": 120 }, + { "time": 4.3333, "angle": 240 }, + { "time": 4.5, "angle": 0 }, + { "time": 4.7, "angle": 120 }, + { "time": 4.8666, "angle": 240 }, + { "time": 5.2666, "angle": -67.99 } + ] + }, + "tankTreads": { + "rotate": [ + { + "time": 0, + "angle": 0, + "curve": [ 0.145, 0.34, 0.75, 1 ] + }, + { "time": 1.1, "angle": -3.9 }, + { "time": 1.3333, "angle": -2.37 }, + { "time": 1.6333, "angle": -3.54 }, + { "time": 2.1666, "angle": 0.27 }, + { + "time": 2.4666, + "angle": 2.55, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 2.7, + "angle": 3.88, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 3, "angle": -3.62 }, + { "time": 3.2333, "angle": -1.23, "curve": "stepped" }, + { + "time": 4.8666, + "angle": -1.23, + "curve": [ 0.188, 0.16, 0.75, 1 ] + }, + { + "time": 5.2, + "angle": 4.47, + "curve": [ 0.416, 0.01, 0.75, 1 ] + }, + { + "time": 5.5666, + "angle": -3.08, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 5.8333, "angle": -1.23 } + ] + }, + "wheel-big1": { + "rotate": [ + { + "time": 0, + "angle": 0, + "curve": [ 0.504, 0.11, 0.931, 0.71 ] + }, + { "time": 1.1, "angle": 120 }, + { "time": 1.5333, "angle": 240 }, + { "time": 1.8, "angle": 360 }, + { "time": 2.0333, "angle": 120 }, + { "time": 2.2666, "angle": 240 }, + { "time": 2.4666, "angle": 360 }, + { "time": 2.7, "angle": 120 }, + { "time": 2.9333, "angle": 240 }, + { "time": 3.1333, "angle": 360 }, + { "time": 3.3666, "angle": 120 }, + { "time": 3.5666, "angle": 240 }, + { "time": 3.8, "angle": -24 }, + { "time": 4.0333, "angle": 120 }, + { "time": 4.2333, "angle": 240 }, + { "time": 4.4666, "angle": -24 }, + { "time": 4.7, "angle": 120 }, + { "time": 4.8666, "angle": -143.99 }, + { + "time": 5.0666, + "angle": -131.4, + "curve": [ 0.14, 0.25, 0.75, 1 ] + }, + { "time": 5.6666, "angle": -76.85 }, + { "time": 5.8333, "angle": -72.3 } + ] + }, + "treadGravity1": { + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.4666, "x": 0, "y": 0 }, + { "time": 1.8, "x": 0, "y": 29.44 }, + { "time": 2.3333, "x": 0, "y": -0.52 }, + { "time": 2.5666, "x": 0, "y": 5.2 }, + { "time": 2.6666, "x": 0, "y": -11.05, "curve": "stepped" }, + { "time": 4.8666, "x": 0, "y": -11.05 }, + { "time": 5.0666, "x": 0, "y": -1.91 }, + { "time": 5.5333, "x": 0, "y": -6.9 }, + { "time": 5.7333, "x": 0, "y": -11.05 } + ] + }, + "treadGravity2": { + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.4666, "x": 0, "y": 0 }, + { "time": 1.8, "x": 0, "y": 8.5 }, + { "time": 2.3333, "x": 0, "y": 34.74 }, + { "time": 2.5666, "x": 0, "y": 5.2 }, + { "time": 2.6666, "x": 0, "y": -11.05, "curve": "stepped" }, + { "time": 4.8666, "x": 0, "y": -11.05 }, + { "time": 5.0666, "x": 0, "y": 3.9 }, + { "time": 5.5333, "x": 0, "y": -6.9 }, + { "time": 5.7333, "x": 0, "y": -11.05 } + ] + }, + "wheel-small1": { + "rotate": [ + { + "time": 0, + "angle": 0, + "curve": [ 0.504, 0.11, 0.931, 0.71 ] + }, + { "time": 0.7, "angle": 120 }, + { "time": 1.1, "angle": 240 }, + { "time": 1.4666, "angle": 360 }, + { "time": 1.7666, "angle": 120 }, + { "time": 2.0333, "angle": 240 }, + { "time": 2.2666, "angle": 360 }, + { "time": 2.4333, "angle": 120 }, + { "time": 2.5666, "angle": 240 }, + { "time": 2.7, "angle": 360 }, + { "time": 2.8333, "angle": 120 }, + { "time": 2.9666, "angle": 240 }, + { "time": 3.1, "angle": 360 }, + { "time": 3.2333, "angle": 120 }, + { "time": 3.3666, "angle": 240 }, + { "time": 3.5, "angle": 360 }, + { "time": 3.6333, "angle": 120 }, + { "time": 3.7666, "angle": 240 }, + { "time": 3.9, "angle": 360 }, + { "time": 4.0333, "angle": 120 }, + { "time": 4.1666, "angle": 240 }, + { "time": 4.3, "angle": 360 }, + { "time": 4.4333, "angle": 120 }, + { "time": 4.5666, "angle": 240 }, + { "time": 4.7, "angle": 360 }, + { "time": 4.8333, "angle": 120 }, + { "time": 5, "angle": 240 }, + { + "time": 5.2, + "angle": -25.64, + "curve": [ 0.181, 0.26, 0.75, 1 ] + }, + { "time": 5.5666, "angle": 90 } + ] + }, + "tankBody": { + "rotate": [ + { + "time": 0, + "angle": 0, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 1.1666, + "angle": -1.41, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 1.9333, + "angle": -0.18, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 2.3, + "angle": 0.84, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 3.0333, + "angle": -2.33, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 3.4666, + "angle": -0.45, + "curve": [ 0.329, 0.32, 0.757, 1 ] + }, + { + "time": 4.8666, + "angle": 0, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 5.3333, + "angle": 1.82, + "curve": [ 0.324, 0.01, 0.75, 1 ] + }, + { + "time": 5.6666, + "angle": -1.15, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 6.0333, "angle": 0 } + ] + }, + "antenna1": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { + "time": 0.4333, + "angle": 0, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 0.7333, + "angle": -1.55, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 1.0666, + "angle": -0.68, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 1.4, + "angle": 0.61, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 1.6666, "angle": -0.67, "curve": "stepped" }, + { + "time": 2.1333, + "angle": -0.67, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 2.3666, + "angle": 0.88, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 2.5666, + "angle": -1.69, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 2.8666, + "angle": 1.18, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 3.0333, + "angle": -1.09, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 3.2333, + "angle": 1.03, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 3.5, + "angle": -0.44, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 4.6666, "angle": -0.18 }, + { + "time": 5.0333, + "angle": -1.05, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 5.3666, + "angle": 9.17, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 5.6666, + "angle": -3.14, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 5.9, + "angle": 2.96, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 6.1, + "angle": -0.29, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 6.2666, "angle": 0.96 }, + { "time": 6.4, "angle": 0 } + ] + }, + "antenna2": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { + "time": 0.4333, + "angle": 0, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 0.7333, + "angle": -1.55, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 1.0666, + "angle": -0.68, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 1.4, + "angle": 0.61, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 1.6666, "angle": -0.67, "curve": "stepped" }, + { + "time": 2.1333, + "angle": -0.67, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 2.3666, + "angle": 0.88, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 2.5666, + "angle": -1.69, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 2.8666, + "angle": 1.18, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 3.0333, + "angle": -1.09, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 3.2333, + "angle": 1.03, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 3.5, + "angle": -0.44, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 4.6666, "angle": -0.18 }, + { + "time": 5.0333, + "angle": -1.05, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 5.3666, + "angle": 9.17, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 5.6666, + "angle": -3.14, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 5.9, + "angle": 2.96, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 6.1, + "angle": -0.29, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 6.2666, "angle": 0.96 }, + { "time": 6.4, "angle": 0 } + ] + }, + "antenna3": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { + "time": 0.4333, + "angle": 0, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 0.7333, + "angle": -1.55, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 1.0666, + "angle": -0.68, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 1.4, + "angle": 0.61, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 1.6666, "angle": -0.67, "curve": "stepped" }, + { + "time": 2.1333, + "angle": -0.67, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 2.3666, + "angle": 0.88, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 2.5666, + "angle": -1.69, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 2.8666, + "angle": 1.18, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 3.0333, + "angle": -1.09, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 3.2333, + "angle": 1.03, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 3.5, + "angle": -0.44, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 4.6666, "angle": -0.18 }, + { + "time": 5.0333, + "angle": -1.05, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 5.3666, + "angle": 9.17, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 5.6666, + "angle": -3.14, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 5.9, + "angle": 2.96, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 6.1, + "angle": -0.29, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 6.2666, "angle": 0.96 }, + { "time": 6.4, "angle": 0 } + ] + }, + "antenna4": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { + "time": 0.4333, + "angle": 0, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 0.7333, + "angle": -1.55, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 1.0666, + "angle": -0.68, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 1.4, + "angle": 0.61, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 1.6666, "angle": -0.67, "curve": "stepped" }, + { + "time": 2.1333, + "angle": -0.67, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 2.3666, + "angle": 0.88, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 2.5666, + "angle": -1.69, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 2.8666, + "angle": 1.18, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 3.0333, + "angle": -1.09, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 3.2333, + "angle": 1.03, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 3.5, + "angle": -0.44, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 4.6666, "angle": -0.18 }, + { + "time": 5.0333, + "angle": -1.05, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 5.3666, + "angle": 9.17, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 5.6666, + "angle": -3.14, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 5.9, + "angle": 2.96, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 6.1, + "angle": -0.29, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 6.2666, "angle": 0.96 }, + { "time": 6.4, "angle": 0 } + ] + }, + "antenna5": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { + "time": 0.4333, + "angle": 0, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 0.7333, + "angle": -1.55, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 1.0666, + "angle": -0.68, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 1.4, + "angle": 0.61, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 1.6666, "angle": -0.67, "curve": "stepped" }, + { + "time": 2.1333, + "angle": -0.67, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 2.3666, + "angle": 0.88, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 2.5666, + "angle": -1.69, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 2.8666, + "angle": 1.18, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 3.0333, + "angle": -1.09, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 3.2333, + "angle": 1.03, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 3.5, + "angle": -0.44, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 4.6666, "angle": -0.18 }, + { + "time": 5.0333, + "angle": -1.05, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 5.3666, + "angle": 9.17, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 5.6666, + "angle": -3.14, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 5.9, + "angle": 2.96, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 6.1, + "angle": -0.29, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 6.2666, "angle": 0.96 }, + { "time": 6.4, "angle": 0 } + ] + }, + "antenna6": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { + "time": 0.4333, + "angle": 0, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 0.7333, + "angle": -1.55, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 1.0666, + "angle": -0.68, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 1.4, + "angle": 0.61, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 1.6666, "angle": -0.67, "curve": "stepped" }, + { + "time": 2.1333, + "angle": -0.67, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 2.3666, + "angle": 0.88, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 2.5666, + "angle": -1.69, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 2.8666, + "angle": 1.18, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 3.0333, + "angle": -1.09, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 3.2333, + "angle": 1.03, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 3.5, + "angle": -0.44, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 4.6666, "angle": -0.18 }, + { + "time": 5.0333, + "angle": -1.05, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 5.3666, + "angle": 9.17, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 5.6666, + "angle": -3.14, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 5.9, + "angle": 2.96, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 6.1, + "angle": -0.29, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 6.2666, "angle": 0.96 }, + { "time": 6.4, "angle": 0 } + ] + }, + "machinegun": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { + "time": 2.8333, + "angle": 0, + "curve": [ 0.183, 0.17, 0.75, 1 ] + }, + { + "time": 3, + "angle": -4.43, + "curve": [ 0.156, 0.16, 0.75, 1 ] + }, + { + "time": 3.1666, + "angle": -2.93, + "curve": [ 0.156, 0.16, 0.75, 1 ] + }, + { + "time": 4.8333, + "angle": 0, + "curve": [ 0.183, 0.17, 0.75, 1 ] + }, + { + "time": 5.1666, + "angle": -6.05, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 5.4, + "angle": 6.15, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 5.6, "angle": -1.26 } + ] + }, + "cannon": { + "rotate": [ + { "time": 0, "angle": 0 } + ] + }, + "cannonTarget": { + "translate": [ + { + "time": 5, + "x": 0, + "y": 0, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 6.3333, "x": -15.38, "y": 99.99 } + ] + } + }, + "ik": { + "cannonTarget": [ + { "time": 0, "mix": 0.809, "curve": "stepped" }, + { "time": 4.7333, "mix": 0.809 }, + { "time": 5.1666, "mix": 0.504 }, + { "time": 5.6666 } + ] + }, + "paths": { + "treads": { + "position": [ + { + "time": 0, + "curve": [ 0.549, 0, 0.907, 0.84 ] + }, + { "time": 3.0333, "position": 0.51 }, + { "time": 4.8666, "position": 0.9794 }, + { + "time": 5.2666, + "position": 1, + "curve": [ 0.226, 0.15, 0.765, 0.96 ] + }, + { + "time": 5.5333, + "position": 1.02, + "curve": [ 0.279, 0.32, 0.694, 0.99 ] + }, + { "time": 5.8333, "position": 1.021 } + ] + } + } + } +} +} \ No newline at end of file diff --git a/spine-corona/data/tank.png b/spine-corona/data/tank.png new file mode 100644 index 000000000..71e402d65 Binary files /dev/null and b/spine-corona/data/tank.png differ diff --git a/spine-corona/data/test.atlas b/spine-corona/data/test.atlas new file mode 100644 index 000000000..d4f7cb79c --- /dev/null +++ b/spine-corona/data/test.atlas @@ -0,0 +1,20 @@ + +test.png +size: 256,64 +format: RGBA8888 +filter: Linear,Linear +repeat: none +logo + rotate: false + xy: 193, 2 + size: 60, 60 + orig: 60, 60 + offset: 0, 0 + index: -1 +spine + rotate: false + xy: 2, 2 + size: 189, 60 + orig: 189, 60 + offset: 0, 0 + index: -1 diff --git a/spine-corona/data/test.json b/spine-corona/data/test.json new file mode 100644 index 000000000..773d0b805 --- /dev/null +++ b/spine-corona/data/test.json @@ -0,0 +1,278 @@ +{ +"skeleton": { "hash": "xbu5IFg+2tCx4+2MavNPurEogzA", "spine": "3.4.02", "width": 1333.78, "height": 1112.91, "images": "./images/" }, +"bones": [ + { "name": "root", "x": 28.68, "y": -105.71 }, + { "name": "attachment", "parent": "root", "x": -267.71, "y": -366.62 }, + { "name": "color", "parent": "root", "x": -298.29, "y": 44.1 }, + { "name": "draworder", "parent": "root", "x": 283.53, "y": -356.27 }, + { "name": "mesh", "parent": "root", "x": -320.74, "y": 413.7 }, + { "name": "meshweighted", "parent": "root", "rotation": -11.22, "x": -353.28, "y": 627.53 }, + { "name": "pathfollower", "parent": "root", "x": 177.52, "y": 56.62 }, + { "name": "rotate", "parent": "root", "x": -305, "y": 201 }, + { "name": "scale", "parent": "root", "x": 183.99, "y": -138 }, + { "name": "shear", "parent": "root", "x": -304, "y": -146 }, + { "name": "transformconstrainttarget", "parent": "root", "x": 604.27, "y": 420.7, "color": "abe323ff" }, + { "name": "transformconstrained", "parent": "root", "x": 169.6, "y": 420.7 }, + { "name": "translate", "parent": "root", "x": 190.99, "y": 201, "color": "abe323ff" } +], +"slots": [ + { "name": "images/spine", "bone": "translate", "attachment": "images/spine" }, + { "name": "images/spine2", "bone": "rotate", "attachment": "images/spine" }, + { "name": "images/spine3", "bone": "scale", "attachment": "images/spine" }, + { "name": "images/spine4", "bone": "shear", "attachment": "images/spine" }, + { "name": "images/spine5", "bone": "color", "attachment": "images/spine" }, + { "name": "path2", "bone": "root", "attachment": "path" }, + { "name": "images/spine6", "bone": "pathfollower", "attachment": "images/spine" }, + { "name": "images/spine7", "bone": "transformconstrained", "attachment": "images/spine" }, + { "name": "images/spine8", "bone": "transformconstrainttarget", "attachment": "images/spine" }, + { "name": "images/spine9", "bone": "mesh", "attachment": "images/spine" }, + { "name": "images/spine10", "bone": "attachment", "attachment": "images/logo" }, + { "name": "draworder2", "bone": "draworder", "attachment": "images/logo" }, + { "name": "draworder1", "bone": "draworder", "attachment": "images/spine" }, + { "name": "images/spine12", "bone": "meshweighted", "attachment": "linkedmesh" } +], +"transform": [ + { + "name": "transformconstraint", + "bones": [ "transformconstrained" ], + "target": "transformconstrainttarget", + "x": -400, + "rotateMix": 0.509, + "translateMix": 0.509, + "scaleMix": 0.509, + "shearMix": 0.509 + } +], +"path": [ + { + "name": "pathconstraint", + "bones": [ "pathfollower" ], + "target": "path2", + "rotation": 34.2 + } +], +"skins": { + "default": { + "draworder1": { + "images/spine": { "path": "spine", "width": 377, "height": 120 } + }, + "draworder2": { + "images/logo": { "path": "logo", "width": 120, "height": 120 } + }, + "images/spine": { + "images/spine": { "path": "spine", "width": 377, "height": 120 } + }, + "images/spine10": { + "images/logo": { "path": "logo", "width": 120, "height": 120 }, + "images/spine": { "path": "spine", "width": 377, "height": 120 } + }, + "images/spine12": { + "images/spine": { + "type": "mesh", + "path": "spine", + "uvs": [ 0, 0, 0.25, 0, 0.5, 0, 0.75, 0, 1, 0, 1, 0.25, 1, 0.5, 1, 0.75, 1, 1, 0.75, 1, 0.5, 1, 0.25, 1, 0, 1, 0, 0.75, 0, 0.5, 0, 0.25, 0.25, 0.25, 0.25, 0.5, 0.25, 0.75, 0.5, 0.25, 0.5, 0.5, 0.5, 0.75, 0.75, 0.25, 0.75, 0.5, 0.75, 0.75 ], + "triangles": [ 15, 0, 1, 16, 1, 2, 15, 1, 16, 19, 2, 3, 16, 2, 19, 22, 3, 4, 19, 3, 22, 22, 4, 5, 14, 15, 16, 17, 16, 19, 14, 16, 17, 20, 19, 22, 17, 19, 20, 23, 22, 5, 20, 22, 23, 23, 5, 6, 13, 14, 17, 18, 17, 20, 13, 17, 18, 21, 20, 23, 18, 20, 21, 24, 23, 6, 21, 23, 24, 24, 6, 7, 12, 13, 18, 11, 18, 21, 12, 18, 11, 10, 21, 24, 11, 21, 10, 9, 24, 7, 10, 24, 9, 9, 7, 8 ], + "vertices": [ 1, 5, -194.67, 21.29, 1, 1, 5, -102.08, 38.91, 1, 1, 5, -9.49, 56.54, 1, 1, 5, 83.08, 74.16, 1, 1, 5, 175.67, 91.79, 1, 1, 5, 181.28, 62.32, 1, 1, 5, 186.89, 32.84, 1, 1, 5, 192.5, 3.38, 1, 1, 5, 198.11, -26.09, 1, 1, 5, 105.52, -43.71, 1, 1, 5, 12.94, -61.33, 1, 1, 5, -79.64, -78.96, 1, 1, 5, -172.23, -96.58, 1, 1, 5, -177.84, -67.11, 1, 1, 5, -183.45, -37.64, 1, 1, 5, -189.06, -8.17, 1, 1, 5, -96.47, 9.45, 1, 1, 5, -90.86, -20.01, 1, 1, 5, -85.25, -49.48, 1, 1, 5, -3.88, 27.07, 1, 1, 5, 1.72, -2.39, 1, 1, 5, 7.33, -31.86, 1, 1, 5, 88.7, 44.69, 1, 1, 5, 94.31, 15.22, 1, 1, 5, 99.92, -14.24, 1 ], + "hull": 16, + "edges": [ 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 18, 20, 20, 22, 22, 24, 24, 26, 26, 28, 28, 30, 30, 0 ], + "width": 377, + "height": 120 + }, + "linkedmesh": { "type": "linkedmesh", "path": "logo", "parent": "images/spine", "width": 120, "height": 120 } + }, + "images/spine2": { + "images/spine": { "path": "spine", "width": 377, "height": 120 } + }, + "images/spine3": { + "images/spine": { "path": "spine", "width": 377, "height": 120 } + }, + "images/spine4": { + "images/spine": { "path": "spine", "rotation": 0.15, "width": 377, "height": 120 } + }, + "images/spine5": { + "images/spine": { "path": "spine", "width": 377, "height": 120 } + }, + "images/spine6": { + "images/spine": { "path": "spine", "width": 377, "height": 120 } + }, + "images/spine7": { + "images/spine": { "path": "spine", "width": 377, "height": 120 } + }, + "images/spine8": { + "images/spine": { "path": "spine", "width": 377, "height": 120 } + }, + "images/spine9": { + "images/spine": { + "type": "mesh", + "path": "spine", + "uvs": [ 1, 0.50124, 1, 1, 0.72412, 1, 0.49981, 1, 0.28581, 1, 0, 1, 0, 0.50124, 0, 0, 0.49207, 0, 1, 0, 0.56941, 0.57414, 0.84014, 0.50124, 0.61841, 0.22584, 0.20589, 0.20154, 0.19558, 0.67134, 0.39152, 0.86574, 0.3941, 0.41214, 0.3941, 0.12864, 0.76021, 0.19344, 0.76537, 0.59034, 0.74474, 0.84144, 0.57716, 0.81714 ], + "triangles": [ 17, 7, 8, 18, 8, 9, 13, 7, 17, 12, 8, 18, 17, 8, 12, 16, 17, 12, 13, 17, 16, 6, 7, 13, 6, 13, 16, 18, 9, 0, 11, 18, 0, 10, 16, 12, 12, 18, 11, 10, 12, 11, 19, 10, 11, 14, 6, 16, 14, 16, 10, 21, 10, 19, 15, 14, 10, 20, 21, 19, 21, 15, 10, 5, 6, 14, 4, 5, 14, 15, 4, 14, 3, 15, 21, 4, 15, 3, 2, 21, 20, 3, 21, 2, 19, 11, 0, 0, 20, 19, 1, 20, 0, 2, 20, 1 ], + "vertices": [ 191.41, -1.12, 191.41, -60.97, 87.4, -60.97, 2.84, -60.97, -77.82, -60.97, -185.58, -60.97, -185.58, -1.12, -185.58, 59.02, -0.07, 59.02, 191.41, 59.02, 29.09, -9.85, 131.14, -1.12, 47.55, 31.92, -107.96, 34.84, -111.85, -21.53, -37.97, -44.86, -37, 9.57, -37, 43.59, 101.01, 35.81, 102.96, -11.81, 95.18, -41.93, 32, -39.02 ], + "hull": 10, + "edges": [ 10, 12, 12, 14, 14, 16, 16, 18, 2, 0, 0, 18, 6, 8, 8, 10, 2, 4, 4, 6 ], + "width": 377, + "height": 120 + } + }, + "path2": { + "path": { + "type": "path", + "closed": true, + "lengths": [ 128.85, 310.24, 465.06, 600.88, 773.97 ], + "vertexCount": 15, + "vertices": [ 258.07, -42.67, 291.94, -17.53, 326.41, 7.22, 391.41, 2.75, 398.05, 46.72, 399.83, 84.07, 274.03, 106.4, 236.7, 117.74, 199.37, 129.09, 116.55, 135.12, 84.41, 115.47, 50.34, 94.04, 56.53, 1.48, 89.01, -5.59, 122.89, -13.58 ] + } + } + } +}, +"animations": { + "animation": { + "slots": { + "images/spine5": { + "color": [ + { "time": 0, "color": "ffffffff" }, + { "time": 0.4333, "color": "ff0901ff" }, + { "time": 0.9, "color": "2dff00ff" }, + { "time": 1.3333, "color": "ffffffff" } + ] + }, + "images/spine10": { + "attachment": [ + { "time": 0, "name": "images/spine" }, + { "time": 0.6666, "name": "images/logo" }, + { "time": 1.3333, "name": "images/spine" } + ] + }, + "images/spine12": { + "attachment": [ + { "time": 0, "name": "images/spine" }, + { "time": 0.6666, "name": "linkedmesh" } + ] + } + }, + "bones": { + "translate": { + "translate": [ + { + "time": 0, + "x": 0, + "y": 0, + "curve": [ 1, 0, 0, 1 ] + }, + { "time": 0.6666, "x": 96.99, "y": -151 }, + { "time": 1.3333, "x": 0, "y": 0 } + ] + }, + "scale": { + "scale": [ + { "time": 0, "x": 1, "y": 1 }, + { "time": 0.6666, "x": 1, "y": 2.34 }, + { "time": 1.3333, "x": 1, "y": 1 } + ] + }, + "rotate": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.6666, "angle": -125.34 }, + { "time": 1.3333, "angle": 0 } + ] + }, + "shear": { + "shear": [ + { "time": 0, "x": 0, "y": 0 }, + { "time": 0.6666, "x": 29.4, "y": 0 }, + { "time": 1.3333, "x": 0, "y": 0 } + ] + }, + "transformconstrainttarget": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.6666, "angle": -74.6 }, + { "time": 1.3333, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 }, + { "time": 0.6666, "x": 176.22, "y": -170.34 }, + { "time": 1.3333, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 }, + { "time": 0.6666, "x": 2, "y": 2 }, + { "time": 1.3333, "x": 1, "y": 1 } + ], + "shear": [ + { "time": 0, "x": 0, "y": 0 }, + { "time": 0.6666, "x": 23.4, "y": 0 }, + { "time": 1.3333, "x": 0, "y": 0 } + ] + } + }, + "transform": { + "transformconstraint": [ + { "time": 0, "rotateMix": 0.509, "translateMix": 0.509, "scaleMix": 0.509, "shearMix": 0.509 }, + { "time": 0.6666 }, + { "time": 1.3333, "rotateMix": 0.5, "translateMix": 0.5, "scaleMix": 0.5, "shearMix": 0.5 } + ] + }, + "paths": { + "pathconstraint": { + "position": [ + { "time": 0 }, + { "time": 1.3333, "position": 1 } + ], + "spacing": [ + { "time": 0, "spacing": 40.1 }, + { "time": 1.3333 } + ], + "mix": [ + { "time": 0.6666, "rotateMix": 0.473, "translateMix": 0.473 }, + { "time": 1.3333 } + ] + } + }, + "deform": { + "default": { + "images/spine9": { + "images/spine": [ + { "time": 0 }, + { + "time": 0.6666, + "vertices": [ 43.09784, 58.11693, 0, 0, 0, 0, -0.653, -57.46399, -50.93396, -47.01593, -43.098, -24.81398, -43.098, -24.81399, -1.0E-5, 1.0E-5, 0, 1.0E-5, 43.09784, 58.11695, 0, 0, 43.09784, 58.11693, 1.0E-5, -1.0E-5, 0, 0, -43.09797, -24.81399, 0, 1.0E-5, 0, 0, 0, 0, 43.09784, 58.11694, 43.09784, 58.11693 ] + }, + { "time": 1.3333 } + ] + }, + "images/spine12": { + "images/spine": [ + { "time": 0 }, + { + "time": 0.3333, + "offset": 4, + "vertices": [ -9.45232, 83.5133, -3.90008, 44.76635, -3.90008, 44.76635, -3.90008, 44.76635, 0, 0, 0, 0, 0, 0, 0, 0, 5.15667, -29.57763, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3.90008, 44.76635 ] + }, + { "time": 0.6666 }, + { + "time": 0.6679, + "vertices": [ -1.21159, -14.52716, -2.76092, -7.75683, -4.30999, -0.98669, 2.38385, 9.78289, -1.56903, 5.49316, -2.93444, 6.75128, -4.30011, 8.00933, -5.66552, 9.2677, -7.031, 10.52575, -3.07855, 14.81561, 4.30986, 0.9859, 5.85907, -5.78436, 7.40826, -12.55462, 5.25317, -13.04797, 3.09832, -13.54083, 0.94323, -14.03411, -0.60595, -7.26379, 1.54907, -6.77056, 3.70422, -6.27746, -2.15495, -0.49346, 0, -3.0E-4, 2.15495, 0.49273, 1.01812, 11.04132, -0.3471, 12.29895, -1.71313, 13.557 ] + }, + { + "time": 1.3333, + "vertices": [ -10.57342, 25.16797, -9.16716, 14.48486, -7.76074, 3.80212, 131.25482, 21.05285, 128.23181, -0.04534, 121.51611, 0.91668, 114.80023, 1.8789, 108.08459, 2.84124, 101.3689, 3.80316, 104.39154, 24.90191, -21.3623, 2.01171, -22.76855, 12.69433, -24.17505, 23.37719, -20.77471, 23.82476, -17.37414, 24.27276, -13.97393, 24.72009, -12.56768, 14.03753, -15.96789, 13.58978, -19.36809, 13.14215, -11.16095, 3.35455, -14.56134, 2.90704, -17.96167, 2.45922, 124.53894, 22.01538, 117.82336, 22.97705, 111.10718, 23.93933 ] + } + ] + } + } + }, + "drawOrder": [ + { "time": 0 }, + { + "time": 0.6666, + "offsets": [ + { "slot": "draworder2", "offset": 1 } + ] + }, + { "time": 1.3333 } + ] + } +} +} \ No newline at end of file diff --git a/spine-corona/data/test.png b/spine-corona/data/test.png new file mode 100644 index 000000000..b84ab7251 Binary files /dev/null and b/spine-corona/data/test.png differ diff --git a/spine-corona/data/vine.atlas b/spine-corona/data/vine.atlas new file mode 100644 index 000000000..019a92d01 --- /dev/null +++ b/spine-corona/data/vine.atlas @@ -0,0 +1,13 @@ + +vine.png +size: 128,1024 +format: RGBA8888 +filter: Linear,Linear +repeat: none +vine + rotate: false + xy: 2, 2 + size: 68, 962 + orig: 68, 962 + offset: 0, 0 + index: -1 diff --git a/spine-corona/data/vine.json b/spine-corona/data/vine.json new file mode 100644 index 000000000..6fc78dc14 --- /dev/null +++ b/spine-corona/data/vine.json @@ -0,0 +1,313 @@ +{ +"skeleton": { "hash": "OTxn8PebJnSmjY8665bH7m360tk", "spine": "3.4.02", "width": 227.32, "height": 841.06, "images": "./images/" }, +"bones": [ + { "name": "root" }, + { "name": "vine1", "parent": "root", "length": 74, "rotation": 90, "x": 339.09, "y": -467.15, "color": "f700ffff" }, + { "name": "vine2", "parent": "vine1", "length": 74, "x": 74, "color": "f700ffff" }, + { "name": "vine3", "parent": "vine1", "length": 74, "rotation": 38.94, "x": 137.97, "y": 47.51, "color": "f700ffff" }, + { "name": "vine4", "parent": "vine1", "length": 74, "rotation": 16.67, "x": 214.29, "y": 68.52, "color": "f700ffff" }, + { "name": "vine5", "parent": "vine1", "length": 74, "rotation": -21.73, "x": 289.61, "y": 40.92, "color": "f700ffff" }, + { "name": "vine6", "parent": "vine1", "length": 74, "rotation": -50.04, "x": 341.12, "y": -15.58, "color": "f700ffff" }, + { "name": "vine7", "parent": "vine1", "length": 74, "rotation": -39.25, "x": 402.7, "y": -61.82, "color": "f700ffff" }, + { "name": "vine8", "parent": "vine1", "length": 74, "rotation": -6.18, "x": 483.27, "y": -69.84, "color": "f700ffff" }, + { "name": "vine9", "parent": "vine1", "length": 74, "rotation": 27.11, "x": 554.25, "y": -36.44, "color": "f700ffff" }, + { "name": "vine10", "parent": "vine1", "length": 74, "rotation": 48, "x": 608.62, "y": 19.05, "color": "f700ffff" }, + { "name": "vine11", "parent": "vine1", "length": 74, "rotation": 39.7, "x": 670.66, "y": 66.39, "color": "f700ffff" }, + { "name": "vine12", "parent": "vine1", "length": 74, "rotation": 10.72, "x": 750.09, "y": 80.23, "color": "f700ffff" }, + { "name": "vine13", "parent": "vine1", "length": 74, "rotation": -18.44, "x": 826.06, "y": 56.95, "color": "f700ffff" }, + { "name": "vine-control1", "parent": "root", "length": 296.68, "rotation": 88.64, "x": -2.5, "y": 2.55, "color": "ff0004ff" }, + { "name": "vine-control2", "parent": "vine-control1", "length": 292.59, "rotation": 0.96, "x": 296.68, "color": "ff0004ff" }, + { "name": "vine-control3", "parent": "vine-control2", "length": 247.5, "rotation": 0.16, "x": 292.59, "color": "ff0004ff" }, + { "name": "vine-control4", "parent": "vine-control3", "length": 212.43, "rotation": 0.5, "x": 247.5, "color": "ff0004ff" } +], +"slots": [ + { "name": "vine-path", "bone": "root", "attachment": "vine-path" }, + { "name": "vine", "bone": "vine1", "attachment": "vine" } +], +"path": [ + { + "name": "vine-path", + "bones": [ "vine1", "vine2", "vine3", "vine4", "vine5", "vine6", "vine7", "vine8", "vine9", "vine10", "vine11", "vine12", "vine13" ], + "target": "vine-path", + "rotateMode": "chainScale" + } +], +"skins": { + "default": { + "vine": { + "vine": { + "type": "mesh", + "uvs": [ 0, 0, 0.5, 0, 1, 0, 1, 0.03846, 1, 0.07692, 1, 0.11538, 1, 0.15384, 1, 0.1923, 1, 0.23076, 1, 0.26923, 1, 0.30769, 1, 0.34615, 1, 0.38461, 1, 0.42307, 1, 0.46153, 1, 0.5, 1, 0.53846, 1, 0.57692, 1, 0.61538, 1, 0.65384, 1, 0.6923, 1, 0.73076, 1, 0.76923, 1, 0.80769, 1, 0.84615, 1, 0.88461, 1, 0.92307, 1, 0.96153, 1, 1, 0.5, 1, 0, 1, 0, 0.96153, 0, 0.92307, 0, 0.88461, 0, 0.84615, 0, 0.80769, 0, 0.76923, 0, 0.73076, 0, 0.6923, 0, 0.65384, 0, 0.61538, 0, 0.57692, 0, 0.53846, 0, 0.5, 0, 0.46153, 0, 0.42307, 0, 0.38461, 0, 0.34615, 0, 0.30769, 0, 0.26923, 0, 0.23076, 0, 0.1923, 0, 0.15384, 0, 0.11538, 0, 0.07692, 0, 0.03846, 0.5, 0.03846, 0.5, 0.07692, 0.5, 0.11538, 0.5, 0.15384, 0.5, 0.1923, 0.5, 0.23076, 0.5, 0.26923, 0.5, 0.30769, 0.5, 0.34615, 0.5, 0.38461, 0.5, 0.42307, 0.5, 0.46153, 0.5, 0.5, 0.5, 0.53846, 0.5, 0.57692, 0.5, 0.61538, 0.5, 0.65384, 0.5, 0.6923, 0.5, 0.73076, 0.5, 0.76923, 0.5, 0.80769, 0.5, 0.84615, 0.5, 0.88461, 0.5, 0.92307, 0.5, 0.96153 ], + "triangles": [ 55, 0, 1, 56, 1, 2, 55, 1, 56, 56, 2, 3, 54, 55, 56, 57, 56, 3, 57, 3, 4, 53, 54, 57, 58, 57, 4, 53, 57, 58, 58, 4, 5, 52, 53, 58, 59, 58, 5, 54, 56, 57, 52, 58, 59, 59, 5, 6, 51, 52, 59, 60, 59, 6, 51, 59, 60, 60, 6, 7, 50, 51, 60, 61, 60, 7, 50, 60, 61, 61, 7, 8, 49, 50, 61, 62, 61, 8, 49, 61, 62, 62, 8, 9, 48, 49, 62, 63, 62, 9, 48, 62, 63, 63, 9, 10, 47, 48, 63, 64, 63, 10, 47, 63, 64, 64, 10, 11, 46, 47, 64, 65, 64, 11, 46, 64, 65, 65, 11, 12, 45, 46, 65, 66, 65, 12, 45, 65, 66, 66, 12, 13, 44, 45, 66, 67, 66, 13, 44, 66, 67, 67, 13, 14, 43, 44, 67, 68, 67, 14, 43, 67, 68, 68, 14, 15, 42, 43, 68, 69, 68, 15, 42, 68, 69, 69, 15, 16, 41, 42, 69, 70, 69, 16, 41, 69, 70, 70, 16, 17, 40, 41, 70, 71, 70, 17, 40, 70, 71, 71, 17, 18, 39, 40, 71, 72, 71, 18, 39, 71, 72, 72, 18, 19, 38, 39, 72, 73, 72, 19, 38, 72, 73, 73, 19, 20, 37, 38, 73, 74, 73, 20, 37, 73, 74, 74, 20, 21, 36, 37, 74, 75, 74, 21, 36, 74, 75, 75, 21, 22, 35, 36, 75, 76, 75, 22, 35, 75, 76, 76, 22, 23, 34, 35, 76, 77, 76, 23, 34, 76, 77, 77, 23, 24, 33, 77, 78, 78, 24, 25, 32, 33, 78, 79, 78, 25, 32, 78, 79, 33, 34, 77, 78, 77, 24, 31, 32, 79, 80, 79, 26, 31, 79, 80, 80, 26, 27, 30, 31, 80, 29, 80, 27, 30, 80, 29, 29, 27, 28, 79, 25, 26 ], + "vertices": [ 4, 10, 294, 33.89, 3.2E-4, 11, 220, 33.89, 0.01648, 12, 146, 33.89, 0.21526, 13, 72, 33.89, 0.76791, 3, 11, 220, -0.1, 0.00752, 12, 146, -0.1, 0.16869, 13, 72, -0.1, 0.82378, 4, 10, 294, -34.09999, 3.2E-4, 11, 220, -34.09999, 0.01648, 12, 146, -34.09999, 0.21526, 13, 72, -34.09999, 0.76791, 4, 10, 257, -34.09999, 0.00195, 11, 183, -34.09999, 0.04739, 12, 109, -34.09999, 0.33351, 13, 35, -34.09999, 0.61714, 5, 9, 294, -34.09999, 2.4E-4, 10, 220, -34.09999, 0.01163, 11, 146, -34.09999, 0.14109, 12, 72, -34.09999, 0.49171, 13, -1.99, -34.09999, 0.35531, 5, 9, 257, -34.09999, 0.00195, 10, 183, -34.09999, 0.04663, 11, 109, -34.09999, 0.31166, 12, 35, -34.09999, 0.48761, 13, -38.99, -34.09999, 0.15212, 6, 8, 294, -34.09999, 2.4E-4, 9, 220, -34.09999, 0.01163, 10, 146, -34.09999, 0.14101, 11, 72, -34.09999, 0.48685, 12, -1.99, -34.09999, 0.31174, 13, -75.99, -34.09999, 0.0485, 6, 8, 257, -34.09999, 0.00195, 9, 183, -34.09999, 0.04663, 10, 109, -34.09999, 0.31166, 11, 35, -34.09999, 0.48685, 12, -38.99, -34.09999, 0.14101, 13, -112.99, -34.09999, 0.01188, 7, 7, 294, -34.09999, 2.4E-4, 8, 220, -34.09999, 0.01163, 9, 146, -34.09999, 0.14101, 10, 72, -34.09999, 0.48685, 11, -1.99, -34.09999, 0.31166, 12, -75.99, -34.09999, 0.04663, 13, -149.99, -34.09999, 0.00195, 7, 7, 257, -34.09999, 0.00195, 8, 183, -34.09999, 0.04663, 9, 109, -34.09999, 0.31166, 10, 35, -34.09999, 0.48685, 11, -38.99, -34.09999, 0.14101, 12, -112.99, -34.09999, 0.01163, 13, -186.99, -34.09999, 2.4E-4, 7, 6, 294, -34.09999, 2.4E-4, 7, 220, -34.09999, 0.01163, 8, 146, -34.09999, 0.14101, 9, 72, -34.09999, 0.48685, 10, -1.99, -34.09999, 0.31166, 11, -75.99, -34.09999, 0.04663, 12, -149.99, -34.09999, 0.00195, 7, 6, 257, -34.09999, 0.00195, 7, 183, -34.09999, 0.04663, 8, 109, -34.09999, 0.31166, 9, 35, -34.09999, 0.48685, 10, -38.99, -34.09999, 0.14101, 11, -112.99, -34.09999, 0.01163, 12, -186.99, -34.09999, 2.4E-4, 7, 5, 294, -34.09999, 2.4E-4, 6, 220, -34.09999, 0.01163, 7, 146, -34.09999, 0.14101, 8, 72, -34.09999, 0.48685, 9, -1.99, -34.09999, 0.31166, 10, -75.99, -34.09999, 0.04663, 11, -149.99, -34.09999, 0.00195, 7, 5, 257, -34.09999, 0.00195, 6, 183, -34.09999, 0.04663, 7, 109, -34.09999, 0.31166, 8, 35, -34.09999, 0.48685, 9, -38.99, -34.09999, 0.14101, 10, -112.99, -34.09999, 0.01163, 11, -186.99, -34.09999, 2.4E-4, 7, 4, 294, -34.09999, 2.4E-4, 5, 220, -34.09999, 0.01163, 6, 146, -34.09999, 0.14101, 7, 72, -34.09999, 0.48685, 8, -1.99, -34.09999, 0.31166, 9, -75.99, -34.09999, 0.04663, 10, -149.99, -34.09999, 0.00195, 7, 4, 257, -34.09999, 0.00195, 5, 183, -34.09999, 0.04663, 6, 109, -34.09999, 0.31166, 7, 35, -34.09999, 0.48685, 8, -38.99, -34.09999, 0.14101, 9, -112.99, -34.09999, 0.01163, 10, -186.99, -34.09999, 2.4E-4, 7, 3, 294, -34.09999, 2.4E-4, 4, 220, -34.09999, 0.01163, 5, 146, -34.09999, 0.14101, 6, 72, -34.09999, 0.48685, 7, -1.99, -34.09999, 0.31166, 8, -75.99, -34.09999, 0.04663, 9, -149.99, -34.09999, 0.00195, 7, 3, 257, -34.09999, 0.00195, 4, 183, -34.09999, 0.04663, 5, 109, -34.09999, 0.31166, 6, 35, -34.09999, 0.48685, 7, -38.99, -34.09999, 0.14101, 8, -112.99, -34.09999, 0.01163, 9, -186.99, -34.09999, 2.4E-4, 7, 2, 294, -34.09999, 2.4E-4, 3, 220, -34.09999, 0.01163, 4, 146, -34.09999, 0.14101, 5, 72, -34.09999, 0.48685, 6, -1.99, -34.09999, 0.31166, 7, -75.99, -34.09999, 0.04663, 8, -149.99, -34.09999, 0.00195, 7, 2, 257, -34.09999, 0.00195, 3, 183, -34.09999, 0.04663, 4, 109, -34.09999, 0.31166, 5, 35, -34.09999, 0.48685, 6, -38.99, -34.09999, 0.14101, 7, -112.99, -34.09999, 0.01163, 8, -186.99, -34.09999, 2.4E-4, 7, 1, 294, -34.09999, 2.4E-4, 2, 220, -34.09999, 0.01163, 3, 146, -34.09999, 0.14101, 4, 72, -34.09999, 0.48685, 5, -1.99, -34.09999, 0.31166, 6, -75.99, -34.09999, 0.04663, 7, -149.99, -34.09999, 0.00195, 7, 1, 257, -34.09999, 0.0017, 2, 183, -34.09999, 0.04687, 3, 109, -34.09999, 0.31166, 4, 35, -34.09999, 0.48685, 5, -38.99, -34.09999, 0.14101, 6, -112.99, -34.09999, 0.01163, 7, -186.99, -34.09999, 2.4E-4, 6, 1, 220, -34.09999, 0.01033, 2, 146, -34.09999, 0.14256, 3, 72, -34.09999, 0.48685, 4, -1.99, -34.09999, 0.31166, 5, -75.99, -34.09999, 0.04663, 6, -149.99, -34.09999, 0.00195, 6, 1, 183, -34.09999, 0.04058, 2, 109, -34.09999, 0.31966, 3, 35, -34.09999, 0.48685, 4, -38.99, -34.09999, 0.14101, 5, -112.99, -34.09999, 0.01163, 6, -186.99, -34.09999, 2.4E-4, 5, 1, 146, -34.09999, 0.1274, 2, 72, -34.09999, 0.51233, 3, -1.99, -34.09999, 0.31166, 4, -75.99, -34.09999, 0.04663, 5, -149.99, -34.09999, 0.00195, 5, 1, 109, -34.09999, 0.30116, 2, 35, -34.09999, 0.54594, 3, -38.99, -34.09999, 0.14101, 4, -112.99, -34.09999, 0.01163, 5, -186.99, -34.09999, 2.4E-4, 4, 1, 72, -34.09999, 0.55403, 2, -1.99, -34.09999, 0.39738, 3, -75.99, -34.09999, 0.04663, 4, -149.99, -34.09999, 0.00195, 4, 1, 35, -34.09999, 0.77978, 2, -38.99, -34.09999, 0.20825, 3, -112.99, -34.09999, 0.01171, 4, -186.99, -34.09999, 2.4E-4, 3, 1, -1.99, -34.09999, 0.89032, 2, -75.99, -34.09999, 0.10696, 3, -149.99, -34.09999, 0.00271, 3, 1, -1.99, -0.1, 0.9264, 2, -75.99, -0.1, 0.07272, 3, -149.99, -0.1, 8.6E-4, 3, 1, -1.99, 33.89, 0.89032, 2, -75.99, 33.89, 0.10696, 3, -149.99, 33.89, 0.00271, 4, 1, 35, 33.89, 0.77978, 2, -38.99, 33.89, 0.20825, 3, -112.99, 33.89, 0.01171, 4, -186.99, 33.89, 2.4E-4, 4, 1, 72, 33.89, 0.55403, 2, -1.99, 33.89, 0.39738, 3, -75.99, 33.89, 0.04663, 4, -149.99, 33.89, 0.00195, 5, 1, 109, 33.89, 0.30116, 2, 35, 33.89, 0.54594, 3, -38.99, 33.89, 0.14101, 4, -112.99, 33.89, 0.01163, 5, -186.99, 33.89, 2.4E-4, 5, 1, 146, 33.89, 0.1274, 2, 72, 33.89, 0.51233, 3, -1.99, 33.89, 0.31166, 4, -75.99, 33.89, 0.04663, 5, -149.99, 33.89, 0.00195, 6, 1, 183, 33.89, 0.04058, 2, 109, 33.89, 0.31966, 3, 35, 33.89, 0.48685, 4, -38.99, 33.89, 0.14101, 5, -112.99, 33.89, 0.01163, 6, -186.99, 33.89, 2.4E-4, 6, 1, 220, 33.89, 0.01033, 2, 146, 33.89, 0.14256, 3, 72, 33.89, 0.48685, 4, -1.99, 33.89, 0.31166, 5, -75.99, 33.89, 0.04663, 6, -149.99, 33.89, 0.00195, 7, 1, 257, 33.89, 0.0017, 2, 183, 33.89, 0.04687, 3, 109, 33.89, 0.31166, 4, 35, 33.89, 0.48685, 5, -38.99, 33.89, 0.14101, 6, -112.99, 33.89, 0.01163, 7, -186.99, 33.89, 2.4E-4, 7, 1, 294, 33.89, 2.4E-4, 2, 220, 33.89, 0.01163, 3, 146, 33.89, 0.14101, 4, 72, 33.89, 0.48685, 5, -1.99, 33.89, 0.31166, 6, -75.99, 33.89, 0.04663, 7, -149.99, 33.89, 0.00195, 7, 2, 257, 33.89, 0.00195, 3, 183, 33.89, 0.04663, 4, 109, 33.89, 0.31166, 5, 35, 33.89, 0.48685, 6, -38.99, 33.89, 0.14101, 7, -112.99, 33.89, 0.01163, 8, -186.99, 33.89, 2.4E-4, 7, 2, 294, 33.89, 2.4E-4, 3, 220, 33.89, 0.01163, 4, 146, 33.89, 0.14101, 5, 72, 33.89, 0.48685, 6, -1.99, 33.89, 0.31166, 7, -75.99, 33.89, 0.04663, 8, -149.99, 33.89, 0.00195, 7, 3, 257, 33.89, 0.00195, 4, 183, 33.89, 0.04663, 5, 109, 33.89, 0.31166, 6, 35, 33.89, 0.48685, 7, -38.99, 33.89, 0.14101, 8, -112.99, 33.89, 0.01163, 9, -186.99, 33.89, 2.4E-4, 7, 3, 294, 33.89, 2.4E-4, 4, 220, 33.89, 0.01163, 5, 146, 33.89, 0.14101, 6, 72, 33.89, 0.48685, 7, -1.99, 33.89, 0.31166, 8, -75.99, 33.89, 0.04663, 9, -149.99, 33.89, 0.00195, 7, 4, 257, 33.89, 0.00195, 5, 183, 33.89, 0.04663, 6, 109, 33.89, 0.31166, 7, 35, 33.89, 0.48685, 8, -38.99, 33.89, 0.14101, 9, -112.99, 33.89, 0.01163, 10, -186.99, 33.89, 2.4E-4, 7, 4, 294, 33.89, 2.4E-4, 5, 220, 33.89, 0.01163, 6, 146, 33.89, 0.14101, 7, 72, 33.89, 0.48685, 8, -1.99, 33.89, 0.31166, 9, -75.99, 33.89, 0.04663, 10, -149.99, 33.89, 0.00195, 7, 5, 257, 33.89, 0.00195, 6, 183, 33.89, 0.04663, 7, 109, 33.89, 0.31166, 8, 35, 33.89, 0.48685, 9, -38.99, 33.89, 0.14101, 10, -112.99, 33.89, 0.01163, 11, -186.99, 33.89, 2.4E-4, 7, 5, 294, 33.89, 2.4E-4, 6, 220, 33.89, 0.01163, 7, 146, 33.89, 0.14101, 8, 72, 33.89, 0.48685, 9, -1.99, 33.89, 0.31166, 10, -75.99, 33.89, 0.04663, 11, -149.99, 33.89, 0.00195, 7, 6, 257, 33.89, 0.00195, 7, 183, 33.89, 0.04663, 8, 109, 33.89, 0.31166, 9, 35, 33.89, 0.48685, 10, -38.99, 33.89, 0.14101, 11, -112.99, 33.89, 0.01163, 12, -186.99, 33.89, 2.4E-4, 7, 6, 294, 33.89, 2.4E-4, 7, 220, 33.89, 0.01163, 8, 146, 33.89, 0.14101, 9, 72, 33.89, 0.48685, 10, -1.99, 33.89, 0.31166, 11, -75.99, 33.89, 0.04663, 12, -149.99, 33.89, 0.00195, 7, 7, 257, 33.89, 0.00195, 8, 183, 33.89, 0.04663, 9, 109, 33.89, 0.31166, 10, 35, 33.89, 0.48685, 11, -38.99, 33.89, 0.14101, 12, -112.99, 33.89, 0.01163, 13, -186.99, 33.89, 2.4E-4, 7, 7, 294, 33.89, 2.4E-4, 8, 220, 33.89, 0.01163, 9, 146, 33.89, 0.14101, 10, 72, 33.89, 0.48685, 11, -1.99, 33.89, 0.31166, 12, -75.99, 33.89, 0.04663, 13, -149.99, 33.89, 0.00195, 6, 8, 257, 33.89, 0.00195, 9, 183, 33.89, 0.04663, 10, 109, 33.89, 0.31166, 11, 35, 33.89, 0.48685, 12, -38.99, 33.89, 0.14101, 13, -112.99, 33.89, 0.01188, 6, 8, 294, 33.89, 2.4E-4, 9, 220, 33.89, 0.01163, 10, 146, 33.89, 0.14101, 11, 72, 33.89, 0.48685, 12, -1.99, 33.89, 0.31174, 13, -75.99, 33.89, 0.0485, 5, 9, 257, 33.89, 0.00195, 10, 183, 33.89, 0.04663, 11, 109, 33.89, 0.31166, 12, 35, 33.89, 0.48761, 13, -38.99, 33.89, 0.15212, 5, 9, 294, 33.89, 2.4E-4, 10, 220, 33.89, 0.01163, 11, 146, 33.89, 0.14109, 12, 72, 33.89, 0.49171, 13, -1.99, 33.89, 0.35531, 4, 10, 257, 33.89, 0.00195, 11, 183, 33.89, 0.04739, 12, 109, 33.89, 0.33351, 13, 35, 33.89, 0.61714, 4, 10, 257, -0.1, 6.5E-4, 11, 183, -0.1, 0.03067, 12, 109, -0.1, 0.31658, 13, 35, -0.1, 0.65209, 4, 10, 220, -0.1, 0.00542, 11, 146, -0.1, 0.11402, 12, 72, -0.1, 0.5478, 13, -1.99, -0.1, 0.33273, 5, 9, 257, -0.1, 6.5E-4, 10, 183, -0.1, 0.03045, 11, 109, -0.1, 0.30373, 12, 35, -0.1, 0.54592, 13, -38.99, -0.1, 0.11923, 5, 9, 220, -0.1, 0.00542, 10, 146, -0.1, 0.11402, 11, 72, -0.1, 0.5457, 12, -1.99, -0.1, 0.30373, 13, -75.99, -0.1, 0.0311, 6, 8, 257, -0.1, 6.5E-4, 9, 183, -0.1, 0.03045, 10, 109, -0.1, 0.30373, 11, 35, -0.1, 0.5457, 12, -38.99, -0.1, 0.11402, 13, -112.99, -0.1, 0.00542, 6, 8, 220, -0.1, 0.00542, 9, 146, -0.1, 0.11402, 10, 72, -0.1, 0.5457, 11, -1.99, -0.1, 0.30373, 12, -75.99, -0.1, 0.03045, 13, -149.99, -0.1, 6.5E-4, 6, 7, 257, -0.1, 6.5E-4, 8, 183, -0.1, 0.03045, 9, 109, -0.1, 0.30373, 10, 35, -0.1, 0.5457, 11, -38.99, -0.1, 0.11402, 12, -112.99, -0.1, 0.00542, 6, 7, 220, -0.1, 0.00542, 8, 146, -0.1, 0.11402, 9, 72, -0.1, 0.5457, 10, -1.99, -0.1, 0.30373, 11, -75.99, -0.1, 0.03045, 12, -149.99, -0.1, 6.5E-4, 6, 6, 257, -0.1, 6.5E-4, 7, 183, -0.1, 0.03045, 8, 109, -0.1, 0.30373, 9, 35, -0.1, 0.5457, 10, -38.99, -0.1, 0.11402, 11, -112.99, -0.1, 0.00542, 6, 6, 220, -0.1, 0.00542, 7, 146, -0.1, 0.11402, 8, 72, -0.1, 0.5457, 9, -1.99, -0.1, 0.30373, 10, -75.99, -0.1, 0.03045, 11, -149.99, -0.1, 6.5E-4, 6, 5, 257, -0.1, 6.5E-4, 6, 183, -0.1, 0.03045, 7, 109, -0.1, 0.30373, 8, 35, -0.1, 0.5457, 9, -38.99, -0.1, 0.11402, 10, -112.99, -0.1, 0.00542, 6, 5, 220, -0.1, 0.00542, 6, 146, -0.1, 0.11402, 7, 72, -0.1, 0.5457, 8, -1.99, -0.1, 0.30373, 9, -75.99, -0.1, 0.03045, 10, -149.99, -0.1, 6.5E-4, 6, 4, 257, -0.1, 6.5E-4, 5, 183, -0.1, 0.03045, 6, 109, -0.1, 0.30373, 7, 35, -0.1, 0.5457, 8, -38.99, -0.1, 0.11402, 9, -112.99, -0.1, 0.00542, 6, 4, 220, -0.1, 0.00542, 5, 146, -0.1, 0.11402, 6, 72, -0.1, 0.5457, 7, -1.99, -0.1, 0.30373, 8, -75.99, -0.1, 0.03045, 9, -149.99, -0.1, 6.5E-4, 6, 3, 257, -0.1, 6.5E-4, 4, 183, -0.1, 0.03045, 5, 109, -0.1, 0.30373, 6, 35, -0.1, 0.5457, 7, -38.99, -0.1, 0.11402, 8, -112.99, -0.1, 0.00542, 6, 3, 220, -0.1, 0.00542, 4, 146, -0.1, 0.11402, 5, 72, -0.1, 0.5457, 6, -1.99, -0.1, 0.30373, 7, -75.99, -0.1, 0.03045, 8, -149.99, -0.1, 6.5E-4, 6, 2, 257, -0.1, 6.5E-4, 3, 183, -0.1, 0.03045, 4, 109, -0.1, 0.30373, 5, 35, -0.1, 0.5457, 6, -38.99, -0.1, 0.11402, 7, -112.99, -0.1, 0.00542, 6, 2, 220, -0.1, 0.00542, 3, 146, -0.1, 0.11402, 4, 72, -0.1, 0.5457, 5, -1.99, -0.1, 0.30373, 6, -75.99, -0.1, 0.03045, 7, -149.99, -0.1, 6.5E-4, 6, 1, 257, -0.1, 6.5E-4, 2, 183, -0.1, 0.03045, 3, 109, -0.1, 0.30373, 4, 35, -0.1, 0.5457, 5, -38.99, -0.1, 0.11402, 6, -112.99, -0.1, 0.00542, 6, 1, 220, -0.1, 0.00477, 2, 146, -0.1, 0.11467, 3, 72, -0.1, 0.5457, 4, -1.99, -0.1, 0.30373, 5, -75.99, -0.1, 0.03045, 6, -149.99, -0.1, 6.5E-4, 5, 1, 183, -0.1, 0.02676, 2, 109, -0.1, 0.30807, 3, 35, -0.1, 0.5457, 4, -38.99, -0.1, 0.11402, 5, -112.99, -0.1, 0.00542, 5, 1, 146, -0.1, 0.09905, 2, 72, -0.1, 0.5661, 3, -1.99, -0.1, 0.30373, 4, -75.99, -0.1, 0.03045, 5, -149.99, -0.1, 6.5E-4, 4, 1, 109, -0.1, 0.27658, 2, 35, -0.1, 0.60395, 3, -38.99, -0.1, 0.11402, 4, -112.99, -0.1, 0.00542, 4, 1, 72, -0.1, 0.55929, 2, -1.99, -0.1, 0.40959, 3, -75.99, -0.1, 0.03045, 4, -149.99, -0.1, 6.5E-4, 3, 1, 35, -0.1, 0.81845, 2, -38.99, -0.1, 0.17611, 3, -112.99, -0.1, 0.00542 ], + "hull": 56, + "edges": [ 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 18, 20, 20, 22, 22, 24, 24, 26, 26, 28, 28, 30, 30, 32, 32, 34, 34, 36, 36, 38, 38, 40, 40, 42, 42, 44, 44, 46, 46, 48, 48, 50, 50, 52, 52, 54, 54, 56, 60, 62, 62, 64, 64, 66, 66, 68, 68, 70, 70, 72, 72, 74, 74, 76, 76, 78, 78, 80, 80, 82, 82, 84, 84, 86, 86, 88, 88, 90, 90, 92, 92, 94, 94, 96, 96, 98, 98, 100, 100, 102, 102, 104, 104, 106, 106, 108, 108, 110, 110, 0, 0, 2, 58, 60, 2, 4, 56, 58, 62, 160, 160, 54, 64, 158, 158, 52, 66, 156, 156, 50, 68, 154, 154, 48, 46, 152, 152, 70, 72, 150, 150, 44, 42, 148, 148, 74, 76, 146, 146, 40, 38, 144, 144, 78, 80, 142, 142, 36, 34, 140, 140, 82, 84, 138, 138, 32, 30, 136, 136, 86, 88, 134, 134, 28, 26, 132, 132, 90, 92, 130, 130, 24, 22, 128, 128, 94, 96, 126, 126, 20, 18, 124, 124, 98, 100, 122, 122, 16, 14, 120, 120, 102, 12, 118, 118, 104, 106, 116, 116, 10, 8, 114, 114, 108, 110, 112, 112, 6 ], + "width": 68, + "height": 962 + } + }, + "vine-path": { + "vine-path": { + "type": "path", + "lengths": [ 223.68, 474.79, 780.31, 992.69, 1196.43, 2277.75 ], + "vertexCount": 18, + "vertices": [ 1, 14, -31.64, 22.49, 1, 1, 14, -2.73, -6.56, 1, 1, 14, 56.89, -69, 1, 1, 14, 115.57, 75.01, 1, 1, 14, 198.6, 53.37, 1, 2, 14, 332.76, 19.74, 0.8, 15, 36.41, 19.12999, 0.19999, 2, 14, 276.72, -68.37, 0.232, 15, -21.1, -68.01999, 0.76799, 1, 15, 96.09, -93.88, 1, 2, 15, 229.75, -122.63, 0.664, 16, -63.18, -122.45, 0.33599, 2, 15, 242.53, 29.31, 0.52, 16, -49.97, 29.45, 0.47999, 1, 16, 66.72, 38.65, 1, 2, 16, 183.42, 47.85, 0.80799, 17, -63.65, 48.41, 0.192, 2, 16, 177.29, -41.22, 0.77599, 17, -70.56, -40.61, 0.224, 2, 16, 265.5, -16.18, 0.488, 17, 17.86, -16.34, 0.51199, 2, 16, 343.25, 7.25, 0.21599, 17, 95.81, 6.41, 0.784, 1, 17, 138.78, 45.72, 1, 1, 17, 212.86, 5.44, 1, 1, 14, 1094.34, -1.02, 1 ] + } + } + } +}, +"animations": { + "animation": { + "slots": { + "vine": { + "color": [ + { + "time": 0, + "color": "ffcb73ff", + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 10.3666, "color": "fefaffff" } + ] + } + }, + "bones": { + "vine1": { + "scale": [ + { + "time": 0, + "x": 0, + "y": 0.183, + "curve": [ 0.302, 0.57, 0.549, 0.82 ] + }, + { + "time": 3.2333, + "x": 1.218, + "y": 1.1, + "curve": [ 0.481, 0.24, 0.708, 0.46 ] + }, + { "time": 11.4333, "x": 1, "y": 1.438 } + ] + }, + "vine-control1": { + "rotate": [ + { + "time": 0, + "angle": 39.68, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 1.2, + "angle": 0.89, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 2.1666, + "angle": 5.56, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 3.4, + "angle": 5.65, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 7.6, "angle": 1.35 } + ], + "scale": [ + { + "time": 0, + "x": 1, + "y": 1, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 4.3333, + "x": 1, + "y": 0.792, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 7.6, + "x": 1, + "y": 1, + "curve": [ 0.25, 0, 0.568, 0.99 ] + }, + { "time": 11.4333, "x": 1, "y": 0.636 } + ] + }, + "vine-control2": { + "rotate": [ + { + "time": 0, + "angle": -39.68, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 1.2, + "angle": -20.6, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 3.4, + "angle": -8.18, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 7.6, "angle": -0.96 } + ], + "scale": [ + { + "time": 0, + "x": 1, + "y": 1, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 4.3333, + "x": 1, + "y": 0.791, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 7.6, + "x": 1, + "y": 1, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 11.4333, "x": 1, "y": 0.923 } + ] + }, + "vine-control3": { + "rotate": [ + { + "time": 0, + "angle": 0, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 1.2, + "angle": 27.36, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 2.1666, + "angle": 14.82, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 3.4, + "angle": -15.24, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 7.6, "angle": -0.16 } + ], + "scale": [ + { + "time": 0, + "x": 1, + "y": 1, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 4.3333, + "x": 1, + "y": 0.791, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 7.6, + "x": 1, + "y": 1, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 11.4333, "x": 1, "y": 0.923 } + ] + }, + "vine-control4": { + "rotate": [ + { + "time": 0, + "angle": 0, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 2.1666, + "angle": -11.88, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 3.4, + "angle": 7.56, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 6.4, + "angle": 15.02, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 7.6, "angle": -0.5 } + ], + "scale": [ + { + "time": 0, + "x": 1, + "y": 1, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 4.3333, + "x": 1, + "y": 0.791, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 7.6, + "x": 1, + "y": 1, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 11.4333, "x": 1, "y": 0.923 } + ] + }, + "vine6": { + "rotate": [ + { "time": 0, "angle": 0 } + ] + }, + "vine7": { + "rotate": [ + { "time": 0, "angle": 0 } + ] + }, + "vine8": { + "rotate": [ + { "time": 0, "angle": 0 } + ] + }, + "vine9": { + "rotate": [ + { "time": 0, "angle": 0 } + ] + }, + "vine10": { + "rotate": [ + { "time": 0, "angle": 0 } + ] + }, + "vine11": { + "rotate": [ + { "time": 0, "angle": 0 } + ] + }, + "vine12": { + "rotate": [ + { "time": 0, "angle": 0 } + ] + }, + "vine13": { + "rotate": [ + { "time": 0, "angle": 0 } + ] + } + } + } +} +} \ No newline at end of file diff --git a/spine-corona/data/vine.png b/spine-corona/data/vine.png new file mode 100644 index 000000000..15ad8b736 Binary files /dev/null and b/spine-corona/data/vine.png differ diff --git a/spine-corona/examples/dragon/dragon.json b/spine-corona/examples/dragon/dragon.json deleted file mode 100644 index 15d5e4dc6..000000000 --- a/spine-corona/examples/dragon/dragon.json +++ /dev/null @@ -1,768 +0,0 @@ -{ -"bones": [ - { "name": "root", "y": -176.12 }, - { "name": "COG", "parent": "root", "y": 176.12 }, - { "name": "back", "parent": "COG", "length": 115.37, "x": 16.03, "y": 27.94, "rotation": 151.83 }, - { "name": "chest", "parent": "COG", "length": 31.24, "x": 52.52, "y": 15.34, "rotation": 161.7 }, - { "name": "neck", "parent": "COG", "length": 41.36, "x": 64.75, "y": 11.98, "rotation": 39.05 }, - { "name": "L_front_thigh", "parent": "chest", "length": 67.42, "x": -45.58, "y": 7.92, "rotation": 138.94 }, - { "name": "L_wing", "parent": "chest", "length": 301.12, "x": -7.24, "y": -24.65, "rotation": -75.51 }, - { "name": "R_front_thigh", "parent": "chest", "length": 81.63, "x": -10.89, "y": 28.25, "rotation": 67.96 }, - { "name": "R_rear_thigh", "parent": "back", "length": 123.46, "x": 65.31, "y": 59.89, "rotation": 104.87 }, - { "name": "chin", "parent": "neck", "length": 153.15, "x": 64.62, "y": -6.99, "rotation": -69.07 }, - { "name": "head", "parent": "neck", "length": 188.83, "x": 69.96, "y": 2.49, "rotation": 8.06 }, - { "name": "tail1", "parent": "back", "length": 65.65, "x": 115.37, "y": -0.19, "rotation": 44.31 }, - { "name": "L_front_leg", "parent": "L_front_thigh", "length": 51.57, "x": 67.42, "y": 0.02, "rotation": 43.36 }, - { "name": "L_rear_thigh", "parent": "R_rear_thigh", "length": 88.05, "x": -8.59, "y": 30.18, "rotation": 28.35 }, - { "name": "R_front_leg", "parent": "R_front_thigh", "length": 66.52, "x": 83.04, "y": -0.3, "rotation": 92.7 }, - { "name": "R_rear_leg", "parent": "R_rear_thigh", "length": 91.06, "x": 123.46, "y": -0.26, "rotation": -129.04 }, - { "name": "R_wing", "parent": "head", "length": 359.5, "x": -74.68, "y": 20.9, "rotation": 83.21 }, - { "name": "tail2", "parent": "tail1", "length": 54.5, "x": 65.65, "y": 0.22, "rotation": 12 }, - { "name": "L_front_toe1", "parent": "L_front_leg", "length": 51.44, "x": 45.53, "y": 2.43, "rotation": -98 }, - { "name": "L_front_toe2", "parent": "L_front_leg", "length": 61.97, "x": 51.57, "y": -0.12, "rotation": -55.26 }, - { "name": "L_front_toe3", "parent": "L_front_leg", "length": 45.65, "x": 54.19, "y": 0.6, "rotation": -11.13 }, - { "name": "L_front_toe4", "parent": "L_front_leg", "length": 53.47, "x": 50.6, "y": 7.08, "rotation": 19.42 }, - { "name": "L_rear_leg", "parent": "L_rear_thigh", "length": 103.74, "x": 96.04, "y": -0.97, "rotation": -122.41 }, - { "name": "R_front_toe1", "parent": "R_front_leg", "length": 46.65, "x": 70.03, "y": 5.31, "rotation": 8.59 }, - { "name": "R_front_toe2", "parent": "R_front_leg", "length": 53.66, "x": 66.52, "y": 0.33, "rotation": -35.02 }, - { "name": "R_front_toe3", "parent": "R_front_leg", "length": 58.38, "x": 62.1, "y": -0.79, "rotation": -74.67 }, - { "name": "R_rear_toe1", "parent": "R_rear_leg", "length": 94.99, "x": 90.06, "y": 2.12, "rotation": 141.98 }, - { "name": "R_rear_toe2", "parent": "R_rear_leg", "length": 99.29, "x": 89.6, "y": 1.52, "rotation": 125.32 }, - { "name": "R_rear_toe3", "parent": "R_rear_leg", "length": 103.45, "x": 91.06, "y": -0.35, "rotation": 112.26 }, - { "name": "tail3", "parent": "tail2", "length": 41.78, "x": 54.5, "y": 0.37, "rotation": 1.8 }, - { "name": "tail4", "parent": "tail3", "length": 34.19, "x": 41.78, "y": 0.16, "rotation": -1.8 }, - { "name": "tail5", "parent": "tail4", "length": 32.32, "x": 34.19, "y": -0.19, "rotation": -3.15 }, - { "name": "tail6", "parent": "tail5", "length": 80.08, "x": 32.32, "y": -0.23, "rotation": -29.55 } -], -"slots": [ - { "name": "L_rear_leg", "bone": "L_rear_leg", "attachment": "L_rear_leg" }, - { "name": "L_rear_thigh", "bone": "L_rear_thigh", "attachment": "L_rear_thigh" }, - { "name": "L_wing", "bone": "L_wing", "attachment": "L_wing01" }, - { "name": "tail6", "bone": "tail6", "attachment": "tail06" }, - { "name": "tail5", "bone": "tail5", "attachment": "tail05" }, - { "name": "tail4", "bone": "tail4", "attachment": "tail04" }, - { "name": "tail3", "bone": "tail3", "attachment": "tail03" }, - { "name": "tail2", "bone": "tail2", "attachment": "tail02" }, - { "name": "tail1", "bone": "tail1", "attachment": "tail01" }, - { "name": "back", "bone": "back", "attachment": "back" }, - { "name": "L_front_thigh", "bone": "L_front_thigh", "attachment": "L_front_thigh" }, - { "name": "L_front_leg", "bone": "L_front_leg", "attachment": "L_front_leg" }, - { "name": "L_front_toe1", "bone": "L_front_toe1", "attachment": "front_toeA" }, - { "name": "L_front_toe4", "bone": "L_front_toe4", "attachment": "front_toeB" }, - { "name": "L_front_toe3", "bone": "L_front_toe3", "attachment": "front_toeB" }, - { "name": "L_front_toe2", "bone": "L_front_toe2", "attachment": "front_toeB" }, - { "name": "chest", "bone": "chest", "attachment": "chest" }, - { "name": "R_rear_toe1", "bone": "R_rear_toe1", "attachment": "rear-toe" }, - { "name": "R_rear_toe2", "bone": "R_rear_toe2", "attachment": "rear-toe" }, - { "name": "R_rear_toe3", "bone": "R_rear_toe3", "attachment": "rear-toe" }, - { "name": "R_rear_leg", "bone": "R_rear_leg", "attachment": "R_rear_leg" }, - { "name": "R_rear_thigh", "bone": "R_rear_thigh", "attachment": "R_rear_thigh" }, - { "name": "R_front_toe1", "bone": "R_front_toe1", "attachment": "front_toeB" }, - { "name": "R_front_thigh", "bone": "R_front_thigh", "attachment": "R_front_thigh" }, - { "name": "R_front_leg", "bone": "R_front_leg", "attachment": "R_front_leg" }, - { "name": "R_front_toe2", "bone": "R_front_toe2", "attachment": "front_toeB" }, - { "name": "R_front_toe3", "bone": "R_front_toe3", "attachment": "front_toeB" }, - { "name": "chin", "bone": "chin", "attachment": "chin" }, - { "name": "R_wing", "bone": "R_wing", "attachment": "R_wing01" }, - { "name": "head", "bone": "head", "attachment": "head" }, - { "name": "logo", "bone": "root", "attachment": "logo" } -], -"skins": { - "default": { - "L_front_leg": { - "L_front_leg": { "x": 14.68, "y": 0.48, "rotation": 15.99, "width": 84, "height": 57 } - }, - "L_front_thigh": { - "L_front_thigh": { "x": 27.66, "y": -11.58, "rotation": 58.66, "width": 84, "height": 72 } - }, - "L_front_toe1": { - "front_toeA": { "x": 31.92, "y": 0.61, "rotation": 109.55, "width": 29, "height": 50 } - }, - "L_front_toe2": { - "front_toeB": { "x": 26.83, "y": -4.94, "rotation": 109.51, "width": 56, "height": 57 } - }, - "L_front_toe3": { - "front_toeB": { "x": 18.21, "y": -7.21, "scaleX": 0.94, "scaleY": 0.94, "rotation": 99.71, "width": 56, "height": 57 } - }, - "L_front_toe4": { - "front_toeB": { "x": 23.21, "y": -11.68, "rotation": 79.89, "width": 56, "height": 57 } - }, - "L_rear_leg": { - "L_rear_leg": { "x": 67.29, "y": 12.62, "rotation": -162.65, "width": 206, "height": 177 } - }, - "L_rear_thigh": { - "L_rear_thigh": { "x": 56.03, "y": 27.38, "rotation": 74.93, "width": 91, "height": 149 } - }, - "L_wing": { - "L_wing01": { "x": 129.21, "y": -45.49, "rotation": -83.7, "width": 191, "height": 256 }, - "L_wing02": { "x": 126.37, "y": -31.69, "rotation": -86.18, "width": 179, "height": 269 }, - "L_wing03": { "x": 110.26, "y": -90.89, "rotation": -86.18, "width": 186, "height": 207 }, - "L_wing04": { "x": -61.61, "y": -83.26, "rotation": -86.18, "width": 188, "height": 135 }, - "L_wing05": { "x": -90.01, "y": -78.14, "rotation": -86.18, "width": 218, "height": 213 }, - "L_wing06": { "x": -143.76, "y": -83.71, "rotation": -86.18, "width": 192, "height": 331 }, - "L_wing07": { "x": -133.04, "y": -33.89, "rotation": -86.18, "width": 159, "height": 255 }, - "L_wing08": { "x": 50.15, "y": -15.71, "rotation": -86.18, "width": 164, "height": 181 }, - "L_wing09": { "x": 85.94, "y": -11.32, "rotation": -86.18, "width": 204, "height": 167 } - }, - "R_front_leg": { - "R_front_leg": { "x": 17.79, "y": 4.22, "rotation": 37.62, "width": 101, "height": 89 } - }, - "R_front_thigh": { - "R_front_thigh": { "x": 35.28, "y": 2.11, "rotation": 130.33, "width": 108, "height": 108 } - }, - "R_front_toe1": { - "front_toeB": { "x": 24.49, "y": -2.61, "rotation": 104.18, "width": 56, "height": 57 } - }, - "R_front_toe2": { - "front_toeB": { "x": 26.39, "y": 1.16, "rotation": 104.57, "width": 56, "height": 57 } - }, - "R_front_toe3": { - "front_toeB": { "x": 30.66, "y": -0.06, "rotation": 112.29, "width": 56, "height": 57 } - }, - "R_rear_leg": { - "R_rear_leg": { "x": 60.87, "y": -5.72, "rotation": -127.66, "width": 116, "height": 100 } - }, - "R_rear_thigh": { - "R_rear_thigh": { "x": 53.25, "y": 12.58, "rotation": 103.29, "width": 91, "height": 149 } - }, - "R_rear_toe1": { - "rear-toe": { "x": 54.75, "y": -5.72, "rotation": 134.79, "width": 109, "height": 77 } - }, - "R_rear_toe2": { - "rear-toe": { "x": 57.02, "y": -7.22, "rotation": 134.42, "width": 109, "height": 77 } - }, - "R_rear_toe3": { - "rear-toe": { "x": 47.46, "y": -7.64, "rotation": 134.34, "width": 109, "height": 77 } - }, - "R_wing": { - "R_wing01": { "x": 170.08, "y": -23.67, "rotation": -130.33, "width": 219, "height": 310 }, - "R_wing02": { "x": 171.14, "y": -19.33, "rotation": -130.33, "width": 203, "height": 305 }, - "R_wing03": { "x": 166.46, "y": 29.23, "rotation": -130.33, "width": 272, "height": 247 }, - "R_wing04": { "x": 42.94, "y": 134.05, "rotation": -130.33, "width": 279, "height": 144 }, - "R_wing05": { "x": -8.83, "y": 142.59, "rotation": -130.33, "width": 251, "height": 229 }, - "R_wing06": { "x": -123.33, "y": 111.22, "rotation": -130.33, "width": 200, "height": 366 }, - "R_wing07": { "x": -40.17, "y": 118.03, "rotation": -130.33, "width": 200, "height": 263 }, - "R_wing08": { "x": 48.01, "y": 28.76, "rotation": -130.33, "width": 234, "height": 254 }, - "R_wing09": { "x": 128.1, "y": 21.12, "rotation": -130.33, "width": 248, "height": 204 } - }, - "back": { - "back": { "x": 35.84, "y": 19.99, "rotation": -151.83, "width": 190, "height": 185 } - }, - "chest": { - "chest": { "x": -14.6, "y": 24.78, "rotation": -161.7, "width": 136, "height": 122 } - }, - "chin": { - "chin": { "x": 66.55, "y": 7.32, "rotation": 30.01, "width": 214, "height": 146 } - }, - "head": { - "head": { "x": 76.68, "y": 32.21, "rotation": -47.12, "width": 296, "height": 260 } - }, - "logo": { - "logo": { "y": -176.72, "width": 897, "height": 92 } - }, - "tail1": { - "tail01": { "x": 22.59, "y": -4.5, "rotation": 163.85, "width": 120, "height": 153 } - }, - "tail2": { - "tail02": { "x": 18.11, "y": -1.75, "rotation": 151.84, "width": 95, "height": 120 } - }, - "tail3": { - "tail03": { "x": 16.94, "y": -2, "rotation": 150.04, "width": 73, "height": 92 } - }, - "tail4": { - "tail04": { "x": 15.34, "y": -2.17, "rotation": 151.84, "width": 56, "height": 71 } - }, - "tail5": { - "tail05": { "x": 15.05, "y": -3.57, "rotation": 155, "width": 52, "height": 59 } - }, - "tail6": { - "tail06": { "x": 28.02, "y": -16.83, "rotation": -175.44, "width": 95, "height": 68 } - } - } -}, -"animations": { - "flying": { - "bones": { - "back": { - "rotate": [ - { "time": 0, "angle": 0 }, - { "time": 0.1666, "angle": 17.39 }, - { "time": 0.5, "angle": 0 }, - { "time": 0.8333, "angle": 7 }, - { "time": 1, "angle": 0 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.5, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 1, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.5, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 1, "x": 1, "y": 1 } - ] - }, - "neck": { - "rotate": [ - { "time": 0, "angle": 0 }, - { "time": 0.1666, "angle": -8.18 }, - { "time": 0.3333, "angle": -23.16 }, - { "time": 0.5, "angle": -18.01 }, - { "time": 1, "angle": 0 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.5, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 1, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.5, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 1, "x": 1, "y": 1 } - ] - }, - "chest": { - "rotate": [ - { "time": 0, "angle": 0, "curve": "stepped" }, - { "time": 0.5, "angle": 0, "curve": "stepped" }, - { "time": 1, "angle": 0 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.5, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 1, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.5, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 1, "x": 1, "y": 1 } - ] - }, - "tail1": { - "rotate": [ - { "time": 0, "angle": 0 }, - { "time": 0.1666, "angle": -2.42 }, - { "time": 0.3333, "angle": -26.2 }, - { "time": 0.5, "angle": -29.65 }, - { "time": 0.6666, "angle": -23.15 }, - { "time": 0.8333, "angle": -55.46 }, - { "time": 1, "angle": 0 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.5, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 1, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.5, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 1, "x": 1, "y": 1 } - ] - }, - "R_rear_thigh": { - "rotate": [ - { "time": 0, "angle": 0, "curve": "stepped" }, - { "time": 0.5, "angle": 0, "curve": "stepped" }, - { "time": 1, "angle": 0 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.5, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 1, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.5, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 1, "x": 1, "y": 1 } - ] - }, - "tail2": { - "rotate": [ - { "time": 0, "angle": 0 }, - { "time": 0.1666, "angle": -1.12 }, - { "time": 0.3333, "angle": 10.48 }, - { "time": 0.5, "angle": 7.89 }, - { "time": 0.8333, "angle": -10.38 }, - { "time": 1, "angle": 0 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.5, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 1, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.5, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 1, "x": 1, "y": 1 } - ] - }, - "tail3": { - "rotate": [ - { "time": 0, "angle": 0 }, - { "time": 0.1666, "angle": 8.24 }, - { "time": 0.3333, "angle": 15.21 }, - { "time": 0.5, "angle": 14.84 }, - { "time": 0.8333, "angle": -18.9 }, - { "time": 1, "angle": 0 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.5, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 1, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.5, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 1, "x": 1, "y": 1 } - ] - }, - "tail4": { - "rotate": [ - { "time": 0, "angle": 0 }, - { "time": 0.1666, "angle": 17.46 }, - { "time": 0.3333, "angle": 22.15 }, - { "time": 0.5, "angle": 22.76 }, - { "time": 0.8333, "angle": -4.37 }, - { "time": 1, "angle": 0 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.5, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 1, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.5, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 1, "x": 1, "y": 1 } - ] - }, - "tail5": { - "rotate": [ - { "time": 0, "angle": 0 }, - { "time": 0.1666, "angle": 7.4 }, - { "time": 0.3333, "angle": 28.5 }, - { "time": 0.5, "angle": 21.33 }, - { "time": 0.8333, "angle": -1.27 }, - { "time": 1, "angle": 0 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.5, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 1, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.5, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 1, "x": 1, "y": 1 } - ] - }, - "tail6": { - "rotate": [ - { "time": 0, "angle": 0 }, - { "time": 0.1666, "angle": 45.99 }, - { "time": 0.4, "angle": 43.53 }, - { "time": 0.5, "angle": 61.79 }, - { "time": 0.8333, "angle": 13.28 }, - { "time": 1, "angle": 0 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.5, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 1, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.5, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 1, "x": 1, "y": 1 } - ] - }, - "R_rear_leg": { - "rotate": [ - { "time": 0, "angle": 0 }, - { "time": 0.1666, "angle": -14.21 }, - { "time": 0.5, "angle": 47.17 }, - { "time": 1, "angle": 0 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.5, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 1, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.5, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 1, "x": 1, "y": 1 } - ] - }, - "R_rear_toe3": { - "rotate": [ - { "time": 0, "angle": 0 }, - { "time": 0.5, "angle": -36.06 }, - { "time": 1, "angle": 0 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.5, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 1, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.5, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 1, "x": 1, "y": 1 } - ] - }, - "R_rear_toe2": { - "rotate": [ - { "time": 0, "angle": 0 }, - { "time": 0.5, "angle": -20.32 }, - { "time": 1, "angle": 0 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.5, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 1, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.5, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 1, "x": 1, "y": 1 } - ] - }, - "R_rear_toe1": { - "rotate": [ - { "time": 0, "angle": 0 }, - { "time": 0.5, "angle": -18.71 }, - { "time": 1, "angle": 0 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.5, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 1, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.5, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 1, "x": 1, "y": 1 } - ] - }, - "head": { - "rotate": [ - { - "time": 0, - "angle": 0, - "curve": [ 0.408, 1.36, 0.675, 1.43 ] - }, - { "time": 0.5, "angle": 1.03 }, - { "time": 1, "angle": 0 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.5, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 1, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.5, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 1, "x": 1, "y": 1 } - ] - }, - "chin": { - "rotate": [ - { - "time": 0, - "angle": 0, - "curve": [ 0.416, 1.15, 0.494, 1.27 ] - }, - { "time": 0.3333, "angle": -5.15 }, - { "time": 0.5, "angle": 9.79 }, - { "time": 0.6666, "angle": 18.94 }, - { "time": 1, "angle": 0 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.5, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 1, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.5, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 1, "x": 1, "y": 1 } - ] - }, - "L_front_thigh": { - "rotate": [ - { "time": 0, "angle": 0 }, - { "time": 0.1666, "angle": -19.18 }, - { "time": 0.3333, "angle": -32.02 }, - { "time": 0.5, "angle": -19.62 }, - { "time": 1, "angle": 0 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.5, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 1, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.5, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 1, "x": 1, "y": 1 } - ] - }, - "R_front_thigh": { - "rotate": [ - { "time": 0, "angle": 0 }, - { "time": 0.1666, "angle": -12.96 }, - { "time": 0.5, "angle": 16.2 }, - { "time": 1, "angle": 0 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.5, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 1, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.5, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 1, "x": 1, "y": 1 } - ] - }, - "L_front_leg": { - "rotate": [ - { "time": 0, "angle": 0 }, - { "time": 0.1666, "angle": 37.77 }, - { "time": 0.5, "angle": 0, "curve": "stepped" }, - { "time": 1, "angle": 0 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.5, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 1, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.5, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 1, "x": 1, "y": 1 } - ] - }, - "L_front_toe1": { - "rotate": [ - { "time": 0, "angle": 0 }, - { "time": 0.1666, "angle": -16.08 }, - { "time": 0.5, "angle": 0, "curve": "stepped" }, - { "time": 1, "angle": 0 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.5, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 1, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.5, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 1, "x": 1, "y": 1 } - ] - }, - "L_front_toe2": { - "rotate": [ - { "time": 0, "angle": 0, "curve": "stepped" }, - { "time": 0.5, "angle": 0, "curve": "stepped" }, - { "time": 1, "angle": 0 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.5, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 1, "x": 0, "y": 0 } - ] - }, - "L_front_toe4": { - "rotate": [ - { "time": 0, "angle": 0 }, - { "time": 0.5, "angle": 26.51 }, - { "time": 1, "angle": 0 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.5, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 1, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - }, - "L_front_toe3": { - "rotate": [ - { "time": 0, "angle": 0 }, - { "time": 0.5, "angle": 16.99 }, - { "time": 1, "angle": 0 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.5, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 1, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - }, - "R_front_leg": { - "rotate": [ - { "time": 0, "angle": 0 }, - { "time": 0.1666, "angle": 26.07 }, - { "time": 0.5, "angle": -21.6 }, - { "time": 1, "angle": 0 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.5, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 1, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.5, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 1, "x": 1, "y": 1 } - ] - }, - "R_front_toe1": { - "rotate": [ - { "time": 0, "angle": 0 }, - { "time": 0.1666, "angle": 29.23 }, - { "time": 0.5, "angle": 34.83 }, - { "time": 1, "angle": 0 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.5, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 1, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - }, - "R_front_toe2": { - "rotate": [ - { "time": 0, "angle": 0 }, - { "time": 0.1666, "angle": 24.89 }, - { "time": 0.5, "angle": 23.16 }, - { "time": 1, "angle": 0 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.5, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 1, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - }, - "R_front_toe3": { - "rotate": [ - { "time": 0, "angle": 0 }, - { "time": 0.1666, "angle": 11.01 }, - { "time": 0.5, "angle": 0, "curve": "stepped" }, - { "time": 1, "angle": 0 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.5, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 1, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - }, - "L_rear_leg": { - "rotate": [ - { "time": 0, "angle": 0 }, - { "time": 0.3666, "angle": 25.19 }, - { "time": 0.6666, "angle": -15.65 }, - { "time": 1, "angle": 0 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - }, - "COG": { - "rotate": [ - { - "time": 0, - "angle": 0, - "curve": [ 0.456, 0.2, 0.422, 1.06 ] - }, - { "time": 0.3333, "angle": 23.93 }, - { - "time": 0.6666, - "angle": 337.8, - "curve": [ 0.41, 0, 0.887, 0.75 ] - }, - { "time": 1, "angle": 0 } - ], - "translate": [ - { - "time": 0, - "x": 0, - "y": 0, - "curve": [ 0.33, 1, 0.816, 1.33 ] - }, - { - "time": 0.5, - "x": 0, - "y": 113.01, - "curve": [ 0.396, 0, 0.709, 2.03 ] - }, - { "time": 1, "x": 0, "y": 0 } - ] - } - }, - "slots": { - "L_wing": { - "attachment": [ - { "time": 0, "name": "L_wing01" }, - { "time": 0.0666, "name": "L_wing02" }, - { "time": 0.1333, "name": "L_wing03" }, - { "time": 0.2, "name": "L_wing04" }, - { "time": 0.2666, "name": "L_wing05" }, - { "time": 0.3333, "name": "L_wing06" }, - { "time": 0.4, "name": "L_wing07" }, - { "time": 0.4666, "name": "L_wing08" }, - { "time": 0.5333, "name": "L_wing09" }, - { "time": 0.6, "name": "L_wing01" }, - { "time": 0.7333, "name": "L_wing02" }, - { "time": 0.8, "name": "L_wing03" }, - { "time": 0.8333, "name": "L_wing04" }, - { "time": 0.8666, "name": "L_wing05" }, - { "time": 0.9, "name": "L_wing06" }, - { "time": 0.9333, "name": "L_wing07" }, - { "time": 0.9666, "name": "L_wing08" }, - { "time": 1, "name": "L_wing09" } - ] - }, - "R_wing": { - "attachment": [ - { "time": 0, "name": "R_wing01" }, - { "time": 0.0666, "name": "R_wing02" }, - { "time": 0.1333, "name": "R_wing03" }, - { "time": 0.2, "name": "R_wing04" }, - { "time": 0.2666, "name": "R_wing05" }, - { "time": 0.3333, "name": "R_wing06" }, - { "time": 0.4, "name": "R_wing07" }, - { "time": 0.4666, "name": "R_wing08" }, - { "time": 0.5333, "name": "R_wing09" }, - { "time": 0.6, "name": "R_wing01" }, - { "time": 0.7333, "name": "R_wing02" }, - { "time": 0.7666, "name": "R_wing02" }, - { "time": 0.8, "name": "R_wing03" }, - { "time": 0.8333, "name": "R_wing04" }, - { "time": 0.8666, "name": "R_wing05" }, - { "time": 0.9, "name": "R_wing06" }, - { "time": 0.9333, "name": "R_wing07" }, - { "time": 0.9666, "name": "R_wing08" }, - { "time": 1, "name": "R_wing09" } - ] - } - } - } -} -} \ No newline at end of file diff --git a/spine-corona/examples/dragon/dragon.lua b/spine-corona/examples/dragon/dragon.lua deleted file mode 100644 index e5eec84a8..000000000 --- a/spine-corona/examples/dragon/dragon.lua +++ /dev/null @@ -1,40 +0,0 @@ - --- This is a more complex animation that has a number of image changes. --- Note the exported dragon project was modified to not use non-uniform scaling. - -local spine = require "spine-corona.spine" - -local json = spine.SkeletonJson.new() -json.scale = 0.47 -local skeletonData = json:readSkeletonDataFile("examples/dragon/dragon.json") - -local skeleton = spine.Skeleton.new(skeletonData) -function skeleton:createImage (attachment) - return display.newImage("examples/dragon/images/" .. attachment.name .. ".png") -end -skeleton.group.x = 165 -skeleton.group.y = 225 -skeleton.flipX = false -skeleton.flipY = false -skeleton.debug = true -- Omit or set to false to not draw debug lines on top of the images. -skeleton:setToSetupPose() - --- AnimationStateData defines crossfade durations between animations. -local stateData = spine.AnimationStateData.new(skeletonData) --- AnimationState has a queue of animations and can apply them with crossfading. -local state = spine.AnimationState.new(stateData) -state:setAnimationByName(0, "flying", true, 0) - -local lastTime = 0 -local animationTime = 0 -Runtime:addEventListener("enterFrame", function (event) - -- Compute time in seconds since last frame. - local currentTime = event.time / 1000 - local delta = currentTime - lastTime - lastTime = currentTime - - -- Update the state with the delta time, apply it, and update the world transforms. - state:update(delta) - state:apply(skeleton) - skeleton:updateWorldTransform() -end) diff --git a/spine-corona/examples/dragon/images/L_front_leg.png b/spine-corona/examples/dragon/images/L_front_leg.png deleted file mode 100644 index 4a8b204d2..000000000 Binary files a/spine-corona/examples/dragon/images/L_front_leg.png and /dev/null differ diff --git a/spine-corona/examples/dragon/images/L_front_thigh.png b/spine-corona/examples/dragon/images/L_front_thigh.png deleted file mode 100644 index 5b691a879..000000000 Binary files a/spine-corona/examples/dragon/images/L_front_thigh.png and /dev/null differ diff --git a/spine-corona/examples/dragon/images/L_rear_leg.png b/spine-corona/examples/dragon/images/L_rear_leg.png deleted file mode 100644 index fc00ab6ea..000000000 Binary files a/spine-corona/examples/dragon/images/L_rear_leg.png and /dev/null differ diff --git a/spine-corona/examples/dragon/images/L_rear_thigh.png b/spine-corona/examples/dragon/images/L_rear_thigh.png deleted file mode 100644 index 4c363aa38..000000000 Binary files a/spine-corona/examples/dragon/images/L_rear_thigh.png and /dev/null differ diff --git a/spine-corona/examples/dragon/images/L_wing01.png b/spine-corona/examples/dragon/images/L_wing01.png deleted file mode 100644 index 3a12127ee..000000000 Binary files a/spine-corona/examples/dragon/images/L_wing01.png and /dev/null differ diff --git a/spine-corona/examples/dragon/images/L_wing02.png b/spine-corona/examples/dragon/images/L_wing02.png deleted file mode 100644 index 831d7ca9a..000000000 Binary files a/spine-corona/examples/dragon/images/L_wing02.png and /dev/null differ diff --git a/spine-corona/examples/dragon/images/L_wing03.png b/spine-corona/examples/dragon/images/L_wing03.png deleted file mode 100644 index 702c43f78..000000000 Binary files a/spine-corona/examples/dragon/images/L_wing03.png and /dev/null differ diff --git a/spine-corona/examples/dragon/images/L_wing04.png b/spine-corona/examples/dragon/images/L_wing04.png deleted file mode 100644 index 5cba4670b..000000000 Binary files a/spine-corona/examples/dragon/images/L_wing04.png and /dev/null differ diff --git a/spine-corona/examples/dragon/images/L_wing05.png b/spine-corona/examples/dragon/images/L_wing05.png deleted file mode 100644 index d8d18c2a6..000000000 Binary files a/spine-corona/examples/dragon/images/L_wing05.png and /dev/null differ diff --git a/spine-corona/examples/dragon/images/L_wing06.png b/spine-corona/examples/dragon/images/L_wing06.png deleted file mode 100644 index 788c70b3f..000000000 Binary files a/spine-corona/examples/dragon/images/L_wing06.png and /dev/null differ diff --git a/spine-corona/examples/dragon/images/L_wing07.png b/spine-corona/examples/dragon/images/L_wing07.png deleted file mode 100644 index c055793f7..000000000 Binary files a/spine-corona/examples/dragon/images/L_wing07.png and /dev/null differ diff --git a/spine-corona/examples/dragon/images/L_wing08.png b/spine-corona/examples/dragon/images/L_wing08.png deleted file mode 100644 index dc16d0081..000000000 Binary files a/spine-corona/examples/dragon/images/L_wing08.png and /dev/null differ diff --git a/spine-corona/examples/dragon/images/L_wing09.png b/spine-corona/examples/dragon/images/L_wing09.png deleted file mode 100644 index 97e915803..000000000 Binary files a/spine-corona/examples/dragon/images/L_wing09.png and /dev/null differ diff --git a/spine-corona/examples/dragon/images/R_front_leg.png b/spine-corona/examples/dragon/images/R_front_leg.png deleted file mode 100644 index bcc28eece..000000000 Binary files a/spine-corona/examples/dragon/images/R_front_leg.png and /dev/null differ diff --git a/spine-corona/examples/dragon/images/R_front_thigh.png b/spine-corona/examples/dragon/images/R_front_thigh.png deleted file mode 100644 index fbf13cfe0..000000000 Binary files a/spine-corona/examples/dragon/images/R_front_thigh.png and /dev/null differ diff --git a/spine-corona/examples/dragon/images/R_rear_leg.png b/spine-corona/examples/dragon/images/R_rear_leg.png deleted file mode 100644 index c2cc5e72f..000000000 Binary files a/spine-corona/examples/dragon/images/R_rear_leg.png and /dev/null differ diff --git a/spine-corona/examples/dragon/images/R_rear_thigh.png b/spine-corona/examples/dragon/images/R_rear_thigh.png deleted file mode 100644 index ade9cde61..000000000 Binary files a/spine-corona/examples/dragon/images/R_rear_thigh.png and /dev/null differ diff --git a/spine-corona/examples/dragon/images/R_wing01.png b/spine-corona/examples/dragon/images/R_wing01.png deleted file mode 100644 index 873bf075f..000000000 Binary files a/spine-corona/examples/dragon/images/R_wing01.png and /dev/null differ diff --git a/spine-corona/examples/dragon/images/R_wing02.png b/spine-corona/examples/dragon/images/R_wing02.png deleted file mode 100644 index 60dd18943..000000000 Binary files a/spine-corona/examples/dragon/images/R_wing02.png and /dev/null differ diff --git a/spine-corona/examples/dragon/images/R_wing03.png b/spine-corona/examples/dragon/images/R_wing03.png deleted file mode 100644 index 1cf2e1c79..000000000 Binary files a/spine-corona/examples/dragon/images/R_wing03.png and /dev/null differ diff --git a/spine-corona/examples/dragon/images/R_wing04.png b/spine-corona/examples/dragon/images/R_wing04.png deleted file mode 100644 index 316aa4e61..000000000 Binary files a/spine-corona/examples/dragon/images/R_wing04.png and /dev/null differ diff --git a/spine-corona/examples/dragon/images/R_wing05.png b/spine-corona/examples/dragon/images/R_wing05.png deleted file mode 100644 index 73fdb42e6..000000000 Binary files a/spine-corona/examples/dragon/images/R_wing05.png and /dev/null differ diff --git a/spine-corona/examples/dragon/images/R_wing06.png b/spine-corona/examples/dragon/images/R_wing06.png deleted file mode 100644 index 931ca659b..000000000 Binary files a/spine-corona/examples/dragon/images/R_wing06.png and /dev/null differ diff --git a/spine-corona/examples/dragon/images/R_wing07.png b/spine-corona/examples/dragon/images/R_wing07.png deleted file mode 100644 index 3d7af824b..000000000 Binary files a/spine-corona/examples/dragon/images/R_wing07.png and /dev/null differ diff --git a/spine-corona/examples/dragon/images/R_wing08.png b/spine-corona/examples/dragon/images/R_wing08.png deleted file mode 100644 index f6d28d383..000000000 Binary files a/spine-corona/examples/dragon/images/R_wing08.png and /dev/null differ diff --git a/spine-corona/examples/dragon/images/R_wing09.png b/spine-corona/examples/dragon/images/R_wing09.png deleted file mode 100644 index f97a87653..000000000 Binary files a/spine-corona/examples/dragon/images/R_wing09.png and /dev/null differ diff --git a/spine-corona/examples/dragon/images/back.png b/spine-corona/examples/dragon/images/back.png deleted file mode 100644 index 05531bc55..000000000 Binary files a/spine-corona/examples/dragon/images/back.png and /dev/null differ diff --git a/spine-corona/examples/dragon/images/chest.png b/spine-corona/examples/dragon/images/chest.png deleted file mode 100644 index 6e3ba44ec..000000000 Binary files a/spine-corona/examples/dragon/images/chest.png and /dev/null differ diff --git a/spine-corona/examples/dragon/images/chin.png b/spine-corona/examples/dragon/images/chin.png deleted file mode 100644 index 68c76488a..000000000 Binary files a/spine-corona/examples/dragon/images/chin.png and /dev/null differ diff --git a/spine-corona/examples/dragon/images/front_toeA.png b/spine-corona/examples/dragon/images/front_toeA.png deleted file mode 100644 index f021032ec..000000000 Binary files a/spine-corona/examples/dragon/images/front_toeA.png and /dev/null differ diff --git a/spine-corona/examples/dragon/images/front_toeB.png b/spine-corona/examples/dragon/images/front_toeB.png deleted file mode 100644 index 0b48c237c..000000000 Binary files a/spine-corona/examples/dragon/images/front_toeB.png and /dev/null differ diff --git a/spine-corona/examples/dragon/images/head.png b/spine-corona/examples/dragon/images/head.png deleted file mode 100644 index 5e4e436fa..000000000 Binary files a/spine-corona/examples/dragon/images/head.png and /dev/null differ diff --git a/spine-corona/examples/dragon/images/license.txt b/spine-corona/examples/dragon/images/license.txt deleted file mode 100644 index 41ebddd5b..000000000 --- a/spine-corona/examples/dragon/images/license.txt +++ /dev/null @@ -1,5 +0,0 @@ -Copyright (c) 2013, ODI EntertainmenT - -The project file and images in this "dragon" project are provided for -demonstration purposes only and may not be redistributed for any reason nor -used as the basis for derivative work. \ No newline at end of file diff --git a/spine-corona/examples/dragon/images/logo.png b/spine-corona/examples/dragon/images/logo.png deleted file mode 100644 index cf43dad28..000000000 Binary files a/spine-corona/examples/dragon/images/logo.png and /dev/null differ diff --git a/spine-corona/examples/dragon/images/rear-toe.png b/spine-corona/examples/dragon/images/rear-toe.png deleted file mode 100644 index e4c7fa870..000000000 Binary files a/spine-corona/examples/dragon/images/rear-toe.png and /dev/null differ diff --git a/spine-corona/examples/dragon/images/tail01.png b/spine-corona/examples/dragon/images/tail01.png deleted file mode 100644 index e9bcef7fc..000000000 Binary files a/spine-corona/examples/dragon/images/tail01.png and /dev/null differ diff --git a/spine-corona/examples/dragon/images/tail02.png b/spine-corona/examples/dragon/images/tail02.png deleted file mode 100644 index 8b31a9362..000000000 Binary files a/spine-corona/examples/dragon/images/tail02.png and /dev/null differ diff --git a/spine-corona/examples/dragon/images/tail03.png b/spine-corona/examples/dragon/images/tail03.png deleted file mode 100644 index aa09539f8..000000000 Binary files a/spine-corona/examples/dragon/images/tail03.png and /dev/null differ diff --git a/spine-corona/examples/dragon/images/tail04.png b/spine-corona/examples/dragon/images/tail04.png deleted file mode 100644 index 2aeeed4fe..000000000 Binary files a/spine-corona/examples/dragon/images/tail04.png and /dev/null differ diff --git a/spine-corona/examples/dragon/images/tail05.png b/spine-corona/examples/dragon/images/tail05.png deleted file mode 100644 index f41005c53..000000000 Binary files a/spine-corona/examples/dragon/images/tail05.png and /dev/null differ diff --git a/spine-corona/examples/dragon/images/tail06.png b/spine-corona/examples/dragon/images/tail06.png deleted file mode 100644 index 31f68a4d2..000000000 Binary files a/spine-corona/examples/dragon/images/tail06.png and /dev/null differ diff --git a/spine-corona/examples/goblins/goblins.json b/spine-corona/examples/goblins/goblins.json deleted file mode 100644 index f1dcc96a0..000000000 --- a/spine-corona/examples/goblins/goblins.json +++ /dev/null @@ -1,499 +0,0 @@ -{ -"bones": [ - { "name": "root" }, - { "name": "hip", "parent": "root", "x": 0.64, "y": 114.41 }, - { "name": "left upper leg", "parent": "hip", "length": 50.39, "x": 14.45, "y": 2.81, "rotation": -89.09 }, - { "name": "left lower leg", "parent": "left upper leg", "length": 49.89, "x": 56.34, "y": 0.98, "rotation": -16.65 }, - { "name": "left foot", "parent": "left lower leg", "length": 46.5, "x": 58.94, "y": -7.61, "rotation": 102.43 }, - { "name": "right upper leg", "parent": "hip", "length": 42.45, "x": -20.07, "y": -6.83, "rotation": -97.49 }, - { "name": "right lower leg", "parent": "right upper leg", "length": 58.52, "x": 42.99, "y": -0.61, "rotation": -14.34 }, - { "name": "right foot", "parent": "right lower leg", "length": 45.45, "x": 64.88, "y": 0.04, "rotation": 110.3 }, - { "name": "torso", "parent": "hip", "length": 85.82, "x": -6.42, "y": 1.97, "rotation": 93.92 }, - { "name": "neck", "parent": "torso", "length": 18.38, "x": 81.67, "y": -6.34, "rotation": -1.51 }, - { "name": "head", "parent": "neck", "length": 68.28, "x": 20.93, "y": 11.59, "rotation": -13.92 }, - { "name": "right shoulder", "parent": "torso", "length": 37.24, "x": 76.02, "y": 18.14, "rotation": 133.88 }, - { "name": "right arm", "parent": "right shoulder", "length": 36.74, "x": 37.6, "y": 0.31, "rotation": 36.32 }, - { "name": "right hand", "parent": "right arm", "length": 15.32, "x": 36.9, "y": 0.34, "rotation": 2.35 }, - { "name": "left shoulder", "parent": "torso", "length": 35.43, "x": 74.04, "y": -20.38, "rotation": -156.96 }, - { "name": "left arm", "parent": "left shoulder", "length": 35.62, "x": 37.85, "y": -2.34, "rotation": 28.16 }, - { "name": "left hand", "parent": "left arm", "length": 11.52, "x": 35.62, "y": 0.07, "rotation": 2.7 }, - { "name": "pelvis", "parent": "hip", "x": 1.41, "y": -6.57 } -], -"slots": [ - { "name": "left shoulder", "bone": "left shoulder", "attachment": "left shoulder" }, - { "name": "left arm", "bone": "left arm", "attachment": "left arm" }, - { "name": "left hand item", "bone": "left hand", "attachment": "spear" }, - { "name": "left hand", "bone": "left hand", "attachment": "left hand" }, - { "name": "left foot", "bone": "left foot", "attachment": "left foot" }, - { "name": "left lower leg", "bone": "left lower leg", "attachment": "left lower leg" }, - { "name": "left upper leg", "bone": "left upper leg", "attachment": "left upper leg" }, - { "name": "neck", "bone": "neck", "attachment": "neck" }, - { "name": "torso", "bone": "torso", "attachment": "torso" }, - { "name": "pelvis", "bone": "pelvis", "attachment": "pelvis" }, - { "name": "right foot", "bone": "right foot", "attachment": "right foot" }, - { "name": "right lower leg", "bone": "right lower leg", "attachment": "right lower leg" }, - { "name": "undie straps", "bone": "pelvis", "attachment": "undie straps" }, - { "name": "undies", "bone": "pelvis", "attachment": "undies" }, - { "name": "right upper leg", "bone": "right upper leg", "attachment": "right upper leg" }, - { "name": "head", "bone": "head", "attachment": "head" }, - { "name": "eyes", "bone": "head" }, - { "name": "right shoulder", "bone": "right shoulder", "attachment": "right shoulder" }, - { "name": "right arm", "bone": "right arm", "attachment": "right arm" }, - { "name": "right hand item", "bone": "right hand", "attachment": "dagger" }, - { "name": "right hand", "bone": "right hand", "attachment": "right hand" } -], -"skins": { - "default": { - "left hand item": { - "dagger": { "x": 7.88, "y": -23.45, "rotation": 10.47, "width": 26, "height": 108 }, - "spear": { "x": -4.55, "y": 39.2, "rotation": 13.04, "width": 22, "height": 368 } - }, - "right hand item": { - "dagger": { "x": 6.51, "y": -24.15, "rotation": -8.06, "width": 26, "height": 108 } - } - }, - "goblin": { - "neck": { - "neck": { "name": "goblin/neck", "x": 10.1, "y": 0.42, "rotation": -93.69, "width": 36, "height": 41 } - }, - "undies": { - "undies": { "name": "goblin/undies", "x": 6.3, "y": 0.12, "rotation": 0.91, "width": 36, "height": 29 } - }, - "right hand": { - "right hand": { "name": "goblin/right-hand", "x": 7.88, "y": 2.78, "rotation": 91.96, "width": 36, "height": 37 } - }, - "right arm": { - "right arm": { "name": "goblin/right-arm", "x": 16.44, "y": -1.04, "rotation": 94.32, "width": 23, "height": 50 } - }, - "head": { - "head": { "name": "goblin/head", "x": 25.73, "y": 2.33, "rotation": -92.29, "width": 103, "height": 66 } - }, - "left shoulder": { - "left shoulder": { "name": "goblin/left-shoulder", "x": 15.56, "y": -2.26, "rotation": 62.01, "width": 29, "height": 44 } - }, - "left arm": { - "left arm": { - "name": "goblin/left-arm", - "x": 16.7, - "y": -1.69, - "scaleX": 1.057, - "scaleY": 1.057, - "rotation": 33.84, - "width": 37, - "height": 35 - } - }, - "left hand": { - "left hand": { - "name": "goblin/left-hand", - "x": 3.47, - "y": 3.41, - "scaleX": 0.892, - "scaleY": 0.892, - "rotation": 31.14, - "width": 36, - "height": 41 - } - }, - "right lower leg": { - "right lower leg": { "name": "goblin/right-lower-leg", "x": 25.68, "y": -3.15, "rotation": 111.83, "width": 36, "height": 76 } - }, - "right upper leg": { - "right upper leg": { "name": "goblin/right-upper-leg", "x": 20.35, "y": 1.47, "rotation": 97.49, "width": 34, "height": 63 } - }, - "pelvis": { - "pelvis": { "name": "goblin/pelvis", "x": -5.61, "y": 0.76, "width": 62, "height": 43 } - }, - "left lower leg": { - "left lower leg": { "name": "goblin/left-lower-leg", "x": 23.58, "y": -2.06, "rotation": 105.75, "width": 33, "height": 70 } - }, - "left upper leg": { - "left upper leg": { "name": "goblin/left-upper-leg", "x": 29.68, "y": -3.87, "rotation": 89.09, "width": 33, "height": 73 } - }, - "torso": { - "torso": { "name": "goblin/torso", "x": 38.09, "y": -3.87, "rotation": -94.95, "width": 68, "height": 96 } - }, - "right shoulder": { - "right shoulder": { "name": "goblin/right-shoulder", "x": 15.68, "y": -1.03, "rotation": 130.65, "width": 39, "height": 45 } - }, - "right foot": { - "right foot": { "name": "goblin/right-foot", "x": 23.56, "y": 9.8, "rotation": 1.52, "width": 63, "height": 33 } - }, - "left foot": { - "left foot": { "name": "goblin/left-foot", "x": 24.85, "y": 8.74, "rotation": 3.32, "width": 65, "height": 31 } - }, - "undie straps": { - "undie straps": { "name": "goblin/undie-straps", "x": -3.87, "y": 13.1, "scaleX": 1.089, "width": 55, "height": 19 } - }, - "eyes": { - "eyes closed": { "name": "goblin/eyes-closed", "x": 32.21, "y": -21.27, "rotation": -88.92, "width": 34, "height": 12 } - } - }, - "goblingirl": { - "left upper leg": { - "left upper leg": { "name": "goblingirl/left-upper-leg", "x": 30.21, "y": -2.95, "rotation": 89.09, "width": 33, "height": 70 } - }, - "left lower leg": { - "left lower leg": { "name": "goblingirl/left-lower-leg", "x": 25.02, "y": -0.6, "rotation": 105.75, "width": 33, "height": 70 } - }, - "left foot": { - "left foot": { "name": "goblingirl/left-foot", "x": 25.17, "y": 7.92, "rotation": 3.32, "width": 65, "height": 31 } - }, - "right upper leg": { - "right upper leg": { "name": "goblingirl/right-upper-leg", "x": 19.69, "y": 2.13, "rotation": 97.49, "width": 34, "height": 63 } - }, - "right lower leg": { - "right lower leg": { "name": "goblingirl/right-lower-leg", "x": 26.15, "y": -3.27, "rotation": 111.83, "width": 36, "height": 76 } - }, - "right foot": { - "right foot": { "name": "goblingirl/right-foot", "x": 23.46, "y": 9.66, "rotation": 1.52, "width": 63, "height": 33 } - }, - "torso": { - "torso": { "name": "goblingirl/torso", "x": 36.28, "y": -5.14, "rotation": -95.74, "width": 68, "height": 96 } - }, - "left shoulder": { - "left shoulder": { "name": "goblingirl/left-shoulder", "x": 19.8, "y": -0.42, "rotation": 61.21, "width": 28, "height": 46 } - }, - "left arm": { - "left arm": { "name": "goblingirl/left-arm", "x": 19.64, "y": -2.42, "rotation": 33.05, "width": 37, "height": 35 } - }, - "left hand": { - "left hand": { - "name": "goblingirl/left-hand", - "x": 4.34, - "y": 2.39, - "scaleX": 0.896, - "scaleY": 0.896, - "rotation": 30.34, - "width": 35, - "height": 40 - } - }, - "neck": { - "neck": { "name": "goblingirl/neck", "x": 6.16, "y": -3.14, "rotation": -98.86, "width": 35, "height": 41 } - }, - "head": { - "head": { "name": "goblingirl/head", "x": 27.71, "y": -4.32, "rotation": -85.58, "width": 103, "height": 81 } - }, - "right shoulder": { - "right shoulder": { "name": "goblingirl/right-shoulder", "x": 14.46, "y": 0.45, "rotation": 129.85, "width": 39, "height": 45 } - }, - "right arm": { - "right arm": { "name": "goblingirl/right-arm", "x": 16.85, "y": -0.66, "rotation": 93.52, "width": 28, "height": 50 } - }, - "right hand": { - "right hand": { "name": "goblingirl/right-hand", "x": 7.21, "y": 3.43, "rotation": 91.16, "width": 36, "height": 37 } - }, - "pelvis": { - "pelvis": { "name": "goblingirl/pelvis", "x": -3.87, "y": 3.18, "width": 62, "height": 43 } - }, - "undie straps": { - "undie straps": { "name": "goblingirl/undie-straps", "x": -1.51, "y": 14.18, "width": 55, "height": 19 } - }, - "undies": { - "undies": { "name": "goblingirl/undies", "x": 5.4, "y": 1.7, "width": 36, "height": 29 } - }, - "eyes": { - "eyes closed": { "name": "goblingirl/eyes-closed", "x": 28, "y": -25.54, "rotation": -87.04, "width": 37, "height": 21 } - } - } -}, -"animations": { - "walk": { - "bones": { - "left upper leg": { - "rotate": [ - { "time": 0, "angle": -26.55 }, - { "time": 0.1333, "angle": -8.78 }, - { "time": 0.2333, "angle": 9.51 }, - { "time": 0.3666, "angle": 30.74 }, - { "time": 0.5, "angle": 25.33 }, - { "time": 0.6333, "angle": 26.11 }, - { "time": 0.7333, "angle": -7.7 }, - { "time": 0.8666, "angle": -21.19 }, - { "time": 1, "angle": -26.55 } - ], - "translate": [ - { "time": 0, "x": -1.32, "y": 1.7 }, - { "time": 0.3666, "x": -0.06, "y": 2.42 }, - { "time": 1, "x": -1.32, "y": 1.7 } - ] - }, - "right upper leg": { - "rotate": [ - { "time": 0, "angle": 42.45 }, - { "time": 0.1333, "angle": 52.1 }, - { "time": 0.2333, "angle": 8.53 }, - { "time": 0.5, "angle": -16.93 }, - { "time": 0.6333, "angle": 1.89 }, - { - "time": 0.7333, - "angle": 28.06, - "curve": [ 0.462, 0.11, 1, 1 ] - }, - { - "time": 0.8666, - "angle": 58.68, - "curve": [ 0.5, 0.02, 1, 1 ] - }, - { "time": 1, "angle": 42.45 } - ], - "translate": [ - { "time": 0, "x": 6.23, "y": 0 }, - { "time": 0.2333, "x": 2.14, "y": 2.4 }, - { "time": 0.5, "x": 2.44, "y": 4.8 }, - { "time": 1, "x": 6.23, "y": 0 } - ] - }, - "left lower leg": { - "rotate": [ - { "time": 0, "angle": -22.98 }, - { "time": 0.1333, "angle": -63.5 }, - { "time": 0.2333, "angle": -73.76 }, - { "time": 0.5, "angle": 5.11 }, - { "time": 0.6333, "angle": -28.29 }, - { "time": 0.7333, "angle": 4.08 }, - { "time": 0.8666, "angle": 3.53 }, - { "time": 1, "angle": -22.98 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 }, - { "time": 0.2333, "x": 2.55, "y": -0.47 }, - { "time": 0.5, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 1, "x": 0, "y": 0 } - ] - }, - "left foot": { - "rotate": [ - { "time": 0, "angle": -3.69 }, - { "time": 0.1333, "angle": -10.42 }, - { "time": 0.2333, "angle": -5.01 }, - { "time": 0.3666, "angle": 3.87 }, - { "time": 0.5, "angle": -3.87 }, - { "time": 0.6333, "angle": 2.78 }, - { "time": 0.7333, "angle": 1.68 }, - { "time": 0.8666, "angle": -8.54 }, - { "time": 1, "angle": -3.69 } - ] - }, - "right shoulder": { - "rotate": [ - { - "time": 0, - "angle": 5.29, - "curve": [ 0.264, 0, 0.75, 1 ] - }, - { "time": 0.6333, "angle": 6.65 }, - { "time": 1, "angle": 5.29 } - ] - }, - "right arm": { - "rotate": [ - { - "time": 0, - "angle": -4.02, - "curve": [ 0.267, 0, 0.804, 0.99 ] - }, - { - "time": 0.6333, - "angle": 19.78, - "curve": [ 0.307, 0, 0.787, 0.99 ] - }, - { "time": 1, "angle": -4.02 } - ] - }, - "right hand": { - "rotate": [ - { "time": 0, "angle": 8.98 }, - { "time": 0.6333, "angle": 0.51 }, - { "time": 1, "angle": 8.98 } - ] - }, - "left shoulder": { - "rotate": [ - { - "time": 0, - "angle": 6.25, - "curve": [ 0.339, 0, 0.683, 1 ] - }, - { - "time": 0.5, - "angle": -11.78, - "curve": [ 0.281, 0, 0.686, 0.99 ] - }, - { "time": 1, "angle": 6.25 } - ], - "translate": [ - { "time": 0, "x": 1.15, "y": 0.23 } - ] - }, - "left hand": { - "rotate": [ - { - "time": 0, - "angle": -21.23, - "curve": [ 0.295, 0, 0.755, 0.98 ] - }, - { - "time": 0.5, - "angle": -27.28, - "curve": [ 0.241, 0, 0.75, 0.97 ] - }, - { "time": 1, "angle": -21.23 } - ] - }, - "left arm": { - "rotate": [ - { - "time": 0, - "angle": 28.37, - "curve": [ 0.339, 0, 0.683, 1 ] - }, - { - "time": 0.5, - "angle": 60.09, - "curve": [ 0.281, 0, 0.686, 0.99 ] - }, - { "time": 1, "angle": 28.37 } - ] - }, - "torso": { - "rotate": [ - { "time": 0, "angle": -10.28 }, - { - "time": 0.1333, - "angle": -15.38, - "curve": [ 0.545, 0, 0.818, 1 ] - }, - { - "time": 0.3666, - "angle": -9.78, - "curve": [ 0.58, 0.17, 0.669, 0.99 ] - }, - { - "time": 0.6333, - "angle": -15.75, - "curve": [ 0.235, 0.01, 0.795, 1 ] - }, - { - "time": 0.8666, - "angle": -7.06, - "curve": [ 0.209, 0, 0.816, 0.98 ] - }, - { "time": 1, "angle": -10.28 } - ], - "translate": [ - { "time": 0, "x": -1.29, "y": 1.68 } - ] - }, - "right foot": { - "rotate": [ - { "time": 0, "angle": -5.25 }, - { "time": 0.2333, "angle": -1.91 }, - { "time": 0.3666, "angle": -6.45 }, - { "time": 0.5, "angle": -5.39 }, - { "time": 0.7333, "angle": -11.68 }, - { "time": 0.8666, "angle": 0.46 }, - { "time": 1, "angle": -5.25 } - ] - }, - "right lower leg": { - "rotate": [ - { - "time": 0, - "angle": -3.39, - "curve": [ 0.316, 0.01, 0.741, 0.98 ] - }, - { - "time": 0.1333, - "angle": -45.53, - "curve": [ 0.229, 0, 0.738, 0.97 ] - }, - { "time": 0.2333, "angle": -4.83 }, - { "time": 0.5, "angle": -19.53 }, - { "time": 0.6333, "angle": -64.8 }, - { - "time": 0.7333, - "angle": -82.56, - "curve": [ 0.557, 0.18, 1, 1 ] - }, - { "time": 1, "angle": -3.39 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.5, "x": 0, "y": 0 }, - { "time": 0.6333, "x": 2.18, "y": 0.21 }, - { "time": 1, "x": 0, "y": 0 } - ] - }, - "hip": { - "rotate": [ - { "time": 0, "angle": 0, "curve": "stepped" }, - { "time": 1, "angle": 0 } - ], - "translate": [ - { "time": 0, "x": 0, "y": -4.16 }, - { - "time": 0.1333, - "x": 0, - "y": -7.05, - "curve": [ 0.359, 0.47, 0.646, 0.74 ] - }, - { "time": 0.3666, "x": 0, "y": 6.78 }, - { "time": 0.5, "x": 0, "y": -6.13 }, - { - "time": 0.6333, - "x": 0, - "y": -7.05, - "curve": [ 0.359, 0.47, 0.646, 0.74 ] - }, - { "time": 0.8666, "x": 0, "y": 6.78 }, - { "time": 1, "x": 0, "y": -4.16 } - ] - }, - "neck": { - "rotate": [ - { "time": 0, "angle": 3.6 }, - { "time": 0.1333, "angle": 17.49 }, - { "time": 0.2333, "angle": 6.1 }, - { "time": 0.3666, "angle": 3.45 }, - { "time": 0.5, "angle": 5.17 }, - { "time": 0.6333, "angle": 18.36 }, - { "time": 0.7333, "angle": 6.09 }, - { "time": 0.8666, "angle": 2.28 }, - { "time": 1, "angle": 3.6 } - ] - }, - "head": { - "rotate": [ - { - "time": 0, - "angle": 3.6, - "curve": [ 0, 0, 0.704, 1.17 ] - }, - { "time": 0.1333, "angle": -0.2 }, - { "time": 0.2333, "angle": 6.1 }, - { "time": 0.3666, "angle": 3.45 }, - { - "time": 0.5, - "angle": 5.17, - "curve": [ 0, 0, 0.704, 1.61 ] - }, - { "time": 0.6666, "angle": 1.1 }, - { "time": 0.7333, "angle": 6.09 }, - { "time": 0.8666, "angle": 2.28 }, - { "time": 1, "angle": 3.6 } - ] - } - }, - "slots": { - "eyes": { - "attachment": [ - { "time": 0.7, "name": "eyes closed" }, - { "time": 0.8, "name": null } - ] - } - } - } -} -} \ No newline at end of file diff --git a/spine-corona/examples/goblins/goblins.lua b/spine-corona/examples/goblins/goblins.lua deleted file mode 100644 index 63ac89fb8..000000000 --- a/spine-corona/examples/goblins/goblins.lua +++ /dev/null @@ -1,40 +0,0 @@ - --- This example shows how to use skins. - -local spine = require "spine-corona.spine" - -local json = spine.SkeletonJson.new() -json.scale = 1 -local skeletonData = json:readSkeletonDataFile("examples/goblins/goblins.json") - -local skeleton = spine.Skeleton.new(skeletonData) -function skeleton:createImage (attachment) - return display.newImage("examples/goblins/images/" .. attachment.name .. ".png") -end -skeleton.group.x = 150 -skeleton.group.y = 325 -skeleton.flipX = false -skeleton.flipY = false -skeleton.debug = true -- Omit or set to false to not draw debug lines on top of the images. -skeleton:setSkin("goblingirl") -skeleton:setToSetupPose() -- Required after changing skin to attach attachments from skin. - --- AnimationState has a queue of animations and can apply them with crossfading. -local stateData = spine.AnimationStateData.new(skeletonData) -local state = spine.AnimationState.new(stateData) -state:setAnimationByName(0, "walk", true, 0) - -local lastTime = 0 -local animationTime = 0 -Runtime:addEventListener("enterFrame", function (event) - -- Compute time in seconds since last frame. - local currentTime = event.time / 1000 - local delta = currentTime - lastTime - lastTime = currentTime - - -- Update the state with the delta time, apply it, and update the world transforms. - state:update(delta) - state:apply(skeleton) - skeleton:updateWorldTransform() -end) - diff --git a/spine-corona/examples/goblins/images/dagger.png b/spine-corona/examples/goblins/images/dagger.png deleted file mode 100644 index 9a666d631..000000000 Binary files a/spine-corona/examples/goblins/images/dagger.png and /dev/null differ diff --git a/spine-corona/examples/goblins/images/goblin/eyes-closed.png b/spine-corona/examples/goblins/images/goblin/eyes-closed.png deleted file mode 100644 index e306dd40f..000000000 Binary files a/spine-corona/examples/goblins/images/goblin/eyes-closed.png and /dev/null differ diff --git a/spine-corona/examples/goblins/images/goblin/head.png b/spine-corona/examples/goblins/images/goblin/head.png deleted file mode 100644 index 82b49f7fa..000000000 Binary files a/spine-corona/examples/goblins/images/goblin/head.png and /dev/null differ diff --git a/spine-corona/examples/goblins/images/goblin/left-arm.png b/spine-corona/examples/goblins/images/goblin/left-arm.png deleted file mode 100644 index 42f60e0aa..000000000 Binary files a/spine-corona/examples/goblins/images/goblin/left-arm.png and /dev/null differ diff --git a/spine-corona/examples/goblins/images/goblin/left-foot.png b/spine-corona/examples/goblins/images/goblin/left-foot.png deleted file mode 100644 index 89c142b7c..000000000 Binary files a/spine-corona/examples/goblins/images/goblin/left-foot.png and /dev/null differ diff --git a/spine-corona/examples/goblins/images/goblin/left-hand.png b/spine-corona/examples/goblins/images/goblin/left-hand.png deleted file mode 100644 index 39700f014..000000000 Binary files a/spine-corona/examples/goblins/images/goblin/left-hand.png and /dev/null differ diff --git a/spine-corona/examples/goblins/images/goblin/left-lower-leg.png b/spine-corona/examples/goblins/images/goblin/left-lower-leg.png deleted file mode 100644 index dd3e83b67..000000000 Binary files a/spine-corona/examples/goblins/images/goblin/left-lower-leg.png and /dev/null differ diff --git a/spine-corona/examples/goblins/images/goblin/left-shoulder.png b/spine-corona/examples/goblins/images/goblin/left-shoulder.png deleted file mode 100644 index 220b09cbf..000000000 Binary files a/spine-corona/examples/goblins/images/goblin/left-shoulder.png and /dev/null differ diff --git a/spine-corona/examples/goblins/images/goblin/left-upper-leg.png b/spine-corona/examples/goblins/images/goblin/left-upper-leg.png deleted file mode 100644 index a031cf682..000000000 Binary files a/spine-corona/examples/goblins/images/goblin/left-upper-leg.png and /dev/null differ diff --git a/spine-corona/examples/goblins/images/goblin/neck.png b/spine-corona/examples/goblins/images/goblin/neck.png deleted file mode 100644 index f4f3f04dc..000000000 Binary files a/spine-corona/examples/goblins/images/goblin/neck.png and /dev/null differ diff --git a/spine-corona/examples/goblins/images/goblin/pelvis.png b/spine-corona/examples/goblins/images/goblin/pelvis.png deleted file mode 100644 index a8fc15c0d..000000000 Binary files a/spine-corona/examples/goblins/images/goblin/pelvis.png and /dev/null differ diff --git a/spine-corona/examples/goblins/images/goblin/right-arm.png b/spine-corona/examples/goblins/images/goblin/right-arm.png deleted file mode 100644 index c7b752bb2..000000000 Binary files a/spine-corona/examples/goblins/images/goblin/right-arm.png and /dev/null differ diff --git a/spine-corona/examples/goblins/images/goblin/right-foot.png b/spine-corona/examples/goblins/images/goblin/right-foot.png deleted file mode 100644 index ce982d310..000000000 Binary files a/spine-corona/examples/goblins/images/goblin/right-foot.png and /dev/null differ diff --git a/spine-corona/examples/goblins/images/goblin/right-hand.png b/spine-corona/examples/goblins/images/goblin/right-hand.png deleted file mode 100644 index 2363fba02..000000000 Binary files a/spine-corona/examples/goblins/images/goblin/right-hand.png and /dev/null differ diff --git a/spine-corona/examples/goblins/images/goblin/right-lower-leg.png b/spine-corona/examples/goblins/images/goblin/right-lower-leg.png deleted file mode 100644 index b9bb49654..000000000 Binary files a/spine-corona/examples/goblins/images/goblin/right-lower-leg.png and /dev/null differ diff --git a/spine-corona/examples/goblins/images/goblin/right-shoulder.png b/spine-corona/examples/goblins/images/goblin/right-shoulder.png deleted file mode 100644 index 48baa266c..000000000 Binary files a/spine-corona/examples/goblins/images/goblin/right-shoulder.png and /dev/null differ diff --git a/spine-corona/examples/goblins/images/goblin/right-upper-leg.png b/spine-corona/examples/goblins/images/goblin/right-upper-leg.png deleted file mode 100644 index d5fac4424..000000000 Binary files a/spine-corona/examples/goblins/images/goblin/right-upper-leg.png and /dev/null differ diff --git a/spine-corona/examples/goblins/images/goblin/torso.png b/spine-corona/examples/goblins/images/goblin/torso.png deleted file mode 100644 index f9b4314ae..000000000 Binary files a/spine-corona/examples/goblins/images/goblin/torso.png and /dev/null differ diff --git a/spine-corona/examples/goblins/images/goblin/undie-straps.png b/spine-corona/examples/goblins/images/goblin/undie-straps.png deleted file mode 100644 index 6088d3544..000000000 Binary files a/spine-corona/examples/goblins/images/goblin/undie-straps.png and /dev/null differ diff --git a/spine-corona/examples/goblins/images/goblin/undies.png b/spine-corona/examples/goblins/images/goblin/undies.png deleted file mode 100644 index 95016babd..000000000 Binary files a/spine-corona/examples/goblins/images/goblin/undies.png and /dev/null differ diff --git a/spine-corona/examples/goblins/images/goblingirl/eyes-closed.png b/spine-corona/examples/goblins/images/goblingirl/eyes-closed.png deleted file mode 100644 index d6826843c..000000000 Binary files a/spine-corona/examples/goblins/images/goblingirl/eyes-closed.png and /dev/null differ diff --git a/spine-corona/examples/goblins/images/goblingirl/head.png b/spine-corona/examples/goblins/images/goblingirl/head.png deleted file mode 100644 index 5434995f4..000000000 Binary files a/spine-corona/examples/goblins/images/goblingirl/head.png and /dev/null differ diff --git a/spine-corona/examples/goblins/images/goblingirl/left-arm.png b/spine-corona/examples/goblins/images/goblingirl/left-arm.png deleted file mode 100644 index 00c5bbc0a..000000000 Binary files a/spine-corona/examples/goblins/images/goblingirl/left-arm.png and /dev/null differ diff --git a/spine-corona/examples/goblins/images/goblingirl/left-foot.png b/spine-corona/examples/goblins/images/goblingirl/left-foot.png deleted file mode 100644 index e1adb405e..000000000 Binary files a/spine-corona/examples/goblins/images/goblingirl/left-foot.png and /dev/null differ diff --git a/spine-corona/examples/goblins/images/goblingirl/left-hand.png b/spine-corona/examples/goblins/images/goblingirl/left-hand.png deleted file mode 100644 index e070bf29b..000000000 Binary files a/spine-corona/examples/goblins/images/goblingirl/left-hand.png and /dev/null differ diff --git a/spine-corona/examples/goblins/images/goblingirl/left-lower-leg.png b/spine-corona/examples/goblins/images/goblingirl/left-lower-leg.png deleted file mode 100644 index 346866ffc..000000000 Binary files a/spine-corona/examples/goblins/images/goblingirl/left-lower-leg.png and /dev/null differ diff --git a/spine-corona/examples/goblins/images/goblingirl/left-shoulder.png b/spine-corona/examples/goblins/images/goblingirl/left-shoulder.png deleted file mode 100644 index 0cb53d459..000000000 Binary files a/spine-corona/examples/goblins/images/goblingirl/left-shoulder.png and /dev/null differ diff --git a/spine-corona/examples/goblins/images/goblingirl/left-upper-leg.png b/spine-corona/examples/goblins/images/goblingirl/left-upper-leg.png deleted file mode 100644 index be09a9303..000000000 Binary files a/spine-corona/examples/goblins/images/goblingirl/left-upper-leg.png and /dev/null differ diff --git a/spine-corona/examples/goblins/images/goblingirl/neck.png b/spine-corona/examples/goblins/images/goblingirl/neck.png deleted file mode 100644 index 14b62b3cf..000000000 Binary files a/spine-corona/examples/goblins/images/goblingirl/neck.png and /dev/null differ diff --git a/spine-corona/examples/goblins/images/goblingirl/pelvis.png b/spine-corona/examples/goblins/images/goblingirl/pelvis.png deleted file mode 100644 index f24c2a7de..000000000 Binary files a/spine-corona/examples/goblins/images/goblingirl/pelvis.png and /dev/null differ diff --git a/spine-corona/examples/goblins/images/goblingirl/right-arm.png b/spine-corona/examples/goblins/images/goblingirl/right-arm.png deleted file mode 100644 index 5818fc627..000000000 Binary files a/spine-corona/examples/goblins/images/goblingirl/right-arm.png and /dev/null differ diff --git a/spine-corona/examples/goblins/images/goblingirl/right-foot.png b/spine-corona/examples/goblins/images/goblingirl/right-foot.png deleted file mode 100644 index 716f4f092..000000000 Binary files a/spine-corona/examples/goblins/images/goblingirl/right-foot.png and /dev/null differ diff --git a/spine-corona/examples/goblins/images/goblingirl/right-hand.png b/spine-corona/examples/goblins/images/goblingirl/right-hand.png deleted file mode 100644 index cd5eadce4..000000000 Binary files a/spine-corona/examples/goblins/images/goblingirl/right-hand.png and /dev/null differ diff --git a/spine-corona/examples/goblins/images/goblingirl/right-lower-leg.png b/spine-corona/examples/goblins/images/goblingirl/right-lower-leg.png deleted file mode 100644 index f1357209c..000000000 Binary files a/spine-corona/examples/goblins/images/goblingirl/right-lower-leg.png and /dev/null differ diff --git a/spine-corona/examples/goblins/images/goblingirl/right-shoulder.png b/spine-corona/examples/goblins/images/goblingirl/right-shoulder.png deleted file mode 100644 index 297a5fce3..000000000 Binary files a/spine-corona/examples/goblins/images/goblingirl/right-shoulder.png and /dev/null differ diff --git a/spine-corona/examples/goblins/images/goblingirl/right-upper-leg.png b/spine-corona/examples/goblins/images/goblingirl/right-upper-leg.png deleted file mode 100644 index d6dae75c5..000000000 Binary files a/spine-corona/examples/goblins/images/goblingirl/right-upper-leg.png and /dev/null differ diff --git a/spine-corona/examples/goblins/images/goblingirl/torso.png b/spine-corona/examples/goblins/images/goblingirl/torso.png deleted file mode 100644 index 2a92320d0..000000000 Binary files a/spine-corona/examples/goblins/images/goblingirl/torso.png and /dev/null differ diff --git a/spine-corona/examples/goblins/images/goblingirl/undie-straps.png b/spine-corona/examples/goblins/images/goblingirl/undie-straps.png deleted file mode 100644 index 36913d570..000000000 Binary files a/spine-corona/examples/goblins/images/goblingirl/undie-straps.png and /dev/null differ diff --git a/spine-corona/examples/goblins/images/goblingirl/undies.png b/spine-corona/examples/goblins/images/goblingirl/undies.png deleted file mode 100644 index ac3ac2ed6..000000000 Binary files a/spine-corona/examples/goblins/images/goblingirl/undies.png and /dev/null differ diff --git a/spine-corona/examples/goblins/images/spear.png b/spine-corona/examples/goblins/images/spear.png deleted file mode 100644 index 0704dc326..000000000 Binary files a/spine-corona/examples/goblins/images/spear.png and /dev/null differ diff --git a/spine-corona/examples/hero/hero.json b/spine-corona/examples/hero/hero.json deleted file mode 100644 index 5ceec665d..000000000 --- a/spine-corona/examples/hero/hero.json +++ /dev/null @@ -1 +0,0 @@ -{"skeleton":{"hash":"/c595Zn6OYuZT0GEQ7y1piry/xk","spine":"Dev","width":319.29,"height":337.01},"bones":[{"name":"root"},{"name":"Hip","parent":"root","y":94.88},{"name":"L_Ground","parent":"root","x":-31.28,"y":0.26},{"name":"LookTarget","parent":"root","x":112.83,"y":218.2},{"name":"R_Ground","parent":"root","x":28.11,"y":0.26},{"name":"L_Ankle","parent":"L_Ground","x":0.26,"y":33.05},{"name":"LookConstraintGoal","parent":"LookTarget","y":-43.82},{"name":"R_Ankle","parent":"R_Ground","y":31.79},{"name":"body","parent":"Hip","length":60.79,"x":4.09,"y":3.17,"rotation":96.39},{"name":"thigh1","parent":"Hip","length":23.94,"x":-17.51,"y":-5.22,"rotation":-107.07},{"name":"thigh2","parent":"Hip","length":23.65,"x":21.85,"y":-5.86,"rotation":-85.46},{"name":"head","parent":"body","length":24.35,"x":74.55,"y":-4.84,"rotation":-92.69},{"name":"mantles","parent":"body","x":48.47,"y":-9,"rotation":-2.25},{"name":"shin1","parent":"thigh1","length":28.23,"x":29.76,"y":-0.91,"rotation":10.26},{"name":"shin2","parent":"thigh2","length":25.35,"x":31.99,"y":2.96,"rotation":-2.25},{"name":"upperarm1","parent":"body","length":19.35,"x":52.49,"y":41.84,"rotation":130.11},{"name":"upperarm2","parent":"body","length":25.98,"x":57.94,"y":-38.93,"rotation":-178.95},{"name":"foot1","parent":"shin1","length":27.07,"x":28.17,"y":-0.48,"rotation":-90.96,"inheritRotation":false},{"name":"foot2","parent":"shin2","length":22.28,"x":25.54,"y":0.27,"rotation":-90.42,"inheritRotation":false},{"name":"forearm1","parent":"upperarm1","length":22.06,"x":23.97,"y":5.16,"rotation":30.56},{"name":"forearm2","parent":"upperarm2","length":15.3,"x":28.74,"y":-0.9,"rotation":6.79},{"name":"hand1","parent":"forearm1","length":28.01,"x":27.54,"y":0.44,"rotation":16.24},{"name":"hand2","parent":"forearm2","length":23.76,"x":22.8,"y":-0.21,"rotation":1.35},{"name":"weapon","parent":"hand2","length":157.4,"x":15.97,"y":1.43,"rotation":77.9}],"ik":[{"name":"L_Leg","bones":["thigh1","shin1"],"target":"L_Ankle","bendPositive":false},{"name":"R_Leg","bones":["thigh2","shin2"],"target":"R_Ankle","bendPositive":false},{"name":"LookConstraint","bones":["head"],"target":"LookConstraintGoal","mix":0}],"slots":[{"name":"upperarm2","bone":"upperarm2","attachment":"upperarm2"},{"name":"sword","bone":"root"},{"name":"hand2","bone":"hand2","attachment":"hand2"},{"name":"weapon","bone":"weapon","attachment":"sword"},{"name":"fingers","bone":"hand2","attachment":"fingers"},{"name":"forearm2","bone":"forearm2","attachment":"forearm2"},{"name":"thigh2","bone":"thigh2","attachment":"thigh2"},{"name":"foot2","bone":"foot2","attachment":"foot2"},{"name":"shin2","bone":"shin2","attachment":"shin2"},{"name":"thigh1","bone":"thigh1","attachment":"thigh1"},{"name":"foot1","bone":"foot1","attachment":"foot1"},{"name":"body","bone":"body","attachment":"body"},{"name":"shin1","bone":"shin1","attachment":"shin1"},{"name":"upperarm1","bone":"upperarm1","attachment":"upperarm1"},{"name":"mantles","bone":"mantles","attachment":"mantles"},{"name":"head","bone":"head","attachment":"head"},{"name":"mouth","bone":"head","attachment":"mouth"},{"name":"eyes","bone":"head","attachment":"eyes"},{"name":"forearm1","bone":"forearm1","attachment":"forearm1"},{"name":"hand1","bone":"hand1","attachment":"hand1"}],"skins":{"default":{"body":{"body":{"x":33.81,"y":2.59,"rotation":-92.7,"width":97,"height":95}},"eyes":{"eyes":{"x":6.48,"y":50.75,"rotation":0.12,"width":82,"height":31}},"fingers":{"fingers":{"x":16.21,"y":1.37,"rotation":82.36,"width":31,"height":33}},"foot1":{"foot1":{"x":12.55,"y":0.12,"rotation":90.96,"width":50,"height":42}},"foot2":{"foot2":{"x":8.83,"y":2.92,"rotation":90.42,"width":53,"height":38}},"forearm1":{"forearm1":{"x":11.88,"y":-5.04,"rotation":106.61,"width":41,"height":49}},"forearm2":{"forearm2":{"x":13.08,"y":-0.63,"rotation":83.71,"width":31,"height":32}},"hand1":{"hand1":{"x":11.92,"y":-0.7,"rotation":90.37,"width":37,"height":48}},"hand2":{"hand2":{"x":14.23,"y":1.64,"rotation":82.36,"width":31,"height":37}},"head":{"head":{"x":7.79,"y":71.87,"rotation":0.12,"width":172,"height":173}},"mantles":{"mantles":{"x":15.57,"y":11.76,"rotation":-90.45,"width":136,"height":55}},"mouth":{"mouth":{"x":12.07,"y":10.76,"rotation":0.12,"width":61,"height":13}},"shin1":{"shin1":{"x":8.95,"y":0.67,"rotation":96.8,"width":53,"height":57}},"shin2":{"shin2":{"x":2.25,"y":-2.94,"rotation":87.71,"width":51,"height":54}},"thigh1":{"thigh1":{"x":11.98,"y":-1.01,"rotation":107.07,"width":60,"height":63}},"thigh2":{"thigh2":{"x":15.7,"y":-4.61,"rotation":85.46,"width":57,"height":64}},"upperarm1":{"upperarm1":{"x":6.6,"y":0.05,"rotation":137.18,"width":50,"height":56}},"upperarm2":{"upperarm2":{"x":13.32,"y":-2.21,"rotation":90.45,"width":39,"height":59}},"weapon":{"sword":{"x":71.38,"y":0.2,"rotation":0.19,"width":216,"height":69}}}},"events":{"Footstep":{}},"animations":{"Attack":{"bones":{"root":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.4,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.4,"x":0,"y":0}]},"Hip":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.4,"angle":0}],"translate":[{"time":0,"x":-12.6,"y":-11.34},{"time":0.0666,"x":-20.75,"y":-23.08},{"time":0.1333,"x":-15.51,"y":-16.91},{"time":0.2,"x":-5.88,"y":-21.85},{"time":0.2666,"x":-7.08,"y":-25.29},{"time":0.4,"x":-12.6,"y":-11.34}]},"L_Ground":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.4,"angle":0}],"translate":[{"time":0,"x":51.94,"y":0,"curve":"stepped"},{"time":0.4,"x":51.94,"y":0}]},"R_Ground":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.4,"angle":0}],"translate":[{"time":0,"x":-67.98,"y":0,"curve":"stepped"},{"time":0.4,"x":-67.98,"y":0}]},"L_Ankle":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.4,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.4,"x":0,"y":0}]},"R_Ankle":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.4,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.4,"x":0,"y":0}]},"body":{"rotate":[{"time":0,"angle":2.2},{"time":0.0666,"angle":13.21},{"time":0.1333,"angle":-9.58},{"time":0.2,"angle":-23.58},{"time":0.2666,"angle":-32.14},{"time":0.4,"angle":2.2}],"translate":[{"time":0,"x":-0.76,"y":-1.89},{"time":0.1333,"x":4.86,"y":-0.24},{"time":0.2,"x":8.05,"y":-2.43},{"time":0.4,"x":-0.76,"y":-1.89}]},"thigh1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.4,"angle":0}],"translate":[{"time":0,"x":14.5,"y":-3.78,"curve":"stepped"},{"time":0.4,"x":14.5,"y":-3.78}]},"thigh2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.4,"angle":0}],"translate":[{"time":0,"x":-22.57,"y":1.51},{"time":0.2,"x":-13.26,"y":-2.4},{"time":0.4,"x":-22.57,"y":1.51}]},"head":{"rotate":[{"time":0,"angle":-19.21},{"time":0.0666,"angle":-19.17},{"time":0.1333,"angle":4.76},{"time":0.2,"angle":12.46},{"time":0.2666,"angle":12.57},{"time":0.4,"angle":-19.21}],"translate":[{"time":0,"x":0,"y":0},{"time":0.0666,"x":3.47,"y":5.7},{"time":0.2,"x":-4.55,"y":-12.27},{"time":0.4,"x":0,"y":0}]},"mantles":{"rotate":[{"time":0,"angle":-8.27},{"time":0.0666,"angle":5.32},{"time":0.1333,"angle":4.8},{"time":0.2,"angle":-2.43},{"time":0.2666,"angle":-12.35},{"time":0.4,"angle":-8.27}],"translate":[{"time":0,"x":0,"y":0},{"time":0.0666,"x":5.51,"y":-5.45},{"time":0.1333,"x":1.53,"y":-5.87},{"time":0.2,"x":0.46,"y":-6.11},{"time":0.2666,"x":-6.55,"y":-4.72},{"time":0.4,"x":0,"y":0}]},"shin1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.4,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.4,"x":0,"y":0}]},"shin2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.4,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.4,"x":0,"y":0}]},"upperarm1":{"rotate":[{"time":0,"angle":-4.05},{"time":0.0666,"angle":33.65},{"time":0.1333,"angle":-3.75},{"time":0.2666,"angle":-49.64},{"time":0.3333,"angle":-42.31},{"time":0.4,"angle":-4.05}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2,"x":-2.5,"y":-6.51},{"time":0.4,"x":0,"y":0}]},"upperarm2":{"rotate":[{"time":0,"angle":324.46},{"time":0.0666,"angle":101.05},{"time":0.1333,"angle":49.05},{"time":0.2,"angle":15.11},{"time":0.2666,"angle":313.18},{"time":0.4,"angle":324.46}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1333,"x":-2.1,"y":-8.13},{"time":0.2,"x":-10.56,"y":1.25},{"time":0.4,"x":0,"y":0}]},"foot1":{"rotate":[{"time":0,"angle":8.9,"curve":"stepped"},{"time":0.4,"angle":8.9}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.4,"x":0,"y":0}]},"foot2":{"rotate":[{"time":0,"angle":-13.11,"curve":"stepped"},{"time":0.4,"angle":-13.11}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.4,"x":0,"y":0}]},"forearm1":{"rotate":[{"time":0,"angle":7.93},{"time":0.0666,"angle":42.3},{"time":0.1333,"angle":21.87},{"time":0.3333,"angle":43.27},{"time":0.4,"angle":7.93}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.4,"x":0,"y":0}]},"forearm2":{"rotate":[{"time":0,"angle":56.31},{"time":0.0666,"angle":87.62},{"time":0.1333,"angle":6.51},{"time":0.2,"angle":1},{"time":0.2666,"angle":45.14},{"time":0.4,"angle":56.31}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.4,"x":0,"y":0}]},"hand1":{"rotate":[{"time":0,"angle":0},{"time":0.1333,"angle":-8.94},{"time":0.2666,"angle":-20.79},{"time":0.4,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.4,"x":0,"y":0}]},"hand2":{"rotate":[{"time":0,"angle":17.89},{"time":0.0666,"angle":-12.89},{"time":0.1333,"angle":-11.39},{"time":0.2,"angle":6.2},{"time":0.2666,"angle":18.96},{"time":0.4,"angle":17.89}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.4,"x":0,"y":0}]},"weapon":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.4,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.4,"x":0,"y":0}]}}},"Crouch":{"bones":{"upperarm2":{"rotate":[{"time":0,"angle":38.03},{"time":0.5,"angle":30.8},{"time":1,"angle":38.03}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"body":{"rotate":[{"time":0,"angle":-15.51,"curve":[0.25,0,0.75,1]},{"time":0.5,"angle":-11.54,"curve":[0.25,0,0.75,1]},{"time":1,"angle":-15.51}],"translate":[{"time":0,"x":-0.41,"y":-2.32,"curve":[0.25,0,0.75,1]},{"time":0.5,"x":-2.2,"y":-0.53,"curve":[0.25,0,0.75,1]},{"time":1,"x":-0.41,"y":-2.32}]},"head":{"rotate":[{"time":0,"angle":8.72},{"time":0.5,"angle":3.24},{"time":1,"angle":8.72}],"translate":[{"time":0,"x":-4.42,"y":-2.85,"curve":[0.361,0.63,0.697,1]},{"time":0.1666,"x":-4.84,"y":-3.05,"curve":[0.25,0,0.75,1]},{"time":0.6666,"x":-2.35,"y":-1.86,"curve":[0.36,0.43,0.701,0.8]},{"time":1,"x":-4.42,"y":-2.85}]},"Hip":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":-11.22,"y":-42.01,"curve":"stepped"},{"time":1,"x":-11.22,"y":-42.01}]},"mantles":{"rotate":[{"time":0,"angle":9.04},{"time":0.5,"angle":7.13},{"time":1,"angle":9.04}],"translate":[{"time":0,"x":-0.09,"y":0,"curve":"stepped"},{"time":1,"x":-0.09,"y":0}]},"L_Ground":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":-29.07,"y":1.18,"curve":"stepped"},{"time":1,"x":-29.07,"y":1.18}]},"R_Ground":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":16.23,"y":0,"curve":"stepped"},{"time":1,"x":16.23,"y":0}]},"upperarm1":{"rotate":[{"time":0,"angle":-5.42},{"time":0.5,"angle":-11.1},{"time":1,"angle":-5.42}],"translate":[{"time":0,"x":-6.94,"y":5.85,"curve":"stepped"},{"time":1,"x":-6.94,"y":5.85}]},"forearm1":{"rotate":[{"time":0,"angle":25.38},{"time":0.5,"angle":32.07},{"time":1,"angle":25.38}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"forearm2":{"rotate":[{"time":0,"angle":18.6},{"time":0.5,"angle":26.15},{"time":1,"angle":18.6}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"thigh2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":-2.75,"y":0,"curve":"stepped"},{"time":1,"x":-2.75,"y":0}]},"thigh1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":-0.92,"y":6.67,"curve":"stepped"},{"time":1,"x":-0.92,"y":6.67}]},"foot1":{"rotate":[{"time":0,"angle":270.13,"curve":"stepped"},{"time":1,"angle":270.13}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"foot2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"weapon":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"hand2":{"rotate":[{"time":0,"angle":-13.39},{"time":0.5,"angle":-17.28},{"time":1,"angle":-13.39}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"hand1":{"rotate":[{"time":0,"angle":-9.29},{"time":0.5,"angle":-1.97},{"time":1,"angle":-9.29}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"shin2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"shin1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"R_Ankle":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":-4.92,"curve":"stepped"},{"time":1,"x":0,"y":-4.92}]},"L_Ankle":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":-12.22,"curve":"stepped"},{"time":1,"x":0,"y":-12.22}]}}},"Fall":{"bones":{"R_Ground":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":13.15,"y":7.94,"curve":"stepped"},{"time":1,"x":13.15,"y":7.94}]},"L_Ground":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":35.34,"y":4.14,"curve":"stepped"},{"time":1,"x":35.34,"y":4.14}]},"foot1":{"rotate":[{"time":0,"angle":19.62,"curve":"stepped"},{"time":1,"angle":19.62}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"foot2":{"rotate":[{"time":0,"angle":39.16,"curve":"stepped"},{"time":1,"angle":39.16}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"Hip":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"thigh1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"thigh2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"body":{"rotate":[{"time":0,"angle":14.13,"curve":"stepped"},{"time":1,"angle":14.13}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"head":{"rotate":[{"time":0,"angle":-17.81,"curve":"stepped"},{"time":1,"angle":-17.81}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"upperarm1":{"rotate":[{"time":0,"angle":-25.71,"curve":"stepped"},{"time":1,"angle":-25.71}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"forearm1":{"rotate":[{"time":0,"angle":26.18,"curve":"stepped"},{"time":1,"angle":26.18}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"upperarm2":{"rotate":[{"time":0,"angle":37.75,"curve":"stepped"},{"time":1,"angle":37.75}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"forearm2":{"rotate":[{"time":0,"angle":12.3,"curve":"stepped"},{"time":1,"angle":12.3}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"L_Ankle":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"R_Ankle":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"mantles":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"shin1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"shin2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"hand1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"hand2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"weapon":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]}}},"Idle":{"bones":{"upperarm2":{"rotate":[{"time":0,"angle":0.46},{"time":0.5,"angle":358.79},{"time":1,"angle":0.46}],"translate":[{"time":0,"x":0,"y":0},{"time":0.5,"x":-3.12,"y":8.02},{"time":1,"x":0,"y":0}]},"body":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":1.66},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":[0.25,0,0.75,1]},{"time":0.5,"x":0,"y":-3.7,"curve":[0.25,0,0.75,1]},{"time":1,"x":0,"y":0}]},"head":{"rotate":[{"time":0,"angle":-4.18},{"time":0.5,"angle":-8.25},{"time":1,"angle":-4.18}],"translate":[{"time":0,"x":-1.06,"y":0,"curve":[0.382,0.57,0.735,1]},{"time":0.1666,"x":0,"y":0,"curve":[0.25,0,0.75,1]},{"time":0.6666,"x":-3.74,"y":0,"curve":[0.243,0,0.648,0.6]},{"time":1,"x":-1.06,"y":0}]},"Hip":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":-2.92,"curve":[0.25,0,0.75,1]},{"time":0.5,"x":-3.18,"y":-4.03,"curve":[0.25,0,0.75,1]},{"time":1,"x":0,"y":-2.92}]},"mantles":{"rotate":[{"time":0,"angle":0},{"time":0.4333,"angle":-4.83,"curve":[0.25,0,0.75,1]},{"time":1,"angle":0}],"translate":[{"time":0,"x":-0.09,"y":0,"curve":[0.3,0.21,0.755,1]},{"time":0.4333,"x":-1.41,"y":0,"curve":[0.25,0,0.75,1]},{"time":0.9333,"x":0,"y":0},{"time":1,"x":-0.09,"y":0}]},"L_Ground":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":-7.15,"y":0,"curve":"stepped"},{"time":1,"x":-7.15,"y":0}]},"R_Ground":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":5.94,"y":0,"curve":"stepped"},{"time":1,"x":5.94,"y":0}]},"upperarm1":{"rotate":[{"time":0,"angle":0,"curve":[0.404,0,0.75,1]},{"time":0.5,"angle":-15.4,"curve":[0.516,0,0.75,1]},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":[0.404,0,0.75,1]},{"time":0.5,"x":1.84,"y":-5,"curve":[0.516,0,0.75,1]},{"time":1,"x":0,"y":0}]},"forearm1":{"rotate":[{"time":0,"angle":0,"curve":[0.404,0,0.75,1]},{"time":0.5,"angle":9.63,"curve":[0.516,0,0.75,1]},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"forearm2":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":13.63},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"thigh2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"thigh1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"foot1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"foot2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"weapon":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"hand2":{"rotate":[{"time":0,"angle":0},{"time":0.5,"angle":-8.65},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"hand1":{"rotate":[{"time":0,"angle":0,"curve":[0.404,0,0.75,1]},{"time":0.5,"angle":12.36,"curve":[0.516,0,0.75,1]},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"shin2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"shin1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"R_Ankle":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"L_Ankle":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]}}},"Jump":{"bones":{"R_Ground":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":-6.83,"y":12.06,"curve":"stepped"},{"time":1,"x":-6.83,"y":12.06}]},"L_Ground":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":2.41,"y":1.2,"curve":"stepped"},{"time":1,"x":2.41,"y":1.2}]},"foot1":{"rotate":[{"time":0,"angle":-32.23,"curve":"stepped"},{"time":1,"angle":-32.23}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"foot2":{"rotate":[{"time":0,"angle":-33.3,"curve":"stepped"},{"time":1,"angle":-33.3}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"Hip":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"thigh1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"thigh2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"body":{"rotate":[{"time":0,"angle":-10.4,"curve":"stepped"},{"time":1,"angle":-10.4}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"head":{"rotate":[{"time":0,"angle":4.89,"curve":"stepped"},{"time":1,"angle":4.89}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"upperarm1":{"rotate":[{"time":0,"angle":22.69,"curve":"stepped"},{"time":1,"angle":22.69}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"forearm1":{"rotate":[{"time":0,"angle":56.41,"curve":"stepped"},{"time":1,"angle":56.41}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"upperarm2":{"rotate":[{"time":0,"angle":23.71,"curve":"stepped"},{"time":1,"angle":23.71}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"forearm2":{"rotate":[{"time":0,"angle":20.06,"curve":"stepped"},{"time":1,"angle":20.06}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"L_Ankle":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"R_Ankle":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"mantles":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"shin1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"shin2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"hand1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"hand2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]},"weapon":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1,"x":0,"y":0}]}}},"Run":{"bones":{"upperarm1":{"rotate":[{"time":0,"angle":-40.45},{"time":0.044,"angle":-34.97},{"time":0.0881,"angle":1.79},{"time":0.1322,"angle":42.58},{"time":0.3117,"angle":-282.55},{"time":0.3525,"angle":48.21},{"time":0.3966,"angle":26.17},{"time":0.4407,"angle":-22.81},{"time":0.5333,"angle":-40.45}],"translate":[{"time":0,"x":0,"y":0},{"time":0.044,"x":1.33,"y":0.56},{"time":0.1762,"x":-2.74,"y":-5.58},{"time":0.3117,"x":-3.1,"y":-2.45},{"time":0.4407,"x":-0.75,"y":4.05},{"time":0.5333,"x":0,"y":0}]},"forearm1":{"rotate":[{"time":0,"angle":27.41},{"time":0.044,"angle":21.5},{"time":0.0881,"angle":16.71},{"time":0.1322,"angle":30.61},{"time":0.3117,"angle":38.33},{"time":0.3525,"angle":37.81},{"time":0.3966,"angle":16.47},{"time":0.4407,"angle":17.71},{"time":0.5333,"angle":27.41}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5333,"x":0,"y":0}]},"hand1":{"rotate":[{"time":0,"angle":-20.19},{"time":0.044,"angle":-24.82},{"time":0.1762,"angle":-14.29},{"time":0.3525,"angle":21.84},{"time":0.3966,"angle":9.46},{"time":0.4407,"angle":12.08},{"time":0.5333,"angle":-20.19}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5333,"x":0,"y":0}]},"L_Ground":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5333,"angle":0}],"translate":[{"time":0,"x":49.53,"y":-0.29},{"time":0.044,"x":39.66,"y":-0.29},{"time":0.0881,"x":-3.63,"y":-0.29},{"time":0.1322,"x":-10.76,"y":-0.29},{"time":0.1762,"x":-16.65,"y":22.09},{"time":0.2203,"x":-10,"y":27.07},{"time":0.2666,"x":-11.26,"y":16.63},{"time":0.3117,"x":12.41,"y":7.75},{"time":0.3525,"x":37.47,"y":7.29},{"time":0.3966,"x":52.33,"y":5.52},{"time":0.4407,"x":68.69,"y":19.42},{"time":0.4848,"x":68.69,"y":7.96},{"time":0.5333,"x":49.53,"y":-0.29}]},"foot1":{"rotate":[{"time":0,"angle":20.27},{"time":0.044,"angle":-0.6},{"time":0.1322,"angle":-31.14},{"time":0.1762,"angle":262.34},{"time":0.2203,"angle":-71.2},{"time":0.2666,"angle":-84.95},{"time":0.3117,"angle":-63.21},{"time":0.3525,"angle":-8.37},{"time":0.3966,"angle":-18.33},{"time":0.4407,"angle":34.08},{"time":0.5333,"angle":20.27}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5333,"x":0,"y":0}]},"R_Ground":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5333,"angle":0}],"translate":[{"time":0,"x":-58.44,"y":26.01},{"time":0.044,"x":-42,"y":21.08},{"time":0.0881,"x":-5.28,"y":9.57},{"time":0.1322,"x":11.16,"y":11.76},{"time":0.1762,"x":19.38,"y":26.56},{"time":0.2203,"x":23.89,"y":16.89},{"time":0.2666,"x":21.52,"y":-0.14},{"time":0.3117,"x":-19.32,"y":-0.14},{"time":0.3525,"x":-53.26,"y":0.13},{"time":0.3966,"x":-65.63,"y":6.46},{"time":0.4407,"x":-75.71,"y":39.48},{"time":0.5333,"x":-58.44,"y":26.01}]},"foot2":{"rotate":[{"time":0,"angle":262.95},{"time":0.0881,"angle":-74.33},{"time":0.1322,"angle":-4.26},{"time":0.1762,"angle":13.38},{"time":0.2203,"angle":28.95},{"time":0.2666,"angle":35.05},{"time":0.3117,"angle":7.53},{"time":0.3525,"angle":-31.42},{"time":0.4407,"angle":260.06},{"time":0.5333,"angle":262.95}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5333,"x":0,"y":0}]},"root":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5333,"x":0,"y":0}]},"Hip":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5333,"angle":0}],"translate":[{"time":0,"x":0,"y":-8.39},{"time":0.044,"x":1.64,"y":-12.87},{"time":0.0881,"x":1.64,"y":-11.23,"curve":[0.25,0,0.75,1]},{"time":0.1762,"x":1.64,"y":8.97},{"time":0.2203,"x":1.64,"y":-1.1},{"time":0.2666,"x":0,"y":-8.39},{"time":0.3117,"x":0,"y":-10.17},{"time":0.3525,"x":0,"y":-9.45,"curve":[0.25,0,0.75,1]},{"time":0.4407,"x":0,"y":5.78},{"time":0.4848,"x":1.64,"y":-1.1},{"time":0.5333,"x":0,"y":-8.39}]},"L_Ankle":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1762,"x":-1.45,"y":9.68},{"time":0.5333,"x":0,"y":0}]},"R_Ankle":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5333,"x":0,"y":0}]},"body":{"rotate":[{"time":0,"angle":-11.15},{"time":0.044,"angle":-16.76},{"time":0.1762,"angle":-8.61},{"time":0.3117,"angle":-20.17},{"time":0.4407,"angle":-8.61},{"time":0.5333,"angle":-11.15}],"translate":[{"time":0,"x":3.36,"y":-2.52},{"time":0.044,"x":4.98,"y":0.87},{"time":0.1762,"x":2.6,"y":4.02},{"time":0.3117,"x":5.73,"y":0.46},{"time":0.4407,"x":2.7,"y":5.1},{"time":0.5333,"x":3.36,"y":-2.52}]},"thigh1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5333,"angle":0}],"translate":[{"time":0,"x":6.02,"y":0},{"time":0.1322,"x":-3.58,"y":1.43},{"time":0.1762,"x":0.23,"y":2.72},{"time":0.2666,"x":6.13,"y":-0.59},{"time":0.3305,"x":8.81,"y":5.77},{"time":0.3966,"x":31,"y":0.35},{"time":0.4848,"x":22.13,"y":0.17},{"time":0.5333,"x":6.02,"y":0}]},"thigh2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5333,"angle":0}],"translate":[{"time":0,"x":-8.31,"y":-2.37},{"time":0.1322,"x":-3.93,"y":-2.37},{"time":0.2666,"x":3.22,"y":-1.52},{"time":0.3525,"x":-18.12,"y":0.17},{"time":0.3966,"x":-28.38,"y":0.17},{"time":0.5333,"x":-8.31,"y":-2.37}]},"head":{"rotate":[{"time":0,"angle":8.08},{"time":0.044,"angle":1.34,"curve":[0.25,0,0.851,0.81]},{"time":0.1762,"angle":6.45},{"time":0.2666,"angle":10.37},{"time":0.3117,"angle":3.57,"curve":[0.25,0,0.842,0.77]},{"time":0.4407,"angle":7.81},{"time":0.5333,"angle":8.08}],"translate":[{"time":0,"x":2.87,"y":0.23},{"time":0.044,"x":-3.5,"y":-1.82},{"time":0.1762,"x":4.6,"y":0.76},{"time":0.2666,"x":1.55,"y":-6.16},{"time":0.3117,"x":-7.07,"y":-8.66},{"time":0.4407,"x":7.03,"y":0.05},{"time":0.5333,"x":2.87,"y":0.23}]},"mantles":{"rotate":[{"time":0,"angle":0},{"time":0.044,"angle":-2.17},{"time":0.2666,"angle":2.9},{"time":0.3117,"angle":-0.95},{"time":0.5333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.044,"x":-2.6,"y":-0.65},{"time":0.2666,"x":1.39,"y":-0.59},{"time":0.3117,"x":-2.6,"y":-0.65},{"time":0.5333,"x":0,"y":0}]},"shin1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5333,"x":0,"y":0}]},"shin2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5333,"x":0,"y":0}]},"upperarm2":{"rotate":[{"time":0,"angle":30.8},{"time":0.044,"angle":38.3},{"time":0.1322,"angle":5.43},{"time":0.2203,"angle":334.6,"curve":[0.25,0,0.75,1]},{"time":0.3117,"angle":328.38},{"time":0.4407,"angle":21.28},{"time":0.5333,"angle":30.8}],"translate":[{"time":0,"x":-5.33,"y":-1.55},{"time":0.1762,"x":-6.43,"y":2.12},{"time":0.5333,"x":-5.33,"y":-1.55}]},"forearm2":{"rotate":[{"time":0,"angle":35.89},{"time":0.0881,"angle":25.71},{"time":0.1762,"angle":29.3},{"time":0.2203,"angle":34.63,"curve":[0.25,0,0.75,1]},{"time":0.3117,"angle":38.94},{"time":0.4407,"angle":30.09},{"time":0.5333,"angle":35.89}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5333,"x":0,"y":0}]},"hand2":{"rotate":[{"time":0,"angle":8.06},{"time":0.044,"angle":12.45},{"time":0.1762,"angle":33.85},{"time":0.4407,"angle":22.92},{"time":0.5333,"angle":8.06}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5333,"x":0,"y":0}]},"weapon":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.5333,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.5333,"x":0,"y":0}]}},"events":[{"time":0.2666,"name":"Footstep"},{"time":0.5333,"name":"Footstep"}]},"Walk":{"bones":{"L_Ground":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1.0666,"angle":0}],"translate":[{"time":0,"x":68.76,"y":0},{"time":0.1333,"x":57.43,"y":0},{"time":0.2666,"x":41.05,"y":0},{"time":0.4,"x":21.33,"y":0},{"time":0.5333,"x":5.89,"y":0},{"time":0.6666,"x":4.91,"y":0},{"time":0.8,"x":5.89,"y":10.31},{"time":0.9333,"x":44.68,"y":10.8},{"time":1.0666,"x":68.76,"y":0}]},"thigh1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1.0666,"angle":0}],"translate":[{"time":0,"x":24.92,"y":0},{"time":0.2666,"x":22.2,"y":0},{"time":0.4,"x":21.75,"y":-1.01},{"time":0.5333,"x":21.29,"y":0},{"time":0.6666,"x":16.1,"y":1},{"time":0.9333,"x":21.7,"y":-3.92},{"time":1.0666,"x":24.92,"y":0}]},"Hip":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1.0666,"angle":0}],"translate":[{"time":0,"x":0,"y":-7.39},{"time":0.1333,"x":0,"y":-6.32},{"time":0.2666,"x":0,"y":-1.44},{"time":0.3333,"x":0,"y":1.49},{"time":0.4,"x":0,"y":0.87},{"time":0.5333,"x":0,"y":-9.59},{"time":0.6666,"x":0,"y":-8.44},{"time":0.8,"x":0,"y":-1.44},{"time":0.8666,"x":0,"y":1.49},{"time":0.9333,"x":0,"y":0.87},{"time":1.0666,"x":0,"y":-7.39}]},"foot1":{"rotate":[{"time":0,"angle":17.4},{"time":0.1333,"angle":-0.28},{"time":0.4,"angle":-10.63},{"time":0.5333,"angle":-8.71},{"time":0.6666,"angle":-24.7},{"time":0.8,"angle":-43.24},{"time":0.9333,"angle":-35.2},{"time":1.0666,"angle":17.4}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.0666,"x":0,"y":0}]},"thigh2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1.0666,"angle":0}],"translate":[{"time":0,"x":-25.09,"y":0},{"time":0.2,"x":-16.15,"y":-4.51},{"time":0.4,"x":-9.43,"y":-3.48},{"time":0.5333,"x":-4.25,"y":-1.41},{"time":0.6666,"x":-6.64,"y":0.04},{"time":0.8,"x":-11.55,"y":-2.12},{"time":0.9333,"x":-22.84,"y":-3.88},{"time":1.0666,"x":-25.09,"y":0}]},"R_Ground":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1.0666,"angle":0}],"translate":[{"time":0,"x":-53.9,"y":0},{"time":0.1333,"x":-55,"y":2.56},{"time":0.2666,"x":-56,"y":14.27},{"time":0.4,"x":-9.55,"y":9.63},{"time":0.5333,"x":18.47,"y":-0.26},{"time":0.6666,"x":6.23,"y":-0.26},{"time":0.8,"x":-20.75,"y":-0.26},{"time":0.9333,"x":-36.46,"y":-3.45},{"time":1.0666,"x":-53.9,"y":0}]},"foot2":{"rotate":[{"time":0,"angle":-20},{"time":0.1333,"angle":-36.58},{"time":0.2666,"angle":-69.51},{"time":0.4,"angle":-13.92},{"time":0.5333,"angle":33.26},{"time":0.6666,"angle":0.41},{"time":0.9333,"angle":-1.16},{"time":1.0666,"angle":-20}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.0666,"x":0,"y":0}]},"upperarm1":{"rotate":[{"time":0,"angle":13.97},{"time":0.1333,"angle":2.64},{"time":0.5333,"angle":-293.8},{"time":0.6666,"angle":-302.37},{"time":0.8,"angle":41.55},{"time":0.9333,"angle":14.48},{"time":1.0666,"angle":13.97}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1333,"x":4.42,"y":3.57},{"time":0.5333,"x":-0.22,"y":-4.77},{"time":0.6666,"x":0.24,"y":-2.39},{"time":1.0666,"x":0,"y":0}]},"forearm1":{"rotate":[{"time":0,"angle":-11.7},{"time":0.1333,"angle":-5.73},{"time":0.5333,"angle":24.76},{"time":0.6666,"angle":33.27,"curve":[0.25,0,0.75,1]},{"time":0.8,"angle":3.08},{"time":0.9333,"angle":5.39},{"time":1.0666,"angle":-11.7}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.0666,"x":0,"y":0}]},"hand1":{"rotate":[{"time":0,"angle":-19.62},{"time":0.1333,"angle":-25.06},{"time":0.2666,"angle":-27.67},{"time":0.4,"angle":-34.31},{"time":0.5333,"angle":-24.05},{"time":0.8,"angle":16.76},{"time":0.9333,"angle":7.44},{"time":1.0666,"angle":-19.62}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.0666,"x":0,"y":0}]},"body":{"rotate":[{"time":0,"angle":2.18},{"time":0.1333,"angle":-2.56,"curve":[0.464,0,0.75,1]},{"time":0.3333,"angle":4.73},{"time":0.5333,"angle":0.29},{"time":0.6666,"angle":-2.56,"curve":[0.464,0,0.75,1]},{"time":0.8666,"angle":3.59},{"time":1.0666,"angle":2.18}],"translate":[{"time":0,"x":10.86,"y":-1.14},{"time":0.1333,"x":10.48,"y":-2.93},{"time":0.3333,"x":1.78,"y":5.09},{"time":0.5333,"x":12.04,"y":-2.64},{"time":0.6666,"x":10.48,"y":-2.93},{"time":0.8666,"x":1.78,"y":6.43},{"time":1.0666,"x":10.86,"y":-1.14}]},"head":{"rotate":[{"time":0,"angle":-11.7},{"time":0.1333,"angle":-2.87},{"time":0.3333,"angle":-10.46},{"time":0.5333,"angle":-6.46},{"time":0.6666,"angle":-2.85},{"time":0.8666,"angle":-8.52},{"time":1.0666,"angle":-11.7}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1333,"x":-2.96,"y":-3.42},{"time":0.3333,"x":1.04,"y":0.33},{"time":0.5333,"x":0,"y":0},{"time":0.6666,"x":-2.96,"y":-3.42},{"time":0.8666,"x":1.04,"y":0.33},{"time":1.0666,"x":0,"y":0}]},"upperarm2":{"rotate":[{"time":0,"angle":349.66},{"time":0.1333,"angle":349.79},{"time":0.2666,"angle":343.53},{"time":0.4,"angle":334.09},{"time":0.5333,"angle":327.79},{"time":0.8,"angle":338.53},{"time":0.9333,"angle":354.68},{"time":1.0666,"angle":349.66}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1333,"x":-0.76,"y":-1.44},{"time":0.5333,"x":-0.19,"y":8.7},{"time":1.0666,"x":0,"y":0}]},"forearm2":{"rotate":[{"time":0,"angle":21.04},{"time":0.1333,"angle":24.41},{"time":0.2666,"angle":-0.81},{"time":0.4,"angle":23.68},{"time":0.5333,"angle":23.61},{"time":0.6666,"angle":25.56},{"time":0.8,"angle":12.55},{"time":0.9333,"angle":-0.27},{"time":1.0666,"angle":21.04}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.0666,"x":0,"y":0}]},"hand2":{"rotate":[{"time":0,"angle":-12.1},{"time":0.1333,"angle":-8.87},{"time":0.2666,"angle":13.76},{"time":0.4,"angle":-3.02},{"time":0.5333,"angle":11.48},{"time":0.6666,"angle":5.24},{"time":0.8,"angle":3.93},{"time":0.9333,"angle":0.31},{"time":1.0666,"angle":-12.1}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.0666,"x":0,"y":0}]},"root":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1.0666,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.0666,"x":0,"y":0}]},"L_Ankle":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1.0666,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.0666,"x":0,"y":0}]},"R_Ankle":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1.0666,"angle":0}],"translate":[{"time":0,"x":0,"y":-1.35,"curve":"stepped"},{"time":1.0666,"x":0,"y":-1.35}]},"mantles":{"rotate":[{"time":0,"angle":-3.56},{"time":0.3333,"angle":-8.55},{"time":0.5333,"angle":-6.73},{"time":0.8666,"angle":-8.55},{"time":1.0666,"angle":-3.56}],"translate":[{"time":0,"x":0,"y":0},{"time":0.1333,"x":-1.9,"y":-1.47},{"time":0.3333,"x":-0.66,"y":-0.2},{"time":0.6666,"x":-1.9,"y":-1.47},{"time":0.8666,"x":-0.66,"y":-0.2},{"time":1.0666,"x":0,"y":0}]},"shin1":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1.0666,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.0666,"x":0,"y":0}]},"shin2":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1.0666,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.0666,"x":0,"y":0}]},"weapon":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":1.0666,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.0666,"x":0,"y":0}]},"LookConstraintGoal":{"rotate":[{"time":0.9333,"angle":0}]}},"events":[{"time":0.5333,"name":"Footstep"},{"time":1.0666,"name":"Footstep"}]}}} \ No newline at end of file diff --git a/spine-corona/examples/hero/hero.lua b/spine-corona/examples/hero/hero.lua deleted file mode 100644 index 2ba535771..000000000 --- a/spine-corona/examples/hero/hero.lua +++ /dev/null @@ -1,55 +0,0 @@ - --- This skeleton uses IK for the feet. - -local spine = require "spine-corona.spine" - -local json = spine.SkeletonJson.new() -local skeletonData = json:readSkeletonDataFile("examples/hero/hero.json") - -local skeleton = spine.Skeleton.new(skeletonData) -function skeleton:createImage (attachment) - return display.newImage("examples/hero/images/" .. attachment.name .. ".png") -end -skeleton.group.x = 95 -skeleton.group.y = 385 -skeleton.flipX = false -skeleton.flipY = false -skeleton.debug = true -- Omit or set to false to not draw debug lines on top of the images. -skeleton:setToSetupPose() - --- AnimationStateData defines crossfade durations between animations. -local stateData = spine.AnimationStateData.new(skeletonData) -stateData.defaultMix = 0.2; -stateData:setMix("Walk", "Attack", 0) -stateData:setMix("Attack", "Run", 0) -stateData:setMix("Run", "Attack", 0) --- AnimationState has a queue of animations and can apply them with crossfading. -local state = spine.AnimationState.new(stateData) -state:setAnimationByName(0, "Idle", true) - -local lastTime = 0 -local animationTime = 0 -Runtime:addEventListener("enterFrame", function (event) - -- Compute time in seconds since last frame. - local currentTime = event.time / 1000 - local delta = currentTime - lastTime - lastTime = currentTime - - -- Update the state with the delta time, apply it, and update the world transforms. - state:update(delta) - state:apply(skeleton) - skeleton:updateWorldTransform() -end) - -Runtime:addEventListener("touch", function (event) - if event.phase ~= "ended" and event.phase ~= "cancelled" then return end - local name = state:getCurrent(0).animation.name - if name == "Idle" then - state:setAnimationByName(0, "Crouch", true) - elseif name == "Crouch" then - state:setAnimationByName(0, "Walk", true) - else - state:setAnimationByName(0, "Attack", false) - state:addAnimationByName(0, "Run", true, 0) - end -end) diff --git a/spine-corona/examples/hero/images/body.png b/spine-corona/examples/hero/images/body.png deleted file mode 100644 index 0ad1fa813..000000000 Binary files a/spine-corona/examples/hero/images/body.png and /dev/null differ diff --git a/spine-corona/examples/hero/images/cape.png b/spine-corona/examples/hero/images/cape.png deleted file mode 100644 index 2a0b9c4d6..000000000 Binary files a/spine-corona/examples/hero/images/cape.png and /dev/null differ diff --git a/spine-corona/examples/hero/images/eyes.png b/spine-corona/examples/hero/images/eyes.png deleted file mode 100644 index 81faaa629..000000000 Binary files a/spine-corona/examples/hero/images/eyes.png and /dev/null differ diff --git a/spine-corona/examples/hero/images/fingers.png b/spine-corona/examples/hero/images/fingers.png deleted file mode 100644 index 241e889c4..000000000 Binary files a/spine-corona/examples/hero/images/fingers.png and /dev/null differ diff --git a/spine-corona/examples/hero/images/foot1.png b/spine-corona/examples/hero/images/foot1.png deleted file mode 100644 index 2c14a8864..000000000 Binary files a/spine-corona/examples/hero/images/foot1.png and /dev/null differ diff --git a/spine-corona/examples/hero/images/foot2.png b/spine-corona/examples/hero/images/foot2.png deleted file mode 100644 index 5f4323ea8..000000000 Binary files a/spine-corona/examples/hero/images/foot2.png and /dev/null differ diff --git a/spine-corona/examples/hero/images/forearm1.png b/spine-corona/examples/hero/images/forearm1.png deleted file mode 100644 index 442577ca7..000000000 Binary files a/spine-corona/examples/hero/images/forearm1.png and /dev/null differ diff --git a/spine-corona/examples/hero/images/forearm2.png b/spine-corona/examples/hero/images/forearm2.png deleted file mode 100644 index aee03c528..000000000 Binary files a/spine-corona/examples/hero/images/forearm2.png and /dev/null differ diff --git a/spine-corona/examples/hero/images/hand1.png b/spine-corona/examples/hero/images/hand1.png deleted file mode 100644 index 61be4568b..000000000 Binary files a/spine-corona/examples/hero/images/hand1.png and /dev/null differ diff --git a/spine-corona/examples/hero/images/hand2.png b/spine-corona/examples/hero/images/hand2.png deleted file mode 100644 index b8d1c0008..000000000 Binary files a/spine-corona/examples/hero/images/hand2.png and /dev/null differ diff --git a/spine-corona/examples/hero/images/head.png b/spine-corona/examples/hero/images/head.png deleted file mode 100644 index f61076441..000000000 Binary files a/spine-corona/examples/hero/images/head.png and /dev/null differ diff --git a/spine-corona/examples/hero/images/license.txt b/spine-corona/examples/hero/images/license.txt deleted file mode 100644 index 86fb7fa08..000000000 --- a/spine-corona/examples/hero/images/license.txt +++ /dev/null @@ -1,5 +0,0 @@ -Copyright (c) 2014, XDTech - -The project file and images in this "Hero" project are provided for -demonstration purposes only and may not be redistributed for any reason nor -used as the basis for derivative work. \ No newline at end of file diff --git a/spine-corona/examples/hero/images/mantles.png b/spine-corona/examples/hero/images/mantles.png deleted file mode 100644 index 64951c97e..000000000 Binary files a/spine-corona/examples/hero/images/mantles.png and /dev/null differ diff --git a/spine-corona/examples/hero/images/mouth.png b/spine-corona/examples/hero/images/mouth.png deleted file mode 100644 index 18ea237f0..000000000 Binary files a/spine-corona/examples/hero/images/mouth.png and /dev/null differ diff --git a/spine-corona/examples/hero/images/shin1.png b/spine-corona/examples/hero/images/shin1.png deleted file mode 100644 index 0f8dcca5b..000000000 Binary files a/spine-corona/examples/hero/images/shin1.png and /dev/null differ diff --git a/spine-corona/examples/hero/images/shin2.png b/spine-corona/examples/hero/images/shin2.png deleted file mode 100644 index 21febdd27..000000000 Binary files a/spine-corona/examples/hero/images/shin2.png and /dev/null differ diff --git a/spine-corona/examples/hero/images/sword.png b/spine-corona/examples/hero/images/sword.png deleted file mode 100644 index 64cf16bba..000000000 Binary files a/spine-corona/examples/hero/images/sword.png and /dev/null differ diff --git a/spine-corona/examples/hero/images/thigh1.png b/spine-corona/examples/hero/images/thigh1.png deleted file mode 100644 index cd5e7ff6b..000000000 Binary files a/spine-corona/examples/hero/images/thigh1.png and /dev/null differ diff --git a/spine-corona/examples/hero/images/thigh2.png b/spine-corona/examples/hero/images/thigh2.png deleted file mode 100644 index 11415d861..000000000 Binary files a/spine-corona/examples/hero/images/thigh2.png and /dev/null differ diff --git a/spine-corona/examples/hero/images/upperarm1.png b/spine-corona/examples/hero/images/upperarm1.png deleted file mode 100644 index b0e00ac3e..000000000 Binary files a/spine-corona/examples/hero/images/upperarm1.png and /dev/null differ diff --git a/spine-corona/examples/hero/images/upperarm2.png b/spine-corona/examples/hero/images/upperarm2.png deleted file mode 100644 index d3f098ee1..000000000 Binary files a/spine-corona/examples/hero/images/upperarm2.png and /dev/null differ diff --git a/spine-corona/examples/spineboy-atlas/spineboy.atlas b/spine-corona/examples/spineboy-atlas/spineboy.atlas deleted file mode 100644 index 19c0934b1..000000000 --- a/spine-corona/examples/spineboy-atlas/spineboy.atlas +++ /dev/null @@ -1,194 +0,0 @@ - -spineboy.png -format: RGBA8888 -filter: Linear,Linear -repeat: none -eye_indifferent - rotate: true - xy: 389, 5 - size: 56, 53 - orig: 56, 53 - offset: 0, 0 - index: -1 -eye_surprised - rotate: false - xy: 580, 34 - size: 56, 53 - orig: 56, 53 - offset: 0, 0 - index: -1 -front_bracer - rotate: false - xy: 732, 85 - size: 35, 48 - orig: 35, 48 - offset: 0, 0 - index: -1 -front_fist_closed - rotate: false - xy: 556, 91 - size: 45, 49 - orig: 45, 49 - offset: 0, 0 - index: -1 -front_fist_open - rotate: false - xy: 668, 32 - size: 52, 52 - orig: 52, 52 - offset: 0, 0 - index: -1 -front_foot - rotate: false - xy: 924, 201 - size: 76, 41 - orig: 76, 41 - offset: 0, 0 - index: -1 -front_foot_bend1 - rotate: false - xy: 845, 200 - size: 77, 42 - orig: 77, 42 - offset: 0, 0 - index: -1 -front_foot_bend2 - rotate: false - xy: 778, 186 - size: 65, 56 - orig: 65, 56 - offset: 0, 0 - index: -1 -front_shin - rotate: true - xy: 444, 91 - size: 49, 110 - orig: 49, 110 - offset: 0, 0 - index: -1 -front_thigh - rotate: true - xy: 603, 89 - size: 29, 67 - orig: 29, 67 - offset: 0, 0 - index: -1 -front_upper_arm - rotate: true - xy: 672, 86 - size: 32, 58 - orig: 32, 58 - offset: 0, 0 - index: -1 -goggles - rotate: false - xy: 444, 142 - size: 157, 100 - orig: 157, 100 - offset: 0, 0 - index: -1 -gun - rotate: false - xy: 603, 120 - size: 126, 122 - orig: 126, 122 - offset: 0, 0 - index: -1 -head - rotate: false - xy: 279, 63 - size: 163, 179 - orig: 163, 179 - offset: 0, 0 - index: -1 -mouth_grind - rotate: false - xy: 845, 163 - size: 56, 35 - orig: 56, 35 - offset: 0, 0 - index: -1 -mouth_oooo - rotate: false - xy: 842, 126 - size: 56, 35 - orig: 56, 35 - offset: 0, 0 - index: -1 -mouth_smile - rotate: false - xy: 769, 97 - size: 56, 35 - orig: 56, 35 - offset: 0, 0 - index: -1 -muzzle - rotate: false - xy: 2, 2 - size: 275, 240 - orig: 277, 240 - offset: 0, 0 - index: -1 -neck - rotate: false - xy: 903, 173 - size: 22, 25 - orig: 22, 25 - offset: 0, 0 - index: -1 -rear_bracer - rotate: false - xy: 722, 40 - size: 34, 43 - orig: 34, 43 - offset: 0, 0 - index: -1 -rear_foot - rotate: false - xy: 444, 11 - size: 68, 36 - orig: 68, 36 - offset: 0, 0 - index: -1 -rear_foot_bend1 - rotate: false - xy: 444, 49 - size: 70, 40 - orig: 70, 40 - offset: 0, 0 - index: -1 -rear_foot_bend2 - rotate: false - xy: 778, 134 - size: 62, 50 - orig: 62, 50 - offset: 0, 0 - index: -1 -rear_shin - rotate: false - xy: 731, 135 - size: 45, 107 - orig: 45, 107 - offset: 0, 0 - index: -1 -rear_thigh - rotate: true - xy: 516, 50 - size: 39, 62 - orig: 39, 62 - offset: 0, 0 - index: -1 -rear_upper_arm - rotate: false - xy: 638, 35 - size: 28, 52 - orig: 28, 52 - offset: 0, 0 - index: -1 -torso - rotate: true - xy: 279, 2 - size: 59, 108 - orig: 59, 108 - offset: 0, 0 - index: -1 diff --git a/spine-corona/examples/spineboy-atlas/spineboy.json b/spine-corona/examples/spineboy-atlas/spineboy.json deleted file mode 100644 index 2e422677a..000000000 --- a/spine-corona/examples/spineboy-atlas/spineboy.json +++ /dev/null @@ -1,2419 +0,0 @@ -{ -"bones": [ - { "name": "hip", "y": 247.47 }, - { "name": "front_thigh", "parent": "hip", "length": 74.8, "x": -17.45, "y": -11.64, "rotation": -95.51, "color": "00ff04ff" }, - { "name": "rear_thigh", "parent": "hip", "length": 85.71, "x": 8.91, "y": -5.62, "rotation": -72.54, "color": "ff000dff" }, - { "name": "torso", "parent": "hip", "length": 127.55, "x": -1.61, "y": 4.9, "rotation": 103.82, "color": "e0da19ff" }, - { - "name": "front_shin", - "parent": "front_thigh", - "length": 128.76, - "x": 78.69, - "y": 1.6, - "rotation": -2.21, - "inheritScale": false, - "color": "00ff04ff" - }, - { "name": "front_upper_arm", "parent": "torso", "length": 69.45, "x": 103.75, "y": 19.32, "rotation": 168.37, "color": "00ff04ff" }, - { "name": "neck", "parent": "torso", "length": 25.45, "x": 127.49, "y": -0.3, "rotation": -31.53, "color": "e0da19ff" }, - { "name": "rear_shin", "parent": "rear_thigh", "length": 121.87, "x": 86.1, "y": -1.32, "rotation": -19.83, "color": "ff000dff" }, - { "name": "rear_upper_arm", "parent": "torso", "length": 51.93, "x": 92.35, "y": -19.22, "rotation": -169.55, "color": "ff000dff" }, - { - "name": "front_bracer", - "parent": "front_upper_arm", - "length": 40.57, - "x": 68.8, - "y": -0.68, - "rotation": 18.29, - "color": "00ff04ff" - }, - { "name": "front_foot", "parent": "front_shin", "length": 91.34, "x": 128.75, "y": -0.33, "rotation": 77.9, "color": "00ff04ff" }, - { "name": "head", "parent": "neck", "length": 263.57, "x": 27.66, "y": -0.25, "rotation": 23.18, "color": "e0da19ff" }, - { "name": "rear_bracer", "parent": "rear_upper_arm", "length": 34.55, "x": 51.35, "rotation": 23.15, "color": "ff000dff" }, - { "name": "rear_foot", "parent": "rear_shin", "length": 82.57, "x": 121.45, "y": -0.75, "rotation": 69.3, "color": "ff000dff" }, - { "name": "front_fist", "parent": "front_bracer", "length": 65.38, "x": 40.56, "y": 0.19, "rotation": 12.43, "color": "00ff04ff" }, - { "name": "gun", "parent": "rear_bracer", "length": 43.1, "x": 34.42, "y": -0.45, "rotation": 5.34, "color": "ff000dff" }, - { "name": "gunTip", "parent": "gun", "x": 201.04, "y": 52.13, "rotation": 6.83, "color": "ff000dff" } -], -"slots": [ - { "name": "rear_upper_arm", "bone": "rear_upper_arm", "attachment": "rear_upper_arm" }, - { "name": "rear_bracer", "bone": "rear_bracer", "attachment": "rear_bracer" }, - { "name": "gun", "bone": "gun", "attachment": "gun" }, - { "name": "rear_foot", "bone": "rear_foot", "attachment": "rear_foot" }, - { "name": "rear_thigh", "bone": "rear_thigh", "attachment": "rear_thigh" }, - { "name": "rear_shin", "bone": "rear_shin", "attachment": "rear_shin" }, - { "name": "neck", "bone": "neck", "attachment": "neck" }, - { "name": "torso", "bone": "torso", "attachment": "torso" }, - { "name": "front_upper_arm", "bone": "front_upper_arm", "attachment": "front_upper_arm" }, - { "name": "head", "bone": "head", "attachment": "head" }, - { "name": "eye", "bone": "head", "attachment": "eye_indifferent" }, - { "name": "front_thigh", "bone": "front_thigh", "attachment": "front_thigh" }, - { "name": "front_foot", "bone": "front_foot", "attachment": "front_foot" }, - { "name": "front_shin", "bone": "front_shin", "attachment": "front_shin" }, - { "name": "mouth", "bone": "head", "attachment": "mouth_smile" }, - { "name": "goggles", "bone": "head", "attachment": "goggles" }, - { "name": "front_bracer", "bone": "front_bracer", "attachment": "front_bracer" }, - { "name": "front_fist", "bone": "front_fist", "attachment": "front_fist_closed" }, - { "name": "muzzle", "bone": "gunTip", "additive": true }, - { "name": "head-bb", "bone": "head", "attachment": "head" } -], -"skins": { - "default": { - "eye": { - "eye_indifferent": { "x": 85.72, "y": -28.18, "rotation": -70.63, "width": 93, "height": 89 }, - "eye_surprised": { "x": 85.72, "y": -28.18, "rotation": -70.63, "width": 93, "height": 89 } - }, - "front_bracer": { - "front_bracer": { "x": 12.03, "y": -1.67, "rotation": 79.59, "width": 58, "height": 80 } - }, - "front_fist": { - "front_fist_closed": { "x": 35.49, "y": 6, "rotation": 67.16, "width": 75, "height": 82 }, - "front_fist_open": { "x": 39.56, "y": 7.76, "rotation": 67.16, "width": 86, "height": 87 } - }, - "front_foot": { - "front_foot": { "x": 29.51, "y": 7.83, "rotation": 18.68, "width": 126, "height": 69 }, - "front_foot_bend1": { "x": 29.51, "y": 7.83, "rotation": 18.68, "width": 128, "height": 70 }, - "front_foot_bend2": { "x": 16.07, "y": 13.83, "rotation": 18.68, "width": 108, "height": 93 } - }, - "front_shin": { - "front_shin": { "x": 55.11, "y": -3.54, "rotation": 96.59, "width": 82, "height": 184 } - }, - "front_thigh": { - "front_thigh": { "x": 42.47, "y": 4.44, "rotation": 84.86, "width": 48, "height": 112 } - }, - "front_upper_arm": { - "front_upper_arm": { "x": 28.3, "y": 7.37, "rotation": 97.89, "width": 54, "height": 97 } - }, - "goggles": { - "goggles": { "x": 97.07, "y": 6.54, "rotation": -70.63, "width": 261, "height": 166 } - }, - "gun": { - "gun": { "x": 77.3, "y": 16.4, "rotation": 60.82, "width": 210, "height": 203 } - }, - "head": { - "head": { "x": 128.95, "y": 0.29, "rotation": -70.63, "width": 271, "height": 298 } - }, - "head-bb": { - "head": { - "type": "boundingbox", - "vertices": [ -19.143097, -70.30209, 40.80313, -118.074234, 257.77155, -115.61827, 285.16193, 57.18005, 120.77191, 164.95125, -5.067627, 76.94907 ] - } - }, - "mouth": { - "mouth_grind": { "x": 23.68, "y": -32.23, "rotation": -70.63, "width": 93, "height": 59 }, - "mouth_oooo": { "x": 23.68, "y": -32.23, "rotation": -70.63, "width": 93, "height": 59 }, - "mouth_smile": { "x": 23.68, "y": -32.23, "rotation": -70.63, "width": 93, "height": 59 } - }, - "muzzle": { - "muzzle": { "x": 18.25, "y": 5.44, "rotation": 0.15, "width": 462, "height": 400 } - }, - "neck": { - "neck": { "x": 9.76, "y": -3.01, "rotation": -55.22, "width": 36, "height": 41 } - }, - "rear_bracer": { - "rear_bracer": { "x": 11.15, "y": -2.2, "rotation": 66.17, "width": 56, "height": 72 } - }, - "rear_foot": { - "rear_foot": { "x": 31.51, "y": 3.57, "rotation": 23.07, "width": 113, "height": 60 }, - "rear_foot_bend1": { "x": 34.39, "y": 4.8, "rotation": 23.07, "width": 117, "height": 66 }, - "rear_foot_bend2": { "x": 30.38, "y": 12.62, "rotation": 23.07, "width": 103, "height": 83 } - }, - "rear_shin": { - "rear_shin": { "x": 58.29, "y": -2.75, "rotation": 92.37, "width": 75, "height": 178 } - }, - "rear_thigh": { - "rear_thigh": { "x": 33.1, "y": -4.11, "rotation": 72.54, "width": 65, "height": 104 } - }, - "rear_upper_arm": { - "rear_upper_arm": { "x": 21.12, "y": 4.08, "rotation": 89.32, "width": 47, "height": 87 } - }, - "torso": { - "torso": { "x": 63.61, "y": 7.12, "rotation": -94.53, "width": 98, "height": 180 } - } - } -}, -"events": { - "footstep": {}, - "headAttach": { "int": 3, "float": 4 }, - "headBehind": { "int": 5, "float": 6, "string": "setup" }, - "headPop": { "int": 1, "float": 2 } -}, -"animations": { - "death": { - "slots": { - "eye": { - "attachment": [ - { "time": 0, "name": "eye_surprised" }, - { "time": 0.4666, "name": "eye_indifferent" }, - { "time": 2.2333, "name": "eye_surprised" }, - { "time": 4.5333, "name": "eye_indifferent" } - ] - }, - "front_fist": { - "attachment": [ - { "time": 0, "name": "front_fist_open" } - ] - }, - "mouth": { - "attachment": [ - { "time": 0, "name": "mouth_oooo" }, - { "time": 2.2333, "name": "mouth_grind" }, - { "time": 4.5333, "name": "mouth_oooo" } - ] - } - }, - "bones": { - "head": { - "rotate": [ - { "time": 0, "angle": -2.82 }, - { "time": 0.1333, "angle": -28.74 }, - { "time": 0.2333, "angle": 11.42 }, - { "time": 0.3333, "angle": -50.24 }, - { "time": 0.4, "angle": -72.66, "curve": "stepped" }, - { "time": 0.4333, "angle": -72.66 }, - { "time": 0.5, "angle": -20.24 }, - { "time": 0.5666, "angle": -85.28, "curve": "stepped" }, - { "time": 0.9333, "angle": -85.28, "curve": "stepped" }, - { "time": 2.2333, "angle": -85.28 }, - { "time": 2.5, "angle": -51.96, "curve": "stepped" }, - { "time": 4.5333, "angle": -51.96 }, - { "time": 4.6666, "angle": -85.28 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - }, - "neck": { - "rotate": [ - { "time": 0, "angle": -2.82 }, - { "time": 0.1333, "angle": 12.35 }, - { "time": 0.2333, "angle": 29.89 }, - { "time": 0.3, "angle": 70.36 }, - { "time": 0.4, "angle": -10.22, "curve": "stepped" }, - { "time": 0.4333, "angle": -10.22 }, - { "time": 0.5, "angle": 2.92 }, - { "time": 0.5666, "angle": 47.94, "curve": "stepped" }, - { "time": 2.2333, "angle": 47.94 }, - { "time": 2.5, "angle": 18.5, "curve": "stepped" }, - { "time": 4.5333, "angle": 18.5 }, - { "time": 4.6666, "angle": 47.94 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - }, - "torso": { - "rotate": [ - { "time": 0, "angle": -8.61 }, - { "time": 0.1333, "angle": 28.19 }, - { "time": 0.2666, "angle": -280.19 }, - { "time": 0.4, "angle": -237.22, "curve": "stepped" }, - { "time": 0.4333, "angle": -237.22 }, - { "time": 0.5, "angle": 76.03, "curve": "stepped" }, - { "time": 0.8, "angle": 76.03, "curve": "stepped" }, - { "time": 0.9333, "angle": 76.03, "curve": "stepped" }, - { "time": 2.2333, "angle": 76.03 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.9333, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 2.2333, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - }, - "front_upper_arm": { - "rotate": [ - { "time": 0, "angle": -38.85 }, - { "time": 0.1333, "angle": -299.58 }, - { "time": 0.2666, "angle": -244.74 }, - { "time": 0.4, "angle": -292.35 }, - { "time": 0.4333, "angle": -315.84 }, - { "time": 0.5, "angle": -347.94 }, - { "time": 0.7, "angle": -347.33, "curve": "stepped" }, - { "time": 2.2333, "angle": -347.33 }, - { "time": 2.7, "angle": -290.68 }, - { "time": 2.7666, "angle": -285.1 }, - { "time": 4.6666, "angle": -290.68 }, - { "time": 4.8, "angle": 8.61 }, - { "time": 4.8666, "angle": 10.94 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - }, - "rear_upper_arm": { - "rotate": [ - { "time": 0, "angle": -44.69 }, - { "time": 0.1333, "angle": 112.26 }, - { "time": 0.2666, "angle": 129.07 }, - { "time": 0.4, "angle": 134.94, "curve": "stepped" }, - { "time": 0.4333, "angle": 134.94 }, - { "time": 0.5666, "angle": 172.6, "curve": "stepped" }, - { "time": 0.9333, "angle": 172.6, "curve": "stepped" }, - { "time": 2.2333, "angle": 172.6 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - }, - "front_bracer": { - "rotate": [ - { "time": 0, "angle": 21.88 }, - { "time": 0.1333, "angle": 11.48 }, - { "time": 0.2666, "angle": -18.81 }, - { "time": 0.4, "angle": -18.92 }, - { "time": 0.4333, "angle": -18.28 }, - { "time": 0.5, "angle": 60.61 }, - { "time": 0.7, "angle": -18.87, "curve": "stepped" }, - { "time": 2.2333, "angle": -18.87 }, - { "time": 2.7, "angle": -1.95, "curve": "stepped" }, - { "time": 4.6666, "angle": -1.95 }, - { "time": 4.8, "angle": 34.55 }, - { "time": 4.9333, "angle": -18.74 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - }, - "front_fist": { - "rotate": [ - { "time": 0, "angle": -2.33 }, - { "time": 0.2666, "angle": 26.34 }, - { "time": 0.7, "angle": -6.07, "curve": "stepped" }, - { "time": 2.2333, "angle": -6.07 }, - { "time": 2.7, "angle": 5.72, "curve": "stepped" }, - { "time": 4.6666, "angle": 5.72 }, - { "time": 4.8666, "angle": -6.52 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - }, - "rear_bracer": { - "rotate": [ - { "time": 0, "angle": 10.36 }, - { "time": 0.1333, "angle": -23.12 }, - { "time": 0.2666, "angle": -23.11 }, - { "time": 0.4, "angle": -23.16, "curve": "stepped" }, - { "time": 0.4333, "angle": -23.16 }, - { "time": 0.5666, "angle": -23.2, "curve": "stepped" }, - { "time": 0.9333, "angle": -23.2, "curve": "stepped" }, - { "time": 2.2333, "angle": -23.2 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - }, - "gun": { - "rotate": [ - { "time": 0, "angle": -2.78 }, - { "time": 0.1333, "angle": -24.58 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - }, - "hip": { - "rotate": [ - { "time": 0, "angle": 0, "curve": "stepped" }, - { "time": 0.9333, "angle": 0, "curve": "stepped" }, - { "time": 2.2333, "angle": 0 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 }, - { "time": 0.2, "x": 50.34, "y": 151.73 }, - { "time": 0.4, "x": 5.16, "y": -119.64, "curve": "stepped" }, - { "time": 0.4333, "x": 5.16, "y": -119.64 }, - { "time": 0.5, "x": 50.34, "y": -205.18, "curve": "stepped" }, - { "time": 0.8, "x": 50.34, "y": -205.18, "curve": "stepped" }, - { "time": 0.9333, "x": 50.34, "y": -205.18, "curve": "stepped" }, - { "time": 2.2333, "x": 50.34, "y": -205.18 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - }, - "front_thigh": { - "rotate": [ - { "time": 0, "angle": 0 }, - { "time": 0.1333, "angle": 8.47 }, - { "time": 0.2666, "angle": 115.95 }, - { "time": 0.4, "angle": 180.66, "curve": "stepped" }, - { "time": 0.4333, "angle": 180.66 }, - { "time": 0.5, "angle": 155.22 }, - { "time": 0.6, "angle": 97.73 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - }, - "front_shin": { - "rotate": [ - { "time": 0, "angle": 0 }, - { "time": 0.1333, "angle": -27.37 }, - { "time": 0.2666, "angle": -35.1 }, - { "time": 0.4, "angle": -37.72, "curve": "stepped" }, - { "time": 0.4333, "angle": -37.72 }, - { "time": 0.5, "angle": -40.06 }, - { "time": 0.6, "angle": 2.76 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - }, - "rear_thigh": { - "rotate": [ - { "time": 0, "angle": 0 }, - { "time": 0.1333, "angle": 70.45 }, - { "time": 0.2666, "angle": 155.34 }, - { "time": 0.4, "angle": 214.31, "curve": "stepped" }, - { "time": 0.4333, "angle": 214.31 }, - { "time": 0.5, "angle": 169.67 }, - { "time": 0.8, "angle": 83.27 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - }, - "rear_shin": { - "rotate": [ - { "time": 0, "angle": 0 }, - { "time": 0.1333, "angle": 18.93 }, - { "time": 0.2666, "angle": -21.04 }, - { "time": 0.4, "angle": -29.93, "curve": "stepped" }, - { "time": 0.4333, "angle": -29.93 }, - { "time": 0.5, "angle": -16.79 }, - { "time": 0.8, "angle": 7.77 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - }, - "rear_foot": { - "rotate": [ - { "time": 0, "angle": 0 }, - { "time": 0.1333, "angle": -11.62 }, - { "time": 0.4, "angle": -45.59, "curve": "stepped" }, - { "time": 0.4333, "angle": -45.59 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - }, - "front_foot": { - "rotate": [ - { "time": 0, "angle": 0 }, - { "time": 0.4, "angle": -48.75, "curve": "stepped" }, - { "time": 0.4333, "angle": -48.75 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - }, - "gunTip": { - "rotate": [ - { "time": 0, "angle": 0 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - } - } - }, - "hit": { - "slots": { - "front_fist": { - "attachment": [ - { "time": 0.1666, "name": "front_fist_open" } - ] - }, - "mouth": { - "attachment": [ - { "time": 0, "name": "mouth_grind" }, - { "time": 0.3333, "name": "mouth_smile" } - ] - } - }, - "bones": { - "torso": { - "rotate": [ - { "time": 0, "angle": 56.42 }, - { "time": 0.3333, "angle": 8.89 } - ] - }, - "neck": { - "rotate": [ - { "time": 0, "angle": 35.38 }, - { "time": 0.2333, "angle": 24.94 } - ] - }, - "head": { - "rotate": [ - { "time": 0, "angle": 10.21 }, - { "time": 0.3333, "angle": -41.3 } - ] - }, - "front_upper_arm": { - "rotate": [ - { - "time": 0, - "angle": -310.92, - "curve": [ 0.38, 0.53, 0.744, 1 ] - }, - { "time": 0.3333, "angle": -112.59 } - ], - "translate": [ - { "time": 0, "x": 7.23, "y": -13.13 } - ] - }, - "front_bracer": { - "rotate": [ - { "time": 0, "angle": 36.99 }, - { "time": 0.3333, "angle": -28.64 } - ] - }, - "front_fist": { - "rotate": [ - { "time": 0, "angle": 13.59 }, - { "time": 0.3333, "angle": 7.55 } - ] - }, - "rear_upper_arm": { - "rotate": [ - { - "time": 0, - "angle": 271.02, - "curve": [ 0.342, 0.36, 0.68, 0.71 ] - }, - { "time": 0.3333, "angle": -15.84 } - ], - "translate": [ - { "time": 0.3333, "x": -0.09, "y": -0.46 } - ] - }, - "rear_bracer": { - "rotate": [ - { "time": 0, "angle": 0 }, - { "time": 0.3333, "angle": 40.03 } - ] - }, - "gun": { - "rotate": [ - { "time": 0, "angle": 14.98 }, - { "time": 0.3333, "angle": 39.75 } - ] - }, - "hip": { - "translate": [ - { "time": 0, "x": -75.54, "y": -78.03 }, - { "time": 0.2333, "x": -36.48, "y": 12.42 }, - { "time": 0.3333, "x": -36.48, "y": -2.99 } - ] - }, - "front_thigh": { - "rotate": [ - { - "time": 0, - "angle": 90.94, - "curve": [ 0.227, 0.26, 0.432, 1 ] - }, - { "time": 0.3333, "angle": 32.02 } - ], - "translate": [ - { "time": 0, "x": 7.21, "y": -4 } - ] - }, - "rear_thigh": { - "rotate": [ - { - "time": 0, - "angle": 40.51, - "curve": [ 0.295, 0.3, 0.59, 0.99 ] - }, - { "time": 0.3333, "angle": 90.76 } - ], - "translate": [ - { "time": 0, "x": -1.96, "y": -0.32 } - ] - }, - "front_shin": { - "rotate": [ - { "time": 0, "angle": -96.62 }, - { "time": 0.3333, "angle": -15.13 } - ] - }, - "rear_shin": { - "rotate": [ - { "time": 0, "angle": 7.99 }, - { "time": 0.3333, "angle": -67.54 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - }, - "front_foot": { - "rotate": [ - { "time": 0, "angle": 5.4 }, - { "time": 0.3333, "angle": -16.26 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - }, - "rear_foot": { - "rotate": [ - { "time": 0, "angle": 2.67 }, - { "time": 0.3333, "angle": -10.31 } - ] - } - } - }, - "idle": { - "slots": { - "front_fist": { - "attachment": [ - { "time": 0, "name": "front_fist_open" }, - { "time": 1.6666, "name": "front_fist_open" } - ] - }, - "mouth": { - "attachment": [ - { "time": 0, "name": "mouth_smile" }, - { "time": 1.6666, "name": "mouth_smile" } - ] - } - }, - "bones": { - "torso": { - "rotate": [ - { - "time": 0, - "angle": -5.61, - "curve": [ 0.25, 0, 0.75, 1 ] - }, - { - "time": 0.8333, - "angle": -9.65, - "curve": [ 0.25, 0, 0.75, 1 ] - }, - { "time": 1.6666, "angle": -5.61 } - ], - "translate": [ - { "time": 0, "x": -6.49, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 1.6666, "x": 1, "y": 1 } - ] - }, - "front_upper_arm": { - "rotate": [ - { - "time": 0, - "angle": -59.85, - "curve": [ 0.492, 0, 0.75, 1 ] - }, - { - "time": 0.6666, - "angle": -54.31, - "curve": [ 0.324, 0.11, 0.75, 1 ] - }, - { "time": 1.6666, "angle": -59.85 } - ], - "translate": [ - { "time": 0, "x": -7.12, "y": -8.23 }, - { "time": 0.6666, "x": -6.32, "y": -8.3 }, - { "time": 1.6666, "x": -7.12, "y": -8.23 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 1.6666, "x": 1, "y": 1 } - ] - }, - "rear_upper_arm": { - "rotate": [ - { - "time": 0, - "angle": 62.41, - "curve": [ 0.504, 0.02, 0.75, 1 ] - }, - { - "time": 0.7333, - "angle": 43.83, - "curve": [ 0.25, 0, 0.75, 1 ] - }, - { "time": 1.6666, "angle": 62.41 } - ], - "translate": [ - { "time": 0, "x": -1.83, "y": -16.78 }, - { "time": 0.6666, "x": 0.34, "y": -15.23 }, - { "time": 1.6666, "x": -1.83, "y": -16.78 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 1.6666, "x": 1, "y": 1 } - ] - }, - "neck": { - "rotate": [ - { "time": 0, "angle": 0 }, - { "time": 0.6666, "angle": 2.39 }, - { "time": 1.6666, "angle": 0 } - ], - "translate": [ - { "time": 0, "x": -1.88, "y": -4.76, "curve": "stepped" }, - { "time": 1.6666, "x": -1.88, "y": -4.76 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 1.6666, "x": 1, "y": 1 } - ] - }, - "front_thigh": { - "rotate": [ - { - "time": 0, - "angle": 0.64, - "curve": [ 0.235, 0, 0.558, 0.99 ] - }, - { - "time": 0.6666, - "angle": -4.34, - "curve": [ 0.594, 0, 0.653, 1 ] - }, - { "time": 1.6666, "angle": 0.64 } - ], - "translate": [ - { "time": 0, "x": -13.39, "y": 6.69, "curve": "stepped" }, - { "time": 1.6666, "x": -13.39, "y": 6.69 } - ], - "scale": [ - { - "time": 0, - "x": 0.896, - "y": 1, - "curve": [ 0.235, 0, 0.558, 0.99 ] - }, - { - "time": 0.6666, - "x": 0.825, - "y": 1, - "curve": [ 0.594, 0, 0.653, 1 ] - }, - { "time": 1.6666, "x": 0.896, "y": 1 } - ] - }, - "front_shin": { - "rotate": [ - { "time": 0, "angle": -19.28, "curve": "stepped" }, - { "time": 1.6666, "angle": -19.28 } - ], - "scale": [ - { - "time": 0, - "x": 1, - "y": 1, - "curve": [ 0.235, 0, 0.558, 0.99 ] - }, - { - "time": 0.6666, - "x": 0.994, - "y": 1, - "curve": [ 0.594, 0, 0.653, 1 ] - }, - { "time": 1.6666, "x": 1, "y": 1 } - ] - }, - "rear_thigh": { - "rotate": [ - { - "time": 0, - "angle": 30.5, - "curve": [ 0.235, 0, 0.558, 0.99 ] - }, - { - "time": 0.6666, - "angle": 40.15, - "curve": [ 0.594, 0, 0.653, 1 ] - }, - { "time": 1.6666, "angle": 30.5 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 1.6666, "x": 1, "y": 1 } - ] - }, - "rear_shin": { - "rotate": [ - { - "time": 0, - "angle": -23.83, - "curve": [ 0.235, 0, 0.558, 0.99 ] - }, - { - "time": 0.6666, - "angle": -43.77, - "curve": [ 0.594, 0, 0.653, 1 ] - }, - { "time": 1.6666, "angle": -23.83 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 1.6666, "x": 1, "y": 1 } - ] - }, - "front_foot": { - "rotate": [ - { - "time": 0, - "angle": 5.13, - "curve": [ 0.235, 0, 0.558, 0.99 ] - }, - { - "time": 0.6666, - "angle": 10.04, - "curve": [ 0.594, 0, 0.653, 1 ] - }, - { "time": 1.6666, "angle": 5.13 } - ], - "scale": [ - { "time": 0, "x": 0.755, "y": 1.309, "curve": "stepped" }, - { "time": 1.6666, "x": 0.755, "y": 1.309 } - ] - }, - "hip": { - "translate": [ - { - "time": 0, - "x": -6.63, - "y": -23.01, - "curve": [ 0.235, 0, 0.558, 0.99 ] - }, - { - "time": 0.6666, - "x": 6.27, - "y": -35, - "curve": [ 0.594, 0, 0.653, 1 ] - }, - { "time": 1.6666, "x": -6.63, "y": -23.01 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 1.6666, "x": 1, "y": 1 } - ] - }, - "rear_foot": { - "rotate": [ - { - "time": 0, - "angle": -7.34, - "curve": [ 0.235, 0, 0.558, 0.99 ] - }, - { - "time": 0.6666, - "angle": 3.85, - "curve": [ 0.594, 0, 0.653, 1 ] - }, - { "time": 1.6666, "angle": -7.34 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 1.6666, "x": 1, "y": 1 } - ] - }, - "rear_bracer": { - "rotate": [ - { - "time": 0, - "angle": -17.16, - "curve": [ 0.25, 0, 0.75, 1 ] - }, - { - "time": 0.6666, - "angle": 12.52, - "curve": [ 0.25, 0, 0.75, 1 ] - }, - { "time": 1.6666, "angle": -17.16 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 1.6666, "x": 1, "y": 1 } - ] - }, - "head": { - "rotate": [ - { - "time": 0, - "angle": -5.51, - "curve": [ 0.25, 0, 0.75, 1 ] - }, - { - "time": 0.6666, - "angle": -3.12, - "curve": [ 0.25, 0, 0.75, 1 ] - }, - { "time": 1.6666, "angle": -5.51 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 1.6666, "x": 1, "y": 1 } - ] - }, - "front_bracer": { - "rotate": [ - { - "time": 0, - "angle": 45.46, - "curve": [ 0.492, 0, 0.75, 1 ] - }, - { - "time": 0.6666, - "angle": 41.33, - "curve": [ 0.32, 0.1, 0.736, 0.91 ] - }, - { "time": 1.6666, "angle": 45.46 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 1.6666, "x": 1, "y": 1 } - ] - }, - "gun": { - "rotate": [ - { - "time": 0, - "angle": 0, - "curve": [ 0.25, 0, 0.75, 1 ] - }, - { - "time": 0.6666, - "angle": -15.59, - "curve": [ 0.732, 0, 0.769, 0.99 ] - }, - { "time": 1.6666, "angle": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 1.6666, "x": 1, "y": 1 } - ] - }, - "front_fist": { - "rotate": [ - { - "time": 0, - "angle": -6.84, - "curve": [ 0.492, 0, 0.75, 1 ] - }, - { - "time": 0.6666, - "angle": -14.63, - "curve": [ 0.324, 0.11, 0.75, 1 ] - }, - { "time": 1.6666, "angle": -6.84 } - ], - "scale": [ - { - "time": 0, - "x": 1, - "y": 1, - "curve": [ 0.25, 0, 0.75, 1 ] - }, - { - "time": 0.6666, - "x": 0.689, - "y": 1.1, - "curve": [ 0.25, 0, 0.75, 1 ] - }, - { "time": 1.6666, "x": 1, "y": 1 } - ] - } - } - }, - "jump": { - "slots": { - "front_fist": { - "attachment": [ - { "time": 0, "name": "front_fist_open" }, - { "time": 0.2, "name": "front_fist_closed" }, - { "time": 0.6666, "name": "front_fist_open" } - ] - }, - "mouth": { - "attachment": [ - { "time": 0, "name": "mouth_grind" } - ] - }, - "torso": { - "attachment": [ - { "time": 0, "name": "torso" } - ] - } - }, - "bones": { - "front_thigh": { - "rotate": [ - { - "time": 0, - "angle": 91.53, - "curve": [ 0.278, 0.46, 0.763, 1 ] - }, - { - "time": 0.2, - "angle": -35.83, - "curve": [ 0.761, 0, 0.75, 1 ] - }, - { "time": 0.4333, "angle": 127.74 }, - { - "time": 0.7333, - "angle": 48.18, - "curve": [ 0.227, 0.26, 0.432, 1 ] - }, - { "time": 0.8333, "angle": 25.35 }, - { "time": 0.9333, "angle": 45.37 }, - { "time": 1.0333, "angle": 38.12 }, - { "time": 1.1333, "angle": 25.35 }, - { "time": 1.3333, "angle": 91.53 } - ], - "translate": [ - { "time": 0, "x": -2.56, "y": 5.77 }, - { "time": 0.4333, "x": 8.3, "y": 7.98 }, - { "time": 0.7333, "x": 7.21, "y": -4 }, - { "time": 1.3333, "x": -2.56, "y": 5.77 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - }, - "torso": { - "rotate": [ - { "time": 0, "angle": -42.63 }, - { "time": 0.2, "angle": -5.74 }, - { "time": 0.4333, "angle": -50.76 }, - { "time": 0.7333, "angle": 1.89 }, - { "time": 0.8333, "angle": 11.58 }, - { "time": 0.9666, "angle": -1.89 }, - { "time": 1.1333, "angle": 11.58 }, - { "time": 1.3333, "angle": -42.63 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - }, - "rear_thigh": { - "rotate": [ - { "time": 0, "angle": -26.32 }, - { "time": 0.2, "angle": 121.44 }, - { "time": 0.4333, "angle": 70.54 }, - { - "time": 0.7333, - "angle": 79.89, - "curve": [ 0.295, 0.3, 0.59, 0.99 ] - }, - { "time": 0.8333, "angle": 99.12 }, - { "time": 0.9333, "angle": 74.05 }, - { "time": 1.0333, "angle": 98.04 }, - { "time": 1.1333, "angle": 99.12 }, - { "time": 1.3333, "angle": -26.32 } - ], - "translate": [ - { "time": 0, "x": -0.56, "y": -0.32 }, - { "time": 0.4333, "x": -8.5, "y": 10.58 }, - { "time": 0.7333, "x": -1.96, "y": -0.32 }, - { "time": 1.3333, "x": -0.56, "y": -0.32 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - }, - "rear_shin": { - "rotate": [ - { "time": 0, "angle": -78.69 }, - { "time": 0.4333, "angle": -55.56 }, - { "time": 0.7333, "angle": -62.84 }, - { "time": 0.8333, "angle": -80.74 }, - { "time": 0.9333, "angle": -41.12 }, - { "time": 1.0333, "angle": -77.4 }, - { "time": 1.1333, "angle": -80.74 }, - { "time": 1.3333, "angle": -78.69 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.7333, "x": 1, "y": 1 } - ] - }, - "front_upper_arm": { - "rotate": [ - { "time": 0, "angle": -22.61 }, - { "time": 0.2, "angle": -246.68 }, - { - "time": 0.6, - "angle": 11.28, - "curve": [ 0.246, 0, 0.633, 0.53 ] - }, - { - "time": 0.7333, - "angle": -57.45, - "curve": [ 0.38, 0.53, 0.744, 1 ] - }, - { "time": 0.8666, "angle": -112.59 }, - { "time": 0.9333, "angle": -102.17 }, - { "time": 1.0333, "angle": -108.61 }, - { "time": 1.1333, "angle": -112.59 }, - { "time": 1.3333, "angle": -22.61 } - ], - "translate": [ - { "time": 0, "x": 6.08, "y": 7.15 }, - { "time": 0.2, "x": 7.23, "y": -13.13, "curve": "stepped" }, - { "time": 0.7333, "x": 7.23, "y": -13.13 }, - { "time": 1.3333, "x": 6.08, "y": 7.15 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - }, - "front_bracer": { - "rotate": [ - { "time": 0, "angle": 66.46 }, - { "time": 0.2, "angle": 42.39 }, - { "time": 0.4333, "angle": 26.06 }, - { "time": 0.7333, "angle": 13.28 }, - { "time": 0.8666, "angle": -28.64 }, - { "time": 0.9333, "angle": -22.31 }, - { "time": 1.0333, "angle": -35.39 }, - { "time": 1.1333, "angle": -28.64 }, - { "time": 1.3333, "angle": 66.46 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - }, - "front_fist": { - "rotate": [ - { "time": 0, "angle": -28.43 }, - { "time": 0.4333, "angle": -45.6 }, - { "time": 0.7333, "angle": -53.66 }, - { "time": 0.8666, "angle": 7.55 }, - { "time": 0.9333, "angle": 31.15 }, - { "time": 1.0333, "angle": -32.58 }, - { "time": 1.1333, "angle": 7.55 }, - { "time": 1.3333, "angle": -28.43 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - }, - "rear_upper_arm": { - "rotate": [ - { "time": 0, "angle": 39.68 }, - { "time": 0.2, "angle": 276.57 }, - { "time": 0.3, "angle": 17.73 }, - { "time": 0.4333, "angle": 83.38 }, - { - "time": 0.6, - "angle": -4.71, - "curve": [ 0.246, 0, 0.633, 0.53 ] - }, - { - "time": 0.7333, - "angle": -69.63, - "curve": [ 0.342, 0.36, 0.68, 0.71 ] - }, - { - "time": 0.7666, - "angle": 321.47, - "curve": [ 0.333, 0.33, 0.667, 0.66 ] - }, - { - "time": 0.8, - "angle": 33.7, - "curve": [ 0.358, 0.64, 0.693, 1 ] - }, - { "time": 0.8666, "angle": 34.56 }, - { "time": 1.0333, "angle": 71.96 }, - { "time": 1.1333, "angle": 34.56 }, - { "time": 1.3333, "angle": 39.68 } - ], - "translate": [ - { "time": 0, "x": -3.1, "y": -4.86 }, - { "time": 0.2, "x": 23.33, "y": 49.07 }, - { "time": 0.4333, "x": 20.78, "y": 40.21 }, - { "time": 1.3333, "x": -3.1, "y": -4.86 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - }, - "rear_bracer": { - "rotate": [ - { "time": 0, "angle": 29.66 }, - { "time": 0.2, "angle": 45.06 }, - { "time": 0.4333, "angle": -4.34 }, - { "time": 0.7666, "angle": 61.68 }, - { "time": 0.8, "angle": 82.59 }, - { "time": 0.8666, "angle": 80.06 }, - { "time": 1.0333, "angle": 57.56 }, - { "time": 1.1333, "angle": 80.06 }, - { "time": 1.3333, "angle": 29.66 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - }, - "neck": { - "rotate": [ - { "time": 0, "angle": 24.9 }, - { "time": 0.2, "angle": 16.31 }, - { "time": 0.4333, "angle": 7.44 }, - { "time": 0.7333, "angle": -20.35 }, - { "time": 0.8333, "angle": -0.69, "curve": "stepped" }, - { "time": 1.1333, "angle": -0.69 }, - { "time": 1.3333, "angle": 24.9 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - }, - "head": { - "rotate": [ - { "time": 0, "angle": 24.92 }, - { "time": 0.2, "angle": 10.36 }, - { "time": 0.4333, "angle": 28.65 }, - { "time": 0.7333, "angle": -2.65 }, - { "time": 0.8333, "angle": -28.94, "curve": "stepped" }, - { "time": 1.1333, "angle": -28.94 }, - { "time": 1.3333, "angle": 24.92 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - }, - "hip": { - "rotate": [ - { "time": 0, "angle": 0 } - ], - "translate": [ - { - "time": 0, - "x": -34.51, - "y": -78.62, - "curve": [ 0.232, 1, 0.75, 1 ] - }, - { - "time": 0.2, - "x": -34.51, - "y": 182.5, - "curve": [ 0.232, 0.48, 0.598, 0.79 ] - }, - { - "time": 0.7666, - "x": -34.51, - "y": 596.22, - "curve": [ 0.329, 0.17, 0.66, 0.21 ] - }, - { "time": 1.1333, "x": -34.51, "y": 2.49 }, - { "time": 1.3333, "x": -34.51, "y": -78.62 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - }, - "front_shin": { - "rotate": [ - { - "time": 0, - "angle": -90.62, - "curve": [ 0.416, 0.54, 0.743, 1 ] - }, - { - "time": 0.2, - "angle": -10.52, - "curve": [ 0.644, 0, 0.75, 1 ] - }, - { "time": 0.4333, "angle": -127.72 }, - { "time": 0.7333, "angle": -19.91 }, - { "time": 0.8333, "angle": -5.16 }, - { "time": 0.9333, "angle": -35.06 }, - { "time": 1.0333, "angle": -43.97 }, - { "time": 1.1333, "angle": -5.16 }, - { "time": 1.3333, "angle": -90.62 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - }, - "front_foot": { - "rotate": [ - { "time": 0, "angle": -0.79 }, - { "time": 0.0333, "angle": 16.27 }, - { "time": 0.0666, "angle": 23.52 }, - { "time": 0.1, "angle": 21.02 }, - { "time": 0.1333, "angle": 10.92 }, - { "time": 0.2, "angle": -38.45 }, - { "time": 0.4333, "angle": 6.62 }, - { "time": 0.7333, "angle": -11.51 }, - { "time": 1.0333, "angle": -22.91 }, - { "time": 1.3333, "angle": -0.79 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - }, - "rear_foot": { - "rotate": [ - { "time": 0, "angle": -12.77 }, - { "time": 0.2, "angle": 17.05 }, - { "time": 0.4333, "angle": 19.45 }, - { "time": 0.7333, "angle": 2.67 }, - { "time": 1.0333, "angle": -28.49 }, - { "time": 1.3333, "angle": -12.77 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - }, - "gun": { - "rotate": [ - { "time": 0, "angle": 6.18 }, - { "time": 0.2, "angle": 30.81 }, - { "time": 0.4333, "angle": 13.25 }, - { "time": 0.7333, "angle": 14.98 }, - { "time": 0.7666, "angle": 25.64 }, - { "time": 0.8, "angle": 20.62 }, - { "time": 0.8666, "angle": 64.52 }, - { "time": 1.0333, "angle": 8.59 }, - { "time": 1.1333, "angle": 64.52 }, - { "time": 1.3333, "angle": 6.18 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - } - } - }, - "run": { - "slots": { - "front_fist": { - "attachment": [ - { "time": 0, "name": "front_fist_closed" } - ] - }, - "mouth": { - "attachment": [ - { "time": 0, "name": "mouth_grind" } - ] - }, - "torso": { - "attachment": [ - { "time": 0, "name": "torso" } - ] - } - }, - "bones": { - "front_thigh": { - "rotate": [ - { - "time": 0, - "angle": 42.05, - "curve": [ 0.195, 0.86, 0.75, 1 ] - }, - { "time": 0.0666, "angle": 46.07 }, - { "time": 0.1333, "angle": -20.28 }, - { "time": 0.2, "angle": -27.23 }, - { "time": 0.2666, "angle": -47.16 }, - { "time": 0.3333, "angle": -39.79 }, - { "time": 0.4, "angle": -25.86 }, - { "time": 0.4666, "angle": 14.35 }, - { "time": 0.5333, "angle": 55.62 }, - { "time": 0.6, "angle": 69.65 }, - { "time": 0.6666, "angle": 86.4 }, - { "time": 0.7333, "angle": 65.87 }, - { "time": 0.8, "angle": 42.05 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 }, - { "time": 0.0333, "x": -5.79, "y": 11.15 }, - { "time": 0.0666, "x": -5.13, "y": 11.55 }, - { "time": 0.1333, "x": -7.7, "y": 8.98 }, - { "time": 0.5333, "x": -1.26, "y": 3.83 }, - { "time": 0.8, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "torso": { - "rotate": [ - { "time": 0, "angle": -39.7 }, - { "time": 0.2, "angle": -57.29 }, - { "time": 0.4, "angle": -39.7 }, - { "time": 0.6, "angle": -57.29 }, - { "time": 0.8, "angle": -39.7 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.4, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.8, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "rear_thigh": { - "rotate": [ - { "time": 0, "angle": -56.59 }, - { "time": 0.0666, "angle": -21.57 }, - { "time": 0.1333, "angle": 27.95 }, - { "time": 0.2, "angle": 42.42 }, - { "time": 0.2666, "angle": 62.37 }, - { "time": 0.3333, "angle": 45.42 }, - { "time": 0.4, "angle": 15.67 }, - { "time": 0.4666, "angle": 28.22 }, - { "time": 0.5333, "angle": -38.62 }, - { "time": 0.6, "angle": -53.26 }, - { "time": 0.6666, "angle": -79.31 }, - { "time": 0.7333, "angle": -86.47 }, - { "time": 0.8, "angle": -56.59 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 }, - { "time": 0.4, "x": -6.76, "y": -3.86 }, - { "time": 0.4333, "x": -15.85, "y": 7.28 }, - { "time": 0.4666, "x": -13.04, "y": 4.04 }, - { "time": 0.5, "x": -10.24, "y": 7.11 }, - { "time": 0.5333, "x": -9.01, "y": -5.15 }, - { "time": 0.6666, "x": -23.18, "y": -2.57 }, - { "time": 0.8, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "rear_shin": { - "rotate": [ - { "time": 0, "angle": -74 }, - { "time": 0.0666, "angle": -83.38 }, - { "time": 0.1333, "angle": -106.69 }, - { "time": 0.2, "angle": -66.01 }, - { "time": 0.2666, "angle": -55.22 }, - { "time": 0.3333, "angle": -24.8 }, - { - "time": 0.4, - "angle": 18.44, - "curve": [ 0.25, 0, 0.75, 1 ] - }, - { "time": 0.4666, "angle": -56.65 }, - { - "time": 0.5333, - "angle": -11.94, - "curve": [ 0.25, 0, 0.75, 1 ] - }, - { "time": 0.6666, "angle": -41.26 }, - { "time": 0.7333, "angle": -43.6 }, - { "time": 0.8, "angle": -74 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.8, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "front_upper_arm": { - "rotate": [ - { "time": 0, "angle": -89.36 }, - { "time": 0.0666, "angle": -95.67 }, - { "time": 0.1333, "angle": -22 }, - { "time": 0.2, "angle": -316.04 }, - { "time": 0.2666, "angle": -274.94 }, - { "time": 0.3333, "angle": -273.74 }, - { "time": 0.4, "angle": -272.09 }, - { "time": 0.4666, "angle": -264.89 }, - { "time": 0.5333, "angle": -320.09 }, - { "time": 0.6, "angle": -50.83 }, - { "time": 0.6666, "angle": -81.72 }, - { "time": 0.7333, "angle": -83.92 }, - { "time": 0.8, "angle": -89.36 } - ], - "translate": [ - { "time": 0, "x": 6.24, "y": 10.05 }, - { "time": 0.2666, "x": 4.95, "y": -13.13 }, - { "time": 0.6, "x": -2.43, "y": 1.94 }, - { "time": 0.8, "x": 6.24, "y": 10.05 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "front_bracer": { - "rotate": [ - { "time": 0, "angle": 33.43 }, - { "time": 0.0666, "angle": 20.53 }, - { "time": 0.1333, "angle": 15.26 }, - { "time": 0.2, "angle": 19.28 }, - { "time": 0.2666, "angle": 22.62 }, - { "time": 0.3333, "angle": 37.29 }, - { "time": 0.4, "angle": 41.53 }, - { "time": 0.4666, "angle": 31.73 }, - { "time": 0.5333, "angle": 67.45 }, - { "time": 0.6666, "angle": 39.77 }, - { "time": 0.7333, "angle": 30.95 }, - { "time": 0.8, "angle": 33.43 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.8, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "front_fist": { - "rotate": [ - { "time": 0, "angle": -19.75 }, - { "time": 0.0666, "angle": -37.11 }, - { "time": 0.1333, "angle": -50.79 }, - { "time": 0.2666, "angle": -12.69 }, - { "time": 0.3333, "angle": 3.01 }, - { "time": 0.4333, "angle": 12.05 }, - { "time": 0.5333, "angle": 13.25 }, - { "time": 0.8, "angle": -19.75 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.8, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "rear_upper_arm": { - "rotate": [ - { "time": 0, "angle": 68.68 }, - { "time": 0.0666, "angle": 73.89 }, - { "time": 0.1333, "angle": -9.64 }, - { "time": 0.2, "angle": 284.27 }, - { "time": 0.2666, "angle": 283.29 }, - { "time": 0.3333, "angle": 278.28 }, - { "time": 0.4, "angle": 271.02 }, - { "time": 0.4666, "angle": 263.2 }, - { "time": 0.5333, "angle": 314.25 }, - { "time": 0.6, "angle": 16.83 }, - { "time": 0.6666, "angle": 70.35 }, - { "time": 0.7333, "angle": 73.53 }, - { "time": 0.8, "angle": 68.68 } - ], - "translate": [ - { "time": 0, "x": -2.57, "y": -8.89 }, - { "time": 0.1333, "x": -4.68, "y": 7.2 }, - { "time": 0.2, "x": 21.73, "y": 51.17 }, - { "time": 0.6, "x": 4.33, "y": 2.05 }, - { "time": 0.8, "x": -2.57, "y": -8.89 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "rear_bracer": { - "rotate": [ - { "time": 0, "angle": 31.04 }, - { "time": 0.0666, "angle": 28.28 }, - { "time": 0.1333, "angle": 49.36 }, - { "time": 0.2, "angle": 59.37 }, - { "time": 0.2666, "angle": 8.56 }, - { "time": 0.3333, "angle": 9.38 }, - { "time": 0.4, "angle": 11.51 }, - { "time": 0.4666, "angle": 7.22 }, - { "time": 0.5333, "angle": -18.44 }, - { "time": 0.6, "angle": 11.44 }, - { "time": 0.6666, "angle": 9.99 }, - { "time": 0.7333, "angle": 8.28 }, - { "time": 0.8, "angle": 31.04 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.8, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "neck": { - "rotate": [ - { "time": 0, "angle": 11.03 }, - { "time": 0.2, "angle": 13.58 }, - { "time": 0.4, "angle": 11.03 }, - { "time": 0.6, "angle": 13.58 }, - { "time": 0.8, "angle": 11.03 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.4, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.8, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "head": { - "rotate": [ - { "time": 0, "angle": 11.03 }, - { "time": 0.1, "angle": 12.34 }, - { "time": 0.2, "angle": 25.55 }, - { "time": 0.4, "angle": 11.03 }, - { "time": 0.5, "angle": 12.34 }, - { "time": 0.6, "angle": 25.55 }, - { "time": 0.8, "angle": 11.03 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.4, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.8, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "hip": { - "rotate": [ - { "time": 0, "angle": 0, "curve": "stepped" }, - { "time": 0.8, "angle": 0 } - ], - "translate": [ - { "time": 0, "x": -62.47, "y": -23.1 }, - { - "time": 0.0666, - "x": -62.47, - "y": -38.51, - "curve": [ 0.244, 0.04, 0.75, 1 ] - }, - { - "time": 0.2666, - "x": -62.47, - "y": 22.28, - "curve": [ 0.17, 0.52, 0.75, 1 ] - }, - { "time": 0.4, "x": -62.47, "y": -23.1 }, - { "time": 0.4333, "x": -62.47, "y": -24.59 }, - { - "time": 0.4666, - "x": -62.47, - "y": -43.29, - "curve": [ 0.25, 0, 0.75, 1 ] - }, - { "time": 0.6666, "x": -62.47, "y": 22.28 }, - { "time": 0.8, "x": -62.47, "y": -23.1 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "front_shin": { - "rotate": [ - { - "time": 0, - "angle": 0, - "curve": [ 0.481, 0.01, 0.75, 1 ] - }, - { "time": 0.0666, "angle": -64.42 }, - { - "time": 0.1333, - "angle": -20.59, - "curve": [ 0.25, 0, 0.75, 1 ] - }, - { "time": 0.2666, "angle": -62.51 }, - { "time": 0.3333, "angle": -79.74 }, - { "time": 0.4, "angle": -78.28 }, - { - "time": 0.4666, - "angle": -118.96, - "curve": [ 0.93, 0, 0.952, 0.95 ] - }, - { "time": 0.6, "angle": -88.95 }, - { "time": 0.6666, "angle": -79.09 }, - { "time": 0.7333, "angle": -47.77 }, - { "time": 0.8, "angle": 0 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.8, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "front_foot": { - "rotate": [ - { "time": 0, "angle": 0 }, - { - "time": 0.0333, - "angle": -21.13, - "curve": [ 0.121, 0.23, 0.75, 1 ] - }, - { "time": 0.0666, "angle": 17.64 }, - { "time": 0.1, "angle": 29.92 }, - { "time": 0.1333, "angle": 16.44 }, - { "time": 0.2, "angle": -29.22 }, - { "time": 0.2666, "angle": -1.61 }, - { "time": 0.3333, "angle": -10.22 }, - { "time": 0.4666, "angle": -15.99 }, - { "time": 0.6, "angle": 9.03 }, - { "time": 0.7333, "angle": 17.32 }, - { "time": 0.8, "angle": 0 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.8, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "rear_foot": { - "rotate": [ - { "time": 0, "angle": 0 }, - { "time": 0.0666, "angle": -12.04 }, - { "time": 0.1333, "angle": -0.87 }, - { "time": 0.2, "angle": 25.81 }, - { "time": 0.2666, "angle": 4.71 }, - { - "time": 0.4, - "angle": 18.09, - "curve": [ 0.281, 0.73, 0.75, 1 ] - }, - { "time": 0.4333, "angle": -1.7 }, - { "time": 0.4666, "angle": 27.12 }, - { "time": 0.5, "angle": 38.83 }, - { "time": 0.5333, "angle": 30.76 }, - { "time": 0.5666, "angle": -20.49 }, - { "time": 0.6, "angle": -30.8 }, - { "time": 0.6666, "angle": -1.31 }, - { "time": 0.8, "angle": 0 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.8, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "gun": { - "rotate": [ - { "time": 0, "angle": 0 }, - { "time": 0.1333, "angle": 24.72 }, - { "time": 0.5, "angle": -11.87 }, - { "time": 0.8, "angle": 0 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.8, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - } - }, - "events": [ - { "time": 0, "name": "footstep" }, - { "time": 0.4, "name": "footstep", "int": 1 } - ] - }, - "shoot": { - "slots": { - "front_fist": { - "attachment": [ - { "time": 0.1333, "name": "front_fist_closed" }, - { "time": 0.4, "name": "front_fist_open" } - ] - }, - "mouth": { - "attachment": [ - { "time": 0.1333, "name": "mouth_grind" } - ] - }, - "muzzle": { - "attachment": [ - { "time": 0.1333, "name": "muzzle" }, - { "time": 0.2666, "name": null } - ], - "color": [ - { - "time": 0.1333, - "color": "ffffff00", - "curve": [ 0.118, 0.99, 0.75, 1 ] - }, - { - "time": 0.1666, - "color": "ffffffff", - "curve": [ 0.821, 0, 0.909, 0.89 ] - }, - { "time": 0.2666, "color": "ffffff00" } - ] - } - }, - "bones": { - "front_fist": { - "scale": [ - { "time": 0.1333, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.4, "x": 1, "y": 1 } - ] - }, - "gunTip": { - "translate": [ - { "time": 0.1333, "x": 0, "y": 0 }, - { "time": 0.2, "x": 20.93, "y": 1.57 } - ], - "scale": [ - { "time": 0.1333, "x": 1, "y": 1 }, - { "time": 0.2, "x": 1.247, "y": 1.516 } - ] - }, - "gun": { - "rotate": [ - { "time": 0, "angle": 1.9 } - ], - "translate": [ - { - "time": 0, - "x": 7.95, - "y": 5.84, - "curve": [ 0, 0.3, 0.678, 1 ] - }, - { "time": 0.3, "x": -9.3, "y": -1.41 }, - { "time": 0.4, "x": 0, "y": 0 } - ] - }, - "rear_bracer": { - "rotate": [ - { "time": 0, "angle": -30.47 } - ], - "translate": [ - { - "time": 0, - "x": 0, - "y": 0, - "curve": [ 0, 0.3, 0.678, 1 ] - }, - { "time": 0.3, "x": -5.99, "y": -3.71 }, - { "time": 0.4, "x": 0, "y": 0 } - ] - }, - "rear_upper_arm": { - "rotate": [ - { "time": 0, "angle": 62.3 } - ], - "translate": [ - { - "time": 0, - "x": 0, - "y": 0, - "curve": [ 0, 0.3, 0.678, 1 ] - }, - { "time": 0.3, "x": 2.81, "y": 11.41 }, - { "time": 0.4, "x": 0, "y": 0 } - ] - } - } - }, - "test": { - "slots": { - "front_foot": { - "color": [ - { "time": 0.6666, "color": "ffffffff" }, - { "time": 1.3333, "color": "ff0700ff" } - ] - }, - "gun": { - "color": [ - { "time": 0, "color": "ffffffff", "curve": "stepped" }, - { "time": 0.6666, "color": "ffffffff" }, - { "time": 1.3333, "color": "32ff00ff" } - ] - }, - "rear_foot": { - "color": [ - { "time": 0.6666, "color": "ffffffff" }, - { "time": 1.3333, "color": "ff0700ff" } - ] - } - }, - "bones": { - "head": { - "rotate": [ - { "time": 0, "angle": 0 }, - { "time": 0.3333, "angle": -20.72 }, - { "time": 0.6666, "angle": -32.41 }, - { "time": 1, "angle": -5.3 }, - { "time": 1.3333, "angle": 24.96 }, - { "time": 1.6666, "angle": 15.61 }, - { "time": 2, "angle": 0 } - ], - "translate": [ - { - "time": 0, - "x": 0, - "y": 0, - "curve": [ 0.172, 0.37, 0.574, 0.73 ] - }, - { - "time": 0.1666, - "x": 144.19, - "y": -77.59, - "curve": [ 0.372, 0.61, 0.765, 1 ] - }, - { - "time": 0.3333, - "x": 217.61, - "y": -192.63, - "curve": [ 0.282, 0, 0.624, 0.31 ] - }, - { - "time": 0.5, - "x": 181.21, - "y": -365.66, - "curve": [ 0.313, 0.21, 0.654, 0.54 ] - }, - { - "time": 0.6666, - "x": 20.09, - "y": -500.4, - "curve": [ 0.147, 0.27, 0.75, 1 ] - }, - { "time": 0.8333, "x": -194.24, "y": -341.84 }, - { "time": 1, "x": -307.93, "y": -114 }, - { - "time": 1.1666, - "x": -330.38, - "y": 121.42, - "curve": [ 0.25, 0, 0.764, 0.48 ] - }, - { - "time": 1.3333, - "x": -240.42, - "y": 335.66, - "curve": [ 0.229, 0.37, 0.58, 0.73 ] - }, - { - "time": 1.5, - "x": -56.12, - "y": 288.06, - "curve": [ 0.296, 0.6, 0.641, 1 ] - }, - { - "time": 1.6666, - "x": 87.63, - "y": 191.33, - "curve": [ 0.238, 0, 0.626, 0.39 ] - }, - { - "time": 1.8333, - "x": 60.62, - "y": 95.14, - "curve": [ 0.41, 0.26, 0.803, 0.62 ] - }, - { "time": 2, "x": 0, "y": 0 } - ] - } - }, - "draworder": [ - { - "time": 0.6666, - "offsets": [ - { "slot": "head", "offset": -9 }, - { "slot": "eye", "offset": -9 }, - { "slot": "mouth", "offset": -12 }, - { "slot": "goggles", "offset": -12 } - ] - }, - { "time": 1.3333 } - ], - "events": [ - { "time": 0, "name": "headPop", "int": 0, "float": 0, "string": "pop.wav" }, - { "time": 1, "name": "headBehind", "int": 7, "float": 8, "string": "animate" }, - { "time": 2, "name": "headAttach", "int": 0, "float": 0, "string": "attach.wav" } - ] - }, - "walk": { - "slots": { - "front_fist": { - "attachment": [ - { "time": 0, "name": "front_fist_closed" } - ] - }, - "mouth": { - "attachment": [ - { "time": 0, "name": "mouth_smile" } - ] - }, - "torso": { - "attachment": [ - { "time": 0, "name": "torso" } - ] - } - }, - "bones": { - "front_thigh": { - "rotate": [ - { "time": 0, "angle": 15.79 }, - { "time": 0.1, "angle": 27.39 }, - { "time": 0.2, "angle": -7.94 }, - { "time": 0.3, "angle": -16.94 }, - { "time": 0.4, "angle": -28.62 }, - { "time": 0.5, "angle": -19.3 }, - { "time": 0.6, "angle": -3.08 }, - { "time": 0.7, "angle": 29.51 }, - { "time": 0.8, "angle": 15.79 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 }, - { "time": 0.4, "x": -1.18, "y": 0.54 }, - { "time": 0.5, "x": 0.11, "y": 0.41 }, - { "time": 0.6, "x": 9.48, "y": 0.27 }, - { "time": 0.8, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.4, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "front_shin": { - "rotate": [ - { "time": 0, "angle": 5.12 }, - { "time": 0.1, "angle": -20.87 }, - { "time": 0.2, "angle": 13.37 }, - { "time": 0.3, "angle": 15.98 }, - { "time": 0.4, "angle": 5.94 }, - { "time": 0.5, "angle": -26.76 }, - { "time": 0.7, "angle": -55.44 }, - { "time": 0.8, "angle": 5.12 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.8, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "rear_thigh": { - "rotate": [ - { "time": 0, "angle": -34.38 }, - { "time": 0.1, "angle": -30.32 }, - { "time": 0.2, "angle": -37.22 }, - { "time": 0.3, "angle": 20.73 }, - { "time": 0.4, "angle": 8.69 }, - { "time": 0.5, "angle": 12.16 }, - { "time": 0.6, "angle": -24.62 }, - { "time": 0.7, "angle": -27.26 }, - { "time": 0.8, "angle": -34.38 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 }, - { "time": 0.4, "x": 4.08, "y": -9.53 }, - { "time": 0.5, "x": 0, "y": 0 }, - { "time": 0.7, "x": -21.14, "y": -9.6 }, - { "time": 0.8, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "rear_shin": { - "rotate": [ - { "time": 0, "angle": 14.26 }, - { "time": 0.1, "angle": -17.3 }, - { "time": 0.2, "angle": -12.67 }, - { "time": 0.3, "angle": -58.89 }, - { "time": 0.4, "angle": 15.95 }, - { "time": 0.5, "angle": -9 }, - { "time": 0.6, "angle": 26.06 }, - { "time": 0.7, "angle": 21.85 }, - { "time": 0.8, "angle": 14.26 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.8, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 }, - { "time": 0.1, "x": 0.951, "y": 1 }, - { "time": 0.5, "x": 0.975, "y": 1 }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "rear_foot": { - "rotate": [ - { "time": 0, "angle": 10.13 }, - { "time": 0.1, "angle": 12.27 }, - { "time": 0.2, "angle": -2.94 }, - { "time": 0.3, "angle": 6.29 }, - { "time": 0.4, "angle": 13.45 }, - { "time": 0.5, "angle": -3.57 }, - { "time": 0.6, "angle": -0.97 }, - { "time": 0.7, "angle": 2.97 }, - { "time": 0.8, "angle": 10.13 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.8, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "front_upper_arm": { - "rotate": [ - { "time": 0, "angle": -23.74 }, - { "time": 0.4, "angle": -320.57 }, - { "time": 0.8, "angle": -23.74 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.8, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "rear_upper_arm": { - "rotate": [ - { "time": 0, "angle": 11.62 }, - { "time": 0.1, "angle": 19.36 }, - { "time": 0.4, "angle": 345.26 }, - { "time": 0.5, "angle": 343.44 }, - { "time": 0.8, "angle": 11.62 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.8, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "torso": { - "rotate": [ - { "time": 0, "angle": -12.11 }, - { "time": 0.1666, "angle": -17.16 }, - { "time": 0.4, "angle": -12.11 }, - { "time": 0.5666, "angle": -15.81 }, - { "time": 0.8, "angle": -12.11 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "neck": { - "rotate": [ - { "time": 0, "angle": 1.41 }, - { "time": 0.2333, "angle": -3.04 }, - { "time": 0.4, "angle": 1.41 }, - { "time": 0.6333, "angle": -3.04 }, - { "time": 0.8, "angle": 1.41 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.4, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.8, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "head": { - "rotate": [ - { "time": 0, "angle": 6.97 }, - { "time": 0.1666, "angle": 8.02 }, - { "time": 0.2666, "angle": 12.65 }, - { "time": 0.4, "angle": 6.97 }, - { "time": 0.5666, "angle": 8.02 }, - { "time": 0.6666, "angle": 12.65 }, - { "time": 0.8, "angle": 6.97 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.4, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.8, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "hip": { - "rotate": [ - { "time": 0, "angle": 0, "curve": "stepped" }, - { "time": 0.8, "angle": 0 } - ], - "translate": [ - { - "time": 0, - "x": -23.93, - "y": 3.22, - "curve": [ 0.518, 0.03, 0.807, 0.61 ] - }, - { - "time": 0.1, - "x": -23.93, - "y": -9.24, - "curve": [ 0.135, 0.33, 0.601, 0.99 ] - }, - { - "time": 0.2, - "x": -23.93, - "y": 4.35, - "curve": [ 0.204, 0.68, 0.75, 1 ] - }, - { - "time": 0.3, - "x": -23.93, - "y": 2.38, - "curve": [ 0.25, 0, 0.75, 1 ] - }, - { - "time": 0.4, - "x": -23.93, - "y": -2.5, - "curve": [ 0.692, 0.01, 0.75, 1 ] - }, - { - "time": 0.5, - "x": -23.93, - "y": -10.32, - "curve": [ 0.235, 0.77, 0.75, 1 ] - }, - { - "time": 0.6, - "x": -23.93, - "y": 4.35, - "curve": [ 0.287, 0.37, 0.718, 0.76 ] - }, - { - "time": 0.7, - "x": -23.93, - "y": 10.34, - "curve": [ 0.615, 0, 0.75, 1 ] - }, - { "time": 0.8, "x": -23.93, "y": 3.22 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "front_bracer": { - "rotate": [ - { "time": 0, "angle": 0 }, - { "time": 0.4, "angle": 20.59 }, - { "time": 0.8, "angle": 0 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.8, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "front_foot": { - "rotate": [ - { "time": 0, "angle": 12.49 }, - { "time": 0.1, "angle": -8.34 }, - { "time": 0.2, "angle": -6.17 }, - { "time": 0.3, "angle": -0.75 }, - { "time": 0.3333, "angle": 3.89 }, - { "time": 0.4, "angle": 10.22 }, - { "time": 0.5, "angle": 11.44 }, - { "time": 0.6, "angle": -0.33 }, - { "time": 0.7, "angle": 0.15 }, - { "time": 0.8, "angle": 12.49 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.8, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "rear_bracer": { - "rotate": [ - { "time": 0, "angle": 3.58 }, - { "time": 0.1, "angle": 5.51 }, - { "time": 0.4, "angle": -22.77 }, - { "time": 0.5, "angle": -9.65 }, - { "time": 0.8, "angle": 3.58 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.8, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "front_fist": { - "rotate": [ - { "time": 0, "angle": -15.22 }, - { "time": 0.1, "angle": -51.4 }, - { "time": 0.4, "angle": -39.4 }, - { "time": 0.5, "angle": 19.26 }, - { "time": 0.8, "angle": -15.22 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.8, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "gun": { - "rotate": [ - { - "time": 0, - "angle": -24.06, - "curve": [ 0.25, 0, 0.75, 1 ] - }, - { - "time": 0.1, - "angle": -10.94, - "curve": [ 0.381, 0.54, 0.742, 1 ] - }, - { - "time": 0.4, - "angle": 25.34, - "curve": [ 0.25, 0, 0.75, 1 ] - }, - { - "time": 0.6666, - "angle": -27.47, - "curve": [ 0.25, 0, 0.75, 1 ] - }, - { "time": 0.8, "angle": -24.06 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.8, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - } - } - } -} -} \ No newline at end of file diff --git a/spine-corona/examples/spineboy-atlas/spineboy.lua b/spine-corona/examples/spineboy-atlas/spineboy.lua deleted file mode 100644 index db1abbdf8..000000000 --- a/spine-corona/examples/spineboy-atlas/spineboy.lua +++ /dev/null @@ -1,87 +0,0 @@ - --- This example shows simple usage of displaying a skeleton with queued animations. - -local spine = require "spine-corona.spine" - - - -local json = spine.SkeletonJson.new() -json.scale = 0.6 -local skeletonData = json:readSkeletonDataFile("examples/spineboy-atlas/spineboy.json") - -local skeleton = spine.Skeleton.new(skeletonData) - -local sprites = spine.GetAtlasSprites( "examples/spineboy-atlas/spineboy.atlas" ) -sprites.ATLAS_HELPER_setup(skeleton) - -skeleton.group.x = display.contentWidth * 0.75 -skeleton.group.y = display.contentHeight * 0.9 -skeleton.flipX = false -skeleton.flipY = false -skeleton.debug = true -- Omit or set to false to not draw debug lines on top of the images. -skeleton.debugAabb = true -skeleton:setToSetupPose() - -local bounds = spine.SkeletonBounds.new() - --- AnimationStateData defines crossfade durations between animations. -local stateData = spine.AnimationStateData.new(skeletonData) -stateData:setMix("walk", "jump", 0.2) -stateData:setMix("jump", "run", 0.2) - --- AnimationState has a queue of animations and can apply them with crossfading. -local state = spine.AnimationState.new(stateData) --- state:setAnimationByName(0, "test") -state:setAnimationByName(0, "walk", true) -state:addAnimationByName(0, "jump", false, 3) -state:addAnimationByName(0, "run", true, 0) - -state.onStart = function (trackIndex) - -- print(trackIndex.." start: "..state:getCurrent(trackIndex).animation.name) -end -state.onEnd = function (trackIndex) - -- print(trackIndex.." end: "..state:getCurrent(trackIndex).animation.name) -end -state.onComplete = function (trackIndex, loopCount) - -- print(trackIndex.." complete: "..state:getCurrent(trackIndex).animation.name..", "..loopCount) -end -state.onEvent = function (trackIndex, event) - -- print(trackIndex.." event: "..state:getCurrent(trackIndex).animation.name..", "..event.data.name..", "..event.intValue..", "..event.floatValue..", '"..(event.stringValue or "").."'") -end - -local lastTime = 0 -local touchX = 999999 -local touchY = 999999 -local headSlot = skeleton:findSlot("head") -Runtime:addEventListener("enterFrame", function (event) - -- Compute time in seconds since last frame. - local currentTime = event.time / 1000 - local delta = currentTime - lastTime - lastTime = currentTime - - -- Bounding box hit detection. - bounds:update(skeleton, true) - if bounds:containsPoint(touchX, touchY) then - headSlot.g = 0; - headSlot.b = 0; - else - headSlot.g = 1; - headSlot.b = 1; - end - - -- Update the state with the delta time, apply it, and update the world transforms. - state:update(delta) - state:apply(skeleton) - skeleton:updateWorldTransform() -end) - -Runtime:addEventListener("touch", function (event) - if event.phase ~= "ended" and event.phase ~= "cancelled" then - -- Make the coordinates relative to the skeleton's group. - touchX = event.x - skeleton.group.x - touchY = skeleton.group.y - event.y - else - touchX = 999999 - touchY = 999999 - end -end) diff --git a/spine-corona/examples/spineboy-atlas/spineboy.png b/spine-corona/examples/spineboy-atlas/spineboy.png deleted file mode 100644 index dce2fe3e2..000000000 Binary files a/spine-corona/examples/spineboy-atlas/spineboy.png and /dev/null differ diff --git a/spine-corona/examples/spineboy/images/eye_indifferent.png b/spine-corona/examples/spineboy/images/eye_indifferent.png deleted file mode 100644 index 1d29940ff..000000000 Binary files a/spine-corona/examples/spineboy/images/eye_indifferent.png and /dev/null differ diff --git a/spine-corona/examples/spineboy/images/eye_surprised.png b/spine-corona/examples/spineboy/images/eye_surprised.png deleted file mode 100644 index f411f9432..000000000 Binary files a/spine-corona/examples/spineboy/images/eye_surprised.png and /dev/null differ diff --git a/spine-corona/examples/spineboy/images/eyes-closed.png b/spine-corona/examples/spineboy/images/eyes-closed.png deleted file mode 100644 index 60718e101..000000000 Binary files a/spine-corona/examples/spineboy/images/eyes-closed.png and /dev/null differ diff --git a/spine-corona/examples/spineboy/images/eyes.png b/spine-corona/examples/spineboy/images/eyes.png deleted file mode 100644 index 707c91b72..000000000 Binary files a/spine-corona/examples/spineboy/images/eyes.png and /dev/null differ diff --git a/spine-corona/examples/spineboy/images/front_bracer.png b/spine-corona/examples/spineboy/images/front_bracer.png deleted file mode 100644 index aa0fca6fd..000000000 Binary files a/spine-corona/examples/spineboy/images/front_bracer.png and /dev/null differ diff --git a/spine-corona/examples/spineboy/images/front_fist_closed.png b/spine-corona/examples/spineboy/images/front_fist_closed.png deleted file mode 100644 index eb8b24217..000000000 Binary files a/spine-corona/examples/spineboy/images/front_fist_closed.png and /dev/null differ diff --git a/spine-corona/examples/spineboy/images/front_fist_open.png b/spine-corona/examples/spineboy/images/front_fist_open.png deleted file mode 100644 index c950492d7..000000000 Binary files a/spine-corona/examples/spineboy/images/front_fist_open.png and /dev/null differ diff --git a/spine-corona/examples/spineboy/images/front_foot.png b/spine-corona/examples/spineboy/images/front_foot.png deleted file mode 100644 index 69ea494c3..000000000 Binary files a/spine-corona/examples/spineboy/images/front_foot.png and /dev/null differ diff --git a/spine-corona/examples/spineboy/images/front_foot_bend1.png b/spine-corona/examples/spineboy/images/front_foot_bend1.png deleted file mode 100644 index 6cbc1ffcc..000000000 Binary files a/spine-corona/examples/spineboy/images/front_foot_bend1.png and /dev/null differ diff --git a/spine-corona/examples/spineboy/images/front_foot_bend2.png b/spine-corona/examples/spineboy/images/front_foot_bend2.png deleted file mode 100644 index e6b3942c7..000000000 Binary files a/spine-corona/examples/spineboy/images/front_foot_bend2.png and /dev/null differ diff --git a/spine-corona/examples/spineboy/images/front_shin.png b/spine-corona/examples/spineboy/images/front_shin.png deleted file mode 100644 index e63bef05b..000000000 Binary files a/spine-corona/examples/spineboy/images/front_shin.png and /dev/null differ diff --git a/spine-corona/examples/spineboy/images/front_thigh.png b/spine-corona/examples/spineboy/images/front_thigh.png deleted file mode 100644 index 91dbd8df5..000000000 Binary files a/spine-corona/examples/spineboy/images/front_thigh.png and /dev/null differ diff --git a/spine-corona/examples/spineboy/images/front_upper_arm.png b/spine-corona/examples/spineboy/images/front_upper_arm.png deleted file mode 100644 index 49d16d286..000000000 Binary files a/spine-corona/examples/spineboy/images/front_upper_arm.png and /dev/null differ diff --git a/spine-corona/examples/spineboy/images/goggles.png b/spine-corona/examples/spineboy/images/goggles.png deleted file mode 100644 index 7eb52b9db..000000000 Binary files a/spine-corona/examples/spineboy/images/goggles.png and /dev/null differ diff --git a/spine-corona/examples/spineboy/images/gun.png b/spine-corona/examples/spineboy/images/gun.png deleted file mode 100644 index 2ba05f556..000000000 Binary files a/spine-corona/examples/spineboy/images/gun.png and /dev/null differ diff --git a/spine-corona/examples/spineboy/images/head.png b/spine-corona/examples/spineboy/images/head.png deleted file mode 100644 index 2d7f66abf..000000000 Binary files a/spine-corona/examples/spineboy/images/head.png and /dev/null differ diff --git a/spine-corona/examples/spineboy/images/left-ankle.png b/spine-corona/examples/spineboy/images/left-ankle.png deleted file mode 100644 index fcf9a2813..000000000 Binary files a/spine-corona/examples/spineboy/images/left-ankle.png and /dev/null differ diff --git a/spine-corona/examples/spineboy/images/left-arm.png b/spine-corona/examples/spineboy/images/left-arm.png deleted file mode 100644 index 4447dec8a..000000000 Binary files a/spine-corona/examples/spineboy/images/left-arm.png and /dev/null differ diff --git a/spine-corona/examples/spineboy/images/left-foot.png b/spine-corona/examples/spineboy/images/left-foot.png deleted file mode 100644 index 9b8768277..000000000 Binary files a/spine-corona/examples/spineboy/images/left-foot.png and /dev/null differ diff --git a/spine-corona/examples/spineboy/images/left-hand.png b/spine-corona/examples/spineboy/images/left-hand.png deleted file mode 100644 index b95a3523c..000000000 Binary files a/spine-corona/examples/spineboy/images/left-hand.png and /dev/null differ diff --git a/spine-corona/examples/spineboy/images/left-lower-leg.png b/spine-corona/examples/spineboy/images/left-lower-leg.png deleted file mode 100644 index f316b6500..000000000 Binary files a/spine-corona/examples/spineboy/images/left-lower-leg.png and /dev/null differ diff --git a/spine-corona/examples/spineboy/images/left-pant-bottom.png b/spine-corona/examples/spineboy/images/left-pant-bottom.png deleted file mode 100644 index 29a05bc4f..000000000 Binary files a/spine-corona/examples/spineboy/images/left-pant-bottom.png and /dev/null differ diff --git a/spine-corona/examples/spineboy/images/left-shoulder.png b/spine-corona/examples/spineboy/images/left-shoulder.png deleted file mode 100644 index 7fd429dc3..000000000 Binary files a/spine-corona/examples/spineboy/images/left-shoulder.png and /dev/null differ diff --git a/spine-corona/examples/spineboy/images/left-upper-leg.png b/spine-corona/examples/spineboy/images/left-upper-leg.png deleted file mode 100644 index f076d5c91..000000000 Binary files a/spine-corona/examples/spineboy/images/left-upper-leg.png and /dev/null differ diff --git a/spine-corona/examples/spineboy/images/mouth_grind.png b/spine-corona/examples/spineboy/images/mouth_grind.png deleted file mode 100644 index 60046ab92..000000000 Binary files a/spine-corona/examples/spineboy/images/mouth_grind.png and /dev/null differ diff --git a/spine-corona/examples/spineboy/images/mouth_oooo.png b/spine-corona/examples/spineboy/images/mouth_oooo.png deleted file mode 100644 index e3dc2b1e2..000000000 Binary files a/spine-corona/examples/spineboy/images/mouth_oooo.png and /dev/null differ diff --git a/spine-corona/examples/spineboy/images/mouth_smile.png b/spine-corona/examples/spineboy/images/mouth_smile.png deleted file mode 100644 index 7a2276ee5..000000000 Binary files a/spine-corona/examples/spineboy/images/mouth_smile.png and /dev/null differ diff --git a/spine-corona/examples/spineboy/images/muzzle.png b/spine-corona/examples/spineboy/images/muzzle.png deleted file mode 100644 index 6d53f3ad8..000000000 Binary files a/spine-corona/examples/spineboy/images/muzzle.png and /dev/null differ diff --git a/spine-corona/examples/spineboy/images/neck.png b/spine-corona/examples/spineboy/images/neck.png deleted file mode 100644 index 544ea1ed2..000000000 Binary files a/spine-corona/examples/spineboy/images/neck.png and /dev/null differ diff --git a/spine-corona/examples/spineboy/images/pelvis.png b/spine-corona/examples/spineboy/images/pelvis.png deleted file mode 100644 index f52c33cdd..000000000 Binary files a/spine-corona/examples/spineboy/images/pelvis.png and /dev/null differ diff --git a/spine-corona/examples/spineboy/images/rear_bracer.png b/spine-corona/examples/spineboy/images/rear_bracer.png deleted file mode 100644 index 06b9c9cd7..000000000 Binary files a/spine-corona/examples/spineboy/images/rear_bracer.png and /dev/null differ diff --git a/spine-corona/examples/spineboy/images/rear_foot.png b/spine-corona/examples/spineboy/images/rear_foot.png deleted file mode 100644 index 6fdf9ad60..000000000 Binary files a/spine-corona/examples/spineboy/images/rear_foot.png and /dev/null differ diff --git a/spine-corona/examples/spineboy/images/rear_foot_bend1.png b/spine-corona/examples/spineboy/images/rear_foot_bend1.png deleted file mode 100644 index 10f2a72e9..000000000 Binary files a/spine-corona/examples/spineboy/images/rear_foot_bend1.png and /dev/null differ diff --git a/spine-corona/examples/spineboy/images/rear_foot_bend2.png b/spine-corona/examples/spineboy/images/rear_foot_bend2.png deleted file mode 100644 index 01dff6265..000000000 Binary files a/spine-corona/examples/spineboy/images/rear_foot_bend2.png and /dev/null differ diff --git a/spine-corona/examples/spineboy/images/rear_shin.png b/spine-corona/examples/spineboy/images/rear_shin.png deleted file mode 100644 index 02335c263..000000000 Binary files a/spine-corona/examples/spineboy/images/rear_shin.png and /dev/null differ diff --git a/spine-corona/examples/spineboy/images/rear_thigh.png b/spine-corona/examples/spineboy/images/rear_thigh.png deleted file mode 100644 index d5da9f15d..000000000 Binary files a/spine-corona/examples/spineboy/images/rear_thigh.png and /dev/null differ diff --git a/spine-corona/examples/spineboy/images/rear_upper_arm.png b/spine-corona/examples/spineboy/images/rear_upper_arm.png deleted file mode 100644 index 52d3a9ef5..000000000 Binary files a/spine-corona/examples/spineboy/images/rear_upper_arm.png and /dev/null differ diff --git a/spine-corona/examples/spineboy/images/right-ankle.png b/spine-corona/examples/spineboy/images/right-ankle.png deleted file mode 100644 index 92fc568cf..000000000 Binary files a/spine-corona/examples/spineboy/images/right-ankle.png and /dev/null differ diff --git a/spine-corona/examples/spineboy/images/right-arm.png b/spine-corona/examples/spineboy/images/right-arm.png deleted file mode 100644 index cac970f4b..000000000 Binary files a/spine-corona/examples/spineboy/images/right-arm.png and /dev/null differ diff --git a/spine-corona/examples/spineboy/images/right-foot-idle.png b/spine-corona/examples/spineboy/images/right-foot-idle.png deleted file mode 100644 index aaf609f4e..000000000 Binary files a/spine-corona/examples/spineboy/images/right-foot-idle.png and /dev/null differ diff --git a/spine-corona/examples/spineboy/images/right-foot.png b/spine-corona/examples/spineboy/images/right-foot.png deleted file mode 100644 index 7a06bf2de..000000000 Binary files a/spine-corona/examples/spineboy/images/right-foot.png and /dev/null differ diff --git a/spine-corona/examples/spineboy/images/right-hand.png b/spine-corona/examples/spineboy/images/right-hand.png deleted file mode 100644 index 17c62bf4a..000000000 Binary files a/spine-corona/examples/spineboy/images/right-hand.png and /dev/null differ diff --git a/spine-corona/examples/spineboy/images/right-lower-leg.png b/spine-corona/examples/spineboy/images/right-lower-leg.png deleted file mode 100644 index 1f00e8ec9..000000000 Binary files a/spine-corona/examples/spineboy/images/right-lower-leg.png and /dev/null differ diff --git a/spine-corona/examples/spineboy/images/right-pant-bottom.png b/spine-corona/examples/spineboy/images/right-pant-bottom.png deleted file mode 100644 index 73309c05d..000000000 Binary files a/spine-corona/examples/spineboy/images/right-pant-bottom.png and /dev/null differ diff --git a/spine-corona/examples/spineboy/images/right-shoulder.png b/spine-corona/examples/spineboy/images/right-shoulder.png deleted file mode 100644 index 23e9a2fd1..000000000 Binary files a/spine-corona/examples/spineboy/images/right-shoulder.png and /dev/null differ diff --git a/spine-corona/examples/spineboy/images/right-upper-leg.png b/spine-corona/examples/spineboy/images/right-upper-leg.png deleted file mode 100644 index df0b11661..000000000 Binary files a/spine-corona/examples/spineboy/images/right-upper-leg.png and /dev/null differ diff --git a/spine-corona/examples/spineboy/images/torso.png b/spine-corona/examples/spineboy/images/torso.png deleted file mode 100644 index c38b2ef45..000000000 Binary files a/spine-corona/examples/spineboy/images/torso.png and /dev/null differ diff --git a/spine-corona/examples/spineboy/spineboy-mesh.json b/spine-corona/examples/spineboy/spineboy-mesh.json deleted file mode 100755 index 99bc632f0..000000000 --- a/spine-corona/examples/spineboy/spineboy-mesh.json +++ /dev/null @@ -1,989 +0,0 @@ -{ -"skeleton": { "hash": "UKMzD/MoxDbC0KR0YvXCqhXtBzo", "spine": "Dev", "width": 0, "height": 0, "images": "./images/" }, -"bones": [ - { "name": "root" }, - { "name": "front_foot_ik", "parent": "root", "x": -13.52, "y": 0.04, "color": "ff3f00ff" }, - { "name": "hip", "parent": "root", "y": 247.26 }, - { "name": "rear_foot_ik", "parent": "root", "x": 61.9, "y": 0.42, "color": "ff3f00ff" }, - { "name": "front_ankle_ik", "parent": "front_foot_ik", "x": -28.39, "y": 29.06, "color": "ff3f00ff" }, - { "name": "front_thigh", "parent": "hip", "length": 74.8, "x": -17.45, "y": -11.64, "rotation": -95.51, "color": "00ff04ff" }, - { "name": "rear_ankle_ik", "parent": "rear_foot_ik", "x": -33.9, "y": 37.33, "color": "ff3f00ff" }, - { "name": "rear_thigh", "parent": "hip", "length": 85.71, "x": 8.91, "y": -5.62, "rotation": -72.54, "color": "ff000dff" }, - { "name": "torso", "parent": "hip", "length": 127.55, "x": -1.61, "y": 4.9, "rotation": 103.82, "color": "e0da19ff" }, - { - "name": "front_shin", - "parent": "front_thigh", - "length": 128.76, - "x": 78.69, - "y": 1.6, - "rotation": -2.21, - "inheritScale": false, - "color": "00ff04ff" - }, - { "name": "front_upper_arm", "parent": "torso", "length": 69.45, "x": 103.75, "y": 19.32, "rotation": 168.37, "color": "00ff04ff" }, - { "name": "neck", "parent": "torso", "length": 25.45, "x": 127.49, "y": -0.3, "rotation": -31.53, "color": "e0da19ff" }, - { "name": "rear_shin", "parent": "rear_thigh", "length": 121.87, "x": 86.1, "y": -1.32, "rotation": -19.83, "color": "ff000dff" }, - { "name": "rear_upper_arm", "parent": "torso", "length": 51.93, "x": 92.35, "y": -19.22, "rotation": -169.55, "color": "ff000dff" }, - { - "name": "front_bracer", - "parent": "front_upper_arm", - "length": 40.57, - "x": 68.8, - "y": -0.68, - "rotation": 18.29, - "color": "00ff04ff" - }, - { "name": "front_foot", "parent": "front_shin", "length": 41, "x": 128.75, "y": -0.33, "rotation": 51.26, "color": "00ff04ff" }, - { "name": "head", "parent": "neck", "length": 131.79, "x": 27.66, "y": -0.25, "rotation": 23.18, "color": "e0da19ff" }, - { "name": "rear_bracer", "parent": "rear_upper_arm", "length": 34.55, "x": 51.35, "rotation": 23.15, "color": "ff000dff" }, - { "name": "rear_foot", "parent": "rear_shin", "length": 51.58, "x": 121.45, "y": -0.75, "rotation": 45.77, "color": "ff000dff" }, - { - "name": "back_foot_tip", - "parent": "rear_foot", - "length": 50.3, - "x": 51.16, - "y": 0.23, - "rotation": -0.85, - "inheritRotation": false, - "color": "ff000dff" - }, - { "name": "front_fist", "parent": "front_bracer", "length": 65.38, "x": 40.56, "y": 0.19, "rotation": 12.43, "color": "00ff04ff" }, - { - "name": "front_foot_tip", - "parent": "front_foot", - "length": 56.02, - "x": 41.42, - "y": -0.08, - "rotation": -1.67, - "inheritRotation": false, - "color": "00ff04ff" - }, - { "name": "gun", "parent": "rear_bracer", "length": 43.1, "x": 34.42, "y": -0.45, "rotation": 5.34, "color": "ff000dff" }, - { "name": "hair1", "parent": "head", "length": 47.22, "x": 149.82, "y": -59.77, "rotation": -49.1, "color": "e0da19ff" }, - { "name": "hair3", "parent": "head", "length": 62.22, "x": 164.13, "y": 3.68, "rotation": -32.16, "color": "e0da19ff" }, - { "name": "gunTip", "parent": "gun", "x": 201.04, "y": 52.13, "rotation": 6.83, "color": "ff000dff" }, - { "name": "hair2", "parent": "hair1", "length": 55.56, "x": 47.22, "y": 0.18, "rotation": 50.41, "color": "e0da19ff" }, - { "name": "hair4", "parent": "hair3", "length": 80.28, "x": 62.22, "y": -0.03, "rotation": 83.7, "color": "e0da19ff" } -], -"ik": [ - { - "name": "front_ankle_ik", - "bones": [ "front_thigh", "front_shin" ], - "target": "front_ankle_ik", - "bendPositive": false - }, - { - "name": "rear_ankle_ik", - "bones": [ "rear_thigh", "rear_shin" ], - "target": "rear_ankle_ik", - "bendPositive": false - }, - { - "name": "front_foot_ik", - "bones": [ "front_foot" ], - "target": "front_foot_ik" - }, - { - "name": "rear_foot_ik", - "bones": [ "rear_foot" ], - "target": "rear_foot_ik" - } -], -"slots": [ - { "name": "rear_upper_arm", "bone": "rear_upper_arm", "attachment": "rear_upper_arm" }, - { "name": "rear_bracer", "bone": "rear_bracer", "attachment": "rear_bracer" }, - { "name": "gun", "bone": "gun", "attachment": "gun" }, - { "name": "rear_foot", "bone": "rear_foot", "attachment": "rear_foot" }, - { "name": "rear_thigh", "bone": "rear_thigh", "attachment": "rear_thigh" }, - { "name": "rear_shin", "bone": "rear_shin", "attachment": "rear_shin" }, - { "name": "neck", "bone": "neck", "attachment": "neck" }, - { "name": "torso", "bone": "torso", "attachment": "torso" }, - { "name": "front_upper_arm", "bone": "front_upper_arm", "attachment": "front_upper_arm" }, - { "name": "head", "bone": "head", "attachment": "head" }, - { "name": "eye", "bone": "head", "attachment": "eye_indifferent" }, - { "name": "front_thigh", "bone": "front_thigh", "attachment": "front_thigh" }, - { "name": "front_foot", "bone": "front_foot", "attachment": "front_foot" }, - { "name": "front_shin", "bone": "front_shin", "attachment": "front_shin" }, - { "name": "mouth", "bone": "head", "attachment": "mouth_grind" }, - { "name": "goggles", "bone": "head", "attachment": "goggles" }, - { "name": "front_bracer", "bone": "front_bracer", "attachment": "front_bracer" }, - { "name": "front_fist", "bone": "front_fist", "attachment": "front_fist_closed" }, - { "name": "muzzle", "bone": "gunTip", "additive": true }, - { "name": "head-bb", "bone": "head" } -], -"skins": { - "default": { - "eye": { - "eye_indifferent": { - "type": "mesh", - "uvs": [ 1, 1, 0, 1, 0, 0, 1, 0 ], - "triangles": [ 1, 3, 0, 1, 2, 3 ], - "vertices": [ 59.16, -86.8, 28.32, 0.92, 112.27, 30.44, 143.11, -57.28 ], - "hull": 4, - "edges": [ 0, 2, 2, 4, 4, 6, 0, 6 ], - "width": 93, - "height": 89 - }, - "eye_surprised": { "x": 85.72, "y": -28.18, "rotation": -70.63, "width": 93, "height": 89 } - }, - "front_bracer": { - "front_bracer": { "x": 12.03, "y": -1.67, "rotation": 79.59, "width": 58, "height": 80 } - }, - "front_fist": { - "front_fist_closed": { "x": 35.49, "y": 6, "rotation": 67.16, "width": 75, "height": 82 }, - "front_fist_open": { "x": 39.56, "y": 7.76, "rotation": 67.16, "width": 86, "height": 87 } - }, - "front_foot": { - "front_foot": { - "type": "skinnedmesh", - "uvs": [ 0.59417, 0.23421, 0.62257, 0.30335, 0.65009, 0.37035, 0.67637, 0.38403, 0.72068, 0.40709, 0.76264, 0.42894, 1, 0.70375, 1, 1, 0.65517, 1, 0.3644, 1, 0, 1, 0, 0.39196, 0, 0, 0.17845, 0, 0.49795, 0 ], - "triangles": [ 8, 9, 3, 4, 8, 3, 8, 4, 5, 8, 5, 6, 8, 6, 7, 11, 12, 13, 11, 1, 10, 13, 14, 0, 0, 11, 13, 1, 11, 0, 2, 9, 10, 2, 10, 1, 9, 2, 3 ], - "vertices": [ 2, 15, 18.17, 41.57, 0.72, 21, 12.46, 46.04, 0.27, 2, 15, 24.08, 40.75, 0.57, 21, 16.12, 41.34, 0.42, 2, 15, 29.8, 39.97, 0.47, 21, 19.67, 36.77, 0.52, 2, 15, 32.8, 41.66, 0.37, 21, 22.99, 35.89, 0.62, 2, 15, 37.86, 44.51, 0.24, 21, 28.6, 34.4, 0.75, 2, 15, 42.65, 47.21, 0.17, 21, 33.91, 32.98, 0.82, 1, 21, 64.15, 14.56, 1, 1, 21, 64.51, -5.87, 1, 1, 21, 21.07, -6.63, 1, 2, 15, 35.38, -16.16, 0.99, 21, -15.54, -7.28, 0, 2, 15, 3.1, -48.81, 1, 21, -61.44, -8.09, 0, 2, 15, -26.72, -19.31, 1, 21, -62.18, 33.84, 0, 2, 15, -45.95, -0.29, 1, 21, -62.66, 60.88, 0, 1, 15, -30.14, 15.69, 1, 2, 15, -1.84, 44.31, 0.91, 21, 0.05, 61.98, 0.08 ], - "hull": 15, - "edges": [ 14, 16, 16, 18, 18, 20, 4, 18, 20, 22, 22, 24, 24, 26, 26, 28, 22, 26, 12, 14, 10, 12, 2, 4, 2, 20, 4, 6, 6, 16, 2, 0, 0, 28, 6, 8, 8, 10 ], - "width": 126, - "height": 69 - }, - "front_foot_bend1": { "x": 22.86, "y": 20.24, "rotation": 45.32, "width": 128, "height": 70 }, - "front_foot_bend2": { "x": 8.16, "y": 19.57, "rotation": 45.32, "width": 108, "height": 93 } - }, - "front_shin": { - "front_shin": { "x": 60.92, "y": -3.9, "rotation": 96.59, "width": 82, "height": 184 } - }, - "front_thigh": { - "front_thigh": { "x": 42.47, "y": 4.44, "rotation": 84.86, "width": 48, "height": 112 } - }, - "front_upper_arm": { - "front_upper_arm": { "x": 28.3, "y": 7.37, "rotation": 97.89, "width": 54, "height": 97 } - }, - "goggles": { - "goggles": { - "type": "mesh", - "uvs": [ 0.53653, 0.04113, 0.72921, 0.16035, 0.91666, 0.33222, 0.97046, 0.31329, 1, 0.48053, 0.95755, 0.57329, 0.88825, 0.63279, 0.86877, 0.78962, 0.77403, 0.86749, 0.72628, 1, 0.60713, 0.93862, 0.496, 0.88138, 0.41557, 0.75026, 0.32547, 0.70084, 0.2782, 0.58256, 0.17209, 0.63281, 0.17228, 0.75071, 0.1078, 0.79897, 0, 0.32304, 0, 0.12475, 0.07372, 0.07343, 0.15423, 0.10733, 0.23165, 0.13994, 0.30313, 0.02256, 0.34802, 0, 0.42978, 0.69183, 0.39475, 0.51041, 0.39488, 0.31511, 0.45878, 0.23197, 0.56501, 0.28108, 0.6996, 0.39216, 0.82039, 0.54203, 0.85737, 0.62342, 0.91107, 0.51407, 0.72638, 0.32146, 0.58763, 0.19609, 0.48074, 0.11268, 0.37822, 0.05501, 0.32869, 0.17866, 0.31899, 0.30499, 0.36035, 0.53798, 0.40327, 0.70072, 0.30058, 0.55837, 0.21956, 0.2815, 0.09963, 0.28942, 0.56862, 0.4368, 0.4911, 0.37156, 0.51184, 0.52092, 0.67018, 0.59303, 0.7619, 0.68574, 0.73296, 0.43354 ], - "triangles": [ 49, 8, 48, 9, 48, 8, 12, 25, 11, 48, 9, 10, 47, 48, 10, 47, 10, 25, 25, 10, 11, 8, 49, 7, 17, 15, 16, 17, 18, 15, 49, 32, 7, 7, 32, 6, 41, 42, 40, 12, 41, 25, 41, 12, 42, 13, 14, 42, 12, 13, 42, 41, 40, 25, 40, 26, 25, 25, 26, 47, 49, 31, 32, 31, 49, 50, 18, 44, 15, 42, 14, 44, 14, 15, 44, 5, 6, 33, 6, 32, 33, 32, 31, 33, 47, 45, 48, 49, 48, 50, 50, 45, 30, 50, 48, 45, 42, 44, 43, 5, 33, 4, 42, 39, 40, 42, 43, 39, 31, 50, 33, 40, 39, 26, 45, 47, 46, 33, 2, 4, 2, 33, 34, 47, 26, 46, 26, 27, 46, 26, 39, 27, 2, 3, 4, 30, 45, 29, 30, 34, 50, 33, 50, 34, 45, 46, 29, 30, 29, 34, 27, 28, 46, 46, 28, 29, 18, 19, 44, 29, 35, 34, 2, 34, 1, 34, 35, 1, 28, 27, 38, 27, 39, 38, 39, 43, 38, 44, 19, 21, 44, 21, 43, 21, 19, 20, 43, 22, 38, 43, 21, 22, 29, 28, 35, 28, 36, 35, 28, 38, 36, 36, 0, 35, 35, 0, 1, 22, 23, 38, 38, 37, 36, 37, 23, 24, 37, 38, 23, 36, 37, 0, 37, 24, 0 ], - "vertices": [ 172.08, 22.81, 170.09, -31.19, 159.41, -86.8, 167.03, -99, 143.39, -115.48, 125.2, -110.14, 109.88, -96.35, 83.64, -100.19, 63.25, -81.15, 38.37, -76.69, 37.66, -43.98, 37, -13.47, 50.57, 13.54, 50.51, 38.45, 64.94, 56.6, 47.89, 79.94, 29.45, 73.42, 16.31, 86.63, 81.5, 139.38, 112.55, 150.28, 126.97, 134.97, 128.63, 113.28, 130.22, 92.43, 154.78, 81.29, 162.21, 71.48, 60.96, 13.26, 86.33, 31.87, 116.92, 42.6, 135.47, 31.44, 136.98, 2.58, 131.23, -36.66, 118.22, -74.65, 108.68, -88.23, 130.45, -95.43, 144.62, -39.36, 152.24, 1.69, 156.05, 32.59, 156.21, 61.01, 132.56, 66.4, 111.94, 61.83, 79.03, 38.83, 57.27, 19.29, 70.67, 52.42, 107.01, 87.61, 95.39, 116.7, 112.91, -6.87, 116.41, 15.8, 94.82, 2.47, 97.23, -40.47, 90.66, -68.16, 127.64, -47.15 ], - "hull": 25, - "edges": [ 36, 34, 34, 32, 32, 30, 30, 28, 28, 26, 26, 24, 24, 22, 18, 16, 16, 14, 14, 12, 12, 10, 10, 8, 8, 6, 6, 4, 4, 2, 2, 0, 0, 48, 48, 46, 46, 44, 36, 38, 40, 38, 24, 50, 50, 52, 52, 54, 54, 56, 56, 58, 58, 60, 62, 64, 64, 12, 8, 66, 66, 68, 68, 70, 70, 72, 72, 74, 74, 76, 76, 78, 78, 80, 80, 82, 82, 24, 24, 84, 84, 86, 86, 44, 40, 42, 42, 44, 42, 88, 88, 30, 58, 90, 90, 92, 92, 94, 18, 20, 20, 22, 94, 20, 18, 96, 96, 98, 60, 100, 100, 62, 98, 100 ], - "width": 261, - "height": 166 - } - }, - "gun": { - "gun": { "x": 77.3, "y": 16.4, "rotation": 60.82, "width": 210, "height": 203 } - }, - "head": { - "head": { - "type": "skinnedmesh", - "uvs": [ 0.75918, 0.06107, 0.88392, 0.17892, 0.90174, 0.30856, 0.94223, 0.1966, 1, 0.26584, 1, 0.42199, 0.95863, 0.46992, 0.92118, 0.51333, 0.85957, 0.53469, 0.78388, 0.65605, 0.74384, 0.74838, 0.85115, 0.75151, 0.84828, 0.82563, 0.8178, 0.85367, 0.75598, 0.85906, 0.76236, 0.90467, 0.65875, 1, 0.38336, 1, 0.18579, 0.85403, 0.12741, 0.8109, 0.06024, 0.69209, 0, 0.58551, 0, 0.41021, 0.08529, 0.20691, 0.24243, 0.14504, 0.49999, 0.14209, 0.50323, 0.07433, 0.41738, 0, 0.57613, 0, 0.85059, 0.36086, 0.73431, 0.43206, 0.6848, 0.3127, 0.72164, 0.16717, 0.55931, 0.04153, 0.44763, 0.22894, 0.23925, 0.26559, 0.71271, 0.44035, 0.56992, 0.38299, 0.41678, 0.3351, 0.29299, 0.31496, 0.70801, 0.44501, 0.56676, 0.38976, 0.4152, 0.34416, 0.28753, 0.33017, 0.88988, 0.50176, 0.30388, 0.73462, 0.2646, 0.65674, 0.21414, 0.61583, 0.14612, 0.62193, 0.10315, 0.66636, 0.10357, 0.72556, 0.14505, 0.79163, 0.20263, 0.81355, 0.27872, 0.80158, 0.34946, 0.7376, 0.23073, 0.57073, 0.08878, 0.60706, 0.2946, 0.8129, 0.73005, 0.87883, 0.69804, 0.87348, 0.66165, 0.79681 ], - "triangles": [ 34, 25, 31, 37, 38, 34, 31, 32, 29, 31, 37, 34, 37, 41, 38, 30, 31, 29, 36, 37, 31, 33, 27, 28, 26, 27, 33, 0, 33, 28, 32, 33, 0, 32, 0, 1, 33, 25, 26, 33, 32, 25, 31, 25, 32, 2, 32, 1, 2, 3, 4, 2, 29, 32, 2, 4, 5, 29, 2, 5, 6, 29, 5, 30, 36, 31, 30, 29, 6, 44, 30, 6, 36, 30, 44, 34, 24, 25, 35, 23, 24, 35, 24, 34, 39, 35, 34, 39, 22, 35, 38, 39, 34, 42, 39, 38, 43, 39, 42, 41, 42, 38, 22, 23, 35, 43, 22, 39, 40, 37, 36, 41, 37, 40, 7, 44, 6, 8, 36, 44, 40, 36, 8, 8, 44, 7, 55, 22, 43, 56, 21, 22, 55, 56, 22, 55, 48, 56, 47, 48, 55, 9, 40, 8, 55, 54, 46, 42, 55, 43, 47, 55, 46, 49, 56, 48, 20, 21, 56, 20, 56, 49, 50, 49, 48, 20, 49, 50, 46, 54, 45, 54, 55, 41, 55, 42, 41, 9, 60, 40, 46, 51, 50, 60, 41, 40, 10, 60, 9, 54, 41, 60, 46, 52, 51, 19, 50, 51, 50, 48, 47, 47, 46, 50, 46, 45, 52, 20, 50, 19, 57, 53, 45, 57, 45, 54, 53, 52, 45, 12, 10, 11, 13, 10, 12, 18, 51, 52, 19, 51, 18, 18, 52, 53, 18, 53, 57, 14, 10, 13, 60, 10, 14, 59, 60, 14, 58, 59, 14, 58, 14, 15, 17, 54, 60, 16, 17, 60, 57, 54, 17, 18, 57, 17, 59, 16, 60, 16, 59, 58, 16, 58, 15 ], - "vertices": [ 2, 26, 96.38, 70.56, 0, 27, 41.97, -41.79, 0.99, 3, 26, 73.46, 27.54, 0.18, 27, -5.75, -51.7, 0.72, 24, 112.98, -11.43, 0.08, 4, 23, 63.13, 36.65, 0.02, 26, 38.23, 10.98, 0.82, 27, -41.01, -35.22, 0.09, 24, 92.72, -44.67, 0.05, 1, 26, 73.35, 10.89, 1, 1, 26, 58.59, -10.38, 1, 2, 23, 75.49, -4.55, 0.1, 26, 14.35, -24.8, 0.89, 2, 23, 59.82, -13.72, 0.41, 26, -2.69, -18.57, 0.58, 1, 16, 163.06, -108.68, 1, 1, 16, 151.52, -95.04, 1, 1, 16, 110.6, -87.69, 1, 1, 16, 81.05, -86.58, 1, 1, 16, 89.81, -114.32, 1, 1, 16, 68.72, -120.91, 1, 1, 16, 58.1, -115.89, 1, 1, 16, 51.03, -100.62, 1, 1, 16, 38.78, -106.76, 1, 1, 16, 2.67, -89.69, 1, 1, 16, -22.07, -19.29, 1, 1, 16, 1.19, 45.62, 1, 1, 16, 8.07, 64.81, 1, 1, 16, 35.43, 93.72, 1, 1, 16, 59.98, 119.66, 1, 1, 16, 109.25, 136.98, 1, 1, 16, 174.07, 135.27, 1, 3, 16, 205.58, 101.22, 0.82, 27, 95.35, 90.04, 0.01, 24, -16.79, 104.63, 0.15, 3, 16, 229.56, 35.66, 0.02, 27, 58.93, 30.5, 0.59, 24, 38.37, 61.89, 0.38, 3, 16, 248.9, 41.54, 0, 27, 75.55, 19, 0.94, 24, 51.62, 77.15, 0.05, 1, 27, 106.69, 26.9, 1, 1, 27, 83.78, -9.5, 1, 4, 23, 44.52, 27.24, 0.19, 26, 19.12, 19.33, 0.58, 27, -46.82, -15.19, 0.07, 24, 72.17, -48.24, 0.14, 4, 16, 169.11, -52.88, 0.02, 23, 7.42, 19.08, 0.77, 26, -10.8, 42.71, 0, 24, 34.31, -45.24, 0.2, 5, 16, 198.21, -28.43, 0, 23, 8, 57.08, 0.02, 26, 18.84, 66.49, 0, 27, -10.75, 15.18, 0, 24, 45.94, -9.06, 0.95, 3, 26, 63.16, 70.43, 0.01, 27, 20.62, -16.35, 0.98, 24, 80.73, 18.67, 0, 1, 27, 75.73, 0.94, 1, 3, 16, 200.44, 40.47, 0.48, 27, 44.58, 56.29, 0.14, 24, 11.16, 50.46, 0.36, 1, 16, 171.41, 90.11, 1, 4, 16, 164.84, -48.18, 0.02, 23, 1.07, 18.93, 0.77, 26, -14.97, 47.51, 0, 24, 28.19, -43.54, 0.2, 3, 16, 168.13, -6.01, 0.11, 23, -28.63, 49.03, 0.13, 24, 8.54, -6.08, 0.75, 3, 16, 167.82, 37.86, 0.26, 27, 22.26, 80.21, 0.03, 24, -15.06, 30.9, 0.7, 1, 16, 162.36, 71.5, 1, 1, 16, 163.1, -47.44, 1, 1, 16, 165.94, -5.87, 1, 1, 16, 165.14, 37.37, 1, 1, 16, 157.6, 71.39, 1, 1, 16, 163.5, -99.53, 1, 1, 16, 45.37, 27.24, 1, 1, 16, 63.73, 44.98, 1, 1, 16, 70.69, 61.92, 0.99, 1, 16, 62.87, 78.69, 0.99, 1, 16, 46.52, 85.3, 0.99, 1, 16, 29.92, 79.33, 0.99, 1, 16, 15.07, 62.21, 1, 1, 16, 14.09, 45.32, 1, 1, 16, 24.29, 27.05, 1, 1, 16, 48.63, 15.29, 1, 1, 16, 84.87, 62.14, 0.99, 1, 16, 61.9, 94.83, 0.99, 1, 16, 22.54, 21.87, 1, 1, 16, 43.14, -95.94, 1, 1, 16, 41.77, -87.23, 1, 1, 16, 60.05, -70.35, 1 ], - "hull": 29, - "edges": [ 10, 8, 8, 6, 6, 4, 4, 2, 2, 0, 0, 56, 54, 56, 54, 52, 52, 50, 50, 48, 48, 46, 46, 44, 42, 44, 32, 34, 4, 58, 58, 60, 62, 64, 64, 66, 66, 54, 50, 68, 68, 70, 70, 44, 60, 72, 62, 74, 72, 74, 74, 76, 76, 78, 78, 44, 16, 80, 80, 82, 82, 84, 84, 86, 86, 44, 14, 88, 88, 72, 14, 16, 10, 12, 12, 14, 12, 60, 90, 92, 92, 94, 94, 96, 96, 98, 98, 100, 100, 102, 102, 104, 104, 106, 106, 90, 108, 110, 110, 112, 38, 40, 40, 42, 112, 40, 34, 36, 36, 38, 36, 114, 114, 108, 30, 32, 30, 28, 24, 26, 28, 26, 22, 24, 22, 20, 20, 18, 18, 16, 28, 116, 116, 118, 118, 120, 120, 20 ], - "width": 271, - "height": 298 - } - }, - "head-bb": { - "head": { - "type": "boundingbox", - "vertices": [ -19.143097, -70.30209, 40.80313, -118.074234, 257.77155, -115.61827, 285.16193, 57.18005, 120.77191, 164.95125, -5.067627, 76.94907 ] - } - }, - "mouth": { - "mouth_grind": { - "type": "mesh", - "uvs": [ 1, 1, 0, 1, 0, 0, 1, 0 ], - "triangles": [ 1, 3, 0, 1, 2, 3 ], - "vertices": [ 11.28, -85.88, -19.56, 1.84, 36.09, 21.41, 66.93, -66.31 ], - "hull": 4, - "edges": [ 0, 2, 2, 4, 4, 6, 0, 6 ], - "width": 93, - "height": 59 - }, - "mouth_oooo": { "x": 23.68, "y": -32.23, "rotation": -70.63, "width": 93, "height": 59 }, - "mouth_smile": { "x": 23.68, "y": -32.23, "rotation": -70.63, "width": 93, "height": 59 } - }, - "muzzle": { - "muzzle": { "x": 18.25, "y": 5.44, "rotation": 0.15, "width": 462, "height": 400 } - }, - "neck": { - "neck": { "x": 9.76, "y": -3.01, "rotation": -55.22, "width": 36, "height": 41 } - }, - "rear_bracer": { - "rear_bracer": { "x": 11.15, "y": -2.2, "rotation": 66.17, "width": 56, "height": 72 } - }, - "rear_foot": { - "rear_foot": { - "type": "skinnedmesh", - "uvs": [ 0.48368, 0.1387, 0.5199, 0.21423, 0.55099, 0.27906, 0.58838, 0.29816, 0.63488, 0.32191, 0.77342, 0.39266, 1, 0.73346, 1, 1, 0.59435, 1, 0.3116, 1, 0, 1, 0, 0.41396, 0.1363, 0, 0.41716, 0 ], - "triangles": [ 4, 8, 3, 5, 8, 4, 6, 8, 5, 8, 6, 7, 11, 1, 10, 12, 13, 0, 0, 11, 12, 1, 11, 0, 2, 9, 10, 2, 10, 1, 9, 2, 3, 8, 9, 3 ], - "vertices": [ 2, 18, 10.45, 29.41, 0.88, 19, -6.74, 49.62, 0.11, 2, 18, 16.54, 29.27, 0.83, 19, -2.65, 45.08, 0.16, 2, 18, 21.79, 29.15, 0.78, 19, 0.85, 41.19, 0.21, 2, 18, 25.53, 31.43, 0.67, 19, 5.07, 40.04, 0.32, 2, 18, 30.17, 34.27, 0.54, 19, 10.33, 38.61, 0.45, 2, 18, 44.01, 42.72, 0.16, 19, 25.97, 34.36, 0.83, 1, 19, 51.56, 13.89, 1, 2, 18, 88.08, 36.28, 0, 19, 51.54, -2.08, 1, 2, 18, 56.58, 2.98, 0.02, 19, 5.71, -2.05, 0.97, 2, 18, 34.63, -20.21, 0.99, 19, -26.22, -2.03, 0, 2, 18, 10.43, -45.8, 0.99, 19, -61.43, -2, 0, 2, 18, -15.1, -21.64, 1, 19, -61.4, 33.15, 0, 2, 18, -22.56, 6.61, 0.99, 19, -45.98, 57.97, 0, 2, 18, -0.76, 29.67, 0.99, 19, -14.25, 57.94, 0 ], - "hull": 14, - "edges": [ 14, 12, 10, 12, 14, 16, 16, 18, 18, 20, 4, 18, 20, 22, 24, 26, 22, 24, 4, 2, 2, 20, 4, 6, 6, 16, 6, 8, 8, 10, 2, 0, 0, 26 ], - "width": 113, - "height": 60 - }, - "rear_foot_bend1": { "x": 29.61, "y": 18.12, "rotation": 46.59, "width": 117, "height": 66 }, - "rear_foot_bend2": { "x": 22.82, "y": 23.69, "rotation": 46.59, "width": 103, "height": 83 } - }, - "rear_shin": { - "rear_shin": { "x": 58.29, "y": -2.75, "rotation": 92.37, "width": 75, "height": 178 } - }, - "rear_thigh": { - "rear_thigh": { "x": 33.1, "y": -4.11, "rotation": 72.54, "width": 65, "height": 104 } - }, - "rear_upper_arm": { - "rear_upper_arm": { "x": 21.12, "y": 4.08, "rotation": 89.32, "width": 47, "height": 87 } - }, - "torso": { - "torso": { - "type": "mesh", - "uvs": [ 0.62509, 0.12672, 1, 0.2636, 1, 0.2887, 1, 0.66021, 1, 0.68245, 0.92323, 0.69258, 0.95115, 0.84965, 0.77123, 1, 0.49654, 1, 0.27181, 1, 0.13842, 0.77196, 0, 0.45614, 0, 0.19436, 0.14462, 0, 0.27801, 0, 0.72524, 0.27835, 0.76091, 0.46216, 0.84888, 0.67962, 0.68257, 0.63249, 0.53985, 0.38469, 0.25443, 0.32169, 0.30062, 0.55173, 0.39552, 0.79506, 0.26389, 0.17006, 0.52409, 0.18673 ], - "triangles": [ 6, 17, 5, 6, 7, 17, 8, 18, 7, 7, 18, 17, 9, 22, 8, 8, 22, 18, 9, 10, 22, 10, 21, 22, 22, 21, 18, 10, 11, 21, 4, 5, 3, 5, 17, 3, 3, 17, 16, 17, 18, 16, 16, 2, 3, 21, 19, 18, 18, 19, 16, 11, 20, 21, 21, 20, 19, 19, 15, 16, 16, 15, 2, 11, 12, 20, 20, 24, 19, 19, 24, 15, 20, 23, 24, 20, 12, 23, 15, 1, 2, 24, 0, 15, 15, 0, 1, 12, 13, 23, 0, 24, 14, 14, 24, 13, 24, 23, 13 ], - "vertices": [ 129.62, -10.38, 102.17, -45.07, 97.66, -44.71, 31, -39.45, 27.01, -39.13, 25.78, -31.49, -2.61, -31.99, -28.2, -12.29, -26.08, 14.54, -24.34, 36.5, 17.59, 46.3, 75.33, 55.34, 122.31, 51.63, 156.07, 34.75, 155.03, 21.72, 101.64, -18.02, 68.37, -18.9, 28.68, -24.41, 38.41, -8.83, 83.99, 1.59, 97.5, 28.58, 55.86, 27.33, 11.47, 21.51, 124.63, 25.51, 119.63, 0.32 ], - "hull": 15, - "edges": [ 14, 12, 12, 10, 10, 8, 18, 20, 20, 22, 22, 24, 26, 28, 24, 26, 2, 4, 30, 4, 30, 32, 32, 34, 4, 6, 6, 8, 34, 6, 34, 36, 36, 38, 38, 40, 40, 24, 36, 14, 40, 42, 42, 44, 14, 16, 16, 18, 44, 16, 40, 46, 38, 48, 48, 30, 2, 0, 0, 28, 48, 0, 48, 26 ], - "width": 98, - "height": 180 - } - } - } -}, -"events": { - "footstep": {}, - "headAttach": { "int": 3, "float": 4 }, - "headBehind": { "int": 5, "float": 6, "string": "setup" }, - "headPop": { "int": 1, "float": 2 } -}, -"animations": { - "run": { - "slots": { - "front_fist": { - "attachment": [ - { "time": 0, "name": "front_fist_closed" } - ] - }, - "mouth": { - "attachment": [ - { "time": 0, "name": "mouth_grind" } - ] - }, - "torso": { - "attachment": [ - { "time": 0, "name": "torso" } - ] - } - }, - "bones": { - "front_thigh": { - "rotate": [ - { - "time": 0, - "angle": 42.05, - "curve": [ 0.195, 0.86, 0.75, 1 ] - }, - { "time": 0.0666, "angle": 46.07 }, - { "time": 0.1333, "angle": -20.28 }, - { "time": 0.2, "angle": -27.23 }, - { "time": 0.2666, "angle": -47.16 }, - { "time": 0.3333, "angle": -39.79 }, - { "time": 0.4, "angle": -25.86 }, - { "time": 0.4666, "angle": 14.35 }, - { "time": 0.5333, "angle": 55.62 }, - { "time": 0.6, "angle": 69.65 }, - { "time": 0.6666, "angle": 86.4 }, - { "time": 0.7333, "angle": 65.87 }, - { "time": 0.8, "angle": 42.05 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 }, - { "time": 0.0333, "x": -5.79, "y": 11.15 }, - { "time": 0.0666, "x": -5.13, "y": 11.55 }, - { "time": 0.1333, "x": -7.7, "y": 8.98 }, - { "time": 0.5333, "x": -1.26, "y": 3.83 }, - { "time": 0.8, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "torso": { - "rotate": [ - { "time": 0, "angle": -39.7 }, - { "time": 0.2, "angle": -57.29 }, - { "time": 0.4, "angle": -39.7 }, - { "time": 0.6, "angle": -57.29 }, - { "time": 0.8, "angle": -39.7 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.4, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.8, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "rear_thigh": { - "rotate": [ - { "time": 0, "angle": -56.59 }, - { "time": 0.0666, "angle": -21.57 }, - { "time": 0.1333, "angle": 27.95 }, - { "time": 0.2, "angle": 42.42 }, - { "time": 0.2666, "angle": 62.37 }, - { "time": 0.3333, "angle": 45.42 }, - { "time": 0.4, "angle": 15.67 }, - { "time": 0.4666, "angle": 28.22 }, - { "time": 0.5333, "angle": -38.62 }, - { "time": 0.6, "angle": -53.26 }, - { "time": 0.6666, "angle": -79.31 }, - { "time": 0.7333, "angle": -86.47 }, - { "time": 0.8, "angle": -56.59 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 }, - { "time": 0.4, "x": -6.76, "y": -3.86 }, - { "time": 0.4333, "x": -15.85, "y": 7.28 }, - { "time": 0.4666, "x": -13.04, "y": 4.04 }, - { "time": 0.5, "x": -10.24, "y": 7.11 }, - { "time": 0.5333, "x": -9.01, "y": -5.15 }, - { "time": 0.6666, "x": -23.18, "y": -2.57 }, - { "time": 0.8, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "rear_shin": { - "rotate": [ - { "time": 0, "angle": -74 }, - { "time": 0.0666, "angle": -83.38 }, - { "time": 0.1333, "angle": -106.69 }, - { "time": 0.2, "angle": -66.01 }, - { "time": 0.2666, "angle": -55.22 }, - { "time": 0.3333, "angle": -24.8 }, - { - "time": 0.4, - "angle": 18.44, - "curve": [ 0.25, 0, 0.75, 1 ] - }, - { "time": 0.4666, "angle": -56.65 }, - { - "time": 0.5333, - "angle": -11.94, - "curve": [ 0.25, 0, 0.75, 1 ] - }, - { "time": 0.6666, "angle": -41.26 }, - { "time": 0.7333, "angle": -43.6 }, - { "time": 0.8, "angle": -74 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.8, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "front_upper_arm": { - "rotate": [ - { "time": 0, "angle": -89.36 }, - { "time": 0.0666, "angle": -95.67 }, - { "time": 0.1333, "angle": -22 }, - { "time": 0.2, "angle": -316.04 }, - { "time": 0.2666, "angle": -274.94 }, - { "time": 0.3333, "angle": -273.74 }, - { "time": 0.4, "angle": -272.09 }, - { "time": 0.4666, "angle": -264.89 }, - { "time": 0.5333, "angle": -320.09 }, - { "time": 0.6, "angle": -50.83 }, - { "time": 0.6666, "angle": -81.72 }, - { "time": 0.7333, "angle": -83.92 }, - { "time": 0.8, "angle": -89.36 } - ], - "translate": [ - { "time": 0, "x": 6.24, "y": 10.05 }, - { "time": 0.2666, "x": 4.95, "y": -13.13 }, - { "time": 0.6, "x": -2.43, "y": 1.94 }, - { "time": 0.8, "x": 6.24, "y": 10.05 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "front_bracer": { - "rotate": [ - { "time": 0, "angle": 33.43 }, - { "time": 0.0666, "angle": 20.53 }, - { "time": 0.1333, "angle": 15.26 }, - { "time": 0.2, "angle": 19.28 }, - { "time": 0.2666, "angle": 22.62 }, - { "time": 0.3333, "angle": 37.29 }, - { "time": 0.4, "angle": 41.53 }, - { "time": 0.4666, "angle": 31.73 }, - { "time": 0.5333, "angle": 67.45 }, - { "time": 0.6666, "angle": 39.77 }, - { "time": 0.7333, "angle": 30.95 }, - { "time": 0.8, "angle": 33.43 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.8, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "front_fist": { - "rotate": [ - { "time": 0, "angle": -19.75 }, - { "time": 0.0666, "angle": -37.11 }, - { "time": 0.1333, "angle": -50.79 }, - { "time": 0.2666, "angle": -12.69 }, - { "time": 0.3333, "angle": 3.01 }, - { "time": 0.4333, "angle": 12.05 }, - { "time": 0.5333, "angle": 13.25 }, - { "time": 0.8, "angle": -19.75 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.8, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "rear_upper_arm": { - "rotate": [ - { "time": 0, "angle": 68.68 }, - { "time": 0.0666, "angle": 73.89 }, - { "time": 0.1333, "angle": -9.64 }, - { "time": 0.2, "angle": 284.27 }, - { "time": 0.2666, "angle": 283.29 }, - { "time": 0.3333, "angle": 278.28 }, - { "time": 0.4, "angle": 271.02 }, - { "time": 0.4666, "angle": 263.2 }, - { "time": 0.5333, "angle": 314.25 }, - { "time": 0.6, "angle": 16.83 }, - { "time": 0.6666, "angle": 70.35 }, - { "time": 0.7333, "angle": 73.53 }, - { "time": 0.8, "angle": 68.68 } - ], - "translate": [ - { "time": 0, "x": -2.57, "y": -8.89 }, - { "time": 0.1333, "x": -4.68, "y": 7.2 }, - { "time": 0.2, "x": 21.73, "y": 51.17 }, - { "time": 0.6, "x": 4.33, "y": 2.05 }, - { "time": 0.8, "x": -2.57, "y": -8.89 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "rear_bracer": { - "rotate": [ - { "time": 0, "angle": 31.04 }, - { "time": 0.0666, "angle": 28.28 }, - { "time": 0.1333, "angle": 49.36 }, - { "time": 0.2, "angle": 59.37 }, - { "time": 0.2666, "angle": 8.56 }, - { "time": 0.3333, "angle": 9.38 }, - { "time": 0.4, "angle": 11.51 }, - { "time": 0.4666, "angle": 7.22 }, - { "time": 0.5333, "angle": -18.44 }, - { "time": 0.6, "angle": 11.44 }, - { "time": 0.6666, "angle": 9.99 }, - { "time": 0.7333, "angle": 8.28 }, - { "time": 0.8, "angle": 31.04 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.8, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "neck": { - "rotate": [ - { "time": 0, "angle": 11.03 }, - { "time": 0.2, "angle": 13.58 }, - { "time": 0.4, "angle": 11.03 }, - { "time": 0.6, "angle": 13.58 }, - { "time": 0.8, "angle": 11.03 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.4, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.8, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "head": { - "rotate": [ - { "time": 0, "angle": 11.03 }, - { "time": 0.1, "angle": 12.34 }, - { "time": 0.2, "angle": 25.55 }, - { "time": 0.4, "angle": 11.03 }, - { "time": 0.5, "angle": 12.34 }, - { "time": 0.6, "angle": 25.55 }, - { "time": 0.8, "angle": 11.03 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.4, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.8, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "front_shin": { - "rotate": [ - { - "time": 0, - "angle": 0, - "curve": [ 0.481, 0.01, 0.75, 1 ] - }, - { "time": 0.0666, "angle": -64.42 }, - { - "time": 0.1333, - "angle": -20.59, - "curve": [ 0.25, 0, 0.75, 1 ] - }, - { "time": 0.2666, "angle": -62.51 }, - { "time": 0.3333, "angle": -79.74 }, - { "time": 0.4, "angle": -78.28 }, - { - "time": 0.4666, - "angle": -118.96, - "curve": [ 0.93, 0, 0.952, 0.95 ] - }, - { "time": 0.6, "angle": -88.95 }, - { "time": 0.6666, "angle": -79.09 }, - { "time": 0.7333, "angle": -47.77 }, - { "time": 0.8, "angle": 0 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.8, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "front_foot": { - "rotate": [ - { "time": 0, "angle": 0 }, - { - "time": 0.0333, - "angle": -21.13, - "curve": [ 0.121, 0.23, 0.75, 1 ] - }, - { "time": 0.0666, "angle": 17.64 }, - { "time": 0.1, "angle": 29.92 }, - { "time": 0.1333, "angle": 16.44 }, - { "time": 0.2, "angle": -29.22 }, - { "time": 0.2666, "angle": -1.61 }, - { "time": 0.3333, "angle": -10.22 }, - { "time": 0.4666, "angle": -15.99 }, - { "time": 0.6, "angle": 9.03 }, - { "time": 0.7333, "angle": 17.32 }, - { "time": 0.8, "angle": 0 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.8, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "rear_foot": { - "rotate": [ - { "time": 0, "angle": 0 }, - { "time": 0.0666, "angle": -12.04 }, - { "time": 0.1333, "angle": -0.87 }, - { "time": 0.2, "angle": 25.81 }, - { "time": 0.2666, "angle": 4.71 }, - { - "time": 0.4, - "angle": 18.09, - "curve": [ 0.281, 0.73, 0.75, 1 ] - }, - { "time": 0.4333, "angle": -1.7 }, - { "time": 0.4666, "angle": 27.12 }, - { "time": 0.5, "angle": 38.83 }, - { "time": 0.5333, "angle": 30.76 }, - { "time": 0.5666, "angle": -20.49 }, - { "time": 0.6, "angle": -30.8 }, - { "time": 0.6666, "angle": -1.31 }, - { "time": 0.8, "angle": 0 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.8, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "gun": { - "rotate": [ - { "time": 0, "angle": 0 }, - { "time": 0.1333, "angle": 24.72 }, - { "time": 0.5, "angle": -11.87 }, - { "time": 0.8, "angle": 0 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.8, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "hip": { - "rotate": [ - { "time": 0, "angle": 0, "curve": "stepped" }, - { "time": 0.8, "angle": 0 } - ], - "translate": [ - { - "time": 0, - "x": 0, - "y": -24.88, - "curve": [ 0.3, 0.8, 0.663, 0.91 ] - }, - { - "time": 0.0666, - "x": 0, - "y": -40.28, - "curve": [ 0.456, 0, 0.339, 0.98 ] - }, - { - "time": 0.2666, - "x": 0, - "y": 20.51, - "curve": [ 0.17, 0.52, 0.596, 0.99 ] - }, - { "time": 0.4, "x": 0, "y": -24.88 }, - { "time": 0.4333, "x": 0, "y": -26.36 }, - { - "time": 0.4666, - "x": 0, - "y": -45.06, - "curve": [ 0.25, 0, 0.75, 1 ] - }, - { "time": 0.6666, "x": 0, "y": 20.51 }, - { "time": 0.8, "x": 0, "y": -24.88 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "front_foot_ik": { - "rotate": [ - { "time": 0, "angle": 0 }, - { "time": 0.0333, "angle": -41.68 }, - { "time": 0.1333, "angle": -102.41 }, - { "time": 0.2, "angle": -121.43 }, - { "time": 0.2333, "angle": -133.6 }, - { "time": 0.2666, "angle": -139.86 }, - { "time": 0.3333, "angle": -152.39 }, - { "time": 0.3666, "angle": -146.32 }, - { "time": 0.5, "angle": -143.8 }, - { "time": 0.5333, "angle": -114.84 }, - { "time": 0.5666, "angle": -99.08 }, - { "time": 0.6, "angle": -63.03 }, - { "time": 0.6333, "angle": -47.34 }, - { "time": 0.6666, "angle": -31.04 }, - { "time": 0.7, "angle": -25.01 }, - { "time": 0.7666, "angle": -15.95 }, - { "time": 0.8, "angle": 0 } - ], - "translate": [ - { "time": 0, "x": 159.31, "y": 38.68 }, - { "time": 0.0333, "x": 115.32, "y": 0.18 }, - { "time": 0.0666, "x": 16.34, "y": 0.18 }, - { "time": 0.1333, "x": -116.47, "y": 0.18 }, - { "time": 0.2, "x": -210.62, "y": 126.29 }, - { "time": 0.2333, "x": -226.11, "y": 203.77 }, - { "time": 0.2666, "x": -223.73, "y": 258 }, - { "time": 0.3333, "x": -208.23, "y": 250.25 }, - { "time": 0.3666, "x": -207.64, "y": 215.69 }, - { "time": 0.4, "x": -205.85, "y": 185.29 }, - { "time": 0.4333, "x": -179.03, "y": 176.95 }, - { "time": 0.4666, "x": -154, "y": 157.28 }, - { "time": 0.5, "x": -128.97, "y": 108.41 }, - { "time": 0.5333, "x": -76.68, "y": 75.29 }, - { "time": 0.5666, "x": -41.24, "y": 67.74 }, - { "time": 0.6, "x": 28.47, "y": 59.02 }, - { "time": 0.6333, "x": 70.89, "y": 78.19 }, - { "time": 0.6666, "x": 110.42, "y": 99 }, - { "time": 0.7, "x": 122.21, "y": 79.58 }, - { "time": 0.7666, "x": 145.33, "y": 44.61 }, - { "time": 0.8, "x": 159.31, "y": 38.68 } - ] - }, - "front_ankle_ik": { - "translate": [ - { "time": 0, "x": -14.25, "y": -25.95 }, - { "time": 0.1333, "x": -13.63, "y": -34.72 }, - { "time": 0.1666, "x": -11.41, "y": -12.61 }, - { "time": 0.5, "x": -14.88, "y": -31.78 }, - { "time": 0.8, "x": -14.25, "y": -25.95 } - ] - }, - "rear_foot_ik": { - "rotate": [ - { "time": 0, "angle": 0 }, - { "time": 0.0666, "angle": 18.55 }, - { "time": 0.1333, "angle": 52.75 }, - { "time": 0.1666, "angle": 87.39 }, - { "time": 0.2333, "angle": 133.94 }, - { "time": 0.3, "angle": 150.92 }, - { "time": 0.3666, "angle": 168.02 }, - { "time": 0.4, "angle": 129.09 }, - { "time": 0.4333, "angle": 125.95 }, - { "time": 0.5, "angle": 114.27 }, - { "time": 0.5333, "angle": 85.36 }, - { "time": 0.5666, "angle": 49.17 }, - { "time": 0.6333, "angle": 9.5 }, - { "time": 0.7, "angle": 4.15 }, - { "time": 0.7666, "angle": -1.36 }, - { "time": 0.8, "angle": 0 } - ], - "translate": [ - { "time": 0, "x": -248.9, "y": 230.06 }, - { "time": 0.0666, "x": -228.7, "y": 134.11 }, - { "time": 0.1333, "x": -145.37, "y": 94.22 }, - { "time": 0.1666, "x": -82.75, "y": 54.32 }, - { "time": 0.2333, "x": 37.92, "y": 74.38 }, - { "time": 0.2666, "x": 80.37, "y": 91.82 }, - { "time": 0.3, "x": 93.21, "y": 67.3 }, - { "time": 0.3666, "x": 99.34, "y": 35.47 }, - { "time": 0.4, "x": 68.62, "y": 0.35 }, - { "time": 0.4333, "x": 21.58, "y": -2.63 }, - { "time": 0.5, "x": -92.9, "y": -2.63 }, - { "time": 0.5333, "x": -166.79, "y": -2.63 }, - { "time": 0.5666, "x": -252.51, "y": 57.14 }, - { "time": 0.6333, "x": -304.31, "y": 214.02 }, - { "time": 0.7, "x": -296.91, "y": 281.36 }, - { "time": 0.7666, "x": -269.53, "y": 257.68 }, - { "time": 0.8, "x": -248.9, "y": 230.06 } - ] - }, - "rear_ankle_ik": { - "translate": [ - { "time": 0, "x": 85, "y": -33.59, "curve": "stepped" }, - { "time": 0.8, "x": 85, "y": -33.59 } - ] - }, - "back_foot_tip": { - "rotate": [ - { "time": 0, "angle": -151.51 }, - { "time": 0.1333, "angle": -93.33 }, - { "time": 0.1666, "angle": -70.77 }, - { "time": 0.2333, "angle": 22.43 }, - { "time": 0.3, "angle": 36.85 }, - { "time": 0.3666, "angle": 34.85 }, - { "time": 0.4, "angle": 0.76 }, - { "time": 0.4333, "angle": 0.82, "curve": "stepped" }, - { "time": 0.5333, "angle": 0.82 }, - { "time": 0.5666, "angle": -61.7 }, - { "time": 0.6333, "angle": -139.59 }, - { "time": 0.7, "angle": -146.78 }, - { "time": 0.8, "angle": -151.51 } - ] - }, - "front_foot_tip": { - "rotate": [ - { "time": 0, "angle": 42.19 }, - { "time": 0.0333, "angle": -0.23 }, - { "time": 0.1333, "angle": -0.28 }, - { "time": 0.1666, "angle": -59.58 }, - { "time": 0.2, "angle": -112.55 }, - { "time": 0.2666, "angle": -130.07 }, - { "time": 0.3333, "angle": -146.2 }, - { "time": 0.5, "angle": -86.48 }, - { "time": 0.5333, "angle": -86.98 }, - { "time": 0.5666, "angle": -66.86 }, - { "time": 0.6, "angle": -22.89 }, - { "time": 0.6333, "angle": -12.06 }, - { "time": 0.7, "angle": 35.39 }, - { "time": 0.8, "angle": 42.19 } - ] - }, - "hair1": { - "rotate": [ - { "time": 0, "angle": 0 }, - { "time": 0.1, "angle": -10.21 }, - { "time": 0.2666, "angle": 7.16 }, - { "time": 0.3666, "angle": -0.15 }, - { "time": 0.4666, "angle": -10.21 }, - { "time": 0.6333, "angle": 7.16 }, - { "time": 0.7333, "angle": -0.15 }, - { "time": 0.8, "angle": 0 } - ] - }, - "hair2": { - "rotate": [ - { "time": 0, "angle": 0 }, - { "time": 0.1, "angle": -10.21 }, - { "time": 0.1666, "angle": -30.13 }, - { "time": 0.2666, "angle": 6.38 }, - { "time": 0.3666, "angle": -13.48 }, - { "time": 0.4666, "angle": -10.21 }, - { "time": 0.5333, "angle": -30.13 }, - { "time": 0.6333, "angle": 6.38 }, - { "time": 0.7333, "angle": -13.48 }, - { "time": 0.8, "angle": 0 } - ] - }, - "hair3": { - "rotate": [ - { "time": 0, "angle": 0 }, - { "time": 0.1, "angle": -10.21 }, - { "time": 0.2666, "angle": 7.16 }, - { "time": 0.3666, "angle": -0.15 }, - { "time": 0.4666, "angle": -10.21 }, - { "time": 0.6333, "angle": 7.16 }, - { "time": 0.7333, "angle": -0.15 }, - { "time": 0.8, "angle": 0 } - ] - }, - "hair4": { - "rotate": [ - { "time": 0, "angle": 0 }, - { "time": 0.1, "angle": -10.21 }, - { "time": 0.1666, "angle": -30.13 }, - { "time": 0.2666, "angle": 6.38 }, - { "time": 0.3666, "angle": -13.48 }, - { "time": 0.4666, "angle": -10.21 }, - { "time": 0.5333, "angle": -30.13 }, - { "time": 0.6333, "angle": 6.38 }, - { "time": 0.7333, "angle": -13.48 }, - { "time": 0.8, "angle": 0 } - ] - } - }, - "ffd": { - "default": { - "eye": { - "eye_indifferent": [ - { - "time": 0, - "vertices": [ -0.15, 0.7, -0.15, 0.7, -0.15, 0.7, -0.15, 0.7 ], - "curve": [ 0.25, 0, 0.75, 1 ] - }, - { - "time": 0.4, - "vertices": [ 3.92, -18.23, 3.92, -18.23, 3.92, -18.23, 3.92, -18.23 ], - "curve": [ 0.25, 0, 0.75, 1 ] - }, - { - "time": 0.8, - "vertices": [ -0.15, 0.7, -0.15, 0.7, -0.15, 0.7, -0.15, 0.7 ] - } - ] - }, - "goggles": { - "goggles": [ - { - "time": 0, - "vertices": [ -0.08, 0.23, -0.04, 0.11, -1.15, 5.38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.08, 5, -1.86, 8.62, -0.82, 3.8, -0.09, 0.27, -0.11, 0.32, -5.76, 7.76, -3.05, 10.76, -2.18, 10.12, -4.92, 9.45, 0, 0, 0, 0, 0.65, -3.03, 0.55, -2.59, -1.4, 6.49, -0.16, 0.42, -0.14, 0.37, -0.13, 0.35, -0.11, 0.31, -0.12, 0.33, -0.12, 0.32, -0.1, 0.28, -0.9, 4.02, -0.04, 0.13, -1.07, 4.96, -1.06, 4.94, -1.04, 4.9, -0.04, 0.11, -0.07, 0.2, -0.1, 0.26, -0.12, 0.33, -0.13, 0.36, -0.14, 0.37, -0.13, 0.35, -0.11, 0.33, -0.14, 0.39, -0.16, 0.43, -1.4, 6.49, -0.82, 3.8, -0.82, 3.8, -0.82, 3.8, -1.82, 8.48, -1.82, 8.48, -1.82, 8.48 ], - "curve": [ 0.25, 0, 0.75, 1 ] - }, - { - "time": 0.4, - "vertices": [ 1.73, -8.03, 0.7, -3.25, 0.39, -1.84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.08, -5.04, 3.97, -18.45, 0.47, -2.19, 1.59, -7.39, 2.05, -9.54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.58, -11.98, 2.93, -13.58, 2.71, -12.57, 2.01, -9.32, 2.26, -10.49, 2.34, -10.86, 2.05, -9.51, 1.96, -9.1, 0.75, -3.51, 0.08, -0.37, 0.57, -2.69, 0.35, -1.63, 0.65, -3.01, 1.4, -6.53, 1.98, -9.21, 4.07, -18.92, 3.45, -16.03, 3.45, -16.02, 2.42, -11.25, 2.14, -9.93, 2.06, -9.56, 2.59, -12, 0, 0, 0.47, -2.19, 0.47, -2.19, 0.47, -2.19, 0.47, -2.19, 0.47, -2.19, 0.47, -2.19 ], - "curve": [ 0.25, 0, 0.75, 1 ] - }, - { - "time": 0.8, - "vertices": [ -0.08, 0.23, -0.04, 0.11, -1.15, 5.38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.08, 5, -1.86, 8.62, -0.82, 3.8, -0.09, 0.27, -0.11, 0.32, -5.76, 7.76, -3.05, 10.76, -2.18, 10.12, -4.92, 9.45, 0, 0, 0, 0, 0.65, -3.03, 0.55, -2.59, -1.4, 6.49, -0.16, 0.42, -0.14, 0.37, -0.13, 0.35, -0.11, 0.31, -0.12, 0.33, -0.12, 0.32, -0.1, 0.28, -0.9, 4.02, -0.04, 0.13, -1.07, 4.96, -1.06, 4.94, -1.04, 4.9, -0.04, 0.11, -0.07, 0.2, -0.1, 0.26, -0.12, 0.33, -0.13, 0.36, -0.14, 0.37, -0.13, 0.35, -0.11, 0.33, -0.14, 0.39, -0.16, 0.43, -1.4, 6.49, -0.82, 3.8, -0.82, 3.8, -0.82, 3.8, -1.82, 8.48, -1.82, 8.48, -1.82, 8.48 ] - } - ] - }, - "head": { - "head": [ - { - "time": 0, - "offset": 36, - "vertices": [ 2.81, 0.98, 1.01, 8.62, -2.7, 4.09, -4.48, 7.13, -4.76, 3.34, 0, 0, -2.25, -4.31, 0, 0, 0, 0, -0.45, 2.11, -0.45, 2.11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3.14, 14.58, -2.86, 13.27, -2.55, 11.81, -2.17, 10.06, -1.96, 9.1, -2.01, 9.33, -2.29, 10.65, -2.63, 12.23, -3.05, 14.17, 0, 0, 0, 0, 0, 0, 0, 0, -0.59, 2.77, -1.96, 9.1, -2.16, 10.02 ], - "curve": [ 0.25, 0, 0.75, 1 ] - }, - { - "time": 0.4, - "offset": 38, - "vertices": [ 3.14, -14.61, 3.14, -14.61, 3.14, -14.61, 0.83, -3.87, 0, 0, 0, 0, 0, 0, 0, 0, -0.45, 2.11, -0.45, 2.11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.17, -0.81, 0.17, -0.81, 0.17, -0.81, 0.17, -0.81, 0.17, -0.81, 0.17, -0.81, 0.17, -0.81, 0.17, -0.81, 0.17, -0.81, 0, 0, 0, 0, 0, 0, 0, 0, 0.55, -2.58, 0.41, -1.93, 1.04, -4.83 ], - "curve": [ 0.25, 0, 0.75, 1 ] - }, - { - "time": 0.8, - "offset": 36, - "vertices": [ 2.81, 0.98, 1.01, 8.62, -2.7, 4.09, -4.48, 7.13, -4.76, 3.34, 0, 0, -2.25, -4.31, 0, 0, 0, 0, -0.45, 2.11, -0.45, 2.11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3.14, 14.58, -2.86, 13.27, -2.55, 11.81, -2.17, 10.06, -1.96, 9.1, -2.01, 9.33, -2.29, 10.65, -2.63, 12.23, -3.05, 14.17, 0, 0, 0, 0, 0, 0, 0, 0, -0.59, 2.77, -1.96, 9.1, -2.16, 10.02 ] - } - ] - }, - "mouth": { - "mouth_grind": [ - { - "time": 0, - "vertices": [ -10.19, 11.77, -1.6, 14.33, 0.02, 8.88, -8.56, 6.32 ], - "curve": [ 0.25, 0, 0.75, 1 ] - }, - { - "time": 0.4, - "vertices": [ -1.87, -8.97, 0, -17.7, 0, -17.7, -1.87, -8.97 ], - "curve": [ 0.25, 0, 0.75, 1 ] - }, - { - "time": 0.8, - "vertices": [ -10.19, 11.77, -1.6, 14.33, 0.02, 8.88, -8.56, 6.32 ] - } - ] - }, - "torso": { - "torso": [ - { - "time": 0, - "offset": 6, - "vertices": [ 6.35, 1.33, 6.35, 1.33, 0, 0, 0, 0, 0.82, 5.12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.82, 5.12, 0.82, 5.12, -0.94, 5.14, 0.82, 5.12, 0.82, 5.12, 0.24, 4.36, 0.24, 4.36, 0.24, 4.36, 0, 0, 0.82, 5.12 ] - }, - { - "time": 0.4, - "offset": 2, - "vertices": [ 1.46, 2.96, 0.68, 3.23, 2.2, 0.1, 0, 0, -0.31, -2.89, 0, 0, -0.18, 0.38, 0.33, -3.61, 0, 0, 0, 0, -0.55, 4.21, -0.55, 4.21, 0, 0, 0, 0, -0.29, -8.94, -0.02, -9.5, 0.23, -9.93, -4.64, -8.88, -2.62, -9.24, -1.7, -5.16, -1.7, -5.16, -1.7, -5.16, 0, 0, -7.37, -10.47 ] - }, - { - "time": 0.8, - "offset": 6, - "vertices": [ 6.35, 1.33, 6.35, 1.33, 0, 0, 0, 0, 0.82, 5.12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.82, 5.12, 0.82, 5.12, -0.94, 5.14, 0.82, 5.12, 0.82, 5.12, 0.24, 4.36, 0.24, 4.36, 0.24, 4.36, 0, 0, 0.82, 5.12 ] - } - ] - } - } - } - } -} -} \ No newline at end of file diff --git a/spine-corona/examples/spineboy/spineboy-mesh.lua b/spine-corona/examples/spineboy/spineboy-mesh.lua deleted file mode 100644 index d1ed51cef..000000000 --- a/spine-corona/examples/spineboy/spineboy-mesh.lua +++ /dev/null @@ -1,62 +0,0 @@ - --- This example shows simple usage of displaying a skeleton with queued animations. - -local spine = require "spine-corona.spine" - -local json = spine.SkeletonJson.new() -json.scale = 0.6 -local skeletonData = json:readSkeletonDataFile("examples/spineboy/spineboy-mesh.json") - -local skeleton = spine.Skeleton.new(skeletonData) -function skeleton:createImage (attachment) - -- Customize where images are loaded. - return display.newImage("examples/spineboy/images/" .. attachment.name .. ".png") -end -function skeleton:createMesh (attachment, meshParameters) - -- Customize where mesh fill is loaded from. - local mesh = display.newMesh(meshParameters) - mesh.fill = {type="image", filename="examples/spineboy/images/" .. attachment.name .. ".png"} - return mesh -end - -skeleton.group.x = display.contentWidth * 0.5 -skeleton.group.y = display.contentHeight * 0.9 -skeleton.flipX = false -skeleton.flipY = false -skeleton.debug = true -- Omit or set to false to not draw debug lines on top of the images. -skeleton.debugAabb = true -skeleton:setToSetupPose() - - -local stateData = spine.AnimationStateData.new(skeletonData) - --- AnimationState has a queue of animations and can apply them with crossfading. -local state = spine.AnimationState.new(stateData) -state:addAnimationByName(0, "run", true, 0) - -state.onStart = function (trackIndex) - print(trackIndex.." start: "..state:getCurrent(trackIndex).animation.name) -end -state.onEnd = function (trackIndex) - print(trackIndex.." end: "..state:getCurrent(trackIndex).animation.name) -end -state.onComplete = function (trackIndex, loopCount) - print(trackIndex.." complete: "..state:getCurrent(trackIndex).animation.name..", "..loopCount) -end -state.onEvent = function (trackIndex, event) - print(trackIndex.." event: "..state:getCurrent(trackIndex).animation.name..", "..event.data.name..", "..event.intValue..", "..event.floatValue..", '"..(event.stringValue or "").."'") -end - -local lastTime = 0 -Runtime:addEventListener("enterFrame", function (event) - -- Compute time in seconds since last frame. - local currentTime = event.time / 1000 - local delta = currentTime - lastTime - lastTime = currentTime - - -- Update the state with the delta time, apply it, and update the world transforms. - state:update(delta) - state:apply(skeleton) - skeleton:updateWorldTransform() -end) - diff --git a/spine-corona/examples/spineboy/spineboy.json b/spine-corona/examples/spineboy/spineboy.json deleted file mode 100644 index 408b1d87e..000000000 --- a/spine-corona/examples/spineboy/spineboy.json +++ /dev/null @@ -1 +0,0 @@ -{"skeleton":{"hash":"K7WPVqF4PZ8L4jRHQe10IDN6xJI","spine":"2.1.03","width":470.64,"height":731.52},"bones":[{"name":"hip","y":247.47},{"name":"front_thigh","parent":"hip","length":74.8,"x":-17.45,"y":-11.64,"rotation":-95.51},{"name":"rear_thigh","parent":"hip","length":85.71,"x":8.91,"y":-5.62,"rotation":-72.54},{"name":"torso","parent":"hip","length":127.55,"x":-1.61,"y":4.9,"rotation":103.82},{"name":"front_shin","parent":"front_thigh","length":128.76,"x":78.69,"y":1.6,"rotation":-2.21,"inheritScale":false},{"name":"front_upper_arm","parent":"torso","length":69.45,"x":103.75,"y":19.32,"rotation":168.37},{"name":"neck","parent":"torso","length":25.45,"x":127.49,"y":-0.3,"rotation":-31.53},{"name":"rear_shin","parent":"rear_thigh","length":121.87,"x":86.1,"y":-1.32,"rotation":-19.83},{"name":"rear_upper_arm","parent":"torso","length":51.93,"x":92.35,"y":-19.22,"rotation":-169.55},{"name":"front_bracer","parent":"front_upper_arm","length":40.57,"x":68.8,"y":-0.68,"rotation":18.29},{"name":"front_foot","parent":"front_shin","length":91.34,"x":128.75,"y":-0.33,"rotation":77.9},{"name":"head","parent":"neck","length":263.57,"x":27.66,"y":-0.25,"rotation":23.18},{"name":"rear_bracer","parent":"rear_upper_arm","length":34.55,"x":51.35,"rotation":23.15},{"name":"rear_foot","parent":"rear_shin","length":82.57,"x":121.45,"y":-0.75,"rotation":69.3},{"name":"front_fist","parent":"front_bracer","length":65.38,"x":40.56,"y":0.19,"rotation":12.43},{"name":"gun","parent":"rear_bracer","length":43.1,"x":34.42,"y":-0.45,"rotation":5.34},{"name":"gunTip","parent":"gun","x":201.04,"y":52.13,"rotation":6.83}],"slots":[{"name":"rear_upper_arm","bone":"rear_upper_arm","attachment":"rear_upper_arm"},{"name":"rear_bracer","bone":"rear_bracer","attachment":"rear_bracer"},{"name":"gun","bone":"gun","attachment":"gun"},{"name":"rear_foot","bone":"rear_foot","attachment":"rear_foot"},{"name":"rear_thigh","bone":"rear_thigh","attachment":"rear_thigh"},{"name":"rear_shin","bone":"rear_shin","attachment":"rear_shin"},{"name":"neck","bone":"neck","attachment":"neck"},{"name":"torso","bone":"torso","attachment":"torso"},{"name":"front_upper_arm","bone":"front_upper_arm","attachment":"front_upper_arm"},{"name":"head","bone":"head","attachment":"head"},{"name":"eye","bone":"head","attachment":"eye_indifferent"},{"name":"front_thigh","bone":"front_thigh","attachment":"front_thigh"},{"name":"front_foot","bone":"front_foot","attachment":"front_foot"},{"name":"front_shin","bone":"front_shin","attachment":"front_shin"},{"name":"mouth","bone":"head","attachment":"mouth_smile"},{"name":"goggles","bone":"head","attachment":"goggles"},{"name":"front_bracer","bone":"front_bracer","attachment":"front_bracer"},{"name":"front_fist","bone":"front_fist","attachment":"front_fist_closed"},{"name":"muzzle","bone":"gunTip","additive":true},{"name":"head-bb","bone":"head"},{"name":"headbb","bone":"head","attachment":"headbb"}],"skins":{"default":{"eye":{"eye_indifferent":{"x":85.72,"y":-28.18,"rotation":-70.63,"width":93,"height":89},"eye_surprised":{"x":85.72,"y":-28.18,"rotation":-70.63,"width":93,"height":89}},"front_bracer":{"front_bracer":{"x":12.03,"y":-1.67,"rotation":79.59,"width":58,"height":80}},"front_fist":{"front_fist_closed":{"x":35.49,"y":6,"rotation":67.16,"width":75,"height":82},"front_fist_open":{"x":39.56,"y":7.76,"rotation":67.16,"width":86,"height":87}},"front_foot":{"front_foot":{"x":29.51,"y":7.83,"rotation":18.68,"width":126,"height":69},"front_foot_bend1":{"x":29.51,"y":7.83,"rotation":18.68,"width":128,"height":70},"front_foot_bend2":{"x":16.07,"y":13.83,"rotation":18.68,"width":108,"height":93}},"front_shin":{"front_shin":{"x":55.11,"y":-3.54,"rotation":96.59,"width":82,"height":184}},"front_thigh":{"front_thigh":{"x":42.47,"y":4.44,"rotation":84.86,"width":48,"height":112}},"front_upper_arm":{"front_upper_arm":{"x":28.3,"y":7.37,"rotation":97.89,"width":54,"height":97}},"goggles":{"goggles":{"x":97.07,"y":6.54,"rotation":-70.63,"width":261,"height":166}},"gun":{"gun":{"x":77.3,"y":16.4,"rotation":60.82,"width":210,"height":203}},"head":{"head":{"x":128.95,"y":0.29,"rotation":-70.63,"width":271,"height":298}},"head-bb":{"head":{"type":"boundingbox","vertices":[-19.143097,-70.30209,40.80313,-118.074234,257.77155,-115.61827,285.16193,57.18005,120.77191,164.95125,-5.067627,76.94907]}},"headbb":{"headbb":{"type":"boundingbox","vertices":[-12.554413,-54.026264,23.48825,-101.27528,231.95355,-109.845566,274.80518,49.916832,181.1228,122.143875,83.208466,133.12569,2.8721924,56.44203]}},"mouth":{"mouth_grind":{"x":23.68,"y":-32.23,"rotation":-70.63,"width":93,"height":59},"mouth_oooo":{"x":23.68,"y":-32.23,"rotation":-70.63,"width":93,"height":59},"mouth_smile":{"x":23.68,"y":-32.23,"rotation":-70.63,"width":93,"height":59}},"muzzle":{"muzzle":{"x":18.25,"y":5.44,"rotation":0.15,"width":462,"height":400}},"neck":{"neck":{"x":9.76,"y":-3.01,"rotation":-55.22,"width":36,"height":41}},"rear_bracer":{"rear_bracer":{"x":11.15,"y":-2.2,"rotation":66.17,"width":56,"height":72}},"rear_foot":{"rear_foot":{"x":31.51,"y":3.57,"rotation":23.07,"width":113,"height":60},"rear_foot_bend1":{"x":34.39,"y":4.8,"rotation":23.07,"width":117,"height":66},"rear_foot_bend2":{"x":30.38,"y":12.62,"rotation":23.07,"width":103,"height":83}},"rear_shin":{"rear_shin":{"x":58.29,"y":-2.75,"rotation":92.37,"width":75,"height":178}},"rear_thigh":{"rear_thigh":{"x":33.1,"y":-4.11,"rotation":72.54,"width":65,"height":104}},"rear_upper_arm":{"rear_upper_arm":{"x":21.12,"y":4.08,"rotation":89.32,"width":47,"height":87}},"torso":{"torso":{"x":63.61,"y":7.12,"rotation":-94.53,"width":98,"height":180}}}},"events":{"footstep":{},"headAttach":{"int":3,"float":4},"headBehind":{"int":5,"float":6,"string":"setup"},"headPop":{"int":1,"float":2}},"animations":{"death":{"slots":{"eye":{"attachment":[{"time":0,"name":"eye_surprised"},{"time":0.4666,"name":"eye_indifferent"},{"time":2.2333,"name":"eye_surprised"},{"time":4.5333,"name":"eye_indifferent"}]},"front_fist":{"attachment":[{"time":0,"name":"front_fist_open"}]},"mouth":{"attachment":[{"time":0,"name":"mouth_oooo"},{"time":2.2333,"name":"mouth_grind"},{"time":4.5333,"name":"mouth_oooo"}]}},"bones":{"head":{"rotate":[{"time":0,"angle":-2.82},{"time":0.1333,"angle":-28.74},{"time":0.2333,"angle":11.42},{"time":0.3333,"angle":-50.24},{"time":0.4,"angle":-72.66,"curve":"stepped"},{"time":0.4333,"angle":-72.66},{"time":0.5,"angle":-20.24},{"time":0.5666,"angle":-85.28,"curve":"stepped"},{"time":0.9333,"angle":-85.28,"curve":"stepped"},{"time":2.2333,"angle":-85.28},{"time":2.5,"angle":-51.96,"curve":"stepped"},{"time":4.5333,"angle":-51.96},{"time":4.6666,"angle":-85.28}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"neck":{"rotate":[{"time":0,"angle":-2.82},{"time":0.1333,"angle":12.35},{"time":0.2333,"angle":29.89},{"time":0.3,"angle":70.36},{"time":0.4,"angle":-10.22,"curve":"stepped"},{"time":0.4333,"angle":-10.22},{"time":0.5,"angle":2.92},{"time":0.5666,"angle":47.94,"curve":"stepped"},{"time":2.2333,"angle":47.94},{"time":2.5,"angle":18.5,"curve":"stepped"},{"time":4.5333,"angle":18.5},{"time":4.6666,"angle":47.94}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"torso":{"rotate":[{"time":0,"angle":-8.61},{"time":0.1333,"angle":28.19},{"time":0.2666,"angle":-280.19},{"time":0.4,"angle":-237.22,"curve":"stepped"},{"time":0.4333,"angle":-237.22},{"time":0.5,"angle":76.03,"curve":"stepped"},{"time":0.8,"angle":76.03,"curve":"stepped"},{"time":0.9333,"angle":76.03,"curve":"stepped"},{"time":2.2333,"angle":76.03}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.9333,"x":0,"y":0,"curve":"stepped"},{"time":2.2333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"front_upper_arm":{"rotate":[{"time":0,"angle":-38.85},{"time":0.1333,"angle":-299.58},{"time":0.2666,"angle":-244.74},{"time":0.4,"angle":-292.35},{"time":0.4333,"angle":-315.84},{"time":0.5,"angle":-347.94},{"time":0.7,"angle":-347.33,"curve":"stepped"},{"time":2.2333,"angle":-347.33},{"time":2.7,"angle":-290.68},{"time":2.7666,"angle":-285.1},{"time":4.6666,"angle":-290.68},{"time":4.8,"angle":8.61},{"time":4.8666,"angle":10.94}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"rear_upper_arm":{"rotate":[{"time":0,"angle":-44.69},{"time":0.1333,"angle":112.26},{"time":0.2666,"angle":129.07},{"time":0.4,"angle":134.94,"curve":"stepped"},{"time":0.4333,"angle":134.94},{"time":0.5666,"angle":172.6,"curve":"stepped"},{"time":0.9333,"angle":172.6,"curve":"stepped"},{"time":2.2333,"angle":172.6}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"front_bracer":{"rotate":[{"time":0,"angle":21.88},{"time":0.1333,"angle":11.48},{"time":0.2666,"angle":-18.81},{"time":0.4,"angle":-18.92},{"time":0.4333,"angle":-18.28},{"time":0.5,"angle":60.61},{"time":0.7,"angle":-18.87,"curve":"stepped"},{"time":2.2333,"angle":-18.87},{"time":2.7,"angle":-1.95,"curve":"stepped"},{"time":4.6666,"angle":-1.95},{"time":4.8,"angle":34.55},{"time":4.9333,"angle":-18.74}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"front_fist":{"rotate":[{"time":0,"angle":-2.33},{"time":0.2666,"angle":26.34},{"time":0.7,"angle":-6.07,"curve":"stepped"},{"time":2.2333,"angle":-6.07},{"time":2.7,"angle":5.72,"curve":"stepped"},{"time":4.6666,"angle":5.72},{"time":4.8666,"angle":-6.52}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"rear_bracer":{"rotate":[{"time":0,"angle":10.36},{"time":0.1333,"angle":-23.12},{"time":0.2666,"angle":-23.11},{"time":0.4,"angle":-23.16,"curve":"stepped"},{"time":0.4333,"angle":-23.16},{"time":0.5666,"angle":-23.2,"curve":"stepped"},{"time":0.9333,"angle":-23.2,"curve":"stepped"},{"time":2.2333,"angle":-23.2}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"gun":{"rotate":[{"time":0,"angle":-2.78},{"time":0.1333,"angle":-24.58}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"hip":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.9333,"angle":0,"curve":"stepped"},{"time":2.2333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2,"x":50.34,"y":151.73},{"time":0.4,"x":5.16,"y":-119.64,"curve":"stepped"},{"time":0.4333,"x":5.16,"y":-119.64},{"time":0.5,"x":50.34,"y":-205.18,"curve":"stepped"},{"time":0.8,"x":50.34,"y":-205.18,"curve":"stepped"},{"time":0.9333,"x":50.34,"y":-205.18,"curve":"stepped"},{"time":2.2333,"x":50.34,"y":-205.18}],"scale":[{"time":0,"x":1,"y":1}]},"front_thigh":{"rotate":[{"time":0,"angle":0},{"time":0.1333,"angle":8.47},{"time":0.2666,"angle":115.95},{"time":0.4,"angle":180.66,"curve":"stepped"},{"time":0.4333,"angle":180.66},{"time":0.5,"angle":155.22},{"time":0.6,"angle":97.73}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"front_shin":{"rotate":[{"time":0,"angle":0},{"time":0.1333,"angle":-27.37},{"time":0.2666,"angle":-35.1},{"time":0.4,"angle":-37.72,"curve":"stepped"},{"time":0.4333,"angle":-37.72},{"time":0.5,"angle":-40.06},{"time":0.6,"angle":2.76}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"rear_thigh":{"rotate":[{"time":0,"angle":0},{"time":0.1333,"angle":70.45},{"time":0.2666,"angle":155.34},{"time":0.4,"angle":214.31,"curve":"stepped"},{"time":0.4333,"angle":214.31},{"time":0.5,"angle":169.67},{"time":0.8,"angle":83.27}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"rear_shin":{"rotate":[{"time":0,"angle":0},{"time":0.1333,"angle":18.93},{"time":0.2666,"angle":-21.04},{"time":0.4,"angle":-29.93,"curve":"stepped"},{"time":0.4333,"angle":-29.93},{"time":0.5,"angle":-16.79},{"time":0.8,"angle":7.77}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"rear_foot":{"rotate":[{"time":0,"angle":0},{"time":0.1333,"angle":-11.62},{"time":0.4,"angle":-45.59,"curve":"stepped"},{"time":0.4333,"angle":-45.59}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"front_foot":{"rotate":[{"time":0,"angle":0},{"time":0.4,"angle":-48.75,"curve":"stepped"},{"time":0.4333,"angle":-48.75}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"gunTip":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]}}},"hit":{"slots":{"front_fist":{"attachment":[{"time":0.1666,"name":"front_fist_open"}]},"mouth":{"attachment":[{"time":0,"name":"mouth_grind"},{"time":0.3333,"name":"mouth_smile"}]}},"bones":{"torso":{"rotate":[{"time":0,"angle":56.42},{"time":0.3333,"angle":8.89}]},"neck":{"rotate":[{"time":0,"angle":35.38},{"time":0.2333,"angle":24.94}]},"head":{"rotate":[{"time":0,"angle":10.21},{"time":0.3333,"angle":-41.3}]},"front_upper_arm":{"rotate":[{"time":0,"angle":-310.92,"curve":[0.38,0.53,0.744,1]},{"time":0.3333,"angle":-112.59}],"translate":[{"time":0,"x":7.23,"y":-13.13}]},"front_bracer":{"rotate":[{"time":0,"angle":36.99},{"time":0.3333,"angle":-28.64}]},"front_fist":{"rotate":[{"time":0,"angle":13.59},{"time":0.3333,"angle":7.55}]},"rear_upper_arm":{"rotate":[{"time":0,"angle":271.02,"curve":[0.342,0.36,0.68,0.71]},{"time":0.3333,"angle":-15.84}],"translate":[{"time":0.3333,"x":-0.09,"y":-0.46}]},"rear_bracer":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":40.03}]},"gun":{"rotate":[{"time":0,"angle":14.98},{"time":0.3333,"angle":39.75}]},"hip":{"translate":[{"time":0,"x":-75.54,"y":-78.03},{"time":0.2333,"x":-36.48,"y":12.42},{"time":0.3333,"x":-36.48,"y":-2.99}]},"front_thigh":{"rotate":[{"time":0,"angle":90.94,"curve":[0.227,0.26,0.432,1]},{"time":0.3333,"angle":32.02}],"translate":[{"time":0,"x":7.21,"y":-4}]},"rear_thigh":{"rotate":[{"time":0,"angle":40.51,"curve":[0.295,0.3,0.59,0.99]},{"time":0.3333,"angle":90.76}],"translate":[{"time":0,"x":-1.96,"y":-0.32}]},"front_shin":{"rotate":[{"time":0,"angle":-96.62},{"time":0.3333,"angle":-15.13}]},"rear_shin":{"rotate":[{"time":0,"angle":7.99},{"time":0.3333,"angle":-67.54}],"scale":[{"time":0,"x":1,"y":1}]},"front_foot":{"rotate":[{"time":0,"angle":5.4},{"time":0.3333,"angle":-16.26}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"rear_foot":{"rotate":[{"time":0,"angle":2.67},{"time":0.3333,"angle":-10.31}]}}},"idle":{"slots":{"front_fist":{"attachment":[{"time":0,"name":"front_fist_open"},{"time":1.6666,"name":"front_fist_open"}]},"mouth":{"attachment":[{"time":0,"name":"mouth_smile"},{"time":1.6666,"name":"mouth_smile"}]}},"bones":{"torso":{"rotate":[{"time":0,"angle":-5.61,"curve":[0.25,0,0.75,1]},{"time":0.8333,"angle":-9.65,"curve":[0.25,0,0.75,1]},{"time":1.6666,"angle":-5.61}],"translate":[{"time":0,"x":-6.49,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.6666,"x":1,"y":1}]},"front_upper_arm":{"rotate":[{"time":0,"angle":-59.85,"curve":[0.492,0,0.75,1]},{"time":0.6666,"angle":-54.31,"curve":[0.324,0.11,0.75,1]},{"time":1.6666,"angle":-59.85}],"translate":[{"time":0,"x":-7.12,"y":-8.23},{"time":0.6666,"x":-6.32,"y":-8.3},{"time":1.6666,"x":-7.12,"y":-8.23}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.6666,"x":1,"y":1}]},"rear_upper_arm":{"rotate":[{"time":0,"angle":62.41,"curve":[0.504,0.02,0.75,1]},{"time":0.7333,"angle":43.83,"curve":[0.25,0,0.75,1]},{"time":1.6666,"angle":62.41}],"translate":[{"time":0,"x":-1.83,"y":-16.78},{"time":0.6666,"x":0.34,"y":-15.23},{"time":1.6666,"x":-1.83,"y":-16.78}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.6666,"x":1,"y":1}]},"neck":{"rotate":[{"time":0,"angle":0},{"time":0.6666,"angle":2.39},{"time":1.6666,"angle":0}],"translate":[{"time":0,"x":-1.88,"y":-4.76,"curve":"stepped"},{"time":1.6666,"x":-1.88,"y":-4.76}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.6666,"x":1,"y":1}]},"front_thigh":{"rotate":[{"time":0,"angle":0.64,"curve":[0.235,0,0.558,0.99]},{"time":0.6666,"angle":-4.34,"curve":[0.594,0,0.653,1]},{"time":1.6666,"angle":0.64}],"translate":[{"time":0,"x":-13.39,"y":6.69,"curve":"stepped"},{"time":1.6666,"x":-13.39,"y":6.69}],"scale":[{"time":0,"x":0.896,"y":1,"curve":[0.235,0,0.558,0.99]},{"time":0.6666,"x":0.825,"y":1,"curve":[0.594,0,0.653,1]},{"time":1.6666,"x":0.896,"y":1}]},"front_shin":{"rotate":[{"time":0,"angle":-19.28,"curve":"stepped"},{"time":1.6666,"angle":-19.28}],"scale":[{"time":0,"x":1,"y":1,"curve":[0.235,0,0.558,0.99]},{"time":0.6666,"x":0.994,"y":1,"curve":[0.594,0,0.653,1]},{"time":1.6666,"x":1,"y":1}]},"rear_thigh":{"rotate":[{"time":0,"angle":30.5,"curve":[0.235,0,0.558,0.99]},{"time":0.6666,"angle":40.15,"curve":[0.594,0,0.653,1]},{"time":1.6666,"angle":30.5}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.6666,"x":1,"y":1}]},"rear_shin":{"rotate":[{"time":0,"angle":-23.83,"curve":[0.235,0,0.558,0.99]},{"time":0.6666,"angle":-43.77,"curve":[0.594,0,0.653,1]},{"time":1.6666,"angle":-23.83}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.6666,"x":1,"y":1}]},"front_foot":{"rotate":[{"time":0,"angle":5.13,"curve":[0.235,0,0.558,0.99]},{"time":0.6666,"angle":10.04,"curve":[0.594,0,0.653,1]},{"time":1.6666,"angle":5.13}],"scale":[{"time":0,"x":0.755,"y":1.309,"curve":"stepped"},{"time":1.6666,"x":0.755,"y":1.309}]},"hip":{"translate":[{"time":0,"x":-6.63,"y":-23.01,"curve":[0.235,0,0.558,0.99]},{"time":0.6666,"x":6.27,"y":-35,"curve":[0.594,0,0.653,1]},{"time":1.6666,"x":-6.63,"y":-23.01}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.6666,"x":1,"y":1}]},"rear_foot":{"rotate":[{"time":0,"angle":-7.34,"curve":[0.235,0,0.558,0.99]},{"time":0.6666,"angle":3.85,"curve":[0.594,0,0.653,1]},{"time":1.6666,"angle":-7.34}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.6666,"x":1,"y":1}]},"rear_bracer":{"rotate":[{"time":0,"angle":-17.16,"curve":[0.25,0,0.75,1]},{"time":0.6666,"angle":12.52,"curve":[0.25,0,0.75,1]},{"time":1.6666,"angle":-17.16}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.6666,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":-5.51,"curve":[0.25,0,0.75,1]},{"time":0.6666,"angle":-3.12,"curve":[0.25,0,0.75,1]},{"time":1.6666,"angle":-5.51}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.6666,"x":1,"y":1}]},"front_bracer":{"rotate":[{"time":0,"angle":45.46,"curve":[0.492,0,0.75,1]},{"time":0.6666,"angle":41.33,"curve":[0.32,0.1,0.736,0.91]},{"time":1.6666,"angle":45.46}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.6666,"x":1,"y":1}]},"gun":{"rotate":[{"time":0,"angle":0,"curve":[0.25,0,0.75,1]},{"time":0.6666,"angle":-15.59,"curve":[0.732,0,0.769,0.99]},{"time":1.6666,"angle":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.6666,"x":1,"y":1}]},"front_fist":{"rotate":[{"time":0,"angle":-6.84,"curve":[0.492,0,0.75,1]},{"time":0.6666,"angle":-14.63,"curve":[0.324,0.11,0.75,1]},{"time":1.6666,"angle":-6.84}],"scale":[{"time":0,"x":1,"y":1,"curve":[0.25,0,0.75,1]},{"time":0.6666,"x":0.689,"y":1.1,"curve":[0.25,0,0.75,1]},{"time":1.6666,"x":1,"y":1}]}}},"jump":{"slots":{"front_fist":{"attachment":[{"time":0,"name":"front_fist_open"},{"time":0.2,"name":"front_fist_closed"},{"time":0.6666,"name":"front_fist_open"}]},"mouth":{"attachment":[{"time":0,"name":"mouth_grind"}]},"torso":{"attachment":[{"time":0,"name":"torso"}]}},"bones":{"front_thigh":{"rotate":[{"time":0,"angle":91.53,"curve":[0.278,0.46,0.763,1]},{"time":0.2,"angle":-35.83,"curve":[0.761,0,0.75,1]},{"time":0.4333,"angle":127.74},{"time":0.7333,"angle":48.18,"curve":[0.227,0.26,0.432,1]},{"time":0.8333,"angle":25.35},{"time":0.9333,"angle":45.37},{"time":1.0333,"angle":38.12},{"time":1.1333,"angle":25.35},{"time":1.3333,"angle":91.53}],"translate":[{"time":0,"x":-2.56,"y":5.77},{"time":0.4333,"x":8.3,"y":7.98},{"time":0.7333,"x":7.21,"y":-4},{"time":1.3333,"x":-2.56,"y":5.77}],"scale":[{"time":0,"x":1,"y":1}]},"torso":{"rotate":[{"time":0,"angle":-42.63},{"time":0.2,"angle":-5.74},{"time":0.4333,"angle":-50.76},{"time":0.7333,"angle":1.89},{"time":0.8333,"angle":11.58},{"time":0.9666,"angle":-1.89},{"time":1.1333,"angle":11.58},{"time":1.3333,"angle":-42.63}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"rear_thigh":{"rotate":[{"time":0,"angle":-26.32},{"time":0.2,"angle":121.44},{"time":0.4333,"angle":70.54},{"time":0.7333,"angle":79.89,"curve":[0.295,0.3,0.59,0.99]},{"time":0.8333,"angle":99.12},{"time":0.9333,"angle":74.05},{"time":1.0333,"angle":98.04},{"time":1.1333,"angle":99.12},{"time":1.3333,"angle":-26.32}],"translate":[{"time":0,"x":-0.56,"y":-0.32},{"time":0.4333,"x":-8.5,"y":10.58},{"time":0.7333,"x":-1.96,"y":-0.32},{"time":1.3333,"x":-0.56,"y":-0.32}],"scale":[{"time":0,"x":1,"y":1}]},"rear_shin":{"rotate":[{"time":0,"angle":-78.69},{"time":0.4333,"angle":-55.56},{"time":0.7333,"angle":-62.84},{"time":0.8333,"angle":-80.74},{"time":0.9333,"angle":-41.12},{"time":1.0333,"angle":-77.4},{"time":1.1333,"angle":-80.74},{"time":1.3333,"angle":-78.69}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.7333,"x":1,"y":1}]},"front_upper_arm":{"rotate":[{"time":0,"angle":-22.61},{"time":0.2,"angle":-246.68},{"time":0.6,"angle":11.28,"curve":[0.246,0,0.633,0.53]},{"time":0.7333,"angle":-57.45,"curve":[0.38,0.53,0.744,1]},{"time":0.8666,"angle":-112.59},{"time":0.9333,"angle":-102.17},{"time":1.0333,"angle":-108.61},{"time":1.1333,"angle":-112.59},{"time":1.3333,"angle":-22.61}],"translate":[{"time":0,"x":6.08,"y":7.15},{"time":0.2,"x":7.23,"y":-13.13,"curve":"stepped"},{"time":0.7333,"x":7.23,"y":-13.13},{"time":1.3333,"x":6.08,"y":7.15}],"scale":[{"time":0,"x":1,"y":1}]},"front_bracer":{"rotate":[{"time":0,"angle":66.46},{"time":0.2,"angle":42.39},{"time":0.4333,"angle":26.06},{"time":0.7333,"angle":13.28},{"time":0.8666,"angle":-28.64},{"time":0.9333,"angle":-22.31},{"time":1.0333,"angle":-35.39},{"time":1.1333,"angle":-28.64},{"time":1.3333,"angle":66.46}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"front_fist":{"rotate":[{"time":0,"angle":-28.43},{"time":0.4333,"angle":-45.6},{"time":0.7333,"angle":-53.66},{"time":0.8666,"angle":7.55},{"time":0.9333,"angle":31.15},{"time":1.0333,"angle":-32.58},{"time":1.1333,"angle":7.55},{"time":1.3333,"angle":-28.43}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"rear_upper_arm":{"rotate":[{"time":0,"angle":39.68},{"time":0.2,"angle":276.57},{"time":0.3,"angle":17.73},{"time":0.4333,"angle":83.38},{"time":0.6,"angle":-4.71,"curve":[0.246,0,0.633,0.53]},{"time":0.7333,"angle":-69.63,"curve":[0.342,0.36,0.68,0.71]},{"time":0.7666,"angle":321.47,"curve":[0.333,0.33,0.667,0.66]},{"time":0.8,"angle":33.7,"curve":[0.358,0.64,0.693,1]},{"time":0.8666,"angle":34.56},{"time":1.0333,"angle":71.96},{"time":1.1333,"angle":34.56},{"time":1.3333,"angle":39.68}],"translate":[{"time":0,"x":-3.1,"y":-4.86},{"time":0.2,"x":23.33,"y":49.07},{"time":0.4333,"x":20.78,"y":40.21},{"time":1.3333,"x":-3.1,"y":-4.86}],"scale":[{"time":0,"x":1,"y":1}]},"rear_bracer":{"rotate":[{"time":0,"angle":29.66},{"time":0.2,"angle":45.06},{"time":0.4333,"angle":-4.34},{"time":0.7666,"angle":61.68},{"time":0.8,"angle":82.59},{"time":0.8666,"angle":80.06},{"time":1.0333,"angle":57.56},{"time":1.1333,"angle":80.06},{"time":1.3333,"angle":29.66}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"neck":{"rotate":[{"time":0,"angle":24.9},{"time":0.2,"angle":16.31},{"time":0.4333,"angle":7.44},{"time":0.7333,"angle":-20.35},{"time":0.8333,"angle":-0.69,"curve":"stepped"},{"time":1.1333,"angle":-0.69},{"time":1.3333,"angle":24.9}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":24.92},{"time":0.2,"angle":10.36},{"time":0.4333,"angle":28.65},{"time":0.7333,"angle":-2.65},{"time":0.8333,"angle":-28.94,"curve":"stepped"},{"time":1.1333,"angle":-28.94},{"time":1.3333,"angle":24.92}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"hip":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":-34.51,"y":-78.62,"curve":[0.232,1,0.75,1]},{"time":0.2,"x":-34.51,"y":182.5,"curve":[0.232,0.48,0.598,0.79]},{"time":0.7666,"x":-34.51,"y":596.22,"curve":[0.329,0.17,0.66,0.21]},{"time":1.1333,"x":-34.51,"y":2.49},{"time":1.3333,"x":-34.51,"y":-78.62}],"scale":[{"time":0,"x":1,"y":1}]},"front_shin":{"rotate":[{"time":0,"angle":-90.62,"curve":[0.416,0.54,0.743,1]},{"time":0.2,"angle":-10.52,"curve":[0.644,0,0.75,1]},{"time":0.4333,"angle":-127.72},{"time":0.7333,"angle":-19.91},{"time":0.8333,"angle":-5.16},{"time":0.9333,"angle":-35.06},{"time":1.0333,"angle":-43.97},{"time":1.1333,"angle":-5.16},{"time":1.3333,"angle":-90.62}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"front_foot":{"rotate":[{"time":0,"angle":-0.79},{"time":0.0333,"angle":16.27},{"time":0.0666,"angle":23.52},{"time":0.1,"angle":21.02},{"time":0.1333,"angle":10.92},{"time":0.2,"angle":-38.45},{"time":0.4333,"angle":6.62},{"time":0.7333,"angle":-11.51},{"time":1.0333,"angle":-22.91},{"time":1.3333,"angle":-0.79}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"rear_foot":{"rotate":[{"time":0,"angle":-12.77},{"time":0.2,"angle":17.05},{"time":0.4333,"angle":19.45},{"time":0.7333,"angle":2.67},{"time":1.0333,"angle":-28.49},{"time":1.3333,"angle":-12.77}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"gun":{"rotate":[{"time":0,"angle":6.18},{"time":0.2,"angle":30.81},{"time":0.4333,"angle":13.25},{"time":0.7333,"angle":14.98},{"time":0.7666,"angle":25.64},{"time":0.8,"angle":20.62},{"time":0.8666,"angle":64.52},{"time":1.0333,"angle":8.59},{"time":1.1333,"angle":64.52},{"time":1.3333,"angle":6.18}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]}}},"run":{"slots":{"front_fist":{"attachment":[{"time":0,"name":"front_fist_closed"}]},"mouth":{"attachment":[{"time":0,"name":"mouth_grind"}]},"torso":{"attachment":[{"time":0,"name":"torso"}]}},"bones":{"front_thigh":{"rotate":[{"time":0,"angle":42.05,"curve":[0.195,0.86,0.75,1]},{"time":0.0666,"angle":46.07},{"time":0.1333,"angle":-20.28},{"time":0.2,"angle":-27.23},{"time":0.2666,"angle":-47.16},{"time":0.3333,"angle":-39.79},{"time":0.4,"angle":-25.86},{"time":0.4666,"angle":14.35},{"time":0.5333,"angle":55.62},{"time":0.6,"angle":69.65},{"time":0.6666,"angle":86.4},{"time":0.7333,"angle":65.87},{"time":0.8,"angle":42.05}],"translate":[{"time":0,"x":0,"y":0},{"time":0.0333,"x":-5.79,"y":11.15},{"time":0.0666,"x":-5.13,"y":11.55},{"time":0.1333,"x":-7.7,"y":8.98},{"time":0.5333,"x":-1.26,"y":3.83},{"time":0.8,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.8,"x":1,"y":1}]},"torso":{"rotate":[{"time":0,"angle":-39.7},{"time":0.2,"angle":-57.29},{"time":0.4,"angle":-39.7},{"time":0.6,"angle":-57.29},{"time":0.8,"angle":-39.7}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.4,"x":0,"y":0,"curve":"stepped"},{"time":0.8,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.8,"x":1,"y":1}]},"rear_thigh":{"rotate":[{"time":0,"angle":-56.59},{"time":0.0666,"angle":-21.57},{"time":0.1333,"angle":27.95},{"time":0.2,"angle":42.42},{"time":0.2666,"angle":62.37},{"time":0.3333,"angle":45.42},{"time":0.4,"angle":15.67},{"time":0.4666,"angle":28.22},{"time":0.5333,"angle":-38.62},{"time":0.6,"angle":-53.26},{"time":0.6666,"angle":-79.31},{"time":0.7333,"angle":-86.47},{"time":0.8,"angle":-56.59}],"translate":[{"time":0,"x":0,"y":0},{"time":0.4,"x":-6.76,"y":-3.86},{"time":0.4333,"x":-15.85,"y":7.28},{"time":0.4666,"x":-13.04,"y":4.04},{"time":0.5,"x":-10.24,"y":7.11},{"time":0.5333,"x":-9.01,"y":-5.15},{"time":0.6666,"x":-23.18,"y":-2.57},{"time":0.8,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.8,"x":1,"y":1}]},"rear_shin":{"rotate":[{"time":0,"angle":-74},{"time":0.0666,"angle":-83.38},{"time":0.1333,"angle":-106.69},{"time":0.2,"angle":-66.01},{"time":0.2666,"angle":-55.22},{"time":0.3333,"angle":-24.8},{"time":0.4,"angle":18.44,"curve":[0.25,0,0.75,1]},{"time":0.4666,"angle":-56.65},{"time":0.5333,"angle":-11.94,"curve":[0.25,0,0.75,1]},{"time":0.6666,"angle":-41.26},{"time":0.7333,"angle":-43.6},{"time":0.8,"angle":-74}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.8,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.8,"x":1,"y":1}]},"front_upper_arm":{"rotate":[{"time":0,"angle":-89.36},{"time":0.0666,"angle":-95.67},{"time":0.1333,"angle":-22},{"time":0.2,"angle":-316.04},{"time":0.2666,"angle":-274.94},{"time":0.3333,"angle":-273.74},{"time":0.4,"angle":-272.09},{"time":0.4666,"angle":-264.89},{"time":0.5333,"angle":-320.09},{"time":0.6,"angle":-50.83},{"time":0.6666,"angle":-81.72},{"time":0.7333,"angle":-83.92},{"time":0.8,"angle":-89.36}],"translate":[{"time":0,"x":6.24,"y":10.05},{"time":0.2666,"x":4.95,"y":-13.13},{"time":0.6,"x":-2.43,"y":1.94},{"time":0.8,"x":6.24,"y":10.05}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.8,"x":1,"y":1}]},"front_bracer":{"rotate":[{"time":0,"angle":33.43},{"time":0.0666,"angle":20.53},{"time":0.1333,"angle":15.26},{"time":0.2,"angle":19.28},{"time":0.2666,"angle":22.62},{"time":0.3333,"angle":37.29},{"time":0.4,"angle":41.53},{"time":0.4666,"angle":31.73},{"time":0.5333,"angle":67.45},{"time":0.6666,"angle":39.77},{"time":0.7333,"angle":30.95},{"time":0.8,"angle":33.43}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.8,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.8,"x":1,"y":1}]},"front_fist":{"rotate":[{"time":0,"angle":-19.75},{"time":0.0666,"angle":-37.11},{"time":0.1333,"angle":-50.79},{"time":0.2666,"angle":-12.69},{"time":0.3333,"angle":3.01},{"time":0.4333,"angle":12.05},{"time":0.5333,"angle":13.25},{"time":0.8,"angle":-19.75}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.8,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.8,"x":1,"y":1}]},"rear_upper_arm":{"rotate":[{"time":0,"angle":68.68},{"time":0.0666,"angle":73.89},{"time":0.1333,"angle":-9.64},{"time":0.2,"angle":284.27},{"time":0.2666,"angle":283.29},{"time":0.3333,"angle":278.28},{"time":0.4,"angle":271.02},{"time":0.4666,"angle":263.2},{"time":0.5333,"angle":314.25},{"time":0.6,"angle":16.83},{"time":0.6666,"angle":70.35},{"time":0.7333,"angle":73.53},{"time":0.8,"angle":68.68}],"translate":[{"time":0,"x":-2.57,"y":-8.89},{"time":0.1333,"x":-4.68,"y":7.2},{"time":0.2,"x":21.73,"y":51.17},{"time":0.6,"x":4.33,"y":2.05},{"time":0.8,"x":-2.57,"y":-8.89}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.8,"x":1,"y":1}]},"rear_bracer":{"rotate":[{"time":0,"angle":31.04},{"time":0.0666,"angle":28.28},{"time":0.1333,"angle":49.36},{"time":0.2,"angle":59.37},{"time":0.2666,"angle":8.56},{"time":0.3333,"angle":9.38},{"time":0.4,"angle":11.51},{"time":0.4666,"angle":7.22},{"time":0.5333,"angle":-18.44},{"time":0.6,"angle":11.44},{"time":0.6666,"angle":9.99},{"time":0.7333,"angle":8.28},{"time":0.8,"angle":31.04}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.8,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.8,"x":1,"y":1}]},"neck":{"rotate":[{"time":0,"angle":11.03},{"time":0.2,"angle":13.58},{"time":0.4,"angle":11.03},{"time":0.6,"angle":13.58},{"time":0.8,"angle":11.03}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.4,"x":0,"y":0,"curve":"stepped"},{"time":0.8,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.8,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":11.03},{"time":0.1,"angle":12.34},{"time":0.2,"angle":25.55},{"time":0.4,"angle":11.03},{"time":0.5,"angle":12.34},{"time":0.6,"angle":25.55},{"time":0.8,"angle":11.03}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.4,"x":0,"y":0,"curve":"stepped"},{"time":0.8,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.8,"x":1,"y":1}]},"hip":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.8,"angle":0}],"translate":[{"time":0,"x":-62.47,"y":-23.1},{"time":0.0666,"x":-62.47,"y":-38.51,"curve":[0.244,0.04,0.75,1]},{"time":0.2666,"x":-62.47,"y":22.28,"curve":[0.17,0.52,0.75,1]},{"time":0.4,"x":-62.47,"y":-23.1},{"time":0.4333,"x":-62.47,"y":-24.59},{"time":0.4666,"x":-62.47,"y":-43.29,"curve":[0.25,0,0.75,1]},{"time":0.6666,"x":-62.47,"y":22.28},{"time":0.8,"x":-62.47,"y":-23.1}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.8,"x":1,"y":1}]},"front_shin":{"rotate":[{"time":0,"angle":0,"curve":[0.481,0.01,0.75,1]},{"time":0.0666,"angle":-64.42},{"time":0.1333,"angle":-20.59,"curve":[0.25,0,0.75,1]},{"time":0.2666,"angle":-62.51},{"time":0.3333,"angle":-79.74},{"time":0.4,"angle":-78.28},{"time":0.4666,"angle":-118.96,"curve":[0.93,0,0.952,0.95]},{"time":0.6,"angle":-88.95},{"time":0.6666,"angle":-79.09},{"time":0.7333,"angle":-47.77},{"time":0.8,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.8,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.8,"x":1,"y":1}]},"front_foot":{"rotate":[{"time":0,"angle":0},{"time":0.0333,"angle":-21.13,"curve":[0.121,0.23,0.75,1]},{"time":0.0666,"angle":17.64},{"time":0.1,"angle":29.92},{"time":0.1333,"angle":16.44},{"time":0.2,"angle":-29.22},{"time":0.2666,"angle":-1.61},{"time":0.3333,"angle":-10.22},{"time":0.4666,"angle":-15.99},{"time":0.6,"angle":9.03},{"time":0.7333,"angle":17.32},{"time":0.8,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.8,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.8,"x":1,"y":1}]},"rear_foot":{"rotate":[{"time":0,"angle":0},{"time":0.0666,"angle":-12.04},{"time":0.1333,"angle":-0.87},{"time":0.2,"angle":25.81},{"time":0.2666,"angle":4.71},{"time":0.4,"angle":18.09,"curve":[0.281,0.73,0.75,1]},{"time":0.4333,"angle":-1.7},{"time":0.4666,"angle":27.12},{"time":0.5,"angle":38.83},{"time":0.5333,"angle":30.76},{"time":0.5666,"angle":-20.49},{"time":0.6,"angle":-30.8},{"time":0.6666,"angle":-1.31},{"time":0.8,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.8,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.8,"x":1,"y":1}]},"gun":{"rotate":[{"time":0,"angle":0},{"time":0.1333,"angle":24.72},{"time":0.5,"angle":-11.87},{"time":0.8,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.8,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.8,"x":1,"y":1}]}},"events":[{"time":0,"name":"footstep"},{"time":0.4,"name":"footstep","int":1}]},"shoot":{"slots":{"front_fist":{"attachment":[{"time":0.1333,"name":"front_fist_closed"},{"time":0.4,"name":"front_fist_open"}]},"mouth":{"attachment":[{"time":0.1333,"name":"mouth_grind"}]},"muzzle":{"attachment":[{"time":0.1333,"name":"muzzle"},{"time":0.2666,"name":null}],"color":[{"time":0.1333,"color":"ffffff00","curve":[0.118,0.99,0.75,1]},{"time":0.1666,"color":"ffffffff","curve":[0.821,0,0.909,0.89]},{"time":0.2666,"color":"ffffff00"}]}},"bones":{"front_fist":{"scale":[{"time":0.1333,"x":1,"y":1,"curve":"stepped"},{"time":0.4,"x":1,"y":1}]},"gunTip":{"translate":[{"time":0.1333,"x":0,"y":0},{"time":0.2,"x":20.93,"y":1.57}],"scale":[{"time":0.1333,"x":1,"y":1},{"time":0.2,"x":1.247,"y":1.516}]},"gun":{"rotate":[{"time":0,"angle":1.9}],"translate":[{"time":0,"x":7.95,"y":5.84,"curve":[0,0.3,0.678,1]},{"time":0.3,"x":-9.3,"y":-1.41},{"time":0.4,"x":0,"y":0}]},"rear_bracer":{"rotate":[{"time":0,"angle":-30.47}],"translate":[{"time":0,"x":0,"y":0,"curve":[0,0.3,0.678,1]},{"time":0.3,"x":-5.99,"y":-3.71},{"time":0.4,"x":0,"y":0}]},"rear_upper_arm":{"rotate":[{"time":0,"angle":62.3}],"translate":[{"time":0,"x":0,"y":0,"curve":[0,0.3,0.678,1]},{"time":0.3,"x":2.81,"y":11.41},{"time":0.4,"x":0,"y":0}]}}},"test":{"slots":{"front_foot":{"color":[{"time":0.6666,"color":"ffffffff"},{"time":1.3333,"color":"ff0700ff"}]},"gun":{"color":[{"time":0,"color":"ffffffff","curve":"stepped"},{"time":0.6666,"color":"ffffffff"},{"time":1.3333,"color":"32ff00ff"}]},"rear_foot":{"color":[{"time":0.6666,"color":"ffffffff"},{"time":1.3333,"color":"ff0700ff"}]}},"bones":{"head":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-20.72},{"time":0.6666,"angle":-32.41},{"time":1,"angle":-5.3},{"time":1.3333,"angle":24.96},{"time":1.6666,"angle":15.61},{"time":2,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":[0.172,0.37,0.574,0.73]},{"time":0.1666,"x":144.19,"y":-77.59,"curve":[0.372,0.61,0.765,1]},{"time":0.3333,"x":217.61,"y":-192.63,"curve":[0.282,0,0.624,0.31]},{"time":0.5,"x":181.21,"y":-365.66,"curve":[0.313,0.21,0.654,0.54]},{"time":0.6666,"x":20.09,"y":-500.4,"curve":[0.147,0.27,0.75,1]},{"time":0.8333,"x":-194.24,"y":-341.84},{"time":1,"x":-307.93,"y":-114},{"time":1.1666,"x":-330.38,"y":121.42,"curve":[0.25,0,0.764,0.48]},{"time":1.3333,"x":-240.42,"y":335.66,"curve":[0.229,0.37,0.58,0.73]},{"time":1.5,"x":-56.12,"y":288.06,"curve":[0.296,0.6,0.641,1]},{"time":1.6666,"x":87.63,"y":191.33,"curve":[0.238,0,0.626,0.39]},{"time":1.8333,"x":60.62,"y":95.14,"curve":[0.41,0.26,0.803,0.62]},{"time":2,"x":0,"y":0}]}},"drawOrder":[{"time":0.6666,"offsets":[{"slot":"head","offset":-9},{"slot":"eye","offset":-9},{"slot":"mouth","offset":-12},{"slot":"goggles","offset":-12}]},{"time":1.3333}],"events":[{"time":0,"name":"headPop","int":0,"float":0,"string":"pop.wav"},{"time":1,"name":"headBehind","int":7,"float":8,"string":"animate"},{"time":2,"name":"headAttach","int":0,"float":0,"string":"attach.wav"}]},"walk":{"slots":{"front_fist":{"attachment":[{"time":0,"name":"front_fist_closed"}]},"mouth":{"attachment":[{"time":0,"name":"mouth_smile"}]},"torso":{"attachment":[{"time":0,"name":"torso"}]}},"bones":{"front_thigh":{"rotate":[{"time":0,"angle":15.79},{"time":0.1,"angle":27.39},{"time":0.2,"angle":-7.94},{"time":0.3,"angle":-16.94},{"time":0.4,"angle":-28.62},{"time":0.5,"angle":-19.3},{"time":0.6,"angle":-3.08},{"time":0.7,"angle":29.51},{"time":0.8,"angle":15.79}],"translate":[{"time":0,"x":0,"y":0},{"time":0.4,"x":-1.18,"y":0.54},{"time":0.5,"x":0.11,"y":0.41},{"time":0.6,"x":9.48,"y":0.27},{"time":0.8,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.4,"x":1,"y":1,"curve":"stepped"},{"time":0.8,"x":1,"y":1}]},"front_shin":{"rotate":[{"time":0,"angle":5.12},{"time":0.1,"angle":-20.87},{"time":0.2,"angle":13.37},{"time":0.3,"angle":15.98},{"time":0.4,"angle":5.94},{"time":0.5,"angle":-26.76},{"time":0.7,"angle":-55.44},{"time":0.8,"angle":5.12}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.8,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.8,"x":1,"y":1}]},"rear_thigh":{"rotate":[{"time":0,"angle":-34.38},{"time":0.1,"angle":-30.32},{"time":0.2,"angle":-37.22},{"time":0.3,"angle":20.73},{"time":0.4,"angle":8.69},{"time":0.5,"angle":12.16},{"time":0.6,"angle":-24.62},{"time":0.7,"angle":-27.26},{"time":0.8,"angle":-34.38}],"translate":[{"time":0,"x":0,"y":0},{"time":0.4,"x":4.08,"y":-9.53},{"time":0.5,"x":0,"y":0},{"time":0.7,"x":-21.14,"y":-9.6},{"time":0.8,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.8,"x":1,"y":1}]},"rear_shin":{"rotate":[{"time":0,"angle":14.26},{"time":0.1,"angle":-17.3},{"time":0.2,"angle":-12.67},{"time":0.3,"angle":-58.89},{"time":0.4,"angle":15.95},{"time":0.5,"angle":-9},{"time":0.6,"angle":26.06},{"time":0.7,"angle":21.85},{"time":0.8,"angle":14.26}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.8,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1,"x":0.951,"y":1},{"time":0.5,"x":0.975,"y":1},{"time":0.8,"x":1,"y":1}]},"rear_foot":{"rotate":[{"time":0,"angle":10.13},{"time":0.1,"angle":12.27},{"time":0.2,"angle":-2.94},{"time":0.3,"angle":6.29},{"time":0.4,"angle":13.45},{"time":0.5,"angle":-3.57},{"time":0.6,"angle":-0.97},{"time":0.7,"angle":2.97},{"time":0.8,"angle":10.13}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.8,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.8,"x":1,"y":1}]},"front_upper_arm":{"rotate":[{"time":0,"angle":-23.74},{"time":0.4,"angle":-320.57},{"time":0.8,"angle":-23.74}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.8,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.8,"x":1,"y":1}]},"rear_upper_arm":{"rotate":[{"time":0,"angle":11.62},{"time":0.1,"angle":19.36},{"time":0.4,"angle":345.26},{"time":0.5,"angle":343.44},{"time":0.8,"angle":11.62}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.8,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.8,"x":1,"y":1}]},"torso":{"rotate":[{"time":0,"angle":-12.11},{"time":0.1666,"angle":-17.16},{"time":0.4,"angle":-12.11},{"time":0.5666,"angle":-15.81},{"time":0.8,"angle":-12.11}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.8,"x":1,"y":1}]},"neck":{"rotate":[{"time":0,"angle":1.41},{"time":0.2333,"angle":-3.04},{"time":0.4,"angle":1.41},{"time":0.6333,"angle":-3.04},{"time":0.8,"angle":1.41}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.4,"x":0,"y":0,"curve":"stepped"},{"time":0.8,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.8,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":6.97},{"time":0.1666,"angle":8.02},{"time":0.2666,"angle":12.65},{"time":0.4,"angle":6.97},{"time":0.5666,"angle":8.02},{"time":0.6666,"angle":12.65},{"time":0.8,"angle":6.97}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.4,"x":0,"y":0,"curve":"stepped"},{"time":0.8,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.8,"x":1,"y":1}]},"hip":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.8,"angle":0}],"translate":[{"time":0,"x":-23.93,"y":3.22,"curve":[0.518,0.03,0.807,0.61]},{"time":0.1,"x":-23.93,"y":-9.24,"curve":[0.135,0.33,0.601,0.99]},{"time":0.2,"x":-23.93,"y":4.35,"curve":[0.204,0.68,0.75,1]},{"time":0.3,"x":-23.93,"y":2.38,"curve":[0.25,0,0.75,1]},{"time":0.4,"x":-23.93,"y":-2.5,"curve":[0.692,0.01,0.75,1]},{"time":0.5,"x":-23.93,"y":-10.32,"curve":[0.235,0.77,0.75,1]},{"time":0.6,"x":-23.93,"y":4.35,"curve":[0.287,0.37,0.718,0.76]},{"time":0.7,"x":-23.93,"y":10.34,"curve":[0.615,0,0.75,1]},{"time":0.8,"x":-23.93,"y":3.22}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.8,"x":1,"y":1}]},"front_bracer":{"rotate":[{"time":0,"angle":0},{"time":0.4,"angle":20.59},{"time":0.8,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.8,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.8,"x":1,"y":1}]},"front_foot":{"rotate":[{"time":0,"angle":12.49},{"time":0.1,"angle":-8.34},{"time":0.2,"angle":-6.17},{"time":0.3,"angle":-0.75},{"time":0.3333,"angle":3.89},{"time":0.4,"angle":10.22},{"time":0.5,"angle":11.44},{"time":0.6,"angle":-0.33},{"time":0.7,"angle":0.15},{"time":0.8,"angle":12.49}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.8,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.8,"x":1,"y":1}]},"rear_bracer":{"rotate":[{"time":0,"angle":3.58},{"time":0.1,"angle":5.51},{"time":0.4,"angle":-22.77},{"time":0.5,"angle":-9.65},{"time":0.8,"angle":3.58}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.8,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.8,"x":1,"y":1}]},"front_fist":{"rotate":[{"time":0,"angle":-15.22},{"time":0.1,"angle":-51.4},{"time":0.4,"angle":-39.4},{"time":0.5,"angle":19.26},{"time":0.8,"angle":-15.22}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.8,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.8,"x":1,"y":1}]},"gun":{"rotate":[{"time":0,"angle":-24.06,"curve":[0.25,0,0.75,1]},{"time":0.1,"angle":-10.94,"curve":[0.381,0.54,0.742,1]},{"time":0.4,"angle":25.34,"curve":[0.25,0,0.75,1]},{"time":0.6666,"angle":-27.47,"curve":[0.25,0,0.75,1]},{"time":0.8,"angle":-24.06}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.8,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.8,"x":1,"y":1}]}}}}} \ No newline at end of file diff --git a/spine-corona/examples/spineboy/spineboy.lua b/spine-corona/examples/spineboy/spineboy.lua deleted file mode 100644 index f8bf7f221..000000000 --- a/spine-corona/examples/spineboy/spineboy.lua +++ /dev/null @@ -1,85 +0,0 @@ - --- This example shows simple usage of displaying a skeleton with queued animations. - -local spine = require "spine-corona.spine" - -local json = spine.SkeletonJson.new() -json.scale = 0.6 -local skeletonData = json:readSkeletonDataFile("examples/spineboy/spineboy.json") - -local skeleton = spine.Skeleton.new(skeletonData) -function skeleton:createImage (attachment) - -- Customize where images are loaded. - return display.newImage("examples/spineboy/images/" .. attachment.name .. ".png") -end -skeleton.group.x = display.contentWidth * 0.5 -skeleton.group.y = display.contentHeight * 0.9 -skeleton.flipX = false -skeleton.flipY = false -skeleton.debug = true -- Omit or set to false to not draw debug lines on top of the images. -skeleton.debugAabb = true -skeleton:setToSetupPose() - -local bounds = spine.SkeletonBounds.new() - --- AnimationStateData defines crossfade durations between animations. -local stateData = spine.AnimationStateData.new(skeletonData) -stateData:setMix("walk", "jump", 0.2) -stateData:setMix("jump", "run", 0.2) - --- AnimationState has a queue of animations and can apply them with crossfading. -local state = spine.AnimationState.new(stateData) --- state:setAnimationByName(0, "test") -state:setAnimationByName(0, "walk", true) -state:addAnimationByName(0, "jump", false, 3) -state:addAnimationByName(0, "run", true, 0) - -state.onStart = function (trackIndex) - print(trackIndex.." start: "..state:getCurrent(trackIndex).animation.name) -end -state.onEnd = function (trackIndex) - print(trackIndex.." end: "..state:getCurrent(trackIndex).animation.name) -end -state.onComplete = function (trackIndex, loopCount) - print(trackIndex.." complete: "..state:getCurrent(trackIndex).animation.name..", "..loopCount) -end -state.onEvent = function (trackIndex, event) - print(trackIndex.." event: "..state:getCurrent(trackIndex).animation.name..", "..event.data.name..", "..event.intValue..", "..event.floatValue..", '"..(event.stringValue or "").."'") -end - -local lastTime = 0 -local touchX = 999999 -local touchY = 999999 -local headSlot = skeleton:findSlot("head") -Runtime:addEventListener("enterFrame", function (event) - -- Compute time in seconds since last frame. - local currentTime = event.time / 1000 - local delta = currentTime - lastTime - lastTime = currentTime - - -- Bounding box hit detection. - bounds:update(skeleton, true) - if bounds:containsPoint(touchX, touchY) then - headSlot.g = 0; - headSlot.b = 0; - else - headSlot.g = 1; - headSlot.b = 1; - end - - -- Update the state with the delta time, apply it, and update the world transforms. - state:update(delta) - state:apply(skeleton) - skeleton:updateWorldTransform() -end) - -Runtime:addEventListener("touch", function (event) - if event.phase ~= "ended" and event.phase ~= "cancelled" then - -- Make the coordinates relative to the skeleton's group. - touchX = event.x - skeleton.group.x - touchY = skeleton.group.y - event.y - else - touchX = 999999 - touchY = 999999 - end -end) diff --git a/spine-corona/main.lua b/spine-corona/main.lua index 3964c676b..13fd8139b 100644 --- a/spine-corona/main.lua +++ b/spine-corona/main.lua @@ -1,6 +1,93 @@ -require "examples.spineboy.spineboy" --- require "examples.spineboy-atlas.spineboy" --- require "examples.spineboy.spineboy-mesh" --- require "examples.goblins.goblins" --- require "examples.dragon.dragon" --- require "examples.hero.hero" +require("mobdebug").start() + +local spine = require "spine-corona.spine" + +local skeletons = {} +local activeSkeleton = 1 +local lastTime = 0 + +function loadSkeleton(atlasFile, jsonFile, x, y, scale, animation, skin) + -- to load an atlas, we need to define a function that returns + -- a Corona paint object. This allows you to resolve images + -- however you see fit + local imageLoader = function (path) + local paint = { type = "image", filename = "data/" .. path } + return paint + end + + -- load the atlas + local atlas = spine.TextureAtlas.new(spine.utils.readFile("data/" .. atlasFile), imageLoader) + + -- load the JSON and create a Skeleton from it + local json = spine.SkeletonJson.new(spine.TextureAtlasAttachmentLoader.new(atlas)) + json.scale = scale + local skeletonData = json:readSkeletonDataFile("data/" .. jsonFile) + local skeleton = spine.Skeleton.new(skeletonData) + skeleton.flipY = true -- Corona's coordinate system has its y-axis point downwards + skeleton.group.x = x + skeleton.group.y = y + + -- Set the skin if we got one + if skin then skeleton:setSkin(skin) end + + -- create an animation state object to apply animations to the skeleton + local animationStateData = spine.AnimationStateData.new(skeletonData) + local animationState = spine.AnimationState.new(animationStateData) + animationState:setAnimationByName(0, animation, true) + + -- set the skeleton invisible + skeleton.group.isVisible = false + + -- set a name on the group of the skeleton so we can find it during debugging + skeleton.group.name = jsonFile + + -- set some event callbacks + animationState.onStart = function (trackIndex) + print(trackIndex.." start: "..animationState:getCurrent(trackIndex).animation.name) + end + animationState.onEnd = function (trackIndex) + print(trackIndex.." end: "..animationState:getCurrent(trackIndex).animation.name) + end + animationState.onComplete = function (trackIndex, loopCount) + print(trackIndex.." complete: "..animationState:getCurrent(trackIndex).animation.name..", "..loopCount) + end + animationState.onEvent = function (trackIndex, event) + print(trackIndex.." event: "..animationState:getCurrent(trackIndex).animation.name..", "..event.data.name..", "..event.intValue..", "..event.floatValue..", '"..(event.stringValue or "").."'") + end + + -- return the skeleton an animation state + return { skeleton = skeleton, state = animationState } +end + +table.insert(skeletons, loadSkeleton("spineboy.atlas", "spineboy.json", 240, 300, 0.4, "walk")) +table.insert(skeletons, loadSkeleton("raptor.atlas", "raptor.json", 200, 300, 0.25, "walk")) +table.insert(skeletons, loadSkeleton("goblins.atlas", "goblins-mesh.json", 240, 300, 0.8, "walk", "goblin")) +table.insert(skeletons, loadSkeleton("stretchyman.atlas", "stretchyman.json", 40, 300, 0.5, "sneak")) +table.insert(skeletons, loadSkeleton("tank.atlas", "tank.json", 400, 300, 0.2, "drive")) +table.insert(skeletons, loadSkeleton("vine.atlas", "vine.json", 240, 300, 0.3, "animation")) + +display.setDefault("background", 0.2, 0.2, 0.2, 1) + +Runtime:addEventListener("enterFrame", function (event) + local currentTime = event.time / 1000 + local delta = currentTime - lastTime + lastTime = currentTime + + skeleton = skeletons[activeSkeleton].skeleton + skeleton.group.isVisible = true + state = skeletons[activeSkeleton].state + + state:update(delta) + state:apply(skeleton) + skeleton:updateWorldTransform() + + -- uncomment if you want to know how many batches a skeleton renders to + -- print(skeleton.batches) +end) + +Runtime:addEventListener("tap", function(event) + skeletons[activeSkeleton].skeleton.group.isVisible = false + activeSkeleton = activeSkeleton + 1 + if activeSkeleton > #skeletons then activeSkeleton = 1 end + skeletons[activeSkeleton].skeleton.group.isVisible = true +end) \ No newline at end of file diff --git a/spine-corona/mobdebug.lua b/spine-corona/mobdebug.lua new file mode 100644 index 000000000..31ef8af06 --- /dev/null +++ b/spine-corona/mobdebug.lua @@ -0,0 +1,1465 @@ +-- +-- MobDebug 0.542 +-- Copyright 2011-13 Paul Kulchenko +-- Based on RemDebug 1.0 Copyright Kepler Project 2005 +-- + +local mobdebug = { + _NAME = "mobdebug", + _VERSION = 0.542, + _COPYRIGHT = "Paul Kulchenko", + _DESCRIPTION = "Mobile Remote Debugger for the Lua programming language", + port = os and os.getenv and os.getenv("MOBDEBUG_PORT") or 8172, + checkcount = 200, + yieldtimeout = 0.02, +} + +local coroutine = coroutine +local error = error +local getfenv = getfenv +local setfenv = setfenv +local loadstring = loadstring or load -- "load" replaced "loadstring" in Lua 5.2 +local io = io +local os = os +local pairs = pairs +local require = require +local setmetatable = setmetatable +local string = string +local tonumber = tonumber +local unpack = table.unpack or unpack +local rawget = rawget + +-- if strict.lua is used, then need to avoid referencing some global +-- variables, as they can be undefined; +-- use rawget to to avoid complaints from strict.lua at run-time. +-- it's safe to do the initialization here as all these variables +-- should get defined values (of any) before the debugging starts. +-- there is also global 'wx' variable, which is checked as part of +-- the debug loop as 'wx' can be loaded at any time during debugging. +local genv = _G or _ENV +local jit = rawget(genv, "jit") +local MOAICoroutine = rawget(genv, "MOAICoroutine") + +if not setfenv then -- Lua 5.2 + -- based on http://lua-users.org/lists/lua-l/2010-06/msg00314.html + -- this assumes f is a function + local function findenv(f) + local level = 1 + repeat + local name, value = debug.getupvalue(f, level) + if name == '_ENV' then return level, value end + level = level + 1 + until name == nil + return nil end + getfenv = function (f) return(select(2, findenv(f)) or _G) end + setfenv = function (f, t) + local level = findenv(f) + if level then debug.setupvalue(f, level, t) end + return f end +end + +-- check for OS and convert file names to lower case on windows +-- (its file system is case insensitive, but case preserving), as setting a +-- breakpoint on x:\Foo.lua will not work if the file was loaded as X:\foo.lua. +-- OSX and Windows behave the same way (case insensitive, but case preserving) +local iscasepreserving = os and os.getenv and (os.getenv('WINDIR') + or (os.getenv('OS') or ''):match('[Ww]indows') + or os.getenv('DYLD_LIBRARY_PATH')) + or not io.open("/proc") + +-- turn jit off based on Mike Pall's comment in this discussion: +-- http://www.freelists.org/post/luajit/Debug-hooks-and-JIT,2 +-- "You need to turn it off at the start if you plan to receive +-- reliable hook calls at any later point in time." +if jit and jit.off then jit.off() end + +local socket = require "socket" +local debug = require "debug" +local coro_debugger +local coro_debugee +local coroutines = {}; setmetatable(coroutines, {__mode = "k"}) -- "weak" keys +local events = { BREAK = 1, WATCH = 2, RESTART = 3, STACK = 4 } +local breakpoints = {} +local watches = {} +local lastsource +local lastfile +local watchescnt = 0 +local abort -- default value is nil; this is used in start/loop distinction +local seen_hook = false +local checkcount = 0 +local step_into = false +local step_over = false +local step_level = 0 +local stack_level = 0 +local server +local buf +local outputs = {} +local iobase = {print = print} +local basedir = "" +local deferror = "execution aborted at default debugee" +local debugee = function () + local a = 1 + for _ = 1, 10 do a = a + 1 end + error(deferror) +end +local function q(s) return s:gsub('([%(%)%.%%%+%-%*%?%[%^%$%]])','%%%1') end + +local serpent = (function() ---- include Serpent module for serialization +local n, v = "serpent", 0.25 -- (C) 2012-13 Paul Kulchenko; MIT License +local c, d = "Paul Kulchenko", "Lua serializer and pretty printer" +local snum = {[tostring(1/0)]='1/0 --[[math.huge]]',[tostring(-1/0)]='-1/0 --[[-math.huge]]',[tostring(0/0)]='0/0'} +local badtype = {thread = true, userdata = true, cdata = true} +local keyword, globals, G = {}, {}, (_G or _ENV) +for _,k in ipairs({'and', 'break', 'do', 'else', 'elseif', 'end', 'false', + 'for', 'function', 'goto', 'if', 'in', 'local', 'nil', 'not', 'or', 'repeat', + 'return', 'then', 'true', 'until', 'while'}) do keyword[k] = true end +for k,v in pairs(G) do globals[v] = k end -- build func to name mapping +for _,g in ipairs({'coroutine', 'debug', 'io', 'math', 'string', 'table', 'os'}) do + for k,v in pairs(G[g]) do globals[v] = g..'.'..k end end + +local function s(t, opts) + local name, indent, fatal, maxnum = opts.name, opts.indent, opts.fatal, opts.maxnum + local sparse, custom, huge = opts.sparse, opts.custom, not opts.nohuge + local space, maxl = (opts.compact and '' or ' '), (opts.maxlevel or math.huge) + local iname, comm = '_'..(name or ''), opts.comment and (tonumber(opts.comment) or math.huge) + local seen, sref, syms, symn = {}, {'local '..iname..'={}'}, {}, 0 + local function gensym(val) return '_'..(tostring(tostring(val)):gsub("[^%w]",""):gsub("(%d%w+)", + -- tostring(val) is needed because __tostring may return a non-string value + function(s) if not syms[s] then symn = symn+1; syms[s] = symn end return syms[s] end)) end + local function safestr(s) return type(s) == "number" and (huge and snum[tostring(s)] or s) + or type(s) ~= "string" and tostring(s) -- escape NEWLINE/010 and EOF/026 + or ("%q"):format(s):gsub("\010","n"):gsub("\026","\\026") end + local function comment(s,l) return comm and (l or 0) < comm and ' --[['..tostring(s)..']]' or '' end + local function globerr(s,l) return globals[s] and globals[s]..comment(s,l) or not fatal + and safestr(select(2, pcall(tostring, s))) or error("Can't serialize "..tostring(s)) end + local function safename(path, name) -- generates foo.bar, foo[3], or foo['b a r'] + local n = name == nil and '' or name + local plain = type(n) == "string" and n:match("^[%l%u_][%w_]*$") and not keyword[n] + local safe = plain and n or '['..safestr(n)..']' + return (path or '')..(plain and path and '.' or '')..safe, safe end + local alphanumsort = type(opts.sortkeys) == 'function' and opts.sortkeys or function(k, o, n) -- k=keys, o=originaltable, n=padding + local maxn, to = tonumber(n) or 12, {number = 'a', string = 'b'} + local function padnum(d) return ("%0"..maxn.."d"):format(d) end + table.sort(k, function(a,b) + -- sort numeric keys first: k[key] is non-nil for numeric keys + return (k[a] and 0 or to[type(a)] or 'z')..(tostring(a):gsub("%d+",padnum)) + < (k[b] and 0 or to[type(b)] or 'z')..(tostring(b):gsub("%d+",padnum)) end) end + local function val2str(t, name, indent, insref, path, plainindex, level) + local ttype, level, mt = type(t), (level or 0), getmetatable(t) + local spath, sname = safename(path, name) + local tag = plainindex and + ((type(name) == "number") and '' or name..space..'='..space) or + (name ~= nil and sname..space..'='..space or '') + if seen[t] then -- already seen this element + sref[#sref+1] = spath..space..'='..space..seen[t] + return tag..'nil'..comment('ref', level) end + if type(mt) == 'table' and (mt.__serialize or mt.__tostring) then -- knows how to serialize itself + seen[t] = insref or spath + if mt.__serialize then t = mt.__serialize(t) else t = tostring(t) end + ttype = type(t) end -- new value falls through to be serialized + if ttype == "table" then + if level >= maxl then return tag..'{}'..comment('max', level) end + seen[t] = insref or spath + if next(t) == nil then return tag..'{}'..comment(t, level) end -- table empty + local maxn, o, out = math.min(#t, maxnum or #t), {}, {} + for key = 1, maxn do o[key] = key end + if not maxnum or #o < maxnum then + local n = #o -- n = n + 1; o[n] is much faster than o[#o+1] on large tables + for key in pairs(t) do if o[key] ~= key then n = n + 1; o[n] = key end end end + if maxnum and #o > maxnum then o[maxnum+1] = nil end + if opts.sortkeys and #o > maxn then alphanumsort(o, t, opts.sortkeys) end + local sparse = sparse and #o > maxn -- disable sparsness if only numeric keys (shorter output) + for n, key in ipairs(o) do + local value, ktype, plainindex = t[key], type(key), n <= maxn and not sparse + if opts.valignore and opts.valignore[value] -- skip ignored values; do nothing + or opts.keyallow and not opts.keyallow[key] + or opts.valtypeignore and opts.valtypeignore[type(value)] -- skipping ignored value types + or sparse and value == nil then -- skipping nils; do nothing + elseif ktype == 'table' or ktype == 'function' or badtype[ktype] then + if not seen[key] and not globals[key] then + sref[#sref+1] = 'placeholder' + local sname = safename(iname, gensym(key)) -- iname is table for local variables + sref[#sref] = val2str(key,sname,indent,sname,iname,true) end + sref[#sref+1] = 'placeholder' + local path = seen[t]..'['..(seen[key] or globals[key] or gensym(key))..']' + sref[#sref] = path..space..'='..space..(seen[value] or val2str(value,nil,indent,path)) + else + out[#out+1] = val2str(value,key,indent,insref,seen[t],plainindex,level+1) + end + end + local prefix = string.rep(indent or '', level) + local head = indent and '{\n'..prefix..indent or '{' + local body = table.concat(out, ','..(indent and '\n'..prefix..indent or space)) + local tail = indent and "\n"..prefix..'}' or '}' + return (custom and custom(tag,head,body,tail) or tag..head..body..tail)..comment(t, level) + elseif badtype[ttype] then + seen[t] = insref or spath + return tag..globerr(t, level) + elseif ttype == 'function' then + seen[t] = insref or spath + local ok, res = pcall(string.dump, t) + local func = ok and ((opts.nocode and "function() --[[..skipped..]] end" or + "loadstring("..safestr(res)..",'@serialized')")..comment(t, level)) + return tag..(func or globerr(t, level)) + else return tag..safestr(t) end -- handle all other types + end + local sepr = indent and "\n" or ";"..space + local body = val2str(t, name, indent) -- this call also populates sref + local tail = #sref>1 and table.concat(sref, sepr)..sepr or '' + local warn = opts.comment and #sref>1 and space.."--[[incomplete output with shared/self-references skipped]]" or '' + return not name and body..warn or "do local "..body..sepr..tail.."return "..name..sepr.."end" +end + +local function merge(a, b) if b then for k,v in pairs(b) do a[k] = v end end; return a; end +return { _NAME = n, _COPYRIGHT = c, _DESCRIPTION = d, _VERSION = v, serialize = s, + dump = function(a, opts) return s(a, merge({name = '_', compact = true, sparse = true}, opts)) end, + line = function(a, opts) return s(a, merge({sortkeys = true, comment = true}, opts)) end, + block = function(a, opts) return s(a, merge({indent = ' ', sortkeys = true, comment = true}, opts)) end } +end)() ---- end of Serpent module + +local function removebasedir(path, basedir) + if iscasepreserving then + -- check if the lowercased path matches the basedir + -- if so, return substring of the original path (to not lowercase it) + return path:lower():find('^'..q(basedir:lower())) + and path:sub(#basedir+1) or path + else + return string.gsub(path, '^'..q(basedir), '') + end +end + +local function stack(start) + local function vars(f) + local func = debug.getinfo(f, "f").func + local i = 1 + local locals = {} + while true do + local name, value = debug.getlocal(f, i) + if not name then break end + if string.sub(name, 1, 1) ~= '(' then locals[name] = {value, tostring(value)} end + i = i + 1 + end + i = 1 + local ups = {} + while func and true do -- check for func as it may be nil for tail calls + local name, value = debug.getupvalue(func, i) + if not name then break end + ups[name] = {value, tostring(value)} + i = i + 1 + end + return locals, ups + end + + local stack = {} + for i = (start or 0), 100 do + local source = debug.getinfo(i, "Snl") + if not source then break end + + local src = source.source + if src:find("@") == 1 then + src = src:sub(2):gsub("\\", "/") + if src:find("%./") == 1 then src = src:sub(3) end + end + + table.insert(stack, { -- remove basedir from source + {source.name, removebasedir(src, basedir), source.linedefined, + source.currentline, source.what, source.namewhat, source.short_src}, + vars(i+1)}) + if source.what == 'main' then break end + end + return stack +end + +local function set_breakpoint(file, line) + if file == '-' and lastfile then file = lastfile + elseif iscasepreserving then file = string.lower(file) end + if not breakpoints[line] then breakpoints[line] = {} end + breakpoints[line][file] = true +end + +local function remove_breakpoint(file, line) + if file == '-' and lastfile then file = lastfile + elseif iscasepreserving then file = string.lower(file) end + if breakpoints[line] then breakpoints[line][file] = nil end +end + +local function has_breakpoint(file, line) + return breakpoints[line] + and breakpoints[line][iscasepreserving and string.lower(file) or file] +end + +local function restore_vars(vars) + if type(vars) ~= 'table' then return end + + -- locals need to be processed in the reverse order, starting from + -- the inner block out, to make sure that the localized variables + -- are correctly updated with only the closest variable with + -- the same name being changed + -- first loop find how many local variables there is, while + -- the second loop processes them from i to 1 + local i = 1 + while true do + local name = debug.getlocal(3, i) + if not name then break end + i = i + 1 + end + i = i - 1 + local written_vars = {} + while i > 0 do + local name = debug.getlocal(3, i) + if not written_vars[name] then + if string.sub(name, 1, 1) ~= '(' then + debug.setlocal(3, i, rawget(vars, name)) + end + written_vars[name] = true + end + i = i - 1 + end + + i = 1 + local func = debug.getinfo(3, "f").func + while true do + local name = debug.getupvalue(func, i) + if not name then break end + if not written_vars[name] then + if string.sub(name, 1, 1) ~= '(' then + debug.setupvalue(func, i, rawget(vars, name)) + end + written_vars[name] = true + end + i = i + 1 + end +end + +local function capture_vars(level) + local vars = {} + local func = debug.getinfo(level or 3, "f").func + local i = 1 + while true do + local name, value = debug.getupvalue(func, i) + if not name then break end + if string.sub(name, 1, 1) ~= '(' then vars[name] = value end + i = i + 1 + end + i = 1 + while true do + local name, value = debug.getlocal(level or 3, i) + if not name then break end + if string.sub(name, 1, 1) ~= '(' then vars[name] = value end + i = i + 1 + end + -- returned 'vars' table plays a dual role: (1) it captures local values + -- and upvalues to be restored later (in case they are modified in "eval"), + -- and (2) it provides an environment for evaluated chunks. + -- getfenv(func) is needed to provide proper environment for functions, + -- including access to globals, but this causes vars[name] to fail in + -- restore_vars on local variables or upvalues with `nil` values when + -- 'strict' is in effect. To avoid this `rawget` is used in restore_vars. + setmetatable(vars, { __index = getfenv(func), __newindex = getfenv(func) }) + return vars +end + +local function stack_depth(start_depth) + for i = start_depth, 0, -1 do + if debug.getinfo(i, "l") then return i+1 end + end + return start_depth +end + +local function is_safe(stack_level) + -- the stack grows up: 0 is getinfo, 1 is is_safe, 2 is debug_hook, 3 is user function + if stack_level == 3 then return true end + for i = 3, stack_level do + -- return if it is not safe to abort + local info = debug.getinfo(i, "S") + if not info then return true end + if info.what == "C" then return false end + end + return true +end + +local function in_debugger() + local this = debug.getinfo(1, "S").source + -- only need to check few frames as mobdebug frames should be close + for i = 3, 7 do + local info = debug.getinfo(i, "S") + if not info then return false end + if info.source == this then return true end + end + return false +end + +local function is_pending(peer) + -- if there is something already in the buffer, skip check + if not buf and checkcount >= mobdebug.checkcount then + peer:settimeout(0) -- non-blocking + buf = peer:receive(1) + peer:settimeout() -- back to blocking + checkcount = 0 + end + return buf +end + +local function debug_hook(event, line) + -- (1) LuaJIT needs special treatment. Because debug_hook is set for + -- *all* coroutines, and not just the one being debugged as in regular Lua + -- (http://lua-users.org/lists/lua-l/2011-06/msg00513.html), + -- need to avoid debugging mobdebug's own code as LuaJIT doesn't + -- always correctly generate call/return hook events (there are more + -- calls than returns, which breaks stack depth calculation and + -- 'step' and 'step over' commands stop working; possibly because + -- 'tail return' events are not generated by LuaJIT). + -- the next line checks if the debugger is run under LuaJIT and if + -- one of debugger methods is present in the stack, it simply returns. + if jit then + -- when luajit is compiled with LUAJIT_ENABLE_LUA52COMPAT, + -- coroutine.running() returns non-nil for the main thread. + local coro, main = coroutine.running() + if not coro or main then coro = 'main' end + local disabled = coroutines[coro] == false + or coroutines[coro] == nil and coro ~= (coro_debugee or 'main') + if coro_debugee and disabled or not coro_debugee and (disabled or in_debugger()) + then return end + end + + -- (2) check if abort has been requested and it's safe to abort + if abort and is_safe(stack_level) then error(abort) end + + -- (3) also check if this debug hook has not been visited for any reason. + -- this check is needed to avoid stepping in too early + -- (for example, when coroutine.resume() is executed inside start()). + if not seen_hook and in_debugger() then return end + + if event == "call" then + stack_level = stack_level + 1 + elseif event == "return" or event == "tail return" then + stack_level = stack_level - 1 + elseif event == "line" then + -- may need to fall through because of the following: + -- (1) step_into + -- (2) step_over and stack_level <= step_level (need stack_level) + -- (3) breakpoint; check for line first as it's known; then for file + -- (4) socket call (only do every Xth check) + -- (5) at least one watch is registered + if not ( + step_into or step_over or breakpoints[line] or watchescnt > 0 + or is_pending(server) + ) then checkcount = checkcount + 1; return end + + checkcount = mobdebug.checkcount -- force check on the next command + + -- this is needed to check if the stack got shorter or longer. + -- unfortunately counting call/return calls is not reliable. + -- the discrepancy may happen when "pcall(load, '')" call is made + -- or when "error()" is called in a function. + -- in either case there are more "call" than "return" events reported. + -- this validation is done for every "line" event, but should be "cheap" + -- as it checks for the stack to get shorter (or longer by one call). + -- start from one level higher just in case we need to grow the stack. + -- this may happen after coroutine.resume call to a function that doesn't + -- have any other instructions to execute. it triggers three returns: + -- "return, tail return, return", which needs to be accounted for. + stack_level = stack_depth(stack_level+1) + + local caller = debug.getinfo(2, "S") + + -- grab the filename and fix it if needed + local file = lastfile + if (lastsource ~= caller.source) then + file, lastsource = caller.source, caller.source + -- technically, users can supply names that may not use '@', + -- for example when they call loadstring('...', 'filename.lua'). + -- Unfortunately, there is no reliable/quick way to figure out + -- what is the filename and what is the source code. + -- The following will work if the supplied filename uses Unix path. + if file:find("^@") then + file = file:gsub("^@", ""):gsub("\\", "/") + -- need this conversion to be applied to relative and absolute + -- file names as you may write "require 'Foo'" to + -- load "foo.lua" (on a case insensitive file system) and breakpoints + -- set on foo.lua will not work if not converted to the same case. + if iscasepreserving then file = string.lower(file) end + if file:find("%./") == 1 then file = file:sub(3) + else file = file:gsub('^'..q(basedir), '') end + -- some file systems allow newlines in file names; remove these. + file = file:gsub("\n", ' ') + else + -- this is either a file name coming from loadstring("chunk", "file"), + -- or the actual source code that needs to be serialized (as it may + -- include newlines); assume it's a file name if it's all on one line. + file = file:find("[\r\n]") and serpent.line(file) or file + end + + -- set to true if we got here; this only needs to be done once per + -- session, so do it here to at least avoid setting it for every line. + seen_hook = true + lastfile = file + end + + local vars, status, res + if (watchescnt > 0) then + vars = capture_vars() + for index, value in pairs(watches) do + setfenv(value, vars) + local ok, fired = pcall(value) + if ok and fired then + status, res = coroutine.resume(coro_debugger, events.WATCH, vars, file, line, index) + break -- any one watch is enough; don't check multiple times + end + end + end + + -- need to get into the "regular" debug handler, but only if there was + -- no watch that was fired. If there was a watch, handle its result. + local getin = (status == nil) and + (step_into + or (step_over and stack_level <= step_level) + or has_breakpoint(file, line) + or is_pending(server)) + + if getin then + vars = vars or capture_vars() + step_into = false + step_over = false + status, res = coroutine.resume(coro_debugger, events.BREAK, vars, file, line) + end + + -- handle 'stack' command that provides stack() information to the debugger + if status and res == 'stack' then + while status and res == 'stack' do + -- resume with the stack trace and variables + if vars then restore_vars(vars) end -- restore vars so they are reflected in stack values + -- this may fail if __tostring method fails at run-time + local ok, snapshot = pcall(stack, 4) + status, res = coroutine.resume(coro_debugger, ok and events.STACK or events.BREAK, snapshot, file, line) + end + end + + -- need to recheck once more as resume after 'stack' command may + -- return something else (for example, 'exit'), which needs to be handled + if status and res and res ~= 'stack' then + if abort == nil and res == "exit" then os.exit(1); return end + abort = res + -- only abort if safe; if not, there is another (earlier) check inside + -- debug_hook, which will abort execution at the first safe opportunity + if is_safe(stack_level) then error(abort) end + elseif not status and res then + error(res, 2) -- report any other (internal) errors back to the application + end + + if vars then restore_vars(vars) end + end +end + +local function stringify_results(status, ...) + if not status then return status, ... end -- on error report as it + + local t = {...} + for i,v in pairs(t) do -- stringify each of the returned values + local ok, res = pcall(serpent.line, v, {nocode = true, comment = 1}) + t[i] = ok and res or ("%q"):format(res):gsub("\010","n"):gsub("\026","\\026") + end + -- stringify table with all returned values + -- this is done to allow each returned value to be used (serialized or not) + -- intependently and to preserve "original" comments + return pcall(serpent.dump, t, {sparse = false}) +end + +local function debugger_loop(sev, svars, sfile, sline) + local command + local app, osname + local eval_env = svars or {} + local function emptyWatch () return false end + local loaded = {} + for k in pairs(package.loaded) do loaded[k] = true end + + while true do + local line, err + local wx = rawget(genv, "wx") -- use rawread to make strict.lua happy + if (wx or mobdebug.yield) and server.settimeout then server:settimeout(mobdebug.yieldtimeout) end + while true do + line, err = server:receive() + if not line and err == "timeout" then + -- yield for wx GUI applications if possible to avoid "busyness" + app = app or (wx and wx.wxGetApp and wx.wxGetApp()) + if app then + local win = app:GetTopWindow() + local inloop = app:IsMainLoopRunning() + osname = osname or wx.wxPlatformInfo.Get():GetOperatingSystemFamilyName() + if win and not inloop then + -- process messages in a regular way + -- and exit as soon as the event loop is idle + if osname == 'Unix' then wx.wxTimer(app):Start(10, true) end + local exitLoop = function() + win:Disconnect(wx.wxID_ANY, wx.wxID_ANY, wx.wxEVT_IDLE) + win:Disconnect(wx.wxID_ANY, wx.wxID_ANY, wx.wxEVT_TIMER) + app:ExitMainLoop() + end + win:Connect(wx.wxEVT_IDLE, exitLoop) + win:Connect(wx.wxEVT_TIMER, exitLoop) + app:MainLoop() + end + elseif mobdebug.yield then mobdebug.yield() + end + elseif not line and err == "closed" then + error("Debugger connection unexpectedly closed", 0) + else + -- if there is something in the pending buffer, prepend it to the line + if buf then line = buf .. line; buf = nil end + break + end + end + if server.settimeout then server:settimeout() end -- back to blocking + command = string.sub(line, string.find(line, "^[A-Z]+")) + if command == "SETB" then + local _, _, _, file, line = string.find(line, "^([A-Z]+)%s+(.-)%s+(%d+)%s*$") + if file and line then + set_breakpoint(file, tonumber(line)) + server:send("200 OK\n") + else + server:send("400 Bad Request\n") + end + elseif command == "DELB" then + local _, _, _, file, line = string.find(line, "^([A-Z]+)%s+(.-)%s+(%d+)%s*$") + if file and line then + remove_breakpoint(file, tonumber(line)) + server:send("200 OK\n") + else + server:send("400 Bad Request\n") + end + elseif command == "EXEC" then + local _, _, chunk = string.find(line, "^[A-Z]+%s+(.+)$") + if chunk then + local func, res = loadstring(chunk) + local status + if func then + setfenv(func, eval_env) + status, res = stringify_results(pcall(func)) + end + if status then + server:send("200 OK " .. #res .. "\n") + server:send(res) + else + server:send("401 Error in Expression " .. #res .. "\n") + server:send(res) + end + else + server:send("400 Bad Request\n") + end + elseif command == "LOAD" then + local _, _, size, name = string.find(line, "^[A-Z]+%s+(%d+)%s+(%S.-)%s*$") + size = tonumber(size) + + if abort == nil then -- no LOAD/RELOAD allowed inside start() + if size > 0 then server:receive(size) end + if sfile and sline then + server:send("201 Started " .. sfile .. " " .. sline .. "\n") + else + server:send("200 OK 0\n") + end + else + -- reset environment to allow required modules to load again + -- remove those packages that weren't loaded when debugger started + for k in pairs(package.loaded) do + if not loaded[k] then package.loaded[k] = nil end + end + + if size == 0 and name == '-' then -- RELOAD the current script being debugged + server:send("200 OK 0\n") + coroutine.yield("load") + else + -- receiving 0 bytes blocks (at least in luasocket 2.0.2), so skip reading + local chunk = size == 0 and "" or server:receive(size) + if chunk then -- LOAD a new script for debugging + local func, res = loadstring(chunk, "@"..name) + if func then + server:send("200 OK 0\n") + debugee = func + coroutine.yield("load") + else + server:send("401 Error in Expression " .. #res .. "\n") + server:send(res) + end + else + server:send("400 Bad Request\n") + end + end + end + elseif command == "SETW" then + local _, _, exp = string.find(line, "^[A-Z]+%s+(.+)%s*$") + if exp then + local func, res = loadstring("return(" .. exp .. ")") + if func then + watchescnt = watchescnt + 1 + local newidx = #watches + 1 + watches[newidx] = func + server:send("200 OK " .. newidx .. "\n") + else + server:send("401 Error in Expression " .. #res .. "\n") + server:send(res) + end + else + server:send("400 Bad Request\n") + end + elseif command == "DELW" then + local _, _, index = string.find(line, "^[A-Z]+%s+(%d+)%s*$") + index = tonumber(index) + if index > 0 and index <= #watches then + watchescnt = watchescnt - (watches[index] ~= emptyWatch and 1 or 0) + watches[index] = emptyWatch + server:send("200 OK\n") + else + server:send("400 Bad Request\n") + end + elseif command == "RUN" then + server:send("200 OK\n") + + local ev, vars, file, line, idx_watch = coroutine.yield() + eval_env = vars + if ev == events.BREAK then + server:send("202 Paused " .. file .. " " .. line .. "\n") + elseif ev == events.WATCH then + server:send("203 Paused " .. file .. " " .. line .. " " .. idx_watch .. "\n") + elseif ev == events.RESTART then + -- nothing to do + else + server:send("401 Error in Execution " .. #file .. "\n") + server:send(file) + end + elseif command == "STEP" then + server:send("200 OK\n") + step_into = true + + local ev, vars, file, line, idx_watch = coroutine.yield() + eval_env = vars + if ev == events.BREAK then + server:send("202 Paused " .. file .. " " .. line .. "\n") + elseif ev == events.WATCH then + server:send("203 Paused " .. file .. " " .. line .. " " .. idx_watch .. "\n") + elseif ev == events.RESTART then + -- nothing to do + else + server:send("401 Error in Execution " .. #file .. "\n") + server:send(file) + end + elseif command == "OVER" or command == "OUT" then + server:send("200 OK\n") + step_over = true + + -- OVER and OUT are very similar except for + -- the stack level value at which to stop + if command == "OUT" then step_level = stack_level - 1 + else step_level = stack_level end + + local ev, vars, file, line, idx_watch = coroutine.yield() + eval_env = vars + if ev == events.BREAK then + server:send("202 Paused " .. file .. " " .. line .. "\n") + elseif ev == events.WATCH then + server:send("203 Paused " .. file .. " " .. line .. " " .. idx_watch .. "\n") + elseif ev == events.RESTART then + -- nothing to do + else + server:send("401 Error in Execution " .. #file .. "\n") + server:send(file) + end + elseif command == "BASEDIR" then + local _, _, dir = string.find(line, "^[A-Z]+%s+(.+)%s*$") + if dir then + basedir = iscasepreserving and string.lower(dir) or dir + -- reset cached source as it may change with basedir + lastsource = nil + server:send("200 OK\n") + else + server:send("400 Bad Request\n") + end + elseif command == "SUSPEND" then + -- do nothing; it already fulfilled its role + elseif command == "STACK" then + -- first check if we can execute the stack command + -- as it requires yielding back to debug_hook it cannot be executed + -- if we have not seen the hook yet as happens after start(). + -- in this case we simply return an empty result + local vars, ev = {} + if seen_hook then + ev, vars = coroutine.yield("stack") + end + if ev and ev ~= events.STACK then + server:send("401 Error in Execution " .. #vars .. "\n") + server:send(vars) + else + local ok, res = pcall(serpent.dump, vars, {nocode = true, sparse = false}) + if ok then + server:send("200 OK " .. res .. "\n") + else + server:send("401 Error in Execution " .. #res .. "\n") + server:send(res) + end + end + elseif command == "OUTPUT" then + local _, _, stream, mode = string.find(line, "^[A-Z]+%s+(%w+)%s+([dcr])%s*$") + if stream and mode and stream == "stdout" then + -- assign "print" in the global environment + genv.print = mode == 'd' and iobase.print or coroutine.wrap(function(...) + -- wrapping into coroutine.wrap protects this function from + -- being stepped through in the debugger + local tbl = {...} + while true do + if mode == 'c' then iobase.print(unpack(tbl)) end + for n = 1, #tbl do + tbl[n] = select(2, pcall(serpent.line, tbl[n], {nocode = true, comment = false})) end + local file = table.concat(tbl, "\t").."\n" + server:send("204 Output " .. stream .. " " .. #file .. "\n" .. file) + tbl = {coroutine.yield()} + end + end) + server:send("200 OK\n") + else + server:send("400 Bad Request\n") + end + elseif command == "EXIT" then + server:send("200 OK\n") + coroutine.yield("exit") + else + server:send("400 Bad Request\n") + end + end +end + +local function connect(controller_host, controller_port) + return (socket.connect4 or socket.connect)(controller_host, controller_port) +end + +local function isrunning() + return coro_debugger and coroutine.status(coro_debugger) == 'suspended' +end + +local lasthost, lastport + +-- Starts a debug session by connecting to a controller +local function start(controller_host, controller_port) + -- only one debugging session can be run (as there is only one debug hook) + if isrunning() then return end + + lasthost = controller_host or lasthost + lastport = controller_port or lastport + + controller_host = lasthost or "localhost" + controller_port = lastport or mobdebug.port + + local err + server, err = (socket.connect4 or socket.connect)(controller_host, controller_port) + if server then + -- correct stack depth which already has some calls on it + -- so it doesn't go into negative when those calls return + -- as this breaks subsequence checks in stack_depth(). + -- start from 16th frame, which is sufficiently large for this check. + stack_level = stack_depth(16) + + -- provide our own traceback function to report the error remotely + do + local dtraceback = debug.traceback + debug.traceback = function (...) + if select('#', ...) >= 1 then + local err, lvl = ... + if err and type(err) ~= 'thread' then + local trace = dtraceback(err, (lvl or 2)+1) + if genv.print == iobase.print then -- no remote redirect + return trace + else + genv.print(trace) -- report the error remotely + return -- don't report locally to avoid double reporting + end + end + end + -- direct call to debug.traceback: return the original. + -- debug.traceback(nil, level) doesn't work in Lua 5.1 + -- (http://lua-users.org/lists/lua-l/2011-06/msg00574.html), so + -- simply remove first frame from the stack trace + return (dtraceback(...):gsub("(stack traceback:\n)[^\n]*\n", "%1")) + end + end + coro_debugger = coroutine.create(debugger_loop) + debug.sethook(debug_hook, "lcr") + seen_hook = nil -- reset in case the last start() call was refused + step_into = true -- start with step command + return true + else + print(("Could not connect to %s:%s: %s") + :format(controller_host, controller_port, err or "unknown error")) + end +end + +local function controller(controller_host, controller_port, scratchpad) + -- only one debugging session can be run (as there is only one debug hook) + if isrunning() then return end + + lasthost = controller_host or lasthost + lastport = controller_port or lastport + + controller_host = lasthost or "localhost" + controller_port = lastport or mobdebug.port + + local exitonerror = not scratchpad + local err + server, err = (socket.connect4 or socket.connect)(controller_host, controller_port) + if server then + local function report(trace, err) + local msg = err .. "\n" .. trace + server:send("401 Error in Execution " .. #msg .. "\n") + server:send(msg) + return err + end + + seen_hook = true -- allow to accept all commands + coro_debugger = coroutine.create(debugger_loop) + + while true do + step_into = true -- start with step command + abort = false -- reset abort flag from the previous loop + if scratchpad then checkcount = mobdebug.checkcount end -- force suspend right away + + coro_debugee = coroutine.create(debugee) + debug.sethook(coro_debugee, debug_hook, "lcr") + local status, err = coroutine.resume(coro_debugee) + + -- was there an error or is the script done? + -- 'abort' state is allowed here; ignore it + if abort then + if tostring(abort) == 'exit' then break end + else + if status then -- normal execution is done + break + elseif err and not tostring(err):find(deferror) then + -- report the error back + -- err is not necessarily a string, so convert to string to report + report(debug.traceback(coro_debugee), tostring(err)) + if exitonerror then break end + -- resume once more to clear the response the debugger wants to send + -- need to use capture_vars(2) as three would be the level of + -- the caller for controller(), but because of the tail call, + -- the caller may not exist; + -- This is not entirely safe as the user may see the local + -- variable from console, but they will be reset anyway. + -- This functionality is used when scratchpad is paused to + -- gain access to remote console to modify global variables. + local status, err = coroutine.resume(coro_debugger, events.RESTART, capture_vars(2)) + if not status or status and err == "exit" then break end + end + end + end + else + print(("Could not connect to %s:%s: %s") + :format(controller_host, controller_port, err or "unknown error")) + return false + end + return true +end + +local function scratchpad(controller_host, controller_port) + return controller(controller_host, controller_port, true) +end + +local function loop(controller_host, controller_port) + return controller(controller_host, controller_port, false) +end + +local function on() + if not (isrunning() and server) then return end + + -- main is set to true under Lua5.2 for the "main" chunk. + -- Lua5.1 returns co as `nil` in that case. + local co, main = coroutine.running() + if main then co = nil end + if co then + coroutines[co] = true + debug.sethook(co, debug_hook, "lcr") + else + if jit then coroutines.main = true end + debug.sethook(debug_hook, "lcr") + end +end + +local function off() + if not (isrunning() and server) then return end + + -- main is set to true under Lua5.2 for the "main" chunk. + -- Lua5.1 returns co as `nil` in that case. + local co, main = coroutine.running() + if main then co = nil end + + -- don't remove coroutine hook under LuaJIT as there is only one (global) hook + if co then + coroutines[co] = false + if not jit then debug.sethook(co) end + else + if jit then coroutines.main = false end + if not jit then debug.sethook() end + end + + -- check if there is any thread that is still being debugged under LuaJIT; + -- if not, turn the debugging off + if jit then + local remove = true + for co, debugged in pairs(coroutines) do + if debugged then remove = false; break end + end + if remove then debug.sethook() end + end +end + +-- Handles server debugging commands +local function handle(params, client, options) + local _, _, command = string.find(params, "^([a-z]+)") + local file, line, watch_idx + if command == "run" or command == "step" or command == "out" + or command == "over" or command == "exit" then + client:send(string.upper(command) .. "\n") + client:receive() -- this should consume the first '200 OK' response + while true do + local done = true + local breakpoint = client:receive() + if not breakpoint then + print("Program finished") + os.exit() + return -- use return here for those cases where os.exit() is not wanted + end + local _, _, status = string.find(breakpoint, "^(%d+)") + if status == "200" then + -- don't need to do anything + elseif status == "202" then + _, _, file, line = string.find(breakpoint, "^202 Paused%s+(.-)%s+(%d+)%s*$") + if file and line then + print("Paused at file " .. file .. " line " .. line) + end + elseif status == "203" then + _, _, file, line, watch_idx = string.find(breakpoint, "^203 Paused%s+(.-)%s+(%d+)%s+(%d+)%s*$") + if file and line and watch_idx then + print("Paused at file " .. file .. " line " .. line .. " (watch expression " .. watch_idx .. ": [" .. watches[watch_idx] .. "])") + end + elseif status == "204" then + local _, _, stream, size = string.find(breakpoint, "^204 Output (%w+) (%d+)$") + if stream and size then + local msg = client:receive(tonumber(size)) + print(msg) + if outputs[stream] then outputs[stream](msg) end + -- this was just the output, so go back reading the response + done = false + end + elseif status == "401" then + local _, _, size = string.find(breakpoint, "^401 Error in Execution (%d+)$") + if size then + local msg = client:receive(tonumber(size)) + print("Error in remote application: " .. msg) + os.exit(1) + return nil, nil, msg -- use return here for those cases where os.exit() is not wanted + end + else + print("Unknown error") + os.exit(1) + -- use return here for those cases where os.exit() is not wanted + return nil, nil, "Debugger error: unexpected response '" .. breakpoint .. "'" + end + if done then break end + end + elseif command == "setb" then + _, _, _, file, line = string.find(params, "^([a-z]+)%s+(.-)%s+(%d+)%s*$") + if file and line then + -- if this is a file name, and not a file source + if not file:find('^".*"$') then + file = string.gsub(file, "\\", "/") -- convert slash + file = removebasedir(file, basedir) + end + client:send("SETB " .. file .. " " .. line .. "\n") + if client:receive() == "200 OK" then + set_breakpoint(file, line) + else + print("Error: breakpoint not inserted") + end + else + print("Invalid command") + end + elseif command == "setw" then + local _, _, exp = string.find(params, "^[a-z]+%s+(.+)$") + if exp then + client:send("SETW " .. exp .. "\n") + local answer = client:receive() + local _, _, watch_idx = string.find(answer, "^200 OK (%d+)%s*$") + if watch_idx then + watches[watch_idx] = exp + print("Inserted watch exp no. " .. watch_idx) + else + local _, _, size = string.find(answer, "^401 Error in Expression (%d+)$") + if size then + local err = client:receive(tonumber(size)):gsub(".-:%d+:%s*","") + print("Error: watch expression not set: " .. err) + else + print("Error: watch expression not set") + end + end + else + print("Invalid command") + end + elseif command == "delb" then + _, _, _, file, line = string.find(params, "^([a-z]+)%s+(.-)%s+(%d+)%s*$") + if file and line then + -- if this is a file name, and not a file source + if not file:find('^".*"$') then + file = string.gsub(file, "\\", "/") -- convert slash + file = removebasedir(file, basedir) + end + client:send("DELB " .. file .. " " .. line .. "\n") + if client:receive() == "200 OK" then + remove_breakpoint(file, line) + else + print("Error: breakpoint not removed") + end + else + print("Invalid command") + end + elseif command == "delallb" then + for line, breaks in pairs(breakpoints) do + for file, _ in pairs(breaks) do + client:send("DELB " .. file .. " " .. line .. "\n") + if client:receive() == "200 OK" then + remove_breakpoint(file, line) + else + print("Error: breakpoint at file " .. file .. " line " .. line .. " not removed") + end + end + end + elseif command == "delw" then + local _, _, index = string.find(params, "^[a-z]+%s+(%d+)%s*$") + if index then + client:send("DELW " .. index .. "\n") + if client:receive() == "200 OK" then + watches[index] = nil + else + print("Error: watch expression not removed") + end + else + print("Invalid command") + end + elseif command == "delallw" then + for index, exp in pairs(watches) do + client:send("DELW " .. index .. "\n") + if client:receive() == "200 OK" then + watches[index] = nil + else + print("Error: watch expression at index " .. index .. " [" .. exp .. "] not removed") + end + end + elseif command == "eval" or command == "exec" + or command == "load" or command == "loadstring" + or command == "reload" then + local _, _, exp = string.find(params, "^[a-z]+%s+(.+)$") + if exp or (command == "reload") then + if command == "eval" or command == "exec" then + exp = (exp:gsub("%-%-%[(=*)%[.-%]%1%]", "") -- remove comments + :gsub("%-%-.-\n", " ") -- remove line comments + :gsub("\n", " ")) -- convert new lines + if command == "eval" then exp = "return " .. exp end + client:send("EXEC " .. exp .. "\n") + elseif command == "reload" then + client:send("LOAD 0 -\n") + elseif command == "loadstring" then + local _, _, _, file, lines = string.find(exp, "^([\"'])(.-)%1%s+(.+)") + if not file then + _, _, file, lines = string.find(exp, "^(%S+)%s+(.+)") + end + client:send("LOAD " .. #lines .. " " .. file .. "\n") + client:send(lines) + else + local file = io.open(exp, "r") + if not file and pcall(require, "winapi") then + -- if file is not open and winapi is there, try with a short path; + -- this may be needed for unicode paths on windows + winapi.set_encoding(winapi.CP_UTF8) + file = io.open(winapi.short_path(exp), "r") + end + if not file then error("Cannot open file " .. exp) end + -- read the file and remove the shebang line as it causes a compilation error + local lines = file:read("*all"):gsub("^#!.-\n", "\n") + file:close() + + local file = string.gsub(exp, "\\", "/") -- convert slash + file = removebasedir(file, basedir) + client:send("LOAD " .. #lines .. " " .. file .. "\n") + if #lines > 0 then client:send(lines) end + end + while true do + local params, err = client:receive() + if not params then + return nil, nil, "Debugger connection " .. (err or "error") + end + local done = true + local _, _, status, len = string.find(params, "^(%d+).-%s+(%d+)%s*$") + if status == "200" then + len = tonumber(len) + if len > 0 then + local status, res + local str = client:receive(len) + -- handle serialized table with results + local func, err = loadstring(str) + if func then + status, res = pcall(func) + if not status then err = res + elseif type(res) ~= "table" then + err = "received "..type(res).." instead of expected 'table'" + end + end + if err then + print("Error in processing results: " .. err) + return nil, nil, "Error in processing results: " .. err + end + print(unpack(res)) + return res[1], res + end + elseif status == "201" then + _, _, file, line = string.find(params, "^201 Started%s+(.-)%s+(%d+)%s*$") + elseif status == "202" or params == "200 OK" then + -- do nothing; this only happens when RE/LOAD command gets the response + -- that was for the original command that was aborted + elseif status == "204" then + local _, _, stream, size = string.find(params, "^204 Output (%w+) (%d+)$") + if stream and size then + local msg = client:receive(tonumber(size)) + print(msg) + if outputs[stream] then outputs[stream](msg) end + -- this was just the output, so go back reading the response + done = false + end + elseif status == "401" then + len = tonumber(len) + local res = client:receive(len) + print("Error in expression: " .. res) + return nil, nil, res + else + print("Unknown error") + return nil, nil, "Debugger error: unexpected response after EXEC/LOAD '" .. params .. "'" + end + if done then break end + end + else + print("Invalid command") + end + elseif command == "listb" then + for l, v in pairs(breakpoints) do + for f in pairs(v) do + print(f .. ": " .. l) + end + end + elseif command == "listw" then + for i, v in pairs(watches) do + print("Watch exp. " .. i .. ": " .. v) + end + elseif command == "suspend" then + client:send("SUSPEND\n") + elseif command == "stack" then + client:send("STACK\n") + local resp = client:receive() + local _, _, status, res = string.find(resp, "^(%d+)%s+%w+%s+(.+)%s*$") + if status == "200" then + local func, err = loadstring(res) + if func == nil then + print("Error in stack information: " .. err) + return nil, nil, err + end + local ok, stack = pcall(func) + if not ok then + print("Error in stack information: " .. stack) + return nil, nil, stack + end + for _,frame in ipairs(stack) do + print(serpent.line(frame[1], {comment = false})) + end + return stack + elseif status == "401" then + local _, _, len = string.find(resp, "%s+(%d+)%s*$") + len = tonumber(len) + local res = len > 0 and client:receive(len) or "Invalid stack information." + print("Error in expression: " .. res) + return nil, nil, res + else + print("Unknown error") + return nil, nil, "Debugger error: unexpected response after STACK" + end + elseif command == "output" then + local _, _, stream, mode = string.find(params, "^[a-z]+%s+(%w+)%s+([dcr])%s*$") + if stream and mode then + client:send("OUTPUT "..stream.." "..mode.."\n") + local resp = client:receive() + local _, _, status = string.find(resp, "^(%d+)%s+%w+%s*$") + if status == "200" then + print("Stream "..stream.." redirected") + outputs[stream] = type(options) == 'table' and options.handler or nil + else + print("Unknown error") + return nil, nil, "Debugger error: can't redirect "..stream + end + else + print("Invalid command") + end + elseif command == "basedir" then + local _, _, dir = string.find(params, "^[a-z]+%s+(.+)$") + if dir then + dir = string.gsub(dir, "\\", "/") -- convert slash + if not string.find(dir, "/$") then dir = dir .. "/" end + + local remdir = dir:match("\t(.+)") + if remdir then dir = dir:gsub("/?\t.+", "/") end + basedir = dir + + client:send("BASEDIR "..(remdir or dir).."\n") + local resp = client:receive() + local _, _, status = string.find(resp, "^(%d+)%s+%w+%s*$") + if status == "200" then + print("New base directory is " .. basedir) + else + print("Unknown error") + return nil, nil, "Debugger error: unexpected response after BASEDIR" + end + else + print(basedir) + end + elseif command == "help" then + print("setb -- sets a breakpoint") + print("delb -- removes a breakpoint") + print("delallb -- removes all breakpoints") + print("setw -- adds a new watch expression") + print("delw -- removes the watch expression at index") + print("delallw -- removes all watch expressions") + print("run -- runs until next breakpoint") + print("step -- runs until next line, stepping into function calls") + print("over -- runs until next line, stepping over function calls") + print("out -- runs until line after returning from current function") + print("listb -- lists breakpoints") + print("listw -- lists watch expressions") + print("eval -- evaluates expression on the current context and returns its value") + print("exec -- executes statement on the current context") + print("load -- loads a local file for debugging") + print("reload -- restarts the current debugging session") + print("stack -- reports stack trace") + print("output stdout -- capture and redirect io stream (default|copy|redirect)") + print("basedir [] -- sets the base path of the remote application, or shows the current one") + print("exit -- exits debugger") + else + local _, _, spaces = string.find(params, "^(%s*)$") + if not spaces then + print("Invalid command") + return nil, nil, "Invalid command" + end + end + return file, line +end + +-- Starts debugging server +local function listen(host, port) + host = host or "*" + port = port or mobdebug.port + + local socket = require "socket" + + print("Lua Remote Debugger") + print("Run the program you wish to debug") + + local server = socket.bind(host, port) + local client = server:accept() + + client:send("STEP\n") + client:receive() + + local breakpoint = client:receive() + local _, _, file, line = string.find(breakpoint, "^202 Paused%s+(.-)%s+(%d+)%s*$") + if file and line then + print("Paused at file " .. file ) + print("Type 'help' for commands") + else + local _, _, size = string.find(breakpoint, "^401 Error in Execution (%d+)%s*$") + if size then + print("Error in remote application: ") + print(client:receive(size)) + end + end + + while true do + io.write("> ") + local line = io.read("*line") + handle(line, client) + end +end + +local cocreate +local function coro() + if cocreate then return end -- only set once + cocreate = cocreate or coroutine.create + coroutine.create = function(f, ...) + return cocreate(function(...) + require("mobdebug").on() + return f(...) + end, ...) + end +end + +local moconew +local function moai() + if moconew then return end -- only set once + moconew = moconew or (MOAICoroutine and MOAICoroutine.new) + if not moconew then return end + MOAICoroutine.new = function(...) + local thread = moconew(...) + -- need to support both thread.run and getmetatable(thread).run, which + -- was used in earlier MOAI versions + local mt = thread.run and thread or getmetatable(thread) + local patched = mt.run + mt.run = function(self, f, ...) + return patched(self, function(...) + require("mobdebug").on() + return f(...) + end, ...) + end + return thread + end +end + +-- this is a function that removes all hooks and closes the socket to +-- report back to the controller that the debugging is done. +-- the script that called `done` can still continue. +local function done() + if not (isrunning() and server) then return end + + if not jit then + for co, debugged in pairs(coroutines) do + if debugged then debug.sethook(co) end + end + end + + debug.sethook() + server:close() + + coro_debugger = nil -- to make sure isrunning() returns `false` + seen_hook = nil -- to make sure that the next start() call works + abort = nil -- to make sure that callback calls use proper "abort" value +end + +-- make public functions available +mobdebug.listen = listen +mobdebug.loop = loop +mobdebug.scratchpad = scratchpad +mobdebug.handle = handle +mobdebug.connect = connect +mobdebug.start = start +mobdebug.on = on +mobdebug.off = off +mobdebug.moai = moai +mobdebug.coro = coro +mobdebug.done = done +mobdebug.line = serpent.line +mobdebug.dump = serpent.dump +mobdebug.yield = nil -- callback + +-- this is needed to make "require 'modebug'" to work when mobdebug +-- module is loaded manually +package.loaded.mobdebug = mobdebug + +return mobdebug diff --git a/spine-corona/spine-corona/spine.lua b/spine-corona/spine-corona/spine.lua old mode 100755 new mode 100644 index ee68aa40d..0d68cf1b2 --- a/spine-corona/spine-corona/spine.lua +++ b/spine-corona/spine-corona/spine.lua @@ -38,14 +38,17 @@ spine.BoneData = require "spine-lua.BoneData" spine.SlotData = require "spine-lua.SlotData" spine.IkConstraintData = require "spine-lua.IkConstraintData" spine.Skin = require "spine-lua.Skin" -spine.RegionAttachment = require "spine-lua.RegionAttachment" -spine.MeshAttachment = require "spine-lua.MeshAttachment" -spine.SkinnedMeshAttachment = require "spine-lua.SkinnedMeshAttachment" +spine.Attachment = require "spine-lua.attachments.Attachment" +spine.BoundingBoxAttachment = require "spine-lua.attachments.BoundingBoxAttachment" +spine.RegionAttachment = require "spine-lua.attachments.RegionAttachment" +spine.MeshAttachment = require "spine-lua.attachments.MeshAttachment" +spine.VertexAttachment = require "spine-lua.attachments.VertexAttachment" +spine.PathAttachment = require "spine-lua.attachments.PathAttachment" spine.Skeleton = require "spine-lua.Skeleton" spine.Bone = require "spine-lua.Bone" spine.Slot = require "spine-lua.Slot" spine.IkConstraint = require "spine-lua.IkConstraint" -spine.AttachmentType = require "spine-lua.AttachmentType" +spine.AttachmentType = require "spine-lua.attachments.AttachmentType" spine.AttachmentLoader = require "spine-lua.AttachmentLoader" spine.Animation = require "spine-lua.Animation" spine.AnimationStateData = require "spine-lua.AnimationStateData" @@ -54,7 +57,11 @@ spine.EventData = require "spine-lua.EventData" spine.Event = require "spine-lua.Event" spine.SkeletonBounds = require "spine-lua.SkeletonBounds" spine.BlendMode = require "spine-lua.BlendMode" -spine.Atlas = require "spine-lua.Atlas" +spine.TextureAtlas = require "spine-lua.TextureAtlas" +spine.TextureRegion = require "spine-lua.TextureRegion" +spine.TextureAtlasRegion = require "spine-lua.TextureAtlasRegion" +spine.TextureAtlasAttachmentLoader = require "spine-lua.TextureAtlasAttachmentLoader" +spine.Color = require "spine-lua.Color" spine.utils.readFile = function (fileName, base) if not base then base = system.ResourceDirectory end @@ -70,349 +77,145 @@ local json = require "json" spine.utils.readJSON = function (text) return json.decode(text) end - -spine.Skeleton.failed = {} -- Placeholder for an image that failed to load. - + +local QUAD_TRIANGLES = { 1, 2, 3, 3, 4, 1 } spine.Skeleton.new_super = spine.Skeleton.new -function spine.Skeleton.new (skeletonData, group) - local self = spine.Skeleton.new_super(skeletonData) +spine.Skeleton.updateWorldTransform_super = spine.Skeleton.updateWorldTransform +spine.Skeleton.new = function(skeletonData, group) + self = spine.Skeleton.new_super(skeletonData) self.group = group or display.newGroup() - - self.images = {} - - -- Customizes where images are found. - function self:createImage (attachment) - return display.newImage(attachment.name .. ".png") - end - - -- Customizes where images are found. - function self:createMesh (attachment, meshParameters) - local mesh = display.newMesh(meshParameters) - mesh.fill = {type="image", filename=attachment.name .. ".png"} - return mesh - end - - -- Customizes what happens when an image changes, return false to recreate the image. - function self:modifyImage (attachment) - return false - end - - -- updateWorldTransform positions images. - local updateWorldTransform_super = self.updateWorldTransform - function self:updateWorldTransform () - updateWorldTransform_super(self) - - local images = self.images - local skeletonR, skeletonG, skeletonB, skeletonA = self.r, self.g, self.b, self.a - for i,slot in ipairs(self.drawOrder) do - local image = images[slot] - local attachment = slot.attachment - if not attachment then -- Attachment is gone, remove the image. - if image then - display.remove(image) - images[slot] = nil - end - elseif attachment.type == spine.AttachmentType.region then - if image and image.attachment ~= attachment then -- Attachment image has changed. - if self:modifyImage(image, attachment) then - image.lastR, image.lastA = nil, nil - image.attachment = attachment - else -- If not modified, remove the image and it will be recreated. - display.remove(image) - images[slot] = nil - image = nil - end - end - if not image then -- Create new image. - image = self:createImage(attachment) - if image then - image.attachment = attachment - image.anchorX = 0.5 - image.anchorY = 0.5 - image.width = attachment.width - image.height = attachment.height - else - print("Error creating image: " .. attachment.name) - image = spine.Skeleton.failed - end - if slot.data.blendMode == spine.BlendMode.normal then - image.blendMode = "normal" - elseif slot.data.blendMode == spine.BlendMode.additive then - image.blendMode = "add" - elseif slot.data.blendMode == spine.BlendMode.multiply then - image.blendMode = "multiply" - elseif slot.data.blendMode == spine.BlendMode.screen then - image.blendMode = "screen" - end - images[slot] = image - end - -- Position image based on attachment and bone. - if image ~= spine.Skeleton.failed then - local bone = slot.bone - local flipX, flipY = ((bone.worldFlipX and -1) or 1), ((bone.worldFlipY and -1) or 1) - - local x = bone.worldX + attachment.x * bone.m00 + attachment.y * bone.m01 - local y = -(bone.worldY + attachment.x * bone.m10 + attachment.y * bone.m11) - if not image.lastX then - image.x, image.y = x, y - image.lastX, image.lastY = x, y - elseif image.lastX ~= x or image.lastY ~= y then - image:translate(x - image.lastX, y - image.lastY) - image.lastX, image.lastY = x, y - end - - local xScale = attachment.scaleX * flipX - local yScale = attachment.scaleY * flipY - -- Fix scaling when attachment is rotated 90 or -90. - local rotation = math.abs(attachment.rotation) % 180 - if (rotation == 90) then - xScale = xScale * bone.worldScaleY - yScale = yScale * bone.worldScaleX - else - xScale = xScale * bone.worldScaleX - yScale = yScale * bone.worldScaleY - if rotation ~= 0 and xScale ~= yScale and not image.rotationWarning then - image.rotationWarning = true - print("WARNING: Non-uniform bone scaling with attachments not rotated to\n" - .." cardinal angles will not work as expected with Corona.\n" - .." Bone: "..bone.data.name..", slot: "..slot.data.name..", attachment: "..attachment.name) - end - end - if not image.lastScaleX then - image.xScale, image.yScale = xScale, yScale - image.lastScaleX, image.lastScaleY = xScale, yScale - elseif image.lastScaleX ~= xScale or image.lastScaleY ~= yScale then - image:scale(xScale / image.lastScaleX, yScale / image.lastScaleY) - image.lastScaleX, image.lastScaleY = xScale, yScale - end - - rotation = -(bone.worldRotation + attachment.rotation) * flipX * flipY - if not image.lastRotation then - image.rotation = rotation - image.lastRotation = rotation - elseif rotation ~= image.lastRotation then - image:rotate(rotation - image.lastRotation) - image.lastRotation = rotation - end - - local r, g, b = skeletonR * slot.r, skeletonG * slot.g, skeletonB * slot.b - if image.lastR ~= r or image.lastG ~= g or image.lastB ~= b or not image.lastR then - image:setFillColor(r, g, b) - image.lastR, image.lastG, image.lastB = r, g, b - end - local a = skeletonA * slot.a - if a and (image.lastA ~= a or not image.lastA) then - image.lastA = a - image.alpha = image.lastA -- 0-1 range, unlike RGB. - end - - self.group:insert(image) - end - elseif attachment.type == spine.AttachmentType.mesh or attachment.type == spine.AttachmentType.skinnedmesh then - - if image and image.attachment ~= attachment then -- Attachment image has changed. - if self:modifyImage(image, attachment) then - image.lastR, image.lastA = nil, nil - image.attachment = attachment - else -- If not modified, remove the image and it will be recreated. - display.remove(image) - images[slot] = nil - image = nil - end - end - - local worldVertices = {} - attachment:updateUVs() - attachment:computeWorldVertices(0, 0, slot, worldVertices) - - for i = 2, #worldVertices, 2 do - worldVertices[i] = -worldVertices[i] - end - - if not image then - local meshParameters = { - mode = "indexed", - vertices = worldVertices, - indices = attachment.triangles, - uvs = attachment.uvs, - zeroBasedIndices = true, - } - image = self:createMesh(attachment, meshParameters) - if image then - if slot.data.blendMode == spine.BlendMode.normal then - image.blendMode = "normal" - elseif slot.data.blendMode == spine.BlendMode.additive then - image.blendMode = "add" - elseif slot.data.blendMode == spine.BlendMode.multiply then - image.blendMode = "multiply" - elseif slot.data.blendMode == spine.BlendMode.screen then - image.blendMode = "screen" - end - self.images[slot] = image - image:translate( image.path:getVertexOffset() ) - end - else - for i = 1, #worldVertices, 2 do - image.path:setVertex( 1+ 0.5*(i-1), worldVertices[i], worldVertices[i+1]) - end - end - - if image then - local r, g, b = skeletonR * slot.r, skeletonG * slot.g, skeletonB * slot.b - if image.lastR ~= r or image.lastG ~= g or image.lastB ~= b or not image.lastR then - image:setFillColor(r, g, b) - image.lastR, image.lastG, image.lastB = r, g, b - end - local a = skeletonA * slot.a - if a and (image.lastA ~= a or not image.lastA) then - image.lastA = a - image.alpha = image.lastA - end - self.group:insert(image) - end - - end - end - - if self.debug then - for i,bone in ipairs(self.bones) do - if not bone.line then - bone.line = display.newLine(0, 0, bone.data.length, 0) - bone.line:setStrokeColor(1, 0, 0) - end - bone.line.x = bone.worldX - bone.line.y = -bone.worldY - bone.line.rotation = -bone.worldRotation - if bone.worldFlipX then - bone.line.xScale = -1 - bone.line.rotation = -bone.line.rotation - else - bone.line.xScale = 1 - end - if bone.worldFlipY then - bone.line.yScale = -1 - bone.line.rotation = -bone.line.rotation - else - bone.line.yScale = 1 - end - self.group:insert(bone.line) - - if not bone.circle then - bone.circle = display.newCircle(0, 0, 3) - bone.circle:setFillColor(0, 1, 0) - end - bone.circle.x = bone.worldX - bone.circle.y = -bone.worldY - self.group:insert(bone.circle) - end - end - - if self.debugAabb then - if not self.bounds then - self.bounds = spine.SkeletonBounds.new() - self.boundsRect = display.newRect(self.group, 0, 0, 0, 0) - self.boundsRect:setFillColor(0, 0, 0, 0) - self.boundsRect.strokeWidth = 1 - self.boundsRect:setStrokeColor(0, 1, 0, 1) - end - self.bounds:update(self, true) - local width = self.bounds:getWidth() - local height = self.bounds:getHeight() - self.boundsRect.x = self.bounds.minX + width / 2 - self.boundsRect.y = -self.bounds.minY - height / 2 - self.boundsRect.width = width - self.boundsRect.height = height - self.group:insert(self.boundsRect) - end - end + self.drawingGroup = nil + self.premultipliedAlpha = false + self.batches = 0 return self end - -function spine.GetAtlasSprites ( name, location ) - - local dir = name - if dir:match(".-/.-") then - dir = string.gsub(dir, "(.*/)(.*)", "%1") - end - - if string.sub(dir, -1) ~= "/" then - dir = dir .. "/" - end - - local pages = spine.Atlas.parse( name, location ) - - local sprites = {} - - for _,page in ipairs(pages) do - local options = { frames={} } - if page.size then - options.sheetContentWidth, options.sheetContentHeight = unpack( page.size ) - end - for i,region in ipairs(page.regions) do - sprites[region.name] = { frame=i, region=region, page=page } - local frame = { } - frame.x, frame.y = unpack(region.xy) - frame.width, frame.height = unpack(region.size) - if region.rotate then - frame.width, frame.height = frame.height, frame.width - end - if region.offset[1] ~= 0 or region.offset[2] ~= 0 or region.size[1] ~= region.orig[1] or region.size[2] ~= region.orig[2] then - print("WARNING: Corona currently does not srtipping whitespaces in Spine atlases (atlas: " .. name .. ", sprite: " .. region.name .. ")") - end - table.insert( options.frames, frame ) - end - - local oldMag, oldMin = display.getDefault( "magTextureFilter" ), display.getDefault( "minTextureFilter" ) - local newMag, newMin = "linear", "linear" - if string.find("Nearest", page.filter[1]) then - newMin = "nearest" - end - if string.find("Nearest", page.filter[2]) then - newMag = "nearest" - end - display.setDefault( "magTextureFilter", newMag ) - display.setDefault( "minTextureFilter", newMin ) - page.sheet = graphics.newImageSheet( dir..page.name, options ) - display.setDefault( "magTextureFilter", oldMag ) - display.setDefault( "minTextureFilter", oldMin ) - end - - function sprites.ATLAS_HELPER_createImage(_, attachment) - local sprite = sprites[attachment.name] - local obj = display.newRect( 0, 0, 100, 100 ) - if sprite then - obj.fill = { type="image", sheet=sprite.page.sheet, frame=sprite.frame} - if sprite.region.rotate then - local fill = obj.fill - if fill then - fill.rotation = 90 - end - end - end - return obj - end - function sprites.ATLAS_HELPER_createMesh(_, attachment, meshParameters) - local sprite = sprites[attachment.name] - local obj = display.newMesh(meshParameters) - if sprite then - obj.fill = { type="image", sheet=sprite.page.sheet, frame=sprite.frame} - if sprite.region.rotate then - local fill = obj.fill - if fill then - fill.rotation = 90 - end - end - end - return obj - end - - function sprites.ATLAS_HELPER_setup(skeleton) - skeleton.createImage = sprites.ATLAS_HELPER_createImage - skeleton.createMesh = sprites.ATLAS_HELPER_createMesh - end - - return sprites +local function colorEquals(color1, color2) + if not color1 and not color2 then return true end + if not color1 and color2 then return false end + if color1 and not color2 then return false end + return color1[1] == color2[1] and color1[2] == color2[2] and color1[3] == color2[3] and color1[4] == color2[4] end -return spine +local function toCoronaBlendMode(blendMode) + if blendMode == spine.BlendMode.normal then + return "normal" + elseif blendMode == spine.BlendMode.additive then + return "add" + elseif blendMode == spine.BlendMode.multiply then + return "multiply" + elseif blendMode == spine.BlendMode.screen then + return "screen" + end +end + +function spine.Skeleton:updateWorldTransform() + spine.Skeleton.updateWorldTransform_super(self) + local premultipliedAlpha = self.premultipliedAlpha + + self.batches = 0 + + -- Remove old drawing group, we will start anew + if self.drawingGroup then self.drawingGroup:removeSelf() end + local drawingGroup = display.newGroup() + self.drawingGroup = drawingGroup + self.group:insert(drawingGroup) + + local drawOrder = self.drawOrder + local currentGroup = nil + local groupVertices = {} + local groupIndices = {} + local groupUvs = {} + local color = nil + local lastColor = nil + local texture = nil + local lastTexture = nil + local blendMode = nil + local lastBlendMode = nil + for i,slot in ipairs(drawOrder) do + local attachment = slot.attachment + local vertices = nil + local indices = nil + if attachment then + if attachment.type == spine.AttachmentType.region then + vertices = attachment:updateWorldVertices(slot, premultipliedAlpha) + indices = QUAD_TRIANGLES + texture = attachment.region.renderObject.texture + color = { vertices[5], vertices[6], vertices[7], vertices[8]} + blendMode = toCoronaBlendMode(slot.data.blendMode) + elseif attachment.type == spine.AttachmentType.mesh then + vertices = attachment:updateWorldVertices(slot, premultipliedAlpha) + indices = attachment.triangles + texture = attachment.region.renderObject.texture + color = { vertices[5], vertices[6], vertices[7], vertices[8] } + blendMode = toCoronaBlendMode(slot.data.blendMode) + end + + if texture and vertices and indices then + if not lastTexture then lastTexture = texture end + if not lastColor then lastColor = color end + if not lastBlendMode then lastBlendMode = blendMode end + + if (texture ~= lastTexture or not colorEquals(color, lastColor) or blendMode ~= lastBlendMode) then + self:flush(groupVertices, groupUvs, groupIndices, lastTexture, lastColor, lastBlendMode, drawingGroup) + lastTexture = texture + lastColor = color + lastBlendMode = blendMode + groupVertices = {} + groupUvs = {} + groupIndices = {} + end + + self:batch(vertices, indices, groupVertices, groupUvs, groupIndices) + end + end + end + + if #groupVertices > 0 then + self:flush(groupVertices, groupUvs, groupIndices, texture, color, blendMode, drawingGroup) + end +end + +function spine.Skeleton:flush(groupVertices, groupUvs, groupIndices, texture, color, blendMode, drawingGroup) + mesh = display.newMesh(drawingGroup, 0, 0, { + mode = "indexed", + vertices = groupVertices, + uvs = groupUvs, + indices = groupIndices + }) + mesh.fill = texture + mesh:setFillColor(color[1], color[2], color[3]) + mesh.alpha = color[4] + mesh.blendMode = blendMode + mesh:translate(mesh.path:getVertexOffset()) + self.batches = self.batches + 1 +end + +function spine.Skeleton:batch(vertices, indices, groupVertices, groupUvs, groupIndices) + local numIndices = #indices + local i = 1 + local indexStart = #groupIndices + 1 + local offset = #groupVertices / 2 + local indexEnd = indexStart + numIndices + + while indexStart < indexEnd do + groupIndices[indexStart] = indices[i] + offset + indexStart = indexStart + 1 + i = i + 1 + end + + i = 1 + local numVertices = #vertices + local vertexStart = #groupVertices + 1 + local vertexEnd = vertexStart + numVertices / 4 + while vertexStart < vertexEnd do + groupVertices[vertexStart] = vertices[i] + groupVertices[vertexStart+1] = vertices[i+1] + groupUvs[vertexStart] = vertices[i+2] + groupUvs[vertexStart+1] = vertices[i+3] + vertexStart = vertexStart + 2 + i = i + 8 + end +end + +return spine \ No newline at end of file diff --git a/spine-corona/spineboy-atlas/spineboy.atlas b/spine-corona/spineboy-atlas/spineboy.atlas deleted file mode 100644 index 19c0934b1..000000000 --- a/spine-corona/spineboy-atlas/spineboy.atlas +++ /dev/null @@ -1,194 +0,0 @@ - -spineboy.png -format: RGBA8888 -filter: Linear,Linear -repeat: none -eye_indifferent - rotate: true - xy: 389, 5 - size: 56, 53 - orig: 56, 53 - offset: 0, 0 - index: -1 -eye_surprised - rotate: false - xy: 580, 34 - size: 56, 53 - orig: 56, 53 - offset: 0, 0 - index: -1 -front_bracer - rotate: false - xy: 732, 85 - size: 35, 48 - orig: 35, 48 - offset: 0, 0 - index: -1 -front_fist_closed - rotate: false - xy: 556, 91 - size: 45, 49 - orig: 45, 49 - offset: 0, 0 - index: -1 -front_fist_open - rotate: false - xy: 668, 32 - size: 52, 52 - orig: 52, 52 - offset: 0, 0 - index: -1 -front_foot - rotate: false - xy: 924, 201 - size: 76, 41 - orig: 76, 41 - offset: 0, 0 - index: -1 -front_foot_bend1 - rotate: false - xy: 845, 200 - size: 77, 42 - orig: 77, 42 - offset: 0, 0 - index: -1 -front_foot_bend2 - rotate: false - xy: 778, 186 - size: 65, 56 - orig: 65, 56 - offset: 0, 0 - index: -1 -front_shin - rotate: true - xy: 444, 91 - size: 49, 110 - orig: 49, 110 - offset: 0, 0 - index: -1 -front_thigh - rotate: true - xy: 603, 89 - size: 29, 67 - orig: 29, 67 - offset: 0, 0 - index: -1 -front_upper_arm - rotate: true - xy: 672, 86 - size: 32, 58 - orig: 32, 58 - offset: 0, 0 - index: -1 -goggles - rotate: false - xy: 444, 142 - size: 157, 100 - orig: 157, 100 - offset: 0, 0 - index: -1 -gun - rotate: false - xy: 603, 120 - size: 126, 122 - orig: 126, 122 - offset: 0, 0 - index: -1 -head - rotate: false - xy: 279, 63 - size: 163, 179 - orig: 163, 179 - offset: 0, 0 - index: -1 -mouth_grind - rotate: false - xy: 845, 163 - size: 56, 35 - orig: 56, 35 - offset: 0, 0 - index: -1 -mouth_oooo - rotate: false - xy: 842, 126 - size: 56, 35 - orig: 56, 35 - offset: 0, 0 - index: -1 -mouth_smile - rotate: false - xy: 769, 97 - size: 56, 35 - orig: 56, 35 - offset: 0, 0 - index: -1 -muzzle - rotate: false - xy: 2, 2 - size: 275, 240 - orig: 277, 240 - offset: 0, 0 - index: -1 -neck - rotate: false - xy: 903, 173 - size: 22, 25 - orig: 22, 25 - offset: 0, 0 - index: -1 -rear_bracer - rotate: false - xy: 722, 40 - size: 34, 43 - orig: 34, 43 - offset: 0, 0 - index: -1 -rear_foot - rotate: false - xy: 444, 11 - size: 68, 36 - orig: 68, 36 - offset: 0, 0 - index: -1 -rear_foot_bend1 - rotate: false - xy: 444, 49 - size: 70, 40 - orig: 70, 40 - offset: 0, 0 - index: -1 -rear_foot_bend2 - rotate: false - xy: 778, 134 - size: 62, 50 - orig: 62, 50 - offset: 0, 0 - index: -1 -rear_shin - rotate: false - xy: 731, 135 - size: 45, 107 - orig: 45, 107 - offset: 0, 0 - index: -1 -rear_thigh - rotate: true - xy: 516, 50 - size: 39, 62 - orig: 39, 62 - offset: 0, 0 - index: -1 -rear_upper_arm - rotate: false - xy: 638, 35 - size: 28, 52 - orig: 28, 52 - offset: 0, 0 - index: -1 -torso - rotate: true - xy: 279, 2 - size: 59, 108 - orig: 59, 108 - offset: 0, 0 - index: -1 diff --git a/spine-corona/spineboy-atlas/spineboy.lua b/spine-corona/spineboy-atlas/spineboy.lua deleted file mode 100644 index 869336b1c..000000000 --- a/spine-corona/spineboy-atlas/spineboy.lua +++ /dev/null @@ -1,87 +0,0 @@ - --- This example shows simple usage of displaying a skeleton with queued animations. - -local spine = require "spine-corona.spine" - -local atlasLoader = require "spine-atlas-loader" - -local sprites = atlasLoader.load( "spineboy.atlas", "examples/spineboy-atlas/" ) - -local json = spine.SkeletonJson.new() -json.scale = 0.6 -local skeletonData = json:readSkeletonDataFile("examples/spineboy-atlas/spineboy.json") - -local skeleton = spine.Skeleton.new(skeletonData) -sprites.setupImageFunctions(skeleton) - -skeleton.group.x = display.contentWidth * 0.75 -skeleton.group.y = display.contentHeight * 0.9 -skeleton.flipX = false -skeleton.flipY = false -skeleton.debug = true -- Omit or set to false to not draw debug lines on top of the images. -skeleton.debugAabb = true -skeleton:setToSetupPose() - -local bounds = spine.SkeletonBounds.new() - --- AnimationStateData defines crossfade durations between animations. -local stateData = spine.AnimationStateData.new(skeletonData) -stateData:setMix("walk", "jump", 0.2) -stateData:setMix("jump", "run", 0.2) - --- AnimationState has a queue of animations and can apply them with crossfading. -local state = spine.AnimationState.new(stateData) --- state:setAnimationByName(0, "test") -state:setAnimationByName(0, "walk", true) -state:addAnimationByName(0, "jump", false, 3) -state:addAnimationByName(0, "run", true, 0) - -state.onStart = function (trackIndex) - print(trackIndex.." start: "..state:getCurrent(trackIndex).animation.name) -end -state.onEnd = function (trackIndex) - print(trackIndex.." end: "..state:getCurrent(trackIndex).animation.name) -end -state.onComplete = function (trackIndex, loopCount) - print(trackIndex.." complete: "..state:getCurrent(trackIndex).animation.name..", "..loopCount) -end -state.onEvent = function (trackIndex, event) - print(trackIndex.." event: "..state:getCurrent(trackIndex).animation.name..", "..event.data.name..", "..event.intValue..", "..event.floatValue..", '"..(event.stringValue or "").."'") -end - -local lastTime = 0 -local touchX = 999999 -local touchY = 999999 -local headSlot = skeleton:findSlot("head") -Runtime:addEventListener("enterFrame", function (event) - -- Compute time in seconds since last frame. - local currentTime = as * event.time / 1000 - local delta = currentTime - lastTime - lastTime = currentTime - - -- Bounding box hit detection. - bounds:update(skeleton, true) - if bounds:containsPoint(touchX, touchY) then - headSlot.g = 0; - headSlot.b = 0; - else - headSlot.g = 1; - headSlot.b = 1; - end - - -- Update the state with the delta time, apply it, and update the world transforms. - state:update(delta) - state:apply(skeleton) - skeleton:updateWorldTransform() -end) - -Runtime:addEventListener("touch", function (event) - if event.phase ~= "ended" and event.phase ~= "cancelled" then - -- Make the coordinates relative to the skeleton's group. - touchX = event.x - skeleton.group.x - touchY = skeleton.group.y - event.y - else - touchX = 999999 - touchY = 999999 - end -end) diff --git a/spine-corona/spineboy-atlas/spineboy.png b/spine-corona/spineboy-atlas/spineboy.png deleted file mode 100644 index dce2fe3e2..000000000 Binary files a/spine-corona/spineboy-atlas/spineboy.png and /dev/null differ diff --git a/spine-csharp/src/Attachments/PathAttachment.cs b/spine-csharp/src/Attachments/PathAttachment.cs index fb36a1a67..661f4bbdc 100644 --- a/spine-csharp/src/Attachments/PathAttachment.cs +++ b/spine-csharp/src/Attachments/PathAttachment.cs @@ -1,49 +1,49 @@ -/****************************************************************************** - * Spine Runtimes Software License - * Version 2.3 - * - * Copyright (c) 2013-2015, Esoteric Software - * All rights reserved. - * - * You are granted a perpetual, non-exclusive, non-sublicensable and - * non-transferable license to use, install, execute and perform the Spine - * Runtimes Software (the "Software") and derivative works solely for personal - * or internal use. Without the written permission of Esoteric Software (see - * Section 2 of the Spine Software License Agreement), you may not (a) modify, - * translate, adapt or otherwise create derivative works, improvements of the - * Software or develop new applications using the Software or (b) remove, - * delete, alter or obscure any trademarks or any copyright, trademark, patent - * or other intellectual property or proprietary rights notices on or in the - * Software, including any copy thereof. Redistributions in binary or source - * form must include this license and terms. - * - * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO - * EVENT SHALL ESOTERIC SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; - * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR - * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF - * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - *****************************************************************************/ - -using System; -using System.Collections.Generic; - -namespace Spine { - public class PathAttachment : VertexAttachment { - internal float[] lengths; - internal bool closed, constantSpeed; - - /// The length in the setup pose from the start of the path to the end of each curve. - public float[] Lengths { get { return lengths; } set { lengths = value; } } - public bool Closed { get { return closed; } set { closed = value; } } - public bool ConstantSpeed { get { return constantSpeed; } set { constantSpeed = value; } } - - public PathAttachment (String name) - : base(name) { - } - } -} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.3 + * + * Copyright (c) 2013-2015, Esoteric Software + * All rights reserved. + * + * You are granted a perpetual, non-exclusive, non-sublicensable and + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), you may not (a) modify, + * translate, adapt or otherwise create derivative works, improvements of the + * Software or develop new applications using the Software or (b) remove, + * delete, alter or obscure any trademarks or any copyright, trademark, patent + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL ESOTERIC SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + +using System; +using System.Collections.Generic; + +namespace Spine { + public class PathAttachment : VertexAttachment { + internal float[] lengths; + internal bool closed, constantSpeed; + + /// The length in the setup pose from the start of the path to the end of each curve. + public float[] Lengths { get { return lengths; } set { lengths = value; } } + public bool Closed { get { return closed; } set { closed = value; } } + public bool ConstantSpeed { get { return constantSpeed; } set { constantSpeed = value; } } + + public PathAttachment (String name) + : base(name) { + } + } +} diff --git a/spine-csharp/src/Attachments/VertexAttachment.cs b/spine-csharp/src/Attachments/VertexAttachment.cs index 417752890..962c49122 100644 --- a/spine-csharp/src/Attachments/VertexAttachment.cs +++ b/spine-csharp/src/Attachments/VertexAttachment.cs @@ -1,118 +1,118 @@ -/****************************************************************************** - * Spine Runtimes Software License - * Version 2.3 - * - * Copyright (c) 2013-2015, Esoteric Software - * All rights reserved. - * - * You are granted a perpetual, non-exclusive, non-sublicensable and - * non-transferable license to use, install, execute and perform the Spine - * Runtimes Software (the "Software") and derivative works solely for personal - * or internal use. Without the written permission of Esoteric Software (see - * Section 2 of the Spine Software License Agreement), you may not (a) modify, - * translate, adapt or otherwise create derivative works, improvements of the - * Software or develop new applications using the Software or (b) remove, - * delete, alter or obscure any trademarks or any copyright, trademark, patent - * or other intellectual property or proprietary rights notices on or in the - * Software, including any copy thereof. Redistributions in binary or source - * form must include this license and terms. - * - * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO - * EVENT SHALL ESOTERIC SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; - * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR - * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF - * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - *****************************************************************************/ - -using System; -using System.Collections.Generic; - -namespace Spine { - /// >An attachment with vertices that are transformed by one or more bones and can be deformed by a slot's vertices. - public class VertexAttachment : Attachment { - internal int[] bones; - internal float[] vertices; - internal int worldVerticesLength; - - public int[] Bones { get { return bones; } set { bones = value; } } - public float[] Vertices { get { return vertices; } set { vertices = value; } } - public int WorldVerticesLength { get { return worldVerticesLength; } set { worldVerticesLength = value; } } - - public VertexAttachment (String name) - : base(name) { - } - - public void ComputeWorldVertices (Slot slot, float[] worldVertices) { - ComputeWorldVertices(slot, 0, worldVerticesLength, worldVertices, 0); - } - - public void ComputeWorldVertices (Slot slot, int start, int count, float[] worldVertices, int offset) { - count += offset; - Skeleton skeleton = slot.Skeleton; - float x = skeleton.x, y = skeleton.y; - var deformArray = slot.attachmentVertices; - float[] vertices = this.vertices; - int[] bones = this.bones; - if (bones == null) { - if (deformArray.Count > 0) vertices = deformArray.Items; - Bone bone = slot.bone; - x += bone.worldX; - y += bone.worldY; - float a = bone.a, b = bone.b, c = bone.c, d = bone.d; - for (int vv = start, w = offset; w < count; vv += 2, w += 2) { - float vx = vertices[vv], vy = vertices[vv + 1]; - worldVertices[w] = vx * a + vy * b + x; - worldVertices[w + 1] = vx * c + vy * d + y; - } - return; - } - int v = 0, skip = 0; - for (int i = 0; i < start; i += 2) { - int n = bones[v]; - v += n + 1; - skip += n; - } - Bone[] skeletonBones = skeleton.Bones.Items; - if (deformArray.Count == 0) { - for (int w = offset, b = skip * 3; w < count; w += 2) { - float wx = x, wy = y; - int n = bones[v++]; - n += v; - for (; v < n; v++, b += 3) { - Bone bone = skeletonBones[bones[v]]; - float vx = vertices[b], vy = vertices[b + 1], weight = vertices[b + 2]; - wx += (vx * bone.a + vy * bone.b + bone.worldX) * weight; - wy += (vx * bone.c + vy * bone.d + bone.worldY) * weight; - } - worldVertices[w] = wx; - worldVertices[w + 1] = wy; - } - } else { - float[] deform = deformArray.Items; - for (int w = offset, b = skip * 3, f = skip << 1; w < count; w += 2) { - float wx = x, wy = y; - int n = bones[v++]; - n += v; - for (; v < n; v++, b += 3, f += 2) { - Bone bone = skeletonBones[bones[v]]; - float vx = vertices[b] + deform[f], vy = vertices[b + 1] + deform[f + 1], weight = vertices[b + 2]; - wx += (vx * bone.a + vy * bone.b + bone.worldX) * weight; - wy += (vx * bone.c + vy * bone.d + bone.worldY) * weight; - } - worldVertices[w] = wx; - worldVertices[w + 1] = wy; - } - } - } - - /// Returns true if a deform originally applied to the specified attachment should be applied to this attachment. - virtual public bool ApplyDeform (VertexAttachment sourceAttachment) { - return this == sourceAttachment; - } - } -} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.3 + * + * Copyright (c) 2013-2015, Esoteric Software + * All rights reserved. + * + * You are granted a perpetual, non-exclusive, non-sublicensable and + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), you may not (a) modify, + * translate, adapt or otherwise create derivative works, improvements of the + * Software or develop new applications using the Software or (b) remove, + * delete, alter or obscure any trademarks or any copyright, trademark, patent + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL ESOTERIC SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + +using System; +using System.Collections.Generic; + +namespace Spine { + /// >An attachment with vertices that are transformed by one or more bones and can be deformed by a slot's vertices. + public class VertexAttachment : Attachment { + internal int[] bones; + internal float[] vertices; + internal int worldVerticesLength; + + public int[] Bones { get { return bones; } set { bones = value; } } + public float[] Vertices { get { return vertices; } set { vertices = value; } } + public int WorldVerticesLength { get { return worldVerticesLength; } set { worldVerticesLength = value; } } + + public VertexAttachment (String name) + : base(name) { + } + + public void ComputeWorldVertices (Slot slot, float[] worldVertices) { + ComputeWorldVertices(slot, 0, worldVerticesLength, worldVertices, 0); + } + + public void ComputeWorldVertices (Slot slot, int start, int count, float[] worldVertices, int offset) { + count += offset; + Skeleton skeleton = slot.Skeleton; + float x = skeleton.x, y = skeleton.y; + var deformArray = slot.attachmentVertices; + float[] vertices = this.vertices; + int[] bones = this.bones; + if (bones == null) { + if (deformArray.Count > 0) vertices = deformArray.Items; + Bone bone = slot.bone; + x += bone.worldX; + y += bone.worldY; + float a = bone.a, b = bone.b, c = bone.c, d = bone.d; + for (int vv = start, w = offset; w < count; vv += 2, w += 2) { + float vx = vertices[vv], vy = vertices[vv + 1]; + worldVertices[w] = vx * a + vy * b + x; + worldVertices[w + 1] = vx * c + vy * d + y; + } + return; + } + int v = 0, skip = 0; + for (int i = 0; i < start; i += 2) { + int n = bones[v]; + v += n + 1; + skip += n; + } + Bone[] skeletonBones = skeleton.Bones.Items; + if (deformArray.Count == 0) { + for (int w = offset, b = skip * 3; w < count; w += 2) { + float wx = x, wy = y; + int n = bones[v++]; + n += v; + for (; v < n; v++, b += 3) { + Bone bone = skeletonBones[bones[v]]; + float vx = vertices[b], vy = vertices[b + 1], weight = vertices[b + 2]; + wx += (vx * bone.a + vy * bone.b + bone.worldX) * weight; + wy += (vx * bone.c + vy * bone.d + bone.worldY) * weight; + } + worldVertices[w] = wx; + worldVertices[w + 1] = wy; + } + } else { + float[] deform = deformArray.Items; + for (int w = offset, b = skip * 3, f = skip << 1; w < count; w += 2) { + float wx = x, wy = y; + int n = bones[v++]; + n += v; + for (; v < n; v++, b += 3, f += 2) { + Bone bone = skeletonBones[bones[v]]; + float vx = vertices[b] + deform[f], vy = vertices[b + 1] + deform[f + 1], weight = vertices[b + 2]; + wx += (vx * bone.a + vy * bone.b + bone.worldX) * weight; + wy += (vx * bone.c + vy * bone.d + bone.worldY) * weight; + } + worldVertices[w] = wx; + worldVertices[w + 1] = wy; + } + } + } + + /// Returns true if a deform originally applied to the specified attachment should be applied to this attachment. + virtual public bool ApplyDeform (VertexAttachment sourceAttachment) { + return this == sourceAttachment; + } + } +} diff --git a/spine-csharp/src/PathConstraint.cs b/spine-csharp/src/PathConstraint.cs index eddada80d..15b03d5de 100644 --- a/spine-csharp/src/PathConstraint.cs +++ b/spine-csharp/src/PathConstraint.cs @@ -1,400 +1,400 @@ -/****************************************************************************** - * Spine Runtimes Software License - * Version 2.3 - * - * Copyright (c) 2013-2015, Esoteric Software - * All rights reserved. - * - * You are granted a perpetual, non-exclusive, non-sublicensable and - * non-transferable license to use, install, execute and perform the Spine - * Runtimes Software (the "Software") and derivative works solely for personal - * or internal use. Without the written permission of Esoteric Software (see - * Section 2 of the Spine Software License Agreement), you may not (a) modify, - * translate, adapt or otherwise create derivative works, improvements of the - * Software or develop new applications using the Software or (b) remove, - * delete, alter or obscure any trademarks or any copyright, trademark, patent - * or other intellectual property or proprietary rights notices on or in the - * Software, including any copy thereof. Redistributions in binary or source - * form must include this license and terms. - * - * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO - * EVENT SHALL ESOTERIC SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; - * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR - * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF - * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - *****************************************************************************/ - -using System; - -namespace Spine { - public class PathConstraint : IUpdatable { - private const int NONE = -1, BEFORE = -2, AFTER = -3; - - internal PathConstraintData data; - internal ExposedList bones; - internal Slot target; - internal float position, spacing, rotateMix, translateMix; - - internal ExposedList spaces = new ExposedList(), positions = new ExposedList(); - internal ExposedList world = new ExposedList(), curves = new ExposedList(), lengths = new ExposedList(); - internal float[] segments = new float[10]; - - public float Position { get { return position; } set { position = value; } } - public float Spacing { get { return spacing; } set { spacing = value; } } - public float RotateMix { get { return rotateMix; } set { rotateMix = value; } } - public float TranslateMix { get { return translateMix; } set { translateMix = value; } } - public ExposedList Bones { get { return bones; } } - public Slot Target { get { return target; } set { target = value; } } - public PathConstraintData Data { get { return data; } } - - public PathConstraint (PathConstraintData data, Skeleton skeleton) { - if (data == null) throw new ArgumentNullException("data", "data cannot be null."); - if (skeleton == null) throw new ArgumentNullException("skeleton", "skeleton cannot be null."); - this.data = data; - bones = new ExposedList(data.Bones.Count); - foreach (BoneData boneData in data.bones) - bones.Add(skeleton.FindBone(boneData.name)); - target = skeleton.FindSlot(data.target.name); - position = data.position; - spacing = data.spacing; - rotateMix = data.rotateMix; - translateMix = data.translateMix; - } - - public void Apply () { - Update(); - } - - public void Update () { - PathAttachment attachment = target.Attachment as PathAttachment; - if (attachment == null) return; - - float rotateMix = this.rotateMix, translateMix = this.translateMix; - bool translate = translateMix > 0, rotate = rotateMix > 0; - if (!translate && !rotate) return; - - PathConstraintData data = this.data; - SpacingMode spacingMode = data.spacingMode; - bool lengthSpacing = spacingMode == SpacingMode.Length; - RotateMode rotateMode = data.rotateMode; - bool tangents = rotateMode == RotateMode.Tangent, scale = rotateMode == RotateMode.ChainScale; - int boneCount = this.bones.Count, spacesCount = tangents ? boneCount : boneCount + 1; - Bone[] bones = this.bones.Items; - ExposedList spaces = this.spaces.Resize(spacesCount), lengths = null; - float spacing = this.spacing; - if (scale || lengthSpacing) { - if (scale) lengths = this.lengths.Resize(boneCount); - for (int i = 0, n = spacesCount - 1; i < n;) { - Bone bone = bones[i]; - float length = bone.data.length, x = length * bone.a, y = length * bone.c; - length = (float)Math.Sqrt(x * x + y * y); - if (scale) lengths.Items[i] = length; - spaces.Items[++i] = lengthSpacing ? Math.Max(0, length + spacing) : spacing; - } - } else { - for (int i = 1; i < spacesCount; i++) - spaces.Items[i] = spacing; - } - - float[] positions = ComputeWorldPositions(attachment, spacesCount, tangents, - data.positionMode == PositionMode.Percent, spacingMode == SpacingMode.Percent); - Skeleton skeleton = target.Skeleton; - float skeletonX = skeleton.x, skeletonY = skeleton.y; - float boneX = positions[0], boneY = positions[1], offsetRotation = data.offsetRotation; - bool tip = rotateMode == RotateMode.Chain && offsetRotation == 0; - for (int i = 0, p = 3; i < boneCount; i++, p += 3) { - Bone bone = (Bone)bones[i]; - bone.worldX += (boneX - skeletonX - bone.worldX) * translateMix; - bone.worldY += (boneY - skeletonY - bone.worldY) * translateMix; - float x = positions[p], y = positions[p + 1], dx = x - boneX, dy = y - boneY; - if (scale) { - float length = lengths.Items[i]; - if (length != 0) { - float s = ((float)Math.Sqrt(dx * dx + dy * dy) / length - 1) * rotateMix + 1; - bone.a *= s; - bone.c *= s; - } - } - boneX = x; - boneY = y; - if (rotate) { - float a = bone.a, b = bone.b, c = bone.c, d = bone.d, r, cos, sin; - if (tangents) - r = positions[p - 1]; - else if (spaces.Items[i + 1] == 0) - r = positions[p + 2]; - else - r = MathUtils.Atan2(dy, dx); - r -= MathUtils.Atan2(c, a) - offsetRotation * MathUtils.degRad; - if (tip) { - cos = MathUtils.Cos(r); - sin = MathUtils.Sin(r); - float length = bone.data.length; - boneX += (length * (cos * a - sin * c) - dx) * rotateMix; - boneY += (length * (sin * a + cos * c) - dy) * rotateMix; - } - if (r > MathUtils.PI) - r -= MathUtils.PI2; - else if (r < -MathUtils.PI) // - r += MathUtils.PI2; - r *= rotateMix; - cos = MathUtils.Cos(r); - sin = MathUtils.Sin(r); - bone.a = cos * a - sin * c; - bone.b = cos * b - sin * d; - bone.c = sin * a + cos * c; - bone.d = sin * b + cos * d; - } - } - } - - float[] ComputeWorldPositions (PathAttachment path, int spacesCount, bool tangents, bool percentPosition, - bool percentSpacing) { - - Slot target = this.target; - float position = this.position; - float[] spaces = this.spaces.Items, output = this.positions.Resize(spacesCount * 3 + 2).Items, world; - bool closed = path.Closed; - int verticesLength = path.WorldVerticesLength, curveCount = verticesLength / 6, prevCurve = NONE; - - float pathLength; - if (!path.ConstantSpeed) { - float[] lengths = path.Lengths; - curveCount -= closed ? 1 : 2; - pathLength = lengths[curveCount]; - if (percentPosition) position *= pathLength; - if (percentSpacing) { - for (int i = 0; i < spacesCount; i++) - spaces[i] *= pathLength; - } - world = this.world.Resize(8).Items; - for (int i = 0, o = 0, curve = 0; i < spacesCount; i++, o += 3) { - float space = spaces[i]; - position += space; - float p = position; - - if (closed) { - p %= pathLength; - if (p < 0) p += pathLength; - curve = 0; - } else if (p < 0) { - if (prevCurve != BEFORE) { - prevCurve = BEFORE; - path.ComputeWorldVertices(target, 2, 4, world, 0); - } - AddBeforePosition(p, world, 0, output, o); - continue; - } else if (p > pathLength) { - if (prevCurve != AFTER) { - prevCurve = AFTER; - path.ComputeWorldVertices(target, verticesLength - 6, 4, world, 0); - } - AddAfterPosition(p - pathLength, world, 0, output, o); - continue; - } - - // Determine curve containing position. - for (;; curve++) { - float length = lengths[curve]; - if (p > length) continue; - if (curve == 0) - p /= length; - else { - float prev = lengths[curve - 1]; - p = (p - prev) / (length - prev); - } - break; - } - if (curve != prevCurve) { - prevCurve = curve; - if (closed && curve == curveCount) { - path.ComputeWorldVertices(target, verticesLength - 4, 4, world, 0); - path.ComputeWorldVertices(target, 0, 4, world, 4); - } else - path.ComputeWorldVertices(target, curve * 6 + 2, 8, world, 0); - } - AddCurvePosition(p, world[0], world[1], world[2], world[3], world[4], world[5], world[6], world[7], output, o, - tangents || (i > 0 && space == 0)); - } - return output; - } - - // World vertices. - if (closed) { - verticesLength += 2; - world = this.world.Resize(verticesLength).Items; - path.ComputeWorldVertices(target, 2, verticesLength - 4, world, 0); - path.ComputeWorldVertices(target, 0, 2, world, verticesLength - 4); - world[verticesLength - 2] = world[0]; - world[verticesLength - 1] = world[1]; - } else { - curveCount--; - verticesLength -= 4; - world = this.world.Resize(verticesLength).Items; - path.ComputeWorldVertices(target, 2, verticesLength, world, 0); - } - - // Curve lengths. - float[] curves = this.curves.Resize(curveCount).Items; - pathLength = 0; - float x1 = world[0], y1 = world[1], cx1 = 0, cy1 = 0, cx2 = 0, cy2 = 0, x2 = 0, y2 = 0; - float tmpx, tmpy, dddfx, dddfy, ddfx, ddfy, dfx, dfy; - for (int i = 0, w = 2; i < curveCount; i++, w += 6) { - cx1 = world[w]; - cy1 = world[w + 1]; - cx2 = world[w + 2]; - cy2 = world[w + 3]; - x2 = world[w + 4]; - y2 = world[w + 5]; - tmpx = (x1 - cx1 * 2 + cx2) * 0.1875f; - tmpy = (y1 - cy1 * 2 + cy2) * 0.1875f; - dddfx = ((cx1 - cx2) * 3 - x1 + x2) * 0.09375f; - dddfy = ((cy1 - cy2) * 3 - y1 + y2) * 0.09375f; - ddfx = tmpx * 2 + dddfx; - ddfy = tmpy * 2 + dddfy; - dfx = (cx1 - x1) * 0.75f + tmpx + dddfx * 0.16666667f; - dfy = (cy1 - y1) * 0.75f + tmpy + dddfy * 0.16666667f; - pathLength += (float)Math.Sqrt(dfx * dfx + dfy * dfy); - dfx += ddfx; - dfy += ddfy; - ddfx += dddfx; - ddfy += dddfy; - pathLength += (float)Math.Sqrt(dfx * dfx + dfy * dfy); - dfx += ddfx; - dfy += ddfy; - pathLength += (float)Math.Sqrt(dfx * dfx + dfy * dfy); - dfx += ddfx + dddfx; - dfy += ddfy + dddfy; - pathLength += (float)Math.Sqrt(dfx * dfx + dfy * dfy); - curves[i] = pathLength; - x1 = x2; - y1 = y2; - } - if (percentPosition) position *= pathLength; - if (percentSpacing) { - for (int i = 0; i < spacesCount; i++) - spaces[i] *= pathLength; - } - - float[] segments = this.segments; - float curveLength = 0; - for (int i = 0, o = 0, curve = 0, segment = 0; i < spacesCount; i++, o += 3) { - float space = spaces[i]; - position += space; - float p = position; - - if (closed) { - p %= pathLength; - if (p < 0) p += pathLength; - curve = 0; - } else if (p < 0) { - AddBeforePosition(p, world, 0, output, o); - continue; - } else if (p > pathLength) { - AddAfterPosition(p - pathLength, world, verticesLength - 4, output, o); - continue; - } - - // Determine curve containing position. - for (;; curve++) { - float length = curves[curve]; - if (p > length) continue; - if (curve == 0) - p /= length; - else { - float prev = curves[curve - 1]; - p = (p - prev) / (length - prev); - } - break; - } - - // Curve segment lengths. - if (curve != prevCurve) { - prevCurve = curve; - int ii = curve * 6; - x1 = world[ii]; - y1 = world[ii + 1]; - cx1 = world[ii + 2]; - cy1 = world[ii + 3]; - cx2 = world[ii + 4]; - cy2 = world[ii + 5]; - x2 = world[ii + 6]; - y2 = world[ii + 7]; - tmpx = (x1 - cx1 * 2 + cx2) * 0.03f; - tmpy = (y1 - cy1 * 2 + cy2) * 0.03f; - dddfx = ((cx1 - cx2) * 3 - x1 + x2) * 0.006f; - dddfy = ((cy1 - cy2) * 3 - y1 + y2) * 0.006f; - ddfx = tmpx * 2 + dddfx; - ddfy = tmpy * 2 + dddfy; - dfx = (cx1 - x1) * 0.3f + tmpx + dddfx * 0.16666667f; - dfy = (cy1 - y1) * 0.3f + tmpy + dddfy * 0.16666667f; - curveLength = (float)Math.Sqrt(dfx * dfx + dfy * dfy); - segments[0] = curveLength; - for (ii = 1; ii < 8; ii++) { - dfx += ddfx; - dfy += ddfy; - ddfx += dddfx; - ddfy += dddfy; - curveLength += (float)Math.Sqrt(dfx * dfx + dfy * dfy); - segments[ii] = curveLength; - } - dfx += ddfx; - dfy += ddfy; - curveLength += (float)Math.Sqrt(dfx * dfx + dfy * dfy); - segments[8] = curveLength; - dfx += ddfx + dddfx; - dfy += ddfy + dddfy; - curveLength += (float)Math.Sqrt(dfx * dfx + dfy * dfy); - segments[9] = curveLength; - segment = 0; - } - - // Weight by segment length. - p *= curveLength; - for (;; segment++) { - float length = segments[segment]; - if (p > length) continue; - if (segment == 0) - p /= length; - else { - float prev = segments[segment - 1]; - p = segment + (p - prev) / (length - prev); - } - break; - } - AddCurvePosition(p * 0.1f, x1, y1, cx1, cy1, cx2, cy2, x2, y2, output, o, tangents || (i > 0 && space == 0)); - } - return output; - } - - private void AddBeforePosition (float p, float[] temp, int i, float[] output, int o) { - float x1 = temp[i], y1 = temp[i + 1], dx = temp[i + 2] - x1, dy = temp[i + 3] - y1, r = MathUtils.Atan2(dy, dx); - output[o] = x1 + p * MathUtils.Cos(r); - output[o + 1] = y1 + p * MathUtils.Sin(r); - output[o + 2] = r; - } - - private void AddAfterPosition (float p, float[] temp, int i, float[] output, int o) { - float x1 = temp[i + 2], y1 = temp[i + 3], dx = x1 - temp[i], dy = y1 - temp[i + 1], r = MathUtils.Atan2(dy, dx); - output[o] = x1 + p * MathUtils.Cos(r); - output[o + 1] = y1 + p * MathUtils.Sin(r); - output[o + 2] = r; - } - - private void AddCurvePosition (float p, float x1, float y1, float cx1, float cy1, float cx2, float cy2, float x2, float y2, - float[] output, int o, bool tangents) { - if (p == 0) p = 0.0001f; - float tt = p * p, ttt = tt * p, u = 1 - p, uu = u * u, uuu = uu * u; - float ut = u * p, ut3 = ut * 3, uut3 = u * ut3, utt3 = ut3 * p; - float x = x1 * uuu + cx1 * uut3 + cx2 * utt3 + x2 * ttt, y = y1 * uuu + cy1 * uut3 + cy2 * utt3 + y2 * ttt; - output[o] = x; - output[o + 1] = y; - if (tangents) output[o + 2] = (float)Math.Atan2(y - (y1 * uu + cy1 * ut * 2 + cy2 * tt), x - (x1 * uu + cx1 * ut * 2 + cx2 * tt)); - } - } -} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.3 + * + * Copyright (c) 2013-2015, Esoteric Software + * All rights reserved. + * + * You are granted a perpetual, non-exclusive, non-sublicensable and + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), you may not (a) modify, + * translate, adapt or otherwise create derivative works, improvements of the + * Software or develop new applications using the Software or (b) remove, + * delete, alter or obscure any trademarks or any copyright, trademark, patent + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL ESOTERIC SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + +using System; + +namespace Spine { + public class PathConstraint : IUpdatable { + private const int NONE = -1, BEFORE = -2, AFTER = -3; + + internal PathConstraintData data; + internal ExposedList bones; + internal Slot target; + internal float position, spacing, rotateMix, translateMix; + + internal ExposedList spaces = new ExposedList(), positions = new ExposedList(); + internal ExposedList world = new ExposedList(), curves = new ExposedList(), lengths = new ExposedList(); + internal float[] segments = new float[10]; + + public float Position { get { return position; } set { position = value; } } + public float Spacing { get { return spacing; } set { spacing = value; } } + public float RotateMix { get { return rotateMix; } set { rotateMix = value; } } + public float TranslateMix { get { return translateMix; } set { translateMix = value; } } + public ExposedList Bones { get { return bones; } } + public Slot Target { get { return target; } set { target = value; } } + public PathConstraintData Data { get { return data; } } + + public PathConstraint (PathConstraintData data, Skeleton skeleton) { + if (data == null) throw new ArgumentNullException("data", "data cannot be null."); + if (skeleton == null) throw new ArgumentNullException("skeleton", "skeleton cannot be null."); + this.data = data; + bones = new ExposedList(data.Bones.Count); + foreach (BoneData boneData in data.bones) + bones.Add(skeleton.FindBone(boneData.name)); + target = skeleton.FindSlot(data.target.name); + position = data.position; + spacing = data.spacing; + rotateMix = data.rotateMix; + translateMix = data.translateMix; + } + + public void Apply () { + Update(); + } + + public void Update () { + PathAttachment attachment = target.Attachment as PathAttachment; + if (attachment == null) return; + + float rotateMix = this.rotateMix, translateMix = this.translateMix; + bool translate = translateMix > 0, rotate = rotateMix > 0; + if (!translate && !rotate) return; + + PathConstraintData data = this.data; + SpacingMode spacingMode = data.spacingMode; + bool lengthSpacing = spacingMode == SpacingMode.Length; + RotateMode rotateMode = data.rotateMode; + bool tangents = rotateMode == RotateMode.Tangent, scale = rotateMode == RotateMode.ChainScale; + int boneCount = this.bones.Count, spacesCount = tangents ? boneCount : boneCount + 1; + Bone[] bones = this.bones.Items; + ExposedList spaces = this.spaces.Resize(spacesCount), lengths = null; + float spacing = this.spacing; + if (scale || lengthSpacing) { + if (scale) lengths = this.lengths.Resize(boneCount); + for (int i = 0, n = spacesCount - 1; i < n;) { + Bone bone = bones[i]; + float length = bone.data.length, x = length * bone.a, y = length * bone.c; + length = (float)Math.Sqrt(x * x + y * y); + if (scale) lengths.Items[i] = length; + spaces.Items[++i] = lengthSpacing ? Math.Max(0, length + spacing) : spacing; + } + } else { + for (int i = 1; i < spacesCount; i++) + spaces.Items[i] = spacing; + } + + float[] positions = ComputeWorldPositions(attachment, spacesCount, tangents, + data.positionMode == PositionMode.Percent, spacingMode == SpacingMode.Percent); + Skeleton skeleton = target.Skeleton; + float skeletonX = skeleton.x, skeletonY = skeleton.y; + float boneX = positions[0], boneY = positions[1], offsetRotation = data.offsetRotation; + bool tip = rotateMode == RotateMode.Chain && offsetRotation == 0; + for (int i = 0, p = 3; i < boneCount; i++, p += 3) { + Bone bone = (Bone)bones[i]; + bone.worldX += (boneX - skeletonX - bone.worldX) * translateMix; + bone.worldY += (boneY - skeletonY - bone.worldY) * translateMix; + float x = positions[p], y = positions[p + 1], dx = x - boneX, dy = y - boneY; + if (scale) { + float length = lengths.Items[i]; + if (length != 0) { + float s = ((float)Math.Sqrt(dx * dx + dy * dy) / length - 1) * rotateMix + 1; + bone.a *= s; + bone.c *= s; + } + } + boneX = x; + boneY = y; + if (rotate) { + float a = bone.a, b = bone.b, c = bone.c, d = bone.d, r, cos, sin; + if (tangents) + r = positions[p - 1]; + else if (spaces.Items[i + 1] == 0) + r = positions[p + 2]; + else + r = MathUtils.Atan2(dy, dx); + r -= MathUtils.Atan2(c, a) - offsetRotation * MathUtils.degRad; + if (tip) { + cos = MathUtils.Cos(r); + sin = MathUtils.Sin(r); + float length = bone.data.length; + boneX += (length * (cos * a - sin * c) - dx) * rotateMix; + boneY += (length * (sin * a + cos * c) - dy) * rotateMix; + } + if (r > MathUtils.PI) + r -= MathUtils.PI2; + else if (r < -MathUtils.PI) // + r += MathUtils.PI2; + r *= rotateMix; + cos = MathUtils.Cos(r); + sin = MathUtils.Sin(r); + bone.a = cos * a - sin * c; + bone.b = cos * b - sin * d; + bone.c = sin * a + cos * c; + bone.d = sin * b + cos * d; + } + } + } + + float[] ComputeWorldPositions (PathAttachment path, int spacesCount, bool tangents, bool percentPosition, + bool percentSpacing) { + + Slot target = this.target; + float position = this.position; + float[] spaces = this.spaces.Items, output = this.positions.Resize(spacesCount * 3 + 2).Items, world; + bool closed = path.Closed; + int verticesLength = path.WorldVerticesLength, curveCount = verticesLength / 6, prevCurve = NONE; + + float pathLength; + if (!path.ConstantSpeed) { + float[] lengths = path.Lengths; + curveCount -= closed ? 1 : 2; + pathLength = lengths[curveCount]; + if (percentPosition) position *= pathLength; + if (percentSpacing) { + for (int i = 0; i < spacesCount; i++) + spaces[i] *= pathLength; + } + world = this.world.Resize(8).Items; + for (int i = 0, o = 0, curve = 0; i < spacesCount; i++, o += 3) { + float space = spaces[i]; + position += space; + float p = position; + + if (closed) { + p %= pathLength; + if (p < 0) p += pathLength; + curve = 0; + } else if (p < 0) { + if (prevCurve != BEFORE) { + prevCurve = BEFORE; + path.ComputeWorldVertices(target, 2, 4, world, 0); + } + AddBeforePosition(p, world, 0, output, o); + continue; + } else if (p > pathLength) { + if (prevCurve != AFTER) { + prevCurve = AFTER; + path.ComputeWorldVertices(target, verticesLength - 6, 4, world, 0); + } + AddAfterPosition(p - pathLength, world, 0, output, o); + continue; + } + + // Determine curve containing position. + for (;; curve++) { + float length = lengths[curve]; + if (p > length) continue; + if (curve == 0) + p /= length; + else { + float prev = lengths[curve - 1]; + p = (p - prev) / (length - prev); + } + break; + } + if (curve != prevCurve) { + prevCurve = curve; + if (closed && curve == curveCount) { + path.ComputeWorldVertices(target, verticesLength - 4, 4, world, 0); + path.ComputeWorldVertices(target, 0, 4, world, 4); + } else + path.ComputeWorldVertices(target, curve * 6 + 2, 8, world, 0); + } + AddCurvePosition(p, world[0], world[1], world[2], world[3], world[4], world[5], world[6], world[7], output, o, + tangents || (i > 0 && space == 0)); + } + return output; + } + + // World vertices. + if (closed) { + verticesLength += 2; + world = this.world.Resize(verticesLength).Items; + path.ComputeWorldVertices(target, 2, verticesLength - 4, world, 0); + path.ComputeWorldVertices(target, 0, 2, world, verticesLength - 4); + world[verticesLength - 2] = world[0]; + world[verticesLength - 1] = world[1]; + } else { + curveCount--; + verticesLength -= 4; + world = this.world.Resize(verticesLength).Items; + path.ComputeWorldVertices(target, 2, verticesLength, world, 0); + } + + // Curve lengths. + float[] curves = this.curves.Resize(curveCount).Items; + pathLength = 0; + float x1 = world[0], y1 = world[1], cx1 = 0, cy1 = 0, cx2 = 0, cy2 = 0, x2 = 0, y2 = 0; + float tmpx, tmpy, dddfx, dddfy, ddfx, ddfy, dfx, dfy; + for (int i = 0, w = 2; i < curveCount; i++, w += 6) { + cx1 = world[w]; + cy1 = world[w + 1]; + cx2 = world[w + 2]; + cy2 = world[w + 3]; + x2 = world[w + 4]; + y2 = world[w + 5]; + tmpx = (x1 - cx1 * 2 + cx2) * 0.1875f; + tmpy = (y1 - cy1 * 2 + cy2) * 0.1875f; + dddfx = ((cx1 - cx2) * 3 - x1 + x2) * 0.09375f; + dddfy = ((cy1 - cy2) * 3 - y1 + y2) * 0.09375f; + ddfx = tmpx * 2 + dddfx; + ddfy = tmpy * 2 + dddfy; + dfx = (cx1 - x1) * 0.75f + tmpx + dddfx * 0.16666667f; + dfy = (cy1 - y1) * 0.75f + tmpy + dddfy * 0.16666667f; + pathLength += (float)Math.Sqrt(dfx * dfx + dfy * dfy); + dfx += ddfx; + dfy += ddfy; + ddfx += dddfx; + ddfy += dddfy; + pathLength += (float)Math.Sqrt(dfx * dfx + dfy * dfy); + dfx += ddfx; + dfy += ddfy; + pathLength += (float)Math.Sqrt(dfx * dfx + dfy * dfy); + dfx += ddfx + dddfx; + dfy += ddfy + dddfy; + pathLength += (float)Math.Sqrt(dfx * dfx + dfy * dfy); + curves[i] = pathLength; + x1 = x2; + y1 = y2; + } + if (percentPosition) position *= pathLength; + if (percentSpacing) { + for (int i = 0; i < spacesCount; i++) + spaces[i] *= pathLength; + } + + float[] segments = this.segments; + float curveLength = 0; + for (int i = 0, o = 0, curve = 0, segment = 0; i < spacesCount; i++, o += 3) { + float space = spaces[i]; + position += space; + float p = position; + + if (closed) { + p %= pathLength; + if (p < 0) p += pathLength; + curve = 0; + } else if (p < 0) { + AddBeforePosition(p, world, 0, output, o); + continue; + } else if (p > pathLength) { + AddAfterPosition(p - pathLength, world, verticesLength - 4, output, o); + continue; + } + + // Determine curve containing position. + for (;; curve++) { + float length = curves[curve]; + if (p > length) continue; + if (curve == 0) + p /= length; + else { + float prev = curves[curve - 1]; + p = (p - prev) / (length - prev); + } + break; + } + + // Curve segment lengths. + if (curve != prevCurve) { + prevCurve = curve; + int ii = curve * 6; + x1 = world[ii]; + y1 = world[ii + 1]; + cx1 = world[ii + 2]; + cy1 = world[ii + 3]; + cx2 = world[ii + 4]; + cy2 = world[ii + 5]; + x2 = world[ii + 6]; + y2 = world[ii + 7]; + tmpx = (x1 - cx1 * 2 + cx2) * 0.03f; + tmpy = (y1 - cy1 * 2 + cy2) * 0.03f; + dddfx = ((cx1 - cx2) * 3 - x1 + x2) * 0.006f; + dddfy = ((cy1 - cy2) * 3 - y1 + y2) * 0.006f; + ddfx = tmpx * 2 + dddfx; + ddfy = tmpy * 2 + dddfy; + dfx = (cx1 - x1) * 0.3f + tmpx + dddfx * 0.16666667f; + dfy = (cy1 - y1) * 0.3f + tmpy + dddfy * 0.16666667f; + curveLength = (float)Math.Sqrt(dfx * dfx + dfy * dfy); + segments[0] = curveLength; + for (ii = 1; ii < 8; ii++) { + dfx += ddfx; + dfy += ddfy; + ddfx += dddfx; + ddfy += dddfy; + curveLength += (float)Math.Sqrt(dfx * dfx + dfy * dfy); + segments[ii] = curveLength; + } + dfx += ddfx; + dfy += ddfy; + curveLength += (float)Math.Sqrt(dfx * dfx + dfy * dfy); + segments[8] = curveLength; + dfx += ddfx + dddfx; + dfy += ddfy + dddfy; + curveLength += (float)Math.Sqrt(dfx * dfx + dfy * dfy); + segments[9] = curveLength; + segment = 0; + } + + // Weight by segment length. + p *= curveLength; + for (;; segment++) { + float length = segments[segment]; + if (p > length) continue; + if (segment == 0) + p /= length; + else { + float prev = segments[segment - 1]; + p = segment + (p - prev) / (length - prev); + } + break; + } + AddCurvePosition(p * 0.1f, x1, y1, cx1, cy1, cx2, cy2, x2, y2, output, o, tangents || (i > 0 && space == 0)); + } + return output; + } + + private void AddBeforePosition (float p, float[] temp, int i, float[] output, int o) { + float x1 = temp[i], y1 = temp[i + 1], dx = temp[i + 2] - x1, dy = temp[i + 3] - y1, r = MathUtils.Atan2(dy, dx); + output[o] = x1 + p * MathUtils.Cos(r); + output[o + 1] = y1 + p * MathUtils.Sin(r); + output[o + 2] = r; + } + + private void AddAfterPosition (float p, float[] temp, int i, float[] output, int o) { + float x1 = temp[i + 2], y1 = temp[i + 3], dx = x1 - temp[i], dy = y1 - temp[i + 1], r = MathUtils.Atan2(dy, dx); + output[o] = x1 + p * MathUtils.Cos(r); + output[o + 1] = y1 + p * MathUtils.Sin(r); + output[o + 2] = r; + } + + private void AddCurvePosition (float p, float x1, float y1, float cx1, float cy1, float cx2, float cy2, float x2, float y2, + float[] output, int o, bool tangents) { + if (p == 0) p = 0.0001f; + float tt = p * p, ttt = tt * p, u = 1 - p, uu = u * u, uuu = uu * u; + float ut = u * p, ut3 = ut * 3, uut3 = u * ut3, utt3 = ut3 * p; + float x = x1 * uuu + cx1 * uut3 + cx2 * utt3 + x2 * ttt, y = y1 * uuu + cy1 * uut3 + cy2 * utt3 + y2 * ttt; + output[o] = x; + output[o + 1] = y; + if (tangents) output[o + 2] = (float)Math.Atan2(y - (y1 * uu + cy1 * ut * 2 + cy2 * tt), x - (x1 * uu + cx1 * ut * 2 + cx2 * tt)); + } + } +} diff --git a/spine-csharp/src/PathConstraintData.cs b/spine-csharp/src/PathConstraintData.cs index ed2cda3e0..a6b2dd600 100644 --- a/spine-csharp/src/PathConstraintData.cs +++ b/spine-csharp/src/PathConstraintData.cs @@ -1,74 +1,74 @@ -/****************************************************************************** - * Spine Runtimes Software License - * Version 2.3 - * - * Copyright (c) 2013-2015, Esoteric Software - * All rights reserved. - * - * You are granted a perpetual, non-exclusive, non-sublicensable and - * non-transferable license to use, install, execute and perform the Spine - * Runtimes Software (the "Software") and derivative works solely for personal - * or internal use. Without the written permission of Esoteric Software (see - * Section 2 of the Spine Software License Agreement), you may not (a) modify, - * translate, adapt or otherwise create derivative works, improvements of the - * Software or develop new applications using the Software or (b) remove, - * delete, alter or obscure any trademarks or any copyright, trademark, patent - * or other intellectual property or proprietary rights notices on or in the - * Software, including any copy thereof. Redistributions in binary or source - * form must include this license and terms. - * - * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO - * EVENT SHALL ESOTERIC SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; - * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR - * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF - * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - *****************************************************************************/ - -using System; - -namespace Spine { - public class PathConstraintData { - internal String name; - internal ExposedList bones = new ExposedList(); - internal SlotData target; - internal PositionMode positionMode; - internal SpacingMode spacingMode; - internal RotateMode rotateMode; - internal float offsetRotation; - internal float position, spacing, rotateMix, translateMix; - - public ExposedList Bones { get { return bones; } } - public SlotData Target { get { return target; } set { target = value; } } - public PositionMode PositionMode { get { return positionMode; } set { positionMode = value; } } - public SpacingMode SpacingMode { get { return spacingMode; } set { spacingMode = value; } } - public RotateMode RotateMode { get { return rotateMode; } set { rotateMode = value; } } - public float OffsetRotation { get { return offsetRotation; } set { offsetRotation = value; } } - public float Position { get { return position; } set { position = value; } } - public float Spacing { get { return spacing; } set { spacing = value; } } - public float RotateMix { get { return rotateMix; } set { rotateMix = value; } } - public float TranslateMix { get { return translateMix; } set { translateMix = value; } } - public String Name { get { return name; } } - - public PathConstraintData (String name) { - if (name == null) throw new ArgumentNullException("name", "name cannot be null."); - this.name = name; - } - } - - public enum PositionMode { - Fixed, Percent - } - - public enum SpacingMode { - Length, Fixed, Percent - } - - public enum RotateMode { - Tangent, Chain, ChainScale - } -} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.3 + * + * Copyright (c) 2013-2015, Esoteric Software + * All rights reserved. + * + * You are granted a perpetual, non-exclusive, non-sublicensable and + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), you may not (a) modify, + * translate, adapt or otherwise create derivative works, improvements of the + * Software or develop new applications using the Software or (b) remove, + * delete, alter or obscure any trademarks or any copyright, trademark, patent + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL ESOTERIC SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + +using System; + +namespace Spine { + public class PathConstraintData { + internal String name; + internal ExposedList bones = new ExposedList(); + internal SlotData target; + internal PositionMode positionMode; + internal SpacingMode spacingMode; + internal RotateMode rotateMode; + internal float offsetRotation; + internal float position, spacing, rotateMix, translateMix; + + public ExposedList Bones { get { return bones; } } + public SlotData Target { get { return target; } set { target = value; } } + public PositionMode PositionMode { get { return positionMode; } set { positionMode = value; } } + public SpacingMode SpacingMode { get { return spacingMode; } set { spacingMode = value; } } + public RotateMode RotateMode { get { return rotateMode; } set { rotateMode = value; } } + public float OffsetRotation { get { return offsetRotation; } set { offsetRotation = value; } } + public float Position { get { return position; } set { position = value; } } + public float Spacing { get { return spacing; } set { spacing = value; } } + public float RotateMix { get { return rotateMix; } set { rotateMix = value; } } + public float TranslateMix { get { return translateMix; } set { translateMix = value; } } + public String Name { get { return name; } } + + public PathConstraintData (String name) { + if (name == null) throw new ArgumentNullException("name", "name cannot be null."); + this.name = name; + } + } + + public enum PositionMode { + Fixed, Percent + } + + public enum SpacingMode { + Length, Fixed, Percent + } + + public enum RotateMode { + Tangent, Chain, ChainScale + } +} diff --git a/spine-csharp/src/Skeleton.cs b/spine-csharp/src/Skeleton.cs index 37def244a..65e536ce8 100644 --- a/spine-csharp/src/Skeleton.cs +++ b/spine-csharp/src/Skeleton.cs @@ -224,9 +224,13 @@ namespace Spine { if (pathBones == null) SortBone(slotBone); else { - var bones = this.bones; - for (int i = 0, n = pathBones.Length; i < n; i++) - SortBone(bones.Items[pathBones[i]]); + var bonesItems = this.bones.Items; + for (int i = 0, n = pathBones.Length; i < n;) { + int nn = pathBones[i++]; + nn += i; + while (i < nn) + SortBone(bonesItems[pathBones[i++]]); + } } } diff --git a/spine-libgdx/spine-libgdx-tests/src/com/esotericsoftware/spine/Sandbox.java b/spine-libgdx/spine-libgdx-tests/src/com/esotericsoftware/spine/Sandbox.java new file mode 100644 index 000000000..f44a48cd4 --- /dev/null +++ b/spine-libgdx/spine-libgdx-tests/src/com/esotericsoftware/spine/Sandbox.java @@ -0,0 +1,132 @@ +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.3 + * + * Copyright (c) 2013-2015, Esoteric Software + * All rights reserved. + * + * You are granted a perpetual, non-exclusive, non-sublicensable and + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), you may not (a) modify, + * translate, adapt or otherwise create derivative works, improvements of the + * Software or develop new applications using the Software or (b) remove, + * delete, alter or obscure any trademarks or any copyright, trademark, patent + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL ESOTERIC SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + +package com.esotericsoftware.spine; + +import com.badlogic.gdx.ApplicationAdapter; +import com.badlogic.gdx.Gdx; +import com.badlogic.gdx.backends.lwjgl.LwjglApplication; +import com.badlogic.gdx.backends.lwjgl.LwjglApplicationConfiguration; +import com.badlogic.gdx.graphics.GL20; +import com.badlogic.gdx.graphics.OrthographicCamera; +import com.badlogic.gdx.graphics.g2d.PolygonSpriteBatch; +import com.badlogic.gdx.graphics.g2d.TextureAtlas; + +/** + * Sandbox for comparing values when porting to other + * runtimes. + */ +public class Sandbox extends ApplicationAdapter { + static final String ATLAS = "../../examples/tank/export/tank.atlas"; + static final String JSON = "../../examples/tank/export/tank.json"; + static final float scale = 0.3f; + static final float X = 400; + static final float Y = 500; + static final String ANIMATION = "drive"; + static final float ANIMATION_OFFSET = 0.5f; + static final boolean ANIMATION_UPDATE = false; + static final boolean Y_DOWN = true; + static final boolean DRAW_DEBUG = false; + + OrthographicCamera camera; + PolygonSpriteBatch batch; + SkeletonMeshRenderer renderer; + SkeletonRendererDebug debugRenderer; + + TextureAtlas atlas; + Skeleton skeleton; + AnimationState state; + + public void create () { + camera = new OrthographicCamera(); + camera.setToOrtho(Y_DOWN); + batch = new PolygonSpriteBatch(); + renderer = new SkeletonMeshRenderer(); + renderer.setPremultipliedAlpha(false); + debugRenderer = new SkeletonRendererDebug(); + debugRenderer.setBoundingBoxes(false); + debugRenderer.setRegionAttachments(false); + + atlas = new TextureAtlas(Gdx.files.internal(ATLAS)); + SkeletonJson json = new SkeletonJson(atlas); + json.setScale(scale); + SkeletonData skeletonData = json.readSkeletonData(Gdx.files.internal(JSON)); + + skeleton = new Skeleton(skeletonData); + skeleton.setFlipY(Y_DOWN); + skeleton.setPosition(X, Y); + + AnimationStateData stateData = new AnimationStateData(skeletonData); + state = new AnimationState(stateData); + if (ANIMATION != null) state.setAnimation(0, ANIMATION, true); + if (ANIMATION_OFFSET != 0) { + state.update(ANIMATION_OFFSET); + state.apply(skeleton); + skeleton.updateWorldTransform(); + } + } + + public void render () { + Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); + + if (ANIMATION_UPDATE) { + state.update(Gdx.graphics.getDeltaTime()); + state.apply(skeleton); + } + skeleton.updateWorldTransform(); + + camera.update(); + batch.getProjectionMatrix().set(camera.combined); + debugRenderer.getShapeRenderer().setProjectionMatrix(camera.combined); + + batch.begin(); + renderer.draw(batch, skeleton); + batch.end(); + + if (DRAW_DEBUG) debugRenderer.draw(skeleton); + } + + public void resize (int width, int height) { + camera.setToOrtho(Y_DOWN); + } + + public void dispose () { + atlas.dispose(); + } + + public static void main (String[] args) throws Exception { + LwjglApplicationConfiguration config = new LwjglApplicationConfiguration(); + config.useHDPI = true; + config.width = 800; + config.height = 600; + new LwjglApplication(new Sandbox(), config); + } +} diff --git a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/PathConstraint.java b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/PathConstraint.java index 7037eeb27..b83e36316 100644 --- a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/PathConstraint.java +++ b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/PathConstraint.java @@ -1,436 +1,466 @@ - -package com.esotericsoftware.spine; - -import static com.badlogic.gdx.math.MathUtils.*; - -import com.badlogic.gdx.utils.Array; -import com.badlogic.gdx.utils.FloatArray; -import com.esotericsoftware.spine.PathConstraintData.PositionMode; -import com.esotericsoftware.spine.PathConstraintData.RotateMode; -import com.esotericsoftware.spine.PathConstraintData.SpacingMode; -import com.esotericsoftware.spine.attachments.Attachment; -import com.esotericsoftware.spine.attachments.PathAttachment; - -public class PathConstraint implements Updatable { - static private final int NONE = -1, BEFORE = -2, AFTER = -3; - - final PathConstraintData data; - final Array bones; - Slot target; - float position, spacing, rotateMix, translateMix; - - private final FloatArray spaces = new FloatArray(), positions = new FloatArray(); - private final FloatArray world = new FloatArray(), curves = new FloatArray(), lengths = new FloatArray(); - private final float[] segments = new float[10]; - - public PathConstraint (PathConstraintData data, Skeleton skeleton) { - if (data == null) throw new IllegalArgumentException("data cannot be null."); - if (skeleton == null) throw new IllegalArgumentException("skeleton cannot be null."); - this.data = data; - bones = new Array(data.bones.size); - for (BoneData boneData : data.bones) - bones.add(skeleton.findBone(boneData.name)); - target = skeleton.findSlot(data.target.name); - position = data.position; - spacing = data.spacing; - rotateMix = data.rotateMix; - translateMix = data.translateMix; - } - - /** Copy constructor. */ - public PathConstraint (PathConstraint constraint, Skeleton skeleton) { - if (constraint == null) throw new IllegalArgumentException("constraint cannot be null."); - if (skeleton == null) throw new IllegalArgumentException("skeleton cannot be null."); - data = constraint.data; - bones = new Array(constraint.bones.size); - for (Bone bone : constraint.bones) - bones.add(skeleton.bones.get(bone.data.index)); - target = skeleton.slots.get(constraint.target.data.index); - position = constraint.position; - spacing = constraint.spacing; - rotateMix = constraint.rotateMix; - translateMix = constraint.translateMix; - } - - public void apply () { - update(); - } - - @SuppressWarnings("null") - public void update () { - Attachment attachment = target.attachment; - if (!(attachment instanceof PathAttachment)) return; - - float rotateMix = this.rotateMix, translateMix = this.translateMix; - boolean translate = translateMix > 0, rotate = rotateMix > 0; - if (!translate && !rotate) return; - - PathConstraintData data = this.data; - SpacingMode spacingMode = data.spacingMode; - boolean lengthSpacing = spacingMode == SpacingMode.length; - RotateMode rotateMode = data.rotateMode; - boolean tangents = rotateMode == RotateMode.tangent, scale = rotateMode == RotateMode.chainScale; - int boneCount = this.bones.size, spacesCount = tangents ? boneCount : boneCount + 1; - Object[] bones = this.bones.items; - float[] spaces = this.spaces.setSize(spacesCount), lengths = null; - float spacing = this.spacing; - if (scale || lengthSpacing) { - if (scale) lengths = this.lengths.setSize(boneCount); - for (int i = 0, n = spacesCount - 1; i < n;) { - Bone bone = (Bone)bones[i]; - float length = bone.data.length, x = length * bone.a, y = length * bone.c; - length = (float)Math.sqrt(x * x + y * y); - if (scale) lengths[i] = length; - spaces[++i] = lengthSpacing ? Math.max(0, length + spacing) : spacing; - } - } else { - for (int i = 1; i < spacesCount; i++) - spaces[i] = spacing; - } - - float[] positions = computeWorldPositions((PathAttachment)attachment, spacesCount, tangents, - data.positionMode == PositionMode.percent, spacingMode == SpacingMode.percent); - Skeleton skeleton = target.getSkeleton(); - float skeletonX = skeleton.x, skeletonY = skeleton.y; - float boneX = positions[0], boneY = positions[1], offsetRotation = data.offsetRotation; - boolean tip = rotateMode == RotateMode.chain && offsetRotation == 0; - for (int i = 0, p = 3; i < boneCount; i++, p += 3) { - Bone bone = (Bone)bones[i]; - bone.worldX += (boneX - skeletonX - bone.worldX) * translateMix; - bone.worldY += (boneY - skeletonY - bone.worldY) * translateMix; - float x = positions[p], y = positions[p + 1], dx = x - boneX, dy = y - boneY; - if (scale) { - float length = lengths[i]; - if (length != 0) { - float s = ((float)Math.sqrt(dx * dx + dy * dy) / length - 1) * rotateMix + 1; - bone.a *= s; - bone.c *= s; - } - } - boneX = x; - boneY = y; - if (rotate) { - float a = bone.a, b = bone.b, c = bone.c, d = bone.d, r, cos, sin; - if (tangents) - r = positions[p - 1]; - else if (spaces[i + 1] == 0) - r = positions[p + 2]; - else - r = atan2(dy, dx); - r -= atan2(c, a) - offsetRotation * degRad; - if (tip) { - cos = cos(r); - sin = sin(r); - float length = bone.data.length; - boneX += (length * (cos * a - sin * c) - dx) * rotateMix; - boneY += (length * (sin * a + cos * c) - dy) * rotateMix; - } - if (r > PI) - r -= PI2; - else if (r < -PI) // - r += PI2; - r *= rotateMix; - cos = cos(r); - sin = sin(r); - bone.a = cos * a - sin * c; - bone.b = cos * b - sin * d; - bone.c = sin * a + cos * c; - bone.d = sin * b + cos * d; - } - } - } - - float[] computeWorldPositions (PathAttachment path, int spacesCount, boolean tangents, boolean percentPosition, - boolean percentSpacing) { - Slot target = this.target; - float position = this.position; - float[] spaces = this.spaces.items, out = this.positions.setSize(spacesCount * 3 + 2), world; - boolean closed = path.getClosed(); - int verticesLength = path.getWorldVerticesLength(), curveCount = verticesLength / 6, prevCurve = NONE; - - if (!path.getConstantSpeed()) { - float[] lengths = path.getLengths(); - curveCount -= closed ? 1 : 2; - float pathLength = lengths[curveCount]; - if (percentPosition) position *= pathLength; - if (percentSpacing) { - for (int i = 0; i < spacesCount; i++) - spaces[i] *= pathLength; - } - world = this.world.setSize(8); - for (int i = 0, o = 0, curve = 0; i < spacesCount; i++, o += 3) { - float space = spaces[i]; - position += space; - float p = position; - - if (closed) { - p %= pathLength; - if (p < 0) p += pathLength; - curve = 0; - } else if (p < 0) { - if (prevCurve != BEFORE) { - prevCurve = BEFORE; - path.computeWorldVertices(target, 2, 4, world, 0); - } - addBeforePosition(p, world, 0, out, o); - continue; - } else if (p > pathLength) { - if (prevCurve != AFTER) { - prevCurve = AFTER; - path.computeWorldVertices(target, verticesLength - 6, 4, world, 0); - } - addAfterPosition(p - pathLength, world, 0, out, o); - continue; - } - - // Determine curve containing position. - for (;; curve++) { - float length = lengths[curve]; - if (p > length) continue; - if (curve == 0) - p /= length; - else { - float prev = lengths[curve - 1]; - p = (p - prev) / (length - prev); - } - break; - } - if (curve != prevCurve) { - prevCurve = curve; - if (closed && curve == curveCount) { - path.computeWorldVertices(target, verticesLength - 4, 4, world, 0); - path.computeWorldVertices(target, 0, 4, world, 4); - } else - path.computeWorldVertices(target, curve * 6 + 2, 8, world, 0); - } - addCurvePosition(p, world[0], world[1], world[2], world[3], world[4], world[5], world[6], world[7], out, o, - tangents || (i > 0 && space == 0)); - } - return out; - } - - // World vertices. - if (closed) { - verticesLength += 2; - world = this.world.setSize(verticesLength); - path.computeWorldVertices(target, 2, verticesLength - 4, world, 0); - path.computeWorldVertices(target, 0, 2, world, verticesLength - 4); - world[verticesLength - 2] = world[0]; - world[verticesLength - 1] = world[1]; - } else { - curveCount--; - verticesLength -= 4; - world = this.world.setSize(verticesLength); - path.computeWorldVertices(target, 2, verticesLength, world, 0); - } - - // Curve lengths. - float[] curves = this.curves.setSize(curveCount); - float pathLength = 0; - float x1 = world[0], y1 = world[1], cx1 = 0, cy1 = 0, cx2 = 0, cy2 = 0, x2 = 0, y2 = 0; - float tmpx, tmpy, dddfx, dddfy, ddfx, ddfy, dfx, dfy; - for (int i = 0, w = 2; i < curveCount; i++, w += 6) { - cx1 = world[w]; - cy1 = world[w + 1]; - cx2 = world[w + 2]; - cy2 = world[w + 3]; - x2 = world[w + 4]; - y2 = world[w + 5]; - tmpx = (x1 - cx1 * 2 + cx2) * 0.1875f; - tmpy = (y1 - cy1 * 2 + cy2) * 0.1875f; - dddfx = ((cx1 - cx2) * 3 - x1 + x2) * 0.09375f; - dddfy = ((cy1 - cy2) * 3 - y1 + y2) * 0.09375f; - ddfx = tmpx * 2 + dddfx; - ddfy = tmpy * 2 + dddfy; - dfx = (cx1 - x1) * 0.75f + tmpx + dddfx * 0.16666667f; - dfy = (cy1 - y1) * 0.75f + tmpy + dddfy * 0.16666667f; - pathLength += (float)Math.sqrt(dfx * dfx + dfy * dfy); - dfx += ddfx; - dfy += ddfy; - ddfx += dddfx; - ddfy += dddfy; - pathLength += (float)Math.sqrt(dfx * dfx + dfy * dfy); - dfx += ddfx; - dfy += ddfy; - pathLength += (float)Math.sqrt(dfx * dfx + dfy * dfy); - dfx += ddfx + dddfx; - dfy += ddfy + dddfy; - pathLength += (float)Math.sqrt(dfx * dfx + dfy * dfy); - curves[i] = pathLength; - x1 = x2; - y1 = y2; - } - if (percentPosition) position *= pathLength; - if (percentSpacing) { - for (int i = 0; i < spacesCount; i++) - spaces[i] *= pathLength; - } - - float[] segments = this.segments; - float curveLength = 0; - for (int i = 0, o = 0, curve = 0, segment = 0; i < spacesCount; i++, o += 3) { - float space = spaces[i]; - position += space; - float p = position; - - if (closed) { - p %= pathLength; - if (p < 0) p += pathLength; - curve = 0; - } else if (p < 0) { - addBeforePosition(p, world, 0, out, o); - continue; - } else if (p > pathLength) { - addAfterPosition(p - pathLength, world, verticesLength - 4, out, o); - continue; - } - - // Determine curve containing position. - for (;; curve++) { - float length = curves[curve]; - if (p > length) continue; - if (curve == 0) - p /= length; - else { - float prev = curves[curve - 1]; - p = (p - prev) / (length - prev); - } - break; - } - - // Curve segment lengths. - if (curve != prevCurve) { - prevCurve = curve; - int ii = curve * 6; - x1 = world[ii]; - y1 = world[ii + 1]; - cx1 = world[ii + 2]; - cy1 = world[ii + 3]; - cx2 = world[ii + 4]; - cy2 = world[ii + 5]; - x2 = world[ii + 6]; - y2 = world[ii + 7]; - tmpx = (x1 - cx1 * 2 + cx2) * 0.03f; - tmpy = (y1 - cy1 * 2 + cy2) * 0.03f; - dddfx = ((cx1 - cx2) * 3 - x1 + x2) * 0.006f; - dddfy = ((cy1 - cy2) * 3 - y1 + y2) * 0.006f; - ddfx = tmpx * 2 + dddfx; - ddfy = tmpy * 2 + dddfy; - dfx = (cx1 - x1) * 0.3f + tmpx + dddfx * 0.16666667f; - dfy = (cy1 - y1) * 0.3f + tmpy + dddfy * 0.16666667f; - curveLength = (float)Math.sqrt(dfx * dfx + dfy * dfy); - segments[0] = curveLength; - for (ii = 1; ii < 8; ii++) { - dfx += ddfx; - dfy += ddfy; - ddfx += dddfx; - ddfy += dddfy; - curveLength += (float)Math.sqrt(dfx * dfx + dfy * dfy); - segments[ii] = curveLength; - } - dfx += ddfx; - dfy += ddfy; - curveLength += (float)Math.sqrt(dfx * dfx + dfy * dfy); - segments[8] = curveLength; - dfx += ddfx + dddfx; - dfy += ddfy + dddfy; - curveLength += (float)Math.sqrt(dfx * dfx + dfy * dfy); - segments[9] = curveLength; - segment = 0; - } - - // Weight by segment length. - p *= curveLength; - for (;; segment++) { - float length = segments[segment]; - if (p > length) continue; - if (segment == 0) - p /= length; - else { - float prev = segments[segment - 1]; - p = segment + (p - prev) / (length - prev); - } - break; - } - addCurvePosition(p * 0.1f, x1, y1, cx1, cy1, cx2, cy2, x2, y2, out, o, tangents || (i > 0 && space == 0)); - } - return out; - } - - private void addBeforePosition (float p, float[] temp, int i, float[] out, int o) { - float x1 = temp[i], y1 = temp[i + 1], dx = temp[i + 2] - x1, dy = temp[i + 3] - y1, r = atan2(dy, dx); - out[o] = x1 + p * cos(r); - out[o + 1] = y1 + p * sin(r); - out[o + 2] = r; - } - - private void addAfterPosition (float p, float[] temp, int i, float[] out, int o) { - float x1 = temp[i + 2], y1 = temp[i + 3], dx = x1 - temp[i], dy = y1 - temp[i + 1], r = atan2(dy, dx); - out[o] = x1 + p * cos(r); - out[o + 1] = y1 + p * sin(r); - out[o + 2] = r; - } - - private void addCurvePosition (float p, float x1, float y1, float cx1, float cy1, float cx2, float cy2, float x2, float y2, - float[] out, int o, boolean tangents) { - if (p == 0) p = 0.0001f; - float tt = p * p, ttt = tt * p, u = 1 - p, uu = u * u, uuu = uu * u; - float ut = u * p, ut3 = ut * 3, uut3 = u * ut3, utt3 = ut3 * p; - float x = x1 * uuu + cx1 * uut3 + cx2 * utt3 + x2 * ttt, y = y1 * uuu + cy1 * uut3 + cy2 * utt3 + y2 * ttt; - out[o] = x; - out[o + 1] = y; - if (tangents) out[o + 2] = atan2(y - (y1 * uu + cy1 * ut * 2 + cy2 * tt), x - (x1 * uu + cx1 * ut * 2 + cx2 * tt)); - } - - public float getPosition () { - return position; - } - - public void setPosition (float position) { - this.position = position; - } - - public float getSpacing () { - return spacing; - } - - public void setSpacing (float spacing) { - this.spacing = spacing; - } - - public float getRotateMix () { - return rotateMix; - } - - public void setRotateMix (float rotateMix) { - this.rotateMix = rotateMix; - } - - public float getTranslateMix () { - return translateMix; - } - - public void setTranslateMix (float translateMix) { - this.translateMix = translateMix; - } - - public Array getBones () { - return bones; - } - - public Slot getTarget () { - return target; - } - - public void setTarget (Slot target) { - this.target = target; - } - - public PathConstraintData getData () { - return data; - } - - public String toString () { - return data.name; - } -} +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.3 + * + * Copyright (c) 2013-2015, Esoteric Software + * All rights reserved. + * + * You are granted a perpetual, non-exclusive, non-sublicensable and + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), you may not (a) modify, + * translate, adapt or otherwise create derivative works, improvements of the + * Software or develop new applications using the Software or (b) remove, + * delete, alter or obscure any trademarks or any copyright, trademark, patent + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL ESOTERIC SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + +package com.esotericsoftware.spine; + +import static com.badlogic.gdx.math.MathUtils.*; + +import com.badlogic.gdx.utils.Array; +import com.badlogic.gdx.utils.FloatArray; +import com.esotericsoftware.spine.PathConstraintData.PositionMode; +import com.esotericsoftware.spine.PathConstraintData.RotateMode; +import com.esotericsoftware.spine.PathConstraintData.SpacingMode; +import com.esotericsoftware.spine.attachments.Attachment; +import com.esotericsoftware.spine.attachments.PathAttachment; + +public class PathConstraint implements Updatable { + static private final int NONE = -1, BEFORE = -2, AFTER = -3; + + final PathConstraintData data; + final Array bones; + Slot target; + float position, spacing, rotateMix, translateMix; + + private final FloatArray spaces = new FloatArray(), positions = new FloatArray(); + private final FloatArray world = new FloatArray(), curves = new FloatArray(), lengths = new FloatArray(); + private final float[] segments = new float[10]; + + public PathConstraint (PathConstraintData data, Skeleton skeleton) { + if (data == null) throw new IllegalArgumentException("data cannot be null."); + if (skeleton == null) throw new IllegalArgumentException("skeleton cannot be null."); + this.data = data; + bones = new Array(data.bones.size); + for (BoneData boneData : data.bones) + bones.add(skeleton.findBone(boneData.name)); + target = skeleton.findSlot(data.target.name); + position = data.position; + spacing = data.spacing; + rotateMix = data.rotateMix; + translateMix = data.translateMix; + } + + /** Copy constructor. */ + public PathConstraint (PathConstraint constraint, Skeleton skeleton) { + if (constraint == null) throw new IllegalArgumentException("constraint cannot be null."); + if (skeleton == null) throw new IllegalArgumentException("skeleton cannot be null."); + data = constraint.data; + bones = new Array(constraint.bones.size); + for (Bone bone : constraint.bones) + bones.add(skeleton.bones.get(bone.data.index)); + target = skeleton.slots.get(constraint.target.data.index); + position = constraint.position; + spacing = constraint.spacing; + rotateMix = constraint.rotateMix; + translateMix = constraint.translateMix; + } + + public void apply () { + update(); + } + + @SuppressWarnings("null") + public void update () { + Attachment attachment = target.attachment; + if (!(attachment instanceof PathAttachment)) return; + + float rotateMix = this.rotateMix, translateMix = this.translateMix; + boolean translate = translateMix > 0, rotate = rotateMix > 0; + if (!translate && !rotate) return; + + PathConstraintData data = this.data; + SpacingMode spacingMode = data.spacingMode; + boolean lengthSpacing = spacingMode == SpacingMode.length; + RotateMode rotateMode = data.rotateMode; + boolean tangents = rotateMode == RotateMode.tangent, scale = rotateMode == RotateMode.chainScale; + int boneCount = this.bones.size, spacesCount = tangents ? boneCount : boneCount + 1; + Object[] bones = this.bones.items; + float[] spaces = this.spaces.setSize(spacesCount), lengths = null; + float spacing = this.spacing; + if (scale || lengthSpacing) { + if (scale) lengths = this.lengths.setSize(boneCount); + for (int i = 0, n = spacesCount - 1; i < n;) { + Bone bone = (Bone)bones[i]; + float length = bone.data.length, x = length * bone.a, y = length * bone.c; + length = (float)Math.sqrt(x * x + y * y); + if (scale) lengths[i] = length; + spaces[++i] = lengthSpacing ? Math.max(0, length + spacing) : spacing; + } + } else { + for (int i = 1; i < spacesCount; i++) + spaces[i] = spacing; + } + + float[] positions = computeWorldPositions((PathAttachment)attachment, spacesCount, tangents, + data.positionMode == PositionMode.percent, spacingMode == SpacingMode.percent); + Skeleton skeleton = target.getSkeleton(); + float skeletonX = skeleton.x, skeletonY = skeleton.y; + float boneX = positions[0], boneY = positions[1], offsetRotation = data.offsetRotation; + boolean tip = rotateMode == RotateMode.chain && offsetRotation == 0; + for (int i = 0, p = 3; i < boneCount; i++, p += 3) { + Bone bone = (Bone)bones[i]; + bone.worldX += (boneX - skeletonX - bone.worldX) * translateMix; + bone.worldY += (boneY - skeletonY - bone.worldY) * translateMix; + float x = positions[p], y = positions[p + 1], dx = x - boneX, dy = y - boneY; + if (scale) { + float length = lengths[i]; + if (length != 0) { + float s = ((float)Math.sqrt(dx * dx + dy * dy) / length - 1) * rotateMix + 1; + bone.a *= s; + bone.c *= s; + } + } + boneX = x; + boneY = y; + if (rotate) { + float a = bone.a, b = bone.b, c = bone.c, d = bone.d, r, cos, sin; + if (tangents) + r = positions[p - 1]; + else if (spaces[i + 1] == 0) + r = positions[p + 2]; + else + r = atan2(dy, dx); + r -= atan2(c, a) - offsetRotation * degRad; + if (tip) { + cos = cos(r); + sin = sin(r); + float length = bone.data.length; + boneX += (length * (cos * a - sin * c) - dx) * rotateMix; + boneY += (length * (sin * a + cos * c) - dy) * rotateMix; + } + if (r > PI) + r -= PI2; + else if (r < -PI) // + r += PI2; + r *= rotateMix; + cos = cos(r); + sin = sin(r); + bone.a = cos * a - sin * c; + bone.b = cos * b - sin * d; + bone.c = sin * a + cos * c; + bone.d = sin * b + cos * d; + } + } + } + + float[] computeWorldPositions (PathAttachment path, int spacesCount, boolean tangents, boolean percentPosition, + boolean percentSpacing) { + Slot target = this.target; + float position = this.position; + float[] spaces = this.spaces.items, out = this.positions.setSize(spacesCount * 3 + 2), world; + boolean closed = path.getClosed(); + int verticesLength = path.getWorldVerticesLength(), curveCount = verticesLength / 6, prevCurve = NONE; + + if (!path.getConstantSpeed()) { + float[] lengths = path.getLengths(); + curveCount -= closed ? 1 : 2; + float pathLength = lengths[curveCount]; + if (percentPosition) position *= pathLength; + if (percentSpacing) { + for (int i = 0; i < spacesCount; i++) + spaces[i] *= pathLength; + } + world = this.world.setSize(8); + for (int i = 0, o = 0, curve = 0; i < spacesCount; i++, o += 3) { + float space = spaces[i]; + position += space; + float p = position; + + if (closed) { + p %= pathLength; + if (p < 0) p += pathLength; + curve = 0; + } else if (p < 0) { + if (prevCurve != BEFORE) { + prevCurve = BEFORE; + path.computeWorldVertices(target, 2, 4, world, 0); + } + addBeforePosition(p, world, 0, out, o); + continue; + } else if (p > pathLength) { + if (prevCurve != AFTER) { + prevCurve = AFTER; + path.computeWorldVertices(target, verticesLength - 6, 4, world, 0); + } + addAfterPosition(p - pathLength, world, 0, out, o); + continue; + } + + // Determine curve containing position. + for (;; curve++) { + float length = lengths[curve]; + if (p > length) continue; + if (curve == 0) + p /= length; + else { + float prev = lengths[curve - 1]; + p = (p - prev) / (length - prev); + } + break; + } + if (curve != prevCurve) { + prevCurve = curve; + if (closed && curve == curveCount) { + path.computeWorldVertices(target, verticesLength - 4, 4, world, 0); + path.computeWorldVertices(target, 0, 4, world, 4); + } else + path.computeWorldVertices(target, curve * 6 + 2, 8, world, 0); + } + addCurvePosition(p, world[0], world[1], world[2], world[3], world[4], world[5], world[6], world[7], out, o, + tangents || (i > 0 && space == 0)); + } + return out; + } + + // World vertices. + if (closed) { + verticesLength += 2; + world = this.world.setSize(verticesLength); + path.computeWorldVertices(target, 2, verticesLength - 4, world, 0); + path.computeWorldVertices(target, 0, 2, world, verticesLength - 4); + world[verticesLength - 2] = world[0]; + world[verticesLength - 1] = world[1]; + } else { + curveCount--; + verticesLength -= 4; + world = this.world.setSize(verticesLength); + path.computeWorldVertices(target, 2, verticesLength, world, 0); + } + + // Curve lengths. + float[] curves = this.curves.setSize(curveCount); + float pathLength = 0; + float x1 = world[0], y1 = world[1], cx1 = 0, cy1 = 0, cx2 = 0, cy2 = 0, x2 = 0, y2 = 0; + float tmpx, tmpy, dddfx, dddfy, ddfx, ddfy, dfx, dfy; + for (int i = 0, w = 2; i < curveCount; i++, w += 6) { + cx1 = world[w]; + cy1 = world[w + 1]; + cx2 = world[w + 2]; + cy2 = world[w + 3]; + x2 = world[w + 4]; + y2 = world[w + 5]; + tmpx = (x1 - cx1 * 2 + cx2) * 0.1875f; + tmpy = (y1 - cy1 * 2 + cy2) * 0.1875f; + dddfx = ((cx1 - cx2) * 3 - x1 + x2) * 0.09375f; + dddfy = ((cy1 - cy2) * 3 - y1 + y2) * 0.09375f; + ddfx = tmpx * 2 + dddfx; + ddfy = tmpy * 2 + dddfy; + dfx = (cx1 - x1) * 0.75f + tmpx + dddfx * 0.16666667f; + dfy = (cy1 - y1) * 0.75f + tmpy + dddfy * 0.16666667f; + pathLength += (float)Math.sqrt(dfx * dfx + dfy * dfy); + dfx += ddfx; + dfy += ddfy; + ddfx += dddfx; + ddfy += dddfy; + pathLength += (float)Math.sqrt(dfx * dfx + dfy * dfy); + dfx += ddfx; + dfy += ddfy; + pathLength += (float)Math.sqrt(dfx * dfx + dfy * dfy); + dfx += ddfx + dddfx; + dfy += ddfy + dddfy; + pathLength += (float)Math.sqrt(dfx * dfx + dfy * dfy); + curves[i] = pathLength; + x1 = x2; + y1 = y2; + } + if (percentPosition) position *= pathLength; + if (percentSpacing) { + for (int i = 0; i < spacesCount; i++) + spaces[i] *= pathLength; + } + + float[] segments = this.segments; + float curveLength = 0; + for (int i = 0, o = 0, curve = 0, segment = 0; i < spacesCount; i++, o += 3) { + float space = spaces[i]; + position += space; + float p = position; + + if (closed) { + p %= pathLength; + if (p < 0) p += pathLength; + curve = 0; + } else if (p < 0) { + addBeforePosition(p, world, 0, out, o); + continue; + } else if (p > pathLength) { + addAfterPosition(p - pathLength, world, verticesLength - 4, out, o); + continue; + } + + // Determine curve containing position. + for (;; curve++) { + float length = curves[curve]; + if (p > length) continue; + if (curve == 0) + p /= length; + else { + float prev = curves[curve - 1]; + p = (p - prev) / (length - prev); + } + break; + } + + // Curve segment lengths. + if (curve != prevCurve) { + prevCurve = curve; + int ii = curve * 6; + x1 = world[ii]; + y1 = world[ii + 1]; + cx1 = world[ii + 2]; + cy1 = world[ii + 3]; + cx2 = world[ii + 4]; + cy2 = world[ii + 5]; + x2 = world[ii + 6]; + y2 = world[ii + 7]; + tmpx = (x1 - cx1 * 2 + cx2) * 0.03f; + tmpy = (y1 - cy1 * 2 + cy2) * 0.03f; + dddfx = ((cx1 - cx2) * 3 - x1 + x2) * 0.006f; + dddfy = ((cy1 - cy2) * 3 - y1 + y2) * 0.006f; + ddfx = tmpx * 2 + dddfx; + ddfy = tmpy * 2 + dddfy; + dfx = (cx1 - x1) * 0.3f + tmpx + dddfx * 0.16666667f; + dfy = (cy1 - y1) * 0.3f + tmpy + dddfy * 0.16666667f; + curveLength = (float)Math.sqrt(dfx * dfx + dfy * dfy); + segments[0] = curveLength; + for (ii = 1; ii < 8; ii++) { + dfx += ddfx; + dfy += ddfy; + ddfx += dddfx; + ddfy += dddfy; + curveLength += (float)Math.sqrt(dfx * dfx + dfy * dfy); + segments[ii] = curveLength; + } + dfx += ddfx; + dfy += ddfy; + curveLength += (float)Math.sqrt(dfx * dfx + dfy * dfy); + segments[8] = curveLength; + dfx += ddfx + dddfx; + dfy += ddfy + dddfy; + curveLength += (float)Math.sqrt(dfx * dfx + dfy * dfy); + segments[9] = curveLength; + segment = 0; + } + + // Weight by segment length. + p *= curveLength; + for (;; segment++) { + float length = segments[segment]; + if (p > length) continue; + if (segment == 0) + p /= length; + else { + float prev = segments[segment - 1]; + p = segment + (p - prev) / (length - prev); + } + break; + } + addCurvePosition(p * 0.1f, x1, y1, cx1, cy1, cx2, cy2, x2, y2, out, o, tangents || (i > 0 && space == 0)); + } + return out; + } + + private void addBeforePosition (float p, float[] temp, int i, float[] out, int o) { + float x1 = temp[i], y1 = temp[i + 1], dx = temp[i + 2] - x1, dy = temp[i + 3] - y1, r = atan2(dy, dx); + out[o] = x1 + p * cos(r); + out[o + 1] = y1 + p * sin(r); + out[o + 2] = r; + } + + private void addAfterPosition (float p, float[] temp, int i, float[] out, int o) { + float x1 = temp[i + 2], y1 = temp[i + 3], dx = x1 - temp[i], dy = y1 - temp[i + 1], r = atan2(dy, dx); + out[o] = x1 + p * cos(r); + out[o + 1] = y1 + p * sin(r); + out[o + 2] = r; + } + + private void addCurvePosition (float p, float x1, float y1, float cx1, float cy1, float cx2, float cy2, float x2, float y2, + float[] out, int o, boolean tangents) { + if (p == 0) p = 0.0001f; + float tt = p * p, ttt = tt * p, u = 1 - p, uu = u * u, uuu = uu * u; + float ut = u * p, ut3 = ut * 3, uut3 = u * ut3, utt3 = ut3 * p; + float x = x1 * uuu + cx1 * uut3 + cx2 * utt3 + x2 * ttt, y = y1 * uuu + cy1 * uut3 + cy2 * utt3 + y2 * ttt; + out[o] = x; + out[o + 1] = y; + if (tangents) out[o + 2] = atan2(y - (y1 * uu + cy1 * ut * 2 + cy2 * tt), x - (x1 * uu + cx1 * ut * 2 + cx2 * tt)); + } + + public float getPosition () { + return position; + } + + public void setPosition (float position) { + this.position = position; + } + + public float getSpacing () { + return spacing; + } + + public void setSpacing (float spacing) { + this.spacing = spacing; + } + + public float getRotateMix () { + return rotateMix; + } + + public void setRotateMix (float rotateMix) { + this.rotateMix = rotateMix; + } + + public float getTranslateMix () { + return translateMix; + } + + public void setTranslateMix (float translateMix) { + this.translateMix = translateMix; + } + + public Array getBones () { + return bones; + } + + public Slot getTarget () { + return target; + } + + public void setTarget (Slot target) { + this.target = target; + } + + public PathConstraintData getData () { + return data; + } + + public String toString () { + return data.name; + } +} diff --git a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/PathConstraintData.java b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/PathConstraintData.java index c3be9bd2f..15e159d85 100644 --- a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/PathConstraintData.java +++ b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/PathConstraintData.java @@ -1,122 +1,152 @@ +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.3 + * + * Copyright (c) 2013-2015, Esoteric Software + * All rights reserved. + * + * You are granted a perpetual, non-exclusive, non-sublicensable and + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), you may not (a) modify, + * translate, adapt or otherwise create derivative works, improvements of the + * Software or develop new applications using the Software or (b) remove, + * delete, alter or obscure any trademarks or any copyright, trademark, patent + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL ESOTERIC SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ -package com.esotericsoftware.spine; - -import com.badlogic.gdx.utils.Array; - -public class PathConstraintData { - final String name; - final Array bones = new Array(); - SlotData target; - PositionMode positionMode; - SpacingMode spacingMode; - RotateMode rotateMode; - float offsetRotation; - float position, spacing, rotateMix, translateMix; - - public PathConstraintData (String name) { - if (name == null) throw new IllegalArgumentException("name cannot be null."); - this.name = name; - } - - public Array getBones () { - return bones; - } - - public SlotData getTarget () { - return target; - } - - public void setTarget (SlotData target) { - this.target = target; - } - - public PositionMode getPositionMode () { - return positionMode; - } - - public void setPositionMode (PositionMode positionMode) { - this.positionMode = positionMode; - } - - public SpacingMode getSpacingMode () { - return spacingMode; - } - - public void setSpacingMode (SpacingMode spacingMode) { - this.spacingMode = spacingMode; - } - - public RotateMode getRotateMode () { - return rotateMode; - } - - public void setRotateMode (RotateMode rotateMode) { - this.rotateMode = rotateMode; - } - - public float getOffsetRotation () { - return offsetRotation; - } - - public void setOffsetRotation (float offsetRotation) { - this.offsetRotation = offsetRotation; - } - - public float getPosition () { - return position; - } - - public void setPosition (float position) { - this.position = position; - } - - public float getSpacing () { - return spacing; - } - - public void setSpacing (float spacing) { - this.spacing = spacing; - } - - public float getRotateMix () { - return rotateMix; - } - - public void setRotateMix (float rotateMix) { - this.rotateMix = rotateMix; - } - - public float getTranslateMix () { - return translateMix; - } - - public void setTranslateMix (float translateMix) { - this.translateMix = translateMix; - } - - public String getName () { - return name; - } - - public String toString () { - return name; - } - - static public enum PositionMode { - fixed, percent; - - static public final PositionMode[] values = PositionMode.values(); - } - - static public enum SpacingMode { - length, fixed, percent; - - static public final SpacingMode[] values = SpacingMode.values(); - } - - static public enum RotateMode { - tangent, chain, chainScale; - - static public final RotateMode[] values = RotateMode.values(); - } +package com.esotericsoftware.spine; + +import com.badlogic.gdx.utils.Array; + +public class PathConstraintData { + final String name; + final Array bones = new Array(); + SlotData target; + PositionMode positionMode; + SpacingMode spacingMode; + RotateMode rotateMode; + float offsetRotation; + float position, spacing, rotateMix, translateMix; + + public PathConstraintData (String name) { + if (name == null) throw new IllegalArgumentException("name cannot be null."); + this.name = name; + } + + public Array getBones () { + return bones; + } + + public SlotData getTarget () { + return target; + } + + public void setTarget (SlotData target) { + this.target = target; + } + + public PositionMode getPositionMode () { + return positionMode; + } + + public void setPositionMode (PositionMode positionMode) { + this.positionMode = positionMode; + } + + public SpacingMode getSpacingMode () { + return spacingMode; + } + + public void setSpacingMode (SpacingMode spacingMode) { + this.spacingMode = spacingMode; + } + + public RotateMode getRotateMode () { + return rotateMode; + } + + public void setRotateMode (RotateMode rotateMode) { + this.rotateMode = rotateMode; + } + + public float getOffsetRotation () { + return offsetRotation; + } + + public void setOffsetRotation (float offsetRotation) { + this.offsetRotation = offsetRotation; + } + + public float getPosition () { + return position; + } + + public void setPosition (float position) { + this.position = position; + } + + public float getSpacing () { + return spacing; + } + + public void setSpacing (float spacing) { + this.spacing = spacing; + } + + public float getRotateMix () { + return rotateMix; + } + + public void setRotateMix (float rotateMix) { + this.rotateMix = rotateMix; + } + + public float getTranslateMix () { + return translateMix; + } + + public void setTranslateMix (float translateMix) { + this.translateMix = translateMix; + } + + public String getName () { + return name; + } + + public String toString () { + return name; + } + + static public enum PositionMode { + fixed, percent; + + static public final PositionMode[] values = PositionMode.values(); + } + + static public enum SpacingMode { + length, fixed, percent; + + static public final SpacingMode[] values = SpacingMode.values(); + } + + static public enum RotateMode { + tangent, chain, chainScale; + + static public final RotateMode[] values = RotateMode.values(); + } } diff --git a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/TransformConstraint.java b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/TransformConstraint.java index 2b6be66cd..27e972a44 100644 --- a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/TransformConstraint.java +++ b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/TransformConstraint.java @@ -1,157 +1,187 @@ +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.3 + * + * Copyright (c) 2013-2015, Esoteric Software + * All rights reserved. + * + * You are granted a perpetual, non-exclusive, non-sublicensable and + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), you may not (a) modify, + * translate, adapt or otherwise create derivative works, improvements of the + * Software or develop new applications using the Software or (b) remove, + * delete, alter or obscure any trademarks or any copyright, trademark, patent + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL ESOTERIC SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ -package com.esotericsoftware.spine; - -import static com.badlogic.gdx.math.MathUtils.*; - -import com.badlogic.gdx.math.Vector2; -import com.badlogic.gdx.utils.Array; - -public class TransformConstraint implements Updatable { - final TransformConstraintData data; - final Array bones; - Bone target; - float rotateMix, translateMix, scaleMix, shearMix; - final Vector2 temp = new Vector2(); - - public TransformConstraint (TransformConstraintData data, Skeleton skeleton) { - if (data == null) throw new IllegalArgumentException("data cannot be null."); - if (skeleton == null) throw new IllegalArgumentException("skeleton cannot be null."); - this.data = data; - rotateMix = data.rotateMix; - translateMix = data.translateMix; - scaleMix = data.scaleMix; - shearMix = data.shearMix; - bones = new Array(data.bones.size); - for (BoneData boneData : data.bones) - bones.add(skeleton.findBone(boneData.name)); - target = skeleton.findBone(data.target.name); - } - - /** Copy constructor. */ - public TransformConstraint (TransformConstraint constraint, Skeleton skeleton) { - if (constraint == null) throw new IllegalArgumentException("constraint cannot be null."); - if (skeleton == null) throw new IllegalArgumentException("skeleton cannot be null."); - data = constraint.data; - bones = new Array(constraint.bones.size); - for (Bone bone : constraint.bones) - bones.add(skeleton.bones.get(bone.data.index)); - target = skeleton.bones.get(constraint.target.data.index); - rotateMix = constraint.rotateMix; - translateMix = constraint.translateMix; - scaleMix = constraint.scaleMix; - shearMix = constraint.shearMix; - } - - public void apply () { - update(); - } - - public void update () { - float rotateMix = this.rotateMix, translateMix = this.translateMix, scaleMix = this.scaleMix, shearMix = this.shearMix; - Bone target = this.target; - float ta = target.a, tb = target.b, tc = target.c, td = target.d; - Array bones = this.bones; - for (int i = 0, n = bones.size; i < n; i++) { - Bone bone = bones.get(i); - - if (rotateMix > 0) { - float a = bone.a, b = bone.b, c = bone.c, d = bone.d; - float r = atan2(tc, ta) - atan2(c, a) + data.offsetRotation * degRad; - if (r > PI) - r -= PI2; - else if (r < -PI) r += PI2; - r *= rotateMix; - float cos = cos(r), sin = sin(r); - bone.a = cos * a - sin * c; - bone.b = cos * b - sin * d; - bone.c = sin * a + cos * c; - bone.d = sin * b + cos * d; - } - - if (translateMix > 0) { - Vector2 temp = this.temp; - target.localToWorld(temp.set(data.offsetX, data.offsetY)); - bone.worldX += (temp.x - bone.worldX) * translateMix; - bone.worldY += (temp.y - bone.worldY) * translateMix; - } - - if (scaleMix > 0) { - float bs = (float)Math.sqrt(bone.a * bone.a + bone.c * bone.c); - float ts = (float)Math.sqrt(ta * ta + tc * tc); - float s = bs > 0.00001f ? (bs + (ts - bs + data.offsetScaleX) * scaleMix) / bs : 0; - bone.a *= s; - bone.c *= s; - bs = (float)Math.sqrt(bone.b * bone.b + bone.d * bone.d); - ts = (float)Math.sqrt(tb * tb + td * td); - s = bs > 0.00001f ? (bs + (ts - bs + data.offsetScaleY) * scaleMix) / bs : 0; - bone.b *= s; - bone.d *= s; - } - - if (shearMix > 0) { - float b = bone.b, d = bone.d; - float by = atan2(d, b); - float r = atan2(td, tb) - atan2(tc, ta) - (by - atan2(bone.c, bone.a)); - if (r > PI) - r -= PI2; - else if (r < -PI) r += PI2; - r = by + (r + data.offsetShearY * degRad) * shearMix; - float s = (float)Math.sqrt(b * b + d * d); - bone.b = cos(r) * s; - bone.d = sin(r) * s; - } - } - } - - public Array getBones () { - return bones; - } - - public Bone getTarget () { - return target; - } - - public void setTarget (Bone target) { - this.target = target; - } - - public float getRotateMix () { - return rotateMix; - } - - public void setRotateMix (float rotateMix) { - this.rotateMix = rotateMix; - } - - public float getTranslateMix () { - return translateMix; - } - - public void setTranslateMix (float translateMix) { - this.translateMix = translateMix; - } - - public float getScaleMix () { - return scaleMix; - } - - public void setScaleMix (float scaleMix) { - this.scaleMix = scaleMix; - } - - public float getShearMix () { - return shearMix; - } - - public void setShearMix (float shearMix) { - this.shearMix = shearMix; - } - - public TransformConstraintData getData () { - return data; - } - - public String toString () { - return data.name; - } +package com.esotericsoftware.spine; + +import static com.badlogic.gdx.math.MathUtils.*; + +import com.badlogic.gdx.math.Vector2; +import com.badlogic.gdx.utils.Array; + +public class TransformConstraint implements Updatable { + final TransformConstraintData data; + final Array bones; + Bone target; + float rotateMix, translateMix, scaleMix, shearMix; + final Vector2 temp = new Vector2(); + + public TransformConstraint (TransformConstraintData data, Skeleton skeleton) { + if (data == null) throw new IllegalArgumentException("data cannot be null."); + if (skeleton == null) throw new IllegalArgumentException("skeleton cannot be null."); + this.data = data; + rotateMix = data.rotateMix; + translateMix = data.translateMix; + scaleMix = data.scaleMix; + shearMix = data.shearMix; + bones = new Array(data.bones.size); + for (BoneData boneData : data.bones) + bones.add(skeleton.findBone(boneData.name)); + target = skeleton.findBone(data.target.name); + } + + /** Copy constructor. */ + public TransformConstraint (TransformConstraint constraint, Skeleton skeleton) { + if (constraint == null) throw new IllegalArgumentException("constraint cannot be null."); + if (skeleton == null) throw new IllegalArgumentException("skeleton cannot be null."); + data = constraint.data; + bones = new Array(constraint.bones.size); + for (Bone bone : constraint.bones) + bones.add(skeleton.bones.get(bone.data.index)); + target = skeleton.bones.get(constraint.target.data.index); + rotateMix = constraint.rotateMix; + translateMix = constraint.translateMix; + scaleMix = constraint.scaleMix; + shearMix = constraint.shearMix; + } + + public void apply () { + update(); + } + + public void update () { + float rotateMix = this.rotateMix, translateMix = this.translateMix, scaleMix = this.scaleMix, shearMix = this.shearMix; + Bone target = this.target; + float ta = target.a, tb = target.b, tc = target.c, td = target.d; + Array bones = this.bones; + for (int i = 0, n = bones.size; i < n; i++) { + Bone bone = bones.get(i); + + if (rotateMix > 0) { + float a = bone.a, b = bone.b, c = bone.c, d = bone.d; + float r = atan2(tc, ta) - atan2(c, a) + data.offsetRotation * degRad; + if (r > PI) + r -= PI2; + else if (r < -PI) r += PI2; + r *= rotateMix; + float cos = cos(r), sin = sin(r); + bone.a = cos * a - sin * c; + bone.b = cos * b - sin * d; + bone.c = sin * a + cos * c; + bone.d = sin * b + cos * d; + } + + if (translateMix > 0) { + Vector2 temp = this.temp; + target.localToWorld(temp.set(data.offsetX, data.offsetY)); + bone.worldX += (temp.x - bone.worldX) * translateMix; + bone.worldY += (temp.y - bone.worldY) * translateMix; + } + + if (scaleMix > 0) { + float bs = (float)Math.sqrt(bone.a * bone.a + bone.c * bone.c); + float ts = (float)Math.sqrt(ta * ta + tc * tc); + float s = bs > 0.00001f ? (bs + (ts - bs + data.offsetScaleX) * scaleMix) / bs : 0; + bone.a *= s; + bone.c *= s; + bs = (float)Math.sqrt(bone.b * bone.b + bone.d * bone.d); + ts = (float)Math.sqrt(tb * tb + td * td); + s = bs > 0.00001f ? (bs + (ts - bs + data.offsetScaleY) * scaleMix) / bs : 0; + bone.b *= s; + bone.d *= s; + } + + if (shearMix > 0) { + float b = bone.b, d = bone.d; + float by = atan2(d, b); + float r = atan2(td, tb) - atan2(tc, ta) - (by - atan2(bone.c, bone.a)); + if (r > PI) + r -= PI2; + else if (r < -PI) r += PI2; + r = by + (r + data.offsetShearY * degRad) * shearMix; + float s = (float)Math.sqrt(b * b + d * d); + bone.b = cos(r) * s; + bone.d = sin(r) * s; + } + } + } + + public Array getBones () { + return bones; + } + + public Bone getTarget () { + return target; + } + + public void setTarget (Bone target) { + this.target = target; + } + + public float getRotateMix () { + return rotateMix; + } + + public void setRotateMix (float rotateMix) { + this.rotateMix = rotateMix; + } + + public float getTranslateMix () { + return translateMix; + } + + public void setTranslateMix (float translateMix) { + this.translateMix = translateMix; + } + + public float getScaleMix () { + return scaleMix; + } + + public void setScaleMix (float scaleMix) { + this.scaleMix = scaleMix; + } + + public float getShearMix () { + return shearMix; + } + + public void setShearMix (float shearMix) { + this.shearMix = shearMix; + } + + public TransformConstraintData getData () { + return data; + } + + public String toString () { + return data.name; + } } diff --git a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/TransformConstraintData.java b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/TransformConstraintData.java index e20700526..5fe3adcbc 100644 --- a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/TransformConstraintData.java +++ b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/TransformConstraintData.java @@ -1,118 +1,148 @@ +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.3 + * + * Copyright (c) 2013-2015, Esoteric Software + * All rights reserved. + * + * You are granted a perpetual, non-exclusive, non-sublicensable and + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), you may not (a) modify, + * translate, adapt or otherwise create derivative works, improvements of the + * Software or develop new applications using the Software or (b) remove, + * delete, alter or obscure any trademarks or any copyright, trademark, patent + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL ESOTERIC SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ -package com.esotericsoftware.spine; - -import com.badlogic.gdx.utils.Array; - -public class TransformConstraintData { - final String name; - final Array bones = new Array(); - BoneData target; - float rotateMix, translateMix, scaleMix, shearMix; - float offsetRotation, offsetX, offsetY, offsetScaleX, offsetScaleY, offsetShearY; - - public TransformConstraintData (String name) { - if (name == null) throw new IllegalArgumentException("name cannot be null."); - this.name = name; - } - - public String getName () { - return name; - } - - public Array getBones () { - return bones; - } - - public BoneData getTarget () { - return target; - } - - public void setTarget (BoneData target) { - if (target == null) throw new IllegalArgumentException("target cannot be null."); - this.target = target; - } - - public float getRotateMix () { - return rotateMix; - } - - public void setRotateMix (float rotateMix) { - this.rotateMix = rotateMix; - } - - public float getTranslateMix () { - return translateMix; - } - - public void setTranslateMix (float translateMix) { - this.translateMix = translateMix; - } - - public float getScaleMix () { - return scaleMix; - } - - public void setScaleMix (float scaleMix) { - this.scaleMix = scaleMix; - } - - public float getShearMix () { - return shearMix; - } - - public void setShearMix (float shearMix) { - this.shearMix = shearMix; - } - - public float getOffsetRotation () { - return offsetRotation; - } - - public void setOffsetRotation (float offsetRotation) { - this.offsetRotation = offsetRotation; - } - - public float getOffsetX () { - return offsetX; - } - - public void setOffsetX (float offsetX) { - this.offsetX = offsetX; - } - - public float getOffsetY () { - return offsetY; - } - - public void setOffsetY (float offsetY) { - this.offsetY = offsetY; - } - - public float getOffsetScaleX () { - return offsetScaleX; - } - - public void setOffsetScaleX (float offsetScaleX) { - this.offsetScaleX = offsetScaleX; - } - - public float getOffsetScaleY () { - return offsetScaleY; - } - - public void setOffsetScaleY (float offsetScaleY) { - this.offsetScaleY = offsetScaleY; - } - - public float getOffsetShearY () { - return offsetShearY; - } - - public void setOffsetShearY (float offsetShearY) { - this.offsetShearY = offsetShearY; - } - - public String toString () { - return name; - } +package com.esotericsoftware.spine; + +import com.badlogic.gdx.utils.Array; + +public class TransformConstraintData { + final String name; + final Array bones = new Array(); + BoneData target; + float rotateMix, translateMix, scaleMix, shearMix; + float offsetRotation, offsetX, offsetY, offsetScaleX, offsetScaleY, offsetShearY; + + public TransformConstraintData (String name) { + if (name == null) throw new IllegalArgumentException("name cannot be null."); + this.name = name; + } + + public String getName () { + return name; + } + + public Array getBones () { + return bones; + } + + public BoneData getTarget () { + return target; + } + + public void setTarget (BoneData target) { + if (target == null) throw new IllegalArgumentException("target cannot be null."); + this.target = target; + } + + public float getRotateMix () { + return rotateMix; + } + + public void setRotateMix (float rotateMix) { + this.rotateMix = rotateMix; + } + + public float getTranslateMix () { + return translateMix; + } + + public void setTranslateMix (float translateMix) { + this.translateMix = translateMix; + } + + public float getScaleMix () { + return scaleMix; + } + + public void setScaleMix (float scaleMix) { + this.scaleMix = scaleMix; + } + + public float getShearMix () { + return shearMix; + } + + public void setShearMix (float shearMix) { + this.shearMix = shearMix; + } + + public float getOffsetRotation () { + return offsetRotation; + } + + public void setOffsetRotation (float offsetRotation) { + this.offsetRotation = offsetRotation; + } + + public float getOffsetX () { + return offsetX; + } + + public void setOffsetX (float offsetX) { + this.offsetX = offsetX; + } + + public float getOffsetY () { + return offsetY; + } + + public void setOffsetY (float offsetY) { + this.offsetY = offsetY; + } + + public float getOffsetScaleX () { + return offsetScaleX; + } + + public void setOffsetScaleX (float offsetScaleX) { + this.offsetScaleX = offsetScaleX; + } + + public float getOffsetScaleY () { + return offsetScaleY; + } + + public void setOffsetScaleY (float offsetScaleY) { + this.offsetScaleY = offsetScaleY; + } + + public float getOffsetShearY () { + return offsetShearY; + } + + public void setOffsetShearY (float offsetShearY) { + this.offsetShearY = offsetShearY; + } + + public String toString () { + return name; + } } diff --git a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/Updatable.java b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/Updatable.java index a9466aba6..1b68393c9 100644 --- a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/Updatable.java +++ b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/Updatable.java @@ -1,6 +1,36 @@ +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.3 + * + * Copyright (c) 2013-2015, Esoteric Software + * All rights reserved. + * + * You are granted a perpetual, non-exclusive, non-sublicensable and + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), you may not (a) modify, + * translate, adapt or otherwise create derivative works, improvements of the + * Software or develop new applications using the Software or (b) remove, + * delete, alter or obscure any trademarks or any copyright, trademark, patent + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL ESOTERIC SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ -package com.esotericsoftware.spine; - -public interface Updatable { - public void update (); +package com.esotericsoftware.spine; + +public interface Updatable { + public void update (); } diff --git a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/utils/SkeletonActor.java b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/utils/SkeletonActor.java index c77c44c4e..b8257f5fc 100644 --- a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/utils/SkeletonActor.java +++ b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/utils/SkeletonActor.java @@ -1,68 +1,98 @@ +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.3 + * + * Copyright (c) 2013-2015, Esoteric Software + * All rights reserved. + * + * You are granted a perpetual, non-exclusive, non-sublicensable and + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), you may not (a) modify, + * translate, adapt or otherwise create derivative works, improvements of the + * Software or develop new applications using the Software or (b) remove, + * delete, alter or obscure any trademarks or any copyright, trademark, patent + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL ESOTERIC SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ -package com.esotericsoftware.spine.utils; - -import com.badlogic.gdx.graphics.Color; -import com.badlogic.gdx.graphics.g2d.Batch; -import com.badlogic.gdx.scenes.scene2d.Actor; -import com.esotericsoftware.spine.AnimationState; -import com.esotericsoftware.spine.Skeleton; -import com.esotericsoftware.spine.SkeletonRenderer; - -/** A scene2d actor that draws a skeleton. */ -public class SkeletonActor extends Actor { - private SkeletonRenderer renderer; - private Skeleton skeleton; - AnimationState state; - - /** Creates an uninitialized SkeletonActor. The renderer, skeleton, and animation state must be set before use. */ - public SkeletonActor () { - } - - public SkeletonActor (SkeletonRenderer renderer, Skeleton skeleton, AnimationState state) { - this.renderer = renderer; - this.skeleton = skeleton; - this.state = state; - } - - public void act (float delta) { - state.update(delta); - state.apply(skeleton); - skeleton.updateWorldTransform(); - super.act(delta); - } - - public void draw (Batch batch, float parentAlpha) { - Color color = skeleton.getColor(); - float oldAlpha = color.a; - skeleton.getColor().a *= parentAlpha; - - skeleton.setPosition(getX(), getY()); - renderer.draw(batch, skeleton); - - color.a = oldAlpha; - } - - public SkeletonRenderer getRenderer () { - return renderer; - } - - public void setRenderer (SkeletonRenderer renderer) { - this.renderer = renderer; - } - - public Skeleton getSkeleton () { - return skeleton; - } - - public void setSkeleton (Skeleton skeleton) { - this.skeleton = skeleton; - } - - public AnimationState getAnimationState () { - return state; - } - - public void setAnimationState (AnimationState state) { - this.state = state; - } +package com.esotericsoftware.spine.utils; + +import com.badlogic.gdx.graphics.Color; +import com.badlogic.gdx.graphics.g2d.Batch; +import com.badlogic.gdx.scenes.scene2d.Actor; +import com.esotericsoftware.spine.AnimationState; +import com.esotericsoftware.spine.Skeleton; +import com.esotericsoftware.spine.SkeletonRenderer; + +/** A scene2d actor that draws a skeleton. */ +public class SkeletonActor extends Actor { + private SkeletonRenderer renderer; + private Skeleton skeleton; + AnimationState state; + + /** Creates an uninitialized SkeletonActor. The renderer, skeleton, and animation state must be set before use. */ + public SkeletonActor () { + } + + public SkeletonActor (SkeletonRenderer renderer, Skeleton skeleton, AnimationState state) { + this.renderer = renderer; + this.skeleton = skeleton; + this.state = state; + } + + public void act (float delta) { + state.update(delta); + state.apply(skeleton); + skeleton.updateWorldTransform(); + super.act(delta); + } + + public void draw (Batch batch, float parentAlpha) { + Color color = skeleton.getColor(); + float oldAlpha = color.a; + skeleton.getColor().a *= parentAlpha; + + skeleton.setPosition(getX(), getY()); + renderer.draw(batch, skeleton); + + color.a = oldAlpha; + } + + public SkeletonRenderer getRenderer () { + return renderer; + } + + public void setRenderer (SkeletonRenderer renderer) { + this.renderer = renderer; + } + + public Skeleton getSkeleton () { + return skeleton; + } + + public void setSkeleton (Skeleton skeleton) { + this.skeleton = skeleton; + } + + public AnimationState getAnimationState () { + return state; + } + + public void setAnimationState (AnimationState state) { + this.state = state; + } } diff --git a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/utils/SkeletonActorPool.java b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/utils/SkeletonActorPool.java index 912205825..d1bb1f587 100644 --- a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/utils/SkeletonActorPool.java +++ b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/utils/SkeletonActorPool.java @@ -1,102 +1,132 @@ +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.3 + * + * Copyright (c) 2013-2015, Esoteric Software + * All rights reserved. + * + * You are granted a perpetual, non-exclusive, non-sublicensable and + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), you may not (a) modify, + * translate, adapt or otherwise create derivative works, improvements of the + * Software or develop new applications using the Software or (b) remove, + * delete, alter or obscure any trademarks or any copyright, trademark, patent + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL ESOTERIC SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ -package com.esotericsoftware.spine.utils; - -import com.badlogic.gdx.graphics.Color; -import com.badlogic.gdx.utils.Array; -import com.badlogic.gdx.utils.Pool; -import com.esotericsoftware.spine.AnimationState; -import com.esotericsoftware.spine.AnimationState.TrackEntry; -import com.esotericsoftware.spine.AnimationStateData; -import com.esotericsoftware.spine.Skeleton; -import com.esotericsoftware.spine.SkeletonData; -import com.esotericsoftware.spine.SkeletonRenderer; -import com.esotericsoftware.spine.Skin; - -public class SkeletonActorPool extends Pool { - private SkeletonRenderer renderer; - SkeletonData skeletonData; - AnimationStateData stateData; - private final Pool skeletonPool; - private final Pool statePool; - private final Array obtained; - - public SkeletonActorPool (SkeletonRenderer renderer, SkeletonData skeletonData, AnimationStateData stateData) { - this(renderer, skeletonData, stateData, 16, Integer.MAX_VALUE); - } - - public SkeletonActorPool (SkeletonRenderer renderer, SkeletonData skeletonData, AnimationStateData stateData, - int initialCapacity, int max) { - super(initialCapacity, max); - - this.renderer = renderer; - this.skeletonData = skeletonData; - this.stateData = stateData; - - obtained = new Array(false, initialCapacity); - - skeletonPool = new Pool(initialCapacity, max) { - protected Skeleton newObject () { - return new Skeleton(SkeletonActorPool.this.skeletonData); - } - - protected void reset (Skeleton skeleton) { - skeleton.setColor(Color.WHITE); - skeleton.setFlip(false, false); - skeleton.setSkin((Skin)null); - skeleton.setSkin(SkeletonActorPool.this.skeletonData.getDefaultSkin()); - skeleton.setToSetupPose(); - } - }; - - statePool = new Pool(initialCapacity, max) { - protected AnimationState newObject () { - return new AnimationState(SkeletonActorPool.this.stateData); - } - - protected void reset (AnimationState state) { - state.clearTracks(); - state.clearListeners(); - } - }; - } - - /** Each obtained skeleton actor that is no longer playing an animation is removed from the stage and returned to the pool. */ - public void freeComplete () { - Array obtained = this.obtained; - outer: - for (int i = obtained.size - 1; i >= 0; i--) { - SkeletonActor actor = obtained.get(i); - Array tracks = actor.state.getTracks(); - for (int ii = 0, nn = tracks.size; ii < nn; ii++) - if (tracks.get(ii) != null) continue outer; - free(actor); - } - } - - protected SkeletonActor newObject () { - SkeletonActor actor = new SkeletonActor(); - actor.setRenderer(renderer); - return actor; - } - - /** This pool keeps a reference to the obtained instance, so it should be returned to the pool via {@link #free(SkeletonActor)} - * , {@link #freeAll(Array)} or {@link #freeComplete()} to avoid leaking memory. */ - public SkeletonActor obtain () { - SkeletonActor actor = super.obtain(); - actor.setSkeleton(skeletonPool.obtain()); - actor.setAnimationState(statePool.obtain()); - obtained.add(actor); - return actor; - } - - protected void reset (SkeletonActor actor) { - actor.remove(); - obtained.removeValue(actor, true); - skeletonPool.free(actor.getSkeleton()); - statePool.free(actor.getAnimationState()); - } - - public Array getObtained () { - return obtained; - } +package com.esotericsoftware.spine.utils; + +import com.badlogic.gdx.graphics.Color; +import com.badlogic.gdx.utils.Array; +import com.badlogic.gdx.utils.Pool; +import com.esotericsoftware.spine.AnimationState; +import com.esotericsoftware.spine.AnimationState.TrackEntry; +import com.esotericsoftware.spine.AnimationStateData; +import com.esotericsoftware.spine.Skeleton; +import com.esotericsoftware.spine.SkeletonData; +import com.esotericsoftware.spine.SkeletonRenderer; +import com.esotericsoftware.spine.Skin; + +public class SkeletonActorPool extends Pool { + private SkeletonRenderer renderer; + SkeletonData skeletonData; + AnimationStateData stateData; + private final Pool skeletonPool; + private final Pool statePool; + private final Array obtained; + + public SkeletonActorPool (SkeletonRenderer renderer, SkeletonData skeletonData, AnimationStateData stateData) { + this(renderer, skeletonData, stateData, 16, Integer.MAX_VALUE); + } + + public SkeletonActorPool (SkeletonRenderer renderer, SkeletonData skeletonData, AnimationStateData stateData, + int initialCapacity, int max) { + super(initialCapacity, max); + + this.renderer = renderer; + this.skeletonData = skeletonData; + this.stateData = stateData; + + obtained = new Array(false, initialCapacity); + + skeletonPool = new Pool(initialCapacity, max) { + protected Skeleton newObject () { + return new Skeleton(SkeletonActorPool.this.skeletonData); + } + + protected void reset (Skeleton skeleton) { + skeleton.setColor(Color.WHITE); + skeleton.setFlip(false, false); + skeleton.setSkin((Skin)null); + skeleton.setSkin(SkeletonActorPool.this.skeletonData.getDefaultSkin()); + skeleton.setToSetupPose(); + } + }; + + statePool = new Pool(initialCapacity, max) { + protected AnimationState newObject () { + return new AnimationState(SkeletonActorPool.this.stateData); + } + + protected void reset (AnimationState state) { + state.clearTracks(); + state.clearListeners(); + } + }; + } + + /** Each obtained skeleton actor that is no longer playing an animation is removed from the stage and returned to the pool. */ + public void freeComplete () { + Array obtained = this.obtained; + outer: + for (int i = obtained.size - 1; i >= 0; i--) { + SkeletonActor actor = obtained.get(i); + Array tracks = actor.state.getTracks(); + for (int ii = 0, nn = tracks.size; ii < nn; ii++) + if (tracks.get(ii) != null) continue outer; + free(actor); + } + } + + protected SkeletonActor newObject () { + SkeletonActor actor = new SkeletonActor(); + actor.setRenderer(renderer); + return actor; + } + + /** This pool keeps a reference to the obtained instance, so it should be returned to the pool via {@link #free(SkeletonActor)} + * , {@link #freeAll(Array)} or {@link #freeComplete()} to avoid leaking memory. */ + public SkeletonActor obtain () { + SkeletonActor actor = super.obtain(); + actor.setSkeleton(skeletonPool.obtain()); + actor.setAnimationState(statePool.obtain()); + obtained.add(actor); + return actor; + } + + protected void reset (SkeletonActor actor) { + actor.remove(); + obtained.removeValue(actor, true); + skeletonPool.free(actor.getSkeleton()); + statePool.free(actor.getAnimationState()); + } + + public Array getObtained () { + return obtained; + } } diff --git a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/utils/SkeletonPool.java b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/utils/SkeletonPool.java index 5fd2cecbf..9b5c4575f 100644 --- a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/utils/SkeletonPool.java +++ b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/utils/SkeletonPool.java @@ -1,28 +1,58 @@ +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.3 + * + * Copyright (c) 2013-2015, Esoteric Software + * All rights reserved. + * + * You are granted a perpetual, non-exclusive, non-sublicensable and + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), you may not (a) modify, + * translate, adapt or otherwise create derivative works, improvements of the + * Software or develop new applications using the Software or (b) remove, + * delete, alter or obscure any trademarks or any copyright, trademark, patent + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL ESOTERIC SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ -package com.esotericsoftware.spine.utils; - -import com.badlogic.gdx.utils.Pool; -import com.esotericsoftware.spine.Skeleton; -import com.esotericsoftware.spine.SkeletonData; - -public class SkeletonPool extends Pool { - private SkeletonData skeletonData; - - public SkeletonPool (SkeletonData skeletonData) { - this.skeletonData = skeletonData; - } - - public SkeletonPool (SkeletonData skeletonData, int initialCapacity) { - super(initialCapacity); - this.skeletonData = skeletonData; - } - - public SkeletonPool (SkeletonData skeletonData, int initialCapacity, int max) { - super(initialCapacity, max); - this.skeletonData = skeletonData; - } - - protected Skeleton newObject () { - return new Skeleton(skeletonData); - } +package com.esotericsoftware.spine.utils; + +import com.badlogic.gdx.utils.Pool; +import com.esotericsoftware.spine.Skeleton; +import com.esotericsoftware.spine.SkeletonData; + +public class SkeletonPool extends Pool { + private SkeletonData skeletonData; + + public SkeletonPool (SkeletonData skeletonData) { + this.skeletonData = skeletonData; + } + + public SkeletonPool (SkeletonData skeletonData, int initialCapacity) { + super(initialCapacity); + this.skeletonData = skeletonData; + } + + public SkeletonPool (SkeletonData skeletonData, int initialCapacity, int max) { + super(initialCapacity, max); + this.skeletonData = skeletonData; + } + + protected Skeleton newObject () { + return new Skeleton(skeletonData); + } } diff --git a/spine-libgdx/spine-skeletonviewer/src/com/esotericsoftware/spine/JsonRollback.java b/spine-libgdx/spine-skeletonviewer/src/com/esotericsoftware/spine/JsonRollback.java index ead3b11f0..abc2aabf2 100644 --- a/spine-libgdx/spine-skeletonviewer/src/com/esotericsoftware/spine/JsonRollback.java +++ b/spine-libgdx/spine-skeletonviewer/src/com/esotericsoftware/spine/JsonRollback.java @@ -1,114 +1,144 @@ +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.3 + * + * Copyright (c) 2013-2015, Esoteric Software + * All rights reserved. + * + * You are granted a perpetual, non-exclusive, non-sublicensable and + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), you may not (a) modify, + * translate, adapt or otherwise create derivative works, improvements of the + * Software or develop new applications using the Software or (b) remove, + * delete, alter or obscure any trademarks or any copyright, trademark, patent + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL ESOTERIC SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ -package com.esotericsoftware.spine; - -import com.badlogic.gdx.files.FileHandle; -import com.badlogic.gdx.utils.Array; -import com.badlogic.gdx.utils.Json; -import com.badlogic.gdx.utils.JsonValue; -import com.badlogic.gdx.utils.JsonWriter.OutputType; - -/** Takes Spine JSON data and transforms it to work with an older version of Spine. It supports going from version 3.3.xx to - * 2.1.27. - *

- * Data can be exported from a Spine project, processed with JsonRollback, then imported into an older version of Spine. However, - * JsonRollback may remove data for features not supported by the older Spine version. Because of this, JsonRollback is only - * intended for situations were work was accidentally done with a newer Spine version and now needs to be imported into an older - * Spine version (eg, if runtime support for the new version is not yet available). - *

- * Animators should freeze their Spine editor version to match the Spine version supported by the runtime being used. Only when - * the runtime is updated to support a newer Spine version should animators update their Spine editor version to match. */ -public class JsonRollback { - static public void main (String[] args) throws Exception { - if (args.length == 0) { - System.out.println("Usage: [outputFile]"); - System.exit(0); - } - - JsonValue root = new Json().fromJson(null, new FileHandle(args[0])); - - // In 3.2 skinnedmesh was renamed to weightedmesh. - setValue(root, "skinnedmesh", "skins", "*", "*", "*", "type", "weightedmesh"); - - // In 3.2 shear was added. - delete(root, "animations", "*", "bones", "*", "shear"); - - // In 3.3 ffd was renamed to deform. - rename(root, "ffd", "animations", "*", "deform"); - - // In 3.3 mesh is now a single type, previously they were skinnedmesh if they had weights. - for (JsonValue value : find(root, new Array(), 0, "skins", "*", "*", "*", "type", "mesh")) - if (value.parent.get("uvs").size != value.parent.get("vertices").size) value.set("skinnedmesh"); - - // In 3.3 linkedmesh is now a single type, previously they were linkedweightedmesh if they had weights. - for (JsonValue value : find(root, new Array(), 0, "skins", "*", "*", "*", "type", "linkedmesh")) { - String slot = value.parent.parent.name.replaceAll("", ""); - String skinName = value.parent.getString("skin", "default"); - String parentName = value.parent.getString("parent"); - if (find(root, new Array(), 0, - ("skins~~" + skinName + "~~" + slot + "~~" + parentName + "~~type~~skinnedmesh").split("~~")).size > 0) - value.set("weightedlinkedmesh"); - } - - // In 3.3 bounding boxes can be weighted. - for (JsonValue value : find(root, new Array(), 0, "skins", "*", "*", "*", "type", "boundingbox")) - if (value.parent.getInt("vertexCount") * 2 != value.parent.get("vertices").size) - value.parent.parent.remove(value.parent.name); - - // In 3.3 paths were added. - for (JsonValue value : find(root, new Array(), 0, "skins", "*", "*", "*", "type", "path")) { - String attachment = value.parent.name; - value.parent.parent.remove(attachment); - String slot = value.parent.parent.name; - // Also remove path deform timelines. - delete(root, "animations", "*", "ffd", "*", slot, attachment); - } - - // In 3.3 IK constraint timelines no longer require bendPositive. - for (JsonValue value : find(root, new Array(), 0, "animations", "*", "ik", "*")) - for (JsonValue child = value.child; child != null; child = child.next) - if (!child.has("bendPositive")) child.addChild("bendPositive", new JsonValue(true)); - - // In 3.3 transform constraints can have more than 1 bone. - for (JsonValue child = root.getChild("transform"); child != null; child = child.next) { - JsonValue bones = child.remove("bones"); - if (bones != null) child.addChild("bone", new JsonValue(bones.child.asString())); - } - - if (args.length > 1) - new FileHandle(args[1]).writeString(root.prettyPrint(OutputType.json, 130), false, "UTF-8"); - else - System.out.println(root.prettyPrint(OutputType.json, 130)); - } - - static void setValue (JsonValue root, String newValue, String... path) { - for (JsonValue value : find(root, new Array(), 0, path)) - value.set(newValue); - } - - static void rename (JsonValue root, String newName, String... path) { - for (JsonValue value : find(root, new Array(), 0, path)) - value.name = newName; - } - - static void delete (JsonValue root, String... path) { - for (JsonValue value : find(root, new Array(), 0, path)) - value.parent.remove(value.name); - } - - static Array find (JsonValue current, Array values, int index, String... path) { - String name = path[index]; - if (current.name == null) { - if (name.equals("*") && index == path.length - 1) - values.add(current); - else if (current.has(name)) return find(current.get(name), values, index, path); - } else if (name.equals("*") || current.name.equals(name)) { - if (++index == path.length || (index == path.length - 1 && current.isString() && current.asString().equals(path[index]))) - values.add(current); - else { - for (JsonValue child = current.child; child != null; child = child.next) - find(child, values, index, path); - } - } - return values; - } +package com.esotericsoftware.spine; + +import com.badlogic.gdx.files.FileHandle; +import com.badlogic.gdx.utils.Array; +import com.badlogic.gdx.utils.Json; +import com.badlogic.gdx.utils.JsonValue; +import com.badlogic.gdx.utils.JsonWriter.OutputType; + +/** Takes Spine JSON data and transforms it to work with an older version of Spine. It supports going from version 3.3.xx to + * 2.1.27. + *

+ * Data can be exported from a Spine project, processed with JsonRollback, then imported into an older version of Spine. However, + * JsonRollback may remove data for features not supported by the older Spine version. Because of this, JsonRollback is only + * intended for situations were work was accidentally done with a newer Spine version and now needs to be imported into an older + * Spine version (eg, if runtime support for the new version is not yet available). + *

+ * Animators should freeze their Spine editor version to match the Spine version supported by the runtime being used. Only when + * the runtime is updated to support a newer Spine version should animators update their Spine editor version to match. */ +public class JsonRollback { + static public void main (String[] args) throws Exception { + if (args.length == 0) { + System.out.println("Usage: [outputFile]"); + System.exit(0); + } + + JsonValue root = new Json().fromJson(null, new FileHandle(args[0])); + + // In 3.2 skinnedmesh was renamed to weightedmesh. + setValue(root, "skinnedmesh", "skins", "*", "*", "*", "type", "weightedmesh"); + + // In 3.2 shear was added. + delete(root, "animations", "*", "bones", "*", "shear"); + + // In 3.3 ffd was renamed to deform. + rename(root, "ffd", "animations", "*", "deform"); + + // In 3.3 mesh is now a single type, previously they were skinnedmesh if they had weights. + for (JsonValue value : find(root, new Array(), 0, "skins", "*", "*", "*", "type", "mesh")) + if (value.parent.get("uvs").size != value.parent.get("vertices").size) value.set("skinnedmesh"); + + // In 3.3 linkedmesh is now a single type, previously they were linkedweightedmesh if they had weights. + for (JsonValue value : find(root, new Array(), 0, "skins", "*", "*", "*", "type", "linkedmesh")) { + String slot = value.parent.parent.name.replaceAll("", ""); + String skinName = value.parent.getString("skin", "default"); + String parentName = value.parent.getString("parent"); + if (find(root, new Array(), 0, + ("skins~~" + skinName + "~~" + slot + "~~" + parentName + "~~type~~skinnedmesh").split("~~")).size > 0) + value.set("weightedlinkedmesh"); + } + + // In 3.3 bounding boxes can be weighted. + for (JsonValue value : find(root, new Array(), 0, "skins", "*", "*", "*", "type", "boundingbox")) + if (value.parent.getInt("vertexCount") * 2 != value.parent.get("vertices").size) + value.parent.parent.remove(value.parent.name); + + // In 3.3 paths were added. + for (JsonValue value : find(root, new Array(), 0, "skins", "*", "*", "*", "type", "path")) { + String attachment = value.parent.name; + value.parent.parent.remove(attachment); + String slot = value.parent.parent.name; + // Also remove path deform timelines. + delete(root, "animations", "*", "ffd", "*", slot, attachment); + } + + // In 3.3 IK constraint timelines no longer require bendPositive. + for (JsonValue value : find(root, new Array(), 0, "animations", "*", "ik", "*")) + for (JsonValue child = value.child; child != null; child = child.next) + if (!child.has("bendPositive")) child.addChild("bendPositive", new JsonValue(true)); + + // In 3.3 transform constraints can have more than 1 bone. + for (JsonValue child = root.getChild("transform"); child != null; child = child.next) { + JsonValue bones = child.remove("bones"); + if (bones != null) child.addChild("bone", new JsonValue(bones.child.asString())); + } + + if (args.length > 1) + new FileHandle(args[1]).writeString(root.prettyPrint(OutputType.json, 130), false, "UTF-8"); + else + System.out.println(root.prettyPrint(OutputType.json, 130)); + } + + static void setValue (JsonValue root, String newValue, String... path) { + for (JsonValue value : find(root, new Array(), 0, path)) + value.set(newValue); + } + + static void rename (JsonValue root, String newName, String... path) { + for (JsonValue value : find(root, new Array(), 0, path)) + value.name = newName; + } + + static void delete (JsonValue root, String... path) { + for (JsonValue value : find(root, new Array(), 0, path)) + value.parent.remove(value.name); + } + + static Array find (JsonValue current, Array values, int index, String... path) { + String name = path[index]; + if (current.name == null) { + if (name.equals("*") && index == path.length - 1) + values.add(current); + else if (current.has(name)) return find(current.get(name), values, index, path); + } else if (name.equals("*") || current.name.equals(name)) { + if (++index == path.length || (index == path.length - 1 && current.isString() && current.asString().equals(path[index]))) + values.add(current); + else { + for (JsonValue child = current.child; child != null; child = child.next) + find(child, values, index, path); + } + } + return values; + } } diff --git a/spine-love/README.md b/spine-love/README.md index 16b6a2984..281abb6dc 100644 --- a/spine-love/README.md +++ b/spine-love/README.md @@ -10,9 +10,9 @@ The Spine Runtimes are developed with the intent to be used with data exported f ## Spine version -spine-love works with data exported from Spine 2.1.27. Updating spine-love to [v3.0](https://trello.com/c/tF8UykBM/72-update-runtimes-to-support-v3-0-skewing-scale), [v3.1](https://trello.com/c/bERJAFEq/73-update-runtimes-to-support-v3-1-linked-meshes), [v3.2](https://github.com/EsotericSoftware/spine-runtimes/issues/586), and [v3.3](https://github.com/EsotericSoftware/spine-runtimes/issues/613) is in progress. +spine-love works with data exported from the latst Spine version. -spine-love supports all Spine features except for rendering meshes. +spine-love supports all Spine features except for blending modes other than normal. spine-love does not yet support loading the binary format. diff --git a/spine-love/data/goblins-mesh.json b/spine-love/data/goblins-mesh.json new file mode 100644 index 000000000..8119a57a0 --- /dev/null +++ b/spine-love/data/goblins-mesh.json @@ -0,0 +1,1082 @@ +{ +"skeleton": { "hash": "3Z6FWT/Kylgd8cbSWBEwAsOcPEM", "spine": "3.4.02", "width": 266.87, "height": 349.55, "images": "./images/" }, +"bones": [ + { "name": "root" }, + { "name": "hip", "parent": "root", "x": 0.64, "y": 114.41 }, + { "name": "torso", "parent": "hip", "length": 85.82, "rotation": 93.92, "x": -6.42, "y": 1.97 }, + { "name": "neck", "parent": "torso", "length": 18.38, "rotation": -1.51, "x": 81.67, "y": -6.34 }, + { "name": "head", "parent": "neck", "length": 68.28, "rotation": -13.92, "x": 20.93, "y": 11.59 }, + { "name": "left shoulder", "parent": "torso", "length": 35.43, "rotation": -156.96, "x": 74.04, "y": -20.38 }, + { "name": "left arm", "parent": "left shoulder", "length": 35.62, "rotation": 28.16, "x": 37.85, "y": -2.34 }, + { "name": "left upper leg", "parent": "hip", "length": 50.39, "rotation": -89.09, "x": 14.45, "y": 2.81 }, + { "name": "left lower leg", "parent": "left upper leg", "length": 49.89, "rotation": -16.65, "x": 56.34, "y": 0.98 }, + { "name": "left foot", "parent": "left lower leg", "length": 46.5, "rotation": 102.43, "x": 58.94, "y": -7.61 }, + { "name": "left hand", "parent": "left arm", "length": 11.52, "rotation": 2.7, "x": 35.62, "y": 0.07 }, + { "name": "pelvis", "parent": "hip", "x": 1.41, "y": -6.57 }, + { "name": "right shoulder", "parent": "torso", "length": 37.24, "rotation": 133.88, "x": 76.02, "y": 18.14 }, + { "name": "right arm", "parent": "right shoulder", "length": 36.74, "rotation": 36.32, "x": 37.6, "y": 0.31 }, + { "name": "right upper leg", "parent": "hip", "length": 42.45, "rotation": -97.49, "x": -20.07, "y": -6.83 }, + { "name": "right lower leg", "parent": "right upper leg", "length": 58.52, "rotation": -14.34, "x": 42.99, "y": -0.61 }, + { "name": "right foot", "parent": "right lower leg", "length": 45.45, "rotation": 110.3, "x": 64.88, "y": 0.04 }, + { "name": "right hand", "parent": "right arm", "length": 15.32, "rotation": 2.35, "x": 36.9, "y": 0.34 }, + { "name": "spear1", "parent": "left hand", "length": 65.06, "rotation": 102.43, "x": 0.48, "y": 17.03 }, + { "name": "spear2", "parent": "spear1", "length": 61.41, "rotation": 0.9, "x": 65.05, "y": 0.04 }, + { "name": "spear3", "parent": "spear2", "length": 76.79, "rotation": -0.9, "x": 61.88, "y": 0.57 } +], +"slots": [ + { "name": "left shoulder", "bone": "left shoulder", "attachment": "left shoulder" }, + { "name": "left arm", "bone": "left arm", "attachment": "left arm" }, + { "name": "left hand item", "bone": "left hand", "attachment": "spear" }, + { "name": "left hand", "bone": "left hand", "attachment": "left hand" }, + { "name": "left foot", "bone": "left foot", "attachment": "left foot" }, + { "name": "left lower leg", "bone": "left lower leg", "attachment": "left lower leg" }, + { "name": "left upper leg", "bone": "left upper leg", "attachment": "left upper leg" }, + { "name": "neck", "bone": "neck", "attachment": "neck" }, + { "name": "torso", "bone": "torso", "attachment": "torso" }, + { "name": "pelvis", "bone": "pelvis", "attachment": "pelvis" }, + { "name": "right foot", "bone": "right foot", "attachment": "right foot" }, + { "name": "right lower leg", "bone": "right lower leg", "attachment": "right lower leg" }, + { "name": "undie straps", "bone": "pelvis", "attachment": "undie straps" }, + { "name": "undies", "bone": "pelvis", "attachment": "undies" }, + { "name": "right upper leg", "bone": "right upper leg", "attachment": "right upper leg" }, + { "name": "head", "bone": "head", "attachment": "head" }, + { "name": "eyes", "bone": "head" }, + { "name": "right shoulder", "bone": "right shoulder", "attachment": "right shoulder" }, + { "name": "right arm", "bone": "right arm", "attachment": "right arm" }, + { "name": "right hand thumb", "bone": "right hand", "attachment": "right hand thumb" }, + { "name": "right hand item", "bone": "right hand", "attachment": "dagger" }, + { "name": "right hand", "bone": "right hand", "attachment": "right hand" }, + { "name": "right hand item 2", "bone": "right hand", "attachment": "shield" } +], +"skins": { + "default": { + "left hand item": { + "dagger": { "x": 7.88, "y": -23.45, "rotation": 10.47, "width": 26, "height": 108 }, + "spear": { + "type": "mesh", + "uvs": [ 1, 0.11236, 0.77096, 0.13278, 0.76608, 0.21781, 0.75642, 0.386, 0.74723, 0.54607, 0.72117, 1, 0.28838, 1, 0.24208, 0.54327, 0.22589, 0.38361, 0.2089, 0.21605, 0.20043, 0.13242, 0, 0.11519, 0.4527, 0, 0.58399, 0 ], + "triangles": [ 5, 6, 4, 6, 7, 4, 4, 7, 3, 2, 9, 1, 9, 10, 1, 10, 12, 1, 12, 13, 1, 1, 13, 0, 10, 11, 12, 3, 8, 2, 8, 9, 2, 7, 8, 3 ], + "vertices": [ 1, 20, 38.54, -10.88, 1, 1, 20, 30.97, -5.93, 1, 2, 19, 61.48, -5.58, 0.5116, 20, -0.31, -6.16, 0.48839, 2, 18, 64.73, -5.03, 0.50272, 19, -0.4, -5.06, 0.49728, 1, 10, 4.56, 23.91, 1, 1, 10, 41.7, -138.95, 1, 1, 10, 32.41999, -141.1, 1, 1, 10, -6.49, 22.4, 1, 2, 18, 65.48, 6.64, 0.50272, 19, 0.52999, 6.59, 0.49728, 2, 19, 62.18, 6.66, 0.5116, 20, 0.2, 6.09, 0.48839, 1, 20, 30.96, 6.61, 1, 1, 20, 37.25999, 11.09, 1, 1, 20, 79.75, 1.59, 1, 1, 20, 79.78, -1.29, 1 ], + "hull": 14, + "edges": [ 24, 22, 22, 20, 10, 12, 2, 0, 24, 26, 0, 26, 8, 10, 12, 14, 6, 8, 14, 16, 2, 4, 4, 6, 16, 18, 18, 20, 20, 2 ], + "width": 22, + "height": 368 + } + }, + "right hand item": { + "dagger": { + "type": "mesh", + "uvs": [ 0.78091, 0.38453, 1, 0.38405, 1, 0.44881, 0.73953, 0.4687, 0.74641, 0.81344, 0.34022, 1, 0.15434, 1, 0.11303, 0.78858, 0.23007, 0.47367, 0, 0.45047, 0, 0.38621, 0.22367, 0.38573, 0.24384, 0, 1, 0 ], + "triangles": [ 0, 12, 13, 11, 12, 0, 0, 1, 2, 9, 10, 11, 3, 11, 0, 3, 0, 2, 8, 11, 3, 9, 11, 8, 5, 6, 7, 4, 5, 8, 4, 8, 3, 5, 7, 8 ], + "vertices": [ 15.49, -12.82, 21.13, -13.57, 20.16, -20.49, 13.15, -21.67, 8.13, -58.56, -5.13, -77.04, -9.92, -76.36, -7.79, -53.6, -0.03, -20.36, -5.6, -17.04, -4.63, -10.17, 1.12, -10.93, 7.46, 30.24, 26.93, 27.49 ], + "hull": 14, + "edges": [ 22, 20, 24, 26, 22, 24, 2, 0, 0, 22, 0, 26, 12, 14, 14, 16, 18, 20, 16, 18, 2, 4, 4, 6, 6, 8, 10, 12, 8, 10 ], + "width": 26, + "height": 108 + } + }, + "right hand item 2": { + "shield": { "rotation": 93.49, "width": 70, "height": 72 } + } + }, + "goblin": { + "eyes": { + "eyes closed": { "name": "goblin/eyes-closed", "x": 29.19, "y": -24.89, "rotation": -88.92, "width": 34, "height": 12 } + }, + "head": { + "head": { + "name": "goblin/head", + "type": "mesh", + "uvs": [ 0, 0.60494, 0.14172, 0.5145, 0.24218, 0.55229, 0.32667, 0.67806, 0.37969, 0.79352, 0.53505, 0.93014, 0.86056, 1, 0.94071, 0.94169, 0.92098, 0.69923, 0.9888, 0.65497, 0.99003, 0.51643, 0.89632, 0.43561, 0.94487, 0.41916, 1, 0.39713, 1, 0.2836, 0.94017, 0.27027, 0.87906, 0.25666, 0.80754, 0.16044, 0.66698, 0.01997, 0.4734, 0.01805, 0.29215, 0.19893, 0.25392, 0.31823, 0.09117, 0.324, 0, 0.44331, 0.43271, 0.69153, 0.466, 0.47794, 0.35996, 0.31246, 0.73473, 0.68593, 0.72215, 0.57425, 0.88179, 0.5583, 0.80267, 0.51015 ], + "triangles": [ 5, 27, 6, 7, 27, 8, 7, 6, 27, 4, 24, 5, 5, 24, 27, 4, 3, 24, 27, 29, 8, 8, 29, 9, 24, 28, 27, 24, 25, 28, 24, 3, 25, 29, 28, 30, 29, 27, 28, 25, 2, 26, 25, 3, 2, 9, 29, 10, 0, 23, 1, 28, 25, 30, 29, 11, 10, 29, 30, 11, 2, 21, 26, 2, 1, 21, 23, 22, 1, 1, 22, 21, 30, 16, 11, 30, 17, 16, 30, 25, 17, 17, 26, 18, 18, 26, 19, 26, 17, 25, 11, 15, 12, 11, 16, 15, 12, 15, 13, 15, 14, 13, 21, 20, 26, 26, 20, 19 ], + "vertices": [ 14.56, 50.42, 23.12, 35.47, 17.45999, 26.36, 11.57, 16.86, 3.74, 11.71, -5.89, -3.91, -11.83, -37.23, -8.31, -45.63, 7.75, -44.24, 10.39, -51.33, 19.52, -51.82, 25.21, -43.15, 26.12, -47.43, 27.35, -53.16, 34.84, -53.46, 35.96, -47.33, 37.11, -41.08, 43.75, -33.97, 53.58, -19.87, 54.5, 0.03, 43.31, 19.16, 35.59999, 23.41, 35.89, 40.16999, 28.39, 49.87, 10.25, 5.99, 24.2, 2, 35.55, 12.48, 9.39, -25.1, 16.79999, -24.31, 17.2, -40.65, 20.68, -33.02 ], + "hull": 24, + "edges": [ 0, 2, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 18, 20, 20, 22, 26, 28, 32, 34, 34, 36, 36, 38, 38, 40, 40, 42, 42, 44, 44, 46, 0, 46, 6, 48, 48, 50, 50, 52, 52, 42, 2, 4, 4, 6, 4, 52, 2, 44, 22, 32, 22, 24, 24, 26, 28, 30, 30, 32, 24, 30, 16, 54, 54, 56, 20, 58, 58, 54, 16, 58, 22, 60, 60, 56, 58, 60 ], + "width": 103, + "height": 66 + } + }, + "left arm": { + "left arm": { + "name": "goblin/left-arm", + "type": "mesh", + "uvs": [ 0.68992, 0.29284, 1, 0.46364, 1, 0.74643, 0.84089, 1, 0.66344, 1, 0.33765, 0.64284, 0, 0.44124, 0, 0, 0.34295, 0 ], + "triangles": [ 3, 4, 2, 4, 5, 2, 5, 0, 2, 0, 1, 2, 0, 5, 8, 5, 6, 8, 6, 7, 8 ], + "vertices": [ 18.6, 8.81, 32.18999, 10.31, 38.02, 1.62, 38.08, -9.63, 32.31, -13.49, 14.37, -9.62, -0.75, -10.78, -9.84, 2.77, 1.29, 10.25 ], + "hull": 9, + "edges": [ 14, 16, 16, 0, 0, 2, 2, 4, 6, 4, 6, 8, 8, 10, 12, 14, 10, 12 ], + "width": 37, + "height": 35 + } + }, + "left foot": { + "left foot": { + "name": "goblin/left-foot", + "type": "mesh", + "uvs": [ 0.15733, 0.31873, 0.08195, 0.78502, 0.15884, 0.99366, 0.41633, 0.96804, 0.68822, 0.97636, 1, 0.96388, 0.99385, 0.73501, 0.85294, 0.51862, 0.61479, 0.31056, 0.46991, 0, 0.48032, 0.75604, 0.75994, 0.77706 ], + "triangles": [ 0, 9, 8, 10, 0, 8, 10, 8, 7, 11, 10, 7, 11, 7, 6, 1, 0, 10, 11, 6, 5, 3, 1, 10, 4, 10, 11, 4, 11, 5, 3, 10, 4, 2, 1, 3 ], + "vertices": [ 2.28, 13.07, -1.76, -1.64, 3.59, -7.8, 20.25, -6.04, 37.91, -5.27, 58.12, -3.71, 57.31, 3.34, 47.78, 9.51, 31.95, 15.05, 21.99, 24.11, 24.03, 0.75, 42.21, 1.16 ], + "hull": 10, + "edges": [ 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 0, 18, 6, 20, 20, 16, 2, 20, 8, 22, 22, 14, 20, 22, 22, 10 ], + "width": 65, + "height": 31 + } + }, + "left hand": { + "left hand": { + "name": "goblin/left-hand", + "type": "mesh", + "uvs": [ 0.518, 0.12578, 1, 0.16285, 0.99788, 0.50578, 0.69745, 1, 0.37445, 1, 0, 0.80051, 0, 0.42792, 0.17601, 0, 0.43567, 0 ], + "triangles": [ 2, 0, 1, 0, 5, 6, 6, 7, 0, 0, 7, 8, 3, 4, 0, 4, 5, 0, 2, 3, 0 ], + "vertices": [ -3.11, 15.42, 10.83, 22.27, 15.5, 14.55, 18.35, -8.96, 9.47999, -14.32, -4.58, -14.3, -11.63, -2.63, -14.89, 13.68, -7.75, 17.99 ], + "hull": 9, + "edges": [ 16, 0, 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 14, 16, 12, 14 ], + "width": 36, + "height": 41 + } + }, + "left lower leg": { + "left lower leg": { + "name": "goblin/left-lower-leg", + "type": "mesh", + "uvs": [ 0.95508, 0.20749, 0.81927, 0.65213, 0.94754, 0.77308, 0.67842, 0.97346, 0.46463, 1, 0.26845, 1, 0.04963, 0.90706, 0.2106, 0.60115, 0.07478, 0.40195, 0.18545, 0, 0.28857, 0 ], + "triangles": [ 10, 8, 9, 1, 7, 10, 7, 8, 10, 0, 1, 10, 1, 4, 7, 3, 1, 2, 5, 6, 7, 7, 4, 5, 1, 3, 4 ], + "vertices": [ -0.19, 6.82, 30.97, 10.96, 37.97, 17.33, 53.88, 12.6, 57.58, 6.31, 59.34, 0.08, 55.04, -8.63, 32.99, -9.33, 20.79, -17.43, -7.27, -21.56, -8.18999, -18.29 ], + "hull": 11, + "edges": [ 20, 0, 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 18, 20, 16, 18 ], + "width": 33, + "height": 70 + } + }, + "left shoulder": { + "left shoulder": { + "name": "goblin/left-shoulder", + "type": "mesh", + "uvs": [ 0.7377, 0.40692, 1, 0.75237, 1, 1, 0.62046, 1, 0.26184, 0.56601, 0, 0.29783, 0, 0, 0.44115, 0 ], + "triangles": [ 3, 1, 2, 3, 0, 1, 3, 4, 0, 4, 7, 0, 4, 5, 7, 5, 6, 7 ], + "vertices": [ 15.18, 5.74, 32.16999, 5.32, 41.79, 0.21, 36.63, -9.5, 14.88, -9.72, 0.9, -10.89, -10.66, -4.73999, -4.66, 6.54 ], + "hull": 8, + "edges": [ 12, 14, 14, 0, 4, 2, 0, 2, 4, 6, 6, 8, 10, 12, 8, 10 ], + "width": 29, + "height": 44 + } + }, + "left upper leg": { + "left upper leg": { + "name": "goblin/left-upper-leg", + "type": "mesh", + "uvs": [ 1, 0.12167, 1, 0.54873, 0.91067, 0.78907, 0.76567, 1, 0.3087, 0.9579, 0, 0.68777, 0, 0.219, 0.51961, 0, 0.87552, 0 ], + "triangles": [ 7, 8, 0, 5, 6, 7, 0, 1, 7, 4, 5, 7, 1, 4, 7, 2, 4, 1, 3, 4, 2 ], + "vertices": [ 2.33, 13.06, 33.5, 12.57, 51, 9.34, 66.32, 4.31, 63, -10.71, 43.13, -20.58, 8.91, -20.04, -6.79, -2.64, -6.61, 9.1 ], + "hull": 9, + "edges": [ 10, 8, 8, 6, 6, 4, 4, 2, 10, 12, 12, 14, 14, 16, 2, 0, 16, 0 ], + "width": 33, + "height": 73 + } + }, + "neck": { + "neck": { + "name": "goblin/neck", + "type": "mesh", + "uvs": [ 0.81967, 0.27365, 0.92101, 0.82048, 0.47134, 1, 0.15679, 0.9354, 0, 0.7556, 0.19268, 0.51833, 0.15468, 0.35706, 0, 0.21989, 0.13568, 0, 0.68878, 0, 0.70145, 0.53872 ], + "triangles": [ 3, 5, 2, 2, 10, 1, 2, 5, 10, 3, 4, 5, 10, 0, 1, 0, 10, 6, 10, 5, 6, 7, 8, 6, 6, 9, 0, 6, 8, 9 ], + "vertices": [ 18.62, -11.65, -3.98, -13.85, -10.28, 2.76, -6.91, 13.89, 0.8, 19.04999, 10.06, 11.51, 16.74, 12.45, 22.71, 17.64, 31.4, 12.19, 30.12, -7.67, 8.05, -6.71 ], + "hull": 10, + "edges": [ 14, 12, 12, 10, 10, 8, 8, 6, 6, 4, 4, 2, 2, 20, 20, 0, 0, 18, 16, 18, 14, 16, 0, 2 ], + "width": 36, + "height": 41 + } + }, + "pelvis": { + "pelvis": { + "name": "goblin/pelvis", + "type": "mesh", + "uvs": [ 1, 1, 0, 1, 0, 0, 1, 0 ], + "triangles": [ 1, 2, 3, 1, 3, 0 ], + "vertices": [ 25.38, -20.73, -36.61, -20.73, -36.61, 22.26, 25.38, 22.26 ], + "hull": 4, + "edges": [ 0, 2, 2, 4, 4, 6, 0, 6 ], + "width": 62, + "height": 43 + } + }, + "right arm": { + "right arm": { + "name": "goblin/right-arm", + "type": "mesh", + "uvs": [ 1, 0.09223, 1, 0.8501, 0.72058, 1, 0.24384, 1, 0, 0.86558, 0.20822, 0.10919, 0.50903, 0, 0.85342, 0 ], + "triangles": [ 1, 2, 6, 6, 2, 5, 1, 6, 0, 4, 5, 3, 2, 3, 5, 6, 7, 0 ], + "vertices": [ -4.75, 8.89, 33.03, 11.74, 40.99, 5.89, 41.81, -5.03, 35.53, -11.13, -2.53, -9.2, -8.5, -2.71, -9.09, 5.17999 ], + "hull": 8, + "edges": [ 8, 6, 4, 6, 4, 2, 12, 14, 2, 0, 14, 0, 10, 12, 8, 10 ], + "width": 23, + "height": 50 + } + }, + "right foot": { + "right foot": { + "name": "goblin/right-foot", + "type": "mesh", + "uvs": [ 0.40851, 0.0047, 0.59087, 0.33404, 0.75959, 0.48311, 0.88907, 0.59751, 0.97532, 0.89391, 0.90385, 1, 0.6722, 1, 0.38633, 1, 0.08074, 1, 0, 0.88921, 0, 0.65984, 0, 0.46577, 0.0906, 0.0988, 0.305, 0, 0.47461, 0.71257, 0.715, 0.74681 ], + "triangles": [ 1, 10, 11, 1, 13, 0, 14, 1, 2, 1, 12, 13, 12, 1, 11, 14, 10, 1, 15, 14, 2, 15, 2, 3, 9, 10, 14, 15, 3, 4, 7, 8, 9, 14, 7, 9, 6, 14, 15, 5, 6, 15, 7, 14, 6, 4, 5, 15 ], + "vertices": [ 17.36, 25.99, 29.13, 15.44, 39.89, 10.8, 48.14, 7.24, 53.84, -2.38, 49.43, -6, 34.84, -6.39, 16.84, -6.87, -2.4, -7.38, -7.58, -3.86, -7.78, 3.7, -7.95, 10.1, -2.57, 22.36, 10.84, 25.97, 22.14, 2.75, 37.31, 2.03 ], + "hull": 14, + "edges": [ 0, 2, 6, 8, 8, 10, 16, 18, 22, 24, 24, 26, 0, 26, 10, 12, 2, 4, 4, 6, 12, 14, 14, 16, 18, 20, 20, 22, 2, 28, 28, 14, 20, 28, 4, 30, 30, 12, 28, 30, 30, 8 ], + "width": 63, + "height": 33 + } + }, + "right hand": { + "right hand": { + "name": "goblin/right-hand", + "type": "mesh", + "uvs": [ 0.17957, 0, 0, 0.44772, 0, 0.79734, 0.20057, 0.94264, 0.55057, 1, 0.8539, 1, 0.89823, 0.82004, 0.8259, 0.74285, 0.84223, 0.49993, 0.96356, 0.34102, 0.66023, 0 ], + "triangles": [ 8, 10, 9, 0, 10, 1, 8, 2, 1, 8, 1, 10, 7, 3, 8, 3, 2, 8, 4, 3, 7, 5, 7, 6, 4, 7, 5 ], + "vertices": [ -10.82, -9.45, 5.95, -15.34, 18.87999, -14.9, 24, -7.5, 25.69, 5.16, 25.31, 16.07, 18.61, 17.44, 15.84, 14.74, 6.84, 15.02, 0.81, 19.18, -11.41, 7.83 ], + "hull": 11, + "edges": [ 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 18, 20, 0, 20 ], + "width": 36, + "height": 37 + } + }, + "right hand thumb": { + "right hand thumb": { + "name": "goblin/right-hand", + "type": "mesh", + "uvs": [ 0.88538, 0.22262, 0.76167, 0.3594, 0.75088, 0.78308, 0.95326, 0.84981, 1, 0.60302 ], + "triangles": [ 1, 0, 4, 2, 1, 4, 3, 2, 4 ], + "vertices": [ -2.82, 15.97, 2.4, 11.71, 18.08, 11.9, 20.27, 19.27, 11.09, 20.62 ], + "hull": 5, + "edges": [ 2, 4, 4, 6, 6, 8, 2, 0, 0, 8 ], + "width": 36, + "height": 37 + } + }, + "right lower leg": { + "right lower leg": { + "name": "goblin/right-lower-leg", + "type": "mesh", + "uvs": [ 1, 0.27261, 0.81312, 0.52592, 0.79587, 0.71795, 0.95544, 0.80988, 0.85193, 0.95493, 0.47241, 1, 0.14033, 1, 0, 0.8773, 0.14896, 0.67914, 0.1619, 0.30325, 0.60611, 0 ], + "triangles": [ 1, 10, 0, 9, 10, 1, 8, 9, 1, 2, 8, 1, 4, 2, 3, 6, 7, 8, 5, 6, 8, 2, 5, 8, 4, 5, 2 ], + "vertices": [ 6.26, 8.46, 23.32, 8.04, 37.09999, 12.89, 41.45, 20.82, 53.07, 21.46, 61.33, 10.06, 65.76999, -1.03, 58.99, -9.18999, 43.02, -9.81, 16.33, -20, -12.79, -9.26 ], + "hull": 11, + "edges": [ 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 0, 20, 18, 20 ], + "width": 36, + "height": 76 + } + }, + "right shoulder": { + "right shoulder": { + "name": "goblin/right-shoulder", + "type": "mesh", + "uvs": [ 0.62008, 0.03708, 0.92131, 0.09048, 1, 0.38319, 0.72049, 0.6937, 0.31656, 1, 0, 1, 0, 0.75106, 0.28233, 0.49988 ], + "triangles": [ 4, 6, 7, 4, 7, 3, 4, 5, 6, 7, 0, 3, 2, 0, 1, 2, 3, 0 ], + "vertices": [ -3.17, -11.05, -9, -0.57, -1.01, 10.33, 16.69, 11.17, 37.41, 8.2, 45.45, -1.16, 36.95, -8.46, 21.2, -7.47 ], + "hull": 8, + "edges": [ 10, 12, 12, 14, 14, 0, 0, 2, 2, 4, 4, 6, 8, 10, 6, 8 ], + "width": 39, + "height": 45 + } + }, + "right upper leg": { + "right upper leg": { + "name": "goblin/right-upper-leg", + "type": "mesh", + "uvs": [ 0.27018, 0, 0.11618, 0.18177, 0, 0.70688, 0, 0.89577, 0.26668, 1, 0.48718, 1, 0.67618, 0.83532, 1, 0.5161, 1, 0.25543, 0.74618, 0.0571 ], + "triangles": [ 9, 8, 7, 9, 1, 0, 6, 9, 7, 6, 1, 9, 2, 1, 6, 4, 3, 2, 6, 4, 2, 5, 4, 6 ], + "vertices": [ -9.85, -10.37, 2.17, -14.07, 35.49, -13.66, 47.29, -12.11, 52.61, -2.26, 51.63, 5.16, 40.50999, 10.18, 19.12999, 18.46999, 2.85, 16.32, -8.39999, 6.14 ], + "hull": 10, + "edges": [ 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 0, 18 ], + "width": 34, + "height": 63 + } + }, + "torso": { + "torso": { + "name": "goblin/torso", + "type": "mesh", + "uvs": [ 0, 0.33287, 0.15945, 0.46488, 0.15761, 0.60314, 0.15502, 0.79806, 0.32807, 0.93478, 0.6875, 1, 0.80731, 1, 1, 0.77763, 1, 0.66147, 1, 0.56703, 0.93207, 0.4771, 0.86944, 0.39416, 0.83837, 0.226, 0.68085, 0, 0.14836, 0, 0, 0.07199, 0.78734, 0.86249, 0.43679, 0.79649, 0.76738, 0.61733, 0.44345, 0.58747, 0.54329, 0.38316, 0.77692, 0.73446, 0.66478, 0.51012 ], + "triangles": [ 5, 16, 6, 6, 16, 7, 4, 17, 5, 5, 17, 16, 4, 3, 17, 17, 21, 16, 16, 21, 7, 3, 2, 17, 21, 19, 18, 21, 17, 19, 17, 2, 19, 21, 8, 7, 21, 18, 8, 18, 9, 8, 19, 22, 18, 18, 10, 9, 18, 22, 10, 2, 1, 19, 19, 20, 22, 19, 1, 20, 22, 11, 10, 22, 20, 11, 20, 1, 14, 20, 12, 11, 1, 0, 14, 20, 13, 12, 20, 14, 13, 0, 15, 14 ], + "vertices": [ 56.93, 27.95, 43.37, 18.23, 30.16, 19.5, 11.53, 21.28, -2.55, 10.69, -10.89, -13.12, -11.59, -21.23, 8.54, -36.12, 19.65, -37.08, 28.68, -37.86, 37.68, -34, 45.98, -30.44, 56.4, -29.07, 84.78, -20.92, 87.9, 15.15, 81.87999, 25.79, 1.67, -21.01, 10.03, 2.18, 25.23, -18.25, 29.98, 0, 48.54, -8.39, 13.98, -21.36, 35.9, -15.6 ], + "hull": 16, + "edges": [ 0, 2, 6, 8, 8, 10, 10, 12, 12, 14, 22, 24, 24, 26, 26, 28, 28, 30, 0, 30, 14, 32, 32, 34, 34, 6, 18, 36, 36, 38, 2, 4, 4, 6, 38, 4, 2, 40, 40, 22, 40, 38, 38, 34, 32, 10, 34, 8, 40, 28, 14, 16, 16, 18, 32, 42, 42, 36, 16, 42, 42, 34, 18, 20, 20, 22, 36, 44, 44, 40, 20, 44 ], + "width": 68, + "height": 96 + } + }, + "undie straps": { + "undie straps": { + "name": "goblin/undie-straps", + "type": "mesh", + "uvs": [ 0.36097, 0.44959, 0.66297, 0.60591, 1, 0.19486, 1, 0.57117, 0.75897, 1, 0.38697, 1, 0, 0.26433, 0, 0, 0.12497, 0 ], + "triangles": [ 6, 7, 8, 6, 8, 0, 3, 1, 2, 5, 0, 1, 6, 0, 5, 4, 1, 3, 5, 1, 4 ], + "vertices": [ -10.56, 12.87, 6.53, 9.89999, 25.62, 17.70999, 25.62, 10.56, 11.97, 2.41, -9.09, 2.41, -31, 16.39, -31, 21.41, -23.92, 21.41 ], + "hull": 9, + "edges": [ 14, 16, 16, 0, 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 12, 14, 10, 12, 0, 10, 2, 8 ], + "width": 55, + "height": 19 + } + }, + "undies": { + "undies": { + "name": "goblin/undies", + "type": "mesh", + "uvs": [ 0, 0.32029, 0.14893, 0.59457, 0.22437, 1, 0.35909, 1, 0.50998, 1, 0.79559, 0.58453, 0.9842, 0.28015, 1, 0.00588, 0.46957, 0.17646, 0, 0.03933, 0.48843, 0.59122, 0.48114, 0.43099 ], + "triangles": [ 6, 8, 7, 0, 9, 8, 11, 8, 6, 0, 8, 11, 5, 11, 6, 10, 11, 5, 1, 0, 11, 1, 11, 10, 3, 2, 1, 10, 3, 1, 4, 10, 5, 3, 10, 4 ], + "vertices": [ -13.22, 5.56, -8, -2.47, -5.49, -14.27, -0.64, -14.36, 4.78, -14.45, 15.27, -2.58999, 22.22, 6.11, 22.92, 14.05, 3.75, 9.43999, -13.08, 13.71, 4.21, -2.58999, 4.03, 2.05 ], + "hull": 10, + "edges": [ 0, 2, 2, 4, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 0, 18, 4, 6, 6, 8, 6, 20, 16, 22, 22, 20, 0, 22, 22, 12, 2, 20, 20, 10 ], + "width": 36, + "height": 29 + } + } + }, + "goblingirl": { + "eyes": { + "eyes closed": { "name": "goblingirl/eyes-closed", "x": 28, "y": -25.54, "rotation": -87.04, "width": 37, "height": 21 } + }, + "head": { + "head": { "name": "goblingirl/head", "x": 27.71, "y": -4.32, "rotation": -85.58, "width": 103, "height": 81 } + }, + "left arm": { + "left arm": { "name": "goblingirl/left-arm", "x": 19.64, "y": -2.42, "rotation": 33.05, "width": 37, "height": 35 } + }, + "left foot": { + "left foot": { "name": "goblingirl/left-foot", "x": 25.17, "y": 7.92, "rotation": 3.32, "width": 65, "height": 31 } + }, + "left hand": { + "left hand": { + "name": "goblingirl/left-hand", + "x": 4.34, + "y": 2.39, + "scaleX": 0.896, + "scaleY": 0.896, + "rotation": 30.34, + "width": 35, + "height": 40 + } + }, + "left lower leg": { + "left lower leg": { "name": "goblingirl/left-lower-leg", "x": 25.02, "y": -0.6, "rotation": 105.75, "width": 33, "height": 70 } + }, + "left shoulder": { + "left shoulder": { "name": "goblingirl/left-shoulder", "x": 19.8, "y": -0.42, "rotation": 61.21, "width": 28, "height": 46 } + }, + "left upper leg": { + "left upper leg": { "name": "goblingirl/left-upper-leg", "x": 30.21, "y": -2.95, "rotation": 89.09, "width": 33, "height": 70 } + }, + "neck": { + "neck": { "name": "goblingirl/neck", "x": 6.16, "y": -3.14, "rotation": -98.86, "width": 35, "height": 41 } + }, + "pelvis": { + "pelvis": { "name": "goblingirl/pelvis", "x": -3.87, "y": 3.18, "width": 62, "height": 43 } + }, + "right arm": { + "right arm": { "name": "goblingirl/right-arm", "x": 16.85, "y": -0.66, "rotation": 93.52, "width": 28, "height": 50 } + }, + "right foot": { + "right foot": { "name": "goblingirl/right-foot", "x": 23.46, "y": 9.66, "rotation": 1.52, "width": 63, "height": 33 } + }, + "right hand": { + "right hand": { "name": "goblingirl/right-hand", "x": 7.21, "y": 3.43, "rotation": 91.16, "width": 36, "height": 37 } + }, + "right hand thumb": { + "right hand thumb": { "name": "goblingirl/right-hand", "x": 7.21, "y": 3.43, "rotation": 91.16, "width": 36, "height": 37 } + }, + "right lower leg": { + "right lower leg": { "name": "goblingirl/right-lower-leg", "x": 26.15, "y": -3.27, "rotation": 111.83, "width": 36, "height": 76 } + }, + "right shoulder": { + "right shoulder": { "name": "goblingirl/right-shoulder", "x": 14.46, "y": 0.45, "rotation": 129.85, "width": 39, "height": 45 } + }, + "right upper leg": { + "right upper leg": { "name": "goblingirl/right-upper-leg", "x": 19.69, "y": 2.13, "rotation": 97.49, "width": 34, "height": 63 } + }, + "torso": { + "torso": { "name": "goblingirl/torso", "x": 36.28, "y": -5.14, "rotation": -95.74, "width": 68, "height": 96 } + }, + "undie straps": { + "undie straps": { "name": "goblingirl/undie-straps", "x": -1.51, "y": 14.18, "width": 55, "height": 19 } + }, + "undies": { + "undies": { "name": "goblingirl/undies", "x": 5.4, "y": 1.7, "width": 36, "height": 29 } + } + } +}, +"animations": { + "walk": { + "slots": { + "eyes": { + "attachment": [ + { "time": 0.7, "name": "eyes closed" }, + { "time": 0.8, "name": null } + ] + } + }, + "bones": { + "left upper leg": { + "rotate": [ + { "time": 0, "angle": -26.55 }, + { "time": 0.1333, "angle": -8.78 }, + { "time": 0.2333, "angle": 9.51 }, + { "time": 0.3666, "angle": 30.74 }, + { "time": 0.5, "angle": 25.33 }, + { "time": 0.6333, "angle": 26.11 }, + { "time": 0.7333, "angle": 7.45 }, + { "time": 0.8666, "angle": -21.19 }, + { "time": 1, "angle": -26.55 } + ], + "translate": [ + { "time": 0, "x": -1.32, "y": 1.7 }, + { "time": 0.3666, "x": -0.06, "y": 2.42 }, + { "time": 1, "x": -1.32, "y": 1.7 } + ] + }, + "right upper leg": { + "rotate": [ + { "time": 0, "angle": 42.45 }, + { + "time": 0.1333, + "angle": 49.86, + "curve": [ 0.414, 0, 0.705, 0.99 ] + }, + { "time": 0.2333, "angle": 22.51 }, + { "time": 0.5, "angle": -16.93 }, + { "time": 0.6333, "angle": 1.89 }, + { + "time": 0.7333, + "angle": 34.86, + "curve": [ 0.462, 0.11, 1, 1 ] + }, + { + "time": 0.8666, + "angle": 58.68, + "curve": [ 0.5, 0.02, 1, 1 ] + }, + { "time": 1, "angle": 42.45 } + ], + "translate": [ + { "time": 0, "x": 6.23, "y": 0 }, + { "time": 0.2333, "x": 2.14, "y": 2.4 }, + { "time": 0.5, "x": 2.44, "y": 4.8 }, + { "time": 1, "x": 6.23, "y": 0 } + ] + }, + "left lower leg": { + "rotate": [ + { "time": 0, "angle": -18.05 }, + { "time": 0.1333, "angle": -63.5 }, + { "time": 0.2333, "angle": -83.01 }, + { "time": 0.5, "angle": 5.11 }, + { "time": 0.6333, "angle": -28.29 }, + { "time": 0.7333, "angle": -27.52 }, + { "time": 0.8666, "angle": 3.53 }, + { "time": 1, "angle": -18.05 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 }, + { "time": 0.2333, "x": 2.55, "y": -0.47 }, + { "time": 0.5, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1, "x": 0, "y": 0 } + ] + }, + "left foot": { + "rotate": [ + { "time": 0, "angle": -14.56 }, + { "time": 0.1333, "angle": -10.42 }, + { "time": 0.2333, "angle": -5.01 }, + { "time": 0.3, "angle": 6.67 }, + { "time": 0.3666, "angle": 3.87 }, + { "time": 0.5, "angle": -3.87 }, + { "time": 0.6333, "angle": 2.78 }, + { "time": 0.7333, "angle": -11.99 }, + { "time": 0.8666, "angle": -12.45 }, + { "time": 1, "angle": -14.56 } + ] + }, + "right shoulder": { + "rotate": [ + { + "time": 0, + "angle": 5.29, + "curve": [ 0.264, 0, 0.75, 1 ] + }, + { "time": 0.6333, "angle": 6.65 }, + { "time": 1, "angle": 5.29 } + ] + }, + "right arm": { + "rotate": [ + { + "time": 0, + "angle": -4.02, + "curve": [ 0.267, 0, 0.804, 0.99 ] + }, + { + "time": 0.6333, + "angle": 19.78, + "curve": [ 0.307, 0, 0.787, 0.99 ] + }, + { "time": 1, "angle": -4.02 } + ] + }, + "right hand": { + "rotate": [ + { "time": 0, "angle": 8.98 }, + { "time": 0.6333, "angle": 0.51 }, + { "time": 1, "angle": 8.98 } + ] + }, + "left shoulder": { + "rotate": [ + { + "time": 0, + "angle": 6.25, + "curve": [ 0.339, 0, 0.683, 1 ] + }, + { + "time": 0.5, + "angle": -11.78, + "curve": [ 0.281, 0, 0.686, 0.99 ] + }, + { "time": 1, "angle": 6.25 } + ], + "translate": [ + { "time": 0, "x": 1.15, "y": 0.23 } + ] + }, + "left hand": { + "rotate": [ + { + "time": 0, + "angle": -21.23, + "curve": [ 0.295, 0, 0.755, 0.98 ] + }, + { + "time": 0.5, + "angle": -27.28, + "curve": [ 0.241, 0, 0.75, 0.97 ] + }, + { "time": 1, "angle": -21.23 } + ] + }, + "left arm": { + "rotate": [ + { + "time": 0, + "angle": 28.37, + "curve": [ 0.339, 0, 0.683, 1 ] + }, + { + "time": 0.5, + "angle": 60.09, + "curve": [ 0.281, 0, 0.686, 0.99 ] + }, + { "time": 1, "angle": 28.37 } + ] + }, + "torso": { + "rotate": [ + { "time": 0, "angle": -10.28 }, + { + "time": 0.1333, + "angle": -15.38, + "curve": [ 0.545, 0, 0.818, 1 ] + }, + { + "time": 0.3666, + "angle": -9.78, + "curve": [ 0.58, 0.17, 0.669, 0.99 ] + }, + { + "time": 0.6333, + "angle": -15.75, + "curve": [ 0.235, 0.01, 0.795, 1 ] + }, + { + "time": 0.8666, + "angle": -7.06, + "curve": [ 0.209, 0, 0.816, 0.98 ] + }, + { "time": 1, "angle": -10.28 } + ], + "translate": [ + { "time": 0, "x": -3.72, "y": -0.01 } + ] + }, + "right foot": { + "rotate": [ + { "time": 0, "angle": -5.25 }, + { "time": 0.2333, "angle": -17.76 }, + { "time": 0.3666, "angle": -20.09 }, + { "time": 0.5, "angle": -19.73 }, + { "time": 0.7333, "angle": -11.68 }, + { "time": 0.8, "angle": 4.46 }, + { "time": 0.8666, "angle": 0.46 }, + { "time": 1, "angle": -5.25 } + ] + }, + "right lower leg": { + "rotate": [ + { + "time": 0, + "angle": -3.39, + "curve": [ 0.316, 0.01, 0.741, 0.98 ] + }, + { + "time": 0.1333, + "angle": -43.21, + "curve": [ 0.414, 0, 0.705, 0.99 ] + }, + { "time": 0.2333, "angle": -25.98 }, + { "time": 0.5, "angle": -19.53 }, + { "time": 0.6333, "angle": -64.8 }, + { + "time": 0.7333, + "angle": -89.54, + "curve": [ 0.557, 0.18, 1, 1 ] + }, + { "time": 1, "angle": -3.39 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.5, "x": 0, "y": 0 }, + { "time": 0.6333, "x": 2.18, "y": 0.21 }, + { "time": 1, "x": 0, "y": 0 } + ] + }, + "hip": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": -8.4 }, + { + "time": 0.1333, + "x": 0, + "y": -9.35, + "curve": [ 0.326, 0.05, 0.674, 0.93 ] + }, + { + "time": 0.2333, + "x": 0, + "y": -0.59, + "curve": [ 0.325, 0.39, 0.643, 0.7 ] + }, + { "time": 0.3666, "x": 0, "y": -3.96 }, + { "time": 0.5, "x": 0, "y": -8.4 }, + { + "time": 0.6333, + "x": 0, + "y": -10, + "curve": [ 0.359, 0.47, 0.646, 0.74 ] + }, + { + "time": 0.7333, + "x": 0, + "y": -5.29, + "curve": [ 0.333, 0.36, 0.662, 0.69 ] + }, + { + "time": 0.8, + "x": 0, + "y": -2.49, + "curve": [ 0.322, 0.35, 0.651, 0.68 ] + }, + { "time": 0.8666, "x": 0, "y": -3.96 }, + { "time": 1, "x": 0, "y": -8.4 } + ] + }, + "neck": { + "rotate": [ + { "time": 0, "angle": 3.6 }, + { "time": 0.1333, "angle": 17.49 }, + { "time": 0.2333, "angle": 6.1 }, + { "time": 0.3666, "angle": 3.45 }, + { "time": 0.5, "angle": 5.17 }, + { "time": 0.6333, "angle": 18.36 }, + { "time": 0.7333, "angle": 6.09 }, + { "time": 0.8666, "angle": 2.28 }, + { "time": 1, "angle": 3.6 } + ] + }, + "head": { + "rotate": [ + { + "time": 0, + "angle": 3.6, + "curve": [ 0, 0, 0.704, 1.17 ] + }, + { "time": 0.1333, "angle": -0.2 }, + { "time": 0.2333, "angle": 6.1 }, + { "time": 0.3666, "angle": 3.45 }, + { + "time": 0.5, + "angle": 5.17, + "curve": [ 0, 0, 0.704, 1.61 ] + }, + { "time": 0.6666, "angle": 1.1 }, + { "time": 0.7333, "angle": 6.09 }, + { "time": 0.8666, "angle": 2.28 }, + { "time": 1, "angle": 3.6 } + ] + }, + "pelvis": { + "rotate": [ + { "time": 0, "angle": -1.33 } + ], + "translate": [ + { "time": 0, "x": 0.39, "y": -0.78 } + ] + }, + "spear1": { + "rotate": [ + { "time": 0, "angle": 1.84 }, + { "time": 0.2, "angle": -5.38 }, + { "time": 0.5, "angle": 2.95 }, + { "time": 0.7333, "angle": -3.67 }, + { "time": 1, "angle": 1.84 } + ] + }, + "spear2": { + "rotate": [ + { "time": 0, "angle": 1.84 }, + { "time": 0.2, "angle": -5.38 }, + { "time": 0.5, "angle": 2.95 }, + { "time": 0.7333, "angle": -3.67 }, + { "time": 1, "angle": 1.84 } + ] + }, + "spear3": { + "rotate": [ + { "time": 0, "angle": 3.64 }, + { "time": 0.2, "angle": -3.59 }, + { "time": 0.5, "angle": 4.74 }, + { "time": 0.7333, "angle": -1.87 }, + { "time": 1, "angle": 3.64 } + ] + } + }, + "deform": { + "default": { + "left hand item": { + "spear": [ + { "time": 0 } + ] + }, + "right hand item": { + "dagger": [ + { + "time": 0, + "offset": 26, + "vertices": [ 2.34754, 0.14469 ], + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 0.5, + "offset": 8, + "vertices": [ -1.19415, 4.31531, 0.07279, 6.41351, 1.66048, 6.18882, 1.75232, 3.59555 ], + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 1, + "offset": 26, + "vertices": [ 2.34754, 0.14469 ] + } + ] + } + }, + "goblin": { + "head": { + "head": [ + { + "time": 0, + "curve": [ 0.632, 0, 0.75, 1 ] + }, + { + "time": 0.2, + "vertices": [ -10.97826, -6.68962, -4.68015, -2.46175, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.08534, 0.08391, -1.08534, 0.08391, -1.08534, 0.08391, 0, 0, -2.22324, 2.66465, -4.83295, 2.70084, -5.70553, -0.51941, -3.15962, -1.61501, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6.64741, 0.81612, -11.82285, -1.34955, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.08534, 0.08391 ], + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 0.3666, + "vertices": [ 10.69275, 4.05949, 3.66373, 1.85426, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.47305, 0.09017, 1.47305, 0.09017, 1.47305, 0.09017, 0, 0, 2.69652, -0.22738, 3.77135, 0.11417, 3.6893, 1.55352, 2.49594, 1.65501, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4.4588, -3.9113, 9.19593, -1.66854, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.47305, 0.09017 ], + "curve": [ 0.621, 0, 0.75, 1 ] + }, + { + "time": 0.7, + "vertices": [ -10.97826, -6.68962, -4.68015, -2.46175, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.1755, -0.17183, -1.1755, -0.17182, -1.1755, -0.17183, 0, 0, -2.22324, 2.66465, -4.83295, 2.70084, -5.70553, -0.51941, -3.15962, -1.61501, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6.64741, 0.81612, -11.82285, -1.34955, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.1755, -0.17183 ], + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 0.8666, + "vertices": [ 10.69275, 4.05949, 3.66373, 1.85426, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.38687, 0.08446, 0.38687, 0.08446, 0.38687, 0.08446, 0, 0, 2.69652, -0.22738, 3.77135, 0.11417, 3.6893, 1.55352, 2.49594, 1.65501, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4.4588, -3.9113, 9.19593, -1.66854, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.38687, 0.08446 ], + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 1 } + ] + }, + "left foot": { + "left foot": [ + { + "time": 0, + "offset": 8, + "vertices": [ 3.69298, 2.37572, -7.16969, 18.79732, -12.78161, 14.7778, -12.75775, 6.50514, -3.13475, 1.98906, -0.44401, 0.36629, 0, 0, -3.80085, 2.98474 ] + }, + { "time": 0.1333 }, + { + "time": 0.2333, + "offset": 8, + "vertices": [ -3.96072, -2.34594, -5.80445, -12.47629, -2.23129, -12.99037, 2.02941, -9.1036, 0, 0, 0, 0, 0, 0, -1.35254, -5.2883 ] + }, + { + "time": 0.3666, + "offset": 8, + "vertices": [ 0.66504, 0.33548, 0.33902, 2.69014, -0.4817, 2.54524, -1.13592, 1.38562, 0, 0, 0, 0, 0, 0, -0.11907, 0.79273 ] + }, + { "time": 0.5, "curve": "stepped" }, + { "time": 0.6333 }, + { + "time": 0.7333, + "offset": 8, + "vertices": [ -2.97737, 9.40254, -6.91661, 19.92794, -10.55287, 18.41085, -12.37161, 12.38473, -4.72606, 6.30798, 0, 0, -1.48902, 4.88944, -7.06773, 10.70101 ] + }, + { + "time": 0.8333, + "offset": 6, + "vertices": [ 1.05318, 1.56361, -2.52722, 7.9974, -5.5203, 17.14136, -8.93317, 15.79635, -10.73747, 10.22055, -4.23801, 5.36992, 0, 0, 0, 0, -5.83147, 8.55531 ] + }, + { + "time": 1, + "offset": 8, + "vertices": [ 3.69298, 2.37572, -7.16969, 18.79732, -12.78161, 14.7778, -12.75775, 6.50514, -3.13475, 1.98906, -0.44401, 0.36629, 0, 0, -3.80085, 2.98474 ] + } + ] + }, + "pelvis": { + "pelvis": [ + { "time": 0 }, + { + "time": 0.1333, + "offset": 6, + "vertices": [ -0.68989, -4.13283 ] + }, + { + "time": 0.3333, + "offset": 6, + "vertices": [ -1.04945, -3.10476 ] + }, + { + "time": 0.7, + "offset": 6, + "vertices": [ -1.4245, -6.30616 ] + }, + { + "time": 0.8666, + "offset": 6, + "vertices": [ -1.13541, -1.79035 ] + }, + { "time": 1 } + ] + }, + "right foot": { + "right foot": [ + { "time": 0 }, + { + "time": 0.1333, + "offset": 2, + "vertices": [ -2.81258, 2.63114, -2.35238, 3.89441, -1.99921, 4.8639, -0.93273, 5.57982, -0.48886, 5.09854, -0.34812, 3.42912, -0.17445, 1.36898, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.31305, 1.91371, -1.32986, 3.65703 ] + }, + { + "time": 0.2333, + "offset": 2, + "vertices": [ -6.39088, 6.41245, -7.74575, 8.27191, -7.02471, 11.35894, -4.0347, 13.93454, -2.50399, 12.62962, -1.46124, 7.58915, -0.17445, 1.36898, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3.84765, 2.61215, -4.53955, 7.92357 ] + }, + { + "time": 0.3, + "offset": 2, + "vertices": [ -8.27184, 6.68821, -9.29764, 10.13797, -8.62231, 14.71339, -4.58629, 18.81939, -2.20304, 17.10709, -0.07794, 9.9046, 2.54451, 1.01642, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.94624, 2.38007, -4.59398, 10.01888 ] + }, + { + "time": 0.3666, + "offset": 2, + "vertices": [ -10.47683, 9.44175, -13.36882, 12.40982, -14.32568, 16.94392, -9.24462, 23.55674, -5.51711, 21.51377, -1.19581, 11.53192, 2.54451, 1.01642, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4.14847, 2.29389, -6.63418, 11.37127 ] + }, + { + "time": 0.5, + "offset": 2, + "vertices": [ -5.42473, 4.36854, -10.59004, 7.04468, -11.64251, 11.55845, -6.19665, 20.12805, -1.45497, 18.05411, 4.86619, 6.41678, 2.81462, 0.27601, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.96412, 4.94829 ] + }, + { "time": 0.6333 }, + { + "time": 0.7333, + "offset": 4, + "vertices": [ 1.31462, -6.84099, -0.87905, -12.54479, -5.9851, -14.08367, -7.15892, -11.63193, -5.6792, -4.83544, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.06163, -6.93844 ] + }, + { + "time": 0.8, + "offset": 4, + "vertices": [ 0.65731, -3.42049, -0.43952, -6.27239, -2.99255, -7.04183, -3.57946, -5.81596, -2.83959, -2.41772, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.79687, -1.2802, 0, 0, 0, 0, -1.03081, -3.46922 ] + }, + { "time": 0.8666 } + ] + }, + "right hand": { + "right hand": [ + { + "time": 0, + "offset": 4, + "vertices": [ -1.48416, 0.34736, 0, 0, 1.31152, 0.08085, 1.60295, 0.09881, 0.13673, 0.1547, 0, 0, 0, 0, -0.72862, -0.0449 ] + }, + { "time": 0.5 }, + { + "time": 1, + "offset": 4, + "vertices": [ -1.48416, 0.34736, 0, 0, 1.31152, 0.08085, 1.60295, 0.09881, 0.13673, 0.1547, 0, 0, 0, 0, -0.72862, -0.0449 ] + } + ] + }, + "right lower leg": { + "right lower leg": [ + { "time": 0 }, + { + "time": 0.6, + "offset": 6, + "vertices": [ 1.80396, -1.56552 ] + }, + { "time": 1 } + ] + }, + "right upper leg": { + "right upper leg": [ + { + "time": 0, + "vertices": [ -6.03856, -1.46324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.34684, -1.93101, -1.86047, -5.05265, -2.5014, -3.09984 ] + }, + { "time": 0.3333 }, + { + "time": 0.8666, + "offset": 14, + "vertices": [ 0.13424, -2.35377, -1.33317, -5.99572, -1.35861, -4.43323 ] + }, + { + "time": 1, + "vertices": [ -6.03856, -1.46324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.34684, -1.93101, -1.86047, -5.05265, -2.5014, -3.09984 ] + } + ] + }, + "torso": { + "torso": [ + { + "time": 0, + "offset": 14, + "vertices": [ -1.48952, -0.24021, -2.72312, -2.15489, -0.51183, -3.39752, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.0964, -2.61458, 0, 0, 0.57686, -1.24874, 0, 0, 0, 0, -2.11251, -3.29932 ] + }, + { + "time": 0.1333, + "offset": 14, + "vertices": [ 1.31318, -0.59727, -0.97944, -1.62934, 0.74861, -0.6123, -1.44598, 1.97515, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.65701, -3.95221, 0, 0, -1.46987, -0.31373, 0, 0, 0, 0, -3.31756, -3.5535, -2.56329, 0.29673 ] + }, + { + "time": 0.3, + "offset": 14, + "vertices": [ 6.03761, -3.13561, 7.55475, -1.38111, 6.79747, 0.31171, 4.23503, 1.14012, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4.07575, -5.16824, 0, 0, 4.0041, 0.27245, 0, 0, 0, 0, 3.4376, -3.52286 ] + }, + { + "time": 0.5, + "offset": 14, + "vertices": [ 2.25942, -0.87202, 2.575, -0.56861, 3.17112, -0.57003, 1.48704, 0.9924, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3.22451, -4.43862, 0, 0, 1.48691, 0.01586, 0, 0, 0, 0, 0.31388, -3.28095, -1.53797, 0.17803 ] + }, + { + "time": 0.6333, + "offset": 14, + "vertices": [ 0.75002, -1.51701, -0.97944, -1.62934, 0.74861, -0.6123, -1.44598, 1.97515, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.65701, -3.95221, 0, 0, -1.46987, -0.31373, 0, 0, 0, 0, -3.31756, -3.5535, -2.56329, 0.29673 ] + }, + { + "time": 0.8666, + "offset": 14, + "vertices": [ 0.62202, -1.26262, 0.38489, -2.20701, 3.25048, -0.50042, 2.41108, 2.39315, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.6639, -3.10099, 0, 0, 2.30655, -1.15196, 0, 0, 0, 0, -0.07676, -3.63497, -0.9321, 0.1079 ] + }, + { + "time": 1, + "offset": 14, + "vertices": [ -1.48952, -0.24021, -2.72312, -2.15489, -0.51183, -3.39752, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.0964, -2.61458, 0, 0, 0.57686, -1.24874, 0, 0, 0, 0, -2.11251, -3.29932 ] + } + ] + }, + "undie straps": { + "undie straps": [ + { + "time": 0, + "offset": 2, + "vertices": [ -1.77696, 0.54759, -0.96145, -1.03793, -0.39148, -0.24071, -1.77696, 0.54759 ] + }, + { + "time": 0.1333, + "offset": 2, + "vertices": [ -2.25683, -1.03177, -1.49719, -4.23861, -0.74469, -2.84906, -1.90072, 0.54477 ] + }, + { + "time": 0.3333, + "offset": 2, + "vertices": [ -2.37974, -0.05431, -0.49433, 0.19436, -0.90861, 1.16519, -1.60956, 2.70798, 0.96186, 0.80615 ] + }, + { + "time": 0.7, + "offset": 2, + "vertices": [ -0.91714, -2.76567, -0.62214, -3.63489, -0.8494, -2.26772, -2.56076, 0.5297 ] + }, + { + "time": 0.8666, + "offset": 2, + "vertices": [ -2.56076, 0.5297, -1.58064, 0.32031, -1.3847, 0.32476, -2.56076, 0.5297 ] + }, + { + "time": 1, + "offset": 2, + "vertices": [ -1.77696, 0.54759, -0.80128, 0.53413, -0.80128, 0.53413, -1.77696, 0.54759 ] + } + ] + }, + "undies": { + "undies": [ + { + "time": 0, + "vertices": [ 0.43098, 0.722, 10.60295, -0.11699, 2.29598, 0, 2.29598, 0, 2.29598, 0, 0.58798, 0.24399, -2.40018, -0.65335, -2.2782, -0.77533, 2.29598, 0, 0.58798, -0.48799, 4.98697, -0.11699, 6.50796, -0.23399 ] + }, + { + "time": 0.1333, + "vertices": [ 0.72659, 0.43319, 7.20416, -0.1638, 1.37759, 0, 1.37759, 0, 1.37759, 0, 1.25279, 0.0464, -0.99861, -2.95085, -1.37542, -3.07404, 1.37759, 0, 0.35279, -0.29279, 2.99218, -0.07019, 3.90478, -0.14039 ] + }, + { + "time": 0.3333, + "vertices": [ 1.16999, 0, 2.10599, -0.234, 0, 0, 0, 0, 0, 0, 2.24999, -0.24999, -0.4344, 0.60551, -1.55939, 0.48051 ] + }, + { + "time": 0.5333, + "vertices": [ 1.16999, 0, -0.234, -0.93599, -2.92499, 0.35099, 0, 0, 0, 0, 0.49999, -0.24999, -0.64078, -2.07914, -0.64078, -2.07914 ] + }, + { + "time": 0.7, + "vertices": [ 1.8627, -0.11514, 4.66326, -0.09099, -1.76428, 0.21171, 0, 0, -0.56832, 0.32832, -1.13833, -1.1511, -2.19996, -3.47068, -1.29718, -3.47068, 0, 0, 0, 0, 1.58785, -0.04642, 2.65941, 0.16714 ] + }, + { + "time": 0.8333, + "vertices": [ 2.41687, -0.20725, 8.58108, 0.585, -0.83571, 0.10028, 0, 0, -1.02299, 0.59098, -2.44899, -1.872, -1.62499, 0, 0, 0, 0, 0, 0, 0, 2.85813, -0.08356, 4.78695, 0.30086 ] + }, + { + "time": 0.8666, + "vertices": [ 2.01969, -0.0214, 8.98545, 0.4446, -0.20937, 0.08022, 0.45919, 0, -0.35919, 0.47279, -1.84159, -1.4488, -0.79153, 1.2642, 0.53285, 1.23981, 0.45919, 0, 0.11759, -0.09759, 3.2839, -0.09025, 5.13115, 0.19388 ] + }, + { + "time": 1, + "vertices": [ 0.43098, 0.722, 10.60295, -0.11699, 2.29598, 0, 2.29598, 0, 2.29598, 0, 0.58798, 0.24399, -2.40018, -0.65335, -2.2782, -0.77533, 2.29598, 0, 0.58798, -0.48799, 4.98697, -0.11699, 6.50796, -0.23399 ] + } + ] + } + } + } + } +} +} \ No newline at end of file diff --git a/spine-love/data/goblins.atlas b/spine-love/data/goblins.atlas new file mode 100644 index 000000000..0f57a0f6a --- /dev/null +++ b/spine-love/data/goblins.atlas @@ -0,0 +1,293 @@ + +goblins.png +size: 1024,128 +format: RGBA8888 +filter: Linear,Linear +repeat: none +dagger + rotate: true + xy: 372, 100 + size: 26, 108 + orig: 26, 108 + offset: 0, 0 + index: -1 +goblin/eyes-closed + rotate: false + xy: 2, 7 + size: 34, 12 + orig: 34, 12 + offset: 0, 0 + index: -1 +goblin/head + rotate: false + xy: 107, 36 + size: 103, 66 + orig: 103, 66 + offset: 0, 0 + index: -1 +goblin/left-arm + rotate: false + xy: 901, 56 + size: 37, 35 + orig: 37, 35 + offset: 0, 0 + index: -1 +goblin/left-foot + rotate: false + xy: 929, 95 + size: 65, 31 + orig: 65, 31 + offset: 0, 0 + index: -1 +goblin/left-hand + rotate: false + xy: 452, 2 + size: 36, 41 + orig: 36, 41 + offset: 0, 0 + index: -1 +goblin/left-lower-leg + rotate: true + xy: 713, 93 + size: 33, 70 + orig: 33, 70 + offset: 0, 0 + index: -1 +goblin/left-shoulder + rotate: false + xy: 610, 44 + size: 29, 44 + orig: 29, 44 + offset: 0, 0 + index: -1 +goblin/left-upper-leg + rotate: true + xy: 638, 93 + size: 33, 73 + orig: 33, 73 + offset: 0, 0 + index: -1 +goblin/neck + rotate: false + xy: 490, 2 + size: 36, 41 + orig: 36, 41 + offset: 0, 0 + index: -1 +goblin/pelvis + rotate: false + xy: 482, 45 + size: 62, 43 + orig: 62, 43 + offset: 0, 0 + index: -1 +goblin/right-arm + rotate: true + xy: 690, 2 + size: 23, 50 + orig: 23, 50 + offset: 0, 0 + index: -1 +goblin/right-foot + rotate: false + xy: 771, 58 + size: 63, 33 + orig: 63, 33 + offset: 0, 0 + index: -1 +goblin/right-hand + rotate: false + xy: 940, 56 + size: 36, 37 + orig: 36, 37 + offset: 0, 0 + index: -1 +goblin/right-lower-leg + rotate: true + xy: 482, 90 + size: 36, 76 + orig: 36, 76 + offset: 0, 0 + index: -1 +goblin/right-shoulder + rotate: true + xy: 602, 3 + size: 39, 45 + orig: 39, 45 + offset: 0, 0 + index: -1 +goblin/right-upper-leg + rotate: true + xy: 641, 57 + size: 34, 63 + orig: 34, 63 + offset: 0, 0 + index: -1 +goblin/torso + rotate: true + xy: 212, 34 + size: 68, 96 + orig: 68, 96 + offset: 0, 0 + index: -1 +goblin/undie-straps + rotate: false + xy: 380, 5 + size: 55, 19 + orig: 55, 19 + offset: 0, 0 + index: -1 +goblin/undies + rotate: false + xy: 174, 5 + size: 36, 29 + orig: 36, 29 + offset: 0, 0 + index: -1 +goblingirl/eyes-closed + rotate: false + xy: 269, 11 + size: 37, 21 + orig: 37, 21 + offset: 0, 0 + index: -1 +goblingirl/head + rotate: false + xy: 2, 21 + size: 103, 81 + orig: 103, 81 + offset: 0, 0 + index: -1 +goblingirl/left-arm + rotate: true + xy: 978, 56 + size: 37, 35 + orig: 37, 35 + offset: 0, 0 + index: -1 +goblingirl/left-foot + rotate: false + xy: 107, 3 + size: 65, 31 + orig: 65, 31 + offset: 0, 0 + index: -1 +goblingirl/left-hand + rotate: false + xy: 565, 2 + size: 35, 40 + orig: 35, 40 + offset: 0, 0 + index: -1 +goblingirl/left-lower-leg + rotate: true + xy: 785, 93 + size: 33, 70 + orig: 33, 70 + offset: 0, 0 + index: -1 +goblingirl/left-shoulder + rotate: true + xy: 690, 27 + size: 28, 46 + orig: 28, 46 + offset: 0, 0 + index: -1 +goblingirl/left-upper-leg + rotate: true + xy: 857, 93 + size: 33, 70 + orig: 33, 70 + offset: 0, 0 + index: -1 +goblingirl/neck + rotate: false + xy: 528, 2 + size: 35, 41 + orig: 35, 41 + offset: 0, 0 + index: -1 +goblingirl/pelvis + rotate: false + xy: 546, 45 + size: 62, 43 + orig: 62, 43 + offset: 0, 0 + index: -1 +goblingirl/right-arm + rotate: false + xy: 452, 48 + size: 28, 50 + orig: 28, 50 + offset: 0, 0 + index: -1 +goblingirl/right-foot + rotate: false + xy: 836, 58 + size: 63, 33 + orig: 63, 33 + offset: 0, 0 + index: -1 +goblingirl/right-hand + rotate: true + xy: 771, 20 + size: 36, 37 + orig: 36, 37 + offset: 0, 0 + index: -1 +goblingirl/right-lower-leg + rotate: true + xy: 560, 90 + size: 36, 76 + orig: 36, 76 + offset: 0, 0 + index: -1 +goblingirl/right-shoulder + rotate: false + xy: 649, 10 + size: 39, 45 + orig: 39, 45 + offset: 0, 0 + index: -1 +goblingirl/right-upper-leg + rotate: true + xy: 706, 57 + size: 34, 63 + orig: 34, 63 + offset: 0, 0 + index: -1 +goblingirl/torso + rotate: false + xy: 310, 2 + size: 68, 96 + orig: 68, 96 + offset: 0, 0 + index: -1 +goblingirl/undie-straps + rotate: false + xy: 212, 13 + size: 55, 19 + orig: 55, 19 + offset: 0, 0 + index: -1 +goblingirl/undies + rotate: false + xy: 810, 27 + size: 36, 29 + orig: 36, 29 + offset: 0, 0 + index: -1 +shield + rotate: false + xy: 380, 26 + size: 70, 72 + orig: 70, 72 + offset: 0, 0 + index: -1 +spear + rotate: true + xy: 2, 104 + size: 22, 368 + orig: 22, 368 + offset: 0, 0 + index: -1 diff --git a/spine-love/data/goblins.png b/spine-love/data/goblins.png new file mode 100644 index 000000000..9d1ae572a Binary files /dev/null and b/spine-love/data/goblins.png differ diff --git a/spine-love/data/images/eye_indifferent.png b/spine-love/data/images/eye_indifferent.png deleted file mode 100644 index 1d29940ff..000000000 Binary files a/spine-love/data/images/eye_indifferent.png and /dev/null differ diff --git a/spine-love/data/images/eye_surprised.png b/spine-love/data/images/eye_surprised.png deleted file mode 100644 index f411f9432..000000000 Binary files a/spine-love/data/images/eye_surprised.png and /dev/null differ diff --git a/spine-love/data/images/eyes-closed.png b/spine-love/data/images/eyes-closed.png deleted file mode 100644 index 60718e101..000000000 Binary files a/spine-love/data/images/eyes-closed.png and /dev/null differ diff --git a/spine-love/data/images/eyes.png b/spine-love/data/images/eyes.png deleted file mode 100644 index 707c91b72..000000000 Binary files a/spine-love/data/images/eyes.png and /dev/null differ diff --git a/spine-love/data/images/front_bracer.png b/spine-love/data/images/front_bracer.png deleted file mode 100644 index aa0fca6fd..000000000 Binary files a/spine-love/data/images/front_bracer.png and /dev/null differ diff --git a/spine-love/data/images/front_fist_closed.png b/spine-love/data/images/front_fist_closed.png deleted file mode 100644 index eb8b24217..000000000 Binary files a/spine-love/data/images/front_fist_closed.png and /dev/null differ diff --git a/spine-love/data/images/front_fist_open.png b/spine-love/data/images/front_fist_open.png deleted file mode 100644 index c950492d7..000000000 Binary files a/spine-love/data/images/front_fist_open.png and /dev/null differ diff --git a/spine-love/data/images/front_foot.png b/spine-love/data/images/front_foot.png deleted file mode 100644 index 69ea494c3..000000000 Binary files a/spine-love/data/images/front_foot.png and /dev/null differ diff --git a/spine-love/data/images/front_foot_bend1.png b/spine-love/data/images/front_foot_bend1.png deleted file mode 100644 index 6cbc1ffcc..000000000 Binary files a/spine-love/data/images/front_foot_bend1.png and /dev/null differ diff --git a/spine-love/data/images/front_foot_bend2.png b/spine-love/data/images/front_foot_bend2.png deleted file mode 100644 index e6b3942c7..000000000 Binary files a/spine-love/data/images/front_foot_bend2.png and /dev/null differ diff --git a/spine-love/data/images/front_shin.png b/spine-love/data/images/front_shin.png deleted file mode 100644 index e63bef05b..000000000 Binary files a/spine-love/data/images/front_shin.png and /dev/null differ diff --git a/spine-love/data/images/front_thigh.png b/spine-love/data/images/front_thigh.png deleted file mode 100644 index 91dbd8df5..000000000 Binary files a/spine-love/data/images/front_thigh.png and /dev/null differ diff --git a/spine-love/data/images/front_upper_arm.png b/spine-love/data/images/front_upper_arm.png deleted file mode 100644 index 49d16d286..000000000 Binary files a/spine-love/data/images/front_upper_arm.png and /dev/null differ diff --git a/spine-love/data/images/goggles.png b/spine-love/data/images/goggles.png deleted file mode 100644 index 7eb52b9db..000000000 Binary files a/spine-love/data/images/goggles.png and /dev/null differ diff --git a/spine-love/data/images/gun.png b/spine-love/data/images/gun.png deleted file mode 100644 index 2ba05f556..000000000 Binary files a/spine-love/data/images/gun.png and /dev/null differ diff --git a/spine-love/data/images/head.png b/spine-love/data/images/head.png deleted file mode 100644 index 2d7f66abf..000000000 Binary files a/spine-love/data/images/head.png and /dev/null differ diff --git a/spine-love/data/images/left-ankle.png b/spine-love/data/images/left-ankle.png deleted file mode 100644 index fcf9a2813..000000000 Binary files a/spine-love/data/images/left-ankle.png and /dev/null differ diff --git a/spine-love/data/images/left-arm.png b/spine-love/data/images/left-arm.png deleted file mode 100644 index 4447dec8a..000000000 Binary files a/spine-love/data/images/left-arm.png and /dev/null differ diff --git a/spine-love/data/images/left-foot.png b/spine-love/data/images/left-foot.png deleted file mode 100644 index 9b8768277..000000000 Binary files a/spine-love/data/images/left-foot.png and /dev/null differ diff --git a/spine-love/data/images/left-hand.png b/spine-love/data/images/left-hand.png deleted file mode 100644 index b95a3523c..000000000 Binary files a/spine-love/data/images/left-hand.png and /dev/null differ diff --git a/spine-love/data/images/left-lower-leg.png b/spine-love/data/images/left-lower-leg.png deleted file mode 100644 index f316b6500..000000000 Binary files a/spine-love/data/images/left-lower-leg.png and /dev/null differ diff --git a/spine-love/data/images/left-pant-bottom.png b/spine-love/data/images/left-pant-bottom.png deleted file mode 100644 index 29a05bc4f..000000000 Binary files a/spine-love/data/images/left-pant-bottom.png and /dev/null differ diff --git a/spine-love/data/images/left-shoulder.png b/spine-love/data/images/left-shoulder.png deleted file mode 100644 index 7fd429dc3..000000000 Binary files a/spine-love/data/images/left-shoulder.png and /dev/null differ diff --git a/spine-love/data/images/left-upper-leg.png b/spine-love/data/images/left-upper-leg.png deleted file mode 100644 index f076d5c91..000000000 Binary files a/spine-love/data/images/left-upper-leg.png and /dev/null differ diff --git a/spine-love/data/images/mouth_grind.png b/spine-love/data/images/mouth_grind.png deleted file mode 100644 index 60046ab92..000000000 Binary files a/spine-love/data/images/mouth_grind.png and /dev/null differ diff --git a/spine-love/data/images/mouth_oooo.png b/spine-love/data/images/mouth_oooo.png deleted file mode 100644 index e3dc2b1e2..000000000 Binary files a/spine-love/data/images/mouth_oooo.png and /dev/null differ diff --git a/spine-love/data/images/mouth_smile.png b/spine-love/data/images/mouth_smile.png deleted file mode 100644 index 7a2276ee5..000000000 Binary files a/spine-love/data/images/mouth_smile.png and /dev/null differ diff --git a/spine-love/data/images/muzzle.png b/spine-love/data/images/muzzle.png deleted file mode 100644 index 6d53f3ad8..000000000 Binary files a/spine-love/data/images/muzzle.png and /dev/null differ diff --git a/spine-love/data/images/neck.png b/spine-love/data/images/neck.png deleted file mode 100644 index 544ea1ed2..000000000 Binary files a/spine-love/data/images/neck.png and /dev/null differ diff --git a/spine-love/data/images/pelvis.png b/spine-love/data/images/pelvis.png deleted file mode 100644 index f52c33cdd..000000000 Binary files a/spine-love/data/images/pelvis.png and /dev/null differ diff --git a/spine-love/data/images/rear_bracer.png b/spine-love/data/images/rear_bracer.png deleted file mode 100644 index 06b9c9cd7..000000000 Binary files a/spine-love/data/images/rear_bracer.png and /dev/null differ diff --git a/spine-love/data/images/rear_foot.png b/spine-love/data/images/rear_foot.png deleted file mode 100644 index 6fdf9ad60..000000000 Binary files a/spine-love/data/images/rear_foot.png and /dev/null differ diff --git a/spine-love/data/images/rear_foot_bend1.png b/spine-love/data/images/rear_foot_bend1.png deleted file mode 100644 index 10f2a72e9..000000000 Binary files a/spine-love/data/images/rear_foot_bend1.png and /dev/null differ diff --git a/spine-love/data/images/rear_foot_bend2.png b/spine-love/data/images/rear_foot_bend2.png deleted file mode 100644 index 01dff6265..000000000 Binary files a/spine-love/data/images/rear_foot_bend2.png and /dev/null differ diff --git a/spine-love/data/images/rear_shin.png b/spine-love/data/images/rear_shin.png deleted file mode 100644 index 02335c263..000000000 Binary files a/spine-love/data/images/rear_shin.png and /dev/null differ diff --git a/spine-love/data/images/rear_thigh.png b/spine-love/data/images/rear_thigh.png deleted file mode 100644 index d5da9f15d..000000000 Binary files a/spine-love/data/images/rear_thigh.png and /dev/null differ diff --git a/spine-love/data/images/rear_upper_arm.png b/spine-love/data/images/rear_upper_arm.png deleted file mode 100644 index 52d3a9ef5..000000000 Binary files a/spine-love/data/images/rear_upper_arm.png and /dev/null differ diff --git a/spine-love/data/images/right-ankle.png b/spine-love/data/images/right-ankle.png deleted file mode 100644 index 92fc568cf..000000000 Binary files a/spine-love/data/images/right-ankle.png and /dev/null differ diff --git a/spine-love/data/images/right-arm.png b/spine-love/data/images/right-arm.png deleted file mode 100644 index cac970f4b..000000000 Binary files a/spine-love/data/images/right-arm.png and /dev/null differ diff --git a/spine-love/data/images/right-foot-idle.png b/spine-love/data/images/right-foot-idle.png deleted file mode 100644 index aaf609f4e..000000000 Binary files a/spine-love/data/images/right-foot-idle.png and /dev/null differ diff --git a/spine-love/data/images/right-foot.png b/spine-love/data/images/right-foot.png deleted file mode 100644 index 7a06bf2de..000000000 Binary files a/spine-love/data/images/right-foot.png and /dev/null differ diff --git a/spine-love/data/images/right-hand.png b/spine-love/data/images/right-hand.png deleted file mode 100644 index 17c62bf4a..000000000 Binary files a/spine-love/data/images/right-hand.png and /dev/null differ diff --git a/spine-love/data/images/right-lower-leg.png b/spine-love/data/images/right-lower-leg.png deleted file mode 100644 index 1f00e8ec9..000000000 Binary files a/spine-love/data/images/right-lower-leg.png and /dev/null differ diff --git a/spine-love/data/images/right-pant-bottom.png b/spine-love/data/images/right-pant-bottom.png deleted file mode 100644 index 73309c05d..000000000 Binary files a/spine-love/data/images/right-pant-bottom.png and /dev/null differ diff --git a/spine-love/data/images/right-shoulder.png b/spine-love/data/images/right-shoulder.png deleted file mode 100644 index 23e9a2fd1..000000000 Binary files a/spine-love/data/images/right-shoulder.png and /dev/null differ diff --git a/spine-love/data/images/right-upper-leg.png b/spine-love/data/images/right-upper-leg.png deleted file mode 100644 index df0b11661..000000000 Binary files a/spine-love/data/images/right-upper-leg.png and /dev/null differ diff --git a/spine-love/data/images/torso.png b/spine-love/data/images/torso.png deleted file mode 100644 index c38b2ef45..000000000 Binary files a/spine-love/data/images/torso.png and /dev/null differ diff --git a/spine-love/data/raptor.atlas b/spine-love/data/raptor.atlas new file mode 100644 index 000000000..11728a52d --- /dev/null +++ b/spine-love/data/raptor.atlas @@ -0,0 +1,279 @@ + +raptor.png +size: 1024,1024 +format: RGBA8888 +filter: Linear,Linear +repeat: none +back_arm + rotate: true + xy: 140, 191 + size: 46, 29 + orig: 46, 29 + offset: 0, 0 + index: -1 +back_bracer + rotate: true + xy: 167, 317 + size: 39, 28 + orig: 39, 28 + offset: 0, 0 + index: -1 +back_hand + rotate: false + xy: 167, 358 + size: 36, 34 + orig: 36, 34 + offset: 0, 0 + index: -1 +back_knee + rotate: false + xy: 299, 478 + size: 49, 67 + orig: 49, 67 + offset: 0, 0 + index: -1 +back_thigh + rotate: true + xy: 167, 437 + size: 39, 24 + orig: 39, 24 + offset: 0, 0 + index: -1 +eyes_closed + rotate: true + xy: 2, 2 + size: 47, 45 + orig: 47, 45 + offset: 0, 0 + index: -1 +eyes_open + rotate: true + xy: 49, 2 + size: 47, 45 + orig: 47, 45 + offset: 0, 0 + index: -1 +eyes_surprised + rotate: true + xy: 96, 2 + size: 47, 45 + orig: 47, 45 + offset: 0, 0 + index: -1 +front_arm + rotate: false + xy: 419, 544 + size: 48, 30 + orig: 48, 30 + offset: 0, 0 + index: -1 +front_bracer + rotate: false + xy: 880, 695 + size: 41, 29 + orig: 41, 29 + offset: 0, 0 + index: -1 +front_hand + rotate: true + xy: 167, 394 + size: 41, 38 + orig: 41, 38 + offset: 0, 0 + index: -1 +front_open_hand + rotate: false + xy: 880, 726 + size: 43, 44 + orig: 43, 44 + offset: 0, 0 + index: -1 +front_thigh + rotate: false + xy: 360, 545 + size: 57, 29 + orig: 57, 29 + offset: 0, 0 + index: -1 +gun + rotate: false + xy: 785, 774 + size: 107, 103 + orig: 107, 103 + offset: 0, 0 + index: -1 +gun_nohand + rotate: false + xy: 614, 703 + size: 105, 102 + orig: 105, 102 + offset: 0, 0 + index: -1 +head + rotate: false + xy: 2, 137 + size: 136, 149 + orig: 136, 149 + offset: 0, 0 + index: -1 +lower_leg + rotate: true + xy: 780, 699 + size: 73, 98 + orig: 73, 98 + offset: 0, 0 + index: -1 +mouth_grind + rotate: false + xy: 469, 544 + size: 47, 30 + orig: 47, 30 + offset: 0, 0 + index: -1 +mouth_oooo + rotate: true + xy: 894, 772 + size: 105, 30 + orig: 105, 30 + offset: 0, 0 + index: -1 +mouth_smile + rotate: true + xy: 140, 239 + size: 47, 30 + orig: 47, 30 + offset: 0, 0 + index: -1 +neck + rotate: true + xy: 538, 577 + size: 18, 21 + orig: 18, 21 + offset: 0, 0 + index: -1 +raptor_arm_back + rotate: false + xy: 940, 936 + size: 82, 86 + orig: 82, 86 + offset: 0, 0 + index: -1 +raptor_body + rotate: false + xy: 2, 737 + size: 610, 285 + orig: 610, 285 + offset: 0, 0 + index: -1 +raptor_front_arm + rotate: true + xy: 195, 464 + size: 81, 102 + orig: 81, 102 + offset: 0, 0 + index: -1 +raptor_front_leg + rotate: false + xy: 2, 478 + size: 191, 257 + orig: 191, 257 + offset: 0, 0 + index: -1 +raptor_hindleg_back + rotate: false + xy: 614, 807 + size: 169, 215 + orig: 169, 215 + offset: 0, 0 + index: -1 +raptor_horn + rotate: false + xy: 360, 655 + size: 182, 80 + orig: 182, 80 + offset: 0, 0 + index: -1 +raptor_horn_back + rotate: false + xy: 360, 576 + size: 176, 77 + orig: 176, 77 + offset: 0, 0 + index: -1 +raptor_jaw + rotate: false + xy: 785, 879 + size: 153, 143 + orig: 153, 143 + offset: 0, 0 + index: -1 +raptor_saddle_noshadow + rotate: false + xy: 2, 288 + size: 163, 188 + orig: 163, 188 + offset: 0, 0 + index: -1 +raptor_saddle_strap_front + rotate: false + xy: 721, 710 + size: 57, 95 + orig: 57, 95 + offset: 0, 0 + index: -1 +raptor_saddle_strap_rear + rotate: true + xy: 940, 880 + size: 54, 74 + orig: 54, 74 + offset: 0, 0 + index: -1 +raptor_saddle_w_shadow + rotate: false + xy: 195, 547 + size: 163, 188 + orig: 163, 188 + offset: 0, 0 + index: -1 +raptor_tongue + rotate: true + xy: 544, 649 + size: 86, 64 + orig: 86, 64 + offset: 0, 0 + index: -1 +stirrup_back + rotate: true + xy: 140, 145 + size: 44, 35 + orig: 44, 35 + offset: 0, 0 + index: -1 +stirrup_front + rotate: false + xy: 538, 597 + size: 45, 50 + orig: 45, 50 + offset: 0, 0 + index: -1 +stirrup_strap + rotate: false + xy: 350, 497 + size: 49, 46 + orig: 49, 46 + offset: 0, 0 + index: -1 +torso + rotate: true + xy: 610, 647 + size: 54, 91 + orig: 54, 91 + offset: 0, 0 + index: -1 +visor + rotate: false + xy: 2, 51 + size: 131, 84 + orig: 131, 84 + offset: 0, 0 + index: -1 diff --git a/spine-love/data/raptor.json b/spine-love/data/raptor.json new file mode 100644 index 000000000..b81f95cd1 --- /dev/null +++ b/spine-love/data/raptor.json @@ -0,0 +1,2621 @@ +{ +"skeleton": { "hash": "xc68H5wnObEhNawCC1Fp/vJNrv4", "spine": "3.4.02", "width": 1223.72, "height": 1055.62, "images": "./images/" }, +"bones": [ + { "name": "root" }, + { "name": "hip", "parent": "root", "rotation": 3.15, "x": -136.78, "y": 415.47, "color": "fbff00ff" }, + { "name": "torso1", "parent": "hip", "length": 126.25, "rotation": -4.97, "x": 30.03, "y": -0.4, "color": "eaff00ff" }, + { "name": "saddle", "parent": "torso1", "length": 50.91, "rotation": 91.8, "x": 4.56, "y": 71.86, "color": "ff7300ff" }, + { "name": "spineboy_hip", "parent": "saddle", "length": 0.52, "rotation": 90.01, "x": 81.88, "y": 2.68, "color": "ffffffff" }, + { + "name": "spineboy_torso", + "parent": "spineboy_hip", + "length": 122.45, + "rotation": -75.85, + "x": 1.05, + "y": -2.1, + "color": "ffffffff" + }, + { "name": "torso2", "parent": "torso1", "length": 121.2, "rotation": 39.84, "x": 126.25, "y": -0.37, "color": "eaff00ff" }, + { "name": "neck", "parent": "torso2", "length": 70.59, "rotation": 41.37, "x": 121.19, "y": 0.34, "color": "eaff00ff" }, + { "name": "head", "parent": "neck", "length": 105.5, "rotation": 9.82, "x": 70.59, "y": 0.03, "color": "eaff00ff" }, + { "name": "horn_rear", "parent": "head", "length": 73.78, "rotation": 44.31, "x": 99.27, "y": -226.79, "color": "e07800ff" }, + { "name": "rear_arm_target", "parent": "horn_rear", "rotation": -133.55, "x": 232.68, "y": 245.84, "color": "e07800ff" }, + { + "name": "back_arm", + "parent": "spineboy_torso", + "length": 67.21, + "rotation": -120.89, + "x": 96.33, + "y": -38.46, + "color": "ffffffff" + }, + { "name": "back_bracer", "parent": "back_arm", "length": 43.68, "rotation": 17.48, "x": 67.21, "y": -0.31, "color": "ffffffff" }, + { + "name": "back_hand", + "parent": "back_bracer", + "length": 41.97, + "rotation": 9.2, + "x": 43.68, + "y": 0.06, + "inheritRotation": false, + "color": "ffffffff" + }, + { "name": "spineboy_rear_arm_goal", "parent": "saddle", "x": -30.43, "y": -100.08, "color": "ff0001ff" }, + { "name": "back_thigh", "parent": "spineboy_hip", "length": 71.15, "rotation": 160.75, "x": -9.57, "y": 2.31, "color": "ffffffff" }, + { "name": "back_knee", "parent": "back_thigh", "length": 97.17, "rotation": -54.97, "x": 71.15, "y": -0.28, "color": "ffffffff" }, + { "name": "horn_front", "parent": "head", "length": 87.48, "rotation": 49.36, "x": 82.09, "y": -221.36, "color": "15ff00ff" }, + { "name": "front_arm_target", "parent": "horn_front", "rotation": -138.59, "x": 294.58, "y": 234.17, "color": "15ff00ff" }, + { + "name": "front_arm", + "parent": "spineboy_torso", + "length": 74.51, + "rotation": -118.16, + "x": 101.37, + "y": 9.78, + "color": "ffffffff" + }, + { "name": "front_bracer", "parent": "front_arm", "length": 39.85, "rotation": 20.3, "x": 74.52, "y": -0.41, "color": "ffffffff" }, + { "name": "front_arm1", "parent": "torso2", "length": 109.99, "rotation": 224.54, "x": 46.37, "y": -84.61, "color": "15ff00ff" }, + { "name": "front_arm2", "parent": "front_arm1", "length": 86.33, "rotation": 105.23, "x": 109.99, "y": 0.2, "color": "15ff00ff" }, + { "name": "front_foot_goal", "parent": "root", "rotation": -0.94, "x": -45.79, "y": -28.67, "color": "ff0000ff" }, + { "name": "front_leg_goal", "parent": "front_foot_goal", "x": -106.06, "y": 115.58, "color": "ff0000ff" }, + { "name": "front_leg1", "parent": "hip", "length": 251.74, "rotation": -51.5, "x": 27.36, "y": -28.27, "color": "15ff00ff" }, + { "name": "front_leg2", "parent": "front_leg1", "length": 208.54, "rotation": 261.93, "x": 251.03, "y": 0.16, "color": "15ff00ff" }, + { "name": "front_leg3", "parent": "front_leg2", "length": 118.18, "rotation": 85.46, "x": 208.5, "y": -1.63, "color": "15ff00ff" }, + { + "name": "front_foot1", + "parent": "front_leg3", + "length": 57.79, + "rotation": 54.46, + "x": 118.19, + "y": -0.79, + "scaleX": 1.126, + "color": "15ff00ff" + }, + { + "name": "front_foot2", + "parent": "front_foot1", + "length": 56.19, + "rotation": -2.15, + "x": 57.78, + "y": -0.02, + "scaleX": 0.73, + "scaleY": 0.823, + "inheritRotation": false, + "color": "15ff00ff" + }, + { + "name": "front_foot3", + "parent": "front_foot2", + "length": 129.88, + "rotation": -2.7, + "x": 49.71, + "y": 20.65, + "scaleX": 1.154, + "color": "15ff00ff" + }, + { "name": "front_hand", "parent": "front_arm2", "length": 47.55, "rotation": -56.83, "x": 86.33, "y": 0.06, "color": "15ff00ff" }, + { + "name": "front_hand2", + "parent": "front_bracer", + "length": 58.18, + "rotation": 13.9, + "x": 39.98, + "y": -0.89, + "inheritRotation": false, + "color": "ffffffff" + }, + { "name": "spineboy_front_arm_goal", "parent": "saddle", "x": -50.7, "y": -96.93, "color": "ff0004ff" }, + { + "name": "front_thigh", + "parent": "spineboy_hip", + "length": 77.79, + "rotation": 163.34, + "x": 15.51, + "y": 17.01, + "color": "ffffffff" + }, + { "name": "lower_leg", "parent": "front_thigh", "length": 111.5, "rotation": -49.62, "x": 77.92, "y": -0.1, "color": "ffffffff" }, + { + "name": "gun", + "parent": "spineboy_hip", + "length": 181.35, + "rotation": 107.11, + "x": 16.86, + "y": -7.89, + "scaleX": 0.816, + "scaleY": 0.816, + "color": "ffffffff" + }, + { "name": "neck2", "parent": "spineboy_torso", "length": 32.04, "rotation": -45.22, "x": 113.44, "y": -15.21, "color": "ffffffff" }, + { "name": "head2", "parent": "neck2", "length": 249.64, "rotation": 11.65, "x": 23.01, "y": 3.47, "color": "ffffffff" }, + { "name": "jaw", "parent": "head", "length": 203.76, "rotation": -140.14, "x": 29.36, "y": -40.15, "color": "ffff00ff" }, + { "name": "rear_arm1", "parent": "torso2", "length": 109.56, "rotation": -124.71, "x": 57.05, "y": -95.38, "color": "e07800ff" }, + { "name": "rear_arm2", "parent": "rear_arm1", "length": 85.8, "rotation": 123.56, "x": 109.56, "color": "e07800ff" }, + { "name": "rear_foot_goal", "parent": "root", "x": 33.43, "y": 30.81, "color": "ff0000ff" }, + { "name": "rear_leg_goal", "parent": "rear_foot_goal", "x": -127.51, "y": 75.99, "color": "ff0000ff" }, + { "name": "rear_leg1", "parent": "hip", "length": 226.27, "rotation": -54.76, "x": 55.19, "y": -71.25, "color": "e07800ff" }, + { "name": "rear_leg2", "parent": "rear_leg1", "length": 172.58, "rotation": -92.25, "x": 226.32, "y": 0.23, "color": "e07800ff" }, + { "name": "rear_leg3", "parent": "rear_leg2", "length": 103.05, "rotation": 82.81, "x": 172.31, "y": 2.21, "color": "e07800ff" }, + { "name": "rear_foot1", "parent": "rear_leg3", "length": 84.51, "rotation": 75.43, "x": 102.37, "y": -0.02, "color": "e07800ff" }, + { + "name": "rear_foot2", + "parent": "rear_foot1", + "length": 102.31, + "rotation": -6.13, + "x": 84.49, + "y": -0.34, + "inheritRotation": false, + "color": "e07800ff" + }, + { "name": "rear_hand", "parent": "rear_arm2", "length": 45.8, "rotation": -76.28, "x": 85.8, "y": 0.1, "color": "e07800ff" }, + { + "name": "saddle_strap_front1", + "parent": "saddle", + "length": 97.27, + "rotation": -148.11, + "x": -27.36, + "y": -73.38, + "color": "ff7300ff" + }, + { + "name": "saddle_strap_front2", + "parent": "saddle_strap_front1", + "length": 102.74, + "rotation": -11.13, + "x": 97.29, + "y": 0.3, + "color": "ff7300ff" + }, + { + "name": "saddle_strap_rear1", + "parent": "saddle", + "length": 38.62, + "rotation": 151.13, + "x": -33.34, + "y": 87.32, + "color": "ff7300ff" + }, + { "name": "saddle_strap_rear2", "parent": "saddle_strap_rear1", "length": 54.36, "x": 38.63, "y": -0.02, "color": "ff7300ff" }, + { + "name": "saddle_strap_rear3", + "parent": "saddle_strap_rear2", + "length": 44.04, + "rotation": 3.63, + "x": 54.86, + "y": 0.19, + "color": "ff7300ff" + }, + { "name": "stirrup", "parent": "saddle", "length": 78.17, "rotation": -68.85, "x": -81.94, "y": -103.38, "color": "ff7300ff" }, + { "name": "stirrup_strap1", "parent": "saddle", "length": 43.69, "rotation": -135, "x": -20.38, "y": -29.37, "color": "ff7300ff" }, + { "name": "stirrup_strap2", "parent": "stirrup_strap1", "length": 51.62, "rotation": 9.38, "x": 43.7, "color": "ff7300ff" }, + { "name": "tail1", "parent": "hip", "length": 162.53, "rotation": 162.92, "x": -20.86, "y": 6.87, "color": "eaff00ff" }, + { "name": "tail2", "parent": "tail1", "length": 130.02, "rotation": 30.3, "x": 162.53, "y": -0.82, "color": "eaff00ff" }, + { "name": "tail3", "parent": "tail2", "length": 141.06, "rotation": 6.88, "x": 130.02, "y": 0.1, "color": "eaff00ff" }, + { "name": "tail4", "parent": "tail3", "length": 126.25, "rotation": -18.86, "x": 141.05, "y": 0.64, "color": "eaff00ff" }, + { "name": "tail5", "parent": "tail4", "length": 91.06, "rotation": -22.34, "x": 126.25, "y": -0.47, "color": "eaff00ff" }, + { "name": "tongue1", "parent": "head", "length": 55.11, "rotation": -129.04, "x": 20.81, "y": -104.75, "color": "ffff00ff" }, + { "name": "tongue2", "parent": "tongue1", "length": 44.66, "rotation": 8.93, "x": 55.59, "y": 0.93, "color": "fff200ff" }, + { "name": "tongue3", "parent": "tongue2", "length": 43.64, "rotation": 12.86, "x": 44.26, "y": -0.2, "color": "fff200ff" } +], +"slots": [ + { "name": "back_hand", "bone": "back_hand", "attachment": "back_hand" }, + { "name": "back_arm", "bone": "back_arm", "attachment": "back_arm" }, + { "name": "back_bracer", "bone": "back_bracer", "attachment": "back_bracer" }, + { "name": "back_knee", "bone": "back_knee", "attachment": "back_knee" }, + { "name": "raptor_horn_back", "bone": "horn_rear", "attachment": "raptor_horn_back" }, + { "name": "raptor_tongue", "bone": "root", "attachment": "raptor_tongue" }, + { "name": "raptor_hindleg_back", "bone": "rear_leg1", "attachment": "raptor_hindleg_back" }, + { "name": "raptor_arm_back", "bone": "root", "attachment": "raptor_arm_back" }, + { "name": "raptor_body", "bone": "torso1", "attachment": "raptor_body" }, + { "name": "back_thigh", "bone": "back_thigh", "attachment": "back_thigh" }, + { "name": "raptor_saddle_strap_front", "bone": "saddle_strap_front1", "attachment": "raptor_saddle_strap_front" }, + { "name": "raptor_saddle_strap_rear", "bone": "saddle_strap_rear1", "attachment": "raptor_saddle_strap_rear" }, + { "name": "raptor_saddle_w_shadow", "bone": "saddle", "attachment": "raptor_saddle_w_shadow" }, + { "name": "raptor_saddle_noshadow", "bone": "saddle" }, + { "name": "raptor_front_arm", "bone": "root", "attachment": "raptor_front_arm" }, + { "name": "raptor_front_leg", "bone": "front_leg1", "attachment": "raptor_front_leg" }, + { "name": "raptor_jaw", "bone": "jaw", "attachment": "raptor_jaw" }, + { "name": "neck", "bone": "neck2", "attachment": "neck" }, + { "name": "spineboy_torso", "bone": "spineboy_torso", "attachment": "torso" }, + { "name": "head", "bone": "head2", "attachment": "head" }, + { "name": "eyes_open", "bone": "head2", "attachment": "eyes_open" }, + { "name": "mouth_smile", "bone": "head2", "attachment": "mouth_smile" }, + { "name": "visor", "bone": "head2", "attachment": "visor" }, + { "name": "raptor_horn", "bone": "horn_front", "attachment": "raptor_horn" }, + { "name": "front_thigh", "bone": "front_thigh", "attachment": "front_thigh" }, + { "name": "stirrup_back", "bone": "stirrup", "attachment": "stirrup_back" }, + { "name": "lower_leg", "bone": "lower_leg", "attachment": "lower_leg" }, + { "name": "stirrup_strap", "bone": "stirrup", "attachment": "stirrup_strap" }, + { "name": "stirrup_front", "bone": "stirrup", "attachment": "stirrup_front" }, + { "name": "gun", "bone": "gun", "attachment": "gun_nohand" }, + { "name": "front_arm", "bone": "front_arm", "attachment": "front_arm" }, + { "name": "front_bracer", "bone": "front_bracer", "attachment": "front_bracer" }, + { "name": "front_hand", "bone": "front_hand2", "attachment": "front_hand" } +], +"ik": [ + { + "name": "front_arm_goal", + "bones": [ "front_arm", "front_bracer" ], + "target": "front_arm_target" + }, + { + "name": "front_foot_goal", + "bones": [ "front_leg3", "front_foot1" ], + "target": "front_foot_goal" + }, + { + "name": "front_leg_goal", + "bones": [ "front_leg1", "front_leg2" ], + "target": "front_leg_goal", + "bendPositive": false + }, + { + "name": "rear_arm_goal", + "bones": [ "back_arm", "back_bracer" ], + "target": "rear_arm_target" + }, + { + "name": "rear_foot_goal", + "bones": [ "rear_leg3", "rear_foot1" ], + "target": "rear_foot_goal" + }, + { + "name": "rear_leg_goal", + "bones": [ "rear_leg1", "rear_leg2" ], + "target": "rear_leg_goal", + "bendPositive": false + }, + { + "name": "spineboy_front_leg_goal", + "bones": [ "front_thigh", "lower_leg" ], + "target": "spineboy_front_arm_goal", + "bendPositive": false + }, + { + "name": "spineboy_rear_leg_goal", + "bones": [ "back_thigh", "back_knee" ], + "target": "spineboy_rear_arm_goal", + "bendPositive": false + }, + { + "name": "stirrup", + "bones": [ "stirrup_strap1", "stirrup_strap2" ], + "target": "stirrup" + } +], +"skins": { + "default": { + "back_arm": { + "back_arm": { "x": 29.71, "y": 2.04, "rotation": 16.75, "width": 91, "height": 57 } + }, + "back_bracer": { + "back_bracer": { "x": 13.19, "y": -4.28, "rotation": -0.72, "width": 77, "height": 55 } + }, + "back_hand": { + "back_hand": { "x": 18.6, "y": 4.23, "rotation": -10.99, "width": 72, "height": 68 } + }, + "back_knee": { + "back_knee": { "x": 45.77, "y": 20.47, "rotation": 74.22, "width": 97, "height": 134 } + }, + "back_thigh": { + "back_thigh": { "x": 37.85, "y": -4.36, "rotation": 19.24, "width": 78, "height": 47 } + }, + "eyes_open": { + "eyes_open": { "x": 93.23, "y": -25.45, "rotation": -70.57, "width": 93, "height": 89 } + }, + "front_arm": { + "front_arm": { "x": 31.38, "y": 5.09, "rotation": 14.02, "width": 96, "height": 60 } + }, + "front_bracer": { + "front_bracer": { "x": 11.68, "y": -1.36, "rotation": -6.28, "width": 81, "height": 58 } + }, + "front_hand": { + "front_hand": { "x": 35.7, "y": 7.84, "rotation": -13.96, "width": 82, "height": 75 }, + "front_open_hand": { "x": 42.54, "y": 4.62, "rotation": 62.19, "width": 86, "height": 87 }, + "gun": { "x": 98.9, "y": 22.97, "rotation": 56.34, "width": 213, "height": 206 } + }, + "front_thigh": { + "front_thigh": { "x": 45.7, "y": -3.1, "rotation": 16.65, "width": 114, "height": 58 } + }, + "gun": { + "gun_nohand": { + "type": "mesh", + "uvs": [ 0.71081, 0.16149, 0.85807, 0.41784, 1, 0.6649, 1, 1, 0.71457, 1, 0.49802, 0.6905, 0.30182, 0.41009, 0, 0.58226, 0, 0.1174, 0.27187, 0.12429, 0.24857, 0, 0.36658, 0, 0.61804, 0, 0.70575, 0.53546, 0.53668, 0.26855 ], + "triangles": [ 3, 13, 2, 5, 13, 4, 3, 4, 13, 13, 6, 14, 13, 5, 6, 13, 1, 2, 6, 8, 9, 6, 7, 8, 13, 14, 1, 14, 0, 1, 6, 9, 14, 9, 11, 14, 14, 12, 0, 14, 11, 12, 9, 10, 11 ], + "vertices": [ 23.48, 50.63, 83.86, 46.32, 142.05, 42.17, 197.91, 3.34, 163.7, -45.86, 86.15, -47.34, 15.9, -48.68, 8.42, -120.68, -69.06, -66.81, -35.32, -20.73, -58.83, -10.35, -44.69, 9.99, -14.55, 53.35, 85.21, 6.43, 20.45, 8.2 ], + "hull": 13, + "edges": [ 14, 12, 6, 8, 6, 4, 14, 16, 16, 18, 18, 20, 20, 22, 22, 24, 8, 10, 10, 12, 6, 26, 10, 26, 4, 2, 26, 2, 22, 28, 28, 26, 12, 28, 2, 0, 0, 24, 28, 0, 18, 12 ], + "width": 210, + "height": 203 + } + }, + "head": { + "head": { "x": 132.33, "y": 1.19, "rotation": -70.57, "width": 271, "height": 298 } + }, + "lower_leg": { + "lower_leg": { "x": 76.2, "y": 22.2, "rotation": 66.28, "width": 146, "height": 195 } + }, + "mouth_smile": { + "mouth_smile": { "x": 27.66, "y": -31.33, "rotation": -70.57, "width": 93, "height": 59 } + }, + "neck": { + "neck": { "x": 15.09, "y": -1.66, "rotation": -58.91, "width": 36, "height": 41 } + }, + "raptor_arm_back": { + "raptor_arm_back": { + "type": "mesh", + "uvs": [ 0.38711, 0.29362, 0.31382, 0.46513, 0.29242, 0.51521, 0.32475, 0.4931, 0.57587, 0.32138, 0.63254, 0.28263, 0.71632, 0.34507, 0.94948, 0.51888, 0.94947, 0.60129, 1, 0.65257, 1, 0.90624, 0.95462, 0.99934, 0.88957, 0.83204, 0.80294, 0.99998, 0.75236, 0.75696, 0.6654, 0.713, 0.62288, 0.63242, 0.58194, 0.65031, 0.22478, 0.80641, 0.07791, 0.73315, 0.07825, 0.66549, 0.07984, 0.34306, 0, 0.29728, 0, 0, 0.32334, 0 ], + "triangles": [ 6, 15, 16, 5, 6, 16, 5, 16, 4, 6, 7, 15, 16, 17, 4, 8, 15, 7, 14, 15, 8, 12, 14, 8, 12, 8, 9, 12, 9, 10, 11, 12, 10, 13, 14, 12, 17, 3, 4, 19, 20, 2, 18, 19, 2, 18, 2, 3, 18, 3, 17, 21, 22, 23, 24, 21, 23, 0, 21, 24, 1, 21, 0, 1, 20, 21, 2, 20, 1 ], + "vertices": [ 2, 40, 36.95, 33.31, 0.91666, 41, 68.53, 41.05, 0.08333, 2, 40, 66.01999, 20.35, 0.76813, 41, 41.41, 24.39, 0.23186, 2, 40, 74.51, 16.57, 0.64468, 41, 33.49, 19.53, 0.35531, 2, 40, 70.89, 21.97, 0.29071, 41, 39.99, 19.45999, 0.70928, 3, 40, 42.77, 63.89, 0.11483, 41, 90.47, 18.95, 0.60854, 49, -17.2, 9, 0.2766, 2, 41, 101.86, 18.83, 0.45955, 49, -14.38, 20.04, 0.54044, 2, 41, 106.47, 2.08, 0.0625, 49, 2.98, 20.56, 0.9375, 1, 49, 51.32, 21.98, 1, 1, 49, 60.41, 11.1, 1, 1, 49, 72.39, 9.60999, 1, 1, 49, 100.37, -23.87, 1, 1, 49, 104.96, -40.9, 1, 1, 49, 78.37, -25.61, 1, 1, 49, 86.05, -56.84, 1, 1, 49, 52.92, -30.04, 1, 2, 41, 62.24, -43.92, 0.0625, 49, 37.18999, -33.33, 0.9375, 2, 41, 64.89, -28.65, 0.3125, 49, 22.98, -27.14, 0.6875, 2, 41, 57.69, -27.17, 0.30612, 49, 19.83, -33.78, 0.69387, 2, 40, 124.19, 3.83, 0.19395, 41, -5.09, -14.23, 0.80604, 2, 40, 110.77, -19.65, 0.3125, 41, -16.87999, 10.1, 0.6875, 2, 40, 99.14, -19.2, 0.51612, 41, -9.93, 19.44, 0.48386, 2, 40, 43.73, -17.03, 0.9375, 41, 23.17, 63.92, 0.0625, 1, 40, 35.41, -29.77, 1, 1, 40, -15.68, -28.02, 1, 1, 40, -13.87, 24.65, 1 ], + "hull": 25, + "edges": [ 44, 46, 44, 42, 38, 36, 32, 30, 30, 28, 28, 26, 24, 22, 18, 16, 16, 14, 46, 48, 38, 4, 6, 4, 6, 36, 42, 40, 40, 38, 4, 2, 2, 0, 40, 2, 10, 32, 36, 34, 34, 32, 10, 8, 8, 6, 34, 8, 14, 12, 12, 10, 12, 30, 18, 20, 22, 20, 26, 24, 48, 0 ], + "width": 163, + "height": 172 + } + }, + "raptor_body": { + "raptor_body": { + "type": "mesh", + "uvs": [ 0.89014, 0.11136, 1, 0.22194, 1, 0.42847, 0.88179, 0.38589, 0.874, 0.47986, 0.84783, 0.51728, 0.82504, 0.54984, 0.82403, 0.61606, 0.82305, 0.67972, 0.74042, 0.86709, 0.61596, 0.93097, 0.49649, 0.90968, 0.41186, 0.71379, 0.36955, 0.70086, 0.32823, 0.68824, 0.30082, 0.69962, 0.27515, 0.71028, 0.25301, 0.71948, 0.22568, 0.73082, 0.20832, 0.72362, 0.19092, 0.7164, 0.15952, 0.70337, 0.1301, 0.69116, 0.09227, 0.67546, 0.06029, 0.63165, 0.02855, 0.58817, 0, 0.49874, 0.05045, 0.53494, 0.08267, 0.54507, 0.11815, 0.55623, 0.14733, 0.54161, 0.17913, 0.52568, 0.20324, 0.5136, 0.22867, 0.50087, 0.24871, 0.47664, 0.27523, 0.44458, 0.32026, 0.39015, 0.37517, 0.35747, 0.43476, 0.32201, 0.4893, 0.35534, 0.56021, 0.39867, 0.61587, 0.40674, 0.67769, 0.4157, 0.69094, 0.31314, 0.69362, 0.14742, 0.79219, 0.08354, 0.51541, 0.74573, 0.62393, 0.75425, 0.70856, 0.7287, 0.76132, 0.63288, 0.7566, 0.49454, 0.80613, 0.27517, 0.65885, 0.59037, 0.53929, 0.54937, 0.42632, 0.52207, 0.3246, 0.55241, 0.22715, 0.618, 0.10574, 0.61341, 0.03969, 0.56109, 0.77916, 0.39461, 0.37556, 0.53721, 0.27743, 0.58416, 0.16958, 0.61582, 0.07259, 0.58715, 0.87545, 0.31683, 0.85488, 0.21417, 0.81012, 0.17403, 0.83214, 0.25662, 0.83823, 0.32214, 0.84622, 0.41719, 0.59954, 0.57003, 0.49074, 0.53763, 0.76917, 0.43888, 0.75912, 0.56845, 0.871, 0.3701, 0.85431, 0.43545, 0.89558, 0.32412, 0.90105, 0.22877, 0.91523, 0.20564, 0.93086, 0.219, 0.93446, 0.25858, 0.91956, 0.2776, 0.9061, 0.26423, 0.9415, 0.25929, 0.93589, 0.21545, 0.91669, 0.19192, 0.89297, 0.22201, 0.90245, 0.28513, 0.92006, 0.281, 0.92143, 0.29619, 0.94856, 0.2643, 0.19894, 0.61694, 0.13973, 0.61469, 0.25158, 0.60156, 0.88779, 0.26675 ], + "triangles": [ 13, 60, 12, 12, 71, 46, 46, 70, 47, 11, 12, 46, 47, 11, 46, 10, 11, 47, 13, 14, 55, 15, 93, 14, 16, 56, 15, 58, 26, 27, 28, 58, 27, 63, 28, 29, 63, 58, 28, 25, 26, 58, 25, 58, 63, 57, 63, 29, 92, 29, 30, 57, 29, 92, 24, 25, 63, 24, 63, 57, 23, 24, 57, 92, 23, 57, 22, 23, 92, 62, 22, 92, 21, 22, 62, 20, 21, 91, 92, 30, 62, 91, 21, 62, 62, 30, 31, 91, 62, 31, 31, 32, 93, 20, 91, 56, 56, 19, 20, 17, 19, 56, 18, 19, 17, 93, 91, 31, 55, 34, 35, 33, 34, 55, 61, 33, 55, 61, 32, 33, 93, 32, 61, 56, 91, 93, 56, 93, 15, 16, 17, 56, 36, 37, 54, 60, 35, 36, 54, 60, 36, 60, 55, 35, 61, 55, 14, 93, 61, 14, 60, 13, 55, 12, 60, 54, 39, 54, 37, 39, 37, 38, 71, 54, 39, 40, 71, 39, 53, 71, 40, 53, 40, 41, 12, 54, 71, 46, 71, 53, 66, 45, 0, 44, 45, 66, 1, 84, 85, 65, 66, 0, 0, 85, 65, 85, 86, 65, 85, 0, 1, 78, 85, 84, 79, 78, 84, 78, 86, 85, 77, 86, 78, 77, 78, 79, 67, 66, 65, 83, 80, 79, 84, 83, 79, 77, 79, 80, 84, 90, 83, 82, 77, 80, 1, 90, 84, 94, 65, 86, 94, 86, 77, 94, 77, 82, 67, 65, 94, 51, 44, 66, 51, 66, 67, 81, 82, 80, 83, 88, 81, 87, 94, 82, 87, 82, 81, 87, 81, 88, 88, 90, 89, 87, 88, 89, 80, 83, 81, 90, 88, 83, 43, 44, 51, 64, 67, 94, 64, 94, 87, 68, 67, 64, 51, 67, 68, 76, 64, 87, 76, 87, 89, 74, 68, 64, 74, 64, 76, 3, 74, 76, 59, 43, 51, 59, 51, 68, 69, 59, 68, 74, 69, 68, 69, 74, 3, 90, 1, 2, 89, 90, 2, 76, 89, 2, 3, 76, 2, 75, 69, 3, 4, 75, 3, 75, 72, 69, 5, 75, 4, 5, 72, 75, 72, 59, 69, 59, 42, 43, 72, 42, 59, 50, 42, 72, 50, 72, 5, 6, 50, 5, 73, 50, 6, 52, 70, 42, 50, 52, 42, 73, 52, 50, 7, 73, 6, 49, 73, 7, 52, 73, 49, 8, 49, 7, 48, 52, 49, 48, 49, 8, 47, 52, 48, 70, 53, 41, 70, 41, 42, 46, 53, 70, 47, 70, 52, 9, 48, 8, 47, 48, 9, 10, 47, 9 ], + "vertices": [ 1, 8, 147.48, -145.48, 1, 1, 8, 89.4, -281.62, 1, 1, 8, -28.24, -285.93, 1, 1, 8, -14.58, -194.68, 1, 4, 6, 238.39, -84.13, 0.20851, 7, 32.09999, -140.85, 0.19336, 8, -61.96, -132.26, 0.42115, 39, 129.57, 6.39, 0.17696, 5, 2, 332.7, 63.71, 0.06905, 6, 199.57, -83.03, 0.29424, 7, 3.69, -114.37, 0.2194, 8, -85.43, -101.32, 0.30859, 39, 127.34, -26.64, 0.1087, 5, 2, 307.08, 43.5, 0.11018, 6, 166.95, -82.12999, 0.37282, 7, -20.18, -92.14, 0.24572, 8, -105.18, -75.33999, 0.21862, 39, 123.08, -64.79, 0.05264, 4, 2, 307.75, 5.7, 0.18627, 6, 143.25, -111.59, 0.58009, 7, -57.43, -98.57, 0.12363, 8, -142.98, -75.33, 0.10999, 2, 2, 308.7, -30.55, 0.25, 6, 120.75, -140.04, 0.75, 2, 2, 213.94, -142.7, 0.75, 6, -23.83, -165.45, 0.25, 3, 2, 64.44999, -187.34, 0.31139, 58, -158.45, 158.33, 0.10379, 1, 84.16, -190.98, 0.5848, 1, 1, -61.47, -178.84, 1, 4, 58, 118.47, 114.74, 0.07383, 59, 17.17, 122.49, 0.17504, 60, -100.71, 132.55, 0.06818, 1, -166.91, -67.94999, 0.68294, 4, 58, 170.4, 123.13, 0.06537, 59, 66.71, 104.77, 0.20999, 60, -53.08, 110.21, 0.12016, 1, -217.69, -61.33, 0.60447, 6, 58, 221.11, 131.31, 0.02179, 59, 115.07, 87.47, 0.23058, 60, -6.58, 88.39, 0.16258, 61, -168.92, 31, 0.02826, 62, -282.82, -90.19, 0.029, 1, -267.66, -55.14, 0.52776, 5, 59, 146.51, 86.08, 0.23635, 60, 26.66, 83.39, 0.19338, 61, -134.99, 41.34, 0.06624, 62, -257.52, -60.65, 0.06962, 1, -298.87, -61.99, 0.43436, 5, 59, 178.73, 86.41, 0.22521, 60, 56.68, 81.29, 0.20997, 61, -107.13, 46.31, 0.11271, 62, -232.44, -51.26, 0.12148, 1, -328.68, -69.24, 0.3306, 5, 59, 203.26, 86.51, 0.21603, 60, 83.06, 77.01999, 0.22457, 61, -79.56, 53.53, 0.13939, 62, -210.89, -28.3, 0.15618, 1, -354.01, -75.41, 0.26379, 5, 59, 238.06, 85.41, 0.20114, 60, 115.65, 74.66, 0.2315, 61, -49.53, 60.58, 0.16455, 62, -185.49, -14.98, 0.19123, 1, -385.33, -83.15, 0.21156, 5, 59, 255.33, 78.85, 0.18224, 60, 133.83, 63.18, 0.23194, 61, -27.04, 56.84, 0.18907, 62, -163.58, -5.26, 0.22658, 1, -406.45, -79.89, 0.17015, 5, 59, 275.48, 71.62, 0.16169, 60, 152.97, 53.58, 0.22885, 61, -5.82, 53.94, 0.21292, 62, -142.85, 0.11, 0.26159, 1, -427.72, -77.47, 0.13493, 5, 59, 313.81, 53.61, 0.14198, 60, 188.04, 35.82, 0.22293, 61, 31.84, 49.3, 0.23478, 62, -106.46, 7.49, 0.29326, 1, -465.96, -72.58999, 0.10702, 5, 59, 345.74, 45.54, 0.12502, 60, 219.6, 19.28, 0.2179, 61, 68.31, 43.02, 0.25622, 62, -70.12999, 18.19, 0.32248, 1, -502.09, -68.19, 0.07835, 4, 59, 390.81, 21.3, 0.11758, 60, 261.62, -3.66, 0.22607, 61, 114.55, 37.83, 0.29087, 62, -26.15, 30.34, 0.36547, 4, 59, 423.87, -11.11, 0.10536, 60, 291.46, -39.06, 0.21954, 61, 154.83, 14.99, 0.30098, 62, 19.91, 25.67, 0.37409, 4, 59, 456.68, -43.27, 0.09949, 60, 321.06, -74.19999, 0.21749, 61, 194.79, -7.66, 0.30788, 62, 65.62, 21.04, 0.37513, 4, 59, 480.34, -100.28, 0.10045, 60, 339.2, -133.2, 0.22026, 61, 232.3, -56.69, 0.31103, 62, 119.7, -8.68999, 0.36824, 4, 59, 424.34, -67.51999, 0.10379, 60, 286.57, -95.27, 0.23087, 61, 169.77, -39.4, 0.30828, 62, 55.51, -18.08, 0.35705, 4, 59, 387.08, -53.84, 0.11505, 60, 250.77, -78.11, 0.2454, 61, 130.24, -35.75, 0.30092, 62, 17.87, -30.67, 0.3386, 4, 59, 346.04, -38.78, 0.13471, 60, 211.34, -59.22, 0.26271, 61, 86.7, -31.72, 0.2888, 62, -23.59, -44.54, 0.31376, 5, 58, 449.17, 125.97, 0.02419, 59, 311.45, -35.25, 0.16384, 60, 175.89, -56.83, 0.2727, 61, 51.53, -43.14, 0.26317, 62, -52.88, -67.87, 0.27607, 5, 58, 418.38, 93.72, 0.05913, 59, 269.72, -40.64, 0.19681, 60, 135.19, -53.82, 0.27688, 61, 13.42, -53.11, 0.23219, 62, -82.03, -93.66, 0.23497, 5, 58, 390.82, 86.58, 0.10638, 59, 241.19, -39.8, 0.2354, 60, 105.59, -52.93, 0.27331, 61, -16.25, -62.16, 0.19459, 62, -108.34, -111.24, 0.19028, 5, 58, 364.8, 62.48, 0.14347, 59, 207.71, -42.14, 0.28099, 60, 73.33, -49.43, 0.26867, 61, -46.11, -70.49, 0.15764, 62, -129.51, -133.56, 0.1492, 5, 58, 345.49, 47.53, 0.18499, 59, 182.34, -50.62, 0.33114, 60, 45.87, -56.62, 0.25881, 61, -71.57, -84.96, 0.1174, 62, -150.85, -153.35, 0.10763, 5, 58, 319.95, 15.15, 0.23755, 59, 145.6, -61.95, 0.39396, 60, 9.60999, -63.26, 0.24619, 61, -101.06, -105.58, 0.06443, 62, -165.65, -187.83, 0.05784, 3, 58, 276.58, -30.61, 0.29942, 59, 85.52, -81.11, 0.46774, 60, -52.01, -76.62, 0.23283, 3, 58, 214.5, -70.36, 0.32855, 59, 11.97, -85.98, 0.48601, 60, -125.69, -74.48, 0.18543, 2, 58, 147.14, -113.5, 0.59565, 59, -67.83999, -91.26, 0.40433, 2, 2, -113.14, 135.84, 0.24192, 58, 91.72, -112.59, 0.75807, 2, 2, -42.12, 116.77, 0.14515, 58, 18.2, -111.17, 0.85484, 1, 2, 44.2, 107.1, 1, 2, 2, 140.09, 96.35, 0.22579, 6, 72.58999, 65.41, 0.7742, 4, 2, 137.69, 169.35, 0.05644, 6, 117.5, 123, 0.24355, 7, 78.3, 94.48, 0.2125, 8, 23.7, 91.74, 0.4875, 2, 7, 171.15, 111.98, 0.25, 8, 118.17, 93.15, 0.75, 1, 8, 158.96, -25.58, 1, 1, 1, -40.63, -86.01, 1, 3, 2, 67.33999, -86.66, 0.33215, 58, -137.02, 59.92, 0.08303, 1, 92.54, -90.61, 0.5848, 2, 2, 170.13, -66.29, 0.75, 6, -8.53, -78.72, 0.25, 2, 2, 231.74, -8.12, 0.4, 6, 76.03, -73.51999, 0.6, 4, 2, 222.04, 70.41, 0.17551, 6, 118.9, -7, 0.55823, 7, -6.58, -3.99, 0.17739, 8, -76.73, 9.18, 0.08884, 1, 8, 50.43, -46.56, 1, 1, 6, -9.88, 20.65, 1, 2, 2, -53.22, 20.53, 0.2, 58, 5.8, -15.09, 0.8, 3, 2, -180.71, 32.22, 0.08564, 58, 132.35, 4.23999, 0.56215, 59, -23.98, 19.01, 0.35219, 3, 58, 246.39, 57.53, 0.30273, 59, 101.61, 10.65, 0.46989, 60, -27.28, 13.2, 0.22737, 5, 58, 346.99, 126.85, 0.13479, 59, 223.17, 22.83, 0.28279, 60, 94.88, 13.77, 0.24481, 61, -47.85, -3.72, 0.17322, 62, -158.02, -73.16, 0.16438, 4, 59, 367.51, -9.96, 0.14656, 60, 235.45, -32.57, 0.23073, 61, 100.06, 1.62, 0.29607, 62, -24.81, -8.63, 0.32661, 4, 59, 440.24, -55.6, 0.10821, 60, 303.52, -84.91, 0.21897, 61, 182.07, -23.8, 0.31097, 62, 60.48, 1.14, 0.36182, 3, 6, 174.99, 22.22, 0.2, 7, 54.82, -19.14, 0.6, 8, -18.79999, -16.2, 0.2, 3, 58, 189.25, 30.83, 0.33253, 59, 38.68, 14.84, 0.48076, 60, -89.52, 23.34, 0.18669, 5, 58, 295.08, 91.08, 0.22891, 59, 160.45, 16.54, 0.38754, 60, 31.85, 13.48, 0.2306, 61, -106.86, -25.89, 0.08042, 62, -203.08, -117.24, 0.0725, 5, 58, 414.43, 146.25, 0.07359, 59, 291.61, 7.27, 0.20198, 60, 161.53, -8.2, 0.23762, 61, 22.27, -1.17999, 0.24024, 62, -94.86, -42.56, 0.24654, 4, 59, 404.01, -32.87, 0.12351, 60, 269.61, -58.84, 0.22261, 61, 141.21, -11.13, 0.30609, 62, 17.98, -3.72, 0.34777, 1, 8, 26.4, -166.06, 1, 1, 8, 87.21, -106.12, 1, 1, 8, 108.19, -49.62, 1, 2, 8, 61.73, -82.12999, 0.50021, 39, 4.42, 52.83, 0.49978, 2, 8, 22.84, -109.4, 0.50021, 39, 51.52, 46.73, 0.49978, 4, 6, 247.12, -50.52, 0.06545, 7, 60.86, -121.4, 0.06069, 8, -30.3, -118, 0.49079, 39, 96.58, 17.21999, 0.38305, 1, 2, 26.73, 14.8, 1, 2, 2, -107.97, 25.67, 0.24192, 58, 60.17, -6.91, 0.75807, 4, 2, 235.53, 102.96, 0.0761, 6, 150.1, 9.35, 0.35533, 7, 27.64, -12.34, 0.41675, 8, -44.43, -4.87, 0.1518, 3, 2, 227.15, 28.49, 0.31015, 6, 95.96, -42.46, 0.60548, 7, -47.23, -15.44, 0.08435, 2, 8, 5.19, -153.1, 0.87618, 39, 90.96, 71.21, 0.12381, 4, 6, 243.13, -60.59, 0.10669, 7, 51.21, -126.33, 0.09893, 8, -40.65, -121.21, 0.47072, 39, 105.71, 17.33, 0.32363, 1, 8, 23.69, -185.21, 1, 1, 8, 79.64, -175.94, 1, 1, 8, 93.96, -187.56, 1, 1, 8, 87.07, -206.55, 1, 1, 8, 64.19999, -216.74, 1, 1, 8, 52.23, -203.68, 1, 1, 8, 59.24, -187.03, 1, 1, 8, 64.26, -223.8, 1, 1, 8, 89.44, -211.41, 1, 1, 8, 102.04, -186.95, 1, 1, 8, 83.1, -166.14, 1, 1, 8, 46.84, -186.41, 1, 1, 8, 50.32, -204.36, 1, 1, 8, 41.7, -206.59, 1, 1, 8, 61.87, -230.97, 1, 5, 58, 374.97, 143.6, 0.10291, 59, 256.29, 17.42, 0.23985, 60, 127.43, 2.07, 0.2431, 61, -13.35, -3.05, 0.20854, 62, -128.14, -55.46, 0.20557, 4, 59, 327.21, 4.42, 0.17789, 60, 196.28, -19.32, 0.24248, 61, 58.71, -1.04999, 0.28055, 62, -62.24, -26.21, 0.29905, 5, 58, 318.32, 113.62, 0.17774, 59, 192.26, 20.14, 0.33383, 60, 64.19, 12.44, 0.24171, 61, -76.55, -13.67, 0.12849, 62, -182.56, -89.31, 0.11821, 2, 8, 56.98, -162.99, 0.89259, 39, 57.54, 112, 0.1074 ], + "hull": 46, + "edges": [ 22, 20, 20, 18, 18, 16, 6, 4, 4, 2, 90, 88, 54, 52, 52, 50, 24, 22, 88, 86, 86, 84, 8, 6, 24, 26, 26, 28, 72, 74, 74, 76, 70, 72, 46, 48, 48, 50, 54, 56, 56, 58, 80, 82, 82, 84, 76, 78, 78, 80, 8, 10, 10, 12, 12, 14, 14, 16, 0, 90, 0, 2, 62, 64, 64, 66, 40, 42, 58, 60, 60, 62, 42, 44, 44, 46, 66, 68, 68, 70, 32, 34, 34, 36, 52, 116, 116, 126, 126, 114, 114, 184, 184, 124, 124, 182, 182, 112, 112, 186, 186, 122, 122, 110, 110, 120, 120, 108, 108, 142, 142, 106, 106, 140, 140, 104, 92, 94, 94, 96, 96, 98, 98, 146, 146, 100, 100, 144, 144, 118, 118, 102, 8, 150, 150, 138, 138, 136, 136, 134, 134, 132, 156, 154, 154, 164, 164, 162, 162, 160, 160, 158, 158, 156, 180, 178, 178, 174, 174, 188, 188, 172, 170, 168, 28, 30, 30, 32, 36, 38, 38, 40 ], + "width": 1219, + "height": 570 + } + }, + "raptor_front_arm": { + "raptor_front_arm": { + "type": "mesh", + "uvs": [ 0.39562, 0.1396, 0.3877, 0.30212, 0.3123, 0.41784, 0.27287, 0.47835, 0.33388, 0.4507, 0.54879, 0.35328, 0.64092, 0.31152, 0.73024, 0.36529, 1, 0.5277, 1, 0.86606, 0.93242, 1, 0.86176, 0.80967, 0.75576, 0.99765, 0.71748, 1, 0.70276, 0.77442, 0.62031, 0.73448, 0.58792, 0.64519, 0.53561, 0.6582, 0.13448, 0.75798, 0, 0.69218, 0.01846, 0.56357, 0.05498, 0.30917, 0, 0.27863, 0, 0.12423, 0, 0, 0.19596, 0, 0.40242, 0, 0.24536, 0.1924, 0.21678, 0.0811 ], + "triangles": [ 0, 28, 26, 23, 25, 28, 28, 25, 26, 23, 24, 25, 6, 7, 16, 6, 16, 5, 15, 16, 7, 7, 14, 15, 8, 14, 7, 11, 14, 8, 11, 8, 9, 12, 14, 11, 13, 14, 12, 10, 11, 9, 17, 4, 5, 16, 17, 5, 18, 19, 3, 18, 3, 4, 18, 4, 17, 27, 28, 0, 27, 22, 23, 27, 23, 28, 1, 27, 0, 21, 22, 27, 21, 27, 1, 2, 21, 1, 2, 20, 21, 3, 20, 2, 19, 20, 3 ], + "vertices": [ 2, 21, 3.06, 31.88, 0.51075, 6, 66.56, -109.48, 0.48924, 1, 21, 35.87, 35.62, 1, 2, 21, 60.94, 27.12, 0.8464, 22, 46.49, 31.12, 0.15358, 2, 21, 74.05, 22.67, 0.3492, 22, 36.5, 21.53, 0.65078, 3, 21, 67, 31.58, 0.10937, 22, 47.66, 23.68, 0.78125, 31, -40.93, -19.44, 0.10937, 2, 22, 86.98, 31.24, 0.65078, 31, -25.75, 17.61, 0.3492, 2, 22, 103.83, 34.49, 0.34375, 31, -19.24, 33.49, 0.65625, 2, 22, 114.04, 19.51, 0.10937, 31, -1.11, 33.84, 0.89062, 1, 31, 53.62, 34.88, 1, 1, 31, 96.03, -19.16, 1, 1, 31, 104.2, -47.31, 1, 1, 31, 71.33999, -23.98, 1, 1, 31, 81.39, -64.61, 1, 1, 31, 76.8, -68.81, 1, 1, 31, 46.65, -34.25, 1, 2, 22, 73.12999, -45.76, 0.10937, 31, 31.14, -36.12, 0.89062, 2, 22, 73.98, -26.9, 0.34375, 31, 15.82, -25.09, 0.65625, 2, 22, 65.1, -26.69, 0.65078, 31, 10.78, -32.41, 0.3492, 3, 21, 133.56, 9.13, 0.10937, 22, -2.94, -25.03, 0.78125, 31, -27.84, -88.47, 0.10937, 2, 21, 123.67, -14.42, 0.3492, 22, -19.29, -5.39, 0.65078, 2, 21, 97.41, -15.43, 0.8464, 22, -8.08, 18.37, 0.15358, 1, 21, 45.46, -17.43, 1, 2, 21, 40.68999, -27.17, 0.45035, 6, -1.69, -93.8, 0.54964, 2, 21, -2.74, -29.63, 0.44352, 6, 18.99, -72.93, 0.55646, 1, 6, 32.11, -48.45, 1, 1, 6, 57.56, -67.43, 1, 1, 6, 84.38, -87.42, 1, 2, 21, 16.44, 5.21, 0.7182, 6, 46.31, -101.86, 0.28178, 2, 21, -4.51, 5.32, 0.48851, 6, 52.82, -81.94, 0.51147 ], + "hull": 27, + "edges": [ 38, 36, 32, 30, 30, 28, 28, 26, 24, 26, 24, 22, 22, 20, 20, 18, 18, 16, 44, 42, 38, 6, 38, 40, 40, 42, 6, 4, 4, 2, 40, 4, 8, 6, 36, 8, 32, 12, 42, 2, 52, 0, 0, 2, 16, 14, 14, 12, 30, 14, 36, 34, 34, 32, 12, 10, 10, 8, 34, 10, 48, 50, 50, 52, 44, 46, 46, 48, 50, 56, 56, 54 ], + "width": 162, + "height": 203 + } + }, + "raptor_front_leg": { + "raptor_front_leg": { + "type": "mesh", + "uvs": [ 0.55116, 0.17817, 0.6279, 0.36027, 0.6671, 0.4533, 0.64879, 0.51527, 0.53553, 0.56893, 0.32335, 0.66946, 0.28674, 0.72086, 0.32538, 0.804, 0.36258, 0.80144, 0.42056, 0.79744, 0.61015, 0.78435, 0.84813, 0.84028, 1, 0.93854, 0.62439, 0.91738, 0.72812, 1, 0.58574, 1, 0.36707, 0.96667, 0.26306, 0.95082, 0.16266, 0.93552, 0.03859, 0.72237, 0, 0.66946, 0.0374, 0.62999, 0.1647, 0.49562, 0.23731, 0.4568, 0.27019, 0.43923, 0.28063, 0.43364, 0.223, 0.4057, 0.12565, 0.35851, 0, 0.29759, 0, 0.1524, 0, 0, 0.32132, 0, 0.32222, 0.22778, 0.4493, 0.38031, 0.47664, 0.44361, 0.4615, 0.47375, 0.35106, 0.53247, 0.20091, 0.65256, 0.18527, 0.72148, 0.25222, 0.86314, 0.30941, 0.88124, 0.55694, 0.89613, 0.55857, 0.89207, 0.47493, 0.85339, 0.6059, 0.91526, 0.39705, 0.89129, 0.13229, 0.09352, 0.36997, 0.45345, 0.37163, 0.43827, 0.32515, 0.39424, 0.23759, 0.34425, 0.34065, 0.47414 ], + "triangles": [ 46, 30, 31, 41, 42, 44, 43, 9, 10, 42, 43, 10, 41, 43, 42, 10, 13, 42, 11, 13, 10, 13, 11, 12, 13, 44, 42, 14, 15, 13, 45, 8, 9, 45, 40, 8, 16, 40, 45, 17, 40, 16, 16, 45, 15, 15, 45, 44, 45, 41, 44, 15, 44, 13, 45, 9, 43, 45, 43, 41, 19, 21, 38, 20, 21, 19, 39, 38, 6, 39, 6, 7, 40, 39, 7, 40, 7, 8, 18, 19, 38, 18, 38, 39, 17, 39, 40, 18, 39, 17, 47, 25, 48, 24, 25, 47, 35, 48, 34, 47, 48, 35, 51, 24, 47, 23, 24, 51, 3, 34, 2, 35, 34, 3, 36, 51, 47, 36, 47, 35, 4, 35, 3, 36, 35, 4, 37, 22, 23, 21, 22, 37, 36, 37, 23, 36, 23, 51, 5, 37, 36, 5, 36, 4, 6, 37, 5, 38, 21, 37, 38, 37, 6, 29, 30, 46, 32, 31, 0, 46, 31, 32, 28, 29, 46, 46, 27, 28, 32, 50, 46, 50, 27, 46, 33, 32, 0, 33, 0, 1, 49, 50, 32, 33, 49, 32, 26, 27, 50, 26, 50, 49, 25, 26, 49, 48, 49, 33, 25, 49, 48, 34, 33, 1, 48, 33, 34, 34, 1, 2 ], + "vertices": [ 2, 25, 128.03, 88.47, 0.8504, 1, 158.83, -71.91, 0.14959, 2, 25, 219.55, 53.15, 0.77988, 26, -48.04, -38.58, 0.22011, 2, 25, 266.3, 35.09999, 0.53544, 26, -36.73, 10.22, 0.46455, 2, 25, 286.89, 9.79, 0.35166, 26, -14.56, 34.14, 0.64832, 2, 25, 281.54, -41.24, 0.09228, 26, 36.71, 36, 0.90771, 3, 25, 271.53, -136.86, 0.05786, 26, 132.77, 39.48, 0.71425, 27, 34.99, 78.76, 0.22787, 3, 26, 158.21, 55.17, 0.5308, 27, 52.65, 54.63, 0.38143, 28, 7.01, 85.54, 0.08776, 5, 26, 167.14, 99.49, 0.21498, 27, 97.55, 49.25, 0.35357, 28, 28.72, 45.87, 0.14219, 29, -21.26, 49.99, 0.22491, 30, -72.29, 25.96, 0.06431, 5, 26, 154.22, 105.55, 0.07537, 27, 102.57, 62.6, 0.23051, 28, 42.51, 49.55, 0.28379, 29, -7.06, 51.39, 0.27004, 30, -58.17, 28.03, 0.14026, 4, 27, 109.72, 83.39, 0.11607, 28, 64.08999, 55.23, 0.08123, 29, 15.12, 53.51, 0.36961, 30, -36.09, 31.19, 0.43307, 1, 30, 35.8, 41.81, 1, 1, 30, 128.11, 17.93, 1, 1, 30, 188.72, -29.42, 1, 2, 29, 93.29, -7.6, 0.47999, 30, 44.86, -26.17, 0.52, 2, 29, 133.17, -49.83, 0.776, 30, 86.69, -66.47, 0.22399, 2, 29, 78.78, -50.15, 0.76799, 30, 32.38, -69.36, 0.232, 1, 29, -4.91, -33.55, 1, 3, 27, 155.04, -5.13, 0.35917, 28, 17.87999, -32.5, 0.30632, 29, -44.62, -25.61, 0.33449, 4, 26, 254.98, 126.27, 0.10154, 27, 131.21, -36.2, 0.54211, 28, -21.24, -31.17, 0.20873, 29, -83.01999, -17.96999, 0.1476, 3, 26, 240.33, 7.81, 0.25586, 27, 11.94, -30.98, 0.61614, 28, -86.31, 68.9, 0.12797, 2, 26, 239.26, -23.1, 0.45486, 27, -18.95999, -32.37, 0.54513, 3, 25, 187.65, -209.73, 0.09777, 26, 216.66, -33.34999, 0.58892, 27, -30.97, -10.65, 0.3133, 2, 25, 163.85, -128.67, 0.19603, 26, 139.75, -68.26, 0.80396, 2, 25, 165.74, -94.49, 0.31962, 26, 105.59, -71.26, 0.68037, 2, 25, 166.39, -79.07, 0.46225, 26, 90.23, -72.76, 0.53774, 2, 25, 166.49, -74.17, 0.53785, 26, 85.42, -73.28, 0.46213, 2, 25, 141.54, -82.46, 0.73138, 26, 97.13, -96.82, 0.26861, 2, 25, 99.76, -97.08, 0.85324, 26, 117.34, -136.23, 0.14675, 2, 25, 45.01, -114.56, 0.83615, 1, -51.09, -135.29, 0.16384, 2, 25, -16.2, -74.76, 0.62989, 1, -42.95, -58.38, 0.3701, 2, 25, -74.73, -19.33, 0.31468, 1, -52.66, 17.54999, 0.68531, 2, 25, 1.67, 76.75, 0.25576, 1, 70.07, 18.78, 0.74423, 1, 25, 93.54, 4.13, 1, 2, 25, 185.14, -6.66, 0.75461, 26, 15.98, -64.26999, 0.24538, 2, 25, 217.11, -18.75, 0.50844, 26, 23.47, -30.93, 0.49154, 2, 25, 225.63, -32.91999, 0.32527, 26, 36.3, -20.5, 0.67472, 2, 25, 223, -84.73, 0.20192, 26, 87.96, -15.86, 0.79807, 3, 25, 235.61, -168.06, 0.0809, 26, 168.69, 8.29, 0.57147, 27, 6.74, 40.47, 0.34761, 3, 26, 191.79, 35.8, 0.32545, 27, 36, 19.62, 0.57243, 28, -31.14, 78.74, 0.10211, 4, 26, 206.64, 111.53, 0.10808, 27, 112.69, 10.82, 0.52067, 28, 6.25, 11.23, 0.23517, 29, -49.03, 19.43, 0.13606, 3, 27, 130.6, 26.41, 0.35067, 28, 29.35, 5.71, 0.28241, 29, -27.12, 10.25, 0.3669, 2, 29, 67.46, 3.16, 0.384, 30, 18.54999, -16.62999, 0.61599, 1, 30, 19.07, -14.51, 1, 2, 29, 36, 24.95, 0.384, 30, -13.89, 3.64, 0.61599, 2, 29, 86.23, -6.55, 0.48799, 30, 37.75, -25.46, 0.512, 4, 26, 164.9, 153.55, 0.02263, 27, 151.18, 56, 0.23908, 28, 65.44, 5.55, 0.19254, 29, 8.45, 4.27, 0.54574, 2, 25, -9.28, -17.5, 0.59605, 1, 7.72, -30.85, 0.40393, 2, 25, 195.9, -53.81, 0.42368, 26, 61.11, -47.06, 0.5763, 2, 25, 190.1, -48.45, 0.53231, 26, 56.61, -53.56, 0.46768, 2, 25, 161.26, -48.26, 0.79873, 26, 60.44, -82.12999, 0.20126, 2, 25, 120.37, -58.54, 0.85455, 26, 76.31, -121.18, 0.14544, 2, 25, 197.37, -69.23, 0.3355, 26, 76.17, -43.46, 0.66449 ], + "hull": 32, + "edges": [ 40, 38, 38, 36, 28, 30, 28, 26, 26, 24, 24, 22, 22, 20, 14, 12, 12, 10, 6, 4, 60, 62, 0, 62, 40, 42, 42, 44, 34, 36, 16, 14, 52, 50, 4, 2, 2, 0, 10, 8, 8, 6, 72, 74, 74, 76, 76, 78, 78, 80, 80, 90, 90, 88, 16, 18, 18, 20, 30, 32, 32, 34, 56, 58, 58, 60, 94, 96, 96, 98, 52, 54, 54, 56, 100, 98, 48, 50, 44, 46, 46, 48, 102, 94, 72, 70, 70, 68, 66, 68, 66, 64, 64, 92, 86, 84, 50, 96, 94, 48, 46, 102, 52, 98, 54, 100, 70, 6, 68, 4, 66, 2, 72, 8, 86, 20, 86, 82, 82, 88, 84, 26, 88, 26 ], + "width": 382, + "height": 514 + } + }, + "raptor_hindleg_back": { + "raptor_hindleg_back": { + "type": "mesh", + "uvs": [ 0.45041, 0.09352, 0.56933, 0.23361, 0.65294, 0.47296, 0.66353, 0.50822, 0.63174, 0.54254, 0.32383, 0.69723, 0.30068, 0.73875, 0.27934, 0.77704, 0.30417, 0.83513, 0.31058, 0.85014, 0.341, 0.85046, 0.45165, 0.85163, 0.59555, 0.81881, 0.91176, 0.92548, 1, 1, 0.56336, 0.96426, 0.48349, 0.9826, 0.29878, 0.98027, 0.22808, 0.98389, 0.15997, 0.98737, 0.15423, 0.95546, 0.13894, 0.87047, 0.07371, 0.78726, 0, 0.75299, 0, 0.7049, 0, 0.671, 0.11875, 0.64652, 0.16535, 0.52659, 0.28495, 0.47397, 0.2901, 0.45773, 0.29427, 0.4446, 0.20635, 0.40396, 0.06128, 0.33691, 0, 0.25247, 0, 0, 0.30793, 0, 0.27599, 0.20261, 0.40397, 0.31121, 0.48439, 0.45963, 0.48317, 0.48383, 0.47029, 0.51062, 0.22698, 0.67328, 0.17141, 0.7242, 0.17122, 0.78241, 0.22995, 0.89469, 0.24677, 0.90829, 0.28672, 0.9146, 0.46582, 0.91414 ], + "triangles": [ 15, 13, 14, 16, 47, 15, 15, 12, 13, 15, 47, 12, 18, 46, 17, 18, 45, 46, 17, 47, 16, 17, 46, 47, 47, 10, 11, 47, 46, 10, 47, 11, 12, 45, 18, 19, 44, 45, 20, 20, 45, 19, 20, 21, 44, 46, 9, 10, 46, 45, 9, 45, 44, 9, 21, 43, 44, 44, 8, 9, 44, 7, 8, 44, 43, 7, 21, 22, 43, 43, 22, 42, 43, 42, 7, 22, 23, 24, 24, 42, 22, 7, 42, 6, 42, 41, 6, 6, 41, 5, 24, 26, 42, 42, 26, 41, 24, 25, 26, 5, 40, 4, 5, 41, 40, 41, 28, 40, 26, 27, 41, 41, 27, 28, 40, 39, 4, 28, 29, 40, 40, 29, 39, 4, 39, 3, 39, 2, 3, 29, 30, 39, 39, 38, 2, 39, 30, 38, 38, 1, 2, 30, 37, 38, 38, 37, 1, 30, 31, 37, 31, 36, 37, 31, 32, 36, 32, 33, 36, 37, 0, 1, 37, 36, 0, 33, 34, 36, 36, 35, 0, 36, 34, 35 ], + "vertices": [ 1, 44, 53.94, 69.15, 1, 1, 44, 126.23, 67.31, 1, 2, 44, 226.42, 31.13, 0.9375, 45, -30.87, -1.11, 0.0625, 2, 44, 240.84, 25.33, 0.7, 45, -25.64, 13.52, 0.3, 2, 44, 246.67, 8.05, 0.3, 45, -8.60999, 20.02, 0.7, 3, 44, 240.81, -115.25, 0.0625, 45, 114.8, 19.01, 0.875, 46, 9.47999, 59.16, 0.0625, 2, 45, 131.07, 29.69, 0.7, 46, 22.11, 44.35, 0.3, 2, 45, 146.06, 39.54, 0.3, 46, 33.75999, 30.71, 0.7, 3, 45, 152.6, 65.01, 0.12566, 46, 59.85, 27.41, 0.75203, 47, 15.85, 48.05, 0.12229, 3, 45, 154.28, 71.58999, 0.05444, 46, 66.58999, 26.56, 0.78401, 47, 16.71999, 41.31, 0.16154, 3, 46, 71.19, 35.75999, 0.64716, 47, 26.78, 39.16999, 0.13169, 48, -67.32, 18.95999, 0.22114, 3, 46, 87.93, 69.21, 0.0625, 47, 63.37, 31.39, 0.675, 48, -30.17, 23.3, 0.26249, 2, 47, 113.82, 35.72, 0.1038, 48, 16.23, 43.56, 0.89619, 1, 48, 128.14, 12.02, 1, 1, 48, 161.85, -15.81, 1, 2, 47, 90.98, -23.36, 0.0138, 48, 13.52, -19.71999, 0.98619, 2, 47, 62.97, -25.81, 0.7, 48, -12.23, -31.02, 0.3, 3, 46, 115.12, -1.33, 0.08333, 47, 1.93, -12.66, 0.83333, 48, -74.26, -38.09999, 0.08333, 2, 46, 106.11, -23.53, 0.3, 47, -21.8, -9.52, 0.7, 2, 46, 97.43, -44.9, 0.7, 47, -44.67, -6.51, 0.3, 2, 46, 84.26, -40.68999, 0.9375, 47, -43.9, 7.29, 0.0625, 1, 46, 49.18, -29.46, 1, 2, 45, 206.75, 5.37, 0.13333, 46, 7.44, -33.77, 0.86666, 2, 45, 219.64, -20.52, 0.36111, 46, -16.64, -49.8, 0.63888, 2, 45, 208.4, -37.82, 0.72083, 46, -35.22, -40.82, 0.27916, 2, 45, 200.49, -50.02, 0.91666, 46, -48.31, -34.48, 0.08333, 1, 45, 161.1, -36.97, 1, 2, 44, 150.1, -116.76, 0.08333, 45, 119.88, -71.55, 0.91666, 2, 44, 154.99, -70.71, 0.42846, 45, 73.68, -68.47, 0.57153, 2, 44, 150.3, -65.26999, 0.35604, 45, 68.42, -73.36, 0.64395, 2, 44, 146.51, -60.87, 0.59147, 45, 64.17, -77.32, 0.40852, 2, 44, 115.12, -75.08, 0.8446, 45, 79.61, -108.13, 0.15538, 1, 44, 63.33, -98.53, 1, 1, 44, 21.78, -94.55, 1, 1, 44, -66.69, -32.04, 1, 1, 44, -6.62, 52.97, 1, 1, 44, 58.14, -6, 1, 1, 44, 121.17, 2.44, 1, 1, 44, 188.87, -12.1, 1, 2, 44, 197.11, -18.42, 0.7, 45, 19.79, -28.44, 0.3, 2, 44, 203.98, -28.61, 0.3, 45, 29.69, -21.17, 0.7, 1, 45, 136.67, -7.42, 1, 2, 45, 164.32, 0.66, 0.7, 46, -2.53, 7.73, 0.3, 2, 45, 177.97, 21.57, 0.25, 46, 19.92, -3.19, 0.75, 1, 46, 71.93, -6.29, 1, 2, 46, 79.66, -3.72, 0.7, 47, -9.28, 21.04, 0.3, 2, 46, 87.98, 7.25, 0.3125, 47, 3.42, 15.76, 0.6875, 3, 46, 114.16, 61.85, 0.04, 47, 62.84, 4.15, 0.7, 48, -21.95, -2.66, 0.26 ], + "hull": 36, + "edges": [ 66, 68, 66, 64, 56, 54, 54, 52, 52, 50, 46, 44, 44, 42, 34, 32, 32, 30, 30, 28, 28, 26, 26, 24, 24, 22, 10, 8, 8, 6, 6, 4, 4, 2, 2, 0, 68, 70, 0, 70, 46, 48, 48, 50, 14, 12, 12, 10, 60, 58, 58, 56, 42, 40, 40, 38, 18, 16, 16, 14, 22, 20, 20, 18, 38, 36, 36, 34, 60, 62, 62, 64, 68, 72, 72, 74, 74, 76, 76, 78, 78, 80, 80, 82, 82, 84, 84, 86, 16, 88, 86, 88, 18, 90, 90, 38, 88, 90, 20, 92, 92, 36, 90, 92, 92, 94, 94, 22, 94, 32, 30, 24, 88, 40, 86, 14, 84, 12, 82, 10, 82, 52, 48, 84, 44, 86, 78, 6, 4, 76, 80, 8, 80, 56, 58, 78, 76, 60 ], + "width": 338, + "height": 429 + } + }, + "raptor_horn": { + "raptor_horn": { "x": 156.2, "y": 74.1, "rotation": -137.26, "width": 363, "height": 159 } + }, + "raptor_horn_back": { + "raptor_horn_back": { "x": 121.42, "y": 83.01, "rotation": -132.21, "width": 351, "height": 153 } + }, + "raptor_jaw": { + "raptor_jaw": { + "type": "mesh", + "uvs": [ 0.40984, 0.22169, 0.42214, 0.3988, 0.67894, 0.53819, 0.7589, 0.62838, 0.99999, 0.4726, 1, 0.53491, 0.87731, 0.77925, 0.63281, 0.94487, 0.39908, 0.96947, 0.19456, 0.89404, 0.21609, 0.6497, 0, 0.46111, 0, 0, 0.26069, 0, 0.19456, 0.29385 ], + "triangles": [ 14, 13, 0, 14, 0, 1, 5, 3, 4, 10, 14, 1, 11, 14, 10, 6, 3, 5, 2, 10, 1, 7, 2, 3, 7, 3, 6, 2, 8, 10, 8, 9, 10, 2, 7, 8, 14, 12, 13, 11, 12, 14 ], + "vertices": [ 1, 39, 28.6, 68.85, 1, 1, 39, 69.65, 38.95, 1, 1, 39, 150.72, 72.87999, 1, 1, 39, 186.16, 74.79, 1, 1, 39, 199.76, 159.69, 1, 1, 39, 213.35, 148.16, 1, 1, 39, 242.43, 74.42, 1, 1, 39, 230.31, -13.08, 1, 1, 39, 189.56, -71.99, 1, 1, 39, 132.76, -105.6, 1, 1, 39, 83.71, -55.39, 1, 2, 8, -18.31, 12.1, 0.67732, 39, -0.04, -70.76, 0.32267, 1, 8, 113.44, 16.95, 1, 1, 8, 116.36, -62.48, 1, 1, 39, 1.86, 5.43, 1 ], + "hull": 14, + "edges": [ 22, 24, 22, 20, 20, 18, 18, 16, 16, 14, 14, 12, 12, 10, 10, 8, 8, 6, 6, 4, 4, 2, 2, 0, 24, 26, 0, 26, 24, 28, 22, 28, 28, 0 ], + "width": 305, + "height": 286 + } + }, + "raptor_saddle_noshadow": { + "raptor_saddle_noshadow": { "x": 80.83, "y": 10.63, "rotation": -88.64, "width": 326, "height": 375 } + }, + "raptor_saddle_strap_front": { + "raptor_saddle_strap_front": { "x": 128.83, "y": -4.71, "rotation": 61.29, "width": 114, "height": 189 } + }, + "raptor_saddle_strap_rear": { + "raptor_saddle_strap_rear": { + "type": "mesh", + "uvs": [ 0.85499, 0.06802, 1, 0.13237, 1, 0.20266, 0.95981, 0.26524, 0.88583, 0.38045, 0.80684, 0.46413, 0.74038, 0.53453, 0.81676, 0.5895, 0.51961, 1, 0.4516, 1, 0.01739, 0.8407, 0, 0.80889, 0.24645, 0.36639, 0.3792, 0.39151, 0.42457, 0.32099, 0.49229, 0.21571, 0.57673, 0.10986, 0.66437, 0, 0.70168, 0, 0.56028, 0.46321, 0.68822, 0.29772, 0.76845, 0.18722, 0.61529, 0.39206 ], + "triangles": [ 7, 8, 6, 9, 10, 13, 13, 11, 12, 6, 8, 19, 8, 9, 19, 9, 13, 19, 13, 10, 11, 19, 22, 6, 13, 14, 19, 19, 14, 22, 6, 22, 5, 22, 20, 5, 5, 20, 4, 14, 15, 22, 22, 15, 20, 20, 21, 4, 15, 16, 20, 4, 21, 3, 20, 16, 21, 2, 3, 0, 3, 21, 0, 0, 1, 2, 21, 16, 18, 16, 17, 18, 21, 18, 0 ], + "vertices": [ 1, 52, 3.9, -3.27, 1, 1, 52, 4.25, 15.05, 1, 1, 52, 13.24, 20.28, 1, 2, 52, 23.42, 21.2, 0.7, 53, -15.2, 21.22, 0.3, 3, 52, 41.11, 22.87, 0.3, 53, 2.48, 22.89, 0.6375, 54, -33.83, 24.96, 0.0625, 3, 52, 52.07, 21.72, 0.0625, 53, 13.43, 21.74, 0.6375, 54, -22.97, 23.11, 0.3, 2, 53, 18.39, 20.76, 0.25, 54, -18.09, 21.82, 0.75, 1, 54, -18.76, 33.09, 1, 1, 54, 49.92, 31.57, 1, 1, 54, 53.21, 25, 1, 1, 54, 53.11, -27.48, 1, 1, 54, 49.74, -31.27, 1, 1, 54, -20.73, -36.75999, 1, 1, 54, -23.82, -22.28, 1, 3, 52, 53.48, -24.61, 0.0625, 53, 14.84, -24.59, 0.575, 54, -24.51, -23.21, 0.3625, 3, 52, 41.43999, -26.12, 0.3, 53, 2.81, -26.09, 0.6375, 54, -36.62, -23.95, 0.0625, 2, 52, 24.38, -26.12, 0.7, 53, -14.24, -26.1, 0.3, 1, 52, 5.57, -26.12, 1, 1, 52, 3.54, -22.64, 1, 1, 54, -23.08, -0.04, 1, 2, 52, 41.66, -1.72, 0.3125, 53, 3.03, -1.7, 0.6875, 2, 52, 23.85, -2.46, 0.7, 53, -14.77, -2.44, 0.3, 2, 53, 13.95, -1.5, 0.64582, 54, -23.94, -0.11, 0.35416 ], + "hull": 19, + "edges": [ 26, 24, 24, 22, 22, 20, 20, 18, 16, 18, 16, 14, 14, 12, 4, 2, 34, 36, 12, 38, 38, 26, 8, 40, 40, 30, 2, 0, 0, 36, 30, 32, 32, 34, 32, 42, 4, 6, 6, 8, 42, 6, 26, 28, 28, 30, 28, 44, 8, 10, 10, 12, 44, 10 ], + "width": 108, + "height": 148 + } + }, + "raptor_saddle_w_shadow": { + "raptor_saddle_w_shadow": { "x": 80.83, "y": 10.63, "rotation": -88.64, "width": 326, "height": 375 } + }, + "raptor_tongue": { + "raptor_tongue": { + "type": "mesh", + "uvs": [ 0.35242, 0.2156, 0.4794, 0.44245, 0.62071, 0.61176, 0.80562, 0.75373, 1, 0.90297, 1, 1, 0.8971, 1, 0.72054, 0.92254, 0.50668, 0.82872, 0.30401, 0.70725, 0.10537, 0.57888, 0, 0.50622, 0, 0, 0.26224, 0 ], + "triangles": [ 8, 7, 6, 6, 4, 5, 4, 6, 3, 6, 7, 3, 7, 8, 3, 8, 2, 3, 9, 10, 1, 8, 9, 2, 9, 1, 2, 1, 10, 0, 10, 11, 0, 0, 12, 13, 0, 11, 12 ], + "vertices": [ 2, 63, 3.63, 27.04, 0.6875, 64, -47.26, 33.87, 0.3125, 3, 63, 39.09, 19.45, 0.3125, 64, -13.41, 20.86, 0.625, 65, -51.54, 33.37, 0.0625, 3, 63, 71.56, 19.02, 0.0625, 64, 18.58, 15.39, 0.625, 65, -21.56, 20.92, 0.3125, 2, 64, 55.03, 16.85, 0.3125, 65, 14.29, 14.23, 0.6875, 2, 64, 93.34, 18.39, 0.08333, 65, 51.98, 7.21, 0.91666, 1, 65, 56.09, -4.5, 1, 2, 64, 85.06, -1.49, 0.08333, 65, 39.48, -10.33, 0.91666, 2, 64, 54.22, -9.18, 0.3125, 65, 7.71, -10.96, 0.6875, 3, 63, 75.14, -14.72, 0.0625, 64, 16.87, -18.5, 0.625, 65, -30.77, -11.73, 0.3125, 3, 63, 38.8, -25.8, 0.3125, 64, -20.74, -23.8, 0.625, 65, -68.62, -8.53, 0.0625, 2, 63, 2.4, -35.77, 0.6875, 64, -58.25, -27.99, 0.3125, 2, 63, -17.28, -40.62, 0.91666, 64, -78.44999, -29.71, 0.08333, 1, 63, -59.91, 8.18, 1, 2, 63, -26.13, 37.68999, 0.91666, 64, -75.01999, 49.02, 0.08333 ], + "hull": 14, + "edges": [ 22, 24, 10, 12, 10, 8, 24, 26, 16, 4, 18, 16, 2, 4, 18, 2, 22, 20, 0, 26, 20, 0, 0, 2, 12, 14, 14, 16, 4, 6, 6, 8, 14, 6, 20, 18 ], + "width": 171, + "height": 128 + } + }, + "spineboy_torso": { + "torso": { "x": 55.88, "y": 4.86, "rotation": -104.14, "width": 108, "height": 182 } + }, + "stirrup_back": { + "stirrup_back": { "x": 53.2, "y": 31.34, "rotation": -21.12, "width": 87, "height": 69 } + }, + "stirrup_front": { + "stirrup_front": { "x": 36.13, "y": 20.39, "rotation": -21.12, "width": 89, "height": 100 } + }, + "stirrup_strap": { + "stirrup_strap": { + "type": "mesh", + "uvs": [ 0.36822, 0.27893, 0.45737, 0.38897, 0.54451, 0.49651, 0.67872, 0.59135, 0.81977, 0.69102, 1, 0.77344, 1, 1, 0.77956, 1, 0.63729, 0.81629, 0.53364, 0.72348, 0.40534, 0.6086, 0.30886, 0.52535, 0.21049, 0.44047, 0, 0.26245, 0, 0, 0.30637, 0, 0.20241, 0.23 ], + "triangles": [ 2, 10, 1, 9, 10, 2, 9, 2, 3, 8, 9, 3, 8, 3, 4, 7, 8, 4, 7, 4, 5, 7, 5, 6, 16, 14, 15, 13, 14, 16, 16, 15, 0, 12, 16, 0, 12, 0, 1, 13, 16, 12, 11, 12, 1, 10, 11, 1 ], + "vertices": [ 2, 56, 24.71, 8.03, 0.80344, 57, -17.42, 11.02, 0.19655, 2, 56, 37.95, 8.04, 0.59978, 57, -4.36, 8.87, 0.40021, 2, 56, 50.88, 8.04, 0.36895, 57, 8.39, 6.77, 0.63103, 2, 56, 65.92, 12.27, 0.17748, 57, 23.91, 8.47999, 0.82251, 2, 56, 81.72, 16.7, 0.05943, 57, 40.23, 10.28, 0.94056, 2, 56, 98.82, 25.04, 0.01209, 57, 58.46, 15.71, 0.9879, 2, 56, 114.44, 11.57, 0.00191, 57, 71.67, -0.11, 0.99808, 2, 56, 100.47, -4.61, 0.01816, 57, 55.25, -13.81, 0.98182, 2, 56, 78.79, -4.14, 0.07487, 57, 33.93999, -9.81, 0.92512, 2, 56, 65.83, -6.24, 0.2028, 57, 20.81, -9.76, 0.79719, 2, 56, 49.78, -8.83, 0.39971, 57, 4.55, -9.7, 0.60028, 2, 56, 37.93, -10.97, 0.62658, 57, -7.48, -9.88, 0.37341, 2, 56, 25.85, -13.15, 0.82034, 57, -19.75, -10.06, 0.17965, 2, 56, 0.25, -18.03, 0.95288, 57, -45.81, -10.7, 0.04711, 2, 56, -17.83, -2.43, 0.97709, 57, -61.11, 7.63, 0.0229, 2, 56, 1.57, 20.07, 0.94774, 57, -38.29, 26.67, 0.05225, 2, 56, 10.84, -1.23, 0.97709, 57, -32.62, 4.14, 0.0229 ], + "hull": 16, + "edges": [ 28, 30, 30, 0, 12, 10, 8, 10, 12, 14, 14, 16, 26, 28, 24, 26, 26, 32, 32, 30, 20, 22, 22, 24, 0, 2, 2, 4, 4, 6, 6, 8, 16, 18, 18, 20 ], + "width": 97, + "height": 91 + } + }, + "visor": { + "visor": { "x": 99.13, "y": 6.51, "rotation": -70.57, "width": 261, "height": 168 } + } + } +}, +"animations": { + "Jump": { + "bones": { + "root": { + "rotate": [ + { "time": 0, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { + "time": 0.3, + "x": 0, + "y": 0, + "curve": [ 0.201, 0.17, 0.815, 0.83 ] + }, + { "time": 0.6666, "x": 1482.78, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 } + ] + }, + "front_foot_goal": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 0.2, "angle": 0 }, + { "time": 0.3, "angle": -41.64 }, + { "time": 0.3666, "angle": -69.66 }, + { "time": 0.4333, "angle": -12.8 }, + { "time": 0.5333, "angle": 5.73 }, + { "time": 0.6666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.3, "x": 0, "y": 0 }, + { "time": 0.3666, "x": -60.01, "y": 111.1 }, + { "time": 0.4333, "x": 213.18, "y": 291.22 }, + { "time": 0.5333, "x": 243.73, "y": 332.61 }, + { "time": 0.6666, "x": 95.94, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.6666, "x": 1, "y": 1 } + ] + }, + "hip": { + "rotate": [ + { "time": 0, "angle": -4.48 }, + { "time": 0.1, "angle": -23.02 }, + { "time": 0.3, "angle": 19.24 }, + { "time": 0.5333, "angle": 20.85 }, + { "time": 0.6666, "angle": -10.76 }, + { "time": 0.7666, "angle": -18.58 }, + { "time": 0.9333, "angle": -3.56 }, + { "time": 1.0666, "angle": -4.48 } + ], + "translate": [ + { "time": 0, "x": -100.65, "y": 49.77 }, + { + "time": 0.1, + "x": 9.37, + "y": -109.06, + "curve": [ 0.245, 0, 0.609, 0.41 ] + }, + { + "time": 0.1666, + "x": 150.37, + "y": -76.51, + "curve": [ 0.401, 0.34, 0.858, 0.87 ] + }, + { "time": 0.3, "x": 361, "y": 36.69 }, + { + "time": 0.5333, + "x": 5.36, + "y": 290.91, + "curve": [ 0.808, 0, 0.892, 0.81 ] + }, + { "time": 0.6666, "x": -56.27, "y": 88.07 }, + { + "time": 0.7666, + "x": 179.93, + "y": -59.94, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 0.9333, + "x": 238.11, + "y": 50.63, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 1.0666, "x": 213.19, "y": 49.77 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "rear_foot_goal": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 0.2, "angle": 0 }, + { "time": 0.3, "angle": -41.64 }, + { "time": 0.3666, "angle": -69.66 }, + { "time": 0.4333, "angle": -57.97 }, + { "time": 0.7, "angle": -9.19 }, + { "time": 0.7333, "angle": -7.78 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.3, "x": 0, "y": 0 }, + { "time": 0.3666, "x": -131.66, "y": 47.58 }, + { "time": 0.4333, "x": -16.1, "y": 205.84 }, + { "time": 0.5333, "x": 61.29, "y": 320.2 }, + { "time": 0.7333, "x": 235.62, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.7, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.7333, "x": 1, "y": 1 } + ] + }, + "front_leg1": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "front_leg_goal": { + "rotate": [ + { "time": 0, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.3, "x": 0, "y": 0 }, + { "time": 0.7, "x": -0.39, "y": 24.29 }, + { "time": 0.7666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 } + ] + }, + "rear_leg1": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "rear_leg_goal": { + "rotate": [ + { "time": 0, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.3, "x": 0, "y": 0 }, + { "time": 0.7, "x": 6.75, "y": 25.64 }, + { "time": 0.7666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 } + ] + }, + "tail1": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.1, "angle": -11.02 }, + { "time": 0.3, "angle": 0.53 }, + { "time": 0.4333, "angle": 8.64 }, + { "time": 0.7, "angle": -9.73 }, + { + "time": 0.7666, + "angle": -4.46, + "curve": [ 0.243, 0, 0.648, 1 ] + }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "torso1": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "front_leg2": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "rear_leg2": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "saddle": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "tail2": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.1, "angle": -39.83 }, + { "time": 0.3, "angle": -31.82 }, + { "time": 0.4333, "angle": -7.28 }, + { "time": 0.5333, "angle": 1.28 }, + { "time": 0.6, "angle": -7.22 }, + { "time": 0.7, "angle": -30.66 }, + { + "time": 0.7666, + "angle": -40.54, + "curve": [ 0.243, 0, 0.648, 1 ] + }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "torso2": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.1, "angle": 0.51 }, + { "time": 0.3, "angle": -1.9 }, + { "time": 0.5333, "angle": 1.04 }, + { "time": 0.7, "angle": -3.25 }, + { "time": 0.7666, "angle": 4.81 }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "front_arm1": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.1666, "angle": -308.79 }, + { "time": 0.3, "angle": -398.7 }, + { "time": 0.5333, "angle": -297.8 }, + { "time": 0.7, "angle": 62.19 }, + { "time": 0.7666, "angle": -325.36 }, + { "time": 0.8333, "angle": -374.42 }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "front_leg3": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "neck": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.1, "angle": -8.25 }, + { "time": 0.3, "angle": -1.9 }, + { "time": 0.5333, "angle": 5.44 }, + { "time": 0.7, "angle": 24.01 }, + { "time": 0.7666, "angle": 4.82 }, + { "time": 0.8666, "angle": -1.78 }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.1, "x": 0, "y": 0 }, + { "time": 0.3, "x": 62.9, "y": -44.25 }, + { "time": 0.5333, "x": -4.35, "y": 17.31 }, + { "time": 0.7, "x": 0, "y": 0 }, + { "time": 0.7666, "x": 23.29, "y": -42.27 }, + { "time": 0.8666, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "rear_arm1": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.1, "angle": 51.2 }, + { "time": 0.3333, "angle": -38.7 }, + { "time": 0.6, "angle": 62.19, "curve": "stepped" }, + { "time": 0.7333, "angle": 62.19 }, + { "time": 0.8, "angle": 34.62 }, + { "time": 0.8666, "angle": -14.43 }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "rear_leg3": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "saddle_strap_front1": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "saddle_strap_rear1": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "spineboy_front_arm_goal": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "spineboy_hip": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 0.8666, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 }, + { "time": 0.1, "x": 35.96, "y": -11.83 }, + { "time": 0.3, "x": 31.1, "y": -50.39 }, + { "time": 0.5333, "x": 12.1, "y": -8.03 }, + { "time": 0.7, "x": 41.7, "y": -19.46 }, + { "time": 0.8666, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.8666, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "spineboy_rear_arm_goal": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "stirrup": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "stirrup_strap1": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "tail3": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.1, "angle": -8.97 }, + { "time": 0.3, "angle": -18.38 }, + { "time": 0.4333, "angle": 0.9 }, + { "time": 0.5333, "angle": 11.43 }, + { "time": 0.6, "angle": 17.22 }, + { "time": 0.7, "angle": 4.74 }, + { + "time": 0.7666, + "angle": -20.69, + "curve": [ 0.243, 0, 0.648, 1 ] + }, + { + "time": 0.9666, + "angle": -20.4, + "curve": [ 0.382, 0.57, 0.735, 1 ] + }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "back_thigh": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "front_arm2": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.1, "angle": 23.1 }, + { "time": 0.3, "angle": -75.92 }, + { "time": 0.5333, "angle": -1.41 }, + { "time": 0.7666, "angle": 26.86 }, + { "time": 0.8333, "angle": -56.14 }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "front_foot1": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "front_thigh": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "gun": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.1, "angle": 15.27 }, + { "time": 0.3, "angle": -53.4 }, + { "time": 0.5666, "angle": -63.35 }, + { "time": 0.7666, "angle": -29.92 }, + { "time": 0.9, "angle": 7.24 }, + { "time": 1, "angle": -3.69 }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "head": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.1, "angle": 9.93 }, + { "time": 0.3, "angle": -3.76 }, + { "time": 0.5333, "angle": -26.63 }, + { "time": 0.7, "angle": -10.23 }, + { "time": 0.7666, "angle": 21.8 }, + { "time": 0.8666, "angle": 15.36 }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "rear_arm2": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.1, "angle": 23.1 }, + { "time": 0.3, "angle": -75.92 }, + { "time": 0.5333, "angle": -1.41 }, + { "time": 0.7666, "angle": 26.86 }, + { "time": 0.8333, "angle": -56.14 }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "rear_foot1": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "saddle_strap_front2": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "saddle_strap_rear2": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "spineboy_torso": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.1666, "angle": -24.93 }, + { "time": 0.2333, "angle": -20.34 }, + { "time": 0.5333, "angle": -11.2 }, + { "time": 0.7, "angle": 10.49 }, + { + "time": 0.8333, + "angle": -30.21, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 1, "angle": 1.34 }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "stirrup_strap2": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "tail4": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.1, "angle": 34.12 }, + { "time": 0.3, "angle": -12.25 }, + { "time": 0.4333, "angle": 11.11 }, + { "time": 0.5333, "angle": 25.19 }, + { "time": 0.6, "angle": 32.5 }, + { "time": 0.7, "angle": 24.4 }, + { + "time": 0.7666, + "angle": 9.9, + "curve": [ 0.243, 0, 0.648, 1 ] + }, + { + "time": 0.9666, + "angle": -11.72, + "curve": [ 0.382, 0.57, 0.735, 1 ] + }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "back_arm": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "back_knee": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "front_arm": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "front_foot2": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 0.3, "angle": 0 }, + { "time": 0.3666, "angle": -63.6 }, + { "time": 0.4333, "angle": -80.16 }, + { "time": 0.5333, "angle": -17.48 }, + { "time": 0.6666, "angle": 24.85 }, + { "time": 0.7666, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.6666, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.6666, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "front_hand": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.5333, "angle": -27.74 }, + { "time": 0.7666, "angle": -27.09 }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "horn_front": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "horn_rear": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "jaw": { + "rotate": [ + { "time": 0, "angle": 15.56 }, + { "time": 0.2333, "angle": -0.92 }, + { "time": 0.5, "angle": 20.4 }, + { "time": 0.7, "angle": 18.32 }, + { "time": 0.7666, "angle": 5.17 }, + { "time": 0.8333, "angle": 20.34 }, + { "time": 1.0666, "angle": 15.56 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "lower_leg": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "neck2": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.1, "angle": 11.08 }, + { "time": 0.8333, "angle": 8.16 }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "rear_foot2": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 0.3, "angle": 0 }, + { "time": 0.3666, "angle": -87.93 }, + { "time": 0.4333, "angle": -126.75 }, + { "time": 0.5333, "angle": -63.79 }, + { "time": 0.7, "angle": 24.85 }, + { "time": 0.7666, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.7, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.7, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "rear_hand": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.5333, "angle": -27.74 }, + { "time": 0.7666, "angle": -27.09 }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "saddle_strap_rear3": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "tail5": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.1, "angle": 76.87 }, + { "time": 0.3, "angle": -12.25 }, + { "time": 0.4333, "angle": 10.5 }, + { "time": 0.5333, "angle": 24.81 }, + { "time": 0.6, "angle": 32.21 }, + { "time": 0.7, "angle": 24.4 }, + { + "time": 0.7666, + "angle": 9.9, + "curve": [ 0.243, 0, 0.648, 1 ] + }, + { + "time": 0.9666, + "angle": -41.66, + "curve": [ 0.382, 0.57, 0.735, 1 ] + }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "tongue1": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "back_bracer": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "front_arm_target": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "front_bracer": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "front_foot3": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 0.3, "angle": 0 }, + { "time": 0.3666, "angle": -84.17 }, + { "time": 0.4333, "angle": -127.53 }, + { "time": 0.5333, "angle": -52.16 }, + { "time": 0.6666, "angle": 10.77 }, + { "time": 0.7666, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.6666, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.6666, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "head2": { + "rotate": [ + { "time": 0, "angle": 15.31 }, + { "time": 0.1, "angle": 29.85 }, + { "time": 0.2, "angle": 22.43 }, + { "time": 0.3, "angle": 12.64 }, + { "time": 0.4666, "angle": 24.85 }, + { "time": 0.5333, "angle": 9.28 }, + { "time": 0.7, "angle": 4.77 }, + { "time": 0.7666, "angle": 37.9 }, + { + "time": 0.8333, + "angle": 18.87, + "curve": [ 0.056, 0.81, 0.75, 1 ] + }, + { "time": 1, "angle": 22.96 }, + { "time": 1.0666, "angle": 15.31 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "rear_arm_target": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "tongue2": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "back_hand": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "front_hand2": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "tongue3": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + } + } + }, + "empty": {}, + "gungrab": { + "slots": { + "front_hand": { + "attachment": [ + { "time": 0, "name": "front_open_hand" }, + { "time": 0.1666, "name": "gun" } + ] + }, + "gun": { + "attachment": [ + { "time": 0, "name": "gun_nohand" }, + { "time": 0.1666, "name": null } + ] + } + }, + "bones": { + "front_hand2": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.1333, "angle": 12.33 }, + { "time": 0.1666, "angle": -89.54 }, + { "time": 0.2333, "angle": -79.78 }, + { "time": 0.4666, "angle": -10.18 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 }, + { "time": 0.1666, "x": 0.938, "y": 0.938 }, + { "time": 0.4666, "x": 1, "y": 1 } + ] + }, + "front_arm": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.0666, "angle": -31.99 }, + { + "time": 0.1666, + "angle": 223.11, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 0.2333, + "angle": 155.19, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 0.3666, + "angle": 246.13, + "curve": [ 0.184, 0.33, 0.75, 1 ] + }, + { "time": 0.4666, "angle": -56.74 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 }, + { "time": 0.1666, "x": 6.49, "y": -2.66 }, + { "time": 0.2333, "x": 6.84, "y": 4.79 }, + { "time": 0.4666, "x": 0, "y": 0 } + ] + }, + "front_bracer": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.1666, "angle": 86.01 }, + { "time": 0.2333, "angle": 114.94 }, + { + "time": 0.3666, + "angle": 81.86, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 0.4666, "angle": 34.73 } + ] + } + }, + "ik": { + "front_arm_goal": [ + { "time": 0, "mix": 0 } + ] + } + }, + "walk": { + "bones": { + "root": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "front_foot_goal": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.2666, "angle": -51.26 }, + { "time": 0.4, "angle": -65.17 }, + { "time": 0.5333, "angle": -76.28 }, + { "time": 0.8, "angle": -76.52 }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 343.28, "y": 36.5 }, + { "time": 0.2666, "x": 86.5, "y": 36.99 }, + { "time": 0.5333, "x": -173.36, "y": 37.42 }, + { "time": 0.6, "x": -68.15, "y": 141.15 }, + { "time": 0.7333, "x": 91.78, "y": 238.01 }, + { "time": 0.8, "x": 155.89, "y": 190.91 }, + { "time": 0.9666, "x": 303.28, "y": 94.4 }, + { "time": 1.0666, "x": 343.28, "y": 36.5 } + ] + }, + "hip": { + "rotate": [ + { "time": 0, "angle": -4.78 }, + { "time": 0.0666, "angle": -3.99 }, + { "time": 0.2666, "angle": -12.49 }, + { "time": 0.5333, "angle": -4.78 }, + { "time": 0.6, "angle": -3.99 }, + { "time": 0.8, "angle": -12.49 }, + { "time": 1.0666, "angle": -4.78 } + ], + "translate": [ + { + "time": 0, + "x": 161.93, + "y": 4.89, + "curve": [ 0.27, 0.37, 0.62, 0.4 ] + }, + { + "time": 0.0666, + "x": 165.04, + "y": -5.99, + "curve": [ 0.244, 0, 0.757, 1 ] + }, + { + "time": 0.2666, + "x": 178.8, + "y": 136.52, + "curve": [ 0.25, 0, 0.841, 0.8 ] + }, + { + "time": 0.5333, + "x": 161.93, + "y": 4.89, + "curve": [ 0.27, 0.37, 0.62, 0.4 ] + }, + { + "time": 0.6, + "x": 165.04, + "y": -5.99, + "curve": [ 0.244, 0, 0.757, 1 ] + }, + { + "time": 0.8, + "x": 178.8, + "y": 136.52, + "curve": [ 0.25, 0, 0.858, 0.82 ] + }, + { "time": 1.0666, "x": 161.93, "y": 4.89 } + ] + }, + "rear_foot_goal": { + "rotate": [ + { "time": 0, "angle": -62.73 }, + { "time": 0.2666, "angle": -107.17 }, + { "time": 0.4666, "angle": -40.51 }, + { "time": 0.8, "angle": -97.15 }, + { "time": 1.0666, "angle": -62.73 } + ], + "translate": [ + { "time": 0, "x": -266.69, "y": -15.46 }, + { "time": 0.1333, "x": -87.88, "y": 124.85 }, + { "time": 0.2666, "x": 88.35, "y": 134.06 }, + { "time": 0.3666, "x": 198.39, "y": 90.64 }, + { "time": 0.4666, "x": 308.19, "y": -26.42 }, + { "time": 0.6, "x": 167.06, "y": -26.42 }, + { "time": 1.0666, "x": -266.69, "y": -15.46 } + ] + }, + "front_leg1": { + "rotate": [ + { "time": 0, "angle": 27.07 }, + { "time": 1.0666, "angle": 31.39 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 }, + { "time": 0.0666, "x": -0.21, "y": 15.19 }, + { "time": 0.5333, "x": -0.33, "y": 12.15 }, + { "time": 0.7333, "x": -4.74, "y": 31.93 }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "front_leg_goal": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": -18.04, "y": -2.88 }, + { "time": 0.4333, "x": -42.2, "y": -88.63 }, + { "time": 0.5333, "x": -27.31, "y": -43.9 }, + { "time": 0.7333, "x": -1.52, "y": -94.28 }, + { "time": 0.8, "x": -24.29, "y": -116.41 }, + { "time": 1, "x": -41.88, "y": -93.3 }, + { "time": 1.0666, "x": -18.04, "y": -2.88 } + ] + }, + "rear_leg1": { + "rotate": [ + { "time": 0, "angle": -64.85 }, + { "time": 1.0666, "angle": -45.71 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "rear_leg_goal": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": -2.05, "y": 15.12 }, + { "time": 0.2666, "x": 17.49, "y": -150.43 }, + { "time": 0.4666, "x": -40.21, "y": -81.76 }, + { "time": 0.5333, "x": -31.68, "y": -82.43 }, + { "time": 0.8, "x": 2.65, "y": -169.21 }, + { "time": 0.9333, "x": -16.76, "y": -98.31 }, + { "time": 1.0666, "x": -2.05, "y": 15.12 } + ] + }, + "tail1": { + "rotate": [ + { "time": 0, "angle": 1.3 }, + { "time": 0.0666, "angle": 4.13 }, + { "time": 0.3333, "angle": -5.77 }, + { "time": 0.6333, "angle": 4.13 }, + { "time": 0.9, "angle": -5.77 }, + { "time": 1.0666, "angle": 1.3 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.0666, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "torso1": { + "rotate": [ + { "time": 0, "angle": 7.21 }, + { "time": 0.2666, "angle": 4.19 }, + { "time": 0.5333, "angle": 7.21 }, + { "time": 0.8, "angle": 4.19 }, + { "time": 1.0666, "angle": 7.21 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "front_leg2": { + "rotate": [ + { "time": 0, "angle": -347.28 }, + { "time": 1.0666, "angle": -362.06 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "rear_leg2": { + "rotate": [ + { "time": 0, "angle": 27.05 }, + { "time": 1.0666, "angle": 9.92 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "saddle": { + "rotate": [ + { "time": 0, "angle": -2.51 }, + { "time": 0.2666, "angle": -4.17 }, + { "time": 0.5333, "angle": -3.85 }, + { "time": 0.8, "angle": -3.09 }, + { "time": 1.0666, "angle": -2.51 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { + "time": 0.2666, + "x": 0, + "y": 0, + "curve": [ 0.149, 0.28, 0.75, 1 ] + }, + { + "time": 0.3333, + "x": -0.03, + "y": 5.91, + "curve": [ 0.421, 0, 0.85, 0.78 ] + }, + { "time": 0.5333, "x": 0, "y": 0 }, + { "time": 0.6, "x": -0.2, "y": -2.35 }, + { + "time": 0.8, + "x": 0, + "y": 0, + "curve": [ 0.149, 0.28, 0.75, 1 ] + }, + { + "time": 0.8666, + "x": -0.03, + "y": 5.91, + "curve": [ 0.421, 0, 0.85, 0.78 ] + }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "tail2": { + "rotate": [ + { "time": 0, "angle": -19.15 }, + { "time": 0.2333, "angle": -11.3 }, + { "time": 0.5, "angle": -9.37 }, + { "time": 0.7666, "angle": -11.3 }, + { "time": 1.0333, "angle": -20.27 }, + { "time": 1.0666, "angle": -19.15 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 0.8, "y": 1 }, + { "time": 0.2333, "x": 0.9, "y": 1 }, + { "time": 0.5, "x": 0.8, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 0.8, "y": 1 } + ] + }, + "torso2": { + "rotate": [ + { "time": 0, "angle": 8.6 }, + { + "time": 0.2666, + "angle": 9.52, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 0.5333, "angle": 8.01 }, + { + "time": 0.8, + "angle": 5.48, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 1.0666, "angle": 8.6 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "front_arm1": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.5, "angle": -367.82 }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 20.64, "y": -7.55 }, + { "time": 0.5, "x": -2.86, "y": 3.32 }, + { "time": 0.8, "x": 24.09, "y": -1.47 }, + { "time": 0.9333, "x": 21.73, "y": -3.7 }, + { "time": 1.0666, "x": 20.64, "y": -7.55 } + ] + }, + "front_leg3": { + "rotate": [ + { "time": 0, "angle": 1.14, "curve": "stepped" }, + { "time": 1.0666, "angle": 1.14 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "neck": { + "rotate": [ + { "time": 0, "angle": 6.5 }, + { "time": 0.2666, "angle": 12.71 }, + { "time": 0.5333, "angle": 6.5 }, + { "time": 0.8, "angle": 12.71 }, + { "time": 1.0666, "angle": 6.5 } + ], + "translate": [ + { "time": 0, "x": 12.59, "y": -31.3 }, + { + "time": 0.2666, + "x": -10.84, + "y": -72.28, + "curve": [ 0.204, 0.01, 0.861, 0.86 ] + }, + { "time": 0.5333, "x": 12.59, "y": -31.3 }, + { + "time": 0.8, + "x": -10.84, + "y": -72.28, + "curve": [ 0.204, 0.01, 0.861, 0.86 ] + }, + { "time": 1.0666, "x": 12.59, "y": -31.3 } + ] + }, + "rear_arm1": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.5, "angle": 13.71 }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 }, + { "time": 0.5, "x": 11.12, "y": -13.38 }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "rear_leg3": { + "rotate": [ + { "time": 0, "angle": -23.18, "curve": "stepped" }, + { "time": 1.0666, "angle": -23.18 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "saddle_strap_front1": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "saddle_strap_rear1": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "tail3": { + "rotate": [ + { "time": 0, "angle": -12.46 }, + { "time": 0.2333, "angle": 12.65 }, + { "time": 0.5, "angle": -20.79 }, + { "time": 0.7666, "angle": 12.65 }, + { "time": 1.0333, "angle": -16.04 }, + { "time": 1.0666, "angle": -12.46 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.2333, "x": 1, "y": 1 }, + { "time": 0.5, "x": 0.997, "y": 1 }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "front_arm2": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.5, "angle": 22.44 }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "front_foot1": { + "rotate": [ + { "time": 0, "angle": -41.33, "curve": "stepped" }, + { "time": 1.0666, "angle": -41.33 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "head": { + "rotate": [ + { "time": 0, "angle": -7.36 }, + { + "time": 0.1333, + "angle": -12.99, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 0.4, "angle": -6.12 }, + { "time": 0.5333, "angle": -7.36 }, + { + "time": 0.6666, + "angle": -12.99, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 0.9333, "angle": -6.12 }, + { "time": 1.0666, "angle": -7.36 } + ], + "translate": [ + { "time": 0, "x": -3.88, "y": -32.87 }, + { "time": 0.9333, "x": -3.33, "y": -22.81 }, + { "time": 1.0666, "x": -3.88, "y": -32.87 } + ] + }, + "rear_arm2": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.5, "angle": -30.2 }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "rear_foot1": { + "rotate": [ + { "time": 0, "angle": 2.07, "curve": "stepped" }, + { "time": 1.0666, "angle": 2.07 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "saddle_strap_front2": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "saddle_strap_rear2": { + "rotate": [ + { "time": 0, "angle": -4.44 }, + { "time": 0.1, "angle": -2.66 }, + { "time": 0.3, "angle": -0.35 }, + { "time": 0.4333, "angle": -1.7 }, + { "time": 0.6333, "angle": -2.54 }, + { "time": 0.9, "angle": -0.51 }, + { "time": 1.0666, "angle": -4.44 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "stirrup": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.2666, "angle": -4.95 }, + { "time": 0.5333, "angle": 0 }, + { "time": 0.8, "angle": -4.95 }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 8.97, "y": 4.99 }, + { "time": 0.2666, "x": 4.85, "y": 0.99 }, + { "time": 0.5333, "x": 7.75, "y": -2.99 }, + { "time": 0.8, "x": 4.85, "y": 0.99 }, + { "time": 1.0666, "x": 8.97, "y": 4.99 } + ] + }, + "tail4": { + "rotate": [ + { "time": 0, "angle": 10.25 }, + { + "time": 0.2333, + "angle": 39.47, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 0.5, "angle": 1.33 }, + { + "time": 0.7666, + "angle": 39.47, + "curve": [ 0.664, 0, 0.75, 1 ] + }, + { "time": 1.0333, "angle": 6.08 }, + { "time": 1.0666, "angle": 10.25 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.2333, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.5, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "front_foot2": { + "rotate": [ + { "time": 0, "angle": 36.9 }, + { "time": 0.0666, "angle": 7.88 }, + { "time": 0.1333, "angle": 4.66 }, + { "time": 0.4, "angle": 7.59 }, + { "time": 0.5333, "angle": 8.08 }, + { "time": 0.6666, "angle": -67.33 }, + { "time": 0.7333, "angle": -65.23 }, + { "time": 1, "angle": 27.74 }, + { "time": 1.0666, "angle": 36.9 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "front_hand": { + "rotate": [ + { "time": 0, "angle": 9.49 }, + { "time": 0.5, "angle": -48.6 }, + { "time": 1.0666, "angle": 9.49 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "horn_front": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 }, + { "time": 0.2666, "x": -7.18, "y": -1.38 }, + { "time": 0.5333, "x": 0, "y": 0 }, + { "time": 0.8, "x": -7.18, "y": -1.38 }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "horn_rear": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 }, + { "time": 0.2666, "x": 12.34, "y": 9.16 }, + { "time": 0.5333, "x": 0, "y": 0 }, + { "time": 0.8, "x": 12.34, "y": 9.16 }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "jaw": { + "rotate": [ + { "time": 0, "angle": 25.56 }, + { "time": 0.2, "angle": 21.27 }, + { "time": 0.3333, "angle": 21.35 }, + { "time": 0.6666, "angle": 15.6 }, + { "time": 0.8666, "angle": 22.96 }, + { "time": 1.0666, "angle": 25.56 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "rear_foot2": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.1333, "angle": -82.37 }, + { "time": 0.2666, "angle": -110.3 }, + { "time": 0.4333, "angle": 36.21 }, + { "time": 0.5333, "angle": 2.1 }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "rear_hand": { + "rotate": [ + { "time": 0, "angle": -28.89 }, + { "time": 0.5, "angle": 12.19 }, + { "time": 1.0666, "angle": -28.89 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "saddle_strap_rear3": { + "rotate": [ + { "time": 0, "angle": -1.31 }, + { "time": 0.1, "angle": 0.46 }, + { "time": 0.3, "angle": 2.77 }, + { "time": 0.4333, "angle": 1.42 }, + { "time": 0.6333, "angle": 0.58 }, + { "time": 0.9, "angle": 2.61 }, + { "time": 1.0666, "angle": -1.31 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "tail5": { + "rotate": [ + { + "time": 0, + "angle": -26.34, + "curve": [ 0.391, -0.58, 0.653, 1.01 ] + }, + { + "time": 0.2333, + "angle": 45.41, + "curve": [ 0.391, -0.58, 0.653, 1.01 ] + }, + { + "time": 0.5, + "angle": -21.92, + "curve": [ 0.391, -0.58, 0.653, 1.01 ] + }, + { + "time": 0.7666, + "angle": 45.41, + "curve": [ 0.391, -0.58, 0.653, 1.01 ] + }, + { "time": 1.0333, "angle": -7.73 }, + { "time": 1.0666, "angle": -26.34 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 0.765, "y": 1 }, + { "time": 0.2333, "x": 1, "y": 1 }, + { "time": 0.5, "x": 0.765, "y": 1 }, + { "time": 0.7666, "x": 1, "y": 1 }, + { "time": 1.0666, "x": 0.765, "y": 1 } + ] + }, + "tongue1": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.3333, "angle": 7.55 }, + { "time": 0.6666, "angle": -1.68 }, + { "time": 0.9333, "angle": 8.11 }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "front_foot3": { + "rotate": [ + { "time": 0, "angle": -1.65 }, + { "time": 0.0666, "angle": -5.29 }, + { "time": 0.1333, "angle": -3.94 }, + { "time": 0.2666, "angle": -3.81 }, + { "time": 0.5333, "angle": -5.89 }, + { "time": 0.6, "angle": -21.2 }, + { "time": 0.6666, "angle": -73.63 }, + { "time": 0.7333, "angle": -102.81 }, + { "time": 0.8333, "angle": -41.3 }, + { "time": 1, "angle": 10.93 }, + { "time": 1.0666, "angle": -1.65 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "tongue2": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.3333, "angle": 7.55 }, + { "time": 0.6666, "angle": -1.68 }, + { "time": 0.9333, "angle": 8.11 }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "tongue3": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.3333, "angle": 7.55 }, + { "time": 0.6666, "angle": -1.68 }, + { "time": 0.9333, "angle": 8.11 }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "head2": { + "rotate": [ + { "time": 0, "angle": 38.59 }, + { "time": 0.2666, "angle": 43.18 }, + { "time": 0.5333, "angle": 38.59 }, + { "time": 0.8, "angle": 43.18 }, + { "time": 1.0666, "angle": 38.59 } + ] + }, + "neck2": { + "rotate": [ + { "time": 0, "angle": 9.65 }, + { "time": 0.2666, "angle": 14.71 }, + { "time": 0.5333, "angle": 9.65 }, + { "time": 0.8, "angle": 14.71 }, + { "time": 1.0666, "angle": 9.65 } + ] + }, + "spineboy_hip": { + "translate": [ + { + "time": 0, + "x": 32.54, + "y": 1.34, + "curve": [ 0.412, 0, 0.872, 0.78 ] + }, + { + "time": 0.2666, + "x": -12.88, + "y": 0.58, + "curve": [ 0.138, 0.17, 0.75, 1 ] + }, + { + "time": 0.5333, + "x": 32.54, + "y": 1.34, + "curve": [ 0.367, 0, 0.867, 0.81 ] + }, + { + "time": 0.8, + "x": -12.88, + "y": 0.58, + "curve": [ 0.164, 0.17, 0.75, 1 ] + }, + { "time": 1.0666, "x": 32.54, "y": 1.34 } + ] + }, + "spineboy_torso": { + "rotate": [ + { "time": 0, "angle": -37.93 }, + { + "time": 0.2666, + "angle": -29.47, + "curve": [ 0.492, 0, 0.75, 1 ] + }, + { "time": 0.5333, "angle": -37.93 }, + { + "time": 0.8, + "angle": -29.47, + "curve": [ 0.492, 0, 0.75, 1 ] + }, + { "time": 1.0666, "angle": -37.71 } + ] + }, + "front_arm": { + "translate": [ + { "time": 0, "x": 0, "y": 0 }, + { "time": 0.3333, "x": -14.43, "y": -11.03 }, + { "time": 0.5333, "x": 0, "y": 0 }, + { "time": 0.8, "x": -14.43, "y": -11.03 }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "gun": { + "rotate": [ + { + "time": 0, + "angle": -11.68, + "curve": [ 0.379, 0.6, 0.724, 1 ] + }, + { "time": 0.0666, "angle": -17.59 }, + { + "time": 0.3333, + "angle": 14.45, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 0.6, + "angle": -24.74, + "curve": [ 0.326, 0, 0.715, 1 ] + }, + { + "time": 0.8666, + "angle": 14.45, + "curve": [ 0.242, 0, 0.666, 0.66 ] + }, + { "time": 1.0666, "angle": -11.68 } + ], + "translate": [ + { "time": 0, "x": 0.84, "y": -3.81 }, + { "time": 0.0666, "x": 0, "y": 0 }, + { "time": 0.3333, "x": 3.37, "y": -15.27 }, + { "time": 0.6, "x": 0, "y": 0 }, + { "time": 0.8666, "x": 3.37, "y": -15.27 }, + { "time": 1.0666, "x": 0.84, "y": -3.81 } + ] + } + }, + "deform": { + "default": { + "raptor_body": { + "raptor_body": [ + { "time": 0 }, + { + "time": 0.2666, + "offset": 314, + "vertices": [ -16.78684, 15.47479, -0.63024, 22.82083, 18.11511, 13.89254, 19.32452, 12.15423, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3.24548, 0.81152, -3.24548, 0.81152, -3.24548, 0.81152, -3.24548, 0.81152, -3.24548, 0.81152, -3.24548, 0.81152, 0, 0, 0, 0, 0, 0, -3.24548, 0.81152, 0, 0, -3.24548, 0.81152 ] + }, + { "time": 0.5333 }, + { + "time": 0.8, + "offset": 314, + "vertices": [ -16.78684, 15.47479, -0.63024, 22.82083, 18.11511, 13.89254, 19.32452, 12.15423, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3.24548, 0.81152, -3.24548, 0.81152, -3.24548, 0.81152, -3.24548, 0.81152, -3.24548, 0.81152, -3.24548, 0.81152, 0, 0, 0, 0, 0, 0, -3.24548, 0.81152, 0, 0, -3.24548, 0.81152 ] + }, + { "time": 1.0666 } + ] + }, + "raptor_front_leg": { + "raptor_front_leg": [ + { "time": 0, "curve": "stepped" }, + { "time": 0.2666 }, + { + "time": 0.5333, + "offset": 138, + "vertices": [ -2.23608, 21.95403, 21.54915, -4.7554 ] + }, + { + "time": 0.6, + "offset": 138, + "vertices": [ 7.17962, 15.14358, 15.26523, -6.91741 ] + }, + { + "time": 0.7333, + "offset": 110, + "vertices": [ -0.82485, 0.73406, -0.01284, -1.10443, 0, 0, 0, 0, 1.4866, -2.59426, 0.98071, 2.82342, 2.7366, -10.49935, 6.12506, 8.95282, -2.60873, -2.28384, 3.43417, -0.47045, -2.28305, -4.76037, 5.08892, 1.40078, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.37966, -1.75515, -2.13229, -0.65667, -2.86239, -0.77365, 2.45989, -1.65319 ] + }, + { "time": 0.8, "curve": "stepped" }, + { "time": 0.9666, "curve": "stepped" }, + { "time": 1.0666 } + ] + } + } + } + } +} +} \ No newline at end of file diff --git a/spine-love/data/raptor.png b/spine-love/data/raptor.png new file mode 100644 index 000000000..503d1c446 Binary files /dev/null and b/spine-love/data/raptor.png differ diff --git a/spine-love/data/spineboy.atlas b/spine-love/data/spineboy.atlas new file mode 100644 index 000000000..2454a1f47 --- /dev/null +++ b/spine-love/data/spineboy.atlas @@ -0,0 +1,216 @@ + +spineboy.png +size: 1024,1024 +format: RGBA8888 +filter: Linear,Linear +repeat: none +eye_indifferent + rotate: true + xy: 648, 629 + size: 93, 89 + orig: 93, 89 + offset: 0, 0 + index: -1 +eye_surprised + rotate: true + xy: 233, 179 + size: 93, 89 + orig: 93, 89 + offset: 0, 0 + index: -1 +front_bracer + rotate: false + xy: 245, 2 + size: 58, 80 + orig: 58, 80 + offset: 0, 0 + index: -1 +front_fist_closed + rotate: false + xy: 168, 45 + size: 75, 82 + orig: 75, 82 + offset: 0, 0 + index: -1 +front_fist_open + rotate: false + xy: 844, 646 + size: 86, 87 + orig: 86, 87 + offset: 0, 0 + index: -1 +front_foot + rotate: true + xy: 310, 326 + size: 126, 69 + orig: 126, 69 + offset: 0, 0 + index: -1 +front_foot_bend1 + rotate: true + xy: 951, 894 + size: 128, 70 + orig: 128, 70 + offset: 0, 0 + index: -1 +front_foot_bend2 + rotate: false + xy: 2, 33 + size: 108, 93 + orig: 108, 93 + offset: 0, 0 + index: -1 +front_shin + rotate: true + xy: 739, 735 + size: 82, 184 + orig: 82, 184 + offset: 0, 0 + index: -1 +front_thigh + rotate: false + xy: 381, 340 + size: 48, 112 + orig: 48, 112 + offset: 0, 0 + index: -1 +front_upper_arm + rotate: false + xy: 112, 29 + size: 54, 97 + orig: 54, 97 + offset: 0, 0 + index: -1 +goggles + rotate: false + xy: 156, 454 + size: 261, 166 + orig: 261, 166 + offset: 0, 0 + index: -1 +gun + rotate: false + xy: 739, 819 + size: 210, 203 + orig: 210, 203 + offset: 0, 0 + index: -1 +head + rotate: false + xy: 466, 724 + size: 271, 298 + orig: 271, 298 + offset: 0, 0 + index: -1 +hoverboard_board + rotate: true + xy: 2, 128 + size: 492, 152 + orig: 492, 152 + offset: 0, 0 + index: -1 +hoverboard_thruster + rotate: false + xy: 602, 558 + size: 60, 64 + orig: 60, 64 + offset: 0, 0 + index: -1 +hoverglow_small + rotate: true + xy: 156, 178 + size: 274, 75 + orig: 274, 75 + offset: 0, 0 + index: -1 +mouth_grind + rotate: true + xy: 951, 799 + size: 93, 59 + orig: 93, 59 + offset: 0, 0 + index: -1 +mouth_oooo + rotate: true + xy: 245, 84 + size: 93, 59 + orig: 93, 59 + offset: 0, 0 + index: -1 +mouth_smile + rotate: false + xy: 925, 738 + size: 93, 59 + orig: 93, 59 + offset: 0, 0 + index: -1 +muzzle + rotate: false + xy: 2, 622 + size: 462, 400 + orig: 462, 400 + offset: 0, 0 + index: -1 +neck + rotate: false + xy: 168, 2 + size: 36, 41 + orig: 36, 41 + offset: 0, 0 + index: -1 +rear_bracer + rotate: false + xy: 932, 664 + size: 56, 72 + orig: 56, 72 + offset: 0, 0 + index: -1 +rear_foot + rotate: false + xy: 487, 562 + size: 113, 60 + orig: 113, 60 + offset: 0, 0 + index: -1 +rear_foot_bend1 + rotate: true + xy: 419, 503 + size: 117, 66 + orig: 117, 66 + offset: 0, 0 + index: -1 +rear_foot_bend2 + rotate: false + xy: 739, 650 + size: 103, 83 + orig: 103, 83 + offset: 0, 0 + index: -1 +rear_shin + rotate: false + xy: 233, 274 + size: 75, 178 + orig: 75, 178 + offset: 0, 0 + index: -1 +rear_thigh + rotate: true + xy: 487, 495 + size: 65, 104 + orig: 65, 104 + offset: 0, 0 + index: -1 +rear_upper_arm + rotate: true + xy: 156, 129 + size: 47, 87 + orig: 47, 87 + offset: 0, 0 + index: -1 +torso + rotate: true + xy: 466, 624 + size: 98, 180 + orig: 98, 180 + offset: 0, 0 + index: -1 diff --git a/spine-love/data/spineboy.json b/spine-love/data/spineboy.json index 408b1d87e..074333537 100644 --- a/spine-love/data/spineboy.json +++ b/spine-love/data/spineboy.json @@ -1 +1,2412 @@ -{"skeleton":{"hash":"K7WPVqF4PZ8L4jRHQe10IDN6xJI","spine":"2.1.03","width":470.64,"height":731.52},"bones":[{"name":"hip","y":247.47},{"name":"front_thigh","parent":"hip","length":74.8,"x":-17.45,"y":-11.64,"rotation":-95.51},{"name":"rear_thigh","parent":"hip","length":85.71,"x":8.91,"y":-5.62,"rotation":-72.54},{"name":"torso","parent":"hip","length":127.55,"x":-1.61,"y":4.9,"rotation":103.82},{"name":"front_shin","parent":"front_thigh","length":128.76,"x":78.69,"y":1.6,"rotation":-2.21,"inheritScale":false},{"name":"front_upper_arm","parent":"torso","length":69.45,"x":103.75,"y":19.32,"rotation":168.37},{"name":"neck","parent":"torso","length":25.45,"x":127.49,"y":-0.3,"rotation":-31.53},{"name":"rear_shin","parent":"rear_thigh","length":121.87,"x":86.1,"y":-1.32,"rotation":-19.83},{"name":"rear_upper_arm","parent":"torso","length":51.93,"x":92.35,"y":-19.22,"rotation":-169.55},{"name":"front_bracer","parent":"front_upper_arm","length":40.57,"x":68.8,"y":-0.68,"rotation":18.29},{"name":"front_foot","parent":"front_shin","length":91.34,"x":128.75,"y":-0.33,"rotation":77.9},{"name":"head","parent":"neck","length":263.57,"x":27.66,"y":-0.25,"rotation":23.18},{"name":"rear_bracer","parent":"rear_upper_arm","length":34.55,"x":51.35,"rotation":23.15},{"name":"rear_foot","parent":"rear_shin","length":82.57,"x":121.45,"y":-0.75,"rotation":69.3},{"name":"front_fist","parent":"front_bracer","length":65.38,"x":40.56,"y":0.19,"rotation":12.43},{"name":"gun","parent":"rear_bracer","length":43.1,"x":34.42,"y":-0.45,"rotation":5.34},{"name":"gunTip","parent":"gun","x":201.04,"y":52.13,"rotation":6.83}],"slots":[{"name":"rear_upper_arm","bone":"rear_upper_arm","attachment":"rear_upper_arm"},{"name":"rear_bracer","bone":"rear_bracer","attachment":"rear_bracer"},{"name":"gun","bone":"gun","attachment":"gun"},{"name":"rear_foot","bone":"rear_foot","attachment":"rear_foot"},{"name":"rear_thigh","bone":"rear_thigh","attachment":"rear_thigh"},{"name":"rear_shin","bone":"rear_shin","attachment":"rear_shin"},{"name":"neck","bone":"neck","attachment":"neck"},{"name":"torso","bone":"torso","attachment":"torso"},{"name":"front_upper_arm","bone":"front_upper_arm","attachment":"front_upper_arm"},{"name":"head","bone":"head","attachment":"head"},{"name":"eye","bone":"head","attachment":"eye_indifferent"},{"name":"front_thigh","bone":"front_thigh","attachment":"front_thigh"},{"name":"front_foot","bone":"front_foot","attachment":"front_foot"},{"name":"front_shin","bone":"front_shin","attachment":"front_shin"},{"name":"mouth","bone":"head","attachment":"mouth_smile"},{"name":"goggles","bone":"head","attachment":"goggles"},{"name":"front_bracer","bone":"front_bracer","attachment":"front_bracer"},{"name":"front_fist","bone":"front_fist","attachment":"front_fist_closed"},{"name":"muzzle","bone":"gunTip","additive":true},{"name":"head-bb","bone":"head"},{"name":"headbb","bone":"head","attachment":"headbb"}],"skins":{"default":{"eye":{"eye_indifferent":{"x":85.72,"y":-28.18,"rotation":-70.63,"width":93,"height":89},"eye_surprised":{"x":85.72,"y":-28.18,"rotation":-70.63,"width":93,"height":89}},"front_bracer":{"front_bracer":{"x":12.03,"y":-1.67,"rotation":79.59,"width":58,"height":80}},"front_fist":{"front_fist_closed":{"x":35.49,"y":6,"rotation":67.16,"width":75,"height":82},"front_fist_open":{"x":39.56,"y":7.76,"rotation":67.16,"width":86,"height":87}},"front_foot":{"front_foot":{"x":29.51,"y":7.83,"rotation":18.68,"width":126,"height":69},"front_foot_bend1":{"x":29.51,"y":7.83,"rotation":18.68,"width":128,"height":70},"front_foot_bend2":{"x":16.07,"y":13.83,"rotation":18.68,"width":108,"height":93}},"front_shin":{"front_shin":{"x":55.11,"y":-3.54,"rotation":96.59,"width":82,"height":184}},"front_thigh":{"front_thigh":{"x":42.47,"y":4.44,"rotation":84.86,"width":48,"height":112}},"front_upper_arm":{"front_upper_arm":{"x":28.3,"y":7.37,"rotation":97.89,"width":54,"height":97}},"goggles":{"goggles":{"x":97.07,"y":6.54,"rotation":-70.63,"width":261,"height":166}},"gun":{"gun":{"x":77.3,"y":16.4,"rotation":60.82,"width":210,"height":203}},"head":{"head":{"x":128.95,"y":0.29,"rotation":-70.63,"width":271,"height":298}},"head-bb":{"head":{"type":"boundingbox","vertices":[-19.143097,-70.30209,40.80313,-118.074234,257.77155,-115.61827,285.16193,57.18005,120.77191,164.95125,-5.067627,76.94907]}},"headbb":{"headbb":{"type":"boundingbox","vertices":[-12.554413,-54.026264,23.48825,-101.27528,231.95355,-109.845566,274.80518,49.916832,181.1228,122.143875,83.208466,133.12569,2.8721924,56.44203]}},"mouth":{"mouth_grind":{"x":23.68,"y":-32.23,"rotation":-70.63,"width":93,"height":59},"mouth_oooo":{"x":23.68,"y":-32.23,"rotation":-70.63,"width":93,"height":59},"mouth_smile":{"x":23.68,"y":-32.23,"rotation":-70.63,"width":93,"height":59}},"muzzle":{"muzzle":{"x":18.25,"y":5.44,"rotation":0.15,"width":462,"height":400}},"neck":{"neck":{"x":9.76,"y":-3.01,"rotation":-55.22,"width":36,"height":41}},"rear_bracer":{"rear_bracer":{"x":11.15,"y":-2.2,"rotation":66.17,"width":56,"height":72}},"rear_foot":{"rear_foot":{"x":31.51,"y":3.57,"rotation":23.07,"width":113,"height":60},"rear_foot_bend1":{"x":34.39,"y":4.8,"rotation":23.07,"width":117,"height":66},"rear_foot_bend2":{"x":30.38,"y":12.62,"rotation":23.07,"width":103,"height":83}},"rear_shin":{"rear_shin":{"x":58.29,"y":-2.75,"rotation":92.37,"width":75,"height":178}},"rear_thigh":{"rear_thigh":{"x":33.1,"y":-4.11,"rotation":72.54,"width":65,"height":104}},"rear_upper_arm":{"rear_upper_arm":{"x":21.12,"y":4.08,"rotation":89.32,"width":47,"height":87}},"torso":{"torso":{"x":63.61,"y":7.12,"rotation":-94.53,"width":98,"height":180}}}},"events":{"footstep":{},"headAttach":{"int":3,"float":4},"headBehind":{"int":5,"float":6,"string":"setup"},"headPop":{"int":1,"float":2}},"animations":{"death":{"slots":{"eye":{"attachment":[{"time":0,"name":"eye_surprised"},{"time":0.4666,"name":"eye_indifferent"},{"time":2.2333,"name":"eye_surprised"},{"time":4.5333,"name":"eye_indifferent"}]},"front_fist":{"attachment":[{"time":0,"name":"front_fist_open"}]},"mouth":{"attachment":[{"time":0,"name":"mouth_oooo"},{"time":2.2333,"name":"mouth_grind"},{"time":4.5333,"name":"mouth_oooo"}]}},"bones":{"head":{"rotate":[{"time":0,"angle":-2.82},{"time":0.1333,"angle":-28.74},{"time":0.2333,"angle":11.42},{"time":0.3333,"angle":-50.24},{"time":0.4,"angle":-72.66,"curve":"stepped"},{"time":0.4333,"angle":-72.66},{"time":0.5,"angle":-20.24},{"time":0.5666,"angle":-85.28,"curve":"stepped"},{"time":0.9333,"angle":-85.28,"curve":"stepped"},{"time":2.2333,"angle":-85.28},{"time":2.5,"angle":-51.96,"curve":"stepped"},{"time":4.5333,"angle":-51.96},{"time":4.6666,"angle":-85.28}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"neck":{"rotate":[{"time":0,"angle":-2.82},{"time":0.1333,"angle":12.35},{"time":0.2333,"angle":29.89},{"time":0.3,"angle":70.36},{"time":0.4,"angle":-10.22,"curve":"stepped"},{"time":0.4333,"angle":-10.22},{"time":0.5,"angle":2.92},{"time":0.5666,"angle":47.94,"curve":"stepped"},{"time":2.2333,"angle":47.94},{"time":2.5,"angle":18.5,"curve":"stepped"},{"time":4.5333,"angle":18.5},{"time":4.6666,"angle":47.94}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"torso":{"rotate":[{"time":0,"angle":-8.61},{"time":0.1333,"angle":28.19},{"time":0.2666,"angle":-280.19},{"time":0.4,"angle":-237.22,"curve":"stepped"},{"time":0.4333,"angle":-237.22},{"time":0.5,"angle":76.03,"curve":"stepped"},{"time":0.8,"angle":76.03,"curve":"stepped"},{"time":0.9333,"angle":76.03,"curve":"stepped"},{"time":2.2333,"angle":76.03}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.9333,"x":0,"y":0,"curve":"stepped"},{"time":2.2333,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"front_upper_arm":{"rotate":[{"time":0,"angle":-38.85},{"time":0.1333,"angle":-299.58},{"time":0.2666,"angle":-244.74},{"time":0.4,"angle":-292.35},{"time":0.4333,"angle":-315.84},{"time":0.5,"angle":-347.94},{"time":0.7,"angle":-347.33,"curve":"stepped"},{"time":2.2333,"angle":-347.33},{"time":2.7,"angle":-290.68},{"time":2.7666,"angle":-285.1},{"time":4.6666,"angle":-290.68},{"time":4.8,"angle":8.61},{"time":4.8666,"angle":10.94}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"rear_upper_arm":{"rotate":[{"time":0,"angle":-44.69},{"time":0.1333,"angle":112.26},{"time":0.2666,"angle":129.07},{"time":0.4,"angle":134.94,"curve":"stepped"},{"time":0.4333,"angle":134.94},{"time":0.5666,"angle":172.6,"curve":"stepped"},{"time":0.9333,"angle":172.6,"curve":"stepped"},{"time":2.2333,"angle":172.6}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"front_bracer":{"rotate":[{"time":0,"angle":21.88},{"time":0.1333,"angle":11.48},{"time":0.2666,"angle":-18.81},{"time":0.4,"angle":-18.92},{"time":0.4333,"angle":-18.28},{"time":0.5,"angle":60.61},{"time":0.7,"angle":-18.87,"curve":"stepped"},{"time":2.2333,"angle":-18.87},{"time":2.7,"angle":-1.95,"curve":"stepped"},{"time":4.6666,"angle":-1.95},{"time":4.8,"angle":34.55},{"time":4.9333,"angle":-18.74}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"front_fist":{"rotate":[{"time":0,"angle":-2.33},{"time":0.2666,"angle":26.34},{"time":0.7,"angle":-6.07,"curve":"stepped"},{"time":2.2333,"angle":-6.07},{"time":2.7,"angle":5.72,"curve":"stepped"},{"time":4.6666,"angle":5.72},{"time":4.8666,"angle":-6.52}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"rear_bracer":{"rotate":[{"time":0,"angle":10.36},{"time":0.1333,"angle":-23.12},{"time":0.2666,"angle":-23.11},{"time":0.4,"angle":-23.16,"curve":"stepped"},{"time":0.4333,"angle":-23.16},{"time":0.5666,"angle":-23.2,"curve":"stepped"},{"time":0.9333,"angle":-23.2,"curve":"stepped"},{"time":2.2333,"angle":-23.2}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"gun":{"rotate":[{"time":0,"angle":-2.78},{"time":0.1333,"angle":-24.58}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"hip":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.9333,"angle":0,"curve":"stepped"},{"time":2.2333,"angle":0}],"translate":[{"time":0,"x":0,"y":0},{"time":0.2,"x":50.34,"y":151.73},{"time":0.4,"x":5.16,"y":-119.64,"curve":"stepped"},{"time":0.4333,"x":5.16,"y":-119.64},{"time":0.5,"x":50.34,"y":-205.18,"curve":"stepped"},{"time":0.8,"x":50.34,"y":-205.18,"curve":"stepped"},{"time":0.9333,"x":50.34,"y":-205.18,"curve":"stepped"},{"time":2.2333,"x":50.34,"y":-205.18}],"scale":[{"time":0,"x":1,"y":1}]},"front_thigh":{"rotate":[{"time":0,"angle":0},{"time":0.1333,"angle":8.47},{"time":0.2666,"angle":115.95},{"time":0.4,"angle":180.66,"curve":"stepped"},{"time":0.4333,"angle":180.66},{"time":0.5,"angle":155.22},{"time":0.6,"angle":97.73}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"front_shin":{"rotate":[{"time":0,"angle":0},{"time":0.1333,"angle":-27.37},{"time":0.2666,"angle":-35.1},{"time":0.4,"angle":-37.72,"curve":"stepped"},{"time":0.4333,"angle":-37.72},{"time":0.5,"angle":-40.06},{"time":0.6,"angle":2.76}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"rear_thigh":{"rotate":[{"time":0,"angle":0},{"time":0.1333,"angle":70.45},{"time":0.2666,"angle":155.34},{"time":0.4,"angle":214.31,"curve":"stepped"},{"time":0.4333,"angle":214.31},{"time":0.5,"angle":169.67},{"time":0.8,"angle":83.27}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"rear_shin":{"rotate":[{"time":0,"angle":0},{"time":0.1333,"angle":18.93},{"time":0.2666,"angle":-21.04},{"time":0.4,"angle":-29.93,"curve":"stepped"},{"time":0.4333,"angle":-29.93},{"time":0.5,"angle":-16.79},{"time":0.8,"angle":7.77}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"rear_foot":{"rotate":[{"time":0,"angle":0},{"time":0.1333,"angle":-11.62},{"time":0.4,"angle":-45.59,"curve":"stepped"},{"time":0.4333,"angle":-45.59}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"front_foot":{"rotate":[{"time":0,"angle":0},{"time":0.4,"angle":-48.75,"curve":"stepped"},{"time":0.4333,"angle":-48.75}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"gunTip":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]}}},"hit":{"slots":{"front_fist":{"attachment":[{"time":0.1666,"name":"front_fist_open"}]},"mouth":{"attachment":[{"time":0,"name":"mouth_grind"},{"time":0.3333,"name":"mouth_smile"}]}},"bones":{"torso":{"rotate":[{"time":0,"angle":56.42},{"time":0.3333,"angle":8.89}]},"neck":{"rotate":[{"time":0,"angle":35.38},{"time":0.2333,"angle":24.94}]},"head":{"rotate":[{"time":0,"angle":10.21},{"time":0.3333,"angle":-41.3}]},"front_upper_arm":{"rotate":[{"time":0,"angle":-310.92,"curve":[0.38,0.53,0.744,1]},{"time":0.3333,"angle":-112.59}],"translate":[{"time":0,"x":7.23,"y":-13.13}]},"front_bracer":{"rotate":[{"time":0,"angle":36.99},{"time":0.3333,"angle":-28.64}]},"front_fist":{"rotate":[{"time":0,"angle":13.59},{"time":0.3333,"angle":7.55}]},"rear_upper_arm":{"rotate":[{"time":0,"angle":271.02,"curve":[0.342,0.36,0.68,0.71]},{"time":0.3333,"angle":-15.84}],"translate":[{"time":0.3333,"x":-0.09,"y":-0.46}]},"rear_bracer":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":40.03}]},"gun":{"rotate":[{"time":0,"angle":14.98},{"time":0.3333,"angle":39.75}]},"hip":{"translate":[{"time":0,"x":-75.54,"y":-78.03},{"time":0.2333,"x":-36.48,"y":12.42},{"time":0.3333,"x":-36.48,"y":-2.99}]},"front_thigh":{"rotate":[{"time":0,"angle":90.94,"curve":[0.227,0.26,0.432,1]},{"time":0.3333,"angle":32.02}],"translate":[{"time":0,"x":7.21,"y":-4}]},"rear_thigh":{"rotate":[{"time":0,"angle":40.51,"curve":[0.295,0.3,0.59,0.99]},{"time":0.3333,"angle":90.76}],"translate":[{"time":0,"x":-1.96,"y":-0.32}]},"front_shin":{"rotate":[{"time":0,"angle":-96.62},{"time":0.3333,"angle":-15.13}]},"rear_shin":{"rotate":[{"time":0,"angle":7.99},{"time":0.3333,"angle":-67.54}],"scale":[{"time":0,"x":1,"y":1}]},"front_foot":{"rotate":[{"time":0,"angle":5.4},{"time":0.3333,"angle":-16.26}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"rear_foot":{"rotate":[{"time":0,"angle":2.67},{"time":0.3333,"angle":-10.31}]}}},"idle":{"slots":{"front_fist":{"attachment":[{"time":0,"name":"front_fist_open"},{"time":1.6666,"name":"front_fist_open"}]},"mouth":{"attachment":[{"time":0,"name":"mouth_smile"},{"time":1.6666,"name":"mouth_smile"}]}},"bones":{"torso":{"rotate":[{"time":0,"angle":-5.61,"curve":[0.25,0,0.75,1]},{"time":0.8333,"angle":-9.65,"curve":[0.25,0,0.75,1]},{"time":1.6666,"angle":-5.61}],"translate":[{"time":0,"x":-6.49,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.6666,"x":1,"y":1}]},"front_upper_arm":{"rotate":[{"time":0,"angle":-59.85,"curve":[0.492,0,0.75,1]},{"time":0.6666,"angle":-54.31,"curve":[0.324,0.11,0.75,1]},{"time":1.6666,"angle":-59.85}],"translate":[{"time":0,"x":-7.12,"y":-8.23},{"time":0.6666,"x":-6.32,"y":-8.3},{"time":1.6666,"x":-7.12,"y":-8.23}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.6666,"x":1,"y":1}]},"rear_upper_arm":{"rotate":[{"time":0,"angle":62.41,"curve":[0.504,0.02,0.75,1]},{"time":0.7333,"angle":43.83,"curve":[0.25,0,0.75,1]},{"time":1.6666,"angle":62.41}],"translate":[{"time":0,"x":-1.83,"y":-16.78},{"time":0.6666,"x":0.34,"y":-15.23},{"time":1.6666,"x":-1.83,"y":-16.78}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.6666,"x":1,"y":1}]},"neck":{"rotate":[{"time":0,"angle":0},{"time":0.6666,"angle":2.39},{"time":1.6666,"angle":0}],"translate":[{"time":0,"x":-1.88,"y":-4.76,"curve":"stepped"},{"time":1.6666,"x":-1.88,"y":-4.76}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.6666,"x":1,"y":1}]},"front_thigh":{"rotate":[{"time":0,"angle":0.64,"curve":[0.235,0,0.558,0.99]},{"time":0.6666,"angle":-4.34,"curve":[0.594,0,0.653,1]},{"time":1.6666,"angle":0.64}],"translate":[{"time":0,"x":-13.39,"y":6.69,"curve":"stepped"},{"time":1.6666,"x":-13.39,"y":6.69}],"scale":[{"time":0,"x":0.896,"y":1,"curve":[0.235,0,0.558,0.99]},{"time":0.6666,"x":0.825,"y":1,"curve":[0.594,0,0.653,1]},{"time":1.6666,"x":0.896,"y":1}]},"front_shin":{"rotate":[{"time":0,"angle":-19.28,"curve":"stepped"},{"time":1.6666,"angle":-19.28}],"scale":[{"time":0,"x":1,"y":1,"curve":[0.235,0,0.558,0.99]},{"time":0.6666,"x":0.994,"y":1,"curve":[0.594,0,0.653,1]},{"time":1.6666,"x":1,"y":1}]},"rear_thigh":{"rotate":[{"time":0,"angle":30.5,"curve":[0.235,0,0.558,0.99]},{"time":0.6666,"angle":40.15,"curve":[0.594,0,0.653,1]},{"time":1.6666,"angle":30.5}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.6666,"x":1,"y":1}]},"rear_shin":{"rotate":[{"time":0,"angle":-23.83,"curve":[0.235,0,0.558,0.99]},{"time":0.6666,"angle":-43.77,"curve":[0.594,0,0.653,1]},{"time":1.6666,"angle":-23.83}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.6666,"x":1,"y":1}]},"front_foot":{"rotate":[{"time":0,"angle":5.13,"curve":[0.235,0,0.558,0.99]},{"time":0.6666,"angle":10.04,"curve":[0.594,0,0.653,1]},{"time":1.6666,"angle":5.13}],"scale":[{"time":0,"x":0.755,"y":1.309,"curve":"stepped"},{"time":1.6666,"x":0.755,"y":1.309}]},"hip":{"translate":[{"time":0,"x":-6.63,"y":-23.01,"curve":[0.235,0,0.558,0.99]},{"time":0.6666,"x":6.27,"y":-35,"curve":[0.594,0,0.653,1]},{"time":1.6666,"x":-6.63,"y":-23.01}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.6666,"x":1,"y":1}]},"rear_foot":{"rotate":[{"time":0,"angle":-7.34,"curve":[0.235,0,0.558,0.99]},{"time":0.6666,"angle":3.85,"curve":[0.594,0,0.653,1]},{"time":1.6666,"angle":-7.34}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.6666,"x":1,"y":1}]},"rear_bracer":{"rotate":[{"time":0,"angle":-17.16,"curve":[0.25,0,0.75,1]},{"time":0.6666,"angle":12.52,"curve":[0.25,0,0.75,1]},{"time":1.6666,"angle":-17.16}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.6666,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":-5.51,"curve":[0.25,0,0.75,1]},{"time":0.6666,"angle":-3.12,"curve":[0.25,0,0.75,1]},{"time":1.6666,"angle":-5.51}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.6666,"x":1,"y":1}]},"front_bracer":{"rotate":[{"time":0,"angle":45.46,"curve":[0.492,0,0.75,1]},{"time":0.6666,"angle":41.33,"curve":[0.32,0.1,0.736,0.91]},{"time":1.6666,"angle":45.46}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.6666,"x":1,"y":1}]},"gun":{"rotate":[{"time":0,"angle":0,"curve":[0.25,0,0.75,1]},{"time":0.6666,"angle":-15.59,"curve":[0.732,0,0.769,0.99]},{"time":1.6666,"angle":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":1.6666,"x":1,"y":1}]},"front_fist":{"rotate":[{"time":0,"angle":-6.84,"curve":[0.492,0,0.75,1]},{"time":0.6666,"angle":-14.63,"curve":[0.324,0.11,0.75,1]},{"time":1.6666,"angle":-6.84}],"scale":[{"time":0,"x":1,"y":1,"curve":[0.25,0,0.75,1]},{"time":0.6666,"x":0.689,"y":1.1,"curve":[0.25,0,0.75,1]},{"time":1.6666,"x":1,"y":1}]}}},"jump":{"slots":{"front_fist":{"attachment":[{"time":0,"name":"front_fist_open"},{"time":0.2,"name":"front_fist_closed"},{"time":0.6666,"name":"front_fist_open"}]},"mouth":{"attachment":[{"time":0,"name":"mouth_grind"}]},"torso":{"attachment":[{"time":0,"name":"torso"}]}},"bones":{"front_thigh":{"rotate":[{"time":0,"angle":91.53,"curve":[0.278,0.46,0.763,1]},{"time":0.2,"angle":-35.83,"curve":[0.761,0,0.75,1]},{"time":0.4333,"angle":127.74},{"time":0.7333,"angle":48.18,"curve":[0.227,0.26,0.432,1]},{"time":0.8333,"angle":25.35},{"time":0.9333,"angle":45.37},{"time":1.0333,"angle":38.12},{"time":1.1333,"angle":25.35},{"time":1.3333,"angle":91.53}],"translate":[{"time":0,"x":-2.56,"y":5.77},{"time":0.4333,"x":8.3,"y":7.98},{"time":0.7333,"x":7.21,"y":-4},{"time":1.3333,"x":-2.56,"y":5.77}],"scale":[{"time":0,"x":1,"y":1}]},"torso":{"rotate":[{"time":0,"angle":-42.63},{"time":0.2,"angle":-5.74},{"time":0.4333,"angle":-50.76},{"time":0.7333,"angle":1.89},{"time":0.8333,"angle":11.58},{"time":0.9666,"angle":-1.89},{"time":1.1333,"angle":11.58},{"time":1.3333,"angle":-42.63}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"rear_thigh":{"rotate":[{"time":0,"angle":-26.32},{"time":0.2,"angle":121.44},{"time":0.4333,"angle":70.54},{"time":0.7333,"angle":79.89,"curve":[0.295,0.3,0.59,0.99]},{"time":0.8333,"angle":99.12},{"time":0.9333,"angle":74.05},{"time":1.0333,"angle":98.04},{"time":1.1333,"angle":99.12},{"time":1.3333,"angle":-26.32}],"translate":[{"time":0,"x":-0.56,"y":-0.32},{"time":0.4333,"x":-8.5,"y":10.58},{"time":0.7333,"x":-1.96,"y":-0.32},{"time":1.3333,"x":-0.56,"y":-0.32}],"scale":[{"time":0,"x":1,"y":1}]},"rear_shin":{"rotate":[{"time":0,"angle":-78.69},{"time":0.4333,"angle":-55.56},{"time":0.7333,"angle":-62.84},{"time":0.8333,"angle":-80.74},{"time":0.9333,"angle":-41.12},{"time":1.0333,"angle":-77.4},{"time":1.1333,"angle":-80.74},{"time":1.3333,"angle":-78.69}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.7333,"x":1,"y":1}]},"front_upper_arm":{"rotate":[{"time":0,"angle":-22.61},{"time":0.2,"angle":-246.68},{"time":0.6,"angle":11.28,"curve":[0.246,0,0.633,0.53]},{"time":0.7333,"angle":-57.45,"curve":[0.38,0.53,0.744,1]},{"time":0.8666,"angle":-112.59},{"time":0.9333,"angle":-102.17},{"time":1.0333,"angle":-108.61},{"time":1.1333,"angle":-112.59},{"time":1.3333,"angle":-22.61}],"translate":[{"time":0,"x":6.08,"y":7.15},{"time":0.2,"x":7.23,"y":-13.13,"curve":"stepped"},{"time":0.7333,"x":7.23,"y":-13.13},{"time":1.3333,"x":6.08,"y":7.15}],"scale":[{"time":0,"x":1,"y":1}]},"front_bracer":{"rotate":[{"time":0,"angle":66.46},{"time":0.2,"angle":42.39},{"time":0.4333,"angle":26.06},{"time":0.7333,"angle":13.28},{"time":0.8666,"angle":-28.64},{"time":0.9333,"angle":-22.31},{"time":1.0333,"angle":-35.39},{"time":1.1333,"angle":-28.64},{"time":1.3333,"angle":66.46}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"front_fist":{"rotate":[{"time":0,"angle":-28.43},{"time":0.4333,"angle":-45.6},{"time":0.7333,"angle":-53.66},{"time":0.8666,"angle":7.55},{"time":0.9333,"angle":31.15},{"time":1.0333,"angle":-32.58},{"time":1.1333,"angle":7.55},{"time":1.3333,"angle":-28.43}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"rear_upper_arm":{"rotate":[{"time":0,"angle":39.68},{"time":0.2,"angle":276.57},{"time":0.3,"angle":17.73},{"time":0.4333,"angle":83.38},{"time":0.6,"angle":-4.71,"curve":[0.246,0,0.633,0.53]},{"time":0.7333,"angle":-69.63,"curve":[0.342,0.36,0.68,0.71]},{"time":0.7666,"angle":321.47,"curve":[0.333,0.33,0.667,0.66]},{"time":0.8,"angle":33.7,"curve":[0.358,0.64,0.693,1]},{"time":0.8666,"angle":34.56},{"time":1.0333,"angle":71.96},{"time":1.1333,"angle":34.56},{"time":1.3333,"angle":39.68}],"translate":[{"time":0,"x":-3.1,"y":-4.86},{"time":0.2,"x":23.33,"y":49.07},{"time":0.4333,"x":20.78,"y":40.21},{"time":1.3333,"x":-3.1,"y":-4.86}],"scale":[{"time":0,"x":1,"y":1}]},"rear_bracer":{"rotate":[{"time":0,"angle":29.66},{"time":0.2,"angle":45.06},{"time":0.4333,"angle":-4.34},{"time":0.7666,"angle":61.68},{"time":0.8,"angle":82.59},{"time":0.8666,"angle":80.06},{"time":1.0333,"angle":57.56},{"time":1.1333,"angle":80.06},{"time":1.3333,"angle":29.66}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"neck":{"rotate":[{"time":0,"angle":24.9},{"time":0.2,"angle":16.31},{"time":0.4333,"angle":7.44},{"time":0.7333,"angle":-20.35},{"time":0.8333,"angle":-0.69,"curve":"stepped"},{"time":1.1333,"angle":-0.69},{"time":1.3333,"angle":24.9}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":24.92},{"time":0.2,"angle":10.36},{"time":0.4333,"angle":28.65},{"time":0.7333,"angle":-2.65},{"time":0.8333,"angle":-28.94,"curve":"stepped"},{"time":1.1333,"angle":-28.94},{"time":1.3333,"angle":24.92}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"hip":{"rotate":[{"time":0,"angle":0}],"translate":[{"time":0,"x":-34.51,"y":-78.62,"curve":[0.232,1,0.75,1]},{"time":0.2,"x":-34.51,"y":182.5,"curve":[0.232,0.48,0.598,0.79]},{"time":0.7666,"x":-34.51,"y":596.22,"curve":[0.329,0.17,0.66,0.21]},{"time":1.1333,"x":-34.51,"y":2.49},{"time":1.3333,"x":-34.51,"y":-78.62}],"scale":[{"time":0,"x":1,"y":1}]},"front_shin":{"rotate":[{"time":0,"angle":-90.62,"curve":[0.416,0.54,0.743,1]},{"time":0.2,"angle":-10.52,"curve":[0.644,0,0.75,1]},{"time":0.4333,"angle":-127.72},{"time":0.7333,"angle":-19.91},{"time":0.8333,"angle":-5.16},{"time":0.9333,"angle":-35.06},{"time":1.0333,"angle":-43.97},{"time":1.1333,"angle":-5.16},{"time":1.3333,"angle":-90.62}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"front_foot":{"rotate":[{"time":0,"angle":-0.79},{"time":0.0333,"angle":16.27},{"time":0.0666,"angle":23.52},{"time":0.1,"angle":21.02},{"time":0.1333,"angle":10.92},{"time":0.2,"angle":-38.45},{"time":0.4333,"angle":6.62},{"time":0.7333,"angle":-11.51},{"time":1.0333,"angle":-22.91},{"time":1.3333,"angle":-0.79}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"rear_foot":{"rotate":[{"time":0,"angle":-12.77},{"time":0.2,"angle":17.05},{"time":0.4333,"angle":19.45},{"time":0.7333,"angle":2.67},{"time":1.0333,"angle":-28.49},{"time":1.3333,"angle":-12.77}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]},"gun":{"rotate":[{"time":0,"angle":6.18},{"time":0.2,"angle":30.81},{"time":0.4333,"angle":13.25},{"time":0.7333,"angle":14.98},{"time":0.7666,"angle":25.64},{"time":0.8,"angle":20.62},{"time":0.8666,"angle":64.52},{"time":1.0333,"angle":8.59},{"time":1.1333,"angle":64.52},{"time":1.3333,"angle":6.18}],"translate":[{"time":0,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1}]}}},"run":{"slots":{"front_fist":{"attachment":[{"time":0,"name":"front_fist_closed"}]},"mouth":{"attachment":[{"time":0,"name":"mouth_grind"}]},"torso":{"attachment":[{"time":0,"name":"torso"}]}},"bones":{"front_thigh":{"rotate":[{"time":0,"angle":42.05,"curve":[0.195,0.86,0.75,1]},{"time":0.0666,"angle":46.07},{"time":0.1333,"angle":-20.28},{"time":0.2,"angle":-27.23},{"time":0.2666,"angle":-47.16},{"time":0.3333,"angle":-39.79},{"time":0.4,"angle":-25.86},{"time":0.4666,"angle":14.35},{"time":0.5333,"angle":55.62},{"time":0.6,"angle":69.65},{"time":0.6666,"angle":86.4},{"time":0.7333,"angle":65.87},{"time":0.8,"angle":42.05}],"translate":[{"time":0,"x":0,"y":0},{"time":0.0333,"x":-5.79,"y":11.15},{"time":0.0666,"x":-5.13,"y":11.55},{"time":0.1333,"x":-7.7,"y":8.98},{"time":0.5333,"x":-1.26,"y":3.83},{"time":0.8,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.8,"x":1,"y":1}]},"torso":{"rotate":[{"time":0,"angle":-39.7},{"time":0.2,"angle":-57.29},{"time":0.4,"angle":-39.7},{"time":0.6,"angle":-57.29},{"time":0.8,"angle":-39.7}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.4,"x":0,"y":0,"curve":"stepped"},{"time":0.8,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.8,"x":1,"y":1}]},"rear_thigh":{"rotate":[{"time":0,"angle":-56.59},{"time":0.0666,"angle":-21.57},{"time":0.1333,"angle":27.95},{"time":0.2,"angle":42.42},{"time":0.2666,"angle":62.37},{"time":0.3333,"angle":45.42},{"time":0.4,"angle":15.67},{"time":0.4666,"angle":28.22},{"time":0.5333,"angle":-38.62},{"time":0.6,"angle":-53.26},{"time":0.6666,"angle":-79.31},{"time":0.7333,"angle":-86.47},{"time":0.8,"angle":-56.59}],"translate":[{"time":0,"x":0,"y":0},{"time":0.4,"x":-6.76,"y":-3.86},{"time":0.4333,"x":-15.85,"y":7.28},{"time":0.4666,"x":-13.04,"y":4.04},{"time":0.5,"x":-10.24,"y":7.11},{"time":0.5333,"x":-9.01,"y":-5.15},{"time":0.6666,"x":-23.18,"y":-2.57},{"time":0.8,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.8,"x":1,"y":1}]},"rear_shin":{"rotate":[{"time":0,"angle":-74},{"time":0.0666,"angle":-83.38},{"time":0.1333,"angle":-106.69},{"time":0.2,"angle":-66.01},{"time":0.2666,"angle":-55.22},{"time":0.3333,"angle":-24.8},{"time":0.4,"angle":18.44,"curve":[0.25,0,0.75,1]},{"time":0.4666,"angle":-56.65},{"time":0.5333,"angle":-11.94,"curve":[0.25,0,0.75,1]},{"time":0.6666,"angle":-41.26},{"time":0.7333,"angle":-43.6},{"time":0.8,"angle":-74}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.8,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.8,"x":1,"y":1}]},"front_upper_arm":{"rotate":[{"time":0,"angle":-89.36},{"time":0.0666,"angle":-95.67},{"time":0.1333,"angle":-22},{"time":0.2,"angle":-316.04},{"time":0.2666,"angle":-274.94},{"time":0.3333,"angle":-273.74},{"time":0.4,"angle":-272.09},{"time":0.4666,"angle":-264.89},{"time":0.5333,"angle":-320.09},{"time":0.6,"angle":-50.83},{"time":0.6666,"angle":-81.72},{"time":0.7333,"angle":-83.92},{"time":0.8,"angle":-89.36}],"translate":[{"time":0,"x":6.24,"y":10.05},{"time":0.2666,"x":4.95,"y":-13.13},{"time":0.6,"x":-2.43,"y":1.94},{"time":0.8,"x":6.24,"y":10.05}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.8,"x":1,"y":1}]},"front_bracer":{"rotate":[{"time":0,"angle":33.43},{"time":0.0666,"angle":20.53},{"time":0.1333,"angle":15.26},{"time":0.2,"angle":19.28},{"time":0.2666,"angle":22.62},{"time":0.3333,"angle":37.29},{"time":0.4,"angle":41.53},{"time":0.4666,"angle":31.73},{"time":0.5333,"angle":67.45},{"time":0.6666,"angle":39.77},{"time":0.7333,"angle":30.95},{"time":0.8,"angle":33.43}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.8,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.8,"x":1,"y":1}]},"front_fist":{"rotate":[{"time":0,"angle":-19.75},{"time":0.0666,"angle":-37.11},{"time":0.1333,"angle":-50.79},{"time":0.2666,"angle":-12.69},{"time":0.3333,"angle":3.01},{"time":0.4333,"angle":12.05},{"time":0.5333,"angle":13.25},{"time":0.8,"angle":-19.75}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.8,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.8,"x":1,"y":1}]},"rear_upper_arm":{"rotate":[{"time":0,"angle":68.68},{"time":0.0666,"angle":73.89},{"time":0.1333,"angle":-9.64},{"time":0.2,"angle":284.27},{"time":0.2666,"angle":283.29},{"time":0.3333,"angle":278.28},{"time":0.4,"angle":271.02},{"time":0.4666,"angle":263.2},{"time":0.5333,"angle":314.25},{"time":0.6,"angle":16.83},{"time":0.6666,"angle":70.35},{"time":0.7333,"angle":73.53},{"time":0.8,"angle":68.68}],"translate":[{"time":0,"x":-2.57,"y":-8.89},{"time":0.1333,"x":-4.68,"y":7.2},{"time":0.2,"x":21.73,"y":51.17},{"time":0.6,"x":4.33,"y":2.05},{"time":0.8,"x":-2.57,"y":-8.89}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.8,"x":1,"y":1}]},"rear_bracer":{"rotate":[{"time":0,"angle":31.04},{"time":0.0666,"angle":28.28},{"time":0.1333,"angle":49.36},{"time":0.2,"angle":59.37},{"time":0.2666,"angle":8.56},{"time":0.3333,"angle":9.38},{"time":0.4,"angle":11.51},{"time":0.4666,"angle":7.22},{"time":0.5333,"angle":-18.44},{"time":0.6,"angle":11.44},{"time":0.6666,"angle":9.99},{"time":0.7333,"angle":8.28},{"time":0.8,"angle":31.04}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.8,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.8,"x":1,"y":1}]},"neck":{"rotate":[{"time":0,"angle":11.03},{"time":0.2,"angle":13.58},{"time":0.4,"angle":11.03},{"time":0.6,"angle":13.58},{"time":0.8,"angle":11.03}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.4,"x":0,"y":0,"curve":"stepped"},{"time":0.8,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.8,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":11.03},{"time":0.1,"angle":12.34},{"time":0.2,"angle":25.55},{"time":0.4,"angle":11.03},{"time":0.5,"angle":12.34},{"time":0.6,"angle":25.55},{"time":0.8,"angle":11.03}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.4,"x":0,"y":0,"curve":"stepped"},{"time":0.8,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.8,"x":1,"y":1}]},"hip":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.8,"angle":0}],"translate":[{"time":0,"x":-62.47,"y":-23.1},{"time":0.0666,"x":-62.47,"y":-38.51,"curve":[0.244,0.04,0.75,1]},{"time":0.2666,"x":-62.47,"y":22.28,"curve":[0.17,0.52,0.75,1]},{"time":0.4,"x":-62.47,"y":-23.1},{"time":0.4333,"x":-62.47,"y":-24.59},{"time":0.4666,"x":-62.47,"y":-43.29,"curve":[0.25,0,0.75,1]},{"time":0.6666,"x":-62.47,"y":22.28},{"time":0.8,"x":-62.47,"y":-23.1}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.8,"x":1,"y":1}]},"front_shin":{"rotate":[{"time":0,"angle":0,"curve":[0.481,0.01,0.75,1]},{"time":0.0666,"angle":-64.42},{"time":0.1333,"angle":-20.59,"curve":[0.25,0,0.75,1]},{"time":0.2666,"angle":-62.51},{"time":0.3333,"angle":-79.74},{"time":0.4,"angle":-78.28},{"time":0.4666,"angle":-118.96,"curve":[0.93,0,0.952,0.95]},{"time":0.6,"angle":-88.95},{"time":0.6666,"angle":-79.09},{"time":0.7333,"angle":-47.77},{"time":0.8,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.8,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.8,"x":1,"y":1}]},"front_foot":{"rotate":[{"time":0,"angle":0},{"time":0.0333,"angle":-21.13,"curve":[0.121,0.23,0.75,1]},{"time":0.0666,"angle":17.64},{"time":0.1,"angle":29.92},{"time":0.1333,"angle":16.44},{"time":0.2,"angle":-29.22},{"time":0.2666,"angle":-1.61},{"time":0.3333,"angle":-10.22},{"time":0.4666,"angle":-15.99},{"time":0.6,"angle":9.03},{"time":0.7333,"angle":17.32},{"time":0.8,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.8,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.8,"x":1,"y":1}]},"rear_foot":{"rotate":[{"time":0,"angle":0},{"time":0.0666,"angle":-12.04},{"time":0.1333,"angle":-0.87},{"time":0.2,"angle":25.81},{"time":0.2666,"angle":4.71},{"time":0.4,"angle":18.09,"curve":[0.281,0.73,0.75,1]},{"time":0.4333,"angle":-1.7},{"time":0.4666,"angle":27.12},{"time":0.5,"angle":38.83},{"time":0.5333,"angle":30.76},{"time":0.5666,"angle":-20.49},{"time":0.6,"angle":-30.8},{"time":0.6666,"angle":-1.31},{"time":0.8,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.8,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.8,"x":1,"y":1}]},"gun":{"rotate":[{"time":0,"angle":0},{"time":0.1333,"angle":24.72},{"time":0.5,"angle":-11.87},{"time":0.8,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.8,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.8,"x":1,"y":1}]}},"events":[{"time":0,"name":"footstep"},{"time":0.4,"name":"footstep","int":1}]},"shoot":{"slots":{"front_fist":{"attachment":[{"time":0.1333,"name":"front_fist_closed"},{"time":0.4,"name":"front_fist_open"}]},"mouth":{"attachment":[{"time":0.1333,"name":"mouth_grind"}]},"muzzle":{"attachment":[{"time":0.1333,"name":"muzzle"},{"time":0.2666,"name":null}],"color":[{"time":0.1333,"color":"ffffff00","curve":[0.118,0.99,0.75,1]},{"time":0.1666,"color":"ffffffff","curve":[0.821,0,0.909,0.89]},{"time":0.2666,"color":"ffffff00"}]}},"bones":{"front_fist":{"scale":[{"time":0.1333,"x":1,"y":1,"curve":"stepped"},{"time":0.4,"x":1,"y":1}]},"gunTip":{"translate":[{"time":0.1333,"x":0,"y":0},{"time":0.2,"x":20.93,"y":1.57}],"scale":[{"time":0.1333,"x":1,"y":1},{"time":0.2,"x":1.247,"y":1.516}]},"gun":{"rotate":[{"time":0,"angle":1.9}],"translate":[{"time":0,"x":7.95,"y":5.84,"curve":[0,0.3,0.678,1]},{"time":0.3,"x":-9.3,"y":-1.41},{"time":0.4,"x":0,"y":0}]},"rear_bracer":{"rotate":[{"time":0,"angle":-30.47}],"translate":[{"time":0,"x":0,"y":0,"curve":[0,0.3,0.678,1]},{"time":0.3,"x":-5.99,"y":-3.71},{"time":0.4,"x":0,"y":0}]},"rear_upper_arm":{"rotate":[{"time":0,"angle":62.3}],"translate":[{"time":0,"x":0,"y":0,"curve":[0,0.3,0.678,1]},{"time":0.3,"x":2.81,"y":11.41},{"time":0.4,"x":0,"y":0}]}}},"test":{"slots":{"front_foot":{"color":[{"time":0.6666,"color":"ffffffff"},{"time":1.3333,"color":"ff0700ff"}]},"gun":{"color":[{"time":0,"color":"ffffffff","curve":"stepped"},{"time":0.6666,"color":"ffffffff"},{"time":1.3333,"color":"32ff00ff"}]},"rear_foot":{"color":[{"time":0.6666,"color":"ffffffff"},{"time":1.3333,"color":"ff0700ff"}]}},"bones":{"head":{"rotate":[{"time":0,"angle":0},{"time":0.3333,"angle":-20.72},{"time":0.6666,"angle":-32.41},{"time":1,"angle":-5.3},{"time":1.3333,"angle":24.96},{"time":1.6666,"angle":15.61},{"time":2,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":[0.172,0.37,0.574,0.73]},{"time":0.1666,"x":144.19,"y":-77.59,"curve":[0.372,0.61,0.765,1]},{"time":0.3333,"x":217.61,"y":-192.63,"curve":[0.282,0,0.624,0.31]},{"time":0.5,"x":181.21,"y":-365.66,"curve":[0.313,0.21,0.654,0.54]},{"time":0.6666,"x":20.09,"y":-500.4,"curve":[0.147,0.27,0.75,1]},{"time":0.8333,"x":-194.24,"y":-341.84},{"time":1,"x":-307.93,"y":-114},{"time":1.1666,"x":-330.38,"y":121.42,"curve":[0.25,0,0.764,0.48]},{"time":1.3333,"x":-240.42,"y":335.66,"curve":[0.229,0.37,0.58,0.73]},{"time":1.5,"x":-56.12,"y":288.06,"curve":[0.296,0.6,0.641,1]},{"time":1.6666,"x":87.63,"y":191.33,"curve":[0.238,0,0.626,0.39]},{"time":1.8333,"x":60.62,"y":95.14,"curve":[0.41,0.26,0.803,0.62]},{"time":2,"x":0,"y":0}]}},"drawOrder":[{"time":0.6666,"offsets":[{"slot":"head","offset":-9},{"slot":"eye","offset":-9},{"slot":"mouth","offset":-12},{"slot":"goggles","offset":-12}]},{"time":1.3333}],"events":[{"time":0,"name":"headPop","int":0,"float":0,"string":"pop.wav"},{"time":1,"name":"headBehind","int":7,"float":8,"string":"animate"},{"time":2,"name":"headAttach","int":0,"float":0,"string":"attach.wav"}]},"walk":{"slots":{"front_fist":{"attachment":[{"time":0,"name":"front_fist_closed"}]},"mouth":{"attachment":[{"time":0,"name":"mouth_smile"}]},"torso":{"attachment":[{"time":0,"name":"torso"}]}},"bones":{"front_thigh":{"rotate":[{"time":0,"angle":15.79},{"time":0.1,"angle":27.39},{"time":0.2,"angle":-7.94},{"time":0.3,"angle":-16.94},{"time":0.4,"angle":-28.62},{"time":0.5,"angle":-19.3},{"time":0.6,"angle":-3.08},{"time":0.7,"angle":29.51},{"time":0.8,"angle":15.79}],"translate":[{"time":0,"x":0,"y":0},{"time":0.4,"x":-1.18,"y":0.54},{"time":0.5,"x":0.11,"y":0.41},{"time":0.6,"x":9.48,"y":0.27},{"time":0.8,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.4,"x":1,"y":1,"curve":"stepped"},{"time":0.8,"x":1,"y":1}]},"front_shin":{"rotate":[{"time":0,"angle":5.12},{"time":0.1,"angle":-20.87},{"time":0.2,"angle":13.37},{"time":0.3,"angle":15.98},{"time":0.4,"angle":5.94},{"time":0.5,"angle":-26.76},{"time":0.7,"angle":-55.44},{"time":0.8,"angle":5.12}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.8,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.8,"x":1,"y":1}]},"rear_thigh":{"rotate":[{"time":0,"angle":-34.38},{"time":0.1,"angle":-30.32},{"time":0.2,"angle":-37.22},{"time":0.3,"angle":20.73},{"time":0.4,"angle":8.69},{"time":0.5,"angle":12.16},{"time":0.6,"angle":-24.62},{"time":0.7,"angle":-27.26},{"time":0.8,"angle":-34.38}],"translate":[{"time":0,"x":0,"y":0},{"time":0.4,"x":4.08,"y":-9.53},{"time":0.5,"x":0,"y":0},{"time":0.7,"x":-21.14,"y":-9.6},{"time":0.8,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.8,"x":1,"y":1}]},"rear_shin":{"rotate":[{"time":0,"angle":14.26},{"time":0.1,"angle":-17.3},{"time":0.2,"angle":-12.67},{"time":0.3,"angle":-58.89},{"time":0.4,"angle":15.95},{"time":0.5,"angle":-9},{"time":0.6,"angle":26.06},{"time":0.7,"angle":21.85},{"time":0.8,"angle":14.26}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.8,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1},{"time":0.1,"x":0.951,"y":1},{"time":0.5,"x":0.975,"y":1},{"time":0.8,"x":1,"y":1}]},"rear_foot":{"rotate":[{"time":0,"angle":10.13},{"time":0.1,"angle":12.27},{"time":0.2,"angle":-2.94},{"time":0.3,"angle":6.29},{"time":0.4,"angle":13.45},{"time":0.5,"angle":-3.57},{"time":0.6,"angle":-0.97},{"time":0.7,"angle":2.97},{"time":0.8,"angle":10.13}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.8,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.8,"x":1,"y":1}]},"front_upper_arm":{"rotate":[{"time":0,"angle":-23.74},{"time":0.4,"angle":-320.57},{"time":0.8,"angle":-23.74}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.8,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.8,"x":1,"y":1}]},"rear_upper_arm":{"rotate":[{"time":0,"angle":11.62},{"time":0.1,"angle":19.36},{"time":0.4,"angle":345.26},{"time":0.5,"angle":343.44},{"time":0.8,"angle":11.62}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.8,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.8,"x":1,"y":1}]},"torso":{"rotate":[{"time":0,"angle":-12.11},{"time":0.1666,"angle":-17.16},{"time":0.4,"angle":-12.11},{"time":0.5666,"angle":-15.81},{"time":0.8,"angle":-12.11}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.8,"x":1,"y":1}]},"neck":{"rotate":[{"time":0,"angle":1.41},{"time":0.2333,"angle":-3.04},{"time":0.4,"angle":1.41},{"time":0.6333,"angle":-3.04},{"time":0.8,"angle":1.41}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.4,"x":0,"y":0,"curve":"stepped"},{"time":0.8,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.8,"x":1,"y":1}]},"head":{"rotate":[{"time":0,"angle":6.97},{"time":0.1666,"angle":8.02},{"time":0.2666,"angle":12.65},{"time":0.4,"angle":6.97},{"time":0.5666,"angle":8.02},{"time":0.6666,"angle":12.65},{"time":0.8,"angle":6.97}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.4,"x":0,"y":0,"curve":"stepped"},{"time":0.8,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.8,"x":1,"y":1}]},"hip":{"rotate":[{"time":0,"angle":0,"curve":"stepped"},{"time":0.8,"angle":0}],"translate":[{"time":0,"x":-23.93,"y":3.22,"curve":[0.518,0.03,0.807,0.61]},{"time":0.1,"x":-23.93,"y":-9.24,"curve":[0.135,0.33,0.601,0.99]},{"time":0.2,"x":-23.93,"y":4.35,"curve":[0.204,0.68,0.75,1]},{"time":0.3,"x":-23.93,"y":2.38,"curve":[0.25,0,0.75,1]},{"time":0.4,"x":-23.93,"y":-2.5,"curve":[0.692,0.01,0.75,1]},{"time":0.5,"x":-23.93,"y":-10.32,"curve":[0.235,0.77,0.75,1]},{"time":0.6,"x":-23.93,"y":4.35,"curve":[0.287,0.37,0.718,0.76]},{"time":0.7,"x":-23.93,"y":10.34,"curve":[0.615,0,0.75,1]},{"time":0.8,"x":-23.93,"y":3.22}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.8,"x":1,"y":1}]},"front_bracer":{"rotate":[{"time":0,"angle":0},{"time":0.4,"angle":20.59},{"time":0.8,"angle":0}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.8,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.8,"x":1,"y":1}]},"front_foot":{"rotate":[{"time":0,"angle":12.49},{"time":0.1,"angle":-8.34},{"time":0.2,"angle":-6.17},{"time":0.3,"angle":-0.75},{"time":0.3333,"angle":3.89},{"time":0.4,"angle":10.22},{"time":0.5,"angle":11.44},{"time":0.6,"angle":-0.33},{"time":0.7,"angle":0.15},{"time":0.8,"angle":12.49}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.8,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.8,"x":1,"y":1}]},"rear_bracer":{"rotate":[{"time":0,"angle":3.58},{"time":0.1,"angle":5.51},{"time":0.4,"angle":-22.77},{"time":0.5,"angle":-9.65},{"time":0.8,"angle":3.58}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.8,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.8,"x":1,"y":1}]},"front_fist":{"rotate":[{"time":0,"angle":-15.22},{"time":0.1,"angle":-51.4},{"time":0.4,"angle":-39.4},{"time":0.5,"angle":19.26},{"time":0.8,"angle":-15.22}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.8,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.8,"x":1,"y":1}]},"gun":{"rotate":[{"time":0,"angle":-24.06,"curve":[0.25,0,0.75,1]},{"time":0.1,"angle":-10.94,"curve":[0.381,0.54,0.742,1]},{"time":0.4,"angle":25.34,"curve":[0.25,0,0.75,1]},{"time":0.6666,"angle":-27.47,"curve":[0.25,0,0.75,1]},{"time":0.8,"angle":-24.06}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":0.8,"x":0,"y":0}],"scale":[{"time":0,"x":1,"y":1,"curve":"stepped"},{"time":0.8,"x":1,"y":1}]}}}}} \ No newline at end of file +{ +"skeleton": { "hash": "rPoYyBLFG6F0CGZ5wsUEBKDJU9U", "spine": "3.4.02", "width": 470.9, "height": 731.49, "images": "./images/" }, +"bones": [ + { "name": "hip", "y": 247.47 }, + { "name": "torso", "parent": "hip", "length": 127.55, "rotation": 103.82, "x": -1.61, "y": 4.9, "color": "e0da19ff" }, + { "name": "front_upper_arm", "parent": "torso", "length": 69.45, "rotation": 168.37, "x": 103.75, "y": 19.32, "color": "00ff04ff" }, + { + "name": "front_bracer", + "parent": "front_upper_arm", + "length": 40.57, + "rotation": 18.29, + "x": 68.8, + "y": -0.68, + "color": "00ff04ff" + }, + { "name": "front_fist", "parent": "front_bracer", "length": 65.38, "rotation": 12.43, "x": 40.56, "y": 0.19, "color": "00ff04ff" }, + { "name": "front_thigh", "parent": "hip", "length": 74.8, "rotation": -95.51, "x": -17.45, "y": -11.64, "color": "00ff04ff" }, + { "name": "front_shin", "parent": "front_thigh", "length": 128.76, "rotation": -2.21, "x": 78.69, "y": 1.6, "color": "00ff04ff" }, + { "name": "front_foot", "parent": "front_shin", "length": 91.34, "rotation": 77.9, "x": 128.75, "y": -0.33, "color": "00ff04ff" }, + { "name": "rear_upper_arm", "parent": "torso", "length": 51.93, "rotation": -169.55, "x": 92.35, "y": -19.22, "color": "ff000dff" }, + { "name": "rear_bracer", "parent": "rear_upper_arm", "length": 34.55, "rotation": 23.15, "x": 51.35, "color": "ff000dff" }, + { "name": "gun", "parent": "rear_bracer", "length": 43.1, "rotation": 5.34, "x": 34.42, "y": -0.45, "color": "ff000dff" }, + { "name": "gunTip", "parent": "gun", "rotation": 6.83, "x": 201.04, "y": 52.13, "color": "ff000dff" }, + { "name": "neck", "parent": "torso", "length": 25.45, "rotation": -31.53, "x": 127.49, "y": -0.3, "color": "e0da19ff" }, + { "name": "head", "parent": "neck", "length": 263.57, "rotation": 23.18, "x": 27.66, "y": -0.25, "color": "e0da19ff" }, + { "name": "rear_thigh", "parent": "hip", "length": 85.71, "rotation": -72.54, "x": 8.91, "y": -5.62, "color": "ff000dff" }, + { "name": "rear_shin", "parent": "rear_thigh", "length": 121.87, "rotation": -19.83, "x": 86.1, "y": -1.32, "color": "ff000dff" }, + { "name": "rear_foot", "parent": "rear_shin", "length": 82.57, "rotation": 69.3, "x": 121.45, "y": -0.75, "color": "ff000dff" } +], +"slots": [ + { "name": "rear_upper_arm", "bone": "rear_upper_arm", "attachment": "rear_upper_arm" }, + { "name": "rear_bracer", "bone": "rear_bracer", "attachment": "rear_bracer" }, + { "name": "gun", "bone": "gun", "attachment": "gun" }, + { "name": "rear_foot", "bone": "rear_foot", "attachment": "rear_foot" }, + { "name": "rear_thigh", "bone": "rear_thigh", "attachment": "rear_thigh" }, + { "name": "rear_shin", "bone": "rear_shin", "attachment": "rear_shin" }, + { "name": "neck", "bone": "neck", "attachment": "neck" }, + { "name": "torso", "bone": "torso", "attachment": "torso" }, + { "name": "front_upper_arm", "bone": "front_upper_arm", "attachment": "front_upper_arm" }, + { "name": "head", "bone": "head", "attachment": "head" }, + { "name": "eye", "bone": "head", "attachment": "eye_indifferent" }, + { "name": "front_thigh", "bone": "front_thigh", "attachment": "front_thigh" }, + { "name": "front_foot", "bone": "front_foot", "attachment": "front_foot" }, + { "name": "front_shin", "bone": "front_shin", "attachment": "front_shin" }, + { "name": "mouth", "bone": "head", "attachment": "mouth_smile" }, + { "name": "goggles", "bone": "head", "attachment": "goggles" }, + { "name": "front_bracer", "bone": "front_bracer", "attachment": "front_bracer" }, + { "name": "front_fist", "bone": "front_fist", "attachment": "front_fist_closed" }, + { "name": "muzzle", "bone": "gunTip", "blend": "additive" }, + { "name": "head-bb", "bone": "head" } +], +"skins": { + "default": { + "eye": { + "eye_indifferent": { "x": 85.72, "y": -28.18, "rotation": -70.63, "width": 93, "height": 89 }, + "eye_surprised": { "x": 85.72, "y": -28.18, "rotation": -70.63, "width": 93, "height": 89 } + }, + "front_bracer": { + "front_bracer": { "x": 12.03, "y": -1.67, "rotation": 79.59, "width": 58, "height": 80 } + }, + "front_fist": { + "front_fist_closed": { "x": 35.49, "y": 6, "rotation": 67.16, "width": 75, "height": 82 }, + "front_fist_open": { "x": 39.56, "y": 7.76, "rotation": 67.16, "width": 86, "height": 87 } + }, + "front_foot": { + "front_foot": { "x": 29.51, "y": 7.83, "rotation": 18.68, "width": 126, "height": 69 }, + "front_foot_bend1": { "x": 29.51, "y": 7.83, "rotation": 18.68, "width": 128, "height": 70 }, + "front_foot_bend2": { "x": 16.07, "y": 13.83, "rotation": 18.68, "width": 108, "height": 93 } + }, + "front_shin": { + "front_shin": { "x": 55.11, "y": -3.54, "rotation": 96.59, "width": 82, "height": 184 } + }, + "front_thigh": { + "front_thigh": { "x": 42.47, "y": 4.44, "rotation": 84.86, "width": 48, "height": 112 } + }, + "front_upper_arm": { + "front_upper_arm": { "x": 28.3, "y": 7.37, "rotation": 97.89, "width": 54, "height": 97 } + }, + "goggles": { + "goggles": { "x": 97.07, "y": 6.54, "rotation": -70.63, "width": 261, "height": 166 } + }, + "gun": { + "gun": { "x": 77.3, "y": 16.4, "rotation": 60.82, "width": 210, "height": 203 } + }, + "head": { + "head": { "x": 128.95, "y": 0.29, "rotation": -70.63, "width": 271, "height": 298 } + }, + "head-bb": { + "head": { + "type": "boundingbox", + "vertexCount": 6, + "vertices": [ -19.14, -70.3, 40.8, -118.07, 257.77, -115.61, 285.16, 57.18, 120.77, 164.95, -5.06, 76.94 ] + } + }, + "mouth": { + "mouth_grind": { "x": 23.68, "y": -32.23, "rotation": -70.63, "width": 93, "height": 59 }, + "mouth_oooo": { "x": 23.68, "y": -32.23, "rotation": -70.63, "width": 93, "height": 59 }, + "mouth_smile": { "x": 23.68, "y": -32.23, "rotation": -70.63, "width": 93, "height": 59 } + }, + "muzzle": { + "muzzle": { "x": 18.25, "y": 5.44, "rotation": 0.15, "width": 462, "height": 400 } + }, + "neck": { + "neck": { "x": 9.76, "y": -3.01, "rotation": -55.22, "width": 36, "height": 41 } + }, + "rear_bracer": { + "rear_bracer": { "x": 11.15, "y": -2.2, "rotation": 66.17, "width": 56, "height": 72 } + }, + "rear_foot": { + "rear_foot": { "x": 31.51, "y": 3.57, "rotation": 23.07, "width": 113, "height": 60 }, + "rear_foot_bend1": { "x": 34.39, "y": 4.8, "rotation": 23.07, "width": 117, "height": 66 }, + "rear_foot_bend2": { "x": 30.38, "y": 12.62, "rotation": 23.07, "width": 103, "height": 83 } + }, + "rear_shin": { + "rear_shin": { "x": 58.29, "y": -2.75, "rotation": 92.37, "width": 75, "height": 178 } + }, + "rear_thigh": { + "rear_thigh": { "x": 33.1, "y": -4.11, "rotation": 72.54, "width": 65, "height": 104 } + }, + "rear_upper_arm": { + "rear_upper_arm": { "x": 21.12, "y": 4.08, "rotation": 89.32, "width": 47, "height": 87 } + }, + "torso": { + "torso": { "x": 63.61, "y": 7.12, "rotation": -94.53, "width": 98, "height": 180 } + } + } +}, +"events": { + "footstep": {}, + "headAttach": { "int": 3, "float": 4 }, + "headBehind": { "int": 5, "float": 6, "string": "setup" }, + "headPop": { "int": 1, "float": 2 } +}, +"animations": { + "death": { + "slots": { + "eye": { + "attachment": [ + { "time": 0, "name": "eye_surprised" }, + { "time": 0.4666, "name": "eye_indifferent" }, + { "time": 2.2333, "name": "eye_surprised" }, + { "time": 4.5333, "name": "eye_indifferent" } + ] + }, + "front_fist": { + "attachment": [ + { "time": 0, "name": "front_fist_open" } + ] + }, + "mouth": { + "attachment": [ + { "time": 0, "name": "mouth_oooo" }, + { "time": 2.2333, "name": "mouth_grind" }, + { "time": 4.5333, "name": "mouth_oooo" } + ] + } + }, + "bones": { + "head": { + "rotate": [ + { "time": 0, "angle": -2.82 }, + { "time": 0.1333, "angle": -28.74 }, + { "time": 0.2333, "angle": 11.42 }, + { "time": 0.3333, "angle": -50.24 }, + { "time": 0.4, "angle": -72.66, "curve": "stepped" }, + { "time": 0.4333, "angle": -72.66 }, + { "time": 0.5, "angle": -20.24 }, + { "time": 0.5666, "angle": -85.28, "curve": "stepped" }, + { "time": 0.9333, "angle": -85.28, "curve": "stepped" }, + { "time": 2.2333, "angle": -85.28 }, + { "time": 2.5, "angle": -51.96, "curve": "stepped" }, + { "time": 4.5333, "angle": -51.96 }, + { "time": 4.6666, "angle": -85.28 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 } + ] + }, + "neck": { + "rotate": [ + { "time": 0, "angle": -2.82 }, + { "time": 0.1333, "angle": 12.35 }, + { "time": 0.2333, "angle": 29.89 }, + { "time": 0.3, "angle": 70.36 }, + { "time": 0.4, "angle": -10.22, "curve": "stepped" }, + { "time": 0.4333, "angle": -10.22 }, + { "time": 0.5, "angle": 2.92 }, + { "time": 0.5666, "angle": 47.94, "curve": "stepped" }, + { "time": 2.2333, "angle": 47.94 }, + { "time": 2.5, "angle": 18.5, "curve": "stepped" }, + { "time": 4.5333, "angle": 18.5 }, + { "time": 4.6666, "angle": 47.94 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 } + ] + }, + "torso": { + "rotate": [ + { "time": 0, "angle": -8.61 }, + { "time": 0.1333, "angle": 28.19 }, + { "time": 0.2666, "angle": -280.19 }, + { "time": 0.4, "angle": -237.22, "curve": "stepped" }, + { "time": 0.4333, "angle": -237.22 }, + { "time": 0.5, "angle": 76.03, "curve": "stepped" }, + { "time": 0.8, "angle": 76.03, "curve": "stepped" }, + { "time": 0.9333, "angle": 76.03, "curve": "stepped" }, + { "time": 2.2333, "angle": 76.03 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.9333, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 2.2333, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 } + ] + }, + "front_upper_arm": { + "rotate": [ + { "time": 0, "angle": -38.85 }, + { "time": 0.1333, "angle": -299.58 }, + { "time": 0.2666, "angle": -244.74 }, + { "time": 0.4, "angle": -292.35 }, + { "time": 0.4333, "angle": -315.84 }, + { "time": 0.5, "angle": -347.94 }, + { "time": 0.7, "angle": -347.33, "curve": "stepped" }, + { "time": 2.2333, "angle": -347.33 }, + { "time": 2.7, "angle": -290.68 }, + { "time": 2.7666, "angle": -285.1 }, + { "time": 4.6666, "angle": -290.68 }, + { "time": 4.8, "angle": 8.61 }, + { "time": 4.8666, "angle": 10.94 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 } + ] + }, + "rear_upper_arm": { + "rotate": [ + { "time": 0, "angle": -44.69 }, + { "time": 0.1333, "angle": 112.26 }, + { "time": 0.2666, "angle": 129.07 }, + { "time": 0.4, "angle": 134.94, "curve": "stepped" }, + { "time": 0.4333, "angle": 134.94 }, + { "time": 0.5666, "angle": 172.6, "curve": "stepped" }, + { "time": 0.9333, "angle": 172.6, "curve": "stepped" }, + { "time": 2.2333, "angle": 172.6 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 } + ] + }, + "front_bracer": { + "rotate": [ + { "time": 0, "angle": 21.88 }, + { "time": 0.1333, "angle": 11.48 }, + { "time": 0.2666, "angle": -18.81 }, + { "time": 0.4, "angle": -18.92 }, + { "time": 0.4333, "angle": -18.28 }, + { "time": 0.5, "angle": 60.61 }, + { "time": 0.7, "angle": -18.87, "curve": "stepped" }, + { "time": 2.2333, "angle": -18.87 }, + { "time": 2.7, "angle": -1.95, "curve": "stepped" }, + { "time": 4.6666, "angle": -1.95 }, + { "time": 4.8, "angle": 34.55 }, + { "time": 4.9333, "angle": -18.74 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 } + ] + }, + "front_fist": { + "rotate": [ + { "time": 0, "angle": -2.33 }, + { "time": 0.2666, "angle": 26.34 }, + { "time": 0.7, "angle": -6.07, "curve": "stepped" }, + { "time": 2.2333, "angle": -6.07 }, + { "time": 2.7, "angle": 5.72, "curve": "stepped" }, + { "time": 4.6666, "angle": 5.72 }, + { "time": 4.8666, "angle": -6.52 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 } + ] + }, + "rear_bracer": { + "rotate": [ + { "time": 0, "angle": 10.36 }, + { "time": 0.1333, "angle": -23.12 }, + { "time": 0.2666, "angle": -23.11 }, + { "time": 0.4, "angle": -23.16, "curve": "stepped" }, + { "time": 0.4333, "angle": -23.16 }, + { "time": 0.5666, "angle": -23.2, "curve": "stepped" }, + { "time": 0.9333, "angle": -23.2, "curve": "stepped" }, + { "time": 2.2333, "angle": -23.2 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 } + ] + }, + "gun": { + "rotate": [ + { "time": 0, "angle": -2.78 }, + { "time": 0.1333, "angle": -24.58 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 } + ] + }, + "hip": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 0.9333, "angle": 0, "curve": "stepped" }, + { "time": 2.2333, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 }, + { "time": 0.2, "x": 50.34, "y": 151.73 }, + { "time": 0.4, "x": 5.16, "y": -119.64, "curve": "stepped" }, + { "time": 0.4333, "x": 5.16, "y": -119.64 }, + { "time": 0.5, "x": 50.34, "y": -205.18, "curve": "stepped" }, + { "time": 0.8, "x": 50.34, "y": -205.18, "curve": "stepped" }, + { "time": 0.9333, "x": 50.34, "y": -205.18, "curve": "stepped" }, + { "time": 2.2333, "x": 50.34, "y": -205.18 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 } + ] + }, + "front_thigh": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.1333, "angle": 8.47 }, + { "time": 0.2666, "angle": 115.95 }, + { "time": 0.4, "angle": 180.66, "curve": "stepped" }, + { "time": 0.4333, "angle": 180.66 }, + { "time": 0.5, "angle": 155.22 }, + { "time": 0.6, "angle": 97.73 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 } + ] + }, + "front_shin": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.1333, "angle": -27.37 }, + { "time": 0.2666, "angle": -35.1 }, + { "time": 0.4, "angle": -37.72, "curve": "stepped" }, + { "time": 0.4333, "angle": -37.72 }, + { "time": 0.5, "angle": -40.06 }, + { "time": 0.6, "angle": 2.76 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 } + ] + }, + "rear_thigh": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.1333, "angle": 70.45 }, + { "time": 0.2666, "angle": 155.34 }, + { "time": 0.4, "angle": 214.31, "curve": "stepped" }, + { "time": 0.4333, "angle": 214.31 }, + { "time": 0.5, "angle": 169.67 }, + { "time": 0.8, "angle": 83.27 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 } + ] + }, + "rear_shin": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.1333, "angle": 18.93 }, + { "time": 0.2666, "angle": -21.04 }, + { "time": 0.4, "angle": -29.93, "curve": "stepped" }, + { "time": 0.4333, "angle": -29.93 }, + { "time": 0.5, "angle": -16.79 }, + { "time": 0.8, "angle": 7.77 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 } + ] + }, + "rear_foot": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.1333, "angle": -11.62 }, + { "time": 0.4, "angle": -45.59, "curve": "stepped" }, + { "time": 0.4333, "angle": -45.59 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 } + ] + }, + "front_foot": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.4, "angle": -48.75, "curve": "stepped" }, + { "time": 0.4333, "angle": -48.75 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 } + ] + }, + "gunTip": { + "rotate": [ + { "time": 0, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 } + ] + } + } + }, + "hit": { + "slots": { + "front_fist": { + "attachment": [ + { "time": 0.1666, "name": "front_fist_open" } + ] + }, + "mouth": { + "attachment": [ + { "time": 0, "name": "mouth_grind" }, + { "time": 0.3333, "name": "mouth_smile" } + ] + } + }, + "bones": { + "torso": { + "rotate": [ + { "time": 0, "angle": 56.42 }, + { "time": 0.3333, "angle": 8.89 } + ] + }, + "neck": { + "rotate": [ + { "time": 0, "angle": 35.38 }, + { "time": 0.2333, "angle": 24.94 } + ] + }, + "head": { + "rotate": [ + { "time": 0, "angle": 10.21 }, + { "time": 0.3333, "angle": -41.3 } + ] + }, + "front_upper_arm": { + "rotate": [ + { + "time": 0, + "angle": -310.92, + "curve": [ 0.38, 0.53, 0.744, 1 ] + }, + { "time": 0.3333, "angle": -112.59 } + ], + "translate": [ + { "time": 0, "x": 7.23, "y": -13.13 } + ] + }, + "front_bracer": { + "rotate": [ + { "time": 0, "angle": 36.99 }, + { "time": 0.3333, "angle": -28.64 } + ] + }, + "front_fist": { + "rotate": [ + { "time": 0, "angle": 13.59 }, + { "time": 0.3333, "angle": 7.55 } + ] + }, + "rear_upper_arm": { + "rotate": [ + { + "time": 0, + "angle": 271.02, + "curve": [ 0.342, 0.36, 0.68, 0.71 ] + }, + { "time": 0.3333, "angle": -15.84 } + ], + "translate": [ + { "time": 0.3333, "x": -0.09, "y": -0.46 } + ] + }, + "rear_bracer": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.3333, "angle": 40.03 } + ] + }, + "gun": { + "rotate": [ + { "time": 0, "angle": 14.98 }, + { "time": 0.3333, "angle": 39.75 } + ] + }, + "hip": { + "translate": [ + { "time": 0, "x": -75.54, "y": -78.03 }, + { "time": 0.2333, "x": -36.48, "y": 12.42 }, + { "time": 0.3333, "x": -36.48, "y": -2.99 } + ] + }, + "front_thigh": { + "rotate": [ + { + "time": 0, + "angle": 90.94, + "curve": [ 0.227, 0.26, 0.432, 1 ] + }, + { "time": 0.3333, "angle": 32.02 } + ], + "translate": [ + { "time": 0, "x": 7.21, "y": -4 } + ] + }, + "rear_thigh": { + "rotate": [ + { + "time": 0, + "angle": 40.51, + "curve": [ 0.295, 0.3, 0.59, 0.99 ] + }, + { "time": 0.3333, "angle": 90.76 } + ], + "translate": [ + { "time": 0, "x": -1.96, "y": -0.32 } + ] + }, + "front_shin": { + "rotate": [ + { "time": 0, "angle": -96.62 }, + { "time": 0.3333, "angle": -15.13 } + ] + }, + "rear_shin": { + "rotate": [ + { "time": 0, "angle": 7.99 }, + { "time": 0.3333, "angle": -67.54 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 } + ] + }, + "front_foot": { + "rotate": [ + { "time": 0, "angle": 5.4 }, + { "time": 0.3333, "angle": -16.26 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 } + ] + }, + "rear_foot": { + "rotate": [ + { "time": 0, "angle": 2.67 }, + { "time": 0.3333, "angle": -10.31 } + ] + } + } + }, + "idle": { + "slots": { + "front_fist": { + "attachment": [ + { "time": 0, "name": "front_fist_open" }, + { "time": 1.6666, "name": "front_fist_open" } + ] + }, + "mouth": { + "attachment": [ + { "time": 0, "name": "mouth_smile" }, + { "time": 1.6666, "name": "mouth_smile" } + ] + } + }, + "bones": { + "torso": { + "rotate": [ + { + "time": 0, + "angle": -5.61, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 0.8333, + "angle": -9.65, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 1.6666, "angle": -5.61 } + ], + "translate": [ + { "time": 0, "x": -6.49, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.6666, "x": 1, "y": 1 } + ] + }, + "front_upper_arm": { + "rotate": [ + { + "time": 0, + "angle": -59.85, + "curve": [ 0.492, 0, 0.75, 1 ] + }, + { + "time": 0.6666, + "angle": -54.31, + "curve": [ 0.324, 0.11, 0.75, 1 ] + }, + { "time": 1.6666, "angle": -59.85 } + ], + "translate": [ + { "time": 0, "x": -7.12, "y": -8.23 }, + { "time": 0.6666, "x": -6.32, "y": -8.3 }, + { "time": 1.6666, "x": -7.12, "y": -8.23 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.6666, "x": 1, "y": 1 } + ] + }, + "rear_upper_arm": { + "rotate": [ + { + "time": 0, + "angle": 62.41, + "curve": [ 0.504, 0.02, 0.75, 1 ] + }, + { + "time": 0.7333, + "angle": 43.83, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 1.6666, "angle": 62.41 } + ], + "translate": [ + { "time": 0, "x": -1.83, "y": -16.78 }, + { "time": 0.6666, "x": 0.34, "y": -15.23 }, + { "time": 1.6666, "x": -1.83, "y": -16.78 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.6666, "x": 1, "y": 1 } + ] + }, + "neck": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.6666, "angle": 2.39 }, + { "time": 1.6666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": -1.88, "y": -4.76, "curve": "stepped" }, + { "time": 1.6666, "x": -1.88, "y": -4.76 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.6666, "x": 1, "y": 1 } + ] + }, + "front_thigh": { + "rotate": [ + { + "time": 0, + "angle": 0.64, + "curve": [ 0.235, 0, 0.558, 0.99 ] + }, + { + "time": 0.6666, + "angle": -4.34, + "curve": [ 0.594, 0, 0.653, 1 ] + }, + { "time": 1.6666, "angle": 0.64 } + ], + "translate": [ + { "time": 0, "x": -13.39, "y": 6.69, "curve": "stepped" }, + { "time": 1.6666, "x": -13.39, "y": 6.69 } + ], + "scale": [ + { + "time": 0, + "x": 0.896, + "y": 1, + "curve": [ 0.235, 0, 0.558, 0.99 ] + }, + { + "time": 0.6666, + "x": 0.825, + "y": 1, + "curve": [ 0.594, 0, 0.653, 1 ] + }, + { "time": 1.6666, "x": 0.896, "y": 1 } + ] + }, + "front_shin": { + "rotate": [ + { "time": 0, "angle": -19.28, "curve": "stepped" }, + { "time": 1.6666, "angle": -19.28 } + ], + "scale": [ + { + "time": 0, + "x": 1, + "y": 1, + "curve": [ 0.235, 0, 0.558, 0.99 ] + }, + { + "time": 0.6666, + "x": 0.994, + "y": 1, + "curve": [ 0.594, 0, 0.653, 1 ] + }, + { "time": 1.6666, "x": 1, "y": 1 } + ] + }, + "rear_thigh": { + "rotate": [ + { + "time": 0, + "angle": 30.5, + "curve": [ 0.235, 0, 0.558, 0.99 ] + }, + { + "time": 0.6666, + "angle": 40.15, + "curve": [ 0.594, 0, 0.653, 1 ] + }, + { "time": 1.6666, "angle": 30.5 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.6666, "x": 1, "y": 1 } + ] + }, + "rear_shin": { + "rotate": [ + { + "time": 0, + "angle": -23.83, + "curve": [ 0.235, 0, 0.558, 0.99 ] + }, + { + "time": 0.6666, + "angle": -43.77, + "curve": [ 0.594, 0, 0.653, 1 ] + }, + { "time": 1.6666, "angle": -23.83 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.6666, "x": 1, "y": 1 } + ] + }, + "front_foot": { + "rotate": [ + { + "time": 0, + "angle": 5.13, + "curve": [ 0.235, 0, 0.558, 0.99 ] + }, + { + "time": 0.6666, + "angle": 10.04, + "curve": [ 0.594, 0, 0.653, 1 ] + }, + { "time": 1.6666, "angle": 5.13 } + ], + "scale": [ + { "time": 0, "x": 0.755, "y": 1.309, "curve": "stepped" }, + { "time": 1.6666, "x": 0.755, "y": 1.309 } + ] + }, + "hip": { + "translate": [ + { + "time": 0, + "x": -6.63, + "y": -23.01, + "curve": [ 0.235, 0, 0.558, 0.99 ] + }, + { + "time": 0.6666, + "x": 6.27, + "y": -35, + "curve": [ 0.594, 0, 0.653, 1 ] + }, + { "time": 1.6666, "x": -6.63, "y": -23.01 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.6666, "x": 1, "y": 1 } + ] + }, + "rear_foot": { + "rotate": [ + { + "time": 0, + "angle": -7.34, + "curve": [ 0.235, 0, 0.558, 0.99 ] + }, + { + "time": 0.6666, + "angle": 3.85, + "curve": [ 0.594, 0, 0.653, 1 ] + }, + { "time": 1.6666, "angle": -7.34 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.6666, "x": 1, "y": 1 } + ] + }, + "rear_bracer": { + "rotate": [ + { + "time": 0, + "angle": -17.16, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 0.6666, + "angle": 12.52, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 1.6666, "angle": -17.16 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.6666, "x": 1, "y": 1 } + ] + }, + "head": { + "rotate": [ + { + "time": 0, + "angle": -5.51, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 0.6666, + "angle": -3.12, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 1.6666, "angle": -5.51 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.6666, "x": 1, "y": 1 } + ] + }, + "front_bracer": { + "rotate": [ + { + "time": 0, + "angle": 45.46, + "curve": [ 0.492, 0, 0.75, 1 ] + }, + { + "time": 0.6666, + "angle": 41.33, + "curve": [ 0.32, 0.1, 0.736, 0.91 ] + }, + { "time": 1.6666, "angle": 45.46 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.6666, "x": 1, "y": 1 } + ] + }, + "gun": { + "rotate": [ + { + "time": 0, + "angle": 0, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 0.6666, + "angle": -15.59, + "curve": [ 0.732, 0, 0.769, 0.99 ] + }, + { "time": 1.6666, "angle": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.6666, "x": 1, "y": 1 } + ] + }, + "front_fist": { + "rotate": [ + { + "time": 0, + "angle": -6.84, + "curve": [ 0.492, 0, 0.75, 1 ] + }, + { + "time": 0.6666, + "angle": -14.63, + "curve": [ 0.324, 0.11, 0.75, 1 ] + }, + { "time": 1.6666, "angle": -6.84 } + ], + "scale": [ + { + "time": 0, + "x": 1, + "y": 1, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 0.6666, + "x": 0.689, + "y": 1.1, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 1.6666, "x": 1, "y": 1 } + ] + } + } + }, + "jump": { + "slots": { + "front_fist": { + "attachment": [ + { "time": 0, "name": "front_fist_open" }, + { "time": 0.2, "name": "front_fist_closed" }, + { "time": 0.6666, "name": "front_fist_open" } + ] + }, + "mouth": { + "attachment": [ + { "time": 0, "name": "mouth_grind" } + ] + }, + "torso": { + "attachment": [ + { "time": 0, "name": "torso" } + ] + } + }, + "bones": { + "front_thigh": { + "rotate": [ + { + "time": 0, + "angle": 91.53, + "curve": [ 0.278, 0.46, 0.763, 1 ] + }, + { + "time": 0.2, + "angle": -35.83, + "curve": [ 0.761, 0, 0.75, 1 ] + }, + { "time": 0.4333, "angle": 127.74 }, + { + "time": 0.7333, + "angle": 48.18, + "curve": [ 0.227, 0.26, 0.432, 1 ] + }, + { "time": 0.8333, "angle": 25.35 }, + { "time": 0.9333, "angle": 45.37 }, + { "time": 1.0333, "angle": 38.12 }, + { "time": 1.1333, "angle": 25.35 }, + { "time": 1.3333, "angle": 91.53 } + ], + "translate": [ + { "time": 0, "x": -2.56, "y": 5.77 }, + { "time": 0.4333, "x": 8.3, "y": 7.98 }, + { "time": 0.7333, "x": 7.21, "y": -4 }, + { "time": 1.3333, "x": -2.56, "y": 5.77 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 } + ] + }, + "torso": { + "rotate": [ + { "time": 0, "angle": -42.63 }, + { "time": 0.2, "angle": -5.74 }, + { "time": 0.4333, "angle": -50.76 }, + { "time": 0.7333, "angle": 1.89 }, + { "time": 0.8333, "angle": 11.58 }, + { "time": 0.9666, "angle": -1.89 }, + { "time": 1.1333, "angle": 11.58 }, + { "time": 1.3333, "angle": -42.63 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 } + ] + }, + "rear_thigh": { + "rotate": [ + { "time": 0, "angle": -26.32 }, + { "time": 0.2, "angle": 121.44 }, + { "time": 0.4333, "angle": 70.54 }, + { + "time": 0.7333, + "angle": 79.89, + "curve": [ 0.295, 0.3, 0.59, 0.99 ] + }, + { "time": 0.8333, "angle": 99.12 }, + { "time": 0.9333, "angle": 74.05 }, + { "time": 1.0333, "angle": 98.04 }, + { "time": 1.1333, "angle": 99.12 }, + { "time": 1.3333, "angle": -26.32 } + ], + "translate": [ + { "time": 0, "x": -0.56, "y": -0.32 }, + { "time": 0.4333, "x": -8.5, "y": 10.58 }, + { "time": 0.7333, "x": -1.96, "y": -0.32 }, + { "time": 1.3333, "x": -0.56, "y": -0.32 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 } + ] + }, + "rear_shin": { + "rotate": [ + { "time": 0, "angle": -78.69 }, + { "time": 0.4333, "angle": -55.56 }, + { "time": 0.7333, "angle": -62.84 }, + { "time": 0.8333, "angle": -80.74 }, + { "time": 0.9333, "angle": -41.12 }, + { "time": 1.0333, "angle": -77.4 }, + { "time": 1.1333, "angle": -80.74 }, + { "time": 1.3333, "angle": -78.69 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.7333, "x": 1, "y": 1 } + ] + }, + "front_upper_arm": { + "rotate": [ + { "time": 0, "angle": -22.61 }, + { "time": 0.2, "angle": -246.68 }, + { + "time": 0.6, + "angle": 11.28, + "curve": [ 0.246, 0, 0.633, 0.53 ] + }, + { + "time": 0.7333, + "angle": -57.45, + "curve": [ 0.38, 0.53, 0.744, 1 ] + }, + { "time": 0.8666, "angle": -112.59 }, + { "time": 0.9333, "angle": -102.17 }, + { "time": 1.0333, "angle": -108.61 }, + { "time": 1.1333, "angle": -112.59 }, + { "time": 1.3333, "angle": -22.61 } + ], + "translate": [ + { "time": 0, "x": 6.08, "y": 7.15 }, + { "time": 0.2, "x": 7.23, "y": -13.13, "curve": "stepped" }, + { "time": 0.7333, "x": 7.23, "y": -13.13 }, + { "time": 1.3333, "x": 6.08, "y": 7.15 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 } + ] + }, + "front_bracer": { + "rotate": [ + { "time": 0, "angle": 66.46 }, + { "time": 0.2, "angle": 42.39 }, + { "time": 0.4333, "angle": 26.06 }, + { "time": 0.7333, "angle": 13.28 }, + { "time": 0.8666, "angle": -28.64 }, + { "time": 0.9333, "angle": -22.31 }, + { "time": 1.0333, "angle": -35.39 }, + { "time": 1.1333, "angle": -28.64 }, + { "time": 1.3333, "angle": 66.46 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 } + ] + }, + "front_fist": { + "rotate": [ + { "time": 0, "angle": -28.43 }, + { "time": 0.4333, "angle": -45.6 }, + { "time": 0.7333, "angle": -53.66 }, + { "time": 0.8666, "angle": 7.55 }, + { "time": 0.9333, "angle": 31.15 }, + { "time": 1.0333, "angle": -32.58 }, + { "time": 1.1333, "angle": 7.55 }, + { "time": 1.3333, "angle": -28.43 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 } + ] + }, + "rear_upper_arm": { + "rotate": [ + { "time": 0, "angle": 39.68 }, + { "time": 0.2, "angle": 276.57 }, + { "time": 0.3, "angle": 17.73 }, + { "time": 0.4333, "angle": 83.38 }, + { + "time": 0.6, + "angle": -4.71, + "curve": [ 0.246, 0, 0.633, 0.53 ] + }, + { + "time": 0.7333, + "angle": -69.63, + "curve": [ 0.342, 0.36, 0.68, 0.71 ] + }, + { + "time": 0.7666, + "angle": 321.47, + "curve": [ 0.333, 0.33, 0.667, 0.66 ] + }, + { + "time": 0.8, + "angle": 33.7, + "curve": [ 0.358, 0.64, 0.693, 1 ] + }, + { "time": 0.8666, "angle": 34.56 }, + { "time": 1.0333, "angle": 71.96 }, + { "time": 1.1333, "angle": 34.56 }, + { "time": 1.3333, "angle": 39.68 } + ], + "translate": [ + { "time": 0, "x": -3.1, "y": -4.86 }, + { "time": 0.2, "x": 23.33, "y": 49.07 }, + { "time": 0.4333, "x": 20.78, "y": 40.21 }, + { "time": 1.3333, "x": -3.1, "y": -4.86 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 } + ] + }, + "rear_bracer": { + "rotate": [ + { "time": 0, "angle": 29.66 }, + { "time": 0.2, "angle": 45.06 }, + { "time": 0.4333, "angle": -4.34 }, + { "time": 0.7666, "angle": 61.68 }, + { "time": 0.8, "angle": 82.59 }, + { "time": 0.8666, "angle": 80.06 }, + { "time": 1.0333, "angle": 57.56 }, + { "time": 1.1333, "angle": 80.06 }, + { "time": 1.3333, "angle": 29.66 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 } + ] + }, + "neck": { + "rotate": [ + { "time": 0, "angle": 24.9 }, + { "time": 0.2, "angle": 16.31 }, + { "time": 0.4333, "angle": 7.44 }, + { "time": 0.7333, "angle": -20.35 }, + { "time": 0.8333, "angle": -0.69, "curve": "stepped" }, + { "time": 1.1333, "angle": -0.69 }, + { "time": 1.3333, "angle": 24.9 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 } + ] + }, + "head": { + "rotate": [ + { "time": 0, "angle": 24.92 }, + { "time": 0.2, "angle": 10.36 }, + { "time": 0.4333, "angle": 28.65 }, + { "time": 0.7333, "angle": -2.65 }, + { "time": 0.8333, "angle": -28.94, "curve": "stepped" }, + { "time": 1.1333, "angle": -28.94 }, + { "time": 1.3333, "angle": 24.92 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 } + ] + }, + "hip": { + "rotate": [ + { "time": 0, "angle": 0 } + ], + "translate": [ + { + "time": 0, + "x": -34.51, + "y": -78.62, + "curve": [ 0.232, 1, 0.75, 1 ] + }, + { + "time": 0.2, + "x": -34.51, + "y": 182.5, + "curve": [ 0.232, 0.48, 0.598, 0.79 ] + }, + { + "time": 0.7666, + "x": -34.51, + "y": 596.22, + "curve": [ 0.329, 0.17, 0.66, 0.21 ] + }, + { "time": 1.1333, "x": -34.51, "y": 2.49 }, + { "time": 1.3333, "x": -34.51, "y": -78.62 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 } + ] + }, + "front_shin": { + "rotate": [ + { + "time": 0, + "angle": -90.62, + "curve": [ 0.416, 0.54, 0.743, 1 ] + }, + { + "time": 0.2, + "angle": -10.52, + "curve": [ 0.644, 0, 0.75, 1 ] + }, + { "time": 0.4333, "angle": -127.72 }, + { "time": 0.7333, "angle": -19.91 }, + { "time": 0.8333, "angle": -5.16 }, + { "time": 0.9333, "angle": -35.06 }, + { "time": 1.0333, "angle": -43.97 }, + { "time": 1.1333, "angle": -5.16 }, + { "time": 1.3333, "angle": -90.62 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 } + ] + }, + "front_foot": { + "rotate": [ + { "time": 0, "angle": -0.79 }, + { "time": 0.0333, "angle": 16.27 }, + { "time": 0.0666, "angle": 23.52 }, + { "time": 0.1, "angle": 21.02 }, + { "time": 0.1333, "angle": 10.92 }, + { "time": 0.2, "angle": -38.45 }, + { "time": 0.4333, "angle": 6.62 }, + { "time": 0.7333, "angle": -11.51 }, + { "time": 1.0333, "angle": -22.91 }, + { "time": 1.3333, "angle": -0.79 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 } + ] + }, + "rear_foot": { + "rotate": [ + { "time": 0, "angle": -12.77 }, + { "time": 0.2, "angle": 17.05 }, + { "time": 0.4333, "angle": 19.45 }, + { "time": 0.7333, "angle": 2.67 }, + { "time": 1.0333, "angle": -28.49 }, + { "time": 1.3333, "angle": -12.77 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 } + ] + }, + "gun": { + "rotate": [ + { "time": 0, "angle": 6.18 }, + { "time": 0.2, "angle": 30.81 }, + { "time": 0.4333, "angle": 13.25 }, + { "time": 0.7333, "angle": 14.98 }, + { "time": 0.7666, "angle": 25.64 }, + { "time": 0.8, "angle": 20.62 }, + { "time": 0.8666, "angle": 64.52 }, + { "time": 1.0333, "angle": 8.59 }, + { "time": 1.1333, "angle": 64.52 }, + { "time": 1.3333, "angle": 6.18 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 } + ] + } + } + }, + "run": { + "slots": { + "front_fist": { + "attachment": [ + { "time": 0, "name": "front_fist_closed" } + ] + }, + "mouth": { + "attachment": [ + { "time": 0, "name": "mouth_grind" } + ] + }, + "torso": { + "attachment": [ + { "time": 0, "name": "torso" } + ] + } + }, + "bones": { + "front_thigh": { + "rotate": [ + { + "time": 0, + "angle": 42.05, + "curve": [ 0.195, 0.86, 0.75, 1 ] + }, + { "time": 0.0666, "angle": 46.07 }, + { "time": 0.1333, "angle": -20.28 }, + { "time": 0.2, "angle": -27.23 }, + { "time": 0.2666, "angle": -47.16 }, + { "time": 0.3333, "angle": -39.79 }, + { "time": 0.4, "angle": -25.86 }, + { "time": 0.4666, "angle": 14.35 }, + { "time": 0.5333, "angle": 55.62 }, + { "time": 0.6, "angle": 69.65 }, + { "time": 0.6666, "angle": 86.4 }, + { "time": 0.7333, "angle": 65.87 }, + { "time": 0.8, "angle": 42.05 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 }, + { "time": 0.0333, "x": -5.79, "y": 11.15 }, + { "time": 0.0666, "x": -5.13, "y": 11.55 }, + { "time": 0.1333, "x": -7.7, "y": 8.98 }, + { "time": 0.5333, "x": -1.26, "y": 3.83 }, + { "time": 0.8, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.8, "x": 1, "y": 1 } + ] + }, + "torso": { + "rotate": [ + { "time": 0, "angle": -39.7 }, + { "time": 0.2, "angle": -57.29 }, + { "time": 0.4, "angle": -39.7 }, + { "time": 0.6, "angle": -57.29 }, + { "time": 0.8, "angle": -39.7 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.4, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.8, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.8, "x": 1, "y": 1 } + ] + }, + "rear_thigh": { + "rotate": [ + { "time": 0, "angle": -56.59 }, + { "time": 0.0666, "angle": -21.57 }, + { "time": 0.1333, "angle": 27.95 }, + { "time": 0.2, "angle": 42.42 }, + { "time": 0.2666, "angle": 62.37 }, + { "time": 0.3333, "angle": 45.42 }, + { "time": 0.4, "angle": 15.67 }, + { "time": 0.4666, "angle": 28.22 }, + { "time": 0.5333, "angle": -38.62 }, + { "time": 0.6, "angle": -53.26 }, + { "time": 0.6666, "angle": -79.31 }, + { "time": 0.7333, "angle": -86.47 }, + { "time": 0.8, "angle": -56.59 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 }, + { "time": 0.4, "x": -6.76, "y": -3.86 }, + { "time": 0.4333, "x": -15.85, "y": 7.28 }, + { "time": 0.4666, "x": -13.04, "y": 4.04 }, + { "time": 0.5, "x": -10.24, "y": 7.11 }, + { "time": 0.5333, "x": -9.01, "y": -5.15 }, + { "time": 0.6666, "x": -23.18, "y": -2.57 }, + { "time": 0.8, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.8, "x": 1, "y": 1 } + ] + }, + "rear_shin": { + "rotate": [ + { "time": 0, "angle": -74 }, + { "time": 0.0666, "angle": -83.38 }, + { "time": 0.1333, "angle": -106.69 }, + { "time": 0.2, "angle": -66.01 }, + { "time": 0.2666, "angle": -55.22 }, + { "time": 0.3333, "angle": -24.8 }, + { + "time": 0.4, + "angle": 18.44, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 0.4666, "angle": -56.65 }, + { + "time": 0.5333, + "angle": -11.94, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 0.6666, "angle": -41.26 }, + { "time": 0.7333, "angle": -43.6 }, + { "time": 0.8, "angle": -74 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.8, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.8, "x": 1, "y": 1 } + ] + }, + "front_upper_arm": { + "rotate": [ + { "time": 0, "angle": -89.36 }, + { "time": 0.0666, "angle": -95.67 }, + { "time": 0.1333, "angle": -22 }, + { "time": 0.2, "angle": -316.04 }, + { "time": 0.2666, "angle": -274.94 }, + { "time": 0.3333, "angle": -273.74 }, + { "time": 0.4, "angle": -272.09 }, + { "time": 0.4666, "angle": -264.89 }, + { "time": 0.5333, "angle": -320.09 }, + { "time": 0.6, "angle": -50.83 }, + { "time": 0.6666, "angle": -81.72 }, + { "time": 0.7333, "angle": -83.92 }, + { "time": 0.8, "angle": -89.36 } + ], + "translate": [ + { "time": 0, "x": 6.24, "y": 10.05 }, + { "time": 0.2666, "x": 4.95, "y": -13.13 }, + { "time": 0.6, "x": -2.43, "y": 1.94 }, + { "time": 0.8, "x": 6.24, "y": 10.05 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.8, "x": 1, "y": 1 } + ] + }, + "front_bracer": { + "rotate": [ + { "time": 0, "angle": 33.43 }, + { "time": 0.0666, "angle": 20.53 }, + { "time": 0.1333, "angle": 15.26 }, + { "time": 0.2, "angle": 19.28 }, + { "time": 0.2666, "angle": 22.62 }, + { "time": 0.3333, "angle": 37.29 }, + { "time": 0.4, "angle": 41.53 }, + { "time": 0.4666, "angle": 31.73 }, + { "time": 0.5333, "angle": 67.45 }, + { "time": 0.6666, "angle": 39.77 }, + { "time": 0.7333, "angle": 30.95 }, + { "time": 0.8, "angle": 33.43 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.8, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.8, "x": 1, "y": 1 } + ] + }, + "front_fist": { + "rotate": [ + { "time": 0, "angle": -19.75 }, + { "time": 0.0666, "angle": -37.11 }, + { "time": 0.1333, "angle": -50.79 }, + { "time": 0.2666, "angle": -12.69 }, + { "time": 0.3333, "angle": 3.01 }, + { "time": 0.4333, "angle": 12.05 }, + { "time": 0.5333, "angle": 13.25 }, + { "time": 0.8, "angle": -19.75 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.8, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.8, "x": 1, "y": 1 } + ] + }, + "rear_upper_arm": { + "rotate": [ + { "time": 0, "angle": 68.68 }, + { "time": 0.0666, "angle": 73.89 }, + { "time": 0.1333, "angle": -9.64 }, + { "time": 0.2, "angle": 284.27 }, + { "time": 0.2666, "angle": 283.29 }, + { "time": 0.3333, "angle": 278.28 }, + { "time": 0.4, "angle": 271.02 }, + { "time": 0.4666, "angle": 263.2 }, + { "time": 0.5333, "angle": 314.25 }, + { "time": 0.6, "angle": 16.83 }, + { "time": 0.6666, "angle": 70.35 }, + { "time": 0.7333, "angle": 73.53 }, + { "time": 0.8, "angle": 68.68 } + ], + "translate": [ + { "time": 0, "x": -2.57, "y": -8.89 }, + { "time": 0.1333, "x": -4.68, "y": 7.2 }, + { "time": 0.2, "x": 21.73, "y": 51.17 }, + { "time": 0.6, "x": 4.33, "y": 2.05 }, + { "time": 0.8, "x": -2.57, "y": -8.89 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.8, "x": 1, "y": 1 } + ] + }, + "rear_bracer": { + "rotate": [ + { "time": 0, "angle": 31.04 }, + { "time": 0.0666, "angle": 28.28 }, + { "time": 0.1333, "angle": 49.36 }, + { "time": 0.2, "angle": 59.37 }, + { "time": 0.2666, "angle": 8.56 }, + { "time": 0.3333, "angle": 9.38 }, + { "time": 0.4, "angle": 11.51 }, + { "time": 0.4666, "angle": 7.22 }, + { "time": 0.5333, "angle": -18.44 }, + { "time": 0.6, "angle": 11.44 }, + { "time": 0.6666, "angle": 9.99 }, + { "time": 0.7333, "angle": 8.28 }, + { "time": 0.8, "angle": 31.04 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.8, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.8, "x": 1, "y": 1 } + ] + }, + "neck": { + "rotate": [ + { "time": 0, "angle": 11.03 }, + { "time": 0.2, "angle": 13.58 }, + { "time": 0.4, "angle": 11.03 }, + { "time": 0.6, "angle": 13.58 }, + { "time": 0.8, "angle": 11.03 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.4, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.8, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.8, "x": 1, "y": 1 } + ] + }, + "head": { + "rotate": [ + { "time": 0, "angle": 11.03 }, + { "time": 0.1, "angle": 12.34 }, + { "time": 0.2, "angle": 25.55 }, + { "time": 0.4, "angle": 11.03 }, + { "time": 0.5, "angle": 12.34 }, + { "time": 0.6, "angle": 25.55 }, + { "time": 0.8, "angle": 11.03 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.4, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.8, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.8, "x": 1, "y": 1 } + ] + }, + "hip": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 0.8, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": -62.47, "y": -23.1 }, + { + "time": 0.0666, + "x": -62.47, + "y": -38.51, + "curve": [ 0.244, 0.04, 0.75, 1 ] + }, + { + "time": 0.2666, + "x": -62.47, + "y": 22.28, + "curve": [ 0.17, 0.52, 0.75, 1 ] + }, + { "time": 0.4, "x": -62.47, "y": -23.1 }, + { "time": 0.4333, "x": -62.47, "y": -24.59 }, + { + "time": 0.4666, + "x": -62.47, + "y": -43.29, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 0.6666, "x": -62.47, "y": 22.28 }, + { "time": 0.8, "x": -62.47, "y": -23.1 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.8, "x": 1, "y": 1 } + ] + }, + "front_shin": { + "rotate": [ + { + "time": 0, + "angle": 0, + "curve": [ 0.481, 0.01, 0.75, 1 ] + }, + { "time": 0.0666, "angle": -64.42 }, + { + "time": 0.1333, + "angle": -20.59, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 0.2666, "angle": -62.51 }, + { "time": 0.3333, "angle": -79.74 }, + { "time": 0.4, "angle": -78.28 }, + { + "time": 0.4666, + "angle": -118.96, + "curve": [ 0.93, 0, 0.952, 0.95 ] + }, + { "time": 0.6, "angle": -88.95 }, + { "time": 0.6666, "angle": -79.09 }, + { "time": 0.7333, "angle": -47.77 }, + { "time": 0.8, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.8, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.8, "x": 1, "y": 1 } + ] + }, + "front_foot": { + "rotate": [ + { "time": 0, "angle": 0 }, + { + "time": 0.0333, + "angle": -21.13, + "curve": [ 0.121, 0.23, 0.75, 1 ] + }, + { "time": 0.0666, "angle": 17.64 }, + { "time": 0.1, "angle": 29.92 }, + { "time": 0.1333, "angle": 16.44 }, + { "time": 0.2, "angle": -29.22 }, + { "time": 0.2666, "angle": -1.61 }, + { "time": 0.3333, "angle": -10.22 }, + { "time": 0.4666, "angle": -15.99 }, + { "time": 0.6, "angle": 9.03 }, + { "time": 0.7333, "angle": 17.32 }, + { "time": 0.8, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.8, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.8, "x": 1, "y": 1 } + ] + }, + "rear_foot": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.0666, "angle": -12.04 }, + { "time": 0.1333, "angle": -0.87 }, + { "time": 0.2, "angle": 25.81 }, + { "time": 0.2666, "angle": 4.71 }, + { + "time": 0.4, + "angle": 18.09, + "curve": [ 0.281, 0.73, 0.75, 1 ] + }, + { "time": 0.4333, "angle": -1.7 }, + { "time": 0.4666, "angle": 27.12 }, + { "time": 0.5, "angle": 38.83 }, + { "time": 0.5333, "angle": 30.76 }, + { "time": 0.5666, "angle": -20.49 }, + { "time": 0.6, "angle": -30.8 }, + { "time": 0.6666, "angle": -1.31 }, + { "time": 0.8, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.8, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.8, "x": 1, "y": 1 } + ] + }, + "gun": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.1333, "angle": 24.72 }, + { "time": 0.5, "angle": -11.87 }, + { "time": 0.8, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.8, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.8, "x": 1, "y": 1 } + ] + } + }, + "events": [ + { "time": 0, "name": "footstep" }, + { "time": 0.4, "name": "footstep", "int": 1 } + ] + }, + "shoot": { + "slots": { + "front_fist": { + "attachment": [ + { "time": 0.1333, "name": "front_fist_closed" }, + { "time": 0.4, "name": "front_fist_open" } + ] + }, + "mouth": { + "attachment": [ + { "time": 0.1333, "name": "mouth_grind" } + ] + }, + "muzzle": { + "color": [ + { + "time": 0.1333, + "color": "ffffff00", + "curve": [ 0.118, 0.99, 0.75, 1 ] + }, + { + "time": 0.1666, + "color": "ffffffff", + "curve": [ 0.821, 0, 0.909, 0.89 ] + }, + { "time": 0.2666, "color": "ffffff00" } + ], + "attachment": [ + { "time": 0.1333, "name": "muzzle" }, + { "time": 0.2666, "name": null } + ] + } + }, + "bones": { + "front_fist": { + "scale": [ + { "time": 0.1333, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.4, "x": 1, "y": 1 } + ] + }, + "gunTip": { + "translate": [ + { "time": 0.1333, "x": 0, "y": 0 }, + { "time": 0.2, "x": 20.93, "y": 1.57 } + ], + "scale": [ + { "time": 0.1333, "x": 1, "y": 1 }, + { "time": 0.2, "x": 1.247, "y": 1.516 } + ] + }, + "gun": { + "rotate": [ + { "time": 0, "angle": 1.9 } + ], + "translate": [ + { + "time": 0, + "x": 7.95, + "y": 5.84, + "curve": [ 0, 0.3, 0.678, 1 ] + }, + { "time": 0.3, "x": -9.3, "y": -1.41 }, + { "time": 0.4, "x": 0, "y": 0 } + ] + }, + "rear_bracer": { + "rotate": [ + { "time": 0, "angle": -30.47 } + ], + "translate": [ + { + "time": 0, + "x": 0, + "y": 0, + "curve": [ 0, 0.3, 0.678, 1 ] + }, + { "time": 0.3, "x": -5.99, "y": -3.71 }, + { "time": 0.4, "x": 0, "y": 0 } + ] + }, + "rear_upper_arm": { + "rotate": [ + { "time": 0, "angle": 62.3 } + ], + "translate": [ + { + "time": 0, + "x": 0, + "y": 0, + "curve": [ 0, 0.3, 0.678, 1 ] + }, + { "time": 0.3, "x": 2.81, "y": 11.41 }, + { "time": 0.4, "x": 0, "y": 0 } + ] + } + } + }, + "test": { + "slots": { + "front_foot": { + "color": [ + { "time": 0.6666, "color": "ffffffff" }, + { "time": 1.3333, "color": "ff0700ff" } + ] + }, + "gun": { + "color": [ + { "time": 0, "color": "ffffffff", "curve": "stepped" }, + { "time": 0.6666, "color": "ffffffff" }, + { "time": 1.3333, "color": "32ff00ff" } + ] + }, + "rear_foot": { + "color": [ + { "time": 0.6666, "color": "ffffffff" }, + { "time": 1.3333, "color": "ff0700ff" } + ] + } + }, + "bones": { + "head": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.3333, "angle": -20.72 }, + { "time": 0.6666, "angle": -32.41 }, + { "time": 1, "angle": -5.3 }, + { "time": 1.3333, "angle": 24.96 }, + { "time": 1.6666, "angle": 15.61 }, + { "time": 2, "angle": 0 } + ], + "translate": [ + { + "time": 0, + "x": 0, + "y": 0, + "curve": [ 0.172, 0.37, 0.574, 0.73 ] + }, + { + "time": 0.1666, + "x": 144.19, + "y": -77.59, + "curve": [ 0.372, 0.61, 0.765, 1 ] + }, + { + "time": 0.3333, + "x": 217.61, + "y": -192.63, + "curve": [ 0.282, 0, 0.624, 0.31 ] + }, + { + "time": 0.5, + "x": 181.21, + "y": -365.66, + "curve": [ 0.313, 0.21, 0.654, 0.54 ] + }, + { + "time": 0.6666, + "x": 20.09, + "y": -500.4, + "curve": [ 0.147, 0.27, 0.75, 1 ] + }, + { "time": 0.8333, "x": -194.24, "y": -341.84 }, + { "time": 1, "x": -307.93, "y": -114 }, + { + "time": 1.1666, + "x": -330.38, + "y": 121.42, + "curve": [ 0.25, 0, 0.764, 0.48 ] + }, + { + "time": 1.3333, + "x": -240.42, + "y": 335.66, + "curve": [ 0.229, 0.37, 0.58, 0.73 ] + }, + { + "time": 1.5, + "x": -56.12, + "y": 288.06, + "curve": [ 0.296, 0.6, 0.641, 1 ] + }, + { + "time": 1.6666, + "x": 87.63, + "y": 191.33, + "curve": [ 0.238, 0, 0.626, 0.39 ] + }, + { + "time": 1.8333, + "x": 60.62, + "y": 95.14, + "curve": [ 0.41, 0.26, 0.803, 0.62 ] + }, + { "time": 2, "x": 0, "y": 0 } + ] + } + }, + "drawOrder": [ + { + "time": 0.6666, + "offsets": [ + { "slot": "head", "offset": -9 }, + { "slot": "eye", "offset": -9 }, + { "slot": "mouth", "offset": -12 }, + { "slot": "goggles", "offset": -12 } + ] + }, + { "time": 1.3333 } + ], + "events": [ + { "time": 0, "name": "headPop", "int": 0, "float": 0, "string": "pop.wav" }, + { "time": 1, "name": "headBehind", "int": 7, "float": 8, "string": "animate" }, + { "time": 2, "name": "headAttach", "int": 0, "float": 0, "string": "attach.wav" } + ] + }, + "walk": { + "slots": { + "front_fist": { + "attachment": [ + { "time": 0, "name": "front_fist_closed" } + ] + }, + "mouth": { + "attachment": [ + { "time": 0, "name": "mouth_smile" } + ] + }, + "torso": { + "attachment": [ + { "time": 0, "name": "torso" } + ] + } + }, + "bones": { + "front_thigh": { + "rotate": [ + { "time": 0, "angle": 15.79 }, + { "time": 0.1, "angle": 27.39 }, + { "time": 0.2, "angle": -7.94 }, + { "time": 0.3, "angle": -16.94 }, + { "time": 0.4, "angle": -28.62 }, + { "time": 0.5, "angle": -19.3 }, + { "time": 0.6, "angle": -3.08 }, + { "time": 0.7, "angle": 29.51 }, + { "time": 0.8, "angle": 15.79 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 }, + { "time": 0.4, "x": -1.18, "y": 0.54 }, + { "time": 0.5, "x": 0.11, "y": 0.41 }, + { "time": 0.6, "x": 9.48, "y": 0.27 }, + { "time": 0.8, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.4, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.8, "x": 1, "y": 1 } + ] + }, + "front_shin": { + "rotate": [ + { "time": 0, "angle": 5.12 }, + { "time": 0.1, "angle": -20.87 }, + { "time": 0.2, "angle": 13.37 }, + { "time": 0.3, "angle": 15.98 }, + { "time": 0.4, "angle": 5.94 }, + { "time": 0.5, "angle": -26.76 }, + { "time": 0.7, "angle": -55.44 }, + { "time": 0.8, "angle": 5.12 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.8, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.8, "x": 1, "y": 1 } + ] + }, + "rear_thigh": { + "rotate": [ + { "time": 0, "angle": -34.38 }, + { "time": 0.1, "angle": -30.32 }, + { "time": 0.2, "angle": -37.22 }, + { "time": 0.3, "angle": 20.73 }, + { "time": 0.4, "angle": 8.69 }, + { "time": 0.5, "angle": 12.16 }, + { "time": 0.6, "angle": -24.62 }, + { "time": 0.7, "angle": -27.26 }, + { "time": 0.8, "angle": -34.38 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 }, + { "time": 0.4, "x": 4.08, "y": -9.53 }, + { "time": 0.5, "x": 0, "y": 0 }, + { "time": 0.7, "x": -21.14, "y": -9.6 }, + { "time": 0.8, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.8, "x": 1, "y": 1 } + ] + }, + "rear_shin": { + "rotate": [ + { "time": 0, "angle": 14.26 }, + { "time": 0.1, "angle": -17.3 }, + { "time": 0.2, "angle": -12.67 }, + { "time": 0.3, "angle": -58.89 }, + { "time": 0.4, "angle": 15.95 }, + { "time": 0.5, "angle": -9 }, + { "time": 0.6, "angle": 26.06 }, + { "time": 0.7, "angle": 21.85 }, + { "time": 0.8, "angle": 14.26 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.8, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 }, + { "time": 0.1, "x": 0.951, "y": 1 }, + { "time": 0.5, "x": 0.975, "y": 1 }, + { "time": 0.8, "x": 1, "y": 1 } + ] + }, + "rear_foot": { + "rotate": [ + { "time": 0, "angle": 10.13 }, + { "time": 0.1, "angle": 12.27 }, + { "time": 0.2, "angle": -2.94 }, + { "time": 0.3, "angle": 6.29 }, + { "time": 0.4, "angle": 13.45 }, + { "time": 0.5, "angle": -3.57 }, + { "time": 0.6, "angle": -0.97 }, + { "time": 0.7, "angle": 2.97 }, + { "time": 0.8, "angle": 10.13 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.8, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.8, "x": 1, "y": 1 } + ] + }, + "front_upper_arm": { + "rotate": [ + { "time": 0, "angle": -23.74 }, + { "time": 0.4, "angle": -320.57 }, + { "time": 0.8, "angle": -23.74 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.8, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.8, "x": 1, "y": 1 } + ] + }, + "rear_upper_arm": { + "rotate": [ + { "time": 0, "angle": 11.62 }, + { "time": 0.1, "angle": 19.36 }, + { "time": 0.4, "angle": 345.26 }, + { "time": 0.5, "angle": 343.44 }, + { "time": 0.8, "angle": 11.62 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.8, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.8, "x": 1, "y": 1 } + ] + }, + "torso": { + "rotate": [ + { "time": 0, "angle": -12.11 }, + { "time": 0.1666, "angle": -17.16 }, + { "time": 0.4, "angle": -12.11 }, + { "time": 0.5666, "angle": -15.81 }, + { "time": 0.8, "angle": -12.11 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.8, "x": 1, "y": 1 } + ] + }, + "neck": { + "rotate": [ + { "time": 0, "angle": 1.41 }, + { "time": 0.2333, "angle": -3.04 }, + { "time": 0.4, "angle": 1.41 }, + { "time": 0.6333, "angle": -3.04 }, + { "time": 0.8, "angle": 1.41 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.4, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.8, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.8, "x": 1, "y": 1 } + ] + }, + "head": { + "rotate": [ + { "time": 0, "angle": 6.97 }, + { "time": 0.1666, "angle": 8.02 }, + { "time": 0.2666, "angle": 12.65 }, + { "time": 0.4, "angle": 6.97 }, + { "time": 0.5666, "angle": 8.02 }, + { "time": 0.6666, "angle": 12.65 }, + { "time": 0.8, "angle": 6.97 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.4, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.8, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.8, "x": 1, "y": 1 } + ] + }, + "hip": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 0.8, "angle": 0 } + ], + "translate": [ + { + "time": 0, + "x": -23.93, + "y": 3.22, + "curve": [ 0.518, 0.03, 0.807, 0.61 ] + }, + { + "time": 0.1, + "x": -23.93, + "y": -9.24, + "curve": [ 0.135, 0.33, 0.601, 0.99 ] + }, + { + "time": 0.2, + "x": -23.93, + "y": 4.35, + "curve": [ 0.204, 0.68, 0.75, 1 ] + }, + { + "time": 0.3, + "x": -23.93, + "y": 2.38, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 0.4, + "x": -23.93, + "y": -2.5, + "curve": [ 0.692, 0.01, 0.75, 1 ] + }, + { + "time": 0.5, + "x": -23.93, + "y": -10.32, + "curve": [ 0.235, 0.77, 0.75, 1 ] + }, + { + "time": 0.6, + "x": -23.93, + "y": 4.35, + "curve": [ 0.287, 0.37, 0.718, 0.76 ] + }, + { + "time": 0.7, + "x": -23.93, + "y": 10.34, + "curve": [ 0.615, 0, 0.75, 1 ] + }, + { "time": 0.8, "x": -23.93, "y": 3.22 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.8, "x": 1, "y": 1 } + ] + }, + "front_bracer": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.4, "angle": 20.59 }, + { "time": 0.8, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.8, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.8, "x": 1, "y": 1 } + ] + }, + "front_foot": { + "rotate": [ + { "time": 0, "angle": 12.49 }, + { "time": 0.1, "angle": -8.34 }, + { "time": 0.2, "angle": -6.17 }, + { "time": 0.3, "angle": -0.75 }, + { "time": 0.3333, "angle": 3.89 }, + { "time": 0.4, "angle": 10.22 }, + { "time": 0.5, "angle": 11.44 }, + { "time": 0.6, "angle": -0.33 }, + { "time": 0.7, "angle": 0.15 }, + { "time": 0.8, "angle": 12.49 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.8, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.8, "x": 1, "y": 1 } + ] + }, + "rear_bracer": { + "rotate": [ + { "time": 0, "angle": 3.58 }, + { "time": 0.1, "angle": 5.51 }, + { "time": 0.4, "angle": -22.77 }, + { "time": 0.5, "angle": -9.65 }, + { "time": 0.8, "angle": 3.58 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.8, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.8, "x": 1, "y": 1 } + ] + }, + "front_fist": { + "rotate": [ + { "time": 0, "angle": -15.22 }, + { "time": 0.1, "angle": -51.4 }, + { "time": 0.4, "angle": -39.4 }, + { "time": 0.5, "angle": 19.26 }, + { "time": 0.8, "angle": -15.22 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.8, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.8, "x": 1, "y": 1 } + ] + }, + "gun": { + "rotate": [ + { + "time": 0, + "angle": -24.06, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 0.1, + "angle": -10.94, + "curve": [ 0.381, 0.54, 0.742, 1 ] + }, + { + "time": 0.4, + "angle": 25.34, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 0.6666, + "angle": -27.47, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 0.8, "angle": -24.06 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.8, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.8, "x": 1, "y": 1 } + ] + } + } + } +} +} \ No newline at end of file diff --git a/spine-love/data/spineboy.png b/spine-love/data/spineboy.png new file mode 100644 index 000000000..2eae82219 Binary files /dev/null and b/spine-love/data/spineboy.png differ diff --git a/spine-love/data/stretchyman.atlas b/spine-love/data/stretchyman.atlas new file mode 100644 index 000000000..b9072157f --- /dev/null +++ b/spine-love/data/stretchyman.atlas @@ -0,0 +1,41 @@ + +stretchyman.png +size: 1024,256 +format: RGBA8888 +filter: Linear,Linear +repeat: none +back arm + rotate: true + xy: 679, 173 + size: 72, 202 + orig: 72, 202 + offset: 0, 0 + index: -1 +back leg + rotate: true + xy: 2, 2 + size: 100, 318 + orig: 100, 318 + offset: 0, 0 + index: -1 +body + rotate: true + xy: 2, 104 + size: 141, 452 + orig: 141, 452 + offset: 0, 0 + index: -1 +front arm + rotate: true + xy: 456, 100 + size: 145, 221 + orig: 145, 221 + offset: 0, 0 + index: -1 +head + rotate: true + xy: 322, 15 + size: 87, 102 + orig: 87, 102 + offset: 0, 0 + index: -1 diff --git a/spine-love/data/stretchyman.json b/spine-love/data/stretchyman.json new file mode 100644 index 000000000..63d89f419 --- /dev/null +++ b/spine-love/data/stretchyman.json @@ -0,0 +1,762 @@ +{ +"skeleton": { "hash": "blOhTH+VBhIluqnZVQ+1mnv7uxQ", "spine": "3.4.02", "width": 264.48, "height": 570.1, "images": "./images/" }, +"bones": [ + { "name": "root" }, + { "name": "hip", "parent": "root", "x": 28.61, "y": 289.9 }, + { "name": "spine 1", "parent": "hip", "length": 34.66, "rotation": 86.68, "x": -4.48, "y": 12.66 }, + { "name": "spine 2", "parent": "spine 1", "length": 41.41, "rotation": 16.47, "x": 34.66 }, + { "name": "spine 3", "parent": "spine 2", "length": 34.44, "rotation": 16.17, "x": 41.41 }, + { "name": "spine 4", "parent": "spine 3", "length": 37.53, "rotation": -13.63, "x": 34.44 }, + { "name": "back arm 1", "parent": "spine 4", "length": 32.43, "rotation": -154.35, "x": 15.99, "y": -4.58, "inheritScale": false }, + { "name": "back arm 2", "parent": "back arm 1", "length": 34.16, "rotation": 3.1, "x": 31.88, "y": 0.02 }, + { "name": "back arm 3", "parent": "back arm 2", "length": 31.26, "rotation": 9.59, "x": 34.16 }, + { "name": "back arm 4", "parent": "back arm 3", "length": 33.3, "rotation": 14.6, "x": 32.03, "y": 0.81 }, + { "name": "back arm 5", "parent": "back arm 4", "length": 37.41, "rotation": 11.3, "x": 33.81, "y": 0.02 }, + { "name": "back leg 1", "parent": "hip", "length": 41, "rotation": -83.65, "x": 10.4, "y": 1.04, "color": "abe323ff" }, + { "name": "back leg 8", "parent": "back leg 1", "length": 41, "rotation": -33.78, "x": 267.28, "y": -77.39, "color": "abe323ff" }, + { + "name": "back foot 1", + "parent": "hip", + "length": 33.23, + "rotation": -6.55, + "x": -34, + "y": -279.68, + "inheritRotation": false, + "inheritScale": false + }, + { "name": "back foot 2", "parent": "back foot 1", "length": 32.28, "rotation": 4.34, "x": 33.23, "inheritScale": false }, + { "name": "back foot 3", "parent": "back foot 2", "length": 15.87, "rotation": 10.06, "x": 32.28, "inheritScale": false }, + { "name": "back leg 2", "parent": "back leg 1", "length": 41, "rotation": -4.07, "x": 34.56, "color": "abe323ff" }, + { "name": "back leg 3", "parent": "back leg 1", "length": 41, "rotation": -5.24, "x": 81.78, "y": -2.29, "color": "abe323ff" }, + { "name": "back leg 4", "parent": "back leg 1", "length": 41, "rotation": -16.6, "x": 121.2, "y": -11.27, "color": "abe323ff" }, + { "name": "back leg 5", "parent": "back leg 1", "length": 41, "rotation": -32.35, "x": 160.15, "y": -24.85, "color": "abe323ff" }, + { "name": "back leg 6", "parent": "back leg 1", "length": 41, "rotation": -30.76, "x": 197.04, "y": -39.98, "color": "abe323ff" }, + { "name": "back leg 7", "parent": "back leg 1", "length": 41, "rotation": -30.63, "x": 233.18, "y": -57.32, "color": "abe323ff" }, + { "name": "back leg IK target", "parent": "root", "x": 46.15, "y": 8.68, "color": "ff3f00ff" }, + { "name": "back leg IK 1", "parent": "hip", "length": 140.17, "rotation": -88.1, "x": 9.62, "y": -0.38 }, + { "name": "back leg IK 2", "parent": "back leg IK 1", "length": 148.96, "rotation": -21.32, "x": 140.17 }, + { "name": "belly", "parent": "spine 1", "x": 35.94, "y": -37.69 }, + { "name": "butt", "parent": "hip", "x": -32.67, "y": -1.87 }, + { "name": "front arm 1", "parent": "spine 4", "length": 38.33, "rotation": 118.58, "x": 27.12, "y": 4.89, "inheritScale": false }, + { "name": "front arm 2", "parent": "front arm 1", "length": 35.66, "rotation": -0.43, "x": 38.33 }, + { "name": "front arm 3", "parent": "front arm 2", "length": 32.65, "rotation": 14.45, "x": 35.66, "y": -0.01 }, + { "name": "front arm 4", "parent": "front arm 3", "length": 29.18, "rotation": 13.89, "x": 32.65 }, + { "name": "front arm 5", "parent": "front arm 4", "length": 46.32, "rotation": 16.09, "x": 29.18, "inheritScale": false }, + { "name": "front leg 1", "parent": "hip", "length": 37.2, "rotation": -88.96, "x": -23.56, "y": -1.99, "color": "abe323ff" }, + { "name": "front leg 8", "parent": "front leg 1", "length": 37.2, "rotation": -31.8, "x": 248.6, "y": -61.02, "color": "abe323ff" }, + { + "name": "front foot 1", + "parent": "hip", + "length": 26.29, + "rotation": -10.97, + "x": -77.04, + "y": -285.03, + "inheritRotation": false, + "inheritScale": false + }, + { "name": "front foot 2", "parent": "front foot 1", "length": 29.11, "rotation": 9.6, "x": 26.29 }, + { "name": "front foot 3", "parent": "front foot 2", "length": 23.48, "rotation": 8.91, "x": 29.11 }, + { "name": "front leg 2", "parent": "front leg 1", "length": 37.2, "rotation": 3.45, "x": 33.74, "color": "abe323ff" }, + { "name": "front leg 3", "parent": "front leg 1", "length": 37.2, "rotation": -6.11, "x": 74.4, "y": -1.07, "color": "abe323ff" }, + { + "name": "front leg 4", + "parent": "front leg 1", + "length": 37.2, + "rotation": -10.01, + "x": 111.39, + "y": -5.27, + "color": "abe323ff" + }, + { + "name": "front leg 5", + "parent": "front leg 1", + "length": 37.2, + "rotation": -28.39, + "x": 147.76, + "y": -14.98, + "color": "abe323ff" + }, + { + "name": "front leg 6", + "parent": "front leg 1", + "length": 37.2, + "rotation": -24.33, + "x": 182.41, + "y": -27.57, + "color": "abe323ff" + }, + { + "name": "front leg 7", + "parent": "front leg 1", + "length": 37.2, + "rotation": -22.99, + "x": 216.43, + "y": -42.55, + "color": "abe323ff" + }, + { "name": "front leg IK target", "parent": "root", "x": -37.73, "y": 5.03, "color": "ff3f00ff" }, + { "name": "front leg IK 1", "parent": "hip", "length": 140.66, "rotation": -89.23, "x": -23.98, "y": 1.88 }, + { "name": "front leg IK 2", "parent": "front leg IK 1", "length": 155.95, "rotation": -21.49, "x": 140.66, "y": 0.02 }, + { "name": "neck 1", "parent": "spine 4", "length": 13.45, "rotation": -30.66, "x": 38.96, "y": -0.83 }, + { "name": "neck 2", "parent": "neck 1", "length": 14.13, "rotation": -11.41, "x": 13.45 }, + { "name": "head", "parent": "neck 2", "length": 89.05, "rotation": 6.98, "x": 15.81, "y": 0.22, "inheritScale": false } +], +"slots": [ + { "name": "back arm", "bone": "root", "attachment": "back arm" }, + { "name": "back leg", "bone": "root", "attachment": "back leg" }, + { "name": "body", "bone": "root", "attachment": "body" }, + { "name": "head", "bone": "head", "attachment": "head" }, + { "name": "front arm", "bone": "root", "attachment": "front arm" }, + { "name": "back leg path", "bone": "hip", "attachment": "back leg path" }, + { "name": "front leg path", "bone": "hip", "attachment": "front leg path" } +], +"ik": [ + { + "name": "back leg IK", + "bones": [ "back leg IK 1", "back leg IK 2" ], + "target": "back leg IK target", + "bendPositive": false + }, + { + "name": "front leg IK", + "bones": [ "front leg IK 1", "front leg IK 2" ], + "target": "front leg IK target", + "bendPositive": false + } +], +"transform": [ + { + "name": "back foot position", + "bones": [ "back foot 1" ], + "target": "back leg 8", + "rotation": 108.8, + "x": 41.2, + "y": -0.02, + "scaleX": 4.0E-4, + "scaleY": -3.0E-4, + "shearY": 0.1, + "rotateMix": 0, + "scaleMix": 0 + }, + { + "name": "front foot position", + "bones": [ "front foot 1" ], + "target": "front leg 8", + "rotation": 101.55, + "x": 38.92, + "y": -0.02, + "scaleX": 4.0E-4, + "scaleY": -2.0E-4, + "shearY": 0.1, + "rotateMix": 0, + "scaleMix": 0 + } +], +"path": [ + { + "name": "back leg path", + "bones": [ "back leg 1", "back leg 2", "back leg 3", "back leg 4", "back leg 5", "back leg 6", "back leg 7", "back leg 8" ], + "target": "back leg path", + "spacingMode": "percent", + "rotateMode": "chainScale", + "spacing": 0.125 + }, + { + "name": "front leg path", + "bones": [ "front leg 1", "front leg 2", "front leg 3", "front leg 4", "front leg 5", "front leg 6", "front leg 7", "front leg 8" ], + "target": "front leg path", + "spacingMode": "percent", + "rotateMode": "chainScale", + "spacing": 0.125 + } +], +"skins": { + "default": { + "back arm": { + "back arm": { + "type": "mesh", + "uvs": [ 0.74522, 0.00989, 0.64111, 0.05762, 0.56303, 0.1559, 0.42508, 0.25885, 0.28974, 0.359, 0.22988, 0.49565, 0.21166, 0.60796, 0.21166, 0.69782, 0.16481, 0.78673, 0.14138, 0.84757, 0.02426, 0.88501, 0.05289, 0.9187, 0.37823, 0.98796, 0.60467, 0.98235, 0.6307, 0.9056, 0.73481, 0.87752, 0.6359, 0.81762, 0.55262, 0.74181, 0.38084, 0.69875, 0.37823, 0.60796, 0.39905, 0.50875, 0.51358, 0.38521, 0.66193, 0.2888, 0.85453, 0.18397, 0.97686, 0.0754, 0.9144, 0.00989 ], + "triangles": [ 11, 9, 12, 9, 8, 12, 12, 8, 18, 13, 12, 14, 12, 18, 17, 18, 8, 7, 14, 12, 17, 11, 10, 9, 14, 16, 15, 14, 17, 16, 7, 19, 18, 7, 6, 19, 6, 5, 19, 19, 5, 20, 5, 4, 20, 20, 4, 21, 4, 3, 21, 21, 3, 22, 3, 2, 22, 22, 2, 23, 2, 1, 23, 23, 1, 24, 1, 0, 24, 0, 25, 24 ], + "vertices": [ 1, 6, -7.68, -11.48, 1, 1, 6, 4.08, -13.62, 1, 1, 6, 23.48, -9.35, 1, 1, 7, 13.44, -9.22999, 1, 2, 7, 35.2, -9.62, 0.50649, 8, -0.57, -9.64999, 0.4935, 1, 8, 26.03, -6.38, 1, 1, 9, 14.15, -6.11, 1, 2, 9, 31.53, -5.56, 0.66492, 10, -3.33, -5.03, 0.33507, 1, 10, 13.08, -11.25, 1, 1, 10, 24.41, -14.88, 1, 1, 10, 30.15, -24.51, 1, 1, 10, 36.93, -23.53, 1, 1, 10, 54.07, -2.33, 1, 1, 10, 55.73, 14.14, 1, 1, 10, 41.39, 18.46999, 1, 1, 10, 37.28, 26.87, 1, 1, 10, 24.65, 21.67, 1, 1, 10, 9.17, 18.1, 1, 2, 9, 31.33, 6.77, 0.4788, 10, -1.11, 7.11, 0.52119, 1, 9, 13.77, 6.04, 1, 2, 8, 24.98, 6.17, 0.89217, 9, -5.47, 6.96, 0.10782, 2, 7, 32.59999, 7.28, 0.59842, 8, -0.32, 7.44, 0.40157, 1, 7, 11.07, 8.84, 1, 1, 6, 17.89, 11.87, 1, 1, 6, -4.82, 9.45, 1, 1, 6, -13.68, -0.69, 1 ], + "hull": 26, + "edges": [ 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 18, 20, 20, 22, 22, 24, 24, 26, 26, 28, 28, 30, 30, 32, 32, 34, 34, 36, 36, 38, 38, 40, 40, 42, 42, 44, 44, 46, 46, 48, 48, 50, 0, 50, 2, 48, 4, 46, 6, 44, 8, 42, 10, 40, 12, 38, 14, 36 ], + "width": 72, + "height": 202 + } + }, + "back leg": { + "back leg": { + "type": "mesh", + "uvs": [ 0.502, 0.01179, 0.36075, 0.06379, 0.40569, 0.15045, 0.44743, 0.23916, 0.47953, 0.3299, 0.51163, 0.42268, 0.52126, 0.50629, 0.48274, 0.58888, 0.41211, 0.66025, 0.3126, 0.74182, 0.21629, 0.81625, 0.1232, 0.89272, 0.00763, 0.97428, 0.29655, 0.98958, 0.47407, 0.99221, 0.64004, 0.99467, 0.80988, 0.9896, 0.91291, 0.98652, 1, 0.95797, 0.83329, 0.94681, 0.71066, 0.9386, 0.57122, 0.9203, 0.41532, 0.89985, 0.3447, 0.89272, 0.36885, 0.87177, 0.42816, 0.82032, 0.502, 0.74793, 0.58225, 0.66942, 0.6593, 0.59092, 0.72992, 0.50527, 0.76524, 0.42166, 0.78129, 0.3248, 0.78771, 0.23406, 0.78771, 0.13924, 0.7235, 0.03728, 0.60152, 0.00567, 0.82116, 0.96897, 0.67872, 0.96396, 0.52111, 0.95739, 0.35935, 0.94213, 0.19388, 0.92921, 0.25375, 0.88158, 0.32792, 0.81839 ], + "triangles": [ 36, 20, 19, 17, 19, 18, 16, 37, 36, 17, 16, 36, 17, 36, 19, 38, 22, 21, 37, 21, 20, 38, 21, 37, 37, 20, 36, 15, 38, 37, 14, 38, 15, 15, 37, 16, 39, 23, 22, 40, 23, 39, 39, 22, 38, 13, 40, 39, 12, 40, 13, 14, 39, 38, 13, 39, 14, 9, 8, 26, 25, 42, 9, 10, 9, 42, 26, 25, 9, 24, 42, 25, 41, 10, 42, 41, 42, 24, 11, 10, 41, 23, 41, 24, 40, 11, 41, 40, 41, 23, 12, 11, 40, 26, 8, 27, 6, 5, 29, 28, 6, 29, 7, 6, 28, 27, 7, 28, 8, 7, 27, 29, 5, 30, 31, 5, 4, 30, 5, 31, 32, 4, 3, 31, 4, 32, 34, 1, 0, 34, 0, 35, 2, 1, 34, 2, 34, 33, 3, 2, 33, 32, 3, 33 ], + "vertices": [ 1, 11, -19.79, -5.66, 1, 2, 11, -5.61, -22.28, 0.83363, 16, -41.06, -23.3, 0.16636, 2, 11, 22.31, -21.98, 0.65187, 16, -13.17, -21.88, 0.34812, 3, 11, 50.83, -22.1, 0.3172, 16, 15.33, -20.86, 0.43086, 17, -19.67, -21.08, 0.25193, 4, 11, 79.83999, -23.28, 0.10791, 16, 44.37, -20.87999, 0.35417, 17, 9.3, -19.19, 0.31919, 18, -25.21, -20.06, 0.21871, 4, 16, 74.05, -20.98, 0.16485, 17, 38.93, -17.34, 0.32776, 18, 4.09, -15.38, 0.2983, 19, -30.1, -17.15, 0.20907, 3, 17, 65.53, -17.61, 0.17522, 18, 30.6, -13.1, 0.39172, 19, -4.11, -11.42, 0.43304, 3, 18, 57.03, -15.71, 0.19717, 19, 22.42, -10.53, 0.5297, 20, -12.96, -9.8, 0.27311, 3, 19, 46.04, -13.46, 0.40991, 20, 10.83, -10.17, 0.34747, 21, -24.93, -10.51, 0.24261, 3, 19, 73.37999, -18.69, 0.19432, 20, 38.58, -12.41, 0.37176, 21, 2.89, -10.98, 0.4339, 3, 20, 64.06, -14.98, 0.16664, 21, 28.48, -11.94, 0.56755, 12, -7.52, -11.48, 0.26578, 3, 21, 54.57, -12.36, 0.52113, 12, 18.54999, -10.93, 0.36167, 13, -3.08, 24.95, 0.11717, 4, 21, 82.97, -14.35, 0.35144, 12, 47, -11.86, 0.29521, 13, -13.06, -1.67, 0.25118, 14, -46.29, 1.83, 0.10216, 1, 13, 16.36, -4.67, 1, 2, 13, 34.31, -4.36, 0.53486, 14, 0.74, -4.42999, 0.46513, 3, 13, 51.09, -4.08, 0.1461, 14, 17.49, -5.42, 0.54314, 15, -15.5, -2.75, 0.31075, 2, 14, 34.66999, -4.01, 0.40714, 15, 1.64, -4.36, 0.59285, 2, 14, 45.08, -3.15, 0.25726, 15, 12.05, -5.34, 0.74273, 2, 14, 53.98, 5.81, 0.25311, 15, 22.38, 1.93, 0.74688, 2, 14, 37.18999, 9.56, 0.4029, 15, 6.5, 8.56, 0.59709, 3, 13, 57.07, 14.16, 0.1335, 14, 24.83, 12.32, 0.54644, 15, -5.17999, 13.44, 0.32003, 4, 21, 47.09, 33.09999, 0.13131, 13, 42.64, 19.07, 0.26349, 14, 10.81, 18.31, 0.49745, 15, -17.93, 21.78, 0.10773, 4, 21, 46.45, 16.09, 0.21158, 12, 9.35999, 17.2, 0.10679, 13, 26.5, 24.56, 0.4495, 14, -4.85, 25, 0.2321, 3, 21, 46.8, 8.62, 0.4011, 12, 9.99, 9.75, 0.24543, 13, 19.24, 26.37, 0.35346, 3, 21, 39.7, 8.6, 0.5825, 12, 2.9, 9.47, 0.30791, 13, 21.25, 33.16999, 0.10958, 3, 20, 59.16, 5.88, 0.21954, 21, 22.27, 8.58, 0.57946, 12, -14.51, 8.79, 0.20099, 3, 19, 71.83, 0.47, 0.21583, 20, 34.96, 6.47, 0.32262, 21, -1.92, 7.62, 0.46154, 3, 19, 45.8, 3.95, 0.40553, 20, 8.7, 7.12, 0.38601, 21, -28.16, 6.61, 0.20844, 3, 18, 56.78, 2.13, 0.25409, 19, 19.83, 7.12, 0.53004, 20, -17.45, 7.46, 0.21584, 3, 17, 66.18, 3.45, 0.22413, 18, 29.22, 7.92, 0.34135, 19, -8.25, 9.24, 0.43451, 4, 16, 76.6, 4.5, 0.19364, 17, 39.78, 8.26, 0.28886, 18, 2.48, 10.18, 0.33579, 19, -35.05, 7.97, 0.1817, 4, 11, 82.87999, 7.08, 0.11658, 16, 46.17, 9.57, 0.35727, 17, 9.08, 11.32, 0.35745, 18, -28.35, 10.29, 0.16869, 3, 11, 54.45, 12.1, 0.35356, 16, 17.57, 13.46, 0.44494, 17, -19.70999, 13.31, 0.20148, 2, 11, 24.65, 16.69, 0.65438, 16, -12.39, 16.85, 0.34561, 2, 11, -8.38, 15.21, 0.8533, 16, -45.34, 14.04, 0.14669, 1, 11, -20.18, 4.56, 1, 2, 14, 35.88, 2.53, 0.40509, 15, 3.98, 1.86, 0.5949, 3, 13, 54.37, 5.91, 0.1392, 14, 21.51, 4.29, 0.54494, 15, -9.85, 6.11, 0.31584, 2, 13, 37.78, 7.63, 0.44938, 14, 5.1, 7.26, 0.55061, 3, 21, 65.37999, 20.69, 0.11857, 13, 20.59, 11.34, 0.75134, 14, -11.76, 12.27, 0.13007, 3, 21, 65.41, 1.81, 0.39679, 12, 24.3, 0.23, 0.28257, 13, 2.06, 14.97, 0.32062, 3, 21, 48, 0.07, 0.55395, 12, 6.93, -0.32, 0.33293, 13, 3.37, 30.47, 0.11311, 3, 20, 65.94999, -2.96, 0.19447, 21, 24.95, -1.57, 0.57382, 12, -15.99, -0.42, 0.2317 ], + "hull": 36, + "edges": [ 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 18, 20, 20, 22, 22, 24, 24, 26, 34, 36, 44, 46, 50, 52, 52, 54, 54, 56, 56, 58, 58, 60, 60, 62, 62, 64, 64, 66, 66, 68, 68, 70, 0, 70, 4, 66, 2, 68, 40, 42, 42, 44, 26, 28, 28, 30, 46, 48, 48, 50, 36, 38, 38, 40, 30, 32, 32, 34, 18, 52, 16, 54, 14, 56, 12, 58, 10, 60, 8, 62, 6, 64, 32, 72, 72, 38, 30, 74, 74, 40, 72, 74, 28, 76, 76, 42, 74, 76, 26, 78, 78, 44, 76, 78, 24, 80, 80, 46, 78, 80, 22, 82, 82, 48, 80, 82, 20, 84, 84, 50, 82, 84 ], + "width": 100, + "height": 318 + } + }, + "back leg path": { + "back leg path": { + "type": "path", + "lengths": [ 137.82, 291.73, 641.11 ], + "vertexCount": 9, + "vertices": [ 1, 23, -43.14, 0.61, 1, 1, 23, -1.30999, 0.43, 1, 1, 23, 63.07, -0.18, 1, 2, 23, 72.07, 13.65, 0.5, 24, -69.11, -16.07, 0.5, 2, 23, 135.74, 0.27, 0.5, 24, -3.96, -2.02, 0.5, 2, 23, 202.92, -15.13, 0.5, 24, 65, 14.09, 0.5, 1, 24, 71.08999, -2.03, 1, 1, 24, 149.06, -1.74, 1, 1, 23, 368.47, -1.81, 1 ] + } + }, + "body": { + "body": { + "type": "mesh", + "uvs": [ 0.35966, 0.01351, 0.26863, 0.04108, 0.26204, 0.0954, 0.34119, 0.14478, 0.39791, 0.19457, 0.40451, 0.24271, 0.38076, 0.27893, 0.35969, 0.3004, 0.34119, 0.31925, 0.34988, 0.34325, 0.35834, 0.36658, 0.36551, 0.40163, 0.37233, 0.43498, 0.38396, 0.4944, 0.3956, 0.5597, 0.39883, 0.59858, 0.40141, 0.62955, 0.40215, 0.65661, 0.34609, 0.71563, 0.27077, 0.78175, 0.22009, 0.82127, 0.17617, 0.85552, 0.13115, 0.88832, 0.08238, 0.92385, 0.00341, 0.97959, 0.18836, 0.99126, 0.32172, 0.99284, 0.46265, 0.9945, 0.61643, 0.98608, 0.71617, 0.97182, 0.6185, 0.9582, 0.48967, 0.95042, 0.39458, 0.94083, 0.27771, 0.92903, 0.23407, 0.9232, 0.26691, 0.89774, 0.3068, 0.8668, 0.34202, 0.83414, 0.38369, 0.7955, 0.45642, 0.72873, 0.52707, 0.66845, 0.56032, 0.63344, 0.57541, 0.60108, 0.59357, 0.56214, 0.61643, 0.49731, 0.63513, 0.43962, 0.64344, 0.40462, 0.7708, 0.39011, 0.84584, 0.37024, 0.90982, 0.35331, 0.9674, 0.31914, 0.97301, 0.28585, 0.96448, 0.23351, 0.8952, 0.16809, 0.79345, 0.12642, 0.75178, 0.10878, 0.71799, 0.09448, 0.66816, 0.07236, 0.61342, 0.04807, 0.47867, 0.0141, 0.49845, 0.38826, 0.66315, 0.34728, 0.67333, 0.30664, 0.8188, 0.29655, 0.8097, 0.24505, 0.72828, 0.17901, 0.68147, 0.13901, 0.59191, 0.0971, 0.3904, 0.09012, 0.53695, 0.14981, 0.57562, 0.19616, 0.64483, 0.25076, 0.79855, 0.33476, 0.6175, 0.97166, 0.4773, 0.97061, 0.23795, 0.95673, 0.15271, 0.92355, 0.14158, 0.94886, 0.23861, 0.86092, 0.51732, 0.30353, 0.50695, 0.34527, 0.50634, 0.43735, 0.50334, 0.49589, 0.51085, 0.32558, 0.50355, 0.41057, 0.19542, 0.8924, 0.36492, 0.96409 ], + "triangles": [ 2, 1, 68, 68, 1, 58, 58, 1, 59, 1, 0, 59, 69, 67, 66, 3, 68, 69, 69, 68, 67, 3, 2, 68, 66, 56, 55, 66, 67, 56, 67, 57, 56, 67, 58, 57, 67, 68, 58, 5, 70, 71, 71, 70, 65, 5, 4, 70, 70, 66, 65, 4, 69, 70, 70, 69, 66, 4, 3, 69, 65, 54, 53, 65, 66, 54, 66, 55, 54, 46, 61, 47, 46, 80, 61, 80, 83, 61, 61, 62, 72, 61, 83, 62, 80, 9, 83, 9, 8, 83, 83, 79, 62, 8, 7, 83, 83, 7, 79, 71, 6, 5, 7, 6, 79, 79, 6, 62, 6, 71, 62, 47, 72, 48, 47, 61, 72, 48, 72, 49, 49, 72, 50, 72, 63, 50, 72, 62, 63, 50, 63, 51, 62, 64, 63, 63, 52, 51, 63, 64, 52, 71, 65, 64, 64, 53, 52, 64, 65, 53, 62, 71, 64, 26, 86, 27, 27, 74, 28, 27, 86, 74, 28, 73, 29, 28, 74, 73, 73, 30, 29, 74, 31, 73, 73, 31, 30, 86, 32, 74, 74, 32, 31, 25, 75, 26, 26, 75, 86, 24, 77, 25, 25, 77, 75, 24, 23, 77, 75, 33, 86, 86, 33, 32, 75, 77, 33, 77, 34, 33, 77, 76, 34, 77, 23, 76, 23, 22, 76, 76, 85, 34, 76, 22, 85, 34, 85, 35, 85, 78, 35, 22, 21, 85, 35, 78, 36, 85, 21, 78, 37, 36, 20, 21, 20, 78, 36, 78, 20, 20, 19, 37, 37, 19, 38, 19, 18, 38, 38, 18, 39, 18, 17, 39, 39, 17, 40, 41, 40, 16, 40, 17, 16, 42, 41, 15, 41, 16, 15, 43, 42, 14, 42, 15, 14, 14, 82, 43, 43, 82, 44, 14, 13, 82, 82, 81, 44, 44, 81, 45, 82, 13, 81, 13, 12, 81, 46, 45, 84, 12, 84, 81, 45, 81, 84, 12, 11, 84, 11, 60, 84, 84, 60, 46, 60, 80, 46, 11, 10, 60, 60, 10, 80, 10, 9, 80 ], + "vertices": [ 1, 5, 30.85, 2.44, 1, 2, 4, 60.42, 12.41, 0.24858, 5, 22.32, 18.17, 0.75141, 2, 4, 39.47, 25.24, 0.44331, 5, -1.05999, 25.71, 0.55668, 3, 3, 48.02, 29.46, 0.3743, 4, 14.54, 26.45, 0.47619, 5, -25.57, 21.01, 0.1495, 3, 2, 50.36, 32.58, 0.11242, 3, 24.29, 26.79, 0.64611, 4, -8.99, 30.49, 0.24146, 3, 32, -45.21, -8.8, 0.10611, 2, 28.68, 30.39, 0.49532, 3, 2.88, 30.84, 0.39856, 3, 32, -28.91, -12.44, 0.25801, 2, 12.15, 32.79, 0.60893, 3, -12.28, 37.83, 0.13304, 3, 32, -18.5, -14.05, 0.28713, 2, 2.33999, 35.97, 0.51935, 26, -7.59, 18.95, 0.1935, 4, 32, -10.78, -18.35, 0.28478, 25, -42.03, 75.56, 0.10294, 2, -6.36, 37.31, 0.37493, 26, -10.2, 10.25, 0.23733, 3, 32, 0.92, -16.95, 0.34086, 2, -17.28, 35.45, 0.32139, 26, -8.2, -0.66, 0.33772, 4, 32, 10.64, -16.31, 0.3269, 37, -24.05, -14.89, 0.16082, 2, -27.57, 33.66, 0.14432, 26, -6.36, -11.04, 0.36794, 4, 32, 28.49, -15.62, 0.24236, 37, -9.54, -15.11, 0.27028, 38, -45.5, -19.11, 0.12131, 26, -3.64, -27.87, 0.36603, 4, 32, 41.59, -14.89, 0.2176, 37, 6.92, -15.34, 0.33285, 38, -26.85, -17.48, 0.20377, 26, -1.29999, -43.27, 0.24577, 3, 37, 33.82, -15.8, 0.47178, 38, 0, -15.85, 0.42626, 39, -31.79, -17.82, 0.10194, 3, 37, 63.38, -16.48, 0.2126, 38, 29.52, -14.21, 0.42737, 39, -2.42, -14.38, 0.36002, 3, 38, 49.78, -15.51, 0.30177, 39, 14.85, -13.08, 0.47126, 40, -21.14, -15.63, 0.22694, 3, 38, 61.09, -13.4, 0.15443, 39, 29.03, -11.64, 0.50848, 40, -3.26, -12.45, 0.33708, 2, 39, 41.23, -10.79, 0.28077, 40, 8.39999, -8.79, 0.71921, 2, 40, 36.23, -8.59, 0.56512, 41, -3.02, -8.83, 0.43487, 3, 40, 67.93, -10.06, 0.16322, 41, 28.68, -7.81, 0.53712, 42, -8.10999, -7.69, 0.29965, 3, 41, 47.76, -8.47, 0.402, 42, 10.97, -7.89, 0.4513, 33, -26.34, -6.21, 0.14668, 3, 41, 64.61, -8.06, 0.25016, 42, 27.8, -8.39999, 0.46039, 33, -12.76, -8.81, 0.28943, 4, 41, 79.12, -10.24, 0.11858, 42, 42.33, -8.03, 0.26981, 33, 4.53, -8.37, 0.48104, 34, -1.55, 35.59999, 0.13056, 2, 33, 20.84, -9.18999, 0.72799, 34, -5.37, 19.54999, 0.272, 1, 34, -11.5, -7.29, 1, 4, 33, 43.23, 16.27, 0.2746, 34, 15.1, -7.51, 0.48158, 35, -12.29, -5.54, 0.12942, 36, -41.75999, 0.94, 0.11439, 4, 33, 36.99, 33.93999, 0.18804, 34, 33.7, -4.57, 0.34252, 35, 6.53, -5.75, 0.18296, 36, -23.19, -2.18, 0.28646, 3, 34, 53.35, -1.58, 0.21646, 35, 26.4, -6.08, 0.26516, 36, -3.61, -5.59, 0.51836, 2, 35, 47.99, -1.76, 0.15752, 36, 18.37, -4.66, 0.84247, 1, 36, 33.16, -0.11, 1, 2, 35, 47.97, 10.84, 0.17387, 36, 20.31, 7.79, 0.82612, 4, 33, 9.83, 48.43, 0.17571, 34, 53.28, 18.69, 0.17038, 35, 29.73, 13.92, 0.136, 36, 2.76, 13.66, 0.5179, 4, 33, 11.45, 34.57, 0.26313, 34, 39.25999, 20.54999, 0.23037, 35, 16.20999, 18.09, 0.15679, 36, -9.93999, 19.87999, 0.3497, 4, 33, 12.4, 17.12999, 0.37056, 34, 22.1, 22.5, 0.30409, 35, -0.37, 22.87, 0.18235, 36, -25.59, 27.17, 0.14297, 3, 33, 12.34, 10.43, 0.44639, 34, 15.56, 23.91, 0.2976, 35, -6.59, 25.36, 0.256, 5, 41, 75.94999, 9.06, 0.10562, 42, 38.15, 11.08, 0.25494, 33, 1.65, 10.97, 0.33578, 34, 17.98, 34.75, 0.16322, 35, -2.38, 35.64, 0.14041, 3, 41, 62.61, 10.94, 0.26063, 42, 26.04, 10.62, 0.49791, 33, -15.14, 10.14, 0.24144, 3, 41, 47.27, 9.67, 0.40348, 42, 9.53, 10.18999, 0.4787, 33, -26.59, 11.93, 0.11781, 3, 40, 69.23, 6.97, 0.16043, 41, 28.63, 9.26, 0.53934, 42, -7.94, 9.38, 0.30019, 2, 40, 37.36, 8, 0.57647, 41, -3.21, 7.8, 0.42351, 2, 39, 45.48, 7.1, 0.29349, 40, 8.38, 9.60999, 0.7065, 3, 38, 62.84, 9, 0.15445, 39, 29.4, 10.82, 0.49324, 40, -8.12, 9.49, 0.35229, 3, 38, 52.14, 9.27, 0.30575, 39, 12.84, 11.73, 0.46742, 40, -26.12, 8.77, 0.22682, 3, 37, 66.66, 11.26, 0.21798, 38, 30.61, 13.69, 0.42844, 39, -3.05, 13.53, 0.35357, 3, 37, 37.7, 16.76, 0.48245, 38, 1.30999, 16.92, 0.41751, 39, -32.49, 14.97, 0.10002, 4, 32, 44.34, 22.11, 0.23459, 37, 11.91, 21.43, 0.43853, 38, -24.76, 19.56, 0.20679, 2, -58.28, -7.19, 0.12007, 4, 32, 28.54, 23.57, 0.31079, 37, -3.76, 23.83, 0.19157, 25, -76.76, 29.22, 0.2153, 2, -42.42, -7.45, 0.2823, 3, 32, 22.31, 41.64, 0.18196, 25, -69.83, 12.46, 0.43955, 2, -34.84, -25, 0.37848, 3, 32, 19.77, 51.42, 0.1392, 25, -59.84, 2.52, 0.47895, 2, -23.89, -35.16, 0.38184, 3, 32, 6.03, 61.53, 0.10543, 25, -52.7, -5.88, 0.51007, 2, -17.1, -43.61, 0.38449, 2, 25, -37.16, -13.13, 0.67426, 2, -1.22, -50.82, 0.32573, 1, 25, -22.09, -13.05, 1, 2, 25, 1.45, -10.49, 0.89018, 2, 37.39, -48.18, 0.10981, 3, 25, 30.4, 0.96, 0.43019, 2, 66.35, -36.72, 0.16237, 3, 19.96999, -44.2, 0.40743, 2, 3, 41.58, -34.52, 0.68164, 4, -9.43999, -33.21, 0.31834, 2, 3, 50.68, -30.61, 0.51066, 4, 0.38, -31.99, 0.48933, 3, 3, 58.06, -27.44, 0.26484, 4, 8.35, -31, 0.61474, 5, -18.04, -36.28, 0.12041, 3, 3, 69.4, -22.88, 0.17395, 4, 20.5, -29.77, 0.5644, 5, -6.52, -32.22, 0.26164, 2, 4, 33.86, -28.42, 0.29085, 5, 6.13, -27.76, 0.70914, 2, 4, 56.55, -19.37, 0.1738, 5, 26.05, -13.63, 0.82619, 5, 32, 20.79, 3.26, 0.38867, 37, -12.73, 4.03, 0.17697, 25, -69.83999, 50.18, 0.10105, 2, -36.22, 13.38, 0.1958, 26, 13.97, -19.24, 0.13748, 4, 32, 2.68, 26.81, 0.26409, 25, -50.86, 29.21, 0.2337, 2, -16.39, -8.72999, 0.34628, 26, 35.78, -0.48, 0.15592, 3, 32, -15.65, 28.57, 0.15678, 25, -33.53, 28.78, 0.29159, 2, 2.02, -9.1, 0.55161, 1, 25, -28.17, 8.37, 1, 1, 25, -5.01, 10.99, 1, 3, 25, 24.12, 24.17, 0.12051, 2, 60.06, -13.51, 0.21384, 3, 20.53, -20.16, 0.66563, 2, 3, 39.63, -17.84, 0.59512, 4, -6.67, -16.65, 0.40487, 3, 3, 60.95, -9.85999, 0.26251, 4, 16.02, -14.92, 0.55541, 5, -14.38, -18.84, 0.18206, 2, 4, 32.68, 8.3, 0.58729, 5, -3.66, 7.65, 0.4127, 2, 3, 39.52, 3.1, 0.47136, 4, -0.95, 3.49, 0.52863, 1, 3, 17.87999, 2.56, 1, 2, 2, 27.01, -3.63, 0.67245, 3, -8.35999, -1.30999, 0.32754, 3, 32, -2.63, 46, 0.10032, 25, -45.41, 10.26, 0.52611, 2, -9.64, -27.46, 0.37355, 2, 35, 47.98, 4.75, 0.16597, 36, 19.37, 1.77, 0.83402, 4, 33, 19.54999, 50.48, 0.12624, 34, 53.3, 9.5, 0.16908, 35, 28.21, 4.85, 0.24846, 36, -0.13, 4.94, 0.4562, 4, 33, 26.31, 16.82, 0.32786, 34, 18.95999, 9.25, 0.38307, 35, -5.68, 10.34, 0.15879, 36, -32.77, 15.61, 0.13026, 2, 33, 16.95999, -0.03, 0.66864, 34, 4.23, 21.71, 0.33135, 3, 33, 28.1, 2.85, 0.4826, 34, 4.91, 10.14, 0.31302, 35, -19.37999, 13.57, 0.20437, 3, 41, 63.21, -0.58, 0.21068, 42, 25.96, 0.78, 0.49386, 33, -11.01, 1.48, 0.29543, 3, 32, -14.83, 8.08, 0.24448, 25, -33.34, 51.23, 0.16324, 2, 2.58999, 13.53, 0.59226, 4, 32, 3.37, 4.96, 0.28616, 25, -51.81, 51.13, 0.16476, 2, -15.86, 13.44, 0.31891, 26, 13.85, -0.52, 0.23015, 4, 32, 46.08, 3.58, 0.24089, 37, 9.06, 3.09, 0.41151, 38, -28.46, 0.64, 0.21862, 26, 17.5, -43.07, 0.12896, 3, 37, 37.22, 1.25, 0.47744, 38, -0.08, 1.25, 0.42162, 39, -36.25, -5.25, 0.10092, 4, 32, -5.23, 6.29, 0.25594, 25, -43.1, 51.32, 0.15578, 2, -7.16, 13.62, 0.42092, 26, 14.16, 8.17, 0.16734, 4, 32, 33.03, 3.37, 0.36684, 37, -3.96, 3.6, 0.31093, 2, -45.32, 9.82, 0.17306, 26, 15.75, -30.14, 0.14914, 4, 41, 77.5, -1.16, 0.11479, 42, 40.23, 0.95, 0.26888, 33, 3.05, 0.72, 0.44972, 34, 7.66, 35.32, 0.16659, 4, 33, 22.72, 34.66999, 0.2209, 34, 37.18, 9.38, 0.26955, 35, 12.29, 7.43, 0.20636, 36, -15.46, 9.95, 0.30317 ], + "hull": 60, + "edges": [ 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 24, 26, 26, 28, 32, 34, 34, 36, 36, 38, 46, 48, 48, 50, 54, 56, 56, 58, 58, 60, 60, 62, 66, 68, 76, 78, 78, 80, 80, 82, 86, 88, 88, 90, 90, 92, 92, 94, 98, 100, 100, 102, 102, 104, 104, 106, 106, 108, 116, 118, 0, 118, 92, 120, 120, 20, 28, 86, 82, 32, 34, 80, 78, 36, 76, 38, 12, 124, 102, 126, 126, 124, 126, 128, 128, 130, 130, 132, 132, 134, 112, 134, 134, 136, 136, 4, 2, 116, 6, 138, 138, 132, 8, 140, 140, 130, 10, 142, 142, 128, 128, 104, 130, 106, 132, 108, 122, 92, 100, 144, 144, 122, 126, 144, 144, 94, 112, 114, 114, 116, 108, 110, 110, 112, 16, 18, 18, 20, 20, 22, 22, 24, 12, 14, 14, 16, 122, 124, 94, 96, 96, 98, 56, 146, 146, 60, 54, 148, 148, 62, 146, 148, 50, 150, 150, 66, 46, 152, 152, 68, 154, 152, 154, 48, 42, 156, 156, 72, 14, 158, 158, 124, 18, 160, 160, 122, 160, 120, 24, 162, 162, 90, 26, 164, 164, 88, 162, 164, 16, 166, 160, 166, 166, 158, 166, 124, 162, 168, 168, 120, 168, 22, 168, 92, 38, 40, 40, 42, 72, 74, 74, 76, 40, 74, 42, 44, 44, 46, 152, 170, 170, 156, 44, 170, 68, 70, 70, 72, 170, 70, 62, 64, 64, 66, 148, 172, 172, 150, 64, 172, 50, 52, 52, 54, 172, 52, 154, 66, 150, 154, 28, 30, 30, 32, 82, 84, 84, 86, 30, 84 ], + "width": 141, + "height": 452 + } + }, + "front arm": { + "front arm": { + "type": "mesh", + "uvs": [ 0.714, 0.00566, 0.67107, 0.08129, 0.60221, 0.15433, 0.53632, 0.21682, 0.44558, 0.28704, 0.34898, 0.35134, 0.29096, 0.3894, 0.25238, 0.41472, 0.22423, 0.4427, 0.19483, 0.47193, 0.15998, 0.50657, 0.09138, 0.59567, 0.05498, 0.70865, 0.02988, 0.81366, 0.01048, 0.94262, 0.10494, 0.98984, 0.25391, 0.9742, 0.31482, 0.88906, 0.28834, 0.82868, 0.13606, 0.74572, 0.14334, 0.71487, 0.18317, 0.62253, 0.25217, 0.5422, 0.29537, 0.50981, 0.33787, 0.47794, 0.38451, 0.45012, 0.43581, 0.41953, 0.5471, 0.36549, 0.68845, 0.29831, 0.74855, 0.35527, 0.85873, 0.38229, 0.99674, 0.37644, 0.95353, 0.33244, 0.91355, 0.29171, 0.87464, 0.25208, 0.83758, 0.21434, 0.78082, 0.12598, 0.78194, 0.06829, 0.63219, 0.23719, 0.66924, 0.15783, 0.75532, 0.20966, 0.7161, 0.11136 ], + "triangles": [ 30, 29, 33, 30, 32, 31, 40, 41, 36, 39, 41, 40, 40, 36, 35, 38, 39, 40, 28, 38, 40, 34, 28, 40, 34, 40, 35, 28, 34, 33, 29, 28, 33, 30, 33, 32, 41, 1, 0, 37, 41, 0, 36, 41, 37, 39, 1, 41, 39, 2, 1, 19, 12, 20, 13, 12, 19, 18, 15, 19, 16, 18, 17, 15, 13, 19, 15, 14, 13, 15, 18, 16, 21, 10, 22, 11, 10, 21, 20, 11, 21, 12, 11, 20, 9, 8, 23, 22, 9, 23, 10, 9, 22, 26, 5, 4, 25, 5, 26, 6, 5, 25, 24, 6, 25, 7, 6, 24, 23, 7, 24, 8, 7, 23, 38, 2, 39, 3, 2, 38, 27, 3, 38, 27, 38, 28, 4, 3, 27, 26, 4, 27 ], + "vertices": [ 1, 47, 21.66, 6.07, 1, 2, 46, 18.12999, 3.37, 0.16553, 47, 3.91, 4.23, 0.83446, 3, 27, -6.12, -15.23, 0.20965, 46, -0.04, 8.85, 0.53629, 5, 43.44, 6.81, 0.25404, 1, 27, 10.35999, -12.02, 1, 2, 27, 30.62, -10.09, 0.88821, 28, -7.63, -10.14999, 0.11178, 2, 27, 50.57, -9.68999, 0.30995, 28, 12.31, -9.60999, 0.69004, 2, 28, 24.21, -9.37, 0.86562, 29, -13.42, -6.2, 0.13437, 2, 28, 32.12, -9.21, 0.73143, 29, -5.72, -8.02, 0.26856, 2, 28, 39.34999, -7.58, 0.54007, 29, 1.68, -8.24, 0.45992, 2, 28, 46.9, -5.88, 0.29036, 29, 9.41, -8.47999, 0.70963, 2, 29, 18.58, -8.76, 0.66539, 30, -15.75, -5.12, 0.3346, 1, 30, 6.03, -8.58, 1, 2, 30, 31.42, -5.97, 0.39256, 31, 0.49, -6.36, 0.60743, 1, 31, 23.79, -9.31, 1, 1, 31, 52.37, -11.28, 1, 1, 31, 62.39, 2.71, 1, 1, 31, 58.29, 24.2, 1, 1, 31, 39.22, 32.48, 1, 1, 31, 25.99, 28.24, 1, 1, 31, 8.33, 5.63, 1, 2, 30, 28.81, 6.64, 0.48313, 31, 1.48, 6.48, 0.51686, 1, 30, 7.61, 5.9, 1, 3, 28, 51.66, 11.07, 0.10767, 29, 18.26, 6.74, 0.55899, 30, -12.34, 10, 0.33333, 2, 28, 42.18, 10.25, 0.31463, 29, 8.87, 8.31, 0.68536, 2, 28, 32.86, 9.43999, 0.59183, 29, -0.35, 9.85999, 0.40816, 2, 28, 23.72, 9.68999, 0.83035, 29, -9.13, 12.38, 0.16964, 2, 27, 52.08, 9.88, 0.2992, 28, 13.67, 9.97, 0.70079, 2, 27, 32.18, 12.59, 0.84686, 28, -6.23, 12.54, 0.15312, 1, 5, 9.42, 3.38, 1, 2, 5, -5.05, -1.59, 0.47199, 4, 29.16, -0.35, 0.528, 1, 4, 16.12999, -11.35, 1, 1, 4, 7.45, -29.43, 1, 2, 5, -8.22999, -31.56, 0.51928, 4, 19, -28.73, 0.4807, 1, 5, 1.99, -28.42, 1, 1, 5, 11.96, -25.36, 1, 1, 5, 21.44, -22.45, 1, 3, 46, 12.69, -14.54, 0.25481, 47, 2.13, -14.4, 0.32231, 5, 42.47, -19.81, 0.42286, 1, 47, 13.63, -8.89, 1, 1, 27, 3.55, 0.9, 1, 2, 46, 1.71, -0.73, 0.5001, 5, 40.06, -2.33, 0.49989, 1, 5, 25.66, -11.24, 1, 3, 46, 13.39, -4.64, 0.33234, 47, 0.86, -4.56, 0.48165, 5, 48.11, -11.65, 0.186 ], + "hull": 38, + "edges": [ 0, 2, 8, 10, 20, 22, 22, 24, 24, 26, 26, 28, 28, 30, 30, 32, 32, 34, 34, 36, 36, 38, 38, 40, 40, 42, 42, 44, 52, 54, 54, 56, 56, 58, 58, 60, 60, 62, 70, 72, 72, 74, 0, 74, 56, 76, 6, 8, 76, 6, 4, 6, 4, 78, 78, 80, 80, 70, 2, 82, 82, 72, 82, 78, 78, 76, 2, 4, 56, 80, 56, 66, 62, 64, 64, 66, 66, 68, 68, 70, 44, 46, 46, 48, 18, 20, 46, 18, 10, 12, 12, 14, 48, 50, 50, 52, 12, 50, 14, 16, 16, 18 ], + "width": 145, + "height": 221 + } + }, + "front leg path": { + "front leg path": { + "type": "path", + "lengths": [ 140.43, 297.34, 652.04 ], + "vertexCount": 9, + "vertices": [ 1, 44, -40.7, -0.41, 1, 1, 44, 1.48, -0.27, 1, 1, 44, 75.42, 0.33, 1, 2, 44, 82.92, 8.49, 0.5, 45, -58.75, -8.53, 0.5, 2, 44, 141.34, 0.52, 0.5, 45, 0.45, 0.71, 0.5, 2, 44, 208.26, -14.83, 0.5, 45, 68.83, 18.53, 0.5, 1, 45, 73.81, 1.41, 1, 1, 45, 156.57, 0.98, 1, 1, 44, 380.59, 0.76, 1 ] + } + }, + "head": { + "head": { + "type": "mesh", + "uvs": [ 0.49583, 0.01984, 0.3073, 0.05802, 0.14319, 0.17024, 0.0279, 0.36227, 0.04553, 0.57745, 0.16625, 0.73247, 0.18795, 0.84353, 0.30324, 0.96963, 0.42124, 0.91063, 0.58535, 0.94649, 0.76303, 0.93261, 0.8694, 0.78599, 0.96783, 0.65033, 0.93351, 0.55575, 0.91494, 0.50457, 0.93281, 0.4436, 0.96241, 0.34261, 0.84983, 0.16792, 0.70199, 0.06496, 0.71827, 0.40045, 0.55822, 0.46524, 0.67191, 0.56924, 0.61248, 0.74982, 0.29238, 0.552, 0.68707, 0.30096, 0.49719, 0.316, 0.38868, 0.29286, 0.30595, 0.24312, 0.32494, 0.40508, 0.4036, 0.55663, 0.63282, 0.6862, 0.75489, 0.67579, 0.72156, 0.43445, 0.60178, 0.47123, 0.67975, 0.53995, 0.86841, 0.4929 ], + "triangles": [ 7, 6, 8, 10, 9, 22, 9, 8, 22, 10, 22, 11, 22, 8, 23, 23, 8, 5, 8, 6, 5, 11, 22, 31, 22, 30, 31, 11, 31, 12, 23, 29, 22, 22, 29, 30, 5, 4, 23, 29, 20, 30, 30, 21, 31, 30, 20, 21, 31, 13, 12, 31, 14, 13, 31, 21, 14, 4, 3, 23, 21, 35, 14, 21, 34, 35, 20, 33, 21, 21, 33, 34, 23, 28, 29, 20, 29, 28, 20, 28, 25, 25, 28, 26, 23, 3, 28, 27, 3, 2, 3, 27, 28, 34, 32, 35, 34, 33, 32, 14, 35, 15, 15, 35, 19, 32, 33, 19, 33, 20, 19, 20, 24, 19, 20, 25, 24, 16, 15, 19, 19, 35, 32, 28, 27, 26, 19, 24, 16, 24, 17, 16, 18, 24, 25, 25, 26, 0, 24, 18, 17, 18, 25, 0, 27, 1, 26, 26, 1, 0, 27, 2, 1 ], + "vertices": [ 1, 48, 90.83, 8.14, 1, 1, 48, 81.69999, 22.33, 1, 1, 48, 66.16, 32, 1, 1, 48, 44.34, 34.97, 1, 1, 48, 24.14, 26.24, 1, 1, 48, 12.71, 11.09, 1, 1, 47, 17.77, 6.06, 1, 1, 47, 10.7, -8.62, 1, 1, 48, 2.94, -15.85, 1, 1, 48, 4.23, -30.53, 1, 1, 48, 10.7, -44.64, 1, 1, 48, 27.89, -48.41, 1, 1, 48, 43.79, -51.9, 1, 1, 48, 51.91, -45.89, 1, 1, 48, 56.29, -42.63, 1, 1, 48, 62.68, -42.04, 1, 1, 48, 73.26, -41.05, 1, 1, 48, 86.81, -25.91, 1, 1, 48, 92.45, -10.29, 1, 1, 48, 60.63, -22.97, 1, 1, 48, 49.77, -12.03, 1, 1, 48, 43.04, -24.87, 1, 1, 48, 23.94, -26.1, 1, 1, 48, 33.73, 6.84, 1, 1, 48, 69.3, -17.04999, 1, 1, 48, 62.36, -1.97, 1, 1, 48, 61.45, 7.7, 1, 1, 48, 63.85, 16.18, 1, 1, 48, 48.81, 9.14, 1, 1, 48, 36.5, -2.43, 1, 1, 48, 30.66, -25.62, 1, 1, 48, 35.18999, -35.29, 1, 1, 48, 57.45, -24.39, 1, 1, 48, 50.45, -15.81, 1, 1, 48, 46.09, -24.53, 1, 1, 48, 56.07, -38.41999, 1 ], + "hull": 19, + "edges": [ 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 18, 20, 32, 34, 34, 36, 0, 36, 28, 30, 30, 32, 30, 38, 38, 40, 40, 42, 42, 28, 20, 22, 22, 24, 22, 44, 44, 46, 32, 48, 48, 50, 50, 52, 52, 54, 54, 56, 56, 58, 58, 60, 60, 62, 24, 26, 26, 28, 62, 26, 64, 66, 66, 40, 66, 68, 68, 70, 70, 64 ], + "width": 87, + "height": 102 + } + } + } +}, +"animations": { + "sneak": { + "bones": { + "hip": { + "rotate": [ + { "time": 0, "angle": 30.27, "curve": "stepped" }, + { "time": 0.1666, "angle": 30.27 }, + { "time": 0.3333, "angle": -31.29 }, + { "time": 0.5333, "angle": -44.75 }, + { "time": 0.7333, "angle": -25.49 }, + { "time": 0.9, "angle": -9.45 }, + { "time": 1.0666, "angle": 30.27 }, + { "time": 1.2333, "angle": -10.1 }, + { "time": 1.6333, "angle": -41.47 }, + { "time": 1.8, "angle": 30.27 } + ], + "translate": [ + { "time": 0, "x": -57.43, "y": -40.92 }, + { + "time": 0.1666, + "x": -16.15, + "y": -96.56, + "curve": [ 0.245, 0, 0.637, 0.55 ] + }, + { + "time": 0.2666, + "x": 85.99, + "y": -143.07, + "curve": [ 0.381, 0.54, 0.742, 1 ] + }, + { "time": 0.3333, "x": 145.44, "y": -159.27 }, + { "time": 0.4333, "x": 344.29, "y": -134.94 }, + { "time": 0.5333, "x": 543.13, "y": -81.1 }, + { "time": 0.7333, "x": 569.68, "y": -62.13 }, + { "time": 0.9, "x": 591.8, "y": -46.32 }, + { + "time": 1.0666, + "x": 653.14, + "y": -96.6, + "curve": [ 0.381, 0.54, 0.742, 1 ] + }, + { "time": 1.1333, "x": 710.16, "y": -143.1 }, + { "time": 1.2333, "x": 795.7, "y": -159.3 }, + { "time": 1.3333, "x": 986.94, "y": -153.35 }, + { "time": 1.4333, "x": 1178.19, "y": -111.88 }, + { "time": 1.6333, "x": 1195.1, "y": -62.1 }, + { "time": 1.8, "x": 1246.53, "y": -40.92 } + ] + }, + "front leg IK target": { + "translate": [ + { "time": 0, "x": -50.42, "y": 44.61 }, + { "time": 0.1666, "x": -50.42, "y": 46.55 }, + { "time": 0.3333, "x": -50.42, "y": 47 }, + { + "time": 0.5333, + "x": -26.42, + "y": 50.21, + "curve": [ 0.532, 0, 0.75, 1 ] + }, + { "time": 0.7333, "x": 566.43, "y": 107.27 }, + { "time": 0.9, "x": 1215.89, "y": 68.21 }, + { "time": 1.0666, "x": 1235.47, "y": 15.8 }, + { "time": 1.2333, "x": 1235.47, "y": 0.97 }, + { "time": 1.5666, "x": 1230.15, "y": 3.76 }, + { "time": 1.7, "x": 1244, "y": 26.76 }, + { "time": 1.8, "x": 1253.53, "y": 44.61 } + ] + }, + "front foot 1": { + "rotate": [ + { "time": 0, "angle": -48.38, "curve": "stepped" }, + { "time": 0.3333, "angle": -48.38 }, + { "time": 0.7, "angle": -121.34 }, + { "time": 0.8, "angle": -80.19 }, + { "time": 0.9, "angle": 45.59 }, + { "time": 1.0666, "angle": 2.1 }, + { "time": 1.2333, "angle": 4.65 }, + { "time": 1.5666, "angle": 5.66 }, + { "time": 1.8, "angle": -48.38 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.6, "x": 1, "y": 1 }, + { "time": 0.6333, "x": 0.954, "y": 1 }, + { "time": 0.7666, "x": 0.82, "y": 1 }, + { "time": 0.9, "x": 1, "y": 1 }, + { "time": 1.0666, "x": 0.851, "y": 1 }, + { "time": 1.3666, "x": 1, "y": 1 } + ] + }, + "front foot 3": { + "rotate": [ + { "time": 0, "angle": 36.32 }, + { "time": 0.3333, "angle": 28.46 }, + { "time": 0.5, "angle": 34.84 }, + { "time": 0.5333, "angle": 30.32 }, + { "time": 0.5666, "angle": 61.67 }, + { "time": 0.7, "angle": -19.47 }, + { "time": 0.9, "angle": -0.12 }, + { "time": 1.0666, "angle": -7.21 }, + { "time": 1.2333, "angle": -11.34 }, + { "time": 1.5666, "angle": -11.23 }, + { "time": 1.8, "angle": 36.32 } + ] + }, + "back leg IK target": { + "translate": [ + { "time": 0, "x": 516.79, "y": 86.68 }, + { "time": 0.1666, "x": 523.71, "y": 16.63 }, + { "time": 0.3333, "x": 523.03, "y": -5, "curve": "stepped" }, + { "time": 0.7, "x": 523.03, "y": -5 }, + { "time": 0.9, "x": 551.31, "y": 41.86 }, + { "time": 1.0666, "x": 554.24, "y": 44.45 }, + { "time": 1.1333, "x": 555.44, "y": 44.74 }, + { "time": 1.2, "x": 556.6, "y": 46.19, "curve": "stepped" }, + { "time": 1.4333, "x": 556.6, "y": 46.19 }, + { "time": 1.5, "x": 746.96, "y": 74.82 }, + { "time": 1.6333, "x": 1127.68, "y": 103.61 }, + { "time": 1.8, "x": 1820.75, "y": 86.68 } + ] + }, + "back foot 1": { + "rotate": [ + { "time": 0, "angle": 74.17 }, + { "time": 0.1666, "angle": -17.01 }, + { "time": 0.3333, "angle": 5.05 }, + { "time": 0.7, "angle": 3.74 }, + { "time": 0.9, "angle": -65.56 }, + { "time": 1.6333, "angle": -92.52 }, + { "time": 1.8, "angle": 74.17 } + ], + "scale": [ + { "time": 0, "x": 0.824, "y": 1 }, + { "time": 0.1666, "x": 0.754, "y": 1 }, + { "time": 0.3333, "x": 0.589, "y": 1 }, + { "time": 0.5666, "x": 0.909, "y": 1 }, + { "time": 0.9, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.4, "x": 1, "y": 1 }, + { "time": 1.5, "x": 0.844, "y": 1 }, + { "time": 1.8, "x": 0.824, "y": 1 } + ] + }, + "back foot 2": { + "rotate": [ + { "time": 0, "angle": 8.13 }, + { "time": 0.1666, "angle": -3.21 }, + { "time": 0.7, "angle": -1.14 }, + { "time": 0.9, "angle": 34.12 }, + { "time": 1.4333, "angle": 46.68 }, + { "time": 1.5333, "angle": -15.6 }, + { "time": 1.6333, "angle": -11.91 }, + { "time": 1.8, "angle": 8.13 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 }, + { "time": 0.1666, "x": 0.835, "y": 1 }, + { "time": 0.3333, "x": 1, "y": 1 } + ] + }, + "front arm 1": { + "rotate": [ + { "time": 0, "angle": -39.71 }, + { "time": 0.1666, "angle": -37.29 }, + { "time": 0.3333, "angle": 30.66 }, + { + "time": 0.9, + "angle": -53.28, + "curve": [ 0.708, 0.01, 0.75, 1 ] + }, + { "time": 1.2333, "angle": 36 }, + { "time": 1.8, "angle": -39.71 } + ] + }, + "neck 1": { + "rotate": [ + { "time": 0, "angle": 21.95, "curve": "stepped" }, + { "time": 0.1666, "angle": 21.95 }, + { "time": 0.2666, "angle": 30.6 }, + { "time": 0.3333, "angle": 36.37 }, + { "time": 0.7333, "angle": 33.6 }, + { "time": 1.1666, "angle": 23.95 }, + { "time": 1.2333, "angle": 36.37 }, + { "time": 1.6333, "angle": 41.16 }, + { "time": 1.8, "angle": 21.95 } + ] + }, + "neck 2": { + "rotate": [ + { "time": 0, "angle": -22.93 }, + { "time": 0.1666, "angle": -23.95 }, + { "time": 0.2666, "angle": 8.84 }, + { "time": 0.3333, "angle": 30.71 }, + { "time": 0.7333, "angle": -3.36 }, + { "time": 0.9, "angle": -17.57 }, + { "time": 1.1666, "angle": 2.19 }, + { "time": 1.2333, "angle": 15.25 }, + { "time": 1.6333, "angle": 4.41 }, + { "time": 1.8, "angle": -22.93 } + ] + }, + "head": { + "rotate": [ + { "time": 0, "angle": -22.93 }, + { "time": 0.1666, "angle": -13.03 }, + { "time": 0.2666, "angle": 2.64 }, + { "time": 0.3333, "angle": 13.1 }, + { "time": 0.5, "angle": 13.1 }, + { "time": 0.7333, "angle": -18.9 }, + { "time": 0.9, "angle": -41.77 }, + { "time": 1.1666, "angle": -4 }, + { "time": 1.2333, "angle": -2.35 }, + { "time": 1.6333, "angle": -22.89 }, + { "time": 1.8, "angle": -22.93 } + ] + }, + "back arm 1": { + "rotate": [ + { "time": 0, "angle": -17.23 }, + { "time": 0.1666, "angle": -18.65 }, + { "time": 0.3333, "angle": 324.98 }, + { "time": 0.5666, "angle": -6.41 }, + { "time": 0.9, "angle": -14.83 }, + { "time": 1.0666, "angle": -16.9 }, + { "time": 1.2333, "angle": 1.49 }, + { "time": 1.4, "angle": 2.56 }, + { "time": 1.8, "angle": -17.23 } + ], + "translate": [ + { "time": 0, "x": -14.25, "y": -6.6 } + ] + }, + "back leg IK 1": { + "scale": [ + { "time": 0, "x": 2.186, "y": 1 }, + { "time": 0.1666, "x": 2.228, "y": 1 }, + { "time": 0.3333, "x": 1.532, "y": 1 }, + { "time": 0.4333, "x": 0.946, "y": 1 }, + { "time": 0.5333, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 }, + { "time": 1.1333, "x": 0.892, "y": 1 }, + { "time": 1.2333, "x": 0.956, "y": 1 }, + { "time": 1.4333, "x": 2.315, "y": 1 }, + { "time": 1.6333, "x": 0.774, "y": 1 }, + { "time": 1.8, "x": 2.186, "y": 1 } + ] + }, + "front leg 1": { + "scale": [ + { "time": 0, "x": 1, "y": 1.117 } + ] + }, + "back leg 1": { + "scale": [ + { "time": 0, "x": 1, "y": 1.038 } + ] + }, + "front leg IK 1": { + "scale": [ + { "time": 0, "x": 1, "y": 1 }, + { "time": 0.2666, "x": 0.858, "y": 1 }, + { "time": 0.3333, "x": 0.972, "y": 1 }, + { + "time": 0.5333, + "x": 2.356, + "y": 1, + "curve": [ 0.532, 0, 0.75, 1 ] + }, + { "time": 0.7, "x": 1, "y": 1 }, + { "time": 0.9, "x": 2.248, "y": 1 }, + { "time": 1.0666, "x": 2.002, "y": 1 }, + { "time": 1.2333, "x": 1.495, "y": 1 }, + { + "time": 1.3, + "x": 1.047, + "y": 1, + "curve": [ 0.339, 0.58, 0.764, 1 ] + }, + { "time": 1.4333, "x": 0.779, "y": 0.762 }, + { "time": 1.8, "x": 1, "y": 1 } + ] + }, + "front leg IK 2": { + "scale": [ + { "time": 0, "x": 1, "y": 1 } + ] + }, + "front arm 3": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.1666, "angle": 17.37 }, + { "time": 0.3333, "angle": 31.94 }, + { + "time": 0.9, + "angle": 4.76, + "curve": [ 0.708, 0.01, 0.75, 1 ] + }, + { "time": 1.2333, "angle": 39.96 }, + { "time": 1.8, "angle": 0 } + ] + }, + "spine 2": { + "rotate": [ + { "time": 0, "angle": -3.49 }, + { "time": 0.2666, "angle": -11.57 }, + { "time": 0.3333, "angle": -9.02 }, + { "time": 0.5, "angle": -2.65 }, + { "time": 0.7333, "angle": -5.78 }, + { "time": 1.1666, "angle": -11.57 }, + { "time": 1.2333, "angle": -6.69 }, + { "time": 1.6333, "angle": -2.5 }, + { "time": 1.8, "angle": -3.49 } + ] + }, + "spine 3": { + "rotate": [ + { "time": 0, "angle": -20.41 }, + { "time": 0.2666, "angle": -11.57 }, + { "time": 0.3333, "angle": -9.02 }, + { "time": 0.5, "angle": -2.65 }, + { "time": 0.7333, "angle": -10.53 }, + { "time": 0.9, "angle": -16.16 }, + { "time": 1.1666, "angle": -11.57 }, + { "time": 1.2333, "angle": -9.02 }, + { "time": 1.6333, "angle": -7.26 }, + { "time": 1.8, "angle": -20.41 } + ] + }, + "back arm 3": { + "rotate": [ + { "time": 0, "angle": 26.23 }, + { "time": 0.1666, "angle": 53.14 }, + { "time": 0.3333, "angle": 116.25 }, + { "time": 0.5666, "angle": 35.72 }, + { "time": 0.9, "angle": 39.32 }, + { "time": 1.0666, "angle": 41.19 }, + { "time": 1.2333, "angle": 78.09 }, + { "time": 1.4, "angle": 36.16 }, + { "time": 1.8, "angle": 26.23 } + ] + }, + "back foot 3": { + "rotate": [ + { "time": 0, "angle": 11.35 }, + { "time": 0.7, "angle": -4.24 }, + { "time": 0.9, "angle": 25.48, "curve": "stepped" }, + { "time": 1.4333, "angle": 25.48 }, + { "time": 1.5333, "angle": -30.51 }, + { "time": 1.6333, "angle": -20.54 }, + { "time": 1.8, "angle": 11.35 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 }, + { "time": 0.1666, "x": 0.835, "y": 1 }, + { "time": 0.3333, "x": 1, "y": 1 } + ] + }, + "spine 1": { + "rotate": [ + { "time": 0, "angle": 10.81 }, + { "time": 0.2666, "angle": -28.69 }, + { "time": 0.3333, "angle": -24.32 }, + { "time": 0.5, "angle": -13.37 }, + { "time": 0.7333, "angle": 21.61 }, + { "time": 0.9, "angle": 46.61 }, + { "time": 1.1666, "angle": -28.69 }, + { "time": 1.2333, "angle": -43.33 }, + { "time": 1.6333, "angle": 24.89 }, + { "time": 1.8, "angle": 10.81 } + ] + }, + "spine 4": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.2666, "angle": -2.8 }, + { "time": 0.3333, "angle": -0.82 }, + { "time": 0.5, "angle": 4.13 }, + { "time": 0.7333, "angle": -3.74 }, + { "time": 0.9, "angle": -9.37 }, + { "time": 1.1666, "angle": -9.02 }, + { "time": 1.2333, "angle": -0.82 }, + { "time": 1.6333, "angle": 3.81 }, + { "time": 1.8, "angle": 0 } + ] + }, + "front foot 2": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.2666, "angle": -1.24 }, + { "time": 0.3333, "angle": -0.2 }, + { "time": 0.5, "angle": 22.72 }, + { "time": 0.5333, "angle": 26.87 }, + { "time": 0.7, "angle": -39.25 }, + { "time": 0.9, "angle": 11.26 }, + { "time": 1.0666, "angle": -18.17 }, + { "time": 1.2333, "angle": -2.64 }, + { "time": 1.5666, "angle": -5.84 }, + { "time": 1.8, "angle": 0 } + ] + }, + "belly": { + "translate": [ + { "time": 0, "x": 3.65, "y": -3.77 }, + { "time": 0.2666, "x": 13.82, "y": -3.82 }, + { "time": 0.6333, "x": -4.11, "y": -3.89 }, + { "time": 0.7666, "x": 10.21, "y": -2.91 }, + { "time": 0.8666, "x": 10.3, "y": -7.38 }, + { "time": 1.1, "x": -0.44, "y": -1.45 }, + { "time": 1.2333, "x": 12.37, "y": 2.32 }, + { "time": 1.3666, "x": 11.51, "y": 5.52 }, + { "time": 1.8, "x": 0, "y": 0 } + ] + }, + "butt": { + "translate": [ + { "time": 0, "x": 0, "y": 0 }, + { "time": 0.7666, "x": 9.88, "y": -25.41 }, + { "time": 0.8333, "x": 15.89, "y": -41.88 }, + { "time": 1.2333, "x": -12.49, "y": -32.99 }, + { "time": 1.8, "x": 0, "y": 0 } + ] + } + }, + "deform": { + "default": { + "back leg": { + "back leg": [ + { "time": 0.3 }, + { + "time": 0.3333, + "offset": 68, + "vertices": [ -1.72897, 2.75445, -1.52529, 2.94189, 0.0625, 3.6552, 0.01776, 3.65397, 0, 0, 0, 0, 0, 0, 0.0625, 3.6552, 0.01776, 3.65397, 0.90136, 3.54112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.98724, -1.57397, -0.03338, -2.08873, -0.0108, -2.08799, -0.51434, -2.02362, 0.98724, -1.57397, 0.87167, -1.68002, -0.03338, -2.08873, -0.0108, -2.08799 ] + }, + { "time": 0.4666, "curve": "stepped" }, + { "time": 1.3333 }, + { + "time": 1.4333, + "offset": 110, + "vertices": [ 2.52801, 0.00428, -0.03569, -4.90118, -3.71691, -3.19396, -4.88018, -0.43807, 5.17279, -0.0625, 5.1499, -0.47689, -0.07238, -10.06842, -7.6351, -6.56073, 6.64205, -0.09958, 6.61151, -0.62642, -0.09275, -12.93914, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.01242, -1.65533, -1.25543, -1.0787, 0.86096, 0.02682, -0.01242, -1.65533, -1.25543, -1.0787 ] + }, + { "time": 1.5 } + ] + }, + "back leg path": { + "back leg path": [ + { "time": 1.4333 }, + { + "time": 1.5, + "vertices": [ 4.67718, -35.44354, 0, 0, -11.37146, 49.53738, -20.9989, -109.72336, 65.45837, -90.53627, -9.56652, -24.74755, 11.45202, -23.93551, -19.0719, 47.32281, -47.53955, 18.58409, 34.69244, -51.5341, 0, 0, 13.30163, -100.17206 ] + }, + { + "time": 1.5666, + "vertices": [ -0.9635, -22.43963, 0, 0, -13.80389, 27.61459, -41.00647, -55.1597, 7.62652, -96.25755, -24.12603, -24.11285, 7.19531, -37.8742, -31.47302, 7.7796, -12.34545, -3.32328, 26.55981, -38.73887, 0, 0, -13.62085, -280.84912 ] + }, + { "time": 1.6666 } + ] + }, + "body": { + "body": [ + { "time": 0 }, + { + "time": 0.3333, + "offset": 164, + "vertices": [ -0.01179, 0.02892, 0.00916, 0.0298, 0, 0, 1.17781, 0.89835, 1.48062, -0.04942, -6.68858, -1.30628, 4.38937, 4.03925, 4.59583, 3.27733, 5.6365, -0.11034, -4.92264, -0.8036, 4.54262, 1.06504, 3.29334, 0.58413, 2.94213, -1.40271, -4.28855, -0.56444, 5.07102, -0.21189, 2.9589, -0.75665, 1.83513, -2.22983, -4.31061, 0.62609, 6.11537, -0.87568, 3.79229, -1.67126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.17403, 0.22007, 0.27403, 0.06015 ] + }, + { + "time": 0.5333, + "offset": 164, + "vertices": [ -0.01886, 0.04627, 0.01467, 0.04768, 0, 0, 1.88449, 1.43737, 2.369, -0.07907, 1.46056, -1.33222, -0.75053, -3.73339, -2.82319, -2.55492, -3.80252, -0.19385, 2.81923, -1.5031, -0.33162, -6.7565, -4.28408, -5.23484, -6.6292, -1.34549, 3.83378, -1.12044, 0.51381, -8.79961, -4.81917, -7.38011, -8.40039, -2.66888, 3.83378, -1.12044, 0.51381, -8.79961, -4.81917, -7.38011, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.27845, 0.35211, 0.43846, 0.09625 ] + }, + { + "time": 0.6333, + "offset": 170, + "vertices": [ -2.09907, 0.0496, -1.943, 1.46153, 1.74966, 0.25744, 0.37649, -3.44555, -2.34342, -2.73068, -3.66285, -0.53692, 0, 0, 0, 0, 0, 0, 0, 0, 1.91689, -0.56022, 0.2569, -4.3998, -2.40958, -3.69005, -4.2002, -1.33444, 1.91689, -0.56022, 0.2569, -4.3998, -2.40958, -3.69005, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.66468, 1.2535, 0.05176, 1.41789 ] + }, + { "time": 0.7333 }, + { + "time": 0.7666, + "offset": 264, + "vertices": [ -2.27499, -1.60417, -2.23925, -1.6137, -2.2196, -1.74293, -1.80918, 2.86346, -1.11117, 2.36199, -1.14221, 2.359, 2.63101, 1.41101, 2.63215, 1.41741, -0.81469, 8.46568, 9.4562, 1.07873, 9.45622, 1.08001, -1.00012, 6.23983, 6.96737, 1.29986, 6.9674, 1.30218, -0.68823, 4.24005, 4.7344, 0.89532, 4.73448, 0.89593, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.05484, 2.78092, 0.01666, 2.78222, 3.10775, -0.05572, 3.10798, -0.05426, -1.17971, 2.87597, -0.99005, 3.55937, 3.97198, 1.27319, 3.97207, 1.27423, -2.74237, 3.14401 ] + }, + { "time": 0.8333, "curve": "stepped" }, + { "time": 1.0666 }, + { + "time": 1.3333, + "offset": 142, + "vertices": [ 4.0227, -1.7984, 0.00683, -4.47886, -0.46118, -4.45536, -0.27441, -4.47041, 4.0227, -1.7984, 0.00683, -4.47886, -0.46118, -4.45536, -0.27441, -4.47041, 0.00683, -4.47886, -0.46118, -4.45536, -0.27441, -4.47041, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4.0227, -1.7984, 0.00683, -4.47886, -0.46118, -4.45536, -0.27441, -4.47041, 4.0227, -1.7984, 0.00683, -4.47886, -0.46118, -4.45536, -0.27441, -4.47041, 4.0227, -1.7984, 0.00683, -4.47886, -0.46118, -4.45536, -0.27441, -4.47041, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4.0227, -1.7984, 0.00683, -4.47886, -0.46118, -4.45536, -0.27441, -4.47041, 4.0227, -1.7984, 0.00683, -4.47886, -0.46118, -4.45536, -0.27441, -4.47041, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4.0227, -1.7984, 0.00683, -4.47886, -0.46118, -4.45536, -0.27441, -4.47041 ] + }, + { "time": 1.4333 } + ] + }, + "front leg path": { + "front leg path": [ + { "time": 0.5666 }, + { + "time": 0.6333, + "vertices": [ 0.16365, -9.90768, 0, 0, -1.90419, 16.99049, 16.55858, -93.6721, 21.4361, -76.03695, -0.72391, -31.37989, 8.21379, -30.29725, -24.90732, 16.177, -28.83566, 5.62575, 82.90021, -63.82897, 0, 0, -39.50021, -13.99932 ] + }, + { + "time": 0.7, + "vertices": [ 0.20397, -12.34891, 0, 0, -2.37338, 21.17691, 20.63858, -116.75269, 26.71791, -94.77228, -0.90228, -39.11182, 10.23765, -37.76242, -31.04443, 20.16297, -35.9407, 7.01193, 22.68159, 24.72715, 0, 0, -292.39255, -342.79443 ] + }, + { "time": 0.8 } + ] + } + } + } + } +} +} \ No newline at end of file diff --git a/spine-love/data/stretchyman.png b/spine-love/data/stretchyman.png new file mode 100644 index 000000000..106a42a67 Binary files /dev/null and b/spine-love/data/stretchyman.png differ diff --git a/spine-love/data/tank.atlas b/spine-love/data/tank.atlas new file mode 100644 index 000000000..115f09479 --- /dev/null +++ b/spine-love/data/tank.atlas @@ -0,0 +1,125 @@ + +tank.png +size: 1024,512 +format: RGBA8888 +filter: Linear,Linear +repeat: none +antenna + rotate: true + xy: 650, 346 + size: 11, 152 + orig: 11, 152 + offset: 0, 0 + index: -1 +cannon + rotate: false + xy: 2, 49 + size: 466, 29 + orig: 466, 29 + offset: 0, 0 + index: -1 +cannonConnector + rotate: true + xy: 843, 231 + size: 56, 68 + orig: 56, 68 + offset: 0, 0 + index: -1 +guntower + rotate: false + xy: 650, 359 + size: 365, 145 + orig: 365, 145 + offset: 0, 0 + index: -1 +machinegun + rotate: false + xy: 2, 18 + size: 166, 29 + orig: 166, 29 + offset: 0, 0 + index: -1 +machinegun-mount + rotate: true + xy: 647, 193 + size: 36, 48 + orig: 36, 48 + offset: 0, 0 + index: -1 +rock + rotate: false + xy: 470, 50 + size: 126, 28 + orig: 126, 28 + offset: 0, 0 + index: -1 +tankBottom + rotate: false + xy: 2, 193 + size: 643, 138 + orig: 643, 138 + offset: 0, 0 + index: -1 +tankBottom-shadow + rotate: false + xy: 2, 333 + size: 646, 171 + orig: 646, 171 + offset: 0, 0 + index: -1 +tankTop + rotate: false + xy: 2, 80 + size: 704, 111 + orig: 704, 111 + offset: 0, 0 + index: -1 +tread + rotate: false + xy: 647, 231 + size: 48, 15 + orig: 48, 15 + offset: 0, 0 + index: -1 +tread-inside + rotate: false + xy: 2, 2 + size: 13, 14 + orig: 13, 14 + offset: 0, 0 + index: -1 +wheel-big + rotate: false + xy: 650, 248 + size: 96, 96 + orig: 96, 96 + offset: 0, 0 + index: -1 +wheel-big-overlay + rotate: false + xy: 748, 251 + size: 93, 93 + orig: 93, 93 + offset: 0, 0 + index: -1 +wheel-mid + rotate: false + xy: 843, 289 + size: 68, 68 + orig: 68, 68 + offset: 0, 0 + index: -1 +wheel-mid-overlay + rotate: false + xy: 913, 289 + size: 68, 68 + orig: 68, 68 + offset: 0, 0 + index: -1 +wheel-small + rotate: false + xy: 913, 251 + size: 36, 36 + orig: 36, 36 + offset: 0, 0 + index: -1 diff --git a/spine-love/data/tank.json b/spine-love/data/tank.json new file mode 100644 index 000000000..cab50642b --- /dev/null +++ b/spine-love/data/tank.json @@ -0,0 +1,1900 @@ +{ +"skeleton": { "hash": "6mxwgn4gKXrDy2eixknadUxKY1c", "spine": "3.4.02", "width": 1914.53, "height": 964.05, "images": "./images/" }, +"bones": [ + { "name": "root" }, + { "name": "tankRoot", "parent": "root", "y": 200 }, + { "name": "tankTreads", "parent": "tankRoot" }, + { "name": "tankBody", "parent": "tankTreads", "y": 10 }, + { "name": "guntower", "parent": "tankBody", "x": -21.72, "y": 245.47 }, + { "name": "antennaRoot", "parent": "guntower", "x": 164.6, "y": 202.52 }, + { "name": "antenna1", "parent": "antennaRoot", "length": 40, "rotation": 90, "y": 39.99, "color": "ffee00ff" }, + { "name": "antenna2", "parent": "antenna1", "length": 42, "x": 42, "color": "ffee00ff" }, + { "name": "antenna3", "parent": "antenna2", "length": 42, "x": 42, "color": "ffee00ff" }, + { "name": "antenna4", "parent": "antenna3", "length": 42, "x": 42, "color": "ffee00ff" }, + { "name": "antenna5", "parent": "antenna4", "length": 42, "x": 42, "color": "ffee00ff" }, + { "name": "antenna6", "parent": "antenna5", "length": 42, "x": 42, "color": "ffee00ff" }, + { "name": "cannonConnector", "parent": "guntower", "x": -235.04, "y": 96.07 }, + { "name": "cannonTarget", "parent": "tankRoot", "x": -1486.66, "y": 351.82, "color": "ff3f00ff" }, + { "name": "cannon", "parent": "cannonConnector", "length": 946.68, "rotation": 180, "color": "ff4000ff" }, + { "name": "cannonTip", "parent": "cannon", "x": 946.68, "color": "ff4000ff" }, + { "name": "machineGunTarget", "parent": "tankRoot", "x": -1474, "y": 559.42, "color": "ff3f00ff" }, + { + "name": "machinegun-mount", + "parent": "guntower", + "length": 90.97, + "rotation": 90, + "x": -123.72, + "y": 218.32, + "color": "15ff00ff" + }, + { + "name": "machinegun", + "parent": "machinegun-mount", + "length": 208.94, + "rotation": 90, + "x": 91.52, + "y": -1.03, + "color": "15ff00ff" + }, + { "name": "machinegun-tip", "parent": "machinegun", "x": 210.42, "y": -12.2 }, + { "name": "rock", "parent": "root", "x": -656.45 }, + { + "name": "tread", + "parent": "tankRoot", + "length": 82, + "rotation": 180, + "x": -22.89, + "y": 213.85, + "scaleX": 0.993, + "color": "e64344ff" + }, + { "name": "tread2", "parent": "tread", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread3", "parent": "tread2", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread4", "parent": "tread3", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread5", "parent": "tread4", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread6", "parent": "tread5", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread7", "parent": "tread6", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread8", "parent": "tread7", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread9", "parent": "tread8", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread10", "parent": "tread9", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread11", "parent": "tread10", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread12", "parent": "tread11", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread13", "parent": "tread12", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread14", "parent": "tread13", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread15", "parent": "tread14", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread16", "parent": "tread15", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread17", "parent": "tread16", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread18", "parent": "tread17", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread19", "parent": "tread18", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread20", "parent": "tread19", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread21", "parent": "tread20", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread22", "parent": "tread21", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread23", "parent": "tread22", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread24", "parent": "tread23", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread25", "parent": "tread24", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread26", "parent": "tread25", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread27", "parent": "tread26", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread28", "parent": "tread27", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread29", "parent": "tread28", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread30", "parent": "tread29", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread31", "parent": "tread30", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread32", "parent": "tread31", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread33", "parent": "tread32", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread34", "parent": "tread33", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread35", "parent": "tread34", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread36", "parent": "tread35", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "wheel-midCenter", "parent": "tankRoot", "y": -114.56 }, + { "name": "treadCollider1", "parent": "wheel-midCenter", "x": -329.57, "y": -85.44, "color": "ff00fbff" }, + { "name": "treadCollider2", "parent": "wheel-midCenter", "x": -165.95, "y": -85.44, "color": "ff00fbff" }, + { "name": "treadCollider3", "parent": "wheel-midCenter", "y": -85.44, "color": "ff00fbff" }, + { "name": "treadCollider4", "parent": "wheel-midCenter", "x": 163.56, "y": -85.44, "color": "ff00fbff" }, + { "name": "treadCollider5", "parent": "wheel-midCenter", "x": 329.12, "y": -85.44, "color": "ff00fbff" }, + { "name": "treadGravity1", "parent": "tankRoot", "rotation": 180, "x": -175.35, "y": 109.99, "color": "ff00fbff" }, + { "name": "treadGravity2", "parent": "tankRoot", "rotation": 180, "x": 177.88, "y": 105.45, "color": "ff00fbff" }, + { "name": "wheel-bigRoot1", "parent": "tankTreads", "x": -549.59, "y": 14.39, "color": "abe323ff" }, + { "name": "wheel-big1", "parent": "wheel-bigRoot1", "x": -0.02, "color": "abe323ff" }, + { "name": "wheel-bigRoot2", "parent": "tankTreads", "x": 547.33, "y": 14.39 }, + { "name": "wheel-big2", "parent": "wheel-bigRoot2" }, + { "name": "wheel-midRoot1", "parent": "wheel-midCenter", "x": -410.57, "color": "abe323ff" }, + { "name": "wheel-mid1", "parent": "wheel-midRoot1", "color": "abe323ff" }, + { "name": "wheel-midRoot2", "parent": "wheel-midCenter", "x": -246.95 }, + { "name": "wheel-mid2", "parent": "wheel-midRoot2" }, + { "name": "wheel-midRoot3", "parent": "wheel-midCenter", "x": -82.72 }, + { "name": "wheel-mid3", "parent": "wheel-midRoot3" }, + { "name": "wheel-midRoot4", "parent": "wheel-midCenter", "x": 80.89 }, + { "name": "wheel-mid4", "parent": "wheel-midRoot4" }, + { "name": "wheel-midRoot5", "parent": "wheel-midCenter", "x": 244.51 }, + { "name": "wheel-mid5", "parent": "wheel-midRoot5" }, + { "name": "wheel-midRoot6", "parent": "wheel-midCenter", "x": 408.73 }, + { "name": "wheel-mid6", "parent": "wheel-midRoot6" }, + { "name": "wheel-smallRoot1", "parent": "tankTreads", "x": -337.38, "y": 109.43 }, + { "name": "wheel-small1", "parent": "wheel-smallRoot1", "color": "abe323ff" }, + { "name": "wheel-smallRoot2", "parent": "tankTreads", "x": 0.08, "y": 109.43 }, + { "name": "wheel-small2", "parent": "wheel-smallRoot2" }, + { "name": "wheel-smallRoot3", "parent": "tankTreads", "x": 334.68, "y": 109.43 }, + { "name": "wheel-small3", "parent": "wheel-smallRoot3" } +], +"slots": [ + { "name": "tankBody-shadow", "bone": "tankBody", "color": "ffffffb9", "attachment": "tankBottom-shadow" }, + { "name": "bottom", "bone": "tankBody", "attachment": "tankBottom" }, + { "name": "tread-inside1", "bone": "tread", "attachment": "tread-inside" }, + { "name": "tread-inside53", "bone": "tread27", "attachment": "tread-inside" }, + { "name": "tread-inside27", "bone": "tread14", "attachment": "tread-inside" }, + { "name": "tread-inside3", "bone": "tread2", "attachment": "tread-inside" }, + { "name": "tread-inside55", "bone": "tread28", "attachment": "tread-inside" }, + { "name": "tread-inside29", "bone": "tread15", "attachment": "tread-inside" }, + { "name": "tread-inside5", "bone": "tread3", "attachment": "tread-inside" }, + { "name": "tread-inside57", "bone": "tread29", "attachment": "tread-inside" }, + { "name": "tread-inside31", "bone": "tread16", "attachment": "tread-inside" }, + { "name": "tread-inside7", "bone": "tread4", "attachment": "tread-inside" }, + { "name": "tread-inside59", "bone": "tread30", "attachment": "tread-inside" }, + { "name": "tread-inside33", "bone": "tread17", "attachment": "tread-inside" }, + { "name": "tread-inside9", "bone": "tread5", "attachment": "tread-inside" }, + { "name": "tread-inside61", "bone": "tread31", "attachment": "tread-inside" }, + { "name": "tread-inside35", "bone": "tread18", "attachment": "tread-inside" }, + { "name": "tread-inside11", "bone": "tread6", "attachment": "tread-inside" }, + { "name": "tread-inside63", "bone": "tread32", "attachment": "tread-inside" }, + { "name": "tread-inside37", "bone": "tread19", "attachment": "tread-inside" }, + { "name": "tread-inside13", "bone": "tread7", "attachment": "tread-inside" }, + { "name": "tread-inside65", "bone": "tread33", "attachment": "tread-inside" }, + { "name": "tread-inside39", "bone": "tread20", "attachment": "tread-inside" }, + { "name": "tread-inside15", "bone": "tread8", "attachment": "tread-inside" }, + { "name": "tread-inside67", "bone": "tread34", "attachment": "tread-inside" }, + { "name": "tread-inside69", "bone": "tread35", "attachment": "tread-inside" }, + { "name": "tread-inside71", "bone": "tread36", "attachment": "tread-inside" }, + { "name": "tread-inside41", "bone": "tread21", "attachment": "tread-inside" }, + { "name": "tread-inside17", "bone": "tread9", "attachment": "tread-inside" }, + { "name": "tread-inside43", "bone": "tread22", "attachment": "tread-inside" }, + { "name": "tread-inside19", "bone": "tread10", "attachment": "tread-inside" }, + { "name": "tread-inside45", "bone": "tread23", "attachment": "tread-inside" }, + { "name": "tread-inside21", "bone": "tread11", "attachment": "tread-inside" }, + { "name": "tread-inside47", "bone": "tread24", "attachment": "tread-inside" }, + { "name": "tread-inside23", "bone": "tread12", "attachment": "tread-inside" }, + { "name": "tread-inside49", "bone": "tread25", "attachment": "tread-inside" }, + { "name": "tread-inside25", "bone": "tread13", "attachment": "tread-inside" }, + { "name": "tread-inside51", "bone": "tread26", "attachment": "tread-inside" }, + { "name": "tread-inside2", "bone": "tread", "attachment": "tread-inside" }, + { "name": "tread-inside54", "bone": "tread27", "attachment": "tread-inside" }, + { "name": "tread-inside28", "bone": "tread14", "attachment": "tread-inside" }, + { "name": "tread-inside4", "bone": "tread2", "attachment": "tread-inside" }, + { "name": "tread-inside56", "bone": "tread28", "attachment": "tread-inside" }, + { "name": "tread-inside30", "bone": "tread15", "attachment": "tread-inside" }, + { "name": "tread-inside6", "bone": "tread3", "attachment": "tread-inside" }, + { "name": "tread-inside58", "bone": "tread29", "attachment": "tread-inside" }, + { "name": "tread-inside32", "bone": "tread16", "attachment": "tread-inside" }, + { "name": "tread-inside8", "bone": "tread4", "attachment": "tread-inside" }, + { "name": "tread-inside60", "bone": "tread30", "attachment": "tread-inside" }, + { "name": "tread-inside34", "bone": "tread17", "attachment": "tread-inside" }, + { "name": "tread-inside10", "bone": "tread5", "attachment": "tread-inside" }, + { "name": "tread-inside62", "bone": "tread31", "attachment": "tread-inside" }, + { "name": "tread-inside36", "bone": "tread18", "attachment": "tread-inside" }, + { "name": "tread-inside12", "bone": "tread6", "attachment": "tread-inside" }, + { "name": "tread-inside64", "bone": "tread32", "attachment": "tread-inside" }, + { "name": "tread-inside38", "bone": "tread19", "attachment": "tread-inside" }, + { "name": "tread-inside14", "bone": "tread7", "attachment": "tread-inside" }, + { "name": "tread-inside66", "bone": "tread33", "attachment": "tread-inside" }, + { "name": "tread-inside40", "bone": "tread20", "attachment": "tread-inside" }, + { "name": "tread-inside16", "bone": "tread8", "attachment": "tread-inside" }, + { "name": "tread-inside68", "bone": "tread34", "attachment": "tread-inside" }, + { "name": "tread-inside70", "bone": "tread35", "attachment": "tread-inside" }, + { "name": "tread-inside72", "bone": "tread36", "attachment": "tread-inside" }, + { "name": "tread-inside42", "bone": "tread21", "attachment": "tread-inside" }, + { "name": "tread-inside18", "bone": "tread9", "attachment": "tread-inside" }, + { "name": "tread-inside44", "bone": "tread22", "attachment": "tread-inside" }, + { "name": "tread-inside20", "bone": "tread10", "attachment": "tread-inside" }, + { "name": "tread-inside46", "bone": "tread23", "attachment": "tread-inside" }, + { "name": "tread-inside22", "bone": "tread11", "attachment": "tread-inside" }, + { "name": "tread-inside48", "bone": "tread24", "attachment": "tread-inside" }, + { "name": "tread-inside24", "bone": "tread12", "attachment": "tread-inside" }, + { "name": "tread-inside50", "bone": "tread25", "attachment": "tread-inside" }, + { "name": "tread-inside26", "bone": "tread13", "attachment": "tread-inside" }, + { "name": "tread-inside52", "bone": "tread26", "attachment": "tread-inside" }, + { "name": "wheel-big", "bone": "wheel-big1", "color": "dbdbdbff", "attachment": "wheel-big" }, + { "name": "wheel-big2", "bone": "wheel-big2", "color": "dbdbdbff", "attachment": "wheel-big" }, + { "name": "wheel-mid", "bone": "wheel-mid1", "attachment": "wheel-mid" }, + { "name": "wheel-mid2", "bone": "wheel-mid2", "attachment": "wheel-mid" }, + { "name": "wheel-mid3", "bone": "wheel-mid3", "attachment": "wheel-mid" }, + { "name": "wheel-mid4", "bone": "wheel-mid4", "attachment": "wheel-mid" }, + { "name": "wheel-mid5", "bone": "wheel-mid5", "attachment": "wheel-mid" }, + { "name": "wheel-mid6", "bone": "wheel-mid6", "attachment": "wheel-mid" }, + { "name": "wheel-small", "bone": "wheel-small1", "attachment": "wheel-small" }, + { "name": "wheel-small2", "bone": "wheel-small2", "attachment": "wheel-small" }, + { "name": "wheel-small3", "bone": "wheel-small3", "attachment": "wheel-small" }, + { + "name": "wheel-mid-overlay", + "bone": "wheel-midRoot1", + "color": "ffffffec", + "attachment": "wheel-mid-overlay", + "blend": "multiply" + }, + { + "name": "wheel-mid-overlay2", + "bone": "wheel-midRoot2", + "color": "ffffffec", + "attachment": "wheel-mid-overlay", + "blend": "multiply" + }, + { + "name": "wheel-mid-overlay3", + "bone": "wheel-midRoot3", + "color": "ffffffec", + "attachment": "wheel-mid-overlay", + "blend": "multiply" + }, + { + "name": "wheel-mid-overlay4", + "bone": "wheel-midRoot4", + "color": "ffffffec", + "attachment": "wheel-mid-overlay", + "blend": "multiply" + }, + { + "name": "wheel-mid-overlay5", + "bone": "wheel-midRoot5", + "color": "ffffffec", + "attachment": "wheel-mid-overlay", + "blend": "multiply" + }, + { + "name": "wheel-mid-overlay6", + "bone": "wheel-midRoot6", + "color": "ffffffec", + "attachment": "wheel-mid-overlay", + "blend": "multiply" + }, + { + "name": "wheel-big-overlay1", + "bone": "wheel-bigRoot1", + "color": "ffffffe9", + "attachment": "wheel-big-overlay", + "blend": "multiply" + }, + { + "name": "wheel-big-overlay2", + "bone": "wheel-bigRoot2", + "color": "ffffffe9", + "attachment": "wheel-big-overlay", + "blend": "multiply" + }, + { "name": "treads", "bone": "tankRoot", "attachment": "treads" }, + { "name": "tread", "bone": "tread", "color": "c0974fff", "attachment": "tread" }, + { "name": "tread27", "bone": "tread27", "color": "adc9b8ff", "attachment": "tread" }, + { "name": "tread14", "bone": "tread14", "attachment": "tread" }, + { "name": "tread2", "bone": "tread2", "attachment": "tread" }, + { "name": "tread28", "bone": "tread28", "attachment": "tread" }, + { "name": "tread15", "bone": "tread15", "color": "adc9b8ff", "attachment": "tread" }, + { "name": "tread3", "bone": "tread3", "color": "adc9b8ff", "attachment": "tread" }, + { "name": "tread29", "bone": "tread29", "color": "adc9b8ff", "attachment": "tread" }, + { "name": "tread16", "bone": "tread16", "attachment": "tread" }, + { "name": "tread4", "bone": "tread4", "attachment": "tread" }, + { "name": "tread30", "bone": "tread30", "attachment": "tread" }, + { "name": "tread17", "bone": "tread17", "color": "adc9b8ff", "attachment": "tread" }, + { "name": "tread5", "bone": "tread5", "color": "adc9b8ff", "attachment": "tread" }, + { "name": "tread31", "bone": "tread31", "color": "adc9b8ff", "attachment": "tread" }, + { "name": "tread18", "bone": "tread18", "attachment": "tread" }, + { "name": "tread6", "bone": "tread6", "attachment": "tread" }, + { "name": "tread32", "bone": "tread32", "attachment": "tread" }, + { "name": "tread19", "bone": "tread19", "color": "adc9b8ff", "attachment": "tread" }, + { "name": "tread7", "bone": "tread7", "color": "adc9b8ff", "attachment": "tread" }, + { "name": "tread33", "bone": "tread33", "color": "adc9b8ff", "attachment": "tread" }, + { "name": "tread20", "bone": "tread20", "attachment": "tread" }, + { "name": "tread8", "bone": "tread8", "attachment": "tread" }, + { "name": "tread34", "bone": "tread34", "attachment": "tread" }, + { "name": "tread35", "bone": "tread35", "color": "adc9b8ff", "attachment": "tread" }, + { "name": "tread36", "bone": "tread36", "color": "adc9b8ff", "attachment": "tread" }, + { "name": "tread21", "bone": "tread21", "color": "adc9b8ff", "attachment": "tread" }, + { "name": "tread9", "bone": "tread9", "color": "adc9b8ff", "attachment": "tread" }, + { "name": "tread22", "bone": "tread22", "attachment": "tread" }, + { "name": "tread10", "bone": "tread10", "attachment": "tread" }, + { "name": "tread23", "bone": "tread23", "color": "adc9b8ff", "attachment": "tread" }, + { "name": "tread11", "bone": "tread11", "color": "adc9b8ff", "attachment": "tread" }, + { "name": "tread24", "bone": "tread24", "attachment": "tread" }, + { "name": "tread12", "bone": "tread12", "attachment": "tread" }, + { "name": "tread25", "bone": "tread25", "color": "adc9b8ff", "attachment": "tread" }, + { "name": "tread13", "bone": "tread13", "color": "adc9b8ff", "attachment": "tread" }, + { "name": "tread26", "bone": "tread26", "attachment": "tread" }, + { "name": "rock", "bone": "rock", "attachment": "rock" }, + { "name": "machinegun", "bone": "machinegun", "attachment": "machinegun" }, + { "name": "machinegun-mount", "bone": "machinegun-mount", "attachment": "machinegun-mount" }, + { "name": "tankTop", "bone": "tankBody", "attachment": "tankTop" }, + { "name": "guntower", "bone": "guntower", "attachment": "guntower" }, + { "name": "cannon", "bone": "cannon", "attachment": "cannon" }, + { "name": "cannonConnector", "bone": "cannonConnector", "attachment": "cannonConnector" }, + { "name": "antenna", "bone": "antennaRoot", "attachment": "antenna" } +], +"ik": [ + { + "name": "cannonTarget", + "bones": [ "cannon" ], + "target": "cannonTarget" + }, + { + "name": "machineGunTarget", + "bones": [ "machinegun" ], + "target": "machineGunTarget", + "mix": 0 + } +], +"transform": [ + { + "name": "wheel-big", + "bones": [ "wheel-big2" ], + "target": "wheel-big1", + "rotation": 65.6, + "translateMix": 0, + "scaleMix": 0, + "shearMix": 0 + }, + { + "name": "wheel-mid1", + "bones": [ "wheel-mid2", "wheel-mid4" ], + "target": "wheel-mid1", + "rotation": 93, + "translateMix": 0, + "scaleMix": 0, + "shearMix": 0 + }, + { + "name": "wheel-mid2", + "bones": [ "wheel-mid3", "wheel-mid5" ], + "target": "wheel-mid1", + "rotation": -89, + "translateMix": 0, + "scaleMix": 0, + "shearMix": 0 + }, + { + "name": "wheel-mid3", + "bones": [ "wheel-mid6" ], + "target": "wheel-mid1", + "rotation": -152.6, + "translateMix": 0, + "scaleMix": 0, + "shearMix": 0 + }, + { + "name": "wheel-small1", + "bones": [ "wheel-small2" ], + "target": "wheel-small1", + "rotation": 87, + "translateMix": 0, + "scaleMix": 0, + "shearMix": 0 + }, + { + "name": "wheel-small2", + "bones": [ "wheel-small3" ], + "target": "wheel-small1", + "rotation": 54.9, + "translateMix": 0, + "scaleMix": 0, + "shearMix": 0 + } +], +"path": [ + { + "name": "treads", + "bones": [ + "tread", + "tread2", + "tread3", + "tread4", + "tread5", + "tread6", + "tread7", + "tread8", + "tread9", + "tread10", + "tread11", + "tread12", + "tread13", + "tread14", + "tread15", + "tread16", + "tread17", + "tread18", + "tread19", + "tread20", + "tread21", + "tread22", + "tread23", + "tread24", + "tread25", + "tread26", + "tread27", + "tread28", + "tread29", + "tread30", + "tread31", + "tread32", + "tread33", + "tread34", + "tread35", + "tread36" + ], + "target": "treads", + "rotateMode": "chain" + } +], +"skins": { + "default": { + "antenna": { + "antenna": { + "type": "mesh", + "uvs": [ 0.64286, 0.07875, 0.65354, 0.15349, 0.66324, 0.22137, 0.67367, 0.29433, 0.68383, 0.36543, 0.69359, 0.43374, 0.7031, 0.50029, 0.71311, 0.5703, 0.72327, 0.64138, 0.73406, 0.71688, 0.7444, 0.78929, 0.75614, 0.8714, 0.76905, 0.9431, 1, 0.9431, 1, 1, 0, 1, 0, 0.9431, 0.20105, 0.9431, 0.20105, 0.87093, 0.21461, 0.78846, 0.22651, 0.71606, 0.23885, 0.64098, 0.25035, 0.57104, 0.26206, 0.49983, 0.27306, 0.4329, 0.2843, 0.36453, 0.29592, 0.29381, 0.308, 0.22037, 0.319, 0.15345, 0.33141, 0.07795, 0.34423, 0, 0.6316, 0 ], + "triangles": [ 30, 31, 0, 29, 30, 0, 29, 0, 1, 28, 29, 1, 28, 1, 2, 27, 28, 2, 27, 2, 3, 26, 3, 4, 25, 26, 4, 25, 4, 5, 26, 27, 3, 24, 5, 6, 23, 24, 6, 7, 23, 6, 24, 25, 5, 22, 7, 8, 21, 22, 8, 21, 8, 9, 7, 22, 23, 20, 9, 10, 19, 20, 10, 20, 21, 9, 19, 10, 11, 18, 19, 11, 17, 18, 11, 17, 11, 12, 15, 16, 17, 12, 13, 14, 15, 17, 12, 14, 15, 12 ], + "vertices": [ 2, 10, 65.37999, -3.14, 0.3125, 11, 23.38, -3.14, 0.6875, 3, 9, 84.73, -3.37, 0.0625, 10, 42.73, -3.37, 0.625, 11, 0.73, -3.37, 0.3125, 3, 9, 64.16, -3.59, 0.3125, 10, 22.16, -3.59, 0.625, 11, -19.83, -3.59, 0.0625, 3, 8, 84.06, -3.82, 0.0625, 9, 42.06, -3.82, 0.625, 10, 0.06, -3.82, 0.3125, 3, 8, 62.51, -4.04, 0.3125, 9, 20.51, -4.04, 0.625, 10, -21.48, -4.04, 0.0625, 3, 7, 83.81, -4.25, 0.0625, 8, 41.81, -4.25, 0.625, 9, -0.18, -4.25, 0.3125, 3, 7, 63.65, -4.46, 0.3125, 8, 21.65, -4.46, 0.625, 9, -20.34, -4.46, 0.0625, 3, 6, 84.43, -4.67999, 0.0625, 7, 42.43, -4.67999, 0.625, 8, 0.43, -4.67999, 0.3125, 3, 6, 62.9, -4.91, 0.3125, 7, 20.9, -4.91, 0.625, 8, -21.09, -4.91, 0.0625, 3, 5, 5.14, 80.01999, 0.0625, 6, 40.02, -5.14, 0.625, 7, -1.97, -5.14, 0.3125, 3, 5, 5.37, 58.08, 0.375, 6, 18.08, -5.37, 0.5625, 7, -23.91, -5.37, 0.0625, 1, 5, 5.63, 33.2, 1, 1, 5, 5.91, 11.48, 1, 1, 5, 11, 11.48, 1, 1, 5, 10.99, -5.75, 1, 1, 5, -11, -5.75, 1, 1, 5, -10.99, 11.48, 1, 1, 5, -6.57, 11.48, 1, 1, 5, -6.57, 33.34, 1, 3, 5, -6.27, 58.33, 0.375, 6, 18.33, 6.27, 0.5625, 7, -23.66, 6.27, 0.0625, 3, 5, -6.01, 80.26999, 0.0625, 6, 40.27, 6.01, 0.625, 7, -1.72, 6.01, 0.3125, 3, 6, 63.02, 5.74, 0.3125, 7, 21.02, 5.74, 0.625, 8, -20.96999, 5.74, 0.0625, 3, 6, 84.21, 5.49, 0.0625, 7, 42.21, 5.49, 0.625, 8, 0.21, 5.49, 0.3125, 3, 7, 63.79, 5.23, 0.3125, 8, 21.79, 5.23, 0.625, 9, -20.2, 5.23, 0.0625, 3, 7, 84.07, 4.98999, 0.0625, 8, 42.07, 4.98999, 0.625, 9, 0.07, 4.98999, 0.3125, 3, 8, 62.78, 4.73999, 0.3125, 9, 20.78, 4.73999, 0.625, 10, -21.21, 4.73999, 0.0625, 3, 8, 84.21, 4.48, 0.0625, 9, 42.21, 4.48, 0.625, 10, 0.21, 4.48, 0.3125, 3, 9, 64.46, 4.21999, 0.3125, 10, 22.46, 4.21999, 0.625, 11, -19.53, 4.21999, 0.0625, 3, 9, 84.74, 3.98, 0.0625, 10, 42.74, 3.98, 0.625, 11, 0.74, 3.98, 0.3125, 2, 10, 65.62, 3.7, 0.3125, 11, 23.62, 3.7, 0.6875, 1, 11, 47.24, 3.42, 1, 1, 11, 47.24, -2.89, 1 ], + "hull": 32, + "edges": [ 28, 30, 28, 26, 30, 32, 26, 24, 24, 22, 32, 34, 34, 24, 34, 36, 36, 22, 60, 62, 38, 36, 20, 22, 38, 20, 40, 38, 18, 20, 40, 18, 42, 40, 16, 18, 42, 16, 44, 42, 14, 16, 44, 14, 46, 44, 12, 14, 46, 12, 48, 46, 10, 12, 48, 10, 50, 48, 8, 10, 50, 8, 52, 50, 6, 8, 52, 6, 54, 52, 4, 6, 54, 4, 56, 54, 2, 4, 56, 2, 60, 58, 58, 56, 62, 0, 0, 2, 58, 0 ], + "width": 22, + "height": 303 + } + }, + "bottom": { + "tankBottom": { "x": -16.66, "y": 9.89, "width": 1285, "height": 276 } + }, + "cannon": { + "cannon": { "x": 481.95, "y": -0.02, "rotation": 179.99, "width": 931, "height": 58 } + }, + "cannonConnector": { + "cannonConnector": { + "type": "mesh", + "uvs": [ 1, 0.03236, 1, 0.10602, 0.90987, 0.32859, 0.81975, 0.55116, 0.72962, 0.77372, 0.6395, 0.99629, 0.42157, 0.99629, 0.20364, 0.99629, 0, 0.85433, 0, 0.69901, 0.02267, 0.52884, 0, 0.31444, 0.21601, 0.12998, 0.43367, 0, 0.63546, 0.0037, 0.48407, 0.77059, 0.31496, 0.52496, 0.64132, 0.19648, 0.21516, 0.76765, 0.58345, 0.5647, 0.68444, 0.40146, 0.46758, 0.36649, 0.28934, 0.34603 ], + "triangles": [ 21, 22, 12, 11, 12, 22, 17, 21, 13, 17, 13, 14, 21, 12, 13, 21, 17, 20, 16, 22, 21, 10, 11, 22, 10, 22, 16, 19, 21, 20, 16, 21, 19, 18, 10, 16, 9, 10, 18, 15, 16, 19, 18, 16, 15, 8, 9, 18, 7, 8, 18, 6, 18, 15, 7, 18, 6, 14, 0, 1, 17, 14, 1, 2, 17, 1, 20, 17, 2, 3, 20, 2, 19, 20, 3, 4, 19, 3, 15, 19, 4, 5, 15, 4, 6, 15, 5 ], + "vertices": [ 1, 12, 35.91, 69.08, 1, 1, 12, 35.91, 59.13, 1, 1, 12, 25.81, 29.09, 1, 1, 12, 15.72, -0.95, 1, 1, 12, 5.63, -31, 1, 1, 12, -4.46, -61.04, 1, 2, 12, -28.87, -61.04, 0.33333, 14, 28.87, 61.03, 0.66666, 1, 14, 53.27, 61.01, 1, 1, 14, 76.08, 41.83, 1, 1, 14, 71.17, 21.62, 1, 1, 14, 72.83, -1.62, 1, 1, 14, 70.37, -29.12, 1, 1, 14, 50.66, -56.13, 1, 2, 12, -28.43, 74.37, 0.41, 14, 28.43, -74.39, 0.58999, 2, 12, -4.91, 72.94999, 0.52, 14, 4.91, -72.94999, 0.48, 2, 12, -21.87, -30.57, 0.49, 14, 21.87, 30.56, 0.51, 1, 14, 40.81, -2.59999, 1, 2, 12, -4.25, 46.92, 0.49, 14, 4.25, -46.92, 0.51, 1, 14, 51.98, 30.15, 1, 2, 12, -10.74, -2.78, 0.49, 14, 10.74, 2.77, 0.51, 2, 12, 0.56, 19.25, 0.49, 14, -0.56, -19.25, 0.51, 1, 14, 23.71, -23.98, 1, 1, 14, 43.68, -26.76, 1 ], + "hull": 15, + "edges": [ 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 18, 20, 20, 22, 22, 24, 24, 26, 26, 28, 28, 0 ], + "width": 112, + "height": 135 + } + }, + "guntower": { + "guntower": { "x": 77.22, "y": 122.58, "width": 730, "height": 289 } + }, + "machinegun": { + "machinegun": { "x": 44.85, "y": -5.72, "rotation": -180, "width": 331, "height": 57 } + }, + "machinegun-mount": { + "machinegun-mount": { "x": 47.42, "y": -1.53, "rotation": -90, "width": 72, "height": 96 } + }, + "rock": { + "rock": { "color": "404040ff", "x": 25.23, "y": 27.35, "width": 252, "height": 55 } + }, + "tankBody-shadow": { + "tankBottom-shadow": { "x": -11.43, "y": -42.88, "width": 1291, "height": 341 } + }, + "tankTop": { + "tankTop": { "x": 6.8, "y": 168.71, "width": 1407, "height": 222 } + }, + "tread": { + "tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread-inside1": { + "tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside10": { + "tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside11": { + "tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside12": { + "tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside13": { + "tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside14": { + "tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside15": { + "tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside16": { + "tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside17": { + "tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside18": { + "tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside19": { + "tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside2": { + "tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside20": { + "tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside21": { + "tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside22": { + "tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside23": { + "tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside24": { + "tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside25": { + "tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside26": { + "tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside27": { + "tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside28": { + "tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside29": { + "tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside3": { + "tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside30": { + "tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside31": { + "tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside32": { + "tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside33": { + "tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside34": { + "tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside35": { + "tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside36": { + "tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside37": { + "tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside38": { + "tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside39": { + "tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside4": { + "tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside40": { + "tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside41": { + "tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside42": { + "tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside43": { + "tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside44": { + "tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside45": { + "tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside46": { + "tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside47": { + "tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside48": { + "tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside49": { + "tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside5": { + "tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside50": { + "tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside51": { + "tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside52": { + "tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside53": { + "tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside54": { + "tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside55": { + "tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside56": { + "tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside57": { + "tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside58": { + "tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside59": { + "tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside6": { + "tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside60": { + "tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside61": { + "tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside62": { + "tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside63": { + "tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside64": { + "tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside65": { + "tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside66": { + "tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside67": { + "tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside68": { + "tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside69": { + "tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside7": { + "tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside70": { + "tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside71": { + "tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside72": { + "tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside8": { + "tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside9": { + "tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread10": { + "tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread11": { + "tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread12": { + "tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread13": { + "tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread14": { + "tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread15": { + "tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread16": { + "tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread17": { + "tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread18": { + "tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread19": { + "tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread2": { + "tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread20": { + "tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread21": { + "tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread22": { + "tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread23": { + "tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread24": { + "tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread25": { + "tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread26": { + "tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread27": { + "tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread28": { + "tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread29": { + "tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread3": { + "tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread30": { + "tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread31": { + "tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread32": { + "tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread33": { + "tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread34": { + "tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread35": { + "tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread36": { + "tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread4": { + "tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread5": { + "tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread6": { + "tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread7": { + "tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread8": { + "tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread9": { + "tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "treads": { + "treads": { + "type": "path", + "closed": true, + "lengths": [ 182.41, 349, 472.77, 602.99, 780.46, 1052.96, 1133.44, 1218.43, 1298.34, 1382.7, 1465.57, 1546.11, 1628.02, 1707.73, 1794.36, 1876.75, 2158.69, 2321.34, 2438.56, 2579.42, 2745.35, 2919.23 ], + "vertexCount": 66, + "vertices": [ 1, 83, 11.23, 41.86, 1, 1, 83, 0.78, 41.93999, 1, 1, 83, -34.72, 42.23, 1, 1, 63, -104.21, 0.41, 1, 1, 63, 0.07, 0.55, 1, 1, 63, 68.8, 0.64, 1, 1, 81, 20.5, 43.47, 1, 1, 81, 1.13, 40.81, 1, 1, 81, -27.38, 36.84, 1, 1, 65, 147.06, 105, 1, 1, 65, 96.21, 96.63, 1, 1, 65, 43.87, 87.71, 1, 1, 65, 16.18, 103.34, 1, 1, 65, -33.66999, 94.2, 1, 1, 65, -99.35, 81.25, 1, 1, 65, -122.04, -1.69, 1, 1, 65, -83.58, -47.92, 1, 1, 65, -33.53, -109.36, 1, 1, 69, -83.56, -66.08999, 1, 1, 69, -2.16, -67.89, 1, 2, 69, 56.68, -41.48, 0.67999, 58, -24.31, -41.49, 0.32, 1, 58, -26.58, 16.69, 1, 1, 58, -2.69, 16.69, 1, 1, 58, 13.51, 16.69, 1, 2, 71, -52.41, -46.51, 0.74399, 58, 30.2, -46.51, 0.256, 1, 71, -0.32, -68.92, 1, 2, 71, 52.09, -44.72, 0.712, 59, -28.9, -44.73, 0.28799, 1, 59, -22.8, 16.24, 1, 1, 59, -1.42, 16.24, 1, 1, 59, 20.46999, 16.24, 1, 2, 73, -47.21, -47.45, 0.744, 59, 36.00999, -47.46, 0.25599, 1, 73, -0.28, -69.65, 1, 2, 73, 45.23, -47.26, 0.736, 60, -37.48, -47.26, 0.26399, 1, 60, -23.76, 15.27, 1, 1, 60, -0.13, 15.27, 1, 1, 60, 24.45, 15.27, 1, 2, 75, -47.36, -48.7, 0.74399, 60, 33.52, -48.7, 0.256, 1, 75, -0.49, -70.39, 1, 2, 75, 49.09, -48.33, 0.744, 61, -33.57, -48.34, 0.25599, 1, 61, -20.89, 15.83, 1, 1, 61, -1.25, 15.83, 1, 1, 61, 15.78, 15.83, 1, 2, 77, -52.49, -48.21, 0.75999, 61, 28.45, -48.21, 0.24, 1, 77, -2.5, -68.92, 1, 2, 77, 55.72, -47.82, 0.752, 62, -28.88, -47.82, 0.248, 1, 62, -21.64, 16.69, 1, 1, 62, -0.48, 16.69, 1, 1, 62, 20.73, 16.69, 1, 2, 79, -53.65, -48.89, 0.76, 62, 25.96, -48.89, 0.23999, 1, 79, 2.27, -69.65, 1, 1, 79, 44.94, -69.74, 1, 1, 65, 1172.98, -85.6, 1, 1, 65, 1190.53, -42.24, 1, 1, 65, 1215.63, 19.75, 1, 1, 65, 1175.55, 76.62, 1, 1, 65, 1134.22, 95.07, 1, 1, 65, 1128.4, 97.66, 1, 1, 65, 1081.79, 87.47, 1, 1, 65, 1017.16, 92.52, 1, 1, 65, 977.9, 95.58, 1, 1, 85, 47.07, 42.29, 1, 1, 85, 0.24, 42.74, 1, 1, 85, -29.63, 43.28, 1, 1, 64, -86.64, 1.35, 1, 1, 64, 0.49, 0.25, 1, 1, 64, 92.42, -0.89, 1 ], + "color": "ff8819ff" + } + }, + "wheel-big": { + "wheel-big": { "width": 191, "height": 191 } + }, + "wheel-big-overlay1": { + "wheel-big-overlay": { "width": 186, "height": 186 } + }, + "wheel-big-overlay2": { + "wheel-big-overlay": { "width": 186, "height": 186 } + }, + "wheel-big2": { + "wheel-big": { "width": 191, "height": 191 } + }, + "wheel-mid": { + "wheel-mid": { "width": 136, "height": 136 } + }, + "wheel-mid-overlay": { + "wheel-mid-overlay": { "width": 136, "height": 136 } + }, + "wheel-mid-overlay2": { + "wheel-mid-overlay": { "width": 136, "height": 136 } + }, + "wheel-mid-overlay3": { + "wheel-mid-overlay": { "width": 136, "height": 136 } + }, + "wheel-mid-overlay4": { + "wheel-mid-overlay": { "width": 136, "height": 136 } + }, + "wheel-mid-overlay5": { + "wheel-mid-overlay": { "width": 136, "height": 136 } + }, + "wheel-mid-overlay6": { + "wheel-mid-overlay": { "width": 136, "height": 136 } + }, + "wheel-mid2": { + "wheel-mid": { "width": 136, "height": 136 } + }, + "wheel-mid3": { + "wheel-mid": { "width": 136, "height": 136 } + }, + "wheel-mid4": { + "wheel-mid": { "width": 136, "height": 136 } + }, + "wheel-mid5": { + "wheel-mid": { "width": 136, "height": 136 } + }, + "wheel-mid6": { + "wheel-mid": { "width": 136, "height": 136 } + }, + "wheel-small": { + "wheel-small": { "width": 71, "height": 71 } + }, + "wheel-small2": { + "wheel-small": { "width": 71, "height": 71 } + }, + "wheel-small3": { + "wheel-small": { "width": 71, "height": 71 } + } + } +}, +"animations": { + "drive": { + "bones": { + "tankRoot": { + "translate": [ + { + "time": 0, + "x": 0, + "y": 0, + "curve": [ 0.549, 0, 0.907, 0.84 ] + }, + { + "time": 3.0333, + "x": -1426.14, + "y": 0, + "curve": [ 0.211, 0.23, 0.851, 0.92 ] + }, + { + "time": 4.8666, + "x": -2806.98, + "y": 0, + "curve": [ 0.253, 0.27, 0.625, 0.94 ] + }, + { "time": 5.3333, "x": -2903.34, "y": 0 } + ] + }, + "wheel-midRoot1": { + "translate": [ + { "time": 0.7666, "x": 0, "y": 0 }, + { + "time": 1.1666, + "x": 0, + "y": 50.95, + "curve": [ 0.633, 0, 0.907, 0.82 ] + }, + { "time": 1.5666, "x": 0, "y": 0 } + ] + }, + "treadCollider1": { + "rotate": [ + { "time": 1.1, "angle": 0 }, + { "time": 1.2333, "angle": -19.78 }, + { "time": 1.4666, "angle": 0 }, + { "time": 1.6, "angle": 28.87 }, + { "time": 1.8, "angle": 0 } + ], + "translate": [ + { "time": 1.1, "x": 0, "y": 0 }, + { + "time": 1.4666, + "x": 0, + "y": 58.66, + "curve": [ 0.352, 0, 0.828, 0.92 ] + }, + { "time": 1.8, "x": 0, "y": 0 } + ] + }, + "wheel-midRoot2": { + "translate": [ + { "time": 1.2666, "x": 0, "y": 0 }, + { + "time": 1.6333, + "x": 0, + "y": 55.07, + "curve": [ 0.889, 0.01, 0.843, 0.81 ] + }, + { "time": 1.9333, "x": 0, "y": 0 } + ] + }, + "treadCollider2": { + "rotate": [ + { "time": 1.5333, "angle": 0 }, + { "time": 1.6333, "angle": -18.67 }, + { "time": 1.8, "angle": 0 }, + { "time": 1.9, "angle": 29.49 }, + { "time": 2.0666, "angle": 0 } + ], + "translate": [ + { + "time": 1.5333, + "x": 0, + "y": 0, + "curve": [ 0.16, 0.25, 0.813, 0.82 ] + }, + { + "time": 1.8, + "x": 0, + "y": 59.03, + "curve": [ 0.376, 0.26, 0.879, 0.79 ] + }, + { "time": 2.0666, "x": 0, "y": 0 } + ] + }, + "wheel-midRoot3": { + "translate": [ + { "time": 1.6666, "x": 0, "y": 0 }, + { + "time": 1.9333, + "x": 0, + "y": 60.17, + "curve": [ 0.544, 0, 0.838, 0.77 ] + }, + { "time": 2.2, "x": 0, "y": 0 } + ] + }, + "treadCollider3": { + "rotate": [ + { "time": 1.8666, "angle": 0 }, + { "time": 1.9333, "angle": -20.16 }, + { "time": 2.0666, "angle": 0.57 }, + { "time": 2.1666, "angle": 33.66 }, + { "time": 2.3333, "angle": 0 } + ], + "translate": [ + { "time": 1.8666, "x": 0, "y": 0 }, + { + "time": 2.0666, + "x": 0, + "y": 61.53, + "curve": [ 0.582, 0, 0.836, 0.77 ] + }, + { "time": 2.3333, "x": 0, "y": 0 } + ] + }, + "wheel-midRoot4": { + "translate": [ + { "time": 1.9333, "x": 0, "y": 0 }, + { + "time": 2.2, + "x": 0, + "y": 58.89, + "curve": [ 0.48, 0, 0.75, 1 ] + }, + { "time": 2.4666, "x": 0, "y": 0 } + ] + }, + "treadCollider4": { + "rotate": [ + { "time": 2.1333, "angle": 0 }, + { "time": 2.2, "angle": -20.43 }, + { "time": 2.3333, "angle": 4.49 }, + { "time": 2.4333, "angle": 35.87 }, + { "time": 2.5666, "angle": 0 } + ], + "translate": [ + { + "time": 2.1333, + "x": 0, + "y": 0, + "curve": [ 0.191, 0.49, 0.75, 1 ] + }, + { "time": 2.3333, "x": 0, "y": 66.64 }, + { "time": 2.5666, "x": 0, "y": 0 } + ] + }, + "wheel-midRoot5": { + "translate": [ + { "time": 2.2, "x": 0, "y": 0 }, + { "time": 2.4333, "x": 0, "y": 60.26 }, + { "time": 2.7, "x": 0, "y": 0 } + ] + }, + "treadCollider5": { + "rotate": [ + { "time": 2.3333, "angle": 0 }, + { "time": 2.4333, "angle": -23.6 }, + { "time": 2.5666, "angle": 6.49 }, + { "time": 2.6666, "angle": 29.93 }, + { "time": 2.8, "angle": -0.13 } + ], + "translate": [ + { "time": 2.3333, "x": 0, "y": 0 }, + { "time": 2.4333, "x": 0, "y": 36.34 }, + { "time": 2.5, "x": 0, "y": 56.39 }, + { "time": 2.5666, "x": 0, "y": 61.34 }, + { "time": 2.8, "x": 0, "y": 2.04 } + ] + }, + "wheel-midRoot6": { + "translate": [ + { + "time": 2.4333, + "x": 0, + "y": 0, + "curve": [ 0.19, 0.26, 0.804, 0.8 ] + }, + { + "time": 2.6333, + "x": 0, + "y": 51.86, + "curve": [ 0.346, 0, 0.852, 0.7 ] + }, + { "time": 2.8, "x": 0, "y": 0 } + ] + }, + "wheel-mid1": { + "rotate": [ + { + "time": 0, + "angle": 21, + "curve": [ 0.504, 0.11, 0.931, 0.71 ] + }, + { "time": 0.8, "angle": 120 }, + { "time": 1.2333, "angle": 240 }, + { "time": 1.6, "angle": 0 }, + { "time": 1.9, "angle": 120 }, + { "time": 2.1666, "angle": 240 }, + { "time": 2.4, "angle": 0 }, + { "time": 2.5666, "angle": 120 }, + { "time": 2.7333, "angle": 240 }, + { "time": 2.9333, "angle": 0 }, + { "time": 3.1, "angle": 120 }, + { "time": 3.2666, "angle": 240 }, + { "time": 3.4333, "angle": 0 }, + { "time": 3.6333, "angle": 120 }, + { "time": 3.8, "angle": 240 }, + { "time": 3.9666, "angle": 0 }, + { "time": 4.1666, "angle": 120 }, + { "time": 4.3333, "angle": 240 }, + { "time": 4.5, "angle": 0 }, + { "time": 4.7, "angle": 120 }, + { "time": 4.8666, "angle": 240 }, + { "time": 5.2666, "angle": -67.99 } + ] + }, + "tankTreads": { + "rotate": [ + { + "time": 0, + "angle": 0, + "curve": [ 0.145, 0.34, 0.75, 1 ] + }, + { "time": 1.1, "angle": -3.9 }, + { "time": 1.3333, "angle": -2.37 }, + { "time": 1.6333, "angle": -3.54 }, + { "time": 2.1666, "angle": 0.27 }, + { + "time": 2.4666, + "angle": 2.55, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 2.7, + "angle": 3.88, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 3, "angle": -3.62 }, + { "time": 3.2333, "angle": -1.23, "curve": "stepped" }, + { + "time": 4.8666, + "angle": -1.23, + "curve": [ 0.188, 0.16, 0.75, 1 ] + }, + { + "time": 5.2, + "angle": 4.47, + "curve": [ 0.416, 0.01, 0.75, 1 ] + }, + { + "time": 5.5666, + "angle": -3.08, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 5.8333, "angle": -1.23 } + ] + }, + "wheel-big1": { + "rotate": [ + { + "time": 0, + "angle": 0, + "curve": [ 0.504, 0.11, 0.931, 0.71 ] + }, + { "time": 1.1, "angle": 120 }, + { "time": 1.5333, "angle": 240 }, + { "time": 1.8, "angle": 360 }, + { "time": 2.0333, "angle": 120 }, + { "time": 2.2666, "angle": 240 }, + { "time": 2.4666, "angle": 360 }, + { "time": 2.7, "angle": 120 }, + { "time": 2.9333, "angle": 240 }, + { "time": 3.1333, "angle": 360 }, + { "time": 3.3666, "angle": 120 }, + { "time": 3.5666, "angle": 240 }, + { "time": 3.8, "angle": -24 }, + { "time": 4.0333, "angle": 120 }, + { "time": 4.2333, "angle": 240 }, + { "time": 4.4666, "angle": -24 }, + { "time": 4.7, "angle": 120 }, + { "time": 4.8666, "angle": -143.99 }, + { + "time": 5.0666, + "angle": -131.4, + "curve": [ 0.14, 0.25, 0.75, 1 ] + }, + { "time": 5.6666, "angle": -76.85 }, + { "time": 5.8333, "angle": -72.3 } + ] + }, + "treadGravity1": { + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.4666, "x": 0, "y": 0 }, + { "time": 1.8, "x": 0, "y": 29.44 }, + { "time": 2.3333, "x": 0, "y": -0.52 }, + { "time": 2.5666, "x": 0, "y": 5.2 }, + { "time": 2.6666, "x": 0, "y": -11.05, "curve": "stepped" }, + { "time": 4.8666, "x": 0, "y": -11.05 }, + { "time": 5.0666, "x": 0, "y": -1.91 }, + { "time": 5.5333, "x": 0, "y": -6.9 }, + { "time": 5.7333, "x": 0, "y": -11.05 } + ] + }, + "treadGravity2": { + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.4666, "x": 0, "y": 0 }, + { "time": 1.8, "x": 0, "y": 8.5 }, + { "time": 2.3333, "x": 0, "y": 34.74 }, + { "time": 2.5666, "x": 0, "y": 5.2 }, + { "time": 2.6666, "x": 0, "y": -11.05, "curve": "stepped" }, + { "time": 4.8666, "x": 0, "y": -11.05 }, + { "time": 5.0666, "x": 0, "y": 3.9 }, + { "time": 5.5333, "x": 0, "y": -6.9 }, + { "time": 5.7333, "x": 0, "y": -11.05 } + ] + }, + "wheel-small1": { + "rotate": [ + { + "time": 0, + "angle": 0, + "curve": [ 0.504, 0.11, 0.931, 0.71 ] + }, + { "time": 0.7, "angle": 120 }, + { "time": 1.1, "angle": 240 }, + { "time": 1.4666, "angle": 360 }, + { "time": 1.7666, "angle": 120 }, + { "time": 2.0333, "angle": 240 }, + { "time": 2.2666, "angle": 360 }, + { "time": 2.4333, "angle": 120 }, + { "time": 2.5666, "angle": 240 }, + { "time": 2.7, "angle": 360 }, + { "time": 2.8333, "angle": 120 }, + { "time": 2.9666, "angle": 240 }, + { "time": 3.1, "angle": 360 }, + { "time": 3.2333, "angle": 120 }, + { "time": 3.3666, "angle": 240 }, + { "time": 3.5, "angle": 360 }, + { "time": 3.6333, "angle": 120 }, + { "time": 3.7666, "angle": 240 }, + { "time": 3.9, "angle": 360 }, + { "time": 4.0333, "angle": 120 }, + { "time": 4.1666, "angle": 240 }, + { "time": 4.3, "angle": 360 }, + { "time": 4.4333, "angle": 120 }, + { "time": 4.5666, "angle": 240 }, + { "time": 4.7, "angle": 360 }, + { "time": 4.8333, "angle": 120 }, + { "time": 5, "angle": 240 }, + { + "time": 5.2, + "angle": -25.64, + "curve": [ 0.181, 0.26, 0.75, 1 ] + }, + { "time": 5.5666, "angle": 90 } + ] + }, + "tankBody": { + "rotate": [ + { + "time": 0, + "angle": 0, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 1.1666, + "angle": -1.41, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 1.9333, + "angle": -0.18, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 2.3, + "angle": 0.84, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 3.0333, + "angle": -2.33, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 3.4666, + "angle": -0.45, + "curve": [ 0.329, 0.32, 0.757, 1 ] + }, + { + "time": 4.8666, + "angle": 0, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 5.3333, + "angle": 1.82, + "curve": [ 0.324, 0.01, 0.75, 1 ] + }, + { + "time": 5.6666, + "angle": -1.15, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 6.0333, "angle": 0 } + ] + }, + "antenna1": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { + "time": 0.4333, + "angle": 0, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 0.7333, + "angle": -1.55, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 1.0666, + "angle": -0.68, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 1.4, + "angle": 0.61, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 1.6666, "angle": -0.67, "curve": "stepped" }, + { + "time": 2.1333, + "angle": -0.67, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 2.3666, + "angle": 0.88, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 2.5666, + "angle": -1.69, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 2.8666, + "angle": 1.18, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 3.0333, + "angle": -1.09, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 3.2333, + "angle": 1.03, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 3.5, + "angle": -0.44, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 4.6666, "angle": -0.18 }, + { + "time": 5.0333, + "angle": -1.05, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 5.3666, + "angle": 9.17, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 5.6666, + "angle": -3.14, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 5.9, + "angle": 2.96, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 6.1, + "angle": -0.29, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 6.2666, "angle": 0.96 }, + { "time": 6.4, "angle": 0 } + ] + }, + "antenna2": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { + "time": 0.4333, + "angle": 0, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 0.7333, + "angle": -1.55, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 1.0666, + "angle": -0.68, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 1.4, + "angle": 0.61, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 1.6666, "angle": -0.67, "curve": "stepped" }, + { + "time": 2.1333, + "angle": -0.67, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 2.3666, + "angle": 0.88, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 2.5666, + "angle": -1.69, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 2.8666, + "angle": 1.18, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 3.0333, + "angle": -1.09, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 3.2333, + "angle": 1.03, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 3.5, + "angle": -0.44, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 4.6666, "angle": -0.18 }, + { + "time": 5.0333, + "angle": -1.05, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 5.3666, + "angle": 9.17, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 5.6666, + "angle": -3.14, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 5.9, + "angle": 2.96, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 6.1, + "angle": -0.29, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 6.2666, "angle": 0.96 }, + { "time": 6.4, "angle": 0 } + ] + }, + "antenna3": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { + "time": 0.4333, + "angle": 0, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 0.7333, + "angle": -1.55, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 1.0666, + "angle": -0.68, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 1.4, + "angle": 0.61, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 1.6666, "angle": -0.67, "curve": "stepped" }, + { + "time": 2.1333, + "angle": -0.67, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 2.3666, + "angle": 0.88, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 2.5666, + "angle": -1.69, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 2.8666, + "angle": 1.18, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 3.0333, + "angle": -1.09, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 3.2333, + "angle": 1.03, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 3.5, + "angle": -0.44, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 4.6666, "angle": -0.18 }, + { + "time": 5.0333, + "angle": -1.05, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 5.3666, + "angle": 9.17, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 5.6666, + "angle": -3.14, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 5.9, + "angle": 2.96, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 6.1, + "angle": -0.29, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 6.2666, "angle": 0.96 }, + { "time": 6.4, "angle": 0 } + ] + }, + "antenna4": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { + "time": 0.4333, + "angle": 0, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 0.7333, + "angle": -1.55, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 1.0666, + "angle": -0.68, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 1.4, + "angle": 0.61, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 1.6666, "angle": -0.67, "curve": "stepped" }, + { + "time": 2.1333, + "angle": -0.67, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 2.3666, + "angle": 0.88, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 2.5666, + "angle": -1.69, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 2.8666, + "angle": 1.18, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 3.0333, + "angle": -1.09, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 3.2333, + "angle": 1.03, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 3.5, + "angle": -0.44, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 4.6666, "angle": -0.18 }, + { + "time": 5.0333, + "angle": -1.05, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 5.3666, + "angle": 9.17, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 5.6666, + "angle": -3.14, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 5.9, + "angle": 2.96, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 6.1, + "angle": -0.29, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 6.2666, "angle": 0.96 }, + { "time": 6.4, "angle": 0 } + ] + }, + "antenna5": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { + "time": 0.4333, + "angle": 0, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 0.7333, + "angle": -1.55, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 1.0666, + "angle": -0.68, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 1.4, + "angle": 0.61, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 1.6666, "angle": -0.67, "curve": "stepped" }, + { + "time": 2.1333, + "angle": -0.67, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 2.3666, + "angle": 0.88, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 2.5666, + "angle": -1.69, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 2.8666, + "angle": 1.18, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 3.0333, + "angle": -1.09, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 3.2333, + "angle": 1.03, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 3.5, + "angle": -0.44, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 4.6666, "angle": -0.18 }, + { + "time": 5.0333, + "angle": -1.05, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 5.3666, + "angle": 9.17, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 5.6666, + "angle": -3.14, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 5.9, + "angle": 2.96, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 6.1, + "angle": -0.29, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 6.2666, "angle": 0.96 }, + { "time": 6.4, "angle": 0 } + ] + }, + "antenna6": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { + "time": 0.4333, + "angle": 0, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 0.7333, + "angle": -1.55, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 1.0666, + "angle": -0.68, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 1.4, + "angle": 0.61, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 1.6666, "angle": -0.67, "curve": "stepped" }, + { + "time": 2.1333, + "angle": -0.67, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 2.3666, + "angle": 0.88, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 2.5666, + "angle": -1.69, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 2.8666, + "angle": 1.18, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 3.0333, + "angle": -1.09, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 3.2333, + "angle": 1.03, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 3.5, + "angle": -0.44, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 4.6666, "angle": -0.18 }, + { + "time": 5.0333, + "angle": -1.05, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 5.3666, + "angle": 9.17, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 5.6666, + "angle": -3.14, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 5.9, + "angle": 2.96, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 6.1, + "angle": -0.29, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 6.2666, "angle": 0.96 }, + { "time": 6.4, "angle": 0 } + ] + }, + "machinegun": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { + "time": 2.8333, + "angle": 0, + "curve": [ 0.183, 0.17, 0.75, 1 ] + }, + { + "time": 3, + "angle": -4.43, + "curve": [ 0.156, 0.16, 0.75, 1 ] + }, + { + "time": 3.1666, + "angle": -2.93, + "curve": [ 0.156, 0.16, 0.75, 1 ] + }, + { + "time": 4.8333, + "angle": 0, + "curve": [ 0.183, 0.17, 0.75, 1 ] + }, + { + "time": 5.1666, + "angle": -6.05, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 5.4, + "angle": 6.15, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 5.6, "angle": -1.26 } + ] + }, + "cannon": { + "rotate": [ + { "time": 0, "angle": 0 } + ] + }, + "cannonTarget": { + "translate": [ + { + "time": 5, + "x": 0, + "y": 0, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 6.3333, "x": -15.38, "y": 99.99 } + ] + } + }, + "ik": { + "cannonTarget": [ + { "time": 0, "mix": 0.809, "curve": "stepped" }, + { "time": 4.7333, "mix": 0.809 }, + { "time": 5.1666, "mix": 0.504 }, + { "time": 5.6666 } + ] + }, + "paths": { + "treads": { + "position": [ + { + "time": 0, + "curve": [ 0.549, 0, 0.907, 0.84 ] + }, + { "time": 3.0333, "position": 0.51 }, + { "time": 4.8666, "position": 0.9794 }, + { + "time": 5.2666, + "position": 1, + "curve": [ 0.226, 0.15, 0.765, 0.96 ] + }, + { + "time": 5.5333, + "position": 1.02, + "curve": [ 0.279, 0.32, 0.694, 0.99 ] + }, + { "time": 5.8333, "position": 1.021 } + ] + } + } + } +} +} \ No newline at end of file diff --git a/spine-love/data/tank.png b/spine-love/data/tank.png new file mode 100644 index 000000000..71e402d65 Binary files /dev/null and b/spine-love/data/tank.png differ diff --git a/spine-love/data/test.atlas b/spine-love/data/test.atlas new file mode 100644 index 000000000..d4f7cb79c --- /dev/null +++ b/spine-love/data/test.atlas @@ -0,0 +1,20 @@ + +test.png +size: 256,64 +format: RGBA8888 +filter: Linear,Linear +repeat: none +logo + rotate: false + xy: 193, 2 + size: 60, 60 + orig: 60, 60 + offset: 0, 0 + index: -1 +spine + rotate: false + xy: 2, 2 + size: 189, 60 + orig: 189, 60 + offset: 0, 0 + index: -1 diff --git a/spine-love/data/test.json b/spine-love/data/test.json new file mode 100644 index 000000000..773d0b805 --- /dev/null +++ b/spine-love/data/test.json @@ -0,0 +1,278 @@ +{ +"skeleton": { "hash": "xbu5IFg+2tCx4+2MavNPurEogzA", "spine": "3.4.02", "width": 1333.78, "height": 1112.91, "images": "./images/" }, +"bones": [ + { "name": "root", "x": 28.68, "y": -105.71 }, + { "name": "attachment", "parent": "root", "x": -267.71, "y": -366.62 }, + { "name": "color", "parent": "root", "x": -298.29, "y": 44.1 }, + { "name": "draworder", "parent": "root", "x": 283.53, "y": -356.27 }, + { "name": "mesh", "parent": "root", "x": -320.74, "y": 413.7 }, + { "name": "meshweighted", "parent": "root", "rotation": -11.22, "x": -353.28, "y": 627.53 }, + { "name": "pathfollower", "parent": "root", "x": 177.52, "y": 56.62 }, + { "name": "rotate", "parent": "root", "x": -305, "y": 201 }, + { "name": "scale", "parent": "root", "x": 183.99, "y": -138 }, + { "name": "shear", "parent": "root", "x": -304, "y": -146 }, + { "name": "transformconstrainttarget", "parent": "root", "x": 604.27, "y": 420.7, "color": "abe323ff" }, + { "name": "transformconstrained", "parent": "root", "x": 169.6, "y": 420.7 }, + { "name": "translate", "parent": "root", "x": 190.99, "y": 201, "color": "abe323ff" } +], +"slots": [ + { "name": "images/spine", "bone": "translate", "attachment": "images/spine" }, + { "name": "images/spine2", "bone": "rotate", "attachment": "images/spine" }, + { "name": "images/spine3", "bone": "scale", "attachment": "images/spine" }, + { "name": "images/spine4", "bone": "shear", "attachment": "images/spine" }, + { "name": "images/spine5", "bone": "color", "attachment": "images/spine" }, + { "name": "path2", "bone": "root", "attachment": "path" }, + { "name": "images/spine6", "bone": "pathfollower", "attachment": "images/spine" }, + { "name": "images/spine7", "bone": "transformconstrained", "attachment": "images/spine" }, + { "name": "images/spine8", "bone": "transformconstrainttarget", "attachment": "images/spine" }, + { "name": "images/spine9", "bone": "mesh", "attachment": "images/spine" }, + { "name": "images/spine10", "bone": "attachment", "attachment": "images/logo" }, + { "name": "draworder2", "bone": "draworder", "attachment": "images/logo" }, + { "name": "draworder1", "bone": "draworder", "attachment": "images/spine" }, + { "name": "images/spine12", "bone": "meshweighted", "attachment": "linkedmesh" } +], +"transform": [ + { + "name": "transformconstraint", + "bones": [ "transformconstrained" ], + "target": "transformconstrainttarget", + "x": -400, + "rotateMix": 0.509, + "translateMix": 0.509, + "scaleMix": 0.509, + "shearMix": 0.509 + } +], +"path": [ + { + "name": "pathconstraint", + "bones": [ "pathfollower" ], + "target": "path2", + "rotation": 34.2 + } +], +"skins": { + "default": { + "draworder1": { + "images/spine": { "path": "spine", "width": 377, "height": 120 } + }, + "draworder2": { + "images/logo": { "path": "logo", "width": 120, "height": 120 } + }, + "images/spine": { + "images/spine": { "path": "spine", "width": 377, "height": 120 } + }, + "images/spine10": { + "images/logo": { "path": "logo", "width": 120, "height": 120 }, + "images/spine": { "path": "spine", "width": 377, "height": 120 } + }, + "images/spine12": { + "images/spine": { + "type": "mesh", + "path": "spine", + "uvs": [ 0, 0, 0.25, 0, 0.5, 0, 0.75, 0, 1, 0, 1, 0.25, 1, 0.5, 1, 0.75, 1, 1, 0.75, 1, 0.5, 1, 0.25, 1, 0, 1, 0, 0.75, 0, 0.5, 0, 0.25, 0.25, 0.25, 0.25, 0.5, 0.25, 0.75, 0.5, 0.25, 0.5, 0.5, 0.5, 0.75, 0.75, 0.25, 0.75, 0.5, 0.75, 0.75 ], + "triangles": [ 15, 0, 1, 16, 1, 2, 15, 1, 16, 19, 2, 3, 16, 2, 19, 22, 3, 4, 19, 3, 22, 22, 4, 5, 14, 15, 16, 17, 16, 19, 14, 16, 17, 20, 19, 22, 17, 19, 20, 23, 22, 5, 20, 22, 23, 23, 5, 6, 13, 14, 17, 18, 17, 20, 13, 17, 18, 21, 20, 23, 18, 20, 21, 24, 23, 6, 21, 23, 24, 24, 6, 7, 12, 13, 18, 11, 18, 21, 12, 18, 11, 10, 21, 24, 11, 21, 10, 9, 24, 7, 10, 24, 9, 9, 7, 8 ], + "vertices": [ 1, 5, -194.67, 21.29, 1, 1, 5, -102.08, 38.91, 1, 1, 5, -9.49, 56.54, 1, 1, 5, 83.08, 74.16, 1, 1, 5, 175.67, 91.79, 1, 1, 5, 181.28, 62.32, 1, 1, 5, 186.89, 32.84, 1, 1, 5, 192.5, 3.38, 1, 1, 5, 198.11, -26.09, 1, 1, 5, 105.52, -43.71, 1, 1, 5, 12.94, -61.33, 1, 1, 5, -79.64, -78.96, 1, 1, 5, -172.23, -96.58, 1, 1, 5, -177.84, -67.11, 1, 1, 5, -183.45, -37.64, 1, 1, 5, -189.06, -8.17, 1, 1, 5, -96.47, 9.45, 1, 1, 5, -90.86, -20.01, 1, 1, 5, -85.25, -49.48, 1, 1, 5, -3.88, 27.07, 1, 1, 5, 1.72, -2.39, 1, 1, 5, 7.33, -31.86, 1, 1, 5, 88.7, 44.69, 1, 1, 5, 94.31, 15.22, 1, 1, 5, 99.92, -14.24, 1 ], + "hull": 16, + "edges": [ 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 18, 20, 20, 22, 22, 24, 24, 26, 26, 28, 28, 30, 30, 0 ], + "width": 377, + "height": 120 + }, + "linkedmesh": { "type": "linkedmesh", "path": "logo", "parent": "images/spine", "width": 120, "height": 120 } + }, + "images/spine2": { + "images/spine": { "path": "spine", "width": 377, "height": 120 } + }, + "images/spine3": { + "images/spine": { "path": "spine", "width": 377, "height": 120 } + }, + "images/spine4": { + "images/spine": { "path": "spine", "rotation": 0.15, "width": 377, "height": 120 } + }, + "images/spine5": { + "images/spine": { "path": "spine", "width": 377, "height": 120 } + }, + "images/spine6": { + "images/spine": { "path": "spine", "width": 377, "height": 120 } + }, + "images/spine7": { + "images/spine": { "path": "spine", "width": 377, "height": 120 } + }, + "images/spine8": { + "images/spine": { "path": "spine", "width": 377, "height": 120 } + }, + "images/spine9": { + "images/spine": { + "type": "mesh", + "path": "spine", + "uvs": [ 1, 0.50124, 1, 1, 0.72412, 1, 0.49981, 1, 0.28581, 1, 0, 1, 0, 0.50124, 0, 0, 0.49207, 0, 1, 0, 0.56941, 0.57414, 0.84014, 0.50124, 0.61841, 0.22584, 0.20589, 0.20154, 0.19558, 0.67134, 0.39152, 0.86574, 0.3941, 0.41214, 0.3941, 0.12864, 0.76021, 0.19344, 0.76537, 0.59034, 0.74474, 0.84144, 0.57716, 0.81714 ], + "triangles": [ 17, 7, 8, 18, 8, 9, 13, 7, 17, 12, 8, 18, 17, 8, 12, 16, 17, 12, 13, 17, 16, 6, 7, 13, 6, 13, 16, 18, 9, 0, 11, 18, 0, 10, 16, 12, 12, 18, 11, 10, 12, 11, 19, 10, 11, 14, 6, 16, 14, 16, 10, 21, 10, 19, 15, 14, 10, 20, 21, 19, 21, 15, 10, 5, 6, 14, 4, 5, 14, 15, 4, 14, 3, 15, 21, 4, 15, 3, 2, 21, 20, 3, 21, 2, 19, 11, 0, 0, 20, 19, 1, 20, 0, 2, 20, 1 ], + "vertices": [ 191.41, -1.12, 191.41, -60.97, 87.4, -60.97, 2.84, -60.97, -77.82, -60.97, -185.58, -60.97, -185.58, -1.12, -185.58, 59.02, -0.07, 59.02, 191.41, 59.02, 29.09, -9.85, 131.14, -1.12, 47.55, 31.92, -107.96, 34.84, -111.85, -21.53, -37.97, -44.86, -37, 9.57, -37, 43.59, 101.01, 35.81, 102.96, -11.81, 95.18, -41.93, 32, -39.02 ], + "hull": 10, + "edges": [ 10, 12, 12, 14, 14, 16, 16, 18, 2, 0, 0, 18, 6, 8, 8, 10, 2, 4, 4, 6 ], + "width": 377, + "height": 120 + } + }, + "path2": { + "path": { + "type": "path", + "closed": true, + "lengths": [ 128.85, 310.24, 465.06, 600.88, 773.97 ], + "vertexCount": 15, + "vertices": [ 258.07, -42.67, 291.94, -17.53, 326.41, 7.22, 391.41, 2.75, 398.05, 46.72, 399.83, 84.07, 274.03, 106.4, 236.7, 117.74, 199.37, 129.09, 116.55, 135.12, 84.41, 115.47, 50.34, 94.04, 56.53, 1.48, 89.01, -5.59, 122.89, -13.58 ] + } + } + } +}, +"animations": { + "animation": { + "slots": { + "images/spine5": { + "color": [ + { "time": 0, "color": "ffffffff" }, + { "time": 0.4333, "color": "ff0901ff" }, + { "time": 0.9, "color": "2dff00ff" }, + { "time": 1.3333, "color": "ffffffff" } + ] + }, + "images/spine10": { + "attachment": [ + { "time": 0, "name": "images/spine" }, + { "time": 0.6666, "name": "images/logo" }, + { "time": 1.3333, "name": "images/spine" } + ] + }, + "images/spine12": { + "attachment": [ + { "time": 0, "name": "images/spine" }, + { "time": 0.6666, "name": "linkedmesh" } + ] + } + }, + "bones": { + "translate": { + "translate": [ + { + "time": 0, + "x": 0, + "y": 0, + "curve": [ 1, 0, 0, 1 ] + }, + { "time": 0.6666, "x": 96.99, "y": -151 }, + { "time": 1.3333, "x": 0, "y": 0 } + ] + }, + "scale": { + "scale": [ + { "time": 0, "x": 1, "y": 1 }, + { "time": 0.6666, "x": 1, "y": 2.34 }, + { "time": 1.3333, "x": 1, "y": 1 } + ] + }, + "rotate": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.6666, "angle": -125.34 }, + { "time": 1.3333, "angle": 0 } + ] + }, + "shear": { + "shear": [ + { "time": 0, "x": 0, "y": 0 }, + { "time": 0.6666, "x": 29.4, "y": 0 }, + { "time": 1.3333, "x": 0, "y": 0 } + ] + }, + "transformconstrainttarget": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.6666, "angle": -74.6 }, + { "time": 1.3333, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 }, + { "time": 0.6666, "x": 176.22, "y": -170.34 }, + { "time": 1.3333, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 }, + { "time": 0.6666, "x": 2, "y": 2 }, + { "time": 1.3333, "x": 1, "y": 1 } + ], + "shear": [ + { "time": 0, "x": 0, "y": 0 }, + { "time": 0.6666, "x": 23.4, "y": 0 }, + { "time": 1.3333, "x": 0, "y": 0 } + ] + } + }, + "transform": { + "transformconstraint": [ + { "time": 0, "rotateMix": 0.509, "translateMix": 0.509, "scaleMix": 0.509, "shearMix": 0.509 }, + { "time": 0.6666 }, + { "time": 1.3333, "rotateMix": 0.5, "translateMix": 0.5, "scaleMix": 0.5, "shearMix": 0.5 } + ] + }, + "paths": { + "pathconstraint": { + "position": [ + { "time": 0 }, + { "time": 1.3333, "position": 1 } + ], + "spacing": [ + { "time": 0, "spacing": 40.1 }, + { "time": 1.3333 } + ], + "mix": [ + { "time": 0.6666, "rotateMix": 0.473, "translateMix": 0.473 }, + { "time": 1.3333 } + ] + } + }, + "deform": { + "default": { + "images/spine9": { + "images/spine": [ + { "time": 0 }, + { + "time": 0.6666, + "vertices": [ 43.09784, 58.11693, 0, 0, 0, 0, -0.653, -57.46399, -50.93396, -47.01593, -43.098, -24.81398, -43.098, -24.81399, -1.0E-5, 1.0E-5, 0, 1.0E-5, 43.09784, 58.11695, 0, 0, 43.09784, 58.11693, 1.0E-5, -1.0E-5, 0, 0, -43.09797, -24.81399, 0, 1.0E-5, 0, 0, 0, 0, 43.09784, 58.11694, 43.09784, 58.11693 ] + }, + { "time": 1.3333 } + ] + }, + "images/spine12": { + "images/spine": [ + { "time": 0 }, + { + "time": 0.3333, + "offset": 4, + "vertices": [ -9.45232, 83.5133, -3.90008, 44.76635, -3.90008, 44.76635, -3.90008, 44.76635, 0, 0, 0, 0, 0, 0, 0, 0, 5.15667, -29.57763, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3.90008, 44.76635 ] + }, + { "time": 0.6666 }, + { + "time": 0.6679, + "vertices": [ -1.21159, -14.52716, -2.76092, -7.75683, -4.30999, -0.98669, 2.38385, 9.78289, -1.56903, 5.49316, -2.93444, 6.75128, -4.30011, 8.00933, -5.66552, 9.2677, -7.031, 10.52575, -3.07855, 14.81561, 4.30986, 0.9859, 5.85907, -5.78436, 7.40826, -12.55462, 5.25317, -13.04797, 3.09832, -13.54083, 0.94323, -14.03411, -0.60595, -7.26379, 1.54907, -6.77056, 3.70422, -6.27746, -2.15495, -0.49346, 0, -3.0E-4, 2.15495, 0.49273, 1.01812, 11.04132, -0.3471, 12.29895, -1.71313, 13.557 ] + }, + { + "time": 1.3333, + "vertices": [ -10.57342, 25.16797, -9.16716, 14.48486, -7.76074, 3.80212, 131.25482, 21.05285, 128.23181, -0.04534, 121.51611, 0.91668, 114.80023, 1.8789, 108.08459, 2.84124, 101.3689, 3.80316, 104.39154, 24.90191, -21.3623, 2.01171, -22.76855, 12.69433, -24.17505, 23.37719, -20.77471, 23.82476, -17.37414, 24.27276, -13.97393, 24.72009, -12.56768, 14.03753, -15.96789, 13.58978, -19.36809, 13.14215, -11.16095, 3.35455, -14.56134, 2.90704, -17.96167, 2.45922, 124.53894, 22.01538, 117.82336, 22.97705, 111.10718, 23.93933 ] + } + ] + } + } + }, + "drawOrder": [ + { "time": 0 }, + { + "time": 0.6666, + "offsets": [ + { "slot": "draworder2", "offset": 1 } + ] + }, + { "time": 1.3333 } + ] + } +} +} \ No newline at end of file diff --git a/spine-love/data/test.png b/spine-love/data/test.png new file mode 100644 index 000000000..b84ab7251 Binary files /dev/null and b/spine-love/data/test.png differ diff --git a/spine-love/data/vine.atlas b/spine-love/data/vine.atlas new file mode 100644 index 000000000..019a92d01 --- /dev/null +++ b/spine-love/data/vine.atlas @@ -0,0 +1,13 @@ + +vine.png +size: 128,1024 +format: RGBA8888 +filter: Linear,Linear +repeat: none +vine + rotate: false + xy: 2, 2 + size: 68, 962 + orig: 68, 962 + offset: 0, 0 + index: -1 diff --git a/spine-love/data/vine.json b/spine-love/data/vine.json new file mode 100644 index 000000000..6fc78dc14 --- /dev/null +++ b/spine-love/data/vine.json @@ -0,0 +1,313 @@ +{ +"skeleton": { "hash": "OTxn8PebJnSmjY8665bH7m360tk", "spine": "3.4.02", "width": 227.32, "height": 841.06, "images": "./images/" }, +"bones": [ + { "name": "root" }, + { "name": "vine1", "parent": "root", "length": 74, "rotation": 90, "x": 339.09, "y": -467.15, "color": "f700ffff" }, + { "name": "vine2", "parent": "vine1", "length": 74, "x": 74, "color": "f700ffff" }, + { "name": "vine3", "parent": "vine1", "length": 74, "rotation": 38.94, "x": 137.97, "y": 47.51, "color": "f700ffff" }, + { "name": "vine4", "parent": "vine1", "length": 74, "rotation": 16.67, "x": 214.29, "y": 68.52, "color": "f700ffff" }, + { "name": "vine5", "parent": "vine1", "length": 74, "rotation": -21.73, "x": 289.61, "y": 40.92, "color": "f700ffff" }, + { "name": "vine6", "parent": "vine1", "length": 74, "rotation": -50.04, "x": 341.12, "y": -15.58, "color": "f700ffff" }, + { "name": "vine7", "parent": "vine1", "length": 74, "rotation": -39.25, "x": 402.7, "y": -61.82, "color": "f700ffff" }, + { "name": "vine8", "parent": "vine1", "length": 74, "rotation": -6.18, "x": 483.27, "y": -69.84, "color": "f700ffff" }, + { "name": "vine9", "parent": "vine1", "length": 74, "rotation": 27.11, "x": 554.25, "y": -36.44, "color": "f700ffff" }, + { "name": "vine10", "parent": "vine1", "length": 74, "rotation": 48, "x": 608.62, "y": 19.05, "color": "f700ffff" }, + { "name": "vine11", "parent": "vine1", "length": 74, "rotation": 39.7, "x": 670.66, "y": 66.39, "color": "f700ffff" }, + { "name": "vine12", "parent": "vine1", "length": 74, "rotation": 10.72, "x": 750.09, "y": 80.23, "color": "f700ffff" }, + { "name": "vine13", "parent": "vine1", "length": 74, "rotation": -18.44, "x": 826.06, "y": 56.95, "color": "f700ffff" }, + { "name": "vine-control1", "parent": "root", "length": 296.68, "rotation": 88.64, "x": -2.5, "y": 2.55, "color": "ff0004ff" }, + { "name": "vine-control2", "parent": "vine-control1", "length": 292.59, "rotation": 0.96, "x": 296.68, "color": "ff0004ff" }, + { "name": "vine-control3", "parent": "vine-control2", "length": 247.5, "rotation": 0.16, "x": 292.59, "color": "ff0004ff" }, + { "name": "vine-control4", "parent": "vine-control3", "length": 212.43, "rotation": 0.5, "x": 247.5, "color": "ff0004ff" } +], +"slots": [ + { "name": "vine-path", "bone": "root", "attachment": "vine-path" }, + { "name": "vine", "bone": "vine1", "attachment": "vine" } +], +"path": [ + { + "name": "vine-path", + "bones": [ "vine1", "vine2", "vine3", "vine4", "vine5", "vine6", "vine7", "vine8", "vine9", "vine10", "vine11", "vine12", "vine13" ], + "target": "vine-path", + "rotateMode": "chainScale" + } +], +"skins": { + "default": { + "vine": { + "vine": { + "type": "mesh", + "uvs": [ 0, 0, 0.5, 0, 1, 0, 1, 0.03846, 1, 0.07692, 1, 0.11538, 1, 0.15384, 1, 0.1923, 1, 0.23076, 1, 0.26923, 1, 0.30769, 1, 0.34615, 1, 0.38461, 1, 0.42307, 1, 0.46153, 1, 0.5, 1, 0.53846, 1, 0.57692, 1, 0.61538, 1, 0.65384, 1, 0.6923, 1, 0.73076, 1, 0.76923, 1, 0.80769, 1, 0.84615, 1, 0.88461, 1, 0.92307, 1, 0.96153, 1, 1, 0.5, 1, 0, 1, 0, 0.96153, 0, 0.92307, 0, 0.88461, 0, 0.84615, 0, 0.80769, 0, 0.76923, 0, 0.73076, 0, 0.6923, 0, 0.65384, 0, 0.61538, 0, 0.57692, 0, 0.53846, 0, 0.5, 0, 0.46153, 0, 0.42307, 0, 0.38461, 0, 0.34615, 0, 0.30769, 0, 0.26923, 0, 0.23076, 0, 0.1923, 0, 0.15384, 0, 0.11538, 0, 0.07692, 0, 0.03846, 0.5, 0.03846, 0.5, 0.07692, 0.5, 0.11538, 0.5, 0.15384, 0.5, 0.1923, 0.5, 0.23076, 0.5, 0.26923, 0.5, 0.30769, 0.5, 0.34615, 0.5, 0.38461, 0.5, 0.42307, 0.5, 0.46153, 0.5, 0.5, 0.5, 0.53846, 0.5, 0.57692, 0.5, 0.61538, 0.5, 0.65384, 0.5, 0.6923, 0.5, 0.73076, 0.5, 0.76923, 0.5, 0.80769, 0.5, 0.84615, 0.5, 0.88461, 0.5, 0.92307, 0.5, 0.96153 ], + "triangles": [ 55, 0, 1, 56, 1, 2, 55, 1, 56, 56, 2, 3, 54, 55, 56, 57, 56, 3, 57, 3, 4, 53, 54, 57, 58, 57, 4, 53, 57, 58, 58, 4, 5, 52, 53, 58, 59, 58, 5, 54, 56, 57, 52, 58, 59, 59, 5, 6, 51, 52, 59, 60, 59, 6, 51, 59, 60, 60, 6, 7, 50, 51, 60, 61, 60, 7, 50, 60, 61, 61, 7, 8, 49, 50, 61, 62, 61, 8, 49, 61, 62, 62, 8, 9, 48, 49, 62, 63, 62, 9, 48, 62, 63, 63, 9, 10, 47, 48, 63, 64, 63, 10, 47, 63, 64, 64, 10, 11, 46, 47, 64, 65, 64, 11, 46, 64, 65, 65, 11, 12, 45, 46, 65, 66, 65, 12, 45, 65, 66, 66, 12, 13, 44, 45, 66, 67, 66, 13, 44, 66, 67, 67, 13, 14, 43, 44, 67, 68, 67, 14, 43, 67, 68, 68, 14, 15, 42, 43, 68, 69, 68, 15, 42, 68, 69, 69, 15, 16, 41, 42, 69, 70, 69, 16, 41, 69, 70, 70, 16, 17, 40, 41, 70, 71, 70, 17, 40, 70, 71, 71, 17, 18, 39, 40, 71, 72, 71, 18, 39, 71, 72, 72, 18, 19, 38, 39, 72, 73, 72, 19, 38, 72, 73, 73, 19, 20, 37, 38, 73, 74, 73, 20, 37, 73, 74, 74, 20, 21, 36, 37, 74, 75, 74, 21, 36, 74, 75, 75, 21, 22, 35, 36, 75, 76, 75, 22, 35, 75, 76, 76, 22, 23, 34, 35, 76, 77, 76, 23, 34, 76, 77, 77, 23, 24, 33, 77, 78, 78, 24, 25, 32, 33, 78, 79, 78, 25, 32, 78, 79, 33, 34, 77, 78, 77, 24, 31, 32, 79, 80, 79, 26, 31, 79, 80, 80, 26, 27, 30, 31, 80, 29, 80, 27, 30, 80, 29, 29, 27, 28, 79, 25, 26 ], + "vertices": [ 4, 10, 294, 33.89, 3.2E-4, 11, 220, 33.89, 0.01648, 12, 146, 33.89, 0.21526, 13, 72, 33.89, 0.76791, 3, 11, 220, -0.1, 0.00752, 12, 146, -0.1, 0.16869, 13, 72, -0.1, 0.82378, 4, 10, 294, -34.09999, 3.2E-4, 11, 220, -34.09999, 0.01648, 12, 146, -34.09999, 0.21526, 13, 72, -34.09999, 0.76791, 4, 10, 257, -34.09999, 0.00195, 11, 183, -34.09999, 0.04739, 12, 109, -34.09999, 0.33351, 13, 35, -34.09999, 0.61714, 5, 9, 294, -34.09999, 2.4E-4, 10, 220, -34.09999, 0.01163, 11, 146, -34.09999, 0.14109, 12, 72, -34.09999, 0.49171, 13, -1.99, -34.09999, 0.35531, 5, 9, 257, -34.09999, 0.00195, 10, 183, -34.09999, 0.04663, 11, 109, -34.09999, 0.31166, 12, 35, -34.09999, 0.48761, 13, -38.99, -34.09999, 0.15212, 6, 8, 294, -34.09999, 2.4E-4, 9, 220, -34.09999, 0.01163, 10, 146, -34.09999, 0.14101, 11, 72, -34.09999, 0.48685, 12, -1.99, -34.09999, 0.31174, 13, -75.99, -34.09999, 0.0485, 6, 8, 257, -34.09999, 0.00195, 9, 183, -34.09999, 0.04663, 10, 109, -34.09999, 0.31166, 11, 35, -34.09999, 0.48685, 12, -38.99, -34.09999, 0.14101, 13, -112.99, -34.09999, 0.01188, 7, 7, 294, -34.09999, 2.4E-4, 8, 220, -34.09999, 0.01163, 9, 146, -34.09999, 0.14101, 10, 72, -34.09999, 0.48685, 11, -1.99, -34.09999, 0.31166, 12, -75.99, -34.09999, 0.04663, 13, -149.99, -34.09999, 0.00195, 7, 7, 257, -34.09999, 0.00195, 8, 183, -34.09999, 0.04663, 9, 109, -34.09999, 0.31166, 10, 35, -34.09999, 0.48685, 11, -38.99, -34.09999, 0.14101, 12, -112.99, -34.09999, 0.01163, 13, -186.99, -34.09999, 2.4E-4, 7, 6, 294, -34.09999, 2.4E-4, 7, 220, -34.09999, 0.01163, 8, 146, -34.09999, 0.14101, 9, 72, -34.09999, 0.48685, 10, -1.99, -34.09999, 0.31166, 11, -75.99, -34.09999, 0.04663, 12, -149.99, -34.09999, 0.00195, 7, 6, 257, -34.09999, 0.00195, 7, 183, -34.09999, 0.04663, 8, 109, -34.09999, 0.31166, 9, 35, -34.09999, 0.48685, 10, -38.99, -34.09999, 0.14101, 11, -112.99, -34.09999, 0.01163, 12, -186.99, -34.09999, 2.4E-4, 7, 5, 294, -34.09999, 2.4E-4, 6, 220, -34.09999, 0.01163, 7, 146, -34.09999, 0.14101, 8, 72, -34.09999, 0.48685, 9, -1.99, -34.09999, 0.31166, 10, -75.99, -34.09999, 0.04663, 11, -149.99, -34.09999, 0.00195, 7, 5, 257, -34.09999, 0.00195, 6, 183, -34.09999, 0.04663, 7, 109, -34.09999, 0.31166, 8, 35, -34.09999, 0.48685, 9, -38.99, -34.09999, 0.14101, 10, -112.99, -34.09999, 0.01163, 11, -186.99, -34.09999, 2.4E-4, 7, 4, 294, -34.09999, 2.4E-4, 5, 220, -34.09999, 0.01163, 6, 146, -34.09999, 0.14101, 7, 72, -34.09999, 0.48685, 8, -1.99, -34.09999, 0.31166, 9, -75.99, -34.09999, 0.04663, 10, -149.99, -34.09999, 0.00195, 7, 4, 257, -34.09999, 0.00195, 5, 183, -34.09999, 0.04663, 6, 109, -34.09999, 0.31166, 7, 35, -34.09999, 0.48685, 8, -38.99, -34.09999, 0.14101, 9, -112.99, -34.09999, 0.01163, 10, -186.99, -34.09999, 2.4E-4, 7, 3, 294, -34.09999, 2.4E-4, 4, 220, -34.09999, 0.01163, 5, 146, -34.09999, 0.14101, 6, 72, -34.09999, 0.48685, 7, -1.99, -34.09999, 0.31166, 8, -75.99, -34.09999, 0.04663, 9, -149.99, -34.09999, 0.00195, 7, 3, 257, -34.09999, 0.00195, 4, 183, -34.09999, 0.04663, 5, 109, -34.09999, 0.31166, 6, 35, -34.09999, 0.48685, 7, -38.99, -34.09999, 0.14101, 8, -112.99, -34.09999, 0.01163, 9, -186.99, -34.09999, 2.4E-4, 7, 2, 294, -34.09999, 2.4E-4, 3, 220, -34.09999, 0.01163, 4, 146, -34.09999, 0.14101, 5, 72, -34.09999, 0.48685, 6, -1.99, -34.09999, 0.31166, 7, -75.99, -34.09999, 0.04663, 8, -149.99, -34.09999, 0.00195, 7, 2, 257, -34.09999, 0.00195, 3, 183, -34.09999, 0.04663, 4, 109, -34.09999, 0.31166, 5, 35, -34.09999, 0.48685, 6, -38.99, -34.09999, 0.14101, 7, -112.99, -34.09999, 0.01163, 8, -186.99, -34.09999, 2.4E-4, 7, 1, 294, -34.09999, 2.4E-4, 2, 220, -34.09999, 0.01163, 3, 146, -34.09999, 0.14101, 4, 72, -34.09999, 0.48685, 5, -1.99, -34.09999, 0.31166, 6, -75.99, -34.09999, 0.04663, 7, -149.99, -34.09999, 0.00195, 7, 1, 257, -34.09999, 0.0017, 2, 183, -34.09999, 0.04687, 3, 109, -34.09999, 0.31166, 4, 35, -34.09999, 0.48685, 5, -38.99, -34.09999, 0.14101, 6, -112.99, -34.09999, 0.01163, 7, -186.99, -34.09999, 2.4E-4, 6, 1, 220, -34.09999, 0.01033, 2, 146, -34.09999, 0.14256, 3, 72, -34.09999, 0.48685, 4, -1.99, -34.09999, 0.31166, 5, -75.99, -34.09999, 0.04663, 6, -149.99, -34.09999, 0.00195, 6, 1, 183, -34.09999, 0.04058, 2, 109, -34.09999, 0.31966, 3, 35, -34.09999, 0.48685, 4, -38.99, -34.09999, 0.14101, 5, -112.99, -34.09999, 0.01163, 6, -186.99, -34.09999, 2.4E-4, 5, 1, 146, -34.09999, 0.1274, 2, 72, -34.09999, 0.51233, 3, -1.99, -34.09999, 0.31166, 4, -75.99, -34.09999, 0.04663, 5, -149.99, -34.09999, 0.00195, 5, 1, 109, -34.09999, 0.30116, 2, 35, -34.09999, 0.54594, 3, -38.99, -34.09999, 0.14101, 4, -112.99, -34.09999, 0.01163, 5, -186.99, -34.09999, 2.4E-4, 4, 1, 72, -34.09999, 0.55403, 2, -1.99, -34.09999, 0.39738, 3, -75.99, -34.09999, 0.04663, 4, -149.99, -34.09999, 0.00195, 4, 1, 35, -34.09999, 0.77978, 2, -38.99, -34.09999, 0.20825, 3, -112.99, -34.09999, 0.01171, 4, -186.99, -34.09999, 2.4E-4, 3, 1, -1.99, -34.09999, 0.89032, 2, -75.99, -34.09999, 0.10696, 3, -149.99, -34.09999, 0.00271, 3, 1, -1.99, -0.1, 0.9264, 2, -75.99, -0.1, 0.07272, 3, -149.99, -0.1, 8.6E-4, 3, 1, -1.99, 33.89, 0.89032, 2, -75.99, 33.89, 0.10696, 3, -149.99, 33.89, 0.00271, 4, 1, 35, 33.89, 0.77978, 2, -38.99, 33.89, 0.20825, 3, -112.99, 33.89, 0.01171, 4, -186.99, 33.89, 2.4E-4, 4, 1, 72, 33.89, 0.55403, 2, -1.99, 33.89, 0.39738, 3, -75.99, 33.89, 0.04663, 4, -149.99, 33.89, 0.00195, 5, 1, 109, 33.89, 0.30116, 2, 35, 33.89, 0.54594, 3, -38.99, 33.89, 0.14101, 4, -112.99, 33.89, 0.01163, 5, -186.99, 33.89, 2.4E-4, 5, 1, 146, 33.89, 0.1274, 2, 72, 33.89, 0.51233, 3, -1.99, 33.89, 0.31166, 4, -75.99, 33.89, 0.04663, 5, -149.99, 33.89, 0.00195, 6, 1, 183, 33.89, 0.04058, 2, 109, 33.89, 0.31966, 3, 35, 33.89, 0.48685, 4, -38.99, 33.89, 0.14101, 5, -112.99, 33.89, 0.01163, 6, -186.99, 33.89, 2.4E-4, 6, 1, 220, 33.89, 0.01033, 2, 146, 33.89, 0.14256, 3, 72, 33.89, 0.48685, 4, -1.99, 33.89, 0.31166, 5, -75.99, 33.89, 0.04663, 6, -149.99, 33.89, 0.00195, 7, 1, 257, 33.89, 0.0017, 2, 183, 33.89, 0.04687, 3, 109, 33.89, 0.31166, 4, 35, 33.89, 0.48685, 5, -38.99, 33.89, 0.14101, 6, -112.99, 33.89, 0.01163, 7, -186.99, 33.89, 2.4E-4, 7, 1, 294, 33.89, 2.4E-4, 2, 220, 33.89, 0.01163, 3, 146, 33.89, 0.14101, 4, 72, 33.89, 0.48685, 5, -1.99, 33.89, 0.31166, 6, -75.99, 33.89, 0.04663, 7, -149.99, 33.89, 0.00195, 7, 2, 257, 33.89, 0.00195, 3, 183, 33.89, 0.04663, 4, 109, 33.89, 0.31166, 5, 35, 33.89, 0.48685, 6, -38.99, 33.89, 0.14101, 7, -112.99, 33.89, 0.01163, 8, -186.99, 33.89, 2.4E-4, 7, 2, 294, 33.89, 2.4E-4, 3, 220, 33.89, 0.01163, 4, 146, 33.89, 0.14101, 5, 72, 33.89, 0.48685, 6, -1.99, 33.89, 0.31166, 7, -75.99, 33.89, 0.04663, 8, -149.99, 33.89, 0.00195, 7, 3, 257, 33.89, 0.00195, 4, 183, 33.89, 0.04663, 5, 109, 33.89, 0.31166, 6, 35, 33.89, 0.48685, 7, -38.99, 33.89, 0.14101, 8, -112.99, 33.89, 0.01163, 9, -186.99, 33.89, 2.4E-4, 7, 3, 294, 33.89, 2.4E-4, 4, 220, 33.89, 0.01163, 5, 146, 33.89, 0.14101, 6, 72, 33.89, 0.48685, 7, -1.99, 33.89, 0.31166, 8, -75.99, 33.89, 0.04663, 9, -149.99, 33.89, 0.00195, 7, 4, 257, 33.89, 0.00195, 5, 183, 33.89, 0.04663, 6, 109, 33.89, 0.31166, 7, 35, 33.89, 0.48685, 8, -38.99, 33.89, 0.14101, 9, -112.99, 33.89, 0.01163, 10, -186.99, 33.89, 2.4E-4, 7, 4, 294, 33.89, 2.4E-4, 5, 220, 33.89, 0.01163, 6, 146, 33.89, 0.14101, 7, 72, 33.89, 0.48685, 8, -1.99, 33.89, 0.31166, 9, -75.99, 33.89, 0.04663, 10, -149.99, 33.89, 0.00195, 7, 5, 257, 33.89, 0.00195, 6, 183, 33.89, 0.04663, 7, 109, 33.89, 0.31166, 8, 35, 33.89, 0.48685, 9, -38.99, 33.89, 0.14101, 10, -112.99, 33.89, 0.01163, 11, -186.99, 33.89, 2.4E-4, 7, 5, 294, 33.89, 2.4E-4, 6, 220, 33.89, 0.01163, 7, 146, 33.89, 0.14101, 8, 72, 33.89, 0.48685, 9, -1.99, 33.89, 0.31166, 10, -75.99, 33.89, 0.04663, 11, -149.99, 33.89, 0.00195, 7, 6, 257, 33.89, 0.00195, 7, 183, 33.89, 0.04663, 8, 109, 33.89, 0.31166, 9, 35, 33.89, 0.48685, 10, -38.99, 33.89, 0.14101, 11, -112.99, 33.89, 0.01163, 12, -186.99, 33.89, 2.4E-4, 7, 6, 294, 33.89, 2.4E-4, 7, 220, 33.89, 0.01163, 8, 146, 33.89, 0.14101, 9, 72, 33.89, 0.48685, 10, -1.99, 33.89, 0.31166, 11, -75.99, 33.89, 0.04663, 12, -149.99, 33.89, 0.00195, 7, 7, 257, 33.89, 0.00195, 8, 183, 33.89, 0.04663, 9, 109, 33.89, 0.31166, 10, 35, 33.89, 0.48685, 11, -38.99, 33.89, 0.14101, 12, -112.99, 33.89, 0.01163, 13, -186.99, 33.89, 2.4E-4, 7, 7, 294, 33.89, 2.4E-4, 8, 220, 33.89, 0.01163, 9, 146, 33.89, 0.14101, 10, 72, 33.89, 0.48685, 11, -1.99, 33.89, 0.31166, 12, -75.99, 33.89, 0.04663, 13, -149.99, 33.89, 0.00195, 6, 8, 257, 33.89, 0.00195, 9, 183, 33.89, 0.04663, 10, 109, 33.89, 0.31166, 11, 35, 33.89, 0.48685, 12, -38.99, 33.89, 0.14101, 13, -112.99, 33.89, 0.01188, 6, 8, 294, 33.89, 2.4E-4, 9, 220, 33.89, 0.01163, 10, 146, 33.89, 0.14101, 11, 72, 33.89, 0.48685, 12, -1.99, 33.89, 0.31174, 13, -75.99, 33.89, 0.0485, 5, 9, 257, 33.89, 0.00195, 10, 183, 33.89, 0.04663, 11, 109, 33.89, 0.31166, 12, 35, 33.89, 0.48761, 13, -38.99, 33.89, 0.15212, 5, 9, 294, 33.89, 2.4E-4, 10, 220, 33.89, 0.01163, 11, 146, 33.89, 0.14109, 12, 72, 33.89, 0.49171, 13, -1.99, 33.89, 0.35531, 4, 10, 257, 33.89, 0.00195, 11, 183, 33.89, 0.04739, 12, 109, 33.89, 0.33351, 13, 35, 33.89, 0.61714, 4, 10, 257, -0.1, 6.5E-4, 11, 183, -0.1, 0.03067, 12, 109, -0.1, 0.31658, 13, 35, -0.1, 0.65209, 4, 10, 220, -0.1, 0.00542, 11, 146, -0.1, 0.11402, 12, 72, -0.1, 0.5478, 13, -1.99, -0.1, 0.33273, 5, 9, 257, -0.1, 6.5E-4, 10, 183, -0.1, 0.03045, 11, 109, -0.1, 0.30373, 12, 35, -0.1, 0.54592, 13, -38.99, -0.1, 0.11923, 5, 9, 220, -0.1, 0.00542, 10, 146, -0.1, 0.11402, 11, 72, -0.1, 0.5457, 12, -1.99, -0.1, 0.30373, 13, -75.99, -0.1, 0.0311, 6, 8, 257, -0.1, 6.5E-4, 9, 183, -0.1, 0.03045, 10, 109, -0.1, 0.30373, 11, 35, -0.1, 0.5457, 12, -38.99, -0.1, 0.11402, 13, -112.99, -0.1, 0.00542, 6, 8, 220, -0.1, 0.00542, 9, 146, -0.1, 0.11402, 10, 72, -0.1, 0.5457, 11, -1.99, -0.1, 0.30373, 12, -75.99, -0.1, 0.03045, 13, -149.99, -0.1, 6.5E-4, 6, 7, 257, -0.1, 6.5E-4, 8, 183, -0.1, 0.03045, 9, 109, -0.1, 0.30373, 10, 35, -0.1, 0.5457, 11, -38.99, -0.1, 0.11402, 12, -112.99, -0.1, 0.00542, 6, 7, 220, -0.1, 0.00542, 8, 146, -0.1, 0.11402, 9, 72, -0.1, 0.5457, 10, -1.99, -0.1, 0.30373, 11, -75.99, -0.1, 0.03045, 12, -149.99, -0.1, 6.5E-4, 6, 6, 257, -0.1, 6.5E-4, 7, 183, -0.1, 0.03045, 8, 109, -0.1, 0.30373, 9, 35, -0.1, 0.5457, 10, -38.99, -0.1, 0.11402, 11, -112.99, -0.1, 0.00542, 6, 6, 220, -0.1, 0.00542, 7, 146, -0.1, 0.11402, 8, 72, -0.1, 0.5457, 9, -1.99, -0.1, 0.30373, 10, -75.99, -0.1, 0.03045, 11, -149.99, -0.1, 6.5E-4, 6, 5, 257, -0.1, 6.5E-4, 6, 183, -0.1, 0.03045, 7, 109, -0.1, 0.30373, 8, 35, -0.1, 0.5457, 9, -38.99, -0.1, 0.11402, 10, -112.99, -0.1, 0.00542, 6, 5, 220, -0.1, 0.00542, 6, 146, -0.1, 0.11402, 7, 72, -0.1, 0.5457, 8, -1.99, -0.1, 0.30373, 9, -75.99, -0.1, 0.03045, 10, -149.99, -0.1, 6.5E-4, 6, 4, 257, -0.1, 6.5E-4, 5, 183, -0.1, 0.03045, 6, 109, -0.1, 0.30373, 7, 35, -0.1, 0.5457, 8, -38.99, -0.1, 0.11402, 9, -112.99, -0.1, 0.00542, 6, 4, 220, -0.1, 0.00542, 5, 146, -0.1, 0.11402, 6, 72, -0.1, 0.5457, 7, -1.99, -0.1, 0.30373, 8, -75.99, -0.1, 0.03045, 9, -149.99, -0.1, 6.5E-4, 6, 3, 257, -0.1, 6.5E-4, 4, 183, -0.1, 0.03045, 5, 109, -0.1, 0.30373, 6, 35, -0.1, 0.5457, 7, -38.99, -0.1, 0.11402, 8, -112.99, -0.1, 0.00542, 6, 3, 220, -0.1, 0.00542, 4, 146, -0.1, 0.11402, 5, 72, -0.1, 0.5457, 6, -1.99, -0.1, 0.30373, 7, -75.99, -0.1, 0.03045, 8, -149.99, -0.1, 6.5E-4, 6, 2, 257, -0.1, 6.5E-4, 3, 183, -0.1, 0.03045, 4, 109, -0.1, 0.30373, 5, 35, -0.1, 0.5457, 6, -38.99, -0.1, 0.11402, 7, -112.99, -0.1, 0.00542, 6, 2, 220, -0.1, 0.00542, 3, 146, -0.1, 0.11402, 4, 72, -0.1, 0.5457, 5, -1.99, -0.1, 0.30373, 6, -75.99, -0.1, 0.03045, 7, -149.99, -0.1, 6.5E-4, 6, 1, 257, -0.1, 6.5E-4, 2, 183, -0.1, 0.03045, 3, 109, -0.1, 0.30373, 4, 35, -0.1, 0.5457, 5, -38.99, -0.1, 0.11402, 6, -112.99, -0.1, 0.00542, 6, 1, 220, -0.1, 0.00477, 2, 146, -0.1, 0.11467, 3, 72, -0.1, 0.5457, 4, -1.99, -0.1, 0.30373, 5, -75.99, -0.1, 0.03045, 6, -149.99, -0.1, 6.5E-4, 5, 1, 183, -0.1, 0.02676, 2, 109, -0.1, 0.30807, 3, 35, -0.1, 0.5457, 4, -38.99, -0.1, 0.11402, 5, -112.99, -0.1, 0.00542, 5, 1, 146, -0.1, 0.09905, 2, 72, -0.1, 0.5661, 3, -1.99, -0.1, 0.30373, 4, -75.99, -0.1, 0.03045, 5, -149.99, -0.1, 6.5E-4, 4, 1, 109, -0.1, 0.27658, 2, 35, -0.1, 0.60395, 3, -38.99, -0.1, 0.11402, 4, -112.99, -0.1, 0.00542, 4, 1, 72, -0.1, 0.55929, 2, -1.99, -0.1, 0.40959, 3, -75.99, -0.1, 0.03045, 4, -149.99, -0.1, 6.5E-4, 3, 1, 35, -0.1, 0.81845, 2, -38.99, -0.1, 0.17611, 3, -112.99, -0.1, 0.00542 ], + "hull": 56, + "edges": [ 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 18, 20, 20, 22, 22, 24, 24, 26, 26, 28, 28, 30, 30, 32, 32, 34, 34, 36, 36, 38, 38, 40, 40, 42, 42, 44, 44, 46, 46, 48, 48, 50, 50, 52, 52, 54, 54, 56, 60, 62, 62, 64, 64, 66, 66, 68, 68, 70, 70, 72, 72, 74, 74, 76, 76, 78, 78, 80, 80, 82, 82, 84, 84, 86, 86, 88, 88, 90, 90, 92, 92, 94, 94, 96, 96, 98, 98, 100, 100, 102, 102, 104, 104, 106, 106, 108, 108, 110, 110, 0, 0, 2, 58, 60, 2, 4, 56, 58, 62, 160, 160, 54, 64, 158, 158, 52, 66, 156, 156, 50, 68, 154, 154, 48, 46, 152, 152, 70, 72, 150, 150, 44, 42, 148, 148, 74, 76, 146, 146, 40, 38, 144, 144, 78, 80, 142, 142, 36, 34, 140, 140, 82, 84, 138, 138, 32, 30, 136, 136, 86, 88, 134, 134, 28, 26, 132, 132, 90, 92, 130, 130, 24, 22, 128, 128, 94, 96, 126, 126, 20, 18, 124, 124, 98, 100, 122, 122, 16, 14, 120, 120, 102, 12, 118, 118, 104, 106, 116, 116, 10, 8, 114, 114, 108, 110, 112, 112, 6 ], + "width": 68, + "height": 962 + } + }, + "vine-path": { + "vine-path": { + "type": "path", + "lengths": [ 223.68, 474.79, 780.31, 992.69, 1196.43, 2277.75 ], + "vertexCount": 18, + "vertices": [ 1, 14, -31.64, 22.49, 1, 1, 14, -2.73, -6.56, 1, 1, 14, 56.89, -69, 1, 1, 14, 115.57, 75.01, 1, 1, 14, 198.6, 53.37, 1, 2, 14, 332.76, 19.74, 0.8, 15, 36.41, 19.12999, 0.19999, 2, 14, 276.72, -68.37, 0.232, 15, -21.1, -68.01999, 0.76799, 1, 15, 96.09, -93.88, 1, 2, 15, 229.75, -122.63, 0.664, 16, -63.18, -122.45, 0.33599, 2, 15, 242.53, 29.31, 0.52, 16, -49.97, 29.45, 0.47999, 1, 16, 66.72, 38.65, 1, 2, 16, 183.42, 47.85, 0.80799, 17, -63.65, 48.41, 0.192, 2, 16, 177.29, -41.22, 0.77599, 17, -70.56, -40.61, 0.224, 2, 16, 265.5, -16.18, 0.488, 17, 17.86, -16.34, 0.51199, 2, 16, 343.25, 7.25, 0.21599, 17, 95.81, 6.41, 0.784, 1, 17, 138.78, 45.72, 1, 1, 17, 212.86, 5.44, 1, 1, 14, 1094.34, -1.02, 1 ] + } + } + } +}, +"animations": { + "animation": { + "slots": { + "vine": { + "color": [ + { + "time": 0, + "color": "ffcb73ff", + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 10.3666, "color": "fefaffff" } + ] + } + }, + "bones": { + "vine1": { + "scale": [ + { + "time": 0, + "x": 0, + "y": 0.183, + "curve": [ 0.302, 0.57, 0.549, 0.82 ] + }, + { + "time": 3.2333, + "x": 1.218, + "y": 1.1, + "curve": [ 0.481, 0.24, 0.708, 0.46 ] + }, + { "time": 11.4333, "x": 1, "y": 1.438 } + ] + }, + "vine-control1": { + "rotate": [ + { + "time": 0, + "angle": 39.68, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 1.2, + "angle": 0.89, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 2.1666, + "angle": 5.56, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 3.4, + "angle": 5.65, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 7.6, "angle": 1.35 } + ], + "scale": [ + { + "time": 0, + "x": 1, + "y": 1, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 4.3333, + "x": 1, + "y": 0.792, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 7.6, + "x": 1, + "y": 1, + "curve": [ 0.25, 0, 0.568, 0.99 ] + }, + { "time": 11.4333, "x": 1, "y": 0.636 } + ] + }, + "vine-control2": { + "rotate": [ + { + "time": 0, + "angle": -39.68, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 1.2, + "angle": -20.6, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 3.4, + "angle": -8.18, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 7.6, "angle": -0.96 } + ], + "scale": [ + { + "time": 0, + "x": 1, + "y": 1, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 4.3333, + "x": 1, + "y": 0.791, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 7.6, + "x": 1, + "y": 1, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 11.4333, "x": 1, "y": 0.923 } + ] + }, + "vine-control3": { + "rotate": [ + { + "time": 0, + "angle": 0, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 1.2, + "angle": 27.36, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 2.1666, + "angle": 14.82, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 3.4, + "angle": -15.24, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 7.6, "angle": -0.16 } + ], + "scale": [ + { + "time": 0, + "x": 1, + "y": 1, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 4.3333, + "x": 1, + "y": 0.791, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 7.6, + "x": 1, + "y": 1, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 11.4333, "x": 1, "y": 0.923 } + ] + }, + "vine-control4": { + "rotate": [ + { + "time": 0, + "angle": 0, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 2.1666, + "angle": -11.88, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 3.4, + "angle": 7.56, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 6.4, + "angle": 15.02, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 7.6, "angle": -0.5 } + ], + "scale": [ + { + "time": 0, + "x": 1, + "y": 1, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 4.3333, + "x": 1, + "y": 0.791, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 7.6, + "x": 1, + "y": 1, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 11.4333, "x": 1, "y": 0.923 } + ] + }, + "vine6": { + "rotate": [ + { "time": 0, "angle": 0 } + ] + }, + "vine7": { + "rotate": [ + { "time": 0, "angle": 0 } + ] + }, + "vine8": { + "rotate": [ + { "time": 0, "angle": 0 } + ] + }, + "vine9": { + "rotate": [ + { "time": 0, "angle": 0 } + ] + }, + "vine10": { + "rotate": [ + { "time": 0, "angle": 0 } + ] + }, + "vine11": { + "rotate": [ + { "time": 0, "angle": 0 } + ] + }, + "vine12": { + "rotate": [ + { "time": 0, "angle": 0 } + ] + }, + "vine13": { + "rotate": [ + { "time": 0, "angle": 0 } + ] + } + } + } +} +} \ No newline at end of file diff --git a/spine-love/data/vine.png b/spine-love/data/vine.png new file mode 100644 index 000000000..15ad8b736 Binary files /dev/null and b/spine-love/data/vine.png differ diff --git a/spine-love/main.lua b/spine-love/main.lua index 845f07c11..6a5c87b57 100644 --- a/spine-love/main.lua +++ b/spine-love/main.lua @@ -31,56 +31,78 @@ local spine = require "spine-love.spine" -local json = spine.SkeletonJson.new() -json.scale = 0.6 -local skeletonData = json:readSkeletonDataFile("data/spineboy.json") +local skeletons = {} +local activeSkeleton = 1 -local skeleton = spine.Skeleton.new(skeletonData) -function skeleton:createImage (attachment) - -- Customize where images are loaded. - return love.graphics.newImage("data/images/" .. attachment.name .. ".png") +function loadSkeleton (jsonFile, atlasFile, animation, skin, scale, x, y) + local loader = function (path) return love.graphics.newImage("data/" .. path) end + local atlas = spine.TextureAtlas.new(spine.utils.readFile("data/" .. atlasFile .. ".atlas"), loader) + + local json = spine.SkeletonJson.new(spine.TextureAtlasAttachmentLoader.new(atlas)) + json.scale = scale + local skeletonData = json:readSkeletonDataFile("data/" .. jsonFile .. ".json") + local skeleton = spine.Skeleton.new(skeletonData) + skeleton.x = x + skeleton.y = y + skeleton.flipX = false + skeleton.flipY = true + if skin then + skeleton:setSkin(skin) + end + skeleton:setToSetupPose() + + local stateData = spine.AnimationStateData.new(skeletonData) + local state = spine.AnimationState.new(stateData) + state:setAnimationByName(0, animation, true) + + state.onStart = function (trackIndex) + print(trackIndex.." start: "..state:getCurrent(trackIndex).animation.name) + end + state.onEnd = function (trackIndex) + print(trackIndex.." end: "..state:getCurrent(trackIndex).animation.name) + end + state.onComplete = function (trackIndex, loopCount) + print(trackIndex.." complete: "..state:getCurrent(trackIndex).animation.name..", "..loopCount) + end + state.onEvent = function (trackIndex, event) + print(trackIndex.." event: "..state:getCurrent(trackIndex).animation.name..", "..event.data.name..", "..event.intValue..", "..event.floatValue..", '"..(event.stringValue or "").."'") + end + + state:update(0.5) + state:apply(skeleton) + + return { state = state, skeleton = skeleton } end -skeleton.x = love.graphics.getWidth() / 2 -skeleton.y = love.graphics.getHeight() / 2 + 250 -skeleton.flipX = false -skeleton.flipY = false -skeleton.debugBones = true -- Omit or set to false to not draw debug lines on top of the images. -skeleton.debugSlots = true -skeleton:setToSetupPose() --- AnimationStateData defines crossfade durations between animations. -local stateData = spine.AnimationStateData.new(skeletonData) -stateData:setMix("walk", "jump", 0.2) -stateData:setMix("jump", "run", 0.2) - --- AnimationState has a queue of animations and can apply them with crossfading. -local state = spine.AnimationState.new(stateData) --- state:setAnimationByName(0, "test") -state:setAnimationByName(0, "walk", true) -state:addAnimationByName(0, "jump", true, 3) -state:addAnimationByName(0, "run", true, 0) - -state.onStart = function (trackIndex) - print(trackIndex.." start: "..state:getCurrent(trackIndex).animation.name) -end -state.onEnd = function (trackIndex) - print(trackIndex.." end: "..state:getCurrent(trackIndex).animation.name) -end -state.onComplete = function (trackIndex, loopCount) - print(trackIndex.." complete: "..state:getCurrent(trackIndex).animation.name..", "..loopCount) -end -state.onEvent = function (trackIndex, event) - print(trackIndex.." event: "..state:getCurrent(trackIndex).animation.name..", "..event.data.name..", "..event.intValue..", "..event.floatValue..", '"..(event.stringValue or "").."'") +function love.load(arg) + if arg[#arg] == "-debug" then require("mobdebug").start() end + table.insert(skeletons, loadSkeleton("test", "test", "animation", nil, 0.5, 400, 300)) + table.insert(skeletons, loadSkeleton("spineboy", "spineboy", "walk", nil, 0.5, 400, 500)) + table.insert(skeletons, loadSkeleton("raptor", "raptor", "walk", nil, 0.3, 400, 500)) + table.insert(skeletons, loadSkeleton("goblins-mesh", "goblins", "walk", "goblin", 1, 400, 500)) + table.insert(skeletons, loadSkeleton("tank", "tank", "drive", nil, 0.2, 600, 500)) + table.insert(skeletons, loadSkeleton("vine", "vine", "animation", nil, 0.3, 400, 500)) + table.insert(skeletons, loadSkeleton("stretchyman", "stretchyman", "sneak", nil, 0.3, 200, 500)) + skeletonRenderer = spine.SkeletonRenderer.new() end function love.update (delta) -- Update the state with the delta time, apply it, and update the world transforms. + local state = skeletons[activeSkeleton].state + local skeleton = skeletons[activeSkeleton].skeleton state:update(delta) state:apply(skeleton) skeleton:updateWorldTransform() end function love.draw () + love.graphics.setBackgroundColor(128, 128, 128, 255) love.graphics.setColor(255, 255, 255) - skeleton:draw() + local skeleton = skeletons[activeSkeleton].skeleton + skeletonRenderer:draw(skeleton) +end + +function love.mousepressed (x, y, button, istouch) + activeSkeleton = activeSkeleton + 1 + if activeSkeleton > #skeletons then activeSkeleton = 1 end end diff --git a/spine-love/spine-love/dkjson.lua b/spine-love/spine-love/dkjson.lua index e57e17cd8..d5d31a42a 100644 --- a/spine-love/spine-love/dkjson.lua +++ b/spine-love/spine-love/dkjson.lua @@ -1,7 +1,7 @@ - -- Module options: - local always_try_using_lpeg = true + -- Module options: + local always_try_using_lpeg = true - --[==[ + --[==[ David Kolf's JSON module for Lua 5.1/5.2 ======================================== @@ -11,7 +11,7 @@ David Kolf's JSON module for Lua 5.1/5.2 This module writes no global values, not even the module table. Import it using - json = require ("dkjson") + json = require ("dkjson") Exported functions and values: @@ -27,29 +27,29 @@ cycles. `state` is an optional table with the following fields: - - `indent` - When `indent` (a boolean) is set, the created string will contain - newlines and indentations. Otherwise it will be one long line. - - `keyorder` - `keyorder` is an array to specify the ordering of keys in the - encoded output. If an object has keys which are not in this array - they are written after the sorted keys. - - `level` - This is the initial level of indentation used when `indent` is - set. For each level two spaces are added. When absent it is set - to 0. - - `buffer` - `buffer` is an array to store the strings for the result so they - can be concatenated at once. When it isn't given, the encode - function will create it temporary and will return the - concatenated result. - - `bufferlen` - When `bufferlen` is set, it has to be the index of the last - element of `buffer`. - - `tables` - `tables` is a set to detect reference cycles. It is created - temporary when absent. Every table that is currently processed - is used as key, the value is `true`. + - `indent` + When `indent` (a boolean) is set, the created string will contain + newlines and indentations. Otherwise it will be one long line. + - `keyorder` + `keyorder` is an array to specify the ordering of keys in the + encoded output. If an object has keys which are not in this array + they are written after the sorted keys. + - `level` + This is the initial level of indentation used when `indent` is + set. For each level two spaces are added. When absent it is set + to 0. + - `buffer` + `buffer` is an array to store the strings for the result so they + can be concatenated at once. When it isn't given, the encode + function will create it temporary and will return the + concatenated result. + - `bufferlen` + When `bufferlen` is set, it has to be the index of the last + element of `buffer`. + - `tables` + `tables` is a set to detect reference cycles. It is created + temporary when absent. Every table that is currently processed + is used as key, the value is `true`. When `state.buffer` was set, the return value will be `true` on success. Without `state.buffer` the return value will be a string. @@ -72,11 +72,11 @@ Two metatables are created. Every array or object that is decoded gets a metatable with the `__jsontype` field set to either `array` or `object`. If you want to provide your own metatables use the syntax - json.decode (string, position, null, objectmeta, arraymeta) + json.decode (string, position, null, objectmeta, arraymeta) To prevent the assigning of metatables pass `nil`: - json.decode (string, position, null, nil) + json.decode (string, position, null, nil) `.__jsonorder` ------------------------- @@ -126,7 +126,7 @@ LPeg support When the local configuration variable `always_try_using_lpeg` is set, this module tries to load LPeg to replace the `decode` function. The speed increase is significant. You can get the LPeg module at - . + . When LPeg couldn't be loaded, the pure Lua functions stay active. In case you don't want this module to require LPeg on its own, @@ -142,13 +142,13 @@ and `decode` with functions that use LPeg patterns. This function returns the module table, so you can load the module using: - json = require "dkjson".use_lpeg() + json = require "dkjson".use_lpeg() Alternatively you can use `pcall` so the JSON module still works when LPeg isn't found. - json = require "dkjson" - pcall (json.use_lpeg) + json = require "dkjson" + pcall (json.use_lpeg) ### `json.using_lpeg` @@ -187,21 +187,21 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + The source code is enclosed in a HTML comment so it won't be displayed + by browsers, but it should be removed from the final HTML file as + it isn't a valid HTML comment (and wastes space). + --> -