Merge pull request #428 from Fenrisul/master

[Unity] Auto-import of .skel.bytes added.
This commit is contained in:
Fenrisul 2015-05-29 11:26:12 -07:00
commit e96c077ce8
2 changed files with 51 additions and 11 deletions

View File

@ -274,9 +274,13 @@ public class SpineEditorUtilities : AssetPostprocessor {
imagePaths.Add(str); imagePaths.Add(str);
break; break;
case ".json": case ".json":
TextAsset spineDataFile = (TextAsset)AssetDatabase.LoadAssetAtPath(str, typeof(TextAsset)); if (IsValidSpineData((TextAsset)AssetDatabase.LoadAssetAtPath(str, typeof(TextAsset))))
if (IsValidSpineData(spineDataFile)) {
skeletonPaths.Add(str); skeletonPaths.Add(str);
break;
case ".bytes":
if (str.ToLower().EndsWith(".skel.bytes")) {
if (IsValidSpineData((TextAsset)AssetDatabase.LoadAssetAtPath(str, typeof(TextAsset))))
skeletonPaths.Add(str);
} }
break; break;
} }
@ -565,13 +569,23 @@ public class SpineEditorUtilities : AssetPostprocessor {
return (AtlasAsset)obj; return (AtlasAsset)obj;
} }
public static List<string> GetRequiredAtlasRegions (string jsonPath) { static void AddRequiredAtlasRegionsFromBinary (string skeletonDataPath, List<string> requiredPaths) {
SkeletonBinary binary = new SkeletonBinary(new AtlasRequirementLoader(requiredPaths));
TextAsset data = (TextAsset)AssetDatabase.LoadAssetAtPath(skeletonDataPath, typeof(TextAsset));
MemoryStream input = new MemoryStream(data.bytes);
binary.ReadSkeletonData(input);
binary = null;
}
public static List<string> GetRequiredAtlasRegions (string skeletonDataPath) {
List<string> requiredPaths = new List<string>(); List<string> requiredPaths = new List<string>();
// FIXME - This doesn't work for a binary skeleton file! if (skeletonDataPath.Contains(".skel")) {
if (jsonPath.Contains(".skel")) return requiredPaths; AddRequiredAtlasRegionsFromBinary(skeletonDataPath, requiredPaths);
return requiredPaths;
}
TextAsset spineJson = (TextAsset)AssetDatabase.LoadAssetAtPath(jsonPath, typeof(TextAsset)); TextAsset spineJson = (TextAsset)AssetDatabase.LoadAssetAtPath(skeletonDataPath, typeof(TextAsset));
StringReader reader = new StringReader(spineJson.text); StringReader reader = new StringReader(spineJson.text);
var root = Json.Deserialize(reader) as Dictionary<string, object>; var root = Json.Deserialize(reader) as Dictionary<string, object>;
@ -1112,4 +1126,30 @@ public class SpineEditorUtilities : AssetPostprocessor {
} }
} }
public class AtlasRequirementLoader : AttachmentLoader {
List<string> requirementList;
public AtlasRequirementLoader (List<string> requirementList) {
this.requirementList = requirementList;
}
public RegionAttachment NewRegionAttachment (Skin skin, string name, string path) {
requirementList.Add(path);
return new RegionAttachment(name);
}
public MeshAttachment NewMeshAttachment (Skin skin, string name, string path) {
requirementList.Add(path);
return new MeshAttachment(name);
}
public SkinnedMeshAttachment NewSkinnedMeshAttachment (Skin skin, string name, string path) {
requirementList.Add(path);
return new SkinnedMeshAttachment(name);
}
public BoundingBoxAttachment NewBoundingBoxAttachment (Skin skin, string name) {
return new BoundingBoxAttachment(name);
}
}
} }

View File

@ -107,7 +107,7 @@ public class SkeletonDataAsset : ScriptableObject {
skeletonDataScale = scale; skeletonDataScale = scale;
#else #else
if (spriteCollection != null) { if (spriteCollection != null) {
attachmentLoader = new SpriteCollectionAttachmentLoader(spriteCollection) attachmentLoader = new SpriteCollectionAttachmentLoader(spriteCollection);
skeletonDataScale = (1.0f / (spriteCollection.invOrthoSize * spriteCollection.halfTargetHeight) * scale) * 100f; skeletonDataScale = (1.0f / (spriteCollection.invOrthoSize * spriteCollection.halfTargetHeight) * scale) * 100f;
} else { } else {
if (atlasArr.Length == 0) { if (atlasArr.Length == 0) {