From 08b74f5b187079323f4a1f8b0638198641406a59 Mon Sep 17 00:00:00 2001 From: NathanSweet Date: Sun, 14 Feb 2016 22:51:18 +0100 Subject: [PATCH] Updated spine-csharp to Spine v3. --- spine-csharp/spine-csharp.csproj | 102 +- spine-csharp/src/Animation.cs | 48 - .../src/Attachments/AtlasAttachmentLoader.cs | 6 +- .../src/Attachments/AttachmentLoader.cs | 2 +- .../src/Attachments/AttachmentType.cs | 2 +- .../src/Attachments/BoundingBoxAttachment.cs | 8 +- .../src/Attachments/MeshAttachment.cs | 4 +- .../src/Attachments/RegionAttachment.cs | 2 +- ...ttachment.cs => WeightedMeshAttachment.cs} | 14 +- spine-csharp/src/Bone.cs | 250 ++- spine-csharp/src/BoneData.cs | 3 - spine-csharp/src/Event.cs | 3 +- spine-csharp/src/IUpdatable.cs | 38 + spine-csharp/src/IkConstraint.cs | 191 +- spine-csharp/src/MathUtils.cs | 94 + spine-csharp/src/Skeleton.cs | 119 +- spine-csharp/src/SkeletonBinary.cs | 34 +- spine-csharp/src/SkeletonData.cs | 20 +- spine-csharp/src/SkeletonJson.cs | 56 +- spine-csharp/src/TransformConstraint.cs | 82 + spine-csharp/src/TransformConstraintData.cs | 58 + spine-xna/example/data/raptor.json | 1736 ++++++++++++++--- spine-xna/example/data/raptor.skel | Bin 41027 -> 42077 bytes spine-xna/example/spine-xna-example.csproj | 6 +- spine-xna/spine-xna.csproj | 10 +- spine-xna/spine-xna.sln | 39 +- spine-xna/src/SkeletonMeshRenderer.cs | 4 +- 27 files changed, 2343 insertions(+), 588 deletions(-) rename spine-csharp/src/Attachments/{SkinnedMeshAttachment.cs => WeightedMeshAttachment.cs} (92%) create mode 100644 spine-csharp/src/IUpdatable.cs create mode 100644 spine-csharp/src/MathUtils.cs create mode 100644 spine-csharp/src/TransformConstraint.cs create mode 100644 spine-csharp/src/TransformConstraintData.cs diff --git a/spine-csharp/spine-csharp.csproj b/spine-csharp/spine-csharp.csproj index c5fc23107..1c7ab2fd6 100644 --- a/spine-csharp/spine-csharp.csproj +++ b/spine-csharp/spine-csharp.csproj @@ -53,35 +53,91 @@ - - - - + + Code + + + Code + + + Code + + + Code + + - - - - - - - - - - - - - - - - - - + + + Code + + + Code + + + Code + + + Code + + + Code + + + Code + + + Code + + + Code + + + Code + + + Code + + + Code + + + Code + + + Code + + + Code + + + Code + + + Code + + + Code + + + Code + + + Code + + + Code + + + Code + + - + \ No newline at end of file diff --git a/spine-csharp/src/Animation.cs b/spine-csharp/src/Animation.cs index eb0b695c9..6cc1a025a 100644 --- a/spine-csharp/src/Animation.cs +++ b/spine-csharp/src/Animation.cs @@ -674,52 +674,4 @@ namespace Spine { ikConstraint.bendDirection = (int)frames[frameIndex + PREV_FRAME_BEND_DIRECTION]; } } - - public class FlipXTimeline : Timeline { - internal int boneIndex; - internal float[] frames; - - public int BoneIndex { get { return boneIndex; } set { boneIndex = value; } } - public float[] Frames { get { return frames; } set { frames = value; } } // time, flip, ... - public int FrameCount { get { return frames.Length >> 1; } } - - public FlipXTimeline (int frameCount) { - frames = new float[frameCount << 1]; - } - - /// Sets the time and value of the specified keyframe. - public void SetFrame (int frameIndex, float time, bool flip) { - frameIndex *= 2; - frames[frameIndex] = time; - frames[frameIndex + 1] = flip ? 1 : 0; - } - - public void Apply (Skeleton skeleton, float lastTime, float time, ExposedList firedEvents, float alpha) { - float[] frames = this.frames; - if (time < frames[0]) { - if (lastTime > time) Apply(skeleton, lastTime, int.MaxValue, null, 0); - return; - } else if (lastTime > time) // - lastTime = -1; - - int frameIndex = (time >= frames[frames.Length - 2] ? frames.Length : Animation.binarySearch(frames, time, 2)) - 2; - if (frames[frameIndex] < lastTime) return; - - SetFlip(skeleton.bones.Items[boneIndex], frames[frameIndex + 1] != 0); - } - - virtual protected void SetFlip (Bone bone, bool flip) { - bone.flipX = flip; - } - } - - public class FlipYTimeline : FlipXTimeline { - public FlipYTimeline (int frameCount) - : base(frameCount) { - } - - override protected void SetFlip (Bone bone, bool flip) { - bone.flipY = flip; - } - } } diff --git a/spine-csharp/src/Attachments/AtlasAttachmentLoader.cs b/spine-csharp/src/Attachments/AtlasAttachmentLoader.cs index 9fd84ab1f..f05de4b67 100644 --- a/spine-csharp/src/Attachments/AtlasAttachmentLoader.cs +++ b/spine-csharp/src/Attachments/AtlasAttachmentLoader.cs @@ -74,10 +74,10 @@ namespace Spine { return attachment; } - public SkinnedMeshAttachment NewSkinnedMeshAttachment (Skin skin, String name, String path) { + public WeightedMeshAttachment NewWeightedMeshAttachment (Skin skin, String name, String path) { AtlasRegion region = FindRegion(path); - if (region == null) throw new Exception("Region not found in atlas: " + path + " (skinned mesh attachment: " + name + ")"); - SkinnedMeshAttachment attachment = new SkinnedMeshAttachment(name); + if (region == null) throw new Exception("Region not found in atlas: " + path + " (weighted mesh attachment: " + name + ")"); + WeightedMeshAttachment attachment = new WeightedMeshAttachment(name); attachment.RendererObject = region; attachment.RegionU = region.u; attachment.RegionV = region.v; diff --git a/spine-csharp/src/Attachments/AttachmentLoader.cs b/spine-csharp/src/Attachments/AttachmentLoader.cs index 69f462748..5574e3210 100644 --- a/spine-csharp/src/Attachments/AttachmentLoader.cs +++ b/spine-csharp/src/Attachments/AttachmentLoader.cs @@ -40,7 +40,7 @@ namespace Spine { MeshAttachment NewMeshAttachment (Skin skin, String name, String path); /// May be null to not load any attachment. - SkinnedMeshAttachment NewSkinnedMeshAttachment (Skin skin, String name, String path); + WeightedMeshAttachment NewWeightedMeshAttachment (Skin skin, String name, String path); /// May be null to not load any attachment. BoundingBoxAttachment NewBoundingBoxAttachment (Skin skin, String name); diff --git a/spine-csharp/src/Attachments/AttachmentType.cs b/spine-csharp/src/Attachments/AttachmentType.cs index 2f5d1c8fd..c1187915c 100644 --- a/spine-csharp/src/Attachments/AttachmentType.cs +++ b/spine-csharp/src/Attachments/AttachmentType.cs @@ -31,6 +31,6 @@ namespace Spine { public enum AttachmentType { - region, boundingbox, mesh, skinnedmesh + region, boundingbox, mesh, weightedmesh } } diff --git a/spine-csharp/src/Attachments/BoundingBoxAttachment.cs b/spine-csharp/src/Attachments/BoundingBoxAttachment.cs index 3a8be7934..ccf179edd 100644 --- a/spine-csharp/src/Attachments/BoundingBoxAttachment.cs +++ b/spine-csharp/src/Attachments/BoundingBoxAttachment.cs @@ -45,10 +45,10 @@ namespace Spine { /// Must have at least the same length as this attachment's vertices. public void ComputeWorldVertices (Bone bone, float[] worldVertices) { float x = bone.skeleton.x + bone.worldX, y = bone.skeleton.y + bone.worldY; - float m00 = bone.m00; - float m01 = bone.m01; - float m10 = bone.m10; - float m11 = bone.m11; + float m00 = bone.a; + float m01 = bone.b; + float m10 = bone.c; + float m11 = bone.d; float[] vertices = this.vertices; for (int i = 0, n = vertices.Length; i < n; i += 2) { float px = vertices[i]; diff --git a/spine-csharp/src/Attachments/MeshAttachment.cs b/spine-csharp/src/Attachments/MeshAttachment.cs index 488b76b14..de4d569b8 100644 --- a/spine-csharp/src/Attachments/MeshAttachment.cs +++ b/spine-csharp/src/Attachments/MeshAttachment.cs @@ -32,7 +32,7 @@ using System; namespace Spine { - /// Attachment that displays a texture region. + /// Attachment that displays a texture region using a mesh. public class MeshAttachment : Attachment { internal float[] vertices, uvs, regionUVs; internal int[] triangles; @@ -94,7 +94,7 @@ namespace Spine { public void ComputeWorldVertices (Slot slot, float[] worldVertices) { Bone bone = slot.bone; float x = bone.skeleton.x + bone.worldX, y = bone.skeleton.y + bone.worldY; - float m00 = bone.m00, m01 = bone.m01, m10 = bone.m10, m11 = bone.m11; + float m00 = bone.a, m01 = bone.b, m10 = bone.c, m11 = bone.d; float[] vertices = this.vertices; int verticesCount = vertices.Length; if (slot.attachmentVerticesCount == verticesCount) vertices = slot.AttachmentVertices; diff --git a/spine-csharp/src/Attachments/RegionAttachment.cs b/spine-csharp/src/Attachments/RegionAttachment.cs index 72bdb058e..dad5e1cc8 100644 --- a/spine-csharp/src/Attachments/RegionAttachment.cs +++ b/spine-csharp/src/Attachments/RegionAttachment.cs @@ -137,7 +137,7 @@ namespace Spine { public void ComputeWorldVertices (Bone bone, float[] worldVertices) { float x = bone.skeleton.x + bone.worldX, y = bone.skeleton.y + bone.worldY; - float m00 = bone.m00, m01 = bone.m01, m10 = bone.m10, m11 = bone.m11; + float m00 = bone.a, m01 = bone.b, m10 = bone.c, m11 = bone.d; float[] offset = this.offset; worldVertices[X1] = offset[X1] * m00 + offset[Y1] * m01 + x; worldVertices[Y1] = offset[X1] * m10 + offset[Y1] * m11 + y; diff --git a/spine-csharp/src/Attachments/SkinnedMeshAttachment.cs b/spine-csharp/src/Attachments/WeightedMeshAttachment.cs similarity index 92% rename from spine-csharp/src/Attachments/SkinnedMeshAttachment.cs rename to spine-csharp/src/Attachments/WeightedMeshAttachment.cs index 1e99fab38..61a039362 100644 --- a/spine-csharp/src/Attachments/SkinnedMeshAttachment.cs +++ b/spine-csharp/src/Attachments/WeightedMeshAttachment.cs @@ -33,8 +33,8 @@ using System; using System.Collections.Generic; namespace Spine { - /// Attachment that displays a texture region. - public class SkinnedMeshAttachment : Attachment { + /// Attachment that displays a texture region using a mesh which can be deformed by bones. + public class WeightedMeshAttachment : Attachment { internal int[] bones; internal float[] weights, uvs, regionUVs; internal int[] triangles; @@ -72,7 +72,7 @@ namespace Spine { public float Width { get; set; } public float Height { get; set; } - public SkinnedMeshAttachment (string name) + public WeightedMeshAttachment (string name) : base(name) { } @@ -107,8 +107,8 @@ namespace Spine { for (; v < nn; v++, b += 3) { Bone bone = skeletonBones.Items[bones[v]]; float vx = weights[b], vy = weights[b + 1], weight = weights[b + 2]; - wx += (vx * bone.m00 + vy * bone.m01 + bone.worldX) * weight; - wy += (vx * bone.m10 + vy * bone.m11 + bone.worldY) * weight; + wx += (vx * bone.a + vy * bone.b + bone.worldX) * weight; + wy += (vx * bone.c + vy * bone.d + bone.worldY) * weight; } worldVertices[w] = wx + x; worldVertices[w + 1] = wy + y; @@ -121,8 +121,8 @@ namespace Spine { for (; v < nn; v++, b += 3, f += 2) { Bone bone = skeletonBones.Items[bones[v]]; float vx = weights[b] + ffd[f], vy = weights[b + 1] + ffd[f + 1], weight = weights[b + 2]; - wx += (vx * bone.m00 + vy * bone.m01 + bone.worldX) * weight; - wy += (vx * bone.m10 + vy * bone.m11 + bone.worldY) * weight; + wx += (vx * bone.a + vy * bone.b + bone.worldX) * weight; + wy += (vx * bone.c + vy * bone.d + bone.worldY) * weight; } worldVertices[w] = wx + x; worldVertices[w + 1] = wy + y; diff --git a/spine-csharp/src/Bone.cs b/spine-csharp/src/Bone.cs index 6d92871a8..596130156 100644 --- a/spine-csharp/src/Bone.cs +++ b/spine-csharp/src/Bone.cs @@ -33,18 +33,19 @@ using System; using System.Collections.Generic; namespace Spine { - public class Bone { + public class Bone : IUpdatable { static public bool yDown; internal BoneData data; internal Skeleton skeleton; internal Bone parent; internal ExposedList children = new ExposedList(); - internal float x, y, rotation, rotationIK, scaleX, scaleY; - internal bool flipX, flipY; - internal float m00, m01, m10, m11; - internal float worldX, worldY, worldRotation, worldScaleX, worldScaleY; - internal bool worldFlipX, worldFlipY; + internal float x, y, rotation, scaleX, scaleY; + internal float appliedRotation, appliedScaleX, appliedScaleY; + + internal float a, b, worldX; + internal float c, d, worldY; + internal float worldSignX, worldSignY; public BoneData Data { get { return data; } } public Skeleton Skeleton { get { return skeleton; } } @@ -52,26 +53,28 @@ namespace Spine { public ExposedList Children { get { return children; } } public float X { get { return x; } set { x = value; } } public float Y { get { return y; } set { y = value; } } - /// The forward kinetics rotation. public float Rotation { get { return rotation; } set { rotation = value; } } - /// The inverse kinetics rotation, as calculated by any IK constraints. - public float RotationIK { get { return rotationIK; } set { rotationIK = value; } } + /// The rotation, as calculated by any constraints. + public float AppliedRotation { get { return appliedRotation; } set { appliedRotation = value; } } + /// The scale X, as calculated by any constraints. + public float AppliedScaleX { get { return appliedScaleX; } set { appliedScaleX = value; } } + /// The scale Y, as calculated by any constraints. + public float AppliedScaleY { get { return appliedScaleY; } set { appliedScaleY = value; } } public float ScaleX { get { return scaleX; } set { scaleX = value; } } public float ScaleY { get { return scaleY; } set { scaleY = value; } } - public bool FlipX { get { return flipX; } set { flipX = value; } } - public bool FlipY { get { return flipY; } set { flipY = value; } } - public float M00 { get { return m00; } } - public float M01 { get { return m01; } } - public float M10 { get { return m10; } } - public float M11 { get { return m11; } } + public float A { get { return a; } } + public float B { get { return b; } } + public float C { get { return c; } } + public float D { get { return d; } } public float WorldX { get { return worldX; } } public float WorldY { get { return worldY; } } - public float WorldRotation { get { return worldRotation; } } - public float WorldScaleX { get { return worldScaleX; } } - public float WorldScaleY { get { return worldScaleY; } } - public bool WorldFlipX { get { return worldFlipX; } set { worldFlipX = value; } } - public bool WorldFlipY { get { return worldFlipY; } set { worldFlipY = value; } } + public float WorldSignX { get { return worldSignX; } } + public float WorldSignY { get { return worldSignY; } } + public float WorldRotationX { get { return MathUtils.Atan2(c, a) * MathUtils.radDeg; } } + public float WorldRotationY { get { return MathUtils.Atan2(d, b) * MathUtils.radDeg; } } + public float WorldScaleX { get { return (float)Math.Sqrt(a * a + b * b) * worldSignX; } } + public float WorldScaleY { get { return (float)Math.Sqrt(c * c + d * d) * worldSignY; } } /// May be null. public Bone (BoneData data, Skeleton skeleton, Bone parent) { @@ -83,80 +86,155 @@ namespace Spine { SetToSetupPose(); } - /// Computes the world SRT using the parent bone and the local SRT. + /// Computes the world SRT using the parent bone and this bone's local SRT. public void UpdateWorldTransform () { - Bone parent = this.parent; - float x = this.x, y = this.y; - if (parent != null) { - worldX = x * parent.m00 + y * parent.m01 + parent.worldX; - worldY = x * parent.m10 + y * parent.m11 + parent.worldY; - if (data.inheritScale) { - worldScaleX = parent.worldScaleX * scaleX; - worldScaleY = parent.worldScaleY * scaleY; - } else { - worldScaleX = scaleX; - worldScaleY = scaleY; - } - worldRotation = data.inheritRotation ? parent.worldRotation + rotationIK : rotationIK; - worldFlipX = parent.worldFlipX != flipX; - worldFlipY = parent.worldFlipY != flipY; - } else { - Skeleton skeleton = this.skeleton; - bool skeletonFlipX = skeleton.flipX, skeletonFlipY = skeleton.flipY; - worldX = skeletonFlipX ? -x : x; - worldY = skeletonFlipY != yDown ? -y : y; - worldScaleX = scaleX; - worldScaleY = scaleY; - worldRotation = rotationIK; - worldFlipX = skeletonFlipX != flipX; - worldFlipY = skeletonFlipY != flipY; - } - float radians = worldRotation * (float)Math.PI / 180; - float cos = (float)Math.Cos(radians); - float sin = (float)Math.Sin(radians); - if (worldFlipX) { - m00 = -cos * worldScaleX; - m01 = sin * worldScaleY; - } else { - m00 = cos * worldScaleX; - m01 = -sin * worldScaleY; - } - if (worldFlipY != yDown) { - m10 = -sin * worldScaleX; - m11 = -cos * worldScaleY; - } else { - m10 = sin * worldScaleX; - m11 = cos * worldScaleY; - } + UpdateWorldTransform(x, y, rotation, scaleX, scaleY); } + /// Computes the world SRT using the parent bone and the specified local SRT. + public void UpdateWorldTransform (float x, float y, float rotation, float scaleX, float scaleY) { + appliedRotation = rotation; + appliedScaleX = scaleX; + appliedScaleY = scaleY; + + float cos = MathUtils.CosDeg(rotation), sin = MathUtils.SinDeg(rotation); + float la = cos * scaleX, lb = -sin * scaleY, lc = sin * scaleX, ld = cos * scaleY; + Bone parent = this.parent; + if (parent == null) { // Root bone. + Skeleton skeleton = this.skeleton; + if (skeleton.flipX) { + la = -la; + lc = -lc; + scaleX = -scaleX; + x = -x; + } + if (skeleton.flipY != yDown) { + lb = -lb; + ld = -ld; + scaleY = -scaleY; + y = -y; + } + a = la; + b = lb; + c = lc; + d = ld; + worldX = x; + worldY = y; + worldSignX = Math.Sign(scaleX); + worldSignY = Math.Sign(scaleY); + return; + } + + float pa = parent.a, pb = parent.b, pc = parent.c, pd = parent.d; + worldX = pa * x + pb * y + parent.worldX; + worldY = pc * x + pd * y + parent.worldY; + worldSignX = parent.worldSignX * Math.Sign(scaleX); + worldSignY = parent.worldSignY * Math.Sign(scaleY); + + if (data.inheritRotation && data.inheritScale) { + a = pa * la + pb * lc; + b = pa * lb + pb * ld; + c = pc * la + pd * lc; + d = pc * lb + pd * ld; + } else if (data.inheritRotation) { // No scale inheritance. + Bone p = parent; + pa = 1; + pb = 0; + pc = 0; + pd = 1; + while (p != null) { + cos = MathUtils.CosDeg(p.appliedRotation); + sin = MathUtils.SinDeg(p.appliedRotation); + float a = pa * cos + pb * sin; + float b = pa * -sin + pb * cos; + float c = pc * cos + pd * sin; + float d = pc * -sin + pd * cos; + pa = a; + pb = b; + pc = c; + pd = d; + p = p.parent; + } + if (yDown) { + pb = -pb; + pd = -pd; + } + this.a = pa * la + pb * lc; + this.b = pa * lb + pb * ld; + this.c = pc * la + pd * lc; + this.d = pc * lb + pd * ld; + } else if (data.inheritScale) { // No rotation inheritance. + Bone p = parent; + pa = 1; + pb = 0; + pc = 0; + pd = 1; + while (p != null) { + float r = p.rotation; + cos = MathUtils.CosDeg(r); + sin = MathUtils.SinDeg(r); + float psx = p.appliedScaleX, psy = p.appliedScaleY; + float za = cos * psx, zb = -sin * psy, zc = sin * psx, zd = cos * psy; + float temp = pa * za + pb * zc; + pb = pa * zb + pb * zd; + pa = temp; + temp = pc * za + pd * zc; + pd = pc * zb + pd * zd; + pc = temp; + + if (psx < 0) r = -r; + cos = MathUtils.CosDeg(-r); + sin = MathUtils.SinDeg(-r); + temp = pa * cos + pb * sin; + pb = pa * -sin + pb * cos; + pa = temp; + temp = pc * cos + pd * sin; + pd = pc * -sin + pd * cos; + pc = temp; + + p = p.parent; + } + if (yDown) { + pb = -pb; + pd = -pd; + } + a = pa * la + pb * lc; + b = pa * lb + pb * ld; + c = pc * la + pd * lc; + d = pc * lb + pd * ld; + } else { + a = la; + b = lb; + c = lc; + d = ld; + } + } + + public void Update () { + UpdateWorldTransform(x, y, rotation, scaleX, scaleY); + } + public void SetToSetupPose () { - BoneData data = this.data; - x = data.x; - y = data.y; - rotation = data.rotation; - rotationIK = rotation; - scaleX = data.scaleX; - scaleY = data.scaleY; - flipX = data.flipX; - flipY = data.flipY; + BoneData data = this.data; + x = data.x; + y = data.y; + rotation = data.rotation; + scaleX = data.scaleX; + scaleY = data.scaleY; } - public void worldToLocal (float worldX, float worldY, out float localX, out float localY) { - float dx = worldX - this.worldX, dy = worldY - this.worldY; - float m00 = this.m00, m10 = this.m10, m01 = this.m01, m11 = this.m11; - if (worldFlipX != (worldFlipY != yDown)) { - m00 = -m00; - m11 = -m11; - } - float invDet = 1 / (m00 * m11 - m01 * m10); - localX = (dx * m00 * invDet - dy * m01 * invDet); - localY = (dy * m11 * invDet - dx * m10 * invDet); + public void WorldToLocal (float worldX, float worldY, out float localX, out float localY) { + float x = worldX - this.worldX, y = worldY - this.worldY; + float a = this.a, b = this.b, c = this.c, d = this.d; + float invDet = 1 / (a * d - b * c); + localX = (x * a * invDet - y * b * invDet); + localY = (y * d * invDet - x * c * invDet); } - public void localToWorld (float localX, float localY, out float worldX, out float worldY) { - worldX = localX * m00 + localY * m01 + this.worldX; - worldY = localX * m10 + localY * m11 + this.worldY; + public void LocalToWorld (float localX, float localY, out float worldX, out float worldY) { + float x = localX, y = localY; + worldX = x * a + y * b + this.worldX; + worldY = x * c + y * d + this.worldY; } override public String ToString () { diff --git a/spine-csharp/src/BoneData.cs b/spine-csharp/src/BoneData.cs index cc1ebacec..29214e2f6 100644 --- a/spine-csharp/src/BoneData.cs +++ b/spine-csharp/src/BoneData.cs @@ -36,7 +36,6 @@ namespace Spine { internal BoneData parent; internal String name; internal float length, x, y, rotation, scaleX = 1, scaleY = 1; - internal bool flipX, flipY; internal bool inheritScale = true, inheritRotation = true; /// May be null. @@ -48,8 +47,6 @@ namespace Spine { public float Rotation { get { return rotation; } set { rotation = value; } } public float ScaleX { get { return scaleX; } set { scaleX = value; } } public float ScaleY { get { return scaleY; } set { scaleY = value; } } - public bool FlipX { get { return flipX; } set { flipX = value; } } - public bool FlipY { get { return flipY; } set { flipY = value; } } public bool InheritScale { get { return inheritScale; } set { inheritScale = value; } } public bool InheritRotation { get { return inheritRotation; } set { inheritRotation = value; } } diff --git a/spine-csharp/src/Event.cs b/spine-csharp/src/Event.cs index f60710448..057e4e7aa 100644 --- a/spine-csharp/src/Event.cs +++ b/spine-csharp/src/Event.cs @@ -37,8 +37,9 @@ namespace Spine { public int Int { get; set; } public float Float { get; set; } public String String { get; set; } + public float Time { get; private set; } - public Event (EventData data) { + public Event (float time, EventData data) { Data = data; } diff --git a/spine-csharp/src/IUpdatable.cs b/spine-csharp/src/IUpdatable.cs new file mode 100644 index 000000000..824c9a560 --- /dev/null +++ b/spine-csharp/src/IUpdatable.cs @@ -0,0 +1,38 @@ +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.3 + * + * Copyright (c) 2013-2015, Esoteric Software + * All rights reserved. + * + * You are granted a perpetual, non-exclusive, non-sublicensable and + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), you may not (a) modify, + * translate, adapt or otherwise create derivative works, improvements of the + * Software or develop new applications using the Software or (b) remove, + * delete, alter or obscure any trademarks or any copyright, trademark, patent + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL ESOTERIC SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + +using System; + +namespace Spine { + public interface IUpdatable { + void Update (); + } +} diff --git a/spine-csharp/src/IkConstraint.cs b/spine-csharp/src/IkConstraint.cs index e5b7bc9d4..0a4ec644f 100644 --- a/spine-csharp/src/IkConstraint.cs +++ b/spine-csharp/src/IkConstraint.cs @@ -33,9 +33,7 @@ using System; using System.Collections.Generic; namespace Spine { - public class IkConstraint { - private const float radDeg = 180 / (float)Math.PI; - + public class IkConstraint : IUpdatable { internal IkConstraintData data; internal ExposedList bones = new ExposedList(); internal Bone target; @@ -61,15 +59,19 @@ namespace Spine { target = skeleton.FindBone(data.target.name); } - public void apply () { + public void Update () { + Apply(); + } + + public void Apply () { Bone target = this.target; ExposedList bones = this.bones; switch (bones.Count) { case 1: - apply(bones.Items[0], target.worldX, target.worldY, mix); + Apply(bones.Items[0], target.worldX, target.worldY, mix); break; case 2: - apply(bones.Items[0], bones.Items[1], target.worldX, target.worldY, bendDirection, mix); + Apply(bones.Items[0], bones.Items[1], target.worldX, target.worldY, bendDirection, mix); break; } } @@ -80,72 +82,137 @@ namespace Spine { /// Adjusts the bone rotation so the tip is as close to the target position as possible. The target is specified /// in the world coordinate system. - static public void apply (Bone bone, float targetX, float targetY, float alpha) { - float parentRotation = (!bone.data.inheritRotation || bone.parent == null) ? 0 : bone.parent.worldRotation; + static public void Apply (Bone bone, float targetX, float targetY, float alpha) { + float parentRotation = bone.parent == null ? 0 : bone.parent.WorldRotationX; float rotation = bone.rotation; - float rotationIK = (float)Math.Atan2(targetY - bone.worldY, targetX - bone.worldX) * radDeg; - if (bone.worldFlipX != (bone.worldFlipY != Bone.yDown)) rotationIK = -rotationIK; - rotationIK -= parentRotation; - bone.rotationIK = rotation + (rotationIK - rotation) * alpha; + float rotationIK = MathUtils.Atan2(targetY - bone.worldY, targetX - bone.worldX) * MathUtils.radDeg - parentRotation; + if (bone.worldSignX != bone.worldSignY) rotationIK = 360 - rotationIK; + if (rotationIK > 180) rotationIK -= 360; + else if (rotationIK < -180) rotationIK += 360; + bone.UpdateWorldTransform(bone.x, bone.y, rotation + (rotationIK - rotation) * alpha, bone.scaleX, bone.scaleY); } /// Adjusts the parent and child bone rotations so the tip of the child is as close to the target position as /// possible. The target is specified in the world coordinate system. - /// Any descendant bone of the parent. - static public void apply (Bone parent, Bone child, float targetX, float targetY, int bendDirection, float alpha) { - float childRotation = child.rotation, parentRotation = parent.rotation; - if (alpha == 0) { - child.rotationIK = childRotation; - parent.rotationIK = parentRotation; - return; - } - float positionX, positionY; - Bone parentParent = parent.parent; - if (parentParent != null) { - parentParent.worldToLocal(targetX, targetY, out positionX, out positionY); - targetX = (positionX - parent.x) * parentParent.worldScaleX; - targetY = (positionY - parent.y) * parentParent.worldScaleY; + /// A direct descendant of the parent bone. + static public void Apply (Bone parent, Bone child, float targetX, float targetY, int bendDir, float alpha) { + if (alpha == 0) return; + float px = parent.x, py = parent.y, psx = parent.scaleX, psy = parent.scaleY, csx = child.scaleX, cy = child.y; + int offset1, offset2, sign2; + if (psx < 0) { + psx = -psx; + offset1 = 180; + sign2 = -1; } else { - targetX -= parent.x; - targetY -= parent.y; + offset1 = 0; + sign2 = 1; } - if (child.parent == parent) { - positionX = child.x; - positionY = child.y; + if (psy < 0) { + psy = -psy; + sign2 = -sign2; + } + if (csx < 0) { + csx = -csx; + offset2 = 180; + } else + offset2 = 0; + Bone pp = parent.parent; + float tx, ty, dx, dy; + if (pp == null) { + tx = targetX - px; + ty = targetY - py; + dx = child.worldX - px; + dy = child.worldY - py; } else { - child.parent.localToWorld(child.x, child.y, out positionX, out positionY); - parent.worldToLocal(positionX, positionY, out positionX, out positionY); + float a = pp.a, b = pp.b, c = pp.c, d = pp.d, invDet = 1 / (a * d - b * c); + float wx = pp.worldX, wy = pp.worldY, x = targetX - wx, y = targetY - wy; + tx = (x * d - y * b) * invDet - px; + ty = (y * a - x * c) * invDet - py; + x = child.worldX - wx; + y = child.worldY - wy; + dx = (x * d - y * b) * invDet - px; + dy = (y * a - x * c) * invDet - py; } - float childX = positionX * parent.worldScaleX, childY = positionY * parent.worldScaleY; - float offset = (float)Math.Atan2(childY, childX); - float len1 = (float)Math.Sqrt(childX * childX + childY * childY), len2 = child.data.length * child.worldScaleX; - // Based on code by Ryan Juckett with permission: Copyright (c) 2008-2009 Ryan Juckett, http://www.ryanjuckett.com/ - float cosDenom = 2 * len1 * len2; - if (cosDenom < 0.0001f) { - child.rotationIK = childRotation + ((float)Math.Atan2(targetY, targetX) * radDeg - parentRotation - childRotation) - * alpha; - return; + float l1 = (float)Math.Sqrt(dx * dx + dy * dy), l2 = child.data.length * csx, a1, a2; + if (Math.Abs(psx - psy) <= 0.0001f) { + l2 *= psx; + float cos = (tx * tx + ty * ty - l1 * l1 - l2 * l2) / (2 * l1 * l2); + if (cos < -1) + cos = -1; + else if (cos > 1) cos = 1; + a2 = (float)Math.Acos(cos) * bendDir; + float a = l1 + l2 * cos, o = l2 * MathUtils.Sin(a2); + a1 = MathUtils.Atan2(ty * a - tx * o, tx * a + ty * o); + } else { + cy = 0; + float a = psx * l2, b = psy * l2, ta = MathUtils.Atan2(ty, tx); + float aa = a * a, bb = b * b, ll = l1 * l1, dd = tx * tx + ty * ty; + float c0 = bb * ll + aa * dd - aa * bb, c1 = -2 * bb * l1, c2 = bb - aa; + float d = c1 * c1 - 4 * c2 * c0; + if (d >= 0) { + float q = (float)Math.Sqrt(d); + if (c1 < 0) q = -q; + q = -(c1 + q) / 2; + float r0 = q / c2, r1 = c0 / q; + float r = Math.Abs(r0) < Math.Abs(r1) ? r0 : r1; + if (r * r <= dd) { + float y1 = (float)Math.Sqrt(dd - r * r) * bendDir; + a1 = ta - MathUtils.Atan2(y1, r); + a2 = MathUtils.Atan2(y1 / psy, (r - l1) / psx); + goto outer; + } + } + float minAngle = 0, minDist = float.MaxValue, minX = 0, minY = 0; + float maxAngle = 0, maxDist = 0, maxX = 0, maxY = 0; + float x = l1 + a, dist = x * x; + if (dist > maxDist) { + maxAngle = 0; + maxDist = dist; + maxX = x; + } + x = l1 - a; + dist = x * x; + if (dist < minDist) { + minAngle = MathUtils.PI; + minDist = dist; + minX = x; + } + float angle = (float)Math.Acos(-a * l1 / (aa - bb)); + x = a * MathUtils.Cos(angle) + l1; + float y = b * MathUtils.Sin(angle); + dist = x * x + y * y; + if (dist < minDist) { + minAngle = angle; + minDist = dist; + minX = x; + minY = y; + } + if (dist > maxDist) { + maxAngle = angle; + maxDist = dist; + maxX = x; + maxY = y; + } + if (dd <= (minDist + maxDist) / 2) { + a1 = ta - MathUtils.Atan2(minY * bendDir, minX); + a2 = minAngle * bendDir; + } else { + a1 = ta - MathUtils.Atan2(maxY * bendDir, maxX); + a2 = maxAngle * bendDir; + } } - float cos = (targetX * targetX + targetY * targetY - len1 * len1 - len2 * len2) / cosDenom; - if (cos < -1) - cos = -1; - else if (cos > 1) - cos = 1; - float childAngle = (float)Math.Acos(cos) * bendDirection; - float adjacent = len1 + len2 * cos, opposite = len2 * (float)Math.Sin(childAngle); - float parentAngle = (float)Math.Atan2(targetY * adjacent - targetX * opposite, targetX * adjacent + targetY * opposite); - float rotation = (parentAngle - offset) * radDeg - parentRotation; - if (rotation > 180) - rotation -= 360; - else if (rotation < -180) // - rotation += 360; - parent.rotationIK = parentRotation + rotation * alpha; - rotation = (childAngle + offset) * radDeg - childRotation; - if (rotation > 180) - rotation -= 360; - else if (rotation < -180) // - rotation += 360; - child.rotationIK = childRotation + (rotation + parent.worldRotation - child.parent.worldRotation) * alpha; + outer: + float offset = MathUtils.Atan2(cy, child.x) * sign2; + a1 = (a1 - offset) * MathUtils.radDeg + offset1; + a2 = (a2 + offset) * MathUtils.radDeg * sign2 + offset2; + if (a1 > 180) a1 -= 360; + else if (a1 < -180) a1 += 360; + if (a2 > 180) a2 -= 360; + else if (a2 < -180) a2 += 360; + float rotation = parent.rotation; + parent.UpdateWorldTransform(parent.x, parent.y, rotation + (a1 - rotation) * alpha, parent.scaleX, parent.scaleY); + rotation = child.rotation; + child.UpdateWorldTransform(child.x, cy, rotation + (a2 - rotation) * alpha, child.scaleX, child.scaleY); } } } diff --git a/spine-csharp/src/MathUtils.cs b/spine-csharp/src/MathUtils.cs new file mode 100644 index 000000000..58d3606a5 --- /dev/null +++ b/spine-csharp/src/MathUtils.cs @@ -0,0 +1,94 @@ +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.3 + * + * Copyright (c) 2013-2015, Esoteric Software + * All rights reserved. + * + * You are granted a perpetual, non-exclusive, non-sublicensable and + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), you may not (a) modify, + * translate, adapt or otherwise create derivative works, improvements of the + * Software or develop new applications using the Software or (b) remove, + * delete, alter or obscure any trademarks or any copyright, trademark, patent + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL ESOTERIC SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + +using System; + +namespace Spine { + public class MathUtils { + static public float PI = 3.1415927f; + static public float radDeg = 180f / PI; + static public float degRad = PI / 180; + + static private int SIN_BITS = 14; // 16KB. Adjust for accuracy. + static private int SIN_MASK = ~(-1 << SIN_BITS); + static private int SIN_COUNT = SIN_MASK + 1; + static private float radFull = PI * 2; + static private float degFull = 360; + static private float radToIndex = SIN_COUNT / radFull; + static private float degToIndex = SIN_COUNT / degFull; + static float[] sin = new float[SIN_COUNT]; + + static MathUtils () { + for (int i = 0; i < SIN_COUNT; i++) + sin[i] = (float)Math.Sin((i + 0.5f) / SIN_COUNT * radFull); + for (int i = 0; i < 360; i += 90) + sin[(int)(i * degToIndex) & SIN_MASK] = (float)Math.Sin(i * degRad); + } + + /** Returns the sine in radians from a lookup table. */ + static public float Sin (float radians) { + return sin[(int)(radians * radToIndex) & SIN_MASK]; + } + + /** Returns the cosine in radians from a lookup table. */ + static public float Cos (float radians) { + return sin[(int)((radians + PI / 2) * radToIndex) & SIN_MASK]; + } + + /** Returns the sine in radians from a lookup table. */ + static public float SinDeg (float degrees) { + return sin[(int)(degrees * degToIndex) & SIN_MASK]; + } + + /** Returns the cosine in radians from a lookup table. */ + static public float CosDeg (float degrees) { + return sin[(int)((degrees + 90) * degToIndex) & SIN_MASK]; + } + + /// Returns atan2 in radians, faster but less accurate than Math.Atan2. Average error of 0.00231 radians (0.1323 + /// degrees), largest error of 0.00488 radians (0.2796 degrees). + static public float Atan2 (float y, float x) { + if (x == 0f) { + if (y > 0f) return PI / 2; + if (y == 0f) return 0f; + return -PI / 2; + } + float atan, z = y / x; + if (Math.Abs(z) < 1f) { + atan = z / (1f + 0.28f * z * z); + if (x < 0f) return atan + (y < 0f ? -PI : PI); + return atan; + } + atan = PI / 2 - z / (z * z + 0.28f); + return y < 0f ? atan - PI : atan; + } + } +} diff --git a/spine-csharp/src/Skeleton.cs b/spine-csharp/src/Skeleton.cs index 0c97e1042..308d5606c 100644 --- a/spine-csharp/src/Skeleton.cs +++ b/spine-csharp/src/Skeleton.cs @@ -39,7 +39,8 @@ namespace Spine { internal ExposedList slots; internal ExposedList drawOrder; internal ExposedList ikConstraints; - private ExposedList> boneCache = new ExposedList>(); + internal ExposedList transformConstraints; + private ExposedList updateCache = new ExposedList(); internal Skin skin; internal float r = 1, g = 1, b = 1, a = 1; internal float time; @@ -89,81 +90,62 @@ namespace Spine { drawOrder.Add(slot); } - ikConstraints = new ExposedList(data.ikConstraints.Count); - foreach (IkConstraintData ikConstraintData in data.ikConstraints) - ikConstraints.Add(new IkConstraint(ikConstraintData, this)); + ikConstraints = new ExposedList(data.ikConstraints.Count); + foreach (IkConstraintData ikConstraintData in data.ikConstraints) + ikConstraints.Add(new IkConstraint(ikConstraintData, this)); + + transformConstraints = new ExposedList(data.transformConstraints.Count); + foreach (TransformConstraintData transformConstraintData in data.transformConstraints) + transformConstraints.Add(new TransformConstraint(transformConstraintData, this)); UpdateCache(); UpdateWorldTransform(); } - /// Caches information about bones and IK constraints. Must be called if bones or IK constraints are added or - /// removed. + /// Caches information about bones and constraints. Must be called if bones or constraints are added + /// or removed. public void UpdateCache () { - ExposedList> boneCache = this.boneCache; + ExposedList bones = this.bones; + ExposedList updateCache = this.updateCache; ExposedList ikConstraints = this.ikConstraints; + ExposedList transformConstraints = this.transformConstraints; int ikConstraintsCount = ikConstraints.Count; - - int arrayCount = ikConstraintsCount + 1; - if (boneCache.Count > arrayCount) boneCache.RemoveRange(arrayCount, boneCache.Count - arrayCount); - for (int i = 0, n = boneCache.Count; i < n; i++) - boneCache.Items[i].Clear(); - while (boneCache.Count < arrayCount) - boneCache.Add(new ExposedList()); - - ExposedList nonIkBones = boneCache.Items[0]; - + int transformConstraintsCount = transformConstraints.Count; + updateCache.Clear(); for (int i = 0, n = bones.Count; i < n; i++) { Bone bone = bones.Items[i]; - Bone current = bone; - do { - for (int ii = 0; ii < ikConstraintsCount; ii++) { - IkConstraint ikConstraint = ikConstraints.Items[ii]; - Bone parent = ikConstraint.bones.Items[0]; - Bone child = ikConstraint.bones.Items[ikConstraint.bones.Count - 1]; - while (true) { - if (current == child) { - boneCache.Items[ii].Add(bone); - boneCache.Items[ii + 1].Add(bone); - goto outer; - } - if (child == parent) break; - child = child.parent; - } + updateCache.Add(bone); + for (int ii = 0; ii < transformConstraintsCount; ii++) { + TransformConstraint transformConstraint = transformConstraints.Items[ii]; + if (bone == transformConstraint.bone) { + updateCache.Add(transformConstraint); + break; } - current = current.parent; - } while (current != null); - nonIkBones.Add(bone); - outer: { } + } + for (int ii = 0; ii < ikConstraintsCount; ii++) { + IkConstraint ikConstraint = ikConstraints.Items[ii]; + if (bone == ikConstraint.bones.Items[ikConstraint.bones.Count - 1]) { + updateCache.Add(ikConstraint); + break; + } + } } } /// Updates the world transform for each bone and applies IK constraints. public void UpdateWorldTransform () { - ExposedList bones = this.bones; - for (int ii = 0, nn = bones.Count; ii < nn; ii++) { - Bone bone = bones.Items[ii]; - bone.rotationIK = bone.rotation; - } - ExposedList> boneCache = this.boneCache; - ExposedList ikConstraints = this.ikConstraints; - int i = 0, last = boneCache.Count - 1; - while (true) { - ExposedList updateBones = boneCache.Items[i]; - for (int ii = 0, nn = updateBones.Count; ii < nn; ii++) - updateBones.Items[ii].UpdateWorldTransform(); - if (i == last) break; - ikConstraints.Items[i].apply(); - i++; - } + ExposedList updateCache = this.updateCache; + for (int i = 0, n = updateCache.Count; i < n; i++) + updateCache.Items[i].Update(); } - /// Sets the bones and slots to their setup pose values. + /// Sets the bones, constraints, and slots to their setup pose values. public void SetToSetupPose () { SetBonesToSetupPose(); SetSlotsToSetupPose(); } + /// Sets the bones and constraints to their setup pose values. public void SetBonesToSetupPose () { ExposedList bones = this.bones; for (int i = 0, n = bones.Count; i < n; i++) @@ -171,9 +153,17 @@ namespace Spine { ExposedList ikConstraints = this.ikConstraints; for (int i = 0, n = ikConstraints.Count; i < n; i++) { - IkConstraint ikConstraint = ikConstraints.Items[i]; - ikConstraint.bendDirection = ikConstraint.data.bendDirection; - ikConstraint.mix = ikConstraint.data.mix; + IkConstraint constraint = ikConstraints.Items[i]; + constraint.bendDirection = constraint.data.bendDirection; + constraint.mix = constraint.data.mix; + } + + ExposedList transformConstraints = this.transformConstraints; + for (int i = 0, n = transformConstraints.Count; i < n; i++) { + TransformConstraint constraint = transformConstraints.Items[i]; + constraint.translateMix = constraint.data.translateMix; + constraint.x = constraint.data.x; + constraint.y = constraint.data.y; } } @@ -293,12 +283,23 @@ namespace Spine { } /** @return May be null. */ - public IkConstraint FindIkConstraint (String ikConstraintName) { - if (ikConstraintName == null) throw new ArgumentNullException("ikConstraintName cannot be null."); + public IkConstraint FindIkConstraint (String constraintName) { + if (constraintName == null) throw new ArgumentNullException("constraintName cannot be null."); ExposedList ikConstraints = this.ikConstraints; for (int i = 0, n = ikConstraints.Count; i < n; i++) { IkConstraint ikConstraint = ikConstraints.Items[i]; - if (ikConstraint.data.name == ikConstraintName) return ikConstraint; + if (ikConstraint.data.name == constraintName) return ikConstraint; + } + return null; + } + + /** @return May be null. */ + public TransformConstraint FindTransformConstraint (String constraintName) { + if (constraintName == null) throw new ArgumentNullException("constraintName cannot be null."); + ExposedList transformConstraints = this.transformConstraints; + for (int i = 0, n = transformConstraints.Count; i < n; i++) { + TransformConstraint transformConstraint = transformConstraints.Items[i]; + if (transformConstraint.data.name == constraintName) return transformConstraint; } return null; } diff --git a/spine-csharp/src/SkeletonBinary.cs b/spine-csharp/src/SkeletonBinary.cs index f72bb83ae..e7e9c31eb 100644 --- a/spine-csharp/src/SkeletonBinary.cs +++ b/spine-csharp/src/SkeletonBinary.cs @@ -45,8 +45,6 @@ namespace Spine { public const int TIMELINE_TRANSLATE = 2; public const int TIMELINE_ATTACHMENT = 3; public const int TIMELINE_COLOR = 4; - public const int TIMELINE_FLIPX = 5; - public const int TIMELINE_FLIPY = 6; public const int CURVE_LINEAR = 0; public const int CURVE_STEPPED = 1; @@ -130,8 +128,6 @@ namespace Spine { boneData.scaleY = ReadFloat(input); boneData.rotation = ReadFloat(input); boneData.length = ReadFloat(input) * scale; - boneData.flipX = ReadBoolean(input); - boneData.flipY = ReadBoolean(input); boneData.inheritScale = ReadBoolean(input); boneData.inheritRotation = ReadBoolean(input); if (nonessential) ReadInt(input); // Skip bone color. @@ -149,6 +145,17 @@ namespace Spine { skeletonData.ikConstraints.Add(ikConstraintData); } + // Transform constraints. + for (int i = 0, n = ReadInt(input, true); i < n; i++) { + TransformConstraintData transformConstraintData = new TransformConstraintData(ReadString(input)); + transformConstraintData.bone = skeletonData.bones.Items[ReadInt(input, true)]; + transformConstraintData.target = skeletonData.bones.Items[ReadInt(input, true)]; + transformConstraintData.translateMix = ReadFloat(input); + transformConstraintData.x = ReadFloat(input); + transformConstraintData.y = ReadFloat(input); + skeletonData.transformConstraints.Add(transformConstraintData); + } + // Slots. for (int i = 0, n = ReadInt(input, true); i < n; i++) { String slotName = ReadString(input); @@ -269,10 +276,10 @@ namespace Spine { } return mesh; } - case AttachmentType.skinnedmesh: { + case AttachmentType.weightedmesh: { String path = ReadString(input); if (path == null) path = name; - SkinnedMeshAttachment mesh = attachmentLoader.NewSkinnedMeshAttachment(skin, name, path); + WeightedMeshAttachment mesh = attachmentLoader.NewWeightedMeshAttachment(skin, name, path); if (mesh == null) return null; mesh.Path = path; float[] uvs = ReadFloatArray(input, 1); @@ -422,17 +429,6 @@ namespace Spine { duration = Math.Max(duration, timeline.frames[frameCount * 3 - 3]); break; } - case TIMELINE_FLIPX: - case TIMELINE_FLIPY: { - FlipXTimeline timeline = timelineType == TIMELINE_FLIPX ? new FlipXTimeline(frameCount) : new FlipYTimeline( - frameCount); - timeline.boneIndex = boneIndex; - for (int frameIndex = 0; frameIndex < frameCount; frameIndex++) - timeline.SetFrame(frameIndex, ReadFloat(input), ReadBoolean(input)); - timelines.Add(timeline); - duration = Math.Max(duration, timeline.frames[frameCount * 2 - 2]); - break; - } } } } @@ -470,7 +466,7 @@ namespace Spine { if (attachment is MeshAttachment) vertexCount = ((MeshAttachment)attachment).vertices.Length; else - vertexCount = ((SkinnedMeshAttachment)attachment).weights.Length / 3 * 2; + vertexCount = ((WeightedMeshAttachment)attachment).weights.Length / 3 * 2; int end = ReadInt(input, true); if (end == 0) { @@ -544,7 +540,7 @@ namespace Spine { for (int i = 0; i < eventCount; i++) { float time = ReadFloat(input); EventData eventData = skeletonData.events.Items[ReadInt(input, true)]; - Event e = new Event(eventData); + Event e = new Event(time, eventData); e.Int = ReadInt(input, false); e.Float = ReadFloat(input); e.String = ReadBoolean(input) ? ReadString(input) : eventData.String; diff --git a/spine-csharp/src/SkeletonData.cs b/spine-csharp/src/SkeletonData.cs index f7b41a35a..92f149640 100644 --- a/spine-csharp/src/SkeletonData.cs +++ b/spine-csharp/src/SkeletonData.cs @@ -42,6 +42,7 @@ namespace Spine { internal ExposedList events = new ExposedList(); internal ExposedList animations = new ExposedList(); internal ExposedList ikConstraints = new ExposedList(); + internal ExposedList transformConstraints = new ExposedList(); internal float width, height; internal String version, hash, imagesPath; @@ -140,12 +141,25 @@ namespace Spine { // --- IK constraints. /// May be null. - public IkConstraintData FindIkConstraint (String ikConstraintName) { - if (ikConstraintName == null) throw new ArgumentNullException("ikConstraintName cannot be null."); + public IkConstraintData FindIkConstraint (String constraintName) { + if (constraintName == null) throw new ArgumentNullException("constraintName cannot be null."); ExposedList ikConstraints = this.ikConstraints; for (int i = 0, n = ikConstraints.Count; i < n; i++) { IkConstraintData ikConstraint = ikConstraints.Items[i]; - if (ikConstraint.name == ikConstraintName) return ikConstraint; + if (ikConstraint.name == constraintName) return ikConstraint; + } + return null; + } + + // --- Transform constraints. + + /// May be null. + public TransformConstraintData FindTransformConstraint (String constraintName) { + if (constraintName == null) throw new ArgumentNullException("constraintName cannot be null."); + ExposedList transformConstraints = this.transformConstraints; + for (int i = 0, n = transformConstraints.Count; i < n; i++) { + TransformConstraintData transformConstraint = transformConstraints.Items[i]; + if (transformConstraint.name == constraintName) return transformConstraint; } return null; } diff --git a/spine-csharp/src/SkeletonJson.cs b/spine-csharp/src/SkeletonJson.cs index 17d2523f9..8388100f8 100644 --- a/spine-csharp/src/SkeletonJson.cs +++ b/spine-csharp/src/SkeletonJson.cs @@ -118,8 +118,6 @@ namespace Spine { boneData.rotation = GetFloat(boneMap, "rotation", 0); boneData.scaleX = GetFloat(boneMap, "scaleX", 1); boneData.scaleY = GetFloat(boneMap, "scaleY", 1); - boneData.flipX = GetBoolean(boneMap, "flipX", false); - boneData.flipY = GetBoolean(boneMap, "flipY", false); boneData.inheritScale = GetBoolean(boneMap, "inheritScale", true); boneData.inheritRotation = GetBoolean(boneMap, "inheritRotation", true); skeletonData.bones.Add(boneData); @@ -147,6 +145,27 @@ namespace Spine { } } + // Transform constraints. + if (root.ContainsKey("transform")) { + foreach (Dictionary transformMap in (List)root["ik"]) { + TransformConstraintData transformConstraintData = new TransformConstraintData((String)transformMap["name"]); + + String boneName = (String)transformMap["bone"]; + transformConstraintData.target = skeletonData.FindBone(boneName); + if (transformConstraintData.target == null) throw new Exception("Bone not found: " + boneName); + + String targetName = (String)transformMap["target"]; + transformConstraintData.target = skeletonData.FindBone(targetName); + if (transformConstraintData.target == null) throw new Exception("Target bone not found: " + targetName); + + transformConstraintData.translateMix = GetFloat(transformMap, "mix", 1); + transformConstraintData.x = GetFloat(transformMap, "x", 0); + transformConstraintData.y = GetFloat(transformMap, "y", 0); + + skeletonData.transformConstraints.Add(transformConstraintData); + } + } + // Slots. if (root.ContainsKey("slots")) { foreach (Dictionary slotMap in (List)root["slots"]) { @@ -226,8 +245,11 @@ namespace Spine { name = (String)map["name"]; var type = AttachmentType.region; - if (map.ContainsKey("type")) - type = (AttachmentType)Enum.Parse(typeof(AttachmentType), (String)map["type"], false); + if (map.ContainsKey("type")) { + var typeName = (String)map["type"]; + if (typeName == "skinnedmesh") typeName = "weightedmesh"; + type = (AttachmentType)Enum.Parse(typeof(AttachmentType), typeName , false); + } String path = name; if (map.ContainsKey("path")) @@ -281,8 +303,8 @@ namespace Spine { return mesh; } - case AttachmentType.skinnedmesh: { - SkinnedMeshAttachment mesh = attachmentLoader.NewSkinnedMeshAttachment(skin, name, path); + case AttachmentType.weightedmesh: { + WeightedMeshAttachment mesh = attachmentLoader.NewWeightedMeshAttachment(skin, name, path); if (mesh == null) return null; mesh.Path = path; @@ -478,21 +500,6 @@ namespace Spine { timelines.Add(timeline); duration = Math.Max(duration, timeline.frames[timeline.FrameCount * 3 - 3]); - } else if (timelineName == "flipX" || timelineName == "flipY") { - bool x = timelineName == "flipX"; - var timeline = x ? new FlipXTimeline(values.Count) : new FlipYTimeline(values.Count); - timeline.boneIndex = boneIndex; - - String field = x ? "x" : "y"; - int frameIndex = 0; - foreach (Dictionary valueMap in values) { - float time = (float)valueMap["time"]; - timeline.SetFrame(frameIndex, time, valueMap.ContainsKey(field) ? (bool)valueMap[field] : false); - frameIndex++; - } - timelines.Add(timeline); - duration = Math.Max(duration, timeline.frames[timeline.FrameCount * 2 - 2]); - } else throw new Exception("Invalid timeline type for a bone: " + timelineName + " (" + boneName + ")"); } @@ -536,7 +543,7 @@ namespace Spine { if (attachment is MeshAttachment) vertexCount = ((MeshAttachment)attachment).vertices.Length; else - vertexCount = ((SkinnedMeshAttachment)attachment).Weights.Length / 3 * 2; + vertexCount = ((WeightedMeshAttachment)attachment).Weights.Length / 3 * 2; int frameIndex = 0; foreach (Dictionary valueMap in values) { @@ -619,11 +626,12 @@ namespace Spine { foreach (Dictionary eventMap in eventsMap) { EventData eventData = skeletonData.FindEvent((String)eventMap["name"]); if (eventData == null) throw new Exception("Event not found: " + eventMap["name"]); - var e = new Event(eventData); + float time = (float)eventMap["time"]; + var e = new Event(time, eventData); e.Int = GetInt(eventMap, "int", eventData.Int); e.Float = GetFloat(eventMap, "float", eventData.Float); e.String = GetString(eventMap, "string", eventData.String); - timeline.SetFrame(frameIndex++, (float)eventMap["time"], e); + timeline.SetFrame(frameIndex++, time, e); } timelines.Add(timeline); duration = Math.Max(duration, timeline.frames[timeline.FrameCount - 1]); diff --git a/spine-csharp/src/TransformConstraint.cs b/spine-csharp/src/TransformConstraint.cs new file mode 100644 index 000000000..42ecd6b45 --- /dev/null +++ b/spine-csharp/src/TransformConstraint.cs @@ -0,0 +1,82 @@ +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.3 + * + * Copyright (c) 2013-2015, Esoteric Software + * All rights reserved. + * + * You are granted a perpetual, non-exclusive, non-sublicensable and + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), you may not (a) modify, + * translate, adapt or otherwise create derivative works, improvements of the + * Software or develop new applications using the Software or (b) remove, + * delete, alter or obscure any trademarks or any copyright, trademark, patent + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL ESOTERIC SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + +using System; +using System.Collections.Generic; + +namespace Spine { + public class TransformConstraint : IUpdatable { + internal TransformConstraintData data; + internal Bone bone, target; + internal float translateMix; + internal float x, y; + + public TransformConstraintData Data { get { return data; } } + public Bone Bone { get { return bone; } set { bone = value; } } + public Bone Target { get { return target; } set { target = value; } } + public float TranslateMix { get { return translateMix; } set { translateMix = value; } } + public float X { get { return x; } set { x = value; } } + public float Y { get { return y; } set { y = value; } } + + public TransformConstraint (TransformConstraintData data, Skeleton skeleton) { + if (data == null) throw new ArgumentNullException("data cannot be null."); + if (skeleton == null) throw new ArgumentNullException("skeleton cannot be null."); + this.data = data; + translateMix = data.translateMix; + x = data.x; + y = data.y; + + if (skeleton != null) { + bone = skeleton.FindBone(data.bone.name); + target = skeleton.FindBone(data.target.name); + } + } + + public void Update () { + Apply(); + } + + public void Apply () { + float translateMix = this.translateMix; + if (translateMix > 0) { + Bone bone = this.bone; + float tx, ty; + target.LocalToWorld(x, y, out tx, out ty); + bone.worldX += (tx - bone.worldX) * translateMix; + bone.worldY += (ty - bone.worldY) * translateMix; + } + } + + override public String ToString () { + return data.name; + } + } +} diff --git a/spine-csharp/src/TransformConstraintData.cs b/spine-csharp/src/TransformConstraintData.cs new file mode 100644 index 000000000..907add275 --- /dev/null +++ b/spine-csharp/src/TransformConstraintData.cs @@ -0,0 +1,58 @@ +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.3 + * + * Copyright (c) 2013-2015, Esoteric Software + * All rights reserved. + * + * You are granted a perpetual, non-exclusive, non-sublicensable and + * non-transferable license to use, install, execute and perform the Spine + * Runtimes Software (the "Software") and derivative works solely for personal + * or internal use. Without the written permission of Esoteric Software (see + * Section 2 of the Spine Software License Agreement), you may not (a) modify, + * translate, adapt or otherwise create derivative works, improvements of the + * Software or develop new applications using the Software or (b) remove, + * delete, alter or obscure any trademarks or any copyright, trademark, patent + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL ESOTERIC SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + +using System; +using System.Collections.Generic; + +namespace Spine { + public class TransformConstraintData { + internal String name; + internal BoneData bone, target; + internal float translateMix; + internal float x, y; + + public String Name { get { return name; } } + public BoneData Bone { get { return bone; } set { bone = value; } } + public BoneData Target { get { return target; } set { target = value; } } + public float TranslateMix { get { return translateMix; } set { translateMix = value; } } + public float X { get { return x; } set { x = value; } } + public float Y { get { return y; } set { y = value; } } + + public TransformConstraintData (String name) { + if (name == null) throw new ArgumentNullException("name cannot be null."); + this.name = name; + } + + override public String ToString () { + return name; + } + } +} diff --git a/spine-xna/example/data/raptor.json b/spine-xna/example/data/raptor.json index df9892de6..f51da0c54 100644 --- a/spine-xna/example/data/raptor.json +++ b/spine-xna/example/data/raptor.json @@ -1,59 +1,39 @@ { -"skeleton": { "hash": "r3IJRaLbaxgEoW1YBAOrYT69jB4", "spine": "Dev", "width": 1224.2, "height": 1052.38 }, +"skeleton": { "hash": "15WVcnQidENEDzYEsZjPafxAmE4", "spine": "Dev", "width": 1223.71, "height": 1052.13, "images": "./images/" }, "bones": [ { "name": "root" }, - { "name": "front_foot_goal", "parent": "root", "x": -45.79, "y": -28.67, "rotation": -0.94 }, - { "name": "hip", "parent": "root", "x": -136.78, "y": 415.47, "rotation": 3.15 }, - { "name": "rear_foot_goal", "parent": "root", "x": 33.43, "y": 30.81 }, - { "name": "front_leg1", "parent": "hip", "length": 251.74, "x": 27.36, "y": -28.27, "rotation": -51.5 }, - { "name": "front_leg_goal", "parent": "front_foot_goal", "x": -106.06, "y": 115.58 }, - { "name": "rear_leg1", "parent": "hip", "length": 226.27, "x": 55.19, "y": -71.25, "rotation": -54.76 }, - { "name": "rear_leg_goal", "parent": "rear_foot_goal", "x": -127.51, "y": 75.99 }, - { "name": "tail1", "parent": "hip", "length": 162.53, "x": -20.86, "y": 6.87, "rotation": 162.92 }, - { "name": "torso1", "parent": "hip", "length": 126.25, "x": 30.03, "y": -0.4, "rotation": -4.97 }, - { "name": "front_leg2", "parent": "front_leg1", "length": 208.54, "x": 251.03, "y": 0.16, "rotation": 261.93 }, - { "name": "rear_leg2", "parent": "rear_leg1", "length": 172.58, "x": 226.32, "y": 0.23, "rotation": -92.25 }, - { "name": "saddle", "parent": "torso1", "length": 50.91, "x": 4.56, "y": 71.86, "rotation": 91.8 }, - { "name": "tail2", "parent": "tail1", "length": 130.02, "x": 162.53, "y": -0.82, "rotation": 30.3 }, - { "name": "torso2", "parent": "torso1", "length": 121.2, "x": 126.25, "y": -0.37, "rotation": 39.84 }, - { "name": "front_arm1", "parent": "torso2", "length": 109.99, "x": 46.37, "y": -84.61, "rotation": 224.54 }, - { "name": "front_leg3", "parent": "front_leg2", "length": 118.18, "x": 208.5, "y": -1.63, "rotation": 85.46 }, - { "name": "neck", "parent": "torso2", "length": 70.59, "x": 121.19, "y": 0.34, "rotation": 41.37 }, - { "name": "rear_arm1", "parent": "torso2", "length": 109.56, "x": 57.05, "y": -95.38, "rotation": -124.71 }, - { "name": "rear_leg3", "parent": "rear_leg2", "length": 103.05, "x": 172.31, "y": 2.21, "rotation": 82.81 }, - { "name": "saddle_strap_front1", "parent": "saddle", "length": 97.27, "x": -27.36, "y": -73.38, "rotation": -148.11 }, - { "name": "saddle_strap_rear1", "parent": "saddle", "length": 38.62, "x": -33.34, "y": 87.32, "rotation": 151.13 }, - { "name": "spineboy_front_arm_goal", "parent": "saddle", "x": -50.7, "y": -96.93 }, - { "name": "spineboy_hip", "parent": "saddle", "length": 0.52, "x": 81.88, "y": 2.68, "rotation": 90.01 }, - { "name": "spineboy_rear_arm_goal", "parent": "saddle", "x": -30.43, "y": -100.08 }, - { "name": "stirrup", "parent": "saddle", "length": 78.17, "x": -81.94, "y": -103.38, "rotation": -68.85 }, - { "name": "stirrup_strap1", "parent": "saddle", "length": 43.69, "x": -20.38, "y": -29.37, "rotation": -135 }, - { "name": "tail3", "parent": "tail2", "length": 141.06, "x": 130.02, "y": 0.1, "rotation": 6.88 }, - { "name": "back_thigh", "parent": "spineboy_hip", "length": 71.15, "x": -9.57, "y": 2.31, "rotation": 160.75 }, - { "name": "front_arm2", "parent": "front_arm1", "length": 86.33, "x": 109.99, "y": 0.2, "rotation": 105.23 }, - { "name": "front_foot1", "parent": "front_leg3", "length": 57.79, "x": 118.19, "y": -0.79, "scaleX": 1.126, "rotation": 54.46 }, - { "name": "front_thigh", "parent": "spineboy_hip", "length": 77.79, "x": 15.51, "y": 17.01, "rotation": 163.34 }, + { "name": "rear_foot_goal", "parent": "root", "x": 33.43, "y": 30.81, "color": "ff0000ff" }, + { "name": "rear_leg_goal", "parent": "rear_foot_goal", "x": -127.51, "y": 75.99, "color": "ff0000ff" }, + { "name": "hip", "parent": "root", "x": -136.78, "y": 415.47, "rotation": 3.15, "color": "fbff00ff" }, + { "name": "rear_leg1", "parent": "hip", "length": 226.27, "x": 55.19, "y": -71.25, "rotation": -54.76, "color": "e07800ff" }, + { "name": "rear_leg2", "parent": "rear_leg1", "length": 172.58, "x": 226.32, "y": 0.23, "rotation": -92.25, "color": "e07800ff" }, + { "name": "rear_leg3", "parent": "rear_leg2", "length": 103.05, "x": 172.31, "y": 2.21, "rotation": 82.81, "color": "e07800ff" }, + { "name": "rear_foot1", "parent": "rear_leg3", "length": 84.51, "x": 102.37, "y": -0.02, "rotation": 75.43, "color": "e07800ff" }, { - "name": "gun", - "parent": "spineboy_hip", - "length": 181.35, - "x": 16.86, - "y": -7.89, - "scaleX": 0.816, - "scaleY": 0.816, - "rotation": 107.11 + "name": "rear_foot2", + "parent": "rear_foot1", + "length": 102.31, + "x": 84.49, + "y": -0.34, + "rotation": -6.13, + "inheritRotation": false, + "color": "e07800ff" + }, + { "name": "front_foot_goal", "parent": "root", "x": -45.79, "y": -28.67, "rotation": -0.94, "color": "ff0000ff" }, + { "name": "front_leg_goal", "parent": "front_foot_goal", "x": -106.06, "y": 115.58, "color": "ff0000ff" }, + { "name": "front_leg1", "parent": "hip", "length": 251.74, "x": 27.36, "y": -28.27, "rotation": -51.5, "color": "15ff00ff" }, + { "name": "front_leg2", "parent": "front_leg1", "length": 208.54, "x": 251.03, "y": 0.16, "rotation": 261.93, "color": "15ff00ff" }, + { "name": "front_leg3", "parent": "front_leg2", "length": 118.18, "x": 208.5, "y": -1.63, "rotation": 85.46, "color": "15ff00ff" }, + { + "name": "front_foot1", + "parent": "front_leg3", + "length": 57.79, + "x": 118.19, + "y": -0.79, + "scaleX": 1.126, + "rotation": 54.46, + "color": "15ff00ff" }, - { "name": "head", "parent": "neck", "length": 105.5, "x": 70.59, "y": 0.03, "rotation": 9.82 }, - { "name": "rear_arm2", "parent": "rear_arm1", "length": 85.8, "x": 109.56, "rotation": 123.56 }, - { "name": "rear_foot1", "parent": "rear_leg3", "length": 84.51, "x": 102.37, "y": -0.02, "rotation": 75.43 }, - { "name": "saddle_strap_front2", "parent": "saddle_strap_front1", "length": 102.74, "x": 97.29, "y": 0.3, "rotation": -11.13 }, - { "name": "saddle_strap_rear2", "parent": "saddle_strap_rear1", "length": 54.36, "x": 38.63, "y": -0.02 }, - { "name": "spineboy_torso", "parent": "spineboy_hip", "length": 122.45, "x": 1.05, "y": -2.1, "rotation": -75.85 }, - { "name": "stirrup_strap2", "parent": "stirrup_strap1", "length": 51.62, "x": 43.7, "rotation": 9.38 }, - { "name": "tail4", "parent": "tail3", "length": 126.25, "x": 141.05, "y": 0.64, "rotation": -18.86 }, - { "name": "back_arm", "parent": "spineboy_torso", "length": 67.21, "x": 96.33, "y": -38.46, "rotation": -120.89 }, - { "name": "back_knee", "parent": "back_thigh", "length": 97.17, "x": 71.15, "y": -0.28, "rotation": -54.97 }, - { "name": "front_arm", "parent": "spineboy_torso", "length": 74.51, "x": 101.37, "y": 9.78, "rotation": -118.16 }, { "name": "front_foot2", "parent": "front_foot1", @@ -63,31 +43,9 @@ "scaleX": 0.73, "scaleY": 0.823, "rotation": -0.46, - "inheritRotation": false + "inheritRotation": false, + "color": "15ff00ff" }, - { "name": "front_hand", "parent": "front_arm2", "length": 47.55, "x": 86.33, "y": 0.06, "rotation": -56.83 }, - { "name": "horn_front", "parent": "head", "length": 87.48, "x": 82.09, "y": -221.36, "rotation": 49.36 }, - { "name": "horn_rear", "parent": "head", "length": 73.78, "x": 99.27, "y": -226.79, "rotation": 44.31 }, - { "name": "jaw", "parent": "head", "length": 203.76, "x": 29.36, "y": -40.15, "rotation": -140.14, "inheritScale": false }, - { "name": "lower_leg", "parent": "front_thigh", "length": 111.5, "x": 77.92, "y": -0.1, "rotation": -49.62 }, - { "name": "neck2", "parent": "spineboy_torso", "length": 32.04, "x": 113.44, "y": -15.21, "rotation": -45.22 }, - { - "name": "rear_foot2", - "parent": "rear_foot1", - "length": 102.31, - "x": 84.49, - "y": -0.34, - "rotation": -6.13, - "inheritRotation": false - }, - { "name": "rear_hand", "parent": "rear_arm2", "length": 45.8, "x": 85.8, "y": 0.1, "rotation": -76.28 }, - { "name": "saddle_strap_rear3", "parent": "saddle_strap_rear2", "length": 44.04, "x": 54.86, "y": 0.19, "rotation": 3.63 }, - { "name": "tail5", "parent": "tail4", "length": 91.06, "x": 126.25, "y": -0.47, "rotation": -22.34 }, - { "name": "tongue1", "parent": "head", "length": 55.11, "x": 20.81, "y": -104.75, "rotation": -129.04 }, - { "name": "back_bracer", "parent": "back_arm", "length": 43.68, "x": 67.21, "y": -0.31, "rotation": 17.48 }, - { "name": "bone", "parent": "horn_front", "x": 294.58, "y": 234.17, "rotation": -138.59 }, - { "name": "bone2", "parent": "horn_rear", "x": 232.68, "y": 245.84, "rotation": -133.55 }, - { "name": "front_bracer", "parent": "front_arm", "length": 39.85, "x": 74.52, "y": -0.41, "rotation": 20.3 }, { "name": "front_foot3", "parent": "front_foot2", @@ -95,12 +53,137 @@ "x": 49.71, "y": 20.65, "scaleX": 1.154, - "rotation": -3.16, - "inheritRotation": false + "rotation": -2.7, + "color": "15ff00ff" }, - { "name": "head2", "parent": "neck2", "length": 249.64, "x": 23.01, "y": 3.47, "rotation": 11.65 }, - { "name": "tongue2", "parent": "tongue1", "length": 44.66, "x": 55.59, "y": 0.93, "rotation": 8.93 }, - { "name": "back_hand", "parent": "back_bracer", "length": 41.97, "x": 43.68, "y": 0.06, "rotation": 9.2, "inheritRotation": false }, + { "name": "tail1", "parent": "hip", "length": 162.53, "x": -20.86, "y": 6.87, "rotation": 162.92, "color": "eaff00ff" }, + { "name": "tail2", "parent": "tail1", "length": 130.02, "x": 162.53, "y": -0.82, "rotation": 30.3, "color": "eaff00ff" }, + { "name": "tail3", "parent": "tail2", "length": 141.06, "x": 130.02, "y": 0.1, "rotation": 6.88, "color": "eaff00ff" }, + { "name": "tail4", "parent": "tail3", "length": 126.25, "x": 141.05, "y": 0.64, "rotation": -18.86, "color": "eaff00ff" }, + { "name": "tail5", "parent": "tail4", "length": 91.06, "x": 126.25, "y": -0.47, "rotation": -22.34, "color": "eaff00ff" }, + { "name": "torso1", "parent": "hip", "length": 126.25, "x": 30.03, "y": -0.4, "rotation": -4.97, "color": "eaff00ff" }, + { "name": "saddle", "parent": "torso1", "length": 50.91, "x": 4.56, "y": 71.86, "rotation": 91.8, "color": "ff7300ff" }, + { "name": "stirrup", "parent": "saddle", "length": 78.17, "x": -81.94, "y": -103.38, "rotation": -68.85, "color": "ff7300ff" }, + { "name": "stirrup_strap1", "parent": "saddle", "length": 43.69, "x": -20.38, "y": -29.37, "rotation": -135, "color": "ff7300ff" }, + { "name": "stirrup_strap2", "parent": "stirrup_strap1", "length": 51.62, "x": 43.7, "rotation": 9.38, "color": "ff7300ff" }, + { "name": "spineboy_rear_arm_goal", "parent": "saddle", "x": -30.43, "y": -100.08, "color": "ff0001ff" }, + { "name": "spineboy_hip", "parent": "saddle", "length": 0.52, "x": 81.88, "y": 2.68, "rotation": 90.01, "color": "ffffffff" }, + { + "name": "spineboy_torso", + "parent": "spineboy_hip", + "length": 122.45, + "x": 1.05, + "y": -2.1, + "rotation": -75.85, + "color": "ffffffff" + }, + { "name": "neck2", "parent": "spineboy_torso", "length": 32.04, "x": 113.44, "y": -15.21, "rotation": -45.22, "color": "ffffffff" }, + { "name": "head2", "parent": "neck2", "length": 249.64, "x": 23.01, "y": 3.47, "rotation": 11.65, "color": "ffffffff" }, + { + "name": "gun", + "parent": "spineboy_hip", + "length": 181.35, + "x": 16.86, + "y": -7.89, + "scaleX": 0.816, + "scaleY": 0.816, + "rotation": 107.11, + "color": "ffffffff" + }, + { "name": "back_thigh", "parent": "spineboy_hip", "length": 71.15, "x": -9.57, "y": 2.31, "rotation": 160.75, "color": "ffffffff" }, + { "name": "back_knee", "parent": "back_thigh", "length": 97.17, "x": 71.15, "y": -0.28, "rotation": -54.97, "color": "ffffffff" }, + { "name": "spineboy_front_arm_goal", "parent": "saddle", "x": -50.7, "y": -96.93, "color": "ff0004ff" }, + { + "name": "front_thigh", + "parent": "spineboy_hip", + "length": 77.79, + "x": 15.51, + "y": 17.01, + "rotation": 163.34, + "color": "ffffffff" + }, + { "name": "lower_leg", "parent": "front_thigh", "length": 111.5, "x": 77.92, "y": -0.1, "rotation": -49.62, "color": "ffffffff" }, + { + "name": "saddle_strap_rear1", + "parent": "saddle", + "length": 38.62, + "x": -33.34, + "y": 87.32, + "rotation": 151.13, + "color": "ff7300ff" + }, + { "name": "saddle_strap_rear2", "parent": "saddle_strap_rear1", "length": 54.36, "x": 38.63, "y": -0.02, "color": "ff7300ff" }, + { + "name": "saddle_strap_rear3", + "parent": "saddle_strap_rear2", + "length": 44.04, + "x": 54.86, + "y": 0.19, + "rotation": 3.63, + "color": "ff7300ff" + }, + { + "name": "saddle_strap_front1", + "parent": "saddle", + "length": 97.27, + "x": -27.36, + "y": -73.38, + "rotation": -148.11, + "color": "ff7300ff" + }, + { + "name": "saddle_strap_front2", + "parent": "saddle_strap_front1", + "length": 102.74, + "x": 97.29, + "y": 0.3, + "rotation": -11.13, + "color": "ff7300ff" + }, + { "name": "torso2", "parent": "torso1", "length": 121.2, "x": 126.25, "y": -0.37, "rotation": 39.84, "color": "eaff00ff" }, + { "name": "rear_arm1", "parent": "torso2", "length": 109.56, "x": 57.05, "y": -95.38, "rotation": -124.71, "color": "e07800ff" }, + { "name": "rear_arm2", "parent": "rear_arm1", "length": 85.8, "x": 109.56, "rotation": 123.56, "color": "e07800ff" }, + { "name": "rear_hand", "parent": "rear_arm2", "length": 45.8, "x": 85.8, "y": 0.1, "rotation": -76.28, "color": "e07800ff" }, + { "name": "neck", "parent": "torso2", "length": 70.59, "x": 121.19, "y": 0.34, "rotation": 41.37, "color": "eaff00ff" }, + { "name": "head", "parent": "neck", "length": 105.5, "x": 70.59, "y": 0.03, "rotation": 9.82, "color": "eaff00ff" }, + { "name": "tongue1", "parent": "head", "length": 55.11, "x": 20.81, "y": -104.75, "rotation": -129.04, "color": "ffff00ff" }, + { "name": "tongue2", "parent": "tongue1", "length": 44.66, "x": 55.59, "y": 0.93, "rotation": 8.93, "color": "fff200ff" }, + { "name": "tongue3", "parent": "tongue2", "length": 43.64, "x": 44.26, "y": -0.2, "rotation": 12.86, "color": "fff200ff" }, + { "name": "jaw", "parent": "head", "length": 203.76, "x": 29.36, "y": -40.15, "rotation": -140.14, "color": "ffff00ff" }, + { "name": "horn_rear", "parent": "head", "length": 73.78, "x": 99.27, "y": -226.79, "rotation": 44.31, "color": "e07800ff" }, + { "name": "rear_arm_target", "parent": "horn_rear", "x": 232.68, "y": 245.84, "rotation": -133.55, "color": "e07800ff" }, + { + "name": "back_arm", + "parent": "spineboy_torso", + "length": 67.21, + "x": 96.33, + "y": -38.46, + "rotation": -120.89, + "color": "ffffffff" + }, + { "name": "back_bracer", "parent": "back_arm", "length": 43.68, "x": 67.21, "y": -0.31, "rotation": 17.48, "color": "ffffffff" }, + { + "name": "back_hand", + "parent": "back_bracer", + "length": 41.97, + "x": 43.68, + "y": 0.06, + "rotation": 9.2, + "inheritRotation": false, + "color": "ffffffff" + }, + { "name": "horn_front", "parent": "head", "length": 87.48, "x": 82.09, "y": -221.36, "rotation": 49.36, "color": "15ff00ff" }, + { "name": "front_arm_target", "parent": "horn_front", "x": 294.58, "y": 234.17, "rotation": -138.59, "color": "15ff00ff" }, + { + "name": "front_arm", + "parent": "spineboy_torso", + "length": 74.51, + "x": 101.37, + "y": 9.78, + "rotation": -118.16, + "color": "ffffffff" + }, + { "name": "front_bracer", "parent": "front_arm", "length": 39.85, "x": 74.52, "y": -0.41, "rotation": 20.3, "color": "ffffffff" }, { "name": "front_hand2", "parent": "front_bracer", @@ -108,42 +191,44 @@ "x": 39.98, "y": -0.89, "rotation": 13.9, - "inheritRotation": false + "inheritRotation": false, + "color": "ffffffff" }, - { "name": "tongue3", "parent": "tongue2", "length": 43.64, "x": 44.26, "y": -0.2, "rotation": 12.86 } + { "name": "front_arm1", "parent": "torso2", "length": 109.99, "x": 46.37, "y": -84.61, "rotation": 224.54, "color": "15ff00ff" }, + { "name": "front_arm2", "parent": "front_arm1", "length": 86.33, "x": 109.99, "y": 0.2, "rotation": 105.23, "color": "15ff00ff" }, + { "name": "front_hand", "parent": "front_arm2", "length": 47.55, "x": 86.33, "y": 0.06, "rotation": -56.83, "color": "15ff00ff" } ], "ik": [ { - "name": "front_leg_goal", - "bones": [ "front_leg1", "front_leg2" ], - "target": "front_leg_goal", - "bendPositive": false - }, - { - "name": "rear_leg_goal", - "bones": [ "rear_leg1", "rear_leg2" ], - "target": "rear_leg_goal", - "bendPositive": false + "name": "front_arm_goal", + "bones": [ "front_arm", "front_bracer" ], + "target": "front_arm_target" }, { "name": "front_foot_goal", "bones": [ "front_leg3", "front_foot1" ], "target": "front_foot_goal" }, + { + "name": "front_leg_goal", + "bones": [ "front_leg1", "front_leg2" ], + "target": "front_leg_goal", + "bendPositive": false + }, + { + "name": "rear_arm_goal", + "bones": [ "back_arm", "back_bracer" ], + "target": "rear_arm_target" + }, { "name": "rear_foot_goal", "bones": [ "rear_leg3", "rear_foot1" ], "target": "rear_foot_goal" }, { - "name": "stirrup", - "bones": [ "stirrup_strap1", "stirrup_strap2" ], - "target": "stirrup" - }, - { - "name": "spineboy_rear_leg_goal", - "bones": [ "back_thigh", "back_knee" ], - "target": "spineboy_rear_arm_goal", + "name": "rear_leg_goal", + "bones": [ "rear_leg1", "rear_leg2" ], + "target": "rear_leg_goal", "bendPositive": false }, { @@ -153,14 +238,15 @@ "bendPositive": false }, { - "name": "rear_arm_goal", - "bones": [ "back_arm", "back_bracer" ], - "target": "bone2" + "name": "spineboy_rear_leg_goal", + "bones": [ "back_thigh", "back_knee" ], + "target": "spineboy_rear_arm_goal", + "bendPositive": false }, { - "name": "front_arm_goal", - "bones": [ "front_arm", "front_bracer" ], - "target": "bone" + "name": "stirrup", + "bones": [ "stirrup_strap1", "stirrup_strap2" ], + "target": "stirrup" } ], "slots": [ @@ -236,9 +322,12 @@ "gun_nohand": { "type": "mesh", "uvs": [ 0.71081, 0.16149, 0.85807, 0.41784, 1, 0.6649, 1, 1, 0.71457, 1, 0.49802, 0.6905, 0.30182, 0.41009, 0, 0.58226, 0, 0.1174, 0.27187, 0.12429, 0.24857, 0, 0.36658, 0, 0.61804, 0, 0.70575, 0.53546, 0.53668, 0.26855 ], - "triangles": [ 9, 10, 11, 14, 11, 12, 14, 12, 0, 9, 11, 14, 6, 9, 14, 14, 0, 1, 13, 14, 1, 6, 7, 8, 6, 8, 9, 13, 1, 2, 13, 5, 6, 13, 6, 14, 3, 4, 13, 5, 13, 4, 3, 13, 2 ], + "triangles": [ 3, 13, 2, 5, 13, 4, 3, 4, 13, 13, 6, 14, 13, 5, 6, 13, 1, 2, 6, 8, 9, 6, 7, 8, 13, 14, 1, 14, 0, 1, 6, 9, 14, 9, 11, 14, 14, 12, 0, 14, 11, 12, 9, 10, 11 ], "vertices": [ 23.48, 50.63, 83.86, 46.32, 142.05, 42.17, 197.91, 3.34, 163.7, -45.86, 86.15, -47.34, 15.9, -48.68, 8.42, -120.68, -69.06, -66.81, -35.32, -20.73, -58.83, -10.35, -44.69, 9.99, -14.55, 53.35, 85.21, 6.43, 20.45, 8.2 ], - "hull": 13 + "hull": 13, + "edges": [ 14, 12, 6, 8, 6, 4, 14, 16, 16, 18, 18, 20, 20, 22, 22, 24, 8, 10, 10, 12, 6, 26, 10, 26, 4, 2, 26, 2, 22, 28, 28, 26, 12, 28, 2, 0, 0, 24, 28, 0, 18, 12 ], + "width": 210, + "height": 203 } }, "head": { @@ -255,47 +344,62 @@ }, "raptor_arm_back": { "raptor_arm_back": { - "type": "skinnedmesh", - "uvs": [ 0.38711, 0.29362, 0.31382, 0.46513, 0.29242, 0.51521, 0.32475, 0.4931, 0.57587, 0.32138, 0.63254, 0.28263, 0.71632, 0.34507, 0.94948, 0.51888, 1, 0.65257, 1, 0.90624, 0.95462, 0.99934, 0.88957, 0.83204, 0.80294, 0.99998, 0.75236, 0.75696, 0.6654, 0.713, 0.62288, 0.63242, 0.58194, 0.65031, 0.22478, 0.80641, 0.07791, 0.73315, 0.07825, 0.66549, 0.07984, 0.34306, 0, 0.29728, 0, 0, 0.32334, 0, 0.94947, 0.60129 ], - "triangles": [ 6, 14, 15, 5, 6, 15, 5, 15, 4, 6, 7, 14, 24, 7, 8, 24, 14, 7, 13, 14, 24, 11, 13, 24, 11, 24, 8, 11, 8, 9, 10, 11, 9, 12, 13, 11, 15, 16, 4, 18, 19, 2, 16, 3, 4, 17, 18, 2, 17, 2, 3, 17, 3, 16, 20, 21, 22, 23, 20, 22, 0, 20, 23, 1, 20, 0, 1, 19, 20, 2, 19, 1 ], - "vertices": [ 2, 18, 36.95, 33.31, 0.91666, 34, 68.53, 41.05, 0.08333, 2, 18, 66.02, 20.35, 0.76813, 34, 41.41, 24.39, 0.23186, 2, 18, 74.51, 16.57, 0.64468, 34, 33.49, 19.53, 0.35531, 3, 18, 70.89, 21.97, 0.27669, 34, 39.99, 19.46, 0.67508, 52, -29.67, -39.91, 0.04822, 3, 18, 42.77, 63.89, 0.11483, 34, 90.47, 18.95, 0.60854, 52, -17.2, 9, 0.27661, 2, 34, 101.86, 18.83, 0.45955, 52, -14.38, 20.04, 0.54044, 2, 34, 106.47, 2.08, 0.0625, 52, 2.98, 20.56, 0.9375, 1, 52, 51.32, 21.98, 1, 1, 52, 72.39, 9.61, 1, 1, 52, 100.37, -23.87, 1, 1, 52, 104.96, -40.9, 1, 1, 52, 78.37, -25.61, 1, 1, 52, 86.05, -56.84, 1, 1, 52, 52.92, -30.04, 1, 2, 34, 62.24, -43.92, 0.0625, 52, 37.19, -33.33, 0.9375, 2, 34, 64.89, -28.65, 0.3125, 52, 22.98, -27.14, 0.6875, 2, 34, 57.69, -27.17, 0.30612, 52, 19.83, -33.78, 0.69387, 2, 18, 124.19, 3.83, 0.19395, 34, -5.09, -14.23, 0.80604, 2, 18, 110.77, -19.65, 0.3125, 34, -16.88, 10.1, 0.6875, 2, 18, 99.14, -19.2, 0.51613, 34, -9.93, 19.44, 0.48386, 2, 18, 43.73, -17.03, 0.9375, 34, 23.17, 63.92, 0.0625, 1, 18, 35.41, -29.77, 1, 1, 18, -15.68, -28.02, 1, 1, 18, -13.87, 24.65, 1, 1, 52, 60.41, 11.1, 1 ], - "hull": 24 + "type": "weightedmesh", + "uvs": [ 0.38711, 0.29362, 0.31382, 0.46513, 0.29242, 0.51521, 0.32475, 0.4931, 0.57587, 0.32138, 0.63254, 0.28263, 0.71632, 0.34507, 0.94948, 0.51888, 0.94947, 0.60129, 1, 0.65257, 1, 0.90624, 0.95462, 0.99934, 0.88957, 0.83204, 0.80294, 0.99998, 0.75236, 0.75696, 0.6654, 0.713, 0.62288, 0.63242, 0.58194, 0.65031, 0.22478, 0.80641, 0.07791, 0.73315, 0.07825, 0.66549, 0.07984, 0.34306, 0, 0.29728, 0, 0, 0.32334, 0 ], + "triangles": [ 13, 14, 12, 11, 12, 10, 12, 9, 10, 12, 8, 9, 12, 14, 8, 14, 15, 8, 8, 15, 7, 16, 17, 4, 6, 7, 15, 5, 16, 4, 5, 6, 16, 6, 15, 16, 18, 3, 17, 18, 2, 3, 18, 19, 2, 19, 20, 2, 17, 3, 4, 2, 20, 1, 1, 20, 21, 1, 21, 0, 0, 21, 24, 24, 21, 23, 21, 22, 23 ], + "vertices": [ 2, 44, 36.95, 33.31, 0.91666, 45, 68.53, 41.05, 0.08333, 2, 44, 66.01999, 20.35, 0.76813, 45, 41.41, 24.39, 0.23186, 2, 44, 74.51, 16.57, 0.64468, 45, 33.49, 19.53, 0.35531, 3, 44, 70.89, 21.97, 0.27669, 45, 39.99, 19.45999, 0.67508, 46, -29.67, -39.91, 0.04822, 3, 44, 42.77, 63.89, 0.11483, 45, 90.47, 18.95, 0.60854, 46, -17.2, 9, 0.2766, 2, 45, 101.86, 18.83, 0.45955, 46, -14.38, 20.04, 0.54044, 2, 45, 106.47, 2.08, 0.0625, 46, 2.98, 20.56, 0.9375, 1, 46, 51.32, 21.98, 1, 1, 46, 60.41, 11.1, 1, 1, 46, 72.39, 9.60999, 1, 1, 46, 100.37, -23.87, 1, 1, 46, 104.96, -40.9, 1, 1, 46, 78.37, -25.61, 1, 1, 46, 86.05, -56.84, 1, 1, 46, 52.92, -30.04, 1, 2, 45, 62.24, -43.92, 0.0625, 46, 37.18999, -33.33, 0.9375, 2, 45, 64.89, -28.65, 0.3125, 46, 22.98, -27.14, 0.6875, 2, 45, 57.69, -27.17, 0.30612, 46, 19.83, -33.78, 0.69387, 2, 44, 124.19, 3.83, 0.19395, 45, -5.09, -14.23, 0.80604, 2, 44, 110.77, -19.65, 0.3125, 45, -16.87999, 10.1, 0.6875, 2, 44, 99.14, -19.2, 0.51612, 45, -9.93, 19.44, 0.48386, 2, 44, 43.73, -17.03, 0.9375, 45, 23.17, 63.92, 0.0625, 1, 44, 35.41, -29.77, 1, 1, 44, -15.68, -28.02, 1, 1, 44, -13.87, 24.65, 1 ], + "hull": 25, + "edges": [ 44, 46, 44, 42, 38, 36, 32, 30, 30, 28, 28, 26, 24, 22, 18, 16, 16, 14, 46, 48, 38, 4, 6, 4, 6, 36, 42, 40, 40, 38, 4, 2, 2, 0, 40, 2, 10, 32, 36, 34, 34, 32, 10, 8, 8, 6, 34, 8, 14, 12, 12, 10, 12, 30, 18, 20, 22, 20, 26, 24, 48, 0 ], + "width": 163, + "height": 172 } }, "raptor_body": { "raptor_body": { - "type": "skinnedmesh", - "uvs": [ 0.89014, 0.11136, 1, 0.22194, 1, 0.42847, 0.88179, 0.38589, 0.874, 0.47986, 0.84783, 0.51728, 0.82504, 0.54984, 0.82403, 0.61606, 0.82305, 0.67972, 0.74042, 0.86709, 0.61596, 0.93097, 0.49649, 0.90968, 0.41186, 0.71379, 0.36955, 0.70086, 0.32823, 0.68824, 0.27515, 0.71028, 0.25301, 0.71948, 0.22568, 0.73082, 0.19092, 0.7164, 0.15952, 0.70337, 0.1301, 0.69116, 0.09227, 0.67546, 0.06029, 0.63165, 0.02855, 0.58817, 0, 0.49874, 0.05045, 0.53494, 0.08267, 0.54507, 0.11815, 0.55623, 0.14733, 0.54161, 0.17913, 0.52568, 0.20324, 0.5136, 0.22867, 0.50087, 0.24871, 0.47664, 0.27523, 0.44458, 0.32026, 0.39015, 0.37517, 0.35747, 0.43476, 0.32201, 0.4893, 0.35534, 0.56021, 0.39867, 0.61587, 0.40674, 0.67769, 0.4157, 0.69094, 0.31314, 0.69362, 0.14742, 0.79219, 0.08354, 0.51541, 0.74573, 0.62393, 0.75425, 0.70856, 0.7287, 0.76132, 0.63288, 0.7566, 0.49454, 0.80613, 0.27517, 0.65885, 0.59037, 0.53929, 0.54937, 0.42632, 0.52207, 0.3246, 0.55241, 0.22715, 0.618, 0.10574, 0.61341, 0.03969, 0.56109, 0.77916, 0.39461, 0.37556, 0.53721, 0.27743, 0.58416, 0.16958, 0.61582, 0.07259, 0.58715, 0.87545, 0.31683, 0.85488, 0.21417, 0.81012, 0.17403, 0.83214, 0.25662, 0.83823, 0.32214, 0.84622, 0.41719, 0.59954, 0.57003, 0.49074, 0.53763, 0.76917, 0.43888, 0.75912, 0.56845, 0.871, 0.3701, 0.85431, 0.43545, 0.89558, 0.32412, 0.90105, 0.22877, 0.91523, 0.20564, 0.93086, 0.219, 0.93446, 0.25858, 0.91956, 0.2776, 0.9061, 0.26423, 0.9415, 0.25929, 0.93589, 0.21545, 0.91669, 0.19192, 0.89297, 0.22201, 0.90245, 0.28513, 0.92006, 0.281, 0.92143, 0.29619, 0.94856, 0.2643, 0.19894, 0.61694, 0.13973, 0.61469, 0.25158, 0.60156 ], - "triangles": [ 10, 11, 45, 45, 11, 44, 11, 12, 44, 44, 68, 45, 12, 69, 44, 12, 58, 52, 21, 22, 55, 22, 61, 55, 22, 23, 61, 55, 61, 27, 23, 56, 61, 23, 24, 56, 61, 56, 26, 61, 26, 27, 26, 56, 25, 56, 24, 25, 19, 60, 89, 19, 20, 60, 60, 20, 90, 20, 21, 90, 90, 21, 55, 89, 60, 29, 90, 28, 60, 60, 28, 29, 55, 27, 90, 90, 27, 28, 16, 17, 54, 91, 15, 16, 18, 54, 17, 54, 18, 89, 16, 54, 91, 18, 19, 89, 15, 91, 59, 31, 91, 54, 89, 30, 54, 89, 29, 30, 32, 59, 91, 30, 31, 54, 32, 91, 31, 33, 59, 32, 14, 15, 59, 33, 53, 59, 13, 58, 12, 58, 13, 53, 59, 53, 14, 13, 14, 53, 34, 58, 53, 35, 52, 58, 34, 53, 33, 58, 34, 35, 44, 69, 51, 12, 52, 69, 51, 38, 39, 51, 69, 38, 38, 69, 37, 69, 52, 37, 36, 52, 35, 36, 37, 52, 4, 5, 70, 4, 57, 73, 73, 57, 67, 4, 73, 3, 3, 73, 72, 3, 74, 2, 74, 87, 2, 87, 88, 2, 88, 1, 2, 73, 67, 72, 72, 67, 66, 67, 57, 66, 57, 49, 66, 57, 41, 49, 3, 72, 74, 72, 62, 74, 72, 66, 62, 74, 85, 87, 85, 74, 84, 49, 65, 66, 66, 65, 62, 84, 74, 62, 63, 62, 65, 84, 62, 63, 41, 42, 49, 85, 86, 87, 88, 86, 81, 88, 87, 86, 85, 84, 80, 85, 80, 79, 80, 84, 75, 79, 80, 78, 49, 64, 65, 64, 49, 43, 1, 88, 82, 80, 75, 78, 82, 88, 81, 75, 77, 78, 82, 81, 77, 81, 78, 77, 65, 64, 63, 75, 76, 77, 75, 84, 76, 76, 84, 83, 76, 83, 82, 83, 0, 1, 0, 83, 84, 63, 0, 84, 63, 64, 0, 1, 82, 83, 49, 42, 43, 64, 43, 0, 57, 4, 70, 45, 50, 46, 46, 47, 8, 46, 50, 47, 8, 47, 7, 50, 71, 47, 47, 71, 7, 7, 71, 6, 71, 50, 48, 48, 50, 40, 50, 68, 40, 71, 48, 6, 6, 48, 5, 5, 48, 70, 48, 40, 70, 70, 40, 57, 57, 40, 41, 10, 45, 9, 45, 46, 9, 9, 46, 8, 45, 68, 50, 44, 51, 68, 68, 39, 40, 68, 51, 39 ], - "vertices": [ 1, 33, 147.48, -145.48, 1, 1, 33, 89.4, -281.62, 1, 1, 33, -28.24, -285.93, 1, 1, 33, -14.58, -194.68, 1, 5, 9, 363.21, 87.73, 0.02179, 14, 238.39, -84.13, 0.20397, 17, 32.1, -140.85, 0.18915, 33, -61.96, -132.26, 0.41197, 48, 129.57, 6.39, 0.1731, 5, 9, 332.7, 63.71, 0.06905, 14, 199.57, -83.03, 0.29424, 17, 3.69, -114.37, 0.2194, 33, -85.43, -101.32, 0.30859, 48, 127.34, -26.64, 0.1087, 5, 9, 307.08, 43.5, 0.11018, 14, 166.95, -82.13, 0.37282, 17, -20.18, -92.14, 0.24572, 33, -105.18, -75.34, 0.21862, 48, 123.08, -64.79, 0.05264, 5, 9, 307.75, 5.7, 0.18146, 14, 143.25, -111.59, 0.56512, 17, -57.43, -98.57, 0.12044, 33, -142.98, -75.33, 0.10715, 48, 154.85, -83.49, 0.0258, 2, 9, 308.7, -30.55, 0.25, 14, 120.75, -140.04, 0.75, 2, 9, 213.94, -142.7, 0.75, 14, -23.83, -165.45, 0.25, 3, 9, 64.45, -187.34, 0.31139, 8, -158.45, 158.33, 0.10379, 2, 84.16, -190.98, 0.5848, 1, 2, -61.47, -178.84, 1, 1, 2, -166.91, -67.95, 1, 6, 9, -246.26, -74, 0.04136, 8, 170.4, 123.13, 0.2858, 13, 66.71, 104.77, 0.57052, 27, -53.08, 110.21, 0.10163, 40, -220.11, 35.3, 5.1E-4, 54, -331.4, -106.89, 1.5E-4, 6, 9, -297.45, -69.74, 0.01855, 8, 221.11, 131.31, 0.14592, 13, 115.07, 87.47, 0.47026, 27, -6.58, 88.39, 0.30085, 40, -168.92, 31, 0.06162, 54, -282.82, -90.19, 0.00276, 6, 9, -359.24, -85.1, 0.00915, 8, 277.38, 161.09, 0.07914, 13, 178.73, 86.41, 0.35008, 27, 56.68, 81.29, 0.38638, 40, -107.13, 46.31, 0.15555, 54, -232.44, -51.26, 0.01966, 6, 9, -376.16, -107.83, 0.0043, 8, 294.31, 176.47, 0.03904, 13, 203.26, 86.51, 0.25323, 27, 83.06, 77.02, 0.42283, 40, -79.56, 53.53, 0.23684, 54, -210.89, -28.3, 0.04374, 6, 9, -416.83, -99.41, 0.00211, 8, 329.83, 188.85, 0.0196, 13, 238.06, 85.41, 0.18217, 27, 115.65, 74.66, 0.41374, 40, -49.53, 60.58, 0.30031, 54, -185.49, -14.98, 0.08205, 6, 9, -449.42, -116.23, 0.00122, 8, 364.17, 200.07, 0.01106, 13, 275.48, 71.62, 0.13243, 27, 152.97, 53.58, 0.37336, 40, -5.82, 53.94, 0.34144, 54, -142.85, 0.11, 0.14047, 6, 9, -498.22, -88.19, 7.8E-4, 8, 411.52, 197.55, 0.00669, 13, 313.81, 53.61, 0.09623, 27, 188.04, 35.82, 0.32105, 40, 31.84, 49.3, 0.36432, 54, -106.46, 7.49, 0.21089, 6, 9, -524.31, -113.4, 5.8E-4, 8, 437.98, 213.03, 0.00423, 13, 345.74, 45.54, 0.06864, 27, 219.6, 19.28, 0.26387, 40, 68.31, 43.02, 0.36996, 54, -70.13, 18.19, 0.2927, 6, 9, -580.94, -76.79, 4.7E-4, 8, 494.56, 206.4, 0.00237, 13, 390.81, 21.3, 0.0452, 27, 261.62, -3.66, 0.20066, 40, 114.55, 37.83, 0.35931, 54, -26.15, 30.34, 0.39196, 6, 9, -621.23, -53.98, 4.4E-4, 8, 539.16, 193.96, 0.00115, 13, 423.87, -11.11, 0.02629, 27, 291.46, -39.06, 0.13478, 40, 154.83, 14.99, 0.33453, 54, 19.91, 25.67, 0.50278, 6, 9, -661.22, -31.34, 4.6E-4, 8, 583.41, 181.62, 5.6E-4, 13, 456.68, -43.27, 0.01512, 27, 321.06, -74.2, 0.08778, 40, 194.79, -7.66, 0.31014, 54, 65.62, 21.04, 0.58591, 6, 9, -698.76, 17.64, 4.7E-4, 8, 631.64, 143.1, 4.0E-4, 13, 480.34, -100.28, 0.01183, 27, 339.2, -133.2, 0.07247, 40, 232.3, -56.69, 0.30126, 54, 119.7, -8.69, 0.61353, 6, 9, -636.21, 0.4, 4.5E-4, 8, 566.79, 144.78, 5.5E-4, 13, 424.34, -67.52, 0.01513, 27, 286.57, -95.27, 0.08778, 40, 169.77, -39.4, 0.31045, 54, 55.51, -18.08, 0.5856, 6, 9, -596.68, -3.21, 4.2E-4, 8, 527.55, 138.78, 0.00111, 13, 387.08, -53.84, 0.02607, 27, 250.77, -78.11, 0.13421, 40, 130.24, -35.75, 0.33502, 54, 17.87, -30.67, 0.50314, 6, 9, -553.14, -7.2, 4.2E-4, 8, 484.33, 132.17, 0.00229, 13, 346.04, -38.78, 0.04477, 27, 211.34, -59.22, 0.19954, 40, 86.7, -31.72, 0.3598, 54, -23.59, -44.54, 0.39316, 6, 9, -516.96, -25.93, 4.7E-4, 8, 449.17, 125.97, 0.00408, 13, 311.45, -35.25, 0.06808, 27, 175.89, -56.83, 0.26228, 40, 51.53, -43.14, 0.37032, 54, -52.88, -67.87, 0.29473, 6, 9, -479.88, 14.24, 6.0E-4, 8, 418.38, 93.72, 0.00651, 13, 269.72, -40.64, 0.09608, 27, 135.19, -53.82, 0.32015, 40, 13.42, -53.11, 0.36453, 54, -82.03, -93.66, 0.21211, 6, 9, -451.64, 0.32, 8.3E-4, 8, 390.82, 86.58, 0.01046, 13, 241.19, -39.8, 0.13162, 27, 105.59, -52.93, 0.37317, 40, -16.25, -62.16, 0.34265, 54, -108.34, -111.24, 0.14123, 6, 9, -420.35, 31.66, 0.00137, 8, 364.8, 62.48, 0.01849, 13, 207.71, -42.14, 0.18078, 27, 73.33, -49.43, 0.41415, 40, -46.11, -70.49, 0.30264, 54, -129.51, -133.56, 0.08254, 6, 9, -399.11, 28.98, 0.00258, 8, 345.49, 47.53, 0.03705, 13, 182.34, -50.62, 0.25183, 27, 45.87, -56.62, 0.4234, 40, -71.57, -84.96, 0.24035, 54, -150.85, -153.35, 0.04477, 6, 9, -365.43, 66.79, 0.00485, 8, 319.95, 15.15, 0.07594, 13, 145.6, -61.95, 0.35325, 27, 9.61, -63.26, 0.38742, 40, -101.06, -105.58, 0.15807, 54, -165.65, -187.83, 0.02044, 6, 9, -312.31, 100.78, 0.00731, 8, 276.58, -30.61, 0.13928, 13, 85.52, -81.11, 0.48508, 27, -52.01, -76.62, 0.30338, 40, -154.2, -139.52, 0.06214, 54, -200.6, -240.31, 0.00279, 6, 9, -242.48, 124.41, 0.00974, 8, 214.5, -70.36, 0.27055, 13, 11.97, -85.98, 0.61489, 27, -125.69, -74.48, 0.10409, 40, -224.04, -163.1, 5.4E-4, 54, -255.01, -290.05, 1.5E-4, 6, 9, -166.71, 150.07, 0.02469, 8, 147.14, -113.5, 0.57033, 13, -67.84, -91.26, 0.38714, 27, -205.65, -72.16, 0.01755, 40, -299.83, -188.7, 2.0E-4, 54, -314.05, -344.03, 5.0E-5, 2, 9, -113.14, 135.84, 0.24192, 8, 91.72, -112.59, 0.75807, 2, 9, -42.12, 116.77, 0.14515, 8, 18.2, -111.17, 0.85484, 1, 9, 44.2, 107.1, 1, 2, 9, 140.09, 96.35, 0.22579, 14, 72.59, 65.41, 0.7742, 4, 9, 137.69, 169.35, 0.05644, 14, 117.5, 123, 0.24355, 17, 78.3, 94.48, 0.2125, 33, 23.7, 91.74, 0.4875, 2, 17, 171.15, 111.98, 0.25, 33, 118.17, 93.15, 0.75, 1, 33, 158.96, -25.58, 1, 1, 2, -40.63, -86.01, 1, 3, 9, 67.34, -86.66, 0.33215, 8, -137.02, 59.92, 0.08303, 2, 92.54, -90.61, 0.5848, 2, 9, 170.13, -66.29, 0.75, 14, -8.53, -78.72, 0.25, 2, 9, 231.74, -8.12, 0.4, 14, 76.03, -73.52, 0.6, 5, 9, 222.04, 70.41, 0.16894, 14, 118.9, -7, 0.5373, 17, -6.58, -3.99, 0.17075, 33, -76.73, 9.18, 0.08551, 48, 45.05, -108.02, 0.03748, 1, 33, 50.43, -46.56, 1, 1, 14, -9.88, 20.65, 1, 2, 9, -53.22, 20.53, 0.2, 8, 5.8, -15.09, 0.8, 6, 9, -180.71, 32.22, 0.0849, 8, 132.35, 4.24, 0.55723, 13, -23.98, 19.01, 0.34911, 27, -151.51, 33.44, 0.0085, 40, -285.75, -70.86, 1.8E-4, 54, -348.66, -230.51, 5.0E-5, 6, 9, -304.22, 7.95, 0.01243, 8, 246.39, 57.53, 0.13635, 13, 101.61, 10.65, 0.48532, 27, -27.28, 13.2, 0.30559, 40, -162.22, -46.69, 0.05823, 54, -245.36, -158.59, 0.00205, 6, 9, -418.56, -35.1, 0.00168, 8, 346.99, 126.85, 0.01839, 13, 223.17, 22.83, 0.18014, 27, 94.88, 13.77, 0.41602, 40, -47.85, -3.72, 0.30281, 54, -158.02, -73.16, 0.08093, 6, 9, -566.47, -40.57, 4.4E-4, 8, 489.24, 167.77, 0.00225, 13, 367.51, -9.96, 0.04446, 27, 235.45, -32.57, 0.20024, 40, 100.06, 1.62, 0.36103, 54, -24.81, -8.63, 0.39156, 6, 9, -648.5, -15.19, 4.5E-4, 8, 574.96, 162.88, 5.5E-4, 13, 440.24, -55.6, 0.01566, 27, 303.52, -84.91, 0.09149, 40, 182.07, -23.8, 0.3135, 54, 60.48, 1.14, 0.57832, 3, 14, 174.99, 22.22, 0.2, 17, 54.82, -19.14, 0.6, 33, -18.8, -16.2, 0.2, 6, 9, -242.34, 20.11, 0.02478, 8, 189.25, 30.83, 0.26443, 13, 38.68, 14.84, 0.61556, 27, -89.52, 23.34, 0.09454, 40, -224.1, -58.8, 5.1E-4, 54, -297.11, -194.62, 1.4E-4, 6, 9, -359.57, -12.88, 0.00674, 8, 295.08, 91.08, 0.07453, 13, 160.45, 16.54, 0.35139, 27, 31.85, 13.48, 0.39116, 40, -106.86, -25.89, 0.15674, 54, -203.08, -117.24, 0.01941, 6, 9, -488.69, -37.69, 6.7E-4, 8, 414.43, 146.25, 0.00642, 13, 291.61, 7.27, 0.09534, 27, 161.53, -8.2, 0.32068, 40, 22.27, -1.18, 0.36568, 54, -94.86, -42.56, 0.21117, 6, 9, -607.64, -27.83, 4.3E-4, 8, 532.26, 165.32, 0.00108, 13, 404.01, -32.87, 0.02584, 27, 269.61, -58.84, 0.13469, 40, 141.21, -11.13, 0.33582, 54, 17.98, -3.72, 0.50211, 1, 33, 26.4, -166.06, 1, 1, 33, 87.21, -106.12, 1, 1, 33, 108.19, -49.62, 1, 2, 33, 61.73, -82.13, 0.50021, 48, 4.42, 52.83, 0.49978, 2, 33, 22.84, -109.4, 0.50021, 48, 51.52, 46.73, 0.49978, 5, 9, 348.39, 119.13, 0.00694, 14, 247.12, -50.52, 0.065, 17, 60.86, -121.4, 0.06027, 33, -30.3, -118, 0.48738, 48, 96.58, 17.22, 0.38039, 1, 9, 26.73, 14.8, 1, 2, 9, -107.97, 25.67, 0.24192, 8, 60.17, -6.91, 0.75807, 5, 9, 235.53, 102.96, 0.07484, 14, 150.1, 9.35, 0.34943, 17, 27.64, -12.34, 0.40983, 33, -44.43, -4.87, 0.14928, 48, 34.03, -74.39, 0.0166, 5, 9, 227.15, 28.49, 0.29239, 14, 95.96, -42.46, 0.5708, 17, -47.23, -15.44, 0.07952, 33, -118.74, 4.84, 0.03982, 48, 84.85, -129.5, 0.01745, 2, 33, 5.19, -153.1, 0.87618, 48, 90.96, 71.21, 0.12381, 5, 9, 351.78, 108.85, 0.01127, 14, 243.13, -60.59, 0.10548, 17, 51.21, -126.33, 0.09782, 33, -40.65, -121.21, 0.46541, 48, 105.71, 17.33, 0.32, 1, 33, 23.69, -185.21, 1, 1, 33, 79.64, -175.94, 1, 1, 33, 93.96, -187.56, 1, 1, 33, 87.07, -206.55, 1, 1, 33, 64.2, -216.74, 1, 1, 33, 52.23, -203.68, 1, 1, 33, 59.24, -187.03, 1, 1, 33, 64.26, -223.8, 1, 1, 33, 89.44, -211.41, 1, 1, 33, 102.04, -186.95, 1, 1, 33, 83.1, -166.14, 1, 1, 33, 46.84, -186.41, 1, 1, 33, 50.32, -204.36, 1, 1, 33, 41.7, -206.59, 1, 1, 33, 61.87, -230.97, 1, 6, 9, -448.12, -58.75, 9.7E-4, 8, 374.97, 143.6, 0.01016, 13, 256.29, 17.42, 0.13074, 27, 127.43, 2.07, 0.37548, 40, -13.35, -3.05, 0.34387, 54, -128.14, -55.46, 0.13875, 6, 9, -519.55, -68.54, 5.1E-4, 8, 442.75, 168.18, 0.00402, 13, 327.21, 4.42, 0.06791, 27, 196.28, -19.32, 0.26429, 40, 58.71, -1.05, 0.3719, 54, -62.24, -26.21, 0.29134, 6, 9, -386.43, -41.35, 0.00321, 8, 318.32, 113.62, 0.03567, 13, 192.26, 20.14, 0.25008, 27, 64.19, 12.44, 0.42824, 40, -76.55, -13.67, 0.24036, 54, -182.56, -89.31, 0.0424 ], - "hull": 44 + "type": "weightedmesh", + "uvs": [ 0.89014, 0.11136, 1, 0.22194, 1, 0.42847, 0.88179, 0.38589, 0.874, 0.47986, 0.84783, 0.51728, 0.82504, 0.54984, 0.82403, 0.61606, 0.82305, 0.67972, 0.74042, 0.86709, 0.61596, 0.93097, 0.49649, 0.90968, 0.41186, 0.71379, 0.36955, 0.70086, 0.32823, 0.68824, 0.30082, 0.69962, 0.27515, 0.71028, 0.25301, 0.71948, 0.22568, 0.73082, 0.20832, 0.72362, 0.19092, 0.7164, 0.15952, 0.70337, 0.1301, 0.69116, 0.09227, 0.67546, 0.06029, 0.63165, 0.02855, 0.58817, 0, 0.49874, 0.05045, 0.53494, 0.08267, 0.54507, 0.11815, 0.55623, 0.14733, 0.54161, 0.17913, 0.52568, 0.20324, 0.5136, 0.22867, 0.50087, 0.24871, 0.47664, 0.27523, 0.44458, 0.32026, 0.39015, 0.37517, 0.35747, 0.43476, 0.32201, 0.4893, 0.35534, 0.56021, 0.39867, 0.61587, 0.40674, 0.67769, 0.4157, 0.69094, 0.31314, 0.69362, 0.14742, 0.79219, 0.08354, 0.51541, 0.74573, 0.62393, 0.75425, 0.70856, 0.7287, 0.76132, 0.63288, 0.7566, 0.49454, 0.80613, 0.27517, 0.65885, 0.59037, 0.53929, 0.54937, 0.42632, 0.52207, 0.3246, 0.55241, 0.22715, 0.618, 0.10574, 0.61341, 0.03969, 0.56109, 0.77916, 0.39461, 0.37556, 0.53721, 0.27743, 0.58416, 0.16958, 0.61582, 0.07259, 0.58715, 0.87545, 0.31683, 0.85488, 0.21417, 0.81012, 0.17403, 0.83214, 0.25662, 0.83823, 0.32214, 0.84622, 0.41719, 0.59954, 0.57003, 0.49074, 0.53763, 0.76917, 0.43888, 0.75912, 0.56845, 0.871, 0.3701, 0.85431, 0.43545, 0.89558, 0.32412, 0.90105, 0.22877, 0.91523, 0.20564, 0.93086, 0.219, 0.93446, 0.25858, 0.91956, 0.2776, 0.9061, 0.26423, 0.9415, 0.25929, 0.93589, 0.21545, 0.91669, 0.19192, 0.89297, 0.22201, 0.90245, 0.28513, 0.92006, 0.281, 0.92143, 0.29619, 0.94856, 0.2643, 0.19894, 0.61694, 0.13973, 0.61469, 0.25158, 0.60156, 0.88779, 0.26675 ], + "triangles": [ 15, 93, 14, 13, 14, 55, 10, 11, 47, 47, 11, 46, 11, 12, 46, 46, 70, 47, 12, 71, 46, 13, 60, 12, 91, 21, 62, 92, 30, 62, 20, 21, 91, 21, 22, 62, 62, 22, 92, 22, 23, 92, 92, 23, 57, 23, 24, 57, 24, 63, 57, 24, 25, 63, 57, 29, 92, 92, 29, 30, 57, 63, 29, 25, 58, 63, 25, 26, 58, 63, 58, 28, 63, 28, 29, 28, 58, 27, 58, 26, 27, 18, 19, 17, 17, 19, 56, 56, 19, 20, 20, 91, 56, 93, 91, 31, 31, 32, 93, 91, 62, 31, 62, 30, 31, 12, 60, 54, 60, 13, 55, 93, 61, 14, 61, 55, 14, 60, 55, 35, 54, 60, 36, 60, 35, 36, 36, 37, 54, 16, 17, 56, 16, 56, 15, 56, 93, 15, 56, 91, 93, 93, 32, 61, 61, 32, 33, 61, 33, 55, 33, 34, 55, 55, 34, 35, 46, 71, 53, 12, 54, 71, 53, 40, 41, 53, 71, 40, 40, 71, 39, 71, 54, 39, 39, 37, 38, 39, 54, 37, 5, 72, 75, 5, 75, 4, 75, 72, 69, 4, 75, 3, 75, 69, 3, 3, 76, 2, 76, 89, 2, 89, 90, 2, 90, 1, 2, 69, 74, 3, 74, 69, 68, 69, 59, 68, 59, 51, 68, 59, 43, 51, 3, 74, 76, 74, 64, 76, 74, 68, 64, 76, 87, 89, 76, 64, 87, 51, 67, 68, 68, 67, 64, 64, 94, 87, 64, 67, 94, 43, 44, 51, 90, 88, 83, 80, 83, 81, 87, 88, 89, 88, 90, 89, 87, 81, 88, 87, 82, 81, 87, 94, 82, 83, 88, 81, 81, 82, 80, 51, 66, 67, 51, 44, 66, 67, 65, 94, 94, 77, 82, 94, 86, 77, 94, 65, 86, 1, 90, 84, 82, 77, 80, 84, 90, 83, 77, 79, 80, 84, 83, 79, 83, 80, 79, 67, 66, 65, 77, 78, 79, 77, 86, 78, 78, 86, 85, 79, 78, 84, 78, 85, 84, 85, 0, 1, 85, 86, 65, 0, 85, 65, 65, 66, 0, 1, 84, 85, 44, 45, 66, 66, 45, 0, 72, 59, 69, 47, 52, 48, 48, 49, 8, 48, 52, 49, 8, 49, 7, 52, 73, 49, 49, 73, 7, 7, 73, 6, 73, 52, 50, 50, 52, 42, 52, 70, 42, 73, 50, 6, 6, 50, 5, 50, 72, 5, 50, 42, 72, 72, 42, 59, 59, 42, 43, 10, 47, 9, 47, 48, 9, 9, 48, 8, 47, 70, 52, 46, 53, 70, 70, 41, 42, 70, 53, 41 ], + "vertices": [ 1, 48, 147.48, -145.48, 1, 1, 48, 89.4, -281.62, 1, 1, 48, -28.24, -285.93, 1, 1, 48, -14.58, -194.68, 1, 5, 22, 363.21, 87.73, 0.02179, 43, 238.39, -84.13, 0.20397, 47, 32.09999, -140.85, 0.18915, 48, -61.96, -132.26, 0.41197, 52, 129.57, 6.39, 0.1731, 5, 22, 332.7, 63.71, 0.06905, 43, 199.57, -83.03, 0.29424, 47, 3.69, -114.37, 0.2194, 48, -85.43, -101.32, 0.30859, 52, 127.34, -26.64, 0.1087, 5, 22, 307.08, 43.5, 0.11018, 43, 166.95, -82.12999, 0.37282, 47, -20.18, -92.14, 0.24572, 48, -105.18, -75.33999, 0.21862, 52, 123.08, -64.79, 0.05264, 5, 22, 307.75, 5.7, 0.18146, 43, 143.25, -111.59, 0.56512, 47, -57.43, -98.57, 0.12044, 48, -142.98, -75.33, 0.10715, 52, 154.85, -83.49, 0.0258, 2, 22, 308.7, -30.55, 0.25, 43, 120.75, -140.04, 0.75, 2, 22, 213.94, -142.7, 0.75, 43, -23.83, -165.45, 0.25, 3, 22, 64.44999, -187.34, 0.31139, 17, -158.45, 158.33, 0.10379, 3, 84.16, -190.98, 0.5848, 1, 3, -61.47, -178.84, 1, 7, 22, -193.84, -78.37, 0.01006, 17, 118.47, 114.74, 0.07207, 18, 17.17, 122.49, 0.17087, 19, -100.71, 132.55, 0.06655, 20, -272.53, 39.71, 0.0127, 21, -381.15, -123.99, 0.00106, 3, -166.91, -67.94999, 0.66666, 7, 22, -246.26, -74, 0.00847, 17, 170.4, 123.13, 0.06072, 18, 66.71, 104.77, 0.19505, 19, -53.08, 110.21, 0.11161, 20, -220.11, 35.3, 0.03559, 21, -331.4, -106.89, 0.02705, 3, -217.69, -61.33, 0.56148, 7, 22, -297.45, -69.74, 0.007, 17, 221.11, 131.31, 0.05019, 18, 115.07, 87.47, 0.2135, 19, -6.58, 88.39, 0.15181, 20, -168.92, 31, 0.05913, 21, -282.82, -90.19, 0.05445, 3, -267.66, -55.14, 0.46388, 7, 22, -322.38, -89.71, 0.00572, 17, 245.53, 147.45, 0.04099, 18, 146.51, 86.08, 0.22288, 19, 26.66, 83.39, 0.18428, 20, -134.99, 41.34, 0.0837, 21, -257.52, -60.65, 0.08408, 3, -298.87, -61.99, 0.37832, 7, 22, -359.24, -85.1, 0.00461, 17, 277.38, 161.09, 0.03306, 18, 178.73, 86.41, 0.22347, 19, 56.68, 81.29, 0.20919, 20, -107.13, 46.31, 0.10923, 21, -232.44, -51.26, 0.11589, 3, -328.68, -69.24, 0.30452, 7, 22, -376.16, -107.83, 0.00361, 17, 294.31, 176.47, 0.02591, 18, 203.26, 86.51, 0.21876, 19, 83.06, 77.01999, 0.2295, 20, -79.56, 53.53, 0.13534, 21, -210.89, -28.3, 0.14902, 3, -354.01, -75.41, 0.23783, 7, 22, -416.83, -99.41, 0.00301, 17, 329.83, 188.85, 0.02165, 18, 238.06, 85.41, 0.19918, 19, 115.65, 74.66, 0.23165, 20, -49.53, 60.58, 0.16135, 21, -185.49, -14.98, 0.18638, 3, -385.33, -83.15, 0.19674, 7, 22, -428.02, -116.81, 0.0025, 17, 343.12, 196.14, 0.01806, 18, 255.33, 78.85, 0.17874, 19, 133.83, 63.18, 0.23028, 20, -27.04, 56.84, 0.18642, 21, -163.58, -5.26, 0.22335, 3, -406.45, -79.89, 0.16063, 7, 22, -449.42, -116.23, 0.00209, 17, 364.17, 200.07, 0.01519, 18, 275.48, 71.62, 0.15813, 19, 152.97, 53.58, 0.22594, 20, -5.82, 53.94, 0.21024, 21, -142.85, 0.11, 0.25891, 3, -427.72, -77.47, 0.12944, 7, 22, -498.22, -88.19, 0.00178, 17, 411.52, 197.55, 0.0131, 18, 313.81, 53.61, 0.13839, 19, 188.04, 35.82, 0.21975, 20, 31.84, 49.3, 0.23251, 21, -106.46, 7.49, 0.2917, 3, -465.96, -72.58999, 0.10272, 7, 22, -524.31, -113.4, 0.00157, 17, 437.98, 213.03, 0.01186, 18, 345.74, 45.54, 0.12065, 19, 219.6, 19.28, 0.2131, 20, 68.31, 43.02, 0.25281, 21, -70.12999, 18.19, 0.32013, 3, -502.09, -68.19, 0.07983, 7, 22, -580.94, -76.79, 0.00148, 17, 494.56, 206.4, 0.01161, 18, 390.81, 21.3, 0.10603, 19, 261.62, -3.66, 0.20745, 20, 114.55, 37.83, 0.27063, 21, -26.15, 30.34, 0.34248, 3, -548.33, -63.22, 0.06027, 7, 22, -621.23, -53.98, 0.00153, 17, 539.16, 193.96, 0.01255, 18, 423.87, -11.11, 0.09566, 19, 291.46, -39.06, 0.20413, 20, 154.83, 14.99, 0.28529, 21, 19.91, 25.67, 0.35721, 3, -589.02, -42.19, 0.0436, 7, 22, -661.22, -31.34, 0.00173, 17, 583.41, 181.62, 0.01498, 18, 456.68, -43.27, 0.09054, 19, 321.06, -74.19999, 0.20422, 20, 194.79, -7.66, 0.29602, 21, 65.62, 21.04, 0.36309, 3, -629.78, -21.51, 0.02938, 7, 22, -698.76, 17.64, 0.00212, 17, 631.64, 143.1, 0.01928, 18, 480.34, -100.28, 0.09165, 19, 339.2, -133.2, 0.20843, 20, 232.3, -56.69, 0.30195, 21, 119.7, -8.68999, 0.35936, 3, -669.35, 25.71, 0.01717, 7, 22, -636.21, 0.4, 0.00186, 17, 566.79, 144.78, 0.02216, 18, 424.34, -67.51999, 0.09478, 19, 286.57, -95.27, 0.21971, 20, 169.77, -39.4, 0.30022, 21, 55.51, -18.08, 0.34915, 3, -606.08, 11.21, 0.01208, 7, 22, -596.68, -3.21, 0.00182, 17, 527.55, 138.78, 0.02791, 18, 387.08, -53.84, 0.10537, 19, 250.77, -78.11, 0.23429, 20, 130.24, -35.75, 0.29251, 21, 17.87, -30.67, 0.32978, 3, -566.25, 9.38, 0.00828, 7, 22, -553.14, -7.2, 0.00202, 17, 484.33, 132.17, 0.03718, 18, 346.04, -38.78, 0.12359, 19, 211.34, -59.22, 0.25059, 20, 86.7, -31.72, 0.27864, 21, -23.59, -44.54, 0.3024, 3, -522.33, 7.03, 0.00553, 7, 22, -516.96, -25.93, 0.00246, 17, 449.17, 125.97, 0.05073, 18, 311.45, -35.25, 0.14934, 19, 175.89, -56.83, 0.26648, 20, 51.53, -43.14, 0.2587, 21, -52.88, -67.87, 0.26867, 3, -487.23, 18.31, 0.00359, 7, 22, -479.88, 14.24, 0.00317, 17, 418.38, 93.72, 0.06938, 18, 269.72, -40.64, 0.18219, 19, 135.19, -53.82, 0.27948, 20, 13.42, -53.11, 0.23298, 21, -82.03, -93.66, 0.2305, 3, -449.1, 30.06, 0.00226, 7, 22, -451.64, 0.32, 0.00417, 17, 390.82, 86.58, 0.09392, 18, 241.19, -39.8, 0.22144, 19, 105.59, -52.93, 0.28715, 20, -16.25, -62.16, 0.20207, 21, -108.34, -111.24, 0.18983, 3, -419.88, 38.84, 0.00138, 7, 22, -420.35, 31.66, 0.00546, 17, 364.8, 62.48, 0.12486, 18, 207.71, -42.14, 0.26611, 19, 73.33, -49.43, 0.28757, 20, -46.11, -70.49, 0.16677, 21, -129.51, -133.56, 0.14836, 3, -389.13, 47.88, 8.1E-4, 7, 22, -399.11, 28.98, 0.00747, 17, 345.49, 47.53, 0.17173, 18, 182.34, -50.62, 0.31858, 19, 45.87, -56.62, 0.26575, 20, -71.57, -84.96, 0.1256, 21, -150.85, -153.35, 0.11024, 3, -365.08, 62.86, 5.8E-4, 7, 22, -365.43, 66.79, 0.00956, 17, 319.95, 15.15, 0.2203, 18, 145.6, -61.95, 0.37151, 19, 9.60999, -63.26, 0.24136, 20, -101.06, -105.58, 0.08415, 21, -165.65, -187.83, 0.07272, 3, -333.3, 82.65, 3.7E-4, 7, 22, -312.31, 100.78, 0.01175, 17, 276.58, -30.61, 0.27125, 18, 85.52, -81.11, 0.42509, 19, -52.01, -76.62, 0.21336, 20, -154.2, -139.52, 0.04227, 21, -200.6, -240.31, 0.03607, 3, -278.65, 115.6, 1.7E-4, 6, 22, -242.48, 124.41, 0.01402, 17, 214.5, -70.36, 0.32389, 18, 11.97, -85.98, 0.47912, 19, -125.69, -74.48, 0.18281, 20, -224.04, -163.1, 1.1E-4, 21, -255.01, -290.05, 3.0E-5, 6, 22, -166.71, 150.07, 0.02469, 17, 147.14, -113.5, 0.57033, 18, -67.83999, -91.26, 0.38714, 19, -205.65, -72.16, 0.01755, 20, -299.83, -188.7, 2.0E-4, 21, -314.05, -344.03, 5.0E-5, 2, 22, -113.14, 135.84, 0.24192, 17, 91.72, -112.59, 0.75807, 2, 22, -42.12, 116.77, 0.14515, 17, 18.2, -111.17, 0.85484, 1, 22, 44.2, 107.1, 1, 2, 22, 140.09, 96.35, 0.22579, 43, 72.58999, 65.41, 0.7742, 4, 22, 137.69, 169.35, 0.05644, 43, 117.5, 123, 0.24355, 47, 78.3, 94.48, 0.2125, 48, 23.7, 91.74, 0.4875, 2, 47, 171.15, 111.98, 0.25, 48, 118.17, 93.15, 0.75, 1, 48, 158.96, -25.58, 1, 1, 3, -40.63, -86.01, 1, 3, 22, 67.33999, -86.66, 0.33215, 17, -137.02, 59.92, 0.08303, 3, 92.54, -90.61, 0.5848, 2, 22, 170.13, -66.29, 0.75, 43, -8.53, -78.72, 0.25, 2, 22, 231.74, -8.12, 0.4, 43, 76.03, -73.51999, 0.6, 5, 22, 222.04, 70.41, 0.16894, 43, 118.9, -7, 0.5373, 47, -6.58, -3.99, 0.17075, 48, -76.73, 9.18, 0.08551, 52, 45.05, -108.02, 0.03748, 1, 48, 50.43, -46.56, 1, 1, 43, -9.88, 20.65, 1, 2, 22, -53.22, 20.53, 0.2, 17, 5.8, -15.09, 0.8, 6, 22, -180.71, 32.22, 0.0849, 17, 132.35, 4.23999, 0.55723, 18, -23.98, 19.01, 0.34911, 19, -151.51, 33.43999, 0.0085, 20, -285.75, -70.86, 1.8E-4, 21, -348.66, -230.51, 5.0E-5, 7, 22, -304.22, 7.95, 0.0403, 17, 246.39, 57.53, 0.26453, 18, 101.61, 10.65, 0.41136, 19, -27.28, 13.2, 0.19982, 20, -162.22, -46.69, 0.04444, 21, -245.36, -158.59, 0.03938, 3, -272.64, 22.61, 1.4E-4, 7, 22, -418.56, -35.09999, 0.01926, 17, 346.99, 126.85, 0.12662, 18, 223.17, 22.83, 0.27476, 19, 94.88, 13.77, 0.24466, 20, -47.85, -3.72, 0.1726, 21, -158.02, -73.16, 0.16124, 3, -387.18, -18.91, 8.0E-4, 7, 22, -566.47, -40.57, 0.00611, 17, 489.24, 167.77, 0.04146, 18, 367.51, -9.96, 0.13446, 19, 235.45, -32.57, 0.21638, 20, 100.06, 1.62, 0.28346, 21, -24.81, -8.63, 0.31257, 3, -534.79, -26.69, 0.00552, 7, 22, -648.5, -15.19, 0.00311, 17, 574.96, 162.88, 0.02391, 18, 440.24, -55.6, 0.09894, 19, 303.52, -84.91, 0.20698, 20, 182.07, -23.8, 0.30202, 21, 60.48, 1.14, 0.35292, 3, -617.72, -4.84, 0.01208, 3, 43, 174.99, 22.22, 0.2, 47, 54.82, -19.14, 0.6, 48, -18.79999, -16.2, 0.2, 6, 22, -242.34, 20.11, 0.04821, 17, 189.25, 30.83, 0.31645, 18, 38.68, 14.84, 0.45752, 19, -89.52, 23.34, 0.17767, 20, -224.1, -58.8, 1.0E-4, 21, -297.11, -194.62, 3.0E-5, 7, 22, -359.57, -12.88, 0.03247, 17, 295.08, 91.08, 0.21317, 18, 160.45, 16.54, 0.3652, 19, 31.85, 13.48, 0.22126, 20, -106.86, -25.89, 0.08869, 21, -203.08, -117.24, 0.07889, 3, -328.24, 2.88, 2.8E-4, 7, 22, -488.69, -37.68999, 0.01113, 17, 414.43, 146.25, 0.07357, 18, 291.61, 7.27, 0.19521, 19, 161.53, -8.2, 0.2345, 20, 22.27, -1.17999, 0.23931, 21, -94.86, -42.56, 0.24398, 3, -457.15, -22.02, 0.00224, 7, 22, -607.64, -27.83, 0.00441, 17, 532.26, 165.32, 0.03117, 18, 404.01, -32.87, 0.11328, 19, 269.61, -58.84, 0.20984, 20, 141.21, -11.13, 0.29595, 21, 17.98, -3.72, 0.33702, 3, -576.34, -15.62, 0.00828, 1, 48, 26.4, -166.06, 1, 1, 48, 87.21, -106.12, 1, 1, 48, 108.19, -49.62, 1, 2, 48, 61.73, -82.12999, 0.50021, 52, 4.42, 52.83, 0.49978, 2, 48, 22.84, -109.4, 0.50021, 52, 51.52, 46.73, 0.49978, 5, 22, 348.39, 119.13, 0.00694, 43, 247.12, -50.52, 0.065, 47, 60.86, -121.4, 0.06027, 48, -30.3, -118, 0.48738, 52, 96.58, 17.21999, 0.38039, 1, 22, 26.73, 14.8, 1, 2, 22, -107.97, 25.67, 0.24192, 17, 60.17, -6.91, 0.75807, 5, 22, 235.53, 102.96, 0.07484, 43, 150.1, 9.35, 0.34943, 47, 27.64, -12.34, 0.40983, 48, -44.43, -4.87, 0.14928, 52, 34.03, -74.39, 0.0166, 5, 22, 227.15, 28.49, 0.29238, 43, 95.96, -42.46, 0.5708, 47, -47.23, -15.44, 0.07952, 48, -118.74, 4.84, 0.03982, 52, 84.85, -129.5, 0.01744, 2, 48, 5.19, -153.1, 0.87618, 52, 90.96, 71.21, 0.12381, 5, 22, 351.78, 108.85, 0.01127, 43, 243.13, -60.59, 0.10548, 47, 51.21, -126.33, 0.09782, 48, -40.65, -121.21, 0.46541, 52, 105.71, 17.33, 0.32, 1, 48, 23.69, -185.21, 1, 1, 48, 79.64, -175.94, 1, 1, 48, 93.96, -187.56, 1, 1, 48, 87.07, -206.55, 1, 1, 48, 64.19999, -216.74, 1, 1, 48, 52.23, -203.68, 1, 1, 48, 59.24, -187.03, 1, 1, 48, 64.26, -223.8, 1, 1, 48, 89.44, -211.41, 1, 1, 48, 102.04, -186.95, 1, 1, 48, 83.1, -166.14, 1, 1, 48, 46.84, -186.41, 1, 1, 48, 50.32, -204.36, 1, 1, 48, 41.7, -206.59, 1, 1, 48, 61.87, -230.97, 1, 7, 22, -448.12, -58.75, 0.01475, 17, 374.97, 143.6, 0.09709, 18, 256.29, 17.42, 0.23314, 19, 127.43, 2.07, 0.24171, 20, -13.35, -3.05, 0.20842, 21, -128.14, -55.46, 0.20349, 3, -421.47, -20.31, 0.00137, 7, 22, -519.55, -68.54, 0.0083, 17, 442.75, 168.18, 0.05534, 18, 327.21, 4.42, 0.16201, 19, 196.28, -19.32, 0.22526, 20, 58.71, -1.04999, 0.2645, 21, -62.24, -26.21, 0.28097, 3, -493.48, -23.91, 0.00358, 7, 22, -386.43, -41.34999, 0.02472, 17, 318.32, 113.62, 0.16236, 18, 192.26, 20.14, 0.31904, 19, 64.19, 12.44, 0.24198, 20, -76.55, -13.67, 0.13287, 21, -182.56, -89.31, 0.11857, 3, -358.52, -8.29, 4.3E-4, 2, 48, 56.98, -162.99, 0.89259, 52, 57.54, 112, 0.1074 ], + "hull": 46, + "edges": [ 22, 20, 20, 18, 18, 16, 6, 4, 4, 2, 90, 88, 54, 52, 52, 50, 24, 22, 88, 86, 86, 84, 8, 6, 24, 26, 26, 28, 72, 74, 74, 76, 70, 72, 46, 48, 48, 50, 54, 56, 56, 58, 80, 82, 82, 84, 76, 78, 78, 80, 8, 10, 10, 12, 12, 14, 14, 16, 0, 90, 0, 2, 62, 64, 64, 66, 40, 42, 58, 60, 60, 62, 42, 44, 44, 46, 66, 68, 68, 70, 32, 34, 34, 36, 52, 116, 116, 126, 126, 114, 114, 184, 184, 124, 124, 182, 182, 112, 112, 186, 186, 122, 122, 110, 110, 120, 120, 108, 108, 142, 142, 106, 106, 140, 140, 104, 92, 94, 94, 96, 96, 98, 98, 146, 146, 100, 100, 144, 144, 118, 118, 102, 8, 150, 150, 138, 138, 136, 136, 134, 134, 132, 156, 154, 154, 164, 164, 162, 162, 160, 160, 158, 158, 156, 180, 178, 178, 174, 174, 188, 188, 172, 170, 168, 28, 30, 30, 32, 36, 38, 38, 40 ], + "width": 1219, + "height": 570 } }, "raptor_front_arm": { "raptor_front_arm": { - "type": "skinnedmesh", + "type": "weightedmesh", "uvs": [ 0.39562, 0.1396, 0.3877, 0.30212, 0.3123, 0.41784, 0.27287, 0.47835, 0.33388, 0.4507, 0.54879, 0.35328, 0.64092, 0.31152, 0.73024, 0.36529, 1, 0.5277, 1, 0.86606, 0.93242, 1, 0.86176, 0.80967, 0.75576, 0.99765, 0.71748, 1, 0.70276, 0.77442, 0.62031, 0.73448, 0.58792, 0.64519, 0.53561, 0.6582, 0.13448, 0.75798, 0, 0.69218, 0.01846, 0.56357, 0.05498, 0.30917, 0, 0.27863, 0, 0.12423, 0, 0, 0.19596, 0, 0.40242, 0, 0.24536, 0.1924, 0.21678, 0.0811 ], - "triangles": [ 0, 28, 26, 23, 25, 28, 28, 25, 26, 23, 24, 25, 6, 7, 16, 6, 16, 5, 15, 16, 7, 7, 14, 15, 8, 14, 7, 11, 14, 8, 11, 8, 9, 12, 14, 11, 13, 14, 12, 10, 11, 9, 17, 4, 5, 16, 17, 5, 18, 19, 3, 18, 3, 4, 18, 4, 17, 27, 28, 0, 27, 22, 23, 27, 23, 28, 1, 27, 0, 21, 22, 27, 21, 27, 1, 2, 21, 1, 2, 20, 21, 3, 20, 2, 19, 20, 3 ], - "vertices": [ 2, 15, 3.06, 31.88, 0.51075, 14, 66.56, -109.48, 0.48924, 1, 15, 35.87, 35.62, 1, 2, 15, 60.94, 27.12, 0.8464, 29, 46.49, 31.12, 0.15359, 3, 15, 74.05, 22.67, 0.34375, 29, 36.5, 21.53, 0.64062, 45, -45.25, -29.96, 0.01562, 3, 15, 67, 31.58, 0.10937, 29, 47.66, 23.68, 0.78125, 45, -40.93, -19.44, 0.10937, 3, 15, 42.17, 62.99, 0.01562, 29, 86.98, 31.24, 0.64062, 45, -25.75, 17.61, 0.34375, 2, 29, 103.83, 34.49, 0.34375, 45, -19.24, 33.49, 0.65625, 2, 29, 114.04, 19.51, 0.10937, 45, -1.11, 33.84, 0.89062, 2, 29, 144.85, -25.73, 0.02083, 45, 53.62, 34.88, 0.97916, 1, 45, 96.03, -19.16, 1, 1, 45, 104.2, -47.31, 1, 1, 45, 71.34, -23.98, 1, 1, 45, 81.39, -64.61, 1, 1, 45, 76.8, -68.81, 1, 2, 29, 83.18, -57.72, 0.02083, 45, 46.65, -34.25, 0.97916, 2, 29, 73.13, -45.76, 0.10937, 45, 31.14, -36.12, 0.89062, 2, 29, 73.98, -26.9, 0.34375, 45, 15.82, -25.09, 0.65625, 3, 15, 103.67, 70.28, 0.01562, 29, 65.1, -26.69, 0.64062, 45, 10.78, -32.41, 0.34375, 3, 15, 133.56, 9.13, 0.10937, 29, -2.94, -25.03, 0.78125, 45, -27.84, -88.47, 0.10937, 3, 15, 123.67, -14.42, 0.34375, 29, -19.29, -5.39, 0.64062, 45, -53.23, -91.41, 0.01562, 2, 15, 97.41, -15.43, 0.8464, 29, -8.08, 18.37, 0.15359, 1, 15, 45.46, -17.43, 1, 2, 15, 40.69, -27.17, 0.45035, 14, -1.69, -93.8, 0.54964, 2, 15, -2.74, -29.63, 0.44352, 14, 18.99, -72.93, 0.55647, 1, 14, 32.11, -48.45, 1, 1, 14, 57.56, -67.43, 1, 1, 14, 84.38, -87.42, 1, 2, 15, 16.44, 5.21, 0.7182, 14, 46.31, -101.86, 0.28179, 2, 15, -4.51, 5.32, 0.48851, 14, 52.82, -81.94, 0.51148 ], - "hull": 27 + "triangles": [ 23, 24, 25, 28, 25, 26, 23, 25, 28, 0, 28, 26, 10, 11, 9, 13, 14, 12, 12, 14, 11, 11, 8, 9, 11, 14, 8, 8, 14, 7, 7, 14, 15, 15, 16, 7, 6, 16, 5, 6, 7, 16, 18, 4, 17, 18, 3, 4, 18, 19, 3, 16, 17, 5, 17, 4, 5, 19, 20, 3, 3, 20, 2, 2, 20, 21, 2, 21, 1, 21, 27, 1, 21, 22, 27, 1, 27, 0, 27, 23, 28, 27, 22, 23, 27, 28, 0 ], + "vertices": [ 2, 63, 3.06, 31.88, 0.51075, 43, 66.56, -109.48, 0.48924, 1, 63, 35.87, 35.62, 1, 2, 63, 60.94, 27.12, 0.8464, 64, 46.49, 31.12, 0.15358, 3, 63, 74.05, 22.67, 0.34375, 64, 36.5, 21.53, 0.64062, 65, -45.25, -29.96, 0.01562, 3, 63, 67, 31.58, 0.10937, 64, 47.66, 23.68, 0.78125, 65, -40.93, -19.44, 0.10937, 3, 63, 42.17, 62.99, 0.01562, 64, 86.98, 31.24, 0.64062, 65, -25.75, 17.61, 0.34375, 2, 64, 103.83, 34.49, 0.34375, 65, -19.24, 33.49, 0.65625, 2, 64, 114.04, 19.51, 0.10937, 65, -1.11, 33.84, 0.89062, 2, 64, 144.85, -25.73, 0.02083, 65, 53.62, 34.88, 0.97916, 1, 65, 96.03, -19.16, 1, 1, 65, 104.2, -47.31, 1, 1, 65, 71.33999, -23.98, 1, 1, 65, 81.39, -64.61, 1, 1, 65, 76.8, -68.81, 1, 2, 64, 83.18, -57.72, 0.02083, 65, 46.65, -34.25, 0.97916, 2, 64, 73.12999, -45.76, 0.10937, 65, 31.14, -36.12, 0.89062, 2, 64, 73.98, -26.9, 0.34375, 65, 15.82, -25.09, 0.65625, 3, 63, 103.67, 70.28, 0.01562, 64, 65.1, -26.69, 0.64062, 65, 10.78, -32.41, 0.34375, 3, 63, 133.56, 9.13, 0.10937, 64, -2.94, -25.03, 0.78125, 65, -27.84, -88.47, 0.10937, 3, 63, 123.67, -14.42, 0.34375, 64, -19.29, -5.39, 0.64062, 65, -53.23, -91.41, 0.01562, 2, 63, 97.41, -15.43, 0.8464, 64, -8.08, 18.37, 0.15358, 1, 63, 45.46, -17.43, 1, 2, 63, 40.68999, -27.17, 0.45035, 43, -1.69, -93.8, 0.54964, 2, 63, -2.74, -29.63, 0.44352, 43, 18.99, -72.93, 0.55646, 1, 43, 32.11, -48.45, 1, 1, 43, 57.56, -67.43, 1, 1, 43, 84.38, -87.42, 1, 2, 63, 16.44, 5.21, 0.7182, 43, 46.31, -101.86, 0.28178, 2, 63, -4.51, 5.32, 0.48851, 43, 52.82, -81.94, 0.51147 ], + "hull": 27, + "edges": [ 38, 36, 32, 30, 30, 28, 28, 26, 24, 26, 24, 22, 22, 20, 20, 18, 18, 16, 44, 42, 38, 6, 38, 40, 40, 42, 6, 4, 4, 2, 40, 4, 8, 6, 36, 8, 32, 12, 42, 2, 52, 0, 0, 2, 16, 14, 14, 12, 30, 14, 36, 34, 34, 32, 12, 10, 10, 8, 34, 10, 48, 50, 50, 52, 44, 46, 46, 48, 50, 56, 56, 54 ], + "width": 162, + "height": 203 } }, "raptor_front_leg": { "raptor_front_leg": { - "type": "skinnedmesh", + "type": "weightedmesh", "uvs": [ 0.55116, 0.17817, 0.6279, 0.36027, 0.6671, 0.4533, 0.64879, 0.51527, 0.53553, 0.56893, 0.32335, 0.66946, 0.28674, 0.72086, 0.32538, 0.804, 0.36258, 0.80144, 0.42056, 0.79744, 0.61015, 0.78435, 0.84813, 0.84028, 1, 0.93854, 0.62439, 0.91738, 0.72812, 1, 0.58574, 1, 0.36707, 0.96667, 0.26306, 0.95082, 0.16266, 0.93552, 0.03859, 0.72237, 0, 0.66946, 0.0374, 0.62999, 0.1647, 0.49562, 0.23731, 0.4568, 0.27019, 0.43923, 0.28063, 0.43364, 0.223, 0.4057, 0.12565, 0.35851, 0, 0.29759, 0, 0.1524, 0, 0, 0.32132, 0, 0.32222, 0.22778, 0.4493, 0.38031, 0.47664, 0.44361, 0.4615, 0.47375, 0.35106, 0.53247, 0.20091, 0.65256, 0.18527, 0.72148, 0.25222, 0.86314, 0.30941, 0.88124, 0.55694, 0.89613, 0.55857, 0.89207, 0.47493, 0.85339, 0.6059, 0.91526, 0.39705, 0.89129, 0.13229, 0.09352, 0.36997, 0.45345, 0.37163, 0.43827, 0.32515, 0.39424, 0.23759, 0.34425, 0.34065, 0.47414 ], - "triangles": [ 46, 30, 31, 43, 9, 10, 42, 43, 10, 41, 43, 42, 13, 44, 42, 10, 13, 42, 11, 13, 10, 13, 11, 12, 45, 8, 9, 45, 9, 43, 40, 8, 45, 41, 42, 44, 45, 43, 41, 45, 41, 44, 16, 40, 45, 17, 40, 16, 15, 45, 44, 16, 45, 15, 14, 15, 44, 13, 14, 44, 19, 21, 38, 20, 21, 19, 39, 38, 6, 39, 6, 7, 40, 39, 7, 40, 7, 8, 18, 19, 38, 18, 38, 39, 17, 39, 40, 18, 39, 17, 47, 25, 48, 24, 25, 47, 35, 48, 34, 47, 48, 35, 51, 24, 47, 23, 24, 51, 3, 34, 2, 35, 34, 3, 36, 51, 47, 23, 51, 36, 22, 23, 36, 36, 47, 35, 4, 35, 3, 36, 35, 4, 37, 22, 36, 21, 22, 37, 5, 37, 36, 5, 36, 4, 6, 37, 5, 38, 21, 37, 38, 37, 6, 29, 30, 46, 32, 31, 0, 46, 31, 32, 28, 29, 46, 28, 46, 32, 32, 27, 28, 50, 27, 32, 33, 32, 0, 33, 0, 1, 49, 50, 32, 33, 49, 32, 26, 27, 50, 26, 50, 49, 25, 26, 49, 48, 49, 33, 25, 49, 48, 34, 33, 1, 48, 33, 34, 34, 1, 2 ], - "vertices": [ 3, 4, 128.03, 88.47, 0.83908, 10, -70.2, -134.13, 0.01331, 2, 158.83, -71.91, 0.1476, 2, 4, 219.55, 53.15, 0.77988, 10, -48.04, -38.58, 0.22011, 3, 4, 266.3, 35.1, 0.53531, 10, -36.73, 10.22, 0.46443, 30, 127.25, 245.46, 2.4E-4, 4, 4, 286.89, 9.79, 0.35076, 10, -14.56, 34.14, 0.64667, 30, 125.69, 212.88, 0.0023, 44, 101.39, 199.13, 2.5E-4, 4, 4, 281.54, -41.24, 0.09169, 10, 36.71, 36, 0.90196, 30, 87.64, 178.44, 0.00513, 44, 58.29, 171.29, 0.00119, 5, 4, 271.53, -136.86, 0.05608, 10, 132.77, 39.48, 0.69232, 16, 34.99, 78.76, 0.22087, 30, 16.38, 113.93, 0.0224, 44, -22.45, 119.13, 0.0083, 5, 4, 283.51, -164.25, 0.01987, 10, 158.21, 55.17, 0.50334, 16, 52.65, 54.63, 0.3617, 30, 7.01, 85.54, 0.08322, 44, -36.28, 92.63, 0.03184, 6, 4, 326.15, -179.3, 0.00798, 10, 167.14, 99.49, 0.21327, 16, 97.55, 49.25, 0.35075, 30, 28.72, 45.87, 0.14107, 44, -21.26, 49.99, 0.22311, 60, -72.29, 25.96, 0.0638, 6, 4, 333.96, -167.35, 0.00242, 10, 154.22, 105.55, 0.07519, 16, 102.57, 62.6, 0.22995, 30, 42.51, 49.55, 0.2831, 44, -7.06, 51.39, 0.2694, 60, -58.17, 28.03, 0.13992, 6, 4, 344.19, -149.68, 4.9E-4, 10, 134.24, 114.44, 0.0176, 16, 109.72, 83.39, 0.11397, 30, 64.09, 55.23, 0.07976, 44, 15.12, 53.51, 0.36292, 60, -36.09, 31.19, 0.42523, 1, 60, 35.8, 41.81, 1, 1, 60, 128.11, 17.93, 1, 1, 60, 188.72, -29.42, 1, 1, 60, 44.86, -26.17, 1, 1, 44, 133.17, -49.83, 1, 1, 44, 78.78, -50.15, 1, 5, 4, 399.32, -220.02, 2.2E-4, 10, 195.56, 179.43, 0.01703, 16, 179.46, 27.52, 0.2372, 30, 58.34, -33.93, 0.2023, 44, -4.91, -33.55, 0.54324, 5, 4, 370.41, -244.91, 3.2E-4, 10, 225.9, 152.49, 0.02513, 16, 155.04, -5.13, 0.35003, 30, 17.88, -32.5, 0.29852, 44, -44.62, -25.61, 0.32598, 5, 4, 340.37, -270.04, 0.00251, 10, 254.98, 126.27, 0.10129, 16, 131.21, -36.2, 0.54075, 30, -21.24, -31.17, 0.2082, 44, -83.02, -17.97, 0.14723, 5, 4, 225.1, -238.94, 0.01529, 10, 240.33, 7.81, 0.24036, 16, 11.94, -30.98, 0.57881, 30, -86.31, 68.9, 0.12023, 44, -131.06, 91.29, 0.04528, 5, 4, 194.64, -233.55, 0.04819, 10, 239.26, -23.1, 0.40427, 16, -18.96, -32.37, 0.48451, 30, -105.4, 93.25, 0.04604, 44, -145.97, 118.4, 0.01697, 5, 4, 187.65, -209.73, 0.09565, 10, 216.66, -33.35, 0.57617, 16, -30.97, -10.65, 0.30651, 30, -94.71, 115.65, 0.01788, 44, -131.8, 138.78, 0.00376, 4, 4, 163.85, -128.67, 0.19533, 10, 139.75, -68.26, 0.8011, 30, -58.32, 191.88, 0.00327, 44, -83.58, 208.13, 2.9E-4, 4, 4, 165.74, -94.49, 0.31921, 10, 105.59, -71.26, 0.6795, 30, -5.04, 220.72, 0.00117, 44, -56.32, 275.96, 1.0E-4, 4, 4, 166.39, -79.07, 0.46205, 10, 90.23, -72.76, 0.53752, 30, 5.55, 230.48, 3.9E-4, 44, -40.61, 286.16, 2.0E-5, 3, 4, 166.49, -74.17, 0.53779, 10, 85.42, -73.28, 0.46208, 30, -19.99, 230.7, 1.2E-4, 2, 4, 141.54, -82.46, 0.73138, 10, 97.13, -96.82, 0.26861, 3, 4, 99.76, -97.08, 0.81379, 10, 117.34, -136.23, 0.13997, 2, -2.56, -164.19, 0.04623, 3, 4, 45.01, -114.56, 0.8186, 10, 142.41, -187.89, 0.02098, 2, -51.09, -135.29, 0.1604, 3, 4, -16.2, -74.76, 0.62389, 10, 113.82, -253.08, 0.00952, 2, -42.95, -58.38, 0.36658, 2, 4, -74.73, -19.33, 0.31468, 2, -52.66, 17.55, 0.68531, 2, 4, 1.67, 76.75, 0.25576, 2, 70.07, 18.78, 0.74423, 1, 4, 93.54, 4.13, 1, 2, 4, 185.14, -6.66, 0.75461, 10, 15.98, -64.27, 0.24538, 2, 4, 217.11, -18.75, 0.50845, 10, 23.47, -30.93, 0.49154, 3, 4, 225.63, -32.92, 0.32512, 10, 36.3, -20.5, 0.6744, 30, 51.57, 221.95, 4.7E-4, 4, 4, 223, -84.73, 0.20061, 10, 87.96, -15.86, 0.79287, 30, 15.03, 185.13, 0.00581, 44, -12.28, 189.61, 6.9E-4, 5, 4, 235.61, -168.06, 0.07777, 10, 168.69, 8.29, 0.54931, 16, 6.74, 40.47, 0.33413, 30, -31.18, 114.66, 0.0321, 44, -69.27, 127.55, 0.00667, 5, 4, 259.63, -194.79, 0.01921, 10, 191.79, 35.8, 0.30498, 16, 36, 19.62, 0.53642, 30, -31.14, 78.74, 0.09568, 44, -75.03, 92.09, 0.04369, 5, 4, 332.55, -220.1, 0.00292, 10, 206.64, 111.53, 0.10776, 16, 112.69, 10.82, 0.51915, 30, 6.25, 11.23, 0.23449, 44, -49.03, 19.43, 0.13566, 4, 10, 192.51, 130.62, 0.03213, 16, 130.6, 26.41, 0.33941, 30, 29.35, 5.71, 0.27333, 44, -27.12, 10.25, 0.35511, 1, 44, 67.46, 3.16, 1, 1, 60, 19.07, -14.51, 1, 6, 4, 381.55, -150.4, 3.0E-4, 10, 130.71, 150.34, 0.00811, 16, 145.36, 89.53, 0.04102, 30, 89.29, 30.41, 0.02558, 44, 36, 24.95, 0.37636, 60, -13.89, 3.64, 0.54861, 1, 44, 86.23, -6.55, 1, 4, 10, 164.9, 153.55, 0.02263, 16, 151.18, 56, 0.23908, 30, 65.44, 5.55, 0.19254, 44, 8.45, 4.27, 0.54574, 2, 4, -9.28, -17.5, 0.59606, 2, 7.72, -30.85, 0.40393, 3, 4, 195.9, -53.81, 0.42356, 10, 61.11, -47.06, 0.57613, 30, 39.7, 225.21, 2.9E-4, 3, 4, 190.1, -48.45, 0.53227, 10, 56.61, -53.56, 0.46765, 30, 39.83, 233.12, 6.0E-5, 2, 4, 161.26, -48.26, 0.79873, 10, 60.44, -82.13, 0.20126, 3, 4, 120.37, -58.54, 0.8485, 10, 76.31, -121.18, 0.14441, 2, 41.04, -161.4, 0.00707, 4, 4, 197.37, -69.23, 0.33487, 10, 76.17, -43.46, 0.66324, 30, 30.34, 213.88, 0.0017, 44, -9.09, 262.42, 1.8E-4 ], - "hull": 32 + "triangles": [ 46, 30, 31, 45, 43, 41, 45, 41, 44, 41, 42, 44, 43, 9, 10, 42, 43, 10, 41, 43, 42, 13, 44, 42, 10, 13, 42, 11, 13, 10, 13, 11, 12, 15, 44, 13, 45, 8, 9, 45, 9, 43, 45, 40, 8, 16, 40, 45, 17, 40, 16, 15, 45, 44, 16, 45, 15, 14, 15, 13, 19, 21, 38, 20, 21, 19, 39, 38, 6, 39, 6, 7, 40, 39, 7, 40, 7, 8, 18, 19, 38, 18, 38, 39, 17, 39, 40, 18, 39, 17, 47, 25, 48, 24, 25, 47, 35, 48, 34, 47, 48, 35, 51, 24, 47, 23, 24, 51, 3, 34, 2, 35, 34, 3, 36, 51, 47, 36, 47, 35, 4, 35, 3, 36, 35, 4, 37, 22, 23, 21, 22, 37, 36, 37, 23, 36, 23, 51, 5, 37, 36, 5, 36, 4, 6, 37, 5, 38, 21, 37, 38, 37, 6, 29, 30, 46, 32, 31, 0, 46, 31, 32, 28, 29, 46, 46, 27, 28, 32, 50, 46, 50, 27, 46, 33, 32, 0, 33, 0, 1, 49, 50, 32, 33, 49, 32, 26, 27, 50, 26, 50, 49, 25, 26, 49, 48, 49, 33, 25, 49, 48, 34, 33, 1, 48, 33, 34, 34, 1, 2 ], + "vertices": [ 3, 11, 128.03, 88.47, 0.83908, 12, -70.19999, -134.13, 0.01331, 3, 158.83, -71.91, 0.1476, 2, 11, 219.55, 53.15, 0.77988, 12, -48.04, -38.58, 0.22011, 3, 11, 266.3, 35.09999, 0.5353, 12, -36.73, 10.22, 0.46443, 14, 127.25, 245.46, 2.4E-4, 4, 11, 286.89, 9.79, 0.35076, 12, -14.56, 34.14, 0.64667, 14, 125.69, 212.88, 0.0023, 15, 101.39, 199.13, 2.5E-4, 4, 11, 281.54, -41.24, 0.09169, 12, 36.71, 36, 0.90196, 14, 87.64, 178.44, 0.00513, 15, 58.29, 171.29, 0.00119, 5, 11, 271.53, -136.86, 0.05608, 12, 132.77, 39.48, 0.69232, 13, 34.99, 78.76, 0.22087, 14, 16.37999, 113.93, 0.0224, 15, -22.45, 119.13, 0.0083, 5, 11, 283.51, -164.25, 0.01987, 12, 158.21, 55.17, 0.50334, 13, 52.65, 54.63, 0.3617, 14, 7.01, 85.54, 0.08322, 15, -36.28, 92.63, 0.03184, 6, 11, 326.15, -179.3, 0.00798, 12, 167.14, 99.49, 0.21327, 13, 97.55, 49.25, 0.35075, 14, 28.72, 45.87, 0.14106, 15, -21.26, 49.99, 0.22311, 16, -72.29, 25.96, 0.0638, 6, 11, 333.96, -167.35, 0.00242, 12, 154.22, 105.55, 0.07519, 13, 102.57, 62.6, 0.22995, 14, 42.51, 49.55, 0.2831, 15, -7.06, 51.39, 0.2694, 16, -58.17, 28.03, 0.13992, 6, 11, 344.19, -149.68, 4.9E-4, 12, 134.24, 114.44, 0.0176, 13, 109.72, 83.39, 0.11397, 14, 64.08999, 55.23, 0.07976, 15, 15.12, 53.51, 0.36292, 16, -36.09, 31.19, 0.42523, 1, 16, 35.8, 41.81, 1, 1, 16, 128.11, 17.93, 1, 1, 16, 188.72, -29.42, 1, 1, 16, 44.86, -26.17, 1, 1, 15, 133.17, -49.83, 1, 1, 15, 78.78, -50.15, 1, 5, 11, 399.32, -220.02, 2.2E-4, 12, 195.56, 179.43, 0.01703, 13, 179.46, 27.52, 0.2372, 14, 58.34, -33.93, 0.2023, 15, -4.91, -33.55, 0.54324, 5, 11, 370.41, -244.91, 3.2E-4, 12, 225.9, 152.49, 0.02513, 13, 155.04, -5.13, 0.35003, 14, 17.87999, -32.5, 0.29852, 15, -44.62, -25.61, 0.32598, 5, 11, 340.37, -270.04, 0.00251, 12, 254.98, 126.27, 0.10129, 13, 131.21, -36.2, 0.54075, 14, -21.24, -31.17, 0.2082, 15, -83.01999, -17.96999, 0.14723, 5, 11, 225.1, -238.94, 0.01529, 12, 240.33, 7.81, 0.24036, 13, 11.94, -30.98, 0.5788, 14, -86.31, 68.9, 0.12023, 15, -131.06, 91.29, 0.04528, 5, 11, 194.64, -233.55, 0.04819, 12, 239.26, -23.1, 0.40427, 13, -18.95999, -32.37, 0.48451, 14, -105.4, 93.25, 0.04604, 15, -145.97, 118.4, 0.01696, 5, 11, 187.65, -209.73, 0.09565, 12, 216.66, -33.34999, 0.57617, 13, -30.97, -10.65, 0.30651, 14, -94.71, 115.65, 0.01788, 15, -131.8, 138.78, 0.00376, 4, 11, 163.85, -128.67, 0.19533, 12, 139.75, -68.26, 0.8011, 14, -58.32, 191.88, 0.00327, 15, -83.58, 208.13, 2.9E-4, 4, 11, 165.74, -94.49, 0.31921, 12, 105.59, -71.26, 0.6795, 14, -5.04, 220.72, 0.00116, 15, -56.32, 275.96, 1.0E-4, 4, 11, 166.39, -79.07, 0.46205, 12, 90.23, -72.76, 0.53752, 14, 5.55, 230.48, 3.9E-4, 15, -40.61, 286.16, 2.0E-5, 3, 11, 166.49, -74.17, 0.53779, 12, 85.42, -73.28, 0.46208, 14, -19.99, 230.7, 1.2E-4, 2, 11, 141.54, -82.46, 0.73138, 12, 97.13, -96.82, 0.26861, 3, 11, 99.76, -97.08, 0.81379, 12, 117.34, -136.23, 0.13997, 3, -2.56, -164.19, 0.04623, 3, 11, 45.01, -114.56, 0.8186, 12, 142.41, -187.89, 0.02098, 3, -51.09, -135.29, 0.1604, 3, 11, -16.2, -74.76, 0.62389, 12, 113.82, -253.08, 0.00952, 3, -42.95, -58.38, 0.36658, 2, 11, -74.73, -19.33, 0.31468, 3, -52.66, 17.54999, 0.68531, 2, 11, 1.67, 76.75, 0.25576, 3, 70.07, 18.78, 0.74423, 1, 11, 93.54, 4.13, 1, 2, 11, 185.14, -6.66, 0.75461, 12, 15.98, -64.26999, 0.24538, 2, 11, 217.11, -18.75, 0.50844, 12, 23.47, -30.93, 0.49154, 3, 11, 225.63, -32.91999, 0.32512, 12, 36.3, -20.5, 0.6744, 14, 51.57, 221.95, 4.7E-4, 4, 11, 223, -84.73, 0.20061, 12, 87.96, -15.86, 0.79287, 14, 15.03, 185.13, 0.00581, 15, -12.28, 189.61, 6.9E-4, 5, 11, 235.61, -168.06, 0.07777, 12, 168.69, 8.29, 0.54931, 13, 6.74, 40.47, 0.33413, 14, -31.18, 114.66, 0.0321, 15, -69.26999, 127.55, 0.00667, 5, 11, 259.63, -194.79, 0.01921, 12, 191.79, 35.8, 0.30498, 13, 36, 19.62, 0.53642, 14, -31.14, 78.74, 0.09568, 15, -75.03, 92.09, 0.04369, 5, 11, 332.55, -220.1, 0.00292, 12, 206.64, 111.53, 0.10776, 13, 112.69, 10.82, 0.51915, 14, 6.25, 11.23, 0.23449, 15, -49.03, 19.43, 0.13565, 4, 12, 192.51, 130.62, 0.03213, 13, 130.6, 26.41, 0.33941, 14, 29.35, 5.71, 0.27333, 15, -27.12, 10.25, 0.35511, 1, 16, 18.54999, -16.62999, 1, 1, 16, 19.07, -14.51, 1, 6, 11, 381.55, -150.4, 3.0E-4, 12, 130.71, 150.34, 0.00811, 13, 145.36, 89.53, 0.04102, 14, 89.29, 30.41, 0.02558, 15, 36, 24.95, 0.37636, 16, -13.89, 3.64, 0.5486, 1, 16, 37.75, -25.46, 1, 4, 12, 164.9, 153.55, 0.02263, 13, 151.18, 56, 0.23908, 14, 65.44, 5.55, 0.19254, 15, 8.45, 4.27, 0.54574, 2, 11, -9.28, -17.5, 0.59605, 3, 7.72, -30.85, 0.40393, 3, 11, 195.9, -53.81, 0.42356, 12, 61.11, -47.06, 0.57612, 14, 39.7, 225.21, 2.9E-4, 3, 11, 190.1, -48.45, 0.53227, 12, 56.61, -53.56, 0.46765, 14, 39.83, 233.12, 6.0E-5, 2, 11, 161.26, -48.26, 0.79873, 12, 60.44, -82.12999, 0.20126, 3, 11, 120.37, -58.54, 0.8485, 12, 76.31, -121.18, 0.14441, 3, 41.04, -161.4, 0.00707, 4, 11, 197.37, -69.23, 0.33487, 12, 76.17, -43.46, 0.66324, 14, 30.34, 213.88, 0.0017, 15, -9.09, 262.42, 1.8E-4 ], + "hull": 32, + "edges": [ 40, 38, 38, 36, 28, 30, 28, 26, 26, 24, 24, 22, 22, 20, 14, 12, 12, 10, 6, 4, 60, 62, 0, 62, 40, 42, 42, 44, 34, 36, 16, 14, 52, 50, 4, 2, 2, 0, 10, 8, 8, 6, 72, 74, 74, 76, 76, 78, 78, 80, 80, 90, 90, 88, 16, 18, 18, 20, 30, 32, 32, 34, 56, 58, 58, 60, 94, 96, 96, 98, 52, 54, 54, 56, 100, 98, 48, 50, 44, 46, 46, 48, 102, 94, 72, 70, 70, 68, 66, 68, 66, 64, 64, 92, 86, 84, 50, 96, 94, 48, 46, 102, 52, 98, 54, 100, 70, 6, 68, 4, 66, 2, 72, 8, 86, 20, 86, 82, 82, 88, 84, 26, 88, 26 ], + "width": 382, + "height": 514 } }, "raptor_hindleg_back": { "raptor_hindleg_back": { - "type": "skinnedmesh", + "type": "weightedmesh", "uvs": [ 0.45041, 0.09352, 0.56933, 0.23361, 0.65294, 0.47296, 0.66353, 0.50822, 0.63174, 0.54254, 0.32383, 0.69723, 0.30068, 0.73875, 0.27934, 0.77704, 0.30417, 0.83513, 0.31058, 0.85014, 0.341, 0.85046, 0.45165, 0.85163, 0.59555, 0.81881, 0.91176, 0.92548, 1, 1, 0.56336, 0.96426, 0.48349, 0.9826, 0.29878, 0.98027, 0.22808, 0.98389, 0.15997, 0.98737, 0.15423, 0.95546, 0.13894, 0.87047, 0.07371, 0.78726, 0, 0.75299, 0, 0.7049, 0, 0.671, 0.11875, 0.64652, 0.16535, 0.52659, 0.28495, 0.47397, 0.2901, 0.45773, 0.29427, 0.4446, 0.20635, 0.40396, 0.06128, 0.33691, 0, 0.25247, 0, 0, 0.30793, 0, 0.27599, 0.20261, 0.40397, 0.31121, 0.48439, 0.45963, 0.48317, 0.48383, 0.47029, 0.51062, 0.22698, 0.67328, 0.17141, 0.7242, 0.17122, 0.78241, 0.22995, 0.89469, 0.24677, 0.90829, 0.28672, 0.9146, 0.46582, 0.91414 ], - "triangles": [ 16, 47, 15, 15, 12, 13, 15, 13, 14, 15, 47, 12, 47, 10, 11, 17, 46, 47, 47, 46, 10, 18, 46, 17, 17, 47, 16, 18, 45, 46, 47, 11, 12, 22, 23, 24, 43, 42, 7, 43, 22, 42, 21, 22, 43, 44, 43, 7, 44, 7, 8, 44, 8, 9, 21, 43, 44, 45, 44, 9, 46, 45, 9, 20, 21, 44, 20, 45, 19, 44, 45, 20, 45, 18, 19, 46, 9, 10, 41, 27, 28, 26, 27, 41, 41, 28, 40, 5, 41, 40, 5, 40, 4, 24, 25, 26, 42, 26, 41, 24, 26, 42, 6, 41, 5, 42, 41, 6, 28, 29, 40, 40, 39, 4, 7, 42, 6, 24, 42, 22, 40, 29, 39, 36, 34, 35, 36, 35, 0, 33, 34, 36, 37, 36, 0, 37, 0, 1, 32, 33, 36, 31, 32, 36, 31, 36, 37, 30, 31, 37, 38, 37, 1, 30, 37, 38, 38, 1, 2, 39, 30, 38, 39, 38, 2, 29, 30, 39, 39, 2, 3, 4, 39, 3 ], - "vertices": [ 1, 6, 53.94, 69.15, 1, 1, 6, 126.23, 67.31, 1, 2, 6, 226.42, 31.13, 0.9375, 11, -30.87, -1.11, 0.0625, 2, 6, 240.84, 25.33, 0.7, 11, -25.64, 13.52, 0.3, 2, 6, 246.67, 8.05, 0.3, 11, -8.61, 20.02, 0.7, 3, 6, 240.81, -115.25, 0.0625, 11, 114.8, 19.01, 0.875, 19, 9.48, 59.16, 0.0625, 2, 11, 131.07, 29.69, 0.7, 19, 22.11, 44.35, 0.3, 2, 11, 146.06, 39.54, 0.3, 19, 33.76, 30.71, 0.7, 4, 11, 152.6, 65.01, 0.12438, 19, 59.85, 27.41, 0.74434, 35, 15.85, 48.05, 0.12104, 51, -80.52, 23.87, 0.01022, 4, 11, 154.28, 71.59, 0.0519, 19, 66.59, 26.56, 0.74749, 35, 16.72, 41.31, 0.15401, 51, -77.54, 17.76, 0.04658, 4, 11, 145.73, 77.3, 0.02193, 19, 71.19, 35.76, 0.63296, 35, 26.78, 39.17, 0.1288, 51, -67.32, 18.96, 0.21628, 3, 19, 87.93, 69.21, 0.0625, 35, 63.37, 31.39, 0.675, 51, -30.17, 23.3, 0.26249, 2, 35, 113.82, 35.72, 0.1038, 51, 16.23, 43.56, 0.89619, 1, 51, 128.14, 12.02, 1, 1, 51, 161.85, -15.81, 1, 2, 35, 90.98, -23.36, 0.0138, 51, 13.52, -19.72, 0.98619, 2, 35, 62.97, -25.81, 0.7, 51, -12.23, -31.02, 0.3, 3, 19, 115.12, -1.33, 0.08333, 35, 1.93, -12.66, 0.83333, 51, -74.26, -38.1, 0.08333, 2, 19, 106.11, -23.53, 0.3, 35, -21.8, -9.52, 0.7, 2, 19, 97.43, -44.9, 0.7, 35, -44.67, -6.51, 0.3, 2, 19, 84.26, -40.69, 0.9375, 35, -43.9, 7.29, 0.0625, 1, 19, 49.18, -29.46, 1, 2, 11, 206.75, 5.37, 0.13333, 19, 7.44, -33.77, 0.86666, 2, 11, 219.64, -20.52, 0.36111, 19, -16.64, -49.8, 0.63888, 2, 11, 208.4, -37.82, 0.72083, 19, -35.22, -40.82, 0.27916, 2, 11, 200.49, -50.02, 0.91666, 19, -48.31, -34.48, 0.08333, 1, 11, 161.1, -36.97, 1, 2, 6, 150.1, -116.76, 0.08333, 11, 119.88, -71.55, 0.91666, 2, 6, 154.99, -70.71, 0.42846, 11, 73.68, -68.47, 0.57153, 2, 6, 150.3, -65.27, 0.35604, 11, 68.42, -73.36, 0.64395, 2, 6, 146.51, -60.87, 0.59147, 11, 64.17, -77.32, 0.40852, 2, 6, 115.12, -75.08, 0.8446, 11, 79.61, -108.13, 0.15539, 1, 6, 63.33, -98.53, 1, 1, 6, 21.78, -94.55, 1, 1, 6, -66.69, -32.04, 1, 1, 6, -6.62, 52.97, 1, 1, 6, 58.14, -6, 1, 1, 6, 121.17, 2.44, 1, 2, 6, 188.87, -12.1, 0.96, 11, 13.79, -36.92, 0.04, 2, 6, 197.11, -18.42, 0.7, 11, 19.79, -28.44, 0.3, 2, 6, 203.98, -28.61, 0.3, 11, 29.69, -21.17, 0.7, 3, 6, 213.53, -136.06, 0.04, 11, 136.67, -7.42, 0.91999, 19, -14.02, 34.16, 0.04, 2, 11, 164.32, 0.66, 0.7, 19, -2.53, 7.73, 0.3, 2, 11, 177.97, 21.57, 0.25, 19, 19.92, -3.19, 0.75, 3, 11, 187.55, 72.78, 0.04, 19, 71.93, -6.29, 0.91999, 35, -13.72, 27.87, 0.04, 2, 19, 79.66, -3.72, 0.7, 35, -9.28, 21.04, 0.3, 3, 19, 87.98, 7.25, 0.3, 35, 3.42, 15.76, 0.66, 51, -81.96, -10.7, 0.04, 3, 19, 114.16, 61.85, 0.04, 35, 62.84, 4.15, 0.7, 51, -21.95, -2.66, 0.26 ], - "hull": 36 + "triangles": [ 15, 13, 14, 16, 47, 15, 15, 12, 13, 15, 47, 12, 18, 46, 17, 18, 45, 46, 17, 47, 16, 17, 46, 47, 47, 10, 11, 47, 46, 10, 47, 11, 12, 45, 18, 19, 44, 45, 20, 20, 45, 19, 20, 21, 44, 46, 9, 10, 46, 45, 9, 45, 44, 9, 21, 43, 44, 44, 8, 9, 44, 7, 8, 44, 43, 7, 21, 22, 43, 43, 22, 42, 43, 42, 7, 22, 23, 24, 24, 42, 22, 7, 42, 6, 42, 41, 6, 6, 41, 5, 24, 26, 42, 42, 26, 41, 24, 25, 26, 5, 40, 4, 5, 41, 40, 41, 28, 40, 26, 27, 41, 41, 27, 28, 40, 39, 4, 28, 29, 40, 40, 29, 39, 4, 39, 3, 39, 2, 3, 29, 30, 39, 39, 38, 2, 39, 30, 38, 38, 1, 2, 30, 37, 38, 38, 37, 1, 30, 31, 37, 31, 36, 37, 31, 32, 36, 32, 33, 36, 37, 0, 1, 37, 36, 0, 33, 34, 36, 36, 35, 0, 36, 34, 35 ], + "vertices": [ 1, 4, 53.94, 69.15, 1, 1, 4, 126.23, 67.31, 1, 2, 4, 226.42, 31.13, 0.9375, 5, -30.87, -1.11, 0.0625, 2, 4, 240.84, 25.33, 0.7, 5, -25.64, 13.52, 0.3, 2, 4, 246.67, 8.05, 0.3, 5, -8.60999, 20.02, 0.7, 3, 4, 240.81, -115.25, 0.0625, 5, 114.8, 19.01, 0.875, 6, 9.47999, 59.16, 0.0625, 2, 5, 131.07, 29.69, 0.7, 6, 22.11, 44.35, 0.3, 2, 5, 146.06, 39.54, 0.3, 6, 33.75999, 30.71, 0.7, 4, 5, 152.6, 65.01, 0.12438, 6, 59.85, 27.41, 0.74434, 7, 15.85, 48.05, 0.12104, 8, -80.51999, 23.87, 0.01021, 4, 5, 154.28, 71.58999, 0.0519, 6, 66.58999, 26.56, 0.74749, 7, 16.71999, 41.31, 0.15401, 8, -77.54, 17.76, 0.04658, 4, 5, 145.73, 77.3, 0.02193, 6, 71.19, 35.75999, 0.63296, 7, 26.78, 39.16999, 0.1288, 8, -67.32, 18.95999, 0.21628, 3, 6, 87.93, 69.21, 0.0625, 7, 63.37, 31.39, 0.675, 8, -30.17, 23.3, 0.26249, 2, 7, 113.82, 35.72, 0.1038, 8, 16.23, 43.56, 0.89619, 1, 8, 128.14, 12.02, 1, 1, 8, 161.85, -15.81, 1, 2, 7, 90.98, -23.36, 0.0138, 8, 13.52, -19.71999, 0.98619, 2, 7, 62.97, -25.81, 0.7, 8, -12.23, -31.02, 0.3, 3, 6, 115.12, -1.33, 0.08333, 7, 1.93, -12.66, 0.83333, 8, -74.26, -38.09999, 0.08333, 2, 6, 106.11, -23.53, 0.3, 7, -21.8, -9.52, 0.7, 2, 6, 97.43, -44.9, 0.7, 7, -44.67, -6.51, 0.3, 2, 6, 84.26, -40.68999, 0.9375, 7, -43.9, 7.29, 0.0625, 1, 6, 49.18, -29.46, 1, 2, 5, 206.75, 5.37, 0.13333, 6, 7.44, -33.77, 0.86666, 2, 5, 219.64, -20.52, 0.36111, 6, -16.64, -49.8, 0.63888, 2, 5, 208.4, -37.82, 0.72083, 6, -35.22, -40.82, 0.27916, 2, 5, 200.49, -50.02, 0.91666, 6, -48.31, -34.48, 0.08333, 1, 5, 161.1, -36.97, 1, 2, 4, 150.1, -116.76, 0.08333, 5, 119.88, -71.55, 0.91666, 2, 4, 154.99, -70.71, 0.42846, 5, 73.68, -68.47, 0.57153, 2, 4, 150.3, -65.26999, 0.35604, 5, 68.42, -73.36, 0.64395, 2, 4, 146.51, -60.87, 0.59147, 5, 64.17, -77.32, 0.40852, 2, 4, 115.12, -75.08, 0.8446, 5, 79.61, -108.13, 0.15538, 1, 4, 63.33, -98.53, 1, 1, 4, 21.78, -94.55, 1, 1, 4, -66.69, -32.04, 1, 1, 4, -6.62, 52.97, 1, 1, 4, 58.14, -6, 1, 1, 4, 121.17, 2.44, 1, 2, 4, 188.87, -12.1, 0.96, 5, 13.79, -36.91999, 0.04, 2, 4, 197.11, -18.42, 0.7, 5, 19.79, -28.44, 0.3, 2, 4, 203.98, -28.61, 0.3, 5, 29.69, -21.17, 0.7, 3, 4, 213.53, -136.06, 0.04, 5, 136.67, -7.42, 0.91999, 6, -14.02, 34.16, 0.04, 2, 5, 164.32, 0.66, 0.7, 6, -2.53, 7.73, 0.3, 2, 5, 177.97, 21.57, 0.25, 6, 19.92, -3.19, 0.75, 3, 5, 187.55, 72.78, 0.04, 6, 71.93, -6.29, 0.91999, 7, -13.72, 27.87, 0.04, 2, 6, 79.66, -3.72, 0.7, 7, -9.28, 21.04, 0.3, 3, 6, 87.98, 7.25, 0.3, 7, 3.42, 15.76, 0.66, 8, -81.96, -10.7, 0.04, 3, 6, 114.16, 61.85, 0.04, 7, 62.84, 4.15, 0.7, 8, -21.95, -2.66, 0.26 ], + "hull": 36, + "edges": [ 66, 68, 66, 64, 56, 54, 54, 52, 52, 50, 46, 44, 44, 42, 34, 32, 32, 30, 30, 28, 28, 26, 26, 24, 24, 22, 10, 8, 8, 6, 6, 4, 4, 2, 2, 0, 68, 70, 0, 70, 46, 48, 48, 50, 14, 12, 12, 10, 60, 58, 58, 56, 42, 40, 40, 38, 18, 16, 16, 14, 22, 20, 20, 18, 38, 36, 36, 34, 60, 62, 62, 64, 68, 72, 72, 74, 74, 76, 76, 78, 78, 80, 80, 82, 82, 84, 84, 86, 16, 88, 86, 88, 18, 90, 90, 38, 88, 90, 20, 92, 92, 36, 90, 92, 92, 94, 94, 22, 94, 32, 30, 24, 88, 40, 86, 14, 84, 12, 82, 10, 82, 52, 48, 84, 44, 86, 78, 6, 4, 76, 80, 8, 80, 56, 58, 78, 76, 60 ], + "width": 338, + "height": 429 } }, "raptor_horn": { @@ -306,11 +410,14 @@ }, "raptor_jaw": { "raptor_jaw": { - "type": "skinnedmesh", - "uvs": [ 0.40984, 0.22169, 0.42214, 0.3988, 0.67894, 0.53819, 0.7589, 0.62838, 0.99999, 0.4726, 1, 0.53491, 0.87731, 0.77925, 0.63281, 0.94487, 0.39908, 0.96947, 0.19456, 0.89404, 0.21609, 0.6497, 0, 0.46111, 0, 0, 0.26069, 0, 0.19456, 0.29385, 0.31758, 0.50047 ], - "triangles": [ 14, 13, 0, 10, 11, 15, 15, 14, 1, 2, 7, 8, 8, 9, 10, 15, 2, 8, 15, 8, 10, 7, 3, 6, 7, 2, 3, 2, 15, 1, 6, 3, 5, 5, 3, 4, 14, 0, 1, 11, 14, 15, 11, 12, 14, 14, 12, 13 ], - "vertices": [ 1, 48, 28.6, 68.85, 1, 1, 48, 69.65, 38.95, 1, 1, 48, 150.72, 72.88, 1, 1, 48, 186.16, 74.79, 1, 1, 48, 199.76, 159.69, 1, 1, 48, 213.35, 148.16, 1, 1, 48, 242.43, 74.42, 1, 1, 48, 230.31, -13.08, 1, 1, 48, 189.56, -71.99, 1, 1, 48, 132.76, -105.6, 1, 1, 48, 83.71, -55.39, 1, 2, 33, -18.31, 12.1, 0.67732, 48, -0.04, -70.76, 0.32267, 1, 33, 113.44, 16.95, 1, 1, 33, 116.36, -62.48, 1, 1, 48, 1.86, 5.43, 1, 1, 48, 71.19, -4.17, 1 ], - "hull": 14 + "type": "weightedmesh", + "uvs": [ 0.40984, 0.22169, 0.42214, 0.3988, 0.67894, 0.53819, 0.7589, 0.62838, 0.99999, 0.4726, 1, 0.53491, 0.87731, 0.77925, 0.63281, 0.94487, 0.39908, 0.96947, 0.19456, 0.89404, 0.21609, 0.6497, 0, 0.46111, 0, 0, 0.26069, 0, 0.19456, 0.29385 ], + "triangles": [ 2, 7, 8, 8, 9, 10, 2, 8, 10, 7, 3, 6, 7, 2, 3, 2, 10, 1, 6, 3, 5, 11, 14, 10, 10, 14, 1, 5, 3, 4, 14, 0, 1, 14, 13, 0, 11, 12, 14, 14, 12, 13 ], + "vertices": [ 1, 52, 28.6, 68.85, 1, 1, 52, 69.65, 38.95, 1, 1, 52, 150.72, 72.87999, 1, 1, 52, 186.16, 74.79, 1, 1, 52, 199.76, 159.69, 1, 1, 52, 213.35, 148.16, 1, 1, 52, 242.43, 74.42, 1, 1, 52, 230.31, -13.08, 1, 1, 52, 189.56, -71.99, 1, 1, 52, 132.76, -105.6, 1, 1, 52, 83.71, -55.39, 1, 2, 48, -18.31, 12.1, 0.67732, 52, -0.04, -70.76, 0.32267, 1, 48, 113.44, 16.95, 1, 1, 48, 116.36, -62.48, 1, 1, 52, 1.86, 5.43, 1 ], + "hull": 14, + "edges": [ 22, 24, 22, 20, 20, 18, 18, 16, 16, 14, 14, 12, 12, 10, 10, 8, 8, 6, 6, 4, 4, 2, 2, 0, 24, 26, 0, 26, 24, 28, 22, 28, 28, 0 ], + "width": 305, + "height": 286 } }, "raptor_saddle_noshadow": { @@ -321,11 +428,14 @@ }, "raptor_saddle_strap_rear": { "raptor_saddle_strap_rear": { - "type": "skinnedmesh", + "type": "weightedmesh", "uvs": [ 0.85499, 0.06802, 1, 0.13237, 1, 0.20266, 0.95981, 0.26524, 0.88583, 0.38045, 0.80684, 0.46413, 0.74038, 0.53453, 0.81676, 0.5895, 0.51961, 1, 0.4516, 1, 0.01739, 0.8407, 0, 0.80889, 0.24645, 0.36639, 0.3792, 0.39151, 0.42457, 0.32099, 0.49229, 0.21571, 0.57673, 0.10986, 0.66437, 0, 0.70168, 0, 0.56028, 0.46321, 0.68822, 0.29772, 0.76845, 0.18722, 0.61529, 0.39206 ], - "triangles": [ 19, 14, 22, 13, 14, 19, 19, 22, 6, 13, 10, 11, 9, 13, 19, 8, 9, 19, 6, 8, 19, 13, 11, 12, 9, 10, 13, 7, 8, 6, 22, 15, 20, 14, 15, 22, 5, 20, 4, 22, 20, 5, 15, 16, 20, 20, 21, 4, 6, 22, 5, 21, 18, 0, 16, 17, 18, 21, 16, 18, 0, 1, 2, 3, 21, 0, 2, 3, 0, 20, 16, 21, 4, 21, 3 ], - "vertices": [ 1, 21, 3.9, -3.27, 1, 1, 21, 4.25, 15.05, 1, 1, 21, 13.24, 20.28, 1, 2, 21, 23.42, 21.2, 0.7, 37, -15.2, 21.22, 0.3, 3, 21, 41.11, 22.87, 0.3, 37, 2.48, 22.89, 0.6375, 53, -33.83, 24.96, 0.0625, 3, 21, 52.07, 21.72, 0.0625, 37, 13.43, 21.74, 0.6375, 53, -22.97, 23.11, 0.3, 2, 37, 18.39, 20.76, 0.25, 53, -18.09, 21.82, 0.75, 1, 53, -18.76, 33.09, 1, 1, 53, 49.92, 31.57, 1, 1, 53, 53.21, 25, 1, 1, 53, 53.11, -27.48, 1, 1, 53, 49.74, -31.27, 1, 1, 53, -20.73, -36.76, 1, 1, 53, -23.82, -22.28, 1, 3, 21, 53.48, -24.61, 0.0625, 37, 14.84, -24.59, 0.575, 53, -24.51, -23.21, 0.3625, 3, 21, 41.44, -26.12, 0.3, 37, 2.81, -26.09, 0.6375, 53, -36.62, -23.95, 0.0625, 2, 21, 24.38, -26.12, 0.7, 37, -14.24, -26.1, 0.3, 1, 21, 5.57, -26.12, 1, 1, 21, 3.54, -22.64, 1, 1, 53, -23.08, -0.04, 1, 3, 21, 41.66, -1.72, 0.3, 37, 3.03, -1.7, 0.66, 53, -34.85, 0.38, 0.04, 2, 21, 23.85, -2.46, 0.7, 37, -14.77, -2.44, 0.3, 3, 21, 52.58, -1.52, 0.04, 37, 13.95, -1.5, 0.62, 53, -23.94, -0.11, 0.34 ], - "hull": 19 + "triangles": [ 7, 8, 6, 9, 10, 13, 13, 11, 12, 6, 8, 19, 8, 9, 19, 9, 13, 19, 13, 10, 11, 19, 22, 6, 13, 14, 19, 19, 14, 22, 6, 22, 5, 22, 20, 5, 5, 20, 4, 14, 15, 22, 22, 15, 20, 20, 21, 4, 15, 16, 20, 4, 21, 3, 20, 16, 21, 2, 3, 0, 3, 21, 0, 0, 1, 2, 21, 16, 18, 16, 17, 18, 21, 18, 0 ], + "vertices": [ 1, 38, 3.9, -3.27, 1, 1, 38, 4.25, 15.05, 1, 1, 38, 13.24, 20.28, 1, 2, 38, 23.42, 21.2, 0.7, 39, -15.2, 21.22, 0.3, 3, 38, 41.11, 22.87, 0.3, 39, 2.48, 22.89, 0.6375, 40, -33.83, 24.96, 0.0625, 3, 38, 52.07, 21.72, 0.0625, 39, 13.43, 21.74, 0.6375, 40, -22.97, 23.11, 0.3, 2, 39, 18.39, 20.76, 0.25, 40, -18.09, 21.82, 0.75, 1, 40, -18.76, 33.09, 1, 1, 40, 49.92, 31.57, 1, 1, 40, 53.21, 25, 1, 1, 40, 53.11, -27.48, 1, 1, 40, 49.74, -31.27, 1, 1, 40, -20.73, -36.75999, 1, 1, 40, -23.82, -22.28, 1, 3, 38, 53.48, -24.61, 0.0625, 39, 14.84, -24.59, 0.575, 40, -24.51, -23.21, 0.3625, 3, 38, 41.43999, -26.12, 0.3, 39, 2.81, -26.09, 0.6375, 40, -36.62, -23.95, 0.0625, 2, 38, 24.38, -26.12, 0.7, 39, -14.24, -26.1, 0.3, 1, 38, 5.57, -26.12, 1, 1, 38, 3.54, -22.64, 1, 1, 40, -23.08, -0.04, 1, 3, 38, 41.66, -1.72, 0.3, 39, 3.03, -1.7, 0.66, 40, -34.84999, 0.38, 0.04, 2, 38, 23.85, -2.46, 0.7, 39, -14.77, -2.44, 0.3, 3, 38, 52.58, -1.52, 0.04, 39, 13.95, -1.5, 0.62, 40, -23.94, -0.11, 0.34 ], + "hull": 19, + "edges": [ 26, 24, 24, 22, 22, 20, 20, 18, 16, 18, 16, 14, 14, 12, 4, 2, 34, 36, 12, 38, 38, 26, 8, 40, 40, 30, 2, 0, 0, 36, 30, 32, 32, 34, 32, 42, 4, 6, 6, 8, 42, 6, 26, 28, 28, 30, 28, 44, 8, 10, 10, 12, 44, 10 ], + "width": 108, + "height": 148 } }, "raptor_saddle_w_shadow": { @@ -333,11 +443,14 @@ }, "raptor_tongue": { "raptor_tongue": { - "type": "skinnedmesh", + "type": "weightedmesh", "uvs": [ 0.35242, 0.2156, 0.4794, 0.44245, 0.62071, 0.61176, 0.80562, 0.75373, 1, 0.90297, 1, 1, 0.8971, 1, 0.72054, 0.92254, 0.50668, 0.82872, 0.30401, 0.70725, 0.10537, 0.57888, 0, 0.50622, 0, 0, 0.26224, 0 ], - "triangles": [ 8, 7, 6, 6, 4, 5, 4, 6, 3, 6, 7, 3, 7, 8, 3, 8, 2, 3, 9, 10, 1, 8, 9, 2, 9, 1, 2, 1, 10, 0, 10, 11, 0, 0, 12, 13, 0, 11, 12 ], - "vertices": [ 2, 55, 3.63, 27.04, 0.6875, 62, -47.26, 33.87, 0.3125, 3, 55, 39.09, 19.45, 0.3125, 62, -13.41, 20.86, 0.625, 65, -51.54, 33.37, 0.0625, 3, 55, 71.56, 19.02, 0.0625, 62, 18.58, 15.39, 0.625, 65, -21.56, 20.92, 0.3125, 2, 62, 55.03, 16.85, 0.3125, 65, 14.29, 14.23, 0.6875, 2, 62, 93.34, 18.39, 0.08333, 65, 51.98, 7.21, 0.91666, 1, 65, 56.09, -4.5, 1, 2, 62, 85.06, -1.49, 0.08333, 65, 39.48, -10.33, 0.91666, 2, 62, 54.22, -9.18, 0.3125, 65, 7.71, -10.96, 0.6875, 3, 55, 75.14, -14.72, 0.0625, 62, 16.87, -18.5, 0.625, 65, -30.77, -11.73, 0.3125, 3, 55, 38.8, -25.8, 0.3125, 62, -20.74, -23.8, 0.625, 65, -68.62, -8.53, 0.0625, 2, 55, 2.4, -35.77, 0.6875, 62, -58.25, -27.99, 0.3125, 2, 55, -17.28, -40.62, 0.91666, 62, -78.45, -29.71, 0.08333, 1, 55, -59.91, 8.18, 1, 2, 55, -26.13, 37.69, 0.91666, 62, -75.02, 49.02, 0.08333 ], - "hull": 14 + "triangles": [ 7, 8, 3, 6, 7, 3, 4, 6, 3, 6, 4, 5, 8, 7, 6, 9, 1, 2, 8, 9, 2, 9, 10, 1, 8, 2, 3, 0, 11, 12, 0, 12, 13, 10, 11, 0, 1, 10, 0 ], + "vertices": [ 2, 49, 3.63, 27.04, 0.6875, 50, -47.26, 33.87, 0.3125, 3, 49, 39.09, 19.45, 0.3125, 50, -13.41, 20.86, 0.625, 51, -51.54, 33.37, 0.0625, 3, 49, 71.56, 19.02, 0.0625, 50, 18.58, 15.39, 0.625, 51, -21.56, 20.92, 0.3125, 2, 50, 55.03, 16.85, 0.3125, 51, 14.29, 14.23, 0.6875, 2, 50, 93.34, 18.39, 0.08333, 51, 51.98, 7.21, 0.91666, 1, 51, 56.09, -4.5, 1, 2, 50, 85.06, -1.49, 0.08333, 51, 39.48, -10.33, 0.91666, 2, 50, 54.22, -9.18, 0.3125, 51, 7.71, -10.96, 0.6875, 3, 49, 75.14, -14.72, 0.0625, 50, 16.87, -18.5, 0.625, 51, -30.77, -11.73, 0.3125, 3, 49, 38.8, -25.8, 0.3125, 50, -20.74, -23.8, 0.625, 51, -68.62, -8.53, 0.0625, 2, 49, 2.4, -35.77, 0.6875, 50, -58.25, -27.99, 0.3125, 2, 49, -17.28, -40.62, 0.91666, 50, -78.44999, -29.71, 0.08333, 1, 49, -59.91, 8.18, 1, 2, 49, -26.13, 37.68999, 0.91666, 50, -75.01999, 49.02, 0.08333 ], + "hull": 14, + "edges": [ 22, 24, 10, 12, 10, 8, 24, 26, 16, 4, 18, 16, 2, 4, 18, 2, 22, 20, 0, 26, 20, 0, 0, 2, 12, 14, 14, 16, 4, 6, 6, 8, 14, 6, 20, 18 ], + "width": 171, + "height": 128 } }, "spineboy_torso": { @@ -351,11 +464,14 @@ }, "stirrup_strap": { "stirrup_strap": { - "type": "skinnedmesh", + "type": "weightedmesh", "uvs": [ 0.36822, 0.27893, 0.45737, 0.38897, 0.54451, 0.49651, 0.67872, 0.59135, 0.81977, 0.69102, 1, 0.77344, 1, 1, 0.77956, 1, 0.63729, 0.81629, 0.53364, 0.72348, 0.40534, 0.6086, 0.30886, 0.52535, 0.21049, 0.44047, 0, 0.26245, 0, 0, 0.30637, 0, 0.20241, 0.23 ], - "triangles": [ 2, 10, 1, 9, 10, 2, 9, 2, 3, 8, 9, 3, 8, 3, 4, 7, 8, 4, 7, 4, 5, 7, 5, 6, 16, 14, 15, 13, 14, 16, 16, 15, 0, 12, 16, 0, 12, 0, 1, 13, 16, 12, 11, 12, 1, 10, 11, 1 ], - "vertices": [ 2, 26, 24.71, 8.03, 0.80344, 39, -17.42, 11.02, 0.19655, 2, 26, 37.95, 8.04, 0.59978, 39, -4.36, 8.87, 0.40021, 2, 26, 50.88, 8.04, 0.36895, 39, 8.39, 6.77, 0.63104, 2, 26, 65.92, 12.27, 0.17748, 39, 23.91, 8.48, 0.82251, 2, 26, 81.72, 16.7, 0.05943, 39, 40.23, 10.28, 0.94056, 2, 26, 98.82, 25.04, 0.01209, 39, 58.46, 15.71, 0.9879, 2, 26, 114.44, 11.57, 0.00191, 39, 71.67, -0.11, 0.99808, 2, 26, 100.47, -4.61, 0.01817, 39, 55.25, -13.81, 0.98182, 2, 26, 78.79, -4.14, 0.07487, 39, 33.94, -9.81, 0.92512, 2, 26, 65.83, -6.24, 0.2028, 39, 20.81, -9.76, 0.79719, 2, 26, 49.78, -8.83, 0.39971, 39, 4.55, -9.7, 0.60028, 2, 26, 37.93, -10.97, 0.62658, 39, -7.48, -9.88, 0.37341, 2, 26, 25.85, -13.15, 0.82034, 39, -19.75, -10.06, 0.17965, 2, 26, 0.25, -18.03, 0.95288, 39, -45.81, -10.7, 0.04711, 2, 26, -17.83, -2.43, 0.97709, 39, -61.11, 7.63, 0.0229, 2, 26, 1.57, 20.07, 0.94774, 39, -38.29, 26.67, 0.05225, 2, 26, 10.84, -1.23, 0.97709, 39, -32.62, 4.14, 0.0229 ], - "hull": 16 + "triangles": [ 7, 5, 6, 7, 4, 5, 7, 8, 4, 8, 3, 4, 8, 9, 3, 9, 2, 3, 9, 10, 2, 2, 10, 1, 10, 11, 1, 11, 12, 1, 13, 16, 12, 12, 0, 1, 12, 16, 0, 16, 15, 0, 13, 14, 16, 16, 14, 15 ], + "vertices": [ 2, 25, 24.71, 8.03, 0.80344, 26, -17.42, 11.02, 0.19655, 2, 25, 37.95, 8.04, 0.59978, 26, -4.36, 8.87, 0.40021, 2, 25, 50.88, 8.04, 0.36895, 26, 8.39, 6.77, 0.63103, 2, 25, 65.92, 12.27, 0.17748, 26, 23.91, 8.47999, 0.82251, 2, 25, 81.72, 16.7, 0.05943, 26, 40.23, 10.28, 0.94056, 2, 25, 98.82, 25.04, 0.01209, 26, 58.46, 15.71, 0.9879, 2, 25, 114.44, 11.57, 0.00191, 26, 71.67, -0.11, 0.99808, 2, 25, 100.47, -4.61, 0.01816, 26, 55.25, -13.81, 0.98182, 2, 25, 78.79, -4.14, 0.07487, 26, 33.93999, -9.81, 0.92512, 2, 25, 65.83, -6.24, 0.2028, 26, 20.81, -9.76, 0.79719, 2, 25, 49.78, -8.83, 0.39971, 26, 4.55, -9.7, 0.60028, 2, 25, 37.93, -10.97, 0.62658, 26, -7.48, -9.88, 0.37341, 2, 25, 25.85, -13.15, 0.82034, 26, -19.75, -10.06, 0.17965, 2, 25, 0.25, -18.03, 0.95288, 26, -45.81, -10.7, 0.04711, 2, 25, -17.83, -2.43, 0.97709, 26, -61.11, 7.63, 0.0229, 2, 25, 1.57, 20.07, 0.94774, 26, -38.29, 26.67, 0.05225, 2, 25, 10.84, -1.23, 0.97709, 26, -32.62, 4.14, 0.0229 ], + "hull": 16, + "edges": [ 28, 30, 30, 0, 12, 10, 8, 10, 12, 14, 14, 16, 26, 28, 24, 26, 26, 32, 32, 30, 20, 22, 22, 24, 0, 2, 2, 4, 4, 6, 6, 8, 16, 18, 18, 20 ], + "width": 97, + "height": 91 } }, "visor": { @@ -364,6 +480,1179 @@ } }, "animations": { + "Jump": { + "bones": { + "root": { + "rotate": [ + { "time": 0, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { + "time": 0.3, + "x": 0, + "y": 0, + "curve": [ 0.201, 0.17, 0.815, 0.83 ] + }, + { "time": 0.6666, "x": 1482.78, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 } + ] + }, + "front_foot_goal": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 0.2, "angle": 0 }, + { "time": 0.3, "angle": -41.64 }, + { "time": 0.3666, "angle": -69.66 }, + { "time": 0.4333, "angle": -12.8 }, + { "time": 0.5333, "angle": 5.73 }, + { "time": 0.6666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.3, "x": 0, "y": 0 }, + { "time": 0.3666, "x": -60.01, "y": 111.1 }, + { "time": 0.4333, "x": 213.18, "y": 291.22 }, + { "time": 0.5333, "x": 243.73, "y": 332.61 }, + { "time": 0.6666, "x": 95.94, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.6666, "x": 1, "y": 1 } + ] + }, + "hip": { + "rotate": [ + { "time": 0, "angle": -4.48 }, + { "time": 0.1, "angle": -23.02 }, + { "time": 0.3, "angle": 19.24 }, + { "time": 0.5333, "angle": 20.85 }, + { "time": 0.6666, "angle": -10.76 }, + { "time": 0.7666, "angle": -18.58 }, + { "time": 0.9333, "angle": -3.56 }, + { "time": 1.0666, "angle": -4.48 } + ], + "translate": [ + { "time": 0, "x": -100.65, "y": 49.77 }, + { + "time": 0.1, + "x": 9.37, + "y": -109.06, + "curve": [ 0.245, 0, 0.609, 0.41 ] + }, + { + "time": 0.1666, + "x": 150.37, + "y": -76.51, + "curve": [ 0.401, 0.34, 0.858, 0.87 ] + }, + { "time": 0.3, "x": 361, "y": 36.69 }, + { + "time": 0.5333, + "x": 5.36, + "y": 290.91, + "curve": [ 0.808, 0, 0.892, 0.81 ] + }, + { "time": 0.6666, "x": -56.27, "y": 88.07 }, + { + "time": 0.7666, + "x": 179.93, + "y": -59.94, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 0.9333, + "x": 238.11, + "y": 50.63, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 1.0666, "x": 213.19, "y": 49.77 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "rear_foot_goal": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 0.2, "angle": 0 }, + { "time": 0.3, "angle": -41.64 }, + { "time": 0.3666, "angle": -69.66 }, + { "time": 0.4333, "angle": -57.97 }, + { "time": 0.7, "angle": -9.19 }, + { "time": 0.7333, "angle": -7.78 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.3, "x": 0, "y": 0 }, + { "time": 0.3666, "x": -131.66, "y": 47.58 }, + { "time": 0.4333, "x": -16.1, "y": 205.84 }, + { "time": 0.5333, "x": 61.29, "y": 320.2 }, + { "time": 0.7333, "x": 235.62, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.7, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.7333, "x": 1, "y": 1 } + ] + }, + "front_leg1": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "front_leg_goal": { + "rotate": [ + { "time": 0, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.3, "x": 0, "y": 0 }, + { "time": 0.7, "x": -0.39, "y": 24.29 }, + { "time": 0.7666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 } + ] + }, + "rear_leg1": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "rear_leg_goal": { + "rotate": [ + { "time": 0, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.3, "x": 0, "y": 0 }, + { "time": 0.7, "x": 6.75, "y": 25.64 }, + { "time": 0.7666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 } + ] + }, + "tail1": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.1, "angle": -11.02 }, + { "time": 0.3, "angle": 0.53 }, + { "time": 0.4333, "angle": 8.64 }, + { "time": 0.7, "angle": -9.73 }, + { + "time": 0.7666, + "angle": -4.46, + "curve": [ 0.243, 0, 0.648, 1 ] + }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "torso1": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "front_leg2": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "rear_leg2": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "saddle": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "tail2": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.1, "angle": -39.83 }, + { "time": 0.3, "angle": -31.82 }, + { "time": 0.4333, "angle": -7.28 }, + { "time": 0.5333, "angle": 1.28 }, + { "time": 0.6, "angle": -7.22 }, + { "time": 0.7, "angle": -30.66 }, + { + "time": 0.7666, + "angle": -40.54, + "curve": [ 0.243, 0, 0.648, 1 ] + }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "torso2": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.1, "angle": 0.51 }, + { "time": 0.3, "angle": -1.9 }, + { "time": 0.5333, "angle": 1.04 }, + { "time": 0.7, "angle": -3.25 }, + { "time": 0.7666, "angle": 4.81 }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "front_arm1": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.1666, "angle": -308.79 }, + { "time": 0.3, "angle": -398.7 }, + { "time": 0.5333, "angle": -297.8 }, + { "time": 0.7, "angle": 62.19 }, + { "time": 0.7666, "angle": -325.36 }, + { "time": 0.8333, "angle": -374.42 }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "front_leg3": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "neck": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.1, "angle": -8.25 }, + { "time": 0.3, "angle": -1.9 }, + { "time": 0.5333, "angle": 5.44 }, + { "time": 0.7, "angle": 24.01 }, + { "time": 0.7666, "angle": 4.82 }, + { "time": 0.8666, "angle": -1.78 }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.1, "x": 0, "y": 0 }, + { "time": 0.3, "x": 62.9, "y": -44.25 }, + { "time": 0.5333, "x": -4.35, "y": 17.31 }, + { "time": 0.7, "x": 0, "y": 0 }, + { "time": 0.7666, "x": 23.29, "y": -42.27 }, + { "time": 0.8666, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "rear_arm1": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.1, "angle": 51.2 }, + { "time": 0.3333, "angle": -38.7 }, + { "time": 0.6, "angle": 62.19, "curve": "stepped" }, + { "time": 0.7333, "angle": 62.19 }, + { "time": 0.8, "angle": 34.62 }, + { "time": 0.8666, "angle": -14.43 }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "rear_leg3": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "saddle_strap_front1": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "saddle_strap_rear1": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "spineboy_front_arm_goal": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "spineboy_hip": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 0.8666, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 }, + { "time": 0.1, "x": 35.96, "y": -11.83 }, + { "time": 0.3, "x": 31.1, "y": -50.39 }, + { "time": 0.5333, "x": 12.1, "y": -8.03 }, + { "time": 0.7, "x": 41.7, "y": -19.46 }, + { "time": 0.8666, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.8666, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "spineboy_rear_arm_goal": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "stirrup": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "stirrup_strap1": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "tail3": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.1, "angle": -8.97 }, + { "time": 0.3, "angle": -18.38 }, + { "time": 0.4333, "angle": 0.9 }, + { "time": 0.5333, "angle": 11.43 }, + { "time": 0.6, "angle": 17.22 }, + { "time": 0.7, "angle": 4.74 }, + { + "time": 0.7666, + "angle": -20.69, + "curve": [ 0.243, 0, 0.648, 1 ] + }, + { + "time": 0.9666, + "angle": -20.4, + "curve": [ 0.382, 0.57, 0.735, 1 ] + }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "back_thigh": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "front_arm2": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.1, "angle": 23.1 }, + { "time": 0.3, "angle": -75.92 }, + { "time": 0.5333, "angle": -1.41 }, + { "time": 0.7666, "angle": 26.86 }, + { "time": 0.8333, "angle": -56.14 }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "front_foot1": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "front_thigh": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "gun": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.1, "angle": 15.27 }, + { "time": 0.3, "angle": -53.4 }, + { "time": 0.5666, "angle": -63.35 }, + { "time": 0.7666, "angle": -29.92 }, + { "time": 0.9, "angle": 7.24 }, + { "time": 1, "angle": -3.69 }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "head": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.1, "angle": 9.93 }, + { "time": 0.3, "angle": -3.76 }, + { "time": 0.5333, "angle": -26.63 }, + { "time": 0.7, "angle": -10.23 }, + { "time": 0.7666, "angle": 21.8 }, + { "time": 0.8666, "angle": 15.36 }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "rear_arm2": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.1, "angle": 23.1 }, + { "time": 0.3, "angle": -75.92 }, + { "time": 0.5333, "angle": -1.41 }, + { "time": 0.7666, "angle": 26.86 }, + { "time": 0.8333, "angle": -56.14 }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "rear_foot1": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "saddle_strap_front2": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "saddle_strap_rear2": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "spineboy_torso": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.1666, "angle": -24.93 }, + { "time": 0.2333, "angle": -20.34 }, + { "time": 0.5333, "angle": -11.2 }, + { "time": 0.7, "angle": 10.49 }, + { + "time": 0.8333, + "angle": -30.21, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 1, "angle": 1.34 }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "stirrup_strap2": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "tail4": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.1, "angle": 34.12 }, + { "time": 0.3, "angle": -12.25 }, + { "time": 0.4333, "angle": 11.11 }, + { "time": 0.5333, "angle": 25.19 }, + { "time": 0.6, "angle": 32.5 }, + { "time": 0.7, "angle": 24.4 }, + { + "time": 0.7666, + "angle": 9.9, + "curve": [ 0.243, 0, 0.648, 1 ] + }, + { + "time": 0.9666, + "angle": -11.72, + "curve": [ 0.382, 0.57, 0.735, 1 ] + }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "back_arm": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "back_knee": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "front_arm": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "front_foot2": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 0.3, "angle": 0 }, + { "time": 0.3666, "angle": -63.6 }, + { "time": 0.4333, "angle": -80.16 }, + { "time": 0.5333, "angle": -17.48 }, + { "time": 0.6666, "angle": 24.85 }, + { "time": 0.7666, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.6666, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.6666, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "front_hand": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.5333, "angle": -27.74 }, + { "time": 0.7666, "angle": -27.09 }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "horn_front": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "horn_rear": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "jaw": { + "rotate": [ + { "time": 0, "angle": 15.56 }, + { "time": 0.2333, "angle": -0.92 }, + { "time": 0.5, "angle": 20.4 }, + { "time": 0.7, "angle": 18.32 }, + { "time": 0.7666, "angle": 5.17 }, + { "time": 0.8333, "angle": 20.34 }, + { "time": 1.0666, "angle": 15.56 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "lower_leg": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "neck2": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.1, "angle": 11.08 }, + { "time": 0.8333, "angle": 8.16 }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "rear_foot2": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 0.3, "angle": 0 }, + { "time": 0.3666, "angle": -87.93 }, + { "time": 0.4333, "angle": -126.75 }, + { "time": 0.5333, "angle": -63.79 }, + { "time": 0.7, "angle": 24.85 }, + { "time": 0.7666, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.7, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.7, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "rear_hand": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.5333, "angle": -27.74 }, + { "time": 0.7666, "angle": -27.09 }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "saddle_strap_rear3": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "tail5": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.1, "angle": 76.87 }, + { "time": 0.3, "angle": -12.25 }, + { "time": 0.4333, "angle": 10.5 }, + { "time": 0.5333, "angle": 24.81 }, + { "time": 0.6, "angle": 32.21 }, + { "time": 0.7, "angle": 24.4 }, + { + "time": 0.7666, + "angle": 9.9, + "curve": [ 0.243, 0, 0.648, 1 ] + }, + { + "time": 0.9666, + "angle": -41.66, + "curve": [ 0.382, 0.57, 0.735, 1 ] + }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "tongue1": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "back_bracer": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "front_arm_target": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "front_bracer": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "front_foot3": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 0.3, "angle": 0 }, + { "time": 0.3666, "angle": -84.17 }, + { "time": 0.4333, "angle": -127.53 }, + { "time": 0.5333, "angle": -52.16 }, + { "time": 0.6666, "angle": 10.77 }, + { "time": 0.7666, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.6666, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.6666, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "head2": { + "rotate": [ + { "time": 0, "angle": 15.31 }, + { "time": 0.1, "angle": 29.85 }, + { "time": 0.2, "angle": 22.43 }, + { "time": 0.3, "angle": 12.64 }, + { "time": 0.4666, "angle": 24.85 }, + { "time": 0.5333, "angle": 9.28 }, + { "time": 0.7, "angle": 4.77 }, + { "time": 0.7666, "angle": 37.9 }, + { + "time": 0.8333, + "angle": 18.87, + "curve": [ 0.056, 0.81, 0.75, 1 ] + }, + { "time": 1, "angle": 22.96 }, + { "time": 1.0666, "angle": 15.31 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "rear_arm_target": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "tongue2": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "back_hand": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "front_hand2": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + }, + "tongue3": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } + ] + } + } + }, "empty": {}, "gungrab": { "slots": { @@ -439,13 +1728,7 @@ }, "ik": { "front_arm_goal": [ - { - "time": 0, - "mix": 1, - "bendPositive": true, - "curve": [ 0.317, 0.13, 0.781, 0.56 ] - }, - { "time": 0.1333, "mix": 0, "bendPositive": true } + { "time": 0, "mix": 0, "bendPositive": true } ] } }, @@ -552,9 +1835,6 @@ "front_leg1": { "rotate": [ { "time": 0, "angle": 27.07 }, - { "time": 0.5333, "angle": -41.93 }, - { "time": 0.6333, "angle": -16.71 }, - { "time": 0.7333, "angle": 16.92 }, { "time": 1.0666, "angle": 31.39 } ], "translate": [ @@ -583,9 +1863,6 @@ "rear_leg1": { "rotate": [ { "time": 0, "angle": -64.85 }, - { "time": 0.1, "angle": -45.79 }, - { "time": 0.1666, "angle": -19.95 }, - { "time": 0.4, "angle": 35.36 }, { "time": 1.0666, "angle": -45.71 } ], "translate": [ @@ -639,9 +1916,6 @@ "front_leg2": { "rotate": [ { "time": 0, "angle": -347.28 }, - { "time": 0.5333, "angle": -346.78 }, - { "time": 0.6333, "angle": -398.52 }, - { "time": 0.7333, "angle": -393.21 }, { "time": 1.0666, "angle": -362.06 } ], "translate": [ @@ -652,11 +1926,6 @@ "rear_leg2": { "rotate": [ { "time": 0, "angle": 27.05 }, - { "time": 0.0666, "angle": -14.99 }, - { "time": 0.1, "angle": -28.87 }, - { "time": 0.1666, "angle": -49.87 }, - { "time": 0.4, "angle": -14.45 }, - { "time": 0.4666, "angle": 11.42 }, { "time": 1.0666, "angle": 9.92 } ], "translate": [ @@ -705,25 +1974,22 @@ }, "tail2": { "rotate": [ - { "time": 0, "angle": -6.57 }, - { "time": 0.0666, "angle": -1.96 }, - { "time": 0.3333, "angle": -18.09 }, - { "time": 0.6333, "angle": -1.96 }, - { "time": 0.9, "angle": -18.09 }, - { "time": 1.0666, "angle": -6.57 } + { "time": 0, "angle": -19.15 }, + { "time": 0.2333, "angle": -11.3 }, + { "time": 0.5, "angle": -9.37 }, + { "time": 0.7666, "angle": -11.3 }, + { "time": 1.0333, "angle": -20.27 }, + { "time": 1.0666, "angle": -19.15 } ], "translate": [ { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.0666, "x": 0, "y": 0, "curve": "stepped" }, { "time": 1.0666, "x": 0, "y": 0 } ], "scale": [ - { "time": 0, "x": 1.024, "y": 1 }, - { "time": 0.0666, "x": 1.072, "y": 1 }, - { "time": 0.3333, "x": 0.947, "y": 1 }, - { "time": 0.6333, "x": 1.072, "y": 1 }, - { "time": 0.9, "x": 0.903, "y": 1 }, - { "time": 1.0666, "x": 1.024, "y": 1 } + { "time": 0, "x": 0.8, "y": 1 }, + { "time": 0.2333, "x": 0.9, "y": 1 }, + { "time": 0.5, "x": 0.8, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 0.8, "y": 1 } ] }, "torso2": { @@ -841,23 +2107,22 @@ }, "tail3": { "rotate": [ - { "time": 0, "angle": -14.83 }, - { "time": 0.0666, "angle": -24.31 }, - { "time": 0.3333, "angle": 8.86 }, - { "time": 0.6333, "angle": -24.31 }, - { "time": 0.9, "angle": 8.86 }, - { "time": 1.0666, "angle": -14.83 } + { "time": 0, "angle": -12.46 }, + { "time": 0.2333, "angle": 12.65 }, + { "time": 0.5, "angle": -20.79 }, + { "time": 0.7666, "angle": 12.65 }, + { "time": 1.0333, "angle": -16.04 }, + { "time": 1.0666, "angle": -12.46 } ], "translate": [ { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.0666, "x": 0, "y": 0, "curve": "stepped" }, { "time": 1.0666, "x": 0, "y": 0 } ], "scale": [ - { "time": 0, "x": 0.995, "y": 1 }, - { "time": 0.0666, "x": 1, "y": 1 }, - { "time": 0.3333, "x": 0.947, "y": 1 }, - { "time": 1.0666, "x": 0.995, "y": 1 } + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.2333, "x": 1, "y": 1 }, + { "time": 0.5, "x": 0.997, "y": 1 }, + { "time": 1.0666, "x": 1, "y": 1 } ] }, "front_arm2": { @@ -969,23 +2234,30 @@ }, "tail4": { "rotate": [ - { "time": 0, "angle": 16.99 }, - { "time": 0.0666, "angle": 7.36 }, - { "time": 0.3333, "angle": 41.06 }, - { "time": 0.6333, "angle": 7.36 }, - { "time": 0.9, "angle": 41.06 }, - { "time": 1.0666, "angle": 16.99 } + { "time": 0, "angle": 10.25 }, + { + "time": 0.2333, + "angle": 39.47, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 0.5, "angle": 1.33 }, + { + "time": 0.7666, + "angle": 39.47, + "curve": [ 0.664, 0, 0.75, 1 ] + }, + { "time": 1.0333, "angle": 6.08 }, + { "time": 1.0666, "angle": 10.25 } ], "translate": [ { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.0666, "x": 0, "y": 0, "curve": "stepped" }, { "time": 1.0666, "x": 0, "y": 0 } ], "scale": [ - { "time": 0, "x": 0.995, "y": 1 }, - { "time": 0.0666, "x": 1, "y": 1 }, - { "time": 0.3333, "x": 0.947, "y": 1 }, - { "time": 1.0666, "x": 0.995, "y": 1 } + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.2333, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.5, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 } ] }, "front_foot2": { @@ -1098,23 +2370,39 @@ }, "tail5": { "rotate": [ - { "time": 0, "angle": -15.7 }, - { "time": 0.0666, "angle": -38.39 }, - { "time": 0.3333, "angle": 41.03 }, - { "time": 0.6333, "angle": -38.39 }, - { "time": 0.9, "angle": 41.03 }, - { "time": 1.0666, "angle": -15.7 } + { + "time": 0, + "angle": -26.34, + "curve": [ 0.391, -0.58, 0.653, 1.01 ] + }, + { + "time": 0.2333, + "angle": 45.41, + "curve": [ 0.391, -0.58, 0.653, 1.01 ] + }, + { + "time": 0.5, + "angle": -21.92, + "curve": [ 0.391, -0.58, 0.653, 1.01 ] + }, + { + "time": 0.7666, + "angle": 45.41, + "curve": [ 0.391, -0.58, 0.653, 1.01 ] + }, + { "time": 1.0333, "angle": -7.73 }, + { "time": 1.0666, "angle": -26.34 } ], "translate": [ { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.0666, "x": 0, "y": 0, "curve": "stepped" }, { "time": 1.0666, "x": 0, "y": 0 } ], "scale": [ - { "time": 0, "x": 0.995, "y": 1 }, - { "time": 0.0666, "x": 1, "y": 1 }, - { "time": 0.3333, "x": 0.947, "y": 1 }, - { "time": 1.0666, "x": 0.995, "y": 1 } + { "time": 0, "x": 0.765, "y": 1 }, + { "time": 0.2333, "x": 1, "y": 1 }, + { "time": 0.5, "x": 0.765, "y": 1 }, + { "time": 0.7666, "x": 1, "y": 1 }, + { "time": 1.0666, "x": 0.765, "y": 1 } ] }, "tongue1": { @@ -1290,14 +2578,14 @@ { "time": 0 }, { "time": 0.2666, - "offset": 368, - "vertices": [ -16.78, 15.47, -0.63, 22.82, 18.11, 13.89, 19.32, 12.15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3.24, 0.81, -3.24, 0.81, -3.24, 0.81, -3.24, 0.81, -3.24, 0.81, -3.24, 0.81, 0, 0, 0, 0, 0, 0, -3.24, 0.81, 0, 0, -3.24, 0.81 ] + "offset": 452, + "vertices": [ -16.78684, 15.47479, -0.63024, 22.82083, 18.11511, 13.89254, 19.32452, 12.15423, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3.24548, 0.81152, -3.24548, 0.81152, -3.24548, 0.81152, -3.24548, 0.81152, -3.24548, 0.81152, -3.24548, 0.81152, 0, 0, 0, 0, 0, 0, -3.24548, 0.81152, 0, 0, -3.24548, 0.81152 ] }, { "time": 0.5333 }, { "time": 0.8, - "offset": 368, - "vertices": [ -16.78, 15.47, -0.63, 22.82, 18.11, 13.89, 19.32, 12.15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3.24, 0.81, -3.24, 0.81, -3.24, 0.81, -3.24, 0.81, -3.24, 0.81, -3.24, 0.81, 0, 0, 0, 0, 0, 0, -3.24, 0.81, 0, 0, -3.24, 0.81 ] + "offset": 452, + "vertices": [ -16.78684, 15.47479, -0.63024, 22.82083, 18.11511, 13.89254, 19.32452, 12.15423, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3.24548, 0.81152, -3.24548, 0.81152, -3.24548, 0.81152, -3.24548, 0.81152, -3.24548, 0.81152, -3.24548, 0.81152, 0, 0, 0, 0, 0, 0, -3.24548, 0.81152, 0, 0, -3.24548, 0.81152 ] }, { "time": 1.0666 } ] @@ -1308,18 +2596,18 @@ { "time": 0.2666 }, { "time": 0.5333, - "offset": 216, - "vertices": [ -2.23, 21.95, 21.54, -4.75 ] + "offset": 206, + "vertices": [ -2.23608, 21.95403, -21.04628, 6.63481, 21.54915, -4.7554 ] }, { "time": 0.6, - "offset": 216, - "vertices": [ 7.17, 15.14, 15.26, -6.91 ] + "offset": 206, + "vertices": [ 7.17962, 15.14358, -16.74015, -0.80053, 15.26523, -6.91741 ] }, { "time": 0.7333, - "offset": 176, - "vertices": [ -0.82, 0.73, -0.01, -1.1, -0.27, 1.06, -1.28, 0.39, 0, 0, 0, 0, 0, 0, 1.48, -2.59, 0.98, 2.82, 2.73, -10.49, 6.12, 8.95, -3.72, -10.18, -2.6, -2.28, 3.43, -0.47, -3.44, -0.39, -2.28, -4.76, 5.08, 1.4, -4.58, -2.61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.37, -1.75, 2.22, 0.1, -1.86, -0.75, -2.86, -0.77, 2.45, -1.65 ] + "offset": 160, + "vertices": [ -0.82485, 0.73406, -0.01284, -1.10443, -0.27497, 1.06005, -1.28054, 0.39633, 0, 0, 0, 0, 0, 0, 0, 0, 1.4866, -2.59426, 0.98071, 2.82342, -0.10126, -2.98623, 2.95008, -2.11668, 2.7366, -10.49935, 6.12506, 8.95282, -2.88093, -10.35023, -2.60873, -2.28384, 3.43417, -0.47045, -2.28305, -4.76037, 5.08892, 1.40078, -4.58522, -2.61465, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.37966, -1.75515, -2.13229, -0.65667, -2.86239, -0.77365, 2.45989, -1.65319, -2.51593, 0.86412 ] }, { "time": 0.8, "curve": "stepped" }, { "time": 0.9666, "curve": "stepped" }, diff --git a/spine-xna/example/data/raptor.skel b/spine-xna/example/data/raptor.skel index 507d86e2e9ae3c329c49f2bc913cf1666980cc98..8ecd731ae0cf63254cfc6bb68342c9177c05a8ef 100644 GIT binary patch delta 19614 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 delta 18805 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 faN(LR*q96W?Z - - {DF7AAFE1-401E-4278-8F9A-3DD2B8CC3D0A} - spine-csharp_xna + + {94144e22-2431-4a8f-ac04-dec22f7edd8f} + spine-csharp {7F8F2327-C016-49C8-BB4D-F3F77971961E} diff --git a/spine-xna/spine-xna.csproj b/spine-xna/spine-xna.csproj index ec8d768f5..ffa6a1b5e 100644 --- a/spine-xna/spine-xna.csproj +++ b/spine-xna/spine-xna.csproj @@ -138,13 +138,13 @@ - - {DF7AAFE1-401E-4278-8F9A-3DD2B8CC3D0A} - spine-csharp_xna - + - + + {94144e22-2431-4a8f-ac04-dec22f7edd8f} + spine-csharp + diff --git a/spine-xna/spine-xna.sln b/spine-xna/spine-xna.sln index 43a458818..cb276782a 100644 --- a/spine-xna/spine-xna.sln +++ b/spine-xna/spine-xna.sln @@ -1,30 +1,55 @@  -Microsoft Visual Studio Solution File, Format Version 11.00 -# Visual C# Express 2010 +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Express 2012 for Windows Desktop Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "spine-xna", "spine-xna.csproj", "{7F8F2327-C016-49C8-BB4D-F3F77971961E}" + ProjectSection(ProjectDependencies) = postProject + {94144E22-2431-4A8F-AC04-DEC22F7EDD8F} = {94144E22-2431-4A8F-AC04-DEC22F7EDD8F} + EndProjectSection EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "spine-xna-example", "example\spine-xna-example.csproj", "{29CC4385-294A-4885-A3E8-FD4825E0CFDD}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "spine-csharp_xna", "..\spine-csharp\spine-csharp_xna.csproj", "{DF7AAFE1-401E-4278-8F9A-3DD2B8CC3D0A}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "spine-csharp", "..\spine-csharp\spine-csharp.csproj", "{94144E22-2431-4A8F-AC04-DEC22F7EDD8F}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Debug|Mixed Platforms = Debug|Mixed Platforms Debug|x86 = Debug|x86 + Release|Any CPU = Release|Any CPU + Release|Mixed Platforms = Release|Mixed Platforms Release|x86 = Release|x86 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution + {7F8F2327-C016-49C8-BB4D-F3F77971961E}.Debug|Any CPU.ActiveCfg = Debug|x86 + {7F8F2327-C016-49C8-BB4D-F3F77971961E}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 + {7F8F2327-C016-49C8-BB4D-F3F77971961E}.Debug|Mixed Platforms.Build.0 = Debug|x86 {7F8F2327-C016-49C8-BB4D-F3F77971961E}.Debug|x86.ActiveCfg = Debug|x86 {7F8F2327-C016-49C8-BB4D-F3F77971961E}.Debug|x86.Build.0 = Debug|x86 + {7F8F2327-C016-49C8-BB4D-F3F77971961E}.Release|Any CPU.ActiveCfg = Release|x86 + {7F8F2327-C016-49C8-BB4D-F3F77971961E}.Release|Mixed Platforms.ActiveCfg = Release|x86 + {7F8F2327-C016-49C8-BB4D-F3F77971961E}.Release|Mixed Platforms.Build.0 = Release|x86 {7F8F2327-C016-49C8-BB4D-F3F77971961E}.Release|x86.ActiveCfg = Release|x86 {7F8F2327-C016-49C8-BB4D-F3F77971961E}.Release|x86.Build.0 = Release|x86 + {29CC4385-294A-4885-A3E8-FD4825E0CFDD}.Debug|Any CPU.ActiveCfg = Debug|x86 + {29CC4385-294A-4885-A3E8-FD4825E0CFDD}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 + {29CC4385-294A-4885-A3E8-FD4825E0CFDD}.Debug|Mixed Platforms.Build.0 = Debug|x86 {29CC4385-294A-4885-A3E8-FD4825E0CFDD}.Debug|x86.ActiveCfg = Debug|x86 {29CC4385-294A-4885-A3E8-FD4825E0CFDD}.Debug|x86.Build.0 = Debug|x86 + {29CC4385-294A-4885-A3E8-FD4825E0CFDD}.Release|Any CPU.ActiveCfg = Release|x86 + {29CC4385-294A-4885-A3E8-FD4825E0CFDD}.Release|Mixed Platforms.ActiveCfg = Release|x86 + {29CC4385-294A-4885-A3E8-FD4825E0CFDD}.Release|Mixed Platforms.Build.0 = Release|x86 {29CC4385-294A-4885-A3E8-FD4825E0CFDD}.Release|x86.ActiveCfg = Release|x86 {29CC4385-294A-4885-A3E8-FD4825E0CFDD}.Release|x86.Build.0 = Release|x86 - {DF7AAFE1-401E-4278-8F9A-3DD2B8CC3D0A}.Debug|x86.ActiveCfg = Debug|x86 - {DF7AAFE1-401E-4278-8F9A-3DD2B8CC3D0A}.Debug|x86.Build.0 = Debug|x86 - {DF7AAFE1-401E-4278-8F9A-3DD2B8CC3D0A}.Release|x86.ActiveCfg = Release|x86 - {DF7AAFE1-401E-4278-8F9A-3DD2B8CC3D0A}.Release|x86.Build.0 = Release|x86 + {94144E22-2431-4A8F-AC04-DEC22F7EDD8F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {94144E22-2431-4A8F-AC04-DEC22F7EDD8F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {94144E22-2431-4A8F-AC04-DEC22F7EDD8F}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {94144E22-2431-4A8F-AC04-DEC22F7EDD8F}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {94144E22-2431-4A8F-AC04-DEC22F7EDD8F}.Debug|x86.ActiveCfg = Debug|Any CPU + {94144E22-2431-4A8F-AC04-DEC22F7EDD8F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {94144E22-2431-4A8F-AC04-DEC22F7EDD8F}.Release|Any CPU.Build.0 = Release|Any CPU + {94144E22-2431-4A8F-AC04-DEC22F7EDD8F}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {94144E22-2431-4A8F-AC04-DEC22F7EDD8F}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {94144E22-2431-4A8F-AC04-DEC22F7EDD8F}.Release|x86.ActiveCfg = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/spine-xna/src/SkeletonMeshRenderer.cs b/spine-xna/src/SkeletonMeshRenderer.cs index 6d2047824..1b270ed6d 100644 --- a/spine-xna/src/SkeletonMeshRenderer.cs +++ b/spine-xna/src/SkeletonMeshRenderer.cs @@ -189,8 +189,8 @@ namespace Spine { itemVertices[ii].TextureCoordinate.X = uvs[v]; itemVertices[ii].TextureCoordinate.Y = uvs[v + 1]; } - } else if (attachment is SkinnedMeshAttachment) { - SkinnedMeshAttachment mesh = (SkinnedMeshAttachment)attachment; + } else if (attachment is WeightedMeshAttachment) { + WeightedMeshAttachment mesh = (WeightedMeshAttachment)attachment; int vertexCount = mesh.UVs.Length; if (vertices.Length < vertexCount) vertices = new float[vertexCount]; mesh.ComputeWorldVertices(slot, vertices);