From dcce71416f314d902eb76b64b91dd634f2f7a22f Mon Sep 17 00:00:00 2001 From: badlogic Date: Thu, 7 Mar 2019 16:31:15 +0100 Subject: [PATCH 1/2] [ue4] Fixed call order of SpineSkeletonImportFactory, asset file name must be set before setting raw data. Fixes issue with importing .json files. See #1291. --- .../Private/SpineSkeletonImportFactory.cpp | 2 +- .../Source/SpinePlugin/Private/SpineSkeletonDataAsset.cpp | 6 ++++++ .../Source/SpinePlugin/Public/SpineSkeletonDataAsset.h | 3 +++ 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/spine-ue4/Plugins/SpinePlugin/Source/SpineEditorPlugin/Private/SpineSkeletonImportFactory.cpp b/spine-ue4/Plugins/SpinePlugin/Source/SpineEditorPlugin/Private/SpineSkeletonImportFactory.cpp index 75f49a7cc..40e638fd1 100644 --- a/spine-ue4/Plugins/SpinePlugin/Source/SpineEditorPlugin/Private/SpineSkeletonImportFactory.cpp +++ b/spine-ue4/Plugins/SpinePlugin/Source/SpineEditorPlugin/Private/SpineSkeletonImportFactory.cpp @@ -81,9 +81,9 @@ UObject* USpineSkeletonAssetFactory::FactoryCreateFile (UClass * InClass, UObjec if (!FFileHelper::LoadFileToArray(rawData, *Filename, 0)) { return nullptr; } + asset->SetSkeletonDataFileName(FName(*Filename)); asset->SetRawData(rawData); - asset->SetSkeletonDataFileName(FName(*Filename)); const FString longPackagePath = FPackageName::GetLongPackagePath(asset->GetOutermost()->GetPathName()); LoadAtlas(Filename, longPackagePath); return asset; diff --git a/spine-ue4/Plugins/SpinePlugin/Source/SpinePlugin/Private/SpineSkeletonDataAsset.cpp b/spine-ue4/Plugins/SpinePlugin/Source/SpinePlugin/Private/SpineSkeletonDataAsset.cpp index 34423f537..0968f173b 100644 --- a/spine-ue4/Plugins/SpinePlugin/Source/SpinePlugin/Private/SpineSkeletonDataAsset.cpp +++ b/spine-ue4/Plugins/SpinePlugin/Source/SpinePlugin/Private/SpineSkeletonDataAsset.cpp @@ -155,9 +155,15 @@ void USpineSkeletonDataAsset::LoadInfo() { Skins.Empty(); for (int i = 0; i < skeletonData->getSkins().size(); i++) Skins.Add(skeletonData->getSkins()[i]->getName().buffer()); + Slots.Empty(); + for (int i = 0; i < skeletonData->getSlots().size(); i++) + Slots.Add(skeletonData->getSlots()[i]->getName().buffer()); Animations.Empty(); for (int i = 0; i < skeletonData->getAnimations().size(); i++) Animations.Add(skeletonData->getAnimations()[i]->getName().buffer()); + Events.Empty(); + for (int i = 0; i < skeletonData->getEvents().size(); i++) + Events.Add(skeletonData->getEvents()[i]->getName().buffer()); delete skeletonData; } #endif diff --git a/spine-ue4/Plugins/SpinePlugin/Source/SpinePlugin/Public/SpineSkeletonDataAsset.h b/spine-ue4/Plugins/SpinePlugin/Source/SpinePlugin/Public/SpineSkeletonDataAsset.h index c94a896ce..48dd58492 100644 --- a/spine-ue4/Plugins/SpinePlugin/Source/SpinePlugin/Public/SpineSkeletonDataAsset.h +++ b/spine-ue4/Plugins/SpinePlugin/Source/SpinePlugin/Public/SpineSkeletonDataAsset.h @@ -82,6 +82,9 @@ public: UPROPERTY(Transient, VisibleAnywhere) TArray Animations; + + UPROPERTY(Transient, VisibleAnywhere) + TArray Events; protected: UPROPERTY() From 8185418319e3f536bc70fa73b0dbf081b0e464f4 Mon Sep 17 00:00:00 2001 From: badlogic Date: Thu, 7 Mar 2019 17:22:10 +0100 Subject: [PATCH 2/2] [ue4] Fixed encoding of strings where necessary. Closes #1291. --- .../Private/SpineSkeletonAnimationComponent.cpp | 4 ++-- .../SpinePlugin/Private/SpineSkeletonDataAsset.cpp | 10 +++++----- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/spine-ue4/Plugins/SpinePlugin/Source/SpinePlugin/Private/SpineSkeletonAnimationComponent.cpp b/spine-ue4/Plugins/SpinePlugin/Source/SpinePlugin/Private/SpineSkeletonAnimationComponent.cpp index cb62ac8be..a9edb99dd 100644 --- a/spine-ue4/Plugins/SpinePlugin/Source/SpinePlugin/Private/SpineSkeletonAnimationComponent.cpp +++ b/spine-ue4/Plugins/SpinePlugin/Source/SpinePlugin/Private/SpineSkeletonAnimationComponent.cpp @@ -97,13 +97,13 @@ void USpineSkeletonAnimationComponent::InternalTick(float DeltaTime, bool CallDe if (state && bAutoPlaying) { if (lastPreviewAnimation != PreviewAnimation) { - if (PreviewAnimation != "") SetAnimation(0, TCHAR_TO_UTF8(*PreviewAnimation), true); + if (PreviewAnimation != "") SetAnimation(0, PreviewAnimation, true); else SetEmptyAnimation(0, 0); lastPreviewAnimation = PreviewAnimation; } if (lastPreviewSkin != PreviewSkin) { - if (PreviewSkin != "") SetSkin(TCHAR_TO_UTF8(*PreviewSkin)); + if (PreviewSkin != "") SetSkin(PreviewSkin); else SetSkin("default"); lastPreviewSkin = PreviewSkin; } diff --git a/spine-ue4/Plugins/SpinePlugin/Source/SpinePlugin/Private/SpineSkeletonDataAsset.cpp b/spine-ue4/Plugins/SpinePlugin/Source/SpinePlugin/Private/SpineSkeletonDataAsset.cpp index 0968f173b..8b101866f 100644 --- a/spine-ue4/Plugins/SpinePlugin/Source/SpinePlugin/Private/SpineSkeletonDataAsset.cpp +++ b/spine-ue4/Plugins/SpinePlugin/Source/SpinePlugin/Private/SpineSkeletonDataAsset.cpp @@ -151,19 +151,19 @@ void USpineSkeletonDataAsset::LoadInfo() { if (skeletonData) { Bones.Empty(); for (int i = 0; i < skeletonData->getBones().size(); i++) - Bones.Add(skeletonData->getBones()[i]->getName().buffer()); + Bones.Add(UTF8_TO_TCHAR(skeletonData->getBones()[i]->getName().buffer())); Skins.Empty(); for (int i = 0; i < skeletonData->getSkins().size(); i++) - Skins.Add(skeletonData->getSkins()[i]->getName().buffer()); + Skins.Add(UTF8_TO_TCHAR(skeletonData->getSkins()[i]->getName().buffer())); Slots.Empty(); for (int i = 0; i < skeletonData->getSlots().size(); i++) - Slots.Add(skeletonData->getSlots()[i]->getName().buffer()); + Slots.Add(UTF8_TO_TCHAR(skeletonData->getSlots()[i]->getName().buffer())); Animations.Empty(); for (int i = 0; i < skeletonData->getAnimations().size(); i++) - Animations.Add(skeletonData->getAnimations()[i]->getName().buffer()); + Animations.Add(UTF8_TO_TCHAR(skeletonData->getAnimations()[i]->getName().buffer())); Events.Empty(); for (int i = 0; i < skeletonData->getEvents().size(); i++) - Events.Add(skeletonData->getEvents()[i]->getName().buffer()); + Events.Add(UTF8_TO_TCHAR(skeletonData->getEvents()[i]->getName().buffer())); delete skeletonData; } #endif