[haxe] Physics porting completed - Added 4 physics examples
@ -624,6 +624,22 @@ cp -f ../mix-and-match/export/mix-and-match-pro.skel "$ROOT/spine-haxe/example/a
|
|||||||
cp -f ../mix-and-match/export/mix-and-match.atlas "$ROOT/spine-haxe/example/assets/"
|
cp -f ../mix-and-match/export/mix-and-match.atlas "$ROOT/spine-haxe/example/assets/"
|
||||||
cp -f ../mix-and-match/export/mix-and-match.png "$ROOT/spine-haxe/example/assets/"
|
cp -f ../mix-and-match/export/mix-and-match.png "$ROOT/spine-haxe/example/assets/"
|
||||||
|
|
||||||
|
cp -f ../celestial-circus/export/* "$ROOT/spine-haxe/example/assets/"
|
||||||
|
|
||||||
|
cp -f ../cloud-pot/export/cloud-pot.json "$ROOT/spine-haxe/example/assets/"
|
||||||
|
cp -f ../cloud-pot/export/cloud-pot.skel "$ROOT/spine-haxe/example/assets/"
|
||||||
|
cp -f ../cloud-pot/export/cloud-pot.atlas "$ROOT/spine-haxe/example/assets/"
|
||||||
|
cp -f ../cloud-pot/export/cloud-pot.png "$ROOT/spine-haxe/example/assets/"
|
||||||
|
|
||||||
|
cp -f ../sack/export/sack-pro.json "$ROOT/spine-haxe/example/assets/"
|
||||||
|
cp -f ../sack/export/sack-pro.skel "$ROOT/spine-haxe/example/assets/"
|
||||||
|
cp -f ../sack/export/sack.atlas "$ROOT/spine-haxe/example/assets/"
|
||||||
|
cp -f ../sack/export/sack.png "$ROOT/spine-haxe/example/assets/"
|
||||||
|
|
||||||
|
cp -f ../snowglobe/export/snowglobe-pro.json "$ROOT/spine-haxe/example/assets/"
|
||||||
|
cp -f ../snowglobe/export/snowglobe-pro.skel "$ROOT/spine-haxe/example/assets/"
|
||||||
|
cp -f ../snowglobe/export/snowglobe* "$ROOT/spine-haxe/example/assets/"
|
||||||
|
|
||||||
echo "spine-ue"
|
echo "spine-ue"
|
||||||
rm -f "$ROOT/spine-ue/Content/GettingStarted/Assets/Raptor/raptor.json"
|
rm -f "$ROOT/spine-ue/Content/GettingStarted/Assets/Raptor/raptor.json"
|
||||||
rm -f "$ROOT/spine-ue/Content/GettingStarted/Assets/Raptor/raptor-pro.json"
|
rm -f "$ROOT/spine-ue/Content/GettingStarted/Assets/Raptor/raptor-pro.json"
|
||||||
|
|||||||
3
spine-haxe/.vscode/settings.json
vendored
@ -1,3 +0,0 @@
|
|||||||
{
|
|
||||||
"cmake.configureOnOpen": false
|
|
||||||
}
|
|
||||||
174
spine-haxe/example/assets/celestial-circus-pma.atlas
Normal file
@ -0,0 +1,174 @@
|
|||||||
|
celestial-circus-pma.png
|
||||||
|
size: 1024, 1024
|
||||||
|
filter: Linear, Linear
|
||||||
|
pma: true
|
||||||
|
scale: 0.4
|
||||||
|
arm-back-down
|
||||||
|
bounds: 324, 401, 38, 82
|
||||||
|
rotate: 90
|
||||||
|
arm-back-up
|
||||||
|
bounds: 290, 44, 83, 116
|
||||||
|
rotate: 90
|
||||||
|
arm-front-down
|
||||||
|
bounds: 706, 2, 36, 78
|
||||||
|
rotate: 90
|
||||||
|
arm-front-up
|
||||||
|
bounds: 860, 138, 77, 116
|
||||||
|
bench
|
||||||
|
bounds: 725, 256, 189, 48
|
||||||
|
body-bottom
|
||||||
|
bounds: 879, 868, 154, 124
|
||||||
|
rotate: 90
|
||||||
|
body-top
|
||||||
|
bounds: 725, 128, 126, 133
|
||||||
|
rotate: 90
|
||||||
|
chest
|
||||||
|
bounds: 408, 26, 104, 93
|
||||||
|
cloud-back
|
||||||
|
bounds: 752, 378, 202, 165
|
||||||
|
cloud-front
|
||||||
|
bounds: 2, 2, 325, 196
|
||||||
|
rotate: 90
|
||||||
|
collar
|
||||||
|
bounds: 786, 13, 47, 26
|
||||||
|
ear
|
||||||
|
bounds: 1002, 643, 20, 28
|
||||||
|
eye-back-shadow
|
||||||
|
bounds: 428, 395, 14, 10
|
||||||
|
eye-front-shadow
|
||||||
|
bounds: 704, 529, 24, 14
|
||||||
|
eye-reflex-back
|
||||||
|
bounds: 860, 128, 8, 7
|
||||||
|
rotate: 90
|
||||||
|
eye-reflex-front
|
||||||
|
bounds: 726, 386, 10, 7
|
||||||
|
eye-white-back
|
||||||
|
bounds: 835, 23, 13, 16
|
||||||
|
eye-white-front
|
||||||
|
bounds: 1005, 1000, 22, 17
|
||||||
|
rotate: 90
|
||||||
|
eyelashes-down-back
|
||||||
|
bounds: 232, 329, 11, 6
|
||||||
|
rotate: 90
|
||||||
|
eyelashes-down-front
|
||||||
|
bounds: 913, 851, 15, 6
|
||||||
|
rotate: 90
|
||||||
|
eyelashes-top-back
|
||||||
|
bounds: 408, 395, 18, 10
|
||||||
|
eyelashes-top-front
|
||||||
|
bounds: 702, 179, 30, 16
|
||||||
|
rotate: 90
|
||||||
|
face
|
||||||
|
bounds: 514, 26, 93, 102
|
||||||
|
rotate: 90
|
||||||
|
feathers-back
|
||||||
|
bounds: 954, 625, 46, 46
|
||||||
|
feathers-front
|
||||||
|
bounds: 706, 40, 72, 86
|
||||||
|
fringe-middle-back
|
||||||
|
bounds: 200, 6, 33, 52
|
||||||
|
rotate: 90
|
||||||
|
fringe-middle-front
|
||||||
|
bounds: 878, 76, 60, 50
|
||||||
|
rotate: 90
|
||||||
|
fringe-side-back
|
||||||
|
bounds: 780, 41, 27, 94
|
||||||
|
rotate: 90
|
||||||
|
fringe-side-front
|
||||||
|
bounds: 939, 161, 26, 93
|
||||||
|
glove-bottom-back
|
||||||
|
bounds: 954, 572, 51, 41
|
||||||
|
rotate: 90
|
||||||
|
glove-bottom-front
|
||||||
|
bounds: 916, 256, 47, 48
|
||||||
|
hair-back-1
|
||||||
|
bounds: 444, 395, 132, 306
|
||||||
|
rotate: 90
|
||||||
|
hair-back-2
|
||||||
|
bounds: 438, 211, 80, 285
|
||||||
|
rotate: 90
|
||||||
|
hair-back-3
|
||||||
|
bounds: 719, 306, 70, 268
|
||||||
|
rotate: 90
|
||||||
|
hair-back-4
|
||||||
|
bounds: 438, 121, 88, 262
|
||||||
|
rotate: 90
|
||||||
|
hair-back-5
|
||||||
|
bounds: 438, 293, 88, 279
|
||||||
|
rotate: 90
|
||||||
|
hair-back-6
|
||||||
|
bounds: 200, 41, 88, 286
|
||||||
|
hair-hat-shadow
|
||||||
|
bounds: 232, 398, 90, 41
|
||||||
|
hand-back
|
||||||
|
bounds: 954, 673, 60, 47
|
||||||
|
rotate: 90
|
||||||
|
hand-front
|
||||||
|
bounds: 967, 172, 53, 60
|
||||||
|
hat-back
|
||||||
|
bounds: 954, 802, 64, 45
|
||||||
|
rotate: 90
|
||||||
|
hat-front
|
||||||
|
bounds: 780, 70, 96, 56
|
||||||
|
head-back
|
||||||
|
bounds: 618, 17, 102, 86
|
||||||
|
rotate: 90
|
||||||
|
jabot
|
||||||
|
bounds: 967, 234, 70, 55
|
||||||
|
rotate: 90
|
||||||
|
leg-back
|
||||||
|
bounds: 232, 441, 210, 333
|
||||||
|
leg-front
|
||||||
|
bounds: 444, 529, 258, 320
|
||||||
|
logo-brooch
|
||||||
|
bounds: 954, 545, 16, 25
|
||||||
|
mouth
|
||||||
|
bounds: 408, 121, 22, 6
|
||||||
|
neck
|
||||||
|
bounds: 232, 342, 39, 56
|
||||||
|
rotate: 90
|
||||||
|
nose
|
||||||
|
bounds: 742, 529, 6, 7
|
||||||
|
rotate: 90
|
||||||
|
nose-highlight
|
||||||
|
bounds: 719, 300, 4, 4
|
||||||
|
nose-shadow
|
||||||
|
bounds: 869, 128, 7, 8
|
||||||
|
pupil-back
|
||||||
|
bounds: 730, 529, 10, 14
|
||||||
|
pupil-front
|
||||||
|
bounds: 254, 21, 12, 18
|
||||||
|
rope-back
|
||||||
|
bounds: 232, 383, 10, 492
|
||||||
|
rotate: 90
|
||||||
|
rope-front
|
||||||
|
bounds: 232, 383, 10, 492
|
||||||
|
rotate: 90
|
||||||
|
rope-front-bottom
|
||||||
|
bounds: 954, 735, 42, 65
|
||||||
|
skirt
|
||||||
|
bounds: 2, 776, 440, 246
|
||||||
|
sock-bow
|
||||||
|
bounds: 408, 407, 33, 32
|
||||||
|
spine-logo-body
|
||||||
|
bounds: 879, 853, 13, 32
|
||||||
|
rotate: 90
|
||||||
|
star-big
|
||||||
|
bounds: 939, 141, 18, 24
|
||||||
|
rotate: 90
|
||||||
|
star-medium
|
||||||
|
bounds: 742, 537, 6, 8
|
||||||
|
rotate: 90
|
||||||
|
star-small
|
||||||
|
bounds: 719, 378, 3, 4
|
||||||
|
rotate: 90
|
||||||
|
underskirt
|
||||||
|
bounds: 2, 329, 445, 228
|
||||||
|
rotate: 90
|
||||||
|
underskirt-back
|
||||||
|
bounds: 444, 851, 433, 171
|
||||||
|
wing-back
|
||||||
|
bounds: 290, 129, 146, 252
|
||||||
|
wing-front
|
||||||
|
bounds: 704, 545, 304, 248
|
||||||
|
rotate: 90
|
||||||
BIN
spine-haxe/example/assets/celestial-circus-pma.png
Normal file
|
After Width: | Height: | Size: 799 KiB |
3758
spine-haxe/example/assets/celestial-circus-pro.json
Normal file
BIN
spine-haxe/example/assets/celestial-circus-pro.skel
Normal file
173
spine-haxe/example/assets/celestial-circus.atlas
Normal file
@ -0,0 +1,173 @@
|
|||||||
|
celestial-circus.png
|
||||||
|
size: 1024, 1024
|
||||||
|
filter: Linear, Linear
|
||||||
|
scale: 0.4
|
||||||
|
arm-back-down
|
||||||
|
bounds: 324, 401, 38, 82
|
||||||
|
rotate: 90
|
||||||
|
arm-back-up
|
||||||
|
bounds: 290, 44, 83, 116
|
||||||
|
rotate: 90
|
||||||
|
arm-front-down
|
||||||
|
bounds: 706, 2, 36, 78
|
||||||
|
rotate: 90
|
||||||
|
arm-front-up
|
||||||
|
bounds: 860, 138, 77, 116
|
||||||
|
bench
|
||||||
|
bounds: 725, 256, 189, 48
|
||||||
|
body-bottom
|
||||||
|
bounds: 879, 868, 154, 124
|
||||||
|
rotate: 90
|
||||||
|
body-top
|
||||||
|
bounds: 725, 128, 126, 133
|
||||||
|
rotate: 90
|
||||||
|
chest
|
||||||
|
bounds: 408, 26, 104, 93
|
||||||
|
cloud-back
|
||||||
|
bounds: 752, 378, 202, 165
|
||||||
|
cloud-front
|
||||||
|
bounds: 2, 2, 325, 196
|
||||||
|
rotate: 90
|
||||||
|
collar
|
||||||
|
bounds: 786, 13, 47, 26
|
||||||
|
ear
|
||||||
|
bounds: 1002, 643, 20, 28
|
||||||
|
eye-back-shadow
|
||||||
|
bounds: 428, 395, 14, 10
|
||||||
|
eye-front-shadow
|
||||||
|
bounds: 704, 529, 24, 14
|
||||||
|
eye-reflex-back
|
||||||
|
bounds: 860, 128, 8, 7
|
||||||
|
rotate: 90
|
||||||
|
eye-reflex-front
|
||||||
|
bounds: 726, 386, 10, 7
|
||||||
|
eye-white-back
|
||||||
|
bounds: 835, 23, 13, 16
|
||||||
|
eye-white-front
|
||||||
|
bounds: 1005, 1000, 22, 17
|
||||||
|
rotate: 90
|
||||||
|
eyelashes-down-back
|
||||||
|
bounds: 232, 329, 11, 6
|
||||||
|
rotate: 90
|
||||||
|
eyelashes-down-front
|
||||||
|
bounds: 913, 851, 15, 6
|
||||||
|
rotate: 90
|
||||||
|
eyelashes-top-back
|
||||||
|
bounds: 408, 395, 18, 10
|
||||||
|
eyelashes-top-front
|
||||||
|
bounds: 702, 179, 30, 16
|
||||||
|
rotate: 90
|
||||||
|
face
|
||||||
|
bounds: 514, 26, 93, 102
|
||||||
|
rotate: 90
|
||||||
|
feathers-back
|
||||||
|
bounds: 954, 625, 46, 46
|
||||||
|
feathers-front
|
||||||
|
bounds: 706, 40, 72, 86
|
||||||
|
fringe-middle-back
|
||||||
|
bounds: 200, 6, 33, 52
|
||||||
|
rotate: 90
|
||||||
|
fringe-middle-front
|
||||||
|
bounds: 878, 76, 60, 50
|
||||||
|
rotate: 90
|
||||||
|
fringe-side-back
|
||||||
|
bounds: 780, 41, 27, 94
|
||||||
|
rotate: 90
|
||||||
|
fringe-side-front
|
||||||
|
bounds: 939, 161, 26, 93
|
||||||
|
glove-bottom-back
|
||||||
|
bounds: 954, 572, 51, 41
|
||||||
|
rotate: 90
|
||||||
|
glove-bottom-front
|
||||||
|
bounds: 916, 256, 47, 48
|
||||||
|
hair-back-1
|
||||||
|
bounds: 444, 395, 132, 306
|
||||||
|
rotate: 90
|
||||||
|
hair-back-2
|
||||||
|
bounds: 438, 211, 80, 285
|
||||||
|
rotate: 90
|
||||||
|
hair-back-3
|
||||||
|
bounds: 719, 306, 70, 268
|
||||||
|
rotate: 90
|
||||||
|
hair-back-4
|
||||||
|
bounds: 438, 121, 88, 262
|
||||||
|
rotate: 90
|
||||||
|
hair-back-5
|
||||||
|
bounds: 438, 293, 88, 279
|
||||||
|
rotate: 90
|
||||||
|
hair-back-6
|
||||||
|
bounds: 200, 41, 88, 286
|
||||||
|
hair-hat-shadow
|
||||||
|
bounds: 232, 398, 90, 41
|
||||||
|
hand-back
|
||||||
|
bounds: 954, 673, 60, 47
|
||||||
|
rotate: 90
|
||||||
|
hand-front
|
||||||
|
bounds: 967, 172, 53, 60
|
||||||
|
hat-back
|
||||||
|
bounds: 954, 802, 64, 45
|
||||||
|
rotate: 90
|
||||||
|
hat-front
|
||||||
|
bounds: 780, 70, 96, 56
|
||||||
|
head-back
|
||||||
|
bounds: 618, 17, 102, 86
|
||||||
|
rotate: 90
|
||||||
|
jabot
|
||||||
|
bounds: 967, 234, 70, 55
|
||||||
|
rotate: 90
|
||||||
|
leg-back
|
||||||
|
bounds: 232, 441, 210, 333
|
||||||
|
leg-front
|
||||||
|
bounds: 444, 529, 258, 320
|
||||||
|
logo-brooch
|
||||||
|
bounds: 954, 545, 16, 25
|
||||||
|
mouth
|
||||||
|
bounds: 408, 121, 22, 6
|
||||||
|
neck
|
||||||
|
bounds: 232, 342, 39, 56
|
||||||
|
rotate: 90
|
||||||
|
nose
|
||||||
|
bounds: 742, 529, 6, 7
|
||||||
|
rotate: 90
|
||||||
|
nose-highlight
|
||||||
|
bounds: 719, 300, 4, 4
|
||||||
|
nose-shadow
|
||||||
|
bounds: 869, 128, 7, 8
|
||||||
|
pupil-back
|
||||||
|
bounds: 730, 529, 10, 14
|
||||||
|
pupil-front
|
||||||
|
bounds: 254, 21, 12, 18
|
||||||
|
rope-back
|
||||||
|
bounds: 232, 383, 10, 492
|
||||||
|
rotate: 90
|
||||||
|
rope-front
|
||||||
|
bounds: 232, 383, 10, 492
|
||||||
|
rotate: 90
|
||||||
|
rope-front-bottom
|
||||||
|
bounds: 954, 735, 42, 65
|
||||||
|
skirt
|
||||||
|
bounds: 2, 776, 440, 246
|
||||||
|
sock-bow
|
||||||
|
bounds: 408, 407, 33, 32
|
||||||
|
spine-logo-body
|
||||||
|
bounds: 879, 853, 13, 32
|
||||||
|
rotate: 90
|
||||||
|
star-big
|
||||||
|
bounds: 939, 141, 18, 24
|
||||||
|
rotate: 90
|
||||||
|
star-medium
|
||||||
|
bounds: 742, 537, 6, 8
|
||||||
|
rotate: 90
|
||||||
|
star-small
|
||||||
|
bounds: 719, 378, 3, 4
|
||||||
|
rotate: 90
|
||||||
|
underskirt
|
||||||
|
bounds: 2, 329, 445, 228
|
||||||
|
rotate: 90
|
||||||
|
underskirt-back
|
||||||
|
bounds: 444, 851, 433, 171
|
||||||
|
wing-back
|
||||||
|
bounds: 290, 129, 146, 252
|
||||||
|
wing-front
|
||||||
|
bounds: 704, 545, 304, 248
|
||||||
|
rotate: 90
|
||||||
BIN
spine-haxe/example/assets/celestial-circus.png
Normal file
|
After Width: | Height: | Size: 790 KiB |
@ -1,116 +1,85 @@
|
|||||||
cloud-pot.png
|
cloud-pot.png
|
||||||
size:4096,512
|
size: 1024, 512
|
||||||
filter:MipMapLinearLinear,MipMapLinearLinear
|
filter: Linear, Linear
|
||||||
|
scale: 0.5
|
||||||
cloud-base-1
|
cloud-base-1
|
||||||
bounds:1109,8,458,415
|
bounds: 2, 300, 233, 210
|
||||||
offsets:5,1,465,420
|
|
||||||
cloud-base-10
|
cloud-base-10
|
||||||
bounds:279,175,190,199
|
bounds: 214, 113, 97, 101
|
||||||
offsets:2,1,193,201
|
|
||||||
cloud-base-2
|
cloud-base-2
|
||||||
bounds:1575,10,416,413
|
bounds: 2, 90, 210, 208
|
||||||
offsets:3,1,420,415
|
|
||||||
cloud-base-3
|
cloud-base-3
|
||||||
bounds:2331,91,332,324
|
bounds: 237, 346, 175, 164
|
||||||
offsets:16,1,349,327
|
|
||||||
rotate:90
|
|
||||||
cloud-base-4
|
cloud-base-4
|
||||||
bounds:1999,78,345,324
|
bounds: 414, 347, 176, 163
|
||||||
offsets:6,1,352,326
|
|
||||||
rotate:90
|
|
||||||
cloud-base-5
|
cloud-base-5
|
||||||
bounds:3496,137,286,248
|
bounds: 313, 89, 145, 125
|
||||||
offsets:2,1,289,250
|
|
||||||
rotate:90
|
|
||||||
cloud-base-6
|
cloud-base-6
|
||||||
bounds:2663,104,319,269
|
bounds: 744, 374, 161, 136
|
||||||
offsets:2,1,322,272
|
|
||||||
rotate:90
|
|
||||||
cloud-base-7
|
cloud-base-7
|
||||||
bounds:2940,128,287,295
|
bounds: 592, 361, 150, 149
|
||||||
offsets:12,1,300,297
|
|
||||||
cloud-base-8
|
cloud-base-8
|
||||||
bounds:3235,123,300,253
|
bounds: 237, 216, 154, 128
|
||||||
offsets:6,1,307,256
|
|
||||||
rotate:90
|
|
||||||
cloud-base-9
|
cloud-base-9
|
||||||
bounds:3752,209,211,214
|
bounds: 907, 402, 107, 108
|
||||||
offsets:2,1,214,216
|
|
||||||
cloud-cheeks
|
cloud-cheeks
|
||||||
bounds:548,227,433,156
|
bounds: 2, 9, 218, 79
|
||||||
offsets:1,1,435,158
|
|
||||||
cloud-eyes-closed
|
cloud-eyes-closed
|
||||||
bounds:279,382,261,41
|
bounds: 744, 350, 132, 22
|
||||||
offsets:1,1,263,43
|
|
||||||
cloud-eyes-open
|
cloud-eyes-open
|
||||||
bounds:8,374,263,49
|
bounds: 592, 333, 133, 26
|
||||||
offsets:1,1,265,51
|
|
||||||
cloud-eyes-reflex
|
cloud-eyes-reflex
|
||||||
bounds:548,391,237,32
|
bounds: 393, 224, 120, 17
|
||||||
offsets:1,1,239,34
|
rotate: 90
|
||||||
cloud-mouth-closed
|
cloud-mouth-closed
|
||||||
bounds:166,336,95,30
|
bounds: 907, 374, 49, 16
|
||||||
offsets:1,1,97,32
|
|
||||||
cloud-mouth-open
|
cloud-mouth-open
|
||||||
bounds:3971,307,116,68
|
bounds: 222, 15, 59, 35
|
||||||
offsets:1,1,118,70
|
|
||||||
rotate:90
|
|
||||||
leaf-big
|
leaf-big
|
||||||
bounds:989,359,40,98
|
bounds: 214, 218, 20, 49
|
||||||
rotate:90
|
|
||||||
leaf-small
|
leaf-small
|
||||||
bounds:989,319,32,57
|
bounds: 958, 373, 17, 30
|
||||||
offsets:1,1,34,59
|
rotate: 90
|
||||||
rotate:90
|
|
||||||
petal-1
|
petal-1
|
||||||
bounds:477,292,50,34
|
bounds: 283, 2, 26, 18
|
||||||
offsets:1,1,52,36
|
|
||||||
petal-2
|
petal-2
|
||||||
bounds:166,296,54,32
|
bounds: 283, 22, 28, 17
|
||||||
offsets:1,1,56,34
|
rotate: 90
|
||||||
petal-3
|
petal-3
|
||||||
bounds:477,334,56,40
|
bounds: 214, 269, 29, 21
|
||||||
offsets:1,1,58,42
|
rotate: 90
|
||||||
pot-base
|
pot-base
|
||||||
bounds:8,250,150,116
|
bounds: 222, 52, 76, 59
|
||||||
offsets:1,1,152,118
|
|
||||||
pot-eyes-closed
|
pot-eyes-closed
|
||||||
bounds:1011,408,90,15
|
bounds: 878, 363, 46, 9
|
||||||
offsets:1,1,92,17
|
|
||||||
pot-eyes-open
|
pot-eyes-open
|
||||||
bounds:989,291,78,20
|
bounds: 222, 2, 40, 11
|
||||||
offsets:1,1,80,22
|
|
||||||
pot-mouth-open
|
pot-mouth-open
|
||||||
bounds:4047,394,25,29
|
bounds: 990, 374, 14, 16
|
||||||
offsets:1,1,27,31
|
|
||||||
pot-mouth-pouty
|
pot-mouth-pouty
|
||||||
bounds:228,287,33,17
|
bounds: 300, 93, 18, 10
|
||||||
offsets:1,1,35,19
|
rotate: 90
|
||||||
pot-mouth-smile
|
pot-mouth-smile
|
||||||
bounds:3971,281,25,18
|
bounds: 300, 77, 14, 10
|
||||||
offsets:1,1,27,20
|
rotate: 90
|
||||||
pot-mouth-smile-big
|
pot-mouth-smile-big
|
||||||
bounds:228,312,37,16
|
bounds: 878, 352, 20, 9
|
||||||
offsets:1,1,39,18
|
|
||||||
rain-blue
|
rain-blue
|
||||||
bounds:4047,310,21,34
|
bounds: 926, 360, 12, 18
|
||||||
offsets:1,1,23,36
|
rotate: 90
|
||||||
rain-color
|
rain-color
|
||||||
bounds:4047,270,16,32
|
bounds: 264, 4, 9, 17
|
||||||
offsets:1,1,18,34
|
rotate: 90
|
||||||
rain-green
|
rain-green
|
||||||
bounds:4047,352,21,34
|
bounds: 900, 349, 12, 18
|
||||||
offsets:1,1,23,36
|
rotate: 90
|
||||||
rain-white
|
rain-white
|
||||||
bounds:1054,330,21,42
|
bounds: 727, 337, 12, 22
|
||||||
offsets:1,1,23,44
|
|
||||||
rotate:90
|
|
||||||
rain-white-reflex
|
rain-white-reflex
|
||||||
bounds:4080,406,8,17
|
bounds: 2, 2, 5, 10
|
||||||
offsets:1,1,10,19
|
rotate: 90
|
||||||
stem
|
stem
|
||||||
bounds:793,407,16,210
|
bounds: 907, 392, 8, 105
|
||||||
rotate:90
|
rotate: 90
|
||||||
stem-end
|
stem-end
|
||||||
bounds:1075,298,23,24
|
bounds: 300, 62, 13, 13
|
||||||
offsets:1,1,25,26
|
|
||||||
|
|||||||
@ -1,66 +1,123 @@
|
|||||||
{
|
{
|
||||||
"skeleton": { "hash": "WlXIcG5lrwQ", "spine": "4.2.67-beta", "x": -345, "y": -17, "width": 756, "height": 1098 },
|
"skeleton": {
|
||||||
|
"hash": "CKnF82un6n8",
|
||||||
|
"spine": "4.2.64-beta",
|
||||||
|
"x": -345,
|
||||||
|
"y": -272846.84,
|
||||||
|
"width": 756,
|
||||||
|
"height": 273927.84,
|
||||||
|
"images": "./images/",
|
||||||
|
"audio": ""
|
||||||
|
},
|
||||||
"bones": [
|
"bones": [
|
||||||
{ "name": "root" },
|
{ "name": "root" },
|
||||||
{ "name": "pot-control", "parent": "root", "x": 5, "y": 42 },
|
{ "name": "pot-control", "parent": "root", "x": 5, "y": 42, "color": "8828ffff", "icon": "arrowsB" },
|
||||||
{ "name": "cloud", "parent": "pot-control", "x": 26.5, "y": 772 },
|
{ "name": "cloud", "parent": "pot-control", "x": 26.5, "y": 772, "color": "1ee8c0ff", "icon": "circle" },
|
||||||
{ "name": "cloud-base-1", "parent": "cloud", "x": -4, "y": 57 },
|
{ "name": "cloud-base-1", "parent": "cloud", "x": -4, "y": 57, "color": "b0d5eaff" },
|
||||||
{ "name": "cloud-base-2", "parent": "cloud-base-1", "x": 148.5, "y": -18.5 },
|
{ "name": "cloud-base-2", "parent": "cloud-base-1", "x": 148.5, "y": -18.5, "color": "b0d5eaff" },
|
||||||
{ "name": "cloud-base-3", "parent": "cloud-base-1", "x": -182, "y": -87.5 },
|
{ "name": "cloud-base-3", "parent": "cloud-base-1", "x": -182, "y": -87.5, "color": "b0d5eaff" },
|
||||||
{ "name": "cloud-base-4", "parent": "cloud", "x": -31.5, "y": -77 },
|
{ "name": "cloud-base-4", "parent": "cloud", "x": -31.5, "y": -77, "color": "b0d5eaff" },
|
||||||
{ "name": "cloud-base-5", "parent": "cloud-base-4", "x": 177.5, "y": 8 },
|
{ "name": "cloud-base-5", "parent": "cloud-base-4", "x": 177.5, "y": 8, "color": "b0d5eaff" },
|
||||||
{ "name": "cloud-base-6", "parent": "cloud-base-1", "x": -150.5, "y": 40 },
|
{ "name": "cloud-base-6", "parent": "cloud-base-1", "x": -150.5, "y": 40, "color": "b0d5eaff" },
|
||||||
{ "name": "cloud-base-7", "parent": "cloud-base-1", "x": 8.5, "y": 36.5 },
|
{ "name": "cloud-base-7", "parent": "cloud-base-1", "x": 8.5, "y": 36.5, "color": "b0d5eaff" },
|
||||||
{ "name": "cloud-base-8", "parent": "cloud-base-2", "x": 3.5, "y": 68.5 },
|
{ "name": "cloud-base-8", "parent": "cloud-base-2", "x": 3.5, "y": 68.5, "color": "b0d5eaff" },
|
||||||
{ "name": "cloud-base-9", "parent": "cloud-base-3", "x": -83.5, "y": 30.5 },
|
{ "name": "cloud-base-9", "parent": "cloud-base-3", "x": -83.5, "y": 30.5, "color": "b0d5eaff" },
|
||||||
{ "name": "cloud-base-10", "parent": "cloud-base-5", "x": 137, "y": 54.5 },
|
{ "name": "cloud-base-10", "parent": "cloud-base-5", "x": 137, "y": 54.5, "color": "b0d5eaff" },
|
||||||
{ "name": "rain-blue", "parent": "cloud", "x": 102.49, "y": -26 },
|
{ "name": "rain-blue", "parent": "cloud", "x": 102.49, "y": -26, "color": "2360e3ff", "icon": "diamond" },
|
||||||
{ "name": "rain-color", "parent": "cloud", "x": -39.42, "y": -26 },
|
{ "name": "rain-color", "parent": "cloud", "x": -39.42, "y": -26, "color": "2360e3ff", "icon": "diamond" },
|
||||||
{ "name": "rain-green", "parent": "cloud", "x": 35.08, "y": -26 },
|
{ "name": "rain-green", "parent": "cloud", "x": 35.08, "y": -26, "color": "2360e3ff", "icon": "diamond" },
|
||||||
{ "name": "rain-white", "parent": "cloud", "x": -103.92, "y": -26 },
|
{ "name": "rain-white", "parent": "cloud", "x": -103.92, "y": -26, "color": "2360e3ff", "icon": "diamond" },
|
||||||
{ "name": "pot", "parent": "pot-control", "x": -5, "y": -42 },
|
{ "name": "pot", "parent": "pot-control", "x": -5, "y": -42, "color": "8828ffff" },
|
||||||
{ "name": "pot-face", "parent": "pot", "x": -1.06, "y": 28.16 },
|
{ "name": "pot-face", "parent": "pot", "x": -1.06, "y": 28.16, "color": "f38383ff", "icon": "gear" },
|
||||||
{ "name": "leaf-big", "parent": "pot", "length": 46.73, "rotation": 119.24, "x": 4.04, "y": 95.05 },
|
{
|
||||||
{ "name": "leaf-big-tip", "parent": "leaf-big", "length": 46.73, "x": 46.73 },
|
"name": "leaf-big",
|
||||||
{ "name": "leaf-small", "parent": "pot", "length": 51.32, "rotation": 50.93, "x": 10.16, "y": 96.81 },
|
"parent": "pot",
|
||||||
{ "name": "stem", "parent": "pot", "length": 104.76, "rotation": 90, "x": 7.24, "y": 92.61 },
|
"length": 46.73,
|
||||||
{ "name": "stem2", "parent": "stem", "length": 69.84, "x": 104.76 },
|
"rotation": 119.24,
|
||||||
{ "name": "stem3", "parent": "stem2", "length": 34.92, "x": 69.84 },
|
"x": 4.04,
|
||||||
{ "name": "petal-3", "parent": "stem3", "length": 37.74, "rotation": 1.03, "x": 30.73, "y": 0.64 },
|
"y": 95.05,
|
||||||
{ "name": "petal-1", "parent": "stem3", "length": 40.11, "rotation": 70.18, "x": 34.13, "y": 3.02 },
|
"color": "abe323ff"
|
||||||
{ "name": "petal-2", "parent": "stem3", "length": 48.62, "rotation": -80.34, "x": 32.09, "y": -4.46 },
|
},
|
||||||
{ "name": "cloud-face", "parent": "cloud", "y": 14.93 }
|
{ "name": "leaf-big-tip", "parent": "leaf-big", "length": 46.73, "x": 46.73, "color": "abe323ff" },
|
||||||
|
{
|
||||||
|
"name": "leaf-small",
|
||||||
|
"parent": "pot",
|
||||||
|
"length": 51.32,
|
||||||
|
"rotation": 50.93,
|
||||||
|
"x": 10.16,
|
||||||
|
"y": 96.81,
|
||||||
|
"color": "abe323ff"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "stem",
|
||||||
|
"parent": "pot",
|
||||||
|
"length": 104.76,
|
||||||
|
"rotation": 90,
|
||||||
|
"x": 7.24,
|
||||||
|
"y": 92.61,
|
||||||
|
"color": "abe323ff"
|
||||||
|
},
|
||||||
|
{ "name": "stem2", "parent": "stem", "length": 69.84, "x": 104.76, "color": "abe323ff" },
|
||||||
|
{ "name": "stem3", "parent": "stem2", "length": 34.92, "x": 69.84, "color": "abe323ff" },
|
||||||
|
{
|
||||||
|
"name": "petal-3",
|
||||||
|
"parent": "stem3",
|
||||||
|
"length": 37.74,
|
||||||
|
"rotation": 1.03,
|
||||||
|
"x": 30.73,
|
||||||
|
"y": 0.64,
|
||||||
|
"color": "2381e3ff"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "petal-1",
|
||||||
|
"parent": "stem3",
|
||||||
|
"length": 40.11,
|
||||||
|
"rotation": 70.18,
|
||||||
|
"x": 34.13,
|
||||||
|
"y": 3.02,
|
||||||
|
"color": "2381e3ff"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "petal-2",
|
||||||
|
"parent": "stem3",
|
||||||
|
"length": 48.62,
|
||||||
|
"rotation": -80.34,
|
||||||
|
"x": 32.09,
|
||||||
|
"y": -4.46,
|
||||||
|
"color": "2381e3ff"
|
||||||
|
},
|
||||||
|
{ "name": "cloud-face", "parent": "cloud", "y": 14.93, "color": "9e82ffff", "icon": "arrowsB" }
|
||||||
],
|
],
|
||||||
"slots": [
|
"slots": [
|
||||||
{ "name": "rain-green", "bone": "rain-green", "attachment": "rain-green" },
|
{ "name": "rain/rain-green", "bone": "rain-green", "attachment": "rain-green" },
|
||||||
{ "name": "rain-blue", "bone": "rain-blue", "attachment": "rain-blue" },
|
{ "name": "rain/rain-blue", "bone": "rain-blue", "attachment": "rain-blue" },
|
||||||
{ "name": "rain-color", "bone": "rain-color", "attachment": "rain-color" },
|
{ "name": "rain/rain-color", "bone": "rain-color", "attachment": "rain-color" },
|
||||||
{ "name": "rain-white", "bone": "rain-white", "attachment": "rain-white" },
|
{ "name": "rain/rain-white", "bone": "rain-white", "attachment": "rain-white" },
|
||||||
{ "name": "rain-white-reflex", "bone": "rain-white", "attachment": "rain-white-reflex" },
|
{ "name": "rain/rain-white-reflex", "bone": "rain-white", "attachment": "rain-white-reflex" },
|
||||||
{ "name": "petal-1", "bone": "petal-1", "attachment": "petal-1" },
|
{ "name": "flower/petal-1", "bone": "petal-1", "attachment": "petal-1" },
|
||||||
{ "name": "petal-2", "bone": "petal-2", "attachment": "petal-2" },
|
{ "name": "flower/petal-2", "bone": "petal-2", "attachment": "petal-2" },
|
||||||
{ "name": "petal-3", "bone": "petal-3", "attachment": "petal-3" },
|
{ "name": "flower/petal-3", "bone": "petal-3", "attachment": "petal-3" },
|
||||||
{ "name": "stem", "bone": "stem", "attachment": "stem" },
|
{ "name": "flower/stem", "bone": "stem", "attachment": "stem" },
|
||||||
{ "name": "leaf-big", "bone": "leaf-big", "attachment": "leaf-big" },
|
{ "name": "flower/leaf-big", "bone": "leaf-big", "attachment": "leaf-big" },
|
||||||
{ "name": "leaf-small", "bone": "leaf-small", "attachment": "leaf-small" },
|
{ "name": "flower/leaf-small", "bone": "leaf-small", "attachment": "leaf-small" },
|
||||||
{ "name": "stem-end", "bone": "stem3", "attachment": "stem-end" },
|
{ "name": "flower/stem-end", "bone": "stem3", "attachment": "stem-end" },
|
||||||
{ "name": "pot-base", "bone": "pot", "attachment": "pot-base" },
|
{ "name": "pot/pot-base", "bone": "pot", "attachment": "pot-base" },
|
||||||
{ "name": "pot-mouth", "bone": "pot-face", "attachment": "pot-mouth-smile-big" },
|
{ "name": "pot/pot-mouth", "bone": "pot-face", "attachment": "pot-mouth-smile-big" },
|
||||||
{ "name": "pot-eyes", "bone": "pot-face", "attachment": "pot-eyes-open" },
|
{ "name": "pot/pot-eyes", "bone": "pot-face", "attachment": "pot-eyes-open" },
|
||||||
{ "name": "cloud-base-1", "bone": "cloud-base-1", "attachment": "cloud-base-1" },
|
{ "name": "cloud/cloud-base/cloud-base-1", "bone": "cloud-base-1", "attachment": "cloud-base-1" },
|
||||||
{ "name": "cloud-base-2", "bone": "cloud-base-2", "attachment": "cloud-base-2" },
|
{ "name": "cloud/cloud-base/cloud-base-2", "bone": "cloud-base-2", "attachment": "cloud-base-2" },
|
||||||
{ "name": "cloud-base-3", "bone": "cloud-base-3", "attachment": "cloud-base-3" },
|
{ "name": "cloud/cloud-base/cloud-base-3", "bone": "cloud-base-3", "attachment": "cloud-base-3" },
|
||||||
{ "name": "cloud-base-4", "bone": "cloud-base-4", "attachment": "cloud-base-4" },
|
{ "name": "cloud/cloud-base/cloud-base-4", "bone": "cloud-base-4", "attachment": "cloud-base-4" },
|
||||||
{ "name": "cloud-base-5", "bone": "cloud-base-5", "attachment": "cloud-base-5" },
|
{ "name": "cloud/cloud-base/cloud-base-5", "bone": "cloud-base-5", "attachment": "cloud-base-5" },
|
||||||
{ "name": "cloud-base-6", "bone": "cloud-base-6", "attachment": "cloud-base-6" },
|
{ "name": "cloud/cloud-base/cloud-base-6", "bone": "cloud-base-6", "attachment": "cloud-base-6" },
|
||||||
{ "name": "cloud-base-7", "bone": "cloud-base-7", "attachment": "cloud-base-7" },
|
{ "name": "cloud/cloud-base/cloud-base-7", "bone": "cloud-base-7", "attachment": "cloud-base-7" },
|
||||||
{ "name": "cloud-base-8", "bone": "cloud-base-8", "attachment": "cloud-base-8" },
|
{ "name": "cloud/cloud-base/cloud-base-8", "bone": "cloud-base-8", "attachment": "cloud-base-8" },
|
||||||
{ "name": "cloud-base-9", "bone": "cloud-base-9", "attachment": "cloud-base-9" },
|
{ "name": "cloud/cloud-base/cloud-base-9", "bone": "cloud-base-9", "attachment": "cloud-base-9" },
|
||||||
{ "name": "cloud-base-10", "bone": "cloud-base-10", "attachment": "cloud-base-10" },
|
{ "name": "cloud/cloud-base/cloud-base-10", "bone": "cloud-base-10", "attachment": "cloud-base-10" },
|
||||||
{ "name": "cloud-cheeks", "bone": "cloud-face", "attachment": "cloud-cheeks" },
|
{ "name": "cloud/cloud-cheeks", "bone": "cloud-face", "attachment": "cloud-cheeks" },
|
||||||
{ "name": "cloud-eyes", "bone": "cloud-face", "attachment": "cloud-eyes-open" },
|
{ "name": "cloud/cloud-eyes", "bone": "cloud-face", "attachment": "cloud-eyes-open" },
|
||||||
{ "name": "cloud-eyes-reflex", "bone": "cloud-face", "attachment": "cloud-eyes-reflex" },
|
{ "name": "cloud/cloud-eyes-reflex", "bone": "cloud-face", "attachment": "cloud-eyes-reflex" },
|
||||||
{ "name": "cloud-mouth", "bone": "cloud-face", "attachment": "cloud-mouth-closed" }
|
{ "name": "cloud/cloud-mouth", "bone": "cloud-face", "attachment": "cloud-mouth-closed" }
|
||||||
],
|
],
|
||||||
"physics": [
|
"physics": [
|
||||||
{
|
{
|
||||||
@ -398,7 +455,10 @@
|
|||||||
"uvs": [ 1, 1, 0, 1, 0, 0.75, 0, 0.5, 0, 0.25, 0, 0, 1, 0, 1, 0.25, 1, 0.5, 1, 0.75 ],
|
"uvs": [ 1, 1, 0, 1, 0, 0.75, 0, 0.5, 0, 0.25, 0, 0, 1, 0, 1, 0.25, 1, 0.5, 1, 0.75 ],
|
||||||
"triangles": [ 8, 3, 7, 3, 4, 7, 7, 4, 6, 4, 5, 6, 0, 1, 9, 1, 2, 9, 9, 2, 8, 2, 3, 8 ],
|
"triangles": [ 8, 3, 7, 3, 4, 7, 7, 4, 6, 4, 5, 6, 0, 1, 9, 1, 2, 9, 9, 2, 8, 2, 3, 8 ],
|
||||||
"vertices": [ 1, 19, -5.05, -21.72, 1, 1, 19, -5.05, 18.28, 1, 2, 19, 19.45, 18.28, 0.75483, 20, -27.28, 18.28, 0.24517, 2, 19, 43.95, 18.28, 0.50538, 20, -2.78, 18.28, 0.49462, 2, 19, 68.45, 18.28, 0.25278, 20, 21.72, 18.28, 0.74722, 1, 20, 46.22, 18.28, 1, 1, 20, 46.22, -21.72, 1, 2, 19, 68.45, -21.72, 0.24458, 20, 21.72, -21.72, 0.75542, 2, 19, 43.95, -21.72, 0.4937, 20, -2.78, -21.72, 0.5063, 2, 19, 19.45, -21.72, 0.74651, 20, -27.28, -21.72, 0.25349 ],
|
"vertices": [ 1, 19, -5.05, -21.72, 1, 1, 19, -5.05, 18.28, 1, 2, 19, 19.45, 18.28, 0.75483, 20, -27.28, 18.28, 0.24517, 2, 19, 43.95, 18.28, 0.50538, 20, -2.78, 18.28, 0.49462, 2, 19, 68.45, 18.28, 0.25278, 20, 21.72, 18.28, 0.74722, 1, 20, 46.22, 18.28, 1, 1, 20, 46.22, -21.72, 1, 2, 19, 68.45, -21.72, 0.24458, 20, 21.72, -21.72, 0.75542, 2, 19, 43.95, -21.72, 0.4937, 20, -2.78, -21.72, 0.5063, 2, 19, 19.45, -21.72, 0.74651, 20, -27.28, -21.72, 0.25349 ],
|
||||||
"hull": 10
|
"hull": 10,
|
||||||
|
"edges": [ 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 18, 0 ],
|
||||||
|
"width": 40,
|
||||||
|
"height": 98
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"leaf-small": {
|
"leaf-small": {
|
||||||
@ -419,7 +479,10 @@
|
|||||||
"uvs": [ 1, 1, 0, 1, 0, 0.90909, 0, 0.81818, 0, 0.72727, 0, 0.63636, 0, 0.54545, 0, 0.45455, 0, 0.36364, 0, 0.27273, 0, 0.18182, 0, 0.09091, 0, 0, 1, 0, 1, 0.09091, 1, 0.18182, 1, 0.27273, 1, 0.36364, 1, 0.45455, 1, 0.54545, 1, 0.63636, 1, 0.72727, 1, 0.81818, 1, 0.90909 ],
|
"uvs": [ 1, 1, 0, 1, 0, 0.90909, 0, 0.81818, 0, 0.72727, 0, 0.63636, 0, 0.54545, 0, 0.45455, 0, 0.36364, 0, 0.27273, 0, 0.18182, 0, 0.09091, 0, 0, 1, 0, 1, 0.09091, 1, 0.18182, 1, 0.27273, 1, 0.36364, 1, 0.45455, 1, 0.54545, 1, 0.63636, 1, 0.72727, 1, 0.81818, 1, 0.90909 ],
|
||||||
"triangles": [ 15, 10, 14, 10, 11, 14, 14, 11, 13, 11, 12, 13, 18, 7, 17, 7, 8, 17, 17, 8, 16, 8, 9, 16, 16, 9, 15, 9, 10, 15, 0, 1, 23, 1, 2, 23, 23, 2, 22, 2, 3, 22, 22, 3, 21, 3, 4, 21, 21, 4, 20, 4, 5, 20, 20, 5, 19, 5, 6, 19, 19, 6, 18, 6, 7, 18 ],
|
"triangles": [ 15, 10, 14, 10, 11, 14, 14, 11, 13, 11, 12, 13, 18, 7, 17, 7, 8, 17, 17, 8, 16, 8, 9, 16, 16, 9, 15, 9, 10, 15, 0, 1, 23, 1, 2, 23, 23, 2, 22, 2, 3, 22, 22, 3, 21, 3, 4, 21, 21, 4, 20, 4, 5, 20, 20, 5, 19, 5, 6, 19, 19, 6, 18, 6, 7, 18 ],
|
||||||
"vertices": [ 1, 22, -3.61, -6.76, 1, 1, 22, -3.61, 9.24, 1, 3, 22, 15.49, 9.24, 0.97258, 23, -89.27, 9.24, 0.02734, 24, -159.11, 9.24, 8.0E-5, 3, 22, 34.58, 9.24, 0.92758, 23, -70.18, 9.24, 0.07175, 24, -140.02, 9.24, 6.7E-4, 3, 22, 53.67, 9.24, 0.851, 23, -51.09, 9.24, 0.14565, 24, -120.93, 9.24, 0.00335, 3, 22, 72.76, 9.24, 0.73702, 23, -32, 9.24, 0.25075, 24, -101.84, 9.24, 0.01223, 3, 22, 91.85, 9.24, 0.59184, 23, -12.91, 9.24, 0.37282, 24, -82.74, 9.24, 0.03534, 3, 22, 110.94, 9.24, 0.43333, 23, 6.18, 9.24, 0.482, 24, -63.65, 9.24, 0.08467, 3, 22, 130.03, 9.24, 0.28467, 23, 25.27, 9.24, 0.54153, 24, -44.56, 9.24, 0.1738, 3, 22, 149.12, 9.24, 0.16502, 23, 44.37, 9.24, 0.52188, 24, -25.47, 9.24, 0.3131, 3, 22, 168.21, 9.24, 0.08234, 23, 63.46, 9.24, 0.4129, 24, -6.38, 9.24, 0.50477, 3, 22, 187.3, 9.24, 0.03198, 23, 82.55, 9.24, 0.228, 24, 12.71, 9.24, 0.74001, 1, 24, 31.8, 9.24, 1, 1, 24, 31.8, -6.76, 1, 3, 22, 187.3, -6.76, 0.02989, 23, 82.55, -6.76, 0.23389, 24, 12.71, -6.76, 0.73622, 3, 22, 168.21, -6.76, 0.07799, 23, 63.46, -6.76, 0.42357, 24, -6.38, -6.76, 0.49844, 3, 22, 149.12, -6.76, 0.1584, 23, 44.37, -6.76, 0.53549, 24, -25.47, -6.76, 0.30611, 3, 22, 130.03, -6.76, 0.27629, 23, 25.27, -6.76, 0.55594, 24, -44.56, -6.76, 0.16777, 3, 22, 110.94, -6.76, 0.42428, 23, 6.18, -6.76, 0.49529, 24, -63.65, -6.76, 0.08044, 3, 22, 91.85, -6.76, 0.58346, 23, -12.91, -6.76, 0.38366, 24, -82.74, -6.76, 0.03289, 3, 22, 72.76, -6.76, 0.73038, 23, -32, -6.76, 0.25856, 24, -101.84, -6.76, 0.01107, 3, 22, 53.67, -6.76, 0.84652, 23, -51.09, -6.76, 0.15057, 24, -120.93, -6.76, 0.00291, 3, 22, 34.58, -6.76, 0.92506, 23, -70.18, -6.76, 0.0744, 24, -140.02, -6.76, 5.4E-4, 3, 22, 15.49, -6.76, 0.97151, 23, -89.27, -6.76, 0.02843, 24, -159.11, -6.76, 6.0E-5 ],
|
"vertices": [ 1, 22, -3.61, -6.76, 1, 1, 22, -3.61, 9.24, 1, 3, 22, 15.49, 9.24, 0.97258, 23, -89.27, 9.24, 0.02734, 24, -159.11, 9.24, 8.0E-5, 3, 22, 34.58, 9.24, 0.92758, 23, -70.18, 9.24, 0.07175, 24, -140.02, 9.24, 6.7E-4, 3, 22, 53.67, 9.24, 0.851, 23, -51.09, 9.24, 0.14565, 24, -120.93, 9.24, 0.00335, 3, 22, 72.76, 9.24, 0.73702, 23, -32, 9.24, 0.25075, 24, -101.84, 9.24, 0.01223, 3, 22, 91.85, 9.24, 0.59184, 23, -12.91, 9.24, 0.37282, 24, -82.74, 9.24, 0.03534, 3, 22, 110.94, 9.24, 0.43333, 23, 6.18, 9.24, 0.482, 24, -63.65, 9.24, 0.08467, 3, 22, 130.03, 9.24, 0.28467, 23, 25.27, 9.24, 0.54153, 24, -44.56, 9.24, 0.1738, 3, 22, 149.12, 9.24, 0.16502, 23, 44.37, 9.24, 0.52188, 24, -25.47, 9.24, 0.3131, 3, 22, 168.21, 9.24, 0.08234, 23, 63.46, 9.24, 0.4129, 24, -6.38, 9.24, 0.50477, 3, 22, 187.3, 9.24, 0.03198, 23, 82.55, 9.24, 0.228, 24, 12.71, 9.24, 0.74001, 1, 24, 31.8, 9.24, 1, 1, 24, 31.8, -6.76, 1, 3, 22, 187.3, -6.76, 0.02989, 23, 82.55, -6.76, 0.23389, 24, 12.71, -6.76, 0.73622, 3, 22, 168.21, -6.76, 0.07799, 23, 63.46, -6.76, 0.42357, 24, -6.38, -6.76, 0.49844, 3, 22, 149.12, -6.76, 0.1584, 23, 44.37, -6.76, 0.53549, 24, -25.47, -6.76, 0.30611, 3, 22, 130.03, -6.76, 0.27629, 23, 25.27, -6.76, 0.55594, 24, -44.56, -6.76, 0.16777, 3, 22, 110.94, -6.76, 0.42428, 23, 6.18, -6.76, 0.49529, 24, -63.65, -6.76, 0.08044, 3, 22, 91.85, -6.76, 0.58346, 23, -12.91, -6.76, 0.38366, 24, -82.74, -6.76, 0.03289, 3, 22, 72.76, -6.76, 0.73038, 23, -32, -6.76, 0.25856, 24, -101.84, -6.76, 0.01107, 3, 22, 53.67, -6.76, 0.84652, 23, -51.09, -6.76, 0.15057, 24, -120.93, -6.76, 0.00291, 3, 22, 34.58, -6.76, 0.92506, 23, -70.18, -6.76, 0.0744, 24, -140.02, -6.76, 5.4E-4, 3, 22, 15.49, -6.76, 0.97151, 23, -89.27, -6.76, 0.02843, 24, -159.11, -6.76, 6.0E-5 ],
|
||||||
"hull": 24
|
"hull": 24,
|
||||||
|
"edges": [ 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 18, 20, 20, 22, 22, 24, 24, 26, 26, 28, 28, 30, 30, 32, 32, 34, 34, 36, 36, 38, 38, 40, 40, 42, 42, 44, 44, 46, 46, 0 ],
|
||||||
|
"width": 16,
|
||||||
|
"height": 210
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"stem-end": {
|
"stem-end": {
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 1.6 MiB After Width: | Height: | Size: 328 KiB |
BIN
spine-haxe/example/assets/cloud-pot.skel
Normal file
|
Before Width: | Height: | Size: 163 KiB |
@ -1,7 +1,6 @@
|
|||||||
sack-pma.png
|
sack.png
|
||||||
size: 512, 512
|
size: 512, 512
|
||||||
filter: Linear, Linear
|
filter: Linear, Linear
|
||||||
pma: true
|
|
||||||
scale: 0.5
|
scale: 0.5
|
||||||
cape-back
|
cape-back
|
||||||
bounds: 237, 149, 260, 260
|
bounds: 237, 149, 260, 260
|
||||||
BIN
spine-haxe/example/assets/sack.png
Normal file
|
After Width: | Height: | Size: 161 KiB |
210
spine-haxe/example/assets/snowglobe-pma.atlas
Normal file
@ -0,0 +1,210 @@
|
|||||||
|
snowglobe-pma.png
|
||||||
|
size: 1024, 1024
|
||||||
|
filter: Linear, Linear
|
||||||
|
pma: true
|
||||||
|
scale: 0.5
|
||||||
|
arm-down-r
|
||||||
|
bounds: 884, 129, 76, 53
|
||||||
|
arm-up-l
|
||||||
|
bounds: 718, 23, 49, 114
|
||||||
|
rotate: 90
|
||||||
|
arm-up-r
|
||||||
|
bounds: 867, 69, 58, 104
|
||||||
|
rotate: 90
|
||||||
|
blue-present-base
|
||||||
|
bounds: 884, 883, 126, 139
|
||||||
|
eye-reflex-l
|
||||||
|
bounds: 991, 347, 12, 13
|
||||||
|
eye-reflex-r
|
||||||
|
bounds: 867, 129, 10, 12
|
||||||
|
rotate: 90
|
||||||
|
eye-white-l
|
||||||
|
bounds: 987, 697, 35, 43
|
||||||
|
eye-white-r
|
||||||
|
bounds: 560, 2, 34, 48
|
||||||
|
eyelashes-l
|
||||||
|
bounds: 982, 2, 32, 40
|
||||||
|
gift-base
|
||||||
|
bounds: 884, 335, 125, 105
|
||||||
|
rotate: 90
|
||||||
|
gift-decoration
|
||||||
|
bounds: 518, 2, 48, 40
|
||||||
|
rotate: 90
|
||||||
|
globe-borders
|
||||||
|
bounds: 2, 141, 880, 881
|
||||||
|
glove-l
|
||||||
|
bounds: 982, 44, 40, 61
|
||||||
|
glove-shadow-l
|
||||||
|
bounds: 991, 403, 28, 57
|
||||||
|
glove-shadow-r
|
||||||
|
bounds: 960, 204, 38, 62
|
||||||
|
rotate: 90
|
||||||
|
green-present-base
|
||||||
|
bounds: 138, 13, 126, 139
|
||||||
|
rotate: 90
|
||||||
|
hair-front
|
||||||
|
bounds: 884, 590, 150, 101
|
||||||
|
rotate: 90
|
||||||
|
hair-side
|
||||||
|
bounds: 995, 574, 27, 53
|
||||||
|
hair-strand-2
|
||||||
|
bounds: 987, 629, 26, 66
|
||||||
|
hair-strand-5
|
||||||
|
bounds: 690, 7, 25, 47
|
||||||
|
hair-strand-6
|
||||||
|
bounds: 995, 507, 14, 35
|
||||||
|
head-base
|
||||||
|
bounds: 2, 4, 134, 135
|
||||||
|
leg-down-l
|
||||||
|
bounds: 596, 3, 92, 51
|
||||||
|
leg-up-l
|
||||||
|
bounds: 718, 74, 65, 147
|
||||||
|
rotate: 90
|
||||||
|
leg-up-l-fuzzy
|
||||||
|
bounds: 834, 2, 73, 65
|
||||||
|
leg-up-r
|
||||||
|
bounds: 576, 56, 83, 140
|
||||||
|
rotate: 90
|
||||||
|
leg-up-r-fuzzy
|
||||||
|
bounds: 909, 2, 65, 71
|
||||||
|
rotate: 90
|
||||||
|
mouth
|
||||||
|
bounds: 991, 362, 39, 13
|
||||||
|
rotate: 90
|
||||||
|
neck-scarf
|
||||||
|
bounds: 279, 25, 142, 114
|
||||||
|
nose
|
||||||
|
bounds: 995, 488, 17, 14
|
||||||
|
rotate: 90
|
||||||
|
nose-shadow
|
||||||
|
bounds: 299, 8, 15, 15
|
||||||
|
red-present-base
|
||||||
|
bounds: 884, 742, 126, 139
|
||||||
|
scarf-end-l
|
||||||
|
bounds: 884, 462, 126, 109
|
||||||
|
rotate: 90
|
||||||
|
scarf-end-r
|
||||||
|
bounds: 423, 52, 151, 87
|
||||||
|
scarf-ribbon-middle-r
|
||||||
|
bounds: 960, 244, 62, 89
|
||||||
|
scarf-shadow
|
||||||
|
bounds: 884, 184, 149, 74
|
||||||
|
rotate: 90
|
||||||
|
shoe-l
|
||||||
|
bounds: 973, 107, 49, 95
|
||||||
|
shoe-r
|
||||||
|
bounds: 423, 6, 44, 93
|
||||||
|
rotate: 90
|
||||||
|
shoelace
|
||||||
|
bounds: 279, 2, 21, 18
|
||||||
|
rotate: 90
|
||||||
|
snow
|
||||||
|
bounds: 995, 544, 27, 28
|
||||||
|
string
|
||||||
|
bounds: 138, 6, 5, 53
|
||||||
|
rotate: 90
|
||||||
|
|
||||||
|
snowglobe-pma_2.png
|
||||||
|
size: 1024, 1024
|
||||||
|
filter: Linear, Linear
|
||||||
|
pma: true
|
||||||
|
scale: 0.5
|
||||||
|
arm-down-l
|
||||||
|
bounds: 884, 579, 56, 54
|
||||||
|
arm-down-l-fuzzy
|
||||||
|
bounds: 884, 635, 57, 59
|
||||||
|
arm-down-r-fuzzy
|
||||||
|
bounds: 884, 696, 61, 66
|
||||||
|
blue-present-decoration
|
||||||
|
bounds: 884, 216, 41, 40
|
||||||
|
green-present-decoration
|
||||||
|
bounds: 884, 216, 41, 40
|
||||||
|
ear-l
|
||||||
|
bounds: 884, 527, 55, 50
|
||||||
|
ear-r
|
||||||
|
bounds: 291, 94, 45, 66
|
||||||
|
rotate: 90
|
||||||
|
eyelashes-r
|
||||||
|
bounds: 2, 2, 32, 47
|
||||||
|
rotate: 90
|
||||||
|
globe-texture-strong
|
||||||
|
bounds: 2, 141, 880, 881
|
||||||
|
glove-fingers-l
|
||||||
|
bounds: 884, 361, 39, 51
|
||||||
|
glove-fingers-r
|
||||||
|
bounds: 884, 469, 41, 56
|
||||||
|
glove-r
|
||||||
|
bounds: 76, 36, 44, 65
|
||||||
|
rotate: 90
|
||||||
|
hair-strand-1
|
||||||
|
bounds: 359, 102, 37, 65
|
||||||
|
rotate: 90
|
||||||
|
hair-strand-3
|
||||||
|
bounds: 884, 414, 40, 53
|
||||||
|
hair-strand-4
|
||||||
|
bounds: 939, 893, 37, 69
|
||||||
|
iris-l
|
||||||
|
bounds: 884, 173, 40, 41
|
||||||
|
iris-r
|
||||||
|
bounds: 143, 39, 40, 41
|
||||||
|
leg-down-r
|
||||||
|
bounds: 2, 36, 72, 103
|
||||||
|
pupil-l
|
||||||
|
bounds: 51, 2, 32, 32
|
||||||
|
pupil-r
|
||||||
|
bounds: 85, 2, 32, 32
|
||||||
|
red-present-decoration
|
||||||
|
bounds: 426, 99, 41, 40
|
||||||
|
scarf-pompom-l
|
||||||
|
bounds: 884, 309, 50, 46
|
||||||
|
rotate: 90
|
||||||
|
scarf-pompom-r
|
||||||
|
bounds: 884, 258, 49, 47
|
||||||
|
rotate: 90
|
||||||
|
scarf-ribbon-bottom-l
|
||||||
|
bounds: 884, 856, 106, 53
|
||||||
|
rotate: 90
|
||||||
|
scarf-ribbon-bottom-r
|
||||||
|
bounds: 76, 82, 105, 57
|
||||||
|
scarf-ribbon-middle-l
|
||||||
|
bounds: 884, 764, 63, 90
|
||||||
|
scarf-ribbon-top-l
|
||||||
|
bounds: 884, 964, 105, 58
|
||||||
|
scarf-ribbon-top-r
|
||||||
|
bounds: 183, 86, 106, 53
|
||||||
|
|
||||||
|
snowglobe-pma_3.png
|
||||||
|
size: 1024, 1024
|
||||||
|
filter: Linear, Linear
|
||||||
|
pma: true
|
||||||
|
scale: 0.5
|
||||||
|
globe-texture
|
||||||
|
bounds: 2, 2, 880, 881
|
||||||
|
|
||||||
|
snowglobe-pma_4.png
|
||||||
|
size: 1024, 1024
|
||||||
|
filter: Linear, Linear
|
||||||
|
pma: true
|
||||||
|
scale: 0.5
|
||||||
|
elf-shadow
|
||||||
|
bounds: 2, 2, 395, 158
|
||||||
|
globe-reflections
|
||||||
|
bounds: 2, 162, 646, 835
|
||||||
|
globe-shadow
|
||||||
|
bounds: 650, 77, 920, 366
|
||||||
|
rotate: 90
|
||||||
|
hat
|
||||||
|
bounds: 399, 7, 153, 221
|
||||||
|
rotate: 90
|
||||||
|
|
||||||
|
snowglobe-pma_5.png
|
||||||
|
size: 1024, 1024
|
||||||
|
filter: Linear, Linear
|
||||||
|
pma: true
|
||||||
|
scale: 0.5
|
||||||
|
body
|
||||||
|
bounds: 710, 569, 139, 151
|
||||||
|
globe-base-back
|
||||||
|
bounds: 2, 2, 606, 258
|
||||||
|
globe-base-front
|
||||||
|
bounds: 2, 262, 706, 458
|
||||||
BIN
spine-haxe/example/assets/snowglobe-pma.png
Normal file
|
After Width: | Height: | Size: 673 KiB |
BIN
spine-haxe/example/assets/snowglobe-pma_2.png
Normal file
|
After Width: | Height: | Size: 784 KiB |
BIN
spine-haxe/example/assets/snowglobe-pma_3.png
Normal file
|
After Width: | Height: | Size: 400 KiB |
BIN
spine-haxe/example/assets/snowglobe-pma_4.png
Normal file
|
After Width: | Height: | Size: 240 KiB |
BIN
spine-haxe/example/assets/snowglobe-pma_5.png
Normal file
|
After Width: | Height: | Size: 392 KiB |
2911
spine-haxe/example/assets/snowglobe-pro.json
Normal file
BIN
spine-haxe/example/assets/snowglobe-pro.skel
Normal file
205
spine-haxe/example/assets/snowglobe.atlas
Normal file
@ -0,0 +1,205 @@
|
|||||||
|
snowglobe.png
|
||||||
|
size: 1024, 1024
|
||||||
|
filter: Linear, Linear
|
||||||
|
scale: 0.5
|
||||||
|
arm-down-r
|
||||||
|
bounds: 884, 129, 76, 53
|
||||||
|
arm-up-l
|
||||||
|
bounds: 718, 23, 49, 114
|
||||||
|
rotate: 90
|
||||||
|
arm-up-r
|
||||||
|
bounds: 867, 69, 58, 104
|
||||||
|
rotate: 90
|
||||||
|
blue-present-base
|
||||||
|
bounds: 884, 883, 126, 139
|
||||||
|
eye-reflex-l
|
||||||
|
bounds: 991, 347, 12, 13
|
||||||
|
eye-reflex-r
|
||||||
|
bounds: 867, 129, 10, 12
|
||||||
|
rotate: 90
|
||||||
|
eye-white-l
|
||||||
|
bounds: 987, 697, 35, 43
|
||||||
|
eye-white-r
|
||||||
|
bounds: 560, 2, 34, 48
|
||||||
|
eyelashes-l
|
||||||
|
bounds: 982, 2, 32, 40
|
||||||
|
gift-base
|
||||||
|
bounds: 884, 335, 125, 105
|
||||||
|
rotate: 90
|
||||||
|
gift-decoration
|
||||||
|
bounds: 518, 2, 48, 40
|
||||||
|
rotate: 90
|
||||||
|
globe-borders
|
||||||
|
bounds: 2, 141, 880, 881
|
||||||
|
glove-l
|
||||||
|
bounds: 982, 44, 40, 61
|
||||||
|
glove-shadow-l
|
||||||
|
bounds: 991, 403, 28, 57
|
||||||
|
glove-shadow-r
|
||||||
|
bounds: 960, 204, 38, 62
|
||||||
|
rotate: 90
|
||||||
|
green-present-base
|
||||||
|
bounds: 138, 13, 126, 139
|
||||||
|
rotate: 90
|
||||||
|
hair-front
|
||||||
|
bounds: 884, 590, 150, 101
|
||||||
|
rotate: 90
|
||||||
|
hair-side
|
||||||
|
bounds: 995, 574, 27, 53
|
||||||
|
hair-strand-2
|
||||||
|
bounds: 987, 629, 26, 66
|
||||||
|
hair-strand-5
|
||||||
|
bounds: 690, 7, 25, 47
|
||||||
|
hair-strand-6
|
||||||
|
bounds: 995, 507, 14, 35
|
||||||
|
head-base
|
||||||
|
bounds: 2, 4, 134, 135
|
||||||
|
leg-down-l
|
||||||
|
bounds: 596, 3, 92, 51
|
||||||
|
leg-up-l
|
||||||
|
bounds: 718, 74, 65, 147
|
||||||
|
rotate: 90
|
||||||
|
leg-up-l-fuzzy
|
||||||
|
bounds: 834, 2, 73, 65
|
||||||
|
leg-up-r
|
||||||
|
bounds: 576, 56, 83, 140
|
||||||
|
rotate: 90
|
||||||
|
leg-up-r-fuzzy
|
||||||
|
bounds: 909, 2, 65, 71
|
||||||
|
rotate: 90
|
||||||
|
mouth
|
||||||
|
bounds: 991, 362, 39, 13
|
||||||
|
rotate: 90
|
||||||
|
neck-scarf
|
||||||
|
bounds: 279, 25, 142, 114
|
||||||
|
nose
|
||||||
|
bounds: 995, 488, 17, 14
|
||||||
|
rotate: 90
|
||||||
|
nose-shadow
|
||||||
|
bounds: 299, 8, 15, 15
|
||||||
|
red-present-base
|
||||||
|
bounds: 884, 742, 126, 139
|
||||||
|
scarf-end-l
|
||||||
|
bounds: 884, 462, 126, 109
|
||||||
|
rotate: 90
|
||||||
|
scarf-end-r
|
||||||
|
bounds: 423, 52, 151, 87
|
||||||
|
scarf-ribbon-middle-r
|
||||||
|
bounds: 960, 244, 62, 89
|
||||||
|
scarf-shadow
|
||||||
|
bounds: 884, 184, 149, 74
|
||||||
|
rotate: 90
|
||||||
|
shoe-l
|
||||||
|
bounds: 973, 107, 49, 95
|
||||||
|
shoe-r
|
||||||
|
bounds: 423, 6, 44, 93
|
||||||
|
rotate: 90
|
||||||
|
shoelace
|
||||||
|
bounds: 279, 2, 21, 18
|
||||||
|
rotate: 90
|
||||||
|
snow
|
||||||
|
bounds: 995, 544, 27, 28
|
||||||
|
string
|
||||||
|
bounds: 138, 6, 5, 53
|
||||||
|
rotate: 90
|
||||||
|
|
||||||
|
snowglobe_2.png
|
||||||
|
size: 1024, 1024
|
||||||
|
filter: Linear, Linear
|
||||||
|
scale: 0.5
|
||||||
|
arm-down-l
|
||||||
|
bounds: 884, 579, 56, 54
|
||||||
|
arm-down-l-fuzzy
|
||||||
|
bounds: 884, 635, 57, 59
|
||||||
|
arm-down-r-fuzzy
|
||||||
|
bounds: 884, 696, 61, 66
|
||||||
|
blue-present-decoration
|
||||||
|
bounds: 884, 216, 41, 40
|
||||||
|
green-present-decoration
|
||||||
|
bounds: 884, 216, 41, 40
|
||||||
|
ear-l
|
||||||
|
bounds: 884, 527, 55, 50
|
||||||
|
ear-r
|
||||||
|
bounds: 291, 94, 45, 66
|
||||||
|
rotate: 90
|
||||||
|
eyelashes-r
|
||||||
|
bounds: 2, 2, 32, 47
|
||||||
|
rotate: 90
|
||||||
|
globe-texture-strong
|
||||||
|
bounds: 2, 141, 880, 881
|
||||||
|
glove-fingers-l
|
||||||
|
bounds: 884, 361, 39, 51
|
||||||
|
glove-fingers-r
|
||||||
|
bounds: 884, 469, 41, 56
|
||||||
|
glove-r
|
||||||
|
bounds: 76, 36, 44, 65
|
||||||
|
rotate: 90
|
||||||
|
hair-strand-1
|
||||||
|
bounds: 359, 102, 37, 65
|
||||||
|
rotate: 90
|
||||||
|
hair-strand-3
|
||||||
|
bounds: 884, 414, 40, 53
|
||||||
|
hair-strand-4
|
||||||
|
bounds: 939, 893, 37, 69
|
||||||
|
iris-l
|
||||||
|
bounds: 884, 173, 40, 41
|
||||||
|
iris-r
|
||||||
|
bounds: 143, 39, 40, 41
|
||||||
|
leg-down-r
|
||||||
|
bounds: 2, 36, 72, 103
|
||||||
|
pupil-l
|
||||||
|
bounds: 51, 2, 32, 32
|
||||||
|
pupil-r
|
||||||
|
bounds: 85, 2, 32, 32
|
||||||
|
red-present-decoration
|
||||||
|
bounds: 426, 99, 41, 40
|
||||||
|
scarf-pompom-l
|
||||||
|
bounds: 884, 309, 50, 46
|
||||||
|
rotate: 90
|
||||||
|
scarf-pompom-r
|
||||||
|
bounds: 884, 258, 49, 47
|
||||||
|
rotate: 90
|
||||||
|
scarf-ribbon-bottom-l
|
||||||
|
bounds: 884, 856, 106, 53
|
||||||
|
rotate: 90
|
||||||
|
scarf-ribbon-bottom-r
|
||||||
|
bounds: 76, 82, 105, 57
|
||||||
|
scarf-ribbon-middle-l
|
||||||
|
bounds: 884, 764, 63, 90
|
||||||
|
scarf-ribbon-top-l
|
||||||
|
bounds: 884, 964, 105, 58
|
||||||
|
scarf-ribbon-top-r
|
||||||
|
bounds: 183, 86, 106, 53
|
||||||
|
|
||||||
|
snowglobe_3.png
|
||||||
|
size: 1024, 1024
|
||||||
|
filter: Linear, Linear
|
||||||
|
scale: 0.5
|
||||||
|
globe-texture
|
||||||
|
bounds: 2, 2, 880, 881
|
||||||
|
|
||||||
|
snowglobe_4.png
|
||||||
|
size: 1024, 1024
|
||||||
|
filter: Linear, Linear
|
||||||
|
scale: 0.5
|
||||||
|
elf-shadow
|
||||||
|
bounds: 2, 2, 395, 158
|
||||||
|
globe-reflections
|
||||||
|
bounds: 2, 162, 646, 835
|
||||||
|
globe-shadow
|
||||||
|
bounds: 650, 77, 920, 366
|
||||||
|
rotate: 90
|
||||||
|
hat
|
||||||
|
bounds: 399, 7, 153, 221
|
||||||
|
rotate: 90
|
||||||
|
|
||||||
|
snowglobe_5.png
|
||||||
|
size: 1024, 1024
|
||||||
|
filter: Linear, Linear
|
||||||
|
scale: 0.5
|
||||||
|
body
|
||||||
|
bounds: 710, 569, 139, 151
|
||||||
|
globe-base-back
|
||||||
|
bounds: 2, 2, 606, 258
|
||||||
|
globe-base-front
|
||||||
|
bounds: 2, 262, 706, 458
|
||||||
BIN
spine-haxe/example/assets/snowglobe.png
Normal file
|
After Width: | Height: | Size: 1.0 MiB |
BIN
spine-haxe/example/assets/snowglobe_2.png
Normal file
|
After Width: | Height: | Size: 1009 KiB |
BIN
spine-haxe/example/assets/snowglobe_3.png
Normal file
|
After Width: | Height: | Size: 537 KiB |
BIN
spine-haxe/example/assets/snowglobe_4.png
Normal file
|
After Width: | Height: | Size: 517 KiB |
BIN
spine-haxe/example/assets/snowglobe_5.png
Normal file
|
After Width: | Height: | Size: 403 KiB |
@ -65,7 +65,6 @@ class BasicExample extends Scene {
|
|||||||
|
|
||||||
public function onTouch(e:TouchEvent) {
|
public function onTouch(e:TouchEvent) {
|
||||||
var touch = e.getTouch(this);
|
var touch = e.getTouch(this);
|
||||||
trace(touch);
|
|
||||||
if (touch != null && touch.phase == TouchPhase.ENDED) {
|
if (touch != null && touch.phase == TouchPhase.ENDED) {
|
||||||
SceneManager.getInstance().switchScene(new SequenceExample());
|
SceneManager.getInstance().switchScene(new SequenceExample());
|
||||||
}
|
}
|
||||||
|
|||||||
95
spine-haxe/example/src/CelestialCircusExample.hx
Normal file
@ -0,0 +1,95 @@
|
|||||||
|
/******************************************************************************
|
||||||
|
* Spine Runtimes License Agreement
|
||||||
|
* Last updated July 28, 2023. Replaces all prior versions.
|
||||||
|
*
|
||||||
|
* Copyright (c) 2013-2023, Esoteric Software LLC
|
||||||
|
*
|
||||||
|
* Integration of the Spine Runtimes into software or otherwise creating
|
||||||
|
* derivative works of the Spine Runtimes is permitted under the terms and
|
||||||
|
* conditions of Section 2 of the Spine Editor License Agreement:
|
||||||
|
* http://esotericsoftware.com/spine-editor-license
|
||||||
|
*
|
||||||
|
* Otherwise, it is permitted to integrate the Spine Runtimes into software or
|
||||||
|
* otherwise create derivative works of the Spine Runtimes (collectively,
|
||||||
|
* "Products"), provided that each user of the Products must obtain their own
|
||||||
|
* Spine Editor license and redistribution of the Products in any form must
|
||||||
|
* include this license and copyright notice.
|
||||||
|
*
|
||||||
|
* THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "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 LLC 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 THE
|
||||||
|
* SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*****************************************************************************/
|
||||||
|
|
||||||
|
import spine.BlendMode;
|
||||||
|
import Scene.SceneManager;
|
||||||
|
import openfl.utils.Assets;
|
||||||
|
import spine.SkeletonData;
|
||||||
|
import spine.Physics;
|
||||||
|
import spine.animation.AnimationStateData;
|
||||||
|
import spine.atlas.TextureAtlas;
|
||||||
|
import spine.starling.SkeletonSprite;
|
||||||
|
import spine.starling.StarlingTextureLoader;
|
||||||
|
import starling.core.Starling;
|
||||||
|
import starling.events.TouchEvent;
|
||||||
|
import starling.events.TouchPhase;
|
||||||
|
|
||||||
|
class CelestialCircusExample extends Scene {
|
||||||
|
var loadBinary = true;
|
||||||
|
|
||||||
|
var skeletonSprite:SkeletonSprite;
|
||||||
|
private var movement = new openfl.geom.Point();
|
||||||
|
|
||||||
|
public function load():Void {
|
||||||
|
background.color = 0x333333;
|
||||||
|
|
||||||
|
var atlas = new TextureAtlas(Assets.getText("assets/celestial-circus.atlas"), new StarlingTextureLoader("assets/celestial-circus.atlas"));
|
||||||
|
var skeletondata = SkeletonData.from(loadBinary ? Assets.getBytes("assets/celestial-circus-pro.skel") : Assets.getText("assets/celestial-circus-pro.json"), atlas);
|
||||||
|
|
||||||
|
var animationStateData = new AnimationStateData(skeletondata);
|
||||||
|
animationStateData.defaultMix = 0.25;
|
||||||
|
|
||||||
|
skeletonSprite = new SkeletonSprite(skeletondata, animationStateData);
|
||||||
|
skeletonSprite.skeleton.updateWorldTransform(Physics.update);
|
||||||
|
var bounds = skeletonSprite.skeleton.getBounds();
|
||||||
|
|
||||||
|
skeletonSprite.scale = 0.2;
|
||||||
|
skeletonSprite.x = Starling.current.stage.stageWidth / 2;
|
||||||
|
skeletonSprite.y = Starling.current.stage.stageHeight / 1.5;
|
||||||
|
|
||||||
|
skeletonSprite.state.setAnimationByName(0, "eyeblink-long", true);
|
||||||
|
|
||||||
|
addText("Drag Celeste to move her around");
|
||||||
|
addText("Click background for next scene", 10, 30);
|
||||||
|
|
||||||
|
addChild(skeletonSprite);
|
||||||
|
juggler.add(skeletonSprite);
|
||||||
|
|
||||||
|
addEventListener(TouchEvent.TOUCH, onTouch);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function onTouch(e:TouchEvent) {
|
||||||
|
var skeletonTouch = e.getTouch(skeletonSprite);
|
||||||
|
if (skeletonTouch != null) {
|
||||||
|
if (skeletonTouch.phase == TouchPhase.MOVED) {
|
||||||
|
skeletonTouch.getMovement(this, movement);
|
||||||
|
skeletonSprite.skeleton.x += movement.x / skeletonSprite.scale;
|
||||||
|
skeletonSprite.skeleton.y += movement.y / skeletonSprite.scale;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
var sceneTouch = e.getTouch(this);
|
||||||
|
if (sceneTouch != null && sceneTouch.phase == TouchPhase.ENDED) {
|
||||||
|
SceneManager.getInstance().switchScene(new SnowglobeExample());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
78
spine-haxe/example/src/CloudPotExample.hx
Normal file
@ -0,0 +1,78 @@
|
|||||||
|
/******************************************************************************
|
||||||
|
* Spine Runtimes License Agreement
|
||||||
|
* Last updated July 28, 2023. Replaces all prior versions.
|
||||||
|
*
|
||||||
|
* Copyright (c) 2013-2023, Esoteric Software LLC
|
||||||
|
*
|
||||||
|
* Integration of the Spine Runtimes into software or otherwise creating
|
||||||
|
* derivative works of the Spine Runtimes is permitted under the terms and
|
||||||
|
* conditions of Section 2 of the Spine Editor License Agreement:
|
||||||
|
* http://esotericsoftware.com/spine-editor-license
|
||||||
|
*
|
||||||
|
* Otherwise, it is permitted to integrate the Spine Runtimes into software or
|
||||||
|
* otherwise create derivative works of the Spine Runtimes (collectively,
|
||||||
|
* "Products"), provided that each user of the Products must obtain their own
|
||||||
|
* Spine Editor license and redistribution of the Products in any form must
|
||||||
|
* include this license and copyright notice.
|
||||||
|
*
|
||||||
|
* THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "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 LLC 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 THE
|
||||||
|
* SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*****************************************************************************/
|
||||||
|
|
||||||
|
import spine.BlendMode;
|
||||||
|
import Scene.SceneManager;
|
||||||
|
import openfl.utils.Assets;
|
||||||
|
import spine.SkeletonData;
|
||||||
|
import spine.Physics;
|
||||||
|
import spine.animation.AnimationStateData;
|
||||||
|
import spine.atlas.TextureAtlas;
|
||||||
|
import spine.starling.SkeletonSprite;
|
||||||
|
import spine.starling.StarlingTextureLoader;
|
||||||
|
import starling.core.Starling;
|
||||||
|
import starling.events.TouchEvent;
|
||||||
|
import starling.events.TouchPhase;
|
||||||
|
|
||||||
|
class CloudPotExample extends Scene {
|
||||||
|
var loadBinary = false;
|
||||||
|
|
||||||
|
public function load():Void {
|
||||||
|
background.color = 0x333333;
|
||||||
|
|
||||||
|
var atlas = new TextureAtlas(Assets.getText("assets/cloud-pot.atlas"), new StarlingTextureLoader("assets/cloud-pot.atlas"));
|
||||||
|
var skeletondata = SkeletonData.from(Assets.getText("assets/cloud-pot.json"), atlas);
|
||||||
|
|
||||||
|
var animationStateData = new AnimationStateData(skeletondata);
|
||||||
|
animationStateData.defaultMix = 0.25;
|
||||||
|
|
||||||
|
var skeletonSprite = new SkeletonSprite(skeletondata, animationStateData);
|
||||||
|
skeletonSprite.skeleton.updateWorldTransform(Physics.update);
|
||||||
|
var bounds = skeletonSprite.skeleton.getBounds();
|
||||||
|
|
||||||
|
|
||||||
|
skeletonSprite.scale = 0.2;
|
||||||
|
skeletonSprite.x = Starling.current.stage.stageWidth / 2;
|
||||||
|
skeletonSprite.y = Starling.current.stage.stageHeight / 2;
|
||||||
|
|
||||||
|
skeletonSprite.state.setAnimationByName(0, "playing-in-the-rain", true);
|
||||||
|
|
||||||
|
addChild(skeletonSprite);
|
||||||
|
juggler.add(skeletonSprite);
|
||||||
|
|
||||||
|
addEventListener(TouchEvent.TOUCH, onTouch);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function onTouch(e:TouchEvent) {
|
||||||
|
var touch = e.getTouch(this);
|
||||||
|
if (touch != null && touch.phase == TouchPhase.ENDED) {
|
||||||
|
SceneManager.getInstance().switchScene(new BasicExample());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -49,7 +49,6 @@ class Main extends Sprite {
|
|||||||
starlingSingleton.start();
|
starlingSingleton.start();
|
||||||
Starling.current.stage.color = 0x000000;
|
Starling.current.stage.color = 0x000000;
|
||||||
|
|
||||||
// SceneManager.getInstance().switchScene(new TankExample());
|
SceneManager.getInstance().switchScene(new BasicExample());
|
||||||
SceneManager.getInstance().switchScene(new VineExample());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
79
spine-haxe/example/src/SackExample.hx
Normal file
@ -0,0 +1,79 @@
|
|||||||
|
/******************************************************************************
|
||||||
|
* Spine Runtimes License Agreement
|
||||||
|
* Last updated July 28, 2023. Replaces all prior versions.
|
||||||
|
*
|
||||||
|
* Copyright (c) 2013-2023, Esoteric Software LLC
|
||||||
|
*
|
||||||
|
* Integration of the Spine Runtimes into software or otherwise creating
|
||||||
|
* derivative works of the Spine Runtimes is permitted under the terms and
|
||||||
|
* conditions of Section 2 of the Spine Editor License Agreement:
|
||||||
|
* http://esotericsoftware.com/spine-editor-license
|
||||||
|
*
|
||||||
|
* Otherwise, it is permitted to integrate the Spine Runtimes into software or
|
||||||
|
* otherwise create derivative works of the Spine Runtimes (collectively,
|
||||||
|
* "Products"), provided that each user of the Products must obtain their own
|
||||||
|
* Spine Editor license and redistribution of the Products in any form must
|
||||||
|
* include this license and copyright notice.
|
||||||
|
*
|
||||||
|
* THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "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 LLC 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 THE
|
||||||
|
* SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*****************************************************************************/
|
||||||
|
|
||||||
|
import Scene.SceneManager;
|
||||||
|
import openfl.utils.Assets;
|
||||||
|
import spine.SkeletonData;
|
||||||
|
import spine.Physics;
|
||||||
|
import spine.animation.AnimationStateData;
|
||||||
|
import spine.atlas.TextureAtlas;
|
||||||
|
import spine.starling.SkeletonSprite;
|
||||||
|
import spine.starling.StarlingTextureLoader;
|
||||||
|
import starling.core.Starling;
|
||||||
|
import starling.events.TouchEvent;
|
||||||
|
import starling.events.TouchPhase;
|
||||||
|
|
||||||
|
class SackExample extends Scene {
|
||||||
|
var loadBinary = false;
|
||||||
|
|
||||||
|
public function load():Void {
|
||||||
|
background.color = 0x333333;
|
||||||
|
|
||||||
|
var atlas = new TextureAtlas(Assets.getText("assets/sack.atlas"), new StarlingTextureLoader("assets/sack.atlas"));
|
||||||
|
var skeletondata = SkeletonData.from(Assets.getText("assets/sack-pro.json"), atlas);
|
||||||
|
|
||||||
|
var animationStateData = new AnimationStateData(skeletondata);
|
||||||
|
animationStateData.defaultMix = 0.25;
|
||||||
|
|
||||||
|
var skeletonSprite = new SkeletonSprite(skeletondata, animationStateData);
|
||||||
|
skeletonSprite.skeleton.updateWorldTransform(Physics.update);
|
||||||
|
var bounds = skeletonSprite.skeleton.getBounds();
|
||||||
|
|
||||||
|
|
||||||
|
skeletonSprite.scale = 0.2;
|
||||||
|
skeletonSprite.x = Starling.current.stage.stageWidth / 2;
|
||||||
|
skeletonSprite.y = Starling.current.stage.stageHeight/ 2;
|
||||||
|
|
||||||
|
trace(skeletonSprite);
|
||||||
|
|
||||||
|
skeletonSprite.state.setAnimationByName(0, "cape-follow-example", true);
|
||||||
|
|
||||||
|
addChild(skeletonSprite);
|
||||||
|
juggler.add(skeletonSprite);
|
||||||
|
|
||||||
|
addEventListener(TouchEvent.TOUCH, onTouch);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function onTouch(e:TouchEvent) {
|
||||||
|
var touch = e.getTouch(this);
|
||||||
|
if (touch != null && touch.phase == TouchPhase.ENDED) {
|
||||||
|
SceneManager.getInstance().switchScene(new CelestialCircusExample());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -28,7 +28,6 @@
|
|||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
|
|
||||||
import starling.display.Quad;
|
import starling.display.Quad;
|
||||||
import starling.geom.Rectangle;
|
|
||||||
import starling.text.TextField;
|
import starling.text.TextField;
|
||||||
import starling.core.Starling;
|
import starling.core.Starling;
|
||||||
import starling.display.Sprite;
|
import starling.display.Sprite;
|
||||||
@ -82,10 +81,10 @@ abstract class Scene extends Sprite {
|
|||||||
super.dispose();
|
super.dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
public function addText(text:String) {
|
public function addText(text:String, x:Int = 10, y:Int = 10) {
|
||||||
var textField = new TextField(200, 30, text);
|
var textField = new TextField(250, 30, text);
|
||||||
textField.x = 10;
|
textField.x = x;
|
||||||
textField.y = 10;
|
textField.y = y;
|
||||||
textField.format.color = 0xffffffff;
|
textField.format.color = 0xffffffff;
|
||||||
addChild(textField);
|
addChild(textField);
|
||||||
return textField;
|
return textField;
|
||||||
|
|||||||
77
spine-haxe/example/src/SnowglobeExample.hx
Normal file
@ -0,0 +1,77 @@
|
|||||||
|
/******************************************************************************
|
||||||
|
* Spine Runtimes License Agreement
|
||||||
|
* Last updated July 28, 2023. Replaces all prior versions.
|
||||||
|
*
|
||||||
|
* Copyright (c) 2013-2023, Esoteric Software LLC
|
||||||
|
*
|
||||||
|
* Integration of the Spine Runtimes into software or otherwise creating
|
||||||
|
* derivative works of the Spine Runtimes is permitted under the terms and
|
||||||
|
* conditions of Section 2 of the Spine Editor License Agreement:
|
||||||
|
* http://esotericsoftware.com/spine-editor-license
|
||||||
|
*
|
||||||
|
* Otherwise, it is permitted to integrate the Spine Runtimes into software or
|
||||||
|
* otherwise create derivative works of the Spine Runtimes (collectively,
|
||||||
|
* "Products"), provided that each user of the Products must obtain their own
|
||||||
|
* Spine Editor license and redistribution of the Products in any form must
|
||||||
|
* include this license and copyright notice.
|
||||||
|
*
|
||||||
|
* THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "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 LLC 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 THE
|
||||||
|
* SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*****************************************************************************/
|
||||||
|
|
||||||
|
import Scene.SceneManager;
|
||||||
|
import openfl.utils.Assets;
|
||||||
|
import spine.SkeletonData;
|
||||||
|
import spine.Physics;
|
||||||
|
import spine.animation.AnimationStateData;
|
||||||
|
import spine.atlas.TextureAtlas;
|
||||||
|
import spine.starling.SkeletonSprite;
|
||||||
|
import spine.starling.StarlingTextureLoader;
|
||||||
|
import starling.core.Starling;
|
||||||
|
import starling.events.TouchEvent;
|
||||||
|
import starling.events.TouchPhase;
|
||||||
|
|
||||||
|
class SnowglobeExample extends Scene {
|
||||||
|
var loadBinary = false;
|
||||||
|
|
||||||
|
public function load():Void {
|
||||||
|
background.color = 0x333333;
|
||||||
|
|
||||||
|
var atlas = new TextureAtlas(Assets.getText("assets/snowglobe.atlas"), new StarlingTextureLoader("assets/snowglobe.atlas"));
|
||||||
|
var skeletondata = SkeletonData.from(Assets.getText("assets/snowglobe-pro.json"), atlas);
|
||||||
|
|
||||||
|
var animationStateData = new AnimationStateData(skeletondata);
|
||||||
|
animationStateData.defaultMix = 0.25;
|
||||||
|
|
||||||
|
var skeletonSprite = new SkeletonSprite(skeletondata, animationStateData);
|
||||||
|
skeletonSprite.skeleton.updateWorldTransform(Physics.update);
|
||||||
|
var bounds = skeletonSprite.skeleton.getBounds();
|
||||||
|
|
||||||
|
|
||||||
|
skeletonSprite.scale = 0.15;
|
||||||
|
skeletonSprite.x = Starling.current.stage.stageWidth / 2;
|
||||||
|
skeletonSprite.y = Starling.current.stage.stageHeight/ 1.5;
|
||||||
|
|
||||||
|
skeletonSprite.state.setAnimationByName(0, "shake", true);
|
||||||
|
|
||||||
|
addChild(skeletonSprite);
|
||||||
|
juggler.add(skeletonSprite);
|
||||||
|
|
||||||
|
addEventListener(TouchEvent.TOUCH, onTouch);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function onTouch(e:TouchEvent) {
|
||||||
|
var touch = e.getTouch(this);
|
||||||
|
if (touch != null && touch.phase == TouchPhase.ENDED) {
|
||||||
|
SceneManager.getInstance().switchScene(new CloudPotExample());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -27,7 +27,6 @@
|
|||||||
* SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
* SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
|
|
||||||
import spine.BlendMode;
|
|
||||||
import Scene.SceneManager;
|
import Scene.SceneManager;
|
||||||
import openfl.utils.Assets;
|
import openfl.utils.Assets;
|
||||||
import spine.SkeletonData;
|
import spine.SkeletonData;
|
||||||
@ -45,31 +44,17 @@ class VineExample extends Scene {
|
|||||||
|
|
||||||
public function load():Void {
|
public function load():Void {
|
||||||
background.color = 0xffffffff;
|
background.color = 0xffffffff;
|
||||||
|
var atlas = new TextureAtlas(Assets.getText("assets/vine.atlas"), new StarlingTextureLoader("assets/vine.atlas"));
|
||||||
// var atlas = new TextureAtlas(Assets.getText("assets/cloud-pot.atlas"), new StarlingTextureLoader("assets/cloud-pot.atlas"));
|
var skeletondata = SkeletonData.from(loadBinary ? Assets.getBytes("assets/vine-pro.skel") : Assets.getText("assets/vine-pro.json"), atlas);
|
||||||
// var skeletondata = SkeletonData.from(Assets.getText("assets/cloud-pot.json"), atlas);
|
|
||||||
|
|
||||||
var atlas = new TextureAtlas(Assets.getText("assets/sack-pma.atlas"), new StarlingTextureLoader("assets/sack-pma.atlas"));
|
|
||||||
var skeletondata = SkeletonData.from(Assets.getText("assets/sack-pro.json"), atlas);
|
|
||||||
|
|
||||||
var animationStateData = new AnimationStateData(skeletondata);
|
var animationStateData = new AnimationStateData(skeletondata);
|
||||||
animationStateData.defaultMix = 0.25;
|
animationStateData.defaultMix = 0.25;
|
||||||
|
|
||||||
var skeletonSprite = new SkeletonSprite(skeletondata, animationStateData);
|
var skeletonSprite = new SkeletonSprite(skeletondata, animationStateData);
|
||||||
skeletonSprite.skeleton.updateWorldTransform(Physics.update);
|
skeletonSprite.skeleton.updateWorldTransform(Physics.none);
|
||||||
var bounds = skeletonSprite.skeleton.getBounds();
|
var bounds = skeletonSprite.skeleton.getBounds();
|
||||||
|
skeletonSprite.scale = Starling.current.stage.stageWidth / bounds.width;
|
||||||
|
|
||||||
skeletonSprite.scale = 0.2;
|
|
||||||
skeletonSprite.x = Starling.current.stage.stageWidth / 2;
|
skeletonSprite.x = Starling.current.stage.stageWidth / 2;
|
||||||
skeletonSprite.y = Starling.current.stage.stageHeight/ 2;
|
skeletonSprite.y = Starling.current.stage.stageHeight * 0.5;
|
||||||
|
|
||||||
trace(skeletonSprite);
|
|
||||||
|
|
||||||
// skeletonSprite.state.setAnimationByName(0, "playing-in-the-rain", true);
|
|
||||||
|
|
||||||
|
|
||||||
skeletonSprite.state.setAnimationByName(0, "cape-follow-example", true);
|
|
||||||
|
|
||||||
addChild(skeletonSprite);
|
addChild(skeletonSprite);
|
||||||
juggler.add(skeletonSprite);
|
juggler.add(skeletonSprite);
|
||||||
@ -80,7 +65,8 @@ class VineExample extends Scene {
|
|||||||
public function onTouch(e:TouchEvent) {
|
public function onTouch(e:TouchEvent) {
|
||||||
var touch = e.getTouch(this);
|
var touch = e.getTouch(this);
|
||||||
if (touch != null && touch.phase == TouchPhase.ENDED) {
|
if (touch != null && touch.phase == TouchPhase.ENDED) {
|
||||||
// SceneManager.getInstance().switchScene(new BasicExample());
|
SceneManager.getInstance().switchScene(new SackExample());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -102,6 +102,19 @@ class IkConstraint implements Updatable {
|
|||||||
var rotationIK:Float = -bone.ashearX - bone.arotation,
|
var rotationIK:Float = -bone.ashearX - bone.arotation,
|
||||||
tx:Float = 0,
|
tx:Float = 0,
|
||||||
ty:Float = 0;
|
ty:Float = 0;
|
||||||
|
|
||||||
|
function switchDefault() {
|
||||||
|
var x:Float = targetX - p.worldX, y:Float = targetY - p.worldY;
|
||||||
|
var d:Float = pa * pd - pb * pc;
|
||||||
|
if (Math.abs(d) <= 0.0001) {
|
||||||
|
tx = 0;
|
||||||
|
ty = 0;
|
||||||
|
} else {
|
||||||
|
tx = (x * pd - y * pb) / d - bone.ax;
|
||||||
|
ty = (y * pa - x * pc) / d - bone.ay;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
switch (bone.inherit) {
|
switch (bone.inherit) {
|
||||||
case Inherit.onlyTranslation:
|
case Inherit.onlyTranslation:
|
||||||
tx = (targetX - bone.worldX) * MathUtils.signum(bone.skeleton.scaleX);
|
tx = (targetX - bone.worldX) * MathUtils.signum(bone.skeleton.scaleX);
|
||||||
@ -117,17 +130,9 @@ class IkConstraint implements Updatable {
|
|||||||
var d:Float = pa * pd - pb * pc;
|
var d:Float = pa * pd - pb * pc;
|
||||||
tx = (x * pd - y * pb) / d - bone.ax;
|
tx = (x * pd - y * pb) / d - bone.ax;
|
||||||
ty = (y * pa - x * pc) / d - bone.ay;
|
ty = (y * pa - x * pc) / d - bone.ay;
|
||||||
// TODO: this should fall-through!
|
switchDefault(); // Fall through.
|
||||||
default:
|
default:
|
||||||
var x:Float = targetX - p.worldX, y:Float = targetY - p.worldY;
|
switchDefault();
|
||||||
var d:Float = pa * pd - pb * pc;
|
|
||||||
if (Math.abs(d) <= 0.0001) {
|
|
||||||
tx = 0;
|
|
||||||
ty = 0;
|
|
||||||
} else {
|
|
||||||
tx = (x * pd - y * pb) / d - bone.ax;
|
|
||||||
ty = (y * pa - x * pc) / d - bone.ay;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
rotationIK += Math.atan2(ty, tx) * MathUtils.radDeg;
|
rotationIK += Math.atan2(ty, tx) * MathUtils.radDeg;
|
||||||
|
|||||||
@ -41,9 +41,19 @@ import spine.animation.DeformTimeline;
|
|||||||
import spine.animation.DrawOrderTimeline;
|
import spine.animation.DrawOrderTimeline;
|
||||||
import spine.animation.EventTimeline;
|
import spine.animation.EventTimeline;
|
||||||
import spine.animation.IkConstraintTimeline;
|
import spine.animation.IkConstraintTimeline;
|
||||||
|
import spine.animation.InheritTimeline;
|
||||||
import spine.animation.PathConstraintMixTimeline;
|
import spine.animation.PathConstraintMixTimeline;
|
||||||
import spine.animation.PathConstraintPositionTimeline;
|
import spine.animation.PathConstraintPositionTimeline;
|
||||||
import spine.animation.PathConstraintSpacingTimeline;
|
import spine.animation.PathConstraintSpacingTimeline;
|
||||||
|
import spine.animation.PhysicsConstraintDampingTimeline;
|
||||||
|
import spine.animation.PhysicsConstraintGravityTimeline;
|
||||||
|
import spine.animation.PhysicsConstraintInertiaTimeline;
|
||||||
|
import spine.animation.PhysicsConstraintMassTimeline;
|
||||||
|
import spine.animation.PhysicsConstraintMixTimeline;
|
||||||
|
import spine.animation.PhysicsConstraintResetTimeline;
|
||||||
|
import spine.animation.PhysicsConstraintStrengthTimeline;
|
||||||
|
import spine.animation.PhysicsConstraintTimeline;
|
||||||
|
import spine.animation.PhysicsConstraintWindTimeline;
|
||||||
import spine.animation.RGB2Timeline;
|
import spine.animation.RGB2Timeline;
|
||||||
import spine.animation.RGBA2Timeline;
|
import spine.animation.RGBA2Timeline;
|
||||||
import spine.animation.RGBATimeline;
|
import spine.animation.RGBATimeline;
|
||||||
@ -88,6 +98,7 @@ class SkeletonBinary {
|
|||||||
private static inline var BONE_SHEAR:Int = 7;
|
private static inline var BONE_SHEAR:Int = 7;
|
||||||
private static inline var BONE_SHEARX:Int = 8;
|
private static inline var BONE_SHEARX:Int = 8;
|
||||||
private static inline var BONE_SHEARY:Int = 9;
|
private static inline var BONE_SHEARY:Int = 9;
|
||||||
|
private static inline var BONE_INHERIT:Int = 10;
|
||||||
|
|
||||||
private static inline var SLOT_ATTACHMENT:Int = 0;
|
private static inline var SLOT_ATTACHMENT:Int = 0;
|
||||||
private static inline var SLOT_RGBA:Int = 1;
|
private static inline var SLOT_RGBA:Int = 1;
|
||||||
@ -103,6 +114,15 @@ class SkeletonBinary {
|
|||||||
private static inline var PATH_SPACING:Int = 1;
|
private static inline var PATH_SPACING:Int = 1;
|
||||||
private static inline var PATH_MIX:Int = 2;
|
private static inline var PATH_MIX:Int = 2;
|
||||||
|
|
||||||
|
private static inline var PHYSICS_INERTIA:Int = 0;
|
||||||
|
private static inline var PHYSICS_STRENGTH:Int = 1;
|
||||||
|
private static inline var PHYSICS_DAMPING:Int = 2;
|
||||||
|
private static inline var PHYSICS_MASS:Int = 4;
|
||||||
|
private static inline var PHYSICS_WIND:Int = 5;
|
||||||
|
private static inline var PHYSICS_GRAVITY:Int = 6;
|
||||||
|
private static inline var PHYSICS_MIX:Int = 7;
|
||||||
|
private static inline var PHYSICS_RESET:Int = 8;
|
||||||
|
|
||||||
private static inline var CURVE_LINEAR:Int = 0;
|
private static inline var CURVE_LINEAR:Int = 0;
|
||||||
private static inline var CURVE_STEPPED:Int = 1;
|
private static inline var CURVE_STEPPED:Int = 1;
|
||||||
private static inline var CURVE_BEZIER:Int = 2;
|
private static inline var CURVE_BEZIER:Int = 2;
|
||||||
@ -161,8 +181,11 @@ class SkeletonBinary {
|
|||||||
boneData.length = input.readFloat() * scale;
|
boneData.length = input.readFloat() * scale;
|
||||||
boneData.inherit = Inherit.values[input.readInt(true)];
|
boneData.inherit = Inherit.values[input.readInt(true)];
|
||||||
boneData.skinRequired = input.readBoolean();
|
boneData.skinRequired = input.readBoolean();
|
||||||
if (nonessential)
|
if (nonessential) {
|
||||||
boneData.color.setFromRgba8888(input.readInt32());
|
boneData.color.setFromRgba8888(input.readInt32());
|
||||||
|
boneData.icon = input.readString();
|
||||||
|
boneData.visible = input.readBoolean();
|
||||||
|
}
|
||||||
skeletonData.bones.push(boneData);
|
skeletonData.bones.push(boneData);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -170,6 +193,14 @@ class SkeletonBinary {
|
|||||||
n = input.readInt(true);
|
n = input.readInt(true);
|
||||||
for (i in 0...n) {
|
for (i in 0...n) {
|
||||||
var slotName:String = input.readString();
|
var slotName:String = input.readString();
|
||||||
|
var path:String = null;
|
||||||
|
if (nonessential) {
|
||||||
|
var slash:Int = slotName.lastIndexOf('/');
|
||||||
|
if (slash != -1) {
|
||||||
|
path = slotName.substring(0, slash);
|
||||||
|
slotName = slotName.substring(slash + 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
var slotBoneData:BoneData = skeletonData.bones[input.readInt(true)];
|
var slotBoneData:BoneData = skeletonData.bones[input.readInt(true)];
|
||||||
var slotData:SlotData = new SlotData(i, slotName, slotBoneData);
|
var slotData:SlotData = new SlotData(i, slotName, slotBoneData);
|
||||||
slotData.color.setFromRgba8888(input.readInt32());
|
slotData.color.setFromRgba8888(input.readInt32());
|
||||||
@ -182,6 +213,10 @@ class SkeletonBinary {
|
|||||||
|
|
||||||
slotData.attachmentName = input.readStringRef();
|
slotData.attachmentName = input.readStringRef();
|
||||||
slotData.blendMode = BlendMode.values[input.readInt(true)];
|
slotData.blendMode = BlendMode.values[input.readInt(true)];
|
||||||
|
if (nonessential) {
|
||||||
|
slotData.visible = input.readBoolean();
|
||||||
|
slotData.path = path;
|
||||||
|
}
|
||||||
skeletonData.slots.push(slotData);
|
skeletonData.slots.push(slotData);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -190,18 +225,19 @@ class SkeletonBinary {
|
|||||||
for (i in 0...n) {
|
for (i in 0...n) {
|
||||||
var ikData:IkConstraintData = new IkConstraintData(input.readString());
|
var ikData:IkConstraintData = new IkConstraintData(input.readString());
|
||||||
ikData.order = input.readInt(true);
|
ikData.order = input.readInt(true);
|
||||||
ikData.skinRequired = input.readBoolean();
|
|
||||||
nn = input.readInt(true);
|
nn = input.readInt(true);
|
||||||
for (ii in 0...nn) {
|
for (ii in 0...nn) {
|
||||||
ikData.bones.push(skeletonData.bones[input.readInt(true)]);
|
ikData.bones.push(skeletonData.bones[input.readInt(true)]);
|
||||||
}
|
}
|
||||||
ikData.target = skeletonData.bones[input.readInt(true)];
|
ikData.target = skeletonData.bones[input.readInt(true)];
|
||||||
ikData.mix = input.readFloat();
|
var flags = input.readByte();
|
||||||
ikData.softness = input.readFloat() * scale;
|
ikData.skinRequired = (flags & 1) != 0;
|
||||||
ikData.bendDirection = input.readByte();
|
ikData.bendDirection = (flags & 2) != 0 ? 1 : -1;
|
||||||
ikData.compress = input.readBoolean();
|
ikData.compress = (flags & 4) != 0;
|
||||||
ikData.stretch = input.readBoolean();
|
ikData.stretch = (flags & 8) != 0;
|
||||||
ikData.uniform = input.readBoolean();
|
ikData.uniform = (flags & 16) != 0;
|
||||||
|
if ((flags & 32) != 0) ikData.mix = (flags & 64) != 0 ? input.readFloat() : 1;
|
||||||
|
if ((flags & 128) != 0) ikData.softness = input.readFloat() * scale;
|
||||||
skeletonData.ikConstraints.push(ikData);
|
skeletonData.ikConstraints.push(ikData);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -210,26 +246,28 @@ class SkeletonBinary {
|
|||||||
for (i in 0...n) {
|
for (i in 0...n) {
|
||||||
var transformData:TransformConstraintData = new TransformConstraintData(input.readString());
|
var transformData:TransformConstraintData = new TransformConstraintData(input.readString());
|
||||||
transformData.order = input.readInt(true);
|
transformData.order = input.readInt(true);
|
||||||
transformData.skinRequired = input.readBoolean();
|
|
||||||
nn = input.readInt(true);
|
nn = input.readInt(true);
|
||||||
for (ii in 0...nn) {
|
for (ii in 0...nn) {
|
||||||
transformData.bones.push(skeletonData.bones[input.readInt(true)]);
|
transformData.bones.push(skeletonData.bones[input.readInt(true)]);
|
||||||
}
|
}
|
||||||
transformData.target = skeletonData.bones[input.readInt(true)];
|
transformData.target = skeletonData.bones[input.readInt(true)];
|
||||||
transformData.local = input.readBoolean();
|
var flags = input.readByte();
|
||||||
transformData.relative = input.readBoolean();
|
transformData.skinRequired = (flags & 1) != 0;
|
||||||
transformData.offsetRotation = input.readFloat();
|
transformData.local = (flags & 2) != 0;
|
||||||
transformData.offsetX = input.readFloat() * scale;
|
transformData.relative = (flags & 4) != 0;
|
||||||
transformData.offsetY = input.readFloat() * scale;
|
if ((flags & 8) != 0) transformData.offsetRotation = input.readFloat();
|
||||||
transformData.offsetScaleX = input.readFloat();
|
if ((flags & 16) != 0) transformData.offsetX = input.readFloat() * scale;
|
||||||
transformData.offsetScaleY = input.readFloat();
|
if ((flags & 32) != 0) transformData.offsetY = input.readFloat() * scale;
|
||||||
transformData.offsetShearY = input.readFloat();
|
if ((flags & 64) != 0) transformData.offsetScaleX = input.readFloat();
|
||||||
transformData.mixRotate = input.readFloat();
|
if ((flags & 128) != 0) transformData.offsetScaleY = input.readFloat();
|
||||||
transformData.mixX = input.readFloat();
|
flags = input.readByte();
|
||||||
transformData.mixY = input.readFloat();
|
if ((flags & 1) != 0) transformData.offsetShearY = input.readFloat();
|
||||||
transformData.mixScaleX = input.readFloat();
|
if ((flags & 2) != 0) transformData.mixRotate = input.readFloat();
|
||||||
transformData.mixScaleY = input.readFloat();
|
if ((flags & 4) != 0) transformData.mixX = input.readFloat();
|
||||||
transformData.mixShearY = input.readFloat();
|
if ((flags & 8) != 0) transformData.mixY = input.readFloat();
|
||||||
|
if ((flags & 16) != 0) transformData.mixScaleX = input.readFloat();
|
||||||
|
if ((flags & 32) != 0) transformData.mixScaleY = input.readFloat();
|
||||||
|
if ((flags & 64) != 0) transformData.mixShearY = input.readFloat();
|
||||||
skeletonData.transformConstraints.push(transformData);
|
skeletonData.transformConstraints.push(transformData);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -244,10 +282,11 @@ class SkeletonBinary {
|
|||||||
pathData.bones.push(skeletonData.bones[input.readInt(true)]);
|
pathData.bones.push(skeletonData.bones[input.readInt(true)]);
|
||||||
}
|
}
|
||||||
pathData.target = skeletonData.slots[input.readInt(true)];
|
pathData.target = skeletonData.slots[input.readInt(true)];
|
||||||
pathData.positionMode = PositionMode.values[input.readInt(true)];
|
var flags = input.readByte();
|
||||||
pathData.spacingMode = SpacingMode.values[input.readInt(true)];
|
pathData.positionMode = PositionMode.values[flags & 1];
|
||||||
pathData.rotateMode = RotateMode.values[input.readInt(true)];
|
pathData.spacingMode = SpacingMode.values[(flags >> 1) & 3];
|
||||||
pathData.offsetRotation = input.readFloat();
|
pathData.rotateMode = RotateMode.values[(flags >> 3) & 3];
|
||||||
|
if ((flags & 128) != 0) pathData.offsetRotation = input.readFloat();
|
||||||
pathData.position = input.readFloat();
|
pathData.position = input.readFloat();
|
||||||
if (pathData.positionMode == PositionMode.fixed)
|
if (pathData.positionMode == PositionMode.fixed)
|
||||||
pathData.position *= scale;
|
pathData.position *= scale;
|
||||||
@ -260,6 +299,39 @@ class SkeletonBinary {
|
|||||||
skeletonData.pathConstraints.push(pathData);
|
skeletonData.pathConstraints.push(pathData);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Physics constraints.
|
||||||
|
n = input.readInt(true);
|
||||||
|
for (i in 0...n) {
|
||||||
|
var physicsData:PhysicsConstraintData = new PhysicsConstraintData(input.readString());
|
||||||
|
physicsData.order = input.readInt(true);
|
||||||
|
physicsData.bone = skeletonData.bones[input.readInt(true)];
|
||||||
|
var flags = input.readByte();
|
||||||
|
physicsData.skinRequired = (flags & 1) != 0;
|
||||||
|
if ((flags & 2) != 0) physicsData.x = input.readFloat();
|
||||||
|
if ((flags & 4) != 0) physicsData.y = input.readFloat();
|
||||||
|
if ((flags & 8) != 0) physicsData.rotate = input.readFloat();
|
||||||
|
if ((flags & 16) != 0) physicsData.scaleX = input.readFloat();
|
||||||
|
if ((flags & 32) != 0) physicsData.shearX = input.readFloat();
|
||||||
|
physicsData.limit = ((flags & 64) != 0 ? input.readFloat() : 5000) * scale;
|
||||||
|
physicsData.step = 1 / input.readUnsignedByte();
|
||||||
|
physicsData.inertia = input.readFloat();
|
||||||
|
physicsData.strength = input.readFloat();
|
||||||
|
physicsData.damping = input.readFloat();
|
||||||
|
physicsData.massInverse = (flags & 128) != 0 ? input.readFloat() : 1;
|
||||||
|
physicsData.wind = input.readFloat();
|
||||||
|
physicsData.gravity = input.readFloat();
|
||||||
|
flags = input.readByte();
|
||||||
|
if ((flags & 1) != 0) physicsData.inertiaGlobal = true;
|
||||||
|
if ((flags & 2) != 0) physicsData.strengthGlobal = true;
|
||||||
|
if ((flags & 4) != 0) physicsData.dampingGlobal = true;
|
||||||
|
if ((flags & 8) != 0) physicsData.massGlobal = true;
|
||||||
|
if ((flags & 16) != 0) physicsData.windGlobal = true;
|
||||||
|
if ((flags & 32) != 0) physicsData.gravityGlobal = true;
|
||||||
|
if ((flags & 64) != 0) physicsData.mixGlobal = true;
|
||||||
|
physicsData.mix = (flags & 128) != 0 ? input.readFloat() : 1;
|
||||||
|
skeletonData.physicsConstraints.push(physicsData);
|
||||||
|
}
|
||||||
|
|
||||||
// Default skin.
|
// Default skin.
|
||||||
var defaultSkin:Skin = readSkin(input, skeletonData, true, nonessential);
|
var defaultSkin:Skin = readSkin(input, skeletonData, true, nonessential);
|
||||||
if (defaultSkin != null) {
|
if (defaultSkin != null) {
|
||||||
@ -279,9 +351,7 @@ class SkeletonBinary {
|
|||||||
|
|
||||||
// Linked meshes.
|
// Linked meshes.
|
||||||
for (linkedMesh in linkedMeshes) {
|
for (linkedMesh in linkedMeshes) {
|
||||||
var skin:Skin = linkedMesh.skin == null ? skeletonData.defaultSkin : skeletonData.findSkin(linkedMesh.skin);
|
var skin:Skin = skeletonData.skins[linkedMesh.skinIndex];
|
||||||
if (skin == null)
|
|
||||||
throw new SpineException("Skin not found: " + linkedMesh.skin);
|
|
||||||
var parent:Attachment = skin.getAttachment(linkedMesh.slotIndex, linkedMesh.parent);
|
var parent:Attachment = skin.getAttachment(linkedMesh.slotIndex, linkedMesh.parent);
|
||||||
if (parent == null)
|
if (parent == null)
|
||||||
throw new SpineException("Parent mesh not found: " + linkedMesh.parent);
|
throw new SpineException("Parent mesh not found: " + linkedMesh.parent);
|
||||||
@ -295,7 +365,7 @@ class SkeletonBinary {
|
|||||||
// Events.
|
// Events.
|
||||||
n = input.readInt(true);
|
n = input.readInt(true);
|
||||||
for (i in 0...n) {
|
for (i in 0...n) {
|
||||||
var data:EventData = new EventData(input.readStringRef());
|
var data:EventData = new EventData(input.readString());
|
||||||
data.intValue = input.readInt(false);
|
data.intValue = input.readInt(false);
|
||||||
data.floatValue = input.readFloat();
|
data.floatValue = input.readFloat();
|
||||||
data.stringValue = input.readString();
|
data.stringValue = input.readString();
|
||||||
@ -325,7 +395,8 @@ class SkeletonBinary {
|
|||||||
return null;
|
return null;
|
||||||
skin = new Skin("default");
|
skin = new Skin("default");
|
||||||
} else {
|
} else {
|
||||||
skin = new Skin(input.readStringRef());
|
skin = new Skin(input.readString());
|
||||||
|
if (nonessential) skin.color.setFromRgba8888(input.readInt32());
|
||||||
skin.bones.resize(input.readInt(true));
|
skin.bones.resize(input.readInt(true));
|
||||||
for (i in 0...skin.bones.length) {
|
for (i in 0...skin.bones.length) {
|
||||||
skin.bones[i] = skeletonData.bones[input.readInt(true)];
|
skin.bones[i] = skeletonData.bones[input.readInt(true)];
|
||||||
@ -340,6 +411,9 @@ class SkeletonBinary {
|
|||||||
for (i in 0...input.readInt(true)) {
|
for (i in 0...input.readInt(true)) {
|
||||||
skin.constraints.push(skeletonData.pathConstraints[input.readInt(true)]);
|
skin.constraints.push(skeletonData.pathConstraints[input.readInt(true)]);
|
||||||
}
|
}
|
||||||
|
for (i in 0...input.readInt(true)) {
|
||||||
|
skin.constraints.push(skeletonData.physicsConstraints[input.readInt(true)]);
|
||||||
|
}
|
||||||
|
|
||||||
slotCount = input.readInt(true);
|
slotCount = input.readInt(true);
|
||||||
}
|
}
|
||||||
@ -348,6 +422,8 @@ class SkeletonBinary {
|
|||||||
var slotIndex:Int = input.readInt(true);
|
var slotIndex:Int = input.readInt(true);
|
||||||
for (ii in 0...input.readInt(true)) {
|
for (ii in 0...input.readInt(true)) {
|
||||||
var name:String = input.readStringRef();
|
var name:String = input.readStringRef();
|
||||||
|
if (name == null)
|
||||||
|
throw new SpineException("Attachment name must not be null");
|
||||||
var attachment:Attachment = readAttachment(input, skeletonData, skin, slotIndex, name, nonessential);
|
var attachment:Attachment = readAttachment(input, skeletonData, skin, slotIndex, name, nonessential);
|
||||||
if (attachment != null)
|
if (attachment != null)
|
||||||
skin.setAttachment(slotIndex, name, attachment);
|
skin.setAttachment(slotIndex, name, attachment);
|
||||||
@ -357,8 +433,6 @@ class SkeletonBinary {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private function readSequence(input:BinaryInput):Sequence {
|
private function readSequence(input:BinaryInput):Sequence {
|
||||||
if (!input.readBoolean())
|
|
||||||
return null;
|
|
||||||
var sequence = new Sequence(input.readInt(true));
|
var sequence = new Sequence(input.readInt(true));
|
||||||
sequence.start = input.readInt(true);
|
sequence.start = input.readInt(true);
|
||||||
sequence.digits = input.readInt(true);
|
sequence.digits = input.readInt(true);
|
||||||
@ -368,7 +442,6 @@ class SkeletonBinary {
|
|||||||
|
|
||||||
private function readAttachment(input:BinaryInput, skeletonData:SkeletonData, skin:Skin, slotIndex:Int, attachmentName:String,
|
private function readAttachment(input:BinaryInput, skeletonData:SkeletonData, skin:Skin, slotIndex:Int, attachmentName:String,
|
||||||
nonessential:Bool):Attachment {
|
nonessential:Bool):Attachment {
|
||||||
var vertexCount:Int;
|
|
||||||
var vertices:Vertices;
|
var vertices:Vertices;
|
||||||
var path:String;
|
var path:String;
|
||||||
var rotation:Float;
|
var rotation:Float;
|
||||||
@ -381,22 +454,22 @@ class SkeletonBinary {
|
|||||||
var color:Int;
|
var color:Int;
|
||||||
var mesh:MeshAttachment;
|
var mesh:MeshAttachment;
|
||||||
|
|
||||||
var name:String = input.readStringRef();
|
var flags = input.readByte();
|
||||||
|
var name:String = (flags & 8) != 0 ? input.readStringRef() : attachmentName;
|
||||||
if (name == null)
|
if (name == null)
|
||||||
name = attachmentName;
|
throw new SpineException("Attachment name must not be null");
|
||||||
|
switch (AttachmentType.values[flags & 7]) {
|
||||||
switch (AttachmentType.values[input.readByte()]) {
|
|
||||||
case AttachmentType.region:
|
case AttachmentType.region:
|
||||||
path = input.readStringRef();
|
path = (flags & 16) != 0 ? input.readStringRef() : null;
|
||||||
rotation = input.readFloat();
|
color = (flags & 32) != 0 ? input.readInt32() : 0xffffffff;
|
||||||
|
var sequence = (flags & 64) != 0 ? readSequence(input) : null;
|
||||||
|
rotation = (flags & 128) != 0 ? input.readFloat() : 0;
|
||||||
x = input.readFloat();
|
x = input.readFloat();
|
||||||
y = input.readFloat();
|
y = input.readFloat();
|
||||||
scaleX = input.readFloat();
|
scaleX = input.readFloat();
|
||||||
scaleY = input.readFloat();
|
scaleY = input.readFloat();
|
||||||
width = input.readFloat();
|
width = input.readFloat();
|
||||||
height = input.readFloat();
|
height = input.readFloat();
|
||||||
color = input.readInt32();
|
|
||||||
var sequence = readSequence(input);
|
|
||||||
|
|
||||||
if (path == null)
|
if (path == null)
|
||||||
path = name;
|
path = name;
|
||||||
@ -417,14 +490,13 @@ class SkeletonBinary {
|
|||||||
region.updateRegion();
|
region.updateRegion();
|
||||||
return region;
|
return region;
|
||||||
case AttachmentType.boundingbox:
|
case AttachmentType.boundingbox:
|
||||||
vertexCount = input.readInt(true);
|
vertices = readVertices(input, (flags & 16) != 0);
|
||||||
vertices = readVertices(input, vertexCount);
|
|
||||||
color = nonessential ? input.readInt32() : 0;
|
color = nonessential ? input.readInt32() : 0;
|
||||||
|
|
||||||
var box:BoundingBoxAttachment = attachmentLoader.newBoundingBoxAttachment(skin, name);
|
var box:BoundingBoxAttachment = attachmentLoader.newBoundingBoxAttachment(skin, name);
|
||||||
if (box == null)
|
if (box == null)
|
||||||
return null;
|
return null;
|
||||||
box.worldVerticesLength = vertexCount << 1;
|
box.worldVerticesLength = vertices.length;
|
||||||
box.vertices = vertices.vertices;
|
box.vertices = vertices.vertices;
|
||||||
if (vertices.bones.length > 0)
|
if (vertices.bones.length > 0)
|
||||||
box.bones = vertices.bones;
|
box.bones = vertices.bones;
|
||||||
@ -432,17 +504,16 @@ class SkeletonBinary {
|
|||||||
box.color.setFromRgba8888(color);
|
box.color.setFromRgba8888(color);
|
||||||
return box;
|
return box;
|
||||||
case AttachmentType.mesh:
|
case AttachmentType.mesh:
|
||||||
path = input.readStringRef();
|
path = (flags & 16) != 0 ? input.readStringRef() : name;
|
||||||
color = input.readInt32();
|
color = (flags & 32) != 0 ? input.readInt32() : 0xffffffff;
|
||||||
vertexCount = input.readInt(true);
|
var sequence = (flags & 64) != 0 ? readSequence(input) : null;
|
||||||
var uvs:Array<Float> = readFloatArray(input, vertexCount << 1, 1);
|
var hullLength = input.readInt(true);
|
||||||
var triangles:Array<Int> = readShortArray(input);
|
vertices = readVertices(input, (flags & 128) != 0);
|
||||||
vertices = readVertices(input, vertexCount);
|
var uvs:Array<Float> = readFloatArray(input, vertices.length, 1);
|
||||||
var hullLength:Int = input.readInt(true);
|
var triangles:Array<Int> = readShortArray(input, (vertices.length - hullLength - 2) * 3);
|
||||||
var sequence = readSequence(input);
|
|
||||||
var edges:Array<Int> = null;
|
var edges:Array<Int> = null;
|
||||||
if (nonessential) {
|
if (nonessential) {
|
||||||
edges = readShortArray(input);
|
edges = readShortArray(input, input.readInt(true));
|
||||||
width = input.readFloat();
|
width = input.readFloat();
|
||||||
height = input.readFloat();
|
height = input.readFloat();
|
||||||
}
|
}
|
||||||
@ -457,7 +528,7 @@ class SkeletonBinary {
|
|||||||
if (vertices.bones.length > 0)
|
if (vertices.bones.length > 0)
|
||||||
mesh.bones = vertices.bones;
|
mesh.bones = vertices.bones;
|
||||||
mesh.vertices = vertices.vertices;
|
mesh.vertices = vertices.vertices;
|
||||||
mesh.worldVerticesLength = vertexCount << 1;
|
mesh.worldVerticesLength = vertices.length;
|
||||||
mesh.triangles = triangles;
|
mesh.triangles = triangles;
|
||||||
mesh.regionUVs = uvs;
|
mesh.regionUVs = uvs;
|
||||||
if (sequence == null)
|
if (sequence == null)
|
||||||
@ -471,19 +542,18 @@ class SkeletonBinary {
|
|||||||
}
|
}
|
||||||
return mesh;
|
return mesh;
|
||||||
case AttachmentType.linkedmesh:
|
case AttachmentType.linkedmesh:
|
||||||
path = input.readStringRef();
|
path = (flags & 16) != 0 ? input.readStringRef() : name;
|
||||||
color = input.readInt32();
|
if (path == null) throw new SpineException("Path of linked mesh must not be null");
|
||||||
var skinName:String = input.readStringRef();
|
color = (flags & 32) != 0 ? input.readInt32() : 0xffffffff;
|
||||||
|
var sequence = (flags & 64) != 0 ? this.readSequence(input) : null;
|
||||||
|
var inheritTimelines:Bool = (flags & 128) != 0;
|
||||||
|
var skinIndex = input.readInt(true);
|
||||||
var parent:String = input.readStringRef();
|
var parent:String = input.readStringRef();
|
||||||
var inheritTimelines:Bool = input.readBoolean();
|
|
||||||
var sequence = readSequence(input);
|
|
||||||
if (nonessential) {
|
if (nonessential) {
|
||||||
width = input.readFloat();
|
width = input.readFloat();
|
||||||
height = input.readFloat();
|
height = input.readFloat();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (path == null)
|
|
||||||
path = name;
|
|
||||||
mesh = attachmentLoader.newMeshAttachment(skin, name, path, sequence);
|
mesh = attachmentLoader.newMeshAttachment(skin, name, path, sequence);
|
||||||
if (mesh == null)
|
if (mesh == null)
|
||||||
return null;
|
return null;
|
||||||
@ -494,15 +564,14 @@ class SkeletonBinary {
|
|||||||
mesh.width = width * scale;
|
mesh.width = width * scale;
|
||||||
mesh.height = height * scale;
|
mesh.height = height * scale;
|
||||||
}
|
}
|
||||||
this.linkedMeshes.push(new LinkedMeshBinary(mesh, skinName, slotIndex, parent, inheritTimelines));
|
this.linkedMeshes.push(new LinkedMeshBinary(mesh, skinIndex, slotIndex, parent, inheritTimelines));
|
||||||
return mesh;
|
return mesh;
|
||||||
case AttachmentType.path:
|
case AttachmentType.path:
|
||||||
var closed:Bool = input.readBoolean();
|
var closed:Bool = (flags & 16) != 0;
|
||||||
var constantSpeed:Bool = input.readBoolean();
|
var constantSpeed:Bool = (flags & 32) != 0;
|
||||||
vertexCount = input.readInt(true);
|
vertices = readVertices(input, (flags & 64) != 0);
|
||||||
vertices = readVertices(input, vertexCount);
|
|
||||||
var lengths:Array<Float> = new Array<Float>();
|
var lengths:Array<Float> = new Array<Float>();
|
||||||
lengths.resize(Std.int(vertexCount / 3));
|
lengths.resize(Std.int(vertices.length / 6));
|
||||||
for (i in 0...lengths.length) {
|
for (i in 0...lengths.length) {
|
||||||
lengths[i] = input.readFloat() * scale;
|
lengths[i] = input.readFloat() * scale;
|
||||||
}
|
}
|
||||||
@ -513,7 +582,7 @@ class SkeletonBinary {
|
|||||||
return null;
|
return null;
|
||||||
pathAttachment.closed = closed;
|
pathAttachment.closed = closed;
|
||||||
pathAttachment.constantSpeed = constantSpeed;
|
pathAttachment.constantSpeed = constantSpeed;
|
||||||
pathAttachment.worldVerticesLength = vertexCount << 1;
|
pathAttachment.worldVerticesLength = vertices.length;
|
||||||
pathAttachment.vertices = vertices.vertices;
|
pathAttachment.vertices = vertices.vertices;
|
||||||
if (vertices.bones.length > 0)
|
if (vertices.bones.length > 0)
|
||||||
pathAttachment.bones = vertices.bones;
|
pathAttachment.bones = vertices.bones;
|
||||||
@ -538,15 +607,14 @@ class SkeletonBinary {
|
|||||||
return point;
|
return point;
|
||||||
case AttachmentType.clipping:
|
case AttachmentType.clipping:
|
||||||
var endSlotIndex:Int = input.readInt(true);
|
var endSlotIndex:Int = input.readInt(true);
|
||||||
vertexCount = input.readInt(true);
|
vertices = readVertices(input, (flags & 16) != 0);
|
||||||
vertices = readVertices(input, vertexCount);
|
|
||||||
color = nonessential ? input.readInt32() : 0;
|
color = nonessential ? input.readInt32() : 0;
|
||||||
|
|
||||||
var clip:ClippingAttachment = attachmentLoader.newClippingAttachment(skin, name);
|
var clip:ClippingAttachment = attachmentLoader.newClippingAttachment(skin, name);
|
||||||
if (clip == null)
|
if (clip == null)
|
||||||
return null;
|
return null;
|
||||||
clip.endSlot = skeletonData.slots[endSlotIndex];
|
clip.endSlot = skeletonData.slots[endSlotIndex];
|
||||||
clip.worldVerticesLength = vertexCount << 1;
|
clip.worldVerticesLength = vertices.length;
|
||||||
clip.vertices = vertices.vertices;
|
clip.vertices = vertices.vertices;
|
||||||
if (vertices.bones.length > 0)
|
if (vertices.bones.length > 0)
|
||||||
clip.bones = vertices.bones;
|
clip.bones = vertices.bones;
|
||||||
@ -557,13 +625,12 @@ class SkeletonBinary {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private function readVertices(input:BinaryInput, vertexCount:Int):Vertices {
|
private function readVertices(input:BinaryInput, weighted:Bool):Vertices {
|
||||||
var verticesLength:Int = vertexCount << 1;
|
var vertexCount:Int = input.readInt(true);
|
||||||
var vertices:Vertices = new Vertices();
|
var vertices:Vertices = new Vertices();
|
||||||
|
vertices.length = vertexCount << 1;
|
||||||
var isWeighted:Bool = input.readBoolean();
|
if (!weighted) {
|
||||||
if (!isWeighted) {
|
vertices.vertices = readFloatArray(input, vertices.length, scale);
|
||||||
vertices.vertices = readFloatArray(input, verticesLength, scale);
|
|
||||||
return vertices;
|
return vertices;
|
||||||
}
|
}
|
||||||
var weights:Array<Float> = new Array<Float>();
|
var weights:Array<Float> = new Array<Float>();
|
||||||
@ -597,11 +664,10 @@ class SkeletonBinary {
|
|||||||
return array;
|
return array;
|
||||||
}
|
}
|
||||||
|
|
||||||
private function readShortArray(input:BinaryInput):Array<Int> {
|
private function readShortArray(input:BinaryInput, n:Int):Array<Int> {
|
||||||
var n:Int = input.readInt(true);
|
|
||||||
var array:Array<Int> = new Array<Int>();
|
var array:Array<Int> = new Array<Int>();
|
||||||
for (i in 0...n) {
|
for (i in 0...n) {
|
||||||
array.push(input.readShort());
|
array.push(input.readInt(true));
|
||||||
}
|
}
|
||||||
return array;
|
return array;
|
||||||
}
|
}
|
||||||
@ -854,6 +920,14 @@ class SkeletonBinary {
|
|||||||
for (ii in 0...input.readInt(true)) {
|
for (ii in 0...input.readInt(true)) {
|
||||||
timelineType = input.readByte();
|
timelineType = input.readByte();
|
||||||
frameCount = input.readInt(true);
|
frameCount = input.readInt(true);
|
||||||
|
if (timelineType == BONE_INHERIT) {
|
||||||
|
var timeline = new InheritTimeline(frameCount, boneIndex);
|
||||||
|
for (frame in 0...frameCount) {
|
||||||
|
timeline.setFrame(frame, input.readFloat(), Inherit.values[input.readByte()]);
|
||||||
|
}
|
||||||
|
timelines.push(timeline);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
bezierCount = input.readInt(true);
|
bezierCount = input.readInt(true);
|
||||||
switch (timelineType) {
|
switch (timelineType) {
|
||||||
case BONE_ROTATE:
|
case BONE_ROTATE:
|
||||||
@ -886,24 +960,24 @@ class SkeletonBinary {
|
|||||||
frameCount = input.readInt(true);
|
frameCount = input.readInt(true);
|
||||||
frameLast = frameCount - 1;
|
frameLast = frameCount - 1;
|
||||||
var ikTimeline:IkConstraintTimeline = new IkConstraintTimeline(frameCount, input.readInt(true), index);
|
var ikTimeline:IkConstraintTimeline = new IkConstraintTimeline(frameCount, input.readInt(true), index);
|
||||||
|
var flags = input.readByte();
|
||||||
time = input.readFloat();
|
time = input.readFloat();
|
||||||
var mix:Float = input.readFloat(),
|
var mix:Float = (flags & 1) != 0 ? ((flags & 2) != 0 ? input.readFloat() : 1) : 0;
|
||||||
softness:Float = input.readFloat() * scale;
|
var softness:Float = (flags & 4) != 0 ? input.readFloat() * scale : 0;
|
||||||
|
|
||||||
frame = 0;
|
frame = 0;
|
||||||
bezier = 0;
|
bezier = 0;
|
||||||
while (true) {
|
while (true) {
|
||||||
ikTimeline.setFrame(frame, time, mix, softness, input.readByte(), input.readBoolean(), input.readBoolean());
|
ikTimeline.setFrame(frame, time, mix, softness, (flags & 8) != 0 ? 1 : -1, (flags & 16) != 0, (flags & 32) != 0);
|
||||||
if (frame == frameLast)
|
if (frame == frameLast)
|
||||||
break;
|
break;
|
||||||
|
flags = input.readByte();
|
||||||
time2 = input.readFloat();
|
time2 = input.readFloat();
|
||||||
var mix2:Float = input.readFloat(),
|
var mix2:Float = (flags & 1) != 0 ? ((flags & 2) != 0 ? input.readFloat() : 1) : 0;
|
||||||
softness2:Float = input.readFloat() * scale;
|
var softness2:Float = (flags & 4) != 0 ? input.readFloat() * scale : 0;
|
||||||
switch (input.readByte()) {
|
if ((flags & 64) != 0) {
|
||||||
case CURVE_STEPPED:
|
|
||||||
ikTimeline.setStepped(frame);
|
ikTimeline.setStepped(frame);
|
||||||
case CURVE_BEZIER:
|
} else if ((flags & 128) != 0) {
|
||||||
setBezier(input, ikTimeline, bezier++, frame, 0, time, time2, mix, mix2, 1);
|
setBezier(input, ikTimeline, bezier++, frame, 0, time, time2, mix, mix2, 1);
|
||||||
setBezier(input, ikTimeline, bezier++, frame, 1, time, time2, softness, softness2, scale);
|
setBezier(input, ikTimeline, bezier++, frame, 1, time, time2, softness, softness2, scale);
|
||||||
}
|
}
|
||||||
@ -977,16 +1051,17 @@ class SkeletonBinary {
|
|||||||
index = input.readInt(true);
|
index = input.readInt(true);
|
||||||
var data:PathConstraintData = skeletonData.pathConstraints[index];
|
var data:PathConstraintData = skeletonData.pathConstraints[index];
|
||||||
for (ii in 0...input.readInt(true)) {
|
for (ii in 0...input.readInt(true)) {
|
||||||
switch (input.readByte()) {
|
var type:Int = input.readByte(), frameCount:Int = input.readInt(true), bezierCount:Int = input.readInt(true);
|
||||||
|
switch (type) {
|
||||||
case PATH_POSITION:
|
case PATH_POSITION:
|
||||||
timelines.push(readTimeline(input, new PathConstraintPositionTimeline(input.readInt(true), input.readInt(true), index),
|
timelines.push(readTimeline(input, new PathConstraintPositionTimeline(frameCount, bezierCount, index),
|
||||||
data.positionMode == PositionMode.fixed ? scale : 1));
|
data.positionMode == PositionMode.fixed ? scale : 1));
|
||||||
case PATH_SPACING:
|
case PATH_SPACING:
|
||||||
timelines.push(readTimeline(input, new PathConstraintSpacingTimeline(input.readInt(true), input.readInt(true), index),
|
timelines.push(readTimeline(input, new PathConstraintSpacingTimeline(frameCount, bezierCount, index),
|
||||||
data.spacingMode == SpacingMode.length
|
data.spacingMode == SpacingMode.length
|
||||||
|| data.spacingMode == SpacingMode.fixed ? scale : 1));
|
|| data.spacingMode == SpacingMode.fixed ? scale : 1));
|
||||||
case PATH_MIX:
|
case PATH_MIX:
|
||||||
var mixTimeline:PathConstraintMixTimeline = new PathConstraintMixTimeline(input.readInt(true), input.readInt(true), index);
|
var mixTimeline:PathConstraintMixTimeline = new PathConstraintMixTimeline(frameCount, bezierCount, index);
|
||||||
time = input.readFloat();
|
time = input.readFloat();
|
||||||
mixRotate = input.readFloat();
|
mixRotate = input.readFloat();
|
||||||
mixX = input.readFloat();
|
mixX = input.readFloat();
|
||||||
@ -1023,6 +1098,44 @@ class SkeletonBinary {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Physics timelines.
|
||||||
|
for (i in 0...input.readInt(true)) {
|
||||||
|
var constraintIndex:Int = input.readInt(true) - 1;
|
||||||
|
for (ii in 0...input.readInt(true)) {
|
||||||
|
var type:Int = input.readByte(), frameCount:Int = input.readInt(true);
|
||||||
|
if (type == PHYSICS_RESET) {
|
||||||
|
var timeline:PhysicsConstraintResetTimeline = new PhysicsConstraintResetTimeline(frameCount, constraintIndex);
|
||||||
|
for (frame in 0...frameCount)
|
||||||
|
timeline.setFrame(frame, input.readFloat());
|
||||||
|
timelines.push(timeline);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
var bezierCount = input.readInt(true);
|
||||||
|
switch (type) {
|
||||||
|
case PHYSICS_INERTIA:
|
||||||
|
timelines.push(readTimeline(input, new PhysicsConstraintInertiaTimeline(frameCount, bezierCount, constraintIndex), 1));
|
||||||
|
break;
|
||||||
|
case PHYSICS_STRENGTH:
|
||||||
|
timelines.push(readTimeline(input, new PhysicsConstraintStrengthTimeline(frameCount, bezierCount, constraintIndex), 1));
|
||||||
|
break;
|
||||||
|
case PHYSICS_DAMPING:
|
||||||
|
timelines.push(readTimeline(input, new PhysicsConstraintDampingTimeline(frameCount, bezierCount, constraintIndex), 1));
|
||||||
|
break;
|
||||||
|
case PHYSICS_MASS:
|
||||||
|
timelines.push(readTimeline(input, new PhysicsConstraintMassTimeline(frameCount, bezierCount, constraintIndex), 1));
|
||||||
|
break;
|
||||||
|
case PHYSICS_WIND:
|
||||||
|
timelines.push(readTimeline(input, new PhysicsConstraintWindTimeline(frameCount, bezierCount, constraintIndex), 1));
|
||||||
|
break;
|
||||||
|
case PHYSICS_GRAVITY:
|
||||||
|
timelines.push(readTimeline(input, new PhysicsConstraintGravityTimeline(frameCount, bezierCount, constraintIndex), 1));
|
||||||
|
break;
|
||||||
|
case PHYSICS_MIX:
|
||||||
|
timelines.push(readTimeline(input, new PhysicsConstraintMixTimeline(frameCount, bezierCount, constraintIndex), 1));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Deform timelines.
|
// Deform timelines.
|
||||||
for (i in 0...input.readInt(true)) {
|
for (i in 0...input.readInt(true)) {
|
||||||
var skin:Skin = skeletonData.skins[input.readInt(true)];
|
var skin:Skin = skeletonData.skins[input.readInt(true)];
|
||||||
@ -1163,7 +1276,8 @@ class SkeletonBinary {
|
|||||||
var event:Event = new Event(time, eventData);
|
var event:Event = new Event(time, eventData);
|
||||||
event.intValue = input.readInt(false);
|
event.intValue = input.readInt(false);
|
||||||
event.floatValue = input.readFloat();
|
event.floatValue = input.readFloat();
|
||||||
event.stringValue = input.readBoolean() ? input.readString() : eventData.stringValue;
|
event.stringValue = input.readString();
|
||||||
|
if (event.stringValue == null) event.stringValue = eventData.stringValue;
|
||||||
if (event.data.audioPath != null) {
|
if (event.data.audioPath != null) {
|
||||||
event.volume = input.readFloat();
|
event.volume = input.readFloat();
|
||||||
event.balance = input.readFloat();
|
event.balance = input.readFloat();
|
||||||
@ -1250,20 +1364,21 @@ class SkeletonBinary {
|
|||||||
class Vertices {
|
class Vertices {
|
||||||
public var vertices:Array<Float> = new Array<Float>();
|
public var vertices:Array<Float> = new Array<Float>();
|
||||||
public var bones:Array<Int> = new Array<Int>();
|
public var bones:Array<Int> = new Array<Int>();
|
||||||
|
public var length:Int = 0;
|
||||||
|
|
||||||
public function new() {}
|
public function new() {}
|
||||||
}
|
}
|
||||||
|
|
||||||
class LinkedMeshBinary {
|
class LinkedMeshBinary {
|
||||||
public var parent(default, null):String;
|
public var parent(default, null):String;
|
||||||
public var skin(default, null):String;
|
public var skinIndex(default, null):Int;
|
||||||
public var slotIndex(default, null):Int;
|
public var slotIndex(default, null):Int;
|
||||||
public var mesh(default, null):MeshAttachment;
|
public var mesh(default, null):MeshAttachment;
|
||||||
public var inheritTimeline(default, null):Bool;
|
public var inheritTimeline(default, null):Bool;
|
||||||
|
|
||||||
public function new(mesh:MeshAttachment, skin:String, slotIndex:Int, parent:String, inheritTimeline:Bool) {
|
public function new(mesh:MeshAttachment, skinIndex:Int, slotIndex:Int, parent:String, inheritTimeline:Bool) {
|
||||||
this.mesh = mesh;
|
this.mesh = mesh;
|
||||||
this.skin = skin;
|
this.skinIndex = skinIndex;
|
||||||
this.slotIndex = slotIndex;
|
this.slotIndex = slotIndex;
|
||||||
this.parent = parent;
|
this.parent = parent;
|
||||||
this.inheritTimeline = inheritTimeline;
|
this.inheritTimeline = inheritTimeline;
|
||||||
|
|||||||
@ -45,15 +45,15 @@ import spine.animation.InheritTimeline;
|
|||||||
import spine.animation.PathConstraintMixTimeline;
|
import spine.animation.PathConstraintMixTimeline;
|
||||||
import spine.animation.PathConstraintPositionTimeline;
|
import spine.animation.PathConstraintPositionTimeline;
|
||||||
import spine.animation.PathConstraintSpacingTimeline;
|
import spine.animation.PathConstraintSpacingTimeline;
|
||||||
import spine.animation.PhysicsConstraintResetTimeline;
|
|
||||||
import spine.animation.PhysicsConstraintInertiaTimeline;
|
|
||||||
import spine.animation.PhysicsConstraintStrengthTimeline;
|
|
||||||
import spine.animation.PhysicsConstraintDampingTimeline;
|
import spine.animation.PhysicsConstraintDampingTimeline;
|
||||||
import spine.animation.PhysicsConstraintMassTimeline;
|
|
||||||
import spine.animation.PhysicsConstraintWindTimeline;
|
|
||||||
import spine.animation.PhysicsConstraintGravityTimeline;
|
import spine.animation.PhysicsConstraintGravityTimeline;
|
||||||
|
import spine.animation.PhysicsConstraintInertiaTimeline;
|
||||||
|
import spine.animation.PhysicsConstraintMassTimeline;
|
||||||
import spine.animation.PhysicsConstraintMixTimeline;
|
import spine.animation.PhysicsConstraintMixTimeline;
|
||||||
|
import spine.animation.PhysicsConstraintResetTimeline;
|
||||||
|
import spine.animation.PhysicsConstraintStrengthTimeline;
|
||||||
import spine.animation.PhysicsConstraintTimeline;
|
import spine.animation.PhysicsConstraintTimeline;
|
||||||
|
import spine.animation.PhysicsConstraintWindTimeline;
|
||||||
import spine.animation.RGB2Timeline;
|
import spine.animation.RGB2Timeline;
|
||||||
import spine.animation.RGBA2Timeline;
|
import spine.animation.RGBA2Timeline;
|
||||||
import spine.animation.RGBATimeline;
|
import spine.animation.RGBATimeline;
|
||||||
@ -1018,10 +1018,12 @@ class SkeletonJson {
|
|||||||
// Physics constraint timelines.
|
// Physics constraint timelines.
|
||||||
var physics:Dynamic = Reflect.getProperty(map, "physics");
|
var physics:Dynamic = Reflect.getProperty(map, "physics");
|
||||||
for (physicsName in Reflect.fields(physics)) {
|
for (physicsName in Reflect.fields(physics)) {
|
||||||
var constraintIndex:Int = skeletonData.findPhysicsConstraintIndex(physicsName);
|
var constraintIndex:Int = -1;
|
||||||
|
if (physicsName.length > 0) {
|
||||||
|
constraintIndex = skeletonData.findPhysicsConstraintIndex(physicsName);
|
||||||
if (constraintIndex == -1)
|
if (constraintIndex == -1)
|
||||||
throw new SpineException("Physics constraint not found: " + physicsName);
|
throw new SpineException("Physics constraint not found: " + physicsName);
|
||||||
|
}
|
||||||
var physicsMap:Dynamic = Reflect.field(physics, physicsName);
|
var physicsMap:Dynamic = Reflect.field(physics, physicsName);
|
||||||
for (timelineName in Reflect.fields(physicsMap)) {
|
for (timelineName in Reflect.fields(physicsMap)) {
|
||||||
timelineMap = Reflect.field(physicsMap, timelineName);
|
timelineMap = Reflect.field(physicsMap, timelineName);
|
||||||
|
|||||||
@ -342,7 +342,6 @@ class SkeletonSprite extends DisplayObject implements IAnimatable {
|
|||||||
_state.apply(skeleton);
|
_state.apply(skeleton);
|
||||||
skeleton.update(time);
|
skeleton.update(time);
|
||||||
skeleton.updateWorldTransform(Physics.update);
|
skeleton.updateWorldTransform(Physics.update);
|
||||||
|
|
||||||
this.setRequiresRedraw();
|
this.setRequiresRedraw();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||