Explorar el Código

[ue4] Fixed call order of SpineSkeletonImportFactory, asset file name must be set before setting raw data. Fixes issue with importing .json files. See #1291.

badlogic hace 6 años
padre
commit
dcce71416f

+ 1 - 1
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;

+ 6 - 0
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

+ 3 - 0
spine-ue4/Plugins/SpinePlugin/Source/SpinePlugin/Public/SpineSkeletonDataAsset.h

@@ -82,6 +82,9 @@ public:
 
 	UPROPERTY(Transient, VisibleAnywhere)
 	TArray<FString> Animations;
+
+	UPROPERTY(Transient, VisibleAnywhere)
+	TArray<FString> Events;
 	
 protected:
 	UPROPERTY()