Эх сурвалжийг харах

[ios] Fix blending, use PMA assets in all examples. See #2555

Mario Zechner 1 жил өмнө
parent
commit
a5b3bc709d
23 өөрчлөгдсөн 70 нэмэгдсэн , 63 устгасан
  1. 8 8
      examples/export/runtimes.sh
  2. 8 8
      spine-ios/Example - Cocoapods/Spine iOS Example.xcodeproj/project.pbxproj
  3. 1 1
      spine-ios/Example - Cocoapods/Spine iOS Example/SimpleAnimation.swift
  4. 2 1
      spine-ios/Example - Cocoapods/Spine iOS Example/spineboy/spineboy-pma.atlas
  5. BIN
      spine-ios/Example - Cocoapods/Spine iOS Example/spineboy/spineboy-pma.png
  6. BIN
      spine-ios/Example - Cocoapods/Spine iOS Example/spineboy/spineboy.png
  7. 24 24
      spine-ios/Example/Spine iOS Example.xcodeproj/project.pbxproj
  8. 1 1
      spine-ios/Example/Spine iOS Example/AnimationStateEvents.swift
  9. 2 1
      spine-ios/Example/Spine iOS Example/Assets/celestial/celestial-circus-pma.atlas
  10. BIN
      spine-ios/Example/Spine iOS Example/Assets/celestial/celestial-circus-pma.png
  11. BIN
      spine-ios/Example/Spine iOS Example/Assets/celestial/celestial-circus.png
  12. 2 1
      spine-ios/Example/Spine iOS Example/Assets/mixandmatch/mix-and-match-pma.atlas
  13. BIN
      spine-ios/Example/Spine iOS Example/Assets/mixandmatch/mix-and-match-pma.png
  14. BIN
      spine-ios/Example/Spine iOS Example/Assets/mixandmatch/mix-and-match.png
  15. 2 1
      spine-ios/Example/Spine iOS Example/Assets/spineboy/spineboy-pma.atlas
  16. BIN
      spine-ios/Example/Spine iOS Example/Assets/spineboy/spineboy-pma.png
  17. BIN
      spine-ios/Example/Spine iOS Example/Assets/spineboy/spineboy.png
  18. 1 1
      spine-ios/Example/Spine iOS Example/DebugRendering.swift
  19. 1 1
      spine-ios/Example/Spine iOS Example/DisableRendering.swift
  20. 1 1
      spine-ios/Example/Spine iOS Example/DressUp.swift
  21. 1 1
      spine-ios/Example/Spine iOS Example/IKFollowing.swift
  22. 15 12
      spine-ios/Example/Spine iOS Example/Physics.swift
  23. 1 1
      spine-ios/Example/Spine iOS Example/SimpleAnimation.swift

+ 8 - 8
examples/export/runtimes.sh

@@ -111,8 +111,8 @@ cp -f ../celestial-circus/export/celestial-circus.png "$ROOT/spine-flutter/examp
 
 echo "spine-ios"
 cp -f ../celestial-circus/export/celestial-circus-pro.skel "$ROOT/spine-ios/Example/Spine iOS Example/Assets/celestial/"
-cp -f ../celestial-circus/export/celestial-circus.atlas "$ROOT/spine-ios/Example/Spine iOS Example/Assets/celestial/"
-cp -f ../celestial-circus/export/celestial-circus.png "$ROOT/spine-ios/Example/Spine iOS Example/Assets/celestial/"
+cp -f ../celestial-circus/export/celestial-circus-pma.atlas "$ROOT/spine-ios/Example/Spine iOS Example/Assets/celestial/"
+cp -f ../celestial-circus/export/celestial-circus-pma.png "$ROOT/spine-ios/Example/Spine iOS Example/Assets/celestial/"
 
 cp -f ../dragon/export/dragon-ess.skel "$ROOT/spine-ios/Example/Spine iOS Example/Assets/dragon/"
 cp -f ../dragon/export/dragon.atlas "$ROOT/spine-ios/Example/Spine iOS Example/Assets/dragon/"
@@ -120,18 +120,18 @@ cp -f ../dragon/export/dragon.png "$ROOT/spine-ios/Example/Spine iOS Example/Ass
 cp -f ../dragon/export/dragon_*.png "$ROOT/spine-ios/Example/Spine iOS Example/Assets/dragon/"
 
 cp -f ../mix-and-match/export/mix-and-match-pro.skel "$ROOT/spine-ios/Example/Spine iOS Example/Assets/mixandmatch/"
-cp -f ../mix-and-match/export/mix-and-match.atlas "$ROOT/spine-ios/Example/Spine iOS Example/Assets/mixandmatch/"
-cp -f ../mix-and-match/export/mix-and-match.png "$ROOT/spine-ios/Example/Spine iOS Example/Assets/mixandmatch/"
+cp -f ../mix-and-match/export/mix-and-match-pma.atlas "$ROOT/spine-ios/Example/Spine iOS Example/Assets/mixandmatch/"
+cp -f ../mix-and-match/export/mix-and-match-pma.png "$ROOT/spine-ios/Example/Spine iOS Example/Assets/mixandmatch/"
 
 cp -f ../spineboy/export/spineboy-pro.json "$ROOT/spine-ios/Example/Spine iOS Example/Assets/spineboy/"
 cp -f ../spineboy/export/spineboy-pro.skel "$ROOT/spine-ios/Example/Spine iOS Example/Assets/spineboy/"
-cp -f ../spineboy/export/spineboy.atlas "$ROOT/spine-ios/Example/Spine iOS Example/Assets/spineboy/"
-cp -f ../spineboy/export/spineboy.png "$ROOT/spine-ios/Example/Spine iOS Example/Assets/spineboy/"
+cp -f ../spineboy/export/spineboy-pma.atlas "$ROOT/spine-ios/Example/Spine iOS Example/Assets/spineboy/"
+cp -f ../spineboy/export/spineboy-pma.png "$ROOT/spine-ios/Example/Spine iOS Example/Assets/spineboy/"
 
 cp -f ../spineboy/export/spineboy-pro.json "$ROOT/spine-ios/Example - Cocoapods/Spine iOS Example/spineboy/"
 cp -f ../spineboy/export/spineboy-pro.skel "$ROOT/spine-ios/Example - Cocoapods/Spine iOS Example/spineboy/"
-cp -f ../spineboy/export/spineboy.atlas "$ROOT/spine-ios/Example - Cocoapods/Spine iOS Example/spineboy/"
-cp -f ../spineboy/export/spineboy.png "$ROOT/spine-ios/Example - Cocoapods/Spine iOS Example/spineboy/"
+cp -f ../spineboy/export/spineboy-pma.atlas "$ROOT/spine-ios/Example - Cocoapods/Spine iOS Example/spineboy/"
+cp -f ../spineboy/export/spineboy-pma.png "$ROOT/spine-ios/Example - Cocoapods/Spine iOS Example/spineboy/"
 
 echo "spine-godot"
 rm -f "$ROOT"/spine-godot/example/assets/spineboy/*.atlas

+ 8 - 8
spine-ios/Example - Cocoapods/Spine iOS Example.xcodeproj/project.pbxproj

@@ -8,18 +8,20 @@
 
 /* Begin PBXBuildFile section */
 		029E40AACC629A2B19C75855 /* Pods_Spine_iOS_Example.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 63A23DBBF6B9A1877F1E82A7 /* Pods_Spine_iOS_Example.framework */; };
+		76381FE22C2EF6100087712B /* spineboy-pma.atlas in Resources */ = {isa = PBXBuildFile; fileRef = 76381FE02C2EF6100087712B /* spineboy-pma.atlas */; };
+		76381FE32C2EF6100087712B /* spineboy-pma.png in Resources */ = {isa = PBXBuildFile; fileRef = 76381FE12C2EF6100087712B /* spineboy-pma.png */; };
 		9281EF152C07885C00BE19F5 /* Spine_iOS_ExampleApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9281EF142C07885C00BE19F5 /* Spine_iOS_ExampleApp.swift */; };
 		9281EF192C07885D00BE19F5 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 9281EF182C07885D00BE19F5 /* Assets.xcassets */; };
 		9281EF1C2C07885D00BE19F5 /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 9281EF1B2C07885D00BE19F5 /* Preview Assets.xcassets */; };
 		92BFC4B62C11BCA10051F2EA /* spineboy-pro.skel in Resources */ = {isa = PBXBuildFile; fileRef = 92BFC4B22C11BCA10051F2EA /* spineboy-pro.skel */; };
 		92BFC4B72C11BCA10051F2EA /* spineboy-pro.json in Resources */ = {isa = PBXBuildFile; fileRef = 92BFC4B32C11BCA10051F2EA /* spineboy-pro.json */; };
-		92BFC4B82C11BCA10051F2EA /* spineboy.png in Resources */ = {isa = PBXBuildFile; fileRef = 92BFC4B42C11BCA10051F2EA /* spineboy.png */; };
-		92BFC4B92C11BCA10051F2EA /* spineboy.atlas in Resources */ = {isa = PBXBuildFile; fileRef = 92BFC4B52C11BCA10051F2EA /* spineboy.atlas */; };
 		92BFC4BB2C11BCC50051F2EA /* SimpleAnimation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 92BFC4BA2C11BCC50051F2EA /* SimpleAnimation.swift */; };
 /* End PBXBuildFile section */
 
 /* Begin PBXFileReference section */
 		63A23DBBF6B9A1877F1E82A7 /* Pods_Spine_iOS_Example.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Spine_iOS_Example.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+		76381FE02C2EF6100087712B /* spineboy-pma.atlas */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "spineboy-pma.atlas"; sourceTree = "<group>"; };
+		76381FE12C2EF6100087712B /* spineboy-pma.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "spineboy-pma.png"; sourceTree = "<group>"; };
 		7C440864BA6BF0A3BA8297E4 /* Pods-Spine iOS Example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Spine iOS Example.debug.xcconfig"; path = "Target Support Files/Pods-Spine iOS Example/Pods-Spine iOS Example.debug.xcconfig"; sourceTree = "<group>"; };
 		9206EF0B2C119BC500320243 /* SpineCppLite.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = SpineCppLite.framework; sourceTree = BUILT_PRODUCTS_DIR; };
 		9281EF112C07885C00BE19F5 /* Spine iOS Example.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Spine iOS Example.app"; sourceTree = BUILT_PRODUCTS_DIR; };
@@ -28,8 +30,6 @@
 		9281EF1B2C07885D00BE19F5 /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = "<group>"; };
 		92BFC4B22C11BCA10051F2EA /* spineboy-pro.skel */ = {isa = PBXFileReference; lastKnownFileType = file; path = "spineboy-pro.skel"; sourceTree = "<group>"; };
 		92BFC4B32C11BCA10051F2EA /* spineboy-pro.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = "spineboy-pro.json"; sourceTree = "<group>"; };
-		92BFC4B42C11BCA10051F2EA /* spineboy.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = spineboy.png; sourceTree = "<group>"; };
-		92BFC4B52C11BCA10051F2EA /* spineboy.atlas */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = spineboy.atlas; sourceTree = "<group>"; };
 		92BFC4BA2C11BCC50051F2EA /* SimpleAnimation.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = SimpleAnimation.swift; path = "Spine iOS Example/SimpleAnimation.swift"; sourceTree = SOURCE_ROOT; };
 		F571992938153AF59959A005 /* Pods-Spine iOS Example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Spine iOS Example.release.xcconfig"; path = "Target Support Files/Pods-Spine iOS Example/Pods-Spine iOS Example.release.xcconfig"; sourceTree = "<group>"; };
 /* End PBXFileReference section */
@@ -96,10 +96,10 @@
 		92BFC4B12C11BC840051F2EA /* spineboy */ = {
 			isa = PBXGroup;
 			children = (
+				76381FE02C2EF6100087712B /* spineboy-pma.atlas */,
+				76381FE12C2EF6100087712B /* spineboy-pma.png */,
 				92BFC4B32C11BCA10051F2EA /* spineboy-pro.json */,
 				92BFC4B22C11BCA10051F2EA /* spineboy-pro.skel */,
-				92BFC4B52C11BCA10051F2EA /* spineboy.atlas */,
-				92BFC4B42C11BCA10051F2EA /* spineboy.png */,
 			);
 			path = spineboy;
 			sourceTree = "<group>";
@@ -176,9 +176,9 @@
 				92BFC4B72C11BCA10051F2EA /* spineboy-pro.json in Resources */,
 				9281EF1C2C07885D00BE19F5 /* Preview Assets.xcassets in Resources */,
 				92BFC4B62C11BCA10051F2EA /* spineboy-pro.skel in Resources */,
+				76381FE22C2EF6100087712B /* spineboy-pma.atlas in Resources */,
 				9281EF192C07885D00BE19F5 /* Assets.xcassets in Resources */,
-				92BFC4B92C11BCA10051F2EA /* spineboy.atlas in Resources */,
-				92BFC4B82C11BCA10051F2EA /* spineboy.png in Resources */,
+				76381FE32C2EF6100087712B /* spineboy-pma.png in Resources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};

+ 1 - 1
spine-ios/Example - Cocoapods/Spine iOS Example/SimpleAnimation.swift

@@ -16,7 +16,7 @@ struct SimpleAnimation: View {
 
     var body: some View {
         SpineView(
-            from: .bundle(atlasFileName: "spineboy.atlas", skeletonFileName: "spineboy-pro.skel"),
+            from: .bundle(atlasFileName: "spineboy-pma.atlas", skeletonFileName: "spineboy-pro.skel"),
 //            from: .http(
 //                atlasURL: URL(string: "https://github.com/esotericsoftware/spine-runtimes/raw/spine-ios/spine-ios/Example/Spine%20iOS%20Example/Assets/spineboy/spineboy.atlas")!,
 //                skeletonURL:  URL(string: "https://github.com/esotericsoftware/spine-runtimes/raw/spine-ios/spine-ios/Example/Spine%20iOS%20Example/Assets/spineboy/spineboy-pro.skel")!

+ 2 - 1
spine-ios/Example - Cocoapods/Spine iOS Example/spineboy/spineboy.atlas → spine-ios/Example - Cocoapods/Spine iOS Example/spineboy/spineboy-pma.atlas

@@ -1,6 +1,7 @@
-spineboy.png
+spineboy-pma.png
 	size: 1024, 256
 	filter: Linear, Linear
+	pma: true
 	scale: 0.5
 crosshair
 	bounds: 352, 7, 45, 45

BIN
spine-ios/Example - Cocoapods/Spine iOS Example/spineboy/spineboy-pma.png


BIN
spine-ios/Example - Cocoapods/Spine iOS Example/spineboy/spineboy.png


+ 24 - 24
spine-ios/Example/Spine iOS Example.xcodeproj/project.pbxproj

@@ -7,10 +7,15 @@
 	objects = {
 
 /* Begin PBXBuildFile section */
+		76381FCE2C2EF4030087712B /* celestial-circus-pma.atlas in Resources */ = {isa = PBXBuildFile; fileRef = 76381FCC2C2EF4030087712B /* celestial-circus-pma.atlas */; };
+		76381FCF2C2EF4030087712B /* celestial-circus-pma.png in Resources */ = {isa = PBXBuildFile; fileRef = 76381FCD2C2EF4030087712B /* celestial-circus-pma.png */; };
+		76381FD72C2EF4F10087712B /* spineboy-pma.png in Resources */ = {isa = PBXBuildFile; fileRef = 76381FD12C2EF4F00087712B /* spineboy-pma.png */; };
+		76381FDB2C2EF4F10087712B /* spineboy-pma.atlas in Resources */ = {isa = PBXBuildFile; fileRef = 76381FD52C2EF4F00087712B /* spineboy-pma.atlas */; };
+		76381FDE2C2EF53A0087712B /* mix-and-match-pma.png in Resources */ = {isa = PBXBuildFile; fileRef = 76381FDC2C2EF53A0087712B /* mix-and-match-pma.png */; };
+		76381FDF2C2EF53A0087712B /* mix-and-match-pma.atlas in Resources */ = {isa = PBXBuildFile; fileRef = 76381FDD2C2EF53A0087712B /* mix-and-match-pma.atlas */; };
 		9205FCD42C0760B1006EE07E /* SimpleAnimationViewControllerRepresentable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9205FCD32C0760B1006EE07E /* SimpleAnimationViewControllerRepresentable.swift */; };
 		920BD1162BEBC52D0050A5A9 /* spineboy-pro.skel in Resources */ = {isa = PBXBuildFile; fileRef = 920BD1122BEBC52D0050A5A9 /* spineboy-pro.skel */; };
 		920BD1182BEBC52D0050A5A9 /* spineboy-pro.json in Resources */ = {isa = PBXBuildFile; fileRef = 920BD1142BEBC52D0050A5A9 /* spineboy-pro.json */; };
-		920BD1192BEBC52D0050A5A9 /* spineboy.atlas in Resources */ = {isa = PBXBuildFile; fileRef = 920BD1152BEBC52D0050A5A9 /* spineboy.atlas */; };
 		920BD11B2BEBDBA60050A5A9 /* MainView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 920BD11A2BEBDBA60050A5A9 /* MainView.swift */; };
 		920BD11D2BEBDC380050A5A9 /* PlayPauseAnimation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 920BD11C2BEBDC380050A5A9 /* PlayPauseAnimation.swift */; };
 		920BD1262BEBDCD80050A5A9 /* dragon_4.png in Resources */ = {isa = PBXBuildFile; fileRef = 920BD11F2BEBDCD80050A5A9 /* dragon_4.png */; };
@@ -22,30 +27,30 @@
 		920BD12C2BEBDCD80050A5A9 /* dragon.atlas in Resources */ = {isa = PBXBuildFile; fileRef = 920BD1252BEBDCD80050A5A9 /* dragon.atlas */; };
 		921C1EAF2BF609F60001A0BA /* DressUp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 921C1EAE2BF609F60001A0BA /* DressUp.swift */; };
 		921C1EBA2BF60AE90001A0BA /* mix-and-match-pro.skel in Resources */ = {isa = PBXBuildFile; fileRef = 921C1EB72BF60AE90001A0BA /* mix-and-match-pro.skel */; };
-		921C1EBB2BF60AE90001A0BA /* mix-and-match.atlas in Resources */ = {isa = PBXBuildFile; fileRef = 921C1EB82BF60AE90001A0BA /* mix-and-match.atlas */; };
-		921C1EBC2BF60AE90001A0BA /* mix-and-match.png in Resources */ = {isa = PBXBuildFile; fileRef = 921C1EB92BF60AE90001A0BA /* mix-and-match.png */; };
 		922839DF2BF4F7D8006DA9F6 /* AnimationStateEvents.swift in Sources */ = {isa = PBXBuildFile; fileRef = 922839DE2BF4F7D8006DA9F6 /* AnimationStateEvents.swift */; };
 		9240C26E2C0754DD003EE243 /* SimpleAnimationViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9240C26D2C0754DD003EE243 /* SimpleAnimationViewController.m */; };
 		924C0C162BCFCF21004E63F7 /* SpineExampleApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 924C0C152BCFCF21004E63F7 /* SpineExampleApp.swift */; };
 		924C0C182BCFCF21004E63F7 /* SimpleAnimation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 924C0C172BCFCF21004E63F7 /* SimpleAnimation.swift */; };
 		924C0C1A2BCFCF22004E63F7 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 924C0C192BCFCF22004E63F7 /* Assets.xcassets */; };
-		925315522BFF994400C96F75 /* spineboy.png in Resources */ = {isa = PBXBuildFile; fileRef = 925315512BFF994400C96F75 /* spineboy.png */; };
 		92579E772C1B0E9500FDC7D5 /* DisableRendering.swift in Sources */ = {isa = PBXBuildFile; fileRef = 92579E762C1B0E9500FDC7D5 /* DisableRendering.swift */; };
 		925CB7E92C19BC5A00C8F47F /* Spine in Frameworks */ = {isa = PBXBuildFile; productRef = 925CB7E82C19BC5A00C8F47F /* Spine */; };
 		9270C16E2BFE356000BD25BC /* Physics.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9270C16D2BFE356000BD25BC /* Physics.swift */; };
-		9270C1732BFE389600BD25BC /* celestial-circus.png in Resources */ = {isa = PBXBuildFile; fileRef = 9270C1702BFE389600BD25BC /* celestial-circus.png */; };
 		9270C1742BFE389600BD25BC /* celestial-circus-pro.skel in Resources */ = {isa = PBXBuildFile; fileRef = 9270C1712BFE389600BD25BC /* celestial-circus-pro.skel */; };
-		9270C1752BFE389600BD25BC /* celestial-circus.atlas in Resources */ = {isa = PBXBuildFile; fileRef = 9270C1722BFE389600BD25BC /* celestial-circus.atlas */; };
 		928A8CC22BCFE7DF00D9D35B /* Spine in Frameworks */ = {isa = PBXBuildFile; productRef = 928A8CC12BCFE7DF00D9D35B /* Spine */; };
 		92D7DDA82BFF3C8800EB9E3A /* DebugRendering.swift in Sources */ = {isa = PBXBuildFile; fileRef = 92D7DDA72BFF3C8800EB9E3A /* DebugRendering.swift */; };
 		92FE93292BF4AB9600CCDF48 /* IKFollowing.swift in Sources */ = {isa = PBXBuildFile; fileRef = 92FE93282BF4AB9600CCDF48 /* IKFollowing.swift */; };
 /* End PBXBuildFile section */
 
 /* Begin PBXFileReference section */
+		76381FCC2C2EF4030087712B /* celestial-circus-pma.atlas */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "celestial-circus-pma.atlas"; sourceTree = "<group>"; };
+		76381FCD2C2EF4030087712B /* celestial-circus-pma.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "celestial-circus-pma.png"; sourceTree = "<group>"; };
+		76381FD12C2EF4F00087712B /* spineboy-pma.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "spineboy-pma.png"; sourceTree = "<group>"; };
+		76381FD52C2EF4F00087712B /* spineboy-pma.atlas */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "spineboy-pma.atlas"; sourceTree = "<group>"; };
+		76381FDC2C2EF53A0087712B /* mix-and-match-pma.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "mix-and-match-pma.png"; sourceTree = "<group>"; };
+		76381FDD2C2EF53A0087712B /* mix-and-match-pma.atlas */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "mix-and-match-pma.atlas"; sourceTree = "<group>"; };
 		9205FCD32C0760B1006EE07E /* SimpleAnimationViewControllerRepresentable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SimpleAnimationViewControllerRepresentable.swift; sourceTree = "<group>"; };
 		920BD1122BEBC52D0050A5A9 /* spineboy-pro.skel */ = {isa = PBXFileReference; lastKnownFileType = file; path = "spineboy-pro.skel"; sourceTree = "<group>"; };
 		920BD1142BEBC52D0050A5A9 /* spineboy-pro.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = "spineboy-pro.json"; sourceTree = "<group>"; };
-		920BD1152BEBC52D0050A5A9 /* spineboy.atlas */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = spineboy.atlas; sourceTree = "<group>"; };
 		920BD11A2BEBDBA60050A5A9 /* MainView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainView.swift; sourceTree = "<group>"; };
 		920BD11C2BEBDC380050A5A9 /* PlayPauseAnimation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlayPauseAnimation.swift; sourceTree = "<group>"; };
 		920BD11F2BEBDCD80050A5A9 /* dragon_4.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = dragon_4.png; sourceTree = "<group>"; };
@@ -57,8 +62,6 @@
 		920BD1252BEBDCD80050A5A9 /* dragon.atlas */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = dragon.atlas; sourceTree = "<group>"; };
 		921C1EAE2BF609F60001A0BA /* DressUp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DressUp.swift; sourceTree = "<group>"; };
 		921C1EB72BF60AE90001A0BA /* mix-and-match-pro.skel */ = {isa = PBXFileReference; lastKnownFileType = file; path = "mix-and-match-pro.skel"; sourceTree = "<group>"; };
-		921C1EB82BF60AE90001A0BA /* mix-and-match.atlas */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "mix-and-match.atlas"; sourceTree = "<group>"; };
-		921C1EB92BF60AE90001A0BA /* mix-and-match.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "mix-and-match.png"; sourceTree = "<group>"; };
 		922839DE2BF4F7D8006DA9F6 /* AnimationStateEvents.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnimationStateEvents.swift; sourceTree = "<group>"; };
 		9240C26B2C0754DC003EE243 /* Spine iOS Example-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Spine iOS Example-Bridging-Header.h"; sourceTree = "<group>"; };
 		9240C26C2C0754DD003EE243 /* SimpleAnimationViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SimpleAnimationViewController.h; sourceTree = "<group>"; };
@@ -68,12 +71,9 @@
 		924C0C172BCFCF21004E63F7 /* SimpleAnimation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SimpleAnimation.swift; sourceTree = "<group>"; };
 		924C0C192BCFCF22004E63F7 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
 		924C0C1B2BCFCF22004E63F7 /* SpineiOSExample.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = SpineiOSExample.entitlements; sourceTree = "<group>"; };
-		925315512BFF994400C96F75 /* spineboy.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = spineboy.png; sourceTree = "<group>"; };
 		92579E762C1B0E9500FDC7D5 /* DisableRendering.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DisableRendering.swift; sourceTree = "<group>"; };
 		9270C16D2BFE356000BD25BC /* Physics.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Physics.swift; sourceTree = "<group>"; };
-		9270C1702BFE389600BD25BC /* celestial-circus.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "celestial-circus.png"; sourceTree = "<group>"; };
 		9270C1712BFE389600BD25BC /* celestial-circus-pro.skel */ = {isa = PBXFileReference; lastKnownFileType = file; path = "celestial-circus-pro.skel"; sourceTree = "<group>"; };
-		9270C1722BFE389600BD25BC /* celestial-circus.atlas */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "celestial-circus.atlas"; sourceTree = "<group>"; };
 		92D7DDA72BFF3C8800EB9E3A /* DebugRendering.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DebugRendering.swift; sourceTree = "<group>"; };
 		92FE93282BF4AB9600CCDF48 /* IKFollowing.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IKFollowing.swift; sourceTree = "<group>"; };
 /* End PBXFileReference section */
@@ -94,10 +94,10 @@
 		920BD1112BEBC52D0050A5A9 /* spineboy */ = {
 			isa = PBXGroup;
 			children = (
-				925315512BFF994400C96F75 /* spineboy.png */,
+				76381FD52C2EF4F00087712B /* spineboy-pma.atlas */,
+				76381FD12C2EF4F00087712B /* spineboy-pma.png */,
 				920BD1122BEBC52D0050A5A9 /* spineboy-pro.skel */,
 				920BD1142BEBC52D0050A5A9 /* spineboy-pro.json */,
-				920BD1152BEBC52D0050A5A9 /* spineboy.atlas */,
 			);
 			path = spineboy;
 			sourceTree = "<group>";
@@ -119,9 +119,9 @@
 		921C1EB02BF60AA40001A0BA /* mixandmatch */ = {
 			isa = PBXGroup;
 			children = (
+				76381FDD2C2EF53A0087712B /* mix-and-match-pma.atlas */,
+				76381FDC2C2EF53A0087712B /* mix-and-match-pma.png */,
 				921C1EB72BF60AE90001A0BA /* mix-and-match-pro.skel */,
-				921C1EB82BF60AE90001A0BA /* mix-and-match.atlas */,
-				921C1EB92BF60AE90001A0BA /* mix-and-match.png */,
 			);
 			path = mixandmatch;
 			sourceTree = "<group>";
@@ -170,9 +170,9 @@
 		9270C16F2BFE387600BD25BC /* celestial */ = {
 			isa = PBXGroup;
 			children = (
+				76381FCC2C2EF4030087712B /* celestial-circus-pma.atlas */,
+				76381FCD2C2EF4030087712B /* celestial-circus-pma.png */,
 				9270C1712BFE389600BD25BC /* celestial-circus-pro.skel */,
-				9270C1722BFE389600BD25BC /* celestial-circus.atlas */,
-				9270C1702BFE389600BD25BC /* celestial-circus.png */,
 			);
 			path = celestial;
 			sourceTree = "<group>";
@@ -265,18 +265,18 @@
 				924C0C1A2BCFCF22004E63F7 /* Assets.xcassets in Resources */,
 				920BD1282BEBDCD80050A5A9 /* dragon_2.png in Resources */,
 				920BD1182BEBC52D0050A5A9 /* spineboy-pro.json in Resources */,
-				9270C1752BFE389600BD25BC /* celestial-circus.atlas in Resources */,
+				76381FCE2C2EF4030087712B /* celestial-circus-pma.atlas in Resources */,
+				76381FCF2C2EF4030087712B /* celestial-circus-pma.png in Resources */,
 				9270C1742BFE389600BD25BC /* celestial-circus-pro.skel in Resources */,
-				921C1EBB2BF60AE90001A0BA /* mix-and-match.atlas in Resources */,
-				9270C1732BFE389600BD25BC /* celestial-circus.png in Resources */,
-				925315522BFF994400C96F75 /* spineboy.png in Resources */,
-				920BD1192BEBC52D0050A5A9 /* spineboy.atlas in Resources */,
+				76381FDE2C2EF53A0087712B /* mix-and-match-pma.png in Resources */,
 				920BD1292BEBDCD80050A5A9 /* dragon-ess.skel in Resources */,
+				76381FDB2C2EF4F10087712B /* spineboy-pma.atlas in Resources */,
 				920BD1162BEBC52D0050A5A9 /* spineboy-pro.skel in Resources */,
 				920BD12B2BEBDCD80050A5A9 /* dragon.png in Resources */,
 				920BD1272BEBDCD80050A5A9 /* dragon_5.png in Resources */,
-				921C1EBC2BF60AE90001A0BA /* mix-and-match.png in Resources */,
+				76381FDF2C2EF53A0087712B /* mix-and-match-pma.atlas in Resources */,
 				920BD1262BEBDCD80050A5A9 /* dragon_4.png in Resources */,
+				76381FD72C2EF4F10087712B /* spineboy-pma.png in Resources */,
 				920BD12C2BEBDCD80050A5A9 /* dragon.atlas in Resources */,
 				921C1EBA2BF60AE90001A0BA /* mix-and-match-pro.skel in Resources */,
 			);

+ 1 - 1
spine-ios/Example/Spine iOS Example/AnimationStateEvents.swift

@@ -34,7 +34,7 @@ struct AnimationStateEvents: View {
         VStack {
             Text("See output in console!")
             SpineView(
-                from: .bundle(atlasFileName: "spineboy.atlas", skeletonFileName: "spineboy-pro.skel"),
+                from: .bundle(atlasFileName: "spineboy-pma.atlas", skeletonFileName: "spineboy-pro.skel"),
                 controller: controller
             )
         }

+ 2 - 1
spine-ios/Example/Spine iOS Example/Assets/celestial/celestial-circus.atlas → spine-ios/Example/Spine iOS Example/Assets/celestial/celestial-circus-pma.atlas

@@ -1,6 +1,7 @@
-celestial-circus.png
+celestial-circus-pma.png
 	size: 1024, 1024
 	filter: Linear, Linear
+	pma: true
 	scale: 0.4
 arm-back-down
 	bounds: 324, 401, 38, 82

BIN
spine-ios/Example/Spine iOS Example/Assets/celestial/celestial-circus-pma.png


BIN
spine-ios/Example/Spine iOS Example/Assets/celestial/celestial-circus.png


+ 2 - 1
spine-ios/Example/Spine iOS Example/Assets/mixandmatch/mix-and-match.atlas → spine-ios/Example/Spine iOS Example/Assets/mixandmatch/mix-and-match-pma.atlas

@@ -1,6 +1,7 @@
-mix-and-match.png
+mix-and-match-pma.png
 	size: 1024, 512
 	filter: Linear, Linear
+	pma: true
 	scale: 0.5
 base-head
 	bounds: 118, 70, 95, 73

BIN
spine-ios/Example/Spine iOS Example/Assets/mixandmatch/mix-and-match-pma.png


BIN
spine-ios/Example/Spine iOS Example/Assets/mixandmatch/mix-and-match.png


+ 2 - 1
spine-ios/Example/Spine iOS Example/Assets/spineboy/spineboy.atlas → spine-ios/Example/Spine iOS Example/Assets/spineboy/spineboy-pma.atlas

@@ -1,6 +1,7 @@
-spineboy.png
+spineboy-pma.png
 	size: 1024, 256
 	filter: Linear, Linear
+	pma: true
 	scale: 0.5
 crosshair
 	bounds: 352, 7, 45, 45

BIN
spine-ios/Example/Spine iOS Example/Assets/spineboy/spineboy-pma.png


BIN
spine-ios/Example/Spine iOS Example/Assets/spineboy/spineboy.png


+ 1 - 1
spine-ios/Example/Spine iOS Example/DebugRendering.swift

@@ -10,7 +10,7 @@ struct DebugRendering: View {
         ZStack {
             Color.red.ignoresSafeArea()
             SpineView(
-                from: .bundle(atlasFileName: "spineboy.atlas", skeletonFileName: "spineboy-pro.skel"),
+                from: .bundle(atlasFileName: "spineboy-pma.atlas", skeletonFileName: "spineboy-pro.skel"),
                 controller: model.controller,
                 mode: .fit,
                 alignment: .center

+ 1 - 1
spine-ios/Example/Spine iOS Example/DisableRendering.swift

@@ -27,7 +27,7 @@ struct DisableRendering: View {
                 }
                 
                 SpineView(
-                    from: .bundle(atlasFileName: "spineboy.atlas", skeletonFileName: "spineboy-pro.skel"),
+                    from: .bundle(atlasFileName: "spineboy-pma.atlas", skeletonFileName: "spineboy-pro.skel"),
                     controller: controller,
                     isRendering: $isRendering
                 )

+ 1 - 1
spine-ios/Example/Spine iOS Example/DressUp.swift

@@ -75,7 +75,7 @@ final class DressUpModel: ObservableObject {
         )
         Task.detached(priority: .high) {
             let drawable = try await SkeletonDrawableWrapper.fromBundle(
-                atlasFileName: "mix-and-match.atlas",
+                atlasFileName: "mix-and-match-pma.atlas",
                 skeletonFileName: "mix-and-match-pro.skel"
             )
             try await MainActor.run {

+ 1 - 1
spine-ios/Example/Spine iOS Example/IKFollowing.swift

@@ -8,7 +8,7 @@ struct IKFollowing: View {
         
     var body: some View {
         SpineView(
-            from: .bundle(atlasFileName: "spineboy.atlas", skeletonFileName: "spineboy-pro.skel"),
+            from: .bundle(atlasFileName: "spineboy-pma.atlas", skeletonFileName: "spineboy-pro.skel"),
             controller: model.controller,
             alignment: .centerLeft
         )

+ 15 - 12
spine-ios/Example/Spine iOS Example/Physics.swift

@@ -7,16 +7,19 @@ struct Physics: View {
     var model = PhysicsModel()
     
     var body: some View {
-        SpineView(
-            from: .bundle(atlasFileName: "celestial-circus.atlas", skeletonFileName: "celestial-circus-pro.skel"),
-            controller: model.controller
-        )
-        .gesture(
-            DragGesture(minimumDistance: 0)
-                .onChanged { gesture in
-                    model.updateBonePosition(position: gesture.location)
-                }
-        )
+		ZStack {
+			Color(red: 51 / 255, green: 51 / 255, blue: 51 / 255).ignoresSafeArea()
+			SpineView(
+				from: .bundle(atlasFileName: "celestial-circus-pma.atlas", skeletonFileName: "celestial-circus-pro.skel"),
+				controller: model.controller
+			)
+			.gesture(
+				DragGesture(minimumDistance: 0)
+					.onChanged { gesture in
+						model.updateBonePosition(position: gesture.location)
+					}
+			)
+		}
         .navigationTitle("Physics (drag anywhere)")
         .navigationBarTitleDisplayMode(.inline)
     }
@@ -42,11 +45,11 @@ final class PhysicsModel: ObservableObject {
             onInitialized: { controller in
                 controller.animationState.setAnimationByName(
                     trackIndex: 0,
-                    animationName: "eyeblink-long",
+                    animationName: "eyeblink",
                     loop: true
                 )
                 controller.animationState.setAnimationByName(
-                    trackIndex: 0,
+                    trackIndex: 1,
                     animationName: "wings-and-feet",
                     loop: true
                 )

+ 1 - 1
spine-ios/Example/Spine iOS Example/SimpleAnimation.swift

@@ -16,7 +16,7 @@ struct SimpleAnimation: View {
 
     var body: some View {
         SpineView(
-            from: .bundle(atlasFileName: "spineboy.atlas", skeletonFileName: "spineboy-pro.skel"),
+            from: .bundle(atlasFileName: "spineboy-pma.atlas", skeletonFileName: "spineboy-pro.skel"),
 //            from: .http(
 //                atlasURL: URL(string: "https://github.com/esotericsoftware/spine-runtimes/raw/spine-ios/spine-ios/Example/Spine%20iOS%20Example/Assets/spineboy/spineboy.atlas")!,
 //                skeletonURL:  URL(string: "https://github.com/esotericsoftware/spine-runtimes/raw/spine-ios/spine-ios/Example/Spine%20iOS%20Example/Assets/spineboy/spineboy-pro.skel")!