diff --git a/spine-ue4/Content/GettingStarted/Assets/Raptor/Textures/raptor.uasset b/spine-ue4/Content/GettingStarted/Assets/Raptor/Textures/raptor.uasset index da6400025..b87124545 100644 Binary files a/spine-ue4/Content/GettingStarted/Assets/Raptor/Textures/raptor.uasset and b/spine-ue4/Content/GettingStarted/Assets/Raptor/Textures/raptor.uasset differ diff --git a/spine-ue4/Content/GettingStarted/Assets/Raptor/raptor.json b/spine-ue4/Content/GettingStarted/Assets/Raptor/raptor.json index 7590dfd7e..ae7a98ed7 100644 --- a/spine-ue4/Content/GettingStarted/Assets/Raptor/raptor.json +++ b/spine-ue4/Content/GettingStarted/Assets/Raptor/raptor.json @@ -1,7 +1,7 @@ { "skeleton": { - "hash": "HgNSAZhNqi0", - "spine": "4.0.61", + "hash": "AAVlM3uJh3s", + "spine": "4.1.22-beta", "x": -809.16, "y": -73.54, "width": 1287.65, @@ -882,7 +882,7 @@ }, "gun": { "attachment": [ - { "time": 0.2333, "name": null } + { "time": 0.2333 } ] } }, @@ -1009,7 +1009,7 @@ }, "gun": { "attachment": [ - { "name": null }, + {}, { "time": 0.3, "name": "gun-nohand" } ] } diff --git a/spine-ue4/Content/GettingStarted/Assets/Raptor/raptor.uasset b/spine-ue4/Content/GettingStarted/Assets/Raptor/raptor.uasset index 37567297b..87ac0f6f6 100644 Binary files a/spine-ue4/Content/GettingStarted/Assets/Raptor/raptor.uasset and b/spine-ue4/Content/GettingStarted/Assets/Raptor/raptor.uasset differ diff --git a/spine-ue4/Content/GettingStarted/Assets/Spineboy/Textures/spineboy.uasset b/spine-ue4/Content/GettingStarted/Assets/Spineboy/Textures/spineboy.uasset index e3608c40a..01c0093fe 100644 Binary files a/spine-ue4/Content/GettingStarted/Assets/Spineboy/Textures/spineboy.uasset and b/spine-ue4/Content/GettingStarted/Assets/Spineboy/Textures/spineboy.uasset differ diff --git a/spine-ue4/Content/GettingStarted/Assets/Spineboy/spineboy.json b/spine-ue4/Content/GettingStarted/Assets/Spineboy/spineboy.json index 57b3cdaea..d2d9c141f 100644 --- a/spine-ue4/Content/GettingStarted/Assets/Spineboy/spineboy.json +++ b/spine-ue4/Content/GettingStarted/Assets/Spineboy/spineboy.json @@ -1,7 +1,7 @@ { "skeleton": { - "hash": "IQgkYFQG8ng", - "spine": "4.0.61", + "hash": "itfFESDjM1c", + "spine": "4.1.22-beta", "x": -188.63, "y": -7.94, "width": 418.45, @@ -2427,19 +2427,19 @@ "side-glow1": { "attachment": [ { "name": "hoverglow-small" }, - { "time": 0.9667, "name": null } + { "time": 0.9667 } ] }, "side-glow2": { "attachment": [ { "time": 0.0667, "name": "hoverglow-small" }, - { "time": 1, "name": null } + { "time": 1 } ] }, "side-glow3": { "attachment": [ { "name": "hoverglow-small" }, - { "time": 0.9667, "name": null } + { "time": 0.9667 } ] } }, @@ -3479,60 +3479,68 @@ { "mixX": 0, "mixScaleX": 0, "mixShearY": 0 } ] }, - "deform": { + "attachments": { "default": { "front-foot": { - "front-foot": [ - { - "offset": 26, - "vertices": [ -0.02832, -5.37024, -0.02832, -5.37024, 3.8188, -3.7757, -0.02832, -5.37024, -3.82159, 3.77847 ] - } - ] + "front-foot": { + "deform": [ + { + "offset": 26, + "vertices": [ -0.02832, -5.37024, -0.02832, -5.37024, 3.8188, -3.7757, -0.02832, -5.37024, -3.82159, 3.77847 ] + } + ] + } }, "front-shin": { - "front-shin": [ - { - "offset": 14, - "vertices": [ 0.5298, -1.12677, -0.85507, -4.20587, -11.35158, -10.19225, -10.79865, -8.43765, -6.06447, -6.89757, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.54892, -3.06021, 1.48463, -2.29663, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4.80437, -7.01817 ] - }, - { - "time": 0.3667, - "offset": 14, - "vertices": [ 0.5298, -1.12677, -11.66571, -9.07211, -25.65866, -17.53735, -25.53217, -16.50978, -11.78232, -11.26097, 0, 0, 0.60487, -1.63589, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.60487, -1.63589, 0, 0, -2.64522, -7.35739, 1.48463, -2.29663, 0, 0, 0, 0, 0, 0, 0.60487, -1.63589, 0.60487, -1.63589, 0.60487, -1.63589, 0.60487, -1.63589, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.60487, -1.63589, 0, 0, -10.06873, -12.0999 ] - }, - { - "time": 0.5333, - "offset": 14, - "vertices": [ 0.5298, -1.12677, -0.85507, -4.20587, -7.00775, -8.24771, -6.45482, -6.49312, -6.06447, -6.89757, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.54892, -3.06021, 1.48463, -2.29663, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4.80437, -7.01817 ] - }, - { - "time": 1, - "offset": 14, - "vertices": [ 0.5298, -1.12677, -0.85507, -4.20587, -11.35158, -10.19225, -10.79865, -8.43765, -6.06447, -6.89757, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.54892, -3.06021, 1.48463, -2.29663, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4.80437, -7.01817 ] - } - ] + "front-shin": { + "deform": [ + { + "offset": 14, + "vertices": [ 0.5298, -1.12677, -0.85507, -4.20587, -11.35158, -10.19225, -10.79865, -8.43765, -6.06447, -6.89757, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.54892, -3.06021, 1.48463, -2.29663, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4.80437, -7.01817 ] + }, + { + "time": 0.3667, + "offset": 14, + "vertices": [ 0.5298, -1.12677, -11.66571, -9.07211, -25.65866, -17.53735, -25.53217, -16.50978, -11.78232, -11.26097, 0, 0, 0.60487, -1.63589, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.60487, -1.63589, 0, 0, -2.64522, -7.35739, 1.48463, -2.29663, 0, 0, 0, 0, 0, 0, 0.60487, -1.63589, 0.60487, -1.63589, 0.60487, -1.63589, 0.60487, -1.63589, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.60487, -1.63589, 0, 0, -10.06873, -12.0999 ] + }, + { + "time": 0.5333, + "offset": 14, + "vertices": [ 0.5298, -1.12677, -0.85507, -4.20587, -7.00775, -8.24771, -6.45482, -6.49312, -6.06447, -6.89757, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.54892, -3.06021, 1.48463, -2.29663, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4.80437, -7.01817 ] + }, + { + "time": 1, + "offset": 14, + "vertices": [ 0.5298, -1.12677, -0.85507, -4.20587, -11.35158, -10.19225, -10.79865, -8.43765, -6.06447, -6.89757, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.54892, -3.06021, 1.48463, -2.29663, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4.80437, -7.01817 ] + } + ] + } }, "hoverboard-board": { - "hoverboard-board": [ - { - "curve": [ 0.067, 0, 0.2, 1 ] - }, - { - "time": 0.2667, - "offset": 1, - "vertices": [ 2.45856, 0, 0, 0, 0, 0, 0, 0, 0, 3.55673, -3.0E-4, 3.55673, -3.0E-4, 0, 0, 0, 0, 0, 0, -7.6E-4, -9.84158, -7.6E-4, -9.84158, -7.6E-4, -9.84158, -7.6E-4, -9.84158, -7.6E-4, -9.84158, -7.6E-4, -9.84158, -7.6E-4, -9.84158, -7.6E-4, -9.84158, -7.6E-4, -9.84158, -7.6E-4, -9.84158, -7.6E-4, -9.84158, -7.6E-4, -9.84158, 0, 0, 0, 0, 0, 0, 0, 0, -4.90558, 0.11214, -9.40706, 6.2E-4, -6.34871, 4.3E-4, -6.34925, -6.57018, -6.34925, -6.57018, -6.34871, 4.3E-4, -2.3308, 1.7E-4, -2.33133, -6.57045, -2.33133, -6.57045, -2.3308, 1.7E-4, 0, 0, 1.2E-4, 2.45856, 1.2E-4, 2.45856, 1.2E-4, 2.45856, 1.2E-4, 2.45856, 3.3297, 4.44005, 3.3297, 4.44005, 3.3297, 4.44005, 1.2E-4, 2.45856, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.46227, 1.7E-4, -2.46227, 1.7E-4, -2.52316, 1.1313, -2.52316, 1.1313, -2.52316, 1.1313, 1.2E-4, 2.45856, 1.2E-4, 2.45856, -9.40694, 2.45918, 1.88063, 0.44197, -2.9E-4, -3.54808, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.52316, 1.1313, -2.52316, 1.1313, -2.52316, 1.1313, -2.46227, 1.7E-4, -2.46227, 1.7E-4, -2.46227, 1.7E-4, 0, 0, 0, 0, 1.2E-4, 2.45856 ], - "curve": [ 0.45, 0, 0.817, 1 ] - }, - { "time": 1 } - ] + "hoverboard-board": { + "deform": [ + { + "curve": [ 0.067, 0, 0.2, 1 ] + }, + { + "time": 0.2667, + "offset": 1, + "vertices": [ 2.45856, 0, 0, 0, 0, 0, 0, 0, 0, 3.55673, -3.0E-4, 3.55673, -3.0E-4, 0, 0, 0, 0, 0, 0, -7.6E-4, -9.84158, -7.6E-4, -9.84158, -7.6E-4, -9.84158, -7.6E-4, -9.84158, -7.6E-4, -9.84158, -7.6E-4, -9.84158, -7.6E-4, -9.84158, -7.6E-4, -9.84158, -7.6E-4, -9.84158, -7.6E-4, -9.84158, -7.6E-4, -9.84158, -7.6E-4, -9.84158, 0, 0, 0, 0, 0, 0, 0, 0, -4.90558, 0.11214, -9.40706, 6.2E-4, -6.34871, 4.3E-4, -6.34925, -6.57018, -6.34925, -6.57018, -6.34871, 4.3E-4, -2.3308, 1.7E-4, -2.33133, -6.57045, -2.33133, -6.57045, -2.3308, 1.7E-4, 0, 0, 1.2E-4, 2.45856, 1.2E-4, 2.45856, 1.2E-4, 2.45856, 1.2E-4, 2.45856, 3.3297, 4.44005, 3.3297, 4.44005, 3.3297, 4.44005, 1.2E-4, 2.45856, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.46227, 1.7E-4, -2.46227, 1.7E-4, -2.52316, 1.1313, -2.52316, 1.1313, -2.52316, 1.1313, 1.2E-4, 2.45856, 1.2E-4, 2.45856, -9.40694, 2.45918, 1.88063, 0.44197, -2.9E-4, -3.54808, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.52316, 1.1313, -2.52316, 1.1313, -2.52316, 1.1313, -2.46227, 1.7E-4, -2.46227, 1.7E-4, -2.46227, 1.7E-4, 0, 0, 0, 0, 1.2E-4, 2.45856 ], + "curve": [ 0.45, 0, 0.817, 1 ] + }, + { "time": 1 } + ] + } }, "rear-foot": { - "rear-foot": [ - { - "offset": 28, - "vertices": [ -1.93078, 1.34782, -0.31417, 2.33363, 3.05122, 0.33946, 2.31472, -2.01678, 2.17583, -2.05795, -0.04277, -2.99459, 1.15429, 0.26328, 0.97501, -0.67169 ] - } - ] + "rear-foot": { + "deform": [ + { + "offset": 28, + "vertices": [ -1.93078, 1.34782, -0.31417, 2.33363, 3.05122, 0.33946, 2.31472, -2.01678, 2.17583, -2.05795, -0.04277, -2.99459, 1.15429, 0.26328, 0.97501, -0.67169 ] + } + ] + } } } } @@ -5203,7 +5211,7 @@ "portal-bg": { "attachment": [ { "name": "portal-bg" }, - { "time": 3, "name": null } + { "time": 3 } ] }, "portal-flare1": { @@ -5214,7 +5222,7 @@ { "time": 1.2, "name": "portal-flare1" }, { "time": 1.2333, "name": "portal-flare2" }, { "time": 1.2667, "name": "portal-flare1" }, - { "time": 1.3333, "name": null } + { "time": 1.3333 } ] }, "portal-flare2": { @@ -5224,14 +5232,14 @@ { "time": 1.1667, "name": "portal-flare1" }, { "time": 1.2, "name": "portal-flare2" }, { "time": 1.2333, "name": "portal-flare3" }, - { "time": 1.2667, "name": null } + { "time": 1.2667 } ] }, "portal-flare3": { "attachment": [ { "time": 1.2, "name": "portal-flare3" }, { "time": 1.2333, "name": "portal-flare2" }, - { "time": 1.2667, "name": null } + { "time": 1.2667 } ] }, "portal-flare4": { @@ -5239,33 +5247,33 @@ { "time": 1.2, "name": "portal-flare2" }, { "time": 1.2333, "name": "portal-flare1" }, { "time": 1.2667, "name": "portal-flare2" }, - { "time": 1.3333, "name": null } + { "time": 1.3333 } ] }, "portal-flare5": { "attachment": [ { "time": 1.2333, "name": "portal-flare3" }, { "time": 1.2667, "name": "portal-flare1" }, - { "time": 1.3333, "name": null } + { "time": 1.3333 } ] }, "portal-flare6": { "attachment": [ { "time": 1.2667, "name": "portal-flare3" }, - { "time": 1.3333, "name": null } + { "time": 1.3333 } ] }, "portal-flare7": { "attachment": [ { "time": 1.1333, "name": "portal-flare2" }, - { "time": 1.1667, "name": null } + { "time": 1.1667 } ] }, "portal-flare8": { "attachment": [ { "time": 1.2, "name": "portal-flare3" }, { "time": 1.2333, "name": "portal-flare2" }, - { "time": 1.2667, "name": null } + { "time": 1.2667 } ] }, "portal-flare9": { @@ -5273,7 +5281,7 @@ { "time": 1.2, "name": "portal-flare2" }, { "time": 1.2333, "name": "portal-flare3" }, { "time": 1.2667, "name": "portal-flare1" }, - { "time": 1.3, "name": null } + { "time": 1.3 } ] }, "portal-flare10": { @@ -5281,25 +5289,25 @@ { "time": 1.2, "name": "portal-flare2" }, { "time": 1.2333, "name": "portal-flare1" }, { "time": 1.2667, "name": "portal-flare3" }, - { "time": 1.3, "name": null } + { "time": 1.3 } ] }, "portal-shade": { "attachment": [ { "name": "portal-shade" }, - { "time": 3, "name": null } + { "time": 3 } ] }, "portal-streaks1": { "attachment": [ { "name": "portal-streaks1" }, - { "time": 3, "name": null } + { "time": 3 } ] }, "portal-streaks2": { "attachment": [ { "name": "portal-streaks2" }, - { "time": 3, "name": null } + { "time": 3 } ] } }, @@ -7696,7 +7704,7 @@ { "time": 0.1, "name": "muzzle03" }, { "time": 0.1333, "name": "muzzle04" }, { "time": 0.1667, "name": "muzzle05" }, - { "time": 0.2, "name": null } + { "time": 0.2 } ] }, "muzzle-glow": { @@ -7725,7 +7733,7 @@ ], "attachment": [ { "time": 0.0333, "name": "muzzle-ring" }, - { "time": 0.2333, "name": null } + { "time": 0.2333 } ] }, "muzzle-ring2": { @@ -7739,7 +7747,7 @@ ], "attachment": [ { "time": 0.0333, "name": "muzzle-ring" }, - { "time": 0.2, "name": null } + { "time": 0.2 } ] }, "muzzle-ring3": { @@ -7753,7 +7761,7 @@ ], "attachment": [ { "time": 0.0333, "name": "muzzle-ring" }, - { "time": 0.2, "name": null } + { "time": 0.2 } ] }, "muzzle-ring4": { @@ -7767,7 +7775,7 @@ ], "attachment": [ { "time": 0.0333, "name": "muzzle-ring" }, - { "time": 0.2, "name": null } + { "time": 0.2 } ] } }, diff --git a/spine-ue4/Content/GettingStarted/Assets/Spineboy/spineboy.uasset b/spine-ue4/Content/GettingStarted/Assets/Spineboy/spineboy.uasset index 0cb6bd260..5a54745d3 100644 Binary files a/spine-ue4/Content/GettingStarted/Assets/Spineboy/spineboy.uasset and b/spine-ue4/Content/GettingStarted/Assets/Spineboy/spineboy.uasset differ diff --git a/spine-ue4/Plugins/SpinePlugin/Source/SpinePlugin/Private/SpineSkeletonComponent.cpp b/spine-ue4/Plugins/SpinePlugin/Source/SpinePlugin/Private/SpineSkeletonComponent.cpp index 983825859..a6ebd799b 100644 --- a/spine-ue4/Plugins/SpinePlugin/Source/SpinePlugin/Private/SpineSkeletonComponent.cpp +++ b/spine-ue4/Plugins/SpinePlugin/Source/SpinePlugin/Private/SpineSkeletonComponent.cpp @@ -86,7 +86,7 @@ void USpineSkeletonComponent::GetSkins(TArray &Skins) { bool USpineSkeletonComponent::HasSkin(const FString skinName) { CheckState(); if (skeleton) { - return skeleton->getData()->findAnimation(TCHAR_TO_UTF8(*skinName)) != nullptr; + return skeleton->getData()->findSkin(TCHAR_TO_UTF8(*skinName)) != nullptr; } return false; } @@ -94,6 +94,10 @@ bool USpineSkeletonComponent::HasSkin(const FString skinName) { bool USpineSkeletonComponent::SetAttachment(const FString slotName, const FString attachmentName) { CheckState(); if (skeleton) { + if (attachmentName.IsEmpty()) { + skeleton->setAttachment(TCHAR_TO_UTF8(*slotName), NULL); + return true; + } if (!skeleton->getAttachment(TCHAR_TO_UTF8(*slotName), TCHAR_TO_UTF8(*attachmentName))) return false; skeleton->setAttachment(TCHAR_TO_UTF8(*slotName), TCHAR_TO_UTF8(*attachmentName)); return true; diff --git a/spine-ue4/Plugins/SpinePlugin/Source/SpinePlugin/Private/SpineSkeletonDataAsset.cpp b/spine-ue4/Plugins/SpinePlugin/Source/SpinePlugin/Private/SpineSkeletonDataAsset.cpp index 8bc3b1f4f..6ccfdf958 100644 --- a/spine-ue4/Plugins/SpinePlugin/Source/SpinePlugin/Private/SpineSkeletonDataAsset.cpp +++ b/spine-ue4/Plugins/SpinePlugin/Source/SpinePlugin/Private/SpineSkeletonDataAsset.cpp @@ -30,6 +30,7 @@ #include "Runtime/Core/Public/Misc/MessageDialog.h" #include "SpinePluginPrivatePCH.h" #include "spine/spine.h" +#include "spine/Version.h" #include #include #include @@ -38,9 +39,6 @@ using namespace spine; -#define SPINE_MAJOR_VERSION 4 -#define SPINE_MINOR_VERSION 1 - FName USpineSkeletonDataAsset::GetSkeletonDataFileName() const { #if WITH_EDITORONLY_DATA TArray files; @@ -138,27 +136,9 @@ void USpineSkeletonDataAsset::SetRawData(TArray &Data) { } static bool checkVersion(const char *version) { - String tokens[3]; - int currToken = 0; - - while (*version && currToken < 3) { - if (*version == '.') { - version++; - currToken++; - continue; - } - - char str[2]; - str[0] = *version; - str[1] = 0; - tokens[currToken].append(str); - version++; - } - int versionNumber[3]; - for (int i = 0; i < 3; i++) - versionNumber[i] = atoi(tokens[i].buffer()); - - return versionNumber[0] >= SPINE_MAJOR_VERSION && versionNumber[1] >= SPINE_MINOR_VERSION; + if (!version) return false; + char* result = (char*)(strstr(version, SPINE_VERSION_STRING) - version); + return result == 0; } static bool checkJson(const char *jsonData) {