mirror of
https://github.com/EsotericSoftware/spine-runtimes.git
synced 2026-03-26 22:49:01 +08:00
Merge remote-tracking branch 'origin/3.6-beta' into 3.6-beta
This commit is contained in:
commit
694214d729
9
.gitignore
vendored
9
.gitignore
vendored
@ -104,3 +104,12 @@ spine-turbulenz/spine-js/spine.js
|
|||||||
spine-threejs/spine-js/spine.js
|
spine-threejs/spine-js/spine.js
|
||||||
|
|
||||||
spine-ts/.vscode/*
|
spine-ts/.vscode/*
|
||||||
|
|
||||||
|
spine-ue4/Binaries
|
||||||
|
spine-ue4/Intermediate
|
||||||
|
spine-ue4/Saved
|
||||||
|
spine-ue4/SpineUE4.xcworkspace
|
||||||
|
spine-ue4/Plugins/SpinePlugin/Source/SpinePlugin/Public/spine-c
|
||||||
|
spine-ue4/Plugins/SpinePlugin/Binaries
|
||||||
|
spine-ue4/SpineUE4.VC.opendb
|
||||||
|
spine-ue4/SpineUE4.sln
|
||||||
|
|||||||
3
CHANGELOG.md
Normal file
3
CHANGELOG.md
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
# 3.6.x
|
||||||
|
* [c] Modified kvec.h used by SkeletonBinary.c to use Spine's MALLOC/FREE macros. That way there's only one place
|
||||||
|
to inject custom allocators ([extension.h](https://github.com/EsotericSoftware/spine-runtimes/blob/master/spine-c/spine-c/include/spine/extension.h)) [commit](https://github.com/EsotericSoftware/spine-runtimes/commit/c2cfbc6cb8709daa082726222d558188d75a004f)
|
||||||
File diff suppressed because it is too large
Load Diff
Binary file not shown.
@ -1,39 +1,39 @@
|
|||||||
{
|
{
|
||||||
"skeleton": { "hash": "Mc0suer5LoUZv7DvFA3mLFATKFU", "spine": "3.5.03-beta", "width": 897, "height": 716.36, "fps": 30, "images": "./images/" },
|
"skeleton": { "hash": "wKRjA+djIs9K05d/19sZhwmP3Ow", "spine": "3.6.05-beta", "width": 897, "height": 716.36, "images": "./images/" },
|
||||||
"bones": [
|
"bones": [
|
||||||
{ "name": "root", "y": -176.12 },
|
{ "name": "root", "y": -176.12 },
|
||||||
{ "name": "COG", "parent": "root", "y": 176.12 },
|
{ "name": "COG", "parent": "root", "y": 176.12 },
|
||||||
{ "name": "chest", "parent": "COG", "length": 31.24, "rotation": 161.7, "x": 52.52, "y": 15.34 },
|
{ "name": "chest", "parent": "COG", "length": 31.24, "rotation": 161.7, "x": 52.53, "y": 15.35 },
|
||||||
{ "name": "L_front_thigh", "parent": "chest", "length": 67.42, "rotation": 138.94, "x": -45.58, "y": 7.92 },
|
{ "name": "L_front_thigh", "parent": "chest", "length": 67.42, "rotation": 138.94, "x": -45.59, "y": 7.93 },
|
||||||
{ "name": "L_front_leg", "parent": "L_front_thigh", "length": 51.57, "rotation": 43.36, "x": 67.42, "y": 0.02 },
|
{ "name": "L_front_leg", "parent": "L_front_thigh", "length": 51.58, "rotation": 43.36, "x": 67.42, "y": 0.03 },
|
||||||
{ "name": "L_front_toe1", "parent": "L_front_leg", "length": 51.44, "rotation": -98, "x": 45.53, "y": 2.43 },
|
{ "name": "L_front_toe1", "parent": "L_front_leg", "length": 51.45, "rotation": -98.01, "x": 45.54, "y": 2.43 },
|
||||||
{ "name": "L_front_toe2", "parent": "L_front_leg", "length": 61.97, "rotation": -55.26, "x": 51.57, "y": -0.12 },
|
{ "name": "L_front_toe2", "parent": "L_front_leg", "length": 61.98, "rotation": -55.26, "x": 51.58, "y": -0.13 },
|
||||||
{ "name": "L_front_toe3", "parent": "L_front_leg", "length": 45.65, "rotation": -11.13, "x": 54.19, "y": 0.6, "scaleX": 1.134 },
|
{ "name": "L_front_toe3", "parent": "L_front_leg", "length": 45.65, "rotation": -11.14, "x": 54.19, "y": 0.6, "scaleX": 1.135 },
|
||||||
{ "name": "L_front_toe4", "parent": "L_front_leg", "length": 53.47, "rotation": 19.42, "x": 50.6, "y": 7.08, "scaleX": 1.134 },
|
{ "name": "L_front_toe4", "parent": "L_front_leg", "length": 53.47, "rotation": 19.43, "x": 50.61, "y": 7.09, "scaleX": 1.135 },
|
||||||
{ "name": "back", "parent": "COG", "length": 115.37, "rotation": 151.83, "x": 16.03, "y": 27.94 },
|
{ "name": "back", "parent": "COG", "length": 115.38, "rotation": 151.83, "x": 16.04, "y": 27.94 },
|
||||||
{ "name": "R_rear_thigh", "parent": "back", "length": 123.46, "rotation": 104.87, "x": 65.31, "y": 59.89 },
|
{ "name": "R_rear_thigh", "parent": "back", "length": 123.47, "rotation": 104.88, "x": 65.31, "y": 59.89 },
|
||||||
{ "name": "L_rear_thigh", "parent": "R_rear_thigh", "length": 88.05, "rotation": 28.35, "x": -8.59, "y": 30.18 },
|
{ "name": "L_rear_thigh", "parent": "R_rear_thigh", "length": 88.06, "rotation": 28.35, "x": -8.59, "y": 30.19 },
|
||||||
{ "name": "L_rear_leg", "parent": "L_rear_thigh", "length": 103.74, "rotation": -122.41, "x": 96.04, "y": -0.97 },
|
{ "name": "L_rear_leg", "parent": "L_rear_thigh", "length": 103.74, "rotation": -122.41, "x": 96.04, "y": -0.97 },
|
||||||
{ "name": "L_wing", "parent": "chest", "length": 301.12, "rotation": -75.51, "x": -7.24, "y": -24.65 },
|
{ "name": "L_wing", "parent": "chest", "length": 301.12, "rotation": -75.51, "x": -7.25, "y": -24.66 },
|
||||||
{ "name": "R_front_thigh", "parent": "chest", "length": 81.63, "rotation": 67.96, "x": -10.89, "y": 28.25 },
|
{ "name": "R_front_thigh", "parent": "chest", "length": 81.64, "rotation": 67.97, "x": -10.89, "y": 28.25 },
|
||||||
{ "name": "R_front_leg", "parent": "R_front_thigh", "length": 66.52, "rotation": 92.7, "x": 83.04, "y": -0.3 },
|
{ "name": "R_front_leg", "parent": "R_front_thigh", "length": 66.53, "rotation": 92.7, "x": 83.05, "y": -0.31 },
|
||||||
{ "name": "R_front_toe1", "parent": "R_front_leg", "length": 46.65, "rotation": 8.59, "x": 70.03, "y": 5.31 },
|
{ "name": "R_front_toe1", "parent": "R_front_leg", "length": 46.66, "rotation": 8.59, "x": 70.03, "y": 5.31 },
|
||||||
{ "name": "R_front_toe2", "parent": "R_front_leg", "length": 53.66, "rotation": -35.02, "x": 66.52, "y": 0.33 },
|
{ "name": "R_front_toe2", "parent": "R_front_leg", "length": 53.67, "rotation": -35.02, "x": 66.53, "y": 0.34 },
|
||||||
{ "name": "R_front_toe3", "parent": "R_front_leg", "length": 58.38, "rotation": -74.67, "x": 62.1, "y": -0.79 },
|
{ "name": "R_front_toe3", "parent": "R_front_leg", "length": 58.39, "rotation": -74.67, "x": 62.1, "y": -0.79 },
|
||||||
{ "name": "R_rear_leg", "parent": "R_rear_thigh", "length": 91.06, "rotation": -129.04, "x": 123.46, "y": -0.26 },
|
{ "name": "R_rear_leg", "parent": "R_rear_thigh", "length": 91.06, "rotation": -129.04, "x": 123.47, "y": -0.27 },
|
||||||
{ "name": "R_rear_toe1", "parent": "R_rear_leg", "length": 94.99, "rotation": 141.98, "x": 90.06, "y": 2.12 },
|
{ "name": "R_rear_toe1", "parent": "R_rear_leg", "length": 95, "rotation": 141.98, "x": 90.07, "y": 2.12 },
|
||||||
{ "name": "R_rear_toe2", "parent": "R_rear_leg", "length": 99.29, "rotation": 125.32, "x": 89.6, "y": 1.52 },
|
{ "name": "R_rear_toe2", "parent": "R_rear_leg", "length": 99.29, "rotation": 125.32, "x": 89.6, "y": 1.52 },
|
||||||
{ "name": "R_rear_toe3", "parent": "R_rear_leg", "length": 103.45, "rotation": 112.26, "x": 91.06, "y": -0.35 },
|
{ "name": "R_rear_toe3", "parent": "R_rear_leg", "length": 103.46, "rotation": 112.27, "x": 91.06, "y": -0.35 },
|
||||||
{ "name": "neck", "parent": "COG", "length": 41.36, "rotation": 39.05, "x": 64.75, "y": 11.98 },
|
{ "name": "neck", "parent": "COG", "length": 41.37, "rotation": 39.06, "x": 64.76, "y": 11.98 },
|
||||||
{ "name": "head", "parent": "neck", "length": 188.83, "rotation": 8.06, "x": 69.96, "y": 2.49 },
|
{ "name": "head", "parent": "neck", "length": 188.84, "rotation": 8.07, "x": 69.96, "y": 2.5 },
|
||||||
{ "name": "R_wing", "parent": "head", "length": 359.5, "rotation": 83.21, "x": -74.68, "y": 20.9 },
|
{ "name": "R_wing", "parent": "head", "length": 359.5, "rotation": 83.21, "x": -74.68, "y": 20.91 },
|
||||||
{ "name": "chin", "parent": "neck", "length": 153.15, "rotation": -69.07, "x": 64.62, "y": -6.99 },
|
{ "name": "chin", "parent": "neck", "length": 153.16, "rotation": -69.07, "x": 64.63, "y": -6.99 },
|
||||||
{ "name": "tail1", "parent": "back", "length": 65.65, "rotation": 44.31, "x": 115.37, "y": -0.19 },
|
{ "name": "tail1", "parent": "back", "length": 65.65, "rotation": 44.32, "x": 115.38, "y": -0.2 },
|
||||||
{ "name": "tail2", "parent": "tail1", "length": 54.5, "rotation": 12, "x": 65.65, "y": 0.22 },
|
{ "name": "tail2", "parent": "tail1", "length": 54.5, "rotation": 12, "x": 65.65, "y": 0.23 },
|
||||||
{ "name": "tail3", "parent": "tail2", "length": 41.78, "rotation": 1.8, "x": 54.5, "y": 0.37 },
|
{ "name": "tail3", "parent": "tail2", "length": 41.78, "rotation": 1.8, "x": 54.5, "y": 0.37 },
|
||||||
{ "name": "tail4", "parent": "tail3", "length": 34.19, "rotation": -1.8, "x": 41.78, "y": 0.16 },
|
{ "name": "tail4", "parent": "tail3", "length": 34.19, "rotation": -1.8, "x": 41.78, "y": 0.16 },
|
||||||
{ "name": "tail5", "parent": "tail4", "length": 32.32, "rotation": -3.15, "x": 34.19, "y": -0.19 },
|
{ "name": "tail5", "parent": "tail4", "length": 32.33, "rotation": -3.15, "x": 34.19, "y": -0.19 },
|
||||||
{ "name": "tail6", "parent": "tail5", "length": 80.08, "rotation": -29.55, "x": 32.32, "y": -0.23 }
|
{ "name": "tail6", "parent": "tail5", "length": 80.08, "rotation": -29.55, "x": 32.33, "y": -0.23 }
|
||||||
],
|
],
|
||||||
"slots": [
|
"slots": [
|
||||||
{ "name": "L_rear_leg", "bone": "L_rear_leg", "attachment": "L_rear_leg" },
|
{ "name": "L_rear_leg", "bone": "L_rear_leg", "attachment": "L_rear_leg" },
|
||||||
@ -71,113 +71,113 @@
|
|||||||
"skins": {
|
"skins": {
|
||||||
"default": {
|
"default": {
|
||||||
"L_front_leg": {
|
"L_front_leg": {
|
||||||
"L_front_leg": { "x": 14.68, "y": 0.48, "rotation": 15.99, "width": 84, "height": 57 }
|
"L_front_leg": { "x": 14.69, "y": 0.49, "rotation": 16, "width": 84, "height": 57 }
|
||||||
},
|
},
|
||||||
"L_front_thigh": {
|
"L_front_thigh": {
|
||||||
"L_front_thigh": { "x": 27.66, "y": -11.58, "rotation": 58.66, "width": 84, "height": 72 }
|
"L_front_thigh": { "x": 27.66, "y": -11.59, "rotation": 58.66, "width": 84, "height": 72 }
|
||||||
},
|
},
|
||||||
"L_front_toe1": {
|
"L_front_toe1": {
|
||||||
"front_toeA": { "x": 31.92, "y": 0.61, "rotation": 109.55, "width": 29, "height": 50 }
|
"front_toeA": { "x": 31.93, "y": 0.61, "rotation": 109.56, "width": 29, "height": 50 }
|
||||||
},
|
},
|
||||||
"L_front_toe2": {
|
"L_front_toe2": {
|
||||||
"front_toeB": { "x": 26.83, "y": -4.94, "rotation": 109.51, "width": 56, "height": 57 }
|
"front_toeB": { "x": 26.84, "y": -4.95, "rotation": 109.51, "width": 56, "height": 57 }
|
||||||
},
|
},
|
||||||
"L_front_toe3": {
|
"L_front_toe3": {
|
||||||
"front_toeB": { "x": 18.21, "y": -7.21, "scaleX": 0.881, "scaleY": 0.94, "rotation": 99.71, "width": 56, "height": 57 }
|
"front_toeB": { "x": 18.22, "y": -7.22, "scaleX": 0.881, "scaleY": 0.941, "rotation": 99.71, "width": 56, "height": 57 }
|
||||||
},
|
},
|
||||||
"L_front_toe4": {
|
"L_front_toe4": {
|
||||||
"front_toeB": { "x": 23.21, "y": -11.68, "scaleX": 0.881, "rotation": 79.89, "width": 56, "height": 57 }
|
"front_toeB": { "x": 23.21, "y": -11.69, "scaleX": 0.881, "rotation": 79.89, "width": 56, "height": 57 }
|
||||||
},
|
},
|
||||||
"L_rear_leg": {
|
"L_rear_leg": {
|
||||||
"L_rear_leg": { "x": 67.29, "y": 12.62, "rotation": -162.65, "width": 206, "height": 177 }
|
"L_rear_leg": { "x": 67.29, "y": 12.63, "rotation": -162.65, "width": 206, "height": 177 }
|
||||||
},
|
},
|
||||||
"L_rear_thigh": {
|
"L_rear_thigh": {
|
||||||
"L_rear_thigh": { "x": 56.03, "y": 27.38, "rotation": 74.93, "width": 91, "height": 149 }
|
"L_rear_thigh": { "x": 56.03, "y": 27.39, "rotation": 74.94, "width": 91, "height": 149 }
|
||||||
},
|
},
|
||||||
"L_wing": {
|
"L_wing": {
|
||||||
"L_wing01": { "x": 129.21, "y": -45.49, "rotation": -83.7, "width": 191, "height": 256 },
|
"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_wing02": { "x": 126.38, "y": -31.69, "rotation": -86.19, "width": 179, "height": 269 },
|
||||||
"L_wing03": { "x": 110.26, "y": -90.89, "rotation": -86.18, "width": 186, "height": 207 },
|
"L_wing03": { "x": 110.27, "y": -90.89, "rotation": -86.19, "width": 186, "height": 207 },
|
||||||
"L_wing04": { "x": -61.61, "y": -83.26, "rotation": -86.18, "width": 188, "height": 135 },
|
"L_wing04": { "x": -61.62, "y": -83.27, "rotation": -86.19, "width": 188, "height": 135 },
|
||||||
"L_wing05": { "x": -90.01, "y": -78.14, "rotation": -86.18, "width": 218, "height": 213 },
|
"L_wing05": { "x": -90.02, "y": -78.14, "rotation": -86.19, "width": 218, "height": 213 },
|
||||||
"L_wing06": { "x": -143.76, "y": -83.71, "rotation": -86.18, "width": 192, "height": 331 },
|
"L_wing06": { "x": -143.77, "y": -83.72, "rotation": -86.19, "width": 192, "height": 331 },
|
||||||
"L_wing07": { "x": -133.04, "y": -33.89, "rotation": -86.18, "width": 159, "height": 255 },
|
"L_wing07": { "x": -133.05, "y": -33.9, "rotation": -86.19, "width": 159, "height": 255 },
|
||||||
"L_wing08": { "x": 50.15, "y": -15.71, "rotation": -86.18, "width": 164, "height": 181 },
|
"L_wing08": { "x": 50.15, "y": -15.71, "rotation": -86.19, "width": 164, "height": 181 },
|
||||||
"L_wing09": { "x": 85.94, "y": -11.32, "rotation": -86.18, "width": 204, "height": 167 }
|
"L_wing09": { "x": 85.94, "y": -11.33, "rotation": -86.19, "width": 204, "height": 167 }
|
||||||
},
|
},
|
||||||
"R_front_leg": {
|
"R_front_leg": {
|
||||||
"R_front_leg": { "x": 17.79, "y": 4.22, "rotation": 37.62, "width": 101, "height": 89 }
|
"R_front_leg": { "x": 17.8, "y": 4.23, "rotation": 37.63, "width": 101, "height": 89 }
|
||||||
},
|
},
|
||||||
"R_front_thigh": {
|
"R_front_thigh": {
|
||||||
"R_front_thigh": { "x": 35.28, "y": 2.11, "rotation": 130.33, "width": 108, "height": 108 }
|
"R_front_thigh": { "x": 35.29, "y": 2.11, "rotation": 130.33, "width": 108, "height": 108 }
|
||||||
},
|
},
|
||||||
"R_front_toe1": {
|
"R_front_toe1": {
|
||||||
"front_toeB": { "x": 24.49, "y": -2.61, "rotation": 104.18, "width": 56, "height": 57 }
|
"front_toeB": { "x": 24.5, "y": -2.61, "rotation": 104.18, "width": 56, "height": 57 }
|
||||||
},
|
},
|
||||||
"R_front_toe2": {
|
"R_front_toe2": {
|
||||||
"front_toeB": { "x": 26.39, "y": 1.16, "rotation": 104.57, "width": 56, "height": 57 }
|
"front_toeB": { "x": 26.39, "y": 1.17, "rotation": 104.58, "width": 56, "height": 57 }
|
||||||
},
|
},
|
||||||
"R_front_toe3": {
|
"R_front_toe3": {
|
||||||
"front_toeB": { "x": 30.66, "y": -0.06, "rotation": 112.29, "width": 56, "height": 57 }
|
"front_toeB": { "x": 30.67, "y": -0.07, "rotation": 112.3, "width": 56, "height": 57 }
|
||||||
},
|
},
|
||||||
"R_rear_leg": {
|
"R_rear_leg": {
|
||||||
"R_rear_leg": { "x": 60.87, "y": -5.72, "rotation": -127.66, "width": 116, "height": 100 }
|
"R_rear_leg": { "x": 60.88, "y": -5.73, "rotation": -127.67, "width": 116, "height": 100 }
|
||||||
},
|
},
|
||||||
"R_rear_thigh": {
|
"R_rear_thigh": {
|
||||||
"R_rear_thigh": { "x": 53.25, "y": 12.58, "rotation": 103.29, "width": 91, "height": 149 }
|
"R_rear_thigh": { "x": 53.25, "y": 12.58, "rotation": 103.29, "width": 91, "height": 149 }
|
||||||
},
|
},
|
||||||
"R_rear_toe1": {
|
"R_rear_toe1": {
|
||||||
"rear-toe": { "x": 54.75, "y": -5.72, "rotation": 134.79, "width": 109, "height": 77 }
|
"rear-toe": { "x": 54.76, "y": -5.72, "rotation": 134.79, "width": 109, "height": 77 }
|
||||||
},
|
},
|
||||||
"R_rear_toe2": {
|
"R_rear_toe2": {
|
||||||
"rear-toe": { "x": 57.02, "y": -7.22, "rotation": 134.42, "width": 109, "height": 77 }
|
"rear-toe": { "x": 57.03, "y": -7.23, "rotation": 134.43, "width": 109, "height": 77 }
|
||||||
},
|
},
|
||||||
"R_rear_toe3": {
|
"R_rear_toe3": {
|
||||||
"rear-toe": { "x": 47.46, "y": -7.64, "rotation": 134.34, "width": 109, "height": 77 }
|
"rear-toe": { "x": 47.46, "y": -7.64, "rotation": 134.34, "width": 109, "height": 77 }
|
||||||
},
|
},
|
||||||
"R_wing": {
|
"R_wing": {
|
||||||
"R_wing01": { "x": 170.08, "y": -23.67, "rotation": -130.33, "width": 219, "height": 310 },
|
"R_wing01": { "x": 170.08, "y": -23.68, "rotation": -130.34, "width": 219, "height": 310 },
|
||||||
"R_wing02": { "x": 171.14, "y": -19.33, "rotation": -130.33, "width": 203, "height": 305 },
|
"R_wing02": { "x": 171.15, "y": -19.33, "rotation": -130.34, "width": 203, "height": 305 },
|
||||||
"R_wing03": { "x": 166.46, "y": 29.23, "rotation": -130.33, "width": 272, "height": 247 },
|
"R_wing03": { "x": 166.46, "y": 29.24, "rotation": -130.34, "width": 272, "height": 247 },
|
||||||
"R_wing04": { "x": 42.94, "y": 134.05, "rotation": -130.33, "width": 279, "height": 144 },
|
"R_wing04": { "x": 42.94, "y": 134.06, "rotation": -130.34, "width": 279, "height": 144 },
|
||||||
"R_wing05": { "x": -8.83, "y": 142.59, "rotation": -130.33, "width": 251, "height": 229 },
|
"R_wing05": { "x": -8.84, "y": 142.59, "rotation": -130.34, "width": 251, "height": 229 },
|
||||||
"R_wing06": { "x": -123.33, "y": 111.22, "rotation": -130.33, "width": 200, "height": 366 },
|
"R_wing06": { "x": -123.33, "y": 111.22, "rotation": -130.34, "width": 200, "height": 366 },
|
||||||
"R_wing07": { "x": -40.17, "y": 118.03, "rotation": -130.33, "width": 200, "height": 263 },
|
"R_wing07": { "x": -40.17, "y": 118.03, "rotation": -130.34, "width": 200, "height": 263 },
|
||||||
"R_wing08": { "x": 48.01, "y": 28.76, "rotation": -130.33, "width": 234, "height": 254 },
|
"R_wing08": { "x": 48.02, "y": 28.76, "rotation": -130.34, "width": 234, "height": 254 },
|
||||||
"R_wing09": { "x": 128.1, "y": 21.12, "rotation": -130.33, "width": 248, "height": 204 }
|
"R_wing09": { "x": 128.1, "y": 21.13, "rotation": -130.34, "width": 248, "height": 204 }
|
||||||
},
|
},
|
||||||
"back": {
|
"back": {
|
||||||
"back": { "x": 35.84, "y": 19.99, "rotation": -151.83, "width": 190, "height": 185 }
|
"back": { "x": 35.85, "y": 19.99, "rotation": -151.83, "width": 190, "height": 185 }
|
||||||
},
|
},
|
||||||
"chest": {
|
"chest": {
|
||||||
"chest": { "x": -14.6, "y": 24.78, "rotation": -161.7, "width": 136, "height": 122 }
|
"chest": { "x": -14.6, "y": 24.79, "rotation": -161.7, "width": 136, "height": 122 }
|
||||||
},
|
},
|
||||||
"chin": {
|
"chin": {
|
||||||
"chin": { "x": 66.55, "y": 7.32, "rotation": 30.01, "width": 214, "height": 146 }
|
"chin": { "x": 66.55, "y": 7.32, "rotation": 30.01, "width": 214, "height": 146 }
|
||||||
},
|
},
|
||||||
"head": {
|
"head": {
|
||||||
"head": { "x": 76.68, "y": 32.21, "rotation": -47.12, "width": 296, "height": 260 }
|
"head": { "x": 76.69, "y": 32.21, "rotation": -47.13, "width": 296, "height": 260 }
|
||||||
},
|
},
|
||||||
"logo": {
|
"logo": {
|
||||||
"logo": { "y": -176.72, "width": 897, "height": 92 }
|
"logo": { "y": -176.72, "width": 897, "height": 92 }
|
||||||
},
|
},
|
||||||
"tail1": {
|
"tail1": {
|
||||||
"tail01": { "x": 22.59, "y": -4.5, "rotation": 163.85, "width": 120, "height": 153 }
|
"tail01": { "x": 22.6, "y": -4.5, "rotation": 163.85, "width": 120, "height": 153 }
|
||||||
},
|
},
|
||||||
"tail2": {
|
"tail2": {
|
||||||
"tail02": { "x": 18.11, "y": -1.75, "rotation": 151.84, "width": 95, "height": 120 }
|
"tail02": { "x": 18.12, "y": -1.75, "rotation": 151.85, "width": 95, "height": 120 }
|
||||||
},
|
},
|
||||||
"tail3": {
|
"tail3": {
|
||||||
"tail03": { "x": 16.94, "y": -2, "rotation": 150.04, "width": 73, "height": 92 }
|
"tail03": { "x": 16.94, "y": -2.01, "rotation": 150.04, "width": 73, "height": 92 }
|
||||||
},
|
},
|
||||||
"tail4": {
|
"tail4": {
|
||||||
"tail04": { "x": 15.34, "y": -2.17, "rotation": 151.84, "width": 56, "height": 71 }
|
"tail04": { "x": 15.35, "y": -2.18, "rotation": 151.85, "width": 56, "height": 71 }
|
||||||
},
|
},
|
||||||
"tail5": {
|
"tail5": {
|
||||||
"tail05": { "x": 15.05, "y": -3.57, "rotation": 155, "width": 52, "height": 59 }
|
"tail05": { "x": 15.06, "y": -3.57, "rotation": 155, "width": 52, "height": 59 }
|
||||||
},
|
},
|
||||||
"tail6": {
|
"tail6": {
|
||||||
"tail06": { "x": 28.02, "y": -16.83, "rotation": -175.44, "width": 95, "height": 68 }
|
"tail06": { "x": 28.02, "y": -16.83, "rotation": -175.45, "width": 95, "height": 68 }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -187,45 +187,45 @@
|
|||||||
"L_wing": {
|
"L_wing": {
|
||||||
"attachment": [
|
"attachment": [
|
||||||
{ "time": 0, "name": "L_wing01" },
|
{ "time": 0, "name": "L_wing01" },
|
||||||
{ "time": 0.0666, "name": "L_wing02" },
|
{ "time": 0.0667, "name": "L_wing02" },
|
||||||
{ "time": 0.1333, "name": "L_wing03" },
|
{ "time": 0.1333, "name": "L_wing03" },
|
||||||
{ "time": 0.2, "name": "L_wing04" },
|
{ "time": 0.2, "name": "L_wing04" },
|
||||||
{ "time": 0.2666, "name": "L_wing05" },
|
{ "time": 0.2667, "name": "L_wing05" },
|
||||||
{ "time": 0.3333, "name": "L_wing06" },
|
{ "time": 0.3333, "name": "L_wing06" },
|
||||||
{ "time": 0.4, "name": "L_wing07" },
|
{ "time": 0.4, "name": "L_wing07" },
|
||||||
{ "time": 0.4666, "name": "L_wing08" },
|
{ "time": 0.4667, "name": "L_wing08" },
|
||||||
{ "time": 0.5333, "name": "L_wing09" },
|
{ "time": 0.5333, "name": "L_wing09" },
|
||||||
{ "time": 0.6, "name": "L_wing01" },
|
{ "time": 0.6, "name": "L_wing01" },
|
||||||
{ "time": 0.7333, "name": "L_wing02" },
|
{ "time": 0.7333, "name": "L_wing02" },
|
||||||
{ "time": 0.8, "name": "L_wing03" },
|
{ "time": 0.8, "name": "L_wing03" },
|
||||||
{ "time": 0.8333, "name": "L_wing04" },
|
{ "time": 0.8333, "name": "L_wing04" },
|
||||||
{ "time": 0.8666, "name": "L_wing05" },
|
{ "time": 0.8667, "name": "L_wing05" },
|
||||||
{ "time": 0.8999, "name": "L_wing06" },
|
{ "time": 0.9, "name": "L_wing06" },
|
||||||
{ "time": 0.9333, "name": "L_wing07" },
|
{ "time": 0.9333, "name": "L_wing07" },
|
||||||
{ "time": 0.9666, "name": "L_wing08" },
|
{ "time": 0.9667, "name": "L_wing08" },
|
||||||
{ "time": 1, "name": "L_wing01" }
|
{ "time": 1, "name": "L_wing01" }
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"R_wing": {
|
"R_wing": {
|
||||||
"attachment": [
|
"attachment": [
|
||||||
{ "time": 0, "name": "R_wing01" },
|
{ "time": 0, "name": "R_wing01" },
|
||||||
{ "time": 0.0666, "name": "R_wing02" },
|
{ "time": 0.0667, "name": "R_wing02" },
|
||||||
{ "time": 0.1333, "name": "R_wing03" },
|
{ "time": 0.1333, "name": "R_wing03" },
|
||||||
{ "time": 0.2, "name": "R_wing04" },
|
{ "time": 0.2, "name": "R_wing04" },
|
||||||
{ "time": 0.2666, "name": "R_wing05" },
|
{ "time": 0.2667, "name": "R_wing05" },
|
||||||
{ "time": 0.3333, "name": "R_wing06" },
|
{ "time": 0.3333, "name": "R_wing06" },
|
||||||
{ "time": 0.4, "name": "R_wing07" },
|
{ "time": 0.4, "name": "R_wing07" },
|
||||||
{ "time": 0.4666, "name": "R_wing08" },
|
{ "time": 0.4667, "name": "R_wing08" },
|
||||||
{ "time": 0.5333, "name": "R_wing09" },
|
{ "time": 0.5333, "name": "R_wing09" },
|
||||||
{ "time": 0.6, "name": "R_wing01" },
|
{ "time": 0.6, "name": "R_wing01" },
|
||||||
{ "time": 0.7333, "name": "R_wing02" },
|
{ "time": 0.7333, "name": "R_wing02" },
|
||||||
{ "time": 0.7666, "name": "R_wing02" },
|
{ "time": 0.7667, "name": "R_wing02" },
|
||||||
{ "time": 0.8, "name": "R_wing03" },
|
{ "time": 0.8, "name": "R_wing03" },
|
||||||
{ "time": 0.8333, "name": "R_wing04" },
|
{ "time": 0.8333, "name": "R_wing04" },
|
||||||
{ "time": 0.8666, "name": "R_wing05" },
|
{ "time": 0.8667, "name": "R_wing05" },
|
||||||
{ "time": 0.8999, "name": "R_wing06" },
|
{ "time": 0.9, "name": "R_wing06" },
|
||||||
{ "time": 0.9333, "name": "R_wing07" },
|
{ "time": 0.9333, "name": "R_wing07" },
|
||||||
{ "time": 0.9666, "name": "R_wing08" },
|
{ "time": 0.9667, "name": "R_wing08" },
|
||||||
{ "time": 1, "name": "R_wing01" }
|
{ "time": 1, "name": "R_wing01" }
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@ -234,9 +234,9 @@
|
|||||||
"back": {
|
"back": {
|
||||||
"rotate": [
|
"rotate": [
|
||||||
{ "time": 0, "angle": 0 },
|
{ "time": 0, "angle": 0 },
|
||||||
{ "time": 0.1666, "angle": 17.39 },
|
{ "time": 0.1667, "angle": 17.39 },
|
||||||
{ "time": 0.5, "angle": 0 },
|
{ "time": 0.5, "angle": 0 },
|
||||||
{ "time": 0.8333, "angle": 7 },
|
{ "time": 0.8333, "angle": 7.01 },
|
||||||
{ "time": 1, "angle": 0 }
|
{ "time": 1, "angle": 0 }
|
||||||
],
|
],
|
||||||
"translate": [
|
"translate": [
|
||||||
@ -253,9 +253,9 @@
|
|||||||
"neck": {
|
"neck": {
|
||||||
"rotate": [
|
"rotate": [
|
||||||
{ "time": 0, "angle": 0 },
|
{ "time": 0, "angle": 0 },
|
||||||
{ "time": 0.1666, "angle": -8.18 },
|
{ "time": 0.1667, "angle": -8.18 },
|
||||||
{ "time": 0.3333, "angle": -23.16 },
|
{ "time": 0.3333, "angle": -23.16 },
|
||||||
{ "time": 0.5, "angle": -18.01 },
|
{ "time": 0.5, "angle": -18.02 },
|
||||||
{ "time": 1, "angle": 0 }
|
{ "time": 1, "angle": 0 }
|
||||||
],
|
],
|
||||||
"translate": [
|
"translate": [
|
||||||
@ -289,10 +289,10 @@
|
|||||||
"tail1": {
|
"tail1": {
|
||||||
"rotate": [
|
"rotate": [
|
||||||
{ "time": 0, "angle": 0 },
|
{ "time": 0, "angle": 0 },
|
||||||
{ "time": 0.1666, "angle": -2.42 },
|
{ "time": 0.1667, "angle": -2.42 },
|
||||||
{ "time": 0.3333, "angle": -26.2 },
|
{ "time": 0.3333, "angle": -26.21 },
|
||||||
{ "time": 0.5, "angle": -29.65 },
|
{ "time": 0.5, "angle": -29.66 },
|
||||||
{ "time": 0.6666, "angle": -23.15 },
|
{ "time": 0.6667, "angle": -23.15 },
|
||||||
{ "time": 0.8333, "angle": -55.46 },
|
{ "time": 0.8333, "angle": -55.46 },
|
||||||
{ "time": 1, "angle": 0 }
|
{ "time": 1, "angle": 0 }
|
||||||
],
|
],
|
||||||
@ -327,10 +327,10 @@
|
|||||||
"tail2": {
|
"tail2": {
|
||||||
"rotate": [
|
"rotate": [
|
||||||
{ "time": 0, "angle": 0 },
|
{ "time": 0, "angle": 0 },
|
||||||
{ "time": 0.1666, "angle": -1.12 },
|
{ "time": 0.1667, "angle": -1.13 },
|
||||||
{ "time": 0.3333, "angle": 10.48 },
|
{ "time": 0.3333, "angle": 10.48 },
|
||||||
{ "time": 0.5, "angle": 7.89 },
|
{ "time": 0.5, "angle": 7.89 },
|
||||||
{ "time": 0.8333, "angle": -10.38 },
|
{ "time": 0.8333, "angle": -10.39 },
|
||||||
{ "time": 1, "angle": 0 }
|
{ "time": 1, "angle": 0 }
|
||||||
],
|
],
|
||||||
"translate": [
|
"translate": [
|
||||||
@ -347,10 +347,10 @@
|
|||||||
"tail3": {
|
"tail3": {
|
||||||
"rotate": [
|
"rotate": [
|
||||||
{ "time": 0, "angle": 0 },
|
{ "time": 0, "angle": 0 },
|
||||||
{ "time": 0.1666, "angle": 8.24 },
|
{ "time": 0.1667, "angle": 8.25 },
|
||||||
{ "time": 0.3333, "angle": 15.21 },
|
{ "time": 0.3333, "angle": 15.21 },
|
||||||
{ "time": 0.5, "angle": 14.84 },
|
{ "time": 0.5, "angle": 14.85 },
|
||||||
{ "time": 0.8333, "angle": -18.9 },
|
{ "time": 0.8333, "angle": -18.91 },
|
||||||
{ "time": 1, "angle": 0 }
|
{ "time": 1, "angle": 0 }
|
||||||
],
|
],
|
||||||
"translate": [
|
"translate": [
|
||||||
@ -367,7 +367,7 @@
|
|||||||
"tail4": {
|
"tail4": {
|
||||||
"rotate": [
|
"rotate": [
|
||||||
{ "time": 0, "angle": 0 },
|
{ "time": 0, "angle": 0 },
|
||||||
{ "time": 0.1666, "angle": 17.46 },
|
{ "time": 0.1667, "angle": 17.47 },
|
||||||
{ "time": 0.3333, "angle": 22.15 },
|
{ "time": 0.3333, "angle": 22.15 },
|
||||||
{ "time": 0.5, "angle": 22.76 },
|
{ "time": 0.5, "angle": 22.76 },
|
||||||
{ "time": 0.8333, "angle": -4.37 },
|
{ "time": 0.8333, "angle": -4.37 },
|
||||||
@ -387,10 +387,10 @@
|
|||||||
"tail5": {
|
"tail5": {
|
||||||
"rotate": [
|
"rotate": [
|
||||||
{ "time": 0, "angle": 0 },
|
{ "time": 0, "angle": 0 },
|
||||||
{ "time": 0.1666, "angle": 7.4 },
|
{ "time": 0.1667, "angle": 7.4 },
|
||||||
{ "time": 0.3333, "angle": 28.5 },
|
{ "time": 0.3333, "angle": 28.51 },
|
||||||
{ "time": 0.5, "angle": 21.33 },
|
{ "time": 0.5, "angle": 21.33 },
|
||||||
{ "time": 0.8333, "angle": -1.27 },
|
{ "time": 0.8333, "angle": -1.28 },
|
||||||
{ "time": 1, "angle": 0 }
|
{ "time": 1, "angle": 0 }
|
||||||
],
|
],
|
||||||
"translate": [
|
"translate": [
|
||||||
@ -407,7 +407,7 @@
|
|||||||
"tail6": {
|
"tail6": {
|
||||||
"rotate": [
|
"rotate": [
|
||||||
{ "time": 0, "angle": 0 },
|
{ "time": 0, "angle": 0 },
|
||||||
{ "time": 0.1666, "angle": 45.99 },
|
{ "time": 0.1667, "angle": 46 },
|
||||||
{ "time": 0.4, "angle": 43.53 },
|
{ "time": 0.4, "angle": 43.53 },
|
||||||
{ "time": 0.5, "angle": 61.79 },
|
{ "time": 0.5, "angle": 61.79 },
|
||||||
{ "time": 0.8333, "angle": 13.28 },
|
{ "time": 0.8333, "angle": 13.28 },
|
||||||
@ -427,8 +427,8 @@
|
|||||||
"R_rear_leg": {
|
"R_rear_leg": {
|
||||||
"rotate": [
|
"rotate": [
|
||||||
{ "time": 0, "angle": 0 },
|
{ "time": 0, "angle": 0 },
|
||||||
{ "time": 0.1666, "angle": -14.21 },
|
{ "time": 0.1667, "angle": -14.22 },
|
||||||
{ "time": 0.5, "angle": 47.17 },
|
{ "time": 0.5, "angle": 47.18 },
|
||||||
{ "time": 1, "angle": 0 }
|
{ "time": 1, "angle": 0 }
|
||||||
],
|
],
|
||||||
"translate": [
|
"translate": [
|
||||||
@ -498,9 +498,9 @@
|
|||||||
{
|
{
|
||||||
"time": 0,
|
"time": 0,
|
||||||
"angle": 0,
|
"angle": 0,
|
||||||
"curve": [ 0.408, 1.36, 0.675, 1.43 ]
|
"curve": [ 0.408, 1.37, 0.675, 1.43 ]
|
||||||
},
|
},
|
||||||
{ "time": 0.5, "angle": 1.03 },
|
{ "time": 0.5, "angle": 1.04 },
|
||||||
{ "time": 1, "angle": 0 }
|
{ "time": 1, "angle": 0 }
|
||||||
],
|
],
|
||||||
"translate": [
|
"translate": [
|
||||||
@ -519,11 +519,11 @@
|
|||||||
{
|
{
|
||||||
"time": 0,
|
"time": 0,
|
||||||
"angle": 0,
|
"angle": 0,
|
||||||
"curve": [ 0.416, 1.15, 0.494, 1.27 ]
|
"curve": [ 0.417, 1.15, 0.494, 1.28 ]
|
||||||
},
|
},
|
||||||
{ "time": 0.3333, "angle": -5.15 },
|
{ "time": 0.3333, "angle": -5.15 },
|
||||||
{ "time": 0.5, "angle": 9.79 },
|
{ "time": 0.5, "angle": 9.8 },
|
||||||
{ "time": 0.6666, "angle": 18.94 },
|
{ "time": 0.6667, "angle": 18.95 },
|
||||||
{ "time": 1, "angle": 0 }
|
{ "time": 1, "angle": 0 }
|
||||||
],
|
],
|
||||||
"translate": [
|
"translate": [
|
||||||
@ -540,7 +540,7 @@
|
|||||||
"L_front_thigh": {
|
"L_front_thigh": {
|
||||||
"rotate": [
|
"rotate": [
|
||||||
{ "time": 0, "angle": 0 },
|
{ "time": 0, "angle": 0 },
|
||||||
{ "time": 0.1666, "angle": -19.18 },
|
{ "time": 0.1667, "angle": -19.19 },
|
||||||
{ "time": 0.3333, "angle": -32.02 },
|
{ "time": 0.3333, "angle": -32.02 },
|
||||||
{ "time": 0.5, "angle": -19.62 },
|
{ "time": 0.5, "angle": -19.62 },
|
||||||
{ "time": 1, "angle": 0 }
|
{ "time": 1, "angle": 0 }
|
||||||
@ -559,7 +559,7 @@
|
|||||||
"R_front_thigh": {
|
"R_front_thigh": {
|
||||||
"rotate": [
|
"rotate": [
|
||||||
{ "time": 0, "angle": 0 },
|
{ "time": 0, "angle": 0 },
|
||||||
{ "time": 0.1666, "angle": -12.96 },
|
{ "time": 0.1667, "angle": -12.96 },
|
||||||
{ "time": 0.5, "angle": 16.2 },
|
{ "time": 0.5, "angle": 16.2 },
|
||||||
{ "time": 1, "angle": 0 }
|
{ "time": 1, "angle": 0 }
|
||||||
],
|
],
|
||||||
@ -577,7 +577,7 @@
|
|||||||
"L_front_leg": {
|
"L_front_leg": {
|
||||||
"rotate": [
|
"rotate": [
|
||||||
{ "time": 0, "angle": 0 },
|
{ "time": 0, "angle": 0 },
|
||||||
{ "time": 0.1666, "angle": 37.77 },
|
{ "time": 0.1667, "angle": 37.77 },
|
||||||
{ "time": 0.5, "angle": 0, "curve": "stepped" },
|
{ "time": 0.5, "angle": 0, "curve": "stepped" },
|
||||||
{ "time": 1, "angle": 0 }
|
{ "time": 1, "angle": 0 }
|
||||||
],
|
],
|
||||||
@ -595,7 +595,7 @@
|
|||||||
"L_front_toe1": {
|
"L_front_toe1": {
|
||||||
"rotate": [
|
"rotate": [
|
||||||
{ "time": 0, "angle": 0 },
|
{ "time": 0, "angle": 0 },
|
||||||
{ "time": 0.1666, "angle": -16.08 },
|
{ "time": 0.1667, "angle": -16.09 },
|
||||||
{ "time": 0.5, "angle": 0, "curve": "stepped" },
|
{ "time": 0.5, "angle": 0, "curve": "stepped" },
|
||||||
{ "time": 1, "angle": 0 }
|
{ "time": 1, "angle": 0 }
|
||||||
],
|
],
|
||||||
@ -623,14 +623,14 @@
|
|||||||
],
|
],
|
||||||
"scale": [
|
"scale": [
|
||||||
{ "time": 0, "x": 1, "y": 1 },
|
{ "time": 0, "x": 1, "y": 1 },
|
||||||
{ "time": 0.5, "x": 1.33, "y": 1.029 },
|
{ "time": 0.5, "x": 1.331, "y": 1.029 },
|
||||||
{ "time": 1, "x": 1, "y": 1 }
|
{ "time": 1, "x": 1, "y": 1 }
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"L_front_toe4": {
|
"L_front_toe4": {
|
||||||
"rotate": [
|
"rotate": [
|
||||||
{ "time": 0, "angle": 0 },
|
{ "time": 0, "angle": 0 },
|
||||||
{ "time": 0.5, "angle": 26.51 },
|
{ "time": 0.5, "angle": 26.52 },
|
||||||
{ "time": 1, "angle": 0 }
|
{ "time": 1, "angle": 0 }
|
||||||
],
|
],
|
||||||
"translate": [
|
"translate": [
|
||||||
@ -640,7 +640,7 @@
|
|||||||
],
|
],
|
||||||
"scale": [
|
"scale": [
|
||||||
{ "time": 0, "x": 1, "y": 1 },
|
{ "time": 0, "x": 1, "y": 1 },
|
||||||
{ "time": 0.5, "x": 1.21, "y": 0.993 },
|
{ "time": 0.5, "x": 1.211, "y": 0.993 },
|
||||||
{ "time": 1, "x": 1, "y": 1 }
|
{ "time": 1, "x": 1, "y": 1 }
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@ -657,14 +657,14 @@
|
|||||||
],
|
],
|
||||||
"scale": [
|
"scale": [
|
||||||
{ "time": 0, "x": 1, "y": 1 },
|
{ "time": 0, "x": 1, "y": 1 },
|
||||||
{ "time": 0.5, "x": 1.354, "y": 1.007 },
|
{ "time": 0.5, "x": 1.355, "y": 1.008 },
|
||||||
{ "time": 1, "x": 1, "y": 1 }
|
{ "time": 1, "x": 1, "y": 1 }
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"R_front_leg": {
|
"R_front_leg": {
|
||||||
"rotate": [
|
"rotate": [
|
||||||
{ "time": 0, "angle": 0 },
|
{ "time": 0, "angle": 0 },
|
||||||
{ "time": 0.1666, "angle": 26.07 },
|
{ "time": 0.1667, "angle": 26.07 },
|
||||||
{ "time": 0.5, "angle": -21.6 },
|
{ "time": 0.5, "angle": -21.6 },
|
||||||
{ "time": 1, "angle": 0 }
|
{ "time": 1, "angle": 0 }
|
||||||
],
|
],
|
||||||
@ -682,8 +682,8 @@
|
|||||||
"R_front_toe1": {
|
"R_front_toe1": {
|
||||||
"rotate": [
|
"rotate": [
|
||||||
{ "time": 0, "angle": 0 },
|
{ "time": 0, "angle": 0 },
|
||||||
{ "time": 0.1666, "angle": 29.23 },
|
{ "time": 0.1667, "angle": 29.24 },
|
||||||
{ "time": 0.5, "angle": 34.83 },
|
{ "time": 0.5, "angle": 34.84 },
|
||||||
{ "time": 1, "angle": 0 }
|
{ "time": 1, "angle": 0 }
|
||||||
],
|
],
|
||||||
"translate": [
|
"translate": [
|
||||||
@ -700,7 +700,7 @@
|
|||||||
"R_front_toe2": {
|
"R_front_toe2": {
|
||||||
"rotate": [
|
"rotate": [
|
||||||
{ "time": 0, "angle": 0 },
|
{ "time": 0, "angle": 0 },
|
||||||
{ "time": 0.1666, "angle": 24.89 },
|
{ "time": 0.1667, "angle": 24.9 },
|
||||||
{ "time": 0.5, "angle": 23.16 },
|
{ "time": 0.5, "angle": 23.16 },
|
||||||
{ "time": 1, "angle": 0 }
|
{ "time": 1, "angle": 0 }
|
||||||
],
|
],
|
||||||
@ -711,14 +711,14 @@
|
|||||||
],
|
],
|
||||||
"scale": [
|
"scale": [
|
||||||
{ "time": 0, "x": 1, "y": 1 },
|
{ "time": 0, "x": 1, "y": 1 },
|
||||||
{ "time": 0.5, "x": 1.407, "y": 1.057 },
|
{ "time": 0.5, "x": 1.407, "y": 1.058 },
|
||||||
{ "time": 1, "x": 1, "y": 1 }
|
{ "time": 1, "x": 1, "y": 1 }
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"R_front_toe3": {
|
"R_front_toe3": {
|
||||||
"rotate": [
|
"rotate": [
|
||||||
{ "time": 0, "angle": 0 },
|
{ "time": 0, "angle": 0 },
|
||||||
{ "time": 0.1666, "angle": 11.01 },
|
{ "time": 0.1667, "angle": 11.01 },
|
||||||
{ "time": 0.5, "angle": 0, "curve": "stepped" },
|
{ "time": 0.5, "angle": 0, "curve": "stepped" },
|
||||||
{ "time": 1, "angle": 0 }
|
{ "time": 1, "angle": 0 }
|
||||||
],
|
],
|
||||||
@ -729,15 +729,15 @@
|
|||||||
],
|
],
|
||||||
"scale": [
|
"scale": [
|
||||||
{ "time": 0, "x": 1, "y": 1 },
|
{ "time": 0, "x": 1, "y": 1 },
|
||||||
{ "time": 0.5, "x": 1.329, "y": 1.181 },
|
{ "time": 0.5, "x": 1.33, "y": 1.182 },
|
||||||
{ "time": 1, "x": 1, "y": 1 }
|
{ "time": 1, "x": 1, "y": 1 }
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"L_rear_leg": {
|
"L_rear_leg": {
|
||||||
"rotate": [
|
"rotate": [
|
||||||
{ "time": 0, "angle": 0 },
|
{ "time": 0, "angle": 0 },
|
||||||
{ "time": 0.3666, "angle": 25.19 },
|
{ "time": 0.3667, "angle": 25.19 },
|
||||||
{ "time": 0.6666, "angle": -15.65 },
|
{ "time": 0.6667, "angle": -15.65 },
|
||||||
{ "time": 1, "angle": 0 }
|
{ "time": 1, "angle": 0 }
|
||||||
],
|
],
|
||||||
"translate": [
|
"translate": [
|
||||||
@ -752,13 +752,13 @@
|
|||||||
{
|
{
|
||||||
"time": 0,
|
"time": 0,
|
||||||
"angle": 0,
|
"angle": 0,
|
||||||
"curve": [ 0.456, 0.2, 0.422, 1.06 ]
|
"curve": [ 0.457, 0.2, 0.422, 1.07 ]
|
||||||
},
|
},
|
||||||
{ "time": 0.3333, "angle": 23.93 },
|
{ "time": 0.3333, "angle": 23.93 },
|
||||||
{
|
{
|
||||||
"time": 0.6666,
|
"time": 0.6667,
|
||||||
"angle": 337.79,
|
"angle": 337.8,
|
||||||
"curve": [ 0.41, 0, 0.887, 0.75 ]
|
"curve": [ 0.411, 0, 0.888, 0.75 ]
|
||||||
},
|
},
|
||||||
{ "time": 1, "angle": 0 }
|
{ "time": 1, "angle": 0 }
|
||||||
],
|
],
|
||||||
@ -767,13 +767,13 @@
|
|||||||
"time": 0,
|
"time": 0,
|
||||||
"x": 0,
|
"x": 0,
|
||||||
"y": 0,
|
"y": 0,
|
||||||
"curve": [ 0.33, 1, 0.816, 1.33 ]
|
"curve": [ 0.33, 1, 0.816, 1.34 ]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 0.5,
|
"time": 0.5,
|
||||||
"x": 0,
|
"x": -0.01,
|
||||||
"y": 113.01,
|
"y": 113.01,
|
||||||
"curve": [ 0.396, 0, 0.709, 2.03 ]
|
"curve": [ 0.397, 0, 0.71, 2.03 ]
|
||||||
},
|
},
|
||||||
{ "time": 1, "x": 0, "y": 0 }
|
{ "time": 1, "x": 0, "y": 0 }
|
||||||
]
|
]
|
||||||
|
|||||||
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
@ -1,31 +1,24 @@
|
|||||||
{
|
{
|
||||||
"skeleton": {
|
"skeleton": { "hash": "r5YD0f6538Hmy0yaaam0Wp73fd8", "spine": "3.6.05-beta", "width": 234.01, "height": 354.84, "images": "./images/" },
|
||||||
"hash": "9Twfw0ImCCb/C3Vx15ucH1FZP6U",
|
|
||||||
"spine": "3.5.03-beta",
|
|
||||||
"width": 234.01,
|
|
||||||
"height": 354.84,
|
|
||||||
"fps": 30,
|
|
||||||
"images": "./images/"
|
|
||||||
},
|
|
||||||
"bones": [
|
"bones": [
|
||||||
{ "name": "root" },
|
{ "name": "root" },
|
||||||
{ "name": "hip", "parent": "root", "x": 0.64, "y": 114.41 },
|
{ "name": "hip", "parent": "root", "x": 0.65, "y": 114.41 },
|
||||||
{ "name": "torso", "parent": "hip", "length": 85.82, "rotation": 93.92, "x": -6.42, "y": 1.97 },
|
{ "name": "torso", "parent": "hip", "length": 85.83, "rotation": 93.93, "x": -6.42, "y": 1.98 },
|
||||||
{ "name": "neck", "parent": "torso", "length": 18.38, "rotation": -1.51, "x": 81.67, "y": -6.34 },
|
{ "name": "neck", "parent": "torso", "length": 18.38, "rotation": -1.52, "x": 81.68, "y": -6.35 },
|
||||||
{ "name": "head", "parent": "neck", "length": 68.28, "rotation": -13.92, "x": 20.93, "y": 11.59 },
|
{ "name": "head", "parent": "neck", "length": 68.29, "rotation": -13.92, "x": 20.94, "y": 11.59 },
|
||||||
{ "name": "left shoulder", "parent": "torso", "length": 35.43, "rotation": -156.96, "x": 74.04, "y": -20.38 },
|
{ "name": "left shoulder", "parent": "torso", "length": 35.43, "rotation": -156.96, "x": 74.05, "y": -20.39 },
|
||||||
{ "name": "left arm", "parent": "left shoulder", "length": 35.62, "rotation": 28.16, "x": 37.85, "y": -2.34 },
|
{ "name": "left arm", "parent": "left shoulder", "length": 35.62, "rotation": 28.17, "x": 37.86, "y": -2.35 },
|
||||||
{ "name": "left upper leg", "parent": "hip", "length": 50.39, "rotation": -89.09, "x": 14.45, "y": 2.81 },
|
{ "name": "left upper leg", "parent": "hip", "length": 50.4, "rotation": -89.1, "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 lower leg", "parent": "left upper leg", "length": 49.9, "rotation": -16.66, "x": 56.34, "y": 0.99 },
|
||||||
{ "name": "left foot", "parent": "left lower leg", "length": 46.5, "rotation": 102.43, "x": 58.94, "y": -7.61 },
|
{ "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": "left hand", "parent": "left arm", "length": 11.52, "rotation": 2.7, "x": 35.62, "y": 0.08 },
|
||||||
{ "name": "pelvis", "parent": "hip", "x": 1.41, "y": -6.57 },
|
{ "name": "pelvis", "parent": "hip", "x": 1.41, "y": -6.58 },
|
||||||
{ "name": "right shoulder", "parent": "torso", "length": 37.24, "rotation": 133.88, "x": 76.02, "y": 18.14 },
|
{ "name": "right shoulder", "parent": "torso", "length": 37.25, "rotation": 133.89, "x": 76.02, "y": 18.15 },
|
||||||
{ "name": "right arm", "parent": "right shoulder", "length": 36.74, "rotation": 36.32, "x": 37.6, "y": 0.31 },
|
{ "name": "right arm", "parent": "right shoulder", "length": 36.75, "rotation": 36.33, "x": 37.61, "y": 0.31 },
|
||||||
{ "name": "right upper leg", "parent": "hip", "length": 42.45, "rotation": -97.49, "x": -20.07, "y": -6.83 },
|
{ "name": "right upper leg", "parent": "hip", "length": 42.46, "rotation": -97.5, "x": -20.08, "y": -6.84 },
|
||||||
{ "name": "right lower leg", "parent": "right upper leg", "length": 58.52, "rotation": -14.34, "x": 42.99, "y": -0.61 },
|
{ "name": "right lower leg", "parent": "right upper leg", "length": 58.53, "rotation": -14.34, "x": 43, "y": -0.62 },
|
||||||
{ "name": "right foot", "parent": "right lower leg", "length": 45.45, "rotation": 110.3, "x": 64.88, "y": 0.04 },
|
{ "name": "right foot", "parent": "right lower leg", "length": 45.46, "rotation": 110.31, "x": 64.89, "y": 0.04 },
|
||||||
{ "name": "right hand", "parent": "right arm", "length": 15.32, "rotation": 2.35, "x": 36.9, "y": 0.34 }
|
{ "name": "right hand", "parent": "right arm", "length": 15.32, "rotation": 2.36, "x": 36.9, "y": 0.35 }
|
||||||
],
|
],
|
||||||
"slots": [
|
"slots": [
|
||||||
{ "name": "left shoulder", "bone": "left shoulder", "attachment": "left shoulder" },
|
{ "name": "left shoulder", "bone": "left shoulder", "attachment": "left shoulder" },
|
||||||
@ -54,22 +47,22 @@
|
|||||||
"skins": {
|
"skins": {
|
||||||
"default": {
|
"default": {
|
||||||
"left hand item": {
|
"left hand item": {
|
||||||
"dagger": { "x": 7.88, "y": -23.45, "rotation": 10.47, "width": 26, "height": 108 },
|
"dagger": { "x": 7.88, "y": -23.46, "rotation": 10.48, "width": 26, "height": 108 },
|
||||||
"spear": { "x": -4.55, "y": 39.2, "rotation": 13.04, "width": 22, "height": 368 }
|
"spear": { "x": -4.56, "y": 39.2, "rotation": 13.05, "width": 22, "height": 368 }
|
||||||
},
|
},
|
||||||
"right hand item": {
|
"right hand item": {
|
||||||
"dagger": { "x": 6.51, "y": -24.15, "rotation": -8.06, "width": 26, "height": 108 }
|
"dagger": { "x": 6.52, "y": -24.16, "rotation": -8.06, "width": 26, "height": 108 }
|
||||||
},
|
},
|
||||||
"right hand item top": {
|
"right hand item top": {
|
||||||
"shield": { "rotation": 93.49, "width": 70, "height": 72 }
|
"shield": { "rotation": 93.5, "width": 70, "height": 72 }
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"goblin": {
|
"goblin": {
|
||||||
"eyes": {
|
"eyes": {
|
||||||
"eyes closed": { "name": "goblin/eyes-closed", "x": 32.21, "y": -21.27, "rotation": -88.92, "width": 34, "height": 12 }
|
"eyes closed": { "name": "goblin/eyes-closed", "x": 32.22, "y": -21.27, "rotation": -88.93, "width": 34, "height": 12 }
|
||||||
},
|
},
|
||||||
"head": {
|
"head": {
|
||||||
"head": { "name": "goblin/head", "x": 25.73, "y": 2.33, "rotation": -92.29, "width": 103, "height": 66 }
|
"head": { "name": "goblin/head", "x": 25.74, "y": 2.33, "rotation": -92.29, "width": 103, "height": 66 }
|
||||||
},
|
},
|
||||||
"left arm": {
|
"left arm": {
|
||||||
"left arm": {
|
"left arm": {
|
||||||
@ -78,13 +71,13 @@
|
|||||||
"y": -1.69,
|
"y": -1.69,
|
||||||
"scaleX": 1.057,
|
"scaleX": 1.057,
|
||||||
"scaleY": 1.057,
|
"scaleY": 1.057,
|
||||||
"rotation": 33.84,
|
"rotation": 33.85,
|
||||||
"width": 37,
|
"width": 37,
|
||||||
"height": 35
|
"height": 35
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"left foot": {
|
"left foot": {
|
||||||
"left foot": { "name": "goblin/left-foot", "x": 24.85, "y": 8.74, "rotation": 3.32, "width": 65, "height": 31 }
|
"left foot": { "name": "goblin/left-foot", "x": 24.85, "y": 8.75, "rotation": 3.32, "width": 65, "height": 31 }
|
||||||
},
|
},
|
||||||
"left hand": {
|
"left hand": {
|
||||||
"left hand": {
|
"left hand": {
|
||||||
@ -99,60 +92,60 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"left lower leg": {
|
"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 lower leg": { "name": "goblin/left-lower-leg", "x": 23.59, "y": -2.07, "rotation": 105.76, "width": 33, "height": 70 }
|
||||||
},
|
},
|
||||||
"left shoulder": {
|
"left shoulder": {
|
||||||
"left shoulder": { "name": "goblin/left-shoulder", "x": 15.56, "y": -2.26, "rotation": 62.01, "width": 29, "height": 44 }
|
"left shoulder": { "name": "goblin/left-shoulder", "x": 15.56, "y": -2.27, "rotation": 62.01, "width": 29, "height": 44 }
|
||||||
},
|
},
|
||||||
"left upper leg": {
|
"left upper leg": {
|
||||||
"left upper leg": { "name": "goblin/left-upper-leg", "x": 29.68, "y": -3.87, "rotation": 89.09, "width": 33, "height": 73 }
|
"left upper leg": { "name": "goblin/left-upper-leg", "x": 29.69, "y": -3.87, "rotation": 89.1, "width": 33, "height": 73 }
|
||||||
},
|
},
|
||||||
"neck": {
|
"neck": {
|
||||||
"neck": { "name": "goblin/neck", "x": 10.1, "y": 0.42, "rotation": -93.69, "width": 36, "height": 41 }
|
"neck": { "name": "goblin/neck", "x": 10.1, "y": 0.42, "rotation": -93.7, "width": 36, "height": 41 }
|
||||||
},
|
},
|
||||||
"pelvis": {
|
"pelvis": {
|
||||||
"pelvis": { "name": "goblin/pelvis", "x": -5.61, "y": 0.76, "width": 62, "height": 43 }
|
"pelvis": { "name": "goblin/pelvis", "x": -5.62, "y": 0.77, "width": 62, "height": 43 }
|
||||||
},
|
},
|
||||||
"right arm": {
|
"right arm": {
|
||||||
"right arm": { "name": "goblin/right-arm", "x": 16.44, "y": -1.04, "rotation": 94.32, "width": 23, "height": 50 }
|
"right arm": { "name": "goblin/right-arm", "x": 16.44, "y": -1.04, "rotation": 94.32, "width": 23, "height": 50 }
|
||||||
},
|
},
|
||||||
"right foot": {
|
"right foot": {
|
||||||
"right foot": { "name": "goblin/right-foot", "x": 23.56, "y": 9.8, "rotation": 1.52, "width": 63, "height": 33 }
|
"right foot": { "name": "goblin/right-foot", "x": 23.57, "y": 9.8, "rotation": 1.53, "width": 63, "height": 33 }
|
||||||
},
|
},
|
||||||
"right hand": {
|
"right hand": {
|
||||||
"right hand": { "name": "goblin/right-hand", "x": 7.88, "y": 2.78, "rotation": 91.96, "width": 36, "height": 37 }
|
"right hand": { "name": "goblin/right-hand", "x": 7.89, "y": 2.78, "rotation": 91.96, "width": 36, "height": 37 }
|
||||||
},
|
},
|
||||||
"right lower leg": {
|
"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 lower leg": { "name": "goblin/right-lower-leg", "x": 25.68, "y": -3.16, "rotation": 111.84, "width": 36, "height": 76 }
|
||||||
},
|
},
|
||||||
"right shoulder": {
|
"right shoulder": {
|
||||||
"right shoulder": { "name": "goblin/right-shoulder", "x": 15.68, "y": -1.03, "rotation": 130.65, "width": 39, "height": 45 }
|
"right shoulder": { "name": "goblin/right-shoulder", "x": 15.68, "y": -1.03, "rotation": 130.65, "width": 39, "height": 45 }
|
||||||
},
|
},
|
||||||
"right upper leg": {
|
"right upper leg": {
|
||||||
"right upper leg": { "name": "goblin/right-upper-leg", "x": 20.35, "y": 1.47, "rotation": 97.49, "width": 34, "height": 63 }
|
"right upper leg": { "name": "goblin/right-upper-leg", "x": 20.35, "y": 1.48, "rotation": 97.5, "width": 34, "height": 63 }
|
||||||
},
|
},
|
||||||
"torso": {
|
"torso": {
|
||||||
"torso": { "name": "goblin/torso", "x": 38.09, "y": -3.87, "rotation": -94.95, "width": 68, "height": 96 }
|
"torso": { "name": "goblin/torso", "x": 38.1, "y": -3.87, "rotation": -94.95, "width": 68, "height": 96 }
|
||||||
},
|
},
|
||||||
"undie straps": {
|
"undie straps": {
|
||||||
"undie straps": { "name": "goblin/undie-straps", "x": -3.87, "y": 13.1, "scaleX": 1.089, "width": 55, "height": 19 }
|
"undie straps": { "name": "goblin/undie-straps", "x": -3.88, "y": 13.11, "scaleX": 1.09, "width": 55, "height": 19 }
|
||||||
},
|
},
|
||||||
"undies": {
|
"undies": {
|
||||||
"undies": { "name": "goblin/undies", "x": 6.3, "y": 0.12, "rotation": 0.91, "width": 36, "height": 29 }
|
"undies": { "name": "goblin/undies", "x": 6.3, "y": 0.13, "rotation": 0.92, "width": 36, "height": 29 }
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"goblingirl": {
|
"goblingirl": {
|
||||||
"eyes": {
|
"eyes": {
|
||||||
"eyes closed": { "name": "goblingirl/eyes-closed", "x": 28, "y": -25.54, "rotation": -87.04, "width": 37, "height": 21 }
|
"eyes closed": { "name": "goblingirl/eyes-closed", "x": 28, "y": -25.55, "rotation": -87.05, "width": 37, "height": 21 }
|
||||||
},
|
},
|
||||||
"head": {
|
"head": {
|
||||||
"head": { "name": "goblingirl/head", "x": 27.71, "y": -4.32, "rotation": -85.58, "width": 103, "height": 81 }
|
"head": { "name": "goblingirl/head", "x": 27.72, "y": -4.32, "rotation": -85.58, "width": 103, "height": 81 }
|
||||||
},
|
},
|
||||||
"left arm": {
|
"left arm": {
|
||||||
"left arm": { "name": "goblingirl/left-arm", "x": 19.64, "y": -2.42, "rotation": 33.05, "width": 37, "height": 35 }
|
"left arm": { "name": "goblingirl/left-arm", "x": 19.64, "y": -2.43, "rotation": 33.05, "width": 37, "height": 35 }
|
||||||
},
|
},
|
||||||
"left foot": {
|
"left foot": {
|
||||||
"left foot": { "name": "goblingirl/left-foot", "x": 25.17, "y": 7.92, "rotation": 3.32, "width": 65, "height": 31 }
|
"left foot": { "name": "goblingirl/left-foot", "x": 25.18, "y": 7.92, "rotation": 3.32, "width": 65, "height": 31 }
|
||||||
},
|
},
|
||||||
"left hand": {
|
"left hand": {
|
||||||
"left hand": {
|
"left hand": {
|
||||||
@ -161,52 +154,52 @@
|
|||||||
"y": 2.39,
|
"y": 2.39,
|
||||||
"scaleX": 0.896,
|
"scaleX": 0.896,
|
||||||
"scaleY": 0.896,
|
"scaleY": 0.896,
|
||||||
"rotation": 30.34,
|
"rotation": 30.35,
|
||||||
"width": 35,
|
"width": 35,
|
||||||
"height": 40
|
"height": 40
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"left lower leg": {
|
"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 lower leg": { "name": "goblingirl/left-lower-leg", "x": 25.02, "y": -0.61, "rotation": 105.76, "width": 33, "height": 70 }
|
||||||
},
|
},
|
||||||
"left shoulder": {
|
"left shoulder": {
|
||||||
"left shoulder": { "name": "goblingirl/left-shoulder", "x": 19.8, "y": -0.42, "rotation": 61.21, "width": 28, "height": 46 }
|
"left shoulder": { "name": "goblingirl/left-shoulder", "x": 19.81, "y": -0.43, "rotation": 61.22, "width": 28, "height": 46 }
|
||||||
},
|
},
|
||||||
"left upper leg": {
|
"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 upper leg": { "name": "goblingirl/left-upper-leg", "x": 30.22, "y": -2.95, "rotation": 89.1, "width": 33, "height": 70 }
|
||||||
},
|
},
|
||||||
"neck": {
|
"neck": {
|
||||||
"neck": { "name": "goblingirl/neck", "x": 6.16, "y": -3.14, "rotation": -98.86, "width": 35, "height": 41 }
|
"neck": { "name": "goblingirl/neck", "x": 6.16, "y": -3.15, "rotation": -98.86, "width": 35, "height": 41 }
|
||||||
},
|
},
|
||||||
"pelvis": {
|
"pelvis": {
|
||||||
"pelvis": { "name": "goblingirl/pelvis", "x": -3.87, "y": 3.18, "width": 62, "height": 43 }
|
"pelvis": { "name": "goblingirl/pelvis", "x": -3.88, "y": 3.19, "width": 62, "height": 43 }
|
||||||
},
|
},
|
||||||
"right arm": {
|
"right arm": {
|
||||||
"right arm": { "name": "goblingirl/right-arm", "x": 16.85, "y": -0.66, "rotation": 93.52, "width": 28, "height": 50 }
|
"right arm": { "name": "goblingirl/right-arm", "x": 16.85, "y": -0.66, "rotation": 93.53, "width": 28, "height": 50 }
|
||||||
},
|
},
|
||||||
"right foot": {
|
"right foot": {
|
||||||
"right foot": { "name": "goblingirl/right-foot", "x": 23.46, "y": 9.66, "rotation": 1.52, "width": 63, "height": 33 }
|
"right foot": { "name": "goblingirl/right-foot", "x": 23.46, "y": 9.66, "rotation": 1.53, "width": 63, "height": 33 }
|
||||||
},
|
},
|
||||||
"right hand": {
|
"right hand": {
|
||||||
"right hand": { "name": "goblingirl/right-hand", "x": 7.21, "y": 3.43, "rotation": 91.16, "width": 36, "height": 37 }
|
"right hand": { "name": "goblingirl/right-hand", "x": 7.22, "y": 3.44, "rotation": 91.17, "width": 36, "height": 37 }
|
||||||
},
|
},
|
||||||
"right lower leg": {
|
"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 lower leg": { "name": "goblingirl/right-lower-leg", "x": 26.15, "y": -3.28, "rotation": 111.84, "width": 36, "height": 76 }
|
||||||
},
|
},
|
||||||
"right shoulder": {
|
"right shoulder": {
|
||||||
"right shoulder": { "name": "goblingirl/right-shoulder", "x": 14.46, "y": 0.45, "rotation": 129.85, "width": 39, "height": 45 }
|
"right shoulder": { "name": "goblingirl/right-shoulder", "x": 14.46, "y": 0.46, "rotation": 129.85, "width": 39, "height": 45 }
|
||||||
},
|
},
|
||||||
"right upper leg": {
|
"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 upper leg": { "name": "goblingirl/right-upper-leg", "x": 19.7, "y": 2.13, "rotation": 97.5, "width": 34, "height": 63 }
|
||||||
},
|
},
|
||||||
"torso": {
|
"torso": {
|
||||||
"torso": { "name": "goblingirl/torso", "x": 36.28, "y": -5.14, "rotation": -95.74, "width": 68, "height": 96 }
|
"torso": { "name": "goblingirl/torso", "x": 36.28, "y": -5.14, "rotation": -95.75, "width": 68, "height": 96 }
|
||||||
},
|
},
|
||||||
"undie straps": {
|
"undie straps": {
|
||||||
"undie straps": { "name": "goblingirl/undie-straps", "x": -1.51, "y": 14.18, "width": 55, "height": 19 }
|
"undie straps": { "name": "goblingirl/undie-straps", "x": -1.52, "y": 14.19, "width": 55, "height": 19 }
|
||||||
},
|
},
|
||||||
"undies": {
|
"undies": {
|
||||||
"undies": { "name": "goblingirl/undies", "x": 5.4, "y": 1.7, "width": 36, "height": 29 }
|
"undies": { "name": "goblingirl/undies", "x": 5.4, "y": 1.71, "width": 36, "height": 29 }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -215,7 +208,7 @@
|
|||||||
"slots": {
|
"slots": {
|
||||||
"eyes": {
|
"eyes": {
|
||||||
"attachment": [
|
"attachment": [
|
||||||
{ "time": 0.6999, "name": "eyes closed" },
|
{ "time": 0.7, "name": "eyes closed" },
|
||||||
{ "time": 0.8, "name": null }
|
{ "time": 0.8, "name": null }
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@ -223,62 +216,62 @@
|
|||||||
"bones": {
|
"bones": {
|
||||||
"left upper leg": {
|
"left upper leg": {
|
||||||
"rotate": [
|
"rotate": [
|
||||||
{ "time": 0, "angle": -26.55 },
|
{ "time": 0, "angle": -26.56 },
|
||||||
{ "time": 0.1333, "angle": -8.78 },
|
{ "time": 0.1333, "angle": -8.79 },
|
||||||
{ "time": 0.2333, "angle": 9.51 },
|
{ "time": 0.2333, "angle": 9.51 },
|
||||||
{ "time": 0.3666, "angle": 30.74 },
|
{ "time": 0.3667, "angle": 30.74 },
|
||||||
{ "time": 0.5, "angle": 25.33 },
|
{ "time": 0.5, "angle": 25.34 },
|
||||||
{ "time": 0.6333, "angle": 26.11 },
|
{ "time": 0.6333, "angle": 26.12 },
|
||||||
{ "time": 0.7333, "angle": -7.7 },
|
{ "time": 0.7333, "angle": -7.71 },
|
||||||
{ "time": 0.8666, "angle": -21.19 },
|
{ "time": 0.8667, "angle": -21.19 },
|
||||||
{ "time": 1, "angle": -26.55 }
|
{ "time": 1, "angle": -26.56 }
|
||||||
],
|
],
|
||||||
"translate": [
|
"translate": [
|
||||||
{ "time": 0, "x": -1.32, "y": 1.7 },
|
{ "time": 0, "x": -1.32, "y": 1.71 },
|
||||||
{ "time": 0.3666, "x": -0.06, "y": 2.42 },
|
{ "time": 0.3667, "x": -0.06, "y": 2.43 },
|
||||||
{ "time": 1, "x": -1.32, "y": 1.7 }
|
{ "time": 1, "x": -1.32, "y": 1.71 }
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"right upper leg": {
|
"right upper leg": {
|
||||||
"rotate": [
|
"rotate": [
|
||||||
{ "time": 0, "angle": 42.45 },
|
{ "time": 0, "angle": 42.45 },
|
||||||
{ "time": 0.1333, "angle": 52.1 },
|
{ "time": 0.1333, "angle": 52.11 },
|
||||||
{ "time": 0.2333, "angle": 8.53 },
|
{ "time": 0.2333, "angle": 8.54 },
|
||||||
{ "time": 0.5, "angle": -16.93 },
|
{ "time": 0.5, "angle": -16.94 },
|
||||||
{ "time": 0.6333, "angle": 1.89 },
|
{ "time": 0.6333, "angle": 1.9 },
|
||||||
{
|
{
|
||||||
"time": 0.7333,
|
"time": 0.7333,
|
||||||
"angle": 28.06,
|
"angle": 28.06,
|
||||||
"curve": [ 0.462, 0.11, 1, 1 ]
|
"curve": [ 0.463, 0.12, 1, 1 ]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 0.8666,
|
"time": 0.8667,
|
||||||
"angle": 58.68,
|
"angle": 58.69,
|
||||||
"curve": [ 0.5, 0.02, 1, 1 ]
|
"curve": [ 0.5, 0.02, 1, 1 ]
|
||||||
},
|
},
|
||||||
{ "time": 1, "angle": 42.45 }
|
{ "time": 1, "angle": 42.45 }
|
||||||
],
|
],
|
||||||
"translate": [
|
"translate": [
|
||||||
{ "time": 0, "x": 6.23, "y": 0 },
|
{ "time": 0, "x": 6.24, "y": 0 },
|
||||||
{ "time": 0.2333, "x": 2.14, "y": 2.4 },
|
{ "time": 0.2333, "x": 2.14, "y": 2.4 },
|
||||||
{ "time": 0.5, "x": 2.44, "y": 4.8 },
|
{ "time": 0.5, "x": 2.44, "y": 4.8 },
|
||||||
{ "time": 1, "x": 6.23, "y": 0 }
|
{ "time": 1, "x": 6.24, "y": 0 }
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"left lower leg": {
|
"left lower leg": {
|
||||||
"rotate": [
|
"rotate": [
|
||||||
{ "time": 0, "angle": -22.98 },
|
{ "time": 0, "angle": -22.98 },
|
||||||
{ "time": 0.1333, "angle": -63.5 },
|
{ "time": 0.1333, "angle": -63.51 },
|
||||||
{ "time": 0.2333, "angle": -73.76 },
|
{ "time": 0.2333, "angle": -73.76 },
|
||||||
{ "time": 0.5, "angle": 5.11 },
|
{ "time": 0.5, "angle": 5.12 },
|
||||||
{ "time": 0.6333, "angle": -28.29 },
|
{ "time": 0.6333, "angle": -28.3 },
|
||||||
{ "time": 0.7333, "angle": 4.08 },
|
{ "time": 0.7333, "angle": 4.08 },
|
||||||
{ "time": 0.8666, "angle": 3.53 },
|
{ "time": 0.8667, "angle": 3.53 },
|
||||||
{ "time": 1, "angle": -22.98 }
|
{ "time": 1, "angle": -22.98 }
|
||||||
],
|
],
|
||||||
"translate": [
|
"translate": [
|
||||||
{ "time": 0, "x": 0, "y": 0 },
|
{ "time": 0, "x": 0, "y": 0 },
|
||||||
{ "time": 0.2333, "x": 2.55, "y": -0.47 },
|
{ "time": 0.2333, "x": 2.56, "y": -0.47 },
|
||||||
{ "time": 0.5, "x": 0, "y": 0, "curve": "stepped" },
|
{ "time": 0.5, "x": 0, "y": 0, "curve": "stepped" },
|
||||||
{ "time": 1, "x": 0, "y": 0 }
|
{ "time": 1, "x": 0, "y": 0 }
|
||||||
]
|
]
|
||||||
@ -288,11 +281,11 @@
|
|||||||
{ "time": 0, "angle": -3.69 },
|
{ "time": 0, "angle": -3.69 },
|
||||||
{ "time": 0.1333, "angle": -10.42 },
|
{ "time": 0.1333, "angle": -10.42 },
|
||||||
{ "time": 0.2333, "angle": -5.01 },
|
{ "time": 0.2333, "angle": -5.01 },
|
||||||
{ "time": 0.3666, "angle": 3.87 },
|
{ "time": 0.3667, "angle": 3.87 },
|
||||||
{ "time": 0.5, "angle": -3.87 },
|
{ "time": 0.5, "angle": -3.88 },
|
||||||
{ "time": 0.6333, "angle": 2.78 },
|
{ "time": 0.6333, "angle": 2.78 },
|
||||||
{ "time": 0.7333, "angle": 1.68 },
|
{ "time": 0.7333, "angle": 1.68 },
|
||||||
{ "time": 0.8666, "angle": -8.54 },
|
{ "time": 0.8667, "angle": -8.54 },
|
||||||
{ "time": 1, "angle": -3.69 }
|
{ "time": 1, "angle": -3.69 }
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@ -311,70 +304,70 @@
|
|||||||
"rotate": [
|
"rotate": [
|
||||||
{
|
{
|
||||||
"time": 0,
|
"time": 0,
|
||||||
"angle": -4.02,
|
"angle": -4.03,
|
||||||
"curve": [ 0.267, 0, 0.804, 0.99 ]
|
"curve": [ 0.267, 0.01, 0.805, 0.99 ]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 0.6333,
|
"time": 0.6333,
|
||||||
"angle": 19.78,
|
"angle": 19.79,
|
||||||
"curve": [ 0.307, 0, 0.787, 0.99 ]
|
"curve": [ 0.307, 0, 0.787, 0.99 ]
|
||||||
},
|
},
|
||||||
{ "time": 1, "angle": -4.02 }
|
{ "time": 1, "angle": -4.03 }
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"right hand": {
|
"right hand": {
|
||||||
"rotate": [
|
"rotate": [
|
||||||
{ "time": 0, "angle": 8.98 },
|
{ "time": 0, "angle": 8.99 },
|
||||||
{ "time": 0.6333, "angle": 0.51 },
|
{ "time": 0.6333, "angle": 0.51 },
|
||||||
{ "time": 1, "angle": 8.98 }
|
{ "time": 1, "angle": 8.99 }
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"left shoulder": {
|
"left shoulder": {
|
||||||
"rotate": [
|
"rotate": [
|
||||||
{
|
{
|
||||||
"time": 0,
|
"time": 0,
|
||||||
"angle": 6.25,
|
"angle": 6.26,
|
||||||
"curve": [ 0.339, 0, 0.683, 1 ]
|
"curve": [ 0.339, 0, 0.684, 1 ]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 0.5,
|
"time": 0.5,
|
||||||
"angle": -11.78,
|
"angle": -11.79,
|
||||||
"curve": [ 0.281, 0, 0.686, 0.99 ]
|
"curve": [ 0.282, 0, 0.687, 0.99 ]
|
||||||
},
|
},
|
||||||
{ "time": 1, "angle": 6.25 }
|
{ "time": 1, "angle": 6.26 }
|
||||||
],
|
],
|
||||||
"translate": [
|
"translate": [
|
||||||
{ "time": 0, "x": 1.15, "y": 0.23 }
|
{ "time": 0, "x": 1.15, "y": 0.24 }
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"left hand": {
|
"left hand": {
|
||||||
"rotate": [
|
"rotate": [
|
||||||
{
|
{
|
||||||
"time": 0,
|
"time": 0,
|
||||||
"angle": -21.23,
|
"angle": -21.24,
|
||||||
"curve": [ 0.295, 0, 0.755, 0.98 ]
|
"curve": [ 0.296, 0, 0.756, 0.99 ]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 0.5,
|
"time": 0.5,
|
||||||
"angle": -27.28,
|
"angle": -27.28,
|
||||||
"curve": [ 0.241, 0, 0.75, 0.97 ]
|
"curve": [ 0.241, 0, 0.75, 0.97 ]
|
||||||
},
|
},
|
||||||
{ "time": 1, "angle": -21.23 }
|
{ "time": 1, "angle": -21.24 }
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"left arm": {
|
"left arm": {
|
||||||
"rotate": [
|
"rotate": [
|
||||||
{
|
{
|
||||||
"time": 0,
|
"time": 0,
|
||||||
"angle": 28.37,
|
"angle": 28.38,
|
||||||
"curve": [ 0.339, 0, 0.683, 1 ]
|
"curve": [ 0.339, 0, 0.684, 1 ]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 0.5,
|
"time": 0.5,
|
||||||
"angle": 60.09,
|
"angle": 60.09,
|
||||||
"curve": [ 0.281, 0, 0.686, 0.99 ]
|
"curve": [ 0.282, 0, 0.687, 0.99 ]
|
||||||
},
|
},
|
||||||
{ "time": 1, "angle": 28.37 }
|
{ "time": 1, "angle": 28.38 }
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"torso": {
|
"torso": {
|
||||||
@ -382,38 +375,38 @@
|
|||||||
{ "time": 0, "angle": -10.28 },
|
{ "time": 0, "angle": -10.28 },
|
||||||
{
|
{
|
||||||
"time": 0.1333,
|
"time": 0.1333,
|
||||||
"angle": -15.38,
|
"angle": -15.39,
|
||||||
"curve": [ 0.545, 0, 0.818, 1 ]
|
"curve": [ 0.546, 0.01, 0.819, 1 ]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 0.3666,
|
"time": 0.3667,
|
||||||
"angle": -9.78,
|
"angle": -9.78,
|
||||||
"curve": [ 0.58, 0.17, 0.669, 0.99 ]
|
"curve": [ 0.58, 0.17, 0.67, 0.99 ]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 0.6333,
|
"time": 0.6333,
|
||||||
"angle": -15.75,
|
"angle": -15.75,
|
||||||
"curve": [ 0.235, 0.01, 0.795, 1 ]
|
"curve": [ 0.236, 0.01, 0.796, 1 ]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 0.8666,
|
"time": 0.8667,
|
||||||
"angle": -7.06,
|
"angle": -7.07,
|
||||||
"curve": [ 0.209, 0, 0.816, 0.98 ]
|
"curve": [ 0.21, 0, 0.816, 0.99 ]
|
||||||
},
|
},
|
||||||
{ "time": 1, "angle": -10.28 }
|
{ "time": 1, "angle": -10.28 }
|
||||||
],
|
],
|
||||||
"translate": [
|
"translate": [
|
||||||
{ "time": 0, "x": -1.29, "y": 1.68 }
|
{ "time": 0, "x": -1.29, "y": 1.69 }
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"right foot": {
|
"right foot": {
|
||||||
"rotate": [
|
"rotate": [
|
||||||
{ "time": 0, "angle": -5.25 },
|
{ "time": 0, "angle": -5.25 },
|
||||||
{ "time": 0.2333, "angle": -1.91 },
|
{ "time": 0.2333, "angle": -1.91 },
|
||||||
{ "time": 0.3666, "angle": -6.45 },
|
{ "time": 0.3667, "angle": -6.45 },
|
||||||
{ "time": 0.5, "angle": -5.39 },
|
{ "time": 0.5, "angle": -5.4 },
|
||||||
{ "time": 0.7333, "angle": -11.68 },
|
{ "time": 0.7333, "angle": -11.69 },
|
||||||
{ "time": 0.8666, "angle": 0.46 },
|
{ "time": 0.8667, "angle": 0.46 },
|
||||||
{ "time": 1, "angle": -5.25 }
|
{ "time": 1, "angle": -5.25 }
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@ -422,12 +415,12 @@
|
|||||||
{
|
{
|
||||||
"time": 0,
|
"time": 0,
|
||||||
"angle": -3.39,
|
"angle": -3.39,
|
||||||
"curve": [ 0.316, 0.01, 0.741, 0.98 ]
|
"curve": [ 0.316, 0.02, 0.741, 0.99 ]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 0.1333,
|
"time": 0.1333,
|
||||||
"angle": -45.53,
|
"angle": -45.53,
|
||||||
"curve": [ 0.229, 0, 0.738, 0.97 ]
|
"curve": [ 0.23, 0, 0.739, 0.97 ]
|
||||||
},
|
},
|
||||||
{ "time": 0.2333, "angle": -4.83 },
|
{ "time": 0.2333, "angle": -4.83 },
|
||||||
{ "time": 0.5, "angle": -19.53 },
|
{ "time": 0.5, "angle": -19.53 },
|
||||||
@ -442,7 +435,7 @@
|
|||||||
"translate": [
|
"translate": [
|
||||||
{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
|
{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
|
||||||
{ "time": 0.5, "x": 0, "y": 0 },
|
{ "time": 0.5, "x": 0, "y": 0 },
|
||||||
{ "time": 0.6333, "x": 2.18, "y": 0.21 },
|
{ "time": 0.6333, "x": 2.19, "y": 0.21 },
|
||||||
{ "time": 1, "x": 0, "y": 0 }
|
{ "time": 1, "x": 0, "y": 0 }
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@ -456,31 +449,31 @@
|
|||||||
{
|
{
|
||||||
"time": 0.1333,
|
"time": 0.1333,
|
||||||
"x": 0,
|
"x": 0,
|
||||||
"y": -7.05,
|
"y": -7.06,
|
||||||
"curve": [ 0.359, 0.47, 0.646, 0.74 ]
|
"curve": [ 0.359, 0.47, 0.647, 0.75 ]
|
||||||
},
|
},
|
||||||
{ "time": 0.3666, "x": 0, "y": 6.78 },
|
{ "time": 0.3667, "x": 0, "y": 6.78 },
|
||||||
{ "time": 0.5, "x": 0, "y": -6.13 },
|
{ "time": 0.5, "x": 0, "y": -6.14 },
|
||||||
{
|
{
|
||||||
"time": 0.6333,
|
"time": 0.6333,
|
||||||
"x": 0,
|
"x": 0,
|
||||||
"y": -7.05,
|
"y": -7.06,
|
||||||
"curve": [ 0.359, 0.47, 0.646, 0.74 ]
|
"curve": [ 0.359, 0.47, 0.647, 0.75 ]
|
||||||
},
|
},
|
||||||
{ "time": 0.8666, "x": 0, "y": 6.78 },
|
{ "time": 0.8667, "x": 0, "y": 6.78 },
|
||||||
{ "time": 1, "x": 0, "y": -4.16 }
|
{ "time": 1, "x": 0, "y": -4.16 }
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"neck": {
|
"neck": {
|
||||||
"rotate": [
|
"rotate": [
|
||||||
{ "time": 0, "angle": 3.6 },
|
{ "time": 0, "angle": 3.6 },
|
||||||
{ "time": 0.1333, "angle": 17.49 },
|
{ "time": 0.1333, "angle": 17.5 },
|
||||||
{ "time": 0.2333, "angle": 6.1 },
|
{ "time": 0.2333, "angle": 6.11 },
|
||||||
{ "time": 0.3666, "angle": 3.45 },
|
{ "time": 0.3667, "angle": 3.46 },
|
||||||
{ "time": 0.5, "angle": 5.17 },
|
{ "time": 0.5, "angle": 5.18 },
|
||||||
{ "time": 0.6333, "angle": 18.36 },
|
{ "time": 0.6333, "angle": 18.36 },
|
||||||
{ "time": 0.7333, "angle": 6.09 },
|
{ "time": 0.7333, "angle": 6.09 },
|
||||||
{ "time": 0.8666, "angle": 2.28 },
|
{ "time": 0.8667, "angle": 2.29 },
|
||||||
{ "time": 1, "angle": 3.6 }
|
{ "time": 1, "angle": 3.6 }
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@ -489,19 +482,19 @@
|
|||||||
{
|
{
|
||||||
"time": 0,
|
"time": 0,
|
||||||
"angle": 3.6,
|
"angle": 3.6,
|
||||||
"curve": [ 0, 0, 0.704, 1.17 ]
|
"curve": [ 0, 0, 0.704, 1.18 ]
|
||||||
},
|
},
|
||||||
{ "time": 0.1333, "angle": -0.2 },
|
{ "time": 0.1333, "angle": -0.21 },
|
||||||
{ "time": 0.2333, "angle": 6.1 },
|
{ "time": 0.2333, "angle": 6.11 },
|
||||||
{ "time": 0.3666, "angle": 3.45 },
|
{ "time": 0.3667, "angle": 3.46 },
|
||||||
{
|
{
|
||||||
"time": 0.5,
|
"time": 0.5,
|
||||||
"angle": 5.17,
|
"angle": 5.18,
|
||||||
"curve": [ 0, 0, 0.704, 1.61 ]
|
"curve": [ 0, 0, 0.704, 1.62 ]
|
||||||
},
|
},
|
||||||
{ "time": 0.6666, "angle": 1.1 },
|
{ "time": 0.6667, "angle": 1.11 },
|
||||||
{ "time": 0.7333, "angle": 6.09 },
|
{ "time": 0.7333, "angle": 6.09 },
|
||||||
{ "time": 0.8666, "angle": 2.28 },
|
{ "time": 0.8667, "angle": 2.29 },
|
||||||
{ "time": 1, "angle": 3.6 }
|
{ "time": 1, "angle": 3.6 }
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
@ -1,30 +1,23 @@
|
|||||||
{
|
{
|
||||||
"skeleton": {
|
"skeleton": { "hash": "d01ShNZ08gDOIyqc2CGlBzHUKrA", "spine": "3.6.05-beta", "width": 413.19, "height": 195.71, "images": "./images/" },
|
||||||
"hash": "DRH0bKbb0s4lzWxWdYTHHpv4S4I",
|
|
||||||
"spine": "3.5.03-beta",
|
|
||||||
"width": 413.18,
|
|
||||||
"height": 195.71,
|
|
||||||
"fps": 30,
|
|
||||||
"images": "./images/"
|
|
||||||
},
|
|
||||||
"bones": [
|
"bones": [
|
||||||
{ "name": "root" },
|
{ "name": "root" },
|
||||||
{ "name": "powerup", "parent": "root", "x": 1.48, "y": 134.02 },
|
{ "name": "powerup", "parent": "root", "x": 1.48, "y": 134.02 },
|
||||||
{ "name": "tokenRoot", "parent": "powerup", "x": -0.47, "y": 56.13 },
|
{ "name": "tokenRoot", "parent": "powerup", "x": -0.47, "y": 56.14 },
|
||||||
{ "name": "left wing", "parent": "tokenRoot", "x": -91.06, "y": 7.8 },
|
{ "name": "left wing", "parent": "tokenRoot", "x": -91.06, "y": 7.8 },
|
||||||
{ "name": "right wing", "parent": "tokenRoot", "x": 86.82, "y": 7.12 },
|
{ "name": "right wing", "parent": "tokenRoot", "x": 86.82, "y": 7.12 },
|
||||||
{ "name": "stars", "parent": "root", "x": 1.22, "y": 191.25 },
|
{ "name": "stars", "parent": "root", "x": 1.23, "y": 191.25 },
|
||||||
{ "name": "star", "parent": "stars", "x": 2.84, "y": 4.76 },
|
{ "name": "star", "parent": "stars", "x": 2.84, "y": 4.76 },
|
||||||
{ "name": "star1", "parent": "stars", "x": -2.19, "y": -2.04 },
|
{ "name": "star1", "parent": "stars", "x": -2.2, "y": -2.04 },
|
||||||
{ "name": "star2", "parent": "stars", "x": -1.36, "y": -4.16 },
|
{ "name": "star2", "parent": "stars", "x": -1.37, "y": -4.16 },
|
||||||
{ "name": "star3", "parent": "stars", "x": -0.84, "y": -3.78 },
|
{ "name": "star3", "parent": "stars", "x": -0.84, "y": -3.78 },
|
||||||
{ "name": "star4", "parent": "stars", "x": 10.08, "y": 14.52 },
|
{ "name": "star4", "parent": "stars", "x": 10.09, "y": 14.53 },
|
||||||
{ "name": "star5", "parent": "stars", "x": 11.5, "y": -12.28 },
|
{ "name": "star5", "parent": "stars", "x": 11.5, "y": -12.29 },
|
||||||
{ "name": "star6", "parent": "stars", "x": -20.73, "y": -23.44 },
|
{ "name": "star6", "parent": "stars", "x": -20.74, "y": -23.45 },
|
||||||
{ "name": "star7", "parent": "stars", "x": -5.85, "y": -35.84 },
|
{ "name": "star7", "parent": "stars", "x": -5.86, "y": -35.85 },
|
||||||
{ "name": "star8", "parent": "stars", "x": 8.41, "y": -10.05 },
|
{ "name": "star8", "parent": "stars", "x": 8.41, "y": -10.05 },
|
||||||
{ "name": "star9", "parent": "stars", "x": -1.62, "y": -7.34 },
|
{ "name": "star9", "parent": "stars", "x": -1.62, "y": -7.34 },
|
||||||
{ "name": "token", "parent": "tokenRoot", "x": -1.18, "y": -1.81, "scaleX": 0.771, "scaleY": 0.771 }
|
{ "name": "token", "parent": "tokenRoot", "x": -1.19, "y": -1.81, "scaleX": 0.771, "scaleY": 0.771 }
|
||||||
],
|
],
|
||||||
"slots": [
|
"slots": [
|
||||||
{ "name": "right wing", "bone": "right wing", "attachment": "wing" },
|
{ "name": "right wing", "bone": "right wing", "attachment": "wing" },
|
||||||
@ -44,10 +37,10 @@
|
|||||||
"skins": {
|
"skins": {
|
||||||
"default": {
|
"default": {
|
||||||
"left wing": {
|
"left wing": {
|
||||||
"wing": { "x": -48.74, "y": 42.16, "scaleX": -1, "width": 137, "height": 150 }
|
"wing": { "x": -48.75, "y": 42.16, "scaleX": -1, "width": 137, "height": 150 }
|
||||||
},
|
},
|
||||||
"right wing": {
|
"right wing": {
|
||||||
"wing": { "x": 49.55, "y": 42.32, "width": 137, "height": 150 }
|
"wing": { "x": 49.56, "y": 42.32, "width": 137, "height": 150 }
|
||||||
},
|
},
|
||||||
"star": {
|
"star": {
|
||||||
"star": { "width": 76, "height": 72 }
|
"star": { "width": 76, "height": 72 }
|
||||||
@ -80,7 +73,7 @@
|
|||||||
"star": { "width": 76, "height": 72 }
|
"star": { "width": 76, "height": 72 }
|
||||||
},
|
},
|
||||||
"token": {
|
"token": {
|
||||||
"token": { "x": 1.18, "y": 1.81, "width": 123, "height": 122 }
|
"token": { "x": 1.19, "y": 1.81, "width": 123, "height": 122 }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -91,12 +84,12 @@
|
|||||||
"color": [
|
"color": [
|
||||||
{ "time": 0, "color": "ffffff00" },
|
{ "time": 0, "color": "ffffff00" },
|
||||||
{ "time": 0.5333, "color": "ffffffff" },
|
{ "time": 0.5333, "color": "ffffffff" },
|
||||||
{ "time": 0.6666, "color": "ffffff00" }
|
{ "time": 0.6667, "color": "ffffff00" }
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"star1": {
|
"star1": {
|
||||||
"color": [
|
"color": [
|
||||||
{ "time": 0.2666, "color": "fff9f600" },
|
{ "time": 0.2667, "color": "fff9f600" },
|
||||||
{ "time": 0.8, "color": "ffffffff" },
|
{ "time": 0.8, "color": "ffffffff" },
|
||||||
{ "time": 0.9333, "color": "fff0f200" }
|
{ "time": 0.9333, "color": "fff0f200" }
|
||||||
]
|
]
|
||||||
@ -104,14 +97,14 @@
|
|||||||
"star2": {
|
"star2": {
|
||||||
"color": [
|
"color": [
|
||||||
{ "time": 0.1333, "color": "ffffff00" },
|
{ "time": 0.1333, "color": "ffffff00" },
|
||||||
{ "time": 0.6666, "color": "ffffffff" },
|
{ "time": 0.6667, "color": "ffffffff" },
|
||||||
{ "time": 0.8, "color": "ffffff00" }
|
{ "time": 0.8, "color": "ffffff00" }
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"star3": {
|
"star3": {
|
||||||
"color": [
|
"color": [
|
||||||
{ "time": 0.4333, "color": "ffffff00" },
|
{ "time": 0.4333, "color": "ffffff00" },
|
||||||
{ "time": 0.9666, "color": "ffffffff" },
|
{ "time": 0.9667, "color": "ffffffff" },
|
||||||
{ "time": 1.1, "color": "ffffff00" }
|
{ "time": 1.1, "color": "ffffff00" }
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@ -119,7 +112,7 @@
|
|||||||
"color": [
|
"color": [
|
||||||
{ "time": 0.6, "color": "ffffff00" },
|
{ "time": 0.6, "color": "ffffff00" },
|
||||||
{ "time": 1.1333, "color": "ffffffff" },
|
{ "time": 1.1333, "color": "ffffffff" },
|
||||||
{ "time": 1.2666, "color": "ffffff00" }
|
{ "time": 1.2667, "color": "ffffff00" }
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"star5": {
|
"star5": {
|
||||||
@ -135,7 +128,7 @@
|
|||||||
"color": [
|
"color": [
|
||||||
{ "time": 0, "color": "ffffff2f" },
|
{ "time": 0, "color": "ffffff2f" },
|
||||||
{ "time": 0.4333, "color": "ffffffff" },
|
{ "time": 0.4333, "color": "ffffffff" },
|
||||||
{ "time": 0.5666, "color": "ffffff00", "curve": "stepped" },
|
{ "time": 0.5667, "color": "ffffff00", "curve": "stepped" },
|
||||||
{ "time": 1.2333, "color": "ffffff00" },
|
{ "time": 1.2333, "color": "ffffff00" },
|
||||||
{ "time": 1.3333, "color": "ffffff2f" }
|
{ "time": 1.3333, "color": "ffffff2f" }
|
||||||
]
|
]
|
||||||
@ -143,15 +136,15 @@
|
|||||||
"star7": {
|
"star7": {
|
||||||
"color": [
|
"color": [
|
||||||
{ "time": 0.6333, "color": "ffffff00" },
|
{ "time": 0.6333, "color": "ffffff00" },
|
||||||
{ "time": 1.1666, "color": "ffffffff" },
|
{ "time": 1.1667, "color": "ffffffff" },
|
||||||
{ "time": 1.2999, "color": "ffffff00" }
|
{ "time": 1.3, "color": "ffffff00" }
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"star8": {
|
"star8": {
|
||||||
"color": [
|
"color": [
|
||||||
{ "time": 0, "color": "ffffffbf" },
|
{ "time": 0, "color": "ffffffbf" },
|
||||||
{ "time": 0.1333, "color": "ffffffff" },
|
{ "time": 0.1333, "color": "ffffffff" },
|
||||||
{ "time": 0.2666, "color": "ffffff00", "curve": "stepped" },
|
{ "time": 0.2667, "color": "ffffff00", "curve": "stepped" },
|
||||||
{ "time": 0.9333, "color": "ffffff00" },
|
{ "time": 0.9333, "color": "ffffff00" },
|
||||||
{ "time": 1.3333, "color": "ffffffbf" }
|
{ "time": 1.3333, "color": "ffffffbf" }
|
||||||
]
|
]
|
||||||
@ -170,24 +163,24 @@
|
|||||||
"translate": [
|
"translate": [
|
||||||
{
|
{
|
||||||
"time": 0,
|
"time": 0,
|
||||||
"x": -18.55,
|
"x": -18.56,
|
||||||
"y": 0,
|
"y": 0,
|
||||||
"curve": [ 0.385, 0, 0.689, 0.95 ]
|
"curve": [ 0.385, 0.01, 0.69, 0.96 ]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 0.3333,
|
"time": 0.3333,
|
||||||
"x": 0,
|
"x": 0,
|
||||||
"y": -34.69,
|
"y": -34.7,
|
||||||
"curve": [ 0.235, 0.66, 1, 1 ]
|
"curve": [ 0.236, 0.67, 1, 1 ]
|
||||||
},
|
},
|
||||||
{ "time": 0.6666, "x": 22.04, "y": 0 },
|
{ "time": 0.6667, "x": 22.04, "y": 0 },
|
||||||
{
|
{
|
||||||
"time": 1,
|
"time": 1,
|
||||||
"x": 0,
|
"x": 0,
|
||||||
"y": -34.69,
|
"y": -34.7,
|
||||||
"curve": [ 0.235, 0.66, 1, 1 ]
|
"curve": [ 0.236, 0.67, 1, 1 ]
|
||||||
},
|
},
|
||||||
{ "time": 1.3333, "x": -18.55, "y": 0 }
|
{ "time": 1.3333, "x": -18.56, "y": 0 }
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"left wing": {
|
"left wing": {
|
||||||
@ -195,258 +188,258 @@
|
|||||||
{
|
{
|
||||||
"time": 0,
|
"time": 0,
|
||||||
"angle": 45.23,
|
"angle": 45.23,
|
||||||
"curve": [ 0.393, 0, 0.629, 1 ]
|
"curve": [ 0.394, 0, 0.629, 1 ]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 0.1666,
|
"time": 0.1667,
|
||||||
"angle": -38.74,
|
"angle": -38.75,
|
||||||
"curve": [ 0.163, 0.91, 1, 1 ]
|
"curve": [ 0.164, 0.91, 1, 1 ]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 0.3333,
|
"time": 0.3333,
|
||||||
"angle": 45.23,
|
"angle": 45.23,
|
||||||
"curve": [ 0.393, 0, 0.629, 1 ]
|
"curve": [ 0.394, 0, 0.629, 1 ]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 0.5,
|
"time": 0.5,
|
||||||
"angle": -38.74,
|
"angle": -38.75,
|
||||||
"curve": [ 0.163, 0.91, 1, 1 ]
|
"curve": [ 0.164, 0.91, 1, 1 ]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 0.6666,
|
"time": 0.6667,
|
||||||
"angle": 45.23,
|
"angle": 45.23,
|
||||||
"curve": [ 0.393, 0, 0.629, 1 ]
|
"curve": [ 0.394, 0, 0.629, 1 ]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 0.8333,
|
"time": 0.8333,
|
||||||
"angle": -38.74,
|
"angle": -38.75,
|
||||||
"curve": [ 0.163, 0.91, 1, 1 ]
|
"curve": [ 0.164, 0.91, 1, 1 ]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 1,
|
"time": 1,
|
||||||
"angle": 45.23,
|
"angle": 45.23,
|
||||||
"curve": [ 0.393, 0, 0.629, 1 ]
|
"curve": [ 0.394, 0, 0.629, 1 ]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 1.1666,
|
"time": 1.1667,
|
||||||
"angle": -38.74,
|
"angle": -38.75,
|
||||||
"curve": [ 0.163, 0.91, 1, 1 ]
|
"curve": [ 0.164, 0.91, 1, 1 ]
|
||||||
},
|
},
|
||||||
{ "time": 1.3333, "angle": 45.23 }
|
{ "time": 1.3333, "angle": 45.23 }
|
||||||
],
|
],
|
||||||
"scale": [
|
"scale": [
|
||||||
{ "time": 0, "x": 1.098, "y": 1 },
|
{ "time": 0, "x": 1.099, "y": 1 },
|
||||||
{ "time": 0.1666, "x": 1, "y": 0.826 },
|
{ "time": 0.1667, "x": 1, "y": 0.827 },
|
||||||
{ "time": 0.3333, "x": 1.098, "y": 1 },
|
{ "time": 0.3333, "x": 1.099, "y": 1 },
|
||||||
{ "time": 0.5, "x": 1, "y": 0.826 },
|
{ "time": 0.5, "x": 1, "y": 0.827 },
|
||||||
{ "time": 0.6666, "x": 1.098, "y": 1 },
|
{ "time": 0.6667, "x": 1.099, "y": 1 },
|
||||||
{ "time": 0.8333, "x": 1, "y": 0.826 },
|
{ "time": 0.8333, "x": 1, "y": 0.827 },
|
||||||
{ "time": 1, "x": 1.098, "y": 1 },
|
{ "time": 1, "x": 1.099, "y": 1 },
|
||||||
{ "time": 1.1666, "x": 1, "y": 0.826 },
|
{ "time": 1.1667, "x": 1, "y": 0.827 },
|
||||||
{ "time": 1.3333, "x": 1.098, "y": 1 }
|
{ "time": 1.3333, "x": 1.099, "y": 1 }
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"right wing": {
|
"right wing": {
|
||||||
"rotate": [
|
"rotate": [
|
||||||
{
|
{
|
||||||
"time": 0,
|
"time": 0,
|
||||||
"angle": -39.45,
|
"angle": -39.46,
|
||||||
"curve": [ 0.327, 0, 0.637, 1 ]
|
"curve": [ 0.328, 0, 0.638, 1 ]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 0.1666,
|
"time": 0.1667,
|
||||||
"angle": 37.67,
|
"angle": 37.68,
|
||||||
"curve": [ 0.163, 0.91, 1, 1 ]
|
"curve": [ 0.164, 0.91, 1, 1 ]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 0.3333,
|
"time": 0.3333,
|
||||||
"angle": -39.45,
|
"angle": -39.46,
|
||||||
"curve": [ 0.327, 0, 0.637, 1 ]
|
"curve": [ 0.328, 0, 0.638, 1 ]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 0.5,
|
"time": 0.5,
|
||||||
"angle": 37.67,
|
"angle": 37.68,
|
||||||
"curve": [ 0.163, 0.91, 1, 1 ]
|
"curve": [ 0.164, 0.91, 1, 1 ]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 0.6666,
|
"time": 0.6667,
|
||||||
"angle": -39.45,
|
"angle": -39.46,
|
||||||
"curve": [ 0.327, 0, 0.637, 1 ]
|
"curve": [ 0.328, 0, 0.638, 1 ]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 0.8333,
|
"time": 0.8333,
|
||||||
"angle": 37.67,
|
"angle": 37.68,
|
||||||
"curve": [ 0.163, 0.91, 1, 1 ]
|
"curve": [ 0.164, 0.91, 1, 1 ]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 1,
|
"time": 1,
|
||||||
"angle": -39.45,
|
"angle": -39.46,
|
||||||
"curve": [ 0.327, 0, 0.637, 1 ]
|
"curve": [ 0.328, 0, 0.638, 1 ]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 1.1666,
|
"time": 1.1667,
|
||||||
"angle": 37.67,
|
"angle": 37.68,
|
||||||
"curve": [ 0.163, 0.91, 1, 1 ]
|
"curve": [ 0.164, 0.91, 1, 1 ]
|
||||||
},
|
},
|
||||||
{ "time": 1.3333, "angle": -39.45 }
|
{ "time": 1.3333, "angle": -39.46 }
|
||||||
],
|
],
|
||||||
"scale": [
|
"scale": [
|
||||||
{ "time": 0, "x": 1.09, "y": 1 },
|
{ "time": 0, "x": 1.09, "y": 1 },
|
||||||
{ "time": 0.1666, "x": 1, "y": 0.819 },
|
{ "time": 0.1667, "x": 1, "y": 0.82 },
|
||||||
{ "time": 0.3333, "x": 1.09, "y": 1 },
|
{ "time": 0.3333, "x": 1.09, "y": 1 },
|
||||||
{ "time": 0.5, "x": 1, "y": 0.819 },
|
{ "time": 0.5, "x": 1, "y": 0.82 },
|
||||||
{ "time": 0.6666, "x": 1.09, "y": 1 },
|
{ "time": 0.6667, "x": 1.09, "y": 1 },
|
||||||
{ "time": 0.8333, "x": 1, "y": 0.819 },
|
{ "time": 0.8333, "x": 1, "y": 0.82 },
|
||||||
{ "time": 1, "x": 1.09, "y": 1 },
|
{ "time": 1, "x": 1.09, "y": 1 },
|
||||||
{ "time": 1.1666, "x": 1, "y": 0.819 },
|
{ "time": 1.1667, "x": 1, "y": 0.82 },
|
||||||
{ "time": 1.3333, "x": 1.09, "y": 1 }
|
{ "time": 1.3333, "x": 1.09, "y": 1 }
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"tokenRoot": {
|
"tokenRoot": {
|
||||||
"rotate": [
|
"rotate": [
|
||||||
{ "time": 0, "angle": 11.29 },
|
{ "time": 0, "angle": 11.3 },
|
||||||
{ "time": 0.3333, "angle": 2.5 },
|
{ "time": 0.3333, "angle": 2.51 },
|
||||||
{ "time": 0.6666, "angle": -12.5 },
|
{ "time": 0.6667, "angle": -12.5 },
|
||||||
{ "time": 1, "angle": 0.63 },
|
{ "time": 1, "angle": 0.63 },
|
||||||
{ "time": 1.3333, "angle": 11.29 }
|
{ "time": 1.3333, "angle": 11.3 }
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"token": {
|
"token": {
|
||||||
"rotate": [
|
"rotate": [
|
||||||
{ "time": 0, "angle": -0.5 },
|
{ "time": 0, "angle": -0.5 },
|
||||||
{ "time": 0.6666, "angle": 5.86 },
|
{ "time": 0.6667, "angle": 5.87 },
|
||||||
{ "time": 1.3333, "angle": -0.5 }
|
{ "time": 1.3333, "angle": -0.5 }
|
||||||
],
|
],
|
||||||
"scale": [
|
"scale": [
|
||||||
{ "time": 0, "x": 1.181, "y": 1.181 },
|
{ "time": 0, "x": 1.181, "y": 1.181 },
|
||||||
{ "time": 0.3333, "x": 1, "y": 1 },
|
{ "time": 0.3333, "x": 1, "y": 1 },
|
||||||
{ "time": 0.6666, "x": 1.181, "y": 1.181 },
|
{ "time": 0.6667, "x": 1.181, "y": 1.181 },
|
||||||
{ "time": 1, "x": 1, "y": 1 },
|
{ "time": 1, "x": 1, "y": 1 },
|
||||||
{ "time": 1.3333, "x": 1.181, "y": 1.181 }
|
{ "time": 1.3333, "x": 1.181, "y": 1.181 }
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"star": {
|
"star": {
|
||||||
"rotate": [
|
"rotate": [
|
||||||
{ "time": 0, "angle": 28.25 },
|
{ "time": 0, "angle": 28.26 },
|
||||||
{ "time": 0.6666, "angle": -42.08 }
|
{ "time": 0.6667, "angle": -42.08 }
|
||||||
],
|
],
|
||||||
"translate": [
|
"translate": [
|
||||||
{ "time": 0, "x": 0, "y": 0 },
|
{ "time": 0, "x": 0, "y": 0 },
|
||||||
{ "time": 0.6666, "x": 86.68, "y": 68.32 }
|
{ "time": 0.6667, "x": 86.68, "y": 68.32 }
|
||||||
],
|
],
|
||||||
"scale": [
|
"scale": [
|
||||||
{ "time": 0, "x": 0.439, "y": 0.439 },
|
{ "time": 0, "x": 0.439, "y": 0.439 },
|
||||||
{ "time": 0.6666, "x": 1, "y": 1 }
|
{ "time": 0.6667, "x": 1, "y": 1 }
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"star1": {
|
"star1": {
|
||||||
"rotate": [
|
"rotate": [
|
||||||
{ "time": 0.2666, "angle": 13.37 },
|
{ "time": 0.2667, "angle": 13.37 },
|
||||||
{ "time": 0.9333, "angle": 89.61 }
|
{ "time": 0.9333, "angle": 89.61 }
|
||||||
],
|
],
|
||||||
"translate": [
|
"translate": [
|
||||||
{ "time": 0.2666, "x": -12.15, "y": -2.27 },
|
{ "time": 0.2667, "x": -12.16, "y": -2.28 },
|
||||||
{ "time": 0.9333, "x": -76.4, "y": 67.76 }
|
{ "time": 0.9333, "x": -76.4, "y": 67.76 }
|
||||||
],
|
],
|
||||||
"scale": [
|
"scale": [
|
||||||
{ "time": 0.2666, "x": 0.391, "y": 0.391 },
|
{ "time": 0.2667, "x": 0.392, "y": 0.392 },
|
||||||
{ "time": 0.9333, "x": 0.815, "y": 0.815 }
|
{ "time": 0.9333, "x": 0.816, "y": 0.816 }
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"star2": {
|
"star2": {
|
||||||
"rotate": [
|
"rotate": [
|
||||||
{ "time": 0.1333, "angle": -42.67 },
|
{ "time": 0.1333, "angle": -42.68 },
|
||||||
{ "time": 0.8, "angle": 88.41 }
|
{ "time": 0.8, "angle": 88.41 }
|
||||||
],
|
],
|
||||||
"translate": [
|
"translate": [
|
||||||
{ "time": 0.1333, "x": -18.32, "y": -18.91 },
|
{ "time": 0.1333, "x": -18.33, "y": -18.92 },
|
||||||
{ "time": 0.8, "x": -57.85, "y": -97.4 }
|
{ "time": 0.8, "x": -57.86, "y": -97.4 }
|
||||||
],
|
],
|
||||||
"scale": [
|
"scale": [
|
||||||
{ "time": 0.1333, "x": 0.211, "y": 0.211 },
|
{ "time": 0.1333, "x": 0.212, "y": 0.212 },
|
||||||
{ "time": 0.8, "x": 0.652, "y": 0.652 }
|
{ "time": 0.8, "x": 0.653, "y": 0.653 }
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"star3": {
|
"star3": {
|
||||||
"rotate": [
|
"rotate": [
|
||||||
{ "time": 0.4333, "angle": 57.71 },
|
{ "time": 0.4333, "angle": 57.72 },
|
||||||
{ "time": 1.1, "angle": -105.15 }
|
{ "time": 1.1, "angle": -105.15 }
|
||||||
],
|
],
|
||||||
"translate": [
|
"translate": [
|
||||||
{ "time": 0.4333, "x": 36.1, "y": -40.52 },
|
{ "time": 0.4333, "x": 36.1, "y": -40.52 },
|
||||||
{ "time": 1.1, "x": 69, "y": -78.3 }
|
{ "time": 1.1, "x": 69.01, "y": -78.31 }
|
||||||
],
|
],
|
||||||
"scale": [
|
"scale": [
|
||||||
{ "time": 0.4333, "x": 0.24, "y": 0.24 },
|
{ "time": 0.4333, "x": 0.241, "y": 0.241 },
|
||||||
{ "time": 1.1, "x": 0.776, "y": 0.776 }
|
{ "time": 1.1, "x": 0.776, "y": 0.776 }
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"star4": {
|
"star4": {
|
||||||
"rotate": [
|
"rotate": [
|
||||||
{ "time": 0.6, "angle": 37.65 },
|
{ "time": 0.6, "angle": 37.66 },
|
||||||
{ "time": 1.2666, "angle": -102.15 }
|
{ "time": 1.2667, "angle": -102.16 }
|
||||||
],
|
],
|
||||||
"translate": [
|
"translate": [
|
||||||
{ "time": 0.6, "x": 8.65, "y": -12.98 },
|
{ "time": 0.6, "x": 8.66, "y": -12.98 },
|
||||||
{ "time": 1.2666, "x": -0.99, "y": 82.82 }
|
{ "time": 1.2667, "x": -0.99, "y": 82.82 }
|
||||||
],
|
],
|
||||||
"scale": [
|
"scale": [
|
||||||
{ "time": 0.6, "x": 0.275, "y": 0.275 },
|
{ "time": 0.6, "x": 0.276, "y": 0.276 },
|
||||||
{ "time": 1.2666, "x": 1.081, "y": 1.081 }
|
{ "time": 1.2667, "x": 1.081, "y": 1.081 }
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"star5": {
|
"star5": {
|
||||||
"rotate": [
|
"rotate": [
|
||||||
{ "time": 0, "angle": 18.27 },
|
{ "time": 0, "angle": 18.28 },
|
||||||
{ "time": 0.3333, "angle": 83.73, "curve": "stepped" },
|
{ "time": 0.3333, "angle": 83.73, "curve": "stepped" },
|
||||||
{ "time": 1, "angle": -47.17 },
|
{ "time": 1, "angle": -47.18 },
|
||||||
{ "time": 1.3333, "angle": 18.27 }
|
{ "time": 1.3333, "angle": 18.28 }
|
||||||
],
|
],
|
||||||
"translate": [
|
"translate": [
|
||||||
{ "time": 0, "x": -67.73, "y": -7.78 },
|
{ "time": 0, "x": -67.74, "y": -7.78 },
|
||||||
{ "time": 0.3333, "x": -102.83, "y": -22.36, "curve": "stepped" },
|
{ "time": 0.3333, "x": -102.84, "y": -22.36, "curve": "stepped" },
|
||||||
{ "time": 1, "x": -32.63, "y": 6.8 },
|
{ "time": 1, "x": -32.64, "y": 6.8 },
|
||||||
{ "time": 1.3333, "x": -67.73, "y": -7.78 }
|
{ "time": 1.3333, "x": -67.74, "y": -7.78 }
|
||||||
],
|
],
|
||||||
"scale": [
|
"scale": [
|
||||||
{ "time": 0, "x": 0.565, "y": 0.565 },
|
{ "time": 0, "x": 0.566, "y": 0.566 },
|
||||||
{ "time": 0.3333, "x": 0.791, "y": 0.791, "curve": "stepped" },
|
{ "time": 0.3333, "x": 0.791, "y": 0.791, "curve": "stepped" },
|
||||||
{ "time": 1, "x": 0.34, "y": 0.34 },
|
{ "time": 1, "x": 0.341, "y": 0.341 },
|
||||||
{ "time": 1.3333, "x": 0.565, "y": 0.565 }
|
{ "time": 1.3333, "x": 0.566, "y": 0.566 }
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"star6": {
|
"star6": {
|
||||||
"rotate": [
|
"rotate": [
|
||||||
{ "time": 0, "angle": 25.23 },
|
{ "time": 0, "angle": 25.24 },
|
||||||
{ "time": 0.5666, "angle": -73.06, "curve": "stepped" },
|
{ "time": 0.5667, "angle": -73.07, "curve": "stepped" },
|
||||||
{ "time": 1.2333, "angle": 42.58 },
|
{ "time": 1.2333, "angle": 42.59 },
|
||||||
{ "time": 1.3333, "angle": 25.23 }
|
{ "time": 1.3333, "angle": 25.24 }
|
||||||
],
|
],
|
||||||
"translate": [
|
"translate": [
|
||||||
{ "time": 0, "x": 4.55, "y": -14.21 },
|
{ "time": 0, "x": 4.55, "y": -14.21 },
|
||||||
{ "time": 0.5666, "x": 30.36, "y": -94.75, "curve": "stepped" },
|
{ "time": 0.5667, "x": 30.36, "y": -94.76, "curve": "stepped" },
|
||||||
{ "time": 1.2333, "x": 0, "y": 0 },
|
{ "time": 1.2333, "x": 0, "y": 0 },
|
||||||
{ "time": 1.3333, "x": 4.55, "y": -14.21 }
|
{ "time": 1.3333, "x": 4.55, "y": -14.21 }
|
||||||
],
|
],
|
||||||
"scale": [
|
"scale": [
|
||||||
{ "time": 0, "x": 0.337, "y": 0.337 },
|
{ "time": 0, "x": 0.337, "y": 0.337 },
|
||||||
{ "time": 0.5666, "x": 0.955, "y": 0.955, "curve": "stepped" },
|
{ "time": 0.5667, "x": 0.956, "y": 0.956, "curve": "stepped" },
|
||||||
{ "time": 1.2333, "x": 0.227, "y": 0.227 },
|
{ "time": 1.2333, "x": 0.228, "y": 0.228 },
|
||||||
{ "time": 1.3333, "x": 0.337, "y": 0.337 }
|
{ "time": 1.3333, "x": 0.337, "y": 0.337 }
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"star7": {
|
"star7": {
|
||||||
"rotate": [
|
"rotate": [
|
||||||
{ "time": 0.6333, "angle": 41.11 },
|
{ "time": 0.6333, "angle": 41.12 },
|
||||||
{ "time": 1.2999, "angle": -89.84 }
|
{ "time": 1.3, "angle": -89.85 }
|
||||||
],
|
],
|
||||||
"translate": [
|
"translate": [
|
||||||
{ "time": 0.6333, "x": 20.27, "y": 32.75 },
|
{ "time": 0.6333, "x": 20.28, "y": 32.76 },
|
||||||
{ "time": 1.2999, "x": -67.79, "y": -68.56 }
|
{ "time": 1.3, "x": -67.8, "y": -68.56 }
|
||||||
],
|
],
|
||||||
"scale": [
|
"scale": [
|
||||||
{ "time": 0.6333, "x": 0.258, "y": 0.258 },
|
{ "time": 0.6333, "x": 0.259, "y": 0.259 },
|
||||||
{ "time": 1.2999, "x": 0.999, "y": 0.999 }
|
{ "time": 1.3, "x": 0.999, "y": 0.999 }
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"star9": {
|
"star9": {
|
||||||
@ -458,33 +451,33 @@
|
|||||||
],
|
],
|
||||||
"translate": [
|
"translate": [
|
||||||
{ "time": 0, "x": -78.75, "y": 77.18 },
|
{ "time": 0, "x": -78.75, "y": 77.18 },
|
||||||
{ "time": 0.1333, "x": -98.44, "y": 96.47, "curve": "stepped" },
|
{ "time": 0.1333, "x": -98.44, "y": 96.48, "curve": "stepped" },
|
||||||
{ "time": 0.8, "x": 0, "y": 0 },
|
{ "time": 0.8, "x": 0, "y": 0 },
|
||||||
{ "time": 1.3333, "x": -78.75, "y": 77.18 }
|
{ "time": 1.3333, "x": -78.75, "y": 77.18 }
|
||||||
],
|
],
|
||||||
"scale": [
|
"scale": [
|
||||||
{ "time": 0, "x": 0.772, "y": 0.772 },
|
{ "time": 0, "x": 0.773, "y": 0.773 },
|
||||||
{ "time": 0.1333, "x": 0.91, "y": 0.91, "curve": "stepped" },
|
{ "time": 0.1333, "x": 0.91, "y": 0.91, "curve": "stepped" },
|
||||||
{ "time": 0.8, "x": 0.221, "y": 0.221 },
|
{ "time": 0.8, "x": 0.222, "y": 0.222 },
|
||||||
{ "time": 1.3333, "x": 0.772, "y": 0.772 }
|
{ "time": 1.3333, "x": 0.773, "y": 0.773 }
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"star8": {
|
"star8": {
|
||||||
"rotate": [
|
"rotate": [
|
||||||
{ "time": 0, "angle": -60.17 },
|
{ "time": 0, "angle": -60.18 },
|
||||||
{ "time": 0.2666, "angle": -109.83, "curve": "stepped" },
|
{ "time": 0.2667, "angle": -109.84, "curve": "stepped" },
|
||||||
{ "time": 0.9333, "angle": 14.31 },
|
{ "time": 0.9333, "angle": 14.31 },
|
||||||
{ "time": 1.3333, "angle": -60.17 }
|
{ "time": 1.3333, "angle": -60.18 }
|
||||||
],
|
],
|
||||||
"translate": [
|
"translate": [
|
||||||
{ "time": 0, "x": 44.63, "y": -41.66 },
|
{ "time": 0, "x": 44.64, "y": -41.66 },
|
||||||
{ "time": 0.2666, "x": 74.39, "y": -69.43, "curve": "stepped" },
|
{ "time": 0.2667, "x": 74.4, "y": -69.44, "curve": "stepped" },
|
||||||
{ "time": 0.9333, "x": 0, "y": 0 },
|
{ "time": 0.9333, "x": 0, "y": 0 },
|
||||||
{ "time": 1.3333, "x": 44.63, "y": -41.66 }
|
{ "time": 1.3333, "x": 44.64, "y": -41.66 }
|
||||||
],
|
],
|
||||||
"scale": [
|
"scale": [
|
||||||
{ "time": 0, "x": 0.452, "y": 0.452 },
|
{ "time": 0, "x": 0.452, "y": 0.452 },
|
||||||
{ "time": 0.2666, "x": 0.672, "y": 0.672, "curve": "stepped" },
|
{ "time": 0.2667, "x": 0.672, "y": 0.672, "curve": "stepped" },
|
||||||
{ "time": 0.9333, "x": 0.123, "y": 0.123 },
|
{ "time": 0.9333, "x": 0.123, "y": 0.123 },
|
||||||
{ "time": 1.3333, "x": 0.452, "y": 0.452 }
|
{ "time": 1.3333, "x": 0.452, "y": 0.452 }
|
||||||
]
|
]
|
||||||
|
|||||||
Binary file not shown.
File diff suppressed because one or more lines are too long
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
@ -1,62 +1,55 @@
|
|||||||
{
|
{
|
||||||
"skeleton": {
|
"skeleton": { "hash": "jwwArXQBSgnDp4JM5vgHQsr+jXc", "spine": "3.6.05-beta", "width": 511.48, "height": 739.87, "images": "./images/" },
|
||||||
"hash": "Vw3hWCw+PV8Q6kMU7bcyWS2a+uw",
|
|
||||||
"spine": "3.5.03-beta",
|
|
||||||
"width": 511.47,
|
|
||||||
"height": 739.87,
|
|
||||||
"fps": 30,
|
|
||||||
"images": "./images/"
|
|
||||||
},
|
|
||||||
"bones": [
|
"bones": [
|
||||||
{ "name": "root" },
|
{ "name": "root" },
|
||||||
{ "name": "hip", "parent": "root", "x": -49.89, "y": 290.95 },
|
{ "name": "hip", "parent": "root", "x": -49.9, "y": 290.96 },
|
||||||
{ "name": "hoverboard", "parent": "root", "length": 72.32, "x": 9.9, "y": 57.05 },
|
{ "name": "hoverboard", "parent": "root", "length": 72.32, "x": 9.91, "y": 57.06 },
|
||||||
{ "name": "rear_foot_ik", "parent": "hoverboard", "rotation": -0.97, "x": 83.75, "y": 21.7, "color": "ff3f00ff" },
|
{ "name": "rear_foot_ik", "parent": "hoverboard", "rotation": -0.97, "x": 83.75, "y": 21.71, "color": "ff3f00ff" },
|
||||||
{ "name": "rear_ankle_ik", "parent": "rear_foot_ik", "x": -33.9, "y": 37.33, "color": "ff3f00ff" },
|
{ "name": "rear_ankle_ik", "parent": "rear_foot_ik", "x": -33.9, "y": 37.33, "color": "ff3f00ff" },
|
||||||
{ "name": "rear_thigh", "parent": "hip", "length": 85.7, "rotation": -72.54, "x": 8.9, "y": -5.61, "color": "ff000dff" },
|
{ "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.82, "x": 86.09, "y": -1.32, "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": 51.58, "rotation": 45.77, "x": 121.44, "y": -0.75, "color": "ff000dff" },
|
{ "name": "rear_foot", "parent": "rear_shin", "length": 51.58, "rotation": 45.77, "x": 121.45, "y": -0.75, "color": "ff000dff" },
|
||||||
{ "name": "rear_toe_ik", "parent": "hoverboard", "rotation": -0.97, "x": 135.05, "y": 20.47, "color": "ff3f00ff" },
|
{ "name": "rear_toe_ik", "parent": "hoverboard", "rotation": -0.97, "x": 135.05, "y": 20.47, "color": "ff3f00ff" },
|
||||||
{ "name": "back_foot_tip", "parent": "rear_foot", "length": 50.29, "rotation": 46.61, "x": 51.15, "y": 0.23, "color": "ff000dff" },
|
{ "name": "back_foot_tip", "parent": "rear_foot", "length": 50.3, "rotation": 46.62, "x": 51.16, "y": 0.23, "color": "ff000dff" },
|
||||||
{ "name": "exhaust1", "parent": "hoverboard", "rotation": 3.19, "x": -249.74, "y": 52.63 },
|
{ "name": "exhaust1", "parent": "hoverboard", "rotation": 3.19, "x": -249.74, "y": 52.63 },
|
||||||
{ "name": "exhaust2", "parent": "hoverboard", "rotation": 26.5, "x": -191.57, "y": -23.5 },
|
{ "name": "exhaust2", "parent": "hoverboard", "rotation": 26.51, "x": -191.58, "y": -23.5 },
|
||||||
{ "name": "front_foot_ik", "parent": "hoverboard", "rotation": -16.95, "x": -100.29, "y": 23.95, "color": "ff3f00ff" },
|
{ "name": "front_foot_ik", "parent": "hoverboard", "rotation": -16.95, "x": -100.3, "y": 23.96, "color": "ff3f00ff" },
|
||||||
{ "name": "front_ankle_ik", "parent": "front_foot_ik", "x": -28.38, "y": 29.05, "color": "ff3f00ff" },
|
{ "name": "front_ankle_ik", "parent": "front_foot_ik", "x": -28.39, "y": 29.06, "color": "ff3f00ff" },
|
||||||
{ "name": "torso", "parent": "hip", "length": 127.55, "rotation": 64.59, "x": -1.61, "y": 4.9, "color": "e0da19ff" },
|
{ "name": "torso", "parent": "hip", "length": 127.55, "rotation": 64.6, "x": -1.61, "y": 4.9, "color": "e0da19ff" },
|
||||||
{ "name": "front_upper_arm", "parent": "torso", "length": 69.44, "rotation": 125.79, "x": 103.75, "y": 19.31, "color": "00ff04ff" },
|
{ "name": "front_upper_arm", "parent": "torso", "length": 69.45, "rotation": 125.79, "x": 103.75, "y": 19.32, "color": "00ff04ff" },
|
||||||
{
|
{
|
||||||
"name": "front_bracer",
|
"name": "front_bracer",
|
||||||
"parent": "front_upper_arm",
|
"parent": "front_upper_arm",
|
||||||
"length": 40.56,
|
"length": 40.57,
|
||||||
"rotation": 18.29,
|
"rotation": 18.29,
|
||||||
"x": 68.8,
|
"x": 68.8,
|
||||||
"y": -0.68,
|
"y": -0.68,
|
||||||
"color": "00ff04ff"
|
"color": "00ff04ff"
|
||||||
},
|
},
|
||||||
{ "name": "front_fist", "parent": "front_bracer", "length": 65.37, "rotation": 12.43, "x": 40.56, "y": 0.18, "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_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.75, "rotation": -2.21, "x": 78.69, "y": 1.6, "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": 41, "rotation": 51.25, "x": 128.75, "y": -0.33, "color": "00ff04ff" },
|
{ "name": "front_foot", "parent": "front_shin", "length": 41, "rotation": 51.26, "x": 128.75, "y": -0.33, "color": "00ff04ff" },
|
||||||
{ "name": "front_toe_ik", "parent": "hoverboard", "rotation": -0.97, "x": -44.59, "y": 21.98, "color": "ff3f00ff" },
|
{ "name": "front_toe_ik", "parent": "hoverboard", "rotation": -0.97, "x": -44.6, "y": 21.99, "color": "ff3f00ff" },
|
||||||
{
|
{
|
||||||
"name": "front_foot_tip",
|
"name": "front_foot_tip",
|
||||||
"parent": "front_foot",
|
"parent": "front_foot",
|
||||||
"length": 56.02,
|
"length": 56.02,
|
||||||
"rotation": 44.29,
|
"rotation": 44.3,
|
||||||
"x": 41.41,
|
"x": 41.42,
|
||||||
"y": -0.07,
|
"y": -0.08,
|
||||||
"color": "00ff04ff"
|
"color": "00ff04ff"
|
||||||
},
|
},
|
||||||
{ "name": "rear_upper_arm", "parent": "torso", "length": 51.93, "rotation": -153.6, "x": 92.34, "y": -19.21, "color": "ff000dff" },
|
{ "name": "rear_upper_arm", "parent": "torso", "length": 51.93, "rotation": -153.6, "x": 92.35, "y": -19.22, "color": "ff000dff" },
|
||||||
{ "name": "rear_bracer", "parent": "rear_upper_arm", "length": 34.54, "rotation": 43.56, "x": 51.34, "color": "ff000dff" },
|
{ "name": "rear_bracer", "parent": "rear_upper_arm", "length": 34.55, "rotation": 43.56, "x": 51.35, "color": "ff000dff" },
|
||||||
{ "name": "gun", "parent": "rear_bracer", "length": 43.09, "rotation": 17.61, "x": 34.41, "y": -0.44, "color": "ff000dff" },
|
{ "name": "gun", "parent": "rear_bracer", "length": 43.1, "rotation": 17.61, "x": 34.42, "y": -0.45, "color": "ff000dff" },
|
||||||
{ "name": "gunTip", "parent": "gun", "rotation": 6.82, "x": 201.03, "y": 52.13, "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.48, "y": -0.3, "color": "e0da19ff" },
|
{ "name": "neck", "parent": "torso", "length": 25.45, "rotation": -31.53, "x": 127.49, "y": -0.3, "color": "e0da19ff" },
|
||||||
{ "name": "head", "parent": "neck", "length": 131.78, "rotation": 51.9, "x": 27.65, "y": -0.25, "color": "e0da19ff" },
|
{ "name": "head", "parent": "neck", "length": 131.79, "rotation": 51.91, "x": 27.66, "y": -0.25, "color": "e0da19ff" },
|
||||||
{ "name": "hair1", "parent": "head", "length": 47.22, "rotation": -49.09, "x": 149.82, "y": -59.77, "color": "e0da19ff" },
|
{ "name": "hair1", "parent": "head", "length": 47.22, "rotation": -49.1, "x": 149.82, "y": -59.77, "color": "e0da19ff" },
|
||||||
{ "name": "hair2", "parent": "hair1", "length": 55.56, "rotation": 50.4, "x": 47.22, "y": 0.18, "color": "e0da19ff" },
|
{ "name": "hair2", "parent": "hair1", "length": 55.56, "rotation": 50.41, "x": 47.22, "y": 0.18, "color": "e0da19ff" },
|
||||||
{ "name": "hair3", "parent": "head", "length": 62.22, "rotation": -32.15, "x": 164.13, "y": 3.68, "color": "e0da19ff" },
|
{ "name": "hair3", "parent": "head", "length": 62.22, "rotation": -32.16, "x": 164.13, "y": 3.68, "color": "e0da19ff" },
|
||||||
{ "name": "hair4", "parent": "hair3", "length": 80.27, "rotation": 83.69, "x": 62.22, "y": -0.02, "color": "e0da19ff" },
|
{ "name": "hair4", "parent": "hair3", "length": 80.28, "rotation": 83.7, "x": 62.22, "y": -0.03, "color": "e0da19ff" },
|
||||||
{
|
{
|
||||||
"name": "hoverboard_thruster_front",
|
"name": "hoverboard_thruster_front",
|
||||||
"parent": "hoverboard",
|
"parent": "hoverboard",
|
||||||
@ -69,12 +62,12 @@
|
|||||||
"name": "hoverboard_thruster_rear",
|
"name": "hoverboard_thruster_rear",
|
||||||
"parent": "hoverboard",
|
"parent": "hoverboard",
|
||||||
"rotation": -29.03,
|
"rotation": -29.03,
|
||||||
"x": -76.46,
|
"x": -76.47,
|
||||||
"y": -5.11,
|
"y": -5.11,
|
||||||
"transform": "noRotationOrReflection"
|
"transform": "noRotationOrReflection"
|
||||||
},
|
},
|
||||||
{ "name": "hoverglow_front", "parent": "hoverboard_thruster_front", "x": -1.88, "y": -37.77 },
|
{ "name": "hoverglow_front", "parent": "hoverboard_thruster_front", "x": -1.89, "y": -37.78 },
|
||||||
{ "name": "hoverglow_rear", "parent": "hoverboard_thruster_rear", "x": 0.94, "y": -35.65 }
|
{ "name": "hoverglow_rear", "parent": "hoverboard_thruster_rear", "x": 0.95, "y": -35.66 }
|
||||||
],
|
],
|
||||||
"slots": [
|
"slots": [
|
||||||
{ "name": "hoverboard_thruster_rear", "bone": "hoverboard_thruster_rear", "attachment": "hoverboard_thruster" },
|
{ "name": "hoverboard_thruster_rear", "bone": "hoverboard_thruster_rear", "attachment": "hoverboard_thruster" },
|
||||||
@ -148,26 +141,26 @@
|
|||||||
"skins": {
|
"skins": {
|
||||||
"default": {
|
"default": {
|
||||||
"exhaust1": {
|
"exhaust1": {
|
||||||
"hoverglow_small": { "scaleX": 0.462, "scaleY": 0.812, "rotation": -83.09, "width": 274, "height": 75 }
|
"hoverglow_small": { "scaleX": 0.463, "scaleY": 0.813, "rotation": -83.09, "width": 274, "height": 75 }
|
||||||
},
|
},
|
||||||
"exhaust2": {
|
"exhaust2": {
|
||||||
"hoverglow_small": { "y": -0.76, "scaleX": 0.413, "scaleY": 0.487, "rotation": -89.24, "width": 274, "height": 75 }
|
"hoverglow_small": { "x": 0.01, "y": -0.76, "scaleX": 0.414, "scaleY": 0.488, "rotation": -89.25, "width": 274, "height": 75 }
|
||||||
},
|
},
|
||||||
"eye": {
|
"eye": {
|
||||||
"eye_indifferent": {
|
"eye_indifferent": {
|
||||||
"type": "mesh",
|
"type": "mesh",
|
||||||
"uvs": [ 1, 1, 0, 1, 0, 0, 1, 0 ],
|
"uvs": [ 1, 1, 0, 1, 0, 0, 1, 0 ],
|
||||||
"triangles": [ 1, 3, 0, 1, 2, 3 ],
|
"triangles": [ 1, 3, 0, 1, 2, 3 ],
|
||||||
"vertices": [ 59.15, -86.8, 28.30999, 0.92, 112.26, 30.44, 143.11, -57.27 ],
|
"vertices": [ 59.16, -86.8, 28.32, 0.92, 112.27, 30.44, 143.11, -57.28 ],
|
||||||
"hull": 4,
|
"hull": 4,
|
||||||
"edges": [ 0, 2, 2, 4, 4, 6, 0, 6 ],
|
"edges": [ 0, 2, 2, 4, 4, 6, 0, 6 ],
|
||||||
"width": 93,
|
"width": 93,
|
||||||
"height": 89
|
"height": 89
|
||||||
},
|
},
|
||||||
"eye_surprised": { "x": 85.72, "y": -28.18, "rotation": -70.62, "width": 93, "height": 89 }
|
"eye_surprised": { "x": 85.72, "y": -28.18, "rotation": -70.63, "width": 93, "height": 89 }
|
||||||
},
|
},
|
||||||
"front_bracer": {
|
"front_bracer": {
|
||||||
"front_bracer": { "x": 12.02, "y": -1.66, "rotation": 79.58, "width": 58, "height": 80 }
|
"front_bracer": { "x": 12.03, "y": -1.67, "rotation": 79.59, "width": 58, "height": 80 }
|
||||||
},
|
},
|
||||||
"front_fist": {
|
"front_fist": {
|
||||||
"front_fist_closed": { "x": 35.49, "y": 6, "rotation": 67.16, "width": 75, "height": 82 },
|
"front_fist_closed": { "x": 35.49, "y": 6, "rotation": 67.16, "width": 75, "height": 82 },
|
||||||
@ -176,32 +169,32 @@
|
|||||||
"front_foot": {
|
"front_foot": {
|
||||||
"front_foot": {
|
"front_foot": {
|
||||||
"type": "mesh",
|
"type": "mesh",
|
||||||
"uvs": [ 0.59416, 0.2342, 0.62256, 0.30335, 0.65008, 0.37035, 0.67637, 0.38403, 0.72067, 0.40709, 0.76263, 0.42893, 1, 0.70375, 1, 1, 0.65517, 1, 0.36439, 1, 0, 1, 0, 0.39195, 0, 0, 0.17845, 0, 0.49794, 0 ],
|
"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 ],
|
"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, 20, 18.17, 41.56, 0.72254, 22, 12.46, 46.04, 0.27744, 2, 20, 24.06999, 40.75, 0.57406, 22, 16.12, 41.34, 0.42592, 2, 20, 29.79, 39.97, 0.47663, 22, 19.67, 36.77, 0.52336, 2, 20, 32.79, 41.65, 0.37452, 22, 22.97999, 35.88, 0.62546, 2, 20, 37.86, 44.5, 0.24772, 22, 28.6, 34.4, 0.75226, 2, 20, 42.65, 47.2, 0.17781, 22, 33.9, 32.97, 0.82216, 1, 22, 64.15, 14.56, 1, 1, 22, 64.51, -5.86, 1, 1, 22, 21.05999, -6.63, 1, 2, 20, 35.38, -16.14999, 0.99997, 22, -15.52999, -7.28, 0, 1, 20, 3.08999, -48.81, 1, 1, 20, -26.70999, -19.29999, 1, 1, 20, -45.95, -0.28, 1, 1, 20, -30.12999, 15.68, 1, 2, 20, -1.84, 44.31, 0.91509, 22, 0.05, 61.97, 0.08488 ],
|
"vertices": [ 2, 20, 18.17, 41.57, 0.72255, 22, 12.46, 46.04, 0.27744, 2, 20, 24.08, 40.76, 0.57407, 22, 16.12, 41.34, 0.42592, 2, 20, 29.8, 39.97, 0.47663, 22, 19.67, 36.77, 0.52336, 2, 20, 32.8, 41.66, 0.37452, 22, 22.99, 35.89, 0.62547, 2, 20, 37.86, 44.51, 0.24772, 22, 28.6, 34.4, 0.75227, 2, 20, 42.65, 47.21, 0.17783, 22, 33.91, 32.98, 0.82216, 1, 22, 64.15, 14.56, 1, 1, 22, 64.51, -5.87, 1, 1, 22, 21.07, -6.63, 1, 2, 20, 35.38, -16.16, 0.99998, 22, -15.54, -7.28, 1.0E-5, 1, 20, 3.1, -48.81, 1, 1, 20, -26.72, -19.31, 1, 1, 20, -45.95, -0.29, 1, 1, 20, -30.14, 15.69, 1, 2, 20, -1.84, 44.31, 0.91511, 22, 0.05, 61.98, 0.08488 ],
|
||||||
"hull": 15,
|
"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 ],
|
"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,
|
"width": 126,
|
||||||
"height": 69
|
"height": 69
|
||||||
},
|
},
|
||||||
"front_foot_bend1": { "x": 22.86, "y": 20.23, "rotation": 45.31, "width": 128, "height": 70 },
|
"front_foot_bend1": { "x": 22.86, "y": 20.24, "rotation": 45.32, "width": 128, "height": 70 },
|
||||||
"front_foot_bend2": { "x": 8.15, "y": 19.56, "rotation": 45.31, "width": 108, "height": 93 }
|
"front_foot_bend2": { "x": 8.16, "y": 19.57, "rotation": 45.32, "width": 108, "height": 93 }
|
||||||
},
|
},
|
||||||
"front_shin": {
|
"front_shin": {
|
||||||
"front_shin": { "x": 60.91, "y": -3.9, "rotation": 96.58, "width": 82, "height": 184 }
|
"front_shin": { "x": 60.92, "y": -3.9, "rotation": 96.59, "width": 82, "height": 184 }
|
||||||
},
|
},
|
||||||
"front_thigh": {
|
"front_thigh": {
|
||||||
"front_thigh": { "x": 42.47, "y": 4.44, "rotation": 84.86, "width": 48, "height": 112 }
|
"front_thigh": { "x": 42.47, "y": 4.44, "rotation": 84.86, "width": 48, "height": 112 }
|
||||||
},
|
},
|
||||||
"front_upper_arm": {
|
"front_upper_arm": {
|
||||||
"front_upper_arm": { "x": 28.29, "y": 7.36, "rotation": 97.88, "width": 54, "height": 97 }
|
"front_upper_arm": { "x": 28.3, "y": 7.37, "rotation": 97.89, "width": 54, "height": 97 }
|
||||||
},
|
},
|
||||||
"goggles": {
|
"goggles": {
|
||||||
"goggles": {
|
"goggles": {
|
||||||
"type": "mesh",
|
"type": "mesh",
|
||||||
"uvs": [ 0.53653, 0.04112, 0.72921, 0.16034, 0.91666, 0.33221, 0.97045, 0.31328, 1, 0.48052, 0.95754, 0.57328, 0.88824, 0.63279, 0.86877, 0.78961, 0.77403, 0.86748, 0.72627, 1, 0.60712, 0.93861, 0.49599, 0.88138, 0.41556, 0.75025, 0.32547, 0.70083, 0.2782, 0.58256, 0.17208, 0.6328, 0.17227, 0.75071, 0.10779, 0.79896, 0, 0.32304, 0, 0.12475, 0.07372, 0.07343, 0.15422, 0.10733, 0.23164, 0.13993, 0.30313, 0.02256, 0.34801, 0, 0.42978, 0.69182, 0.39474, 0.51041, 0.39487, 0.3151, 0.45877, 0.23196, 0.56501, 0.28108, 0.69959, 0.39215, 0.82038, 0.54202, 0.85737, 0.62342, 0.91106, 0.51406, 0.72637, 0.32146, 0.58762, 0.19608, 0.48074, 0.11268, 0.37821, 0.055, 0.32868, 0.17866, 0.31898, 0.30498, 0.36035, 0.53798, 0.40327, 0.70072, 0.30057, 0.55836, 0.21955, 0.2815, 0.09962, 0.28942, 0.56862, 0.4368, 0.4911, 0.37156, 0.51183, 0.52091, 0.67018, 0.59302, 0.7619, 0.68573, 0.73295, 0.43353 ],
|
"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 ],
|
"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.79999, 170.08, -31.19, 159.41, -86.8, 167.02, -99, 143.38998, -115.48, 125.19, -110.12999, 109.87, -96.33999, 83.62999, -100.19, 63.25, -81.15, 38.36, -76.69, 37.65, -43.97, 37, -13.47, 50.56, 13.52999, 50.5, 38.45, 64.94, 56.59, 47.88, 79.94, 29.45, 73.41, 16.29999, 86.62, 81.5, 139.38, 112.55, 150.27998, 126.97, 134.97, 128.63, 113.26999, 130.22, 92.43, 154.77998, 81.29, 162.21, 71.48, 60.95, 13.26, 86.33, 31.87, 116.91, 42.59, 135.47, 31.44, 136.97, 2.56999, 131.22, -36.65, 118.22, -74.65, 108.68, -88.23, 130.44, -95.43, 144.61, -39.36, 152.24, 1.69, 156.05, 32.59, 156.21, 61, 132.55, 66.4, 111.94, 61.83, 79.01999, 38.83, 57.27, 19.29, 70.66, 52.40999, 107.01, 87.61, 95.37999, 116.69, 112.91, -6.86, 116.41, 15.8, 94.80999, 2.47, 97.23, -40.47, 90.66, -68.16, 127.62999, -47.15 ],
|
"vertices": [ 172.08, 22.81, 170.09, -31.19, 159.41, -86.8, 167.03, -99, 143.4, -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.01, -13.47, 50.57, 13.54, 50.51, 38.45, 64.94, 56.6, 47.89, 79.95, 29.45, 73.42, 16.31, 86.63, 81.5, 139.38, 112.55, 150.29, 126.97, 134.97, 128.63, 113.28, 130.22, 92.43, 154.79, 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.6, 156.21, 61.01, 132.56, 66.4, 111.94, 61.83, 79.03, 38.83, 57.27, 19.3, 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,
|
"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 ],
|
"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,
|
"width": 261,
|
||||||
@ -209,14 +202,14 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"gun": {
|
"gun": {
|
||||||
"gun": { "x": 77.3, "y": 16.39, "rotation": 60.81, "width": 210, "height": 203 }
|
"gun": { "x": 77.3, "y": 16.4, "rotation": 60.82, "width": 210, "height": 203 }
|
||||||
},
|
},
|
||||||
"head": {
|
"head": {
|
||||||
"head": {
|
"head": {
|
||||||
"type": "mesh",
|
"type": "mesh",
|
||||||
"uvs": [ 0.75918, 0.06106, 0.88392, 0.17892, 0.90174, 0.30856, 0.94222, 0.1966, 1, 0.26583, 1, 0.42199, 0.95863, 0.46992, 0.92118, 0.51332, 0.85957, 0.53469, 0.78387, 0.65605, 0.74383, 0.74838, 0.85114, 0.75151, 0.84828, 0.82563, 0.81779, 0.85367, 0.75598, 0.85905, 0.76235, 0.90467, 0.65874, 1, 0.38335, 1, 0.18579, 0.85403, 0.1274, 0.81089, 0.06024, 0.69208, 0, 0.58551, 0, 0.41021, 0.08528, 0.2069, 0.24243, 0.14504, 0.49998, 0.14208, 0.50322, 0.07433, 0.41738, 0, 0.57612, 0, 0.85058, 0.36085, 0.7343, 0.43206, 0.6848, 0.3127, 0.72163, 0.16717, 0.55931, 0.04152, 0.44762, 0.22893, 0.23925, 0.26559, 0.71271, 0.44034, 0.56992, 0.38299, 0.41677, 0.33509, 0.29298, 0.31496, 0.70801, 0.44501, 0.56676, 0.38975, 0.41519, 0.34415, 0.28753, 0.33017, 0.88988, 0.50176, 0.30388, 0.73461, 0.2646, 0.65674, 0.21413, 0.61583, 0.14611, 0.62193, 0.10315, 0.66636, 0.10356, 0.72556, 0.14505, 0.79163, 0.20262, 0.81354, 0.27871, 0.80158, 0.34946, 0.7376, 0.23072, 0.57072, 0.08878, 0.60706, 0.2946, 0.8129, 0.73005, 0.87883, 0.69804, 0.87348, 0.66165, 0.7968 ],
|
"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": [ 16, 58, 15, 16, 59, 58, 59, 16, 60, 18, 57, 17, 57, 54, 17, 16, 17, 60, 17, 54, 60, 58, 14, 15, 58, 59, 14, 59, 60, 14, 60, 10, 14, 14, 10, 13, 18, 53, 57, 18, 52, 53, 19, 51, 18, 18, 51, 52, 13, 10, 12, 12, 10, 11, 53, 52, 45, 57, 45, 54, 57, 53, 45, 20, 50, 19, 46, 45, 52, 47, 46, 50, 50, 48, 47, 19, 50, 51, 46, 52, 51, 54, 41, 60, 10, 60, 9, 60, 41, 40, 46, 51, 50, 9, 60, 40, 55, 42, 41, 54, 55, 41, 46, 54, 45, 20, 49, 50, 50, 49, 48, 20, 56, 49, 20, 21, 56, 49, 56, 48, 47, 55, 46, 42, 55, 43, 55, 54, 46, 9, 40, 8, 47, 48, 55, 55, 48, 56, 55, 56, 22, 56, 21, 22, 55, 22, 43, 8, 44, 7, 40, 36, 8, 8, 36, 44, 7, 44, 6, 41, 37, 40, 40, 37, 36, 43, 22, 39, 22, 23, 35, 41, 42, 38, 43, 39, 42, 42, 39, 38, 38, 39, 34, 39, 22, 35, 39, 35, 34, 35, 24, 34, 35, 23, 24, 34, 24, 25, 36, 30, 44, 44, 30, 6, 30, 29, 6, 30, 36, 31, 36, 37, 31, 30, 31, 29, 37, 41, 38, 31, 37, 34, 31, 32, 29, 37, 38, 34, 34, 25, 31, 2, 32, 1, 31, 25, 32, 33, 32, 25, 33, 25, 26, 32, 0, 1, 32, 33, 0, 0, 33, 28, 26, 27, 33, 33, 27, 28, 6, 29, 5, 29, 2, 5, 2, 4, 5, 2, 29, 32, 2, 3, 4 ],
|
"triangles": [ 16, 58, 15, 16, 59, 58, 59, 16, 60, 18, 57, 17, 57, 54, 17, 16, 17, 60, 17, 54, 60, 58, 14, 15, 58, 59, 14, 59, 60, 14, 60, 10, 14, 14, 10, 13, 18, 53, 57, 18, 52, 53, 19, 51, 18, 18, 51, 52, 13, 10, 12, 12, 10, 11, 53, 52, 45, 57, 45, 54, 57, 53, 45, 20, 50, 19, 46, 45, 52, 47, 46, 50, 50, 48, 47, 19, 50, 51, 46, 52, 51, 54, 41, 60, 10, 60, 9, 60, 41, 40, 46, 51, 50, 9, 60, 40, 55, 42, 41, 54, 55, 41, 46, 54, 45, 20, 49, 50, 50, 49, 48, 20, 56, 49, 20, 21, 56, 49, 56, 48, 47, 55, 46, 42, 55, 43, 55, 54, 46, 9, 40, 8, 47, 48, 55, 55, 48, 56, 55, 56, 22, 56, 21, 22, 55, 22, 43, 8, 44, 7, 40, 36, 8, 8, 36, 44, 7, 44, 6, 41, 37, 40, 40, 37, 36, 43, 22, 39, 22, 23, 35, 41, 42, 38, 43, 39, 42, 42, 39, 38, 38, 39, 34, 39, 22, 35, 39, 35, 34, 35, 24, 34, 35, 23, 24, 34, 24, 25, 36, 30, 44, 44, 30, 6, 30, 29, 6, 30, 36, 31, 36, 37, 31, 30, 31, 29, 37, 41, 38, 31, 37, 34, 31, 32, 29, 37, 38, 34, 34, 25, 31, 2, 32, 1, 31, 25, 32, 33, 32, 25, 33, 25, 26, 32, 0, 1, 32, 33, 0, 0, 33, 28, 26, 27, 33, 33, 27, 28, 6, 29, 5, 29, 2, 5, 2, 4, 5, 2, 29, 32, 2, 3, 4 ],
|
||||||
"vertices": [ 1, 32, 41.97, -41.79, 1, 3, 30, 73.44999, 27.54, 0.18925, 32, -5.75, -51.7, 0.72417, 31, 112.98, -11.43, 0.08656, 3, 30, 38.22, 10.97, 0.84284, 32, -41, -35.22, 0.09705, 31, 92.72, -44.65999, 0.0601, 1, 30, 73.33999, 10.89, 1, 1, 30, 58.59, -10.38, 1, 2, 30, 14.35, -24.79, 0.89741, 29, 75.48, -4.55, 0.10256, 2, 30, -2.69, -18.55999, 0.58265, 29, 59.81, -13.72, 0.41734, 1, 28, 163.05, -108.68, 1, 1, 28, 151.52, -95.04, 1, 1, 28, 110.58999, -87.69, 1, 1, 28, 81.05, -86.58, 1, 1, 28, 89.8, -114.30999, 1, 1, 28, 68.72, -120.91, 1, 1, 28, 58.09, -115.87999, 1, 1, 28, 51.02, -100.62, 1, 1, 28, 38.77, -106.76, 1, 1, 28, 2.67, -89.69, 1, 1, 28, -22.05999, -19.29, 1, 1, 28, 1.19, 45.61, 1, 1, 28, 8.06, 64.8, 1, 1, 28, 35.43, 93.72, 1, 1, 28, 59.97, 119.66, 1, 1, 28, 109.25, 136.97, 1, 1, 28, 174.07, 135.27, 1, 2, 31, -16.79, 104.62, 0.16235, 28, 205.58, 101.22, 0.83762, 2, 32, 58.93, 30.5, 0.60734, 31, 38.36, 61.88, 0.39263, 2, 32, 75.55, 19, 0.94502, 31, 51.61, 77.15, 0.05496, 1, 32, 106.69, 26.88999, 1, 1, 32, 83.76999, -9.5, 1, 4, 30, 19.12, 19.31999, 0.58066, 32, -46.81, -15.18, 0.07453, 31, 72.16, -48.24, 0.14877, 29, 44.52, 27.22999, 0.196, 2, 31, 34.31, -45.24, 0.20795, 29, 7.42, 19.06999, 0.79202, 1, 31, 45.93, -9.06, 1, 1, 32, 20.62, -16.35, 1, 1, 32, 75.73, 0.93, 1, 3, 32, 44.58, 56.29, 0.14948, 31, 11.14999, 50.45, 0.36829, 28, 200.44, 40.47, 0.48219, 1, 28, 171.41, 90.11, 1, 2, 31, 28.19, -43.54, 0.20795, 29, 1.07, 18.93, 0.79202, 3, 31, 8.52999, -6.07, 0.75382, 29, -28.62, 49.02, 0.13132, 28, 168.13, -6.01, 0.11484, 2, 31, -15.06, 30.88999, 0.72898, 28, 167.82, 37.86, 0.27101, 1, 28, 162.36, 71.5, 1, 1, 28, 163.1, -47.43, 1, 1, 28, 165.94, -5.86, 1, 1, 28, 165.13, 37.36, 1, 1, 28, 157.6, 71.37999, 1, 1, 28, 163.5, -99.51999, 1, 1, 28, 45.36, 27.22999, 1, 1, 28, 63.72, 44.97, 1, 1, 28, 70.69, 61.90999, 1, 1, 28, 62.86, 78.69, 1, 1, 28, 46.52, 85.3, 1, 1, 28, 29.92, 79.33, 1, 1, 28, 15.06, 62.2, 1, 1, 28, 14.09, 45.31, 1, 1, 28, 24.29, 27.04, 1, 1, 28, 48.63, 15.27999, 1, 1, 28, 84.87, 62.13, 1, 1, 28, 61.9, 94.83, 1, 1, 28, 22.54, 21.87, 1, 1, 28, 43.13, -95.94, 1, 1, 28, 41.77, -87.23, 1, 1, 28, 60.04, -70.33999, 1 ],
|
"vertices": [ 1, 32, 41.97, -41.79, 1, 3, 30, 73.46, 27.54, 0.18925, 32, -5.75, -51.7, 0.72419, 31, 112.98, -11.43, 0.08656, 3, 30, 38.23, 10.98, 0.84284, 32, -41.01, -35.22, 0.09706, 31, 92.72, -44.67, 0.0601, 1, 30, 73.35, 10.89, 1, 1, 30, 58.59, -10.38, 1, 2, 30, 14.35, -24.8, 0.89743, 29, 75.49, -4.55, 0.10257, 2, 30, -2.69, -18.57, 0.58266, 29, 59.82, -13.72, 0.41734, 1, 28, 163.06, -108.68, 1, 1, 28, 151.52, -95.04, 1, 1, 28, 110.6, -87.69, 1, 1, 28, 81.05, -86.58, 1, 1, 28, 89.81, -114.32, 1, 1, 28, 68.72, -120.91, 1, 1, 28, 58.1, -115.89, 1, 1, 28, 51.03, -100.62, 1, 1, 28, 38.78, -106.76, 1, 1, 28, 2.67, -89.69, 1, 1, 28, -22.07, -19.3, 1, 1, 28, 1.19, 45.62, 1, 1, 28, 8.07, 64.81, 1, 1, 28, 35.43, 93.72, 1, 1, 28, 59.98, 119.66, 1, 1, 28, 109.25, 136.98, 1, 1, 28, 174.07, 135.27, 1, 2, 31, -16.8, 104.63, 0.16236, 28, 205.58, 101.22, 0.83764, 2, 32, 58.93, 30.5, 0.60735, 31, 38.37, 61.89, 0.39265, 2, 32, 75.55, 19, 0.94503, 31, 51.62, 77.15, 0.05497, 1, 32, 106.69, 26.9, 1, 1, 32, 83.78, -9.5, 1, 4, 30, 19.12, 19.33, 0.58067, 32, -46.82, -15.19, 0.07454, 31, 72.17, -48.24, 0.14877, 29, 44.52, 27.24, 0.19601, 2, 31, 34.31, -45.24, 0.20797, 29, 7.42, 19.08, 0.79203, 1, 31, 45.94, -9.06, 1, 1, 32, 20.62, -16.35, 1, 1, 32, 75.73, 0.94, 1, 3, 32, 44.58, 56.29, 0.14949, 31, 11.16, 50.46, 0.3683, 28, 200.44, 40.47, 0.4822, 1, 28, 171.41, 90.11, 1, 2, 31, 28.19, -43.54, 0.20797, 29, 1.07, 18.93, 0.79203, 3, 31, 8.54, -6.08, 0.75383, 29, -28.63, 49.03, 0.13133, 28, 168.13, -6.01, 0.11484, 2, 31, -15.06, 30.9, 0.72899, 28, 167.82, 37.86, 0.27101, 1, 28, 162.36, 71.5, 1, 1, 28, 163.1, -47.44, 1, 1, 28, 165.94, -5.87, 1, 1, 28, 165.14, 37.37, 1, 1, 28, 157.6, 71.39, 1, 1, 28, 163.5, -99.53, 1, 1, 28, 45.37, 27.24, 1, 1, 28, 63.73, 44.98, 1, 1, 28, 70.7, 61.92, 1, 1, 28, 62.87, 78.7, 1, 1, 28, 46.52, 85.3, 1, 1, 28, 29.92, 79.34, 1, 1, 28, 15.07, 62.21, 1, 1, 28, 14.09, 45.32, 1, 1, 28, 24.29, 27.05, 1, 1, 28, 48.63, 15.29, 1, 1, 28, 84.87, 62.14, 1, 1, 28, 61.9, 94.83, 1, 1, 28, 22.54, 21.87, 1, 1, 28, 43.14, -95.94, 1, 1, 28, 41.77, -87.23, 1, 1, 28, 60.05, -70.35, 1 ],
|
||||||
"hull": 29,
|
"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 ],
|
"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,
|
"width": 271,
|
||||||
@ -227,76 +220,76 @@
|
|||||||
"head": {
|
"head": {
|
||||||
"type": "boundingbox",
|
"type": "boundingbox",
|
||||||
"vertexCount": 6,
|
"vertexCount": 6,
|
||||||
"vertices": [ -19.13999, -70.3, 40.79999, -118.06999, 257.77, -115.61, 285.16, 57.18, 120.76999, 164.95, -5.05999, 76.94 ]
|
"vertices": [ -19.14, -70.3, 40.8, -118.07, 257.77, -115.62, 285.16, 57.18, 120.77, 164.95, -5.07, 76.95 ]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"hoverboard_board": {
|
"hoverboard_board": {
|
||||||
"hoverboard_board": { "x": -11.6, "y": 25.63, "rotation": 0.17, "width": 492, "height": 152 }
|
"hoverboard_board": { "x": -11.61, "y": 25.64, "rotation": 0.17, "width": 492, "height": 152 }
|
||||||
},
|
},
|
||||||
"hoverboard_thruster_front": {
|
"hoverboard_thruster_front": {
|
||||||
"hoverboard_thruster": { "y": -7.07, "width": 60, "height": 64 }
|
"hoverboard_thruster": { "y": -7.08, "width": 60, "height": 64 }
|
||||||
},
|
},
|
||||||
"hoverboard_thruster_rear": {
|
"hoverboard_thruster_rear": {
|
||||||
"hoverboard_thruster": { "x": 1.08, "y": -6.28, "width": 60, "height": 64 }
|
"hoverboard_thruster": { "x": 1.08, "y": -6.29, "width": 60, "height": 64 }
|
||||||
},
|
},
|
||||||
"hoverglow_front": {
|
"hoverglow_front": {
|
||||||
"hoverglow_small": { "x": 2.13, "y": -2, "scaleX": 0.303, "scaleY": 0.495, "rotation": 0.15, "width": 274, "height": 75 }
|
"hoverglow_small": { "x": 2.13, "y": -2, "scaleX": 0.303, "scaleY": 0.495, "rotation": 0.15, "width": 274, "height": 75 }
|
||||||
},
|
},
|
||||||
"hoverglow_rear": {
|
"hoverglow_rear": {
|
||||||
"hoverglow_small": { "x": 1.38, "y": -2.08, "scaleX": 0.303, "scaleY": 0.495, "rotation": 0.6, "width": 274, "height": 75 }
|
"hoverglow_small": { "x": 1.39, "y": -2.09, "scaleX": 0.303, "scaleY": 0.495, "rotation": 0.61, "width": 274, "height": 75 }
|
||||||
},
|
},
|
||||||
"mouth": {
|
"mouth": {
|
||||||
"mouth_grind": {
|
"mouth_grind": {
|
||||||
"type": "mesh",
|
"type": "mesh",
|
||||||
"uvs": [ 1, 1, 0, 1, 0, 0, 1, 0 ],
|
"uvs": [ 1, 1, 0, 1, 0, 0, 1, 0 ],
|
||||||
"triangles": [ 1, 3, 0, 1, 2, 3 ],
|
"triangles": [ 1, 3, 0, 1, 2, 3 ],
|
||||||
"vertices": [ 11.27, -85.87, -19.54999, 1.84, 36.09, 21.39999, 66.93, -66.3 ],
|
"vertices": [ 11.28, -85.88, -19.56, 1.84, 36.09, 21.41, 66.93, -66.31 ],
|
||||||
"hull": 4,
|
"hull": 4,
|
||||||
"edges": [ 0, 2, 2, 4, 4, 6, 0, 6 ],
|
"edges": [ 0, 2, 2, 4, 4, 6, 0, 6 ],
|
||||||
"width": 93,
|
"width": 93,
|
||||||
"height": 59
|
"height": 59
|
||||||
},
|
},
|
||||||
"mouth_oooo": { "x": 23.68, "y": -32.22, "rotation": -70.62, "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.22, "rotation": -70.62, "width": 93, "height": 59 }
|
"mouth_smile": { "x": 23.68, "y": -32.23, "rotation": -70.63, "width": 93, "height": 59 }
|
||||||
},
|
},
|
||||||
"muzzle": {
|
"muzzle": {
|
||||||
"muzzle": { "x": 18.25, "y": 5.44, "rotation": 0.15, "width": 462, "height": 400 }
|
"muzzle": { "x": 18.25, "y": 5.44, "rotation": 0.15, "width": 462, "height": 400 }
|
||||||
},
|
},
|
||||||
"neck": {
|
"neck": {
|
||||||
"neck": { "x": 9.76, "y": -3, "rotation": -55.22, "width": 36, "height": 41 }
|
"neck": { "x": 9.76, "y": -3.01, "rotation": -55.22, "width": 36, "height": 41 }
|
||||||
},
|
},
|
||||||
"rear_bracer": {
|
"rear_bracer": {
|
||||||
"rear_bracer": { "x": 11.14, "y": -2.2, "rotation": 66.16, "width": 56, "height": 72 }
|
"rear_bracer": { "x": 11.15, "y": -2.2, "rotation": 66.17, "width": 56, "height": 72 }
|
||||||
},
|
},
|
||||||
"rear_foot": {
|
"rear_foot": {
|
||||||
"rear_foot": {
|
"rear_foot": {
|
||||||
"type": "mesh",
|
"type": "mesh",
|
||||||
"uvs": [ 0.48368, 0.13869, 0.5199, 0.21423, 0.55098, 0.27906, 0.58837, 0.29815, 0.63488, 0.3219, 0.77341, 0.39265, 1, 0.73346, 1, 1, 0.59434, 1, 0.31159, 1, 0, 1, 0, 0.41396, 0.13629, 0, 0.41716, 0 ],
|
"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 ],
|
"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, 7, 10.43999, 29.39999, 0.88823, 9, -6.73, 49.61, 0.11174, 2, 7, 16.54, 29.27, 0.83161, 9, -2.65, 45.08, 0.16834, 2, 7, 21.79, 29.13999, 0.78305, 9, 0.85, 41.18, 0.21694, 2, 7, 25.53, 31.43, 0.67843, 9, 5.07, 40.04, 0.32155, 2, 7, 30.17, 34.27, 0.5483, 9, 10.31999, 38.61, 0.45166, 2, 7, 44, 42.72, 0.16068, 9, 25.95999, 34.36, 0.83929, 1, 9, 51.56, 13.89, 1, 1, 9, 51.54, -2.07999, 1, 2, 7, 56.58, 2.98, 0.02958, 9, 5.71, -2.03999, 0.97039, 1, 7, 34.63, -20.20999, 0.99997, 1, 7, 10.43, -45.79, 0.99997, 1, 7, -15.1, -21.62999, 1, 1, 7, -22.54999, 6.61, 0.99997, 2, 7, -0.75, 29.67, 0.99219, 9, -14.25, 57.93, 0.00779 ],
|
"vertices": [ 2, 7, 10.45, 29.41, 0.88824, 9, -6.74, 49.62, 0.11175, 2, 7, 16.55, 29.27, 0.83163, 9, -2.65, 45.08, 0.16836, 2, 7, 21.79, 29.15, 0.78305, 9, 0.85, 41.19, 0.21694, 2, 7, 25.53, 31.43, 0.67844, 9, 5.07, 40.04, 0.32155, 2, 7, 30.17, 34.27, 0.54832, 9, 10.33, 38.61, 0.45167, 2, 7, 44.01, 42.72, 0.1607, 9, 25.97, 34.36, 0.83929, 1, 9, 51.56, 13.89, 1, 1, 9, 51.54, -2.09, 1, 2, 7, 56.58, 2.98, 0.02959, 9, 5.71, -2.05, 0.9704, 1, 7, 34.63, -20.22, 0.99999, 1, 7, 10.43, -45.8, 0.99999, 1, 7, -15.1, -21.64, 1, 1, 7, -22.56, 6.61, 0.99999, 2, 7, -0.76, 29.67, 0.99219, 9, -14.25, 57.94, 0.0078 ],
|
||||||
"hull": 14,
|
"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 ],
|
"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,
|
"width": 113,
|
||||||
"height": 60
|
"height": 60
|
||||||
},
|
},
|
||||||
"rear_foot_bend1": { "x": 29.61, "y": 18.12, "rotation": 46.59, "width": 117, "height": 66 },
|
"rear_foot_bend1": { "x": 29.61, "y": 18.12, "rotation": 46.59, "width": 117, "height": 66 },
|
||||||
"rear_foot_bend2": { "x": 22.81, "y": 23.69, "rotation": 46.59, "width": 103, "height": 83 }
|
"rear_foot_bend2": { "x": 22.82, "y": 23.69, "rotation": 46.59, "width": 103, "height": 83 }
|
||||||
},
|
},
|
||||||
"rear_shin": {
|
"rear_shin": {
|
||||||
"rear_shin": { "x": 58.29, "y": -2.75, "rotation": 92.37, "width": 75, "height": 178 }
|
"rear_shin": { "x": 58.29, "y": -2.75, "rotation": 92.37, "width": 75, "height": 178 }
|
||||||
},
|
},
|
||||||
"rear_thigh": {
|
"rear_thigh": {
|
||||||
"rear_thigh": { "x": 33.09, "y": -4.11, "rotation": 72.54, "width": 65, "height": 104 }
|
"rear_thigh": { "x": 33.1, "y": -4.11, "rotation": 72.54, "width": 65, "height": 104 }
|
||||||
},
|
},
|
||||||
"rear_upper_arm": {
|
"rear_upper_arm": {
|
||||||
"rear_upper_arm": { "x": 21.12, "y": 4.07, "rotation": 89.31, "width": 47, "height": 87 }
|
"rear_upper_arm": { "x": 21.12, "y": 4.08, "rotation": 89.32, "width": 47, "height": 87 }
|
||||||
},
|
},
|
||||||
"torso": {
|
"torso": {
|
||||||
"torso": {
|
"torso": {
|
||||||
"type": "mesh",
|
"type": "mesh",
|
||||||
"uvs": [ 0.62509, 0.12671, 1, 0.26359, 1, 0.2887, 1, 0.66021, 1, 0.68244, 0.92322, 0.69257, 0.95115, 0.84965, 0.77122, 1, 0.49654, 1, 0.2718, 1, 0.13842, 0.77196, 0, 0.45614, 0, 0.19436, 0.14462, 0, 0.27801, 0, 0.72523, 0.27834, 0.7609, 0.46215, 0.84887, 0.67962, 0.68256, 0.63248, 0.53984, 0.38468, 0.25442, 0.32168, 0.30061, 0.55172, 0.39552, 0.79505, 0.26388, 0.17005, 0.52408, 0.18672 ],
|
"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 ],
|
"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.61, -10.38, 102.16, -45.06, 97.66, -44.7, 31, -39.45, 27.01, -39.13, 25.78, -31.47999, -2.59999, -31.97999, -28.2, -12.27999, -26.06999, 14.52999, -24.34, 36.5, 17.59, 46.29, 75.33, 55.34, 122.3, 51.63, 156.07, 34.75, 155.02998, 21.70999, 101.62999, -18.02, 68.37, -18.88999, 28.68, -24.39999, 38.40999, -8.81999, 83.98, 1.59, 97.5, 28.56999, 55.86, 27.31999, 11.47, 21.51, 124.62, 25.51, 119.62, 0.31 ],
|
"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.04, 21.72, 101.64, -18.02, 68.38, -18.9, 28.68, -24.41, 38.42, -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,
|
"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 ],
|
"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,
|
"width": 98,
|
||||||
@ -327,7 +320,7 @@
|
|||||||
"curve": [ 0.25, 0, 0.75, 1 ]
|
"curve": [ 0.25, 0, 0.75, 1 ]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 0.5666,
|
"time": 0.5667,
|
||||||
"color": "ffffffb0",
|
"color": "ffffffb0",
|
||||||
"curve": [ 0.25, 0, 0.75, 1 ]
|
"curve": [ 0.25, 0, 0.75, 1 ]
|
||||||
},
|
},
|
||||||
@ -347,7 +340,7 @@
|
|||||||
"curve": [ 0.25, 0, 0.75, 1 ]
|
"curve": [ 0.25, 0, 0.75, 1 ]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 0.5666,
|
"time": 0.5667,
|
||||||
"color": "ffffffb0",
|
"color": "ffffffb0",
|
||||||
"curve": [ 0.25, 0, 0.75, 1 ]
|
"curve": [ 0.25, 0, 0.75, 1 ]
|
||||||
},
|
},
|
||||||
@ -389,29 +382,29 @@
|
|||||||
"translate": [
|
"translate": [
|
||||||
{
|
{
|
||||||
"time": 0,
|
"time": 0,
|
||||||
"x": 4.72,
|
"x": 4.73,
|
||||||
"y": -29.18,
|
"y": -29.19,
|
||||||
"curve": [ 0.155, 0.18, 0.75, 1 ]
|
"curve": [ 0.155, 0.18, 0.75, 1 ]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 0.1,
|
"time": 0.1,
|
||||||
"x": 4.72,
|
"x": 4.73,
|
||||||
"y": -34.45,
|
"y": -34.46,
|
||||||
"curve": [ 0.191, -0.39, 0.719, 1 ]
|
"curve": [ 0.191, -0.39, 0.719, 1 ]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 0.4333,
|
"time": 0.4333,
|
||||||
"x": 23.48,
|
"x": 23.49,
|
||||||
"y": 14.72,
|
"y": 14.73,
|
||||||
"curve": [ 0.311, 0.02, 0.795, 0.98 ]
|
"curve": [ 0.311, 0.02, 0.796, 0.98 ]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 0.8333,
|
"time": 0.8333,
|
||||||
"x": 71.9,
|
"x": 71.9,
|
||||||
"y": 28.45,
|
"y": 28.46,
|
||||||
"curve": [ 0.319, 0, 0.824, 0.84 ]
|
"curve": [ 0.32, 0.01, 0.824, 0.84 ]
|
||||||
},
|
},
|
||||||
{ "time": 1.3333, "x": 4.72, "y": -29.18 }
|
{ "time": 1.3333, "x": 4.73, "y": -29.19 }
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"torso": {
|
"torso": {
|
||||||
@ -419,15 +412,15 @@
|
|||||||
{
|
{
|
||||||
"time": 0,
|
"time": 0,
|
||||||
"angle": -5.34,
|
"angle": -5.34,
|
||||||
"curve": [ 0.247, 0, 0.629, 0.52 ]
|
"curve": [ 0.248, 0, 0.629, 0.52 ]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 0.3,
|
"time": 0.3,
|
||||||
"angle": -4.14,
|
"angle": -4.14,
|
||||||
"curve": [ 0.221, 0.11, 0.747, 1 ]
|
"curve": [ 0.221, 0.12, 0.747, 1 ]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 0.6999,
|
"time": 0.7,
|
||||||
"angle": 22.54,
|
"angle": 22.54,
|
||||||
"curve": [ 0.25, 0, 0.75, 1 ]
|
"curve": [ 0.25, 0, 0.75, 1 ]
|
||||||
},
|
},
|
||||||
@ -447,16 +440,16 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 0.3,
|
"time": 0.3,
|
||||||
"angle": -1.58,
|
"angle": -1.59,
|
||||||
"curve": [ 0.45, 0, 0.75, 1 ]
|
"curve": [ 0.451, 0, 0.75, 1 ]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 0.6999,
|
"time": 0.7,
|
||||||
"angle": -12.82,
|
"angle": -12.82,
|
||||||
"curve": [ 0.25, 0, 0.625, 0.5 ]
|
"curve": [ 0.25, 0, 0.625, 0.5 ]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 1.0666,
|
"time": 1.0667,
|
||||||
"angle": -6.71,
|
"angle": -6.71,
|
||||||
"curve": [ 0.375, 0.5, 0.75, 1 ]
|
"curve": [ 0.375, 0.5, 0.75, 1 ]
|
||||||
},
|
},
|
||||||
@ -469,11 +462,11 @@
|
|||||||
},
|
},
|
||||||
"head": {
|
"head": {
|
||||||
"rotate": [
|
"rotate": [
|
||||||
{ "time": 0, "angle": 8.04 },
|
{ "time": 0, "angle": 8.05 },
|
||||||
{ "time": 0.3, "angle": -1.58 },
|
{ "time": 0.3, "angle": -1.59 },
|
||||||
{ "time": 0.6999, "angle": -12.82 },
|
{ "time": 0.7, "angle": -12.82 },
|
||||||
{ "time": 1.0666, "angle": 3.26 },
|
{ "time": 1.0667, "angle": 3.27 },
|
||||||
{ "time": 1.3333, "angle": 8.04 }
|
{ "time": 1.3333, "angle": 8.05 }
|
||||||
],
|
],
|
||||||
"translate": [
|
"translate": [
|
||||||
{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
|
{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
|
||||||
@ -483,14 +476,14 @@
|
|||||||
"hair1": {
|
"hair1": {
|
||||||
"rotate": [
|
"rotate": [
|
||||||
{ "time": 0, "angle": 6.48 },
|
{ "time": 0, "angle": 6.48 },
|
||||||
{ "time": 0.1333, "angle": 7.25 },
|
{ "time": 0.1333, "angle": 7.26 },
|
||||||
{ "time": 0.2666, "angle": 3.81 },
|
{ "time": 0.2667, "angle": 3.82 },
|
||||||
{ "time": 0.3666, "angle": 5.38 },
|
{ "time": 0.3667, "angle": 5.39 },
|
||||||
{ "time": 0.4666, "angle": 4.42 },
|
{ "time": 0.4667, "angle": 4.43 },
|
||||||
{ "time": 0.6333, "angle": 0.75 },
|
{ "time": 0.6333, "angle": 0.76 },
|
||||||
{ "time": 0.8, "angle": 0.58 },
|
{ "time": 0.8, "angle": 0.58 },
|
||||||
{ "time": 0.8999, "angle": 3.76 },
|
{ "time": 0.9, "angle": 3.76 },
|
||||||
{ "time": 1.0666, "angle": 4.09 },
|
{ "time": 1.0667, "angle": 4.1 },
|
||||||
{ "time": 1.2333, "angle": 7.48 },
|
{ "time": 1.2333, "angle": 7.48 },
|
||||||
{ "time": 1.3333, "angle": 6.48 }
|
{ "time": 1.3333, "angle": 6.48 }
|
||||||
],
|
],
|
||||||
@ -503,13 +496,13 @@
|
|||||||
"rotate": [
|
"rotate": [
|
||||||
{ "time": 0, "angle": 9.46 },
|
{ "time": 0, "angle": 9.46 },
|
||||||
{ "time": 0.1333, "angle": 10.24 },
|
{ "time": 0.1333, "angle": 10.24 },
|
||||||
{ "time": 0.2666, "angle": 6.79 },
|
{ "time": 0.2667, "angle": 6.8 },
|
||||||
{ "time": 0.3666, "angle": 8.36 },
|
{ "time": 0.3667, "angle": 8.37 },
|
||||||
{ "time": 0.4666, "angle": 7.41 },
|
{ "time": 0.4667, "angle": 7.41 },
|
||||||
{ "time": 0.6333, "angle": 3.73 },
|
{ "time": 0.6333, "angle": 3.74 },
|
||||||
{ "time": 0.8, "angle": 3.56 },
|
{ "time": 0.8, "angle": 3.56 },
|
||||||
{ "time": 0.8999, "angle": 6.74 },
|
{ "time": 0.9, "angle": 6.75 },
|
||||||
{ "time": 1.0666, "angle": 7.07 },
|
{ "time": 1.0667, "angle": 7.08 },
|
||||||
{ "time": 1.2333, "angle": 10.46 },
|
{ "time": 1.2333, "angle": 10.46 },
|
||||||
{ "time": 1.3333, "angle": 9.46 }
|
{ "time": 1.3333, "angle": 9.46 }
|
||||||
],
|
],
|
||||||
@ -521,14 +514,14 @@
|
|||||||
"hair2": {
|
"hair2": {
|
||||||
"rotate": [
|
"rotate": [
|
||||||
{ "time": 0, "angle": -0.25 },
|
{ "time": 0, "angle": -0.25 },
|
||||||
{ "time": 0.1333, "angle": 6.78 },
|
{ "time": 0.1333, "angle": 6.79 },
|
||||||
{ "time": 0.2666, "angle": 9.6 },
|
{ "time": 0.2667, "angle": 9.6 },
|
||||||
{ "time": 0.3666, "angle": 15.86 },
|
{ "time": 0.3667, "angle": 15.87 },
|
||||||
{ "time": 0.4666, "angle": 19.6 },
|
{ "time": 0.4667, "angle": 19.6 },
|
||||||
{ "time": 0.6333, "angle": 3.35 },
|
{ "time": 0.6333, "angle": 3.35 },
|
||||||
{ "time": 0.8, "angle": -9.4 },
|
{ "time": 0.8, "angle": -9.4 },
|
||||||
{ "time": 0.8999, "angle": -5.61 },
|
{ "time": 0.9, "angle": -5.61 },
|
||||||
{ "time": 1.0666, "angle": -4.26 },
|
{ "time": 1.0667, "angle": -4.26 },
|
||||||
{ "time": 1.2333, "angle": 0.14 },
|
{ "time": 1.2333, "angle": 0.14 },
|
||||||
{ "time": 1.3333, "angle": -0.25 }
|
{ "time": 1.3333, "angle": -0.25 }
|
||||||
],
|
],
|
||||||
@ -541,15 +534,15 @@
|
|||||||
"rotate": [
|
"rotate": [
|
||||||
{ "time": 0, "angle": 6.9 },
|
{ "time": 0, "angle": 6.9 },
|
||||||
{ "time": 0.1333, "angle": 7.86 },
|
{ "time": 0.1333, "angle": 7.86 },
|
||||||
{ "time": 0.2333, "angle": 5.54 },
|
{ "time": 0.2333, "angle": 5.55 },
|
||||||
{ "time": 0.3666, "angle": 11.19 },
|
{ "time": 0.3667, "angle": 11.19 },
|
||||||
{ "time": 0.5, "angle": 12.62 },
|
{ "time": 0.5, "angle": 12.62 },
|
||||||
{ "time": 0.6, "angle": 17.84 },
|
{ "time": 0.6, "angle": 17.84 },
|
||||||
{ "time": 0.6999, "angle": 20.53 },
|
{ "time": 0.7, "angle": 20.54 },
|
||||||
{ "time": 0.8666, "angle": 11.84 },
|
{ "time": 0.8667, "angle": 11.84 },
|
||||||
{ "time": 1.0333, "angle": 6.65 },
|
{ "time": 1.0333, "angle": 6.65 },
|
||||||
{ "time": 1.1333, "angle": 8.52 },
|
{ "time": 1.1333, "angle": 8.52 },
|
||||||
{ "time": 1.2999, "angle": 6.66 },
|
{ "time": 1.3, "angle": 6.66 },
|
||||||
{ "time": 1.3333, "angle": 6.9 }
|
{ "time": 1.3333, "angle": 6.9 }
|
||||||
],
|
],
|
||||||
"translate": [
|
"translate": [
|
||||||
@ -562,12 +555,12 @@
|
|||||||
"rotate": [
|
"rotate": [
|
||||||
{
|
{
|
||||||
"time": 0,
|
"time": 0,
|
||||||
"angle": 24.72,
|
"angle": 24.73,
|
||||||
"curve": [ 0.259, 0, 0.618, 0.44 ]
|
"curve": [ 0.259, 0, 0.618, 0.45 ]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 0.4,
|
"time": 0.4,
|
||||||
"angle": 35.93,
|
"angle": 35.94,
|
||||||
"curve": [ 0.25, 0, 0.75, 1 ]
|
"curve": [ 0.25, 0, 0.75, 1 ]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -576,11 +569,11 @@
|
|||||||
"curve": [ 0.25, 0, 0.75, 1 ]
|
"curve": [ 0.25, 0, 0.75, 1 ]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 1.1666,
|
"time": 1.1667,
|
||||||
"angle": 31.47,
|
"angle": 31.48,
|
||||||
"curve": [ 0.25, 0, 0.75, 1 ]
|
"curve": [ 0.25, 0, 0.75, 1 ]
|
||||||
},
|
},
|
||||||
{ "time": 1.3333, "angle": 24.72 }
|
{ "time": 1.3333, "angle": 24.73 }
|
||||||
],
|
],
|
||||||
"translate": [
|
"translate": [
|
||||||
{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
|
{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
|
||||||
@ -592,12 +585,12 @@
|
|||||||
{
|
{
|
||||||
"time": 0,
|
"time": 0,
|
||||||
"angle": 0,
|
"angle": 0,
|
||||||
"curve": [ 0.257, 0, 0.618, 0.45 ]
|
"curve": [ 0.258, 0, 0.619, 0.45 ]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 0.3333,
|
"time": 0.3333,
|
||||||
"angle": 15.41,
|
"angle": 15.42,
|
||||||
"curve": [ 0.195, 0.35, 0.75, 1 ]
|
"curve": [ 0.196, 0.35, 0.75, 1 ]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 0.8333,
|
"time": 0.8333,
|
||||||
@ -609,23 +602,23 @@
|
|||||||
"translate": [
|
"translate": [
|
||||||
{
|
{
|
||||||
"time": 0,
|
"time": 0,
|
||||||
"x": 25.22,
|
"x": 25.23,
|
||||||
"y": 7.84,
|
"y": 7.85,
|
||||||
"curve": [ 0.553, 0.02, 0.75, 1 ]
|
"curve": [ 0.554, 0.02, 0.75, 1 ]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 0.5,
|
"time": 0.5,
|
||||||
"x": 67.8,
|
"x": 67.8,
|
||||||
"y": 62.57,
|
"y": 62.58,
|
||||||
"curve": [ 0.246, 0, 0.737, 1 ]
|
"curve": [ 0.247, 0, 0.737, 1 ]
|
||||||
},
|
},
|
||||||
{ "time": 1.3333, "x": 25.22, "y": 7.84 }
|
{ "time": 1.3333, "x": 25.23, "y": 7.85 }
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"front_foot_ik": {
|
"front_foot_ik": {
|
||||||
"rotate": [
|
"rotate": [
|
||||||
{ "time": 0, "angle": -22.24 },
|
{ "time": 0, "angle": -22.24 },
|
||||||
{ "time": 0.5, "angle": 9.33 },
|
{ "time": 0.5, "angle": 9.34 },
|
||||||
{ "time": 1.3333, "angle": -22.24 }
|
{ "time": 1.3333, "angle": -22.24 }
|
||||||
],
|
],
|
||||||
"translate": [
|
"translate": [
|
||||||
@ -755,8 +748,8 @@
|
|||||||
"rotate": [
|
"rotate": [
|
||||||
{ "time": 0, "angle": -6.56 },
|
{ "time": 0, "angle": -6.56 },
|
||||||
{
|
{
|
||||||
"time": 0.6999,
|
"time": 0.7,
|
||||||
"angle": -45.47,
|
"angle": -45.48,
|
||||||
"curve": [ 0.25, 0, 0.75, 1 ]
|
"curve": [ 0.25, 0, 0.75, 1 ]
|
||||||
},
|
},
|
||||||
{ "time": 1.3333, "angle": -6.56 }
|
{ "time": 1.3333, "angle": -6.56 }
|
||||||
@ -770,8 +763,8 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 0.4333,
|
"time": 0.4333,
|
||||||
"x": 4.01,
|
"x": 4.02,
|
||||||
"y": 1.45,
|
"y": 1.46,
|
||||||
"curve": [ 0.25, 0, 0.75, 1 ]
|
"curve": [ 0.25, 0, 0.75, 1 ]
|
||||||
},
|
},
|
||||||
{ "time": 1.3333, "x": 0, "y": 0 }
|
{ "time": 1.3333, "x": 0, "y": 0 }
|
||||||
@ -806,7 +799,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 0.8,
|
"time": 0.8,
|
||||||
"angle": -22.48,
|
"angle": -22.49,
|
||||||
"curve": [ 0.25, 0, 0.75, 1 ]
|
"curve": [ 0.25, 0, 0.75, 1 ]
|
||||||
},
|
},
|
||||||
{ "time": 1.3333, "angle": 0 }
|
{ "time": 1.3333, "angle": 0 }
|
||||||
@ -821,16 +814,16 @@
|
|||||||
{
|
{
|
||||||
"time": 0,
|
"time": 0,
|
||||||
"angle": 53,
|
"angle": 53,
|
||||||
"curve": [ 0.259, 0, 0.618, 0.44 ]
|
"curve": [ 0.259, 0, 0.618, 0.45 ]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 0.6999,
|
"time": 0.7,
|
||||||
"angle": 27.8,
|
"angle": 27.81,
|
||||||
"curve": [ 0.25, 0, 0.75, 1 ]
|
"curve": [ 0.25, 0, 0.75, 1 ]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 1,
|
"time": 1,
|
||||||
"angle": 56.88,
|
"angle": 56.89,
|
||||||
"curve": [ 0.25, 0, 0.75, 1 ]
|
"curve": [ 0.25, 0, 0.75, 1 ]
|
||||||
},
|
},
|
||||||
{ "time": 1.3333, "angle": 53 }
|
{ "time": 1.3333, "angle": 53 }
|
||||||
@ -855,7 +848,7 @@
|
|||||||
{ "time": 0, "angle": 0 },
|
{ "time": 0, "angle": 0 },
|
||||||
{
|
{
|
||||||
"time": 0.8,
|
"time": 0.8,
|
||||||
"angle": 16.99,
|
"angle": 17,
|
||||||
"curve": [ 0.25, 0, 0.75, 1 ]
|
"curve": [ 0.25, 0, 0.75, 1 ]
|
||||||
},
|
},
|
||||||
{ "time": 1.3333, "angle": 0 }
|
{ "time": 1.3333, "angle": 0 }
|
||||||
@ -899,15 +892,15 @@
|
|||||||
"rotate": [
|
"rotate": [
|
||||||
{
|
{
|
||||||
"time": 0,
|
"time": 0,
|
||||||
"angle": 20.28,
|
"angle": 20.29,
|
||||||
"curve": [ 0.25, 0, 0.75, 1 ]
|
"curve": [ 0.25, 0, 0.75, 1 ]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 0.8,
|
"time": 0.8,
|
||||||
"angle": 3.84,
|
"angle": 3.85,
|
||||||
"curve": [ 0.25, 0, 0.75, 1 ]
|
"curve": [ 0.25, 0, 0.75, 1 ]
|
||||||
},
|
},
|
||||||
{ "time": 1.3333, "angle": 20.28 }
|
{ "time": 1.3333, "angle": 20.29 }
|
||||||
],
|
],
|
||||||
"translate": [
|
"translate": [
|
||||||
{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
|
{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
|
||||||
@ -927,14 +920,14 @@
|
|||||||
"hoverglow_front": {
|
"hoverglow_front": {
|
||||||
"scale": [
|
"scale": [
|
||||||
{ "time": 0, "x": 1, "y": 1 },
|
{ "time": 0, "x": 1, "y": 1 },
|
||||||
{ "time": 0.5, "x": 1, "y": 1.565 },
|
{ "time": 0.5, "x": 1, "y": 1.566 },
|
||||||
{ "time": 1.3333, "x": 1, "y": 1 }
|
{ "time": 1.3333, "x": 1, "y": 1 }
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"hoverglow_rear": {
|
"hoverglow_rear": {
|
||||||
"scale": [
|
"scale": [
|
||||||
{ "time": 0, "x": 1, "y": 1 },
|
{ "time": 0, "x": 1, "y": 1 },
|
||||||
{ "time": 0.5, "x": 1, "y": 1.565 },
|
{ "time": 0.5, "x": 1, "y": 1.566 },
|
||||||
{ "time": 1.3333, "x": 1, "y": 1 }
|
{ "time": 1.3333, "x": 1, "y": 1 }
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@ -942,7 +935,7 @@
|
|||||||
"scale": [
|
"scale": [
|
||||||
{ "time": 0, "x": 1, "y": 1 },
|
{ "time": 0, "x": 1, "y": 1 },
|
||||||
{ "time": 0.3333, "x": 1.597, "y": 1 },
|
{ "time": 0.3333, "x": 1.597, "y": 1 },
|
||||||
{ "time": 0.5666, "x": 1.223, "y": 1 },
|
{ "time": 0.5667, "x": 1.223, "y": 1 },
|
||||||
{ "time": 1.3333, "x": 1, "y": 1 }
|
{ "time": 1.3333, "x": 1, "y": 1 }
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@ -950,7 +943,7 @@
|
|||||||
"scale": [
|
"scale": [
|
||||||
{ "time": 0, "x": 1, "y": 1 },
|
{ "time": 0, "x": 1, "y": 1 },
|
||||||
{ "time": 0.3333, "x": 1.597, "y": 1 },
|
{ "time": 0.3333, "x": 1.597, "y": 1 },
|
||||||
{ "time": 0.5666, "x": 1.223, "y": 1 },
|
{ "time": 0.5667, "x": 1.223, "y": 1 },
|
||||||
{ "time": 1.3333, "x": 1, "y": 1 }
|
{ "time": 1.3333, "x": 1, "y": 1 }
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
@ -1,18 +1,11 @@
|
|||||||
{
|
{
|
||||||
"skeleton": {
|
"skeleton": { "hash": "/FQ62MLXDzS93xb3LzhPr1aQxX8", "spine": "3.6.05-beta", "width": 1680, "height": 1782.28, "images": "./images/" },
|
||||||
"hash": "vfzL8SvUQWTNRil1kGbSbWF5R60",
|
|
||||||
"spine": "3.5.03-beta",
|
|
||||||
"width": 1680,
|
|
||||||
"height": 1782.27,
|
|
||||||
"fps": 30,
|
|
||||||
"images": "./images/"
|
|
||||||
},
|
|
||||||
"bones": [
|
"bones": [
|
||||||
{ "name": "root", "y": -526.31 },
|
{ "name": "root", "y": -526.32 },
|
||||||
{ "name": "leaves", "parent": "root", "x": -0.16, "y": 1310.1 },
|
{ "name": "leaves", "parent": "root", "x": -0.17, "y": 1310.1 },
|
||||||
{ "name": "logo", "parent": "root", "y": 1332.02 },
|
{ "name": "logo", "parent": "root", "y": 1332.03 },
|
||||||
{ "name": "play", "parent": "root", "x": 3.02, "y": -83.61 },
|
{ "name": "play", "parent": "root", "x": 3.02, "y": -83.61 },
|
||||||
{ "name": "quit", "parent": "root", "x": -2.85, "y": -201.21 },
|
{ "name": "quit", "parent": "root", "x": -2.86, "y": -201.21 },
|
||||||
{ "name": "settings", "parent": "root", "x": 3.02, "y": -144.37 }
|
{ "name": "settings", "parent": "root", "x": 3.02, "y": -144.37 }
|
||||||
],
|
],
|
||||||
"slots": [
|
"slots": [
|
||||||
@ -29,7 +22,7 @@
|
|||||||
"leaves": { "y": -28.54, "width": 1042, "height": 522 }
|
"leaves": { "y": -28.54, "width": 1042, "height": 522 }
|
||||||
},
|
},
|
||||||
"logo": {
|
"logo": {
|
||||||
"logo": { "y": -20.39, "width": 917, "height": 323 }
|
"logo": { "y": -20.4, "width": 917, "height": 323 }
|
||||||
},
|
},
|
||||||
"play": {
|
"play": {
|
||||||
"play": { "width": 218, "height": 77 }
|
"play": { "width": 218, "height": 77 }
|
||||||
@ -60,9 +53,9 @@
|
|||||||
"play": {
|
"play": {
|
||||||
"color": [
|
"color": [
|
||||||
{ "time": 1.3333, "color": "fff99dff" },
|
{ "time": 1.3333, "color": "fff99dff" },
|
||||||
{ "time": 1.5666, "color": "ffffffff", "curve": "stepped" },
|
{ "time": 1.5667, "color": "ffffffff", "curve": "stepped" },
|
||||||
{ "time": 1.8333, "color": "ffffffff" },
|
{ "time": 1.8333, "color": "ffffffff" },
|
||||||
{ "time": 2.0666, "color": "fff99dff" }
|
{ "time": 2.0667, "color": "fff99dff" }
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"quit": {
|
"quit": {
|
||||||
@ -73,10 +66,10 @@
|
|||||||
},
|
},
|
||||||
"settings": {
|
"settings": {
|
||||||
"color": [
|
"color": [
|
||||||
{ "time": 1.8666, "color": "fff99dff" },
|
{ "time": 1.8667, "color": "fff99dff" },
|
||||||
{ "time": 2.0999, "color": "ffffffff", "curve": "stepped" },
|
{ "time": 2.1, "color": "ffffffff", "curve": "stepped" },
|
||||||
{ "time": 2.3666, "color": "ffffffff" },
|
{ "time": 2.3667, "color": "ffffffff" },
|
||||||
{ "time": 2.5999, "color": "fff99dff" }
|
{ "time": 2.6, "color": "fff99dff" }
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -87,39 +80,39 @@
|
|||||||
"time": 0,
|
"time": 0,
|
||||||
"x": 0,
|
"x": 0,
|
||||||
"y": 40.8,
|
"y": 40.8,
|
||||||
"curve": [ 0.043, 0.15, 0.344, 1.26 ]
|
"curve": [ 0.043, 0.15, 0.345, 1.27 ]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 0.3333,
|
"time": 0.3333,
|
||||||
"x": 0,
|
"x": 0,
|
||||||
"y": -597.71,
|
"y": -597.72,
|
||||||
"curve": [ 0.425, 0.17, 0.591, 0.99 ]
|
"curve": [ 0.425, 0.17, 0.592, 1 ]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 1,
|
"time": 1,
|
||||||
"x": 0,
|
"x": 0,
|
||||||
"y": -583.71,
|
"y": -583.72,
|
||||||
"curve": [ 0.402, 0, 0.603, 1 ]
|
"curve": [ 0.402, 0, 0.603, 1 ]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 1.6666,
|
"time": 1.6667,
|
||||||
"x": 0,
|
"x": 0,
|
||||||
"y": -592.11,
|
"y": -592.12,
|
||||||
"curve": [ 0.408, 0.01, 0.655, 0.98 ]
|
"curve": [ 0.408, 0.01, 0.655, 0.99 ]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 2.3333,
|
"time": 2.3333,
|
||||||
"x": 0,
|
"x": 0,
|
||||||
"y": -583.71,
|
"y": -583.72,
|
||||||
"curve": [ 0.402, 0, 0.603, 0.99 ]
|
"curve": [ 0.402, 0, 0.603, 1 ]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 3,
|
"time": 3,
|
||||||
"x": 0,
|
"x": 0,
|
||||||
"y": -592.11,
|
"y": -592.12,
|
||||||
"curve": [ 0.408, 0.01, 0.655, 0.98 ]
|
"curve": [ 0.408, 0.01, 0.655, 0.99 ]
|
||||||
},
|
},
|
||||||
{ "time": 3.6666, "x": 0, "y": -583.71 }
|
{ "time": 3.6667, "x": 0, "y": -583.72 }
|
||||||
],
|
],
|
||||||
"scale": [
|
"scale": [
|
||||||
{
|
{
|
||||||
@ -132,61 +125,61 @@
|
|||||||
"time": 0.3333,
|
"time": 0.3333,
|
||||||
"x": 1,
|
"x": 1,
|
||||||
"y": 1,
|
"y": 1,
|
||||||
"curve": [ 0.189, 0.37, 0.658, 0.98 ]
|
"curve": [ 0.19, 0.38, 0.658, 0.99 ]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 1,
|
"time": 1,
|
||||||
"x": 1.019,
|
"x": 1.02,
|
||||||
"y": 1.029,
|
"y": 1.03,
|
||||||
"curve": [ 0.37, 0, 0.66, 0.99 ]
|
"curve": [ 0.371, 0, 0.661, 1 ]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 1.6666,
|
"time": 1.6667,
|
||||||
"x": 1,
|
"x": 1,
|
||||||
"y": 1,
|
"y": 1,
|
||||||
"curve": [ 0.387, 0.01, 0.686, 1 ]
|
"curve": [ 0.388, 0.01, 0.687, 1 ]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 2.3333,
|
"time": 2.3333,
|
||||||
"x": 1.019,
|
"x": 1.02,
|
||||||
"y": 1.029,
|
"y": 1.03,
|
||||||
"curve": [ 0.37, 0, 0.66, 0.99 ]
|
"curve": [ 0.371, 0, 0.661, 1 ]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 3,
|
"time": 3,
|
||||||
"x": 1,
|
"x": 1,
|
||||||
"y": 1,
|
"y": 1,
|
||||||
"curve": [ 0.387, 0.01, 0.686, 1 ]
|
"curve": [ 0.388, 0.01, 0.687, 1 ]
|
||||||
},
|
},
|
||||||
{ "time": 3.6666, "x": 1.019, "y": 1.029 }
|
{ "time": 3.6667, "x": 1.02, "y": 1.03 }
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"play": {
|
"play": {
|
||||||
"translate": [
|
"translate": [
|
||||||
{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
|
{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
|
||||||
{
|
{
|
||||||
"time": 0.6666,
|
"time": 0.6667,
|
||||||
"x": 0,
|
"x": 0,
|
||||||
"y": 0,
|
"y": 0,
|
||||||
"curve": [ 0, 0, 0.448, 1.62 ]
|
"curve": [ 0, 0, 0.448, 1.63 ]
|
||||||
},
|
},
|
||||||
{ "time": 0.8666, "x": 0, "y": 480.2 }
|
{ "time": 0.8667, "x": 0, "y": 480.2 }
|
||||||
],
|
],
|
||||||
"scale": [
|
"scale": [
|
||||||
{
|
{
|
||||||
"time": 1.3333,
|
"time": 1.3333,
|
||||||
"x": 1,
|
"x": 1,
|
||||||
"y": 1,
|
"y": 1,
|
||||||
"curve": [ 0, 0, 0.525, 2.46 ]
|
"curve": [ 0, 0, 0.526, 2.46 ]
|
||||||
},
|
},
|
||||||
{ "time": 1.5666, "x": 1.231, "y": 1.231, "curve": "stepped" },
|
{ "time": 1.5667, "x": 1.231, "y": 1.231, "curve": "stepped" },
|
||||||
{
|
{
|
||||||
"time": 1.8333,
|
"time": 1.8333,
|
||||||
"x": 1.231,
|
"x": 1.231,
|
||||||
"y": 1.231,
|
"y": 1.231,
|
||||||
"curve": [ 0, 0, 0.525, 2.46 ]
|
"curve": [ 0, 0, 0.526, 2.46 ]
|
||||||
},
|
},
|
||||||
{ "time": 2.0666, "x": 1, "y": 1 }
|
{ "time": 2.0667, "x": 1, "y": 1 }
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"settings": {
|
"settings": {
|
||||||
@ -195,25 +188,25 @@
|
|||||||
"time": 0.8,
|
"time": 0.8,
|
||||||
"x": 0,
|
"x": 0,
|
||||||
"y": 0,
|
"y": 0,
|
||||||
"curve": [ 0, 0, 0.448, 1.62 ]
|
"curve": [ 0, 0, 0.448, 1.63 ]
|
||||||
},
|
},
|
||||||
{ "time": 1, "x": 0, "y": 431.2 }
|
{ "time": 1, "x": 0, "y": 431.2 }
|
||||||
],
|
],
|
||||||
"scale": [
|
"scale": [
|
||||||
{
|
{
|
||||||
"time": 1.8666,
|
"time": 1.8667,
|
||||||
"x": 1,
|
"x": 1,
|
||||||
"y": 1,
|
"y": 1,
|
||||||
"curve": [ 0, 0, 0.525, 2.46 ]
|
"curve": [ 0, 0, 0.526, 2.46 ]
|
||||||
},
|
},
|
||||||
{ "time": 2.0999, "x": 1.23, "y": 1.23, "curve": "stepped" },
|
{ "time": 2.1, "x": 1.23, "y": 1.23, "curve": "stepped" },
|
||||||
{
|
{
|
||||||
"time": 2.3666,
|
"time": 2.3667,
|
||||||
"x": 1.23,
|
"x": 1.23,
|
||||||
"y": 1.23,
|
"y": 1.23,
|
||||||
"curve": [ 0, 0, 0.525, 2.46 ]
|
"curve": [ 0, 0, 0.526, 2.46 ]
|
||||||
},
|
},
|
||||||
{ "time": 2.5999, "x": 1, "y": 1 }
|
{ "time": 2.6, "x": 1, "y": 1 }
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"quit": {
|
"quit": {
|
||||||
@ -222,7 +215,7 @@
|
|||||||
"time": 0.9333,
|
"time": 0.9333,
|
||||||
"x": 0,
|
"x": 0,
|
||||||
"y": 0,
|
"y": 0,
|
||||||
"curve": [ 0, 0, 0.448, 1.62 ]
|
"curve": [ 0, 0, 0.448, 1.63 ]
|
||||||
},
|
},
|
||||||
{ "time": 1.1333, "x": 0, "y": 376.32 }
|
{ "time": 1.1333, "x": 0, "y": 376.32 }
|
||||||
],
|
],
|
||||||
@ -231,7 +224,7 @@
|
|||||||
"time": 2.4,
|
"time": 2.4,
|
||||||
"x": 1,
|
"x": 1,
|
||||||
"y": 1,
|
"y": 1,
|
||||||
"curve": [ 0, 0, 0.525, 2.46 ]
|
"curve": [ 0, 0, 0.526, 2.46 ]
|
||||||
},
|
},
|
||||||
{ "time": 2.6333, "x": 1.23, "y": 1.23 }
|
{ "time": 2.6333, "x": 1.23, "y": 1.23 }
|
||||||
]
|
]
|
||||||
@ -242,28 +235,28 @@
|
|||||||
"time": 0,
|
"time": 0,
|
||||||
"x": 0,
|
"x": 0,
|
||||||
"y": 0,
|
"y": 0,
|
||||||
"curve": [ 0.043, 0.15, 0.344, 1.26 ]
|
"curve": [ 0.043, 0.15, 0.345, 1.27 ]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 0.3333,
|
"time": 0.3333,
|
||||||
"x": 0.16,
|
"x": 0.17,
|
||||||
"y": -601.23,
|
"y": -601.24,
|
||||||
"curve": [ 0.425, 0.17, 0.591, 0.99 ]
|
"curve": [ 0.425, 0.17, 0.592, 1 ]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 1.3333,
|
"time": 1.3333,
|
||||||
"x": 0.16,
|
"x": 0.17,
|
||||||
"y": -580.83,
|
"y": -580.84,
|
||||||
"curve": [ 0.402, 0, 0.603, 1 ]
|
"curve": [ 0.402, 0, 0.603, 1 ]
|
||||||
},
|
},
|
||||||
{ "time": 2, "x": 0.16, "y": -595.11 },
|
{ "time": 2, "x": 0.17, "y": -595.12 },
|
||||||
{
|
{
|
||||||
"time": 2.6666,
|
"time": 2.6667,
|
||||||
"x": 0.16,
|
"x": 0.17,
|
||||||
"y": -580.83,
|
"y": -580.84,
|
||||||
"curve": [ 0.402, 0, 0.603, 1 ]
|
"curve": [ 0.402, 0, 0.603, 1 ]
|
||||||
},
|
},
|
||||||
{ "time": 3.3333, "x": 0.16, "y": -595.11 }
|
{ "time": 3.3333, "x": 0.17, "y": -595.12 }
|
||||||
],
|
],
|
||||||
"scale": [
|
"scale": [
|
||||||
{
|
{
|
||||||
@ -273,9 +266,9 @@
|
|||||||
"curve": [ 0, 0, 0.744, 0.4 ]
|
"curve": [ 0, 0, 0.744, 0.4 ]
|
||||||
},
|
},
|
||||||
{ "time": 0.3333, "x": 1, "y": 1 },
|
{ "time": 0.3333, "x": 1, "y": 1 },
|
||||||
{ "time": 1.3333, "x": 1.029, "y": 1.019 },
|
{ "time": 1.3333, "x": 1.03, "y": 1.02 },
|
||||||
{ "time": 2, "x": 1, "y": 1 },
|
{ "time": 2, "x": 1, "y": 1 },
|
||||||
{ "time": 2.6666, "x": 1.029, "y": 1.019 },
|
{ "time": 2.6667, "x": 1.03, "y": 1.02 },
|
||||||
{ "time": 3.3333, "x": 1, "y": 1 }
|
{ "time": 3.3333, "x": 1, "y": 1 }
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
Binary file not shown.
File diff suppressed because one or more lines are too long
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Binary file not shown.
@ -1,20 +1,13 @@
|
|||||||
{
|
{
|
||||||
"skeleton": {
|
"skeleton": { "hash": "64h+ct/Nr1wkBrgZHtYbbfXpBlI", "spine": "3.6.05-beta", "width": 1333.78, "height": 1112.91, "images": "./images/" },
|
||||||
"hash": "i05EldfljpjLC64I/kHnNrqzJ5A",
|
|
||||||
"spine": "3.5.03-beta",
|
|
||||||
"width": 1333.78,
|
|
||||||
"height": 1112.91,
|
|
||||||
"fps": 30,
|
|
||||||
"images": "./images/"
|
|
||||||
},
|
|
||||||
"bones": [
|
"bones": [
|
||||||
{ "name": "root", "x": 28.68, "y": -105.7 },
|
{ "name": "root", "x": 28.68, "y": -105.71 },
|
||||||
{ "name": "attachment", "parent": "root", "x": -267.7, "y": -366.61 },
|
{ "name": "attachment", "parent": "root", "x": -267.71, "y": -366.62 },
|
||||||
{ "name": "color", "parent": "root", "x": -298.29, "y": 44.09 },
|
{ "name": "color", "parent": "root", "x": -298.3, "y": 44.1 },
|
||||||
{ "name": "draworder", "parent": "root", "x": 283.52, "y": -356.26 },
|
{ "name": "draworder", "parent": "root", "x": 283.53, "y": -356.27 },
|
||||||
{ "name": "mesh", "parent": "root", "x": -320.73, "y": 413.7 },
|
{ "name": "mesh", "parent": "root", "x": -320.74, "y": 413.7 },
|
||||||
{ "name": "meshweighted", "parent": "root", "rotation": -11.22, "x": -353.27, "y": 627.53 },
|
{ "name": "meshweighted", "parent": "root", "rotation": -11.22, "x": -353.28, "y": 627.53 },
|
||||||
{ "name": "pathfollower", "parent": "root", "x": 177.52, "y": 56.61 },
|
{ "name": "pathfollower", "parent": "root", "x": 177.52, "y": 56.62 },
|
||||||
{ "name": "rotate", "parent": "root", "x": -305, "y": 201 },
|
{ "name": "rotate", "parent": "root", "x": -305, "y": 201 },
|
||||||
{ "name": "scale", "parent": "root", "x": 183.99, "y": -138 },
|
{ "name": "scale", "parent": "root", "x": 183.99, "y": -138 },
|
||||||
{ "name": "shear", "parent": "root", "x": -304, "y": -146 },
|
{ "name": "shear", "parent": "root", "x": -304, "y": -146 },
|
||||||
@ -81,7 +74,7 @@
|
|||||||
"path": "spine",
|
"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 ],
|
"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 ],
|
"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.66, 21.29, 1, 1, 5, -102.08, 38.90999, 1, 1, 5, -9.47999, 56.54, 1, 1, 5, 83.08, 74.16, 1, 1, 5, 175.66, 91.79, 1, 1, 5, 181.27, 62.31, 1, 1, 5, 186.88, 32.84, 1, 1, 5, 192.5, 3.38, 1, 1, 5, 198.11, -26.09, 1, 1, 5, 105.51, -43.7, 1, 1, 5, 12.93, -61.33, 1, 1, 5, -79.62999, -78.94999, 1, 1, 5, -172.22, -96.58, 1, 1, 5, -177.83, -67.11, 1, 1, 5, -183.44, -37.63, 1, 1, 5, -189.05, -8.17, 1, 1, 5, -96.47, 9.43999, 1, 1, 5, -90.86, -20.01, 1, 1, 5, -85.25, -49.47, 1, 1, 5, -3.88, 27.05999, 1, 1, 5, 1.72, -2.39, 1, 1, 5, 7.32, -31.86, 1, 1, 5, 88.69, 44.68, 1, 1, 5, 94.3, 15.22, 1, 1, 5, 99.91, -14.22999, 1 ],
|
"vertices": [ 1, 5, -194.67, 21.29, 1, 1, 5, -102.08, 38.92, 1, 1, 5, -9.49, 56.54, 1, 1, 5, 83.09, 74.16, 1, 1, 5, 175.67, 91.79, 1, 1, 5, 181.28, 62.32, 1, 1, 5, 186.89, 32.85, 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,
|
"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 ],
|
"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,
|
"width": 377,
|
||||||
@ -114,9 +107,9 @@
|
|||||||
"images/spine": {
|
"images/spine": {
|
||||||
"type": "mesh",
|
"type": "mesh",
|
||||||
"path": "spine",
|
"path": "spine",
|
||||||
"uvs": [ 1, 0.50124, 1, 1, 0.72412, 1, 0.49981, 1, 0.2858, 1, 0, 1, 0, 0.50124, 0, 0, 0.49206, 0, 1, 0, 0.56941, 0.57414, 0.84013, 0.50124, 0.6184, 0.22584, 0.20588, 0.20153, 0.19558, 0.67133, 0.39151, 0.86574, 0.3941, 0.41214, 0.3941, 0.12863, 0.7602, 0.19344, 0.76537, 0.59034, 0.74474, 0.84144, 0.57716, 0.81713 ],
|
"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.56942, 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 ],
|
"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.82999, -60.97, -77.80999, -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.13, -1.12, 47.54, 31.92, -107.94999, 34.84, -111.83999, -21.53, -37.97, -44.86, -37, 9.56, -37, 43.59, 101.01, 35.81, 102.94999, -11.81, 95.18, -41.93, 32, -39.02 ],
|
"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.86, 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.94, 32, -39.02 ],
|
||||||
"hull": 10,
|
"hull": 10,
|
||||||
"edges": [ 10, 12, 12, 14, 14, 16, 16, 18, 2, 0, 0, 18, 6, 8, 8, 10, 2, 4, 4, 6 ],
|
"edges": [ 10, 12, 12, 14, 14, 16, 16, 18, 2, 0, 0, 18, 6, 8, 8, 10, 2, 4, 4, 6 ],
|
||||||
"width": 377,
|
"width": 377,
|
||||||
@ -127,9 +120,9 @@
|
|||||||
"path": {
|
"path": {
|
||||||
"type": "path",
|
"type": "path",
|
||||||
"closed": true,
|
"closed": true,
|
||||||
"lengths": [ 128.85, 310.24, 465.06, 600.88, 773.97 ],
|
"lengths": [ 128.85, 310.24, 465.06, 600.89, 773.98 ],
|
||||||
"vertexCount": 15,
|
"vertexCount": 15,
|
||||||
"vertices": [ 258.07, -42.65999, 291.94, -17.53, 326.41, 7.21, 391.41, 2.75, 398.04, 46.72, 399.82, 84.05999, 274.02, 106.4, 236.69, 117.73, 199.36, 129.08, 116.55, 135.11, 84.41, 115.47, 50.34, 94.04, 56.52, 1.48, 89.01, -5.59, 122.87999, -13.56999 ]
|
"vertices": [ 258.08, -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 ]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -141,21 +134,21 @@
|
|||||||
"color": [
|
"color": [
|
||||||
{ "time": 0, "color": "ffffffff" },
|
{ "time": 0, "color": "ffffffff" },
|
||||||
{ "time": 0.4333, "color": "ff0901ff" },
|
{ "time": 0.4333, "color": "ff0901ff" },
|
||||||
{ "time": 0.8999, "color": "2dff00ff" },
|
{ "time": 0.9, "color": "2dff00ff" },
|
||||||
{ "time": 1.3333, "color": "ffffffff" }
|
{ "time": 1.3333, "color": "ffffffff" }
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"images/spine10": {
|
"images/spine10": {
|
||||||
"attachment": [
|
"attachment": [
|
||||||
{ "time": 0, "name": "images/spine" },
|
{ "time": 0, "name": "images/spine" },
|
||||||
{ "time": 0.6666, "name": "images/logo" },
|
{ "time": 0.6667, "name": "images/logo" },
|
||||||
{ "time": 1.3333, "name": "images/spine" }
|
{ "time": 1.3333, "name": "images/spine" }
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"images/spine12": {
|
"images/spine12": {
|
||||||
"attachment": [
|
"attachment": [
|
||||||
{ "time": 0, "name": "images/spine" },
|
{ "time": 0, "name": "images/spine" },
|
||||||
{ "time": 0.6666, "name": "linkedmesh" }
|
{ "time": 0.6667, "name": "linkedmesh" }
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -168,50 +161,50 @@
|
|||||||
"y": 0,
|
"y": 0,
|
||||||
"curve": [ 1, 0, 0, 1 ]
|
"curve": [ 1, 0, 0, 1 ]
|
||||||
},
|
},
|
||||||
{ "time": 0.6666, "x": 96.98, "y": -151 },
|
{ "time": 0.6667, "x": 96.99, "y": -151 },
|
||||||
{ "time": 1.3333, "x": 0, "y": 0 }
|
{ "time": 1.3333, "x": 0, "y": 0 }
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"scale": {
|
"scale": {
|
||||||
"scale": [
|
"scale": [
|
||||||
{ "time": 0, "x": 1, "y": 1 },
|
{ "time": 0, "x": 1, "y": 1 },
|
||||||
{ "time": 0.6666, "x": 1, "y": 2.339 },
|
{ "time": 0.6667, "x": 1, "y": 2.34 },
|
||||||
{ "time": 1.3333, "x": 1, "y": 1 }
|
{ "time": 1.3333, "x": 1, "y": 1 }
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"rotate": {
|
"rotate": {
|
||||||
"rotate": [
|
"rotate": [
|
||||||
{ "time": 0, "angle": 0 },
|
{ "time": 0, "angle": 0 },
|
||||||
{ "time": 0.6666, "angle": -125.33 },
|
{ "time": 0.6667, "angle": -125.34 },
|
||||||
{ "time": 1.3333, "angle": 0 }
|
{ "time": 1.3333, "angle": 0 }
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"shear": {
|
"shear": {
|
||||||
"shear": [
|
"shear": [
|
||||||
{ "time": 0, "x": 0, "y": 0 },
|
{ "time": 0, "x": 0, "y": 0 },
|
||||||
{ "time": 0.6666, "x": 29.39, "y": 0 },
|
{ "time": 0.6667, "x": 29.4, "y": 0 },
|
||||||
{ "time": 1.3333, "x": 0, "y": 0 }
|
{ "time": 1.3333, "x": 0, "y": 0 }
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"transformconstrainttarget": {
|
"transformconstrainttarget": {
|
||||||
"rotate": [
|
"rotate": [
|
||||||
{ "time": 0, "angle": 0 },
|
{ "time": 0, "angle": 0 },
|
||||||
{ "time": 0.6666, "angle": -74.59 },
|
{ "time": 0.6667, "angle": -74.6 },
|
||||||
{ "time": 1.3333, "angle": 0 }
|
{ "time": 1.3333, "angle": 0 }
|
||||||
],
|
],
|
||||||
"translate": [
|
"translate": [
|
||||||
{ "time": 0, "x": 0, "y": 0 },
|
{ "time": 0, "x": 0, "y": 0 },
|
||||||
{ "time": 0.6666, "x": 176.22, "y": -170.33 },
|
{ "time": 0.6667, "x": 176.22, "y": -170.34 },
|
||||||
{ "time": 1.3333, "x": 0, "y": 0 }
|
{ "time": 1.3333, "x": 0, "y": 0 }
|
||||||
],
|
],
|
||||||
"scale": [
|
"scale": [
|
||||||
{ "time": 0, "x": 1, "y": 1 },
|
{ "time": 0, "x": 1, "y": 1 },
|
||||||
{ "time": 0.6666, "x": 2, "y": 2 },
|
{ "time": 0.6667, "x": 2, "y": 2 },
|
||||||
{ "time": 1.3333, "x": 1, "y": 1 }
|
{ "time": 1.3333, "x": 1, "y": 1 }
|
||||||
],
|
],
|
||||||
"shear": [
|
"shear": [
|
||||||
{ "time": 0, "x": 0, "y": 0 },
|
{ "time": 0, "x": 0, "y": 0 },
|
||||||
{ "time": 0.6666, "x": 23.39, "y": 0 },
|
{ "time": 0.6667, "x": 23.4, "y": 0 },
|
||||||
{ "time": 1.3333, "x": 0, "y": 0 }
|
{ "time": 1.3333, "x": 0, "y": 0 }
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@ -219,7 +212,7 @@
|
|||||||
"transform": {
|
"transform": {
|
||||||
"transformconstraint": [
|
"transformconstraint": [
|
||||||
{ "time": 0, "rotateMix": 0.509, "translateMix": 0.509, "scaleMix": 0.509, "shearMix": 0.509 },
|
{ "time": 0, "rotateMix": 0.509, "translateMix": 0.509, "scaleMix": 0.509, "shearMix": 0.509 },
|
||||||
{ "time": 0.6666 },
|
{ "time": 0.6667 },
|
||||||
{ "time": 1.3333, "rotateMix": 0.5, "translateMix": 0.5, "scaleMix": 0.5, "shearMix": 0.5 }
|
{ "time": 1.3333, "rotateMix": 0.5, "translateMix": 0.5, "scaleMix": 0.5, "shearMix": 0.5 }
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@ -230,11 +223,11 @@
|
|||||||
{ "time": 1.3333, "position": 1 }
|
{ "time": 1.3333, "position": 1 }
|
||||||
],
|
],
|
||||||
"spacing": [
|
"spacing": [
|
||||||
{ "time": 0, "spacing": 40.0999 },
|
{ "time": 0, "spacing": 40.1 },
|
||||||
{ "time": 1.3333 }
|
{ "time": 1.3333 }
|
||||||
],
|
],
|
||||||
"mix": [
|
"mix": [
|
||||||
{ "time": 0.6666, "rotateMix": 0.4729, "translateMix": 0.4729 },
|
{ "time": 0.6667, "rotateMix": 0.473, "translateMix": 0.473 },
|
||||||
{ "time": 1.3333 }
|
{ "time": 1.3333 }
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@ -245,8 +238,8 @@
|
|||||||
"images/spine": [
|
"images/spine": [
|
||||||
{ "time": 0 },
|
{ "time": 0 },
|
||||||
{
|
{
|
||||||
"time": 0.6666,
|
"time": 0.6667,
|
||||||
"vertices": [ 43.09783, 58.11693, 0, 0, 0, 0, -0.653, -57.46398, -50.93395, -47.01593, -43.098, -24.81398, -43.098, -24.81399, -1.0E-5, 1.0E-5, 0, 1.0E-5, 43.09783, 58.11695, 0, 0, 43.09783, 58.11693, 1.0E-5, -1.0E-5, 0, 0, -43.09797, -24.81399, 0, 1.0E-5, 0, 0, 0, 0, 43.09783, 58.11694, 43.09783, 58.11693 ]
|
"vertices": [ 43.09784, 58.11694, 0, 0, 1.0E-5, 0, -0.65301, -57.46399, -50.93396, -47.01593, -43.09801, -24.81399, -43.09801, -24.814, -2.0E-5, 1.0E-5, 1.0E-5, 1.0E-5, 43.09784, 58.11695, 0, 0, 43.09784, 58.11694, 1.0E-5, -1.0E-5, -1.0E-5, 0, -43.09798, -24.81399, 0, 2.0E-5, 0, -1.0E-5, 0, 0, 43.09784, 58.11694, 43.09784, 58.11694 ]
|
||||||
},
|
},
|
||||||
{ "time": 1.3333 }
|
{ "time": 1.3333 }
|
||||||
]
|
]
|
||||||
@ -257,16 +250,16 @@
|
|||||||
{
|
{
|
||||||
"time": 0.3333,
|
"time": 0.3333,
|
||||||
"offset": 4,
|
"offset": 4,
|
||||||
"vertices": [ -9.45232, 83.51329, -3.90007, 44.76634, -3.90007, 44.76634, -3.90007, 44.76634, 0, 0, 0, 0, 0, 0, 0, 0, 5.15667, -29.57762, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3.90007, 44.76634 ]
|
"vertices": [ -9.45233, 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.6667 },
|
||||||
{
|
{
|
||||||
"time": 0.6679,
|
"time": 0.6679,
|
||||||
"vertices": [ -1.21159, -14.52715, -2.76092, -7.75683, -4.30998, -0.98668, 2.38385, 9.78289, -1.56903, 5.49315, -2.93443, 6.75127, -4.3001, 8.00932, -5.66552, 9.2677, -7.031, 10.52575, -3.07855, 14.8156, 4.30986, 0.98589, 5.85906, -5.78435, 7.40825, -12.55461, 5.25317, -13.04796, 3.09832, -13.54082, 0.94322, -14.03411, -0.60594, -7.26379, 1.54907, -6.77055, 3.70422, -6.27746, -2.15495, -0.49345, 0, -3.0E-4, 2.15495, 0.49272, 1.01812, 11.04131, -0.34709, 12.29895, -1.71312, 13.557 ]
|
"vertices": [ -1.2116, -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.30987, 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.15496, -0.49346, 0, -3.0E-4, 2.15496, 0.49273, 1.01812, 11.04132, -0.3471, 12.29895, -1.71313, 13.557 ]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"time": 1.3333,
|
"time": 1.3333,
|
||||||
"vertices": [ -10.57341, 25.16797, -9.16716, 14.48486, -7.76073, 3.80211, 131.25482, 21.05285, 128.23181, -0.04534, 121.51611, 0.91667, 114.80023, 1.8789, 108.08458, 2.84123, 101.36889, 3.80315, 104.39154, 24.90191, -21.3623, 2.0117, -22.76855, 12.69433, -24.17505, 23.37718, -20.7747, 23.82476, -17.37413, 24.27276, -13.97393, 24.72009, -12.56768, 14.03752, -15.96788, 13.58977, -19.36809, 13.14214, -11.16094, 3.35454, -14.56134, 2.90704, -17.96166, 2.45921, 124.53894, 22.01538, 117.82335, 22.97705, 111.10717, 23.93932 ]
|
"vertices": [ -10.57342, 25.16797, -9.16717, 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.3681, 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 ]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@ -275,7 +268,7 @@
|
|||||||
"drawOrder": [
|
"drawOrder": [
|
||||||
{ "time": 0 },
|
{ "time": 0 },
|
||||||
{
|
{
|
||||||
"time": 0.6666,
|
"time": 0.6667,
|
||||||
"offsets": [
|
"offsets": [
|
||||||
{ "slot": "draworder2", "offset": 1 }
|
{ "slot": "draworder2", "offset": 1 }
|
||||||
]
|
]
|
||||||
|
|||||||
Binary file not shown.
File diff suppressed because one or more lines are too long
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large
Load Diff
@ -1,2 +1,4 @@
|
|||||||
eclipse.preferences.version=1
|
eclipse.preferences.version=1
|
||||||
|
encoding//src/spine/animation/TwoColorTimeline.as=UTF-8
|
||||||
|
encoding//src/spine/attachments/PointAttachment.as=UTF-8
|
||||||
encoding/<project>=UTF-8
|
encoding/<project>=UTF-8
|
||||||
|
|||||||
@ -53,12 +53,12 @@ public class Bone implements Updatable {
|
|||||||
public var ashearY:Number;
|
public var ashearY:Number;
|
||||||
public var appliedValid:Boolean;
|
public var appliedValid:Boolean;
|
||||||
|
|
||||||
internal var _a:Number;
|
public var a:Number;
|
||||||
internal var _b:Number;
|
public var b:Number;
|
||||||
internal var _c:Number;
|
public var c:Number;
|
||||||
internal var _d:Number;
|
public var d:Number;
|
||||||
internal var _worldX:Number;
|
public var worldX:Number;
|
||||||
internal var _worldY:Number;
|
public var worldY:Number;
|
||||||
|
|
||||||
internal var _sorted:Boolean;
|
internal var _sorted:Boolean;
|
||||||
|
|
||||||
@ -115,38 +115,38 @@ public class Bone implements Updatable {
|
|||||||
lc = -lc;
|
lc = -lc;
|
||||||
ld = -ld;
|
ld = -ld;
|
||||||
}
|
}
|
||||||
_a = la;
|
this.a = la;
|
||||||
_b = lb;
|
this.b = lb;
|
||||||
_c = lc;
|
this.c = lc;
|
||||||
_d = ld;
|
this.d = ld;
|
||||||
_worldX = x + skeleton.x;
|
worldX = x + skeleton.x;
|
||||||
_worldY = y + skeleton.y;
|
worldY = y + skeleton.y;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
var pa:Number = parent._a, pb:Number = parent._b, pc:Number = parent._c, pd:Number = parent._d;
|
var pa:Number = parent.a, pb:Number = parent.b, pc:Number = parent.c, pd:Number = parent.d;
|
||||||
_worldX = pa * x + pb * y + parent._worldX;
|
worldX = pa * x + pb * y + parent.worldX;
|
||||||
_worldY = pc * x + pd * y + parent._worldY;
|
worldY = pc * x + pd * y + parent.worldY;
|
||||||
|
|
||||||
switch (_data.transformMode) {
|
switch (this.data.transformMode) {
|
||||||
case TransformMode.normal: {
|
case TransformMode.normal: {
|
||||||
rotationY = rotation + 90 + shearY;
|
rotationY = rotation + 90 + shearY;
|
||||||
la = MathUtils.cosDeg(rotation + shearX) * scaleX;
|
la = MathUtils.cosDeg(rotation + shearX) * scaleX;
|
||||||
lb = MathUtils.cosDeg(rotationY) * scaleY;
|
lb = MathUtils.cosDeg(rotationY) * scaleY;
|
||||||
lc = MathUtils.sinDeg(rotation + shearX) * scaleX;
|
lc = MathUtils.sinDeg(rotation + shearX) * scaleX;
|
||||||
ld = MathUtils.sinDeg(rotationY) * scaleY;
|
ld = MathUtils.sinDeg(rotationY) * scaleY;
|
||||||
_a = pa * la + pb * lc;
|
this.a = pa * la + pb * lc;
|
||||||
_b = pa * lb + pb * ld;
|
this.b = pa * lb + pb * ld;
|
||||||
_c = pc * la + pd * lc;
|
this.c = pc * la + pd * lc;
|
||||||
_d = pc * lb + pd * ld;
|
this.d = pc * lb + pd * ld;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
case TransformMode.onlyTranslation: {
|
case TransformMode.onlyTranslation: {
|
||||||
rotationY = rotation + 90 + shearY;
|
rotationY = rotation + 90 + shearY;
|
||||||
_a = MathUtils.cosDeg(rotation + shearX) * scaleX;
|
this.a = MathUtils.cosDeg(rotation + shearX) * scaleX;
|
||||||
_b = MathUtils.cosDeg(rotationY) * scaleY;
|
this.b = MathUtils.cosDeg(rotationY) * scaleY;
|
||||||
_c = MathUtils.sinDeg(rotation + shearX) * scaleX;
|
this.c = MathUtils.sinDeg(rotation + shearX) * scaleX;
|
||||||
_d = MathUtils.sinDeg(rotationY) * scaleY;
|
this.d = MathUtils.sinDeg(rotationY) * scaleY;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case TransformMode.noRotationOrReflection: {
|
case TransformMode.noRotationOrReflection: {
|
||||||
@ -168,10 +168,10 @@ public class Bone implements Updatable {
|
|||||||
lb = MathUtils.cosDeg(ry) * scaleY;
|
lb = MathUtils.cosDeg(ry) * scaleY;
|
||||||
lc = MathUtils.sinDeg(rx) * scaleX;
|
lc = MathUtils.sinDeg(rx) * scaleX;
|
||||||
ld = MathUtils.sinDeg(ry) * scaleY;
|
ld = MathUtils.sinDeg(ry) * scaleY;
|
||||||
_a = pa * la - pb * lc;
|
this.a = pa * la - pb * lc;
|
||||||
_b = pa * lb - pb * ld;
|
this.b = pa * lb - pb * ld;
|
||||||
_c = pc * la + pd * lc;
|
this.c = pc * la + pd * lc;
|
||||||
_d = pc * lb + pd * ld;
|
this.d = pc * lb + pd * ld;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case TransformMode.noScale:
|
case TransformMode.noScale:
|
||||||
@ -192,35 +192,35 @@ public class Bone implements Updatable {
|
|||||||
lb = MathUtils.cosDeg(90 + shearY) * scaleY;
|
lb = MathUtils.cosDeg(90 + shearY) * scaleY;
|
||||||
lc = MathUtils.sinDeg(shearX) * scaleX;
|
lc = MathUtils.sinDeg(shearX) * scaleX;
|
||||||
ld = MathUtils.sinDeg(90 + shearY) * scaleY;
|
ld = MathUtils.sinDeg(90 + shearY) * scaleY;
|
||||||
_a = za * la + zb * lc;
|
this.a = za * la + zb * lc;
|
||||||
_b = za * lb + zb * ld;
|
this.b = za * lb + zb * ld;
|
||||||
_c = zc * la + zd * lc;
|
this.c = zc * la + zd * lc;
|
||||||
_d = zc * lb + zd * ld;
|
this.d = zc * lb + zd * ld;
|
||||||
if (_data.transformMode != TransformMode.noScaleOrReflection ? pa * pd - pb * pc < 0 : skeleton.flipX != skeleton.flipY) {
|
if (this.data.transformMode != TransformMode.noScaleOrReflection ? pa * pd - pb * pc < 0 : skeleton.flipX != skeleton.flipY) {
|
||||||
_b = -_b;
|
this.b = -this.b;
|
||||||
_d = -_d;
|
this.d = -this.d;
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (_skeleton.flipX) {
|
if (_skeleton.flipX) {
|
||||||
_a = -_a;
|
this.a = -this.a;
|
||||||
_b = -_b;
|
this.b = -this.b;
|
||||||
}
|
}
|
||||||
if (_skeleton.flipY != yDown) {
|
if (_skeleton.flipY != yDown) {
|
||||||
_c = -_c;
|
this.c = -this.c;
|
||||||
_d = -_d;
|
this.d = -this.d;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public function setToSetupPose () : void {
|
public function setToSetupPose () : void {
|
||||||
x = _data.x;
|
x = this.data.x;
|
||||||
y = _data.y;
|
y = this.data.y;
|
||||||
rotation = _data.rotation;
|
rotation = this.data.rotation;
|
||||||
scaleX = _data.scaleX;
|
scaleX = this.data.scaleX;
|
||||||
scaleY = _data.scaleY;
|
scaleY = this.data.scaleY;
|
||||||
shearX = _data.shearX;
|
shearX = this.data.shearX;
|
||||||
shearY = _data.shearY;
|
shearY = this.data.shearY;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function get data () : BoneData {
|
public function get data () : BoneData {
|
||||||
@ -237,70 +237,22 @@ public class Bone implements Updatable {
|
|||||||
|
|
||||||
public function get children () : Vector.<Bone> {;
|
public function get children () : Vector.<Bone> {;
|
||||||
return _children;
|
return _children;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function get a () : Number {
|
|
||||||
return _a;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function get b () : Number {
|
|
||||||
return _b;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function get c () : Number {
|
|
||||||
return _c;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function get d () : Number {
|
|
||||||
return _d;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function get worldX () : Number {
|
|
||||||
return _worldX;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function get worldY () : Number {
|
|
||||||
return _worldY;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function get worldRotationX () : Number {
|
public function get worldRotationX () : Number {
|
||||||
return Math.atan2(_c, _a) * MathUtils.radDeg;
|
return Math.atan2(this.c, this.a) * MathUtils.radDeg;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function get worldRotationY () : Number {
|
public function get worldRotationY () : Number {
|
||||||
return Math.atan2(_d, _b) * MathUtils.radDeg;
|
return Math.atan2(this.d, this.b) * MathUtils.radDeg;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function get worldScaleX () : Number {
|
public function get worldScaleX () : Number {
|
||||||
return Math.sqrt(_a * _a + _c * _c);
|
return Math.sqrt(this.a * this.a + this.c * this.c);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function get worldScaleY () : Number {
|
public function get worldScaleY () : Number {
|
||||||
return Math.sqrt(_b * _b + _d * _d);
|
return Math.sqrt(this.b * this.b + this.d * this.d);
|
||||||
}
|
|
||||||
|
|
||||||
public function worldToLocalRotationX () : Number {
|
|
||||||
var parent:Bone = _parent;
|
|
||||||
if (parent == null) return arotation;
|
|
||||||
var pa:Number = parent.a, pb:Number = parent.b, pc:Number = parent.c, pd:Number = parent.d, a:Number = this.a, c:Number = this.c;
|
|
||||||
return Math.atan2(pa * c - pc * a, pd * a - pb * c) * MathUtils.radDeg;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function worldToLocalRotationY () : Number {
|
|
||||||
var parent:Bone = _parent;
|
|
||||||
if (parent == null) return arotation;
|
|
||||||
var pa:Number = parent.a, pb:Number = parent.b, pc:Number = parent.c, pd:Number = parent.d, b:Number = this.b, d:Number = this.d;
|
|
||||||
return Math.atan2(pa * d - pc * b, pd * b - pb * d) * MathUtils.radDeg;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function rotateWorld (degrees:Number) : void {
|
|
||||||
var a:Number = this.a, b:Number = this.b, c:Number = this.c, d:Number = this.d;
|
|
||||||
var cos:Number = MathUtils.cosDeg(degrees), sin:Number = MathUtils.sinDeg(degrees);
|
|
||||||
this._a = cos * a - sin * c;
|
|
||||||
this._b = cos * b - sin * d;
|
|
||||||
this._c = sin * a + cos * c;
|
|
||||||
this._d = sin * b + cos * d;
|
|
||||||
this.appliedValid = false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Computes the individual applied transform values from the world transform. This can be useful to perform processing using
|
/** Computes the individual applied transform values from the world transform. This can be useful to perform processing using
|
||||||
@ -349,21 +301,41 @@ public class Bone implements Updatable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public function worldToLocal (world:Vector.<Number>) : void {
|
public function worldToLocal (world:Vector.<Number>) : void {
|
||||||
var a:Number = _a, b:Number = _b, c:Number = _c, d:Number = _d;
|
var a:Number = this.a, b:Number = this.b, c:Number = this.c, d:Number = this.d;
|
||||||
var invDet:Number = 1 / (a * d - b * c);
|
var invDet:Number = 1 / (a * d - b * c);
|
||||||
var x:Number = world[0] - _worldX, y:Number = world[1] - _worldY;
|
var x:Number = world[0] - this.worldX, y:Number = world[1] - this.worldY;
|
||||||
world[0] = (x * d * invDet - y * b * invDet);
|
world[0] = (x * d * invDet - y * b * invDet);
|
||||||
world[1] = (y * a * invDet - x * c * invDet);
|
world[1] = (y * a * invDet - x * c * invDet);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function localToWorld (local:Vector.<Number>) : void {
|
public function localToWorld (local:Vector.<Number>) : void {
|
||||||
var localX:Number = local[0], localY:Number = local[1];
|
var localX:Number = local[0], localY:Number = local[1];
|
||||||
local[0] = localX * _a + localY * _b + _worldX;
|
local[0] = localX * this.a + localY * this.b + this.worldX;
|
||||||
local[1] = localX * _c + localY * _d + _worldY;
|
local[1] = localX * this.c + localY * this.d + this.worldY;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function worldToLocalRotation (worldRotation:Number) : Number {
|
||||||
|
var sin:Number = MathUtils.sinDeg(worldRotation), cos:Number = MathUtils.cosDeg(worldRotation);
|
||||||
|
return Math.atan2(this.a * sin - this.c * cos, this.d * cos - this.b * sin) * MathUtils.radDeg;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function localToWorldRotation (localRotation:Number) : Number {
|
||||||
|
var sin:Number = MathUtils.sinDeg(localRotation), cos:Number = MathUtils.cosDeg(localRotation);
|
||||||
|
return Math.atan2(cos * this.c + sin * this.d, cos * this.a + sin * this.b) * MathUtils.radDeg;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function rotateWorld (degrees:Number) : void {
|
||||||
|
var a:Number = this.a, b:Number = this.b, c:Number = this.c, d:Number = this.d;
|
||||||
|
var cos:Number = MathUtils.cosDeg(degrees), sin:Number = MathUtils.sinDeg(degrees);
|
||||||
|
this.a = cos * a - sin * c;
|
||||||
|
this.b = cos * b - sin * d;
|
||||||
|
this.c = sin * a + cos * c;
|
||||||
|
this.d = sin * b + cos * d;
|
||||||
|
this.appliedValid = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function toString () : String {
|
public function toString () : String {
|
||||||
return _data._name;
|
return this.data._name;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
101
spine-as3/spine-as3/src/spine/Color.as
Normal file
101
spine-as3/spine-as3/src/spine/Color.as
Normal file
@ -0,0 +1,101 @@
|
|||||||
|
/******************************************************************************
|
||||||
|
* Spine Runtimes Software License v2.5
|
||||||
|
*
|
||||||
|
* Copyright (c) 2013-2016, 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 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 develop new applications using the Spine Runtimes or otherwise
|
||||||
|
* create derivative works or improvements of the Spine Runtimes 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, BUSINESS INTERRUPTION, OR LOSS OF
|
||||||
|
* USE, DATA, OR PROFITS) 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 spine {
|
||||||
|
public class Color {
|
||||||
|
public static var WHITE:Color = new Color(1, 1, 1, 1);
|
||||||
|
public static var RED:Color = new Color(1, 0, 0, 1);
|
||||||
|
public static var GREEN:Color = new Color(0, 1, 0, 1);
|
||||||
|
public static var BLUE:Color = new Color(0, 0, 1, 1);
|
||||||
|
public static var MAGENTA:Color = new Color(1, 0, 1, 1);
|
||||||
|
|
||||||
|
public var r:Number = 0;
|
||||||
|
public var g:Number = 0;
|
||||||
|
public var b:Number = 0;
|
||||||
|
public var a:Number = 0;
|
||||||
|
|
||||||
|
public function Color (r:Number, g:Number, b:Number, a:Number = 0) {
|
||||||
|
this.r = r;
|
||||||
|
this.g = g;
|
||||||
|
this.b = b;
|
||||||
|
this.a = a;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setFrom (r:Number, g:Number, b:Number, a:Number): Color {
|
||||||
|
this.r = r;
|
||||||
|
this.g = g;
|
||||||
|
this.b = b;
|
||||||
|
this.a = a;
|
||||||
|
this.clamp();
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setFromColor (c:Color): Color{
|
||||||
|
this.r = c.r;
|
||||||
|
this.g = c.g;
|
||||||
|
this.b = c.b;
|
||||||
|
this.a = c.a;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setFromString (hex:String): Color {
|
||||||
|
hex = hex.charAt(0) == '#' ? hex.substr(1) : hex;
|
||||||
|
this.r = parseInt(hex.substr(0, 2), 16) / 255.0;
|
||||||
|
this.g = parseInt(hex.substr(2, 2), 16) / 255.0;
|
||||||
|
this.b = parseInt(hex.substr(4, 2), 16) / 255.0;
|
||||||
|
this.a = (hex.length != 8 ? 255 : parseInt(hex.substr(6, 2), 16)) / 255.0;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function add (r:Number, g:Number, b:Number, a:Number): Color {
|
||||||
|
this.r += r;
|
||||||
|
this.g += g;
|
||||||
|
this.b += b;
|
||||||
|
this.a += a;
|
||||||
|
this.clamp();
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function clamp (): Color {
|
||||||
|
if (this.r < 0) this.r = 0;
|
||||||
|
else if (this.r > 1) this.r = 1;
|
||||||
|
|
||||||
|
if (this.g < 0) this.g = 0;
|
||||||
|
else if (this.g > 1) this.g = 1;
|
||||||
|
|
||||||
|
if (this.b < 0) this.b = 0;
|
||||||
|
else if (this.b > 1) this.b = 1;
|
||||||
|
|
||||||
|
if (this.a < 0) this.a = 0;
|
||||||
|
else if (this.a > 1) this.a = 1;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -57,10 +57,10 @@ public class IkConstraint implements Constraint {
|
|||||||
public function update () : void {
|
public function update () : void {
|
||||||
switch (bones.length) {
|
switch (bones.length) {
|
||||||
case 1:
|
case 1:
|
||||||
apply1(bones[0], target._worldX, target._worldY, mix);
|
apply1(bones[0], target.worldX, target.worldY, mix);
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
apply2(bones[0], bones[1], target._worldX, target._worldY, bendDirection, mix);
|
apply2(bones[0], bones[1], target.worldX, target.worldY, bendDirection, mix);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -31,6 +31,8 @@
|
|||||||
package spine {
|
package spine {
|
||||||
|
|
||||||
public class MathUtils {
|
public class MathUtils {
|
||||||
|
static public var PI:Number = Math.PI;
|
||||||
|
static public var PI2:Number = Math.PI * 2;
|
||||||
static public var radDeg:Number = 180 / Math.PI;
|
static public var radDeg:Number = 180 / Math.PI;
|
||||||
static public var degRad:Number = Math.PI / 180;
|
static public var degRad:Number = Math.PI / 180;
|
||||||
|
|
||||||
|
|||||||
@ -89,10 +89,10 @@ public class PathConstraint implements Constraint {
|
|||||||
}
|
}
|
||||||
for (var i:int = 0, n:int = spacesCount - 1; i < n;) {
|
for (var i:int = 0, n:int = spacesCount - 1; i < n;) {
|
||||||
var bone:Bone = bones[i];
|
var bone:Bone = bones[i];
|
||||||
var length:Number = bone.data.length, x:Number = length * bone.a, y:Number = length * bone.c;
|
var setupLength:Number = bone.data.length, x:Number = setupLength * bone.a, y:Number = setupLength * bone.c;
|
||||||
length = Math.sqrt(x * x + y * y);
|
var length:Number = Math.sqrt(x * x + y * y);
|
||||||
if (scale) lengths[i] = length;
|
if (scale) lengths[i] = length;
|
||||||
spaces[++i] = lengthSpacing ? Math.max(0, length + spacing) : spacing;
|
spaces[++i] = (lengthSpacing ? setupLength + spacing : spacing) * length / setupLength;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
for (i = 1; i < spacesCount; i++)
|
for (i = 1; i < spacesCount; i++)
|
||||||
@ -113,15 +113,15 @@ public class PathConstraint implements Constraint {
|
|||||||
var p:Number;
|
var p:Number;
|
||||||
for (i = 0, p = 3; i < boneCount; i++, p += 3) {
|
for (i = 0, p = 3; i < boneCount; i++, p += 3) {
|
||||||
bone = bones[i];
|
bone = bones[i];
|
||||||
bone._worldX += (boneX - bone.worldX) * translateMix;
|
bone.worldX += (boneX - bone.worldX) * translateMix;
|
||||||
bone._worldY += (boneY - bone.worldY) * translateMix;
|
bone.worldY += (boneY - bone.worldY) * translateMix;
|
||||||
x = positions[p]; y = positions[p + 1]; var dx:Number = x - boneX, dy:Number = y - boneY;
|
x = positions[p]; y = positions[p + 1]; var dx:Number = x - boneX, dy:Number = y - boneY;
|
||||||
if (scale) {
|
if (scale) {
|
||||||
length = lengths[i];
|
length = lengths[i];
|
||||||
if (length != 0) {
|
if (length != 0) {
|
||||||
var s:Number = (Math.sqrt(dx * dx + dy * dy) / length - 1) * rotateMix + 1;
|
var s:Number = (Math.sqrt(dx * dx + dy * dy) / length - 1) * rotateMix + 1;
|
||||||
bone._a *= s;
|
bone.a *= s;
|
||||||
bone._c *= s;
|
bone.c *= s;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
boneX = x;
|
boneX = x;
|
||||||
@ -151,10 +151,10 @@ public class PathConstraint implements Constraint {
|
|||||||
r *= rotateMix;
|
r *= rotateMix;
|
||||||
cos = Math.cos(r);
|
cos = Math.cos(r);
|
||||||
sin = Math.sin(r);
|
sin = Math.sin(r);
|
||||||
bone._a = cos * a - sin * c;
|
bone.a = cos * a - sin * c;
|
||||||
bone._b = cos * b - sin * d;
|
bone.b = cos * b - sin * d;
|
||||||
bone._c = sin * a + cos * c;
|
bone.c = sin * a + cos * c;
|
||||||
bone._d = sin * b + cos * d;
|
bone.d = sin * b + cos * d;
|
||||||
}
|
}
|
||||||
bone.appliedValid = false;
|
bone.appliedValid = false;
|
||||||
}
|
}
|
||||||
@ -194,14 +194,14 @@ public class PathConstraint implements Constraint {
|
|||||||
} else if (p < 0) {
|
} else if (p < 0) {
|
||||||
if (prevCurve != BEFORE) {
|
if (prevCurve != BEFORE) {
|
||||||
prevCurve = BEFORE;
|
prevCurve = BEFORE;
|
||||||
path.computeWorldVertices2(target, 2, 4, world, 0);
|
path.computeWorldVertices(target, 2, 4, world, 0, 2);
|
||||||
}
|
}
|
||||||
addBeforePosition(p, world, 0, out, o);
|
addBeforePosition(p, world, 0, out, o);
|
||||||
continue;
|
continue;
|
||||||
} else if (p > pathLength) {
|
} else if (p > pathLength) {
|
||||||
if (prevCurve != AFTER) {
|
if (prevCurve != AFTER) {
|
||||||
prevCurve = AFTER;
|
prevCurve = AFTER;
|
||||||
path.computeWorldVertices2(target, verticesLength - 6, 4, world, 0);
|
path.computeWorldVertices(target, verticesLength - 6, 4, world, 0, 2);
|
||||||
}
|
}
|
||||||
addAfterPosition(p - pathLength, world, 0, out, o);
|
addAfterPosition(p - pathLength, world, 0, out, o);
|
||||||
continue;
|
continue;
|
||||||
@ -222,10 +222,10 @@ public class PathConstraint implements Constraint {
|
|||||||
if (curve != prevCurve) {
|
if (curve != prevCurve) {
|
||||||
prevCurve = curve;
|
prevCurve = curve;
|
||||||
if (closed && curve == curveCount) {
|
if (closed && curve == curveCount) {
|
||||||
path.computeWorldVertices2(target, verticesLength - 4, 4, world, 0);
|
path.computeWorldVertices(target, verticesLength - 4, 4, world, 0, 2);
|
||||||
path.computeWorldVertices2(target, 0, 4, world, 4);
|
path.computeWorldVertices(target, 0, 4, world, 4, 2);
|
||||||
} else
|
} else
|
||||||
path.computeWorldVertices2(target, curve * 6 + 2, 8, world, 0);
|
path.computeWorldVertices(target, curve * 6 + 2, 8, world, 0, 2);
|
||||||
}
|
}
|
||||||
addCurvePosition(p, world[0], world[1], world[2], world[3], world[4], world[5], world[6], world[7], out, o,
|
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));
|
tangents || (i > 0 && space == 0));
|
||||||
@ -238,8 +238,8 @@ public class PathConstraint implements Constraint {
|
|||||||
verticesLength += 2;
|
verticesLength += 2;
|
||||||
this._world.length = verticesLength;
|
this._world.length = verticesLength;
|
||||||
world = this._world;
|
world = this._world;
|
||||||
path.computeWorldVertices2(target, 2, verticesLength - 4, world, 0);
|
path.computeWorldVertices(target, 2, verticesLength - 4, world, 0, 2);
|
||||||
path.computeWorldVertices2(target, 0, 2, world, verticesLength - 4);
|
path.computeWorldVertices(target, 0, 2, world, verticesLength - 4, 2);
|
||||||
world[verticesLength - 2] = world[0];
|
world[verticesLength - 2] = world[0];
|
||||||
world[verticesLength - 1] = world[1];
|
world[verticesLength - 1] = world[1];
|
||||||
} else {
|
} else {
|
||||||
@ -247,7 +247,7 @@ public class PathConstraint implements Constraint {
|
|||||||
verticesLength -= 4;
|
verticesLength -= 4;
|
||||||
this._world.length = verticesLength;
|
this._world.length = verticesLength;
|
||||||
world = this._world;
|
world = this._world;
|
||||||
path.computeWorldVertices2(target, 2, verticesLength, world, 0);
|
path.computeWorldVertices(target, 2, verticesLength, world, 0, 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Curve lengths.
|
// Curve lengths.
|
||||||
|
|||||||
@ -29,6 +29,8 @@
|
|||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
|
|
||||||
package spine {
|
package spine {
|
||||||
|
import spine.attachments.MeshAttachment;
|
||||||
|
import spine.attachments.RegionAttachment;
|
||||||
import flash.utils.Dictionary;
|
import flash.utils.Dictionary;
|
||||||
import spine.attachments.PathAttachment;
|
import spine.attachments.PathAttachment;
|
||||||
import spine.attachments.Attachment;
|
import spine.attachments.Attachment;
|
||||||
@ -44,7 +46,7 @@ public class Skeleton {
|
|||||||
private var _updateCache:Vector.<Updatable> = new Vector.<Updatable>();
|
private var _updateCache:Vector.<Updatable> = new Vector.<Updatable>();
|
||||||
private var _updateCacheReset:Vector.<Bone> = new Vector.<Bone>();
|
private var _updateCacheReset:Vector.<Bone> = new Vector.<Bone>();
|
||||||
private var _skin:Skin;
|
private var _skin:Skin;
|
||||||
public var r:Number = 1, g:Number = 1, b:Number = 1, a:Number = 1;
|
public var color:Color = new Color(1, 1, 1, 1);
|
||||||
public var time:Number = 0;
|
public var time:Number = 0;
|
||||||
public var flipX:Boolean, flipY:Boolean;
|
public var flipX:Boolean, flipY:Boolean;
|
||||||
public var x:Number = 0, y:Number = 0;
|
public var x:Number = 0, y:Number = 0;
|
||||||
@ -96,6 +98,7 @@ public class Skeleton {
|
|||||||
public function updateCache () : void {
|
public function updateCache () : void {
|
||||||
var updateCache:Vector.<Updatable> = this._updateCache;
|
var updateCache:Vector.<Updatable> = this._updateCache;
|
||||||
updateCache.length = 0;
|
updateCache.length = 0;
|
||||||
|
this._updateCacheReset.length = 0;
|
||||||
|
|
||||||
var bones:Vector.<Bone> = this.bones;
|
var bones:Vector.<Bone> = this.bones;
|
||||||
var i:Number = 0;
|
var i:Number = 0;
|
||||||
@ -166,25 +169,25 @@ public class Skeleton {
|
|||||||
if (skin != null) sortPathConstraintAttachment(skin, slotIndex, slotBone);
|
if (skin != null) sortPathConstraintAttachment(skin, slotIndex, slotBone);
|
||||||
if (data.defaultSkin != null && data.defaultSkin != skin)
|
if (data.defaultSkin != null && data.defaultSkin != skin)
|
||||||
sortPathConstraintAttachment(data.defaultSkin, slotIndex, slotBone);
|
sortPathConstraintAttachment(data.defaultSkin, slotIndex, slotBone);
|
||||||
var ii:Number = 0;
|
var i:Number = 0;
|
||||||
var nn:Number = 0;
|
var n:Number = 0;
|
||||||
for (ii = 0, nn = data.skins.length; ii < nn; ii++)
|
for (i = 0, n = data.skins.length; i < n; i++)
|
||||||
sortPathConstraintAttachment(data.skins[ii], slotIndex, slotBone);
|
sortPathConstraintAttachment(data.skins[i], slotIndex, slotBone);
|
||||||
|
|
||||||
var attachment:Attachment = slot.attachment;
|
var attachment:Attachment = slot.attachment;
|
||||||
if (attachment is PathAttachment) sortPathConstraintAttachment2(attachment, slotBone);
|
if (attachment is PathAttachment) sortPathConstraintAttachment2(attachment, slotBone);
|
||||||
|
|
||||||
var constrained:Vector.<Bone> = constraint.bones;
|
var constrained:Vector.<Bone> = constraint.bones;
|
||||||
var boneCount:Number = constrained.length;
|
var boneCount:Number = constrained.length;
|
||||||
for (ii = 0; ii < boneCount; ii++)
|
for (i = 0; i < boneCount; i++)
|
||||||
sortBone(constrained[ii]);
|
sortBone(constrained[i]);
|
||||||
|
|
||||||
_updateCache.push(constraint);
|
_updateCache.push(constraint);
|
||||||
|
|
||||||
for (ii = 0; ii < boneCount; ii++)
|
for (i = 0; i < boneCount; i++)
|
||||||
sortReset(constrained[ii].children);
|
sortReset(constrained[i].children);
|
||||||
for (ii = 0; ii < boneCount; ii++)
|
for (i = 0; i < boneCount; i++)
|
||||||
constrained[ii]._sorted = true;
|
constrained[i]._sorted = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
private function sortTransformConstraint (constraint:TransformConstraint): void {
|
private function sortTransformConstraint (constraint:TransformConstraint): void {
|
||||||
@ -192,16 +195,24 @@ public class Skeleton {
|
|||||||
|
|
||||||
var constrained:Vector.<Bone> = constraint.bones;
|
var constrained:Vector.<Bone> = constraint.bones;
|
||||||
var boneCount:Number = constrained.length;
|
var boneCount:Number = constrained.length;
|
||||||
var ii:Number = 0;
|
var i:Number = 0;
|
||||||
for (ii = 0; ii < boneCount; ii++)
|
if (constraint.data.local) {
|
||||||
sortBone(constrained[ii]);
|
for (i = 0; i < boneCount; i++) {
|
||||||
|
var child:Bone = constrained[constrained.length - 1];
|
||||||
|
sortBone(child.parent);
|
||||||
|
if (!(_updateCache.indexOf(child) > -1)) _updateCacheReset.push(child);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
for (i = 0; i < boneCount; i++)
|
||||||
|
sortBone(constrained[i]);
|
||||||
|
}
|
||||||
|
|
||||||
_updateCache.push(constraint);
|
_updateCache.push(constraint);
|
||||||
|
|
||||||
for (ii = 0; ii < boneCount; ii++)
|
for (i = 0; i < boneCount; i++)
|
||||||
sortReset(constrained[ii].children);
|
sortReset(constrained[i].children);
|
||||||
for (ii = 0; ii < boneCount; ii++)
|
for (i = 0; i < boneCount; i++)
|
||||||
constrained[ii]._sorted = true;
|
constrained[i]._sorted = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
private function sortPathConstraintAttachment (skin:Skin, slotIndex:int, slotBone:Bone) : void {
|
private function sortPathConstraintAttachment (skin:Skin, slotIndex:int, slotBone:Bone) : void {
|
||||||
@ -463,6 +474,44 @@ public class Skeleton {
|
|||||||
public function toString () : String {
|
public function toString () : String {
|
||||||
return _data.name != null ? _data.name : super.toString();
|
return _data.name != null ? _data.name : super.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function getBounds (offset: Vector.<Number>, size: Vector.<Number>, temp: Vector.<Number>) : void {
|
||||||
|
if (offset == null) throw new ArgumentError("offset cannot be null.");
|
||||||
|
if (size == null) throw new ArgumentError("size cannot be null.");
|
||||||
|
var drawOrder:Vector.<Slot> = this.drawOrder;
|
||||||
|
var minX:Number = Number.POSITIVE_INFINITY, minY:Number = Number.POSITIVE_INFINITY, maxX:Number = Number.NEGATIVE_INFINITY, maxY:Number = Number.NEGATIVE_INFINITY;
|
||||||
|
for (var i:int = 0, n:int = drawOrder.length; i < n; i++) {
|
||||||
|
var slot:Slot = drawOrder[i];
|
||||||
|
var verticesLength:int = 0;
|
||||||
|
var vertices: Vector.<Number> = null;
|
||||||
|
var attachment:Attachment = slot.attachment;
|
||||||
|
if (attachment is RegionAttachment) {
|
||||||
|
verticesLength = 8;
|
||||||
|
temp.length = verticesLength;
|
||||||
|
vertices = temp;
|
||||||
|
(attachment as RegionAttachment).computeWorldVertices(slot.bone, vertices, 0, 2);
|
||||||
|
} else if (attachment is MeshAttachment) {
|
||||||
|
var mesh:MeshAttachment = attachment as MeshAttachment;
|
||||||
|
verticesLength = mesh.worldVerticesLength;
|
||||||
|
temp.length = verticesLength;
|
||||||
|
vertices = temp;
|
||||||
|
mesh.computeWorldVertices(slot, 0, verticesLength, vertices, 0, 2);
|
||||||
|
}
|
||||||
|
if (vertices != null) {
|
||||||
|
for (var ii:int = 0, nn:int = vertices.length; ii < nn; ii += 8) {
|
||||||
|
var x:Number = vertices[ii], y:Number = vertices[ii + 1];
|
||||||
|
minX = Math.min(minX, x);
|
||||||
|
minY = Math.min(minY, y);
|
||||||
|
maxX = Math.max(maxX, x);
|
||||||
|
maxY = Math.max(maxY, y);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
offset[0] = minX;
|
||||||
|
offset[1] = minY;
|
||||||
|
size[0] = maxX - minX;
|
||||||
|
size[1] = maxY - minY;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -65,7 +65,7 @@ public class SkeletonBounds {
|
|||||||
polygons[polygons.length] = polygon;
|
polygons[polygons.length] = polygon;
|
||||||
|
|
||||||
polygon.vertices.length = boundingBox.worldVerticesLength;
|
polygon.vertices.length = boundingBox.worldVerticesLength;
|
||||||
boundingBox.computeWorldVertices(slot, polygon.vertices);
|
boundingBox.computeWorldVertices(slot, 0, boundingBox.worldVerticesLength, polygon.vertices, 0, 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (updateAabb)
|
if (updateAabb)
|
||||||
|
|||||||
@ -29,6 +29,8 @@
|
|||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
|
|
||||||
package spine {
|
package spine {
|
||||||
|
import spine.animation.TwoColorTimeline;
|
||||||
|
import spine.attachments.PointAttachment;
|
||||||
import spine.animation.PathConstraintMixTimeline;
|
import spine.animation.PathConstraintMixTimeline;
|
||||||
import spine.animation.PathConstraintSpacingTimeline;
|
import spine.animation.PathConstraintSpacingTimeline;
|
||||||
import spine.animation.PathConstraintPositionTimeline;
|
import spine.animation.PathConstraintPositionTimeline;
|
||||||
@ -126,10 +128,12 @@ public class SkeletonJson {
|
|||||||
|
|
||||||
var color:String = slotMap["color"];
|
var color:String = slotMap["color"];
|
||||||
if (color) {
|
if (color) {
|
||||||
slotData.r = toColor(color, 0);
|
slotData.color.setFrom(toColor(color, 0), toColor(color, 1), toColor(color, 2), toColor(color, 3));
|
||||||
slotData.g = toColor(color, 1);
|
}
|
||||||
slotData.b = toColor(color, 2);
|
|
||||||
slotData.a = toColor(color, 3);
|
var dark:String = slotMap["dark"];
|
||||||
|
if (dark) {
|
||||||
|
slotData.darkColor.setFrom(toColor(dark, 0), toColor(dark, 1), toColor(dark, 2), toColor(dark, 3));
|
||||||
}
|
}
|
||||||
|
|
||||||
slotData.attachmentName = slotMap["attachment"];
|
slotData.attachmentName = slotMap["attachment"];
|
||||||
@ -288,10 +292,7 @@ public class SkeletonJson {
|
|||||||
region.height = Number(map["height"] || 0) * scale;
|
region.height = Number(map["height"] || 0) * scale;
|
||||||
color = map["color"];
|
color = map["color"];
|
||||||
if (color) {
|
if (color) {
|
||||||
region.r = toColor(color, 0);
|
region.color.setFrom(toColor(color, 0), toColor(color, 1), toColor(color, 2), toColor(color, 3));
|
||||||
region.g = toColor(color, 1);
|
|
||||||
region.b = toColor(color, 2);
|
|
||||||
region.a = toColor(color, 3);
|
|
||||||
}
|
}
|
||||||
region.updateOffset();
|
region.updateOffset();
|
||||||
return region;
|
return region;
|
||||||
@ -303,10 +304,7 @@ public class SkeletonJson {
|
|||||||
|
|
||||||
color = map["color"];
|
color = map["color"];
|
||||||
if (color) {
|
if (color) {
|
||||||
mesh.r = toColor(color, 0);
|
mesh.color.setFrom(toColor(color, 0), toColor(color, 1), toColor(color, 2), toColor(color, 3));
|
||||||
mesh.g = toColor(color, 1);
|
|
||||||
mesh.b = toColor(color, 2);
|
|
||||||
mesh.a = toColor(color, 3);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
mesh.width = Number(map["width"] || 0) * scale;
|
mesh.width = Number(map["width"] || 0) * scale;
|
||||||
@ -347,6 +345,18 @@ public class SkeletonJson {
|
|||||||
}
|
}
|
||||||
path.lengths = lengths;
|
path.lengths = lengths;
|
||||||
return path;
|
return path;
|
||||||
|
case AttachmentType.point:
|
||||||
|
var point:PointAttachment = attachmentLoader.newPointAttachment(skin, name);
|
||||||
|
if (!point) return null;
|
||||||
|
point.x = map.hasOwnProperty("x") ? Number(map["x"]) * scale : 0;
|
||||||
|
point.y = map.hasOwnProperty("y") ? Number(map["y"]) * scale : 0;
|
||||||
|
point.rotation = map.hasOwnProperty("rotation") ? Number(map["rotation"]) : 0;
|
||||||
|
|
||||||
|
color = map["color"];
|
||||||
|
if (color) {
|
||||||
|
point.color.setFrom(toColor(color, 0), toColor(color, 1), toColor(color, 2), toColor(color, 3));
|
||||||
|
}
|
||||||
|
return point;
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
@ -400,7 +410,16 @@ public class SkeletonJson {
|
|||||||
|
|
||||||
for (timelineName in slotMap) {
|
for (timelineName in slotMap) {
|
||||||
values = slotMap[timelineName];
|
values = slotMap[timelineName];
|
||||||
if (timelineName == "color") {
|
if (timelineName == "attachment") {
|
||||||
|
var attachmentTimeline:AttachmentTimeline = new AttachmentTimeline(values.length);
|
||||||
|
attachmentTimeline.slotIndex = slotIndex;
|
||||||
|
|
||||||
|
frameIndex = 0;
|
||||||
|
for each (valueMap in values)
|
||||||
|
attachmentTimeline.setFrame(frameIndex++, valueMap["time"], valueMap["name"]);
|
||||||
|
timelines[timelines.length] = attachmentTimeline;
|
||||||
|
duration = Math.max(duration, attachmentTimeline.frames[attachmentTimeline.frameCount - 1]);
|
||||||
|
} else if (timelineName == "color") {
|
||||||
var colorTimeline:ColorTimeline = new ColorTimeline(values.length);
|
var colorTimeline:ColorTimeline = new ColorTimeline(values.length);
|
||||||
colorTimeline.slotIndex = slotIndex;
|
colorTimeline.slotIndex = slotIndex;
|
||||||
|
|
||||||
@ -417,15 +436,24 @@ public class SkeletonJson {
|
|||||||
}
|
}
|
||||||
timelines[timelines.length] = colorTimeline;
|
timelines[timelines.length] = colorTimeline;
|
||||||
duration = Math.max(duration, colorTimeline.frames[(colorTimeline.frameCount - 1) * ColorTimeline.ENTRIES]);
|
duration = Math.max(duration, colorTimeline.frames[(colorTimeline.frameCount - 1) * ColorTimeline.ENTRIES]);
|
||||||
} else if (timelineName == "attachment") {
|
} else if (timelineName == "twoColor") {
|
||||||
var attachmentTimeline:AttachmentTimeline = new AttachmentTimeline(values.length);
|
var twoColorTimeline:TwoColorTimeline = new TwoColorTimeline(values.length);
|
||||||
attachmentTimeline.slotIndex = slotIndex;
|
twoColorTimeline.slotIndex = slotIndex;
|
||||||
|
|
||||||
frameIndex = 0;
|
frameIndex = 0;
|
||||||
for each (valueMap in values)
|
for each (valueMap in values) {
|
||||||
attachmentTimeline.setFrame(frameIndex++, valueMap["time"], valueMap["name"]);
|
color = valueMap["color"];
|
||||||
timelines[timelines.length] = attachmentTimeline;
|
var darkColor:String = valueMap["dark"];
|
||||||
duration = Math.max(duration, attachmentTimeline.frames[attachmentTimeline.frameCount - 1]);
|
var light:Color = new Color(0, 0, 0, 0);
|
||||||
|
var dark:Color = new Color(0, 0, 0, 0);
|
||||||
|
light.setFrom(toColor(color, 0), toColor(color, 1), toColor(color, 2), toColor(color, 3));
|
||||||
|
dark.setFrom(toColor(darkColor, 0), toColor(darkColor, 1), toColor(darkColor, 2), toColor(darkColor, 3));
|
||||||
|
twoColorTimeline.setFrame(frameIndex, valueMap["time"], light.r, light.g, light.b, light.a, dark.r, dark.g, dark.b);
|
||||||
|
readCurve(valueMap, twoColorTimeline, frameIndex);
|
||||||
|
frameIndex++;
|
||||||
|
}
|
||||||
|
timelines[timelines.length] = twoColorTimeline;
|
||||||
|
duration = Math.max(duration, twoColorTimeline.frames[(twoColorTimeline.frameCount - 1) * TwoColorTimeline.ENTRIES]);
|
||||||
} else
|
} else
|
||||||
throw new Error("Invalid timeline type for a slot: " + timelineName + " (" + slotName + ")");
|
throw new Error("Invalid timeline type for a slot: " + timelineName + " (" + slotName + ")");
|
||||||
}
|
}
|
||||||
|
|||||||
@ -34,10 +34,8 @@ import spine.attachments.Attachment;
|
|||||||
public class Slot {
|
public class Slot {
|
||||||
internal var _data:SlotData;
|
internal var _data:SlotData;
|
||||||
internal var _bone:Bone;
|
internal var _bone:Bone;
|
||||||
public var r:Number;
|
public var color:Color;
|
||||||
public var g:Number;
|
public var darkColor:Color;
|
||||||
public var b:Number;
|
|
||||||
public var a:Number;
|
|
||||||
internal var _attachment:Attachment;
|
internal var _attachment:Attachment;
|
||||||
private var _attachmentTime:Number;
|
private var _attachmentTime:Number;
|
||||||
public var attachmentVertices:Vector.<Number> = new Vector.<Number>();
|
public var attachmentVertices:Vector.<Number> = new Vector.<Number>();
|
||||||
@ -47,6 +45,8 @@ public class Slot {
|
|||||||
if (bone == null) throw new ArgumentError("bone cannot be null.");
|
if (bone == null) throw new ArgumentError("bone cannot be null.");
|
||||||
_data = data;
|
_data = data;
|
||||||
_bone = bone;
|
_bone = bone;
|
||||||
|
this.color = new Color(1, 1, 1, 1);
|
||||||
|
this.darkColor = data.darkColor == null ? null : new Color(1, 1, 1, 1);
|
||||||
setToSetupPose();
|
setToSetupPose();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -86,10 +86,8 @@ public class Slot {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public function setToSetupPose () : void {
|
public function setToSetupPose () : void {
|
||||||
r = _data.r;
|
color.setFromColor(data.color);
|
||||||
g = _data.g;
|
if (darkColor != null) darkColor.setFromColor(this.data.darkColor);
|
||||||
b = _data.b;
|
|
||||||
a = _data.a;
|
|
||||||
if (_data.attachmentName == null)
|
if (_data.attachmentName == null)
|
||||||
attachment = null;
|
attachment = null;
|
||||||
else {
|
else {
|
||||||
|
|||||||
@ -34,10 +34,8 @@ public class SlotData {
|
|||||||
internal var _index:int;
|
internal var _index:int;
|
||||||
internal var _name:String;
|
internal var _name:String;
|
||||||
internal var _boneData:BoneData;
|
internal var _boneData:BoneData;
|
||||||
public var r:Number = 1;
|
public var color: Color = new Color(1, 1, 1, 1);
|
||||||
public var g:Number = 1;
|
public var darkColor: Color;
|
||||||
public var b:Number = 1;
|
|
||||||
public var a:Number = 1;
|
|
||||||
public var attachmentName:String;
|
public var attachmentName:String;
|
||||||
public var blendMode:BlendMode;
|
public var blendMode:BlendMode;
|
||||||
|
|
||||||
|
|||||||
@ -57,8 +57,23 @@ public class TransformConstraint implements Constraint {
|
|||||||
public function apply () : void {
|
public function apply () : void {
|
||||||
update();
|
update();
|
||||||
}
|
}
|
||||||
|
|
||||||
public function update () : void {
|
public function update () : void {
|
||||||
|
if (data.local) {
|
||||||
|
if (data.relative)
|
||||||
|
applyRelativeLocal();
|
||||||
|
else
|
||||||
|
applyAbsoluteLocal();
|
||||||
|
|
||||||
|
} else {
|
||||||
|
if (data.relative)
|
||||||
|
applyRelativeWorld();
|
||||||
|
else
|
||||||
|
applyAbsoluteWorld();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
internal function applyAbsoluteWorld () : void {
|
||||||
var rotateMix:Number = this.rotateMix, translateMix:Number = this.translateMix, scaleMix:Number = this.scaleMix, shearMix:Number = this.shearMix;
|
var rotateMix:Number = this.rotateMix, translateMix:Number = this.translateMix, scaleMix:Number = this.scaleMix, shearMix:Number = this.shearMix;
|
||||||
var target:Bone = this.target;
|
var target:Bone = this.target;
|
||||||
var ta:Number = target.a, tb:Number = target.b, tc:Number = target.c, td:Number = target.d;
|
var ta:Number = target.a, tb:Number = target.b, tc:Number = target.c, td:Number = target.d;
|
||||||
@ -78,10 +93,10 @@ public class TransformConstraint implements Constraint {
|
|||||||
else if (r < -Math.PI) r += Math.PI * 2;
|
else if (r < -Math.PI) r += Math.PI * 2;
|
||||||
r *= rotateMix;
|
r *= rotateMix;
|
||||||
var cos:Number = Math.cos(r), sin:Number = Math.sin(r);
|
var cos:Number = Math.cos(r), sin:Number = Math.sin(r);
|
||||||
bone._a = cos * a - sin * c;
|
bone.a = cos * a - sin * c;
|
||||||
bone._b = cos * b - sin * d;
|
bone.b = cos * b - sin * d;
|
||||||
bone._c = sin * a + cos * c;
|
bone.c = sin * a + cos * c;
|
||||||
bone._d = sin * b + cos * d;
|
bone.d = sin * b + cos * d;
|
||||||
modified = true;
|
modified = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -89,8 +104,8 @@ public class TransformConstraint implements Constraint {
|
|||||||
_temp[0] = data.offsetX;
|
_temp[0] = data.offsetX;
|
||||||
_temp[1] = data.offsetY;
|
_temp[1] = data.offsetY;
|
||||||
target.localToWorld(_temp);
|
target.localToWorld(_temp);
|
||||||
bone._worldX += (_temp[0] - bone.worldX) * translateMix;
|
bone.worldX += (_temp[0] - bone.worldX) * translateMix;
|
||||||
bone._worldY += (_temp[1] - bone.worldY) * translateMix;
|
bone.worldY += (_temp[1] - bone.worldY) * translateMix;
|
||||||
modified = true;
|
modified = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -98,13 +113,13 @@ public class TransformConstraint implements Constraint {
|
|||||||
var s:Number = Math.sqrt(bone.a * bone.a + bone.c * bone.c);
|
var s:Number = Math.sqrt(bone.a * bone.a + bone.c * bone.c);
|
||||||
var ts:Number = Math.sqrt(ta * ta + tc * tc);
|
var ts:Number = Math.sqrt(ta * ta + tc * tc);
|
||||||
if (s > 0.00001) s = (s + (ts - s + data.offsetScaleX) * scaleMix) / s;
|
if (s > 0.00001) s = (s + (ts - s + data.offsetScaleX) * scaleMix) / s;
|
||||||
bone._a *= s;
|
bone.a *= s;
|
||||||
bone._c *= s;
|
bone.c *= s;
|
||||||
s = Math.sqrt(bone.b * bone.b + bone.d * bone.d);
|
s = Math.sqrt(bone.b * bone.b + bone.d * bone.d);
|
||||||
ts = Math.sqrt(tb * tb + td * td);
|
ts = Math.sqrt(tb * tb + td * td);
|
||||||
if (s > 0.00001) s = (s + (ts - s + data.offsetScaleY) * scaleMix) / s;
|
if (s > 0.00001) s = (s + (ts - s + data.offsetScaleY) * scaleMix) / s;
|
||||||
bone._b *= s;
|
bone.b *= s;
|
||||||
bone._d *= s;
|
bone.d *= s;
|
||||||
modified = true;
|
modified = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -117,8 +132,8 @@ public class TransformConstraint implements Constraint {
|
|||||||
else if (r < -Math.PI) r += Math.PI * 2;
|
else if (r < -Math.PI) r += Math.PI * 2;
|
||||||
r = by + (r + offsetShearY) * shearMix;
|
r = by + (r + offsetShearY) * shearMix;
|
||||||
s = Math.sqrt(b * b + d * d);
|
s = Math.sqrt(b * b + d * d);
|
||||||
bone._b = Math.cos(r) * s;
|
bone.b = Math.cos(r) * s;
|
||||||
bone._d = Math.sin(r) * s;
|
bone.d = Math.sin(r) * s;
|
||||||
modified = true;
|
modified = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -126,6 +141,141 @@ public class TransformConstraint implements Constraint {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function applyRelativeWorld () : void {
|
||||||
|
var rotateMix:Number = this.rotateMix, translateMix:Number = this.translateMix, scaleMix:Number = this.scaleMix, shearMix:Number = this.shearMix;
|
||||||
|
var target:Bone = this.target;
|
||||||
|
var ta:Number = target.a, tb:Number = target.b, tc:Number = target.c, td:Number = target.d;
|
||||||
|
var degRadReflect:Number = ta * td - tb * tc > 0 ? MathUtils.degRad : -MathUtils.degRad;
|
||||||
|
var offsetRotation:Number = this.data.offsetRotation * degRadReflect, offsetShearY:Number = this.data.offsetShearY * degRadReflect;
|
||||||
|
var bones:Vector.<Bone> = this.bones;
|
||||||
|
for (var i:int = 0, n:int = bones.length; i < n; i++) {
|
||||||
|
var bone:Bone = bones[i];
|
||||||
|
var modified:Boolean = false;
|
||||||
|
|
||||||
|
if (rotateMix != 0) {
|
||||||
|
var a:Number = bone.a, b:Number = bone.b, c:Number = bone.c, d:Number = bone.d;
|
||||||
|
var r:Number = Math.atan2(tc, ta) + offsetRotation;
|
||||||
|
if (r > MathUtils.PI)
|
||||||
|
r -= MathUtils.PI2;
|
||||||
|
else if (r < -MathUtils.PI) r += MathUtils.PI2;
|
||||||
|
r *= rotateMix;
|
||||||
|
var cos:Number = Math.cos(r), sin:Number = Math.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;
|
||||||
|
modified = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (translateMix != 0) {
|
||||||
|
var temp:Vector.<Number> = this._temp;
|
||||||
|
temp[0] = this._data.offsetX;
|
||||||
|
temp[1] = this._data.offsetY;
|
||||||
|
target.localToWorld(temp);
|
||||||
|
bone.worldX += temp[0] * translateMix;
|
||||||
|
bone.worldY += temp[1] * translateMix;
|
||||||
|
modified = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (scaleMix > 0) {
|
||||||
|
var s:Number = (Math.sqrt(ta * ta + tc * tc) - 1 + this.data.offsetScaleX) * scaleMix + 1;
|
||||||
|
bone.a *= s;
|
||||||
|
bone.c *= s;
|
||||||
|
s = (Math.sqrt(tb * tb + td * td) - 1 + this.data.offsetScaleY) * scaleMix + 1;
|
||||||
|
bone.b *= s;
|
||||||
|
bone.d *= s;
|
||||||
|
modified = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (shearMix > 0) {
|
||||||
|
r = Math.atan2(td, tb) - Math.atan2(tc, ta);
|
||||||
|
if (r > MathUtils.PI)
|
||||||
|
r -= MathUtils.PI2;
|
||||||
|
else if (r < -MathUtils.PI) r += MathUtils.PI2;
|
||||||
|
b = bone.b; d = bone.d;
|
||||||
|
r = Math.atan2(d, b) + (r - MathUtils.PI / 2 + offsetShearY) * shearMix;
|
||||||
|
s = Math.sqrt(b * b + d * d);
|
||||||
|
bone.b = Math.cos(r) * s;
|
||||||
|
bone.d = Math.sin(r) * s;
|
||||||
|
modified = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (modified) bone.appliedValid = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function applyAbsoluteLocal () : void {
|
||||||
|
var rotateMix:Number = this.rotateMix, translateMix:Number = this.translateMix, scaleMix:Number = this.scaleMix, shearMix:Number = this.shearMix;
|
||||||
|
var target:Bone = this.target;
|
||||||
|
if (!target.appliedValid) target.updateAppliedTransform();
|
||||||
|
var bones:Vector.<Bone> = this.bones;
|
||||||
|
for (var i:int = 0, n:int = bones.length; i < n; i++) {
|
||||||
|
var bone:Bone = bones[i];
|
||||||
|
if (!bone.appliedValid) bone.updateAppliedTransform();
|
||||||
|
|
||||||
|
var rotation:Number = bone.arotation;
|
||||||
|
if (rotateMix != 0) {
|
||||||
|
var r:Number = target.arotation - rotation + this.data.offsetRotation;
|
||||||
|
r -= (16384 - ((16384.499999999996 - r / 360) | 0)) * 360;
|
||||||
|
rotation += r * rotateMix;
|
||||||
|
}
|
||||||
|
|
||||||
|
var x:Number = bone.ax, y:Number = bone.ay;
|
||||||
|
if (translateMix != 0) {
|
||||||
|
x += (target.ax - x + this.data.offsetX) * translateMix;
|
||||||
|
y += (target.ay - y + this.data.offsetY) * translateMix;
|
||||||
|
}
|
||||||
|
|
||||||
|
var scaleX:Number = bone.ascaleX, scaleY:Number = bone.ascaleY;
|
||||||
|
if (scaleMix > 0) {
|
||||||
|
if (scaleX > 0.00001) scaleX = (scaleX + (target.ascaleX - scaleX + this.data.offsetScaleX) * scaleMix) / scaleX;
|
||||||
|
if (scaleY > 0.00001) scaleY = (scaleY + (target.ascaleY - scaleY + this.data.offsetScaleY) * scaleMix) / scaleY;
|
||||||
|
}
|
||||||
|
|
||||||
|
var shearY:Number = bone.ashearY;
|
||||||
|
if (shearMix > 0) {
|
||||||
|
r = target.ashearY - shearY + this.data.offsetShearY;
|
||||||
|
r -= (16384 - ((16384.499999999996 - r / 360) | 0)) * 360;
|
||||||
|
bone.shearY += r * shearMix;
|
||||||
|
}
|
||||||
|
|
||||||
|
bone.updateWorldTransformWith(x, y, rotation, scaleX, scaleY, bone.ashearX, shearY);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function applyRelativeLocal () : void {
|
||||||
|
var rotateMix:Number = this.rotateMix, translateMix:Number = this.translateMix, scaleMix:Number = this.scaleMix, shearMix:Number = this.shearMix;
|
||||||
|
var target:Bone = this.target;
|
||||||
|
if (!target.appliedValid) target.updateAppliedTransform();
|
||||||
|
var bones:Vector.<Bone> = this.bones;
|
||||||
|
for (var i:int = 0, n:int = bones.length; i < n; i++) {
|
||||||
|
var bone:Bone = bones[i];
|
||||||
|
if (!bone.appliedValid) bone.updateAppliedTransform();
|
||||||
|
|
||||||
|
var rotation:Number = bone.arotation;
|
||||||
|
if (rotateMix != 0) rotation += (target.arotation + this.data.offsetRotation) * rotateMix;
|
||||||
|
|
||||||
|
var x:Number = bone.ax, y:Number = bone.ay;
|
||||||
|
if (translateMix != 0) {
|
||||||
|
x += (target.ax + this.data.offsetX) * translateMix;
|
||||||
|
y += (target.ay + this.data.offsetY) * translateMix;
|
||||||
|
}
|
||||||
|
|
||||||
|
var scaleX:Number = bone.ascaleX, scaleY:Number = bone.ascaleY;
|
||||||
|
if (scaleMix > 0) {
|
||||||
|
if (scaleX > 0.00001) scaleX *= ((target.ascaleX - 1 + this.data.offsetScaleX) * scaleMix) + 1;
|
||||||
|
if (scaleY > 0.00001) scaleY *= ((target.ascaleY - 1 + this.data.offsetScaleY) * scaleMix) + 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
var shearY:Number = bone.ashearY;
|
||||||
|
if (shearMix > 0) shearY += (target.ashearY + this.data.offsetShearY) * shearMix;
|
||||||
|
|
||||||
|
bone.updateWorldTransformWith(x, y, rotation, scaleX, scaleY, bone.ashearX, shearY);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public function getOrder () : Number {
|
public function getOrder () : Number {
|
||||||
return _data.order;
|
return _data.order;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -45,6 +45,8 @@ public class TransformConstraintData {
|
|||||||
public var offsetScaleX:Number;
|
public var offsetScaleX:Number;
|
||||||
public var offsetScaleY:Number;
|
public var offsetScaleY:Number;
|
||||||
public var offsetShearY:Number;
|
public var offsetShearY:Number;
|
||||||
|
public var relative:Boolean = false;
|
||||||
|
public var local:Boolean = false;
|
||||||
|
|
||||||
public function TransformConstraintData (name:String) {
|
public function TransformConstraintData (name:String) {
|
||||||
if (name == null) throw new ArgumentError("name cannot be null.");
|
if (name == null) throw new ArgumentError("name cannot be null.");
|
||||||
|
|||||||
@ -323,11 +323,12 @@ public class AnimationState {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public function clearTracks ():void {
|
public function clearTracks ():void {
|
||||||
|
var oldTrainDisabled:Boolean = queue.drainDisabled;
|
||||||
queue.drainDisabled = true;
|
queue.drainDisabled = true;
|
||||||
for (var i:int = 0, n:int = tracks.length; i < n; i++)
|
for (var i:int = 0, n:int = tracks.length; i < n; i++)
|
||||||
clearTrack(i);
|
clearTrack(i);
|
||||||
tracks.length = 0;
|
tracks.length = 0;
|
||||||
queue.drainDisabled = false;
|
queue.drainDisabled = oldTrainDisabled;
|
||||||
queue.drain();
|
queue.drain();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -452,12 +453,13 @@ public class AnimationState {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public function setEmptyAnimations (mixDuration:Number):void {
|
public function setEmptyAnimations (mixDuration:Number):void {
|
||||||
|
var oldDrainDisabled:Boolean = queue.drainDisabled;
|
||||||
queue.drainDisabled = true;
|
queue.drainDisabled = true;
|
||||||
for (var i:int = 0, n:int = tracks.length; i < n; i++) {
|
for (var i:int = 0, n:int = tracks.length; i < n; i++) {
|
||||||
var current:TrackEntry = tracks[i];
|
var current:TrackEntry = tracks[i];
|
||||||
if (current != null) setEmptyAnimation(current.trackIndex, mixDuration);
|
if (current != null) setEmptyAnimation(current.trackIndex, mixDuration);
|
||||||
}
|
}
|
||||||
queue.drainDisabled = false;
|
queue.drainDisabled = oldDrainDisabled;
|
||||||
queue.drain();
|
queue.drain();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -66,10 +66,7 @@ public class ColorTimeline extends CurveTimeline {
|
|||||||
|
|
||||||
if (time < frames[0]) {
|
if (time < frames[0]) {
|
||||||
if (setupPose) {
|
if (setupPose) {
|
||||||
slot.r = slot.data.r;
|
slot.color.setFromColor(slot.data.color);
|
||||||
slot.g = slot.data.g;
|
|
||||||
slot.b = slot.data.b;
|
|
||||||
slot.a = slot.data.a;
|
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -98,21 +95,15 @@ public class ColorTimeline extends CurveTimeline {
|
|||||||
a += (frames[frame + A] - a) * percent;
|
a += (frames[frame + A] - a) * percent;
|
||||||
}
|
}
|
||||||
if (alpha == 1) {
|
if (alpha == 1) {
|
||||||
slot.r = r;
|
slot.color.setFrom(r, g, b, a);
|
||||||
slot.g = g;
|
|
||||||
slot.b = b;
|
|
||||||
slot.a = a;
|
|
||||||
} else {
|
} else {
|
||||||
if (setupPose) {
|
if (setupPose) {
|
||||||
slot.r = slot.data.r;
|
slot.color.setFromColor(slot.data.color);
|
||||||
slot.g = slot.data.g;
|
|
||||||
slot.b = slot.data.b;
|
|
||||||
slot.a = slot.data.a;
|
|
||||||
}
|
}
|
||||||
slot.r += (r - slot.r) * alpha;
|
slot.color.r += (r - slot.color.r) * alpha;
|
||||||
slot.g += (g - slot.g) * alpha;
|
slot.color.g += (g - slot.color.g) * alpha;
|
||||||
slot.b += (b - slot.b) * alpha;
|
slot.color.b += (b - slot.color.b) * alpha;
|
||||||
slot.a += (a - slot.a) * alpha;
|
slot.color.a += (a - slot.color.a) * alpha;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -51,6 +51,7 @@ public class TimelineType {
|
|||||||
public static const pathConstraintPosition:TimelineType = new TimelineType(11);
|
public static const pathConstraintPosition:TimelineType = new TimelineType(11);
|
||||||
public static const pathConstraintSpacing:TimelineType = new TimelineType(12);
|
public static const pathConstraintSpacing:TimelineType = new TimelineType(12);
|
||||||
public static const pathConstraintMix:TimelineType = new TimelineType(13);
|
public static const pathConstraintMix:TimelineType = new TimelineType(13);
|
||||||
|
public static const twoColor:TimelineType = new TimelineType(14);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
128
spine-as3/spine-as3/src/spine/animation/TwoColorTimeline.as
Normal file
128
spine-as3/spine-as3/src/spine/animation/TwoColorTimeline.as
Normal file
@ -0,0 +1,128 @@
|
|||||||
|
/******************************************************************************
|
||||||
|
* Spine Runtimes Software License v2.5
|
||||||
|
*
|
||||||
|
* Copyright (c) 2013-2016, 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 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 develop new applications using the Spine Runtimes or otherwise
|
||||||
|
* create derivative works or improvements of the Spine Runtimes 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, BUSINESS INTERRUPTION, OR LOSS OF
|
||||||
|
* USE, DATA, OR PROFITS) 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 spine.animation {
|
||||||
|
import spine.Color;
|
||||||
|
import spine.Event;
|
||||||
|
import spine.Skeleton;
|
||||||
|
import spine.Slot;
|
||||||
|
|
||||||
|
public class TwoColorTimeline extends CurveTimeline {
|
||||||
|
static public const ENTRIES:int = 8;
|
||||||
|
static internal const PREV_TIME:int = -8, PREV_R:int = -7, PREV_G:int = -6, PREV_B:int = -5, PREV_A:int = -4;
|
||||||
|
static internal const PREV_R2:int = -3, PREV_G2:int = -2, PREV_B2:int = -1;
|
||||||
|
static internal const R:int = 1, G:int = 2, B:int = 3, A:int = 4, R2:int = 5, G2:int = 6, B2:int = 7;
|
||||||
|
|
||||||
|
public var slotIndex:int;
|
||||||
|
public var frames:Vector.<Number>; // time, r, g, b, a, ...
|
||||||
|
|
||||||
|
public function TwoColorTimeline (frameCount:int) {
|
||||||
|
super(frameCount);
|
||||||
|
frames = new Vector.<Number>(frameCount * ENTRIES, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
override public function getPropertyId () : int {
|
||||||
|
return (TimelineType.twoColor.ordinal << 24) + slotIndex;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Sets the time and value of the specified keyframe. */
|
||||||
|
public function setFrame (frameIndex:int, time:Number, r:Number, g:Number, b:Number, a:Number, r2:Number, g2:Number, b2:Number) : void {
|
||||||
|
frameIndex *= TwoColorTimeline.ENTRIES;
|
||||||
|
this.frames[frameIndex] = time;
|
||||||
|
this.frames[frameIndex + TwoColorTimeline.R] = r;
|
||||||
|
this.frames[frameIndex + TwoColorTimeline.G] = g;
|
||||||
|
this.frames[frameIndex + TwoColorTimeline.B] = b;
|
||||||
|
this.frames[frameIndex + TwoColorTimeline.A] = a;
|
||||||
|
this.frames[frameIndex + TwoColorTimeline.R2] = r2;
|
||||||
|
this.frames[frameIndex + TwoColorTimeline.G2] = g2;
|
||||||
|
this.frames[frameIndex + TwoColorTimeline.B2] = b2;
|
||||||
|
}
|
||||||
|
|
||||||
|
override public function apply (skeleton:Skeleton, lastTime:Number, time:Number, firedEvents:Vector.<Event>, alpha:Number, setupPose:Boolean, mixingOut:Boolean) : void {
|
||||||
|
var frames:Vector.<Number> = this.frames;
|
||||||
|
var slot:Slot = skeleton.slots[slotIndex];
|
||||||
|
|
||||||
|
if (time < frames[0]) {
|
||||||
|
if (setupPose) {
|
||||||
|
slot.color.setFromColor(slot.data.color);
|
||||||
|
slot.darkColor.setFromColor(slot.data.darkColor);
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var r:Number, g:Number, b:Number, a:Number, r2:Number, g2:Number, b2:Number;
|
||||||
|
if (time >= frames[frames.length - ENTRIES]) { // Time is after last frame.
|
||||||
|
var i:int = frames.length;
|
||||||
|
r = frames[i + PREV_R];
|
||||||
|
g = frames[i + PREV_G];
|
||||||
|
b = frames[i + PREV_B];
|
||||||
|
a = frames[i + PREV_A];
|
||||||
|
r2 = frames[i + PREV_R2];
|
||||||
|
g2 = frames[i + PREV_G2];
|
||||||
|
b2 = frames[i + PREV_B2];
|
||||||
|
} else {
|
||||||
|
// Interpolate between the previous frame and the current frame.
|
||||||
|
var frame:int = Animation.binarySearch(frames, time, ENTRIES);
|
||||||
|
r = frames[frame + PREV_R];
|
||||||
|
g = frames[frame + PREV_G];
|
||||||
|
b = frames[frame + PREV_B];
|
||||||
|
a = frames[frame + PREV_A];
|
||||||
|
r2 = frames[frame + PREV_R2];
|
||||||
|
g2 = frames[frame + PREV_G2];
|
||||||
|
b2 = frames[frame + PREV_B2];
|
||||||
|
var frameTime:Number = frames[frame];
|
||||||
|
var percent:Number = getCurvePercent(frame / ENTRIES - 1,
|
||||||
|
1 - (time - frameTime) / (frames[frame + PREV_TIME] - frameTime));
|
||||||
|
|
||||||
|
r += (frames[frame + R] - r) * percent;
|
||||||
|
g += (frames[frame + G] - g) * percent;
|
||||||
|
b += (frames[frame + B] - b) * percent;
|
||||||
|
a += (frames[frame + A] - a) * percent;
|
||||||
|
r2 += (frames[frame + R2] - a) * percent;
|
||||||
|
g2 += (frames[frame + G2] - a) * percent;
|
||||||
|
b2 += (frames[frame + B2] - a) * percent;
|
||||||
|
}
|
||||||
|
if (alpha == 1) {
|
||||||
|
slot.color.setFrom(r, g, b, a);
|
||||||
|
slot.darkColor.setFrom(r2, g2, b2, 1);
|
||||||
|
} else {
|
||||||
|
var light:Color = slot.color;
|
||||||
|
var dark:Color = slot.darkColor;
|
||||||
|
if (setupPose) {
|
||||||
|
light.setFromColor(slot.data.color);
|
||||||
|
dark.setFromColor(slot.data.darkColor);
|
||||||
|
}
|
||||||
|
light.add((r - light.r) * alpha, (g - light.g) * alpha, (b - light.b) * alpha, (a - light.a) * alpha);
|
||||||
|
dark.add((r2 - dark.r) * alpha, (g2 - dark.g) * alpha, (b2 - dark.b) * alpha, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -89,6 +89,10 @@ public class AtlasAttachmentLoader implements AttachmentLoader {
|
|||||||
public function newPathAttachment(skin:Skin, name:String) : PathAttachment {
|
public function newPathAttachment(skin:Skin, name:String) : PathAttachment {
|
||||||
return new PathAttachment(name);
|
return new PathAttachment(name);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function newPointAttachment(skin:Skin, name:String) : PointAttachment {
|
||||||
|
return new PointAttachment(name);
|
||||||
|
}
|
||||||
|
|
||||||
static public function nextPOT (value:int) : int {
|
static public function nextPOT (value:int) : int {
|
||||||
value--;
|
value--;
|
||||||
|
|||||||
@ -43,6 +43,9 @@ public interface AttachmentLoader {
|
|||||||
|
|
||||||
/** @return May be null to not load an attachment */
|
/** @return May be null to not load an attachment */
|
||||||
function newPathAttachment(skin:Skin, name:String): PathAttachment;
|
function newPathAttachment(skin:Skin, name:String): PathAttachment;
|
||||||
|
|
||||||
|
/** @return May be null to not load an attachment */
|
||||||
|
function newPointAttachment(skin:Skin, name:String): PointAttachment;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -37,6 +37,7 @@ public class AttachmentType {
|
|||||||
public static const mesh:AttachmentType = new AttachmentType(3, "mesh");
|
public static const mesh:AttachmentType = new AttachmentType(3, "mesh");
|
||||||
public static const linkedmesh:AttachmentType = new AttachmentType(3, "linkedmesh");
|
public static const linkedmesh:AttachmentType = new AttachmentType(3, "linkedmesh");
|
||||||
public static const path:AttachmentType = new AttachmentType(4, "path");
|
public static const path:AttachmentType = new AttachmentType(4, "path");
|
||||||
|
public static const point:AttachmentType = new AttachmentType(5, "point");
|
||||||
|
|
||||||
public var ordinal:int;
|
public var ordinal:int;
|
||||||
public var name:String;
|
public var name:String;
|
||||||
|
|||||||
@ -29,16 +29,13 @@
|
|||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
|
|
||||||
package spine.attachments {
|
package spine.attachments {
|
||||||
|
import spine.Color;
|
||||||
|
|
||||||
public dynamic class MeshAttachment extends VertexAttachment {
|
public dynamic class MeshAttachment extends VertexAttachment {
|
||||||
public var worldVertices:Vector.<Number>;
|
|
||||||
public var uvs:Vector.<Number>;
|
public var uvs:Vector.<Number>;
|
||||||
public var regionUVs:Vector.<Number>;
|
public var regionUVs:Vector.<Number>;
|
||||||
public var triangles:Vector.<uint>;
|
public var triangles:Vector.<uint>;
|
||||||
public var r:Number = 1;
|
public var color:Color = new Color(1, 1, 1, 1);
|
||||||
public var g:Number = 1;
|
|
||||||
public var b:Number = 1;
|
|
||||||
public var a:Number = 1;
|
|
||||||
public var hullLength:int;
|
public var hullLength:int;
|
||||||
private var _parentMesh:MeshAttachment;
|
private var _parentMesh:MeshAttachment;
|
||||||
public var inheritDeform:Boolean;
|
public var inheritDeform:Boolean;
|
||||||
|
|||||||
57
spine-as3/spine-as3/src/spine/attachments/PointAttachment.as
Normal file
57
spine-as3/spine-as3/src/spine/attachments/PointAttachment.as
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
/******************************************************************************
|
||||||
|
* Spine Runtimes Software License v2.5
|
||||||
|
*
|
||||||
|
* Copyright (c) 2013-2016, 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 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 develop new applications using the Spine Runtimes or otherwise
|
||||||
|
* create derivative works or improvements of the Spine Runtimes 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, BUSINESS INTERRUPTION, OR LOSS OF
|
||||||
|
* USE, DATA, OR PROFITS) 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 spine.attachments {
|
||||||
|
import spine.Color;
|
||||||
|
import spine.MathUtils;
|
||||||
|
import spine.Bone;
|
||||||
|
|
||||||
|
public dynamic class PointAttachment extends VertexAttachment {
|
||||||
|
public var x: Number, y: Number, rotation: Number;
|
||||||
|
public var color:Color = new Color(0.38, 0.94, 0, 1);
|
||||||
|
|
||||||
|
public function PointAttachment (name:String) {
|
||||||
|
super(name);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function computeWorldPosition (bone: Bone, point: Vector.<Number>): Vector.<Number> {
|
||||||
|
point[0] = this.x * bone.a + this.y * bone.b + bone.worldX;
|
||||||
|
point[1] = this.x * bone.c + this.y * bone.d + bone.worldY;
|
||||||
|
return point;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function computeWorldRotation (bone: Bone): Number {
|
||||||
|
var cos:Number = MathUtils.cosDeg(this.rotation), sin: Number = MathUtils.sinDeg(this.rotation);
|
||||||
|
var x:Number = cos * bone.a + sin * bone.b;
|
||||||
|
var y:Number = cos * bone.c + sin * bone.d;
|
||||||
|
return Math.atan2(y, x) * MathUtils.radDeg;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -29,6 +29,7 @@
|
|||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
|
|
||||||
package spine.attachments {
|
package spine.attachments {
|
||||||
|
import spine.Color;
|
||||||
import spine.Bone;
|
import spine.Bone;
|
||||||
|
|
||||||
public dynamic class RegionAttachment extends Attachment {
|
public dynamic class RegionAttachment extends Attachment {
|
||||||
@ -48,10 +49,7 @@ public dynamic class RegionAttachment extends Attachment {
|
|||||||
public var rotation:Number;
|
public var rotation:Number;
|
||||||
public var width:Number;
|
public var width:Number;
|
||||||
public var height:Number;
|
public var height:Number;
|
||||||
public var r:Number = 1;
|
public var color:Color = new Color(1, 1, 1, 1);
|
||||||
public var g:Number = 1;
|
|
||||||
public var b:Number = 1;
|
|
||||||
public var a:Number = 1;
|
|
||||||
|
|
||||||
public var path:String;
|
public var path:String;
|
||||||
public var rendererObject:Object;
|
public var rendererObject:Object;
|
||||||
@ -71,28 +69,6 @@ public dynamic class RegionAttachment extends Attachment {
|
|||||||
uvs.length = 8;
|
uvs.length = 8;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function setUVs (u:Number, v:Number, u2:Number, v2:Number, rotate:Boolean) : void {
|
|
||||||
if (rotate) {
|
|
||||||
uvs[X2] = u;
|
|
||||||
uvs[Y2] = v2;
|
|
||||||
uvs[X3] = u;
|
|
||||||
uvs[Y3] = v;
|
|
||||||
uvs[X4] = u2;
|
|
||||||
uvs[Y4] = v;
|
|
||||||
uvs[X1] = u2;
|
|
||||||
uvs[Y1] = v2;
|
|
||||||
} else {
|
|
||||||
uvs[X1] = u;
|
|
||||||
uvs[Y1] = v2;
|
|
||||||
uvs[X2] = u;
|
|
||||||
uvs[Y2] = v;
|
|
||||||
uvs[X3] = u2;
|
|
||||||
uvs[Y3] = v;
|
|
||||||
uvs[X4] = u2;
|
|
||||||
uvs[Y4] = v2;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public function updateOffset () : void {
|
public function updateOffset () : void {
|
||||||
var regionScaleX:Number = width / regionOriginalWidth * scaleX;
|
var regionScaleX:Number = width / regionOriginalWidth * scaleX;
|
||||||
var regionScaleY:Number = height / regionOriginalHeight * scaleY;
|
var regionScaleY:Number = height / regionOriginalHeight * scaleY;
|
||||||
@ -120,30 +96,58 @@ public dynamic class RegionAttachment extends Attachment {
|
|||||||
offset[X4] = localX2Cos - localYSin;
|
offset[X4] = localX2Cos - localYSin;
|
||||||
offset[Y4] = localYCos + localX2Sin;
|
offset[Y4] = localYCos + localX2Sin;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function setUVs (u:Number, v:Number, u2:Number, v2:Number, rotate:Boolean) : void {
|
||||||
|
var uvs:Vector.<Number> = this.uvs;
|
||||||
|
if (rotate) {
|
||||||
|
uvs[X2] = u;
|
||||||
|
uvs[Y2] = v2;
|
||||||
|
uvs[X3] = u;
|
||||||
|
uvs[Y3] = v;
|
||||||
|
uvs[X4] = u2;
|
||||||
|
uvs[Y4] = v;
|
||||||
|
uvs[X1] = u2;
|
||||||
|
uvs[Y1] = v2;
|
||||||
|
} else {
|
||||||
|
uvs[X1] = u;
|
||||||
|
uvs[Y1] = v2;
|
||||||
|
uvs[X2] = u;
|
||||||
|
uvs[Y2] = v;
|
||||||
|
uvs[X3] = u2;
|
||||||
|
uvs[Y3] = v;
|
||||||
|
uvs[X4] = u2;
|
||||||
|
uvs[Y4] = v2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public function computeWorldVertices (x:Number, y:Number, bone:Bone, worldVertices:Vector.<Number>) : void {
|
public function computeWorldVertices (bone:Bone, worldVertices:Vector.<Number>, offset:int, stride:int) : void {
|
||||||
x += bone.worldX;
|
var vertexOffset:Vector.<Number> = this.offset;
|
||||||
y += bone.worldY;
|
var x:Number = bone.worldX, y:Number = bone.worldY;
|
||||||
var m00:Number = bone.a;
|
var a:Number = bone.a, b:Number = bone.b, c:Number = bone.c, d:Number = bone.d;
|
||||||
var m01:Number = bone.b;
|
var offsetX:Number = 0, offsetY:Number = 0;
|
||||||
var m10:Number = bone.c;
|
|
||||||
var m11:Number = bone.d;
|
offsetX = vertexOffset[X1];
|
||||||
var x1:Number = offset[X1];
|
offsetY = vertexOffset[Y1];
|
||||||
var y1:Number = offset[Y1];
|
worldVertices[offset] = offsetX * a + offsetY * b + x; // br
|
||||||
var x2:Number = offset[X2];
|
worldVertices[offset + 1] = offsetX * c + offsetY * d + y;
|
||||||
var y2:Number = offset[Y2];
|
offset += stride;
|
||||||
var x3:Number = offset[X3];
|
|
||||||
var y3:Number = offset[Y3];
|
offsetX = vertexOffset[X2];
|
||||||
var x4:Number = offset[X4];
|
offsetY = vertexOffset[Y2];
|
||||||
var y4:Number = offset[Y4];
|
worldVertices[offset] = offsetX * a + offsetY * b + x; // bl
|
||||||
worldVertices[X1] = x1 * m00 + y1 * m01 + x;
|
worldVertices[offset + 1] = offsetX * c + offsetY * d + y;
|
||||||
worldVertices[Y1] = x1 * m10 + y1 * m11 + y;
|
offset += stride;
|
||||||
worldVertices[X2] = x2 * m00 + y2 * m01 + x;
|
|
||||||
worldVertices[Y2] = x2 * m10 + y2 * m11 + y;
|
offsetX = vertexOffset[X3];
|
||||||
worldVertices[X3] = x3 * m00 + y3 * m01 + x;
|
offsetY = vertexOffset[Y3];
|
||||||
worldVertices[Y3] = x3 * m10 + y3 * m11 + y;
|
worldVertices[offset] = offsetX * a + offsetY * b + x; // ul
|
||||||
worldVertices[X4] = x4 * m00 + y4 * m01 + x;
|
worldVertices[offset + 1] = offsetX * c + offsetY * d + y;
|
||||||
worldVertices[Y4] = x4 * m10 + y4 * m11 + y;
|
offset += stride;
|
||||||
|
|
||||||
|
offsetX = vertexOffset[X4];
|
||||||
|
offsetY = vertexOffset[Y4];
|
||||||
|
worldVertices[offset] = offsetX * a + offsetY * b + x; // ur
|
||||||
|
worldVertices[offset + 1] = offsetX * c + offsetY * d + y;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -42,17 +42,13 @@ public dynamic class VertexAttachment extends Attachment {
|
|||||||
super(name);
|
super(name);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function computeWorldVertices (slot:Slot, worldVertices:Vector.<Number>): void {
|
|
||||||
computeWorldVertices2(slot, 0, worldVerticesLength, worldVertices, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Transforms local vertices to world coordinates.
|
/** Transforms local vertices to world coordinates.
|
||||||
* @param start The index of the first local vertex value to transform. Each vertex has 2 values, x and y.
|
* @param start The index of the first local vertex value to transform. Each vertex has 2 values, x and y.
|
||||||
* @param count The number of world vertex values to output. Must be <= {@link #getWorldVerticesLength()} - start.
|
* @param count The number of world vertex values to output. Must be <= {@link #getWorldVerticesLength()} - start.
|
||||||
* @param worldVertices The output world vertices. Must have a length >= offset + count.
|
* @param worldVertices The output world vertices. Must have a length >= offset + count.
|
||||||
* @param offset The worldVertices index to begin writing values. */
|
* @param offset The worldVertices index to begin writing values. */
|
||||||
public function computeWorldVertices2 (slot:Slot, start:int, count:int, worldVertices:Vector.<Number>, offset:int): void {
|
public function computeWorldVertices (slot:Slot, start:int, count:int, worldVertices:Vector.<Number>, offset:int, stride:int): void {
|
||||||
count += offset;
|
count = offset + (count >> 1) * stride;
|
||||||
var skeleton:Skeleton = slot.skeleton;
|
var skeleton:Skeleton = slot.skeleton;
|
||||||
var deformArray:Vector.<Number> = slot.attachmentVertices;
|
var deformArray:Vector.<Number> = slot.attachmentVertices;
|
||||||
var vertices:Vector.<Number> = this.vertices;
|
var vertices:Vector.<Number> = this.vertices;
|
||||||
@ -70,7 +66,7 @@ public dynamic class VertexAttachment extends Attachment {
|
|||||||
var x:Number = bone.worldX;
|
var x:Number = bone.worldX;
|
||||||
var y:Number = bone.worldY;
|
var y:Number = bone.worldY;
|
||||||
var a:Number = bone.a, bb:Number = bone.b, c:Number = bone.c, d:Number = bone.d;
|
var a:Number = bone.a, bb:Number = bone.b, c:Number = bone.c, d:Number = bone.d;
|
||||||
for (v = start, w = offset; w < count; v += 2, w += 2) {
|
for (v = start, w = offset; w < count; v += 2, w += stride) {
|
||||||
vx = vertices[v], vy = vertices[v + 1];
|
vx = vertices[v], vy = vertices[v + 1];
|
||||||
worldVertices[w] = vx * a + vy * bb + x;
|
worldVertices[w] = vx * a + vy * bb + x;
|
||||||
worldVertices[w + 1] = vx * c + vy * d + y;
|
worldVertices[w + 1] = vx * c + vy * d + y;
|
||||||
@ -85,7 +81,7 @@ public dynamic class VertexAttachment extends Attachment {
|
|||||||
}
|
}
|
||||||
var skeletonBones:Vector.<Bone> = skeleton.bones;
|
var skeletonBones:Vector.<Bone> = skeleton.bones;
|
||||||
if (deformArray.length == 0) {
|
if (deformArray.length == 0) {
|
||||||
for (w = offset, b = skip * 3; w < count; w += 2) {
|
for (w = offset, b = skip * 3; w < count; w += stride) {
|
||||||
wx = 0, wy = 0;
|
wx = 0, wy = 0;
|
||||||
n = bones[v++];
|
n = bones[v++];
|
||||||
n += v;
|
n += v;
|
||||||
@ -100,7 +96,7 @@ public dynamic class VertexAttachment extends Attachment {
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
deform = deformArray;
|
deform = deformArray;
|
||||||
for (w = offset, b = skip * 3, f = skip << 1; w < count; w += 2) {
|
for (w = offset, b = skip * 3, f = skip << 1; w < count; w += stride) {
|
||||||
wx = 0; wy = 0;
|
wx = 0; wy = 0;
|
||||||
n = bones[v++];
|
n = bones[v++];
|
||||||
n += v;
|
n += v;
|
||||||
|
|||||||
@ -125,10 +125,10 @@ public class SkeletonSprite extends Sprite {
|
|||||||
wrapper.blendMode = blendModes[slot.data.blendMode.ordinal];
|
wrapper.blendMode = blendModes[slot.data.blendMode.ordinal];
|
||||||
|
|
||||||
var colorTransform:ColorTransform = wrapper.transform.colorTransform;
|
var colorTransform:ColorTransform = wrapper.transform.colorTransform;
|
||||||
colorTransform.redMultiplier = skeleton.r * slot.r * regionAttachment.r;
|
colorTransform.redMultiplier = skeleton.color.r * slot.color.r * regionAttachment.color.r;
|
||||||
colorTransform.greenMultiplier = skeleton.g * slot.g * regionAttachment.g;
|
colorTransform.greenMultiplier = skeleton.color.g * slot.color.g * regionAttachment.color.g;
|
||||||
colorTransform.blueMultiplier = skeleton.b * slot.b * regionAttachment.b;
|
colorTransform.blueMultiplier = skeleton.color.b * slot.color.b * regionAttachment.color.b;
|
||||||
colorTransform.alphaMultiplier = skeleton.a * slot.a * regionAttachment.a;
|
colorTransform.alphaMultiplier = skeleton.color.a * slot.color.a * regionAttachment.color.a;
|
||||||
wrapper.transform.colorTransform = colorTransform;
|
wrapper.transform.colorTransform = colorTransform;
|
||||||
|
|
||||||
var bone:Bone = slot.bone;
|
var bone:Bone = slot.bone;
|
||||||
|
|||||||
@ -3,7 +3,7 @@ project(spine_unit_test)
|
|||||||
|
|
||||||
set(CMAKE_INSTALL_PREFIX "./")
|
set(CMAKE_INSTALL_PREFIX "./")
|
||||||
set(CMAKE_VERBOSE_MAKEFILE ON)
|
set(CMAKE_VERBOSE_MAKEFILE ON)
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_CRT_SECURE_NO_WARNINGS -DKANJI_MEMTRACE -DUSE_CPP11_MUTEX")
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_CRT_SECURE_NO_WARNINGS -DKANJI_MEMTRACE -DUSE_CPP11_MUTEX -std=c++11")
|
||||||
|
|
||||||
#########################################################
|
#########################################################
|
||||||
# set includes
|
# set includes
|
||||||
@ -55,4 +55,4 @@ add_custom_command(TARGET spine_unit_test PRE_BUILD
|
|||||||
|
|
||||||
add_custom_command(TARGET spine_unit_test PRE_BUILD
|
add_custom_command(TARGET spine_unit_test PRE_BUILD
|
||||||
COMMAND ${CMAKE_COMMAND} -E copy_directory
|
COMMAND ${CMAKE_COMMAND} -E copy_directory
|
||||||
${CMAKE_CURRENT_LIST_DIR}/../../examples/goblins/export $<TARGET_FILE_DIR:spine_unit_test>/testdata/goblins)
|
${CMAKE_CURRENT_LIST_DIR}/../../examples/goblins/export $<TARGET_FILE_DIR:spine_unit_test>/testdata/goblins)
|
||||||
|
|||||||
@ -11,6 +11,7 @@
|
|||||||
|
|
||||||
#include <ctime>
|
#include <ctime>
|
||||||
#include "KString.h"
|
#include "KString.h"
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
#include "spine/extension.h"
|
#include "spine/extension.h"
|
||||||
#include "spine/spine.h"
|
#include "spine/spine.h"
|
||||||
@ -63,7 +64,7 @@ int main(int argc, char* argv[])
|
|||||||
extern "C" { // probably unnecessary
|
extern "C" { // probably unnecessary
|
||||||
|
|
||||||
void _spAtlasPage_createTexture(spAtlasPage* self, const char* path) {
|
void _spAtlasPage_createTexture(spAtlasPage* self, const char* path) {
|
||||||
self->rendererObject = nullptr;
|
self->rendererObject = 0;
|
||||||
self->width = 2048;
|
self->width = 2048;
|
||||||
self->height = 2048;
|
self->height = 2048;
|
||||||
}
|
}
|
||||||
@ -74,4 +75,4 @@ extern "C" { // probably unnecessary
|
|||||||
char* _spUtil_readFile(const char* path, int* length) {
|
char* _spUtil_readFile(const char* path, int* length) {
|
||||||
return _readFile(path, length);
|
return _readFile(path, length);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -27,10 +27,10 @@ void C_InterfaceTestFixture::tearDown()
|
|||||||
|
|
||||||
static spSkeletonData* readSkeletonJsonData(const char* filename, spAtlas* atlas) {
|
static spSkeletonData* readSkeletonJsonData(const char* filename, spAtlas* atlas) {
|
||||||
spSkeletonJson* json = spSkeletonJson_create(atlas);
|
spSkeletonJson* json = spSkeletonJson_create(atlas);
|
||||||
ASSERT(json != nullptr);
|
ASSERT(json != 0);
|
||||||
|
|
||||||
spSkeletonData* skeletonData = spSkeletonJson_readSkeletonDataFile(json, filename);
|
spSkeletonData* skeletonData = spSkeletonJson_readSkeletonDataFile(json, filename);
|
||||||
ASSERT(skeletonData != nullptr);
|
ASSERT(skeletonData != 0);
|
||||||
|
|
||||||
spSkeletonJson_dispose(json);
|
spSkeletonJson_dispose(json);
|
||||||
return skeletonData;
|
return skeletonData;
|
||||||
@ -54,22 +54,22 @@ static void testRunner(const char* jsonName, const char* atlasName)
|
|||||||
///////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////
|
||||||
// Global Animation Information
|
// Global Animation Information
|
||||||
spAtlas* atlas = spAtlas_createFromFile(atlasName, 0);
|
spAtlas* atlas = spAtlas_createFromFile(atlasName, 0);
|
||||||
ASSERT(atlas != nullptr);
|
ASSERT(atlas != 0);
|
||||||
|
|
||||||
spSkeletonData* skeletonData = readSkeletonJsonData(jsonName, atlas);
|
spSkeletonData* skeletonData = readSkeletonJsonData(jsonName, atlas);
|
||||||
ASSERT(skeletonData != nullptr);
|
ASSERT(skeletonData != 0);
|
||||||
|
|
||||||
spAnimationStateData* stateData = spAnimationStateData_create(skeletonData);
|
spAnimationStateData* stateData = spAnimationStateData_create(skeletonData);
|
||||||
ASSERT(stateData != nullptr);
|
ASSERT(stateData != 0);
|
||||||
stateData->defaultMix = 0.2f; // force mixing
|
stateData->defaultMix = 0.2f; // force mixing
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////
|
||||||
// Animation Instance
|
// Animation Instance
|
||||||
spSkeleton* skeleton = spSkeleton_create(skeletonData);
|
spSkeleton* skeleton = spSkeleton_create(skeletonData);
|
||||||
ASSERT(skeleton != nullptr);
|
ASSERT(skeleton != 0);
|
||||||
|
|
||||||
spAnimationState* state = spAnimationState_create(stateData);
|
spAnimationState* state = spAnimationState_create(stateData);
|
||||||
ASSERT(state != nullptr);
|
ASSERT(state != 0);
|
||||||
|
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////
|
||||||
|
|||||||
@ -40,10 +40,10 @@ void MemoryTestFixture::tearDown()
|
|||||||
// Helper methods
|
// Helper methods
|
||||||
static spSkeletonData* readSkeletonJsonData(const char* filename, spAtlas* atlas) {
|
static spSkeletonData* readSkeletonJsonData(const char* filename, spAtlas* atlas) {
|
||||||
spSkeletonJson* json = spSkeletonJson_create(atlas);
|
spSkeletonJson* json = spSkeletonJson_create(atlas);
|
||||||
ASSERT(json != nullptr);
|
ASSERT(json != 0);
|
||||||
|
|
||||||
spSkeletonData* skeletonData = spSkeletonJson_readSkeletonDataFile(json, filename);
|
spSkeletonData* skeletonData = spSkeletonJson_readSkeletonDataFile(json, filename);
|
||||||
ASSERT(skeletonData != nullptr);
|
ASSERT(skeletonData != 0);
|
||||||
|
|
||||||
spSkeletonJson_dispose(json);
|
spSkeletonJson_dispose(json);
|
||||||
return skeletonData;
|
return skeletonData;
|
||||||
@ -54,22 +54,22 @@ static void LoadSpineboyExample(spAtlas* &atlas, spSkeletonData* &skeletonData,
|
|||||||
///////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////
|
||||||
// Global Animation Information
|
// Global Animation Information
|
||||||
atlas = spAtlas_createFromFile(SPINEBOY_ATLAS, 0);
|
atlas = spAtlas_createFromFile(SPINEBOY_ATLAS, 0);
|
||||||
ASSERT(atlas != nullptr);
|
ASSERT(atlas != 0);
|
||||||
|
|
||||||
skeletonData = readSkeletonJsonData(SPINEBOY_JSON, atlas);
|
skeletonData = readSkeletonJsonData(SPINEBOY_JSON, atlas);
|
||||||
ASSERT(skeletonData != nullptr);
|
ASSERT(skeletonData != 0);
|
||||||
|
|
||||||
stateData = spAnimationStateData_create(skeletonData);
|
stateData = spAnimationStateData_create(skeletonData);
|
||||||
ASSERT(stateData != nullptr);
|
ASSERT(stateData != 0);
|
||||||
stateData->defaultMix = 0.4f; // force mixing
|
stateData->defaultMix = 0.4f; // force mixing
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////
|
||||||
// Animation Instance
|
// Animation Instance
|
||||||
skeleton = spSkeleton_create(skeletonData);
|
skeleton = spSkeleton_create(skeletonData);
|
||||||
ASSERT(skeleton != nullptr);
|
ASSERT(skeleton != 0);
|
||||||
|
|
||||||
state = spAnimationState_create(stateData);
|
state = spAnimationState_create(stateData);
|
||||||
ASSERT(state != nullptr);
|
ASSERT(state != 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void DisposeAll(spSkeleton* skeleton, spAnimationState* state, spAnimationStateData* stateData, spSkeletonData* skeletonData, spAtlas* atlas)
|
static void DisposeAll(spSkeleton* skeleton, spAnimationState* state, spAnimationStateData* stateData, spSkeletonData* skeletonData, spAtlas* atlas)
|
||||||
@ -92,11 +92,11 @@ static void DisposeAll(spSkeleton* skeleton, spAnimationState* state, spAnimatio
|
|||||||
// https://github.com/EsotericSoftware/spine-runtimes/issues/776
|
// https://github.com/EsotericSoftware/spine-runtimes/issues/776
|
||||||
void MemoryTestFixture::reproduceIssue_776()
|
void MemoryTestFixture::reproduceIssue_776()
|
||||||
{
|
{
|
||||||
spAtlas* atlas = nullptr;
|
spAtlas* atlas = 0;
|
||||||
spSkeletonData* skeletonData = nullptr;
|
spSkeletonData* skeletonData = 0;
|
||||||
spAnimationStateData* stateData = nullptr;
|
spAnimationStateData* stateData = 0;
|
||||||
spSkeleton* skeleton = nullptr;
|
spSkeleton* skeleton = 0;
|
||||||
spAnimationState* state = nullptr;
|
spAnimationState* state = 0;
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////
|
||||||
// Initialize Animations
|
// Initialize Animations
|
||||||
@ -134,11 +134,11 @@ void MemoryTestFixture::reproduceIssue_776()
|
|||||||
|
|
||||||
void MemoryTestFixture::reproduceIssue_777()
|
void MemoryTestFixture::reproduceIssue_777()
|
||||||
{
|
{
|
||||||
spAtlas* atlas = nullptr;
|
spAtlas* atlas = 0;
|
||||||
spSkeletonData* skeletonData = nullptr;
|
spSkeletonData* skeletonData = 0;
|
||||||
spAnimationStateData* stateData = nullptr;
|
spAnimationStateData* stateData = 0;
|
||||||
spSkeleton* skeleton = nullptr;
|
spSkeleton* skeleton = 0;
|
||||||
spAnimationState* state = nullptr;
|
spAnimationState* state = 0;
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////
|
||||||
// Initialize Animations
|
// Initialize Animations
|
||||||
@ -179,7 +179,7 @@ void MemoryTestFixture::reproduceIssue_777()
|
|||||||
DisposeAll(skeleton, state, stateData, skeletonData, atlas);
|
DisposeAll(skeleton, state, stateData, skeletonData, atlas);
|
||||||
}
|
}
|
||||||
|
|
||||||
spSkeleton* skeleton = nullptr;
|
spSkeleton* skeleton = 0;
|
||||||
static void spineAnimStateHandler(spAnimationState* state, int type, spTrackEntry* entry, spEvent* event)
|
static void spineAnimStateHandler(spAnimationState* state, int type, spTrackEntry* entry, spEvent* event)
|
||||||
{
|
{
|
||||||
if (type == SP_ANIMATION_COMPLETE)
|
if (type == SP_ANIMATION_COMPLETE)
|
||||||
@ -192,10 +192,10 @@ static void spineAnimStateHandler(spAnimationState* state, int type, spTrackEnt
|
|||||||
|
|
||||||
void MemoryTestFixture::reproduceIssue_Loop()
|
void MemoryTestFixture::reproduceIssue_Loop()
|
||||||
{
|
{
|
||||||
spAtlas* atlas = nullptr;
|
spAtlas* atlas = 0;
|
||||||
spSkeletonData* skeletonData = nullptr;
|
spSkeletonData* skeletonData = 0;
|
||||||
spAnimationStateData* stateData = nullptr;
|
spAnimationStateData* stateData = 0;
|
||||||
spAnimationState* state = nullptr;
|
spAnimationState* state = 0;
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////
|
||||||
// Initialize Animations
|
// Initialize Animations
|
||||||
|
|||||||
@ -13,7 +13,7 @@ SpineEventMonitor::SpineEventMonitor(spAnimationState* _pAnimationState /*= null
|
|||||||
|
|
||||||
SpineEventMonitor::~SpineEventMonitor()
|
SpineEventMonitor::~SpineEventMonitor()
|
||||||
{
|
{
|
||||||
pAnimState = nullptr;
|
pAnimState = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void SpineEventMonitor::RegisterListener(spAnimationState * _pAnimationState)
|
void SpineEventMonitor::RegisterListener(spAnimationState * _pAnimationState)
|
||||||
@ -28,7 +28,7 @@ void SpineEventMonitor::RegisterListener(spAnimationState * _pAnimationState)
|
|||||||
bool SpineEventMonitor::isAnimationPlaying()
|
bool SpineEventMonitor::isAnimationPlaying()
|
||||||
{
|
{
|
||||||
if (pAnimState)
|
if (pAnimState)
|
||||||
return spAnimationState_getCurrent(pAnimState, 0) != nullptr;
|
return spAnimationState_getCurrent(pAnimState, 0) != 0;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -42,7 +42,7 @@ void SpineEventMonitor::spineAnimStateHandler(spAnimationState * state, int type
|
|||||||
|
|
||||||
void SpineEventMonitor::OnSpineAnimationStateEvent(spAnimationState * state, int type, spTrackEntry * trackEntry, spEvent * event)
|
void SpineEventMonitor::OnSpineAnimationStateEvent(spAnimationState * state, int type, spTrackEntry * trackEntry, spEvent * event)
|
||||||
{
|
{
|
||||||
const char* eventName = nullptr;
|
const char* eventName = 0;
|
||||||
if (state == pAnimState) { // only monitor ours
|
if (state == pAnimState) { // only monitor ours
|
||||||
switch(type)
|
switch(type)
|
||||||
{
|
{
|
||||||
@ -135,7 +135,7 @@ inline bool InterruptMonitor::InterruptEvent::matches(spAnimationState * state,
|
|||||||
if (mEventType == type) {
|
if (mEventType == type) {
|
||||||
|
|
||||||
// Looking for specific TrackEntry by pointer
|
// Looking for specific TrackEntry by pointer
|
||||||
if (mTrackEntry != nullptr) {
|
if (mTrackEntry != 0) {
|
||||||
return mTrackEntry == trackEntry;
|
return mTrackEntry == trackEntry;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -25,7 +25,7 @@ typedef struct spEvent spEvent;
|
|||||||
class SpineEventMonitor
|
class SpineEventMonitor
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
SpineEventMonitor(spAnimationState* _pAnimationState = nullptr);
|
SpineEventMonitor(spAnimationState* _pAnimationState = 0);
|
||||||
virtual ~SpineEventMonitor();
|
virtual ~SpineEventMonitor();
|
||||||
|
|
||||||
void RegisterListener(spAnimationState* _pAnimationState);
|
void RegisterListener(spAnimationState* _pAnimationState);
|
||||||
@ -58,7 +58,7 @@ private:
|
|||||||
{
|
{
|
||||||
InterruptEvent() {
|
InterruptEvent() {
|
||||||
mEventType = -1; // invalid
|
mEventType = -1; // invalid
|
||||||
mTrackEntry = nullptr;
|
mTrackEntry = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool matches(spAnimationState* state, int type, spTrackEntry* trackEntry, spEvent* event);
|
bool matches(spAnimationState* state, int type, spTrackEntry* trackEntry, spEvent* event);
|
||||||
@ -72,7 +72,7 @@ private:
|
|||||||
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
InterruptMonitor(spAnimationState* _pAnimationState = nullptr);
|
InterruptMonitor(spAnimationState* _pAnimationState = 0);
|
||||||
~InterruptMonitor() {}
|
~InterruptMonitor() {}
|
||||||
|
|
||||||
virtual bool isAnimationPlaying() override;
|
virtual bool isAnimationPlaying() override;
|
||||||
@ -119,4 +119,4 @@ eventMonitor
|
|||||||
.AddInterruptEvent(SP_ANIMATION_START); // Then, stop on any following START signal
|
.AddInterruptEvent(SP_ANIMATION_START); // Then, stop on any following START signal
|
||||||
|
|
||||||
|
|
||||||
*/
|
*/
|
||||||
|
|||||||
@ -90,7 +90,8 @@ typedef enum {
|
|||||||
SP_TIMELINE_TRANSFORMCONSTRAINT,
|
SP_TIMELINE_TRANSFORMCONSTRAINT,
|
||||||
SP_TIMELINE_PATHCONSTRAINTPOSITION,
|
SP_TIMELINE_PATHCONSTRAINTPOSITION,
|
||||||
SP_TIMELINE_PATHCONSTRAINTSPACING,
|
SP_TIMELINE_PATHCONSTRAINTSPACING,
|
||||||
SP_TIMELINE_PATHCONSTRAINTMIX
|
SP_TIMELINE_PATHCONSTRAINTMIX,
|
||||||
|
SP_TIMELINE_TWOCOLOR
|
||||||
} spTimelineType;
|
} spTimelineType;
|
||||||
|
|
||||||
struct spTimeline {
|
struct spTimeline {
|
||||||
@ -266,6 +267,36 @@ typedef spColorTimeline ColorTimeline;
|
|||||||
|
|
||||||
/**/
|
/**/
|
||||||
|
|
||||||
|
static const int TWOCOLOR_ENTRIES = 8;
|
||||||
|
|
||||||
|
typedef struct spTwoColorTimeline {
|
||||||
|
spCurveTimeline super;
|
||||||
|
int const framesCount;
|
||||||
|
float* const frames; /* time, r, g, b, a, ... */
|
||||||
|
int slotIndex;
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
spTwoColorTimeline() :
|
||||||
|
super(),
|
||||||
|
framesCount(0),
|
||||||
|
frames(0),
|
||||||
|
slotIndex(0) {
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
} spTwoColorTimeline;
|
||||||
|
|
||||||
|
spTwoColorTimeline* spTwoColorTimeline_create (int framesCount);
|
||||||
|
|
||||||
|
void spTwoColorTimeline_setFrame (spTwoColorTimeline* self, int frameIndex, float time, float r, float g, float b, float a, float r2, float g2, float b2);
|
||||||
|
|
||||||
|
#ifdef SPINE_SHORT_NAMES
|
||||||
|
typedef spTwoColorTimeline TwoColorTimeline;
|
||||||
|
#define TwoColorTimeline_create(...) spTwoColorTimeline_create(__VA_ARGS__)
|
||||||
|
#define TwoColorTimeline_setFrame(...) spTwoColorTimeline_setFrame(__VA_ARGS__)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/**/
|
||||||
|
|
||||||
typedef struct spAttachmentTimeline {
|
typedef struct spAttachmentTimeline {
|
||||||
spTimeline super;
|
spTimeline super;
|
||||||
int const framesCount;
|
int const framesCount;
|
||||||
|
|||||||
@ -42,7 +42,8 @@ typedef enum {
|
|||||||
SP_ATTACHMENT_BOUNDING_BOX,
|
SP_ATTACHMENT_BOUNDING_BOX,
|
||||||
SP_ATTACHMENT_MESH,
|
SP_ATTACHMENT_MESH,
|
||||||
SP_ATTACHMENT_LINKED_MESH,
|
SP_ATTACHMENT_LINKED_MESH,
|
||||||
SP_ATTACHMENT_PATH
|
SP_ATTACHMENT_PATH,
|
||||||
|
SP_ATTACHMENT_POINT
|
||||||
} spAttachmentType;
|
} spAttachmentType;
|
||||||
|
|
||||||
typedef struct spAttachment {
|
typedef struct spAttachment {
|
||||||
|
|||||||
@ -90,13 +90,13 @@ float spBone_getWorldRotationY (spBone* self);
|
|||||||
float spBone_getWorldScaleX (spBone* self);
|
float spBone_getWorldScaleX (spBone* self);
|
||||||
float spBone_getWorldScaleY (spBone* self);
|
float spBone_getWorldScaleY (spBone* self);
|
||||||
|
|
||||||
float spBone_worldToLocalRotationX (spBone* self);
|
|
||||||
float spBone_worldToLocalRotationY (spBone* self);
|
|
||||||
void spBone_rotateWorld (spBone* self, float degrees);
|
|
||||||
void spBone_updateAppliedTransform (spBone* self);
|
void spBone_updateAppliedTransform (spBone* self);
|
||||||
|
|
||||||
void spBone_worldToLocal (spBone* self, float worldX, float worldY, float* localX, float* localY);
|
void spBone_worldToLocal (spBone* self, float worldX, float worldY, float* localX, float* localY);
|
||||||
void spBone_localToWorld (spBone* self, float localX, float localY, float* worldX, float* worldY);
|
void spBone_localToWorld (spBone* self, float localX, float localY, float* worldX, float* worldY);
|
||||||
|
float spBone_worldToLocalRotation (spBone* self, float worldRotation);
|
||||||
|
float spBone_localToWorldRotation (spBone* self, float localRotation);
|
||||||
|
void spBone_rotateWorld (spBone* self, float degrees);
|
||||||
|
|
||||||
#ifdef SPINE_SHORT_NAMES
|
#ifdef SPINE_SHORT_NAMES
|
||||||
typedef spBone Bone;
|
typedef spBone Bone;
|
||||||
@ -111,12 +111,12 @@ typedef spBone Bone;
|
|||||||
#define Bone_getWorldRotationY(...) spBone_getWorldRotationY(__VA_ARGS__)
|
#define Bone_getWorldRotationY(...) spBone_getWorldRotationY(__VA_ARGS__)
|
||||||
#define Bone_getWorldScaleX(...) spBone_getWorldScaleX(__VA_ARGS__)
|
#define Bone_getWorldScaleX(...) spBone_getWorldScaleX(__VA_ARGS__)
|
||||||
#define Bone_getWorldScaleY(...) spBone_getWorldScaleY(__VA_ARGS__)
|
#define Bone_getWorldScaleY(...) spBone_getWorldScaleY(__VA_ARGS__)
|
||||||
#define Bone_worldToLocalRotationX(...) spBone_worldToLocalRotationX(__VA_ARGS__)
|
|
||||||
#define Bone_worldToLocalRotationY(...) spBone_worldToLocalRotationY(__VA_ARGS__)
|
|
||||||
#define Bone_rotateWorld(...) spBone_rotateWorld(__VA_ARGS__)
|
|
||||||
#define Bone_updateAppliedTransform(...) spBone_updateAppliedTransform(__VA_ARGS__)
|
#define Bone_updateAppliedTransform(...) spBone_updateAppliedTransform(__VA_ARGS__)
|
||||||
#define Bone_worldToLocal(...) spBone_worldToLocal(__VA_ARGS__)
|
#define Bone_worldToLocal(...) spBone_worldToLocal(__VA_ARGS__)
|
||||||
#define Bone_localToWorld(...) spBone_localToWorld(__VA_ARGS__)
|
#define Bone_localToWorld(...) spBone_localToWorld(__VA_ARGS__)
|
||||||
|
#define Bone_worldToLocalRotation(...) spBone_worldToLocalRotation(__VA_ARGS__)
|
||||||
|
#define Bone_localToWorldRotation(...) spBone_localToWorldRotation(__VA_ARGS__)
|
||||||
|
#define Bone_rotateWorld(...) spBone_rotateWorld(__VA_ARGS__)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
|
|||||||
@ -45,12 +45,10 @@ typedef struct spBoundingBoxAttachment {
|
|||||||
} spBoundingBoxAttachment;
|
} spBoundingBoxAttachment;
|
||||||
|
|
||||||
spBoundingBoxAttachment* spBoundingBoxAttachment_create (const char* name);
|
spBoundingBoxAttachment* spBoundingBoxAttachment_create (const char* name);
|
||||||
void spBoundingBoxAttachment_computeWorldVertices (spBoundingBoxAttachment* self, spSlot* slot, float* worldVertices);
|
|
||||||
|
|
||||||
#ifdef SPINE_SHORT_NAMES
|
#ifdef SPINE_SHORT_NAMES
|
||||||
typedef spBoundingBoxAttachment BoundingBoxAttachment;
|
typedef spBoundingBoxAttachment BoundingBoxAttachment;
|
||||||
#define BoundingBoxAttachment_create(...) spBoundingBoxAttachment_create(__VA_ARGS__)
|
#define BoundingBoxAttachment_create(...) spBoundingBoxAttachment_create(__VA_ARGS__)
|
||||||
#define BoundingBoxAttachment_computeWorldVertices(...) spBoundingBoxAttachment_computeWorldVertices(__VA_ARGS__)
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
|
|||||||
72
spine-c/spine-c/include/spine/Color.h
Normal file
72
spine-c/spine-c/include/spine/Color.h
Normal file
@ -0,0 +1,72 @@
|
|||||||
|
/******************************************************************************
|
||||||
|
* Spine Runtimes Software License v2.5
|
||||||
|
*
|
||||||
|
* Copyright (c) 2013-2016, 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 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 develop new applications using the Spine Runtimes or otherwise
|
||||||
|
* create derivative works or improvements of the Spine Runtimes 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, BUSINESS INTERRUPTION, OR LOSS OF
|
||||||
|
* USE, DATA, OR PROFITS) 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.
|
||||||
|
*****************************************************************************/
|
||||||
|
|
||||||
|
#ifndef SPINE_COLOR_H_
|
||||||
|
#define SPINE_COLOR_H_
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
typedef struct spColor {
|
||||||
|
float r, g, b, a;
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
spColor() :
|
||||||
|
r(0), g(0), b(0), a(0) {
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
} spColor;
|
||||||
|
|
||||||
|
/* @param attachmentName May be 0 for no setup pose attachment. */
|
||||||
|
spColor* spColor_create();
|
||||||
|
void spColor_dispose(spColor* self);
|
||||||
|
void spColor_setFromFloats(spColor* color, float r, float g, float b, float a);
|
||||||
|
void spColor_setFromColor(spColor* color, spColor* otherColor);
|
||||||
|
void spColor_addFloats(spColor* color, float r, float g, float b, float a);
|
||||||
|
void spColor_addColor(spColor* color, spColor* otherColor);
|
||||||
|
void spColor_clamp(spColor* color);
|
||||||
|
|
||||||
|
#ifdef SPINE_SHORT_NAMES
|
||||||
|
typedef spColor color;
|
||||||
|
#define Color_create() spColor_create()
|
||||||
|
#define Color_dispose(...) spColor_dispose(__VA_ARGS__)
|
||||||
|
#define Color_setFromFloats(...) spColor_setFromFloats(__VA_ARGS__)
|
||||||
|
#define Color_setFromColor(...) spColor_setFromColor(__VA_ARGS__)
|
||||||
|
#define Color_addColor(...) spColor_addColor(__VA_ARGS__)
|
||||||
|
#define Color_addFloats(...) spColor_addFloats(__VA_ARGS__)
|
||||||
|
#define Color_clamp(...) spColor_clamp(__VA_ARGS__)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* SPINE_COLOR_H_ */
|
||||||
@ -59,7 +59,7 @@ struct spMeshAttachment {
|
|||||||
int trianglesCount;
|
int trianglesCount;
|
||||||
unsigned short* triangles;
|
unsigned short* triangles;
|
||||||
|
|
||||||
float r, g, b, a;
|
spColor color;
|
||||||
|
|
||||||
int hullLength;
|
int hullLength;
|
||||||
|
|
||||||
@ -74,14 +74,12 @@ struct spMeshAttachment {
|
|||||||
|
|
||||||
spMeshAttachment* spMeshAttachment_create (const char* name);
|
spMeshAttachment* spMeshAttachment_create (const char* name);
|
||||||
void spMeshAttachment_updateUVs (spMeshAttachment* self);
|
void spMeshAttachment_updateUVs (spMeshAttachment* self);
|
||||||
void spMeshAttachment_computeWorldVertices (spMeshAttachment* self, spSlot* slot, float* worldVertices);
|
|
||||||
void spMeshAttachment_setParentMesh (spMeshAttachment* self, spMeshAttachment* parentMesh);
|
void spMeshAttachment_setParentMesh (spMeshAttachment* self, spMeshAttachment* parentMesh);
|
||||||
|
|
||||||
#ifdef SPINE_SHORT_NAMES
|
#ifdef SPINE_SHORT_NAMES
|
||||||
typedef spMeshAttachment MeshAttachment;
|
typedef spMeshAttachment MeshAttachment;
|
||||||
#define MeshAttachment_create(...) spMeshAttachment_create(__VA_ARGS__)
|
#define MeshAttachment_create(...) spMeshAttachment_create(__VA_ARGS__)
|
||||||
#define MeshAttachment_updateUVs(...) spMeshAttachment_updateUVs(__VA_ARGS__)
|
#define MeshAttachment_updateUVs(...) spMeshAttachment_updateUVs(__VA_ARGS__)
|
||||||
#define MeshAttachment_computeWorldVertices(...) spMeshAttachment_computeWorldVertices(__VA_ARGS__)
|
|
||||||
#define MeshAttachment_setParentMesh(...) spMeshAttachment_setParentMesh(__VA_ARGS__)
|
#define MeshAttachment_setParentMesh(...) spMeshAttachment_setParentMesh(__VA_ARGS__)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
@ -48,8 +48,6 @@ typedef struct spPathAttachment {
|
|||||||
} spPathAttachment;
|
} spPathAttachment;
|
||||||
|
|
||||||
spPathAttachment* spPathAttachment_create (const char* name);
|
spPathAttachment* spPathAttachment_create (const char* name);
|
||||||
void spPathAttachment_computeWorldVertices (spPathAttachment* self, spSlot* slot, float* worldVertices);
|
|
||||||
void spPathAttachment_computeWorldVertices1 (spPathAttachment* self, spSlot* slot, int start, int count, float* worldVertices, int offset);
|
|
||||||
|
|
||||||
#ifdef SPINE_SHORT_NAMES
|
#ifdef SPINE_SHORT_NAMES
|
||||||
typedef spPathAttachment PathAttachment;
|
typedef spPathAttachment PathAttachment;
|
||||||
|
|||||||
64
spine-c/spine-c/include/spine/PointAttachment.h
Normal file
64
spine-c/spine-c/include/spine/PointAttachment.h
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
/******************************************************************************
|
||||||
|
* Spine Runtimes Software License v2.5
|
||||||
|
*
|
||||||
|
* Copyright (c) 2013-2016, 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 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 develop new applications using the Spine Runtimes or otherwise
|
||||||
|
* create derivative works or improvements of the Spine Runtimes 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, BUSINESS INTERRUPTION, OR LOSS OF
|
||||||
|
* USE, DATA, OR PROFITS) 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.
|
||||||
|
*****************************************************************************/
|
||||||
|
|
||||||
|
#ifndef SPINE_POINTATTACHMENT_H_
|
||||||
|
#define SPINE_POINTATTACHMENT_H_
|
||||||
|
|
||||||
|
#include <spine/Attachment.h>
|
||||||
|
#include <spine/VertexAttachment.h>
|
||||||
|
#include <spine/Atlas.h>
|
||||||
|
#include <spine/Slot.h>
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
typedef struct spPointAttachment {
|
||||||
|
spVertexAttachment super;
|
||||||
|
float x, y, rotation;
|
||||||
|
spColor color;
|
||||||
|
} spPointAttachment;
|
||||||
|
|
||||||
|
spPointAttachment* spPointAttachment_create (const char* name);
|
||||||
|
void spPointAttachment_computeWorldPosition (spPointAttachment* self, spBone* bone, float* x, float* y);
|
||||||
|
float spPointAttachment_computeWorldRotation (spPointAttachment* self, spBone* bone);
|
||||||
|
|
||||||
|
#ifdef SPINE_SHORT_NAMES
|
||||||
|
typedef spPointAttachment PointAttachment;
|
||||||
|
#define PointAttachment_create(...) spPointAttachment_create(__VA_ARGS__)
|
||||||
|
#define PointAttachment_computeWorldPosition(...) spPointAttachment_computeWorldPosition(__VA_ARGS__)
|
||||||
|
#define PointAttachment_computeWorldRotation(...) spPointAttachment_computeWorldRotation(__VA_ARGS__)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* SPINE_POINTATTACHMENT_H_ */
|
||||||
@ -47,7 +47,7 @@ typedef struct spRegionAttachment {
|
|||||||
spAttachment super;
|
spAttachment super;
|
||||||
const char* path;
|
const char* path;
|
||||||
float x, y, scaleX, scaleY, rotation, width, height;
|
float x, y, scaleX, scaleY, rotation, width, height;
|
||||||
float r, g, b, a;
|
spColor color;
|
||||||
|
|
||||||
void* rendererObject;
|
void* rendererObject;
|
||||||
int regionOffsetX, regionOffsetY; /* Pixels stripped from the bottom left, unrotated. */
|
int regionOffsetX, regionOffsetY; /* Pixels stripped from the bottom left, unrotated. */
|
||||||
@ -61,7 +61,7 @@ typedef struct spRegionAttachment {
|
|||||||
spRegionAttachment* spRegionAttachment_create (const char* name);
|
spRegionAttachment* spRegionAttachment_create (const char* name);
|
||||||
void spRegionAttachment_setUVs (spRegionAttachment* self, float u, float v, float u2, float v2, int/*bool*/rotate);
|
void spRegionAttachment_setUVs (spRegionAttachment* self, float u, float v, float u2, float v2, int/*bool*/rotate);
|
||||||
void spRegionAttachment_updateOffset (spRegionAttachment* self);
|
void spRegionAttachment_updateOffset (spRegionAttachment* self);
|
||||||
void spRegionAttachment_computeWorldVertices (spRegionAttachment* self, spBone* bone, float* vertices);
|
void spRegionAttachment_computeWorldVertices (spRegionAttachment* self, spBone* bone, float* vertices, int offset, int stride);
|
||||||
|
|
||||||
#ifdef SPINE_SHORT_NAMES
|
#ifdef SPINE_SHORT_NAMES
|
||||||
typedef spVertexIndex VertexIndex;
|
typedef spVertexIndex VertexIndex;
|
||||||
|
|||||||
@ -63,7 +63,7 @@ typedef struct spSkeleton {
|
|||||||
spPathConstraint** pathConstraints;
|
spPathConstraint** pathConstraints;
|
||||||
|
|
||||||
spSkin* const skin;
|
spSkin* const skin;
|
||||||
float r, g, b, a;
|
spColor color;
|
||||||
float time;
|
float time;
|
||||||
int/*bool*/flipX, flipY;
|
int/*bool*/flipX, flipY;
|
||||||
float x, y;
|
float x, y;
|
||||||
@ -85,7 +85,7 @@ typedef struct spSkeleton {
|
|||||||
transformConstraints(0),
|
transformConstraints(0),
|
||||||
|
|
||||||
skin(0),
|
skin(0),
|
||||||
r(0), g(0), b(0), a(0),
|
color(),
|
||||||
time(0),
|
time(0),
|
||||||
flipX(0),
|
flipX(0),
|
||||||
flipY(0),
|
flipY(0),
|
||||||
|
|||||||
@ -42,7 +42,8 @@ extern "C" {
|
|||||||
typedef struct spSlot {
|
typedef struct spSlot {
|
||||||
spSlotData* const data;
|
spSlotData* const data;
|
||||||
spBone* const bone;
|
spBone* const bone;
|
||||||
float r, g, b, a;
|
spColor color;
|
||||||
|
spColor* darkColor;
|
||||||
spAttachment* const attachment;
|
spAttachment* const attachment;
|
||||||
|
|
||||||
int attachmentVerticesCapacity;
|
int attachmentVerticesCapacity;
|
||||||
@ -53,7 +54,8 @@ typedef struct spSlot {
|
|||||||
spSlot() :
|
spSlot() :
|
||||||
data(0),
|
data(0),
|
||||||
bone(0),
|
bone(0),
|
||||||
r(0), g(0), b(0), a(0),
|
color(),
|
||||||
|
darkColor(0),
|
||||||
attachment(0),
|
attachment(0),
|
||||||
attachmentVerticesCapacity(0),
|
attachmentVerticesCapacity(0),
|
||||||
attachmentVerticesCount(0),
|
attachmentVerticesCount(0),
|
||||||
|
|||||||
@ -32,6 +32,7 @@
|
|||||||
#define SPINE_SLOTDATA_H_
|
#define SPINE_SLOTDATA_H_
|
||||||
|
|
||||||
#include <spine/BoneData.h>
|
#include <spine/BoneData.h>
|
||||||
|
#include <spine/Color.h>
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
@ -46,7 +47,8 @@ typedef struct spSlotData {
|
|||||||
const char* const name;
|
const char* const name;
|
||||||
const spBoneData* const boneData;
|
const spBoneData* const boneData;
|
||||||
const char* attachmentName;
|
const char* attachmentName;
|
||||||
float r, g, b, a;
|
spColor color;
|
||||||
|
spColor* darkColor;
|
||||||
spBlendMode blendMode;
|
spBlendMode blendMode;
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
@ -55,7 +57,8 @@ typedef struct spSlotData {
|
|||||||
name(0),
|
name(0),
|
||||||
boneData(0),
|
boneData(0),
|
||||||
attachmentName(0),
|
attachmentName(0),
|
||||||
r(0), g(0), b(0), a(0),
|
color(),
|
||||||
|
darkColor(0),
|
||||||
blendMode(SP_BLEND_MODE_NORMAL) {
|
blendMode(SP_BLEND_MODE_NORMAL) {
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@ -45,6 +45,8 @@ typedef struct spTransformConstraintData {
|
|||||||
spBoneData* target;
|
spBoneData* target;
|
||||||
float rotateMix, translateMix, scaleMix, shearMix;
|
float rotateMix, translateMix, scaleMix, shearMix;
|
||||||
float offsetRotation, offsetX, offsetY, offsetScaleX, offsetScaleY, offsetShearY;
|
float offsetRotation, offsetX, offsetY, offsetScaleX, offsetScaleY, offsetShearY;
|
||||||
|
int /*boolean*/ relative;
|
||||||
|
int /*boolean*/ local;
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
spTransformConstraintData() :
|
spTransformConstraintData() :
|
||||||
@ -61,7 +63,9 @@ typedef struct spTransformConstraintData {
|
|||||||
offsetY(0),
|
offsetY(0),
|
||||||
offsetScaleX(0),
|
offsetScaleX(0),
|
||||||
offsetScaleY(0),
|
offsetScaleY(0),
|
||||||
offsetShearY(0) {
|
offsetShearY(0),
|
||||||
|
relative(0),
|
||||||
|
local(0) {
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
} spTransformConstraintData;
|
} spTransformConstraintData;
|
||||||
|
|||||||
@ -51,13 +51,11 @@ struct spVertexAttachment {
|
|||||||
int worldVerticesLength;
|
int worldVerticesLength;
|
||||||
};
|
};
|
||||||
|
|
||||||
void spVertexAttachment_computeWorldVertices (spVertexAttachment* self, spSlot* slot, float* worldVertices);
|
void spVertexAttachment_computeWorldVertices (spVertexAttachment* self, spSlot* slot, int start, int count, float* worldVertices, int offset, int stride);
|
||||||
void spVertexAttachment_computeWorldVertices1 (spVertexAttachment* self, int start, int count, spSlot* slot, float* worldVertices, int offset);
|
|
||||||
|
|
||||||
#ifdef SPINE_SHORT_NAMES
|
#ifdef SPINE_SHORT_NAMES
|
||||||
typedef spVertexAttachment VertexAttachment;
|
typedef spVertexAttachment VertexAttachment;
|
||||||
#define VertexAttachment_computeWorldVertices(...) spVertexAttachment_computeWorldVertices(__VA_ARGS__)
|
#define VertexAttachment_computeWorldVertices(...) spVertexAttachment_computeWorldVertices(__VA_ARGS__)
|
||||||
#define VertexAttachment_computeWorldVertices1(...) spVertexAttachment_computeWorldVertices1(__VA_ARGS__)
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
|
|||||||
@ -135,6 +135,7 @@
|
|||||||
#include <spine/MeshAttachment.h>
|
#include <spine/MeshAttachment.h>
|
||||||
#include <spine/BoundingBoxAttachment.h>
|
#include <spine/BoundingBoxAttachment.h>
|
||||||
#include <spine/PathAttachment.h>
|
#include <spine/PathAttachment.h>
|
||||||
|
#include <spine/PointAttachment.h>
|
||||||
#include <spine/AnimationState.h>
|
#include <spine/AnimationState.h>
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
|
|||||||
@ -44,6 +44,7 @@
|
|||||||
#include <spine/VertexAttachment.h>
|
#include <spine/VertexAttachment.h>
|
||||||
#include <spine/MeshAttachment.h>
|
#include <spine/MeshAttachment.h>
|
||||||
#include <spine/BoundingBoxAttachment.h>
|
#include <spine/BoundingBoxAttachment.h>
|
||||||
|
#include <spine/PointAttachment.h>
|
||||||
#include <spine/Skeleton.h>
|
#include <spine/Skeleton.h>
|
||||||
#include <spine/SkeletonBounds.h>
|
#include <spine/SkeletonBounds.h>
|
||||||
#include <spine/SkeletonData.h>
|
#include <spine/SkeletonData.h>
|
||||||
|
|||||||
@ -528,10 +528,7 @@ void _spColorTimeline_apply (const spTimeline* timeline, spSkeleton* skeleton, f
|
|||||||
|
|
||||||
if (time < self->frames[0]) {
|
if (time < self->frames[0]) {
|
||||||
if (setupPose) {
|
if (setupPose) {
|
||||||
slot->r = slot->data->r;
|
spColor_setFromColor(&slot->color, &slot->data->color);
|
||||||
slot->g = slot->data->g;
|
|
||||||
slot->b = slot->data->b;
|
|
||||||
slot->a = slot->data->a;
|
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -561,21 +558,12 @@ void _spColorTimeline_apply (const spTimeline* timeline, spSkeleton* skeleton, f
|
|||||||
a += (self->frames[frame + COLOR_A] - a) * percent;
|
a += (self->frames[frame + COLOR_A] - a) * percent;
|
||||||
}
|
}
|
||||||
if (alpha == 1) {
|
if (alpha == 1) {
|
||||||
slot->r = r;
|
spColor_setFromFloats(&slot->color, r, g, b, a);
|
||||||
slot->g = g;
|
|
||||||
slot->b = b;
|
|
||||||
slot->a = a;
|
|
||||||
} else {
|
} else {
|
||||||
if (setupPose) {
|
if (setupPose) {
|
||||||
slot->r = slot->data->r;
|
spColor_setFromColor(&slot->color, &slot->data->color);
|
||||||
slot->g = slot->data->g;
|
|
||||||
slot->b = slot->data->b;
|
|
||||||
slot->a = slot->data->a;
|
|
||||||
}
|
}
|
||||||
slot->r += (r - slot->r) * alpha;
|
spColor_addFloats(&slot->color, (r - slot->color.r) * alpha, (g - slot->color.g) * alpha, (b - slot->color.b) * alpha, (a - slot->color.a) * alpha);
|
||||||
slot->g += (g - slot->g) * alpha;
|
|
||||||
slot->b += (b - slot->b) * alpha;
|
|
||||||
slot->a += (a - slot->a) * alpha;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
UNUSED(lastTime);
|
UNUSED(lastTime);
|
||||||
@ -602,6 +590,103 @@ void spColorTimeline_setFrame (spColorTimeline* self, int frameIndex, float time
|
|||||||
|
|
||||||
/**/
|
/**/
|
||||||
|
|
||||||
|
static const int TWOCOLOR_PREV_TIME = -8, TWOCOLOR_PREV_R = -7, TWOCOLOR_PREV_G = -6, TWOCOLOR_PREV_B = -5, TWOCOLOR_PREV_A = -4;
|
||||||
|
static const int TWOCOLOR_PREV_R2 = -3, TWOCOLOR_PREV_G2 = -2, TWOCOLOR_PREV_B2 = -1;
|
||||||
|
static const int TWOCOLOR_R = 1, TWOCOLOR_G = 2, TWOCOLOR_B = 3, TWOCOLOR_A = 4, TWOCOLOR_R2 = 5, TWOCOLOR_G2 = 6, TWOCOLOR_B2 = 7;
|
||||||
|
|
||||||
|
void _spTwoColorTimeline_apply (const spTimeline* timeline, spSkeleton* skeleton, float lastTime, float time, spEvent** firedEvents,
|
||||||
|
int* eventsCount, float alpha, int setupPose, int mixingOut) {
|
||||||
|
spSlot *slot;
|
||||||
|
int frame;
|
||||||
|
float percent, frameTime;
|
||||||
|
float r, g, b, a, r2, g2, b2;
|
||||||
|
spColor* light;
|
||||||
|
spColor* dark;
|
||||||
|
spColorTimeline* self = (spColorTimeline*)timeline;
|
||||||
|
slot = skeleton->slots[self->slotIndex];
|
||||||
|
|
||||||
|
if (time < self->frames[0]) {
|
||||||
|
if (setupPose) {
|
||||||
|
spColor_setFromColor(&slot->color, &slot->data->color);
|
||||||
|
spColor_setFromColor(slot->darkColor, slot->data->darkColor);
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (time >= self->frames[self->framesCount - TWOCOLOR_ENTRIES]) { /* Time is after last frame */
|
||||||
|
int i = self->framesCount;
|
||||||
|
r = self->frames[i + TWOCOLOR_PREV_R];
|
||||||
|
g = self->frames[i + TWOCOLOR_PREV_G];
|
||||||
|
b = self->frames[i + TWOCOLOR_PREV_B];
|
||||||
|
a = self->frames[i + TWOCOLOR_PREV_A];
|
||||||
|
r2 = self->frames[i + TWOCOLOR_PREV_R2];
|
||||||
|
g2 = self->frames[i + TWOCOLOR_PREV_G2];
|
||||||
|
b2 = self->frames[i + TWOCOLOR_PREV_B2];
|
||||||
|
} else {
|
||||||
|
/* Interpolate between the previous frame and the current frame. */
|
||||||
|
frame = binarySearch(self->frames, self->framesCount, time, TWOCOLOR_ENTRIES);
|
||||||
|
|
||||||
|
r = self->frames[frame + TWOCOLOR_PREV_R];
|
||||||
|
g = self->frames[frame + TWOCOLOR_PREV_G];
|
||||||
|
b = self->frames[frame + TWOCOLOR_PREV_B];
|
||||||
|
a = self->frames[frame + TWOCOLOR_PREV_A];
|
||||||
|
r2 = self->frames[frame + TWOCOLOR_PREV_R2];
|
||||||
|
g2 = self->frames[frame + TWOCOLOR_PREV_G2];
|
||||||
|
b2 = self->frames[frame + TWOCOLOR_PREV_B2];
|
||||||
|
|
||||||
|
frameTime = self->frames[frame];
|
||||||
|
percent = spCurveTimeline_getCurvePercent(SUPER(self), frame / TWOCOLOR_ENTRIES - 1,
|
||||||
|
1 - (time - frameTime) / (self->frames[frame + TWOCOLOR_PREV_TIME] - frameTime));
|
||||||
|
|
||||||
|
r += (self->frames[frame + TWOCOLOR_R] - r) * percent;
|
||||||
|
g += (self->frames[frame + TWOCOLOR_G] - g) * percent;
|
||||||
|
b += (self->frames[frame + TWOCOLOR_B] - b) * percent;
|
||||||
|
a += (self->frames[frame + TWOCOLOR_A] - a) * percent;
|
||||||
|
r2 += (self->frames[frame + TWOCOLOR_R2] - r2) * percent;
|
||||||
|
g2 += (self->frames[frame + TWOCOLOR_G2] - g2) * percent;
|
||||||
|
b2 += (self->frames[frame + TWOCOLOR_B2] - b2) * percent;
|
||||||
|
}
|
||||||
|
if (alpha == 1) {
|
||||||
|
spColor_setFromFloats(&slot->color, r, g, b, a);
|
||||||
|
spColor_setFromFloats(slot->darkColor, r2, g2, b2, 1);
|
||||||
|
} else {
|
||||||
|
light = &slot->color;
|
||||||
|
dark = slot->darkColor;
|
||||||
|
if (setupPose) {
|
||||||
|
spColor_setFromColor(light, &slot->data->color);
|
||||||
|
spColor_setFromColor(dark, slot->data->darkColor);
|
||||||
|
}
|
||||||
|
spColor_addFloats(light, (r - light->r) * alpha, (g - light->g) * alpha, (b - light->b) * alpha, (a - light->a) * alpha);
|
||||||
|
spColor_addFloats(dark, (r2 - dark->r) * alpha, (g2 - dark->g) * alpha, (b2 - dark->b) * alpha, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
UNUSED(lastTime);
|
||||||
|
UNUSED(firedEvents);
|
||||||
|
UNUSED(eventsCount);
|
||||||
|
}
|
||||||
|
|
||||||
|
int _spTwoColorTimeline_getPropertyId (const spTimeline* timeline) {
|
||||||
|
return (SP_TIMELINE_TWOCOLOR << 24) + SUB_CAST(spTwoColorTimeline, timeline)->slotIndex;
|
||||||
|
}
|
||||||
|
|
||||||
|
spTwoColorTimeline* spTwoColorTimeline_create (int framesCount) {
|
||||||
|
return (spTwoColorTimeline*)_spBaseTimeline_create(framesCount, SP_TIMELINE_TWOCOLOR, TWOCOLOR_ENTRIES, _spTwoColorTimeline_apply, _spTwoColorTimeline_getPropertyId);
|
||||||
|
}
|
||||||
|
|
||||||
|
void spTwoColorTimeline_setFrame (spTwoColorTimeline* self, int frameIndex, float time, float r, float g, float b, float a, float r2, float g2, float b2) {
|
||||||
|
frameIndex *= TWOCOLOR_ENTRIES;
|
||||||
|
self->frames[frameIndex] = time;
|
||||||
|
self->frames[frameIndex + TWOCOLOR_R] = r;
|
||||||
|
self->frames[frameIndex + TWOCOLOR_G] = g;
|
||||||
|
self->frames[frameIndex + TWOCOLOR_B] = b;
|
||||||
|
self->frames[frameIndex + TWOCOLOR_A] = a;
|
||||||
|
self->frames[frameIndex + TWOCOLOR_R2] = r2;
|
||||||
|
self->frames[frameIndex + TWOCOLOR_G2] = g2;
|
||||||
|
self->frames[frameIndex + TWOCOLOR_B2] = b2;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**/
|
||||||
|
|
||||||
void _spAttachmentTimeline_apply (const spTimeline* timeline, spSkeleton* skeleton, float lastTime, float time,
|
void _spAttachmentTimeline_apply (const spTimeline* timeline, spSkeleton* skeleton, float lastTime, float time,
|
||||||
spEvent** firedEvents, int* eventsCount, float alpha, int setupPose, int mixingOut) {
|
spEvent** firedEvents, int* eventsCount, float alpha, int setupPose, int mixingOut) {
|
||||||
const char* attachmentName;
|
const char* attachmentName;
|
||||||
|
|||||||
@ -142,7 +142,7 @@ void _spEventQueue_drain (_spEventQueue* self) {
|
|||||||
if (self->drainDisabled) return;
|
if (self->drainDisabled) return;
|
||||||
self->drainDisabled = 1;
|
self->drainDisabled = 1;
|
||||||
for (i = 0; i < self->objectsCount; i += 2) {
|
for (i = 0; i < self->objectsCount; i += 2) {
|
||||||
spEventType type = self->objects[i].type;
|
spEventType type = (spEventType)self->objects[i].type;
|
||||||
spTrackEntry* entry = self->objects[i+1].entry;
|
spTrackEntry* entry = self->objects[i+1].entry;
|
||||||
spEvent* event;
|
spEvent* event;
|
||||||
switch (type) {
|
switch (type) {
|
||||||
@ -534,12 +534,13 @@ void _spAnimationState_queueEvents (spAnimationState* self, spTrackEntry* entry,
|
|||||||
|
|
||||||
void spAnimationState_clearTracks (spAnimationState* self) {
|
void spAnimationState_clearTracks (spAnimationState* self) {
|
||||||
_spAnimationState* internal = SUB_CAST(_spAnimationState, self);
|
_spAnimationState* internal = SUB_CAST(_spAnimationState, self);
|
||||||
int i, n;
|
int i, n, oldDrainDisabled;
|
||||||
|
oldDrainDisabled = internal->queue->drainDisabled;
|
||||||
internal->queue->drainDisabled = 1;
|
internal->queue->drainDisabled = 1;
|
||||||
for (i = 0, n = self->tracksCount; i < n; i++)
|
for (i = 0, n = self->tracksCount; i < n; i++)
|
||||||
spAnimationState_clearTrack(self, i);
|
spAnimationState_clearTrack(self, i);
|
||||||
self->tracksCount = 0;
|
self->tracksCount = 0;
|
||||||
internal->queue->drainDisabled = 0;
|
internal->queue->drainDisabled = oldDrainDisabled;
|
||||||
_spEventQueue_drain(internal->queue);
|
_spEventQueue_drain(internal->queue);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -674,15 +675,16 @@ spTrackEntry* spAnimationState_addEmptyAnimation(spAnimationState* self, int tra
|
|||||||
}
|
}
|
||||||
|
|
||||||
void spAnimationState_setEmptyAnimations(spAnimationState* self, float mixDuration) {
|
void spAnimationState_setEmptyAnimations(spAnimationState* self, float mixDuration) {
|
||||||
int i, n;
|
int i, n, oldDrainDisabled;
|
||||||
spTrackEntry* current;
|
spTrackEntry* current;
|
||||||
_spAnimationState* internal = SUB_CAST(_spAnimationState, self);
|
_spAnimationState* internal = SUB_CAST(_spAnimationState, self);
|
||||||
|
oldDrainDisabled = internal->queue->drainDisabled;
|
||||||
internal->queue->drainDisabled = 1;
|
internal->queue->drainDisabled = 1;
|
||||||
for (i = 0, n = self->tracksCount; i < n; i++) {
|
for (i = 0, n = self->tracksCount; i < n; i++) {
|
||||||
current = self->tracks[i];
|
current = self->tracks[i];
|
||||||
if (current) spAnimationState_setEmptyAnimation(self, current->trackIndex, mixDuration);
|
if (current) spAnimationState_setEmptyAnimation(self, current->trackIndex, mixDuration);
|
||||||
}
|
}
|
||||||
internal->queue->drainDisabled = 0;
|
internal->queue->drainDisabled = oldDrainDisabled;
|
||||||
_spEventQueue_drain(internal->queue);
|
_spEventQueue_drain(internal->queue);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -80,6 +80,8 @@ spAttachment* _spAtlasAttachmentLoader_createAttachment (spAttachmentLoader* loa
|
|||||||
return SUPER(SUPER(spBoundingBoxAttachment_create(name)));
|
return SUPER(SUPER(spBoundingBoxAttachment_create(name)));
|
||||||
case SP_ATTACHMENT_PATH:
|
case SP_ATTACHMENT_PATH:
|
||||||
return SUPER(SUPER(spPathAttachment_create(name)));
|
return SUPER(SUPER(spPathAttachment_create(name)));
|
||||||
|
case SP_ATTACHMENT_POINT:
|
||||||
|
return SUPER(SUPER(spPointAttachment_create(name)));
|
||||||
default:
|
default:
|
||||||
_spAttachmentLoader_setUnknownTypeError(loader, type);
|
_spAttachmentLoader_setUnknownTypeError(loader, type);
|
||||||
return 0;
|
return 0;
|
||||||
|
|||||||
@ -218,29 +218,6 @@ float spBone_getWorldScaleY (spBone* self) {
|
|||||||
return SQRT(self->b * self->b + self->d * self->d);
|
return SQRT(self->b * self->b + self->d * self->d);
|
||||||
}
|
}
|
||||||
|
|
||||||
float spBone_worldToLocalRotationX (spBone* self) {
|
|
||||||
spBone* parent = self->parent;
|
|
||||||
if (!parent) return self->arotation;
|
|
||||||
return ATAN2(parent->a * self->c - parent->c * self->a, parent->d * self->a - parent->b * self->c) * RAD_DEG;
|
|
||||||
}
|
|
||||||
|
|
||||||
float spBone_worldToLocalRotationY (spBone* self) {
|
|
||||||
spBone* parent = self->parent;
|
|
||||||
if (!parent) return self->arotation;
|
|
||||||
return ATAN2(parent->a * self->d - parent->c * self->b, parent->d * self->b - parent->b * self->d) * RAD_DEG;
|
|
||||||
}
|
|
||||||
|
|
||||||
void spBone_rotateWorld (spBone* self, float degrees) {
|
|
||||||
float a = self->a, b = self->b, c = self->c, d = self->d;
|
|
||||||
float cosine = COS_DEG(degrees), sine = SIN_DEG(degrees);
|
|
||||||
CONST_CAST(float, self->a) = cosine * a - sine * c;
|
|
||||||
CONST_CAST(float, self->b) = cosine * b - sine * d;
|
|
||||||
CONST_CAST(float, self->c) = sine * a + cosine * c;
|
|
||||||
CONST_CAST(float, self->d) = sine * b + cosine * d;
|
|
||||||
CONST_CAST(int, self->appliedValid) = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/** Computes the individual applied transform values from the world transform. This can be useful to perform processing using
|
/** Computes the individual applied transform values from the world transform. This can be useful to perform processing using
|
||||||
* the applied transform after the world transform has been modified directly (eg, by a constraint).
|
* the applied transform after the world transform has been modified directly (eg, by a constraint).
|
||||||
* <p>
|
* <p>
|
||||||
@ -299,3 +276,27 @@ void spBone_localToWorld (spBone* self, float localX, float localY, float* world
|
|||||||
*worldX = x * self->a + y * self->b + self->worldX;
|
*worldX = x * self->a + y * self->b + self->worldX;
|
||||||
*worldY = x * self->c + y * self->d + self->worldY;
|
*worldY = x * self->c + y * self->d + self->worldY;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
float spBone_worldToLocalRotation (spBone* self, float worldRotation) {
|
||||||
|
float sine, cosine;
|
||||||
|
sine = SIN_DEG(worldRotation);
|
||||||
|
cosine = COS_DEG(worldRotation);
|
||||||
|
return ATAN2(self->a * sine - self->c * cosine, self->d * cosine - self->b * sine) * RAD_DEG;
|
||||||
|
}
|
||||||
|
|
||||||
|
float spBone_localToWorldRotation (spBone* self, float localRotation) {
|
||||||
|
float sine, cosine;
|
||||||
|
sine = SIN_DEG(localRotation);
|
||||||
|
cosine = COS_DEG(localRotation);
|
||||||
|
return ATAN2(cosine * self->c + sine * self->d, cosine * self->a + sine * self->b) * RAD_DEG;
|
||||||
|
}
|
||||||
|
|
||||||
|
void spBone_rotateWorld (spBone* self, float degrees) {
|
||||||
|
float a = self->a, b = self->b, c = self->c, d = self->d;
|
||||||
|
float cosine = COS_DEG(degrees), sine = SIN_DEG(degrees);
|
||||||
|
CONST_CAST(float, self->a) = cosine * a - sine * c;
|
||||||
|
CONST_CAST(float, self->b) = cosine * b - sine * d;
|
||||||
|
CONST_CAST(float, self->c) = sine * a + cosine * c;
|
||||||
|
CONST_CAST(float, self->d) = sine * b + cosine * d;
|
||||||
|
CONST_CAST(int, self->appliedValid) = 0;
|
||||||
|
}
|
||||||
|
|||||||
@ -44,7 +44,3 @@ spBoundingBoxAttachment* spBoundingBoxAttachment_create (const char* name) {
|
|||||||
_spAttachment_init(SUPER(SUPER(self)), name, SP_ATTACHMENT_BOUNDING_BOX, _spBoundingBoxAttachment_dispose);
|
_spAttachment_init(SUPER(SUPER(self)), name, SP_ATTACHMENT_BOUNDING_BOX, _spBoundingBoxAttachment_dispose);
|
||||||
return self;
|
return self;
|
||||||
}
|
}
|
||||||
|
|
||||||
void spBoundingBoxAttachment_computeWorldVertices (spBoundingBoxAttachment* self, spSlot* slot, float* worldVertices) {
|
|
||||||
spVertexAttachment_computeWorldVertices(SUPER(self), slot, worldVertices);
|
|
||||||
}
|
|
||||||
|
|||||||
84
spine-c/spine-c/src/spine/Color.c
Normal file
84
spine-c/spine-c/src/spine/Color.c
Normal file
@ -0,0 +1,84 @@
|
|||||||
|
/******************************************************************************
|
||||||
|
* Spine Runtimes Software License v2.5
|
||||||
|
*
|
||||||
|
* Copyright (c) 2013-2016, 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 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 develop new applications using the Spine Runtimes or otherwise
|
||||||
|
* create derivative works or improvements of the Spine Runtimes 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, BUSINESS INTERRUPTION, OR LOSS OF
|
||||||
|
* USE, DATA, OR PROFITS) 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.
|
||||||
|
*****************************************************************************/
|
||||||
|
|
||||||
|
#include <spine/Color.h>
|
||||||
|
#include <spine/extension.h>
|
||||||
|
|
||||||
|
spColor* spColor_create() {
|
||||||
|
return MALLOC(spColor, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
void spColor_dispose(spColor* self) {
|
||||||
|
if (self) FREE(self);
|
||||||
|
}
|
||||||
|
|
||||||
|
void spColor_setFromFloats(spColor* self, float r, float g, float b, float a) {
|
||||||
|
self->r = r;
|
||||||
|
self->g = g;
|
||||||
|
self->b = b;
|
||||||
|
self->a = a;
|
||||||
|
}
|
||||||
|
|
||||||
|
void spColor_setFromColor(spColor* self, spColor* otherColor) {
|
||||||
|
self->r = otherColor->r;
|
||||||
|
self->g = otherColor->g;
|
||||||
|
self->b = otherColor->b;
|
||||||
|
self->a = otherColor->a;
|
||||||
|
}
|
||||||
|
|
||||||
|
void spColor_addColor(spColor* self, spColor* otherColor) {
|
||||||
|
self->r += otherColor->r;
|
||||||
|
self->g += otherColor->g;
|
||||||
|
self->b += otherColor->b;
|
||||||
|
self->a += otherColor->a;
|
||||||
|
spColor_clamp(self);
|
||||||
|
}
|
||||||
|
|
||||||
|
void spColor_addFloats(spColor* self, float r, float g, float b, float a) {
|
||||||
|
self->r += r;
|
||||||
|
self->g += g;
|
||||||
|
self->b += b;
|
||||||
|
self->a += a;
|
||||||
|
spColor_clamp(self);
|
||||||
|
}
|
||||||
|
|
||||||
|
void spColor_clamp(spColor* self) {
|
||||||
|
if (self->r < 0) self->r = 0;
|
||||||
|
else if (self->r > 1) self->r = 1;
|
||||||
|
|
||||||
|
if (self->g < 0) self->g = 0;
|
||||||
|
else if (self->g > 1) self->g = 1;
|
||||||
|
|
||||||
|
if (self->b < 0) self->b = 0;
|
||||||
|
else if (self->b > 1) self->b = 1;
|
||||||
|
|
||||||
|
if (self->a < 0) self->a = 0;
|
||||||
|
else if (self->a > 1) self->a = 1;
|
||||||
|
}
|
||||||
@ -47,10 +47,7 @@ void _spMeshAttachment_dispose (spAttachment* attachment) {
|
|||||||
|
|
||||||
spMeshAttachment* spMeshAttachment_create (const char* name) {
|
spMeshAttachment* spMeshAttachment_create (const char* name) {
|
||||||
spMeshAttachment* self = NEW(spMeshAttachment);
|
spMeshAttachment* self = NEW(spMeshAttachment);
|
||||||
self->r = 1;
|
spColor_setFromFloats(&self->color, 1, 1, 1, 1);
|
||||||
self->g = 1;
|
|
||||||
self->b = 1;
|
|
||||||
self->a = 1;
|
|
||||||
_spAttachment_init(SUPER(SUPER(self)), name, SP_ATTACHMENT_MESH, _spMeshAttachment_dispose);
|
_spAttachment_init(SUPER(SUPER(self)), name, SP_ATTACHMENT_MESH, _spMeshAttachment_dispose);
|
||||||
return self;
|
return self;
|
||||||
}
|
}
|
||||||
@ -74,14 +71,9 @@ void spMeshAttachment_updateUVs (spMeshAttachment* self) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void spMeshAttachment_computeWorldVertices (spMeshAttachment* self, spSlot* slot, float* worldVertices) {
|
|
||||||
spVertexAttachment_computeWorldVertices(SUPER(self), slot, worldVertices);
|
|
||||||
}
|
|
||||||
|
|
||||||
void spMeshAttachment_setParentMesh (spMeshAttachment* self, spMeshAttachment* parentMesh) {
|
void spMeshAttachment_setParentMesh (spMeshAttachment* self, spMeshAttachment* parentMesh) {
|
||||||
CONST_CAST(spMeshAttachment*, self->parentMesh) = parentMesh;
|
CONST_CAST(spMeshAttachment*, self->parentMesh) = parentMesh;
|
||||||
if (parentMesh) {
|
if (parentMesh) {
|
||||||
self->super.worldVerticesLength = parentMesh->super.worldVerticesLength;
|
|
||||||
|
|
||||||
self->super.bones = parentMesh->super.bones;
|
self->super.bones = parentMesh->super.bones;
|
||||||
self->super.bonesCount = parentMesh->super.bonesCount;
|
self->super.bonesCount = parentMesh->super.bonesCount;
|
||||||
@ -95,6 +87,8 @@ void spMeshAttachment_setParentMesh (spMeshAttachment* self, spMeshAttachment* p
|
|||||||
self->trianglesCount = parentMesh->trianglesCount;
|
self->trianglesCount = parentMesh->trianglesCount;
|
||||||
|
|
||||||
self->hullLength = parentMesh->hullLength;
|
self->hullLength = parentMesh->hullLength;
|
||||||
|
|
||||||
|
self->super.worldVerticesLength = parentMesh->super.worldVerticesLength;
|
||||||
|
|
||||||
self->edges = parentMesh->edges;
|
self->edges = parentMesh->edges;
|
||||||
self->edgesCount = parentMesh->edgesCount;
|
self->edgesCount = parentMesh->edgesCount;
|
||||||
|
|||||||
@ -45,11 +45,3 @@ spPathAttachment* spPathAttachment_create (const char* name) {
|
|||||||
_spAttachment_init(SUPER(SUPER(self)), name, SP_ATTACHMENT_PATH, _spPathAttachment_dispose);
|
_spAttachment_init(SUPER(SUPER(self)), name, SP_ATTACHMENT_PATH, _spPathAttachment_dispose);
|
||||||
return self;
|
return self;
|
||||||
}
|
}
|
||||||
|
|
||||||
void spPathAttachment_computeWorldVertices (spPathAttachment* self, spSlot* slot, float* worldVertices) {
|
|
||||||
spVertexAttachment_computeWorldVertices(SUPER(self), slot, worldVertices);
|
|
||||||
}
|
|
||||||
|
|
||||||
void spPathAttachment_computeWorldVertices1 (spPathAttachment* self, spSlot* slot, int start, int count, float* worldVertices, int offset) {
|
|
||||||
spVertexAttachment_computeWorldVertices1(SUPER(self), start, count, slot, worldVertices, offset);
|
|
||||||
}
|
|
||||||
|
|||||||
@ -74,7 +74,7 @@ void spPathConstraint_dispose (spPathConstraint* self) {
|
|||||||
|
|
||||||
void spPathConstraint_apply (spPathConstraint* self) {
|
void spPathConstraint_apply (spPathConstraint* self) {
|
||||||
int i, p, n;
|
int i, p, n;
|
||||||
float length, x, y, dx, dy, s;
|
float length, setupLength, x, y, dx, dy, s;
|
||||||
float* spaces, *lengths, *positions;
|
float* spaces, *lengths, *positions;
|
||||||
float spacing;
|
float spacing;
|
||||||
float boneX, boneY, offsetRotation;
|
float boneX, boneY, offsetRotation;
|
||||||
@ -114,10 +114,10 @@ void spPathConstraint_apply (spPathConstraint* self) {
|
|||||||
}
|
}
|
||||||
for (i = 0, n = spacesCount - 1; i < n;) {
|
for (i = 0, n = spacesCount - 1; i < n;) {
|
||||||
spBone* bone = bones[i];
|
spBone* bone = bones[i];
|
||||||
length = bone->data->length, x = length * bone->a, y = length * bone->c;
|
setupLength = bone->data->length, x = setupLength * bone->a, y = setupLength * bone->c;
|
||||||
length = SQRT(x * x + y * y);
|
length = SQRT(x * x + y * y);
|
||||||
if (scale) lengths[i] = length;
|
if (scale) lengths[i] = length;
|
||||||
spaces[++i] = lengthSpacing ? MAX(0, length + spacing) : spacing;
|
spaces[++i] = (lengthSpacing ? setupLength + spacing : spacing) * length / setupLength;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
for (i = 1; i < spacesCount; i++) {
|
for (i = 1; i < spacesCount; i++) {
|
||||||
@ -256,14 +256,14 @@ float* spPathConstraint_computeWorldPositions(spPathConstraint* self, spPathAtta
|
|||||||
} else if (p < 0) {
|
} else if (p < 0) {
|
||||||
if (prevCurve != PATHCONSTRAINT_BEFORE) {
|
if (prevCurve != PATHCONSTRAINT_BEFORE) {
|
||||||
prevCurve = PATHCONSTRAINT_BEFORE;
|
prevCurve = PATHCONSTRAINT_BEFORE;
|
||||||
spPathAttachment_computeWorldVertices1(path, target, 2, 4, world, 0);
|
spVertexAttachment_computeWorldVertices(SUPER(path), target, 2, 4, world, 0, 2);
|
||||||
}
|
}
|
||||||
_addBeforePosition(p, world, 0, out, o);
|
_addBeforePosition(p, world, 0, out, o);
|
||||||
continue;
|
continue;
|
||||||
} else if (p > pathLength) {
|
} else if (p > pathLength) {
|
||||||
if (prevCurve != PATHCONSTRAINT_AFTER) {
|
if (prevCurve != PATHCONSTRAINT_AFTER) {
|
||||||
prevCurve = PATHCONSTRAINT_AFTER;
|
prevCurve = PATHCONSTRAINT_AFTER;
|
||||||
spPathAttachment_computeWorldVertices1(path, target, verticesLength - 6, 4, world, 0);
|
spVertexAttachment_computeWorldVertices(SUPER(path), target, verticesLength - 6, 4, world, 0, 2);
|
||||||
}
|
}
|
||||||
_addAfterPosition(p - pathLength, world, 0, out, o);
|
_addAfterPosition(p - pathLength, world, 0, out, o);
|
||||||
continue;
|
continue;
|
||||||
@ -284,10 +284,10 @@ float* spPathConstraint_computeWorldPositions(spPathConstraint* self, spPathAtta
|
|||||||
if (curve != prevCurve) {
|
if (curve != prevCurve) {
|
||||||
prevCurve = curve;
|
prevCurve = curve;
|
||||||
if (closed && curve == curveCount) {
|
if (closed && curve == curveCount) {
|
||||||
spPathAttachment_computeWorldVertices1(path, target, verticesLength - 4, 4, world, 0);
|
spVertexAttachment_computeWorldVertices(SUPER(path), target, verticesLength - 4, 4, world, 0, 2);
|
||||||
spPathAttachment_computeWorldVertices1(path, target, 0, 4, world, 4);
|
spVertexAttachment_computeWorldVertices(SUPER(path), target, 0, 4, world, 4, 2);
|
||||||
} else
|
} else
|
||||||
spPathAttachment_computeWorldVertices1(path, target, curve * 6 + 2, 8, world, 0);
|
spVertexAttachment_computeWorldVertices(SUPER(path), target, curve * 6 + 2, 8, world, 0, 2);
|
||||||
}
|
}
|
||||||
_addCurvePosition(p, world[0], world[1], world[2], world[3], world[4], world[5], world[6], world[7], out, o,
|
_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));
|
tangents || (i > 0 && space == 0));
|
||||||
@ -304,8 +304,8 @@ float* spPathConstraint_computeWorldPositions(spPathConstraint* self, spPathAtta
|
|||||||
self->worldCount = verticesLength;
|
self->worldCount = verticesLength;
|
||||||
}
|
}
|
||||||
world = self->world;
|
world = self->world;
|
||||||
spPathAttachment_computeWorldVertices1(path, target, 2, verticesLength - 4, world, 0);
|
spVertexAttachment_computeWorldVertices(SUPER(path), target, 2, verticesLength - 4, world, 0, 2);
|
||||||
spPathAttachment_computeWorldVertices1(path, target, 0, 2, world, verticesLength - 4);
|
spVertexAttachment_computeWorldVertices(SUPER(path), target, 0, 2, world, verticesLength - 4, 2);
|
||||||
world[verticesLength - 2] = world[0];
|
world[verticesLength - 2] = world[0];
|
||||||
world[verticesLength - 1] = world[1];
|
world[verticesLength - 1] = world[1];
|
||||||
} else {
|
} else {
|
||||||
@ -317,7 +317,7 @@ float* spPathConstraint_computeWorldPositions(spPathConstraint* self, spPathAtta
|
|||||||
self->worldCount = verticesLength;
|
self->worldCount = verticesLength;
|
||||||
}
|
}
|
||||||
world = self->world;
|
world = self->world;
|
||||||
spPathAttachment_computeWorldVertices1(path, target, 2, verticesLength, world, 0);
|
spVertexAttachment_computeWorldVertices(SUPER(path), target, 2, verticesLength, world, 0, 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Curve lengths. */
|
/* Curve lengths. */
|
||||||
|
|||||||
60
spine-c/spine-c/src/spine/PointAttachment.c
Normal file
60
spine-c/spine-c/src/spine/PointAttachment.c
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
/******************************************************************************
|
||||||
|
* Spine Runtimes Software License v2.5
|
||||||
|
*
|
||||||
|
* Copyright (c) 2013-2016, 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 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 develop new applications using the Spine Runtimes or otherwise
|
||||||
|
* create derivative works or improvements of the Spine Runtimes 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, BUSINESS INTERRUPTION, OR LOSS OF
|
||||||
|
* USE, DATA, OR PROFITS) 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.
|
||||||
|
*****************************************************************************/
|
||||||
|
|
||||||
|
#include <spine/PointAttachment.h>
|
||||||
|
#include <spine/extension.h>
|
||||||
|
|
||||||
|
void _spPointAttachment_dispose (spAttachment* attachment) {
|
||||||
|
spPathAttachment* self = SUB_CAST(spPathAttachment, attachment);
|
||||||
|
|
||||||
|
_spVertexAttachment_deinit(SUPER(self));
|
||||||
|
|
||||||
|
FREE(self);
|
||||||
|
}
|
||||||
|
|
||||||
|
spPointAttachment* spPointAttachment_create (const char* name) {
|
||||||
|
spPointAttachment* self = NEW(spPointAttachment);
|
||||||
|
_spAttachment_init(SUPER(SUPER(self)), name, SP_ATTACHMENT_POINT, _spPointAttachment_dispose);
|
||||||
|
return self;
|
||||||
|
}
|
||||||
|
|
||||||
|
void spPointAttachment_computeWorldPosition (spPointAttachment* self, spBone* bone, float* x, float* y) {
|
||||||
|
*x = self->x * bone->a + self->y * bone->b + bone->worldX;
|
||||||
|
*y = self->x * bone->c + self->y * bone->d + bone->worldY;
|
||||||
|
}
|
||||||
|
|
||||||
|
float spPointAttachment_computeWorldRotation (spPointAttachment* self, spBone* bone) {
|
||||||
|
float cosine, sine, x, y;
|
||||||
|
cosine = COS_DEG(self->rotation);
|
||||||
|
sine = SIN_DEG(self->rotation);
|
||||||
|
x = cosine * bone->a + sine * bone->b;
|
||||||
|
y = cosine * bone->c + sine * bone->d;
|
||||||
|
return ATAN2(y, x) * RAD_DEG;
|
||||||
|
}
|
||||||
@ -42,10 +42,7 @@ spRegionAttachment* spRegionAttachment_create (const char* name) {
|
|||||||
spRegionAttachment* self = NEW(spRegionAttachment);
|
spRegionAttachment* self = NEW(spRegionAttachment);
|
||||||
self->scaleX = 1;
|
self->scaleX = 1;
|
||||||
self->scaleY = 1;
|
self->scaleY = 1;
|
||||||
self->r = 1;
|
spColor_setFromFloats(&self->color, 1, 1, 1, 1);
|
||||||
self->g = 1;
|
|
||||||
self->b = 1;
|
|
||||||
self->a = 1;
|
|
||||||
_spAttachment_init(SUPER(self), name, SP_ATTACHMENT_REGION, _spRegionAttachment_dispose);
|
_spAttachment_init(SUPER(self), name, SP_ATTACHMENT_REGION, _spRegionAttachment_dispose);
|
||||||
return self;
|
return self;
|
||||||
}
|
}
|
||||||
@ -99,15 +96,22 @@ void spRegionAttachment_updateOffset (spRegionAttachment* self) {
|
|||||||
self->offset[SP_VERTEX_Y4] = localYCos + localX2Sin;
|
self->offset[SP_VERTEX_Y4] = localYCos + localX2Sin;
|
||||||
}
|
}
|
||||||
|
|
||||||
void spRegionAttachment_computeWorldVertices (spRegionAttachment* self, spBone* bone, float* vertices) {
|
void spRegionAttachment_computeWorldVertices (spRegionAttachment* self, spBone* bone, float* vertices, int offset, int stride) {
|
||||||
const float* offset = self->offset;
|
const float* offsets = self->offset;
|
||||||
float x = bone->worldX, y = bone->worldY;
|
float x = bone->worldX, y = bone->worldY;
|
||||||
vertices[SP_VERTEX_X1] = offset[SP_VERTEX_X1] * bone->a + offset[SP_VERTEX_Y1] * bone->b + x;
|
|
||||||
vertices[SP_VERTEX_Y1] = offset[SP_VERTEX_X1] * bone->c + offset[SP_VERTEX_Y1] * bone->d + y;
|
vertices[offset] = offsets[SP_VERTEX_X1] * bone->a + offsets[SP_VERTEX_Y1] * bone->b + x; /* br */
|
||||||
vertices[SP_VERTEX_X2] = offset[SP_VERTEX_X2] * bone->a + offset[SP_VERTEX_Y2] * bone->b + x;
|
vertices[offset + 1] = offsets[SP_VERTEX_X1] * bone->c + offsets[SP_VERTEX_Y1] * bone->d + y;
|
||||||
vertices[SP_VERTEX_Y2] = offset[SP_VERTEX_X2] * bone->c + offset[SP_VERTEX_Y2] * bone->d + y;
|
offset += stride;
|
||||||
vertices[SP_VERTEX_X3] = offset[SP_VERTEX_X3] * bone->a + offset[SP_VERTEX_Y3] * bone->b + x;
|
|
||||||
vertices[SP_VERTEX_Y3] = offset[SP_VERTEX_X3] * bone->c + offset[SP_VERTEX_Y3] * bone->d + y;
|
vertices[offset] = offsets[SP_VERTEX_X2] * bone->a + offsets[SP_VERTEX_Y2] * bone->b + x; /* bl */
|
||||||
vertices[SP_VERTEX_X4] = offset[SP_VERTEX_X4] * bone->a + offset[SP_VERTEX_Y4] * bone->b + x;
|
vertices[offset + 1] = offsets[SP_VERTEX_X2] * bone->c + offsets[SP_VERTEX_Y2] * bone->d + y;
|
||||||
vertices[SP_VERTEX_Y4] = offset[SP_VERTEX_X4] * bone->c + offset[SP_VERTEX_Y4] * bone->d + y;
|
offset += stride;
|
||||||
|
|
||||||
|
vertices[offset] = offsets[SP_VERTEX_X3] * bone->a + offsets[SP_VERTEX_Y3] * bone->b + x; /* ul */
|
||||||
|
vertices[offset + 1] = offsets[SP_VERTEX_X3] * bone->c + offsets[SP_VERTEX_Y3] * bone->d + y;
|
||||||
|
offset += stride;
|
||||||
|
|
||||||
|
vertices[offset] = offsets[SP_VERTEX_X4] * bone->a + offsets[SP_VERTEX_Y4] * bone->b + x; /* ur */
|
||||||
|
vertices[offset + 1] = offsets[SP_VERTEX_X4] * bone->c + offsets[SP_VERTEX_Y4] * bone->d + y;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -117,7 +117,7 @@ spSkeleton* spSkeleton_create (spSkeletonData* data) {
|
|||||||
for (i = 0; i < self->data->pathConstraintsCount; i++)
|
for (i = 0; i < self->data->pathConstraintsCount; i++)
|
||||||
self->pathConstraints[i] = spPathConstraint_create(self->data->pathConstraints[i], self);
|
self->pathConstraints[i] = spPathConstraint_create(self->data->pathConstraints[i], self);
|
||||||
|
|
||||||
self->r = 1; self->g = 1; self->b = 1; self->a = 1;
|
spColor_setFromFloats(&self->color, 1, 1, 1, 1);
|
||||||
|
|
||||||
spSkeleton_updateCache(self);
|
spSkeleton_updateCache(self);
|
||||||
|
|
||||||
@ -161,7 +161,7 @@ static void _addToUpdateCache(_spSkeleton* const internal, _spUpdateType type, v
|
|||||||
_spUpdate* update;
|
_spUpdate* update;
|
||||||
if (internal->updateCacheCount == internal->updateCacheCapacity) {
|
if (internal->updateCacheCount == internal->updateCacheCapacity) {
|
||||||
internal->updateCacheCapacity *= 2;
|
internal->updateCacheCapacity *= 2;
|
||||||
internal->updateCache = realloc(internal->updateCache, sizeof(_spUpdate) * internal->updateCacheCapacity);
|
internal->updateCache = (_spUpdate*)realloc(internal->updateCache, sizeof(_spUpdate) * internal->updateCacheCapacity);
|
||||||
}
|
}
|
||||||
update = internal->updateCache + internal->updateCacheCount;
|
update = internal->updateCache + internal->updateCacheCount;
|
||||||
update->type = type;
|
update->type = type;
|
||||||
@ -172,7 +172,7 @@ static void _addToUpdateCache(_spSkeleton* const internal, _spUpdateType type, v
|
|||||||
static void _addToUpdateCacheReset(_spSkeleton* const internal, spBone* bone) {
|
static void _addToUpdateCacheReset(_spSkeleton* const internal, spBone* bone) {
|
||||||
if (internal->updateCacheResetCount == internal->updateCacheResetCapacity) {
|
if (internal->updateCacheResetCount == internal->updateCacheResetCapacity) {
|
||||||
internal->updateCacheResetCapacity *= 2;
|
internal->updateCacheResetCapacity *= 2;
|
||||||
internal->updateCacheReset = realloc(internal->updateCacheReset, sizeof(spBone*) * internal->updateCacheResetCapacity);
|
internal->updateCacheReset = (spBone**)realloc(internal->updateCacheReset, sizeof(spBone*) * internal->updateCacheResetCapacity);
|
||||||
}
|
}
|
||||||
internal->updateCacheReset[internal->updateCacheResetCount] = bone;
|
internal->updateCacheReset[internal->updateCacheResetCount] = bone;
|
||||||
++internal->updateCacheResetCount;
|
++internal->updateCacheResetCount;
|
||||||
@ -258,48 +258,66 @@ static void _sortPathConstraint(_spSkeleton* const internal, spPathConstraint* c
|
|||||||
spSlot* slot = constraint->target;
|
spSlot* slot = constraint->target;
|
||||||
int slotIndex = slot->data->index;
|
int slotIndex = slot->data->index;
|
||||||
spBone* slotBone = slot->bone;
|
spBone* slotBone = slot->bone;
|
||||||
int ii, nn, boneCount;
|
int i, n, boneCount;
|
||||||
spAttachment* attachment;
|
spAttachment* attachment;
|
||||||
spBone** constrained;
|
spBone** constrained;
|
||||||
spSkeleton* skeleton = SUPER_CAST(spSkeleton, internal);
|
spSkeleton* skeleton = SUPER_CAST(spSkeleton, internal);
|
||||||
if (skeleton->skin) _sortPathConstraintAttachment(internal, skeleton->skin, slotIndex, slotBone);
|
if (skeleton->skin) _sortPathConstraintAttachment(internal, skeleton->skin, slotIndex, slotBone);
|
||||||
if (skeleton->data->defaultSkin && skeleton->data->defaultSkin != skeleton->skin)
|
if (skeleton->data->defaultSkin && skeleton->data->defaultSkin != skeleton->skin)
|
||||||
_sortPathConstraintAttachment(internal, skeleton->data->defaultSkin, slotIndex, slotBone);
|
_sortPathConstraintAttachment(internal, skeleton->data->defaultSkin, slotIndex, slotBone);
|
||||||
for (ii = 0, nn = skeleton->data->skinsCount; ii < nn; ii++)
|
for (i = 0, n = skeleton->data->skinsCount; i < n; i++)
|
||||||
_sortPathConstraintAttachment(internal, skeleton->data->skins[ii], slotIndex, slotBone);
|
_sortPathConstraintAttachment(internal, skeleton->data->skins[i], slotIndex, slotBone);
|
||||||
|
|
||||||
attachment = slot->attachment;
|
attachment = slot->attachment;
|
||||||
if (attachment->type == SP_ATTACHMENT_PATH) _sortPathConstraintAttachmentBones(internal, attachment, slotBone);
|
if (attachment->type == SP_ATTACHMENT_PATH) _sortPathConstraintAttachmentBones(internal, attachment, slotBone);
|
||||||
|
|
||||||
constrained = constraint->bones;
|
constrained = constraint->bones;
|
||||||
boneCount = constraint->bonesCount;
|
boneCount = constraint->bonesCount;
|
||||||
for (ii = 0; ii < boneCount; ii++)
|
for (i = 0; i < boneCount; i++)
|
||||||
_sortBone(internal, constrained[ii]);
|
_sortBone(internal, constrained[i]);
|
||||||
|
|
||||||
_addToUpdateCache(internal, SP_UPDATE_PATH_CONSTRAINT, constraint);
|
_addToUpdateCache(internal, SP_UPDATE_PATH_CONSTRAINT, constraint);
|
||||||
|
|
||||||
for (ii = 0; ii < boneCount; ii++)
|
for (i = 0; i < boneCount; i++)
|
||||||
_sortReset(constrained[ii]->children, constrained[ii]->childrenCount);
|
_sortReset(constrained[i]->children, constrained[i]->childrenCount);
|
||||||
for (ii = 0; ii < boneCount; ii++)
|
for (i = 0; i < boneCount; i++)
|
||||||
constrained[ii]->sorted = 1;
|
constrained[i]->sorted = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void _sortTransformConstraint(_spSkeleton* const internal, spTransformConstraint* constraint) {
|
static void _sortTransformConstraint(_spSkeleton* const internal, spTransformConstraint* constraint) {
|
||||||
int ii, boneCount;
|
int i, boneCount;
|
||||||
spBone** constrained;
|
spBone** constrained;
|
||||||
|
spBone* child;
|
||||||
|
int /*boolean*/ contains = 0;
|
||||||
_sortBone(internal, constraint->target);
|
_sortBone(internal, constraint->target);
|
||||||
|
|
||||||
constrained = constraint->bones;
|
constrained = constraint->bones;
|
||||||
boneCount = constraint->bonesCount;
|
boneCount = constraint->bonesCount;
|
||||||
for (ii = 0; ii < boneCount; ii++)
|
if (constraint->data->local) {
|
||||||
_sortBone(internal, constrained[ii]);
|
for (i = 0; i < boneCount; i++) {
|
||||||
|
child = constrained[boneCount - 1];
|
||||||
|
_sortBone(internal, child);
|
||||||
|
contains = 0;
|
||||||
|
for (i = 0; i < internal->updateCacheCount; i++) {
|
||||||
|
_spUpdate update = internal->updateCache[i];
|
||||||
|
if (update.object == child) {
|
||||||
|
contains = -1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!contains) _addToUpdateCacheReset(internal, child);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
for (i = 0; i < boneCount; i++)
|
||||||
|
_sortBone(internal, constrained[i]);
|
||||||
|
}
|
||||||
|
|
||||||
_addToUpdateCache(internal, SP_UPDATE_TRANSFORM_CONSTRAINT, constraint);
|
_addToUpdateCache(internal, SP_UPDATE_TRANSFORM_CONSTRAINT, constraint);
|
||||||
|
|
||||||
for (ii = 0; ii < boneCount; ii++)
|
for (i = 0; i < boneCount; i++)
|
||||||
_sortReset(constrained[ii]->children, constrained[ii]->childrenCount);
|
_sortReset(constrained[i]->children, constrained[i]->childrenCount);
|
||||||
for (ii = 0; ii < boneCount; ii++)
|
for (i = 0; i < boneCount; i++)
|
||||||
constrained[ii]->sorted = 1;
|
constrained[i]->sorted = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
void spSkeleton_updateCache (spSkeleton* self) {
|
void spSkeleton_updateCache (spSkeleton* self) {
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user