[ue4] Better version check, fixes #2045

This commit is contained in:
badlogic 2022-03-24 14:30:15 +01:00
parent bf1b9062dc
commit 5adf03afcf
8 changed files with 91 additions and 99 deletions

View File

@ -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" }
]
}

View File

@ -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 }
]
}
},

View File

@ -86,7 +86,7 @@ void USpineSkeletonComponent::GetSkins(TArray<FString> &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;

View File

@ -30,6 +30,7 @@
#include "Runtime/Core/Public/Misc/MessageDialog.h"
#include "SpinePluginPrivatePCH.h"
#include "spine/spine.h"
#include "spine/Version.h"
#include <stdlib.h>
#include <string.h>
#include <string>
@ -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<FString> files;
@ -138,27 +136,9 @@ void USpineSkeletonDataAsset::SetRawData(TArray<uint8> &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) {