├── .DS_Store ├── .gitignore ├── SpineSampleProject.xcodeproj ├── project.pbxproj └── project.xcworkspace │ ├── contents.xcworkspacedata │ └── xcshareddata │ ├── IDEWorkspaceChecks.plist │ └── swiftpm │ └── Package.resolved └── SpineSampleProject ├── AppDelegate.swift ├── Assets.xcassets ├── AppIcon.appiconset │ └── Contents.json ├── Contents.json └── goblins │ ├── Contents.json │ ├── default.spriteatlas │ ├── Contents.json │ ├── dagger.imageset │ │ ├── Contents.json │ │ ├── dagger-1.png │ │ ├── dagger-2.png │ │ └── dagger.png │ ├── shield.imageset │ │ ├── Contents.json │ │ ├── shield-1.png │ │ ├── shield-2.png │ │ ├── shield-3.png │ │ ├── shield-4.png │ │ ├── shield-5.png │ │ ├── shield-6.png │ │ ├── shield-7.png │ │ ├── shield-8.png │ │ ├── shield-9.png │ │ └── shield.png │ └── spear.imageset │ │ ├── Contents.json │ │ ├── spear-1.png │ │ ├── spear-2.png │ │ └── spear.png │ ├── goblin.spriteatlas │ ├── Contents.json │ ├── eyes-closed.imageset │ │ ├── Contents.json │ │ └── eyes-closed.png │ ├── head.imageset │ │ ├── Contents.json │ │ └── head.png │ ├── left-arm.imageset │ │ ├── Contents.json │ │ └── left-arm.png │ ├── left-foot.imageset │ │ ├── Contents.json │ │ └── left-foot.png │ ├── left-hand.imageset │ │ ├── Contents.json │ │ └── left-hand.png │ ├── left-lower-leg.imageset │ │ ├── Contents.json │ │ └── left-lower-leg.png │ ├── left-shoulder.imageset │ │ ├── Contents.json │ │ └── left-shoulder.png │ ├── left-upper-leg.imageset │ │ ├── Contents.json │ │ └── left-upper-leg.png │ ├── neck.imageset │ │ ├── Contents.json │ │ └── neck.png │ ├── pelvis.imageset │ │ ├── Contents.json │ │ └── pelvis.png │ ├── right-arm.imageset │ │ ├── Contents.json │ │ └── right-arm.png │ ├── right-foot.imageset │ │ ├── Contents.json │ │ └── right-foot.png │ ├── right-hand.imageset │ │ ├── Contents.json │ │ └── right-hand.png │ ├── right-lower-leg.imageset │ │ ├── Contents.json │ │ └── right-lower-leg.png │ ├── right-shoulder.imageset │ │ ├── Contents.json │ │ └── right-shoulder.png │ ├── right-upper-leg.imageset │ │ ├── Contents.json │ │ └── right-upper-leg.png │ ├── torso.imageset │ │ ├── Contents.json │ │ └── torso.png │ ├── undie-straps.imageset │ │ ├── Contents.json │ │ └── undie-straps.png │ └── undies.imageset │ │ ├── Contents.json │ │ └── undies.png │ └── goblingirl.spriteatlas │ ├── Contents.json │ ├── eyes-closed.imageset │ ├── Contents.json │ └── eyes-closed.png │ ├── head.imageset │ ├── Contents.json │ └── head.png │ ├── left-arm.imageset │ ├── Contents.json │ └── left-arm.png │ ├── left-foot.imageset │ ├── Contents.json │ └── left-foot.png │ ├── left-hand.imageset │ ├── Contents.json │ └── left-hand.png │ ├── left-lower-leg.imageset │ ├── Contents.json │ └── left-lower-leg.png │ ├── left-shoulder.imageset │ ├── Contents.json │ └── left-shoulder.png │ ├── left-upper-leg.imageset │ ├── Contents.json │ └── left-upper-leg.png │ ├── neck.imageset │ ├── Contents.json │ └── neck.png │ ├── pelvis.imageset │ ├── Contents.json │ └── pelvis.png │ ├── right-arm.imageset │ ├── Contents.json │ └── right-arm.png │ ├── right-foot.imageset │ ├── Contents.json │ └── right-foot.png │ ├── right-hand.imageset │ ├── Contents.json │ └── right-hand.png │ ├── right-lower-leg.imageset │ ├── Contents.json │ └── right-lower-leg.png │ ├── right-shoulder.imageset │ ├── Contents.json │ └── right-shoulder.png │ ├── right-upper-leg.imageset │ ├── Contents.json │ └── right-upper-leg.png │ ├── torso.imageset │ ├── Contents.json │ └── torso.png │ ├── undie-straps.imageset │ ├── Contents.json │ └── undie-straps.png │ └── undies.imageset │ ├── Contents.json │ └── undies.png ├── Base.lproj ├── LaunchScreen.storyboard └── Main.storyboard ├── GameScene.swift ├── GameViewController.swift ├── Info.plist └── goblins-ess.json /.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maxgribov/SpineSampleProject/ee8c55562b99a656377a365f38de4d41d9c133e6/.DS_Store -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Xcode 2 | # 3 | # gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore 4 | 5 | ## User settings 6 | xcuserdata/ 7 | 8 | ## compatibility with Xcode 8 and earlier (ignoring not required starting Xcode 9) 9 | *.xcscmblueprint 10 | *.xccheckout 11 | 12 | ## compatibility with Xcode 3 and earlier (ignoring not required starting Xcode 4) 13 | build/ 14 | DerivedData/ 15 | *.moved-aside 16 | *.pbxuser 17 | !default.pbxuser 18 | *.mode1v3 19 | !default.mode1v3 20 | *.mode2v3 21 | !default.mode2v3 22 | *.perspectivev3 23 | !default.perspectivev3 24 | 25 | ## Obj-C/Swift specific 26 | *.hmap 27 | 28 | ## App packaging 29 | *.ipa 30 | *.dSYM.zip 31 | *.dSYM 32 | 33 | ## Playgrounds 34 | timeline.xctimeline 35 | playground.xcworkspace 36 | 37 | # Swift Package Manager 38 | # 39 | # Add this line if you want to avoid checking in source code from Swift Package Manager dependencies. 40 | # Packages/ 41 | # Package.pins 42 | # Package.resolved 43 | # *.xcodeproj 44 | # 45 | # Xcode automatically generates this directory with a .xcworkspacedata file and xcuserdata 46 | # hence it is not needed unless you have added a package configuration file to your project 47 | # .swiftpm 48 | 49 | .build/ 50 | 51 | # CocoaPods 52 | # 53 | # We recommend against adding the Pods directory to your .gitignore. However 54 | # you should judge for yourself, the pros and cons are mentioned at: 55 | # https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control 56 | # 57 | # Pods/ 58 | # 59 | # Add this line if you want to avoid checking in source code from the Xcode workspace 60 | # *.xcworkspace 61 | 62 | # Carthage 63 | # 64 | # Add this line if you want to avoid checking in source code from Carthage dependencies. 65 | # Carthage/Checkouts 66 | 67 | Carthage/Build/ 68 | 69 | # Accio dependency management 70 | Dependencies/ 71 | .accio/ 72 | 73 | # fastlane 74 | # 75 | # It is recommended to not store the screenshots in the git repo. 76 | # Instead, use fastlane to re-generate the screenshots whenever they are needed. 77 | # For more information about the recommended setup visit: 78 | # https://docs.fastlane.tools/best-practices/source-control/#source-control 79 | 80 | fastlane/report.xml 81 | fastlane/Preview.html 82 | fastlane/screenshots/**/*.png 83 | fastlane/test_output 84 | 85 | # Code Injection 86 | # 87 | # After new code Injection tools there's a generated folder /iOSInjectionProject 88 | # https://github.com/johnno1962/injectionforxcode 89 | 90 | iOSInjectionProject/ -------------------------------------------------------------------------------- /SpineSampleProject.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 54; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 770B8AF02933B0A2008FDA7D /* Spine in Frameworks */ = {isa = PBXBuildFile; productRef = 770B8AEF2933B0A2008FDA7D /* Spine */; }; 11 | 774D5AB8249C1A220066AC15 /* goblins-ess.json in Resources */ = {isa = PBXBuildFile; fileRef = 774D5AB7249C1A220066AC15 /* goblins-ess.json */; }; 12 | 778C8D95203F350200EA1A25 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 778C8D94203F350200EA1A25 /* AppDelegate.swift */; }; 13 | 778C8D9B203F350200EA1A25 /* GameScene.swift in Sources */ = {isa = PBXBuildFile; fileRef = 778C8D9A203F350200EA1A25 /* GameScene.swift */; }; 14 | 778C8D9D203F350200EA1A25 /* GameViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 778C8D9C203F350200EA1A25 /* GameViewController.swift */; }; 15 | 778C8DA0203F350200EA1A25 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 778C8D9E203F350200EA1A25 /* Main.storyboard */; }; 16 | 778C8DA2203F350200EA1A25 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 778C8DA1203F350200EA1A25 /* Assets.xcassets */; }; 17 | 778C8DA5203F350200EA1A25 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 778C8DA3203F350200EA1A25 /* LaunchScreen.storyboard */; }; 18 | /* End PBXBuildFile section */ 19 | 20 | /* Begin PBXFileReference section */ 21 | 774D5AB7249C1A220066AC15 /* goblins-ess.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = "goblins-ess.json"; sourceTree = ""; }; 22 | 778C8D91203F350200EA1A25 /* SpineSampleProject.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = SpineSampleProject.app; sourceTree = BUILT_PRODUCTS_DIR; }; 23 | 778C8D94203F350200EA1A25 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 24 | 778C8D9A203F350200EA1A25 /* GameScene.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GameScene.swift; sourceTree = ""; }; 25 | 778C8D9C203F350200EA1A25 /* GameViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GameViewController.swift; sourceTree = ""; }; 26 | 778C8D9F203F350200EA1A25 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; 27 | 778C8DA1203F350200EA1A25 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 28 | 778C8DA4203F350200EA1A25 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 29 | 778C8DA6203F350200EA1A25 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 30 | /* End PBXFileReference section */ 31 | 32 | /* Begin PBXFrameworksBuildPhase section */ 33 | 778C8D8E203F350200EA1A25 /* Frameworks */ = { 34 | isa = PBXFrameworksBuildPhase; 35 | buildActionMask = 2147483647; 36 | files = ( 37 | 770B8AF02933B0A2008FDA7D /* Spine in Frameworks */, 38 | ); 39 | runOnlyForDeploymentPostprocessing = 0; 40 | }; 41 | /* End PBXFrameworksBuildPhase section */ 42 | 43 | /* Begin PBXGroup section */ 44 | 778C8D88203F350200EA1A25 = { 45 | isa = PBXGroup; 46 | children = ( 47 | 778C8D93203F350200EA1A25 /* SpineSampleProject */, 48 | 778C8D92203F350200EA1A25 /* Products */, 49 | ); 50 | sourceTree = ""; 51 | }; 52 | 778C8D92203F350200EA1A25 /* Products */ = { 53 | isa = PBXGroup; 54 | children = ( 55 | 778C8D91203F350200EA1A25 /* SpineSampleProject.app */, 56 | ); 57 | name = Products; 58 | sourceTree = ""; 59 | }; 60 | 778C8D93203F350200EA1A25 /* SpineSampleProject */ = { 61 | isa = PBXGroup; 62 | children = ( 63 | 778C8D94203F350200EA1A25 /* AppDelegate.swift */, 64 | 778C8D9A203F350200EA1A25 /* GameScene.swift */, 65 | 778C8D9C203F350200EA1A25 /* GameViewController.swift */, 66 | 778C8D9E203F350200EA1A25 /* Main.storyboard */, 67 | 778C8DA1203F350200EA1A25 /* Assets.xcassets */, 68 | 774D5AB7249C1A220066AC15 /* goblins-ess.json */, 69 | 778C8DA3203F350200EA1A25 /* LaunchScreen.storyboard */, 70 | 778C8DA6203F350200EA1A25 /* Info.plist */, 71 | ); 72 | path = SpineSampleProject; 73 | sourceTree = ""; 74 | }; 75 | /* End PBXGroup section */ 76 | 77 | /* Begin PBXNativeTarget section */ 78 | 778C8D90203F350200EA1A25 /* SpineSampleProject */ = { 79 | isa = PBXNativeTarget; 80 | buildConfigurationList = 778C8DA9203F350200EA1A25 /* Build configuration list for PBXNativeTarget "SpineSampleProject" */; 81 | buildPhases = ( 82 | 778C8D8D203F350200EA1A25 /* Sources */, 83 | 778C8D8E203F350200EA1A25 /* Frameworks */, 84 | 778C8D8F203F350200EA1A25 /* Resources */, 85 | ); 86 | buildRules = ( 87 | ); 88 | dependencies = ( 89 | ); 90 | name = SpineSampleProject; 91 | packageProductDependencies = ( 92 | 770B8AEF2933B0A2008FDA7D /* Spine */, 93 | ); 94 | productName = SpineSampleProject; 95 | productReference = 778C8D91203F350200EA1A25 /* SpineSampleProject.app */; 96 | productType = "com.apple.product-type.application"; 97 | }; 98 | /* End PBXNativeTarget section */ 99 | 100 | /* Begin PBXProject section */ 101 | 778C8D89203F350200EA1A25 /* Project object */ = { 102 | isa = PBXProject; 103 | attributes = { 104 | LastSwiftUpdateCheck = 0920; 105 | LastUpgradeCheck = 1020; 106 | ORGANIZATIONNAME = "Max Gribov"; 107 | TargetAttributes = { 108 | 778C8D90203F350200EA1A25 = { 109 | CreatedOnToolsVersion = 9.2; 110 | LastSwiftMigration = 1020; 111 | ProvisioningStyle = Automatic; 112 | }; 113 | }; 114 | }; 115 | buildConfigurationList = 778C8D8C203F350200EA1A25 /* Build configuration list for PBXProject "SpineSampleProject" */; 116 | compatibilityVersion = "Xcode 8.0"; 117 | developmentRegion = en; 118 | hasScannedForEncodings = 0; 119 | knownRegions = ( 120 | en, 121 | Base, 122 | ); 123 | mainGroup = 778C8D88203F350200EA1A25; 124 | packageReferences = ( 125 | 770B8AEE2933B0A2008FDA7D /* XCRemoteSwiftPackageReference "Spine" */, 126 | ); 127 | productRefGroup = 778C8D92203F350200EA1A25 /* Products */; 128 | projectDirPath = ""; 129 | projectRoot = ""; 130 | targets = ( 131 | 778C8D90203F350200EA1A25 /* SpineSampleProject */, 132 | ); 133 | }; 134 | /* End PBXProject section */ 135 | 136 | /* Begin PBXResourcesBuildPhase section */ 137 | 778C8D8F203F350200EA1A25 /* Resources */ = { 138 | isa = PBXResourcesBuildPhase; 139 | buildActionMask = 2147483647; 140 | files = ( 141 | 778C8DA0203F350200EA1A25 /* Main.storyboard in Resources */, 142 | 778C8DA2203F350200EA1A25 /* Assets.xcassets in Resources */, 143 | 774D5AB8249C1A220066AC15 /* goblins-ess.json in Resources */, 144 | 778C8DA5203F350200EA1A25 /* LaunchScreen.storyboard in Resources */, 145 | ); 146 | runOnlyForDeploymentPostprocessing = 0; 147 | }; 148 | /* End PBXResourcesBuildPhase section */ 149 | 150 | /* Begin PBXSourcesBuildPhase section */ 151 | 778C8D8D203F350200EA1A25 /* Sources */ = { 152 | isa = PBXSourcesBuildPhase; 153 | buildActionMask = 2147483647; 154 | files = ( 155 | 778C8D9B203F350200EA1A25 /* GameScene.swift in Sources */, 156 | 778C8D9D203F350200EA1A25 /* GameViewController.swift in Sources */, 157 | 778C8D95203F350200EA1A25 /* AppDelegate.swift in Sources */, 158 | ); 159 | runOnlyForDeploymentPostprocessing = 0; 160 | }; 161 | /* End PBXSourcesBuildPhase section */ 162 | 163 | /* Begin PBXVariantGroup section */ 164 | 778C8D9E203F350200EA1A25 /* Main.storyboard */ = { 165 | isa = PBXVariantGroup; 166 | children = ( 167 | 778C8D9F203F350200EA1A25 /* Base */, 168 | ); 169 | name = Main.storyboard; 170 | sourceTree = ""; 171 | }; 172 | 778C8DA3203F350200EA1A25 /* LaunchScreen.storyboard */ = { 173 | isa = PBXVariantGroup; 174 | children = ( 175 | 778C8DA4203F350200EA1A25 /* Base */, 176 | ); 177 | name = LaunchScreen.storyboard; 178 | sourceTree = ""; 179 | }; 180 | /* End PBXVariantGroup section */ 181 | 182 | /* Begin XCBuildConfiguration section */ 183 | 778C8DA7203F350200EA1A25 /* Debug */ = { 184 | isa = XCBuildConfiguration; 185 | buildSettings = { 186 | ALWAYS_SEARCH_USER_PATHS = NO; 187 | CLANG_ANALYZER_NONNULL = YES; 188 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; 189 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; 190 | CLANG_CXX_LIBRARY = "libc++"; 191 | CLANG_ENABLE_MODULES = YES; 192 | CLANG_ENABLE_OBJC_ARC = YES; 193 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 194 | CLANG_WARN_BOOL_CONVERSION = YES; 195 | CLANG_WARN_COMMA = YES; 196 | CLANG_WARN_CONSTANT_CONVERSION = YES; 197 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 198 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 199 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 200 | CLANG_WARN_EMPTY_BODY = YES; 201 | CLANG_WARN_ENUM_CONVERSION = YES; 202 | CLANG_WARN_INFINITE_RECURSION = YES; 203 | CLANG_WARN_INT_CONVERSION = YES; 204 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 205 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 206 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 207 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 208 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 209 | CLANG_WARN_STRICT_PROTOTYPES = YES; 210 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 211 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; 212 | CLANG_WARN_UNREACHABLE_CODE = YES; 213 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 214 | CODE_SIGN_IDENTITY = "iPhone Developer"; 215 | COPY_PHASE_STRIP = NO; 216 | DEBUG_INFORMATION_FORMAT = dwarf; 217 | ENABLE_STRICT_OBJC_MSGSEND = YES; 218 | ENABLE_TESTABILITY = YES; 219 | GCC_C_LANGUAGE_STANDARD = gnu11; 220 | GCC_DYNAMIC_NO_PIC = NO; 221 | GCC_NO_COMMON_BLOCKS = YES; 222 | GCC_OPTIMIZATION_LEVEL = 0; 223 | GCC_PREPROCESSOR_DEFINITIONS = ( 224 | "DEBUG=1", 225 | "$(inherited)", 226 | ); 227 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 228 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 229 | GCC_WARN_UNDECLARED_SELECTOR = YES; 230 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 231 | GCC_WARN_UNUSED_FUNCTION = YES; 232 | GCC_WARN_UNUSED_VARIABLE = YES; 233 | IPHONEOS_DEPLOYMENT_TARGET = 11.2; 234 | MTL_ENABLE_DEBUG_INFO = YES; 235 | ONLY_ACTIVE_ARCH = YES; 236 | SDKROOT = iphoneos; 237 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; 238 | SWIFT_OPTIMIZATION_LEVEL = "-Onone"; 239 | }; 240 | name = Debug; 241 | }; 242 | 778C8DA8203F350200EA1A25 /* Release */ = { 243 | isa = XCBuildConfiguration; 244 | buildSettings = { 245 | ALWAYS_SEARCH_USER_PATHS = NO; 246 | CLANG_ANALYZER_NONNULL = YES; 247 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; 248 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; 249 | CLANG_CXX_LIBRARY = "libc++"; 250 | CLANG_ENABLE_MODULES = YES; 251 | CLANG_ENABLE_OBJC_ARC = YES; 252 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 253 | CLANG_WARN_BOOL_CONVERSION = YES; 254 | CLANG_WARN_COMMA = YES; 255 | CLANG_WARN_CONSTANT_CONVERSION = YES; 256 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 257 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 258 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 259 | CLANG_WARN_EMPTY_BODY = YES; 260 | CLANG_WARN_ENUM_CONVERSION = YES; 261 | CLANG_WARN_INFINITE_RECURSION = YES; 262 | CLANG_WARN_INT_CONVERSION = YES; 263 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 264 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 265 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 266 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 267 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 268 | CLANG_WARN_STRICT_PROTOTYPES = YES; 269 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 270 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; 271 | CLANG_WARN_UNREACHABLE_CODE = YES; 272 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 273 | CODE_SIGN_IDENTITY = "iPhone Developer"; 274 | COPY_PHASE_STRIP = NO; 275 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 276 | ENABLE_NS_ASSERTIONS = NO; 277 | ENABLE_STRICT_OBJC_MSGSEND = YES; 278 | GCC_C_LANGUAGE_STANDARD = gnu11; 279 | GCC_NO_COMMON_BLOCKS = YES; 280 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 281 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 282 | GCC_WARN_UNDECLARED_SELECTOR = YES; 283 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 284 | GCC_WARN_UNUSED_FUNCTION = YES; 285 | GCC_WARN_UNUSED_VARIABLE = YES; 286 | IPHONEOS_DEPLOYMENT_TARGET = 11.2; 287 | MTL_ENABLE_DEBUG_INFO = NO; 288 | SDKROOT = iphoneos; 289 | SWIFT_COMPILATION_MODE = wholemodule; 290 | SWIFT_OPTIMIZATION_LEVEL = "-O"; 291 | VALIDATE_PRODUCT = YES; 292 | }; 293 | name = Release; 294 | }; 295 | 778C8DAA203F350200EA1A25 /* Debug */ = { 296 | isa = XCBuildConfiguration; 297 | buildSettings = { 298 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 299 | CODE_SIGN_STYLE = Automatic; 300 | DEVELOPMENT_TEAM = 29E66XW7ZX; 301 | INFOPLIST_FILE = SpineSampleProject/Info.plist; 302 | IPHONEOS_DEPLOYMENT_TARGET = 12.0; 303 | LD_RUNPATH_SEARCH_PATHS = ( 304 | "$(inherited)", 305 | "@executable_path/Frameworks", 306 | ); 307 | PRODUCT_BUNDLE_IDENTIFIER = pro.maxgribov.SpineSampleProject; 308 | PRODUCT_NAME = "$(TARGET_NAME)"; 309 | SWIFT_VERSION = 5.0; 310 | TARGETED_DEVICE_FAMILY = "1,2"; 311 | }; 312 | name = Debug; 313 | }; 314 | 778C8DAB203F350200EA1A25 /* Release */ = { 315 | isa = XCBuildConfiguration; 316 | buildSettings = { 317 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 318 | CODE_SIGN_STYLE = Automatic; 319 | DEVELOPMENT_TEAM = 29E66XW7ZX; 320 | INFOPLIST_FILE = SpineSampleProject/Info.plist; 321 | IPHONEOS_DEPLOYMENT_TARGET = 12.0; 322 | LD_RUNPATH_SEARCH_PATHS = ( 323 | "$(inherited)", 324 | "@executable_path/Frameworks", 325 | ); 326 | PRODUCT_BUNDLE_IDENTIFIER = pro.maxgribov.SpineSampleProject; 327 | PRODUCT_NAME = "$(TARGET_NAME)"; 328 | SWIFT_VERSION = 5.0; 329 | TARGETED_DEVICE_FAMILY = "1,2"; 330 | }; 331 | name = Release; 332 | }; 333 | /* End XCBuildConfiguration section */ 334 | 335 | /* Begin XCConfigurationList section */ 336 | 778C8D8C203F350200EA1A25 /* Build configuration list for PBXProject "SpineSampleProject" */ = { 337 | isa = XCConfigurationList; 338 | buildConfigurations = ( 339 | 778C8DA7203F350200EA1A25 /* Debug */, 340 | 778C8DA8203F350200EA1A25 /* Release */, 341 | ); 342 | defaultConfigurationIsVisible = 0; 343 | defaultConfigurationName = Release; 344 | }; 345 | 778C8DA9203F350200EA1A25 /* Build configuration list for PBXNativeTarget "SpineSampleProject" */ = { 346 | isa = XCConfigurationList; 347 | buildConfigurations = ( 348 | 778C8DAA203F350200EA1A25 /* Debug */, 349 | 778C8DAB203F350200EA1A25 /* Release */, 350 | ); 351 | defaultConfigurationIsVisible = 0; 352 | defaultConfigurationName = Release; 353 | }; 354 | /* End XCConfigurationList section */ 355 | 356 | /* Begin XCRemoteSwiftPackageReference section */ 357 | 770B8AEE2933B0A2008FDA7D /* XCRemoteSwiftPackageReference "Spine" */ = { 358 | isa = XCRemoteSwiftPackageReference; 359 | repositoryURL = "https://github.com/maxgribov/Spine"; 360 | requirement = { 361 | kind = upToNextMajorVersion; 362 | minimumVersion = 3.0.0; 363 | }; 364 | }; 365 | /* End XCRemoteSwiftPackageReference section */ 366 | 367 | /* Begin XCSwiftPackageProductDependency section */ 368 | 770B8AEF2933B0A2008FDA7D /* Spine */ = { 369 | isa = XCSwiftPackageProductDependency; 370 | package = 770B8AEE2933B0A2008FDA7D /* XCRemoteSwiftPackageReference "Spine" */; 371 | productName = Spine; 372 | }; 373 | /* End XCSwiftPackageProductDependency section */ 374 | }; 375 | rootObject = 778C8D89203F350200EA1A25 /* Project object */; 376 | } 377 | -------------------------------------------------------------------------------- /SpineSampleProject.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /SpineSampleProject.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /SpineSampleProject.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved: -------------------------------------------------------------------------------- 1 | { 2 | "pins" : [ 3 | { 4 | "identity" : "spine", 5 | "kind" : "remoteSourceControl", 6 | "location" : "https://github.com/maxgribov/Spine", 7 | "state" : { 8 | "revision" : "fdc80aaad203c0ca15152d556c9a9e654f90fc2d", 9 | "version" : "3.0.3" 10 | } 11 | } 12 | ], 13 | "version" : 2 14 | } 15 | -------------------------------------------------------------------------------- /SpineSampleProject/AppDelegate.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.swift 3 | // SpineSampleProject 4 | // 5 | // Created by Max Gribov on 22/02/2018. 6 | // Copyright © 2018 Max Gribov. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | @UIApplicationMain 12 | class AppDelegate: UIResponder, UIApplicationDelegate { 13 | 14 | var window: UIWindow? 15 | 16 | 17 | func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { 18 | // Override point for customization after application launch. 19 | return true 20 | } 21 | 22 | func applicationWillResignActive(_ application: UIApplication) { 23 | // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. 24 | // Use this method to pause ongoing tasks, disable timers, and invalidate graphics rendering callbacks. Games should use this method to pause the game. 25 | } 26 | 27 | func applicationDidEnterBackground(_ application: UIApplication) { 28 | // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. 29 | // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. 30 | } 31 | 32 | func applicationWillEnterForeground(_ application: UIApplication) { 33 | // Called as part of the transition from the background to the active state; here you can undo many of the changes made on entering the background. 34 | } 35 | 36 | func applicationDidBecomeActive(_ application: UIApplication) { 37 | // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. 38 | } 39 | 40 | func applicationWillTerminate(_ application: UIApplication) { 41 | // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. 42 | } 43 | 44 | 45 | } 46 | 47 | -------------------------------------------------------------------------------- /SpineSampleProject/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "iphone", 5 | "size" : "20x20", 6 | "scale" : "2x" 7 | }, 8 | { 9 | "idiom" : "iphone", 10 | "size" : "20x20", 11 | "scale" : "3x" 12 | }, 13 | { 14 | "idiom" : "iphone", 15 | "size" : "29x29", 16 | "scale" : "2x" 17 | }, 18 | { 19 | "idiom" : "iphone", 20 | "size" : "29x29", 21 | "scale" : "3x" 22 | }, 23 | { 24 | "idiom" : "iphone", 25 | "size" : "40x40", 26 | "scale" : "2x" 27 | }, 28 | { 29 | "idiom" : "iphone", 30 | "size" : "40x40", 31 | "scale" : "3x" 32 | }, 33 | { 34 | "idiom" : "iphone", 35 | "size" : "60x60", 36 | "scale" : "2x" 37 | }, 38 | { 39 | "idiom" : "iphone", 40 | "size" : "60x60", 41 | "scale" : "3x" 42 | }, 43 | { 44 | "idiom" : "ipad", 45 | "size" : "20x20", 46 | "scale" : "1x" 47 | }, 48 | { 49 | "idiom" : "ipad", 50 | "size" : "20x20", 51 | "scale" : "2x" 52 | }, 53 | { 54 | "idiom" : "ipad", 55 | "size" : "29x29", 56 | "scale" : "1x" 57 | }, 58 | { 59 | "idiom" : "ipad", 60 | "size" : "29x29", 61 | "scale" : "2x" 62 | }, 63 | { 64 | "idiom" : "ipad", 65 | "size" : "40x40", 66 | "scale" : "1x" 67 | }, 68 | { 69 | "idiom" : "ipad", 70 | "size" : "40x40", 71 | "scale" : "2x" 72 | }, 73 | { 74 | "idiom" : "ipad", 75 | "size" : "76x76", 76 | "scale" : "1x" 77 | }, 78 | { 79 | "idiom" : "ipad", 80 | "size" : "76x76", 81 | "scale" : "2x" 82 | }, 83 | { 84 | "idiom" : "ipad", 85 | "size" : "83.5x83.5", 86 | "scale" : "2x" 87 | }, 88 | { 89 | "idiom" : "ios-marketing", 90 | "size" : "1024x1024", 91 | "scale" : "1x" 92 | } 93 | ], 94 | "info" : { 95 | "version" : 1, 96 | "author" : "xcode" 97 | } 98 | } -------------------------------------------------------------------------------- /SpineSampleProject/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /SpineSampleProject/Assets.xcassets/goblins/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | }, 6 | "properties" : { 7 | "provides-namespace" : true 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /SpineSampleProject/Assets.xcassets/goblins/default.spriteatlas/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | }, 6 | "properties" : { 7 | "provides-namespace" : true 8 | } 9 | } -------------------------------------------------------------------------------- /SpineSampleProject/Assets.xcassets/goblins/default.spriteatlas/dagger.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "dagger.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "dagger-1.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "dagger-2.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /SpineSampleProject/Assets.xcassets/goblins/default.spriteatlas/dagger.imageset/dagger-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maxgribov/SpineSampleProject/ee8c55562b99a656377a365f38de4d41d9c133e6/SpineSampleProject/Assets.xcassets/goblins/default.spriteatlas/dagger.imageset/dagger-1.png -------------------------------------------------------------------------------- /SpineSampleProject/Assets.xcassets/goblins/default.spriteatlas/dagger.imageset/dagger-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maxgribov/SpineSampleProject/ee8c55562b99a656377a365f38de4d41d9c133e6/SpineSampleProject/Assets.xcassets/goblins/default.spriteatlas/dagger.imageset/dagger-2.png -------------------------------------------------------------------------------- /SpineSampleProject/Assets.xcassets/goblins/default.spriteatlas/dagger.imageset/dagger.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maxgribov/SpineSampleProject/ee8c55562b99a656377a365f38de4d41d9c133e6/SpineSampleProject/Assets.xcassets/goblins/default.spriteatlas/dagger.imageset/dagger.png -------------------------------------------------------------------------------- /SpineSampleProject/Assets.xcassets/goblins/default.spriteatlas/shield.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "iphone", 5 | "filename" : "shield.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "iphone", 10 | "filename" : "shield-1.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "iphone", 15 | "filename" : "shield-2.png", 16 | "scale" : "3x" 17 | }, 18 | { 19 | "idiom" : "ipad", 20 | "filename" : "shield-3.png", 21 | "scale" : "1x" 22 | }, 23 | { 24 | "idiom" : "ipad", 25 | "filename" : "shield-4.png", 26 | "scale" : "2x" 27 | }, 28 | { 29 | "idiom" : "watch", 30 | "filename" : "shield-5.png", 31 | "scale" : "2x" 32 | }, 33 | { 34 | "idiom" : "tv", 35 | "filename" : "shield-6.png", 36 | "scale" : "1x" 37 | }, 38 | { 39 | "idiom" : "tv", 40 | "filename" : "shield-7.png", 41 | "scale" : "2x" 42 | }, 43 | { 44 | "idiom" : "mac", 45 | "filename" : "shield-8.png", 46 | "scale" : "1x" 47 | }, 48 | { 49 | "idiom" : "mac", 50 | "filename" : "shield-9.png", 51 | "scale" : "2x" 52 | } 53 | ], 54 | "info" : { 55 | "version" : 1, 56 | "author" : "xcode" 57 | } 58 | } -------------------------------------------------------------------------------- /SpineSampleProject/Assets.xcassets/goblins/default.spriteatlas/shield.imageset/shield-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maxgribov/SpineSampleProject/ee8c55562b99a656377a365f38de4d41d9c133e6/SpineSampleProject/Assets.xcassets/goblins/default.spriteatlas/shield.imageset/shield-1.png -------------------------------------------------------------------------------- /SpineSampleProject/Assets.xcassets/goblins/default.spriteatlas/shield.imageset/shield-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maxgribov/SpineSampleProject/ee8c55562b99a656377a365f38de4d41d9c133e6/SpineSampleProject/Assets.xcassets/goblins/default.spriteatlas/shield.imageset/shield-2.png -------------------------------------------------------------------------------- /SpineSampleProject/Assets.xcassets/goblins/default.spriteatlas/shield.imageset/shield-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maxgribov/SpineSampleProject/ee8c55562b99a656377a365f38de4d41d9c133e6/SpineSampleProject/Assets.xcassets/goblins/default.spriteatlas/shield.imageset/shield-3.png -------------------------------------------------------------------------------- /SpineSampleProject/Assets.xcassets/goblins/default.spriteatlas/shield.imageset/shield-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maxgribov/SpineSampleProject/ee8c55562b99a656377a365f38de4d41d9c133e6/SpineSampleProject/Assets.xcassets/goblins/default.spriteatlas/shield.imageset/shield-4.png -------------------------------------------------------------------------------- /SpineSampleProject/Assets.xcassets/goblins/default.spriteatlas/shield.imageset/shield-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maxgribov/SpineSampleProject/ee8c55562b99a656377a365f38de4d41d9c133e6/SpineSampleProject/Assets.xcassets/goblins/default.spriteatlas/shield.imageset/shield-5.png -------------------------------------------------------------------------------- /SpineSampleProject/Assets.xcassets/goblins/default.spriteatlas/shield.imageset/shield-6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maxgribov/SpineSampleProject/ee8c55562b99a656377a365f38de4d41d9c133e6/SpineSampleProject/Assets.xcassets/goblins/default.spriteatlas/shield.imageset/shield-6.png -------------------------------------------------------------------------------- /SpineSampleProject/Assets.xcassets/goblins/default.spriteatlas/shield.imageset/shield-7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maxgribov/SpineSampleProject/ee8c55562b99a656377a365f38de4d41d9c133e6/SpineSampleProject/Assets.xcassets/goblins/default.spriteatlas/shield.imageset/shield-7.png -------------------------------------------------------------------------------- /SpineSampleProject/Assets.xcassets/goblins/default.spriteatlas/shield.imageset/shield-8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maxgribov/SpineSampleProject/ee8c55562b99a656377a365f38de4d41d9c133e6/SpineSampleProject/Assets.xcassets/goblins/default.spriteatlas/shield.imageset/shield-8.png -------------------------------------------------------------------------------- /SpineSampleProject/Assets.xcassets/goblins/default.spriteatlas/shield.imageset/shield-9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maxgribov/SpineSampleProject/ee8c55562b99a656377a365f38de4d41d9c133e6/SpineSampleProject/Assets.xcassets/goblins/default.spriteatlas/shield.imageset/shield-9.png -------------------------------------------------------------------------------- /SpineSampleProject/Assets.xcassets/goblins/default.spriteatlas/shield.imageset/shield.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maxgribov/SpineSampleProject/ee8c55562b99a656377a365f38de4d41d9c133e6/SpineSampleProject/Assets.xcassets/goblins/default.spriteatlas/shield.imageset/shield.png -------------------------------------------------------------------------------- /SpineSampleProject/Assets.xcassets/goblins/default.spriteatlas/spear.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "spear.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "spear-1.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "spear-2.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /SpineSampleProject/Assets.xcassets/goblins/default.spriteatlas/spear.imageset/spear-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maxgribov/SpineSampleProject/ee8c55562b99a656377a365f38de4d41d9c133e6/SpineSampleProject/Assets.xcassets/goblins/default.spriteatlas/spear.imageset/spear-1.png -------------------------------------------------------------------------------- /SpineSampleProject/Assets.xcassets/goblins/default.spriteatlas/spear.imageset/spear-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maxgribov/SpineSampleProject/ee8c55562b99a656377a365f38de4d41d9c133e6/SpineSampleProject/Assets.xcassets/goblins/default.spriteatlas/spear.imageset/spear-2.png -------------------------------------------------------------------------------- /SpineSampleProject/Assets.xcassets/goblins/default.spriteatlas/spear.imageset/spear.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maxgribov/SpineSampleProject/ee8c55562b99a656377a365f38de4d41d9c133e6/SpineSampleProject/Assets.xcassets/goblins/default.spriteatlas/spear.imageset/spear.png -------------------------------------------------------------------------------- /SpineSampleProject/Assets.xcassets/goblins/goblin.spriteatlas/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | }, 6 | "properties" : { 7 | "provides-namespace" : true 8 | } 9 | } -------------------------------------------------------------------------------- /SpineSampleProject/Assets.xcassets/goblins/goblin.spriteatlas/eyes-closed.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "eyes-closed.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /SpineSampleProject/Assets.xcassets/goblins/goblin.spriteatlas/eyes-closed.imageset/eyes-closed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maxgribov/SpineSampleProject/ee8c55562b99a656377a365f38de4d41d9c133e6/SpineSampleProject/Assets.xcassets/goblins/goblin.spriteatlas/eyes-closed.imageset/eyes-closed.png -------------------------------------------------------------------------------- /SpineSampleProject/Assets.xcassets/goblins/goblin.spriteatlas/head.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "head.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /SpineSampleProject/Assets.xcassets/goblins/goblin.spriteatlas/head.imageset/head.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maxgribov/SpineSampleProject/ee8c55562b99a656377a365f38de4d41d9c133e6/SpineSampleProject/Assets.xcassets/goblins/goblin.spriteatlas/head.imageset/head.png -------------------------------------------------------------------------------- /SpineSampleProject/Assets.xcassets/goblins/goblin.spriteatlas/left-arm.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "left-arm.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /SpineSampleProject/Assets.xcassets/goblins/goblin.spriteatlas/left-arm.imageset/left-arm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maxgribov/SpineSampleProject/ee8c55562b99a656377a365f38de4d41d9c133e6/SpineSampleProject/Assets.xcassets/goblins/goblin.spriteatlas/left-arm.imageset/left-arm.png -------------------------------------------------------------------------------- /SpineSampleProject/Assets.xcassets/goblins/goblin.spriteatlas/left-foot.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "left-foot.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /SpineSampleProject/Assets.xcassets/goblins/goblin.spriteatlas/left-foot.imageset/left-foot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maxgribov/SpineSampleProject/ee8c55562b99a656377a365f38de4d41d9c133e6/SpineSampleProject/Assets.xcassets/goblins/goblin.spriteatlas/left-foot.imageset/left-foot.png -------------------------------------------------------------------------------- /SpineSampleProject/Assets.xcassets/goblins/goblin.spriteatlas/left-hand.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "left-hand.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /SpineSampleProject/Assets.xcassets/goblins/goblin.spriteatlas/left-hand.imageset/left-hand.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maxgribov/SpineSampleProject/ee8c55562b99a656377a365f38de4d41d9c133e6/SpineSampleProject/Assets.xcassets/goblins/goblin.spriteatlas/left-hand.imageset/left-hand.png -------------------------------------------------------------------------------- /SpineSampleProject/Assets.xcassets/goblins/goblin.spriteatlas/left-lower-leg.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "left-lower-leg.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /SpineSampleProject/Assets.xcassets/goblins/goblin.spriteatlas/left-lower-leg.imageset/left-lower-leg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maxgribov/SpineSampleProject/ee8c55562b99a656377a365f38de4d41d9c133e6/SpineSampleProject/Assets.xcassets/goblins/goblin.spriteatlas/left-lower-leg.imageset/left-lower-leg.png -------------------------------------------------------------------------------- /SpineSampleProject/Assets.xcassets/goblins/goblin.spriteatlas/left-shoulder.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "left-shoulder.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /SpineSampleProject/Assets.xcassets/goblins/goblin.spriteatlas/left-shoulder.imageset/left-shoulder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maxgribov/SpineSampleProject/ee8c55562b99a656377a365f38de4d41d9c133e6/SpineSampleProject/Assets.xcassets/goblins/goblin.spriteatlas/left-shoulder.imageset/left-shoulder.png -------------------------------------------------------------------------------- /SpineSampleProject/Assets.xcassets/goblins/goblin.spriteatlas/left-upper-leg.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "left-upper-leg.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /SpineSampleProject/Assets.xcassets/goblins/goblin.spriteatlas/left-upper-leg.imageset/left-upper-leg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maxgribov/SpineSampleProject/ee8c55562b99a656377a365f38de4d41d9c133e6/SpineSampleProject/Assets.xcassets/goblins/goblin.spriteatlas/left-upper-leg.imageset/left-upper-leg.png -------------------------------------------------------------------------------- /SpineSampleProject/Assets.xcassets/goblins/goblin.spriteatlas/neck.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "neck.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /SpineSampleProject/Assets.xcassets/goblins/goblin.spriteatlas/neck.imageset/neck.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maxgribov/SpineSampleProject/ee8c55562b99a656377a365f38de4d41d9c133e6/SpineSampleProject/Assets.xcassets/goblins/goblin.spriteatlas/neck.imageset/neck.png -------------------------------------------------------------------------------- /SpineSampleProject/Assets.xcassets/goblins/goblin.spriteatlas/pelvis.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "pelvis.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /SpineSampleProject/Assets.xcassets/goblins/goblin.spriteatlas/pelvis.imageset/pelvis.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maxgribov/SpineSampleProject/ee8c55562b99a656377a365f38de4d41d9c133e6/SpineSampleProject/Assets.xcassets/goblins/goblin.spriteatlas/pelvis.imageset/pelvis.png -------------------------------------------------------------------------------- /SpineSampleProject/Assets.xcassets/goblins/goblin.spriteatlas/right-arm.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "right-arm.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /SpineSampleProject/Assets.xcassets/goblins/goblin.spriteatlas/right-arm.imageset/right-arm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maxgribov/SpineSampleProject/ee8c55562b99a656377a365f38de4d41d9c133e6/SpineSampleProject/Assets.xcassets/goblins/goblin.spriteatlas/right-arm.imageset/right-arm.png -------------------------------------------------------------------------------- /SpineSampleProject/Assets.xcassets/goblins/goblin.spriteatlas/right-foot.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "right-foot.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /SpineSampleProject/Assets.xcassets/goblins/goblin.spriteatlas/right-foot.imageset/right-foot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maxgribov/SpineSampleProject/ee8c55562b99a656377a365f38de4d41d9c133e6/SpineSampleProject/Assets.xcassets/goblins/goblin.spriteatlas/right-foot.imageset/right-foot.png -------------------------------------------------------------------------------- /SpineSampleProject/Assets.xcassets/goblins/goblin.spriteatlas/right-hand.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "right-hand.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /SpineSampleProject/Assets.xcassets/goblins/goblin.spriteatlas/right-hand.imageset/right-hand.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maxgribov/SpineSampleProject/ee8c55562b99a656377a365f38de4d41d9c133e6/SpineSampleProject/Assets.xcassets/goblins/goblin.spriteatlas/right-hand.imageset/right-hand.png -------------------------------------------------------------------------------- /SpineSampleProject/Assets.xcassets/goblins/goblin.spriteatlas/right-lower-leg.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "right-lower-leg.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /SpineSampleProject/Assets.xcassets/goblins/goblin.spriteatlas/right-lower-leg.imageset/right-lower-leg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maxgribov/SpineSampleProject/ee8c55562b99a656377a365f38de4d41d9c133e6/SpineSampleProject/Assets.xcassets/goblins/goblin.spriteatlas/right-lower-leg.imageset/right-lower-leg.png -------------------------------------------------------------------------------- /SpineSampleProject/Assets.xcassets/goblins/goblin.spriteatlas/right-shoulder.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "right-shoulder.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /SpineSampleProject/Assets.xcassets/goblins/goblin.spriteatlas/right-shoulder.imageset/right-shoulder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maxgribov/SpineSampleProject/ee8c55562b99a656377a365f38de4d41d9c133e6/SpineSampleProject/Assets.xcassets/goblins/goblin.spriteatlas/right-shoulder.imageset/right-shoulder.png -------------------------------------------------------------------------------- /SpineSampleProject/Assets.xcassets/goblins/goblin.spriteatlas/right-upper-leg.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "right-upper-leg.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /SpineSampleProject/Assets.xcassets/goblins/goblin.spriteatlas/right-upper-leg.imageset/right-upper-leg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maxgribov/SpineSampleProject/ee8c55562b99a656377a365f38de4d41d9c133e6/SpineSampleProject/Assets.xcassets/goblins/goblin.spriteatlas/right-upper-leg.imageset/right-upper-leg.png -------------------------------------------------------------------------------- /SpineSampleProject/Assets.xcassets/goblins/goblin.spriteatlas/torso.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "torso.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /SpineSampleProject/Assets.xcassets/goblins/goblin.spriteatlas/torso.imageset/torso.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maxgribov/SpineSampleProject/ee8c55562b99a656377a365f38de4d41d9c133e6/SpineSampleProject/Assets.xcassets/goblins/goblin.spriteatlas/torso.imageset/torso.png -------------------------------------------------------------------------------- /SpineSampleProject/Assets.xcassets/goblins/goblin.spriteatlas/undie-straps.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "undie-straps.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /SpineSampleProject/Assets.xcassets/goblins/goblin.spriteatlas/undie-straps.imageset/undie-straps.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maxgribov/SpineSampleProject/ee8c55562b99a656377a365f38de4d41d9c133e6/SpineSampleProject/Assets.xcassets/goblins/goblin.spriteatlas/undie-straps.imageset/undie-straps.png -------------------------------------------------------------------------------- /SpineSampleProject/Assets.xcassets/goblins/goblin.spriteatlas/undies.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "undies.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "version" : 1, 19 | "author" : "xcode" 20 | } 21 | } -------------------------------------------------------------------------------- /SpineSampleProject/Assets.xcassets/goblins/goblin.spriteatlas/undies.imageset/undies.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maxgribov/SpineSampleProject/ee8c55562b99a656377a365f38de4d41d9c133e6/SpineSampleProject/Assets.xcassets/goblins/goblin.spriteatlas/undies.imageset/undies.png -------------------------------------------------------------------------------- /SpineSampleProject/Assets.xcassets/goblins/goblingirl.spriteatlas/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | }, 6 | "properties" : { 7 | "provides-namespace" : true 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /SpineSampleProject/Assets.xcassets/goblins/goblingirl.spriteatlas/eyes-closed.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "eyes-closed.png", 5 | "idiom" : "universal", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "author" : "xcode", 19 | "version" : 1 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /SpineSampleProject/Assets.xcassets/goblins/goblingirl.spriteatlas/eyes-closed.imageset/eyes-closed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maxgribov/SpineSampleProject/ee8c55562b99a656377a365f38de4d41d9c133e6/SpineSampleProject/Assets.xcassets/goblins/goblingirl.spriteatlas/eyes-closed.imageset/eyes-closed.png -------------------------------------------------------------------------------- /SpineSampleProject/Assets.xcassets/goblins/goblingirl.spriteatlas/head.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "head.png", 5 | "idiom" : "universal", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "author" : "xcode", 19 | "version" : 1 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /SpineSampleProject/Assets.xcassets/goblins/goblingirl.spriteatlas/head.imageset/head.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maxgribov/SpineSampleProject/ee8c55562b99a656377a365f38de4d41d9c133e6/SpineSampleProject/Assets.xcassets/goblins/goblingirl.spriteatlas/head.imageset/head.png -------------------------------------------------------------------------------- /SpineSampleProject/Assets.xcassets/goblins/goblingirl.spriteatlas/left-arm.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "left-arm.png", 5 | "idiom" : "universal", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "author" : "xcode", 19 | "version" : 1 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /SpineSampleProject/Assets.xcassets/goblins/goblingirl.spriteatlas/left-arm.imageset/left-arm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maxgribov/SpineSampleProject/ee8c55562b99a656377a365f38de4d41d9c133e6/SpineSampleProject/Assets.xcassets/goblins/goblingirl.spriteatlas/left-arm.imageset/left-arm.png -------------------------------------------------------------------------------- /SpineSampleProject/Assets.xcassets/goblins/goblingirl.spriteatlas/left-foot.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "left-foot.png", 5 | "idiom" : "universal", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "author" : "xcode", 19 | "version" : 1 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /SpineSampleProject/Assets.xcassets/goblins/goblingirl.spriteatlas/left-foot.imageset/left-foot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maxgribov/SpineSampleProject/ee8c55562b99a656377a365f38de4d41d9c133e6/SpineSampleProject/Assets.xcassets/goblins/goblingirl.spriteatlas/left-foot.imageset/left-foot.png -------------------------------------------------------------------------------- /SpineSampleProject/Assets.xcassets/goblins/goblingirl.spriteatlas/left-hand.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "left-hand.png", 5 | "idiom" : "universal", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "author" : "xcode", 19 | "version" : 1 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /SpineSampleProject/Assets.xcassets/goblins/goblingirl.spriteatlas/left-hand.imageset/left-hand.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maxgribov/SpineSampleProject/ee8c55562b99a656377a365f38de4d41d9c133e6/SpineSampleProject/Assets.xcassets/goblins/goblingirl.spriteatlas/left-hand.imageset/left-hand.png -------------------------------------------------------------------------------- /SpineSampleProject/Assets.xcassets/goblins/goblingirl.spriteatlas/left-lower-leg.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "left-lower-leg.png", 5 | "idiom" : "universal", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "author" : "xcode", 19 | "version" : 1 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /SpineSampleProject/Assets.xcassets/goblins/goblingirl.spriteatlas/left-lower-leg.imageset/left-lower-leg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maxgribov/SpineSampleProject/ee8c55562b99a656377a365f38de4d41d9c133e6/SpineSampleProject/Assets.xcassets/goblins/goblingirl.spriteatlas/left-lower-leg.imageset/left-lower-leg.png -------------------------------------------------------------------------------- /SpineSampleProject/Assets.xcassets/goblins/goblingirl.spriteatlas/left-shoulder.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "left-shoulder.png", 5 | "idiom" : "universal", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "author" : "xcode", 19 | "version" : 1 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /SpineSampleProject/Assets.xcassets/goblins/goblingirl.spriteatlas/left-shoulder.imageset/left-shoulder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maxgribov/SpineSampleProject/ee8c55562b99a656377a365f38de4d41d9c133e6/SpineSampleProject/Assets.xcassets/goblins/goblingirl.spriteatlas/left-shoulder.imageset/left-shoulder.png -------------------------------------------------------------------------------- /SpineSampleProject/Assets.xcassets/goblins/goblingirl.spriteatlas/left-upper-leg.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "left-upper-leg.png", 5 | "idiom" : "universal", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "author" : "xcode", 19 | "version" : 1 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /SpineSampleProject/Assets.xcassets/goblins/goblingirl.spriteatlas/left-upper-leg.imageset/left-upper-leg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maxgribov/SpineSampleProject/ee8c55562b99a656377a365f38de4d41d9c133e6/SpineSampleProject/Assets.xcassets/goblins/goblingirl.spriteatlas/left-upper-leg.imageset/left-upper-leg.png -------------------------------------------------------------------------------- /SpineSampleProject/Assets.xcassets/goblins/goblingirl.spriteatlas/neck.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "neck.png", 5 | "idiom" : "universal", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "author" : "xcode", 19 | "version" : 1 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /SpineSampleProject/Assets.xcassets/goblins/goblingirl.spriteatlas/neck.imageset/neck.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maxgribov/SpineSampleProject/ee8c55562b99a656377a365f38de4d41d9c133e6/SpineSampleProject/Assets.xcassets/goblins/goblingirl.spriteatlas/neck.imageset/neck.png -------------------------------------------------------------------------------- /SpineSampleProject/Assets.xcassets/goblins/goblingirl.spriteatlas/pelvis.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "pelvis.png", 5 | "idiom" : "universal", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "author" : "xcode", 19 | "version" : 1 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /SpineSampleProject/Assets.xcassets/goblins/goblingirl.spriteatlas/pelvis.imageset/pelvis.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maxgribov/SpineSampleProject/ee8c55562b99a656377a365f38de4d41d9c133e6/SpineSampleProject/Assets.xcassets/goblins/goblingirl.spriteatlas/pelvis.imageset/pelvis.png -------------------------------------------------------------------------------- /SpineSampleProject/Assets.xcassets/goblins/goblingirl.spriteatlas/right-arm.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "right-arm.png", 5 | "idiom" : "universal", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "author" : "xcode", 19 | "version" : 1 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /SpineSampleProject/Assets.xcassets/goblins/goblingirl.spriteatlas/right-arm.imageset/right-arm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maxgribov/SpineSampleProject/ee8c55562b99a656377a365f38de4d41d9c133e6/SpineSampleProject/Assets.xcassets/goblins/goblingirl.spriteatlas/right-arm.imageset/right-arm.png -------------------------------------------------------------------------------- /SpineSampleProject/Assets.xcassets/goblins/goblingirl.spriteatlas/right-foot.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "right-foot.png", 5 | "idiom" : "universal", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "author" : "xcode", 19 | "version" : 1 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /SpineSampleProject/Assets.xcassets/goblins/goblingirl.spriteatlas/right-foot.imageset/right-foot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maxgribov/SpineSampleProject/ee8c55562b99a656377a365f38de4d41d9c133e6/SpineSampleProject/Assets.xcassets/goblins/goblingirl.spriteatlas/right-foot.imageset/right-foot.png -------------------------------------------------------------------------------- /SpineSampleProject/Assets.xcassets/goblins/goblingirl.spriteatlas/right-hand.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "right-hand.png", 5 | "idiom" : "universal", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "author" : "xcode", 19 | "version" : 1 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /SpineSampleProject/Assets.xcassets/goblins/goblingirl.spriteatlas/right-hand.imageset/right-hand.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maxgribov/SpineSampleProject/ee8c55562b99a656377a365f38de4d41d9c133e6/SpineSampleProject/Assets.xcassets/goblins/goblingirl.spriteatlas/right-hand.imageset/right-hand.png -------------------------------------------------------------------------------- /SpineSampleProject/Assets.xcassets/goblins/goblingirl.spriteatlas/right-lower-leg.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "right-lower-leg.png", 5 | "idiom" : "universal", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "author" : "xcode", 19 | "version" : 1 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /SpineSampleProject/Assets.xcassets/goblins/goblingirl.spriteatlas/right-lower-leg.imageset/right-lower-leg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maxgribov/SpineSampleProject/ee8c55562b99a656377a365f38de4d41d9c133e6/SpineSampleProject/Assets.xcassets/goblins/goblingirl.spriteatlas/right-lower-leg.imageset/right-lower-leg.png -------------------------------------------------------------------------------- /SpineSampleProject/Assets.xcassets/goblins/goblingirl.spriteatlas/right-shoulder.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "right-shoulder.png", 5 | "idiom" : "universal", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "author" : "xcode", 19 | "version" : 1 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /SpineSampleProject/Assets.xcassets/goblins/goblingirl.spriteatlas/right-shoulder.imageset/right-shoulder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maxgribov/SpineSampleProject/ee8c55562b99a656377a365f38de4d41d9c133e6/SpineSampleProject/Assets.xcassets/goblins/goblingirl.spriteatlas/right-shoulder.imageset/right-shoulder.png -------------------------------------------------------------------------------- /SpineSampleProject/Assets.xcassets/goblins/goblingirl.spriteatlas/right-upper-leg.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "right-upper-leg.png", 5 | "idiom" : "universal", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "author" : "xcode", 19 | "version" : 1 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /SpineSampleProject/Assets.xcassets/goblins/goblingirl.spriteatlas/right-upper-leg.imageset/right-upper-leg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maxgribov/SpineSampleProject/ee8c55562b99a656377a365f38de4d41d9c133e6/SpineSampleProject/Assets.xcassets/goblins/goblingirl.spriteatlas/right-upper-leg.imageset/right-upper-leg.png -------------------------------------------------------------------------------- /SpineSampleProject/Assets.xcassets/goblins/goblingirl.spriteatlas/torso.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "torso.png", 5 | "idiom" : "universal", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "author" : "xcode", 19 | "version" : 1 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /SpineSampleProject/Assets.xcassets/goblins/goblingirl.spriteatlas/torso.imageset/torso.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maxgribov/SpineSampleProject/ee8c55562b99a656377a365f38de4d41d9c133e6/SpineSampleProject/Assets.xcassets/goblins/goblingirl.spriteatlas/torso.imageset/torso.png -------------------------------------------------------------------------------- /SpineSampleProject/Assets.xcassets/goblins/goblingirl.spriteatlas/undie-straps.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "undie-straps.png", 5 | "idiom" : "universal", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "author" : "xcode", 19 | "version" : 1 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /SpineSampleProject/Assets.xcassets/goblins/goblingirl.spriteatlas/undie-straps.imageset/undie-straps.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maxgribov/SpineSampleProject/ee8c55562b99a656377a365f38de4d41d9c133e6/SpineSampleProject/Assets.xcassets/goblins/goblingirl.spriteatlas/undie-straps.imageset/undie-straps.png -------------------------------------------------------------------------------- /SpineSampleProject/Assets.xcassets/goblins/goblingirl.spriteatlas/undies.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "undies.png", 5 | "idiom" : "universal", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "author" : "xcode", 19 | "version" : 1 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /SpineSampleProject/Assets.xcassets/goblins/goblingirl.spriteatlas/undies.imageset/undies.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maxgribov/SpineSampleProject/ee8c55562b99a656377a365f38de4d41d9c133e6/SpineSampleProject/Assets.xcassets/goblins/goblingirl.spriteatlas/undies.imageset/undies.png -------------------------------------------------------------------------------- /SpineSampleProject/Base.lproj/LaunchScreen.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /SpineSampleProject/Base.lproj/Main.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /SpineSampleProject/GameScene.swift: -------------------------------------------------------------------------------- 1 | // 2 | // GameScene.swift 3 | // SpineSampleProject 4 | // 5 | // Created by Max Gribov on 22/02/2018. 6 | // Copyright © 2018 Max Gribov. All rights reserved. 7 | // 8 | 9 | import SpriteKit 10 | import GameplayKit 11 | import Spine 12 | 13 | class GameScene: SKScene { 14 | 15 | override func didMove(to view: SKView) { 16 | 17 | do { 18 | 19 | let character = try Skeleton(json: "goblins-ess", folder: "goblins", skin: "goblin") 20 | character.name = "character" 21 | character.position = CGPoint(x: self.size.width / 2, y: (self.size.height / 2) - 200) 22 | addChild(character) 23 | 24 | let walkAnimation = try character.action(animation: "walk") 25 | character.run(.repeatForever(walkAnimation)) 26 | 27 | let switchSkinsAction = SKAction.sequence([.wait(forDuration: 3), 28 | try character.action(applySkin: "goblingirl"), 29 | .wait(forDuration: 3), 30 | try character.action(applySkin: "goblin")]) 31 | 32 | character.run(.repeatForever(switchSkinsAction)) 33 | 34 | } catch { 35 | 36 | print(error) 37 | } 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /SpineSampleProject/GameViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // GameViewController.swift 3 | // SpineSampleProject 4 | // 5 | // Created by Max Gribov on 22/02/2018. 6 | // Copyright © 2018 Max Gribov. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | import SpriteKit 11 | import GameplayKit 12 | 13 | class GameViewController: UIViewController { 14 | 15 | override func viewDidLoad() { 16 | super.viewDidLoad() 17 | 18 | if let view = self.view as! SKView? { 19 | 20 | let scene = GameScene(size: self.view.bounds.size) 21 | scene.scaleMode = .aspectFill 22 | 23 | view.presentScene(scene) 24 | 25 | view.ignoresSiblingOrder = true 26 | 27 | //debug info 28 | view.showsFPS = true 29 | view.showsNodeCount = true 30 | view.showsDrawCount = true 31 | } 32 | } 33 | 34 | override var shouldAutorotate: Bool { 35 | return true 36 | } 37 | 38 | override var supportedInterfaceOrientations: UIInterfaceOrientationMask { 39 | if UIDevice.current.userInterfaceIdiom == .phone { 40 | return .allButUpsideDown 41 | } else { 42 | return .all 43 | } 44 | } 45 | 46 | override func didReceiveMemoryWarning() { 47 | super.didReceiveMemoryWarning() 48 | // Release any cached data, images, etc that aren't in use. 49 | } 50 | 51 | override var prefersStatusBarHidden: Bool { 52 | return true 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /SpineSampleProject/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | APPL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleVersion 20 | 1 21 | LSRequiresIPhoneOS 22 | 23 | UILaunchStoryboardName 24 | LaunchScreen 25 | UIMainStoryboardFile 26 | Main 27 | UIRequiredDeviceCapabilities 28 | 29 | armv7 30 | 31 | UIStatusBarHidden 32 | 33 | UISupportedInterfaceOrientations 34 | 35 | UIInterfaceOrientationPortrait 36 | 37 | UISupportedInterfaceOrientations~ipad 38 | 39 | UIInterfaceOrientationPortrait 40 | UIInterfaceOrientationPortraitUpsideDown 41 | UIInterfaceOrientationLandscapeLeft 42 | UIInterfaceOrientationLandscapeRight 43 | 44 | 45 | 46 | -------------------------------------------------------------------------------- /SpineSampleProject/goblins-ess.json: -------------------------------------------------------------------------------- 1 | { 2 | "skeleton": { 3 | "hash": "djttFmlR6Co", 4 | "spine": "4.1.17", 5 | "x": -92.53, 6 | "y": -5.3, 7 | "width": 234.03, 8 | "height": 354.91, 9 | "images": "./images/", 10 | "audio": "" 11 | }, 12 | "bones": [ 13 | { "name": "root" }, 14 | { "name": "hip", "parent": "root", "x": 0.65, "y": 114.41, "color": "ffd300ff" }, 15 | { 16 | "name": "torso", 17 | "parent": "hip", 18 | "length": 85.83, 19 | "rotation": 93.93, 20 | "x": -6.42, 21 | "y": 1.98, 22 | "color": "ffd300ff" 23 | }, 24 | { 25 | "name": "neck", 26 | "parent": "torso", 27 | "length": 18.38, 28 | "rotation": -1.52, 29 | "x": 81.68, 30 | "y": -6.35, 31 | "color": "ffd300ff" 32 | }, 33 | { 34 | "name": "head", 35 | "parent": "neck", 36 | "length": 68.29, 37 | "rotation": -13.92, 38 | "x": 20.94, 39 | "y": 11.59, 40 | "color": "ffd300ff" 41 | }, 42 | { 43 | "name": "left-shoulder", 44 | "parent": "torso", 45 | "length": 35.43, 46 | "rotation": -156.96, 47 | "x": 74.05, 48 | "y": -20.39, 49 | "color": "ff0000ff" 50 | }, 51 | { 52 | "name": "left-arm", 53 | "parent": "left-shoulder", 54 | "length": 35.62, 55 | "rotation": 28.17, 56 | "x": 37.86, 57 | "y": -2.35, 58 | "color": "ff0000ff" 59 | }, 60 | { 61 | "name": "left-upper-leg", 62 | "parent": "hip", 63 | "length": 50.4, 64 | "rotation": -89.1, 65 | "x": 14.45, 66 | "y": 2.81, 67 | "color": "ff0000ff" 68 | }, 69 | { 70 | "name": "left-lower-leg", 71 | "parent": "left-upper-leg", 72 | "length": 49.9, 73 | "rotation": -16.66, 74 | "x": 56.34, 75 | "y": 0.99, 76 | "color": "ff0000ff" 77 | }, 78 | { 79 | "name": "left-foot", 80 | "parent": "left-lower-leg", 81 | "length": 46.5, 82 | "rotation": 102.43, 83 | "x": 58.94, 84 | "y": -7.61, 85 | "color": "ff0000ff" 86 | }, 87 | { 88 | "name": "left-hand", 89 | "parent": "left-arm", 90 | "length": 11.52, 91 | "rotation": 2.7, 92 | "x": 35.62, 93 | "y": 0.08, 94 | "color": "ff0000ff" 95 | }, 96 | { "name": "pelvis", "parent": "hip", "x": 1.41, "y": -6.58, "color": "ffd300ff" }, 97 | { 98 | "name": "right-shoulder", 99 | "parent": "torso", 100 | "length": 37.25, 101 | "rotation": 133.89, 102 | "x": 76.02, 103 | "y": 18.15, 104 | "color": "54ff00ff" 105 | }, 106 | { 107 | "name": "right-arm", 108 | "parent": "right-shoulder", 109 | "length": 36.75, 110 | "rotation": 36.33, 111 | "x": 37.61, 112 | "y": 0.31, 113 | "color": "54ff00ff" 114 | }, 115 | { 116 | "name": "right-upper-leg", 117 | "parent": "hip", 118 | "length": 42.46, 119 | "rotation": -97.5, 120 | "x": -20.08, 121 | "y": -6.84, 122 | "color": "54ff00ff" 123 | }, 124 | { 125 | "name": "right-lower-leg", 126 | "parent": "right-upper-leg", 127 | "length": 58.53, 128 | "rotation": -14.34, 129 | "x": 43, 130 | "y": -0.62, 131 | "color": "54ff00ff" 132 | }, 133 | { 134 | "name": "right-foot", 135 | "parent": "right-lower-leg", 136 | "length": 45.46, 137 | "rotation": 110.31, 138 | "x": 64.89, 139 | "y": 0.04, 140 | "color": "54ff00ff" 141 | }, 142 | { 143 | "name": "right-hand", 144 | "parent": "right-arm", 145 | "length": 15.32, 146 | "rotation": 2.36, 147 | "x": 36.9, 148 | "y": 0.35, 149 | "color": "54ff00ff" 150 | } 151 | ], 152 | "slots": [ 153 | { "name": "left-shoulder", "bone": "left-shoulder", "attachment": "left-shoulder" }, 154 | { "name": "left-arm", "bone": "left-arm", "attachment": "left-arm" }, 155 | { "name": "left-hand-item", "bone": "left-hand", "attachment": "spear" }, 156 | { "name": "left-hand", "bone": "left-hand", "attachment": "left-hand" }, 157 | { "name": "left-foot", "bone": "left-foot", "attachment": "left-foot" }, 158 | { "name": "left-lower-leg", "bone": "left-lower-leg", "attachment": "left-lower-leg" }, 159 | { "name": "left-upper-leg", "bone": "left-upper-leg", "attachment": "left-upper-leg" }, 160 | { "name": "neck", "bone": "neck", "attachment": "neck" }, 161 | { "name": "torso", "bone": "torso", "attachment": "torso" }, 162 | { "name": "pelvis", "bone": "pelvis", "attachment": "pelvis" }, 163 | { "name": "right-foot", "bone": "right-foot", "attachment": "right-foot" }, 164 | { "name": "right-lower-leg", "bone": "right-lower-leg", "attachment": "right-lower-leg" }, 165 | { "name": "undie-straps", "bone": "pelvis", "attachment": "undie-straps" }, 166 | { "name": "undies", "bone": "pelvis", "attachment": "undies" }, 167 | { "name": "right-upper-leg", "bone": "right-upper-leg", "attachment": "right-upper-leg" }, 168 | { "name": "head", "bone": "head", "attachment": "head" }, 169 | { "name": "eyes", "bone": "head" }, 170 | { "name": "right-shoulder", "bone": "right-shoulder", "attachment": "right-shoulder" }, 171 | { "name": "right-arm", "bone": "right-arm", "attachment": "right-arm" }, 172 | { "name": "right-hand-item", "bone": "right-hand" }, 173 | { "name": "right-hand", "bone": "right-hand", "attachment": "right-hand" }, 174 | { "name": "right-hand-item-top", "bone": "right-hand", "attachment": "shield" } 175 | ], 176 | "skins": [ 177 | { 178 | "name": "default", 179 | "attachments": { 180 | "left-hand-item": { 181 | "dagger": { "x": 7.88, "y": -23.46, "rotation": 10.48, "width": 26, "height": 108 }, 182 | "spear": { "x": -4.56, "y": 39.2, "rotation": 13.05, "width": 22, "height": 368 } 183 | }, 184 | "right-hand-item": { 185 | "dagger": { "x": 6.52, "y": -24.16, "rotation": -8.06, "width": 26, "height": 108 } 186 | }, 187 | "right-hand-item-top": { 188 | "shield": { "rotation": 93.5, "width": 70, "height": 72 } 189 | } 190 | } 191 | }, 192 | { 193 | "name": "goblin", 194 | "attachments": { 195 | "eyes": { 196 | "eyes-closed": { "name": "goblin/eyes-closed", "x": 32.22, "y": -21.27, "rotation": -88.93, "width": 34, "height": 12 } 197 | }, 198 | "head": { 199 | "head": { "name": "goblin/head", "x": 25.74, "y": 2.33, "rotation": -92.29, "width": 103, "height": 66 } 200 | }, 201 | "left-arm": { 202 | "left-arm": { 203 | "name": "goblin/left-arm", 204 | "x": 16.7, 205 | "y": -1.69, 206 | "scaleX": 1.0573, 207 | "scaleY": 1.0573, 208 | "rotation": 33.85, 209 | "width": 37, 210 | "height": 35 211 | } 212 | }, 213 | "left-foot": { 214 | "left-foot": { "name": "goblin/left-foot", "x": 24.85, "y": 8.75, "rotation": 3.32, "width": 65, "height": 31 } 215 | }, 216 | "left-hand": { 217 | "left-hand": { 218 | "name": "goblin/left-hand", 219 | "x": 3.47, 220 | "y": 3.41, 221 | "scaleX": 0.8922, 222 | "scaleY": 0.8922, 223 | "rotation": 31.14, 224 | "width": 36, 225 | "height": 41 226 | } 227 | }, 228 | "left-lower-leg": { 229 | "left-lower-leg": { "name": "goblin/left-lower-leg", "x": 23.59, "y": -2.07, "rotation": 105.76, "width": 33, "height": 70 } 230 | }, 231 | "left-shoulder": { 232 | "left-shoulder": { "name": "goblin/left-shoulder", "x": 15.56, "y": -2.27, "rotation": 62.01, "width": 29, "height": 44 } 233 | }, 234 | "left-upper-leg": { 235 | "left-upper-leg": { "name": "goblin/left-upper-leg", "x": 29.69, "y": -3.87, "rotation": 89.1, "width": 33, "height": 73 } 236 | }, 237 | "neck": { 238 | "neck": { "name": "goblin/neck", "x": 10.1, "y": 0.42, "rotation": -93.7, "width": 36, "height": 41 } 239 | }, 240 | "pelvis": { 241 | "pelvis": { "name": "goblin/pelvis", "x": -5.62, "y": 0.77, "width": 62, "height": 43 } 242 | }, 243 | "right-arm": { 244 | "right-arm": { "name": "goblin/right-arm", "x": 16.44, "y": -1.04, "rotation": 94.32, "width": 23, "height": 50 } 245 | }, 246 | "right-foot": { 247 | "right-foot": { "name": "goblin/right-foot", "x": 23.57, "y": 9.8, "rotation": 1.53, "width": 63, "height": 33 } 248 | }, 249 | "right-hand": { 250 | "right-hand": { "name": "goblin/right-hand", "x": 7.89, "y": 2.78, "rotation": 91.96, "width": 36, "height": 37 } 251 | }, 252 | "right-lower-leg": { 253 | "right-lower-leg": { "name": "goblin/right-lower-leg", "x": 25.68, "y": -3.16, "rotation": 111.84, "width": 36, "height": 76 } 254 | }, 255 | "right-shoulder": { 256 | "right-shoulder": { "name": "goblin/right-shoulder", "x": 15.68, "y": -1.03, "rotation": 130.65, "width": 39, "height": 45 } 257 | }, 258 | "right-upper-leg": { 259 | "right-upper-leg": { "name": "goblin/right-upper-leg", "x": 20.35, "y": 1.48, "rotation": 97.5, "width": 34, "height": 63 } 260 | }, 261 | "torso": { 262 | "torso": { "name": "goblin/torso", "x": 38.1, "y": -3.87, "rotation": -94.95, "width": 68, "height": 96 } 263 | }, 264 | "undie-straps": { 265 | "undie-straps": { "name": "goblin/undie-straps", "x": -3.88, "y": 13.11, "scaleX": 1.0896, "width": 55, "height": 19 } 266 | }, 267 | "undies": { 268 | "undies": { "name": "goblin/undies", "x": 6.3, "y": 0.13, "rotation": 0.92, "width": 36, "height": 29 } 269 | } 270 | } 271 | }, 272 | { 273 | "name": "goblingirl", 274 | "attachments": { 275 | "eyes": { 276 | "eyes-closed": { "name": "goblingirl/eyes-closed", "x": 28, "y": -25.55, "rotation": -87.05, "width": 37, "height": 21 } 277 | }, 278 | "head": { 279 | "head": { "name": "goblingirl/head", "x": 27.72, "y": -4.32, "rotation": -85.58, "width": 103, "height": 81 } 280 | }, 281 | "left-arm": { 282 | "left-arm": { "name": "goblingirl/left-arm", "x": 19.64, "y": -2.43, "rotation": 33.05, "width": 37, "height": 35 } 283 | }, 284 | "left-foot": { 285 | "left-foot": { "name": "goblingirl/left-foot", "x": 25.18, "y": 7.92, "rotation": 3.32, "width": 65, "height": 31 } 286 | }, 287 | "left-hand": { 288 | "left-hand": { 289 | "name": "goblingirl/left-hand", 290 | "x": 4.34, 291 | "y": 2.39, 292 | "scaleX": 0.8965, 293 | "scaleY": 0.8965, 294 | "rotation": 30.35, 295 | "width": 35, 296 | "height": 40 297 | } 298 | }, 299 | "left-lower-leg": { 300 | "left-lower-leg": { "name": "goblingirl/left-lower-leg", "x": 25.02, "y": -0.61, "rotation": 105.76, "width": 33, "height": 70 } 301 | }, 302 | "left-shoulder": { 303 | "left-shoulder": { "name": "goblingirl/left-shoulder", "x": 19.81, "y": -0.43, "rotation": 61.22, "width": 28, "height": 46 } 304 | }, 305 | "left-upper-leg": { 306 | "left-upper-leg": { "name": "goblingirl/left-upper-leg", "x": 30.22, "y": -2.95, "rotation": 89.1, "width": 33, "height": 70 } 307 | }, 308 | "neck": { 309 | "neck": { "name": "goblingirl/neck", "x": 6.16, "y": -3.15, "rotation": -98.86, "width": 35, "height": 41 } 310 | }, 311 | "pelvis": { 312 | "pelvis": { "name": "goblingirl/pelvis", "x": -3.88, "y": 3.19, "width": 62, "height": 43 } 313 | }, 314 | "right-arm": { 315 | "right-arm": { "name": "goblingirl/right-arm", "x": 16.85, "y": -0.66, "rotation": 93.53, "width": 28, "height": 50 } 316 | }, 317 | "right-foot": { 318 | "right-foot": { "name": "goblingirl/right-foot", "x": 23.46, "y": 9.66, "rotation": 1.53, "width": 63, "height": 33 } 319 | }, 320 | "right-hand": { 321 | "right-hand": { "name": "goblingirl/right-hand", "x": 7.22, "y": 3.44, "rotation": 91.17, "width": 36, "height": 37 } 322 | }, 323 | "right-lower-leg": { 324 | "right-lower-leg": { "name": "goblingirl/right-lower-leg", "x": 26.15, "y": -3.28, "rotation": 111.84, "width": 36, "height": 76 } 325 | }, 326 | "right-shoulder": { 327 | "right-shoulder": { "name": "goblingirl/right-shoulder", "x": 14.46, "y": 0.46, "rotation": 129.85, "width": 39, "height": 45 } 328 | }, 329 | "right-upper-leg": { 330 | "right-upper-leg": { "name": "goblingirl/right-upper-leg", "x": 19.7, "y": 2.13, "rotation": 97.5, "width": 34, "height": 63 } 331 | }, 332 | "torso": { 333 | "torso": { "name": "goblingirl/torso", "x": 36.28, "y": -5.14, "rotation": -95.75, "width": 68, "height": 96 } 334 | }, 335 | "undie-straps": { 336 | "undie-straps": { "name": "goblingirl/undie-straps", "x": -1.52, "y": 14.19, "width": 55, "height": 19 } 337 | }, 338 | "undies": { 339 | "undies": { "name": "goblingirl/undies", "x": 5.4, "y": 1.71, "width": 36, "height": 29 } 340 | } 341 | } 342 | } 343 | ], 344 | "animations": { 345 | "walk": { 346 | "slots": { 347 | "eyes": { 348 | "attachment": [ 349 | { "time": 0.7, "name": "eyes-closed" }, 350 | { "time": 0.8 } 351 | ] 352 | } 353 | }, 354 | "bones": { 355 | "left-upper-leg": { 356 | "rotate": [ 357 | { "value": -26.56 }, 358 | { "time": 0.1333, "value": -8.79 }, 359 | { "time": 0.2333, "value": 9.51 }, 360 | { "time": 0.3667, "value": 30.74 }, 361 | { "time": 0.5, "value": 25.34 }, 362 | { "time": 0.6333, "value": 26.12 }, 363 | { "time": 0.7333, "value": -7.71 }, 364 | { "time": 0.8667, "value": -21.19 }, 365 | { "time": 1, "value": -26.56 } 366 | ], 367 | "translate": [ 368 | { "x": -1.32, "y": 1.71 }, 369 | { "time": 0.3667, "x": -0.06, "y": 2.43 }, 370 | { "time": 1, "x": -1.32, "y": 1.71 } 371 | ] 372 | }, 373 | "right-upper-leg": { 374 | "rotate": [ 375 | { "value": 42.45 }, 376 | { "time": 0.1333, "value": 52.11 }, 377 | { "time": 0.2333, "value": 8.54 }, 378 | { "time": 0.5, "value": -16.94 }, 379 | { "time": 0.6333, "value": 1.9 }, 380 | { 381 | "time": 0.7333, 382 | "value": 28.06, 383 | "curve": [ 0.795, 31.71, 0.867, 58.69 ] 384 | }, 385 | { 386 | "time": 0.8667, 387 | "value": 58.69, 388 | "curve": [ 0.933, 58.35, 1, 42.45 ] 389 | }, 390 | { "time": 1, "value": 42.45 } 391 | ], 392 | "translate": [ 393 | { "x": 6.24 }, 394 | { "time": 0.2333, "x": 2.14, "y": 2.4 }, 395 | { "time": 0.5, "x": 2.44, "y": 4.8 }, 396 | { "time": 1, "x": 6.24 } 397 | ] 398 | }, 399 | "left-lower-leg": { 400 | "rotate": [ 401 | { "value": -22.98 }, 402 | { "time": 0.1333, "value": -63.51 }, 403 | { "time": 0.2333, "value": -73.76 }, 404 | { "time": 0.5, "value": 5.12 }, 405 | { "time": 0.6333, "value": -28.3 }, 406 | { "time": 0.7333, "value": 4.08 }, 407 | { "time": 0.8667, "value": 3.53 }, 408 | { "time": 1, "value": -22.98 } 409 | ], 410 | "translate": [ 411 | {}, 412 | { "time": 0.2333, "x": 2.56, "y": -0.47 }, 413 | { "time": 0.5 } 414 | ] 415 | }, 416 | "left-foot": { 417 | "rotate": [ 418 | { "value": -3.69 }, 419 | { "time": 0.1333, "value": -10.42 }, 420 | { "time": 0.2333, "value": -5.01 }, 421 | { "time": 0.3667, "value": 3.87 }, 422 | { "time": 0.5, "value": -3.88 }, 423 | { "time": 0.6333, "value": 2.78 }, 424 | { "time": 0.7333, "value": 1.68 }, 425 | { "time": 0.8667, "value": -8.54 }, 426 | { "time": 1, "value": -3.69 } 427 | ] 428 | }, 429 | "right-shoulder": { 430 | "rotate": [ 431 | { 432 | "value": 5.29, 433 | "curve": [ 0.167, 5.29, 0.475, 6.65 ] 434 | }, 435 | { "time": 0.6333, "value": 6.65 }, 436 | { "time": 1, "value": 5.29 } 437 | ] 438 | }, 439 | "right-arm": { 440 | "rotate": [ 441 | { 442 | "value": -4.03, 443 | "curve": [ 0.169, -3.91, 0.51, 19.66 ] 444 | }, 445 | { 446 | "time": 0.6333, 447 | "value": 19.79, 448 | "curve": [ 0.746, 19.75, 0.922, -3.91 ] 449 | }, 450 | { "time": 1, "value": -4.03 } 451 | ] 452 | }, 453 | "right-hand": { 454 | "rotate": [ 455 | { "value": 8.99 }, 456 | { "time": 0.6333, "value": 0.51 }, 457 | { "time": 1, "value": 8.99 } 458 | ] 459 | }, 460 | "left-shoulder": { 461 | "rotate": [ 462 | { 463 | "value": 6.26, 464 | "curve": [ 0.17, 6.26, 0.342, -11.79 ] 465 | }, 466 | { 467 | "time": 0.5, 468 | "value": -11.79, 469 | "curve": [ 0.641, -11.79, 0.843, 6.16 ] 470 | }, 471 | { "time": 1, "value": 6.26 } 472 | ], 473 | "translate": [ 474 | { "x": 1.15, "y": 0.24 } 475 | ] 476 | }, 477 | "left-hand": { 478 | "rotate": [ 479 | { 480 | "value": -21.24, 481 | "curve": [ 0.148, -21.24, 0.378, -27.21 ] 482 | }, 483 | { 484 | "time": 0.5, 485 | "value": -27.28, 486 | "curve": [ 0.621, -27.28, 0.875, -21.4 ] 487 | }, 488 | { "time": 1, "value": -21.24 } 489 | ] 490 | }, 491 | "left-arm": { 492 | "rotate": [ 493 | { 494 | "value": 28.38, 495 | "curve": [ 0.17, 28.38, 0.342, 60.09 ] 496 | }, 497 | { 498 | "time": 0.5, 499 | "value": 60.09, 500 | "curve": [ 0.641, 60.09, 0.843, 28.54 ] 501 | }, 502 | { "time": 1, "value": 28.38 } 503 | ] 504 | }, 505 | "torso": { 506 | "rotate": [ 507 | { "value": -10.28 }, 508 | { 509 | "time": 0.1333, 510 | "value": -15.39, 511 | "curve": [ 0.261, -15.36, 0.324, -9.78 ] 512 | }, 513 | { 514 | "time": 0.3667, 515 | "value": -9.78, 516 | "curve": [ 0.521, -10.8, 0.545, -15.72 ] 517 | }, 518 | { 519 | "time": 0.6333, 520 | "value": -15.75, 521 | "curve": [ 0.688, -15.66, 0.819, -7.07 ] 522 | }, 523 | { 524 | "time": 0.8667, 525 | "value": -7.07, 526 | "curve": [ 0.895, -7.07, 0.975, -10.25 ] 527 | }, 528 | { "time": 1, "value": -10.28 } 529 | ], 530 | "translate": [ 531 | { "x": -1.29, "y": 1.69 } 532 | ] 533 | }, 534 | "right-foot": { 535 | "rotate": [ 536 | { "value": -5.25 }, 537 | { "time": 0.2333, "value": -1.91 }, 538 | { "time": 0.3667, "value": -6.45 }, 539 | { "time": 0.5, "value": -5.4 }, 540 | { "time": 0.7333, "value": -11.69 }, 541 | { "time": 0.8667, "value": 0.46 }, 542 | { "time": 1, "value": -5.25 } 543 | ] 544 | }, 545 | "right-lower-leg": { 546 | "rotate": [ 547 | { 548 | "value": -3.39, 549 | "curve": [ 0.042, -4.05, 0.099, -45.1 ] 550 | }, 551 | { 552 | "time": 0.1333, 553 | "value": -45.53, 554 | "curve": [ 0.156, -45.53, 0.207, -5.89 ] 555 | }, 556 | { "time": 0.2333, "value": -4.83 }, 557 | { "time": 0.5, "value": -19.53 }, 558 | { "time": 0.6333, "value": -64.8 }, 559 | { 560 | "time": 0.7333, 561 | "value": -82.56, 562 | "curve": [ 0.882, -68.28, 1, -3.39 ] 563 | }, 564 | { "time": 1, "value": -3.39 } 565 | ], 566 | "translate": [ 567 | { "time": 0.5 }, 568 | { "time": 0.6333, "x": 2.19, "y": 0.21 }, 569 | { "time": 1 } 570 | ] 571 | }, 572 | "hip": { 573 | "translate": [ 574 | { "y": -4.16 }, 575 | { 576 | "time": 0.1333, 577 | "y": -7.06, 578 | "curve": [ 0.217, 0, 0.284, 0, 0.217, -0.53, 0.284, 3.27 ] 579 | }, 580 | { "time": 0.3667, "y": 6.78 }, 581 | { "time": 0.5, "y": -6.14 }, 582 | { 583 | "time": 0.6333, 584 | "y": -7.06, 585 | "curve": [ 0.717, 0, 0.784, 0, 0.717, -0.53, 0.784, 3.27 ] 586 | }, 587 | { "time": 0.8667, "y": 6.78 }, 588 | { "time": 1, "y": -4.16 } 589 | ] 590 | }, 591 | "neck": { 592 | "rotate": [ 593 | { "value": 3.6 }, 594 | { "time": 0.1333, "value": 17.5 }, 595 | { "time": 0.2333, "value": 6.11 }, 596 | { "time": 0.3667, "value": 3.46 }, 597 | { "time": 0.5, "value": 5.18 }, 598 | { "time": 0.6333, "value": 18.36 }, 599 | { "time": 0.7333, "value": 6.09 }, 600 | { "time": 0.8667, "value": 2.29 }, 601 | { "time": 1, "value": 3.6 } 602 | ] 603 | }, 604 | "head": { 605 | "rotate": [ 606 | { 607 | "value": 3.6, 608 | "curve": [ 0, 3.6, 0.094, -0.89 ] 609 | }, 610 | { "time": 0.1333, "value": -0.21 }, 611 | { "time": 0.2333, "value": 6.11 }, 612 | { "time": 0.3667, "value": 3.46 }, 613 | { 614 | "time": 0.5, 615 | "value": 5.18, 616 | "curve": [ 0.5, 5.18, 0.617, -1.4 ] 617 | }, 618 | { "time": 0.6667, "value": 1.11 }, 619 | { "time": 0.7333, "value": 6.09 }, 620 | { "time": 0.8667, "value": 2.29 }, 621 | { "time": 1, "value": 3.6 } 622 | ] 623 | } 624 | } 625 | } 626 | } 627 | } --------------------------------------------------------------------------------