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

This commit is contained in:
badlogic 2018-06-08 13:44:22 +02:00
commit c2308a6794
79 changed files with 1887 additions and 4694 deletions

View File

@ -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`.

View File

@ -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.

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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);
}

View File

@ -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;

View File

@ -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;
}
}
}

View File

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

View File

@ -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.

View File

@ -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;
}
}

View File

@ -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;
}
}

View File

@ -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>();

View File

@ -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();

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -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

View File

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

View File

@ -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

View File

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

View File

@ -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

View File

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

File diff suppressed because it is too large Load Diff

View File

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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 126 KiB

View File

@ -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:

View File

@ -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}

View File

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

View File

@ -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: []

View File

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

View File

@ -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}

View File

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

View File

@ -1,5 +1,5 @@
{
"skeleton": { "hash": "mauCmoWXsF/sxcWz9xpFeFD3IWE", "spine": "3.6.52", "width": 318.76, "height": 333.69, "images": "./images/" },
"skeleton": { "hash": "cZE5xSgB1kk9tBYY7DbJg04k4oo", "spine": "3.6.52", "width": 318.76, "height": 333.69, "images": "./images/" },
"bones": [
{ "name": "root" },
{ "name": "hip", "parent": "root", "y": 94.89 },
@ -113,7 +113,7 @@
"cape": {
"type": "mesh",
"uvs": [ 0.12981, 0.04146, 0.25, 0, 0.5, 0, 0.75, 0, 1, 0, 0.94074, 0.25, 0.90405, 0.5, 0.9097, 0.75259, 0.82337, 1, 0.55644, 1, 0.28104, 1, 0, 1, 0, 0.75518, 0.02822, 0.5, 0.05926, 0.25, 0.25, 0.25, 0.25, 0.5, 0.25, 0.75, 0.5, 0.25, 0.5, 0.5, 0.5, 0.75, 0.75, 0.25, 0.75, 0.5, 0.75, 0.75 ],
"triangles": [ 20, 22, 23, 23, 6, 7, 12, 13, 17, 11, 12, 17, 10, 17, 20, 11, 17, 10, 9, 20, 23, 10, 20, 9, 8, 23, 7, 9, 23, 8, 13, 16, 17, 17, 19, 20, 14, 15, 16, 13, 14, 16, 16, 18, 19, 19, 21, 22, 17, 16, 19, 20, 19, 22, 23, 22, 6, 0, 1, 15, 14, 0, 15, 15, 2, 18, 18, 3, 21, 16, 15, 18, 19, 18, 21, 6, 22, 21, 5, 6, 21, 15, 1, 2, 18, 2, 3, 5, 21, 3, 4, 5, 3 ],
"triangles": [ 9, 23, 8, 8, 23, 7, 10, 20, 9, 9, 20, 23, 11, 17, 10, 10, 17, 20, 11, 12, 17, 12, 13, 17, 23, 6, 7, 20, 22, 23, 17, 19, 20, 13, 16, 17, 23, 22, 6, 20, 19, 22, 17, 16, 19, 19, 21, 22, 16, 18, 19, 13, 14, 16, 14, 15, 16, 5, 6, 21, 6, 22, 21, 19, 18, 21, 16, 15, 18, 18, 3, 21, 15, 2, 18, 14, 0, 15, 0, 1, 15, 4, 5, 3, 5, 21, 3, 18, 2, 3, 15, 1, 2 ],
"vertices": [ 2, 8, -71.4, 10.27, 0.46605, 9, -9.14, -72.4, 0.53395, 2, 8, -47.49, 12.58, 0.68358, 9, -16.74, -49.61, 0.31642, 1, 8, -10.99, 12.58, 1, 1, 8, 25.51, 12.58, 1, 1, 8, 62.01, 12.58, 1, 5, 8, 62.01, -27.17, 0.46828, 9, -2.5, 66, 0.34919, 10, -29.05, 67.27, 0.138, 11, -57.05, 68.87, 0.03803, 12, -83.31, 76.26, 0.0065, 5, 8, 62.01, -66.92, 0.10394, 9, 36.24, 74.9, 0.24994, 10, 10.02, 74.62, 0.32222, 11, -17.78, 74.99, 0.22167, 12, -43.65, 78.98, 0.10223, 5, 8, 62.01, -106.67, 0.00722, 9, 74.98, 83.79, 0.07037, 10, 49.08, 81.98, 0.23465, 11, 21.5, 81.12, 0.35567, 12, -3.99, 81.7, 0.3321, 4, 9, 121.89, 57.11, 6.9E-4, 10, 94.9, 53.47, 0.03735, 11, 66.4, 51.18, 0.18594, 12, 38.16, 48, 0.77603, 3, 10, 101.65, 17.6, 1.9E-4, 11, 72.02, 15.12, 0.00661, 12, 40.66, 11.59, 0.9932, 2, 11, 77.65, -20.95, 0.05302, 12, 43.16, -24.83, 0.94698, 3, 10, 115.17, -54.14, 0.00351, 11, 83.27, -57.01, 0.13965, 12, 45.65, -61.24, 0.85684, 4, 9, 107.66, -58.5, 0.02404, 10, 76.1, -61.49, 0.08883, 11, 44, -63.14, 0.31703, 12, 5.99, -63.96, 0.5701, 5, 8, -83.99, -66.92, 0.00249, 9, 68.91, -67.4, 0.18233, 10, 37.04, -68.85, 0.31987, 11, 4.72, -69.26, 0.35135, 12, -33.66, -66.68, 0.14396, 5, 8, -80.24, -27.03, 0.05345, 9, 29.2, -72.66, 0.47788, 10, -2.85, -72.54, 0.33484, 11, -35.26, -71.7, 0.12468, 12, -73.71, -65.66, 0.00914, 5, 8, -47.49, -27.17, 0.04861, 9, 22, -40.72, 0.52446, 10, -8.78, -40.34, 0.34709, 11, -40.18, -39.32, 0.07736, 12, -75.82, -32.98, 0.00247, 4, 9, 60.75, -31.82, 0.12715, 10, 30.28, -32.98, 0.45018, 11, -0.9, -33.2, 0.37755, 12, -36.16, -30.26, 0.04512, 4, 9, 99.49, -22.93, 0.00853, 10, 69.35, -25.62, 0.04332, 11, 38.37, -27.07, 0.37472, 12, 3.5, -27.54, 0.57343, 1, 9, 13.84, -5.15, 1, 2, 10, 23.53, 2.89, 0.74117, 11, -6.53, 2.87, 0.25883, 3, 10, 62.59, 10.24, 0.01793, 11, 32.75, 8.99, 0.48072, 12, 1, 8.87, 0.50135, 5, 8, 25.51, -27.17, 0.37653, 9, 5.67, 30.43, 0.49808, 10, -22.29, 31.4, 0.10749, 11, -51.43, 32.8, 0.01629, 12, -80.81, 39.85, 0.00161, 5, 8, 25.51, -66.92, 0.05159, 9, 44.41, 39.32, 0.27361, 10, 16.77, 38.76, 0.45122, 11, -12.15, 38.93, 0.18087, 12, -41.15, 42.57, 0.04271, 5, 8, 25.51, -106.67, 1.7E-4, 9, 83.15, 48.22, 0.01709, 10, 55.83, 46.11, 0.12239, 11, 27.12, 45.06, 0.35747, 12, -1.49, 45.29, 0.50288 ],
"hull": 15,
"edges": [ 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 16, 18, 18, 20, 20, 22, 22, 24, 24, 26, 26, 28, 28, 0, 14, 16 ],
@ -930,24 +930,396 @@
}
}
},
"fall": {
"crouch-from fall": {
"bones": {
"right-ground": {
"upper-arm2": {
"rotate": [
{ "time": 0, "angle": 22.23 },
{ "time": 0.0333, "angle": 6.7 },
{ "time": 0.5333, "angle": 30.8 },
{ "time": 1.0333, "angle": 38.04 }
]
},
"body": {
"rotate": [
{ "time": 0, "angle": 2.71 },
{
"time": 0.0667,
"angle": -20.15,
"curve": [ 0.25, 0, 0.75, 1 ]
},
{
"time": 0.5333,
"angle": -11.54,
"curve": [ 0.25, 0, 0.75, 1 ]
},
{ "time": 1.0333, "angle": -15.51 }
],
"translate": [
{ "time": 0, "x": 13.16, "y": 7.94 },
{ "time": 0.3333, "x": 13.83, "y": 12.64 },
{ "time": 0.6, "x": 13.56, "y": 16.8 },
{ "time": 0.8, "x": 10.68, "y": 4.32 },
{ "time": 1, "x": 13.16, "y": 7.94 }
{ "time": 0, "x": -0.82, "y": -2.69 },
{
"time": 0.0333,
"x": -1.64,
"y": -5.39,
"curve": [ 0.284, 0, 0.625, 0.38 ]
},
{
"time": 0.1333,
"x": -1.37,
"y": -10.93,
"curve": [ 0.32, 0.29, 0.757, 1 ]
},
{
"time": 0.5333,
"x": -2.21,
"y": -0.53,
"curve": [ 0.25, 0, 0.75, 1 ]
},
{ "time": 1.0333, "x": -0.41, "y": -2.33 }
]
},
"head": {
"rotate": [
{ "time": 0, "angle": 28.81 },
{ "time": 0.1, "angle": -4.21 },
{ "time": 0.2667, "angle": 3.25 },
{ "time": 1.0333, "angle": 8.73 }
],
"translate": [
{ "time": 0, "x": -2.21, "y": -1.43 },
{
"time": 0.0333,
"x": -4.43,
"y": -2.86,
"curve": [ 0.34, 0.38, 0.673, 0.71 ]
},
{
"time": 0.1667,
"x": -11.35,
"y": -3.13,
"curve": [ 0.356, 0.65, 0.691, 1 ]
},
{
"time": 0.4,
"x": -4.85,
"y": -3.06,
"curve": [ 0.25, 0, 0.75, 1 ]
},
{
"time": 0.8,
"x": -2.36,
"y": -1.86,
"curve": [ 0.36, 0.44, 0.702, 0.8 ]
},
{ "time": 1.0333, "x": -4.43, "y": -2.86 }
],
"scale": [
{ "time": 0, "x": 1, "y": 1.139 },
{ "time": 0.0667, "x": 1.038, "y": 1.037 },
{ "time": 0.2, "x": 1, "y": 1 }
]
},
"hip": {
"translate": [
{ "time": 0, "x": -5.61, "y": -21.01 },
{ "time": 0.0333, "x": -11.23, "y": -42.01 }
]
},
"mantles": {
"rotate": [
{ "time": 0, "angle": 4.52 },
{ "time": 0.0333, "angle": 9.05 },
{ "time": 0.5333, "angle": 7.13 },
{ "time": 1.0333, "angle": 9.05 }
],
"translate": [
{ "time": 0, "x": -0.05, "y": 0 },
{ "time": 0.0333, "x": -0.1, "y": 0 }
]
},
"left-ground": {
"translate": [
{ "time": 0, "x": 35.34, "y": 4.15 },
{ "time": 0.2, "x": 35.34, "y": 5.49 },
{ "time": 0.4667, "x": 35.34, "y": 2.36 },
{ "time": 0.6333, "x": 35.34, "y": 4.26 },
{ "time": 1, "x": 35.34, "y": 4.15 }
{ "time": 0, "x": 18.67, "y": 8.42 },
{ "time": 0.1333, "x": -29.07, "y": 1.18 }
]
},
"right-ground": {
"translate": [
{ "time": 0, "x": 15.37, "y": 2.29 },
{ "time": 0.0333, "x": 16.23, "y": 0 }
]
},
"upper-arm1": {
"rotate": [
{ "time": 0, "angle": -40.37 },
{ "time": 0.0333, "angle": -55.04 },
{ "time": 0.1, "angle": -26.73 },
{ "time": 0.2333, "angle": 23.12 },
{ "time": 0.3667, "angle": -11.1 },
{ "time": 1.0333, "angle": -5.42 }
],
"translate": [
{ "time": 0, "x": -3.47, "y": 2.93 },
{ "time": 0.0333, "x": -6.95, "y": 5.86 }
]
},
"forearm1": {
"rotate": [
{ "time": 0, "angle": 36.8 },
{ "time": 0.0333, "angle": 47.41 },
{ "time": 0.1333, "angle": -6.15 },
{ "time": 0.3333, "angle": 39.73 },
{ "time": 0.6333, "angle": 32.07 },
{ "time": 1.0333, "angle": 25.39 }
]
},
"forearm2": {
"rotate": [
{ "time": 0, "angle": 12.02 },
{ "time": 0.0333, "angle": 11.73 },
{ "time": 0.2333, "angle": 26.16 },
{ "time": 1.0333, "angle": 18.6 }
]
},
"thigh2": {
"rotate": [
{ "time": 0, "angle": 60.45 },
{ "time": 0.0333, "angle": 0 }
],
"translate": [
{ "time": 0, "x": -1.38, "y": 0 },
{ "time": 0.0333, "x": -2.75, "y": 0 }
]
},
"thigh1": {
"rotate": [
{ "time": 0, "angle": 83.27 },
{ "time": 0.0333, "angle": 0 }
],
"translate": [
{ "time": 0, "x": -0.46, "y": 3.34 },
{ "time": 0.0333, "x": -0.93, "y": 6.68 }
]
},
"foot1": {
"rotate": [
{ "time": 0, "angle": -35.12 },
{ "time": 0.0333, "angle": 270.13 }
]
},
"foot2": {
"rotate": [
{ "time": 0, "angle": 19.58 },
{ "time": 0.0333, "angle": 0 }
]
},
"hand2": {
"rotate": [
{ "time": 0, "angle": 37.56 },
{
"time": 0.0333,
"angle": 40.84,
"curve": [ 0, 0.89, 0.75, 1 ]
},
{
"time": 0.1667,
"angle": -28.41,
"curve": [ 0.25, 0, 0.467, 1 ]
},
{ "time": 1.0333, "angle": -13.4 }
]
},
"hand1": {
"rotate": [
{ "time": 0, "angle": -4.65 },
{ "time": 0.0333, "angle": -9.3 },
{ "time": 0.1333, "angle": -36.61 },
{ "time": 0.3333, "angle": 38.83 },
{ "time": 0.6333, "angle": -1.97 },
{ "time": 1.0333, "angle": -9.3 }
]
},
"shin2": {
"rotate": [
{ "time": 0, "angle": -66.41 },
{ "time": 0.0333, "angle": 0 }
]
},
"shin1": {
"rotate": [
{ "time": 0, "angle": -110.05 },
{ "time": 0.0333, "angle": 0 }
]
},
"right-ankle": {
"translate": [
{ "time": 0, "x": 0, "y": -2.46 },
{ "time": 0.0333, "x": 0, "y": -4.93 }
]
},
"left-ankle": {
"translate": [
{ "time": 0, "x": 0, "y": -6.11 },
{ "time": 0.0333, "x": 0, "y": -12.23 }
]
},
"root": {
"scale": [
{ "time": 0, "x": 1, "y": 0.97 },
{ "time": 0.0333, "x": 1, "y": 0.94 },
{ "time": 0.1667, "x": 1, "y": 1 }
]
}
},
"deform": {
"default": {
"body": {
"body": [
{ "time": 0 },
{
"time": 0.0333,
"offset": 12,
"vertices": [ 1.29364, 5.08191, -0.08311, 2.25329, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.11549, 2.64195, -0.42296, 4.54772, 0, 0, -0.42296, 4.54772, -0.42296, 4.54772, -0.11549, 2.64195, -0.11549, 2.64195, -0.08311, 2.25329, -0.42296, 4.54772 ]
},
{
"time": 0.0667,
"offset": 12,
"vertices": [ 2.58728, 10.16383, -0.16621, 4.50658, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.23098, 5.2839, -0.84592, 9.09544, 0, 0, -0.84592, 9.09544, -0.84592, 9.09544, -0.23098, 5.2839, -0.23098, 5.2839, -0.16621, 4.50658, -0.84592, 9.09544 ],
"curve": [ 0.25, 0, 0.75, 1 ]
},
{
"time": 0.5667,
"offset": 8,
"vertices": [ -0.16332, -0.55323, 0.56806, -2.69373, 1.75761, 3.93866, -1.93256, 0.76876, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.97895, 1.32549, -0.70128, 3.17348, 0, 0, -0.70128, 3.17348, -0.70128, 3.17348, -1.97895, 1.32549, -1.97895, 1.32549, -1.93256, 0.76876, -0.70128, 3.17348 ],
"curve": [ 0.25, 0, 0.75, 1 ]
},
{
"time": 1.0667,
"offset": 12,
"vertices": [ 2.58728, 10.16383, -0.16621, 4.50658, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.23098, 5.2839, -0.84592, 9.09544, 0, 0, -0.84592, 9.09544, -0.84592, 9.09544, -0.23098, 5.2839, -0.23098, 5.2839, -0.16621, 4.50658, -0.84592, 9.09544 ]
}
]
},
"eyes": {
"eyes": [
{ "time": 0 },
{
"time": 0.0333,
"vertices": [ 1.93199, 0.30323, 3.80821, 0.16615, 4.34593, 0.21804, 4.8663, -0.1183, 4.68156, -0.14496, 4.34593, 0.21804, 3.80821, 0.16615, 1.74722, 0.27665 ]
},
{
"time": 0.0667,
"vertices": [ 3.86398, 0.60646, 7.61642, 0.3323, 8.69186, 0.43607, 9.73261, -0.23659, 9.36311, -0.28992, 8.69186, 0.43607, 7.61642, 0.3323, 3.49443, 0.5533 ],
"curve": [ 0.25, 0, 0.75, 1 ]
},
{
"time": 0.5667,
"vertices": [ 6.7696, 1.0625, 13.34377, 0.58218, 15.22793, 0.76399, 17.05129, -0.41451, 16.40394, -0.50793, 15.22793, 0.76399, 13.34377, 0.58218, 6.12216, 0.96938 ],
"curve": [ 0.587, -0.02, 0.75, 1 ]
},
{
"time": 1.0667,
"vertices": [ 3.86398, 0.60646, 7.61642, 0.3323, 8.69186, 0.43607, 9.73261, -0.23659, 9.36311, -0.28992, 8.69186, 0.43607, 7.61642, 0.3323, 3.49443, 0.5533 ]
}
]
},
"head": {
"head": [
{ "time": 0 },
{
"time": 0.0333,
"offset": 12,
"vertices": [ 0.6902, 0.02921, 0.46538, 0.01973, 0.32142, 0.39384, 1.35876, 0.44217, 0.61833, 0.21284, -0.79372, -0.03366, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3.33939, 0.07769, 1.28179, 0.05427, 2.08944, 0.05405, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.8324, 0.23252, 4.37797, 0.11393, 0.74541, -0.0461, 0.74541, -0.0461, 2.6105, 0.53705 ]
},
{
"time": 0.0667,
"offset": 12,
"vertices": [ 1.38039, 0.05842, 0.93076, 0.03947, 0.64285, 0.78767, 2.71751, 0.88435, 1.23665, 0.42568, -1.58744, -0.06731, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6.67879, 0.15537, 2.56357, 0.10853, 4.17887, 0.1081, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.6648, 0.46504, 8.75594, 0.22785, 1.49083, -0.09221, 1.49083, -0.09221, 5.221, 1.0741 ],
"curve": [ 0.25, 0, 0.75, 1 ]
},
{
"time": 0.5667,
"offset": 12,
"vertices": [ 2.41842, 0.10235, 1.63067, 0.06915, 1.12625, 1.37998, 9.63888, 1.16068, 2.16658, 0.74579, -2.78115, -0.11793, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11.70107, 0.27221, 4.49132, 0.19015, 7.32128, 0.18938, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7.79456, 0.42606, 15.34019, 0.39919, 6.02913, 0.32602, 6.02913, 0.32602, 9.14707, 1.88179 ],
"curve": [ 0.587, -0.02, 0.75, 1 ]
},
{
"time": 1.0667,
"offset": 12,
"vertices": [ 1.38039, 0.05842, 0.93076, 0.03947, 0.64285, 0.78767, 2.71751, 0.88435, 1.23665, 0.42568, -1.58744, -0.06731, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6.67879, 0.15537, 2.56357, 0.10853, 4.17887, 0.1081, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.6648, 0.46504, 8.75594, 0.22785, 1.49083, -0.09221, 1.49083, -0.09221, 5.221, 1.0741 ]
}
]
},
"mantles": {
"mantles": [
{ "time": 0 },
{
"time": 0.0333,
"offset": 2,
"vertices": [ -0.143, 1.1612, 1.56465, 2.6563, 0.06791, 1.16074, 0.06791, 1.16074, 1.56465, 2.6563, -0.143, 1.1612 ]
},
{
"time": 0.0667,
"offset": 2,
"vertices": [ -0.286, 2.3224, 3.1293, 5.31261, 0.13582, 2.32149, 0.13582, 2.32149, 3.1293, 5.31261, -0.286, 2.3224 ],
"curve": [ 0.25, 0, 0.75, 1 ]
},
{
"time": 0.5667,
"vertices": [ 1.33941, -2.09791, 0.11259, -3.18363, 3.04376, 1.23967, -0.0392, 0.77839, -0.0392, 0.77839, 3.04376, 1.23967, -0.01005, -0.95502, -0.04586, 0.86383 ],
"curve": [ 0.25, 0, 0.75, 1 ]
},
{
"time": 1.0667,
"offset": 2,
"vertices": [ -0.286, 2.3224, 3.1293, 5.31261, 0.13582, 2.32149, 0.13582, 2.32149, 3.1293, 5.31261, -0.286, 2.3224 ]
}
]
},
"mouth": {
"mouth": [
{ "time": 0 },
{
"time": 0.0333,
"vertices": [ 2.63964, -0.38391, 5.08534, -0.14201, 5.04713, -0.14752, 2.60141, -0.38942 ]
},
{
"time": 0.0667,
"vertices": [ 5.27928, -0.76782, 10.17068, -0.28402, 10.09426, -0.29504, 5.20281, -0.77885 ],
"curve": [ 0.25, 0, 0.75, 1 ]
},
{
"time": 0.5667,
"vertices": [ 9.24917, -1.3452, 17.81878, -0.49759, 17.68489, -0.51691, 9.1152, -1.36452 ],
"curve": [ 0.587, -0.02, 0.75, 1 ]
},
{
"time": 1.0667,
"vertices": [ 5.27928, -0.76782, 10.17068, -0.28402, 10.09426, -0.29504, 5.20281, -0.77885 ]
}
]
}
}
}
},
"fall": {
"bones": {
"right-ground": {
"translate": [
{ "time": 0, "x": 14.5, "y": 4.58 },
{ "time": 0.3333, "x": 13.83, "y": 12.64 },
{ "time": 0.6, "x": 13.56, "y": 16.8 },
{ "time": 0.8, "x": 10.68, "y": 4.32 },
{ "time": 1, "x": 14.5, "y": 4.58 }
]
},
"left-ground": {
"translate": [
{ "time": 0, "x": 30.61, "y": 10.23 },
{ "time": 0.2333, "x": 23.51, "y": 14.29 },
{ "time": 0.4667, "x": 28.58, "y": 14.96 },
{ "time": 0.8333, "x": 33.02, "y": 13.4 },
{ "time": 1, "x": 30.61, "y": 10.23 }
]
},
"foot1": {
@ -2270,6 +2642,417 @@
}
}
},
"idle-from fall": {
"bones": {
"upper-arm2": {
"rotate": [
{ "time": 0, "angle": 33.69 },
{ "time": 0.0333, "angle": 29.63 },
{ "time": 0.2, "angle": -0.65 },
{ "time": 0.5333, "angle": 0.46 }
],
"translate": [
{ "time": 0, "x": -1.56, "y": 4.01 },
{ "time": 0.0333, "x": -3.13, "y": 8.02 },
{ "time": 0.2, "x": -2.08, "y": 5.35 },
{ "time": 0.5333, "x": 0, "y": 0 }
]
},
"body": {
"rotate": [
{ "time": 0, "angle": 7.9 },
{ "time": 0.0333, "angle": 1.67 },
{ "time": 0.1, "angle": -5.11 },
{ "time": 0.2, "angle": 1.11 },
{ "time": 0.5333, "angle": 0 }
],
"translate": [
{ "time": 0, "x": 0, "y": -1.85 },
{
"time": 0.0333,
"x": 0,
"y": -3.7,
"curve": [ 0.25, 0, 0.75, 1 ]
},
{ "time": 0.5333, "x": 0, "y": 0 }
]
},
"head": {
"rotate": [
{ "time": 0, "angle": -4.66 },
{ "time": 0.0333, "angle": 8.49 },
{ "time": 0.1, "angle": -17.41 },
{ "time": 0.3, "angle": -6.9 },
{ "time": 0.5333, "angle": -4.18 }
],
"translate": [
{ "time": 0, "x": -1.34, "y": 0 },
{
"time": 0.0333,
"x": -2.69,
"y": 0,
"curve": [ 0.347, 0.38, 0.683, 0.73 ]
},
{
"time": 0.1,
"x": -9.49,
"y": 0.61,
"curve": [ 0.375, 0.62, 0.716, 1 ]
},
{
"time": 0.3,
"x": -3.75,
"y": 0,
"curve": [ 0.243, 0, 0.649, 0.6 ]
},
{ "time": 0.5333, "x": -1.06, "y": 0 }
]
},
"hip": {
"rotate": [
{ "time": 0, "angle": -1.86 },
{ "time": 0.0333, "angle": -3.72 },
{ "time": 0.2, "angle": 0, "curve": "stepped" },
{ "time": 0.5333, "angle": 0 }
],
"translate": [
{ "time": 0, "x": -2.97, "y": -9.61 },
{
"time": 0.0333,
"x": -5.94,
"y": -19.22,
"curve": [ 0.306, 0, 0.641, 0.36 ]
},
{ "time": 0.3, "x": 0, "y": -2.92, "curve": "stepped" },
{ "time": 0.5333, "x": 0, "y": -2.92 }
]
},
"mantles": {
"rotate": [
{ "time": 0, "angle": -2.28 },
{
"time": 0.0333,
"angle": -4.56,
"curve": [ 0.295, 0.19, 0.755, 1 ]
},
{ "time": 0.5333, "angle": 0 }
],
"translate": [
{ "time": 0, "x": -0.66, "y": 0 },
{
"time": 0.0333,
"x": -1.32,
"y": 0,
"curve": [ 0.3, 0.21, 0.756, 1 ]
},
{ "time": 0.4667, "x": 0, "y": 0 },
{ "time": 0.5333, "x": -0.1, "y": 0 }
]
},
"left-ground": {
"translate": [
{ "time": 0, "x": 11.73, "y": 5.12 },
{ "time": 0.0333, "x": -7.15, "y": 0, "curve": "stepped" },
{ "time": 0.5333, "x": -7.15, "y": 0 }
]
},
"right-ground": {
"translate": [
{ "time": 0, "x": 10.22, "y": 2.29 },
{ "time": 0.0333, "x": 5.94, "y": 0, "curve": "stepped" },
{ "time": 0.5333, "x": 5.94, "y": 0 }
]
},
"upper-arm1": {
"rotate": [
{ "time": 0, "angle": -46.85 },
{ "time": 0.1333, "angle": 7.07 },
{
"time": 0.3333,
"angle": -13.9,
"curve": [ 0.442, 0.35, 0.714, 1 ]
},
{ "time": 0.5333, "angle": 0 }
],
"translate": [
{ "time": 0, "x": 3.95, "y": -0.8 },
{
"time": 0.0333,
"x": 7.89,
"y": -1.61,
"curve": [ 0.384, 0, 0.712, 0.41 ]
},
{
"time": 0.2333,
"x": 1.66,
"y": -4.52,
"curve": [ 0.442, 0.35, 0.714, 1 ]
},
{ "time": 0.5333, "x": 0, "y": 0 }
]
},
"forearm1": {
"rotate": [
{ "time": 0, "angle": 7.54 },
{
"time": 0.0667,
"angle": -29.76,
"curve": [ 0.25, 0, 0.75, 1 ]
},
{
"time": 0.2333,
"angle": 45.6,
"curve": [ 0.25, 0, 0.75, 1 ]
},
{ "time": 0.5333, "angle": 0 }
]
},
"forearm2": {
"rotate": [
{ "time": 0, "angle": 34.52 },
{
"time": 0.0333,
"angle": 56.72,
"curve": [ 0, 0.85, 0.75, 1 ]
},
{ "time": 0.2, "angle": -10.87 },
{ "time": 0.5333, "angle": 0 }
]
},
"thigh2": {
"rotate": [
{ "time": 0, "angle": 44.27 },
{ "time": 0.0333, "angle": 20.94 },
{ "time": 0.5333, "angle": 16.55 }
]
},
"thigh1": {
"rotate": [
{ "time": 0, "angle": 64.42 },
{ "time": 0.0333, "angle": 17.95 },
{ "time": 0.5333, "angle": 6.6 }
]
},
"foot1": {
"rotate": [
{ "time": 0, "angle": 9.81 },
{ "time": 0.0333, "angle": 0, "curve": "stepped" },
{ "time": 0.5333, "angle": 0 }
]
},
"foot2": {
"rotate": [
{ "time": 0, "angle": 19.58 },
{ "time": 0.0333, "angle": 0, "curve": "stepped" },
{ "time": 0.5333, "angle": 0 }
]
},
"hand2": {
"rotate": [
{ "time": 0, "angle": -4.33 },
{
"time": 0.0333,
"angle": -8.65,
"curve": [ 0, 0.74, 0.75, 1 ]
},
{
"time": 0.1667,
"angle": -18.06,
"curve": [ 0.25, 0, 0.75, 1 ]
},
{ "time": 0.4, "angle": 0, "curve": "stepped" },
{ "time": 0.5333, "angle": 0 }
]
},
"hand1": {
"rotate": [
{ "time": 0, "angle": 6.18 },
{
"time": 0.0333,
"angle": 12.37,
"curve": [ 0.475, 0, 0.759, 0.65 ]
},
{
"time": 0.2667,
"angle": 37.67,
"curve": [ 0.346, 0.59, 0.67, 1 ]
},
{ "time": 0.5333, "angle": 0 }
]
},
"shin2": {
"rotate": [
{ "time": 0, "angle": -57.8 },
{ "time": 0.0333, "angle": -25.6 },
{ "time": 0.5333, "angle": -23.54 }
]
},
"shin1": {
"rotate": [
{ "time": 0, "angle": -98.69 },
{ "time": 0.0333, "angle": -48.2 },
{ "time": 0.5333, "angle": -30.35 }
]
},
"bone2": {
"rotate": [
{ "time": 0, "angle": 8.01 },
{ "time": 0.0333, "angle": 16.02 },
{ "time": 0.1667, "angle": -10.45 },
{ "time": 0.3333, "angle": 2.36 },
{ "time": 0.5333, "angle": 0 }
],
"translate": [
{ "time": 0, "x": -3.51, "y": 7.69 },
{ "time": 0.0333, "x": -7.02, "y": 15.39 },
{ "time": 0.1667, "x": 6.98, "y": -6.57 },
{ "time": 0.3333, "x": -0.72, "y": -0.78 },
{ "time": 0.5333, "x": 0, "y": 0 }
]
},
"hair01": {
"rotate": [
{ "time": 0, "angle": 8.34 },
{ "time": 0.0333, "angle": 16.67 },
{ "time": 0.1333, "angle": -8 },
{ "time": 0.3333, "angle": 5.81 },
{ "time": 0.5333, "angle": 0 }
],
"translate": [
{ "time": 0, "x": -1, "y": 6.5 },
{ "time": 0.0333, "x": -1.99, "y": 13.01 },
{ "time": 0.1333, "x": 1.46, "y": -7.98 },
{ "time": 0.3333, "x": 0.74, "y": -1.42 },
{ "time": 0.5333, "x": 0, "y": 0 }
]
}
},
"deform": {
"default": {
"body": {
"body": [
{ "time": 0 },
{
"time": 0.0333,
"offset": 12,
"vertices": [ -0.37794, -1.84494, -0.50949, -1.48702, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.50949, -1.48702, -0.37794, -1.84494, 0, 0, -0.37794, -1.84494, -0.37794, -1.84494, -0.50949, -1.48702, -0.50949, -1.48702, -0.50949, -1.48702, -0.37794, -1.84494 ]
},
{
"time": 0.0667,
"offset": 12,
"vertices": [ -0.75588, -3.68988, -1.01898, -2.97405, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.01898, -2.97405, -0.75588, -3.68988, 0, 0, -0.75588, -3.68988, -0.75588, -3.68988, -1.01898, -2.97405, -1.01898, -2.97405, -1.01898, -2.97405, -0.75588, -3.68988 ],
"curve": [ 0.25, 0, 0.75, 1 ]
},
{ "time": 0.5667 }
]
},
"eyes": {
"eyes": [
{ "time": 0 },
{
"time": 0.0333,
"vertices": [ 3.3848, 0.53125, 6.67189, 0.29109, 7.61397, 0.382, 8.52564, -0.20725, 8.20197, -0.25397, 7.61397, 0.382, 6.67189, 0.29109, 3.06108, 0.48469 ]
},
{
"time": 0.0667,
"vertices": [ 6.7696, 1.0625, 13.34377, 0.58218, 15.22793, 0.76399, 17.05129, -0.41451, 16.40394, -0.50793, 15.22793, 0.76399, 13.34377, 0.58218, 6.12216, 0.96938 ],
"curve": [ 0.367, -0.07, 0.698, 0.3 ]
},
{
"time": 0.1333,
"vertices": [ 6.72558, 1.05559, 13.25701, 0.5784, 15.12892, 0.75902, 16.94042, -0.41181, 16.29729, -0.50463, 15.12892, 0.75902, 13.25701, 0.5784, 6.08235, 0.96307 ],
"curve": [ 0.385, 0.21, 0.712, 0.57 ]
},
{
"time": 0.2333,
"vertices": [ 6.41826, 1.00736, 12.65124, 0.55197, 14.43761, 0.72434, 16.16634, -0.39299, 15.55259, -0.48157, 14.43761, 0.72434, 12.65124, 0.55197, 5.80442, 0.91907 ],
"curve": [ 0.45, 0.39, 0.689, 1 ]
},
{
"time": 0.5667,
"vertices": [ 3.86398, 0.60646, 7.61642, 0.3323, 8.69186, 0.43607, 9.73261, -0.23659, 9.36311, -0.28992, 8.69186, 0.43607, 7.61642, 0.3323, 3.49443, 0.5533 ]
}
]
},
"head": {
"head": [
{ "time": 0 },
{
"time": 0.0333,
"offset": 12,
"vertices": [ 1.20921, 0.05117, 0.81534, 0.03457, 0.56313, 0.68999, 4.81944, 0.58034, 1.08329, 0.37289, -1.39058, -0.05896, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5.85053, 0.1361, 2.24566, 0.09507, 3.66064, 0.09469, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3.89728, 0.21303, 7.67009, 0.1996, 3.01457, 0.16301, 3.01457, 0.16301, 4.57353, 0.9409 ]
},
{
"time": 0.0667,
"offset": 12,
"vertices": [ 2.41842, 0.10235, 1.63067, 0.06915, 1.12625, 1.37998, 9.63888, 1.16068, 2.16658, 0.74579, -2.78115, -0.11793, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11.70107, 0.27221, 4.49132, 0.19015, 7.32128, 0.18938, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7.79456, 0.42606, 15.34019, 0.39919, 6.02913, 0.32602, 6.02913, 0.32602, 9.14707, 1.88179 ],
"curve": [ 0.367, -0.07, 0.698, 0.3 ]
},
{
"time": 0.1333,
"offset": 12,
"vertices": [ 2.40269, 0.10168, 1.62007, 0.0687, 1.11893, 1.37101, 9.53403, 1.15649, 2.15249, 0.74094, -2.76307, -0.11716, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11.62499, 0.27044, 4.46211, 0.18891, 7.27368, 0.18815, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7.7017, 0.42665, 15.24045, 0.3966, 5.96039, 0.31969, 5.96039, 0.31969, 9.08759, 1.86955 ],
"curve": [ 0.385, 0.21, 0.712, 0.57 ]
},
{
"time": 0.2333,
"offset": 12,
"vertices": [ 2.2929, 0.09704, 1.54604, 0.06556, 1.0678, 1.30836, 8.80197, 1.12727, 2.05414, 0.70708, -2.63681, -0.11181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11.09379, 0.25808, 4.25822, 0.18028, 6.94132, 0.17955, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7.05337, 0.43077, 14.54404, 0.37847, 5.48038, 0.27545, 5.48038, 0.27545, 8.67234, 1.78413 ],
"curve": [ 0.45, 0.39, 0.689, 1 ]
},
{
"time": 0.5667,
"offset": 12,
"vertices": [ 1.38039, 0.05842, 0.93076, 0.03947, 0.64285, 0.78767, 2.71751, 0.88435, 1.23665, 0.42568, -1.58744, -0.06731, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6.67879, 0.15537, 2.56357, 0.10853, 4.17887, 0.1081, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.6648, 0.46504, 8.75594, 0.22785, 1.49083, -0.09221, 1.49083, -0.09221, 5.221, 1.0741 ]
}
]
},
"mantles": {
"mantles": [
{ "time": 0 },
{
"time": 0.0333,
"vertices": [ -0.69415, 0.27184, 0.0767, -3.45453, -0.62705, -2.25438, -0.61457, -0.67946, -0.61462, -0.67877, -0.62691, -2.23804, -0.03177, -2.59196, -0.21693, 1.72518 ]
},
{
"time": 0.0667,
"vertices": [ -1.38829, 0.54368, 0.1534, -6.90907, -1.2541, -4.50876, -1.22914, -1.35892, -1.22923, -1.35755, -1.25381, -4.47607, -0.06354, -5.18391, -0.43387, 3.45035 ],
"curve": [ 0.25, 0, 0.75, 1 ]
},
{ "time": 0.5667 }
]
},
"mouth": {
"mouth": [
{ "time": 0 },
{
"time": 0.0333,
"vertices": [ 4.62458, -0.6726, 8.90939, -0.24879, 8.84245, -0.25845, 4.5576, -0.68226 ]
},
{
"time": 0.0667,
"vertices": [ 9.24917, -1.3452, 17.81878, -0.49759, 17.68489, -0.51691, 9.1152, -1.36452 ],
"curve": [ 0.367, -0.07, 0.698, 0.3 ]
},
{
"time": 0.1333,
"vertices": [ 9.18903, -1.33645, 17.70293, -0.49435, 17.56991, -0.51355, 9.05593, -1.35565 ],
"curve": [ 0.385, 0.21, 0.712, 0.57 ]
},
{
"time": 0.2333,
"vertices": [ 8.76914, -1.27538, 16.894, -0.47176, 16.76706, -0.49008, 8.64213, -1.2937 ],
"curve": [ 0.45, 0.39, 0.689, 1 ]
},
{
"time": 0.5667,
"vertices": [ 5.27928, -0.76782, 10.17068, -0.28402, 10.09426, -0.29504, 5.20281, -0.77885 ]
}
]
}
}
}
},
"jump": {
"bones": {
"right-ground": {
@ -3388,7 +4171,7 @@
"y": 1,
"curve": [ 0, 0.9, 0.557, 1 ]
},
{ "time": 0.0333, "x": 1, "y": 0.95 },
{ "time": 0.0333, "x": 1, "y": 0.98 },
{ "time": 0.2667, "x": 1, "y": 1 }
]
},
@ -3533,7 +4316,7 @@
"y": 0,
"curve": [ 0, 0.9, 0.557, 1 ]
},
{ "time": 0.0333, "x": -13.41, "y": -6.07 },
{ "time": 0.0333, "x": -2.52, "y": -4.74 },
{ "time": 0.1333, "x": 7.04, "y": 0.05 },
{ "time": 0.2333, "x": 2.88, "y": 0.24 },
{ "time": 0.2667, "x": -3.51, "y": -1.82 },
@ -3659,9 +4442,8 @@
"curve": [ 0, 0.9, 0.557, 1 ]
},
{ "time": 0.0333, "angle": -5.05 },
{ "time": 0.1, "angle": -47.92 },
{ "time": 0.2333, "angle": 8.06 },
{ "time": 0.2667, "angle": 12.46 },
{ "time": 0.1333, "angle": -32.27 },
{ "time": 0.2667, "angle": 8.06 },
{ "time": 0.4, "angle": 33.85 },
{ "time": 0.6667, "angle": 22.92 },
{ "time": 0.7667, "angle": 8.06 }
@ -3877,10 +4659,10 @@
{
"time": 0.0333,
"x": 1,
"y": 0.95,
"y": 0.98,
"curve": [ 0.25, 0, 1, 0.65 ]
},
{ "time": 0.1667, "x": 1, "y": 1.137 },
{ "time": 0.1667, "x": 1, "y": 1.05 },
{ "time": 0.3, "x": 1, "y": 1 }
]
}

View File

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

View File

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

View File

@ -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

View File

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

View File

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

View File

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

View File

@ -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": {

View File

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

View File

@ -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

View File

@ -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) {

View File

@ -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.