diff --git a/assets/alien/export/alien-ess.json b/assets/alien/export/alien-ess.json index 0a264d3..df2dbd8 100644 --- a/assets/alien/export/alien-ess.json +++ b/assets/alien/export/alien-ess.json @@ -1,7 +1,7 @@ { "skeleton": { - "hash": "F735snjE3r4", - "spine": "4.1.23-beta", + "hash": "oNAXvMMJkLk", + "spine": "4.2.64-beta", "x": -191.3, "y": -4.51, "width": 365.79, diff --git a/assets/alien/export/alien-ess.skel b/assets/alien/export/alien-ess.skel index 3e82651..a6def07 100644 Binary files a/assets/alien/export/alien-ess.skel and b/assets/alien/export/alien-ess.skel differ diff --git a/assets/alien/export/alien-pma.atlas b/assets/alien/export/alien-pma.atlas index 7ad0e4f..ae29a10 100644 --- a/assets/alien/export/alien-pma.atlas +++ b/assets/alien/export/alien-pma.atlas @@ -4,65 +4,62 @@ alien-pma.png pma: true scale: 0.5 back-foot - bounds: 1013, 577, 8, 6 + bounds: 2, 2, 8, 6 back-shin - bounds: 712, 387, 21, 24 + bounds: 231, 203, 21, 24 back-thigh - bounds: 971, 135, 24, 24 + bounds: 971, 877, 24, 24 backarmor - bounds: 159, 61, 81, 91 - rotate: 90 + bounds: 261, 325, 81, 91 blown-up-neck - bounds: 252, 90, 77, 52 + bounds: 571, 652, 77, 52 body - bounds: 516, 2, 98, 118 - rotate: 90 + bounds: 918, 903, 98, 118 burst01 - bounds: 2, 48, 143, 155 + bounds: 576, 706, 143, 155 rotate: 90 burst02 - bounds: 207, 144, 156, 181 + bounds: 735, 865, 156, 181 + rotate: 90 burst03-bg - bounds: 735, 356, 276, 227 + bounds: 2, 10, 276, 227 + rotate: 90 burst03-fg - bounds: 371, 190, 339, 221 + bounds: 2, 542, 339, 221 eye - bounds: 252, 13, 75, 75 + bounds: 494, 640, 75, 75 eye-highlight - bounds: 1000, 166, 22, 22 + bounds: 261, 256, 22, 22 eye-pupil - bounds: 712, 367, 18, 18 + bounds: 293, 305, 18, 18 eye-stalk - bounds: 640, 114, 74, 66 - rotate: 90 + bounds: 494, 572, 74, 66 front-foot - bounds: 1013, 565, 10, 6 - rotate: 90 + bounds: 343, 542, 10, 6 front-lower-arm - bounds: 640, 57, 55, 63 + bounds: 650, 649, 55, 63 rotate: 90 front-shin - bounds: 971, 190, 25, 28 - rotate: 90 + bounds: 343, 735, 25, 28 front-thigh - bounds: 971, 161, 27, 27 + bounds: 343, 550, 27, 27 front-upper-arm - bounds: 971, 217, 57, 28 + bounds: 231, 229, 57, 28 rotate: 90 head - bounds: 365, 52, 149, 136 + bounds: 343, 579, 149, 136 lower-back-arm - bounds: 971, 308, 51, 46 + bounds: 918, 855, 51, 46 metaljaw - bounds: 516, 102, 122, 86 + bounds: 261, 418, 122, 86 + rotate: 90 splat01 - bounds: 712, 102, 257, 252 + bounds: 2, 288, 257, 252 splat01-fg - bounds: 2, 193, 203, 132 + bounds: 371, 717, 203, 132 splat02 - bounds: 2, 327, 367, 256 + bounds: 2, 765, 367, 256 splat03 - bounds: 371, 413, 362, 170 + bounds: 371, 851, 362, 170 upper-back-arm - bounds: 971, 276, 30, 43 - rotate: 90 + bounds: 261, 280, 30, 43 diff --git a/assets/alien/export/alien-pma.png b/assets/alien/export/alien-pma.png index 8019c9a..ab24d3f 100644 Binary files a/assets/alien/export/alien-pma.png and b/assets/alien/export/alien-pma.png differ diff --git a/assets/alien/export/alien-pro.json b/assets/alien/export/alien-pro.json index 515beda..8136ebf 100644 --- a/assets/alien/export/alien-pro.json +++ b/assets/alien/export/alien-pro.json @@ -1,7 +1,7 @@ { "skeleton": { - "hash": "UmVPCRBPHcg", - "spine": "4.1.23-beta", + "hash": "tTPHKN0ryvs", + "spine": "4.2.64-beta", "x": -191.3, "y": -4.51, "width": 368.26, diff --git a/assets/alien/export/alien-pro.skel b/assets/alien/export/alien-pro.skel index 64e0a2e..3af8e36 100644 Binary files a/assets/alien/export/alien-pro.skel and b/assets/alien/export/alien-pro.skel differ diff --git a/assets/alien/export/alien.atlas b/assets/alien/export/alien.atlas index 337ddfa..e66076d 100644 --- a/assets/alien/export/alien.atlas +++ b/assets/alien/export/alien.atlas @@ -3,65 +3,62 @@ alien.png filter: Linear, Linear scale: 0.5 back-foot - bounds: 1013, 577, 8, 6 + bounds: 2, 2, 8, 6 back-shin - bounds: 712, 387, 21, 24 + bounds: 231, 203, 21, 24 back-thigh - bounds: 971, 135, 24, 24 + bounds: 971, 877, 24, 24 backarmor - bounds: 159, 61, 81, 91 - rotate: 90 + bounds: 261, 325, 81, 91 blown-up-neck - bounds: 252, 90, 77, 52 + bounds: 571, 652, 77, 52 body - bounds: 516, 2, 98, 118 - rotate: 90 + bounds: 918, 903, 98, 118 burst01 - bounds: 2, 48, 143, 155 + bounds: 576, 706, 143, 155 rotate: 90 burst02 - bounds: 207, 144, 156, 181 + bounds: 735, 865, 156, 181 + rotate: 90 burst03-bg - bounds: 735, 356, 276, 227 + bounds: 2, 10, 276, 227 + rotate: 90 burst03-fg - bounds: 371, 190, 339, 221 + bounds: 2, 542, 339, 221 eye - bounds: 252, 13, 75, 75 + bounds: 494, 640, 75, 75 eye-highlight - bounds: 1000, 166, 22, 22 + bounds: 261, 256, 22, 22 eye-pupil - bounds: 712, 367, 18, 18 + bounds: 293, 305, 18, 18 eye-stalk - bounds: 640, 114, 74, 66 - rotate: 90 + bounds: 494, 572, 74, 66 front-foot - bounds: 1013, 565, 10, 6 - rotate: 90 + bounds: 343, 542, 10, 6 front-lower-arm - bounds: 640, 57, 55, 63 + bounds: 650, 649, 55, 63 rotate: 90 front-shin - bounds: 971, 190, 25, 28 - rotate: 90 + bounds: 343, 735, 25, 28 front-thigh - bounds: 971, 161, 27, 27 + bounds: 343, 550, 27, 27 front-upper-arm - bounds: 971, 217, 57, 28 + bounds: 231, 229, 57, 28 rotate: 90 head - bounds: 365, 52, 149, 136 + bounds: 343, 579, 149, 136 lower-back-arm - bounds: 971, 308, 51, 46 + bounds: 918, 855, 51, 46 metaljaw - bounds: 516, 102, 122, 86 + bounds: 261, 418, 122, 86 + rotate: 90 splat01 - bounds: 712, 102, 257, 252 + bounds: 2, 288, 257, 252 splat01-fg - bounds: 2, 193, 203, 132 + bounds: 371, 717, 203, 132 splat02 - bounds: 2, 327, 367, 256 + bounds: 2, 765, 367, 256 splat03 - bounds: 371, 413, 362, 170 + bounds: 371, 851, 362, 170 upper-back-arm - bounds: 971, 276, 30, 43 - rotate: 90 + bounds: 261, 280, 30, 43 diff --git a/assets/alien/export/alien.png b/assets/alien/export/alien.png index d9c14cb..ace2a53 100644 Binary files a/assets/alien/export/alien.png and b/assets/alien/export/alien.png differ diff --git a/assets/alien/license.txt b/assets/alien/license.txt index 60ff2d2..c2bbb86 100644 --- a/assets/alien/license.txt +++ b/assets/alien/license.txt @@ -1,4 +1,4 @@ -Copyright (c) 2013, Esoteric Software +Copyright (c) 2013, Esoteric Software LLC The images in this project may be redistributed as long as they are accompanied by this license file. The images may not be used for commercial use of any diff --git a/assets/celestial-circus/celestial-circus-pro.spine b/assets/celestial-circus/celestial-circus-pro.spine new file mode 100644 index 0000000..fc39118 Binary files /dev/null and b/assets/celestial-circus/celestial-circus-pro.spine differ diff --git a/assets/celestial-circus/export/celestial-circus-pma.atlas b/assets/celestial-circus/export/celestial-circus-pma.atlas new file mode 100644 index 0000000..6140229 --- /dev/null +++ b/assets/celestial-circus/export/celestial-circus-pma.atlas @@ -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 diff --git a/assets/celestial-circus/export/celestial-circus-pma.png b/assets/celestial-circus/export/celestial-circus-pma.png new file mode 100644 index 0000000..da9f980 Binary files /dev/null and b/assets/celestial-circus/export/celestial-circus-pma.png differ diff --git a/assets/celestial-circus/export/celestial-circus-pro.json b/assets/celestial-circus/export/celestial-circus-pro.json new file mode 100644 index 0000000..2c2861b --- /dev/null +++ b/assets/celestial-circus/export/celestial-circus-pro.json @@ -0,0 +1,3758 @@ +{ +"skeleton": { + "hash": "FsTlpSGjt5g", + "spine": "4.2.64-beta", + "x": -755, + "y": -556.02, + "width": 1332, + "height": 2365.02, + "images": "./images/", + "audio": "" +}, +"bones": [ + { "name": "root" }, + { "name": "cloud", "parent": "root", "y": 1580, "color": "91aaebff", "icon": "circle" }, + { "name": "swing-top", "parent": "cloud", "length": 1040.94, "rotation": -90, "y": 4.09, "color": "afc1eeff" }, + { "name": "swing-bottom", "parent": "swing-top", "length": 520.47, "x": 1040.94, "color": "afc1eeff" }, + { + "name": "bench-front", + "parent": "swing-bottom", + "rotation": 90, + "x": 528.6, + "y": -170.65, + "color": "afc1eeff", + "icon": "diamond" + }, + { "name": "bench-back", "parent": "bench-front", "x": 314.34, "y": 66.88, "color": "34497dff", "icon": "diamond" }, + { + "name": "rope-front", + "parent": "swing-top", + "rotation": 90, + "x": 215.22, + "y": -172.32, + "color": "afc1eeff", + "icon": "diamond" + }, + { + "name": "rope-back", + "parent": "swing-top", + "rotation": 90, + "x": 153.36, + "y": 157.07, + "color": "34497dff", + "icon": "diamond" + }, + { "name": "body-bottom", "parent": "bench-front", "x": 172.22, "y": 170.54, "color": "ff9b1aff", "icon": "diamondB" }, + { + "name": "body-down", + "parent": "body-bottom", + "length": 144.53, + "rotation": 90, + "x": 1.67, + "y": 3.34, + "color": "ff9b1aff" + }, + { "name": "body-up", "parent": "body-down", "length": 222.38, "x": 142.12, "y": -0.84, "color": "ff9b1aff" }, + { + "name": "leg-back", + "parent": "body-bottom", + "length": 337.6, + "rotation": -43.22, + "x": 81.18, + "y": 17, + "color": "1540beff" + }, + { "name": "leg-back-down", "parent": "leg-back", "length": 393.2, "rotation": -28.55, "x": 337.6, "color": "1540beff" }, + { "name": "foot-back", "parent": "leg-back-down", "length": 136.87, "rotation": 1.38, "x": 393.2, "color": "1540beff" }, + { + "name": "leg-front", + "parent": "body-bottom", + "length": 325.03, + "rotation": -28.9, + "x": -50.72, + "y": -36.36, + "color": "d10606ff" + }, + { "name": "leg-front-down", "parent": "leg-front", "length": 407.97, "rotation": -44.64, "x": 325.03, "color": "d10606ff" }, + { "name": "foot-front", "parent": "leg-front-down", "length": 174.76, "rotation": 23.03, "x": 407.97, "color": "d10606ff" }, + { + "name": "chest-control", + "parent": "body-up", + "rotation": -0.22, + "x": 135.95, + "y": -81.51, + "color": "ff9b1aff", + "icon": "arrows" + }, + { "name": "neck", "parent": "body-up", "length": 98.45, "x": 296.95, "y": 23.58, "color": "ff9b1aff" }, + { + "name": "jabot", + "parent": "body-up", + "length": 86.81, + "rotation": -167.47, + "x": 284.11, + "y": -5.52, + "color": "ff9b1aff" + }, + { "name": "face", "parent": "neck", "length": 254.23, "x": 95.02, "y": 10.27, "color": "ff9b1aff" }, + { "name": "face-control", "parent": "face", "x": 25.68, "y": -99.3, "color": "ff9b1aff", "icon": "arrowsB" }, + { "name": "face-inverse", "parent": "face", "x": 135.25, "y": 152.37, "color": "ff9b1aff", "icon": "warning" }, + { + "name": "hat-front", + "parent": "face", + "length": 88.84, + "rotation": 25.08, + "x": 216.57, + "y": 39.38, + "color": "ffe719ff" + }, + { + "name": "feathers-front", + "parent": "hat-front", + "length": 125.88, + "rotation": -23.52, + "x": 19.98, + "y": -76.45, + "color": "ffe719ff" + }, + { "name": "feathers-front-top", "parent": "feathers-front", "length": 120.64, "rotation": 46.61, "x": 125.88, "color": "ffe719ff" }, + { + "name": "hair-back", + "parent": "face-inverse", + "length": 468.65, + "rotation": 180, + "x": -6.39, + "y": -102.85, + "color": "561d8ea9" + }, + { "name": "hair-back-down", "parent": "hair-back", "length": 234.32, "x": 468.65, "color": "561d8ea9" }, + { "name": "face-holder", "parent": "face", "x": 59.16, "y": -82.67, "color": "ff9b1aff", "icon": "square" }, + { + "name": "fringe-side-front", + "parent": "face-holder", + "length": 214.4, + "rotation": 180, + "x": 111.88, + "y": 110.79, + "color": "c181e8ff" + }, + { + "name": "fringe-side-back", + "parent": "face-holder", + "length": 221.68, + "rotation": 180, + "x": 106.6, + "y": -43.08, + "color": "9f19ffff" + }, + { "name": "arm-front-up-holder", "parent": "body-up", "x": 237.74, "y": 145.38, "color": "ff1919ff", "icon": "arrowsB" }, + { "name": "arm-front-up", "parent": "arm-front-up-holder", "length": 223.61, "rotation": 155.09, "x": 0.6, "color": "ff1919ff" }, + { "name": "arm-back-up-holder", "parent": "body-up", "x": 263.54, "y": -112.02, "color": "19b2ffff", "icon": "warning" }, + { "name": "arm-back-up", "parent": "arm-back-up-holder", "length": 231.75, "rotation": -155.69, "color": "19b2ffff" }, + { + "name": "wing-front", + "parent": "body-down", + "length": 441.84, + "rotation": 51.84, + "x": 184.85, + "y": 60.03, + "color": "19ffb2ff" + }, + { "name": "wing-front-tip", "parent": "wing-front", "length": 401.17, "rotation": 10.15, "x": 441.84, "color": "19ffb2ff" }, + { + "name": "wing-back", + "parent": "body-down", + "length": 187.48, + "rotation": -37.42, + "x": 188.23, + "y": -9.9, + "color": "0fab73ff" + }, + { "name": "wing-back-tip", "parent": "wing-back", "length": 414.74, "rotation": 15.88, "x": 187.48, "color": "0fab73ff" }, + { + "name": "sock-bow", + "parent": "leg-front-down", + "length": 48.74, + "rotation": -14.1, + "x": 258.61, + "y": -45.08, + "color": "d10606ff" + }, + { + "name": "skirt-back", + "parent": "bench-front", + "length": 282.06, + "rotation": -105.78, + "x": -169.75, + "y": 31.39, + "color": "abe323ff" + }, + { + "name": "skirt-front", + "parent": "bench-back", + "length": 243.95, + "rotation": -62.03, + "x": 191.48, + "y": 67.98, + "color": "00842eff" + }, + { "name": "underskirt-back", "parent": "skirt-back", "x": 294.81, "y": 0.61, "color": "abe323ff" }, + { "name": "underskirt-front", "parent": "skirt-front", "x": 249.28, "y": -0.54, "color": "00842eff" }, + { "name": "mouth", "parent": "face-holder", "x": -71.7, "y": 11.81, "color": "ff9b1aff", "icon": "mouth" }, + { "name": "eye-white-front", "parent": "face-holder", "x": 2, "y": 55.83, "color": "fff019ff", "icon": "eye" }, + { "name": "pupil-front", "parent": "eye-white-front", "x": 2.39, "y": -1.65, "color": "fff019ff", "icon": "star" }, + { + "name": "eyelashes-top-front", + "parent": "eye-white-front", + "rotation": -5.82, + "x": 23.09, + "y": -5.15, + "color": "fff019ff", + "icon": "arrowLeftRight" + }, + { "name": "eyelashes-down-front", "parent": "eye-white-front", "x": -19.83, "y": 8.85, "color": "fff019ff", "icon": "arrowLeftRight" }, + { "name": "eye-white-back", "parent": "face-holder", "x": -0.34, "y": -36.94, "color": "c99d19ff", "icon": "eye" }, + { "name": "pupil-back", "parent": "eye-white-back", "x": 2.17, "y": -1.08, "color": "c99d19ff", "icon": "star" }, + { "name": "eyelashes-top-back", "parent": "eye-white-back", "x": 17.02, "y": -2.38, "color": "c99d19ff", "icon": "arrowLeftRight" }, + { "name": "eyelashes-down-back", "parent": "eye-white-back", "x": -17.56, "y": -0.43, "color": "c99d19ff", "icon": "arrowLeftRight" }, + { "name": "star1", "parent": "cloud", "x": -244.61, "y": 44.37, "color": "ffe12fff", "icon": "star" }, + { "name": "star2", "parent": "cloud", "x": 161.71, "y": 44.37, "color": "ffe12fff", "icon": "star" }, + { "name": "star3", "parent": "cloud", "x": -120.79, "y": -83.12, "color": "ffe12fff", "icon": "star" }, + { "name": "star4", "parent": "cloud", "x": 19.54, "y": 117.75, "color": "ffe12fff", "icon": "star" }, + { "name": "star5", "parent": "cloud", "x": -216.18, "y": -117.05, "color": "ffe12fff", "icon": "star" }, + { "name": "star6", "parent": "cloud", "x": 204.82, "y": -110.63, "color": "ffe12fff", "icon": "star" }, + { "name": "cloud-perspective", "parent": "cloud", "y": 25.92, "color": "d9e2faff", "icon": "arrowsB" } +], +"slots": [ + { "name": "underskirt-back", "bone": "body-bottom", "attachment": "underskirt-back" }, + { "name": "wing-back", "bone": "wing-back", "attachment": "wing-back" }, + { "name": "wing-front", "bone": "wing-front", "attachment": "wing-front" }, + { "name": "hat/feathers-back", "bone": "feathers-front", "attachment": "feathers-back" }, + { "name": "hat/feathers-front", "bone": "feathers-front", "attachment": "feathers-front" }, + { "name": "hat/hat-back", "bone": "hat-front", "attachment": "hat-back" }, + { "name": "hat/hat-front", "bone": "hat-front", "attachment": "hat-front" }, + { "name": "bench", "bone": "bench-front", "attachment": "bench" }, + { "name": "head-back", "bone": "face", "attachment": "head-back" }, + { "name": "hair-back/hair-back-6", "bone": "hair-back", "attachment": "hair-back-6" }, + { "name": "hair-back/hair-back-5", "bone": "hair-back", "attachment": "hair-back-5" }, + { "name": "hair-back/hair-back-4", "bone": "hair-back", "attachment": "hair-back-4" }, + { "name": "hair-back/hair-back-3", "bone": "hair-back", "attachment": "hair-back-3" }, + { "name": "hair-back/hair-back-2", "bone": "hair-back", "attachment": "hair-back-2" }, + { "name": "hair-back/hair-back-1", "bone": "hair-back", "attachment": "hair-back-1" }, + { "name": "arm-back-up", "bone": "arm-back-up-holder", "attachment": "arm-back-up" }, + { "name": "arm-back-down", "bone": "arm-back-up", "attachment": "arm-back-down" }, + { "name": "cloud-back", "bone": "cloud", "attachment": "cloud-back" }, + { "name": "rope-back", "bone": "rope-back", "attachment": "rope-back" }, + { "name": "body-bottom", "bone": "body-down", "attachment": "body-bottom" }, + { "name": "leg-back", "bone": "leg-back", "attachment": "leg-back" }, + { "name": "leg-front", "bone": "leg-front", "attachment": "leg-front" }, + { "name": "sock-bow", "bone": "sock-bow", "attachment": "sock-bow" }, + { "name": "body-top", "bone": "body-up", "attachment": "body-top" }, + { "name": "chest", "bone": "body-up", "attachment": "chest" }, + { "name": "arm-front-up", "bone": "arm-front-up", "attachment": "arm-front-up" }, + { "name": "neck", "bone": "neck", "attachment": "neck" }, + { "name": "collar", "bone": "body-up", "attachment": "collar" }, + { "name": "jabot", "bone": "jabot", "attachment": "jabot" }, + { "name": "logo-brooch", "bone": "body-up", "attachment": "logo-brooch" }, + { "name": "face/fringe-side-back", "bone": "fringe-side-back", "attachment": "fringe-side-back" }, + { "name": "face/face", "bone": "face", "attachment": "face" }, + { "name": "face/ear", "bone": "face", "attachment": "ear" }, + { "name": "face/eye-white-back", "bone": "eye-white-back", "attachment": "eye-white-back" }, + { "name": "face/eye-white-front", "bone": "eye-white-front", "attachment": "eye-white-front" }, + { "name": "face/nose", "bone": "face-holder", "attachment": "nose", "blend": "multiply" }, + { "name": "face/mouth", "bone": "mouth", "attachment": "mouth", "blend": "multiply" }, + { "name": "face/eyelashes-down-back", "bone": "eyelashes-down-back", "attachment": "eyelashes-down-back", "blend": "multiply" }, + { "name": "face/eyelashes-down-front", "bone": "eyelashes-down-front", "attachment": "eyelashes-down-front" }, + { "name": "face/pupil-back", "bone": "pupil-back", "attachment": "pupil-back" }, + { "name": "face/eye-reflex-back", "bone": "pupil-back", "attachment": "eye-reflex-back" }, + { "name": "face/pupil-front", "bone": "pupil-front", "attachment": "pupil-front" }, + { "name": "face/eye-reflex-front", "bone": "pupil-front", "attachment": "eye-reflex-front" }, + { "name": "face/eyelashes-top-back", "bone": "eyelashes-top-back", "attachment": "eyelashes-top-back", "blend": "multiply" }, + { "name": "face/eyelashes-top-front", "bone": "eyelashes-top-front", "attachment": "eyelashes-top-front" }, + { "name": "face/eye-front-shadow", "bone": "eye-white-front", "attachment": "eye-front-shadow", "blend": "multiply" }, + { "name": "face/eye-back-shadow", "bone": "eye-white-back", "attachment": "eye-back-shadow", "blend": "multiply" }, + { "name": "face/nose-shadow", "bone": "face-holder", "attachment": "nose-shadow", "blend": "multiply" }, + { "name": "face/nose-highlight", "bone": "face-holder", "attachment": "nose-highlight" }, + { "name": "face/fringe-front/fringe-middle-back", "bone": "face", "attachment": "fringe-middle-back" }, + { "name": "face/fringe-front/fringe-middle-front", "bone": "face", "attachment": "fringe-middle-front" }, + { "name": "face/fringe-front/fringe-side-front", "bone": "fringe-side-front", "attachment": "fringe-side-front" }, + { "name": "face/hair-hat-shadow", "bone": "face", "attachment": "hair-hat-shadow", "blend": "multiply" }, + { "name": "underskirt", "bone": "underskirt-back", "attachment": "underskirt" }, + { "name": "skirt", "bone": "skirt-front", "attachment": "skirt" }, + { "name": "spine-logo-body", "bone": "body-up", "attachment": "spine-logo-body" }, + { "name": "arm-front-down", "bone": "arm-front-up", "attachment": "arm-front-down" }, + { "name": "rope-front", "bone": "rope-front", "attachment": "rope-front" }, + { "name": "rope-front-bottom", "bone": "bench-front", "attachment": "rope-front-bottom" }, + { "name": "glove-bottom-back", "bone": "bench-back", "attachment": "glove-bottom-back" }, + { "name": "hand-back", "bone": "bench-back", "attachment": "hand-back" }, + { "name": "glove-bottom-front", "bone": "bench-front", "attachment": "glove-bottom-front" }, + { "name": "hand-front", "bone": "bench-front", "attachment": "hand-front" }, + { "name": "cloud-front", "bone": "cloud", "attachment": "cloud-front" }, + { "name": "stars/star1", "bone": "star1" }, + { "name": "stars/star2", "bone": "star2" }, + { "name": "stars/star3", "bone": "star3" }, + { "name": "stars/star4", "bone": "star4" }, + { "name": "stars/star5", "bone": "star5" }, + { "name": "stars/star6", "bone": "star6" } +], +"transform": [ + { + "name": "girl/face-control", + "order": 9, + "bones": [ "face-holder" ], + "target": "face-control", + "x": 33.48, + "y": 16.63, + "mixRotate": 0, + "mixX": 0.8, + "mixScaleX": 0, + "mixShearY": 0 + }, + { + "name": "girl/head-control", + "order": 8, + "bones": [ "face-inverse" ], + "target": "face-control", + "x": 109.57, + "y": 251.66, + "mixRotate": 0, + "mixX": -0.5, + "mixScaleX": 0, + "mixShearY": 0 + }, + { + "name": "girl/shoulders-perspective", + "order": 6, + "bones": [ "arm-back-up-holder" ], + "target": "arm-front-up-holder", + "x": 25.8, + "y": -257.4, + "mixRotate": 0, + "mixX": -1, + "mixScaleX": 0, + "mixShearY": 0 + } +], +"physics": [ + { + "name": "bench-back", + "order": 31, + "bone": "bench-back", + "x": 0.4949, + "y": 0.4579, + "limit": 1500, + "inertia": 0.5, + "damping": 0.85 + }, + { + "name": "bench-front", + "order": 2, + "bone": "bench-front", + "x": 0.1279, + "y": 0.2256, + "inertia": 0.4071, + "strength": 81.4, + "damping": 0.792 + }, + { + "name": "cloud-perspective", + "order": 32, + "bone": "cloud-perspective", + "x": 1, + "y": 1, + "limit": 500, + "inertia": 0.25, + "damping": 0.85, + "windGlobal": true + }, + { "name": "swing-bottom", "order": 1, "bone": "swing-bottom", "rotate": 1, "inertia": 0.5, "damping": 0.85 }, + { "name": "swing-top", "bone": "swing-top", "rotate": 1, "limit": 7000, "inertia": 0.5, "damping": 0.85 }, + { + "name": "girl/hair/fringe-side-back", + "order": 26, + "bone": "fringe-side-back", + "rotate": 1, + "scaleX": 0.6033, + "limit": 1500, + "inertia": 0.5, + "damping": 0.85 + }, + { + "name": "girl/hair/fringe-side-front", + "order": 25, + "bone": "fringe-side-front", + "rotate": 1, + "scaleX": 0.6033, + "limit": 1500, + "inertia": 0.5, + "damping": 0.85 + }, + { + "name": "girl/hair/hair-back", + "order": 23, + "bone": "hair-back", + "rotate": 1, + "limit": 1500, + "inertia": 0.5, + "damping": 0.85 + }, + { + "name": "girl/hair/hair-back-down", + "order": 24, + "bone": "hair-back-down", + "x": 1, + "y": 1, + "rotate": 1, + "scaleX": 0.3641, + "limit": 1500, + "inertia": 0.7345, + "damping": 0.8142, + "windGlobal": true + }, + { + "name": "girl/legs/foot-back", + "order": 22, + "bone": "foot-back", + "rotate": 1, + "limit": 1500, + "inertia": 0.1593, + "damping": 0.85 + }, + { + "name": "girl/legs/foot-front", + "order": 20, + "bone": "foot-front", + "rotate": 1, + "limit": 1500, + "inertia": 0.1593, + "damping": 0.85 + }, + { + "name": "girl/legs/leg-back-down", + "order": 21, + "bone": "leg-back-down", + "rotate": 1, + "limit": 1500, + "inertia": 0.8496, + "damping": 0.85 + }, + { + "name": "girl/legs/leg-front-down", + "order": 18, + "bone": "leg-front-down", + "rotate": 1, + "limit": 1500, + "inertia": 0.5, + "damping": 0.85 + }, + { + "name": "girl/legs/sock-bow", + "order": 19, + "bone": "sock-bow", + "rotate": 1, + "limit": 1500, + "inertia": 0.5, + "damping": 0.85 + }, + { + "name": "girl/skirt/skirt-back", + "order": 27, + "bone": "skirt-back", + "rotate": 1, + "limit": 1500, + "inertia": 0.3805, + "strength": 113.3, + "damping": 0.8982, + "mass": 2.27 + }, + { + "name": "girl/skirt/skirt-front", + "order": 29, + "bone": "skirt-front", + "rotate": 1, + "limit": 1500, + "inertia": 0.3805, + "strength": 113.3, + "damping": 0.8982, + "mass": 2.27 + }, + { + "name": "girl/skirt/underskirt-back", + "order": 28, + "bone": "underskirt-back", + "x": 0.3737, + "y": 0.3737, + "limit": 100, + "inertia": 0.5, + "strength": 164.6, + "damping": 0.85, + "windGlobal": true + }, + { + "name": "girl/skirt/underskirt-front", + "order": 30, + "bone": "underskirt-front", + "x": 0.3737, + "y": 0.3737, + "limit": 100, + "inertia": 0.5, + "strength": 164.6, + "damping": 0.85, + "windGlobal": true + }, + { + "name": "girl/wings/wing-back", + "order": 16, + "bone": "wing-back", + "rotate": 0.4105, + "shearX": 0.1602, + "limit": 1600, + "inertia": 0.5, + "strength": 164.6, + "damping": 0.85 + }, + { + "name": "girl/wings/wing-back-tip", + "order": 17, + "bone": "wing-back-tip", + "rotate": 1, + "limit": 1600, + "inertia": 0.5, + "damping": 0.85, + "windGlobal": true + }, + { + "name": "girl/wings/wing-front", + "order": 14, + "bone": "wing-front", + "rotate": 0.4105, + "shearX": 0.1602, + "limit": 1600, + "inertia": 0.5, + "strength": 164.6, + "damping": 0.85 + }, + { + "name": "girl/wings/wing-front-tip", + "order": 15, + "bone": "wing-front-tip", + "rotate": 1, + "limit": 1600, + "inertia": 0.5, + "damping": 0.85, + "windGlobal": true + }, + { + "name": "girl/arm-front-up-holder", + "order": 5, + "bone": "arm-front-up-holder", + "x": 0.6522, + "y": 0.1359, + "limit": 500, + "inertia": 0.5, + "damping": 0.85 + }, + { + "name": "girl/body-down", + "order": 3, + "bone": "body-down", + "rotate": 1, + "limit": 1500, + "inertia": 0.1195, + "damping": 0.85 + }, + { + "name": "girl/body-up", + "order": 4, + "bone": "body-up", + "rotate": 0.3098, + "limit": 1500, + "inertia": 0.2257, + "damping": 0.85 + }, + { + "name": "girl/chest-control", + "order": 11, + "bone": "chest-control", + "x": 1, + "y": 1, + "limit": 500, + "inertia": 0.354, + "strength": 146.9, + "damping": 0.8938, + "mass": 2 + }, + { + "name": "girl/face-control", + "order": 7, + "bone": "face-control", + "x": 0.5, + "y": 0.5, + "limit": 1500, + "inertia": 0.1372, + "strength": 138.9, + "damping": 0.6372 + }, + { + "name": "girl/feathers-front", + "order": 10, + "bone": "feathers-front", + "rotate": 1, + "limit": 1500, + "inertia": 0.5, + "strength": 48.8, + "damping": 0.85 + }, + { + "name": "girl/feathers-front-top", + "order": 13, + "bone": "feathers-front-top", + "rotate": 1, + "limit": 1500, + "inertia": 0.5, + "strength": 48.8, + "damping": 0.85 + }, + { + "name": "girl/jabot", + "order": 12, + "bone": "jabot", + "rotate": 1, + "scaleX": 0.7011, + "limit": 1500, + "inertia": 0.2566, + "damping": 0.7965, + "mass": 1.36, + "windGlobal": true + } +], +"skins": [ + { + "name": "default", + "attachments": { + "arm-back-down": { + "arm-back-down": { + "type": "mesh", + "uvs": [ 1, 1, 0, 1, 0, 0, 0.62552, 0, 1, 0, 0.30019, 0.75582, 0.67336, 0.80436 ], + "triangles": [ 5, 2, 3, 6, 3, 4, 0, 6, 4, 5, 1, 2, 1, 5, 6, 0, 1, 6, 5, 3, 6 ], + "vertices": [ 1, 34, 266.05, 30.04, 1, 1, 34, 226.94, -56.53, 1, 2, 5, 14.31, 488.57, 0.7907, 7, 0.93, -860.73, 0.2093, 2, 5, 73.73, 488.57, 0.7907, 7, 60.36, -860.73, 0.2093, 2, 5, 109.31, 488.57, 0.7907, 7, 95.93, -860.73, 0.2093, 2, 34, 192.84, -9.84, 0.7879, 5, 42.83, 332.87, 0.2121, 2, 34, 216.55, 18.35, 0.7879, 5, 78.28, 322.87, 0.2121 ], + "hull": 5, + "edges": [ 0, 2, 2, 4, 0, 8, 4, 6, 6, 8 ], + "width": 95, + "height": 206 + } + }, + "arm-back-up": { + "arm-back-up": { "x": -86.1, "y": -20.9, "rotation": -90, "width": 208, "height": 290 } + }, + "arm-front-down": { + "arm-front-down": { + "type": "mesh", + "uvs": [ 1, 1, 0, 1, 0, 0, 0.43452, 0, 0.67692, 0, 1, 0, 0.31332, 0.74613, 0.71731, 0.75077 ], + "triangles": [ 1, 6, 0, 6, 7, 0, 6, 3, 7, 6, 1, 2, 0, 7, 5, 3, 4, 7, 7, 4, 5, 6, 2, 3 ], + "vertices": [ 1, 32, 227.27, 54.07, 1, 1, 32, 265.18, -27.55, 1, 2, 4, -107.35, 521.45, 0.6047, 6, -105.68, -832.87, 0.3953, 2, 4, -68.25, 521.45, 0.6047, 6, -66.58, -832.87, 0.3953, 2, 4, -46.43, 521.45, 0.6047, 6, -44.76, -832.87, 0.3953, 2, 4, -17.35, 521.45, 0.6047, 6, -15.68, -832.87, 0.3953, 3, 4, -79.16, 375.21, 0.15283, 32, 208.17, -22.94, 0.81603, 6, -77.48, -979.11, 0.03115, 3, 4, -42.8, 374.3, 0.2334, 32, 193.68, 10.42, 0.71976, 6, -41.12, -980.02, 0.04684 ], + "hull": 6, + "edges": [ 0, 2, 4, 6, 6, 8, 8, 10, 2, 4, 10, 0 ], + "width": 90, + "height": 196 + } + }, + "arm-front-up": { + "arm-front-up": { "x": 83.58, "y": 4.97, "rotation": 114.91, "width": 192, "height": 290 } + }, + "bench": { + "bench": { "x": 149.15, "y": 26.95, "width": 473, "height": 119 } + }, + "body-bottom": { + "body-bottom": { "x": 0.06, "y": -1.26, "rotation": -90, "width": 385, "height": 311 } + }, + "body-top": { + "body-top": { + "type": "mesh", + "uvs": [ 0.68503, 0.0173, 0.77124, 0.03199, 0.91531, 0.05656, 1, 0.43324, 1, 0.67192, 0.92419, 1, 0.7759, 1, 0.42918, 0.97744, 0.26456, 0.96673, 0.14336, 0.62093, 0, 0.2119, 0, 0.18595, 0.14242, 0.01727, 0.31495, 0.00606, 0.38463, 0.55715, 0.30121, 0.21217, 0.9283, 0.59001, 0.92255, 0.42573 ], + "triangles": [ 17, 1, 2, 3, 17, 2, 6, 16, 4, 16, 6, 14, 16, 14, 17, 16, 3, 4, 1, 17, 0, 0, 17, 15, 16, 17, 3, 0, 15, 13, 5, 6, 4, 8, 14, 7, 14, 6, 7, 8, 9, 14, 9, 15, 14, 9, 10, 15, 17, 14, 15, 15, 11, 12, 15, 12, 13, 15, 10, 11 ], + "vertices": [ 2, 10, 305.7, -37.39, 0.67811, 33, 42.16, 74.63, 0.32189, 2, 10, 300.82, -64.63, 0.4046, 33, 37.28, 47.39, 0.5954, 1, 33, 29.13, 1.86, 1, 2, 10, 167.61, -136.92, 0.7252, 33, -95.93, -24.9, 0.2748, 2, 10, 88.36, -136.92, 0.7252, 33, -175.17, -24.9, 0.2748, 1, 9, 121.56, -113.8, 1, 2, 31, -258.3, -211.49, 0.2636, 9, 121.56, -66.94, 0.7364, 2, 31, -250.81, -101.92, 0.3876, 9, 129.05, 42.62, 0.6124, 1, 9, 132.61, 94.64, 1, 2, 31, -132.44, -11.6, 0.458, 10, 105.29, 133.78, 0.542, 1, 31, 3.35, 33.7, 1, 1, 31, 11.97, 33.7, 1, 2, 31, 67.97, -11.31, 0.68, 10, 305.71, 134.07, 0.32, 1, 10, 309.43, 79.55, 1, 2, 31, -111.27, -87.84, 0.8168, 10, 126.47, 57.54, 0.1832, 1, 31, 3.26, -61.48, 1, 2, 10, 115.56, -114.26, 0.9535, 33, -147.98, -2.25, 0.0465, 2, 10, 170.1, -112.45, 0.7252, 33, -93.44, -0.43, 0.2748 ], + "hull": 14, + "edges": [ 4, 6, 6, 8, 8, 10, 10, 12, 20, 22, 22, 24, 16, 18, 18, 20, 12, 14, 14, 16, 2, 4, 24, 26, 0, 2, 26, 0 ], + "width": 316, + "height": 332 + } + }, + "chest": { + "chest": { + "type": "mesh", + "uvs": [ 0.45001, 0, 0.57525, 0.0237, 0.76703, 0.22276, 0.97238, 0.4359, 1, 0.66542, 1, 0.81592, 0.7799, 0.99414, 0.13228, 0.99919, 0, 0.20603, 0, 0.12601, 0.18781, 0, 0.34662, 0.79353, 0.63746, 0.78251, 0.85889, 0.71271, 0.61432, 0.54004, 0.49204, 0.35267, 0.31357, 0.55841, 0.81262, 0.47023, 0.23094, 0.33063, 0.3334, 0.8964, 0.65398, 0.89272, 0.87211, 0.81925, 0.17806, 0.67229 ], + "triangles": [ 20, 19, 11, 7, 19, 6, 16, 18, 15, 19, 22, 11, 8, 10, 18, 8, 9, 10, 7, 8, 22, 22, 8, 18, 7, 22, 19, 22, 18, 16, 22, 16, 11, 11, 16, 14, 20, 11, 12, 16, 15, 14, 11, 14, 12, 13, 17, 4, 18, 10, 0, 15, 0, 1, 15, 1, 2, 18, 0, 15, 17, 2, 3, 14, 15, 2, 17, 14, 2, 13, 4, 5, 21, 13, 5, 6, 20, 21, 6, 21, 5, 19, 20, 6, 17, 3, 4, 12, 14, 13, 12, 13, 21, 20, 12, 21, 14, 17, 13 ], + "vertices": [ 1, 10, 306.44, -25.48, 1, 2, 33, 37.38, 54.11, 0.1756, 10, 300.92, -57.91, 0.8244, 2, 33, -9, 4.44, 0.1756, 10, 254.54, -107.58, 0.8244, 3, 17, 69.23, -79, 0.20371, 33, -58.66, -48.75, 0.4198, 10, 204.88, -160.77, 0.37649, 3, 17, 15.78, -86.35, 0.14356, 33, -112.14, -55.9, 0.3282, 10, 151.4, -167.92, 0.52824, 2, 33, -147.21, -55.9, 0.3282, 10, 116.33, -167.92, 0.6718, 1, 10, 74.81, -110.91, 1, 2, 10, 73.63, 56.82, 0.1679, 31, -164.11, -88.56, 0.8321, 2, 10, 258.44, 91.08, 0.1679, 31, 20.7, -54.3, 0.8321, 2, 10, 277.08, 91.08, 0.1679, 31, 39.34, -54.3, 0.8321, 2, 10, 306.44, 42.44, 0.313, 31, 68.7, -102.94, 0.687, 3, 17, -14.71, 82.76, 0.21816, 10, 121.55, 1.3, 0.09484, 31, -116.19, -144.08, 0.687, 3, 17, -11.86, 7.45, 0.41027, 10, 124.12, -74.02, 0.26153, 31, -113.62, -219.4, 0.3282, 3, 17, 4.62, -49.85, 0.49165, 33, -123.16, -19.36, 0.1527, 10, 140.38, -131.38, 0.35565, 3, 17, 44.61, 13.65, 0.41027, 10, 180.61, -68.03, 0.26153, 31, -57.12, -213.41, 0.3282, 3, 17, 88.15, 45.49, 0.30258, 10, 224.27, -36.36, 0.36922, 31, -13.47, -181.74, 0.3282, 3, 17, 40.04, 91.53, 0.21816, 10, 176.33, 9.86, 0.09484, 31, -61.4, -135.52, 0.687, 3, 17, 61.07, -37.65, 0.486, 33, -66.66, -7.37, 0.1527, 10, 196.88, -119.39, 0.3613, 3, 17, 93.03, 113.13, 0.14098, 10, 229.41, 31.26, 0.17202, 31, -8.33, -114.12, 0.687, 3, 17, -38.69, 86.1, 0.18636, 10, 97.58, 4.73, 0.12664, 31, -140.16, -140.65, 0.687, 3, 17, -37.52, 3.07, 0.34873, 10, 98.44, -78.3, 0.32307, 31, -139.3, -223.68, 0.3282, 3, 17, -20.19, -53.36, 0.42304, 33, -147.98, -22.78, 0.1603, 10, 115.56, -134.8, 0.41666, 3, 17, 13.37, 126.52, 0.17681, 10, 149.8, 44.96, 0.13619, 31, -87.94, -100.42, 0.687 ], + "hull": 11, + "edges": [ 0, 20, 0, 2, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 18, 20, 2, 4, 4, 6 ], + "width": 259, + "height": 233 + } + }, + "cloud-back": { + "cloud-back": { "x": 34, "y": -35, "width": 504, "height": 412 } + }, + "cloud-front": { + "cloud-front": { + "type": "mesh", + "uvs": [ 0.31327, 1, 0, 0.6177, 0, 0.42025, 0.19412, 0.14966, 0.35888, 0, 0.74282, 0, 1, 0.29836, 1, 0.56651, 0.88846, 0.97605, 0.41478, 0.80054, 0.21765, 0.47631, 0.33975, 0.22279, 0.54864, 0.12772, 0.6678, 0.17403, 0.81785, 0.30323, 0.77666, 0.58114, 0.62747, 0.67312, 0.44331, 0.66744, 0.36329, 0.40562, 0.50892, 0.29396, 0.70487, 0.40205, 0.82079, 0.74203, 0.8914, 0.43487 ], + "triangles": [ 8, 16, 21, 21, 16, 15, 9, 16, 8, 9, 17, 16, 9, 10, 17, 17, 10, 18, 21, 15, 22, 17, 19, 16, 16, 19, 20, 16, 20, 15, 13, 19, 12, 19, 13, 20, 17, 18, 19, 15, 14, 22, 15, 20, 14, 10, 11, 18, 18, 11, 19, 20, 13, 14, 19, 11, 12, 8, 0, 9, 1, 10, 0, 0, 10, 9, 8, 21, 7, 21, 22, 7, 1, 2, 10, 22, 6, 7, 2, 3, 10, 10, 3, 11, 22, 14, 6, 13, 5, 14, 14, 5, 6, 11, 4, 12, 11, 3, 4, 13, 12, 5, 12, 4, 5 ], + "vertices": [ 1, 1, -190.62, -261, 1, 1, 1, -445, -73.68, 1, 1, 1, -445, 23.08, 1, 1, 1, -287.38, 155.67, 1, 1, 1, -153.59, 229, 1, 1, 1, 158.17, 229, 1, 1, 1, 367, 82.8, 1, 1, 1, 367, -48.59, 1, 1, 1, 276.43, -249.27, 1, 2, 1, -108.2, -163.26, 0.2626, 59, -108.2, -189.18, 0.7374, 2, 1, -268.27, -4.39, 0.2626, 59, -268.27, -30.31, 0.7374, 2, 1, -169.12, 119.83, 0.2626, 59, -169.12, 93.92, 0.7374, 2, 1, 0.5, 166.42, 0.2626, 59, 0.5, 140.5, 0.7374, 2, 1, 97.25, 143.72, 0.2626, 59, 97.25, 117.81, 0.7374, 2, 1, 219.09, 80.42, 0.2626, 59, 219.09, 54.5, 0.7374, 1, 59, 185.64, -81.67, 1, 1, 59, 64.51, -126.75, 1, 1, 59, -85.03, -123.96, 1, 1, 59, -150.01, 4.33, 1, 1, 59, -31.75, 59.04, 1, 1, 59, 127.35, 6.08, 1, 2, 1, 221.48, -134.59, 0.2626, 59, 221.48, -160.51, 0.7374, 2, 1, 278.82, 15.91, 0.2626, 59, 278.82, -10, 0.7374 ], + "hull": 9, + "edges": [ 2, 4, 6, 8, 8, 10, 12, 14, 14, 16, 4, 6, 0, 2, 16, 0, 10, 12 ], + "width": 812, + "height": 490 + } + }, + "collar": { + "collar": { "x": 318.94, "y": 22.08, "rotation": -90, "width": 118, "height": 65 } + }, + "glove-bottom-back": { + "glove-bottom-back": { + "type": "mesh", + "uvs": [ 1, 1, 0, 1, 0, 0, 1, 0 ], + "triangles": [ 1, 2, 3, 1, 3, 0 ], + "vertices": [ 2, 7, 127.93, -931.73, 0.1628, 5, 141.31, 417.57, 0.8372, 2, 7, -0.07, -931.73, 0.1628, 5, 13.31, 417.57, 0.8372, 2, 7, -0.07, -829.73, 0.1628, 5, 13.31, 519.57, 0.8372, 2, 7, 127.93, -829.73, 0.1628, 5, 141.31, 519.57, 0.8372 ], + "hull": 4, + "edges": [ 0, 2, 2, 4, 4, 6, 0, 6 ], + "width": 128, + "height": 102 + } + }, + "glove-bottom-front": { + "glove-bottom-front": { + "type": "mesh", + "uvs": [ 1, 1, 0, 1, 0, 0, 1, 0 ], + "triangles": [ 1, 2, 3, 1, 3, 0 ], + "vertices": [ 2, 6, 9.32, -909.87, 0.3023, 4, 7.65, 444.45, 0.6977, 2, 6, -108.68, -909.87, 0.3023, 4, -110.35, 444.45, 0.6977, 2, 6, -108.68, -788.87, 0.3023, 4, -110.35, 565.45, 0.6977, 2, 6, 9.32, -788.87, 0.3023, 4, 7.65, 565.45, 0.6977 ], + "hull": 4, + "edges": [ 0, 2, 2, 4, 4, 6, 0, 6 ], + "width": 118, + "height": 121 + } + }, + "hand-back": { + "hand-back": { + "type": "mesh", + "uvs": [ 1, 1, 0, 1, 0, 0, 1, 0 ], + "triangles": [ 1, 2, 3, 1, 3, 0 ], + "vertices": [ 2, 7, 101.93, -888.73, 0.1628, 5, 115.31, 460.57, 0.8372, 2, 7, -47.07, -888.73, 0.1628, 5, -33.69, 460.57, 0.8372, 2, 7, -47.07, -771.73, 0.1628, 5, -33.69, 577.57, 0.8372, 2, 7, 101.93, -771.73, 0.1628, 5, 115.31, 577.57, 0.8372 ], + "hull": 4, + "edges": [ 0, 2, 2, 4, 4, 6, 0, 6 ], + "width": 149, + "height": 117 + } + }, + "hand-front": { + "hand-front": { + "type": "mesh", + "uvs": [ 1, 1, 0, 1, 0, 0, 1, 0 ], + "triangles": [ 1, 3, 0, 1, 2, 3 ], + "vertices": [ 2, 6, 43.32, -868.87, 0.3023, 4, 41.65, 485.45, 0.6977, 2, 6, -89.68, -868.87, 0.3023, 4, -91.35, 485.45, 0.6977, 2, 6, -89.68, -718.87, 0.3023, 4, -91.35, 635.45, 0.6977, 2, 6, 43.32, -718.87, 0.3023, 4, 41.65, 635.45, 0.6977 ], + "hull": 4, + "edges": [ 0, 2, 2, 4, 4, 6, 0, 6 ], + "width": 133, + "height": 150 + } + }, + "head-back": { + "head-back": { "x": 143.48, "y": -6.28, "rotation": -90, "width": 255, "height": 216 } + }, + "jabot": { + "jabot": { + "type": "mesh", + "uvs": [ 0, 0.00242, 0.68427, 0.0674, 0.78113, 0.19093, 0.92461, 0.37391, 1, 0.47007, 1, 0.77668, 0.68139, 0.9938, 0.25297, 0.99999, 0, 0.59156, 0.10822, 0.43911, 0.20325, 0.30524, 1.0E-5, 0.15397, 0.29926, 0.57598, 0.67862, 0.52015, 0.47435, 0.25963 ], + "triangles": [ 12, 13, 6, 7, 8, 12, 7, 12, 6, 13, 3, 4, 5, 13, 4, 6, 13, 5, 12, 8, 9, 12, 14, 13, 13, 2, 3, 9, 10, 12, 0, 10, 11, 1, 14, 0, 14, 10, 0, 2, 14, 1, 2, 13, 14, 12, 10, 14 ], + "vertices": [ 1, 10, 323.11, 83.08, 1, 1, 10, 314.14, -37.35, 1, 1, 10, 297.09, -54.4, 1, 2, 10, 271.84, -79.65, 0.3511, 19, 28.05, 69.71, 0.6489, 3, 10, 258.57, -92.92, 0.22821, 19, 43.89, 79.78, 0.57989, 17, 122.67, -10.95, 0.1919, 3, 10, 216.26, -92.92, 0.14314, 19, 85.19, 70.6, 0.50336, 17, 80.35, -11.11, 0.3535, 3, 19, 102.27, 9.36, 0.37012, 17, 50.18, 44.86, 0.20238, 31, -51.44, -182.23, 0.4275, 3, 19, 86.75, -64.43, 0.3751, 17, 49.04, 120.25, 0.2051, 31, -52.29, -106.82, 0.4198, 4, 10, 241.81, 83.08, 0.10381, 19, 22.07, -95.66, 0.36505, 17, 105.24, 164.99, 0.11134, 31, 4.07, -62.3, 0.4198, 2, 10, 262.84, 64.03, 0.3511, 19, 5.67, -72.51, 0.6489, 1, 10, 281.32, 47.31, 1, 1, 10, 302.19, 83.08, 1, 4, 10, 243.96, 30.41, 0.03577, 19, 31.4, -43.78, 0.43309, 17, 107.59, 112.33, 0.11134, 31, 6.22, -114.97, 0.4198, 4, 10, 251.66, -36.36, 0.0353, 19, 38.36, 23.07, 0.42734, 17, 115.54, 45.59, 0.10986, 31, 13.92, -181.74, 0.4275, 1, 10, 287.61, -0.41, 1 ], + "hull": 12, + "edges": [ 0, 22, 0, 2, 8, 10, 10, 12, 12, 14, 14, 16, 20, 22, 2, 4, 4, 6, 6, 8, 16, 18, 18, 20 ], + "width": 176, + "height": 138 + } + }, + "leg-back": { + "leg-back": { + "type": "mesh", + "uvs": [ 0.32178, 1.0E-5, 0.65435, 0.2781, 0.68868, 0.31943, 0.70599, 0.34212, 0.72097, 0.37811, 0.74825, 0.44366, 0.81512, 0.57229, 0.88933, 0.74052, 0.91935, 0.79172, 0.93814, 0.82344, 1, 0.92792, 1, 0.99738, 0.92956, 1, 0.89693, 1, 0.74794, 0.8868, 0.75056, 0.80978, 0.74352, 0.76967, 0.58619, 0.589, 0.53314, 0.47715, 0.51888, 0.42426, 0.49157, 0.38949, 0.38189, 0.33429, 0.00221, 0.25355, 0, 0, 0.61105, 0.38965, 0.82789, 0.78577, 0.84871, 0.8316, 0.67341, 0.63766 ], + "triangles": [ 10, 26, 9, 26, 10, 14, 10, 12, 13, 13, 14, 10, 11, 12, 10, 18, 19, 24, 5, 17, 18, 24, 4, 5, 5, 18, 24, 17, 5, 6, 27, 17, 6, 27, 6, 7, 16, 27, 7, 17, 27, 16, 25, 16, 7, 25, 7, 8, 15, 16, 25, 26, 25, 8, 26, 8, 9, 15, 25, 26, 14, 15, 26, 4, 24, 3, 3, 24, 2, 22, 23, 0, 21, 22, 0, 1, 21, 0, 20, 21, 1, 24, 20, 1, 2, 24, 1, 19, 20, 24 ], + "vertices": [ 1, 11, 6.11, 129.11, 1, 2, 11, 291.73, 79.64, 0.99946, 12, -78.35, 48.04, 5.4E-4, 2, 11, 328.42, 66.88, 0.80865, 12, -40.02, 54.36, 0.19135, 2, 11, 347.98, 59.31, 0.57491, 12, -19.23, 57.06, 0.42509, 2, 11, 374.22, 42.84, 0.29825, 12, 11.7, 55.13, 0.70175, 1, 12, 68.04, 51.63, 1, 1, 12, 180.76, 51.39, 1, 1, 12, 326.03, 44.49, 1, 2, 12, 371.46, 46.09, 0.83005, 13, -20.62, 46.6, 0.16995, 2, 12, 399.64, 47.17, 0.63671, 13, 7.58, 47, 0.36329, 1, 13, 100.44, 48.33, 1, 1, 13, 154.94, 28.9, 1, 1, 13, 144.61, -6.6, 1, 1, 13, 138.87, -22.71, 1, 2, 12, 418.59, -64, 0.15021, 13, 23.84, -64.6, 0.84979, 2, 12, 358.08, -42.62, 0.88261, 13, -36.14, -41.76, 0.11739, 1, 12, 325.19, -35.68, 1, 1, 12, 156.46, -66.9, 1, 2, 11, 359, -84.68, 0.05891, 12, 59.27, -64.15, 0.94109, 2, 11, 323.39, -57.69, 0.38892, 12, 15.09, -57.47, 0.61108, 2, 11, 293.12, -46.39, 0.86698, 12, -16.9, -62, 0.13302, 1, 11, 219.75, -52.23, 1, 1, 11, 28.71, -139.47, 1, 1, 11, -116.77, 13.65, 1, 1, 11, 338.83, -3.61, 1, 1, 12, 351.76, 2.12, 1, 2, 12, 391.43, 0.53, 0.59072, 13, -1.75, 0.58, 0.40928, 1, 12, 209.26, -36.17, 1 ], + "hull": 24, + "edges": [ 20, 22, 22, 24, 24, 26, 26, 28, 28, 30, 30, 32, 32, 34, 40, 42, 42, 44, 44, 46, 38, 40, 0, 2, 2, 4, 34, 36, 36, 38, 8, 10, 14, 16, 10, 12, 12, 14, 46, 0, 16, 18, 18, 20, 4, 6, 6, 8 ], + "width": 524, + "height": 833 + } + }, + "leg-front": { + "leg-front": { + "type": "mesh", + "uvs": [ 0.2969, 2.9E-4, 0.42768, 0.05548, 0.59878, 0.15796, 0.6729, 0.22265, 0.68354, 0.26066, 0.69232, 0.29199, 0.6999, 0.31906, 0.70297, 0.35118, 0.7066, 0.38928, 0.71781, 0.50659, 0.74604, 0.58144, 0.79461, 0.71079, 0.82243, 0.74694, 0.84954, 0.78219, 0.87827, 0.81953, 0.93986, 0.89147, 0.96913, 0.90818, 1, 0.95735, 1, 1, 0.95733, 1, 0.84902, 0.98418, 0.74245, 0.97522, 0.69287, 0.89751, 0.70858, 0.8364, 0.71574, 0.80857, 0.70333, 0.77999, 0.54961, 0.5917, 0.50703, 0.39889, 0.46896, 0.33342, 0.29427, 0.28929, 0.2526, 0.31853, 1.0E-5, 0.27849, 0, 0, 0.60991, 0.31513, 0.78952, 0.80682, 0.79263, 0.83757, 0.84003, 0.80682 ], + "triangles": [ 13, 36, 34, 36, 13, 14, 35, 34, 36, 24, 34, 35, 23, 24, 35, 35, 22, 23, 21, 22, 35, 14, 35, 36, 15, 35, 14, 15, 20, 35, 21, 35, 20, 16, 20, 15, 19, 16, 17, 19, 20, 16, 18, 19, 17, 13, 34, 12, 33, 4, 5, 33, 5, 6, 26, 27, 8, 33, 7, 27, 6, 7, 33, 7, 8, 27, 9, 26, 8, 10, 26, 9, 25, 10, 11, 25, 11, 12, 26, 10, 25, 34, 25, 12, 24, 25, 34, 31, 32, 0, 29, 31, 0, 29, 0, 1, 28, 29, 1, 33, 2, 3, 33, 3, 4, 2, 28, 1, 30, 31, 29, 33, 28, 2, 27, 28, 33 ], + "vertices": [ 1, 14, 26.69, 123.29, 1, 1, 14, 121.98, 125.47, 1, 1, 14, 258.37, 107.11, 1, 2, 14, 325.3, 84.95, 0.7863, 15, -59.49, 60.64, 0.2137, 2, 14, 346.02, 61.65, 0.62278, 15, -28.38, 58.62, 0.37722, 2, 14, 363.09, 42.45, 0.37112, 15, -2.74, 56.95, 0.62888, 2, 14, 377.85, 25.86, 0.15366, 15, 19.42, 55.51, 0.84634, 2, 14, 392, 4.32, 0.08338, 15, 44.62, 50.13, 0.91662, 1, 15, 74.52, 43.75, 1, 1, 15, 166.57, 24.1, 1, 1, 15, 229.17, 24.62, 1, 1, 15, 337.29, 25.39, 1, 2, 15, 370.13, 34.43, 0.6412, 16, -21.35, 46.49, 0.3588, 2, 15, 402.13, 43.24, 0.49447, 16, 11.55, 42.08, 0.50553, 2, 15, 436.04, 52.57, 0.04576, 16, 46.4, 37.4, 0.95424, 2, 15, 502.5, 74.42, 0, 16, 116.12, 31.5, 1, 2, 15, 520.68, 88.77, 0, 16, 138.46, 37.59, 1, 2, 15, 564.06, 96.75, 0, 16, 181.5, 27.96, 1, 2, 15, 596.79, 87.08, 0, 16, 207.84, 6.25, 1, 1, 16, 190.3, -15.01, 1, 1, 16, 136.03, -60.96, 1, 2, 15, 530.63, -66.86, 0, 16, 86.72, -109.53, 1, 2, 15, 461.92, -79.96, 0.03259, 16, 18.37, -94.7, 0.96741, 2, 15, 417.92, -56.38, 0.32661, 16, -12.9, -55.78, 0.67339, 2, 15, 397.88, -45.63, 0.7066, 16, -27.14, -38.05, 0.2934, 2, 15, 373.68, -46.84, 0.97283, 16, -49.88, -29.69, 0.02717, 1, 15, 201.08, -99.4, 1, 2, 14, 299.64, -90.27, 0.24722, 15, 45.36, -82.07, 0.75278, 2, 14, 252.8, -56.31, 0.90138, 15, -11.83, -90.82, 0.09862, 1, 14, 136.94, -79.94, 1, 1, 14, 124.68, -113.43, 1, 1, 14, -33.65, -164.25, 1, 1, 14, -141.33, 30.79, 1, 2, 14, 325.44, 0.51, 0.49238, 15, -0.07, 0.65, 0.50762, 2, 15, 410.04, 0.47, 0.39999, 16, 2.09, -0.38, 0.60001, 1, 16, 22.35, -14.47, 1, 2, 15, 419.29, 31.76, 0.19906, 16, 22.85, 24.8, 0.80094 ], + "hull": 33, + "edges": [ 2, 4, 4, 6, 18, 20, 30, 32, 32, 34, 34, 36, 38, 40, 42, 44, 48, 50, 50, 52, 58, 60, 62, 64, 64, 0, 60, 62, 0, 2, 56, 58, 52, 54, 16, 18, 26, 28, 44, 46, 46, 48, 22, 24, 24, 26, 20, 22, 28, 30, 36, 38, 40, 42, 54, 56, 10, 12, 6, 8, 8, 10, 12, 14, 14, 16 ], + "width": 646, + "height": 800 + } + }, + "logo-brooch": { + "logo-brooch": { + "type": "mesh", + "uvs": [ 1, 1, 0, 1, 0, 0, 1, 0 ], + "triangles": [ 1, 3, 0, 1, 2, 3 ], + "vertices": [ 2, 10, 246.44, -26.92, 0.7273, 17, 110.29, 55.01, 0.2727, 2, 10, 246.44, 13.08, 0.7273, 17, 110.14, 95.01, 0.2727, 1, 10, 308.44, 13.08, 1, 1, 10, 308.44, -26.92, 1 ], + "hull": 4, + "edges": [ 0, 2, 2, 4, 4, 6, 0, 6 ], + "width": 40, + "height": 62 + } + }, + "neck": { + "neck": { "x": 64, "y": -0.01, "rotation": -90, "width": 97, "height": 141 } + }, + "rope-back": { + "rope-back": { + "type": "mesh", + "uvs": [ 1, 1, 0, 1, 0, 0.95833, 0, 0.91667, 0, 0.875, 0, 0.83333, 0, 0.79167, 0, 0.75, 0, 0.70833, 0, 0.66667, 0, 0.625, 0, 0.58333, 0, 0.54167, 0, 0.5, 0, 0.45833, 0, 0.41667, 0, 0.375, 0, 0.33333, 0, 0.29167, 0, 0.25, 0, 0.20833, 0, 0.16667, 0, 0.125, 0, 0.08333, 0, 0.04167, 0, 0, 1, 0, 1, 0.04167, 1, 0.08333, 1, 0.125, 1, 0.16667, 1, 0.20833, 1, 0.25, 1, 0.29167, 1, 0.33333, 1, 0.375, 1, 0.41667, 1, 0.45833, 1, 0.5, 1, 0.54167, 1, 0.58333, 1, 0.625, 1, 0.66667, 1, 0.70833, 1, 0.75, 1, 0.79167, 1, 0.83333, 1, 0.875, 1, 0.91667, 1, 0.95833 ], + "triangles": [ 38, 13, 37, 12, 13, 38, 39, 12, 38, 11, 12, 39, 40, 11, 39, 10, 11, 40, 41, 10, 40, 9, 10, 41, 42, 9, 41, 8, 9, 42, 43, 8, 42, 7, 8, 43, 44, 7, 43, 6, 7, 44, 45, 6, 44, 5, 6, 45, 46, 5, 45, 4, 5, 46, 47, 4, 46, 3, 4, 47, 48, 3, 47, 2, 3, 48, 49, 2, 48, 1, 2, 49, 0, 1, 49, 24, 25, 26, 27, 24, 26, 23, 24, 27, 28, 23, 27, 22, 23, 28, 29, 22, 28, 21, 22, 29, 30, 21, 29, 20, 21, 30, 31, 20, 30, 19, 20, 31, 32, 19, 31, 18, 19, 32, 33, 18, 32, 17, 18, 33, 34, 17, 33, 16, 17, 34, 35, 16, 34, 15, 16, 35, 36, 15, 35, 14, 15, 36, 37, 14, 36, 13, 14, 37 ], + "vertices": [ 2, 7, 15.93, -1218.87, 0.06239, 5, 29.31, 130.43, 0.93761, 2, 7, -9.07, -1218.87, 0.06239, 5, 4.31, 130.43, 0.93761, 2, 7, -9.07, -1167.62, 0.06783, 5, 4.31, 181.68, 0.93217, 2, 7, -9.07, -1116.37, 0.07874, 5, 4.31, 232.93, 0.92126, 2, 7, -9.07, -1065.12, 0.0952, 5, 4.31, 284.18, 0.9048, 2, 7, -9.07, -1013.87, 0.11728, 5, 4.31, 335.43, 0.88272, 2, 7, -9.07, -962.62, 0.14499, 5, 4.31, 386.68, 0.85501, 2, 7, -9.07, -911.37, 0.17827, 5, 4.31, 437.93, 0.82173, 2, 7, -9.07, -860.12, 0.21693, 5, 4.31, 489.18, 0.78307, 2, 7, -9.07, -808.87, 0.2606, 5, 4.31, 540.43, 0.73939, 2, 7, -9.07, -757.62, 0.30875, 5, 4.31, 591.68, 0.69125, 2, 7, -9.07, -706.37, 0.36064, 5, 4.31, 642.93, 0.63936, 2, 7, -9.07, -655.12, 0.41536, 5, 4.31, 694.18, 0.58464, 2, 7, -9.07, -603.87, 0.4719, 5, 4.31, 745.43, 0.5281, 2, 7, -9.07, -552.62, 0.52914, 5, 4.31, 796.68, 0.47086, 2, 7, -9.07, -501.37, 0.58596, 5, 4.31, 847.93, 0.41404, 2, 7, -9.07, -450.12, 0.64132, 5, 4.31, 899.18, 0.35868, 2, 7, -9.07, -398.87, 0.69428, 5, 4.31, 950.43, 0.30572, 2, 7, -9.07, -347.62, 0.74413, 5, 4.31, 1001.68, 0.25586, 2, 7, -9.07, -296.37, 0.7904, 5, 4.31, 1052.93, 0.2096, 2, 7, -9.07, -245.12, 0.83286, 5, 4.31, 1104.18, 0.16714, 2, 7, -9.07, -193.87, 0.87161, 5, 4.31, 1155.43, 0.12839, 2, 7, -9.07, -142.62, 0.90701, 5, 4.31, 1206.68, 0.09299, 2, 7, -9.07, -91.37, 0.93965, 5, 4.31, 1257.93, 0.06036, 2, 7, -9.07, -40.12, 0.97033, 5, 4.31, 1309.18, 0.02967, 1, 7, -9.07, 11.13, 1, 1, 7, 15.93, 11.13, 1, 2, 7, 15.93, -40.12, 0.97033, 5, 29.31, 1309.18, 0.02967, 2, 7, 15.93, -91.37, 0.93965, 5, 29.31, 1257.93, 0.06036, 2, 7, 15.93, -142.62, 0.90701, 5, 29.31, 1206.68, 0.09299, 2, 7, 15.93, -193.87, 0.87161, 5, 29.31, 1155.43, 0.12839, 2, 7, 15.93, -245.12, 0.83286, 5, 29.31, 1104.18, 0.16714, 2, 7, 15.93, -296.37, 0.7904, 5, 29.31, 1052.93, 0.2096, 2, 7, 15.93, -347.62, 0.74413, 5, 29.31, 1001.68, 0.25586, 2, 7, 15.93, -398.87, 0.69428, 5, 29.31, 950.43, 0.30572, 2, 7, 15.93, -450.12, 0.64132, 5, 29.31, 899.18, 0.35868, 2, 7, 15.93, -501.37, 0.58596, 5, 29.31, 847.93, 0.41404, 2, 7, 15.93, -552.62, 0.52914, 5, 29.31, 796.68, 0.47086, 2, 7, 15.93, -603.87, 0.4719, 5, 29.31, 745.43, 0.5281, 2, 7, 15.93, -655.12, 0.41536, 5, 29.31, 694.18, 0.58464, 2, 7, 15.93, -706.37, 0.36064, 5, 29.31, 642.93, 0.63936, 2, 7, 15.93, -757.62, 0.30875, 5, 29.31, 591.68, 0.69125, 2, 7, 15.93, -808.87, 0.2606, 5, 29.31, 540.43, 0.73939, 2, 7, 15.93, -860.12, 0.21693, 5, 29.31, 489.18, 0.78307, 2, 7, 15.93, -911.37, 0.17827, 5, 29.31, 437.93, 0.82173, 2, 7, 15.93, -962.62, 0.14499, 5, 29.31, 386.68, 0.85501, 2, 7, 15.93, -1013.87, 0.11728, 5, 29.31, 335.43, 0.88272, 2, 7, 15.93, -1065.12, 0.0952, 5, 29.31, 284.18, 0.9048, 2, 7, 15.93, -1116.37, 0.07874, 5, 29.31, 232.93, 0.92126, 2, 7, 15.93, -1167.62, 0.06783, 5, 29.31, 181.68, 0.93217 ], + "hull": 50, + "edges": [ 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 18, 20, 20, 22, 22, 24, 24, 26, 26, 28, 28, 30, 30, 32, 32, 34, 34, 36, 36, 38, 38, 40, 40, 42, 42, 44, 44, 46, 46, 48, 48, 50, 50, 52, 52, 54, 54, 56, 56, 58, 58, 60, 60, 62, 62, 64, 64, 66, 66, 68, 68, 70, 70, 72, 72, 74, 74, 76, 76, 78, 78, 80, 80, 82, 82, 84, 84, 86, 86, 88, 88, 90, 90, 92, 92, 94, 94, 96, 96, 98, 98, 0 ], + "width": 25, + "height": 1230 + } + }, + "rope-front": { + "rope-front": { + "type": "mesh", + "uvs": [ 1, 1, 0, 1, 0, 0.95833, 0, 0.91667, 0, 0.875, 0, 0.83333, 0, 0.79167, 0, 0.75, 0, 0.70833, 0, 0.66667, 0, 0.625, 0, 0.58333, 0, 0.54167, 0, 0.5, 0, 0.45833, 0, 0.41667, 0, 0.375, 0, 0.33333, 0, 0.29167, 0, 0.25, 0, 0.20833, 0, 0.16667, 0, 0.125, 0, 0.08333, 0, 0.04167, 0, 0, 1, 0, 1, 0.04167, 1, 0.08333, 1, 0.125, 1, 0.16667, 1, 0.20833, 1, 0.25, 1, 0.29167, 1, 0.33333, 1, 0.375, 1, 0.41667, 1, 0.45833, 1, 0.5, 1, 0.54167, 1, 0.58333, 1, 0.625, 1, 0.66667, 1, 0.70833, 1, 0.75, 1, 0.79167, 1, 0.83333, 1, 0.875, 1, 0.91667, 1, 0.95833 ], + "triangles": [ 0, 1, 49, 1, 2, 49, 49, 2, 48, 2, 3, 48, 48, 3, 47, 3, 4, 47, 47, 4, 46, 4, 5, 46, 46, 5, 45, 5, 6, 45, 45, 6, 44, 6, 7, 44, 44, 7, 43, 7, 8, 43, 43, 8, 42, 8, 9, 42, 42, 9, 41, 9, 10, 41, 41, 10, 40, 10, 11, 40, 40, 11, 39, 11, 12, 39, 39, 12, 38, 12, 13, 38, 38, 13, 37, 13, 14, 37, 37, 14, 36, 14, 15, 36, 36, 15, 35, 15, 16, 35, 35, 16, 34, 16, 17, 34, 34, 17, 33, 17, 18, 33, 33, 18, 32, 18, 19, 32, 32, 19, 31, 19, 20, 31, 31, 20, 30, 20, 21, 30, 30, 21, 29, 21, 22, 29, 29, 22, 28, 22, 23, 28, 28, 23, 27, 23, 24, 27, 27, 24, 26, 24, 25, 26 ], + "vertices": [ 2, 6, 15.32, -1218.87, 0.01425, 4, 13.65, 135.45, 0.98575, 2, 6, -9.68, -1218.87, 0.01425, 4, -11.35, 135.45, 0.98575, 2, 6, -9.68, -1167.62, 0.03549, 4, -11.35, 186.7, 0.96451, 2, 6, -9.68, -1116.37, 0.05791, 4, -11.35, 237.95, 0.94209, 2, 6, -9.68, -1065.12, 0.08257, 4, -11.35, 289.2, 0.91743, 2, 6, -9.68, -1013.87, 0.11037, 4, -11.35, 340.45, 0.88963, 2, 6, -9.68, -962.62, 0.142, 4, -11.35, 391.7, 0.858, 2, 6, -9.68, -911.37, 0.17784, 4, -11.35, 442.95, 0.82216, 2, 6, -9.68, -860.12, 0.21806, 4, -11.35, 494.2, 0.78194, 2, 6, -9.68, -808.87, 0.26251, 4, -11.35, 545.45, 0.73749, 2, 6, -9.68, -757.62, 0.31083, 4, -11.35, 596.7, 0.68917, 2, 6, -9.68, -706.37, 0.36243, 4, -11.35, 647.95, 0.63757, 2, 6, -9.68, -655.12, 0.41654, 4, -11.35, 699.2, 0.58346, 2, 6, -9.68, -603.87, 0.47225, 4, -11.35, 750.45, 0.52776, 2, 6, -9.68, -552.62, 0.52855, 4, -11.35, 801.7, 0.47145, 2, 6, -9.68, -501.37, 0.58444, 4, -11.35, 852.95, 0.41556, 2, 6, -9.68, -450.12, 0.63896, 4, -11.35, 904.2, 0.36104, 2, 6, -9.68, -398.87, 0.69127, 4, -11.35, 955.45, 0.30873, 2, 6, -9.68, -347.62, 0.74069, 4, -11.35, 1006.7, 0.25931, 2, 6, -9.68, -296.37, 0.78679, 4, -11.35, 1057.95, 0.21321, 2, 6, -9.68, -245.12, 0.82936, 4, -11.35, 1109.2, 0.17064, 2, 6, -9.68, -193.87, 0.86847, 4, -11.35, 1160.45, 0.13153, 2, 6, -9.68, -142.62, 0.90445, 4, -11.35, 1211.7, 0.09555, 2, 6, -9.68, -91.37, 0.93784, 4, -11.35, 1262.95, 0.06216, 2, 6, -9.68, -40.12, 0.9694, 4, -11.35, 1314.2, 0.0306, 1, 6, -9.68, 11.13, 1, 1, 6, 15.32, 11.13, 1, 2, 6, 15.32, -40.12, 0.9694, 4, 13.65, 1314.2, 0.0306, 2, 6, 15.32, -91.37, 0.93784, 4, 13.65, 1262.95, 0.06216, 2, 6, 15.32, -142.62, 0.90445, 4, 13.65, 1211.7, 0.09555, 2, 6, 15.32, -193.87, 0.86847, 4, 13.65, 1160.45, 0.13153, 2, 6, 15.32, -245.12, 0.82936, 4, 13.65, 1109.2, 0.17064, 2, 6, 15.32, -296.37, 0.78679, 4, 13.65, 1057.95, 0.21321, 2, 6, 15.32, -347.62, 0.74069, 4, 13.65, 1006.7, 0.25931, 2, 6, 15.32, -398.87, 0.69127, 4, 13.65, 955.45, 0.30873, 2, 6, 15.32, -450.12, 0.63896, 4, 13.65, 904.2, 0.36104, 2, 6, 15.32, -501.37, 0.58444, 4, 13.65, 852.95, 0.41556, 2, 6, 15.32, -552.62, 0.52855, 4, 13.65, 801.7, 0.47145, 2, 6, 15.32, -603.87, 0.47225, 4, 13.65, 750.45, 0.52776, 2, 6, 15.32, -655.12, 0.41654, 4, 13.65, 699.2, 0.58346, 2, 6, 15.32, -706.37, 0.36243, 4, 13.65, 647.95, 0.63757, 2, 6, 15.32, -757.62, 0.31083, 4, 13.65, 596.7, 0.68917, 2, 6, 15.32, -808.87, 0.26251, 4, 13.65, 545.45, 0.73749, 2, 6, 15.32, -860.12, 0.21806, 4, 13.65, 494.2, 0.78194, 2, 6, 15.32, -911.37, 0.17784, 4, 13.65, 442.95, 0.82216, 2, 6, 15.32, -962.62, 0.142, 4, 13.65, 391.7, 0.858, 2, 6, 15.32, -1013.87, 0.11037, 4, 13.65, 340.45, 0.88963, 2, 6, 15.32, -1065.12, 0.08257, 4, 13.65, 289.2, 0.91743, 2, 6, 15.32, -1116.37, 0.05791, 4, 13.65, 237.95, 0.94209, 2, 6, 15.32, -1167.62, 0.03549, 4, 13.65, 186.7, 0.96451 ], + "hull": 50, + "edges": [ 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 18, 20, 20, 22, 22, 24, 24, 26, 26, 28, 28, 30, 30, 32, 32, 34, 34, 36, 36, 38, 38, 40, 40, 42, 42, 44, 44, 46, 46, 48, 48, 50, 50, 52, 52, 54, 54, 56, 56, 58, 58, 60, 60, 62, 62, 64, 64, 66, 66, 68, 68, 70, 70, 72, 72, 74, 74, 76, 76, 78, 78, 80, 80, 82, 82, 84, 84, 86, 86, 88, 88, 90, 90, 92, 92, 94, 94, 96, 96, 98, 98, 0 ], + "width": 25, + "height": 1230 + } + }, + "rope-front-bottom": { + "rope-front-bottom": { "x": 6.65, "y": 90.45, "width": 106, "height": 162 } + }, + "skirt": { + "skirt": { + "type": "mesh", + "uvs": [ 0.46879, 0.00497, 0.6193, 0.00865, 0.73168, 0.0729, 0.79086, 0.14366, 0.84028, 0.20275, 0.88824, 0.26009, 0.94354, 0.36305, 0.99934, 0.46693, 0.99902, 0.53745, 0.95967, 0.62431, 0.73749, 0.83501, 0.67118, 0.86255, 0.64669, 0.83712, 0.63777, 0.79457, 0.54456, 0.88007, 0.41826, 0.85692, 0.33176, 0.67054, 0.38298, 0.45193, 0.32025, 0.393, 0.25971, 0.50948, 0.25592, 0.54358, 0.29136, 0.69557, 0.26023, 0.76971, 0.23714, 0.78393, 0.24583, 0.96708, 0.21631, 1, 0.18626, 1, 0.13297, 0.98375, 0.0482, 0.9579, 0, 0.74426, 0, 0.71238, 0.02405, 0.63249, 0.05524, 0.52888, 0.08731, 0.42235, 0.14673, 0.31698, 0.23977, 0.15198, 0.37537, 0.00268, 0.78833, 0.34934, 0.65072, 0.38132, 0.57259, 0.40578, 0.43328, 0.39355, 0.25324, 0.41895, 0.07649, 0.66731, 0.10759, 0.5469, 0.14767, 0.71528, 0.16981, 0.55631, 0.17312, 0.35376, 0.82186, 0.47041, 0.69302, 0.54288, 0.59275, 0.58024 ], + "triangles": [ 21, 23, 20, 17, 40, 15, 16, 17, 15, 23, 45, 20, 20, 45, 19, 45, 46, 41, 19, 45, 41, 19, 41, 18, 17, 18, 40, 18, 41, 35, 18, 36, 40, 41, 46, 35, 11, 12, 13, 10, 47, 9, 10, 48, 47, 47, 6, 9, 8, 9, 7, 48, 37, 47, 7, 9, 6, 47, 5, 6, 47, 37, 5, 37, 4, 5, 37, 3, 4, 10, 11, 13, 25, 26, 24, 24, 26, 23, 26, 27, 23, 27, 44, 23, 27, 28, 44, 28, 29, 42, 28, 42, 44, 31, 42, 30, 23, 21, 22, 23, 44, 45, 42, 29, 30, 42, 43, 44, 44, 43, 45, 31, 32, 42, 42, 32, 43, 45, 43, 46, 32, 33, 43, 46, 33, 34, 46, 43, 33, 46, 34, 35, 13, 48, 10, 37, 38, 3, 14, 15, 49, 49, 40, 39, 39, 1, 38, 1, 39, 0, 39, 40, 0, 40, 36, 0, 18, 35, 36, 38, 1, 2, 3, 38, 2, 49, 39, 38, 49, 38, 48, 48, 38, 37, 14, 49, 13, 13, 49, 48, 40, 49, 15 ], + "vertices": [ 2, 9, 138.5, 15.05, 0.4884, 31, -241.35, -129.5, 0.5116, 1, 9, 136.23, -150.36, 1, 3, 9, 96.66, -273.87, 0.814, 40, -398.02, 529.23, 0, 41, -147.06, 12.37, 0.186, 3, 9, 53.07, -338.91, 0.59714, 40, -373.76, 603.67, 0, 41, -78.06, 49.37, 0.40286, 3, 9, 16.67, -393.22, 0.41605, 40, -353.5, 665.83, 0, 41, -20.44, 80.26, 0.58395, 2, 9, -18.65, -445.93, 0.2403, 41, 35.48, 110.24, 0.7597, 2, 9, -82.08, -506.71, 0.2093, 41, 120, 134.17, 0.7907, 1, 41, 205.28, 158.32, 1, 2, 9, -189.51, -567.68, 0.04571, 41, 243.48, 137.63, 0.95429, 2, 9, -243.01, -524.44, 0.18, 41, 270.45, 74.34, 0.82, 2, 9, -372.8, -280.26, 0.54183, 41, 270.54, -202.19, 0.45817, 2, 9, -389.77, -207.39, 0.4651, 41, 251.35, -274.5, 0.5349, 2, 9, -374.1, -180.47, 0.4651, 41, 224.88, -290.93, 0.5349, 2, 9, -347.89, -170.66, 0.4651, 41, 197.14, -287.3, 0.5349, 3, 9, -400.56, -68.23, 0.46933, 41, 195.61, -402.46, 0.25937, 4, 242.12, -226.67, 0.2713, 4, 9, -386.3, 70.57, 0.56245, 40, 160.39, 329.06, 3.0E-5, 41, 117.91, -518.37, 0.16622, 4, 103.31, -212.42, 0.2713, 3, 40, 75.75, 206.36, 0.00607, 41, -28.08, -548.47, 0.12573, 4, 8.25, -97.6, 0.8682, 1, 4, 64.54, 37.06, 1, 1, 4, -4.4, 73.36, 1, 2, 40, 1.8, 103.19, 0.1318, 4, -70.93, 1.61, 0.8682, 1, 4, -75.1, -19.39, 1, 2, 40, 102.65, 167.82, 0.4651, 4, -36.15, -113.02, 0.5349, 2, 40, 155.91, 147.31, 0.64377, 4, -70.37, -158.69, 0.35623, 2, 40, 171.24, 125.28, 0.51563, 4, -95.74, -167.45, 0.48437, 2, 40, 277.21, 165.15, 0.77714, 4, -86.18, -280.27, 0.22286, 2, 40, 305.54, 139.44, 0.88571, 4, -118.63, -300.55, 0.11429, 2, 40, 314.52, 107.65, 0.80857, 4, -151.66, -300.55, 0.19143, 2, 40, 320.81, 48.57, 0.78571, 4, -210.22, -290.54, 0.21429, 1, 40, 330.82, -45.4, 1, 1, 40, 218.57, -132.16, 1, 1, 40, 199.67, -137.5, 1, 3, 9, -248.05, 503.81, 0.02228, 40, 145.13, -125.45, 0.95682, 4, -329.92, -74.16, 0.0209, 3, 9, -184.23, 469.54, 0.08011, 40, 74.39, -109.81, 0.86977, 4, -295.65, -10.34, 0.05012, 3, 9, -118.6, 434.29, 0.20512, 40, 1.66, -93.74, 0.70568, 4, -260.41, 55.28, 0.0892, 3, 9, -53.7, 368.99, 0.40948, 40, -78.56, -48.54, 0.4572, 4, -195.1, 120.19, 0.13332, 3, 9, 47.94, 266.73, 0.66886, 40, -204.17, 22.23, 0.15284, 4, -92.84, 221.83, 0.1783, 1, 9, 139.91, 117.71, 1, 2, 9, -73.63, -336.14, 0.3798, 41, 32.53, -12.51, 0.6202, 4, 9, -93.33, -184.9, 0.7038, 40, -191, 495.26, 0, 41, -21, -155.32, 0.24191, 31, -473.19, -329.44, 0.05429, 4, 9, -108.4, -99.03, 0.70715, 40, -153.16, 416.72, 1.1E-4, 41, -47.98, -238.22, 0.17845, 31, -488.26, -243.58, 0.11429, 2, 4, 119.82, 73.02, 0.8217, 31, -480.72, -90.48, 0.1783, 1, 4, -78.04, 57.38, 1, 2, 40, 150.1, -64.16, 0.7752, 4, -272.3, -95.61, 0.2248, 2, 40, 69.43, -51.42, 0.6899, 4, -238.11, -21.44, 0.3101, 2, 40, 157.27, 19.15, 0.7752, 4, -194.07, -125.16, 0.2248, 3, 9, -201.12, 343.62, 4.5E-4, 40, 56.42, 15.95, 0.68945, 4, -169.73, -27.24, 0.3101, 3, 9, -76.35, 339.99, 0.06162, 40, -64.64, -14.47, 0.64378, 4, -166.1, 97.53, 0.2946, 2, 9, -148.21, -372.98, 0.2403, 41, 115.68, -14.95, 0.7597, 2, 9, -192.85, -231.39, 0.5891, 41, 88.69, -160.94, 0.4109, 3, 9, -215.87, -121.19, 0.5659, 40, -55.76, 467.26, 1.0E-5, 41, 57.33, -269.06, 0.43409 ], + "hull": 37, + "edges": [ 2, 4, 14, 16, 16, 18, 18, 20, 20, 22, 22, 24, 24, 26, 26, 28, 28, 30, 30, 32, 32, 34, 34, 36, 36, 38, 38, 40, 40, 42, 42, 44, 44, 46, 46, 48, 48, 50, 50, 52, 56, 58, 58, 60, 70, 72, 64, 66, 60, 62, 62, 64, 52, 54, 54, 56, 66, 68, 68, 70, 86, 92, 10, 12, 12, 14, 30, 80, 2, 0, 0, 72, 4, 6, 6, 8, 8, 10 ], + "width": 1099, + "height": 616 + } + }, + "sock-bow": { + "sock-bow": { + "type": "mesh", + "uvs": [ 0.99999, 0.72, 0.75258, 0.92781, 0.22969, 1, 1.0E-5, 0.92563, 1.0E-5, 0.78642, 0.06114, 0.10062, 0.48481, 0.07, 0.87771, 1.0E-5, 0.21914, 0.65955, 0.54384, 0.47361, 0.92125, 0.55017, 0.11372, 0.57861, 0.42577, 0.77111, 0.57969, 0.72736, 0.45951, 0.1958, 0.54595, 0.17611 ], + "triangles": [ 15, 6, 7, 14, 5, 6, 9, 15, 10, 11, 14, 9, 14, 6, 15, 9, 14, 15, 15, 7, 10, 11, 5, 14, 8, 11, 9, 13, 9, 10, 12, 8, 9, 13, 12, 9, 0, 10, 7, 1, 13, 10, 11, 4, 5, 4, 11, 8, 2, 3, 4, 0, 1, 10, 2, 8, 12, 2, 4, 8, 1, 2, 12, 1, 12, 13 ], + "vertices": [ 1, 39, 34.06, 38.19, 1, 1, 39, 49.83, 16.99, 1, 1, 39, 53.81, -26.61, 1, 1, 39, 47.08, -45.41, 1, 1, 39, 35.95, -44.96, 1, 2, 39, -18.66, -37.63, 0.5344, 15, 231.35, -77.03, 0.4656, 1, 15, 238.97, -42.61, 1, 2, 39, -23.91, 30.42, 0.5344, 15, 242.84, -9.75, 0.4656, 2, 39, 26.56, -26.36, 0.5344, 15, 277.95, -77.12, 0.4656, 1, 15, 271.32, -47.06, 1, 2, 39, 20.22, 32.22, 0.5344, 15, 286.07, -18.76, 0.4656, 2, 39, 19.73, -34.84, 0.5344, 15, 269.26, -83.68, 0.4656, 2, 39, 36.18, -9.6, 0.5344, 15, 291.37, -63.2, 0.4656, 2, 39, 33.21, 3.31, 0.5344, 15, 291.63, -49.96, 0.4656, 1, 15, 248.02, -47.48, 1, 1, 15, 248.54, -40.15, 1 ], + "hull": 8, + "edges": [ 0, 14, 6, 8, 8, 10, 4, 6, 0, 2, 2, 4, 10, 12, 12, 14 ], + "width": 83, + "height": 80 + } + }, + "spine-logo-body": { + "spine-logo-body": { + "type": "mesh", + "uvs": [ 1, 1, 0, 1, 0, 0, 1, 0 ], + "triangles": [ 1, 2, 3, 0, 1, 3 ], + "vertices": [ 2, 31, -248.3, -203.3, 0.6279, 33, -274.1, 54.1, 0.3721, 2, 31, -248.3, -171.3, 0.6977, 33, -274.1, 86.1, 0.3023, 2, 31, -169.3, -171.3, 0.6977, 33, -195.1, 86.1, 0.3023, 2, 31, -169.3, -203.3, 0.6279, 33, -195.1, 54.1, 0.3721 ], + "hull": 4, + "edges": [ 0, 2, 2, 4, 4, 6, 0, 6 ], + "width": 32, + "height": 79 + } + }, + "underskirt": { + "underskirt": { + "type": "mesh", + "uvs": [ 0.61384, 0.00326, 0.86014, 0.1566, 1, 0.41744, 0.99999, 0.63264, 0.91366, 0.67712, 0.71449, 0.81522, 0.48265, 0.87782, 0.37222, 0.75816, 0.31568, 0.69151, 0.33041, 0.38409, 0.3203, 0.38107, 0.28115, 0.91727, 0.22206, 1, 0.13682, 0.99971, 0.05161, 0.92594, 0, 0.71479, 0, 0.68836, 0.09431, 0.39249, 0.29714, 0.10495, 0.42184, 0.00353 ], + "triangles": [ 5, 1, 4, 5, 0, 1, 3, 4, 2, 2, 4, 1, 12, 13, 11, 17, 11, 13, 16, 13, 14, 16, 14, 15, 17, 13, 16, 10, 11, 17, 6, 7, 0, 6, 0, 5, 19, 0, 9, 8, 9, 7, 0, 7, 9, 17, 18, 10, 19, 9, 18, 9, 10, 18 ], + "vertices": [ 3, 9, 59.71, -144.35, 0.82348, 42, -622.06, 414.02, 1.0E-5, 43, -424.46, -118.81, 0.17652, 2, 9, -27.7, -418.23, 0.20974, 43, -218.8, 82.08, 0.79026, 2, 9, -176.38, -573.76, 0.00244, 43, -14.54, 149.69, 0.99756, 1, 43, 93.78, 92.15, 1, 2, 9, -324.39, -477.75, 0.00233, 43, 71.15, -4.52, 0.99767, 2, 9, -403.12, -256.27, 0.35855, 43, 36.78, -237.06, 0.64145, 3, 9, -438.79, 1.54, 0.73381, 42, -102.67, 409.16, 0.0028, 43, -52.63, -481.48, 0.26339, 3, 9, -370.59, 124.33, 0.82181, 42, -134.93, 272.44, 0.02156, 43, -170.47, -557.93, 0.15663, 3, 9, -332.6, 187.21, 0.83983, 42, -154.39, 201.61, 0.03404, 43, -233.51, -595.65, 0.12614, 3, 9, -157.37, 170.82, 0.72848, 42, -327.47, 169.74, 0.2419, 43, -380.58, -498.98, 0.02962, 3, 9, -155.65, 182.06, 0.65493, 42, -326.07, 158.45, 0.32779, 43, -387.37, -508.1, 0.01728, 2, 9, -461.28, 225.6, 0.0394, 42, -20.11, 199.65, 0.9606, 2, 9, -508.44, 291.31, 0.01441, 42, 43.13, 149.23, 0.98559, 2, 9, -508.27, 386.1, 5.6E-4, 42, 68.74, 57.97, 0.99944, 1, 42, 54.04, -44.65, 1, 2, 9, -345.87, 538.24, 0.02475, 42, -46.18, -132.6, 0.97525, 2, 9, -330.8, 538.24, 0.02806, 42, -60.68, -136.69, 0.97194, 2, 9, -162.16, 433.37, 0.22852, 42, -251.48, -81.62, 0.77148, 2, 9, 1.74, 207.82, 0.78318, 42, -470.53, 90.88, 0.21682, 3, 9, 59.55, 69.15, 0.97304, 42, -563.86, 208.61, 0.02695, 43, -524.47, -307.44, 1.0E-5 ], + "hull": 20, + "edges": [ 0, 38, 0, 2, 2, 4, 4, 6, 8, 10, 10, 12, 12, 14, 20, 22, 22, 24, 24, 26, 26, 28, 28, 30, 30, 32, 32, 34, 34, 36, 36, 38, 14, 16, 16, 18, 18, 20, 6, 8 ], + "width": 1112, + "height": 570 + } + }, + "underskirt-back": { + "underskirt-back": { + "type": "mesh", + "uvs": [ 0.8116, 0, 1, 0.3776, 1, 0.45388, 0.98647, 0.56624, 0.92179, 0.61762, 0.8759, 0.61039, 0.87506, 0.61851, 0.72906, 0.8252, 0.48046, 0.90197, 0.37375, 0.98138, 0.17375, 1, 0.14891, 1, 0, 0.76838, 0, 0.7307, 0.01937, 0.5828, 0.09779, 0.29851, 0.26066, 0.09077, 0.63845, 0 ], + "triangles": [ 8, 17, 7, 6, 7, 5, 7, 17, 0, 5, 7, 0, 3, 4, 2, 4, 1, 2, 5, 1, 4, 1, 5, 0, 16, 9, 10, 10, 14, 15, 14, 11, 13, 10, 11, 14, 10, 15, 16, 9, 16, 8, 11, 12, 13, 8, 16, 17 ], + "vertices": [ 2, 9, -29.44, -358.72, 0.4574, 43, -245.18, 28.7, 0.5426, 1, 43, -6.75, 133.1, 1, 1, 43, 22.09, 117.78, 1, 1, 43, 57.69, 82.29, 1, 2, 42, -372.61, 831.26, 1.1E-4, 43, 44.25, 10.1, 0.99989, 2, 42, -362.08, 782.6, 0.00633, 43, 18.21, -32.33, 0.99367, 2, 42, -358.49, 782.66, 0.00746, 43, 20.85, -34.77, 0.99254, 2, 42, -230.37, 654.55, 0.14266, 43, 24.81, -215.91, 0.85734, 2, 42, -125.55, 404.39, 0.58607, 43, -72.45, -469.09, 0.41393, 2, 42, -61.42, 302.42, 0.78309, 43, -96.64, -587.1, 0.21691, 2, 42, 5.13, 96.14, 0.98087, 43, -191.2, -782.14, 0.01913, 2, 42, 12.44, 70.26, 0.9887, 43, -203.82, -805.89, 0.0113, 1, 42, -39.11, -111.89, 1, 1, 42, -54.63, -116.28, 1, 1, 42, -121.25, -113.3, 1, 2, 9, -157.2, 414.33, 0.6279, 42, -261.43, -64.65, 0.3721, 3, 9, -68.29, 237.94, 0.6279, 42, -394.95, 80.92, 0.33514, 43, -490.74, -516.48, 0.03696, 3, 9, -29.44, -171.2, 0.6279, 42, -543.57, 464.1, 0.0647, 43, -333.14, -136.91, 0.3074 ], + "hull": 18, + "edges": [ 0, 34, 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 16, 18, 18, 20, 20, 22, 22, 24, 24, 26, 26, 28, 28, 30, 30, 32, 32, 34, 14, 16 ], + "width": 1083, + "height": 428 + } + }, + "wing-back": { + "wing-back": { + "type": "mesh", + "uvs": [ 0.27992, 1, 0.41993, 0.8511, 0.63506, 0.69103, 0.71019, 0.49935, 0.7819, 0.3709, 1, 0.06855, 1, 0, 0.83312, 0, 0.50871, 0.27604, 0.42334, 0.38473, 0.29016, 0.46773, 0.23894, 0.57049, 0, 0.70289, 0, 1 ], + "triangles": [ 3, 10, 9, 3, 9, 4, 9, 8, 4, 4, 8, 5, 8, 7, 5, 7, 6, 5, 0, 13, 1, 13, 12, 1, 12, 11, 1, 1, 11, 2, 2, 11, 3, 3, 11, 10 ], + "vertices": [ 1, 37, -58.79, -72.37, 1, 1, 37, 46.56, -55.93, 1, 2, 37, 174.1, -56.94, 0.68025, 38, -28.45, -51.1, 0.31975, 2, 37, 286.48, -5.39, 0.4003, 38, 93.74, -32.27, 0.5997, 2, 37, 366.51, 22.98, 0.17872, 38, 178.48, -26.89, 0.82128, 1, 38, 384.52, -30.9, 1, 1, 38, 424.63, -15.07, 1, 1, 38, 402.32, 41.43, 1, 2, 37, 353.46, 138.21, 0.10957, 38, 197.47, 87.52, 0.89043, 2, 37, 280.29, 121.34, 0.25682, 38, 122.47, 91.32, 0.74318, 2, 37, 209.37, 128.12, 0.46071, 38, 56.11, 117.24, 0.53929, 2, 37, 146.7, 103.65, 0.71584, 38, -10.86, 110.85, 0.28416, 2, 37, 27.71, 122.12, 0.99997, 38, -120.26, 161.17, 3.0E-5, 1, 37, -120.71, 8.55, 1 ], + "hull": 14, + "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, 0, 26 ], + "width": 364, + "height": 629 + } + }, + "wing-front": { + "wing-front": { + "type": "mesh", + "uvs": [ 0, 0, 0.02331, 0, 0.22961, 0.21519, 0.35084, 0.26796, 0.43003, 0.30243, 0.488, 0.32767, 0.53152, 0.4064, 0.57005, 0.47608, 0.62939, 0.54328, 1, 0.68105, 0.99999, 0.99998, 0.617, 0.99221, 0.44034, 0.85621, 0.38946, 0.74627, 0.35759, 0.67741, 0.3699, 0.6309, 0.30589, 0.58118, 0.22551, 0.51873, 0.16197, 0.39023, 0.08039, 0.22526, 0.00685, 0.07654 ], + "triangles": [ 5, 15, 4, 16, 4, 15, 16, 3, 4, 16, 17, 3, 3, 18, 2, 3, 17, 18, 18, 19, 2, 2, 19, 1, 19, 20, 1, 20, 0, 1, 10, 11, 9, 11, 8, 9, 11, 12, 8, 12, 13, 8, 14, 15, 13, 7, 13, 15, 7, 8, 13, 15, 6, 7, 15, 5, 6 ], + "vertices": [ 1, 36, 423.69, -49.6, 1, 1, 36, 408.05, -57.92, 1, 1, 36, 206.97, -13.75, 1, 2, 35, 555.33, -8.25, 0.10655, 36, 110.26, -28.12, 0.89345, 2, 35, 494.8, -28.62, 0.21311, 36, 47.09, -37.51, 0.78689, 2, 35, 450.49, -43.54, 0.49546, 36, 0.85, -44.38, 0.50454, 2, 35, 394.32, -25.6, 0.76147, 36, -51.28, -16.82, 0.23853, 2, 35, 344.61, -9.71, 0.92422, 36, -97.42, 7.57, 0.07578, 2, 35, 283.41, -4.82, 0.9928, 36, -156.8, 23.18, 0.0072, 1, 35, 9.16, -111.67, 1, 1, 35, -113, 43.82, 1, 1, 35, 118.85, 219.86, 1, 2, 35, 276.52, 236.51, 0.96534, 36, -121.05, 261.95, 0.03466, 2, 35, 349.03, 206.81, 0.92167, 36, -54.9, 219.92, 0.07833, 2, 35, 394.46, 188.2, 0.916, 36, -13.47, 193.6, 0.084, 2, 35, 404.91, 159.74, 0.7786, 36, -8.19, 163.75, 0.2214, 2, 35, 462.21, 165.55, 0.4504, 36, 49.24, 159.37, 0.5496, 2, 35, 534.17, 172.86, 0.29838, 36, 121.35, 153.88, 0.70162, 2, 35, 621.37, 140.04, 0.14825, 36, 201.4, 106.21, 0.85175, 1, 36, 304.17, 45.02, 1, 1, 36, 396.81, -10.14, 1 ], + "hull": 21, + "edges": [ 0, 2, 14, 16, 22, 24, 28, 30, 40, 0, 34, 36, 36, 38, 4, 6, 30, 32, 32, 34, 6, 8, 8, 10, 10, 12, 12, 14, 30, 10, 24, 26, 26, 28, 26, 14, 18, 20, 16, 18, 20, 22, 38, 40, 2, 4 ], + "width": 760, + "height": 620 + } + }, + "fringe-middle-back": { + "fringe-middle-back": { + "type": "mesh", + "uvs": [ 0.32752, 0, 0.86964, 0.29818, 1, 0.59486, 1, 1, 0.28701, 1, 0.30763, 0.65487, 0, 0.25321, 0, 0 ], + "triangles": [ 4, 5, 3, 5, 2, 3, 5, 1, 2, 5, 6, 1, 6, 0, 1, 6, 7, 0 ], + "vertices": [ 1, 20, 208.48, -106.96, 1, 2, 20, 169.72, -151.96, 0.6589, 28, 110.56, -69.29, 0.3411, 2, 20, 131.15, -162.78, 0.3535, 30, 34.61, 37.03, 0.6465, 2, 20, 78.48, -162.78, 0.3535, 30, 87.28, 37.03, 0.6465, 3, 20, 78.48, -103.6, 0.1164, 30, 87.28, -22.15, 0.6465, 28, 19.32, -20.93, 0.2371, 3, 20, 123.35, -105.31, 0.1164, 30, 42.41, -20.44, 0.6465, 28, 64.19, -22.64, 0.2371, 2, 20, 175.56, -79.78, 0.6589, 28, 116.4, 2.89, 0.3411, 1, 20, 208.48, -79.78, 1 ], + "hull": 8, + "edges": [ 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 0, 14 ], + "width": 83, + "height": 130 + } + }, + "fringe-middle-front": { + "fringe-middle-front": { + "type": "mesh", + "uvs": [ 1, 1, 0.75, 1, 0.5, 1, 0.25, 1, 0, 1, 0, 0.66667, 0, 0.33333, 0, 0, 0.5, 0, 1, 0, 1, 0.33333, 1, 0.66667, 0.58576, 0.6538, 0.52144, 0.32047 ], + "triangles": [ 1, 11, 0, 2, 12, 1, 1, 12, 11, 2, 3, 12, 12, 3, 5, 3, 4, 5, 12, 10, 11, 5, 13, 12, 5, 6, 13, 12, 13, 10, 6, 8, 13, 10, 8, 9, 6, 7, 8, 10, 13, 8 ], + "vertices": [ 3, 20, 80.48, -129.78, 0.0853, 30, 85.28, 4.03, 0.303, 28, 21.32, -47.11, 0.6117, 2, 30, 85.28, -33.47, 0.303, 28, 21.32, -9.61, 0.697, 2, 29, 90.56, 82.9, 0.3636, 28, 21.32, 27.89, 0.6364, 2, 29, 90.56, 45.4, 0.3636, 28, 21.32, 65.39, 0.6364, 2, 29, 90.56, 7.9, 0.3636, 28, 21.32, 102.89, 0.6364, 2, 29, 48.89, 7.9, 0.3636, 28, 62.99, 102.89, 0.6364, 2, 20, 163.81, 20.22, 0.3566, 28, 104.66, 102.89, 0.6434, 1, 20, 205.48, 20.22, 1, 1, 20, 205.48, -54.78, 1, 1, 20, 205.48, -129.78, 1, 2, 20, 163.81, -129.78, 0.3178, 28, 104.66, -47.11, 0.6822, 3, 20, 122.15, -129.78, 0.0853, 30, 43.61, 4.03, 0.303, 28, 62.99, -47.11, 0.6117, 2, 29, 47.28, 95.77, 0.3636, 28, 64.6, 15.03, 0.6364, 2, 20, 165.42, -57.99, 0.3566, 28, 106.26, 24.67, 0.6434 ], + "hull": 12, + "edges": [ 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 18, 20, 20, 22, 22, 0, 14, 16, 16, 18, 20, 16 ], + "width": 150, + "height": 125 + } + }, + "fringe-side-front": { + "fringe-side-front": { + "type": "mesh", + "uvs": [ 1, 1, 0, 1, 0, 0.8, 0, 0.6, 0, 0.4, 0, 0.2, 0, 0, 1, 0, 1, 0.2, 1, 0.4, 1, 0.6, 1, 0.8 ], + "triangles": [ 3, 4, 9, 8, 5, 7, 5, 6, 7, 4, 5, 8, 9, 4, 8, 0, 1, 11, 1, 2, 11, 11, 2, 10, 2, 3, 10, 10, 3, 9 ], + "vertices": [ 1, 29, 217.56, 17.9, 1, 1, 29, 217.56, -48.1, 1, 2, 29, 171.16, -48.1, 0.82503, 28, -59.28, 158.89, 0.17497, 2, 29, 124.76, -48.1, 0.60616, 28, -12.88, 158.89, 0.39384, 3, 29, 78.36, -48.1, 0.3251, 20, 92.68, 76.22, 0.1478, 28, 33.52, 158.89, 0.5271, 2, 20, 139.08, 76.22, 0.1705, 28, 79.92, 158.89, 0.8295, 2, 20, 185.48, 76.22, 0.4031, 28, 126.32, 158.89, 0.5969, 2, 20, 185.48, 10.22, 0.4031, 28, 126.32, 92.89, 0.5969, 2, 20, 139.08, 10.22, 0.1705, 28, 79.92, 92.89, 0.8295, 3, 29, 78.36, 17.9, 0.3251, 20, 92.68, 10.22, 0.1478, 28, 33.52, 92.89, 0.5271, 2, 29, 124.76, 17.9, 0.60616, 28, -12.88, 92.89, 0.39384, 2, 29, 171.16, 17.9, 0.82503, 28, -59.28, 92.89, 0.17497 ], + "hull": 12, + "edges": [ 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 18, 20, 20, 22, 22, 0 ], + "width": 66, + "height": 232 + } + }, + "ear": { + "ear": { + "type": "mesh", + "uvs": [ 1, 1, 0, 1, 0, 0, 1, 0 ], + "triangles": [ 1, 2, 3, 1, 3, 0 ], + "vertices": [ 2, 20, 20.48, 52.22, 0.3101, 28, -38.68, 134.89, 0.6899, 2, 28, -38.68, 184.89, 0.7287, 22, -114.77, -50.15, 0.2713, 2, 28, 31.32, 184.89, 0.7287, 22, -44.77, -50.15, 0.2713, 2, 20, 90.48, 52.22, 0.3101, 28, 31.32, 134.89, 0.6899 ], + "hull": 4, + "edges": [ 0, 2, 2, 4, 4, 6, 0, 6 ], + "width": 50, + "height": 70 + } + }, + "eye-back-shadow": { + "eye-back-shadow": { + "type": "mesh", + "uvs": [ 1, 1, 0, 1, 0, 0, 1, 0 ], + "triangles": [ 1, 3, 0, 1, 2, 3 ], + "vertices": [ 2, 51, -20.35, -15.78, 0.2749, 49, -3.33, -18.17, 0.7251, 2, 51, -20.35, 19.22, 0.1085, 49, -3.33, 16.83, 0.8915, 2, 51, 3.65, 19.22, 0.69582, 49, 20.67, 16.83, 0.30418, 2, 51, 3.65, -15.78, 0.91085, 49, 20.67, -18.17, 0.08915 ], + "hull": 4, + "edges": [ 0, 2, 2, 4, 4, 6, 0, 6 ], + "width": 35, + "height": 24 + } + }, + "eye-front-shadow": { + "eye-front-shadow": { + "type": "mesh", + "uvs": [ 1, 1, 0, 1, 0, 0, 1, 0 ], + "triangles": [ 1, 3, 0, 1, 2, 3 ], + "vertices": [ 2, 47, -34.76, -19.78, 0.1604, 45, -11.68, -24.94, 0.8396, 2, 47, -34.76, 39.22, 0.03854, 45, -11.68, 34.06, 0.96146, 2, 47, 1.24, 39.22, 0.96, 45, 24.32, 34.06, 0.04, 2, 47, 1.24, -19.78, 0.92478, 45, 24.32, -24.94, 0.07522 ], + "hull": 4, + "edges": [ 0, 2, 2, 4, 4, 6, 0, 6 ], + "width": 59, + "height": 36 + } + }, + "eye-reflex-back": { + "eye-reflex-back": { "x": -1, "y": 6.42, "rotation": -90, "width": 19, "height": 17 } + }, + "eye-reflex-front": { + "eye-reflex-front": { "x": -2.07, "y": 7.22, "rotation": -90, "width": 25, "height": 18 } + }, + "eye-white-back": { + "eye-white-back": { + "type": "mesh", + "uvs": [ 1, 1, 0, 1, 0, 0, 1, 0 ], + "triangles": [ 1, 3, 0, 1, 2, 3 ], + "vertices": [ 1, 52, -1.77, -14.73, 1, 1, 52, -1.77, 17.27, 1, 1, 51, 3.65, 19.22, 1, 2, 49, 20.67, -15.17, 0.03731, 51, 3.65, -12.78, 0.96269 ], + "hull": 4, + "edges": [ 0, 2, 2, 4, 4, 6, 0, 6 ], + "width": 32, + "height": 40 + } + }, + "eye-white-front": { + "eye-white-front": { + "type": "mesh", + "uvs": [ 0.98492, 0.7288, 0.74399, 0.97841, 0.09394, 0.97675, 0, 0.61321, 0.44029, 0.01082, 0.98133, 0.03613 ], + "triangles": [ 0, 1, 4, 1, 3, 4, 1, 2, 3, 0, 4, 5 ], + "vertices": [ 2, 45, -10.01, -24.09, 0.90792, 48, 9.81, -32.94, 0.09208, 1, 48, -0.92, -19.45, 1, 1, 48, -0.85, 16.95, 1, 3, 45, -5.04, 31.06, 0.13374, 47, -28.13, 36.22, 0.27714, 48, 14.78, 22.22, 0.58912, 1, 47, -2.23, 11.56, 1, 1, 47, -3.31, -18.74, 1 ], + "hull": 6, + "edges": [ 0, 10, 0, 2, 2, 4, 4, 6, 8, 10, 6, 8 ], + "width": 56, + "height": 43 + } + }, + "eyelashes-down-back": { + "eyelashes-down-back": { "x": -0.77, "y": -0.73, "rotation": -90, "width": 28, "height": 14 } + }, + "eyelashes-down-front": { + "eyelashes-down-front": { "x": -2.35, "y": 0.72, "rotation": -90, "width": 37, "height": 15 } + }, + "eyelashes-top-back": { + "eyelashes-top-back": { + "type": "mesh", + "uvs": [ 0.53449, 0.0112, 0.80224, 0.23436, 1, 0.50028, 0.89272, 0.90854, 0.67501, 0.92236, 0.35422, 0.73425, 0.24884, 0.95236, 0.02061, 0.96391, 0.02196, 0.59454, 0.24865, 0.01679 ], + "triangles": [ 7, 8, 6, 3, 1, 2, 5, 0, 4, 4, 1, 3, 4, 0, 1, 8, 9, 5, 5, 9, 0, 6, 8, 5 ], + "vertices": [ 1, 51, 9.38, -2.84, 1, 2, 51, 4.02, -14.88, 0.86286, 49, 21.04, -17.27, 0.13714, 2, 51, -2.36, -23.78, 0.5814, 49, 14.66, -26.17, 0.4186, 2, 51, -12.16, -18.96, 0.5814, 49, 4.86, -21.34, 0.4186, 2, 51, -12.49, -9.16, 0.6434, 49, 4.53, -11.54, 0.3566, 1, 51, -7.98, 5.28, 1, 2, 51, -13.21, 10.02, 0.6047, 49, 3.81, 7.63, 0.3953, 2, 51, -13.49, 20.29, 0.5814, 49, 3.53, 17.9, 0.4186, 2, 51, -4.62, 20.23, 0.5814, 49, 12.4, 17.84, 0.4186, 1, 51, 9.24, 10.03, 1 ], + "hull": 10, + "edges": [ 0, 18, 0, 2, 4, 6, 14, 16, 16, 18, 12, 14, 6, 8, 8, 10, 10, 12, 2, 4 ], + "width": 45, + "height": 24 + } + }, + "eyelashes-top-front": { + "eyelashes-top-front": { + "type": "mesh", + "uvs": [ 0, 0.74724, 0.51172, 0, 0.61319, 0, 0.99001, 0.18532, 0.99016, 0.28688, 0.83893, 0.5606, 0.6312, 0.2977, 0.48808, 0.44992, 0.18971, 1, 0.09689, 1, 0, 0.86051 ], + "triangles": [ 4, 5, 3, 7, 0, 1, 7, 1, 6, 1, 2, 6, 5, 6, 3, 6, 2, 3, 0, 8, 9, 9, 10, 0, 7, 8, 0 ], + "vertices": [ 1, 45, -1.31, 42.06, 1, 1, 47, 6.24, 9.35, 1, 1, 47, 6.24, 1.84, 1, 2, 45, 21.73, -31.2, 0.2713, 47, -1.36, -26.05, 0.7287, 2, 45, 17.56, -31.21, 0.2713, 47, -5.52, -26.06, 0.7287, 2, 45, 6.34, -20.02, 0.34, 47, -16.75, -14.87, 0.66, 1, 47, -5.97, 0.51, 1, 2, 45, 10.88, 5.94, 0.23429, 47, -12.21, 11.1, 0.76571, 1, 45, -11.68, 28.02, 1, 1, 45, -11.68, 34.89, 1, 1, 45, -5.96, 42.06, 1 ], + "hull": 11, + "edges": [ 0, 20, 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 18, 20 ], + "width": 74, + "height": 41 + } + }, + "face": { + "face": { + "type": "mesh", + "uvs": [ 0.84841, 0, 0.99605, 0.18591, 0.99597, 0.82505, 0.75638, 1, 0.56116, 1, 0.28151, 0.91236, 0.02486, 0.65319, 0.25928, 0.18329, 0.83782, 0, 0.31251, 0.58794, 0.2902, 0.34407, 0.75589, 0.2771, 0.94411, 0.34407, 0.92878, 0.62458, 0.66107, 0.87982, 0.7811, 0.68326 ], + "triangles": [ 4, 14, 3, 3, 14, 2, 4, 5, 14, 5, 9, 14, 5, 6, 9, 14, 15, 2, 14, 9, 15, 15, 13, 2, 13, 12, 2, 2, 12, 1, 15, 9, 13, 6, 10, 9, 6, 7, 10, 9, 11, 13, 13, 11, 12, 9, 10, 11, 12, 11, 1, 10, 7, 11, 11, 8, 1, 8, 0, 1, 11, 7, 8 ], + "vertices": [ 1, 20, 201.48, -112.61, 1, 1, 20, 153.89, -146.86, 1, 2, 20, -9.73, -146.84, 0.2016, 28, -68.89, -64.18, 0.7984, 1, 28, -113.68, -8.59, 1, 1, 28, -113.68, 36.7, 1, 2, 20, -32.08, 18.91, 0.2481, 28, -91.24, 101.58, 0.7519, 2, 20, 34.26, 78.46, 0.3488, 28, -24.89, 161.12, 0.6512, 1, 20, 154.56, 24.07, 1, 1, 20, 201.48, -110.15, 1, 1, 28, -8.19, 94.39, 1, 1, 28, 54.24, 99.56, 1, 1, 28, 71.38, -8.48, 1, 2, 20, 113.4, -134.81, 0.2403, 28, 54.24, -52.14, 0.7597, 2, 20, 41.59, -131.25, 0.2403, 28, -17.57, -48.59, 0.7597, 1, 28, -82.91, 13.52, 1, 1, 21, 0.89, 2.3, 1 ], + "hull": 9, + "edges": [ 0, 16, 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 18, 26 ], + "width": 232, + "height": 256 + } + }, + "fringe-side-back": { + "fringe-side-back": { + "type": "mesh", + "uvs": [ 1, 1, 0, 1, 0, 0.8, 0, 0.6, 0, 0.4, 0, 0.2, 0, 0, 1, 0, 1, 0.2, 1, 0.4, 1, 0.6, 1, 0.8 ], + "triangles": [ 10, 3, 9, 3, 4, 9, 9, 4, 8, 8, 5, 7, 5, 6, 7, 4, 5, 8, 0, 1, 11, 1, 2, 11, 11, 2, 10, 2, 3, 10 ], + "vertices": [ 1, 30, 219.28, 49.03, 1, 1, 30, 219.28, -18.97, 1, 2, 30, 172.48, -18.97, 0.78148, 20, -6.72, -106.78, 0.21852, 2, 30, 125.68, -18.97, 0.54452, 20, 40.08, -106.78, 0.45548, 2, 30, 78.88, -18.97, 0.28148, 20, 86.88, -106.78, 0.71852, 1, 20, 133.68, -106.78, 1, 1, 20, 180.48, -106.78, 1, 1, 20, 180.48, -174.78, 1, 1, 20, 133.68, -174.78, 1, 2, 30, 78.88, 49.03, 0.28148, 20, 86.88, -174.78, 0.71852, 2, 30, 125.68, 49.03, 0.54452, 20, 40.08, -174.78, 0.45548, 2, 30, 172.48, 49.03, 0.78148, 20, -6.72, -174.78, 0.21852 ], + "hull": 12, + "edges": [ 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 18, 20, 20, 22, 22, 0 ], + "width": 68, + "height": 234 + } + }, + "hair-hat-shadow": { + "hair-hat-shadow": { "x": 198.48, "y": 40.22, "rotation": -90, "width": 224, "height": 102 } + }, + "mouth": { + "mouth": { "x": 4.02, "y": -0.92, "rotation": -90, "width": 56, "height": 16 } + }, + "nose": { + "nose": { + "type": "mesh", + "uvs": [ 1, 1, 0, 1, 0, 0, 1, 0 ], + "triangles": [ 1, 3, 0, 1, 2, 3 ], + "vertices": [ 1, 21, -13.2, -1.48, 1, 2, 28, -46.68, -3.11, 0.4, 21, -13.2, 13.52, 0.6, 2, 28, -29.68, -3.11, 0.4, 21, 3.8, 13.52, 0.6, 1, 21, 3.8, -1.48, 1 ], + "hull": 4, + "edges": [ 0, 2, 2, 4, 4, 6, 0, 6 ], + "width": 15, + "height": 17 + } + }, + "nose-highlight": { + "nose-highlight": { + "type": "mesh", + "uvs": [ 1, 1, 0, 1, 0, 0, 1, 0 ], + "triangles": [ 1, 3, 0, 1, 2, 3 ], + "vertices": [ 2, 28, -33.68, -11.11, 0.124, 21, -0.2, 5.52, 0.876, 2, 28, -33.68, -1.11, 0.124, 21, -0.2, 15.52, 0.876, 2, 28, -22.68, -1.11, 0.124, 21, 10.8, 15.52, 0.876, 2, 28, -22.68, -11.11, 0.124, 21, 10.8, 5.52, 0.876 ], + "hull": 4, + "edges": [ 0, 2, 2, 4, 4, 6, 0, 6 ], + "width": 10, + "height": 11 + } + }, + "nose-shadow": { + "nose-shadow": { + "type": "mesh", + "uvs": [ 1, 1, 0, 1, 0, 0, 1, 0 ], + "triangles": [ 1, 2, 3, 1, 3, 0 ], + "vertices": [ 1, 21, -15.2, -5.48, 1, 2, 28, -48.68, -4.11, 0.6047, 21, -15.2, 12.52, 0.3953, 2, 28, -28.68, -4.11, 0.6047, 21, 4.8, 12.52, 0.3953, 1, 21, 4.8, -5.48, 1 ], + "hull": 4, + "edges": [ 0, 2, 2, 4, 4, 6, 0, 6 ], + "width": 18, + "height": 20 + } + }, + "pupil-back": { + "pupil-back": { "x": -2.5, "y": 1.42, "rotation": -90, "width": 25, "height": 36 } + }, + "pupil-front": { + "pupil-front": { "x": -0.07, "y": 1.72, "rotation": -90, "width": 30, "height": 44 } + }, + "hair-back-1": { + "hair-back-1": { + "type": "mesh", + "uvs": [ 1, 0.05206, 0.78167, 0.17387, 0.70445, 0.29745, 0.65078, 0.39485, 0.49669, 0.47826, 0.30981, 0.57942, 0.46147, 0.61966, 0.65876, 0.71313, 0.30967, 0.78419, 0.48938, 0.84645, 0.47689, 0.91323, 0.30103, 1, 0.21344, 1, 0.10045, 0.96739, 0.0798, 0.89237, 0.04833, 0.77797, 0, 0.60231, 0, 0.55114, 0.36021, 0.41385, 0.44814, 0.36733, 0.56438, 0.25145, 0.68422, 0.13617, 0.82577, 0, 1, 1.0E-5 ], + "triangles": [ 10, 11, 14, 14, 11, 12, 12, 13, 14, 5, 17, 18, 4, 19, 3, 3, 19, 2, 19, 20, 2, 18, 19, 4, 5, 18, 4, 14, 8, 10, 10, 8, 9, 14, 15, 8, 8, 15, 6, 15, 5, 6, 15, 16, 5, 16, 17, 5, 8, 6, 7, 0, 22, 23, 22, 0, 21, 0, 1, 21, 2, 20, 1, 20, 21, 1 ], + "vertices": [ 1, 20, 193.6, 53.22, 1, 1, 20, 100.3, 125.49, 1, 2, 20, 5.63, 151.05, 0.5115, 26, 123.22, -101.53, 0.4885, 2, 20, -68.98, 168.82, 0.3588, 26, 197.83, -119.3, 0.6412, 2, 20, -132.86, 219.82, 0.3053, 26, 261.72, -170.3, 0.6947, 3, 20, -210.35, 281.68, 0.26425, 26, 339.21, -232.16, 0.61722, 27, -129.44, -232.16, 0.11853, 3, 20, -241.18, 231.47, 0.22919, 26, 370.03, -181.96, 0.54443, 27, -98.61, -181.96, 0.22638, 3, 20, -312.77, 166.17, 0.2009, 26, 441.63, -116.65, 0.50653, 27, -27.02, -116.65, 0.29257, 3, 20, -367.21, 281.72, 0.18235, 26, 496.06, -232.2, 0.47614, 27, 27.42, -232.2, 0.3415, 3, 20, -414.9, 222.24, 0.21741, 26, 543.75, -172.72, 0.57649, 27, 75.11, -172.72, 0.2061, 3, 20, -466.05, 226.37, 0.23495, 26, 594.91, -176.85, 0.4504, 27, 126.26, -176.85, 0.31465, 3, 20, -532.52, 284.58, 0.23495, 26, 661.38, -235.06, 0.4504, 27, 192.73, -235.06, 0.31465, 3, 20, -532.52, 313.57, 0.23495, 26, 661.38, -264.05, 0.4504, 27, 192.73, -264.05, 0.31465, 3, 20, -507.54, 350.97, 0.23495, 26, 636.39, -301.46, 0.4504, 27, 167.75, -301.46, 0.31465, 3, 20, -450.07, 357.81, 0.23495, 26, 578.93, -308.29, 0.4504, 27, 110.28, -308.29, 0.31465, 3, 20, -362.45, 368.22, 0.23506, 26, 491.3, -318.71, 0.51948, 27, 22.66, -318.71, 0.24546, 3, 20, -227.89, 384.22, 0.25098, 26, 356.75, -334.7, 0.57166, 27, -111.9, -334.7, 0.17736, 3, 20, -188.7, 384.22, 0.27537, 26, 317.55, -334.7, 0.63085, 27, -151.1, -334.7, 0.09378, 2, 20, -83.53, 264.99, 0.3053, 26, 212.38, -215.47, 0.6947, 2, 20, -47.89, 235.89, 0.3588, 26, 176.75, -186.37, 0.6412, 2, 20, 40.87, 197.41, 0.49123, 26, 87.99, -147.89, 0.50877, 2, 20, 129.18, 157.75, 0.68581, 26, -0.32, -108.23, 0.31419, 1, 20, 233.48, 110.89, 1, 1, 20, 233.47, 53.22, 1 ], + "hull": 24, + "edges": [ 0, 2, 10, 12, 12, 14, 14, 16, 16, 18, 18, 20, 20, 22, 22, 24, 24, 26, 32, 34, 34, 36, 36, 38, 44, 46, 30, 32, 30, 12, 26, 28, 28, 30, 6, 8, 8, 10, 4, 6, 38, 40, 2, 4, 46, 0, 40, 42, 42, 44 ], + "width": 331, + "height": 766 + } + }, + "hair-back-2": { + "hair-back-2": { + "type": "mesh", + "uvs": [ 0.89086, 0, 0.99848, 0, 0.96651, 0.15477, 0.94381, 0.26466, 0.92222, 0.36914, 0.89845, 0.48424, 0.57735, 0.62302, 0.73413, 0.63077, 0.9883, 0.70379, 0.86085, 0.84916, 0.74336, 0.98316, 0.59619, 1, 0.37348, 1, 0.10983, 0.83684, 1.0E-5, 0.76887, 0, 0.66185, 0.06689, 0.57957, 0.28324, 0.47594, 0.49583, 0.37411, 0.59097, 0.27636, 0.69109, 0.15073, 0.80033, 0.01367, 0.54528, 0.76481 ], + "triangles": [ 22, 7, 8, 14, 15, 22, 13, 14, 22, 9, 22, 8, 9, 13, 22, 9, 12, 13, 9, 11, 12, 10, 11, 9, 4, 19, 3, 18, 19, 4, 5, 18, 4, 17, 18, 5, 6, 17, 5, 16, 17, 6, 15, 16, 6, 22, 15, 6, 22, 6, 7, 19, 20, 3, 3, 20, 2, 1, 21, 0, 2, 21, 1, 20, 21, 2 ], + "vertices": [ 1, 20, 157.48, 123.05, 1, 1, 20, 157.48, 101.53, 1, 2, 20, 47.29, 107.92, 0.70089, 26, 81.57, -58.4, 0.29911, 2, 20, -30.96, 112.46, 0.4885, 26, 159.82, -62.94, 0.5115, 2, 20, -105.35, 116.78, 0.33608, 26, 234.21, -67.26, 0.66392, 2, 20, -187.3, 121.53, 0.1832, 26, 316.15, -72.01, 0.8168, 3, 20, -286.11, 185.75, 0.1756, 26, 414.96, -136.23, 0.74597, 27, -53.68, -136.23, 0.07843, 3, 20, -291.63, 154.4, 0.1756, 26, 420.49, -104.88, 0.63052, 27, -48.16, -104.88, 0.19388, 3, 20, -343.62, 103.56, 0.1756, 26, 472.48, -54.04, 0.45922, 27, 3.83, -54.04, 0.36518, 3, 20, -447.12, 129.05, 0.1756, 26, 575.98, -79.53, 0.24092, 27, 107.33, -79.53, 0.58348, 2, 20, -542.53, 152.55, 0.1756, 27, 202.74, -103.03, 0.8244, 2, 20, -554.52, 181.98, 0.1756, 27, 214.73, -132.46, 0.8244, 2, 20, -554.52, 226.52, 0.1756, 27, 214.73, -177.01, 0.8244, 3, 20, -438.35, 279.26, 0.1756, 26, 567.2, -229.74, 0.24092, 27, 98.56, -229.74, 0.58348, 3, 20, -389.96, 301.22, 0.1756, 26, 518.81, -251.7, 0.45922, 27, 50.17, -251.7, 0.36518, 3, 20, -313.75, 301.22, 0.1756, 26, 442.61, -251.7, 0.63052, 27, -26.04, -251.7, 0.19388, 3, 20, -255.17, 287.84, 0.1756, 26, 384.03, -238.32, 0.74597, 27, -84.62, -238.32, 0.07843, 2, 20, -181.39, 244.57, 0.1832, 26, 310.24, -195.05, 0.8168, 2, 20, -108.88, 202.06, 0.33608, 26, 237.74, -152.54, 0.66392, 2, 20, -39.29, 183.03, 0.4885, 26, 168.15, -133.51, 0.5115, 2, 20, 50.16, 163, 0.6489, 26, 78.7, -113.48, 0.3511, 1, 20, 147.75, 141.16, 1, 2, 20, -387.07, 192.17, 0.1756, 27, 47.28, -142.65, 0.8244 ], + "hull": 22, + "edges": [ 0, 42, 0, 2, 10, 12, 12, 14, 14, 16, 20, 22, 22, 24, 28, 30, 30, 32, 36, 38, 6, 8, 8, 10, 32, 34, 34, 36, 24, 26, 26, 28, 16, 18, 18, 20, 38, 40, 40, 42, 2, 4, 4, 6 ], + "width": 200, + "height": 712 + } + }, + "hair-back-3": { + "hair-back-3": { + "type": "mesh", + "uvs": [ 0.84591, 0.08889, 0.82372, 0.26566, 0.80438, 0.41975, 0.94221, 0.62567, 1, 0.81672, 0.70929, 0.99918, 0.46458, 0.99803, 0.23662, 0.83671, 0, 0.66926, 0, 0.51704, 0.21223, 0.38901, 0.3832, 0.26202, 0.39154, 0.00106, 0.78531, 0.00114 ], + "triangles": [ 4, 5, 7, 5, 6, 7, 4, 7, 3, 7, 8, 3, 8, 2, 3, 2, 8, 9, 2, 9, 10, 10, 11, 2, 2, 11, 1, 1, 11, 0, 0, 12, 13, 0, 11, 12 ], + "vertices": [ 1, 20, 43.92, 49.03, 1, 3, 20, -74.51, 52.89, 0.49873, 26, 203.37, -3.37, 0.44236, 27, -265.28, -3.37, 0.05891, 3, 20, -177.75, 56.26, 0.3969, 26, 306.6, -6.74, 0.30443, 27, -162.04, -6.74, 0.29867, 3, 20, -315.72, 32.28, 0.1145, 26, 444.58, 17.24, 0.16959, 27, -24.07, 17.24, 0.71591, 2, 20, -443.72, 22.22, 0.1145, 27, 103.93, 27.3, 0.8855, 2, 20, -565.97, 72.8, 0.1145, 27, 226.18, -23.29, 0.8855, 2, 20, -565.2, 115.38, 0.1145, 27, 225.41, -65.87, 0.8855, 3, 20, -457.12, 155.05, 0.1145, 26, 585.97, -105.53, 0.04756, 27, 117.32, -105.53, 0.83794, 3, 20, -344.93, 196.22, 0.1145, 26, 473.78, -146.7, 0.53505, 27, 5.13, -146.7, 0.35045, 3, 20, -242.93, 196.22, 0.1145, 26, 371.79, -146.7, 0.63528, 27, -96.86, -146.7, 0.25022, 3, 20, -157.16, 159.29, 0.30166, 26, 286.01, -109.77, 0.5576, 27, -182.63, -109.77, 0.14074, 3, 20, -72.07, 129.55, 0.49024, 26, 200.93, -80.03, 0.47767, 27, -267.72, -80.03, 0.03208, 1, 20, 102.77, 128.09, 1, 1, 20, 102.72, 59.58, 1 ], + "hull": 14, + "edges": [ 0, 26, 6, 8, 8, 10, 10, 12, 16, 18, 18, 20, 20, 22, 22, 24, 24, 26, 12, 14, 14, 16, 14, 6, 16, 4, 6, 4, 0, 2, 2, 4 ], + "width": 174, + "height": 670 + } + }, + "hair-back-4": { + "hair-back-4": { + "type": "mesh", + "uvs": [ 0.84401, 0.30705, 0.95315, 0.49123, 0.9783, 0.6272, 1, 0.74452, 0.91116, 0.87667, 0.91728, 1, 0.62869, 1, 0.56926, 1, 0.32887, 0.88007, 0.04472, 0.7649, 0, 0.61844, 0.14237, 0.48206, 0.16865, 0.34839, 0.03769, 0.00116, 0.67304, 0.01853 ], + "triangles": [ 11, 2, 10, 2, 9, 10, 3, 9, 2, 5, 6, 4, 3, 8, 9, 4, 8, 3, 6, 7, 8, 8, 4, 6, 2, 11, 1, 11, 12, 1, 12, 0, 1, 12, 13, 14, 12, 14, 0 ], + "vertices": [ 2, 20, -118.94, -74.62, 0.3588, 26, 247.8, 124.13, 0.6412, 3, 20, -239.77, -98.52, 0.2672, 26, 368.62, 148.04, 0.3511, 27, -100.02, 148.04, 0.3817, 3, 20, -328.96, -104.03, 0.19285, 26, 457.82, 153.54, 0.32625, 27, -10.83, 153.54, 0.4809, 3, 20, -405.92, -108.78, 0.12293, 26, 534.78, 158.3, 0.37135, 27, 66.13, 158.3, 0.50573, 3, 20, -492.62, -89.32, 0.05925, 26, 621.47, 138.84, 0.1867, 27, 152.83, 138.84, 0.75405, 2, 26, 702.38, 140.18, 0, 27, 233.73, 140.18, 1, 3, 20, -573.52, -27.46, 0.0224, 26, 702.38, 76.98, 0.06577, 27, 233.73, 76.98, 0.91183, 3, 20, -573.52, -14.45, 0.05056, 26, 702.38, 63.96, 0.14653, 27, 233.73, 63.96, 0.80292, 3, 20, -494.85, 38.2, 0.08885, 26, 623.7, 11.32, 0.25335, 27, 155.06, 11.32, 0.65779, 3, 20, -419.29, 100.43, 0.19057, 26, 548.15, -50.91, 0.36714, 27, 79.5, -50.91, 0.44229, 3, 20, -323.21, 110.22, 0.2672, 26, 452.07, -60.7, 0.2519, 27, -16.58, -60.7, 0.4809, 3, 20, -233.75, 79.04, 0.2672, 26, 362.61, -29.52, 0.3511, 27, -106.04, -29.52, 0.3817, 2, 20, -146.06, 73.29, 0.3588, 26, 274.92, -23.77, 0.6412, 1, 20, 81.72, 101.97, 1, 2, 20, 70.32, -37.17, 0.99873, 26, 58.53, 86.69, 0.00127 ], + "hull": 15, + "edges": [ 12, 14, 20, 22, 22, 24, 24, 26, 26, 28, 2, 4, 4, 6, 2, 0, 0, 28, 18, 20, 14, 16, 16, 18, 8, 10, 6, 8, 10, 12 ], + "width": 219, + "height": 656 + } + }, + "hair-back-5": { + "hair-back-5": { + "type": "mesh", + "uvs": [ 0.52681, 0.0022, 0.53701, 0.13188, 0.57788, 0.19975, 0.74688, 0.40516, 0.89266, 0.58235, 1, 0.80234, 0.94757, 0.86532, 0.87274, 0.99806, 0.65652, 1, 0.49768, 0.91169, 0.26202, 0.78067, 0.35593, 0.58238, 0.25008, 0.42396, 0, 0.16031, 0, 0.12266, 0.22195, 0.00216 ], + "triangles": [ 8, 9, 7, 7, 9, 6, 6, 9, 5, 5, 9, 4, 9, 10, 4, 11, 4, 10, 11, 3, 4, 11, 12, 3, 12, 13, 2, 12, 2, 3, 15, 1, 14, 1, 15, 0, 2, 13, 1, 1, 13, 14 ], + "vertices": [ 1, 20, 168.95, -85.68, 1, 2, 20, 78.56, -87.92, 0.84015, 26, 50.29, 137.44, 0.15985, 2, 20, 31.25, -96.91, 0.67545, 26, 97.6, 146.43, 0.32455, 2, 20, -111.92, -134.09, 0.50775, 26, 240.77, 183.61, 0.49225, 2, 20, -235.42, -166.16, 0.34305, 26, 364.28, 215.68, 0.65695, 3, 20, -387.13, -190.07, 0.10437, 26, 515.98, 239.59, 0.36512, 27, 47.26, 237.59, 0.53051, 3, 20, -432.65, -178.24, 0.03859, 26, 561.5, 227.76, 0.18918, 27, 92.85, 227.76, 0.77223, 2, 26, 654.02, 211.3, 0.2137, 27, 185.38, 211.3, 0.7863, 2, 26, 655.38, 163.73, 0.2137, 27, 186.73, 163.73, 0.7863, 3, 20, -464.97, -79.27, 0.09122, 26, 593.83, 128.79, 0.40749, 27, 125.18, 128.79, 0.50129, 2, 20, -373.65, -27.42, 0.1832, 26, 502.5, 76.94, 0.8168, 2, 20, -235.44, -48.08, 0.38703, 26, 364.29, 97.6, 0.61297, 2, 20, -125.02, -24.8, 0.59141, 26, 253.87, 74.32, 0.40859, 1, 20, 58.74, 30.22, 1, 1, 20, 84.98, 30.22, 1, 1, 20, 168.97, -18.61, 1 ], + "hull": 16, + "edges": [ 0, 30, 0, 2, 2, 4, 14, 16, 20, 22, 26, 28, 28, 30, 10, 12, 12, 14, 16, 18, 18, 20, 4, 6, 6, 8, 24, 26, 22, 24, 18, 8, 8, 10 ], + "width": 220, + "height": 697 + } + }, + "hair-back-6": { + "hair-back-6": { + "type": "mesh", + "uvs": [ 0, 0.00316, 0.19789, 0.00238, 0.24097, 0.10462, 0.42784, 0.26537, 0.57522, 0.34678, 0.68888, 0.40956, 0.80549, 0.47398, 0.94785, 0.55261, 0.89923, 0.64182, 0.84246, 0.74598, 1, 0.78199, 1, 0.82207, 0.92109, 0.94159, 0.77855, 1, 0.5892, 1, 0.4989, 0.90847, 0.38858, 0.79465, 0.39143, 0.71034, 0.43093, 0.64588, 0.41659, 0.56993, 0.34767, 0.47025, 0.25898, 0.39956, 0.12664, 0.29408, 0.0176, 0.20717, 0, 0.0579, 0.6061, 0.79944 ], + "triangles": [ 12, 13, 15, 13, 14, 15, 12, 15, 11, 11, 15, 9, 15, 16, 25, 15, 25, 9, 9, 10, 11, 25, 8, 9, 25, 16, 17, 8, 25, 17, 18, 8, 17, 18, 19, 8, 8, 19, 7, 19, 6, 7, 19, 20, 6, 20, 5, 6, 5, 21, 4, 5, 20, 21, 21, 3, 4, 21, 22, 3, 22, 23, 3, 23, 2, 3, 23, 24, 2, 24, 1, 2, 24, 0, 1 ], + "vertices": [ 1, 20, 167.22, -45.78, 1, 1, 20, 167.78, -89.31, 1, 3, 20, 94.68, -98.79, 0.86501, 26, 34.18, 148.31, 0.12237, 27, -434.47, 148.31, 0.01262, 3, 20, -20.26, -139.9, 0.73484, 26, 149.11, 189.42, 0.23236, 27, -319.53, 189.42, 0.03279, 3, 20, -78.47, -172.33, 0.6136, 26, 207.32, 221.85, 0.31854, 27, -261.32, 221.85, 0.06786, 3, 20, -123.36, -197.33, 0.50408, 26, 252.21, 246.85, 0.37201, 27, -216.43, 246.85, 0.12392, 3, 20, -169.41, -222.99, 0.40753, 26, 298.27, 272.51, 0.38856, 27, -170.38, 272.51, 0.20391, 3, 20, -225.64, -254.3, 0.32386, 26, 354.49, 303.82, 0.37034, 27, -114.15, 303.82, 0.3058, 3, 20, -289.42, -243.61, 0.25215, 26, 418.27, 293.13, 0.32576, 27, -50.37, 293.13, 0.42209, 3, 20, -363.9, -231.12, 0.20172, 26, 492.75, 280.64, 0.2532, 27, 24.1, 280.64, 0.54508, 3, 20, -389.64, -265.78, 0.16128, 26, 518.5, 315.3, 0.17872, 27, 49.85, 315.3, 0.65999, 3, 20, -418.3, -265.78, 0.10469, 26, 547.16, 315.3, 0.2824, 27, 78.51, 315.3, 0.61291, 3, 20, -503.76, -248.42, 0.07948, 26, 632.61, 297.94, 0.2824, 27, 163.97, 297.94, 0.63812, 3, 20, -545.52, -217.06, 0.06028, 26, 674.38, 266.58, 0.2824, 27, 205.73, 266.58, 0.65732, 3, 20, -545.52, -175.4, 0.06028, 26, 674.38, 224.92, 0.2824, 27, 205.73, 224.92, 0.65732, 3, 20, -480.08, -155.54, 0.15387, 26, 608.93, 205.05, 0.2824, 27, 140.29, 205.05, 0.56373, 3, 20, -398.7, -131.27, 0.25129, 26, 527.55, 180.79, 0.44103, 27, 58.91, 180.79, 0.30769, 3, 20, -338.41, -131.89, 0.2923, 26, 467.27, 181.41, 0.5779, 27, -1.38, 181.41, 0.1298, 3, 20, -292.32, -140.58, 0.37144, 26, 421.18, 190.1, 0.53386, 27, -47.47, 190.1, 0.0947, 3, 20, -238.02, -137.43, 0.45068, 26, 366.88, 186.95, 0.48817, 27, -101.77, 186.95, 0.06116, 3, 20, -166.75, -122.27, 0.53005, 26, 295.6, 171.78, 0.44014, 27, -173.04, 171.78, 0.0298, 2, 20, -116.21, -102.75, 0.60953, 26, 245.06, 152.27, 0.39047, 2, 20, -40.79, -73.64, 0.72471, 26, 169.64, 123.16, 0.27529, 2, 20, 21.35, -49.65, 0.8574, 26, 107.5, 99.17, 0.1426, 1, 20, 128.08, -45.78, 1, 3, 20, -402.12, -179.12, 0.19676, 26, 530.97, 228.64, 0.26884, 27, 62.33, 228.64, 0.5344 ], + "hull": 25, + "edges": [ 0, 48, 0, 2, 2, 4, 4, 6, 18, 20, 20, 22, 22, 24, 24, 26, 26, 28, 38, 40, 46, 48, 12, 14, 10, 12, 44, 46, 40, 42, 42, 44, 6, 8, 8, 10, 36, 38, 14, 16, 16, 18, 32, 34, 34, 36, 28, 30, 30, 32, 50, 16, 18, 30 ], + "width": 220, + "height": 715 + } + }, + "feathers-back": { + "feathers-back": { + "type": "mesh", + "uvs": [ 0.99999, 0, 1, 0.33648, 0.94897, 0.50948, 0.82521, 0.929, 0.47931, 1, 0.33408, 0.78083, 0.14308, 0.49259, 0, 0.27667, 0, 0.08318, 0.4705, 0.03304, 0.78052, 0, 0.66524, 0.5216, 0.59356, 0.18309, 0.6294, 0.3623 ], + "triangles": [ 1, 10, 0, 12, 10, 1, 6, 9, 12, 6, 7, 9, 6, 12, 13, 1, 13, 12, 3, 11, 2, 5, 6, 11, 3, 4, 11, 4, 5, 11, 6, 13, 11, 11, 13, 2, 2, 13, 1, 7, 8, 9, 12, 9, 10 ], + "vertices": [ 2, 24, 96.3, -42.01, 0.6031, 23, 91.5, -153.41, 0.3969, 2, 24, 57.96, -40.97, 0.2748, 23, 56.76, -137.15, 0.7252, 2, 24, 38.4, -34.62, 0.2748, 23, 41.37, -123.52, 0.7252, 1, 23, 4.03, -90.47, 1, 1, 23, 13.42, -51.32, 1, 1, 23, 43.07, -46.92, 1, 2, 24, 42.82, 57.17, 0.2748, 23, 82.06, -41.13, 0.7252, 2, 24, 67.87, 72.8, 0.6031, 23, 111.27, -36.79, 0.3969, 2, 24, 89.92, 72.2, 0.6031, 23, 131.24, -46.15, 0.3969, 2, 24, 94.18, 18.43, 0.6031, 23, 113.68, -97.15, 0.3969, 2, 24, 96.98, -17, 0.6031, 23, 102.11, -130.75, 0.3969, 2, 24, 37.9, -2.25, 0.2748, 23, 53.83, -93.64, 0.7252, 2, 24, 76.7, 4.87, 0.6031, 23, 92.24, -102.6, 0.3969, 2, 24, 56.16, 1.34, 0.2748, 23, 72.01, -97.64, 0.7252 ], + "hull": 11, + "edges": [ 0, 2, 14, 16, 8, 10, 10, 12, 12, 14, 16, 18, 18, 20, 20, 0, 2, 4, 4, 6, 24, 26, 24, 18, 26, 22, 6, 8 ], + "width": 114, + "height": 114 + } + }, + "feathers-front": { + "feathers-front": { + "type": "mesh", + "uvs": [ 0.3388, 0, 0.54158, 0.14344, 0.74297, 0.2859, 0.85306, 0.36378, 1, 0.46773, 1, 0.60515, 0.95944, 0.81123, 0.66438, 1, 0.58726, 1, 0.56097, 0.78724, 0.54426, 0.65203, 0.40317, 0.57511, 0.19125, 0.45957, 0, 0.3553, 0, 1.0E-5, 0.75902, 0.42138, 0.75203, 0.58249, 0.74507, 0.72959, 0.79778, 0.42193, 0.78067, 0.58361 ], + "triangles": [ 19, 4, 5, 5, 17, 19, 7, 8, 9, 7, 17, 6, 17, 7, 9, 6, 17, 5, 0, 13, 14, 12, 0, 1, 12, 13, 0, 11, 12, 1, 11, 1, 2, 17, 10, 16, 17, 16, 19, 19, 18, 4, 15, 2, 3, 11, 2, 15, 15, 10, 11, 19, 15, 18, 16, 15, 19, 16, 10, 15, 9, 10, 17, 18, 15, 3, 18, 3, 4 ], + "vertices": [ 1, 25, 92.8, -22.38, 1, 2, 24, 174.08, 16.41, 0.21011, 25, 45.04, -23.75, 0.78989, 2, 24, 142.48, -18.99, 0.41348, 25, -2.4, -25.11, 0.58652, 2, 24, 125.2, -38.35, 0.5954, 23, 119.46, -161.59, 0.4046, 2, 24, 102.14, -64.18, 0.5954, 23, 88.01, -176.07, 0.4046, 2, 24, 72.6, -63.38, 0.3969, 23, 61.25, -163.54, 0.6031, 2, 24, 28.51, -54.87, 0.1298, 23, 24.22, -138.15, 0.8702, 1, 23, 9.97, -72.84, 1, 1, 23, 15.86, -60.27, 1, 2, 24, 35.62, 16.68, 0.458, 23, 59.29, -75.37, 0.542, 3, 24, 64.76, 18.9, 0.51591, 25, -28.26, 57.4, 0.2824, 23, 86.9, -84.97, 0.20169, 2, 24, 81.98, 43.84, 0.5618, 25, 1.7, 62.01, 0.4382, 2, 24, 107.85, 81.29, 0.37966, 25, 46.68, 68.95, 0.62034, 2, 24, 131.2, 115.1, 0.19036, 25, 87.29, 75.21, 0.80964, 1, 25, 138.24, 18.29, 1, 2, 24, 113.28, -21.09, 0.76701, 25, -23.98, -5.33, 0.23299, 3, 24, 78.69, -18.89, 0.55872, 25, -46.15, 21.31, 0.2824, 23, 84.58, -125.18, 0.15888, 3, 24, 47.11, -16.78, 0.28286, 25, -66.31, 45.71, 0.3824, 23, 56.47, -110.64, 0.33474, 2, 24, 112.97, -28.06, 0.5954, 23, 112.36, -147.28, 0.4046, 2, 24, 78.31, -24.04, 0.3969, 23, 82.18, -129.75, 0.6031 ], + "hull": 15, + "edges": [ 8, 10, 10, 12, 12, 14, 14, 16, 28, 0, 26, 28, 24, 26, 0, 2, 2, 4, 20, 22, 22, 24, 16, 18, 18, 20, 4, 6, 6, 8 ], + "width": 180, + "height": 215 + } + }, + "hat-back": { + "hat-back": { + "type": "mesh", + "uvs": [ 1, 1, 0, 1, 0, 0, 1, 0 ], + "triangles": [ 1, 3, 0, 1, 2, 3 ], + "vertices": [ 1, 23, -51.19, -50.19, 1, 2, 22, 56.23, -21.15, 0.2791, 23, 16.22, 93.82, 0.7209, 2, 22, 168.23, -21.15, 0.2791, 23, 117.65, 46.34, 0.7209, 1, 23, 50.25, -97.67, 1 ], + "hull": 4, + "edges": [ 0, 2, 2, 4, 4, 6, 0, 6 ], + "width": 159, + "height": 112 + } + }, + "hat-front": { + "hat-front": { + "type": "mesh", + "uvs": [ 1, 1, 0, 1, 0, 0, 1, 0 ], + "triangles": [ 1, 2, 3, 1, 3, 0 ], + "vertices": [ 2, 28, 83.32, -0.11, 0.1628, 23, -118.89, -79.23, 0.8372, 2, 22, 7.23, 5.85, 0.2636, 23, -16.72, 139.05, 0.7364, 2, 22, 147.23, 5.85, 0.2636, 23, 110.08, 79.69, 0.7364, 2, 28, 223.32, -0.11, 0.1628, 23, 7.91, -138.58, 0.8372 ], + "hull": 4, + "edges": [ 0, 2, 2, 4, 4, 6, 0, 6 ], + "width": 241, + "height": 140 + } + }, + "star1": { + "star-big": { "width": 44, "height": 60 }, + "star-medium": { "width": 14, "height": 20 }, + "star-small": { "width": 8, "height": 11 } + }, + "star2": { + "star-big": { "width": 44, "height": 60 }, + "star-medium": { "width": 14, "height": 20 }, + "star-small": { "width": 8, "height": 11 } + }, + "star3": { + "star-big": { "width": 44, "height": 60 }, + "star-medium": { "width": 14, "height": 20 }, + "star-small": { "width": 8, "height": 11 } + }, + "star4": { + "star-big": { "width": 44, "height": 60 }, + "star-medium": { "width": 14, "height": 20 }, + "star-small": { "width": 8, "height": 11 } + }, + "star5": { + "star-big": { "width": 44, "height": 60 }, + "star-medium": { "width": 14, "height": 20 }, + "star-small": { "width": 8, "height": 11 } + }, + "star6": { + "star-big": { "width": 44, "height": 60 }, + "star-medium": { "width": 14, "height": 20 }, + "star-small": { "width": 8, "height": 11 } + } + } + } +], +"animations": { + "eyeblink": { + "bones": { + "eyelashes-top-front": { + "translate": [ + { + "curve": [ 0.061, 0, 0.071, -26.84, 0.029, 0, 0.071, 0 ] + }, + { + "time": 0.1, + "x": -26.84, + "curve": [ 0.282, -26.84, 0.244, 0, 0.183, 0, 0.25, 0 ] + }, + { "time": 0.3333 } + ] + }, + "eyelashes-top-back": { + "translate": [ + { + "curve": [ 0.061, 0, 0.071, -22.55, 0.029, 0, 0.071, 0 ] + }, + { + "time": 0.1, + "x": -22.55, + "curve": [ 0.282, -22.55, 0.244, 0, 0.183, 0, 0.25, 0 ] + }, + { "time": 0.3333 } + ] + }, + "eyelashes-down-front": { + "translate": [ + { + "curve": [ 0.061, 0, 0.071, 12.12, 0.029, 0, 0.071, 0 ] + }, + { + "time": 0.1, + "x": 12.12, + "curve": [ 0.282, 12.12, 0.244, 0, 0.183, 0, 0.25, 0 ] + }, + { "time": 0.3333 } + ] + }, + "eyelashes-down-back": { + "translate": [ + { + "curve": [ 0.061, 0, 0.071, 10.12, 0.029, 0, 0.071, 0 ] + }, + { + "time": 0.1, + "x": 10.12, + "curve": [ 0.282, 10.12, 0.244, 0, 0.183, 0, 0.25, 0 ] + }, + { "time": 0.3333 } + ] + }, + "pupil-front": { + "translate": [ + { + "curve": [ 0.061, 0, 0.071, -6.11, 0.029, 0, 0.071, 0 ] + }, + { + "time": 0.1, + "x": -6.11, + "curve": [ 0.282, -6.11, 0.244, 0, 0.183, 0, 0.25, 0 ] + }, + { "time": 0.3333 } + ], + "scale": [ + { + "curve": [ 0.061, 1, 0.071, 0.152, 0.029, 1, 0.071, 1 ] + }, + { + "time": 0.1, + "x": 0.152, + "curve": [ 0.282, 0.152, 0.244, 1, 0.183, 1, 0.25, 1 ] + }, + { "time": 0.3333 } + ] + }, + "pupil-back": { + "translate": [ + { + "curve": [ 0.061, 0, 0.071, -6.11, 0.029, 0, 0.071, 0 ] + }, + { + "time": 0.1, + "x": -6.11, + "curve": [ 0.282, -6.11, 0.244, 0, 0.183, 0, 0.25, 0 ] + }, + { "time": 0.3333 } + ], + "scale": [ + { + "curve": [ 0.061, 1, 0.071, 0.152, 0.029, 1, 0.071, 1 ] + }, + { + "time": 0.1, + "x": 0.152, + "curve": [ 0.282, 0.152, 0.244, 1, 0.183, 1, 0.25, 1 ] + }, + { "time": 0.3333 } + ] + } + } + }, + "eyeblink-long": { + "bones": { + "eyelashes-top-front": { + "translate": [ + { + "curve": [ 0.06, 0, 0.071, -26.84, 0.029, 0, 0.071, 0 ] + }, + { + "time": 0.1, + "x": -26.84, + "curve": [ 0.278, -26.84, 0.246, 0, 0.182, 0, 0.252, 0 ] + }, + { "time": 0.3333, "curve": "stepped" }, + { "time": 4.7 } + ] + }, + "eyelashes-top-back": { + "translate": [ + { + "curve": [ 0.06, 0, 0.071, -22.55, 0.029, 0, 0.071, 0 ] + }, + { + "time": 0.1, + "x": -22.55, + "curve": [ 0.278, -22.55, 0.246, 0, 0.182, 0, 0.252, 0 ] + }, + { "time": 0.3333 } + ] + }, + "eyelashes-down-front": { + "translate": [ + { + "curve": [ 0.06, 0, 0.071, 12.12, 0.029, 0, 0.071, 0 ] + }, + { + "time": 0.1, + "x": 12.12, + "curve": [ 0.278, 12.12, 0.246, 0, 0.182, 0, 0.252, 0 ] + }, + { "time": 0.3333 } + ] + }, + "eyelashes-down-back": { + "translate": [ + { + "curve": [ 0.06, 0, 0.071, 10.12, 0.029, 0, 0.071, 0 ] + }, + { + "time": 0.1, + "x": 10.12, + "curve": [ 0.278, 10.12, 0.246, 0, 0.182, 0, 0.252, 0 ] + }, + { "time": 0.3333 } + ] + }, + "pupil-front": { + "translate": [ + { + "curve": [ 0.06, 0, 0.071, -6.11, 0.029, 0, 0.071, 0 ] + }, + { + "time": 0.1, + "x": -6.11, + "curve": [ 0.278, -6.11, 0.246, 0, 0.182, 0, 0.252, 0 ] + }, + { "time": 0.3333 } + ], + "scale": [ + { + "curve": [ 0.06, 1, 0.071, 0.152, 0.029, 1, 0.071, 1 ] + }, + { + "time": 0.1, + "x": 0.152, + "curve": [ 0.278, 0.152, 0.246, 1, 0.182, 1, 0.252, 1 ] + }, + { "time": 0.3333 } + ] + }, + "pupil-back": { + "translate": [ + { + "curve": [ 0.06, 0, 0.071, -6.11, 0.029, 0, 0.071, 0 ] + }, + { + "time": 0.1, + "x": -6.11, + "curve": [ 0.278, -6.11, 0.246, 0, 0.182, 0, 0.252, 0 ] + }, + { "time": 0.3333 } + ], + "scale": [ + { + "curve": [ 0.06, 1, 0.071, 0.152, 0.029, 1, 0.071, 1 ] + }, + { + "time": 0.1, + "x": 0.152, + "curve": [ 0.278, 0.152, 0.246, 1, 0.182, 1, 0.252, 1 ] + }, + { "time": 0.3333 } + ] + } + } + }, + "stars": { + "slots": { + "star1": { + "attachment": [ + { "time": 0.0667, "name": "star-small" }, + { "time": 0.1333, "name": "star-medium" }, + { "time": 0.2, "name": "star-big" }, + { "time": 0.2667, "name": "star-medium" }, + { "time": 0.3333, "name": "star-small" }, + { "time": 0.4 } + ] + }, + "star2": { + "attachment": [ + { "time": 0.0667, "name": "star-small" }, + { "time": 0.1333, "name": "star-medium" }, + { "time": 0.2, "name": "star-big" }, + { "time": 0.2667, "name": "star-medium" }, + { "time": 0.3333, "name": "star-small" }, + { "time": 0.4 } + ] + }, + "star3": { + "attachment": [ + { "time": 0.0667, "name": "star-small" }, + { "time": 0.1333, "name": "star-medium" }, + { "time": 0.2, "name": "star-big" }, + { "time": 0.2667, "name": "star-medium" }, + { "time": 0.3333, "name": "star-small" }, + { "time": 0.4 } + ] + }, + "star4": { + "attachment": [ + { "time": 0.4, "name": "star-small" }, + { "time": 0.4667, "name": "star-medium" }, + { "time": 0.5333, "name": "star-big" }, + { "time": 0.6, "name": "star-medium" }, + { "time": 0.6667, "name": "star-small" }, + { "time": 0.7333 } + ] + }, + "star5": { + "attachment": [ + { "time": 0.1667, "name": "star-small" }, + { "time": 0.2333, "name": "star-medium" }, + { "time": 0.3, "name": "star-big" }, + { "time": 0.3667, "name": "star-medium" }, + { "time": 0.4333, "name": "star-small" }, + { "time": 0.5 } + ] + }, + "star6": { + "attachment": [ + { "time": 0.4, "name": "star-small" }, + { "time": 0.4667, "name": "star-medium" }, + { "time": 0.5333, "name": "star-big" }, + { "time": 0.6, "name": "star-medium" }, + { "time": 0.6667, "name": "star-small" }, + { "time": 0.7333 } + ] + } + } + }, + "swing": { + "slots": { + "star1": { + "attachment": [ + { "time": 0.0667, "name": "star-small" }, + { "time": 0.1333, "name": "star-medium" }, + { "time": 0.2, "name": "star-big" }, + { "time": 0.2667, "name": "star-medium" }, + { "time": 0.3333, "name": "star-small" }, + { "time": 0.4 }, + { "time": 0.8, "name": "star-small" }, + { "time": 0.8667, "name": "star-medium" }, + { "time": 0.9333, "name": "star-big" }, + { "time": 1, "name": "star-medium" }, + { "time": 1.0667, "name": "star-small" }, + { "time": 1.1333 }, + { "time": 1.5333, "name": "star-small" }, + { "time": 1.6, "name": "star-medium" }, + { "time": 1.6667, "name": "star-big" }, + { "time": 1.7333, "name": "star-medium" }, + { "time": 1.8, "name": "star-small" }, + { "time": 1.8667 } + ] + }, + "star2": { + "attachment": [ + { "time": 0.0667, "name": "star-small" }, + { "time": 0.1333, "name": "star-medium" }, + { "time": 0.2, "name": "star-big" }, + { "time": 0.2667, "name": "star-medium" }, + { "time": 0.3333, "name": "star-small" }, + { "time": 0.4 }, + { "time": 0.8, "name": "star-small" }, + { "time": 0.8667, "name": "star-medium" }, + { "time": 0.9333, "name": "star-big" }, + { "time": 1, "name": "star-medium" }, + { "time": 1.0667, "name": "star-small" }, + { "time": 1.1333 }, + { "time": 1.5333, "name": "star-small" }, + { "time": 1.6, "name": "star-medium" }, + { "time": 1.6667, "name": "star-big" }, + { "time": 1.7333, "name": "star-medium" }, + { "time": 1.8, "name": "star-small" }, + { "time": 1.8667 } + ] + }, + "star3": { + "attachment": [ + { "time": 0.0667, "name": "star-small" }, + { "time": 0.1333, "name": "star-medium" }, + { "time": 0.2, "name": "star-big" }, + { "time": 0.2667, "name": "star-medium" }, + { "time": 0.3333, "name": "star-small" }, + { "time": 0.4 }, + { "time": 0.8, "name": "star-small" }, + { "time": 0.8667, "name": "star-medium" }, + { "time": 0.9333, "name": "star-big" }, + { "time": 1, "name": "star-medium" }, + { "time": 1.0667, "name": "star-small" }, + { "time": 1.1333 }, + { "time": 1.5333, "name": "star-small" }, + { "time": 1.6, "name": "star-medium" }, + { "time": 1.6667, "name": "star-big" }, + { "time": 1.7333, "name": "star-medium" }, + { "time": 1.8, "name": "star-small" }, + { "time": 1.8667 } + ] + }, + "star4": { + "attachment": [ + { "time": 0.4, "name": "star-small" }, + { "time": 0.4667, "name": "star-medium" }, + { "time": 0.5333, "name": "star-big" }, + { "time": 0.6, "name": "star-medium" }, + { "time": 0.6667, "name": "star-small" }, + { "time": 0.7333 }, + { "time": 1.1333, "name": "star-small" }, + { "time": 1.2, "name": "star-medium" }, + { "time": 1.2667, "name": "star-big" }, + { "time": 1.3333, "name": "star-medium" }, + { "time": 1.4, "name": "star-small" }, + { "time": 1.4667 }, + { "time": 1.8667, "name": "star-small" }, + { "time": 1.9333, "name": "star-medium" }, + { "time": 2, "name": "star-big" }, + { "time": 2.0667, "name": "star-medium" }, + { "time": 2.1333, "name": "star-small" }, + { "time": 2.2 } + ] + }, + "star5": { + "attachment": [ + { "time": 0.1667, "name": "star-small" }, + { "time": 0.2333, "name": "star-medium" }, + { "time": 0.3, "name": "star-big" }, + { "time": 0.3667, "name": "star-medium" }, + { "time": 0.4333, "name": "star-small" }, + { "time": 0.5 }, + { "time": 0.9, "name": "star-small" }, + { "time": 0.9667, "name": "star-medium" }, + { "time": 1.0333, "name": "star-big" }, + { "time": 1.1, "name": "star-medium" }, + { "time": 1.1667, "name": "star-small" }, + { "time": 1.2333 }, + { "time": 1.6333, "name": "star-small" }, + { "time": 1.7, "name": "star-medium" }, + { "time": 1.7667, "name": "star-big" }, + { "time": 1.8333, "name": "star-medium" }, + { "time": 1.9, "name": "star-small" }, + { "time": 1.9667 } + ] + }, + "star6": { + "attachment": [ + { "time": 0.4, "name": "star-small" }, + { "time": 0.4667, "name": "star-medium" }, + { "time": 0.5333, "name": "star-big" }, + { "time": 0.6, "name": "star-medium" }, + { "time": 0.6667, "name": "star-small" }, + { "time": 0.7333 }, + { "time": 1.1333, "name": "star-small" }, + { "time": 1.2, "name": "star-medium" }, + { "time": 1.2667, "name": "star-big" }, + { "time": 1.3333, "name": "star-medium" }, + { "time": 1.4, "name": "star-small" }, + { "time": 1.4667 }, + { "time": 1.8667, "name": "star-small" }, + { "time": 1.9333, "name": "star-medium" }, + { "time": 2, "name": "star-big" }, + { "time": 2.0667, "name": "star-medium" }, + { "time": 2.1333, "name": "star-small" }, + { "time": 2.2 } + ] + } + }, + "bones": { + "swing-top": { + "rotate": [ + { + "value": -13.18, + "curve": [ 0.607, -13.18, 0.733, 15.86 ] + }, + { + "time": 1.1, + "value": 15.86, + "curve": [ 1.707, 15.86, 1.833, -13.18 ] + }, + { "time": 2.2, "value": -13.18 } + ] + }, + "swing-bottom": { + "rotate": [ + { + "value": 0.37, + "curve": [ 0.145, -6.53, 0.258, -13.18 ] + }, + { + "time": 0.4333, + "value": -13.18, + "curve": [ 1.04, -13.18, 1.166, 15.86 ] + }, + { + "time": 1.5333, + "value": 15.86, + "curve": [ 1.851, 15.86, 2.043, 7.96 ] + }, + { "time": 2.2, "value": 0.37 } + ] + }, + "body-up": { + "rotate": [ + { + "value": 11.88, + "curve": [ 0.368, 11.88, 0.732, -7.09 ] + }, + { + "time": 1.1, + "value": -7.09, + "curve": [ 1.468, -7.09, 1.832, 11.88 ] + }, + { "time": 2.2, "value": 11.88 } + ] + }, + "neck": { + "rotate": [ + { + "value": -14.54, + "curve": [ 0.357, -14.54, 0.709, 16.44 ] + }, + { + "time": 1.0667, + "value": 16.44, + "curve": [ 1.445, 16.44, 1.822, -14.54 ] + }, + { "time": 2.2, "value": -14.54 } + ] + }, + "face-control": { + "translate": [ + { "y": 14.53 }, + { "time": 1.0333, "x": -1.18, "y": -10.95 }, + { "time": 2.2, "y": 14.53 } + ] + }, + "pupil-front": { + "translate": [ + {}, + { "time": 1.1, "x": -7.23, "y": -2.49 }, + { "time": 2.2 } + ] + }, + "pupil-back": { + "translate": [ + {}, + { "time": 1.1, "x": -7.23, "y": -2.49 }, + { "time": 2.2 } + ] + }, + "eyelashes-top-front": { + "translate": [ + {}, + { "time": 1, "x": -7.38 }, + { "time": 2.2 } + ] + }, + "eyelashes-top-back": { + "translate": [ + {}, + { "time": 1, "x": -7.38 }, + { "time": 2.2 } + ] + }, + "mouth": { + "scale": [ + {}, + { "time": 0.9333, "x": 0.848, "y": 1.067 }, + { "time": 2.2 } + ] + }, + "face": { + "translate": [ + {}, + { "time": 0.6667, "x": -13.93, "y": -16.25 }, + { "time": 1.6, "x": 5.02, "y": -6.3 }, + { "time": 2.2 } + ] + }, + "wing-front-tip": { + "rotate": [ + { + "value": -5.65, + "curve": [ 0.148, -14.43, 0.293, -30.34 ] + }, + { + "time": 0.4667, + "value": -30.34, + "curve": [ 0.661, -30.34, 0.822, -11.79 ] + }, + { "time": 1 }, + { + "time": 1.5, + "value": 33.17, + "curve": [ 1.691, 33.17, 1.864, 0 ] + }, + { + "time": 2.0333, + "curve": [ 2.091, 0, 2.146, -2.29 ] + }, + { "time": 2.2, "value": -5.65 } + ] + }, + "wing-front": { + "rotate": [ + { "value": -28.71 }, + { "time": 1, "value": 12.5 }, + { "time": 2.2, "value": -28.71 } + ], + "scale": [ + { "y": 0.497 }, + { "time": 1 }, + { "time": 2.2, "y": 0.497 } + ] + }, + "wing-back": { + "rotate": [ + { + "value": 31.82, + "curve": [ 0.359, 31.82, 0.667, 15.27 ] + }, + { + "time": 1, + "value": 15.27, + "curve": [ 1.37, 15.27, 1.83, 31.82 ] + }, + { "time": 2.2, "value": 31.82 } + ], + "scale": [ + { + "x": 1.248, + "y": 0.376, + "curve": [ 0.359, 1.248, 0.667, 1, 0.359, 0.376, 0.667, 1 ] + }, + { + "time": 1, + "curve": [ 1.37, 1, 1.83, 1.248, 1.37, 1, 1.83, 0.376 ] + }, + { "time": 2.2, "x": 1.248, "y": 0.376 } + ] + }, + "wing-back-tip": { + "rotate": [ + { + "value": 3.37, + "curve": [ 0.148, 8.61, 0.293, 18.1 ] + }, + { + "time": 0.4667, + "value": 18.1, + "curve": [ 0.661, 18.1, 0.822, 10.98 ] + }, + { "time": 1 }, + { "time": 1.5667, "value": 11.59 }, + { "time": 2.2, "value": 3.37 } + ], + "scale": [ + { + "x": 1.122, + "curve": [ 0.157, 1.173, 0.295, 1.246, 0.157, 1, 0.295, 1 ] + }, + { + "time": 0.4667, + "x": 1.222, + "curve": [ 0.647, 1.198, 0.822, 0.499, 0.647, 1, 0.822, 1 ] + }, + { + "time": 1, + "x": 0.499, + "curve": [ 1.175, 0.499, 2.151, 1.105, 1.175, 1, 2.151, 1 ] + }, + { "time": 2.2, "x": 1.122 } + ] + }, + "cloud": { + "rotate": [ + { + "value": -0.49, + "curve": [ 0.135, -1.47, 0.268, -2.39 ] + }, + { + "time": 0.4, + "value": -2.78, + "curve": [ 0.445, -2.91, 0.489, -3 ] + }, + { + "time": 0.5333, + "value": -3, + "curve": [ 0.867, -3, 1.2, 3 ] + }, + { + "time": 1.5333, + "value": 3, + "curve": [ 1.756, 3, 1.98, 1.16 ] + }, + { "time": 2.2, "value": -0.49 } + ], + "translate": [ + { + "x": -150, + "curve": [ 0.557, -150, 0.55, 146.39, 0.333, 0, 0.667, 0 ] + }, + { + "time": 1, + "x": 150, + "curve": [ 1.668, 155.35, 1.8, -150, 1.4, 0, 1.8, 0 ] + }, + { "time": 2.2, "x": -150 } + ] + }, + "rope-back": { + "translate": [ + {}, + { "time": 1, "y": -1.11 }, + { "time": 2.2 } + ] + }, + "bench-front": { + "translate": [ + {}, + { "time": 1, "y": 120.63 }, + { "time": 2.2 } + ] + }, + "bench-back": { + "translate": [ + {}, + { "time": 1, "x": -11.37 }, + { "time": 2.2 } + ] + }, + "rope-front": { + "translate": [ + {}, + { "time": 1, "y": 91.13 }, + { "time": 2.2 } + ] + } + } + }, + "wind-idle": { + "slots": { + "star1": { + "attachment": [ + { "time": 0.1333, "name": "star-small" }, + { "time": 0.2667, "name": "star-medium" }, + { "time": 0.4, "name": "star-big" }, + { "time": 0.5, "name": "star-medium" }, + { "time": 0.6333, "name": "star-small" }, + { "time": 0.7667 }, + { "time": 1.6667, "name": "star-small" }, + { "time": 1.7333, "name": "star-medium" }, + { "time": 1.8, "name": "star-big" }, + { "time": 1.8667, "name": "star-medium" }, + { "time": 1.9333, "name": "star-small" }, + { "time": 2 }, + { "time": 2.4667, "name": "star-small" }, + { "time": 2.5333, "name": "star-medium" }, + { "time": 2.5667, "name": "star-big" }, + { "time": 2.6333, "name": "star-medium" }, + { "time": 2.7, "name": "star-small" }, + { "time": 2.7667 }, + { "time": 3.4, "name": "star-small" }, + { "time": 3.5333, "name": "star-medium" }, + { "time": 3.6333, "name": "star-big" }, + { "time": 3.7667, "name": "star-medium" }, + { "time": 3.9, "name": "star-small" }, + { "time": 4.0333 }, + { "time": 4.9333, "name": "star-small" }, + { "time": 5, "name": "star-medium" }, + { "time": 5.0667, "name": "star-big" }, + { "time": 5.1333, "name": "star-medium" }, + { "time": 5.2, "name": "star-small" }, + { "time": 5.2667 }, + { "time": 5.7, "name": "star-small" }, + { "time": 5.7667, "name": "star-medium" }, + { "time": 5.8333, "name": "star-big" }, + { "time": 5.9, "name": "star-medium" }, + { "time": 5.9667, "name": "star-small" }, + { "time": 6.0333 }, + { "time": 6.6333, "name": "star-small" }, + { "time": 6.7333, "name": "star-medium" }, + { "time": 6.8667, "name": "star-big" }, + { "time": 7, "name": "star-medium" }, + { "time": 7.1333, "name": "star-small" }, + { "time": 7.2667 }, + { "time": 8.1667, "name": "star-small" }, + { "time": 8.2333, "name": "star-medium" }, + { "time": 8.3, "name": "star-big" }, + { "time": 8.3667, "name": "star-medium" }, + { "time": 8.4333, "name": "star-small" }, + { "time": 8.5 }, + { "time": 8.9333, "name": "star-small" }, + { "time": 9, "name": "star-medium" }, + { "time": 9.0667, "name": "star-big" }, + { "time": 9.1333, "name": "star-medium" }, + { "time": 9.2, "name": "star-small" }, + { "time": 9.2667 } + ] + }, + "star2": { + "attachment": [ + { "time": 0.1333, "name": "star-small" }, + { "time": 0.2667, "name": "star-medium" }, + { "time": 0.4, "name": "star-big" }, + { "time": 0.5, "name": "star-medium" }, + { "time": 0.6333, "name": "star-small" }, + { "time": 0.7667 }, + { "time": 1.6667, "name": "star-small" }, + { "time": 1.7333, "name": "star-medium" }, + { "time": 1.8, "name": "star-big" }, + { "time": 1.8667, "name": "star-medium" }, + { "time": 1.9333, "name": "star-small" }, + { "time": 2 }, + { "time": 2.4667, "name": "star-small" }, + { "time": 2.5333, "name": "star-medium" }, + { "time": 2.5667, "name": "star-big" }, + { "time": 2.6333, "name": "star-medium" }, + { "time": 2.7, "name": "star-small" }, + { "time": 2.7667 }, + { "time": 3.4, "name": "star-small" }, + { "time": 3.5333, "name": "star-medium" }, + { "time": 3.6333, "name": "star-big" }, + { "time": 3.7667, "name": "star-medium" }, + { "time": 3.9, "name": "star-small" }, + { "time": 4.0333 }, + { "time": 4.9333, "name": "star-small" }, + { "time": 5, "name": "star-medium" }, + { "time": 5.0667, "name": "star-big" }, + { "time": 5.1333, "name": "star-medium" }, + { "time": 5.2, "name": "star-small" }, + { "time": 5.2667 }, + { "time": 5.7, "name": "star-small" }, + { "time": 5.7667, "name": "star-medium" }, + { "time": 5.8333, "name": "star-big" }, + { "time": 5.9, "name": "star-medium" }, + { "time": 5.9667, "name": "star-small" }, + { "time": 6.0333 }, + { "time": 6.6333, "name": "star-small" }, + { "time": 6.7333, "name": "star-medium" }, + { "time": 6.8667, "name": "star-big" }, + { "time": 7, "name": "star-medium" }, + { "time": 7.1333, "name": "star-small" }, + { "time": 7.2667 }, + { "time": 8.1667, "name": "star-small" }, + { "time": 8.2333, "name": "star-medium" }, + { "time": 8.3, "name": "star-big" }, + { "time": 8.3667, "name": "star-medium" }, + { "time": 8.4333, "name": "star-small" }, + { "time": 8.5 }, + { "time": 8.9333, "name": "star-small" }, + { "time": 9, "name": "star-medium" }, + { "time": 9.0667, "name": "star-big" }, + { "time": 9.1333, "name": "star-medium" }, + { "time": 9.2, "name": "star-small" }, + { "time": 9.2667 } + ] + }, + "star3": { + "attachment": [ + { "time": 0.1333, "name": "star-small" }, + { "time": 0.2667, "name": "star-medium" }, + { "time": 0.4, "name": "star-big" }, + { "time": 0.5, "name": "star-medium" }, + { "time": 0.6333, "name": "star-small" }, + { "time": 0.7667 }, + { "time": 1.6667, "name": "star-small" }, + { "time": 1.7333, "name": "star-medium" }, + { "time": 1.8, "name": "star-big" }, + { "time": 1.8667, "name": "star-medium" }, + { "time": 1.9333, "name": "star-small" }, + { "time": 2 }, + { "time": 2.4667, "name": "star-small" }, + { "time": 2.5333, "name": "star-medium" }, + { "time": 2.5667, "name": "star-big" }, + { "time": 2.6333, "name": "star-medium" }, + { "time": 2.7, "name": "star-small" }, + { "time": 2.7667 }, + { "time": 3.4, "name": "star-small" }, + { "time": 3.5333, "name": "star-medium" }, + { "time": 3.6333, "name": "star-big" }, + { "time": 3.7667, "name": "star-medium" }, + { "time": 3.9, "name": "star-small" }, + { "time": 4.0333 }, + { "time": 4.9333, "name": "star-small" }, + { "time": 5, "name": "star-medium" }, + { "time": 5.0667, "name": "star-big" }, + { "time": 5.1333, "name": "star-medium" }, + { "time": 5.2, "name": "star-small" }, + { "time": 5.2667 }, + { "time": 5.7, "name": "star-small" }, + { "time": 5.7667, "name": "star-medium" }, + { "time": 5.8333, "name": "star-big" }, + { "time": 5.9, "name": "star-medium" }, + { "time": 5.9667, "name": "star-small" }, + { "time": 6.0333 }, + { "time": 6.6333, "name": "star-small" }, + { "time": 6.7333, "name": "star-medium" }, + { "time": 6.8667, "name": "star-big" }, + { "time": 7, "name": "star-medium" }, + { "time": 7.1333, "name": "star-small" }, + { "time": 7.2667 }, + { "time": 8.1667, "name": "star-small" }, + { "time": 8.2333, "name": "star-medium" }, + { "time": 8.3, "name": "star-big" }, + { "time": 8.3667, "name": "star-medium" }, + { "time": 8.4333, "name": "star-small" }, + { "time": 8.5 }, + { "time": 8.9333, "name": "star-small" }, + { "time": 9, "name": "star-medium" }, + { "time": 9.0667, "name": "star-big" }, + { "time": 9.1333, "name": "star-medium" }, + { "time": 9.2, "name": "star-small" }, + { "time": 9.2667 } + ] + }, + "star4": { + "attachment": [ + { "time": 0.7667, "name": "star-small" }, + { "time": 0.9, "name": "star-medium" }, + { "time": 1.0333, "name": "star-big" }, + { "time": 1.1667, "name": "star-medium" }, + { "time": 1.2667, "name": "star-small" }, + { "time": 1.4 }, + { "time": 2, "name": "star-small" }, + { "time": 2.0667, "name": "star-medium" }, + { "time": 2.1333, "name": "star-big" }, + { "time": 2.2, "name": "star-medium" }, + { "time": 2.2667, "name": "star-small" }, + { "time": 2.3333 }, + { "time": 2.7667, "name": "star-small" }, + { "time": 2.8333, "name": "star-medium" }, + { "time": 2.9, "name": "star-big" }, + { "time": 2.9667, "name": "star-medium" }, + { "time": 3.0333, "name": "star-small" }, + { "time": 3.1 }, + { "time": 4.0333, "name": "star-small" }, + { "time": 4.1667, "name": "star-medium" }, + { "time": 4.3, "name": "star-big" }, + { "time": 4.4333, "name": "star-medium" }, + { "time": 4.5333, "name": "star-small" }, + { "time": 4.6333 }, + { "time": 5.2667, "name": "star-small" }, + { "time": 5.3333, "name": "star-medium" }, + { "time": 5.4, "name": "star-big" }, + { "time": 5.4667, "name": "star-medium" }, + { "time": 5.5333, "name": "star-small" }, + { "time": 5.6 }, + { "time": 6.0333, "name": "star-small" }, + { "time": 6.1, "name": "star-medium" }, + { "time": 6.1667, "name": "star-big" }, + { "time": 6.2333, "name": "star-medium" }, + { "time": 6.3, "name": "star-small" }, + { "time": 6.3667 }, + { "time": 7.2667, "name": "star-small" }, + { "time": 7.4, "name": "star-medium" }, + { "time": 7.5333, "name": "star-big" }, + { "time": 7.6667, "name": "star-medium" }, + { "time": 7.7333, "name": "star-small" }, + { "time": 7.8667 }, + { "time": 8.5, "name": "star-small" }, + { "time": 8.5667, "name": "star-medium" }, + { "time": 8.6333, "name": "star-big" }, + { "time": 8.7, "name": "star-medium" }, + { "time": 8.7333, "name": "star-small" }, + { "time": 8.8 }, + { "time": 9.2667, "name": "star-small" }, + { "time": 9.3333, "name": "star-medium" }, + { "time": 9.4, "name": "star-big" }, + { "time": 9.4667, "name": "star-medium" }, + { "time": 9.5333, "name": "star-small" }, + { "time": 9.6 } + ] + }, + "star5": { + "attachment": [ + { "time": 0.3333, "name": "star-small" }, + { "time": 0.4667, "name": "star-medium" }, + { "time": 0.5667, "name": "star-big" }, + { "time": 0.7, "name": "star-medium" }, + { "time": 0.8333, "name": "star-small" }, + { "time": 0.9667 }, + { "time": 1.7667, "name": "star-small" }, + { "time": 1.8333, "name": "star-medium" }, + { "time": 1.9, "name": "star-big" }, + { "time": 1.9667, "name": "star-medium" }, + { "time": 2.0333, "name": "star-small" }, + { "time": 2.1 }, + { "time": 2.5667, "name": "star-small" }, + { "time": 2.6, "name": "star-medium" }, + { "time": 2.6667, "name": "star-big" }, + { "time": 2.7333, "name": "star-medium" }, + { "time": 2.8, "name": "star-small" }, + { "time": 2.8667 }, + { "time": 3.6, "name": "star-small" }, + { "time": 3.7, "name": "star-medium" }, + { "time": 3.8333, "name": "star-big" }, + { "time": 3.9667, "name": "star-medium" }, + { "time": 4.1, "name": "star-small" }, + { "time": 4.2333 }, + { "time": 5.0333, "name": "star-small" }, + { "time": 5.1, "name": "star-medium" }, + { "time": 5.1667, "name": "star-big" }, + { "time": 5.2333, "name": "star-medium" }, + { "time": 5.3, "name": "star-small" }, + { "time": 5.3667 }, + { "time": 5.8, "name": "star-small" }, + { "time": 5.8667, "name": "star-medium" }, + { "time": 5.9333, "name": "star-big" }, + { "time": 6, "name": "star-medium" }, + { "time": 6.0667, "name": "star-small" }, + { "time": 6.1333 }, + { "time": 6.8, "name": "star-small" }, + { "time": 6.9333, "name": "star-medium" }, + { "time": 7.0667, "name": "star-big" }, + { "time": 7.2, "name": "star-medium" }, + { "time": 7.3333, "name": "star-small" }, + { "time": 7.4667 }, + { "time": 8.2667, "name": "star-small" }, + { "time": 8.3333, "name": "star-medium" }, + { "time": 8.4, "name": "star-big" }, + { "time": 8.4667, "name": "star-medium" }, + { "time": 8.5333, "name": "star-small" }, + { "time": 8.6 }, + { "time": 9.0333, "name": "star-small" }, + { "time": 9.1, "name": "star-medium" }, + { "time": 9.1667, "name": "star-big" }, + { "time": 9.2333, "name": "star-medium" }, + { "time": 9.3, "name": "star-small" }, + { "time": 9.3667 } + ] + }, + "star6": { + "attachment": [ + { "time": 0.7667, "name": "star-small" }, + { "time": 0.9, "name": "star-medium" }, + { "time": 1.0333, "name": "star-big" }, + { "time": 1.1667, "name": "star-medium" }, + { "time": 1.2667, "name": "star-small" }, + { "time": 1.4 }, + { "time": 2, "name": "star-small" }, + { "time": 2.0667, "name": "star-medium" }, + { "time": 2.1333, "name": "star-big" }, + { "time": 2.2, "name": "star-medium" }, + { "time": 2.2667, "name": "star-small" }, + { "time": 2.3333 }, + { "time": 2.7667, "name": "star-small" }, + { "time": 2.8333, "name": "star-medium" }, + { "time": 2.9, "name": "star-big" }, + { "time": 2.9667, "name": "star-medium" }, + { "time": 3.0333, "name": "star-small" }, + { "time": 3.1 }, + { "time": 4.0333, "name": "star-small" }, + { "time": 4.1667, "name": "star-medium" }, + { "time": 4.3, "name": "star-big" }, + { "time": 4.4333, "name": "star-medium" }, + { "time": 4.5333, "name": "star-small" }, + { "time": 4.6333 }, + { "time": 5.2667, "name": "star-small" }, + { "time": 5.3333, "name": "star-medium" }, + { "time": 5.4, "name": "star-big" }, + { "time": 5.4667, "name": "star-medium" }, + { "time": 5.5333, "name": "star-small" }, + { "time": 5.6 }, + { "time": 6.0333, "name": "star-small" }, + { "time": 6.1, "name": "star-medium" }, + { "time": 6.1667, "name": "star-big" }, + { "time": 6.2333, "name": "star-medium" }, + { "time": 6.3, "name": "star-small" }, + { "time": 6.3667 }, + { "time": 7.2667, "name": "star-small" }, + { "time": 7.4, "name": "star-medium" }, + { "time": 7.5333, "name": "star-big" }, + { "time": 7.6667, "name": "star-medium" }, + { "time": 7.7333, "name": "star-small" }, + { "time": 7.8667 }, + { "time": 8.5, "name": "star-small" }, + { "time": 8.5667, "name": "star-medium" }, + { "time": 8.6333, "name": "star-big" }, + { "time": 8.7, "name": "star-medium" }, + { "time": 8.7333, "name": "star-small" }, + { "time": 8.8 }, + { "time": 9.2667, "name": "star-small" }, + { "time": 9.3333, "name": "star-medium" }, + { "time": 9.4, "name": "star-big" }, + { "time": 9.4667, "name": "star-medium" }, + { "time": 9.5333, "name": "star-small" }, + { "time": 9.6 } + ] + } + }, + "bones": { + "body-up": { + "rotate": [ + { + "time": 2.6333, + "curve": [ 2.822, 1.06, 3.011, 3.17 ] + }, + { "time": 3.2, "value": 3.17, "curve": "stepped" }, + { + "time": 9, + "value": 3.17, + "curve": [ 9.2, 3.17, 9.4, 1.06 ] + }, + { + "time": 9.6, + "curve": [ 9.611, -0.06, 9.622, 0 ] + }, + { "time": 9.6333 } + ], + "translate": [ + { + "curve": [ 0.311, -1.37, 0.624, 10, 0.311, 0, 0.624, 0 ] + }, + { + "time": 0.9333, + "x": 10, + "curve": [ 1.691, 10, 2.444, 0, 1.691, 0, 2.444, 0 ] + }, + { + "time": 3.2, + "curve": [ 3.509, 0, 3.824, 10, 3.509, 0, 3.824, 0 ] + }, + { + "time": 4.1333, + "x": 10, + "curve": [ 4.891, 10, 5.642, 3.33, 4.891, 0, 5.642, 0 ] + }, + { "time": 6.4, "curve": "stepped" }, + { + "time": 6.4333, + "curve": [ 6.743, 0, 7.057, 10, 6.743, 0, 7.057, 0 ] + }, + { + "time": 7.3667, + "x": 10, + "curve": [ 8.124, 10, 8.876, 3.33, 8.124, 0, 8.876, 0 ] + }, + { "time": 9.6333 } + ] + }, + "wing-front": { + "rotate": [ + { "time": 0.8333 }, + { "time": 1.7333, "value": -4.1 }, + { "time": 2.6667 }, + { "time": 3.0333, "value": -28.71 }, + { "time": 3.3667, "curve": "stepped" }, + { "time": 3.4667 }, + { "time": 4.0333, "value": -28.71 }, + { "time": 4.7333, "curve": "stepped" }, + { + "time": 5.8667, + "curve": [ 6.256, -1.37, 6.644, -4.1 ] + }, + { + "time": 7.0333, + "value": -4.1, + "curve": [ 7.478, -4.1, 7.922, -1.37 ] + }, + { "time": 8.3667 }, + { "time": 8.9333, "value": -28.71 }, + { "time": 9.6 } + ], + "scale": [ + { "time": 0.8333 }, + { "time": 1.7333, "y": 0.928 }, + { "time": 2.6667 }, + { "time": 3.0333, "y": 0.497 }, + { "time": 3.3667, "curve": "stepped" }, + { "time": 3.4667 }, + { "time": 4.0333, "y": 0.497 }, + { "time": 4.7333, "curve": "stepped" }, + { + "time": 5.8667, + "curve": [ 6.256, 1, 6.644, 1, 6.256, 0.976, 6.644, 0.928 ] + }, + { + "time": 7.0333, + "y": 0.928, + "curve": [ 7.478, 1, 7.922, 1, 7.478, 0.928, 7.922, 0.976 ] + }, + { "time": 8.3667 }, + { "time": 8.9333, "y": 0.497 }, + { "time": 9.6 } + ] + }, + "wing-front-tip": { + "rotate": [ + { "time": 0.9667 }, + { + "time": 2.0667, + "value": -7.42, + "curve": [ 2.097, -3.69, 2.451, -6.54 ] + }, + { "time": 2.6667 }, + { + "time": 2.8333, + "value": 33.17, + "curve": [ 2.891, 33.17, 2.916, 0 ] + }, + { + "time": 2.9667, + "curve": [ 3.029, 0, 3.128, -30.34 ] + }, + { + "time": 3.2, + "value": -30.34, + "curve": [ 3.258, -30.34, 3.317, 0 ] + }, + { "time": 3.3667, "curve": "stepped" }, + { "time": 3.4667 }, + { + "time": 3.6667, + "value": 33.17, + "curve": [ 3.755, 33.17, 3.824, 0 ] + }, + { + "time": 3.9333, + "curve": [ 4.067, 0, 4.245, -30.34 ] + }, + { + "time": 4.4, + "value": -30.34, + "curve": [ 4.525, -30.34, 4.631, 0 ] + }, + { "time": 4.7333, "curve": "stepped" }, + { + "time": 6.1333, + "curve": [ 6.522, -2.47, 7.24, -14.83 ] + }, + { + "time": 7.3, + "value": -7.42, + "curve": [ 7.331, -3.63, 7.969, -6.64 ] + }, + { "time": 8.3667 }, + { + "time": 8.6333, + "value": 33.17, + "curve": [ 8.731, 33.17, 8.78, 0 ] + }, + { + "time": 8.8667, + "curve": [ 8.973, 0, 9.144, -30.34 ] + }, + { + "time": 9.2667, + "value": -30.34, + "curve": [ 9.366, -30.34, 9.485, 0 ] + }, + { "time": 9.6 } + ] + }, + "wing-back-tip": { + "rotate": [ + { "time": 0.9667 }, + { + "time": 2.0667, + "value": 4.42, + "curve": [ 2.097, 2.2, 2.451, 3.9 ] + }, + { "time": 2.6667 }, + { + "time": 2.8667, + "value": -11.49, + "curve": [ 2.87, -11.49, 2.922, 0 ] + }, + { + "time": 2.9667, + "curve": [ 3.029, 0, 3.128, 18.1 ] + }, + { + "time": 3.2, + "value": 18.1, + "curve": [ 3.258, 18.1, 3.317, 0 ] + }, + { "time": 3.3667, "curve": "stepped" }, + { "time": 3.4667 }, + { + "time": 3.7, + "value": -11.49, + "curve": [ 3.705, -11.49, 3.837, 0 ] + }, + { + "time": 3.9333, + "curve": [ 4.067, 0, 4.245, 18.1 ] + }, + { + "time": 4.4, + "value": 18.1, + "curve": [ 4.525, 18.1, 4.631, 0 ] + }, + { "time": 4.7333, "curve": "stepped" }, + { + "time": 6.1333, + "curve": [ 6.522, 1.47, 7.24, 8.85 ] + }, + { + "time": 7.3, + "value": 4.42, + "curve": [ 7.331, 2.17, 7.969, 3.96 ] + }, + { "time": 8.3667 }, + { + "time": 8.6333, + "value": -11.49, + "curve": [ 8.639, -11.49, 8.79, 0 ] + }, + { + "time": 8.8667, + "curve": [ 8.973, 0, 9.144, 18.1 ] + }, + { + "time": 9.2667, + "value": 18.1, + "curve": [ 9.366, 18.1, 9.485, 0 ] + }, + { "time": 9.6 } + ], + "scale": [ + { "time": 0.9667 }, + { + "time": 2.0667, + "x": 1.043, + "curve": [ 2.096, 1.021, 2.451, 1, 2.096, 1, 2.451, 1 ] + }, + { + "time": 2.6667, + "curve": [ 2.718, 1, 2.816, 0.807, 2.718, 1, 2.816, 1 ] + }, + { + "time": 2.8667, + "x": 0.807, + "curve": [ 2.912, 0.807, 2.923, 1.061, 2.912, 1, 2.923, 1 ] + }, + { + "time": 2.9667, + "x": 1.081, + "curve": [ 3.037, 1.112, 3.131, 1.254, 3.037, 1, 3.131, 1 ] + }, + { + "time": 3.2, + "x": 1.222, + "curve": [ 3.254, 1.198, 3.317, 1, 3.254, 1, 3.317, 1 ] + }, + { "time": 3.3667, "curve": "stepped" }, + { + "time": 3.4667, + "curve": [ 3.545, 1, 3.623, 0.807, 3.545, 1, 3.623, 1 ] + }, + { + "time": 3.7, + "x": 0.807, + "curve": [ 3.769, 0.807, 3.84, 1.061, 3.769, 1, 3.84, 1 ] + }, + { + "time": 3.9333, + "x": 1.081, + "curve": [ 4.085, 1.112, 4.252, 1.254, 4.085, 1, 4.252, 1 ] + }, + { + "time": 4.4, + "x": 1.222, + "curve": [ 4.517, 1.198, 4.618, 1, 4.517, 1, 4.618, 1 ] + }, + { "time": 4.7333, "curve": "stepped" }, + { + "time": 6.1333, + "curve": [ 6.522, 1.014, 7.244, 1.085, 6.522, 1, 6.911, 1 ] + }, + { + "time": 7.3, + "x": 1.043, + "curve": [ 7.329, 1.02, 7.969, 1, 7.329, 1, 7.969, 1 ] + }, + { + "time": 8.3667, + "curve": [ 8.454, 1, 8.548, 0.807, 8.454, 1, 8.548, 1 ] + }, + { + "time": 8.6333, + "x": 0.807, + "curve": [ 8.71, 0.807, 8.793, 1.061, 8.71, 1, 8.793, 1 ] + }, + { + "time": 8.8667, + "x": 1.081, + "curve": [ 8.987, 1.112, 9.149, 1.254, 8.987, 1, 9.149, 1 ] + }, + { + "time": 9.2667, + "x": 1.222, + "curve": [ 9.359, 1.198, 9.47, 1, 9.359, 1, 9.47, 1 ] + }, + { "time": 9.6 } + ] + }, + "wing-back": { + "rotate": [ + { "time": 0.8333 }, + { + "time": 1.9333, + "value": 1.94, + "curve": [ 1.967, 0.82, 2.422, 0 ] + }, + { + "time": 2.6667, + "curve": [ 2.778, 0, 2.922, 31.82 ] + }, + { + "time": 3.0333, + "value": 31.82, + "curve": [ 3.141, 31.82, 3.254, 0 ] + }, + { "time": 3.3667, "curve": "stepped" }, + { + "time": 3.4667, + "curve": [ 3.637, 0, 3.795, 31.82 ] + }, + { + "time": 4.0333, + "value": 31.82, + "curve": [ 4.265, 31.82, 4.502, 0 ] + }, + { "time": 4.7333, "curve": "stepped" }, + { + "time": 5.8667, + "curve": [ 6.256, 0.65, 6.975, 3.88 ] + }, + { + "time": 7.0333, + "value": 1.94, + "curve": [ 7.067, 0.82, 7.922, 0 ] + }, + { + "time": 8.3667, + "curve": [ 8.556, 0, 8.744, 31.82 ] + }, + { + "time": 8.9333, + "value": 31.82, + "curve": [ 9.117, 31.82, 9.34, 0 ] + }, + { "time": 9.6 } + ], + "scale": [ + { "time": 0.8333 }, + { + "time": 1.9333, + "x": 1.015, + "y": 0.962, + "curve": [ 1.967, 1.006, 2.422, 1, 1.967, 0.984, 2.422, 1 ] + }, + { + "time": 2.6667, + "curve": [ 2.778, 1, 2.922, 1.248, 2.778, 1, 2.922, 0.376 ] + }, + { + "time": 3.0333, + "x": 1.248, + "y": 0.376, + "curve": [ 3.141, 1.248, 3.254, 1, 3.141, 0.376, 3.254, 1 ] + }, + { "time": 3.3667, "curve": "stepped" }, + { + "time": 3.4667, + "curve": [ 3.637, 1, 3.795, 1.248, 3.637, 1, 3.795, 0.376 ] + }, + { + "time": 4.0333, + "x": 1.248, + "y": 0.376, + "curve": [ 4.265, 1.248, 4.502, 1, 4.265, 0.376, 4.502, 1 ] + }, + { "time": 4.7333, "curve": "stepped" }, + { + "time": 5.8667, + "curve": [ 6.256, 1.005, 6.975, 1.03, 6.256, 0.987, 6.975, 0.924 ] + }, + { + "time": 7.0333, + "x": 1.015, + "y": 0.962, + "curve": [ 7.067, 1.006, 7.922, 1, 7.067, 0.984, 7.922, 1 ] + }, + { + "time": 8.3667, + "curve": [ 8.556, 1, 8.744, 1.248, 8.556, 1, 8.744, 0.376 ] + }, + { + "time": 8.9333, + "x": 1.248, + "y": 0.376, + "curve": [ 9.117, 1.248, 9.34, 1, 9.117, 0.376, 9.34, 1 ] + }, + { "time": 9.6 } + ] + }, + "pupil-front": { + "translate": [ + { + "x": -9.97, + "curve": [ 0.033, -9.97, 0.067, -6.11, 0.033, 0, 0.067, 0 ] + }, + { + "time": 0.1, + "x": -6.11, + "curve": [ 0.282, -6.11, 0.256, -9.97, 0.183, 0, 0.256, 0 ] + }, + { "time": 0.3333, "x": -9.97, "curve": "stepped" }, + { "time": 1.4333, "x": -9.97 }, + { "time": 1.6333, "x": -9.97, "y": 5.36, "curve": "stepped" }, + { "time": 6.4667, "x": -9.97, "y": 5.36 }, + { "time": 6.7667, "x": -9.97 } + ], + "scale": [ + { + "curve": [ 0.033, 1, 0.071, 0.152, 0.033, 1, 0.071, 1 ] + }, + { + "time": 0.1, + "x": 0.152, + "curve": [ 0.282, 0.152, 0.244, 1, 0.183, 1, 0.25, 1 ] + }, + { "time": 0.3333 } + ] + }, + "pupil-back": { + "translate": [ + { + "x": -8.93, + "curve": [ 0.033, -8.93, 0.067, -6.11, 0.033, 0, 0.067, 0 ] + }, + { + "time": 0.1, + "x": -6.11, + "curve": [ 0.282, -6.11, 0.256, -8.93, 0.183, 0, 0.256, 0 ] + }, + { "time": 0.3333, "x": -8.93, "curve": "stepped" }, + { "time": 1.4333, "x": -8.93 }, + { "time": 1.6333, "x": -8.93, "y": 3.83, "curve": "stepped" }, + { "time": 6.4667, "x": -8.93, "y": 3.83 }, + { "time": 6.7667, "x": -8.93 } + ], + "scale": [ + { + "curve": [ 0.033, 1, 0.071, 0.152, 0.033, 1, 0.071, 1 ] + }, + { + "time": 0.1, + "x": 0.152, + "curve": [ 0.282, 0.152, 0.244, 1, 0.183, 1, 0.25, 1 ] + }, + { "time": 0.3333 } + ] + }, + "eyelashes-top-front": { + "translate": [ + { + "x": -15.36, + "y": 1.57, + "curve": [ 0.033, -15.36, 0.067, -26.84, 0.033, 1.57, 0.067, 0 ] + }, + { + "time": 0.1, + "x": -26.84, + "curve": [ 0.282, -26.84, 0.256, -10.38, 0.183, 0, 0.256, 1.06 ] + }, + { "time": 0.3333, "x": -10.38, "y": 1.06, "curve": "stepped" }, + { "time": 8.3667, "x": -10.38, "y": 1.06 }, + { "time": 8.8667, "x": -15.36, "y": 1.57 } + ] + }, + "eyelashes-top-back": { + "translate": [ + { + "x": -14.46, + "y": -3.29, + "curve": [ 0.033, -14.46, 0.067, -22.55, 0.033, -3.29, 0.067, 0 ] + }, + { + "time": 0.1, + "x": -22.55, + "curve": [ 0.282, -22.55, 0.256, -9.45, 0.183, 0, 0.256, -3.29 ] + }, + { "time": 0.3333, "x": -9.45, "y": -3.29, "curve": "stepped" }, + { "time": 8.3667, "x": -9.45, "y": -3.29 }, + { "time": 8.8667, "x": -14.46, "y": -3.29 } + ] + }, + "face-control": { + "translate": [ + { "x": -2.21, "curve": "stepped" }, + { "time": 1.4, "x": -2.21 }, + { "time": 1.8333, "x": -2.21, "y": 11.22 }, + { "time": 2.6, "x": -2.21, "y": 12.66 }, + { "time": 2.8667, "x": -6.06, "y": 13.01 }, + { "time": 3.3, "x": -2.21, "y": 13.4 }, + { "time": 6.6333, "x": -2.21, "y": 11.22 }, + { "time": 6.8, "x": -5.12, "y": 4.99 }, + { "time": 6.9333, "x": -2.21 } + ] + }, + "face": { + "rotate": [ + { "value": -15.25, "curve": "stepped" }, + { + "time": 2.5, + "value": -15.25, + "curve": [ 2.744, -13.13, 2.989, -8.89 ] + }, + { "time": 3.2333, "value": -8.89, "curve": "stepped" }, + { + "time": 8.2, + "value": -8.89, + "curve": [ 8.544, -8.89, 8.889, -15.25 ] + }, + { "time": 9.2333, "value": -15.25 } + ] + }, + "hair-back": { + "rotate": [ + { "value": 12.31, "curve": "stepped" }, + { "time": 2.5, "value": 12.31 }, + { "time": 3.2, "value": 7.32, "curve": "stepped" }, + { "time": 8.5333, "value": 7.32 }, + { "time": 9.5667, "value": 12.31 } + ] + }, + "fringe-side-front": { + "rotate": [ + { "value": 6.43, "curve": "stepped" }, + { "time": 2.5, "value": 6.43 }, + { "time": 3.2, "value": 6.92, "curve": "stepped" }, + { "time": 8.5333, "value": 6.92 }, + { "time": 9.5667, "value": 6.43 } + ] + }, + "fringe-side-back": { + "rotate": [ + { "value": 6.43, "curve": "stepped" }, + { "time": 2.5, "value": 6.43 }, + { "time": 3.2, "value": 6.92, "curve": "stepped" }, + { "time": 8.5333, "value": 6.92 }, + { "time": 9.5667, "value": 6.43 } + ] + }, + "leg-front-down": { + "rotate": [ + { "value": -25.69, "curve": "stepped" }, + { + "time": 2.6333, + "value": -25.69, + "curve": [ 2.967, -22.72, 3.3, -16.78 ] + }, + { "time": 3.6333, "value": -16.78, "curve": "stepped" }, + { + "time": 7.3667, + "value": -16.78, + "curve": [ 7.689, -16.78, 8.011, -22.72 ] + }, + { + "time": 8.3333, + "value": -25.69, + "curve": [ 8.767, -29.68, 9.2, -25.69 ] + }, + { "time": 9.6333, "value": -25.69 } + ] + }, + "leg-back-down": { + "rotate": [ + { "value": -31.75 } + ] + }, + "eyelashes-down-front": { + "translate": [ + { + "curve": [ 0.033, 0, 0.071, 12.12, 0.033, 0, 0.071, 0 ] + }, + { + "time": 0.1, + "x": 12.12, + "curve": [ 0.282, 12.12, 0.244, 0, 0.183, 0, 0.25, 0 ] + }, + { "time": 0.3333 } + ] + }, + "eyelashes-down-back": { + "translate": [ + { + "curve": [ 0.033, 0, 0.071, 10.12, 0.033, 0, 0.071, 0 ] + }, + { + "time": 0.1, + "x": 10.12, + "curve": [ 0.282, 10.12, 0.244, 0, 0.183, 0, 0.25, 0 ] + }, + { "time": 0.3333 } + ] + }, + "swing-top": { + "rotate": [ + { + "curve": [ 0.244, 0, 0.489, 0 ] + }, + { + "time": 0.7333, + "value": -0.11, + "curve": [ 0.989, -0.23, 1.244, -1.74 ] + }, + { + "time": 1.5, + "value": -1.74, + "curve": [ 1.744, -1.74, 1.989, 0.52 ] + }, + { + "time": 2.2333, + "value": 0.52, + "curve": [ 2.389, 0.52, 2.544, -0.61 ] + }, + { + "time": 2.7, + "value": -0.61, + "curve": [ 2.9, -0.61, 3.1, 1.19 ] + }, + { + "time": 3.3, + "value": 1.19, + "curve": [ 3.522, 1.19, 3.744, 1.19 ] + }, + { + "time": 3.9667, + "value": 0.66, + "curve": [ 4.344, -0.24, 4.722, -3.51 ] + }, + { + "time": 5.1, + "value": -3.51, + "curve": [ 5.211, -3.51, 5.322, -3.39 ] + }, + { + "time": 5.4333, + "value": -3.26, + "curve": [ 5.644, -3, 5.856, -2.71 ] + }, + { + "time": 6.0667, + "value": -2.32, + "curve": [ 6.356, -1.77, 6.644, -0.44 ] + }, + { + "time": 6.9333, + "value": -0.44, + "curve": [ 7.111, -0.44, 7.289, -0.82 ] + }, + { + "time": 7.4667, + "value": -0.82, + "curve": [ 7.811, -0.82, 8.156, 4.18 ] + }, + { + "time": 8.5, + "value": 4.18, + "curve": [ 8.867, 4.18, 9.233, 1.39 ] + }, + { + "time": 9.6, + "curve": [ 9.611, -0.04, 9.622, 0 ] + }, + { "time": 9.6333 } + ] + }, + "cloud": { + "translate": [ + { + "curve": [ 0.356, 0, 0.711, -11.64, 0.356, 0, 0.711, 0 ] + }, + { + "time": 1.0667, + "x": -11.64, + "curve": [ 1.5, -11.64, 1.933, 17.3, 1.5, 0, 1.933, 0 ] + }, + { + "time": 2.3667, + "x": 17.3, + "curve": [ 2.944, 17.3, 3.522, 17.3, 2.944, 0, 3.522, 0 ] + }, + { + "time": 4.1, + "x": 13.15, + "curve": [ 4.444, 10.68, 4.789, -11.93, 4.444, 0, 4.789, 0 ] + }, + { + "time": 5.1333, + "x": -12.61, + "curve": [ 5.878, -14.07, 6.622, -14.07, 5.878, 0, 6.622, 0 ] + }, + { + "time": 7.3667, + "x": -14.07, + "curve": [ 7.689, -14.07, 8.011, 19.19, 7.689, 0, 8.011, 0 ] + }, + { + "time": 8.3333, + "x": 19.19, + "curve": [ 8.756, 19.19, 9.178, 6.4, 8.756, 0, 9.178, 0 ] + }, + { + "time": 9.6, + "curve": [ 9.611, -0.17, 9.622, 0, 9.611, 0, 9.622, 0 ] + }, + { "time": 9.6333 } + ] + }, + "arm-front-up-holder": { + "translate": [ + { "time": 2 }, + { "time": 3.6667, "x": -1.79, "y": -23.94, "curve": "stepped" }, + { "time": 7.8667, "x": -1.79, "y": -23.94 }, + { "time": 9.0667 } + ] + }, + "bench-back": { + "translate": [ + { + "x": 8.04, + "curve": [ 0.156, 8.04, 0.311, 0, 0.156, 0, 0.311, 0 ] + }, + { + "time": 0.4667, + "curve": [ 0.822, 0, 1.178, -11.64, 0.822, 0, 1.178, 0 ] + }, + { + "time": 1.5333, + "x": -11.64, + "curve": [ 1.967, -11.64, 2.4, 17.3, 1.967, 0, 2.4, 0 ] + }, + { + "time": 2.8333, + "x": 17.3, + "curve": [ 3.411, 17.3, 3.989, 17.3, 3.411, 0, 3.989, 0 ] + }, + { + "time": 4.5667, + "x": 13.15, + "curve": [ 4.911, 10.68, 5.256, -11.93, 4.911, 0, 5.256, 0 ] + }, + { + "time": 5.6, + "x": -12.61, + "curve": [ 6.344, -14.07, 7.089, -14.07, 6.344, 0, 7.089, 0 ] + }, + { + "time": 7.8333, + "x": -14.07, + "curve": [ 8.156, -14.07, 8.478, 19.19, 8.156, 0, 8.478, 0 ] + }, + { + "time": 8.8, + "x": 19.19, + "curve": [ 9.079, 19.19, 9.267, 8.04, 9.079, 0, 9.357, 0 ] + }, + { "time": 9.6333, "x": 8.04 } + ] + } + }, + "physics": { + "girl/feathers-front": { + "wind": [ + { "value": -15.8 }, + { "time": 0.7667, "value": -33.3 }, + { "time": 1.5333, "curve": "stepped" }, + { "time": 4.9 }, + { "time": 5.5, "value": -19.3 }, + { "time": 5.9667, "value": -5.7 }, + { "time": 6.8, "value": -15.7 }, + { "time": 7.9333 }, + { "time": 8.7667, "value": 8.6 }, + { "time": 9.6333, "value": -15.8 } + ] + }, + "girl/feathers-front-top": { + "wind": [ + { "value": -15.8 }, + { "time": 0.7667, "value": -33.3 }, + { "time": 1.5333, "curve": "stepped" }, + { "time": 4.9 }, + { "time": 5.5, "value": -19.3 }, + { "time": 5.9667, "value": -5.7 }, + { "time": 6.8, "value": -15.7 }, + { "time": 7.9333 }, + { "time": 8.7667, "value": 8.6 }, + { "time": 9.6333, "value": -15.8 } + ] + }, + "girl/hair/fringe-side-back": { + "wind": [ + { "value": -15.8 }, + { "time": 0.7667, "value": -33.3 }, + { "time": 1.5333, "curve": "stepped" }, + { "time": 4.9 }, + { "time": 5.5, "value": -19.3 }, + { "time": 5.9667, "value": -5.7 }, + { "time": 6.8, "value": -15.7 }, + { "time": 7.9333 }, + { "time": 8.7667, "value": 8.6 }, + { "time": 9.6333, "value": -15.8 } + ] + }, + "girl/hair/fringe-side-front": { + "wind": [ + { "value": -15.8 }, + { "time": 0.7667, "value": -33.3 }, + { "time": 1.5333, "curve": "stepped" }, + { "time": 4.9 }, + { "time": 5.5, "value": -19.3 }, + { "time": 5.9667, "value": -5.7 }, + { "time": 6.8, "value": -15.7 }, + { "time": 7.9333 }, + { "time": 8.7667, "value": 8.6 }, + { "time": 9.6333, "value": -15.8 } + ] + }, + "girl/hair/hair-back": { + "wind": [ + { + "value": -4.3, + "curve": [ 0.189, -4.3, 0.378, -14.3 ] + }, + { + "time": 0.5667, + "value": -14.3, + "curve": [ 0.911, -14.3, 1.256, -6.3803 ] + }, + { + "time": 1.6, + "value": -4.3, + "curve": [ 2.1, -1.2803, 2.6, 1 ] + }, + { + "time": 3.1, + "value": 1, + "curve": [ 3.578, 1, 4.056, 1 ] + }, + { + "time": 4.5333, + "curve": [ 4.822, -0.6047, 5.111, -10 ] + }, + { + "time": 5.4, + "value": -10, + "curve": [ 5.667, -10, 5.933, -5 ] + }, + { + "time": 6.2, + "value": -5, + "curve": [ 6.389, -5, 6.578, -7 ] + }, + { + "time": 6.7667, + "value": -7, + "curve": [ 7.178, -7, 7.589, -2.9126 ] + }, + { + "time": 8, + "value": 1, + "curve": [ 8.233, 3.2207, 8.467, 11.4 ] + }, + { + "time": 8.7, + "value": 11.4, + "curve": [ 8.967, 11.4, 9.233, -4.3 ] + }, + { "time": 9.5, "value": -4.3 } + ] + }, + "girl/legs/sock-bow": { + "wind": [ + { "value": -15.8 }, + { "time": 0.7667, "value": -33.3 }, + { "time": 1.5333, "curve": "stepped" }, + { "time": 4.9 }, + { "time": 5.5, "value": -19.3 }, + { "time": 5.9667, "value": -5.7 }, + { "time": 6.8, "value": -15.7 }, + { "time": 7.9333 }, + { "time": 8.7667, "value": 8.6 }, + { "time": 9.6333, "value": -15.8 } + ] + }, + "girl/skirt/skirt-back": { + "wind": [ + {}, + { "time": 0.6, "value": -8.6 }, + { "time": 1.5333, "curve": "stepped" }, + { "time": 4.4 }, + { "time": 5, "value": -7.1, "curve": "stepped" }, + { "time": 6.6333, "value": -7.1 }, + { "time": 8.4333, "value": 7.1 }, + { "time": 9.6 } + ] + }, + "girl/skirt/skirt-front": { + "wind": [ + {}, + { "time": 0.7333, "value": -8.6 }, + { "time": 1.6667, "curve": "stepped" }, + { "time": 4.5333 }, + { "time": 5.1333, "value": -7.1, "curve": "stepped" }, + { "time": 6.8667, "value": -7.1 }, + { "time": 8.2333, "value": 7.1 }, + { "time": 9.6 } + ] + }, + "girl/wings/wing-back": { + "wind": [ + { "value": -15.8 }, + { "time": 0.7667, "value": -33.3 }, + { "time": 1.5333, "curve": "stepped" }, + { "time": 4.9 }, + { "time": 5.5, "value": -19.3 }, + { "time": 5.9667, "value": -5.7 }, + { "time": 6.8, "value": -15.7 }, + { "time": 7.9333 }, + { "time": 8.7667, "value": 8.6 }, + { "time": 9.6333, "value": -15.8 } + ] + }, + "girl/wings/wing-front": { + "wind": [ + { "value": -15.8 }, + { "time": 0.7667, "value": -33.3 }, + { "time": 1.5333, "curve": "stepped" }, + { "time": 4.9 }, + { "time": 5.5, "value": -19.3 }, + { "time": 5.9667, "value": -5.7 }, + { "time": 6.8, "value": -15.7 }, + { "time": 7.9333 }, + { "time": 8.7667, "value": 8.6 }, + { "time": 9.6333, "value": -15.8 } + ] + }, + "": { + "wind": [ + { + "value": -15.8, + "curve": [ 0.256, -15.8, 0.511, -33.3 ] + }, + { + "time": 0.7667, + "value": -33.3, + "curve": [ 1.044, -33.3, 1.322, 0 ] + }, + { + "time": 1.6, + "curve": [ 1.8, 0, 2, -8.6 ] + }, + { + "time": 2.2, + "value": -8.6, + "curve": [ 2.5, -8.6, 2.8, 1 ] + }, + { + "time": 3.1, + "value": 1, + "curve": [ 3.578, 1, 4.056, 0 ] + }, + { "time": 4.5333, "curve": "stepped" }, + { + "time": 4.9, + "curve": [ 5.1, 0, 5.3, -19.3 ] + }, + { + "time": 5.5, + "value": -19.3, + "curve": [ 5.656, -19.3, 5.811, -7.1 ] + }, + { + "time": 5.9667, + "value": -5.7, + "curve": [ 6.044, -5, 6.122, -5 ] + }, + { + "time": 6.2, + "value": -5, + "curve": [ 6.389, -5, 6.578, -7 ] + }, + { + "time": 6.7667, + "value": -7, + "curve": [ 7.156, -7, 7.544, -3.7011 ] + }, + { + "time": 7.9333, + "curve": [ 8.189, 2.4322, 8.444, 11.4 ] + }, + { + "time": 8.7, + "value": 11.4, + "curve": [ 9.011, 11.4, 9.322, -15.8 ] + }, + { "time": 9.6333, "value": -15.8 } + ] + } + } + }, + "wing-flap": { + "bones": { + "body-up": { + "translate": [ + { + "curve": [ 0.222, 0, 0.444, 10, 0.222, 0, 0.444, 0 ] + }, + { + "time": 0.6667, + "x": 10, + "curve": [ 1.211, 10, 1.756, 3.33, 1.211, 0, 1.756, 0 ] + }, + { "time": 2.3 } + ] + }, + "wing-front": { + "rotate": [ + {}, + { "time": 0.6, "value": -28.71 }, + { "time": 1.1333 }, + { "time": 1.7, "value": -28.71 }, + { "time": 2.2667 } + ], + "scale": [ + {}, + { "time": 0.6, "y": 0.497 }, + { "time": 1.1333 }, + { "time": 1.7, "y": 0.497 }, + { "time": 2.2667 } + ] + }, + "wing-front-tip": { + "rotate": [ + {}, + { + "time": 0.2333, + "value": 33.17, + "curve": [ 0.333, 33.17, 0.412, 0 ] + }, + { + "time": 0.5, + "curve": [ 0.608, 0, 0.742, -30.34 ] + }, + { + "time": 0.8667, + "value": -30.34, + "curve": [ 0.968, -30.34, 1.042, -12.9 ] + }, + { "time": 1.1333 }, + { + "time": 1.3667, + "value": 33.17, + "curve": [ 1.466, 33.17, 1.545, 0 ] + }, + { + "time": 1.6333, + "curve": [ 1.741, 0, 1.875, -30.34 ] + }, + { + "time": 2, + "value": -30.34, + "curve": [ 2.101, -30.34, 2.184, 0 ] + }, + { "time": 2.2667 } + ] + }, + "wing-back-tip": { + "rotate": [ + {}, + { + "time": 0.2667, + "value": -11.49, + "curve": [ 0.272, -11.49, 0.422, 0 ] + }, + { + "time": 0.5, + "curve": [ 0.608, 0, 0.742, 18.1 ] + }, + { + "time": 0.8667, + "value": 18.1, + "curve": [ 0.968, 18.1, 1.042, 3.83 ] + }, + { "time": 1.1333 }, + { + "time": 1.4, + "value": -11.49, + "curve": [ 1.406, -11.49, 1.555, 0 ] + }, + { + "time": 1.6333, + "curve": [ 1.741, 0, 1.875, 18.1 ] + }, + { + "time": 2, + "value": 18.1, + "curve": [ 2.101, 18.1, 2.184, 0 ] + }, + { "time": 2.2667 } + ], + "scale": [ + { + "curve": [ 0.089, 1, 0.18, 0.807, 0.089, 1, 0.18, 1 ] + }, + { + "time": 0.2667, + "x": 0.807, + "curve": [ 0.345, 0.807, 0.425, 1.061, 0.345, 1, 0.425, 1 ] + }, + { + "time": 0.5, + "x": 1.081, + "curve": [ 0.622, 1.112, 0.747, 1.254, 0.622, 1, 0.747, 1 ] + }, + { + "time": 0.8667, + "x": 1.222, + "curve": [ 0.961, 1.198, 1.042, 1, 0.961, 1, 1.042, 1 ] + }, + { + "time": 1.1333, + "curve": [ 1.222, 1, 1.313, 0.807, 1.222, 1, 1.313, 1 ] + }, + { + "time": 1.4, + "x": 0.807, + "curve": [ 1.478, 0.807, 1.558, 1.061, 1.478, 1, 1.558, 1 ] + }, + { + "time": 1.6333, + "x": 1.081, + "curve": [ 1.755, 1.112, 1.88, 1.254, 1.755, 1, 1.88, 1 ] + }, + { + "time": 2, + "x": 1.222, + "curve": [ 2.094, 1.198, 2.173, 1, 2.094, 1, 2.173, 1 ] + }, + { "time": 2.2667 } + ] + }, + "wing-back": { + "rotate": [ + { + "curve": [ 0.193, 0, 0.407, 31.82 ] + }, + { + "time": 0.6, + "value": 31.82, + "curve": [ 0.787, 31.82, 0.951, 0 ] + }, + { + "time": 1.1333, + "curve": [ 1.326, 0, 1.507, 31.82 ] + }, + { + "time": 1.7, + "value": 31.82, + "curve": [ 1.887, 31.82, 2.08, 0 ] + }, + { "time": 2.2667 } + ], + "scale": [ + { + "curve": [ 0.193, 1, 0.407, 1.248, 0.193, 1, 0.407, 0.376 ] + }, + { + "time": 0.6, + "x": 1.248, + "y": 0.376, + "curve": [ 0.787, 1.248, 0.951, 1, 0.787, 0.376, 0.951, 1 ] + }, + { + "time": 1.1333, + "curve": [ 1.326, 1, 1.507, 1.248, 1.326, 1, 1.507, 0.376 ] + }, + { + "time": 1.7, + "x": 1.248, + "y": 0.376, + "curve": [ 1.887, 1.248, 2.08, 1, 1.887, 0.376, 2.08, 1 ] + }, + { "time": 2.2667 } + ] + } + } + }, + "wings-and-feet": { + "bones": { + "body-up": { + "translate": [ + { + "curve": [ 0.222, 0, 0.444, 10, 0.222, 0, 0.444, 0 ] + }, + { + "time": 0.6667, + "x": 10, + "curve": [ 1.211, 10, 1.756, 3.33, 1.211, 0, 1.756, 0 ] + }, + { "time": 2.3 } + ] + }, + "wing-front": { + "rotate": [ + {}, + { "time": 0.6, "value": -28.71 }, + { "time": 1.1333 }, + { "time": 1.7, "value": -28.71 }, + { "time": 2.2667 } + ], + "scale": [ + {}, + { "time": 0.6, "y": 0.497 }, + { "time": 1.1333 }, + { "time": 1.7, "y": 0.497 }, + { "time": 2.2667 } + ] + }, + "wing-front-tip": { + "rotate": [ + {}, + { + "time": 0.2333, + "value": 33.17, + "curve": [ 0.333, 33.17, 0.412, 0 ] + }, + { + "time": 0.5, + "curve": [ 0.608, 0, 0.742, -30.34 ] + }, + { + "time": 0.8667, + "value": -30.34, + "curve": [ 0.968, -30.34, 1.042, -12.9 ] + }, + { "time": 1.1333 }, + { + "time": 1.3667, + "value": 33.17, + "curve": [ 1.466, 33.17, 1.545, 0 ] + }, + { + "time": 1.6333, + "curve": [ 1.741, 0, 1.875, -30.34 ] + }, + { + "time": 2, + "value": -30.34, + "curve": [ 2.101, -30.34, 2.184, 0 ] + }, + { "time": 2.2667 } + ] + }, + "wing-back-tip": { + "rotate": [ + {}, + { + "time": 0.2667, + "value": -11.49, + "curve": [ 0.272, -11.49, 0.422, 0 ] + }, + { + "time": 0.5, + "curve": [ 0.608, 0, 0.742, 18.1 ] + }, + { + "time": 0.8667, + "value": 18.1, + "curve": [ 0.968, 18.1, 1.042, 3.83 ] + }, + { "time": 1.1333 }, + { + "time": 1.4, + "value": -11.49, + "curve": [ 1.406, -11.49, 1.555, 0 ] + }, + { + "time": 1.6333, + "curve": [ 1.741, 0, 1.875, 18.1 ] + }, + { + "time": 2, + "value": 18.1, + "curve": [ 2.101, 18.1, 2.184, 0 ] + }, + { "time": 2.2667 } + ], + "scale": [ + { + "curve": [ 0.089, 1, 0.18, 0.807, 0.089, 1, 0.18, 1 ] + }, + { + "time": 0.2667, + "x": 0.807, + "curve": [ 0.345, 0.807, 0.425, 1.061, 0.345, 1, 0.425, 1 ] + }, + { + "time": 0.5, + "x": 1.081, + "curve": [ 0.622, 1.112, 0.747, 1.254, 0.622, 1, 0.747, 1 ] + }, + { + "time": 0.8667, + "x": 1.222, + "curve": [ 0.961, 1.198, 1.042, 1, 0.961, 1, 1.042, 1 ] + }, + { + "time": 1.1333, + "curve": [ 1.222, 1, 1.313, 0.807, 1.222, 1, 1.313, 1 ] + }, + { + "time": 1.4, + "x": 0.807, + "curve": [ 1.478, 0.807, 1.558, 1.061, 1.478, 1, 1.558, 1 ] + }, + { + "time": 1.6333, + "x": 1.081, + "curve": [ 1.755, 1.112, 1.88, 1.254, 1.755, 1, 1.88, 1 ] + }, + { + "time": 2, + "x": 1.222, + "curve": [ 2.094, 1.198, 2.173, 1, 2.094, 1, 2.173, 1 ] + }, + { "time": 2.2667 } + ] + }, + "wing-back": { + "rotate": [ + { + "curve": [ 0.193, 0, 0.407, 31.82 ] + }, + { + "time": 0.6, + "value": 31.82, + "curve": [ 0.787, 31.82, 0.951, 0 ] + }, + { + "time": 1.1333, + "curve": [ 1.326, 0, 1.507, 31.82 ] + }, + { + "time": 1.7, + "value": 31.82, + "curve": [ 1.887, 31.82, 2.08, 0 ] + }, + { "time": 2.2667 } + ], + "scale": [ + { + "curve": [ 0.193, 1, 0.407, 1.248, 0.193, 1, 0.407, 0.376 ] + }, + { + "time": 0.6, + "x": 1.248, + "y": 0.376, + "curve": [ 0.787, 1.248, 0.951, 1, 0.787, 0.376, 0.951, 1 ] + }, + { + "time": 1.1333, + "curve": [ 1.326, 1, 1.507, 1.248, 1.326, 1, 1.507, 0.376 ] + }, + { + "time": 1.7, + "x": 1.248, + "y": 0.376, + "curve": [ 1.887, 1.248, 2.08, 1, 1.887, 0.376, 2.08, 1 ] + }, + { "time": 2.2667 } + ] + }, + "leg-back-down": { + "rotate": [ + { + "value": -15.56, + "curve": [ 0.122, -7.02, 0.244, 8.91 ] + }, + { + "time": 0.3667, + "value": 8.91, + "curve": [ 0.556, 8.91, 0.744, -26.59 ] + }, + { + "time": 0.9333, + "value": -26.59, + "curve": [ 1.133, -26.59, 1.333, 8.91 ] + }, + { + "time": 1.5333, + "value": 8.91, + "curve": [ 1.744, 8.91, 1.956, -20.89 ] + }, + { + "time": 2.1667, + "value": -20.89, + "curve": [ 2.211, -20.89, 2.256, -18.67 ] + }, + { "time": 2.3, "value": -15.56 } + ] + }, + "leg-front-down": { + "rotate": [ + { + "value": 8.91, + "curve": [ 0.189, 8.91, 0.378, -26.59 ] + }, + { + "time": 0.5667, + "value": -26.59, + "curve": [ 0.767, -26.59, 0.967, 8.91 ] + }, + { + "time": 1.1667, + "value": 8.91, + "curve": [ 1.378, 8.91, 1.589, -20.89 ] + }, + { + "time": 1.8, + "value": -20.89, + "curve": [ 1.967, -20.89, 2.133, 8.91 ] + }, + { "time": 2.3, "value": 8.91 } + ] + } + } + } +} +} \ No newline at end of file diff --git a/assets/celestial-circus/export/celestial-circus-pro.skel b/assets/celestial-circus/export/celestial-circus-pro.skel new file mode 100644 index 0000000..7ab1a4e Binary files /dev/null and b/assets/celestial-circus/export/celestial-circus-pro.skel differ diff --git a/assets/celestial-circus/export/celestial-circus.atlas b/assets/celestial-circus/export/celestial-circus.atlas new file mode 100644 index 0000000..17f32b2 --- /dev/null +++ b/assets/celestial-circus/export/celestial-circus.atlas @@ -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 diff --git a/assets/celestial-circus/export/celestial-circus.png b/assets/celestial-circus/export/celestial-circus.png new file mode 100644 index 0000000..a5c26cc Binary files /dev/null and b/assets/celestial-circus/export/celestial-circus.png differ diff --git a/assets/celestial-circus/images/arm-back-down.png b/assets/celestial-circus/images/arm-back-down.png new file mode 100644 index 0000000..cdfe66d Binary files /dev/null and b/assets/celestial-circus/images/arm-back-down.png differ diff --git a/assets/celestial-circus/images/arm-back-up.png b/assets/celestial-circus/images/arm-back-up.png new file mode 100644 index 0000000..3be4ea5 Binary files /dev/null and b/assets/celestial-circus/images/arm-back-up.png differ diff --git a/assets/celestial-circus/images/arm-front-down.png b/assets/celestial-circus/images/arm-front-down.png new file mode 100644 index 0000000..c5ae79b Binary files /dev/null and b/assets/celestial-circus/images/arm-front-down.png differ diff --git a/assets/celestial-circus/images/arm-front-up.png b/assets/celestial-circus/images/arm-front-up.png new file mode 100644 index 0000000..6de9d0b Binary files /dev/null and b/assets/celestial-circus/images/arm-front-up.png differ diff --git a/assets/celestial-circus/images/bench.png b/assets/celestial-circus/images/bench.png new file mode 100644 index 0000000..d4f5a9b Binary files /dev/null and b/assets/celestial-circus/images/bench.png differ diff --git a/assets/celestial-circus/images/body-bottom.png b/assets/celestial-circus/images/body-bottom.png new file mode 100644 index 0000000..023407b Binary files /dev/null and b/assets/celestial-circus/images/body-bottom.png differ diff --git a/assets/celestial-circus/images/body-top.png b/assets/celestial-circus/images/body-top.png new file mode 100644 index 0000000..a44a3dd Binary files /dev/null and b/assets/celestial-circus/images/body-top.png differ diff --git a/assets/celestial-circus/images/chest.png b/assets/celestial-circus/images/chest.png new file mode 100644 index 0000000..f71231f Binary files /dev/null and b/assets/celestial-circus/images/chest.png differ diff --git a/assets/celestial-circus/images/cloud-back.png b/assets/celestial-circus/images/cloud-back.png new file mode 100644 index 0000000..0a1a586 Binary files /dev/null and b/assets/celestial-circus/images/cloud-back.png differ diff --git a/assets/celestial-circus/images/cloud-front.png b/assets/celestial-circus/images/cloud-front.png new file mode 100644 index 0000000..1fde08a Binary files /dev/null and b/assets/celestial-circus/images/cloud-front.png differ diff --git a/assets/celestial-circus/images/collar.png b/assets/celestial-circus/images/collar.png new file mode 100644 index 0000000..39e733d Binary files /dev/null and b/assets/celestial-circus/images/collar.png differ diff --git a/assets/celestial-circus/images/ear.png b/assets/celestial-circus/images/ear.png new file mode 100644 index 0000000..4434a9e Binary files /dev/null and b/assets/celestial-circus/images/ear.png differ diff --git a/assets/celestial-circus/images/eye-back-shadow.png b/assets/celestial-circus/images/eye-back-shadow.png new file mode 100644 index 0000000..56d8402 Binary files /dev/null and b/assets/celestial-circus/images/eye-back-shadow.png differ diff --git a/assets/celestial-circus/images/eye-front-shadow.png b/assets/celestial-circus/images/eye-front-shadow.png new file mode 100644 index 0000000..4308cdf Binary files /dev/null and b/assets/celestial-circus/images/eye-front-shadow.png differ diff --git a/assets/celestial-circus/images/eye-reflex-back.png b/assets/celestial-circus/images/eye-reflex-back.png new file mode 100644 index 0000000..1fba7bf Binary files /dev/null and b/assets/celestial-circus/images/eye-reflex-back.png differ diff --git a/assets/celestial-circus/images/eye-reflex-front.png b/assets/celestial-circus/images/eye-reflex-front.png new file mode 100644 index 0000000..f153342 Binary files /dev/null and b/assets/celestial-circus/images/eye-reflex-front.png differ diff --git a/assets/celestial-circus/images/eye-white-back.png b/assets/celestial-circus/images/eye-white-back.png new file mode 100644 index 0000000..2a2a8dc Binary files /dev/null and b/assets/celestial-circus/images/eye-white-back.png differ diff --git a/assets/celestial-circus/images/eye-white-front.png b/assets/celestial-circus/images/eye-white-front.png new file mode 100644 index 0000000..732ca79 Binary files /dev/null and b/assets/celestial-circus/images/eye-white-front.png differ diff --git a/assets/celestial-circus/images/eyelashes-down-back.png b/assets/celestial-circus/images/eyelashes-down-back.png new file mode 100644 index 0000000..769697e Binary files /dev/null and b/assets/celestial-circus/images/eyelashes-down-back.png differ diff --git a/assets/celestial-circus/images/eyelashes-down-front.png b/assets/celestial-circus/images/eyelashes-down-front.png new file mode 100644 index 0000000..dd74341 Binary files /dev/null and b/assets/celestial-circus/images/eyelashes-down-front.png differ diff --git a/assets/celestial-circus/images/eyelashes-top-back.png b/assets/celestial-circus/images/eyelashes-top-back.png new file mode 100644 index 0000000..151f0d7 Binary files /dev/null and b/assets/celestial-circus/images/eyelashes-top-back.png differ diff --git a/assets/celestial-circus/images/eyelashes-top-front.png b/assets/celestial-circus/images/eyelashes-top-front.png new file mode 100644 index 0000000..d5653af Binary files /dev/null and b/assets/celestial-circus/images/eyelashes-top-front.png differ diff --git a/assets/celestial-circus/images/face.png b/assets/celestial-circus/images/face.png new file mode 100644 index 0000000..46f0e25 Binary files /dev/null and b/assets/celestial-circus/images/face.png differ diff --git a/assets/celestial-circus/images/feathers-back.png b/assets/celestial-circus/images/feathers-back.png new file mode 100644 index 0000000..b37fb66 Binary files /dev/null and b/assets/celestial-circus/images/feathers-back.png differ diff --git a/assets/celestial-circus/images/feathers-front.png b/assets/celestial-circus/images/feathers-front.png new file mode 100644 index 0000000..70cc285 Binary files /dev/null and b/assets/celestial-circus/images/feathers-front.png differ diff --git a/assets/celestial-circus/images/fringe-middle-back.png b/assets/celestial-circus/images/fringe-middle-back.png new file mode 100644 index 0000000..18dd9a1 Binary files /dev/null and b/assets/celestial-circus/images/fringe-middle-back.png differ diff --git a/assets/celestial-circus/images/fringe-middle-front.png b/assets/celestial-circus/images/fringe-middle-front.png new file mode 100644 index 0000000..cafd503 Binary files /dev/null and b/assets/celestial-circus/images/fringe-middle-front.png differ diff --git a/assets/celestial-circus/images/fringe-side-back.png b/assets/celestial-circus/images/fringe-side-back.png new file mode 100644 index 0000000..b646bcc Binary files /dev/null and b/assets/celestial-circus/images/fringe-side-back.png differ diff --git a/assets/celestial-circus/images/fringe-side-front.png b/assets/celestial-circus/images/fringe-side-front.png new file mode 100644 index 0000000..2ccc879 Binary files /dev/null and b/assets/celestial-circus/images/fringe-side-front.png differ diff --git a/assets/celestial-circus/images/glove-bottom-back.png b/assets/celestial-circus/images/glove-bottom-back.png new file mode 100644 index 0000000..2a09cdf Binary files /dev/null and b/assets/celestial-circus/images/glove-bottom-back.png differ diff --git a/assets/celestial-circus/images/glove-bottom-front.png b/assets/celestial-circus/images/glove-bottom-front.png new file mode 100644 index 0000000..00f73be Binary files /dev/null and b/assets/celestial-circus/images/glove-bottom-front.png differ diff --git a/assets/celestial-circus/images/hair-back-1.png b/assets/celestial-circus/images/hair-back-1.png new file mode 100644 index 0000000..da64492 Binary files /dev/null and b/assets/celestial-circus/images/hair-back-1.png differ diff --git a/assets/celestial-circus/images/hair-back-2.png b/assets/celestial-circus/images/hair-back-2.png new file mode 100644 index 0000000..867e392 Binary files /dev/null and b/assets/celestial-circus/images/hair-back-2.png differ diff --git a/assets/celestial-circus/images/hair-back-3.png b/assets/celestial-circus/images/hair-back-3.png new file mode 100644 index 0000000..8e804dc Binary files /dev/null and b/assets/celestial-circus/images/hair-back-3.png differ diff --git a/assets/celestial-circus/images/hair-back-4.png b/assets/celestial-circus/images/hair-back-4.png new file mode 100644 index 0000000..0b7c0fd Binary files /dev/null and b/assets/celestial-circus/images/hair-back-4.png differ diff --git a/assets/celestial-circus/images/hair-back-5.png b/assets/celestial-circus/images/hair-back-5.png new file mode 100644 index 0000000..8cea39b Binary files /dev/null and b/assets/celestial-circus/images/hair-back-5.png differ diff --git a/assets/celestial-circus/images/hair-back-6.png b/assets/celestial-circus/images/hair-back-6.png new file mode 100644 index 0000000..5481e87 Binary files /dev/null and b/assets/celestial-circus/images/hair-back-6.png differ diff --git a/assets/celestial-circus/images/hair-hat-shadow.png b/assets/celestial-circus/images/hair-hat-shadow.png new file mode 100644 index 0000000..635e82d Binary files /dev/null and b/assets/celestial-circus/images/hair-hat-shadow.png differ diff --git a/assets/celestial-circus/images/hand-back.png b/assets/celestial-circus/images/hand-back.png new file mode 100644 index 0000000..b34c995 Binary files /dev/null and b/assets/celestial-circus/images/hand-back.png differ diff --git a/assets/celestial-circus/images/hand-front.png b/assets/celestial-circus/images/hand-front.png new file mode 100644 index 0000000..23f8c6e Binary files /dev/null and b/assets/celestial-circus/images/hand-front.png differ diff --git a/assets/celestial-circus/images/hat-back.png b/assets/celestial-circus/images/hat-back.png new file mode 100644 index 0000000..72d2e6b Binary files /dev/null and b/assets/celestial-circus/images/hat-back.png differ diff --git a/assets/celestial-circus/images/hat-front.png b/assets/celestial-circus/images/hat-front.png new file mode 100644 index 0000000..0b8e60b Binary files /dev/null and b/assets/celestial-circus/images/hat-front.png differ diff --git a/assets/celestial-circus/images/head-back.png b/assets/celestial-circus/images/head-back.png new file mode 100644 index 0000000..e261afa Binary files /dev/null and b/assets/celestial-circus/images/head-back.png differ diff --git a/assets/celestial-circus/images/jabot.png b/assets/celestial-circus/images/jabot.png new file mode 100644 index 0000000..c428294 Binary files /dev/null and b/assets/celestial-circus/images/jabot.png differ diff --git a/assets/celestial-circus/images/leg-back.png b/assets/celestial-circus/images/leg-back.png new file mode 100644 index 0000000..1fbfe55 Binary files /dev/null and b/assets/celestial-circus/images/leg-back.png differ diff --git a/assets/celestial-circus/images/leg-front.png b/assets/celestial-circus/images/leg-front.png new file mode 100644 index 0000000..1ba14bd Binary files /dev/null and b/assets/celestial-circus/images/leg-front.png differ diff --git a/assets/celestial-circus/images/logo-brooch.png b/assets/celestial-circus/images/logo-brooch.png new file mode 100644 index 0000000..421cd09 Binary files /dev/null and b/assets/celestial-circus/images/logo-brooch.png differ diff --git a/assets/celestial-circus/images/mouth.png b/assets/celestial-circus/images/mouth.png new file mode 100644 index 0000000..f83849c Binary files /dev/null and b/assets/celestial-circus/images/mouth.png differ diff --git a/assets/celestial-circus/images/neck.png b/assets/celestial-circus/images/neck.png new file mode 100644 index 0000000..6464826 Binary files /dev/null and b/assets/celestial-circus/images/neck.png differ diff --git a/assets/celestial-circus/images/nose-highlight.png b/assets/celestial-circus/images/nose-highlight.png new file mode 100644 index 0000000..64fb6db Binary files /dev/null and b/assets/celestial-circus/images/nose-highlight.png differ diff --git a/assets/celestial-circus/images/nose-shadow.png b/assets/celestial-circus/images/nose-shadow.png new file mode 100644 index 0000000..92c9d49 Binary files /dev/null and b/assets/celestial-circus/images/nose-shadow.png differ diff --git a/assets/celestial-circus/images/nose.png b/assets/celestial-circus/images/nose.png new file mode 100644 index 0000000..fd7b9c3 Binary files /dev/null and b/assets/celestial-circus/images/nose.png differ diff --git a/assets/celestial-circus/images/pupil-back.png b/assets/celestial-circus/images/pupil-back.png new file mode 100644 index 0000000..b6e7b60 Binary files /dev/null and b/assets/celestial-circus/images/pupil-back.png differ diff --git a/assets/celestial-circus/images/pupil-front.png b/assets/celestial-circus/images/pupil-front.png new file mode 100644 index 0000000..33503d6 Binary files /dev/null and b/assets/celestial-circus/images/pupil-front.png differ diff --git a/assets/celestial-circus/images/rope-back.png b/assets/celestial-circus/images/rope-back.png new file mode 100644 index 0000000..2c92189 Binary files /dev/null and b/assets/celestial-circus/images/rope-back.png differ diff --git a/assets/celestial-circus/images/rope-front-bottom.png b/assets/celestial-circus/images/rope-front-bottom.png new file mode 100644 index 0000000..21975d1 Binary files /dev/null and b/assets/celestial-circus/images/rope-front-bottom.png differ diff --git a/assets/celestial-circus/images/rope-front.png b/assets/celestial-circus/images/rope-front.png new file mode 100644 index 0000000..2c92189 Binary files /dev/null and b/assets/celestial-circus/images/rope-front.png differ diff --git a/assets/celestial-circus/images/skirt.png b/assets/celestial-circus/images/skirt.png new file mode 100644 index 0000000..74027e8 Binary files /dev/null and b/assets/celestial-circus/images/skirt.png differ diff --git a/assets/celestial-circus/images/sock-bow.png b/assets/celestial-circus/images/sock-bow.png new file mode 100644 index 0000000..32c9f70 Binary files /dev/null and b/assets/celestial-circus/images/sock-bow.png differ diff --git a/assets/celestial-circus/images/spine-logo-body.png b/assets/celestial-circus/images/spine-logo-body.png new file mode 100644 index 0000000..98c142d Binary files /dev/null and b/assets/celestial-circus/images/spine-logo-body.png differ diff --git a/assets/celestial-circus/images/star-big.png b/assets/celestial-circus/images/star-big.png new file mode 100644 index 0000000..c9373bf Binary files /dev/null and b/assets/celestial-circus/images/star-big.png differ diff --git a/assets/celestial-circus/images/star-medium.png b/assets/celestial-circus/images/star-medium.png new file mode 100644 index 0000000..94e805c Binary files /dev/null and b/assets/celestial-circus/images/star-medium.png differ diff --git a/assets/celestial-circus/images/star-small.png b/assets/celestial-circus/images/star-small.png new file mode 100644 index 0000000..dcfc5c3 Binary files /dev/null and b/assets/celestial-circus/images/star-small.png differ diff --git a/assets/celestial-circus/images/underskirt-back.png b/assets/celestial-circus/images/underskirt-back.png new file mode 100644 index 0000000..252a27c Binary files /dev/null and b/assets/celestial-circus/images/underskirt-back.png differ diff --git a/assets/celestial-circus/images/underskirt.png b/assets/celestial-circus/images/underskirt.png new file mode 100644 index 0000000..95db605 Binary files /dev/null and b/assets/celestial-circus/images/underskirt.png differ diff --git a/assets/celestial-circus/images/wing-back.png b/assets/celestial-circus/images/wing-back.png new file mode 100644 index 0000000..227e272 Binary files /dev/null and b/assets/celestial-circus/images/wing-back.png differ diff --git a/assets/celestial-circus/images/wing-front.png b/assets/celestial-circus/images/wing-front.png new file mode 100644 index 0000000..0187fa0 Binary files /dev/null and b/assets/celestial-circus/images/wing-front.png differ diff --git a/assets/celestial-circus/license.txt b/assets/celestial-circus/license.txt new file mode 100644 index 0000000..2474ee4 --- /dev/null +++ b/assets/celestial-circus/license.txt @@ -0,0 +1,8 @@ +Copyright (c) 2023-2024, Esoteric Software + +The images in this project may be redistributed as long as they are accompanied +by this license file. The images may not be used for commercial use of any +kind. + +The project file is released into the public domain. It may be used as the basis +for derivative work. \ No newline at end of file diff --git a/assets/cloud-pot/cloud-pot-pro.spine b/assets/cloud-pot/cloud-pot-pro.spine new file mode 100644 index 0000000..25705aa Binary files /dev/null and b/assets/cloud-pot/cloud-pot-pro.spine differ diff --git a/assets/cloud-pot/export/cloud-pot-pma.atlas b/assets/cloud-pot/export/cloud-pot-pma.atlas new file mode 100644 index 0000000..9e401d2 --- /dev/null +++ b/assets/cloud-pot/export/cloud-pot-pma.atlas @@ -0,0 +1,86 @@ +cloud-pot-pma.png + size: 1024, 512 + filter: Linear, Linear + pma: true + scale: 0.5 +cloud-base-1 + bounds: 2, 300, 233, 210 +cloud-base-10 + bounds: 214, 113, 97, 101 +cloud-base-2 + bounds: 2, 90, 210, 208 +cloud-base-3 + bounds: 237, 346, 175, 164 +cloud-base-4 + bounds: 414, 347, 176, 163 +cloud-base-5 + bounds: 313, 89, 145, 125 +cloud-base-6 + bounds: 744, 374, 161, 136 +cloud-base-7 + bounds: 592, 361, 150, 149 +cloud-base-8 + bounds: 237, 216, 154, 128 +cloud-base-9 + bounds: 907, 402, 107, 108 +cloud-cheeks + bounds: 2, 9, 218, 79 +cloud-eyes-closed + bounds: 744, 350, 132, 22 +cloud-eyes-open + bounds: 592, 333, 133, 26 +cloud-eyes-reflex + bounds: 393, 224, 120, 17 + rotate: 90 +cloud-mouth-closed + bounds: 907, 374, 49, 16 +cloud-mouth-open + bounds: 222, 15, 59, 35 +leaf-big + bounds: 214, 218, 20, 49 +leaf-small + bounds: 958, 373, 17, 30 + rotate: 90 +petal-1 + bounds: 283, 2, 26, 18 +petal-2 + bounds: 283, 22, 28, 17 + rotate: 90 +petal-3 + bounds: 214, 269, 29, 21 + rotate: 90 +pot-base + bounds: 222, 52, 76, 59 +pot-eyes-closed + bounds: 878, 363, 46, 9 +pot-eyes-open + bounds: 222, 2, 40, 11 +pot-mouth-open + bounds: 990, 374, 14, 16 +pot-mouth-pouty + bounds: 300, 93, 18, 10 + rotate: 90 +pot-mouth-smile + bounds: 300, 77, 14, 10 + rotate: 90 +pot-mouth-smile-big + bounds: 878, 352, 20, 9 +rain-blue + bounds: 926, 360, 12, 18 + rotate: 90 +rain-color + bounds: 264, 4, 9, 17 + rotate: 90 +rain-green + bounds: 900, 349, 12, 18 + rotate: 90 +rain-white + bounds: 727, 337, 12, 22 +rain-white-reflex + bounds: 2, 2, 5, 10 + rotate: 90 +stem + bounds: 907, 392, 8, 105 + rotate: 90 +stem-end + bounds: 300, 62, 13, 13 diff --git a/assets/cloud-pot/export/cloud-pot-pma.png b/assets/cloud-pot/export/cloud-pot-pma.png new file mode 100644 index 0000000..c0a5747 Binary files /dev/null and b/assets/cloud-pot/export/cloud-pot-pma.png differ diff --git a/assets/cloud-pot/export/cloud-pot.atlas b/assets/cloud-pot/export/cloud-pot.atlas new file mode 100644 index 0000000..d7e3130 --- /dev/null +++ b/assets/cloud-pot/export/cloud-pot.atlas @@ -0,0 +1,85 @@ +cloud-pot.png + size: 1024, 512 + filter: Linear, Linear + scale: 0.5 +cloud-base-1 + bounds: 2, 300, 233, 210 +cloud-base-10 + bounds: 214, 113, 97, 101 +cloud-base-2 + bounds: 2, 90, 210, 208 +cloud-base-3 + bounds: 237, 346, 175, 164 +cloud-base-4 + bounds: 414, 347, 176, 163 +cloud-base-5 + bounds: 313, 89, 145, 125 +cloud-base-6 + bounds: 744, 374, 161, 136 +cloud-base-7 + bounds: 592, 361, 150, 149 +cloud-base-8 + bounds: 237, 216, 154, 128 +cloud-base-9 + bounds: 907, 402, 107, 108 +cloud-cheeks + bounds: 2, 9, 218, 79 +cloud-eyes-closed + bounds: 744, 350, 132, 22 +cloud-eyes-open + bounds: 592, 333, 133, 26 +cloud-eyes-reflex + bounds: 393, 224, 120, 17 + rotate: 90 +cloud-mouth-closed + bounds: 907, 374, 49, 16 +cloud-mouth-open + bounds: 222, 15, 59, 35 +leaf-big + bounds: 214, 218, 20, 49 +leaf-small + bounds: 958, 373, 17, 30 + rotate: 90 +petal-1 + bounds: 283, 2, 26, 18 +petal-2 + bounds: 283, 22, 28, 17 + rotate: 90 +petal-3 + bounds: 214, 269, 29, 21 + rotate: 90 +pot-base + bounds: 222, 52, 76, 59 +pot-eyes-closed + bounds: 878, 363, 46, 9 +pot-eyes-open + bounds: 222, 2, 40, 11 +pot-mouth-open + bounds: 990, 374, 14, 16 +pot-mouth-pouty + bounds: 300, 93, 18, 10 + rotate: 90 +pot-mouth-smile + bounds: 300, 77, 14, 10 + rotate: 90 +pot-mouth-smile-big + bounds: 878, 352, 20, 9 +rain-blue + bounds: 926, 360, 12, 18 + rotate: 90 +rain-color + bounds: 264, 4, 9, 17 + rotate: 90 +rain-green + bounds: 900, 349, 12, 18 + rotate: 90 +rain-white + bounds: 727, 337, 12, 22 +rain-white-reflex + bounds: 2, 2, 5, 10 + rotate: 90 +stem + bounds: 907, 392, 8, 105 + rotate: 90 +stem-end + bounds: 300, 62, 13, 13 diff --git a/assets/cloud-pot/export/cloud-pot.json b/assets/cloud-pot/export/cloud-pot.json new file mode 100644 index 0000000..3ade346 --- /dev/null +++ b/assets/cloud-pot/export/cloud-pot.json @@ -0,0 +1,842 @@ +{ +"skeleton": { + "hash": "CKnF82un6n8", + "spine": "4.2.64-beta", + "x": -345, + "y": -272846.84, + "width": 756, + "height": 273927.84, + "images": "./images/", + "audio": "" +}, +"bones": [ + { "name": "root" }, + { "name": "pot-control", "parent": "root", "x": 5, "y": 42, "color": "8828ffff", "icon": "arrowsB" }, + { "name": "cloud", "parent": "pot-control", "x": 26.5, "y": 772, "color": "1ee8c0ff", "icon": "circle" }, + { "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, "color": "b0d5eaff" }, + { "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, "color": "b0d5eaff" }, + { "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, "color": "b0d5eaff" }, + { "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, "color": "b0d5eaff" }, + { "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, "color": "b0d5eaff" }, + { "name": "rain-blue", "parent": "cloud", "x": 102.49, "y": -26, "color": "2360e3ff", "icon": "diamond" }, + { "name": "rain-color", "parent": "cloud", "x": -39.42, "y": -26, "color": "2360e3ff", "icon": "diamond" }, + { "name": "rain-green", "parent": "cloud", "x": 35.08, "y": -26, "color": "2360e3ff", "icon": "diamond" }, + { "name": "rain-white", "parent": "cloud", "x": -103.92, "y": -26, "color": "2360e3ff", "icon": "diamond" }, + { "name": "pot", "parent": "pot-control", "x": -5, "y": -42, "color": "8828ffff" }, + { "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, + "color": "abe323ff" + }, + { "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": [ + { "name": "rain/rain-green", "bone": "rain-green", "attachment": "rain-green" }, + { "name": "rain/rain-blue", "bone": "rain-blue", "attachment": "rain-blue" }, + { "name": "rain/rain-color", "bone": "rain-color", "attachment": "rain-color" }, + { "name": "rain/rain-white", "bone": "rain-white", "attachment": "rain-white" }, + { "name": "rain/rain-white-reflex", "bone": "rain-white", "attachment": "rain-white-reflex" }, + { "name": "flower/petal-1", "bone": "petal-1", "attachment": "petal-1" }, + { "name": "flower/petal-2", "bone": "petal-2", "attachment": "petal-2" }, + { "name": "flower/petal-3", "bone": "petal-3", "attachment": "petal-3" }, + { "name": "flower/stem", "bone": "stem", "attachment": "stem" }, + { "name": "flower/leaf-big", "bone": "leaf-big", "attachment": "leaf-big" }, + { "name": "flower/leaf-small", "bone": "leaf-small", "attachment": "leaf-small" }, + { "name": "flower/stem-end", "bone": "stem3", "attachment": "stem-end" }, + { "name": "pot/pot-base", "bone": "pot", "attachment": "pot-base" }, + { "name": "pot/pot-mouth", "bone": "pot-face", "attachment": "pot-mouth-smile-big" }, + { "name": "pot/pot-eyes", "bone": "pot-face", "attachment": "pot-eyes-open" }, + { "name": "cloud/cloud-base/cloud-base-1", "bone": "cloud-base-1", "attachment": "cloud-base-1" }, + { "name": "cloud/cloud-base/cloud-base-2", "bone": "cloud-base-2", "attachment": "cloud-base-2" }, + { "name": "cloud/cloud-base/cloud-base-3", "bone": "cloud-base-3", "attachment": "cloud-base-3" }, + { "name": "cloud/cloud-base/cloud-base-4", "bone": "cloud-base-4", "attachment": "cloud-base-4" }, + { "name": "cloud/cloud-base/cloud-base-5", "bone": "cloud-base-5", "attachment": "cloud-base-5" }, + { "name": "cloud/cloud-base/cloud-base-6", "bone": "cloud-base-6", "attachment": "cloud-base-6" }, + { "name": "cloud/cloud-base/cloud-base-7", "bone": "cloud-base-7", "attachment": "cloud-base-7" }, + { "name": "cloud/cloud-base/cloud-base-8", "bone": "cloud-base-8", "attachment": "cloud-base-8" }, + { "name": "cloud/cloud-base/cloud-base-9", "bone": "cloud-base-9", "attachment": "cloud-base-9" }, + { "name": "cloud/cloud-base/cloud-base-10", "bone": "cloud-base-10", "attachment": "cloud-base-10" }, + { "name": "cloud/cloud-cheeks", "bone": "cloud-face", "attachment": "cloud-cheeks" }, + { "name": "cloud/cloud-eyes", "bone": "cloud-face", "attachment": "cloud-eyes-open" }, + { "name": "cloud/cloud-eyes-reflex", "bone": "cloud-face", "attachment": "cloud-eyes-reflex" }, + { "name": "cloud/cloud-mouth", "bone": "cloud-face", "attachment": "cloud-mouth-closed" } +], +"physics": [ + { + "name": "cloud", + "order": 25, + "bone": "cloud", + "x": 1, + "y": 1, + "inertia": 0.5, + "strength": 172.8, + "damping": 0.8571, + "mass": 3 + }, + { + "name": "cloud-face", + "order": 24, + "bone": "cloud-face", + "x": 0.1923, + "y": 0.141, + "limit": 500, + "inertia": 0.5, + "damping": 0.15 + }, + { + "name": "pot-face", + "order": 23, + "bone": "pot-face", + "x": 0.1667, + "y": 0.1026, + "limit": 500, + "inertia": 0.5, + "strength": 137.3, + "damping": 0.6078 + }, + { + "name": "cloud-base/cloud-base-1", + "order": 4, + "bone": "cloud-base-1", + "x": 1, + "y": 1, + "limit": 500, + "inertia": 0.3741, + "strength": 134.7, + "damping": 0.8163, + "mass": 2.8 + }, + { + "name": "cloud-base/cloud-base-2", + "order": 5, + "bone": "cloud-base-2", + "x": 1, + "y": 1, + "limit": 300, + "inertia": 0.3741, + "strength": 134.7, + "damping": 0.8163, + "mass": 2.8 + }, + { + "name": "cloud-base/cloud-base-3", + "order": 6, + "bone": "cloud-base-3", + "x": 1, + "y": 1, + "limit": 300, + "inertia": 0.3741, + "strength": 134.7, + "damping": 0.8163, + "mass": 2.8 + }, + { + "name": "cloud-base/cloud-base-4", + "order": 7, + "bone": "cloud-base-4", + "x": 1, + "y": 1, + "limit": 500, + "inertia": 0.3741, + "strength": 134.7, + "damping": 0.8163, + "mass": 2.8 + }, + { + "name": "cloud-base/cloud-base-5", + "order": 8, + "bone": "cloud-base-5", + "x": 1, + "y": 1, + "limit": 300, + "inertia": 0.3741, + "strength": 134.7, + "damping": 0.8163, + "mass": 2.8 + }, + { + "name": "cloud-base/cloud-base-6", + "order": 9, + "bone": "cloud-base-6", + "x": 1, + "y": 1, + "limit": 300, + "inertia": 0.3741, + "strength": 134.7, + "damping": 0.8163, + "mass": 2.8 + }, + { + "name": "cloud-base/cloud-base-7", + "order": 10, + "bone": "cloud-base-7", + "x": 1, + "y": 1, + "limit": 300, + "inertia": 0.3741, + "strength": 134.7, + "damping": 0.8163, + "mass": 2.8 + }, + { + "name": "cloud-base/cloud-base-8", + "order": 11, + "bone": "cloud-base-8", + "x": 1, + "y": 1, + "limit": 300, + "inertia": 0.3741, + "strength": 134.7, + "damping": 0.8163, + "mass": 2.8 + }, + { + "name": "cloud-base/cloud-base-9", + "order": 12, + "bone": "cloud-base-9", + "x": 1, + "y": 1, + "limit": 300, + "inertia": 0.3741, + "strength": 134.7, + "damping": 0.8163, + "mass": 2.8 + }, + { + "name": "cloud-base/cloud-base-10", + "order": 13, + "bone": "cloud-base-10", + "x": 1, + "y": 1, + "limit": 300, + "inertia": 0.3741, + "strength": 134.7, + "damping": 0.8163, + "mass": 2.8 + }, + { + "name": "plant/leaf-big", + "order": 14, + "bone": "leaf-big", + "rotate": 0.7532, + "shearX": 0.2468, + "limit": 500, + "inertia": 0.5, + "strength": 160.5, + "damping": 0.8367, + "mass": 4 + }, + { + "name": "plant/leaf-big-tip", + "order": 22, + "bone": "leaf-big-tip", + "rotate": 1, + "limit": 500, + "inertia": 0.5, + "strength": 160.5, + "damping": 0.8367, + "mass": 4 + }, + { + "name": "plant/leaf-small", + "order": 15, + "bone": "leaf-small", + "rotate": 0.6026, + "limit": 500, + "inertia": 0.5, + "strength": 160.5, + "damping": 0.8367, + "mass": 4 + }, + { + "name": "plant/petal-1", + "order": 19, + "bone": "petal-1", + "rotate": 1, + "limit": 500, + "inertia": 0.5, + "strength": 164.6, + "damping": 0.6531, + "mass": 2.6 + }, + { + "name": "plant/petal-2", + "order": 21, + "bone": "petal-2", + "rotate": 1, + "limit": 500, + "inertia": 0.5, + "strength": 164.6, + "damping": 0.6531, + "mass": 2.6 + }, + { + "name": "plant/petal-3", + "order": 20, + "bone": "petal-3", + "rotate": 1, + "limit": 500, + "inertia": 0.5, + "strength": 164.6, + "damping": 0.7823, + "mass": 3.83 + }, + { + "name": "plant/stem", + "order": 16, + "bone": "stem", + "rotate": 0.8205, + "limit": 700, + "inertia": 0.5, + "strength": 152.4, + "damping": 0.9388, + "mass": 2.6 + }, + { + "name": "plant/stem2", + "order": 17, + "bone": "stem2", + "rotate": 0.8205, + "limit": 700, + "inertia": 0.5, + "strength": 152.4, + "damping": 0.9388, + "mass": 2.6 + }, + { + "name": "plant/stem3", + "order": 18, + "bone": "stem3", + "rotate": 0.8205, + "limit": 700, + "inertia": 0.5, + "strength": 152.4, + "damping": 0.9388, + "mass": 2.6 + }, + { + "name": "rain/rain-blue", + "order": 3, + "bone": "rain-blue", + "x": 1, + "y": 1, + "strength": 0, + "gravity": 70 + }, + { + "name": "rain/rain-color", + "order": 2, + "bone": "rain-color", + "x": 1, + "y": 1, + "strength": 0, + "gravity": 70 + }, + { + "name": "rain/rain-green", + "order": 1, + "bone": "rain-green", + "x": 1, + "y": 1, + "strength": 0, + "gravity": 70 + }, + { "name": "rain/rain-white", "bone": "rain-white", "x": 1, "y": 1, "strength": 0, "gravity": 70 } +], +"skins": [ + { + "name": "default", + "attachments": { + "cloud-base-1": { + "cloud-base-1": { "width": 465, "height": 420 } + }, + "cloud-base-2": { + "cloud-base-2": { "width": 420, "height": 415 } + }, + "cloud-base-3": { + "cloud-base-3": { "width": 349, "height": 327 } + }, + "cloud-base-4": { + "cloud-base-4": { "width": 352, "height": 326 } + }, + "cloud-base-5": { + "cloud-base-5": { "width": 289, "height": 250 } + }, + "cloud-base-6": { + "cloud-base-6": { "width": 322, "height": 272 } + }, + "cloud-base-7": { + "cloud-base-7": { "width": 300, "height": 297 } + }, + "cloud-base-8": { + "cloud-base-8": { "width": 307, "height": 256 } + }, + "cloud-base-9": { + "cloud-base-9": { "width": 214, "height": 216 } + }, + "cloud-base-10": { + "cloud-base-10": { "width": 193, "height": 201 } + }, + "cloud-cheeks": { + "cloud-cheeks": { "x": -19, "y": -53.93, "width": 435, "height": 158 } + }, + "cloud-eyes": { + "cloud-eyes-closed": { "x": -10, "y": -5.43, "width": 263, "height": 43 }, + "cloud-eyes-open": { "x": -8, "y": -4.43, "width": 265, "height": 51 } + }, + "cloud-eyes-reflex": { + "cloud-eyes-reflex": { "x": -10, "y": 2.07, "width": 239, "height": 34 } + }, + "cloud-mouth": { + "cloud-mouth-closed": { "y": -14.93, "width": 97, "height": 32 }, + "cloud-mouth-open": { "x": -0.5, "y": -27.93, "width": 118, "height": 70 } + }, + "leaf-big": { + "leaf-big": { + "type": "mesh", + "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 ], + "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, + "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": { "x": 25.02, "y": 0.4, "rotation": -91.36, "width": 34, "height": 59 } + }, + "petal-1": { + "petal-1": { "x": 18.88, "y": -4.54, "rotation": -160.18, "width": 52, "height": 36 } + }, + "petal-2": { + "petal-2": { "x": 21.96, "y": 2.06, "rotation": -9.66, "width": 56, "height": 34 } + }, + "petal-3": { + "petal-3": { "x": 16.97, "y": -5.71, "rotation": -91.03, "width": 58, "height": 42 } + }, + "stem": { + "stem": { + "type": "mesh", + "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 ], + "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, + "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": { "x": 25.8, "y": -0.26, "rotation": -90, "width": 25, "height": 26 } + }, + "pot-base": { + "pot-base": { "x": 5, "y": 42, "width": 152, "height": 118 } + }, + "pot-eyes": { + "pot-eyes-closed": { "x": -0.94, "y": 2.34, "width": 92, "height": 17 }, + "pot-eyes-open": { "x": 0.06, "y": 3.84, "width": 80, "height": 22 } + }, + "pot-mouth": { + "pot-mouth-open": { "x": -1.44, "y": -13.66, "width": 27, "height": 31 }, + "pot-mouth-pouty": { "x": 0.56, "y": -12.66, "width": 35, "height": 19 }, + "pot-mouth-smile": { "x": 0.56, "y": -12.16, "width": 27, "height": 20 }, + "pot-mouth-smile-big": { "x": 1.56, "y": -9.16, "width": 39, "height": 18 } + }, + "rain-blue": { + "rain-blue": { "width": 23, "height": 36 } + }, + "rain-color": { + "rain-color": { "width": 18, "height": 34 } + }, + "rain-green": { + "rain-green": { "width": 23, "height": 36 } + }, + "rain-white": { + "rain-white": { "width": 23, "height": 44 } + }, + "rain-white-reflex": { + "rain-white-reflex": { "x": -0.5, "y": 3.5, "width": 10, "height": 19 } + } + } + } +], +"animations": { + "playing-in-the-rain": { + "slots": { + "cloud-eyes": { + "attachment": [ + { "time": 0.2, "name": "cloud-eyes-closed" }, + { "time": 0.9, "name": "cloud-eyes-open" }, + { "time": 1.7667, "name": "cloud-eyes-closed" }, + { "time": 1.9333, "name": "cloud-eyes-open" }, + { "time": 2.4333, "name": "cloud-eyes-closed" }, + { "time": 2.6, "name": "cloud-eyes-open" }, + { "time": 3.9333, "name": "cloud-eyes-closed" }, + { "time": 4.1, "name": "cloud-eyes-open" } + ] + }, + "cloud-mouth": { + "attachment": [ + { "time": 0.2, "name": "cloud-mouth-open" }, + { "time": 0.9, "name": "cloud-mouth-closed" } + ] + }, + "pot-eyes": { + "attachment": [ + { "time": 0.1333, "name": "pot-eyes-closed" }, + { "time": 0.3, "name": "pot-eyes-open" }, + { "time": 1.0667, "name": "pot-eyes-closed" }, + { "time": 1.5, "name": "pot-eyes-open" }, + { "time": 3.0333, "name": "pot-eyes-closed" }, + { "time": 3.2333, "name": "pot-eyes-open" }, + { "time": 3.4667, "name": "pot-eyes-closed" }, + { "time": 3.6667, "name": "pot-eyes-open" } + ] + }, + "pot-mouth": { + "attachment": [ + { "time": 0.1333, "name": "pot-mouth-open" }, + { "time": 0.3, "name": "pot-mouth-smile-big" }, + { "time": 1.0667, "name": "pot-mouth-pouty" }, + { "time": 2.4, "name": "pot-mouth-smile" }, + { "time": 3.0333, "name": "pot-mouth-smile-big" } + ] + } + }, + "bones": { + "pot": { + "rotate": [ + { "time": 1.1 }, + { "time": 1.2, "value": -12.76 }, + { "time": 1.5333, "curve": "stepped" }, + { "time": 3.7667 }, + { "time": 3.9, "value": 8.28 }, + { "time": 4.2333, "value": -4.34 }, + { "time": 4.4333 } + ], + "scale": [ + {}, + { "time": 0.2, "y": 0.752 }, + { "time": 0.4, "x": 0.845, "y": 1.068 }, + { "time": 0.6333 } + ] + }, + "pot-control": { + "translatex": [ + { + "time": 1.0667, + "curve": [ 1.222, -203.48, 1.378, -610.44 ] + }, + { "time": 1.5333, "value": -610.44, "curve": "stepped" }, + { + "time": 2.2333, + "value": -610.44, + "curve": [ 2.389, -610.44, 2.544, -478.45 ] + }, + { "time": 2.7, "value": -478.45, "curve": "stepped" }, + { + "time": 3.8333, + "value": -478.45, + "curve": [ 3.971, -478.45, 4.095, -135.56 ] + }, + { "time": 4.2333 } + ], + "translatey": [ + { + "time": 1.0333, + "curve": [ 1.089, 10.56, 1.144, 44.34 ] + }, + { + "time": 1.2, + "value": 44.34, + "curve": [ 1.256, 44.34, 1.311, 0 ] + }, + { "time": 1.3667, "curve": "stepped" }, + { + "time": 2.2333, + "curve": [ 2.408, 0, 2.392, 44.34 ] + }, + { + "time": 2.4333, + "value": 44.34, + "curve": [ 2.455, 44.34, 2.51, 0 ] + }, + { "time": 2.6, "curve": "stepped" }, + { + "time": 3.8, + "curve": [ 3.841, 14.78, 3.893, 44.34 ] + }, + { + "time": 3.9333, + "value": 44.34, + "curve": [ 4.023, 44.34, 4.111, 14.78 ] + }, + { "time": 4.2 } + ] + }, + "cloud-base-1": { + "rotate": [ + { + "curve": [ 0.144, -9.36, 0.289, -17.29 ] + }, + { + "time": 0.4333, + "value": -17.29, + "curve": [ 0.5, -17.29, 0.567, -4.32 ] + }, + { "time": 0.6333 } + ], + "scale": [ + { + "curve": [ 0.089, 1, 0.178, 1.064, 0.089, 1, 0.178, 1.064 ] + }, + { + "time": 0.2667, + "x": 1.064, + "y": 1.064, + "curve": [ 0.411, 1.064, 0.556, 1.021, 0.411, 1.064, 0.556, 1.021 ] + }, + { "time": 0.7 } + ] + }, + "cloud-base-4": { + "rotate": [ + { + "curve": [ 0.1, 5.55, 0.2, 14.81 ] + }, + { + "time": 0.3, + "value": 14.81, + "curve": [ 0.467, 14.81, 0.633, 9.25 ] + }, + { "time": 0.8 } + ], + "scale": [ + { + "curve": [ 0.089, 1, 0.178, 1.064, 0.089, 1, 0.178, 1.064 ] + }, + { + "time": 0.2667, + "x": 1.064, + "y": 1.064, + "curve": [ 0.411, 1.064, 0.556, 1.021, 0.411, 1.064, 0.556, 1.021 ] + }, + { "time": 0.7 } + ] + }, + "cloud": { + "translate": [ + { "time": 0.2333 }, + { "time": 0.3333, "y": 30.43 }, + { "time": 0.4667 }, + { "time": 0.5667, "y": 30.43 }, + { "time": 0.6667 }, + { "time": 0.7667, "y": 30.43 }, + { "time": 0.9333 } + ] + } + }, + "physics": { + "rain/rain-blue": { + "reset": [ + { "time": 0.4667 }, + { "time": 0.9333 }, + { "time": 1.4 }, + { "time": 1.8667 }, + { "time": 2.3333 }, + { "time": 2.8 }, + { "time": 3.2667 }, + { "time": 3.7333 }, + { "time": 4.2 }, + { "time": 4.6667 } + ] + }, + "rain/rain-color": { + "reset": [ + { "time": 0.3 }, + { "time": 0.7667 }, + { "time": 1.2333 }, + { "time": 1.7 }, + { "time": 2.1667 }, + { "time": 2.6333 }, + { "time": 3.1 }, + { "time": 3.5667 }, + { "time": 4.0333 }, + { "time": 4.5 } + ] + }, + "rain/rain-green": { + "reset": [ + { "time": 0.1333 }, + { "time": 0.6 }, + { "time": 1.0667 }, + { "time": 1.5333 }, + { "time": 2 }, + { "time": 2.4667 }, + { "time": 2.9333 }, + { "time": 3.4 }, + { "time": 3.8667 }, + { "time": 4.3333 } + ] + }, + "rain/rain-white": { + "reset": [ + {}, + { "time": 0.4667 }, + { "time": 0.9333 }, + { "time": 1.4 }, + { "time": 1.8667 }, + { "time": 2.3333 }, + { "time": 2.8 }, + { "time": 3.2667 }, + { "time": 3.7333 }, + { "time": 4.2 } + ] + } + } + }, + "pot-moving-followed-by-rain": { + "bones": { + "pot-control": { + "translate": [ + {}, + { "time": 0.5667, "x": -389.34, "curve": "stepped" }, + { "time": 1.1667, "x": -389.34 }, + { "time": 2.2, "x": 463.88, "curve": "stepped" }, + { "time": 2.4667, "x": 463.88 }, + { "time": 3 } + ] + } + }, + "physics": { + "rain/rain-blue": { + "reset": [ + { "time": 0.4667 }, + { "time": 0.9333 }, + { "time": 1.4 }, + { "time": 1.8667 }, + { "time": 2.3333 }, + { "time": 2.8 }, + { "time": 3.2667 } + ] + }, + "rain/rain-color": { + "reset": [ + { "time": 0.3 }, + { "time": 0.7667 }, + { "time": 1.2333 }, + { "time": 1.7 }, + { "time": 2.1667 }, + { "time": 2.6333 }, + { "time": 3.1 } + ] + }, + "rain/rain-green": { + "reset": [ + { "time": 0.1333 }, + { "time": 0.6 }, + { "time": 1.0667 }, + { "time": 1.5333 }, + { "time": 2 }, + { "time": 2.4667 }, + { "time": 2.9333 } + ] + }, + "rain/rain-white": { + "reset": [ + {}, + { "time": 0.4667 }, + { "time": 0.9333 }, + { "time": 1.4 }, + { "time": 1.8667 }, + { "time": 2.3333 }, + { "time": 2.8 } + ] + } + } + }, + "rain": { + "physics": { + "rain/rain-blue": { + "reset": [ + { "time": 0.4667 } + ] + }, + "rain/rain-color": { + "reset": [ + { "time": 0.3 } + ] + }, + "rain/rain-green": { + "reset": [ + { "time": 0.1333 } + ] + }, + "rain/rain-white": { + "reset": [ + {} + ] + } + } + } +} +} \ No newline at end of file diff --git a/assets/cloud-pot/export/cloud-pot.png b/assets/cloud-pot/export/cloud-pot.png new file mode 100644 index 0000000..cb5ef99 Binary files /dev/null and b/assets/cloud-pot/export/cloud-pot.png differ diff --git a/assets/cloud-pot/export/cloud-pot.skel b/assets/cloud-pot/export/cloud-pot.skel new file mode 100644 index 0000000..f04e1a8 Binary files /dev/null and b/assets/cloud-pot/export/cloud-pot.skel differ diff --git a/assets/cloud-pot/images/cloud-base-1.png b/assets/cloud-pot/images/cloud-base-1.png new file mode 100644 index 0000000..e948fb7 Binary files /dev/null and b/assets/cloud-pot/images/cloud-base-1.png differ diff --git a/assets/cloud-pot/images/cloud-base-10.png b/assets/cloud-pot/images/cloud-base-10.png new file mode 100644 index 0000000..349abef Binary files /dev/null and b/assets/cloud-pot/images/cloud-base-10.png differ diff --git a/assets/cloud-pot/images/cloud-base-2.png b/assets/cloud-pot/images/cloud-base-2.png new file mode 100644 index 0000000..ac4e081 Binary files /dev/null and b/assets/cloud-pot/images/cloud-base-2.png differ diff --git a/assets/cloud-pot/images/cloud-base-3.png b/assets/cloud-pot/images/cloud-base-3.png new file mode 100644 index 0000000..7eb2f5d Binary files /dev/null and b/assets/cloud-pot/images/cloud-base-3.png differ diff --git a/assets/cloud-pot/images/cloud-base-4.png b/assets/cloud-pot/images/cloud-base-4.png new file mode 100644 index 0000000..8bec7d5 Binary files /dev/null and b/assets/cloud-pot/images/cloud-base-4.png differ diff --git a/assets/cloud-pot/images/cloud-base-5.png b/assets/cloud-pot/images/cloud-base-5.png new file mode 100644 index 0000000..a2b7039 Binary files /dev/null and b/assets/cloud-pot/images/cloud-base-5.png differ diff --git a/assets/cloud-pot/images/cloud-base-6.png b/assets/cloud-pot/images/cloud-base-6.png new file mode 100644 index 0000000..4f54748 Binary files /dev/null and b/assets/cloud-pot/images/cloud-base-6.png differ diff --git a/assets/cloud-pot/images/cloud-base-7.png b/assets/cloud-pot/images/cloud-base-7.png new file mode 100644 index 0000000..d9d7e6e Binary files /dev/null and b/assets/cloud-pot/images/cloud-base-7.png differ diff --git a/assets/cloud-pot/images/cloud-base-8.png b/assets/cloud-pot/images/cloud-base-8.png new file mode 100644 index 0000000..d6e9aa3 Binary files /dev/null and b/assets/cloud-pot/images/cloud-base-8.png differ diff --git a/assets/cloud-pot/images/cloud-base-9.png b/assets/cloud-pot/images/cloud-base-9.png new file mode 100644 index 0000000..591b305 Binary files /dev/null and b/assets/cloud-pot/images/cloud-base-9.png differ diff --git a/assets/cloud-pot/images/cloud-cheeks.png b/assets/cloud-pot/images/cloud-cheeks.png new file mode 100644 index 0000000..49a36af Binary files /dev/null and b/assets/cloud-pot/images/cloud-cheeks.png differ diff --git a/assets/cloud-pot/images/cloud-eyes-closed.png b/assets/cloud-pot/images/cloud-eyes-closed.png new file mode 100644 index 0000000..e600fc6 Binary files /dev/null and b/assets/cloud-pot/images/cloud-eyes-closed.png differ diff --git a/assets/cloud-pot/images/cloud-eyes-open.png b/assets/cloud-pot/images/cloud-eyes-open.png new file mode 100644 index 0000000..0faa14a Binary files /dev/null and b/assets/cloud-pot/images/cloud-eyes-open.png differ diff --git a/assets/cloud-pot/images/cloud-eyes-reflex.png b/assets/cloud-pot/images/cloud-eyes-reflex.png new file mode 100644 index 0000000..52f6b57 Binary files /dev/null and b/assets/cloud-pot/images/cloud-eyes-reflex.png differ diff --git a/assets/cloud-pot/images/cloud-mouth-closed.png b/assets/cloud-pot/images/cloud-mouth-closed.png new file mode 100644 index 0000000..3ce7c07 Binary files /dev/null and b/assets/cloud-pot/images/cloud-mouth-closed.png differ diff --git a/assets/cloud-pot/images/cloud-mouth-open.png b/assets/cloud-pot/images/cloud-mouth-open.png new file mode 100644 index 0000000..0ec62f4 Binary files /dev/null and b/assets/cloud-pot/images/cloud-mouth-open.png differ diff --git a/assets/cloud-pot/images/leaf-big.png b/assets/cloud-pot/images/leaf-big.png new file mode 100644 index 0000000..67066a2 Binary files /dev/null and b/assets/cloud-pot/images/leaf-big.png differ diff --git a/assets/cloud-pot/images/leaf-small.png b/assets/cloud-pot/images/leaf-small.png new file mode 100644 index 0000000..8cf073a Binary files /dev/null and b/assets/cloud-pot/images/leaf-small.png differ diff --git a/assets/cloud-pot/images/petal-1.png b/assets/cloud-pot/images/petal-1.png new file mode 100644 index 0000000..b35e8f1 Binary files /dev/null and b/assets/cloud-pot/images/petal-1.png differ diff --git a/assets/cloud-pot/images/petal-2.png b/assets/cloud-pot/images/petal-2.png new file mode 100644 index 0000000..143f047 Binary files /dev/null and b/assets/cloud-pot/images/petal-2.png differ diff --git a/assets/cloud-pot/images/petal-3.png b/assets/cloud-pot/images/petal-3.png new file mode 100644 index 0000000..8078add Binary files /dev/null and b/assets/cloud-pot/images/petal-3.png differ diff --git a/assets/cloud-pot/images/pot-base.png b/assets/cloud-pot/images/pot-base.png new file mode 100644 index 0000000..ae79b06 Binary files /dev/null and b/assets/cloud-pot/images/pot-base.png differ diff --git a/assets/cloud-pot/images/pot-eyes-closed.png b/assets/cloud-pot/images/pot-eyes-closed.png new file mode 100644 index 0000000..2c83ff3 Binary files /dev/null and b/assets/cloud-pot/images/pot-eyes-closed.png differ diff --git a/assets/cloud-pot/images/pot-eyes-open.png b/assets/cloud-pot/images/pot-eyes-open.png new file mode 100644 index 0000000..6642ab9 Binary files /dev/null and b/assets/cloud-pot/images/pot-eyes-open.png differ diff --git a/assets/cloud-pot/images/pot-mouth-open.png b/assets/cloud-pot/images/pot-mouth-open.png new file mode 100644 index 0000000..b8669ef Binary files /dev/null and b/assets/cloud-pot/images/pot-mouth-open.png differ diff --git a/assets/cloud-pot/images/pot-mouth-pouty.png b/assets/cloud-pot/images/pot-mouth-pouty.png new file mode 100644 index 0000000..f9311d8 Binary files /dev/null and b/assets/cloud-pot/images/pot-mouth-pouty.png differ diff --git a/assets/cloud-pot/images/pot-mouth-smile-big.png b/assets/cloud-pot/images/pot-mouth-smile-big.png new file mode 100644 index 0000000..4080a9d Binary files /dev/null and b/assets/cloud-pot/images/pot-mouth-smile-big.png differ diff --git a/assets/cloud-pot/images/pot-mouth-smile.png b/assets/cloud-pot/images/pot-mouth-smile.png new file mode 100644 index 0000000..04008c2 Binary files /dev/null and b/assets/cloud-pot/images/pot-mouth-smile.png differ diff --git a/assets/cloud-pot/images/rain-blue.png b/assets/cloud-pot/images/rain-blue.png new file mode 100644 index 0000000..38d9d31 Binary files /dev/null and b/assets/cloud-pot/images/rain-blue.png differ diff --git a/assets/cloud-pot/images/rain-color.png b/assets/cloud-pot/images/rain-color.png new file mode 100644 index 0000000..02eeaa8 Binary files /dev/null and b/assets/cloud-pot/images/rain-color.png differ diff --git a/assets/cloud-pot/images/rain-green.png b/assets/cloud-pot/images/rain-green.png new file mode 100644 index 0000000..4ca6d18 Binary files /dev/null and b/assets/cloud-pot/images/rain-green.png differ diff --git a/assets/cloud-pot/images/rain-white-reflex.png b/assets/cloud-pot/images/rain-white-reflex.png new file mode 100644 index 0000000..d32707a Binary files /dev/null and b/assets/cloud-pot/images/rain-white-reflex.png differ diff --git a/assets/cloud-pot/images/rain-white.png b/assets/cloud-pot/images/rain-white.png new file mode 100644 index 0000000..d868398 Binary files /dev/null and b/assets/cloud-pot/images/rain-white.png differ diff --git a/assets/cloud-pot/images/stem-end.png b/assets/cloud-pot/images/stem-end.png new file mode 100644 index 0000000..49c3a55 Binary files /dev/null and b/assets/cloud-pot/images/stem-end.png differ diff --git a/assets/cloud-pot/images/stem.png b/assets/cloud-pot/images/stem.png new file mode 100644 index 0000000..95bb943 Binary files /dev/null and b/assets/cloud-pot/images/stem.png differ diff --git a/assets/cloud-pot/license.txt b/assets/cloud-pot/license.txt new file mode 100644 index 0000000..2474ee4 --- /dev/null +++ b/assets/cloud-pot/license.txt @@ -0,0 +1,8 @@ +Copyright (c) 2023-2024, Esoteric Software + +The images in this project may be redistributed as long as they are accompanied +by this license file. The images may not be used for commercial use of any +kind. + +The project file is released into the public domain. It may be used as the basis +for derivative work. \ No newline at end of file diff --git a/assets/coin/export/coin-pma.atlas b/assets/coin/export/coin-pma.atlas index 290e185..ca11e44 100644 --- a/assets/coin/export/coin-pma.atlas +++ b/assets/coin/export/coin-pma.atlas @@ -3,17 +3,17 @@ coin-pma.png filter: Linear, Linear pma: true coin-front-logo - bounds: 2, 570, 305, 302 + bounds: 2, 609, 305, 302 coin-front-shine-logo - bounds: 2, 286, 282, 282 + bounds: 309, 629, 282, 282 coin-front-shine-spineboy - bounds: 305, 283, 282, 282 + bounds: 2, 21, 282, 282 coin-front-spineboy - bounds: 309, 567, 305, 302 - rotate: 90 + bounds: 2, 305, 305, 302 coin-side-round - bounds: 2, 2, 144, 282 + bounds: 309, 345, 144, 282 coin-side-straight - bounds: 286, 286, 17, 282 + bounds: 2, 2, 17, 282 + rotate: 90 shine - bounds: 148, 39, 72, 245 + bounds: 593, 666, 72, 245 diff --git a/assets/coin/export/coin-pma.png b/assets/coin/export/coin-pma.png index 126200d..65870ea 100644 Binary files a/assets/coin/export/coin-pma.png and b/assets/coin/export/coin-pma.png differ diff --git a/assets/coin/export/coin-pro.json b/assets/coin/export/coin-pro.json index 1f26f47..1e31ea4 100644 --- a/assets/coin/export/coin-pro.json +++ b/assets/coin/export/coin-pro.json @@ -1,7 +1,7 @@ { "skeleton": { - "hash": "oo0dBSCqNHM", - "spine": "4.1.23-beta", + "hash": "fKr+fe4rKEk", + "spine": "4.2.64-beta", "x": -152.5, "y": -151, "width": 305, diff --git a/assets/coin/export/coin-pro.skel b/assets/coin/export/coin-pro.skel index 1d51ea6..9cd5310 100644 Binary files a/assets/coin/export/coin-pro.skel and b/assets/coin/export/coin-pro.skel differ diff --git a/assets/coin/export/coin.atlas b/assets/coin/export/coin.atlas index 0ff436c..369cf67 100644 --- a/assets/coin/export/coin.atlas +++ b/assets/coin/export/coin.atlas @@ -2,17 +2,17 @@ coin.png size: 1024, 1024 filter: Linear, Linear coin-front-logo - bounds: 2, 570, 305, 302 + bounds: 2, 609, 305, 302 coin-front-shine-logo - bounds: 2, 286, 282, 282 + bounds: 309, 629, 282, 282 coin-front-shine-spineboy - bounds: 305, 283, 282, 282 + bounds: 2, 21, 282, 282 coin-front-spineboy - bounds: 309, 567, 305, 302 - rotate: 90 + bounds: 2, 305, 305, 302 coin-side-round - bounds: 2, 2, 144, 282 + bounds: 309, 345, 144, 282 coin-side-straight - bounds: 286, 286, 17, 282 + bounds: 2, 2, 17, 282 + rotate: 90 shine - bounds: 148, 39, 72, 245 + bounds: 593, 666, 72, 245 diff --git a/assets/coin/export/coin.png b/assets/coin/export/coin.png index 5221cae..190d853 100644 Binary files a/assets/coin/export/coin.png and b/assets/coin/export/coin.png differ diff --git a/assets/coin/license.txt b/assets/coin/license.txt index f439f1e..a71b754 100644 --- a/assets/coin/license.txt +++ b/assets/coin/license.txt @@ -1,4 +1,4 @@ -Copyright (c) 2018, Esoteric Software +Copyright (c) 2018, Esoteric Software LLC The images in this project may be redistributed as long as they are accompanied by this license file. The images may not be used for commercial use of any diff --git a/assets/dragon/export/dragon-ess.json b/assets/dragon/export/dragon-ess.json index 7c16610..471c46a 100644 --- a/assets/dragon/export/dragon-ess.json +++ b/assets/dragon/export/dragon-ess.json @@ -1,7 +1,7 @@ { "skeleton": { - "hash": "aPoA1GjXkVI", - "spine": "4.1.23-beta", + "hash": "fE1TdXi9fk4", + "spine": "4.2.64-beta", "x": -366.31, "y": -327.81, "width": 660.39, diff --git a/assets/dragon/export/dragon-ess.skel b/assets/dragon/export/dragon-ess.skel index 27e251d..1d1c513 100644 Binary files a/assets/dragon/export/dragon-ess.skel and b/assets/dragon/export/dragon-ess.skel differ diff --git a/assets/dragon/export/dragon-pma.atlas b/assets/dragon/export/dragon-pma.atlas index 10acc3e..bb91276 100644 --- a/assets/dragon/export/dragon-pma.atlas +++ b/assets/dragon/export/dragon-pma.atlas @@ -2,128 +2,116 @@ dragon-pma.png size: 1024, 1024 filter: Linear, Linear pma: true -back - bounds: 564, 534, 190, 185 -chest - bounds: 2, 645, 136, 122 -chin - bounds: 140, 619, 214, 146 front-toe-a - bounds: 2, 862, 29, 50 - rotate: 90 + bounds: 797, 381, 29, 50 front-toe-b - bounds: 467, 835, 56, 57 - rotate: 90 + bounds: 942, 118, 56, 57 head - bounds: 756, 398, 296, 260 + bounds: 647, 81, 296, 260 rotate: 90 left-front-leg - bounds: 599, 834, 84, 57 -left-front-thigh - bounds: 782, 819, 84, 72 -left-rear-leg - bounds: 356, 558, 206, 177 -left-rear-thigh - bounds: 216, 767, 91, 149 + bounds: 942, 250, 84, 57 rotate: 90 +left-front-thigh + bounds: 852, 7, 84, 72 left-wing01 - bounds: 2, 268, 264, 589 - rotate: 90 -left-wing02 - bounds: 2, 2, 264, 589 - rotate: 90 -right-front-leg - bounds: 113, 769, 101, 89 -right-front-thigh - bounds: 758, 709, 108, 108 -right-rear-leg - bounds: 640, 721, 116, 100 -right-rear-thigh - bounds: 367, 742, 91, 149 - rotate: 90 + bounds: 736, 433, 264, 589 right-rear-toe - bounds: 2, 781, 109, 77 -tail01 - bounds: 868, 696, 120, 153 - rotate: 90 -tail02 - bounds: 518, 737, 95, 120 + bounds: 647, 2, 109, 77 +right-wing01 + bounds: 2, 379, 365, 643 +right-wing02 + bounds: 369, 379, 365, 643 +right-wing03 + bounds: 2, 12, 365, 643 rotate: 90 tail03 - bounds: 868, 818, 73, 92 + bounds: 758, 6, 73, 92 rotate: 90 tail04 - bounds: 526, 835, 56, 71 - rotate: 90 + bounds: 942, 177, 56, 71 tail05 - bounds: 406, 839, 52, 59 + bounds: 736, 379, 52, 59 rotate: 90 tail06 - bounds: 685, 823, 95, 68 + bounds: 942, 336, 95, 68 + rotate: 90 thiagobrayner - bounds: 54, 860, 350, 31 + bounds: 909, 81, 350, 31 + rotate: 90 dragon-pma_2.png size: 1024, 1024 filter: Linear, Linear pma: true -left-wing03 - bounds: 2, 534, 264, 589 +back + bounds: 795, 32, 190, 185 +chin + bounds: 647, 157, 214, 146 rotate: 90 -left-wing04 - bounds: 2, 268, 264, 589 +left-rear-leg + bounds: 795, 219, 206, 177 rotate: 90 -left-wing05 - bounds: 593, 209, 264, 589 -left-wing06 - bounds: 2, 2, 264, 589 +left-wing02 + bounds: 736, 427, 264, 589 +right-wing04 + bounds: 2, 373, 365, 643 +right-wing05 + bounds: 369, 373, 365, 643 +right-wing06 + bounds: 2, 6, 365, 643 rotate: 90 +tail01 + bounds: 647, 2, 120, 153 dragon-pma_3.png size: 1024, 1024 filter: Linear, Linear pma: true -left-wing07 - bounds: 2, 694, 264, 589 - rotate: 90 -left-wing08 - bounds: 2, 428, 264, 589 - rotate: 90 -left-wing09 - bounds: 593, 369, 264, 589 -right-wing01 - bounds: 2, 2, 365, 643 +chest + bounds: 740, 299, 136, 122 +left-rear-thigh + bounds: 647, 218, 91, 149 +left-wing03 + bounds: 736, 423, 264, 589 +right-front-leg + bounds: 850, 196, 101, 89 rotate: 90 - -dragon-pma_4.png - size: 1024, 1024 - filter: Linear, Linear - pma: true -right-wing02 +right-front-thigh + bounds: 740, 189, 108, 108 +right-rear-leg + bounds: 878, 321, 116, 100 +right-rear-thigh + bounds: 647, 67, 91, 149 +right-wing07 bounds: 2, 369, 365, 643 -right-wing03 +right-wing08 bounds: 369, 369, 365, 643 -right-wing04 +right-wing09 bounds: 2, 2, 365, 643 rotate: 90 +tail02 + bounds: 740, 67, 95, 120 -dragon-pma_5.png +dragon-pma_4.png size: 1024, 1024 filter: Linear, Linear pma: true -right-wing05 - bounds: 2, 369, 365, 643 -right-wing06 - bounds: 369, 369, 365, 643 -right-wing07 - bounds: 2, 2, 365, 643 +left-wing04 + bounds: 2, 268, 264, 589 +left-wing05 + bounds: 268, 268, 264, 589 +left-wing06 + bounds: 534, 268, 264, 589 +left-wing07 + bounds: 2, 2, 264, 589 rotate: 90 -dragon-pma_6.png +dragon-pma_5.png size: 1024, 1024 filter: Linear, Linear pma: true -right-wing08 - bounds: 2, 2, 365, 643 -right-wing09 - bounds: 369, 2, 365, 643 +left-wing08 + bounds: 2, 2, 264, 589 +left-wing09 + bounds: 268, 2, 264, 589 diff --git a/assets/dragon/export/dragon-pma.png b/assets/dragon/export/dragon-pma.png index bc49bf9..f2bb4c6 100644 Binary files a/assets/dragon/export/dragon-pma.png and b/assets/dragon/export/dragon-pma.png differ diff --git a/assets/dragon/export/dragon-pma_2.png b/assets/dragon/export/dragon-pma_2.png index 084bc5e..c1d14d2 100644 Binary files a/assets/dragon/export/dragon-pma_2.png and b/assets/dragon/export/dragon-pma_2.png differ diff --git a/assets/dragon/export/dragon-pma_3.png b/assets/dragon/export/dragon-pma_3.png index 17276d4..05f7d73 100644 Binary files a/assets/dragon/export/dragon-pma_3.png and b/assets/dragon/export/dragon-pma_3.png differ diff --git a/assets/dragon/export/dragon-pma_4.png b/assets/dragon/export/dragon-pma_4.png index f0b9d72..7de20b2 100644 Binary files a/assets/dragon/export/dragon-pma_4.png and b/assets/dragon/export/dragon-pma_4.png differ diff --git a/assets/dragon/export/dragon-pma_5.png b/assets/dragon/export/dragon-pma_5.png index f98942c..fa0f507 100644 Binary files a/assets/dragon/export/dragon-pma_5.png and b/assets/dragon/export/dragon-pma_5.png differ diff --git a/assets/dragon/export/dragon-pma_6.png b/assets/dragon/export/dragon-pma_6.png deleted file mode 100644 index ebbfe92..0000000 Binary files a/assets/dragon/export/dragon-pma_6.png and /dev/null differ diff --git a/assets/dragon/export/dragon.atlas b/assets/dragon/export/dragon.atlas index bca5b1e..47b3f3b 100644 --- a/assets/dragon/export/dragon.atlas +++ b/assets/dragon/export/dragon.atlas @@ -1,123 +1,112 @@ dragon.png size: 1024, 1024 filter: Linear, Linear -back - bounds: 564, 534, 190, 185 -chest - bounds: 2, 645, 136, 122 -chin - bounds: 140, 619, 214, 146 front-toe-a - bounds: 2, 862, 29, 50 - rotate: 90 + bounds: 797, 381, 29, 50 front-toe-b - bounds: 467, 835, 56, 57 - rotate: 90 + bounds: 942, 118, 56, 57 head - bounds: 756, 398, 296, 260 + bounds: 647, 81, 296, 260 rotate: 90 left-front-leg - bounds: 599, 834, 84, 57 -left-front-thigh - bounds: 782, 819, 84, 72 -left-rear-leg - bounds: 356, 558, 206, 177 -left-rear-thigh - bounds: 216, 767, 91, 149 + bounds: 942, 250, 84, 57 rotate: 90 +left-front-thigh + bounds: 852, 7, 84, 72 left-wing01 - bounds: 2, 268, 264, 589 - rotate: 90 -left-wing02 - bounds: 2, 2, 264, 589 - rotate: 90 -right-front-leg - bounds: 113, 769, 101, 89 -right-front-thigh - bounds: 758, 709, 108, 108 -right-rear-leg - bounds: 640, 721, 116, 100 -right-rear-thigh - bounds: 367, 742, 91, 149 - rotate: 90 + bounds: 736, 433, 264, 589 right-rear-toe - bounds: 2, 781, 109, 77 -tail01 - bounds: 868, 696, 120, 153 - rotate: 90 -tail02 - bounds: 518, 737, 95, 120 + bounds: 647, 2, 109, 77 +right-wing01 + bounds: 2, 379, 365, 643 +right-wing02 + bounds: 369, 379, 365, 643 +right-wing03 + bounds: 2, 12, 365, 643 rotate: 90 tail03 - bounds: 868, 818, 73, 92 + bounds: 758, 6, 73, 92 rotate: 90 tail04 - bounds: 526, 835, 56, 71 - rotate: 90 + bounds: 942, 177, 56, 71 tail05 - bounds: 406, 839, 52, 59 + bounds: 736, 379, 52, 59 rotate: 90 tail06 - bounds: 685, 823, 95, 68 + bounds: 942, 336, 95, 68 + rotate: 90 thiagobrayner - bounds: 54, 860, 350, 31 + bounds: 909, 81, 350, 31 + rotate: 90 dragon_2.png size: 1024, 1024 filter: Linear, Linear -left-wing03 - bounds: 2, 534, 264, 589 +back + bounds: 795, 32, 190, 185 +chin + bounds: 647, 157, 214, 146 rotate: 90 -left-wing04 - bounds: 2, 268, 264, 589 +left-rear-leg + bounds: 795, 219, 206, 177 rotate: 90 -left-wing05 - bounds: 593, 209, 264, 589 -left-wing06 - bounds: 2, 2, 264, 589 +left-wing02 + bounds: 736, 427, 264, 589 +right-wing04 + bounds: 2, 373, 365, 643 +right-wing05 + bounds: 369, 373, 365, 643 +right-wing06 + bounds: 2, 6, 365, 643 rotate: 90 +tail01 + bounds: 647, 2, 120, 153 dragon_3.png size: 1024, 1024 filter: Linear, Linear -left-wing07 - bounds: 2, 694, 264, 589 - rotate: 90 -left-wing08 - bounds: 2, 428, 264, 589 - rotate: 90 -left-wing09 - bounds: 593, 369, 264, 589 -right-wing01 - bounds: 2, 2, 365, 643 +chest + bounds: 740, 299, 136, 122 +left-rear-thigh + bounds: 647, 218, 91, 149 +left-wing03 + bounds: 736, 423, 264, 589 +right-front-leg + bounds: 850, 196, 101, 89 rotate: 90 - -dragon_4.png - size: 1024, 1024 - filter: Linear, Linear -right-wing02 +right-front-thigh + bounds: 740, 189, 108, 108 +right-rear-leg + bounds: 878, 321, 116, 100 +right-rear-thigh + bounds: 647, 67, 91, 149 +right-wing07 bounds: 2, 369, 365, 643 -right-wing03 +right-wing08 bounds: 369, 369, 365, 643 -right-wing04 +right-wing09 bounds: 2, 2, 365, 643 rotate: 90 +tail02 + bounds: 740, 67, 95, 120 -dragon_5.png +dragon_4.png size: 1024, 1024 filter: Linear, Linear -right-wing05 - bounds: 2, 369, 365, 643 -right-wing06 - bounds: 369, 369, 365, 643 -right-wing07 - bounds: 2, 2, 365, 643 +left-wing04 + bounds: 2, 268, 264, 589 +left-wing05 + bounds: 268, 268, 264, 589 +left-wing06 + bounds: 534, 268, 264, 589 +left-wing07 + bounds: 2, 2, 264, 589 rotate: 90 -dragon_6.png +dragon_5.png size: 1024, 1024 filter: Linear, Linear -right-wing08 - bounds: 2, 2, 365, 643 -right-wing09 - bounds: 369, 2, 365, 643 +left-wing08 + bounds: 2, 2, 264, 589 +left-wing09 + bounds: 268, 2, 264, 589 diff --git a/assets/dragon/export/dragon.png b/assets/dragon/export/dragon.png index f39141c..3bca338 100644 Binary files a/assets/dragon/export/dragon.png and b/assets/dragon/export/dragon.png differ diff --git a/assets/dragon/export/dragon_2.png b/assets/dragon/export/dragon_2.png index 09429b5..3dbe2a5 100644 Binary files a/assets/dragon/export/dragon_2.png and b/assets/dragon/export/dragon_2.png differ diff --git a/assets/dragon/export/dragon_3.png b/assets/dragon/export/dragon_3.png index 647bcb7..df2896d 100644 Binary files a/assets/dragon/export/dragon_3.png and b/assets/dragon/export/dragon_3.png differ diff --git a/assets/dragon/export/dragon_4.png b/assets/dragon/export/dragon_4.png index 8de7609..270b095 100644 Binary files a/assets/dragon/export/dragon_4.png and b/assets/dragon/export/dragon_4.png differ diff --git a/assets/dragon/export/dragon_5.png b/assets/dragon/export/dragon_5.png index 5a98f7e..4e9f7a8 100644 Binary files a/assets/dragon/export/dragon_5.png and b/assets/dragon/export/dragon_5.png differ diff --git a/assets/dragon/export/dragon_6.png b/assets/dragon/export/dragon_6.png deleted file mode 100644 index 49a39f6..0000000 Binary files a/assets/dragon/export/dragon_6.png and /dev/null differ diff --git a/assets/goblins/export/goblins-ess.json b/assets/goblins/export/goblins-ess.json index 41b8503..1d8bba0 100644 --- a/assets/goblins/export/goblins-ess.json +++ b/assets/goblins/export/goblins-ess.json @@ -1,7 +1,7 @@ { "skeleton": { - "hash": "djttFmlR6Co", - "spine": "4.1.23-beta", + "hash": "GVlVB8/J+xE", + "spine": "4.2.64-beta", "x": -92.53, "y": -5.3, "width": 234.03, diff --git a/assets/goblins/export/goblins-ess.skel b/assets/goblins/export/goblins-ess.skel index 20e5975..736af60 100644 Binary files a/assets/goblins/export/goblins-ess.skel and b/assets/goblins/export/goblins-ess.skel differ diff --git a/assets/goblins/export/goblins-pma.atlas b/assets/goblins/export/goblins-pma.atlas index 758c7fd..eed0924 100644 --- a/assets/goblins/export/goblins-pma.atlas +++ b/assets/goblins/export/goblins-pma.atlas @@ -3,95 +3,100 @@ goblins-pma.png filter: Linear, Linear pma: true dagger - bounds: 2, 18, 26, 108 + bounds: 372, 100, 26, 108 + rotate: 90 goblin/eyes-closed - bounds: 2, 4, 34, 12 + bounds: 2, 7, 34, 12 goblin/head - bounds: 113, 23, 103, 66 - rotate: 90 + bounds: 107, 36, 103, 66 goblin/left-arm - bounds: 937, 89, 37, 35 - rotate: 90 + bounds: 901, 56, 37, 35 goblin/left-foot - bounds: 609, 61, 65, 31 - rotate: 90 + bounds: 929, 95, 65, 31 goblin/left-hand - bounds: 840, 21, 36, 41 + bounds: 452, 2, 36, 41 goblin/left-lower-leg - bounds: 504, 56, 33, 70 + bounds: 713, 93, 33, 70 + rotate: 90 goblin/left-shoulder - bounds: 745, 17, 29, 44 + bounds: 610, 44, 29, 44 goblin/left-upper-leg - bounds: 397, 53, 33, 73 + bounds: 638, 93, 33, 73 + rotate: 90 goblin/neck - bounds: 862, 85, 36, 41 + bounds: 490, 2, 36, 41 goblin/pelvis - bounds: 776, 18, 62, 43 + bounds: 482, 45, 62, 43 goblin/right-arm - bounds: 181, 5, 23, 50 + bounds: 690, 2, 23, 50 rotate: 90 goblin/right-foot - bounds: 747, 63, 63, 33 - rotate: 90 + bounds: 771, 58, 63, 33 goblin/right-hand - bounds: 878, 3, 36, 37 + bounds: 940, 56, 36, 37 goblin/right-lower-leg - bounds: 321, 50, 36, 76 + bounds: 482, 90, 36, 76 + rotate: 90 goblin/right-shoulder - bounds: 663, 14, 39, 45 + bounds: 602, 3, 39, 45 + rotate: 90 goblin/right-upper-leg - bounds: 675, 63, 34, 63 + bounds: 641, 57, 34, 63 + rotate: 90 goblin/torso - bounds: 181, 30, 68, 96 + bounds: 212, 34, 68, 96 + rotate: 90 goblin/undie-straps - bounds: 38, 2, 55, 19 + bounds: 380, 5, 55, 19 goblin/undies - bounds: 974, 97, 36, 29 + bounds: 174, 5, 36, 29 goblingirl/eyes-closed - bounds: 397, 30, 37, 21 + bounds: 269, 11, 37, 21 goblingirl/head - bounds: 30, 23, 103, 81 - rotate: 90 + bounds: 2, 21, 103, 81 goblingirl/left-arm - bounds: 916, 8, 37, 35 + bounds: 978, 56, 37, 35 rotate: 90 goblingirl/left-foot - bounds: 642, 61, 65, 31 - rotate: 90 + bounds: 107, 3, 65, 31 goblingirl/left-hand - bounds: 900, 86, 35, 40 + bounds: 565, 2, 35, 40 goblingirl/left-lower-leg - bounds: 539, 56, 33, 70 + bounds: 785, 93, 33, 70 + rotate: 90 goblingirl/left-shoulder - bounds: 633, 13, 28, 46 + bounds: 690, 27, 28, 46 + rotate: 90 goblingirl/left-upper-leg - bounds: 574, 56, 33, 70 + bounds: 857, 93, 33, 70 + rotate: 90 goblingirl/neck - bounds: 878, 42, 35, 41 + bounds: 528, 2, 35, 41 goblingirl/pelvis - bounds: 817, 64, 62, 43 - rotate: 90 + bounds: 546, 45, 62, 43 goblingirl/right-arm - bounds: 603, 4, 28, 50 + bounds: 452, 48, 28, 50 goblingirl/right-foot - bounds: 782, 63, 63, 33 - rotate: 90 + bounds: 836, 58, 63, 33 goblingirl/right-hand - bounds: 915, 47, 36, 37 + bounds: 771, 20, 36, 37 + rotate: 90 goblingirl/right-lower-leg - bounds: 359, 50, 36, 76 + bounds: 560, 90, 36, 76 + rotate: 90 goblingirl/right-shoulder - bounds: 704, 16, 39, 45 + bounds: 649, 10, 39, 45 goblingirl/right-upper-leg - bounds: 711, 63, 34, 63 + bounds: 706, 57, 34, 63 + rotate: 90 goblingirl/torso - bounds: 251, 30, 68, 96 + bounds: 310, 2, 68, 96 goblingirl/undie-straps - bounds: 95, 2, 55, 19 + bounds: 212, 13, 55, 19 goblingirl/undies - bounds: 974, 66, 36, 29 + bounds: 810, 27, 36, 29 shield - bounds: 432, 54, 70, 72 + bounds: 380, 26, 70, 72 spear - bounds: 233, 6, 22, 368 + bounds: 2, 104, 22, 368 rotate: 90 diff --git a/assets/goblins/export/goblins-pma.png b/assets/goblins/export/goblins-pma.png index f0a5b6c..a6688e2 100644 Binary files a/assets/goblins/export/goblins-pma.png and b/assets/goblins/export/goblins-pma.png differ diff --git a/assets/goblins/export/goblins-pro.json b/assets/goblins/export/goblins-pro.json index 6caf03b..df25739 100644 --- a/assets/goblins/export/goblins-pro.json +++ b/assets/goblins/export/goblins-pro.json @@ -1,7 +1,7 @@ { "skeleton": { - "hash": "CdaHvXeCMjE", - "spine": "4.1.23-beta", + "hash": "r8iwnU9Tvmc", + "spine": "4.2.64-beta", "x": -134.12, "y": -3.28, "width": 266.94, diff --git a/assets/goblins/export/goblins-pro.skel b/assets/goblins/export/goblins-pro.skel index 6e667d2..f1adc13 100644 Binary files a/assets/goblins/export/goblins-pro.skel and b/assets/goblins/export/goblins-pro.skel differ diff --git a/assets/goblins/export/goblins.atlas b/assets/goblins/export/goblins.atlas index b40ca29..06022ce 100644 --- a/assets/goblins/export/goblins.atlas +++ b/assets/goblins/export/goblins.atlas @@ -2,95 +2,100 @@ goblins.png size: 1024, 128 filter: Linear, Linear dagger - bounds: 2, 18, 26, 108 + bounds: 372, 100, 26, 108 + rotate: 90 goblin/eyes-closed - bounds: 2, 4, 34, 12 + bounds: 2, 7, 34, 12 goblin/head - bounds: 113, 23, 103, 66 - rotate: 90 + bounds: 107, 36, 103, 66 goblin/left-arm - bounds: 937, 89, 37, 35 - rotate: 90 + bounds: 901, 56, 37, 35 goblin/left-foot - bounds: 609, 61, 65, 31 - rotate: 90 + bounds: 929, 95, 65, 31 goblin/left-hand - bounds: 840, 21, 36, 41 + bounds: 452, 2, 36, 41 goblin/left-lower-leg - bounds: 504, 56, 33, 70 + bounds: 713, 93, 33, 70 + rotate: 90 goblin/left-shoulder - bounds: 745, 17, 29, 44 + bounds: 610, 44, 29, 44 goblin/left-upper-leg - bounds: 397, 53, 33, 73 + bounds: 638, 93, 33, 73 + rotate: 90 goblin/neck - bounds: 862, 85, 36, 41 + bounds: 490, 2, 36, 41 goblin/pelvis - bounds: 776, 18, 62, 43 + bounds: 482, 45, 62, 43 goblin/right-arm - bounds: 181, 5, 23, 50 + bounds: 690, 2, 23, 50 rotate: 90 goblin/right-foot - bounds: 747, 63, 63, 33 - rotate: 90 + bounds: 771, 58, 63, 33 goblin/right-hand - bounds: 878, 3, 36, 37 + bounds: 940, 56, 36, 37 goblin/right-lower-leg - bounds: 321, 50, 36, 76 + bounds: 482, 90, 36, 76 + rotate: 90 goblin/right-shoulder - bounds: 663, 14, 39, 45 + bounds: 602, 3, 39, 45 + rotate: 90 goblin/right-upper-leg - bounds: 675, 63, 34, 63 + bounds: 641, 57, 34, 63 + rotate: 90 goblin/torso - bounds: 181, 30, 68, 96 + bounds: 212, 34, 68, 96 + rotate: 90 goblin/undie-straps - bounds: 38, 2, 55, 19 + bounds: 380, 5, 55, 19 goblin/undies - bounds: 974, 97, 36, 29 + bounds: 174, 5, 36, 29 goblingirl/eyes-closed - bounds: 397, 30, 37, 21 + bounds: 269, 11, 37, 21 goblingirl/head - bounds: 30, 23, 103, 81 - rotate: 90 + bounds: 2, 21, 103, 81 goblingirl/left-arm - bounds: 916, 8, 37, 35 + bounds: 978, 56, 37, 35 rotate: 90 goblingirl/left-foot - bounds: 642, 61, 65, 31 - rotate: 90 + bounds: 107, 3, 65, 31 goblingirl/left-hand - bounds: 900, 86, 35, 40 + bounds: 565, 2, 35, 40 goblingirl/left-lower-leg - bounds: 539, 56, 33, 70 + bounds: 785, 93, 33, 70 + rotate: 90 goblingirl/left-shoulder - bounds: 633, 13, 28, 46 + bounds: 690, 27, 28, 46 + rotate: 90 goblingirl/left-upper-leg - bounds: 574, 56, 33, 70 + bounds: 857, 93, 33, 70 + rotate: 90 goblingirl/neck - bounds: 878, 42, 35, 41 + bounds: 528, 2, 35, 41 goblingirl/pelvis - bounds: 817, 64, 62, 43 - rotate: 90 + bounds: 546, 45, 62, 43 goblingirl/right-arm - bounds: 603, 4, 28, 50 + bounds: 452, 48, 28, 50 goblingirl/right-foot - bounds: 782, 63, 63, 33 - rotate: 90 + bounds: 836, 58, 63, 33 goblingirl/right-hand - bounds: 915, 47, 36, 37 + bounds: 771, 20, 36, 37 + rotate: 90 goblingirl/right-lower-leg - bounds: 359, 50, 36, 76 + bounds: 560, 90, 36, 76 + rotate: 90 goblingirl/right-shoulder - bounds: 704, 16, 39, 45 + bounds: 649, 10, 39, 45 goblingirl/right-upper-leg - bounds: 711, 63, 34, 63 + bounds: 706, 57, 34, 63 + rotate: 90 goblingirl/torso - bounds: 251, 30, 68, 96 + bounds: 310, 2, 68, 96 goblingirl/undie-straps - bounds: 95, 2, 55, 19 + bounds: 212, 13, 55, 19 goblingirl/undies - bounds: 974, 66, 36, 29 + bounds: 810, 27, 36, 29 shield - bounds: 432, 54, 70, 72 + bounds: 380, 26, 70, 72 spear - bounds: 233, 6, 22, 368 + bounds: 2, 104, 22, 368 rotate: 90 diff --git a/assets/goblins/export/goblins.png b/assets/goblins/export/goblins.png index 5c1e4e7..6ac8d54 100644 Binary files a/assets/goblins/export/goblins.png and b/assets/goblins/export/goblins.png differ diff --git a/assets/goblins/images/goblin/undies.png b/assets/goblins/images/goblin/undies.png index 3e7da4e..0b91ded 100644 Binary files a/assets/goblins/images/goblin/undies.png and b/assets/goblins/images/goblin/undies.png differ diff --git a/assets/goblins/images/goblingirl/undies.png b/assets/goblins/images/goblingirl/undies.png index b302912..d0526af 100644 Binary files a/assets/goblins/images/goblingirl/undies.png and b/assets/goblins/images/goblingirl/undies.png differ diff --git a/assets/goblins/license.txt b/assets/goblins/license.txt index 60ff2d2..c2bbb86 100644 --- a/assets/goblins/license.txt +++ b/assets/goblins/license.txt @@ -1,4 +1,4 @@ -Copyright (c) 2013, Esoteric Software +Copyright (c) 2013, Esoteric Software LLC The images in this project may be redistributed as long as they are accompanied by this license file. The images may not be used for commercial use of any diff --git a/assets/spineboy/export/spineboy-ess.json b/assets/spineboy/export/spineboy-ess.json index 4ddc835..99ce21b 100644 --- a/assets/spineboy/export/spineboy-ess.json +++ b/assets/spineboy/export/spineboy-ess.json @@ -1,7 +1,7 @@ { "skeleton": { - "hash": "SmUDxzck41o", - "spine": "4.1.23-beta", + "hash": "TC0RU1zEc1o", + "spine": "4.2.64-beta", "x": -221.27, "y": -8.57, "width": 470.72, diff --git a/assets/spineboy/export/spineboy-ess.skel b/assets/spineboy/export/spineboy-ess.skel index 90e15ec..c37a0bf 100644 Binary files a/assets/spineboy/export/spineboy-ess.skel and b/assets/spineboy/export/spineboy-ess.skel differ diff --git a/assets/spineboy/export/spineboy-pma.atlas b/assets/spineboy/export/spineboy-pma.atlas index 9c8bd8e..ad3d77b 100644 --- a/assets/spineboy/export/spineboy-pma.atlas +++ b/assets/spineboy/export/spineboy-pma.atlas @@ -4,99 +4,92 @@ spineboy-pma.png pma: true scale: 0.5 crosshair - bounds: 813, 160, 45, 45 + bounds: 352, 7, 45, 45 eye-indifferent - bounds: 569, 2, 47, 45 + bounds: 862, 105, 47, 45 eye-surprised - bounds: 643, 7, 47, 45 - rotate: 90 + bounds: 505, 79, 47, 45 front-bracer - bounds: 811, 51, 29, 40 + bounds: 826, 66, 29, 40 front-fist-closed - bounds: 807, 93, 38, 41 + bounds: 786, 65, 38, 41 front-fist-open - bounds: 815, 210, 43, 44 -front-foot - bounds: 706, 64, 63, 35 + bounds: 710, 51, 43, 44 rotate: 90 +front-foot + bounds: 210, 6, 63, 35 front-shin - bounds: 80, 11, 41, 92 + bounds: 665, 128, 41, 92 + rotate: 90 front-thigh - bounds: 754, 12, 23, 56 + bounds: 2, 2, 23, 56 + rotate: 90 front-upper-arm - bounds: 618, 5, 23, 49 + bounds: 250, 205, 23, 49 goggles - bounds: 214, 20, 131, 83 + bounds: 665, 171, 131, 83 gun - bounds: 347, 14, 105, 102 - rotate: 90 + bounds: 798, 152, 105, 102 head - bounds: 80, 105, 136, 149 + bounds: 2, 27, 136, 149 hoverboard-board - bounds: 2, 8, 246, 76 - rotate: 90 + bounds: 2, 178, 246, 76 hoverboard-thruster - bounds: 478, 2, 30, 32 -hoverglow-small - bounds: 218, 117, 137, 38 + bounds: 722, 96, 30, 32 rotate: 90 +hoverglow-small + bounds: 275, 81, 137, 38 mouth-grind - bounds: 775, 80, 47, 30 - rotate: 90 + bounds: 614, 97, 47, 30 mouth-oooo - bounds: 779, 31, 47, 30 - rotate: 90 + bounds: 612, 65, 47, 30 mouth-smile - bounds: 783, 207, 47, 30 - rotate: 90 + bounds: 661, 64, 47, 30 muzzle-glow - bounds: 779, 4, 25, 25 + bounds: 382, 54, 25, 25 muzzle-ring - bounds: 451, 14, 25, 105 + bounds: 275, 54, 25, 105 + rotate: 90 muzzle01 - bounds: 664, 60, 67, 40 + bounds: 911, 95, 67, 40 rotate: 90 muzzle02 - bounds: 580, 56, 68, 42 - rotate: 90 + bounds: 792, 108, 68, 42 muzzle03 - bounds: 478, 36, 83, 53 + bounds: 956, 171, 83, 53 rotate: 90 muzzle04 - bounds: 533, 49, 75, 45 - rotate: 90 + bounds: 275, 7, 75, 45 muzzle05 - bounds: 624, 56, 68, 38 - rotate: 90 + bounds: 140, 3, 68, 38 neck - bounds: 806, 8, 18, 21 + bounds: 250, 182, 18, 21 portal-bg - bounds: 258, 121, 133, 133 + bounds: 140, 43, 133, 133 portal-flare1 - bounds: 690, 2, 56, 30 - rotate: 90 + bounds: 554, 65, 56, 30 portal-flare2 - bounds: 510, 3, 57, 31 -portal-flare3 - bounds: 722, 4, 58, 30 + bounds: 759, 112, 57, 31 rotate: 90 +portal-flare3 + bounds: 554, 97, 58, 30 portal-shade - bounds: 393, 121, 133, 133 + bounds: 275, 121, 133, 133 portal-streaks1 - bounds: 528, 126, 126, 128 + bounds: 410, 126, 126, 128 portal-streaks2 - bounds: 656, 129, 125, 125 + bounds: 538, 129, 125, 125 rear-bracer - bounds: 826, 13, 28, 36 + bounds: 857, 67, 28, 36 rear-foot - bounds: 743, 70, 57, 30 - rotate: 90 + bounds: 663, 96, 57, 30 rear-shin - bounds: 174, 14, 38, 89 + bounds: 414, 86, 38, 89 + rotate: 90 rear-thigh - bounds: 783, 158, 28, 47 + bounds: 756, 63, 28, 47 rear-upper-arm - bounds: 783, 136, 20, 44 + bounds: 60, 5, 20, 44 rotate: 90 torso - bounds: 123, 13, 49, 90 + bounds: 905, 164, 49, 90 diff --git a/assets/spineboy/export/spineboy-pma.png b/assets/spineboy/export/spineboy-pma.png index b78b76f..711fd83 100644 Binary files a/assets/spineboy/export/spineboy-pma.png and b/assets/spineboy/export/spineboy-pma.png differ diff --git a/assets/spineboy/export/spineboy-pro.json b/assets/spineboy/export/spineboy-pro.json index b4dd8b4..b253b9f 100644 --- a/assets/spineboy/export/spineboy-pro.json +++ b/assets/spineboy/export/spineboy-pro.json @@ -1,7 +1,7 @@ { "skeleton": { - "hash": "itfFESDjM1c", - "spine": "4.1.23-beta", + "hash": "pvgSVWzpY9U", + "spine": "4.2.64-beta", "x": -188.63, "y": -7.94, "width": 418.45, @@ -12,7 +12,7 @@ "bones": [ { "name": "root", "rotation": 0.05 }, { "name": "hip", "parent": "root", "y": 247.27 }, - { "name": "crosshair", "parent": "root", "x": 302.83, "y": 569.45, "color": "ff3f00ff" }, + { "name": "crosshair", "parent": "root", "x": 302.83, "y": 569.45, "color": "ff3f00ff", "icon": "circle" }, { "name": "aim-constraint-target", "parent": "hip", @@ -22,8 +22,8 @@ "y": 5.62, "color": "abe323ff" }, - { "name": "rear-foot-target", "parent": "root", "x": 61.91, "y": 0.42, "color": "ff3f00ff" }, - { "name": "rear-leg-target", "parent": "rear-foot-target", "x": -33.91, "y": 37.34, "color": "ff3f00ff" }, + { "name": "rear-foot-target", "parent": "root", "x": 61.91, "y": 0.42, "color": "ff3f00ff", "icon": "ik" }, + { "name": "rear-leg-target", "parent": "rear-foot-target", "x": -33.91, "y": 37.34, "color": "ff3f00ff", "icon": "ik" }, { "name": "rear-thigh", "parent": "hip", @@ -58,12 +58,20 @@ "rotation": -0.85, "x": 51.17, "y": 0.24, - "transform": "noRotationOrReflection", + "inherit": "noRotationOrReflection", "color": "ff000dff" }, - { "name": "board-ik", "parent": "root", "x": -131.78, "y": 69.09, "color": "4c56ffff" }, + { "name": "board-ik", "parent": "root", "x": -131.78, "y": 69.09, "color": "4c56ffff", "icon": "arrows" }, { "name": "clipping", "parent": "root" }, - { "name": "hoverboard-controller", "parent": "root", "rotation": -0.28, "x": -329.69, "y": 69.82, "color": "ff0004ff" }, + { + "name": "hoverboard-controller", + "parent": "root", + "rotation": -0.28, + "x": -329.69, + "y": 69.82, + "color": "ff0004ff", + "icon": "arrowsB" + }, { "name": "exhaust1", "parent": "hoverboard-controller", "rotation": 3.02, "x": -249.68, "y": 53.39 }, { "name": "exhaust2", "parent": "hoverboard-controller", "rotation": 26.34, "x": -191.6, "y": -22.92 }, { @@ -76,16 +84,16 @@ "scaleY": 0.7847 }, { "name": "portal-root", "parent": "root", "x": 12.9, "y": 328.54, "scaleX": 2.0334, "scaleY": 2.0334 }, - { "name": "flare1", "parent": "portal-root", "x": -6.34, "y": -161.57 }, - { "name": "flare10", "parent": "portal-root", "x": -6.34, "y": -161.57 }, - { "name": "flare2", "parent": "portal-root", "x": -6.34, "y": -161.57 }, - { "name": "flare3", "parent": "portal-root", "x": -6.34, "y": -161.57 }, - { "name": "flare4", "parent": "portal-root", "x": -6.34, "y": -161.57 }, - { "name": "flare5", "parent": "portal-root", "x": -6.34, "y": -161.57 }, - { "name": "flare6", "parent": "portal-root", "x": -6.34, "y": -161.57 }, - { "name": "flare7", "parent": "portal-root", "x": -6.34, "y": -161.57 }, - { "name": "flare8", "parent": "portal-root", "x": -6.34, "y": -161.57 }, - { "name": "flare9", "parent": "portal-root", "x": -6.34, "y": -161.57 }, + { "name": "flare1", "parent": "portal-root", "x": -6.34, "y": -161.57, "icon": "particles" }, + { "name": "flare10", "parent": "portal-root", "x": -6.34, "y": -161.57, "icon": "particles" }, + { "name": "flare2", "parent": "portal-root", "x": -6.34, "y": -161.57, "icon": "particles" }, + { "name": "flare3", "parent": "portal-root", "x": -6.34, "y": -161.57, "icon": "particles" }, + { "name": "flare4", "parent": "portal-root", "x": -6.34, "y": -161.57, "icon": "particles" }, + { "name": "flare5", "parent": "portal-root", "x": -6.34, "y": -161.57, "icon": "particles" }, + { "name": "flare6", "parent": "portal-root", "x": -6.34, "y": -161.57, "icon": "particles" }, + { "name": "flare7", "parent": "portal-root", "x": -6.34, "y": -161.57, "icon": "particles" }, + { "name": "flare8", "parent": "portal-root", "x": -6.34, "y": -161.57, "icon": "particles" }, + { "name": "flare9", "parent": "portal-root", "x": -6.34, "y": -161.57, "icon": "particles" }, { "name": "torso", "parent": "hip", @@ -117,8 +125,8 @@ "y": 0.2, "color": "00ff04ff" }, - { "name": "front-foot-target", "parent": "root", "x": -13.53, "y": 0.04, "color": "ff3f00ff" }, - { "name": "front-leg-target", "parent": "front-foot-target", "x": -28.4, "y": 29.06, "color": "ff3f00ff" }, + { "name": "front-foot-target", "parent": "root", "x": -13.53, "y": 0.04, "color": "ff3f00ff", "icon": "ik" }, + { "name": "front-leg-target", "parent": "front-foot-target", "x": -28.4, "y": 29.06, "color": "ff3f00ff", "icon": "ik" }, { "name": "front-thigh", "parent": "hip", @@ -153,7 +161,7 @@ "rotation": -1.68, "x": 41.42, "y": -0.09, - "transform": "noRotationOrReflection", + "inherit": "noRotationOrReflection", "color": "00ff04ff" }, { "name": "back-shoulder", "parent": "torso3", "rotation": -104.11, "x": 7.32, "y": -19.22, "color": "ff000dff" }, @@ -223,11 +231,19 @@ "y": -0.04, "color": "e0da19ff" }, - { "name": "hoverboard-thruster-front", "parent": "hoverboard-controller", "rotation": -29.2, "x": 95.77, "y": -2.99, "transform": "noRotationOrReflection" }, - { "name": "hoverboard-thruster-rear", "parent": "hoverboard-controller", "rotation": -29.2, "x": -76.47, "y": -4.88, "transform": "noRotationOrReflection" }, + { "name": "hoverboard-thruster-front", "parent": "hoverboard-controller", "rotation": -29.2, "x": 95.77, "y": -2.99, "inherit": "noRotationOrReflection" }, + { "name": "hoverboard-thruster-rear", "parent": "hoverboard-controller", "rotation": -29.2, "x": -76.47, "y": -4.88, "inherit": "noRotationOrReflection" }, { "name": "hoverglow-front", "parent": "hoverboard-thruster-front", "rotation": 0.17, "x": -1.78, "y": -37.79 }, { "name": "hoverglow-rear", "parent": "hoverboard-thruster-rear", "rotation": 0.17, "x": 1.06, "y": -35.66 }, - { "name": "muzzle", "parent": "rear-bracer", "rotation": 3.06, "x": 242.34, "y": 34.26, "color": "ffb900ff" }, + { + "name": "muzzle", + "parent": "rear-bracer", + "rotation": 3.06, + "x": 242.34, + "y": 34.26, + "color": "ffb900ff", + "icon": "muzzleFlash" + }, { "name": "muzzle-ring", "parent": "muzzle", "color": "ffb900ff" }, { "name": "muzzle-ring2", "parent": "muzzle", "color": "ffb900ff" }, { "name": "muzzle-ring3", "parent": "muzzle", "color": "ffb900ff" }, @@ -246,7 +262,7 @@ "scaleY": 0.738, "color": "000effff" }, - { "name": "head-control", "parent": "head", "x": 110.21, "color": "00a220ff" } + { "name": "head-control", "parent": "head", "x": 110.21, "color": "00a220ff", "icon": "arrows" } ], "slots": [ { "name": "portal-bg", "bone": "portal" }, diff --git a/assets/spineboy/export/spineboy-pro.skel b/assets/spineboy/export/spineboy-pro.skel index 199839b..4dfe536 100644 Binary files a/assets/spineboy/export/spineboy-pro.skel and b/assets/spineboy/export/spineboy-pro.skel differ diff --git a/assets/spineboy/export/spineboy-run.atlas b/assets/spineboy/export/spineboy-run.atlas index ce32001..7c0a3b9 100644 --- a/assets/spineboy/export/spineboy-run.atlas +++ b/assets/spineboy/export/spineboy-run.atlas @@ -1,60 +1,50 @@ spineboy-run.png - size: 1181, 687 + size: 1177, 685 filter: Linear, Linear pma: true spineboy-pro-run index: 8 - bounds: 2, 371, 303, 314 - offsets: 11, 22, 316, 341 - origin: 142, 3 + bounds: 2, 369, 302, 314 + offsets: 12, 22, 316, 341 spineboy-pro-run index: 9 - bounds: 2, 44, 278, 325 + bounds: 2, 42, 278, 325 offsets: 30, 2, 316, 341 - origin: 142, 3 spineboy-pro-run index: 0 - bounds: 307, 439, 246, 320 + bounds: 306, 438, 245, 320 offsets: 67, 1, 316, 341 rotate: 90 - origin: 142, 3 spineboy-pro-run index: 3 - bounds: 629, 443, 242, 320 - offsets: 12, 20, 316, 341 + bounds: 628, 441, 242, 319 + offsets: 12, 21, 316, 341 rotate: 90 - origin: 142, 3 spineboy-pro-run - index: 7 - bounds: 951, 389, 228, 296 - offsets: 36, 33, 316, 341 - origin: 142, 3 + index: 2 + bounds: 949, 377, 226, 306 + offsets: 34, 26, 316, 341 spineboy-pro-run index: 4 - bounds: 307, 195, 242, 320 - offsets: 2, 4, 316, 341 + bounds: 306, 196, 240, 319 + offsets: 3, 5, 316, 341 rotate: 90 - origin: 142, 3 spineboy-pro-run - index: 5 - bounds: 629, 200, 241, 316 - offsets: 8, 3, 316, 341 + index: 1 + bounds: 282, 2, 192, 318 + offsets: 69, 3, 316, 341 rotate: 90 - origin: 142, 3 spineboy-pro-run - index: 1 - bounds: 282, 2, 191, 318 - offsets: 70, 3, 316, 341 + index: 5 + bounds: 628, 198, 241, 316 + offsets: 8, 3, 316, 341 rotate: 90 - origin: 142, 3 spineboy-pro-run - index: 2 - bounds: 947, 81, 226, 306 - offsets: 34, 26, 316, 341 - origin: 142, 3 + index: 7 + bounds: 946, 79, 226, 296 + offsets: 37, 33, 316, 341 spineboy-pro-run index: 6 - bounds: 629, 4, 194, 316 - offsets: 68, 4, 316, 341 + bounds: 627, 2, 194, 315 + offsets: 68, 5, 316, 341 rotate: 90 - origin: 142, 3 diff --git a/assets/spineboy/export/spineboy-run.png b/assets/spineboy/export/spineboy-run.png index e28e0c6..340874d 100644 Binary files a/assets/spineboy/export/spineboy-run.png and b/assets/spineboy/export/spineboy-run.png differ diff --git a/assets/spineboy/export/spineboy.atlas b/assets/spineboy/export/spineboy.atlas index b07ccc3..eca542b 100644 --- a/assets/spineboy/export/spineboy.atlas +++ b/assets/spineboy/export/spineboy.atlas @@ -3,99 +3,92 @@ spineboy.png filter: Linear, Linear scale: 0.5 crosshair - bounds: 813, 160, 45, 45 + bounds: 352, 7, 45, 45 eye-indifferent - bounds: 569, 2, 47, 45 + bounds: 862, 105, 47, 45 eye-surprised - bounds: 643, 7, 47, 45 - rotate: 90 + bounds: 505, 79, 47, 45 front-bracer - bounds: 811, 51, 29, 40 + bounds: 826, 66, 29, 40 front-fist-closed - bounds: 807, 93, 38, 41 + bounds: 786, 65, 38, 41 front-fist-open - bounds: 815, 210, 43, 44 -front-foot - bounds: 706, 64, 63, 35 + bounds: 710, 51, 43, 44 rotate: 90 +front-foot + bounds: 210, 6, 63, 35 front-shin - bounds: 80, 11, 41, 92 + bounds: 665, 128, 41, 92 + rotate: 90 front-thigh - bounds: 754, 12, 23, 56 + bounds: 2, 2, 23, 56 + rotate: 90 front-upper-arm - bounds: 618, 5, 23, 49 + bounds: 250, 205, 23, 49 goggles - bounds: 214, 20, 131, 83 + bounds: 665, 171, 131, 83 gun - bounds: 347, 14, 105, 102 - rotate: 90 + bounds: 798, 152, 105, 102 head - bounds: 80, 105, 136, 149 + bounds: 2, 27, 136, 149 hoverboard-board - bounds: 2, 8, 246, 76 - rotate: 90 + bounds: 2, 178, 246, 76 hoverboard-thruster - bounds: 478, 2, 30, 32 -hoverglow-small - bounds: 218, 117, 137, 38 + bounds: 722, 96, 30, 32 rotate: 90 +hoverglow-small + bounds: 275, 81, 137, 38 mouth-grind - bounds: 775, 80, 47, 30 - rotate: 90 + bounds: 614, 97, 47, 30 mouth-oooo - bounds: 779, 31, 47, 30 - rotate: 90 + bounds: 612, 65, 47, 30 mouth-smile - bounds: 783, 207, 47, 30 - rotate: 90 + bounds: 661, 64, 47, 30 muzzle-glow - bounds: 779, 4, 25, 25 + bounds: 382, 54, 25, 25 muzzle-ring - bounds: 451, 14, 25, 105 + bounds: 275, 54, 25, 105 + rotate: 90 muzzle01 - bounds: 664, 60, 67, 40 + bounds: 911, 95, 67, 40 rotate: 90 muzzle02 - bounds: 580, 56, 68, 42 - rotate: 90 + bounds: 792, 108, 68, 42 muzzle03 - bounds: 478, 36, 83, 53 + bounds: 956, 171, 83, 53 rotate: 90 muzzle04 - bounds: 533, 49, 75, 45 - rotate: 90 + bounds: 275, 7, 75, 45 muzzle05 - bounds: 624, 56, 68, 38 - rotate: 90 + bounds: 140, 3, 68, 38 neck - bounds: 806, 8, 18, 21 + bounds: 250, 182, 18, 21 portal-bg - bounds: 258, 121, 133, 133 + bounds: 140, 43, 133, 133 portal-flare1 - bounds: 690, 2, 56, 30 - rotate: 90 + bounds: 554, 65, 56, 30 portal-flare2 - bounds: 510, 3, 57, 31 -portal-flare3 - bounds: 722, 4, 58, 30 + bounds: 759, 112, 57, 31 rotate: 90 +portal-flare3 + bounds: 554, 97, 58, 30 portal-shade - bounds: 393, 121, 133, 133 + bounds: 275, 121, 133, 133 portal-streaks1 - bounds: 528, 126, 126, 128 + bounds: 410, 126, 126, 128 portal-streaks2 - bounds: 656, 129, 125, 125 + bounds: 538, 129, 125, 125 rear-bracer - bounds: 826, 13, 28, 36 + bounds: 857, 67, 28, 36 rear-foot - bounds: 743, 70, 57, 30 - rotate: 90 + bounds: 663, 96, 57, 30 rear-shin - bounds: 174, 14, 38, 89 + bounds: 414, 86, 38, 89 + rotate: 90 rear-thigh - bounds: 783, 158, 28, 47 + bounds: 756, 63, 28, 47 rear-upper-arm - bounds: 783, 136, 20, 44 + bounds: 60, 5, 20, 44 rotate: 90 torso - bounds: 123, 13, 49, 90 + bounds: 905, 164, 49, 90 diff --git a/assets/spineboy/export/spineboy.png b/assets/spineboy/export/spineboy.png index d1c3ac1..0ea9737 100644 Binary files a/assets/spineboy/export/spineboy.png and b/assets/spineboy/export/spineboy.png differ diff --git a/assets/spineboy/license.txt b/assets/spineboy/license.txt index 60ff2d2..c2bbb86 100644 --- a/assets/spineboy/license.txt +++ b/assets/spineboy/license.txt @@ -1,4 +1,4 @@ -Copyright (c) 2013, Esoteric Software +Copyright (c) 2013, Esoteric Software LLC The images in this project may be redistributed as long as they are accompanied by this license file. The images may not be used for commercial use of any diff --git a/assets/stretchyman/export/stretchyman-pma.atlas b/assets/stretchyman/export/stretchyman-pma.atlas index a14dabf..d8b4a40 100644 --- a/assets/stretchyman/export/stretchyman-pma.atlas +++ b/assets/stretchyman/export/stretchyman-pma.atlas @@ -3,14 +3,17 @@ stretchyman-pma.png filter: Linear, Linear pma: true back-arm - bounds: 149, 45, 72, 202 + bounds: 679, 173, 72, 202 + rotate: 90 back-leg - bounds: 312, 4, 100, 318 + bounds: 2, 2, 100, 318 rotate: 90 body - bounds: 223, 106, 141, 452 + bounds: 2, 104, 141, 452 rotate: 90 front-arm - bounds: 2, 26, 145, 221 + bounds: 456, 100, 145, 221 + rotate: 90 head - bounds: 223, 2, 87, 102 + bounds: 322, 15, 87, 102 + rotate: 90 diff --git a/assets/stretchyman/export/stretchyman-pma.png b/assets/stretchyman/export/stretchyman-pma.png index 073483d..78e8b45 100644 Binary files a/assets/stretchyman/export/stretchyman-pma.png and b/assets/stretchyman/export/stretchyman-pma.png differ diff --git a/assets/stretchyman/export/stretchyman-pro.json b/assets/stretchyman/export/stretchyman-pro.json index 006f2d5..38e947f 100644 --- a/assets/stretchyman/export/stretchyman-pro.json +++ b/assets/stretchyman/export/stretchyman-pro.json @@ -1,7 +1,7 @@ { "skeleton": { - "hash": "QqiPXGOfONE", - "spine": "4.1.23-beta", + "hash": "CNp43FaCQIg", + "spine": "4.2.64-beta", "x": -100.47, "y": -9.21, "width": 260.65, @@ -11,7 +11,7 @@ }, "bones": [ { "name": "root" }, - { "name": "back-arm-ik-target", "parent": "root", "x": 103.52, "y": 345.27, "color": "ff3f00ff" }, + { "name": "back-arm-ik-target", "parent": "root", "x": 103.52, "y": 345.27, "color": "ff3f00ff", "icon": "ik" }, { "name": "hip", "parent": "root", "x": 28.61, "y": 289.9, "color": "ffbd00ff" }, { "name": "spine1", @@ -58,7 +58,7 @@ "rotation": -154.36, "x": 16, "y": -4.58, - "transform": "noScale", + "inherit": "noScale", "color": "ff0000ff" }, { @@ -96,7 +96,7 @@ "rotation": -6.56, "x": -34.01, "y": -279.68, - "transform": "onlyTranslation", + "inherit": "onlyTranslation", "color": "ff0000ff" }, { @@ -105,7 +105,7 @@ "length": 32.29, "rotation": 4.34, "x": 33.24, - "transform": "noScale", + "inherit": "noScale", "color": "ff0000ff" }, { @@ -114,10 +114,10 @@ "length": 15.87, "rotation": 10.06, "x": 32.29, - "transform": "noScale", + "inherit": "noScale", "color": "ff0000ff" }, - { "name": "back-leg-ik-target", "parent": "root", "x": 46.15, "y": 8.68, "color": "ff3f00ff" }, + { "name": "back-leg-ik-target", "parent": "root", "x": 46.15, "y": 8.68, "color": "ff3f00ff", "icon": "ik" }, { "name": "back-leg-ik1", "parent": "hip", @@ -202,7 +202,7 @@ }, { "name": "belly", "parent": "spine1", "x": 35.94, "y": -37.69, "color": "ffbd00ff" }, { "name": "butt", "parent": "hip", "x": -32.67, "y": -1.88, "color": "ffbd00ff" }, - { "name": "front-arm-ik-target", "parent": "root", "x": -92.44, "y": 331.78, "color": "ff3f00ff" }, + { "name": "front-arm-ik-target", "parent": "root", "x": -92.44, "y": 331.78, "color": "ff3f00ff", "icon": "ik" }, { "name": "front-arm-ik1", "parent": "spine4", @@ -220,7 +220,7 @@ "rotation": 118.58, "x": 27.13, "y": 4.9, - "transform": "noScale", + "inherit": "noScale", "color": "4eff00ff" }, { @@ -248,7 +248,7 @@ "length": 46.32, "rotation": 16.09, "x": 29.18, - "transform": "noScale", + "inherit": "noScale", "color": "4eff00ff" }, { @@ -258,12 +258,12 @@ "rotation": -10.98, "x": -77.05, "y": -285.04, - "transform": "onlyTranslation", + "inherit": "onlyTranslation", "color": "50ff00ff" }, { "name": "front-foot2", "parent": "front-foot1", "length": 29.12, "rotation": 9.61, "x": 26.3, "color": "50ff00ff" }, { "name": "front-foot3", "parent": "front-foot2", "length": 23.49, "rotation": 8.91, "x": 29.12, "color": "50ff00ff" }, - { "name": "front-leg-ik-target", "parent": "root", "x": -37.74, "y": 5.03, "color": "ff3f00ff" }, + { "name": "front-leg-ik-target", "parent": "root", "x": -37.74, "y": 5.03, "color": "ff3f00ff", "icon": "ik" }, { "name": "front-leg-ik1", "parent": "hip", @@ -371,7 +371,7 @@ "rotation": 6.98, "x": 15.82, "y": 0.22, - "transform": "noScale", + "inherit": "noScale", "color": "ffbd00ff" } ], @@ -489,7 +489,7 @@ "back-arm": { "type": "mesh", "uvs": [ 0.74522, 0.00989, 0.64111, 0.05762, 0.56303, 0.1559, 0.42509, 0.25886, 0.28974, 0.359, 0.22988, 0.49565, 0.21166, 0.60797, 0.21166, 0.69782, 0.16481, 0.78674, 0.14139, 0.84757, 0.02427, 0.88501, 0.0529, 0.91871, 0.37824, 0.98797, 0.60468, 0.98235, 0.6307, 0.9056, 0.73481, 0.87752, 0.63591, 0.81762, 0.55262, 0.74181, 0.38084, 0.69876, 0.37824, 0.60797, 0.39906, 0.50876, 0.51358, 0.38521, 0.66194, 0.28881, 0.85454, 0.18398, 0.97687, 0.07541, 0.9144, 0.00989 ], - "triangles": [ 11, 9, 12, 9, 8, 12, 12, 8, 18, 13, 12, 14, 12, 18, 17, 18, 8, 7, 14, 12, 17, 11, 10, 9, 14, 16, 15, 14, 17, 16, 7, 19, 18, 7, 6, 19, 6, 5, 19, 19, 5, 20, 5, 4, 20, 20, 4, 21, 4, 3, 21, 21, 3, 22, 3, 2, 22, 22, 2, 23, 2, 1, 23, 23, 1, 24, 1, 0, 24, 0, 25, 24 ], + "triangles": [ 14, 17, 16, 14, 16, 15, 11, 10, 9, 14, 12, 17, 18, 8, 7, 12, 18, 17, 13, 12, 14, 12, 8, 18, 9, 8, 12, 11, 9, 12, 6, 5, 19, 7, 6, 19, 7, 19, 18, 20, 4, 21, 5, 4, 20, 19, 5, 20, 3, 2, 22, 21, 3, 22, 4, 3, 21, 0, 25, 24, 1, 0, 24, 23, 1, 24, 2, 1, 23, 22, 2, 23 ], "vertices": [ 1, 9, -7.68, -11.48, 1, 1, 9, 4.09, -13.63, 1, 1, 9, 23.49, -9.36, 1, 1, 10, 13.44, -9.23, 1, 2, 10, 35.2, -9.62, 0.50649, 11, -0.58, -9.66, 0.49351, 1, 11, 26.04, -6.39, 1, 1, 12, 14.15, -6.11, 1, 2, 12, 31.54, -5.57, 0.66493, 13, -3.33, -5.03, 0.33507, 1, 13, 13.08, -11.25, 1, 1, 13, 24.41, -14.89, 1, 1, 13, 30.15, -24.52, 1, 1, 13, 36.93, -23.54, 1, 1, 13, 54.08, -2.33, 1, 1, 13, 55.73, 14.15, 1, 1, 13, 41.39, 18.48, 1, 1, 13, 37.29, 26.87, 1, 1, 13, 24.66, 21.67, 1, 1, 13, 9.18, 18.1, 1, 2, 12, 31.33, 6.78, 0.47881, 13, -1.11, 7.12, 0.52119, 1, 12, 13.77, 6.04, 1, 2, 11, 24.98, 6.17, 0.89218, 12, -5.48, 6.96, 0.10782, 2, 10, 32.6, 7.29, 0.59842, 11, -0.32, 7.45, 0.40158, 1, 10, 11.08, 8.85, 1, 1, 9, 17.89, 11.88, 1, 1, 9, -4.82, 9.46, 1, 1, 9, -13.69, -0.69, 1 ], "hull": 26, "edges": [ 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 18, 20, 20, 22, 22, 24, 24, 26, 26, 28, 28, 30, 30, 32, 32, 34, 34, 36, 36, 38, 38, 40, 40, 42, 42, 44, 44, 46, 46, 48, 48, 50, 0, 50, 2, 48, 4, 46, 6, 44, 8, 42, 10, 40, 12, 38, 14, 36 ], @@ -509,7 +509,7 @@ "back-leg": { "type": "mesh", "uvs": [ 0.502, 0.01179, 0.36076, 0.06379, 0.4057, 0.15046, 0.44743, 0.23916, 0.47953, 0.32991, 0.51163, 0.42269, 0.52127, 0.50629, 0.48274, 0.58888, 0.41212, 0.66025, 0.3126, 0.74182, 0.2163, 0.81625, 0.1232, 0.89272, 0.00763, 0.97429, 0.29655, 0.98958, 0.47407, 0.99222, 0.64004, 0.99468, 0.80989, 0.9896, 0.91291, 0.98652, 1, 0.95797, 0.8333, 0.94681, 0.71067, 0.9386, 0.57123, 0.92031, 0.41533, 0.89986, 0.3447, 0.89272, 0.36885, 0.87178, 0.42817, 0.82033, 0.502, 0.74794, 0.58226, 0.66943, 0.6593, 0.59092, 0.72993, 0.50528, 0.76524, 0.42167, 0.78129, 0.32481, 0.78771, 0.23406, 0.78771, 0.13924, 0.72351, 0.03728, 0.60152, 0.00567, 0.82117, 0.96898, 0.67873, 0.96396, 0.52111, 0.9574, 0.35936, 0.94214, 0.19388, 0.92922, 0.25375, 0.88159, 0.32792, 0.8184 ], - "triangles": [ 17, 36, 19, 17, 16, 36, 16, 37, 36, 17, 19, 18, 36, 20, 19, 15, 37, 16, 14, 38, 15, 15, 38, 37, 37, 20, 36, 38, 21, 37, 37, 21, 20, 38, 22, 21, 13, 39, 14, 14, 39, 38, 12, 40, 13, 13, 40, 39, 39, 22, 38, 40, 23, 39, 39, 23, 22, 12, 11, 40, 40, 41, 23, 40, 11, 41, 23, 41, 24, 11, 10, 41, 41, 42, 24, 41, 10, 42, 24, 42, 25, 26, 25, 9, 10, 9, 42, 25, 42, 9, 9, 8, 26, 26, 8, 27, 8, 7, 27, 27, 7, 28, 7, 6, 28, 28, 6, 29, 6, 5, 29, 29, 5, 30, 30, 5, 31, 31, 5, 4, 31, 4, 32, 32, 4, 3, 32, 3, 33, 3, 2, 33, 2, 34, 33, 2, 1, 34, 34, 0, 35, 34, 1, 0 ], + "triangles": [ 36, 20, 19, 17, 19, 18, 16, 37, 36, 17, 16, 36, 17, 36, 19, 38, 22, 21, 37, 21, 20, 38, 21, 37, 37, 20, 36, 15, 38, 37, 14, 38, 15, 15, 37, 16, 39, 23, 22, 40, 23, 39, 39, 22, 38, 13, 40, 39, 12, 40, 13, 14, 39, 38, 13, 39, 14, 9, 8, 26, 25, 42, 9, 10, 9, 42, 26, 25, 9, 24, 42, 25, 41, 10, 42, 41, 42, 24, 11, 10, 41, 23, 41, 24, 40, 11, 41, 40, 41, 23, 12, 11, 40, 26, 8, 27, 6, 5, 29, 28, 6, 29, 7, 6, 28, 27, 7, 28, 8, 7, 27, 29, 5, 30, 31, 5, 4, 30, 5, 31, 32, 4, 3, 31, 4, 32, 34, 1, 0, 34, 0, 35, 2, 1, 34, 2, 34, 33, 3, 2, 33, 32, 3, 33 ], "vertices": [ 1, 20, -19.79, -5.67, 1, 2, 20, -5.62, -22.28, 0.83363, 21, -41.07, -23.3, 0.16637, 2, 20, 22.31, -21.98, 0.65187, 21, -13.17, -21.89, 0.34813, 3, 20, 50.83, -22.11, 0.3172, 21, 15.33, -20.87, 0.43086, 22, -19.67, -21.09, 0.25193, 4, 20, 79.85, -23.29, 0.10792, 21, 44.37, -20.89, 0.35417, 22, 9.3, -19.2, 0.3192, 23, -25.22, -20.06, 0.21872, 4, 21, 74.06, -20.98, 0.16486, 22, 38.93, -17.34, 0.32776, 23, 4.09, -15.38, 0.29831, 24, -30.1, -17.16, 0.20907, 3, 22, 65.54, -17.61, 0.17523, 23, 30.6, -13.11, 0.39173, 24, -4.12, -11.42, 0.43304, 3, 23, 57.03, -15.71, 0.19718, 24, 22.43, -10.53, 0.52971, 25, -12.97, -9.81, 0.27311, 3, 24, 46.05, -13.47, 0.40991, 25, 10.84, -10.17, 0.34747, 26, -24.93, -10.51, 0.24261, 3, 24, 73.39, -18.69, 0.19432, 25, 38.58, -12.41, 0.37177, 26, 2.9, -10.99, 0.43391, 3, 25, 64.06, -14.98, 0.16664, 26, 28.49, -11.94, 0.56756, 27, -7.53, -11.48, 0.2658, 3, 26, 54.58, -12.37, 0.52114, 27, 18.56, -10.93, 0.36168, 14, -3.08, 24.95, 0.11718, 4, 26, 82.97, -14.36, 0.35144, 27, 47.01, -11.86, 0.29521, 14, -13.07, -1.67, 0.25118, 15, -46.3, 1.83, 0.10216, 1, 14, 16.37, -4.67, 1, 2, 14, 34.32, -4.37, 0.53487, 15, 0.74, -4.44, 0.46513, 3, 14, 51.1, -4.08, 0.14611, 15, 17.5, -5.42, 0.54314, 16, -15.51, -2.75, 0.31075, 2, 15, 34.67, -4.01, 0.40714, 16, 1.65, -4.36, 0.59286, 2, 15, 45.09, -3.16, 0.25726, 16, 12.05, -5.34, 0.74274, 2, 15, 53.99, 5.81, 0.25311, 16, 22.38, 1.94, 0.74689, 2, 15, 37.19, 9.56, 0.4029, 16, 6.5, 8.57, 0.5971, 3, 14, 57.07, 14.17, 0.13352, 15, 24.84, 12.33, 0.54644, 16, -5.18, 13.44, 0.32004, 4, 26, 47.09, 33.11, 0.13131, 14, 42.64, 19.08, 0.26349, 15, 10.82, 18.31, 0.49746, 16, -17.94, 21.78, 0.10773, 4, 26, 46.46, 16.09, 0.21159, 27, 9.37, 17.21, 0.1068, 14, 26.51, 24.57, 0.44951, 15, -4.85, 25.01, 0.23211, 3, 26, 46.8, 8.62, 0.40111, 27, 10, 9.75, 0.24543, 14, 19.24, 26.38, 0.35346, 3, 26, 39.71, 8.61, 0.5825, 27, 2.91, 9.47, 0.30792, 14, 21.25, 33.18, 0.10958, 3, 25, 59.17, 5.89, 0.21955, 26, 22.27, 8.58, 0.57946, 27, -14.51, 8.8, 0.20099, 3, 24, 71.84, 0.47, 0.21583, 25, 34.96, 6.47, 0.32263, 26, -1.92, 7.63, 0.46154, 3, 24, 45.81, 3.96, 0.40554, 25, 8.71, 7.12, 0.38602, 26, -28.17, 6.61, 0.20845, 3, 23, 56.79, 2.13, 0.25409, 24, 19.83, 7.12, 0.53006, 25, -17.46, 7.46, 0.21585, 3, 22, 66.18, 3.45, 0.22414, 23, 29.23, 7.92, 0.34135, 24, -8.25, 9.24, 0.43451, 4, 21, 76.6, 4.51, 0.19364, 22, 39.78, 8.26, 0.28887, 23, 2.49, 10.19, 0.33579, 24, -35.06, 7.97, 0.1817, 4, 20, 82.88, 7.08, 0.11658, 21, 46.18, 9.58, 0.35727, 22, 9.09, 11.32, 0.35745, 23, -28.36, 10.3, 0.16869, 3, 20, 54.46, 12.11, 0.35357, 21, 17.57, 13.46, 0.44494, 22, -19.71, 13.32, 0.20149, 2, 20, 24.65, 16.69, 0.65438, 21, -12.4, 16.85, 0.34562, 2, 20, -8.38, 15.21, 0.85331, 21, -45.34, 14.05, 0.14669, 1, 20, -20.19, 4.56, 1, 2, 15, 35.89, 2.53, 0.4051, 16, 3.99, 1.87, 0.5949, 3, 14, 54.38, 5.92, 0.13921, 15, 21.52, 4.3, 0.54495, 16, -9.85, 6.12, 0.31584, 2, 14, 37.79, 7.63, 0.44939, 15, 5.1, 7.27, 0.55061, 3, 26, 65.39, 20.7, 0.11858, 14, 20.6, 11.35, 0.75134, 15, -11.76, 12.27, 0.13008, 3, 26, 65.41, 1.81, 0.3968, 27, 24.3, 0.23, 0.28258, 14, 2.07, 14.98, 0.32063, 3, 26, 48.01, 0.08, 0.55395, 27, 6.94, -0.33, 0.33293, 14, 3.38, 30.47, 0.11312, 3, 25, 65.95, -2.97, 0.19447, 26, 24.96, -1.58, 0.57382, 27, -15.99, -0.43, 0.23171 ], "hull": 36, "edges": [ 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 18, 20, 20, 22, 22, 24, 24, 26, 34, 36, 44, 46, 50, 52, 52, 54, 54, 56, 56, 58, 58, 60, 60, 62, 62, 64, 64, 66, 66, 68, 68, 70, 0, 70, 4, 66, 2, 68, 40, 42, 42, 44, 26, 28, 28, 30, 46, 48, 48, 50, 36, 38, 38, 40, 30, 32, 32, 34, 18, 52, 16, 54, 14, 56, 12, 58, 10, 60, 8, 62, 6, 64, 32, 72, 72, 38, 30, 74, 74, 40, 72, 74, 28, 76, 76, 42, 74, 76, 26, 78, 78, 44, 76, 78, 24, 80, 80, 46, 78, 80, 22, 82, 82, 48, 80, 82, 20, 84, 84, 50, 82, 84 ], @@ -529,7 +529,7 @@ "body": { "type": "mesh", "uvs": [ 0.35966, 0.01351, 0.26864, 0.04108, 0.26204, 0.0954, 0.34119, 0.14478, 0.39792, 0.19457, 0.40451, 0.24272, 0.38077, 0.27893, 0.3597, 0.3004, 0.34119, 0.31926, 0.34989, 0.34326, 0.35834, 0.36658, 0.36552, 0.40164, 0.37234, 0.43499, 0.38397, 0.4944, 0.3956, 0.55971, 0.39884, 0.59858, 0.40142, 0.62955, 0.40216, 0.65662, 0.3461, 0.71564, 0.27077, 0.78176, 0.2201, 0.82128, 0.17618, 0.85553, 0.13115, 0.88833, 0.08238, 0.92385, 0.00342, 0.9796, 0.18836, 0.99127, 0.32172, 0.99284, 0.46266, 0.99451, 0.61643, 0.98608, 0.71618, 0.97182, 0.61851, 0.95821, 0.48967, 0.95043, 0.39458, 0.94083, 0.27772, 0.92904, 0.23408, 0.9232, 0.26692, 0.89774, 0.30681, 0.86681, 0.34203, 0.83415, 0.38369, 0.7955, 0.45642, 0.72874, 0.52708, 0.66845, 0.56032, 0.63345, 0.57541, 0.60109, 0.59357, 0.56214, 0.61643, 0.49732, 0.63513, 0.43963, 0.64345, 0.40462, 0.77081, 0.39011, 0.84585, 0.37025, 0.90983, 0.35331, 0.9674, 0.31915, 0.97302, 0.28585, 0.96448, 0.23351, 0.8952, 0.1681, 0.79346, 0.12643, 0.75179, 0.10879, 0.71799, 0.09448, 0.66817, 0.07237, 0.61343, 0.04807, 0.47868, 0.01411, 0.49846, 0.38826, 0.66315, 0.34728, 0.67333, 0.30664, 0.8188, 0.29655, 0.80971, 0.24505, 0.72829, 0.17902, 0.68147, 0.13902, 0.59191, 0.09711, 0.3904, 0.09012, 0.53695, 0.14981, 0.57563, 0.19616, 0.64483, 0.25077, 0.79855, 0.33476, 0.61751, 0.97167, 0.4773, 0.97061, 0.23795, 0.95673, 0.15272, 0.92355, 0.14158, 0.94886, 0.23861, 0.86092, 0.51732, 0.30354, 0.50696, 0.34527, 0.50634, 0.43735, 0.50334, 0.4959, 0.51086, 0.32558, 0.50355, 0.41057, 0.19543, 0.89241, 0.36492, 0.9641 ], - "triangles": [ 1, 0, 59, 58, 1, 59, 68, 1, 58, 2, 1, 68, 67, 68, 58, 67, 58, 57, 67, 57, 56, 66, 67, 56, 66, 56, 55, 3, 2, 68, 69, 68, 67, 3, 68, 69, 69, 67, 66, 66, 55, 54, 65, 66, 54, 65, 54, 53, 4, 3, 69, 70, 69, 66, 4, 69, 70, 70, 66, 65, 5, 4, 70, 71, 70, 65, 5, 70, 71, 6, 71, 62, 79, 6, 62, 7, 6, 79, 71, 6, 5, 83, 7, 79, 8, 7, 83, 83, 79, 62, 9, 8, 83, 80, 9, 83, 61, 83, 62, 61, 62, 72, 80, 83, 61, 46, 80, 61, 46, 61, 47, 62, 71, 64, 64, 65, 53, 64, 53, 52, 71, 65, 64, 63, 64, 52, 63, 52, 51, 62, 64, 63, 50, 63, 51, 72, 62, 63, 72, 63, 50, 49, 72, 50, 48, 72, 49, 47, 61, 72, 47, 72, 48, 74, 32, 31, 86, 32, 74, 73, 31, 30, 74, 31, 73, 73, 30, 29, 28, 74, 73, 28, 73, 29, 27, 86, 74, 27, 74, 28, 26, 86, 27, 75, 33, 86, 24, 23, 77, 25, 77, 75, 24, 77, 25, 26, 75, 86, 25, 75, 26, 22, 21, 85, 85, 78, 35, 34, 85, 35, 76, 22, 85, 76, 85, 34, 23, 22, 76, 77, 23, 76, 77, 76, 34, 77, 34, 33, 75, 77, 33, 86, 33, 32, 36, 78, 20, 21, 20, 78, 37, 36, 20, 85, 21, 78, 35, 78, 36, 38, 18, 39, 19, 18, 38, 37, 19, 38, 20, 19, 37, 40, 17, 16, 41, 40, 16, 39, 17, 40, 18, 17, 39, 42, 15, 14, 43, 42, 14, 41, 16, 15, 42, 41, 15, 14, 13, 82, 43, 82, 44, 14, 82, 43, 12, 11, 84, 45, 81, 84, 12, 84, 81, 46, 45, 84, 13, 12, 81, 82, 13, 81, 44, 81, 45, 82, 81, 44, 10, 9, 80, 60, 10, 80, 11, 10, 60, 60, 80, 46, 84, 60, 46, 11, 60, 84 ], + "triangles": [ 2, 1, 68, 68, 1, 58, 58, 1, 59, 1, 0, 59, 69, 67, 66, 3, 68, 69, 69, 68, 67, 3, 2, 68, 66, 56, 55, 66, 67, 56, 67, 57, 56, 67, 58, 57, 67, 68, 58, 5, 70, 71, 71, 70, 65, 5, 4, 70, 70, 66, 65, 4, 69, 70, 70, 69, 66, 4, 3, 69, 65, 54, 53, 65, 66, 54, 66, 55, 54, 46, 61, 47, 46, 80, 61, 80, 83, 61, 61, 62, 72, 61, 83, 62, 80, 9, 83, 9, 8, 83, 83, 79, 62, 8, 7, 83, 83, 7, 79, 71, 6, 5, 7, 6, 79, 79, 6, 62, 6, 71, 62, 47, 72, 48, 47, 61, 72, 48, 72, 49, 49, 72, 50, 72, 63, 50, 72, 62, 63, 50, 63, 51, 62, 64, 63, 63, 52, 51, 63, 64, 52, 71, 65, 64, 64, 53, 52, 64, 65, 53, 62, 71, 64, 26, 86, 27, 27, 74, 28, 27, 86, 74, 28, 73, 29, 28, 74, 73, 73, 30, 29, 74, 31, 73, 73, 31, 30, 86, 32, 74, 74, 32, 31, 25, 75, 26, 26, 75, 86, 24, 77, 25, 25, 77, 75, 24, 23, 77, 75, 33, 86, 86, 33, 32, 75, 77, 33, 77, 34, 33, 77, 76, 34, 77, 23, 76, 23, 22, 76, 76, 85, 34, 76, 22, 85, 34, 85, 35, 85, 78, 35, 22, 21, 85, 35, 78, 36, 85, 21, 78, 37, 36, 20, 21, 20, 78, 36, 78, 20, 20, 19, 37, 37, 19, 38, 19, 18, 38, 38, 18, 39, 18, 17, 39, 39, 17, 40, 41, 40, 16, 40, 17, 16, 42, 41, 15, 41, 16, 15, 43, 42, 14, 42, 15, 14, 14, 82, 43, 43, 82, 44, 14, 13, 82, 82, 81, 44, 44, 81, 45, 82, 13, 81, 13, 12, 81, 46, 45, 84, 12, 84, 81, 45, 81, 84, 12, 11, 84, 11, 60, 84, 84, 60, 46, 60, 80, 46, 11, 10, 60, 60, 10, 80, 10, 9, 80 ], "vertices": [ 1, 6, 30.85, 2.45, 1, 2, 5, 60.42, 12.42, 0.24859, 6, 22.32, 18.18, 0.75141, 2, 5, 39.47, 25.25, 0.44332, 6, -1.06, 25.72, 0.55668, 3, 4, 48.03, 29.46, 0.37431, 5, 14.55, 26.45, 0.47619, 6, -25.57, 21.02, 0.1495, 3, 3, 50.36, 32.58, 0.11243, 4, 24.29, 26.8, 0.64611, 5, -8.99, 30.5, 0.24146, 3, 44, -45.22, -8.81, 0.10611, 3, 28.69, 30.4, 0.49533, 4, 2.89, 30.85, 0.39856, 3, 44, -28.91, -12.45, 0.25802, 3, 12.15, 32.8, 0.60894, 4, -12.29, 37.84, 0.13304, 3, 44, -18.5, -14.05, 0.28714, 3, 2.34, 35.98, 0.51935, 29, -7.6, 18.95, 0.19351, 4, 44, -10.79, -18.35, 0.28478, 28, -42.03, 75.56, 0.10295, 3, -6.36, 37.32, 0.37494, 29, -10.2, 10.26, 0.23733, 3, 44, 0.92, -16.96, 0.34087, 3, -17.28, 35.45, 0.32141, 29, -8.2, -0.67, 0.33772, 4, 44, 10.64, -16.32, 0.32691, 45, -24.05, -14.9, 0.16082, 3, -27.58, 33.67, 0.14432, 29, -6.37, -11.05, 0.36794, 4, 44, 28.5, -15.63, 0.24237, 45, -9.55, -15.11, 0.27028, 46, -45.51, -19.12, 0.12132, 29, -3.65, -27.88, 0.36603, 4, 44, 41.59, -14.89, 0.21761, 45, 6.93, -15.35, 0.33285, 46, -26.85, -17.49, 0.20377, 29, -1.3, -43.28, 0.24577, 3, 45, 33.83, -15.81, 0.47179, 46, 0, -15.85, 0.42627, 47, -31.79, -17.82, 0.10194, 3, 45, 63.39, -16.48, 0.2126, 46, 29.52, -14.22, 0.42737, 47, -2.43, -14.39, 0.36002, 3, 46, 49.79, -15.51, 0.30179, 47, 14.85, -13.08, 0.47127, 48, -21.15, -15.64, 0.22695, 3, 46, 61.1, -13.41, 0.15443, 47, 29.03, -11.65, 0.50848, 48, -3.27, -12.45, 0.33708, 2, 47, 41.24, -10.8, 0.28079, 48, 8.41, -8.79, 0.71921, 2, 48, 36.24, -8.59, 0.56513, 49, -3.02, -8.84, 0.43487, 3, 48, 67.93, -10.06, 0.16322, 49, 28.69, -7.82, 0.53712, 50, -8.12, -7.7, 0.29966, 3, 49, 47.76, -8.47, 0.40201, 50, 10.97, -7.9, 0.45131, 51, -26.34, -6.21, 0.14668, 3, 49, 64.62, -8.06, 0.25017, 50, 27.8, -8.4, 0.46039, 51, -12.77, -8.82, 0.28944, 4, 49, 79.13, -10.24, 0.11858, 50, 42.33, -8.03, 0.26981, 51, 4.53, -8.38, 0.48104, 38, -1.56, 35.6, 0.13057, 2, 51, 20.84, -9.2, 0.728, 38, -5.38, 19.56, 0.272, 1, 38, -11.5, -7.3, 1, 4, 51, 43.23, 16.27, 0.2746, 38, 15.1, -7.51, 0.48158, 39, -12.29, -5.54, 0.12942, 40, -41.77, 0.94, 0.11439, 4, 51, 37, 33.94, 0.18804, 38, 33.71, -4.58, 0.34252, 39, 6.54, -5.76, 0.18297, 40, -23.2, -2.19, 0.28647, 3, 38, 53.35, -1.59, 0.21646, 39, 26.41, -6.09, 0.26516, 40, -3.62, -5.59, 0.51838, 2, 39, 47.99, -1.76, 0.15753, 40, 18.37, -4.66, 0.84247, 1, 40, 33.16, -0.12, 1, 2, 39, 47.98, 10.84, 0.17387, 40, 20.32, 7.79, 0.82613, 4, 51, 9.83, 48.43, 0.17572, 38, 53.29, 18.7, 0.17038, 39, 29.73, 13.92, 0.136, 40, 2.77, 13.66, 0.5179, 4, 51, 11.45, 34.58, 0.26313, 38, 39.26, 20.56, 0.23037, 39, 16.21, 18.1, 0.15679, 40, -9.94, 19.88, 0.3497, 4, 51, 12.41, 17.13, 0.37057, 38, 22.11, 22.5, 0.30409, 39, -0.38, 22.88, 0.18235, 40, -25.59, 27.17, 0.14299, 3, 51, 12.34, 10.44, 0.4464, 38, 15.56, 23.92, 0.2976, 39, -6.59, 25.37, 0.256, 4, 50, 38.15, 11.09, 0.28506, 51, 1.65, 10.97, 0.37544, 38, 17.99, 34.75, 0.18251, 39, -2.39, 35.65, 0.15699, 3, 49, 62.62, 10.94, 0.26064, 50, 26.05, 10.62, 0.49792, 51, -15.15, 10.14, 0.24144, 3, 49, 47.27, 9.67, 0.40348, 50, 9.53, 10.2, 0.4787, 51, -26.59, 11.94, 0.11781, 3, 48, 69.23, 6.98, 0.16044, 49, 28.64, 9.27, 0.53936, 50, -7.95, 9.39, 0.3002, 2, 48, 37.36, 8.01, 0.57649, 49, -3.21, 7.8, 0.42351, 2, 47, 45.49, 7.11, 0.2935, 48, 8.38, 9.61, 0.7065, 3, 46, 62.85, 9, 0.15446, 47, 29.41, 10.82, 0.49324, 48, -8.13, 9.49, 0.3523, 3, 46, 52.15, 9.28, 0.30575, 47, 12.84, 11.74, 0.46742, 48, -26.12, 8.77, 0.22683, 3, 45, 66.66, 11.26, 0.21798, 46, 30.62, 13.69, 0.42844, 47, -3.05, 13.54, 0.35358, 3, 45, 37.7, 16.76, 0.48246, 46, 1.32, 16.92, 0.41752, 47, -32.5, 14.97, 0.10002, 4, 44, 44.35, 22.12, 0.2346, 45, 11.91, 21.43, 0.43853, 46, -24.76, 19.57, 0.2068, 3, -58.29, -7.2, 0.12007, 4, 44, 28.55, 23.57, 0.31081, 45, -3.77, 23.84, 0.19158, 28, -76.76, 29.23, 0.21531, 3, -42.43, -7.46, 0.28231, 3, 44, 22.31, 41.64, 0.18196, 28, -69.84, 12.47, 0.43955, 3, -34.84, -25, 0.37848, 3, 44, 19.78, 51.42, 0.1392, 28, -59.84, 2.53, 0.47896, 3, -23.9, -35.17, 0.38184, 3, 44, 6.03, 61.54, 0.10543, 28, -52.71, -5.88, 0.51007, 3, -17.11, -43.61, 0.38449, 2, 28, -37.16, -13.14, 0.67427, 3, -1.22, -50.83, 0.32573, 1, 28, -22.09, -13.06, 1, 2, 28, 1.45, -10.49, 0.89019, 3, 37.4, -48.18, 0.10981, 3, 28, 30.41, 0.97, 0.4302, 3, 66.35, -36.73, 0.16237, 4, 19.98, -44.2, 0.40743, 2, 4, 41.58, -34.52, 0.68165, 5, -9.45, -33.21, 0.31835, 2, 4, 50.69, -30.62, 0.51066, 5, 0.38, -31.99, 0.48934, 3, 4, 58.07, -27.45, 0.26484, 5, 8.35, -31.01, 0.61475, 6, -18.05, -36.28, 0.12041, 3, 4, 69.4, -22.88, 0.17396, 5, 20.51, -29.78, 0.5644, 6, -6.53, -32.23, 0.26164, 2, 5, 33.86, -28.42, 0.29085, 6, 6.13, -27.77, 0.70915, 2, 5, 56.55, -19.38, 0.17381, 6, 26.05, -13.63, 0.82619, 4, 44, 20.79, 3.26, 0.43236, 45, -12.74, 4.03, 0.19687, 3, -36.22, 13.38, 0.21782, 29, 13.98, -19.25, 0.15294, 4, 44, 2.69, 26.81, 0.26409, 28, -50.86, 29.21, 0.2337, 3, -16.39, -8.73, 0.34628, 29, 35.79, -0.49, 0.15592, 3, 44, -15.65, 28.57, 0.15678, 28, -33.54, 28.78, 0.2916, 3, 2.03, -9.11, 0.55162, 1, 28, -28.18, 8.37, 1, 1, 28, -5.01, 11, 1, 3, 28, 24.12, 24.18, 0.12052, 3, 60.07, -13.52, 0.21384, 4, 20.53, -20.16, 0.66564, 2, 4, 39.64, -17.85, 0.59513, 5, -6.68, -16.66, 0.40487, 3, 4, 60.96, -9.87, 0.26252, 5, 16.02, -14.92, 0.55541, 6, -14.39, -18.85, 0.18206, 2, 5, 32.69, 8.3, 0.58729, 6, -3.66, 7.65, 0.41271, 2, 4, 39.53, 3.1, 0.47136, 5, -0.95, 3.5, 0.52864, 1, 4, 17.89, 2.56, 1, 2, 3, 27.01, -3.64, 0.67245, 4, -8.37, -1.32, 0.32755, 3, 44, -2.63, 46, 0.10033, 28, -45.42, 10.27, 0.52612, 3, -9.64, -27.47, 0.37356, 2, 39, 47.98, 4.75, 0.16598, 40, 19.38, 1.78, 0.83402, 4, 51, 19.56, 50.48, 0.12624, 38, 53.31, 9.51, 0.16908, 39, 28.22, 4.86, 0.24846, 40, -0.13, 4.94, 0.45621, 4, 51, 26.31, 16.82, 0.32786, 38, 18.97, 9.25, 0.38308, 39, -5.69, 10.34, 0.1588, 40, -32.78, 15.61, 0.13026, 2, 51, 16.97, -0.03, 0.66865, 38, 4.23, 21.71, 0.33135, 3, 51, 28.1, 2.86, 0.4826, 38, 4.92, 10.15, 0.31302, 39, -19.39, 13.57, 0.20437, 3, 49, 63.22, -0.58, 0.21069, 50, 25.96, 0.79, 0.49387, 51, -11.02, 1.48, 0.29545, 3, 44, -14.84, 8.09, 0.24448, 28, -33.35, 51.23, 0.16325, 3, 2.6, 13.54, 0.59227, 4, 44, 3.38, 4.96, 0.28616, 28, -51.81, 51.13, 0.16477, 3, -15.87, 13.44, 0.31892, 29, 13.85, -0.53, 0.23015, 4, 44, 46.09, 3.59, 0.2409, 45, 9.06, 3.1, 0.41152, 46, -28.46, 0.64, 0.21862, 29, 17.5, -43.07, 0.12896, 3, 45, 37.23, 1.25, 0.47745, 46, -0.08, 1.26, 0.42163, 47, -36.26, -5.26, 0.10093, 4, 44, -5.23, 6.3, 0.25594, 28, -43.11, 51.32, 0.15579, 3, -7.17, 13.63, 0.42092, 29, 14.17, 8.17, 0.16735, 4, 44, 33.04, 3.37, 0.36685, 45, -3.97, 3.61, 0.31093, 3, -45.33, 9.83, 0.17307, 29, 15.76, -30.15, 0.14915, 4, 49, 77.51, -1.16, 0.11479, 50, 40.24, 0.95, 0.26889, 51, 3.05, 0.72, 0.44973, 38, 7.66, 35.33, 0.16659, 4, 51, 22.73, 34.68, 0.22091, 38, 37.18, 9.39, 0.26956, 39, 12.3, 7.43, 0.20636, 40, -15.46, 9.95, 0.30317 ], "hull": 60, "edges": [ 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 24, 26, 26, 28, 32, 34, 34, 36, 36, 38, 46, 48, 48, 50, 54, 56, 56, 58, 58, 60, 60, 62, 66, 68, 76, 78, 78, 80, 80, 82, 86, 88, 88, 90, 90, 92, 92, 94, 98, 100, 100, 102, 102, 104, 104, 106, 106, 108, 116, 118, 0, 118, 92, 120, 120, 20, 28, 86, 82, 32, 34, 80, 78, 36, 76, 38, 12, 124, 102, 126, 126, 124, 126, 128, 128, 130, 130, 132, 132, 134, 112, 134, 134, 136, 136, 4, 2, 116, 6, 138, 138, 132, 8, 140, 140, 130, 10, 142, 142, 128, 128, 104, 130, 106, 132, 108, 122, 92, 100, 144, 144, 122, 126, 144, 144, 94, 112, 114, 114, 116, 108, 110, 110, 112, 16, 18, 18, 20, 20, 22, 22, 24, 12, 14, 14, 16, 122, 124, 94, 96, 96, 98, 56, 146, 146, 60, 54, 148, 148, 62, 146, 148, 50, 150, 150, 66, 46, 152, 152, 68, 154, 152, 154, 48, 42, 156, 156, 72, 14, 158, 158, 124, 18, 160, 160, 122, 160, 120, 24, 162, 162, 90, 26, 164, 164, 88, 162, 164, 16, 166, 160, 166, 166, 158, 166, 124, 162, 168, 168, 120, 168, 22, 168, 92, 38, 40, 40, 42, 72, 74, 74, 76, 40, 74, 42, 44, 44, 46, 152, 170, 170, 156, 44, 170, 68, 70, 70, 72, 170, 70, 62, 64, 64, 66, 148, 172, 172, 150, 64, 172, 50, 52, 52, 54, 172, 52, 154, 66, 150, 154, 28, 30, 30, 32, 82, 84, 84, 86, 30, 84 ], @@ -541,7 +541,7 @@ "front-arm": { "type": "mesh", "uvs": [ 0.71401, 0.00566, 0.67108, 0.08129, 0.60222, 0.15434, 0.53633, 0.21683, 0.44558, 0.28705, 0.34898, 0.35134, 0.29097, 0.38941, 0.25238, 0.41472, 0.22423, 0.44271, 0.19483, 0.47193, 0.15998, 0.50658, 0.09138, 0.59568, 0.05498, 0.70866, 0.02988, 0.81366, 0.01049, 0.94262, 0.10495, 0.98985, 0.25391, 0.97421, 0.31482, 0.88907, 0.28834, 0.82869, 0.13607, 0.74572, 0.14335, 0.71488, 0.18317, 0.62253, 0.25217, 0.54221, 0.29538, 0.50981, 0.33787, 0.47795, 0.38452, 0.45013, 0.43581, 0.41953, 0.54711, 0.3655, 0.68845, 0.29832, 0.74855, 0.35527, 0.85874, 0.38229, 0.99674, 0.37645, 0.95354, 0.33244, 0.91356, 0.29172, 0.87464, 0.25208, 0.83759, 0.21434, 0.78083, 0.12598, 0.78194, 0.0683, 0.6322, 0.23719, 0.66925, 0.15784, 0.75533, 0.20967, 0.7161, 0.11137 ], - "triangles": [ 30, 32, 31, 30, 29, 33, 30, 33, 32, 29, 28, 33, 28, 34, 33, 34, 40, 35, 34, 28, 40, 28, 38, 40, 38, 39, 40, 40, 36, 35, 39, 41, 40, 40, 41, 36, 39, 1, 41, 36, 41, 37, 37, 41, 0, 41, 1, 0, 39, 2, 1, 15, 18, 16, 15, 14, 13, 15, 13, 19, 16, 18, 17, 18, 15, 19, 13, 12, 19, 19, 12, 20, 12, 11, 20, 20, 11, 21, 11, 10, 21, 21, 10, 22, 10, 9, 22, 22, 9, 23, 9, 8, 23, 8, 7, 23, 23, 7, 24, 7, 6, 24, 24, 6, 25, 6, 5, 25, 25, 5, 26, 26, 5, 4, 26, 4, 27, 4, 3, 27, 27, 38, 28, 27, 3, 38, 3, 2, 38, 38, 2, 39 ], + "triangles": [ 30, 29, 33, 30, 32, 31, 40, 41, 36, 39, 41, 40, 40, 36, 35, 38, 39, 40, 28, 38, 40, 34, 28, 40, 34, 40, 35, 28, 34, 33, 29, 28, 33, 30, 33, 32, 41, 1, 0, 37, 41, 0, 36, 41, 37, 39, 1, 41, 39, 2, 1, 19, 12, 20, 13, 12, 19, 18, 15, 19, 16, 18, 17, 15, 13, 19, 15, 14, 13, 15, 18, 16, 21, 10, 22, 11, 10, 21, 20, 11, 21, 12, 11, 20, 9, 8, 23, 22, 9, 23, 10, 9, 22, 26, 5, 4, 25, 5, 26, 6, 5, 25, 24, 6, 25, 7, 6, 24, 23, 7, 24, 8, 7, 23, 38, 2, 39, 3, 2, 38, 27, 3, 38, 27, 38, 28, 4, 3, 27, 26, 4, 27 ], "vertices": [ 1, 53, 21.67, 6.08, 1, 2, 52, 18.13, 3.37, 0.16553, 53, 3.92, 4.24, 0.83447, 3, 33, -6.12, -15.24, 0.20965, 52, -0.05, 8.86, 0.53629, 6, 43.44, 6.81, 0.25406, 1, 33, 10.36, -12.02, 1, 2, 33, 30.62, -10.09, 0.88822, 34, -7.63, -10.15, 0.11178, 2, 33, 50.57, -9.69, 0.30996, 34, 12.31, -9.61, 0.69004, 2, 34, 24.21, -9.37, 0.86563, 35, -13.43, -6.2, 0.13437, 2, 34, 32.12, -9.22, 0.73143, 35, -5.73, -8.02, 0.26857, 2, 34, 39.35, -7.59, 0.54007, 35, 1.68, -8.25, 0.45993, 2, 34, 46.9, -5.88, 0.29037, 35, 9.42, -8.48, 0.70963, 2, 35, 18.59, -8.76, 0.66539, 36, -15.76, -5.13, 0.33461, 1, 36, 6.03, -8.58, 1, 2, 36, 31.42, -5.98, 0.39257, 37, 0.49, -6.36, 0.60743, 1, 37, 23.8, -9.31, 1, 1, 37, 52.37, -11.28, 1, 1, 37, 62.39, 2.72, 1, 1, 37, 58.29, 24.21, 1, 1, 37, 39.22, 32.48, 1, 1, 37, 26, 28.25, 1, 1, 37, 8.33, 5.63, 1, 2, 36, 28.81, 6.64, 0.48313, 37, 1.49, 6.49, 0.51687, 1, 36, 7.61, 5.9, 1, 3, 34, 51.67, 11.07, 0.10767, 35, 18.26, 6.75, 0.559, 36, -12.35, 10.01, 0.33333, 2, 34, 42.19, 10.25, 0.31464, 35, 8.88, 8.32, 0.68536, 2, 34, 32.87, 9.45, 0.59184, 35, -0.35, 9.86, 0.40816, 2, 34, 23.73, 9.7, 0.83036, 35, -9.14, 12.39, 0.16964, 2, 33, 52.08, 9.88, 0.29921, 34, 13.68, 9.98, 0.70079, 2, 33, 32.19, 12.6, 0.84687, 34, -6.24, 12.55, 0.15313, 1, 6, 9.42, 3.39, 1, 2, 6, -5.05, -1.59, 0.472, 5, 29.16, -0.35, 0.528, 1, 5, 16.13, -11.36, 1, 1, 5, 7.46, -29.44, 1, 2, 6, -8.23, -31.57, 0.5193, 5, 19, -28.74, 0.4807, 1, 6, 2, -28.43, 1, 1, 6, 11.96, -25.37, 1, 1, 6, 21.44, -22.45, 1, 3, 52, 12.7, -14.55, 0.25482, 53, 2.14, -14.4, 0.32231, 6, 42.47, -19.82, 0.42287, 1, 53, 13.64, -8.89, 1, 1, 33, 3.55, 0.91, 1, 2, 52, 1.72, -0.73, 0.5001, 6, 40.07, -2.34, 0.4999, 1, 6, 25.66, -11.25, 1, 3, 52, 13.4, -4.65, 0.33234, 53, 0.86, -4.56, 0.48165, 6, 48.12, -11.66, 0.18601 ], "hull": 38, "edges": [ 0, 2, 8, 10, 20, 22, 22, 24, 24, 26, 26, 28, 28, 30, 30, 32, 32, 34, 34, 36, 36, 38, 38, 40, 40, 42, 42, 44, 52, 54, 54, 56, 56, 58, 58, 60, 60, 62, 70, 72, 72, 74, 0, 74, 56, 76, 6, 8, 76, 6, 4, 6, 4, 78, 78, 80, 80, 70, 2, 82, 82, 72, 82, 78, 78, 76, 2, 4, 56, 80, 56, 66, 62, 64, 64, 66, 66, 68, 68, 70, 44, 46, 46, 48, 18, 20, 46, 18, 10, 12, 12, 14, 48, 50, 50, 52, 12, 50, 14, 16, 16, 18 ], @@ -572,6 +572,17 @@ } ], "animations": { + "idle": { + "bones": { + "hip": { + "translate": [ + {}, + { "time": 1, "y": -4.42 }, + { "time": 2 } + ] + } + } + }, "sneak": { "bones": { "hip": { diff --git a/assets/stretchyman/export/stretchyman-pro.skel b/assets/stretchyman/export/stretchyman-pro.skel index 4d97e24..119effc 100644 Binary files a/assets/stretchyman/export/stretchyman-pro.skel and b/assets/stretchyman/export/stretchyman-pro.skel differ diff --git a/assets/stretchyman/export/stretchyman.atlas b/assets/stretchyman/export/stretchyman.atlas index a4a1653..424bb86 100644 --- a/assets/stretchyman/export/stretchyman.atlas +++ b/assets/stretchyman/export/stretchyman.atlas @@ -2,14 +2,17 @@ stretchyman.png size: 1024, 256 filter: Linear, Linear back-arm - bounds: 149, 45, 72, 202 + bounds: 679, 173, 72, 202 + rotate: 90 back-leg - bounds: 312, 4, 100, 318 + bounds: 2, 2, 100, 318 rotate: 90 body - bounds: 223, 106, 141, 452 + bounds: 2, 104, 141, 452 rotate: 90 front-arm - bounds: 2, 26, 145, 221 + bounds: 456, 100, 145, 221 + rotate: 90 head - bounds: 223, 2, 87, 102 + bounds: 322, 15, 87, 102 + rotate: 90 diff --git a/assets/stretchyman/export/stretchyman.png b/assets/stretchyman/export/stretchyman.png index d715e7b..1b969bb 100644 Binary files a/assets/stretchyman/export/stretchyman.png and b/assets/stretchyman/export/stretchyman.png differ diff --git a/assets/stretchyman/license.txt b/assets/stretchyman/license.txt index 4e12704..31a3a5c 100644 --- a/assets/stretchyman/license.txt +++ b/assets/stretchyman/license.txt @@ -1,4 +1,4 @@ -Copyright (c) 2016, Esoteric Software +Copyright (c) 2016, Esoteric Software LLC The images in this project may be redistributed as long as they are accompanied by this license file. The images may not be used for commercial use of any diff --git a/assets/stretchyman/stretchyman-pro.spine b/assets/stretchyman/stretchyman-pro.spine index 565ec13..2cceaa8 100644 Binary files a/assets/stretchyman/stretchyman-pro.spine and b/assets/stretchyman/stretchyman-pro.spine differ diff --git a/assets/tank/export/tank-pma.atlas b/assets/tank/export/tank-pma.atlas index a84ddf1..32525f6 100644 --- a/assets/tank/export/tank-pma.atlas +++ b/assets/tank/export/tank-pma.atlas @@ -4,54 +4,61 @@ tank-pma.png pma: true scale: 0.5 antenna - bounds: 2, 712, 11, 152 + bounds: 650, 857, 11, 152 rotate: 90 cannon - bounds: 222, 694, 466, 29 + bounds: 434, 376, 466, 29 + rotate: 90 cannon-connector - bounds: 82, 654, 56, 68 + bounds: 349, 241, 56, 68 rotate: 90 ground - bounds: 2, 175, 512, 177 + bounds: 255, 330, 512, 177 + rotate: 90 guntower - bounds: 647, 347, 365, 145 + bounds: 650, 870, 365, 145 machinegun - bounds: 690, 694, 166, 29 + bounds: 255, 299, 166, 29 machinegun-mount - bounds: 858, 687, 36, 48 + bounds: 2, 2, 36, 48 rotate: 90 rock - bounds: 664, 607, 290, 64 + bounds: 465, 552, 290, 64 + rotate: 90 smoke-glow - bounds: 946, 673, 50, 50 + bounds: 531, 563, 50, 50 smoke-puff01-bg - bounds: 312, 630, 92, 62 + bounds: 465, 458, 92, 62 + rotate: 90 smoke-puff01-fg - bounds: 222, 633, 88, 59 + bounds: 115, 138, 88, 59 smoke-puff02-fg - bounds: 406, 630, 92, 62 + bounds: 255, 235, 92, 62 smoke-puff03-fg - bounds: 500, 630, 92, 62 + bounds: 531, 685, 92, 62 smoke-puff04-fg - bounds: 2, 662, 78, 48 + bounds: 465, 378, 78, 48 + rotate: 90 tank-bottom - bounds: 2, 354, 643, 138 + bounds: 115, 199, 643, 138 + rotate: 90 tank-bottom-shadow - bounds: 2, 2, 646, 171 + bounds: 2, 844, 646, 171 tank-top - bounds: 195, 494, 704, 111 + bounds: 2, 138, 704, 111 + rotate: 90 tread - bounds: 172, 708, 48, 15 -tread-inside - bounds: 156, 710, 13, 14 + bounds: 626, 794, 48, 15 rotate: 90 +tread-inside + bounds: 434, 360, 13, 14 wheel-big - bounds: 97, 540, 96, 96 + bounds: 2, 40, 96, 96 wheel-big-overlay - bounds: 2, 559, 93, 93 + bounds: 531, 749, 93, 93 wheel-mid - bounds: 594, 624, 68, 68 + bounds: 531, 615, 68, 68 wheel-mid-overlay - bounds: 152, 638, 68, 68 + bounds: 100, 68, 68, 68 wheel-small - bounds: 908, 687, 36, 36 + bounds: 205, 161, 36, 36 diff --git a/assets/tank/export/tank-pma.png b/assets/tank/export/tank-pma.png index 15f7b6d..e843477 100644 Binary files a/assets/tank/export/tank-pma.png and b/assets/tank/export/tank-pma.png differ diff --git a/assets/tank/export/tank-pro.json b/assets/tank/export/tank-pro.json index dfc32ca..6778eb5 100644 --- a/assets/tank/export/tank-pro.json +++ b/assets/tank/export/tank-pro.json @@ -1,7 +1,7 @@ { "skeleton": { - "hash": "ulJOWXMG9PE", - "spine": "4.1.23-beta", + "hash": "nW5DL2uoEfA", + "spine": "4.2.64-beta", "x": -5852.65, "y": -348.5, "width": 7202.61, @@ -23,7 +23,7 @@ { "name": "antenna5", "parent": "antenna4", "length": 42, "x": 42, "color": "ffee00ff" }, { "name": "antenna6", "parent": "antenna5", "length": 42, "x": 42, "color": "ffee00ff" }, { "name": "cannon-connector", "parent": "guntower", "x": -235.05, "y": 96.07 }, - { "name": "cannon-target", "parent": "tank-root", "x": -2276.67, "y": 400.17, "color": "0096ffff" }, + { "name": "cannon-target", "parent": "tank-root", "x": -2276.67, "y": 400.17, "color": "0096ffff", "icon": "arrows" }, { "name": "cannon", "parent": "cannon-connector", "length": 946.68, "rotation": 180, "color": "ff4000ff" }, { "name": "machinegun-mount", @@ -34,7 +34,7 @@ "y": 218.33, "color": "15ff00ff" }, - { "name": "machinegun-target", "parent": "tank-root", "x": -2272.76, "y": 607.77, "color": "0096ffff" }, + { "name": "machinegun-target", "parent": "tank-root", "x": -2272.76, "y": 607.77, "color": "0096ffff", "icon": "ik" }, { "name": "machinegun", "parent": "machinegun-mount", @@ -53,9 +53,10 @@ "y": 405.76, "scaleX": -6.5, "scaleY": 6.5, - "color": "ff4000ff" + "color": "ff4000ff", + "icon": "particles" }, - { "name": "smoke-glow", "parent": "smoke-root", "x": 62.92, "y": -0.71, "color": "ff4000ff" }, + { "name": "smoke-glow", "parent": "smoke-root", "x": 62.92, "y": -0.71, "color": "ff4000ff", "icon": "particles" }, { "name": "smoke1", "parent": "smoke-root", @@ -64,7 +65,8 @@ "y": -1.55, "scaleX": 1.6484, "scaleY": 1.6484, - "color": "ff4000ff" + "color": "ff4000ff", + "icon": "particles" }, { "name": "smoke10", @@ -74,7 +76,8 @@ "y": 2.48, "scaleX": 3.9011, "scaleY": 2.8523, - "color": "ff4000ff" + "color": "ff4000ff", + "icon": "particles" }, { "name": "smoke11", @@ -84,7 +87,8 @@ "y": 2.48, "scaleX": 3.9011, "scaleY": 2.8523, - "color": "ff4000ff" + "color": "ff4000ff", + "icon": "particles" }, { "name": "smoke12", @@ -94,7 +98,8 @@ "y": 2.48, "scaleX": 3.9011, "scaleY": 2.8523, - "color": "ff4000ff" + "color": "ff4000ff", + "icon": "particles" }, { "name": "smoke13", @@ -104,7 +109,8 @@ "y": -1.55, "scaleX": 1.6484, "scaleY": 1.6484, - "color": "ff4000ff" + "color": "ff4000ff", + "icon": "particles" }, { "name": "smoke14", @@ -114,7 +120,8 @@ "y": -1.55, "scaleX": 1.6484, "scaleY": 1.6484, - "color": "ff4000ff" + "color": "ff4000ff", + "icon": "particles" }, { "name": "smoke15", @@ -124,7 +131,8 @@ "y": -1.55, "scaleX": 1.6484, "scaleY": 1.6484, - "color": "ff4000ff" + "color": "ff4000ff", + "icon": "particles" }, { "name": "smoke16", @@ -134,7 +142,8 @@ "y": -1.55, "scaleX": 1.6484, "scaleY": 1.6484, - "color": "ff4000ff" + "color": "ff4000ff", + "icon": "particles" }, { "name": "smoke17", @@ -144,7 +153,8 @@ "y": -1.55, "scaleX": 1.6484, "scaleY": 1.6484, - "color": "ff4000ff" + "color": "ff4000ff", + "icon": "particles" }, { "name": "smoke18", @@ -154,7 +164,8 @@ "y": -1.55, "scaleX": 1.6484, "scaleY": 1.6484, - "color": "ff4000ff" + "color": "ff4000ff", + "icon": "particles" }, { "name": "smoke2", @@ -164,7 +175,8 @@ "y": 29.7, "scaleX": 3.3345, "scaleY": 3.3345, - "color": "ff4000ff" + "color": "ff4000ff", + "icon": "particles" }, { "name": "smoke20", @@ -174,7 +186,8 @@ "y": -1.55, "scaleX": 1.6484, "scaleY": 1.6484, - "color": "ff4000ff" + "color": "ff4000ff", + "icon": "particles" }, { "name": "smoke21", @@ -184,7 +197,8 @@ "y": -1.55, "scaleX": 1.6484, "scaleY": 1.6484, - "color": "ff4000ff" + "color": "ff4000ff", + "icon": "particles" }, { "name": "smoke22", @@ -194,7 +208,8 @@ "y": -1.55, "scaleX": 1.6484, "scaleY": 1.6484, - "color": "ff4000ff" + "color": "ff4000ff", + "icon": "particles" }, { "name": "smoke23", @@ -204,7 +219,8 @@ "y": -1.55, "scaleX": 1.6484, "scaleY": 1.6484, - "color": "ff4000ff" + "color": "ff4000ff", + "icon": "particles" }, { "name": "smoke24", @@ -214,7 +230,8 @@ "y": -1.55, "scaleX": 1.6484, "scaleY": 1.6484, - "color": "ff4000ff" + "color": "ff4000ff", + "icon": "particles" }, { "name": "smoke25", @@ -224,7 +241,8 @@ "y": -1.55, "scaleX": 1.6484, "scaleY": 1.6484, - "color": "ff4000ff" + "color": "ff4000ff", + "icon": "particles" }, { "name": "smoke26", @@ -234,7 +252,8 @@ "y": -1.55, "scaleX": 1.6484, "scaleY": 1.6484, - "color": "ff4000ff" + "color": "ff4000ff", + "icon": "particles" }, { "name": "smoke27", @@ -244,7 +263,8 @@ "y": -1.55, "scaleX": 1.6484, "scaleY": 1.6484, - "color": "ff4000ff" + "color": "ff4000ff", + "icon": "particles" }, { "name": "smoke3", @@ -254,7 +274,8 @@ "y": -17.5, "scaleX": 3.0415, "scaleY": 4.157, - "color": "ff4000ff" + "color": "ff4000ff", + "icon": "particles" }, { "name": "smoke4", @@ -264,7 +285,8 @@ "y": 8.01, "scaleX": 2.1808, "scaleY": 2.9807, - "color": "ff4000ff" + "color": "ff4000ff", + "icon": "particles" }, { "name": "smoke5", @@ -274,7 +296,8 @@ "y": 59.88, "scaleX": 4.5119, "scaleY": 2.9725, - "color": "ff4000ff" + "color": "ff4000ff", + "icon": "particles" }, { "name": "smoke6", @@ -284,7 +307,8 @@ "y": 25.65, "scaleX": 3.7912, "scaleY": 3.0552, - "color": "ff4000ff" + "color": "ff4000ff", + "icon": "particles" }, { "name": "smoke7", @@ -294,7 +318,8 @@ "y": -50.47, "scaleX": 4.8523, "scaleY": 3.6528, - "color": "ff4000ff" + "color": "ff4000ff", + "icon": "particles" }, { "name": "smoke8", @@ -304,7 +329,8 @@ "y": -42.55, "scaleX": 4.0006, "scaleY": 3.4796, - "color": "ff4000ff" + "color": "ff4000ff", + "icon": "particles" }, { "name": "smoke9", @@ -314,7 +340,8 @@ "y": -8.73, "scaleX": 4.2074, "scaleY": 3.0762, - "color": "ff4000ff" + "color": "ff4000ff", + "icon": "particles" }, { "name": "tank-glow", "parent": "tank-root", "x": -247.72, "y": 404.37, "scaleX": 1.0582, "scaleY": 0.6785 }, { diff --git a/assets/tank/export/tank-pro.skel b/assets/tank/export/tank-pro.skel index 3f7020c..ad004f3 100644 Binary files a/assets/tank/export/tank-pro.skel and b/assets/tank/export/tank-pro.skel differ diff --git a/assets/tank/export/tank.atlas b/assets/tank/export/tank.atlas index 295fb0d..fdc5a75 100644 --- a/assets/tank/export/tank.atlas +++ b/assets/tank/export/tank.atlas @@ -3,54 +3,61 @@ tank.png filter: Linear, Linear scale: 0.5 antenna - bounds: 2, 712, 11, 152 + bounds: 650, 857, 11, 152 rotate: 90 cannon - bounds: 222, 694, 466, 29 + bounds: 434, 376, 466, 29 + rotate: 90 cannon-connector - bounds: 82, 654, 56, 68 + bounds: 349, 241, 56, 68 rotate: 90 ground - bounds: 2, 175, 512, 177 + bounds: 255, 330, 512, 177 + rotate: 90 guntower - bounds: 647, 347, 365, 145 + bounds: 650, 870, 365, 145 machinegun - bounds: 690, 694, 166, 29 + bounds: 255, 299, 166, 29 machinegun-mount - bounds: 858, 687, 36, 48 + bounds: 2, 2, 36, 48 rotate: 90 rock - bounds: 664, 607, 290, 64 + bounds: 465, 552, 290, 64 + rotate: 90 smoke-glow - bounds: 946, 673, 50, 50 + bounds: 531, 563, 50, 50 smoke-puff01-bg - bounds: 312, 630, 92, 62 + bounds: 465, 458, 92, 62 + rotate: 90 smoke-puff01-fg - bounds: 222, 633, 88, 59 + bounds: 115, 138, 88, 59 smoke-puff02-fg - bounds: 406, 630, 92, 62 + bounds: 255, 235, 92, 62 smoke-puff03-fg - bounds: 500, 630, 92, 62 + bounds: 531, 685, 92, 62 smoke-puff04-fg - bounds: 2, 662, 78, 48 + bounds: 465, 378, 78, 48 + rotate: 90 tank-bottom - bounds: 2, 354, 643, 138 + bounds: 115, 199, 643, 138 + rotate: 90 tank-bottom-shadow - bounds: 2, 2, 646, 171 + bounds: 2, 844, 646, 171 tank-top - bounds: 195, 494, 704, 111 + bounds: 2, 138, 704, 111 + rotate: 90 tread - bounds: 172, 708, 48, 15 -tread-inside - bounds: 156, 710, 13, 14 + bounds: 626, 794, 48, 15 rotate: 90 +tread-inside + bounds: 434, 360, 13, 14 wheel-big - bounds: 97, 540, 96, 96 + bounds: 2, 40, 96, 96 wheel-big-overlay - bounds: 2, 559, 93, 93 + bounds: 531, 749, 93, 93 wheel-mid - bounds: 594, 624, 68, 68 + bounds: 531, 615, 68, 68 wheel-mid-overlay - bounds: 152, 638, 68, 68 + bounds: 100, 68, 68, 68 wheel-small - bounds: 908, 687, 36, 36 + bounds: 205, 161, 36, 36 diff --git a/assets/tank/export/tank.png b/assets/tank/export/tank.png index 2227d21..e0e7f1b 100644 Binary files a/assets/tank/export/tank.png and b/assets/tank/export/tank.png differ diff --git a/assets/tank/images/smoke-glow.png b/assets/tank/images/smoke-glow.png index 69aa95f..58f2d1c 100644 Binary files a/assets/tank/images/smoke-glow.png and b/assets/tank/images/smoke-glow.png differ diff --git a/assets/tank/license.txt b/assets/tank/license.txt index 4e12704..31a3a5c 100644 --- a/assets/tank/license.txt +++ b/assets/tank/license.txt @@ -1,4 +1,4 @@ -Copyright (c) 2016, Esoteric Software +Copyright (c) 2016, Esoteric Software LLC The images in this project may be redistributed as long as they are accompanied by this license file. The images may not be used for commercial use of any diff --git a/assets/windmill/export/windmill-ess.json b/assets/windmill/export/windmill-ess.json index ddce49d..eee7700 100644 --- a/assets/windmill/export/windmill-ess.json +++ b/assets/windmill/export/windmill-ess.json @@ -1,7 +1,7 @@ { "skeleton": { - "hash": "tB4/IVbSSaY", - "spine": "4.1.23-beta", + "hash": "cFTl59GZWk8", + "spine": "4.2.64-beta", "x": -564.6, "y": -335.4, "width": 1124.2, diff --git a/assets/windmill/export/windmill-ess.skel b/assets/windmill/export/windmill-ess.skel index aadd224..6ab8124 100644 Binary files a/assets/windmill/export/windmill-ess.skel and b/assets/windmill/export/windmill-ess.skel differ diff --git a/assets/windmill/export/windmill-pma.atlas b/assets/windmill/export/windmill-pma.atlas index 8abee6c..0ca3a5d 100644 --- a/assets/windmill/export/windmill-pma.atlas +++ b/assets/windmill/export/windmill-pma.atlas @@ -4,66 +4,59 @@ windmill-pma.png pma: true scale: 0.5 bush1 - bounds: 398, 8, 56, 38 + bounds: 558, 70, 56, 38 + rotate: 90 bush2 - bounds: 558, 85, 67, 45 + bounds: 831, 358, 67, 45 rotate: 90 flower-leaf-back - bounds: 27, 5, 16, 11 + bounds: 364, 35, 16, 11 flower-leaf-front - bounds: 45, 5, 16, 11 + bounds: 795, 212, 16, 11 flower-shadow - bounds: 2, 7, 23, 9 + bounds: 999, 501, 23, 9 flower-stem - bounds: 63, 11, 5, 27 - rotate: 90 + bounds: 2, 4, 5, 27 flower1 - bounds: 558, 61, 22, 19 - rotate: 90 + bounds: 599, 149, 22, 19 flower2 - bounds: 579, 63, 20, 17 + bounds: 878, 405, 20, 17 rotate: 90 flower3 - bounds: 598, 67, 15, 16 + bounds: 558, 52, 15, 16 heat - bounds: 624, 185, 48, 52 + bounds: 949, 458, 48, 52 rooster - bounds: 274, 4, 27, 25 - rotate: 90 + bounds: 897, 430, 27, 25 tree1-leaves1 - bounds: 605, 99, 49, 53 + bounds: 599, 170, 49, 53 tree1-leaves2 - bounds: 640, 47, 48, 50 + bounds: 650, 173, 48, 50 tree1-leaves3 - bounds: 500, 3, 43, 42 - rotate: 90 + bounds: 831, 314, 43, 42 tree1-leaves4 - bounds: 544, 3, 43, 42 - rotate: 90 + bounds: 319, 4, 43, 42 tree1-trunk - bounds: 558, 154, 64, 83 + bounds: 831, 427, 64, 83 tree2-leaves1 - bounds: 588, 8, 50, 53 + bounds: 897, 457, 50, 53 tree2-leaves2 - bounds: 656, 133, 48, 50 + bounds: 700, 173, 48, 50 tree2-leaves3 - bounds: 456, 2, 44, 42 + bounds: 275, 2, 44, 42 rotate: 90 tree2-leaves4 - bounds: 640, 2, 43, 42 - rotate: 90 + bounds: 750, 181, 43, 42 tree2-leaves5 - bounds: 684, 3, 42, 42 + bounds: 831, 270, 42, 42 tree2-trunk - bounds: 301, 7, 39, 95 - rotate: 90 + bounds: 558, 128, 39, 95 windmill-base bounds: 2, 48, 554, 462 windmill-blades - bounds: 558, 239, 271, 270 - rotate: 90 + bounds: 558, 240, 271, 270 windmill-blades-wood-h bounds: 2, 33, 271, 13 windmill-blades-wood-v - bounds: 2, 18, 13, 270 + bounds: 558, 225, 13, 270 rotate: 90 diff --git a/assets/windmill/export/windmill-pma.png b/assets/windmill/export/windmill-pma.png index 66f9512..e123229 100644 Binary files a/assets/windmill/export/windmill-pma.png and b/assets/windmill/export/windmill-pma.png differ diff --git a/assets/windmill/export/windmill.atlas b/assets/windmill/export/windmill.atlas index bf0a6cd..e8960a4 100644 --- a/assets/windmill/export/windmill.atlas +++ b/assets/windmill/export/windmill.atlas @@ -3,66 +3,59 @@ windmill.png filter: Linear, Linear scale: 0.5 bush1 - bounds: 398, 8, 56, 38 + bounds: 558, 70, 56, 38 + rotate: 90 bush2 - bounds: 558, 85, 67, 45 + bounds: 831, 358, 67, 45 rotate: 90 flower-leaf-back - bounds: 27, 5, 16, 11 + bounds: 364, 35, 16, 11 flower-leaf-front - bounds: 45, 5, 16, 11 + bounds: 795, 212, 16, 11 flower-shadow - bounds: 2, 7, 23, 9 + bounds: 999, 501, 23, 9 flower-stem - bounds: 63, 11, 5, 27 - rotate: 90 + bounds: 2, 4, 5, 27 flower1 - bounds: 558, 61, 22, 19 - rotate: 90 + bounds: 599, 149, 22, 19 flower2 - bounds: 579, 63, 20, 17 + bounds: 878, 405, 20, 17 rotate: 90 flower3 - bounds: 598, 67, 15, 16 + bounds: 558, 52, 15, 16 heat - bounds: 624, 185, 48, 52 + bounds: 949, 458, 48, 52 rooster - bounds: 274, 4, 27, 25 - rotate: 90 + bounds: 897, 430, 27, 25 tree1-leaves1 - bounds: 605, 99, 49, 53 + bounds: 599, 170, 49, 53 tree1-leaves2 - bounds: 640, 47, 48, 50 + bounds: 650, 173, 48, 50 tree1-leaves3 - bounds: 500, 3, 43, 42 - rotate: 90 + bounds: 831, 314, 43, 42 tree1-leaves4 - bounds: 544, 3, 43, 42 - rotate: 90 + bounds: 319, 4, 43, 42 tree1-trunk - bounds: 558, 154, 64, 83 + bounds: 831, 427, 64, 83 tree2-leaves1 - bounds: 588, 8, 50, 53 + bounds: 897, 457, 50, 53 tree2-leaves2 - bounds: 656, 133, 48, 50 + bounds: 700, 173, 48, 50 tree2-leaves3 - bounds: 456, 2, 44, 42 + bounds: 275, 2, 44, 42 rotate: 90 tree2-leaves4 - bounds: 640, 2, 43, 42 - rotate: 90 + bounds: 750, 181, 43, 42 tree2-leaves5 - bounds: 684, 3, 42, 42 + bounds: 831, 270, 42, 42 tree2-trunk - bounds: 301, 7, 39, 95 - rotate: 90 + bounds: 558, 128, 39, 95 windmill-base bounds: 2, 48, 554, 462 windmill-blades - bounds: 558, 239, 271, 270 - rotate: 90 + bounds: 558, 240, 271, 270 windmill-blades-wood-h bounds: 2, 33, 271, 13 windmill-blades-wood-v - bounds: 2, 18, 13, 270 + bounds: 558, 225, 13, 270 rotate: 90 diff --git a/assets/windmill/export/windmill.png b/assets/windmill/export/windmill.png index be9f3fe..9cca7fe 100644 Binary files a/assets/windmill/export/windmill.png and b/assets/windmill/export/windmill.png differ diff --git a/assets/windmill/license.txt b/assets/windmill/license.txt index 7c50e5c..d5578c2 100755 --- a/assets/windmill/license.txt +++ b/assets/windmill/license.txt @@ -1,4 +1,4 @@ -Copyright (c) 2017, Esoteric Software +Copyright (c) 2017, Esoteric Software LLC The images in this project may be redistributed as long as they are accompanied by this license file. The images may not be used for commercial use of any diff --git a/changelog.md b/changelog.md index a5b09d2..f486f1d 100644 --- a/changelog.md +++ b/changelog.md @@ -1,5 +1,19 @@ # 0.8.0 (UNRELEASED) -- Add `TrackEntry::set_track_time` +- Upgrade runtime to Spine 4.2 +- Add `Physics` enum + - Add `physics` parameter to `Skeleton::update_world_transform` and `Skeleton::update_world_transform_with` + - Add `physics` parameter to `Controller::update` +- Add methods: + - `TrackEntry::set_track_time` + - `TrackEntry::mix_attachment_threshold` + - `TrackEntry::set_mix_attachment_threshold` + - `TrackEntry::mix_draw_order_threshold` + - `TrackEntry::set_mix_draw_order_threshold` +- Remove methods: + - `TrackEntry::attachment_threshold` + - `TrackEntry::set_attachment_threshold` + - `TrackEntry::draw_order_threshold` + - `TrackEntry::set_draw_order_threshold` # 0.7.1 - Fix dark color applying incorrectly with premultiplied alpha (using draw functions) diff --git a/examples/miniquad.rs b/examples/miniquad.rs index 471e952..01279fd 100644 --- a/examples/miniquad.rs +++ b/examples/miniquad.rs @@ -56,7 +56,8 @@ use rusty_spine::{ atlas::{AtlasFilter, AtlasFormat, AtlasWrap}, controller::{SkeletonController, SkeletonControllerSettings}, draw::{ColorSpace, CullDirection}, - AnimationEvent, AnimationStateData, Atlas, BlendMode, Color, SkeletonBinary, SkeletonJson, + AnimationEvent, AnimationStateData, Atlas, BlendMode, Color, Physics, SkeletonBinary, + SkeletonJson, }; const MAX_MESH_VERTICES: usize = 10000; @@ -452,7 +453,7 @@ impl Stage { fn new(ctx: &mut Context, texture_delete_queue: Arc>>) -> Stage { let spine_demos = vec![ SpineDemo { - atlas_path: "assets/spineboy/export/spineboy-pma.atlas", + atlas_path: "assets/spineboy/export/spineboy.atlas", skeleton_path: SpineSkeletonPath::Binary( "assets/spineboy/export/spineboy-pro.skel", ), @@ -480,6 +481,26 @@ impl Stage { skin: None, backface_culling: true, }, + SpineDemo { + atlas_path: "assets/celestial-circus/export/celestial-circus-pma.atlas", + skeleton_path: SpineSkeletonPath::Json( + "assets/celestial-circus/export/celestial-circus-pro.json", + ), + animation: "swing", + position: Vec2::new(0., -120.), + scale: 0.2, + skin: None, + backface_culling: true, + }, + SpineDemo { + atlas_path: "assets/cloud-pot/export/cloud-pot.atlas", + skeleton_path: SpineSkeletonPath::Json("assets/cloud-pot/export/cloud-pot.json"), + animation: "playing-in-the-rain", + position: Vec2::new(0., -220.), + scale: 0.4, + skin: None, + backface_culling: true, + }, SpineDemo { atlas_path: "assets/dragon/export/dragon.atlas", skeleton_path: SpineSkeletonPath::Json("assets/dragon/export/dragon-ess.json"), @@ -545,7 +566,7 @@ impl EventHandler for Stage { fn update(&mut self, _ctx: &mut Context) { let now = date::now(); let dt = ((now - self.last_frame_time) as f32).max(0.001); - self.spine.controller.update(dt); + self.spine.controller.update(dt, Physics::Update); self.last_frame_time = now; } diff --git a/examples/simple.rs b/examples/simple.rs index 24ef890..0fc1363 100644 --- a/examples/simple.rs +++ b/examples/simple.rs @@ -11,7 +11,7 @@ fn main() { let animation_state_data = Arc::new(AnimationStateData::new(skeleton_data.clone())); let mut skeleton_controller = SkeletonController::new(skeleton_data.clone(), animation_state_data); - skeleton_controller.update(0.016); + skeleton_controller.update(0.016, Physics::Update); let renderables = skeleton_controller.renderables(); println!("Skeleton:"); println!(); diff --git a/src/animation_state.rs b/src/animation_state.rs index 65d26bf..6301bfc 100644 --- a/src/animation_state.rs +++ b/src/animation_state.rs @@ -296,7 +296,7 @@ impl AnimationState { /// # #[path="./test.rs"] /// # mod test; /// # use rusty_spine::{AnimationState, AnimationEvent}; - /// # let (_, mut animation_state) = test::TestAsset::spineboy().instance(); + /// # let (_, mut animation_state) = test::TestAsset::spineboy().instance(true); /// animation_state.set_listener(|_, animation_event| match animation_event { /// AnimationEvent::Start { track_entry } => { /// println!("Animation {} started!", track_entry.track_index()); @@ -674,28 +674,38 @@ impl TrackEntry { eventThreshold, f32 ); + c_accessor_mut!( + /// When [`alpha`](`Self::alpha`) is greater than this value, attachment timelines are + /// applied. Defaults to 0, so attachment timelines are always applied. + alpha_attachment_threshold, + /// Set the alpha attachment threshold, see + /// [`alpha_attachment_threshold`](`Self::alpha_attachment_threshold`). + set_alpha_attachment_threshold, + alphaAttachmentThreshold, + f32 + ); c_accessor_mut!( /// When the mix percentage ([`mix_time`](`Self::mix_time`) / - /// [`mix_duration`](`Self::mix_duration`)) is less than the `attachment_threshold`, - /// attachment timelines are applied while this animation is being mixed out. Defaults to 0, - /// so attachment timelines are not applied while this animation is being mixed out. - attachment_threshold, - /// Set the attachment threshold, see - /// [`attachment_threshold`](`Self::attachment_threshold`). - set_attachment_threshold, - attachmentThreshold, + /// [`mix_duration`](`Self::mix_duration`)) is less than the this value, attachment + /// timelines are applied while this animation is being mixed out. Defaults to 0, so + /// attachment timelines are not applied while this animation is being mixed out. + mix_attachment_threshold, + /// Set the mix attachment threshold, see + /// [`mix_attachment_threshold`](`Self::mix_attachment_threshold`). + set_mix_attachment_threshold, + alphaAttachmentThreshold, f32 ); c_accessor_mut!( /// When the mix percentage ([`mix_time`](`Self::mix_time`) / - /// [`mix_duration`](`Self::mix_duration`)) is less than the `draw_order_threshold`, draw - /// order timelines are applied while this animation is being mixed out. Defaults to 0, so - /// draw order timelines are not applied while this animation is being mixed out. - draw_order_threshold, - /// Set the draw order threshold, see - /// [`draw_order_threshold`](`Self::draw_order_threshold`). - set_draw_order_threshold, - drawOrderThreshold, + /// [`mix_duration`](`Self::mix_duration`)) is less than this value, draw order timelines + /// are applied while this animation is being mixed out. Defaults to 0, so draw order + /// timelines are not applied while this animation is being mixed out. + mix_draw_order_threshold, + /// Set the mix draw order threshold, see + /// [`mix_draw_order_threshold`](`Self::mix_draw_order_threshold`). + set_mix_draw_order_threshold, + mixDrawOrderThreshold, f32 ); c_accessor_mut!( @@ -868,7 +878,7 @@ c_handle_indexed_decl!( /// # #[path="./test.rs"] /// # mod test; /// # use rusty_spine::{AnimationState, EventType, TrackEntryHandle}; - /// # let (_, animation_state) = test::TestAsset::spineboy().instance(); + /// # let (_, animation_state) = test::TestAsset::spineboy().instance(true); /// let track_entry_handles: Vec = animation_state.tracks().map(|track| track.unwrap().handle()).collect(); /// for track_entry_handle in track_entry_handles.iter() { /// let track_entry = track_entry_handle.get(&animation_state).unwrap(); @@ -902,7 +912,7 @@ mod tests { #[test] fn track_entry_optional() { - let (_, mut animation_state) = TestAsset::spineboy().instance(); + let (_, mut animation_state) = TestAsset::spineboy().instance(true); let _ = animation_state.set_animation_by_name(0, "idle", true); let _ = animation_state.set_animation_by_name(2, "run", true); @@ -923,7 +933,7 @@ mod tests { #[test] fn track_entry_invalidate_clear() { - let (_, mut animation_state) = TestAsset::spineboy().instance(); + let (_, mut animation_state) = TestAsset::spineboy().instance(true); let _ = animation_state.set_animation_by_name(0, "idle", true); let track_handle = animation_state.track_at_index(0).unwrap().handle(); @@ -935,7 +945,7 @@ mod tests { #[test] fn track_entry_invalidate_change() { - let (_, mut animation_state) = TestAsset::spineboy().instance(); + let (_, mut animation_state) = TestAsset::spineboy().instance(true); let _ = animation_state.set_animation_by_name(0, "idle", true); let track_handle = animation_state.track_at_index(0).unwrap().handle(); diff --git a/src/animation_state_data.rs b/src/animation_state_data.rs index a60f2ca..069b3b0 100644 --- a/src/animation_state_data.rs +++ b/src/animation_state_data.rs @@ -24,7 +24,7 @@ use crate::AnimationState; /// ``` /// # #[path="./test.rs"] /// # mod test; -/// # let mut animation_state_data = test::TestAsset::spineboy().animation_state_data(); +/// # let mut animation_state_data = test::TestAsset::spineboy().animation_state_data(true); /// animation_state_data.set_mix_by_name("walk", "run", 0.2); /// ``` /// @@ -34,7 +34,7 @@ use crate::AnimationState; /// ``` /// # #[path="./test.rs"] /// # mod test; -/// # let mut animation_state_data = test::TestAsset::spineboy().animation_state_data(); +/// # let mut animation_state_data = test::TestAsset::spineboy().animation_state_data(true); /// animation_state_data.set_mix_by_name("walk", "run", 0.2); /// animation_state_data.set_mix_by_name("run", "walk", 0.2); /// ``` diff --git a/src/bone.rs b/src/bone.rs index 0817986..b91b3ed 100644 --- a/src/bone.rs +++ b/src/bone.rs @@ -5,7 +5,7 @@ use crate::{ spBone_rotateWorld, spBone_setToSetupPose, spBone_setYDown, spBone_update, spBone_updateAppliedTransform, spBone_updateWorldTransform, spBone_updateWorldTransformWith, spBone_worldToLocal, spBone_worldToLocalRotation, - spSkeleton, spTransformMode, + spInherit, spSkeleton, }, c_interface::{NewFromPtr, SyncPtr}, Skeleton, @@ -390,7 +390,7 @@ impl Bone { /// } /// /// // Traverse all bones in a skeleton - /// # let (skeleton, animation_state) = test::TestAsset::spineboy().instance(); + /// # let (skeleton, animation_state) = test::TestAsset::spineboy().instance(true); /// let root_bone = skeleton.bone_root().handle(); /// traverse_bones(root_bone, &skeleton, 0); /// ``` @@ -582,7 +582,7 @@ c_handle_decl!( /// # #[path="./test.rs"] /// # mod test; /// # use rusty_spine::{AnimationState, EventType, BoneHandle}; - /// # let (skeleton, _) = test::TestAsset::spineboy().instance(); + /// # let (skeleton, _) = test::TestAsset::spineboy().instance(true); /// let bone_handles: Vec = skeleton.bones().map(|bone| bone.handle()).collect(); /// for bone_handle in bone_handles.iter() { /// let bone = bone_handle.get(&skeleton).unwrap(); @@ -626,9 +626,9 @@ impl BoneData { c_accessor_bool!(skin_required, skinRequired); c_accessor_enum!( /// The transform mode for how parent world transforms affect this bone. - transform_mode, - transformMode, - TransformMode + inherit, + inherit, + Inherit ); c_accessor_tmp_ptr_optional!(parent, parent, BoneData, spBoneData); } @@ -661,10 +661,10 @@ impl BoneData { } } -/// The transform mode for how bones are affected by their parents. +/// The inherited transform for how bones are affected by their parents. /// -/// See [`BoneData::transform_mode`]. -pub enum TransformMode { +/// See [`BoneData::inherit`]. +pub enum Inherit { Normal = 0, OnlyTranslation = 1, NoRotationOrReflection = 2, @@ -673,8 +673,8 @@ pub enum TransformMode { Unknown = 99, } -impl From for TransformMode { - fn from(mode: spTransformMode) -> Self { +impl From for Inherit { + fn from(mode: spInherit) -> Self { match mode { 0 => Self::Normal, 1 => Self::OnlyTranslation, diff --git a/src/c/libc.rs b/src/c/libc.rs index a09f1e0..1d1e4f3 100644 --- a/src/c/libc.rs +++ b/src/c/libc.rs @@ -58,6 +58,15 @@ unsafe extern "C" fn spine_strcpy(dest: *mut c_char, src: *const c_char) -> *mut libc::strcpy(dest, src) } +#[no_mangle] +unsafe extern "C" fn spine_strncpy( + dest: *mut c_char, + src: *const c_char, + num: size_t, +) -> *mut c_char { + libc::strncpy(dest, src, num) +} + #[no_mangle] unsafe extern "C" fn spine_strncat( dest: *mut c_char, @@ -100,6 +109,11 @@ extern "C" fn spine_sqrtf(x: c_float) -> c_float { x.sqrt() } +#[no_mangle] +extern "C" fn spine_ceil(x: c_double) -> c_double { + x.ceil() +} + #[no_mangle] extern "C" fn spine_acosf(x: c_float) -> c_float { x.acos() @@ -173,12 +187,12 @@ macro_rules! spine_printf { }; } -macro_rules! spine_sprintf { - ($str:expr, $format:expr) => { - libc::sprintf($str, $format); +macro_rules! spine_snprintf { + ($str:expr, $len:expr, $format:expr) => { + libc::snprintf($str, $len as usize, $format); }; - ($str:expr, $format:expr, $($arg:expr),+ $(,)? ) => { - libc::sprintf($str, $format, $($arg),+); + ($str:expr, $len:expr, $format:expr, $($arg:expr),+ $(,)? ) => { + libc::snprintf($str, $len as usize, $format, $($arg),+); }; } diff --git a/src/c/spine_c.rs b/src/c/spine_c.rs index 73fe045..7f5820a 100644 --- a/src/c/spine_c.rs +++ b/src/c/spine_c.rs @@ -14,20 +14,23 @@ clippy::missing_const_for_fn )] extern "C" { + fn spine_memcpy(__dest: *mut c_void, __src: *const c_void, __n: size_t) -> *mut c_void; fn spine_memmove(__dest: *mut c_void, __src: *const c_void, __n: size_t) -> *mut c_void; fn spine_acosf(__x: c_float) -> c_float; fn spine_atan2f(__y: c_float, __x: c_float) -> c_float; fn spine_memset(__s: *mut c_void, __c: c_int, __n: size_t) -> *mut c_void; fn spine_cosf(__x: c_float) -> c_float; - fn spine_sinf(_: c_float) -> c_float; + fn spine_sinf(__x: c_float) -> c_float; fn spine_strcasecmp(__s1: *const c_char, __s2: *const c_char) -> c_int; fn spine_strcpy(__dest: *mut c_char, __src: *const c_char) -> *mut c_char; + fn spine_strncpy(__dest: *mut c_char, __src: *const c_char, __n: size_t) -> *mut c_char; fn spine_strncat(__dest: *mut c_char, __src: *const c_char, __n: size_t) -> *mut c_char; fn spine_strcmp(__s1: *const c_char, __s2: *const c_char) -> c_int; fn spine_strncmp(__s1: *const c_char, __s2: *const c_char, __n: size_t) -> c_int; fn spine_pow(__x: c_double, __y: c_double) -> c_double; fn spine_sqrtf(__x: c_float) -> c_float; + fn spine_ceil(__x: c_double) -> c_double; fn _spAtlasPage_createTexture(self_0: *mut spAtlasPage, path: *const c_char); fn _spAtlasPage_disposeTexture(self_0: *mut spAtlasPage); fn _spUtil_readFile(path: *const c_char, length: *mut c_int) -> *mut c_char; @@ -54,8 +57,8 @@ pub struct spEventData { pub name: *mut c_char, pub intValue: c_int, pub floatValue: c_float, - pub stringValue: *const c_char, - pub audioPath: *const c_char, + pub stringValue: *mut c_char, + pub audioPath: *mut c_char, pub volume: c_float, pub balance: c_float, } @@ -67,7 +70,7 @@ pub struct spEvent { pub time: c_float, pub intValue: c_int, pub floatValue: c_float, - pub stringValue: *const c_char, + pub stringValue: *mut c_char, pub volume: c_float, pub balance: c_float, } @@ -76,7 +79,7 @@ pub struct spEvent { pub struct spAttachmentLoader { pub error1: *mut c_char, pub error2: *mut c_char, - pub vtable: *mut c_void, + pub vtable: *const c_void, } pub type spAttachmentType = c_uint; pub const SP_ATTACHMENT_CLIPPING: spAttachmentType = 6; @@ -91,7 +94,7 @@ pub const SP_ATTACHMENT_REGION: spAttachmentType = 0; pub struct spAttachment { pub name: *mut c_char, pub type_0: spAttachmentType, - pub vtable: *mut c_void, + pub vtable: *const c_void, pub refCount: c_int, pub attachmentLoader: *mut spAttachmentLoader, } @@ -109,12 +112,12 @@ pub struct spColor { pub b: c_float, pub a: c_float, } -pub type spTransformMode = c_uint; -pub const SP_TRANSFORMMODE_NOSCALEORREFLECTION: spTransformMode = 4; -pub const SP_TRANSFORMMODE_NOSCALE: spTransformMode = 3; -pub const SP_TRANSFORMMODE_NOROTATIONORREFLECTION: spTransformMode = 2; -pub const SP_TRANSFORMMODE_ONLYTRANSLATION: spTransformMode = 1; -pub const SP_TRANSFORMMODE_NORMAL: spTransformMode = 0; +pub type spInherit = c_uint; +pub const SP_INHERIT_NOSCALEORREFLECTION: spInherit = 4; +pub const SP_INHERIT_NOSCALE: spInherit = 3; +pub const SP_INHERIT_NOROTATIONORREFLECTION: spInherit = 2; +pub const SP_INHERIT_ONLYTRANSLATION: spInherit = 1; +pub const SP_INHERIT_NORMAL: spInherit = 0; #[derive(Copy, Clone)] #[repr(C)] pub struct spBoneData { @@ -129,10 +132,17 @@ pub struct spBoneData { pub scaleY: c_float, pub shearX: c_float, pub shearY: c_float, - pub transformMode: spTransformMode, + pub inherit: spInherit, pub skinRequired: c_int, pub color: spColor, -} + pub icon: *const c_char, + pub visible: c_int, +} +pub type spPhysics = c_uint; +pub const SP_PHYSICS_POSE: spPhysics = 3; +pub const SP_PHYSICS_UPDATE: spPhysics = 2; +pub const SP_PHYSICS_RESET: spPhysics = 1; +pub const SP_PHYSICS_NONE: spPhysics = 0; #[derive(Copy, Clone)] #[repr(C)] pub struct spSkeleton { @@ -149,12 +159,15 @@ pub struct spSkeleton { pub transformConstraints: *mut *mut spTransformConstraint, pub pathConstraintsCount: c_int, pub pathConstraints: *mut *mut spPathConstraint, + pub physicsConstraintsCount: c_int, + pub physicsConstraints: *mut *mut spPhysicsConstraint, pub skin: *mut spSkin, pub color: spColor, pub scaleX: c_float, pub scaleY: c_float, pub x: c_float, pub y: c_float, + pub time: c_float, } #[derive(Copy, Clone)] #[repr(C)] @@ -164,6 +177,44 @@ pub struct spSkin { pub ikConstraints: *mut spIkConstraintDataArray, pub transformConstraints: *mut spTransformConstraintDataArray, pub pathConstraints: *mut spPathConstraintDataArray, + pub physicsConstraints: *mut spPhysicsConstraintDataArray, + pub color: spColor, +} +#[derive(Copy, Clone)] +#[repr(C)] +pub struct spPhysicsConstraintDataArray { + pub size: c_int, + pub capacity: c_int, + pub items: *mut *mut spPhysicsConstraintData, +} +#[derive(Copy, Clone)] +#[repr(C)] +pub struct spPhysicsConstraintData { + pub name: *mut c_char, + pub order: c_int, + pub skinRequired: c_int, + pub bone: *mut spBoneData, + pub x: c_float, + pub y: c_float, + pub rotate: c_float, + pub scaleX: c_float, + pub shearX: c_float, + pub limit: c_float, + pub step: c_float, + pub inertia: c_float, + pub strength: c_float, + pub damping: c_float, + pub massInverse: c_float, + pub wind: c_float, + pub gravity: c_float, + pub mix: c_float, + pub inertiaGlobal: c_int, + pub strengthGlobal: c_int, + pub dampingGlobal: c_int, + pub massGlobal: c_int, + pub windGlobal: c_int, + pub gravityGlobal: c_int, + pub mixGlobal: c_int, } #[derive(Copy, Clone)] #[repr(C)] @@ -209,10 +260,12 @@ pub struct spSlotData { pub index: c_int, pub name: *mut c_char, pub boneData: *mut spBoneData, - pub attachmentName: *const c_char, + pub attachmentName: *mut c_char, pub color: spColor, pub darkColor: *mut spColor, pub blendMode: spBlendMode, + pub visible: c_int, + pub path: *mut c_char, } pub type spBlendMode = c_uint; pub const SP_BLEND_MODE_SCREEN: spBlendMode = 3; @@ -282,6 +335,70 @@ pub struct spBoneDataArray { } #[derive(Copy, Clone)] #[repr(C)] +pub struct spPhysicsConstraint { + pub data: *mut spPhysicsConstraintData, + pub bone: *mut spBone, + pub inertia: c_float, + pub strength: c_float, + pub damping: c_float, + pub massInverse: c_float, + pub wind: c_float, + pub gravity: c_float, + pub mix: c_float, + pub reset: c_int, + pub ux: c_float, + pub uy: c_float, + pub cx: c_float, + pub cy: c_float, + pub tx: c_float, + pub ty: c_float, + pub xOffset: c_float, + pub xVelocity: c_float, + pub yOffset: c_float, + pub yVelocity: c_float, + pub rotateOffset: c_float, + pub rotateVelocity: c_float, + pub scaleOffset: c_float, + pub scaleVelocity: c_float, + pub active: c_int, + pub skeleton: *mut spSkeleton, + pub remaining: c_float, + pub lastTime: c_float, +} +#[derive(Copy, Clone)] +#[repr(C)] +pub struct spBone { + pub data: *mut spBoneData, + pub skeleton: *mut spSkeleton, + pub parent: *mut spBone, + pub childrenCount: c_int, + pub children: *mut *mut spBone, + pub x: c_float, + pub y: c_float, + pub rotation: c_float, + pub scaleX: c_float, + pub scaleY: c_float, + pub shearX: c_float, + pub shearY: c_float, + pub ax: c_float, + pub ay: c_float, + pub arotation: c_float, + pub ascaleX: c_float, + pub ascaleY: c_float, + pub ashearX: c_float, + pub ashearY: c_float, + pub a: c_float, + pub b: c_float, + pub worldX: c_float, + pub c: c_float, + pub d: c_float, + pub worldY: c_float, + pub sorted: c_int, + pub active: c_int, + pub inherit: spInherit, +} +#[derive(Copy, Clone)] +#[repr(C)] pub struct spPathConstraint { pub data: *mut spPathConstraintData, pub bonesCount: c_int, @@ -321,37 +438,6 @@ pub struct spSlot { } #[derive(Copy, Clone)] #[repr(C)] -pub struct spBone { - pub data: *mut spBoneData, - pub skeleton: *mut spSkeleton, - pub parent: *mut spBone, - pub childrenCount: c_int, - pub children: *mut *mut spBone, - pub x: c_float, - pub y: c_float, - pub rotation: c_float, - pub scaleX: c_float, - pub scaleY: c_float, - pub shearX: c_float, - pub shearY: c_float, - pub ax: c_float, - pub ay: c_float, - pub arotation: c_float, - pub ascaleX: c_float, - pub ascaleY: c_float, - pub ashearX: c_float, - pub ashearY: c_float, - pub a: c_float, - pub b: c_float, - pub worldX: c_float, - pub c: c_float, - pub d: c_float, - pub worldY: c_float, - pub sorted: c_int, - pub active: c_int, -} -#[derive(Copy, Clone)] -#[repr(C)] pub struct spTransformConstraint { pub data: *mut spTransformConstraintData, pub bonesCount: c_int, @@ -382,12 +468,13 @@ pub struct spIkConstraint { #[derive(Copy, Clone)] #[repr(C)] pub struct spSkeletonData { - pub version: *const c_char, - pub hash: *const c_char, + pub version: *mut c_char, + pub hash: *mut c_char, pub x: c_float, pub y: c_float, pub width: c_float, pub height: c_float, + pub referenceScale: c_float, pub fps: c_float, pub imagesPath: *const c_char, pub audioPath: *const c_char, @@ -410,6 +497,8 @@ pub struct spSkeletonData { pub transformConstraints: *mut *mut spTransformConstraintData, pub pathConstraintsCount: c_int, pub pathConstraints: *mut *mut spPathConstraintData, + pub physicsConstraintsCount: c_int, + pub physicsConstraints: *mut *mut spPhysicsConstraintData, } #[derive(Copy, Clone)] #[repr(C)] @@ -448,15 +537,24 @@ pub struct spTimeline { pub type_0: spTimelineType, } pub type spTimelineType = c_uint; -pub const SP_TIMELINE_EVENT: spTimelineType = 24; -pub const SP_TIMELINE_DRAWORDER: spTimelineType = 23; -pub const SP_TIMELINE_TRANSFORMCONSTRAINT: spTimelineType = 22; -pub const SP_TIMELINE_RGB: spTimelineType = 21; -pub const SP_TIMELINE_RGBA: spTimelineType = 20; -pub const SP_TIMELINE_RGBA2: spTimelineType = 19; -pub const SP_TIMELINE_RGB2: spTimelineType = 18; -pub const SP_TIMELINE_PATHCONSTRAINTMIX: spTimelineType = 17; -pub const SP_TIMELINE_IKCONSTRAINT: spTimelineType = 16; +pub const SP_TIMELINE_EVENT: spTimelineType = 33; +pub const SP_TIMELINE_DRAWORDER: spTimelineType = 32; +pub const SP_TIMELINE_TRANSFORMCONSTRAINT: spTimelineType = 31; +pub const SP_TIMELINE_RGB: spTimelineType = 30; +pub const SP_TIMELINE_RGBA: spTimelineType = 29; +pub const SP_TIMELINE_RGBA2: spTimelineType = 28; +pub const SP_TIMELINE_RGB2: spTimelineType = 27; +pub const SP_TIMELINE_PHYSICSCONSTRAINT_RESET: spTimelineType = 26; +pub const SP_TIMELINE_PHYSICSCONSTRAINT_MIX: spTimelineType = 25; +pub const SP_TIMELINE_PHYSICSCONSTRAINT_GRAVITY: spTimelineType = 24; +pub const SP_TIMELINE_PHYSICSCONSTRAINT_WIND: spTimelineType = 23; +pub const SP_TIMELINE_PHYSICSCONSTRAINT_MASS: spTimelineType = 22; +pub const SP_TIMELINE_PHYSICSCONSTRAINT_DAMPING: spTimelineType = 21; +pub const SP_TIMELINE_PHYSICSCONSTRAINT_STRENGTH: spTimelineType = 20; +pub const SP_TIMELINE_PHYSICSCONSTRAINT_INERTIA: spTimelineType = 19; +pub const SP_TIMELINE_PATHCONSTRAINTMIX: spTimelineType = 18; +pub const SP_TIMELINE_IKCONSTRAINT: spTimelineType = 17; +pub const SP_TIMELINE_INHERIT: spTimelineType = 16; pub const SP_TIMELINE_SEQUENCE: spTimelineType = 15; pub const SP_TIMELINE_DEFORM: spTimelineType = 14; pub const SP_TIMELINE_TRANSLATE: spTimelineType = 13; @@ -532,7 +630,7 @@ pub struct _SkinHashTableEntry { #[repr(C)] pub struct _Entry { pub slotIndex: c_int, - pub name: *const c_char, + pub name: *mut c_char, pub attachment: *mut spAttachment, pub next: *mut _Entry, } @@ -594,7 +692,7 @@ pub struct spMeshAttachment { pub rendererObject: *mut c_void, pub region: *mut spTextureRegion, pub sequence: *mut spSequence, - pub path: *const c_char, + pub path: *mut c_char, pub regionUVs: *mut c_float, pub uvs: *mut c_float, pub trianglesCount: c_int, @@ -603,7 +701,7 @@ pub struct spMeshAttachment { pub hullLength: c_int, pub parentMesh: *mut spMeshAttachment, pub edgesCount: c_int, - pub edges: *mut c_int, + pub edges: *mut c_ushort, pub width: c_float, pub height: c_float, } @@ -611,7 +709,7 @@ pub struct spMeshAttachment { #[repr(C)] pub struct spRegionAttachment { pub super_0: spAttachment, - pub path: *const c_char, + pub path: *mut c_char, pub x: c_float, pub y: c_float, pub scaleX: c_float, @@ -764,19 +862,28 @@ pub type __off64_t = c_long; pub type int32_t = __int32_t; pub type uint32_t = __uint32_t; pub type C2RustUnnamed = c_uint; -pub const SP_PROPERTY_SEQUENCE: C2RustUnnamed = 524288; -pub const SP_PROPERTY_PATHCONSTRAINT_MIX: C2RustUnnamed = 262144; -pub const SP_PROPERTY_PATHCONSTRAINT_SPACING: C2RustUnnamed = 131072; -pub const SP_PROPERTY_PATHCONSTRAINT_POSITION: C2RustUnnamed = 65536; -pub const SP_PROPERTY_TRANSFORMCONSTRAINT: C2RustUnnamed = 32768; -pub const SP_PROPERTY_IKCONSTRAINT: C2RustUnnamed = 16384; -pub const SP_PROPERTY_DRAWORDER: C2RustUnnamed = 8192; -pub const SP_PROPERTY_EVENT: C2RustUnnamed = 4096; -pub const SP_PROPERTY_DEFORM: C2RustUnnamed = 2048; -pub const SP_PROPERTY_ATTACHMENT: C2RustUnnamed = 1024; -pub const SP_PROPERTY_RGB2: C2RustUnnamed = 512; -pub const SP_PROPERTY_ALPHA: C2RustUnnamed = 256; -pub const SP_PROPERTY_RGB: C2RustUnnamed = 128; +pub const SP_PROPERTY_SEQUENCE: C2RustUnnamed = 268435456; +pub const SP_PROPERTY_PHYSICSCONSTRAINT_RESET: C2RustUnnamed = 134217728; +pub const SP_PROPERTY_PHYSICSCONSTRAINT_MIX: C2RustUnnamed = 67108864; +pub const SP_PROPERTY_PHYSICSCONSTRAINT_GRAVITY: C2RustUnnamed = 33554432; +pub const SP_PROPERTY_PHYSICSCONSTRAINT_WIND: C2RustUnnamed = 16777216; +pub const SP_PROPERTY_PHYSICSCONSTRAINT_MASS: C2RustUnnamed = 8388608; +pub const SP_PROPERTY_PHYSICSCONSTRAINT_DAMPING: C2RustUnnamed = 4194304; +pub const SP_PROPERTY_PHYSICSCONSTRAINT_STRENGTH: C2RustUnnamed = 2097152; +pub const SP_PROPERTY_PHYSICSCONSTRAINT_INERTIA: C2RustUnnamed = 1048576; +pub const SP_PROPERTY_PATHCONSTRAINT_MIX: C2RustUnnamed = 524288; +pub const SP_PROPERTY_PATHCONSTRAINT_SPACING: C2RustUnnamed = 262144; +pub const SP_PROPERTY_PATHCONSTRAINT_POSITION: C2RustUnnamed = 131072; +pub const SP_PROPERTY_TRANSFORMCONSTRAINT: C2RustUnnamed = 65536; +pub const SP_PROPERTY_IKCONSTRAINT: C2RustUnnamed = 32768; +pub const SP_PROPERTY_DRAWORDER: C2RustUnnamed = 16384; +pub const SP_PROPERTY_EVENT: C2RustUnnamed = 8192; +pub const SP_PROPERTY_DEFORM: C2RustUnnamed = 4096; +pub const SP_PROPERTY_ATTACHMENT: C2RustUnnamed = 2048; +pub const SP_PROPERTY_RGB2: C2RustUnnamed = 1024; +pub const SP_PROPERTY_ALPHA: C2RustUnnamed = 512; +pub const SP_PROPERTY_RGB: C2RustUnnamed = 256; +pub const SP_PROPERTY_INHERIT: C2RustUnnamed = 128; pub const SP_PROPERTY_SHEARY: C2RustUnnamed = 64; pub const SP_PROPERTY_SHEARX: C2RustUnnamed = 32; pub const SP_PROPERTY_SCALEY: C2RustUnnamed = 16; @@ -920,6 +1027,12 @@ pub struct spDrawOrderTimeline { } #[derive(Copy, Clone)] #[repr(C)] +pub struct spInheritTimeline { + pub super_0: spTimeline, + pub boneIndex: c_int, +} +#[derive(Copy, Clone)] +#[repr(C)] pub struct spIkConstraintTimeline { pub super_0: spCurveTimeline, pub ikConstraintIndex: c_int, @@ -948,6 +1061,18 @@ pub struct spPathConstraintMixTimeline { pub super_0: spCurveTimeline, pub pathConstraintIndex: c_int, } +#[derive(Copy, Clone)] +#[repr(C)] +pub struct spPhysicsConstraintTimeline { + pub super_0: spCurveTimeline, + pub physicsConstraintIndex: c_int, +} +#[derive(Copy, Clone)] +#[repr(C)] +pub struct spPhysicsConstraintResetTimeline { + pub super_0: spTimeline, + pub physicsConstraintIndex: c_int, +} pub type spSkinEntry = _Entry; #[derive(Copy, Clone)] #[repr(C)] @@ -993,6 +1118,7 @@ pub struct _spUpdate { pub object: *mut c_void, } pub type _spUpdateType = c_uint; +pub const SP_UPDATE_PHYSICS_CONSTRAINT: _spUpdateType = 4; pub const SP_UPDATE_TRANSFORM_CONSTRAINT: _spUpdateType = 3; pub const SP_UPDATE_PATH_CONSTRAINT: _spUpdateType = 2; pub const SP_UPDATE_IK_CONSTRAINT: _spUpdateType = 1; @@ -1024,7 +1150,7 @@ pub struct spPointAttachment { pub struct spAnimationStateData { pub skeletonData: *mut spSkeletonData, pub defaultMix: c_float, - pub entries: *mut c_void, + pub entries: *const c_void, } #[derive(Copy, Clone)] #[repr(C)] @@ -1077,8 +1203,9 @@ pub struct spTrackEntry { pub reverse: c_int, pub shortestRotation: c_int, pub eventThreshold: c_float, - pub attachmentThreshold: c_float, - pub drawOrderThreshold: c_float, + pub mixAttachmentThreshold: c_float, + pub alphaAttachmentThreshold: c_float, + pub mixDrawOrderThreshold: c_float, pub animationStart: c_float, pub animationEnd: c_float, pub animationLast: c_float, @@ -1222,7 +1349,7 @@ pub struct _spSkeletonBinary { #[repr(C)] pub struct _spLinkedMeshBinary { pub parent: *const c_char, - pub skin: *const c_char, + pub skinIndex: c_int, pub slotIndex: c_int, pub mesh: *mut spMeshAttachment, pub inheritTimeline: c_int, @@ -1303,7 +1430,7 @@ pub struct spSkeletonClipping { pub type C2RustUnnamed_1 = c_uint; #[no_mangle] pub unsafe extern "C" fn isspace_(mut x: c_int) -> c_int { - return (x <= 32 as c_int) as c_int; + (x <= 32 as c_int) as c_int } #[no_mangle] pub unsafe extern "C" fn spPropertyIdArray_create( @@ -1312,23 +1439,25 @@ pub unsafe extern "C" fn spPropertyIdArray_create( let mut array: *mut spPropertyIdArray = _spCalloc( 1 as c_int as size_t, ::core::mem::size_of::() as c_ulong, - b"spine.c\0" as *const u8 as *const c_char, + (b"spine.c\0" as *const u8).cast::(), 37 as c_int, - ) as *mut spPropertyIdArray; + ) + .cast::(); (*array).size = 0 as c_int; (*array).capacity = initialCapacity; (*array).items = _spCalloc( initialCapacity as size_t, ::core::mem::size_of::() as c_ulong, - b"spine.c\0" as *const u8 as *const c_char, + (b"spine.c\0" as *const u8).cast::(), 37 as c_int, - ) as *mut spPropertyId; - return array; + ) + .cast::(); + array } #[no_mangle] pub unsafe extern "C" fn spPropertyIdArray_dispose(mut self_0: *mut spPropertyIdArray) { - _spFree((*self_0).items as *mut c_void); - _spFree(self_0 as *mut c_void); + _spFree((*self_0).items.cast::()); + _spFree(self_0.cast::()); } #[no_mangle] pub unsafe extern "C" fn spPropertyIdArray_clear(mut self_0: *mut spPropertyIdArray) { @@ -1347,12 +1476,13 @@ pub unsafe extern "C" fn spPropertyIdArray_setSize( ((*self_0).size as c_float * 1.75f32) as c_int }; (*self_0).items = _spRealloc( - (*self_0).items as *mut c_void, + (*self_0).items.cast::(), (::core::mem::size_of::() as c_ulong) .wrapping_mul((*self_0).capacity as c_ulong), - ) as *mut spPropertyId; + ) + .cast::(); } - return self_0; + self_0 } #[no_mangle] pub unsafe extern "C" fn spPropertyIdArray_ensureCapacity( @@ -1364,10 +1494,11 @@ pub unsafe extern "C" fn spPropertyIdArray_ensureCapacity( } (*self_0).capacity = newCapacity; (*self_0).items = _spRealloc( - (*self_0).items as *mut c_void, + (*self_0).items.cast::(), (::core::mem::size_of::() as c_ulong) .wrapping_mul((*self_0).capacity as c_ulong), - ) as *mut spPropertyId; + ) + .cast::(); } #[no_mangle] pub unsafe extern "C" fn spPropertyIdArray_add( @@ -1381,13 +1512,14 @@ pub unsafe extern "C" fn spPropertyIdArray_add( ((*self_0).size as c_float * 1.75f32) as c_int }; (*self_0).items = _spRealloc( - (*self_0).items as *mut c_void, + (*self_0).items.cast::(), (::core::mem::size_of::() as c_ulong) .wrapping_mul((*self_0).capacity as c_ulong), - ) as *mut spPropertyId; + ) + .cast::(); } let fresh0 = (*self_0).size; - (*self_0).size = (*self_0).size + 1; + (*self_0).size += 1; *((*self_0).items).offset(fresh0 as isize) = value; } #[no_mangle] @@ -1422,7 +1554,7 @@ pub unsafe extern "C" fn spPropertyIdArray_removeAt( ) { (*self_0).size -= 1; spine_memmove( - ((*self_0).items).offset(index as isize) as *mut c_void, + ((*self_0).items).offset(index as isize).cast::(), ((*self_0).items) .offset(index as isize) .offset(1 as c_int as isize) as *const c_void, @@ -1446,19 +1578,19 @@ pub unsafe extern "C" fn spPropertyIdArray_contains( } i += 1; } - return 0 as c_int; + 0 as c_int } #[no_mangle] pub unsafe extern "C" fn spPropertyIdArray_pop(mut self_0: *mut spPropertyIdArray) -> spPropertyId { (*self_0).size -= 1; let mut item: spPropertyId = *((*self_0).items).offset((*self_0).size as isize); - return item; + item } #[no_mangle] pub unsafe extern "C" fn spPropertyIdArray_peek( mut self_0: *mut spPropertyIdArray, ) -> spPropertyId { - return *((*self_0).items).offset(((*self_0).size - 1 as c_int) as isize); + *((*self_0).items).offset(((*self_0).size - 1 as c_int) as isize) } #[no_mangle] pub unsafe extern "C" fn spTimelineArray_create( @@ -1467,23 +1599,25 @@ pub unsafe extern "C" fn spTimelineArray_create( let mut array: *mut spTimelineArray = _spCalloc( 1 as c_int as size_t, ::core::mem::size_of::() as c_ulong, - b"spine.c\0" as *const u8 as *const c_char, + (b"spine.c\0" as *const u8).cast::(), 39 as c_int, - ) as *mut spTimelineArray; + ) + .cast::(); (*array).size = 0 as c_int; (*array).capacity = initialCapacity; (*array).items = _spCalloc( initialCapacity as size_t, ::core::mem::size_of::<*mut spTimeline>() as c_ulong, - b"spine.c\0" as *const u8 as *const c_char, + (b"spine.c\0" as *const u8).cast::(), 39 as c_int, - ) as *mut *mut spTimeline; - return array; + ) + .cast::<*mut spTimeline>(); + array } #[no_mangle] pub unsafe extern "C" fn spTimelineArray_dispose(mut self_0: *mut spTimelineArray) { - _spFree((*self_0).items as *mut c_void); - _spFree(self_0 as *mut c_void); + _spFree((*self_0).items.cast::()); + _spFree(self_0.cast::()); } #[no_mangle] pub unsafe extern "C" fn spTimelineArray_clear(mut self_0: *mut spTimelineArray) { @@ -1502,12 +1636,13 @@ pub unsafe extern "C" fn spTimelineArray_setSize( ((*self_0).size as c_float * 1.75f32) as c_int }; (*self_0).items = _spRealloc( - (*self_0).items as *mut c_void, + (*self_0).items.cast::(), (::core::mem::size_of::<*mut spTimeline>() as c_ulong) .wrapping_mul((*self_0).capacity as c_ulong), - ) as *mut *mut spTimeline; + ) + .cast::<*mut spTimeline>(); } - return self_0; + self_0 } #[no_mangle] pub unsafe extern "C" fn spTimelineArray_ensureCapacity( @@ -1519,10 +1654,11 @@ pub unsafe extern "C" fn spTimelineArray_ensureCapacity( } (*self_0).capacity = newCapacity; (*self_0).items = _spRealloc( - (*self_0).items as *mut c_void, + (*self_0).items.cast::(), (::core::mem::size_of::<*mut spTimeline>() as c_ulong) .wrapping_mul((*self_0).capacity as c_ulong), - ) as *mut *mut spTimeline; + ) + .cast::<*mut spTimeline>(); } #[no_mangle] pub unsafe extern "C" fn spTimelineArray_add( @@ -1536,14 +1672,15 @@ pub unsafe extern "C" fn spTimelineArray_add( ((*self_0).size as c_float * 1.75f32) as c_int }; (*self_0).items = _spRealloc( - (*self_0).items as *mut c_void, + (*self_0).items.cast::(), (::core::mem::size_of::<*mut spTimeline>() as c_ulong) .wrapping_mul((*self_0).capacity as c_ulong), - ) as *mut *mut spTimeline; + ) + .cast::<*mut spTimeline>(); } let fresh1 = (*self_0).size; - (*self_0).size = (*self_0).size + 1; - let ref mut fresh2 = *((*self_0).items).offset(fresh1 as isize); + (*self_0).size += 1; + let fresh2 = &mut (*((*self_0).items).offset(fresh1 as isize)); *fresh2 = value; } #[no_mangle] @@ -1578,7 +1715,7 @@ pub unsafe extern "C" fn spTimelineArray_removeAt( ) { (*self_0).size -= 1; spine_memmove( - ((*self_0).items).offset(index as isize) as *mut c_void, + ((*self_0).items).offset(index as isize).cast::(), ((*self_0).items) .offset(index as isize) .offset(1 as c_int as isize) as *const c_void, @@ -1602,17 +1739,17 @@ pub unsafe extern "C" fn spTimelineArray_contains( } i += 1; } - return 0 as c_int; + 0 as c_int } #[no_mangle] pub unsafe extern "C" fn spTimelineArray_pop(mut self_0: *mut spTimelineArray) -> *mut spTimeline { (*self_0).size -= 1; let mut item: *mut spTimeline = *((*self_0).items).offset((*self_0).size as isize); - return item; + item } #[no_mangle] pub unsafe extern "C" fn spTimelineArray_peek(mut self_0: *mut spTimelineArray) -> *mut spTimeline { - return *((*self_0).items).offset(((*self_0).size - 1 as c_int) as isize); + *((*self_0).items).offset(((*self_0).size - 1 as c_int) as isize) } #[no_mangle] pub unsafe extern "C" fn spAnimation_create( @@ -1626,17 +1763,18 @@ pub unsafe extern "C" fn spAnimation_create( let mut self_0: *mut spAnimation = _spCalloc( 1 as c_int as size_t, ::core::mem::size_of::() as c_ulong, - b"spine.c\0" as *const u8 as *const c_char, + (b"spine.c\0" as *const u8).cast::(), 43 as c_int, - ) as *mut spAnimation; - let ref mut fresh3 = *(&mut (*self_0).name as *mut *mut c_char); - *fresh3 = _spMalloc( + ) + .cast::(); + (*self_0).name = _spMalloc( (::core::mem::size_of::() as c_ulong) .wrapping_mul((spine_strlen(name)).wrapping_add(1 as c_int as c_ulong)), - b"spine.c\0" as *const u8 as *const c_char, + (b"spine.c\0" as *const u8).cast::(), 44 as c_int, - ) as *mut c_char; - spine_strcpy(*fresh3, name); + ) + .cast::(); + spine_strcpy((*self_0).name, name); (*self_0).timelines = if !timelines.is_null() { timelines } else { @@ -1662,7 +1800,7 @@ pub unsafe extern "C" fn spAnimation_create( i += 1; } (*self_0).duration = duration; - return self_0; + self_0 } #[no_mangle] pub unsafe extern "C" fn spAnimation_dispose(mut self_0: *mut spAnimation) { @@ -1674,8 +1812,8 @@ pub unsafe extern "C" fn spAnimation_dispose(mut self_0: *mut spAnimation) { } spTimelineArray_dispose((*self_0).timelines); spPropertyIdArray_dispose((*self_0).timelineIds); - _spFree((*self_0).name as *mut c_void); - _spFree(self_0 as *mut c_void); + _spFree((*self_0).name.cast::()); + _spFree(self_0.cast::()); } #[no_mangle] pub unsafe extern "C" fn spAnimation_hasTimeline( @@ -1698,7 +1836,7 @@ pub unsafe extern "C" fn spAnimation_hasTimeline( } i += 1; } - return 0 as c_int; + 0 as c_int } #[no_mangle] pub unsafe extern "C" fn spAnimation_apply( @@ -1749,7 +1887,7 @@ unsafe extern "C" fn search(mut values: *mut spFloatArray, mut time: c_float) -> } i += 1; } - return (*values).size - 1 as c_int; + (*values).size - 1 as c_int } unsafe extern "C" fn search2( mut values: *mut spFloatArray, @@ -1767,7 +1905,7 @@ unsafe extern "C" fn search2( } i += step; } - return (*values).size - step; + (*values).size - step } #[no_mangle] pub unsafe extern "C" fn _spTimeline_init( @@ -1828,7 +1966,7 @@ pub unsafe extern "C" fn _spTimeline_init( pub unsafe extern "C" fn spTimeline_dispose(mut self_0: *mut spTimeline) { ((*self_0).vtable.dispose).expect("non-null function pointer")(self_0); spFloatArray_dispose((*self_0).frames); - _spFree(self_0 as *mut c_void); + _spFree(self_0.cast::()); } #[no_mangle] pub unsafe extern "C" fn spTimeline_apply( @@ -1877,8 +2015,8 @@ pub unsafe extern "C" fn spTimeline_setBezier( } #[no_mangle] pub unsafe extern "C" fn spTimeline_getDuration(mut self_0: *const spTimeline) -> c_float { - return *((*(*self_0).frames).items) - .offset(((*(*self_0).frames).size - (*self_0).frameEntries) as isize); + *((*(*self_0).frames).items) + .offset(((*(*self_0).frames).size - (*self_0).frameEntries) as isize) } #[no_mangle] pub unsafe extern "C" fn _spCurveTimeline_init( @@ -1937,7 +2075,7 @@ pub unsafe extern "C" fn _spCurveTimeline_init( } #[no_mangle] pub unsafe extern "C" fn _spCurveTimeline_dispose(mut self_0: *mut spTimeline) { - spFloatArray_dispose((*(self_0 as *mut spCurveTimeline)).curves); + spFloatArray_dispose((*self_0.cast::()).curves); } #[no_mangle] pub unsafe extern "C" fn _spCurveTimeline_setBezier( @@ -1954,7 +2092,7 @@ pub unsafe extern "C" fn _spCurveTimeline_setBezier( mut time2: c_float, mut value2: c_float, ) { - let mut self_0: *mut spCurveTimeline = timeline as *mut spCurveTimeline; + let mut self_0: *mut spCurveTimeline = timeline.cast::(); let mut tmpx: c_float = 0.; let mut tmpy: c_float = 0.; let mut dddx: c_float = 0.; @@ -2033,9 +2171,8 @@ pub unsafe extern "C" fn _spCurveTimeline_getBezierValue( frameIndex += (*self_0).super_0.frameEntries; x = *curves.offset((n - 2 as c_int) as isize); y = *curves.offset((n - 1 as c_int) as isize); - return y - + (time - x) / (*frames.offset(frameIndex as isize) - x) - * (*frames.offset((frameIndex + valueOffset) as isize) - y); + y + (time - x) / (*frames.offset(frameIndex as isize) - x) + * (*frames.offset((frameIndex + valueOffset) as isize) - y) } #[no_mangle] pub unsafe extern "C" fn spCurveTimeline_setLinear( @@ -2094,7 +2231,175 @@ pub unsafe extern "C" fn spCurveTimeline1_getCurveValue( 1 => return *frames.offset((i + 1 as c_int) as isize), _ => {} } - return _spCurveTimeline_getBezierValue(self_0, time, i, 1 as c_int, curveType - 2 as c_int); + _spCurveTimeline_getBezierValue(self_0, time, i, 1 as c_int, curveType - 2 as c_int) +} +#[no_mangle] +pub unsafe extern "C" fn spCurveTimeline1_getRelativeValue( + mut self_0: *mut spCurveTimeline1, + mut time: c_float, + mut alpha: c_float, + mut blend: spMixBlend, + mut current: c_float, + mut setup: c_float, +) -> c_float { + let mut frames: *mut c_float = (*(*self_0).super_0.frames).items; + if time < *frames.offset(0 as c_int as isize) { + match blend as c_uint { + 0 => return setup, + 1 => return current + (setup - current) * alpha, + _ => return current, + } + } + let mut value: c_float = spCurveTimeline1_getCurveValue(self_0, time); + match blend as c_uint { + 0 => return setup + value * alpha, + 1 | 2 => { + value += setup - current; + } + 3 | _ => {} + } + current + value * alpha +} +#[no_mangle] +pub unsafe extern "C" fn spCurveTimeline1_getAbsoluteValue( + mut self_0: *mut spCurveTimeline1, + mut time: c_float, + mut alpha: c_float, + mut blend: spMixBlend, + mut current: c_float, + mut setup: c_float, +) -> c_float { + let mut frames: *mut c_float = (*(*self_0).super_0.frames).items; + if time < *frames.offset(0 as c_int as isize) { + match blend as c_uint { + 0 => return setup, + 1 => return current + (setup - current) * alpha, + _ => return current, + } + } + let mut value: c_float = spCurveTimeline1_getCurveValue(self_0, time); + if blend as c_uint == SP_MIX_BLEND_SETUP as c_int as c_uint { + return setup + (value - setup) * alpha; + } + current + (value - current) * alpha +} +#[no_mangle] +pub unsafe extern "C" fn spCurveTimeline1_getAbsoluteValue2( + mut self_0: *mut spCurveTimeline1, + mut time: c_float, + mut alpha: c_float, + mut blend: spMixBlend, + mut current: c_float, + mut setup: c_float, + mut value: c_float, +) -> c_float { + let mut frames: *mut c_float = (*(*self_0).super_0.frames).items; + if time < *frames.offset(0 as c_int as isize) { + match blend as c_uint { + 0 => return setup, + 1 => return current + (setup - current) * alpha, + _ => return current, + } + } + if blend as c_uint == SP_MIX_BLEND_SETUP as c_int as c_uint { + return setup + (value - setup) * alpha; + } + current + (value - current) * alpha +} +#[no_mangle] +pub unsafe extern "C" fn spCurveTimeline1_getScaleValue( + mut self_0: *mut spCurveTimeline1, + mut time: c_float, + mut alpha: c_float, + mut blend: spMixBlend, + mut direction: spMixDirection, + mut current: c_float, + mut setup: c_float, +) -> c_float { + let mut frames: *mut c_float = (*(*self_0).super_0.frames).items; + if time < *frames.offset(0 as c_int as isize) { + match blend as c_uint { + 0 => return setup, + 1 => return current + (setup - current) * alpha, + _ => return current, + } + } + let mut value: c_float = spCurveTimeline1_getCurveValue(self_0, time) * setup; + if alpha == 1 as c_int as c_float { + if blend as c_uint == SP_MIX_BLEND_ADD as c_int as c_uint { + return current + value - setup; + } + return value; + } + if direction as c_uint == SP_MIX_DIRECTION_OUT as c_int as c_uint { + match blend as c_uint { + 0 => { + return setup + + ((if value < 0 as c_int as c_float { + -value + } else { + value + }) * (if setup < 0 as c_int as c_float { + -1.0f32 + } else if setup > 0 as c_int as c_float { + 1.0f32 + } else { + 0.0f32 + }) - setup) + * alpha; + } + 1 | 2 => { + return current + + ((if value < 0 as c_int as c_float { + -value + } else { + value + }) * (if current < 0 as c_int as c_float { + -1.0f32 + } else if current > 0 as c_int as c_float { + 1.0f32 + } else { + 0.0f32 + }) - current) + * alpha; + } + _ => {} + } + } else { + let mut s: c_float = 0.; + match blend as c_uint { + 0 => { + s = (if setup < 0 as c_int as c_float { + -setup + } else { + setup + }) * (if value < 0 as c_int as c_float { + -1.0f32 + } else if value > 0 as c_int as c_float { + 1.0f32 + } else { + 0.0f32 + }); + return s + (value - s) * alpha; + } + 1 | 2 => { + s = (if current < 0 as c_int as c_float { + -current + } else { + current + }) * (if value < 0 as c_int as c_float { + -1.0f32 + } else if value > 0 as c_int as c_float { + 1.0f32 + } else { + 0.0f32 + }); + return s + (value - s) * alpha; + } + _ => {} + } + } + current + (value - setup) * alpha } #[no_mangle] pub unsafe extern "C" fn spCurveTimeline2_setFrame( @@ -2122,51 +2427,18 @@ pub unsafe extern "C" fn _spRotateTimeline_apply( mut blend: spMixBlend, mut _direction: spMixDirection, ) { - let mut bone: *mut spBone = std::ptr::null_mut(); - let mut r: c_float = 0.; - let mut self_0: *mut spRotateTimeline = timeline as *mut spRotateTimeline; - let mut frames: *mut c_float = (*(*self_0).super_0.super_0.frames).items; - bone = *((*skeleton).bones).offset((*self_0).boneIndex as isize); - if (*bone).active == 0 { - return; - } - if time < *frames.offset(0 as c_int as isize) { - match blend as c_uint { - 0 => { - (*bone).rotation = (*(*bone).data).rotation; - return; - } - 1 => { - (*bone).rotation += ((*(*bone).data).rotation - (*bone).rotation) * alpha; - } - _ => {} - } - return; - } - r = spCurveTimeline1_getCurveValue(&mut (*self_0).super_0, time); - let mut current_block_14: u64; - match blend as c_uint { - 0 => { - (*bone).rotation = (*(*bone).data).rotation + r * alpha; - current_block_14 = 12039483399334584727; - } - 1 | 2 => { - r += (*(*bone).data).rotation - (*bone).rotation; - current_block_14 = 1185040227185769797; - } - 3 => { - current_block_14 = 1185040227185769797; - } - _ => { - current_block_14 = 12039483399334584727; - } + let mut self_0: *mut spRotateTimeline = timeline.cast::(); + let mut bone: *mut spBone = *((*skeleton).bones).offset((*self_0).boneIndex as isize); + if (*bone).active != 0 { + (*bone).rotation = spCurveTimeline1_getRelativeValue( + &mut (*self_0).super_0, + time, + alpha, + blend, + (*bone).rotation, + (*(*bone).data).rotation, + ); } - match current_block_14 { - 1185040227185769797 => { - (*bone).rotation += r * alpha; - } - _ => {} - }; } #[no_mangle] pub unsafe extern "C" fn spRotateTimeline_create( @@ -2177,9 +2449,10 @@ pub unsafe extern "C" fn spRotateTimeline_create( let mut timeline: *mut spRotateTimeline = _spCalloc( 1 as c_int as size_t, ::core::mem::size_of::() as c_ulong, - b"spine.c\0" as *const u8 as *const c_char, - 359 as c_int, - ) as *mut spRotateTimeline; + (b"spine.c\0" as *const u8).cast::(), + 434 as c_int, + ) + .cast::(); let mut ids: [spPropertyId; 1] = [0; 1]; ids[0 as c_int as usize] = (SP_PROPERTY_ROTATE as c_int as spPropertyId) << 32 as c_int | boneIndex as c_ulong; @@ -2225,7 +2498,7 @@ pub unsafe extern "C" fn spRotateTimeline_create( ), ); (*timeline).boneIndex = boneIndex; - return timeline; + timeline } #[no_mangle] pub unsafe extern "C" fn spRotateTimeline_setFrame( @@ -2248,13 +2521,13 @@ pub unsafe extern "C" fn _spTranslateTimeline_apply( mut blend: spMixBlend, mut _direction: spMixDirection, ) { - let mut bone: *mut spBone = std::ptr::null_mut(); + let mut bone: *mut spBone = std::ptr::null_mut::(); let mut x: c_float = 0.; let mut y: c_float = 0.; let mut t: c_float = 0.; let mut i: c_int = 0; let mut curveType: c_int = 0; - let mut self_0: *mut spTranslateTimeline = timeline as *mut spTranslateTimeline; + let mut self_0: *mut spTranslateTimeline = timeline.cast::(); let mut frames: *mut c_float = (*(*self_0).super_0.super_0.frames).items; let mut curves: *mut c_float = (*(*self_0).super_0.curves).items; bone = *((*skeleton).bones).offset((*self_0).boneIndex as isize); @@ -2333,9 +2606,10 @@ pub unsafe extern "C" fn spTranslateTimeline_create( let mut timeline: *mut spTranslateTimeline = _spCalloc( 1 as c_int as size_t, ::core::mem::size_of::() as c_ulong, - b"spine.c\0" as *const u8 as *const c_char, - 449 as c_int, - ) as *mut spTranslateTimeline; + (b"spine.c\0" as *const u8).cast::(), + 524 as c_int, + ) + .cast::(); let mut ids: [spPropertyId; 2] = [0; 2]; ids[0 as c_int as usize] = (SP_PROPERTY_X as c_int as spPropertyId) << 32 as c_int | boneIndex as c_ulong; @@ -2383,7 +2657,7 @@ pub unsafe extern "C" fn spTranslateTimeline_create( ), ); (*timeline).boneIndex = boneIndex; - return timeline; + timeline } #[no_mangle] pub unsafe extern "C" fn spTranslateTimeline_setFrame( @@ -2407,9 +2681,9 @@ pub unsafe extern "C" fn _spTranslateXTimeline_apply( mut blend: spMixBlend, mut _direction: spMixDirection, ) { - let mut bone: *mut spBone = std::ptr::null_mut(); + let mut bone: *mut spBone = std::ptr::null_mut::(); let mut x: c_float = 0.; - let mut self_0: *mut spTranslateXTimeline = timeline as *mut spTranslateXTimeline; + let mut self_0: *mut spTranslateXTimeline = timeline.cast::(); let mut frames: *mut c_float = (*(*self_0).super_0.super_0.frames).items; bone = *((*skeleton).bones).offset((*self_0).boneIndex as isize); if (*bone).active == 0 { @@ -2451,9 +2725,10 @@ pub unsafe extern "C" fn spTranslateXTimeline_create( let mut timeline: *mut spTranslateXTimeline = _spCalloc( 1 as c_int as size_t, ::core::mem::size_of::() as c_ulong, - b"spine.c\0" as *const u8 as *const c_char, - 510 as c_int, - ) as *mut spTranslateXTimeline; + (b"spine.c\0" as *const u8).cast::(), + 585 as c_int, + ) + .cast::(); let mut ids: [spPropertyId; 1] = [0; 1]; ids[0 as c_int as usize] = (SP_PROPERTY_X as c_int as spPropertyId) << 32 as c_int | boneIndex as c_ulong; @@ -2499,7 +2774,7 @@ pub unsafe extern "C" fn spTranslateXTimeline_create( ), ); (*timeline).boneIndex = boneIndex; - return timeline; + timeline } #[no_mangle] pub unsafe extern "C" fn spTranslateXTimeline_setFrame( @@ -2522,9 +2797,9 @@ pub unsafe extern "C" fn _spTranslateYTimeline_apply( mut blend: spMixBlend, mut _direction: spMixDirection, ) { - let mut bone: *mut spBone = std::ptr::null_mut(); + let mut bone: *mut spBone = std::ptr::null_mut::(); let mut y: c_float = 0.; - let mut self_0: *mut spTranslateYTimeline = timeline as *mut spTranslateYTimeline; + let mut self_0: *mut spTranslateYTimeline = timeline.cast::(); let mut frames: *mut c_float = (*(*self_0).super_0.super_0.frames).items; bone = *((*skeleton).bones).offset((*self_0).boneIndex as isize); if (*bone).active == 0 { @@ -2566,9 +2841,10 @@ pub unsafe extern "C" fn spTranslateYTimeline_create( let mut timeline: *mut spTranslateYTimeline = _spCalloc( 1 as c_int as size_t, ::core::mem::size_of::() as c_ulong, - b"spine.c\0" as *const u8 as *const c_char, - 570 as c_int, - ) as *mut spTranslateYTimeline; + (b"spine.c\0" as *const u8).cast::(), + 645 as c_int, + ) + .cast::(); let mut ids: [spPropertyId; 1] = [0; 1]; ids[0 as c_int as usize] = (SP_PROPERTY_Y as c_int as spPropertyId) << 32 as c_int | boneIndex as c_ulong; @@ -2614,7 +2890,7 @@ pub unsafe extern "C" fn spTranslateYTimeline_create( ), ); (*timeline).boneIndex = boneIndex; - return timeline; + timeline } #[no_mangle] pub unsafe extern "C" fn spTranslateYTimeline_setFrame( @@ -2637,13 +2913,13 @@ pub unsafe extern "C" fn _spScaleTimeline_apply( mut blend: spMixBlend, mut direction: spMixDirection, ) { - let mut bone: *mut spBone = std::ptr::null_mut(); + let mut bone: *mut spBone = std::ptr::null_mut::(); let mut i: c_int = 0; let mut curveType: c_int = 0; let mut x: c_float = 0.; let mut y: c_float = 0.; let mut t: c_float = 0.; - let mut self_0: *mut spScaleTimeline = timeline as *mut spScaleTimeline; + let mut self_0: *mut spScaleTimeline = timeline.cast::(); let mut frames: *mut c_float = (*(*self_0).super_0.super_0.frames).items; let mut curves: *mut c_float = (*(*self_0).super_0.curves).items; bone = *((*skeleton).bones).offset((*self_0).boneIndex as isize); @@ -2719,12 +2995,10 @@ pub unsafe extern "C" fn _spScaleTimeline_apply( + ((if x < 0 as c_int as c_float { -x } else { x }) * (if bx < 0 as c_int as c_float { -1.0f32 + } else if bx > 0 as c_int as c_float { + 1.0f32 } else { - if bx > 0 as c_int as c_float { - 1.0f32 - } else { - 0.0f32 - } + 0.0f32 }) - bx) * alpha; @@ -2732,12 +3006,10 @@ pub unsafe extern "C" fn _spScaleTimeline_apply( + ((if y < 0 as c_int as c_float { -y } else { y }) * (if by < 0 as c_int as c_float { -1.0f32 + } else if by > 0 as c_int as c_float { + 1.0f32 } else { - if by > 0 as c_int as c_float { - 1.0f32 - } else { - 0.0f32 - } + 0.0f32 }) - by) * alpha; @@ -2749,12 +3021,10 @@ pub unsafe extern "C" fn _spScaleTimeline_apply( + ((if x < 0 as c_int as c_float { -x } else { x }) * (if bx < 0 as c_int as c_float { -1.0f32 + } else if bx > 0 as c_int as c_float { + 1.0f32 } else { - if bx > 0 as c_int as c_float { - 1.0f32 - } else { - 0.0f32 - } + 0.0f32 }) - bx) * alpha; @@ -2762,12 +3032,10 @@ pub unsafe extern "C" fn _spScaleTimeline_apply( + ((if y < 0 as c_int as c_float { -y } else { y }) * (if by < 0 as c_int as c_float { -1.0f32 + } else if by > 0 as c_int as c_float { + 1.0f32 } else { - if by > 0 as c_int as c_float { - 1.0f32 - } else { - 0.0f32 - } + 0.0f32 }) - by) * alpha; @@ -2787,12 +3055,10 @@ pub unsafe extern "C" fn _spScaleTimeline_apply( (*(*bone).data).scaleX }) * (if x < 0 as c_int as c_float { -1.0f32 + } else if x > 0 as c_int as c_float { + 1.0f32 } else { - if x > 0 as c_int as c_float { - 1.0f32 - } else { - 0.0f32 - } + 0.0f32 }); by = (if (*(*bone).data).scaleY < 0 as c_int as c_float { -(*(*bone).data).scaleY @@ -2800,12 +3066,10 @@ pub unsafe extern "C" fn _spScaleTimeline_apply( (*(*bone).data).scaleY }) * (if y < 0 as c_int as c_float { -1.0f32 + } else if y > 0 as c_int as c_float { + 1.0f32 } else { - if y > 0 as c_int as c_float { - 1.0f32 - } else { - 0.0f32 - } + 0.0f32 }); (*bone).scaleX = bx + (x - bx) * alpha; (*bone).scaleY = by + (y - by) * alpha; @@ -2817,12 +3081,10 @@ pub unsafe extern "C" fn _spScaleTimeline_apply( (*bone).scaleX }) * (if x < 0 as c_int as c_float { -1.0f32 + } else if x > 0 as c_int as c_float { + 1.0f32 } else { - if x > 0 as c_int as c_float { - 1.0f32 - } else { - 0.0f32 - } + 0.0f32 }); by = (if (*bone).scaleY < 0 as c_int as c_float { -(*bone).scaleY @@ -2830,12 +3092,10 @@ pub unsafe extern "C" fn _spScaleTimeline_apply( (*bone).scaleY }) * (if y < 0 as c_int as c_float { -1.0f32 + } else if y > 0 as c_int as c_float { + 1.0f32 } else { - if y > 0 as c_int as c_float { - 1.0f32 - } else { - 0.0f32 - } + 0.0f32 }); (*bone).scaleX = bx + (x - bx) * alpha; (*bone).scaleY = by + (y - by) * alpha; @@ -2858,9 +3118,10 @@ pub unsafe extern "C" fn spScaleTimeline_create( let mut timeline: *mut spScaleTimeline = _spCalloc( 1 as c_int as size_t, ::core::mem::size_of::() as c_ulong, - b"spine.c\0" as *const u8 as *const c_char, - 695 as c_int, - ) as *mut spScaleTimeline; + (b"spine.c\0" as *const u8).cast::(), + 770 as c_int, + ) + .cast::(); let mut ids: [spPropertyId; 2] = [0; 2]; ids[0 as c_int as usize] = (SP_PROPERTY_SCALEX as c_int as spPropertyId) << 32 as c_int | boneIndex as c_ulong; @@ -2908,7 +3169,7 @@ pub unsafe extern "C" fn spScaleTimeline_create( ), ); (*timeline).boneIndex = boneIndex; - return timeline; + timeline } #[no_mangle] pub unsafe extern "C" fn spScaleTimeline_setFrame( @@ -2932,116 +3193,19 @@ pub unsafe extern "C" fn _spScaleXTimeline_apply( mut blend: spMixBlend, mut direction: spMixDirection, ) { - let mut bone: *mut spBone = std::ptr::null_mut(); - let mut x: c_float = 0.; - let mut self_0: *mut spScaleXTimeline = timeline as *mut spScaleXTimeline; - let mut frames: *mut c_float = (*(*self_0).super_0.super_0.frames).items; - bone = *((*skeleton).bones).offset((*self_0).boneIndex as isize); - if (*bone).active == 0 { - return; - } - if time < *frames.offset(0 as c_int as isize) { - match blend as c_uint { - 0 => { - (*bone).scaleX = (*(*bone).data).scaleX; - return; - } - 1 => { - (*bone).scaleX += ((*(*bone).data).scaleX - (*bone).scaleX) * alpha; - } - _ => {} - } - return; + let mut self_0: *mut spScaleXTimeline = timeline.cast::(); + let mut bone: *mut spBone = *((*skeleton).bones).offset((*self_0).boneIndex as isize); + if (*bone).active != 0 { + (*bone).scaleX = spCurveTimeline1_getScaleValue( + &mut (*self_0).super_0, + time, + alpha, + blend, + direction, + (*bone).scaleX, + (*(*bone).data).scaleX, + ); } - x = spCurveTimeline1_getCurveValue(&mut (*self_0).super_0, time) * (*(*bone).data).scaleX; - if alpha == 1 as c_int as c_float { - if blend as c_uint == SP_MIX_BLEND_ADD as c_int as c_uint { - (*bone).scaleX += x - (*(*bone).data).scaleX; - } else { - (*bone).scaleX = x; - } - } else { - let mut bx: c_float = 0.; - if direction as c_uint == SP_MIX_DIRECTION_OUT as c_int as c_uint { - match blend as c_uint { - 0 => { - bx = (*(*bone).data).scaleX; - (*bone).scaleX = bx - + ((if x < 0 as c_int as c_float { -x } else { x }) - * (if bx < 0 as c_int as c_float { - -1.0f32 - } else { - if bx > 0 as c_int as c_float { - 1.0f32 - } else { - 0.0f32 - } - }) - - bx) - * alpha; - } - 1 | 2 => { - bx = (*bone).scaleX; - (*bone).scaleX = bx - + ((if x < 0 as c_int as c_float { -x } else { x }) - * (if bx < 0 as c_int as c_float { - -1.0f32 - } else { - if bx > 0 as c_int as c_float { - 1.0f32 - } else { - 0.0f32 - } - }) - - bx) - * alpha; - } - 3 => { - (*bone).scaleX += (x - (*(*bone).data).scaleX) * alpha; - } - _ => {} - } - } else { - match blend as c_uint { - 0 => { - bx = (if (*(*bone).data).scaleX < 0 as c_int as c_float { - -(*(*bone).data).scaleX - } else { - (*(*bone).data).scaleX - }) * (if x < 0 as c_int as c_float { - -1.0f32 - } else { - if x > 0 as c_int as c_float { - 1.0f32 - } else { - 0.0f32 - } - }); - (*bone).scaleX = bx + (x - bx) * alpha; - } - 1 | 2 => { - bx = (if (*bone).scaleX < 0 as c_int as c_float { - -(*bone).scaleX - } else { - (*bone).scaleX - }) * (if x < 0 as c_int as c_float { - -1.0f32 - } else { - if x > 0 as c_int as c_float { - 1.0f32 - } else { - 0.0f32 - } - }); - (*bone).scaleX = bx + (x - bx) * alpha; - } - 3 => { - (*bone).scaleX += (x - (*(*bone).data).scaleX) * alpha; - } - _ => {} - } - } - }; } #[no_mangle] pub unsafe extern "C" fn spScaleXTimeline_create( @@ -3052,9 +3216,10 @@ pub unsafe extern "C" fn spScaleXTimeline_create( let mut timeline: *mut spScaleXTimeline = _spCalloc( 1 as c_int as size_t, ::core::mem::size_of::() as c_ulong, - b"spine.c\0" as *const u8 as *const c_char, - 782 as c_int, - ) as *mut spScaleXTimeline; + (b"spine.c\0" as *const u8).cast::(), + 800 as c_int, + ) + .cast::(); let mut ids: [spPropertyId; 1] = [0; 1]; ids[0 as c_int as usize] = (SP_PROPERTY_SCALEX as c_int as spPropertyId) << 32 as c_int | boneIndex as c_ulong; @@ -3100,7 +3265,7 @@ pub unsafe extern "C" fn spScaleXTimeline_create( ), ); (*timeline).boneIndex = boneIndex; - return timeline; + timeline } #[no_mangle] pub unsafe extern "C" fn spScaleXTimeline_setFrame( @@ -3123,116 +3288,19 @@ pub unsafe extern "C" fn _spScaleYTimeline_apply( mut blend: spMixBlend, mut direction: spMixDirection, ) { - let mut bone: *mut spBone = std::ptr::null_mut(); - let mut y: c_float = 0.; - let mut self_0: *mut spScaleYTimeline = timeline as *mut spScaleYTimeline; - let mut frames: *mut c_float = (*(*self_0).super_0.super_0.frames).items; - bone = *((*skeleton).bones).offset((*self_0).boneIndex as isize); - if (*bone).active == 0 { - return; - } - if time < *frames.offset(0 as c_int as isize) { - match blend as c_uint { - 0 => { - (*bone).scaleY = (*(*bone).data).scaleY; - return; - } - 1 => { - (*bone).scaleY += ((*(*bone).data).scaleY - (*bone).scaleY) * alpha; - } - _ => {} - } - return; + let mut self_0: *mut spScaleYTimeline = timeline.cast::(); + let mut bone: *mut spBone = *((*skeleton).bones).offset((*self_0).boneIndex as isize); + if (*bone).active != 0 { + (*bone).scaleY = spCurveTimeline1_getScaleValue( + &mut (*self_0).super_0, + time, + alpha, + blend, + direction, + (*bone).scaleX, + (*(*bone).data).scaleY, + ); } - y = spCurveTimeline1_getCurveValue(&mut (*self_0).super_0, time) * (*(*bone).data).scaleY; - if alpha == 1 as c_int as c_float { - if blend as c_uint == SP_MIX_BLEND_ADD as c_int as c_uint { - (*bone).scaleY += y - (*(*bone).data).scaleY; - } else { - (*bone).scaleY = y; - } - } else { - let mut by: c_float = 0 as c_int as c_float; - if direction as c_uint == SP_MIX_DIRECTION_OUT as c_int as c_uint { - match blend as c_uint { - 0 => { - by = (*(*bone).data).scaleY; - (*bone).scaleY = by - + ((if y < 0 as c_int as c_float { -y } else { y }) - * (if by < 0 as c_int as c_float { - -1.0f32 - } else { - if by > 0 as c_int as c_float { - 1.0f32 - } else { - 0.0f32 - } - }) - - by) - * alpha; - } - 1 | 2 => { - by = (*bone).scaleY; - (*bone).scaleY = by - + ((if y < 0 as c_int as c_float { -y } else { y }) - * (if by < 0 as c_int as c_float { - -1.0f32 - } else { - if by > 0 as c_int as c_float { - 1.0f32 - } else { - 0.0f32 - } - }) - - by) - * alpha; - } - 3 => { - (*bone).scaleY += (y - (*(*bone).data).scaleY) * alpha; - } - _ => {} - } - } else { - match blend as c_uint { - 0 => { - by = (if (*(*bone).data).scaleY < 0 as c_int as c_float { - -(*(*bone).data).scaleY - } else { - (*(*bone).data).scaleY - }) * (if y < 0 as c_int as c_float { - -1.0f32 - } else { - if y > 0 as c_int as c_float { - 1.0f32 - } else { - 0.0f32 - } - }); - (*bone).scaleY = by + (y - by) * alpha; - } - 1 | 2 => { - by = (if (*bone).scaleY < 0 as c_int as c_float { - -(*bone).scaleY - } else { - (*bone).scaleY - }) * (if y < 0 as c_int as c_float { - -1.0f32 - } else { - if y > 0 as c_int as c_float { - 1.0f32 - } else { - 0.0f32 - } - }); - (*bone).scaleY = by + (y - by) * alpha; - } - 3 => { - (*bone).scaleY += (y - (*(*bone).data).scaleY) * alpha; - } - _ => {} - } - } - }; } #[no_mangle] pub unsafe extern "C" fn spScaleYTimeline_create( @@ -3243,9 +3311,10 @@ pub unsafe extern "C" fn spScaleYTimeline_create( let mut timeline: *mut spScaleYTimeline = _spCalloc( 1 as c_int as size_t, ::core::mem::size_of::() as c_ulong, - b"spine.c\0" as *const u8 as *const c_char, - 868 as c_int, - ) as *mut spScaleYTimeline; + (b"spine.c\0" as *const u8).cast::(), + 829 as c_int, + ) + .cast::(); let mut ids: [spPropertyId; 1] = [0; 1]; ids[0 as c_int as usize] = (SP_PROPERTY_SCALEY as c_int as spPropertyId) << 32 as c_int | boneIndex as c_ulong; @@ -3291,7 +3360,7 @@ pub unsafe extern "C" fn spScaleYTimeline_create( ), ); (*timeline).boneIndex = boneIndex; - return timeline; + timeline } #[no_mangle] pub unsafe extern "C" fn spScaleYTimeline_setFrame( @@ -3314,13 +3383,13 @@ pub unsafe extern "C" fn _spShearTimeline_apply( mut blend: spMixBlend, mut _direction: spMixDirection, ) { - let mut bone: *mut spBone = std::ptr::null_mut(); + let mut bone: *mut spBone = std::ptr::null_mut::(); let mut x: c_float = 0.; let mut y: c_float = 0.; let mut t: c_float = 0.; let mut i: c_int = 0; let mut curveType: c_int = 0; - let mut self_0: *mut spShearTimeline = timeline as *mut spShearTimeline; + let mut self_0: *mut spShearTimeline = timeline.cast::(); let mut frames: *mut c_float = (*(*self_0).super_0.super_0.frames).items; let mut curves: *mut c_float = (*(*self_0).super_0.curves).items; bone = *((*skeleton).bones).offset((*self_0).boneIndex as isize); @@ -3399,9 +3468,10 @@ pub unsafe extern "C" fn spShearTimeline_create( let mut timeline: *mut spShearTimeline = _spCalloc( 1 as c_int as size_t, ::core::mem::size_of::() as c_ulong, - b"spine.c\0" as *const u8 as *const c_char, - 956 as c_int, - ) as *mut spShearTimeline; + (b"spine.c\0" as *const u8).cast::(), + 917 as c_int, + ) + .cast::(); let mut ids: [spPropertyId; 2] = [0; 2]; ids[0 as c_int as usize] = (SP_PROPERTY_SHEARX as c_int as spPropertyId) << 32 as c_int | boneIndex as c_ulong; @@ -3449,7 +3519,7 @@ pub unsafe extern "C" fn spShearTimeline_create( ), ); (*timeline).boneIndex = boneIndex; - return timeline; + timeline } #[no_mangle] pub unsafe extern "C" fn spShearTimeline_setFrame( @@ -3473,40 +3543,18 @@ pub unsafe extern "C" fn _spShearXTimeline_apply( mut blend: spMixBlend, mut _direction: spMixDirection, ) { - let mut bone: *mut spBone = std::ptr::null_mut(); - let mut x: c_float = 0.; - let mut self_0: *mut spShearXTimeline = timeline as *mut spShearXTimeline; - let mut frames: *mut c_float = (*(*self_0).super_0.super_0.frames).items; - bone = *((*skeleton).bones).offset((*self_0).boneIndex as isize); - if (*bone).active == 0 { - return; - } - if time < *frames.offset(0 as c_int as isize) { - match blend as c_uint { - 0 => { - (*bone).shearX = (*(*bone).data).shearX; - return; - } - 1 => { - (*bone).shearX += ((*(*bone).data).shearX - (*bone).shearX) * alpha; - } - _ => {} - } - return; + let mut self_0: *mut spShearXTimeline = timeline.cast::(); + let mut bone: *mut spBone = *((*skeleton).bones).offset((*self_0).boneIndex as isize); + if (*bone).active != 0 { + (*bone).shearX = spCurveTimeline1_getRelativeValue( + &mut (*self_0).super_0, + time, + alpha, + blend, + (*bone).shearX, + (*(*bone).data).shearX, + ); } - x = spCurveTimeline1_getCurveValue(&mut (*self_0).super_0, time); - match blend as c_uint { - 0 => { - (*bone).shearX = (*(*bone).data).shearX + x * alpha; - } - 1 | 2 => { - (*bone).shearX += ((*(*bone).data).shearX + x - (*bone).shearX) * alpha; - } - 3 => { - (*bone).shearX += x * alpha; - } - _ => {} - }; } #[no_mangle] pub unsafe extern "C" fn spShearXTimeline_create( @@ -3517,9 +3565,10 @@ pub unsafe extern "C" fn spShearXTimeline_create( let mut timeline: *mut spShearXTimeline = _spCalloc( 1 as c_int as size_t, ::core::mem::size_of::() as c_ulong, - b"spine.c\0" as *const u8 as *const c_char, - 1016 as c_int, - ) as *mut spShearXTimeline; + (b"spine.c\0" as *const u8).cast::(), + 948 as c_int, + ) + .cast::(); let mut ids: [spPropertyId; 1] = [0; 1]; ids[0 as c_int as usize] = (SP_PROPERTY_SHEARX as c_int as spPropertyId) << 32 as c_int | boneIndex as c_ulong; @@ -3565,7 +3614,7 @@ pub unsafe extern "C" fn spShearXTimeline_create( ), ); (*timeline).boneIndex = boneIndex; - return timeline; + timeline } #[no_mangle] pub unsafe extern "C" fn spShearXTimeline_setFrame( @@ -3588,40 +3637,18 @@ pub unsafe extern "C" fn _spShearYTimeline_apply( mut blend: spMixBlend, mut _direction: spMixDirection, ) { - let mut bone: *mut spBone = std::ptr::null_mut(); - let mut y: c_float = 0.; - let mut self_0: *mut spShearYTimeline = timeline as *mut spShearYTimeline; - let mut frames: *mut c_float = (*(*self_0).super_0.super_0.frames).items; - bone = *((*skeleton).bones).offset((*self_0).boneIndex as isize); - if (*bone).active == 0 { - return; - } - if time < *frames.offset(0 as c_int as isize) { - match blend as c_uint { - 0 => { - (*bone).shearY = (*(*bone).data).shearY; - return; - } - 1 => { - (*bone).shearY += ((*(*bone).data).shearY - (*bone).shearY) * alpha; - } - _ => {} - } - return; + let mut self_0: *mut spShearYTimeline = timeline.cast::(); + let mut bone: *mut spBone = *((*skeleton).bones).offset((*self_0).boneIndex as isize); + if (*bone).active != 0 { + (*bone).shearY = spCurveTimeline1_getRelativeValue( + &mut (*self_0).super_0, + time, + alpha, + blend, + (*bone).shearY, + (*(*bone).data).shearY, + ); } - y = spCurveTimeline1_getCurveValue(&mut (*self_0).super_0, time); - match blend as c_uint { - 0 => { - (*bone).shearY = (*(*bone).data).shearY + y * alpha; - } - 1 | 2 => { - (*bone).shearY += ((*(*bone).data).shearY + y - (*bone).shearY) * alpha; - } - 3 => { - (*bone).shearY += y * alpha; - } - _ => {} - }; } #[no_mangle] pub unsafe extern "C" fn spShearYTimeline_create( @@ -3632,9 +3659,10 @@ pub unsafe extern "C" fn spShearYTimeline_create( let mut timeline: *mut spShearYTimeline = _spCalloc( 1 as c_int as size_t, ::core::mem::size_of::() as c_ulong, - b"spine.c\0" as *const u8 as *const c_char, - 1076 as c_int, - ) as *mut spShearYTimeline; + (b"spine.c\0" as *const u8).cast::(), + 978 as c_int, + ) + .cast::(); let mut ids: [spPropertyId; 1] = [0; 1]; ids[0 as c_int as usize] = (SP_PROPERTY_SHEARY as c_int as spPropertyId) << 32 as c_int | boneIndex as c_ulong; @@ -3680,7 +3708,7 @@ pub unsafe extern "C" fn spShearYTimeline_create( ), ); (*timeline).boneIndex = boneIndex; - return timeline; + timeline } #[no_mangle] pub unsafe extern "C" fn spShearYTimeline_setFrame( @@ -3708,7 +3736,7 @@ pub unsafe extern "C" fn _spRGBATimeline_apply( mut blend: spMixBlend, mut _direction: spMixDirection, ) { - let mut slot: *mut spSlot = std::ptr::null_mut(); + let mut slot: *mut spSlot = std::ptr::null_mut::(); let mut i: c_int = 0; let mut curveType: c_int = 0; let mut r: c_float = 0.; @@ -3716,9 +3744,9 @@ pub unsafe extern "C" fn _spRGBATimeline_apply( let mut b: c_float = 0.; let mut a: c_float = 0.; let mut t: c_float = 0.; - let mut color: *mut spColor = std::ptr::null_mut(); - let mut setup: *mut spColor = std::ptr::null_mut(); - let mut self_0: *mut spRGBATimeline = timeline as *mut spRGBATimeline; + let mut color: *mut spColor = std::ptr::null_mut::(); + let mut setup: *mut spColor = std::ptr::null_mut::(); + let mut self_0: *mut spRGBATimeline = timeline.cast::(); let mut frames: *mut c_float = (*(*self_0).super_0.super_0.frames).items; let mut curves: *mut c_float = (*(*self_0).super_0.curves).items; slot = *((*skeleton).slots).offset((*self_0).slotIndex as isize); @@ -3823,9 +3851,10 @@ pub unsafe extern "C" fn spRGBATimeline_create( let mut timeline: *mut spRGBATimeline = _spCalloc( 1 as c_int as size_t, ::core::mem::size_of::() as c_ulong, - b"spine.c\0" as *const u8 as *const c_char, - 1173 as c_int, - ) as *mut spRGBATimeline; + (b"spine.c\0" as *const u8).cast::(), + 1075 as c_int, + ) + .cast::(); let mut ids: [spPropertyId; 2] = [0; 2]; ids[0 as c_int as usize] = (SP_PROPERTY_RGB as c_int as spPropertyId) << 32 as c_int | slotIndex as c_ulong; @@ -3873,7 +3902,7 @@ pub unsafe extern "C" fn spRGBATimeline_create( ), ); (*timeline).slotIndex = slotIndex; - return timeline; + timeline } #[no_mangle] pub unsafe extern "C" fn spRGBATimeline_setFrame( @@ -3905,16 +3934,16 @@ pub unsafe extern "C" fn _spRGBTimeline_apply( mut blend: spMixBlend, mut _direction: spMixDirection, ) { - let mut slot: *mut spSlot = std::ptr::null_mut(); + let mut slot: *mut spSlot = std::ptr::null_mut::(); let mut i: c_int = 0; let mut curveType: c_int = 0; let mut r: c_float = 0.; let mut g: c_float = 0.; let mut b: c_float = 0.; let mut t: c_float = 0.; - let mut color: *mut spColor = std::ptr::null_mut(); - let mut setup: *mut spColor = std::ptr::null_mut(); - let mut self_0: *mut spRGBTimeline = timeline as *mut spRGBTimeline; + let mut color: *mut spColor = std::ptr::null_mut::(); + let mut setup: *mut spColor = std::ptr::null_mut::(); + let mut self_0: *mut spRGBTimeline = timeline.cast::(); let mut frames: *mut c_float = (*(*self_0).super_0.super_0.frames).items; let mut curves: *mut c_float = (*(*self_0).super_0.curves).items; slot = *((*skeleton).slots).offset((*self_0).slotIndex as isize); @@ -4009,9 +4038,10 @@ pub unsafe extern "C" fn spRGBTimeline_create( let mut timeline: *mut spRGBTimeline = _spCalloc( 1 as c_int as size_t, ::core::mem::size_of::() as c_ulong, - b"spine.c\0" as *const u8 as *const c_char, - 1279 as c_int, - ) as *mut spRGBTimeline; + (b"spine.c\0" as *const u8).cast::(), + 1181 as c_int, + ) + .cast::(); let mut ids: [spPropertyId; 1] = [0; 1]; ids[0 as c_int as usize] = (SP_PROPERTY_RGB as c_int as spPropertyId) << 32 as c_int | slotIndex as c_ulong; @@ -4057,7 +4087,7 @@ pub unsafe extern "C" fn spRGBTimeline_create( ), ); (*timeline).slotIndex = slotIndex; - return timeline; + timeline } #[no_mangle] pub unsafe extern "C" fn spRGBTimeline_setFrame( @@ -4087,11 +4117,11 @@ pub unsafe extern "C" fn _spAlphaTimeline_apply( mut blend: spMixBlend, mut _direction: spMixDirection, ) { - let mut slot: *mut spSlot = std::ptr::null_mut(); + let mut slot: *mut spSlot = std::ptr::null_mut::(); let mut a: c_float = 0.; - let mut color: *mut spColor = std::ptr::null_mut(); - let mut setup: *mut spColor = std::ptr::null_mut(); - let mut self_0: *mut spAlphaTimeline = timeline as *mut spAlphaTimeline; + let mut color: *mut spColor = std::ptr::null_mut::(); + let mut setup: *mut spColor = std::ptr::null_mut::(); + let mut self_0: *mut spAlphaTimeline = timeline.cast::(); let mut frames: *mut c_float = (*(*self_0).super_0.super_0.frames).items; slot = *((*skeleton).slots).offset((*self_0).slotIndex as isize); if (*(*slot).bone).active == 0 { @@ -4131,9 +4161,10 @@ pub unsafe extern "C" fn spAlphaTimeline_create( let mut timeline: *mut spAlphaTimeline = _spCalloc( 1 as c_int as size_t, ::core::mem::size_of::() as c_ulong, - b"spine.c\0" as *const u8 as *const c_char, - 1342 as c_int, - ) as *mut spAlphaTimeline; + (b"spine.c\0" as *const u8).cast::(), + 1244 as c_int, + ) + .cast::(); let mut ids: [spPropertyId; 1] = [0; 1]; ids[0 as c_int as usize] = (SP_PROPERTY_ALPHA as c_int as spPropertyId) << 32 as c_int | slotIndex as c_ulong; @@ -4179,7 +4210,7 @@ pub unsafe extern "C" fn spAlphaTimeline_create( ), ); (*timeline).slotIndex = slotIndex; - return timeline; + timeline } #[no_mangle] pub unsafe extern "C" fn spAlphaTimeline_setFrame( @@ -4206,7 +4237,7 @@ pub unsafe extern "C" fn _spRGBA2Timeline_apply( mut blend: spMixBlend, mut _direction: spMixDirection, ) { - let mut slot: *mut spSlot = std::ptr::null_mut(); + let mut slot: *mut spSlot = std::ptr::null_mut::(); let mut i: c_int = 0; let mut curveType: c_int = 0; let mut r: c_float = 0.; @@ -4217,11 +4248,11 @@ pub unsafe extern "C" fn _spRGBA2Timeline_apply( let mut g2: c_float = 0.; let mut b2: c_float = 0.; let mut t: c_float = 0.; - let mut light: *mut spColor = std::ptr::null_mut(); - let mut setupLight: *mut spColor = std::ptr::null_mut(); - let mut dark: *mut spColor = std::ptr::null_mut(); - let mut setupDark: *mut spColor = std::ptr::null_mut(); - let mut self_0: *mut spRGBA2Timeline = timeline as *mut spRGBA2Timeline; + let mut light: *mut spColor = std::ptr::null_mut::(); + let mut setupLight: *mut spColor = std::ptr::null_mut::(); + let mut dark: *mut spColor = std::ptr::null_mut::(); + let mut setupDark: *mut spColor = std::ptr::null_mut::(); + let mut self_0: *mut spRGBA2Timeline = timeline.cast::(); let mut frames: *mut c_float = (*(*self_0).super_0.super_0.frames).items; let mut curves: *mut c_float = (*(*self_0).super_0.curves).items; slot = *((*skeleton).slots).offset((*self_0).slotIndex as isize); @@ -4375,9 +4406,10 @@ pub unsafe extern "C" fn spRGBA2Timeline_create( let mut timeline: *mut spRGBA2Timeline = _spCalloc( 1 as c_int as size_t, ::core::mem::size_of::() as c_ulong, - b"spine.c\0" as *const u8 as *const c_char, - 1469 as c_int, - ) as *mut spRGBA2Timeline; + (b"spine.c\0" as *const u8).cast::(), + 1371 as c_int, + ) + .cast::(); let mut ids: [spPropertyId; 3] = [0; 3]; ids[0 as c_int as usize] = (SP_PROPERTY_RGB as c_int as spPropertyId) << 32 as c_int | slotIndex as c_ulong; @@ -4427,7 +4459,7 @@ pub unsafe extern "C" fn spRGBA2Timeline_create( ), ); (*timeline).slotIndex = slotIndex; - return timeline; + timeline } #[no_mangle] pub unsafe extern "C" fn spRGBA2Timeline_setFrame( @@ -4469,7 +4501,7 @@ pub unsafe extern "C" fn _spRGB2Timeline_apply( mut blend: spMixBlend, mut _direction: spMixDirection, ) { - let mut slot: *mut spSlot = std::ptr::null_mut(); + let mut slot: *mut spSlot = std::ptr::null_mut::(); let mut i: c_int = 0; let mut curveType: c_int = 0; let mut r: c_float = 0.; @@ -4479,11 +4511,11 @@ pub unsafe extern "C" fn _spRGB2Timeline_apply( let mut g2: c_float = 0.; let mut b2: c_float = 0.; let mut t: c_float = 0.; - let mut light: *mut spColor = std::ptr::null_mut(); - let mut setupLight: *mut spColor = std::ptr::null_mut(); - let mut dark: *mut spColor = std::ptr::null_mut(); - let mut setupDark: *mut spColor = std::ptr::null_mut(); - let mut self_0: *mut spRGB2Timeline = timeline as *mut spRGB2Timeline; + let mut light: *mut spColor = std::ptr::null_mut::(); + let mut setupLight: *mut spColor = std::ptr::null_mut::(); + let mut dark: *mut spColor = std::ptr::null_mut::(); + let mut setupDark: *mut spColor = std::ptr::null_mut::(); + let mut self_0: *mut spRGB2Timeline = timeline.cast::(); let mut frames: *mut c_float = (*(*self_0).super_0.super_0.frames).items; let mut curves: *mut c_float = (*(*self_0).super_0.curves).items; slot = *((*skeleton).slots).offset((*self_0).slotIndex as isize); @@ -4624,9 +4656,10 @@ pub unsafe extern "C" fn spRGB2Timeline_create( let mut timeline: *mut spRGB2Timeline = _spCalloc( 1 as c_int as size_t, ::core::mem::size_of::() as c_ulong, - b"spine.c\0" as *const u8 as *const c_char, - 1602 as c_int, - ) as *mut spRGB2Timeline; + (b"spine.c\0" as *const u8).cast::(), + 1504 as c_int, + ) + .cast::(); let mut ids: [spPropertyId; 2] = [0; 2]; ids[0 as c_int as usize] = (SP_PROPERTY_RGB as c_int as spPropertyId) << 32 as c_int | slotIndex as c_ulong; @@ -4674,7 +4707,7 @@ pub unsafe extern "C" fn spRGB2Timeline_create( ), ); (*timeline).slotIndex = slotIndex; - return timeline; + timeline } #[no_mangle] pub unsafe extern "C" fn spRGB2Timeline_setFrame( @@ -4707,7 +4740,7 @@ unsafe extern "C" fn _spSetAttachment( spSlot_setAttachment( slot, if attachmentName.is_null() { - std::ptr::null_mut() + std::ptr::null_mut::() } else { spSkeleton_getAttachmentForSlotIndex(skeleton, (*timeline).slotIndex, attachmentName) }, @@ -4725,8 +4758,8 @@ pub unsafe extern "C" fn _spAttachmentTimeline_apply( mut blend: spMixBlend, mut direction: spMixDirection, ) { - let mut attachmentName: *const c_char = std::ptr::null(); - let mut self_0: *mut spAttachmentTimeline = timeline as *mut spAttachmentTimeline; + let mut attachmentName: *const c_char = std::ptr::null::(); + let mut self_0: *mut spAttachmentTimeline = timeline.cast::(); let mut frames: *mut c_float = (*(*self_0).super_0.frames).items; let mut slot: *mut spSlot = *((*skeleton).slots).offset((*self_0).slotIndex as isize); if (*(*slot).bone).active == 0 { @@ -4760,14 +4793,14 @@ pub unsafe extern "C" fn _spAttachmentTimeline_apply( } #[no_mangle] pub unsafe extern "C" fn _spAttachmentTimeline_dispose(mut timeline: *mut spTimeline) { - let mut self_0: *mut spAttachmentTimeline = timeline as *mut spAttachmentTimeline; + let mut self_0: *mut spAttachmentTimeline = timeline.cast::(); let mut i: c_int = 0; i = 0 as c_int; while i < (*(*self_0).super_0.frames).size { - _spFree(*((*self_0).attachmentNames).offset(i as isize) as *mut c_void); + _spFree((*((*self_0).attachmentNames).offset(i as isize)).cast::()); i += 1; } - _spFree((*self_0).attachmentNames as *mut c_void); + _spFree((*self_0).attachmentNames.cast::()); } #[no_mangle] pub unsafe extern "C" fn spAttachmentTimeline_create( @@ -4777,9 +4810,10 @@ pub unsafe extern "C" fn spAttachmentTimeline_create( let mut self_0: *mut spAttachmentTimeline = _spCalloc( 1 as c_int as size_t, ::core::mem::size_of::() as c_ulong, - b"spine.c\0" as *const u8 as *const c_char, - 1679 as c_int, - ) as *mut spAttachmentTimeline; + (b"spine.c\0" as *const u8).cast::(), + 1581 as c_int, + ) + .cast::(); let mut ids: [spPropertyId; 1] = [0; 1]; ids[0 as c_int as usize] = (SP_PROPERTY_ATTACHMENT as c_int as spPropertyId) << 32 as c_int | slotIndex as c_ulong; @@ -4807,15 +4841,15 @@ pub unsafe extern "C" fn spAttachmentTimeline_create( ), None, ); - let ref mut fresh4 = *(&mut (*self_0).attachmentNames as *mut *mut *mut c_char); - *fresh4 = _spCalloc( + (*self_0).attachmentNames = _spCalloc( framesCount as size_t, ::core::mem::size_of::<*mut c_char>() as c_ulong, - b"spine.c\0" as *const u8 as *const c_char, - 1684 as c_int, - ) as *mut *mut c_char; + (b"spine.c\0" as *const u8).cast::(), + 1586 as c_int, + ) + .cast::<*mut c_char>(); (*self_0).slotIndex = slotIndex; - return self_0; + self_0 } #[no_mangle] pub unsafe extern "C" fn spAttachmentTimeline_setFrame( @@ -4825,20 +4859,20 @@ pub unsafe extern "C" fn spAttachmentTimeline_setFrame( mut attachmentName: *const c_char, ) { *((*(*self_0).super_0.frames).items).offset(frame as isize) = time; - _spFree(*((*self_0).attachmentNames).offset(frame as isize) as *mut c_void); + _spFree((*((*self_0).attachmentNames).offset(frame as isize)).cast::()); if !attachmentName.is_null() { - let ref mut fresh5 = - *(&mut *((*self_0).attachmentNames).offset(frame as isize) as *mut *mut c_char); - *fresh5 = _spMalloc( + let fresh3 = &mut (*((*self_0).attachmentNames).offset(frame as isize)); + *fresh3 = _spMalloc( (::core::mem::size_of::() as c_ulong) .wrapping_mul((spine_strlen(attachmentName)).wrapping_add(1 as c_int as c_ulong)), - b"spine.c\0" as *const u8 as *const c_char, - 1694 as c_int, - ) as *mut c_char; - spine_strcpy(*fresh5, attachmentName); + (b"spine.c\0" as *const u8).cast::(), + 1596 as c_int, + ) + .cast::(); + spine_strcpy(*fresh3, attachmentName); } else { - let ref mut fresh6 = *((*self_0).attachmentNames).offset(frame as isize); - *fresh6 = std::ptr::null_mut(); + let fresh4 = &mut (*((*self_0).attachmentNames).offset(frame as isize)); + *fresh4 = std::ptr::null_mut::(); }; } #[no_mangle] @@ -4856,7 +4890,7 @@ pub unsafe extern "C" fn _spDeformTimeline_setBezier( mut time2: c_float, mut _value2: c_float, ) { - let mut self_0: *mut spDeformTimeline = timeline as *mut spDeformTimeline; + let mut self_0: *mut spDeformTimeline = timeline.cast::(); let mut n: c_int = 0; let mut i: c_int = (*self_0).super_0.super_0.frameCount + bezier * 18 as c_int; let mut curves: *mut c_float = (*(*self_0).super_0.curves).items; @@ -4932,9 +4966,8 @@ pub unsafe extern "C" fn _spDeformTimeline_getCurvePercent( } x = *curves.offset((n - 2 as c_int) as isize); y = *curves.offset((n - 1 as c_int) as isize); - return y - + (1 as c_int as c_float - y) * (time - x) - / (*frames.offset((frame + frameEntries) as isize) - x); + y + (1 as c_int as c_float - y) * (time - x) + / (*frames.offset((frame + frameEntries) as isize) - x) } #[no_mangle] pub unsafe extern "C" fn _spDeformTimeline_apply( @@ -4952,13 +4985,13 @@ pub unsafe extern "C" fn _spDeformTimeline_apply( let mut i: c_int = 0; let mut vertexCount: c_int = 0; let mut percent: c_float = 0.; - let mut prevVertices: *const c_float = std::ptr::null(); - let mut nextVertices: *const c_float = std::ptr::null(); - let mut frames: *mut c_float = std::ptr::null_mut(); + let mut prevVertices: *const c_float = std::ptr::null::(); + let mut nextVertices: *const c_float = std::ptr::null::(); + let mut frames: *mut c_float = std::ptr::null_mut::(); let mut framesCount: c_int = 0; - let mut frameVertices: *mut *mut c_float = std::ptr::null_mut(); - let mut deformArray: *mut c_float = std::ptr::null_mut(); - let mut self_0: *mut spDeformTimeline = timeline as *mut spDeformTimeline; + let mut frameVertices: *mut *mut c_float = std::ptr::null_mut::<*mut c_float>(); + let mut deformArray: *mut c_float = std::ptr::null_mut::(); + let mut self_0: *mut spDeformTimeline = timeline.cast::(); let mut slot: *mut spSlot = *((*skeleton).slots).offset((*self_0).slotIndex as isize); if (*(*slot).bone).active == 0 { return; @@ -4969,7 +5002,7 @@ pub unsafe extern "C" fn _spDeformTimeline_apply( match (*(*slot).attachment).type_0 as c_uint { 1 | 6 | 2 | 4 => { let mut vertexAttachment: *mut spVertexAttachment = - (*slot).attachment as *mut spVertexAttachment; + (*slot).attachment.cast::(); if (*vertexAttachment).timelineAttachment != (*self_0).attachment { return; } @@ -4979,16 +5012,15 @@ pub unsafe extern "C" fn _spDeformTimeline_apply( frames = (*(*self_0).super_0.super_0.frames).items; framesCount = (*(*self_0).super_0.super_0.frames).size; vertexCount = (*self_0).frameVerticesCount; - if (*slot).deformCount < vertexCount { - if (*slot).deformCapacity < vertexCount { - _spFree((*slot).deform as *mut c_void); - (*slot).deform = _spMalloc( - (::core::mem::size_of::() as c_ulong).wrapping_mul(vertexCount as c_ulong), - b"spine.c\0" as *const u8 as *const c_char, - 1797 as c_int, - ) as *mut c_float; - (*slot).deformCapacity = vertexCount; - } + if (*slot).deformCount < vertexCount && (*slot).deformCapacity < vertexCount { + _spFree((*slot).deform.cast::()); + (*slot).deform = _spMalloc( + (::core::mem::size_of::() as c_ulong).wrapping_mul(vertexCount as c_ulong), + (b"spine.c\0" as *const u8).cast::(), + 1699 as c_int, + ) + .cast::(); + (*slot).deformCapacity = vertexCount; } if (*slot).deformCount == 0 as c_int { blend = SP_MIX_BLEND_SETUP; @@ -4997,7 +5029,7 @@ pub unsafe extern "C" fn _spDeformTimeline_apply( deformArray = (*slot).deform; if time < *frames.offset(0 as c_int as isize) { let mut vertexAttachment_0: *mut spVertexAttachment = - (*slot).attachment as *mut spVertexAttachment; + (*slot).attachment.cast::(); match blend as c_uint { 0 => { (*slot).deformCount = 0 as c_int; @@ -5038,7 +5070,7 @@ pub unsafe extern "C" fn _spDeformTimeline_apply( if alpha == 1 as c_int as c_float { if blend as c_uint == SP_MIX_BLEND_ADD as c_int as c_uint { let mut vertexAttachment_1: *mut spVertexAttachment = - (*slot).attachment as *mut spVertexAttachment; + (*slot).attachment.cast::(); if ((*vertexAttachment_1).bones).is_null() { let mut setupVertices_0: *mut c_float = (*vertexAttachment_1).vertices; i = 0 as c_int; @@ -5056,17 +5088,18 @@ pub unsafe extern "C" fn _spDeformTimeline_apply( } } else { spine_memcpy( - deformArray as *mut c_void, - lastVertices as *const c_void, + deformArray.cast::(), + lastVertices.cast::(), (vertexCount as c_ulong) .wrapping_mul(::core::mem::size_of::() as c_ulong), ); } } else { - let mut vertexAttachment_2: *mut spVertexAttachment = std::ptr::null_mut(); + let mut vertexAttachment_2: *mut spVertexAttachment = + std::ptr::null_mut::(); match blend as c_uint { 0 => { - vertexAttachment_2 = (*slot).attachment as *mut spVertexAttachment; + vertexAttachment_2 = (*slot).attachment.cast::(); if ((*vertexAttachment_2).bones).is_null() { let mut setupVertices_1: *mut c_float = (*vertexAttachment_2).vertices; i = 0 as c_int; @@ -5095,7 +5128,7 @@ pub unsafe extern "C" fn _spDeformTimeline_apply( } } 3 => { - vertexAttachment_2 = (*slot).attachment as *mut spVertexAttachment; + vertexAttachment_2 = (*slot).attachment.cast::(); if ((*vertexAttachment_2).bones).is_null() { let mut setupVertices_2: *mut c_float = (*vertexAttachment_2).vertices; i = 0 as c_int; @@ -5126,7 +5159,7 @@ pub unsafe extern "C" fn _spDeformTimeline_apply( if alpha == 1 as c_int as c_float { if blend as c_uint == SP_MIX_BLEND_ADD as c_int as c_uint { let mut vertexAttachment_3: *mut spVertexAttachment = - (*slot).attachment as *mut spVertexAttachment; + (*slot).attachment.cast::(); if ((*vertexAttachment_3).bones).is_null() { let mut setupVertices_3: *mut c_float = (*vertexAttachment_3).vertices; i = 0 as c_int; @@ -5156,10 +5189,11 @@ pub unsafe extern "C" fn _spDeformTimeline_apply( } } } else { - let mut vertexAttachment_4: *mut spVertexAttachment = std::ptr::null_mut(); + let mut vertexAttachment_4: *mut spVertexAttachment = + std::ptr::null_mut::(); match blend as c_uint { 0 => { - vertexAttachment_4 = (*slot).attachment as *mut spVertexAttachment; + vertexAttachment_4 = (*slot).attachment.cast::(); if ((*vertexAttachment_4).bones).is_null() { let mut setupVertices_4: *mut c_float = (*vertexAttachment_4).vertices; i = 0 as c_int; @@ -5195,7 +5229,7 @@ pub unsafe extern "C" fn _spDeformTimeline_apply( } } 3 => { - vertexAttachment_4 = (*slot).attachment as *mut spVertexAttachment; + vertexAttachment_4 = (*slot).attachment.cast::(); if ((*vertexAttachment_4).bones).is_null() { let mut setupVertices_5: *mut c_float = (*vertexAttachment_4).vertices; i = 0 as c_int; @@ -5224,14 +5258,14 @@ pub unsafe extern "C" fn _spDeformTimeline_apply( } #[no_mangle] pub unsafe extern "C" fn _spDeformTimeline_dispose(mut timeline: *mut spTimeline) { - let mut self_0: *mut spDeformTimeline = timeline as *mut spDeformTimeline; + let mut self_0: *mut spDeformTimeline = timeline.cast::(); let mut i: c_int = 0; i = 0 as c_int; while i < (*(*self_0).super_0.super_0.frames).size { - _spFree(*((*self_0).frameVertices).offset(i as isize) as *mut c_void); + _spFree((*((*self_0).frameVertices).offset(i as isize)).cast::()); i += 1; } - _spFree((*self_0).frameVertices as *mut c_void); + _spFree((*self_0).frameVertices.cast::()); _spCurveTimeline_dispose(timeline); } #[no_mangle] @@ -5245,9 +5279,10 @@ pub unsafe extern "C" fn spDeformTimeline_create( let mut self_0: *mut spDeformTimeline = _spCalloc( 1 as c_int as size_t, ::core::mem::size_of::() as c_ulong, - b"spine.c\0" as *const u8 as *const c_char, - 1983 as c_int, - ) as *mut spDeformTimeline; + (b"spine.c\0" as *const u8).cast::(), + 1885 as c_int, + ) + .cast::(); let mut ids: [spPropertyId; 1] = [0; 1]; ids[0 as c_int as usize] = (SP_PROPERTY_DEFORM as c_int as spPropertyId) << 32 as c_int | ((slotIndex << 16 as c_int | (*attachment).id) as c_uint & 0xffffffff as c_uint) @@ -5293,17 +5328,17 @@ pub unsafe extern "C" fn spDeformTimeline_create( ) -> (), ), ); - let ref mut fresh7 = *(&mut (*self_0).frameVertices as *mut *mut *mut c_float); - *fresh7 = _spCalloc( + (*self_0).frameVertices = _spCalloc( framesCount as size_t, ::core::mem::size_of::<*mut c_float>() as c_ulong, - b"spine.c\0" as *const u8 as *const c_char, - 1988 as c_int, - ) as *mut *mut c_float; - *(&mut (*self_0).frameVerticesCount as *mut c_int) = frameVerticesCount; + (b"spine.c\0" as *const u8).cast::(), + 1890 as c_int, + ) + .cast::<*mut c_float>(); + (*self_0).frameVerticesCount = frameVerticesCount; (*self_0).slotIndex = slotIndex; (*self_0).attachment = &mut (*attachment).super_0; - return self_0; + self_0 } #[no_mangle] pub unsafe extern "C" fn spDeformTimeline_setFrame( @@ -5313,21 +5348,21 @@ pub unsafe extern "C" fn spDeformTimeline_setFrame( mut vertices: *mut c_float, ) { *((*(*self_0).super_0.super_0.frames).items).offset(frame as isize) = time; - _spFree(*((*self_0).frameVertices).offset(frame as isize) as *mut c_void); + _spFree((*((*self_0).frameVertices).offset(frame as isize)).cast::()); if vertices.is_null() { - let ref mut fresh8 = *((*self_0).frameVertices).offset(frame as isize); - *fresh8 = std::ptr::null_mut(); + let fresh5 = &mut (*((*self_0).frameVertices).offset(frame as isize)); + *fresh5 = std::ptr::null_mut::(); } else { - let ref mut fresh9 = *((*self_0).frameVertices).offset(frame as isize); - *fresh9 = _spMalloc( + let fresh6 = &mut (*((*self_0).frameVertices).offset(frame as isize)); + *fresh6 = _spMalloc( (::core::mem::size_of::() as c_ulong) .wrapping_mul((*self_0).frameVerticesCount as c_ulong), - b"spine.c\0" as *const u8 as *const c_char, - 2002 as c_int, - ) as *mut c_float; + (b"spine.c\0" as *const u8).cast::(), + 1904 as c_int, + ) + .cast::(); spine_memcpy( - *(&mut *((*self_0).frameVertices).offset(frame as isize) as *mut *mut c_float) - as *mut c_void, + (*((*self_0).frameVertices).offset(frame as isize)).cast::(), vertices as *const c_void, ((*self_0).frameVerticesCount as c_ulong) .wrapping_mul(::core::mem::size_of::() as c_ulong), @@ -5349,10 +5384,10 @@ pub unsafe extern "C" fn _spSequenceTimeline_apply( mut blend: spMixBlend, mut _direction: spMixDirection, ) { - let mut self_0: *mut spSequenceTimeline = timeline as *mut spSequenceTimeline; + let mut self_0: *mut spSequenceTimeline = timeline.cast::(); let mut slot: *mut spSlot = *((*skeleton).slots).offset((*self_0).slotIndex as isize); - let mut slotAttachment: *mut spAttachment = std::ptr::null_mut(); - let mut frames: *mut c_float = std::ptr::null_mut(); + let mut slotAttachment: *mut spAttachment = std::ptr::null_mut::(); + let mut frames: *mut c_float = std::ptr::null_mut::(); let mut i: c_int = 0; let mut modeAndIndex: c_int = 0; let mut count: c_int = 0; @@ -5360,7 +5395,7 @@ pub unsafe extern "C" fn _spSequenceTimeline_apply( let mut mode: c_int = 0; let mut before: c_float = 0.; let mut delay: c_float = 0.; - let mut sequence: *mut spSequence = std::ptr::null_mut(); + let mut sequence: *mut spSequence = std::ptr::null_mut::(); if (*(*slot).bone).active == 0 { return; } @@ -5372,7 +5407,7 @@ pub unsafe extern "C" fn _spSequenceTimeline_apply( match (*slotAttachment).type_0 as c_uint { 1 | 6 | 2 | 4 => { let mut vertexAttachment: *mut spVertexAttachment = - (*slot).attachment as *mut spVertexAttachment; + (*slot).attachment.cast::(); if (*vertexAttachment).timelineAttachment != (*self_0).attachment { return; } @@ -5394,10 +5429,10 @@ pub unsafe extern "C" fn _spSequenceTimeline_apply( modeAndIndex = *frames.offset((i + MODE) as isize) as c_int; delay = *frames.offset((i + DELAY) as isize); if (*(*self_0).attachment).type_0 as c_uint == SP_ATTACHMENT_REGION as c_int as c_uint { - sequence = (*((*self_0).attachment as *mut spRegionAttachment)).sequence; + sequence = (*(*self_0).attachment.cast::()).sequence; } if (*(*self_0).attachment).type_0 as c_uint == SP_ATTACHMENT_MESH as c_int as c_uint { - sequence = (*((*self_0).attachment as *mut spMeshAttachment)).sequence; + sequence = (*(*self_0).attachment.cast::()).sequence; } if sequence.is_null() { return; @@ -5406,7 +5441,7 @@ pub unsafe extern "C" fn _spSequenceTimeline_apply( count = (*(*sequence).regions).size; mode = modeAndIndex & 0xf as c_int; if mode != 0 as c_int { - index += (((time - before) / delay) as c_double + 0.00001f64) as c_int; + index += (((time - before) / delay) as c_double + 0.0001f64) as c_int; match mode { 1 => { index = if (count - 1 as c_int) < index { @@ -5467,15 +5502,16 @@ pub unsafe extern "C" fn spSequenceTimeline_create( let mut self_0: *mut spSequenceTimeline = _spCalloc( 1 as c_int as size_t, ::core::mem::size_of::() as c_ulong, - b"spine.c\0" as *const u8 as *const c_char, - 2101 as c_int, - ) as *mut spSequenceTimeline; + (b"spine.c\0" as *const u8).cast::(), + 2003 as c_int, + ) + .cast::(); let mut ids: [spPropertyId; 1] = [0; 1]; if (*attachment).type_0 as c_uint == SP_ATTACHMENT_REGION as c_int as c_uint { - sequenceId = (*(*(attachment as *mut spRegionAttachment)).sequence).id; + sequenceId = (*(*attachment.cast::()).sequence).id; } if (*attachment).type_0 as c_uint == SP_ATTACHMENT_MESH as c_int as c_uint { - sequenceId = (*(*(attachment as *mut spMeshAttachment)).sequence).id; + sequenceId = (*(*attachment.cast::()).sequence).id; } ids[0 as c_int as usize] = (SP_PROPERTY_SEQUENCE as c_int as spPropertyId) << 32 as c_int | ((slotIndex << 16 as c_int | sequenceId) as c_uint & 0xffffffff as c_uint) as c_ulong; @@ -5505,7 +5541,7 @@ pub unsafe extern "C" fn spSequenceTimeline_create( ); (*self_0).slotIndex = slotIndex; (*self_0).attachment = attachment; - return self_0; + self_0 } #[no_mangle] pub unsafe extern "C" fn spSequenceTimeline_setFrame( @@ -5534,7 +5570,7 @@ pub unsafe extern "C" fn _spEventTimeline_apply( mut blend: spMixBlend, mut direction: spMixDirection, ) { - let mut self_0: *mut spEventTimeline = timeline as *mut spEventTimeline; + let mut self_0: *mut spEventTimeline = timeline.cast::(); let mut frames: *mut c_float = (*(*self_0).super_0.frames).items; let mut framesCount: c_int = (*(*self_0).super_0.frames).size; let mut i: c_int = 0; @@ -5574,31 +5610,32 @@ pub unsafe extern "C" fn _spEventTimeline_apply( } } while i < framesCount && time >= *frames.offset(i as isize) { - let ref mut fresh10 = *firedEvents.offset(*eventsCount as isize); - *fresh10 = *((*self_0).events).offset(i as isize); + let fresh7 = &mut (*firedEvents.offset(*eventsCount as isize)); + *fresh7 = *((*self_0).events).offset(i as isize); *eventsCount += 1; i += 1; } } #[no_mangle] pub unsafe extern "C" fn _spEventTimeline_dispose(mut timeline: *mut spTimeline) { - let mut self_0: *mut spEventTimeline = timeline as *mut spEventTimeline; + let mut self_0: *mut spEventTimeline = timeline.cast::(); let mut i: c_int = 0; i = 0 as c_int; while i < (*(*self_0).super_0.frames).size { spEvent_dispose(*((*self_0).events).offset(i as isize)); i += 1; } - _spFree((*self_0).events as *mut c_void); + _spFree((*self_0).events.cast::()); } #[no_mangle] pub unsafe extern "C" fn spEventTimeline_create(mut framesCount: c_int) -> *mut spEventTimeline { let mut self_0: *mut spEventTimeline = _spCalloc( 1 as c_int as size_t, ::core::mem::size_of::() as c_ulong, - b"spine.c\0" as *const u8 as *const c_char, - 2171 as c_int, - ) as *mut spEventTimeline; + (b"spine.c\0" as *const u8).cast::(), + 2073 as c_int, + ) + .cast::(); let mut ids: [spPropertyId; 1] = [0; 1]; ids[0 as c_int as usize] = (SP_PROPERTY_EVENT as c_int as spPropertyId) << 32 as c_int; _spTimeline_init( @@ -5625,14 +5662,14 @@ pub unsafe extern "C" fn spEventTimeline_create(mut framesCount: c_int) -> *mut ), None, ); - let ref mut fresh11 = *(&mut (*self_0).events as *mut *mut *mut spEvent); - *fresh11 = _spCalloc( + (*self_0).events = _spCalloc( framesCount as size_t, ::core::mem::size_of::<*mut spEvent>() as c_ulong, - b"spine.c\0" as *const u8 as *const c_char, - 2176 as c_int, - ) as *mut *mut spEvent; - return self_0; + (b"spine.c\0" as *const u8).cast::(), + 2078 as c_int, + ) + .cast::<*mut spEvent>(); + self_0 } #[no_mangle] pub unsafe extern "C" fn spEventTimeline_setFrame( @@ -5641,9 +5678,9 @@ pub unsafe extern "C" fn spEventTimeline_setFrame( mut event: *mut spEvent, ) { *((*(*self_0).super_0.frames).items).offset(frame as isize) = (*event).time; - _spFree(*((*self_0).events).offset(frame as isize) as *mut c_void); - let ref mut fresh12 = *((*self_0).events).offset(frame as isize); - *fresh12 = event; + _spFree((*((*self_0).events).offset(frame as isize)).cast::()); + let fresh8 = &mut (*((*self_0).events).offset(frame as isize)); + *fresh8 = event; } #[no_mangle] pub unsafe extern "C" fn _spDrawOrderTimeline_apply( @@ -5658,13 +5695,13 @@ pub unsafe extern "C" fn _spDrawOrderTimeline_apply( mut direction: spMixDirection, ) { let mut i: c_int = 0; - let mut drawOrderToSetupIndex: *const c_int = std::ptr::null(); - let mut self_0: *mut spDrawOrderTimeline = timeline as *mut spDrawOrderTimeline; + let mut drawOrderToSetupIndex: *const c_int = std::ptr::null::(); + let mut self_0: *mut spDrawOrderTimeline = timeline.cast::(); let mut frames: *mut c_float = (*(*self_0).super_0.frames).items; if direction as c_uint == SP_MIX_DIRECTION_OUT as c_int as c_uint { if blend as c_uint == SP_MIX_BLEND_SETUP as c_int as c_uint { spine_memcpy( - (*skeleton).drawOrder as *mut c_void, + (*skeleton).drawOrder.cast::(), (*skeleton).slots as *const c_void, ((*self_0).slotsCount as c_ulong) .wrapping_mul(::core::mem::size_of::<*mut spSlot>() as c_ulong), @@ -5677,7 +5714,7 @@ pub unsafe extern "C" fn _spDrawOrderTimeline_apply( || blend as c_uint == SP_MIX_BLEND_FIRST as c_int as c_uint { spine_memcpy( - (*skeleton).drawOrder as *mut c_void, + (*skeleton).drawOrder.cast::(), (*skeleton).slots as *const c_void, ((*self_0).slotsCount as c_ulong) .wrapping_mul(::core::mem::size_of::<*mut spSlot>() as c_ulong), @@ -5689,7 +5726,7 @@ pub unsafe extern "C" fn _spDrawOrderTimeline_apply( *((*self_0).drawOrders).offset(search((*self_0).super_0.frames, time) as isize); if drawOrderToSetupIndex.is_null() { spine_memcpy( - (*skeleton).drawOrder as *mut c_void, + (*skeleton).drawOrder.cast::(), (*skeleton).slots as *const c_void, ((*self_0).slotsCount as c_ulong) .wrapping_mul(::core::mem::size_of::<*mut spSlot>() as c_ulong), @@ -5697,8 +5734,8 @@ pub unsafe extern "C" fn _spDrawOrderTimeline_apply( } else { i = 0 as c_int; while i < (*self_0).slotsCount { - let ref mut fresh13 = *((*skeleton).drawOrder).offset(i as isize); - *fresh13 = + let fresh9 = &mut (*((*skeleton).drawOrder).offset(i as isize)); + *fresh9 = *((*skeleton).slots).offset(*drawOrderToSetupIndex.offset(i as isize) as isize); i += 1; } @@ -5706,14 +5743,14 @@ pub unsafe extern "C" fn _spDrawOrderTimeline_apply( } #[no_mangle] pub unsafe extern "C" fn _spDrawOrderTimeline_dispose(mut timeline: *mut spTimeline) { - let mut self_0: *mut spDrawOrderTimeline = timeline as *mut spDrawOrderTimeline; + let mut self_0: *mut spDrawOrderTimeline = timeline.cast::(); let mut i: c_int = 0; i = 0 as c_int; while i < (*(*self_0).super_0.frames).size { - _spFree(*((*self_0).drawOrders).offset(i as isize) as *mut c_void); + _spFree((*((*self_0).drawOrders).offset(i as isize)).cast::()); i += 1; } - _spFree((*self_0).drawOrders as *mut c_void); + _spFree((*self_0).drawOrders.cast::()); } #[no_mangle] pub unsafe extern "C" fn spDrawOrderTimeline_create( @@ -5723,9 +5760,10 @@ pub unsafe extern "C" fn spDrawOrderTimeline_create( let mut self_0: *mut spDrawOrderTimeline = _spCalloc( 1 as c_int as size_t, ::core::mem::size_of::() as c_ulong, - b"spine.c\0" as *const u8 as *const c_char, - 2233 as c_int, - ) as *mut spDrawOrderTimeline; + (b"spine.c\0" as *const u8).cast::(), + 2135 as c_int, + ) + .cast::(); let mut ids: [spPropertyId; 1] = [0; 1]; ids[0 as c_int as usize] = (SP_PROPERTY_DRAWORDER as c_int as spPropertyId) << 32 as c_int; _spTimeline_init( @@ -5752,15 +5790,15 @@ pub unsafe extern "C" fn spDrawOrderTimeline_create( ), None, ); - let ref mut fresh14 = *(&mut (*self_0).drawOrders as *mut *mut *mut c_int); - *fresh14 = _spCalloc( + (*self_0).drawOrders = _spCalloc( framesCount as size_t, ::core::mem::size_of::<*mut c_int>() as c_ulong, - b"spine.c\0" as *const u8 as *const c_char, - 2239 as c_int, - ) as *mut *mut c_int; - *(&mut (*self_0).slotsCount as *mut c_int) = slotsCount; - return self_0; + (b"spine.c\0" as *const u8).cast::(), + 2141 as c_int, + ) + .cast::<*mut c_int>(); + (*self_0).slotsCount = slotsCount; + self_0 } #[no_mangle] pub unsafe extern "C" fn spDrawOrderTimeline_setFrame( @@ -5770,27 +5808,110 @@ pub unsafe extern "C" fn spDrawOrderTimeline_setFrame( mut drawOrder: *const c_int, ) { *((*(*self_0).super_0.frames).items).offset(frame as isize) = time; - _spFree(*((*self_0).drawOrders).offset(frame as isize) as *mut c_void); + _spFree((*((*self_0).drawOrders).offset(frame as isize)).cast::()); if drawOrder.is_null() { - let ref mut fresh15 = *((*self_0).drawOrders).offset(frame as isize); - *fresh15 = std::ptr::null_mut(); + let fresh10 = &mut (*((*self_0).drawOrders).offset(frame as isize)); + *fresh10 = std::ptr::null_mut::(); } else { - let ref mut fresh16 = *((*self_0).drawOrders).offset(frame as isize); - *fresh16 = _spMalloc( + let fresh11 = &mut (*((*self_0).drawOrders).offset(frame as isize)); + *fresh11 = _spMalloc( (::core::mem::size_of::() as c_ulong) .wrapping_mul((*self_0).slotsCount as c_ulong), - b"spine.c\0" as *const u8 as *const c_char, - 2252 as c_int, - ) as *mut c_int; + (b"spine.c\0" as *const u8).cast::(), + 2154 as c_int, + ) + .cast::(); spine_memcpy( - *(&mut *((*self_0).drawOrders).offset(frame as isize) as *mut *mut c_int) - as *mut c_void, - drawOrder as *const c_void, + (*((*self_0).drawOrders).offset(frame as isize)).cast::(), + drawOrder.cast::(), ((*self_0).slotsCount as c_ulong) .wrapping_mul(::core::mem::size_of::() as c_ulong), ); }; } +#[no_mangle] +pub unsafe extern "C" fn _spInheritTimeline_apply( + mut timeline: *mut spTimeline, + mut skeleton: *mut spSkeleton, + mut _lastTime: c_float, + mut time: c_float, + mut _firedEvents: *mut *mut spEvent, + mut _eventsCount: *mut c_int, + mut _alpha: c_float, + mut blend: spMixBlend, + mut _direction: spMixDirection, +) { + let mut self_0: *mut spInheritTimeline = timeline.cast::(); + let mut bone: *mut spBone = *((*skeleton).bones).offset((*self_0).boneIndex as isize); + let mut frames: *mut c_float = (*(*self_0).super_0.frames).items; + if (*bone).active == 0 { + return; + } + if time < *frames.offset(0 as c_int as isize) { + if blend as c_uint == SP_MIX_BLEND_SETUP as c_int as c_uint + || blend as c_uint == SP_MIX_BLEND_FIRST as c_int as c_uint + { + (*bone).inherit = (*(*bone).data).inherit; + } + return; + } + let mut idx: c_int = search2((*self_0).super_0.frames, time, 2 as c_int) + 1 as c_int; + (*bone).inherit = *frames.offset(idx as isize) as spInherit; +} +#[no_mangle] +pub unsafe extern "C" fn _spInheritTimeline_dispose(mut _timeline: *mut spTimeline) {} +#[no_mangle] +pub unsafe extern "C" fn spInheritTimeline_create( + mut framesCount: c_int, + mut boneIndex: c_int, +) -> *mut spInheritTimeline { + let mut self_0: *mut spInheritTimeline = _spCalloc( + 1 as c_int as size_t, + ::core::mem::size_of::() as c_ulong, + (b"spine.c\0" as *const u8).cast::(), + 2188 as c_int, + ) + .cast::(); + let mut ids: [spPropertyId; 1] = [0; 1]; + ids[0 as c_int as usize] = (SP_PROPERTY_INHERIT as c_int as spPropertyId) << 32 as c_int; + _spTimeline_init( + &mut (*self_0).super_0, + framesCount, + 2 as c_int, + ids.as_mut_ptr(), + 1 as c_int, + SP_TIMELINE_INHERIT, + Some(_spInheritTimeline_dispose as unsafe extern "C" fn(*mut spTimeline) -> ()), + Some( + _spInheritTimeline_apply + as unsafe extern "C" fn( + *mut spTimeline, + *mut spSkeleton, + c_float, + c_float, + *mut *mut spEvent, + *mut c_int, + c_float, + spMixBlend, + spMixDirection, + ) -> (), + ), + None, + ); + (*self_0).boneIndex = boneIndex; + self_0 +} +#[no_mangle] +pub unsafe extern "C" fn spInheritTimeline_setFrame( + mut self_0: *mut spInheritTimeline, + mut frame: c_int, + mut time: c_float, + mut inherit: spInherit, +) { + frame *= 2 as c_int; + *((*(*self_0).super_0.frames).items).offset(frame as isize) = time; + *((*(*self_0).super_0.frames).items).offset((frame + 1 as c_int) as isize) = inherit as c_float; +} static mut IKCONSTRAINT_ENTRIES: c_int = 6 as c_int; static mut IKCONSTRAINT_MIX: c_int = 1 as c_int; static mut IKCONSTRAINT_SOFTNESS: c_int = 2 as c_int; @@ -5814,8 +5935,8 @@ pub unsafe extern "C" fn _spIkConstraintTimeline_apply( let mut mix: c_float = 0.; let mut softness: c_float = 0.; let mut t: c_float = 0.; - let mut constraint: *mut spIkConstraint = std::ptr::null_mut(); - let mut self_0: *mut spIkConstraintTimeline = timeline as *mut spIkConstraintTimeline; + let mut constraint: *mut spIkConstraint = std::ptr::null_mut::(); + let mut self_0: *mut spIkConstraintTimeline = timeline.cast::(); let mut frames: *mut c_float = (*(*self_0).super_0.super_0.frames).items; let mut curves: *mut c_float = (*(*self_0).super_0.curves).items; constraint = *((*skeleton).ikConstraints).offset((*self_0).ikConstraintIndex as isize); @@ -5918,9 +6039,10 @@ pub unsafe extern "C" fn spIkConstraintTimeline_create( let mut timeline: *mut spIkConstraintTimeline = _spCalloc( 1 as c_int as size_t, ::core::mem::size_of::() as c_ulong, - b"spine.c\0" as *const u8 as *const c_char, - 2349 as c_int, - ) as *mut spIkConstraintTimeline; + (b"spine.c\0" as *const u8).cast::(), + 2298 as c_int, + ) + .cast::(); let mut ids: [spPropertyId; 1] = [0; 1]; ids[0 as c_int as usize] = (SP_PROPERTY_IKCONSTRAINT as c_int as spPropertyId) << 32 as c_int | ikConstraintIndex as c_ulong; @@ -5966,7 +6088,7 @@ pub unsafe extern "C" fn spIkConstraintTimeline_create( ), ); (*timeline).ikConstraintIndex = ikConstraintIndex; - return timeline; + timeline } #[no_mangle] pub unsafe extern "C" fn spIkConstraintTimeline_setFrame( @@ -6021,12 +6143,13 @@ pub unsafe extern "C" fn _spTransformConstraintTimeline_apply( let mut scaleY: c_float = 0.; let mut shearY: c_float = 0.; let mut t: c_float = 0.; - let mut constraint: *mut spTransformConstraint = std::ptr::null_mut(); + let mut constraint: *mut spTransformConstraint = std::ptr::null_mut::(); let mut self_0: *mut spTransformConstraintTimeline = - timeline as *mut spTransformConstraintTimeline; - let mut frames: *mut c_float = std::ptr::null_mut(); - let mut curves: *mut c_float = std::ptr::null_mut(); - let mut data: *mut spTransformConstraintData = std::ptr::null_mut(); + timeline.cast::(); + let mut frames: *mut c_float = std::ptr::null_mut::(); + let mut curves: *mut c_float = std::ptr::null_mut::(); + let mut data: *mut spTransformConstraintData = + std::ptr::null_mut::(); constraint = *((*skeleton).transformConstraints).offset((*self_0).transformConstraintIndex as isize); if (*constraint).active == 0 { @@ -6178,10 +6301,10 @@ pub unsafe extern "C" fn spTransformConstraintTimeline_create( let mut timeline: *mut spTransformConstraintTimeline = _spCalloc( 1 as c_int as size_t, ::core::mem::size_of::() as c_ulong, - b"spine.c\0" as *const u8 as *const c_char, - 2490 as c_int, + (b"spine.c\0" as *const u8).cast::(), + 2439 as c_int, ) - as *mut spTransformConstraintTimeline; + .cast::(); let mut ids: [spPropertyId; 1] = [0; 1]; ids[0 as c_int as usize] = (SP_PROPERTY_TRANSFORMCONSTRAINT as c_int as spPropertyId) << 32 as c_int @@ -6228,7 +6351,7 @@ pub unsafe extern "C" fn spTransformConstraintTimeline_create( ), ); (*timeline).transformConstraintIndex = transformConstraintIndex; - return timeline; + timeline } #[no_mangle] pub unsafe extern "C" fn spTransformConstraintTimeline_setFrame( @@ -6266,37 +6389,20 @@ pub unsafe extern "C" fn _spPathConstraintPositionTimeline_apply( mut blend: spMixBlend, mut _direction: spMixDirection, ) { - let mut position: c_float = 0.; - let mut constraint: *mut spPathConstraint = std::ptr::null_mut(); let mut self_0: *mut spPathConstraintPositionTimeline = - timeline as *mut spPathConstraintPositionTimeline; - let mut frames: *mut c_float = std::ptr::null_mut(); - constraint = *((*skeleton).pathConstraints).offset((*self_0).pathConstraintIndex as isize); - if (*constraint).active == 0 { - return; - } - frames = (*(*self_0).super_0.super_0.frames).items; - if time < *frames.offset(0 as c_int as isize) { - match blend as c_uint { - 0 => { - (*constraint).position = (*(*constraint).data).position; - return; - } - 1 => { - (*constraint).position += - ((*(*constraint).data).position - (*constraint).position) * alpha; - return; - } - _ => return, - } + timeline.cast::(); + let mut constraint: *mut spPathConstraint = + *((*skeleton).pathConstraints).offset((*self_0).pathConstraintIndex as isize); + if (*constraint).active != 0 { + (*constraint).position = spCurveTimeline1_getAbsoluteValue( + &mut (*self_0).super_0, + time, + alpha, + blend, + (*constraint).position, + (*(*constraint).data).position, + ); } - position = spCurveTimeline1_getCurveValue(&mut (*self_0).super_0, time); - if blend as c_uint == SP_MIX_BLEND_SETUP as c_int as c_uint { - (*constraint).position = - (*(*constraint).data).position + (position - (*(*constraint).data).position) * alpha; - } else { - (*constraint).position += (position - (*constraint).position) * alpha; - }; } #[no_mangle] pub unsafe extern "C" fn spPathConstraintPositionTimeline_create( @@ -6307,10 +6413,10 @@ pub unsafe extern "C" fn spPathConstraintPositionTimeline_create( let mut timeline: *mut spPathConstraintPositionTimeline = _spCalloc( 1 as c_int as size_t, ::core::mem::size_of::() as c_ulong, - b"spine.c\0" as *const u8 as *const c_char, - 2558 as c_int, + (b"spine.c\0" as *const u8).cast::(), + 2481 as c_int, ) - as *mut spPathConstraintPositionTimeline; + .cast::(); let mut ids: [spPropertyId; 1] = [0; 1]; ids[0 as c_int as usize] = (SP_PROPERTY_PATHCONSTRAINT_POSITION as c_int as spPropertyId) << 32 as c_int @@ -6357,7 +6463,7 @@ pub unsafe extern "C" fn spPathConstraintPositionTimeline_create( ), ); (*timeline).pathConstraintIndex = pathConstraintIndex; - return timeline; + timeline } #[no_mangle] pub unsafe extern "C" fn spPathConstraintPositionTimeline_setFrame( @@ -6385,37 +6491,20 @@ pub unsafe extern "C" fn _spPathConstraintSpacingTimeline_apply( mut blend: spMixBlend, mut _direction: spMixDirection, ) { - let mut spacing: c_float = 0.; - let mut constraint: *mut spPathConstraint = std::ptr::null_mut(); let mut self_0: *mut spPathConstraintSpacingTimeline = - timeline as *mut spPathConstraintSpacingTimeline; - let mut frames: *mut c_float = std::ptr::null_mut(); - constraint = *((*skeleton).pathConstraints).offset((*self_0).pathConstraintIndex as isize); - if (*constraint).active == 0 { - return; - } - frames = (*(*self_0).super_0.super_0.frames).items; - if time < *frames.offset(0 as c_int as isize) { - match blend as c_uint { - 0 => { - (*constraint).spacing = (*(*constraint).data).spacing; - return; - } - 1 => { - (*constraint).spacing += - ((*(*constraint).data).spacing - (*constraint).spacing) * alpha; - return; - } - _ => return, - } + timeline.cast::(); + let mut constraint: *mut spPathConstraint = + *((*skeleton).pathConstraints).offset((*self_0).pathConstraintIndex as isize); + if (*constraint).active != 0 { + (*constraint).spacing = spCurveTimeline1_getAbsoluteValue( + &mut (*self_0).super_0, + time, + alpha, + blend, + (*constraint).spacing, + (*(*constraint).data).spacing, + ); } - spacing = spCurveTimeline1_getCurveValue(&mut (*self_0).super_0, time); - if blend as c_uint == SP_MIX_BLEND_SETUP as c_int as c_uint { - (*constraint).spacing = - (*(*constraint).data).spacing + (spacing - (*(*constraint).data).spacing) * alpha; - } else { - (*constraint).spacing += (spacing - (*constraint).spacing) * alpha; - }; } #[no_mangle] pub unsafe extern "C" fn spPathConstraintSpacingTimeline_create( @@ -6426,10 +6515,10 @@ pub unsafe extern "C" fn spPathConstraintSpacingTimeline_create( let mut timeline: *mut spPathConstraintSpacingTimeline = _spCalloc( 1 as c_int as size_t, ::core::mem::size_of::() as c_ulong, - b"spine.c\0" as *const u8 as *const c_char, - 2620 as c_int, + (b"spine.c\0" as *const u8).cast::(), + 2517 as c_int, ) - as *mut spPathConstraintSpacingTimeline; + .cast::(); let mut ids: [spPropertyId; 1] = [0; 1]; ids[0 as c_int as usize] = (SP_PROPERTY_PATHCONSTRAINT_SPACING as c_int as spPropertyId) << 32 as c_int @@ -6476,7 +6565,7 @@ pub unsafe extern "C" fn spPathConstraintSpacingTimeline_create( ), ); (*timeline).pathConstraintIndex = pathConstraintIndex; - return timeline; + timeline } #[no_mangle] pub unsafe extern "C" fn spPathConstraintSpacingTimeline_setFrame( @@ -6512,10 +6601,11 @@ pub unsafe extern "C" fn _spPathConstraintMixTimeline_apply( let mut x: c_float = 0.; let mut y: c_float = 0.; let mut t: c_float = 0.; - let mut constraint: *mut spPathConstraint = std::ptr::null_mut(); - let mut self_0: *mut spPathConstraintMixTimeline = timeline as *mut spPathConstraintMixTimeline; - let mut frames: *mut c_float = std::ptr::null_mut(); - let mut curves: *mut c_float = std::ptr::null_mut(); + let mut constraint: *mut spPathConstraint = std::ptr::null_mut::(); + let mut self_0: *mut spPathConstraintMixTimeline = + timeline.cast::(); + let mut frames: *mut c_float = std::ptr::null_mut::(); + let mut curves: *mut c_float = std::ptr::null_mut::(); constraint = *((*skeleton).pathConstraints).offset((*self_0).pathConstraintIndex as isize); if (*constraint).active == 0 { return; @@ -6614,9 +6704,10 @@ pub unsafe extern "C" fn spPathConstraintMixTimeline_create( let mut timeline: *mut spPathConstraintMixTimeline = _spCalloc( 1 as c_int as size_t, ::core::mem::size_of::() as c_ulong, - b"spine.c\0" as *const u8 as *const c_char, - 2726 as c_int, - ) as *mut spPathConstraintMixTimeline; + (b"spine.c\0" as *const u8).cast::(), + 2623 as c_int, + ) + .cast::(); let mut ids: [spPropertyId; 1] = [0; 1]; ids[0 as c_int as usize] = (SP_PROPERTY_PATHCONSTRAINT_MIX as c_int as spPropertyId) << 32 as c_int @@ -6663,7 +6754,7 @@ pub unsafe extern "C" fn spPathConstraintMixTimeline_create( ), ); (*timeline).pathConstraintIndex = pathConstraintIndex; - return timeline; + timeline } #[no_mangle] pub unsafe extern "C" fn spPathConstraintMixTimeline_setFrame( @@ -6682,100 +6773,462 @@ pub unsafe extern "C" fn spPathConstraintMixTimeline_setFrame( *frames.offset((frame + PATHCONSTRAINTMIX_Y) as isize) = mixY; } #[no_mangle] -pub unsafe extern "C" fn spTrackEntryArray_create( - mut initialCapacity: c_int, -) -> *mut spTrackEntryArray { - let mut array: *mut spTrackEntryArray = _spCalloc( - 1 as c_int as size_t, - ::core::mem::size_of::() as c_ulong, - b"spine.c\0" as *const u8 as *const c_char, - 2787 as c_int, - ) as *mut spTrackEntryArray; - (*array).size = 0 as c_int; - (*array).capacity = initialCapacity; - (*array).items = _spCalloc( - initialCapacity as size_t, - ::core::mem::size_of::<*mut spTrackEntry>() as c_ulong, - b"spine.c\0" as *const u8 as *const c_char, - 2787 as c_int, - ) as *mut *mut spTrackEntry; - return array; -} -#[no_mangle] -pub unsafe extern "C" fn spTrackEntryArray_dispose(mut self_0: *mut spTrackEntryArray) { - _spFree((*self_0).items as *mut c_void); - _spFree(self_0 as *mut c_void); +pub unsafe extern "C" fn _spPhysicsConstraintTimeline_global( + mut data: *mut spPhysicsConstraintData, + mut type_0: spTimelineType, +) -> c_int { + match type_0 as c_uint { + 19 => (*data).inertiaGlobal, + 20 => (*data).strengthGlobal, + 21 => (*data).dampingGlobal, + 22 => (*data).massGlobal, + 23 => (*data).windGlobal, + 24 => (*data).gravityGlobal, + 25 => (*data).mixGlobal, + _ => 0 as c_int, + } } #[no_mangle] -pub unsafe extern "C" fn spTrackEntryArray_clear(mut self_0: *mut spTrackEntryArray) { - (*self_0).size = 0 as c_int; +pub unsafe extern "C" fn _spPhysicsConstraintTimeline_set( + mut constraint: *mut spPhysicsConstraint, + mut type_0: spTimelineType, + mut value: c_float, +) { + match type_0 as c_uint { + 19 => { + (*constraint).inertia = value; + } + 20 => { + (*constraint).strength = value; + } + 21 => { + (*constraint).damping = value; + } + 22 => { + (*constraint).massInverse = value; + } + 23 => { + (*constraint).wind = value; + } + 24 => { + (*constraint).gravity = value; + } + 25 => { + (*constraint).mix = value; + } + _ => {} + }; } #[no_mangle] -pub unsafe extern "C" fn spTrackEntryArray_setSize( - mut self_0: *mut spTrackEntryArray, - mut newSize: c_int, -) -> *mut spTrackEntryArray { - (*self_0).size = newSize; - if (*self_0).capacity < newSize { - (*self_0).capacity = if 8 as c_int > ((*self_0).size as c_float * 1.75f32) as c_int { - 8 as c_int - } else { - ((*self_0).size as c_float * 1.75f32) as c_int - }; - (*self_0).items = _spRealloc( - (*self_0).items as *mut c_void, - (::core::mem::size_of::<*mut spTrackEntry>() as c_ulong) - .wrapping_mul((*self_0).capacity as c_ulong), - ) as *mut *mut spTrackEntry; +pub unsafe extern "C" fn _spPhysicsConstraintTimeline_get( + mut constraint: *mut spPhysicsConstraint, + mut type_0: spTimelineType, +) -> c_float { + match type_0 as c_uint { + 19 => (*constraint).inertia, + 20 => (*constraint).strength, + 21 => (*constraint).damping, + 22 => (*constraint).massInverse, + 23 => (*constraint).wind, + 24 => (*constraint).gravity, + 25 => (*constraint).mix, + _ => 0 as c_int as c_float, } - return self_0; } #[no_mangle] -pub unsafe extern "C" fn spTrackEntryArray_ensureCapacity( - mut self_0: *mut spTrackEntryArray, - mut newCapacity: c_int, -) { - if (*self_0).capacity >= newCapacity { - return; +pub unsafe extern "C" fn _spPhysicsConstraintTimeline_setup( + mut constraint: *mut spPhysicsConstraint, + mut type_0: spTimelineType, +) -> c_float { + match type_0 as c_uint { + 19 => (*(*constraint).data).inertia, + 20 => (*(*constraint).data).strength, + 21 => (*(*constraint).data).damping, + 22 => (*(*constraint).data).massInverse, + 23 => (*(*constraint).data).wind, + 24 => (*(*constraint).data).gravity, + 25 => (*(*constraint).data).mix, + _ => 0 as c_int as c_float, } - (*self_0).capacity = newCapacity; - (*self_0).items = _spRealloc( - (*self_0).items as *mut c_void, - (::core::mem::size_of::<*mut spTrackEntry>() as c_ulong) - .wrapping_mul((*self_0).capacity as c_ulong), - ) as *mut *mut spTrackEntry; } #[no_mangle] -pub unsafe extern "C" fn spTrackEntryArray_add( - mut self_0: *mut spTrackEntryArray, - mut value: *mut spTrackEntry, +pub unsafe extern "C" fn _spPhysicsConstraintTimeline_apply( + mut timeline: *mut spTimeline, + mut skeleton: *mut spSkeleton, + mut _lastTime: c_float, + mut time: c_float, + mut _firedEvents: *mut *mut spEvent, + mut _eventsCount: *mut c_int, + mut alpha: c_float, + mut blend: spMixBlend, + mut _direction: spMixDirection, ) { - if (*self_0).size == (*self_0).capacity { - (*self_0).capacity = if 8 as c_int > ((*self_0).size as c_float * 1.75f32) as c_int { - 8 as c_int + let mut self_0: *mut spPhysicsConstraintTimeline = + timeline.cast::(); + let mut type_0: spTimelineType = (*self_0).super_0.super_0.type_0; + let mut frames: *mut c_float = (*(*self_0).super_0.super_0.frames).items; + if (*self_0).physicsConstraintIndex == -(1 as c_int) { + let mut value: c_float = if time >= *frames.offset(0 as c_int as isize) { + spCurveTimeline1_getCurveValue(&mut (*self_0).super_0, time) } else { - ((*self_0).size as c_float * 1.75f32) as c_int + 0 as c_int as c_float }; - (*self_0).items = _spRealloc( - (*self_0).items as *mut c_void, - (::core::mem::size_of::<*mut spTrackEntry>() as c_ulong) - .wrapping_mul((*self_0).capacity as c_ulong), - ) as *mut *mut spTrackEntry; - } - let fresh17 = (*self_0).size; - (*self_0).size = (*self_0).size + 1; - let ref mut fresh18 = *((*self_0).items).offset(fresh17 as isize); - *fresh18 = value; -} -#[no_mangle] -pub unsafe extern "C" fn spTrackEntryArray_addAll( - mut self_0: *mut spTrackEntryArray, - mut other: *mut spTrackEntryArray, -) { - let mut i: c_int = 0 as c_int; - while i < (*other).size { - spTrackEntryArray_add(self_0, *((*other).items).offset(i as isize)); - i += 1; + let mut physicsConstraints: *mut *mut spPhysicsConstraint = (*skeleton).physicsConstraints; + let mut i: c_int = 0 as c_int; + while i < (*skeleton).physicsConstraintsCount { + let mut constraint: *mut spPhysicsConstraint = *physicsConstraints.offset(i as isize); + if (*constraint).active != 0 + && _spPhysicsConstraintTimeline_global((*constraint).data, type_0) != 0 + { + _spPhysicsConstraintTimeline_set( + constraint, + type_0, + spCurveTimeline1_getAbsoluteValue2( + &mut (*self_0).super_0, + time, + alpha, + blend, + _spPhysicsConstraintTimeline_get(constraint, type_0), + _spPhysicsConstraintTimeline_setup(constraint, type_0), + value, + ), + ); + } + i += 1; + } + } else { + let mut constraint_0: *mut spPhysicsConstraint = + *((*skeleton).physicsConstraints).offset((*self_0).physicsConstraintIndex as isize); + if (*constraint_0).active != 0 { + _spPhysicsConstraintTimeline_set( + constraint_0, + type_0, + spCurveTimeline1_getAbsoluteValue( + &mut (*self_0).super_0, + time, + alpha, + blend, + _spPhysicsConstraintTimeline_get(constraint_0, type_0), + _spPhysicsConstraintTimeline_setup(constraint_0, type_0), + ), + ); + } + }; +} +#[no_mangle] +pub unsafe extern "C" fn spPhysicsConstraintTimeline_create( + mut frameCount: c_int, + mut bezierCount: c_int, + mut physicsConstraintIndex: c_int, + mut type_0: spTimelineType, +) -> *mut spPhysicsConstraintTimeline { + let mut timeline: *mut spPhysicsConstraintTimeline = _spCalloc( + 1 as c_int as size_t, + ::core::mem::size_of::() as c_ulong, + (b"spine.c\0" as *const u8).cast::(), + 2767 as c_int, + ) + .cast::(); + let mut ids: [spPropertyId; 1] = [0; 1]; + let mut id: spPropertyId = 0; + match type_0 as c_uint { + 19 => { + id = SP_PROPERTY_PHYSICSCONSTRAINT_INERTIA as c_int as spPropertyId; + } + 20 => { + id = SP_PROPERTY_PHYSICSCONSTRAINT_STRENGTH as c_int as spPropertyId; + } + 21 => { + id = SP_PROPERTY_PHYSICSCONSTRAINT_DAMPING as c_int as spPropertyId; + } + 22 => { + id = SP_PROPERTY_PHYSICSCONSTRAINT_MASS as c_int as spPropertyId; + } + 23 => { + id = SP_PROPERTY_PHYSICSCONSTRAINT_WIND as c_int as spPropertyId; + } + 24 => { + id = SP_PROPERTY_PHYSICSCONSTRAINT_GRAVITY as c_int as spPropertyId; + } + 25 => { + id = SP_PROPERTY_PHYSICSCONSTRAINT_MIX as c_int as spPropertyId; + } + _ => { + id = SP_PROPERTY_PHYSICSCONSTRAINT_INERTIA as c_int as spPropertyId; + } + } + ids[0 as c_int as usize] = id << 32 as c_int | physicsConstraintIndex as c_ulong; + _spCurveTimeline_init( + &mut (*timeline).super_0, + frameCount, + 2 as c_int, + bezierCount, + ids.as_mut_ptr(), + 1 as c_int, + type_0, + Some(_spCurveTimeline_dispose as unsafe extern "C" fn(*mut spTimeline) -> ()), + Some( + _spPhysicsConstraintTimeline_apply + as unsafe extern "C" fn( + *mut spTimeline, + *mut spSkeleton, + c_float, + c_float, + *mut *mut spEvent, + *mut c_int, + c_float, + spMixBlend, + spMixDirection, + ) -> (), + ), + Some( + _spCurveTimeline_setBezier + as unsafe extern "C" fn( + *mut spTimeline, + c_int, + c_int, + c_float, + c_float, + c_float, + c_float, + c_float, + c_float, + c_float, + c_float, + c_float, + ) -> (), + ), + ); + (*timeline).physicsConstraintIndex = physicsConstraintIndex; + timeline +} +#[no_mangle] +pub unsafe extern "C" fn spPhysicsConstraintTimeline_setFrame( + mut self_0: *mut spPhysicsConstraintTimeline, + mut frame: c_int, + mut time: c_float, + mut value: c_float, +) { + spCurveTimeline1_setFrame(&mut (*self_0).super_0, frame, time, value); +} +#[no_mangle] +pub unsafe extern "C" fn _spPhysicsConstraintResetTimeline_apply( + mut timeline: *mut spTimeline, + mut skeleton: *mut spSkeleton, + mut lastTime: c_float, + mut time: c_float, + mut _firedEvents: *mut *mut spEvent, + mut _eventsCount: *mut c_int, + mut alpha: c_float, + mut blend: spMixBlend, + mut direction: spMixDirection, +) { + let mut self_0: *mut spPhysicsConstraintResetTimeline = + timeline.cast::(); + let mut constraint: *mut spPhysicsConstraint = std::ptr::null_mut::(); + if (*self_0).physicsConstraintIndex != -(1 as c_int) { + constraint = + *((*skeleton).physicsConstraints).offset((*self_0).physicsConstraintIndex as isize); + if (*constraint).active == 0 { + return; + } + } + let mut frames: *mut c_float = (*(*self_0).super_0.frames).items; + if lastTime > time { + _spPhysicsConstraintResetTimeline_apply( + &mut (*self_0).super_0, + skeleton, + lastTime, + 0x7fffffff as c_int as c_float, + std::ptr::null_mut::<*mut spEvent>(), + std::ptr::null_mut::(), + alpha, + blend, + direction, + ); + lastTime = -(1 as c_int) as c_float; + } else if lastTime >= *frames.offset(((*self_0).super_0.frameCount - 1 as c_int) as isize) { + return; + } + if time < *frames.offset(0 as c_int as isize) { + return; + } + if lastTime < *frames.offset(0 as c_int as isize) + || time + >= *frames.offset((search((*self_0).super_0.frames, lastTime) + 1 as c_int) as isize) + { + if !constraint.is_null() { + spPhysicsConstraint_reset(constraint); + } else { + let mut physicsConstraints: *mut *mut spPhysicsConstraint = + (*skeleton).physicsConstraints; + let mut i: c_int = 0 as c_int; + while i < (*skeleton).physicsConstraintsCount { + constraint = *physicsConstraints.offset(i as isize); + if (*constraint).active != 0 { + spPhysicsConstraint_reset(constraint); + } + i += 1; + } + } + } +} +#[no_mangle] +pub unsafe extern "C" fn _spPhysicsConstraintResetTimeline_dispose(mut _timeline: *mut spTimeline) { +} +#[no_mangle] +pub unsafe extern "C" fn spPhysicsConstraintResetTimeline_create( + mut framesCount: c_int, + mut physicsConstraintIndex: c_int, +) -> *mut spPhysicsConstraintResetTimeline { + let mut self_0: *mut spPhysicsConstraintResetTimeline = _spCalloc( + 1 as c_int as size_t, + ::core::mem::size_of::() as c_ulong, + (b"spine.c\0" as *const u8).cast::(), + 2851 as c_int, + ) + .cast::(); + let mut ids: [spPropertyId; 1] = [0; 1]; + ids[0 as c_int as usize] = + (SP_PROPERTY_PHYSICSCONSTRAINT_RESET as c_int as spPropertyId) << 32 as c_int; + _spTimeline_init( + &mut (*self_0).super_0, + framesCount, + 1 as c_int, + ids.as_mut_ptr(), + 1 as c_int, + SP_TIMELINE_PHYSICSCONSTRAINT_RESET, + Some( + _spPhysicsConstraintResetTimeline_dispose + as unsafe extern "C" fn(*mut spTimeline) -> (), + ), + Some( + _spPhysicsConstraintResetTimeline_apply + as unsafe extern "C" fn( + *mut spTimeline, + *mut spSkeleton, + c_float, + c_float, + *mut *mut spEvent, + *mut c_int, + c_float, + spMixBlend, + spMixDirection, + ) -> (), + ), + None, + ); + (*self_0).physicsConstraintIndex = physicsConstraintIndex; + self_0 +} +#[no_mangle] +pub unsafe extern "C" fn spPhysicsConstraintResetTimeline_setFrame( + mut self_0: *mut spPhysicsConstraintResetTimeline, + mut frame: c_int, + mut time: c_float, +) { + *((*(*self_0).super_0.frames).items).offset(frame as isize) = time; +} +#[no_mangle] +pub unsafe extern "C" fn spTrackEntryArray_create( + mut initialCapacity: c_int, +) -> *mut spTrackEntryArray { + let mut array: *mut spTrackEntryArray = _spCalloc( + 1 as c_int as size_t, + ::core::mem::size_of::() as c_ulong, + (b"spine.c\0" as *const u8).cast::(), + 2907 as c_int, + ) + .cast::(); + (*array).size = 0 as c_int; + (*array).capacity = initialCapacity; + (*array).items = _spCalloc( + initialCapacity as size_t, + ::core::mem::size_of::<*mut spTrackEntry>() as c_ulong, + (b"spine.c\0" as *const u8).cast::(), + 2907 as c_int, + ) + .cast::<*mut spTrackEntry>(); + array +} +#[no_mangle] +pub unsafe extern "C" fn spTrackEntryArray_dispose(mut self_0: *mut spTrackEntryArray) { + _spFree((*self_0).items.cast::()); + _spFree(self_0.cast::()); +} +#[no_mangle] +pub unsafe extern "C" fn spTrackEntryArray_clear(mut self_0: *mut spTrackEntryArray) { + (*self_0).size = 0 as c_int; +} +#[no_mangle] +pub unsafe extern "C" fn spTrackEntryArray_setSize( + mut self_0: *mut spTrackEntryArray, + mut newSize: c_int, +) -> *mut spTrackEntryArray { + (*self_0).size = newSize; + if (*self_0).capacity < newSize { + (*self_0).capacity = if 8 as c_int > ((*self_0).size as c_float * 1.75f32) as c_int { + 8 as c_int + } else { + ((*self_0).size as c_float * 1.75f32) as c_int + }; + (*self_0).items = _spRealloc( + (*self_0).items.cast::(), + (::core::mem::size_of::<*mut spTrackEntry>() as c_ulong) + .wrapping_mul((*self_0).capacity as c_ulong), + ) + .cast::<*mut spTrackEntry>(); + } + self_0 +} +#[no_mangle] +pub unsafe extern "C" fn spTrackEntryArray_ensureCapacity( + mut self_0: *mut spTrackEntryArray, + mut newCapacity: c_int, +) { + if (*self_0).capacity >= newCapacity { + return; + } + (*self_0).capacity = newCapacity; + (*self_0).items = _spRealloc( + (*self_0).items.cast::(), + (::core::mem::size_of::<*mut spTrackEntry>() as c_ulong) + .wrapping_mul((*self_0).capacity as c_ulong), + ) + .cast::<*mut spTrackEntry>(); +} +#[no_mangle] +pub unsafe extern "C" fn spTrackEntryArray_add( + mut self_0: *mut spTrackEntryArray, + mut value: *mut spTrackEntry, +) { + if (*self_0).size == (*self_0).capacity { + (*self_0).capacity = if 8 as c_int > ((*self_0).size as c_float * 1.75f32) as c_int { + 8 as c_int + } else { + ((*self_0).size as c_float * 1.75f32) as c_int + }; + (*self_0).items = _spRealloc( + (*self_0).items.cast::(), + (::core::mem::size_of::<*mut spTrackEntry>() as c_ulong) + .wrapping_mul((*self_0).capacity as c_ulong), + ) + .cast::<*mut spTrackEntry>(); + } + let fresh12 = (*self_0).size; + (*self_0).size += 1; + let fresh13 = &mut (*((*self_0).items).offset(fresh12 as isize)); + *fresh13 = value; +} +#[no_mangle] +pub unsafe extern "C" fn spTrackEntryArray_addAll( + mut self_0: *mut spTrackEntryArray, + mut other: *mut spTrackEntryArray, +) { + let mut i: c_int = 0 as c_int; + while i < (*other).size { + spTrackEntryArray_add(self_0, *((*other).items).offset(i as isize)); + i += 1; } } #[no_mangle] @@ -6799,7 +7252,7 @@ pub unsafe extern "C" fn spTrackEntryArray_removeAt( ) { (*self_0).size -= 1; spine_memmove( - ((*self_0).items).offset(index as isize) as *mut c_void, + ((*self_0).items).offset(index as isize).cast::(), ((*self_0).items) .offset(index as isize) .offset(1 as c_int as isize) as *const c_void, @@ -6823,7 +7276,7 @@ pub unsafe extern "C" fn spTrackEntryArray_contains( } i += 1; } - return 0 as c_int; + 0 as c_int } #[no_mangle] pub unsafe extern "C" fn spTrackEntryArray_pop( @@ -6831,21 +7284,21 @@ pub unsafe extern "C" fn spTrackEntryArray_pop( ) -> *mut spTrackEntry { (*self_0).size -= 1; let mut item: *mut spTrackEntry = *((*self_0).items).offset((*self_0).size as isize); - return item; + item } #[no_mangle] pub unsafe extern "C" fn spTrackEntryArray_peek( mut self_0: *mut spTrackEntryArray, ) -> *mut spTrackEntry { - return *((*self_0).items).offset(((*self_0).size - 1 as c_int) as isize); + *((*self_0).items).offset(((*self_0).size - 1 as c_int) as isize) } -static mut SP_EMPTY_ANIMATION: *mut spAnimation = std::ptr::null_mut(); +static mut SP_EMPTY_ANIMATION: *mut spAnimation = (0 as *const spAnimation).cast_mut(); #[no_mangle] pub unsafe extern "C" fn spAnimationState_disposeStatics() { if !SP_EMPTY_ANIMATION.is_null() { spAnimation_dispose(SP_EMPTY_ANIMATION); } - SP_EMPTY_ANIMATION = std::ptr::null_mut(); + SP_EMPTY_ANIMATION = std::ptr::null_mut::(); } #[no_mangle] pub unsafe extern "C" fn _spEventQueue_create( @@ -6854,25 +7307,27 @@ pub unsafe extern "C" fn _spEventQueue_create( let mut self_0: *mut _spEventQueue = _spCalloc( 1 as c_int as size_t, ::core::mem::size_of::<_spEventQueue>() as c_ulong, - b"spine.c\0" as *const u8 as *const c_char, - 2835 as c_int, - ) as *mut _spEventQueue; + (b"spine.c\0" as *const u8).cast::(), + 2955 as c_int, + ) + .cast::<_spEventQueue>(); (*self_0).state = state; (*self_0).objectsCount = 0 as c_int; (*self_0).objectsCapacity = 16 as c_int; (*self_0).objects = _spCalloc( (*self_0).objectsCapacity as size_t, ::core::mem::size_of::<_spEventQueueItem>() as c_ulong, - b"spine.c\0" as *const u8 as *const c_char, - 2839 as c_int, - ) as *mut _spEventQueueItem; + (b"spine.c\0" as *const u8).cast::(), + 2959 as c_int, + ) + .cast::<_spEventQueueItem>(); (*self_0).drainDisabled = 0 as c_int; - return self_0; + self_0 } #[no_mangle] pub unsafe extern "C" fn _spEventQueue_free(mut self_0: *mut _spEventQueue) { - _spFree((*self_0).objects as *mut c_void); - _spFree(self_0 as *mut c_void); + _spFree((*self_0).objects.cast::()); + _spFree(self_0.cast::()); } #[no_mangle] pub unsafe extern "C" fn _spEventQueue_ensureCapacity( @@ -6880,21 +7335,22 @@ pub unsafe extern "C" fn _spEventQueue_ensureCapacity( mut newElements: c_int, ) { if (*self_0).objectsCount + newElements > (*self_0).objectsCapacity { - let mut newObjects: *mut _spEventQueueItem = std::ptr::null_mut(); + let mut newObjects: *mut _spEventQueueItem = std::ptr::null_mut::<_spEventQueueItem>(); (*self_0).objectsCapacity <<= 1 as c_int; newObjects = _spCalloc( (*self_0).objectsCapacity as size_t, ::core::mem::size_of::<_spEventQueueItem>() as c_ulong, - b"spine.c\0" as *const u8 as *const c_char, - 2853 as c_int, - ) as *mut _spEventQueueItem; + (b"spine.c\0" as *const u8).cast::(), + 2973 as c_int, + ) + .cast::<_spEventQueueItem>(); spine_memcpy( - newObjects as *mut c_void, + newObjects.cast::(), (*self_0).objects as *const c_void, (::core::mem::size_of::<_spEventQueueItem>() as c_ulong) .wrapping_mul((*self_0).objectsCount as c_ulong), ); - _spFree((*self_0).objects as *mut c_void); + _spFree((*self_0).objects.cast::()); (*self_0).objects = newObjects; } } @@ -6904,9 +7360,9 @@ pub unsafe extern "C" fn _spEventQueue_addType( mut type_0: spEventType, ) { _spEventQueue_ensureCapacity(self_0, 1 as c_int); - let fresh19 = (*self_0).objectsCount; - (*self_0).objectsCount = (*self_0).objectsCount + 1; - (*((*self_0).objects).offset(fresh19 as isize)).type_0 = type_0 as c_int; + let fresh14 = (*self_0).objectsCount; + (*self_0).objectsCount += 1; + (*((*self_0).objects).offset(fresh14 as isize)).type_0 = type_0 as c_int; } #[no_mangle] pub unsafe extern "C" fn _spEventQueue_addEntry( @@ -6914,10 +7370,10 @@ pub unsafe extern "C" fn _spEventQueue_addEntry( mut entry: *mut spTrackEntry, ) { _spEventQueue_ensureCapacity(self_0, 1 as c_int); - let fresh20 = (*self_0).objectsCount; - (*self_0).objectsCount = (*self_0).objectsCount + 1; - let ref mut fresh21 = (*((*self_0).objects).offset(fresh20 as isize)).entry; - *fresh21 = entry; + let fresh15 = (*self_0).objectsCount; + (*self_0).objectsCount += 1; + let fresh16 = &mut (*((*self_0).objects).offset(fresh15 as isize)).entry; + *fresh16 = entry; } #[no_mangle] pub unsafe extern "C" fn _spEventQueue_addEvent( @@ -6925,10 +7381,10 @@ pub unsafe extern "C" fn _spEventQueue_addEvent( mut event: *mut spEvent, ) { _spEventQueue_ensureCapacity(self_0, 1 as c_int); - let fresh22 = (*self_0).objectsCount; - (*self_0).objectsCount = (*self_0).objectsCount + 1; - let ref mut fresh23 = (*((*self_0).objects).offset(fresh22 as isize)).event; - *fresh23 = event; + let fresh17 = (*self_0).objectsCount; + (*self_0).objectsCount += 1; + let fresh18 = &mut (*((*self_0).objects).offset(fresh17 as isize)).event; + *fresh18 = event; } #[no_mangle] pub unsafe extern "C" fn _spEventQueue_start( @@ -6999,7 +7455,7 @@ pub unsafe extern "C" fn _spEventQueue_drain(mut self_0: *mut _spEventQueue) { (*((*self_0).objects).offset(i as isize)).type_0 as spEventType; let mut entry: *mut spTrackEntry = (*((*self_0).objects).offset((i + 1 as c_int) as isize)).entry; - let mut event: *mut spEvent = std::ptr::null_mut(); + let mut event: *mut spEvent = std::ptr::null_mut::(); let mut current_block_22: u64; match type_0 as c_uint { 0 | 1 | 3 => { @@ -7008,7 +7464,7 @@ pub unsafe extern "C" fn _spEventQueue_drain(mut self_0: *mut _spEventQueue) { &mut (*(*self_0).state).super_0, type_0, entry, - std::ptr::null_mut(), + std::ptr::null_mut::(), ); } if ((*(*self_0).state).super_0.listener).is_some() { @@ -7016,7 +7472,7 @@ pub unsafe extern "C" fn _spEventQueue_drain(mut self_0: *mut _spEventQueue) { &mut (*(*self_0).state).super_0, type_0, entry, - std::ptr::null_mut(), + std::ptr::null_mut::(), ); } current_block_22 = 10043043949733653460; @@ -7027,7 +7483,7 @@ pub unsafe extern "C" fn _spEventQueue_drain(mut self_0: *mut _spEventQueue) { &mut (*(*self_0).state).super_0, type_0, entry, - std::ptr::null_mut(), + std::ptr::null_mut::(), ); } if ((*(*self_0).state).super_0.listener).is_some() { @@ -7035,13 +7491,13 @@ pub unsafe extern "C" fn _spEventQueue_drain(mut self_0: *mut _spEventQueue) { &mut (*(*self_0).state).super_0, type_0, entry, - std::ptr::null_mut(), + std::ptr::null_mut::(), ); } - current_block_22 = 18315969784848825930; + current_block_22 = 8217970944285102440; } 4 => { - current_block_22 = 18315969784848825930; + current_block_22 = 8217970944285102440; } 5 => { event = (*((*self_0).objects).offset((i + 2 as c_int) as isize)).event; @@ -7069,13 +7525,13 @@ pub unsafe extern "C" fn _spEventQueue_drain(mut self_0: *mut _spEventQueue) { } } match current_block_22 { - 18315969784848825930 => { + 8217970944285102440 => { if ((*entry).listener).is_some() { ((*entry).listener).expect("non-null function pointer")( &mut (*(*self_0).state).super_0, SP_ANIMATION_DISPOSE, entry, - std::ptr::null_mut(), + std::ptr::null_mut::(), ); } if ((*(*self_0).state).super_0.listener).is_some() { @@ -7083,7 +7539,7 @@ pub unsafe extern "C" fn _spEventQueue_drain(mut self_0: *mut _spEventQueue) { &mut (*(*self_0).state).super_0, SP_ANIMATION_DISPOSE, entry, - std::ptr::null_mut(), + std::ptr::null_mut::(), ); } _spAnimationState_disposeTrackEntry(entry); @@ -7097,20 +7553,20 @@ pub unsafe extern "C" fn _spEventQueue_drain(mut self_0: *mut _spEventQueue) { } #[no_mangle] pub unsafe extern "C" fn _spAnimationState_enableQueue(mut self_0: *mut spAnimationState) { - let mut internal: *mut _spAnimationState = self_0 as *mut _spAnimationState; + let mut internal: *mut _spAnimationState = self_0.cast::<_spAnimationState>(); (*(*internal).queue).drainDisabled = 0 as c_int; } #[no_mangle] pub unsafe extern "C" fn _spAnimationState_disableQueue(mut self_0: *mut spAnimationState) { - let mut internal: *mut _spAnimationState = self_0 as *mut _spAnimationState; + let mut internal: *mut _spAnimationState = self_0.cast::<_spAnimationState>(); (*(*internal).queue).drainDisabled = 1 as c_int; } #[no_mangle] pub unsafe extern "C" fn _spAnimationState_disposeTrackEntry(mut entry: *mut spTrackEntry) { spIntArray_dispose((*entry).timelineMode); spTrackEntryArray_dispose((*entry).timelineHoldMix); - _spFree((*entry).timelinesRotation as *mut c_void); - _spFree(entry as *mut c_void); + _spFree((*entry).timelinesRotation.cast::()); + _spFree(entry.cast::()); } #[no_mangle] pub unsafe extern "C" fn _spAnimationState_disposeTrackEntries( @@ -7127,7 +7583,7 @@ pub unsafe extern "C" fn _spAnimationState_disposeTrackEntries( state, SP_ANIMATION_DISPOSE, from, - std::ptr::null_mut(), + std::ptr::null_mut::(), ); } if ((*state).listener).is_some() { @@ -7135,7 +7591,7 @@ pub unsafe extern "C" fn _spAnimationState_disposeTrackEntries( state, SP_ANIMATION_DISPOSE, from, - std::ptr::null_mut(), + std::ptr::null_mut::(), ); } _spAnimationState_disposeTrackEntry(from); @@ -7146,7 +7602,7 @@ pub unsafe extern "C" fn _spAnimationState_disposeTrackEntries( state, SP_ANIMATION_DISPOSE, entry, - std::ptr::null_mut(), + std::ptr::null_mut::(), ); } if ((*state).listener).is_some() { @@ -7154,7 +7610,7 @@ pub unsafe extern "C" fn _spAnimationState_disposeTrackEntries( state, SP_ANIMATION_DISPOSE, entry, - std::ptr::null_mut(), + std::ptr::null_mut::(), ); } _spAnimationState_disposeTrackEntry(entry); @@ -7165,56 +7621,58 @@ pub unsafe extern "C" fn _spAnimationState_disposeTrackEntries( pub unsafe extern "C" fn spAnimationState_create( mut data: *mut spAnimationStateData, ) -> *mut spAnimationState { - let mut internal: *mut _spAnimationState = std::ptr::null_mut(); - let mut self_0: *mut spAnimationState = std::ptr::null_mut(); + let mut internal: *mut _spAnimationState = std::ptr::null_mut::<_spAnimationState>(); + let mut self_0: *mut spAnimationState = std::ptr::null_mut::(); if SP_EMPTY_ANIMATION.is_null() { SP_EMPTY_ANIMATION = 1 as c_int as *mut spAnimation; SP_EMPTY_ANIMATION = spAnimation_create( - b"\0" as *const u8 as *const c_char, - std::ptr::null_mut(), + (b"\0" as *const u8).cast::(), + std::ptr::null_mut::(), 0 as c_int as c_float, ); } internal = _spCalloc( 1 as c_int as size_t, ::core::mem::size_of::<_spAnimationState>() as c_ulong, - b"spine.c\0" as *const u8 as *const c_char, - 2995 as c_int, - ) as *mut _spAnimationState; + (b"spine.c\0" as *const u8).cast::(), + 3115 as c_int, + ) + .cast::<_spAnimationState>(); self_0 = &mut (*internal).super_0; - let ref mut fresh24 = *(&mut (*self_0).data as *mut *mut spAnimationStateData); - *fresh24 = data; + (*self_0).data = data; (*self_0).timeScale = 1 as c_int as c_float; (*internal).queue = _spEventQueue_create(internal); (*internal).events = _spCalloc( 128 as c_int as size_t, ::core::mem::size_of::<*mut spEvent>() as c_ulong, - b"spine.c\0" as *const u8 as *const c_char, - 3002 as c_int, - ) as *mut *mut spEvent; + (b"spine.c\0" as *const u8).cast::(), + 3122 as c_int, + ) + .cast::<*mut spEvent>(); (*internal).propertyIDs = _spCalloc( 128 as c_int as size_t, ::core::mem::size_of::() as c_ulong, - b"spine.c\0" as *const u8 as *const c_char, - 3004 as c_int, - ) as *mut spPropertyId; + (b"spine.c\0" as *const u8).cast::(), + 3124 as c_int, + ) + .cast::(); (*internal).propertyIDsCapacity = 128 as c_int; - return self_0; + self_0 } #[no_mangle] pub unsafe extern "C" fn spAnimationState_dispose(mut self_0: *mut spAnimationState) { let mut i: c_int = 0; - let mut internal: *mut _spAnimationState = self_0 as *mut _spAnimationState; + let mut internal: *mut _spAnimationState = self_0.cast::<_spAnimationState>(); i = 0 as c_int; while i < (*self_0).tracksCount { _spAnimationState_disposeTrackEntries(self_0, *((*self_0).tracks).offset(i as isize)); i += 1; } - _spFree((*self_0).tracks as *mut c_void); + _spFree((*self_0).tracks.cast::()); _spEventQueue_free((*internal).queue); - _spFree((*internal).events as *mut c_void); - _spFree((*internal).propertyIDs as *mut c_void); - _spFree(internal as *mut c_void); + _spFree((*internal).events.cast::()); + _spFree((*internal).propertyIDs.cast::()); + _spFree(internal.cast::()); } #[no_mangle] pub unsafe extern "C" fn spAnimationState_update( @@ -7223,7 +7681,7 @@ pub unsafe extern "C" fn spAnimationState_update( ) { let mut i: c_int = 0; let mut n: c_int = 0; - let mut internal: *mut _spAnimationState = self_0 as *mut _spAnimationState; + let mut internal: *mut _spAnimationState = self_0.cast::<_spAnimationState>(); delta *= (*self_0).timeScale; let mut current_block_29: u64; i = 0 as c_int; @@ -7231,7 +7689,7 @@ pub unsafe extern "C" fn spAnimationState_update( while i < n { let mut currentDelta: c_float = 0.; let mut current: *mut spTrackEntry = *((*self_0).tracks).offset(i as isize); - let mut next: *mut spTrackEntry = std::ptr::null_mut(); + let mut next: *mut spTrackEntry = std::ptr::null_mut::(); if !current.is_null() { (*current).animationLast = (*current).nextAnimationLast; (*current).trackLast = (*current).nextTrackLast; @@ -7274,8 +7732,8 @@ pub unsafe extern "C" fn spAnimationState_update( } else if (*current).trackLast >= (*current).trackEnd && ((*current).mixingFrom).is_null() { - let ref mut fresh25 = *((*self_0).tracks).offset(i as isize); - *fresh25 = std::ptr::null_mut(); + let fresh19 = &mut (*((*self_0).tracks).offset(i as isize)); + *fresh19 = std::ptr::null_mut::(); _spEventQueue_end((*internal).queue, current); spAnimationState_clearNext(self_0, current); current_block_29 = 16559507199688588974; @@ -7289,9 +7747,9 @@ pub unsafe extern "C" fn spAnimationState_update( && _spAnimationState_updateMixingFrom(self_0, current, delta) != 0 { let mut from: *mut spTrackEntry = (*current).mixingFrom; - (*current).mixingFrom = std::ptr::null_mut(); + (*current).mixingFrom = std::ptr::null_mut::(); if !from.is_null() { - (*from).mixingTo = std::ptr::null_mut(); + (*from).mixingTo = std::ptr::null_mut::(); } while !from.is_null() { _spEventQueue_end((*internal).queue, from); @@ -7316,7 +7774,7 @@ pub unsafe extern "C" fn _spAnimationState_updateMixingFrom( ) -> c_int { let mut from: *mut spTrackEntry = (*to).mixingFrom; let mut finished: c_int = 0; - let mut internal: *mut _spAnimationState = self_0 as *mut _spAnimationState; + let mut internal: *mut _spAnimationState = self_0.cast::<_spAnimationState>(); if from.is_null() { return -(1 as c_int); } @@ -7337,34 +7795,34 @@ pub unsafe extern "C" fn _spAnimationState_updateMixingFrom( } (*from).trackTime += delta * (*from).timeScale; (*to).mixTime += delta; - return 0 as c_int; + 0 as c_int } #[no_mangle] pub unsafe extern "C" fn spAnimationState_apply( mut self_0: *mut spAnimationState, mut skeleton: *mut spSkeleton, ) -> c_int { - let mut internal: *mut _spAnimationState = self_0 as *mut _spAnimationState; - let mut current: *mut spTrackEntry = std::ptr::null_mut(); + let mut internal: *mut _spAnimationState = self_0.cast::<_spAnimationState>(); + let mut current: *mut spTrackEntry = std::ptr::null_mut::(); let mut i: c_int = 0; let mut ii: c_int = 0; let mut n: c_int = 0; let mut animationLast: c_float = 0.; let mut animationTime: c_float = 0.; let mut timelineCount: c_int = 0; - let mut timelines: *mut *mut spTimeline = std::ptr::null_mut(); + let mut timelines: *mut *mut spTimeline = std::ptr::null_mut::<*mut spTimeline>(); let mut firstFrame: c_int = 0; let mut shortestRotation: c_int = 0; - let mut timelinesRotation: *mut c_float = std::ptr::null_mut(); - let mut timeline: *mut spTimeline = std::ptr::null_mut(); + let mut timelinesRotation: *mut c_float = std::ptr::null_mut::(); + let mut timeline: *mut spTimeline = std::ptr::null_mut::(); let mut applied: c_int = 0 as c_int; let mut blend: spMixBlend = SP_MIX_BLEND_SETUP; let mut timelineBlend: spMixBlend = SP_MIX_BLEND_SETUP; let mut setupState: c_int = 0 as c_int; - let mut slots: *mut *mut spSlot = std::ptr::null_mut(); - let mut slot: *mut spSlot = std::ptr::null_mut(); - let mut attachmentName: *const c_char = std::ptr::null(); - let mut applyEvents: *mut *mut spEvent = std::ptr::null_mut(); + let mut slots: *mut *mut spSlot = std::ptr::null_mut::<*mut spSlot>(); + let mut slot: *mut spSlot = std::ptr::null_mut::(); + let mut attachmentName: *const c_char = std::ptr::null::(); + let mut applyEvents: *mut *mut spEvent = std::ptr::null_mut::<*mut spEvent>(); let mut applyTime: c_float = 0.; if (*internal).animationsChanged != 0 { _spAnimationState_animationsChanged(self_0); @@ -7372,7 +7830,7 @@ pub unsafe extern "C" fn spAnimationState_apply( i = 0 as c_int; n = (*self_0).tracksCount; while i < n { - let mut mix: c_float = 0.; + let mut alpha: c_float = 0.; current = *((*self_0).tracks).offset(i as isize); if !(current.is_null() || (*current).delay > 0 as c_int as c_float) { applied = -(1 as c_int); @@ -7381,12 +7839,13 @@ pub unsafe extern "C" fn spAnimationState_apply( } else { (*current).mixBlend as c_uint }) as spMixBlend; - mix = (*current).alpha; + alpha = (*current).alpha; if !((*current).mixingFrom).is_null() { - mix *= _spAnimationState_applyMixingFrom(self_0, current, skeleton, blend); + alpha *= _spAnimationState_applyMixingFrom(self_0, current, skeleton, blend); } else if (*current).trackTime >= (*current).trackEnd && ((*current).next).is_null() { - mix = 0 as c_int as c_float; + alpha = 0 as c_int as c_float; } + let mut attachments: c_int = (alpha >= (*current).alphaAttachmentThreshold) as c_int; animationLast = (*current).animationLast; animationTime = spTrackEntry_getAnimationTime(current); timelineCount = (*(*(*current).animation).timelines).size; @@ -7394,10 +7853,10 @@ pub unsafe extern "C" fn spAnimationState_apply( applyTime = animationTime; if (*current).reverse != 0 { applyTime = (*(*current).animation).duration - applyTime; - applyEvents = std::ptr::null_mut(); + applyEvents = std::ptr::null_mut::<*mut spEvent>(); } timelines = (*(*(*current).animation).timelines).items; - if i == 0 as c_int && mix == 1 as c_int as c_float + if i == 0 as c_int && alpha == 1 as c_int as c_float || blend as c_uint == SP_MIX_BLEND_ADD as c_int as c_uint { ii = 0 as c_int; @@ -7410,7 +7869,7 @@ pub unsafe extern "C" fn spAnimationState_apply( skeleton, applyTime, blend, - -(1 as c_int), + attachments, ); } else { spTimeline_apply( @@ -7420,7 +7879,7 @@ pub unsafe extern "C" fn spAnimationState_apply( applyTime, applyEvents, &mut (*internal).eventsCount, - mix, + alpha, blend, SP_MIX_DIRECTION_IN, ); @@ -7453,7 +7912,7 @@ pub unsafe extern "C" fn spAnimationState_apply( timeline, skeleton, applyTime, - mix, + alpha, timelineBlend, timelinesRotation, ii << 1 as c_int, @@ -7468,7 +7927,7 @@ pub unsafe extern "C" fn spAnimationState_apply( skeleton, applyTime, timelineBlend, - -(1 as c_int), + attachments, ); } else { spTimeline_apply( @@ -7478,7 +7937,7 @@ pub unsafe extern "C" fn spAnimationState_apply( applyTime, applyEvents, &mut (*internal).eventsCount, - mix, + alpha, timelineBlend, SP_MIX_DIRECTION_IN, ); @@ -7504,7 +7963,7 @@ pub unsafe extern "C" fn spAnimationState_apply( spSlot_setAttachment( slot, if attachmentName.is_null() { - std::ptr::null_mut() + std::ptr::null_mut::() } else { spSkeleton_getAttachmentForSlotIndex( skeleton, @@ -7518,7 +7977,7 @@ pub unsafe extern "C" fn spAnimationState_apply( } (*self_0).unkeyedState += 2 as c_int; _spEventQueue_drain((*internal).queue); - return applied; + applied } #[no_mangle] pub unsafe extern "C" fn _spAnimationState_applyMixingFrom( @@ -7527,26 +7986,26 @@ pub unsafe extern "C" fn _spAnimationState_applyMixingFrom( mut skeleton: *mut spSkeleton, mut blend: spMixBlend, ) -> c_float { - let mut internal: *mut _spAnimationState = self_0 as *mut _spAnimationState; + let mut internal: *mut _spAnimationState = self_0.cast::<_spAnimationState>(); let mut mix: c_float = 0.; - let mut events: *mut *mut spEvent = std::ptr::null_mut(); + let mut events: *mut *mut spEvent = std::ptr::null_mut::<*mut spEvent>(); let mut attachments: c_int = 0; let mut drawOrder: c_int = 0; let mut animationLast: c_float = 0.; let mut animationTime: c_float = 0.; let mut timelineCount: c_int = 0; - let mut timelines: *mut *mut spTimeline = std::ptr::null_mut(); - let mut timelineMode: *mut spIntArray = std::ptr::null_mut(); - let mut timelineHoldMix: *mut spTrackEntryArray = std::ptr::null_mut(); + let mut timelines: *mut *mut spTimeline = std::ptr::null_mut::<*mut spTimeline>(); + let mut timelineMode: *mut spIntArray = std::ptr::null_mut::(); + let mut timelineHoldMix: *mut spTrackEntryArray = std::ptr::null_mut::(); let mut timelineBlend: spMixBlend = SP_MIX_BLEND_SETUP; let mut alphaHold: c_float = 0.; let mut alphaMix: c_float = 0.; let mut alpha: c_float = 0.; let mut firstFrame: c_int = 0; let mut shortestRotation: c_int = 0; - let mut timelinesRotation: *mut c_float = std::ptr::null_mut(); + let mut timelinesRotation: *mut c_float = std::ptr::null_mut::(); let mut i: c_int = 0; - let mut holdMix: *mut spTrackEntry = std::ptr::null_mut(); + let mut holdMix: *mut spTrackEntry = std::ptr::null_mut::(); let mut applyTime: c_float = 0.; let mut from: *mut spTrackEntry = (*to).mixingFrom; if !((*from).mixingFrom).is_null() { @@ -7566,8 +8025,8 @@ pub unsafe extern "C" fn _spAnimationState_applyMixingFrom( blend = (*from).mixBlend; } } - attachments = (mix < (*from).attachmentThreshold) as c_int; - drawOrder = (mix < (*from).drawOrderThreshold) as c_int; + attachments = (mix < (*from).mixAttachmentThreshold) as c_int; + drawOrder = (mix < (*from).mixDrawOrderThreshold) as c_int; timelineCount = (*(*(*from).animation).timelines).size; timelines = (*(*(*from).animation).timelines).items; alphaHold = (*from).alpha * (*to).interruptAlpha; @@ -7575,7 +8034,7 @@ pub unsafe extern "C" fn _spAnimationState_applyMixingFrom( animationLast = (*from).animationLast; animationTime = spTrackEntry_getAnimationTime(from); applyTime = animationTime; - events = std::ptr::null_mut(); + events = std::ptr::null_mut::<*mut spEvent>(); if (*from).reverse != 0 { applyTime = (*(*from).animation).duration - applyTime; } else if mix < (*from).eventThreshold { @@ -7683,7 +8142,8 @@ pub unsafe extern "C" fn _spAnimationState_applyMixingFrom( skeleton, applyTime, timelineBlend, - attachments, + (attachments != 0 && alpha >= (*from).alphaAttachmentThreshold) + as c_int, ); } else { if drawOrder != 0 @@ -7717,7 +8177,7 @@ pub unsafe extern "C" fn _spAnimationState_applyMixingFrom( (*internal).eventsCount = 0 as c_int; (*from).nextAnimationLast = animationTime; (*from).nextTrackLast = (*from).trackTime; - return mix; + mix } unsafe extern "C" fn _spAnimationState_setAttachment( mut self_0: *mut spAnimationState, @@ -7729,7 +8189,7 @@ unsafe extern "C" fn _spAnimationState_setAttachment( spSlot_setAttachment( slot, if attachmentName.is_null() { - std::ptr::null_mut() + std::ptr::null_mut::() } else { spSkeleton_getAttachmentForSlotIndex(skeleton, (*(*slot).data).index, attachmentName) }, @@ -7751,7 +8211,7 @@ unsafe extern "C" fn binarySearch1( } i += 1; } - return valuesLength - 1 as c_int; + valuesLength - 1 as c_int } #[no_mangle] pub unsafe extern "C" fn _spAnimationState_applyAttachmentTimeline( @@ -7762,10 +8222,11 @@ pub unsafe extern "C" fn _spAnimationState_applyAttachmentTimeline( mut blend: spMixBlend, mut attachments: c_int, ) { - let mut attachmentTimeline: *mut spAttachmentTimeline = std::ptr::null_mut(); - let mut slot: *mut spSlot = std::ptr::null_mut(); - let mut frames: *mut c_float = std::ptr::null_mut(); - attachmentTimeline = timeline as *mut spAttachmentTimeline; + let mut attachmentTimeline: *mut spAttachmentTimeline = + std::ptr::null_mut::(); + let mut slot: *mut spSlot = std::ptr::null_mut::(); + let mut frames: *mut c_float = std::ptr::null_mut::(); + attachmentTimeline = timeline.cast::(); slot = *((*skeleton).slots).offset((*attachmentTimeline).slotIndex as isize); if (*(*slot).bone).active == 0 { return; @@ -7812,9 +8273,9 @@ pub unsafe extern "C" fn _spAnimationState_applyRotateTimeline( mut i: c_int, mut firstFrame: c_int, ) { - let mut rotateTimeline: *mut spRotateTimeline = std::ptr::null_mut(); - let mut frames: *mut c_float = std::ptr::null_mut(); - let mut bone: *mut spBone = std::ptr::null_mut(); + let mut rotateTimeline: *mut spRotateTimeline = std::ptr::null_mut::(); + let mut frames: *mut c_float = std::ptr::null_mut::(); + let mut bone: *mut spBone = std::ptr::null_mut::(); let mut r1: c_float = 0.; let mut r2: c_float = 0.; let mut total: c_float = 0.; @@ -7830,15 +8291,15 @@ pub unsafe extern "C" fn _spAnimationState_applyRotateTimeline( skeleton, 0 as c_int as c_float, time, - std::ptr::null_mut(), - std::ptr::null_mut(), + std::ptr::null_mut::<*mut spEvent>(), + std::ptr::null_mut::(), 1 as c_int as c_float, blend, SP_MIX_DIRECTION_IN, ); return; } - rotateTimeline = timeline as *mut spRotateTimeline; + rotateTimeline = timeline.cast::(); frames = (*(*rotateTimeline).super_0.super_0.frames).items; bone = *((*skeleton).bones).offset((*rotateTimeline).boneIndex as isize); if (*bone).active == 0 { @@ -7869,14 +8330,14 @@ pub unsafe extern "C" fn _spAnimationState_applyRotateTimeline( + spCurveTimeline1_getCurveValue(&mut (*rotateTimeline).super_0, time); } diff = r2 - r1; - diff -= ((16384 as c_int - - (16384.499999999996f64 - (diff / 360 as c_int as c_float) as c_double) as c_int) - * 360 as c_int) as c_float; + diff -= spine_ceil((diff / 360 as c_int as c_float) as c_double - 0.5f64) as c_float + * 360 as c_int as c_float; if diff == 0 as c_int as c_float { total = *timelinesRotation.offset(i as isize); } else { let mut lastTotal: c_float = 0.; let mut lastDiff: c_float = 0.; + let mut loops: c_float = 0.; if firstFrame != 0 { lastTotal = 0 as c_int as c_float; lastDiff = diff; @@ -7884,60 +8345,65 @@ pub unsafe extern "C" fn _spAnimationState_applyRotateTimeline( lastTotal = *timelinesRotation.offset(i as isize); lastDiff = *timelinesRotation.offset((i + 1 as c_int) as isize); } - current = (diff > 0 as c_int as c_float) as c_int; + loops = lastTotal - spine_fmodf(lastTotal, 360 as c_int as c_float); + total = diff + loops; + current = (diff >= 0 as c_int as c_float) as c_int; dir = (lastTotal >= 0 as c_int as c_float) as c_int; if (if lastDiff < 0 as c_int as c_float { - -1.0f32 + -lastDiff } else { - if lastDiff > 0 as c_int as c_float { + lastDiff + }) <= 90 as c_int as c_float + && (if lastDiff < 0 as c_int as c_float { + -1.0f32 + } else if lastDiff > 0 as c_int as c_float { 1.0f32 } else { 0.0f32 - } - }) != (if diff < 0 as c_int as c_float { - -1.0f32 - } else { - if diff > 0 as c_int as c_float { + }) != (if diff < 0 as c_int as c_float { + -1.0f32 + } else if diff > 0 as c_int as c_float { 1.0f32 } else { 0.0f32 - } - }) && (if lastDiff < 0 as c_int as c_float { - -lastDiff - } else { - lastDiff - }) <= 90 as c_int as c_float + }) { - if (if lastTotal < 0 as c_int as c_float { - -lastTotal + if (if lastTotal - loops < 0 as c_int as c_float { + -(lastTotal - loops) } else { - lastTotal + lastTotal - loops }) > 180 as c_int as c_float { - lastTotal += 360 as c_int as c_float + total += 360 as c_int as c_float * (if lastTotal < 0 as c_int as c_float { -1.0f32 + } else if lastTotal > 0 as c_int as c_float { + 1.0f32 } else { - if lastTotal > 0 as c_int as c_float { - 1.0f32 - } else { - 0.0f32 - } + 0.0f32 + }); + dir = current; + } else if loops != 0 as c_int as c_float { + total -= 360 as c_int as c_float + * (if lastTotal < 0 as c_int as c_float { + -1.0f32 + } else if lastTotal > 0 as c_int as c_float { + 1.0f32 + } else { + 0.0f32 }); + } else { + dir = current; } - dir = current; } - total = diff + lastTotal - spine_fmodf(lastTotal, 360 as c_int as c_float); if dir != current { total += 360 as c_int as c_float * (if lastTotal < 0 as c_int as c_float { -1.0f32 + } else if lastTotal > 0 as c_int as c_float { + 1.0f32 } else { - if lastTotal > 0 as c_int as c_float { - 1.0f32 - } else { - 0.0f32 - } + 0.0f32 }); } *timelinesRotation.offset(i as isize) = total; @@ -7951,9 +8417,9 @@ pub unsafe extern "C" fn _spAnimationState_queueEvents( mut entry: *mut spTrackEntry, mut animationTime: c_float, ) { - let mut events: *mut *mut spEvent = std::ptr::null_mut(); - let mut event: *mut spEvent = std::ptr::null_mut(); - let mut internal: *mut _spAnimationState = self_0 as *mut _spAnimationState; + let mut events: *mut *mut spEvent = std::ptr::null_mut::<*mut spEvent>(); + let mut event: *mut spEvent = std::ptr::null_mut::(); + let mut internal: *mut _spAnimationState = self_0.cast::<_spAnimationState>(); let mut i: c_int = 0; let mut n: c_int = 0; let mut complete: c_int = 0; @@ -7975,9 +8441,13 @@ pub unsafe extern "C" fn _spAnimationState_queueEvents( i += 1; } if (*entry).loop_0 != 0 { - complete = (duration == 0 as c_int as c_float - || trackLastWrapped > spine_fmodf((*entry).trackTime, duration)) - as c_int; + if duration == 0 as c_int as c_float { + complete = -(1 as c_int); + } else { + let mut cycles: c_int = ((*entry).trackTime / duration) as c_int; + complete = + (cycles > 0 as c_int && cycles > ((*entry).trackLast / duration) as c_int) as c_int; + } } else { complete = (animationTime >= animationEnd && (*entry).animationLast < animationEnd) as c_int; @@ -7995,7 +8465,7 @@ pub unsafe extern "C" fn _spAnimationState_queueEvents( } #[no_mangle] pub unsafe extern "C" fn spAnimationState_clearTracks(mut self_0: *mut spAnimationState) { - let mut internal: *mut _spAnimationState = self_0 as *mut _spAnimationState; + let mut internal: *mut _spAnimationState = self_0.cast::<_spAnimationState>(); let mut i: c_int = 0; let mut n: c_int = 0; let mut oldDrainDisabled: c_int = 0; @@ -8016,10 +8486,10 @@ pub unsafe extern "C" fn spAnimationState_clearTrack( mut self_0: *mut spAnimationState, mut trackIndex: c_int, ) { - let mut current: *mut spTrackEntry = std::ptr::null_mut(); - let mut entry: *mut spTrackEntry = std::ptr::null_mut(); - let mut from: *mut spTrackEntry = std::ptr::null_mut(); - let mut internal: *mut _spAnimationState = self_0 as *mut _spAnimationState; + let mut current: *mut spTrackEntry = std::ptr::null_mut::(); + let mut entry: *mut spTrackEntry = std::ptr::null_mut::(); + let mut from: *mut spTrackEntry = std::ptr::null_mut::(); + let mut internal: *mut _spAnimationState = self_0.cast::<_spAnimationState>(); if trackIndex >= (*self_0).tracksCount { return; } @@ -8036,12 +8506,12 @@ pub unsafe extern "C" fn spAnimationState_clearTrack( break; } _spEventQueue_end((*internal).queue, from); - (*entry).mixingFrom = std::ptr::null_mut(); - (*entry).mixingTo = std::ptr::null_mut(); + (*entry).mixingFrom = std::ptr::null_mut::(); + (*entry).mixingTo = std::ptr::null_mut::(); entry = from; } - let ref mut fresh26 = *((*self_0).tracks).offset((*current).trackIndex as isize); - *fresh26 = std::ptr::null_mut(); + let fresh20 = &mut (*((*self_0).tracks).offset((*current).trackIndex as isize)); + *fresh20 = std::ptr::null_mut::(); _spEventQueue_drain((*internal).queue); } #[no_mangle] @@ -8051,11 +8521,11 @@ pub unsafe extern "C" fn _spAnimationState_setCurrent( mut current: *mut spTrackEntry, mut interrupt: c_int, ) { - let mut internal: *mut _spAnimationState = self_0 as *mut _spAnimationState; + let mut internal: *mut _spAnimationState = self_0.cast::<_spAnimationState>(); let mut from: *mut spTrackEntry = _spAnimationState_expandToIndex(self_0, index); - let ref mut fresh27 = *((*self_0).tracks).offset(index as isize); - *fresh27 = current; - (*current).previous = std::ptr::null_mut(); + let fresh21 = &mut (*((*self_0).tracks).offset(index as isize)); + *fresh21 = current; + (*current).previous = std::ptr::null_mut::(); if !from.is_null() { if interrupt != 0 { _spEventQueue_interrupt((*internal).queue, from); @@ -8084,7 +8554,7 @@ pub unsafe extern "C" fn spAnimationState_setAnimationByName( ) -> *mut spTrackEntry { let mut animation: *mut spAnimation = spSkeletonData_findAnimation((*(*self_0).data).skeletonData, animationName); - return spAnimationState_setAnimation(self_0, trackIndex, animation, loop_0); + spAnimationState_setAnimation(self_0, trackIndex, animation, loop_0) } #[no_mangle] pub unsafe extern "C" fn spAnimationState_setAnimation( @@ -8093,14 +8563,14 @@ pub unsafe extern "C" fn spAnimationState_setAnimation( mut animation: *mut spAnimation, mut loop_0: c_int, ) -> *mut spTrackEntry { - let mut entry: *mut spTrackEntry = std::ptr::null_mut(); - let mut internal: *mut _spAnimationState = self_0 as *mut _spAnimationState; + let mut entry: *mut spTrackEntry = std::ptr::null_mut::(); + let mut internal: *mut _spAnimationState = self_0.cast::<_spAnimationState>(); let mut interrupt: c_int = 1 as c_int; let mut current: *mut spTrackEntry = _spAnimationState_expandToIndex(self_0, trackIndex); if !current.is_null() { if (*current).nextTrackLast == -(1 as c_int) as c_float { - let ref mut fresh28 = *((*self_0).tracks).offset(trackIndex as isize); - *fresh28 = (*current).mixingFrom; + let fresh22 = &mut (*((*self_0).tracks).offset(trackIndex as isize)); + *fresh22 = (*current).mixingFrom; _spEventQueue_interrupt((*internal).queue, current); _spEventQueue_end((*internal).queue, current); spAnimationState_clearNext(self_0, current); @@ -8113,7 +8583,7 @@ pub unsafe extern "C" fn spAnimationState_setAnimation( entry = _spAnimationState_trackEntry(self_0, trackIndex, animation, loop_0, current); _spAnimationState_setCurrent(self_0, trackIndex, entry, interrupt); _spEventQueue_drain((*internal).queue); - return entry; + entry } #[no_mangle] pub unsafe extern "C" fn spAnimationState_addAnimationByName( @@ -8125,7 +8595,7 @@ pub unsafe extern "C" fn spAnimationState_addAnimationByName( ) -> *mut spTrackEntry { let mut animation: *mut spAnimation = spSkeletonData_findAnimation((*(*self_0).data).skeletonData, animationName); - return spAnimationState_addAnimation(self_0, trackIndex, animation, loop_0, delay); + spAnimationState_addAnimation(self_0, trackIndex, animation, loop_0, delay) } #[no_mangle] pub unsafe extern "C" fn spAnimationState_addAnimation( @@ -8135,8 +8605,8 @@ pub unsafe extern "C" fn spAnimationState_addAnimation( mut loop_0: c_int, mut delay: c_float, ) -> *mut spTrackEntry { - let mut entry: *mut spTrackEntry = std::ptr::null_mut(); - let mut internal: *mut _spAnimationState = self_0 as *mut _spAnimationState; + let mut entry: *mut spTrackEntry = std::ptr::null_mut::(); + let mut internal: *mut _spAnimationState = self_0.cast::<_spAnimationState>(); let mut last: *mut spTrackEntry = _spAnimationState_expandToIndex(self_0, trackIndex); if !last.is_null() { while !((*last).next).is_null() { @@ -8155,7 +8625,7 @@ pub unsafe extern "C" fn spAnimationState_addAnimation( } } (*entry).delay = delay; - return entry; + entry } #[no_mangle] pub unsafe extern "C" fn spAnimationState_setEmptyAnimation( @@ -8167,7 +8637,7 @@ pub unsafe extern "C" fn spAnimationState_setEmptyAnimation( spAnimationState_setAnimation(self_0, trackIndex, SP_EMPTY_ANIMATION, 0 as c_int); (*entry).mixDuration = mixDuration; (*entry).trackEnd = mixDuration; - return entry; + entry } #[no_mangle] pub unsafe extern "C" fn spAnimationState_addEmptyAnimation( @@ -8183,7 +8653,7 @@ pub unsafe extern "C" fn spAnimationState_addEmptyAnimation( } (*entry).mixDuration = mixDuration; (*entry).trackEnd = mixDuration; - return entry; + entry } #[no_mangle] pub unsafe extern "C" fn spAnimationState_setEmptyAnimations( @@ -8193,8 +8663,8 @@ pub unsafe extern "C" fn spAnimationState_setEmptyAnimations( let mut i: c_int = 0; let mut n: c_int = 0; let mut oldDrainDisabled: c_int = 0; - let mut current: *mut spTrackEntry = std::ptr::null_mut(); - let mut internal: *mut _spAnimationState = self_0 as *mut _spAnimationState; + let mut current: *mut spTrackEntry = std::ptr::null_mut::(); + let mut internal: *mut _spAnimationState = self_0.cast::<_spAnimationState>(); oldDrainDisabled = (*(*internal).queue).drainDisabled; (*(*internal).queue).drainDisabled = 1 as c_int; i = 0 as c_int; @@ -8214,26 +8684,27 @@ pub unsafe extern "C" fn _spAnimationState_expandToIndex( mut self_0: *mut spAnimationState, mut index: c_int, ) -> *mut spTrackEntry { - let mut newTracks: *mut *mut spTrackEntry = std::ptr::null_mut(); + let mut newTracks: *mut *mut spTrackEntry = std::ptr::null_mut::<*mut spTrackEntry>(); if index < (*self_0).tracksCount { return *((*self_0).tracks).offset(index as isize); } newTracks = _spCalloc( (index + 1 as c_int) as size_t, ::core::mem::size_of::<*mut spTrackEntry>() as c_ulong, - b"spine.c\0" as *const u8 as *const c_char, - 3632 as c_int, - ) as *mut *mut spTrackEntry; + (b"spine.c\0" as *const u8).cast::(), + 3762 as c_int, + ) + .cast::<*mut spTrackEntry>(); spine_memcpy( - newTracks as *mut c_void, + newTracks.cast::(), (*self_0).tracks as *const c_void, ((*self_0).tracksCount as c_ulong) .wrapping_mul(::core::mem::size_of::<*mut spTrackEntry>() as c_ulong), ); - _spFree((*self_0).tracks as *mut c_void); + _spFree((*self_0).tracks.cast::()); (*self_0).tracks = newTracks; (*self_0).tracksCount = index + 1 as c_int; - return std::ptr::null_mut(); + std::ptr::null_mut::() } #[no_mangle] pub unsafe extern "C" fn _spAnimationState_trackEntry( @@ -8246,20 +8717,22 @@ pub unsafe extern "C" fn _spAnimationState_trackEntry( let mut entry: *mut spTrackEntry = _spCalloc( 1 as c_int as size_t, ::core::mem::size_of::() as c_ulong, - b"spine.c\0" as *const u8 as *const c_char, - 3643 as c_int, - ) as *mut spTrackEntry; + (b"spine.c\0" as *const u8).cast::(), + 3773 as c_int, + ) + .cast::(); (*entry).trackIndex = trackIndex; (*entry).animation = animation; (*entry).loop_0 = loop_0; (*entry).holdPrevious = 0 as c_int; (*entry).reverse = 0 as c_int; (*entry).shortestRotation = 0 as c_int; - (*entry).previous = std::ptr::null_mut(); - (*entry).next = std::ptr::null_mut(); + (*entry).previous = std::ptr::null_mut::(); + (*entry).next = std::ptr::null_mut::(); (*entry).eventThreshold = 0 as c_int as c_float; - (*entry).attachmentThreshold = 0 as c_int as c_float; - (*entry).drawOrderThreshold = 0 as c_int as c_float; + (*entry).mixAttachmentThreshold = 0 as c_int as c_float; + (*entry).alphaAttachmentThreshold = 0 as c_int as c_float; + (*entry).mixDrawOrderThreshold = 0 as c_int as c_float; (*entry).animationStart = 0 as c_int as c_float; (*entry).animationEnd = (*animation).duration; (*entry).animationLast = -(1 as c_int) as c_float; @@ -8282,27 +8755,27 @@ pub unsafe extern "C" fn _spAnimationState_trackEntry( (*entry).mixBlend = SP_MIX_BLEND_REPLACE; (*entry).timelineMode = spIntArray_create(16 as c_int); (*entry).timelineHoldMix = spTrackEntryArray_create(16 as c_int); - return entry; + entry } #[no_mangle] pub unsafe extern "C" fn spAnimationState_clearNext( mut self_0: *mut spAnimationState, mut entry: *mut spTrackEntry, ) { - let mut internal: *mut _spAnimationState = self_0 as *mut _spAnimationState; + let mut internal: *mut _spAnimationState = self_0.cast::<_spAnimationState>(); let mut next: *mut spTrackEntry = (*entry).next; while !next.is_null() { _spEventQueue_dispose((*internal).queue, next); next = (*next).next; } - (*entry).next = std::ptr::null_mut(); + (*entry).next = std::ptr::null_mut::(); } #[no_mangle] pub unsafe extern "C" fn _spAnimationState_animationsChanged(mut self_0: *mut spAnimationState) { - let mut internal: *mut _spAnimationState = self_0 as *mut _spAnimationState; + let mut internal: *mut _spAnimationState = self_0.cast::<_spAnimationState>(); let mut i: c_int = 0; let mut n: c_int = 0; - let mut entry: *mut spTrackEntry = std::ptr::null_mut(); + let mut entry: *mut spTrackEntry = std::ptr::null_mut::(); (*internal).animationsChanged = 0 as c_int; (*internal).propertyIDsCount = 0 as c_int; i = 0 as c_int; @@ -8337,35 +8810,37 @@ pub unsafe extern "C" fn _spAnimationState_resizeTimelinesRotation( let mut newTimelinesRotation: *mut c_float = _spCalloc( newSize as size_t, ::core::mem::size_of::() as c_ulong, - b"spine.c\0" as *const u8 as *const c_char, - 3716 as c_int, - ) as *mut c_float; - _spFree((*entry).timelinesRotation as *mut c_void); + (b"spine.c\0" as *const u8).cast::(), + 3847 as c_int, + ) + .cast::(); + _spFree((*entry).timelinesRotation.cast::()); (*entry).timelinesRotation = newTimelinesRotation; (*entry).timelinesRotationCount = newSize; } - return (*entry).timelinesRotation; + (*entry).timelinesRotation } #[no_mangle] pub unsafe extern "C" fn _spAnimationState_ensureCapacityPropertyIDs( mut self_0: *mut spAnimationState, mut capacity: c_int, ) { - let mut internal: *mut _spAnimationState = self_0 as *mut _spAnimationState; + let mut internal: *mut _spAnimationState = self_0.cast::<_spAnimationState>(); if (*internal).propertyIDsCapacity < capacity { let mut newPropertyIDs: *mut spPropertyId = _spCalloc( (capacity << 1 as c_int) as size_t, ::core::mem::size_of::() as c_ulong, - b"spine.c\0" as *const u8 as *const c_char, - 3727 as c_int, - ) as *mut spPropertyId; + (b"spine.c\0" as *const u8).cast::(), + 3858 as c_int, + ) + .cast::(); spine_memcpy( - newPropertyIDs as *mut c_void, + newPropertyIDs.cast::(), (*internal).propertyIDs as *const c_void, (::core::mem::size_of::() as c_ulong) .wrapping_mul((*internal).propertyIDsCount as c_ulong), ); - _spFree((*internal).propertyIDs as *mut c_void); + _spFree((*internal).propertyIDs.cast::()); (*internal).propertyIDs = newPropertyIDs; (*internal).propertyIDsCapacity = capacity << 1 as c_int; } @@ -8377,7 +8852,7 @@ pub unsafe extern "C" fn _spAnimationState_addPropertyID( ) -> c_int { let mut i: c_int = 0; let mut n: c_int = 0; - let mut internal: *mut _spAnimationState = self_0 as *mut _spAnimationState; + let mut internal: *mut _spAnimationState = self_0.cast::<_spAnimationState>(); i = 0 as c_int; n = (*internal).propertyIDsCount; while i < n { @@ -8389,7 +8864,7 @@ pub unsafe extern "C" fn _spAnimationState_addPropertyID( _spAnimationState_ensureCapacityPropertyIDs(self_0, (*internal).propertyIDsCount + 1 as c_int); *((*internal).propertyIDs).offset((*internal).propertyIDsCount as isize) = id; (*internal).propertyIDsCount += 1; - return 1 as c_int; + 1 as c_int } #[no_mangle] pub unsafe extern "C" fn _spAnimationState_addPropertyIDs( @@ -8399,7 +8874,7 @@ pub unsafe extern "C" fn _spAnimationState_addPropertyIDs( ) -> c_int { let mut i: c_int = 0; let mut n: c_int = 0; - let mut internal: *mut _spAnimationState = self_0 as *mut _spAnimationState; + let mut internal: *mut _spAnimationState = self_0.cast::<_spAnimationState>(); let mut oldSize: c_int = (*internal).propertyIDsCount; i = 0 as c_int; n = numIds; @@ -8407,7 +8882,7 @@ pub unsafe extern "C" fn _spAnimationState_addPropertyIDs( _spAnimationState_addPropertyID(self_0, *ids.offset(i as isize)); i += 1; } - return ((*internal).propertyIDsCount != oldSize) as c_int; + ((*internal).propertyIDsCount != oldSize) as c_int } #[no_mangle] pub unsafe extern "C" fn spAnimationState_getCurrent( @@ -8415,15 +8890,15 @@ pub unsafe extern "C" fn spAnimationState_getCurrent( mut trackIndex: c_int, ) -> *mut spTrackEntry { if trackIndex >= (*self_0).tracksCount { - return std::ptr::null_mut(); + return std::ptr::null_mut::(); } - return *((*self_0).tracks).offset(trackIndex as isize); + *((*self_0).tracks).offset(trackIndex as isize) } #[no_mangle] pub unsafe extern "C" fn spAnimationState_clearListenerNotifications( mut self_0: *mut spAnimationState, ) { - let mut internal: *mut _spAnimationState = self_0 as *mut _spAnimationState; + let mut internal: *mut _spAnimationState = self_0.cast::<_spAnimationState>(); _spEventQueue_clear((*internal).queue); } #[no_mangle] @@ -8435,11 +8910,17 @@ pub unsafe extern "C" fn spTrackEntry_getAnimationTime(mut entry: *mut spTrackEn } return spine_fmodf((*entry).trackTime, duration) + (*entry).animationStart; } - return if (*entry).trackTime + (*entry).animationStart < (*entry).animationEnd { + if (*entry).trackTime + (*entry).animationStart < (*entry).animationEnd { (*entry).trackTime + (*entry).animationStart } else { (*entry).animationEnd - }; + } +} +#[no_mangle] +pub unsafe extern "C" fn spTrackEntry_resetRotationDirections(mut entry: *mut spTrackEntry) { + _spFree((*entry).timelinesRotation.cast::()); + (*entry).timelinesRotation = std::ptr::null_mut::(); + (*entry).timelinesRotationCount = 0 as c_int; } #[no_mangle] pub unsafe extern "C" fn spTrackEntry_getTrackComplete(mut entry: *mut spTrackEntry) -> c_float { @@ -8452,19 +8933,35 @@ pub unsafe extern "C" fn spTrackEntry_getTrackComplete(mut entry: *mut spTrackEn return duration; } } - return (*entry).trackTime; + (*entry).trackTime +} +#[no_mangle] +pub unsafe extern "C" fn spTrackEntry_setMixDuration( + mut entry: *mut spTrackEntry, + mut mixDuration: c_float, + mut delay: c_float, +) { + (*entry).mixDuration = mixDuration; + if !((*entry).previous).is_null() && delay <= 0 as c_int as c_float { + delay += spTrackEntry_getTrackComplete(entry) - mixDuration; + } + (*entry).delay = delay; +} +#[no_mangle] +pub unsafe extern "C" fn spTrackEntry_wasApplied(mut entry: *mut spTrackEntry) -> c_int { + ((*entry).nextTrackLast != -(1 as c_int) as c_float) as c_int } #[no_mangle] pub unsafe extern "C" fn _spTrackEntry_computeHold( mut entry: *mut spTrackEntry, mut state: *mut spAnimationState, ) { - let mut to: *mut spTrackEntry = std::ptr::null_mut(); - let mut timelines: *mut *mut spTimeline = std::ptr::null_mut(); + let mut to: *mut spTrackEntry = std::ptr::null_mut::(); + let mut timelines: *mut *mut spTimeline = std::ptr::null_mut::<*mut spTimeline>(); let mut timelinesCount: c_int = 0; - let mut timelineMode: *mut c_int = std::ptr::null_mut(); - let mut timelineHoldMix: *mut *mut spTrackEntry = std::ptr::null_mut(); - let mut next: *mut spTrackEntry = std::ptr::null_mut(); + let mut timelineMode: *mut c_int = std::ptr::null_mut::(); + let mut timelineHoldMix: *mut *mut spTrackEntry = std::ptr::null_mut::<*mut spTrackEntry>(); + let mut next: *mut spTrackEntry = std::ptr::null_mut::(); let mut i: c_int = 0; to = (*entry).mixingTo; timelines = (*(*(*entry).animation).timelines).items; @@ -8512,8 +9009,8 @@ pub unsafe extern "C" fn _spTrackEntry_computeHold( break; } *timelineMode.offset(i as isize) = 4 as c_int; - let ref mut fresh29 = *timelineHoldMix.offset(i as isize); - *fresh29 = next; + let fresh23 = &mut (*timelineHoldMix.offset(i as isize)); + *fresh23 = next; i += 1; continue 's_69; } @@ -8531,31 +9028,33 @@ pub unsafe extern "C" fn _ToEntry_create( let mut self_0: *mut _ToEntry = _spCalloc( 1 as c_int as size_t, ::core::mem::size_of::<_ToEntry>() as c_ulong, - b"spine.c\0" as *const u8 as *const c_char, - 3882 as c_int, - ) as *mut _ToEntry; + (b"spine.c\0" as *const u8).cast::(), + 4029 as c_int, + ) + .cast::<_ToEntry>(); (*self_0).animation = to; (*self_0).duration = duration; - return self_0; + self_0 } #[no_mangle] pub unsafe extern "C" fn _ToEntry_dispose(mut self_0: *mut _ToEntry) { - _spFree(self_0 as *mut c_void); + _spFree(self_0.cast::()); } #[no_mangle] pub unsafe extern "C" fn _FromEntry_create(mut from: *mut spAnimation) -> *mut _FromEntry { let mut self_0: *mut _FromEntry = _spCalloc( 1 as c_int as size_t, ::core::mem::size_of::<_FromEntry>() as c_ulong, - b"spine.c\0" as *const u8 as *const c_char, - 3902 as c_int, - ) as *mut _FromEntry; + (b"spine.c\0" as *const u8).cast::(), + 4049 as c_int, + ) + .cast::<_FromEntry>(); (*self_0).animation = from; - return self_0; + self_0 } #[no_mangle] pub unsafe extern "C" fn _FromEntry_dispose(mut self_0: *mut _FromEntry) { - _spFree(self_0 as *mut c_void); + _spFree(self_0.cast::()); } #[no_mangle] pub unsafe extern "C" fn spAnimationStateData_create( @@ -8564,18 +9063,18 @@ pub unsafe extern "C" fn spAnimationStateData_create( let mut self_0: *mut spAnimationStateData = _spCalloc( 1 as c_int as size_t, ::core::mem::size_of::() as c_ulong, - b"spine.c\0" as *const u8 as *const c_char, - 3914 as c_int, - ) as *mut spAnimationStateData; - let ref mut fresh30 = *(&mut (*self_0).skeletonData as *mut *mut spSkeletonData); - *fresh30 = skeletonData; - return self_0; + (b"spine.c\0" as *const u8).cast::(), + 4061 as c_int, + ) + .cast::(); + (*self_0).skeletonData = skeletonData; + self_0 } #[no_mangle] pub unsafe extern "C" fn spAnimationStateData_dispose(mut self_0: *mut spAnimationStateData) { - let mut toEntry: *mut _ToEntry = std::ptr::null_mut(); - let mut nextToEntry: *mut _ToEntry = std::ptr::null_mut(); - let mut nextFromEntry: *mut _FromEntry = std::ptr::null_mut(); + let mut toEntry: *mut _ToEntry = std::ptr::null_mut::<_ToEntry>(); + let mut nextToEntry: *mut _ToEntry = std::ptr::null_mut::<_ToEntry>(); + let mut nextFromEntry: *mut _FromEntry = std::ptr::null_mut::<_FromEntry>(); let mut fromEntry: *mut _FromEntry = (*self_0).entries as *mut _FromEntry; while !fromEntry.is_null() { toEntry = (*fromEntry).toEntries; @@ -8588,7 +9087,7 @@ pub unsafe extern "C" fn spAnimationStateData_dispose(mut self_0: *mut spAnimati _FromEntry_dispose(fromEntry); fromEntry = nextFromEntry; } - _spFree(self_0 as *mut c_void); + _spFree(self_0.cast::()); } #[no_mangle] pub unsafe extern "C" fn spAnimationStateData_setMixByName( @@ -8597,7 +9096,7 @@ pub unsafe extern "C" fn spAnimationStateData_setMixByName( mut toName: *const c_char, mut duration: c_float, ) { - let mut to: *mut spAnimation = std::ptr::null_mut(); + let mut to: *mut spAnimation = std::ptr::null_mut::(); let mut from: *mut spAnimation = spSkeletonData_findAnimation((*self_0).skeletonData, fromName); if from.is_null() { return; @@ -8615,7 +9114,7 @@ pub unsafe extern "C" fn spAnimationStateData_setMix( mut to: *mut spAnimation, mut duration: c_float, ) { - let mut toEntry: *mut _ToEntry = std::ptr::null_mut(); + let mut toEntry: *mut _ToEntry = std::ptr::null_mut::<_ToEntry>(); let mut fromEntry: *mut _FromEntry = (*self_0).entries as *mut _FromEntry; while !fromEntry.is_null() { if (*fromEntry).animation == from { @@ -8635,8 +9134,7 @@ pub unsafe extern "C" fn spAnimationStateData_setMix( if fromEntry.is_null() { fromEntry = _FromEntry_create(from); (*fromEntry).next = (*self_0).entries as *mut _FromEntry; - let ref mut fresh31 = *(&mut (*self_0).entries as *mut *mut c_void as *mut *mut _FromEntry); - *fresh31 = fromEntry; + (*self_0).entries = fromEntry as *const c_void; } toEntry = _ToEntry_create(to, duration); (*toEntry).next = (*fromEntry).toEntries; @@ -8661,30 +9159,32 @@ pub unsafe extern "C" fn spAnimationStateData_getMix( } fromEntry = (*fromEntry).next; } - return (*self_0).defaultMix; + (*self_0).defaultMix } #[no_mangle] pub unsafe extern "C" fn spFloatArray_create(mut initialCapacity: c_int) -> *mut spFloatArray { let mut array: *mut spFloatArray = _spCalloc( 1 as c_int as size_t, ::core::mem::size_of::() as c_ulong, - b"spine.c\0" as *const u8 as *const c_char, - 4025 as c_int, - ) as *mut spFloatArray; + (b"spine.c\0" as *const u8).cast::(), + 4172 as c_int, + ) + .cast::(); (*array).size = 0 as c_int; (*array).capacity = initialCapacity; (*array).items = _spCalloc( initialCapacity as size_t, ::core::mem::size_of::() as c_ulong, - b"spine.c\0" as *const u8 as *const c_char, - 4025 as c_int, - ) as *mut c_float; - return array; + (b"spine.c\0" as *const u8).cast::(), + 4172 as c_int, + ) + .cast::(); + array } #[no_mangle] pub unsafe extern "C" fn spFloatArray_dispose(mut self_0: *mut spFloatArray) { - _spFree((*self_0).items as *mut c_void); - _spFree(self_0 as *mut c_void); + _spFree((*self_0).items.cast::()); + _spFree(self_0.cast::()); } #[no_mangle] pub unsafe extern "C" fn spFloatArray_clear(mut self_0: *mut spFloatArray) { @@ -8703,12 +9203,13 @@ pub unsafe extern "C" fn spFloatArray_setSize( ((*self_0).size as c_float * 1.75f32) as c_int }; (*self_0).items = _spRealloc( - (*self_0).items as *mut c_void, + (*self_0).items.cast::(), (::core::mem::size_of::() as c_ulong) .wrapping_mul((*self_0).capacity as c_ulong), - ) as *mut c_float; + ) + .cast::(); } - return self_0; + self_0 } #[no_mangle] pub unsafe extern "C" fn spFloatArray_ensureCapacity( @@ -8720,9 +9221,10 @@ pub unsafe extern "C" fn spFloatArray_ensureCapacity( } (*self_0).capacity = newCapacity; (*self_0).items = _spRealloc( - (*self_0).items as *mut c_void, + (*self_0).items.cast::(), (::core::mem::size_of::() as c_ulong).wrapping_mul((*self_0).capacity as c_ulong), - ) as *mut c_float; + ) + .cast::(); } #[no_mangle] pub unsafe extern "C" fn spFloatArray_add(mut self_0: *mut spFloatArray, mut value: c_float) { @@ -8733,14 +9235,15 @@ pub unsafe extern "C" fn spFloatArray_add(mut self_0: *mut spFloatArray, mut val ((*self_0).size as c_float * 1.75f32) as c_int }; (*self_0).items = _spRealloc( - (*self_0).items as *mut c_void, + (*self_0).items.cast::(), (::core::mem::size_of::() as c_ulong) .wrapping_mul((*self_0).capacity as c_ulong), - ) as *mut c_float; + ) + .cast::(); } - let fresh32 = (*self_0).size; - (*self_0).size = (*self_0).size + 1; - *((*self_0).items).offset(fresh32 as isize) = value; + let fresh24 = (*self_0).size; + (*self_0).size += 1; + *((*self_0).items).offset(fresh24 as isize) = value; } #[no_mangle] pub unsafe extern "C" fn spFloatArray_addAll( @@ -8771,7 +9274,7 @@ pub unsafe extern "C" fn spFloatArray_addAllValues( pub unsafe extern "C" fn spFloatArray_removeAt(mut self_0: *mut spFloatArray, mut index: c_int) { (*self_0).size -= 1; spine_memmove( - ((*self_0).items).offset(index as isize) as *mut c_void, + ((*self_0).items).offset(index as isize).cast::(), ((*self_0).items) .offset(index as isize) .offset(1 as c_int as isize) as *const c_void, @@ -8795,40 +9298,42 @@ pub unsafe extern "C" fn spFloatArray_contains( } i += 1; } - return 0 as c_int; + 0 as c_int } #[no_mangle] pub unsafe extern "C" fn spFloatArray_pop(mut self_0: *mut spFloatArray) -> c_float { (*self_0).size -= 1; let mut item: c_float = *((*self_0).items).offset((*self_0).size as isize); - return item; + item } #[no_mangle] pub unsafe extern "C" fn spFloatArray_peek(mut self_0: *mut spFloatArray) -> c_float { - return *((*self_0).items).offset(((*self_0).size - 1 as c_int) as isize); + *((*self_0).items).offset(((*self_0).size - 1 as c_int) as isize) } #[no_mangle] pub unsafe extern "C" fn spIntArray_create(mut initialCapacity: c_int) -> *mut spIntArray { let mut array: *mut spIntArray = _spCalloc( 1 as c_int as size_t, ::core::mem::size_of::() as c_ulong, - b"spine.c\0" as *const u8 as *const c_char, - 4027 as c_int, - ) as *mut spIntArray; + (b"spine.c\0" as *const u8).cast::(), + 4174 as c_int, + ) + .cast::(); (*array).size = 0 as c_int; (*array).capacity = initialCapacity; (*array).items = _spCalloc( initialCapacity as size_t, ::core::mem::size_of::() as c_ulong, - b"spine.c\0" as *const u8 as *const c_char, - 4027 as c_int, - ) as *mut c_int; - return array; + (b"spine.c\0" as *const u8).cast::(), + 4174 as c_int, + ) + .cast::(); + array } #[no_mangle] pub unsafe extern "C" fn spIntArray_dispose(mut self_0: *mut spIntArray) { - _spFree((*self_0).items as *mut c_void); - _spFree(self_0 as *mut c_void); + _spFree((*self_0).items.cast::()); + _spFree(self_0.cast::()); } #[no_mangle] pub unsafe extern "C" fn spIntArray_clear(mut self_0: *mut spIntArray) { @@ -8847,12 +9352,13 @@ pub unsafe extern "C" fn spIntArray_setSize( ((*self_0).size as c_float * 1.75f32) as c_int }; (*self_0).items = _spRealloc( - (*self_0).items as *mut c_void, + (*self_0).items.cast::(), (::core::mem::size_of::() as c_ulong) .wrapping_mul((*self_0).capacity as c_ulong), - ) as *mut c_int; + ) + .cast::(); } - return self_0; + self_0 } #[no_mangle] pub unsafe extern "C" fn spIntArray_ensureCapacity( @@ -8864,9 +9370,10 @@ pub unsafe extern "C" fn spIntArray_ensureCapacity( } (*self_0).capacity = newCapacity; (*self_0).items = _spRealloc( - (*self_0).items as *mut c_void, + (*self_0).items.cast::(), (::core::mem::size_of::() as c_ulong).wrapping_mul((*self_0).capacity as c_ulong), - ) as *mut c_int; + ) + .cast::(); } #[no_mangle] pub unsafe extern "C" fn spIntArray_add(mut self_0: *mut spIntArray, mut value: c_int) { @@ -8877,14 +9384,15 @@ pub unsafe extern "C" fn spIntArray_add(mut self_0: *mut spIntArray, mut value: ((*self_0).size as c_float * 1.75f32) as c_int }; (*self_0).items = _spRealloc( - (*self_0).items as *mut c_void, + (*self_0).items.cast::(), (::core::mem::size_of::() as c_ulong) .wrapping_mul((*self_0).capacity as c_ulong), - ) as *mut c_int; + ) + .cast::(); } - let fresh33 = (*self_0).size; - (*self_0).size = (*self_0).size + 1; - *((*self_0).items).offset(fresh33 as isize) = value; + let fresh25 = (*self_0).size; + (*self_0).size += 1; + *((*self_0).items).offset(fresh25 as isize) = value; } #[no_mangle] pub unsafe extern "C" fn spIntArray_addAll( @@ -8915,7 +9423,7 @@ pub unsafe extern "C" fn spIntArray_addAllValues( pub unsafe extern "C" fn spIntArray_removeAt(mut self_0: *mut spIntArray, mut index: c_int) { (*self_0).size -= 1; spine_memmove( - ((*self_0).items).offset(index as isize) as *mut c_void, + ((*self_0).items).offset(index as isize).cast::(), ((*self_0).items) .offset(index as isize) .offset(1 as c_int as isize) as *const c_void, @@ -8939,40 +9447,42 @@ pub unsafe extern "C" fn spIntArray_contains( } i += 1; } - return 0 as c_int; + 0 as c_int } #[no_mangle] pub unsafe extern "C" fn spIntArray_pop(mut self_0: *mut spIntArray) -> c_int { (*self_0).size -= 1; let mut item: c_int = *((*self_0).items).offset((*self_0).size as isize); - return item; + item } #[no_mangle] pub unsafe extern "C" fn spIntArray_peek(mut self_0: *mut spIntArray) -> c_int { - return *((*self_0).items).offset(((*self_0).size - 1 as c_int) as isize); + *((*self_0).items).offset(((*self_0).size - 1 as c_int) as isize) } #[no_mangle] pub unsafe extern "C" fn spShortArray_create(mut initialCapacity: c_int) -> *mut spShortArray { let mut array: *mut spShortArray = _spCalloc( 1 as c_int as size_t, ::core::mem::size_of::() as c_ulong, - b"spine.c\0" as *const u8 as *const c_char, - 4029 as c_int, - ) as *mut spShortArray; + (b"spine.c\0" as *const u8).cast::(), + 4176 as c_int, + ) + .cast::(); (*array).size = 0 as c_int; (*array).capacity = initialCapacity; (*array).items = _spCalloc( initialCapacity as size_t, ::core::mem::size_of::() as c_ulong, - b"spine.c\0" as *const u8 as *const c_char, - 4029 as c_int, - ) as *mut c_short; - return array; + (b"spine.c\0" as *const u8).cast::(), + 4176 as c_int, + ) + .cast::(); + array } #[no_mangle] pub unsafe extern "C" fn spShortArray_dispose(mut self_0: *mut spShortArray) { - _spFree((*self_0).items as *mut c_void); - _spFree(self_0 as *mut c_void); + _spFree((*self_0).items.cast::()); + _spFree(self_0.cast::()); } #[no_mangle] pub unsafe extern "C" fn spShortArray_clear(mut self_0: *mut spShortArray) { @@ -8991,12 +9501,13 @@ pub unsafe extern "C" fn spShortArray_setSize( ((*self_0).size as c_float * 1.75f32) as c_int }; (*self_0).items = _spRealloc( - (*self_0).items as *mut c_void, + (*self_0).items.cast::(), (::core::mem::size_of::() as c_ulong) .wrapping_mul((*self_0).capacity as c_ulong), - ) as *mut c_short; + ) + .cast::(); } - return self_0; + self_0 } #[no_mangle] pub unsafe extern "C" fn spShortArray_ensureCapacity( @@ -9008,9 +9519,10 @@ pub unsafe extern "C" fn spShortArray_ensureCapacity( } (*self_0).capacity = newCapacity; (*self_0).items = _spRealloc( - (*self_0).items as *mut c_void, + (*self_0).items.cast::(), (::core::mem::size_of::() as c_ulong).wrapping_mul((*self_0).capacity as c_ulong), - ) as *mut c_short; + ) + .cast::(); } #[no_mangle] pub unsafe extern "C" fn spShortArray_add(mut self_0: *mut spShortArray, mut value: c_short) { @@ -9021,14 +9533,15 @@ pub unsafe extern "C" fn spShortArray_add(mut self_0: *mut spShortArray, mut val ((*self_0).size as c_float * 1.75f32) as c_int }; (*self_0).items = _spRealloc( - (*self_0).items as *mut c_void, + (*self_0).items.cast::(), (::core::mem::size_of::() as c_ulong) .wrapping_mul((*self_0).capacity as c_ulong), - ) as *mut c_short; + ) + .cast::(); } - let fresh34 = (*self_0).size; - (*self_0).size = (*self_0).size + 1; - *((*self_0).items).offset(fresh34 as isize) = value; + let fresh26 = (*self_0).size; + (*self_0).size += 1; + *((*self_0).items).offset(fresh26 as isize) = value; } #[no_mangle] pub unsafe extern "C" fn spShortArray_addAll( @@ -9059,7 +9572,7 @@ pub unsafe extern "C" fn spShortArray_addAllValues( pub unsafe extern "C" fn spShortArray_removeAt(mut self_0: *mut spShortArray, mut index: c_int) { (*self_0).size -= 1; spine_memmove( - ((*self_0).items).offset(index as isize) as *mut c_void, + ((*self_0).items).offset(index as isize).cast::(), ((*self_0).items) .offset(index as isize) .offset(1 as c_int as isize) as *const c_void, @@ -9083,17 +9596,17 @@ pub unsafe extern "C" fn spShortArray_contains( } i += 1; } - return 0 as c_int; + 0 as c_int } #[no_mangle] pub unsafe extern "C" fn spShortArray_pop(mut self_0: *mut spShortArray) -> c_short { (*self_0).size -= 1; let mut item: c_short = *((*self_0).items).offset((*self_0).size as isize); - return item; + item } #[no_mangle] pub unsafe extern "C" fn spShortArray_peek(mut self_0: *mut spShortArray) -> c_short { - return *((*self_0).items).offset(((*self_0).size - 1 as c_int) as isize); + *((*self_0).items).offset(((*self_0).size - 1 as c_int) as isize) } #[no_mangle] pub unsafe extern "C" fn spUnsignedShortArray_create( @@ -9102,23 +9615,25 @@ pub unsafe extern "C" fn spUnsignedShortArray_create( let mut array: *mut spUnsignedShortArray = _spCalloc( 1 as c_int as size_t, ::core::mem::size_of::() as c_ulong, - b"spine.c\0" as *const u8 as *const c_char, - 4031 as c_int, - ) as *mut spUnsignedShortArray; + (b"spine.c\0" as *const u8).cast::(), + 4178 as c_int, + ) + .cast::(); (*array).size = 0 as c_int; (*array).capacity = initialCapacity; (*array).items = _spCalloc( initialCapacity as size_t, ::core::mem::size_of::() as c_ulong, - b"spine.c\0" as *const u8 as *const c_char, - 4031 as c_int, - ) as *mut c_ushort; - return array; + (b"spine.c\0" as *const u8).cast::(), + 4178 as c_int, + ) + .cast::(); + array } #[no_mangle] pub unsafe extern "C" fn spUnsignedShortArray_dispose(mut self_0: *mut spUnsignedShortArray) { - _spFree((*self_0).items as *mut c_void); - _spFree(self_0 as *mut c_void); + _spFree((*self_0).items.cast::()); + _spFree(self_0.cast::()); } #[no_mangle] pub unsafe extern "C" fn spUnsignedShortArray_clear(mut self_0: *mut spUnsignedShortArray) { @@ -9137,12 +9652,13 @@ pub unsafe extern "C" fn spUnsignedShortArray_setSize( ((*self_0).size as c_float * 1.75f32) as c_int }; (*self_0).items = _spRealloc( - (*self_0).items as *mut c_void, + (*self_0).items.cast::(), (::core::mem::size_of::() as c_ulong) .wrapping_mul((*self_0).capacity as c_ulong), - ) as *mut c_ushort; + ) + .cast::(); } - return self_0; + self_0 } #[no_mangle] pub unsafe extern "C" fn spUnsignedShortArray_ensureCapacity( @@ -9154,9 +9670,10 @@ pub unsafe extern "C" fn spUnsignedShortArray_ensureCapacity( } (*self_0).capacity = newCapacity; (*self_0).items = _spRealloc( - (*self_0).items as *mut c_void, + (*self_0).items.cast::(), (::core::mem::size_of::() as c_ulong).wrapping_mul((*self_0).capacity as c_ulong), - ) as *mut c_ushort; + ) + .cast::(); } #[no_mangle] pub unsafe extern "C" fn spUnsignedShortArray_add( @@ -9170,14 +9687,15 @@ pub unsafe extern "C" fn spUnsignedShortArray_add( ((*self_0).size as c_float * 1.75f32) as c_int }; (*self_0).items = _spRealloc( - (*self_0).items as *mut c_void, + (*self_0).items.cast::(), (::core::mem::size_of::() as c_ulong) .wrapping_mul((*self_0).capacity as c_ulong), - ) as *mut c_ushort; + ) + .cast::(); } - let fresh35 = (*self_0).size; - (*self_0).size = (*self_0).size + 1; - *((*self_0).items).offset(fresh35 as isize) = value; + let fresh27 = (*self_0).size; + (*self_0).size += 1; + *((*self_0).items).offset(fresh27 as isize) = value; } #[no_mangle] pub unsafe extern "C" fn spUnsignedShortArray_addAll( @@ -9211,7 +9729,7 @@ pub unsafe extern "C" fn spUnsignedShortArray_removeAt( ) { (*self_0).size -= 1; spine_memmove( - ((*self_0).items).offset(index as isize) as *mut c_void, + ((*self_0).items).offset(index as isize).cast::(), ((*self_0).items) .offset(index as isize) .offset(1 as c_int as isize) as *const c_void, @@ -9235,7 +9753,7 @@ pub unsafe extern "C" fn spUnsignedShortArray_contains( } i += 1; } - return 0 as c_int; + 0 as c_int } #[no_mangle] pub unsafe extern "C" fn spUnsignedShortArray_pop( @@ -9243,13 +9761,13 @@ pub unsafe extern "C" fn spUnsignedShortArray_pop( ) -> c_ushort { (*self_0).size -= 1; let mut item: c_ushort = *((*self_0).items).offset((*self_0).size as isize); - return item; + item } #[no_mangle] pub unsafe extern "C" fn spUnsignedShortArray_peek( mut self_0: *mut spUnsignedShortArray, ) -> c_ushort { - return *((*self_0).items).offset(((*self_0).size - 1 as c_int) as isize); + *((*self_0).items).offset(((*self_0).size - 1 as c_int) as isize) } #[no_mangle] pub unsafe extern "C" fn spArrayFloatArray_create( @@ -9258,23 +9776,25 @@ pub unsafe extern "C" fn spArrayFloatArray_create( let mut array: *mut spArrayFloatArray = _spCalloc( 1 as c_int as size_t, ::core::mem::size_of::() as c_ulong, - b"spine.c\0" as *const u8 as *const c_char, - 4033 as c_int, - ) as *mut spArrayFloatArray; + (b"spine.c\0" as *const u8).cast::(), + 4180 as c_int, + ) + .cast::(); (*array).size = 0 as c_int; (*array).capacity = initialCapacity; (*array).items = _spCalloc( initialCapacity as size_t, ::core::mem::size_of::<*mut spFloatArray>() as c_ulong, - b"spine.c\0" as *const u8 as *const c_char, - 4033 as c_int, - ) as *mut *mut spFloatArray; - return array; + (b"spine.c\0" as *const u8).cast::(), + 4180 as c_int, + ) + .cast::<*mut spFloatArray>(); + array } #[no_mangle] pub unsafe extern "C" fn spArrayFloatArray_dispose(mut self_0: *mut spArrayFloatArray) { - _spFree((*self_0).items as *mut c_void); - _spFree(self_0 as *mut c_void); + _spFree((*self_0).items.cast::()); + _spFree(self_0.cast::()); } #[no_mangle] pub unsafe extern "C" fn spArrayFloatArray_clear(mut self_0: *mut spArrayFloatArray) { @@ -9293,12 +9813,13 @@ pub unsafe extern "C" fn spArrayFloatArray_setSize( ((*self_0).size as c_float * 1.75f32) as c_int }; (*self_0).items = _spRealloc( - (*self_0).items as *mut c_void, + (*self_0).items.cast::(), (::core::mem::size_of::<*mut spFloatArray>() as c_ulong) .wrapping_mul((*self_0).capacity as c_ulong), - ) as *mut *mut spFloatArray; + ) + .cast::<*mut spFloatArray>(); } - return self_0; + self_0 } #[no_mangle] pub unsafe extern "C" fn spArrayFloatArray_ensureCapacity( @@ -9310,10 +9831,11 @@ pub unsafe extern "C" fn spArrayFloatArray_ensureCapacity( } (*self_0).capacity = newCapacity; (*self_0).items = _spRealloc( - (*self_0).items as *mut c_void, + (*self_0).items.cast::(), (::core::mem::size_of::<*mut spFloatArray>() as c_ulong) .wrapping_mul((*self_0).capacity as c_ulong), - ) as *mut *mut spFloatArray; + ) + .cast::<*mut spFloatArray>(); } #[no_mangle] pub unsafe extern "C" fn spArrayFloatArray_add( @@ -9327,15 +9849,16 @@ pub unsafe extern "C" fn spArrayFloatArray_add( ((*self_0).size as c_float * 1.75f32) as c_int }; (*self_0).items = _spRealloc( - (*self_0).items as *mut c_void, + (*self_0).items.cast::(), (::core::mem::size_of::<*mut spFloatArray>() as c_ulong) .wrapping_mul((*self_0).capacity as c_ulong), - ) as *mut *mut spFloatArray; + ) + .cast::<*mut spFloatArray>(); } - let fresh36 = (*self_0).size; - (*self_0).size = (*self_0).size + 1; - let ref mut fresh37 = *((*self_0).items).offset(fresh36 as isize); - *fresh37 = value; + let fresh28 = (*self_0).size; + (*self_0).size += 1; + let fresh29 = &mut (*((*self_0).items).offset(fresh28 as isize)); + *fresh29 = value; } #[no_mangle] pub unsafe extern "C" fn spArrayFloatArray_addAll( @@ -9369,7 +9892,7 @@ pub unsafe extern "C" fn spArrayFloatArray_removeAt( ) { (*self_0).size -= 1; spine_memmove( - ((*self_0).items).offset(index as isize) as *mut c_void, + ((*self_0).items).offset(index as isize).cast::(), ((*self_0).items) .offset(index as isize) .offset(1 as c_int as isize) as *const c_void, @@ -9393,7 +9916,7 @@ pub unsafe extern "C" fn spArrayFloatArray_contains( } i += 1; } - return 0 as c_int; + 0 as c_int } #[no_mangle] pub unsafe extern "C" fn spArrayFloatArray_pop( @@ -9401,13 +9924,13 @@ pub unsafe extern "C" fn spArrayFloatArray_pop( ) -> *mut spFloatArray { (*self_0).size -= 1; let mut item: *mut spFloatArray = *((*self_0).items).offset((*self_0).size as isize); - return item; + item } #[no_mangle] pub unsafe extern "C" fn spArrayFloatArray_peek( mut self_0: *mut spArrayFloatArray, ) -> *mut spFloatArray { - return *((*self_0).items).offset(((*self_0).size - 1 as c_int) as isize); + *((*self_0).items).offset(((*self_0).size - 1 as c_int) as isize) } #[no_mangle] pub unsafe extern "C" fn spArrayShortArray_create( @@ -9416,23 +9939,25 @@ pub unsafe extern "C" fn spArrayShortArray_create( let mut array: *mut spArrayShortArray = _spCalloc( 1 as c_int as size_t, ::core::mem::size_of::() as c_ulong, - b"spine.c\0" as *const u8 as *const c_char, - 4035 as c_int, - ) as *mut spArrayShortArray; + (b"spine.c\0" as *const u8).cast::(), + 4182 as c_int, + ) + .cast::(); (*array).size = 0 as c_int; (*array).capacity = initialCapacity; (*array).items = _spCalloc( initialCapacity as size_t, ::core::mem::size_of::<*mut spShortArray>() as c_ulong, - b"spine.c\0" as *const u8 as *const c_char, - 4035 as c_int, - ) as *mut *mut spShortArray; - return array; + (b"spine.c\0" as *const u8).cast::(), + 4182 as c_int, + ) + .cast::<*mut spShortArray>(); + array } #[no_mangle] pub unsafe extern "C" fn spArrayShortArray_dispose(mut self_0: *mut spArrayShortArray) { - _spFree((*self_0).items as *mut c_void); - _spFree(self_0 as *mut c_void); + _spFree((*self_0).items.cast::()); + _spFree(self_0.cast::()); } #[no_mangle] pub unsafe extern "C" fn spArrayShortArray_clear(mut self_0: *mut spArrayShortArray) { @@ -9451,12 +9976,13 @@ pub unsafe extern "C" fn spArrayShortArray_setSize( ((*self_0).size as c_float * 1.75f32) as c_int }; (*self_0).items = _spRealloc( - (*self_0).items as *mut c_void, + (*self_0).items.cast::(), (::core::mem::size_of::<*mut spShortArray>() as c_ulong) .wrapping_mul((*self_0).capacity as c_ulong), - ) as *mut *mut spShortArray; + ) + .cast::<*mut spShortArray>(); } - return self_0; + self_0 } #[no_mangle] pub unsafe extern "C" fn spArrayShortArray_ensureCapacity( @@ -9468,10 +9994,11 @@ pub unsafe extern "C" fn spArrayShortArray_ensureCapacity( } (*self_0).capacity = newCapacity; (*self_0).items = _spRealloc( - (*self_0).items as *mut c_void, + (*self_0).items.cast::(), (::core::mem::size_of::<*mut spShortArray>() as c_ulong) .wrapping_mul((*self_0).capacity as c_ulong), - ) as *mut *mut spShortArray; + ) + .cast::<*mut spShortArray>(); } #[no_mangle] pub unsafe extern "C" fn spArrayShortArray_add( @@ -9485,15 +10012,16 @@ pub unsafe extern "C" fn spArrayShortArray_add( ((*self_0).size as c_float * 1.75f32) as c_int }; (*self_0).items = _spRealloc( - (*self_0).items as *mut c_void, + (*self_0).items.cast::(), (::core::mem::size_of::<*mut spShortArray>() as c_ulong) .wrapping_mul((*self_0).capacity as c_ulong), - ) as *mut *mut spShortArray; + ) + .cast::<*mut spShortArray>(); } - let fresh38 = (*self_0).size; - (*self_0).size = (*self_0).size + 1; - let ref mut fresh39 = *((*self_0).items).offset(fresh38 as isize); - *fresh39 = value; + let fresh30 = (*self_0).size; + (*self_0).size += 1; + let fresh31 = &mut (*((*self_0).items).offset(fresh30 as isize)); + *fresh31 = value; } #[no_mangle] pub unsafe extern "C" fn spArrayShortArray_addAll( @@ -9527,7 +10055,7 @@ pub unsafe extern "C" fn spArrayShortArray_removeAt( ) { (*self_0).size -= 1; spine_memmove( - ((*self_0).items).offset(index as isize) as *mut c_void, + ((*self_0).items).offset(index as isize).cast::(), ((*self_0).items) .offset(index as isize) .offset(1 as c_int as isize) as *const c_void, @@ -9551,7 +10079,7 @@ pub unsafe extern "C" fn spArrayShortArray_contains( } i += 1; } - return 0 as c_int; + 0 as c_int } #[no_mangle] pub unsafe extern "C" fn spArrayShortArray_pop( @@ -9559,13 +10087,13 @@ pub unsafe extern "C" fn spArrayShortArray_pop( ) -> *mut spShortArray { (*self_0).size -= 1; let mut item: *mut spShortArray = *((*self_0).items).offset((*self_0).size as isize); - return item; + item } #[no_mangle] pub unsafe extern "C" fn spArrayShortArray_peek( mut self_0: *mut spArrayShortArray, ) -> *mut spShortArray { - return *((*self_0).items).offset(((*self_0).size - 1 as c_int) as isize); + *((*self_0).items).offset(((*self_0).size - 1 as c_int) as isize) } #[no_mangle] pub unsafe extern "C" fn spKeyValueArray_create( @@ -9574,23 +10102,25 @@ pub unsafe extern "C" fn spKeyValueArray_create( let mut array: *mut spKeyValueArray = _spCalloc( 1 as c_int as size_t, ::core::mem::size_of::() as c_ulong, - b"_file_name_\0" as *const u8 as *const c_char, + (b"_file_name_\0" as *const u8).cast::(), 39 as c_int, - ) as *mut spKeyValueArray; + ) + .cast::(); (*array).size = 0 as c_int; (*array).capacity = initialCapacity; (*array).items = _spCalloc( initialCapacity as size_t, ::core::mem::size_of::() as c_ulong, - b"_file_name_\0" as *const u8 as *const c_char, + (b"_file_name_\0" as *const u8).cast::(), 39 as c_int, - ) as *mut spKeyValue; - return array; + ) + .cast::(); + array } #[no_mangle] pub unsafe extern "C" fn spKeyValueArray_dispose(mut self_0: *mut spKeyValueArray) { - _spFree((*self_0).items as *mut c_void); - _spFree(self_0 as *mut c_void); + _spFree((*self_0).items.cast::()); + _spFree(self_0.cast::()); } #[no_mangle] pub unsafe extern "C" fn spKeyValueArray_clear(mut self_0: *mut spKeyValueArray) { @@ -9609,12 +10139,13 @@ pub unsafe extern "C" fn spKeyValueArray_setSize( ((*self_0).size as c_float * 1.75f32) as c_int }; (*self_0).items = _spRealloc( - (*self_0).items as *mut c_void, + (*self_0).items.cast::(), (::core::mem::size_of::() as c_ulong) .wrapping_mul((*self_0).capacity as c_ulong), - ) as *mut spKeyValue; + ) + .cast::(); } - return self_0; + self_0 } #[no_mangle] pub unsafe extern "C" fn spKeyValueArray_ensureCapacity( @@ -9626,10 +10157,11 @@ pub unsafe extern "C" fn spKeyValueArray_ensureCapacity( } (*self_0).capacity = newCapacity; (*self_0).items = _spRealloc( - (*self_0).items as *mut c_void, + (*self_0).items.cast::(), (::core::mem::size_of::() as c_ulong) .wrapping_mul((*self_0).capacity as c_ulong), - ) as *mut spKeyValue; + ) + .cast::(); } #[no_mangle] pub unsafe extern "C" fn spKeyValueArray_add( @@ -9643,14 +10175,15 @@ pub unsafe extern "C" fn spKeyValueArray_add( ((*self_0).size as c_float * 1.75f32) as c_int }; (*self_0).items = _spRealloc( - (*self_0).items as *mut c_void, + (*self_0).items.cast::(), (::core::mem::size_of::() as c_ulong) .wrapping_mul((*self_0).capacity as c_ulong), - ) as *mut spKeyValue; + ) + .cast::(); } - let fresh40 = (*self_0).size; - (*self_0).size = (*self_0).size + 1; - *((*self_0).items).offset(fresh40 as isize) = value; + let fresh32 = (*self_0).size; + (*self_0).size += 1; + *((*self_0).items).offset(fresh32 as isize) = value; } #[no_mangle] pub unsafe extern "C" fn spKeyValueArray_addAll( @@ -9693,17 +10226,17 @@ pub unsafe extern "C" fn spKeyValueArray_contains( } i += 1; } - return 0 as c_int; + 0 as c_int } #[no_mangle] pub unsafe extern "C" fn spKeyValueArray_pop(mut self_0: *mut spKeyValueArray) -> spKeyValue { (*self_0).size -= 1; let mut item: spKeyValue = *((*self_0).items).offset((*self_0).size as isize); - return item; + item } #[no_mangle] pub unsafe extern "C" fn spKeyValueArray_peek(mut self_0: *mut spKeyValueArray) -> spKeyValue { - return *((*self_0).items).offset(((*self_0).size - 1 as c_int) as isize); + *((*self_0).items).offset(((*self_0).size - 1 as c_int) as isize) } #[no_mangle] pub unsafe extern "C" fn spAtlasPage_create( @@ -9713,58 +10246,63 @@ pub unsafe extern "C" fn spAtlasPage_create( let mut self_0: *mut spAtlasPage = _spCalloc( 1 as c_int as size_t, ::core::mem::size_of::() as c_ulong, - b"spine.c\0" as *const u8 as *const c_char, - 4134 as c_int, - ) as *mut spAtlasPage; - let ref mut fresh41 = *(&mut (*self_0).atlas as *mut *mut spAtlas); - *fresh41 = atlas; - let ref mut fresh42 = *(&mut (*self_0).name as *mut *mut c_char); - *fresh42 = _spMalloc( + (b"spine.c\0" as *const u8).cast::(), + 4281 as c_int, + ) + .cast::(); + (*self_0).atlas = atlas; + (*self_0).name = _spMalloc( (::core::mem::size_of::() as c_ulong) .wrapping_mul((spine_strlen(name)).wrapping_add(1 as c_int as c_ulong)), - b"spine.c\0" as *const u8 as *const c_char, - 4136 as c_int, - ) as *mut c_char; - spine_strcpy(*fresh42, name); + (b"spine.c\0" as *const u8).cast::(), + 4283 as c_int, + ) + .cast::(); + spine_strcpy((*self_0).name, name); (*self_0).minFilter = SP_ATLAS_NEAREST; (*self_0).magFilter = SP_ATLAS_NEAREST; (*self_0).format = SP_ATLAS_RGBA8888; (*self_0).uWrap = SP_ATLAS_CLAMPTOEDGE; (*self_0).vWrap = SP_ATLAS_CLAMPTOEDGE; - return self_0; + self_0 } #[no_mangle] pub unsafe extern "C" fn spAtlasPage_dispose(mut self_0: *mut spAtlasPage) { _spAtlasPage_disposeTexture(self_0); - _spFree((*self_0).name as *mut c_void); - _spFree(self_0 as *mut c_void); + _spFree((*self_0).name.cast::()); + _spFree(self_0.cast::()); } #[no_mangle] pub unsafe extern "C" fn spAtlasRegion_create() -> *mut spAtlasRegion { let mut region: *mut spAtlasRegion = _spCalloc( 1 as c_int as size_t, ::core::mem::size_of::() as c_ulong, - b"spine.c\0" as *const u8 as *const c_char, - 4154 as c_int, - ) as *mut spAtlasRegion; + (b"spine.c\0" as *const u8).cast::(), + 4301 as c_int, + ) + .cast::(); (*region).keyValues = spKeyValueArray_create(2 as c_int); - return region; + region } #[no_mangle] pub unsafe extern "C" fn spAtlasRegion_dispose(mut self_0: *mut spAtlasRegion) { let mut i: c_int = 0; let mut n: c_int = 0; _spFree((*self_0).name as *mut c_void); - _spFree((*self_0).splits as *mut c_void); - _spFree((*self_0).pads as *mut c_void); + _spFree((*self_0).splits.cast::()); + _spFree((*self_0).pads.cast::()); i = 0 as c_int; n = (*(*self_0).keyValues).size; while i < n { - _spFree((*((*(*self_0).keyValues).items).offset(i as isize)).name as *mut c_void); + _spFree( + (*((*(*self_0).keyValues).items).offset(i as isize)) + .name + .cast::(), + ); i += 1; } spKeyValueArray_dispose((*self_0).keyValues); - _spFree(self_0 as *mut c_void); + _spFree(self_0.cast::()); } unsafe extern "C" fn ss_trim(mut self_0: *mut SimpleString) -> *mut SimpleString { while isspace_(*(*self_0).start as c_uchar as c_int) != 0 && (*self_0).start < (*self_0).end { @@ -9780,7 +10318,7 @@ unsafe extern "C" fn ss_trim(mut self_0: *mut SimpleString) -> *mut SimpleString } (*self_0).end = ((*self_0).end).offset(1); (*self_0).length = ((*self_0).end).offset_from((*self_0).start) as c_long as c_int; - return self_0; + self_0 } unsafe extern "C" fn ss_indexOf(mut self_0: *mut SimpleString, mut needle: c_char) -> c_int { let mut c: *mut c_char = (*self_0).start; @@ -9790,7 +10328,7 @@ unsafe extern "C" fn ss_indexOf(mut self_0: *mut SimpleString, mut needle: c_cha } c = c.offset(1); } - return -(1 as c_int); + -(1 as c_int) } unsafe extern "C" fn ss_indexOf2( mut self_0: *mut SimpleString, @@ -9804,7 +10342,7 @@ unsafe extern "C" fn ss_indexOf2( } c = c.offset(1); } - return -(1 as c_int); + -(1 as c_int) } unsafe extern "C" fn ss_substr( mut self_0: *mut SimpleString, @@ -9812,26 +10350,26 @@ unsafe extern "C" fn ss_substr( mut e: c_int, ) -> SimpleString { let mut result: SimpleString = SimpleString { - start: std::ptr::null_mut(), - end: std::ptr::null_mut(), + start: std::ptr::null_mut::(), + end: std::ptr::null_mut::(), length: 0, }; - e = s + e; + e += s; result.start = ((*self_0).start).offset(s as isize); result.end = ((*self_0).start).offset(e as isize); result.length = e - s; - return result; + result } unsafe extern "C" fn ss_substr2(mut self_0: *mut SimpleString, mut s: c_int) -> SimpleString { let mut result: SimpleString = SimpleString { - start: std::ptr::null_mut(), - end: std::ptr::null_mut(), + start: std::ptr::null_mut::(), + end: std::ptr::null_mut::(), length: 0, }; result.start = ((*self_0).start).offset(s as isize); result.end = (*self_0).end; result.length = (result.end).offset_from(result.start) as c_long as c_int; - return result; + result } unsafe extern "C" fn ss_equals(mut self_0: *mut SimpleString, mut str: *const c_char) -> c_int { let mut i: c_int = 0; @@ -9846,43 +10384,43 @@ unsafe extern "C" fn ss_equals(mut self_0: *mut SimpleString, mut str: *const c_ } i += 1; } - return -(1 as c_int); + -(1 as c_int) } unsafe extern "C" fn ss_copy(mut self_0: *mut SimpleString) -> *mut c_char { let mut string: *mut c_char = _spCalloc( ((*self_0).length + 1 as c_int) as size_t, ::core::mem::size_of::() as c_ulong, - b"spine.c\0" as *const u8 as *const c_char, - 4240 as c_int, - ) as *mut c_char; + (b"spine.c\0" as *const u8).cast::(), + 4387 as c_int, + ) + .cast::(); spine_memcpy( - string as *mut c_void, + string.cast::(), (*self_0).start as *const c_void, (*self_0).length as size_t, ); *string.offset((*self_0).length as isize) = '\0' as i32 as c_char; - return string; + string } unsafe extern "C" fn ss_toInt(mut self_0: *mut SimpleString) -> c_int { - return spine_strtol((*self_0).start, &mut (*self_0).end, 10 as c_int) as c_int; + spine_strtol((*self_0).start, &mut (*self_0).end, 10 as c_int) as c_int } unsafe extern "C" fn ai_readLine(mut self_0: *mut AtlasInput) -> *mut SimpleString { - if (*self_0).index >= (*self_0).end as *mut c_char { - return std::ptr::null_mut(); + if (*self_0).index >= (*self_0).end.cast_mut() { + return std::ptr::null_mut::(); } (*self_0).line.start = (*self_0).index; - while (*self_0).index < (*self_0).end as *mut c_char && *(*self_0).index as c_int != '\n' as i32 - { + while (*self_0).index < (*self_0).end.cast_mut() && *(*self_0).index as c_int != '\n' as i32 { (*self_0).index = ((*self_0).index).offset(1); } (*self_0).line.end = (*self_0).index; - if (*self_0).index != (*self_0).end as *mut c_char { + if (*self_0).index != (*self_0).end.cast_mut() { (*self_0).index = ((*self_0).index).offset(1); } (*self_0).line = *ss_trim(&mut (*self_0).line); (*self_0).line.length = ((*self_0).line.end).offset_from((*self_0).line.start) as c_long as c_int; - return &mut (*self_0).line; + &mut (*self_0).line } unsafe extern "C" fn ai_readEntry( mut entry: *mut SimpleString, @@ -9892,8 +10430,8 @@ unsafe extern "C" fn ai_readEntry( let mut i: c_int = 0; let mut lastMatch: c_int = 0; let mut substr: SimpleString = SimpleString { - start: std::ptr::null_mut(), - end: std::ptr::null_mut(), + start: std::ptr::null_mut::(), + end: std::ptr::null_mut::(), length: 0, }; if line.is_null() { @@ -9928,24 +10466,24 @@ unsafe extern "C" fn ai_readEntry( } } static mut formatNames: [*const c_char; 8] = [ - b"\0" as *const u8 as *const c_char, - b"Alpha\0" as *const u8 as *const c_char, - b"Intensity\0" as *const u8 as *const c_char, - b"LuminanceAlpha\0" as *const u8 as *const c_char, - b"RGB565\0" as *const u8 as *const c_char, - b"RGBA4444\0" as *const u8 as *const c_char, - b"RGB888\0" as *const u8 as *const c_char, - b"RGBA8888\0" as *const u8 as *const c_char, + (b"\0" as *const u8).cast::(), + (b"Alpha\0" as *const u8).cast::(), + (b"Intensity\0" as *const u8).cast::(), + (b"LuminanceAlpha\0" as *const u8).cast::(), + (b"RGB565\0" as *const u8).cast::(), + (b"RGBA4444\0" as *const u8).cast::(), + (b"RGB888\0" as *const u8).cast::(), + (b"RGBA8888\0" as *const u8).cast::(), ]; static mut textureFilterNames: [*const c_char; 8] = [ - b"\0" as *const u8 as *const c_char, - b"Nearest\0" as *const u8 as *const c_char, - b"Linear\0" as *const u8 as *const c_char, - b"MipMap\0" as *const u8 as *const c_char, - b"MipMapNearestNearest\0" as *const u8 as *const c_char, - b"MipMapLinearNearest\0" as *const u8 as *const c_char, - b"MipMapNearestLinear\0" as *const u8 as *const c_char, - b"MipMapLinearLinear\0" as *const u8 as *const c_char, + (b"\0" as *const u8).cast::(), + (b"Nearest\0" as *const u8).cast::(), + (b"Linear\0" as *const u8).cast::(), + (b"MipMap\0" as *const u8).cast::(), + (b"MipMapNearestNearest\0" as *const u8).cast::(), + (b"MipMapLinearNearest\0" as *const u8).cast::(), + (b"MipMapNearestLinear\0" as *const u8).cast::(), + (b"MipMapLinearLinear\0" as *const u8).cast::(), ]; #[no_mangle] pub unsafe extern "C" fn indexOf( @@ -9961,7 +10499,7 @@ pub unsafe extern "C" fn indexOf( } i += 1; } - return 0 as c_int; + 0 as c_int } #[no_mangle] pub unsafe extern "C" fn spAtlas_create( @@ -9970,27 +10508,27 @@ pub unsafe extern "C" fn spAtlas_create( mut dir: *const c_char, mut rendererObject: *mut c_void, ) -> *mut spAtlas { - let mut self_0: *mut spAtlas = std::ptr::null_mut(); + let mut self_0: *mut spAtlas = std::ptr::null_mut::(); let mut reader: AtlasInput = AtlasInput { - start: std::ptr::null(), - end: std::ptr::null(), - index: std::ptr::null_mut(), + start: std::ptr::null::(), + end: std::ptr::null::(), + index: std::ptr::null_mut::(), length: 0, line: SimpleString { - start: std::ptr::null_mut(), - end: std::ptr::null_mut(), + start: std::ptr::null_mut::(), + end: std::ptr::null_mut::(), length: 0, }, }; - let mut line: *mut SimpleString = std::ptr::null_mut(); + let mut line: *mut SimpleString = std::ptr::null_mut::(); let mut entry: [SimpleString; 5] = [SimpleString { - start: std::ptr::null_mut(), - end: std::ptr::null_mut(), + start: std::ptr::null_mut::(), + end: std::ptr::null_mut::(), length: 0, }; 5]; - let mut page: *mut spAtlasPage = std::ptr::null_mut(); - let mut lastPage: *mut spAtlasPage = std::ptr::null_mut(); - let mut lastRegion: *mut spAtlasRegion = std::ptr::null_mut(); + let mut page: *mut spAtlasPage = std::ptr::null_mut::(); + let mut lastPage: *mut spAtlasPage = std::ptr::null_mut::(); + let mut lastRegion: *mut spAtlasRegion = std::ptr::null_mut::(); let mut count: c_int = 0; let mut dirLength: c_int = spine_strlen(dir) as c_int; let mut needsSlash: c_int = (dirLength > 0 as c_int @@ -10000,13 +10538,14 @@ pub unsafe extern "C" fn spAtlas_create( self_0 = _spCalloc( 1 as c_int as size_t, ::core::mem::size_of::() as c_ulong, - b"spine.c\0" as *const u8 as *const c_char, - 4321 as c_int, - ) as *mut spAtlas; + (b"spine.c\0" as *const u8).cast::(), + 4468 as c_int, + ) + .cast::(); (*self_0).rendererObject = rendererObject; reader.start = begin; reader.end = begin.offset(length as isize); - reader.index = begin as *mut c_char; + reader.index = begin.cast_mut(); reader.length = length; line = ai_readLine(&mut reader); while !line.is_null() && (*line).length == 0 as c_int { @@ -10026,7 +10565,7 @@ pub unsafe extern "C" fn spAtlas_create( break; } if (*ss_trim(line)).length == 0 as c_int { - page = std::ptr::null_mut(); + page = std::ptr::null_mut::(); line = ai_readLine(&mut reader); } else if page.is_null() { let mut name: *mut c_char = ss_copy(line); @@ -10035,12 +10574,13 @@ pub unsafe extern "C" fn spAtlas_create( .wrapping_add(spine_strlen(name)) .wrapping_add(1 as c_int as c_ulong), ::core::mem::size_of::() as c_ulong, - b"spine.c\0" as *const u8 as *const c_char, - 4346 as c_int, - ) as *mut c_char; + (b"spine.c\0" as *const u8).cast::(), + 4493 as c_int, + ) + .cast::(); spine_memcpy( - path as *mut c_void, - dir as *const c_void, + path.cast::(), + dir.cast::(), dirLength as size_t, ); if needsSlash != 0 { @@ -10051,7 +10591,7 @@ pub unsafe extern "C" fn spAtlas_create( name, ); page = spAtlasPage_create(self_0, name); - _spFree(name as *mut c_void); + _spFree(name.cast::()); if !lastPage.is_null() { (*lastPage).next = page; } else { @@ -10065,14 +10605,14 @@ pub unsafe extern "C" fn spAtlas_create( } if ss_equals( &mut *entry.as_mut_ptr().offset(0 as c_int as isize), - b"size\0" as *const u8 as *const c_char, + (b"size\0" as *const u8).cast::(), ) != 0 { (*page).width = ss_toInt(&mut *entry.as_mut_ptr().offset(1 as c_int as isize)); (*page).height = ss_toInt(&mut *entry.as_mut_ptr().offset(2 as c_int as isize)); } else if ss_equals( &mut *entry.as_mut_ptr().offset(0 as c_int as isize), - b"format\0" as *const u8 as *const c_char, + (b"format\0" as *const u8).cast::(), ) != 0 { (*page).format = indexOf( @@ -10082,7 +10622,7 @@ pub unsafe extern "C" fn spAtlas_create( ) as spAtlasFormat; } else if ss_equals( &mut *entry.as_mut_ptr().offset(0 as c_int as isize), - b"filter\0" as *const u8 as *const c_char, + (b"filter\0" as *const u8).cast::(), ) != 0 { (*page).minFilter = indexOf( @@ -10097,7 +10637,7 @@ pub unsafe extern "C" fn spAtlas_create( ) as spAtlasFilter; } else if ss_equals( &mut *entry.as_mut_ptr().offset(0 as c_int as isize), - b"repeat\0" as *const u8 as *const c_char, + (b"repeat\0" as *const u8).cast::(), ) != 0 { (*page).uWrap = SP_ATLAS_CLAMPTOEDGE; @@ -10118,17 +10658,17 @@ pub unsafe extern "C" fn spAtlas_create( } } else if ss_equals( &mut *entry.as_mut_ptr().offset(0 as c_int as isize), - b"pma\0" as *const u8 as *const c_char, + (b"pma\0" as *const u8).cast::(), ) != 0 { (*page).pma = ss_equals( &mut *entry.as_mut_ptr().offset(1 as c_int as isize), - b"true\0" as *const u8 as *const c_char, + (b"true\0" as *const u8).cast::(), ); } } _spAtlasPage_createTexture(page, path); - _spFree(path as *mut c_void); + _spFree(path.cast::()); } else { let mut region: *mut spAtlasRegion = spAtlasRegion_create(); if !lastRegion.is_null() { @@ -10147,14 +10687,14 @@ pub unsafe extern "C" fn spAtlas_create( } if ss_equals( &mut *entry.as_mut_ptr().offset(0 as c_int as isize), - b"xy\0" as *const u8 as *const c_char, + (b"xy\0" as *const u8).cast::(), ) != 0 { (*region).x = ss_toInt(&mut *entry.as_mut_ptr().offset(1 as c_int as isize)); (*region).y = ss_toInt(&mut *entry.as_mut_ptr().offset(2 as c_int as isize)); } else if ss_equals( &mut *entry.as_mut_ptr().offset(0 as c_int as isize), - b"size\0" as *const u8 as *const c_char, + (b"size\0" as *const u8).cast::(), ) != 0 { (*region).super_0.width = @@ -10163,7 +10703,7 @@ pub unsafe extern "C" fn spAtlas_create( ss_toInt(&mut *entry.as_mut_ptr().offset(2 as c_int as isize)); } else if ss_equals( &mut *entry.as_mut_ptr().offset(0 as c_int as isize), - b"bounds\0" as *const u8 as *const c_char, + (b"bounds\0" as *const u8).cast::(), ) != 0 { (*region).x = ss_toInt(&mut *entry.as_mut_ptr().offset(1 as c_int as isize)); @@ -10174,7 +10714,7 @@ pub unsafe extern "C" fn spAtlas_create( ss_toInt(&mut *entry.as_mut_ptr().offset(4 as c_int as isize)); } else if ss_equals( &mut *entry.as_mut_ptr().offset(0 as c_int as isize), - b"offset\0" as *const u8 as *const c_char, + (b"offset\0" as *const u8).cast::(), ) != 0 { (*region).super_0.offsetX = @@ -10183,7 +10723,7 @@ pub unsafe extern "C" fn spAtlas_create( ss_toInt(&mut *entry.as_mut_ptr().offset(2 as c_int as isize)) as c_float; } else if ss_equals( &mut *entry.as_mut_ptr().offset(0 as c_int as isize), - b"orig\0" as *const u8 as *const c_char, + (b"orig\0" as *const u8).cast::(), ) != 0 { (*region).super_0.originalWidth = @@ -10192,7 +10732,7 @@ pub unsafe extern "C" fn spAtlas_create( ss_toInt(&mut *entry.as_mut_ptr().offset(2 as c_int as isize)); } else if ss_equals( &mut *entry.as_mut_ptr().offset(0 as c_int as isize), - b"offsets\0" as *const u8 as *const c_char, + (b"offsets\0" as *const u8).cast::(), ) != 0 { (*region).super_0.offsetX = @@ -10205,18 +10745,18 @@ pub unsafe extern "C" fn spAtlas_create( ss_toInt(&mut *entry.as_mut_ptr().offset(4 as c_int as isize)); } else if ss_equals( &mut *entry.as_mut_ptr().offset(0 as c_int as isize), - b"rotate\0" as *const u8 as *const c_char, + (b"rotate\0" as *const u8).cast::(), ) != 0 { if ss_equals( &mut *entry.as_mut_ptr().offset(1 as c_int as isize), - b"true\0" as *const u8 as *const c_char, + (b"true\0" as *const u8).cast::(), ) != 0 { (*region).super_0.degrees = 90 as c_int; } else if ss_equals( &mut *entry.as_mut_ptr().offset(1 as c_int as isize), - b"false\0" as *const u8 as *const c_char, + (b"false\0" as *const u8).cast::(), ) == 0 { (*region).super_0.degrees = @@ -10224,7 +10764,7 @@ pub unsafe extern "C" fn spAtlas_create( } } else if ss_equals( &mut *entry.as_mut_ptr().offset(0 as c_int as isize), - b"index\0" as *const u8 as *const c_char, + (b"index\0" as *const u8).cast::(), ) != 0 { (*region).index = @@ -10232,7 +10772,7 @@ pub unsafe extern "C" fn spAtlas_create( } else { let mut i: c_int = 0 as c_int; let mut keyValue: spKeyValue = spKeyValue { - name: std::ptr::null_mut(), + name: std::ptr::null_mut::(), values: [0.; 5], }; keyValue.name = ss_copy(&mut *entry.as_mut_ptr().offset(0 as c_int as isize)); @@ -10267,7 +10807,7 @@ pub unsafe extern "C" fn spAtlas_create( } } } - return self_0; + self_0 } #[no_mangle] pub unsafe extern "C" fn spAtlas_createFromFile( @@ -10275,10 +10815,10 @@ pub unsafe extern "C" fn spAtlas_createFromFile( mut rendererObject: *mut c_void, ) -> *mut spAtlas { let mut dirLength: c_int = 0; - let mut dir: *mut c_char = std::ptr::null_mut(); + let mut dir: *mut c_char = std::ptr::null_mut::(); let mut length: c_int = 0; - let mut data: *const c_char = std::ptr::null(); - let mut atlas: *mut spAtlas = std::ptr::null_mut(); + let mut data: *const c_char = std::ptr::null::(); + let mut atlas: *mut spAtlas = std::ptr::null_mut::(); let mut lastForwardSlash: *const c_char = spine_strrchr(path, '/' as i32); let mut lastBackwardSlash: *const c_char = spine_strrchr(path, '\\' as i32); let mut lastSlash: *const c_char = if lastForwardSlash > lastBackwardSlash { @@ -10297,12 +10837,13 @@ pub unsafe extern "C" fn spAtlas_createFromFile( dir = _spMalloc( (::core::mem::size_of::() as c_ulong) .wrapping_mul((dirLength + 1 as c_int) as c_ulong), - b"spine.c\0" as *const u8 as *const c_char, - 4469 as c_int, - ) as *mut c_char; + (b"spine.c\0" as *const u8).cast::(), + 4616 as c_int, + ) + .cast::(); spine_memcpy( - dir as *mut c_void, - path as *const c_void, + dir.cast::(), + path.cast::(), dirLength as size_t, ); *dir.offset(dirLength as isize) = '\0' as i32 as c_char; @@ -10311,13 +10852,13 @@ pub unsafe extern "C" fn spAtlas_createFromFile( atlas = spAtlas_create(data, length, dir, rendererObject); } _spFree(data as *mut c_void); - _spFree(dir as *mut c_void); - return atlas; + _spFree(dir.cast::()); + atlas } #[no_mangle] pub unsafe extern "C" fn spAtlas_dispose(mut self_0: *mut spAtlas) { - let mut region: *mut spAtlasRegion = std::ptr::null_mut(); - let mut nextRegion: *mut spAtlasRegion = std::ptr::null_mut(); + let mut region: *mut spAtlasRegion = std::ptr::null_mut::(); + let mut nextRegion: *mut spAtlasRegion = std::ptr::null_mut::(); let mut page: *mut spAtlasPage = (*self_0).pages; while !page.is_null() { let mut nextPage: *mut spAtlasPage = (*page).next; @@ -10330,7 +10871,7 @@ pub unsafe extern "C" fn spAtlas_dispose(mut self_0: *mut spAtlas) { spAtlasRegion_dispose(region); region = nextRegion; } - _spFree(self_0 as *mut c_void); + _spFree(self_0.cast::()); } #[no_mangle] pub unsafe extern "C" fn spAtlas_findRegion( @@ -10344,7 +10885,7 @@ pub unsafe extern "C" fn spAtlas_findRegion( } region = (*region).next; } - return std::ptr::null_mut(); + std::ptr::null_mut::() } unsafe extern "C" fn loadSequence( mut atlas: *mut spAtlas, @@ -10357,29 +10898,30 @@ unsafe extern "C" fn loadSequence( .wrapping_add((*sequence).digits as c_ulong) .wrapping_add(2 as c_int as c_ulong), ::core::mem::size_of::() as c_ulong, - b"spine.c\0" as *const u8 as *const c_char, - 4543 as c_int, - ) as *mut c_char; + (b"spine.c\0" as *const u8).cast::(), + 4690 as c_int, + ) + .cast::(); let mut i: c_int = 0; i = 0 as c_int; while i < (*regions).size { spSequence_getPath(sequence, basePath, i, path); - let ref mut fresh43 = *((*regions).items).offset(i as isize); - *fresh43 = &mut (*(spAtlas_findRegion + let fresh33 = &mut (*((*regions).items).offset(i as isize)); + *fresh33 = &mut (*(spAtlas_findRegion as unsafe extern "C" fn(*const spAtlas, *const c_char) -> *mut spAtlasRegion)( atlas, path, )) .super_0; if (*((*regions).items).offset(i as isize)).is_null() { - _spFree(path as *mut c_void); + _spFree(path.cast::()); return 0 as c_int; } - let ref mut fresh44 = (**((*regions).items).offset(i as isize)).rendererObject; - *fresh44 = *((*regions).items).offset(i as isize) as *mut c_void; + let fresh34 = &mut (**((*regions).items).offset(i as isize)).rendererObject; + *fresh34 = (*((*regions).items).offset(i as isize)).cast::(); i += 1; } - _spFree(path as *mut c_void); - return -(1 as c_int); + _spFree(path.cast::()); + -(1 as c_int) } #[no_mangle] pub unsafe extern "C" fn _spAtlasAttachmentLoader_createAttachment( @@ -10390,7 +10932,7 @@ pub unsafe extern "C" fn _spAtlasAttachmentLoader_createAttachment( mut path: *const c_char, mut sequence: *mut spSequence, ) -> *mut spAttachment { - let mut self_0: *mut spAtlasAttachmentLoader = loader as *mut spAtlasAttachmentLoader; + let mut self_0: *mut spAtlasAttachmentLoader = loader.cast::(); match type_0 as c_uint { 0 => { let mut attachment: *mut spRegionAttachment = spRegionAttachment_create(name); @@ -10399,11 +10941,11 @@ pub unsafe extern "C" fn _spAtlasAttachmentLoader_createAttachment( spAttachment_dispose(&mut (*attachment).super_0); _spAttachmentLoader_setError( loader, - b"Couldn't load sequence for region attachment: \0" as *const u8 - as *const c_char, + (b"Couldn't load sequence for region attachment: \0" as *const u8) + .cast::(), path, ); - return std::ptr::null_mut(); + return std::ptr::null_mut::(); } } else { let mut region: *mut spAtlasRegion = spAtlas_findRegion((*self_0).atlas, path); @@ -10411,15 +10953,15 @@ pub unsafe extern "C" fn _spAtlasAttachmentLoader_createAttachment( spAttachment_dispose(&mut (*attachment).super_0); _spAttachmentLoader_setError( loader, - b"Region not found: \0" as *const u8 as *const c_char, + (b"Region not found: \0" as *const u8).cast::(), path, ); - return std::ptr::null_mut(); + return std::ptr::null_mut::(); } - (*attachment).rendererObject = region as *mut c_void; + (*attachment).rendererObject = region.cast::(); (*attachment).region = &mut (*region).super_0; } - return &mut (*attachment).super_0; + &mut (*attachment).super_0 } 2 | 3 => { let mut attachment_0: *mut spMeshAttachment = spMeshAttachment_create(name); @@ -10428,63 +10970,63 @@ pub unsafe extern "C" fn _spAtlasAttachmentLoader_createAttachment( spAttachment_dispose(&mut (*attachment_0).super_0.super_0); _spAttachmentLoader_setError( loader, - b"Couldn't load sequence for mesh attachment: \0" as *const u8 - as *const c_char, + (b"Couldn't load sequence for mesh attachment: \0" as *const u8) + .cast::(), path, ); - return std::ptr::null_mut(); + return std::ptr::null_mut::(); } } else { let mut region_0: *mut spAtlasRegion = spAtlas_findRegion((*self_0).atlas, path); if region_0.is_null() { _spAttachmentLoader_setError( loader, - b"Region not found: \0" as *const u8 as *const c_char, + (b"Region not found: \0" as *const u8).cast::(), path, ); - return std::ptr::null_mut(); + return std::ptr::null_mut::(); } - (*attachment_0).rendererObject = region_0 as *mut c_void; + (*attachment_0).rendererObject = region_0.cast::(); (*attachment_0).region = &mut (*region_0).super_0; } - return &mut (*attachment_0).super_0.super_0; + &mut (*attachment_0).super_0.super_0 } 1 => { - return &mut (*(spBoundingBoxAttachment_create + &mut (*(spBoundingBoxAttachment_create as unsafe extern "C" fn(*const c_char) -> *mut spBoundingBoxAttachment)( name )) .super_0 - .super_0; + .super_0 } 4 => { - return &mut (*(spPathAttachment_create + &mut (*(spPathAttachment_create as unsafe extern "C" fn(*const c_char) -> *mut spPathAttachment)( name )) .super_0 - .super_0; + .super_0 } 5 => { - return &mut (*(spPointAttachment_create + &mut (*(spPointAttachment_create as unsafe extern "C" fn(*const c_char) -> *mut spPointAttachment)( name )) - .super_0; + .super_0 } 6 => { - return &mut (*(spClippingAttachment_create + &mut (*(spClippingAttachment_create as unsafe extern "C" fn(*const c_char) -> *mut spClippingAttachment)( name )) .super_0 - .super_0; + .super_0 } _ => { _spAttachmentLoader_setUnknownTypeError(loader, type_0); - return std::ptr::null_mut(); + std::ptr::null_mut::() } - }; + } } #[no_mangle] pub unsafe extern "C" fn spAtlasAttachmentLoader_create( @@ -10493,9 +11035,10 @@ pub unsafe extern "C" fn spAtlasAttachmentLoader_create( let mut self_0: *mut spAtlasAttachmentLoader = _spCalloc( 1 as c_int as size_t, ::core::mem::size_of::() as c_ulong, - b"spine.c\0" as *const u8 as *const c_char, - 4620 as c_int, - ) as *mut spAtlasAttachmentLoader; + (b"spine.c\0" as *const u8).cast::(), + 4767 as c_int, + ) + .cast::(); _spAttachmentLoader_init( &mut (*self_0).super_0, Some(_spAttachmentLoader_deinit as unsafe extern "C" fn(*mut spAttachmentLoader) -> ()), @@ -10514,7 +11057,7 @@ pub unsafe extern "C" fn spAtlasAttachmentLoader_create( None, ); (*self_0).atlas = atlas; - return self_0; + self_0 } #[no_mangle] pub unsafe extern "C" fn _spAttachment_init( @@ -10524,40 +11067,40 @@ pub unsafe extern "C" fn _spAttachment_init( mut dispose: Option ()>, mut copy: Option *mut spAttachment>, ) { - let ref mut fresh45 = - *(&mut (*self_0).vtable as *mut *mut c_void as *mut *mut _spAttachmentVtable); - *fresh45 = _spCalloc( + (*self_0).vtable = _spCalloc( 1 as c_int as size_t, ::core::mem::size_of::<_spAttachmentVtable>() as c_ulong, - b"spine.c\0" as *const u8 as *const c_char, - 4667 as c_int, - ) as *mut _spAttachmentVtable; - let ref mut fresh46 = (*((*self_0).vtable as *mut _spAttachmentVtable)).dispose; - *fresh46 = dispose; - let ref mut fresh47 = (*((*self_0).vtable as *mut _spAttachmentVtable)).copy; - *fresh47 = copy; - let ref mut fresh48 = *(&mut (*self_0).name as *mut *mut c_char); - *fresh48 = _spMalloc( + (b"spine.c\0" as *const u8).cast::(), + 4814 as c_int, + ) + .cast::<_spAttachmentVtable>() as *const c_void; + let fresh35 = &mut (*((*self_0).vtable as *mut _spAttachmentVtable)).dispose; + *fresh35 = dispose; + let fresh36 = &mut (*((*self_0).vtable as *mut _spAttachmentVtable)).copy; + *fresh36 = copy; + (*self_0).name = _spMalloc( (::core::mem::size_of::() as c_ulong) .wrapping_mul((spine_strlen(name)).wrapping_add(1 as c_int as c_ulong)), - b"spine.c\0" as *const u8 as *const c_char, - 4671 as c_int, - ) as *mut c_char; - spine_strcpy(*fresh48, name); - *(&mut (*self_0).type_0 as *mut spAttachmentType) = type_0; + (b"spine.c\0" as *const u8).cast::(), + 4818 as c_int, + ) + .cast::(); + spine_strcpy((*self_0).name, name); + (*self_0).type_0 = type_0; } #[no_mangle] pub unsafe extern "C" fn _spAttachment_deinit(mut self_0: *mut spAttachment) { if !((*self_0).attachmentLoader).is_null() { spAttachmentLoader_disposeAttachment((*self_0).attachmentLoader, self_0); } - _spFree((*self_0).vtable as *mut c_void); - _spFree((*self_0).name as *mut c_void); + _spFree((*self_0).vtable.cast_mut()); + _spFree((*self_0).name.cast::()); } #[no_mangle] pub unsafe extern "C" fn spAttachment_copy(mut self_0: *mut spAttachment) -> *mut spAttachment { - return ((*((*self_0).vtable as *mut _spAttachmentVtable)).copy) - .expect("non-null function pointer")(self_0); + ((*((*self_0).vtable as *mut _spAttachmentVtable)).copy).expect("non-null function pointer")( + self_0, + ) } #[no_mangle] pub unsafe extern "C" fn spAttachment_dispose(mut self_0: *mut spAttachment) { @@ -10588,35 +11131,33 @@ pub unsafe extern "C" fn _spAttachmentLoader_init( unsafe extern "C" fn(*mut spAttachmentLoader, *mut spAttachment) -> (), >, ) { - let ref mut fresh49 = - *(&mut (*self_0).vtable as *mut *mut c_void as *mut *mut _spAttachmentLoaderVtable); - *fresh49 = _spCalloc( + (*self_0).vtable = _spCalloc( 1 as c_int as size_t, ::core::mem::size_of::<_spAttachmentLoaderVtable>() as c_ulong, - b"spine.c\0" as *const u8 as *const c_char, - 4741 as c_int, - ) as *mut _spAttachmentLoaderVtable; - let ref mut fresh50 = (*((*self_0).vtable as *mut _spAttachmentLoaderVtable)).dispose; - *fresh50 = dispose; - let ref mut fresh51 = (*((*self_0).vtable as *mut _spAttachmentLoaderVtable)).createAttachment; - *fresh51 = createAttachment; - let ref mut fresh52 = - (*((*self_0).vtable as *mut _spAttachmentLoaderVtable)).configureAttachment; - *fresh52 = configureAttachment; - let ref mut fresh53 = (*((*self_0).vtable as *mut _spAttachmentLoaderVtable)).disposeAttachment; - *fresh53 = disposeAttachment; + (b"spine.c\0" as *const u8).cast::(), + 4888 as c_int, + ) + .cast::<_spAttachmentLoaderVtable>() as *const c_void; + let fresh37 = &mut (*((*self_0).vtable as *mut _spAttachmentLoaderVtable)).dispose; + *fresh37 = dispose; + let fresh38 = &mut (*((*self_0).vtable as *mut _spAttachmentLoaderVtable)).createAttachment; + *fresh38 = createAttachment; + let fresh39 = &mut (*((*self_0).vtable as *mut _spAttachmentLoaderVtable)).configureAttachment; + *fresh39 = configureAttachment; + let fresh40 = &mut (*((*self_0).vtable as *mut _spAttachmentLoaderVtable)).disposeAttachment; + *fresh40 = disposeAttachment; } #[no_mangle] pub unsafe extern "C" fn _spAttachmentLoader_deinit(mut self_0: *mut spAttachmentLoader) { - _spFree((*self_0).vtable as *mut c_void); - _spFree((*self_0).error1 as *mut c_void); - _spFree((*self_0).error2 as *mut c_void); + _spFree((*self_0).vtable.cast_mut()); + _spFree((*self_0).error1.cast::()); + _spFree((*self_0).error2.cast::()); } #[no_mangle] pub unsafe extern "C" fn spAttachmentLoader_dispose(mut self_0: *mut spAttachmentLoader) { ((*((*self_0).vtable as *mut _spAttachmentLoaderVtable)).dispose) .expect("non-null function pointer")(self_0); - _spFree(self_0 as *mut c_void); + _spFree(self_0.cast::()); } #[no_mangle] pub unsafe extern "C" fn spAttachmentLoader_createAttachment( @@ -10627,12 +11168,12 @@ pub unsafe extern "C" fn spAttachmentLoader_createAttachment( mut path: *const c_char, mut sequence: *mut spSequence, ) -> *mut spAttachment { - _spFree((*self_0).error1 as *mut c_void); - _spFree((*self_0).error2 as *mut c_void); - (*self_0).error1 = std::ptr::null_mut(); - (*self_0).error2 = std::ptr::null_mut(); - return ((*((*self_0).vtable as *mut _spAttachmentLoaderVtable)).createAttachment) - .expect("non-null function pointer")(self_0, skin, type_0, name, path, sequence); + _spFree((*self_0).error1.cast::()); + _spFree((*self_0).error2.cast::()); + (*self_0).error1 = std::ptr::null_mut::(); + (*self_0).error2 = std::ptr::null_mut::(); + ((*((*self_0).vtable as *mut _spAttachmentLoaderVtable)).createAttachment) + .expect("non-null function pointer")(self_0, skin, type_0, name, path, sequence) } #[no_mangle] pub unsafe extern "C" fn spAttachmentLoader_configureAttachment( @@ -10662,24 +11203,24 @@ pub unsafe extern "C" fn _spAttachmentLoader_setError( mut error1: *const c_char, mut error2: *const c_char, ) { - _spFree((*self_0).error1 as *mut c_void); - _spFree((*self_0).error2 as *mut c_void); - let ref mut fresh54 = *(&mut (*self_0).error1 as *mut *mut c_char); - *fresh54 = _spMalloc( + _spFree((*self_0).error1.cast::()); + _spFree((*self_0).error2.cast::()); + (*self_0).error1 = _spMalloc( (::core::mem::size_of::() as c_ulong) .wrapping_mul((spine_strlen(error1)).wrapping_add(1 as c_int as c_ulong)), - b"spine.c\0" as *const u8 as *const c_char, - 4782 as c_int, - ) as *mut c_char; - spine_strcpy(*fresh54, error1); - let ref mut fresh55 = *(&mut (*self_0).error2 as *mut *mut c_char); - *fresh55 = _spMalloc( + (b"spine.c\0" as *const u8).cast::(), + 4929 as c_int, + ) + .cast::(); + spine_strcpy((*self_0).error1, error1); + (*self_0).error2 = _spMalloc( (::core::mem::size_of::() as c_ulong) .wrapping_mul((spine_strlen(error2)).wrapping_add(1 as c_int as c_ulong)), - b"spine.c\0" as *const u8 as *const c_char, - 4783 as c_int, - ) as *mut c_char; - spine_strcpy(*fresh55, error2); + (b"spine.c\0" as *const u8).cast::(), + 4930 as c_int, + ) + .cast::(); + spine_strcpy((*self_0).error2, error2); } #[no_mangle] pub unsafe extern "C" fn _spAttachmentLoader_setUnknownTypeError( @@ -10687,14 +11228,15 @@ pub unsafe extern "C" fn _spAttachmentLoader_setUnknownTypeError( mut type_0: spAttachmentType, ) { let mut buffer: [c_char; 16] = [0; 16]; - spine_sprintf!( + spine_snprintf!( buffer.as_mut_ptr(), - b"%d\0" as *const u8 as *const c_char, + 16 as c_int as size_t, + (b"%d\0" as *const u8).cast::(), type_0 as c_uint, ); _spAttachmentLoader_setError( self_0, - b"Unknown attachment type: \0" as *const u8 as *const c_char, + (b"Unknown attachment type: \0" as *const u8).cast::(), buffer.as_mut_ptr(), ); } @@ -10705,7 +11247,7 @@ pub unsafe extern "C" fn spBone_setYDown(mut value: c_int) { } #[no_mangle] pub unsafe extern "C" fn spBone_isYDown() -> c_int { - return yDown; + yDown } #[no_mangle] pub unsafe extern "C" fn spBone_create( @@ -10716,24 +11258,24 @@ pub unsafe extern "C" fn spBone_create( let mut self_0: *mut spBone = _spCalloc( 1 as c_int as size_t, ::core::mem::size_of::() as c_ulong, - b"spine.c\0" as *const u8 as *const c_char, - 4835 as c_int, - ) as *mut spBone; - let ref mut fresh56 = *(&mut (*self_0).data as *mut *mut spBoneData); - *fresh56 = data; - let ref mut fresh57 = *(&mut (*self_0).skeleton as *mut *mut spSkeleton); - *fresh57 = skeleton; - let ref mut fresh58 = *(&mut (*self_0).parent as *mut *mut spBone); - *fresh58 = parent; - *(&mut (*self_0).a as *mut c_float) = 1.0f32; - *(&mut (*self_0).d as *mut c_float) = 1.0f32; + (b"spine.c\0" as *const u8).cast::(), + 4982 as c_int, + ) + .cast::(); + (*self_0).data = data; + (*self_0).skeleton = skeleton; + (*self_0).parent = parent; + (*self_0).a = 1.0f32; + (*self_0).d = 1.0f32; + (*self_0).active = -(1 as c_int); + (*self_0).inherit = SP_INHERIT_NORMAL; spBone_setToSetupPose(self_0); - return self_0; + self_0 } #[no_mangle] pub unsafe extern "C" fn spBone_dispose(mut self_0: *mut spBone) { - _spFree((*self_0).children as *mut c_void); - _spFree(self_0 as *mut c_void); + _spFree((*self_0).children.cast::()); + _spFree(self_0.cast::()); } #[no_mangle] pub unsafe extern "C" fn spBone_update(mut self_0: *mut spBone) { @@ -10772,13 +11314,10 @@ pub unsafe extern "C" fn spBone_updateWorldTransformWith( mut shearX: c_float, mut shearY: c_float, ) { - let mut cosine: c_float = 0.; - let mut sine: c_float = 0.; let mut pa: c_float = 0.; let mut pb: c_float = 0.; let mut pc: c_float = 0.; let mut pd: c_float = 0.; - let mut parent: *mut spBone = (*self_0).parent; let mut sx: c_float = (*(*self_0).skeleton).scaleX; let mut sy: c_float = (*(*self_0).skeleton).scaleY * (if spBone_isYDown() != 0 { @@ -10786,6 +11325,7 @@ pub unsafe extern "C" fn spBone_updateWorldTransformWith( } else { 1 as c_int }) as c_float; + let mut parent: *mut spBone = (*self_0).parent; (*self_0).ax = x; (*self_0).ay = y; (*self_0).arotation = rotation; @@ -10794,162 +11334,117 @@ pub unsafe extern "C" fn spBone_updateWorldTransformWith( (*self_0).ashearX = shearX; (*self_0).ashearY = shearY; if parent.is_null() { - let mut rotationY: c_float = rotation + 90 as c_int as c_float + shearY; - *(&mut (*self_0).a as *mut c_float) = - spine_cosf((rotation + shearX) * (3.1415926535897932385f32 / 180 as c_int as c_float)) - * scaleX - * sx; - *(&mut (*self_0).b as *mut c_float) = - spine_cosf(rotationY * (3.1415926535897932385f32 / 180 as c_int as c_float)) - * scaleY - * sx; - *(&mut (*self_0).c as *mut c_float) = - spine_sinf((rotation + shearX) * (3.1415926535897932385f32 / 180 as c_int as c_float)) - * scaleX - * sy; - *(&mut (*self_0).d as *mut c_float) = - spine_sinf(rotationY * (3.1415926535897932385f32 / 180 as c_int as c_float)) - * scaleY - * sy; - *(&mut (*self_0).worldX as *mut c_float) = x * sx + (*(*self_0).skeleton).x; - *(&mut (*self_0).worldY as *mut c_float) = y * sy + (*(*self_0).skeleton).y; + let mut rx: c_float = (rotation + shearX) * (3.141_592_7_f32 / 180 as c_int as c_float); + let mut ry: c_float = (rotation + 90 as c_int as c_float + shearY) + * (3.141_592_7_f32 / 180 as c_int as c_float); + (*self_0).a = spine_cosf(rx) * scaleX * sx; + (*self_0).b = spine_cosf(ry) * scaleY * sx; + (*self_0).c = spine_sinf(rx) * scaleX * sy; + (*self_0).d = spine_sinf(ry) * scaleY * sy; + (*self_0).worldX = x * sx + (*(*self_0).skeleton).x; + (*self_0).worldY = y * sy + (*(*self_0).skeleton).y; return; } pa = (*parent).a; pb = (*parent).b; pc = (*parent).c; pd = (*parent).d; - *(&mut (*self_0).worldX as *mut c_float) = pa * x + pb * y + (*parent).worldX; - *(&mut (*self_0).worldY as *mut c_float) = pc * x + pd * y + (*parent).worldY; - match (*(*self_0).data).transformMode as c_uint { + (*self_0).worldX = pa * x + pb * y + (*parent).worldX; + (*self_0).worldY = pc * x + pd * y + (*parent).worldY; + match (*self_0).inherit as c_uint { 0 => { - let mut rotationY_0: c_float = rotation + 90 as c_int as c_float + shearY; - let mut la: c_float = spine_cosf( - (rotation + shearX) * (3.1415926535897932385f32 / 180 as c_int as c_float), - ) * scaleX; - let mut lb: c_float = - spine_cosf(rotationY_0 * (3.1415926535897932385f32 / 180 as c_int as c_float)) - * scaleY; - let mut lc: c_float = spine_sinf( - (rotation + shearX) * (3.1415926535897932385f32 / 180 as c_int as c_float), - ) * scaleX; - let mut ld: c_float = - spine_sinf(rotationY_0 * (3.1415926535897932385f32 / 180 as c_int as c_float)) - * scaleY; - *(&mut (*self_0).a as *mut c_float) = pa * la + pb * lc; - *(&mut (*self_0).b as *mut c_float) = pa * lb + pb * ld; - *(&mut (*self_0).c as *mut c_float) = pc * la + pd * lc; - *(&mut (*self_0).d as *mut c_float) = pc * lb + pd * ld; + let mut rx_0: c_float = + (rotation + shearX) * (3.141_592_7_f32 / 180 as c_int as c_float); + let mut ry_0: c_float = (rotation + 90 as c_int as c_float + shearY) + * (3.141_592_7_f32 / 180 as c_int as c_float); + let mut la: c_float = spine_cosf(rx_0) * scaleX; + let mut lb: c_float = spine_cosf(ry_0) * scaleY; + let mut lc: c_float = spine_sinf(rx_0) * scaleX; + let mut ld: c_float = spine_sinf(ry_0) * scaleY; + (*self_0).a = pa * la + pb * lc; + (*self_0).b = pa * lb + pb * ld; + (*self_0).c = pc * la + pd * lc; + (*self_0).d = pc * lb + pd * ld; return; } 1 => { - let mut rotationY_1: c_float = rotation + 90 as c_int as c_float + shearY; - *(&mut (*self_0).a as *mut c_float) = spine_cosf( - (rotation + shearX) * (3.1415926535897932385f32 / 180 as c_int as c_float), - ) * scaleX; - *(&mut (*self_0).b as *mut c_float) = - spine_cosf(rotationY_1 * (3.1415926535897932385f32 / 180 as c_int as c_float)) - * scaleY; - *(&mut (*self_0).c as *mut c_float) = spine_sinf( - (rotation + shearX) * (3.1415926535897932385f32 / 180 as c_int as c_float), - ) * scaleX; - *(&mut (*self_0).d as *mut c_float) = - spine_sinf(rotationY_1 * (3.1415926535897932385f32 / 180 as c_int as c_float)) - * scaleY; + let mut rx_1: c_float = + (rotation + shearX) * (3.141_592_7_f32 / 180 as c_int as c_float); + let mut ry_1: c_float = (rotation + 90 as c_int as c_float + shearY) + * (3.141_592_7_f32 / 180 as c_int as c_float); + (*self_0).a = spine_cosf(rx_1) * scaleX; + (*self_0).b = spine_cosf(ry_1) * scaleY; + (*self_0).c = spine_sinf(rx_1) * scaleX; + (*self_0).d = spine_sinf(ry_1) * scaleY; } 2 => { let mut s: c_float = pa * pa + pc * pc; let mut prx: c_float = 0.; - let mut rx: c_float = 0.; - let mut ry: c_float = 0.; - let mut la_0: c_float = 0.; - let mut lb_0: c_float = 0.; - let mut lc_0: c_float = 0.; - let mut ld_0: c_float = 0.; if s > 0.0001f32 { s = (if pa * pd - pb * pc < 0 as c_int as c_float { -(pa * pd - pb * pc) } else { pa * pd - pb * pc }) / s; - pa /= (*(*self_0).skeleton).scaleX; - pc /= (*(*self_0).skeleton).scaleY; + pa /= sx; + pc /= sy; pb = pc * s; pd = pa * s; - prx = spine_atan2f(pc, pa) * (180 as c_int as c_float / 3.1415926535897932385f32); + prx = spine_atan2f(pc, pa) * (180 as c_int as c_float / 3.141_592_7_f32); } else { pa = 0 as c_int as c_float; pc = 0 as c_int as c_float; prx = 90 as c_int as c_float - - spine_atan2f(pd, pb) * (180 as c_int as c_float / 3.1415926535897932385f32); - } - rx = rotation + shearX - prx; - ry = rotation + shearY - prx + 90 as c_int as c_float; - la_0 = spine_cosf(rx * (3.1415926535897932385f32 / 180 as c_int as c_float)) * scaleX; - lb_0 = spine_cosf(ry * (3.1415926535897932385f32 / 180 as c_int as c_float)) * scaleY; - lc_0 = spine_sinf(rx * (3.1415926535897932385f32 / 180 as c_int as c_float)) * scaleX; - ld_0 = spine_sinf(ry * (3.1415926535897932385f32 / 180 as c_int as c_float)) * scaleY; - *(&mut (*self_0).a as *mut c_float) = pa * la_0 - pb * lc_0; - *(&mut (*self_0).b as *mut c_float) = pa * lb_0 - pb * ld_0; - *(&mut (*self_0).c as *mut c_float) = pc * la_0 + pd * lc_0; - *(&mut (*self_0).d as *mut c_float) = pc * lb_0 + pd * ld_0; + - spine_atan2f(pd, pb) * (180 as c_int as c_float / 3.141_592_7_f32); + } + let mut rx_2: c_float = + (rotation + shearX - prx) * (3.141_592_7_f32 / 180 as c_int as c_float); + let mut ry_2: c_float = (rotation + shearY - prx + 90 as c_int as c_float) + * (3.141_592_7_f32 / 180 as c_int as c_float); + let mut la_0: c_float = spine_cosf(rx_2) * scaleX; + let mut lb_0: c_float = spine_cosf(ry_2) * scaleY; + let mut lc_0: c_float = spine_sinf(rx_2) * scaleX; + let mut ld_0: c_float = spine_sinf(ry_2) * scaleY; + (*self_0).a = pa * la_0 - pb * lc_0; + (*self_0).b = pa * lb_0 - pb * ld_0; + (*self_0).c = pc * la_0 + pd * lc_0; + (*self_0).d = pc * lb_0 + pd * ld_0; } 3 | 4 => { - let mut za: c_float = 0.; - let mut zc: c_float = 0.; - let mut s_0: c_float = 0.; - let mut r: c_float = 0.; - let mut zb: c_float = 0.; - let mut zd: c_float = 0.; - let mut la_1: c_float = 0.; - let mut lb_1: c_float = 0.; - let mut lc_1: c_float = 0.; - let mut ld_1: c_float = 0.; - cosine = spine_cosf(rotation * (3.1415926535897932385f32 / 180 as c_int as c_float)); - sine = spine_sinf(rotation * (3.1415926535897932385f32 / 180 as c_int as c_float)); - za = (pa * cosine + pb * sine) / sx; - zc = (pc * cosine + pd * sine) / sy; - s_0 = spine_sqrtf(za * za + zc * zc); - if s_0 > 0.00001f32 { - s_0 = 1 as c_int as c_float / s_0; - } - za *= s_0; - zc *= s_0; - s_0 = spine_sqrtf(za * za + zc * zc); - if (*(*self_0).data).transformMode as c_uint - == SP_TRANSFORMMODE_NOSCALE as c_int as c_uint + rotation *= 3.141_592_7_f32 / 180 as c_int as c_float; + let mut cosine: c_float = spine_cosf(rotation); + let mut sine: c_float = spine_sinf(rotation); + let mut za: c_float = (pa * cosine + pb * sine) / sx; + let mut zc: c_float = (pc * cosine + pd * sine) / sy; + let mut s_0: c_float = spine_sqrtf(za * za + zc * zc); + if (*(*self_0).data).inherit as c_uint == SP_INHERIT_NOSCALE as c_int as c_uint && (pa * pd - pb * pc < 0 as c_int as c_float) as c_int != ((sx < 0 as c_int as c_float) as c_int != (sy < 0 as c_int as c_float) as c_int) as c_int { s_0 = -s_0; } - r = 3.1415926535897932385f32 / 2 as c_int as c_float + spine_atan2f(zc, za); - zb = spine_cosf(r) * s_0; - zd = spine_sinf(r) * s_0; - la_1 = - spine_cosf(shearX * (3.1415926535897932385f32 / 180 as c_int as c_float)) * scaleX; - lb_1 = spine_cosf( - (90 as c_int as c_float + shearY) - * (3.1415926535897932385f32 / 180 as c_int as c_float), - ) * scaleY; - lc_1 = - spine_sinf(shearX * (3.1415926535897932385f32 / 180 as c_int as c_float)) * scaleX; - ld_1 = spine_sinf( - (90 as c_int as c_float + shearY) - * (3.1415926535897932385f32 / 180 as c_int as c_float), - ) * scaleY; - *(&mut (*self_0).a as *mut c_float) = za * la_1 + zb * lc_1; - *(&mut (*self_0).b as *mut c_float) = za * lb_1 + zb * ld_1; - *(&mut (*self_0).c as *mut c_float) = zc * la_1 + zd * lc_1; - *(&mut (*self_0).d as *mut c_float) = zc * lb_1 + zd * ld_1; + rotation = 3.141_592_7_f32 / 2 as c_int as c_float + spine_atan2f(zc, za); + let mut zb: c_float = spine_cosf(rotation) * s_0; + let mut zd: c_float = spine_sinf(rotation) * s_0; + shearX *= 3.141_592_7_f32 / 180 as c_int as c_float; + shearY = + (90 as c_int as c_float + shearY) * (3.141_592_7_f32 / 180 as c_int as c_float); + let mut la_1: c_float = spine_cosf(shearX) * scaleX; + let mut lb_1: c_float = spine_cosf(shearY) * scaleY; + let mut lc_1: c_float = spine_sinf(shearX) * scaleX; + let mut ld_1: c_float = spine_sinf(shearY) * scaleY; + (*self_0).a = za * la_1 + zb * lc_1; + (*self_0).b = za * lb_1 + zb * ld_1; + (*self_0).c = zc * la_1 + zd * lc_1; + (*self_0).d = zc * lb_1 + zd * ld_1; } _ => {} } - *(&mut (*self_0).a as *mut c_float) *= sx; - *(&mut (*self_0).b as *mut c_float) *= sx; - *(&mut (*self_0).c as *mut c_float) *= sy; - *(&mut (*self_0).d as *mut c_float) *= sy; + (*self_0).a *= sx; + (*self_0).b *= sx; + (*self_0).c *= sy; + (*self_0).d *= sy; } #[no_mangle] pub unsafe extern "C" fn spBone_setToSetupPose(mut self_0: *mut spBone) { @@ -10960,74 +11455,152 @@ pub unsafe extern "C" fn spBone_setToSetupPose(mut self_0: *mut spBone) { (*self_0).scaleY = (*(*self_0).data).scaleY; (*self_0).shearX = (*(*self_0).data).shearX; (*self_0).shearY = (*(*self_0).data).shearY; + (*self_0).inherit = (*(*self_0).data).inherit; } #[no_mangle] pub unsafe extern "C" fn spBone_getWorldRotationX(mut self_0: *mut spBone) -> c_float { - return spine_atan2f((*self_0).c, (*self_0).a) - * (180 as c_int as c_float / 3.1415926535897932385f32); + spine_atan2f((*self_0).c, (*self_0).a) * (180 as c_int as c_float / 3.141_592_7_f32) } #[no_mangle] pub unsafe extern "C" fn spBone_getWorldRotationY(mut self_0: *mut spBone) -> c_float { - return spine_atan2f((*self_0).d, (*self_0).b) - * (180 as c_int as c_float / 3.1415926535897932385f32); + spine_atan2f((*self_0).d, (*self_0).b) * (180 as c_int as c_float / 3.141_592_7_f32) } #[no_mangle] pub unsafe extern "C" fn spBone_getWorldScaleX(mut self_0: *mut spBone) -> c_float { - return spine_sqrtf((*self_0).a * (*self_0).a + (*self_0).c * (*self_0).c); + spine_sqrtf((*self_0).a * (*self_0).a + (*self_0).c * (*self_0).c) } #[no_mangle] pub unsafe extern "C" fn spBone_getWorldScaleY(mut self_0: *mut spBone) -> c_float { - return spine_sqrtf((*self_0).b * (*self_0).b + (*self_0).d * (*self_0).d); + spine_sqrtf((*self_0).b * (*self_0).b + (*self_0).d * (*self_0).d) } #[no_mangle] pub unsafe extern "C" fn spBone_updateAppliedTransform(mut self_0: *mut spBone) { + let mut pa: c_float = 0.; + let mut pb: c_float = 0.; + let mut pc: c_float = 0.; + let mut pd: c_float = 0.; + let mut pid: c_float = 0.; + let mut ia: c_float = 0.; + let mut ib: c_float = 0.; + let mut ic: c_float = 0.; + let mut id: c_float = 0.; + let mut dx: c_float = 0.; + let mut dy: c_float = 0.; + let mut ra: c_float = 0.; + let mut rb: c_float = 0.; + let mut rc: c_float = 0.; + let mut rd: c_float = 0.; + let mut s: c_float = 0.; + let mut sa: c_float = 0.; + let mut sc: c_float = 0.; + let mut cosine: c_float = 0.; + let mut sine: c_float = 0.; + let mut yDownScale: c_float = (if spBone_isYDown() != 0 { + -(1 as c_int) + } else { + 1 as c_int + }) as c_float; let mut parent: *mut spBone = (*self_0).parent; if parent.is_null() { (*self_0).ax = (*self_0).worldX - (*(*self_0).skeleton).x; (*self_0).ay = (*self_0).worldY - (*(*self_0).skeleton).y; - (*self_0).arotation = spine_atan2f((*self_0).c, (*self_0).a) - * (180 as c_int as c_float / 3.1415926535897932385f32); + (*self_0).arotation = + spine_atan2f((*self_0).c, (*self_0).a) * (180 as c_int as c_float / 3.141_592_7_f32); (*self_0).ascaleX = spine_sqrtf((*self_0).a * (*self_0).a + (*self_0).c * (*self_0).c); (*self_0).ascaleY = spine_sqrtf((*self_0).b * (*self_0).b + (*self_0).d * (*self_0).d); (*self_0).ashearX = 0 as c_int as c_float; (*self_0).ashearY = spine_atan2f( (*self_0).a * (*self_0).b + (*self_0).c * (*self_0).d, (*self_0).a * (*self_0).d - (*self_0).b * (*self_0).c, - ) * (180 as c_int as c_float / 3.1415926535897932385f32); + ) * (180 as c_int as c_float / 3.141_592_7_f32); + return; + } + pa = (*parent).a; + pb = (*parent).b; + pc = (*parent).c; + pd = (*parent).d; + pid = 1 as c_int as c_float / (pa * pd - pb * pc); + ia = pd * pid; + ib = pb * pid; + ic = pc * pid; + id = pa * pid; + dx = (*self_0).worldX - (*parent).worldX; + dy = (*self_0).worldY - (*parent).worldY; + (*self_0).ax = dx * ia - dy * ib; + (*self_0).ay = dy * id - dx * ic; + if (*self_0).inherit as c_uint == SP_INHERIT_ONLYTRANSLATION as c_int as c_uint { + ra = (*self_0).a; + rb = (*self_0).b; + rc = (*self_0).c; + rd = (*self_0).d; } else { - let mut pa: c_float = (*parent).a; - let mut pb: c_float = (*parent).b; - let mut pc: c_float = (*parent).c; - let mut pd: c_float = (*parent).d; - let mut pid: c_float = 1 as c_int as c_float / (pa * pd - pb * pc); - let mut dx: c_float = (*self_0).worldX - (*parent).worldX; - let mut dy: c_float = (*self_0).worldY - (*parent).worldY; - let mut ia: c_float = pid * pd; - let mut id: c_float = pid * pa; - let mut ib: c_float = pid * pb; - let mut ic: c_float = pid * pc; - let mut ra: c_float = ia * (*self_0).a - ib * (*self_0).c; - let mut rb: c_float = ia * (*self_0).b - ib * (*self_0).d; - let mut rc: c_float = id * (*self_0).c - ic * (*self_0).a; - let mut rd: c_float = id * (*self_0).d - ic * (*self_0).b; - (*self_0).ax = dx * pd * pid - dy * pb * pid; - (*self_0).ay = dy * pa * pid - dx * pc * pid; - (*self_0).ashearX = 0 as c_int as c_float; - (*self_0).ascaleX = spine_sqrtf(ra * ra + rc * rc); - if (*self_0).ascaleX > 0.0001f32 { - let mut det: c_float = ra * rd - rb * rc; - (*self_0).ascaleY = det / (*self_0).ascaleX; - (*self_0).ashearY = spine_atan2f(ra * rb + rc * rd, det) - * (180 as c_int as c_float / 3.1415926535897932385f32); - (*self_0).arotation = - spine_atan2f(rc, ra) * (180 as c_int as c_float / 3.1415926535897932385f32); - } else { - (*self_0).ascaleX = 0 as c_int as c_float; - (*self_0).ascaleY = spine_sqrtf(rb * rb + rd * rd); - (*self_0).ashearY = 0 as c_int as c_float; - (*self_0).arotation = 90 as c_int as c_float - - spine_atan2f(rd, rb) * (180 as c_int as c_float / 3.1415926535897932385f32); - } + match (*self_0).inherit as c_uint { + 2 => { + s = (if pa * pd - pb * pc < 0 as c_int as c_float { + -(pa * pd - pb * pc) + } else { + pa * pd - pb * pc + }) / (pa * pa + pc * pc); + sa = pa / (*(*self_0).skeleton).scaleX; + sc = pc / (*(*self_0).skeleton).scaleY * yDownScale; + pb = -sc * s * (*(*self_0).skeleton).scaleX; + pd = sa * s * (*(*self_0).skeleton).scaleY * yDownScale; + pid = 1 as c_int as c_float / (pa * pd - pb * pc); + ia = pd * pid; + ib = pb * pid; + } + 3 | 4 => { + let mut r: c_float = + (*self_0).rotation * (3.141_592_7_f32 / 180 as c_int as c_float); + cosine = spine_cosf(r); + sine = spine_sinf(r); + pa = (pa * cosine + pb * sine) / (*(*self_0).skeleton).scaleX; + pc = (pc * cosine + pd * sine) / (*(*self_0).skeleton).scaleY * yDownScale; + s = spine_sqrtf(pa * pa + pc * pc); + if s as c_double > 0.00001f64 { + s = 1 as c_int as c_float / s; + } + pa *= s; + pc *= s; + s = spine_sqrtf(pa * pa + pc * pc); + if (*self_0).inherit as c_uint == SP_INHERIT_NOSCALE as c_int as c_uint + && (pid < 0 as c_int as c_float) as c_int + != (((*(*self_0).skeleton).scaleX < 0 as c_int as c_float) as c_int + != ((*(*self_0).skeleton).scaleY * yDownScale < 0 as c_int as c_float) + as c_int) as c_int + { + s = -s; + } + r = 3.141_592_7_f32 / 2 as c_int as c_float + spine_atan2f(pc, pa); + pb = spine_cosf(r) * s; + pd = spine_sinf(r) * s; + pid = 1 as c_int as c_float / (pa * pd - pb * pc); + ia = pd * pid; + ib = pb * pid; + ic = pc * pid; + id = pa * pid; + } + 1 | 0 | _ => {} + } + ra = ia * (*self_0).a - ib * (*self_0).c; + rb = ia * (*self_0).b - ib * (*self_0).d; + rc = id * (*self_0).c - ic * (*self_0).a; + rd = id * (*self_0).d - ic * (*self_0).b; + } + (*self_0).ashearX = 0 as c_int as c_float; + (*self_0).ascaleX = spine_sqrtf(ra * ra + rc * rc); + if (*self_0).ascaleX > 0.0001f32 { + let mut det: c_float = ra * rd - rb * rc; + (*self_0).ascaleY = det / (*self_0).ascaleX; + (*self_0).ashearY = + -(spine_atan2f(ra * rb + rc * rd, det) * (180 as c_int as c_float / 3.141_592_7_f32)); + (*self_0).arotation = spine_atan2f(rc, ra) * (180 as c_int as c_float / 3.141_592_7_f32); + } else { + (*self_0).ascaleX = 0 as c_int as c_float; + (*self_0).ascaleY = spine_sqrtf(rb * rb + rd * rd); + (*self_0).ashearY = 0 as c_int as c_float; + (*self_0).arotation = 90 as c_int as c_float + - spine_atan2f(rd, rb) * (180 as c_int as c_float / 3.141_592_7_f32); }; } #[no_mangle] @@ -11046,6 +11619,21 @@ pub unsafe extern "C" fn spBone_worldToLocal( *localY = y * (*self_0).a * invDet - x * (*self_0).c * invDet; } #[no_mangle] +pub unsafe extern "C" fn spBone_worldToParent( + mut self_0: *mut spBone, + mut worldX: c_float, + mut worldY: c_float, + mut localX: *mut c_float, + mut localY: *mut c_float, +) { + if ((*self_0).parent).is_null() { + *localX = worldX; + *localY = worldY; + } else { + spBone_worldToLocal((*self_0).parent, worldX, worldY, localX, localY); + }; +} +#[no_mangle] pub unsafe extern "C" fn spBone_localToWorld( mut self_0: *mut spBone, mut localX: c_float, @@ -11059,50 +11647,60 @@ pub unsafe extern "C" fn spBone_localToWorld( *worldY = x * (*self_0).c + y * (*self_0).d + (*self_0).worldY; } #[no_mangle] +pub unsafe extern "C" fn spBone_parentToWorld( + mut self_0: *mut spBone, + mut localX: c_float, + mut localY: c_float, + mut worldX: *mut c_float, + mut worldY: *mut c_float, +) { + if !((*self_0).parent).is_null() { + *worldX = localX; + *worldY = localY; + } else { + spBone_localToWorld((*self_0).parent, localX, localY, worldX, worldY); + }; +} +#[no_mangle] pub unsafe extern "C" fn spBone_worldToLocalRotation( mut self_0: *mut spBone, mut worldRotation: c_float, ) -> c_float { - let mut sine: c_float = 0.; - let mut cosine: c_float = 0.; - sine = spine_sinf(worldRotation * (3.1415926535897932385f32 / 180 as c_int as c_float)); - cosine = spine_cosf(worldRotation * (3.1415926535897932385f32 / 180 as c_int as c_float)); - return spine_atan2f( + worldRotation *= 3.141_592_7_f32 / 180 as c_int as c_float; + let mut sine: c_float = spine_sinf(worldRotation); + let mut cosine: c_float = spine_cosf(worldRotation); + spine_atan2f( (*self_0).a * sine - (*self_0).c * cosine, (*self_0).d * cosine - (*self_0).b * sine, - ) * (180 as c_int as c_float / 3.1415926535897932385f32) + ) * (180 as c_int as c_float / 3.141_592_7_f32) + (*self_0).rotation - - (*self_0).shearX; + - (*self_0).shearX } #[no_mangle] pub unsafe extern "C" fn spBone_localToWorldRotation( mut self_0: *mut spBone, mut localRotation: c_float, ) -> c_float { - let mut sine: c_float = 0.; - let mut cosine: c_float = 0.; - localRotation -= (*self_0).rotation - (*self_0).shearX; - sine = spine_sinf(localRotation * (3.1415926535897932385f32 / 180 as c_int as c_float)); - cosine = spine_cosf(localRotation * (3.1415926535897932385f32 / 180 as c_int as c_float)); - return spine_atan2f( + localRotation = (localRotation - (*self_0).rotation - (*self_0).shearX) + * (3.141_592_7_f32 / 180 as c_int as c_float); + let mut sine: c_float = spine_sinf(localRotation); + let mut cosine: c_float = spine_cosf(localRotation); + spine_atan2f( cosine * (*self_0).c + sine * (*self_0).d, cosine * (*self_0).a + sine * (*self_0).b, - ) * (180 as c_int as c_float / 3.1415926535897932385f32); + ) * (180 as c_int as c_float / 3.141_592_7_f32) } #[no_mangle] pub unsafe extern "C" fn spBone_rotateWorld(mut self_0: *mut spBone, mut degrees: c_float) { - let mut a: c_float = (*self_0).a; - let mut b: c_float = (*self_0).b; - let mut c: c_float = (*self_0).c; - let mut d: c_float = (*self_0).d; - let mut cosine: c_float = - spine_cosf(degrees * (3.1415926535897932385f32 / 180 as c_int as c_float)); - let mut sine: c_float = - spine_sinf(degrees * (3.1415926535897932385f32 / 180 as c_int as c_float)); - *(&mut (*self_0).a as *mut c_float) = cosine * a - sine * c; - *(&mut (*self_0).b as *mut c_float) = cosine * b - sine * d; - *(&mut (*self_0).c as *mut c_float) = sine * a + cosine * c; - *(&mut (*self_0).d as *mut c_float) = sine * b + cosine * d; + degrees *= 3.141_592_7_f32 / 180 as c_int as c_float; + let mut sine: c_float = spine_sinf(degrees); + let mut cosine: c_float = spine_cosf(degrees); + let mut ra: c_float = (*self_0).a; + let mut rb: c_float = (*self_0).b; + (*self_0).a = cosine * ra - sine * (*self_0).c; + (*self_0).b = cosine * rb - sine * (*self_0).d; + (*self_0).c = sine * ra + cosine * (*self_0).c; + (*self_0).d = sine * rb + cosine * (*self_0).d; } #[no_mangle] pub unsafe extern "C" fn spBoneData_create( @@ -11113,44 +11711,47 @@ pub unsafe extern "C" fn spBoneData_create( let mut self_0: *mut spBoneData = _spCalloc( 1 as c_int as size_t, ::core::mem::size_of::() as c_ulong, - b"spine.c\0" as *const u8 as *const c_char, - 5118 as c_int, - ) as *mut spBoneData; - *(&mut (*self_0).index as *mut c_int) = index; - let ref mut fresh59 = *(&mut (*self_0).name as *mut *mut c_char); - *fresh59 = _spMalloc( + (b"spine.c\0" as *const u8).cast::(), + 5338 as c_int, + ) + .cast::(); + (*self_0).index = index; + (*self_0).name = _spMalloc( (::core::mem::size_of::() as c_ulong) .wrapping_mul((spine_strlen(name)).wrapping_add(1 as c_int as c_ulong)), - b"spine.c\0" as *const u8 as *const c_char, - 5120 as c_int, - ) as *mut c_char; - spine_strcpy(*fresh59, name); - let ref mut fresh60 = *(&mut (*self_0).parent as *mut *mut spBoneData); - *fresh60 = parent; + (b"spine.c\0" as *const u8).cast::(), + 5340 as c_int, + ) + .cast::(); + spine_strcpy((*self_0).name, name); + (*self_0).parent = parent; (*self_0).scaleX = 1 as c_int as c_float; (*self_0).scaleY = 1 as c_int as c_float; - (*self_0).transformMode = SP_TRANSFORMMODE_NORMAL; - return self_0; + (*self_0).inherit = SP_INHERIT_NORMAL; + (*self_0).icon = std::ptr::null::(); + (*self_0).visible = -(1 as c_int); + self_0 } #[no_mangle] pub unsafe extern "C" fn spBoneData_dispose(mut self_0: *mut spBoneData) { - _spFree((*self_0).name as *mut c_void); - _spFree(self_0 as *mut c_void); + _spFree((*self_0).name.cast::()); + _spFree((*self_0).icon as *mut c_void); + _spFree(self_0.cast::()); } #[no_mangle] pub unsafe extern "C" fn _spBoundingBoxAttachment_dispose(mut attachment: *mut spAttachment) { - let mut self_0: *mut spBoundingBoxAttachment = attachment as *mut spBoundingBoxAttachment; + let mut self_0: *mut spBoundingBoxAttachment = attachment.cast::(); _spVertexAttachment_deinit(&mut (*self_0).super_0); - _spFree(self_0 as *mut c_void); + _spFree(self_0.cast::()); } #[no_mangle] pub unsafe extern "C" fn _spBoundingBoxAttachment_copy( mut attachment: *mut spAttachment, ) -> *mut spAttachment { let mut copy: *mut spBoundingBoxAttachment = spBoundingBoxAttachment_create((*attachment).name); - let mut self_0: *mut spBoundingBoxAttachment = attachment as *mut spBoundingBoxAttachment; + let mut self_0: *mut spBoundingBoxAttachment = attachment.cast::(); spVertexAttachment_copyTo(&mut (*self_0).super_0, &mut (*copy).super_0); - return &mut (*copy).super_0.super_0; + &mut (*copy).super_0.super_0 } #[no_mangle] pub unsafe extern "C" fn spBoundingBoxAttachment_create( @@ -11159,9 +11760,10 @@ pub unsafe extern "C" fn spBoundingBoxAttachment_create( let mut self_0: *mut spBoundingBoxAttachment = _spCalloc( 1 as c_int as size_t, ::core::mem::size_of::() as c_ulong, - b"spine.c\0" as *const u8 as *const c_char, - 5180 as c_int, - ) as *mut spBoundingBoxAttachment; + (b"spine.c\0" as *const u8).cast::(), + 5403 as c_int, + ) + .cast::(); _spVertexAttachment_init(&mut (*self_0).super_0); _spAttachment_init( &mut (*self_0).super_0.super_0, @@ -11173,23 +11775,23 @@ pub unsafe extern "C" fn spBoundingBoxAttachment_create( as unsafe extern "C" fn(*mut spAttachment) -> *mut spAttachment, ), ); - return self_0; + self_0 } #[no_mangle] pub unsafe extern "C" fn _spClippingAttachment_dispose(mut attachment: *mut spAttachment) { - let mut self_0: *mut spClippingAttachment = attachment as *mut spClippingAttachment; + let mut self_0: *mut spClippingAttachment = attachment.cast::(); _spVertexAttachment_deinit(&mut (*self_0).super_0); - _spFree(self_0 as *mut c_void); + _spFree(self_0.cast::()); } #[no_mangle] pub unsafe extern "C" fn _spClippingAttachment_copy( mut attachment: *mut spAttachment, ) -> *mut spAttachment { let mut copy: *mut spClippingAttachment = spClippingAttachment_create((*attachment).name); - let mut self_0: *mut spClippingAttachment = attachment as *mut spClippingAttachment; + let mut self_0: *mut spClippingAttachment = attachment.cast::(); spVertexAttachment_copyTo(&mut (*self_0).super_0, &mut (*copy).super_0); (*copy).endSlot = (*self_0).endSlot; - return &mut (*copy).super_0.super_0; + &mut (*copy).super_0.super_0 } #[no_mangle] pub unsafe extern "C" fn spClippingAttachment_create( @@ -11198,9 +11800,10 @@ pub unsafe extern "C" fn spClippingAttachment_create( let mut self_0: *mut spClippingAttachment = _spCalloc( 1 as c_int as size_t, ::core::mem::size_of::() as c_ulong, - b"spine.c\0" as *const u8 as *const c_char, - 5235 as c_int, - ) as *mut spClippingAttachment; + (b"spine.c\0" as *const u8).cast::(), + 5458 as c_int, + ) + .cast::(); _spVertexAttachment_init(&mut (*self_0).super_0); _spAttachment_init( &mut (*self_0).super_0.super_0, @@ -11212,21 +11815,22 @@ pub unsafe extern "C" fn spClippingAttachment_create( as unsafe extern "C" fn(*mut spAttachment) -> *mut spAttachment, ), ); - (*self_0).endSlot = std::ptr::null_mut(); - return self_0; + (*self_0).endSlot = std::ptr::null_mut::(); + self_0 } #[no_mangle] pub unsafe extern "C" fn spColor_create() -> *mut spColor { - return _spMalloc( + _spMalloc( (::core::mem::size_of::() as c_ulong).wrapping_mul(1 as c_int as c_ulong), - b"spine.c\0" as *const u8 as *const c_char, - 5275 as c_int, - ) as *mut spColor; + (b"spine.c\0" as *const u8).cast::(), + 5498 as c_int, + ) + .cast::() } #[no_mangle] pub unsafe extern "C" fn spColor_dispose(mut self_0: *mut spColor) { if !self_0.is_null() { - _spFree(self_0 as *mut c_void); + _spFree(self_0.cast::()); } } #[no_mangle] @@ -11332,30 +11936,30 @@ pub unsafe extern "C" fn spColor_clamp(mut self_0: *mut spColor) { } } static mut _spTimelineTypeNames: [*const c_char; 24] = [ - b"Attachment\0" as *const u8 as *const c_char, - b"Alpha\0" as *const u8 as *const c_char, - b"PathConstraintPosition\0" as *const u8 as *const c_char, - b"PathConstraintSpace\0" as *const u8 as *const c_char, - b"Rotate\0" as *const u8 as *const c_char, - b"ScaleX\0" as *const u8 as *const c_char, - b"ScaleY\0" as *const u8 as *const c_char, - b"ShearX\0" as *const u8 as *const c_char, - b"ShearY\0" as *const u8 as *const c_char, - b"TranslateX\0" as *const u8 as *const c_char, - b"TranslateY\0" as *const u8 as *const c_char, - b"Scale\0" as *const u8 as *const c_char, - b"Shear\0" as *const u8 as *const c_char, - b"Translate\0" as *const u8 as *const c_char, - b"Deform\0" as *const u8 as *const c_char, - b"IkConstraint\0" as *const u8 as *const c_char, - b"PathConstraintMix\0" as *const u8 as *const c_char, - b"Rgb2\0" as *const u8 as *const c_char, - b"Rgba2\0" as *const u8 as *const c_char, - b"Rgba\0" as *const u8 as *const c_char, - b"Rgb\0" as *const u8 as *const c_char, - b"TransformConstraint\0" as *const u8 as *const c_char, - b"DrawOrder\0" as *const u8 as *const c_char, - b"Event\0" as *const u8 as *const c_char, + (b"Attachment\0" as *const u8).cast::(), + (b"Alpha\0" as *const u8).cast::(), + (b"PathConstraintPosition\0" as *const u8).cast::(), + (b"PathConstraintSpace\0" as *const u8).cast::(), + (b"Rotate\0" as *const u8).cast::(), + (b"ScaleX\0" as *const u8).cast::(), + (b"ScaleY\0" as *const u8).cast::(), + (b"ShearX\0" as *const u8).cast::(), + (b"ShearY\0" as *const u8).cast::(), + (b"TranslateX\0" as *const u8).cast::(), + (b"TranslateY\0" as *const u8).cast::(), + (b"Scale\0" as *const u8).cast::(), + (b"Shear\0" as *const u8).cast::(), + (b"Translate\0" as *const u8).cast::(), + (b"Deform\0" as *const u8).cast::(), + (b"IkConstraint\0" as *const u8).cast::(), + (b"PathConstraintMix\0" as *const u8).cast::(), + (b"Rgb2\0" as *const u8).cast::(), + (b"Rgba2\0" as *const u8).cast::(), + (b"Rgba\0" as *const u8).cast::(), + (b"Rgb\0" as *const u8).cast::(), + (b"TransformConstraint\0" as *const u8).cast::(), + (b"DrawOrder\0" as *const u8).cast::(), + (b"Event\0" as *const u8).cast::(), ]; #[no_mangle] pub unsafe extern "C" fn spDebug_printSkeletonData(mut skeletonData: *mut spSkeletonData) { @@ -11372,134 +11976,179 @@ pub unsafe extern "C" fn spDebug_printSkeletonData(mut skeletonData: *mut spSkel #[no_mangle] pub unsafe extern "C" fn _spDebug_printTimelineBase(mut timeline: *mut spTimeline) { spine_printf!( - b" Timeline %s:\n\0" as *const u8 as *const c_char, + (b" Timeline %s:\n\0" as *const u8).cast::(), _spTimelineTypeNames[(*timeline).type_0 as usize], ); spine_printf!( - b" frame count: %i\n\0" as *const u8 as *const c_char, + (b" frame count: %i\n\0" as *const u8).cast::(), (*timeline).frameCount, ); spine_printf!( - b" frame entries: %i\n\0" as *const u8 as *const c_char, + (b" frame entries: %i\n\0" as *const u8).cast::(), (*timeline).frameEntries, ); - spine_printf!(b" frames: \0" as *const u8 as *const c_char); + spine_printf!((b" frames: \0" as *const u8).cast::()); spDebug_printFloats((*(*timeline).frames).items, (*(*timeline).frames).size); - spine_printf!(b"\n\0" as *const u8 as *const c_char); + spine_printf!((b"\n\0" as *const u8).cast::()); } #[no_mangle] pub unsafe extern "C" fn _spDebug_printCurveTimeline(mut timeline: *mut spCurveTimeline) { _spDebug_printTimelineBase(&mut (*timeline).super_0); - spine_printf!(b" curves: \0" as *const u8 as *const c_char); + spine_printf!((b" curves: \0" as *const u8).cast::()); spDebug_printFloats((*(*timeline).curves).items, (*(*timeline).curves).size); - spine_printf!(b"\n\0" as *const u8 as *const c_char); + spine_printf!((b"\n\0" as *const u8).cast::()); } #[no_mangle] pub unsafe extern "C" fn spDebug_printTimeline(mut timeline: *mut spTimeline) { + let mut current_block_29: u64; match (*timeline).type_0 as c_uint { 0 => { - let mut t: *mut spAttachmentTimeline = timeline as *mut spAttachmentTimeline; + let mut t: *mut spAttachmentTimeline = timeline.cast::(); _spDebug_printTimelineBase(&mut (*t).super_0); + current_block_29 = 17233182392562552756; } 1 => { - let mut t_0: *mut spAlphaTimeline = timeline as *mut spAlphaTimeline; + let mut t_0: *mut spAlphaTimeline = timeline.cast::(); _spDebug_printCurveTimeline(&mut (*t_0).super_0); + current_block_29 = 17233182392562552756; } 2 => { let mut t_1: *mut spPathConstraintPositionTimeline = - timeline as *mut spPathConstraintPositionTimeline; + timeline.cast::(); _spDebug_printCurveTimeline(&mut (*t_1).super_0); + current_block_29 = 17233182392562552756; } 3 => { let mut t_2: *mut spPathConstraintMixTimeline = - timeline as *mut spPathConstraintMixTimeline; + timeline.cast::(); _spDebug_printCurveTimeline(&mut (*t_2).super_0); + current_block_29 = 17233182392562552756; } 4 => { - let mut t_3: *mut spRotateTimeline = timeline as *mut spRotateTimeline; + let mut t_3: *mut spRotateTimeline = timeline.cast::(); _spDebug_printCurveTimeline(&mut (*t_3).super_0); + current_block_29 = 17233182392562552756; } 5 => { - let mut t_4: *mut spScaleXTimeline = timeline as *mut spScaleXTimeline; + let mut t_4: *mut spScaleXTimeline = timeline.cast::(); _spDebug_printCurveTimeline(&mut (*t_4).super_0); + current_block_29 = 17233182392562552756; } 6 => { - let mut t_5: *mut spScaleYTimeline = timeline as *mut spScaleYTimeline; + let mut t_5: *mut spScaleYTimeline = timeline.cast::(); _spDebug_printCurveTimeline(&mut (*t_5).super_0); + current_block_29 = 17233182392562552756; } 7 => { - let mut t_6: *mut spShearXTimeline = timeline as *mut spShearXTimeline; + let mut t_6: *mut spShearXTimeline = timeline.cast::(); _spDebug_printCurveTimeline(&mut (*t_6).super_0); + current_block_29 = 17233182392562552756; } 8 => { - let mut t_7: *mut spShearYTimeline = timeline as *mut spShearYTimeline; + let mut t_7: *mut spShearYTimeline = timeline.cast::(); _spDebug_printCurveTimeline(&mut (*t_7).super_0); + current_block_29 = 17233182392562552756; } 9 => { - let mut t_8: *mut spTranslateXTimeline = timeline as *mut spTranslateXTimeline; + let mut t_8: *mut spTranslateXTimeline = timeline.cast::(); _spDebug_printCurveTimeline(&mut (*t_8).super_0); + current_block_29 = 17233182392562552756; } 10 => { - let mut t_9: *mut spTranslateYTimeline = timeline as *mut spTranslateYTimeline; + let mut t_9: *mut spTranslateYTimeline = timeline.cast::(); _spDebug_printCurveTimeline(&mut (*t_9).super_0); + current_block_29 = 17233182392562552756; } 11 => { - let mut t_10: *mut spScaleTimeline = timeline as *mut spScaleTimeline; + let mut t_10: *mut spScaleTimeline = timeline.cast::(); _spDebug_printCurveTimeline(&mut (*t_10).super_0); + current_block_29 = 17233182392562552756; } 12 => { - let mut t_11: *mut spShearTimeline = timeline as *mut spShearTimeline; + let mut t_11: *mut spShearTimeline = timeline.cast::(); _spDebug_printCurveTimeline(&mut (*t_11).super_0); + current_block_29 = 17233182392562552756; } 13 => { - let mut t_12: *mut spTranslateTimeline = timeline as *mut spTranslateTimeline; + let mut t_12: *mut spTranslateTimeline = timeline.cast::(); _spDebug_printCurveTimeline(&mut (*t_12).super_0); + current_block_29 = 17233182392562552756; } 14 => { - let mut t_13: *mut spDeformTimeline = timeline as *mut spDeformTimeline; + let mut t_13: *mut spDeformTimeline = timeline.cast::(); _spDebug_printCurveTimeline(&mut (*t_13).super_0); + current_block_29 = 17233182392562552756; } - 16 => { - let mut t_14: *mut spIkConstraintTimeline = timeline as *mut spIkConstraintTimeline; + 17 => { + let mut t_14: *mut spIkConstraintTimeline = timeline.cast::(); _spDebug_printCurveTimeline(&mut (*t_14).super_0); + current_block_29 = 17233182392562552756; } - 17 => { + 18 => { let mut t_15: *mut spPathConstraintMixTimeline = - timeline as *mut spPathConstraintMixTimeline; + timeline.cast::(); _spDebug_printCurveTimeline(&mut (*t_15).super_0); + current_block_29 = 17233182392562552756; } - 18 => { - let mut t_16: *mut spRGB2Timeline = timeline as *mut spRGB2Timeline; + 27 => { + let mut t_16: *mut spRGB2Timeline = timeline.cast::(); _spDebug_printCurveTimeline(&mut (*t_16).super_0); + current_block_29 = 17233182392562552756; } - 19 => { - let mut t_17: *mut spRGBA2Timeline = timeline as *mut spRGBA2Timeline; + 28 => { + let mut t_17: *mut spRGBA2Timeline = timeline.cast::(); _spDebug_printCurveTimeline(&mut (*t_17).super_0); + current_block_29 = 17233182392562552756; } - 20 => { - let mut t_18: *mut spRGBATimeline = timeline as *mut spRGBATimeline; + 29 => { + let mut t_18: *mut spRGBATimeline = timeline.cast::(); _spDebug_printCurveTimeline(&mut (*t_18).super_0); + current_block_29 = 17233182392562552756; } - 21 => { - let mut t_19: *mut spRGBTimeline = timeline as *mut spRGBTimeline; + 30 => { + let mut t_19: *mut spRGBTimeline = timeline.cast::(); _spDebug_printCurveTimeline(&mut (*t_19).super_0); + current_block_29 = 17233182392562552756; } - 22 => { + 31 => { let mut t_20: *mut spTransformConstraintTimeline = - timeline as *mut spTransformConstraintTimeline; + timeline.cast::(); _spDebug_printCurveTimeline(&mut (*t_20).super_0); + current_block_29 = 17233182392562552756; } - 23 => { - let mut t_21: *mut spDrawOrderTimeline = timeline as *mut spDrawOrderTimeline; + 32 => { + let mut t_21: *mut spDrawOrderTimeline = timeline.cast::(); _spDebug_printTimelineBase(&mut (*t_21).super_0); + current_block_29 = 17233182392562552756; } - 24 => { - let mut t_22: *mut spEventTimeline = timeline as *mut spEventTimeline; + 33 => { + let mut t_22: *mut spEventTimeline = timeline.cast::(); _spDebug_printTimelineBase(&mut (*t_22).super_0); + current_block_29 = 17233182392562552756; } 15 => { - let mut t_23: *mut spSequenceTimeline = timeline as *mut spSequenceTimeline; + let mut t_23: *mut spSequenceTimeline = timeline.cast::(); _spDebug_printTimelineBase(&mut (*t_23).super_0); + current_block_29 = 4691093862513791344; + } + 16 => { + current_block_29 = 4691093862513791344; + } + _ => { + current_block_29 = 2300254789029439552; + } + } + match current_block_29 { + 4691093862513791344 => { + let mut t_24: *mut spInheritTimeline = timeline.cast::(); + _spDebug_printTimelineBase(&mut (*t_24).super_0); + current_block_29 = 2300254789029439552; + } + _ => {} + } + match current_block_29 { + 2300254789029439552 => { + _spDebug_printTimelineBase(timeline); } _ => {} }; @@ -11509,7 +12158,7 @@ pub unsafe extern "C" fn spDebug_printAnimation(mut animation: *mut spAnimation) let mut i: c_int = 0; let mut n: c_int = 0; spine_printf!( - b"Animation %s: %i timelines\n\0" as *const u8 as *const c_char, + (b"Animation %s: %i timelines\n\0" as *const u8).cast::(), (*animation).name, (*(*animation).timelines).size, ); @@ -11535,7 +12184,7 @@ pub unsafe extern "C" fn spDebug_printBoneDatas( #[no_mangle] pub unsafe extern "C" fn spDebug_printBoneData(mut boneData: *mut spBoneData) { spine_printf!( - b"Bone data %s: %f, %f, %f, %f, %f, %f %f\n\0" as *const u8 as *const c_char, + (b"Bone data %s: %f, %f, %f, %f, %f, %f %f\n\0" as *const u8).cast::(), (*boneData).name, (*boneData).rotation as c_double, (*boneData).scaleX as c_double, @@ -11562,7 +12211,7 @@ pub unsafe extern "C" fn spDebug_printBones(mut bones: *mut *mut spBone, mut num #[no_mangle] pub unsafe extern "C" fn spDebug_printBone(mut bone: *mut spBone) { spine_printf!( - b"Bone %s: %f, %f, %f, %f, %f, %f\n\0" as *const u8 as *const c_char, + (b"Bone %s: %f, %f, %f, %f, %f, %f\n\0" as *const u8).cast::(), (*(*bone).data).name, (*bone).a as c_double, (*bone).b as c_double, @@ -11575,16 +12224,16 @@ pub unsafe extern "C" fn spDebug_printBone(mut bone: *mut spBone) { #[no_mangle] pub unsafe extern "C" fn spDebug_printFloats(mut values: *mut c_float, mut numFloats: c_int) { let mut i: c_int = 0; - spine_printf!(b"(%i) [\0" as *const u8 as *const c_char, numFloats); + spine_printf!((b"(%i) [\0" as *const u8).cast::(), numFloats); i = 0 as c_int; while i < numFloats { spine_printf!( - b"%f, \0" as *const u8 as *const c_char, + (b"%f, \0" as *const u8).cast::(), *values.offset(i as isize) as c_double, ); i += 1; } - spine_printf!(b"]\0" as *const u8 as *const c_char); + spine_printf!((b"]\0" as *const u8).cast::()); } #[no_mangle] pub unsafe extern "C" fn spEvent_create( @@ -11594,43 +12243,44 @@ pub unsafe extern "C" fn spEvent_create( let mut self_0: *mut spEvent = _spCalloc( 1 as c_int as size_t, ::core::mem::size_of::() as c_ulong, - b"spine.c\0" as *const u8 as *const c_char, - 5642 as c_int, - ) as *mut spEvent; - let ref mut fresh61 = *(&mut (*self_0).data as *mut *mut spEventData); - *fresh61 = data; - *(&mut (*self_0).time as *mut c_float) = time; - return self_0; + (b"spine.c\0" as *const u8).cast::(), + 5872 as c_int, + ) + .cast::(); + (*self_0).data = data; + (*self_0).time = time; + self_0 } #[no_mangle] pub unsafe extern "C" fn spEvent_dispose(mut self_0: *mut spEvent) { - _spFree((*self_0).stringValue as *mut c_void); - _spFree(self_0 as *mut c_void); + _spFree((*self_0).stringValue.cast::()); + _spFree(self_0.cast::()); } #[no_mangle] pub unsafe extern "C" fn spEventData_create(mut name: *const c_char) -> *mut spEventData { let mut self_0: *mut spEventData = _spCalloc( 1 as c_int as size_t, ::core::mem::size_of::() as c_ulong, - b"spine.c\0" as *const u8 as *const c_char, - 5685 as c_int, - ) as *mut spEventData; - let ref mut fresh62 = *(&mut (*self_0).name as *mut *mut c_char); - *fresh62 = _spMalloc( + (b"spine.c\0" as *const u8).cast::(), + 5915 as c_int, + ) + .cast::(); + (*self_0).name = _spMalloc( (::core::mem::size_of::() as c_ulong) .wrapping_mul((spine_strlen(name)).wrapping_add(1 as c_int as c_ulong)), - b"spine.c\0" as *const u8 as *const c_char, - 5686 as c_int, - ) as *mut c_char; - spine_strcpy(*fresh62, name); - return self_0; + (b"spine.c\0" as *const u8).cast::(), + 5916 as c_int, + ) + .cast::(); + spine_strcpy((*self_0).name, name); + self_0 } #[no_mangle] pub unsafe extern "C" fn spEventData_dispose(mut self_0: *mut spEventData) { - _spFree((*self_0).audioPath as *mut c_void); - _spFree((*self_0).stringValue as *mut c_void); - _spFree((*self_0).name as *mut c_void); - _spFree(self_0 as *mut c_void); + _spFree((*self_0).audioPath.cast::()); + _spFree((*self_0).stringValue.cast::()); + _spFree((*self_0).name.cast::()); + _spFree(self_0.cast::()); } #[no_mangle] pub unsafe extern "C" fn spIkConstraint_create( @@ -11641,11 +12291,11 @@ pub unsafe extern "C" fn spIkConstraint_create( let mut self_0: *mut spIkConstraint = _spCalloc( 1 as c_int as size_t, ::core::mem::size_of::() as c_ulong, - b"spine.c\0" as *const u8 as *const c_char, - 5733 as c_int, - ) as *mut spIkConstraint; - let ref mut fresh63 = *(&mut (*self_0).data as *mut *mut spIkConstraintData); - *fresh63 = data; + (b"spine.c\0" as *const u8).cast::(), + 5963 as c_int, + ) + .cast::(); + (*self_0).data = data; (*self_0).bendDirection = (*data).bendDirection; (*self_0).compress = (*data).compress; (*self_0).stretch = (*data).stretch; @@ -11655,25 +12305,26 @@ pub unsafe extern "C" fn spIkConstraint_create( (*self_0).bones = _spMalloc( (::core::mem::size_of::<*mut spBone>() as c_ulong) .wrapping_mul((*self_0).bonesCount as c_ulong), - b"spine.c\0" as *const u8 as *const c_char, - 5742 as c_int, - ) as *mut *mut spBone; + (b"spine.c\0" as *const u8).cast::(), + 5972 as c_int, + ) + .cast::<*mut spBone>(); i = 0 as c_int; while i < (*self_0).bonesCount { - let ref mut fresh64 = *((*self_0).bones).offset(i as isize); - *fresh64 = spSkeleton_findBone( + let fresh41 = &mut (*((*self_0).bones).offset(i as isize)); + *fresh41 = spSkeleton_findBone( skeleton, (**((*(*self_0).data).bones).offset(i as isize)).name, ); i += 1; } (*self_0).target = spSkeleton_findBone(skeleton, (*(*(*self_0).data).target).name); - return self_0; + self_0 } #[no_mangle] pub unsafe extern "C" fn spIkConstraint_dispose(mut self_0: *mut spIkConstraint) { - _spFree((*self_0).bones as *mut c_void); - _spFree(self_0 as *mut c_void); + _spFree((*self_0).bones.cast::()); + _spFree(self_0.cast::()); } #[no_mangle] pub unsafe extern "C" fn spIkConstraint_update(mut self_0: *mut spIkConstraint) { @@ -11709,6 +12360,14 @@ pub unsafe extern "C" fn spIkConstraint_update(mut self_0: *mut spIkConstraint) }; } #[no_mangle] +pub unsafe extern "C" fn spIkConstraint_setToSetupPose(mut self_0: *mut spIkConstraint) { + (*self_0).bendDirection = (*(*self_0).data).bendDirection; + (*self_0).compress = (*(*self_0).data).compress; + (*self_0).stretch = (*(*self_0).data).stretch; + (*self_0).softness = (*(*self_0).data).softness; + (*self_0).mix = (*(*self_0).data).mix; +} +#[no_mangle] pub unsafe extern "C" fn spIkConstraint_apply1( mut bone: *mut spBone, mut targetX: c_float, @@ -11732,10 +12391,24 @@ pub unsafe extern "C" fn spIkConstraint_apply1( let mut sa: c_float = 0 as c_int as c_float; let mut sc: c_float = 0 as c_int as c_float; let mut current_block_16: u64; - match (*(*bone).data).transformMode as c_uint { + match (*(*bone).data).inherit as c_uint { 1 => { - tx = targetX - (*bone).worldX; - ty = targetY - (*bone).worldY; + tx = (targetX - (*bone).worldX) + * (if (*(*bone).skeleton).scaleX < 0 as c_int as c_float { + -1.0f32 + } else if (*(*bone).skeleton).scaleX > 0 as c_int as c_float { + 1.0f32 + } else { + 0.0f32 + }); + ty = (targetY - (*bone).worldY) + * (if (*(*bone).skeleton).scaleY < 0 as c_int as c_float { + -1.0f32 + } else if (*(*bone).skeleton).scaleY > 0 as c_int as c_float { + 1.0f32 + } else { + 0.0f32 + }); current_block_16 = 7149356873433890176; } 2 => { @@ -11752,16 +12425,15 @@ pub unsafe extern "C" fn spIkConstraint_apply1( sc = pc / (*(*bone).skeleton).scaleY; pb = -sc * s * (*(*bone).skeleton).scaleX; pd = sa * s * (*(*bone).skeleton).scaleY; - rotationIK += - spine_atan2f(sc, sa) * (180 as c_int as c_float / 3.1415926535897932385f32); - current_block_16 = 3604446901128867516; + rotationIK += spine_atan2f(sc, sa) * (180 as c_int as c_float / 3.141_592_7_f32); + current_block_16 = 9103302926275267051; } _ => { - current_block_16 = 3604446901128867516; + current_block_16 = 9103302926275267051; } } match current_block_16 { - 3604446901128867516 => { + 9103302926275267051 => { let mut x: c_float = targetX - (*p).worldX; let mut y: c_float = targetY - (*p).worldY; let mut d: c_float = pa * pd - pb * pc; @@ -11775,7 +12447,7 @@ pub unsafe extern "C" fn spIkConstraint_apply1( } _ => {} } - rotationIK += spine_atan2f(ty, tx) * (180 as c_int as c_float / 3.1415926535897932385f32); + rotationIK += spine_atan2f(ty, tx) * (180 as c_int as c_float / 3.141_592_7_f32); if (*bone).ascaleX < 0 as c_int as c_float { rotationIK += 180 as c_int as c_float; } @@ -11789,7 +12461,7 @@ pub unsafe extern "C" fn spIkConstraint_apply1( if compress != 0 || stretch != 0 { let mut b: c_float = 0.; let mut dd: c_float = 0.; - match (*(*bone).data).transformMode as c_uint { + match (*(*bone).data).inherit as c_uint { 3 | 4 => { tx = targetX - (*bone).worldX; ty = targetY - (*bone).worldY; @@ -11969,7 +12641,7 @@ pub unsafe extern "C" fn spIkConstraint_apply2( cosine = (dd - l1 * l1 - l2 * l2) / (2 as c_int as c_float * l1 * l2); if cosine < -(1 as c_int) as c_float { cosine = -(1 as c_int) as c_float; - a2 = 3.1415926535897932385f32 * bendDir as c_float; + a2 = 3.141_592_7_f32 * bendDir as c_float; } else if cosine > 1 as c_int as c_float { cosine = 1 as c_int as c_float; a2 = 0 as c_int as c_float; @@ -12015,21 +12687,22 @@ pub unsafe extern "C" fn spIkConstraint_apply2( } else { r1 }; - if r * r <= dd { - y = spine_sqrtf(dd - r * r) * bendDir as c_float; + y = dd - r * r; + if y > 0 as c_int as c_float { + y = spine_sqrtf(y) * bendDir as c_float; a1 = ta - spine_atan2f(y, r); a2 = spine_atan2f(y / psy, (r - l1) / psx); - current_block = 4934696218949787740; + current_block = 8807035328252033190; } else { - current_block = 1352918242886884122; + current_block = 6033931424626438518; } } else { - current_block = 1352918242886884122; + current_block = 6033931424626438518; } match current_block { - 4934696218949787740 => {} + 8807035328252033190 => {} _ => { - let mut minAngle: c_float = 3.1415926535897932385f32; + let mut minAngle: c_float = 3.141_592_7_f32; let mut minX: c_float = l1 - a; let mut minDist: c_float = minX * minX; let mut minY: c_float = 0 as c_int as c_float; @@ -12068,8 +12741,7 @@ pub unsafe extern "C" fn spIkConstraint_apply2( } let mut os: c_float = spine_atan2f(cy, cx) * s2 as c_float; let mut rotation: c_float = (*parent).arotation; - a1 = - (a1 - os) * (180 as c_int as c_float / 3.1415926535897932385f32) + o1 as c_float - rotation; + a1 = (a1 - os) * (180 as c_int as c_float / 3.141_592_7_f32) + o1 as c_float - rotation; if a1 > 180 as c_int as c_float { a1 -= 360 as c_int as c_float; } else if a1 < -(180 as c_int) as c_float { @@ -12086,7 +12758,7 @@ pub unsafe extern "C" fn spIkConstraint_apply2( 0 as c_int as c_float, ); rotation = (*child).arotation; - a2 = ((a2 + os) * (180 as c_int as c_float / 3.1415926535897932385f32) - (*child).ashearX) + a2 = ((a2 + os) * (180 as c_int as c_float / 3.141_592_7_f32) - (*child).ashearX) * s2 as c_float + o2 as c_float - rotation; @@ -12113,57 +12785,59 @@ pub unsafe extern "C" fn spIkConstraintData_create( let mut self_0: *mut spIkConstraintData = _spCalloc( 1 as c_int as size_t, ::core::mem::size_of::() as c_ulong, - b"spine.c\0" as *const u8 as *const c_char, - 6032 as c_int, - ) as *mut spIkConstraintData; - let ref mut fresh65 = *(&mut (*self_0).name as *mut *mut c_char); - *fresh65 = _spMalloc( + (b"spine.c\0" as *const u8).cast::(), + 6271 as c_int, + ) + .cast::(); + (*self_0).name = _spMalloc( (::core::mem::size_of::() as c_ulong) .wrapping_mul((spine_strlen(name)).wrapping_add(1 as c_int as c_ulong)), - b"spine.c\0" as *const u8 as *const c_char, - 6033 as c_int, - ) as *mut c_char; - spine_strcpy(*fresh65, name); - (*self_0).bendDirection = 1 as c_int; + (b"spine.c\0" as *const u8).cast::(), + 6272 as c_int, + ) + .cast::(); + spine_strcpy((*self_0).name, name); + (*self_0).bendDirection = 0 as c_int; (*self_0).compress = 0 as c_int; (*self_0).stretch = 0 as c_int; (*self_0).uniform = 0 as c_int; - (*self_0).mix = 1 as c_int as c_float; - return self_0; + (*self_0).mix = 0 as c_int as c_float; + self_0 } #[no_mangle] pub unsafe extern "C" fn spIkConstraintData_dispose(mut self_0: *mut spIkConstraintData) { - _spFree((*self_0).name as *mut c_void); - _spFree((*self_0).bones as *mut c_void); - _spFree(self_0 as *mut c_void); + _spFree((*self_0).name.cast::()); + _spFree((*self_0).bones.cast::()); + _spFree(self_0.cast::()); } -static mut ep: *const c_char = std::ptr::null(); +static mut ep: *const c_char = 0 as *const c_char; #[no_mangle] pub unsafe extern "C" fn Json_getError() -> *const c_char { - return ep; + ep } unsafe extern "C" fn Json_strcasecmp(mut s1: *const c_char, mut s2: *const c_char) -> c_int { if !s1.is_null() && !s2.is_null() { - return spine_strcasecmp(s1, s2); + spine_strcasecmp(s1, s2) } else if s1 < s2 { return -(1 as c_int); } else if s1 == s2 { return 0 as c_int; } else { return 1 as c_int; - }; + } } unsafe extern "C" fn Json_new() -> *mut Json { - return _spCalloc( + _spCalloc( 1 as c_int as size_t, ::core::mem::size_of::() as c_ulong, - b"spine.c\0" as *const u8 as *const c_char, - 6122 as c_int, - ) as *mut Json; + (b"spine.c\0" as *const u8).cast::(), + 6361 as c_int, + ) + .cast::() } #[no_mangle] pub unsafe extern "C" fn Json_dispose(mut c: *mut Json) { - let mut next: *mut Json = std::ptr::null_mut(); + let mut next: *mut Json = std::ptr::null_mut::(); while !c.is_null() { next = (*c).next; if !((*c).child).is_null() { @@ -12175,14 +12849,14 @@ pub unsafe extern "C" fn Json_dispose(mut c: *mut Json) { if !((*c).name).is_null() { _spFree((*c).name as *mut c_void); } - _spFree(c as *mut c_void); + _spFree(c.cast::()); c = next; } } unsafe extern "C" fn parse_number(mut item: *mut Json, mut num: *const c_char) -> *const c_char { let mut result: c_double = 0.0f64; let mut negative: c_int = 0 as c_int; - let mut ptr: *mut c_char = num as *mut c_char; + let mut ptr: *mut c_char = num.cast_mut(); if *ptr as c_int == '-' as i32 { negative = -(1 as c_int); ptr = ptr.offset(1); @@ -12208,7 +12882,6 @@ unsafe extern "C" fn parse_number(mut item: *mut Json, mut num: *const c_char) - if *ptr as c_int == 'e' as i32 || *ptr as c_int == 'E' as i32 { let mut exponent: c_double = 0 as c_int as c_double; let mut expNegative: c_int = 0 as c_int; - let mut _n_0: c_int = 0 as c_int; ptr = ptr.offset(1); if *ptr as c_int == '-' as i32 { expNegative = -(1 as c_int); @@ -12219,23 +12892,22 @@ unsafe extern "C" fn parse_number(mut item: *mut Json, mut num: *const c_char) - while *ptr as c_int >= '0' as i32 && *ptr as c_int <= '9' as i32 { exponent = exponent * 10.0f64 + (*ptr as c_int - '0' as i32) as c_double; ptr = ptr.offset(1); - _n_0 += 1; } if expNegative != 0 { - result = result / spine_pow(10 as c_int as c_double, exponent); + result /= spine_pow(10 as c_int as c_double, exponent); } else { - result = result * spine_pow(10 as c_int as c_double, exponent); + result *= spine_pow(10 as c_int as c_double, exponent); } } - if ptr != num as *mut c_char { + if ptr != num.cast_mut() { (*item).valueFloat = result as c_float; (*item).valueInt = result as c_int; (*item).type_0 = 3 as c_int; - return ptr; + ptr } else { ep = num; - return std::ptr::null(); - }; + std::ptr::null::() + } } static mut firstByteMark: [c_uchar; 7] = [ 0 as c_int as c_uchar, @@ -12248,75 +12920,76 @@ static mut firstByteMark: [c_uchar; 7] = [ ]; unsafe extern "C" fn parse_string(mut item: *mut Json, mut str: *const c_char) -> *const c_char { let mut ptr: *const c_char = str.offset(1 as c_int as isize); - let mut ptr2: *mut c_char = std::ptr::null_mut(); - let mut out: *mut c_char = std::ptr::null_mut(); + let mut ptr2: *mut c_char = std::ptr::null_mut::(); + let mut out: *mut c_char = std::ptr::null_mut::(); let mut len: c_int = 0 as c_int; let mut uc: c_uint = 0; let mut uc2: c_uint = 0; if *str as c_int != '"' as i32 { ep = str; - return std::ptr::null(); + return std::ptr::null::(); } while *ptr as c_int != '"' as i32 && *ptr as c_int != 0 && { len += 1; len != 0 } { - let fresh66 = ptr; + let fresh42 = ptr; ptr = ptr.offset(1); - if *fresh66 as c_int == '\\' as i32 { + if *fresh42 as c_int == '\\' as i32 { ptr = ptr.offset(1); } } out = _spMalloc( (::core::mem::size_of::() as c_ulong).wrapping_mul((len + 1 as c_int) as c_ulong), - b"spine.c\0" as *const u8 as *const c_char, - 6223 as c_int, - ) as *mut c_char; + (b"spine.c\0" as *const u8).cast::(), + 6460 as c_int, + ) + .cast::(); if out.is_null() { - return std::ptr::null(); + return std::ptr::null::(); } ptr = str.offset(1 as c_int as isize); ptr2 = out; while *ptr as c_int != '"' as i32 && *ptr as c_int != 0 { if *ptr as c_int != '\\' as i32 { - let fresh67 = ptr; + let fresh43 = ptr; ptr = ptr.offset(1); - let fresh68 = ptr2; + let fresh44 = ptr2; ptr2 = ptr2.offset(1); - *fresh68 = *fresh67; + *fresh44 = *fresh43; } else { ptr = ptr.offset(1); let mut current_block_41: u64; match *ptr as c_int { 98 => { - let fresh69 = ptr2; + let fresh45 = ptr2; ptr2 = ptr2.offset(1); - *fresh69 = '\u{8}' as i32 as c_char; + *fresh45 = '\u{8}' as i32 as c_char; } 102 => { - let fresh70 = ptr2; + let fresh46 = ptr2; ptr2 = ptr2.offset(1); - *fresh70 = '\u{c}' as i32 as c_char; + *fresh46 = '\u{c}' as i32 as c_char; } 110 => { - let fresh71 = ptr2; + let fresh47 = ptr2; ptr2 = ptr2.offset(1); - *fresh71 = '\n' as i32 as c_char; + *fresh47 = '\n' as i32 as c_char; } 114 => { - let fresh72 = ptr2; + let fresh48 = ptr2; ptr2 = ptr2.offset(1); - *fresh72 = '\r' as i32 as c_char; + *fresh48 = '\r' as i32 as c_char; } 116 => { - let fresh73 = ptr2; + let fresh49 = ptr2; ptr2 = ptr2.offset(1); - *fresh73 = '\t' as i32 as c_char; + *fresh49 = '\t' as i32 as c_char; } 117 => { spine_sscanf!( ptr.offset(1 as c_int as isize), - b"%4x\0" as *const u8 as *const c_char, + (b"%4x\0" as *const u8).cast::(), &mut uc as *mut c_uint, ); ptr = ptr.offset(4 as c_int as isize); @@ -12331,7 +13004,7 @@ unsafe extern "C" fn parse_string(mut item: *mut Json, mut str: *const c_char) - } else { spine_sscanf!( ptr.offset(3 as c_int as isize), - b"%4x\0" as *const u8 as *const c_char, + (b"%4x\0" as *const u8).cast::(), &mut uc2 as *mut c_uint, ); ptr = ptr.offset(6 as c_int as isize); @@ -12370,45 +13043,45 @@ unsafe extern "C" fn parse_string(mut item: *mut Json, mut str: *const c_char) - & 0xbf as c_int as c_uint) as c_char; uc >>= 6 as c_int; - current_block_38 = 8434578823904746288; + current_block_38 = 18358745234530413803; } 3 => { - current_block_38 = 8434578823904746288; + current_block_38 = 18358745234530413803; } 2 => { - current_block_38 = 6075955283988907118; + current_block_38 = 8206681848427200715; } 1 => { - current_block_38 = 14880373858123271436; + current_block_38 = 2481446828879050954; } _ => { current_block_38 = 4567019141635105728; } } match current_block_38 { - 8434578823904746288 => { + 18358745234530413803 => { ptr2 = ptr2.offset(-1); *ptr2 = ((uc | 0x80 as c_int as c_uint) & 0xbf as c_int as c_uint) as c_char; uc >>= 6 as c_int; - current_block_38 = 6075955283988907118; + current_block_38 = 8206681848427200715; } _ => {} } match current_block_38 { - 6075955283988907118 => { + 8206681848427200715 => { ptr2 = ptr2.offset(-1); *ptr2 = ((uc | 0x80 as c_int as c_uint) & 0xbf as c_int as c_uint) as c_char; uc >>= 6 as c_int; - current_block_38 = 14880373858123271436; + current_block_38 = 2481446828879050954; } _ => {} } match current_block_38 { - 14880373858123271436 => { + 2481446828879050954 => { ptr2 = ptr2.offset(-1); *ptr2 = (uc | firstByteMark[len as usize] as c_uint) as c_char; @@ -12421,9 +13094,9 @@ unsafe extern "C" fn parse_string(mut item: *mut Json, mut str: *const c_char) - } } _ => { - let fresh74 = ptr2; + let fresh50 = ptr2; ptr2 = ptr2.offset(1); - *fresh74 = *ptr; + *fresh50 = *ptr; } } ptr = ptr.offset(1); @@ -12435,41 +13108,41 @@ unsafe extern "C" fn parse_string(mut item: *mut Json, mut str: *const c_char) - } (*item).valueString = out; (*item).type_0 = 4 as c_int; - return ptr; + ptr } unsafe extern "C" fn skip(mut in_0: *const c_char) -> *const c_char { if in_0.is_null() { - return std::ptr::null(); + return std::ptr::null::(); } while *in_0 as c_int != 0 && *in_0 as c_uchar as c_int <= 32 as c_int { in_0 = in_0.offset(1); } - return in_0; + in_0 } #[no_mangle] pub unsafe extern "C" fn Json_create(mut value: *const c_char) -> *mut Json { - let mut c: *mut Json = std::ptr::null_mut(); - ep = std::ptr::null(); + let mut c: *mut Json = std::ptr::null_mut::(); + ep = std::ptr::null::(); if value.is_null() { - return std::ptr::null_mut(); + return std::ptr::null_mut::(); } c = Json_new(); if c.is_null() { - return std::ptr::null_mut(); + return std::ptr::null_mut::(); } value = parse_value(c, skip(value)); if value.is_null() { Json_dispose(c); - return std::ptr::null_mut(); + return std::ptr::null_mut::(); } - return c; + c } unsafe extern "C" fn parse_value(mut item: *mut Json, mut value: *const c_char) -> *const c_char { match *value as c_int { 110 => { if spine_strncmp( value.offset(1 as c_int as isize), - b"ull\0" as *const u8 as *const c_char, + (b"ull\0" as *const u8).cast::(), 3 as c_int as size_t, ) == 0 { @@ -12480,7 +13153,7 @@ unsafe extern "C" fn parse_value(mut item: *mut Json, mut value: *const c_char) 102 => { if spine_strncmp( value.offset(1 as c_int as isize), - b"alse\0" as *const u8 as *const c_char, + (b"alse\0" as *const u8).cast::(), 4 as c_int as size_t, ) == 0 { @@ -12491,7 +13164,7 @@ unsafe extern "C" fn parse_value(mut item: *mut Json, mut value: *const c_char) 116 => { if spine_strncmp( value.offset(1 as c_int as isize), - b"rue\0" as *const u8 as *const c_char, + (b"rue\0" as *const u8).cast::(), 3 as c_int as size_t, ) == 0 { @@ -12509,10 +13182,10 @@ unsafe extern "C" fn parse_value(mut item: *mut Json, mut value: *const c_char) _ => {} } ep = value; - return std::ptr::null(); + std::ptr::null::() } unsafe extern "C" fn parse_array(mut item: *mut Json, mut value: *const c_char) -> *const c_char { - let mut child: *mut Json = std::ptr::null_mut(); + let mut child: *mut Json = std::ptr::null_mut::(); (*item).type_0 = 5 as c_int; value = skip(value.offset(1 as c_int as isize)); if *value as c_int == ']' as i32 { @@ -12521,23 +13194,23 @@ unsafe extern "C" fn parse_array(mut item: *mut Json, mut value: *const c_char) child = Json_new(); (*item).child = child; if ((*item).child).is_null() { - return std::ptr::null(); + return std::ptr::null::(); } value = skip(parse_value(child, skip(value))); if value.is_null() { - return std::ptr::null(); + return std::ptr::null::(); } (*item).size = 1 as c_int; while *value as c_int == ',' as i32 { let mut new_item: *mut Json = Json_new(); if new_item.is_null() { - return std::ptr::null(); + return std::ptr::null::(); } (*child).next = new_item; child = new_item; value = skip(parse_value(child, skip(value.offset(1 as c_int as isize)))); if value.is_null() { - return std::ptr::null(); + return std::ptr::null::(); } (*item).size += 1; } @@ -12545,10 +13218,10 @@ unsafe extern "C" fn parse_array(mut item: *mut Json, mut value: *const c_char) return value.offset(1 as c_int as isize); } ep = value; - return std::ptr::null(); + std::ptr::null::() } unsafe extern "C" fn parse_object(mut item: *mut Json, mut value: *const c_char) -> *const c_char { - let mut child: *mut Json = std::ptr::null_mut(); + let mut child: *mut Json = std::ptr::null_mut::(); (*item).type_0 = 6 as c_int; value = skip(value.offset(1 as c_int as isize)); if *value as c_int == '}' as i32 { @@ -12557,43 +13230,43 @@ unsafe extern "C" fn parse_object(mut item: *mut Json, mut value: *const c_char) child = Json_new(); (*item).child = child; if ((*item).child).is_null() { - return std::ptr::null(); + return std::ptr::null::(); } value = skip(parse_string(child, skip(value))); if value.is_null() { - return std::ptr::null(); + return std::ptr::null::(); } (*child).name = (*child).valueString; - (*child).valueString = std::ptr::null(); + (*child).valueString = std::ptr::null::(); if *value as c_int != ':' as i32 { ep = value; - return std::ptr::null(); + return std::ptr::null::(); } value = skip(parse_value(child, skip(value.offset(1 as c_int as isize)))); if value.is_null() { - return std::ptr::null(); + return std::ptr::null::(); } (*item).size = 1 as c_int; while *value as c_int == ',' as i32 { let mut new_item: *mut Json = Json_new(); if new_item.is_null() { - return std::ptr::null(); + return std::ptr::null::(); } (*child).next = new_item; child = new_item; value = skip(parse_string(child, skip(value.offset(1 as c_int as isize)))); if value.is_null() { - return std::ptr::null(); + return std::ptr::null::(); } (*child).name = (*child).valueString; - (*child).valueString = std::ptr::null(); + (*child).valueString = std::ptr::null::(); if *value as c_int != ':' as i32 { ep = value; - return std::ptr::null(); + return std::ptr::null::(); } value = skip(parse_value(child, skip(value.offset(1 as c_int as isize)))); if value.is_null() { - return std::ptr::null(); + return std::ptr::null::(); } (*item).size += 1; } @@ -12601,7 +13274,7 @@ unsafe extern "C" fn parse_object(mut item: *mut Json, mut value: *const c_char) return value.offset(1 as c_int as isize); } ep = value; - return std::ptr::null(); + std::ptr::null::() } #[no_mangle] pub unsafe extern "C" fn Json_getItem( @@ -12612,7 +13285,7 @@ pub unsafe extern "C" fn Json_getItem( while !c.is_null() && Json_strcasecmp((*c).name, string) != 0 { c = (*c).next; } - return c; + c } #[no_mangle] pub unsafe extern "C" fn Json_getItemAtIndex( @@ -12624,7 +13297,7 @@ pub unsafe extern "C" fn Json_getItemAtIndex( childIndex -= 1; current = (*current).next; } - return current; + current } #[no_mangle] pub unsafe extern "C" fn Json_getString( @@ -12636,7 +13309,7 @@ pub unsafe extern "C" fn Json_getString( if !object.is_null() { return (*object).valueString; } - return defaultValue; + defaultValue } #[no_mangle] pub unsafe extern "C" fn Json_getFloat( @@ -12645,11 +13318,11 @@ pub unsafe extern "C" fn Json_getFloat( mut defaultValue: c_float, ) -> c_float { value = Json_getItem(value, name); - return if !value.is_null() { + if !value.is_null() { (*value).valueFloat } else { defaultValue - }; + } } #[no_mangle] pub unsafe extern "C" fn Json_getInt( @@ -12658,36 +13331,36 @@ pub unsafe extern "C" fn Json_getInt( mut defaultValue: c_int, ) -> c_int { value = Json_getItem(value, name); - return if !value.is_null() { + if !value.is_null() { (*value).valueInt } else { defaultValue - }; + } } #[no_mangle] pub unsafe extern "C" fn _spMeshAttachment_dispose(mut attachment: *mut spAttachment) { - let mut self_0: *mut spMeshAttachment = attachment as *mut spMeshAttachment; + let mut self_0: *mut spMeshAttachment = attachment.cast::(); if !((*self_0).sequence).is_null() { spSequence_dispose((*self_0).sequence); } - _spFree((*self_0).path as *mut c_void); - _spFree((*self_0).uvs as *mut c_void); + _spFree((*self_0).path.cast::()); + _spFree((*self_0).uvs.cast::()); if ((*self_0).parentMesh).is_null() { _spVertexAttachment_deinit(&mut (*self_0).super_0); - _spFree((*self_0).regionUVs as *mut c_void); - _spFree((*self_0).triangles as *mut c_void); - _spFree((*self_0).edges as *mut c_void); + _spFree((*self_0).regionUVs.cast::()); + _spFree((*self_0).triangles.cast::()); + _spFree((*self_0).edges.cast::()); } else { _spAttachment_deinit(attachment); } - _spFree(self_0 as *mut c_void); + _spFree(self_0.cast::()); } #[no_mangle] pub unsafe extern "C" fn _spMeshAttachment_copy( mut attachment: *mut spAttachment, ) -> *mut spAttachment { - let mut copy: *mut spMeshAttachment = std::ptr::null_mut(); - let mut self_0: *mut spMeshAttachment = attachment as *mut spMeshAttachment; + let mut copy: *mut spMeshAttachment = std::ptr::null_mut::(); + let mut self_0: *mut spMeshAttachment = attachment.cast::(); if !((*self_0).parentMesh).is_null() { return &mut (*(spMeshAttachment_newLinkedMesh as unsafe extern "C" fn(*mut spMeshAttachment) -> *mut spMeshAttachment)( @@ -12702,26 +13375,27 @@ pub unsafe extern "C" fn _spMeshAttachment_copy( (*copy).sequence = if !((*self_0).sequence).is_null() { spSequence_copy((*self_0).sequence) } else { - std::ptr::null_mut() + std::ptr::null_mut::() }; - let ref mut fresh75 = *(&mut (*copy).path as *mut *const c_char as *mut *mut c_char); - *fresh75 = _spMalloc( + (*copy).path = _spMalloc( (::core::mem::size_of::() as c_ulong) .wrapping_mul((spine_strlen((*self_0).path)).wrapping_add(1 as c_int as c_ulong)), - b"spine.c\0" as *const u8 as *const c_char, - 6578 as c_int, - ) as *mut c_char; - spine_strcpy(*fresh75, (*self_0).path); + (b"spine.c\0" as *const u8).cast::(), + 6815 as c_int, + ) + .cast::(); + spine_strcpy((*copy).path, (*self_0).path); spColor_setFromColor(&mut (*copy).color, &mut (*self_0).color); spVertexAttachment_copyTo(&mut (*self_0).super_0, &mut (*copy).super_0); (*copy).regionUVs = _spMalloc( (::core::mem::size_of::() as c_ulong) .wrapping_mul((*self_0).super_0.worldVerticesLength as c_ulong), - b"spine.c\0" as *const u8 as *const c_char, - 6582 as c_int, - ) as *mut c_float; + (b"spine.c\0" as *const u8).cast::(), + 6819 as c_int, + ) + .cast::(); spine_memcpy( - (*copy).regionUVs as *mut c_void, + (*copy).regionUVs.cast::(), (*self_0).regionUVs as *const c_void, ((*self_0).super_0.worldVerticesLength as c_ulong) .wrapping_mul(::core::mem::size_of::() as c_ulong), @@ -12729,11 +13403,12 @@ pub unsafe extern "C" fn _spMeshAttachment_copy( (*copy).uvs = _spMalloc( (::core::mem::size_of::() as c_ulong) .wrapping_mul((*self_0).super_0.worldVerticesLength as c_ulong), - b"spine.c\0" as *const u8 as *const c_char, - 6584 as c_int, - ) as *mut c_float; + (b"spine.c\0" as *const u8).cast::(), + 6821 as c_int, + ) + .cast::(); spine_memcpy( - (*copy).uvs as *mut c_void, + (*copy).uvs.cast::(), (*self_0).uvs as *const c_void, ((*self_0).super_0.worldVerticesLength as c_ulong) .wrapping_mul(::core::mem::size_of::() as c_ulong), @@ -12742,11 +13417,12 @@ pub unsafe extern "C" fn _spMeshAttachment_copy( (*copy).triangles = _spMalloc( (::core::mem::size_of::() as c_ulong) .wrapping_mul((*self_0).trianglesCount as c_ulong), - b"spine.c\0" as *const u8 as *const c_char, - 6587 as c_int, - ) as *mut c_ushort; + (b"spine.c\0" as *const u8).cast::(), + 6824 as c_int, + ) + .cast::(); spine_memcpy( - (*copy).triangles as *mut c_void, + (*copy).triangles.cast::(), (*self_0).triangles as *const c_void, ((*self_0).trianglesCount as c_ulong) .wrapping_mul(::core::mem::size_of::() as c_ulong), @@ -12755,13 +13431,14 @@ pub unsafe extern "C" fn _spMeshAttachment_copy( if (*self_0).edgesCount > 0 as c_int { (*copy).edgesCount = (*self_0).edgesCount; (*copy).edges = _spMalloc( - (::core::mem::size_of::() as c_ulong) + (::core::mem::size_of::() as c_ulong) .wrapping_mul((*self_0).edgesCount as c_ulong), - b"spine.c\0" as *const u8 as *const c_char, - 6592 as c_int, - ) as *mut c_int; + (b"spine.c\0" as *const u8).cast::(), + 6829 as c_int, + ) + .cast::(); spine_memcpy( - (*copy).edges as *mut c_void, + (*copy).edges.cast::(), (*self_0).edges as *const c_void, ((*self_0).edgesCount as c_ulong) .wrapping_mul(::core::mem::size_of::() as c_ulong), @@ -12769,7 +13446,7 @@ pub unsafe extern "C" fn _spMeshAttachment_copy( } (*copy).width = (*self_0).width; (*copy).height = (*self_0).height; - return &mut (*copy).super_0.super_0; + &mut (*copy).super_0.super_0 } #[no_mangle] pub unsafe extern "C" fn spMeshAttachment_newLinkedMesh( @@ -12778,14 +13455,14 @@ pub unsafe extern "C" fn spMeshAttachment_newLinkedMesh( let mut copy: *mut spMeshAttachment = spMeshAttachment_create((*self_0).super_0.super_0.name); (*copy).rendererObject = (*self_0).rendererObject; (*copy).region = (*self_0).region; - let ref mut fresh76 = *(&mut (*copy).path as *mut *const c_char as *mut *mut c_char); - *fresh76 = _spMalloc( + (*copy).path = _spMalloc( (::core::mem::size_of::() as c_ulong) .wrapping_mul((spine_strlen((*self_0).path)).wrapping_add(1 as c_int as c_ulong)), - b"spine.c\0" as *const u8 as *const c_char, - 6606 as c_int, - ) as *mut c_char; - spine_strcpy(*fresh76, (*self_0).path); + (b"spine.c\0" as *const u8).cast::(), + 6843 as c_int, + ) + .cast::(); + spine_strcpy((*copy).path, (*self_0).path); spColor_setFromColor(&mut (*copy).color, &mut (*self_0).color); (*copy).super_0.timelineAttachment = (*self_0).super_0.timelineAttachment; spMeshAttachment_setParentMesh( @@ -12799,16 +13476,17 @@ pub unsafe extern "C" fn spMeshAttachment_newLinkedMesh( if !((*copy).region).is_null() { spMeshAttachment_updateRegion(copy); } - return copy; + copy } #[no_mangle] pub unsafe extern "C" fn spMeshAttachment_create(mut name: *const c_char) -> *mut spMeshAttachment { let mut self_0: *mut spMeshAttachment = _spCalloc( 1 as c_int as size_t, ::core::mem::size_of::() as c_ulong, - b"spine.c\0" as *const u8 as *const c_char, - 6615 as c_int, - ) as *mut spMeshAttachment; + (b"spine.c\0" as *const u8).cast::(), + 6852 as c_int, + ) + .cast::(); _spVertexAttachment_init(&mut (*self_0).super_0); spColor_setFromFloats( &mut (*self_0).color, @@ -12826,24 +13504,25 @@ pub unsafe extern "C" fn spMeshAttachment_create(mut name: *const c_char) -> *mu _spMeshAttachment_copy as unsafe extern "C" fn(*mut spAttachment) -> *mut spAttachment, ), ); - return self_0; + self_0 } #[no_mangle] pub unsafe extern "C" fn spMeshAttachment_updateRegion(mut self_0: *mut spMeshAttachment) { let mut i: c_int = 0; let mut n: c_int = 0; - let mut uvs: *mut c_float = std::ptr::null_mut(); + let mut uvs: *mut c_float = std::ptr::null_mut::(); let mut u: c_float = 0.; let mut v: c_float = 0.; let mut width: c_float = 0.; let mut height: c_float = 0.; let mut verticesLength: c_int = (*self_0).super_0.worldVerticesLength; - _spFree((*self_0).uvs as *mut c_void); + _spFree((*self_0).uvs.cast::()); (*self_0).uvs = _spMalloc( (::core::mem::size_of::() as c_ulong).wrapping_mul(verticesLength as c_ulong), - b"spine.c\0" as *const u8 as *const c_char, - 6628 as c_int, - ) as *mut c_float; + (b"spine.c\0" as *const u8).cast::(), + 6865 as c_int, + ) + .cast::(); uvs = (*self_0).uvs; n = verticesLength; u = (*(*self_0).region).u; @@ -12872,7 +13551,6 @@ pub unsafe extern "C" fn spMeshAttachment_updateRegion(mut self_0: *mut spMeshAt + (1 as c_int as c_float - *((*self_0).regionUVs).offset(i as isize)) * height; i += 2 as c_int; } - return; } 180 => { let mut textureWidth_0: c_float = (*(*self_0).region).width as c_float @@ -12896,7 +13574,6 @@ pub unsafe extern "C" fn spMeshAttachment_updateRegion(mut self_0: *mut spMeshAt * height; i += 2 as c_int; } - return; } 270 => { let mut textureHeight_1: c_float = (*(*self_0).region).height as c_float @@ -12917,7 +13594,6 @@ pub unsafe extern "C" fn spMeshAttachment_updateRegion(mut self_0: *mut spMeshAt v + *((*self_0).regionUVs).offset(i as isize) * height; i += 2 as c_int; } - return; } _ => { let mut textureWidth_2: c_float = (*(*self_0).region).width as c_float @@ -12939,15 +13615,14 @@ pub unsafe extern "C" fn spMeshAttachment_updateRegion(mut self_0: *mut spMeshAt i += 2 as c_int; } } - }; + } } #[no_mangle] pub unsafe extern "C" fn spMeshAttachment_setParentMesh( mut self_0: *mut spMeshAttachment, mut parentMesh: *mut spMeshAttachment, ) { - let ref mut fresh77 = *(&mut (*self_0).parentMesh as *mut *mut spMeshAttachment); - *fresh77 = parentMesh; + (*self_0).parentMesh = parentMesh; if !parentMesh.is_null() { (*self_0).super_0.bones = (*parentMesh).super_0.bones; (*self_0).super_0.bonesCount = (*parentMesh).super_0.bonesCount; @@ -12966,43 +13641,45 @@ pub unsafe extern "C" fn spMeshAttachment_setParentMesh( } #[no_mangle] pub unsafe extern "C" fn _spPathAttachment_dispose(mut attachment: *mut spAttachment) { - let mut self_0: *mut spPathAttachment = attachment as *mut spPathAttachment; + let mut self_0: *mut spPathAttachment = attachment.cast::(); _spVertexAttachment_deinit(&mut (*self_0).super_0); - _spFree((*self_0).lengths as *mut c_void); - _spFree(self_0 as *mut c_void); + _spFree((*self_0).lengths.cast::()); + _spFree(self_0.cast::()); } #[no_mangle] pub unsafe extern "C" fn _spPathAttachment_copy( mut attachment: *mut spAttachment, ) -> *mut spAttachment { let mut copy: *mut spPathAttachment = spPathAttachment_create((*attachment).name); - let mut self_0: *mut spPathAttachment = attachment as *mut spPathAttachment; + let mut self_0: *mut spPathAttachment = attachment.cast::(); spVertexAttachment_copyTo(&mut (*self_0).super_0, &mut (*copy).super_0); (*copy).lengthsLength = (*self_0).lengthsLength; (*copy).lengths = _spMalloc( (::core::mem::size_of::() as c_ulong) .wrapping_mul((*self_0).lengthsLength as c_ulong), - b"spine.c\0" as *const u8 as *const c_char, - 6759 as c_int, - ) as *mut c_float; + (b"spine.c\0" as *const u8).cast::(), + 6996 as c_int, + ) + .cast::(); spine_memcpy( - (*copy).lengths as *mut c_void, + (*copy).lengths.cast::(), (*self_0).lengths as *const c_void, ((*self_0).lengthsLength as c_ulong) .wrapping_mul(::core::mem::size_of::() as c_ulong), ); (*copy).closed = (*self_0).closed; (*copy).constantSpeed = (*self_0).constantSpeed; - return &mut (*copy).super_0.super_0; + &mut (*copy).super_0.super_0 } #[no_mangle] pub unsafe extern "C" fn spPathAttachment_create(mut name: *const c_char) -> *mut spPathAttachment { let mut self_0: *mut spPathAttachment = _spCalloc( 1 as c_int as size_t, ::core::mem::size_of::() as c_ulong, - b"spine.c\0" as *const u8 as *const c_char, - 6767 as c_int, - ) as *mut spPathAttachment; + (b"spine.c\0" as *const u8).cast::(), + 7004 as c_int, + ) + .cast::(); _spVertexAttachment_init(&mut (*self_0).super_0); _spAttachment_init( &mut (*self_0).super_0.super_0, @@ -13013,7 +13690,7 @@ pub unsafe extern "C" fn spPathAttachment_create(mut name: *const c_char) -> *mu _spPathAttachment_copy as unsafe extern "C" fn(*mut spAttachment) -> *mut spAttachment, ), ); - return self_0; + self_0 } #[no_mangle] pub unsafe extern "C" fn spPathConstraint_create( @@ -13024,23 +13701,23 @@ pub unsafe extern "C" fn spPathConstraint_create( let mut self_0: *mut spPathConstraint = _spCalloc( 1 as c_int as size_t, ::core::mem::size_of::() as c_ulong, - b"spine.c\0" as *const u8 as *const c_char, - 6812 as c_int, - ) as *mut spPathConstraint; - let ref mut fresh78 = *(&mut (*self_0).data as *mut *mut spPathConstraintData); - *fresh78 = data; + (b"spine.c\0" as *const u8).cast::(), + 7049 as c_int, + ) + .cast::(); + (*self_0).data = data; (*self_0).bonesCount = (*data).bonesCount; - let ref mut fresh79 = *(&mut (*self_0).bones as *mut *mut *mut spBone); - *fresh79 = _spMalloc( + (*self_0).bones = _spMalloc( (::core::mem::size_of::<*mut spBone>() as c_ulong) .wrapping_mul((*self_0).bonesCount as c_ulong), - b"spine.c\0" as *const u8 as *const c_char, - 6815 as c_int, - ) as *mut *mut spBone; + (b"spine.c\0" as *const u8).cast::(), + 7052 as c_int, + ) + .cast::<*mut spBone>(); i = 0 as c_int; while i < (*self_0).bonesCount { - let ref mut fresh80 = *((*self_0).bones).offset(i as isize); - *fresh80 = spSkeleton_findBone( + let fresh51 = &mut (*((*self_0).bones).offset(i as isize)); + *fresh51 = spSkeleton_findBone( skeleton, (**((*(*self_0).data).bones).offset(i as isize)).name, ); @@ -13053,34 +13730,34 @@ pub unsafe extern "C" fn spPathConstraint_create( (*self_0).mixX = (*data).mixX; (*self_0).mixY = (*data).mixY; (*self_0).spacesCount = 0 as c_int; - (*self_0).spaces = std::ptr::null_mut(); + (*self_0).spaces = std::ptr::null_mut::(); (*self_0).positionsCount = 0 as c_int; - (*self_0).positions = std::ptr::null_mut(); + (*self_0).positions = std::ptr::null_mut::(); (*self_0).worldCount = 0 as c_int; - (*self_0).world = std::ptr::null_mut(); + (*self_0).world = std::ptr::null_mut::(); (*self_0).curvesCount = 0 as c_int; - (*self_0).curves = std::ptr::null_mut(); + (*self_0).curves = std::ptr::null_mut::(); (*self_0).lengthsCount = 0 as c_int; - (*self_0).lengths = std::ptr::null_mut(); - return self_0; + (*self_0).lengths = std::ptr::null_mut::(); + self_0 } #[no_mangle] pub unsafe extern "C" fn spPathConstraint_dispose(mut self_0: *mut spPathConstraint) { - _spFree((*self_0).bones as *mut c_void); - _spFree((*self_0).spaces as *mut c_void); + _spFree((*self_0).bones.cast::()); + _spFree((*self_0).spaces.cast::()); if !((*self_0).positions).is_null() { - _spFree((*self_0).positions as *mut c_void); + _spFree((*self_0).positions.cast::()); } if !((*self_0).world).is_null() { - _spFree((*self_0).world as *mut c_void); + _spFree((*self_0).world.cast::()); } if !((*self_0).curves).is_null() { - _spFree((*self_0).curves as *mut c_void); + _spFree((*self_0).curves.cast::()); } if !((*self_0).lengths).is_null() { - _spFree((*self_0).lengths as *mut c_void); + _spFree((*self_0).lengths.cast::()); } - _spFree(self_0 as *mut c_void); + _spFree(self_0.cast::()); } #[no_mangle] pub unsafe extern "C" fn spPathConstraint_update(mut self_0: *mut spPathConstraint) { @@ -13095,9 +13772,9 @@ pub unsafe extern "C" fn spPathConstraint_update(mut self_0: *mut spPathConstrai let mut dy: c_float = 0.; let mut s: c_float = 0.; let mut sum: c_float = 0.; - let mut spaces: *mut c_float = std::ptr::null_mut(); - let mut lengths: *mut c_float = std::ptr::null_mut(); - let mut positions: *mut c_float = std::ptr::null_mut(); + let mut spaces: *mut c_float = std::ptr::null_mut::(); + let mut lengths: *mut c_float = std::ptr::null_mut::(); + let mut positions: *mut c_float = std::ptr::null_mut::(); let mut spacing: c_float = 0.; let mut boneX: c_float = 0.; let mut boneY: c_float = 0.; @@ -13108,7 +13785,7 @@ pub unsafe extern "C" fn spPathConstraint_update(mut self_0: *mut spPathConstrai let mut mixY: c_float = (*self_0).mixY; let mut lengthSpacing: c_int = 0; let mut attachment: *mut spPathAttachment = - (*(*self_0).target).attachment as *mut spPathAttachment; + (*(*self_0).target).attachment.cast::(); let mut data: *mut spPathConstraintData = (*self_0).data; let mut tangents: c_int = ((*data).rotateMode as c_uint == SP_ROTATE_MODE_TANGENT as c_int as c_uint) as c_int; @@ -13121,7 +13798,7 @@ pub unsafe extern "C" fn spPathConstraint_update(mut self_0: *mut spPathConstrai boneCount + 1 as c_int }; let mut bones: *mut *mut spBone = (*self_0).bones; - let mut pa: *mut spBone = std::ptr::null_mut(); + let mut pa: *mut spBone = std::ptr::null_mut::(); if mixRotate == 0 as c_int as c_float && mixX == 0 as c_int as c_float && mixY == 0 as c_int as c_float @@ -13135,29 +13812,31 @@ pub unsafe extern "C" fn spPathConstraint_update(mut self_0: *mut spPathConstrai } if (*self_0).spacesCount != spacesCount { if !((*self_0).spaces).is_null() { - _spFree((*self_0).spaces as *mut c_void); + _spFree((*self_0).spaces.cast::()); } (*self_0).spaces = _spMalloc( (::core::mem::size_of::() as c_ulong).wrapping_mul(spacesCount as c_ulong), - b"spine.c\0" as *const u8 as *const c_char, - 6868 as c_int, - ) as *mut c_float; + (b"spine.c\0" as *const u8).cast::(), + 7105 as c_int, + ) + .cast::(); (*self_0).spacesCount = spacesCount; } spaces = (*self_0).spaces; *spaces.offset(0 as c_int as isize) = 0 as c_int as c_float; - lengths = std::ptr::null_mut(); + lengths = std::ptr::null_mut::(); spacing = (*self_0).spacing; if scale != 0 { if (*self_0).lengthsCount != boneCount { if !((*self_0).lengths).is_null() { - _spFree((*self_0).lengths as *mut c_void); + _spFree((*self_0).lengths.cast::()); } (*self_0).lengths = _spMalloc( (::core::mem::size_of::() as c_ulong).wrapping_mul(boneCount as c_ulong), - b"spine.c\0" as *const u8 as *const c_char, - 6879 as c_int, - ) as *mut c_float; + (b"spine.c\0" as *const u8).cast::(), + 7116 as c_int, + ) + .cast::(); (*self_0).lengthsCount = boneCount; } lengths = (*self_0).lengths; @@ -13170,13 +13849,9 @@ pub unsafe extern "C" fn spPathConstraint_update(mut self_0: *mut spPathConstrai while i < n { let mut bone: *mut spBone = *bones.offset(i as isize); setupLength = (*(*bone).data).length; - if setupLength < 0.00001f32 { - *lengths.offset(i as isize) = 0 as c_int as c_float; - } else { - x = setupLength * (*bone).a; - y = setupLength * (*bone).c; - *lengths.offset(i as isize) = spine_sqrtf(x * x + y * y); - } + x = setupLength * (*bone).a; + y = setupLength * (*bone).c; + *lengths.offset(i as isize) = spine_sqrtf(x * x + y * y); i += 1; } } @@ -13264,17 +13939,17 @@ pub unsafe extern "C" fn spPathConstraint_update(mut self_0: *mut spPathConstrai tip = 0 as c_int; pa = (*(*self_0).target).bone; offsetRotation *= if (*pa).a * (*pa).d - (*pa).b * (*pa).c > 0 as c_int as c_float { - 3.1415926535897932385f32 / 180 as c_int as c_float + 3.141_592_7_f32 / 180 as c_int as c_float } else { - -(3.1415926535897932385f32 / 180 as c_int as c_float) + -(3.141_592_7_f32 / 180 as c_int as c_float) }; } i = 0 as c_int; p = 3 as c_int; while i < boneCount { let mut bone_2: *mut spBone = *bones.offset(i as isize); - *(&mut (*bone_2).worldX as *mut c_float) += (boneX - (*bone_2).worldX) * mixX; - *(&mut (*bone_2).worldY as *mut c_float) += (boneY - (*bone_2).worldY) * mixY; + (*bone_2).worldX += (boneX - (*bone_2).worldX) * mixX; + (*bone_2).worldY += (boneY - (*bone_2).worldY) * mixY; x = *positions.offset(p as isize); y = *positions.offset((p + 1 as c_int) as isize); dx = x - boneX; @@ -13284,8 +13959,8 @@ pub unsafe extern "C" fn spPathConstraint_update(mut self_0: *mut spPathConstrai if length != 0 as c_int as c_float { s = (spine_sqrtf(dx * dx + dy * dy) / length - 1 as c_int as c_float) * mixRotate + 1 as c_int as c_float; - *(&mut (*bone_2).a as *mut c_float) *= s; - *(&mut (*bone_2).c as *mut c_float) *= s; + (*bone_2).a *= s; + (*bone_2).c *= s; } } boneX = x; @@ -13305,8 +13980,7 @@ pub unsafe extern "C" fn spPathConstraint_update(mut self_0: *mut spPathConstrai } else { r = spine_atan2f(dy, dx); } - r -= spine_atan2f(c, a) - - offsetRotation * (3.1415926535897932385f32 / 180 as c_int as c_float); + r -= spine_atan2f(c, a) - offsetRotation * (3.141_592_7_f32 / 180 as c_int as c_float); if tip != 0 { cosine = spine_cosf(r); sine = spine_sinf(r); @@ -13316,24 +13990,33 @@ pub unsafe extern "C" fn spPathConstraint_update(mut self_0: *mut spPathConstrai } else { r += offsetRotation; } - if r > 3.1415926535897932385f32 { - r -= 3.1415926535897932385f32 * 2 as c_int as c_float; - } else if r < -3.1415926535897932385f32 { - r += 3.1415926535897932385f32 * 2 as c_int as c_float; + if r > 3.141_592_7_f32 { + r -= 3.141_592_7_f32 * 2 as c_int as c_float; + } else if r < -3.141_592_7_f32 { + r += 3.141_592_7_f32 * 2 as c_int as c_float; } r *= mixRotate; cosine = spine_cosf(r); sine = spine_sinf(r); - *(&mut (*bone_2).a as *mut c_float) = cosine * a - sine * c; - *(&mut (*bone_2).b as *mut c_float) = cosine * b - sine * d; - *(&mut (*bone_2).c as *mut c_float) = sine * a + cosine * c; - *(&mut (*bone_2).d as *mut c_float) = sine * b + cosine * d; + (*bone_2).a = cosine * a - sine * c; + (*bone_2).b = cosine * b - sine * d; + (*bone_2).c = sine * a + cosine * c; + (*bone_2).d = sine * b + cosine * d; } spBone_updateAppliedTransform(bone_2); i += 1; p += 3 as c_int; } } +#[no_mangle] +pub unsafe extern "C" fn spPathConstraint_setToSetupPose(mut self_0: *mut spPathConstraint) { + let mut data: *mut spPathConstraintData = (*self_0).data; + (*self_0).position = (*data).position; + (*self_0).spacing = (*data).spacing; + (*self_0).mixRotate = (*data).mixRotate; + (*self_0).mixX = (*data).mixX; + (*self_0).mixY = (*data).mixY; +} unsafe extern "C" fn _addBeforePosition( mut p: c_float, mut temp: *mut c_float, @@ -13437,9 +14120,9 @@ pub unsafe extern "C" fn spPathConstraint_computeWorldPositions( let mut verticesLength: c_int = 0; let mut curveCount: c_int = 0; let mut prevCurve: c_int = 0; - let mut out: *mut c_float = std::ptr::null_mut(); - let mut curves: *mut c_float = std::ptr::null_mut(); - let mut segments: *mut c_float = std::ptr::null_mut(); + let mut out: *mut c_float = std::ptr::null_mut::(); + let mut curves: *mut c_float = std::ptr::null_mut::(); + let mut segments: *mut c_float = std::ptr::null_mut::(); let mut tmpx: c_float = 0.; let mut tmpy: c_float = 0.; let mut dddfx: c_float = 0.; @@ -13463,17 +14146,18 @@ pub unsafe extern "C" fn spPathConstraint_computeWorldPositions( let mut target: *mut spSlot = (*self_0).target; let mut position: c_float = (*self_0).position; let mut spaces: *mut c_float = (*self_0).spaces; - let mut world: *mut c_float = std::ptr::null_mut(); + let mut world: *mut c_float = std::ptr::null_mut::(); if (*self_0).positionsCount != spacesCount * 3 as c_int + 2 as c_int { if !((*self_0).positions).is_null() { - _spFree((*self_0).positions as *mut c_void); + _spFree((*self_0).positions.cast::()); } (*self_0).positions = _spMalloc( (::core::mem::size_of::() as c_ulong) .wrapping_mul((spacesCount * 3 as c_int + 2 as c_int) as c_ulong), - b"spine.c\0" as *const u8 as *const c_char, - 7049 as c_int, - ) as *mut c_float; + (b"spine.c\0" as *const u8).cast::(), + 7291 as c_int, + ) + .cast::(); (*self_0).positionsCount = spacesCount * 3 as c_int + 2 as c_int; } out = (*self_0).positions; @@ -13501,13 +14185,14 @@ pub unsafe extern "C" fn spPathConstraint_computeWorldPositions( } if (*self_0).worldCount != 8 as c_int { if !((*self_0).world).is_null() { - _spFree((*self_0).world as *mut c_void); + _spFree((*self_0).world.cast::()); } (*self_0).world = _spMalloc( (::core::mem::size_of::() as c_ulong).wrapping_mul(8 as c_int as c_ulong), - b"spine.c\0" as *const u8 as *const c_char, - 7074 as c_int, - ) as *mut c_float; + (b"spine.c\0" as *const u8).cast::(), + 7316 as c_int, + ) + .cast::(); (*self_0).worldCount = 8 as c_int; } world = (*self_0).world; @@ -13636,14 +14321,15 @@ pub unsafe extern "C" fn spPathConstraint_computeWorldPositions( verticesLength += 2 as c_int; if (*self_0).worldCount != verticesLength { if !((*self_0).world).is_null() { - _spFree((*self_0).world as *mut c_void); + _spFree((*self_0).world.cast::()); } (*self_0).world = _spMalloc( (::core::mem::size_of::() as c_ulong) .wrapping_mul(verticesLength as c_ulong), - b"spine.c\0" as *const u8 as *const c_char, - 7134 as c_int, - ) as *mut c_float; + (b"spine.c\0" as *const u8).cast::(), + 7376 as c_int, + ) + .cast::(); (*self_0).worldCount = verticesLength; } world = (*self_0).world; @@ -13672,14 +14358,15 @@ pub unsafe extern "C" fn spPathConstraint_computeWorldPositions( verticesLength -= 4 as c_int; if (*self_0).worldCount != verticesLength { if !((*self_0).world).is_null() { - _spFree((*self_0).world as *mut c_void); + _spFree((*self_0).world.cast::()); } (*self_0).world = _spMalloc( (::core::mem::size_of::() as c_ulong) .wrapping_mul(verticesLength as c_ulong), - b"spine.c\0" as *const u8 as *const c_char, - 7147 as c_int, - ) as *mut c_float; + (b"spine.c\0" as *const u8).cast::(), + 7389 as c_int, + ) + .cast::(); (*self_0).worldCount = verticesLength; } world = (*self_0).world; @@ -13695,13 +14382,14 @@ pub unsafe extern "C" fn spPathConstraint_computeWorldPositions( } if (*self_0).curvesCount != curveCount { if !((*self_0).curves).is_null() { - _spFree((*self_0).curves as *mut c_void); + _spFree((*self_0).curves.cast::()); } (*self_0).curves = _spMalloc( (::core::mem::size_of::() as c_ulong).wrapping_mul(curveCount as c_ulong), - b"spine.c\0" as *const u8 as *const c_char, - 7157 as c_int, - ) as *mut c_float; + (b"spine.c\0" as *const u8).cast::(), + 7399 as c_int, + ) + .cast::(); (*self_0).curvesCount = curveCount; } curves = (*self_0).curves; @@ -13884,7 +14572,7 @@ pub unsafe extern "C" fn spPathConstraint_computeWorldPositions( i += 1; o += 3 as c_int; } - return out; + out } #[no_mangle] pub unsafe extern "C" fn spPathConstraintData_create( @@ -13893,42 +14581,449 @@ pub unsafe extern "C" fn spPathConstraintData_create( let mut self_0: *mut spPathConstraintData = _spCalloc( 1 as c_int as size_t, ::core::mem::size_of::() as c_ulong, - b"spine.c\0" as *const u8 as *const c_char, - 7332 as c_int, - ) as *mut spPathConstraintData; - let ref mut fresh81 = *(&mut (*self_0).name as *mut *mut c_char); - *fresh81 = _spMalloc( + (b"spine.c\0" as *const u8).cast::(), + 7574 as c_int, + ) + .cast::(); + (*self_0).name = _spMalloc( (::core::mem::size_of::() as c_ulong) .wrapping_mul((spine_strlen(name)).wrapping_add(1 as c_int as c_ulong)), - b"spine.c\0" as *const u8 as *const c_char, - 7333 as c_int, - ) as *mut c_char; - spine_strcpy(*fresh81, name); - return self_0; + (b"spine.c\0" as *const u8).cast::(), + 7575 as c_int, + ) + .cast::(); + spine_strcpy((*self_0).name, name); + self_0 } #[no_mangle] pub unsafe extern "C" fn spPathConstraintData_dispose(mut self_0: *mut spPathConstraintData) { - _spFree((*self_0).name as *mut c_void); - _spFree((*self_0).bones as *mut c_void); - _spFree(self_0 as *mut c_void); + _spFree((*self_0).name.cast::()); + _spFree((*self_0).bones.cast::()); + _spFree(self_0.cast::()); +} +#[no_mangle] +pub unsafe extern "C" fn spPhysicsConstraint_create( + mut data: *mut spPhysicsConstraintData, + mut skeleton: *mut spSkeleton, +) -> *mut spPhysicsConstraint { + let mut self_0: *mut spPhysicsConstraint = _spCalloc( + 1 as c_int as size_t, + ::core::mem::size_of::() as c_ulong, + (b"spine.c\0" as *const u8).cast::(), + 7618 as c_int, + ) + .cast::(); + (*self_0).data = data; + (*self_0).skeleton = skeleton; + (*self_0).bone = *((*skeleton).bones).offset((*(*data).bone).index as isize); + (*self_0).inertia = (*data).inertia; + (*self_0).strength = (*data).strength; + (*self_0).damping = (*data).damping; + (*self_0).massInverse = (*data).massInverse; + (*self_0).wind = (*data).wind; + (*self_0).gravity = (*data).gravity; + (*self_0).mix = (*data).mix; + (*self_0).reset = -(1 as c_int); + (*self_0).ux = 0 as c_int as c_float; + (*self_0).uy = 0 as c_int as c_float; + (*self_0).cx = 0 as c_int as c_float; + (*self_0).tx = 0 as c_int as c_float; + (*self_0).ty = 0 as c_int as c_float; + (*self_0).xOffset = 0 as c_int as c_float; + (*self_0).xVelocity = 0 as c_int as c_float; + (*self_0).yOffset = 0 as c_int as c_float; + (*self_0).yVelocity = 0 as c_int as c_float; + (*self_0).rotateOffset = 0 as c_int as c_float; + (*self_0).rotateVelocity = 0 as c_int as c_float; + (*self_0).scaleOffset = 0 as c_int as c_float; + (*self_0).scaleVelocity = 0 as c_int as c_float; + (*self_0).active = 0 as c_int; + (*self_0).remaining = 0 as c_int as c_float; + (*self_0).lastTime = 0 as c_int as c_float; + self_0 +} +#[no_mangle] +pub unsafe extern "C" fn spPhysicsConstraint_dispose(mut self_0: *mut spPhysicsConstraint) { + _spFree(self_0.cast::()); +} +#[no_mangle] +pub unsafe extern "C" fn spPhysicsConstraint_reset(mut self_0: *mut spPhysicsConstraint) { + (*self_0).remaining = 0 as c_int as c_float; + (*self_0).lastTime = (*(*self_0).skeleton).time; + (*self_0).reset = -(1 as c_int); + (*self_0).xOffset = 0 as c_int as c_float; + (*self_0).xVelocity = 0 as c_int as c_float; + (*self_0).yOffset = 0 as c_int as c_float; + (*self_0).yVelocity = 0 as c_int as c_float; + (*self_0).rotateOffset = 0 as c_int as c_float; + (*self_0).rotateVelocity = 0 as c_int as c_float; + (*self_0).scaleOffset = 0 as c_int as c_float; + (*self_0).scaleVelocity = 0 as c_int as c_float; +} +#[no_mangle] +pub unsafe extern "C" fn spPhysicsConstraint_setToSetupPose(mut self_0: *mut spPhysicsConstraint) { + (*self_0).inertia = (*(*self_0).data).inertia; + (*self_0).strength = (*(*self_0).data).strength; + (*self_0).damping = (*(*self_0).data).damping; + (*self_0).massInverse = (*(*self_0).data).massInverse; + (*self_0).wind = (*(*self_0).data).wind; + (*self_0).gravity = (*(*self_0).data).gravity; + (*self_0).mix = (*(*self_0).data).mix; +} +#[no_mangle] +pub unsafe extern "C" fn spPhysicsConstraint_update( + mut self_0: *mut spPhysicsConstraint, + mut physics: spPhysics, +) { + let mut mix: c_float = (*self_0).mix; + if mix == 0 as c_int as c_float { + return; + } + let mut x: c_int = ((*(*self_0).data).x > 0 as c_int as c_float) as c_int; + let mut y: c_int = ((*(*self_0).data).y > 0 as c_int as c_float) as c_int; + let mut rotateOrShearX: c_int = ((*(*self_0).data).rotate > 0 as c_int as c_float + || (*(*self_0).data).shearX > 0 as c_int as c_float) + as c_int; + let mut scaleX: c_int = ((*(*self_0).data).scaleX > 0 as c_int as c_float) as c_int; + let mut bone: *mut spBone = (*self_0).bone; + let mut l: c_float = (*(*bone).data).length; + let mut current_block_92: u64; + match physics as c_uint { + 0 => return, + 1 => { + spPhysicsConstraint_reset(self_0); + current_block_92 = 2473556513754201174; + } + 2 => { + current_block_92 = 2473556513754201174; + } + 3 => { + if x != 0 { + (*bone).worldX += (*self_0).xOffset * mix * (*(*self_0).data).x; + } + if y != 0 { + (*bone).worldY += (*self_0).yOffset * mix * (*(*self_0).data).y; + } + current_block_92 = 5207889489643863322; + } + _ => { + current_block_92 = 5207889489643863322; + } + } + match current_block_92 { + 2473556513754201174 => { + let mut delta: c_float = if (*(*self_0).skeleton).time - (*self_0).lastTime > 0.0f32 { + (*(*self_0).skeleton).time - (*self_0).lastTime + } else { + 0.0f32 + }; + (*self_0).remaining += delta; + (*self_0).lastTime = (*(*self_0).skeleton).time; + let mut bx: c_float = (*bone).worldX; + let mut by: c_float = (*bone).worldY; + if (*self_0).reset != 0 { + (*self_0).reset = 0 as c_int; + (*self_0).ux = bx; + (*self_0).uy = by; + } else { + let mut a: c_float = (*self_0).remaining; + let mut i: c_float = (*self_0).inertia; + let mut q: c_float = (*(*self_0).data).limit * delta; + let mut t: c_float = (*(*self_0).data).step; + let mut f: c_float = (*(*(*self_0).skeleton).data).referenceScale; + let mut d: c_float = -(1 as c_int) as c_float; + if x != 0 || y != 0 { + if x != 0 { + let mut u: c_float = ((*self_0).ux - bx) * i; + (*self_0).xOffset += if u > q { + q + } else if u < -q { + -q + } else { + u + }; + (*self_0).ux = bx; + } + if y != 0 { + let mut u_0: c_float = ((*self_0).uy - by) * i; + (*self_0).yOffset += if u_0 > q { + q + } else if u_0 < -q { + -q + } else { + u_0 + }; + (*self_0).uy = by; + } + if a >= t { + d = spine_pow( + (*self_0).damping as c_double, + (60 as c_int as c_float * t) as c_double, + ) as c_float; + let mut m: c_float = (*self_0).massInverse * t; + let mut e: c_float = (*self_0).strength; + let mut w: c_float = (*self_0).wind * f; + let mut g: c_float = (*self_0).gravity + * f + * (if spBone_isYDown() != 0 { + -(1 as c_int) + } else { + 1 as c_int + }) as c_float; + loop { + if x != 0 { + (*self_0).xVelocity += (w - (*self_0).xOffset * e) * m; + (*self_0).xOffset += (*self_0).xVelocity * t; + (*self_0).xVelocity *= d; + } + if y != 0 { + (*self_0).yVelocity -= (g + (*self_0).yOffset * e) * m; + (*self_0).yOffset += (*self_0).yVelocity * t; + (*self_0).yVelocity *= d; + } + a -= t; + if !(a >= t) { + break; + } + } + } + if x != 0 { + (*bone).worldX += (*self_0).xOffset * mix * (*(*self_0).data).x; + } + if y != 0 { + (*bone).worldY += (*self_0).yOffset * mix * (*(*self_0).data).y; + } + } + if rotateOrShearX != 0 || scaleX != 0 { + let mut ca: c_float = spine_atan2f((*bone).c, (*bone).a); + let mut c: c_float = 0.; + let mut s: c_float = 0.; + let mut mr: c_float = 0 as c_int as c_float; + let mut dx: c_float = (*self_0).cx - (*bone).worldX; + let mut dy: c_float = (*self_0).cy - (*bone).worldY; + if dx > q { + dx = q; + } else if dx < -q { + dx = -q; + } + if dy > q { + dy = q; + } else if dy < -q { + dy = -q; + } + if rotateOrShearX != 0 { + mr = ((*(*self_0).data).rotate + (*(*self_0).data).shearX) * mix; + let mut r: c_float = spine_atan2f(dy + (*self_0).ty, dx + (*self_0).tx) + - ca + - (*self_0).rotateOffset * mr; + (*self_0).rotateOffset += (r - spine_ceil( + (r * (1 as c_int as c_float + / (3.141_592_7_f32 * 2 as c_int as c_float)) + - 0.5f32) as c_double, + ) as c_float + * (3.141_592_7_f32 * 2 as c_int as c_float)) + * i; + r = (*self_0).rotateOffset * mr + ca; + c = spine_cosf(r); + s = spine_sinf(r); + if scaleX != 0 { + r = l * spBone_getWorldScaleX(bone); + if r > 0 as c_int as c_float { + (*self_0).scaleOffset += (dx * c + dy * s) * i / r; + } + } + } else { + c = spine_cosf(ca); + s = spine_sinf(ca); + let mut r_0: c_float = l * spBone_getWorldScaleX(bone); + if r_0 > 0 as c_int as c_float { + (*self_0).scaleOffset += (dx * c + dy * s) * i / r_0; + } + } + a = (*self_0).remaining; + if a >= t { + if d == -(1 as c_int) as c_float { + d = spine_pow( + (*self_0).damping as c_double, + (60 as c_int as c_float * t) as c_double, + ) as c_float; + } + let mut m_0: c_float = (*self_0).massInverse * t; + let mut e_0: c_float = (*self_0).strength; + let mut w_0: c_float = (*self_0).wind; + let mut g_0: c_float = (*self_0).gravity; + let mut h: c_float = l / f; + while -(1 as c_int) != 0 { + a -= t; + if scaleX != 0 { + (*self_0).scaleVelocity += + (w_0 * c - g_0 * s - (*self_0).scaleOffset * e_0) * m_0; + (*self_0).scaleOffset += (*self_0).scaleVelocity * t; + (*self_0).scaleVelocity *= d; + } + if rotateOrShearX != 0 { + (*self_0).rotateVelocity -= + ((w_0 * s + g_0 * c) * h + (*self_0).rotateOffset * e_0) * m_0; + (*self_0).rotateOffset += (*self_0).rotateVelocity * t; + (*self_0).rotateVelocity *= d; + if a < t { + break; + } + let mut r_1: c_float = (*self_0).rotateOffset * mr + ca; + c = spine_cosf(r_1); + s = spine_sinf(r_1); + } else if a < t { + break; + } + } + } + } + (*self_0).remaining = a; + } + (*self_0).cx = (*bone).worldX; + (*self_0).cy = (*bone).worldY; + } + _ => {} + } + if rotateOrShearX != 0 { + let mut o: c_float = (*self_0).rotateOffset * mix; + let mut s_0: c_float = 0 as c_int as c_float; + let mut c_0: c_float = 0 as c_int as c_float; + let mut a_0: c_float = 0 as c_int as c_float; + if (*(*self_0).data).shearX > 0 as c_int as c_float { + let mut r_2: c_float = 0 as c_int as c_float; + if (*(*self_0).data).rotate > 0 as c_int as c_float { + r_2 = o * (*(*self_0).data).rotate; + s_0 = spine_sinf(r_2); + c_0 = spine_cosf(r_2); + a_0 = (*bone).b; + (*bone).b = c_0 * a_0 - s_0 * (*bone).d; + (*bone).d = s_0 * a_0 + c_0 * (*bone).d; + } + r_2 += o * (*(*self_0).data).shearX; + s_0 = spine_sinf(r_2); + c_0 = spine_cosf(r_2); + a_0 = (*bone).a; + (*bone).a = c_0 * a_0 - s_0 * (*bone).c; + (*bone).c = s_0 * a_0 + c_0 * (*bone).c; + } else { + o *= (*(*self_0).data).rotate; + s_0 = spine_sinf(o); + c_0 = spine_cosf(o); + a_0 = (*bone).a; + (*bone).a = c_0 * a_0 - s_0 * (*bone).c; + (*bone).c = s_0 * a_0 + c_0 * (*bone).c; + a_0 = (*bone).b; + (*bone).b = c_0 * a_0 - s_0 * (*bone).d; + (*bone).d = s_0 * a_0 + c_0 * (*bone).d; + } + } + if scaleX != 0 { + let mut s_1: c_float = + 1 as c_int as c_float + (*self_0).scaleOffset * mix * (*(*self_0).data).scaleX; + (*bone).a *= s_1; + (*bone).c *= s_1; + } + if physics as c_uint != SP_PHYSICS_POSE as c_int as c_uint { + (*self_0).tx = l * (*bone).a; + (*self_0).ty = l * (*bone).c; + } + spBone_updateAppliedTransform(bone); +} +#[no_mangle] +pub unsafe extern "C" fn spPhysicsConstraint_rotate( + mut self_0: *mut spPhysicsConstraint, + mut x: c_float, + mut y: c_float, + mut degrees: c_float, +) { + let mut r: c_float = degrees * (3.141_592_7_f32 / 180 as c_int as c_float); + let mut cosine: c_float = spine_cosf(r); + let mut sine: c_float = spine_sinf(r); + let mut dx: c_float = (*self_0).cx - x; + let mut dy: c_float = (*self_0).cy - y; + spPhysicsConstraint_translate( + self_0, + dx * cosine - dy * sine - dx, + dx * sine + dy * cosine - dy, + ); +} +#[no_mangle] +pub unsafe extern "C" fn spPhysicsConstraint_translate( + mut self_0: *mut spPhysicsConstraint, + mut x: c_float, + mut y: c_float, +) { + (*self_0).ux -= x; + (*self_0).uy -= y; + (*self_0).cx -= x; + (*self_0).cy -= y; +} +#[no_mangle] +pub unsafe extern "C" fn spPhysicsConstraintData_create( + mut name: *const c_char, +) -> *mut spPhysicsConstraintData { + let mut self_0: *mut spPhysicsConstraintData = _spCalloc( + 1 as c_int as size_t, + ::core::mem::size_of::() as c_ulong, + (b"spine.c\0" as *const u8).cast::(), + 7895 as c_int, + ) + .cast::(); + (*self_0).name = _spMalloc( + (::core::mem::size_of::() as c_ulong) + .wrapping_mul((spine_strlen(name)).wrapping_add(1 as c_int as c_ulong)), + (b"spine.c\0" as *const u8).cast::(), + 7896 as c_int, + ) + .cast::(); + spine_strcpy((*self_0).name, name); + (*self_0).bone = std::ptr::null_mut::(); + (*self_0).x = 0 as c_int as c_float; + (*self_0).y = 0 as c_int as c_float; + (*self_0).rotate = 0 as c_int as c_float; + (*self_0).scaleX = 0 as c_int as c_float; + (*self_0).shearX = 0 as c_int as c_float; + (*self_0).limit = 0 as c_int as c_float; + (*self_0).step = 0 as c_int as c_float; + (*self_0).inertia = 0 as c_int as c_float; + (*self_0).strength = 0 as c_int as c_float; + (*self_0).damping = 0 as c_int as c_float; + (*self_0).massInverse = 0 as c_int as c_float; + (*self_0).wind = 0 as c_int as c_float; + (*self_0).gravity = 0 as c_int as c_float; + (*self_0).mix = 0 as c_int as c_float; + (*self_0).inertiaGlobal = 0 as c_int; + (*self_0).strengthGlobal = 0 as c_int; + (*self_0).dampingGlobal = 0 as c_int; + (*self_0).massGlobal = 0 as c_int; + (*self_0).windGlobal = 0 as c_int; + (*self_0).gravityGlobal = 0 as c_int; + (*self_0).mixGlobal = 0 as c_int; + self_0 +} +#[no_mangle] +pub unsafe extern "C" fn spPhysicsConstraintData_dispose(mut self_0: *mut spPhysicsConstraintData) { + _spFree((*self_0).name.cast::()); + _spFree(self_0.cast::()); } #[no_mangle] pub unsafe extern "C" fn _spPointAttachment_dispose(mut attachment: *mut spAttachment) { - let mut self_0: *mut spPointAttachment = attachment as *mut spPointAttachment; + let mut self_0: *mut spPointAttachment = attachment.cast::(); _spAttachment_deinit(attachment); - _spFree(self_0 as *mut c_void); + _spFree(self_0.cast::()); } #[no_mangle] pub unsafe extern "C" fn _spPointAttachment_copy( mut attachment: *mut spAttachment, ) -> *mut spAttachment { - let mut self_0: *mut spPointAttachment = attachment as *mut spPointAttachment; + let mut self_0: *mut spPointAttachment = attachment.cast::(); let mut copy: *mut spPointAttachment = spPointAttachment_create((*attachment).name); (*copy).x = (*self_0).x; (*copy).y = (*self_0).y; (*copy).rotation = (*self_0).rotation; spColor_setFromColor(&mut (*copy).color, &mut (*self_0).color); - return &mut (*copy).super_0; + &mut (*copy).super_0 } #[no_mangle] pub unsafe extern "C" fn spPointAttachment_create( @@ -13937,9 +15032,10 @@ pub unsafe extern "C" fn spPointAttachment_create( let mut self_0: *mut spPointAttachment = _spCalloc( 1 as c_int as size_t, ::core::mem::size_of::() as c_ulong, - b"spine.c\0" as *const u8 as *const c_char, - 7391 as c_int, - ) as *mut spPointAttachment; + (b"spine.c\0" as *const u8).cast::(), + 7975 as c_int, + ) + .cast::(); _spAttachment_init( &mut (*self_0).super_0, name, @@ -13949,7 +15045,7 @@ pub unsafe extern "C" fn spPointAttachment_create( _spPointAttachment_copy as unsafe extern "C" fn(*mut spAttachment) -> *mut spAttachment, ), ); - return self_0; + self_0 } #[no_mangle] pub unsafe extern "C" fn spPointAttachment_computeWorldPosition( @@ -13966,42 +15062,39 @@ pub unsafe extern "C" fn spPointAttachment_computeWorldRotation( mut self_0: *mut spPointAttachment, mut bone: *mut spBone, ) -> c_float { - let mut cosine: c_float = 0.; - let mut sine: c_float = 0.; - let mut x: c_float = 0.; - let mut y: c_float = 0.; - cosine = spine_cosf((*self_0).rotation * (3.1415926535897932385f32 / 180 as c_int as c_float)); - sine = spine_sinf((*self_0).rotation * (3.1415926535897932385f32 / 180 as c_int as c_float)); - x = cosine * (*bone).a + sine * (*bone).b; - y = cosine * (*bone).c + sine * (*bone).d; - return spine_atan2f(y, x) * (180 as c_int as c_float / 3.1415926535897932385f32); + let mut r: c_float = (*self_0).rotation * (3.141_592_7_f32 / 180 as c_int as c_float); + let mut cosine: c_float = spine_cosf(r); + let mut sine: c_float = spine_sinf(r); + let mut x: c_float = cosine * (*bone).a + sine * (*bone).b; + let mut y: c_float = cosine * (*bone).c + sine * (*bone).d; + spine_atan2f(y, x) * (180 as c_int as c_float / 3.141_592_7_f32) } #[no_mangle] pub unsafe extern "C" fn _spRegionAttachment_dispose(mut attachment: *mut spAttachment) { - let mut self_0: *mut spRegionAttachment = attachment as *mut spRegionAttachment; + let mut self_0: *mut spRegionAttachment = attachment.cast::(); if !((*self_0).sequence).is_null() { spSequence_dispose((*self_0).sequence); } _spAttachment_deinit(attachment); - _spFree((*self_0).path as *mut c_void); - _spFree(self_0 as *mut c_void); + _spFree((*self_0).path.cast::()); + _spFree(self_0.cast::()); } #[no_mangle] pub unsafe extern "C" fn _spRegionAttachment_copy( mut attachment: *mut spAttachment, ) -> *mut spAttachment { - let mut self_0: *mut spRegionAttachment = attachment as *mut spRegionAttachment; + let mut self_0: *mut spRegionAttachment = attachment.cast::(); let mut copy: *mut spRegionAttachment = spRegionAttachment_create((*attachment).name); (*copy).region = (*self_0).region; (*copy).rendererObject = (*self_0).rendererObject; - let ref mut fresh82 = *(&mut (*copy).path as *mut *const c_char as *mut *mut c_char); - *fresh82 = _spMalloc( + (*copy).path = _spMalloc( (::core::mem::size_of::() as c_ulong) .wrapping_mul((spine_strlen((*self_0).path)).wrapping_add(1 as c_int as c_ulong)), - b"spine.c\0" as *const u8 as *const c_char, - 7465 as c_int, - ) as *mut c_char; - spine_strcpy(*fresh82, (*self_0).path); + (b"spine.c\0" as *const u8).cast::(), + 8047 as c_int, + ) + .cast::(); + spine_strcpy((*copy).path, (*self_0).path); (*copy).x = (*self_0).x; (*copy).y = (*self_0).y; (*copy).scaleX = (*self_0).scaleX; @@ -14010,12 +15103,12 @@ pub unsafe extern "C" fn _spRegionAttachment_copy( (*copy).width = (*self_0).width; (*copy).height = (*self_0).height; spine_memcpy( - ((*copy).uvs).as_mut_ptr() as *mut c_void, + ((*copy).uvs).as_mut_ptr().cast::(), ((*self_0).uvs).as_mut_ptr() as *const c_void, (::core::mem::size_of::() as c_ulong).wrapping_mul(8 as c_int as c_ulong), ); spine_memcpy( - ((*copy).offset).as_mut_ptr() as *mut c_void, + ((*copy).offset).as_mut_ptr().cast::(), ((*self_0).offset).as_mut_ptr() as *const c_void, (::core::mem::size_of::() as c_ulong).wrapping_mul(8 as c_int as c_ulong), ); @@ -14023,9 +15116,9 @@ pub unsafe extern "C" fn _spRegionAttachment_copy( (*copy).sequence = if !((*self_0).sequence).is_null() { spSequence_copy((*self_0).sequence) } else { - std::ptr::null_mut() + std::ptr::null_mut::() }; - return &mut (*copy).super_0; + &mut (*copy).super_0 } #[no_mangle] pub unsafe extern "C" fn spRegionAttachment_create( @@ -14034,9 +15127,10 @@ pub unsafe extern "C" fn spRegionAttachment_create( let mut self_0: *mut spRegionAttachment = _spCalloc( 1 as c_int as size_t, ::core::mem::size_of::() as c_ulong, - b"spine.c\0" as *const u8 as *const c_char, - 7481 as c_int, - ) as *mut spRegionAttachment; + (b"spine.c\0" as *const u8).cast::(), + 8063 as c_int, + ) + .cast::(); (*self_0).scaleX = 1 as c_int as c_float; (*self_0).scaleY = 1 as c_int as c_float; spColor_setFromFloats( @@ -14056,7 +15150,7 @@ pub unsafe extern "C" fn spRegionAttachment_create( as unsafe extern "C" fn(*mut spAttachment) -> *mut spAttachment, ), ); - return self_0; + self_0 } #[no_mangle] pub unsafe extern "C" fn spRegionAttachment_updateRegion(mut self_0: *mut spRegionAttachment) { @@ -14098,7 +15192,7 @@ pub unsafe extern "C" fn spRegionAttachment_updateRegion(mut self_0: *mut spRegi + (*(*self_0).region).offsetY * regionScaleY; localX2 = localX + (*(*self_0).region).width as c_float * regionScaleX; localY2 = localY + (*(*self_0).region).height as c_float * regionScaleY; - radians = (*self_0).rotation * (3.1415926535897932385f32 / 180 as c_int as c_float); + radians = (*self_0).rotation * (3.141_592_7_f32 / 180 as c_int as c_float); cosine = spine_cosf(radians); sine = spine_sinf(radians); localXCos = localX * cosine + (*self_0).x; @@ -14185,23 +15279,25 @@ pub unsafe extern "C" fn spTextureRegionArray_create( let mut array: *mut spTextureRegionArray = _spCalloc( 1 as c_int as size_t, ::core::mem::size_of::() as c_ulong, - b"spine.c\0" as *const u8 as *const c_char, - 7618 as c_int, - ) as *mut spTextureRegionArray; + (b"spine.c\0" as *const u8).cast::(), + 8200 as c_int, + ) + .cast::(); (*array).size = 0 as c_int; (*array).capacity = initialCapacity; (*array).items = _spCalloc( initialCapacity as size_t, ::core::mem::size_of::<*mut spTextureRegion>() as c_ulong, - b"spine.c\0" as *const u8 as *const c_char, - 7618 as c_int, - ) as *mut *mut spTextureRegion; - return array; + (b"spine.c\0" as *const u8).cast::(), + 8200 as c_int, + ) + .cast::<*mut spTextureRegion>(); + array } #[no_mangle] pub unsafe extern "C" fn spTextureRegionArray_dispose(mut self_0: *mut spTextureRegionArray) { - _spFree((*self_0).items as *mut c_void); - _spFree(self_0 as *mut c_void); + _spFree((*self_0).items.cast::()); + _spFree(self_0.cast::()); } #[no_mangle] pub unsafe extern "C" fn spTextureRegionArray_clear(mut self_0: *mut spTextureRegionArray) { @@ -14220,12 +15316,13 @@ pub unsafe extern "C" fn spTextureRegionArray_setSize( ((*self_0).size as c_float * 1.75f32) as c_int }; (*self_0).items = _spRealloc( - (*self_0).items as *mut c_void, + (*self_0).items.cast::(), (::core::mem::size_of::<*mut spTextureRegion>() as c_ulong) .wrapping_mul((*self_0).capacity as c_ulong), - ) as *mut *mut spTextureRegion; + ) + .cast::<*mut spTextureRegion>(); } - return self_0; + self_0 } #[no_mangle] pub unsafe extern "C" fn spTextureRegionArray_ensureCapacity( @@ -14237,10 +15334,11 @@ pub unsafe extern "C" fn spTextureRegionArray_ensureCapacity( } (*self_0).capacity = newCapacity; (*self_0).items = _spRealloc( - (*self_0).items as *mut c_void, + (*self_0).items.cast::(), (::core::mem::size_of::<*mut spTextureRegion>() as c_ulong) .wrapping_mul((*self_0).capacity as c_ulong), - ) as *mut *mut spTextureRegion; + ) + .cast::<*mut spTextureRegion>(); } #[no_mangle] pub unsafe extern "C" fn spTextureRegionArray_add( @@ -14254,15 +15352,16 @@ pub unsafe extern "C" fn spTextureRegionArray_add( ((*self_0).size as c_float * 1.75f32) as c_int }; (*self_0).items = _spRealloc( - (*self_0).items as *mut c_void, + (*self_0).items.cast::(), (::core::mem::size_of::<*mut spTextureRegion>() as c_ulong) .wrapping_mul((*self_0).capacity as c_ulong), - ) as *mut *mut spTextureRegion; + ) + .cast::<*mut spTextureRegion>(); } - let fresh83 = (*self_0).size; - (*self_0).size = (*self_0).size + 1; - let ref mut fresh84 = *((*self_0).items).offset(fresh83 as isize); - *fresh84 = value; + let fresh52 = (*self_0).size; + (*self_0).size += 1; + let fresh53 = &mut (*((*self_0).items).offset(fresh52 as isize)); + *fresh53 = value; } #[no_mangle] pub unsafe extern "C" fn spTextureRegionArray_addAll( @@ -14296,7 +15395,7 @@ pub unsafe extern "C" fn spTextureRegionArray_removeAt( ) { (*self_0).size -= 1; spine_memmove( - ((*self_0).items).offset(index as isize) as *mut c_void, + ((*self_0).items).offset(index as isize).cast::(), ((*self_0).items) .offset(index as isize) .offset(1 as c_int as isize) as *const c_void, @@ -14320,7 +15419,7 @@ pub unsafe extern "C" fn spTextureRegionArray_contains( } i += 1; } - return 0 as c_int; + 0 as c_int } #[no_mangle] pub unsafe extern "C" fn spTextureRegionArray_pop( @@ -14328,13 +15427,13 @@ pub unsafe extern "C" fn spTextureRegionArray_pop( ) -> *mut spTextureRegion { (*self_0).size -= 1; let mut item: *mut spTextureRegion = *((*self_0).items).offset((*self_0).size as isize); - return item; + item } #[no_mangle] pub unsafe extern "C" fn spTextureRegionArray_peek( mut self_0: *mut spTextureRegionArray, ) -> *mut spTextureRegion { - return *((*self_0).items).offset(((*self_0).size - 1 as c_int) as isize); + *((*self_0).items).offset(((*self_0).size - 1 as c_int) as isize) } static mut nextSequenceId: c_int = 0 as c_int; #[no_mangle] @@ -14342,34 +15441,35 @@ pub unsafe extern "C" fn spSequence_create(mut numRegions: c_int) -> *mut spSequ let mut self_0: *mut spSequence = _spCalloc( 1 as c_int as size_t, ::core::mem::size_of::() as c_ulong, - b"spine.c\0" as *const u8 as *const c_char, - 7623 as c_int, - ) as *mut spSequence; - let fresh85 = nextSequenceId; - nextSequenceId = nextSequenceId + 1; - (*self_0).id = fresh85; + (b"spine.c\0" as *const u8).cast::(), + 8205 as c_int, + ) + .cast::(); + let fresh54 = nextSequenceId; + nextSequenceId += 1; + (*self_0).id = fresh54; (*self_0).regions = spTextureRegionArray_create(numRegions); spTextureRegionArray_setSize((*self_0).regions, numRegions); - return self_0; + self_0 } #[no_mangle] pub unsafe extern "C" fn spSequence_dispose(mut self_0: *mut spSequence) { - _spFree((*self_0).regions as *mut c_void); - _spFree(self_0 as *mut c_void); + _spFree((*self_0).regions.cast::()); + _spFree(self_0.cast::()); } #[no_mangle] pub unsafe extern "C" fn spSequence_copy(mut self_0: *mut spSequence) -> *mut spSequence { let mut i: c_int = 0 as c_int; let mut copy: *mut spSequence = spSequence_create((*(*self_0).regions).size); while i < (*(*self_0).regions).size { - let ref mut fresh86 = *((*(*copy).regions).items).offset(i as isize); - *fresh86 = *((*(*self_0).regions).items).offset(i as isize); + let fresh55 = &mut (*((*(*copy).regions).items).offset(i as isize)); + *fresh55 = *((*(*self_0).regions).items).offset(i as isize); i += 1; } (*copy).start = (*self_0).start; (*copy).digits = (*self_0).digits; (*copy).setupIndex = (*self_0).setupIndex; - return copy; + copy } #[no_mangle] pub unsafe extern "C" fn spSequence_apply( @@ -14378,7 +15478,7 @@ pub unsafe extern "C" fn spSequence_apply( mut attachment: *mut spAttachment, ) { let mut index: c_int = (*slot).sequenceIndex; - let mut region: *mut spTextureRegion = std::ptr::null_mut(); + let mut region: *mut spTextureRegion = std::ptr::null_mut::(); if index == -(1 as c_int) { index = (*self_0).setupIndex; } @@ -14387,17 +15487,17 @@ pub unsafe extern "C" fn spSequence_apply( } region = *((*(*self_0).regions).items).offset(index as isize); if (*attachment).type_0 as c_uint == SP_ATTACHMENT_REGION as c_int as c_uint { - let mut regionAttachment: *mut spRegionAttachment = attachment as *mut spRegionAttachment; + let mut regionAttachment: *mut spRegionAttachment = attachment.cast::(); if (*regionAttachment).region != region { - (*regionAttachment).rendererObject = region as *mut c_void; + (*regionAttachment).rendererObject = region.cast::(); (*regionAttachment).region = region; spRegionAttachment_updateRegion(regionAttachment); } } if (*attachment).type_0 as c_uint == SP_ATTACHMENT_MESH as c_int as c_uint { - let mut meshAttachment: *mut spMeshAttachment = attachment as *mut spMeshAttachment; + let mut meshAttachment: *mut spMeshAttachment = attachment.cast::(); if (*meshAttachment).region != region { - (*meshAttachment).rendererObject = region as *mut c_void; + (*meshAttachment).rendererObject = region.cast::(); (*meshAttachment).region = region; spMeshAttachment_updateRegion(meshAttachment); } @@ -14412,29 +15512,30 @@ unsafe extern "C" fn num_digits(mut value: c_int) -> c_int { loop { value /= 10 as c_int; count += 1; - if !(value != 0 as c_int) { + if value == 0 as c_int { break; } } - return count; + count } unsafe extern "C" fn string_append(mut str: *mut c_char, mut b: *const c_char) -> *mut c_char { let mut lenB: c_int = spine_strlen(b) as c_int; spine_memcpy( - str as *mut c_void, - b as *const c_void, + str.cast::(), + b.cast::(), (lenB + 1 as c_int) as size_t, ); - return str.offset(lenB as isize); + str.offset(lenB as isize) } unsafe extern "C" fn string_append_int(mut str: *mut c_char, mut value: c_int) -> *mut c_char { let mut intStr: [c_char; 20] = [0; 20]; - spine_sprintf!( + spine_snprintf!( intStr.as_mut_ptr(), - b"%i\0" as *const u8 as *const c_char, + 20 as c_int as size_t, + (b"%i\0" as *const u8).cast::(), value, ); - return string_append(str, intStr.as_mut_ptr()); + string_append(str, intStr.as_mut_ptr()) } #[no_mangle] pub unsafe extern "C" fn spSequence_getPath( @@ -14447,7 +15548,7 @@ pub unsafe extern "C" fn spSequence_getPath( path = string_append(path, basePath); i = (*self_0).digits - num_digits((*self_0).start + index); while i > 0 as c_int { - path = string_append(path, b"0\0" as *const u8 as *const c_char); + path = string_append(path, (b"0\0" as *const u8).cast::()); i -= 1; } path = string_append_int(path, (*self_0).start + index); @@ -14455,57 +15556,70 @@ pub unsafe extern "C" fn spSequence_getPath( #[no_mangle] pub unsafe extern "C" fn spSkeleton_create(mut data: *mut spSkeletonData) -> *mut spSkeleton { let mut i: c_int = 0; - let mut childrenCounts: *mut c_int = std::ptr::null_mut(); + let mut childrenCounts: *mut c_int = std::ptr::null_mut::(); let mut internal: *mut _spSkeleton = _spCalloc( 1 as c_int as size_t, ::core::mem::size_of::<_spSkeleton>() as c_ulong, - b"spine.c\0" as *const u8 as *const c_char, - 7758 as c_int, - ) as *mut _spSkeleton; + (b"spine.c\0" as *const u8).cast::(), + 8341 as c_int, + ) + .cast::<_spSkeleton>(); let mut self_0: *mut spSkeleton = &mut (*internal).super_0; - let ref mut fresh87 = *(&mut (*self_0).data as *mut *mut spSkeletonData); - *fresh87 = data; + (*self_0).data = data; + (*self_0).skin = std::ptr::null_mut::(); + spColor_setFromFloats( + &mut (*self_0).color, + 1 as c_int as c_float, + 1 as c_int as c_float, + 1 as c_int as c_float, + 1 as c_int as c_float, + ); + (*self_0).scaleX = 1 as c_int as c_float; + (*self_0).scaleY = 1 as c_int as c_float; + (*self_0).time = 0 as c_int as c_float; (*self_0).bonesCount = (*(*self_0).data).bonesCount; (*self_0).bones = _spMalloc( (::core::mem::size_of::<*mut spBone>() as c_ulong) .wrapping_mul((*self_0).bonesCount as c_ulong), - b"spine.c\0" as *const u8 as *const c_char, - 7763 as c_int, - ) as *mut *mut spBone; + (b"spine.c\0" as *const u8).cast::(), + 8351 as c_int, + ) + .cast::<*mut spBone>(); childrenCounts = _spCalloc( (*self_0).bonesCount as size_t, ::core::mem::size_of::() as c_ulong, - b"spine.c\0" as *const u8 as *const c_char, - 7764 as c_int, - ) as *mut c_int; + (b"spine.c\0" as *const u8).cast::(), + 8352 as c_int, + ) + .cast::(); i = 0 as c_int; while i < (*self_0).bonesCount { let mut boneData: *mut spBoneData = *((*(*self_0).data).bones).offset(i as isize); - let mut newBone: *mut spBone = std::ptr::null_mut(); + let mut newBone: *mut spBone = std::ptr::null_mut::(); if ((*boneData).parent).is_null() { - newBone = spBone_create(boneData, self_0, std::ptr::null_mut()); + newBone = spBone_create(boneData, self_0, std::ptr::null_mut::()); } else { let mut parent: *mut spBone = *((*self_0).bones).offset((*(*boneData).parent).index as isize); newBone = spBone_create(boneData, self_0, parent); - let ref mut fresh88 = *childrenCounts.offset((*(*boneData).parent).index as isize); - *fresh88 += 1; + let fresh56 = &mut (*childrenCounts.offset((*(*boneData).parent).index as isize)); + *fresh56 += 1; } - let ref mut fresh89 = *((*self_0).bones).offset(i as isize); - *fresh89 = newBone; + let fresh57 = &mut (*((*self_0).bones).offset(i as isize)); + *fresh57 = newBone; i += 1; } i = 0 as c_int; while i < (*self_0).bonesCount { let mut boneData_0: *mut spBoneData = *((*(*self_0).data).bones).offset(i as isize); let mut bone: *mut spBone = *((*self_0).bones).offset(i as isize); - let ref mut fresh90 = *(&mut (*bone).children as *mut *mut *mut spBone); - *fresh90 = _spMalloc( + (*bone).children = _spMalloc( (::core::mem::size_of::<*mut spBone>() as c_ulong) .wrapping_mul(*childrenCounts.offset((*boneData_0).index as isize) as c_ulong), - b"spine.c\0" as *const u8 as *const c_char, - 7781 as c_int, - ) as *mut *mut spBone; + (b"spine.c\0" as *const u8).cast::(), + 8369 as c_int, + ) + .cast::<*mut spBone>(); i += 1; } i = 0 as c_int; @@ -14513,43 +15627,44 @@ pub unsafe extern "C" fn spSkeleton_create(mut data: *mut spSkeletonData) -> *mu let mut bone_0: *mut spBone = *((*self_0).bones).offset(i as isize); let mut parent_0: *mut spBone = (*bone_0).parent; if !parent_0.is_null() { - let fresh91 = (*parent_0).childrenCount; - (*parent_0).childrenCount = (*parent_0).childrenCount + 1; - let ref mut fresh92 = *((*parent_0).children).offset(fresh91 as isize); - *fresh92 = bone_0; + let fresh58 = (*parent_0).childrenCount; + (*parent_0).childrenCount += 1; + let fresh59 = &mut (*((*parent_0).children).offset(fresh58 as isize)); + *fresh59 = bone_0; } i += 1; } - let ref mut fresh93 = *(&mut (*self_0).root as *mut *mut spBone); - *fresh93 = if (*self_0).bonesCount > 0 as c_int { + (*self_0).root = if (*self_0).bonesCount > 0 as c_int { *((*self_0).bones).offset(0 as c_int as isize) } else { - std::ptr::null_mut() + std::ptr::null_mut::() }; (*self_0).slotsCount = (*data).slotsCount; (*self_0).slots = _spMalloc( (::core::mem::size_of::<*mut spSlot>() as c_ulong) .wrapping_mul((*self_0).slotsCount as c_ulong), - b"spine.c\0" as *const u8 as *const c_char, - 7792 as c_int, - ) as *mut *mut spSlot; + (b"spine.c\0" as *const u8).cast::(), + 8380 as c_int, + ) + .cast::<*mut spSlot>(); i = 0 as c_int; while i < (*self_0).slotsCount { let mut slotData: *mut spSlotData = *((*data).slots).offset(i as isize); let mut bone_1: *mut spBone = *((*self_0).bones).offset((*(*slotData).boneData).index as isize); - let ref mut fresh94 = *((*self_0).slots).offset(i as isize); - *fresh94 = spSlot_create(slotData, bone_1); + let fresh60 = &mut (*((*self_0).slots).offset(i as isize)); + *fresh60 = spSlot_create(slotData, bone_1); i += 1; } (*self_0).drawOrder = _spMalloc( (::core::mem::size_of::<*mut spSlot>() as c_ulong) .wrapping_mul((*self_0).slotsCount as c_ulong), - b"spine.c\0" as *const u8 as *const c_char, - 7799 as c_int, - ) as *mut *mut spSlot; + (b"spine.c\0" as *const u8).cast::(), + 8387 as c_int, + ) + .cast::<*mut spSlot>(); spine_memcpy( - (*self_0).drawOrder as *mut c_void, + (*self_0).drawOrder.cast::(), (*self_0).slots as *const c_void, (::core::mem::size_of::<*mut spSlot>() as c_ulong) .wrapping_mul((*self_0).slotsCount as c_ulong), @@ -14558,13 +15673,14 @@ pub unsafe extern "C" fn spSkeleton_create(mut data: *mut spSkeletonData) -> *mu (*self_0).ikConstraints = _spMalloc( (::core::mem::size_of::<*mut spIkConstraint>() as c_ulong) .wrapping_mul((*self_0).ikConstraintsCount as c_ulong), - b"spine.c\0" as *const u8 as *const c_char, - 7803 as c_int, - ) as *mut *mut spIkConstraint; + (b"spine.c\0" as *const u8).cast::(), + 8391 as c_int, + ) + .cast::<*mut spIkConstraint>(); i = 0 as c_int; while i < (*(*self_0).data).ikConstraintsCount { - let ref mut fresh95 = *((*self_0).ikConstraints).offset(i as isize); - *fresh95 = spIkConstraint_create( + let fresh61 = &mut (*((*self_0).ikConstraints).offset(i as isize)); + *fresh61 = spIkConstraint_create( *((*(*self_0).data).ikConstraints).offset(i as isize), self_0, ); @@ -14574,13 +15690,14 @@ pub unsafe extern "C" fn spSkeleton_create(mut data: *mut spSkeletonData) -> *mu (*self_0).transformConstraints = _spMalloc( (::core::mem::size_of::<*mut spTransformConstraint>() as c_ulong) .wrapping_mul((*self_0).transformConstraintsCount as c_ulong), - b"spine.c\0" as *const u8 as *const c_char, - 7808 as c_int, - ) as *mut *mut spTransformConstraint; + (b"spine.c\0" as *const u8).cast::(), + 8396 as c_int, + ) + .cast::<*mut spTransformConstraint>(); i = 0 as c_int; while i < (*(*self_0).data).transformConstraintsCount { - let ref mut fresh96 = *((*self_0).transformConstraints).offset(i as isize); - *fresh96 = spTransformConstraint_create( + let fresh62 = &mut (*((*self_0).transformConstraints).offset(i as isize)); + *fresh62 = spTransformConstraint_create( *((*(*self_0).data).transformConstraints).offset(i as isize), self_0, ); @@ -14590,18 +15707,36 @@ pub unsafe extern "C" fn spSkeleton_create(mut data: *mut spSkeletonData) -> *mu (*self_0).pathConstraints = _spMalloc( (::core::mem::size_of::<*mut spPathConstraint>() as c_ulong) .wrapping_mul((*self_0).pathConstraintsCount as c_ulong), - b"spine.c\0" as *const u8 as *const c_char, - 7813 as c_int, - ) as *mut *mut spPathConstraint; + (b"spine.c\0" as *const u8).cast::(), + 8401 as c_int, + ) + .cast::<*mut spPathConstraint>(); i = 0 as c_int; while i < (*(*self_0).data).pathConstraintsCount { - let ref mut fresh97 = *((*self_0).pathConstraints).offset(i as isize); - *fresh97 = spPathConstraint_create( + let fresh63 = &mut (*((*self_0).pathConstraints).offset(i as isize)); + *fresh63 = spPathConstraint_create( *((*(*self_0).data).pathConstraints).offset(i as isize), self_0, ); i += 1; } + (*self_0).physicsConstraintsCount = (*data).physicsConstraintsCount; + (*self_0).physicsConstraints = _spMalloc( + (::core::mem::size_of::<*mut spPhysicsConstraint>() as c_ulong) + .wrapping_mul((*self_0).physicsConstraintsCount as c_ulong), + (b"spine.c\0" as *const u8).cast::(), + 8406 as c_int, + ) + .cast::<*mut spPhysicsConstraint>(); + i = 0 as c_int; + while i < (*(*self_0).data).physicsConstraintsCount { + let fresh64 = &mut (*((*self_0).physicsConstraints).offset(i as isize)); + *fresh64 = spPhysicsConstraint_create( + *((*(*self_0).data).physicsConstraints).offset(i as isize), + self_0, + ); + i += 1; + } spColor_setFromFloats( &mut (*self_0).color, 1 as c_int as c_float, @@ -14611,61 +15746,69 @@ pub unsafe extern "C" fn spSkeleton_create(mut data: *mut spSkeletonData) -> *mu ); (*self_0).scaleX = 1 as c_int as c_float; (*self_0).scaleY = 1 as c_int as c_float; + (*self_0).time = 0 as c_int as c_float; spSkeleton_updateCache(self_0); - _spFree(childrenCounts as *mut c_void); - return self_0; + _spFree(childrenCounts.cast::()); + self_0 } #[no_mangle] pub unsafe extern "C" fn spSkeleton_dispose(mut self_0: *mut spSkeleton) { let mut i: c_int = 0; - let mut internal: *mut _spSkeleton = self_0 as *mut _spSkeleton; - _spFree((*internal).updateCache as *mut c_void); + let mut internal: *mut _spSkeleton = self_0.cast::<_spSkeleton>(); + _spFree((*internal).updateCache.cast::()); i = 0 as c_int; while i < (*self_0).bonesCount { spBone_dispose(*((*self_0).bones).offset(i as isize)); i += 1; } - _spFree((*self_0).bones as *mut c_void); + _spFree((*self_0).bones.cast::()); i = 0 as c_int; while i < (*self_0).slotsCount { spSlot_dispose(*((*self_0).slots).offset(i as isize)); i += 1; } - _spFree((*self_0).slots as *mut c_void); + _spFree((*self_0).slots.cast::()); i = 0 as c_int; while i < (*self_0).ikConstraintsCount { spIkConstraint_dispose(*((*self_0).ikConstraints).offset(i as isize)); i += 1; } - _spFree((*self_0).ikConstraints as *mut c_void); + _spFree((*self_0).ikConstraints.cast::()); i = 0 as c_int; while i < (*self_0).transformConstraintsCount { spTransformConstraint_dispose(*((*self_0).transformConstraints).offset(i as isize)); i += 1; } - _spFree((*self_0).transformConstraints as *mut c_void); + _spFree((*self_0).transformConstraints.cast::()); i = 0 as c_int; while i < (*self_0).pathConstraintsCount { spPathConstraint_dispose(*((*self_0).pathConstraints).offset(i as isize)); i += 1; } - _spFree((*self_0).pathConstraints as *mut c_void); - _spFree((*self_0).drawOrder as *mut c_void); - _spFree(self_0 as *mut c_void); + _spFree((*self_0).pathConstraints.cast::()); + i = 0 as c_int; + while i < (*self_0).physicsConstraintsCount { + spPhysicsConstraint_dispose(*((*self_0).physicsConstraints).offset(i as isize)); + i += 1; + } + _spFree((*self_0).physicsConstraints.cast::()); + _spFree((*self_0).drawOrder.cast::()); + _spFree(self_0.cast::()); } unsafe extern "C" fn _addToUpdateCache( internal: *mut _spSkeleton, mut type_0: _spUpdateType, mut object: *mut c_void, ) { - let mut update: *mut _spUpdate = std::ptr::null_mut(); + let mut update: *mut _spUpdate = std::ptr::null_mut::<_spUpdate>(); if (*internal).updateCacheCount == (*internal).updateCacheCapacity { (*internal).updateCacheCapacity *= 2 as c_int; (*internal).updateCache = _spRealloc( - (*internal).updateCache as *mut c_void, + (*internal).updateCache.cast::(), (::core::mem::size_of::<_spUpdate>() as c_ulong) .wrapping_mul((*internal).updateCacheCapacity as c_ulong), - ) as *mut _spUpdate; + ) + .cast::<_spUpdate>(); } update = ((*internal).updateCache).offset((*internal).updateCacheCount as isize); (*update).type_0 = type_0; @@ -14680,15 +15823,15 @@ unsafe extern "C" fn _sortBone(internal: *mut _spSkeleton, mut bone: *mut spBone _sortBone(internal, (*bone).parent); } (*bone).sorted = 1 as c_int; - _addToUpdateCache(internal, SP_UPDATE_BONE, bone as *mut c_void); + _addToUpdateCache(internal, SP_UPDATE_BONE, bone.cast::()); } unsafe extern "C" fn _sortPathConstraintAttachmentBones( internal: *mut _spSkeleton, mut attachment: *mut spAttachment, mut slotBone: *mut spBone, ) { - let mut pathAttachment: *mut spPathAttachment = attachment as *mut spPathAttachment; - let mut pathBones: *mut c_int = std::ptr::null_mut(); + let mut pathAttachment: *mut spPathAttachment = attachment.cast::(); + let mut pathBones: *mut c_int = std::ptr::null_mut::(); let mut pathBonesCount: c_int = 0; if (*pathAttachment).super_0.super_0.type_0 as c_uint != SP_ATTACHMENT_PATH as c_int as c_uint { return; @@ -14704,16 +15847,16 @@ unsafe extern "C" fn _sortPathConstraintAttachmentBones( i = 0 as c_int; n = pathBonesCount; while i < n { - let fresh98 = i; - i = i + 1; - let mut nn: c_int = *pathBones.offset(fresh98 as isize); + let fresh65 = i; + i += 1; + let mut nn: c_int = *pathBones.offset(fresh65 as isize); nn += i; while i < nn { - let fresh99 = i; - i = i + 1; + let fresh66 = i; + i += 1; _sortBone( internal, - *bones.offset(*pathBones.offset(fresh99 as isize) as isize), + *bones.offset(*pathBones.offset(fresh66 as isize) as isize), ); } } @@ -14725,7 +15868,7 @@ unsafe extern "C" fn _sortPathConstraintAttachment( mut slotIndex: c_int, mut slotBone: *mut spBone, ) { - let mut entry: *mut _Entry = (*(skin as *mut _spSkin)).entries; + let mut entry: *mut _Entry = (*skin.cast::<_spSkin>()).entries; while !entry.is_null() { if (*entry).slotIndex == slotIndex { _sortPathConstraintAttachmentBones(internal, (*entry).attachment, slotBone); @@ -14738,7 +15881,7 @@ unsafe extern "C" fn _sortReset(mut bones: *mut *mut spBone, mut bonesCount: c_i i = 0 as c_int; while i < bonesCount { let mut bone: *mut spBone = *bones.offset(i as isize); - if !((*bone).active == 0) { + if (*bone).active != 0 { if (*bone).sorted != 0 { _sortReset((*bone).children, (*bone).childrenCount); } @@ -14752,8 +15895,8 @@ unsafe extern "C" fn _sortIkConstraint( mut constraint: *mut spIkConstraint, ) { let mut target: *mut spBone = (*constraint).target; - let mut constrained: *mut *mut spBone = std::ptr::null_mut(); - let mut parent: *mut spBone = std::ptr::null_mut(); + let mut constrained: *mut *mut spBone = std::ptr::null_mut::<*mut spBone>(); + let mut parent: *mut spBone = std::ptr::null_mut::(); (*constraint).active = ((*(*constraint).target).active != 0 && ((*(*constraint).data).skinRequired == 0 || !((*internal).super_0.skin).is_null() @@ -14769,13 +15912,21 @@ unsafe extern "C" fn _sortIkConstraint( parent = *constrained.offset(0 as c_int as isize); _sortBone(internal, parent); if (*constraint).bonesCount == 1 as c_int { - _addToUpdateCache(internal, SP_UPDATE_IK_CONSTRAINT, constraint as *mut c_void); + _addToUpdateCache( + internal, + SP_UPDATE_IK_CONSTRAINT, + constraint.cast::(), + ); _sortReset((*parent).children, (*parent).childrenCount); } else { let mut child: *mut spBone = *constrained.offset(((*constraint).bonesCount - 1 as c_int) as isize); _sortBone(internal, child); - _addToUpdateCache(internal, SP_UPDATE_IK_CONSTRAINT, constraint as *mut c_void); + _addToUpdateCache( + internal, + SP_UPDATE_IK_CONSTRAINT, + constraint.cast::(), + ); _sortReset((*parent).children, (*parent).childrenCount); (*child).sorted = 1 as c_int; }; @@ -14790,9 +15941,9 @@ unsafe extern "C" fn _sortPathConstraint( let mut i: c_int = 0; let mut n: c_int = 0; let mut boneCount: c_int = 0; - let mut attachment: *mut spAttachment = std::ptr::null_mut(); - let mut constrained: *mut *mut spBone = std::ptr::null_mut(); - let mut skeleton: *mut spSkeleton = internal as *mut spSkeleton; + let mut attachment: *mut spAttachment = std::ptr::null_mut::(); + let mut constrained: *mut *mut spBone = std::ptr::null_mut::<*mut spBone>(); + let mut skeleton: *mut spSkeleton = internal.cast::(); (*constraint).active = ((*(*(*constraint).target).bone).active != 0 && ((*(*constraint).data).skinRequired == 0 || !((*internal).super_0.skin).is_null() @@ -14843,7 +15994,7 @@ unsafe extern "C" fn _sortPathConstraint( _addToUpdateCache( internal, SP_UPDATE_PATH_CONSTRAINT, - constraint as *mut c_void, + constraint.cast::(), ); i = 0 as c_int; while i < boneCount { @@ -14865,8 +16016,8 @@ unsafe extern "C" fn _sortTransformConstraint( ) { let mut i: c_int = 0; let mut boneCount: c_int = 0; - let mut constrained: *mut *mut spBone = std::ptr::null_mut(); - let mut child: *mut spBone = std::ptr::null_mut(); + let mut constrained: *mut *mut spBone = std::ptr::null_mut::<*mut spBone>(); + let mut child: *mut spBone = std::ptr::null_mut::(); (*constraint).active = ((*(*constraint).target).active != 0 && ((*(*constraint).data).skinRequired == 0 || !((*internal).super_0.skin).is_null() @@ -14898,7 +16049,7 @@ unsafe extern "C" fn _sortTransformConstraint( _addToUpdateCache( internal, SP_UPDATE_TRANSFORM_CONSTRAINT, - constraint as *mut c_void, + constraint.cast::(), ); i = 0 as c_int; while i < boneCount { @@ -14914,30 +16065,61 @@ unsafe extern "C" fn _sortTransformConstraint( i += 1; } } +unsafe extern "C" fn _sortPhysicsConstraint( + internal: *mut _spSkeleton, + mut constraint: *mut spPhysicsConstraint, +) { + let mut bone: *mut spBone = (*constraint).bone; + (*constraint).active = ((*(*constraint).bone).active != 0 + && ((*(*constraint).data).skinRequired == 0 + || !((*internal).super_0.skin).is_null() + && spPhysicsConstraintDataArray_contains( + (*(*internal).super_0.skin).physicsConstraints, + (*constraint).data, + ) != 0)) as c_int; + if (*constraint).active == 0 { + return; + } + _sortBone(internal, bone); + _addToUpdateCache( + internal, + SP_UPDATE_PHYSICS_CONSTRAINT, + constraint.cast::(), + ); + _sortReset((*bone).children, (*bone).childrenCount); + (*bone).sorted = -(1 as c_int); +} #[no_mangle] pub unsafe extern "C" fn spSkeleton_updateCache(mut self_0: *mut spSkeleton) { let mut i: c_int = 0; let mut ii: c_int = 0; - let mut bones: *mut *mut spBone = std::ptr::null_mut(); - let mut ikConstraints: *mut *mut spIkConstraint = std::ptr::null_mut(); - let mut pathConstraints: *mut *mut spPathConstraint = std::ptr::null_mut(); - let mut transformConstraints: *mut *mut spTransformConstraint = std::ptr::null_mut(); + let mut bones: *mut *mut spBone = std::ptr::null_mut::<*mut spBone>(); + let mut ikConstraints: *mut *mut spIkConstraint = std::ptr::null_mut::<*mut spIkConstraint>(); + let mut pathConstraints: *mut *mut spPathConstraint = + std::ptr::null_mut::<*mut spPathConstraint>(); + let mut transformConstraints: *mut *mut spTransformConstraint = + std::ptr::null_mut::<*mut spTransformConstraint>(); + let mut physicsConstraints: *mut *mut spPhysicsConstraint = + std::ptr::null_mut::<*mut spPhysicsConstraint>(); let mut ikCount: c_int = 0; let mut transformCount: c_int = 0; let mut pathCount: c_int = 0; + let mut physicsCount: c_int = 0; let mut constraintCount: c_int = 0; - let mut internal: *mut _spSkeleton = self_0 as *mut _spSkeleton; + let mut internal: *mut _spSkeleton = self_0.cast::<_spSkeleton>(); (*internal).updateCacheCapacity = (*self_0).bonesCount + (*self_0).ikConstraintsCount + (*self_0).transformConstraintsCount - + (*self_0).pathConstraintsCount; - _spFree((*internal).updateCache as *mut c_void); + + (*self_0).pathConstraintsCount + + (*self_0).physicsConstraintsCount; + _spFree((*internal).updateCache.cast::()); (*internal).updateCache = _spMalloc( (::core::mem::size_of::<_spUpdate>() as c_ulong) .wrapping_mul((*internal).updateCacheCapacity as c_ulong), - b"spine.c\0" as *const u8 as *const c_char, - 8035 as c_int, - ) as *mut _spUpdate; + (b"spine.c\0" as *const u8).cast::(), + 8653 as c_int, + ) + .cast::<_spUpdate>(); (*internal).updateCacheCount = 0 as c_int; bones = (*self_0).bones; i = 0 as c_int; @@ -14967,19 +16149,21 @@ pub unsafe extern "C" fn spSkeleton_updateCache(mut self_0: *mut spSkeleton) { ikConstraints = (*self_0).ikConstraints; transformConstraints = (*self_0).transformConstraints; pathConstraints = (*self_0).pathConstraints; + physicsConstraints = (*self_0).physicsConstraints; ikCount = (*self_0).ikConstraintsCount; transformCount = (*self_0).transformConstraintsCount; pathCount = (*self_0).pathConstraintsCount; - constraintCount = ikCount + transformCount + pathCount; + physicsCount = (*self_0).physicsConstraintsCount; + constraintCount = ikCount + transformCount + pathCount + physicsCount; i = 0 as c_int; - 's_125: while i < constraintCount { + 's_133: while i < constraintCount { ii = 0 as c_int; while ii < ikCount { let mut ikConstraint: *mut spIkConstraint = *ikConstraints.offset(ii as isize); if (*(*ikConstraint).data).order == i { _sortIkConstraint(internal, ikConstraint); i += 1; - continue 's_125; + continue 's_133; } else { ii += 1; } @@ -14991,7 +16175,7 @@ pub unsafe extern "C" fn spSkeleton_updateCache(mut self_0: *mut spSkeleton) { if (*(*transformConstraint).data).order == i { _sortTransformConstraint(internal, transformConstraint); i += 1; - continue 's_125; + continue 's_133; } else { ii += 1; } @@ -15002,7 +16186,19 @@ pub unsafe extern "C" fn spSkeleton_updateCache(mut self_0: *mut spSkeleton) { if (*(*pathConstraint).data).order == i { _sortPathConstraint(internal, pathConstraint); i += 1; - continue 's_125; + continue 's_133; + } else { + ii += 1; + } + } + ii = 0 as c_int; + while ii < physicsCount { + let mut physicsConstraint: *mut spPhysicsConstraint = + *physicsConstraints.offset(ii as isize); + if (*(*physicsConstraint).data).order == i { + _sortPhysicsConstraint(internal, physicsConstraint); + i += 1; + continue 's_133; } else { ii += 1; } @@ -15016,7 +16212,10 @@ pub unsafe extern "C" fn spSkeleton_updateCache(mut self_0: *mut spSkeleton) { } } #[no_mangle] -pub unsafe extern "C" fn spSkeleton_updateWorldTransform(mut self_0: *const spSkeleton) { +pub unsafe extern "C" fn spSkeleton_updateWorldTransform( + mut self_0: *const spSkeleton, + mut physics: spPhysics, +) { let mut i: c_int = 0; let mut n: c_int = 0; let mut internal: *mut _spSkeleton = self_0 as *mut _spSkeleton; @@ -15038,16 +16237,19 @@ pub unsafe extern "C" fn spSkeleton_updateWorldTransform(mut self_0: *const spSk let mut update: *mut _spUpdate = ((*internal).updateCache).offset(i as isize); match (*update).type_0 as c_uint { 0 => { - spBone_update((*update).object as *mut spBone); + spBone_update((*update).object.cast::()); } 1 => { - spIkConstraint_update((*update).object as *mut spIkConstraint); + spIkConstraint_update((*update).object.cast::()); } 3 => { - spTransformConstraint_update((*update).object as *mut spTransformConstraint); + spTransformConstraint_update((*update).object.cast::()); } 2 => { - spPathConstraint_update((*update).object as *mut spPathConstraint); + spPathConstraint_update((*update).object.cast::()); + } + 4 => { + spPhysicsConstraint_update((*update).object.cast::(), physics); } _ => {} } @@ -15055,9 +16257,14 @@ pub unsafe extern "C" fn spSkeleton_updateWorldTransform(mut self_0: *const spSk } } #[no_mangle] +pub unsafe extern "C" fn spSkeleton_update(mut self_0: *mut spSkeleton, mut delta: c_float) { + (*self_0).time += delta; +} +#[no_mangle] pub unsafe extern "C" fn spSkeleton_updateWorldTransformWith( mut self_0: *const spSkeleton, mut parent: *const spBone, + mut physics: spPhysics, ) { let mut i: c_int = 0; let mut rotationY: c_float = 0.; @@ -15071,44 +16278,41 @@ pub unsafe extern "C" fn spSkeleton_updateWorldTransformWith( let mut pb: c_float = (*parent).b; let mut pc: c_float = (*parent).c; let mut pd: c_float = (*parent).d; - *(&mut (*rootBone).worldX as *mut c_float) = - pa * (*self_0).x + pb * (*self_0).y + (*parent).worldX; - *(&mut (*rootBone).worldY as *mut c_float) = - pc * (*self_0).x + pd * (*self_0).y + (*parent).worldY; + (*rootBone).worldX = pa * (*self_0).x + pb * (*self_0).y + (*parent).worldX; + (*rootBone).worldY = pc * (*self_0).x + pd * (*self_0).y + (*parent).worldY; rotationY = (*rootBone).rotation + 90 as c_int as c_float + (*rootBone).shearY; la = spine_cosf( - ((*rootBone).rotation + (*rootBone).shearX) - * (3.1415926535897932385f32 / 180 as c_int as c_float), + ((*rootBone).rotation + (*rootBone).shearX) * (3.141_592_7_f32 / 180 as c_int as c_float), ) * (*rootBone).scaleX; - lb = spine_cosf(rotationY * (3.1415926535897932385f32 / 180 as c_int as c_float)) - * (*rootBone).scaleY; + lb = spine_cosf(rotationY * (3.141_592_7_f32 / 180 as c_int as c_float)) * (*rootBone).scaleY; lc = spine_sinf( - ((*rootBone).rotation + (*rootBone).shearX) - * (3.1415926535897932385f32 / 180 as c_int as c_float), + ((*rootBone).rotation + (*rootBone).shearX) * (3.141_592_7_f32 / 180 as c_int as c_float), ) * (*rootBone).scaleX; - ld = spine_sinf(rotationY * (3.1415926535897932385f32 / 180 as c_int as c_float)) - * (*rootBone).scaleY; - *(&mut (*rootBone).a as *mut c_float) = (pa * la + pb * lc) * (*self_0).scaleX; - *(&mut (*rootBone).b as *mut c_float) = (pa * lb + pb * ld) * (*self_0).scaleX; - *(&mut (*rootBone).c as *mut c_float) = (pc * la + pd * lc) * (*self_0).scaleY; - *(&mut (*rootBone).d as *mut c_float) = (pc * lb + pd * ld) * (*self_0).scaleY; + ld = spine_sinf(rotationY * (3.141_592_7_f32 / 180 as c_int as c_float)) * (*rootBone).scaleY; + (*rootBone).a = (pa * la + pb * lc) * (*self_0).scaleX; + (*rootBone).b = (pa * lb + pb * ld) * (*self_0).scaleX; + (*rootBone).c = (pc * la + pd * lc) * (*self_0).scaleY; + (*rootBone).d = (pc * lb + pd * ld) * (*self_0).scaleY; i = 0 as c_int; while i < (*internal).updateCacheCount { let mut update: *mut _spUpdate = ((*internal).updateCache).offset(i as isize); match (*update).type_0 as c_uint { 0 => { - if (*update).object as *mut spBone != rootBone { - spBone_updateWorldTransform((*update).object as *mut spBone); + if (*update).object.cast::() != rootBone { + spBone_updateWorldTransform((*update).object.cast::()); } } 1 => { - spIkConstraint_update((*update).object as *mut spIkConstraint); + spIkConstraint_update((*update).object.cast::()); } 3 => { - spTransformConstraint_update((*update).object as *mut spTransformConstraint); + spTransformConstraint_update((*update).object.cast::()); } 2 => { - spPathConstraint_update((*update).object as *mut spPathConstraint); + spPathConstraint_update((*update).object.cast::()); + } + 4 => { + spPhysicsConstraint_update((*update).object.cast::(), physics); } _ => {} } @@ -15130,37 +16334,22 @@ pub unsafe extern "C" fn spSkeleton_setBonesToSetupPose(mut self_0: *const spSke } i = 0 as c_int; while i < (*self_0).ikConstraintsCount { - let mut ikConstraint: *mut spIkConstraint = *((*self_0).ikConstraints).offset(i as isize); - (*ikConstraint).bendDirection = (*(*ikConstraint).data).bendDirection; - (*ikConstraint).compress = (*(*ikConstraint).data).compress; - (*ikConstraint).stretch = (*(*ikConstraint).data).stretch; - (*ikConstraint).softness = (*(*ikConstraint).data).softness; - (*ikConstraint).mix = (*(*ikConstraint).data).mix; + spIkConstraint_setToSetupPose(*((*self_0).ikConstraints).offset(i as isize)); i += 1; } i = 0 as c_int; while i < (*self_0).transformConstraintsCount { - let mut constraint: *mut spTransformConstraint = - *((*self_0).transformConstraints).offset(i as isize); - let mut data: *mut spTransformConstraintData = (*constraint).data; - (*constraint).mixRotate = (*data).mixRotate; - (*constraint).mixX = (*data).mixX; - (*constraint).mixY = (*data).mixY; - (*constraint).mixScaleX = (*data).mixScaleX; - (*constraint).mixScaleY = (*data).mixScaleY; - (*constraint).mixShearY = (*data).mixShearY; + spTransformConstraint_setToSetupPose(*((*self_0).transformConstraints).offset(i as isize)); i += 1; } i = 0 as c_int; while i < (*self_0).pathConstraintsCount { - let mut constraint_0: *mut spPathConstraint = - *((*self_0).pathConstraints).offset(i as isize); - let mut data_0: *mut spPathConstraintData = (*constraint_0).data; - (*constraint_0).position = (*data_0).position; - (*constraint_0).spacing = (*data_0).spacing; - (*constraint_0).mixRotate = (*data_0).mixRotate; - (*constraint_0).mixX = (*data_0).mixX; - (*constraint_0).mixY = (*data_0).mixY; + spPathConstraint_setToSetupPose(*((*self_0).pathConstraints).offset(i as isize)); + i += 1; + } + i = 0 as c_int; + while i < (*self_0).physicsConstraintsCount { + spPhysicsConstraint_setToSetupPose(*((*self_0).physicsConstraints).offset(i as isize)); i += 1; } } @@ -15168,7 +16357,7 @@ pub unsafe extern "C" fn spSkeleton_setBonesToSetupPose(mut self_0: *const spSke pub unsafe extern "C" fn spSkeleton_setSlotsToSetupPose(mut self_0: *const spSkeleton) { let mut i: c_int = 0; spine_memcpy( - (*self_0).drawOrder as *mut c_void, + (*self_0).drawOrder.cast::(), (*self_0).slots as *const c_void, ((*self_0).slotsCount as c_ulong) .wrapping_mul(::core::mem::size_of::<*mut spSlot>() as c_ulong), @@ -15196,7 +16385,7 @@ pub unsafe extern "C" fn spSkeleton_findBone( } i += 1; } - return std::ptr::null_mut(); + std::ptr::null_mut::() } #[no_mangle] pub unsafe extern "C" fn spSkeleton_findSlot( @@ -15215,16 +16404,16 @@ pub unsafe extern "C" fn spSkeleton_findSlot( } i += 1; } - return std::ptr::null_mut(); + std::ptr::null_mut::() } #[no_mangle] pub unsafe extern "C" fn spSkeleton_setSkinByName( mut self_0: *mut spSkeleton, mut skinName: *const c_char, ) -> c_int { - let mut skin: *mut spSkin = std::ptr::null_mut(); + let mut skin: *mut spSkin = std::ptr::null_mut::(); if skinName.is_null() { - spSkeleton_setSkin(self_0, std::ptr::null_mut()); + spSkeleton_setSkin(self_0, std::ptr::null_mut::()); return 1 as c_int; } skin = spSkeletonData_findSkin((*self_0).data, skinName); @@ -15232,7 +16421,7 @@ pub unsafe extern "C" fn spSkeleton_setSkinByName( return 0 as c_int; } spSkeleton_setSkin(self_0, skin); - return 1 as c_int; + 1 as c_int } #[no_mangle] pub unsafe extern "C" fn spSkeleton_setSkin(mut self_0: *mut spSkeleton, mut newSkin: *mut spSkin) { @@ -15258,8 +16447,7 @@ pub unsafe extern "C" fn spSkeleton_setSkin(mut self_0: *mut spSkeleton, mut new } } } - let ref mut fresh100 = *(&mut (*self_0).skin as *mut *mut spSkin); - *fresh100 = newSkin; + (*self_0).skin = newSkin; spSkeleton_updateCache(self_0); } #[no_mangle] @@ -15269,7 +16457,7 @@ pub unsafe extern "C" fn spSkeleton_getAttachmentForSlotName( mut attachmentName: *const c_char, ) -> *mut spAttachment { let mut slotIndex: c_int = (*spSkeletonData_findSlot((*self_0).data, slotName)).index; - return spSkeleton_getAttachmentForSlotIndex(self_0, slotIndex, attachmentName); + spSkeleton_getAttachmentForSlotIndex(self_0, slotIndex, attachmentName) } #[no_mangle] pub unsafe extern "C" fn spSkeleton_getAttachmentForSlotIndex( @@ -15278,7 +16466,7 @@ pub unsafe extern "C" fn spSkeleton_getAttachmentForSlotIndex( mut attachmentName: *const c_char, ) -> *mut spAttachment { if slotIndex == -(1 as c_int) { - return std::ptr::null_mut(); + return std::ptr::null_mut::(); } if !((*self_0).skin).is_null() { let mut attachment: *mut spAttachment = @@ -15294,7 +16482,7 @@ pub unsafe extern "C" fn spSkeleton_getAttachmentForSlotIndex( return attachment_0; } } - return std::ptr::null_mut(); + std::ptr::null_mut::() } #[no_mangle] pub unsafe extern "C" fn spSkeleton_setAttachment( @@ -15308,7 +16496,7 @@ pub unsafe extern "C" fn spSkeleton_setAttachment( let mut slot: *mut spSlot = *((*self_0).slots).offset(i as isize); if spine_strcmp((*(*slot).data).name, slotName) == 0 as c_int { if attachmentName.is_null() { - spSlot_setAttachment(slot, std::ptr::null_mut()); + spSlot_setAttachment(slot, std::ptr::null_mut::()); } else { let mut attachment: *mut spAttachment = spSkeleton_getAttachmentForSlotIndex(self_0, i, attachmentName); @@ -15321,7 +16509,7 @@ pub unsafe extern "C" fn spSkeleton_setAttachment( } i += 1; } - return 0 as c_int; + 0 as c_int } #[no_mangle] pub unsafe extern "C" fn spSkeleton_findIkConstraint( @@ -15340,7 +16528,7 @@ pub unsafe extern "C" fn spSkeleton_findIkConstraint( } i += 1; } - return std::ptr::null_mut(); + std::ptr::null_mut::() } #[no_mangle] pub unsafe extern "C" fn spSkeleton_findTransformConstraint( @@ -15359,7 +16547,7 @@ pub unsafe extern "C" fn spSkeleton_findTransformConstraint( } i += 1; } - return std::ptr::null_mut(); + std::ptr::null_mut::() } #[no_mangle] pub unsafe extern "C" fn spSkeleton_findPathConstraint( @@ -15378,41 +16566,161 @@ pub unsafe extern "C" fn spSkeleton_findPathConstraint( } i += 1; } - return std::ptr::null_mut(); + std::ptr::null_mut::() +} +#[no_mangle] +pub unsafe extern "C" fn spSkeleton_findPhysicsConstraint( + mut self_0: *const spSkeleton, + mut constraintName: *const c_char, +) -> *mut spPhysicsConstraint { + let mut i: c_int = 0; + i = 0 as c_int; + while i < (*self_0).physicsConstraintsCount { + if spine_strcmp( + (*(**((*self_0).physicsConstraints).offset(i as isize)).data).name, + constraintName, + ) == 0 as c_int + { + return *((*self_0).physicsConstraints).offset(i as isize); + } + i += 1; + } + std::ptr::null_mut::() +} +#[no_mangle] +pub unsafe extern "C" fn spSkeleton_physicsTranslate( + mut self_0: *mut spSkeleton, + mut x: c_float, + mut y: c_float, +) { + let mut i: c_int = 0 as c_int; + while i < (*self_0).physicsConstraintsCount { + spPhysicsConstraint_translate(*((*self_0).physicsConstraints).offset(i as isize), x, y); + i += 1; + } +} +#[no_mangle] +pub unsafe extern "C" fn spSkeleton_physicsRotate( + mut self_0: *mut spSkeleton, + mut x: c_float, + mut y: c_float, + mut degrees: c_float, +) { + let mut i: c_int = 0 as c_int; + while i < (*self_0).physicsConstraintsCount { + spPhysicsConstraint_rotate( + *((*self_0).physicsConstraints).offset(i as isize), + x, + y, + degrees, + ); + i += 1; + } +} +unsafe extern "C" fn string_lastIndexOf(mut str: *const c_char, mut needle: c_char) -> c_int { + if str.is_null() { + return -(1 as c_int); + } + let mut lastIndex: c_int = -(1 as c_int); + let mut i: c_int = 0 as c_int; + while *str.offset(i as isize) as c_int != '\0' as i32 { + if *str.offset(i as isize) as c_int == needle as c_int { + lastIndex = i; + } + i += 1; + } + lastIndex +} +unsafe extern "C" fn string_substring( + mut str: *const c_char, + mut start: c_int, + mut end: c_int, +) -> *mut c_char { + if str.is_null() || start > end || start < 0 as c_int { + return std::ptr::null_mut::(); + } + let mut len: c_int = end - start; + let mut substr: *mut c_char = _spMalloc( + (::core::mem::size_of::() as c_ulong).wrapping_mul((len + 1 as c_int) as c_ulong), + (b"spine.c\0" as *const u8).cast::(), + 9047 as c_int, + ) + .cast::(); + if substr.is_null() { + return std::ptr::null_mut::(); + } + spine_strncpy(substr, str.offset(start as isize), len as size_t); + *substr.offset(len as isize) = '\0' as i32 as c_char; + substr +} +unsafe extern "C" fn string_starts_with_binary( + mut str: *const c_char, + mut needle: *const c_char, +) -> c_int { + let mut lenStr: c_int = 0; + let mut lenNeedle: c_int = 0; + let mut i: c_int = 0; + if str.is_null() { + return 0 as c_int; + } + lenStr = spine_strlen(str) as c_int; + lenNeedle = spine_strlen(needle) as c_int; + if lenStr < lenNeedle { + return 0 as c_int; + } + i = 0 as c_int; + while i < lenNeedle { + if *str.offset(i as isize) as c_int != *needle.offset(i as isize) as c_int { + return 0 as c_int; + } + i += 1; + } + -(1 as c_int) +} +unsafe extern "C" fn string_copy(mut str: *const c_char) -> *mut c_char { + if str.is_null() { + return std::ptr::null_mut::(); + } + let mut len: c_int = spine_strlen(str) as c_int; + let mut tmp: *mut c_char = spine_malloc((len + 1 as c_int) as size_t).cast::(); + spine_strncpy(tmp, str, len as size_t); + *tmp.offset(len as isize) = '\0' as i32 as c_char; + tmp } #[no_mangle] pub unsafe extern "C" fn spSkeletonBinary_createWithLoader( mut attachmentLoader: *mut spAttachmentLoader, ) -> *mut spSkeletonBinary { - let mut self_0: *mut spSkeletonBinary = &mut (*((_spCalloc + let mut self_0: *mut spSkeletonBinary = &mut (*(_spCalloc as unsafe extern "C" fn(size_t, size_t, *const c_char, c_int) -> *mut c_void)( 1 as c_int as size_t, ::core::mem::size_of::<_spSkeletonBinary>() as c_ulong, - b"spine.c\0" as *const u8 as *const c_char, - 8388 as c_int, - ) as *mut _spSkeletonBinary)) - .super_0; + (b"spine.c\0" as *const u8).cast::(), + 9081 as c_int, + ) + .cast::<_spSkeletonBinary>()) + .super_0; (*self_0).scale = 1 as c_int as c_float; (*self_0).attachmentLoader = attachmentLoader; - return self_0; + self_0 } #[no_mangle] pub unsafe extern "C" fn spSkeletonBinary_create(mut atlas: *mut spAtlas) -> *mut spSkeletonBinary { let mut attachmentLoader: *mut spAtlasAttachmentLoader = spAtlasAttachmentLoader_create(atlas); let mut self_0: *mut spSkeletonBinary = spSkeletonBinary_createWithLoader(&mut (*attachmentLoader).super_0); - (*(self_0 as *mut _spSkeletonBinary)).ownsLoader = 1 as c_int; - return self_0; + (*self_0.cast::<_spSkeletonBinary>()).ownsLoader = 1 as c_int; + self_0 } #[no_mangle] pub unsafe extern "C" fn spSkeletonBinary_dispose(mut self_0: *mut spSkeletonBinary) { - let mut internal: *mut _spSkeletonBinary = self_0 as *mut _spSkeletonBinary; + let mut internal: *mut _spSkeletonBinary = self_0.cast::<_spSkeletonBinary>(); if (*internal).ownsLoader != 0 { spAttachmentLoader_dispose((*self_0).attachmentLoader); } - _spFree((*internal).linkedMeshes as *mut c_void); - _spFree((*self_0).error as *mut c_void); - _spFree(self_0 as *mut c_void); + _spFree((*internal).linkedMeshes.cast::()); + _spFree((*self_0).error.cast::()); + _spFree(self_0.cast::()); } #[no_mangle] pub unsafe extern "C" fn _spSkeletonBinary_setError( @@ -15422,7 +16730,7 @@ pub unsafe extern "C" fn _spSkeletonBinary_setError( ) { let mut message: [c_char; 256] = [0; 256]; let mut length: c_int = 0; - _spFree((*self_0).error as *mut c_void); + _spFree((*self_0).error.cast::()); spine_strcpy(message.as_mut_ptr(), value1); length = spine_strlen(value1) as c_int; if !value2.is_null() { @@ -15432,25 +16740,25 @@ pub unsafe extern "C" fn _spSkeletonBinary_setError( (255 as c_int - length) as size_t, ); } - let ref mut fresh101 = *(&mut (*self_0).error as *mut *mut c_char); - *fresh101 = _spMalloc( + (*self_0).error = _spMalloc( (::core::mem::size_of::() as c_ulong) .wrapping_mul((spine_strlen(message.as_mut_ptr())).wrapping_add(1 as c_int as c_ulong)), - b"spine.c\0" as *const u8 as *const c_char, - 8416 as c_int, - ) as *mut c_char; - spine_strcpy(*fresh101, message.as_mut_ptr()); + (b"spine.c\0" as *const u8).cast::(), + 9109 as c_int, + ) + .cast::(); + spine_strcpy((*self_0).error, message.as_mut_ptr()); } unsafe extern "C" fn readByte(mut input: *mut _dataInput) -> c_uchar { - let fresh102 = (*input).cursor; + let fresh67 = (*input).cursor; (*input).cursor = ((*input).cursor).offset(1); - return *fresh102; + *fresh67 } unsafe extern "C" fn readSByte(mut input: *mut _dataInput) -> c_schar { - return readByte(input) as c_schar; + readByte(input) as c_schar } unsafe extern "C" fn readBoolean(mut input: *mut _dataInput) -> c_int { - return (readByte(input) as c_int != 0 as c_int) as c_int; + (readByte(input) as c_int != 0 as c_int) as c_int } unsafe extern "C" fn readInt(mut input: *mut _dataInput) -> c_int { let mut result: uint32_t = readByte(input) as uint32_t; @@ -15460,7 +16768,7 @@ unsafe extern "C" fn readInt(mut input: *mut _dataInput) -> c_int { result |= readByte(input) as c_uint; result <<= 8 as c_int; result |= readByte(input) as c_uint; - return result as c_int; + result as c_int } unsafe extern "C" fn readVarint(mut input: *mut _dataInput, mut optimizePositive: c_int) -> c_int { let mut b: c_uchar = readByte(input); @@ -15483,45 +16791,46 @@ unsafe extern "C" fn readVarint(mut input: *mut _dataInput, mut optimizePositive if optimizePositive == 0 { value = (value as c_uint >> 1 as c_int ^ -(value & 1 as c_int) as c_uint) as int32_t; } - return value; + value } #[no_mangle] pub unsafe extern "C" fn readFloat(mut input: *mut _dataInput) -> c_float { let mut intToFloat: C2RustUnnamed_0 = C2RustUnnamed_0 { intValue: 0 }; intToFloat.intValue = readInt(input); - return intToFloat.floatValue; + intToFloat.floatValue } #[no_mangle] pub unsafe extern "C" fn readString(mut input: *mut _dataInput) -> *mut c_char { let mut length: c_int = readVarint(input, 1 as c_int); - let mut string: *mut c_char = std::ptr::null_mut(); + let mut string: *mut c_char = std::ptr::null_mut::(); if length == 0 as c_int { - return std::ptr::null_mut(); + return std::ptr::null_mut::(); } string = _spMalloc( (::core::mem::size_of::() as c_ulong).wrapping_mul(length as c_ulong), - b"spine.c\0" as *const u8 as *const c_char, - 8475 as c_int, - ) as *mut c_char; + (b"spine.c\0" as *const u8).cast::(), + 9168 as c_int, + ) + .cast::(); spine_memcpy( - string as *mut c_void, - (*input).cursor as *const c_void, + string.cast::(), + (*input).cursor.cast::(), (length - 1 as c_int) as size_t, ); (*input).cursor = ((*input).cursor).offset((length - 1 as c_int) as isize); *string.offset((length - 1 as c_int) as isize) = '\0' as i32 as c_char; - return string; + string } unsafe extern "C" fn readStringRef( mut input: *mut _dataInput, mut skeletonData: *mut spSkeletonData, ) -> *mut c_char { let mut index: c_int = readVarint(input, 1 as c_int); - return if index == 0 as c_int { - std::ptr::null_mut() + if index == 0 as c_int { + std::ptr::null_mut::() } else { *((*skeletonData).strings).offset((index - 1 as c_int) as isize) - }; + } } unsafe extern "C" fn readColor( mut input: *mut _dataInput, @@ -15536,15 +16845,11 @@ unsafe extern "C" fn readColor( *a = readByte(input) as c_int as c_float / 255.0f32; } unsafe extern "C" fn readSequenceBinary(mut input: *mut _dataInput) -> *mut spSequence { - let mut sequence: *mut spSequence = std::ptr::null_mut(); - if readBoolean(input) == 0 { - return std::ptr::null_mut(); - } - sequence = spSequence_create(readVarint(input, -(1 as c_int))); + let mut sequence: *mut spSequence = spSequence_create(readVarint(input, -(1 as c_int))); (*sequence).start = readVarint(input, -(1 as c_int)); (*sequence).digits = readVarint(input, -(1 as c_int)); (*sequence).setupIndex = readVarint(input, -(1 as c_int)); - return sequence; + sequence } unsafe extern "C" fn setBezierBinary( mut input: *mut _dataInput, @@ -15579,9 +16884,10 @@ unsafe extern "C" fn setBezierBinary( } unsafe extern "C" fn readTimelineBinary( mut input: *mut _dataInput, + mut timelines: *mut spTimelineArray, mut timeline: *mut spCurveTimeline1, mut scale: c_float, -) -> *mut spTimeline { +) { let mut frame: c_int = 0; let mut bezier: c_int = 0; let mut frameLast: c_int = 0; @@ -15604,12 +16910,12 @@ unsafe extern "C" fn readTimelineBinary( spCurveTimeline_setStepped(timeline, frame); } 2 => { - let fresh103 = bezier; - bezier = bezier + 1; + let fresh68 = bezier; + bezier += 1; setBezierBinary( input, &mut (*timeline).super_0, - fresh103, + fresh68, frame, 0 as c_int, time, @@ -15625,13 +16931,14 @@ unsafe extern "C" fn readTimelineBinary( value = value2; frame += 1; } - return &mut (*timeline).super_0; + spTimelineArray_add(timelines, &mut (*timeline).super_0); } unsafe extern "C" fn readTimeline2Binary( mut input: *mut _dataInput, + mut timelines: *mut spTimelineArray, mut timeline: *mut spCurveTimeline2, mut scale: c_float, -) -> *mut spTimeline { +) { let mut frame: c_int = 0; let mut bezier: c_int = 0; let mut frameLast: c_int = 0; @@ -15657,12 +16964,12 @@ unsafe extern "C" fn readTimeline2Binary( spCurveTimeline_setStepped(timeline, frame); } 2 => { - let fresh104 = bezier; - bezier = bezier + 1; + let fresh69 = bezier; + bezier += 1; setBezierBinary( input, &mut (*timeline).super_0, - fresh104, + fresh69, frame, 0 as c_int, time, @@ -15671,12 +16978,12 @@ unsafe extern "C" fn readTimeline2Binary( nvalue1, scale, ); - let fresh105 = bezier; - bezier = bezier + 1; + let fresh70 = bezier; + bezier += 1; setBezierBinary( input, &mut (*timeline).super_0, - fresh105, + fresh70, frame, 1 as c_int, time, @@ -15693,20 +17000,21 @@ unsafe extern "C" fn readTimeline2Binary( value2 = nvalue2; frame += 1; } - return &mut (*timeline).super_0; + spTimelineArray_add(timelines, &mut (*timeline).super_0); } unsafe extern "C" fn _spSkeletonBinary_addLinkedMesh( mut self_0: *mut spSkeletonBinary, mut mesh: *mut spMeshAttachment, - mut skin: *const c_char, + mut skinIndex: c_int, mut slotIndex: c_int, mut parent: *const c_char, mut inheritDeform: c_int, ) { - let mut linkedMesh: *mut _spLinkedMeshBinary = std::ptr::null_mut(); - let mut internal: *mut _spSkeletonBinary = self_0 as *mut _spSkeletonBinary; + let mut linkedMesh: *mut _spLinkedMeshBinary = std::ptr::null_mut::<_spLinkedMeshBinary>(); + let mut internal: *mut _spSkeletonBinary = self_0.cast::<_spSkeletonBinary>(); if (*internal).linkedMeshCount == (*internal).linkedMeshCapacity { - let mut linkedMeshes: *mut _spLinkedMeshBinary = std::ptr::null_mut(); + let mut linkedMeshes: *mut _spLinkedMeshBinary = + std::ptr::null_mut::<_spLinkedMeshBinary>(); (*internal).linkedMeshCapacity *= 2 as c_int; if (*internal).linkedMeshCapacity < 8 as c_int { (*internal).linkedMeshCapacity = 8 as c_int; @@ -15714,23 +17022,24 @@ unsafe extern "C" fn _spSkeletonBinary_addLinkedMesh( linkedMeshes = _spMalloc( (::core::mem::size_of::<_spLinkedMeshBinary>() as c_ulong) .wrapping_mul((*internal).linkedMeshCapacity as c_ulong), - b"spine.c\0" as *const u8 as *const c_char, - 8626 as c_int, - ) as *mut _spLinkedMeshBinary; + (b"spine.c\0" as *const u8).cast::(), + 9327 as c_int, + ) + .cast::<_spLinkedMeshBinary>(); spine_memcpy( - linkedMeshes as *mut c_void, + linkedMeshes.cast::(), (*internal).linkedMeshes as *const c_void, (::core::mem::size_of::<_spLinkedMeshBinary>() as c_ulong) .wrapping_mul((*internal).linkedMeshCount as c_ulong), ); - _spFree((*internal).linkedMeshes as *mut c_void); + _spFree((*internal).linkedMeshes.cast::()); (*internal).linkedMeshes = linkedMeshes; } - let fresh106 = (*internal).linkedMeshCount; - (*internal).linkedMeshCount = (*internal).linkedMeshCount + 1; - linkedMesh = ((*internal).linkedMeshes).offset(fresh106 as isize); + let fresh71 = (*internal).linkedMeshCount; + (*internal).linkedMeshCount += 1; + linkedMesh = ((*internal).linkedMeshes).offset(fresh71 as isize); (*linkedMesh).mesh = mesh; - (*linkedMesh).skin = skin; + (*linkedMesh).skinIndex = skinIndex; (*linkedMesh).slotIndex = slotIndex; (*linkedMesh).parent = parent; (*linkedMesh).inheritTimeline = inheritDeform; @@ -15753,7 +17062,7 @@ unsafe extern "C" fn _spSkeletonBinary_readAnimation( let mut bezier: c_int = 0; let mut drawOrderCount: c_int = 0; let mut eventCount: c_int = 0; - let mut animation: *mut spAnimation = std::ptr::null_mut(); + let mut animation: *mut spAnimation = std::ptr::null_mut::(); let mut scale: c_float = (*self_0).scale; let mut _numTimelines: c_int = readVarint(input, 1 as c_int); i = 0 as c_int; @@ -15814,12 +17123,12 @@ unsafe extern "C" fn _spSkeletonBinary_readAnimation( spCurveTimeline_setStepped(&mut (*timeline_0).super_0, frame); } 2 => { - let fresh107 = bezier; - bezier = bezier + 1; + let fresh72 = bezier; + bezier += 1; setBezierBinary( input, &mut (*timeline_0).super_0.super_0, - fresh107, + fresh72, frame, 0 as c_int, time_0, @@ -15828,12 +17137,12 @@ unsafe extern "C" fn _spSkeletonBinary_readAnimation( r2, 1 as c_int as c_float, ); - let fresh108 = bezier; - bezier = bezier + 1; + let fresh73 = bezier; + bezier += 1; setBezierBinary( input, &mut (*timeline_0).super_0.super_0, - fresh108, + fresh73, frame, 1 as c_int, time_0, @@ -15842,12 +17151,12 @@ unsafe extern "C" fn _spSkeletonBinary_readAnimation( g2, 1 as c_int as c_float, ); - let fresh109 = bezier; - bezier = bezier + 1; + let fresh74 = bezier; + bezier += 1; setBezierBinary( input, &mut (*timeline_0).super_0.super_0, - fresh109, + fresh74, frame, 2 as c_int, time_0, @@ -15856,12 +17165,12 @@ unsafe extern "C" fn _spSkeletonBinary_readAnimation( b2, 1 as c_int as c_float, ); - let fresh110 = bezier; - bezier = bezier + 1; + let fresh75 = bezier; + bezier += 1; setBezierBinary( input, &mut (*timeline_0).super_0.super_0, - fresh110, + fresh75, frame, 3 as c_int, time_0, @@ -15913,12 +17222,12 @@ unsafe extern "C" fn _spSkeletonBinary_readAnimation( spCurveTimeline_setStepped(&mut (*timeline_1).super_0, frame); } 2 => { - let fresh111 = bezier; - bezier = bezier + 1; + let fresh76 = bezier; + bezier += 1; setBezierBinary( input, &mut (*timeline_1).super_0.super_0, - fresh111, + fresh76, frame, 0 as c_int, time_1, @@ -15927,12 +17236,12 @@ unsafe extern "C" fn _spSkeletonBinary_readAnimation( r2_0, 1 as c_int as c_float, ); - let fresh112 = bezier; - bezier = bezier + 1; + let fresh77 = bezier; + bezier += 1; setBezierBinary( input, &mut (*timeline_1).super_0.super_0, - fresh112, + fresh77, frame, 1 as c_int, time_1, @@ -15941,12 +17250,12 @@ unsafe extern "C" fn _spSkeletonBinary_readAnimation( g2_0, 1 as c_int as c_float, ); - let fresh113 = bezier; - bezier = bezier + 1; + let fresh78 = bezier; + bezier += 1; setBezierBinary( input, &mut (*timeline_1).super_0.super_0, - fresh113, + fresh78, frame, 2 as c_int, time_1, @@ -16015,12 +17324,12 @@ unsafe extern "C" fn _spSkeletonBinary_readAnimation( spCurveTimeline_setStepped(&mut (*timeline_2).super_0, frame); } 2 => { - let fresh114 = bezier; - bezier = bezier + 1; + let fresh79 = bezier; + bezier += 1; setBezierBinary( input, &mut (*timeline_2).super_0.super_0, - fresh114, + fresh79, frame, 0 as c_int, time_2, @@ -16029,12 +17338,12 @@ unsafe extern "C" fn _spSkeletonBinary_readAnimation( nr, 1 as c_int as c_float, ); - let fresh115 = bezier; - bezier = bezier + 1; + let fresh80 = bezier; + bezier += 1; setBezierBinary( input, &mut (*timeline_2).super_0.super_0, - fresh115, + fresh80, frame, 1 as c_int, time_2, @@ -16043,12 +17352,12 @@ unsafe extern "C" fn _spSkeletonBinary_readAnimation( ng, 1 as c_int as c_float, ); - let fresh116 = bezier; - bezier = bezier + 1; + let fresh81 = bezier; + bezier += 1; setBezierBinary( input, &mut (*timeline_2).super_0.super_0, - fresh116, + fresh81, frame, 2 as c_int, time_2, @@ -16057,12 +17366,12 @@ unsafe extern "C" fn _spSkeletonBinary_readAnimation( nb, 1 as c_int as c_float, ); - let fresh117 = bezier; - bezier = bezier + 1; + let fresh82 = bezier; + bezier += 1; setBezierBinary( input, &mut (*timeline_2).super_0.super_0, - fresh117, + fresh82, frame, 3 as c_int, time_2, @@ -16071,12 +17380,12 @@ unsafe extern "C" fn _spSkeletonBinary_readAnimation( na, 1 as c_int as c_float, ); - let fresh118 = bezier; - bezier = bezier + 1; + let fresh83 = bezier; + bezier += 1; setBezierBinary( input, &mut (*timeline_2).super_0.super_0, - fresh118, + fresh83, frame, 4 as c_int, time_2, @@ -16085,12 +17394,12 @@ unsafe extern "C" fn _spSkeletonBinary_readAnimation( nr2, 1 as c_int as c_float, ); - let fresh119 = bezier; - bezier = bezier + 1; + let fresh84 = bezier; + bezier += 1; setBezierBinary( input, &mut (*timeline_2).super_0.super_0, - fresh119, + fresh84, frame, 5 as c_int, time_2, @@ -16099,12 +17408,12 @@ unsafe extern "C" fn _spSkeletonBinary_readAnimation( ng2, 1 as c_int as c_float, ); - let fresh120 = bezier; - bezier = bezier + 1; + let fresh85 = bezier; + bezier += 1; setBezierBinary( input, &mut (*timeline_2).super_0.super_0, - fresh120, + fresh85, frame, 6 as c_int, time_2, @@ -16173,12 +17482,12 @@ unsafe extern "C" fn _spSkeletonBinary_readAnimation( spCurveTimeline_setStepped(&mut (*timeline_3).super_0, frame); } 2 => { - let fresh121 = bezier; - bezier = bezier + 1; + let fresh86 = bezier; + bezier += 1; setBezierBinary( input, &mut (*timeline_3).super_0.super_0, - fresh121, + fresh86, frame, 0 as c_int, time_3, @@ -16187,12 +17496,12 @@ unsafe extern "C" fn _spSkeletonBinary_readAnimation( nr_0, 1 as c_int as c_float, ); - let fresh122 = bezier; - bezier = bezier + 1; + let fresh87 = bezier; + bezier += 1; setBezierBinary( input, &mut (*timeline_3).super_0.super_0, - fresh122, + fresh87, frame, 1 as c_int, time_3, @@ -16201,12 +17510,12 @@ unsafe extern "C" fn _spSkeletonBinary_readAnimation( ng_0, 1 as c_int as c_float, ); - let fresh123 = bezier; - bezier = bezier + 1; + let fresh88 = bezier; + bezier += 1; setBezierBinary( input, &mut (*timeline_3).super_0.super_0, - fresh123, + fresh88, frame, 2 as c_int, time_3, @@ -16215,12 +17524,12 @@ unsafe extern "C" fn _spSkeletonBinary_readAnimation( nb_0, 1 as c_int as c_float, ); - let fresh124 = bezier; - bezier = bezier + 1; + let fresh89 = bezier; + bezier += 1; setBezierBinary( input, &mut (*timeline_3).super_0.super_0, - fresh124, + fresh89, frame, 3 as c_int, time_3, @@ -16229,12 +17538,12 @@ unsafe extern "C" fn _spSkeletonBinary_readAnimation( nr2_0, 1 as c_int as c_float, ); - let fresh125 = bezier; - bezier = bezier + 1; + let fresh90 = bezier; + bezier += 1; setBezierBinary( input, &mut (*timeline_3).super_0.super_0, - fresh125, + fresh90, frame, 4 as c_int, time_3, @@ -16243,12 +17552,12 @@ unsafe extern "C" fn _spSkeletonBinary_readAnimation( ng2_0, 1 as c_int as c_float, ); - let fresh126 = bezier; - bezier = bezier + 1; + let fresh91 = bezier; + bezier += 1; setBezierBinary( input, &mut (*timeline_3).super_0.super_0, - fresh126, + fresh91, frame, 5 as c_int, time_3, @@ -16294,12 +17603,12 @@ unsafe extern "C" fn _spSkeletonBinary_readAnimation( spCurveTimeline_setStepped(&mut (*timeline_4).super_0, frame); } 2 => { - let fresh127 = bezier; - bezier = bezier + 1; + let fresh92 = bezier; + bezier += 1; setBezierBinary( input, &mut (*timeline_4).super_0.super_0, - fresh127, + fresh92, frame, 0 as c_int, time_4, @@ -16317,7 +17626,7 @@ unsafe extern "C" fn _spSkeletonBinary_readAnimation( } spTimelineArray_add(timelines, &mut (*timeline_4).super_0.super_0); } - _ => return std::ptr::null_mut(), + _ => return std::ptr::null_mut::(), } ii += 1; } @@ -16332,170 +17641,226 @@ unsafe extern "C" fn _spSkeletonBinary_readAnimation( while ii < nn { let mut timelineType_0: c_uchar = readByte(input); let mut frameCount_0: c_int = readVarint(input, 1 as c_int); - let mut bezierCount_4: c_int = readVarint(input, 1 as c_int); - let mut timeline_5: *mut spTimeline = std::ptr::null_mut(); - match timelineType_0 as c_int { - 0 => { - timeline_5 = readTimelineBinary( - input, - &mut (*(spRotateTimeline_create - as unsafe extern "C" fn(c_int, c_int, c_int) -> *mut spRotateTimeline)( - frameCount_0, - bezierCount_4, - boneIndex, - )) - .super_0, - 1 as c_int as c_float, - ); - } - 1 => { - timeline_5 = readTimeline2Binary( - input, - &mut (*(spTranslateTimeline_create - as unsafe extern "C" fn( - c_int, - c_int, - c_int, - ) - -> *mut spTranslateTimeline)( - frameCount_0, - bezierCount_4, - boneIndex, - )) - .super_0, - scale, - ); - } - 2 => { - timeline_5 = readTimelineBinary( - input, - &mut (*(spTranslateXTimeline_create - as unsafe extern "C" fn( - c_int, - c_int, - c_int, - ) - -> *mut spTranslateXTimeline)( - frameCount_0, - bezierCount_4, - boneIndex, - )) - .super_0, - scale, - ); - } - 3 => { - timeline_5 = readTimelineBinary( - input, - &mut (*(spTranslateYTimeline_create - as unsafe extern "C" fn( - c_int, - c_int, - c_int, - ) - -> *mut spTranslateYTimeline)( - frameCount_0, - bezierCount_4, - boneIndex, - )) - .super_0, - scale, - ); - } - 4 => { - timeline_5 = readTimeline2Binary( - input, - &mut (*(spScaleTimeline_create - as unsafe extern "C" fn(c_int, c_int, c_int) -> *mut spScaleTimeline)( - frameCount_0, - bezierCount_4, - boneIndex, - )) - .super_0, - 1 as c_int as c_float, - ); - } - 5 => { - timeline_5 = readTimelineBinary( - input, - &mut (*(spScaleXTimeline_create - as unsafe extern "C" fn(c_int, c_int, c_int) -> *mut spScaleXTimeline)( - frameCount_0, - bezierCount_4, - boneIndex, - )) - .super_0, - 1 as c_int as c_float, - ); - } - 6 => { - timeline_5 = readTimelineBinary( - input, - &mut (*(spScaleYTimeline_create - as unsafe extern "C" fn(c_int, c_int, c_int) -> *mut spScaleYTimeline)( - frameCount_0, - bezierCount_4, - boneIndex, - )) - .super_0, - 1 as c_int as c_float, - ); - } - 7 => { - timeline_5 = readTimeline2Binary( - input, - &mut (*(spShearTimeline_create - as unsafe extern "C" fn(c_int, c_int, c_int) -> *mut spShearTimeline)( - frameCount_0, - bezierCount_4, - boneIndex, - )) - .super_0, - 1 as c_int as c_float, - ); - } - 8 => { - timeline_5 = readTimelineBinary( - input, - &mut (*(spShearXTimeline_create - as unsafe extern "C" fn(c_int, c_int, c_int) -> *mut spShearXTimeline)( - frameCount_0, - bezierCount_4, - boneIndex, - )) - .super_0, - 1 as c_int as c_float, - ); - } - 9 => { - timeline_5 = readTimelineBinary( - input, - &mut (*(spShearYTimeline_create - as unsafe extern "C" fn(c_int, c_int, c_int) -> *mut spShearYTimeline)( - frameCount_0, - bezierCount_4, - boneIndex, - )) - .super_0, - 1 as c_int as c_float, - ); + if timelineType_0 as c_int == 10 as c_int { + let mut timeline_5: *mut spInheritTimeline = + spInheritTimeline_create(frameCount_0, boneIndex); + frame = 0 as c_int; + while frame < frameCount_0 { + let mut time_5: c_float = readFloat(input); + let mut inherit: spInherit = readByte(input) as spInherit; + spInheritTimeline_setFrame(timeline_5, frame, time_5, inherit); + frame += 1; } - _ => { - iii = 0 as c_int; - while iii < (*timelines).size { - spTimeline_dispose(*((*timelines).items).offset(iii as isize)); - iii += 1; + spTimelineArray_add(timelines, &mut (*timeline_5).super_0); + } else { + let mut bezierCount_4: c_int = readVarint(input, 1 as c_int); + match timelineType_0 as c_int { + 0 => { + readTimelineBinary( + input, + timelines, + &mut (*(spRotateTimeline_create + as unsafe extern "C" fn( + c_int, + c_int, + c_int, + ) + -> *mut spRotateTimeline)( + frameCount_0, + bezierCount_4, + boneIndex, + )) + .super_0, + 1 as c_int as c_float, + ); + } + 1 => { + readTimeline2Binary( + input, + timelines, + &mut (*(spTranslateTimeline_create + as unsafe extern "C" fn( + c_int, + c_int, + c_int, + ) + -> *mut spTranslateTimeline)( + frameCount_0, + bezierCount_4, + boneIndex, + )) + .super_0, + scale, + ); + } + 2 => { + readTimelineBinary( + input, + timelines, + &mut (*(spTranslateXTimeline_create + as unsafe extern "C" fn( + c_int, + c_int, + c_int, + ) + -> *mut spTranslateXTimeline)( + frameCount_0, + bezierCount_4, + boneIndex, + )) + .super_0, + scale, + ); + } + 3 => { + readTimelineBinary( + input, + timelines, + &mut (*(spTranslateYTimeline_create + as unsafe extern "C" fn( + c_int, + c_int, + c_int, + ) + -> *mut spTranslateYTimeline)( + frameCount_0, + bezierCount_4, + boneIndex, + )) + .super_0, + scale, + ); + } + 4 => { + readTimeline2Binary( + input, + timelines, + &mut (*(spScaleTimeline_create + as unsafe extern "C" fn( + c_int, + c_int, + c_int, + ) + -> *mut spScaleTimeline)( + frameCount_0, + bezierCount_4, + boneIndex, + )) + .super_0, + 1 as c_int as c_float, + ); + } + 5 => { + readTimelineBinary( + input, + timelines, + &mut (*(spScaleXTimeline_create + as unsafe extern "C" fn( + c_int, + c_int, + c_int, + ) + -> *mut spScaleXTimeline)( + frameCount_0, + bezierCount_4, + boneIndex, + )) + .super_0, + 1 as c_int as c_float, + ); + } + 6 => { + readTimelineBinary( + input, + timelines, + &mut (*(spScaleYTimeline_create + as unsafe extern "C" fn( + c_int, + c_int, + c_int, + ) + -> *mut spScaleYTimeline)( + frameCount_0, + bezierCount_4, + boneIndex, + )) + .super_0, + 1 as c_int as c_float, + ); + } + 7 => { + readTimeline2Binary( + input, + timelines, + &mut (*(spShearTimeline_create + as unsafe extern "C" fn( + c_int, + c_int, + c_int, + ) + -> *mut spShearTimeline)( + frameCount_0, + bezierCount_4, + boneIndex, + )) + .super_0, + 1 as c_int as c_float, + ); + } + 8 => { + readTimelineBinary( + input, + timelines, + &mut (*(spShearXTimeline_create + as unsafe extern "C" fn( + c_int, + c_int, + c_int, + ) + -> *mut spShearXTimeline)( + frameCount_0, + bezierCount_4, + boneIndex, + )) + .super_0, + 1 as c_int as c_float, + ); + } + 9 => { + readTimelineBinary( + input, + timelines, + &mut (*(spShearYTimeline_create + as unsafe extern "C" fn( + c_int, + c_int, + c_int, + ) + -> *mut spShearYTimeline)( + frameCount_0, + bezierCount_4, + boneIndex, + )) + .super_0, + 1 as c_int as c_float, + ); + } + _ => { + iii = 0 as c_int; + while iii < (*timelines).size { + spTimeline_dispose(*((*timelines).items).offset(iii as isize)); + iii += 1; + } + spTimelineArray_dispose(timelines); + _spSkeletonBinary_setError( + self_0, + (b"Invalid timeline type for a bone: \0" as *const u8).cast::(), + (**((*skeletonData).bones).offset(boneIndex as isize)).name, + ); + return std::ptr::null_mut::(); } - spTimelineArray_dispose(timelines); - _spSkeletonBinary_setError( - self_0, - b"Invalid timeline type for a bone: \0" as *const u8 as *const c_char, - (**((*skeletonData).bones).offset(boneIndex as isize)).name, - ); - return std::ptr::null_mut(); } } - spTimelineArray_add(timelines, timeline_5); ii += 1; } i += 1; @@ -16509,71 +17874,91 @@ unsafe extern "C" fn _spSkeletonBinary_readAnimation( let mut bezierCount_5: c_int = readVarint(input, 1 as c_int); let mut timeline_6: *mut spIkConstraintTimeline = spIkConstraintTimeline_create(frameCount_1, bezierCount_5, index); - let mut time_5: c_float = readFloat(input); - let mut mix: c_float = readFloat(input); - let mut softness: c_float = readFloat(input) * scale; + let mut flags: c_int = readByte(input) as c_int; + let mut time_6: c_float = readFloat(input); + let mut mix: c_float = if flags & 1 as c_int != 0 as c_int { + if flags & 2 as c_int != 0 as c_int { + readFloat(input) + } else { + 1 as c_int as c_float + } + } else { + 0 as c_int as c_float + }; + let mut softness: c_float = if flags & 4 as c_int != 0 as c_int { + readFloat(input) * scale + } else { + 0 as c_int as c_float + }; frame = 0 as c_int; bezier = 0 as c_int; loop { - let mut time2_4: c_float = 0.; - let mut mix2: c_float = 0.; - let mut softness2: c_float = 0.; - let mut bendDirection: c_int = readSByte(input) as c_int; - let mut compress: c_int = readBoolean(input); - let mut stretch: c_int = readBoolean(input); spIkConstraintTimeline_setFrame( timeline_6, frame, - time_5, + time_6, mix, softness, - bendDirection, - compress, - stretch, + if flags & 8 as c_int != 0 as c_int { + 1 as c_int + } else { + -(1 as c_int) + }, + (flags & 16 as c_int != 0 as c_int) as c_int, + (flags & 32 as c_int != 0 as c_int) as c_int, ); if frame == frameLast_0 { break; } - time2_4 = readFloat(input); - mix2 = readFloat(input); - softness2 = readFloat(input) * scale; - match readSByte(input) as c_int { - 1 => { - spCurveTimeline_setStepped(&mut (*timeline_6).super_0, frame); - } - 2 => { - let fresh128 = bezier; - bezier = bezier + 1; - setBezierBinary( - input, - &mut (*timeline_6).super_0.super_0, - fresh128, - frame, - 0 as c_int, - time_5, - time2_4, - mix, - mix2, - 1 as c_int as c_float, - ); - let fresh129 = bezier; - bezier = bezier + 1; - setBezierBinary( - input, - &mut (*timeline_6).super_0.super_0, - fresh129, - frame, - 1 as c_int, - time_5, - time2_4, - softness, - softness2, - scale, - ); + flags = readByte(input) as c_int; + let mut time2_4: c_float = readFloat(input); + let mut mix2: c_float = if flags & 1 as c_int != 0 as c_int { + if flags & 2 as c_int != 0 as c_int { + readFloat(input) + } else { + 1 as c_int as c_float } - _ => {} + } else { + 0 as c_int as c_float + }; + let mut softness2: c_float = if flags & 4 as c_int != 0 as c_int { + readFloat(input) * scale + } else { + 0 as c_int as c_float + }; + if flags & 64 as c_int != 0 as c_int { + spCurveTimeline_setStepped(&mut (*timeline_6).super_0, frame); + } else if flags & 128 as c_int != 0 as c_int { + let fresh93 = bezier; + bezier += 1; + setBezierBinary( + input, + &mut (*timeline_6).super_0.super_0, + fresh93, + frame, + 0 as c_int, + time_6, + time2_4, + mix, + mix2, + 1 as c_int as c_float, + ); + let fresh94 = bezier; + bezier += 1; + setBezierBinary( + input, + &mut (*timeline_6).super_0.super_0, + fresh94, + frame, + 1 as c_int, + time_6, + time2_4, + softness, + softness2, + scale, + ); } - time_5 = time2_4; + time_6 = time2_4; mix = mix2; softness = softness2; frame += 1; @@ -16590,7 +17975,7 @@ unsafe extern "C" fn _spSkeletonBinary_readAnimation( let mut bezierCount_6: c_int = readVarint(input, 1 as c_int); let mut timeline_7: *mut spTransformConstraintTimeline = spTransformConstraintTimeline_create(frameCount_2, bezierCount_6, index_0); - let mut time_6: c_float = readFloat(input); + let mut time_7: c_float = readFloat(input); let mut mixRotate: c_float = readFloat(input); let mut mixX: c_float = readFloat(input); let mut mixY: c_float = readFloat(input); @@ -16608,7 +17993,7 @@ unsafe extern "C" fn _spSkeletonBinary_readAnimation( let mut mixScaleY2: c_float = 0.; let mut mixShearY2: c_float = 0.; spTransformConstraintTimeline_setFrame( - timeline_7, frame, time_6, mixRotate, mixX, mixY, mixScaleX, mixScaleY, mixShearY, + timeline_7, frame, time_7, mixRotate, mixX, mixY, mixScaleX, mixScaleY, mixShearY, ); if frame == frameLast_1 { break; @@ -16625,85 +18010,85 @@ unsafe extern "C" fn _spSkeletonBinary_readAnimation( spCurveTimeline_setStepped(&mut (*timeline_7).super_0, frame); } 2 => { - let fresh130 = bezier; - bezier = bezier + 1; + let fresh95 = bezier; + bezier += 1; setBezierBinary( input, &mut (*timeline_7).super_0.super_0, - fresh130, + fresh95, frame, 0 as c_int, - time_6, + time_7, time2_5, mixRotate, mixRotate2, 1 as c_int as c_float, ); - let fresh131 = bezier; - bezier = bezier + 1; + let fresh96 = bezier; + bezier += 1; setBezierBinary( input, &mut (*timeline_7).super_0.super_0, - fresh131, + fresh96, frame, 1 as c_int, - time_6, + time_7, time2_5, mixX, mixX2, 1 as c_int as c_float, ); - let fresh132 = bezier; - bezier = bezier + 1; + let fresh97 = bezier; + bezier += 1; setBezierBinary( input, &mut (*timeline_7).super_0.super_0, - fresh132, + fresh97, frame, 2 as c_int, - time_6, + time_7, time2_5, mixY, mixY2, 1 as c_int as c_float, ); - let fresh133 = bezier; - bezier = bezier + 1; + let fresh98 = bezier; + bezier += 1; setBezierBinary( input, &mut (*timeline_7).super_0.super_0, - fresh133, + fresh98, frame, 3 as c_int, - time_6, + time_7, time2_5, mixScaleX, mixScaleX2, 1 as c_int as c_float, ); - let fresh134 = bezier; - bezier = bezier + 1; + let fresh99 = bezier; + bezier += 1; setBezierBinary( input, &mut (*timeline_7).super_0.super_0, - fresh134, + fresh99, frame, 4 as c_int, - time_6, + time_7, time2_5, mixScaleY, mixScaleY2, 1 as c_int as c_float, ); - let fresh135 = bezier; - bezier = bezier + 1; + let fresh100 = bezier; + bezier += 1; setBezierBinary( input, &mut (*timeline_7).super_0.super_0, - fresh135, + fresh100, frame, 5 as c_int, - time_6, + time_7, time2_5, mixShearY, mixShearY2, @@ -16712,7 +18097,7 @@ unsafe extern "C" fn _spSkeletonBinary_readAnimation( } _ => {} } - time_6 = time2_5; + time_7 = time2_5; mixRotate = mixRotate2; mixX = mixX2; mixY = mixY2; @@ -16733,75 +18118,71 @@ unsafe extern "C" fn _spSkeletonBinary_readAnimation( ii = 0 as c_int; nn = readVarint(input, 1 as c_int); while ii < nn { - let mut type_0: c_int = readSByte(input) as c_int; + let mut type_0: c_int = readByte(input) as c_int; let mut frameCount_3: c_int = readVarint(input, 1 as c_int); let mut bezierCount_7: c_int = readVarint(input, 1 as c_int); match type_0 { 0 => { - spTimelineArray_add( + readTimelineBinary( + input, timelines, - readTimelineBinary( - input, - &mut (*(spPathConstraintPositionTimeline_create - as unsafe extern "C" fn( - c_int, - c_int, - c_int, - ) - -> *mut spPathConstraintPositionTimeline)( - frameCount_3, - bezierCount_7, - index_1, - )) - .super_0, - if (*data).positionMode as c_uint - == SP_POSITION_MODE_FIXED as c_int as c_uint - { - scale - } else { - 1 as c_int as c_float - }, - ), + &mut (*(spPathConstraintPositionTimeline_create + as unsafe extern "C" fn( + c_int, + c_int, + c_int, + ) + -> *mut spPathConstraintPositionTimeline)( + frameCount_3, + bezierCount_7, + index_1, + )) + .super_0, + if (*data).positionMode as c_uint + == SP_POSITION_MODE_FIXED as c_int as c_uint + { + scale + } else { + 1 as c_int as c_float + }, ); } 1 => { - spTimelineArray_add( + readTimelineBinary( + input, timelines, - readTimelineBinary( - input, - &mut (*(spPathConstraintSpacingTimeline_create - as unsafe extern "C" fn( - c_int, - c_int, - c_int, - ) - -> *mut spPathConstraintSpacingTimeline)( - frameCount_3, - bezierCount_7, - index_1, - )) - .super_0, - if (*data).spacingMode as c_uint - == SP_SPACING_MODE_LENGTH as c_int as c_uint - || (*data).spacingMode as c_uint - == SP_SPACING_MODE_FIXED as c_int as c_uint - { - scale - } else { - 1 as c_int as c_float - }, - ), + &mut (*(spPathConstraintSpacingTimeline_create + as unsafe extern "C" fn( + c_int, + c_int, + c_int, + ) + -> *mut spPathConstraintSpacingTimeline)( + frameCount_3, + bezierCount_7, + index_1, + )) + .super_0, + if (*data).spacingMode as c_uint + == SP_SPACING_MODE_LENGTH as c_int as c_uint + || (*data).spacingMode as c_uint + == SP_SPACING_MODE_FIXED as c_int as c_uint + { + scale + } else { + 1 as c_int as c_float + }, ); } 2 => { - let mut time_7: c_float = 0.; + let mut time_8: c_float = 0.; let mut mixRotate_0: c_float = 0.; let mut mixX_0: c_float = 0.; let mut mixY_0: c_float = 0.; let mut frameLast_2: c_int = 0; let mut timeline_8: *mut spPathConstraintMixTimeline = spPathConstraintMixTimeline_create(frameCount_3, bezierCount_7, index_1); - time_7 = readFloat(input); + time_8 = readFloat(input); mixRotate_0 = readFloat(input); mixX_0 = readFloat(input); mixY_0 = readFloat(input); @@ -16816,7 +18197,7 @@ unsafe extern "C" fn _spSkeletonBinary_readAnimation( spPathConstraintMixTimeline_setFrame( timeline_8, frame, - time_7, + time_8, mixRotate_0, mixX_0, mixY_0, @@ -16833,43 +18214,43 @@ unsafe extern "C" fn _spSkeletonBinary_readAnimation( spCurveTimeline_setStepped(&mut (*timeline_8).super_0, frame); } 2 => { - let fresh136 = bezier; - bezier = bezier + 1; + let fresh101 = bezier; + bezier += 1; setBezierBinary( input, &mut (*timeline_8).super_0.super_0, - fresh136, + fresh101, frame, 0 as c_int, - time_7, + time_8, time2_6, mixRotate_0, mixRotate2_0, 1 as c_int as c_float, ); - let fresh137 = bezier; - bezier = bezier + 1; + let fresh102 = bezier; + bezier += 1; setBezierBinary( input, &mut (*timeline_8).super_0.super_0, - fresh137, + fresh102, frame, 1 as c_int, - time_7, + time_8, time2_6, mixX_0, mixX2_0, 1 as c_int as c_float, ); - let fresh138 = bezier; - bezier = bezier + 1; + let fresh103 = bezier; + bezier += 1; setBezierBinary( input, &mut (*timeline_8).super_0.super_0, - fresh138, + fresh103, frame, 2 as c_int, - time_7, + time_8, time2_6, mixY_0, mixY2_0, @@ -16878,7 +18259,7 @@ unsafe extern "C" fn _spSkeletonBinary_readAnimation( } _ => {} } - time_7 = time2_6; + time_8 = time2_6; mixRotate_0 = mixRotate2_0; mixX_0 = mixX2_0; mixY_0 = mixY2_0; @@ -16894,6 +18275,181 @@ unsafe extern "C" fn _spSkeletonBinary_readAnimation( } i = 0 as c_int; n = readVarint(input, 1 as c_int); + while i < n { + let mut index_2: c_int = readVarint(input, 1 as c_int) - 1 as c_int; + ii = 0 as c_int; + nn = readVarint(input, 1 as c_int); + while ii < nn { + let mut type_1: c_int = readByte(input) as c_int; + let mut frameCount_4: c_int = readVarint(input, 1 as c_int); + if type_1 == 8 as c_int { + let mut timeline_9: *mut spPhysicsConstraintResetTimeline = + spPhysicsConstraintResetTimeline_create(frameCount_4, index_2); + frame = 0 as c_int; + while frame < frameCount_4 { + spPhysicsConstraintResetTimeline_setFrame(timeline_9, frame, readFloat(input)); + frame += 1; + } + spTimelineArray_add(timelines, &mut (*timeline_9).super_0); + } else { + let mut bezierCount_8: c_int = readVarint(input, 1 as c_int); + match type_1 { + 0 => { + readTimelineBinary( + input, + timelines, + &mut (*(spPhysicsConstraintTimeline_create + as unsafe extern "C" fn( + c_int, + c_int, + c_int, + spTimelineType, + ) + -> *mut spPhysicsConstraintTimeline)( + frameCount_4, + bezierCount_8, + index_2, + SP_TIMELINE_PHYSICSCONSTRAINT_INERTIA, + )) + .super_0, + 1 as c_int as c_float, + ); + } + 1 => { + readTimelineBinary( + input, + timelines, + &mut (*(spPhysicsConstraintTimeline_create + as unsafe extern "C" fn( + c_int, + c_int, + c_int, + spTimelineType, + ) + -> *mut spPhysicsConstraintTimeline)( + frameCount_4, + bezierCount_8, + index_2, + SP_TIMELINE_PHYSICSCONSTRAINT_STRENGTH, + )) + .super_0, + 1 as c_int as c_float, + ); + } + 2 => { + readTimelineBinary( + input, + timelines, + &mut (*(spPhysicsConstraintTimeline_create + as unsafe extern "C" fn( + c_int, + c_int, + c_int, + spTimelineType, + ) + -> *mut spPhysicsConstraintTimeline)( + frameCount_4, + bezierCount_8, + index_2, + SP_TIMELINE_PHYSICSCONSTRAINT_DAMPING, + )) + .super_0, + 1 as c_int as c_float, + ); + } + 4 => { + readTimelineBinary( + input, + timelines, + &mut (*(spPhysicsConstraintTimeline_create + as unsafe extern "C" fn( + c_int, + c_int, + c_int, + spTimelineType, + ) + -> *mut spPhysicsConstraintTimeline)( + frameCount_4, + bezierCount_8, + index_2, + SP_TIMELINE_PHYSICSCONSTRAINT_MASS, + )) + .super_0, + 1 as c_int as c_float, + ); + } + 5 => { + readTimelineBinary( + input, + timelines, + &mut (*(spPhysicsConstraintTimeline_create + as unsafe extern "C" fn( + c_int, + c_int, + c_int, + spTimelineType, + ) + -> *mut spPhysicsConstraintTimeline)( + frameCount_4, + bezierCount_8, + index_2, + SP_TIMELINE_PHYSICSCONSTRAINT_WIND, + )) + .super_0, + 1 as c_int as c_float, + ); + } + 6 => { + readTimelineBinary( + input, + timelines, + &mut (*(spPhysicsConstraintTimeline_create + as unsafe extern "C" fn( + c_int, + c_int, + c_int, + spTimelineType, + ) + -> *mut spPhysicsConstraintTimeline)( + frameCount_4, + bezierCount_8, + index_2, + SP_TIMELINE_PHYSICSCONSTRAINT_GRAVITY, + )) + .super_0, + 1 as c_int as c_float, + ); + } + 7 => { + readTimelineBinary( + input, + timelines, + &mut (*(spPhysicsConstraintTimeline_create + as unsafe extern "C" fn( + c_int, + c_int, + c_int, + spTimelineType, + ) + -> *mut spPhysicsConstraintTimeline)( + frameCount_4, + bezierCount_8, + index_2, + SP_TIMELINE_PHYSICSCONSTRAINT_MIX, + )) + .super_0, + 1 as c_int as c_float, + ); + } + _ => {} + } + } + ii += 1; + } + i += 1; + } + i = 0 as c_int; + n = readVarint(input, 1 as c_int); while i < n { let mut skin: *mut spSkin = *((*skeletonData).skins).offset(readVarint(input, 1 as c_int) as isize); @@ -16904,16 +18460,16 @@ unsafe extern "C" fn _spSkeletonBinary_readAnimation( iii = 0 as c_int; nnn = readVarint(input, 1 as c_int); while iii < nnn { - let mut frameCount_4: c_int = 0; + let mut frameCount_5: c_int = 0; let mut frameLast_3: c_int = 0; - let mut bezierCount_8: c_int = 0; - let mut time_8: c_float = 0.; + let mut bezierCount_9: c_int = 0; + let mut time_9: c_float = 0.; let mut time2_7: c_float = 0.; let mut timelineType_1: c_uint = 0; let mut attachmentName_0: *const c_char = readStringRef(input, skeletonData); let mut attachment: *mut spVertexAttachment = spSkin_getAttachment(skin, slotIndex_0, attachmentName_0) - as *mut spVertexAttachment; + .cast::(); if attachment.is_null() { i = 0 as c_int; while i < (*timelines).size { @@ -16923,21 +18479,22 @@ unsafe extern "C" fn _spSkeletonBinary_readAnimation( spTimelineArray_dispose(timelines); _spSkeletonBinary_setError( self_0, - b"Attachment not found: \0" as *const u8 as *const c_char, + (b"Attachment not found: \0" as *const u8).cast::(), attachmentName_0, ); - return std::ptr::null_mut(); + return std::ptr::null_mut::(); } timelineType_1 = readByte(input) as c_uint; - frameCount_4 = readVarint(input, 1 as c_int); - frameLast_3 = frameCount_4 - 1 as c_int; + frameCount_5 = readVarint(input, 1 as c_int); + frameLast_3 = frameCount_5 - 1 as c_int; match timelineType_1 { 0 => { - let mut tempDeform: *mut c_float = std::ptr::null_mut(); + let mut tempDeform: *mut c_float = std::ptr::null_mut::(); let mut weighted: c_int = 0; let mut deformLength: c_int = 0; - let mut timeline_9: *mut spDeformTimeline = std::ptr::null_mut(); - weighted = ((*attachment).bones != std::ptr::null_mut()) as c_int; + let mut timeline_10: *mut spDeformTimeline = + std::ptr::null_mut::(); + weighted = ((*attachment).bones != std::ptr::null_mut::()) as c_int; deformLength = if weighted != 0 { (*attachment).verticesCount / 3 as c_int * 2 as c_int } else { @@ -16946,28 +18503,29 @@ unsafe extern "C" fn _spSkeletonBinary_readAnimation( tempDeform = _spMalloc( (::core::mem::size_of::() as c_ulong) .wrapping_mul(deformLength as c_ulong), - b"spine.c\0" as *const u8 as *const c_char, - 9124 as c_int, - ) as *mut c_float; - bezierCount_8 = readVarint(input, 1 as c_int); - timeline_9 = spDeformTimeline_create( - frameCount_4, + (b"spine.c\0" as *const u8).cast::(), + 9864 as c_int, + ) + .cast::(); + bezierCount_9 = readVarint(input, 1 as c_int); + timeline_10 = spDeformTimeline_create( + frameCount_5, deformLength, - bezierCount_8, + bezierCount_9, slotIndex_0, attachment, ); - time_8 = readFloat(input); + time_9 = readFloat(input); frame = 0 as c_int; bezier = 0 as c_int; loop { - let mut deform: *mut c_float = std::ptr::null_mut(); + let mut deform: *mut c_float = std::ptr::null_mut::(); let mut end: c_int = readVarint(input, 1 as c_int); if end == 0 { if weighted != 0 { deform = tempDeform; spine_memset( - deform as *mut c_void, + deform.cast::(), 0 as c_int, (::core::mem::size_of::() as c_ulong) .wrapping_mul(deformLength as c_ulong), @@ -16980,7 +18538,7 @@ unsafe extern "C" fn _spSkeletonBinary_readAnimation( let mut start: c_int = readVarint(input, 1 as c_int); deform = tempDeform; spine_memset( - deform as *mut c_void, + deform.cast::(), 0 as c_int, (::core::mem::size_of::() as c_ulong) .wrapping_mul(start as c_ulong), @@ -17001,7 +18559,7 @@ unsafe extern "C" fn _spSkeletonBinary_readAnimation( } } spine_memset( - deform.offset(v as isize) as *mut c_void, + deform.offset(v as isize).cast::(), 0 as c_int, (::core::mem::size_of::() as c_ulong) .wrapping_mul((deformLength - v) as c_ulong), @@ -17015,25 +18573,25 @@ unsafe extern "C" fn _spSkeletonBinary_readAnimation( } } } - spDeformTimeline_setFrame(timeline_9, frame, time_8, deform); + spDeformTimeline_setFrame(timeline_10, frame, time_9, deform); if frame == frameLast_3 { break; } time2_7 = readFloat(input); match readSByte(input) as c_int { 1 => { - spCurveTimeline_setStepped(&mut (*timeline_9).super_0, frame); + spCurveTimeline_setStepped(&mut (*timeline_10).super_0, frame); } 2 => { - let fresh139 = bezier; - bezier = bezier + 1; + let fresh104 = bezier; + bezier += 1; setBezierBinary( input, - &mut (*timeline_9).super_0.super_0, - fresh139, + &mut (*timeline_10).super_0.super_0, + fresh104, frame, 0 as c_int, - time_8, + time_9, time2_7, 0 as c_int as c_float, 1 as c_int as c_float, @@ -17042,36 +18600,36 @@ unsafe extern "C" fn _spSkeletonBinary_readAnimation( } _ => {} } - time_8 = time2_7; + time_9 = time2_7; frame += 1; } - _spFree(tempDeform as *mut c_void); - spTimelineArray_add(timelines, timeline_9 as *mut spTimeline); + _spFree(tempDeform.cast::()); + spTimelineArray_add(timelines, timeline_10.cast::()); } 1 => { let mut modeAndIndex: c_int = 0; let mut delay: c_float = 0.; - let mut timeline_10: *mut spSequenceTimeline = spSequenceTimeline_create( - frameCount_4, + let mut timeline_11: *mut spSequenceTimeline = spSequenceTimeline_create( + frameCount_5, slotIndex_0, - attachment as *mut spAttachment, + attachment.cast::(), ); frame = 0 as c_int; - while frame < frameCount_4 { - time_8 = readFloat(input); + while frame < frameCount_5 { + time_9 = readFloat(input); modeAndIndex = readInt(input); delay = readFloat(input); spSequenceTimeline_setFrame( - timeline_10, + timeline_11, frame, - time_8, + time_9, modeAndIndex & 0xf as c_int, modeAndIndex >> 4 as c_int, delay, ); frame += 1; } - spTimelineArray_add(timelines, timeline_10 as *mut spTimeline); + spTimelineArray_add(timelines, timeline_11.cast::()); } _ => {} } @@ -17083,28 +18641,30 @@ unsafe extern "C" fn _spSkeletonBinary_readAnimation( } drawOrderCount = readVarint(input, 1 as c_int); if drawOrderCount != 0 { - let mut timeline_11: *mut spDrawOrderTimeline = + let mut timeline_12: *mut spDrawOrderTimeline = spDrawOrderTimeline_create(drawOrderCount, (*skeletonData).slotsCount); i = 0 as c_int; while i < drawOrderCount { - let mut time_9: c_float = readFloat(input); + let mut time_10: c_float = readFloat(input); let mut offsetCount: c_int = readVarint(input, 1 as c_int); let mut drawOrder: *mut c_int = _spMalloc( (::core::mem::size_of::() as c_ulong) .wrapping_mul((*skeletonData).slotsCount as c_ulong), - b"spine.c\0" as *const u8 as *const c_char, - 9201 as c_int, - ) as *mut c_int; + (b"spine.c\0" as *const u8).cast::(), + 9941 as c_int, + ) + .cast::(); let mut unchanged: *mut c_int = _spMalloc( (::core::mem::size_of::() as c_ulong) .wrapping_mul(((*skeletonData).slotsCount - offsetCount) as c_ulong), - b"spine.c\0" as *const u8 as *const c_char, - 9202 as c_int, - ) as *mut c_int; + (b"spine.c\0" as *const u8).cast::(), + 9942 as c_int, + ) + .cast::(); let mut originalIndex: c_int = 0 as c_int; let mut unchangedIndex: c_int = 0 as c_int; spine_memset( - drawOrder as *mut c_void, + drawOrder.cast::(), -(1 as c_int), (::core::mem::size_of::() as c_ulong) .wrapping_mul((*skeletonData).slotsCount as c_ulong), @@ -17113,11 +18673,11 @@ unsafe extern "C" fn _spSkeletonBinary_readAnimation( while ii < offsetCount { let mut slotIndex_1: c_int = readVarint(input, 1 as c_int); while originalIndex != slotIndex_1 { - let fresh140 = originalIndex; - originalIndex = originalIndex + 1; - let fresh141 = unchangedIndex; - unchangedIndex = unchangedIndex + 1; - *unchanged.offset(fresh141 as isize) = fresh140; + let fresh105 = originalIndex; + originalIndex += 1; + let fresh106 = unchangedIndex; + unchangedIndex += 1; + *unchanged.offset(fresh106 as isize) = fresh105; } *drawOrder.offset((originalIndex + readVarint(input, 1 as c_int)) as isize) = originalIndex; @@ -17125,11 +18685,11 @@ unsafe extern "C" fn _spSkeletonBinary_readAnimation( ii += 1; } while originalIndex < (*skeletonData).slotsCount { - let fresh142 = originalIndex; - originalIndex = originalIndex + 1; - let fresh143 = unchangedIndex; - unchangedIndex = unchangedIndex + 1; - *unchanged.offset(fresh143 as isize) = fresh142; + let fresh107 = originalIndex; + originalIndex += 1; + let fresh108 = unchangedIndex; + unchangedIndex += 1; + *unchanged.offset(fresh108 as isize) = fresh107; } ii = (*skeletonData).slotsCount - 1 as c_int; while ii >= 0 as c_int { @@ -17139,47 +18699,39 @@ unsafe extern "C" fn _spSkeletonBinary_readAnimation( } ii -= 1; } - _spFree(unchanged as *mut c_void); - spDrawOrderTimeline_setFrame(timeline_11, i, time_9, drawOrder); - _spFree(drawOrder as *mut c_void); + _spFree(unchanged.cast::()); + spDrawOrderTimeline_setFrame(timeline_12, i, time_10, drawOrder); + _spFree(drawOrder.cast::()); i += 1; } - spTimelineArray_add(timelines, timeline_11 as *mut spTimeline); + spTimelineArray_add(timelines, timeline_12.cast::()); } eventCount = readVarint(input, 1 as c_int); if eventCount != 0 { - let mut timeline_12: *mut spEventTimeline = spEventTimeline_create(eventCount); + let mut timeline_13: *mut spEventTimeline = spEventTimeline_create(eventCount); i = 0 as c_int; while i < eventCount { - let mut time_10: c_float = readFloat(input); + let mut time_11: c_float = readFloat(input); let mut eventData: *mut spEventData = *((*skeletonData).events).offset(readVarint(input, 1 as c_int) as isize); - let mut event: *mut spEvent = spEvent_create(time_10, eventData); + let mut event: *mut spEvent = spEvent_create(time_11, eventData); (*event).intValue = readVarint(input, 0 as c_int); (*event).floatValue = readFloat(input); - if readBoolean(input) != 0 { - (*event).stringValue = readString(input); + let mut event_stringValue: *const c_char = readString(input); + if event_stringValue.is_null() { + (*event).stringValue = string_copy((*eventData).stringValue); } else { - let ref mut fresh144 = - *(&mut (*event).stringValue as *mut *const c_char as *mut *mut c_char); - *fresh144 = _spMalloc( - (::core::mem::size_of::() as c_ulong).wrapping_mul( - (spine_strlen((*eventData).stringValue)) - .wrapping_add(1 as c_int as c_ulong), - ), - b"spine.c\0" as *const u8 as *const c_char, - 9241 as c_int, - ) as *mut c_char; - spine_strcpy(*fresh144, (*eventData).stringValue); + (*event).stringValue = string_copy(event_stringValue); + _spFree(event_stringValue as *mut c_void); } if !((*eventData).audioPath).is_null() { (*event).volume = readFloat(input); (*event).balance = readFloat(input); } - spEventTimeline_setFrame(timeline_12, i, event); + spEventTimeline_setFrame(timeline_13, i, event); i += 1; } - spTimelineArray_add(timelines, timeline_12 as *mut spTimeline); + spTimelineArray_add(timelines, timeline_13.cast::()); } duration = 0 as c_int as c_float; i = 0 as c_int; @@ -17193,7 +18745,7 @@ unsafe extern "C" fn _spSkeletonBinary_readAnimation( i += 1; } animation = spAnimation_create(name, timelines, duration); - return animation; + animation } unsafe extern "C" fn _readFloatArray( mut input: *mut _dataInput, @@ -17202,9 +18754,10 @@ unsafe extern "C" fn _readFloatArray( ) -> *mut c_float { let mut array: *mut c_float = _spMalloc( (::core::mem::size_of::() as c_ulong).wrapping_mul(n as c_ulong), - b"spine.c\0" as *const u8 as *const c_char, - 9260 as c_int, - ) as *mut c_float; + (b"spine.c\0" as *const u8).cast::(), + 9999 as c_int, + ) + .cast::(); let mut i: c_int = 0; if scale == 1 as c_int as c_float { i = 0 as c_int; @@ -17219,74 +18772,85 @@ unsafe extern "C" fn _readFloatArray( i += 1; } } - return array; + array } -unsafe extern "C" fn _readShortArray( - mut input: *mut _dataInput, - mut length: *mut c_int, -) -> *mut c_short { - let mut n: c_int = readVarint(input, 1 as c_int); - let mut array: *mut c_short = _spMalloc( - (::core::mem::size_of::() as c_ulong).wrapping_mul(n as c_ulong), - b"spine.c\0" as *const u8 as *const c_char, - 9273 as c_int, - ) as *mut c_short; +unsafe extern "C" fn _readShortArray(mut input: *mut _dataInput, mut n: c_int) -> *mut c_ushort { + let mut array: *mut c_ushort = _spMalloc( + (::core::mem::size_of::() as c_ulong).wrapping_mul(n as c_ulong), + (b"spine.c\0" as *const u8).cast::(), + 10011 as c_int, + ) + .cast::(); let mut i: c_int = 0; - *length = n; i = 0 as c_int; while i < n { - *array.offset(i as isize) = ((readByte(input) as c_int) << 8 as c_int) as c_short; - let ref mut fresh145 = *array.offset(i as isize); - *fresh145 = (*fresh145 as c_int | readByte(input) as c_int) as c_short; + *array.offset(i as isize) = readVarint(input, 1 as c_int) as c_ushort; i += 1; } - return array; + array } unsafe extern "C" fn _readVerticesBinary( - mut self_0: *mut spSkeletonBinary, mut input: *mut _dataInput, - mut bonesCount: *mut c_int, - mut bones2: *mut *mut c_int, - mut verticesCount: *mut c_int, mut vertices: *mut *mut c_float, - mut worldVerticesLength: *mut c_int, - mut vertexCount: c_int, -) { - let mut i: c_int = 0; - let mut ii: c_int = 0; - let mut verticesLength: c_int = vertexCount << 1 as c_int; - let mut weights: *mut spFloatArray = std::ptr::null_mut(); - let mut bones: *mut spIntArray = std::ptr::null_mut(); - *worldVerticesLength = verticesLength; - if readBoolean(input) == 0 { - *verticesCount = verticesLength; - *vertices = _readFloatArray(input, verticesLength, (*self_0).scale); + mut verticesLength: *mut c_int, + mut bones: *mut *mut c_int, + mut bonesCount: *mut c_int, + mut weighted: c_int, + mut scale: c_float, +) -> c_int { + let mut vertexCount: c_int = readVarint(input, 1 as c_int); + *verticesLength = vertexCount << 1 as c_int; + if weighted == 0 { + *vertices = _readFloatArray(input, *verticesLength, scale); + *bones = std::ptr::null_mut::(); *bonesCount = 0 as c_int; - *bones2 = std::ptr::null_mut(); - return; + return *verticesLength; } - weights = spFloatArray_create(verticesLength * 3 as c_int * 3 as c_int); - bones = spIntArray_create(verticesLength * 3 as c_int); - i = 0 as c_int; + let mut v: *mut c_float = _spMalloc( + (::core::mem::size_of::() as c_ulong) + .wrapping_mul((*verticesLength * 3 as c_int * 3 as c_int) as c_ulong), + (b"spine.c\0" as *const u8).cast::(), + 10029 as c_int, + ) + .cast::(); + let mut b: *mut c_int = _spMalloc( + (::core::mem::size_of::() as c_ulong) + .wrapping_mul((*verticesLength * 3 as c_int) as c_ulong), + (b"spine.c\0" as *const u8).cast::(), + 10030 as c_int, + ) + .cast::(); + let mut boneIdx: c_int = 0 as c_int; + let mut vertexIdx: c_int = 0 as c_int; + let mut i: c_int = 0 as c_int; while i < vertexCount { let mut boneCount: c_int = readVarint(input, 1 as c_int); - spIntArray_add(bones, boneCount); - ii = 0 as c_int; + let fresh109 = boneIdx; + boneIdx += 1; + *b.offset(fresh109 as isize) = boneCount; + let mut ii: c_int = 0 as c_int; while ii < boneCount { - spIntArray_add(bones, readVarint(input, 1 as c_int)); - spFloatArray_add(weights, readFloat(input) * (*self_0).scale); - spFloatArray_add(weights, readFloat(input) * (*self_0).scale); - spFloatArray_add(weights, readFloat(input)); + let fresh110 = boneIdx; + boneIdx += 1; + *b.offset(fresh110 as isize) = readVarint(input, 1 as c_int); + let fresh111 = vertexIdx; + vertexIdx += 1; + *v.offset(fresh111 as isize) = readFloat(input) * scale; + let fresh112 = vertexIdx; + vertexIdx += 1; + *v.offset(fresh112 as isize) = readFloat(input) * scale; + let fresh113 = vertexIdx; + vertexIdx += 1; + *v.offset(fresh113 as isize) = readFloat(input); ii += 1; } i += 1; } - *verticesCount = (*weights).size; - *vertices = (*weights).items; - _spFree(weights as *mut c_void); - *bonesCount = (*bones).size; - *bones2 = (*bones).items; - _spFree(bones as *mut c_void); + *vertices = v; + *bones = b; + *bonesCount = boneIdx; + *verticesLength = vertexIdx; + vertexCount << 1 as c_int } #[no_mangle] pub unsafe extern "C" fn spSkeletonBinary_readAttachment( @@ -17298,79 +18862,68 @@ pub unsafe extern "C" fn spSkeletonBinary_readAttachment( mut skeletonData: *mut spSkeletonData, mut nonessential: c_int, ) -> *mut spAttachment { - let mut i: c_int = 0; - let mut type_0: spAttachmentType = SP_ATTACHMENT_REGION; - let mut name: *const c_char = readStringRef(input, skeletonData); - if name.is_null() { - name = attachmentName; - } - type_0 = readByte(input) as spAttachmentType; + let mut flags: c_int = readByte(input) as c_int; + let mut name: *const c_char = if flags & 8 as c_int != 0 as c_int { + readStringRef(input, skeletonData).cast_const() + } else { + attachmentName + }; + let mut type_0: spAttachmentType = (flags & 0x7 as c_int) as spAttachmentType; match type_0 as c_uint { 0 => { - let mut path: *const c_char = readStringRef(input, skeletonData); - let mut rotation: c_float = 0.; - let mut x: c_float = 0.; - let mut y: c_float = 0.; - let mut scaleX: c_float = 0.; - let mut scaleY: c_float = 0.; - let mut width: c_float = 0.; - let mut height: c_float = 0.; + let mut path: *mut c_char = if flags & 16 as c_int != 0 as c_int { + readStringRef(input, skeletonData) + } else { + name.cast_mut() + }; + path = string_copy(path); let mut color: spColor = spColor { r: 0., g: 0., b: 0., a: 0., }; - let mut sequence: *mut spSequence = std::ptr::null_mut(); - if path.is_null() { - let ref mut fresh146 = *(&mut path as *mut *const c_char as *mut *mut c_char); - *fresh146 = _spMalloc( - (::core::mem::size_of::() as c_ulong) - .wrapping_mul((spine_strlen(name)).wrapping_add(1 as c_int as c_ulong)), - b"spine.c\0" as *const u8 as *const c_char, - 9339 as c_int, - ) as *mut c_char; - spine_strcpy(*fresh146, name); + spColor_setFromFloats( + &mut color, + 1 as c_int as c_float, + 1 as c_int as c_float, + 1 as c_int as c_float, + 1 as c_int as c_float, + ); + if flags & 32 as c_int != 0 as c_int { + readColor( + input, + &mut color.r, + &mut color.g, + &mut color.b, + &mut color.a, + ); + } + let mut sequence: *mut spSequence = if flags & 64 as c_int != 0 as c_int { + readSequenceBinary(input) + } else { + std::ptr::null_mut::() + }; + let mut rotation: c_float = if flags & 128 as c_int != 0 as c_int { + readFloat(input) } else { - let mut tmp: *const c_char = std::ptr::null_mut(); - let ref mut fresh147 = *(&mut tmp as *mut *const c_char as *mut *mut c_char); - *fresh147 = _spMalloc( - (::core::mem::size_of::() as c_ulong) - .wrapping_mul((spine_strlen(path)).wrapping_add(1 as c_int as c_ulong)), - b"spine.c\0" as *const u8 as *const c_char, - 9342 as c_int, - ) as *mut c_char; - spine_strcpy(*fresh147, path); - path = tmp; - } - rotation = readFloat(input); - x = readFloat(input) * (*self_0).scale; - y = readFloat(input) * (*self_0).scale; - scaleX = readFloat(input); - scaleY = readFloat(input); - width = readFloat(input) * (*self_0).scale; - height = readFloat(input) * (*self_0).scale; - readColor( - input, - &mut color.r, - &mut color.g, - &mut color.b, - &mut color.a, - ); - sequence = readSequenceBinary(input); - let mut attachment: *mut spAttachment = spAttachmentLoader_createAttachment( + 0 as c_int as c_float + }; + let mut x: c_float = readFloat(input) * (*self_0).scale; + let mut y: c_float = readFloat(input) * (*self_0).scale; + let mut scaleX: c_float = readFloat(input); + let mut scaleY: c_float = readFloat(input); + let mut width: c_float = readFloat(input) * (*self_0).scale; + let mut height: c_float = readFloat(input) * (*self_0).scale; + let mut region: *mut spRegionAttachment = spAttachmentLoader_createAttachment( (*self_0).attachmentLoader, skin, type_0, name, path, sequence, - ); - let mut region: *mut spRegionAttachment = std::ptr::null_mut(); - if attachment.is_null() { - return std::ptr::null_mut(); - } - region = attachment as *mut spRegionAttachment; + ) + .cast::(); (*region).path = path; (*region).rotation = rotation; (*region).x = x; @@ -17384,120 +18937,118 @@ pub unsafe extern "C" fn spSkeletonBinary_readAttachment( if sequence.is_null() { spRegionAttachment_updateRegion(region); } - spAttachmentLoader_configureAttachment((*self_0).attachmentLoader, attachment); - return attachment; + spAttachmentLoader_configureAttachment( + (*self_0).attachmentLoader, + &mut (*region).super_0, + ); + return &mut (*region).super_0; } 1 => { - let mut vertexCount: c_int = readVarint(input, 1 as c_int); - let mut attachment_0: *mut spAttachment = spAttachmentLoader_createAttachment( + let mut box_0: *mut spBoundingBoxAttachment = spAttachmentLoader_createAttachment( (*self_0).attachmentLoader, skin, type_0, name, - std::ptr::null(), - std::ptr::null_mut(), - ); - let mut vertexAttachment: *mut spVertexAttachment = std::ptr::null_mut(); - if attachment_0.is_null() { - return std::ptr::null_mut(); + std::ptr::null::(), + std::ptr::null_mut::(), + ) + .cast::(); + if box_0.is_null() { + return std::ptr::null_mut::(); } - vertexAttachment = attachment_0 as *mut spVertexAttachment; _readVerticesBinary( - self_0, input, - &mut (*vertexAttachment).bonesCount, - &mut (*vertexAttachment).bones, - &mut (*vertexAttachment).verticesCount, - &mut (*vertexAttachment).vertices, - &mut (*vertexAttachment).worldVerticesLength, - vertexCount, + &mut (*box_0).super_0.vertices, + &mut (*box_0).super_0.verticesCount, + &mut (*box_0).super_0.bones, + &mut (*box_0).super_0.bonesCount, + (flags & 16 as c_int != 0 as c_int) as c_int, + (*self_0).scale, ); + (*box_0).super_0.worldVerticesLength = (*box_0).super_0.verticesCount; if nonessential != 0 { - let mut bbox: *mut spBoundingBoxAttachment = - attachment_0 as *mut spBoundingBoxAttachment; readColor( input, - &mut (*bbox).color.r, - &mut (*bbox).color.g, - &mut (*bbox).color.b, - &mut (*bbox).color.a, + &mut (*box_0).color.r, + &mut (*box_0).color.g, + &mut (*box_0).color.b, + &mut (*box_0).color.a, ); } - spAttachmentLoader_configureAttachment((*self_0).attachmentLoader, attachment_0); - return attachment_0; + spAttachmentLoader_configureAttachment( + (*self_0).attachmentLoader, + &mut (*box_0).super_0.super_0, + ); + return &mut (*box_0).super_0.super_0; } 2 => { - let mut vertexCount_0: c_int = 0; - let mut path_0: *const c_char = readStringRef(input, skeletonData); + let mut uvs: *mut c_float = std::ptr::null_mut::(); + let mut uvsCount: c_int = 0 as c_int; + let mut triangles: *mut c_ushort = std::ptr::null_mut::(); + let mut trianglesCount: c_int = 0 as c_int; + let mut vertices: *mut c_float = std::ptr::null_mut::(); + let mut verticesCount: c_int = 0 as c_int; + let mut bones: *mut c_int = std::ptr::null_mut::(); + let mut bonesCount: c_int = 0 as c_int; + let mut hullLength: c_int = 0 as c_int; + let mut width_0: c_float = 0 as c_int as c_float; + let mut height_0: c_float = 0 as c_int as c_float; + let mut edges: *mut c_ushort = std::ptr::null_mut::(); + let mut edgesCount: c_int = 0 as c_int; + let mut path_0: *mut c_char = if flags & 16 as c_int != 0 as c_int { + readStringRef(input, skeletonData) + } else { + name.cast_mut() + }; + path_0 = string_copy(path_0); let mut color_0: spColor = spColor { r: 0., g: 0., b: 0., a: 0., }; - let mut regionUVs: *mut c_float = std::ptr::null_mut(); - let mut triangles: *mut c_ushort = std::ptr::null_mut(); - let mut trianglesCount: c_int = 0; - let mut bones: *mut c_int = std::ptr::null_mut(); - let mut bonesCount: c_int = 0; - let mut vertices: *mut c_float = std::ptr::null_mut(); - let mut verticesCount: c_int = 0; - let mut worldVerticesLength: c_int = 0; - let mut hullLength: c_int = 0; - let mut sequence_0: *mut spSequence = std::ptr::null_mut(); - let mut edges: *mut c_int = std::ptr::null_mut(); - let mut edgesCount: c_int = 0 as c_int; - let mut width_0: c_float = 0 as c_int as c_float; - let mut height_0: c_float = 0 as c_int as c_float; - if path_0.is_null() { - let ref mut fresh148 = *(&mut path_0 as *mut *const c_char as *mut *mut c_char); - *fresh148 = _spMalloc( - (::core::mem::size_of::() as c_ulong) - .wrapping_mul((spine_strlen(name)).wrapping_add(1 as c_int as c_ulong)), - b"spine.c\0" as *const u8 as *const c_char, - 9413 as c_int, - ) as *mut c_char; - spine_strcpy(*fresh148, name); - } else { - let mut tmp_0: *const c_char = std::ptr::null(); - let ref mut fresh149 = *(&mut tmp_0 as *mut *const c_char as *mut *mut c_char); - *fresh149 = _spMalloc( - (::core::mem::size_of::() as c_ulong) - .wrapping_mul((spine_strlen(path_0)).wrapping_add(1 as c_int as c_ulong)), - b"spine.c\0" as *const u8 as *const c_char, - 9416 as c_int, - ) as *mut c_char; - spine_strcpy(*fresh149, path_0); - path_0 = tmp_0; - } - readColor( - input, - &mut color_0.r, - &mut color_0.g, - &mut color_0.b, - &mut color_0.a, + spColor_setFromFloats( + &mut color_0, + 1 as c_int as c_float, + 1 as c_int as c_float, + 1 as c_int as c_float, + 1 as c_int as c_float, ); - vertexCount_0 = readVarint(input, 1 as c_int); - regionUVs = _readFloatArray(input, vertexCount_0 << 1 as c_int, 1 as c_int as c_float); - triangles = _readShortArray(input, &mut trianglesCount) as *mut c_ushort; - _readVerticesBinary( - self_0, + if flags & 32 as c_int != 0 as c_int { + readColor( + input, + &mut color_0.r, + &mut color_0.g, + &mut color_0.b, + &mut color_0.a, + ); + } + let mut sequence_0: *mut spSequence = if flags & 64 as c_int != 0 as c_int { + readSequenceBinary(input) + } else { + std::ptr::null_mut::() + }; + hullLength = readVarint(input, 1 as c_int); + let mut verticesLength: c_int = _readVerticesBinary( input, - &mut bonesCount, - &mut bones, - &mut verticesCount, &mut vertices, - &mut worldVerticesLength, - vertexCount_0, + &mut verticesCount, + &mut bones, + &mut bonesCount, + (flags & 128 as c_int != 0 as c_int) as c_int, + (*self_0).scale, ); - hullLength = readVarint(input, 1 as c_int) << 1 as c_int; - sequence_0 = readSequenceBinary(input); + uvsCount = verticesLength; + uvs = _readFloatArray(input, uvsCount, 1 as c_int as c_float); + trianglesCount = (verticesLength - hullLength - 2 as c_int) * 3 as c_int; + triangles = _readShortArray(input, trianglesCount); if nonessential != 0 { - edges = _readShortArray(input, &mut edgesCount) as *mut c_int; - width_0 = readFloat(input) * (*self_0).scale; - height_0 = readFloat(input) * (*self_0).scale; + edgesCount = readVarint(input, 1 as c_int); + edges = _readShortArray(input, edgesCount); + width_0 = readFloat(input); + height_0 = readFloat(input); } - let mut attachment_1: *mut spAttachment = spAttachmentLoader_createAttachment( + let mut attachment: *mut spAttachment = spAttachmentLoader_createAttachment( (*self_0).attachmentLoader, skin, type_0, @@ -17505,21 +19056,20 @@ pub unsafe extern "C" fn spSkeletonBinary_readAttachment( path_0, sequence_0, ); - let mut mesh: *mut spMeshAttachment = std::ptr::null_mut(); - if attachment_1.is_null() { - return std::ptr::null_mut(); + if attachment.is_null() { + return std::ptr::null_mut::(); } - mesh = attachment_1 as *mut spMeshAttachment; + let mut mesh: *mut spMeshAttachment = attachment.cast::(); (*mesh).path = path_0; spColor_setFromColor(&mut (*mesh).color, &mut color_0); - (*mesh).regionUVs = regionUVs; + (*mesh).regionUVs = uvs; (*mesh).triangles = triangles; (*mesh).trianglesCount = trianglesCount; (*mesh).super_0.vertices = vertices; (*mesh).super_0.verticesCount = verticesCount; (*mesh).super_0.bones = bones; (*mesh).super_0.bonesCount = bonesCount; - (*mesh).super_0.worldVerticesLength = worldVerticesLength; + (*mesh).super_0.worldVerticesLength = verticesLength; (*mesh).hullLength = hullLength; (*mesh).edges = edges; (*mesh).edgesCount = edgesCount; @@ -17529,60 +19079,53 @@ pub unsafe extern "C" fn spSkeletonBinary_readAttachment( if sequence_0.is_null() { spMeshAttachment_updateRegion(mesh); } - spAttachmentLoader_configureAttachment((*self_0).attachmentLoader, attachment_1); - return attachment_1; + spAttachmentLoader_configureAttachment((*self_0).attachmentLoader, attachment); + return attachment; } 3 => { + let mut path_1: *mut c_char = if flags & 16 as c_int != 0 as c_int { + readStringRef(input, skeletonData) + } else { + name.cast_mut() + }; + path_1 = string_copy(path_1); let mut color_1: spColor = spColor { r: 0., g: 0., b: 0., a: 0., }; + spColor_setFromFloats( + &mut color_1, + 1 as c_int as c_float, + 1 as c_int as c_float, + 1 as c_int as c_float, + 1 as c_int as c_float, + ); + if flags & 32 as c_int != 0 as c_int { + readColor( + input, + &mut color_1.r, + &mut color_1.g, + &mut color_1.b, + &mut color_1.a, + ); + } + let mut sequence_1: *mut spSequence = if flags & 64 as c_int != 0 as c_int { + readSequenceBinary(input) + } else { + std::ptr::null_mut::() + }; + let mut inheritTimelines: c_int = (flags & 128 as c_int != 0 as c_int) as c_int; + let mut skinIndex: c_int = readVarint(input, 1 as c_int); + let mut parent: *mut c_char = readStringRef(input, skeletonData); let mut width_1: c_float = 0 as c_int as c_float; let mut height_1: c_float = 0 as c_int as c_float; - let mut skinName: *const c_char = std::ptr::null(); - let mut parent: *const c_char = std::ptr::null(); - let mut inheritTimeline: c_int = 0; - let mut sequence_1: *mut spSequence = std::ptr::null_mut(); - let mut path_1: *const c_char = readStringRef(input, skeletonData); - if path_1.is_null() { - let ref mut fresh150 = *(&mut path_1 as *mut *const c_char as *mut *mut c_char); - *fresh150 = _spMalloc( - (::core::mem::size_of::() as c_ulong) - .wrapping_mul((spine_strlen(name)).wrapping_add(1 as c_int as c_ulong)), - b"spine.c\0" as *const u8 as *const c_char, - 9468 as c_int, - ) as *mut c_char; - spine_strcpy(*fresh150, name); - } else { - let mut tmp_1: *const c_char = std::ptr::null(); - let ref mut fresh151 = *(&mut tmp_1 as *mut *const c_char as *mut *mut c_char); - *fresh151 = _spMalloc( - (::core::mem::size_of::() as c_ulong) - .wrapping_mul((spine_strlen(path_1)).wrapping_add(1 as c_int as c_ulong)), - b"spine.c\0" as *const u8 as *const c_char, - 9471 as c_int, - ) as *mut c_char; - spine_strcpy(*fresh151, path_1); - path_1 = tmp_1; - } - readColor( - input, - &mut color_1.r, - &mut color_1.g, - &mut color_1.b, - &mut color_1.a, - ); - skinName = readStringRef(input, skeletonData); - parent = readStringRef(input, skeletonData); - inheritTimeline = readBoolean(input); - sequence_1 = readSequenceBinary(input); if nonessential != 0 { width_1 = readFloat(input) * (*self_0).scale; height_1 = readFloat(input) * (*self_0).scale; } - let mut attachment_2: *mut spAttachment = spAttachmentLoader_createAttachment( + let mut attachment_0: *mut spAttachment = spAttachmentLoader_createAttachment( (*self_0).attachmentLoader, skin, type_0, @@ -17590,12 +19133,25 @@ pub unsafe extern "C" fn spSkeletonBinary_readAttachment( path_1, sequence_1, ); - let mut mesh_0: *mut spMeshAttachment = std::ptr::null_mut(); - if attachment_2.is_null() { - return std::ptr::null_mut(); + let mut mesh_0: *mut spMeshAttachment = std::ptr::null_mut::(); + if attachment_0.is_null() { + return std::ptr::null_mut::(); } - mesh_0 = attachment_2 as *mut spMeshAttachment; + mesh_0 = attachment_0.cast::(); (*mesh_0).path = path_1; + if !((*mesh_0).path).is_null() { + let mut tmp: *mut c_char = std::ptr::null_mut::(); + tmp = _spMalloc( + (::core::mem::size_of::() as c_ulong).wrapping_mul( + (spine_strlen((*mesh_0).path)).wrapping_add(1 as c_int as c_ulong), + ), + (b"spine.c\0" as *const u8).cast::(), + 10182 as c_int, + ) + .cast::(); + spine_strcpy(tmp, (*mesh_0).path); + (*mesh_0).path = tmp; + } spColor_setFromColor(&mut (*mesh_0).color, &mut color_1); (*mesh_0).sequence = sequence_1; (*mesh_0).width = width_1; @@ -17603,51 +19159,48 @@ pub unsafe extern "C" fn spSkeletonBinary_readAttachment( _spSkeletonBinary_addLinkedMesh( self_0, mesh_0, - skinName, + skinIndex, slotIndex, parent, - inheritTimeline, + inheritTimelines, ); - return attachment_2; + return attachment_0; } 4 => { - let mut attachment_3: *mut spAttachment = spAttachmentLoader_createAttachment( + let mut attachment_1: *mut spAttachment = spAttachmentLoader_createAttachment( (*self_0).attachmentLoader, skin, type_0, name, - std::ptr::null(), - std::ptr::null_mut(), + std::ptr::null::(), + std::ptr::null_mut::(), ); - let mut path_2: *mut spPathAttachment = std::ptr::null_mut(); - let mut vertexAttachment_0: *mut spVertexAttachment = std::ptr::null_mut(); - let mut vertexCount_1: c_int = 0 as c_int; - if attachment_3.is_null() { - return std::ptr::null_mut(); + let mut path_2: *mut spPathAttachment = std::ptr::null_mut::(); + if attachment_1.is_null() { + return std::ptr::null_mut::(); } - path_2 = attachment_3 as *mut spPathAttachment; - vertexAttachment_0 = &mut (*path_2).super_0; - (*path_2).closed = readBoolean(input); - (*path_2).constantSpeed = readBoolean(input); - vertexCount_1 = readVarint(input, 1 as c_int); - _readVerticesBinary( - self_0, + path_2 = attachment_1.cast::(); + (*path_2).closed = (flags & 16 as c_int != 0 as c_int) as c_int; + (*path_2).constantSpeed = (flags & 32 as c_int != 0 as c_int) as c_int; + let mut verticesLength_0: c_int = _readVerticesBinary( input, - &mut (*vertexAttachment_0).bonesCount, - &mut (*vertexAttachment_0).bones, - &mut (*vertexAttachment_0).verticesCount, - &mut (*vertexAttachment_0).vertices, - &mut (*vertexAttachment_0).worldVerticesLength, - vertexCount_1, + &mut (*path_2).super_0.vertices, + &mut (*path_2).super_0.verticesCount, + &mut (*path_2).super_0.bones, + &mut (*path_2).super_0.bonesCount, + (flags & 64 as c_int != 0 as c_int) as c_int, + (*self_0).scale, ); - (*path_2).lengthsLength = vertexCount_1 / 3 as c_int; + (*path_2).super_0.worldVerticesLength = verticesLength_0; + (*path_2).lengthsLength = verticesLength_0 / 6 as c_int; (*path_2).lengths = _spMalloc( (::core::mem::size_of::() as c_ulong) .wrapping_mul((*path_2).lengthsLength as c_ulong), - b"spine.c\0" as *const u8 as *const c_char, - 9517 as c_int, - ) as *mut c_float; - i = 0 as c_int; + (b"spine.c\0" as *const u8).cast::(), + 10204 as c_int, + ) + .cast::(); + let mut i: c_int = 0 as c_int; while i < (*path_2).lengthsLength { *((*path_2).lengths).offset(i as isize) = readFloat(input) * (*self_0).scale; i += 1; @@ -17661,23 +19214,23 @@ pub unsafe extern "C" fn spSkeletonBinary_readAttachment( &mut (*path_2).color.a, ); } - spAttachmentLoader_configureAttachment((*self_0).attachmentLoader, attachment_3); - return attachment_3; + spAttachmentLoader_configureAttachment((*self_0).attachmentLoader, attachment_1); + return attachment_1; } 5 => { - let mut attachment_4: *mut spAttachment = spAttachmentLoader_createAttachment( + let mut attachment_2: *mut spAttachment = spAttachmentLoader_createAttachment( (*self_0).attachmentLoader, skin, type_0, name, - std::ptr::null(), - std::ptr::null_mut(), + std::ptr::null::(), + std::ptr::null_mut::(), ); - let mut point: *mut spPointAttachment = std::ptr::null_mut(); - if attachment_4.is_null() { - return std::ptr::null_mut(); + let mut point: *mut spPointAttachment = std::ptr::null_mut::(); + if attachment_2.is_null() { + return std::ptr::null_mut::(); } - point = attachment_4 as *mut spPointAttachment; + point = attachment_2.cast::(); (*point).rotation = readFloat(input); (*point).x = readFloat(input) * (*self_0).scale; (*point).y = readFloat(input) * (*self_0).scale; @@ -17690,37 +19243,34 @@ pub unsafe extern "C" fn spSkeletonBinary_readAttachment( &mut (*point).color.a, ); } - spAttachmentLoader_configureAttachment((*self_0).attachmentLoader, attachment_4); - return attachment_4; + spAttachmentLoader_configureAttachment((*self_0).attachmentLoader, attachment_2); + return attachment_2; } 6 => { let mut endSlotIndex: c_int = readVarint(input, 1 as c_int); - let mut vertexCount_2: c_int = readVarint(input, 1 as c_int); - let mut attachment_5: *mut spAttachment = spAttachmentLoader_createAttachment( + let mut attachment_3: *mut spAttachment = spAttachmentLoader_createAttachment( (*self_0).attachmentLoader, skin, type_0, name, - std::ptr::null(), - std::ptr::null_mut(), + std::ptr::null::(), + std::ptr::null_mut::(), ); - let mut clip: *mut spClippingAttachment = std::ptr::null_mut(); - let mut vertexAttachment_1: *mut spVertexAttachment = std::ptr::null_mut(); - if attachment_5.is_null() { - return std::ptr::null_mut(); + let mut clip: *mut spClippingAttachment = std::ptr::null_mut::(); + if attachment_3.is_null() { + return std::ptr::null_mut::(); } - clip = attachment_5 as *mut spClippingAttachment; - vertexAttachment_1 = &mut (*clip).super_0; - _readVerticesBinary( - self_0, + clip = attachment_3.cast::(); + let mut verticesLength_1: c_int = _readVerticesBinary( input, - &mut (*vertexAttachment_1).bonesCount, - &mut (*vertexAttachment_1).bones, - &mut (*vertexAttachment_1).verticesCount, - &mut (*vertexAttachment_1).vertices, - &mut (*vertexAttachment_1).worldVerticesLength, - vertexCount_2, + &mut (*clip).super_0.vertices, + &mut (*clip).super_0.verticesCount, + &mut (*clip).super_0.bones, + &mut (*clip).super_0.bonesCount, + (flags & 16 as c_int != 0 as c_int) as c_int, + (*self_0).scale, ); + (*clip).super_0.worldVerticesLength = verticesLength_1; if nonessential != 0 { readColor( input, @@ -17731,12 +19281,12 @@ pub unsafe extern "C" fn spSkeletonBinary_readAttachment( ); } (*clip).endSlot = *((*skeletonData).slots).offset(endSlotIndex as isize); - spAttachmentLoader_configureAttachment((*self_0).attachmentLoader, attachment_5); - return attachment_5; + spAttachmentLoader_configureAttachment((*self_0).attachmentLoader, attachment_3); + return attachment_3; } _ => {} } - return std::ptr::null_mut(); + std::ptr::null_mut::() } #[no_mangle] pub unsafe extern "C" fn spSkeletonBinary_readSkin( @@ -17746,7 +19296,7 @@ pub unsafe extern "C" fn spSkeletonBinary_readSkin( mut skeletonData: *mut spSkeletonData, mut nonessential: c_int, ) -> *mut spSkin { - let mut skin: *mut spSkin = std::ptr::null_mut(); + let mut skin: *mut spSkin = std::ptr::null_mut::(); let mut i: c_int = 0; let mut n: c_int = 0; let mut ii: c_int = 0; @@ -17755,11 +19305,22 @@ pub unsafe extern "C" fn spSkeletonBinary_readSkin( if defaultSkin != 0 { slotCount = readVarint(input, 1 as c_int); if slotCount == 0 as c_int { - return std::ptr::null_mut(); + return std::ptr::null_mut::(); } - skin = spSkin_create(b"default\0" as *const u8 as *const c_char); + skin = spSkin_create((b"default\0" as *const u8).cast::()); } else { - skin = spSkin_create(readStringRef(input, skeletonData)); + let mut name: *mut c_char = readString(input); + skin = spSkin_create(name); + _spFree(name.cast::()); + if nonessential != 0 { + readColor( + input, + &mut (*skin).color.r, + &mut (*skin).color.g, + &mut (*skin).color.b, + &mut (*skin).color.a, + ); + } i = 0 as c_int; n = readVarint(input, 1 as c_int); while i < n { @@ -17797,6 +19358,16 @@ pub unsafe extern "C" fn spSkeletonBinary_readSkin( ); i += 1; } + i = 0 as c_int; + n = readVarint(input, 1 as c_int); + while i < n { + spPhysicsConstraintDataArray_add( + (*skin).physicsConstraints, + *((*skeletonData).physicsConstraints) + .offset(readVarint(input, 1 as c_int) as isize), + ); + i += 1; + } slotCount = readVarint(input, 1 as c_int); } i = 0 as c_int; @@ -17805,25 +19376,25 @@ pub unsafe extern "C" fn spSkeletonBinary_readSkin( ii = 0 as c_int; nn = readVarint(input, 1 as c_int); while ii < nn { - let mut name: *const c_char = readStringRef(input, skeletonData); + let mut name_0: *const c_char = readStringRef(input, skeletonData); let mut attachment: *mut spAttachment = spSkeletonBinary_readAttachment( self_0, input, skin, slotIndex, - name, + name_0, skeletonData, nonessential, ); if attachment.is_null() { - return std::ptr::null_mut(); + return std::ptr::null_mut::(); } - spSkin_setAttachment(skin, slotIndex, name, attachment); + spSkin_setAttachment(skin, slotIndex, name_0, attachment); ii += 1; } i += 1; } - return skin; + skin } #[no_mangle] pub unsafe extern "C" fn spSkeletonBinary_readSkeletonDataFile( @@ -17831,43 +19402,19 @@ pub unsafe extern "C" fn spSkeletonBinary_readSkeletonDataFile( mut path: *const c_char, ) -> *mut spSkeletonData { let mut length: c_int = 0; - let mut skeletonData: *mut spSkeletonData = std::ptr::null_mut(); + let mut skeletonData: *mut spSkeletonData = std::ptr::null_mut::(); let mut binary: *const c_char = _spUtil_readFile(path, &mut length); if length == 0 as c_int || binary.is_null() { _spSkeletonBinary_setError( self_0, - b"Unable to read skeleton file: \0" as *const u8 as *const c_char, + (b"Unable to read skeleton file: \0" as *const u8).cast::(), path, ); - return std::ptr::null_mut(); + return std::ptr::null_mut::(); } skeletonData = spSkeletonBinary_readSkeletonData(self_0, binary as *mut c_uchar, length); _spFree(binary as *mut c_void); - return skeletonData; -} -unsafe extern "C" fn string_starts_with_binary( - mut str: *const c_char, - mut needle: *const c_char, -) -> c_int { - let mut lenStr: c_int = 0; - let mut lenNeedle: c_int = 0; - let mut i: c_int = 0; - if str.is_null() { - return 0 as c_int; - } - lenStr = spine_strlen(str) as c_int; - lenNeedle = spine_strlen(needle) as c_int; - if lenStr < lenNeedle { - return 0 as c_int; - } - i = 0 as c_int; - while i < lenNeedle { - if *str.offset(i as isize) as c_int != *needle.offset(i as isize) as c_int { - return 0 as c_int; - } - i += 1; - } - return -(1 as c_int); + skeletonData } #[no_mangle] pub unsafe extern "C" fn spSkeletonBinary_readSkeletonData( @@ -17882,74 +19429,77 @@ pub unsafe extern "C" fn spSkeletonBinary_readSkeletonData( let mut buffer: [c_char; 32] = [0; 32]; let mut lowHash: c_int = 0; let mut highHash: c_int = 0; - let mut skeletonData: *mut spSkeletonData = std::ptr::null_mut(); - let mut internal: *mut _spSkeletonBinary = self_0 as *mut _spSkeletonBinary; + let mut skeletonData: *mut spSkeletonData = std::ptr::null_mut::(); + let mut internal: *mut _spSkeletonBinary = self_0.cast::<_spSkeletonBinary>(); let mut input: *mut _dataInput = _spCalloc( 1 as c_int as size_t, ::core::mem::size_of::<_dataInput>() as c_ulong, - b"spine.c\0" as *const u8 as *const c_char, - 9644 as c_int, - ) as *mut _dataInput; + (b"spine.c\0" as *const u8).cast::(), + 10321 as c_int, + ) + .cast::<_dataInput>(); (*input).cursor = binary; (*input).end = binary.offset(length as isize); - _spFree((*self_0).error as *mut c_void); - let ref mut fresh152 = *(&mut (*self_0).error as *mut *mut c_char); - *fresh152 = std::ptr::null_mut(); + _spFree((*self_0).error.cast::()); + (*self_0).error = std::ptr::null_mut::(); (*internal).linkedMeshCount = 0 as c_int; skeletonData = spSkeletonData_create(); lowHash = readInt(input); highHash = readInt(input); - spine_sprintf!( + spine_snprintf!( buffer.as_mut_ptr(), - b"%x%x\0" as *const u8 as *const c_char, + 32 as c_int as size_t, + (b"%x%x\0" as *const u8).cast::(), highHash, lowHash, ); buffer[31 as c_int as usize] = 0 as c_int as c_char; - let ref mut fresh153 = *(&mut (*skeletonData).hash as *mut *const c_char as *mut *mut c_char); - *fresh153 = _spMalloc( + (*skeletonData).hash = _spMalloc( (::core::mem::size_of::() as c_ulong) .wrapping_mul((spine_strlen(buffer.as_mut_ptr())).wrapping_add(1 as c_int as c_ulong)), - b"spine.c\0" as *const u8 as *const c_char, - 9657 as c_int, - ) as *mut c_char; - spine_strcpy(*fresh153, buffer.as_mut_ptr()); + (b"spine.c\0" as *const u8).cast::(), + 10334 as c_int, + ) + .cast::(); + spine_strcpy((*skeletonData).hash, buffer.as_mut_ptr()); (*skeletonData).version = readString(input); if spine_strlen((*skeletonData).version) == 0 { - _spFree((*skeletonData).version as *mut c_void); - (*skeletonData).version = std::ptr::null(); + _spFree((*skeletonData).version.cast::()); + (*skeletonData).version = std::ptr::null_mut::(); } else if string_starts_with_binary( (*skeletonData).version, - b"4.1\0" as *const u8 as *const c_char, + (b"4.2\0" as *const u8).cast::(), ) == 0 { let mut errorMsg: [c_char; 255] = [0; 255]; - spine_sprintf!( + spine_snprintf!( errorMsg.as_mut_ptr(), - b"Skeleton version %s does not match runtime version %s\0" as *const u8 - as *const c_char, + 255 as c_int as size_t, + (b"Skeleton version %s does not match runtime version %s\0" as *const u8) + .cast::(), (*skeletonData).version, - b"4.1\0" as *const u8 as *const c_char, + (b"4.2\0" as *const u8).cast::(), ); - _spSkeletonBinary_setError(self_0, errorMsg.as_mut_ptr(), std::ptr::null()); - return std::ptr::null_mut(); + _spSkeletonBinary_setError(self_0, errorMsg.as_mut_ptr(), std::ptr::null::()); + return std::ptr::null_mut::(); } (*skeletonData).x = readFloat(input); (*skeletonData).y = readFloat(input); (*skeletonData).width = readFloat(input); (*skeletonData).height = readFloat(input); + (*skeletonData).referenceScale = readFloat(input); nonessential = readBoolean(input); if nonessential != 0 { (*skeletonData).fps = readFloat(input); (*skeletonData).imagesPath = readString(input); if spine_strlen((*skeletonData).imagesPath) == 0 { _spFree((*skeletonData).imagesPath as *mut c_void); - (*skeletonData).imagesPath = std::ptr::null(); + (*skeletonData).imagesPath = std::ptr::null::(); } (*skeletonData).audioPath = readString(input); if spine_strlen((*skeletonData).audioPath) == 0 { _spFree((*skeletonData).audioPath as *mut c_void); - (*skeletonData).audioPath = std::ptr::null(); + (*skeletonData).audioPath = std::ptr::null::(); } } n = readVarint(input, 1 as c_int); @@ -17957,33 +19507,33 @@ pub unsafe extern "C" fn spSkeletonBinary_readSkeletonData( (*skeletonData).strings = _spMalloc( (::core::mem::size_of::<*mut c_char>() as c_ulong) .wrapping_mul((*skeletonData).stringsCount as c_ulong), - b"spine.c\0" as *const u8 as *const c_char, - 9694 as c_int, - ) as *mut *mut c_char; + (b"spine.c\0" as *const u8).cast::(), + 10372 as c_int, + ) + .cast::<*mut c_char>(); i = 0 as c_int; while i < n { - let ref mut fresh154 = *((*skeletonData).strings).offset(i as isize); - *fresh154 = readString(input); + let fresh114 = &mut (*((*skeletonData).strings).offset(i as isize)); + *fresh114 = readString(input); i += 1; } (*skeletonData).bonesCount = readVarint(input, 1 as c_int); (*skeletonData).bones = _spMalloc( (::core::mem::size_of::<*mut spBoneData>() as c_ulong) .wrapping_mul((*skeletonData).bonesCount as c_ulong), - b"spine.c\0" as *const u8 as *const c_char, - 9701 as c_int, - ) as *mut *mut spBoneData; + (b"spine.c\0" as *const u8).cast::(), + 10379 as c_int, + ) + .cast::<*mut spBoneData>(); i = 0 as c_int; while i < (*skeletonData).bonesCount { - let mut data: *mut spBoneData = std::ptr::null_mut(); - let mut mode: c_int = 0; let mut name: *const c_char = readString(input); let mut parent: *mut spBoneData = if i == 0 as c_int { - std::ptr::null_mut() + std::ptr::null_mut::() } else { *((*skeletonData).bones).offset(readVarint(input, 1 as c_int) as isize) }; - data = spBoneData_create(i, name, parent); + let mut data: *mut spBoneData = spBoneData_create(i, name, parent); _spFree(name as *mut c_void); (*data).rotation = readFloat(input); (*data).x = readFloat(input) * (*self_0).scale; @@ -17993,25 +19543,7 @@ pub unsafe extern "C" fn spSkeletonBinary_readSkeletonData( (*data).shearX = readFloat(input); (*data).shearY = readFloat(input); (*data).length = readFloat(input) * (*self_0).scale; - mode = readVarint(input, 1 as c_int); - match mode { - 0 => { - (*data).transformMode = SP_TRANSFORMMODE_NORMAL; - } - 1 => { - (*data).transformMode = SP_TRANSFORMMODE_ONLYTRANSLATION; - } - 2 => { - (*data).transformMode = SP_TRANSFORMMODE_NOROTATIONORREFLECTION; - } - 3 => { - (*data).transformMode = SP_TRANSFORMMODE_NOSCALE; - } - 4 => { - (*data).transformMode = SP_TRANSFORMMODE_NOSCALEORREFLECTION; - } - _ => {} - } + (*data).inherit = readVarint(input, 1 as c_int) as spInherit; (*data).skinRequired = readBoolean(input); if nonessential != 0 { readColor( @@ -18021,30 +19553,40 @@ pub unsafe extern "C" fn spSkeletonBinary_readSkeletonData( &mut (*data).color.b, &mut (*data).color.a, ); + (*data).icon = readString(input); + (*data).visible = readBoolean(input); } - let ref mut fresh155 = *((*skeletonData).bones).offset(i as isize); - *fresh155 = data; + let fresh115 = &mut (*((*skeletonData).bones).offset(i as isize)); + *fresh115 = data; i += 1; } (*skeletonData).slotsCount = readVarint(input, 1 as c_int); (*skeletonData).slots = _spMalloc( (::core::mem::size_of::<*mut spSlotData>() as c_ulong) .wrapping_mul((*skeletonData).slotsCount as c_ulong), - b"spine.c\0" as *const u8 as *const c_char, - 9745 as c_int, - ) as *mut *mut spSlotData; + (b"spine.c\0" as *const u8).cast::(), + 10405 as c_int, + ) + .cast::<*mut spSlotData>(); i = 0 as c_int; while i < (*skeletonData).slotsCount { - let mut r: c_int = 0; - let mut g: c_int = 0; - let mut b: c_int = 0; - let mut a: c_int = 0; - let mut attachmentName: *const c_char = std::ptr::null(); - let mut slotName: *const c_char = readString(input); + let mut slotName: *mut c_char = readString(input); + let mut pathName: *mut c_char = std::ptr::null_mut::(); + if nonessential != 0 { + let mut slash: c_int = string_lastIndexOf(slotName, '/' as i32 as c_char); + if slash != -(1 as c_int) { + pathName = string_substring(slotName, 0 as c_int, slash); + slotName = string_substring( + slotName, + slash + 1 as c_int, + spine_strlen(slotName) as c_int, + ); + } + } let mut boneData: *mut spBoneData = *((*skeletonData).bones).offset(readVarint(input, 1 as c_int) as isize); let mut slotData: *mut spSlotData = spSlotData_create(i, slotName, boneData); - _spFree(slotName as *mut c_void); + _spFree(slotName.cast::()); readColor( input, &mut (*slotData).color.r, @@ -18052,10 +19594,10 @@ pub unsafe extern "C" fn spSkeletonBinary_readSkeletonData( &mut (*slotData).color.b, &mut (*slotData).color.a, ); - a = readByte(input) as c_int; - r = readByte(input) as c_int; - g = readByte(input) as c_int; - b = readByte(input) as c_int; + let mut a: c_int = readByte(input) as c_int; + let mut r: c_int = readByte(input) as c_int; + let mut g: c_int = readByte(input) as c_int; + let mut b: c_int = readByte(input) as c_int; if !(r == 0xff as c_int && g == 0xff as c_int && b == 0xff as c_int && a == 0xff as c_int) { (*slotData).darkColor = spColor_create(); spColor_setFromFloats( @@ -18066,144 +19608,193 @@ pub unsafe extern "C" fn spSkeletonBinary_readSkeletonData( 1 as c_int as c_float, ); } - attachmentName = readStringRef(input, skeletonData); + let mut attachmentName: *mut c_char = readStringRef(input, skeletonData); if !attachmentName.is_null() { - let ref mut fresh156 = - *(&mut (*slotData).attachmentName as *mut *const c_char as *mut *mut c_char); - *fresh156 = _spMalloc( + (*slotData).attachmentName = _spMalloc( (::core::mem::size_of::() as c_ulong).wrapping_mul( (spine_strlen(attachmentName)).wrapping_add(1 as c_int as c_ulong), ), - b"spine.c\0" as *const u8 as *const c_char, - 9764 as c_int, - ) as *mut c_char; - spine_strcpy(*fresh156, attachmentName); + (b"spine.c\0" as *const u8).cast::(), + 10429 as c_int, + ) + .cast::(); + spine_strcpy((*slotData).attachmentName, attachmentName); } else { - (*slotData).attachmentName = std::ptr::null(); + (*slotData).attachmentName = std::ptr::null_mut::(); } (*slotData).blendMode = readVarint(input, 1 as c_int) as spBlendMode; - let ref mut fresh157 = *((*skeletonData).slots).offset(i as isize); - *fresh157 = slotData; + if nonessential != 0 { + (*slotData).visible = readBoolean(input); + (*slotData).path = pathName; + } + let fresh116 = &mut (*((*skeletonData).slots).offset(i as isize)); + *fresh116 = slotData; i += 1; } (*skeletonData).ikConstraintsCount = readVarint(input, 1 as c_int); (*skeletonData).ikConstraints = _spMalloc( (::core::mem::size_of::<*mut spIkConstraintData>() as c_ulong) .wrapping_mul((*skeletonData).ikConstraintsCount as c_ulong), - b"spine.c\0" as *const u8 as *const c_char, - 9773 as c_int, - ) as *mut *mut spIkConstraintData; + (b"spine.c\0" as *const u8).cast::(), + 10442 as c_int, + ) + .cast::<*mut spIkConstraintData>(); i = 0 as c_int; while i < (*skeletonData).ikConstraintsCount { let mut name_0: *const c_char = readString(input); let mut data_0: *mut spIkConstraintData = spIkConstraintData_create(name_0); - (*data_0).order = readVarint(input, 1 as c_int); - (*data_0).skinRequired = readBoolean(input); _spFree(name_0 as *mut c_void); + (*data_0).order = readVarint(input, 1 as c_int); (*data_0).bonesCount = readVarint(input, 1 as c_int); (*data_0).bones = _spMalloc( (::core::mem::size_of::<*mut spBoneData>() as c_ulong) .wrapping_mul((*data_0).bonesCount as c_ulong), - b"spine.c\0" as *const u8 as *const c_char, - 9782 as c_int, - ) as *mut *mut spBoneData; + (b"spine.c\0" as *const u8).cast::(), + 10449 as c_int, + ) + .cast::<*mut spBoneData>(); ii = 0 as c_int; while ii < (*data_0).bonesCount { - let ref mut fresh158 = *((*data_0).bones).offset(ii as isize); - *fresh158 = *((*skeletonData).bones).offset(readVarint(input, 1 as c_int) as isize); + let fresh117 = &mut (*((*data_0).bones).offset(ii as isize)); + *fresh117 = *((*skeletonData).bones).offset(readVarint(input, 1 as c_int) as isize); ii += 1; } (*data_0).target = *((*skeletonData).bones).offset(readVarint(input, 1 as c_int) as isize); - (*data_0).mix = readFloat(input); - (*data_0).softness = readFloat(input); - (*data_0).bendDirection = readSByte(input) as c_int; - (*data_0).compress = readBoolean(input); - (*data_0).stretch = readBoolean(input); - (*data_0).uniform = readBoolean(input); - let ref mut fresh159 = *((*skeletonData).ikConstraints).offset(i as isize); - *fresh159 = data_0; + let mut flags: c_int = readByte(input) as c_int; + (*data_0).skinRequired = (flags & 1 as c_int != 0 as c_int) as c_int; + (*data_0).bendDirection = if flags & 2 as c_int != 0 as c_int { + 1 as c_int + } else { + -(1 as c_int) + }; + (*data_0).compress = (flags & 4 as c_int != 0 as c_int) as c_int; + (*data_0).stretch = (flags & 8 as c_int != 0 as c_int) as c_int; + (*data_0).uniform = (flags & 16 as c_int != 0 as c_int) as c_int; + if flags & 32 as c_int != 0 as c_int { + (*data_0).mix = if flags & 64 as c_int != 0 as c_int { + readFloat(input) + } else { + 1 as c_int as c_float + }; + } + if flags & 128 as c_int != 0 as c_int { + (*data_0).softness = readFloat(input) * (*self_0).scale; + } + let fresh118 = &mut (*((*skeletonData).ikConstraints).offset(i as isize)); + *fresh118 = data_0; i += 1; } (*skeletonData).transformConstraintsCount = readVarint(input, 1 as c_int); (*skeletonData).transformConstraints = _spMalloc( (::core::mem::size_of::<*mut spTransformConstraintData>() as c_ulong) .wrapping_mul((*skeletonData).transformConstraintsCount as c_ulong), - b"spine.c\0" as *const u8 as *const c_char, - 9797 as c_int, - ) as *mut *mut spTransformConstraintData; + (b"spine.c\0" as *const u8).cast::(), + 10467 as c_int, + ) + .cast::<*mut spTransformConstraintData>(); i = 0 as c_int; while i < (*skeletonData).transformConstraintsCount { let mut name_1: *const c_char = readString(input); let mut data_1: *mut spTransformConstraintData = spTransformConstraintData_create(name_1); - (*data_1).order = readVarint(input, 1 as c_int); - (*data_1).skinRequired = readBoolean(input); _spFree(name_1 as *mut c_void); + (*data_1).order = readVarint(input, 1 as c_int); (*data_1).bonesCount = readVarint(input, 1 as c_int); - let ref mut fresh160 = *(&mut (*data_1).bones as *mut *mut *mut spBoneData); - *fresh160 = _spMalloc( + (*data_1).bones = _spMalloc( (::core::mem::size_of::<*mut spBoneData>() as c_ulong) .wrapping_mul((*data_1).bonesCount as c_ulong), - b"spine.c\0" as *const u8 as *const c_char, - 9807 as c_int, - ) as *mut *mut spBoneData; + (b"spine.c\0" as *const u8).cast::(), + 10475 as c_int, + ) + .cast::<*mut spBoneData>(); ii = 0 as c_int; while ii < (*data_1).bonesCount { - let ref mut fresh161 = *((*data_1).bones).offset(ii as isize); - *fresh161 = *((*skeletonData).bones).offset(readVarint(input, 1 as c_int) as isize); + let fresh119 = &mut (*((*data_1).bones).offset(ii as isize)); + *fresh119 = *((*skeletonData).bones).offset(readVarint(input, 1 as c_int) as isize); ii += 1; } (*data_1).target = *((*skeletonData).bones).offset(readVarint(input, 1 as c_int) as isize); - (*data_1).local = readBoolean(input); - (*data_1).relative = readBoolean(input); - (*data_1).offsetRotation = readFloat(input); - (*data_1).offsetX = readFloat(input) * (*self_0).scale; - (*data_1).offsetY = readFloat(input) * (*self_0).scale; - (*data_1).offsetScaleX = readFloat(input); - (*data_1).offsetScaleY = readFloat(input); - (*data_1).offsetShearY = readFloat(input); - (*data_1).mixRotate = readFloat(input); - (*data_1).mixX = readFloat(input); - (*data_1).mixY = readFloat(input); - (*data_1).mixScaleX = readFloat(input); - (*data_1).mixScaleY = readFloat(input); - (*data_1).mixShearY = readFloat(input); - let ref mut fresh162 = *((*skeletonData).transformConstraints).offset(i as isize); - *fresh162 = data_1; + let mut flags_0: c_int = readByte(input) as c_int; + (*data_1).skinRequired = (flags_0 & 1 as c_int != 0 as c_int) as c_int; + (*data_1).local = (flags_0 & 2 as c_int != 0 as c_int) as c_int; + (*data_1).relative = (flags_0 & 4 as c_int != 0 as c_int) as c_int; + if flags_0 & 8 as c_int != 0 as c_int { + (*data_1).offsetRotation = readFloat(input); + } + if flags_0 & 16 as c_int != 0 as c_int { + (*data_1).offsetX = readFloat(input) * (*self_0).scale; + } + if flags_0 & 32 as c_int != 0 as c_int { + (*data_1).offsetY = readFloat(input) * (*self_0).scale; + } + if flags_0 & 64 as c_int != 0 as c_int { + (*data_1).offsetScaleX = readFloat(input); + } + if flags_0 & 128 as c_int != 0 as c_int { + (*data_1).offsetScaleY = readFloat(input); + } + flags_0 = readByte(input) as c_int; + if flags_0 & 1 as c_int != 0 as c_int { + (*data_1).offsetShearY = readFloat(input); + } + if flags_0 & 2 as c_int != 0 as c_int { + (*data_1).mixRotate = readFloat(input); + } + if flags_0 & 4 as c_int != 0 as c_int { + (*data_1).mixX = readFloat(input); + } + if flags_0 & 8 as c_int != 0 as c_int { + (*data_1).mixY = readFloat(input); + } + if flags_0 & 16 as c_int != 0 as c_int { + (*data_1).mixScaleX = readFloat(input); + } + if flags_0 & 32 as c_int != 0 as c_int { + (*data_1).mixScaleY = readFloat(input); + } + if flags_0 & 64 as c_int != 0 as c_int { + (*data_1).mixShearY = readFloat(input); + } + let fresh120 = &mut (*((*skeletonData).transformConstraints).offset(i as isize)); + *fresh120 = data_1; i += 1; } (*skeletonData).pathConstraintsCount = readVarint(input, 1 as c_int); (*skeletonData).pathConstraints = _spMalloc( (::core::mem::size_of::<*mut spPathConstraintData>() as c_ulong) .wrapping_mul((*skeletonData).pathConstraintsCount as c_ulong), - b"spine.c\0" as *const u8 as *const c_char, - 9830 as c_int, - ) as *mut *mut spPathConstraintData; + (b"spine.c\0" as *const u8).cast::(), + 10502 as c_int, + ) + .cast::<*mut spPathConstraintData>(); i = 0 as c_int; while i < (*skeletonData).pathConstraintsCount { let mut name_2: *const c_char = readString(input); let mut data_2: *mut spPathConstraintData = spPathConstraintData_create(name_2); + _spFree(name_2 as *mut c_void); (*data_2).order = readVarint(input, 1 as c_int); (*data_2).skinRequired = readBoolean(input); - _spFree(name_2 as *mut c_void); (*data_2).bonesCount = readVarint(input, 1 as c_int); - let ref mut fresh163 = *(&mut (*data_2).bones as *mut *mut *mut spBoneData); - *fresh163 = _spMalloc( + (*data_2).bones = _spMalloc( (::core::mem::size_of::<*mut spBoneData>() as c_ulong) .wrapping_mul((*data_2).bonesCount as c_ulong), - b"spine.c\0" as *const u8 as *const c_char, - 9839 as c_int, - ) as *mut *mut spBoneData; + (b"spine.c\0" as *const u8).cast::(), + 10510 as c_int, + ) + .cast::<*mut spBoneData>(); ii = 0 as c_int; while ii < (*data_2).bonesCount { - let ref mut fresh164 = *((*data_2).bones).offset(ii as isize); - *fresh164 = *((*skeletonData).bones).offset(readVarint(input, 1 as c_int) as isize); + let fresh121 = &mut (*((*data_2).bones).offset(ii as isize)); + *fresh121 = *((*skeletonData).bones).offset(readVarint(input, 1 as c_int) as isize); ii += 1; } (*data_2).target = *((*skeletonData).slots).offset(readVarint(input, 1 as c_int) as isize); - (*data_2).positionMode = readVarint(input, 1 as c_int) as spPositionMode; - (*data_2).spacingMode = readVarint(input, 1 as c_int) as spSpacingMode; - (*data_2).rotateMode = readVarint(input, 1 as c_int) as spRotateMode; - (*data_2).offsetRotation = readFloat(input); + let mut flags_1: c_int = readByte(input) as c_int; + (*data_2).positionMode = (flags_1 & 1 as c_int) as spPositionMode; + (*data_2).spacingMode = (flags_1 >> 1 as c_int & 3 as c_int) as spSpacingMode; + (*data_2).rotateMode = (flags_1 >> 3 as c_int & 3 as c_int) as spRotateMode; + if flags_1 & 128 as c_int != 0 as c_int { + (*data_2).offsetRotation = readFloat(input); + } (*data_2).position = readFloat(input); if (*data_2).positionMode as c_uint == SP_POSITION_MODE_FIXED as c_int as c_uint { (*data_2).position *= (*self_0).scale; @@ -18217,8 +19808,87 @@ pub unsafe extern "C" fn spSkeletonBinary_readSkeletonData( (*data_2).mixRotate = readFloat(input); (*data_2).mixX = readFloat(input); (*data_2).mixY = readFloat(input); - let ref mut fresh165 = *((*skeletonData).pathConstraints).offset(i as isize); - *fresh165 = data_2; + let fresh122 = &mut (*((*skeletonData).pathConstraints).offset(i as isize)); + *fresh122 = data_2; + i += 1; + } + (*skeletonData).physicsConstraintsCount = readVarint(input, 1 as c_int); + (*skeletonData).physicsConstraints = _spMalloc( + (::core::mem::size_of::<*mut spPhysicsConstraintData>() as c_ulong) + .wrapping_mul((*skeletonData).physicsConstraintsCount as c_ulong), + (b"spine.c\0" as *const u8).cast::(), + 10532 as c_int, + ) + .cast::<*mut spPhysicsConstraintData>(); + i = 0 as c_int; + while i < (*skeletonData).physicsConstraintsCount { + let mut name_3: *const c_char = readString(input); + let mut data_3: *mut spPhysicsConstraintData = spPhysicsConstraintData_create(name_3); + _spFree(name_3 as *mut c_void); + (*data_3).order = readVarint(input, 1 as c_int); + (*data_3).bone = *((*skeletonData).bones).offset(readVarint(input, 1 as c_int) as isize); + let mut flags_2: c_int = readByte(input) as c_int; + (*data_3).skinRequired = (flags_2 & 1 as c_int != 0 as c_int) as c_int; + if flags_2 & 2 as c_int != 0 as c_int { + (*data_3).x = readFloat(input); + } + if flags_2 & 4 as c_int != 0 as c_int { + (*data_3).y = readFloat(input); + } + if flags_2 & 8 as c_int != 0 as c_int { + (*data_3).rotate = readFloat(input); + } + if flags_2 & 16 as c_int != 0 as c_int { + (*data_3).scaleX = readFloat(input); + } + if flags_2 & 32 as c_int != 0 as c_int { + (*data_3).shearX = readFloat(input); + } + (*data_3).limit = (if flags_2 & 64 as c_int != 0 as c_int { + readFloat(input) + } else { + 5000 as c_int as c_float + }) * (*self_0).scale; + (*data_3).step = 1.0f32 / readByte(input) as c_int as c_float; + (*data_3).inertia = readFloat(input); + (*data_3).strength = readFloat(input); + (*data_3).damping = readFloat(input); + (*data_3).massInverse = if flags_2 & 128 as c_int != 0 as c_int { + readFloat(input) + } else { + 1 as c_int as c_float + }; + (*data_3).wind = readFloat(input); + (*data_3).gravity = readFloat(input); + flags_2 = readByte(input) as c_int; + if flags_2 & 1 as c_int != 0 as c_int { + (*data_3).inertiaGlobal = -(1 as c_int); + } + if flags_2 & 2 as c_int != 0 as c_int { + (*data_3).strengthGlobal = -(1 as c_int); + } + if flags_2 & 4 as c_int != 0 as c_int { + (*data_3).dampingGlobal = -(1 as c_int); + } + if flags_2 & 8 as c_int != 0 as c_int { + (*data_3).massGlobal = -(1 as c_int); + } + if flags_2 & 16 as c_int != 0 as c_int { + (*data_3).windGlobal = -(1 as c_int); + } + if flags_2 & 32 as c_int != 0 as c_int { + (*data_3).gravityGlobal = -(1 as c_int); + } + if flags_2 & 64 as c_int != 0 as c_int { + (*data_3).mixGlobal = -(1 as c_int); + } + (*data_3).mix = if flags_2 & 128 as c_int != 0 as c_int { + readFloat(input) + } else { + 1 as c_int as c_float + }; + let fresh123 = &mut (*((*skeletonData).physicsConstraints).offset(i as isize)); + *fresh123 = data_3; i += 1; } (*skeletonData).defaultSkin = @@ -18230,7 +19900,7 @@ pub unsafe extern "C" fn spSkeletonBinary_readSkeletonData( (*(*self_0).attachmentLoader).error1, (*(*self_0).attachmentLoader).error2, ); - return std::ptr::null_mut(); + return std::ptr::null_mut::(); } (*skeletonData).skinsCount = readVarint(input, 1 as c_int); if !((*skeletonData).defaultSkin).is_null() { @@ -18239,12 +19909,13 @@ pub unsafe extern "C" fn spSkeletonBinary_readSkeletonData( (*skeletonData).skins = _spMalloc( (::core::mem::size_of::<*mut spSkin>() as c_ulong) .wrapping_mul((*skeletonData).skinsCount as c_ulong), - b"spine.c\0" as *const u8 as *const c_char, - 9870 as c_int, - ) as *mut *mut spSkin; + (b"spine.c\0" as *const u8).cast::(), + 10578 as c_int, + ) + .cast::<*mut spSkin>(); if !((*skeletonData).defaultSkin).is_null() { - let ref mut fresh166 = *((*skeletonData).skins).offset(0 as c_int as isize); - *fresh166 = (*skeletonData).defaultSkin; + let fresh124 = &mut (*((*skeletonData).skins).offset(0 as c_int as isize)); + *fresh124 = (*skeletonData).defaultSkin; } i = if !((*skeletonData).defaultSkin).is_null() { 1 as c_int @@ -18261,49 +19932,46 @@ pub unsafe extern "C" fn spSkeletonBinary_readSkeletonData( (*(*self_0).attachmentLoader).error1, (*(*self_0).attachmentLoader).error2, ); - return std::ptr::null_mut(); + return std::ptr::null_mut::(); } - let ref mut fresh167 = *((*skeletonData).skins).offset(i as isize); - *fresh167 = skin; + let fresh125 = &mut (*((*skeletonData).skins).offset(i as isize)); + *fresh125 = skin; i += 1; } i = 0 as c_int; while i < (*internal).linkedMeshCount { let mut linkedMesh: *mut _spLinkedMeshBinary = ((*internal).linkedMeshes).offset(i as isize); - let mut skin_0: *mut spSkin = if ((*linkedMesh).skin).is_null() { - (*skeletonData).defaultSkin - } else { - spSkeletonData_findSkin(skeletonData, (*linkedMesh).skin) - }; - let mut parent_0: *mut spAttachment = std::ptr::null_mut(); + let mut skin_0: *mut spSkin = + *((*skeletonData).skins).offset((*linkedMesh).skinIndex as isize); if skin_0.is_null() { - _spFree(input as *mut c_void); + _spFree(input.cast::()); spSkeletonData_dispose(skeletonData); _spSkeletonBinary_setError( self_0, - b"Skin not found: \0" as *const u8 as *const c_char, - (*linkedMesh).skin, + (b"Skin not found\0" as *const u8).cast::(), + (b"\0" as *const u8).cast::(), ); - return std::ptr::null_mut(); + return std::ptr::null_mut::(); } - parent_0 = spSkin_getAttachment(skin_0, (*linkedMesh).slotIndex, (*linkedMesh).parent); + let mut parent_0: *mut spAttachment = + spSkin_getAttachment(skin_0, (*linkedMesh).slotIndex, (*linkedMesh).parent); if parent_0.is_null() { - _spFree(input as *mut c_void); + _spFree(input.cast::()); spSkeletonData_dispose(skeletonData); _spSkeletonBinary_setError( self_0, - b"Parent mesh not found: \0" as *const u8 as *const c_char, + (b"Parent mesh not found: \0" as *const u8).cast::(), (*linkedMesh).parent, ); - return std::ptr::null_mut(); + return std::ptr::null_mut::(); } (*(*linkedMesh).mesh).super_0.timelineAttachment = if (*linkedMesh).inheritTimeline != 0 { parent_0 } else { &mut (*(*linkedMesh).mesh).super_0.super_0 }; - spMeshAttachment_setParentMesh((*linkedMesh).mesh, parent_0 as *mut spMeshAttachment); + spMeshAttachment_setParentMesh((*linkedMesh).mesh, parent_0.cast::()); if !((*(*linkedMesh).mesh).region).is_null() { spMeshAttachment_updateRegion((*linkedMesh).mesh); } @@ -18317,13 +19985,15 @@ pub unsafe extern "C" fn spSkeletonBinary_readSkeletonData( (*skeletonData).events = _spMalloc( (::core::mem::size_of::<*mut spEventData>() as c_ulong) .wrapping_mul((*skeletonData).eventsCount as c_ulong), - b"spine.c\0" as *const u8 as *const c_char, - 9913 as c_int, - ) as *mut *mut spEventData; + (b"spine.c\0" as *const u8).cast::(), + 10620 as c_int, + ) + .cast::<*mut spEventData>(); i = 0 as c_int; while i < (*skeletonData).eventsCount { - let mut name_3: *const c_char = readStringRef(input, skeletonData); - let mut eventData: *mut spEventData = spEventData_create(name_3); + let mut name_4: *const c_char = readString(input); + let mut eventData: *mut spEventData = spEventData_create(name_4); + _spFree(name_4 as *mut c_void); (*eventData).intValue = readVarint(input, 0 as c_int); (*eventData).floatValue = readFloat(input); (*eventData).stringValue = readString(input); @@ -18332,61 +20002,63 @@ pub unsafe extern "C" fn spSkeletonBinary_readSkeletonData( (*eventData).volume = readFloat(input); (*eventData).balance = readFloat(input); } - let ref mut fresh168 = *((*skeletonData).events).offset(i as isize); - *fresh168 = eventData; + let fresh126 = &mut (*((*skeletonData).events).offset(i as isize)); + *fresh126 = eventData; i += 1; } (*skeletonData).animationsCount = readVarint(input, 1 as c_int); (*skeletonData).animations = _spMalloc( (::core::mem::size_of::<*mut spAnimation>() as c_ulong) .wrapping_mul((*skeletonData).animationsCount as c_ulong), - b"spine.c\0" as *const u8 as *const c_char, - 9930 as c_int, - ) as *mut *mut spAnimation; + (b"spine.c\0" as *const u8).cast::(), + 10638 as c_int, + ) + .cast::<*mut spAnimation>(); i = 0 as c_int; while i < (*skeletonData).animationsCount { - let mut name_4: *const c_char = readString(input); + let mut name_5: *const c_char = readString(input); let mut animation: *mut spAnimation = - _spSkeletonBinary_readAnimation(self_0, name_4, input, skeletonData); - _spFree(name_4 as *mut c_void); + _spSkeletonBinary_readAnimation(self_0, name_5, input, skeletonData); + _spFree(name_5 as *mut c_void); if animation.is_null() { - _spFree(input as *mut c_void); + _spFree(input.cast::()); spSkeletonData_dispose(skeletonData); _spSkeletonBinary_setError( self_0, - b"Animation corrupted: \0" as *const u8 as *const c_char, - name_4, + (b"Animation corrupted: \0" as *const u8).cast::(), + name_5, ); - return std::ptr::null_mut(); + return std::ptr::null_mut::(); } - let ref mut fresh169 = *((*skeletonData).animations).offset(i as isize); - *fresh169 = animation; + let fresh127 = &mut (*((*skeletonData).animations).offset(i as isize)); + *fresh127 = animation; i += 1; } - _spFree(input as *mut c_void); - return skeletonData; + _spFree(input.cast::()); + skeletonData } #[no_mangle] pub unsafe extern "C" fn spPolygon_create(mut capacity: c_int) -> *mut spPolygon { let mut self_0: *mut spPolygon = _spCalloc( 1 as c_int as size_t, ::core::mem::size_of::() as c_ulong, - b"spine.c\0" as *const u8 as *const c_char, - 9981 as c_int, - ) as *mut spPolygon; + (b"spine.c\0" as *const u8).cast::(), + 10689 as c_int, + ) + .cast::(); (*self_0).capacity = capacity; - let ref mut fresh170 = *(&mut (*self_0).vertices as *mut *mut c_float); - *fresh170 = _spMalloc( + (*self_0).vertices = _spMalloc( (::core::mem::size_of::() as c_ulong).wrapping_mul(capacity as c_ulong), - b"spine.c\0" as *const u8 as *const c_char, - 9983 as c_int, - ) as *mut c_float; - return self_0; + (b"spine.c\0" as *const u8).cast::(), + 10691 as c_int, + ) + .cast::(); + self_0 } #[no_mangle] pub unsafe extern "C" fn spPolygon_dispose(mut self_0: *mut spPolygon) { - _spFree((*self_0).vertices as *mut c_void); - _spFree(self_0 as *mut c_void); + _spFree((*self_0).vertices.cast::()); + _spFree(self_0.cast::()); } #[no_mangle] pub unsafe extern "C" fn spPolygon_containsPoint( @@ -18414,7 +20086,7 @@ pub unsafe extern "C" fn spPolygon_containsPoint( prevIndex = i; i += 2 as c_int; } - return inside; + inside } #[no_mangle] pub unsafe extern "C" fn spPolygon_intersectsSegment( @@ -18452,32 +20124,32 @@ pub unsafe extern "C" fn spPolygon_intersectsSegment( y3 = y4; i += 2 as c_int; } - return 0 as c_int; + 0 as c_int } #[no_mangle] pub unsafe extern "C" fn spSkeletonBounds_create() -> *mut spSkeletonBounds { - return &mut (*((_spCalloc + &mut (*(_spCalloc as unsafe extern "C" fn(size_t, size_t, *const c_char, c_int) -> *mut c_void)( 1 as c_int as size_t, ::core::mem::size_of::<_spSkeletonBounds>() as c_ulong, - b"spine.c\0" as *const u8 as *const c_char, - 10039 as c_int, - ) as *mut _spSkeletonBounds)) - .super_0; + (b"spine.c\0" as *const u8).cast::(), + 10747 as c_int, + ).cast::<_spSkeletonBounds>()) + .super_0 } #[no_mangle] pub unsafe extern "C" fn spSkeletonBounds_dispose(mut self_0: *mut spSkeletonBounds) { let mut i: c_int = 0; i = 0 as c_int; - while i < (*(self_0 as *mut _spSkeletonBounds)).capacity { + while i < (*self_0.cast::<_spSkeletonBounds>()).capacity { if !(*((*self_0).polygons).offset(i as isize)).is_null() { spPolygon_dispose(*((*self_0).polygons).offset(i as isize)); } i += 1; } - _spFree((*self_0).polygons as *mut c_void); - _spFree((*self_0).boundingBoxes as *mut c_void); - _spFree(self_0 as *mut c_void); + _spFree((*self_0).polygons.cast::()); + _spFree((*self_0).boundingBoxes.cast::()); + _spFree(self_0.cast::()); } #[no_mangle] pub unsafe extern "C" fn spSkeletonBounds_update( @@ -18486,29 +20158,31 @@ pub unsafe extern "C" fn spSkeletonBounds_update( mut updateAabb: c_int, ) { let mut i: c_int = 0; - let mut internal: *mut _spSkeletonBounds = self_0 as *mut _spSkeletonBounds; + let mut internal: *mut _spSkeletonBounds = self_0.cast::<_spSkeletonBounds>(); if (*internal).capacity < (*skeleton).slotsCount { - let mut newPolygons: *mut *mut spPolygon = std::ptr::null_mut(); - _spFree((*self_0).boundingBoxes as *mut c_void); + let mut newPolygons: *mut *mut spPolygon = std::ptr::null_mut::<*mut spPolygon>(); + _spFree((*self_0).boundingBoxes.cast::()); (*self_0).boundingBoxes = _spMalloc( (::core::mem::size_of::<*mut spBoundingBoxAttachment>() as c_ulong) .wrapping_mul((*skeleton).slotsCount as c_ulong), - b"spine.c\0" as *const u8 as *const c_char, - 10059 as c_int, - ) as *mut *mut spBoundingBoxAttachment; + (b"spine.c\0" as *const u8).cast::(), + 10767 as c_int, + ) + .cast::<*mut spBoundingBoxAttachment>(); newPolygons = _spCalloc( (*skeleton).slotsCount as size_t, ::core::mem::size_of::<*mut spPolygon>() as c_ulong, - b"spine.c\0" as *const u8 as *const c_char, - 10061 as c_int, - ) as *mut *mut spPolygon; + (b"spine.c\0" as *const u8).cast::(), + 10769 as c_int, + ) + .cast::<*mut spPolygon>(); spine_memcpy( - newPolygons as *mut c_void, + newPolygons.cast::(), (*self_0).polygons as *const c_void, (::core::mem::size_of::<*mut spPolygon>() as c_ulong) .wrapping_mul((*internal).capacity as c_ulong), ); - _spFree((*self_0).polygons as *mut c_void); + _spFree((*self_0).polygons.cast::()); (*self_0).polygons = newPolygons; (*internal).capacity = (*skeleton).slotsCount; } @@ -18519,18 +20193,19 @@ pub unsafe extern "C" fn spSkeletonBounds_update( (*self_0).count = 0 as c_int; i = 0 as c_int; while i < (*skeleton).slotsCount { - let mut polygon: *mut spPolygon = std::ptr::null_mut(); - let mut boundingBox: *mut spBoundingBoxAttachment = std::ptr::null_mut(); - let mut attachment: *mut spAttachment = std::ptr::null_mut(); + let mut polygon: *mut spPolygon = std::ptr::null_mut::(); + let mut boundingBox: *mut spBoundingBoxAttachment = + std::ptr::null_mut::(); + let mut attachment: *mut spAttachment = std::ptr::null_mut::(); let mut slot: *mut spSlot = *((*skeleton).slots).offset(i as isize); - if !((*(*slot).bone).active == 0) { + if (*(*slot).bone).active != 0 { attachment = (*slot).attachment; if !(attachment.is_null() || (*attachment).type_0 as c_uint != SP_ATTACHMENT_BOUNDING_BOX as c_int as c_uint) { - boundingBox = attachment as *mut spBoundingBoxAttachment; - let ref mut fresh171 = *((*self_0).boundingBoxes).offset((*self_0).count as isize); - *fresh171 = boundingBox; + boundingBox = attachment.cast::(); + let fresh128 = &mut (*((*self_0).boundingBoxes).offset((*self_0).count as isize)); + *fresh128 = boundingBox; polygon = *((*self_0).polygons).offset((*self_0).count as isize); if polygon.is_null() || (*polygon).capacity < (*boundingBox).super_0.worldVerticesLength @@ -18539,8 +20214,8 @@ pub unsafe extern "C" fn spSkeletonBounds_update( spPolygon_dispose(polygon); } polygon = spPolygon_create((*boundingBox).super_0.worldVerticesLength); - let ref mut fresh172 = *((*self_0).polygons).offset((*self_0).count as isize); - *fresh172 = polygon; + let fresh129 = &mut (*((*self_0).polygons).offset((*self_0).count as isize)); + *fresh129 = polygon; } (*polygon).count = (*boundingBox).super_0.worldVerticesLength; spVertexAttachment_computeWorldVertices( @@ -18585,10 +20260,8 @@ pub unsafe extern "C" fn spSkeletonBounds_aabbContainsPoint( mut x: c_float, mut y: c_float, ) -> c_int { - return (x >= (*self_0).minX - && x <= (*self_0).maxX - && y >= (*self_0).minY - && y <= (*self_0).maxY) as c_int; + (x >= (*self_0).minX && x <= (*self_0).maxX && y >= (*self_0).minY && y <= (*self_0).maxY) + as c_int } #[no_mangle] pub unsafe extern "C" fn spSkeletonBounds_aabbIntersectsSegment( @@ -18625,17 +20298,17 @@ pub unsafe extern "C" fn spSkeletonBounds_aabbIntersectsSegment( if x > (*self_0).minX && x < (*self_0).maxX { return 1 as c_int; } - return 0 as c_int; + 0 as c_int } #[no_mangle] pub unsafe extern "C" fn spSkeletonBounds_aabbIntersectsSkeleton( mut self_0: *mut spSkeletonBounds, mut bounds: *mut spSkeletonBounds, ) -> c_int { - return ((*self_0).minX < (*bounds).maxX + ((*self_0).minX < (*bounds).maxX && (*self_0).maxX > (*bounds).minX && (*self_0).minY < (*bounds).maxY - && (*self_0).maxY > (*bounds).minY) as c_int; + && (*self_0).maxY > (*bounds).minY) as c_int } #[no_mangle] pub unsafe extern "C" fn spSkeletonBounds_containsPoint( @@ -18651,7 +20324,7 @@ pub unsafe extern "C" fn spSkeletonBounds_containsPoint( } i += 1; } - return std::ptr::null_mut(); + std::ptr::null_mut::() } #[no_mangle] pub unsafe extern "C" fn spSkeletonBounds_intersectsSegment( @@ -18671,7 +20344,7 @@ pub unsafe extern "C" fn spSkeletonBounds_intersectsSegment( } i += 1; } - return std::ptr::null_mut(); + std::ptr::null_mut::() } #[no_mangle] pub unsafe extern "C" fn spSkeletonBounds_getPolygon( @@ -18686,16 +20359,17 @@ pub unsafe extern "C" fn spSkeletonBounds_getPolygon( } i += 1; } - return std::ptr::null_mut(); + std::ptr::null_mut::() } #[no_mangle] pub unsafe extern "C" fn spSkeletonClipping_create() -> *mut spSkeletonClipping { let mut clipping: *mut spSkeletonClipping = _spCalloc( 1 as c_int as size_t, ::core::mem::size_of::() as c_ulong, - b"spine.c\0" as *const u8 as *const c_char, - 10190 as c_int, - ) as *mut spSkeletonClipping; + (b"spine.c\0" as *const u8).cast::(), + 10898 as c_int, + ) + .cast::(); (*clipping).triangulator = spTriangulator_create(); (*clipping).clippingPolygon = spFloatArray_create(128 as c_int); (*clipping).clipOutput = spFloatArray_create(128 as c_int); @@ -18703,7 +20377,7 @@ pub unsafe extern "C" fn spSkeletonClipping_create() -> *mut spSkeletonClipping (*clipping).clippedUVs = spFloatArray_create(128 as c_int); (*clipping).clippedTriangles = spUnsignedShortArray_create(128 as c_int); (*clipping).scratch = spFloatArray_create(128 as c_int); - return clipping; + clipping } #[no_mangle] pub unsafe extern "C" fn spSkeletonClipping_dispose(mut self_0: *mut spSkeletonClipping) { @@ -18714,7 +20388,7 @@ pub unsafe extern "C" fn spSkeletonClipping_dispose(mut self_0: *mut spSkeletonC spFloatArray_dispose((*self_0).clippedUVs); spUnsignedShortArray_dispose((*self_0).clippedTriangles); spFloatArray_dispose((*self_0).scratch); - _spFree(self_0 as *mut c_void); + _spFree(self_0.cast::()); } unsafe extern "C" fn _makeClockwise(mut polygon: *mut spFloatArray) { let mut i: c_int = 0; @@ -18766,7 +20440,7 @@ pub unsafe extern "C" fn spSkeletonClipping_clipStart( ) -> c_int { let mut i: c_int = 0; let mut n: c_int = 0; - let mut vertices: *mut c_float = std::ptr::null_mut(); + let mut vertices: *mut c_float = std::ptr::null_mut::(); if !((*self_0).clipAttachment).is_null() { return 0 as c_int; } @@ -18798,7 +20472,7 @@ pub unsafe extern "C" fn spSkeletonClipping_clipStart( spFloatArray_add(polygon, *((*polygon).items).offset(1 as c_int as isize)); i += 1; } - return (*(*self_0).clippingPolygons).size; + (*(*self_0).clippingPolygons).size } #[no_mangle] pub unsafe extern "C" fn spSkeletonClipping_clipEnd( @@ -18815,8 +20489,8 @@ pub unsafe extern "C" fn spSkeletonClipping_clipEnd2(mut self_0: *mut spSkeleton if ((*self_0).clipAttachment).is_null() { return; } - (*self_0).clipAttachment = std::ptr::null_mut(); - (*self_0).clippingPolygons = std::ptr::null_mut(); + (*self_0).clipAttachment = std::ptr::null_mut::(); + (*self_0).clippingPolygons = std::ptr::null_mut::(); spFloatArray_clear((*self_0).clippedVertices); spFloatArray_clear((*self_0).clippedUVs); spUnsignedShortArray_clear((*self_0).clippedTriangles); @@ -18826,7 +20500,7 @@ pub unsafe extern "C" fn spSkeletonClipping_clipEnd2(mut self_0: *mut spSkeleton pub unsafe extern "C" fn spSkeletonClipping_isClipping( mut self_0: *mut spSkeletonClipping, ) -> c_int { - return ((*self_0).clipAttachment != std::ptr::null_mut()) as c_int; + ((*self_0).clipAttachment != std::ptr::null_mut::()) as c_int } #[no_mangle] pub unsafe extern "C" fn _clip( @@ -18843,9 +20517,9 @@ pub unsafe extern "C" fn _clip( let mut i: c_int = 0; let mut originalOutput: *mut spFloatArray = output; let mut clipped: c_int = 0 as c_int; - let mut clippingVertices: *mut c_float = std::ptr::null_mut(); + let mut clippingVertices: *mut c_float = std::ptr::null_mut::(); let mut clippingVerticesLast: c_int = 0; - let mut input: *mut spFloatArray = std::ptr::null_mut(); + let mut input: *mut spFloatArray = std::ptr::null_mut::(); if (*clippingArea).size % 4 as c_int >= 2 as c_int { input = output; output = (*self_0).scratch; @@ -18867,7 +20541,7 @@ pub unsafe extern "C" fn _clip( i = 0 as c_int; loop { let mut ii: c_int = 0; - let mut temp: *mut spFloatArray = std::ptr::null_mut(); + let mut temp: *mut spFloatArray = std::ptr::null_mut::(); let mut edgeX: c_float = *clippingVertices.offset(i as isize); let mut edgeY: c_float = *clippingVertices.offset((i + 1 as c_int) as isize); let mut edgeX2: c_float = *clippingVertices.offset((i + 2 as c_int) as isize); @@ -18967,7 +20641,7 @@ pub unsafe extern "C" fn _clip( } else { spFloatArray_setSize(originalOutput, (*originalOutput).size - 2 as c_int); } - return clipped; + clipped } #[no_mangle] pub unsafe extern "C" fn spSkeletonClipping_clipTriangles( @@ -19037,13 +20711,13 @@ pub unsafe extern "C" fn spSkeletonClipping_clipTriangles( let mut d2: c_float = 0.; let mut d4: c_float = 0.; let mut d: c_float = 0.; - let mut clippedTrianglesItems: *mut c_ushort = std::ptr::null_mut(); + let mut clippedTrianglesItems: *mut c_ushort = std::ptr::null_mut::(); let mut clipOutputCount: c_int = 0; - let mut clipOutputItems: *mut c_float = std::ptr::null_mut(); - let mut clippedVerticesItems: *mut c_float = std::ptr::null_mut(); - let mut clippedUVsItems: *mut c_float = std::ptr::null_mut(); + let mut clipOutputItems: *mut c_float = std::ptr::null_mut::(); + let mut clippedVerticesItems: *mut c_float = std::ptr::null_mut::(); + let mut clippedUVsItems: *mut c_float = std::ptr::null_mut::(); let mut clipOutputLength: c_int = (*clipOutput).size; - if !(clipOutputLength == 0 as c_int) { + if clipOutputLength != 0 as c_int { d0 = y2 - y3; d1 = x3 - x2; d2 = x1 - x3; @@ -19102,7 +20776,7 @@ pub unsafe extern "C" fn spSkeletonClipping_clipTriangles( } p += 1; } else { - let mut clippedTrianglesItems_0: *mut c_ushort = std::ptr::null_mut(); + let mut clippedTrianglesItems_0: *mut c_ushort = std::ptr::null_mut::(); let mut clippedVerticesItems_0: *mut c_float = (*spFloatArray_setSize(clippedVertices, s + ((3 as c_int) << 1 as c_int))) .items; @@ -19138,75 +20812,82 @@ pub unsafe extern "C" fn spSkeletonClipping_clipTriangles( } #[no_mangle] pub unsafe extern "C" fn spSkeletonData_create() -> *mut spSkeletonData { - return _spCalloc( + _spCalloc( 1 as c_int as size_t, ::core::mem::size_of::() as c_ulong, - b"spine.c\0" as *const u8 as *const c_char, - 10533 as c_int, - ) as *mut spSkeletonData; + (b"spine.c\0" as *const u8).cast::(), + 11241 as c_int, + ) + .cast::() } #[no_mangle] pub unsafe extern "C" fn spSkeletonData_dispose(mut self_0: *mut spSkeletonData) { let mut i: c_int = 0; i = 0 as c_int; while i < (*self_0).stringsCount { - _spFree(*((*self_0).strings).offset(i as isize) as *mut c_void); + _spFree((*((*self_0).strings).offset(i as isize)).cast::()); i += 1; } - _spFree((*self_0).strings as *mut c_void); + _spFree((*self_0).strings.cast::()); i = 0 as c_int; while i < (*self_0).bonesCount { spBoneData_dispose(*((*self_0).bones).offset(i as isize)); i += 1; } - _spFree((*self_0).bones as *mut c_void); + _spFree((*self_0).bones.cast::()); i = 0 as c_int; while i < (*self_0).slotsCount { spSlotData_dispose(*((*self_0).slots).offset(i as isize)); i += 1; } - _spFree((*self_0).slots as *mut c_void); + _spFree((*self_0).slots.cast::()); i = 0 as c_int; while i < (*self_0).skinsCount { spSkin_dispose(*((*self_0).skins).offset(i as isize)); i += 1; } - _spFree((*self_0).skins as *mut c_void); + _spFree((*self_0).skins.cast::()); i = 0 as c_int; while i < (*self_0).eventsCount { spEventData_dispose(*((*self_0).events).offset(i as isize)); i += 1; } - _spFree((*self_0).events as *mut c_void); + _spFree((*self_0).events.cast::()); i = 0 as c_int; while i < (*self_0).animationsCount { spAnimation_dispose(*((*self_0).animations).offset(i as isize)); i += 1; } - _spFree((*self_0).animations as *mut c_void); + _spFree((*self_0).animations.cast::()); i = 0 as c_int; while i < (*self_0).ikConstraintsCount { spIkConstraintData_dispose(*((*self_0).ikConstraints).offset(i as isize)); i += 1; } - _spFree((*self_0).ikConstraints as *mut c_void); + _spFree((*self_0).ikConstraints.cast::()); i = 0 as c_int; while i < (*self_0).transformConstraintsCount { spTransformConstraintData_dispose(*((*self_0).transformConstraints).offset(i as isize)); i += 1; } - _spFree((*self_0).transformConstraints as *mut c_void); + _spFree((*self_0).transformConstraints.cast::()); i = 0 as c_int; while i < (*self_0).pathConstraintsCount { spPathConstraintData_dispose(*((*self_0).pathConstraints).offset(i as isize)); i += 1; } - _spFree((*self_0).pathConstraints as *mut c_void); - _spFree((*self_0).hash as *mut c_void); - _spFree((*self_0).version as *mut c_void); + _spFree((*self_0).pathConstraints.cast::()); + i = 0 as c_int; + while i < (*self_0).physicsConstraintsCount { + spPhysicsConstraintData_dispose(*((*self_0).physicsConstraints).offset(i as isize)); + i += 1; + } + _spFree((*self_0).physicsConstraints.cast::()); + _spFree((*self_0).hash.cast::()); + _spFree((*self_0).version.cast::()); _spFree((*self_0).imagesPath as *mut c_void); _spFree((*self_0).audioPath as *mut c_void); - _spFree(self_0 as *mut c_void); + _spFree(self_0.cast::()); } #[no_mangle] pub unsafe extern "C" fn spSkeletonData_findBone( @@ -19221,7 +20902,7 @@ pub unsafe extern "C" fn spSkeletonData_findBone( } i += 1; } - return std::ptr::null_mut(); + std::ptr::null_mut::() } #[no_mangle] pub unsafe extern "C" fn spSkeletonData_findSlot( @@ -19236,7 +20917,7 @@ pub unsafe extern "C" fn spSkeletonData_findSlot( } i += 1; } - return std::ptr::null_mut(); + std::ptr::null_mut::() } #[no_mangle] pub unsafe extern "C" fn spSkeletonData_findSkin( @@ -19251,7 +20932,7 @@ pub unsafe extern "C" fn spSkeletonData_findSkin( } i += 1; } - return std::ptr::null_mut(); + std::ptr::null_mut::() } #[no_mangle] pub unsafe extern "C" fn spSkeletonData_findEvent( @@ -19266,7 +20947,7 @@ pub unsafe extern "C" fn spSkeletonData_findEvent( } i += 1; } - return std::ptr::null_mut(); + std::ptr::null_mut::() } #[no_mangle] pub unsafe extern "C" fn spSkeletonData_findAnimation( @@ -19285,7 +20966,7 @@ pub unsafe extern "C" fn spSkeletonData_findAnimation( } i += 1; } - return std::ptr::null_mut(); + std::ptr::null_mut::() } #[no_mangle] pub unsafe extern "C" fn spSkeletonData_findIkConstraint( @@ -19304,7 +20985,7 @@ pub unsafe extern "C" fn spSkeletonData_findIkConstraint( } i += 1; } - return std::ptr::null_mut(); + std::ptr::null_mut::() } #[no_mangle] pub unsafe extern "C" fn spSkeletonData_findTransformConstraint( @@ -19323,60 +21004,80 @@ pub unsafe extern "C" fn spSkeletonData_findTransformConstraint( } i += 1; } - return std::ptr::null_mut(); + std::ptr::null_mut::() } #[no_mangle] pub unsafe extern "C" fn spSkeletonData_findPathConstraint( mut self_0: *const spSkeletonData, mut constraintName: *const c_char, -) -> *mut spPathConstraintData { +) -> *mut spPathConstraintData { + let mut i: c_int = 0; + i = 0 as c_int; + while i < (*self_0).pathConstraintsCount { + if spine_strcmp( + (**((*self_0).pathConstraints).offset(i as isize)).name, + constraintName, + ) == 0 as c_int + { + return *((*self_0).pathConstraints).offset(i as isize); + } + i += 1; + } + std::ptr::null_mut::() +} +#[no_mangle] +pub unsafe extern "C" fn spSkeletonData_findPhysicsConstraint( + mut self_0: *const spSkeletonData, + mut constraintName: *const c_char, +) -> *mut spPhysicsConstraintData { let mut i: c_int = 0; i = 0 as c_int; - while i < (*self_0).pathConstraintsCount { + while i < (*self_0).physicsConstraintsCount { if spine_strcmp( - (**((*self_0).pathConstraints).offset(i as isize)).name, + (**((*self_0).physicsConstraints).offset(i as isize)).name, constraintName, ) == 0 as c_int { - return *((*self_0).pathConstraints).offset(i as isize); + return *((*self_0).physicsConstraints).offset(i as isize); } i += 1; } - return std::ptr::null_mut(); + std::ptr::null_mut::() } #[no_mangle] pub unsafe extern "C" fn spSkeletonJson_createWithLoader( mut attachmentLoader: *mut spAttachmentLoader, ) -> *mut spSkeletonJson { - let mut self_0: *mut spSkeletonJson = &mut (*((_spCalloc + let mut self_0: *mut spSkeletonJson = &mut (*(_spCalloc as unsafe extern "C" fn(size_t, size_t, *const c_char, c_int) -> *mut c_void)( 1 as c_int as size_t, ::core::mem::size_of::<_spSkeletonJson>() as c_ulong, - b"spine.c\0" as *const u8 as *const c_char, - 10694 as c_int, - ) as *mut _spSkeletonJson)) - .super_0; + (b"spine.c\0" as *const u8).cast::(), + 11413 as c_int, + ) + .cast::<_spSkeletonJson>()) + .super_0; (*self_0).scale = 1 as c_int as c_float; (*self_0).attachmentLoader = attachmentLoader; - return self_0; + self_0 } #[no_mangle] pub unsafe extern "C" fn spSkeletonJson_create(mut atlas: *mut spAtlas) -> *mut spSkeletonJson { let mut attachmentLoader: *mut spAtlasAttachmentLoader = spAtlasAttachmentLoader_create(atlas); let mut self_0: *mut spSkeletonJson = spSkeletonJson_createWithLoader(&mut (*attachmentLoader).super_0); - (*(self_0 as *mut _spSkeletonJson)).ownsLoader = 1 as c_int; - return self_0; + (*self_0.cast::<_spSkeletonJson>()).ownsLoader = 1 as c_int; + self_0 } #[no_mangle] pub unsafe extern "C" fn spSkeletonJson_dispose(mut self_0: *mut spSkeletonJson) { - let mut internal: *mut _spSkeletonJson = self_0 as *mut _spSkeletonJson; + let mut internal: *mut _spSkeletonJson = self_0.cast::<_spSkeletonJson>(); if (*internal).ownsLoader != 0 { spAttachmentLoader_dispose((*self_0).attachmentLoader); } - _spFree((*internal).linkedMeshes as *mut c_void); - _spFree((*self_0).error as *mut c_void); - _spFree(self_0 as *mut c_void); + _spFree((*internal).linkedMeshes.cast::()); + _spFree((*self_0).error.cast::()); + _spFree(self_0.cast::()); } #[no_mangle] pub unsafe extern "C" fn _spSkeletonJson_setError( @@ -19387,7 +21088,7 @@ pub unsafe extern "C" fn _spSkeletonJson_setError( ) { let mut message: [c_char; 256] = [0; 256]; let mut length: c_int = 0; - _spFree((*self_0).error as *mut c_void); + _spFree((*self_0).error.cast::()); spine_strcpy(message.as_mut_ptr(), value1); length = spine_strlen(value1) as c_int; if !value2.is_null() { @@ -19397,21 +21098,21 @@ pub unsafe extern "C" fn _spSkeletonJson_setError( (255 as c_int - length) as size_t, ); } - let ref mut fresh173 = *(&mut (*self_0).error as *mut *mut c_char); - *fresh173 = _spMalloc( + (*self_0).error = _spMalloc( (::core::mem::size_of::() as c_ulong) .wrapping_mul((spine_strlen(message.as_mut_ptr())).wrapping_add(1 as c_int as c_ulong)), - b"spine.c\0" as *const u8 as *const c_char, - 10722 as c_int, - ) as *mut c_char; - spine_strcpy(*fresh173, message.as_mut_ptr()); + (b"spine.c\0" as *const u8).cast::(), + 11441 as c_int, + ) + .cast::(); + spine_strcpy((*self_0).error, message.as_mut_ptr()); if !root.is_null() { Json_dispose(root); } } unsafe extern "C" fn toColor(mut value: *const c_char, mut index: c_int) -> c_float { let mut digits: [c_char; 3] = [0; 3]; - let mut error: *mut c_char = std::ptr::null_mut(); + let mut error: *mut c_char = std::ptr::null_mut::(); let mut color: c_int = 0; if index as size_t >= (spine_strlen(value)).wrapping_div(2 as c_int as c_ulong) { return -(1 as c_int) as c_float; @@ -19424,7 +21125,7 @@ unsafe extern "C" fn toColor(mut value: *const c_char, mut index: c_int) -> c_fl if *error as c_int != 0 as c_int { return -(1 as c_int) as c_float; } - return color as c_float / 255 as c_int as c_float; + color as c_float / 255 as c_int as c_float } unsafe extern "C" fn toColor2( mut color: *mut spColor, @@ -19488,7 +21189,7 @@ unsafe extern "C" fn readCurve( if (*curve).type_0 == 4 as c_int && spine_strcmp( (*curve).valueString, - b"stepped\0" as *const u8 as *const c_char, + (b"stepped\0" as *const u8).cast::(), ) == 0 as c_int { spCurveTimeline_setStepped(timeline, frame); @@ -19505,7 +21206,7 @@ unsafe extern "C" fn readCurve( setBezierJson( timeline, frame, value, bezier, time1, value1, cx1, cy1, cx2, cy2, time2, value2, ); - return bezier + 1 as c_int; + bezier + 1 as c_int } unsafe extern "C" fn readTimelineJson( mut keyMap: *mut Json, @@ -19515,20 +21216,20 @@ unsafe extern "C" fn readTimelineJson( ) -> *mut spTimeline { let mut time: c_float = Json_getFloat( keyMap, - b"time\0" as *const u8 as *const c_char, + (b"time\0" as *const u8).cast::(), 0 as c_int as c_float, ); let mut value: c_float = Json_getFloat( keyMap, - b"value\0" as *const u8 as *const c_char, + (b"value\0" as *const u8).cast::(), defaultValue, ) * scale; let mut frame: c_int = 0; let mut bezier: c_int = 0 as c_int; frame = 0 as c_int; loop { - let mut nextMap: *mut Json = std::ptr::null_mut(); - let mut curve: *mut Json = std::ptr::null_mut(); + let mut nextMap: *mut Json = std::ptr::null_mut::(); + let mut curve: *mut Json = std::ptr::null_mut::(); let mut time2: c_float = 0.; let mut value2: c_float = 0.; spCurveTimeline1_setFrame(timeline, frame, time, value); @@ -19538,15 +21239,15 @@ unsafe extern "C" fn readTimelineJson( } time2 = Json_getFloat( nextMap, - b"time\0" as *const u8 as *const c_char, + (b"time\0" as *const u8).cast::(), 0 as c_int as c_float, ); value2 = Json_getFloat( nextMap, - b"value\0" as *const u8 as *const c_char, + (b"value\0" as *const u8).cast::(), defaultValue, ) * scale; - curve = Json_getItem(keyMap, b"curve\0" as *const u8 as *const c_char); + curve = Json_getItem(keyMap, (b"curve\0" as *const u8).cast::()); if !curve.is_null() { bezier = readCurve( curve, timeline, bezier, frame, 0 as c_int, time, time2, value, value2, scale, @@ -19557,7 +21258,7 @@ unsafe extern "C" fn readTimelineJson( keyMap = nextMap; frame += 1; } - return &mut (*timeline).super_0; + &mut (*timeline).super_0 } unsafe extern "C" fn readTimeline2Json( mut keyMap: *mut Json, @@ -19569,7 +21270,7 @@ unsafe extern "C" fn readTimeline2Json( ) -> *mut spTimeline { let mut time: c_float = Json_getFloat( keyMap, - b"time\0" as *const u8 as *const c_char, + (b"time\0" as *const u8).cast::(), 0 as c_int as c_float, ); let mut value1: c_float = Json_getFloat(keyMap, name1, defaultValue) * scale; @@ -19578,8 +21279,8 @@ unsafe extern "C" fn readTimeline2Json( let mut bezier: c_int = 0 as c_int; frame = 0 as c_int; loop { - let mut nextMap: *mut Json = std::ptr::null_mut(); - let mut curve: *mut Json = std::ptr::null_mut(); + let mut nextMap: *mut Json = std::ptr::null_mut::(); + let mut curve: *mut Json = std::ptr::null_mut::(); let mut time2: c_float = 0.; let mut nvalue1: c_float = 0.; let mut nvalue2: c_float = 0.; @@ -19590,12 +21291,12 @@ unsafe extern "C" fn readTimeline2Json( } time2 = Json_getFloat( nextMap, - b"time\0" as *const u8 as *const c_char, + (b"time\0" as *const u8).cast::(), 0 as c_int as c_float, ); nvalue1 = Json_getFloat(nextMap, name1, defaultValue) * scale; nvalue2 = Json_getFloat(nextMap, name2, defaultValue) * scale; - curve = Json_getItem(keyMap, b"curve\0" as *const u8 as *const c_char); + curve = Json_getItem(keyMap, (b"curve\0" as *const u8).cast::()); if !curve.is_null() { bezier = readCurve( curve, timeline, bezier, frame, 0 as c_int, time, time2, value1, nvalue1, scale, @@ -19610,26 +21311,30 @@ unsafe extern "C" fn readTimeline2Json( keyMap = nextMap; frame += 1; } - return &mut (*timeline).super_0; + &mut (*timeline).super_0 } unsafe extern "C" fn readSequenceJson(mut item: *mut Json) -> *mut spSequence { - let mut sequence: *mut spSequence = std::ptr::null_mut(); + let mut sequence: *mut spSequence = std::ptr::null_mut::(); if item.is_null() { - return std::ptr::null_mut(); + return std::ptr::null_mut::(); } sequence = spSequence_create(Json_getInt( item, - b"count\0" as *const u8 as *const c_char, + (b"count\0" as *const u8).cast::(), 0 as c_int, )); - (*sequence).start = Json_getInt(item, b"start\0" as *const u8 as *const c_char, 1 as c_int); - (*sequence).digits = Json_getInt(item, b"digits\0" as *const u8 as *const c_char, 0 as c_int); + (*sequence).start = Json_getInt(item, (b"start\0" as *const u8).cast::(), 1 as c_int); + (*sequence).digits = Json_getInt( + item, + (b"digits\0" as *const u8).cast::(), + 0 as c_int, + ); (*sequence).setupIndex = Json_getInt( item, - b"setupIndex\0" as *const u8 as *const c_char, + (b"setupIndex\0" as *const u8).cast::(), 0 as c_int, ); - return sequence; + sequence } unsafe extern "C" fn _spSkeletonJson_addLinkedMesh( mut self_0: *mut spSkeletonJson, @@ -19639,10 +21344,10 @@ unsafe extern "C" fn _spSkeletonJson_addLinkedMesh( mut parent: *const c_char, mut inheritDeform: c_int, ) { - let mut linkedMesh: *mut _spLinkedMeshJson = std::ptr::null_mut(); - let mut internal: *mut _spSkeletonJson = self_0 as *mut _spSkeletonJson; + let mut linkedMesh: *mut _spLinkedMeshJson = std::ptr::null_mut::<_spLinkedMeshJson>(); + let mut internal: *mut _spSkeletonJson = self_0.cast::<_spSkeletonJson>(); if (*internal).linkedMeshCount == (*internal).linkedMeshCapacity { - let mut linkedMeshes: *mut _spLinkedMeshJson = std::ptr::null_mut(); + let mut linkedMeshes: *mut _spLinkedMeshJson = std::ptr::null_mut::<_spLinkedMeshJson>(); (*internal).linkedMeshCapacity *= 2 as c_int; if (*internal).linkedMeshCapacity < 8 as c_int { (*internal).linkedMeshCapacity = 8 as c_int; @@ -19650,21 +21355,22 @@ unsafe extern "C" fn _spSkeletonJson_addLinkedMesh( linkedMeshes = _spMalloc( (::core::mem::size_of::<_spLinkedMeshJson>() as c_ulong) .wrapping_mul((*internal).linkedMeshCapacity as c_ulong), - b"spine.c\0" as *const u8 as *const c_char, - 10847 as c_int, - ) as *mut _spLinkedMeshJson; + (b"spine.c\0" as *const u8).cast::(), + 11566 as c_int, + ) + .cast::<_spLinkedMeshJson>(); spine_memcpy( - linkedMeshes as *mut c_void, + linkedMeshes.cast::(), (*internal).linkedMeshes as *const c_void, (::core::mem::size_of::<_spLinkedMeshJson>() as c_ulong) .wrapping_mul((*internal).linkedMeshCount as c_ulong), ); - _spFree((*internal).linkedMeshes as *mut c_void); + _spFree((*internal).linkedMeshes.cast::()); (*internal).linkedMeshes = linkedMeshes; } - let fresh174 = (*internal).linkedMeshCount; - (*internal).linkedMeshCount = (*internal).linkedMeshCount + 1; - linkedMesh = ((*internal).linkedMeshes).offset(fresh174 as isize); + let fresh130 = (*internal).linkedMeshCount; + (*internal).linkedMeshCount += 1; + linkedMesh = ((*internal).linkedMeshes).offset(fresh130 as isize); (*linkedMesh).mesh = mesh; (*linkedMesh).skin = skin; (*linkedMesh).slotIndex = slotIndex; @@ -19695,11 +21401,11 @@ unsafe extern "C" fn findSlotIndex( cleanUpTimelines(timelines); _spSkeletonJson_setError( json, - std::ptr::null_mut(), - b"Slot not found: \0" as *const u8 as *const c_char, + std::ptr::null_mut::(), + (b"Slot not found: \0" as *const u8).cast::(), slotName, ); - return -(1 as c_int); + -(1 as c_int) } #[no_mangle] pub unsafe extern "C" fn findIkConstraintIndex( @@ -19712,9 +21418,7 @@ pub unsafe extern "C" fn findIkConstraintIndex( let mut i: c_int = 0; i = 0 as c_int; while i < (*skeletonData).ikConstraintsCount { - if *((*skeletonData).ikConstraints).offset(i as isize) - == constraint as *mut spIkConstraintData - { + if *((*skeletonData).ikConstraints).offset(i as isize) == constraint.cast_mut() { return i; } i += 1; @@ -19723,11 +21427,11 @@ pub unsafe extern "C" fn findIkConstraintIndex( cleanUpTimelines(timelines); _spSkeletonJson_setError( json, - std::ptr::null_mut(), - b"IK constraint not found: \0" as *const u8 as *const c_char, + std::ptr::null_mut::(), + (b"IK constraint not found: \0" as *const u8).cast::(), (*constraint).name, ); - return -(1 as c_int); + -(1 as c_int) } #[no_mangle] pub unsafe extern "C" fn findTransformConstraintIndex( @@ -19740,9 +21444,7 @@ pub unsafe extern "C" fn findTransformConstraintIndex( let mut i: c_int = 0; i = 0 as c_int; while i < (*skeletonData).transformConstraintsCount { - if *((*skeletonData).transformConstraints).offset(i as isize) - == constraint as *mut spTransformConstraintData - { + if *((*skeletonData).transformConstraints).offset(i as isize) == constraint.cast_mut() { return i; } i += 1; @@ -19751,11 +21453,11 @@ pub unsafe extern "C" fn findTransformConstraintIndex( cleanUpTimelines(timelines); _spSkeletonJson_setError( json, - std::ptr::null_mut(), - b"Transform constraint not found: \0" as *const u8 as *const c_char, + std::ptr::null_mut::(), + (b"Transform constraint not found: \0" as *const u8).cast::(), (*constraint).name, ); - return -(1 as c_int); + -(1 as c_int) } #[no_mangle] pub unsafe extern "C" fn findPathConstraintIndex( @@ -19768,9 +21470,33 @@ pub unsafe extern "C" fn findPathConstraintIndex( let mut i: c_int = 0; i = 0 as c_int; while i < (*skeletonData).pathConstraintsCount { - if *((*skeletonData).pathConstraints).offset(i as isize) - == constraint as *mut spPathConstraintData - { + if *((*skeletonData).pathConstraints).offset(i as isize) == constraint.cast_mut() { + return i; + } + i += 1; + } + } + cleanUpTimelines(timelines); + _spSkeletonJson_setError( + json, + std::ptr::null_mut::(), + (b"Path constraint not found: \0" as *const u8).cast::(), + (*constraint).name, + ); + -(1 as c_int) +} +#[no_mangle] +pub unsafe extern "C" fn findPhysicsConstraintIndex( + mut json: *mut spSkeletonJson, + mut skeletonData: *const spSkeletonData, + mut constraint: *const spPhysicsConstraintData, + mut timelines: *mut spTimelineArray, +) -> c_int { + if !constraint.is_null() { + let mut i: c_int = 0; + i = 0 as c_int; + while i < (*skeletonData).physicsConstraintsCount { + if *((*skeletonData).physicsConstraints).offset(i as isize) == constraint.cast_mut() { return i; } i += 1; @@ -19779,11 +21505,11 @@ pub unsafe extern "C" fn findPathConstraintIndex( cleanUpTimelines(timelines); _spSkeletonJson_setError( json, - std::ptr::null_mut(), - b"Path constraint not found: \0" as *const u8 as *const c_char, + std::ptr::null_mut::(), + (b"Physics constraint not found: \0" as *const u8).cast::(), (*constraint).name, ); - return -(1 as c_int); + -(1 as c_int) } unsafe extern "C" fn _spSkeletonJson_readAnimation( mut self_0: *mut spSkeletonJson, @@ -19793,24 +21519,26 @@ unsafe extern "C" fn _spSkeletonJson_readAnimation( let mut timelines: *mut spTimelineArray = spTimelineArray_create(8 as c_int); let mut scale: c_float = (*self_0).scale; let mut duration: c_float = 0.; - let mut bones: *mut Json = Json_getItem(root, b"bones\0" as *const u8 as *const c_char); - let mut slots: *mut Json = Json_getItem(root, b"slots\0" as *const u8 as *const c_char); - let mut ik: *mut Json = Json_getItem(root, b"ik\0" as *const u8 as *const c_char); - let mut transform: *mut Json = Json_getItem(root, b"transform\0" as *const u8 as *const c_char); - let mut paths: *mut Json = Json_getItem(root, b"path\0" as *const u8 as *const c_char); + let mut bones: *mut Json = Json_getItem(root, (b"bones\0" as *const u8).cast::()); + let mut slots: *mut Json = Json_getItem(root, (b"slots\0" as *const u8).cast::()); + let mut ik: *mut Json = Json_getItem(root, (b"ik\0" as *const u8).cast::()); + let mut transform: *mut Json = + Json_getItem(root, (b"transform\0" as *const u8).cast::()); + let mut paths: *mut Json = Json_getItem(root, (b"path\0" as *const u8).cast::()); + let mut physics: *mut Json = Json_getItem(root, (b"physics\0" as *const u8).cast::()); let mut attachmentsJson: *mut Json = - Json_getItem(root, b"attachments\0" as *const u8 as *const c_char); + Json_getItem(root, (b"attachments\0" as *const u8).cast::()); let mut drawOrderJson: *mut Json = - Json_getItem(root, b"drawOrder\0" as *const u8 as *const c_char); - let mut events: *mut Json = Json_getItem(root, b"events\0" as *const u8 as *const c_char); - let mut boneMap: *mut Json = std::ptr::null_mut(); - let mut slotMap: *mut Json = std::ptr::null_mut(); - let mut keyMap: *mut Json = std::ptr::null_mut(); - let mut nextMap: *mut Json = std::ptr::null_mut(); - let mut curve: *mut Json = std::ptr::null_mut(); - let mut timelineMap: *mut Json = std::ptr::null_mut(); - let mut attachmentsMap: *mut Json = std::ptr::null_mut(); - let mut constraintMap: *mut Json = std::ptr::null_mut(); + Json_getItem(root, (b"drawOrder\0" as *const u8).cast::()); + let mut events: *mut Json = Json_getItem(root, (b"events\0" as *const u8).cast::()); + let mut boneMap: *mut Json = std::ptr::null_mut::(); + let mut slotMap: *mut Json = std::ptr::null_mut::(); + let mut keyMap: *mut Json = std::ptr::null_mut::(); + let mut nextMap: *mut Json = std::ptr::null_mut::(); + let mut curve: *mut Json = std::ptr::null_mut::(); + let mut timelineMap: *mut Json = std::ptr::null_mut::(); + let mut attachmentsMap: *mut Json = std::ptr::null_mut::(); + let mut constraintMap: *mut Json = std::ptr::null_mut::(); let mut frame: c_int = 0; let mut bezier: c_int = 0; let mut i: c_int = 0; @@ -19842,19 +21570,19 @@ unsafe extern "C" fn _spSkeletonJson_readAnimation( slotMap = if !slots.is_null() { (*slots).child } else { - std::ptr::null_mut() + std::ptr::null_mut::() }; while !slotMap.is_null() { let mut slotIndex: c_int = findSlotIndex(self_0, skeletonData, (*slotMap).name, timelines); if slotIndex == -(1 as c_int) { - return std::ptr::null_mut(); + return std::ptr::null_mut::(); } timelineMap = (*slotMap).child; while !timelineMap.is_null() { let mut frames: c_int = (*timelineMap).size; if spine_strcmp( (*timelineMap).name, - b"attachment\0" as *const u8 as *const c_char, + (b"attachment\0" as *const u8).cast::(), ) == 0 as c_int { let mut timeline: *mut spAttachmentTimeline = @@ -19867,24 +21595,26 @@ unsafe extern "C" fn _spSkeletonJson_readAnimation( frame, Json_getFloat( keyMap, - b"time\0" as *const u8 as *const c_char, + (b"time\0" as *const u8).cast::(), 0 as c_int as c_float, ), - if !(Json_getItem(keyMap, b"name\0" as *const u8 as *const c_char)) + if !(Json_getItem(keyMap, (b"name\0" as *const u8).cast::())) .is_null() { - (*Json_getItem(keyMap, b"name\0" as *const u8 as *const c_char)) + (*Json_getItem(keyMap, (b"name\0" as *const u8).cast::())) .valueString } else { - std::ptr::null() + std::ptr::null::() }, ); keyMap = (*keyMap).next; frame += 1; } spTimelineArray_add(timelines, &mut (*timeline).super_0); - } else if spine_strcmp((*timelineMap).name, b"rgba\0" as *const u8 as *const c_char) - == 0 as c_int + } else if spine_strcmp( + (*timelineMap).name, + (b"rgba\0" as *const u8).cast::(), + ) == 0 as c_int { let mut time: c_float = 0.; let mut timeline_0: *mut spRGBATimeline = @@ -19892,15 +21622,15 @@ unsafe extern "C" fn _spSkeletonJson_readAnimation( keyMap = (*timelineMap).child; time = Json_getFloat( keyMap, - b"time\0" as *const u8 as *const c_char, + (b"time\0" as *const u8).cast::(), 0 as c_int as c_float, ); toColor2( &mut color, Json_getString( keyMap, - b"color\0" as *const u8 as *const c_char, - std::ptr::null(), + (b"color\0" as *const u8).cast::(), + std::ptr::null::(), ), 1 as c_int, ); @@ -19917,19 +21647,19 @@ unsafe extern "C" fn _spSkeletonJson_readAnimation( } time2 = Json_getFloat( nextMap, - b"time\0" as *const u8 as *const c_char, + (b"time\0" as *const u8).cast::(), 0 as c_int as c_float, ); toColor2( &mut newColor, Json_getString( nextMap, - b"color\0" as *const u8 as *const c_char, - std::ptr::null(), + (b"color\0" as *const u8).cast::(), + std::ptr::null::(), ), 1 as c_int, ); - curve = Json_getItem(keyMap, b"curve\0" as *const u8 as *const c_char); + curve = Json_getItem(keyMap, (b"curve\0" as *const u8).cast::()); if !curve.is_null() { bezier = readCurve( curve, @@ -19986,8 +21716,10 @@ unsafe extern "C" fn _spSkeletonJson_readAnimation( frame += 1; } spTimelineArray_add(timelines, &mut (*timeline_0).super_0.super_0); - } else if spine_strcmp((*timelineMap).name, b"rgb\0" as *const u8 as *const c_char) - == 0 as c_int + } else if spine_strcmp( + (*timelineMap).name, + (b"rgb\0" as *const u8).cast::(), + ) == 0 as c_int { let mut time_0: c_float = 0.; let mut timeline_1: *mut spRGBTimeline = @@ -19995,15 +21727,15 @@ unsafe extern "C" fn _spSkeletonJson_readAnimation( keyMap = (*timelineMap).child; time_0 = Json_getFloat( keyMap, - b"time\0" as *const u8 as *const c_char, + (b"time\0" as *const u8).cast::(), 0 as c_int as c_float, ); toColor2( &mut color, Json_getString( keyMap, - b"color\0" as *const u8 as *const c_char, - std::ptr::null(), + (b"color\0" as *const u8).cast::(), + std::ptr::null::(), ), 1 as c_int, ); @@ -20018,19 +21750,19 @@ unsafe extern "C" fn _spSkeletonJson_readAnimation( } time2_0 = Json_getFloat( nextMap, - b"time\0" as *const u8 as *const c_char, + (b"time\0" as *const u8).cast::(), 0 as c_int as c_float, ); toColor2( &mut newColor, Json_getString( nextMap, - b"color\0" as *const u8 as *const c_char, - std::ptr::null(), + (b"color\0" as *const u8).cast::(), + std::ptr::null::(), ), 1 as c_int, ); - curve = Json_getItem(keyMap, b"curve\0" as *const u8 as *const c_char); + curve = Json_getItem(keyMap, (b"curve\0" as *const u8).cast::()); if !curve.is_null() { bezier = readCurve( curve, @@ -20077,7 +21809,7 @@ unsafe extern "C" fn _spSkeletonJson_readAnimation( spTimelineArray_add(timelines, &mut (*timeline_1).super_0.super_0); } else if spine_strcmp( (*timelineMap).name, - b"alpha\0" as *const u8 as *const c_char, + (b"alpha\0" as *const u8).cast::(), ) == 0 as c_int { spTimelineArray_add( @@ -20095,7 +21827,7 @@ unsafe extern "C" fn _spSkeletonJson_readAnimation( ); } else if spine_strcmp( (*timelineMap).name, - b"rgba2\0" as *const u8 as *const c_char, + (b"rgba2\0" as *const u8).cast::(), ) == 0 as c_int { let mut time_1: c_float = 0.; @@ -20104,15 +21836,15 @@ unsafe extern "C" fn _spSkeletonJson_readAnimation( keyMap = (*timelineMap).child; time_1 = Json_getFloat( keyMap, - b"time\0" as *const u8 as *const c_char, + (b"time\0" as *const u8).cast::(), 0 as c_int as c_float, ); toColor2( &mut color, Json_getString( keyMap, - b"light\0" as *const u8 as *const c_char, - std::ptr::null(), + (b"light\0" as *const u8).cast::(), + std::ptr::null::(), ), 1 as c_int, ); @@ -20120,8 +21852,8 @@ unsafe extern "C" fn _spSkeletonJson_readAnimation( &mut color2, Json_getString( keyMap, - b"dark\0" as *const u8 as *const c_char, - std::ptr::null(), + (b"dark\0" as *const u8).cast::(), + std::ptr::null::(), ), 0 as c_int, ); @@ -20139,15 +21871,15 @@ unsafe extern "C" fn _spSkeletonJson_readAnimation( } time2_1 = Json_getFloat( nextMap, - b"time\0" as *const u8 as *const c_char, + (b"time\0" as *const u8).cast::(), 0 as c_int as c_float, ); toColor2( &mut newColor, Json_getString( nextMap, - b"light\0" as *const u8 as *const c_char, - std::ptr::null(), + (b"light\0" as *const u8).cast::(), + std::ptr::null::(), ), 1 as c_int, ); @@ -20155,12 +21887,12 @@ unsafe extern "C" fn _spSkeletonJson_readAnimation( &mut newColor2, Json_getString( nextMap, - b"dark\0" as *const u8 as *const c_char, - std::ptr::null(), + (b"dark\0" as *const u8).cast::(), + std::ptr::null::(), ), 0 as c_int, ); - curve = Json_getItem(keyMap, b"curve\0" as *const u8 as *const c_char); + curve = Json_getItem(keyMap, (b"curve\0" as *const u8).cast::()); if !curve.is_null() { bezier = readCurve( curve, @@ -20254,8 +21986,10 @@ unsafe extern "C" fn _spSkeletonJson_readAnimation( frame += 1; } spTimelineArray_add(timelines, &mut (*timeline_2).super_0.super_0); - } else if spine_strcmp((*timelineMap).name, b"rgb2\0" as *const u8 as *const c_char) - == 0 as c_int + } else if spine_strcmp( + (*timelineMap).name, + (b"rgb2\0" as *const u8).cast::(), + ) == 0 as c_int { let mut time_2: c_float = 0.; let mut timeline_3: *mut spRGBA2Timeline = @@ -20263,15 +21997,15 @@ unsafe extern "C" fn _spSkeletonJson_readAnimation( keyMap = (*timelineMap).child; time_2 = Json_getFloat( keyMap, - b"time\0" as *const u8 as *const c_char, + (b"time\0" as *const u8).cast::(), 0 as c_int as c_float, ); toColor2( &mut color, Json_getString( keyMap, - b"light\0" as *const u8 as *const c_char, - std::ptr::null(), + (b"light\0" as *const u8).cast::(), + std::ptr::null::(), ), 0 as c_int, ); @@ -20279,8 +22013,8 @@ unsafe extern "C" fn _spSkeletonJson_readAnimation( &mut color2, Json_getString( keyMap, - b"dark\0" as *const u8 as *const c_char, - std::ptr::null(), + (b"dark\0" as *const u8).cast::(), + std::ptr::null::(), ), 0 as c_int, ); @@ -20298,15 +22032,15 @@ unsafe extern "C" fn _spSkeletonJson_readAnimation( } time2_2 = Json_getFloat( nextMap, - b"time\0" as *const u8 as *const c_char, + (b"time\0" as *const u8).cast::(), 0 as c_int as c_float, ); toColor2( &mut newColor, Json_getString( nextMap, - b"light\0" as *const u8 as *const c_char, - std::ptr::null(), + (b"light\0" as *const u8).cast::(), + std::ptr::null::(), ), 0 as c_int, ); @@ -20314,12 +22048,12 @@ unsafe extern "C" fn _spSkeletonJson_readAnimation( &mut newColor2, Json_getString( nextMap, - b"dark\0" as *const u8 as *const c_char, - std::ptr::null(), + (b"dark\0" as *const u8).cast::(), + std::ptr::null::(), ), 0 as c_int, ); - curve = Json_getItem(keyMap, b"curve\0" as *const u8 as *const c_char); + curve = Json_getItem(keyMap, (b"curve\0" as *const u8).cast::()); if !curve.is_null() { bezier = readCurve( curve, @@ -20405,11 +22139,11 @@ unsafe extern "C" fn _spSkeletonJson_readAnimation( cleanUpTimelines(timelines); _spSkeletonJson_setError( self_0, - std::ptr::null_mut(), - b"Invalid timeline type for a slot: \0" as *const u8 as *const c_char, + std::ptr::null_mut::(), + (b"Invalid timeline type for a slot: \0" as *const u8).cast::(), (*timelineMap).name, ); - return std::ptr::null_mut(); + return std::ptr::null_mut::(); } timelineMap = (*timelineMap).next; } @@ -20418,7 +22152,7 @@ unsafe extern "C" fn _spSkeletonJson_readAnimation( boneMap = if !bones.is_null() { (*bones).child } else { - std::ptr::null_mut() + std::ptr::null_mut::() }; while !boneMap.is_null() { let mut boneIndex: c_int = -(1 as c_int); @@ -20439,19 +22173,19 @@ unsafe extern "C" fn _spSkeletonJson_readAnimation( cleanUpTimelines(timelines); _spSkeletonJson_setError( self_0, - std::ptr::null_mut(), - b"Bone not found: \0" as *const u8 as *const c_char, + std::ptr::null_mut::(), + (b"Bone not found: \0" as *const u8).cast::(), (*boneMap).name, ); - return std::ptr::null_mut(); + return std::ptr::null_mut::(); } timelineMap = (*boneMap).child; while !timelineMap.is_null() { let mut frames_0: c_int = (*timelineMap).size; - if !(frames_0 == 0 as c_int) { + if frames_0 != 0 as c_int { if spine_strcmp( (*timelineMap).name, - b"rotate\0" as *const u8 as *const c_char, + (b"rotate\0" as *const u8).cast::(), ) == 0 as c_int { spTimelineArray_add( @@ -20474,7 +22208,7 @@ unsafe extern "C" fn _spSkeletonJson_readAnimation( ); } else if spine_strcmp( (*timelineMap).name, - b"translate\0" as *const u8 as *const c_char, + (b"translate\0" as *const u8).cast::(), ) == 0 as c_int { let mut timeline_4: *mut spTranslateTimeline = @@ -20484,15 +22218,15 @@ unsafe extern "C" fn _spSkeletonJson_readAnimation( readTimeline2Json( (*timelineMap).child, &mut (*timeline_4).super_0, - b"x\0" as *const u8 as *const c_char, - b"y\0" as *const u8 as *const c_char, + (b"x\0" as *const u8).cast::(), + (b"y\0" as *const u8).cast::(), 0 as c_int as c_float, scale, ), ); } else if spine_strcmp( (*timelineMap).name, - b"translatex\0" as *const u8 as *const c_char, + (b"translatex\0" as *const u8).cast::(), ) == 0 as c_int { let mut timeline_5: *mut spTranslateXTimeline = @@ -20508,7 +22242,7 @@ unsafe extern "C" fn _spSkeletonJson_readAnimation( ); } else if spine_strcmp( (*timelineMap).name, - b"translatey\0" as *const u8 as *const c_char, + (b"translatey\0" as *const u8).cast::(), ) == 0 as c_int { let mut timeline_6: *mut spTranslateYTimeline = @@ -20524,7 +22258,7 @@ unsafe extern "C" fn _spSkeletonJson_readAnimation( ); } else if spine_strcmp( (*timelineMap).name, - b"scale\0" as *const u8 as *const c_char, + (b"scale\0" as *const u8).cast::(), ) == 0 as c_int { let mut timeline_7: *mut spScaleTimeline = @@ -20534,15 +22268,15 @@ unsafe extern "C" fn _spSkeletonJson_readAnimation( readTimeline2Json( (*timelineMap).child, &mut (*timeline_7).super_0, - b"x\0" as *const u8 as *const c_char, - b"y\0" as *const u8 as *const c_char, + (b"x\0" as *const u8).cast::(), + (b"y\0" as *const u8).cast::(), 1 as c_int as c_float, 1 as c_int as c_float, ), ); } else if spine_strcmp( (*timelineMap).name, - b"scalex\0" as *const u8 as *const c_char, + (b"scalex\0" as *const u8).cast::(), ) == 0 as c_int { let mut timeline_8: *mut spScaleXTimeline = @@ -20558,7 +22292,7 @@ unsafe extern "C" fn _spSkeletonJson_readAnimation( ); } else if spine_strcmp( (*timelineMap).name, - b"scaley\0" as *const u8 as *const c_char, + (b"scaley\0" as *const u8).cast::(), ) == 0 as c_int { let mut timeline_9: *mut spScaleYTimeline = @@ -20574,7 +22308,7 @@ unsafe extern "C" fn _spSkeletonJson_readAnimation( ); } else if spine_strcmp( (*timelineMap).name, - b"shear\0" as *const u8 as *const c_char, + (b"shear\0" as *const u8).cast::(), ) == 0 as c_int { let mut timeline_10: *mut spShearTimeline = @@ -20584,15 +22318,15 @@ unsafe extern "C" fn _spSkeletonJson_readAnimation( readTimeline2Json( (*timelineMap).child, &mut (*timeline_10).super_0, - b"x\0" as *const u8 as *const c_char, - b"y\0" as *const u8 as *const c_char, + (b"x\0" as *const u8).cast::(), + (b"y\0" as *const u8).cast::(), 0 as c_int as c_float, 1 as c_int as c_float, ), ); } else if spine_strcmp( (*timelineMap).name, - b"shearx\0" as *const u8 as *const c_char, + (b"shearx\0" as *const u8).cast::(), ) == 0 as c_int { let mut timeline_11: *mut spShearXTimeline = @@ -20608,7 +22342,7 @@ unsafe extern "C" fn _spSkeletonJson_readAnimation( ); } else if spine_strcmp( (*timelineMap).name, - b"sheary\0" as *const u8 as *const c_char, + (b"sheary\0" as *const u8).cast::(), ) == 0 as c_int { let mut timeline_12: *mut spShearYTimeline = @@ -20622,15 +22356,71 @@ unsafe extern "C" fn _spSkeletonJson_readAnimation( 1 as c_int as c_float, ), ); + } else if spine_strcmp( + (*timelineMap).name, + (b"inherit\0" as *const u8).cast::(), + ) == 0 as c_int + { + let mut timeline_13: *mut spInheritTimeline = + spInheritTimeline_create(frames_0, boneIndex); + keyMap = (*timelineMap).child; + frame = 0 as c_int; + loop { + let mut time_3: c_float = Json_getFloat( + keyMap, + (b"time\0" as *const u8).cast::(), + 0 as c_int as c_float, + ); + let mut value: *const c_char = Json_getString( + keyMap, + (b"value\0" as *const u8).cast::(), + (b"normal\0" as *const u8).cast::(), + ); + let mut inherit: spInherit = SP_INHERIT_NORMAL; + if spine_strcmp(value, (b"normal\0" as *const u8).cast::()) + == 0 as c_int + { + inherit = SP_INHERIT_NORMAL; + } else if spine_strcmp( + value, + (b"onlyTranslation\0" as *const u8).cast::(), + ) == 0 as c_int + { + inherit = SP_INHERIT_ONLYTRANSLATION; + } else if spine_strcmp( + value, + (b"noRotationOrReflection\0" as *const u8).cast::(), + ) == 0 as c_int + { + inherit = SP_INHERIT_NOROTATIONORREFLECTION; + } else if spine_strcmp(value, (b"noScale\0" as *const u8).cast::()) + == 0 as c_int + { + inherit = SP_INHERIT_NOSCALE; + } else if spine_strcmp( + value, + (b"noScaleOrReflection\0" as *const u8).cast::(), + ) == 0 as c_int + { + inherit = SP_INHERIT_NOSCALEORREFLECTION; + } + spInheritTimeline_setFrame(timeline_13, frame, time_3, inherit); + nextMap = (*keyMap).next; + if nextMap.is_null() { + break; + } + frame += 1; + } + spTimelineArray_add(timelines, &mut (*timeline_13).super_0); } else { cleanUpTimelines(timelines); _spSkeletonJson_setError( self_0, - std::ptr::null_mut(), - b"Invalid timeline type for a bone: \0" as *const u8 as *const c_char, + std::ptr::null_mut::(), + (b"Invalid timeline type for a bone: \0" as *const u8).cast::(), (*timelineMap).name, ); - return std::ptr::null_mut(); + return std::ptr::null_mut::(); } } timelineMap = (*timelineMap).next; @@ -20640,13 +22430,14 @@ unsafe extern "C" fn _spSkeletonJson_readAnimation( constraintMap = if !ik.is_null() { (*ik).child } else { - std::ptr::null_mut() + std::ptr::null_mut::() }; while !constraintMap.is_null() { - let mut constraint: *mut spIkConstraintData = std::ptr::null_mut(); - let mut timeline_13: *mut spIkConstraintTimeline = std::ptr::null_mut(); + let mut constraint: *mut spIkConstraintData = std::ptr::null_mut::(); + let mut timeline_14: *mut spIkConstraintTimeline = + std::ptr::null_mut::(); let mut constraintIndex: c_int = 0; - let mut time_3: c_float = 0.; + let mut time_4: c_float = 0.; let mut mix: c_float = 0.; let mut softness: c_float = 0.; keyMap = (*constraintMap).child; @@ -20654,26 +22445,26 @@ unsafe extern "C" fn _spSkeletonJson_readAnimation( constraint = spSkeletonData_findIkConstraint(skeletonData, (*constraintMap).name); constraintIndex = findIkConstraintIndex(self_0, skeletonData, constraint, timelines); if constraintIndex == -(1 as c_int) { - return std::ptr::null_mut(); + return std::ptr::null_mut::(); } - timeline_13 = spIkConstraintTimeline_create( + timeline_14 = spIkConstraintTimeline_create( (*constraintMap).size, (*constraintMap).size << 1 as c_int, constraintIndex, ); - time_3 = Json_getFloat( + time_4 = Json_getFloat( keyMap, - b"time\0" as *const u8 as *const c_char, + (b"time\0" as *const u8).cast::(), 0 as c_int as c_float, ); mix = Json_getFloat( keyMap, - b"mix\0" as *const u8 as *const c_char, + (b"mix\0" as *const u8).cast::(), 1 as c_int as c_float, ); softness = Json_getFloat( keyMap, - b"softness\0" as *const u8 as *const c_char, + (b"softness\0" as *const u8).cast::(), 0 as c_int as c_float, ) * scale; frame = 0 as c_int; @@ -20684,7 +22475,7 @@ unsafe extern "C" fn _spSkeletonJson_readAnimation( let mut softness2: c_float = 0.; let mut bendDirection: c_int = if Json_getInt( keyMap, - b"bendPositive\0" as *const u8 as *const c_char, + (b"bendPositive\0" as *const u8).cast::(), 1 as c_int, ) != 0 { @@ -20693,15 +22484,15 @@ unsafe extern "C" fn _spSkeletonJson_readAnimation( -(1 as c_int) }; spIkConstraintTimeline_setFrame( - timeline_13, + timeline_14, frame, - time_3, + time_4, mix, softness, bendDirection, if Json_getInt( keyMap, - b"compress\0" as *const u8 as *const c_char, + (b"compress\0" as *const u8).cast::(), 0 as c_int, ) != 0 { @@ -20711,7 +22502,7 @@ unsafe extern "C" fn _spSkeletonJson_readAnimation( }, if Json_getInt( keyMap, - b"stretch\0" as *const u8 as *const c_char, + (b"stretch\0" as *const u8).cast::(), 0 as c_int, ) != 0 { @@ -20726,28 +22517,28 @@ unsafe extern "C" fn _spSkeletonJson_readAnimation( } time2_3 = Json_getFloat( nextMap, - b"time\0" as *const u8 as *const c_char, + (b"time\0" as *const u8).cast::(), 0 as c_int as c_float, ); mix2 = Json_getFloat( nextMap, - b"mix\0" as *const u8 as *const c_char, + (b"mix\0" as *const u8).cast::(), 1 as c_int as c_float, ); softness2 = Json_getFloat( nextMap, - b"softness\0" as *const u8 as *const c_char, + (b"softness\0" as *const u8).cast::(), 0 as c_int as c_float, ) * scale; - curve = Json_getItem(keyMap, b"curve\0" as *const u8 as *const c_char); + curve = Json_getItem(keyMap, (b"curve\0" as *const u8).cast::()); if !curve.is_null() { bezier = readCurve( curve, - &mut (*timeline_13).super_0, + &mut (*timeline_14).super_0, bezier, frame, 0 as c_int, - time_3, + time_4, time2_3, mix, mix2, @@ -20755,37 +22546,39 @@ unsafe extern "C" fn _spSkeletonJson_readAnimation( ); bezier = readCurve( curve, - &mut (*timeline_13).super_0, + &mut (*timeline_14).super_0, bezier, frame, 1 as c_int, - time_3, + time_4, time2_3, softness, softness2, scale, ); } - time_3 = time2_3; + time_4 = time2_3; mix = mix2; softness = softness2; keyMap = nextMap; frame += 1; } - spTimelineArray_add(timelines, &mut (*timeline_13).super_0.super_0); + spTimelineArray_add(timelines, &mut (*timeline_14).super_0.super_0); } constraintMap = (*constraintMap).next; } constraintMap = if !transform.is_null() { (*transform).child } else { - std::ptr::null_mut() + std::ptr::null_mut::() }; while !constraintMap.is_null() { - let mut constraint_0: *mut spTransformConstraintData = std::ptr::null_mut(); - let mut timeline_14: *mut spTransformConstraintTimeline = std::ptr::null_mut(); + let mut constraint_0: *mut spTransformConstraintData = + std::ptr::null_mut::(); + let mut timeline_15: *mut spTransformConstraintTimeline = + std::ptr::null_mut::(); let mut constraintIndex_0: c_int = 0; - let mut time_4: c_float = 0.; + let mut time_5: c_float = 0.; let mut mixRotate: c_float = 0.; let mut mixShearY: c_float = 0.; let mut mixX: c_float = 0.; @@ -20799,42 +22592,42 @@ unsafe extern "C" fn _spSkeletonJson_readAnimation( constraintIndex_0 = findTransformConstraintIndex(self_0, skeletonData, constraint_0, timelines); if constraintIndex_0 == -(1 as c_int) { - return std::ptr::null_mut(); + return std::ptr::null_mut::(); } - timeline_14 = spTransformConstraintTimeline_create( + timeline_15 = spTransformConstraintTimeline_create( (*constraintMap).size, (*constraintMap).size * 6 as c_int, constraintIndex_0, ); - time_4 = Json_getFloat( + time_5 = Json_getFloat( keyMap, - b"time\0" as *const u8 as *const c_char, + (b"time\0" as *const u8).cast::(), 0 as c_int as c_float, ); mixRotate = Json_getFloat( keyMap, - b"mixRotate\0" as *const u8 as *const c_char, + (b"mixRotate\0" as *const u8).cast::(), 1 as c_int as c_float, ); mixShearY = Json_getFloat( keyMap, - b"mixShearY\0" as *const u8 as *const c_char, + (b"mixShearY\0" as *const u8).cast::(), 1 as c_int as c_float, ); mixX = Json_getFloat( keyMap, - b"mixX\0" as *const u8 as *const c_char, + (b"mixX\0" as *const u8).cast::(), 1 as c_int as c_float, ); - mixY = Json_getFloat(keyMap, b"mixY\0" as *const u8 as *const c_char, mixX); + mixY = Json_getFloat(keyMap, (b"mixY\0" as *const u8).cast::(), mixX); mixScaleX = Json_getFloat( keyMap, - b"mixScaleX\0" as *const u8 as *const c_char, + (b"mixScaleX\0" as *const u8).cast::(), 1 as c_int as c_float, ); mixScaleY = Json_getFloat( keyMap, - b"mixScaleY\0" as *const u8 as *const c_char, + (b"mixScaleY\0" as *const u8).cast::(), mixScaleX, ); frame = 0 as c_int; @@ -20848,9 +22641,9 @@ unsafe extern "C" fn _spSkeletonJson_readAnimation( let mut mixScaleX2: c_float = 0.; let mut mixScaleY2: c_float = 0.; spTransformConstraintTimeline_setFrame( - timeline_14, + timeline_15, frame, - time_4, + time_5, mixRotate, mixX, mixY, @@ -20864,44 +22657,44 @@ unsafe extern "C" fn _spSkeletonJson_readAnimation( } time2_4 = Json_getFloat( nextMap, - b"time\0" as *const u8 as *const c_char, + (b"time\0" as *const u8).cast::(), 0 as c_int as c_float, ); mixRotate2 = Json_getFloat( nextMap, - b"mixRotate\0" as *const u8 as *const c_char, + (b"mixRotate\0" as *const u8).cast::(), 1 as c_int as c_float, ); mixShearY2 = Json_getFloat( nextMap, - b"mixShearY\0" as *const u8 as *const c_char, + (b"mixShearY\0" as *const u8).cast::(), 1 as c_int as c_float, ); mixX2 = Json_getFloat( nextMap, - b"mixX\0" as *const u8 as *const c_char, + (b"mixX\0" as *const u8).cast::(), 1 as c_int as c_float, ); - mixY2 = Json_getFloat(nextMap, b"mixY\0" as *const u8 as *const c_char, mixX2); + mixY2 = Json_getFloat(nextMap, (b"mixY\0" as *const u8).cast::(), mixX2); mixScaleX2 = Json_getFloat( nextMap, - b"mixScaleX\0" as *const u8 as *const c_char, + (b"mixScaleX\0" as *const u8).cast::(), 1 as c_int as c_float, ); mixScaleY2 = Json_getFloat( nextMap, - b"mixScaleY\0" as *const u8 as *const c_char, + (b"mixScaleY\0" as *const u8).cast::(), mixScaleX2, ); - curve = Json_getItem(keyMap, b"curve\0" as *const u8 as *const c_char); + curve = Json_getItem(keyMap, (b"curve\0" as *const u8).cast::()); if !curve.is_null() { bezier = readCurve( curve, - &mut (*timeline_14).super_0, + &mut (*timeline_15).super_0, bezier, frame, 0 as c_int, - time_4, + time_5, time2_4, mixRotate, mixRotate2, @@ -20909,11 +22702,11 @@ unsafe extern "C" fn _spSkeletonJson_readAnimation( ); bezier = readCurve( curve, - &mut (*timeline_14).super_0, + &mut (*timeline_15).super_0, bezier, frame, 1 as c_int, - time_4, + time_5, time2_4, mixX, mixX2, @@ -20921,11 +22714,11 @@ unsafe extern "C" fn _spSkeletonJson_readAnimation( ); bezier = readCurve( curve, - &mut (*timeline_14).super_0, + &mut (*timeline_15).super_0, bezier, frame, 2 as c_int, - time_4, + time_5, time2_4, mixY, mixY2, @@ -20933,11 +22726,11 @@ unsafe extern "C" fn _spSkeletonJson_readAnimation( ); bezier = readCurve( curve, - &mut (*timeline_14).super_0, + &mut (*timeline_15).super_0, bezier, frame, 3 as c_int, - time_4, + time_5, time2_4, mixScaleX, mixScaleX2, @@ -20945,11 +22738,11 @@ unsafe extern "C" fn _spSkeletonJson_readAnimation( ); bezier = readCurve( curve, - &mut (*timeline_14).super_0, + &mut (*timeline_15).super_0, bezier, frame, 4 as c_int, - time_4, + time_5, time2_4, mixScaleY, mixScaleY2, @@ -20957,18 +22750,18 @@ unsafe extern "C" fn _spSkeletonJson_readAnimation( ); bezier = readCurve( curve, - &mut (*timeline_14).super_0, + &mut (*timeline_15).super_0, bezier, frame, 5 as c_int, - time_4, + time_5, time2_4, mixShearY, mixShearY2, 1 as c_int as c_float, ); } - time_4 = time2_4; + time_5 = time2_4; mixRotate = mixRotate2; mixX = mixX2; mixY = mixY2; @@ -20978,14 +22771,14 @@ unsafe extern "C" fn _spSkeletonJson_readAnimation( keyMap = nextMap; frame += 1; } - spTimelineArray_add(timelines, &mut (*timeline_14).super_0.super_0); + spTimelineArray_add(timelines, &mut (*timeline_15).super_0.super_0); } constraintMap = (*constraintMap).next; } constraintMap = if !paths.is_null() { (*paths).child } else { - std::ptr::null_mut() + std::ptr::null_mut::() }; while !constraintMap.is_null() { let mut constraint_1: *mut spPathConstraintData = @@ -20993,20 +22786,20 @@ unsafe extern "C" fn _spSkeletonJson_readAnimation( let mut constraintIndex_1: c_int = findPathConstraintIndex(self_0, skeletonData, constraint_1, timelines); if constraintIndex_1 == -(1 as c_int) { - return std::ptr::null_mut(); + return std::ptr::null_mut::(); } timelineMap = (*constraintMap).child; while !timelineMap.is_null() { - let mut timelineName: *const c_char = std::ptr::null(); + let mut timelineName: *const c_char = std::ptr::null::(); let mut frames_1: c_int = 0; keyMap = (*timelineMap).child; if !keyMap.is_null() { frames_1 = (*timelineMap).size; timelineName = (*timelineMap).name; - if spine_strcmp(timelineName, b"position\0" as *const u8 as *const c_char) + if spine_strcmp(timelineName, (b"position\0" as *const u8).cast::()) == 0 as c_int { - let mut timeline_15: *mut spPathConstraintPositionTimeline = + let mut timeline_16: *mut spPathConstraintPositionTimeline = spPathConstraintPositionTimeline_create( frames_1, frames_1, @@ -21016,7 +22809,7 @@ unsafe extern "C" fn _spSkeletonJson_readAnimation( timelines, readTimelineJson( keyMap, - &mut (*timeline_15).super_0, + &mut (*timeline_16).super_0, 0 as c_int as c_float, if (*constraint_1).positionMode as c_uint == SP_POSITION_MODE_FIXED as c_int as c_uint @@ -21027,10 +22820,10 @@ unsafe extern "C" fn _spSkeletonJson_readAnimation( }, ), ); - } else if spine_strcmp(timelineName, b"spacing\0" as *const u8 as *const c_char) + } else if spine_strcmp(timelineName, (b"spacing\0" as *const u8).cast::()) == 0 as c_int { - let mut timeline_16: *mut spCurveTimeline1 = + let mut timeline_17: *mut spCurveTimeline1 = &mut (*(spPathConstraintSpacingTimeline_create as unsafe extern "C" fn( c_int, @@ -21047,7 +22840,7 @@ unsafe extern "C" fn _spSkeletonJson_readAnimation( timelines, readTimelineJson( keyMap, - timeline_16, + timeline_17, 0 as c_int as c_float, if (*constraint_1).spacingMode as c_uint == SP_SPACING_MODE_LENGTH as c_int as c_uint @@ -21060,32 +22853,32 @@ unsafe extern "C" fn _spSkeletonJson_readAnimation( }, ), ); - } else if spine_strcmp(timelineName, b"mix\0" as *const u8 as *const c_char) + } else if spine_strcmp(timelineName, (b"mix\0" as *const u8).cast::()) == 0 as c_int { - let mut timeline_17: *mut spPathConstraintMixTimeline = + let mut timeline_18: *mut spPathConstraintMixTimeline = spPathConstraintMixTimeline_create( frames_1, frames_1 * 3 as c_int, constraintIndex_1, ); - let mut time_5: c_float = Json_getFloat( + let mut time_6: c_float = Json_getFloat( keyMap, - b"time\0" as *const u8 as *const c_char, + (b"time\0" as *const u8).cast::(), 0 as c_int as c_float, ); let mut mixRotate_0: c_float = Json_getFloat( keyMap, - b"mixRotate\0" as *const u8 as *const c_char, + (b"mixRotate\0" as *const u8).cast::(), 1 as c_int as c_float, ); let mut mixX_0: c_float = Json_getFloat( keyMap, - b"mixX\0" as *const u8 as *const c_char, + (b"mixX\0" as *const u8).cast::(), 1 as c_int as c_float, ); let mut mixY_0: c_float = - Json_getFloat(keyMap, b"mixY\0" as *const u8 as *const c_char, mixX_0); + Json_getFloat(keyMap, (b"mixY\0" as *const u8).cast::(), mixX_0); frame = 0 as c_int; bezier = 0 as c_int; loop { @@ -21094,9 +22887,9 @@ unsafe extern "C" fn _spSkeletonJson_readAnimation( let mut mixX2_0: c_float = 0.; let mut mixY2_0: c_float = 0.; spPathConstraintMixTimeline_setFrame( - timeline_17, + timeline_18, frame, - time_5, + time_6, mixRotate_0, mixX_0, mixY_0, @@ -21107,33 +22900,33 @@ unsafe extern "C" fn _spSkeletonJson_readAnimation( } time2_5 = Json_getFloat( nextMap, - b"time\0" as *const u8 as *const c_char, + (b"time\0" as *const u8).cast::(), 0 as c_int as c_float, ); mixRotate2_0 = Json_getFloat( nextMap, - b"mixRotate\0" as *const u8 as *const c_char, + (b"mixRotate\0" as *const u8).cast::(), 1 as c_int as c_float, ); mixX2_0 = Json_getFloat( nextMap, - b"mixX\0" as *const u8 as *const c_char, + (b"mixX\0" as *const u8).cast::(), 1 as c_int as c_float, ); mixY2_0 = Json_getFloat( nextMap, - b"mixY\0" as *const u8 as *const c_char, + (b"mixY\0" as *const u8).cast::(), mixX2_0, ); - curve = Json_getItem(keyMap, b"curve\0" as *const u8 as *const c_char); + curve = Json_getItem(keyMap, (b"curve\0" as *const u8).cast::()); if !curve.is_null() { bezier = readCurve( curve, - &mut (*timeline_17).super_0, + &mut (*timeline_18).super_0, bezier, frame, 0 as c_int, - time_5, + time_6, time2_5, mixRotate_0, mixRotate2_0, @@ -21141,11 +22934,11 @@ unsafe extern "C" fn _spSkeletonJson_readAnimation( ); bezier = readCurve( curve, - &mut (*timeline_17).super_0, + &mut (*timeline_18).super_0, bezier, frame, 1 as c_int, - time_5, + time_6, time2_5, mixX_0, mixX2_0, @@ -21153,25 +22946,175 @@ unsafe extern "C" fn _spSkeletonJson_readAnimation( ); bezier = readCurve( curve, - &mut (*timeline_17).super_0, + &mut (*timeline_18).super_0, bezier, frame, 2 as c_int, - time_5, + time_6, time2_5, mixY_0, mixY2_0, 1 as c_int as c_float, ); } - time_5 = time2_5; + time_6 = time2_5; mixRotate_0 = mixRotate2_0; mixX_0 = mixX2_0; mixY_0 = mixY2_0; keyMap = nextMap; frame += 1; } - spTimelineArray_add(timelines, &mut (*timeline_17).super_0.super_0); + spTimelineArray_add(timelines, &mut (*timeline_18).super_0.super_0); + } + } + timelineMap = (*timelineMap).next; + } + constraintMap = (*constraintMap).next; + } + constraintMap = if !physics.is_null() { + (*physics).child + } else { + std::ptr::null_mut::() + }; + while !constraintMap.is_null() { + let mut index: c_int = -(1 as c_int); + if !((*constraintMap).name).is_null() + && spine_strlen((*constraintMap).name) > 0 as c_int as c_ulong + { + let mut constraint_2: *mut spPhysicsConstraintData = + spSkeletonData_findPhysicsConstraint(skeletonData, (*constraintMap).name); + index = findPhysicsConstraintIndex(self_0, skeletonData, constraint_2, timelines); + if index == -(1 as c_int) { + return std::ptr::null_mut::(); + } + } + let mut current_block_322: u64; + timelineMap = (*constraintMap).child; + while !timelineMap.is_null() { + keyMap = (*timelineMap).child; + if !keyMap.is_null() { + let mut timelineName_0: *const c_char = (*timelineMap).name; + let mut frames_2: c_int = (*timelineMap).size; + if spine_strcmp(timelineName_0, (b"reset\0" as *const u8).cast::()) + == 0 as c_int + { + let mut timeline_19: *mut spPhysicsConstraintResetTimeline = + spPhysicsConstraintResetTimeline_create(frames_2, index); + frame = 0 as c_int; + while !keyMap.is_null() { + spPhysicsConstraintResetTimeline_setFrame( + timeline_19, + frame, + Json_getFloat( + keyMap, + (b"time\0" as *const u8).cast::(), + 0 as c_int as c_float, + ), + ); + keyMap = (*keyMap).next; + frame += 1; + } + spTimelineArray_add(timelines, &mut (*timeline_19).super_0); + } else { + let mut timeline_20: *mut spPhysicsConstraintTimeline = + std::ptr::null_mut::(); + if spine_strcmp(timelineName_0, (b"inertia\0" as *const u8).cast::()) + == 0 as c_int + { + timeline_20 = spPhysicsConstraintTimeline_create( + frames_2, + frames_2, + index, + SP_TIMELINE_PHYSICSCONSTRAINT_INERTIA, + ); + current_block_322 = 2197125908392311113; + } else if spine_strcmp( + timelineName_0, + (b"strength\0" as *const u8).cast::(), + ) == 0 as c_int + { + timeline_20 = spPhysicsConstraintTimeline_create( + frames_2, + frames_2, + index, + SP_TIMELINE_PHYSICSCONSTRAINT_STRENGTH, + ); + current_block_322 = 2197125908392311113; + } else if spine_strcmp( + timelineName_0, + (b"damping\0" as *const u8).cast::(), + ) == 0 as c_int + { + timeline_20 = spPhysicsConstraintTimeline_create( + frames_2, + frames_2, + index, + SP_TIMELINE_PHYSICSCONSTRAINT_DAMPING, + ); + current_block_322 = 2197125908392311113; + } else if spine_strcmp( + timelineName_0, + (b"mass\0" as *const u8).cast::(), + ) == 0 as c_int + { + timeline_20 = spPhysicsConstraintTimeline_create( + frames_2, + frames_2, + index, + SP_TIMELINE_PHYSICSCONSTRAINT_MASS, + ); + current_block_322 = 2197125908392311113; + } else if spine_strcmp( + timelineName_0, + (b"wind\0" as *const u8).cast::(), + ) == 0 as c_int + { + timeline_20 = spPhysicsConstraintTimeline_create( + frames_2, + frames_2, + index, + SP_TIMELINE_PHYSICSCONSTRAINT_WIND, + ); + current_block_322 = 2197125908392311113; + } else if spine_strcmp( + timelineName_0, + (b"gravity\0" as *const u8).cast::(), + ) == 0 as c_int + { + timeline_20 = spPhysicsConstraintTimeline_create( + frames_2, + frames_2, + index, + SP_TIMELINE_PHYSICSCONSTRAINT_GRAVITY, + ); + current_block_322 = 2197125908392311113; + } else if spine_strcmp(timelineName_0, (b"mix\0" as *const u8).cast::()) + == 0 as c_int + { + timeline_20 = spPhysicsConstraintTimeline_create( + frames_2, + frames_2, + index, + SP_TIMELINE_PHYSICSCONSTRAINT_MIX, + ); + current_block_322 = 2197125908392311113; + } else { + current_block_322 = 2014163327383235100; + } + match current_block_322 { + 2014163327383235100 => {} + _ => { + spTimelineArray_add( + timelines, + readTimelineJson( + keyMap, + &mut (*timeline_20).super_0, + 0 as c_int as c_float, + 1 as c_int as c_float, + ), + ); + } + } } } timelineMap = (*timelineMap).next; @@ -21181,17 +23124,17 @@ unsafe extern "C" fn _spSkeletonJson_readAnimation( attachmentsMap = if !attachmentsJson.is_null() { (*attachmentsJson).child } else { - std::ptr::null_mut() + std::ptr::null_mut::() }; while !attachmentsMap.is_null() { let mut skin: *mut spSkin = spSkeletonData_findSkin(skeletonData, (*attachmentsMap).name); slotMap = (*attachmentsMap).child; while !slotMap.is_null() { - let mut attachmentMap: *mut Json = std::ptr::null_mut(); + let mut attachmentMap: *mut Json = std::ptr::null_mut::(); let mut slotIndex_0: c_int = findSlotIndex(self_0, skeletonData, (*slotMap).name, timelines); if slotIndex_0 == -(1 as c_int) { - return std::ptr::null_mut(); + return std::ptr::null_mut::(); } attachmentMap = (*slotMap).child; while !attachmentMap.is_null() { @@ -21201,32 +23144,34 @@ unsafe extern "C" fn _spSkeletonJson_readAnimation( cleanUpTimelines(timelines); _spSkeletonJson_setError( self_0, - std::ptr::null_mut(), - b"Attachment not found: \0" as *const u8 as *const c_char, + std::ptr::null_mut::(), + (b"Attachment not found: \0" as *const u8).cast::(), (*attachmentMap).name, ); - return std::ptr::null_mut(); + return std::ptr::null_mut::(); } timelineMap = (*attachmentMap).child; while !timelineMap.is_null() { - let mut frames_2: c_int = 0; - let mut timelineName_0: *const c_char = std::ptr::null(); + let mut frames_3: c_int = 0; + let mut timelineName_1: *const c_char = std::ptr::null::(); keyMap = (*timelineMap).child; if !keyMap.is_null() { - frames_2 = (*timelineMap).size; - timelineName_0 = (*timelineMap).name; - if spine_strcmp(b"deform\0" as *const u8 as *const c_char, timelineName_0) + frames_3 = (*timelineMap).size; + timelineName_1 = (*timelineMap).name; + if spine_strcmp((b"deform\0" as *const u8).cast::(), timelineName_1) == 0 { - let mut tempDeform: *mut c_float = std::ptr::null_mut(); + let mut tempDeform: *mut c_float = std::ptr::null_mut::(); let mut vertexAttachment: *mut spVertexAttachment = - std::ptr::null_mut(); + std::ptr::null_mut::(); let mut weighted: c_int = 0; let mut deformLength: c_int = 0; - let mut timeline_18: *mut spDeformTimeline = std::ptr::null_mut(); - let mut time_6: c_float = 0.; - vertexAttachment = baseAttachment as *mut spVertexAttachment; - weighted = ((*vertexAttachment).bones != std::ptr::null_mut()) as c_int; + let mut timeline_21: *mut spDeformTimeline = + std::ptr::null_mut::(); + let mut time_7: c_float = 0.; + vertexAttachment = baseAttachment.cast::(); + weighted = ((*vertexAttachment).bones != std::ptr::null_mut::()) + as c_int; deformLength = if weighted != 0 { (*vertexAttachment).verticesCount / 3 as c_int * 2 as c_int } else { @@ -21235,19 +23180,20 @@ unsafe extern "C" fn _spSkeletonJson_readAnimation( tempDeform = _spMalloc( (::core::mem::size_of::() as c_ulong) .wrapping_mul(deformLength as c_ulong), - b"spine.c\0" as *const u8 as *const c_char, - 11375 as c_int, - ) as *mut c_float; - timeline_18 = spDeformTimeline_create( + (b"spine.c\0" as *const u8).cast::(), + 12171 as c_int, + ) + .cast::(); + timeline_21 = spDeformTimeline_create( (*timelineMap).size, deformLength, (*timelineMap).size, slotIndex_0, vertexAttachment, ); - time_6 = Json_getFloat( + time_7 = Json_getFloat( keyMap, - b"time\0" as *const u8 as *const c_char, + (b"time\0" as *const u8).cast::(), 0 as c_int as c_float, ); frame = 0 as c_int; @@ -21255,15 +23201,15 @@ unsafe extern "C" fn _spSkeletonJson_readAnimation( loop { let mut vertices: *mut Json = Json_getItem( keyMap, - b"vertices\0" as *const u8 as *const c_char, + (b"vertices\0" as *const u8).cast::(), ); - let mut deform: *mut c_float = std::ptr::null_mut(); + let mut deform: *mut c_float = std::ptr::null_mut::(); let mut time2_6: c_float = 0.; if vertices.is_null() { if weighted != 0 { deform = tempDeform; spine_memset( - deform as *mut c_void, + deform.cast::(), 0 as c_int, (::core::mem::size_of::() as c_ulong) .wrapping_mul(deformLength as c_ulong), @@ -21275,13 +23221,13 @@ unsafe extern "C" fn _spSkeletonJson_readAnimation( let mut v: c_int = 0; let mut start: c_int = Json_getInt( keyMap, - b"offset\0" as *const u8 as *const c_char, + (b"offset\0" as *const u8).cast::(), 0 as c_int, ); - let mut vertex: *mut Json = std::ptr::null_mut(); + let mut vertex: *mut Json = std::ptr::null_mut::(); deform = tempDeform; spine_memset( - deform as *mut c_void, + deform.cast::(), 0 as c_int, (::core::mem::size_of::() as c_ulong) .wrapping_mul(start as c_ulong), @@ -21305,7 +23251,7 @@ unsafe extern "C" fn _spSkeletonJson_readAnimation( } } spine_memset( - deform.offset(v as isize) as *mut c_void, + deform.offset(v as isize).cast::(), 0 as c_int, (::core::mem::size_of::() as c_ulong) .wrapping_mul((deformLength - v) as c_ulong), @@ -21321,120 +23267,126 @@ unsafe extern "C" fn _spSkeletonJson_readAnimation( } } } - spDeformTimeline_setFrame(timeline_18, frame, time_6, deform); + spDeformTimeline_setFrame(timeline_21, frame, time_7, deform); nextMap = (*keyMap).next; if nextMap.is_null() { break; } time2_6 = Json_getFloat( nextMap, - b"time\0" as *const u8 as *const c_char, + (b"time\0" as *const u8).cast::(), 0 as c_int as c_float, ); - curve = - Json_getItem(keyMap, b"curve\0" as *const u8 as *const c_char); + curve = Json_getItem( + keyMap, + (b"curve\0" as *const u8).cast::(), + ); if !curve.is_null() { bezier = readCurve( curve, - &mut (*timeline_18).super_0, + &mut (*timeline_21).super_0, bezier, frame, 0 as c_int, - time_6, + time_7, time2_6, 0 as c_int as c_float, 1 as c_int as c_float, 1 as c_int as c_float, ); } - time_6 = time2_6; + time_7 = time2_6; keyMap = nextMap; frame += 1; } - _spFree(tempDeform as *mut c_void); - spTimelineArray_add(timelines, &mut (*timeline_18).super_0.super_0); + _spFree(tempDeform.cast::()); + spTimelineArray_add(timelines, &mut (*timeline_21).super_0.super_0); } else if spine_strcmp( - timelineName_0, - b"sequence\0" as *const u8 as *const c_char, + timelineName_1, + (b"sequence\0" as *const u8).cast::(), ) == 0 { - let mut timeline_19: *mut spSequenceTimeline = - spSequenceTimeline_create(frames_2, slotIndex_0, baseAttachment); + let mut timeline_22: *mut spSequenceTimeline = + spSequenceTimeline_create(frames_3, slotIndex_0, baseAttachment); let mut lastDelay: c_float = 0 as c_int as c_float; frame = 0 as c_int; while !keyMap.is_null() { let mut delay: c_float = Json_getFloat( keyMap, - b"delay\0" as *const u8 as *const c_char, + (b"delay\0" as *const u8).cast::(), lastDelay, ); - let mut time_7: c_float = Json_getFloat( + let mut time_8: c_float = Json_getFloat( keyMap, - b"time\0" as *const u8 as *const c_char, + (b"time\0" as *const u8).cast::(), 0 as c_int as c_float, ); let mut modeString: *const c_char = Json_getString( keyMap, - b"mode\0" as *const u8 as *const c_char, - b"hold\0" as *const u8 as *const c_char, + (b"mode\0" as *const u8).cast::(), + (b"hold\0" as *const u8).cast::(), ); - let mut index: c_int = Json_getInt( + let mut index_0: c_int = Json_getInt( keyMap, - b"index\0" as *const u8 as *const c_char, + (b"index\0" as *const u8).cast::(), 0 as c_int, ); let mut mode: c_int = 0 as c_int; - if spine_strcmp(modeString, b"once\0" as *const u8 as *const c_char) - == 0 + if spine_strcmp( + modeString, + (b"once\0" as *const u8).cast::(), + ) == 0 { mode = 1 as c_int; } - if spine_strcmp(modeString, b"loop\0" as *const u8 as *const c_char) - == 0 + if spine_strcmp( + modeString, + (b"loop\0" as *const u8).cast::(), + ) == 0 { mode = 2 as c_int; } if spine_strcmp( modeString, - b"pingpong\0" as *const u8 as *const c_char, + (b"pingpong\0" as *const u8).cast::(), ) == 0 { mode = 3 as c_int; } if spine_strcmp( modeString, - b"onceReverse\0" as *const u8 as *const c_char, + (b"onceReverse\0" as *const u8).cast::(), ) == 0 { mode = 4 as c_int; } if spine_strcmp( modeString, - b"loopReverse\0" as *const u8 as *const c_char, + (b"loopReverse\0" as *const u8).cast::(), ) == 0 { mode = 5 as c_int; } if spine_strcmp( modeString, - b"pingpongReverse\0" as *const u8 as *const c_char, + (b"pingpongReverse\0" as *const u8).cast::(), ) == 0 { mode = 6 as c_int; } spSequenceTimeline_setFrame( - timeline_19, + timeline_22, frame, - time_7, + time_8, mode, - index, + index_0, delay, ); lastDelay = delay; keyMap = (*keyMap).next; frame += 1; } - spTimelineArray_add(timelines, &mut (*timeline_19).super_0); + spTimelineArray_add(timelines, &mut (*timeline_22).super_0); } } timelineMap = (*timelineMap).next; @@ -21446,31 +23398,33 @@ unsafe extern "C" fn _spSkeletonJson_readAnimation( attachmentsMap = (*attachmentsMap).next; } if !drawOrderJson.is_null() { - let mut timeline_20: *mut spDrawOrderTimeline = + let mut timeline_23: *mut spDrawOrderTimeline = spDrawOrderTimeline_create((*drawOrderJson).size, (*skeletonData).slotsCount); keyMap = (*drawOrderJson).child; frame = 0 as c_int; while !keyMap.is_null() { let mut ii: c_int = 0; - let mut drawOrder: *mut c_int = std::ptr::null_mut(); + let mut drawOrder: *mut c_int = std::ptr::null_mut::(); let mut offsets: *mut Json = - Json_getItem(keyMap, b"offsets\0" as *const u8 as *const c_char); + Json_getItem(keyMap, (b"offsets\0" as *const u8).cast::()); if !offsets.is_null() { - let mut offsetMap: *mut Json = std::ptr::null_mut(); + let mut offsetMap: *mut Json = std::ptr::null_mut::(); let mut unchanged: *mut c_int = _spMalloc( (::core::mem::size_of::() as c_ulong) .wrapping_mul(((*skeletonData).slotsCount - (*offsets).size) as c_ulong), - b"spine.c\0" as *const u8 as *const c_char, - 11463 as c_int, - ) as *mut c_int; + (b"spine.c\0" as *const u8).cast::(), + 12259 as c_int, + ) + .cast::(); let mut originalIndex: c_int = 0 as c_int; let mut unchangedIndex: c_int = 0 as c_int; drawOrder = _spMalloc( (::core::mem::size_of::() as c_ulong) .wrapping_mul((*skeletonData).slotsCount as c_ulong), - b"spine.c\0" as *const u8 as *const c_char, - 11466 as c_int, - ) as *mut c_int; + (b"spine.c\0" as *const u8).cast::(), + 12262 as c_int, + ) + .cast::(); ii = (*skeletonData).slotsCount - 1 as c_int; while ii >= 0 as c_int { *drawOrder.offset(ii as isize) = -(1 as c_int); @@ -21483,26 +23437,26 @@ unsafe extern "C" fn _spSkeletonJson_readAnimation( skeletonData, Json_getString( offsetMap, - b"slot\0" as *const u8 as *const c_char, - std::ptr::null(), + (b"slot\0" as *const u8).cast::(), + std::ptr::null::(), ), timelines, ); if slotIndex_1 == -(1 as c_int) { - return std::ptr::null_mut(); + return std::ptr::null_mut::(); } while originalIndex != slotIndex_1 { - let fresh175 = originalIndex; - originalIndex = originalIndex + 1; - let fresh176 = unchangedIndex; - unchangedIndex = unchangedIndex + 1; - *unchanged.offset(fresh176 as isize) = fresh175; + let fresh131 = originalIndex; + originalIndex += 1; + let fresh132 = unchangedIndex; + unchangedIndex += 1; + *unchanged.offset(fresh132 as isize) = fresh131; } *drawOrder.offset( (originalIndex + Json_getInt( offsetMap, - b"offset\0" as *const u8 as *const c_char, + (b"offset\0" as *const u8).cast::(), 0 as c_int, )) as isize, ) = originalIndex; @@ -21510,11 +23464,11 @@ unsafe extern "C" fn _spSkeletonJson_readAnimation( offsetMap = (*offsetMap).next; } while originalIndex < (*skeletonData).slotsCount { - let fresh177 = originalIndex; - originalIndex = originalIndex + 1; - let fresh178 = unchangedIndex; - unchangedIndex = unchangedIndex + 1; - *unchanged.offset(fresh178 as isize) = fresh177; + let fresh133 = originalIndex; + originalIndex += 1; + let fresh134 = unchangedIndex; + unchangedIndex += 1; + *unchanged.offset(fresh134 as isize) = fresh133; } ii = (*skeletonData).slotsCount - 1 as c_int; while ii >= 0 as c_int { @@ -21524,105 +23478,104 @@ unsafe extern "C" fn _spSkeletonJson_readAnimation( } ii -= 1; } - _spFree(unchanged as *mut c_void); + _spFree(unchanged.cast::()); } spDrawOrderTimeline_setFrame( - timeline_20, + timeline_23, frame, Json_getFloat( keyMap, - b"time\0" as *const u8 as *const c_char, + (b"time\0" as *const u8).cast::(), 0 as c_int as c_float, ), drawOrder, ); - _spFree(drawOrder as *mut c_void); + _spFree(drawOrder.cast::()); keyMap = (*keyMap).next; frame += 1; } - spTimelineArray_add(timelines, &mut (*timeline_20).super_0); + spTimelineArray_add(timelines, &mut (*timeline_23).super_0); } if !events.is_null() { - let mut timeline_21: *mut spEventTimeline = spEventTimeline_create((*events).size); + let mut timeline_24: *mut spEventTimeline = spEventTimeline_create((*events).size); keyMap = (*events).child; frame = 0 as c_int; while !keyMap.is_null() { - let mut event: *mut spEvent = std::ptr::null_mut(); - let mut stringValue: *const c_char = std::ptr::null(); + let mut event: *mut spEvent = std::ptr::null_mut::(); + let mut stringValue: *const c_char = std::ptr::null::(); let mut eventData: *mut spEventData = spSkeletonData_findEvent( skeletonData, Json_getString( keyMap, - b"name\0" as *const u8 as *const c_char, - std::ptr::null(), + (b"name\0" as *const u8).cast::(), + std::ptr::null::(), ), ); if eventData.is_null() { cleanUpTimelines(timelines); _spSkeletonJson_setError( self_0, - std::ptr::null_mut(), - b"Event not found: \0" as *const u8 as *const c_char, + std::ptr::null_mut::(), + (b"Event not found: \0" as *const u8).cast::(), Json_getString( keyMap, - b"name\0" as *const u8 as *const c_char, - std::ptr::null(), + (b"name\0" as *const u8).cast::(), + std::ptr::null::(), ), ); - return std::ptr::null_mut(); + return std::ptr::null_mut::(); } event = spEvent_create( Json_getFloat( keyMap, - b"time\0" as *const u8 as *const c_char, + (b"time\0" as *const u8).cast::(), 0 as c_int as c_float, ), eventData, ); (*event).intValue = Json_getInt( keyMap, - b"int\0" as *const u8 as *const c_char, + (b"int\0" as *const u8).cast::(), (*eventData).intValue, ); (*event).floatValue = Json_getFloat( keyMap, - b"float\0" as *const u8 as *const c_char, + (b"float\0" as *const u8).cast::(), (*eventData).floatValue, ); stringValue = Json_getString( keyMap, - b"string\0" as *const u8 as *const c_char, + (b"string\0" as *const u8).cast::(), (*eventData).stringValue, ); if !stringValue.is_null() { - let ref mut fresh179 = - *(&mut (*event).stringValue as *mut *const c_char as *mut *mut c_char); - *fresh179 = _spMalloc( + (*event).stringValue = _spMalloc( (::core::mem::size_of::() as c_ulong).wrapping_mul( (spine_strlen(stringValue)).wrapping_add(1 as c_int as c_ulong), ), - b"spine.c\0" as *const u8 as *const c_char, - 11512 as c_int, - ) as *mut c_char; - spine_strcpy(*fresh179, stringValue); + (b"spine.c\0" as *const u8).cast::(), + 12308 as c_int, + ) + .cast::(); + spine_strcpy((*event).stringValue, stringValue); } if !((*eventData).audioPath).is_null() { (*event).volume = Json_getFloat( keyMap, - b"volume\0" as *const u8 as *const c_char, + (b"volume\0" as *const u8).cast::(), 1 as c_int as c_float, ); (*event).balance = Json_getFloat( keyMap, - b"volume\0" as *const u8 as *const c_char, + (b"volume\0" as *const u8).cast::(), 0 as c_int as c_float, ); } - spEventTimeline_setFrame(timeline_21, frame, event); + spEventTimeline_setFrame(timeline_24, frame, event); keyMap = (*keyMap).next; frame += 1; } - spTimelineArray_add(timelines, &mut (*timeline_21).super_0); + spTimelineArray_add(timelines, &mut (*timeline_24).super_0); } duration = 0 as c_int as c_float; i = 0 as c_int; @@ -21635,7 +23588,7 @@ unsafe extern "C" fn _spSkeletonJson_readAnimation( }; i += 1; } - return spAnimation_create((*root).name, timelines, duration); + spAnimation_create((*root).name, timelines, duration) } unsafe extern "C" fn _readVerticesJson( mut self_0: *mut spSkeletonJson, @@ -21643,22 +23596,23 @@ unsafe extern "C" fn _readVerticesJson( mut attachment: *mut spVertexAttachment, mut verticesLength: c_int, ) { - let mut entry: *mut Json = std::ptr::null_mut(); - let mut vertices: *mut c_float = std::ptr::null_mut(); + let mut entry: *mut Json = std::ptr::null_mut::(); + let mut vertices: *mut c_float = std::ptr::null_mut::(); let mut i: c_int = 0; let mut n: c_int = 0; let mut nn: c_int = 0; let mut entrySize: c_int = 0; - let mut weights: *mut spFloatArray = std::ptr::null_mut(); - let mut bones: *mut spIntArray = std::ptr::null_mut(); + let mut weights: *mut spFloatArray = std::ptr::null_mut::(); + let mut bones: *mut spIntArray = std::ptr::null_mut::(); (*attachment).worldVerticesLength = verticesLength; - entry = Json_getItem(attachmentMap, b"vertices\0" as *const u8 as *const c_char); + entry = Json_getItem(attachmentMap, (b"vertices\0" as *const u8).cast::()); entrySize = (*entry).size; vertices = _spMalloc( (::core::mem::size_of::() as c_ulong).wrapping_mul(entrySize as c_ulong), - b"spine.c\0" as *const u8 as *const c_char, - 11540 as c_int, - ) as *mut c_float; + (b"spine.c\0" as *const u8).cast::(), + 12336 as c_int, + ) + .cast::(); entry = (*entry).child; i = 0 as c_int; while !entry.is_null() { @@ -21677,7 +23631,7 @@ unsafe extern "C" fn _readVerticesJson( (*attachment).verticesCount = verticesLength; (*attachment).vertices = vertices; (*attachment).bonesCount = 0 as c_int; - (*attachment).bones = std::ptr::null_mut(); + (*attachment).bones = std::ptr::null_mut::(); return; } weights = spFloatArray_create(verticesLength * 3 as c_int * 3 as c_int); @@ -21685,9 +23639,9 @@ unsafe extern "C" fn _readVerticesJson( i = 0 as c_int; n = entrySize; while i < n { - let fresh180 = i; - i = i + 1; - let mut boneCount: c_int = *vertices.offset(fresh180 as isize) as c_int; + let fresh135 = i; + i += 1; + let mut boneCount: c_int = *vertices.offset(fresh135 as isize) as c_int; spIntArray_add(bones, boneCount); nn = i + boneCount * 4 as c_int; while i < nn { @@ -21706,11 +23660,11 @@ unsafe extern "C" fn _readVerticesJson( } (*attachment).verticesCount = (*weights).size; (*attachment).vertices = (*weights).items; - _spFree(weights as *mut c_void); + _spFree(weights.cast::()); (*attachment).bonesCount = (*bones).size; (*attachment).bones = (*bones).items; - _spFree(bones as *mut c_void); - _spFree(vertices as *mut c_void); + _spFree(bones.cast::()); + _spFree(vertices.cast::()); } #[no_mangle] pub unsafe extern "C" fn spSkeletonJson_readSkeletonDataFile( @@ -21718,20 +23672,20 @@ pub unsafe extern "C" fn spSkeletonJson_readSkeletonDataFile( mut path: *const c_char, ) -> *mut spSkeletonData { let mut length: c_int = 0; - let mut skeletonData: *mut spSkeletonData = std::ptr::null_mut(); + let mut skeletonData: *mut spSkeletonData = std::ptr::null_mut::(); let mut json: *const c_char = _spUtil_readFile(path, &mut length); if length == 0 as c_int || json.is_null() { _spSkeletonJson_setError( self_0, - std::ptr::null_mut(), - b"Unable to read skeleton file: \0" as *const u8 as *const c_char, + std::ptr::null_mut::(), + (b"Unable to read skeleton file: \0" as *const u8).cast::(), path, ); - return std::ptr::null_mut(); + return std::ptr::null_mut::(); } skeletonData = spSkeletonJson_readSkeletonData(self_0, json); _spFree(json as *mut c_void); - return skeletonData; + skeletonData } unsafe extern "C" fn string_starts_with_json( mut str: *const c_char, @@ -21755,7 +23709,7 @@ unsafe extern "C" fn string_starts_with_json( } i += 1; } - return -(1 as c_int); + -(1 as c_int) } #[no_mangle] pub unsafe extern "C" fn spSkeletonJson_readSkeletonData( @@ -21764,181 +23718,186 @@ pub unsafe extern "C" fn spSkeletonJson_readSkeletonData( ) -> *mut spSkeletonData { let mut i: c_int = 0; let mut ii: c_int = 0; - let mut skeletonData: *mut spSkeletonData = std::ptr::null_mut(); - let mut root: *mut Json = std::ptr::null_mut(); - let mut skeleton: *mut Json = std::ptr::null_mut(); - let mut bones: *mut Json = std::ptr::null_mut(); - let mut boneMap: *mut Json = std::ptr::null_mut(); - let mut ik: *mut Json = std::ptr::null_mut(); - let mut transform: *mut Json = std::ptr::null_mut(); - let mut pathJson: *mut Json = std::ptr::null_mut(); - let mut slots: *mut Json = std::ptr::null_mut(); - let mut skins: *mut Json = std::ptr::null_mut(); - let mut animations: *mut Json = std::ptr::null_mut(); - let mut events: *mut Json = std::ptr::null_mut(); - let mut internal: *mut _spSkeletonJson = self_0 as *mut _spSkeletonJson; - _spFree((*self_0).error as *mut c_void); - let ref mut fresh181 = *(&mut (*self_0).error as *mut *mut c_char); - *fresh181 = std::ptr::null_mut(); + let mut skeletonData: *mut spSkeletonData = std::ptr::null_mut::(); + let mut root: *mut Json = std::ptr::null_mut::(); + let mut skeleton: *mut Json = std::ptr::null_mut::(); + let mut bones: *mut Json = std::ptr::null_mut::(); + let mut boneMap: *mut Json = std::ptr::null_mut::(); + let mut ik: *mut Json = std::ptr::null_mut::(); + let mut transform: *mut Json = std::ptr::null_mut::(); + let mut pathJson: *mut Json = std::ptr::null_mut::(); + let mut physics: *mut Json = std::ptr::null_mut::(); + let mut slots: *mut Json = std::ptr::null_mut::(); + let mut skins: *mut Json = std::ptr::null_mut::(); + let mut animations: *mut Json = std::ptr::null_mut::(); + let mut events: *mut Json = std::ptr::null_mut::(); + let mut internal: *mut _spSkeletonJson = self_0.cast::<_spSkeletonJson>(); + _spFree((*self_0).error.cast::()); + (*self_0).error = std::ptr::null_mut::(); (*internal).linkedMeshCount = 0 as c_int; root = Json_create(json); if root.is_null() { _spSkeletonJson_setError( self_0, - std::ptr::null_mut(), - b"Invalid skeleton JSON: \0" as *const u8 as *const c_char, + std::ptr::null_mut::(), + (b"Invalid skeleton JSON: \0" as *const u8).cast::(), Json_getError(), ); - return std::ptr::null_mut(); + return std::ptr::null_mut::(); } skeletonData = spSkeletonData_create(); - skeleton = Json_getItem(root, b"skeleton\0" as *const u8 as *const c_char); + skeleton = Json_getItem(root, (b"skeleton\0" as *const u8).cast::()); if !skeleton.is_null() { - let ref mut fresh182 = - *(&mut (*skeletonData).hash as *mut *const c_char as *mut *mut c_char); - *fresh182 = _spMalloc( + (*skeletonData).hash = _spMalloc( (::core::mem::size_of::() as c_ulong).wrapping_mul( (spine_strlen(Json_getString( skeleton, - b"hash\0" as *const u8 as *const c_char, - b"0\0" as *const u8 as *const c_char, + (b"hash\0" as *const u8).cast::(), + (b"0\0" as *const u8).cast::(), ))) .wrapping_add(1 as c_int as c_ulong), ), - b"spine.c\0" as *const u8 as *const c_char, - 11625 as c_int, - ) as *mut c_char; + (b"spine.c\0" as *const u8).cast::(), + 12449 as c_int, + ) + .cast::(); spine_strcpy( - *fresh182, + (*skeletonData).hash, Json_getString( skeleton, - b"hash\0" as *const u8 as *const c_char, - b"0\0" as *const u8 as *const c_char, + (b"hash\0" as *const u8).cast::(), + (b"0\0" as *const u8).cast::(), ), ); - let ref mut fresh183 = - *(&mut (*skeletonData).version as *mut *const c_char as *mut *mut c_char); - *fresh183 = _spMalloc( + (*skeletonData).version = _spMalloc( (::core::mem::size_of::() as c_ulong).wrapping_mul( (spine_strlen(Json_getString( skeleton, - b"spine\0" as *const u8 as *const c_char, - b"0\0" as *const u8 as *const c_char, + (b"spine\0" as *const u8).cast::(), + (b"0\0" as *const u8).cast::(), ))) .wrapping_add(1 as c_int as c_ulong), ), - b"spine.c\0" as *const u8 as *const c_char, - 11626 as c_int, - ) as *mut c_char; + (b"spine.c\0" as *const u8).cast::(), + 12450 as c_int, + ) + .cast::(); spine_strcpy( - *fresh183, + (*skeletonData).version, Json_getString( skeleton, - b"spine\0" as *const u8 as *const c_char, - b"0\0" as *const u8 as *const c_char, + (b"spine\0" as *const u8).cast::(), + (b"0\0" as *const u8).cast::(), ), ); if string_starts_with_json( (*skeletonData).version, - b"4.1\0" as *const u8 as *const c_char, + (b"4.2\0" as *const u8).cast::(), ) == 0 { let mut errorMsg: [c_char; 255] = [0; 255]; - spine_sprintf!( + spine_snprintf!( errorMsg.as_mut_ptr(), - b"Skeleton version %s does not match runtime version %s\0" as *const u8 - as *const c_char, + 255 as c_int as size_t, + (b"Skeleton version %s does not match runtime version %s\0" as *const u8) + .cast::(), (*skeletonData).version, - b"4.1\0" as *const u8 as *const c_char, + (b"4.2\0" as *const u8).cast::(), ); _spSkeletonJson_setError( self_0, - std::ptr::null_mut(), + std::ptr::null_mut::(), errorMsg.as_mut_ptr(), - std::ptr::null(), + std::ptr::null::(), ); - return std::ptr::null_mut(); + return std::ptr::null_mut::(); } (*skeletonData).x = Json_getFloat( skeleton, - b"x\0" as *const u8 as *const c_char, + (b"x\0" as *const u8).cast::(), 0 as c_int as c_float, ); (*skeletonData).y = Json_getFloat( skeleton, - b"y\0" as *const u8 as *const c_char, + (b"y\0" as *const u8).cast::(), 0 as c_int as c_float, ); (*skeletonData).width = Json_getFloat( skeleton, - b"width\0" as *const u8 as *const c_char, + (b"width\0" as *const u8).cast::(), 0 as c_int as c_float, ); (*skeletonData).height = Json_getFloat( skeleton, - b"height\0" as *const u8 as *const c_char, + (b"height\0" as *const u8).cast::(), 0 as c_int as c_float, ); + (*skeletonData).referenceScale = Json_getFloat( + skeleton, + (b"referenceScale\0" as *const u8).cast::(), + 100 as c_int as c_float, + ) * (*self_0).scale; (*skeletonData).fps = Json_getFloat( skeleton, - b"fps\0" as *const u8 as *const c_char, + (b"fps\0" as *const u8).cast::(), 30 as c_int as c_float, ); (*skeletonData).imagesPath = Json_getString( skeleton, - b"images\0" as *const u8 as *const c_char, - std::ptr::null(), + (b"images\0" as *const u8).cast::(), + std::ptr::null::(), ); if !((*skeletonData).imagesPath).is_null() { - let mut tmp: *mut c_char = std::ptr::null_mut(); - let ref mut fresh184 = *(&mut tmp as *mut *mut c_char); - *fresh184 = _spMalloc( + let mut tmp: *mut c_char = std::ptr::null_mut::(); + tmp = _spMalloc( (::core::mem::size_of::() as c_ulong).wrapping_mul( (spine_strlen((*skeletonData).imagesPath)).wrapping_add(1 as c_int as c_ulong), ), - b"spine.c\0" as *const u8 as *const c_char, - 11641 as c_int, - ) as *mut c_char; - spine_strcpy(*fresh184, (*skeletonData).imagesPath); + (b"spine.c\0" as *const u8).cast::(), + 12466 as c_int, + ) + .cast::(); + spine_strcpy(tmp, (*skeletonData).imagesPath); (*skeletonData).imagesPath = tmp; } (*skeletonData).audioPath = Json_getString( skeleton, - b"audio\0" as *const u8 as *const c_char, - std::ptr::null(), + (b"audio\0" as *const u8).cast::(), + std::ptr::null::(), ); if !((*skeletonData).audioPath).is_null() { - let mut tmp_0: *mut c_char = std::ptr::null_mut(); - let ref mut fresh185 = *(&mut tmp_0 as *mut *mut c_char); - *fresh185 = _spMalloc( + let mut tmp_0: *mut c_char = std::ptr::null_mut::(); + tmp_0 = _spMalloc( (::core::mem::size_of::() as c_ulong).wrapping_mul( (spine_strlen((*skeletonData).audioPath)).wrapping_add(1 as c_int as c_ulong), ), - b"spine.c\0" as *const u8 as *const c_char, - 11647 as c_int, - ) as *mut c_char; - spine_strcpy(*fresh185, (*skeletonData).audioPath); + (b"spine.c\0" as *const u8).cast::(), + 12472 as c_int, + ) + .cast::(); + spine_strcpy(tmp_0, (*skeletonData).audioPath); (*skeletonData).audioPath = tmp_0; } } - bones = Json_getItem(root, b"bones\0" as *const u8 as *const c_char); + bones = Json_getItem(root, (b"bones\0" as *const u8).cast::()); (*skeletonData).bones = _spMalloc( (::core::mem::size_of::<*mut spBoneData>() as c_ulong) .wrapping_mul((*bones).size as c_ulong), - b"spine.c\0" as *const u8 as *const c_char, - 11654 as c_int, - ) as *mut *mut spBoneData; + (b"spine.c\0" as *const u8).cast::(), + 12479 as c_int, + ) + .cast::<*mut spBoneData>(); boneMap = (*bones).child; i = 0 as c_int; while !boneMap.is_null() { - let mut data: *mut spBoneData = std::ptr::null_mut(); - let mut transformMode: *const c_char = std::ptr::null(); - let mut color: *const c_char = std::ptr::null(); - let mut parent: *mut spBoneData = std::ptr::null_mut(); + let mut data: *mut spBoneData = std::ptr::null_mut::(); + let mut inherit: *const c_char = std::ptr::null::(); + let mut color: *const c_char = std::ptr::null::(); + let mut parent: *mut spBoneData = std::ptr::null_mut::(); let mut parentName: *const c_char = Json_getString( boneMap, - b"parent\0" as *const u8 as *const c_char, - std::ptr::null(), + (b"parent\0" as *const u8).cast::(), + std::ptr::null::(), ); if !parentName.is_null() { parent = spSkeletonData_findBone(skeletonData, parentName); @@ -21947,133 +23906,164 @@ pub unsafe extern "C" fn spSkeletonJson_readSkeletonData( _spSkeletonJson_setError( self_0, root, - b"Parent bone not found: \0" as *const u8 as *const c_char, + (b"Parent bone not found: \0" as *const u8).cast::(), parentName, ); - return std::ptr::null_mut(); + return std::ptr::null_mut::(); } } data = spBoneData_create( (*skeletonData).bonesCount, Json_getString( boneMap, - b"name\0" as *const u8 as *const c_char, - std::ptr::null(), + (b"name\0" as *const u8).cast::(), + std::ptr::null::(), ), parent, ); (*data).length = Json_getFloat( boneMap, - b"length\0" as *const u8 as *const c_char, + (b"length\0" as *const u8).cast::(), 0 as c_int as c_float, ) * (*self_0).scale; (*data).x = Json_getFloat( boneMap, - b"x\0" as *const u8 as *const c_char, + (b"x\0" as *const u8).cast::(), 0 as c_int as c_float, ) * (*self_0).scale; (*data).y = Json_getFloat( boneMap, - b"y\0" as *const u8 as *const c_char, + (b"y\0" as *const u8).cast::(), 0 as c_int as c_float, ) * (*self_0).scale; (*data).rotation = Json_getFloat( boneMap, - b"rotation\0" as *const u8 as *const c_char, + (b"rotation\0" as *const u8).cast::(), 0 as c_int as c_float, ); (*data).scaleX = Json_getFloat( boneMap, - b"scaleX\0" as *const u8 as *const c_char, + (b"scaleX\0" as *const u8).cast::(), 1 as c_int as c_float, ); (*data).scaleY = Json_getFloat( boneMap, - b"scaleY\0" as *const u8 as *const c_char, + (b"scaleY\0" as *const u8).cast::(), 1 as c_int as c_float, ); (*data).shearX = Json_getFloat( boneMap, - b"shearX\0" as *const u8 as *const c_char, + (b"shearX\0" as *const u8).cast::(), 0 as c_int as c_float, ); (*data).shearY = Json_getFloat( boneMap, - b"shearY\0" as *const u8 as *const c_char, + (b"shearY\0" as *const u8).cast::(), 0 as c_int as c_float, ); - transformMode = Json_getString( + inherit = Json_getString( boneMap, - b"transform\0" as *const u8 as *const c_char, - b"normal\0" as *const u8 as *const c_char, + (b"inherit\0" as *const u8).cast::(), + (b"normal\0" as *const u8).cast::(), ); - (*data).transformMode = SP_TRANSFORMMODE_NORMAL; - if spine_strcmp(transformMode, b"normal\0" as *const u8 as *const c_char) == 0 as c_int { - (*data).transformMode = SP_TRANSFORMMODE_NORMAL; + (*data).inherit = SP_INHERIT_NORMAL; + if spine_strcmp(inherit, (b"normal\0" as *const u8).cast::()) == 0 as c_int { + (*data).inherit = SP_INHERIT_NORMAL; } else if spine_strcmp( - transformMode, - b"onlyTranslation\0" as *const u8 as *const c_char, + inherit, + (b"onlyTranslation\0" as *const u8).cast::(), ) == 0 as c_int { - (*data).transformMode = SP_TRANSFORMMODE_ONLYTRANSLATION; + (*data).inherit = SP_INHERIT_ONLYTRANSLATION; } else if spine_strcmp( - transformMode, - b"noRotationOrReflection\0" as *const u8 as *const c_char, + inherit, + (b"noRotationOrReflection\0" as *const u8).cast::(), ) == 0 as c_int { - (*data).transformMode = SP_TRANSFORMMODE_NOROTATIONORREFLECTION; - } else if spine_strcmp(transformMode, b"noScale\0" as *const u8 as *const c_char) - == 0 as c_int + (*data).inherit = SP_INHERIT_NOROTATIONORREFLECTION; + } else if spine_strcmp(inherit, (b"noScale\0" as *const u8).cast::()) == 0 as c_int { - (*data).transformMode = SP_TRANSFORMMODE_NOSCALE; + (*data).inherit = SP_INHERIT_NOSCALE; } else if spine_strcmp( - transformMode, - b"noScaleOrReflection\0" as *const u8 as *const c_char, + inherit, + (b"noScaleOrReflection\0" as *const u8).cast::(), ) == 0 as c_int { - (*data).transformMode = SP_TRANSFORMMODE_NOSCALEORREFLECTION; + (*data).inherit = SP_INHERIT_NOSCALEORREFLECTION; } - (*data).skinRequired = - if Json_getInt(boneMap, b"skin\0" as *const u8 as *const c_char, 0 as c_int) != 0 { - 1 as c_int - } else { - 0 as c_int - }; + (*data).skinRequired = if Json_getInt( + boneMap, + (b"skin\0" as *const u8).cast::(), + 0 as c_int, + ) != 0 + { + 1 as c_int + } else { + 0 as c_int + }; color = Json_getString( boneMap, - b"color\0" as *const u8 as *const c_char, - std::ptr::null(), + (b"color\0" as *const u8).cast::(), + std::ptr::null::(), ); if !color.is_null() { toColor2(&mut (*data).color, color, -(1 as c_int)); } - let ref mut fresh186 = *((*skeletonData).bones).offset(i as isize); - *fresh186 = data; + (*data).icon = Json_getString( + boneMap, + (b"icon\0" as *const u8).cast::(), + (b"\0" as *const u8).cast::(), + ); + if !((*data).icon).is_null() { + let mut tmp_1: *mut c_char = std::ptr::null_mut::(); + tmp_1 = _spMalloc( + (::core::mem::size_of::() as c_ulong) + .wrapping_mul((spine_strlen((*data).icon)).wrapping_add(1 as c_int as c_ulong)), + (b"spine.c\0" as *const u8).cast::(), + 12524 as c_int, + ) + .cast::(); + spine_strcpy(tmp_1, (*data).icon); + (*data).icon = tmp_1; + } + (*data).visible = if Json_getInt( + boneMap, + (b"visible\0" as *const u8).cast::(), + -(1 as c_int), + ) != 0 + { + -(1 as c_int) + } else { + 0 as c_int + }; + let fresh136 = &mut (*((*skeletonData).bones).offset(i as isize)); + *fresh136 = data; (*skeletonData).bonesCount += 1; boneMap = (*boneMap).next; i += 1; } - slots = Json_getItem(root, b"slots\0" as *const u8 as *const c_char); + slots = Json_getItem(root, (b"slots\0" as *const u8).cast::()); if !slots.is_null() { - let mut slotMap: *mut Json = std::ptr::null_mut(); + let mut slotMap: *mut Json = std::ptr::null_mut::(); (*skeletonData).slotsCount = (*slots).size; (*skeletonData).slots = _spMalloc( (::core::mem::size_of::<*mut spSlotData>() as c_ulong) .wrapping_mul((*slots).size as c_ulong), - b"spine.c\0" as *const u8 as *const c_char, - 11705 as c_int, - ) as *mut *mut spSlotData; + (b"spine.c\0" as *const u8).cast::(), + 12538 as c_int, + ) + .cast::<*mut spSlotData>(); slotMap = (*slots).child; i = 0 as c_int; while !slotMap.is_null() { - let mut data_0: *mut spSlotData = std::ptr::null_mut(); - let mut color_0: *const c_char = std::ptr::null(); - let mut dark: *const c_char = std::ptr::null(); - let mut item: *mut Json = std::ptr::null_mut(); + let mut data_0: *mut spSlotData = std::ptr::null_mut::(); + let mut color_0: *const c_char = std::ptr::null::(); + let mut dark: *const c_char = std::ptr::null::(); + let mut item: *mut Json = std::ptr::null_mut::(); let mut boneName: *const c_char = Json_getString( slotMap, - b"bone\0" as *const u8 as *const c_char, - std::ptr::null(), + (b"bone\0" as *const u8).cast::(), + std::ptr::null::(), ); let mut boneData: *mut spBoneData = spSkeletonData_findBone(skeletonData, boneName); if boneData.is_null() { @@ -22081,24 +24071,32 @@ pub unsafe extern "C" fn spSkeletonJson_readSkeletonData( _spSkeletonJson_setError( self_0, root, - b"Slot bone not found: \0" as *const u8 as *const c_char, + (b"Slot bone not found: \0" as *const u8).cast::(), boneName, ); - return std::ptr::null_mut(); + return std::ptr::null_mut::(); } - data_0 = spSlotData_create( - i, - Json_getString( - slotMap, - b"name\0" as *const u8 as *const c_char, - std::ptr::null(), - ), - boneData, - ); + let mut pathName: *mut c_char = std::ptr::null_mut::(); + let mut slotName: *mut c_char = Json_getString( + slotMap, + (b"name\0" as *const u8).cast::(), + std::ptr::null::(), + ) + .cast_mut(); + let slash: c_int = string_lastIndexOf(slotName, '/' as i32 as c_char); + if slash != -1 { + pathName = string_substring(slotName, 0 as c_int, slash); + slotName = string_substring( + slotName, + slash + 1 as c_int, + spine_strlen(slotName) as c_int, + ); + } + data_0 = spSlotData_create(i, slotName, boneData); color_0 = Json_getString( slotMap, - b"color\0" as *const u8 as *const c_char, - std::ptr::null(), + (b"color\0" as *const u8).cast::(), + std::ptr::null::(), ); if !color_0.is_null() { spColor_setFromFloats( @@ -22111,8 +24109,8 @@ pub unsafe extern "C" fn spSkeletonJson_readSkeletonData( } dark = Json_getString( slotMap, - b"dark\0" as *const u8 as *const c_char, - std::ptr::null(), + (b"dark\0" as *const u8).cast::(), + std::ptr::null::(), ); if !dark.is_null() { (*data_0).darkColor = spColor_create(); @@ -22124,65 +24122,72 @@ pub unsafe extern "C" fn spSkeletonJson_readSkeletonData( 1.0f32, ); } - item = Json_getItem(slotMap, b"attachment\0" as *const u8 as *const c_char); + item = Json_getItem(slotMap, (b"attachment\0" as *const u8).cast::()); if !item.is_null() { spSlotData_setAttachmentName(data_0, (*item).valueString); } - item = Json_getItem(slotMap, b"blend\0" as *const u8 as *const c_char); + item = Json_getItem(slotMap, (b"blend\0" as *const u8).cast::()); if !item.is_null() { if spine_strcmp( (*item).valueString, - b"additive\0" as *const u8 as *const c_char, + (b"additive\0" as *const u8).cast::(), ) == 0 as c_int { (*data_0).blendMode = SP_BLEND_MODE_ADDITIVE; } else if spine_strcmp( (*item).valueString, - b"multiply\0" as *const u8 as *const c_char, + (b"multiply\0" as *const u8).cast::(), ) == 0 as c_int { (*data_0).blendMode = SP_BLEND_MODE_MULTIPLY; } else if spine_strcmp( (*item).valueString, - b"screen\0" as *const u8 as *const c_char, + (b"screen\0" as *const u8).cast::(), ) == 0 as c_int { (*data_0).blendMode = SP_BLEND_MODE_SCREEN; } } - let ref mut fresh187 = *((*skeletonData).slots).offset(i as isize); - *fresh187 = data_0; + (*data_0).visible = Json_getInt( + slotMap, + (b"visible\0" as *const u8).cast::(), + -(1 as c_int), + ); + (*data_0).path = pathName; + let fresh137 = &mut (*((*skeletonData).slots).offset(i as isize)); + *fresh137 = data_0; slotMap = (*slotMap).next; i += 1; } } - ik = Json_getItem(root, b"ik\0" as *const u8 as *const c_char); + ik = Json_getItem(root, (b"ik\0" as *const u8).cast::()); if !ik.is_null() { - let mut constraintMap: *mut Json = std::ptr::null_mut(); + let mut constraintMap: *mut Json = std::ptr::null_mut::(); (*skeletonData).ikConstraintsCount = (*ik).size; (*skeletonData).ikConstraints = _spMalloc( (::core::mem::size_of::<*mut spIkConstraintData>() as c_ulong) .wrapping_mul((*ik).size as c_ulong), - b"spine.c\0" as *const u8 as *const c_char, - 11763 as c_int, - ) as *mut *mut spIkConstraintData; + (b"spine.c\0" as *const u8).cast::(), + 12605 as c_int, + ) + .cast::<*mut spIkConstraintData>(); constraintMap = (*ik).child; i = 0 as c_int; while !constraintMap.is_null() { - let mut targetName: *const c_char = std::ptr::null(); + let mut targetName: *const c_char = std::ptr::null::(); let mut data_1: *mut spIkConstraintData = spIkConstraintData_create(Json_getString( constraintMap, - b"name\0" as *const u8 as *const c_char, - std::ptr::null(), + (b"name\0" as *const u8).cast::(), + std::ptr::null::(), )); (*data_1).order = Json_getInt( constraintMap, - b"order\0" as *const u8 as *const c_char, + (b"order\0" as *const u8).cast::(), 0 as c_int, ); (*data_1).skinRequired = if Json_getInt( constraintMap, - b"skin\0" as *const u8 as *const c_char, + (b"skin\0" as *const u8).cast::(), 0 as c_int, ) != 0 { @@ -22190,36 +24195,37 @@ pub unsafe extern "C" fn spSkeletonJson_readSkeletonData( } else { 0 as c_int }; - boneMap = Json_getItem(constraintMap, b"bones\0" as *const u8 as *const c_char); + boneMap = Json_getItem(constraintMap, (b"bones\0" as *const u8).cast::()); (*data_1).bonesCount = (*boneMap).size; (*data_1).bones = _spMalloc( (::core::mem::size_of::<*mut spBoneData>() as c_ulong) .wrapping_mul((*boneMap).size as c_ulong), - b"spine.c\0" as *const u8 as *const c_char, - 11773 as c_int, - ) as *mut *mut spBoneData; + (b"spine.c\0" as *const u8).cast::(), + 12615 as c_int, + ) + .cast::<*mut spBoneData>(); boneMap = (*boneMap).child; ii = 0 as c_int; while !boneMap.is_null() { - let ref mut fresh188 = *((*data_1).bones).offset(ii as isize); - *fresh188 = spSkeletonData_findBone(skeletonData, (*boneMap).valueString); + let fresh138 = &mut (*((*data_1).bones).offset(ii as isize)); + *fresh138 = spSkeletonData_findBone(skeletonData, (*boneMap).valueString); if (*((*data_1).bones).offset(ii as isize)).is_null() { spSkeletonData_dispose(skeletonData); _spSkeletonJson_setError( self_0, root, - b"IK bone not found: \0" as *const u8 as *const c_char, + (b"IK bone not found: \0" as *const u8).cast::(), (*boneMap).valueString, ); - return std::ptr::null_mut(); + return std::ptr::null_mut::(); } boneMap = (*boneMap).next; ii += 1; } targetName = Json_getString( constraintMap, - b"target\0" as *const u8 as *const c_char, - std::ptr::null(), + (b"target\0" as *const u8).cast::(), + std::ptr::null::(), ); (*data_1).target = spSkeletonData_findBone(skeletonData, targetName); if ((*data_1).target).is_null() { @@ -22227,14 +24233,14 @@ pub unsafe extern "C" fn spSkeletonJson_readSkeletonData( _spSkeletonJson_setError( self_0, root, - b"Target bone not found: \0" as *const u8 as *const c_char, + (b"Target bone not found: \0" as *const u8).cast::(), targetName, ); - return std::ptr::null_mut(); + return std::ptr::null_mut::(); } (*data_1).bendDirection = if Json_getInt( constraintMap, - b"bendPositive\0" as *const u8 as *const c_char, + (b"bendPositive\0" as *const u8).cast::(), 1 as c_int, ) != 0 { @@ -22244,7 +24250,7 @@ pub unsafe extern "C" fn spSkeletonJson_readSkeletonData( }; (*data_1).compress = if Json_getInt( constraintMap, - b"compress\0" as *const u8 as *const c_char, + (b"compress\0" as *const u8).cast::(), 0 as c_int, ) != 0 { @@ -22254,7 +24260,7 @@ pub unsafe extern "C" fn spSkeletonJson_readSkeletonData( }; (*data_1).stretch = if Json_getInt( constraintMap, - b"stretch\0" as *const u8 as *const c_char, + (b"stretch\0" as *const u8).cast::(), 0 as c_int, ) != 0 { @@ -22264,7 +24270,7 @@ pub unsafe extern "C" fn spSkeletonJson_readSkeletonData( }; (*data_1).uniform = if Json_getInt( constraintMap, - b"uniform\0" as *const u8 as *const c_char, + (b"uniform\0" as *const u8).cast::(), 0 as c_int, ) != 0 { @@ -22274,48 +24280,49 @@ pub unsafe extern "C" fn spSkeletonJson_readSkeletonData( }; (*data_1).mix = Json_getFloat( constraintMap, - b"mix\0" as *const u8 as *const c_char, + (b"mix\0" as *const u8).cast::(), 1 as c_int as c_float, ); (*data_1).softness = Json_getFloat( constraintMap, - b"softness\0" as *const u8 as *const c_char, + (b"softness\0" as *const u8).cast::(), 0 as c_int as c_float, ) * (*self_0).scale; - let ref mut fresh189 = *((*skeletonData).ikConstraints).offset(i as isize); - *fresh189 = data_1; + let fresh139 = &mut (*((*skeletonData).ikConstraints).offset(i as isize)); + *fresh139 = data_1; constraintMap = (*constraintMap).next; i += 1; } } - transform = Json_getItem(root, b"transform\0" as *const u8 as *const c_char); + transform = Json_getItem(root, (b"transform\0" as *const u8).cast::()); if !transform.is_null() { - let mut constraintMap_0: *mut Json = std::ptr::null_mut(); + let mut constraintMap_0: *mut Json = std::ptr::null_mut::(); (*skeletonData).transformConstraintsCount = (*transform).size; (*skeletonData).transformConstraints = _spMalloc( (::core::mem::size_of::<*mut spTransformConstraintData>() as c_ulong) .wrapping_mul((*transform).size as c_ulong), - b"spine.c\0" as *const u8 as *const c_char, - 11807 as c_int, - ) as *mut *mut spTransformConstraintData; + (b"spine.c\0" as *const u8).cast::(), + 12649 as c_int, + ) + .cast::<*mut spTransformConstraintData>(); constraintMap_0 = (*transform).child; i = 0 as c_int; while !constraintMap_0.is_null() { - let mut name: *const c_char = std::ptr::null(); + let mut name: *const c_char = std::ptr::null::(); let mut data_2: *mut spTransformConstraintData = spTransformConstraintData_create(Json_getString( constraintMap_0, - b"name\0" as *const u8 as *const c_char, - std::ptr::null(), + (b"name\0" as *const u8).cast::(), + std::ptr::null::(), )); (*data_2).order = Json_getInt( constraintMap_0, - b"order\0" as *const u8 as *const c_char, + (b"order\0" as *const u8).cast::(), 0 as c_int, ); (*data_2).skinRequired = if Json_getInt( constraintMap_0, - b"skin\0" as *const u8 as *const c_char, + (b"skin\0" as *const u8).cast::(), 0 as c_int, ) != 0 { @@ -22323,37 +24330,37 @@ pub unsafe extern "C" fn spSkeletonJson_readSkeletonData( } else { 0 as c_int }; - boneMap = Json_getItem(constraintMap_0, b"bones\0" as *const u8 as *const c_char); + boneMap = Json_getItem(constraintMap_0, (b"bones\0" as *const u8).cast::()); (*data_2).bonesCount = (*boneMap).size; - let ref mut fresh190 = *(&mut (*data_2).bones as *mut *mut *mut spBoneData); - *fresh190 = _spMalloc( + (*data_2).bones = _spMalloc( (::core::mem::size_of::<*mut spBoneData>() as c_ulong) .wrapping_mul((*boneMap).size as c_ulong), - b"spine.c\0" as *const u8 as *const c_char, - 11818 as c_int, - ) as *mut *mut spBoneData; + (b"spine.c\0" as *const u8).cast::(), + 12660 as c_int, + ) + .cast::<*mut spBoneData>(); boneMap = (*boneMap).child; ii = 0 as c_int; while !boneMap.is_null() { - let ref mut fresh191 = *((*data_2).bones).offset(ii as isize); - *fresh191 = spSkeletonData_findBone(skeletonData, (*boneMap).valueString); + let fresh140 = &mut (*((*data_2).bones).offset(ii as isize)); + *fresh140 = spSkeletonData_findBone(skeletonData, (*boneMap).valueString); if (*((*data_2).bones).offset(ii as isize)).is_null() { spSkeletonData_dispose(skeletonData); _spSkeletonJson_setError( self_0, root, - b"Transform bone not found: \0" as *const u8 as *const c_char, + (b"Transform bone not found: \0" as *const u8).cast::(), (*boneMap).valueString, ); - return std::ptr::null_mut(); + return std::ptr::null_mut::(); } boneMap = (*boneMap).next; ii += 1; } name = Json_getString( constraintMap_0, - b"target\0" as *const u8 as *const c_char, - std::ptr::null(), + (b"target\0" as *const u8).cast::(), + std::ptr::null::(), ); (*data_2).target = spSkeletonData_findBone(skeletonData, name); if ((*data_2).target).is_null() { @@ -22361,116 +24368,117 @@ pub unsafe extern "C" fn spSkeletonJson_readSkeletonData( _spSkeletonJson_setError( self_0, root, - b"Target bone not found: \0" as *const u8 as *const c_char, + (b"Target bone not found: \0" as *const u8).cast::(), name, ); - return std::ptr::null_mut(); + return std::ptr::null_mut::(); } (*data_2).local = Json_getInt( constraintMap_0, - b"local\0" as *const u8 as *const c_char, + (b"local\0" as *const u8).cast::(), 0 as c_int, ); (*data_2).relative = Json_getInt( constraintMap_0, - b"relative\0" as *const u8 as *const c_char, + (b"relative\0" as *const u8).cast::(), 0 as c_int, ); (*data_2).offsetRotation = Json_getFloat( constraintMap_0, - b"rotation\0" as *const u8 as *const c_char, + (b"rotation\0" as *const u8).cast::(), 0 as c_int as c_float, ); (*data_2).offsetX = Json_getFloat( constraintMap_0, - b"x\0" as *const u8 as *const c_char, + (b"x\0" as *const u8).cast::(), 0 as c_int as c_float, ) * (*self_0).scale; (*data_2).offsetY = Json_getFloat( constraintMap_0, - b"y\0" as *const u8 as *const c_char, + (b"y\0" as *const u8).cast::(), 0 as c_int as c_float, ) * (*self_0).scale; (*data_2).offsetScaleX = Json_getFloat( constraintMap_0, - b"scaleX\0" as *const u8 as *const c_char, + (b"scaleX\0" as *const u8).cast::(), 0 as c_int as c_float, ); (*data_2).offsetScaleY = Json_getFloat( constraintMap_0, - b"scaleY\0" as *const u8 as *const c_char, + (b"scaleY\0" as *const u8).cast::(), 0 as c_int as c_float, ); (*data_2).offsetShearY = Json_getFloat( constraintMap_0, - b"shearY\0" as *const u8 as *const c_char, + (b"shearY\0" as *const u8).cast::(), 0 as c_int as c_float, ); (*data_2).mixRotate = Json_getFloat( constraintMap_0, - b"mixRotate\0" as *const u8 as *const c_char, + (b"mixRotate\0" as *const u8).cast::(), 1 as c_int as c_float, ); (*data_2).mixX = Json_getFloat( constraintMap_0, - b"mixX\0" as *const u8 as *const c_char, + (b"mixX\0" as *const u8).cast::(), 1 as c_int as c_float, ); (*data_2).mixY = Json_getFloat( constraintMap_0, - b"mixY\0" as *const u8 as *const c_char, + (b"mixY\0" as *const u8).cast::(), (*data_2).mixX, ); (*data_2).mixScaleX = Json_getFloat( constraintMap_0, - b"mixScaleX\0" as *const u8 as *const c_char, + (b"mixScaleX\0" as *const u8).cast::(), 1 as c_int as c_float, ); (*data_2).mixScaleY = Json_getFloat( constraintMap_0, - b"mixScaleY\0" as *const u8 as *const c_char, + (b"mixScaleY\0" as *const u8).cast::(), (*data_2).mixScaleX, ); (*data_2).mixShearY = Json_getFloat( constraintMap_0, - b"mixShearY\0" as *const u8 as *const c_char, + (b"mixShearY\0" as *const u8).cast::(), 1 as c_int as c_float, ); - let ref mut fresh192 = *((*skeletonData).transformConstraints).offset(i as isize); - *fresh192 = data_2; + let fresh141 = &mut (*((*skeletonData).transformConstraints).offset(i as isize)); + *fresh141 = data_2; constraintMap_0 = (*constraintMap_0).next; i += 1; } } - pathJson = Json_getItem(root, b"path\0" as *const u8 as *const c_char); + pathJson = Json_getItem(root, (b"path\0" as *const u8).cast::()); if !pathJson.is_null() { - let mut constraintMap_1: *mut Json = std::ptr::null_mut(); + let mut constraintMap_1: *mut Json = std::ptr::null_mut::(); (*skeletonData).pathConstraintsCount = (*pathJson).size; (*skeletonData).pathConstraints = _spMalloc( (::core::mem::size_of::<*mut spPathConstraintData>() as c_ulong) .wrapping_mul((*pathJson).size as c_ulong), - b"spine.c\0" as *const u8 as *const c_char, - 11861 as c_int, - ) as *mut *mut spPathConstraintData; + (b"spine.c\0" as *const u8).cast::(), + 12703 as c_int, + ) + .cast::<*mut spPathConstraintData>(); constraintMap_1 = (*pathJson).child; i = 0 as c_int; while !constraintMap_1.is_null() { - let mut name_0: *const c_char = std::ptr::null(); - let mut item_0: *const c_char = std::ptr::null(); + let mut name_0: *const c_char = std::ptr::null::(); + let mut item_0: *const c_char = std::ptr::null::(); let mut data_3: *mut spPathConstraintData = spPathConstraintData_create(Json_getString( constraintMap_1, - b"name\0" as *const u8 as *const c_char, - std::ptr::null(), + (b"name\0" as *const u8).cast::(), + std::ptr::null::(), )); (*data_3).order = Json_getInt( constraintMap_1, - b"order\0" as *const u8 as *const c_char, + (b"order\0" as *const u8).cast::(), 0 as c_int, ); (*data_3).skinRequired = if Json_getInt( constraintMap_1, - b"skin\0" as *const u8 as *const c_char, + (b"skin\0" as *const u8).cast::(), 0 as c_int, ) != 0 { @@ -22478,37 +24486,37 @@ pub unsafe extern "C" fn spSkeletonJson_readSkeletonData( } else { 0 as c_int }; - boneMap = Json_getItem(constraintMap_1, b"bones\0" as *const u8 as *const c_char); + boneMap = Json_getItem(constraintMap_1, (b"bones\0" as *const u8).cast::()); (*data_3).bonesCount = (*boneMap).size; - let ref mut fresh193 = *(&mut (*data_3).bones as *mut *mut *mut spBoneData); - *fresh193 = _spMalloc( + (*data_3).bones = _spMalloc( (::core::mem::size_of::<*mut spBoneData>() as c_ulong) .wrapping_mul((*boneMap).size as c_ulong), - b"spine.c\0" as *const u8 as *const c_char, - 11872 as c_int, - ) as *mut *mut spBoneData; + (b"spine.c\0" as *const u8).cast::(), + 12714 as c_int, + ) + .cast::<*mut spBoneData>(); boneMap = (*boneMap).child; ii = 0 as c_int; while !boneMap.is_null() { - let ref mut fresh194 = *((*data_3).bones).offset(ii as isize); - *fresh194 = spSkeletonData_findBone(skeletonData, (*boneMap).valueString); + let fresh142 = &mut (*((*data_3).bones).offset(ii as isize)); + *fresh142 = spSkeletonData_findBone(skeletonData, (*boneMap).valueString); if (*((*data_3).bones).offset(ii as isize)).is_null() { spSkeletonData_dispose(skeletonData); _spSkeletonJson_setError( self_0, root, - b"Path bone not found: \0" as *const u8 as *const c_char, + (b"Path bone not found: \0" as *const u8).cast::(), (*boneMap).valueString, ); - return std::ptr::null_mut(); + return std::ptr::null_mut::(); } boneMap = (*boneMap).next; ii += 1; } name_0 = Json_getString( constraintMap_1, - b"target\0" as *const u8 as *const c_char, - std::ptr::null(), + (b"target\0" as *const u8).cast::(), + std::ptr::null::(), ); (*data_3).target = spSkeletonData_findSlot(skeletonData, name_0); if ((*data_3).target).is_null() { @@ -22516,32 +24524,35 @@ pub unsafe extern "C" fn spSkeletonJson_readSkeletonData( _spSkeletonJson_setError( self_0, root, - b"Target slot not found: \0" as *const u8 as *const c_char, + (b"Target slot not found: \0" as *const u8).cast::(), name_0, ); - return std::ptr::null_mut(); + return std::ptr::null_mut::(); } item_0 = Json_getString( constraintMap_1, - b"positionMode\0" as *const u8 as *const c_char, - b"percent\0" as *const u8 as *const c_char, + (b"positionMode\0" as *const u8).cast::(), + (b"percent\0" as *const u8).cast::(), ); - if spine_strcmp(item_0, b"fixed\0" as *const u8 as *const c_char) == 0 as c_int { + if spine_strcmp(item_0, (b"fixed\0" as *const u8).cast::()) == 0 as c_int { (*data_3).positionMode = SP_POSITION_MODE_FIXED; - } else if spine_strcmp(item_0, b"percent\0" as *const u8 as *const c_char) == 0 as c_int + } else if spine_strcmp(item_0, (b"percent\0" as *const u8).cast::()) + == 0 as c_int { (*data_3).positionMode = SP_POSITION_MODE_PERCENT; } item_0 = Json_getString( constraintMap_1, - b"spacingMode\0" as *const u8 as *const c_char, - b"length\0" as *const u8 as *const c_char, + (b"spacingMode\0" as *const u8).cast::(), + (b"length\0" as *const u8).cast::(), ); - if spine_strcmp(item_0, b"length\0" as *const u8 as *const c_char) == 0 as c_int { + if spine_strcmp(item_0, (b"length\0" as *const u8).cast::()) == 0 as c_int { (*data_3).spacingMode = SP_SPACING_MODE_LENGTH; - } else if spine_strcmp(item_0, b"fixed\0" as *const u8 as *const c_char) == 0 as c_int { + } else if spine_strcmp(item_0, (b"fixed\0" as *const u8).cast::()) == 0 as c_int + { (*data_3).spacingMode = SP_SPACING_MODE_FIXED; - } else if spine_strcmp(item_0, b"percent\0" as *const u8 as *const c_char) == 0 as c_int + } else if spine_strcmp(item_0, (b"percent\0" as *const u8).cast::()) + == 0 as c_int { (*data_3).spacingMode = SP_SPACING_MODE_PERCENT; } else { @@ -22549,83 +24560,245 @@ pub unsafe extern "C" fn spSkeletonJson_readSkeletonData( } item_0 = Json_getString( constraintMap_1, - b"rotateMode\0" as *const u8 as *const c_char, - b"tangent\0" as *const u8 as *const c_char, + (b"rotateMode\0" as *const u8).cast::(), + (b"tangent\0" as *const u8).cast::(), ); - if spine_strcmp(item_0, b"tangent\0" as *const u8 as *const c_char) == 0 as c_int { + if spine_strcmp(item_0, (b"tangent\0" as *const u8).cast::()) == 0 as c_int { (*data_3).rotateMode = SP_ROTATE_MODE_TANGENT; - } else if spine_strcmp(item_0, b"chain\0" as *const u8 as *const c_char) == 0 as c_int { + } else if spine_strcmp(item_0, (b"chain\0" as *const u8).cast::()) == 0 as c_int + { (*data_3).rotateMode = SP_ROTATE_MODE_CHAIN; - } else if spine_strcmp(item_0, b"chainScale\0" as *const u8 as *const c_char) + } else if spine_strcmp(item_0, (b"chainScale\0" as *const u8).cast::()) == 0 as c_int { (*data_3).rotateMode = SP_ROTATE_MODE_CHAIN_SCALE; } - (*data_3).offsetRotation = Json_getFloat( - constraintMap_1, - b"rotation\0" as *const u8 as *const c_char, + (*data_3).offsetRotation = Json_getFloat( + constraintMap_1, + (b"rotation\0" as *const u8).cast::(), + 0 as c_int as c_float, + ); + (*data_3).position = Json_getFloat( + constraintMap_1, + (b"position\0" as *const u8).cast::(), + 0 as c_int as c_float, + ); + if (*data_3).positionMode as c_uint == SP_POSITION_MODE_FIXED as c_int as c_uint { + (*data_3).position *= (*self_0).scale; + } + (*data_3).spacing = Json_getFloat( + constraintMap_1, + (b"spacing\0" as *const u8).cast::(), + 0 as c_int as c_float, + ); + if (*data_3).spacingMode as c_uint == SP_SPACING_MODE_LENGTH as c_int as c_uint + || (*data_3).spacingMode as c_uint == SP_SPACING_MODE_FIXED as c_int as c_uint + { + (*data_3).spacing *= (*self_0).scale; + } + (*data_3).mixRotate = Json_getFloat( + constraintMap_1, + (b"mixRotate\0" as *const u8).cast::(), + 1 as c_int as c_float, + ); + (*data_3).mixX = Json_getFloat( + constraintMap_1, + (b"mixX\0" as *const u8).cast::(), + 1 as c_int as c_float, + ); + (*data_3).mixY = Json_getFloat( + constraintMap_1, + (b"mixY\0" as *const u8).cast::(), + (*data_3).mixX, + ); + let fresh143 = &mut (*((*skeletonData).pathConstraints).offset(i as isize)); + *fresh143 = data_3; + constraintMap_1 = (*constraintMap_1).next; + i += 1; + } + } + physics = Json_getItem(root, (b"physics\0" as *const u8).cast::()); + if !physics.is_null() { + let mut constraintMap_2: *mut Json = std::ptr::null_mut::(); + (*skeletonData).physicsConstraintsCount = (*physics).size; + (*skeletonData).physicsConstraints = _spMalloc( + (::core::mem::size_of::<*mut spPhysicsConstraintData>() as c_ulong) + .wrapping_mul((*physics).size as c_ulong), + (b"spine.c\0" as *const u8).cast::(), + 12772 as c_int, + ) + .cast::<*mut spPhysicsConstraintData>(); + constraintMap_2 = (*physics).child; + i = 0 as c_int; + while !constraintMap_2.is_null() { + let mut name_1: *const c_char = std::ptr::null::(); + let mut data_4: *mut spPhysicsConstraintData = + spPhysicsConstraintData_create(Json_getString( + constraintMap_2, + (b"name\0" as *const u8).cast::(), + std::ptr::null::(), + )); + (*data_4).order = Json_getInt( + constraintMap_2, + (b"order\0" as *const u8).cast::(), + 0 as c_int, + ); + (*data_4).skinRequired = Json_getInt( + constraintMap_2, + (b"skin\0" as *const u8).cast::(), + 0 as c_int, + ); + name_1 = Json_getString( + constraintMap_2, + (b"bone\0" as *const u8).cast::(), + std::ptr::null::(), + ); + (*data_4).bone = spSkeletonData_findBone(skeletonData, name_1); + if ((*data_4).bone).is_null() { + spSkeletonData_dispose(skeletonData); + _spSkeletonJson_setError( + self_0, + root, + (b"Physics bone not found: \0" as *const u8).cast::(), + name_1, + ); + return std::ptr::null_mut::(); + } + (*data_4).x = Json_getFloat( + constraintMap_2, + (b"x\0" as *const u8).cast::(), 0 as c_int as c_float, ); - (*data_3).position = Json_getFloat( - constraintMap_1, - b"position\0" as *const u8 as *const c_char, + (*data_4).y = Json_getFloat( + constraintMap_2, + (b"y\0" as *const u8).cast::(), 0 as c_int as c_float, ); - if (*data_3).positionMode as c_uint == SP_POSITION_MODE_FIXED as c_int as c_uint { - (*data_3).position *= (*self_0).scale; - } - (*data_3).spacing = Json_getFloat( - constraintMap_1, - b"spacing\0" as *const u8 as *const c_char, + (*data_4).rotate = Json_getFloat( + constraintMap_2, + (b"rotate\0" as *const u8).cast::(), 0 as c_int as c_float, ); - if (*data_3).spacingMode as c_uint == SP_SPACING_MODE_LENGTH as c_int as c_uint - || (*data_3).spacingMode as c_uint == SP_SPACING_MODE_FIXED as c_int as c_uint - { - (*data_3).spacing *= (*self_0).scale; - } - (*data_3).mixRotate = Json_getFloat( - constraintMap_1, - b"mixRotate\0" as *const u8 as *const c_char, + (*data_4).scaleX = Json_getFloat( + constraintMap_2, + (b"scaleX\0" as *const u8).cast::(), + 0 as c_int as c_float, + ); + (*data_4).shearX = Json_getFloat( + constraintMap_2, + (b"shearX\0" as *const u8).cast::(), + 0 as c_int as c_float, + ); + (*data_4).limit = Json_getFloat( + constraintMap_2, + (b"limit\0" as *const u8).cast::(), + 5000 as c_int as c_float, + ) * (*self_0).scale; + (*data_4).step = 1.0f32 + / Json_getInt( + constraintMap_2, + (b"fps\0" as *const u8).cast::(), + 60 as c_int, + ) as c_float; + (*data_4).inertia = Json_getFloat( + constraintMap_2, + (b"inertia\0" as *const u8).cast::(), 1 as c_int as c_float, ); - (*data_3).mixX = Json_getFloat( - constraintMap_1, - b"mixX\0" as *const u8 as *const c_char, + (*data_4).strength = Json_getFloat( + constraintMap_2, + (b"strength\0" as *const u8).cast::(), + 100 as c_int as c_float, + ); + (*data_4).damping = Json_getFloat( + constraintMap_2, + (b"damping\0" as *const u8).cast::(), 1 as c_int as c_float, ); - (*data_3).mixY = Json_getFloat( - constraintMap_1, - b"mixY\0" as *const u8 as *const c_char, - (*data_3).mixX, + (*data_4).massInverse = 1.0f32 + / Json_getFloat( + constraintMap_2, + (b"mass\0" as *const u8).cast::(), + 1 as c_int as c_float, + ); + (*data_4).wind = Json_getFloat( + constraintMap_2, + (b"wind\0" as *const u8).cast::(), + 0 as c_int as c_float, ); - let ref mut fresh195 = *((*skeletonData).pathConstraints).offset(i as isize); - *fresh195 = data_3; - constraintMap_1 = (*constraintMap_1).next; + (*data_4).gravity = Json_getFloat( + constraintMap_2, + (b"gravity\0" as *const u8).cast::(), + 0 as c_int as c_float, + ); + (*data_4).mix = Json_getFloat( + constraintMap_2, + (b"mix\0" as *const u8).cast::(), + 1 as c_int as c_float, + ); + (*data_4).inertiaGlobal = Json_getInt( + constraintMap_2, + (b"inertiaGlobal\0" as *const u8).cast::(), + 0 as c_int, + ); + (*data_4).strengthGlobal = Json_getInt( + constraintMap_2, + (b"strengthGlobal\0" as *const u8).cast::(), + 0 as c_int, + ); + (*data_4).dampingGlobal = Json_getInt( + constraintMap_2, + (b"dampingGlobal\0" as *const u8).cast::(), + 0 as c_int, + ); + (*data_4).massGlobal = Json_getInt( + constraintMap_2, + (b"massGlobal\0" as *const u8).cast::(), + 0 as c_int, + ); + (*data_4).windGlobal = Json_getInt( + constraintMap_2, + (b"windGlobal\0" as *const u8).cast::(), + 0 as c_int, + ); + (*data_4).gravityGlobal = Json_getInt( + constraintMap_2, + (b"gravityGlobal\0" as *const u8).cast::(), + 0 as c_int, + ); + (*data_4).mixGlobal = Json_getInt( + constraintMap_2, + (b"mixGlobal\0" as *const u8).cast::(), + 0 as c_int, + ); + let fresh144 = &mut (*((*skeletonData).physicsConstraints).offset(i as isize)); + *fresh144 = data_4; + constraintMap_2 = (*constraintMap_2).next; i += 1; } } - skins = Json_getItem(root, b"skins\0" as *const u8 as *const c_char); + skins = Json_getItem(root, (b"skins\0" as *const u8).cast::()); if !skins.is_null() { - let mut skinMap: *mut Json = std::ptr::null_mut(); + let mut skinMap: *mut Json = std::ptr::null_mut::(); (*skeletonData).skins = _spMalloc( (::core::mem::size_of::<*mut spSkin>() as c_ulong) .wrapping_mul((*skins).size as c_ulong), - b"spine.c\0" as *const u8 as *const c_char, - 11929 as c_int, - ) as *mut *mut spSkin; + (b"spine.c\0" as *const u8).cast::(), + 12819 as c_int, + ) + .cast::<*mut spSkin>(); skinMap = (*skins).child; i = 0 as c_int; while !skinMap.is_null() { - let mut attachmentsMap: *mut Json = std::ptr::null_mut(); - let mut curves: *mut Json = std::ptr::null_mut(); - let mut skinPart: *mut Json = std::ptr::null_mut(); + let mut attachmentsMap: *mut Json = std::ptr::null_mut::(); + let mut curves: *mut Json = std::ptr::null_mut::(); + let mut skinPart: *mut Json = std::ptr::null_mut::(); let mut skin: *mut spSkin = spSkin_create(Json_getString( skinMap, - b"name\0" as *const u8 as *const c_char, - b"\0" as *const u8 as *const c_char, + (b"name\0" as *const u8).cast::(), + (b"\0" as *const u8).cast::(), )); - skinPart = Json_getItem(skinMap, b"bones\0" as *const u8 as *const c_char); + skinPart = Json_getItem(skinMap, (b"bones\0" as *const u8).cast::()); if !skinPart.is_null() { skinPart = (*skinPart).child; while !skinPart.is_null() { @@ -22636,16 +24809,16 @@ pub unsafe extern "C" fn spSkeletonJson_readSkeletonData( _spSkeletonJson_setError( self_0, root, - b"Skin bone constraint not found: \0" as *const u8 as *const c_char, + (b"Skin bone constraint not found: \0" as *const u8).cast::(), (*skinPart).valueString, ); - return std::ptr::null_mut(); + return std::ptr::null_mut::(); } spBoneDataArray_add((*skin).bones, bone); skinPart = (*skinPart).next; } } - skinPart = Json_getItem(skinMap, b"ik\0" as *const u8 as *const c_char); + skinPart = Json_getItem(skinMap, (b"ik\0" as *const u8).cast::()); if !skinPart.is_null() { skinPart = (*skinPart).child; while !skinPart.is_null() { @@ -22656,16 +24829,16 @@ pub unsafe extern "C" fn spSkeletonJson_readSkeletonData( _spSkeletonJson_setError( self_0, root, - b"Skin IK constraint not found: \0" as *const u8 as *const c_char, + (b"Skin IK constraint not found: \0" as *const u8).cast::(), (*skinPart).valueString, ); - return std::ptr::null_mut(); + return std::ptr::null_mut::(); } spIkConstraintDataArray_add((*skin).ikConstraints, constraint); skinPart = (*skinPart).next; } } - skinPart = Json_getItem(skinMap, b"path\0" as *const u8 as *const c_char); + skinPart = Json_getItem(skinMap, (b"path\0" as *const u8).cast::()); if !skinPart.is_null() { skinPart = (*skinPart).child; while !skinPart.is_null() { @@ -22676,16 +24849,16 @@ pub unsafe extern "C" fn spSkeletonJson_readSkeletonData( _spSkeletonJson_setError( self_0, root, - b"Skin path constraint not found: \0" as *const u8 as *const c_char, + (b"Skin path constraint not found: \0" as *const u8).cast::(), (*skinPart).valueString, ); - return std::ptr::null_mut(); + return std::ptr::null_mut::(); } spPathConstraintDataArray_add((*skin).pathConstraints, constraint_0); skinPart = (*skinPart).next; } } - skinPart = Json_getItem(skinMap, b"transform\0" as *const u8 as *const c_char); + skinPart = Json_getItem(skinMap, (b"transform\0" as *const u8).cast::()); if !skinPart.is_null() { skinPart = (*skinPart).child; while !skinPart.is_null() { @@ -22699,86 +24872,115 @@ pub unsafe extern "C" fn spSkeletonJson_readSkeletonData( _spSkeletonJson_setError( self_0, root, - b"Skin transform constraint not found: \0" as *const u8 - as *const c_char, + (b"Skin transform constraint not found: \0" as *const u8) + .cast::(), (*skinPart).valueString, ); - return std::ptr::null_mut(); + return std::ptr::null_mut::(); } spTransformConstraintDataArray_add((*skin).transformConstraints, constraint_1); skinPart = (*skinPart).next; } } - let fresh196 = (*skeletonData).skinsCount; - (*skeletonData).skinsCount = (*skeletonData).skinsCount + 1; - let ref mut fresh197 = *((*skeletonData).skins).offset(fresh196 as isize); - *fresh197 = skin; - if spine_strcmp((*skin).name, b"default\0" as *const u8 as *const c_char) == 0 as c_int + skinPart = Json_getItem(skinMap, (b"physics\0" as *const u8).cast::()); + if !skinPart.is_null() { + skinPart = (*skinPart).child; + while !skinPart.is_null() { + let mut constraint_2: *mut spPhysicsConstraintData = + spSkeletonData_findPhysicsConstraint(skeletonData, (*skinPart).valueString); + if constraint_2.is_null() { + spSkeletonData_dispose(skeletonData); + _spSkeletonJson_setError( + self_0, + root, + (b"Skin physics constraint not found: \0" as *const u8) + .cast::(), + (*skinPart).valueString, + ); + return std::ptr::null_mut::(); + } + spPhysicsConstraintDataArray_add((*skin).physicsConstraints, constraint_2); + skinPart = (*skinPart).next; + } + } + let fresh145 = (*skeletonData).skinsCount; + (*skeletonData).skinsCount += 1; + let fresh146 = &mut (*((*skeletonData).skins).offset(fresh145 as isize)); + *fresh146 = skin; + if spine_strcmp((*skin).name, (b"default\0" as *const u8).cast::()) + == 0 as c_int { (*skeletonData).defaultSkin = skin; } - skinPart = Json_getItem(skinMap, b"attachments\0" as *const u8 as *const c_char); + skinPart = Json_getItem(skinMap, (b"attachments\0" as *const u8).cast::()); if !skinPart.is_null() { attachmentsMap = (*skinPart).child; while !attachmentsMap.is_null() { let mut slot: *mut spSlotData = spSkeletonData_findSlot(skeletonData, (*attachmentsMap).name); - let mut attachmentMap: *mut Json = std::ptr::null_mut(); + let mut attachmentMap: *mut Json = std::ptr::null_mut::(); attachmentMap = (*attachmentsMap).child; while !attachmentMap.is_null() { - let mut attachment: *mut spAttachment = std::ptr::null_mut(); + let mut attachment: *mut spAttachment = + std::ptr::null_mut::(); let mut skinAttachmentName: *const c_char = (*attachmentMap).name; let mut attachmentName: *const c_char = Json_getString( attachmentMap, - b"name\0" as *const u8 as *const c_char, + (b"name\0" as *const u8).cast::(), skinAttachmentName, ); let mut path: *const c_char = Json_getString( attachmentMap, - b"path\0" as *const u8 as *const c_char, + (b"path\0" as *const u8).cast::(), attachmentName, ); - let mut color_1: *const c_char = std::ptr::null(); - let mut entry: *mut Json = std::ptr::null_mut(); - let mut sequence: *mut spSequence = std::ptr::null_mut(); + let mut color_1: *const c_char = std::ptr::null::(); + let mut entry: *mut Json = std::ptr::null_mut::(); + let mut sequence: *mut spSequence = std::ptr::null_mut::(); let mut typeString: *const c_char = Json_getString( attachmentMap, - b"type\0" as *const u8 as *const c_char, - b"region\0" as *const u8 as *const c_char, + (b"type\0" as *const u8).cast::(), + (b"region\0" as *const u8).cast::(), ); let mut type_0: spAttachmentType = SP_ATTACHMENT_REGION; - if spine_strcmp(typeString, b"region\0" as *const u8 as *const c_char) + if spine_strcmp(typeString, (b"region\0" as *const u8).cast::()) == 0 as c_int { type_0 = SP_ATTACHMENT_REGION; - } else if spine_strcmp(typeString, b"mesh\0" as *const u8 as *const c_char) - == 0 as c_int + } else if spine_strcmp( + typeString, + (b"mesh\0" as *const u8).cast::(), + ) == 0 as c_int { type_0 = SP_ATTACHMENT_MESH; } else if spine_strcmp( typeString, - b"linkedmesh\0" as *const u8 as *const c_char, + (b"linkedmesh\0" as *const u8).cast::(), ) == 0 as c_int { type_0 = SP_ATTACHMENT_LINKED_MESH; } else if spine_strcmp( typeString, - b"boundingbox\0" as *const u8 as *const c_char, + (b"boundingbox\0" as *const u8).cast::(), ) == 0 as c_int { type_0 = SP_ATTACHMENT_BOUNDING_BOX; - } else if spine_strcmp(typeString, b"path\0" as *const u8 as *const c_char) - == 0 as c_int + } else if spine_strcmp( + typeString, + (b"path\0" as *const u8).cast::(), + ) == 0 as c_int { type_0 = SP_ATTACHMENT_PATH; } else if spine_strcmp( typeString, - b"clipping\0" as *const u8 as *const c_char, + (b"clipping\0" as *const u8).cast::(), ) == 0 as c_int { type_0 = SP_ATTACHMENT_CLIPPING; - } else if spine_strcmp(typeString, b"point\0" as *const u8 as *const c_char) - == 0 as c_int + } else if spine_strcmp( + typeString, + (b"point\0" as *const u8).cast::(), + ) == 0 as c_int { type_0 = SP_ATTACHMENT_POINT; } else { @@ -22786,14 +24988,14 @@ pub unsafe extern "C" fn spSkeletonJson_readSkeletonData( _spSkeletonJson_setError( self_0, root, - b"Unknown attachment type: \0" as *const u8 as *const c_char, + (b"Unknown attachment type: \0" as *const u8).cast::(), typeString, ); - return std::ptr::null_mut(); + return std::ptr::null_mut::(); } sequence = readSequenceJson(Json_getItem( attachmentMap, - b"sequence\0" as *const u8 as *const c_char, + (b"sequence\0" as *const u8).cast::(), )); attachment = spAttachmentLoader_createAttachment( (*self_0).attachmentLoader, @@ -22812,69 +25014,66 @@ pub unsafe extern "C" fn spSkeletonJson_readSkeletonData( (*(*self_0).attachmentLoader).error1, (*(*self_0).attachmentLoader).error2, ); - return std::ptr::null_mut(); + return std::ptr::null_mut::(); } } else { match (*attachment).type_0 as c_uint { 0 => { let mut region: *mut spRegionAttachment = - attachment as *mut spRegionAttachment; + attachment.cast::(); if !path.is_null() { - let ref mut fresh198 = *(&mut (*region).path - as *mut *const c_char - as *mut *mut c_char); - *fresh198 = _spMalloc( + (*region).path = _spMalloc( (::core::mem::size_of::() as c_ulong) .wrapping_mul( (spine_strlen(path)) .wrapping_add(1 as c_int as c_ulong), ), - b"spine.c\0" as *const u8 as *const c_char, - 12048 as c_int, + (b"spine.c\0" as *const u8).cast::(), + 12952 as c_int, ) - as *mut c_char; - spine_strcpy(*fresh198, path); + .cast::(); + spine_strcpy((*region).path, path); } (*region).x = Json_getFloat( attachmentMap, - b"x\0" as *const u8 as *const c_char, + (b"x\0" as *const u8).cast::(), 0 as c_int as c_float, ) * (*self_0).scale; (*region).y = Json_getFloat( attachmentMap, - b"y\0" as *const u8 as *const c_char, + (b"y\0" as *const u8).cast::(), 0 as c_int as c_float, ) * (*self_0).scale; (*region).scaleX = Json_getFloat( attachmentMap, - b"scaleX\0" as *const u8 as *const c_char, + (b"scaleX\0" as *const u8).cast::(), 1 as c_int as c_float, ); (*region).scaleY = Json_getFloat( attachmentMap, - b"scaleY\0" as *const u8 as *const c_char, + (b"scaleY\0" as *const u8).cast::(), 1 as c_int as c_float, ); (*region).rotation = Json_getFloat( attachmentMap, - b"rotation\0" as *const u8 as *const c_char, + (b"rotation\0" as *const u8).cast::(), 0 as c_int as c_float, ); (*region).width = Json_getFloat( attachmentMap, - b"width\0" as *const u8 as *const c_char, + (b"width\0" as *const u8).cast::(), 32 as c_int as c_float, ) * (*self_0).scale; (*region).height = Json_getFloat( attachmentMap, - b"height\0" as *const u8 as *const c_char, + (b"height\0" as *const u8).cast::(), 32 as c_int as c_float, ) * (*self_0).scale; (*region).sequence = sequence; color_1 = Json_getString( attachmentMap, - b"color\0" as *const u8 as *const c_char, - std::ptr::null(), + (b"color\0" as *const u8).cast::(), + std::ptr::null::(), ); if !color_1.is_null() { spColor_setFromFloats( @@ -22895,23 +25094,21 @@ pub unsafe extern "C" fn spSkeletonJson_readSkeletonData( } 2 | 3 => { let mut mesh: *mut spMeshAttachment = - attachment as *mut spMeshAttachment; - let ref mut fresh199 = *(&mut (*mesh).path as *mut *const c_char - as *mut *mut c_char); - *fresh199 = _spMalloc( + attachment.cast::(); + (*mesh).path = _spMalloc( (::core::mem::size_of::() as c_ulong).wrapping_mul( (spine_strlen(path)) .wrapping_add(1 as c_int as c_ulong), ), - b"spine.c\0" as *const u8 as *const c_char, - 12076 as c_int, + (b"spine.c\0" as *const u8).cast::(), + 12980 as c_int, ) - as *mut c_char; - spine_strcpy(*fresh199, path); + .cast::(); + spine_strcpy((*mesh).path, path); color_1 = Json_getString( attachmentMap, - b"color\0" as *const u8 as *const c_char, - std::ptr::null(), + (b"color\0" as *const u8).cast::(), + std::ptr::null::(), ); if !color_1.is_null() { spColor_setFromFloats( @@ -22924,33 +25121,33 @@ pub unsafe extern "C" fn spSkeletonJson_readSkeletonData( } (*mesh).width = Json_getFloat( attachmentMap, - b"width\0" as *const u8 as *const c_char, + (b"width\0" as *const u8).cast::(), 32 as c_int as c_float, ) * (*self_0).scale; (*mesh).height = Json_getFloat( attachmentMap, - b"height\0" as *const u8 as *const c_char, + (b"height\0" as *const u8).cast::(), 32 as c_int as c_float, ) * (*self_0).scale; (*mesh).sequence = sequence; entry = Json_getItem( attachmentMap, - b"parent\0" as *const u8 as *const c_char, + (b"parent\0" as *const u8).cast::(), ); if entry.is_null() { let mut verticesLength: c_int = 0; entry = Json_getItem( attachmentMap, - b"triangles\0" as *const u8 as *const c_char, + (b"triangles\0" as *const u8).cast::(), ); (*mesh).trianglesCount = (*entry).size; (*mesh).triangles = _spMalloc( (::core::mem::size_of::() as c_ulong) .wrapping_mul((*entry).size as c_ulong), - b"spine.c\0" as *const u8 as *const c_char, - 12096 as c_int, + (b"spine.c\0" as *const u8).cast::(), + 13000 as c_int, ) - as *mut c_ushort; + .cast::(); entry = (*entry).child; ii = 0 as c_int; while !entry.is_null() { @@ -22961,16 +25158,16 @@ pub unsafe extern "C" fn spSkeletonJson_readSkeletonData( } entry = Json_getItem( attachmentMap, - b"uvs\0" as *const u8 as *const c_char, + (b"uvs\0" as *const u8).cast::(), ); verticesLength = (*entry).size; (*mesh).regionUVs = _spMalloc( (::core::mem::size_of::() as c_ulong) .wrapping_mul(verticesLength as c_ulong), - b"spine.c\0" as *const u8 as *const c_char, - 12102 as c_int, + (b"spine.c\0" as *const u8).cast::(), + 13006 as c_int, ) - as *mut c_float; + .cast::(); entry = (*entry).child; ii = 0 as c_int; while !entry.is_null() { @@ -22990,27 +25187,27 @@ pub unsafe extern "C" fn spSkeletonJson_readSkeletonData( } (*mesh).hullLength = Json_getInt( attachmentMap, - b"hull\0" as *const u8 as *const c_char, + (b"hull\0" as *const u8).cast::(), 0 as c_int, ); entry = Json_getItem( attachmentMap, - b"edges\0" as *const u8 as *const c_char, + (b"edges\0" as *const u8).cast::(), ); if !entry.is_null() { (*mesh).edgesCount = (*entry).size; (*mesh).edges = _spMalloc( - (::core::mem::size_of::() as c_ulong) + (::core::mem::size_of::() as c_ulong) .wrapping_mul((*entry).size as c_ulong), - b"spine.c\0" as *const u8 as *const c_char, - 12115 as c_int, + (b"spine.c\0" as *const u8).cast::(), + 13019 as c_int, ) - as *mut c_int; + .cast::(); entry = (*entry).child; ii = 0 as c_int; while !entry.is_null() { *((*mesh).edges).offset(ii as isize) = - (*entry).valueInt; + (*entry).valueInt as c_ushort; entry = (*entry).next; ii += 1; } @@ -23022,16 +25219,16 @@ pub unsafe extern "C" fn spSkeletonJson_readSkeletonData( } else { let mut inheritTimelines: c_int = Json_getInt( attachmentMap, - b"timelines\0" as *const u8 as *const c_char, + (b"timelines\0" as *const u8).cast::(), 1 as c_int, ); _spSkeletonJson_addLinkedMesh( self_0, - attachment as *mut spMeshAttachment, + attachment.cast::(), Json_getString( attachmentMap, - b"skin\0" as *const u8 as *const c_char, - std::ptr::null(), + (b"skin\0" as *const u8).cast::(), + std::ptr::null::(), ), (*slot).index, (*entry).valueString, @@ -23041,10 +25238,10 @@ pub unsafe extern "C" fn spSkeletonJson_readSkeletonData( } 1 => { let mut box_0: *mut spBoundingBoxAttachment = - attachment as *mut spBoundingBoxAttachment; + attachment.cast::(); let mut vertexCount: c_int = Json_getInt( attachmentMap, - b"vertexCount\0" as *const u8 as *const c_char, + (b"vertexCount\0" as *const u8).cast::(), 0 as c_int, ) << 1 as c_int; _readVerticesJson( @@ -23056,8 +25253,8 @@ pub unsafe extern "C" fn spSkeletonJson_readSkeletonData( (*box_0).super_0.verticesCount = vertexCount; color_1 = Json_getString( attachmentMap, - b"color\0" as *const u8 as *const c_char, - std::ptr::null(), + (b"color\0" as *const u8).cast::(), + std::ptr::null::(), ); if !color_1.is_null() { spColor_setFromFloats( @@ -23075,21 +25272,21 @@ pub unsafe extern "C" fn spSkeletonJson_readSkeletonData( } 4 => { let mut pathAttachment: *mut spPathAttachment = - attachment as *mut spPathAttachment; + attachment.cast::(); let mut vertexCount_0: c_int = 0 as c_int; (*pathAttachment).closed = Json_getInt( attachmentMap, - b"closed\0" as *const u8 as *const c_char, + (b"closed\0" as *const u8).cast::(), 0 as c_int, ); (*pathAttachment).constantSpeed = Json_getInt( attachmentMap, - b"constantSpeed\0" as *const u8 as *const c_char, + (b"constantSpeed\0" as *const u8).cast::(), 1 as c_int, ); vertexCount_0 = Json_getInt( attachmentMap, - b"vertexCount\0" as *const u8 as *const c_char, + (b"vertexCount\0" as *const u8).cast::(), 0 as c_int, ); _readVerticesJson( @@ -23104,13 +25301,13 @@ pub unsafe extern "C" fn spSkeletonJson_readSkeletonData( .wrapping_mul( (*pathAttachment).lengthsLength as c_ulong, ), - b"spine.c\0" as *const u8 as *const c_char, - 12154 as c_int, + (b"spine.c\0" as *const u8).cast::(), + 13058 as c_int, ) - as *mut c_float; + .cast::(); curves = Json_getItem( attachmentMap, - b"lengths\0" as *const u8 as *const c_char, + (b"lengths\0" as *const u8).cast::(), ); curves = (*curves).child; ii = 0 as c_int; @@ -23122,8 +25319,8 @@ pub unsafe extern "C" fn spSkeletonJson_readSkeletonData( } color_1 = Json_getString( attachmentMap, - b"color\0" as *const u8 as *const c_char, - std::ptr::null(), + (b"color\0" as *const u8).cast::(), + std::ptr::null::(), ); if !color_1.is_null() { spColor_setFromFloats( @@ -23137,26 +25334,26 @@ pub unsafe extern "C" fn spSkeletonJson_readSkeletonData( } 5 => { let mut point: *mut spPointAttachment = - attachment as *mut spPointAttachment; + attachment.cast::(); (*point).x = Json_getFloat( attachmentMap, - b"x\0" as *const u8 as *const c_char, + (b"x\0" as *const u8).cast::(), 0 as c_int as c_float, ) * (*self_0).scale; (*point).y = Json_getFloat( attachmentMap, - b"y\0" as *const u8 as *const c_char, + (b"y\0" as *const u8).cast::(), 0 as c_int as c_float, ) * (*self_0).scale; (*point).rotation = Json_getFloat( attachmentMap, - b"rotation\0" as *const u8 as *const c_char, + (b"rotation\0" as *const u8).cast::(), 0 as c_int as c_float, ); color_1 = Json_getString( attachmentMap, - b"color\0" as *const u8 as *const c_char, - std::ptr::null(), + (b"color\0" as *const u8).cast::(), + std::ptr::null::(), ); if !color_1.is_null() { spColor_setFromFloats( @@ -23170,12 +25367,12 @@ pub unsafe extern "C" fn spSkeletonJson_readSkeletonData( } 6 => { let mut clip: *mut spClippingAttachment = - attachment as *mut spClippingAttachment; + attachment.cast::(); let mut vertexCount_1: c_int = 0 as c_int; let mut end: *const c_char = Json_getString( attachmentMap, - b"end\0" as *const u8 as *const c_char, - std::ptr::null(), + (b"end\0" as *const u8).cast::(), + std::ptr::null::(), ); if !end.is_null() { let mut endSlot: *mut spSlotData = @@ -23184,7 +25381,7 @@ pub unsafe extern "C" fn spSkeletonJson_readSkeletonData( } vertexCount_1 = Json_getInt( attachmentMap, - b"vertexCount\0" as *const u8 as *const c_char, + (b"vertexCount\0" as *const u8).cast::(), 0 as c_int, ) << 1 as c_int; _readVerticesJson( @@ -23195,8 +25392,8 @@ pub unsafe extern "C" fn spSkeletonJson_readSkeletonData( ); color_1 = Json_getString( attachmentMap, - b"color\0" as *const u8 as *const c_char, - std::ptr::null(), + (b"color\0" as *const u8).cast::(), + std::ptr::null::(), ); if !color_1.is_null() { spColor_setFromFloats( @@ -23232,7 +25429,7 @@ pub unsafe extern "C" fn spSkeletonJson_readSkeletonData( } i = 0 as c_int; while i < (*internal).linkedMeshCount { - let mut parent_0: *mut spAttachment = std::ptr::null_mut(); + let mut parent_0: *mut spAttachment = std::ptr::null_mut::(); let mut linkedMesh: *mut _spLinkedMeshJson = ((*internal).linkedMeshes).offset(i as isize); let mut skin_0: *mut spSkin = if ((*linkedMesh).skin).is_null() { (*skeletonData).defaultSkin @@ -23243,29 +25440,29 @@ pub unsafe extern "C" fn spSkeletonJson_readSkeletonData( spSkeletonData_dispose(skeletonData); _spSkeletonJson_setError( self_0, - std::ptr::null_mut(), - b"Skin not found: \0" as *const u8 as *const c_char, + std::ptr::null_mut::(), + (b"Skin not found: \0" as *const u8).cast::(), (*linkedMesh).skin, ); - return std::ptr::null_mut(); + return std::ptr::null_mut::(); } parent_0 = spSkin_getAttachment(skin_0, (*linkedMesh).slotIndex, (*linkedMesh).parent); if parent_0.is_null() { spSkeletonData_dispose(skeletonData); _spSkeletonJson_setError( self_0, - std::ptr::null_mut(), - b"Parent mesh not found: \0" as *const u8 as *const c_char, + std::ptr::null_mut::(), + (b"Parent mesh not found: \0" as *const u8).cast::(), (*linkedMesh).parent, ); - return std::ptr::null_mut(); + return std::ptr::null_mut::(); } (*(*linkedMesh).mesh).super_0.timelineAttachment = if (*linkedMesh).inheritTimeline != 0 { parent_0 } else { &mut (*(*linkedMesh).mesh).super_0.super_0 }; - spMeshAttachment_setParentMesh((*linkedMesh).mesh, parent_0 as *mut spMeshAttachment); + spMeshAttachment_setParentMesh((*linkedMesh).mesh, parent_0.cast::()); if !((*(*linkedMesh).mesh).region).is_null() { spMeshAttachment_updateRegion((*linkedMesh).mesh); } @@ -23275,105 +25472,108 @@ pub unsafe extern "C" fn spSkeletonJson_readSkeletonData( ); i += 1; } - events = Json_getItem(root, b"events\0" as *const u8 as *const c_char); + events = Json_getItem(root, (b"events\0" as *const u8).cast::()); if !events.is_null() { - let mut eventMap: *mut Json = std::ptr::null_mut(); - let mut stringValue: *const c_char = std::ptr::null(); - let mut audioPath: *const c_char = std::ptr::null(); + let mut eventMap: *mut Json = std::ptr::null_mut::(); + let mut stringValue: *const c_char = std::ptr::null::(); + let mut audioPath: *const c_char = std::ptr::null::(); (*skeletonData).eventsCount = (*events).size; (*skeletonData).events = _spMalloc( (::core::mem::size_of::<*mut spEventData>() as c_ulong) .wrapping_mul((*events).size as c_ulong), - b"spine.c\0" as *const u8 as *const c_char, - 12245 as c_int, - ) as *mut *mut spEventData; + (b"spine.c\0" as *const u8).cast::(), + 13149 as c_int, + ) + .cast::<*mut spEventData>(); eventMap = (*events).child; i = 0 as c_int; while !eventMap.is_null() { let mut eventData: *mut spEventData = spEventData_create((*eventMap).name); - (*eventData).intValue = - Json_getInt(eventMap, b"int\0" as *const u8 as *const c_char, 0 as c_int); + (*eventData).intValue = Json_getInt( + eventMap, + (b"int\0" as *const u8).cast::(), + 0 as c_int, + ); (*eventData).floatValue = Json_getFloat( eventMap, - b"float\0" as *const u8 as *const c_char, + (b"float\0" as *const u8).cast::(), 0 as c_int as c_float, ); stringValue = Json_getString( eventMap, - b"string\0" as *const u8 as *const c_char, - std::ptr::null(), + (b"string\0" as *const u8).cast::(), + std::ptr::null::(), ); if !stringValue.is_null() { - let ref mut fresh200 = - *(&mut (*eventData).stringValue as *mut *const c_char as *mut *mut c_char); - *fresh200 = _spMalloc( + (*eventData).stringValue = _spMalloc( (::core::mem::size_of::() as c_ulong).wrapping_mul( (spine_strlen(stringValue)).wrapping_add(1 as c_int as c_ulong), ), - b"spine.c\0" as *const u8 as *const c_char, - 12251 as c_int, - ) as *mut c_char; - spine_strcpy(*fresh200, stringValue); + (b"spine.c\0" as *const u8).cast::(), + 13155 as c_int, + ) + .cast::(); + spine_strcpy((*eventData).stringValue, stringValue); } audioPath = Json_getString( eventMap, - b"audio\0" as *const u8 as *const c_char, - std::ptr::null(), + (b"audio\0" as *const u8).cast::(), + std::ptr::null::(), ); if !audioPath.is_null() { - let ref mut fresh201 = - *(&mut (*eventData).audioPath as *mut *const c_char as *mut *mut c_char); - *fresh201 = _spMalloc( + (*eventData).audioPath = _spMalloc( (::core::mem::size_of::() as c_ulong).wrapping_mul( (spine_strlen(audioPath)).wrapping_add(1 as c_int as c_ulong), ), - b"spine.c\0" as *const u8 as *const c_char, - 12254 as c_int, - ) as *mut c_char; - spine_strcpy(*fresh201, audioPath); + (b"spine.c\0" as *const u8).cast::(), + 13158 as c_int, + ) + .cast::(); + spine_strcpy((*eventData).audioPath, audioPath); (*eventData).volume = Json_getFloat( eventMap, - b"volume\0" as *const u8 as *const c_char, + (b"volume\0" as *const u8).cast::(), 1 as c_int as c_float, ); (*eventData).balance = Json_getFloat( eventMap, - b"balance\0" as *const u8 as *const c_char, + (b"balance\0" as *const u8).cast::(), 0 as c_int as c_float, ); } - let ref mut fresh202 = *((*skeletonData).events).offset(i as isize); - *fresh202 = eventData; + let fresh147 = &mut (*((*skeletonData).events).offset(i as isize)); + *fresh147 = eventData; eventMap = (*eventMap).next; i += 1; } } - animations = Json_getItem(root, b"animations\0" as *const u8 as *const c_char); + animations = Json_getItem(root, (b"animations\0" as *const u8).cast::()); if !animations.is_null() { - let mut animationMap: *mut Json = std::ptr::null_mut(); + let mut animationMap: *mut Json = std::ptr::null_mut::(); (*skeletonData).animations = _spMalloc( (::core::mem::size_of::<*mut spAnimation>() as c_ulong) .wrapping_mul((*animations).size as c_ulong), - b"spine.c\0" as *const u8 as *const c_char, - 12266 as c_int, - ) as *mut *mut spAnimation; + (b"spine.c\0" as *const u8).cast::(), + 13170 as c_int, + ) + .cast::<*mut spAnimation>(); animationMap = (*animations).child; while !animationMap.is_null() { let mut animation: *mut spAnimation = _spSkeletonJson_readAnimation(self_0, animationMap, skeletonData); if animation.is_null() { spSkeletonData_dispose(skeletonData); - return std::ptr::null_mut(); + return std::ptr::null_mut::(); } - let fresh203 = (*skeletonData).animationsCount; - (*skeletonData).animationsCount = (*skeletonData).animationsCount + 1; - let ref mut fresh204 = *((*skeletonData).animations).offset(fresh203 as isize); - *fresh204 = animation; + let fresh148 = (*skeletonData).animationsCount; + (*skeletonData).animationsCount += 1; + let fresh149 = &mut (*((*skeletonData).animations).offset(fresh148 as isize)); + *fresh149 = animation; animationMap = (*animationMap).next; } } Json_dispose(root); - return skeletonData; + skeletonData } #[no_mangle] pub unsafe extern "C" fn spBoneDataArray_create( @@ -23382,23 +25582,25 @@ pub unsafe extern "C" fn spBoneDataArray_create( let mut array: *mut spBoneDataArray = _spCalloc( 1 as c_int as size_t, ::core::mem::size_of::() as c_ulong, - b"spine.c\0" as *const u8 as *const c_char, - 12313 as c_int, - ) as *mut spBoneDataArray; + (b"spine.c\0" as *const u8).cast::(), + 13217 as c_int, + ) + .cast::(); (*array).size = 0 as c_int; (*array).capacity = initialCapacity; (*array).items = _spCalloc( initialCapacity as size_t, ::core::mem::size_of::<*mut spBoneData>() as c_ulong, - b"spine.c\0" as *const u8 as *const c_char, - 12313 as c_int, - ) as *mut *mut spBoneData; - return array; + (b"spine.c\0" as *const u8).cast::(), + 13217 as c_int, + ) + .cast::<*mut spBoneData>(); + array } #[no_mangle] pub unsafe extern "C" fn spBoneDataArray_dispose(mut self_0: *mut spBoneDataArray) { - _spFree((*self_0).items as *mut c_void); - _spFree(self_0 as *mut c_void); + _spFree((*self_0).items.cast::()); + _spFree(self_0.cast::()); } #[no_mangle] pub unsafe extern "C" fn spBoneDataArray_clear(mut self_0: *mut spBoneDataArray) { @@ -23417,12 +25619,13 @@ pub unsafe extern "C" fn spBoneDataArray_setSize( ((*self_0).size as c_float * 1.75f32) as c_int }; (*self_0).items = _spRealloc( - (*self_0).items as *mut c_void, + (*self_0).items.cast::(), (::core::mem::size_of::<*mut spBoneData>() as c_ulong) .wrapping_mul((*self_0).capacity as c_ulong), - ) as *mut *mut spBoneData; + ) + .cast::<*mut spBoneData>(); } - return self_0; + self_0 } #[no_mangle] pub unsafe extern "C" fn spBoneDataArray_ensureCapacity( @@ -23434,10 +25637,11 @@ pub unsafe extern "C" fn spBoneDataArray_ensureCapacity( } (*self_0).capacity = newCapacity; (*self_0).items = _spRealloc( - (*self_0).items as *mut c_void, + (*self_0).items.cast::(), (::core::mem::size_of::<*mut spBoneData>() as c_ulong) .wrapping_mul((*self_0).capacity as c_ulong), - ) as *mut *mut spBoneData; + ) + .cast::<*mut spBoneData>(); } #[no_mangle] pub unsafe extern "C" fn spBoneDataArray_add( @@ -23451,15 +25655,16 @@ pub unsafe extern "C" fn spBoneDataArray_add( ((*self_0).size as c_float * 1.75f32) as c_int }; (*self_0).items = _spRealloc( - (*self_0).items as *mut c_void, + (*self_0).items.cast::(), (::core::mem::size_of::<*mut spBoneData>() as c_ulong) .wrapping_mul((*self_0).capacity as c_ulong), - ) as *mut *mut spBoneData; + ) + .cast::<*mut spBoneData>(); } - let fresh205 = (*self_0).size; - (*self_0).size = (*self_0).size + 1; - let ref mut fresh206 = *((*self_0).items).offset(fresh205 as isize); - *fresh206 = value; + let fresh150 = (*self_0).size; + (*self_0).size += 1; + let fresh151 = &mut (*((*self_0).items).offset(fresh150 as isize)); + *fresh151 = value; } #[no_mangle] pub unsafe extern "C" fn spBoneDataArray_addAll( @@ -23493,7 +25698,7 @@ pub unsafe extern "C" fn spBoneDataArray_removeAt( ) { (*self_0).size -= 1; spine_memmove( - ((*self_0).items).offset(index as isize) as *mut c_void, + ((*self_0).items).offset(index as isize).cast::(), ((*self_0).items) .offset(index as isize) .offset(1 as c_int as isize) as *const c_void, @@ -23517,17 +25722,17 @@ pub unsafe extern "C" fn spBoneDataArray_contains( } i += 1; } - return 0 as c_int; + 0 as c_int } #[no_mangle] pub unsafe extern "C" fn spBoneDataArray_pop(mut self_0: *mut spBoneDataArray) -> *mut spBoneData { (*self_0).size -= 1; let mut item: *mut spBoneData = *((*self_0).items).offset((*self_0).size as isize); - return item; + item } #[no_mangle] pub unsafe extern "C" fn spBoneDataArray_peek(mut self_0: *mut spBoneDataArray) -> *mut spBoneData { - return *((*self_0).items).offset(((*self_0).size - 1 as c_int) as isize); + *((*self_0).items).offset(((*self_0).size - 1 as c_int) as isize) } #[no_mangle] pub unsafe extern "C" fn spIkConstraintDataArray_create( @@ -23536,23 +25741,25 @@ pub unsafe extern "C" fn spIkConstraintDataArray_create( let mut array: *mut spIkConstraintDataArray = _spCalloc( 1 as c_int as size_t, ::core::mem::size_of::() as c_ulong, - b"spine.c\0" as *const u8 as *const c_char, - 12315 as c_int, - ) as *mut spIkConstraintDataArray; + (b"spine.c\0" as *const u8).cast::(), + 13219 as c_int, + ) + .cast::(); (*array).size = 0 as c_int; (*array).capacity = initialCapacity; (*array).items = _spCalloc( initialCapacity as size_t, ::core::mem::size_of::<*mut spIkConstraintData>() as c_ulong, - b"spine.c\0" as *const u8 as *const c_char, - 12315 as c_int, - ) as *mut *mut spIkConstraintData; - return array; + (b"spine.c\0" as *const u8).cast::(), + 13219 as c_int, + ) + .cast::<*mut spIkConstraintData>(); + array } #[no_mangle] pub unsafe extern "C" fn spIkConstraintDataArray_dispose(mut self_0: *mut spIkConstraintDataArray) { - _spFree((*self_0).items as *mut c_void); - _spFree(self_0 as *mut c_void); + _spFree((*self_0).items.cast::()); + _spFree(self_0.cast::()); } #[no_mangle] pub unsafe extern "C" fn spIkConstraintDataArray_clear(mut self_0: *mut spIkConstraintDataArray) { @@ -23571,12 +25778,13 @@ pub unsafe extern "C" fn spIkConstraintDataArray_setSize( ((*self_0).size as c_float * 1.75f32) as c_int }; (*self_0).items = _spRealloc( - (*self_0).items as *mut c_void, + (*self_0).items.cast::(), (::core::mem::size_of::<*mut spIkConstraintData>() as c_ulong) .wrapping_mul((*self_0).capacity as c_ulong), - ) as *mut *mut spIkConstraintData; + ) + .cast::<*mut spIkConstraintData>(); } - return self_0; + self_0 } #[no_mangle] pub unsafe extern "C" fn spIkConstraintDataArray_ensureCapacity( @@ -23588,10 +25796,11 @@ pub unsafe extern "C" fn spIkConstraintDataArray_ensureCapacity( } (*self_0).capacity = newCapacity; (*self_0).items = _spRealloc( - (*self_0).items as *mut c_void, + (*self_0).items.cast::(), (::core::mem::size_of::<*mut spIkConstraintData>() as c_ulong) .wrapping_mul((*self_0).capacity as c_ulong), - ) as *mut *mut spIkConstraintData; + ) + .cast::<*mut spIkConstraintData>(); } #[no_mangle] pub unsafe extern "C" fn spIkConstraintDataArray_add( @@ -23605,15 +25814,16 @@ pub unsafe extern "C" fn spIkConstraintDataArray_add( ((*self_0).size as c_float * 1.75f32) as c_int }; (*self_0).items = _spRealloc( - (*self_0).items as *mut c_void, + (*self_0).items.cast::(), (::core::mem::size_of::<*mut spIkConstraintData>() as c_ulong) .wrapping_mul((*self_0).capacity as c_ulong), - ) as *mut *mut spIkConstraintData; + ) + .cast::<*mut spIkConstraintData>(); } - let fresh207 = (*self_0).size; - (*self_0).size = (*self_0).size + 1; - let ref mut fresh208 = *((*self_0).items).offset(fresh207 as isize); - *fresh208 = value; + let fresh152 = (*self_0).size; + (*self_0).size += 1; + let fresh153 = &mut (*((*self_0).items).offset(fresh152 as isize)); + *fresh153 = value; } #[no_mangle] pub unsafe extern "C" fn spIkConstraintDataArray_addAll( @@ -23647,7 +25857,7 @@ pub unsafe extern "C" fn spIkConstraintDataArray_removeAt( ) { (*self_0).size -= 1; spine_memmove( - ((*self_0).items).offset(index as isize) as *mut c_void, + ((*self_0).items).offset(index as isize).cast::(), ((*self_0).items) .offset(index as isize) .offset(1 as c_int as isize) as *const c_void, @@ -23671,7 +25881,7 @@ pub unsafe extern "C" fn spIkConstraintDataArray_contains( } i += 1; } - return 0 as c_int; + 0 as c_int } #[no_mangle] pub unsafe extern "C" fn spIkConstraintDataArray_pop( @@ -23679,13 +25889,13 @@ pub unsafe extern "C" fn spIkConstraintDataArray_pop( ) -> *mut spIkConstraintData { (*self_0).size -= 1; let mut item: *mut spIkConstraintData = *((*self_0).items).offset((*self_0).size as isize); - return item; + item } #[no_mangle] pub unsafe extern "C" fn spIkConstraintDataArray_peek( mut self_0: *mut spIkConstraintDataArray, ) -> *mut spIkConstraintData { - return *((*self_0).items).offset(((*self_0).size - 1 as c_int) as isize); + *((*self_0).items).offset(((*self_0).size - 1 as c_int) as isize) } #[no_mangle] pub unsafe extern "C" fn spTransformConstraintDataArray_create( @@ -23694,26 +25904,27 @@ pub unsafe extern "C" fn spTransformConstraintDataArray_create( let mut array: *mut spTransformConstraintDataArray = _spCalloc( 1 as c_int as size_t, ::core::mem::size_of::() as c_ulong, - b"spine.c\0" as *const u8 as *const c_char, - 12317 as c_int, + (b"spine.c\0" as *const u8).cast::(), + 13221 as c_int, ) - as *mut spTransformConstraintDataArray; + .cast::(); (*array).size = 0 as c_int; (*array).capacity = initialCapacity; (*array).items = _spCalloc( initialCapacity as size_t, ::core::mem::size_of::<*mut spTransformConstraintData>() as c_ulong, - b"spine.c\0" as *const u8 as *const c_char, - 12317 as c_int, - ) as *mut *mut spTransformConstraintData; - return array; + (b"spine.c\0" as *const u8).cast::(), + 13221 as c_int, + ) + .cast::<*mut spTransformConstraintData>(); + array } #[no_mangle] pub unsafe extern "C" fn spTransformConstraintDataArray_dispose( mut self_0: *mut spTransformConstraintDataArray, ) { - _spFree((*self_0).items as *mut c_void); - _spFree(self_0 as *mut c_void); + _spFree((*self_0).items.cast::()); + _spFree(self_0.cast::()); } #[no_mangle] pub unsafe extern "C" fn spTransformConstraintDataArray_clear( @@ -23734,12 +25945,13 @@ pub unsafe extern "C" fn spTransformConstraintDataArray_setSize( ((*self_0).size as c_float * 1.75f32) as c_int }; (*self_0).items = _spRealloc( - (*self_0).items as *mut c_void, + (*self_0).items.cast::(), (::core::mem::size_of::<*mut spTransformConstraintData>() as c_ulong) .wrapping_mul((*self_0).capacity as c_ulong), - ) as *mut *mut spTransformConstraintData; + ) + .cast::<*mut spTransformConstraintData>(); } - return self_0; + self_0 } #[no_mangle] pub unsafe extern "C" fn spTransformConstraintDataArray_ensureCapacity( @@ -23751,10 +25963,11 @@ pub unsafe extern "C" fn spTransformConstraintDataArray_ensureCapacity( } (*self_0).capacity = newCapacity; (*self_0).items = _spRealloc( - (*self_0).items as *mut c_void, + (*self_0).items.cast::(), (::core::mem::size_of::<*mut spTransformConstraintData>() as c_ulong) .wrapping_mul((*self_0).capacity as c_ulong), - ) as *mut *mut spTransformConstraintData; + ) + .cast::<*mut spTransformConstraintData>(); } #[no_mangle] pub unsafe extern "C" fn spTransformConstraintDataArray_add( @@ -23768,15 +25981,16 @@ pub unsafe extern "C" fn spTransformConstraintDataArray_add( ((*self_0).size as c_float * 1.75f32) as c_int }; (*self_0).items = _spRealloc( - (*self_0).items as *mut c_void, + (*self_0).items.cast::(), (::core::mem::size_of::<*mut spTransformConstraintData>() as c_ulong) .wrapping_mul((*self_0).capacity as c_ulong), - ) as *mut *mut spTransformConstraintData; + ) + .cast::<*mut spTransformConstraintData>(); } - let fresh209 = (*self_0).size; - (*self_0).size = (*self_0).size + 1; - let ref mut fresh210 = *((*self_0).items).offset(fresh209 as isize); - *fresh210 = value; + let fresh154 = (*self_0).size; + (*self_0).size += 1; + let fresh155 = &mut (*((*self_0).items).offset(fresh154 as isize)); + *fresh155 = value; } #[no_mangle] pub unsafe extern "C" fn spTransformConstraintDataArray_addAll( @@ -23810,7 +26024,7 @@ pub unsafe extern "C" fn spTransformConstraintDataArray_removeAt( ) { (*self_0).size -= 1; spine_memmove( - ((*self_0).items).offset(index as isize) as *mut c_void, + ((*self_0).items).offset(index as isize).cast::(), ((*self_0).items) .offset(index as isize) .offset(1 as c_int as isize) as *const c_void, @@ -23834,7 +26048,7 @@ pub unsafe extern "C" fn spTransformConstraintDataArray_contains( } i += 1; } - return 0 as c_int; + 0 as c_int } #[no_mangle] pub unsafe extern "C" fn spTransformConstraintDataArray_pop( @@ -23843,13 +26057,13 @@ pub unsafe extern "C" fn spTransformConstraintDataArray_pop( (*self_0).size -= 1; let mut item: *mut spTransformConstraintData = *((*self_0).items).offset((*self_0).size as isize); - return item; + item } #[no_mangle] pub unsafe extern "C" fn spTransformConstraintDataArray_peek( mut self_0: *mut spTransformConstraintDataArray, ) -> *mut spTransformConstraintData { - return *((*self_0).items).offset(((*self_0).size - 1 as c_int) as isize); + *((*self_0).items).offset(((*self_0).size - 1 as c_int) as isize) } #[no_mangle] pub unsafe extern "C" fn spPathConstraintDataArray_create( @@ -23858,25 +26072,27 @@ pub unsafe extern "C" fn spPathConstraintDataArray_create( let mut array: *mut spPathConstraintDataArray = _spCalloc( 1 as c_int as size_t, ::core::mem::size_of::() as c_ulong, - b"spine.c\0" as *const u8 as *const c_char, - 12319 as c_int, - ) as *mut spPathConstraintDataArray; + (b"spine.c\0" as *const u8).cast::(), + 13223 as c_int, + ) + .cast::(); (*array).size = 0 as c_int; (*array).capacity = initialCapacity; (*array).items = _spCalloc( initialCapacity as size_t, ::core::mem::size_of::<*mut spPathConstraintData>() as c_ulong, - b"spine.c\0" as *const u8 as *const c_char, - 12319 as c_int, - ) as *mut *mut spPathConstraintData; - return array; + (b"spine.c\0" as *const u8).cast::(), + 13223 as c_int, + ) + .cast::<*mut spPathConstraintData>(); + array } #[no_mangle] pub unsafe extern "C" fn spPathConstraintDataArray_dispose( mut self_0: *mut spPathConstraintDataArray, ) { - _spFree((*self_0).items as *mut c_void); - _spFree(self_0 as *mut c_void); + _spFree((*self_0).items.cast::()); + _spFree(self_0.cast::()); } #[no_mangle] pub unsafe extern "C" fn spPathConstraintDataArray_clear( @@ -23897,12 +26113,13 @@ pub unsafe extern "C" fn spPathConstraintDataArray_setSize( ((*self_0).size as c_float * 1.75f32) as c_int }; (*self_0).items = _spRealloc( - (*self_0).items as *mut c_void, + (*self_0).items.cast::(), (::core::mem::size_of::<*mut spPathConstraintData>() as c_ulong) .wrapping_mul((*self_0).capacity as c_ulong), - ) as *mut *mut spPathConstraintData; + ) + .cast::<*mut spPathConstraintData>(); } - return self_0; + self_0 } #[no_mangle] pub unsafe extern "C" fn spPathConstraintDataArray_ensureCapacity( @@ -23914,10 +26131,11 @@ pub unsafe extern "C" fn spPathConstraintDataArray_ensureCapacity( } (*self_0).capacity = newCapacity; (*self_0).items = _spRealloc( - (*self_0).items as *mut c_void, + (*self_0).items.cast::(), (::core::mem::size_of::<*mut spPathConstraintData>() as c_ulong) .wrapping_mul((*self_0).capacity as c_ulong), - ) as *mut *mut spPathConstraintData; + ) + .cast::<*mut spPathConstraintData>(); } #[no_mangle] pub unsafe extern "C" fn spPathConstraintDataArray_add( @@ -23931,15 +26149,16 @@ pub unsafe extern "C" fn spPathConstraintDataArray_add( ((*self_0).size as c_float * 1.75f32) as c_int }; (*self_0).items = _spRealloc( - (*self_0).items as *mut c_void, + (*self_0).items.cast::(), (::core::mem::size_of::<*mut spPathConstraintData>() as c_ulong) .wrapping_mul((*self_0).capacity as c_ulong), - ) as *mut *mut spPathConstraintData; + ) + .cast::<*mut spPathConstraintData>(); } - let fresh211 = (*self_0).size; - (*self_0).size = (*self_0).size + 1; - let ref mut fresh212 = *((*self_0).items).offset(fresh211 as isize); - *fresh212 = value; + let fresh156 = (*self_0).size; + (*self_0).size += 1; + let fresh157 = &mut (*((*self_0).items).offset(fresh156 as isize)); + *fresh157 = value; } #[no_mangle] pub unsafe extern "C" fn spPathConstraintDataArray_addAll( @@ -23973,7 +26192,7 @@ pub unsafe extern "C" fn spPathConstraintDataArray_removeAt( ) { (*self_0).size -= 1; spine_memmove( - ((*self_0).items).offset(index as isize) as *mut c_void, + ((*self_0).items).offset(index as isize).cast::(), ((*self_0).items) .offset(index as isize) .offset(1 as c_int as isize) as *const c_void, @@ -23997,7 +26216,7 @@ pub unsafe extern "C" fn spPathConstraintDataArray_contains( } i += 1; } - return 0 as c_int; + 0 as c_int } #[no_mangle] pub unsafe extern "C" fn spPathConstraintDataArray_pop( @@ -24005,13 +26224,180 @@ pub unsafe extern "C" fn spPathConstraintDataArray_pop( ) -> *mut spPathConstraintData { (*self_0).size -= 1; let mut item: *mut spPathConstraintData = *((*self_0).items).offset((*self_0).size as isize); - return item; + item } #[no_mangle] pub unsafe extern "C" fn spPathConstraintDataArray_peek( mut self_0: *mut spPathConstraintDataArray, ) -> *mut spPathConstraintData { - return *((*self_0).items).offset(((*self_0).size - 1 as c_int) as isize); + *((*self_0).items).offset(((*self_0).size - 1 as c_int) as isize) +} +#[no_mangle] +pub unsafe extern "C" fn spPhysicsConstraintDataArray_create( + mut initialCapacity: c_int, +) -> *mut spPhysicsConstraintDataArray { + let mut array: *mut spPhysicsConstraintDataArray = _spCalloc( + 1 as c_int as size_t, + ::core::mem::size_of::() as c_ulong, + (b"spine.c\0" as *const u8).cast::(), + 13225 as c_int, + ) + .cast::(); + (*array).size = 0 as c_int; + (*array).capacity = initialCapacity; + (*array).items = _spCalloc( + initialCapacity as size_t, + ::core::mem::size_of::<*mut spPhysicsConstraintData>() as c_ulong, + (b"spine.c\0" as *const u8).cast::(), + 13225 as c_int, + ) + .cast::<*mut spPhysicsConstraintData>(); + array +} +#[no_mangle] +pub unsafe extern "C" fn spPhysicsConstraintDataArray_dispose( + mut self_0: *mut spPhysicsConstraintDataArray, +) { + _spFree((*self_0).items.cast::()); + _spFree(self_0.cast::()); +} +#[no_mangle] +pub unsafe extern "C" fn spPhysicsConstraintDataArray_clear( + mut self_0: *mut spPhysicsConstraintDataArray, +) { + (*self_0).size = 0 as c_int; +} +#[no_mangle] +pub unsafe extern "C" fn spPhysicsConstraintDataArray_setSize( + mut self_0: *mut spPhysicsConstraintDataArray, + mut newSize: c_int, +) -> *mut spPhysicsConstraintDataArray { + (*self_0).size = newSize; + if (*self_0).capacity < newSize { + (*self_0).capacity = if 8 as c_int > ((*self_0).size as c_float * 1.75f32) as c_int { + 8 as c_int + } else { + ((*self_0).size as c_float * 1.75f32) as c_int + }; + (*self_0).items = _spRealloc( + (*self_0).items.cast::(), + (::core::mem::size_of::<*mut spPhysicsConstraintData>() as c_ulong) + .wrapping_mul((*self_0).capacity as c_ulong), + ) + .cast::<*mut spPhysicsConstraintData>(); + } + self_0 +} +#[no_mangle] +pub unsafe extern "C" fn spPhysicsConstraintDataArray_ensureCapacity( + mut self_0: *mut spPhysicsConstraintDataArray, + mut newCapacity: c_int, +) { + if (*self_0).capacity >= newCapacity { + return; + } + (*self_0).capacity = newCapacity; + (*self_0).items = _spRealloc( + (*self_0).items.cast::(), + (::core::mem::size_of::<*mut spPhysicsConstraintData>() as c_ulong) + .wrapping_mul((*self_0).capacity as c_ulong), + ) + .cast::<*mut spPhysicsConstraintData>(); +} +#[no_mangle] +pub unsafe extern "C" fn spPhysicsConstraintDataArray_add( + mut self_0: *mut spPhysicsConstraintDataArray, + mut value: *mut spPhysicsConstraintData, +) { + if (*self_0).size == (*self_0).capacity { + (*self_0).capacity = if 8 as c_int > ((*self_0).size as c_float * 1.75f32) as c_int { + 8 as c_int + } else { + ((*self_0).size as c_float * 1.75f32) as c_int + }; + (*self_0).items = _spRealloc( + (*self_0).items.cast::(), + (::core::mem::size_of::<*mut spPhysicsConstraintData>() as c_ulong) + .wrapping_mul((*self_0).capacity as c_ulong), + ) + .cast::<*mut spPhysicsConstraintData>(); + } + let fresh158 = (*self_0).size; + (*self_0).size += 1; + let fresh159 = &mut (*((*self_0).items).offset(fresh158 as isize)); + *fresh159 = value; +} +#[no_mangle] +pub unsafe extern "C" fn spPhysicsConstraintDataArray_addAll( + mut self_0: *mut spPhysicsConstraintDataArray, + mut other: *mut spPhysicsConstraintDataArray, +) { + let mut i: c_int = 0 as c_int; + while i < (*other).size { + spPhysicsConstraintDataArray_add(self_0, *((*other).items).offset(i as isize)); + i += 1; + } +} +#[no_mangle] +pub unsafe extern "C" fn spPhysicsConstraintDataArray_addAllValues( + mut self_0: *mut spPhysicsConstraintDataArray, + mut values: *mut *mut spPhysicsConstraintData, + mut offset: c_int, + mut count: c_int, +) { + let mut i: c_int = offset; + let mut n: c_int = offset + count; + while i < n { + spPhysicsConstraintDataArray_add(self_0, *values.offset(i as isize)); + i += 1; + } +} +#[no_mangle] +pub unsafe extern "C" fn spPhysicsConstraintDataArray_removeAt( + mut self_0: *mut spPhysicsConstraintDataArray, + mut index: c_int, +) { + (*self_0).size -= 1; + spine_memmove( + ((*self_0).items).offset(index as isize).cast::(), + ((*self_0).items) + .offset(index as isize) + .offset(1 as c_int as isize) as *const c_void, + (::core::mem::size_of::<*mut spPhysicsConstraintData>() as c_ulong) + .wrapping_mul(((*self_0).size - index) as c_ulong), + ); +} +#[no_mangle] +pub unsafe extern "C" fn spPhysicsConstraintDataArray_contains( + mut self_0: *mut spPhysicsConstraintDataArray, + mut value: *mut spPhysicsConstraintData, +) -> c_int { + let mut items: *mut *mut spPhysicsConstraintData = (*self_0).items; + let mut i: c_int = 0; + let mut n: c_int = 0; + i = 0 as c_int; + n = (*self_0).size; + while i < n { + if *items.offset(i as isize) == value { + return -(1 as c_int); + } + i += 1; + } + 0 as c_int +} +#[no_mangle] +pub unsafe extern "C" fn spPhysicsConstraintDataArray_pop( + mut self_0: *mut spPhysicsConstraintDataArray, +) -> *mut spPhysicsConstraintData { + (*self_0).size -= 1; + let mut item: *mut spPhysicsConstraintData = *((*self_0).items).offset((*self_0).size as isize); + item +} +#[no_mangle] +pub unsafe extern "C" fn spPhysicsConstraintDataArray_peek( + mut self_0: *mut spPhysicsConstraintDataArray, +) -> *mut spPhysicsConstraintData { + *((*self_0).items).offset(((*self_0).size - 1 as c_int) as isize) } #[no_mangle] pub unsafe extern "C" fn _Entry_create( @@ -24022,26 +26408,27 @@ pub unsafe extern "C" fn _Entry_create( let mut self_0: *mut _Entry = _spCalloc( 1 as c_int as size_t, ::core::mem::size_of::<_Entry>() as c_ulong, - b"spine.c\0" as *const u8 as *const c_char, - 12322 as c_int, - ) as *mut _Entry; + (b"spine.c\0" as *const u8).cast::(), + 13228 as c_int, + ) + .cast::<_Entry>(); (*self_0).slotIndex = slotIndex; - let ref mut fresh213 = *(&mut (*self_0).name as *mut *const c_char as *mut *mut c_char); - *fresh213 = _spMalloc( + (*self_0).name = _spMalloc( (::core::mem::size_of::() as c_ulong) - .wrapping_mul((spine_strlen(name)).wrapping_add(1 as c_int as c_ulong)), - b"spine.c\0" as *const u8 as *const c_char, - 12324 as c_int, - ) as *mut c_char; - spine_strcpy(*fresh213, name); + .wrapping_mul((spine_strlen(name.cast_mut())).wrapping_add(1 as c_int as c_ulong)), + (b"spine.c\0" as *const u8).cast::(), + 13230 as c_int, + ) + .cast::(); + spine_strcpy((*self_0).name, name.cast_mut()); (*self_0).attachment = attachment; - return self_0; + self_0 } #[no_mangle] pub unsafe extern "C" fn _Entry_dispose(mut self_0: *mut _Entry) { spAttachment_dispose((*self_0).attachment); - _spFree((*self_0).name as *mut c_void); - _spFree(self_0 as *mut c_void); + _spFree((*self_0).name.cast::()); + _spFree(self_0.cast::()); } unsafe extern "C" fn _SkinHashTableEntry_create( mut entry: *mut _Entry, @@ -24049,49 +26436,59 @@ unsafe extern "C" fn _SkinHashTableEntry_create( let mut self_0: *mut _SkinHashTableEntry = _spCalloc( 1 as c_int as size_t, ::core::mem::size_of::<_SkinHashTableEntry>() as c_ulong, - b"spine.c\0" as *const u8 as *const c_char, - 12336 as c_int, - ) as *mut _SkinHashTableEntry; + (b"spine.c\0" as *const u8).cast::(), + 13242 as c_int, + ) + .cast::<_SkinHashTableEntry>(); (*self_0).entry = entry; - return self_0; + self_0 } unsafe extern "C" fn _SkinHashTableEntry_dispose(mut self_0: *mut _SkinHashTableEntry) { - _spFree(self_0 as *mut c_void); + _spFree(self_0.cast::()); } #[no_mangle] pub unsafe extern "C" fn spSkin_create(mut name: *const c_char) -> *mut spSkin { - let mut self_0: *mut spSkin = &mut (*((_spCalloc + let mut self_0: *mut spSkin = &mut (*(_spCalloc as unsafe extern "C" fn(size_t, size_t, *const c_char, c_int) -> *mut c_void)( 1 as c_int as size_t, ::core::mem::size_of::<_spSkin>() as c_ulong, - b"spine.c\0" as *const u8 as *const c_char, - 12348 as c_int, - ) as *mut _spSkin)) - .super_0; - let ref mut fresh214 = *(&mut (*self_0).name as *mut *mut c_char); - *fresh214 = _spMalloc( + (b"spine.c\0" as *const u8).cast::(), + 13254 as c_int, + ) + .cast::<_spSkin>()) + .super_0; + (*self_0).name = _spMalloc( (::core::mem::size_of::() as c_ulong) - .wrapping_mul((spine_strlen(name)).wrapping_add(1 as c_int as c_ulong)), - b"spine.c\0" as *const u8 as *const c_char, - 12349 as c_int, - ) as *mut c_char; - spine_strcpy(*fresh214, name); + .wrapping_mul((spine_strlen(name.cast_mut())).wrapping_add(1 as c_int as c_ulong)), + (b"spine.c\0" as *const u8).cast::(), + 13255 as c_int, + ) + .cast::(); + spine_strcpy((*self_0).name, name.cast_mut()); (*self_0).bones = spBoneDataArray_create(4 as c_int); (*self_0).ikConstraints = spIkConstraintDataArray_create(4 as c_int); (*self_0).transformConstraints = spTransformConstraintDataArray_create(4 as c_int); (*self_0).pathConstraints = spPathConstraintDataArray_create(4 as c_int); - return self_0; + (*self_0).physicsConstraints = spPhysicsConstraintDataArray_create(4 as c_int); + spColor_setFromFloats( + &mut (*self_0).color, + 0.99607843f32, + 0.61960787f32, + 0.30980393f32, + 1 as c_int as c_float, + ); + self_0 } #[no_mangle] pub unsafe extern "C" fn spSkin_dispose(mut self_0: *mut spSkin) { - let mut entry: *mut _Entry = (*(self_0 as *mut _spSkin)).entries; + let mut entry: *mut _Entry = (*self_0.cast::<_spSkin>()).entries; while !entry.is_null() { let mut nextEntry: *mut _Entry = (*entry).next; _Entry_dispose(entry); entry = nextEntry; } let mut currentHashtableEntry: *mut *mut _SkinHashTableEntry = - ((*(self_0 as *mut _spSkin)).entriesHashTable).as_mut_ptr(); + ((*self_0.cast::<_spSkin>()).entriesHashTable).as_mut_ptr(); let mut i: c_int = 0; i = 0 as c_int; while i < 100 as c_int { @@ -24108,8 +26505,9 @@ pub unsafe extern "C" fn spSkin_dispose(mut self_0: *mut spSkin) { spIkConstraintDataArray_dispose((*self_0).ikConstraints); spTransformConstraintDataArray_dispose((*self_0).transformConstraints); spPathConstraintDataArray_dispose((*self_0).pathConstraints); - _spFree((*self_0).name as *mut c_void); - _spFree(self_0 as *mut c_void); + spPhysicsConstraintDataArray_dispose((*self_0).physicsConstraints); + _spFree((*self_0).name.cast::()); + _spFree(self_0.cast::()); } #[no_mangle] pub unsafe extern "C" fn spSkin_setAttachment( @@ -24118,8 +26516,8 @@ pub unsafe extern "C" fn spSkin_setAttachment( mut name: *const c_char, mut attachment: *mut spAttachment, ) { - let mut existingEntry: *mut _SkinHashTableEntry = std::ptr::null_mut(); - let mut hashEntry: *mut _SkinHashTableEntry = (*(self_0 as *mut _spSkin)).entriesHashTable + let mut existingEntry: *mut _SkinHashTableEntry = std::ptr::null_mut::<_SkinHashTableEntry>(); + let mut hashEntry: *mut _SkinHashTableEntry = (*self_0.cast::<_spSkin>()).entriesHashTable [(slotIndex as c_uint).wrapping_rem(100 as c_int as c_uint) as usize]; while !hashEntry.is_null() { if (*(*hashEntry).entry).slotIndex == slotIndex @@ -24141,17 +26539,16 @@ pub unsafe extern "C" fn spSkin_setAttachment( (*(*hashEntry).entry).attachment = attachment; } else { let mut newEntry: *mut _Entry = _Entry_create(slotIndex, name, attachment); - (*newEntry).next = (*(self_0 as *mut _spSkin)).entries; - let ref mut fresh215 = (*(self_0 as *mut _spSkin)).entries; - *fresh215 = newEntry; + (*newEntry).next = (*self_0.cast::<_spSkin>()).entries; + let fresh160 = &mut (*self_0.cast::<_spSkin>()).entries; + *fresh160 = newEntry; let mut hashTableIndex: c_uint = (slotIndex as c_uint).wrapping_rem(100 as c_int as c_uint); let mut hashTable: *mut *mut _SkinHashTableEntry = - ((*(self_0 as *mut _spSkin)).entriesHashTable).as_mut_ptr(); + ((*self_0.cast::<_spSkin>()).entriesHashTable).as_mut_ptr(); let mut newHashEntry: *mut _SkinHashTableEntry = _SkinHashTableEntry_create(newEntry); (*newHashEntry).next = *hashTable.offset(hashTableIndex as isize); - let ref mut fresh216 = - (*(self_0 as *mut _spSkin)).entriesHashTable[hashTableIndex as usize]; - *fresh216 = newHashEntry; + let fresh161 = &mut (*self_0.cast::<_spSkin>()).entriesHashTable[hashTableIndex as usize]; + *fresh161 = newHashEntry; }; } #[no_mangle] @@ -24170,7 +26567,7 @@ pub unsafe extern "C" fn spSkin_getAttachment( } hashEntry = (*hashEntry).next; } - return std::ptr::null_mut(); + std::ptr::null_mut::() } #[no_mangle] pub unsafe extern "C" fn spSkin_getAttachmentName( @@ -24189,7 +26586,7 @@ pub unsafe extern "C" fn spSkin_getAttachmentName( } entry = (*entry).next; } - return std::ptr::null(); + std::ptr::null::() } #[no_mangle] pub unsafe extern "C" fn spSkin_attachAll( @@ -24213,7 +26610,7 @@ pub unsafe extern "C" fn spSkin_attachAll( #[no_mangle] pub unsafe extern "C" fn spSkin_addSkin(mut self_0: *mut spSkin, mut other: *const spSkin) { let mut i: c_int = 0 as c_int; - let mut entry: *mut spSkinEntry = std::ptr::null_mut(); + let mut entry: *mut spSkinEntry = std::ptr::null_mut::(); i = 0 as c_int; while i < (*(*other).bones).size { if spBoneDataArray_contains( @@ -24270,6 +26667,20 @@ pub unsafe extern "C" fn spSkin_addSkin(mut self_0: *mut spSkin, mut other: *con } i += 1; } + i = 0 as c_int; + while i < (*(*other).physicsConstraints).size { + if spPhysicsConstraintDataArray_contains( + (*self_0).physicsConstraints, + *((*(*other).physicsConstraints).items).offset(i as isize), + ) == 0 + { + spPhysicsConstraintDataArray_add( + (*self_0).physicsConstraints, + *((*(*other).physicsConstraints).items).offset(i as isize), + ); + } + i += 1; + } entry = spSkin_getAttachments(other); while !entry.is_null() { spSkin_setAttachment( @@ -24284,7 +26695,7 @@ pub unsafe extern "C" fn spSkin_addSkin(mut self_0: *mut spSkin, mut other: *con #[no_mangle] pub unsafe extern "C" fn spSkin_copySkin(mut self_0: *mut spSkin, mut other: *const spSkin) { let mut i: c_int = 0 as c_int; - let mut entry: *mut spSkinEntry = std::ptr::null_mut(); + let mut entry: *mut spSkinEntry = std::ptr::null_mut::(); i = 0 as c_int; while i < (*(*other).bones).size { if spBoneDataArray_contains( @@ -24341,11 +26752,25 @@ pub unsafe extern "C" fn spSkin_copySkin(mut self_0: *mut spSkin, mut other: *co } i += 1; } + i = 0 as c_int; + while i < (*(*other).physicsConstraints).size { + if spPhysicsConstraintDataArray_contains( + (*self_0).physicsConstraints, + *((*(*other).physicsConstraints).items).offset(i as isize), + ) == 0 + { + spPhysicsConstraintDataArray_add( + (*self_0).physicsConstraints, + *((*(*other).physicsConstraints).items).offset(i as isize), + ); + } + i += 1; + } entry = spSkin_getAttachments(other); while !entry.is_null() { if (*(*entry).attachment).type_0 as c_uint == SP_ATTACHMENT_MESH as c_int as c_uint { let mut attachment: *mut spMeshAttachment = - spMeshAttachment_newLinkedMesh((*entry).attachment as *mut spMeshAttachment); + spMeshAttachment_newLinkedMesh((*entry).attachment.cast::()); spSkin_setAttachment( self_0, (*entry).slotIndex, @@ -24356,7 +26781,7 @@ pub unsafe extern "C" fn spSkin_copySkin(mut self_0: *mut spSkin, mut other: *co let mut attachment_0: *mut spAttachment = if !((*entry).attachment).is_null() { spAttachment_copy((*entry).attachment) } else { - std::ptr::null_mut() + std::ptr::null_mut::() }; spSkin_setAttachment(self_0, (*entry).slotIndex, (*entry).name, attachment_0); } @@ -24365,20 +26790,20 @@ pub unsafe extern "C" fn spSkin_copySkin(mut self_0: *mut spSkin, mut other: *co } #[no_mangle] pub unsafe extern "C" fn spSkin_getAttachments(mut self_0: *const spSkin) -> *mut spSkinEntry { - return (*(self_0 as *mut _spSkin)).entries; + (*(self_0 as *mut _spSkin)).entries } #[no_mangle] pub unsafe extern "C" fn spSkin_clear(mut self_0: *mut spSkin) { - let mut entry: *mut _Entry = (*(self_0 as *mut _spSkin)).entries; + let mut entry: *mut _Entry = (*self_0.cast::<_spSkin>()).entries; while !entry.is_null() { let mut nextEntry: *mut _Entry = (*entry).next; _Entry_dispose(entry); entry = nextEntry; } - let ref mut fresh217 = (*(self_0 as *mut _spSkin)).entries; - *fresh217 = std::ptr::null_mut(); + let fresh162 = &mut (*self_0.cast::<_spSkin>()).entries; + *fresh162 = std::ptr::null_mut::<_Entry>(); let mut currentHashtableEntry: *mut *mut _SkinHashTableEntry = - ((*(self_0 as *mut _spSkin)).entriesHashTable).as_mut_ptr(); + ((*self_0.cast::<_spSkin>()).entriesHashTable).as_mut_ptr(); let mut i: c_int = 0; i = 0 as c_int; while i < 100 as c_int { @@ -24388,8 +26813,8 @@ pub unsafe extern "C" fn spSkin_clear(mut self_0: *mut spSkin) { _SkinHashTableEntry_dispose(hashtableEntry); hashtableEntry = nextEntry_0; } - let ref mut fresh218 = (*(self_0 as *mut _spSkin)).entriesHashTable[i as usize]; - *fresh218 = std::ptr::null_mut(); + let fresh163 = &mut (*self_0.cast::<_spSkin>()).entriesHashTable[i as usize]; + *fresh163 = std::ptr::null_mut::<_SkinHashTableEntry>(); i += 1; currentHashtableEntry = currentHashtableEntry.offset(1); } @@ -24397,6 +26822,7 @@ pub unsafe extern "C" fn spSkin_clear(mut self_0: *mut spSkin) { spIkConstraintDataArray_clear((*self_0).ikConstraints); spTransformConstraintDataArray_clear((*self_0).transformConstraints); spPathConstraintDataArray_clear((*self_0).pathConstraints); + spPhysicsConstraintDataArray_clear((*self_0).physicsConstraints); } #[no_mangle] pub unsafe extern "C" fn spSlot_create( @@ -24406,13 +26832,12 @@ pub unsafe extern "C" fn spSlot_create( let mut self_0: *mut spSlot = _spCalloc( 1 as c_int as size_t, ::core::mem::size_of::() as c_ulong, - b"spine.c\0" as *const u8 as *const c_char, - 12594 as c_int, - ) as *mut spSlot; - let ref mut fresh219 = *(&mut (*self_0).data as *mut *mut spSlotData); - *fresh219 = data; - let ref mut fresh220 = *(&mut (*self_0).bone as *mut *mut spBone); - *fresh220 = bone; + (b"spine.c\0" as *const u8).cast::(), + 13514 as c_int, + ) + .cast::(); + (*self_0).data = data; + (*self_0).bone = bone; spColor_setFromFloats( &mut (*self_0).color, 1 as c_int as c_float, @@ -24421,27 +26846,27 @@ pub unsafe extern "C" fn spSlot_create( 1 as c_int as c_float, ); (*self_0).darkColor = if ((*data).darkColor).is_null() { - std::ptr::null_mut() + std::ptr::null_mut::() } else { spColor_create() }; spSlot_setToSetupPose(self_0); - return self_0; + self_0 } #[no_mangle] pub unsafe extern "C" fn spSlot_dispose(mut self_0: *mut spSlot) { - _spFree((*self_0).deform as *mut c_void); - _spFree((*self_0).darkColor as *mut c_void); - _spFree(self_0 as *mut c_void); + _spFree((*self_0).deform.cast::()); + _spFree((*self_0).darkColor.cast::()); + _spFree(self_0.cast::()); } unsafe extern "C" fn isVertexAttachment(mut attachment: *mut spAttachment) -> c_int { if attachment.is_null() { return 0 as c_int; } match (*attachment).type_0 as c_uint { - 1 | 6 | 2 | 4 => return -(1 as c_int), - _ => return 0 as c_int, - }; + 1 | 6 | 2 | 4 => -(1 as c_int), + _ => 0 as c_int, + } } #[no_mangle] pub unsafe extern "C" fn spSlot_setAttachment( @@ -24453,13 +26878,12 @@ pub unsafe extern "C" fn spSlot_setAttachment( } if isVertexAttachment(attachment) == 0 || isVertexAttachment((*self_0).attachment) == 0 - || (*(attachment as *mut spVertexAttachment)).timelineAttachment - != (*((*self_0).attachment as *mut spVertexAttachment)).timelineAttachment + || (*attachment.cast::()).timelineAttachment + != (*(*self_0).attachment.cast::()).timelineAttachment { (*self_0).deformCount = 0 as c_int; } - let ref mut fresh221 = *(&mut (*self_0).attachment as *mut *mut spAttachment); - *fresh221 = attachment; + (*self_0).attachment = attachment; (*self_0).sequenceIndex = -(1 as c_int); } #[no_mangle] @@ -24469,15 +26893,14 @@ pub unsafe extern "C" fn spSlot_setToSetupPose(mut self_0: *mut spSlot) { spColor_setFromColor((*self_0).darkColor, (*(*self_0).data).darkColor); } if ((*(*self_0).data).attachmentName).is_null() { - spSlot_setAttachment(self_0, std::ptr::null_mut()); + spSlot_setAttachment(self_0, std::ptr::null_mut::()); } else { let mut attachment: *mut spAttachment = spSkeleton_getAttachmentForSlotIndex( (*(*self_0).bone).skeleton, (*(*self_0).data).index, (*(*self_0).data).attachmentName, ); - let ref mut fresh222 = *(&mut (*self_0).attachment as *mut *mut spAttachment); - *fresh222 = std::ptr::null_mut(); + (*self_0).attachment = std::ptr::null_mut::(); spSlot_setAttachment(self_0, attachment); }; } @@ -24490,20 +26913,20 @@ pub unsafe extern "C" fn spSlotData_create( let mut self_0: *mut spSlotData = _spCalloc( 1 as c_int as size_t, ::core::mem::size_of::() as c_ulong, - b"spine.c\0" as *const u8 as *const c_char, - 12680 as c_int, - ) as *mut spSlotData; - *(&mut (*self_0).index as *mut c_int) = index; - let ref mut fresh223 = *(&mut (*self_0).name as *mut *mut c_char); - *fresh223 = _spMalloc( + (b"spine.c\0" as *const u8).cast::(), + 13600 as c_int, + ) + .cast::(); + (*self_0).index = index; + (*self_0).name = _spMalloc( (::core::mem::size_of::() as c_ulong) .wrapping_mul((spine_strlen(name)).wrapping_add(1 as c_int as c_ulong)), - b"spine.c\0" as *const u8 as *const c_char, - 12682 as c_int, - ) as *mut c_char; - spine_strcpy(*fresh223, name); - let ref mut fresh224 = *(&mut (*self_0).boneData as *mut *mut spBoneData); - *fresh224 = boneData; + (b"spine.c\0" as *const u8).cast::(), + 13602 as c_int, + ) + .cast::(); + spine_strcpy((*self_0).name, name); + (*self_0).boneData = boneData; spColor_setFromFloats( &mut (*self_0).color, 1 as c_int as c_float, @@ -24511,35 +26934,33 @@ pub unsafe extern "C" fn spSlotData_create( 1 as c_int as c_float, 1 as c_int as c_float, ); - return self_0; + (*self_0).visible = -(1 as c_int); + self_0 } #[no_mangle] pub unsafe extern "C" fn spSlotData_dispose(mut self_0: *mut spSlotData) { - _spFree((*self_0).name as *mut c_void); - _spFree((*self_0).attachmentName as *mut c_void); - _spFree((*self_0).darkColor as *mut c_void); - _spFree(self_0 as *mut c_void); + _spFree((*self_0).name.cast::()); + _spFree((*self_0).attachmentName.cast::()); + _spFree((*self_0).darkColor.cast::()); + _spFree(self_0.cast::()); } #[no_mangle] pub unsafe extern "C" fn spSlotData_setAttachmentName( mut self_0: *mut spSlotData, mut attachmentName: *const c_char, ) { - _spFree((*self_0).attachmentName as *mut c_void); + _spFree((*self_0).attachmentName.cast::()); if !attachmentName.is_null() { - let ref mut fresh225 = - *(&mut (*self_0).attachmentName as *mut *const c_char as *mut *mut c_char); - *fresh225 = _spMalloc( + (*self_0).attachmentName = _spMalloc( (::core::mem::size_of::() as c_ulong) .wrapping_mul((spine_strlen(attachmentName)).wrapping_add(1 as c_int as c_ulong)), - b"spine.c\0" as *const u8 as *const c_char, - 12698 as c_int, - ) as *mut c_char; - spine_strcpy(*fresh225, attachmentName); + (b"spine.c\0" as *const u8).cast::(), + 13619 as c_int, + ) + .cast::(); + spine_strcpy((*self_0).attachmentName, attachmentName); } else { - let ref mut fresh226 = - *(&mut (*self_0).attachmentName as *mut *const c_char as *mut *mut c_char); - *fresh226 = std::ptr::null_mut(); + (*self_0).attachmentName = std::ptr::null_mut::(); }; } #[no_mangle] @@ -24551,12 +26972,11 @@ pub unsafe extern "C" fn spTransformConstraint_create( let mut self_0: *mut spTransformConstraint = _spCalloc( 1 as c_int as size_t, ::core::mem::size_of::() as c_ulong, - b"spine.c\0" as *const u8 as *const c_char, - 12737 as c_int, - ) as *mut spTransformConstraint; - let ref mut fresh227 = *(&(*self_0).data as *const *mut spTransformConstraintData - as *mut *mut spTransformConstraintData); - *fresh227 = data; + (b"spine.c\0" as *const u8).cast::(), + 13658 as c_int, + ) + .cast::(); + (*self_0).data = data; (*self_0).mixRotate = (*data).mixRotate; (*self_0).mixX = (*data).mixX; (*self_0).mixY = (*data).mixY; @@ -24564,29 +26984,29 @@ pub unsafe extern "C" fn spTransformConstraint_create( (*self_0).mixScaleY = (*data).mixScaleY; (*self_0).mixShearY = (*data).mixShearY; (*self_0).bonesCount = (*data).bonesCount; - let ref mut fresh228 = *(&mut (*self_0).bones as *mut *mut *mut spBone); - *fresh228 = _spMalloc( + (*self_0).bones = _spMalloc( (::core::mem::size_of::<*mut spBone>() as c_ulong) .wrapping_mul((*self_0).bonesCount as c_ulong), - b"spine.c\0" as *const u8 as *const c_char, - 12746 as c_int, - ) as *mut *mut spBone; + (b"spine.c\0" as *const u8).cast::(), + 13667 as c_int, + ) + .cast::<*mut spBone>(); i = 0 as c_int; while i < (*self_0).bonesCount { - let ref mut fresh229 = *((*self_0).bones).offset(i as isize); - *fresh229 = spSkeleton_findBone( + let fresh164 = &mut (*((*self_0).bones).offset(i as isize)); + *fresh164 = spSkeleton_findBone( skeleton, (**((*(*self_0).data).bones).offset(i as isize)).name, ); i += 1; } (*self_0).target = spSkeleton_findBone(skeleton, (*(*(*self_0).data).target).name); - return self_0; + self_0 } #[no_mangle] pub unsafe extern "C" fn spTransformConstraint_dispose(mut self_0: *mut spTransformConstraint) { - _spFree((*self_0).bones as *mut c_void); - _spFree(self_0 as *mut c_void); + _spFree((*self_0).bones.cast::()); + _spFree(self_0.cast::()); } #[no_mangle] pub unsafe extern "C" fn _spTransformConstraint_applyAbsoluteWorld( @@ -24606,9 +27026,9 @@ pub unsafe extern "C" fn _spTransformConstraint_applyAbsoluteWorld( let mut tc: c_float = (*target).c; let mut td: c_float = (*target).d; let mut degRadReflect: c_float = if ta * td - tb * tc > 0 as c_int as c_float { - 3.1415926535897932385f32 / 180 as c_int as c_float + 3.141_592_7_f32 / 180 as c_int as c_float } else { - -(3.1415926535897932385f32 / 180 as c_int as c_float) + -(3.141_592_7_f32 / 180 as c_int as c_float) }; let mut offsetRotation: c_float = (*(*self_0).data).offsetRotation * degRadReflect; let mut offsetShearY: c_float = (*(*self_0).data).offsetShearY * degRadReflect; @@ -24633,18 +27053,18 @@ pub unsafe extern "C" fn _spTransformConstraint_applyAbsoluteWorld( c = (*bone).c; d = (*bone).d; r = spine_atan2f(tc, ta) - spine_atan2f(c, a) + offsetRotation; - if r > 3.1415926535897932385f32 { - r -= 3.1415926535897932385f32 * 2 as c_int as c_float; - } else if r < -3.1415926535897932385f32 { - r += 3.1415926535897932385f32 * 2 as c_int as c_float; + if r > 3.141_592_7_f32 { + r -= 3.141_592_7_f32 * 2 as c_int as c_float; + } else if r < -3.141_592_7_f32 { + r += 3.141_592_7_f32 * 2 as c_int as c_float; } r *= mixRotate; cosine = spine_cosf(r); sine = spine_sinf(r); - *(&mut (*bone).a as *mut c_float) = cosine * a - sine * c; - *(&mut (*bone).b as *mut c_float) = cosine * b - sine * d; - *(&mut (*bone).c as *mut c_float) = sine * a + cosine * c; - *(&mut (*bone).d as *mut c_float) = sine * b + cosine * d; + (*bone).a = cosine * a - sine * c; + (*bone).b = cosine * b - sine * d; + (*bone).c = sine * a + cosine * c; + (*bone).d = sine * b + cosine * d; } if translate != 0 { spBone_localToWorld( @@ -24654,8 +27074,8 @@ pub unsafe extern "C" fn _spTransformConstraint_applyAbsoluteWorld( &mut x, &mut y, ); - *(&mut (*bone).worldX as *mut c_float) += (x - (*bone).worldX) * mixX; - *(&mut (*bone).worldY as *mut c_float) += (y - (*bone).worldY) * mixY; + (*bone).worldX += (x - (*bone).worldX) * mixX; + (*bone).worldY += (y - (*bone).worldY) * mixY; } if mixScaleX > 0 as c_int as c_float { s = spine_sqrtf((*bone).a * (*bone).a + (*bone).c * (*bone).c); @@ -24665,8 +27085,8 @@ pub unsafe extern "C" fn _spTransformConstraint_applyAbsoluteWorld( * mixScaleX) / s; } - *(&mut (*bone).a as *mut c_float) *= s; - *(&mut (*bone).c as *mut c_float) *= s; + (*bone).a *= s; + (*bone).c *= s; } if mixScaleY != 0 as c_int as c_float { s = spine_sqrtf((*bone).b * (*bone).b + (*bone).d * (*bone).d); @@ -24676,8 +27096,8 @@ pub unsafe extern "C" fn _spTransformConstraint_applyAbsoluteWorld( * mixScaleY) / s; } - *(&mut (*bone).b as *mut c_float) *= s; - *(&mut (*bone).d as *mut c_float) *= s; + (*bone).b *= s; + (*bone).d *= s; } if mixShearY > 0 as c_int as c_float { b = (*bone).b; @@ -24687,14 +27107,14 @@ pub unsafe extern "C" fn _spTransformConstraint_applyAbsoluteWorld( - spine_atan2f(tc, ta) - (by - spine_atan2f((*bone).c, (*bone).a)); s = spine_sqrtf(b * b + d * d); - if r > 3.1415926535897932385f32 { - r -= 3.1415926535897932385f32 * 2 as c_int as c_float; - } else if r < -3.1415926535897932385f32 { - r += 3.1415926535897932385f32 * 2 as c_int as c_float; + if r > 3.141_592_7_f32 { + r -= 3.141_592_7_f32 * 2 as c_int as c_float; + } else if r < -3.141_592_7_f32 { + r += 3.141_592_7_f32 * 2 as c_int as c_float; } r = by + (r + offsetShearY) * mixShearY; - *(&mut (*bone).b as *mut c_float) = spine_cosf(r) * s; - *(&mut (*bone).d as *mut c_float) = spine_sinf(r) * s; + (*bone).b = spine_cosf(r) * s; + (*bone).d = spine_sinf(r) * s; } spBone_updateAppliedTransform(bone); i += 1; @@ -24718,9 +27138,9 @@ pub unsafe extern "C" fn _spTransformConstraint_applyRelativeWorld( let mut tc: c_float = (*target).c; let mut td: c_float = (*target).d; let mut degRadReflect: c_float = if ta * td - tb * tc > 0 as c_int as c_float { - 3.1415926535897932385f32 / 180 as c_int as c_float + 3.141_592_7_f32 / 180 as c_int as c_float } else { - -(3.1415926535897932385f32 / 180 as c_int as c_float) + -(3.141_592_7_f32 / 180 as c_int as c_float) }; let mut offsetRotation: c_float = (*(*self_0).data).offsetRotation * degRadReflect; let mut offsetShearY: c_float = (*(*self_0).data).offsetShearY * degRadReflect; @@ -24744,18 +27164,18 @@ pub unsafe extern "C" fn _spTransformConstraint_applyRelativeWorld( c = (*bone).c; d = (*bone).d; r = spine_atan2f(tc, ta) + offsetRotation; - if r > 3.1415926535897932385f32 { - r -= 3.1415926535897932385f32 * 2 as c_int as c_float; - } else if r < -3.1415926535897932385f32 { - r += 3.1415926535897932385f32 * 2 as c_int as c_float; + if r > 3.141_592_7_f32 { + r -= 3.141_592_7_f32 * 2 as c_int as c_float; + } else if r < -3.141_592_7_f32 { + r += 3.141_592_7_f32 * 2 as c_int as c_float; } r *= mixRotate; cosine = spine_cosf(r); sine = spine_sinf(r); - *(&mut (*bone).a as *mut c_float) = cosine * a - sine * c; - *(&mut (*bone).b as *mut c_float) = cosine * b - sine * d; - *(&mut (*bone).c as *mut c_float) = sine * a + cosine * c; - *(&mut (*bone).d as *mut c_float) = sine * b + cosine * d; + (*bone).a = cosine * a - sine * c; + (*bone).b = cosine * b - sine * d; + (*bone).c = sine * a + cosine * c; + (*bone).d = sine * b + cosine * d; } if translate != 0 as c_int { spBone_localToWorld( @@ -24765,39 +27185,39 @@ pub unsafe extern "C" fn _spTransformConstraint_applyRelativeWorld( &mut x, &mut y, ); - *(&mut (*bone).worldX as *mut c_float) += x * mixX; - *(&mut (*bone).worldY as *mut c_float) += y * mixY; + (*bone).worldX += x * mixX; + (*bone).worldY += y * mixY; } if mixScaleX != 0 as c_int as c_float { s = (spine_sqrtf(ta * ta + tc * tc) - 1 as c_int as c_float + (*(*self_0).data).offsetScaleX) * mixScaleX + 1 as c_int as c_float; - *(&mut (*bone).a as *mut c_float) *= s; - *(&mut (*bone).c as *mut c_float) *= s; + (*bone).a *= s; + (*bone).c *= s; } if mixScaleY > 0 as c_int as c_float { s = (spine_sqrtf(tb * tb + td * td) - 1 as c_int as c_float + (*(*self_0).data).offsetScaleY) * mixScaleY + 1 as c_int as c_float; - *(&mut (*bone).b as *mut c_float) *= s; - *(&mut (*bone).d as *mut c_float) *= s; + (*bone).b *= s; + (*bone).d *= s; } if mixShearY > 0 as c_int as c_float { r = spine_atan2f(td, tb) - spine_atan2f(tc, ta); - if r > 3.1415926535897932385f32 { - r -= 3.1415926535897932385f32 * 2 as c_int as c_float; - } else if r < -3.1415926535897932385f32 { - r += 3.1415926535897932385f32 * 2 as c_int as c_float; + if r > 3.141_592_7_f32 { + r -= 3.141_592_7_f32 * 2 as c_int as c_float; + } else if r < -3.141_592_7_f32 { + r += 3.141_592_7_f32 * 2 as c_int as c_float; } b = (*bone).b; d = (*bone).d; r = spine_atan2f(d, b) - + (r - 3.1415926535897932385f32 / 2 as c_int as c_float + offsetShearY) * mixShearY; + + (r - 3.141_592_7_f32 / 2 as c_int as c_float + offsetShearY) * mixShearY; s = spine_sqrtf(b * b + d * d); - *(&mut (*bone).b as *mut c_float) = spine_cosf(r) * s; - *(&mut (*bone).d as *mut c_float) = spine_sinf(r) * s; + (*bone).b = spine_cosf(r) * s; + (*bone).d = spine_sinf(r) * s; } spBone_updateAppliedTransform(bone); i += 1; @@ -24828,9 +27248,8 @@ pub unsafe extern "C" fn _spTransformConstraint_applyAbsoluteLocal( rotation = (*bone).arotation; if mixRotate != 0 as c_int as c_float { r = (*target).arotation - rotation + (*(*self_0).data).offsetRotation; - r -= ((16384 as c_int - - (16384.499999999996f64 - (r / 360 as c_int as c_float) as c_double) as c_int) - * 360 as c_int) as c_float; + r -= spine_ceil((r / 360 as c_int as c_float) as c_double - 0.5f64) as c_float + * 360 as c_int as c_float; rotation += r * mixRotate; } x = (*bone).ax; @@ -24852,9 +27271,8 @@ pub unsafe extern "C" fn _spTransformConstraint_applyAbsoluteLocal( shearY = (*bone).ashearY; if mixShearY != 0 as c_int as c_float { r = (*target).ashearY - shearY + (*(*self_0).data).offsetShearY; - r -= ((16384 as c_int - - (16384.499999999996f64 - (r / 360 as c_int as c_float) as c_double) as c_int) - * 360 as c_int) as c_float; + r -= spine_ceil((r / 360 as c_int as c_float) as c_double - 0.5f64) as c_float + * 360 as c_int as c_float; shearY += r * mixShearY; } spBone_updateWorldTransformWith( @@ -24941,41 +27359,55 @@ pub unsafe extern "C" fn spTransformConstraint_update(mut self_0: *mut spTransfo }; } #[no_mangle] +pub unsafe extern "C" fn spTransformConstraint_setToSetupPose( + mut self_0: *mut spTransformConstraint, +) { + let mut data: *mut spTransformConstraintData = (*self_0).data; + (*self_0).mixRotate = (*data).mixRotate; + (*self_0).mixX = (*data).mixX; + (*self_0).mixY = (*data).mixY; + (*self_0).mixScaleX = (*data).mixScaleX; + (*self_0).mixScaleY = (*data).mixScaleY; + (*self_0).mixShearY = (*data).mixShearY; +} +#[no_mangle] pub unsafe extern "C" fn spTransformConstraintData_create( mut name: *const c_char, ) -> *mut spTransformConstraintData { let mut self_0: *mut spTransformConstraintData = _spCalloc( 1 as c_int as size_t, ::core::mem::size_of::() as c_ulong, - b"spine.c\0" as *const u8 as *const c_char, - 12994 as c_int, - ) as *mut spTransformConstraintData; - let ref mut fresh230 = *(&mut (*self_0).name as *mut *mut c_char); - *fresh230 = _spMalloc( + (b"spine.c\0" as *const u8).cast::(), + 13925 as c_int, + ) + .cast::(); + (*self_0).name = _spMalloc( (::core::mem::size_of::() as c_ulong) .wrapping_mul((spine_strlen(name)).wrapping_add(1 as c_int as c_ulong)), - b"spine.c\0" as *const u8 as *const c_char, - 12995 as c_int, - ) as *mut c_char; - spine_strcpy(*fresh230, name); - return self_0; + (b"spine.c\0" as *const u8).cast::(), + 13926 as c_int, + ) + .cast::(); + spine_strcpy((*self_0).name, name); + self_0 } #[no_mangle] pub unsafe extern "C" fn spTransformConstraintData_dispose( mut self_0: *mut spTransformConstraintData, ) { - _spFree((*self_0).name as *mut c_void); - _spFree((*self_0).bones as *mut c_void); - _spFree(self_0 as *mut c_void); + _spFree((*self_0).name.cast::()); + _spFree((*self_0).bones.cast::()); + _spFree(self_0.cast::()); } #[no_mangle] pub unsafe extern "C" fn spTriangulator_create() -> *mut spTriangulator { let mut triangulator: *mut spTriangulator = _spCalloc( 1 as c_int as size_t, ::core::mem::size_of::() as c_ulong, - b"spine.c\0" as *const u8 as *const c_char, - 13038 as c_int, - ) as *mut spTriangulator; + (b"spine.c\0" as *const u8).cast::(), + 13969 as c_int, + ) + .cast::(); (*triangulator).convexPolygons = spArrayFloatArray_create(16 as c_int); (*triangulator).convexPolygonsIndices = spArrayShortArray_create(16 as c_int); (*triangulator).indicesArray = spShortArray_create(128 as c_int); @@ -24983,7 +27415,7 @@ pub unsafe extern "C" fn spTriangulator_create() -> *mut spTriangulator { (*triangulator).triangles = spShortArray_create(128 as c_int); (*triangulator).polygonPool = spArrayFloatArray_create(16 as c_int); (*triangulator).polygonIndicesPool = spArrayShortArray_create(128 as c_int); - return triangulator; + triangulator } #[no_mangle] pub unsafe extern "C" fn spTriangulator_dispose(mut self_0: *mut spTriangulator) { @@ -25015,14 +27447,14 @@ pub unsafe extern "C" fn spTriangulator_dispose(mut self_0: *mut spTriangulator) i += 1; } spArrayShortArray_dispose((*self_0).polygonIndicesPool); - _spFree(self_0 as *mut c_void); + _spFree(self_0.cast::()); } unsafe extern "C" fn _obtainPolygon(mut self_0: *mut spTriangulator) -> *mut spFloatArray { if (*(*self_0).polygonPool).size == 0 as c_int { - return spFloatArray_create(16 as c_int); + spFloatArray_create(16 as c_int) } else { - return spArrayFloatArray_pop((*self_0).polygonPool); - }; + spArrayFloatArray_pop((*self_0).polygonPool) + } } unsafe extern "C" fn _freePolygon(mut self_0: *mut spTriangulator, mut polygon: *mut spFloatArray) { spArrayFloatArray_add((*self_0).polygonPool, polygon); @@ -25040,10 +27472,10 @@ unsafe extern "C" fn _freeAllPolygons( } unsafe extern "C" fn _obtainPolygonIndices(mut self_0: *mut spTriangulator) -> *mut spShortArray { if (*(*self_0).polygonIndicesPool).size == 0 as c_int { - return spShortArray_create(16 as c_int); + spShortArray_create(16 as c_int) } else { - return spArrayShortArray_pop((*self_0).polygonIndicesPool); - }; + spArrayShortArray_pop((*self_0).polygonIndicesPool) + } } unsafe extern "C" fn _freePolygonIndices( mut self_0: *mut spTriangulator, @@ -25070,8 +27502,7 @@ unsafe extern "C" fn _positiveArea( mut p3x: c_float, mut p3y: c_float, ) -> c_int { - return (p1x * (p3y - p2y) + p2x * (p1y - p3y) + p3x * (p2y - p1y) >= 0 as c_int as c_float) - as c_int; + (p1x * (p3y - p2y) + p2x * (p1y - p3y) + p3x * (p2y - p1y) >= 0 as c_int as c_float) as c_int } unsafe extern "C" fn _isConcave( mut index: c_int, @@ -25085,14 +27516,14 @@ unsafe extern "C" fn _isConcave( let mut current: c_int = (*indices.offset(index as isize) as c_int) << 1 as c_int; let mut next: c_int = (*indices.offset(((index + 1 as c_int) % vertexCount) as isize) as c_int) << 1 as c_int; - return (_positiveArea( + (_positiveArea( *vertices.offset(previous as isize), *vertices.offset((previous + 1 as c_int) as isize), *vertices.offset(current as isize), *vertices.offset((current + 1 as c_int) as isize), *vertices.offset(next as isize), *vertices.offset((next + 1 as c_int) as isize), - ) == 0) as c_int; + ) == 0) as c_int } unsafe extern "C" fn _winding( mut p1x: c_float, @@ -25104,11 +27535,11 @@ unsafe extern "C" fn _winding( ) -> c_int { let mut px: c_float = p2x - p1x; let mut py: c_float = p2y - p1y; - return if p3x * py - p3y * px + px * p1y - p1x * py >= 0 as c_int as c_float { + if p3x * py - p3y * px + px * p1y - p1x * py >= 0 as c_int as c_float { 1 as c_int } else { -(1 as c_int) - }; + } } #[no_mangle] pub unsafe extern "C" fn spTriangulator_triangulate( @@ -25121,10 +27552,10 @@ pub unsafe extern "C" fn spTriangulator_triangulate( let mut n: c_int = 0; let mut ii: c_int = 0; let mut indicesArray: *mut spShortArray = (*self_0).indicesArray; - let mut indices: *mut c_short = std::ptr::null_mut(); - let mut isConcaveArray: *mut spIntArray = std::ptr::null_mut(); - let mut isConcave: *mut c_int = std::ptr::null_mut(); - let mut triangles: *mut spShortArray = std::ptr::null_mut(); + let mut indices: *mut c_short = std::ptr::null_mut::(); + let mut isConcaveArray: *mut spIntArray = std::ptr::null_mut::(); + let mut isConcave: *mut c_int = std::ptr::null_mut::(); + let mut triangles: *mut spShortArray = std::ptr::null_mut::(); spShortArray_clear(indicesArray); indices = (*spShortArray_setSize(indicesArray, vertexCount)).items; i = 0 as c_int; @@ -25169,31 +27600,30 @@ pub unsafe extern "C" fn spTriangulator_triangulate( let mut p3y: c_float = *vertices.offset((p3 + 1 as c_int) as isize); ii = (next + 1 as c_int) % vertexCount; loop { - if !(ii != previous) { + if ii == previous { break 's_80; } let mut v: c_int = 0; let mut vx: c_float = 0.; let mut vy: c_float = 0.; - if !(*isConcave.offset(ii as isize) == 0) { + if *isConcave.offset(ii as isize) != 0 { v = (*indices.offset(ii as isize) as c_int) << 1 as c_int; vx = *vertices.offset(v as isize); vy = *vertices.offset((v + 1 as c_int) as isize); - if _positiveArea(p3x, p3y, p1x, p1y, vx, vy) != 0 { - if _positiveArea(p1x, p1y, p2x, p2y, vx, vy) != 0 { - if _positiveArea(p2x, p2y, p3x, p3y, vx, vy) != 0 { - break; - } - } + if _positiveArea(p3x, p3y, p1x, p1y, vx, vy) != 0 + && _positiveArea(p1x, p1y, p2x, p2y, vx, vy) != 0 + && _positiveArea(p2x, p2y, p3x, p3y, vx, vy) != 0 + { + break; } } ii = (ii + 1 as c_int) % vertexCount; } } if next == 0 as c_int { - while !(*isConcave.offset(i as isize) == 0) { + while *isConcave.offset(i as isize) != 0 { i -= 1; - if !(i > 0 as c_int) { + if i <= 0 as c_int { break; } } @@ -25228,7 +27658,7 @@ pub unsafe extern "C" fn spTriangulator_triangulate( spShortArray_add(triangles, *indices.offset(0 as c_int as isize)); spShortArray_add(triangles, *indices.offset(1 as c_int as isize)); } - return triangles; + triangles } #[no_mangle] pub unsafe extern "C" fn spTriangulator_decompose( @@ -25238,12 +27668,13 @@ pub unsafe extern "C" fn spTriangulator_decompose( ) -> *mut spArrayFloatArray { let mut vertices: *mut c_float = (*verticesArray).items; let mut convexPolygons: *mut spArrayFloatArray = (*self_0).convexPolygons; - let mut convexPolygonsIndices: *mut spArrayShortArray = std::ptr::null_mut(); - let mut polygonIndices: *mut spShortArray = std::ptr::null_mut(); - let mut polygon: *mut spFloatArray = std::ptr::null_mut(); + let mut convexPolygonsIndices: *mut spArrayShortArray = + std::ptr::null_mut::(); + let mut polygonIndices: *mut spShortArray = std::ptr::null_mut::(); + let mut polygon: *mut spFloatArray = std::ptr::null_mut::(); let mut fanBaseIndex: c_int = 0; let mut lastWinding: c_int = 0; - let mut trianglesItems: *mut c_short = std::ptr::null_mut(); + let mut trianglesItems: *mut c_short = std::ptr::null_mut::(); let mut i: c_int = 0; let mut n: c_int = 0; _freeAllPolygons(self_0, convexPolygons); @@ -25335,7 +27766,7 @@ pub unsafe extern "C" fn spTriangulator_decompose( let mut firstIndex: c_int = 0; let mut lastIndex: c_int = 0; let mut o_0: c_int = 0; - let mut p_0: *mut c_float = std::ptr::null_mut(); + let mut p_0: *mut c_float = std::ptr::null_mut::(); let mut prevPrevX: c_float = 0.; let mut prevPrevY: c_float = 0.; let mut prevX: c_float = 0.; @@ -25347,7 +27778,7 @@ pub unsafe extern "C" fn spTriangulator_decompose( let mut winding: c_int = 0; let mut ii: c_int = 0; polygonIndices = *((*convexPolygonsIndices).items).offset(i as isize); - if !((*polygonIndices).size == 0 as c_int) { + if (*polygonIndices).size != 0 as c_int { firstIndex = *((*polygonIndices).items).offset(0 as c_int as isize) as c_int; lastIndex = *((*polygonIndices).items) .offset(((*polygonIndices).size - 1 as c_int) as isize) @@ -25366,18 +27797,18 @@ pub unsafe extern "C" fn spTriangulator_decompose( winding = _winding(prevPrevX, prevPrevY, prevX, prevY, firstX, firstY); ii = 0 as c_int; while ii < n { - let mut otherIndices: *mut spShortArray = std::ptr::null_mut(); + let mut otherIndices: *mut spShortArray = std::ptr::null_mut::(); let mut otherFirstIndex: c_int = 0; let mut otherSecondIndex: c_int = 0; let mut otherLastIndex: c_int = 0; - let mut otherPoly: *mut spFloatArray = std::ptr::null_mut(); + let mut otherPoly: *mut spFloatArray = std::ptr::null_mut::(); let mut x3_0: c_float = 0.; let mut y3_0: c_float = 0.; let mut winding1_0: c_int = 0; let mut winding2_0: c_int = 0; - if !(ii == i) { + if ii != i { otherIndices = *((*convexPolygonsIndices).items).offset(ii as isize); - if !((*otherIndices).size != 3 as c_int) { + if (*otherIndices).size == 3 as c_int { otherFirstIndex = *((*otherIndices).items).offset(0 as c_int as isize) as c_int; otherSecondIndex = @@ -25424,21 +27855,21 @@ pub unsafe extern "C" fn spTriangulator_decompose( } i -= 1; } - return convexPolygons; + convexPolygons } static mut nextID: c_int = 0 as c_int; #[no_mangle] pub unsafe extern "C" fn _spVertexAttachment_init(mut attachment: *mut spVertexAttachment) { - let fresh231 = nextID; - nextID = nextID + 1; - (*attachment).id = fresh231; + let fresh165 = nextID; + nextID += 1; + (*attachment).id = fresh165; (*attachment).timelineAttachment = &mut (*attachment).super_0; } #[no_mangle] pub unsafe extern "C" fn _spVertexAttachment_deinit(mut attachment: *mut spVertexAttachment) { _spAttachment_deinit(&mut (*attachment).super_0); - _spFree((*attachment).bones as *mut c_void); - _spFree((*attachment).vertices as *mut c_void); + _spFree((*attachment).bones.cast::()); + _spFree((*attachment).vertices.cast::()); } #[no_mangle] pub unsafe extern "C" fn spVertexAttachment_computeWorldVertices( @@ -25450,15 +27881,15 @@ pub unsafe extern "C" fn spVertexAttachment_computeWorldVertices( mut offset: c_int, mut stride: c_int, ) { - let mut skeleton: *mut spSkeleton = std::ptr::null_mut(); + let mut skeleton: *mut spSkeleton = std::ptr::null_mut::(); let mut deformLength: c_int = 0; - let mut deformArray: *mut c_float = std::ptr::null_mut(); - let mut vertices: *mut c_float = std::ptr::null_mut(); - let mut bones: *mut c_int = std::ptr::null_mut(); + let mut deformArray: *mut c_float = std::ptr::null_mut::(); + let mut vertices: *mut c_float = std::ptr::null_mut::(); + let mut bones: *mut c_int = std::ptr::null_mut::(); if (*self_0).super_0.type_0 as c_uint == SP_ATTACHMENT_MESH as c_int as c_uint || (*self_0).super_0.type_0 as c_uint == SP_ATTACHMENT_LINKED_MESH as c_int as c_uint { - let mut mesh: *mut spMeshAttachment = self_0 as *mut spMeshAttachment; + let mut mesh: *mut spMeshAttachment = self_0.cast::(); if !((*mesh).sequence).is_null() { spSequence_apply((*mesh).sequence, slot, &mut (*self_0).super_0); } @@ -25470,7 +27901,7 @@ pub unsafe extern "C" fn spVertexAttachment_computeWorldVertices( vertices = (*self_0).vertices; bones = (*self_0).bones; if bones.is_null() { - let mut bone: *mut spBone = std::ptr::null_mut(); + let mut bone: *mut spBone = std::ptr::null_mut::(); let mut v: c_int = 0; let mut w: c_int = 0; let mut x: c_float = 0.; @@ -25495,7 +27926,7 @@ pub unsafe extern "C" fn spVertexAttachment_computeWorldVertices( let mut v_0: c_int = 0 as c_int; let mut skip_0: c_int = 0 as c_int; let mut i: c_int = 0; - let mut skeletonBones: *mut *mut spBone = std::ptr::null_mut(); + let mut skeletonBones: *mut *mut spBone = std::ptr::null_mut::<*mut spBone>(); i = 0 as c_int; while i < start { let mut n: c_int = *bones.offset(v_0 as isize); @@ -25512,9 +27943,9 @@ pub unsafe extern "C" fn spVertexAttachment_computeWorldVertices( while w_0 < count { let mut wx: c_float = 0 as c_int as c_float; let mut wy: c_float = 0 as c_int as c_float; - let fresh232 = v_0; - v_0 = v_0 + 1; - let mut n_0: c_int = *bones.offset(fresh232 as isize); + let fresh166 = v_0; + v_0 += 1; + let mut n_0: c_int = *bones.offset(fresh166 as isize); n_0 += v_0; while v_0 < n_0 { let mut bone_0: *mut spBone = @@ -25541,9 +27972,9 @@ pub unsafe extern "C" fn spVertexAttachment_computeWorldVertices( while w_1 < count { let mut wx_0: c_float = 0 as c_int as c_float; let mut wy_0: c_float = 0 as c_int as c_float; - let fresh233 = v_0; - v_0 = v_0 + 1; - let mut n_1: c_int = *bones.offset(fresh233 as isize); + let fresh167 = v_0; + v_0 += 1; + let mut n_1: c_int = *bones.offset(fresh167 as isize); n_1 += v_0; while v_0 < n_1 { let mut bone_1: *mut spBone = @@ -25576,11 +28007,12 @@ pub unsafe extern "C" fn spVertexAttachment_copyTo( (*to).bones = _spMalloc( (::core::mem::size_of::() as c_ulong) .wrapping_mul((*from).bonesCount as c_ulong), - b"spine.c\0" as *const u8 as *const c_char, - 13499 as c_int, - ) as *mut c_int; + (b"spine.c\0" as *const u8).cast::(), + 14430 as c_int, + ) + .cast::(); spine_memcpy( - (*to).bones as *mut c_void, + (*to).bones.cast::(), (*from).bones as *const c_void, ((*from).bonesCount as c_ulong) .wrapping_mul(::core::mem::size_of::() as c_ulong), @@ -25588,8 +28020,8 @@ pub unsafe extern "C" fn spVertexAttachment_copyTo( } else { (*to).bonesCount = 0 as c_int; if !((*to).bones).is_null() { - _spFree((*to).bones as *mut c_void); - (*to).bones = std::ptr::null_mut(); + _spFree((*to).bones.cast::()); + (*to).bones = std::ptr::null_mut::(); } } if (*from).verticesCount != 0 { @@ -25597,11 +28029,12 @@ pub unsafe extern "C" fn spVertexAttachment_copyTo( (*to).vertices = _spMalloc( (::core::mem::size_of::() as c_ulong) .wrapping_mul((*from).verticesCount as c_ulong), - b"spine.c\0" as *const u8 as *const c_char, - 13511 as c_int, - ) as *mut c_float; + (b"spine.c\0" as *const u8).cast::(), + 14442 as c_int, + ) + .cast::(); spine_memcpy( - (*to).vertices as *mut c_void, + (*to).vertices.cast::(), (*from).vertices as *const c_void, ((*from).verticesCount as c_ulong) .wrapping_mul(::core::mem::size_of::() as c_ulong), @@ -25609,15 +28042,15 @@ pub unsafe extern "C" fn spVertexAttachment_copyTo( } else { (*to).verticesCount = 0 as c_int; if !((*to).vertices).is_null() { - _spFree((*to).vertices as *mut c_void); - (*to).vertices = std::ptr::null_mut(); + _spFree((*to).vertices.cast::()); + (*to).vertices = std::ptr::null_mut::(); } } (*to).worldVerticesLength = (*from).worldVerticesLength; } #[no_mangle] pub unsafe extern "C" fn _spInternalRandom() -> c_float { - return spine_rand() as c_float / 2147483647 as c_int as c_float; + spine_rand() as c_float / 2147483647 as c_int as c_float } static mut mallocFunc: Option *mut c_void> = Some(spine_malloc as unsafe extern "C" fn(size_t) -> *mut c_void); @@ -25628,12 +28061,8 @@ static mut debugMallocFunc: Option< > = None; static mut freeFunc: Option ()> = Some(spine_free as unsafe extern "C" fn(*mut c_void) -> ()); -static mut randomFunc: Option c_float> = unsafe { - Some(::core::mem::transmute::< - unsafe extern "C" fn() -> c_float, - unsafe extern "C" fn() -> c_float, - >(_spInternalRandom)) -}; +static mut randomFunc: Option c_float> = + Some(_spInternalRandom as unsafe extern "C" fn() -> c_float); #[no_mangle] pub unsafe extern "C" fn _spMalloc( mut size: size_t, @@ -25643,7 +28072,7 @@ pub unsafe extern "C" fn _spMalloc( if debugMallocFunc.is_some() { return debugMallocFunc.expect("non-null function pointer")(size, file, line); } - return mallocFunc.expect("non-null function pointer")(size); + mallocFunc.expect("non-null function pointer")(size) } #[no_mangle] pub unsafe extern "C" fn _spCalloc( @@ -25656,11 +28085,11 @@ pub unsafe extern "C" fn _spCalloc( if !ptr.is_null() { spine_memset(ptr, 0 as c_int, num.wrapping_mul(size)); } - return ptr; + ptr } #[no_mangle] pub unsafe extern "C" fn _spRealloc(mut ptr: *mut c_void, mut size: size_t) -> *mut c_void { - return reallocFunc.expect("non-null function pointer")(ptr, size); + reallocFunc.expect("non-null function pointer")(ptr, size) } #[no_mangle] pub unsafe extern "C" fn _spFree(mut ptr: *mut c_void) { @@ -25668,9 +28097,7 @@ pub unsafe extern "C" fn _spFree(mut ptr: *mut c_void) { } #[no_mangle] pub unsafe extern "C" fn _spRandom() -> c_float { - return ::core::mem::transmute::<_, fn() -> c_float>( - randomFunc.expect("non-null function pointer"), - )(); + randomFunc.expect("non-null function pointer")() } #[no_mangle] pub unsafe extern "C" fn _spSetDebugMalloc( @@ -25705,36 +28132,36 @@ pub unsafe extern "C" fn _spReadFile( mut path: *const c_char, mut length: *mut c_int, ) -> *mut c_char { - let mut data: *mut c_char = std::ptr::null_mut(); - let mut _result: size_t = 0; - let mut file: *mut FILE = spine_fopen(path, b"rb\0" as *const u8 as *const c_char); + let mut data: *mut c_char = std::ptr::null_mut::(); + let mut file: *mut FILE = spine_fopen(path, (b"rb\0" as *const u8).cast::()); if file.is_null() { - return std::ptr::null_mut(); + return std::ptr::null_mut::(); } spine_fseek(file, 0 as c_int as c_long, 2 as c_int); *length = spine_ftell(file) as c_int; spine_fseek(file, 0 as c_int as c_long, 0 as c_int); data = _spMalloc( (::core::mem::size_of::() as c_ulong).wrapping_mul(*length as c_ulong), - b"spine.c\0" as *const u8 as *const c_char, - 13623 as c_int, - ) as *mut c_char; - _result = spine_fread( - data as *mut c_void, + (b"spine.c\0" as *const u8).cast::(), + 14554 as c_int, + ) + .cast::(); + spine_fread( + data.cast::(), 1 as c_int as size_t, *length as size_t, file, ); spine_fclose(file); - return data; + data } #[no_mangle] pub unsafe extern "C" fn _spMath_random(mut min: c_float, mut max: c_float) -> c_float { - return min + (max - min) * _spRandom(); + min + (max - min) * _spRandom() } #[no_mangle] pub unsafe extern "C" fn _spMath_randomTriangular(mut min: c_float, mut max: c_float) -> c_float { - return _spMath_randomTriangularWith(min, max, (min + max) * 0.5f32); + _spMath_randomTriangularWith(min, max, (min + max) * 0.5f32) } #[no_mangle] pub unsafe extern "C" fn _spMath_randomTriangularWith( @@ -25747,7 +28174,7 @@ pub unsafe extern "C" fn _spMath_randomTriangularWith( if u <= (mode - min) / d { return min + spine_sqrtf(u * d * (mode - min)); } - return max - spine_sqrtf((1 as c_int as c_float - u) * d * (max - mode)); + max - spine_sqrtf((1 as c_int as c_float - u) * d * (max - mode)) } #[no_mangle] pub unsafe extern "C" fn _spMath_interpolate( @@ -25756,7 +28183,7 @@ pub unsafe extern "C" fn _spMath_interpolate( mut end: c_float, mut a: c_float, ) -> c_float { - return start + (end - start) * apply.expect("non-null function pointer")(a); + start + (end - start) * apply.expect("non-null function pointer")(a) } #[no_mangle] pub unsafe extern "C" fn _spMath_pow2_apply(mut a: c_float) -> c_float { @@ -25766,19 +28193,19 @@ pub unsafe extern "C" fn _spMath_pow2_apply(mut a: c_float) -> c_float { 2 as c_int as c_double, ) / 2 as c_int as c_double) as c_float; } - return (spine_pow( + (spine_pow( ((a - 1 as c_int as c_float) * 2 as c_int as c_float) as c_double, 2 as c_int as c_double, ) / -(2 as c_int) as c_double - + 1 as c_int as c_double) as c_float; + + 1 as c_int as c_double) as c_float } #[no_mangle] pub unsafe extern "C" fn _spMath_pow2out_apply(mut a: c_float) -> c_float { - return (spine_pow( + (spine_pow( (a - 1 as c_int as c_float) as c_double, 2 as c_int as c_double, ) * -(1 as c_int) as c_double - + 1 as c_int as c_double) as c_float; + + 1 as c_int as c_double) as c_float } type _IO_wide_data = u8; diff --git a/src/c/wasm.rs b/src/c/wasm.rs index 644123b..f5c67d6 100644 --- a/src/c/wasm.rs +++ b/src/c/wasm.rs @@ -529,6 +529,36 @@ pub unsafe extern "C" fn spine_strcpy(mut to: *mut c_char, mut from: *const c_ch save } +#[no_mangle] +pub unsafe extern "C" fn spine_strncpy( + dst: *mut c_char, + src: *const c_char, + mut n: size_t, +) -> *mut c_char { + if n != 0 { + let mut d = dst; + let mut s = src; + loop { + *d = *s; + if *s as c_int == '\0' as i32 { + while n != 0 { + *d = 0; + d = d.offset(1); + n -= 1; + } + break; + } + s = s.offset(1); + d = d.offset(1); + n -= 1; + if n == 0 { + break; + } + } + } + dst +} + #[no_mangle] pub unsafe extern "C" fn spine_strncat( dst: *mut c_char, @@ -795,6 +825,11 @@ extern "C" fn spine_sqrtf(x: c_float) -> c_float { x.sqrt() } +#[no_mangle] +extern "C" fn spine_ceil(x: c_double) -> c_double { + x.ceil() +} + #[no_mangle] extern "C" fn spine_acosf(x: c_float) -> c_float { x.acos() @@ -928,14 +963,15 @@ fn fmt(format: &str, args: &[Box]) -> String { panic!("Unsupported printf argument type"); } } - 's' => arg.downcast_ref::<*const c_char>().map_or_else( - || { - panic!("Unsupported printf argument type"); - }, - |s| { + 's' => { + if let Some(s) = arg.downcast_ref::<*const c_char>() { + new_str += unsafe { CStr::from_ptr(*s).to_str().unwrap() }; + } else if let Some(s) = arg.downcast_ref::<*mut c_char>() { new_str += unsafe { CStr::from_ptr(*s).to_str().unwrap() }; - }, - ), + } else { + panic!("Unsupported printf argument type"); + } + } 'f' => { if let Some(f) = arg.downcast_ref::() { new_str += &format!("{:.6}", *f); @@ -973,12 +1009,16 @@ pub(crate) fn printf(c_format: *const c_char, args: &[Box]) { print!("{}", fmt(&format, args)); } -pub(crate) fn sprintf(c_str: *mut c_char, c_format: *const c_char, args: &[Box]) { +pub(crate) fn snprintf( + c_out: *mut c_char, + c_len: size_t, + c_format: *const c_char, + args: &[Box], +) { let format = unsafe { CStr::from_ptr(c_format).to_str().unwrap().to_owned() }; - let result = fmt(&format, args); + let c_formatted = CString::new(fmt(&format, args)).unwrap(); unsafe { - let str = CString::new(result).unwrap(); - spine_strcpy(c_str, str.as_ptr()); + spine_strncpy(c_out, c_formatted.as_ptr(), c_len); } } @@ -1002,12 +1042,12 @@ macro_rules! spine_printf { }; } -macro_rules! spine_sprintf { - ($str:expr, $format:expr) => { - crate::c::wasm::sprintf($str, $format, vec![]); +macro_rules! spine_snprintf { + ($str:expr, $len:expr, $format:expr) => { + crate::c::wasm::snprintf($str, $len, $format, &[]); }; - ($str:expr, $format:expr, $($arg:expr),+ $(,)? ) => { - crate::c::wasm::sprintf($str, $format, &[ + ($str:expr, $len:expr, $format:expr, $($arg:expr),+ $(,)? ) => { + crate::c::wasm::snprintf($str, $len, $format, &[ $(Box::new($arg)),+ ]); }; @@ -1024,10 +1064,11 @@ macro_rules! spine_sscanf { #[cfg(test)] mod tests { - use std::ffi::CString; + use std::ffi::{CStr, CString}; use crate::c::{ c_uint, + environment::spine_strncpy, wasm::{spine_strtol, spine_strtoul}, }; @@ -1067,6 +1108,55 @@ mod tests { } } + #[test] + fn strcpy() { + unsafe { + let mut dst: [super::c_char; 255] = [0; 255]; + let src = CString::new("1234 hello world").unwrap(); + spine_strncpy(dst.as_mut_ptr(), src.as_ptr(), 255); + let string = CStr::from_ptr(dst.as_ptr()).to_string_lossy().to_string(); + assert_eq!(string.as_str(), "1234 hello world"); + + let mut dst: [super::c_char; 10] = [10; 10]; + let src = CString::new("1234 hello world").unwrap(); + spine_strncpy(dst.as_mut_ptr(), src.as_ptr(), 10); + let string = CStr::from_ptr(dst.as_ptr()).to_string_lossy().to_string(); + assert_eq!(string.as_str(), "1234 hello"); //strcpy doesn't add null byte + + let mut dst: [super::c_char; 10] = [10; 10]; + let src = CString::new("1234").unwrap(); + spine_strncpy(dst.as_mut_ptr(), src.as_ptr(), 10); + let string = CStr::from_ptr(dst.as_ptr()).to_string_lossy().to_string(); + assert_eq!(string.as_str(), "1234"); + } + } + + #[test] + fn strncpy() { + unsafe { + let mut dst: [super::c_char; 255] = [0; 255]; + let src = CString::new("1234 hello world").unwrap(); + spine_strncpy(dst.as_mut_ptr(), src.as_ptr(), 255); + let string = CStr::from_ptr(dst.as_ptr()).to_string_lossy().to_string(); + assert_eq!(string.as_str(), "1234 hello world"); + + let mut dst: [super::c_char; 10] = [10; 10]; + let src = CString::new("1234 hello world").unwrap(); + spine_strncpy(dst.as_mut_ptr(), src.as_ptr(), 10); + let string = CStr::from_ptr(dst.as_ptr()).to_string_lossy().to_string(); + assert_eq!(string.as_str(), "1234 hello"); //strncpy doesn't add null byte + + let mut dst: [super::c_char; 10] = [10; 10]; + let src = CString::new("1234").unwrap(); + spine_strncpy(dst.as_mut_ptr(), src.as_ptr(), 10); + for item in dst.iter().skip(4) { + assert_eq!(*item, 0 as super::c_char); + } + let string = CStr::from_ptr(dst.as_ptr()).to_string_lossy().to_string(); + assert_eq!(string.as_str(), "1234"); + } + } + #[test] fn strtol() { unsafe { @@ -1123,6 +1213,40 @@ mod tests { assert_eq!(super::fmt("hex: (%x)", &[Box::new(200)]), "hex: (c8)"); } + #[test] + fn snprintf() { + let mut error_msg: [super::c_char; 255] = [0; 255]; + spine_snprintf!( + error_msg.as_mut_ptr(), + 255 as super::c_int as super::size_t, + (b"Skeleton version %s does not match runtime version %s\0" as *const u8) + .cast::(), + (b"4.1\0" as *const u8).cast::(), + (b"4.2\0" as *const u8).cast::(), + ); + let string = unsafe { CStr::from_ptr(error_msg.as_ptr()) } + .to_string_lossy() + .to_string(); + assert_eq!( + string.as_str(), + "Skeleton version 4.1 does not match runtime version 4.2" + ); + + let mut error_msg: [super::c_char; 16] = [0; 16]; + spine_snprintf!( + error_msg.as_mut_ptr(), + 16 as super::c_int as super::size_t, + (b"Skeleton version %s does not match runtime version %s\0" as *const u8) + .cast::(), + (b"4.1\0" as *const u8).cast::(), + (b"4.2\0" as *const u8).cast::(), + ); + let string = unsafe { CStr::from_ptr(error_msg.as_ptr()) } + .to_string_lossy() + .to_string(); + assert_eq!(&string[0..16], "Skeleton version"); + } + #[test] fn sscanf() { let c_str = CString::new("3fa5").unwrap(); diff --git a/src/controller.rs b/src/controller.rs index 3f4050f..f767c82 100644 --- a/src/controller.rs +++ b/src/controller.rs @@ -18,7 +18,7 @@ //! SkeletonController::new(skeleton_data.clone(), animation_state_data); //! //! // Update for one frame -//! skeleton_controller.update(0.016); +//! skeleton_controller.update(0.016, Physics::Update); //! //! // Get renderable mesh data //! // Note: if slot_index is not important, use the much faster @@ -66,7 +66,7 @@ use crate::{ skeleton::Skeleton, skeleton_clipping::SkeletonClipping, skeleton_data::SkeletonData, - BlendMode, + BlendMode, Physics, }; #[derive(Debug)] @@ -137,7 +137,7 @@ impl SkeletonController { ) -> Self { let mut skeleton = Skeleton::new(skeleton_data); skeleton.set_to_setup_pose(); - skeleton.update_world_transform(); + skeleton.update_world_transform(Physics::Pose); Self { skeleton, animation_state: AnimationState::new(animation_state_data), @@ -152,10 +152,11 @@ impl SkeletonController { } /// Updates the animation state, applies to the skeleton, and updates world transforms. - pub fn update(&mut self, delta_seconds: f32) { + pub fn update(&mut self, delta_seconds: f32, physics: Physics) { self.animation_state.update(delta_seconds); self.animation_state.apply(&mut self.skeleton); - self.skeleton.update_world_transform(); + self.skeleton.update(delta_seconds); + self.skeleton.update_world_transform(physics); } /// Render the skeleton using the [`SimpleDrawer`] and returns renderable mesh information. diff --git a/src/draw/combined.rs b/src/draw/combined.rs index 372458c..876a9c9 100644 --- a/src/draw/combined.rs +++ b/src/draw/combined.rs @@ -414,16 +414,18 @@ mod test { /// Ensure all the example assets draw without error. #[test] fn combined_drawer() { - for example_asset in TestAsset::all() { - let (mut skeleton, _) = example_asset.instance(); - let drawer = CombinedDrawer { - cull_direction: CullDirection::Clockwise, - premultiplied_alpha: false, - color_space: ColorSpace::Linear, - }; - let mut clipper = SkeletonClipping::new(); - let renderables = drawer.draw(&mut skeleton, Some(&mut clipper)); - assert!(!renderables.is_empty()); + for json in [true, false] { + for example_asset in TestAsset::all() { + let (mut skeleton, _) = example_asset.instance(json); + let drawer = CombinedDrawer { + cull_direction: CullDirection::Clockwise, + premultiplied_alpha: false, + color_space: ColorSpace::Linear, + }; + let mut clipper = SkeletonClipping::new(); + let renderables = drawer.draw(&mut skeleton, Some(&mut clipper)); + assert!(!renderables.is_empty()); + } } } } diff --git a/src/draw/simple.rs b/src/draw/simple.rs index 316e9a8..16b1634 100644 --- a/src/draw/simple.rs +++ b/src/draw/simple.rs @@ -333,16 +333,18 @@ mod test { /// Ensure all the example assets draw without error. #[test] fn simple_drawer() { - for example_asset in TestAsset::all() { - let (mut skeleton, _) = example_asset.instance(); - let drawer = SimpleDrawer { - cull_direction: CullDirection::Clockwise, - premultiplied_alpha: false, - color_space: ColorSpace::Linear, - }; - let mut clipper = SkeletonClipping::new(); - let renderables = drawer.draw(&mut skeleton, Some(&mut clipper)); - assert!(!renderables.is_empty()); + for json in [true, false] { + for example_asset in TestAsset::all() { + let (mut skeleton, _) = example_asset.instance(json); + let drawer = SimpleDrawer { + cull_direction: CullDirection::Clockwise, + premultiplied_alpha: false, + color_space: ColorSpace::Linear, + }; + let mut clipper = SkeletonClipping::new(); + let renderables = drawer.draw(&mut skeleton, Some(&mut clipper)); + assert!(!renderables.is_empty()); + } } } } diff --git a/src/extension.rs b/src/extension.rs index 4bd6154..8b73533 100644 --- a/src/extension.rs +++ b/src/extension.rs @@ -84,7 +84,7 @@ impl Extension { /// # #[path="./test.rs"] /// # mod test; /// # use rusty_spine::{AnimationState, EventType, controller::SkeletonController}; -/// # let (mut skeleton_data, mut animation_state_data) = test::TestAsset::spineboy().instance_data(); +/// # let (mut skeleton_data, mut animation_state_data) = test::TestAsset::spineboy().instance_data(true); /// /// struct SpineTexture(pub String); // from example above /// diff --git a/src/lib.rs b/src/lib.rs index ec59fd8..66b12ce 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -57,6 +57,7 @@ mod error; mod event; mod mesh_attachment; mod path_attachment; +mod physics; mod point_attachment; mod region_attachment; mod renderer_object; @@ -83,6 +84,7 @@ pub use error::*; pub use event::*; pub use mesh_attachment::*; pub use path_attachment::*; +pub use physics::*; pub use point_attachment::*; pub use region_attachment::*; pub use renderer_object::*; diff --git a/src/mesh_attachment.rs b/src/mesh_attachment.rs index 563520c..56c0e82 100644 --- a/src/mesh_attachment.rs +++ b/src/mesh_attachment.rs @@ -72,7 +72,7 @@ impl MeshAttachment { c_accessor!(triangles_count, trianglesCount, i32); c_accessor_passthrough!(triangles, triangles, *mut c_ushort); c_accessor!(edges_count, edgesCount, usize); - c_accessor_passthrough!(edges, edges, *mut i32); + c_accessor_passthrough!(edges, edges, *mut u16); c_accessor_passthrough!(uvs, uvs, *mut c_float); c_accessor_passthrough!(region_uvs, regionUVs, *mut c_float); c_ptr!(c_mesh_attachment, spMeshAttachment); diff --git a/src/physics.rs b/src/physics.rs new file mode 100644 index 0000000..fd02622 --- /dev/null +++ b/src/physics.rs @@ -0,0 +1,26 @@ +use crate::c::spPhysics; + +/// Determines how physics and other non-deterministic updates are applied. +pub enum Physics { + /// Physics are not updated or applied. + None = 0, + /// Physics are reset to the current pose. + Reset = 1, + /// Physics are updated and the pose from physics is applied. + Update = 2, + /// Physics are not updated but the pose from physics is applied. + Pose = 3, + Unknown = 99, +} + +impl From for Physics { + fn from(mode: spPhysics) -> Self { + match mode { + 0 => Self::None, + 1 => Self::Reset, + 2 => Self::Update, + 3 => Self::Pose, + _ => Self::Unknown, + } + } +} diff --git a/src/skeleton.rs b/src/skeleton.rs index bb79b1f..8807125 100644 --- a/src/skeleton.rs +++ b/src/skeleton.rs @@ -3,11 +3,11 @@ use std::{borrow::Cow, sync::Arc}; use crate::{ bone::Bone, c::{ - spBone, spSkeleton, spSkeletonData, spSkeleton_create, spSkeleton_dispose, + spBone, spPhysics, spSkeleton, spSkeletonData, spSkeleton_create, spSkeleton_dispose, spSkeleton_getAttachmentForSlotIndex, spSkeleton_getAttachmentForSlotName, spSkeleton_setAttachment, spSkeleton_setBonesToSetupPose, spSkeleton_setSkin, spSkeleton_setSkinByName, spSkeleton_setSlotsToSetupPose, spSkeleton_setToSetupPose, - spSkeleton_updateCache, spSkeleton_updateWorldTransform, + spSkeleton_update, spSkeleton_updateCache, spSkeleton_updateWorldTransform, spSkeleton_updateWorldTransformWith, spSkin, spSlot, }, c_interface::{to_c_str, CTmpMut, CTmpRef, NewFromPtr, SyncPtr}, @@ -15,7 +15,7 @@ use crate::{ skeleton_data::SkeletonData, skin::Skin, slot::Slot, - Attachment, + Attachment, Physics, }; #[allow(unused_imports)] @@ -50,6 +50,12 @@ impl Skeleton { } } + pub fn update(&mut self, delta: f32) { + unsafe { + spSkeleton_update(self.c_ptr(), delta); + } + } + /// Caches information about bones and constraints. Must be called if the skin is modified or if /// bones, constraints, or weighted path attachments are added or removed. pub fn update_cache(&mut self) { @@ -63,9 +69,9 @@ impl Skeleton { /// See /// [`World transforms`](http://esotericsoftware.com/spine-runtime-skeletons#World-transforms) /// in the Spine Runtimes Guide. - pub fn update_world_transform(&mut self) { + pub fn update_world_transform(&mut self, physics: Physics) { unsafe { - spSkeleton_updateWorldTransform(self.c_ptr()); + spSkeleton_updateWorldTransform(self.c_ptr(), physics as spPhysics); } } @@ -79,8 +85,8 @@ impl Skeleton { /// # Safety /// /// The bone must originate from this skeleton. - pub unsafe fn update_world_transform_with(&mut self, parent: &Bone) { - spSkeleton_updateWorldTransformWith(self.c_ptr(), parent.c_ptr()); + pub unsafe fn update_world_transform_with(&mut self, parent: &Bone, physics: Physics) { + spSkeleton_updateWorldTransformWith(self.c_ptr(), parent.c_ptr(), physics as spPhysics); } /// Sets the bones, constraints, slots, and draw order to their setup pose values. @@ -169,7 +175,7 @@ impl Skeleton { /// # #[path="./test.rs"] /// # mod test; /// # use rusty_spine::{AnimationState, AnimationEvent}; - /// # let (mut skeleton, _) = test::TestAsset::spineboy().instance(); + /// # let (mut skeleton, _) = test::TestAsset::spineboy().instance(true); /// skeleton.set_skins_by_name("combined-skin", ["hat", "suit", "tie"]); /// ``` /// diff --git a/src/skin.rs b/src/skin.rs index 3cca505..d8baeb6 100644 --- a/src/skin.rs +++ b/src/skin.rs @@ -105,7 +105,7 @@ c_handle_decl!( /// # #[path="./test.rs"] /// # mod test; /// # use rusty_spine::{AnimationState, EventType, SkinHandle}; - /// # let (skeleton, _) = test::TestAsset::spineboy().instance(); + /// # let (skeleton, _) = test::TestAsset::spineboy().instance(true); /// let skeleton_data = skeleton.data(); /// let skin_handles: Vec = skeleton_data.skins().map(|skin| skin.handle()).collect(); /// for skin_handle in skin_handles.iter() { @@ -163,7 +163,7 @@ mod test { /// Check that dropped skins don't segfault. #[test] fn skin_drop() { - let (skeleton, _) = TestAsset::spineboy().instance(); + let (skeleton, _) = TestAsset::spineboy().instance(true); drop(skeleton.data().default_skin()); drop(Skin::new("test")); } diff --git a/src/slot.rs b/src/slot.rs index 6930c01..d29336f 100644 --- a/src/slot.rs +++ b/src/slot.rs @@ -200,7 +200,7 @@ c_handle_decl!( /// # #[path="./test.rs"] /// # mod test; /// # use rusty_spine::{AnimationState, EventType, SlotHandle}; - /// # let (skeleton, _) = test::TestAsset::spineboy().instance(); + /// # let (skeleton, _) = test::TestAsset::spineboy().instance(true); /// let slot_handles: Vec = skeleton.slots().map(|slot| slot.handle()).collect(); /// for slot_handle in slot_handles.iter() { /// let slot = slot_handle.get(&skeleton).unwrap(); diff --git a/src/test.rs b/src/test.rs index a00f6b5..88078ea 100644 --- a/src/test.rs +++ b/src/test.rs @@ -2,62 +2,85 @@ use std::sync::Arc; // tests #[cfg(test)] -use crate::{AnimationState, AnimationStateData, Atlas, Skeleton, SkeletonData, SkeletonJson}; +use crate::{ + AnimationState, AnimationStateData, Atlas, Skeleton, SkeletonBinary, SkeletonData, SkeletonJson, +}; // doc tests #[cfg(not(test))] use rusty_spine::{ - AnimationState, AnimationStateData, Atlas, Skeleton, SkeletonData, SkeletonJson, + AnimationState, AnimationStateData, Atlas, Skeleton, SkeletonBinary, SkeletonData, SkeletonJson, }; pub struct TestAsset { pub atlas_file: &'static str, pub atlas_data: &'static [u8], pub json_data: &'static [u8], + pub binary_data: &'static [u8], } impl TestAsset { - pub const fn all() -> &'static [Self; 8] { + pub const fn all() -> &'static [Self; 9] { &[ Self { atlas_file: "assets/spineboy/export/spineboy.atlas", atlas_data: include_bytes!("../assets/spineboy/export/spineboy.atlas"), json_data: include_bytes!("../assets/spineboy/export/spineboy-pro.json"), + binary_data: include_bytes!("../assets/spineboy/export/spineboy-pro.skel"), }, Self { atlas_file: "assets/alien/export/alien.atlas", atlas_data: include_bytes!("../assets/alien/export/alien.atlas"), json_data: include_bytes!("../assets/alien/export/alien-pro.json"), + binary_data: include_bytes!("../assets/alien/export/alien-pro.skel"), }, Self { atlas_file: "assets/coin/export/coin.atlas", atlas_data: include_bytes!("../assets/coin/export/coin.atlas"), json_data: include_bytes!("../assets/coin/export/coin-pro.json"), + binary_data: include_bytes!("../assets/coin/export/coin-pro.skel"), }, Self { atlas_file: "assets/dragon/export/dragon.atlas", atlas_data: include_bytes!("../assets/dragon/export/dragon.atlas"), json_data: include_bytes!("../assets/dragon/export/dragon-ess.json"), + binary_data: include_bytes!("../assets/dragon/export/dragon-ess.skel"), }, Self { atlas_file: "assets/goblins/export/goblins.atlas", atlas_data: include_bytes!("../assets/goblins/export/goblins.atlas"), json_data: include_bytes!("../assets/goblins/export/goblins-pro.json"), + binary_data: include_bytes!("../assets/goblins/export/goblins-pro.skel"), }, Self { atlas_file: "assets/stretchyman/export/stretchyman.atlas", atlas_data: include_bytes!("../assets/stretchyman/export/stretchyman.atlas"), json_data: include_bytes!("../assets/stretchyman/export/stretchyman-pro.json"), + binary_data: include_bytes!("../assets/stretchyman/export/stretchyman-pro.skel"), }, Self { atlas_file: "assets/tank/export/tank.atlas", atlas_data: include_bytes!("../assets/tank/export/tank.atlas"), json_data: include_bytes!("../assets/tank/export/tank-pro.json"), + binary_data: include_bytes!("../assets/tank/export/tank-pro.skel"), }, Self { atlas_file: "assets/windmill/export/windmill.atlas", atlas_data: include_bytes!("../assets/windmill/export/windmill.atlas"), json_data: include_bytes!("../assets/windmill/export/windmill-ess.json"), + binary_data: include_bytes!("../assets/windmill/export/windmill-ess.skel"), + }, + Self { + atlas_file: "assets/celestial-circus/export/celestial-circus.atlas", + atlas_data: include_bytes!( + "../assets/celestial-circus/export/celestial-circus.atlas" + ), + json_data: include_bytes!( + "../assets/celestial-circus/export/celestial-circus-pro.json" + ), + binary_data: include_bytes!( + "../assets/celestial-circus/export/celestial-circus-pro.skel" + ), }, ] } @@ -75,25 +98,35 @@ impl TestAsset { SkeletonJson::new(Arc::new(self.atlas())) } + pub fn skeleton_binary(&self) -> SkeletonBinary { + SkeletonBinary::new(Arc::new(self.atlas())) + } + #[allow(clippy::missing_panics_doc)] - pub fn skeleton_data(&self) -> SkeletonData { - self.skeleton_json() - .read_skeleton_data(self.json_data) - .unwrap() + pub fn skeleton_data(&self, json: bool) -> SkeletonData { + if json { + self.skeleton_json() + .read_skeleton_data(self.json_data) + .unwrap() + } else { + self.skeleton_binary() + .read_skeleton_data(self.binary_data) + .unwrap() + } } - pub fn animation_state_data(&self) -> AnimationStateData { - AnimationStateData::new(Arc::new(self.skeleton_data())) + pub fn animation_state_data(&self, json: bool) -> AnimationStateData { + AnimationStateData::new(Arc::new(self.skeleton_data(json))) } - pub fn instance_data(&self) -> (Arc, Arc) { - let skeleton_data = Arc::new(self.skeleton_data()); + pub fn instance_data(&self, json: bool) -> (Arc, Arc) { + let skeleton_data = Arc::new(self.skeleton_data(json)); let animation_state_data = Arc::new(AnimationStateData::new(skeleton_data.clone())); (skeleton_data, animation_state_data) } - pub fn instance(&self) -> (Skeleton, AnimationState) { - let (skeleton_data, animation_state_data) = self.instance_data(); + pub fn instance(&self, json: bool) -> (Skeleton, AnimationState) { + let (skeleton_data, animation_state_data) = self.instance_data(json); let skeleton = Skeleton::new(skeleton_data); let animation_state = AnimationState::new(animation_state_data); (skeleton, animation_state) @@ -104,15 +137,6 @@ impl TestAsset { #[test] fn load_example_assets() { for example_asset in TestAsset::all() { - let atlas = Arc::new(Atlas::new(example_asset.atlas_data, "").unwrap()); - let skeleton_json = SkeletonJson::new(atlas); - let skeleton_data = Arc::new( - skeleton_json - .read_skeleton_data(example_asset.json_data) - .unwrap(), - ); - let animation_state_data = AnimationStateData::new(skeleton_data.clone()); - let _ = Skeleton::new(skeleton_data); - let _ = AnimationState::new(Arc::new(animation_state_data)); + _ = example_asset.instance(true); } } diff --git a/transpiler/src/transpile.rs b/transpiler/src/transpile.rs index 60f80b5..cab9bd8 100644 --- a/transpiler/src/transpile.rs +++ b/transpiler/src/transpile.rs @@ -177,6 +177,7 @@ pub fn c_fixes_after_preprocessor(input: &str, output: &str) { src = replace_identifier(src, "memcpy", "spine_memcpy", 0); src = replace_identifier(src, "memset", "spine_memset", 0); src = replace_identifier(src, "strcpy", "spine_strcpy", 0); + src = replace_identifier(src, "strncpy", "spine_strncpy", 0); src = replace_identifier(src, "strcmp", "spine_strcmp", 0); src = replace_identifier(src, "strrchr", "spine_strrchr", 0); src = replace_identifier(src, "sqrtf", "spine_sqrtf", 0); @@ -187,7 +188,7 @@ pub fn c_fixes_after_preprocessor(input: &str, output: &str) { src = replace_identifier(src, "realloc", "spine_realloc", 0); src = replace_identifier(src, "free", "spine_free", 0); src = replace_identifier(src, "strtol", "spine_strtol", 0); - src = replace_identifier(src, "sprintf", "spine_sprintf", 0); + src = replace_identifier(src, "snprintf", "spine_snprintf", 0); src = replace_identifier(src, "printf", "spine_printf", 0); src = replace_identifier(src, "sscanf", "spine_sscanf", 0); src = replace_identifier(src, "strtoul", "spine_strtoul", 0); @@ -200,8 +201,10 @@ pub fn c_fixes_after_preprocessor(input: &str, output: &str) { src = replace_identifier(src, "acosf", "spine_acosf", 0); src = replace_identifier(src, "atan2f", "spine_atan2f", 0); src = replace_identifier(src, "cosf", "spine_cosf", 0); + src = replace_identifier(src, "sinf", "spine_sinf", 0); src = replace_identifier(src, "pow", "spine_pow", 0); src = replace_identifier(src, "fmodf", "spine_fmodf", 0); + src = replace_identifier(src, "ceil", "spine_ceil", 0); write(output, src).unwrap(); } @@ -232,10 +235,7 @@ pub fn rust_fixes(input: &str, output: &str) { let mut src = read_to_string(input).unwrap(); src = src.replace("libc::", ""); src = src.replace("#![register_tool(c2rust)]\n", ""); - src = src.replace( - "#![feature(extern_types, label_break_value, register_tool)]\n", - "", - ); + src = src.replace("#![feature(extern_types, label_break_value)]\n", ""); src = src.replace("pub type _IO_wide_data;", ""); src = src.replace("pub type _IO_codecvt;", ""); src = src.replace("pub type _IO_marker;", ""); @@ -250,7 +250,7 @@ pub use crate::c::environment::types::*; "", ); src = src.replace( - "fn spine_sprintf(\n __s: *mut c_char,\n __format: *const c_char,\n _: ...\n ) -> c_int;", + "fn spine_snprintf(\n __s: *mut c_char,\n __maxlen: size_t,\n __format: *const c_char,\n _: ...\n ) -> c_int;", "", ); src = src.replace( @@ -258,7 +258,7 @@ pub use crate::c::environment::types::*; "", ); src = replace_identifier(src, "spine_printf", "spine_printf!", 0); - src = replace_identifier(src, "spine_sprintf", "spine_sprintf!", 0); + src = replace_identifier(src, "spine_snprintf", "spine_snprintf!", 0); src = replace_identifier(src, "spine_sscanf", "spine_sscanf!", 0); write(output, src).unwrap(); }