Kaynağa Gözat

Merge branch '3.7-beta' into 3.7-beta-ue4-cpp

badlogic 7 yıl önce
ebeveyn
işleme
c2308a6794
79 değiştirilmiş dosya ile 1086 ekleme ve 814 silme
  1. 146 9
      CHANGELOG.md
  2. BIN
      spine-as3/spine-as3-example/lib/spine-as3.swc
  3. 1 1
      spine-csharp/README.md
  4. 60 25
      spine-lua/AnimationState.lua
  5. BIN
      spine-starling/spine-starling-example/lib/spine-as3.swc
  6. BIN
      spine-starling/spine-starling/lib/spine-as3.swc
  7. 23 0
      spine-unity/Assets/Spine Examples/Getting Started/5 Basic Platformer.unity
  8. 131 4
      spine-unity/Assets/Spine Examples/Other Examples/Instantiate from Script.unity
  9. 2 2
      spine-unity/Assets/Spine Examples/Scripts/DataAssetsFromExportsExample.cs
  10. 13 4
      spine-unity/Assets/Spine Examples/Scripts/Getting Started Scripts/BasicPlatformerController.cs
  11. 35 0
      spine-unity/Assets/Spine Examples/Scripts/Getting Started Scripts/TransitionDictionaryExample.cs
  12. 12 0
      spine-unity/Assets/Spine Examples/Scripts/Getting Started Scripts/TransitionDictionaryExample.cs.meta
  13. 1 1
      spine-unity/Assets/Spine Examples/Scripts/Mix and Match Character Customize/EquipsVisualsComponentExample.cs
  14. 1 1
      spine-unity/Assets/Spine Examples/Scripts/MixAndMatch.cs
  15. 1 1
      spine-unity/Assets/Spine Examples/Scripts/MixAndMatchGraphic.cs
  16. 1 1
      spine-unity/Assets/Spine Examples/Scripts/Sample Components/Legacy/AtlasRegionAttacher.cs
  17. 1 1
      spine-unity/Assets/Spine Examples/Scripts/SpineGauge.cs
  18. 1 1
      spine-unity/Assets/Spine Examples/Spine/Dragon/dragon.png.meta
  19. 1 1
      spine-unity/Assets/Spine Examples/Spine/Dragon/dragon2.png.meta
  20. BIN
      spine-unity/Assets/Spine Examples/Spine/Dragon/dragon_Atlas.asset
  21. BIN
      spine-unity/Assets/Spine Examples/Spine/Dragon/dragon_dragon.mat
  22. BIN
      spine-unity/Assets/Spine Examples/Spine/Dragon/dragon_dragon2.mat
  23. 1 1
      spine-unity/Assets/Spine Examples/Spine/Eyes/eyes.png.meta
  24. BIN
      spine-unity/Assets/Spine Examples/Spine/Eyes/eyes_Atlas.asset
  25. BIN
      spine-unity/Assets/Spine Examples/Spine/Eyes/eyes_Material.mat
  26. 1 1
      spine-unity/Assets/Spine Examples/Spine/FootSoldier/Equipment/Equipment.png.meta
  27. BIN
      spine-unity/Assets/Spine Examples/Spine/FootSoldier/Equipment/Equipment_Atlas.asset
  28. BIN
      spine-unity/Assets/Spine Examples/Spine/FootSoldier/Equipment/Equipment_Material.mat
  29. 1 1
      spine-unity/Assets/Spine Examples/Spine/FootSoldier/FS_White.png.meta
  30. BIN
      spine-unity/Assets/Spine Examples/Spine/FootSoldier/FS_White_Atlas.asset
  31. BIN
      spine-unity/Assets/Spine Examples/Spine/FootSoldier/FS_White_Material.mat
  32. 1 1
      spine-unity/Assets/Spine Examples/Spine/Gauge/Gauge.png.meta
  33. BIN
      spine-unity/Assets/Spine Examples/Spine/Gauge/Gauge_Atlas.asset
  34. BIN
      spine-unity/Assets/Spine Examples/Spine/Gauge/Gauge_Material.mat
  35. 1 1
      spine-unity/Assets/Spine Examples/Spine/Goblins/goblins.png.meta
  36. BIN
      spine-unity/Assets/Spine Examples/Spine/Goblins/goblins_Atlas.asset
  37. BIN
      spine-unity/Assets/Spine Examples/Spine/Goblins/goblins_Material.mat
  38. 15 0
      spine-unity/Assets/Spine Examples/Spine/Hero/ReferenceAssets/crouch-from fall.asset
  39. 9 0
      spine-unity/Assets/Spine Examples/Spine/Hero/ReferenceAssets/crouch-from fall.asset.meta
  40. 15 0
      spine-unity/Assets/Spine Examples/Spine/Hero/ReferenceAssets/idle-from fall.asset
  41. 9 0
      spine-unity/Assets/Spine Examples/Spine/Hero/ReferenceAssets/idle-from fall.asset.meta
  42. 0 146
      spine-unity/Assets/Spine Examples/Spine/Hero/hero-mesh.atlas.txt
  43. 0 4
      spine-unity/Assets/Spine Examples/Spine/Hero/hero-mesh.atlas.txt.meta
  44. 0 116
      spine-unity/Assets/Spine Examples/Spine/Hero/hero-mesh.json
  45. 0 4
      spine-unity/Assets/Spine Examples/Spine/Hero/hero-mesh.json.meta
  46. BIN
      spine-unity/Assets/Spine Examples/Spine/Hero/hero-mesh.png
  47. 0 348
      spine-unity/Assets/Spine Examples/Spine/Hero/hero-mesh.png.meta
  48. 0 16
      spine-unity/Assets/Spine Examples/Spine/Hero/hero-mesh_Atlas.asset
  49. 0 4
      spine-unity/Assets/Spine Examples/Spine/Hero/hero-mesh_Atlas.asset.meta
  50. 0 26
      spine-unity/Assets/Spine Examples/Spine/Hero/hero-mesh_Material.mat
  51. 0 4
      spine-unity/Assets/Spine Examples/Spine/Hero/hero-mesh_Material.mat.meta
  52. 0 22
      spine-unity/Assets/Spine Examples/Spine/Hero/hero-mesh_SkeletonData.asset
  53. 0 4
      spine-unity/Assets/Spine Examples/Spine/Hero/hero-mesh_SkeletonData.asset.meta
  54. 2 2
      spine-unity/Assets/Spine Examples/Spine/Hero/hero-pro.json
  55. 1 1
      spine-unity/Assets/Spine Examples/Spine/Hero/hero-pro.png.meta
  56. BIN
      spine-unity/Assets/Spine Examples/Spine/Hero/hero-pro_Atlas.asset
  57. BIN
      spine-unity/Assets/Spine Examples/Spine/Hero/hero-pro_Material.mat
  58. 1 1
      spine-unity/Assets/Spine Examples/Spine/Raggedy Spineboy/Raggedy Spineboy.png.meta
  59. BIN
      spine-unity/Assets/Spine Examples/Spine/Raggedy Spineboy/Raggedy Spineboy_Atlas.asset
  60. BIN
      spine-unity/Assets/Spine Examples/Spine/Raggedy Spineboy/Raggedy Spineboy_Material.mat
  61. 3 3
      spine-unity/Assets/Spine Examples/Spine/Raptor/raptor.png.meta
  62. BIN
      spine-unity/Assets/Spine Examples/Spine/Raptor/raptor_Atlas.asset
  63. BIN
      spine-unity/Assets/Spine Examples/Spine/Raptor/raptor_Material.mat
  64. 1 1
      spine-unity/Assets/Spine Examples/Spine/Spineunitygirl/Doi.png.meta
  65. BIN
      spine-unity/Assets/Spine Examples/Spine/Spineunitygirl/Doi_Atlas.asset
  66. BIN
      spine-unity/Assets/Spine Examples/Spine/Spineunitygirl/Doi_Material.mat
  67. 1 1
      spine-unity/Assets/Spine Examples/Spine/Strechyman/stretchyman-diffuse-pma.png.meta
  68. BIN
      spine-unity/Assets/Spine Examples/Spine/Strechyman/stretchyman-diffuse-pma_Atlas.asset
  69. BIN
      spine-unity/Assets/Spine Examples/Spine/Strechyman/stretchyman-diffuse-pma_Material.mat
  70. 1 1
      spine-unity/Assets/Spine Examples/Spine/spineboy-pro/spineboy-pro.png.meta
  71. BIN
      spine-unity/Assets/Spine Examples/Spine/spineboy-pro/spineboy-pro_Atlas.asset
  72. BIN
      spine-unity/Assets/Spine Examples/Spine/spineboy-pro/spineboy-pro_Material.mat
  73. 585 24
      spine-unity/Assets/Spine Examples/Spine/spineboy-unity/spineboy-unity.json
  74. 1 1
      spine-unity/Assets/Spine Examples/Spine/spineboy-unity/spineboy-unity_SkeletonData.asset
  75. 2 2
      spine-unity/Assets/Spine Examples/Spine/spineboy-unity/spineboy.png.meta
  76. BIN
      spine-unity/Assets/Spine Examples/Spine/spineboy-unity/spineboy_Atlas.asset
  77. BIN
      spine-unity/Assets/Spine Examples/Spine/spineboy-unity/spineboy_Material.mat
  78. 2 2
      spine-unity/Assets/Spine/Editor/spine-unity/Editor/SpineEditorUtilities.cs
  79. 3 24
      spine-unity/README.md

+ 146 - 9
CHANGELOG.md

@@ -1,14 +1,151 @@
 # 3.7
 
+## AS3
+* **Breaking changes**
+  * The completion event will fire for looped 0 duration animations every frame.
+  * `MixPose` is now called `MixBlend`
+* **Additions**
+  * Added additive animation blending. When playing back multiple animations on different tracks, where each animation modifies the same skeleton property, the results of tracks with lower indices are discarded, and only the result from the track with the highest index is used. With animation blending, the results of all tracks are mixed together. This allows effects like mixing multiple facial expressions (angry, happy, sad) with percentage mixes. By default the old behaviour is retained (results from lower tracks are discarded). To enable additive blending across animation tracks, call `TrackEntry#setMixBlend(MixBlend.add)` on each track. To specify the blend percentage, set `TrackEntry#alpha`. See http://esotericsoftware.com/forum/morph-target-track-animation-mix-mode-9459 for a discussion.
+
+### Starling
+* Added support for vertex effects. See `RaptorExample.as`
+* Added 'getTexture()' method to 'StarlingTextureAtlasAttachmentLoader'
+* Breaking change: if a skeleton requires two color tinting, you have to enable it via `SkeletonSprite.twoColorTint = true`. In this case the skeleton will use the `TwoColorMeshStyle`, which internally uses a different vertex layout and shader. This means that skeletons with two color tinting enabled will break batching and hence increase the number of draw calls in your app.
+* Added `VertexEffect` and implementations `JitterEffect` and `SwirlEffect`. Allows you to modify vertices before they are submitted for drawing. See Starling changes.
+* Fix issues with StarlingAtlasAttachmentLoader, see https://github.com/EsotericSoftware/spine-runtimes/issues/939
+* Fix issues with region trimming support, see https://github.com/EsotericSoftware/spine-runtimes/commit/262bc26c64d4111002d80e201cb1a3345e6727df
+* Added support for overriding `StarlingAtlasAttachmentLoader#getTexture()`, see https://github.com/EsotericSoftware/spine-runtimes/commit/ea7dbecb98edc74e439aa9ef90dcf6eed865f718
+* Texture atlas operations are no longer handled in `Starling#newRegionAttachment` and `Starling#newMeshAttachment` but delegated to the atlas.
+* Added sample for additive animation blending, see https://github.com/EsotericSoftware/spine-runtimes/blob/6a556de01429878df47bb276a97959a8bdbbe32f/spine-starling/spine-starling-example/src/spine/examples/OwlExample.as
+* Added sample on how to use bounding box attachment vertices https://github.com/EsotericSoftware/spine-runtimes/commit/e20428b02699226164fa73ba4b12f7d029ae6f4d
+* Fully transparent meshes are not submitted for rendering.
+* No hit-tests are performed when a skeleton is invisible.
+
 ## C
+* **Breaking changes**
+  * Listeners on `spAnimationState` and `spTrackEntry` will now also be called if a track entry gets disposed as part of disposing an animation state.
+  * The completion event will fire for looped 0 duration animations every frame.
+* **Additions**
+  * Added support for local and relative transform constraint calculation, including additional fields in `spTransformConstraintData`.
+  * `Animation#apply` and `Timeline#apply`` now take enums `MixPose` and `MixDirection` instead of booleans
+  * Added `spVertexEffect` and corresponding implementations `spJitterVertexEffect` and `spSwirlVertexEffect`. Create/dispose through the corresponding `spXXXVertexEffect_create()/dispose()` functions. Set on framework/engine specific renderer.
+  * Functions in `extension.h` are not prefixed with `_sp` instead of just `_` to avoid interference with other libraries.
+  * Introduced `SP_API` macro. Every spine-c function is prefixed with this macro. By default, it is an empty string. Can be used to markup spine-c functions with e.g. ``__declspec` when compiling to a dll or linking to that dll.
+  * Added `void *userData` to `spAnimationState`to be consumed in callbacks.
+  * Added additive animation blending. When playing back multiple animations on different tracks, where each animation modifies the same skeleton property, the results of tracks with lower indices are discarded, and only the result from the track with the highest index is used. With animation blending, the results of all tracks are mixed together. This allows effects like mixing multiple facial expressions (angry, happy, sad) with percentage mixes. By default the old behaviour is retained (results from lower tracks are discarded). To enable additive blending across animation tracks, call `spTrackEntry->mixBlend = SP_MIXBLEND_ADD)` on each track. To specify the blend percentage, set `spTrackEntry->alpha`. See http://esotericsoftware.com/forum/morph-target-track-animation-mix-mode-9459 for a discussion.
+  * Optimized attachment lookup to give a 40x speed-up. See https://github.com/EsotericSoftware/spine-runtimes/commit/cab81276263890b65d07fa2329ace16db1e365ff
+
+### Cocos2d-x
+* Added ETC1 alpha support, thanks @halx99! Does not work when two color tint is enabled.
+* Added `spAtlasPage_setCustomTextureLoader()` which let's you do texture loading manually. Thanks @jareguo.
+* Added `SkeletonRenderer:setSlotsRange()` and `SkeletonRenderer::createWithSkeleton()`. This allows you to split rendering of a skeleton up into multiple parts, and render other nodes in between. See `SkeletonRendererSeparatorExample.cpp` for an example.
+* Fully transparent attachments will not be rendered, improving rendering performance.
+* Added improved tint-black shader.
+* Updated to cocos2d-x 3.16
+* The skeleton setup pose and world transform are now calculated on initialization to avoid flickering on start-up.
+
+### Cocos2d-Objc
+* Added vertex effect support to modify vertices of skeletons on the CPU. See `RaptorExample.m`.
+* Explanation how to handle ARC, see https://github.com/EsotericSoftware/spine-runtimes/commit/a4f122b08c5e2a51d6aad6fc5a947f7ec31f2eb8
+* The super class `::update()` method of `SkeletonRenderer` is now called, see https://github.com/EsotericSoftware/spine-runtimes/commit/f7bb98185236a6d8f35bfefc70afe4f31e9ec9d2
+* Added improved tint-black shader.
+
 ### SFML
 * `spine-sfml.h` no longer defines `SPINE_SHORT_NAMES` to avoid collisions with other APIs. See #1058.
+* Added support for vertex effects. See raptor example.
+* Added premultiplied alpha support to `SkeletonDrawable`. Use `SkeletonDrawable::setUsePremultipliedAlpha()`, see https://github.com/EsotericSoftware/spine-runtimes/commit/34086c1f41415309b2ecce86055f6656fcba2950
+* Added additive animation blending sample, see https://github.com/EsotericSoftware/spine-runtimes/blob/b7e712d3ca1d6be3ebcfe3254dc2cea9c44dda71/spine-sfml/example/main.cpp#L369
+
+### UE4
+ * spine-c is now exposed from the plugin shared library on Windows via __declspec.
+ * Updated to Unreal Engine 4.18
+ * Added C++ example, see https://github.com/EsotericSoftware/spine-runtimes/commit/15011e81b7061495dba45e28b4d3f4efb10d7f40
+ * `SkeletonRendererComponent` generates collision meshes by default.
+ * Disabled generation of collision meshes by `SkeletonRendererComponent`. Both `ProceduralMeshComponent` and `RuntimeMeshComponent` have a bug that generates a new PhysiX file every frame per component. Users are advised to add a separate collision shape to the root scene component of an actor instead.
+ * Using UE4 `FMemory` allocator by default.
+
+## C# ##
+* **Breaking changes**
+  * The completion event will fire for looped 0 duration animations every frame.
+* **Additions**
+  * Added additive animation blending. When playing back multiple animations on different tracks, where each animation modifies the same skeleton property, the results of tracks with lower indices are discarded, and only the result from the track with the highest index is used. With animation blending, the results of all tracks are mixed together. This allows effects like mixing multiple facial expressions (angry, happy, sad) with percentage mixes. By default the old behaviour is retained (results from lower tracks are discarded). To enable additive blending across animation tracks, call `TrackEntry#MixBlend = MixBlend.add` on each track. To specify the blend percentage, set `TrackEntry#Alpha`. See http://esotericsoftware.com/forum/morph-target-track-animation-mix-mode-9459 for a discussion.
+
+### Unity
+* **Runtime and Editor, and Assembly Definition** Files and folders have been reorganized into "Runtime" and "Editor". Each of these have an `.asmdef` file that defines these separately as their own assembly in Unity. For projects not using assembly definition, you may delete the `.asmdef` files. These assembly definitions will be ignored by older versions of Unity that don't support it.
+	* In this scheme, the entirety of the base spine-csharp runtime is inside the "Runtime" folder, to be compiled in the same assembly as spine-unity so they can continue to share internal members.
+* **SkeletonAnimator is now SkeletonMecanim** The Spine-Unity Mecanim-driven component `SkeletonAnimator` has been renamed `SkeletonMecanim` to make it more autocomplete-friendly and more obvious at human-glance. The .meta files and guids should remain intact so existing projects and prefabs should not break. However, user code needs to be updated to use `SkeletonMecanim`.
+*  **SpineAtlasAsset** The existing `AtlasAsset` type has been renamed to `SpineAtlasAsset` to signify that it specifically uses a Spine/libGDX atlas as its source. Serialization should be intact but user code will need to be updated to refer to existing atlases as `SpineAtlasAsset`.
+	* **AtlasAssetBase** `SpineAtlasAsset` now has an abstract base class called `SpineAtlasAsset`. This is the base class to derive when using alternate atlas sources. Existing SkeletonDataAsset field "atlasAssets" now have the "AtlasAssetBase" type. Serialization should be intact, but user code will need to be updated to refer to the atlas assets accordingly.
+	* This change is in preparation for alternate atlas options such as Unity's SpriteAtlas.
+
+### XNA/MonoGame
+* Added support for any `Effect` to be used by `SkeletonRenderer`
+* Added support for `IVertexEffect` to modify vertices of skeletons on the CPU. `IVertexEffect` instances can be set on the `SkeletonRenderer`. See example project.
+* Added `SkeletonDebugRenderer`
+* Made `MeshBatcher` of SkeletonRenderer accessible via a getter. Allows user to batch their own geometry together with skeleton meshes for maximum batching instead of using XNA SpriteBatcher.
+
+## Java
+* **Breaking changes**
+  * Skeleton attachments: Moved update of attached skeleton out of libGDX `SkeletonRenderer`, added overloaded method `Skeleton#updateWorldTransform(Bone)`, used for `SkeletonAttachment`. You now MUST call this new method with the bone of the parent skeleton to which the child skeleton is attached. See `SkeletonAttachmentTest` for and example.
+  * The completion event will fire for looped 0 duration animations every frame.
+  * `MixPose` is now called `MixBlend`.
+* **Additions**
+  * Added `EventData#audioPath` field. This field contains the file name of the audio file used for the event.
+  * Added convenience method to add all attachments from one skin to another, see https://github.com/EsotericSoftware/spine-runtimes/commit/a0b7bb6c445efdfac12b0cdee2057afa3eff3ead
+  * Added additive animation blending. When playing back multiple animations on different tracks, where each animation modifies the same skeleton property, the results of tracks with lower indices are discarded, and only the result from the track with the highest index is used. With animation blending, the results of all tracks are mixed together. This allows effects like mixing multiple facial expressions (angry, happy, sad) with percentage mixes. By default the old behaviour is retained (results from lower tracks are discarded). To enable additive blending across animation tracks, call `TrackEntry#setMixBlend(MixBlend.add)` on each track. To specify the blend percentage, set `TrackEntry#alpha`. See http://esotericsoftware.com/forum/morph-target-track-animation-mix-mode-9459 for a discussion.
+
+### libGDX
+* Added `VertexEffect` interface, instances of which can be set on `SkeletonRenderer`. Allows to modify vertices before submitting them to GPU. See `SwirlEffect`, `JitterEffect` and `VertexEffectTest`.
+* Added improved tint-black shader.
+* Improved performance by avoiding batch flush when not switching between normal and additive rendering with PMA
+* Improvements to skeleton viewer.
+* `TwoColorPolygonBatch` implements the `Batch` interface, allowing to the be used with other libGDX classes that require a batcher for drawing, potentially improving performance. See https://github.com/EsotericSoftware/spine-runtimes/commit/a46b3d1d0c135d51f9bef9ca17a5f8e5dda69927
+* Added `SkeletonDrawable` to render skeletons in scene2d UI https://github.com/EsotericSoftware/spine-runtimes/commit/b93686c185e2c9d5466969a8e07eee573ebe4b97
+
+## Lua
+* **Breaking changes**
+  * The completion event will fire for looped 0 duration animations every frame.
+* **Additions**
+  * Added `JitterEffect` and `SwirlEffect` and support for vertex effects in Corona and Love
+  * Added additive animation blending. When playing back multiple animations on different tracks, where each animation modifies the same skeleton property, the results of tracks with lower indices are discarded, and only the result from the track with the highest index is used. With animation blending, the results of all tracks are mixed together. This allows effects like mixing multiple facial expressions (angry, happy, sad) with percentage mixes. By default the old behaviour is retained (results from lower tracks are discarded). To enable additive blending across animation tracks, call `TrackEntry:setMixBlend(MixBlend.add)` on each track. To specify the blend percentage, set `TrackEntry.alpha`. See http://esotericsoftware.com/forum/morph-target-track-animation-mix-mode-9459 for a discussion.
+
+### Love2D
+* Added support for vertex effects. Set an implementation like "JitterEffect" on `Skeleton.vertexEffect`. See `main.lua` for an example.
+
+### Corona
+* Added support for vertex effects. Set an implementation like "JitterEffect" on `SkeletonRenderer.vertexEffect`. See `main.lua` for an example
+
+## Typescript/Javascript
+* **Breaking changes**
+  * The completion event will fire for looped 0 duration animations every frame.
+* **Additions**
+  * Added `AssetManager.loadTextureAtlas`. Instead of loading the `.atlas` and corresponding image files manually, you can simply specify the location of the `.atlas` file and AssetManager will load the atlas and all its images automatically. `AssetManager.get("atlasname.atlas")` will then return an instance of `spine.TextureAtlas`.
+  * Added additive animation blending. When playing back multiple animations on different tracks, where each animation modifies the same skeleton property, the results of tracks with lower indices are discarded, and only the result from the track with the highest index is used. With animation blending, the results of all tracks are mixed together. This allows effects like mixing multiple facial expressions (angry, happy, sad) with percentage mixes. By default the old behaviour is retained (results from lower tracks are discarded). To enable additive blending across animation tracks, call `TrackEntry#setMixBlend(MixBlend.add)` on each track. To specify the blend percentage, set `TrackEntry#alpha`. See http://esotericsoftware.com/forum/morph-target-track-animation-mix-mode-9459 for a discussion. See https://github.com/EsotericSoftware/spine-runtimes/blob/f045d221836fa56191ccda73dd42ae884d4731b8/spine-ts/webgl/tests/test-additive-animation-blending.html for an example.
+  * Added work-around for iOS WebKit JIT bug, see https://github.com/EsotericSoftware/spine-runtimes/commit/c28bbebf804980f55cdd773fed9ff145e0e7e76c
+
+### WebGL backend
+* Added `VertexEffect` interface, instances of which can be set on `SkeletonRenderer`. Allows to modify vertices before submitting them to GPU. See `SwirlEffect`, `JitterEffect`, and the example which allows to set effects.
+* Added `slotRangeStart` and `slotRangeEnd` parameters to `SkeletonRenderer#draw` and `SceneRenderer#drawSkeleton`. This allows you to render only a range of slots in the draw order. See `spine-ts/webgl/tests/test-slot-range.html` for an example.
+* Added improved tint-black shader.
+* Added `SceneRenderer#drawTextureUV()`, allowing to draw a texture with manually specified texture coordinates.
+* Exposed all renderers in `SceneRenderer`.
+
+### Canvas backend
+* Added support for shearing and non-uniform scaling inherited from parent bones.
+* Added support for alpha tinting.
+
+### Three.js backend
+* Added `VertexEffect` interface, instances of which can be set on `SkeletonMesh`. Allows to modify vertices before submitting them to GPU. See `SwirlEffect`, `JitterEffect`.
+* Added support for multi-page atlases
 
+### Widget backend
+ * Added fields `atlasContent`, `atlasPagesContent`, and `jsonContent` to `WidgetConfiguration` allowing you to directly pass the contents of the `.atlas`, atlas page `.png` files, and the `.json` file without having to do a request. See `README.md` and the example for details.
+ * `SpineWidget.setAnimation()` now takes an additional optional parameter for callbacks when animations are completed/interrupted/etc.
 
 # 3.6
 
 ## AS3
- * **Breaking changes**
+* **Breaking changes**
   * Removed `Bone.worldToLocalRotationX` and `Bone.worldToLocalRotationY`. Replaced by `Bone.worldToLocalRotation` (rotation given relative to x-axis, counter-clockwise, in degrees).
   * Made `Bone` fields `_a`, `_b`, `_c`, `_d`, `_worldX` and `_worldY` public, removed underscore prefix.
   * Removed `VertexAttachment.computeWorldVertices` overload, changed `VertexAttachment.computeWorldVertices2` to `VertexAttachment.computeWorldVertices`, added `stride` parameter.
@@ -17,7 +154,7 @@
   * Replaced `r`, `g`, `b`, `a` fields with instances of new `Color` class in `RegionAttachment`, `MeshAttachment`, `Skeleton`, `SkeletonData`, `Slot` and `SlotData`.
   * The completion event will fire for looped 0 duration animations every frame.
 
- * **Additions**
+* **Additions**
   * Added `Skeleton.getBounds` from reference implementation.
   * Added support for local and relative transform constraint calculation, including additional fields in `TransformConstraintData`
   * Added `Bone.localToWorldRotation`(rotation given relative to x-axis, counter-clockwise, in degrees).
@@ -38,7 +175,7 @@
  * Breaking change: if a skeleton requires two color tinting, you have to enable it via `SkeletonSprite.twoColorTint = true`. In this case the skeleton will use the `TwoColorMeshStyle`, which internally uses a different vertex layout and shader. This means that skeletons with two color tinting enabled will break batching and hence increase the number of draw calls in your app.
 
 ## C
- * **Breaking changes**
+* **Breaking changes**
   * `spVertexAttachment_computeWorldVertices` and `spRegionAttachment_computeWorldVerticeS` now take new parameters to make it possible to directly output the calculated vertex positions to a vertex buffer. Removes the need for additional copies in the backends' respective renderers.
   * Removed `spBoundingBoxAttachment_computeWorldVertices`, superseded by `spVertexAttachment_computeWorldVertices`.
   * Removed `spPathAttachment_computeWorldVertices` and `spPathAttachment_computeWorldVertices1`, superseded by `spVertexAttachment_computeWorldVertices`.
@@ -48,7 +185,7 @@
   * Removed `spVertexIndex`from public API.
   * Listeners on `spAnimationState` or `spTrackEntry` will now be also called in case a track entry is disposed as part of dispoing the `spAnimationState`.
   * The completion event will fire for looped 0 duration animations every frame.
- * **Additions**
+* **Additions**
   * Added support for local and relative transform constraint calculation, including additional fields in `spTransformConstraintData`.
   * Added `spPointAttachment`, additional method `spAtlasAttachmentLoadeR_newPointAttachment`.
   * Added support for local and relative transform constraint calculation, including additional fields in `TransformConstraintData`
@@ -167,7 +304,7 @@
  * Made `MeshBatcher` of SkeletonRenderer accessible via a getter. Allows user to batch their own geometry together with skeleton meshes for maximum batching instead of using XNA SpriteBatcher.
 
 ## Java
- * **Breaking changes**
+* **Breaking changes**
   * `Skeleton.getBounds` takes a scratch array as input so it doesn't have to allocate a new array on each invocation itself. Reduces GC activity.
   * Removed `Bone.worldToLocalRotationX` and `Bone.worldToLocalRotationY`. Replaced by `Bone.worldToLocalRotation` (rotation given relative to x-axis, counter-clockwise, in degrees).
   * Added `stride` parameter to `VertexAttachment.computeWorldVertices`.
@@ -177,7 +314,7 @@
   with the bone of the parent skeleton to which the child skeleton is attached. See `SkeletonAttachmentTest` for and example.
   * The completion event will fire for looped 0 duration animations every frame.
 
- * **Additions**
+* **Additions**
   * Added support for local and relative transform constraint calculation, including additional fields in `TransformConstraintData`
   * Added `Bone.localToWorldRotation`(rotation given relative to x-axis, counter-clockwise, in degrees).
   * Added two color tinting support, including `TwoColorTimeline` and additional fields on `Slot` and `SlotData`.
@@ -194,7 +331,7 @@
  * Added `VertexEffect` interface, instances of which can be set on `SkeletonRenderer`. Allows to modify vertices before submitting them to GPU. See `SwirlEffect`, `JitterEffect` and `VertexEffectTest`.
 
 ## Lua
- * **Breaking changes**
+* **Breaking changes**
   * Removed `Bone:worldToLocalRotationX` and `Bone:worldToLocalRotationY`. Replaced by `Bone:worldToLocalRotation` (rotation given relative to x-axis, counter-clockwise, in degrees).
   * `VertexAttachment:computeWorldVertices` now takes offsets and stride to allow compositing vertices directly in a vertex buffer to be send to the GPU. The compositing is now performed in the backends' respective renderers. This also affects the subclasses `MeshAttachment`, `BoundingBoxAttachment` and `PathAttachment`.
   * Removed `RegionAttachment:updateWorldVertices`, added `RegionAttachment:computeWorldVertices`, which takes offsets and stride to allow compositing vertices directly in a vertex buffer to be send to the GPU. The compositing is now performed in the backends' respective renderers.
@@ -224,7 +361,7 @@
   * Added support for vertex effects. Set an implementation like "JitterEffect" on `SkeletonRenderer.vertexEffect`. See `main.lua` for an example
 
 ## Typescript/Javascript
- * **Breaking changes**
+* **Breaking changes**
   * `Skeleton.getBounds` takes a scratch array as input so it doesn't have to allocate a new array on each invocation itself. Reduces GC activity.
   * Removed `Bone.worldToLocalRotationX` and `Bone.worldToLocalRotationY`. Replaced by `Bone.worldToLocalRotation` (rotation given relative to x-axis, counter-clockwise, in degrees).
   * Removed `VertexAttachment.computeWorldVertices` overload, changed `VertexAttachment.computeWorldVerticesWith` to `VertexAttachment.computeWorldVertices`, added `stride` parameter.
@@ -232,7 +369,7 @@
   * Removed `RegionAttachment.updateWorldVertices`, added `RegionAttachment.computeWorldVertices`. The new method now computes the x/y positions of the 4 vertices of the corner and places them in the provided `worldVertices` array, starting at `offset`, then moving by `stride` array elements when advancing to the next vertex. This allows to directly compose the vertex buffer and avoids a copy. The computation of the full vertices, including vertex colors and texture coordinates, is now done by the backend's respective renderer.
   * The completion event will fire for looped 0 duration animations every frame.
 
- * **Additions**
+* **Additions**
   * Added support for local and relative transform constraint calculation, including additional fields in `TransformConstraintData`
   * Added `Bone.localToWorldRotation`(rotation given relative to x-axis, counter-clockwise, in degrees).
   * Added two color tinting support, including `TwoColorTimeline` and additional fields on `Slot` and `SlotData`.

BIN
spine-as3/spine-as3-example/lib/spine-as3.swc


+ 1 - 1
spine-csharp/README.md

@@ -10,7 +10,7 @@ The Spine Runtimes are developed with the intent to be used with data exported f
 
 ## Spine version
 
-spine-csharp works with data exported from Spine 3.6.xx.
+spine-csharp works with data exported from Spine 3.7.xx.
 
 spine-csharp supports all Spine features.
 

+ 60 - 25
spine-lua/AnimationState.lua

@@ -211,9 +211,9 @@ function TrackEntry:setTimelineData(to, mixingToArray, propertyIDs)
 				local entry = mixingTo[ii]
 				skip = false
 				if not entry:hasTimeline(id) then
-					if entry.mixDuration > 0 then 
+					if entry.mixDuration > 0 then
 						timelineData[i] = DIP_MIX
-						timelineDipMix[i] = entry 
+						timelineDipMix[i] = entry
 						skip = true
 						break
 					end
@@ -293,7 +293,7 @@ function AnimationState:update (delta)
 					current.delay = 0
 				end
 			end
-			
+
 			if not skip then
 				local _next = current.next
 				if _next then
@@ -330,7 +330,7 @@ function AnimationState:update (delta)
 							from = from.mixingFrom
 						end
 					end
-					
+
           current.trackTime = current.trackTime + currentDelta
         end
 			end
@@ -344,8 +344,11 @@ function AnimationState:updateMixingFrom (to, delta)
 	local from = to.mixingFrom
 	if from == nil then return true end
 
- 	local finished = self:updateMixingFrom(from, delta)	
-	
+	local finished = self:updateMixingFrom(from, delta)
+
+	from.animationLast = from.nextAnimationLast
+	from.trackLast = from.nextTrackLast
+
 	-- Require mixTime > 0 to ensure the mixing from entry was applied at least once.
 	if (to.mixTime > 0 and (to.mixTime >= to.mixDuration or to.timeScale == 0)) then
 		-- Require totalAlpha == 0 to ensure mixing is complete, unless mixDuration == 0 (the transition is a single frame).
@@ -356,9 +359,7 @@ function AnimationState:updateMixingFrom (to, delta)
 		end
 		return finished
 	end
-	
-	from.animationLast = from.nextAnimationLast
-	from.trackLast = from.nextTrackLast
+
 	from.trackTime = from.trackTime + delta * from.timeScale
 	to.mixTime = to.mixTime + delta * to.timeScale
 	return false;
@@ -376,13 +377,23 @@ function AnimationState:apply (skeleton)
 	for i,current in pairs(tracks) do
 		if not (current == nil or current.delay > 0) then
       applied = true
+<<<<<<< HEAD
 			local blend = current.mixBlend
 			if i == 0 then blend = MixBlend.first end
-			
+
 			-- Apply mixing from entries first.
 			local mix = current.alpha
-			if current.mixingFrom then 
+			if current.mixingFrom then
 				mix = mix * self:applyMixingFrom(current, skeleton, blend)
+=======
+			local currrentPose = MixPose.currentLayered
+			if i == 0 then currentPose = MixPose.current end
+
+			-- Apply mixing from entries first.
+			local mix = current.alpha
+			if current.mixingFrom then
+				mix = mix * self:applyMixingFrom(current, skeleton, currentPose)
+>>>>>>> 3.6
 			elseif current.trackTime >= current.trackEnd and current.next == nil then
 				mix = 0
 			end
@@ -401,9 +412,15 @@ function AnimationState:apply (skeleton)
 				local timelinesRotation = current.timelinesRotation
 
 				for i,timeline in ipairs(timelines) do
+<<<<<<< HEAD
 					local timelineBlend = MixBlend.setup
 					if timelineData[i] == SUBSEQUENT then timelineBlend = blend end
-					
+
+=======
+					local pose = MixPose.currentPose
+					if timelineData[i] >= FIRST then pose = MixPose.setup end
+
+>>>>>>> 3.6
 					if timeline.type == Animation.TimelineType.rotate then
 						self:applyRotateTimeline(timeline, skeleton, animationTime, mix, timelineBlend, timelinesRotation, i * 2,
 							firstFrame) -- FIXME passing ii * 2, indexing correct?
@@ -446,18 +463,19 @@ function AnimationState:applyMixingFrom (to, skeleton, blend)
 	local timelines = from.animation.timelines
 	local alphaDip = from.alpha * to.interruptAlpha
 	local alphaMix = alphaDip * (1 - mix)
-	
+
 	if blend == MixBlend.add then
 		for i,timeline in ipairs(timelines) do
 			timeline:apply(skeleton, animationLast, animationTime, events, alphaMix, blend, MixDirection.out)
 		end
+<<<<<<< HEAD
 	else
 		local timelineData = from.timelineData
 		local timelineDipMix = from.timelineDipMix
 
 		local firstFrame = #from.timelinesRotation == 0
 		local timelinesRotation = from.timelinesRotation
-		
+
 		from.totalAlpha = 0;
 
 		for i,timeline in ipairs(timelines) do
@@ -475,12 +493,19 @@ function AnimationState:applyMixingFrom (to, skeleton, blend)
 			elseif timelineData[i] == DIP then
 				timelineBlend = MixBlend.setup
 				alpha = alphaDip
+=======
+
+		if not skipSubsequent then
+			from.totalAlpha = from.totalAlpha + alpha
+			if timeline.type == Animation.TimelineType.rotate then
+				self:applyRotateTimeline(timeline, skeleton, animationTime, alpha, pose, timelinesRotation, i * 2, firstFrame)
+>>>>>>> 3.6
 			else
 				timelineBlend = MixBlend.setup
 				local dipMix = timelineDipMix[i]
 				alpha = alphaDip * math_max(0, 1 - dipMix.mixtime / dipMix.mixDuration)
 			end
-			
+
 			if not skipSubsequent then
 				from.totalAlpha = from.totalAlpha + alpha
 				if timeline.type == Animation.TimelineType.rotate then
@@ -500,12 +525,17 @@ function AnimationState:applyMixingFrom (to, skeleton, blend)
 	return mix
 end
 
+<<<<<<< HEAD
 function AnimationState:applyRotateTimeline (timeline, skeleton, time, alpha, blend, timelinesRotation, i, firstFrame)
-	if firstFrame then 
+	if firstFrame then
+=======
+function AnimationState:applyRotateTimeline (timeline, skeleton, time, alpha, pose, timelinesRotation, i, firstFrame)
+	if firstFrame then
+>>>>>>> 3.6
 		timelinesRotation[i] = 0
 		timelinesRotation[i+1] = 0
 	end
-	
+
   if alpha == 1 then
     timeline:apply(skeleton, 0, time, nil, 1, blend, MixDirection._in)
     return
@@ -593,7 +623,7 @@ function AnimationState:queueEvents (entry, animationTime)
 
   -- Queue complete if completed a loop iteration or the animation.
   local queueComplete = false
-  if entry.loop then 
+  if entry.loop then
     queueComplete = duration == 0 or (trackLastWrapped > entry.trackTime % duration)
   else
     queueComplete = (animationTime >= animationEnd and entry.animationLast < animationEnd)
@@ -659,11 +689,11 @@ function AnimationState:setCurrent (index, current, interrupt)
     if interrupt then queue:interrupt(from) end
     current.mixingFrom = from
     current.mixTime = 0
-		
+
 		if from.mixingFrom and from.mixDuration > 0 then
 			current.interruptAlpha = current.interruptAlpha * math_min(1, from.mixTime / from.mixDuration)
 		end
-		
+
 		from.timelinesRotation = {};
   end
 
@@ -720,7 +750,7 @@ function AnimationState:addAnimation (trackIndex, animation, loop, delay)
   local entry = self:trackEntry(trackIndex, animation, loop, last)
   local queue = self.queue
   local data = self.data
-  
+
   if not last then
     self:setCurrent(trackIndex, entry, true)
     queue:drain()
@@ -795,7 +825,7 @@ function AnimationState:trackEntry (trackIndex, animation, loop, last)
   entry.trackTime = 0
   entry.trackLast = -1
   entry.nextTrackLast = -1
-  entry.trackEnd = 999999999  
+  entry.trackEnd = 999999999
   entry.timeScale = 1
 
   entry.alpha = 1
@@ -817,7 +847,7 @@ function AnimationState:disposeNext (entry)
     queue:dispose(_next)
     _next = _next.next
   end
-  entry.next = nil 
+  entry.next = nil
 end
 
 function AnimationState:_animationsChanged ()
@@ -826,10 +856,15 @@ function AnimationState:_animationsChanged ()
 	self.propertyIDs = {}
 	local propertyIDs = self.propertyIDs
 	local mixingTo = self.mixingTo
-	  
+
 	for i, entry in pairs(self.tracks) do
+<<<<<<< HEAD
 		if entry and (i == 0 or entry.mixBlend ~= MixBlend.add) then
-			entry:setTimelineData(nil, mixingTo, propertyIDs)			
+			entry:setTimelineData(nil, mixingTo, propertyIDs)
+=======
+		if entry then
+			entry:setTimelineData(nil, mixingTo, propertyIDs)
+>>>>>>> 3.6
 		end
 	end
 end

BIN
spine-starling/spine-starling-example/lib/spine-as3.swc


BIN
spine-starling/spine-starling/lib/spine-as3.swc


+ 23 - 0
spine-unity/Assets/Spine Examples/Getting Started/5 Basic Platformer.unity

@@ -5536,6 +5536,7 @@ GameObject:
   - component: {fileID: 1204355832}
   - component: {fileID: 1204355833}
   - component: {fileID: 1204355834}
+  - component: {fileID: 1204355835}
   m_Layer: 9
   m_Name: Player
   m_TagString: Untagged
@@ -5598,6 +5599,7 @@ MonoBehaviour:
   forceCrouchVelocity: 30
   forceCrouchDuration: 0.4
   skeletonAnimation: {fileID: 658011011}
+  transitions: {fileID: 1204355835}
   walk: {fileID: 11400000, guid: 096b05b71bb32cb409c1c8fd233b7ac3, type: 2}
   run: {fileID: 11400000, guid: cc83238c61de380499565292bef7ada4, type: 2}
   idle: {fileID: 11400000, guid: 8e32f0310bb5c02488c5c002dd41e7cb, type: 2}
@@ -5627,6 +5629,27 @@ MonoBehaviour:
   basePitch: 1
   randomPitchOffset: 0.2
   logDebugMessage: 0
+--- !u!114 &1204355835
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_PrefabParentObject: {fileID: 0}
+  m_PrefabInternal: {fileID: 0}
+  m_GameObject: {fileID: 1204355830}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 69a52bf79b7e78e4cb1dfd2d2e698c2d, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  transitions:
+  - from: {fileID: 11400000, guid: 29c1381a00cfb2c4d996f2a02fcc4506, type: 2}
+    to: {fileID: 11400000, guid: cc83238c61de380499565292bef7ada4, type: 2}
+    transition: {fileID: 11400000, guid: fcca5e996ae24ba43baaaadef1fb6ad9, type: 2}
+  - from: {fileID: 11400000, guid: 29c1381a00cfb2c4d996f2a02fcc4506, type: 2}
+    to: {fileID: 11400000, guid: 8e32f0310bb5c02488c5c002dd41e7cb, type: 2}
+    transition: {fileID: 11400000, guid: 714e39dce7285c145bdf142c38ef9a9b, type: 2}
+  - from: {fileID: 11400000, guid: 29c1381a00cfb2c4d996f2a02fcc4506, type: 2}
+    to: {fileID: 11400000, guid: 25961ff211f6f3947be85f8aab3f2630, type: 2}
+    transition: {fileID: 11400000, guid: 6c587772a6f7df94b934b353291c008c, type: 2}
 --- !u!1 &1217440894
 GameObject:
   m_ObjectHideFlags: 0

+ 131 - 4
spine-unity/Assets/Spine Examples/Other Examples/Instantiate from Script.unity

@@ -108,6 +108,83 @@ NavMeshSettings:
     tileSize: 256
     accuratePlacement: 0
   m_NavMeshData: {fileID: 0}
+--- !u!1 &92207858
+GameObject:
+  m_ObjectHideFlags: 0
+  m_PrefabParentObject: {fileID: 0}
+  m_PrefabInternal: {fileID: 0}
+  serializedVersion: 5
+  m_Component:
+  - component: {fileID: 92207862}
+  - component: {fileID: 92207861}
+  - component: {fileID: 92207860}
+  m_Layer: 5
+  m_Name: 3 Canvas - Spawn SkeletonGraphic Sample
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!114 &92207860
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_PrefabParentObject: {fileID: 0}
+  m_PrefabInternal: {fileID: 0}
+  m_GameObject: {fileID: 92207858}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 1980459831, guid: f70555f144d8491a825f0804e09c671c, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_UiScaleMode: 1
+  m_ReferencePixelsPerUnit: 100
+  m_ScaleFactor: 1
+  m_ReferenceResolution: {x: 1920, y: 1080}
+  m_ScreenMatchMode: 0
+  m_MatchWidthOrHeight: 0
+  m_PhysicalUnit: 3
+  m_FallbackScreenDPI: 96
+  m_DefaultSpriteDPI: 96
+  m_DynamicPixelsPerUnit: 1
+--- !u!223 &92207861
+Canvas:
+  m_ObjectHideFlags: 0
+  m_PrefabParentObject: {fileID: 0}
+  m_PrefabInternal: {fileID: 0}
+  m_GameObject: {fileID: 92207858}
+  m_Enabled: 1
+  serializedVersion: 3
+  m_RenderMode: 0
+  m_Camera: {fileID: 0}
+  m_PlaneDistance: 100
+  m_PixelPerfect: 0
+  m_ReceivesEvents: 1
+  m_OverrideSorting: 0
+  m_OverridePixelPerfect: 0
+  m_SortingBucketNormalizedSize: 0
+  m_AdditionalShaderChannelsFlag: 0
+  m_SortingLayerID: 0
+  m_SortingOrder: 0
+  m_TargetDisplay: 0
+--- !u!224 &92207862
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_PrefabParentObject: {fileID: 0}
+  m_PrefabInternal: {fileID: 0}
+  m_GameObject: {fileID: 92207858}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 0, y: 0, z: 0}
+  m_Children:
+  - {fileID: 1691562007}
+  m_Father: {fileID: 0}
+  m_RootOrder: 3
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0, y: 0}
+  m_AnchorMax: {x: 0, y: 0}
+  m_AnchoredPosition: {x: 0, y: 0}
+  m_SizeDelta: {x: 0, y: 0}
+  m_Pivot: {x: 0, y: 0}
 --- !u!1 &433620963
 GameObject:
   m_ObjectHideFlags: 0
@@ -224,11 +301,11 @@ MonoBehaviour:
   m_Script: {fileID: 11500000, guid: bb0837af7345d504db63d0c662fd12dc, type: 3}
   m_Name: 
   m_EditorClassIdentifier: 
-  skeletonJson: {fileID: 4900000, guid: 8160b67e4c41bd041b948b5e5a86e242, type: 3}
-  atlasText: {fileID: 4900000, guid: 9b2378ddc54f1c94fb80411958000a8c, type: 3}
+  skeletonJson: {fileID: 4900000, guid: e3b64d7eaf0de4e45a00b7065166554d, type: 3}
+  atlasText: {fileID: 4900000, guid: 5c0a5c36970a46e4d8378760ab4a4cfc, type: 3}
   textures:
-  - {fileID: 2800000, guid: 4ea2c33e839afb34c98f66e892b3b2d2, type: 3}
-  materialPropertySource: {fileID: 2100000, guid: f89bbf05902e77242a3ad20f3c927353,
+  - {fileID: 2800000, guid: 49bb65eefe08e424bbf7a38bc98ec638, type: 3}
+  materialPropertySource: {fileID: 2100000, guid: 1455e88fdb81ccc45bdeaedd657bad4d,
     type: 2}
 --- !u!4 &651278530
 Transform:
@@ -243,6 +320,56 @@ Transform:
   m_Father: {fileID: 0}
   m_RootOrder: 2
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &1691562006
+GameObject:
+  m_ObjectHideFlags: 0
+  m_PrefabParentObject: {fileID: 0}
+  m_PrefabInternal: {fileID: 0}
+  serializedVersion: 5
+  m_Component:
+  - component: {fileID: 1691562007}
+  - component: {fileID: 1691562008}
+  m_Layer: 5
+  m_Name: SkeletonGraphic GameObject
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &1691562007
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_PrefabParentObject: {fileID: 0}
+  m_PrefabInternal: {fileID: 0}
+  m_GameObject: {fileID: 1691562006}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children: []
+  m_Father: {fileID: 92207862}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0.5, y: 0.5}
+  m_AnchorMax: {x: 0.5, y: 0.5}
+  m_AnchoredPosition: {x: 647, y: -252}
+  m_SizeDelta: {x: 401, y: 394}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &1691562008
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_PrefabParentObject: {fileID: 0}
+  m_PrefabInternal: {fileID: 0}
+  m_GameObject: {fileID: 1691562006}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 53c7df9ccd5732543bcd589e8270ba1c, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  skeletonDataAsset: {fileID: 11400000, guid: a467507a4ffb1d542a558739b2fede77, type: 2}
+  startingAnimation: run
+  startingSkin: base
+  skeletonGraphicMaterial: {fileID: 2100000, guid: b66cf7a186d13054989b33a5c90044e4,
+    type: 2}
 --- !u!1 &1807176298
 GameObject:
   m_ObjectHideFlags: 0

+ 2 - 2
spine-unity/Assets/Spine Examples/Scripts/DataAssetsFromExportsExample.cs

@@ -10,7 +10,7 @@ namespace Spine.Unity.Examples {
 		public Texture2D[] textures;
 		public Material materialPropertySource;
 
-		AtlasAsset runtimeAtlasAsset;
+		SpineAtlasAsset runtimeAtlasAsset;
 		SkeletonDataAsset runtimeSkeletonDataAsset;
 		SkeletonAnimation runtimeSkeletonAnimation;
 
@@ -19,7 +19,7 @@ namespace Spine.Unity.Examples {
 			// 2. Create SkeletonDataAsset (needs json or binary asset file, and an AtlasAsset)
 			// 3. Create SkeletonAnimation (needs a valid SkeletonDataAsset)
 
-			runtimeAtlasAsset = AtlasAsset.CreateRuntimeInstance(atlasText, textures, materialPropertySource, true);
+			runtimeAtlasAsset = SpineAtlasAsset.CreateRuntimeInstance(atlasText, textures, materialPropertySource, true);
 			runtimeSkeletonDataAsset = SkeletonDataAsset.CreateRuntimeInstance(skeletonJson, runtimeAtlasAsset, true);
 		}
 

+ 13 - 4
spine-unity/Assets/Spine Examples/Scripts/Getting Started Scripts/BasicPlatformerController.cs

@@ -32,6 +32,7 @@ using UnityEngine;
 using Spine.Unity;
 
 namespace Spine.Unity.Examples {
+
 	[RequireComponent(typeof(CharacterController))]
 	public class BasicPlatformerController : MonoBehaviour {
 
@@ -56,6 +57,7 @@ namespace Spine.Unity.Examples {
 		public SkeletonAnimation skeletonAnimation;
 
 		[Header("Animation")]
+		public TransitionDictionaryExample transitions;
 		public AnimationReferenceAsset walk;
 		public AnimationReferenceAsset run;
 		public AnimationReferenceAsset idle;
@@ -149,6 +151,7 @@ namespace Spine.Unity.Examples {
 			controller.Move(velocity * dt);
 
 			// Animation
+			// Determine target animation.
 			if (isGrounded) {
 				if (doCrouch) {
 					targetAnimation = crouch;
@@ -162,17 +165,23 @@ namespace Spine.Unity.Examples {
 				targetAnimation = velocity.y > 0 ? jump : fall;
 			}
 
-
+			// Handle change in target animation.
 			if (previousTargetAnimation != targetAnimation) {
-				if (targetAnimation == run && previousTargetAnimation == fall) {
-					skeletonAnimation.AnimationState.SetAnimation(0, runFromFall, false);
-					skeletonAnimation.AnimationState.AddAnimation(0, run, true, 0f);
+				Animation transition = null;
+				if (transitions != null && previousTargetAnimation != null) {
+					transition = transitions.GetTransition(previousTargetAnimation, targetAnimation);
+				}
+
+				if (transition != null) {
+					skeletonAnimation.AnimationState.SetAnimation(0, transition, false).MixDuration = 0.05f;
+					skeletonAnimation.AnimationState.AddAnimation(0, targetAnimation, true, 0f);
 				} else {
 					skeletonAnimation.AnimationState.SetAnimation(0, targetAnimation, true);
 				}
 			}
 			previousTargetAnimation = targetAnimation;
 
+			// Face intended direction.
 			if (input.x != 0)
 				skeletonAnimation.Skeleton.FlipX = input.x < 0;
 

+ 35 - 0
spine-unity/Assets/Spine Examples/Scripts/Getting Started Scripts/TransitionDictionaryExample.cs

@@ -0,0 +1,35 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+namespace Spine.Unity.Examples {
+
+	// This is an example of how you could store animation transitions for use in your animation system.
+	// More ideally, this would be stored in a ScriptableObject in asset form rather than in a MonoBehaviour.
+	public sealed class TransitionDictionaryExample : MonoBehaviour {
+
+		[System.Serializable]
+		public struct SerializedEntry {
+			public AnimationReferenceAsset from;
+			public AnimationReferenceAsset to;
+			public AnimationReferenceAsset transition;
+		}
+
+		[SerializeField]
+		List<SerializedEntry> transitions = new List<SerializedEntry>();
+		readonly Dictionary<AnimationStateData.AnimationPair, Animation> dictionary = new Dictionary<AnimationStateData.AnimationPair, Animation>();
+
+		void Start () {
+			dictionary.Clear();
+			foreach (var e in transitions) {
+				dictionary.Add(new AnimationStateData.AnimationPair(e.from.Animation, e.to.Animation), e.transition.Animation);
+			}
+		}
+
+		public Animation GetTransition (Animation from, Animation to) {
+			Animation result;
+			dictionary.TryGetValue(new AnimationStateData.AnimationPair(from, to), out result);
+			return result;
+		}
+	}
+}

+ 12 - 0
spine-unity/Assets/Spine Examples/Scripts/Getting Started Scripts/TransitionDictionaryExample.cs.meta

@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 69a52bf79b7e78e4cb1dfd2d2e698c2d
+timeCreated: 1524024687
+licenseType: Free
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 1 - 1
spine-unity/Assets/Spine Examples/Scripts/Mix and Match Character Customize/EquipsVisualsComponentExample.cs

@@ -44,7 +44,7 @@ namespace Spine.Unity.Examples {
 			collectedSkin.Append(equipsSkin);
 
 			// 2. Create a repacked skin.
-			var repackedSkin = collectedSkin.GetRepackedSkin("Repacked skin", skeletonAnimation.SkeletonDataAsset.atlasAssets[0].materials[0], out runtimeMaterial, out runtimeAtlas);
+			var repackedSkin = collectedSkin.GetRepackedSkin("Repacked skin", skeletonAnimation.SkeletonDataAsset.atlasAssets[0].PrimaryMaterial, out runtimeMaterial, out runtimeAtlas);
 			collectedSkin.Clear();
 
 			// 3. Use the repacked skin.

+ 1 - 1
spine-unity/Assets/Spine Examples/Scripts/MixAndMatch.cs

@@ -67,7 +67,7 @@ namespace Spine.Unity.Examples {
 			if (sourceMaterial == null) {
 				var skeletonAnimation = GetComponent<SkeletonAnimation>();
 				if (skeletonAnimation != null)
-					sourceMaterial = skeletonAnimation.SkeletonDataAsset.atlasAssets[0].materials[0];
+					sourceMaterial = skeletonAnimation.SkeletonDataAsset.atlasAssets[0].PrimaryMaterial;
 			}
 		}
 

+ 1 - 1
spine-unity/Assets/Spine Examples/Scripts/MixAndMatchGraphic.cs

@@ -66,7 +66,7 @@ namespace Spine.Unity.Examples {
 			if (sourceMaterial == null) {
 				var skeletonGraphic = GetComponent<SkeletonGraphic>();
 				if (skeletonGraphic != null)
-					sourceMaterial = skeletonGraphic.SkeletonDataAsset.atlasAssets[0].materials[0];
+					sourceMaterial = skeletonGraphic.SkeletonDataAsset.atlasAssets[0].PrimaryMaterial;
 			}
 		}
 

+ 1 - 1
spine-unity/Assets/Spine Examples/Scripts/Sample Components/Legacy/AtlasRegionAttacher.cs

@@ -44,7 +44,7 @@ namespace Spine.Unity.Modules {
 			[SpineAtlasRegion] public string region;
 		}
 
-		[SerializeField] protected AtlasAsset atlasAsset;
+		[SerializeField] protected SpineAtlasAsset atlasAsset;
 		[SerializeField] protected bool inheritProperties = true;
 		[SerializeField] protected List<SlotRegionPair> attachments = new List<SlotRegionPair>();
 

+ 1 - 1
spine-unity/Assets/Spine Examples/Scripts/SpineGauge.cs

@@ -56,7 +56,7 @@ namespace Spine.Unity.Examples {
 			if (skeletonRenderer == null) return;
 			var skeleton = skeletonRenderer.skeleton; if (skeleton == null) return;
 
-			fillAnimation.Animation.Apply(skeleton, 0, percent, false, null, 1f, MixPose.Setup, MixDirection.In);
+			fillAnimation.Animation.Apply(skeleton, 0, percent, false, null, 1f, MixBlend.Setup, MixDirection.In);
 
 			skeleton.Update(Time.deltaTime);
 			skeleton.UpdateWorldTransform();

+ 1 - 1
spine-unity/Assets/Spine Examples/Spine/Dragon/dragon.png.meta

@@ -1,6 +1,6 @@
 fileFormatVersion: 2
 guid: 6bc52290ef03f2846ba38d67e2823598
-timeCreated: 1497481082
+timeCreated: 1528393443
 licenseType: Free
 TextureImporter:
   fileIDToRecycleName:

+ 1 - 1
spine-unity/Assets/Spine Examples/Spine/Dragon/dragon2.png.meta

@@ -1,6 +1,6 @@
 fileFormatVersion: 2
 guid: 12c126994123f12468cf4c5a2684078a
-timeCreated: 1497481081
+timeCreated: 1528393443
 licenseType: Free
 TextureImporter:
   fileIDToRecycleName:

BIN
spine-unity/Assets/Spine Examples/Spine/Dragon/dragon_Atlas.asset


BIN
spine-unity/Assets/Spine Examples/Spine/Dragon/dragon_dragon.mat


BIN
spine-unity/Assets/Spine Examples/Spine/Dragon/dragon_dragon2.mat


+ 1 - 1
spine-unity/Assets/Spine Examples/Spine/Eyes/eyes.png.meta

@@ -1,6 +1,6 @@
 fileFormatVersion: 2
 guid: 49441e5a1682e564694545bd9b509785
-timeCreated: 1487920372
+timeCreated: 1528393443
 licenseType: Free
 TextureImporter:
   fileIDToRecycleName: {}

BIN
spine-unity/Assets/Spine Examples/Spine/Eyes/eyes_Atlas.asset


BIN
spine-unity/Assets/Spine Examples/Spine/Eyes/eyes_Material.mat


+ 1 - 1
spine-unity/Assets/Spine Examples/Spine/FootSoldier/Equipment/Equipment.png.meta

@@ -1,6 +1,6 @@
 fileFormatVersion: 2
 guid: ddb89f63d0296cf4f8572b0448bb6b30
-timeCreated: 1487920373
+timeCreated: 1528393444
 licenseType: Free
 TextureImporter:
   fileIDToRecycleName:

BIN
spine-unity/Assets/Spine Examples/Spine/FootSoldier/Equipment/Equipment_Atlas.asset


BIN
spine-unity/Assets/Spine Examples/Spine/FootSoldier/Equipment/Equipment_Material.mat


+ 1 - 1
spine-unity/Assets/Spine Examples/Spine/FootSoldier/FS_White.png.meta

@@ -1,6 +1,6 @@
 fileFormatVersion: 2
 guid: 57b57f94df266f94ea0981915a4472e1
-timeCreated: 1487920372
+timeCreated: 1528393443
 licenseType: Free
 TextureImporter:
   fileIDToRecycleName: {}

BIN
spine-unity/Assets/Spine Examples/Spine/FootSoldier/FS_White_Atlas.asset


BIN
spine-unity/Assets/Spine Examples/Spine/FootSoldier/FS_White_Material.mat


+ 1 - 1
spine-unity/Assets/Spine Examples/Spine/Gauge/Gauge.png.meta

@@ -1,6 +1,6 @@
 fileFormatVersion: 2
 guid: a11301aad15ed6b4995485a02a81b132
-timeCreated: 1487920373
+timeCreated: 1528393443
 licenseType: Free
 TextureImporter:
   fileIDToRecycleName: {}

BIN
spine-unity/Assets/Spine Examples/Spine/Gauge/Gauge_Atlas.asset


BIN
spine-unity/Assets/Spine Examples/Spine/Gauge/Gauge_Material.mat


+ 1 - 1
spine-unity/Assets/Spine Examples/Spine/Goblins/goblins.png.meta

@@ -1,6 +1,6 @@
 fileFormatVersion: 2
 guid: 5fb7efec30c79cb46a705e0d04debb04
-timeCreated: 1487920372
+timeCreated: 1528393443
 licenseType: Free
 TextureImporter:
   fileIDToRecycleName: {}

BIN
spine-unity/Assets/Spine Examples/Spine/Goblins/goblins_Atlas.asset


BIN
spine-unity/Assets/Spine Examples/Spine/Goblins/goblins_Material.mat


+ 15 - 0
spine-unity/Assets/Spine Examples/Spine/Hero/ReferenceAssets/crouch-from fall.asset

@@ -0,0 +1,15 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_PrefabParentObject: {fileID: 0}
+  m_PrefabInternal: {fileID: 0}
+  m_GameObject: {fileID: 0}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 6e3e95a05e4c9774397eeeb7bdee8ccb, type: 3}
+  m_Name: crouch-from fall
+  m_EditorClassIdentifier: 
+  skeletonDataAsset: {fileID: 11400000, guid: 2f899e95232e6144786de8fb99678a8d, type: 2}
+  animationName: crouch-from fall

+ 9 - 0
spine-unity/Assets/Spine Examples/Spine/Hero/ReferenceAssets/crouch-from fall.asset.meta

@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: 6c587772a6f7df94b934b353291c008c
+timeCreated: 1524037841
+licenseType: Free
+NativeFormatImporter:
+  mainObjectFileID: 11400000
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 15 - 0
spine-unity/Assets/Spine Examples/Spine/Hero/ReferenceAssets/idle-from fall.asset

@@ -0,0 +1,15 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_PrefabParentObject: {fileID: 0}
+  m_PrefabInternal: {fileID: 0}
+  m_GameObject: {fileID: 0}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 6e3e95a05e4c9774397eeeb7bdee8ccb, type: 3}
+  m_Name: idle-from fall
+  m_EditorClassIdentifier: 
+  skeletonDataAsset: {fileID: 11400000, guid: 2f899e95232e6144786de8fb99678a8d, type: 2}
+  animationName: idle-from fall

+ 9 - 0
spine-unity/Assets/Spine Examples/Spine/Hero/ReferenceAssets/idle-from fall.asset.meta

@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: 714e39dce7285c145bdf142c38ef9a9b
+timeCreated: 1524037841
+licenseType: Free
+NativeFormatImporter:
+  mainObjectFileID: 11400000
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 0 - 146
spine-unity/Assets/Spine Examples/Spine/Hero/hero-mesh.atlas.txt

@@ -1,146 +0,0 @@
-
-hero-mesh.png
-size: 1024,256
-format: RGBA8888
-filter: Linear,Linear
-repeat: none
-body
-  rotate: false
-  xy: 324, 81
-  size: 97, 95
-  orig: 97, 95
-  offset: 0, 0
-  index: -1
-cape
-  rotate: false
-  xy: 176, 88
-  size: 146, 159
-  orig: 146, 159
-  offset: 0, 0
-  index: -1
-eyes
-  rotate: false
-  xy: 604, 216
-  size: 82, 31
-  orig: 82, 31
-  offset: 0, 0
-  index: -1
-fingers
-  rotate: false
-  xy: 877, 214
-  size: 31, 33
-  orig: 31, 33
-  offset: 0, 0
-  index: -1
-foot1
-  rotate: false
-  xy: 743, 205
-  size: 50, 42
-  orig: 50, 42
-  offset: 0, 0
-  index: -1
-foot2
-  rotate: false
-  xy: 688, 209
-  size: 53, 38
-  orig: 53, 38
-  offset: 0, 0
-  index: -1
-forearm1
-  rotate: false
-  xy: 795, 198
-  size: 41, 49
-  orig: 41, 49
-  offset: 0, 0
-  index: -1
-forearm2
-  rotate: false
-  xy: 910, 215
-  size: 31, 32
-  orig: 31, 32
-  offset: 0, 0
-  index: -1
-hand1
-  rotate: false
-  xy: 838, 199
-  size: 37, 48
-  orig: 37, 48
-  offset: 0, 0
-  index: -1
-hand2
-  rotate: false
-  xy: 286, 49
-  size: 31, 37
-  orig: 31, 37
-  offset: 0, 0
-  index: -1
-head
-  rotate: false
-  xy: 2, 74
-  size: 172, 173
-  orig: 172, 173
-  offset: 0, 0
-  index: -1
-mantles
-  rotate: false
-  xy: 2, 17
-  size: 136, 55
-  orig: 136, 55
-  offset: 0, 0
-  index: -1
-mouth
-  rotate: false
-  xy: 2, 2
-  size: 61, 13
-  orig: 61, 13
-  offset: 0, 0
-  index: -1
-shin1
-  rotate: false
-  xy: 482, 119
-  size: 53, 57
-  orig: 53, 57
-  offset: 0, 0
-  index: -1
-shin2
-  rotate: false
-  xy: 192, 32
-  size: 51, 54
-  orig: 51, 54
-  offset: 0, 0
-  index: -1
-sword
-  rotate: false
-  xy: 324, 178
-  size: 216, 69
-  orig: 216, 69
-  offset: 0, 0
-  index: -1
-thigh1
-  rotate: false
-  xy: 542, 184
-  size: 60, 63
-  orig: 60, 63
-  offset: 0, 0
-  index: -1
-thigh2
-  rotate: false
-  xy: 423, 112
-  size: 57, 64
-  orig: 57, 64
-  offset: 0, 0
-  index: -1
-upperarm1
-  rotate: false
-  xy: 140, 16
-  size: 50, 56
-  orig: 50, 56
-  offset: 0, 0
-  index: -1
-upperarm2
-  rotate: false
-  xy: 245, 27
-  size: 39, 59
-  orig: 39, 59
-  offset: 0, 0
-  index: -1

+ 0 - 4
spine-unity/Assets/Spine Examples/Spine/Hero/hero-mesh.atlas.txt.meta

@@ -1,4 +0,0 @@
-fileFormatVersion: 2
-guid: 0517c1f3a6aec5740aad7827a823c3db
-TextScriptImporter:
-  userData: 

Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 116
spine-unity/Assets/Spine Examples/Spine/Hero/hero-mesh.json


+ 0 - 4
spine-unity/Assets/Spine Examples/Spine/Hero/hero-mesh.json.meta

@@ -1,4 +0,0 @@
-fileFormatVersion: 2
-guid: 1d300d9a4480c99409d838b49f344f7a
-TextScriptImporter:
-  userData: 

BIN
spine-unity/Assets/Spine Examples/Spine/Hero/hero-mesh.png


+ 0 - 348
spine-unity/Assets/Spine Examples/Spine/Hero/hero-mesh.png.meta

@@ -1,348 +0,0 @@
-fileFormatVersion: 2
-guid: 8d970daea81f33648ae2d84ab59c88d4
-timeCreated: 1487920373
-licenseType: Free
-TextureImporter:
-  fileIDToRecycleName:
-    21300000: body
-    21300002: cape
-    21300004: eyes
-    21300006: fingers
-    21300008: foot1
-    21300010: foot2
-    21300012: forearm1
-    21300014: forearm2
-    21300016: hand1
-    21300018: hand2
-    21300020: head
-    21300022: mantles
-    21300024: mouth
-    21300026: shin1
-    21300028: shin2
-    21300030: sword
-    21300032: thigh1
-    21300034: thigh2
-    21300036: upperarm1
-    21300038: upperarm2
-  serializedVersion: 4
-  mipmaps:
-    mipMapMode: 0
-    enableMipMap: 0
-    sRGBTexture: 1
-    linearTexture: 0
-    fadeOut: 0
-    borderMipMap: 0
-    mipMapFadeDistanceStart: 1
-    mipMapFadeDistanceEnd: 3
-  bumpmap:
-    convertToNormalMap: 0
-    externalNormalMap: 0
-    heightScale: 0.25
-    normalMapFilter: 0
-  isReadable: 1
-  grayScaleToAlpha: 0
-  generateCubemap: 6
-  cubemapConvolution: 0
-  seamlessCubemap: 0
-  textureFormat: -3
-  maxTextureSize: 2048
-  textureSettings:
-    filterMode: 2
-    aniso: 7
-    mipBias: -1
-    wrapMode: -1
-  nPOTScale: 1
-  lightmap: 0
-  compressionQuality: 50
-  spriteMode: 0
-  spriteExtrude: 1
-  spriteMeshType: 1
-  alignment: 0
-  spritePivot: {x: 0.5, y: 0.5}
-  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
-  spritePixelsToUnits: 100
-  alphaUsage: 1
-  alphaIsTransparency: 0
-  spriteTessellationDetail: -1
-  textureType: 0
-  textureShape: 1
-  maxTextureSizeSet: 0
-  compressionQualitySet: 0
-  textureFormatSet: 0
-  platformSettings:
-  - buildTarget: DefaultTexturePlatform
-    maxTextureSize: 2048
-    textureFormat: -1
-    textureCompression: 0
-    compressionQuality: 50
-    crunchedCompression: 0
-    allowsAlphaSplitting: 0
-    overridden: 0
-  spriteSheet:
-    serializedVersion: 2
-    sprites:
-    - serializedVersion: 2
-      name: body
-      rect:
-        serializedVersion: 2
-        x: 324
-        y: 80
-        width: 97
-        height: 95
-      alignment: 0
-      pivot: {x: 0.5, y: 0.5}
-      border: {x: 0, y: 0, z: 0, w: 0}
-      outline: []
-      tessellationDetail: -1
-    - serializedVersion: 2
-      name: cape
-      rect:
-        serializedVersion: 2
-        x: 176
-        y: 9
-        width: 146
-        height: 159
-      alignment: 0
-      pivot: {x: 0.5, y: 0.5}
-      border: {x: 0, y: 0, z: 0, w: 0}
-      outline: []
-      tessellationDetail: -1
-    - serializedVersion: 2
-      name: eyes
-      rect:
-        serializedVersion: 2
-        x: 604
-        y: 9
-        width: 82
-        height: 31
-      alignment: 0
-      pivot: {x: 0.5, y: 0.5}
-      border: {x: 0, y: 0, z: 0, w: 0}
-      outline: []
-      tessellationDetail: -1
-    - serializedVersion: 2
-      name: fingers
-      rect:
-        serializedVersion: 2
-        x: 877
-        y: 9
-        width: 31
-        height: 33
-      alignment: 0
-      pivot: {x: 0.5, y: 0.5}
-      border: {x: 0, y: 0, z: 0, w: 0}
-      outline: []
-      tessellationDetail: -1
-    - serializedVersion: 2
-      name: foot1
-      rect:
-        serializedVersion: 2
-        x: 743
-        y: 9
-        width: 50
-        height: 42
-      alignment: 0
-      pivot: {x: 0.5, y: 0.5}
-      border: {x: 0, y: 0, z: 0, w: 0}
-      outline: []
-      tessellationDetail: -1
-    - serializedVersion: 2
-      name: foot2
-      rect:
-        serializedVersion: 2
-        x: 688
-        y: 9
-        width: 53
-        height: 38
-      alignment: 0
-      pivot: {x: 0.5, y: 0.5}
-      border: {x: 0, y: 0, z: 0, w: 0}
-      outline: []
-      tessellationDetail: -1
-    - serializedVersion: 2
-      name: forearm1
-      rect:
-        serializedVersion: 2
-        x: 795
-        y: 9
-        width: 41
-        height: 49
-      alignment: 0
-      pivot: {x: 0.5, y: 0.5}
-      border: {x: 0, y: 0, z: 0, w: 0}
-      outline: []
-      tessellationDetail: -1
-    - serializedVersion: 2
-      name: forearm2
-      rect:
-        serializedVersion: 2
-        x: 910
-        y: 9
-        width: 31
-        height: 32
-      alignment: 0
-      pivot: {x: 0.5, y: 0.5}
-      border: {x: 0, y: 0, z: 0, w: 0}
-      outline: []
-      tessellationDetail: -1
-    - serializedVersion: 2
-      name: hand1
-      rect:
-        serializedVersion: 2
-        x: 838
-        y: 9
-        width: 37
-        height: 48
-      alignment: 0
-      pivot: {x: 0.5, y: 0.5}
-      border: {x: 0, y: 0, z: 0, w: 0}
-      outline: []
-      tessellationDetail: -1
-    - serializedVersion: 2
-      name: hand2
-      rect:
-        serializedVersion: 2
-        x: 286
-        y: 170
-        width: 31
-        height: 37
-      alignment: 0
-      pivot: {x: 0.5, y: 0.5}
-      border: {x: 0, y: 0, z: 0, w: 0}
-      outline: []
-      tessellationDetail: -1
-    - serializedVersion: 2
-      name: head
-      rect:
-        serializedVersion: 2
-        x: 2
-        y: 9
-        width: 172
-        height: 173
-      alignment: 0
-      pivot: {x: 0.5, y: 0.5}
-      border: {x: 0, y: 0, z: 0, w: 0}
-      outline: []
-      tessellationDetail: -1
-    - serializedVersion: 2
-      name: mantles
-      rect:
-        serializedVersion: 2
-        x: 2
-        y: 184
-        width: 136
-        height: 55
-      alignment: 0
-      pivot: {x: 0.5, y: 0.5}
-      border: {x: 0, y: 0, z: 0, w: 0}
-      outline: []
-      tessellationDetail: -1
-    - serializedVersion: 2
-      name: mouth
-      rect:
-        serializedVersion: 2
-        x: 2
-        y: 241
-        width: 61
-        height: 13
-      alignment: 0
-      pivot: {x: 0.5, y: 0.5}
-      border: {x: 0, y: 0, z: 0, w: 0}
-      outline: []
-      tessellationDetail: -1
-    - serializedVersion: 2
-      name: shin1
-      rect:
-        serializedVersion: 2
-        x: 482
-        y: 80
-        width: 53
-        height: 57
-      alignment: 0
-      pivot: {x: 0.5, y: 0.5}
-      border: {x: 0, y: 0, z: 0, w: 0}
-      outline: []
-      tessellationDetail: -1
-    - serializedVersion: 2
-      name: shin2
-      rect:
-        serializedVersion: 2
-        x: 192
-        y: 170
-        width: 51
-        height: 54
-      alignment: 0
-      pivot: {x: 0.5, y: 0.5}
-      border: {x: 0, y: 0, z: 0, w: 0}
-      outline: []
-      tessellationDetail: -1
-    - serializedVersion: 2
-      name: sword
-      rect:
-        serializedVersion: 2
-        x: 324
-        y: 9
-        width: 216
-        height: 69
-      alignment: 0
-      pivot: {x: 0.5, y: 0.5}
-      border: {x: 0, y: 0, z: 0, w: 0}
-      outline: []
-      tessellationDetail: -1
-    - serializedVersion: 2
-      name: thigh1
-      rect:
-        serializedVersion: 2
-        x: 542
-        y: 9
-        width: 60
-        height: 63
-      alignment: 0
-      pivot: {x: 0.5, y: 0.5}
-      border: {x: 0, y: 0, z: 0, w: 0}
-      outline: []
-      tessellationDetail: -1
-    - serializedVersion: 2
-      name: thigh2
-      rect:
-        serializedVersion: 2
-        x: 423
-        y: 80
-        width: 57
-        height: 64
-      alignment: 0
-      pivot: {x: 0.5, y: 0.5}
-      border: {x: 0, y: 0, z: 0, w: 0}
-      outline: []
-      tessellationDetail: -1
-    - serializedVersion: 2
-      name: upperarm1
-      rect:
-        serializedVersion: 2
-        x: 140
-        y: 184
-        width: 50
-        height: 56
-      alignment: 0
-      pivot: {x: 0.5, y: 0.5}
-      border: {x: 0, y: 0, z: 0, w: 0}
-      outline: []
-      tessellationDetail: -1
-    - serializedVersion: 2
-      name: upperarm2
-      rect:
-        serializedVersion: 2
-        x: 245
-        y: 170
-        width: 39
-        height: 59
-      alignment: 0
-      pivot: {x: 0.5, y: 0.5}
-      border: {x: 0, y: 0, z: 0, w: 0}
-      outline: []
-      tessellationDetail: -1
-    outline: []
-  spritePackingTag: 
-  userData: 
-  assetBundleName: 
-  assetBundleVariant: 

+ 0 - 16
spine-unity/Assets/Spine Examples/Spine/Hero/hero-mesh_Atlas.asset

@@ -1,16 +0,0 @@
-%YAML 1.1
-%TAG !u! tag:unity3d.com,2011:
---- !u!114 &11400000
-MonoBehaviour:
-  m_ObjectHideFlags: 0
-  m_PrefabParentObject: {fileID: 0}
-  m_PrefabInternal: {fileID: 0}
-  m_GameObject: {fileID: 0}
-  m_Enabled: 1
-  m_EditorHideFlags: 0
-  m_Script: {fileID: 11500000, guid: a6b194f808b1af6499c93410e504af42, type: 3}
-  m_Name: hero-mesh_Atlas
-  m_EditorClassIdentifier: 
-  atlasFile: {fileID: 4900000, guid: 0517c1f3a6aec5740aad7827a823c3db, type: 3}
-  materials:
-  - {fileID: 2100000, guid: b04b8c6e4c57e78449f243c27617a2cd, type: 2}

+ 0 - 4
spine-unity/Assets/Spine Examples/Spine/Hero/hero-mesh_Atlas.asset.meta

@@ -1,4 +0,0 @@
-fileFormatVersion: 2
-guid: 54d41b08afeefd44292ae69c4a235aa9
-NativeFormatImporter:
-  userData: 

+ 0 - 26
spine-unity/Assets/Spine Examples/Spine/Hero/hero-mesh_Material.mat

@@ -1,26 +0,0 @@
-%YAML 1.1
-%TAG !u! tag:unity3d.com,2011:
---- !u!21 &2100000
-Material:
-  serializedVersion: 6
-  m_ObjectHideFlags: 0
-  m_PrefabParentObject: {fileID: 0}
-  m_PrefabInternal: {fileID: 0}
-  m_Name: hero-mesh_Material
-  m_Shader: {fileID: 4800000, guid: 1e8a610c9e01c3648bac42585e5fc676, type: 3}
-  m_ShaderKeywords: 
-  m_LightmapFlags: 5
-  m_EnableInstancingVariants: 0
-  m_CustomRenderQueue: -1
-  stringTagMap: {}
-  disabledShaderPasses: []
-  m_SavedProperties:
-    serializedVersion: 3
-    m_TexEnvs:
-    - _MainTex:
-        m_Texture: {fileID: 2800000, guid: 8d970daea81f33648ae2d84ab59c88d4, type: 3}
-        m_Scale: {x: 1, y: 1}
-        m_Offset: {x: 0, y: 0}
-    m_Floats:
-    - _Cutoff: 0.1
-    m_Colors: []

+ 0 - 4
spine-unity/Assets/Spine Examples/Spine/Hero/hero-mesh_Material.mat.meta

@@ -1,4 +0,0 @@
-fileFormatVersion: 2
-guid: b04b8c6e4c57e78449f243c27617a2cd
-NativeFormatImporter:
-  userData: 

+ 0 - 22
spine-unity/Assets/Spine Examples/Spine/Hero/hero-mesh_SkeletonData.asset

@@ -1,22 +0,0 @@
-%YAML 1.1
-%TAG !u! tag:unity3d.com,2011:
---- !u!114 &11400000
-MonoBehaviour:
-  m_ObjectHideFlags: 0
-  m_PrefabParentObject: {fileID: 0}
-  m_PrefabInternal: {fileID: 0}
-  m_GameObject: {fileID: 0}
-  m_Enabled: 1
-  m_EditorHideFlags: 0
-  m_Script: {fileID: 11500000, guid: f1b3b4b945939a54ea0b23d3396115fb, type: 3}
-  m_Name: hero-mesh_SkeletonData
-  m_EditorClassIdentifier: 
-  atlasAssets:
-  - {fileID: 11400000, guid: 54d41b08afeefd44292ae69c4a235aa9, type: 2}
-  skeletonJSON: {fileID: 4900000, guid: 1d300d9a4480c99409d838b49f344f7a, type: 3}
-  scale: 0.01
-  fromAnimation: []
-  toAnimation: []
-  duration: []
-  defaultMix: 0.15
-  controller: {fileID: 9100000, guid: 867430a8599276b4e901c8f84e1bf590, type: 2}

+ 0 - 4
spine-unity/Assets/Spine Examples/Spine/Hero/hero-mesh_SkeletonData.asset.meta

@@ -1,4 +0,0 @@
-fileFormatVersion: 2
-guid: a5967d74cd1f3c741ba7758da7511bcf
-NativeFormatImporter:
-  userData: 

Dosya farkı çok büyük olduğundan ihmal edildi
+ 2 - 2
spine-unity/Assets/Spine Examples/Spine/Hero/hero-pro.json


+ 1 - 1
spine-unity/Assets/Spine Examples/Spine/Hero/hero-pro.png.meta

@@ -1,6 +1,6 @@
 fileFormatVersion: 2
 guid: 25b07e861d1a62f4db687c871e4a3828
-timeCreated: 1524005969
+timeCreated: 1528393443
 licenseType: Free
 TextureImporter:
   fileIDToRecycleName: {}

BIN
spine-unity/Assets/Spine Examples/Spine/Hero/hero-pro_Atlas.asset


BIN
spine-unity/Assets/Spine Examples/Spine/Hero/hero-pro_Material.mat


+ 1 - 1
spine-unity/Assets/Spine Examples/Spine/Raggedy Spineboy/Raggedy Spineboy.png.meta

@@ -1,6 +1,6 @@
 fileFormatVersion: 2
 guid: b29bbacbc2368c94a9c942d176ac6f59
-timeCreated: 1487920373
+timeCreated: 1528393443
 licenseType: Free
 TextureImporter:
   fileIDToRecycleName: {}

BIN
spine-unity/Assets/Spine Examples/Spine/Raggedy Spineboy/Raggedy Spineboy_Atlas.asset


BIN
spine-unity/Assets/Spine Examples/Spine/Raggedy Spineboy/Raggedy Spineboy_Material.mat


+ 3 - 3
spine-unity/Assets/Spine Examples/Spine/Raptor/raptor.png.meta

@@ -1,6 +1,6 @@
 fileFormatVersion: 2
 guid: 4261719a8f729a644b2dab6113d1b0ea
-timeCreated: 1494110641
+timeCreated: 1528393443
 licenseType: Free
 TextureImporter:
   fileIDToRecycleName:
@@ -69,7 +69,7 @@ TextureImporter:
   nPOTScale: 0
   lightmap: 0
   compressionQuality: 50
-  spriteMode: 2
+  spriteMode: 0
   spriteExtrude: 1
   spriteMeshType: 0
   alignment: 0
@@ -86,7 +86,7 @@ TextureImporter:
   textureFormatSet: 0
   platformSettings:
   - buildTarget: DefaultTexturePlatform
-    maxTextureSize: 4096
+    maxTextureSize: 2048
     textureFormat: -1
     textureCompression: 0
     compressionQuality: 50

BIN
spine-unity/Assets/Spine Examples/Spine/Raptor/raptor_Atlas.asset


BIN
spine-unity/Assets/Spine Examples/Spine/Raptor/raptor_Material.mat


+ 1 - 1
spine-unity/Assets/Spine Examples/Spine/Spineunitygirl/Doi.png.meta

@@ -1,6 +1,6 @@
 fileFormatVersion: 2
 guid: 33e128e17951b4a42b17608ff79ba5c5
-timeCreated: 1487920372
+timeCreated: 1528393443
 licenseType: Free
 TextureImporter:
   fileIDToRecycleName: {}

BIN
spine-unity/Assets/Spine Examples/Spine/Spineunitygirl/Doi_Atlas.asset


BIN
spine-unity/Assets/Spine Examples/Spine/Spineunitygirl/Doi_Material.mat


+ 1 - 1
spine-unity/Assets/Spine Examples/Spine/Strechyman/stretchyman-diffuse-pma.png.meta

@@ -1,6 +1,6 @@
 fileFormatVersion: 2
 guid: 33f10ea7e20549d40a1c23a1adc3f760
-timeCreated: 1487920372
+timeCreated: 1528393443
 licenseType: Free
 TextureImporter:
   fileIDToRecycleName: {}

BIN
spine-unity/Assets/Spine Examples/Spine/Strechyman/stretchyman-diffuse-pma_Atlas.asset


BIN
spine-unity/Assets/Spine Examples/Spine/Strechyman/stretchyman-diffuse-pma_Material.mat


+ 1 - 1
spine-unity/Assets/Spine Examples/Spine/spineboy-pro/spineboy-pro.png.meta

@@ -1,6 +1,6 @@
 fileFormatVersion: 2
 guid: 4ea2c33e839afb34c98f66e892b3b2d2
-timeCreated: 1516482806
+timeCreated: 1528393443
 licenseType: Free
 TextureImporter:
   fileIDToRecycleName: {}

BIN
spine-unity/Assets/Spine Examples/Spine/spineboy-pro/spineboy-pro_Atlas.asset


BIN
spine-unity/Assets/Spine Examples/Spine/spineboy-pro/spineboy-pro_Material.mat


+ 585 - 24
spine-unity/Assets/Spine Examples/Spine/spineboy-unity/spineboy-unity.json

@@ -1,6 +1,6 @@
 {
 "skeleton": {
-	"hash": "/TOc8ZCRqVHx2Z5rHf8FIeR4q4E",
+	"hash": "cwpUEgLuMJTa1mvhbplDvBw8W+0",
 	"spine": "3.6.52",
 	"width": 470.71,
 	"height": 731.57,
@@ -40,12 +40,15 @@
 	{ "name": "rear_upper_arm", "parent": "torso", "length": 51.94, "rotation": -169.56, "x": 92.36, "y": -19.22, "color": "ff000dff" },
 	{ "name": "rear_bracer", "parent": "rear_upper_arm", "length": 34.56, "rotation": 23.15, "x": 51.36, "color": "ff000dff" },
 	{ "name": "gun", "parent": "rear_bracer", "length": 43.11, "rotation": 5.35, "x": 34.42, "y": -0.45, "color": "ff000dff" },
-	{ "name": "gun2", "parent": "root", "x": 390.37, "y": 534.39 },
-	{ "name": "gun3", "parent": "root", "x": 227.4, "y": 464.27 },
-	{ "name": "gun4", "parent": "root", "x": 250.14, "y": 672.72 },
+	{ "name": "gun2", "parent": "root", "rotation": -59.72, "x": 390.37, "y": 534.39 },
+	{ "name": "gun3", "parent": "root", "rotation": -77.87, "x": 227.4, "y": 464.27 },
+	{ "name": "gun4", "parent": "root", "rotation": -86.3, "x": 250.14, "y": 672.72 },
+	{ "name": "gun rotation", "parent": "root", "x": 334.56, "y": 492, "color": "abe323ff" },
 	{ "name": "gunTip", "parent": "gun", "rotation": 6.83, "x": 201.04, "y": 52.13, "color": "ff000dff" },
 	{ "name": "neck", "parent": "torso", "length": 25.45, "rotation": -31.54, "x": 127.5, "y": -0.31, "color": "e0da19ff" },
 	{ "name": "head", "parent": "neck", "length": 263.58, "rotation": 23.18, "x": 27.66, "y": -0.26, "color": "e0da19ff" },
+	{ "name": "muzzle2 free", "parent": "root" },
+	{ "name": "muzzle3 free", "parent": "root" },
 	{ "name": "pathbone", "parent": "root", "x": 71.67, "y": 368.83 },
 	{ "name": "rear_thigh", "parent": "hip", "length": 85.72, "rotation": -72.54, "x": 8.91, "y": -5.63, "color": "ff000dff" },
 	{ "name": "rear_shin", "parent": "rear_thigh", "length": 121.88, "rotation": -19.83, "x": 86.1, "y": -1.33, "color": "ff000dff" },
@@ -77,6 +80,8 @@
 	{ "name": "gun2", "bone": "gun2" },
 	{ "name": "gun3", "bone": "gun3" },
 	{ "name": "gun4", "bone": "gun4" },
+	{ "name": "muzzle2", "bone": "muzzle2 free", "blend": "additive" },
+	{ "name": "muzzle3", "bone": "muzzle3 free", "blend": "additive" },
 	{ "name": "gunspath", "bone": "pathbone", "attachment": "gunspath" },
 	{ "name": "projectile source", "bone": "gunTip", "attachment": "projectile source" }
 ],
@@ -106,6 +111,39 @@
 		"translateMix": 0,
 		"scaleMix": 0,
 		"shearMix": 0
+	},
+	{
+		"name": "gun2 rotation",
+		"order": 4,
+		"bones": [ "gun2" ],
+		"target": "gun rotation",
+		"rotation": 72.7,
+		"rotateMix": 0,
+		"translateMix": 0,
+		"scaleMix": 0,
+		"shearMix": 0
+	},
+	{
+		"name": "gun3 rotation",
+		"order": 5,
+		"bones": [ "gun3" ],
+		"target": "gun rotation",
+		"rotation": -116.2,
+		"rotateMix": 0,
+		"translateMix": 0,
+		"scaleMix": 0,
+		"shearMix": 0
+	},
+	{
+		"name": "gun4 rotation",
+		"order": 6,
+		"bones": [ "gun4" ],
+		"target": "gun rotation",
+		"rotation": 166.9,
+		"rotateMix": 0,
+		"translateMix": 0,
+		"scaleMix": 0,
+		"shearMix": 0
 	}
 ],
 "path": [
@@ -148,21 +186,21 @@
 			"front_upper_arm": { "x": 28.31, "y": 7.37, "rotation": 97.9, "width": 54, "height": 97 }
 		},
 		"gun2": {
-			"gun": { "x": 43.59, "y": -39.79, "width": 210, "height": 203 }
+			"gun": { "x": 43.59, "y": -39.79, "rotation": 83.87, "width": 210, "height": 203 }
 		},
 		"gun3": {
-			"gun": { "x": 39.79, "y": -39.8, "width": 210, "height": 203 }
+			"gun": { "x": 39.79, "y": -39.8, "rotation": 101.48, "width": 210, "height": 203 }
 		},
 		"gun4": {
-			"gun": { "x": 41.69, "y": -36, "width": 210, "height": 203 }
+			"gun": { "x": 41.69, "y": -36, "rotation": 111.08, "width": 210, "height": 203 }
 		},
 		"gunspath": {
 			"gunspath": {
 				"type": "path",
 				"closed": true,
-				"lengths": [ 534.73, 1020.73, 1497.06, 1846.09 ],
-				"vertexCount": 12,
-				"vertices": [ -175.36, 204.8, -71.34, 203.78, 121.95, 201.89, 376.27, 145.38, 369.88, -13.62, 363.36, -174.04, 157.89, -197.96, -31.54, -205.54, -224.8, -211.56, -421.28, -97.38, -436.34, -4.18, -453.89, 104.42 ],
+				"lengths": [ 559.93, 1333.08 ],
+				"vertexCount": 6,
+				"vertices": [ 169.43, -419.28, 139.24, -43.51, 111.84, 297.59, -220.3, -362.22, -282.74, -117.7, -400, 341.5 ],
 				"color": "ffffffff"
 			}
 		},
@@ -184,6 +222,12 @@
 		"muzzle": {
 			"muzzle": { "x": 18.25, "y": 5.45, "rotation": 0.15, "width": 462, "height": 400 }
 		},
+		"muzzle2": {
+			"muzzle": { "x": 60.83, "width": 462, "height": 400 }
+		},
+		"muzzle3": {
+			"muzzle": { "x": 60.83, "width": 462, "height": 400 }
+		},
 		"neck": {
 			"neck": { "x": 9.77, "y": -3.01, "rotation": -55.22, "width": 36, "height": 41 }
 		},
@@ -784,6 +828,11 @@
 					{ "time": 1.6667, "name": null }
 				]
 			},
+			"gunspath": {
+				"attachment": [
+					{ "time": 0, "name": "gunspath" }
+				]
+			},
 			"mouth": {
 				"attachment": [
 					{ "time": 0, "name": "mouth_smile" },
@@ -816,6 +865,38 @@
 					{ "time": 1.3333, "name": null },
 					{ "time": 2.5333, "name": null }
 				]
+			},
+			"muzzle2": {
+				"attachment": [
+					{ "time": 0.7667, "name": "muzzle" },
+					{ "time": 0.8333, "name": null },
+					{ "time": 0.8667, "name": "muzzle" },
+					{ "time": 0.9333, "name": null },
+					{ "time": 0.9667, "name": "muzzle" },
+					{ "time": 1.0333, "name": null },
+					{ "time": 1.0667, "name": "muzzle" },
+					{ "time": 1.1333, "name": null },
+					{ "time": 1.1667, "name": "muzzle" },
+					{ "time": 1.2333, "name": null },
+					{ "time": 1.2667, "name": "muzzle" },
+					{ "time": 1.3333, "name": null }
+				]
+			},
+			"muzzle3": {
+				"attachment": [
+					{ "time": 0.8333, "name": "muzzle" },
+					{ "time": 0.9, "name": null },
+					{ "time": 0.9333, "name": "muzzle" },
+					{ "time": 1, "name": null },
+					{ "time": 1.0333, "name": "muzzle" },
+					{ "time": 1.1, "name": null },
+					{ "time": 1.1333, "name": "muzzle" },
+					{ "time": 1.2, "name": null },
+					{ "time": 1.2333, "name": "muzzle" },
+					{ "time": 1.3, "name": null },
+					{ "time": 1.3333, "name": "muzzle" },
+					{ "time": 1.4, "name": null }
+				]
 			}
 		},
 		"bones": {
@@ -1246,8 +1327,8 @@
 						"angle": 15.51,
 						"curve": [ 0.324, 0.12, 0.658, 0.47 ]
 					},
-					{ "time": 2.2667, "angle": 5.14, "curve": "stepped" },
-					{ "time": 2.5333, "angle": 5.14 }
+					{ "time": 2.2667, "angle": 8.88, "curve": "stepped" },
+					{ "time": 2.5333, "angle": 8.88 }
 				],
 				"scale": [
 					{ "time": 0, "x": 0.755, "y": 1.31, "curve": "stepped" },
@@ -1902,12 +1983,6 @@
 				]
 			},
 			"pathbone": {
-				"rotate": [
-					{ "time": 0.6667, "angle": 0 },
-					{ "time": 1, "angle": -126.96 },
-					{ "time": 1.3333, "angle": 65.58 },
-					{ "time": 1.6667, "angle": 0 }
-				],
 				"scale": [
 					{ "time": 0.6667, "x": 1, "y": 1 },
 					{ "time": 1.1667, "x": 1.619, "y": 1.619 },
@@ -1916,29 +1991,117 @@
 			},
 			"gun2": {
 				"rotate": [
-					{ "time": 1.6667, "angle": -123.5 }
+					{ "time": 0.6333, "angle": 0 },
+					{ "time": 1.6667, "angle": 208.8 }
 				],
 				"translate": [
 					{ "time": 0.6, "x": -271.69, "y": -301.15 },
-					{ "time": 1.6667, "x": -408.03, "y": -266.19 }
+					{ "time": 1.6667, "x": -470.47, "y": -334.43 }
 				]
 			},
 			"gun3": {
 				"rotate": [
-					{ "time": 1.6667, "angle": -123.5 }
+					{ "time": 0.6333, "angle": 0 },
+					{ "time": 1.6667, "angle": 208.8 }
 				],
 				"translate": [
 					{ "time": 0.6, "x": -111.29, "y": -212.77 },
-					{ "time": 1.6667, "x": -247.64, "y": -177.81 }
+					{ "time": 1.6667, "x": -310.07, "y": -246.05 }
 				]
 			},
 			"gun4": {
 				"rotate": [
-					{ "time": 1.6667, "angle": -123.5 }
+					{ "time": 0.6333, "angle": 0 },
+					{ "time": 1.6667, "angle": 208.8 }
 				],
 				"translate": [
 					{ "time": 0.6, "x": -144.03, "y": -425.54 },
-					{ "time": 1.6667, "x": -280.37, "y": -390.58 }
+					{ "time": 1.6667, "x": -342.81, "y": -458.82 }
+				]
+			},
+			"muzzle2 free": {
+				"rotate": [
+					{ "time": 0.7667, "angle": -21.73, "curve": "stepped" },
+					{ "time": 0.8667, "angle": 172.48, "curve": "stepped" },
+					{ "time": 0.9667, "angle": -139.64, "curve": "stepped" },
+					{ "time": 1.0667, "angle": 24.69, "curve": "stepped" },
+					{ "time": 1.1667, "angle": 176.07, "curve": "stepped" },
+					{ "time": 1.2667, "angle": 52.93 }
+				],
+				"translate": [
+					{ "time": 0.7667, "x": 269.22, "y": 129.31, "curve": "stepped" },
+					{ "time": 0.8667, "x": -567.86, "y": 347.09, "curve": "stepped" },
+					{ "time": 0.9667, "x": -307.84, "y": 56.76, "curve": "stepped" },
+					{ "time": 1.0667, "x": 353.92, "y": 489.89, "curve": "stepped" },
+					{ "time": 1.1667, "x": -332.25, "y": 174.65, "curve": "stepped" },
+					{ "time": 1.2667, "x": -228.55, "y": 693.4 }
+				],
+				"scale": [
+					{ "time": 0.7667, "x": 0.9, "y": 1.202 },
+					{ "time": 0.8333, "x": 1.045, "y": 0.99, "curve": "stepped" },
+					{ "time": 0.8667, "x": 0.9, "y": 1.202 },
+					{ "time": 0.9333, "x": 1.045, "y": 0.99, "curve": "stepped" },
+					{ "time": 0.9667, "x": 0.9, "y": 1.202 },
+					{ "time": 1.0333, "x": 1.045, "y": 0.99, "curve": "stepped" },
+					{ "time": 1.0667, "x": 0.9, "y": 1.202 },
+					{ "time": 1.1333, "x": 1.045, "y": 0.99, "curve": "stepped" },
+					{ "time": 1.1667, "x": 0.9, "y": 1.202 },
+					{ "time": 1.2333, "x": 1.045, "y": 0.99, "curve": "stepped" },
+					{ "time": 1.2667, "x": 0.9, "y": 1.202 },
+					{ "time": 1.3333, "x": 1.045, "y": 0.99 }
+				]
+			},
+			"muzzle3 free": {
+				"rotate": [
+					{ "time": 0.8333, "angle": 40.51, "curve": "stepped" },
+					{ "time": 0.9333, "angle": -63.06, "curve": "stepped" },
+					{ "time": 1.0333, "angle": 126.83, "curve": "stepped" },
+					{ "time": 1.1333, "angle": 125.37, "curve": "stepped" },
+					{ "time": 1.2333, "angle": -136.88, "curve": "stepped" },
+					{ "time": 1.3333, "angle": -36.08 }
+				],
+				"translate": [
+					{ "time": 0.8333, "x": 255.43, "y": 424.36, "curve": "stepped" },
+					{ "time": 0.9333, "x": 139.51, "y": 153.5, "curve": "stepped" },
+					{ "time": 1.0333, "x": -158.92, "y": 533.3, "curve": "stepped" },
+					{ "time": 1.1333, "x": 2.6, "y": 646.64, "curve": "stepped" },
+					{ "time": 1.2333, "x": -42.47, "y": 167.46, "curve": "stepped" },
+					{ "time": 1.3333, "x": 322.45, "y": 254.08 }
+				],
+				"scale": [
+					{ "time": 0.8333, "x": 0.9, "y": 1.202 },
+					{ "time": 0.9, "x": 1.045, "y": 0.99, "curve": "stepped" },
+					{ "time": 0.9333, "x": 0.9, "y": 1.202 },
+					{ "time": 1, "x": 1.045, "y": 0.99, "curve": "stepped" },
+					{ "time": 1.0333, "x": 0.9, "y": 1.202 },
+					{ "time": 1.1, "x": 1.045, "y": 0.99, "curve": "stepped" },
+					{ "time": 1.1333, "x": 0.9, "y": 1.202 },
+					{ "time": 1.2, "x": 1.045, "y": 0.99, "curve": "stepped" },
+					{ "time": 1.2333, "x": 0.9, "y": 1.202 },
+					{ "time": 1.3, "x": 1.045, "y": 0.99, "curve": "stepped" },
+					{ "time": 1.3333, "x": 0.9, "y": 1.202 },
+					{ "time": 1.4, "x": 1.045, "y": 0.99, "curve": "stepped" },
+					{ "time": 1.4333, "x": 1, "y": 1 }
+				]
+			},
+			"gun rotation": {
+				"rotate": [
+					{ "time": 0.7, "angle": 0 },
+					{ "time": 0.7667, "angle": -120 },
+					{ "time": 0.8333, "angle": 120 },
+					{ "time": 0.9, "angle": 0 },
+					{ "time": 0.9667, "angle": -120 },
+					{ "time": 1.0333, "angle": 120 },
+					{ "time": 1.1, "angle": 0 },
+					{ "time": 1.1667, "angle": -120 },
+					{ "time": 1.2333, "angle": 120 },
+					{ "time": 1.3, "angle": 0 },
+					{ "time": 1.3667, "angle": -120 },
+					{ "time": 1.4333, "angle": 120 },
+					{ "time": 1.5, "angle": 0 },
+					{ "time": 1.5667, "angle": -120 },
+					{ "time": 1.6333, "angle": 120 },
+					{ "time": 1.7, "angle": 0 }
 				]
 			}
 		},
@@ -1960,6 +2123,24 @@
 				{ "time": 1.6333 },
 				{ "time": 1.6667, "rotateMix": 0, "translateMix": 0, "scaleMix": 0, "shearMix": 0, "curve": "stepped" },
 				{ "time": 2.5333, "rotateMix": 0, "translateMix": 0, "scaleMix": 0, "shearMix": 0 }
+			],
+			"gun2 rotation": [
+				{ "time": 0.6333, "rotateMix": 0, "translateMix": 0, "scaleMix": 0, "shearMix": 0 },
+				{ "time": 0.7333, "translateMix": 0, "scaleMix": 0, "shearMix": 0, "curve": "stepped" },
+				{ "time": 1.4667, "translateMix": 0, "scaleMix": 0, "shearMix": 0 },
+				{ "time": 1.6, "rotateMix": 0, "translateMix": 0, "scaleMix": 0, "shearMix": 0 }
+			],
+			"gun3 rotation": [
+				{ "time": 0.6333, "rotateMix": 0, "translateMix": 0, "scaleMix": 0, "shearMix": 0 },
+				{ "time": 0.7333, "translateMix": 0, "scaleMix": 0, "shearMix": 0, "curve": "stepped" },
+				{ "time": 1.4667, "translateMix": 0, "scaleMix": 0, "shearMix": 0 },
+				{ "time": 1.6, "rotateMix": 0, "translateMix": 0, "scaleMix": 0, "shearMix": 0 }
+			],
+			"gun4 rotation": [
+				{ "time": 0.6333, "rotateMix": 0, "translateMix": 0, "scaleMix": 0, "shearMix": 0 },
+				{ "time": 0.7333, "translateMix": 0, "scaleMix": 0, "shearMix": 0, "curve": "stepped" },
+				{ "time": 1.4667, "translateMix": 0, "scaleMix": 0, "shearMix": 0 },
+				{ "time": 1.6, "rotateMix": 0, "translateMix": 0, "scaleMix": 0, "shearMix": 0 }
 			]
 		},
 		"paths": {
@@ -2673,6 +2854,305 @@
 			}
 		}
 	},
+	"idle footplant": {
+		"slots": {
+			"front_fist": {
+				"attachment": [
+					{ "time": 0, "name": "front_fist_open" }
+				]
+			}
+		},
+		"bones": {
+			"torso": {
+				"rotate": [
+					{
+						"time": 0,
+						"angle": -5.62,
+						"curve": [ 0.25, 0, 0.75, 1 ]
+					},
+					{
+						"time": 0.8333,
+						"angle": -9.66,
+						"curve": [ 0.25, 0, 0.75, 1 ]
+					},
+					{ "time": 1.6667, "angle": -5.62 }
+				],
+				"translate": [
+					{ "time": 0, "x": -6.5, "y": 0 }
+				]
+			},
+			"front_upper_arm": {
+				"rotate": [
+					{
+						"time": 0,
+						"angle": -59.85,
+						"curve": [ 0.493, 0, 0.75, 1 ]
+					},
+					{
+						"time": 0.6667,
+						"angle": -54.32,
+						"curve": [ 0.324, 0.11, 0.75, 1 ]
+					},
+					{ "time": 1.6667, "angle": -59.85 }
+				],
+				"translate": [
+					{ "time": 0, "x": -7.12, "y": -8.24 },
+					{ "time": 0.6667, "x": -6.32, "y": -8.31 },
+					{ "time": 1.6667, "x": -7.12, "y": -8.24 }
+				]
+			},
+			"rear_upper_arm": {
+				"rotate": [
+					{
+						"time": 0,
+						"angle": 62.42,
+						"curve": [ 0.504, 0.02, 0.75, 1 ]
+					},
+					{
+						"time": 0.7333,
+						"angle": 43.83,
+						"curve": [ 0.25, 0, 0.75, 1 ]
+					},
+					{ "time": 1.6667, "angle": 62.42 }
+				],
+				"translate": [
+					{ "time": 0, "x": -1.83, "y": -16.79 },
+					{ "time": 0.6667, "x": 0.35, "y": -15.23 },
+					{ "time": 1.6667, "x": -1.83, "y": -16.79 }
+				]
+			},
+			"neck": {
+				"rotate": [
+					{ "time": 0, "angle": 0 },
+					{ "time": 0.6667, "angle": 2.39 },
+					{ "time": 1.6667, "angle": 0 }
+				]
+			},
+			"front_thigh": {
+				"rotate": [
+					{
+						"time": 0,
+						"angle": 0.65,
+						"curve": [ 0.236, 0.01, 0.559, 0.99 ]
+					},
+					{
+						"time": 0.6667,
+						"angle": -4.34,
+						"curve": [ 0.595, 0, 0.653, 1 ]
+					},
+					{ "time": 1.6667, "angle": 0.65 }
+				],
+				"translate": [
+					{ "time": 0, "x": -13.4, "y": 6.7 }
+				],
+				"scale": [
+					{
+						"time": 0,
+						"x": 0.897,
+						"y": 1,
+						"curve": [ 0.236, 0.01, 0.559, 0.99 ]
+					},
+					{
+						"time": 0.6667,
+						"x": 0.826,
+						"y": 1,
+						"curve": [ 0.595, 0, 0.653, 1 ]
+					},
+					{ "time": 1.6667, "x": 0.897, "y": 1 }
+				]
+			},
+			"front_shin": {
+				"rotate": [
+					{ "time": 0, "angle": -19.29 }
+				],
+				"scale": [
+					{
+						"time": 0,
+						"x": 1,
+						"y": 1,
+						"curve": [ 0.236, 0.01, 0.559, 0.99 ]
+					},
+					{
+						"time": 0.6667,
+						"x": 0.994,
+						"y": 1,
+						"curve": [ 0.595, 0, 0.653, 1 ]
+					},
+					{ "time": 1.6667, "x": 1, "y": 1 }
+				]
+			},
+			"rear_thigh": {
+				"rotate": [
+					{
+						"time": 0,
+						"angle": 30.51,
+						"curve": [ 0.236, 0.01, 0.559, 0.99 ]
+					},
+					{
+						"time": 0.6667,
+						"angle": 40.15,
+						"curve": [ 0.595, 0, 0.653, 1 ]
+					},
+					{ "time": 1.6667, "angle": 30.51 }
+				]
+			},
+			"rear_shin": {
+				"rotate": [
+					{
+						"time": 0,
+						"angle": -23.83,
+						"curve": [ 0.236, 0.01, 0.559, 0.99 ]
+					},
+					{
+						"time": 0.6667,
+						"angle": -43.77,
+						"curve": [ 0.595, 0, 0.653, 1 ]
+					},
+					{ "time": 1.6667, "angle": -23.83 }
+				]
+			},
+			"front_foot": {
+				"rotate": [
+					{
+						"time": 0,
+						"angle": 5.14,
+						"curve": [ 0.236, 0.01, 0.559, 0.99 ]
+					},
+					{
+						"time": 0.6667,
+						"angle": 10.05,
+						"curve": [ 0.595, 0, 0.653, 1 ]
+					},
+					{ "time": 1.6667, "angle": 5.14 }
+				],
+				"scale": [
+					{ "time": 0, "x": 0.755, "y": 1.31 }
+				]
+			},
+			"rear_foot": {
+				"rotate": [
+					{
+						"time": 0,
+						"angle": -7.34,
+						"curve": [ 0.236, 0.01, 0.559, 0.99 ]
+					},
+					{
+						"time": 0.6667,
+						"angle": 3.85,
+						"curve": [ 0.595, 0, 0.653, 1 ]
+					},
+					{ "time": 1.6667, "angle": -7.34 }
+				]
+			},
+			"rear_bracer": {
+				"rotate": [
+					{
+						"time": 0,
+						"angle": -17.16,
+						"curve": [ 0.25, 0, 0.75, 1 ]
+					},
+					{
+						"time": 0.6667,
+						"angle": 12.53,
+						"curve": [ 0.25, 0, 0.75, 1 ]
+					},
+					{ "time": 1.6667, "angle": -17.16 }
+				]
+			},
+			"head": {
+				"rotate": [
+					{
+						"time": 0,
+						"angle": -5.51,
+						"curve": [ 0.25, 0, 0.75, 1 ]
+					},
+					{
+						"time": 0.6667,
+						"angle": -3.12,
+						"curve": [ 0.25, 0, 0.75, 1 ]
+					},
+					{ "time": 1.6667, "angle": -5.51 }
+				]
+			},
+			"front_bracer": {
+				"rotate": [
+					{
+						"time": 0,
+						"angle": 45.47,
+						"curve": [ 0.493, 0, 0.75, 1 ]
+					},
+					{
+						"time": 0.6667,
+						"angle": 41.34,
+						"curve": [ 0.321, 0.11, 0.736, 0.92 ]
+					},
+					{ "time": 1.6667, "angle": 45.47 }
+				]
+			},
+			"gun": {
+				"rotate": [
+					{
+						"time": 0,
+						"angle": 0,
+						"curve": [ 0.25, 0, 0.75, 1 ]
+					},
+					{
+						"time": 0.6667,
+						"angle": -15.59,
+						"curve": [ 0.733, 0, 0.77, 0.99 ]
+					},
+					{ "time": 1.6667, "angle": 0 }
+				]
+			},
+			"front_fist": {
+				"rotate": [
+					{
+						"time": 0,
+						"angle": -6.85,
+						"curve": [ 0.493, 0, 0.75, 1 ]
+					},
+					{
+						"time": 0.6667,
+						"angle": -14.63,
+						"curve": [ 0.324, 0.11, 0.75, 1 ]
+					},
+					{ "time": 1.6667, "angle": -6.85 }
+				],
+				"scale": [
+					{
+						"time": 0,
+						"x": 1,
+						"y": 1,
+						"curve": [ 0.25, 0, 0.75, 1 ]
+					},
+					{
+						"time": 0.6667,
+						"x": 0.8,
+						"y": 1.101,
+						"curve": [ 0.25, 0, 0.75, 1 ]
+					},
+					{ "time": 1.6667, "x": 1, "y": 1 }
+				]
+			},
+			"hip": {
+				"translate": [
+					{
+						"time": 0,
+						"x": -6.64,
+						"y": -23.02,
+						"curve": [ 0.236, 0.01, 0.559, 0.99 ]
+					},
+					{
+						"time": 0.6667,
+						"x": 6.28,
+						"y": -35.01,
+						"curve": [ 0.595, 0, 0.653, 1 ]
+					},
+					{ "time": 1.6667, "x": -6.64, "y": -23.02 }
+				]
+			}
+		}
+	},
 	"idlebag": {
 		"slots": {
 			"front_fist": {
@@ -3854,6 +4334,70 @@
 			}
 		}
 	},
+	"one frame": {
+		"bones": {
+			"torso": {
+				"rotate": [
+					{ "time": 0, "angle": -40.91 }
+				]
+			},
+			"front_upper_arm": {
+				"rotate": [
+					{ "time": 0, "angle": -82.02 }
+				]
+			},
+			"front_bracer": {
+				"rotate": [
+					{ "time": 0, "angle": -20.01 }
+				]
+			},
+			"front_thigh": {
+				"rotate": [
+					{ "time": 0, "angle": -52.83 }
+				]
+			},
+			"front_shin": {
+				"rotate": [
+					{ "time": 0, "angle": 1.08 }
+				]
+			},
+			"rear_upper_arm": {
+				"rotate": [
+					{ "time": 0, "angle": 79.86 }
+				]
+			},
+			"rear_bracer": {
+				"rotate": [
+					{ "time": 0, "angle": -21.97 }
+				]
+			},
+			"gun": {
+				"rotate": [
+					{ "time": 0, "angle": 22.35 }
+				]
+			},
+			"neck": {
+				"rotate": [
+					{ "time": 0, "angle": 0.84 }
+				]
+			},
+			"head": {
+				"rotate": [
+					{ "time": 0, "angle": -25.39 }
+				]
+			},
+			"rear_thigh": {
+				"rotate": [
+					{ "time": 0, "angle": 40.87 }
+				]
+			},
+			"rear_shin": {
+				"rotate": [
+					{ "time": 0, "angle": 23.61 }
+				]
+			}
+		}
+	},
 	"pole": {
 		"slots": {
 			"eye": {
@@ -5045,6 +5589,23 @@
 					{ "time": 0.0333, "name": "muzzle" },
 					{ "time": 0.1667, "name": null }
 				]
+			},
+			"muzzle2": {
+				"color": [
+					{
+						"time": 0.0225,
+						"color": "ffad76ff",
+						"curve": [ 0.175, 0.43, 0.534, 0.75 ]
+					},
+					{
+						"time": 0.0333,
+						"color": "ffc197ff",
+						"curve": [ 0.286, 0.99, 0.774, 1 ]
+					},
+					{ "time": 0.0667, "color": "ffffffff" },
+					{ "time": 0.1, "color": "ffbc8fee" },
+					{ "time": 0.1667, "color": "ffa18000" }
+				]
 			}
 		},
 		"bones": {

+ 1 - 1
spine-unity/Assets/Spine Examples/Spine/spineboy-unity/spineboy-unity_SkeletonData.asset

@@ -30,5 +30,5 @@ MonoBehaviour:
   - 0
   - 0.05
   - 0.05
-  defaultMix: 0.1
+  defaultMix: 0
   controller: {fileID: 0}

+ 2 - 2
spine-unity/Assets/Spine Examples/Spine/spineboy-unity/spineboy.png.meta

@@ -1,6 +1,6 @@
 fileFormatVersion: 2
 guid: 49bb65eefe08e424bbf7a38bc98ec638
-timeCreated: 1505356401
+timeCreated: 1528393443
 licenseType: Free
 TextureImporter:
   fileIDToRecycleName:
@@ -61,7 +61,7 @@ TextureImporter:
   nPOTScale: 0
   lightmap: 0
   compressionQuality: 50
-  spriteMode: 2
+  spriteMode: 0
   spriteExtrude: 1
   spriteMeshType: 1
   alignment: 0

BIN
spine-unity/Assets/Spine Examples/Spine/spineboy-unity/spineboy_Atlas.asset


BIN
spine-unity/Assets/Spine Examples/Spine/spineboy-unity/spineboy_Material.mat


+ 2 - 2
spine-unity/Assets/Spine/Editor/spine-unity/Editor/SpineEditorUtilities.cs

@@ -1258,8 +1258,8 @@ namespace Spine.Unity.Editor {
 
 		#region SkeletonDataFileValidator
 		internal static class SkeletonDataFileValidator {
-			static int[][] compatibleBinaryVersions = { new[] { 3, 6, 0 }, new[] { 3, 5, 0 } };
-			static int[][] compatibleJsonVersions = { new[] { 3, 6, 0 }, new[] { 3, 7, 0 }, new[] { 3, 5, 0 } };
+			static readonly int[][] compatibleBinaryVersions = { new[] { 3, 7, 0 } };
+			static readonly int[][] compatibleJsonVersions = { new[] { 3, 7, 0 }, new[] { 3, 6, 0 }, new[] { 3, 5, 0 } };
 			//static bool isFixVersionRequired = false;
 
 			public static bool CheckForValidSkeletonData (string skeletonJSONPath) {

+ 3 - 24
spine-unity/README.md

@@ -14,7 +14,7 @@ The Spine Runtimes are developed with the intent to be used with data exported f
 
 ## Spine version
 
-spine-unity works with data exported from Spine 3.6.xx.
+spine-unity works with data exported from Spine 3.7.xx.
 
 spine-unity supports all Spine features.
 
@@ -24,33 +24,13 @@ Unity's physics components do not support dynamically assigned vertices so they
 
 A Spine skeleton GameObject (a GameObject with a SkeletonAnimation component on it) can be used throughout Unity like any other GameObject. It renders through `MeshRenderer`.
 
-`SkeletonUtility` allows other GameObjects to interact with the Spine skeleton, to control bones in the skeleton, be controlled by the skeleton, attach colliders, etc.
-
-For advanced uses and specific optimization cases, Spine skeletons can be "baked" into native Unity animation assets. Since Unity's animation feature-set does not overlap with Spine's perfectly, baked assets have many limitations and removed features. For most uses, baking is not necessary.
-
-The [Spine Unity Features Tutorial](http://esotericsoftware.com/forum/Unity-Feature-Tutorials-4839) forum thread has many videos on how to use spine-unity.
-
-For more documentation, see [spine-unity Documentation](http://esotericsoftware.com/spine-unity).
+See [spine-unity Documentation](http://esotericsoftware.com/spine-unity).
 
 ## Quick installation
 
 Download the latest Spine-Unity unitypackage from the download page: http://esotericsoftware.com/spine-unity-download/
 
-In the `Assets/Examples/Scenes` folder you will find many example scenes that demonstrate various spine-unity features.
-
-## Manual installation
-
-You can also choose to setup and run from the Git files:
-
-1. Download the Spine Runtimes source using [git](https://help.github.com/articles/set-up-git) or by downloading it as a zip via the download button above.
-2. spine-unity requires both `spine-csharp` and `spine-unity`.
-	- Copy the contents of `spine-csharp/src` to `Assets/spine-csharp` in your Unity project directory.
-	- Copy the contents of `spine-unity/Assets` to `Assets` in your Unity project directory. Including `Gizmos` and `spine-unity` and `Examples` if you want them.
-
-> - `Gizmos` is a [special folder](http://docs.unity3d.com/Manual/SpecialFolders.html) in Unity. It needs to be at the root of your assets folder to function correctly. (ie. `Assets/Gizmos`
-- `spine-csharp` and `spine-unity` can be placed in any subfolder you want.
-
-For more information on importing the runtime into your Unity project, see the documentation sections on  [installing](http://esotericsoftware.com/spine-unity#Installing) and [updating](http://esotericsoftware.com/spine-unity#Updating-Your-Projects-SpineUnity-Runtime),
+In the `Assets/Spine Examples/Scenes` folder you will find many example scenes that demonstrate various spine-unity features.
 
 ----------
 
@@ -64,5 +44,4 @@ For more information on importing the runtime into your Unity project, see the d
 
 - This slightly outdated [spine-unity tutorial video](http://www.youtube.com/watch?v=x1umSQulghA) may still be useful.
 - Atlas images should use **Premultiplied Alpha** when using the shaders that come with spine-unity (`Spine/Skeleton` or `Spine/SkeletonLit`).
-- Texture sizes: Unity scales large images down by default if they exceed 1024x1024. This can cause atlas coordinates to be incorrect. To fix this, make sure to set import settings in the Inspector for any large atlas image you have so Unity does not scale it down.
 - Texture artifacts from compression: Unity's 2D project defaults import new images added to the project with the Texture Type "Sprite". This can cause artifacts when using the `Spine/Skeleton` shader. To avoid these artifacts, make sure the Texture Type is set to "Texture". spine-unity's automatic import will attempt to apply these settings but in the process of updating your textures, these settings may be reverted.

Bu fark içinde çok fazla dosya değişikliği olduğu için bazı dosyalar gösterilmiyor