diff --git a/.gitignore b/.gitignore index 1d65a51c3..13d206e55 100644 --- a/.gitignore +++ b/.gitignore @@ -24,9 +24,9 @@ spine-sfml/Debug/* spine-sfml/SFML spine-sfml/dependencies -spine-libgdx/spine-libgdx/bin/* -spine-libgdx/spine-libgdx-tests/bin/* -spine-libgdx/spine-skeletonviewer/bin/* +spine-libgdx/spine-libgdx/bin +spine-libgdx/spine-libgdx-tests/bin +spine-libgdx/spine-skeletonviewer/bin spine-cocos2dx/dependencies spine-cocos2dx/example/cocos2dx.zip @@ -35,8 +35,8 @@ spine-cocos2dx/example/cocos2d spine-cocos2dx/example/proj.win32/spine-cocos2d-x.VC.opendb xcuserdata/ -spine-cocos2d-iphone/cocos2d/* -spine-cocos2d-iphone/spine-cocos2d-iphone-ios.xcodeproj/project.xcworkspace/xcshareddata/ +spine-cocos2d-objc/cocos2d/* +spine-cocos2d-objc/spine-cocos2d-iphone-objc.xcodeproj/project.xcworkspace/xcshareddata/ spine-csharp/bin spine-csharp/obj diff --git a/spine-c/README.md b/spine-c/README.md index c1bcbfb1a..1ee858b03 100644 --- a/spine-c/README.md +++ b/spine-c/README.md @@ -12,7 +12,7 @@ The Spine Runtimes are developed with the intent to be used with data exported f ## Spine version -spine-c works with data exported from Spine version 3.2.01. +spine-c works with data exported from Spine version 3.3.07. spine-c supports all Spine features. @@ -48,4 +48,3 @@ spine-c uses an OOP style of programming where each "class" is made up of a stru - [spine-cocos2d-iphone](https://github.com/EsotericSoftware/spine-runtimes/blob/master/spine-cocos2d-iphone) - [spine-cocos2dx](https://github.com/EsotericSoftware/spine-runtimes/blob/master/spine-cocos2dx) - [spine-sfml](https://github.com/EsotericSoftware/spine-runtimes/blob/master/spine-sfml) -- [spine-torque2d](https://github.com/EsotericSoftware/spine-runtimes/blob/master/spine-torque2d) diff --git a/spine-c/include/spine/Animation.h b/spine-c/include/spine/Animation.h index d70d8f423..03304728e 100644 --- a/spine-c/include/spine/Animation.h +++ b/spine-c/include/spine/Animation.h @@ -64,13 +64,13 @@ void spAnimation_dispose (spAnimation* self); /** Poses the skeleton at the specified time for this animation. * @param lastTime The last time the animation was applied. - * @param events Any triggered events are added. */ + * @param events Any triggered events are added. May be null.*/ void spAnimation_apply (const spAnimation* self, struct spSkeleton* skeleton, float lastTime, float time, int loop, spEvent** events, int* eventsCount); /** Poses the skeleton at the specified time for this animation mixed with the current pose. * @param lastTime The last time the animation was applied. - * @param events Any triggered events are added. + * @param events Any triggered events are added. May be null. * @param alpha The amount of this animation that affects the current pose. */ void spAnimation_mix (const spAnimation* self, struct spSkeleton* skeleton, float lastTime, float time, int loop, spEvent** events, int* eventsCount, float alpha); @@ -94,9 +94,12 @@ typedef enum { SP_TIMELINE_ATTACHMENT, SP_TIMELINE_EVENT, SP_TIMELINE_DRAWORDER, - SP_TIMELINE_FFD, + SP_TIMELINE_DEFORM, SP_TIMELINE_IKCONSTRAINT, - SP_TIMELINE_TRANSFORMCONSTRAINT + SP_TIMELINE_TRANSFORMCONSTRAINT, + SP_TIMELINE_PATHCONSTRAINTPOSITION, + SP_TIMELINE_PATHCONSTRAINTSPACING, + SP_TIMELINE_PATHCONSTRAINTMIX } spTimelineType; struct spTimeline { @@ -179,6 +182,8 @@ typedef struct spBaseTimeline { /**/ +static const int ROTATE_ENTRIES = 2; + typedef struct spBaseTimeline spRotateTimeline; spRotateTimeline* spRotateTimeline_create (int framesCount); @@ -193,6 +198,8 @@ typedef spRotateTimeline RotateTimeline; /**/ +static const int TRANSLATE_ENTRIES = 3; + typedef struct spBaseTimeline spTranslateTimeline; spTranslateTimeline* spTranslateTimeline_create (int framesCount); @@ -235,6 +242,8 @@ typedef spShearTimeline ShearTimeline; /**/ +static const int COLOR_ENTRIES = 5; + typedef struct spColorTimeline { spCurveTimeline super; int const framesCount; @@ -352,7 +361,7 @@ typedef spDrawOrderTimeline DrawOrderTimeline; /**/ -typedef struct spFFDTimeline { +typedef struct spDeformTimeline { spCurveTimeline super; int const framesCount; float* const frames; /* time, ... */ @@ -362,7 +371,7 @@ typedef struct spFFDTimeline { spAttachment* attachment; #ifdef __cplusplus - spFFDTimeline() : + spDeformTimeline() : super(), framesCount(0), frames(0), @@ -371,20 +380,22 @@ typedef struct spFFDTimeline { slotIndex(0) { } #endif -} spFFDTimeline; +} spDeformTimeline; -spFFDTimeline* spFFDTimeline_create (int framesCount, int frameVerticesCount); +spDeformTimeline* spDeformTimeline_create (int framesCount, int frameVerticesCount); -void spFFDTimeline_setFrame (spFFDTimeline* self, int frameIndex, float time, float* vertices); +void spDeformTimeline_setFrame (spDeformTimeline* self, int frameIndex, float time, float* vertices); #ifdef SPINE_SHORT_NAMES -typedef spFFDTimeline FFDTimeline; -#define FFDTimeline_create(...) spFFDTimeline_create(__VA_ARGS__) -#define FFDTimeline_setFrame(...) spFFDTimeline_setFrame(__VA_ARGS__) +typedef spDeformTimeline DeformTimeline; +#define DeformTimeline_create(...) spDeformTimeline_create(__VA_ARGS__) +#define DeformTimeline_setFrame(...) spDeformTimeline_setFrame(__VA_ARGS__) #endif /**/ +static const int IKCONSTRAINT_ENTRIES = 3; + typedef struct spIkConstraintTimeline { spCurveTimeline super; int const framesCount; @@ -413,10 +424,12 @@ typedef spIkConstraintTimeline IkConstraintTimeline; /**/ +static const int TRANSFORMCONSTRAINT_ENTRIES = 5; + typedef struct spTransformConstraintTimeline { spCurveTimeline super; int const framesCount; - float* const frames; /* time, mix, bendDirection, ... */ + float* const frames; /* time, rotate mix, translate mix, scale mix, shear mix, ... */ int transformConstraintIndex; #ifdef __cplusplus @@ -441,6 +454,96 @@ typedef spTransformConstraintTimeline TransformConstraintTimeline; /**/ +static const int PATHCONSTRAINTPOSITION_ENTRIES = 2; + +typedef struct spPathConstraintPositionTimeline { + spCurveTimeline super; + int const framesCount; + float* const frames; /* time, rotate mix, translate mix, scale mix, shear mix, ... */ + int pathConstraintIndex; + +#ifdef __cplusplus + spPathConstraintPositionTimeline() : + super(), + framesCount(0), + frames(0), + pathConstraintIndex(0) { + } +#endif +} spPathConstraintPositionTimeline; + +spPathConstraintPositionTimeline* spPathConstraintPositionTimeline_create (int framesCount); + +void spPathConstraintPositionTimeline_setFrame (spPathConstraintPositionTimeline* self, int frameIndex, float time, float value); + +#ifdef SPINE_SHORT_NAMES +typedef spPathConstraintPositionTimeline PathConstraintPositionTimeline; +#define PathConstraintPositionTimeline_create(...) spPathConstraintPositionTimeline_create(__VA_ARGS__) +#define PathConstraintPositionTimeline_setFrame(...) spPathConstraintPositionTimeline_setFrame(__VA_ARGS__) +#endif + +/**/ + +static const int PATHCONSTRAINTSPACING_ENTRIES = 2; + +typedef struct spPathConstraintSpacingTimeline { + spCurveTimeline super; + int const framesCount; + float* const frames; /* time, rotate mix, translate mix, scale mix, shear mix, ... */ + int pathConstraintIndex; + +#ifdef __cplusplus + spPathConstraintSpacingTimeline() : + super(), + framesCount(0), + frames(0), + pathConstraintIndex(0) { + } +#endif +} spPathConstraintSpacingTimeline; + +spPathConstraintSpacingTimeline* spPathConstraintSpacingTimeline_create (int framesCount); + +void spPathConstraintSpacingTimeline_setFrame (spPathConstraintSpacingTimeline* self, int frameIndex, float time, float value); + +#ifdef SPINE_SHORT_NAMES +typedef spPathConstraintSpacingTimeline PathConstraintSpacingTimeline; +#define PathConstraintSpacingTimeline_create(...) spPathConstraintSpacingTimeline_create(__VA_ARGS__) +#define PathConstraintSpacingTimeline_setFrame(...) spPathConstraintSpacingTimeline_setFrame(__VA_ARGS__) +#endif + +/**/ + +static const int PATHCONSTRAINTMIX_ENTRIES = 3; + +typedef struct spPathConstraintMixTimeline { + spCurveTimeline super; + int const framesCount; + float* const frames; /* time, rotate mix, translate mix, scale mix, shear mix, ... */ + int pathConstraintIndex; + +#ifdef __cplusplus + spPathConstraintMixTimeline() : + super(), + framesCount(0), + frames(0), + pathConstraintIndex(0) { + } +#endif +} spPathConstraintMixTimeline; + +spPathConstraintMixTimeline* spPathConstraintMixTimeline_create (int framesCount); + +void spPathConstraintMixTimeline_setFrame (spPathConstraintMixTimeline* self, int frameIndex, float time, float rotateMix, float translateMix); + +#ifdef SPINE_SHORT_NAMES +typedef spPathConstraintMixTimeline PathConstraintMixTimeline; +#define PathConstraintMixTimeline_create(...) spPathConstraintMixTimeline_create(__VA_ARGS__) +#define PathConstraintMixTimeline_setFrame(...) spPathConstraintMixTimeline_setFrame(__VA_ARGS__) +#endif + +/**/ + #ifdef __cplusplus } #endif diff --git a/spine-c/include/spine/Attachment.h b/spine-c/include/spine/Attachment.h index ca8b889b4..84e9dc0fb 100644 --- a/spine-c/include/spine/Attachment.h +++ b/spine-c/include/spine/Attachment.h @@ -42,9 +42,8 @@ typedef enum { SP_ATTACHMENT_REGION, SP_ATTACHMENT_BOUNDING_BOX, SP_ATTACHMENT_MESH, - SP_ATTACHMENT_WEIGHTED_MESH, SP_ATTACHMENT_LINKED_MESH, - SP_ATTACHMENT_WEIGHTED_LINKED_MESH + SP_ATTACHMENT_PATH } spAttachmentType; typedef struct spAttachment { @@ -69,9 +68,7 @@ typedef spAttachmentType AttachmentType; #define ATTACHMENT_REGION SP_ATTACHMENT_REGION #define ATTACHMENT_BOUNDING_BOX SP_ATTACHMENT_BOUNDING_BOX #define ATTACHMENT_MESH SP_ATTACHMENT_MESH -#define ATTACHMENT_WEIGHTED_MESH SP_ATTACHMENT_WEIGHTED_MESH #define ATTACHMENT_LINKED_MESH SP_ATTACHMENT_LINKED_MESH -#define ATTACHMENT_WEIGHTED_LINKED_MESH SP_ATTACHMENT_WEIGHTED_LINKED_MESH typedef spAttachment Attachment; #define Attachment_dispose(...) spAttachment_dispose(__VA_ARGS__) #endif diff --git a/spine-c/include/spine/Bone.h b/spine-c/include/spine/Bone.h index 1dbc9df0a..5ab5ffcfc 100644 --- a/spine-c/include/spine/Bone.h +++ b/spine-c/include/spine/Bone.h @@ -45,24 +45,31 @@ struct spBone { spBoneData* const data; struct spSkeleton* const skeleton; spBone* const parent; + int childrenCount; + spBone** const children; float x, y, rotation, scaleX, scaleY, shearX, shearY; - float appliedRotation, appliedScaleX, appliedScaleY; + float appliedRotation; float const a, b, worldX; float const c, d, worldY; float const worldSignX, worldSignY; + int/*bool*/ sorted; + #ifdef __cplusplus spBone() : data(0), skeleton(0), parent(0), + childrenCount(0), children(0), x(0), y(0), rotation(0), scaleX(0), scaleY(0), - appliedRotation(0), appliedScaleX(0), appliedScaleY(0), + appliedRotation(0), a(0), b(0), worldX(0), c(0), d(0), worldY(0), - worldSignX(0), worldSignY(0) { + worldSignX(0), worldSignY(0), + + sorted(0) { } #endif }; @@ -84,6 +91,11 @@ float spBone_getWorldRotationY (spBone* self); float spBone_getWorldScaleX (spBone* self); float spBone_getWorldScaleY (spBone* self); +float spBone_worldToLocalRotationX (spBone* self); +float spBone_worldToLocalRotationY (spBone* self); +void spBone_rotateWorld (spBone* self, float degrees); +void spBone_updateLocalTransform (spBone* self); + void spBone_worldToLocal (spBone* self, float worldX, float worldY, float* localX, float* localY); void spBone_localToWorld (spBone* self, float localX, float localY, float* worldX, float* worldY); @@ -100,6 +112,10 @@ typedef spBone Bone; #define Bone_getWorldRotationY(...) spBone_getWorldRotationY(__VA_ARGS__) #define Bone_getWorldScaleX(...) spBone_getWorldScaleX(__VA_ARGS__) #define Bone_getWorldScaleY(...) spBone_getWorldScaleY(__VA_ARGS__) +#define Bone_worldToLocalRotationX(...) spBone_worldToLocalRotationX(__VA_ARGS__) +#define Bone_worldToLocalRotationY(...) spBone_worldToLocalRotationY(__VA_ARGS__) +#define Bone_rotateWorld(...) spBone_rotateWorld(__VA_ARGS__) +#define Bone_updateLocalTransform(...) spBone_updateLocalTransform(__VA_ARGS__) #define Bone_worldToLocal(...) spBone_worldToLocal(__VA_ARGS__) #define Bone_localToWorld(...) spBone_localToWorld(__VA_ARGS__) #endif diff --git a/spine-c/include/spine/BoneData.h b/spine-c/include/spine/BoneData.h index ddf0d157a..9a2451853 100644 --- a/spine-c/include/spine/BoneData.h +++ b/spine-c/include/spine/BoneData.h @@ -38,26 +38,29 @@ extern "C" { typedef struct spBoneData spBoneData; struct spBoneData { + const int index; const char* const name; spBoneData* const parent; float length; float x, y, rotation, scaleX, scaleY, shearX, shearY; - int/*bool*/inheritScale, inheritRotation; + int/*bool*/inheritRotation, inheritScale; #ifdef __cplusplus spBoneData() : + index(0), name(0), parent(0), length(0), x(0), y(0), rotation(0), scaleX(0), scaleY(0), - inheritScale(0), inheritRotation(0) { + shearX(0), shearY(0), + inheritRotation(0), inheritScale(0) { } #endif }; -spBoneData* spBoneData_create (const char* name, spBoneData* parent); +spBoneData* spBoneData_create (int index, const char* name, spBoneData* parent); void spBoneData_dispose (spBoneData* self); #ifdef SPINE_SHORT_NAMES diff --git a/spine-c/include/spine/BoundingBoxAttachment.h b/spine-c/include/spine/BoundingBoxAttachment.h index f8428188c..785d96770 100644 --- a/spine-c/include/spine/BoundingBoxAttachment.h +++ b/spine-c/include/spine/BoundingBoxAttachment.h @@ -33,6 +33,7 @@ #define SPINE_BOUNDINGBOXATTACHMENT_H_ #include +#include #include #include @@ -41,13 +42,11 @@ extern "C" { #endif typedef struct spBoundingBoxAttachment { - spAttachment super; - int verticesCount; - float* vertices; + spVertexAttachment super; } spBoundingBoxAttachment; spBoundingBoxAttachment* spBoundingBoxAttachment_create (const char* name); -void spBoundingBoxAttachment_computeWorldVertices (spBoundingBoxAttachment* self, spBone* bone, float* vertices); +void spBoundingBoxAttachment_computeWorldVertices (spBoundingBoxAttachment* self, spSlot* slot, float* worldVertices); #ifdef SPINE_SHORT_NAMES typedef spBoundingBoxAttachment BoundingBoxAttachment; diff --git a/spine-c/include/spine/IkConstraint.h b/spine-c/include/spine/IkConstraint.h index f30cad388..2ca3b951d 100644 --- a/spine-c/include/spine/IkConstraint.h +++ b/spine-c/include/spine/IkConstraint.h @@ -51,6 +51,8 @@ typedef struct spIkConstraint { int bendDirection; float mix; + int level; + #ifdef __cplusplus spIkConstraint() : data(0), @@ -58,7 +60,8 @@ typedef struct spIkConstraint { bones(0), target(0), bendDirection(0), - mix(0) { + mix(0), + level(0) { } #endif } spIkConstraint; diff --git a/spine-c/include/spine/MeshAttachment.h b/spine-c/include/spine/MeshAttachment.h index d50b45ad0..d232a9680 100644 --- a/spine-c/include/spine/MeshAttachment.h +++ b/spine-c/include/spine/MeshAttachment.h @@ -33,6 +33,7 @@ #define SPINE_MESHATTACHMENT_H_ #include +#include #include #include @@ -42,23 +43,7 @@ extern "C" { typedef struct spMeshAttachment spMeshAttachment; struct spMeshAttachment { - spAttachment super; - const char* path; - - int verticesCount; - float* vertices; - int hullLength; - - float* regionUVs; - float* uvs; - - int trianglesCount; - unsigned short* triangles; - - spMeshAttachment* const parentMesh; - int/*bool*/inheritFFD; - - float r, g, b, a; + spVertexAttachment super; void* rendererObject; int regionOffsetX, regionOffsetY; /* Pixels stripped from the bottom left, unrotated. */ @@ -67,6 +52,21 @@ struct spMeshAttachment { float regionU, regionV, regionU2, regionV2; int/*bool*/regionRotate; + const char* path; + + float* regionUVs; + float* uvs; + + int trianglesCount; + unsigned short* triangles; + + float r, g, b, a; + + int hullLength; + + spMeshAttachment* const parentMesh; + int/*bool*/inheritDeform; + /* Nonessential. */ int edgesCount; int* edges; diff --git a/spine-c/include/spine/PathAttachment.h b/spine-c/include/spine/PathAttachment.h new file mode 100644 index 000000000..ca17f3ad8 --- /dev/null +++ b/spine-c/include/spine/PathAttachment.h @@ -0,0 +1,65 @@ +/****************************************************************************** + * 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. + *****************************************************************************/ + +#ifndef SPINE_PATHATTACHMENT_H_ +#define SPINE_PATHATTACHMENT_H_ + +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct spPathAttachment { + spVertexAttachment super; + int lengthsLength; + float* lengths; + int/*bool*/ closed, constantSpeed; +} spPathAttachment; + +spPathAttachment* spPathAttachment_create (const char* name); +void spPathAttachment_computeWorldVertices (spPathAttachment* self, spSlot* slot, float* worldVertices); +void spPathAttachment_computeWorldVertices1 (spPathAttachment* self, spSlot* slot, int start, int count, float* worldVertices, int offset); + +#ifdef SPINE_SHORT_NAMES +typedef spPathAttachment PathAttachment; +#define PathAttachment_create(...) spPathAttachment_create(__VA_ARGS__) +#define PathAttachment_computeWorldVertices(...) spPathAttachment_computeWorldVertices(__VA_ARGS__) +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* SPINE_PATHATTACHMENT_H_ */ diff --git a/spine-c/include/spine/PathConstraint.h b/spine-c/include/spine/PathConstraint.h new file mode 100644 index 000000000..a95679705 --- /dev/null +++ b/spine-c/include/spine/PathConstraint.h @@ -0,0 +1,113 @@ +/****************************************************************************** + * 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. + *****************************************************************************/ + +#ifndef SPINE_PATHCONSTRAINT_H_ +#define SPINE_PATHCONSTRAINT_H_ + +#include +#include +#include +#include "PathAttachment.h" + +#ifdef __cplusplus +extern "C" { +#endif + +struct spSkeleton; + +typedef struct spPathConstraint { + spPathConstraintData* const data; + int bonesCount; + spBone** const bones; + spSlot* target; + float position, spacing, rotateMix, translateMix; + + int spacesCount; + float* spaces; + + int positionsCount; + float* positions; + + int worldCount; + float* world; + + int curvesCount; + float* curves; + + int lengthsCount; + float* lengths; + + float segments[10]; + +#ifdef __cplusplus + spPathConstraint() : + data(0), + bonesCount(0), + bones(0), + target(0), + position(0), + spacing(0), + rotateMix(0), + translateMix(0), + spacesCount(0), + spaces(0), + positionsCount(0), + positions(0), + worldCount(0), + world(0), + curvesCount(0), + curves(0), + lengthsCount(0), + lengths(0) { + } +#endif +} spPathConstraint; + +#define SP_PATHCONSTRAINT_ + +spPathConstraint* spPathConstraint_create (spPathConstraintData* data, const struct spSkeleton* skeleton); +void spPathConstraint_dispose (spPathConstraint* self); + +void spPathConstraint_apply (spPathConstraint* self); +float* spPathConstraint_computeWorldPositions(spPathConstraint* self, spPathAttachment* path, int spacesCount, int/*bool*/ tangents, int/*bool*/percentPosition, int/**/percentSpacing); + +#ifdef SPINE_SHORT_NAMES +typedef spPathConstraint PathConstraint; +#define PathConstraint_create(...) spPathConstraint_create(__VA_ARGS__) +#define PathConstraint_dispose(...) spPathConstraint_dispose(__VA_ARGS__) +#define PathConstraint_apply(...) spPathConstraint_apply(__VA_ARGS__) +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* SPINE_PATHCONSTRAINT_H_ */ diff --git a/spine-c/include/spine/PathConstraintData.h b/spine-c/include/spine/PathConstraintData.h new file mode 100644 index 000000000..f60819353 --- /dev/null +++ b/spine-c/include/spine/PathConstraintData.h @@ -0,0 +1,96 @@ +/****************************************************************************** + * 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. + *****************************************************************************/ + +#ifndef SPINE_PATHCONSTRAINTDATA_H_ +#define SPINE_PATHCONSTRAINTDATA_H_ + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef enum { + SP_POSITION_MODE_FIXED, SP_POSITION_MODE_PERCENT +} spPositionMode; + +typedef enum { + SP_SPACING_MODE_LENGTH, SP_SPACING_MODE_FIXED, SP_SPACING_MODE_PERCENT +} spSpacingMode; + +typedef enum { + SP_ROTATE_MODE_TANGENT, SP_ROTATE_MODE_CHAIN, SP_ROTATE_MODE_CHAIN_SCALE +} spRotateMode; + +typedef struct spPathConstraintData { + const char* const name; + int bonesCount; + spBoneData** const bones; + spSlotData* target; + spPositionMode positionMode; + spSpacingMode spacingMode; + spRotateMode rotateMode; + float offsetRotation; + float position, spacing, rotateMix, translateMix; + +#ifdef __cplusplus + spPathConstraintData() : + name(0), + bonesCount(0), + bones(0), + target(0), + positionMode(SP_POSITION_MODE_FIXED), + spacingMode(SP_SPACING_MODE_LENGTH), + rotateMode(SP_ROTATE_MODE_TANGENT), + offsetRotation(0), + position(0), + spacing(0), + rotateMix(0), + translateMix(0) { + } +#endif +} spPathConstraintData; + +spPathConstraintData* spPathConstraintData_create (const char* name); +void spPathConstraintData_dispose (spPathConstraintData* self); + +#ifdef SPINE_SHORT_NAMES +typedef spPathConstraintData PathConstraintData; +#define PathConstraintData_create(...) spPathConstraintData_create(__VA_ARGS__) +#define PathConstraintData_dispose(...) spPathConstraintData_dispose(__VA_ARGS__) +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* SPINE_PATHCONSTRAINTDATA_H_ */ diff --git a/spine-c/include/spine/Skeleton.h b/spine-c/include/spine/Skeleton.h index 43a63dc9d..db1afdd33 100644 --- a/spine-c/include/spine/Skeleton.h +++ b/spine-c/include/spine/Skeleton.h @@ -37,6 +37,7 @@ #include #include #include +#include #ifdef __cplusplus extern "C" { @@ -55,10 +56,14 @@ typedef struct spSkeleton { int ikConstraintsCount; spIkConstraint** ikConstraints; + spIkConstraint** ikConstraintsSorted; int transformConstraintsCount; spTransformConstraint** transformConstraints; + int pathConstraintsCount; + spPathConstraint** pathConstraints; + spSkin* const skin; float r, g, b, a; float time; @@ -77,6 +82,7 @@ typedef struct spSkeleton { ikConstraintsCount(0), ikConstraints(0), + ikConstraintsSorted(0), transformConstraintsCount(0), transformConstraints(0), @@ -94,8 +100,9 @@ typedef struct spSkeleton { spSkeleton* spSkeleton_create (spSkeletonData* data); void spSkeleton_dispose (spSkeleton* self); -/* Caches information about bones and constraints. Must be called if bones or constraints are added or removed. */ -void spSkeleton_updateCache (const spSkeleton* self); +/* Caches information about bones and constraints. Must be called if bones or constraints, or weighted path attachments + * are added or removed. */ +void spSkeleton_updateCache (spSkeleton* self); void spSkeleton_updateWorldTransform (const spSkeleton* self); /* Sets the bones, constraints, and slots to their setup pose values. */ @@ -137,6 +144,9 @@ spIkConstraint* spSkeleton_findIkConstraint (const spSkeleton* self, const char* /* Returns 0 if the transform constraint was not found. */ spTransformConstraint* spSkeleton_findTransformConstraint (const spSkeleton* self, const char* constraintName); +/* Returns 0 if the path constraint was not found. */ +spPathConstraint* spSkeleton_findPathConstraint (const spSkeleton* self, const char* constraintName); + void spSkeleton_update (spSkeleton* self, float deltaTime); #ifdef SPINE_SHORT_NAMES diff --git a/spine-c/include/spine/SkeletonData.h b/spine-c/include/spine/SkeletonData.h index e73b75fe0..e9f9361da 100644 --- a/spine-c/include/spine/SkeletonData.h +++ b/spine-c/include/spine/SkeletonData.h @@ -39,6 +39,7 @@ #include #include #include +#include #ifdef __cplusplus extern "C" { @@ -70,6 +71,9 @@ typedef struct spSkeletonData { int transformConstraintsCount; spTransformConstraintData** transformConstraints; + + int pathConstraintsCount; + spPathConstraintData** pathConstraints; } spSkeletonData; spSkeletonData* spSkeletonData_create (); @@ -91,6 +95,8 @@ spIkConstraintData* spSkeletonData_findIkConstraint (const spSkeletonData* self, spTransformConstraintData* spSkeletonData_findTransformConstraint (const spSkeletonData* self, const char* constraintName); +spPathConstraintData* spSkeletonData_findPathConstraint (const spSkeletonData* self, const char* constraintName); + #ifdef SPINE_SHORT_NAMES typedef spSkeletonData SkeletonData; #define SkeletonData_create(...) spSkeletonData_create(__VA_ARGS__) diff --git a/spine-c/include/spine/Skin.h b/spine-c/include/spine/Skin.h index 6458d9038..ff9ac2cc0 100644 --- a/spine-c/include/spine/Skin.h +++ b/spine-c/include/spine/Skin.h @@ -50,6 +50,20 @@ typedef struct spSkin { #endif } spSkin; +/* Private structs, needed by Skeleton */ +typedef struct _Entry _Entry; +struct _Entry { + int slotIndex; + const char* name; + spAttachment* attachment; + _Entry* next; +}; + +typedef struct { + spSkin super; + _Entry* entries; +} _spSkin; + spSkin* spSkin_create (const char* name); void spSkin_dispose (spSkin* self); diff --git a/spine-c/include/spine/SlotData.h b/spine-c/include/spine/SlotData.h index 7a7f7c8a7..2673b9df1 100644 --- a/spine-c/include/spine/SlotData.h +++ b/spine-c/include/spine/SlotData.h @@ -43,6 +43,7 @@ typedef enum { } spBlendMode; typedef struct spSlotData { + const int index; const char* const name; const spBoneData* const boneData; const char* attachmentName; @@ -51,6 +52,7 @@ typedef struct spSlotData { #ifdef __cplusplus spSlotData() : + index(0), name(0), boneData(0), attachmentName(0), @@ -60,7 +62,7 @@ typedef struct spSlotData { #endif } spSlotData; -spSlotData* spSlotData_create (const char* name, spBoneData* boneData); +spSlotData* spSlotData_create (const int index, const char* name, spBoneData* boneData); void spSlotData_dispose (spSlotData* self); /* @param attachmentName May be 0 for no setup pose attachment. */ diff --git a/spine-c/include/spine/TransformConstraint.h b/spine-c/include/spine/TransformConstraint.h index c4be652b0..b2b01f8d9 100644 --- a/spine-c/include/spine/TransformConstraint.h +++ b/spine-c/include/spine/TransformConstraint.h @@ -43,26 +43,21 @@ struct spSkeleton; typedef struct spTransformConstraint { spTransformConstraintData* const data; - spBone* bone; + int bonesCount; + spBone** const bones; spBone* target; float rotateMix, translateMix, scaleMix, shearMix; - float offsetRotation, offsetX, offsetY, offsetScaleX, offsetScaleY, offsetShearY; #ifdef __cplusplus spTransformConstraint() : data(0), - bone(0), + bonesCount(0), + bones(0), target(0), rotateMix(0), translateMix(0), scaleMix(0), - shearMix(0), - offsetRotation(0), - offsetX(0), - offsetY(0), - offsetScaleX(0), - offsetScaleY(0), - offsetShearY(0) { + shearMix(0) { } #endif } spTransformConstraint; diff --git a/spine-c/include/spine/TransformConstraintData.h b/spine-c/include/spine/TransformConstraintData.h index bffb4fe80..1c71d0427 100644 --- a/spine-c/include/spine/TransformConstraintData.h +++ b/spine-c/include/spine/TransformConstraintData.h @@ -40,8 +40,8 @@ extern "C" { typedef struct spTransformConstraintData { const char* const name; - - spBoneData* bone; + int bonesCount; + spBoneData** const bones; spBoneData* target; float rotateMix, translateMix, scaleMix, shearMix; float offsetRotation, offsetX, offsetY, offsetScaleX, offsetScaleY, offsetShearY; @@ -49,7 +49,8 @@ typedef struct spTransformConstraintData { #ifdef __cplusplus spTransformConstraintData() : name(0), - bone(0), + bonesCount(0), + bones(0), target(0), rotateMix(0), translateMix(0), diff --git a/spine-c/include/spine/WeightedMeshAttachment.h b/spine-c/include/spine/VertexAttachment.h similarity index 54% rename from spine-c/include/spine/WeightedMeshAttachment.h rename to spine-c/include/spine/VertexAttachment.h index 7f6201cc6..6c220eb9e 100644 --- a/spine-c/include/spine/WeightedMeshAttachment.h +++ b/spine-c/include/spine/VertexAttachment.h @@ -29,8 +29,8 @@ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *****************************************************************************/ -#ifndef SPINE_WEIGHTEDMESHATTACHMENT_H_ -#define SPINE_WEIGHTEDMESHATTACHMENT_H_ +#ifndef SPINE_VERTEXATTACHMENT_H_ +#define SPINE_VERTEXATTACHMENT_H_ #include #include @@ -39,58 +39,30 @@ extern "C" { #endif -typedef struct spWeightedMeshAttachment spWeightedMeshAttachment; -struct spWeightedMeshAttachment { +typedef struct spVertexAttachment spVertexAttachment; +struct spVertexAttachment { spAttachment super; - const char* path; int bonesCount; int* bones; - int weightsCount; - float* weights; + int verticesCount; + float* vertices; - int trianglesCount; - unsigned short* triangles; - - int uvsCount; - float* regionUVs; - float* uvs; - int hullLength; - - spWeightedMeshAttachment* const parentMesh; - int/*bool*/inheritFFD; - - float r, g, b, a; - - void* rendererObject; - int regionOffsetX, regionOffsetY; /* Pixels stripped from the bottom left, unrotated. */ - int regionWidth, regionHeight; /* Unrotated, stripped pixel size. */ - int regionOriginalWidth, regionOriginalHeight; /* Unrotated, unstripped pixel size. */ - float regionU, regionV, regionU2, regionV2; - int/*bool*/regionRotate; - - /* Nonessential. */ - int edgesCount; - int* edges; - float width, height; + int worldVerticesLength; }; -spWeightedMeshAttachment* spWeightedMeshAttachment_create (const char* name); -void spWeightedMeshAttachment_updateUVs (spWeightedMeshAttachment* self); -void spWeightedMeshAttachment_computeWorldVertices (spWeightedMeshAttachment* self, spSlot* slot, float* worldVertices); -void spWeightedMeshAttachment_setParentMesh (spWeightedMeshAttachment* self, spWeightedMeshAttachment* parentMesh); +void spVertexAttachment_computeWorldVertices (spVertexAttachment* self, spSlot* slot, float* worldVertices); +void spVertexAttachment_computeWorldVertices1 (spVertexAttachment* self, int start, int count, spSlot* slot, float* worldVertices, int offset); #ifdef SPINE_SHORT_NAMES -typedef spWeightedMeshAttachment WeightedMeshAttachment; -#define WeightedMeshAttachment_create(...) spWeightedMeshAttachment_create(__VA_ARGS__) -#define WeightedMeshAttachment_updateUVs(...) spWeightedMeshAttachment_updateUVs(__VA_ARGS__) -#define WeightedMeshAttachment_computeWorldVertices(...) spWeightedMeshAttachment_computeWorldVertices(__VA_ARGS__) -#define WeightedMeshAttachment_setParentMesh(...) spWeightedMeshAttachment_setParentMesh(__VA_ARGS__) +typedef spVertexAttachment VertexAttachment; +#define VertexAttachment_computeWorldVertices(...) spVertexAttachment_computeWorldVertices(__VA_ARGS__) +#define VertexAttachment_computeWorldVertices1(...) spVertexAttachment_computeWorldVertices1(__VA_ARGS__) #endif #ifdef __cplusplus } #endif -#endif /* SPINE_WEIGHTEDMESHATTACHMENT_H_ */ +#endif /* SPINE_VERTEXATTACHMENT_H_ */ diff --git a/spine-c/include/spine/extension.h b/spine-c/include/spine/extension.h index 63b416f02..d1392d288 100644 --- a/spine-c/include/spine/extension.h +++ b/spine-c/include/spine/extension.h @@ -82,6 +82,10 @@ #define ACOS(A) (float)acos(A) #endif +#define CLAMP(x, min, max) (x < min ? min : (x > max ? max : x)) +#define MIN(x, y) (x < y ? x : y) +#define MAX(x, y) (x > y ? x : y) + #define UNUSED(x) (void)(x) #include @@ -91,10 +95,11 @@ #include #include #include +#include #include #include -#include #include +#include #include #ifdef __cplusplus @@ -178,10 +183,12 @@ void _spAttachmentLoader_setUnknownTypeError (spAttachmentLoader* self, spAttach void _spAttachment_init (spAttachment* self, const char* name, spAttachmentType type, void (*dispose) (spAttachment* self)); void _spAttachment_deinit (spAttachment* self); +void _spVertexAttachment_deinit (spVertexAttachment* self); #ifdef SPINE_SHORT_NAMES #define _Attachment_init(...) _spAttachment_init(__VA_ARGS__) #define _Attachment_deinit(...) _spAttachment_deinit(__VA_ARGS__) +#define _VertexAttachment_deinit(...) _spVertexAttachment_deinit(__VA_ARGS__) #endif /**/ diff --git a/spine-c/include/spine/spine.h b/spine-c/include/spine/spine.h index 0a1063a0a..c5ff57434 100644 --- a/spine-c/include/spine/spine.h +++ b/spine-c/include/spine/spine.h @@ -42,8 +42,8 @@ #include #include #include +#include #include -#include #include #include #include diff --git a/spine-c/src/spine/Animation.c b/spine-c/src/spine/Animation.c index eb3add590..da535aa9b 100644 --- a/spine-c/src/spine/Animation.c +++ b/spine-c/src/spine/Animation.c @@ -111,7 +111,7 @@ void spTimeline_apply (const spTimeline* self, spSkeleton* skeleton, float lastT /**/ static const float CURVE_LINEAR = 0, CURVE_STEPPED = 1, CURVE_BEZIER = 2; -static const int BEZIER_SEGMENTS = 10, BEZIER_SIZE = 10 * 2 - 1; +static const int BEZIER_SIZE = 10 * 2 - 1; void _spCurveTimeline_init (spCurveTimeline* self, spTimelineType type, int framesCount, /**/ void (*dispose) (spTimeline* self), /**/ @@ -135,12 +135,10 @@ void spCurveTimeline_setStepped (spCurveTimeline* self, int frameIndex) { } void spCurveTimeline_setCurve (spCurveTimeline* self, int frameIndex, float cx1, float cy1, float cx2, float cy2) { - float subdiv1 = 1.0f / BEZIER_SEGMENTS, subdiv2 = subdiv1 * subdiv1, subdiv3 = subdiv2 * subdiv1; - float pre1 = 3 * subdiv1, pre2 = 3 * subdiv2, pre4 = 6 * subdiv2, pre5 = 6 * subdiv3; - float tmp1x = -cx1 * 2 + cx2, tmp1y = -cy1 * 2 + cy2, tmp2x = (cx1 - cx2) * 3 + 1, tmp2y = (cy1 - cy2) * 3 + 1; - float dfx = cx1 * pre1 + tmp1x * pre2 + tmp2x * subdiv3, dfy = cy1 * pre1 + tmp1y * pre2 + tmp2y * subdiv3; - float ddfx = tmp1x * pre4 + tmp2x * pre5, ddfy = tmp1y * pre4 + tmp2y * pre5; - float dddfx = tmp2x * pre5, dddfy = tmp2y * pre5; + float tmpx = (-cx1 * 2 + cx2) * 0.03f, tmpy = (-cy1 * 2 + cy2) * 0.03f; + float dddfx = ((cx1 - cx2) * 3 + 1) * 0.006f, dddfy = ((cy1 - cy2) * 3 + 1) * 0.006f; + float ddfx = tmpx * 2 + dddfx, ddfy = tmpy * 2 + dddfy; + float dfx = cx1 * 0.3f + tmpx + dddfx * 0.16666667f, dfy = cy1 * 0.3f + tmpy + dddfy * 0.16666667f; float x = dfx, y = dfy; int i = frameIndex * BEZIER_SIZE, n = i + BEZIER_SIZE - 1; @@ -162,6 +160,7 @@ float spCurveTimeline_getCurvePercent (const spCurveTimeline* self, int frameInd float x, y; int i = frameIndex * BEZIER_SIZE, start, n; float type = self->curves[i]; + percent = CLAMP(percent, 0, 1); if (type == CURVE_LINEAR) return percent; if (type == CURVE_STEPPED) return 0; i++; @@ -218,15 +217,6 @@ static int binarySearch1 (float *values, int valuesLength, float target) { return 0; } -/*static int linearSearch (float *values, int valuesLength, float target, int step) { - int i, last = valuesLength - step; - for (i = 0; i <= last; i += step) { - if (values[i] <= target) continue; - return i; - } - return -1; - }*/ - /**/ void _spBaseTimeline_dispose (spTimeline* timeline) { @@ -251,14 +241,14 @@ struct spBaseTimeline* _spBaseTimeline_create (int framesCount, spTimelineType t /**/ -static const int ROTATE_PREV_TIME = -2; -static const int ROTATE_FRAME = 1; +static const int ROTATE_PREV_TIME = -2, ROTATE_PREV_ROTATION = -1; +static const int ROTATE_ROTATION = 1; void _spRotateTimeline_apply (const spTimeline* timeline, spSkeleton* skeleton, float lastTime, float time, spEvent** firedEvents, int* eventsCount, float alpha) { spBone *bone; int frame; - float prevFrameValue, frameTime, percent, amount; + float prevRotation, frameTime, percent, amount; spRotateTimeline* self = SUB_CAST(spRotateTimeline, timeline); @@ -266,8 +256,8 @@ void _spRotateTimeline_apply (const spTimeline* timeline, spSkeleton* skeleton, bone = skeleton->bones[self->boneIndex]; - if (time >= self->frames[self->framesCount - 2]) { /* Time is after last frame. */ - amount = bone->data->rotation + self->frames[self->framesCount - 1] - bone->rotation; + if (time >= self->frames[self->framesCount - ROTATE_ENTRIES]) { /* Time is after last frame. */ + amount = bone->data->rotation + self->frames[self->framesCount + ROTATE_PREV_ROTATION] - bone->rotation; while (amount > 180) amount -= 360; while (amount < -180) @@ -277,18 +267,17 @@ void _spRotateTimeline_apply (const spTimeline* timeline, spSkeleton* skeleton, } /* Interpolate between the previous frame and the current frame. */ - frame = binarySearch(self->frames, self->framesCount, time, 2); - prevFrameValue = self->frames[frame - 1]; + frame = binarySearch(self->frames, self->framesCount, time, ROTATE_ENTRIES); + prevRotation = self->frames[frame + ROTATE_PREV_ROTATION]; frameTime = self->frames[frame]; - percent = 1 - (time - frameTime) / (self->frames[frame + ROTATE_PREV_TIME] - frameTime); - percent = spCurveTimeline_getCurvePercent(SUPER(self), (frame >> 1) - 1, percent < 0 ? 0 : (percent > 1 ? 1 : percent)); + percent = spCurveTimeline_getCurvePercent(SUPER(self), (frame >> 1) - 1, 1 - (time - frameTime) / (self->frames[frame + ROTATE_PREV_TIME] - frameTime)); - amount = self->frames[frame + ROTATE_FRAME] - prevFrameValue; + amount = self->frames[frame + ROTATE_ROTATION] - prevRotation; while (amount > 180) amount -= 360; while (amount < -180) amount += 360; - amount = bone->data->rotation + (prevFrameValue + amount * percent) - bone->rotation; + amount = bone->data->rotation + (prevRotation + amount * percent) - bone->rotation; while (amount > 180) amount -= 360; while (amount < -180) @@ -301,26 +290,25 @@ void _spRotateTimeline_apply (const spTimeline* timeline, spSkeleton* skeleton, } spRotateTimeline* spRotateTimeline_create (int framesCount) { - return _spBaseTimeline_create(framesCount, SP_TIMELINE_ROTATE, 2, _spRotateTimeline_apply); + return _spBaseTimeline_create(framesCount, SP_TIMELINE_ROTATE, ROTATE_ENTRIES, _spRotateTimeline_apply); } -void spRotateTimeline_setFrame (spRotateTimeline* self, int frameIndex, float time, float angle) { - frameIndex *= 2; +void spRotateTimeline_setFrame (spRotateTimeline* self, int frameIndex, float time, float degrees) { + frameIndex <<= 1; self->frames[frameIndex] = time; - self->frames[frameIndex + 1] = angle; + self->frames[frameIndex + ROTATE_ROTATION] = degrees; } /**/ -static const int TRANSLATE_PREV_TIME = -3; -static const int TRANSLATE_X = 1; -static const int TRANSLATE_Y = 2; +static const int TRANSLATE_PREV_TIME = -3, TRANSLATE_PREV_X = -2, TRANSLATE_PREV_Y = -1; +static const int TRANSLATE_X = 1, TRANSLATE_Y = 2; void _spTranslateTimeline_apply (const spTimeline* timeline, spSkeleton* skeleton, float lastTime, float time, spEvent** firedEvents, int* eventsCount, float alpha) { spBone *bone; int frame; - float prevFrameX, prevFrameY, frameTime, percent; + float prevX, prevY, frameTime, percent; spTranslateTimeline* self = SUB_CAST(spTranslateTimeline, timeline); @@ -328,24 +316,21 @@ void _spTranslateTimeline_apply (const spTimeline* timeline, spSkeleton* skeleto bone = skeleton->bones[self->boneIndex]; - if (time >= self->frames[self->framesCount - 3]) { /* Time is after last frame. */ - bone->x += (bone->data->x + self->frames[self->framesCount - 2] - bone->x) * alpha; - bone->y += (bone->data->y + self->frames[self->framesCount - 1] - bone->y) * alpha; + if (time >= self->frames[self->framesCount - TRANSLATE_ENTRIES]) { /* Time is after last frame. */ + bone->x += (bone->data->x + self->frames[self->framesCount + TRANSLATE_PREV_X] - bone->x) * alpha; + bone->y += (bone->data->y + self->frames[self->framesCount + TRANSLATE_PREV_Y] - bone->y) * alpha; return; } /* Interpolate between the previous frame and the current frame. */ - frame = binarySearch(self->frames, self->framesCount, time, 3); - prevFrameX = self->frames[frame - 2]; - prevFrameY = self->frames[frame - 1]; + frame = binarySearch(self->frames, self->framesCount, time, TRANSLATE_ENTRIES); + prevX = self->frames[frame + TRANSLATE_PREV_X]; + prevY = self->frames[frame + TRANSLATE_PREV_Y]; frameTime = self->frames[frame]; - percent = 1 - (time - frameTime) / (self->frames[frame + TRANSLATE_PREV_TIME] - frameTime); - percent = spCurveTimeline_getCurvePercent(SUPER(self), frame / 3 - 1, percent < 0 ? 0 : (percent > 1 ? 1 : percent)); + percent = spCurveTimeline_getCurvePercent(SUPER(self), frame / TRANSLATE_ENTRIES - 1, 1 - (time - frameTime) / (self->frames[frame + TRANSLATE_PREV_TIME] - frameTime)); - bone->x += (bone->data->x + prevFrameX + (self->frames[frame + TRANSLATE_X] - prevFrameX) * percent - bone->x) - * alpha; - bone->y += (bone->data->y + prevFrameY + (self->frames[frame + TRANSLATE_Y] - prevFrameY) * percent - bone->y) - * alpha; + bone->x += (bone->data->x + prevX + (self->frames[frame + TRANSLATE_X] - prevX) * percent - bone->x) * alpha; + bone->y += (bone->data->y + prevY + (self->frames[frame + TRANSLATE_Y] - prevY) * percent - bone->y) * alpha; UNUSED(lastTime); UNUSED(firedEvents); @@ -353,14 +338,14 @@ void _spTranslateTimeline_apply (const spTimeline* timeline, spSkeleton* skeleto } spTranslateTimeline* spTranslateTimeline_create (int framesCount) { - return _spBaseTimeline_create(framesCount, SP_TIMELINE_TRANSLATE, 3, _spTranslateTimeline_apply); + return _spBaseTimeline_create(framesCount, SP_TIMELINE_TRANSLATE, TRANSLATE_ENTRIES, _spTranslateTimeline_apply); } void spTranslateTimeline_setFrame (spTranslateTimeline* self, int frameIndex, float time, float x, float y) { - frameIndex *= 3; + frameIndex *= TRANSLATE_ENTRIES; self->frames[frameIndex] = time; - self->frames[frameIndex + 1] = x; - self->frames[frameIndex + 2] = y; + self->frames[frameIndex + TRANSLATE_X] = x; + self->frames[frameIndex + TRANSLATE_Y] = y; } /**/ @@ -369,31 +354,28 @@ void _spScaleTimeline_apply (const spTimeline* timeline, spSkeleton* skeleton, f int* eventsCount, float alpha) { spBone *bone; int frame; - float prevFrameX, prevFrameY, frameTime, percent; + float prevX, prevY, frameTime, percent; spScaleTimeline* self = SUB_CAST(spScaleTimeline, timeline); if (time < self->frames[0]) return; /* Time is before first frame. */ bone = skeleton->bones[self->boneIndex]; - if (time >= self->frames[self->framesCount - 3]) { /* Time is after last frame. */ - bone->scaleX += (bone->data->scaleX * self->frames[self->framesCount - 2] - bone->scaleX) * alpha; - bone->scaleY += (bone->data->scaleY * self->frames[self->framesCount - 1] - bone->scaleY) * alpha; + if (time >= self->frames[self->framesCount - TRANSLATE_ENTRIES]) { /* Time is after last frame. */ + bone->scaleX += (bone->data->scaleX * self->frames[self->framesCount + TRANSLATE_PREV_X] - bone->scaleX) * alpha; + bone->scaleY += (bone->data->scaleY * self->frames[self->framesCount + TRANSLATE_PREV_Y] - bone->scaleY) * alpha; return; } /* Interpolate between the previous frame and the current frame. */ - frame = binarySearch(self->frames, self->framesCount, time, 3); - prevFrameX = self->frames[frame - 2]; - prevFrameY = self->frames[frame - 1]; + frame = binarySearch(self->frames, self->framesCount, time, TRANSLATE_ENTRIES); + prevX = self->frames[frame + TRANSLATE_PREV_X]; + prevY = self->frames[frame + TRANSLATE_PREV_Y]; frameTime = self->frames[frame]; - percent = 1 - (time - frameTime) / (self->frames[frame + TRANSLATE_PREV_TIME] - frameTime); - percent = spCurveTimeline_getCurvePercent(SUPER(self), frame / 3 - 1, percent < 0 ? 0 : (percent > 1 ? 1 : percent)); + percent = spCurveTimeline_getCurvePercent(SUPER(self), frame / TRANSLATE_ENTRIES - 1, 1 - (time - frameTime) / (self->frames[frame + TRANSLATE_PREV_TIME] - frameTime)); - bone->scaleX += (bone->data->scaleX * (prevFrameX + (self->frames[frame + TRANSLATE_X] - prevFrameX) * percent) - - bone->scaleX) * alpha; - bone->scaleY += (bone->data->scaleY * (prevFrameY + (self->frames[frame + TRANSLATE_Y] - prevFrameY) * percent) - - bone->scaleY) * alpha; + bone->scaleX += (bone->data->scaleX * (prevX + (self->frames[frame + TRANSLATE_X] - prevX) * percent) - bone->scaleX) * alpha; + bone->scaleY += (bone->data->scaleY * (prevY + (self->frames[frame + TRANSLATE_Y] - prevY) * percent) - bone->scaleY) * alpha; UNUSED(lastTime); UNUSED(firedEvents); @@ -401,7 +383,7 @@ void _spScaleTimeline_apply (const spTimeline* timeline, spSkeleton* skeleton, f } spScaleTimeline* spScaleTimeline_create (int framesCount) { - return _spBaseTimeline_create(framesCount, SP_TIMELINE_SCALE, 3, _spScaleTimeline_apply); + return _spBaseTimeline_create(framesCount, SP_TIMELINE_SCALE, TRANSLATE_ENTRIES, _spScaleTimeline_apply); } void spScaleTimeline_setFrame (spScaleTimeline* self, int frameIndex, float time, float x, float y) { @@ -414,31 +396,28 @@ void _spShearTimeline_apply (const spTimeline* timeline, spSkeleton* skeleton, f int* eventsCount, float alpha) { spBone *bone; int frame; - float prevFrameX, prevFrameY, frameTime, percent; + float prevX, prevY, frameTime, percent; spShearTimeline* self = SUB_CAST(spShearTimeline, timeline); if (time < self->frames[0]) return; /* Time is before first frame. */ bone = skeleton->bones[self->boneIndex]; - if (time >= self->frames[self->framesCount - 3]) { /* Time is after last frame. */ - bone->shearX += (bone->data->shearX * self->frames[self->framesCount - 2] - bone->shearX) * alpha; - bone->shearY += (bone->data->shearY * self->frames[self->framesCount - 1] - bone->shearY) * alpha; + if (time >= self->frames[self->framesCount - TRANSLATE_ENTRIES]) { /* Time is after last frame. */ + bone->shearX += (bone->data->shearX + self->frames[self->framesCount + TRANSLATE_PREV_X] - bone->shearX) * alpha; + bone->shearY += (bone->data->shearY + self->frames[self->framesCount + TRANSLATE_PREV_Y] - bone->shearY) * alpha; return; } /* Interpolate between the previous frame and the current frame. */ - frame = binarySearch(self->frames, self->framesCount, time, 3); - prevFrameX = self->frames[frame - 2]; - prevFrameY = self->frames[frame - 1]; + frame = binarySearch(self->frames, self->framesCount, time, TRANSLATE_ENTRIES); + prevX = self->frames[frame + TRANSLATE_PREV_X]; + prevY = self->frames[frame + TRANSLATE_PREV_Y]; frameTime = self->frames[frame]; - percent = 1 - (time - frameTime) / (self->frames[frame + TRANSLATE_PREV_TIME] - frameTime); - percent = spCurveTimeline_getCurvePercent(SUPER(self), frame / 3 - 1, percent < 0 ? 0 : (percent > 1 ? 1 : percent)); + percent = spCurveTimeline_getCurvePercent(SUPER(self), frame / TRANSLATE_ENTRIES - 1, 1 - (time - frameTime) / (self->frames[frame + TRANSLATE_PREV_TIME] - frameTime)); - bone->shearX += (bone->data->shearX + (prevFrameX + (self->frames[frame + TRANSLATE_X] - prevFrameX) * percent) - - bone->shearX) * alpha; - bone->shearY += (bone->data->shearY + (prevFrameY + (self->frames[frame + TRANSLATE_Y] - prevFrameY) * percent) - - bone->shearY) * alpha; + bone->shearX += (bone->data->shearX + prevX + (self->frames[frame + TRANSLATE_X] - prevX) * percent - bone->shearX) * alpha; + bone->shearY += (bone->data->shearY + prevY + (self->frames[frame + TRANSLATE_Y] - prevY) * percent - bone->shearY) * alpha; UNUSED(lastTime); UNUSED(firedEvents); @@ -455,11 +434,8 @@ void spShearTimeline_setFrame (spShearTimeline* self, int frameIndex, float time /**/ -static const int COLOR_PREV_TIME = -5; -static const int COLOR_R = 1; -static const int COLOR_G = 2; -static const int COLOR_B = 3; -static const int COLOR_A = 4; +static const int COLOR_PREV_TIME = -5, COLOR_PREV_R = -4, COLOR_PREV_G = -3, COLOR_PREV_B = -2, COLOR_PREV_A = -1; +static const int COLOR_R = 1, COLOR_G = 2, COLOR_B = 3, COLOR_A = 4; void _spColorTimeline_apply (const spTimeline* timeline, spSkeleton* skeleton, float lastTime, float time, spEvent** firedEvents, int* eventsCount, float alpha) { @@ -472,22 +448,23 @@ void _spColorTimeline_apply (const spTimeline* timeline, spSkeleton* skeleton, f if (time < self->frames[0]) return; /* Time is before first frame. */ if (time >= self->frames[self->framesCount - 5]) { /* Time is after last frame */ - int i = self->framesCount - 1; - r = self->frames[i - 3]; - g = self->frames[i - 2]; - b = self->frames[i - 1]; - a = self->frames[i]; + int i = self->framesCount; + r = self->frames[i + COLOR_PREV_R]; + g = self->frames[i + COLOR_PREV_G]; + b = self->frames[i + COLOR_PREV_B]; + a = self->frames[i + COLOR_PREV_A]; } else { /* Interpolate between the previous frame and the current frame. */ - frame = binarySearch(self->frames, self->framesCount, time, 5); - frameTime = self->frames[frame]; - percent = 1 - (time - frameTime) / (self->frames[frame + COLOR_PREV_TIME] - frameTime); - percent = spCurveTimeline_getCurvePercent(SUPER(self), frame / 5 - 1, percent < 0 ? 0 : (percent > 1 ? 1 : percent)); + frame = binarySearch(self->frames, self->framesCount, time, COLOR_ENTRIES); - r = self->frames[frame - 4]; - g = self->frames[frame - 3]; - b = self->frames[frame - 2]; - a = self->frames[frame - 1]; + r = self->frames[frame + COLOR_PREV_R]; + g = self->frames[frame + COLOR_PREV_G]; + b = self->frames[frame + COLOR_PREV_B]; + a = self->frames[frame + COLOR_PREV_A]; + + frameTime = self->frames[frame]; + percent = spCurveTimeline_getCurvePercent(SUPER(self), frame / COLOR_ENTRIES - 1, + 1 - (time - frameTime) / (self->frames[frame + COLOR_PREV_TIME] - frameTime)); r += (self->frames[frame + COLOR_R] - r) * percent; g += (self->frames[frame + COLOR_G] - g) * percent; @@ -517,33 +494,30 @@ spColorTimeline* spColorTimeline_create (int framesCount) { } void spColorTimeline_setFrame (spColorTimeline* self, int frameIndex, float time, float r, float g, float b, float a) { - frameIndex *= 5; + frameIndex *= COLOR_ENTRIES; self->frames[frameIndex] = time; - self->frames[frameIndex + 1] = r; - self->frames[frameIndex + 2] = g; - self->frames[frameIndex + 3] = b; - self->frames[frameIndex + 4] = a; + self->frames[frameIndex + COLOR_R] = r; + self->frames[frameIndex + COLOR_G] = g; + self->frames[frameIndex + COLOR_B] = b; + self->frames[frameIndex + COLOR_A] = a; } /**/ void _spAttachmentTimeline_apply (const spTimeline* timeline, spSkeleton* skeleton, float lastTime, float time, spEvent** firedEvents, int* eventsCount, float alpha) { - int frame; const char* attachmentName; spAttachmentTimeline* self = (spAttachmentTimeline*)timeline; + int frameIndex; - if (time < self->frames[0]) { - if (lastTime > time) _spAttachmentTimeline_apply(timeline, skeleton, lastTime, (float)INT_MAX, 0, 0, 0); - return; - } else if (lastTime > time) /**/ - lastTime = -1; + if (time < self->frames[0]) return; - frame = time >= self->frames[self->framesCount - 1] ? - self->framesCount - 1 : binarySearch1(self->frames, self->framesCount, time) - 1; - if (self->frames[frame] < lastTime) return; + if (time >= self->frames[self->framesCount - 1]) + frameIndex = self->framesCount - 1; + else + frameIndex = binarySearch1(self->frames, self->framesCount, time) - 1; - attachmentName = self->attachmentNames[frame]; + attachmentName = self->attachmentNames[frameIndex]; spSlot_setAttachment(skeleton->slots[self->slotIndex], attachmentName ? spSkeleton_getAttachmentForSlotIndex(skeleton, self->slotIndex, attachmentName) : 0); @@ -719,13 +693,13 @@ void spDrawOrderTimeline_setFrame (spDrawOrderTimeline* self, int frameIndex, fl /**/ -void _spFFDTimeline_apply (const spTimeline* timeline, spSkeleton* skeleton, float lastTime, float time, spEvent** firedEvents, +void _spDeformTimeline_apply (const spTimeline* timeline, spSkeleton* skeleton, float lastTime, float time, spEvent** firedEvents, int* eventsCount, float alpha) { int frame, i, vertexCount; float percent, frameTime; const float* prevVertices; const float* nextVertices; - spFFDTimeline* self = (spFFDTimeline*)timeline; + spDeformTimeline* self = (spDeformTimeline*)timeline; spSlot *slot = skeleton->slots[self->slotIndex]; @@ -734,12 +708,7 @@ void _spFFDTimeline_apply (const spTimeline* timeline, spSkeleton* skeleton, flo switch (slot->attachment->type) { case SP_ATTACHMENT_MESH: { spMeshAttachment* mesh = SUB_CAST(spMeshAttachment, slot->attachment); - if (!mesh->inheritFFD || mesh->parentMesh != (void*)self->attachment) return; - break; - } - case SP_ATTACHMENT_WEIGHTED_MESH: { - spWeightedMeshAttachment* mesh = SUB_CAST(spWeightedMeshAttachment, slot->attachment); - if (!mesh->inheritFFD || mesh->parentMesh != (void*)self->attachment) return; + if (!mesh->inheritDeform || mesh->parentMesh != (void*)self->attachment) return; break; } default: @@ -774,8 +743,7 @@ void _spFFDTimeline_apply (const spTimeline* timeline, spSkeleton* skeleton, flo /* Interpolate between the previous frame and the current frame. */ frame = binarySearch1(self->frames, self->framesCount, time); frameTime = self->frames[frame]; - percent = 1 - (time - frameTime) / (self->frames[frame - 1] - frameTime); - percent = spCurveTimeline_getCurvePercent(SUPER(self), frame - 1, percent < 0 ? 0 : (percent > 1 ? 1 : percent)); + percent = spCurveTimeline_getCurvePercent(SUPER(self), frame - 1, 1 - (time - frameTime) / (self->frames[frame - 1] - frameTime)); prevVertices = self->frameVertices[frame - 1]; nextVertices = self->frameVertices[frame]; @@ -797,8 +765,8 @@ void _spFFDTimeline_apply (const spTimeline* timeline, spSkeleton* skeleton, flo UNUSED(eventsCount); } -void _spFFDTimeline_dispose (spTimeline* timeline) { - spFFDTimeline* self = SUB_CAST(spFFDTimeline, timeline); +void _spDeformTimeline_dispose (spTimeline* timeline) { + spDeformTimeline* self = SUB_CAST(spDeformTimeline, timeline); int i; _spCurveTimeline_deinit(SUPER(self)); @@ -810,9 +778,9 @@ void _spFFDTimeline_dispose (spTimeline* timeline) { FREE(self); } -spFFDTimeline* spFFDTimeline_create (int framesCount, int frameVerticesCount) { - spFFDTimeline* self = NEW(spFFDTimeline); - _spCurveTimeline_init(SUPER(self), SP_TIMELINE_FFD, framesCount, _spFFDTimeline_dispose, _spFFDTimeline_apply); +spDeformTimeline* spDeformTimeline_create (int framesCount, int frameVerticesCount) { + spDeformTimeline* self = NEW(spDeformTimeline); + _spCurveTimeline_init(SUPER(self), SP_TIMELINE_DEFORM, framesCount, _spDeformTimeline_dispose, _spDeformTimeline_apply); CONST_CAST(int, self->framesCount) = framesCount; CONST_CAST(float*, self->frames) = CALLOC(float, self->framesCount); CONST_CAST(float**, self->frameVertices) = CALLOC(float*, framesCount); @@ -820,7 +788,7 @@ spFFDTimeline* spFFDTimeline_create (int framesCount, int frameVerticesCount) { return self; } -void spFFDTimeline_setFrame (spFFDTimeline* self, int frameIndex, float time, float* vertices) { +void spDeformTimeline_setFrame (spDeformTimeline* self, int frameIndex, float time, float* vertices) { self->frames[frameIndex] = time; FREE(self->frameVertices[frameIndex]); @@ -835,10 +803,8 @@ void spFFDTimeline_setFrame (spFFDTimeline* self, int frameIndex, float time, fl /**/ -static const int IKCONSTRAINT_PREV_TIME = -3; -static const int IKCONSTRAINT_PREV_MIX = -2; -static const int IKCONSTRAINT_PREV_BEND_DIRECTION = -1; -static const int IKCONSTRAINT_MIX = 1; +static const int IKCONSTRAINT_PREV_TIME = -3, IKCONSTRAINT_PREV_MIX = -2, IKCONSTRAINT_PREV_BEND_DIRECTION = -1; +static const int IKCONSTRAINT_MIX = 1, IKCONSTRAINT_BEND_DIRECTION = 2; void _spIkConstraintTimeline_apply (const spTimeline* timeline, spSkeleton* skeleton, float lastTime, float time, spEvent** firedEvents, int* eventsCount, float alpha) { @@ -851,19 +817,18 @@ void _spIkConstraintTimeline_apply (const spTimeline* timeline, spSkeleton* skel constraint = skeleton->ikConstraints[self->ikConstraintIndex]; - if (time >= self->frames[self->framesCount - 3]) { /* Time is after last frame. */ + if (time >= self->frames[self->framesCount - IKCONSTRAINT_ENTRIES]) { /* Time is after last frame. */ constraint->mix += (self->frames[self->framesCount + IKCONSTRAINT_PREV_MIX] - constraint->mix) * alpha; constraint->bendDirection = (int)self->frames[self->framesCount + IKCONSTRAINT_PREV_BEND_DIRECTION]; return; } /* Interpolate between the previous frame and the current frame. */ - frame = binarySearch(self->frames, self->framesCount, time, 3); - frameTime = self->frames[frame]; - percent = 1 - (time - frameTime) / (self->frames[frame + IKCONSTRAINT_PREV_TIME] - frameTime); - percent = spCurveTimeline_getCurvePercent(SUPER(self), frame / 3 - 1, percent < 0 ? 0 : (percent > 1 ? 1 : percent)); - + frame = binarySearch(self->frames, self->framesCount, time, IKCONSTRAINT_ENTRIES); mix = self->frames[frame + IKCONSTRAINT_PREV_MIX]; + frameTime = self->frames[frame]; + percent = spCurveTimeline_getCurvePercent(SUPER(self), frame / IKCONSTRAINT_ENTRIES - 1, 1 - (time - frameTime) / (self->frames[frame + IKCONSTRAINT_PREV_TIME] - frameTime)); + constraint->mix += (mix + (self->frames[frame + IKCONSTRAINT_MIX] - mix) * percent - constraint->mix) * alpha; constraint->bendDirection = (int)self->frames[frame + IKCONSTRAINT_PREV_BEND_DIRECTION]; @@ -873,26 +838,26 @@ void _spIkConstraintTimeline_apply (const spTimeline* timeline, spSkeleton* skel } spIkConstraintTimeline* spIkConstraintTimeline_create (int framesCount) { - return (spIkConstraintTimeline*)_spBaseTimeline_create(framesCount, SP_TIMELINE_IKCONSTRAINT, 3, _spIkConstraintTimeline_apply); + return (spIkConstraintTimeline*)_spBaseTimeline_create(framesCount, SP_TIMELINE_IKCONSTRAINT, IKCONSTRAINT_ENTRIES, _spIkConstraintTimeline_apply); } void spIkConstraintTimeline_setFrame (spIkConstraintTimeline* self, int frameIndex, float time, float mix, int bendDirection) { - frameIndex *= 3; + frameIndex *= IKCONSTRAINT_ENTRIES; self->frames[frameIndex] = time; - self->frames[frameIndex + 1] = mix; - self->frames[frameIndex + 2] = (float)bendDirection; + self->frames[frameIndex + IKCONSTRAINT_MIX] = mix; + self->frames[frameIndex + IKCONSTRAINT_BEND_DIRECTION] = (float)bendDirection; } /**/ static const int TRANSFORMCONSTRAINT_PREV_TIME = -5; -static const int TRANSFORMCONSTRAINT_PREV_ROTATE_MIX = -4; -static const int TRANSFORMCONSTRAINT_PREV_TRANSLATE_MIX = -3; -static const int TRANSFORMCONSTRAINT_PREV_SCALE_MIX = -2; -static const int TRANSFORMCONSTRAINT_PREV_SHEAR_MIX = -1; -static const int TRANSFORMCONSTRAINT_ROTATE_MIX = 1; -static const int TRANSFORMCONSTRAINT_TRANSLATE_MIX = 2; -static const int TRANSFORMCONSTRAINT_SCALE_MIX = 3; -static const int TRANSFORMCONSTRAINT_SHEAR_MIX = 4; +static const int TRANSFORMCONSTRAINT_PREV_ROTATE = -4; +static const int TRANSFORMCONSTRAINT_PREV_TRANSLATE = -3; +static const int TRANSFORMCONSTRAINT_PREV_SCALE = -2; +static const int TRANSFORMCONSTRAINT_PREV_SHEAR = -1; +static const int TRANSFORMCONSTRAINT_ROTATE = 1; +static const int TRANSFORMCONSTRAINT_TRANSLATE = 2; +static const int TRANSFORMCONSTRAINT_SCALE = 3; +static const int TRANSFORMCONSTRAINT_SHEAR = 4; void _spTransformConstraintTimeline_apply (const spTimeline* timeline, spSkeleton* skeleton, float lastTime, float time, spEvent** firedEvents, int* eventsCount, float alpha) { @@ -905,30 +870,28 @@ void _spTransformConstraintTimeline_apply (const spTimeline* timeline, spSkeleto constraint = skeleton->transformConstraints[self->transformConstraintIndex]; - if (time >= self->frames[self->framesCount - 5]) { /* Time is after last frame. */ + if (time >= self->frames[self->framesCount - TRANSFORMCONSTRAINT_ENTRIES]) { /* Time is after last frame. */ int len = self->framesCount; - constraint->rotateMix += (self->frames[len + TRANSFORMCONSTRAINT_PREV_ROTATE_MIX] - constraint->rotateMix) * alpha; - constraint->translateMix += (self->frames[len + TRANSFORMCONSTRAINT_PREV_TRANSLATE_MIX] - constraint->translateMix) * alpha; - constraint->scaleMix += (self->frames[len + TRANSFORMCONSTRAINT_PREV_SCALE_MIX] - constraint->scaleMix) * alpha; - constraint->shearMix += (self->frames[len + TRANSFORMCONSTRAINT_PREV_SHEAR_MIX] - constraint->shearMix) * alpha; + constraint->rotateMix += (self->frames[len + TRANSFORMCONSTRAINT_PREV_ROTATE] - constraint->rotateMix) * alpha; + constraint->translateMix += (self->frames[len + TRANSFORMCONSTRAINT_PREV_TRANSLATE] - constraint->translateMix) * alpha; + constraint->scaleMix += (self->frames[len + TRANSFORMCONSTRAINT_PREV_SCALE] - constraint->scaleMix) * alpha; + constraint->shearMix += (self->frames[len + TRANSFORMCONSTRAINT_PREV_SHEAR] - constraint->shearMix) * alpha; return; } /* Interpolate between the previous frame and the current frame. */ - frame = binarySearch(self->frames, self->framesCount, time, 5); + frame = binarySearch(self->frames, self->framesCount, time, TRANSFORMCONSTRAINT_ENTRIES); frameTime = self->frames[frame]; - percent = 1 - (time - frameTime) / (self->frames[frame + TRANSFORMCONSTRAINT_PREV_TIME] - frameTime); - percent = spCurveTimeline_getCurvePercent(SUPER(self), frame / 5 - 1, percent < 0 ? 0 : (percent > 1 ? 1 : percent)); + percent = spCurveTimeline_getCurvePercent(SUPER(self), frame / TRANSFORMCONSTRAINT_ENTRIES - 1, 1 - (time - frameTime) / (self->frames[frame + TRANSFORMCONSTRAINT_PREV_TIME] - frameTime)); - rotate = self->frames[frame + TRANSFORMCONSTRAINT_PREV_ROTATE_MIX]; - translate = self->frames[frame + TRANSFORMCONSTRAINT_PREV_TRANSLATE_MIX]; - scale = self->frames[frame + TRANSFORMCONSTRAINT_PREV_SCALE_MIX]; - shear = self->frames[frame + TRANSFORMCONSTRAINT_PREV_SHEAR_MIX]; - constraint->rotateMix += (rotate + (self->frames[frame + TRANSFORMCONSTRAINT_ROTATE_MIX] - rotate) * percent - constraint->rotateMix) * alpha; - constraint->translateMix += (translate + (self->frames[frame + TRANSFORMCONSTRAINT_TRANSLATE_MIX] - translate) * percent - constraint->translateMix) - * alpha; - constraint->scaleMix += (scale + (self->frames[frame + TRANSFORMCONSTRAINT_SCALE_MIX] - scale) * percent - constraint->scaleMix) * alpha; - constraint->shearMix += (shear + (self->frames[frame + TRANSFORMCONSTRAINT_SHEAR_MIX] - shear) * percent - constraint->shearMix) * alpha; + rotate = self->frames[frame + TRANSFORMCONSTRAINT_PREV_ROTATE]; + translate = self->frames[frame + TRANSFORMCONSTRAINT_PREV_TRANSLATE]; + scale = self->frames[frame + TRANSFORMCONSTRAINT_PREV_SCALE]; + shear = self->frames[frame + TRANSFORMCONSTRAINT_PREV_SHEAR]; + constraint->rotateMix += (rotate + (self->frames[frame + TRANSFORMCONSTRAINT_ROTATE] - rotate) * percent - constraint->rotateMix) * alpha; + constraint->translateMix += (translate + (self->frames[frame + TRANSFORMCONSTRAINT_TRANSLATE] - translate) * percent - constraint->translateMix) * alpha; + constraint->scaleMix += (scale + (self->frames[frame + TRANSFORMCONSTRAINT_SCALE] - scale) * percent - constraint->scaleMix) * alpha; + constraint->shearMix += (shear + (self->frames[frame + TRANSFORMCONSTRAINT_SHEAR] - shear) * percent - constraint->shearMix) * alpha; UNUSED(lastTime); UNUSED(firedEvents); @@ -936,14 +899,157 @@ void _spTransformConstraintTimeline_apply (const spTimeline* timeline, spSkeleto } spTransformConstraintTimeline* spTransformConstraintTimeline_create (int framesCount) { - return (spTransformConstraintTimeline*)_spBaseTimeline_create(framesCount, SP_TIMELINE_TRANSFORMCONSTRAINT, 5, _spTransformConstraintTimeline_apply); + return (spTransformConstraintTimeline*)_spBaseTimeline_create(framesCount, SP_TIMELINE_TRANSFORMCONSTRAINT, TRANSFORMCONSTRAINT_ENTRIES, _spTransformConstraintTimeline_apply); } void spTransformConstraintTimeline_setFrame (spTransformConstraintTimeline* self, int frameIndex, float time, float rotateMix, float translateMix, float scaleMix, float shearMix) { - frameIndex *= 5; + frameIndex *= TRANSFORMCONSTRAINT_ENTRIES; self->frames[frameIndex] = time; - self->frames[frameIndex + 1] = rotateMix; - self->frames[frameIndex + 2] = translateMix; - self->frames[frameIndex + 3] = scaleMix; - self->frames[frameIndex + 4] = shearMix; + self->frames[frameIndex + TRANSFORMCONSTRAINT_ROTATE] = rotateMix; + self->frames[frameIndex + TRANSFORMCONSTRAINT_TRANSLATE] = translateMix; + self->frames[frameIndex + TRANSFORMCONSTRAINT_SCALE] = scaleMix; + self->frames[frameIndex + TRANSFORMCONSTRAINT_SHEAR] = shearMix; +} + +/**/ + +static const int PATHCONSTRAINTPOSITION_PREV_TIME = -2; +static const int PATHCONSTRAINTPOSITION_PREV_VALUE = -1; +static const int PATHCONSTRAINTPOSITION_VALUE = 1; + +void _spPathConstraintPositionTimeline_apply(const spTimeline* timeline, spSkeleton* skeleton, float lastTime, float time, + spEvent** firedEvents, int* eventsCount, float alpha) { + int frame; + float frameTime, percent, position; + spPathConstraint* constraint; + spPathConstraintPositionTimeline* self = (spPathConstraintPositionTimeline*)timeline; + + if (time < self->frames[0]) return; /* Time is before first frame. */ + + constraint = skeleton->pathConstraints[self->pathConstraintIndex]; + + if (time >= self->frames[self->framesCount - PATHCONSTRAINTPOSITION_ENTRIES]) { /* Time is after last frame. */ + int len = self->framesCount; + constraint->position += (self->frames[len + PATHCONSTRAINTPOSITION_PREV_VALUE] - constraint->position) * alpha; + return; + } + + /* Interpolate between the previous frame and the current frame. */ + frame = binarySearch(self->frames, self->framesCount, time, PATHCONSTRAINTPOSITION_ENTRIES); + position = self->frames[frame + PATHCONSTRAINTPOSITION_PREV_VALUE]; + frameTime = self->frames[frame]; + percent = spCurveTimeline_getCurvePercent(SUPER(self), frame / PATHCONSTRAINTPOSITION_ENTRIES - 1, 1 - (time - frameTime) / (self->frames[frame + PATHCONSTRAINTPOSITION_PREV_TIME] - frameTime)); + + constraint->position += (position + (self->frames[frame + PATHCONSTRAINTPOSITION_VALUE] - position) * percent - constraint->position) * alpha; + + UNUSED(lastTime); + UNUSED(firedEvents); + UNUSED(eventsCount); +} + +spPathConstraintPositionTimeline* spPathConstraintPositionTimeline_create (int framesCount) { + return (spPathConstraintPositionTimeline*)_spBaseTimeline_create(framesCount, SP_TIMELINE_PATHCONSTRAINTPOSITION, PATHCONSTRAINTPOSITION_ENTRIES, _spPathConstraintPositionTimeline_apply); +} + +void spPathConstraintPositionTimeline_setFrame (spPathConstraintPositionTimeline* self, int frameIndex, float time, float value) { + frameIndex *= PATHCONSTRAINTPOSITION_ENTRIES; + self->frames[frameIndex] = time; + self->frames[frameIndex + PATHCONSTRAINTPOSITION_VALUE] = value; +} + +/**/ +static const int PATHCONSTRAINTSPACING_PREV_TIME = -2; +static const int PATHCONSTRAINTSPACING_PREV_VALUE = -1; +static const int PATHCONSTRAINTSPACING_VALUE = 1; + +void _spPathConstraintSpacingTimeline_apply(const spTimeline* timeline, spSkeleton* skeleton, float lastTime, float time, + spEvent** firedEvents, int* eventsCount, float alpha) { + int frame; + float frameTime, percent, spacing; + spPathConstraint* constraint; + spPathConstraintSpacingTimeline* self = (spPathConstraintSpacingTimeline*)timeline; + + if (time < self->frames[0]) return; /* Time is before first frame. */ + + constraint = skeleton->pathConstraints[self->pathConstraintIndex]; + + if (time >= self->frames[self->framesCount - PATHCONSTRAINTSPACING_ENTRIES]) { /* Time is after last frame. */ + int len = self->framesCount; + constraint->spacing += (self->frames[len + PATHCONSTRAINTSPACING_PREV_VALUE] - constraint->spacing) * alpha; + return; + } + + /* Interpolate between the previous frame and the current frame. */ + frame = binarySearch(self->frames, self->framesCount, time, PATHCONSTRAINTSPACING_ENTRIES); + spacing = self->frames[frame + PATHCONSTRAINTSPACING_PREV_VALUE]; + frameTime = self->frames[frame]; + percent = spCurveTimeline_getCurvePercent(SUPER(self), frame / PATHCONSTRAINTSPACING_ENTRIES - 1, 1 - (time - frameTime) / (self->frames[frame + PATHCONSTRAINTSPACING_PREV_TIME] - frameTime)); + + constraint->spacing += (spacing + (self->frames[frame + PATHCONSTRAINTSPACING_VALUE] - spacing) * percent - constraint->spacing) * alpha; + + UNUSED(lastTime); + UNUSED(firedEvents); + UNUSED(eventsCount); +} + +spPathConstraintSpacingTimeline* spPathConstraintSpacingTimeline_create (int framesCount) { + return (spPathConstraintSpacingTimeline*)_spBaseTimeline_create(framesCount, SP_TIMELINE_PATHCONSTRAINTSPACING, PATHCONSTRAINTSPACING_ENTRIES, _spPathConstraintSpacingTimeline_apply); +} + +void spPathConstraintSpacingTimeline_setFrame (spPathConstraintSpacingTimeline* self, int frameIndex, float time, float value) { + frameIndex *= PATHCONSTRAINTSPACING_ENTRIES; + self->frames[frameIndex] = time; + self->frames[frameIndex + PATHCONSTRAINTSPACING_VALUE] = value; +} + +/**/ + +static const int PATHCONSTRAINTMIX_PREV_TIME = -3; +static const int PATHCONSTRAINTMIX_PREV_ROTATE = -2; +static const int PATHCONSTRAINTMIX_PREV_TRANSLATE = -1; +static const int PATHCONSTRAINTMIX_ROTATE = 1; +static const int PATHCONSTRAINTMIX_TRANSLATE = 2; + +void _spPathConstraintMixTimeline_apply(const spTimeline* timeline, spSkeleton* skeleton, float lastTime, float time, + spEvent** firedEvents, int* eventsCount, float alpha) { + int frame; + float frameTime, percent, rotate, translate; + spPathConstraint* constraint; + spPathConstraintMixTimeline* self = (spPathConstraintMixTimeline*)timeline; + + if (time < self->frames[0]) return; /* Time is before first frame. */ + + constraint = skeleton->pathConstraints[self->pathConstraintIndex]; + + if (time >= self->frames[self->framesCount - PATHCONSTRAINTMIX_ENTRIES]) { /* Time is after last frame. */ + int len = self->framesCount; + constraint->rotateMix += (self->frames[len + PATHCONSTRAINTMIX_PREV_ROTATE] - constraint->rotateMix) * alpha; + constraint->translateMix += (self->frames[len + PATHCONSTRAINTMIX_PREV_TRANSLATE] - constraint->translateMix) * alpha; + return; + } + + /* Interpolate between the previous frame and the current frame. */ + frame = binarySearch(self->frames, self->framesCount, time, PATHCONSTRAINTMIX_ENTRIES); + rotate = self->frames[frame + PATHCONSTRAINTMIX_PREV_ROTATE]; + translate = self->frames[frame + PATHCONSTRAINTMIX_PREV_TRANSLATE]; + frameTime = self->frames[frame]; + percent = spCurveTimeline_getCurvePercent(SUPER(self), frame / PATHCONSTRAINTMIX_ENTRIES - 1, 1 - (time - frameTime) / (self->frames[frame + PATHCONSTRAINTMIX_PREV_TIME] - frameTime)); + + constraint->rotateMix += (rotate + (self->frames[frame + PATHCONSTRAINTMIX_ROTATE] - rotate) * percent - constraint->rotateMix) * alpha; + constraint->translateMix += (translate + (self->frames[frame + PATHCONSTRAINTMIX_TRANSLATE] - translate) * percent - constraint->translateMix) * alpha; + + UNUSED(lastTime); + UNUSED(firedEvents); + UNUSED(eventsCount); +} + +spPathConstraintMixTimeline* spPathConstraintMixTimeline_create (int framesCount) { + return (spPathConstraintMixTimeline*)_spBaseTimeline_create(framesCount, SP_TIMELINE_PATHCONSTRAINTMIX, PATHCONSTRAINTMIX_ENTRIES, _spPathConstraintMixTimeline_apply); +} + +void spPathConstraintMixTimeline_setFrame (spPathConstraintMixTimeline* self, int frameIndex, float time, float rotateMix, float translateMix) { + frameIndex *= PATHCONSTRAINTMIX_ENTRIES; + self->frames[frameIndex] = time; + self->frames[frameIndex + PATHCONSTRAINTMIX_ROTATE] = rotateMix; + self->frames[frameIndex + PATHCONSTRAINTMIX_TRANSLATE] = translateMix; } diff --git a/spine-c/src/spine/AtlasAttachmentLoader.c b/spine-c/src/spine/AtlasAttachmentLoader.c index 2d6017071..3d240035e 100644 --- a/spine-c/src/spine/AtlasAttachmentLoader.c +++ b/spine-c/src/spine/AtlasAttachmentLoader.c @@ -75,33 +75,12 @@ spAttachment* _spAtlasAttachmentLoader_createAttachment (spAttachmentLoader* loa attachment->regionHeight = region->height; attachment->regionOriginalWidth = region->originalWidth; attachment->regionOriginalHeight = region->originalHeight; - return SUPER(attachment); - } - case SP_ATTACHMENT_WEIGHTED_MESH: - case SP_ATTACHMENT_WEIGHTED_LINKED_MESH: { - spWeightedMeshAttachment* attachment; - spAtlasRegion* region = spAtlas_findRegion(self->atlas, path); - if (!region) { - _spAttachmentLoader_setError(loader, "Region not found: ", path); - return 0; - } - attachment = spWeightedMeshAttachment_create(name); - attachment->rendererObject = region; - attachment->regionU = region->u; - attachment->regionV = region->v; - attachment->regionU2 = region->u2; - attachment->regionV2 = region->v2; - attachment->regionRotate = region->rotate; - attachment->regionOffsetX = region->offsetX; - attachment->regionOffsetY = region->offsetY; - attachment->regionWidth = region->width; - attachment->regionHeight = region->height; - attachment->regionOriginalWidth = region->originalWidth; - attachment->regionOriginalHeight = region->originalHeight; - return SUPER(attachment); + return SUPER(SUPER(attachment)); } case SP_ATTACHMENT_BOUNDING_BOX: - return SUPER(spBoundingBoxAttachment_create(name)); + return SUPER(SUPER(spBoundingBoxAttachment_create(name))); + case SP_ATTACHMENT_PATH: + return SUPER(SUPER(spPathAttachment_create(name))); default: _spAttachmentLoader_setUnknownTypeError(loader, type); return 0; diff --git a/spine-c/src/spine/Bone.c b/spine-c/src/spine/Bone.c index d37a9ad35..44159b654 100644 --- a/spine-c/src/spine/Bone.c +++ b/spine-c/src/spine/Bone.c @@ -52,6 +52,7 @@ spBone* spBone_create (spBoneData* data, spSkeleton* skeleton, spBone* parent) { } void spBone_dispose (spBone* self) { + FREE(self->children); FREE(self); } @@ -68,8 +69,6 @@ void spBone_updateWorldTransformWith (spBone* self, float x, float y, float rota spBone* parent = self->parent; CONST_CAST(float, self->appliedRotation) = rotation; - CONST_CAST(float, self->appliedScaleX) = scaleX; - CONST_CAST(float, self->appliedScaleY) = scaleY; if (!parent) { /* Root bone. */ if (self->skeleton->flipX) { @@ -117,10 +116,10 @@ void spBone_updateWorldTransformWith (spBone* self, float x, float y, float rota do { cosine = COS_DEG(parent->appliedRotation); sine = SIN_DEG(parent->appliedRotation); temp = pa * cosine + pb * sine; - pb = pa * -sine + pb * cosine; + pb = pb * cosine - pa * sine; pa = temp; temp = pc * cosine + pd * sine; - pd = pc * -sine + pd * cosine; + pd = pd * cosine - pc * sine; pc = temp; if (!parent->data->inheritRotation) break; @@ -137,25 +136,23 @@ void spBone_updateWorldTransformWith (spBone* self, float x, float y, float rota pd = 1; do { float za, zb, zc, zd; - float r = parent->appliedRotation; - float psx = parent->appliedScaleX; float psy = parent->appliedScaleY; - cosine = COS_DEG(r); sine = SIN_DEG(r); - za = cosine * psx; zb = -sine * psy; zc = sine * psx; zd = cosine * psy; + float psx = parent->scaleX, psy = parent->scaleY; + cosine = COS_DEG(parent->appliedRotation); + sine = SIN_DEG(parent->appliedRotation); + za = cosine * psx; zb = sine * psy; zc = sine * psx; zd = cosine * psy; temp = pa * za + pb * zc; - pb = pa * zb + pb * zd; + pb = pb * zd - pa * zb; pa = temp; temp = pc * za + pd * zc; - pd = pc * zb + pd * zd; + pd = pd * zd - pc * zb; pc = temp; - if (psx < 0) r = -r; - cosine = COS_DEG(-r); - sine = SIN_DEG(-r); + if (psx >= 0) sine = -sine; temp = pa * cosine + pb * sine; - pb = pa * -sine + pb * cosine; + pb = pb * cosine - pa * sine; pa = temp; temp = pc * cosine + pd * sine; - pd = pc * -sine + pd * cosine; + pd = pd * cosine - pc * sine; pc = temp; if (!parent->data->inheritScale) break; @@ -208,10 +205,78 @@ float spBone_getWorldScaleY (spBone* self) { return SQRT(self->c * self->c + self->d * self->d) * self->worldSignY; } +float spBone_worldToLocalRotationX (spBone* self) { + spBone* parent = self->parent; + if (!parent) return self->rotation; + return ATAN2(parent->a * self->c - parent->c * self->a, parent->d * self->a - parent->b * self->c) * RAD_DEG; +} + +float spBone_worldToLocalRotationY (spBone* self) { + spBone* parent = self->parent; + if (self->parent) return self->rotation; + return ATAN2(parent->a * self->d - parent->c * self->b, parent->d * self->b - parent->b * self->d) * RAD_DEG; +} + +void spBone_rotateWorld (spBone* self, float degrees) { + float a = self->a, b = self->b, c = self->c, d = self->d; + float cosine = COS_DEG(degrees), sine = SIN_DEG(degrees); + CONST_CAST(float, self->a) = cosine * a - sine * c; + CONST_CAST(float, self->b) = cosine * b - sine * d; + CONST_CAST(float, self->c) = sine * a + cosine * c; + CONST_CAST(float, self->d) = sine * b + cosine * d; +} + +/** Computes the local transform from the world transform. This can be useful to perform processing on the local transform + * after the world transform has been modified directly (eg, by a constraint). + *

+ * Some redundant information is lost by the world transform, such as -1,-1 scale versus 180 rotation. The computed local + * transform values may differ from the original values but are functionally the same. */ +void spBone_updateLocalTransform (spBone* self) { + spBone* parent = self->parent; + if (!parent) { + float det = self->a * self->d - self->b * self->c; + self->x = self->worldX; + self->y = self->worldY; + self->rotation = ATAN2(self->c, self->a) * RAD_DEG; + self->scaleX = SQRT(self->a * self->a + self->c * self->c); + self->scaleY = SQRT(self->b * self->b + self->d * self->d); + self->shearX = 0; + self->shearY = ATAN2(self->a * self->b + self->c * self->d, det) * RAD_DEG; + } else { + float pa = parent->a, pb = parent->b, pc = parent->c, pd = parent->d; + float pid = 1 / (pa * pd - pb * pc); + float dx = self->worldX - parent->worldX, dy = self->worldY - parent->worldY; + float ia = pid * pd; + float id = pid * pa; + float ib = pid * pb; + float ic = pid * pc; + float ra = ia * self->a - ib * self->c; + float rb = ia * self->b - ib * self->d; + float rc = id * self->c - ic * self->a; + float rd = id * self->d - ic * self->b; + self->x = (dx * pd * pid - dy * pb * pid); + self->y = (dy * pa * pid - dx * pc * pid); + self->shearX = 0; + self->scaleX = SQRT(ra * ra + rc * rc); + if (self->scaleX > 0.0001f) { + float det = ra * rd - rb * rc; + self->scaleY = det / self->scaleX; + self->shearY = ATAN2(ra * rb + rc * rd, det) * RAD_DEG; + self->rotation = ATAN2(rc, ra) * RAD_DEG; + } else { + self->scaleX = 0; + self->scaleY = SQRT(rb * rb + rd * rd); + self->shearY = 0; + self->rotation = 90 - ATAN2(rd, rb) * RAD_DEG; + } + self->appliedRotation = self->rotation; + } +} + void spBone_worldToLocal (spBone* self, float worldX, float worldY, float* localX, float* localY) { - float x = worldX - self->worldX, y = worldY - self->worldY; float a = self->a, b = self->b, c = self->c, d = self->d; float invDet = 1 / (a * d - b * c); + float x = worldX - self->worldX, y = worldY - self->worldY; *localX = (x * d * invDet - y * b * invDet); *localY = (y * a * invDet - x * c * invDet); } diff --git a/spine-c/src/spine/BoneData.c b/spine-c/src/spine/BoneData.c index 1d102f504..10df35eca 100644 --- a/spine-c/src/spine/BoneData.c +++ b/spine-c/src/spine/BoneData.c @@ -32,14 +32,15 @@ #include #include -spBoneData* spBoneData_create (const char* name, spBoneData* parent) { +spBoneData* spBoneData_create (int index, const char* name, spBoneData* parent) { spBoneData* self = NEW(spBoneData); + CONST_CAST(int, self->index) = index; MALLOC_STR(self->name, name); CONST_CAST(spBoneData*, self->parent) = parent; self->scaleX = 1; self->scaleY = 1; - self->inheritScale = 1; self->inheritRotation = 1; + self->inheritScale = 1; return self; } diff --git a/spine-c/src/spine/BoundingBoxAttachment.c b/spine-c/src/spine/BoundingBoxAttachment.c index 501b8ec1a..24166b349 100644 --- a/spine-c/src/spine/BoundingBoxAttachment.c +++ b/spine-c/src/spine/BoundingBoxAttachment.c @@ -35,27 +35,17 @@ void _spBoundingBoxAttachment_dispose (spAttachment* attachment) { spBoundingBoxAttachment* self = SUB_CAST(spBoundingBoxAttachment, attachment); - _spAttachment_deinit(attachment); + _spVertexAttachment_deinit(SUPER(self)); - FREE(self->vertices); FREE(self); } spBoundingBoxAttachment* spBoundingBoxAttachment_create (const char* name) { spBoundingBoxAttachment* self = NEW(spBoundingBoxAttachment); - _spAttachment_init(SUPER(self), name, SP_ATTACHMENT_BOUNDING_BOX, _spBoundingBoxAttachment_dispose); + _spAttachment_init(SUPER(SUPER(self)), name, SP_ATTACHMENT_BOUNDING_BOX, _spBoundingBoxAttachment_dispose); return self; } -void spBoundingBoxAttachment_computeWorldVertices (spBoundingBoxAttachment* self, spBone* bone, float* worldVertices) { - int i; - float px, py; - float* vertices = self->vertices; - float x = bone->skeleton->x + bone->worldX, y = bone->skeleton->y + bone->worldY; - for (i = 0; i < self->verticesCount; i += 2) { - px = vertices[i]; - py = vertices[i + 1]; - worldVertices[i] = px * bone->a + py * bone->b + x; - worldVertices[i + 1] = px * bone->c + py * bone->d + y; - } +void spBoundingBoxAttachment_computeWorldVertices (spBoundingBoxAttachment* self, spSlot* slot, float* worldVertices) { + spVertexAttachment_computeWorldVertices(SUPER(self), slot, worldVertices); } diff --git a/spine-c/src/spine/IkConstraint.c b/spine-c/src/spine/IkConstraint.c index 5c533c9a0..1430746ff 100644 --- a/spine-c/src/spine/IkConstraint.c +++ b/spine-c/src/spine/IkConstraint.c @@ -35,186 +35,177 @@ #include spIkConstraint *spIkConstraint_create(spIkConstraintData *data, const spSkeleton *skeleton) { - int i; + int i; - spIkConstraint *self = NEW(spIkConstraint); - CONST_CAST(spIkConstraintData*, self->data) = data; - self->bendDirection = data->bendDirection; - self->mix = data->mix; + spIkConstraint *self = NEW(spIkConstraint); + CONST_CAST(spIkConstraintData*, self->data) = data; + self->bendDirection = data->bendDirection; + self->mix = data->mix; - self->bonesCount = self->data->bonesCount; - self->bones = MALLOC(spBone*, self->bonesCount); - for (i = 0; i < self->bonesCount; ++i) - self->bones[i] = spSkeleton_findBone(skeleton, self->data->bones[i]->name); - self->target = spSkeleton_findBone(skeleton, self->data->target->name); + self->bonesCount = self->data->bonesCount; + self->bones = MALLOC(spBone*, self->bonesCount); + for (i = 0; i < self->bonesCount; ++i) + self->bones[i] = spSkeleton_findBone(skeleton, self->data->bones[i]->name); + self->target = spSkeleton_findBone(skeleton, self->data->target->name); - return self; + return self; } void spIkConstraint_dispose(spIkConstraint *self) { - FREE(self->bones); - FREE(self); + FREE(self->bones); + FREE(self); } void spIkConstraint_apply(spIkConstraint *self) { - switch (self->bonesCount) { - case 1: - spIkConstraint_apply1(self->bones[0], self->target->worldX, self->target->worldY, self->mix); - break; - case 2: - spIkConstraint_apply2(self->bones[0], self->bones[1], self->target->worldX, self->target->worldY, - self->bendDirection, - self->mix); - break; - } + switch (self->bonesCount) { + case 1: + spIkConstraint_apply1(self->bones[0], self->target->worldX, self->target->worldY, self->mix); + break; + case 2: + spIkConstraint_apply2(self->bones[0], self->bones[1], self->target->worldX, self->target->worldY, self->bendDirection, self->mix); + break; + } } -void spIkConstraint_apply1(spBone *bone, float targetX, float targetY, float alpha) { - spBone *pp = bone->parent; - float id = 1 / (pp->a * pp->d - pp->b * pp->c); - float x = targetX - pp->worldX, y = targetY - pp->worldY; - float tx = (x * pp->d - y * pp->b) * id - bone->x, ty = (y * pp->a - x * pp->c) * id - bone->y; - float rotationIK = ATAN2(ty, tx) * RAD_DEG - bone->shearX; - if (bone->scaleX < 0) rotationIK += 180; - if (rotationIK > 180) - rotationIK -= 360; - else if (rotationIK < -180) rotationIK += 360; - spBone_updateWorldTransformWith(bone, bone->x, bone->y, bone->rotation + (rotationIK - bone->rotation) * alpha, - bone->appliedScaleX, - bone->appliedScaleY, bone->shearX, bone->shearY); +void spIkConstraint_apply1 (spBone* bone, float targetX, float targetY, float alpha) { + spBone* pp = bone->parent; + float id = 1 / (pp->a * pp->d - pp->b * pp->c); + float x = targetX - pp->worldX, y = targetY - pp->worldY; + float tx = (x * pp->d - y * pp->b) * id - bone->x, ty = (y * pp->a - x * pp->c) * id - bone->y; + float rotationIK = ATAN2(ty, tx) * RAD_DEG - bone->shearX - bone->rotation; + if (bone->scaleX < 0) rotationIK += 180; + if (rotationIK > 180) rotationIK -= 360; + else if (rotationIK < -180) rotationIK += 360; + spBone_updateWorldTransformWith(bone, bone->x, bone->y, bone->rotation + rotationIK * alpha, bone->scaleX, + bone->scaleY, bone->shearX, bone->shearY); } -void spIkConstraint_apply2(spBone *parent, spBone *child, float targetX, float targetY, int bendDir, float alpha) { - float px = parent->x, py = parent->y, psx = parent->appliedScaleX, psy = parent->appliedScaleY; - int os1, os2, s2; - float cx, cy, csx; - int u; - spBone *pp; - float ppa, ppb, ppc, ppd, id; - float x, y; - float tx, ty; - float dx, dy; - float l1, l2, a1, a2; - float os; - float rotation; - - if (alpha == 0) return; - if (psx < 0) { - psx = -psx; - os1 = 180; - s2 = -1; - } else { - os1 = 0; - s2 = 1; - } - if (psy < 0) { - psy = -psy; - s2 = -s2; - } - cx = child->x; cy = child->y; csx = child->appliedScaleX; - u = ABS(psx - psy) <= 0.0001f; - if (!u && cy != 0) { - CONST_CAST(float, child->worldX) = parent->a * cx + parent->worldX; - CONST_CAST(float, child->worldY) = parent->c * cx + parent->worldY; - cy = 0; - } - if (csx < 0) { - csx = -csx; - os2 = 180; - } else - os2 = 0; - pp = parent->parent; - ppa = pp->a; ppb = pp->b; ppc = pp->c; ppd = pp->d; id = 1 / (ppa * ppd - ppb * ppc); - x = targetX - pp->worldX; y = targetY - pp->worldY; - tx = (x * ppd - y * ppb) * id - px; ty = (y * ppa - x * ppc) * id - py; - x = child->worldX - pp->worldX; - y = child->worldY - pp->worldY; - dx = (x * ppd - y * ppb) * id - px; dy = (y * ppa - x * ppc) * id - py; - l1 = SQRT(dx * dx + dy * dy); l2 = child->data->length * csx; - outer: - if (u) { - float cosine, a, o; - l2 *= psx; - cosine = (tx * tx + ty * ty - l1 * l1 - l2 * l2) / (2 * l1 * l2); - if (cosine < -1) - cosine = -1; - else if (cosine > 1) cosine = 1; - a2 = ACOS(cosine) * bendDir; - a = l1 + l2 * cosine, o = l2 * SIN(a2); - a1 = ATAN2(ty * a - tx * o, tx * a + ty * o); - } else { - float minAngle, minDist, minX, minY, maxAngle, maxDist, maxX, maxY, angle; - float a = psx * l2, b = psy * l2, ta = 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 = SQRT(d), r0, r, r1; - if (c1 < 0) q = -q; - q = -(c1 + q) / 2; - r0 = q / c2; r1 = c0 / q; - r = ABS(r0) < ABS(r1) ? r0 : r1; - if (r * r <= dd) { - y = SQRT(dd - r * r) * bendDir; - a1 = ta - ATAN2(y, r); - a2 = ATAN2(y / psy, (r - l1) / psx); - goto outer; - } - } - minAngle = 0; minDist = FLT_MAX; minX = 0; minY = 0; - maxAngle = 0; maxDist = 0; maxX = 0; maxY = 0; - x = l1 + a; - d = x * x; - if (d > maxDist) { - maxAngle = 0; - maxDist = d; - maxX = x; - } - x = l1 - a; - d = x * x; - if (d < minDist) { - minAngle = PI; - minDist = d; - minX = x; - } - angle = ACOS(-a * l1 / (aa - bb)); - x = a * COS(angle) + l1; - y = b * SIN(angle); - d = x * x + y * y; - if (d < minDist) { - minAngle = angle; - minDist = d; - minX = x; - minY = y; - } - if (d > maxDist) { - maxAngle = angle; - maxDist = d; - maxX = x; - maxY = y; - } - if (dd <= (minDist + maxDist) / 2) { - a1 = ta - ATAN2(minY * bendDir, minX); - a2 = minAngle * bendDir; - } else { - a1 = ta - ATAN2(maxY * bendDir, maxX); - a2 = maxAngle * bendDir; - } - } - os = ATAN2(cy, cx) * s2; - a1 = (a1 - os) * RAD_DEG + os1; - a2 = ((a2 + os) * RAD_DEG - child->shearX) * s2 + os2; - if (a1 > 180) - a1 -= 360; - else if (a1 < -180) a1 += 360; - if (a2 > 180) - a2 -= 360; - else if (a2 < -180) a2 += 360; - - rotation = parent->rotation; - spBone_updateWorldTransformWith(parent, px, py, rotation + (a1 - rotation) * alpha, parent->appliedScaleX, - parent->appliedScaleY, 0, 0); - rotation = child->rotation; - spBone_updateWorldTransformWith(child, cx, cy, rotation + (a2 - rotation) * alpha, child->appliedScaleX, - child->appliedScaleY, child->shearX, child->shearY); +void spIkConstraint_apply2 (spBone* parent, spBone* child, float targetX, float targetY, int bendDir, float alpha) { + float px = parent->x, py = parent->y, psx = parent->scaleX, psy = parent->scaleY; + float cx = child->x, cy, csx = child->scaleX, cwx, cwy; + int o1, o2, s2, u; + spBone* pp = parent->parent; + float tx, ty, dx, dy, l1, l2, a1, a2, r; + float id, x, y; + if (alpha == 0) { + spBone_updateWorldTransform(child); + return; + } + if (psx < 0) { + psx = -psx; + o1 = 180; + s2 = -1; + } else { + o1 = 0; + s2 = 1; + } + if (psy < 0) { + psy = -psy; + s2 = -s2; + } + if (csx < 0) { + csx = -csx; + o2 = 180; + } else + o2 = 0; + r = psx - psy; + u = (r < 0 ? -r : r) <= 0.0001f; + if (!u) { + cy = 0; + cwx = parent->a * cx + parent->worldX; + cwy = parent->c * cx + parent->worldY; + } else { + cy = child->y; + cwx = parent->a * cx + parent->b * cy + parent->worldX; + cwy = parent->c * cx + parent->d * cy + parent->worldY; + } + id = 1 / (pp->a * pp->d - pp->b * pp->c); + x = targetX - pp->worldX; + y = targetY - pp->worldY; + tx = (x * pp->d - y * pp->b) * id - px; + ty = (y * pp->a - x * pp->c) * id - py; + x = cwx - pp->worldX; + y = cwy - pp->worldY; + dx = (x * pp->d - y * pp->b) * id - px; + dy = (y * pp->a - x * pp->c) * id - py; + l1 = SQRT(dx * dx + dy * dy); + l2 = child->data->length * csx; + if (u) { + float cosine, a, b; + l2 *= psx; + cosine = (tx * tx + ty * ty - l1 * l1 - l2 * l2) / (2 * l1 * l2); + if (cosine < -1) cosine = -1; + else if (cosine > 1) cosine = 1; + a2 = ACOS(cosine) * bendDir; + a = l1 + l2 * cosine; + b = l2 * SIN(a2); + a1 = ATAN2(ty * a - tx * b, tx * a + ty * b); + } else { + float a = psx * l2, b = psy * l2; + float aa = a * a, bb = b * b, ll = l1 * l1, dd = tx * tx + ty * ty, ta = ATAN2(ty, tx); + float c0 = bb * ll + aa * dd - aa * bb, c1 = -2 * bb * l1, c2 = bb - aa; + float d = c1 * c1 - 4 * c2 * c0; + float minAngle = 0, minDist = FLT_MAX, minX = 0, minY = 0; + float maxAngle = 0, maxDist = 0, maxX = 0, maxY = 0; + float x = l1 + a, dist = x * x, angle, y; + if (d >= 0) { + float q = SQRT(d), r0, r1; + if (c1 < 0) q = -q; + q = -(c1 + q) / 2; + r0 = q / c2; r1 = c0 / q; + r = ABS(r0) < ABS(r1) ? r0 : r1; + if (r * r <= dd) { + y = SQRT(dd - r * r) * bendDir; + a1 = ta - ATAN2(y, r); + a2 = ATAN2(y / psy, (r - l1) / psx); + goto outer; + } + } + if (dist > maxDist) { + maxAngle = 0; + maxDist = dist; + maxX = x; + } + x = l1 - a; + dist = x * x; + if (dist < minDist) { + minAngle = PI; + minDist = dist; + minX = x; + } + angle = ACOS(-a * l1 / (aa - bb)); + x = a * COS(angle) + l1; + y = b * 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 - ATAN2(minY * bendDir, minX); + a2 = minAngle * bendDir; + } else { + a1 = ta - ATAN2(maxY * bendDir, maxX); + a2 = maxAngle * bendDir; + } + } + outer: { + float os = ATAN2(cy, cx) * s2; + a1 = (a1 - os) * RAD_DEG + o1 - parent->rotation; + if (a1 > 180) a1 -= 360; + else if (a1 < -180) a1 += 360; + spBone_updateWorldTransformWith(parent, px, py, parent->rotation + a1 * alpha, parent->scaleX, parent->scaleY, 0, 0); + a2 = ((a2 + os) * RAD_DEG - child->shearX) * s2 + o2 - child->rotation; + if (a2 > 180) a2 -= 360; + else if (a2 < -180) a2 += 360; + spBone_updateWorldTransformWith(child, cx, cy, child->rotation + a2 * alpha, child->scaleX, child->scaleY, child->shearX, child->shearY); + } } diff --git a/spine-c/src/spine/MeshAttachment.c b/spine-c/src/spine/MeshAttachment.c index 32cb6b914..2be48581b 100644 --- a/spine-c/src/spine/MeshAttachment.c +++ b/spine-c/src/spine/MeshAttachment.c @@ -34,15 +34,15 @@ void _spMeshAttachment_dispose (spAttachment* attachment) { spMeshAttachment* self = SUB_CAST(spMeshAttachment, attachment); - _spAttachment_deinit(attachment); FREE(self->path); FREE(self->uvs); if (!self->parentMesh) { - FREE(self->vertices); + _spVertexAttachment_deinit(SUPER(self)); FREE(self->regionUVs); FREE(self->triangles); FREE(self->edges); - } + } else + _spAttachment_deinit(attachment); FREE(self); } @@ -52,22 +52,23 @@ spMeshAttachment* spMeshAttachment_create (const char* name) { self->g = 1; self->b = 1; self->a = 1; - _spAttachment_init(SUPER(self), name, SP_ATTACHMENT_MESH, _spMeshAttachment_dispose); + _spAttachment_init(SUPER(SUPER(self)), name, SP_ATTACHMENT_MESH, _spMeshAttachment_dispose); return self; } void spMeshAttachment_updateUVs (spMeshAttachment* self) { int i; float width = self->regionU2 - self->regionU, height = self->regionV2 - self->regionV; + int verticesLength = SUPER(self)->worldVerticesLength; FREE(self->uvs); - self->uvs = MALLOC(float, self->verticesCount); + self->uvs = MALLOC(float, verticesLength); if (self->regionRotate) { - for (i = 0; i < self->verticesCount; i += 2) { + for (i = 0; i < verticesLength; i += 2) { self->uvs[i] = self->regionU + self->regionUVs[i + 1] * width; self->uvs[i + 1] = self->regionV + height - self->regionUVs[i] * height; } } else { - for (i = 0; i < self->verticesCount; i += 2) { + for (i = 0; i < verticesLength; i += 2) { self->uvs[i] = self->regionU + self->regionUVs[i] * width; self->uvs[i + 1] = self->regionV + self->regionUVs[i + 1] * height; } @@ -75,24 +76,21 @@ void spMeshAttachment_updateUVs (spMeshAttachment* self) { } void spMeshAttachment_computeWorldVertices (spMeshAttachment* self, spSlot* slot, float* worldVertices) { - int i; - float* vertices = self->vertices; - const spBone* bone = slot->bone; - float x = bone->skeleton->x + bone->worldX, y = bone->skeleton->y + bone->worldY; - if (slot->attachmentVerticesCount == self->verticesCount) vertices = slot->attachmentVertices; - for (i = 0; i < self->verticesCount; i += 2) { - const float vx = vertices[i], vy = vertices[i + 1]; - worldVertices[i] = vx * bone->a + vy * bone->b + x; - worldVertices[i + 1] = vx * bone->c + vy * bone->d + y; - } + spVertexAttachment_computeWorldVertices(SUPER(self), slot, worldVertices); } void spMeshAttachment_setParentMesh (spMeshAttachment* self, spMeshAttachment* parentMesh) { CONST_CAST(spMeshAttachment*, self->parentMesh) = parentMesh; if (parentMesh) { - self->vertices = parentMesh->vertices; + self->super.worldVerticesLength = parentMesh->super.worldVerticesLength; + + self->super.bones = parentMesh->super.bones; + self->super.bonesCount = parentMesh->super.bonesCount; + + self->super.vertices = parentMesh->super.vertices; + self->super.verticesCount = parentMesh->super.verticesCount; + self->regionUVs = parentMesh->regionUVs; - self->verticesCount = parentMesh->verticesCount; self->triangles = parentMesh->triangles; self->trianglesCount = parentMesh->trianglesCount; diff --git a/spine-c/src/spine/PathAttachment.c b/spine-c/src/spine/PathAttachment.c new file mode 100644 index 000000000..d51221789 --- /dev/null +++ b/spine-c/src/spine/PathAttachment.c @@ -0,0 +1,56 @@ +/****************************************************************************** + * 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. + *****************************************************************************/ + +#include +#include + +void _spPathAttachment_dispose (spAttachment* attachment) { + spPathAttachment* self = SUB_CAST(spPathAttachment, attachment); + + _spVertexAttachment_deinit(SUPER(self)); + + FREE(self->lengths); + FREE(self); +} + +spPathAttachment* spPathAttachment_create (const char* name) { + spPathAttachment* self = NEW(spPathAttachment); + _spAttachment_init(SUPER(SUPER(self)), name, SP_ATTACHMENT_PATH, _spPathAttachment_dispose); + return self; +} + +void spPathAttachment_computeWorldVertices (spPathAttachment* self, spSlot* slot, float* worldVertices) { + spVertexAttachment_computeWorldVertices(SUPER(self), slot, worldVertices); +} + +void spPathAttachment_computeWorldVertices1 (spPathAttachment* self, spSlot* slot, int start, int count, float* worldVertices, int offset) { + spVertexAttachment_computeWorldVertices1(SUPER(self), start, count, slot, worldVertices, offset); +} diff --git a/spine-c/src/spine/PathConstraint.c b/spine-c/src/spine/PathConstraint.c new file mode 100644 index 000000000..fc3d8fac4 --- /dev/null +++ b/spine-c/src/spine/PathConstraint.c @@ -0,0 +1,451 @@ +/****************************************************************************** + * 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. + *****************************************************************************/ + +#include +#include +#include + +#define PATHCONSTRAINT_NONE -1 +#define PATHCONSTRAINT_BEFORE -2 +#define PATHCONSTRAINT_AFTER -3 + +spPathConstraint* spPathConstraint_create (spPathConstraintData* data, const spSkeleton* skeleton) { + int i; + spPathConstraint *self = NEW(spPathConstraint); + CONST_CAST(spPathConstraintData*, self->data) = data; + self->bonesCount = data->bonesCount; + CONST_CAST(spBone**, self->bones) = MALLOC(spBone*, self->bonesCount); + for (i = 0; i < self->bonesCount; ++i) + self->bones[i] = spSkeleton_findBone(skeleton, self->data->bones[i]->name); + self->target = spSkeleton_findSlot(skeleton, self->data->target->name); + self->position = data->position; + self->spacing = data->spacing; + self->rotateMix = data->rotateMix; + self->translateMix = data->translateMix; + self->spacesCount = 0; + self->spaces = 0; + self->positionsCount = 0; + self->positions = 0; + self->worldCount = 0; + self->world = 0; + self->curvesCount = 0; + self->curves = 0; + self->lengthsCount = 0; + self->lengths = 0; + return self; +} + +void spPathConstraint_dispose (spPathConstraint* self) { + FREE(self->bones); + FREE(self->spaces); + if (self->positions) FREE(self->positions); + if (self->world) FREE(self->world); + if (self->curves) FREE(self->curves); + if (self->lengths) FREE(self->lengths); + FREE(self); +} + +void spPathConstraint_apply (spPathConstraint* self) { + int i, p, n; + float length, x, y, dx, dy, s; + float* spaces, *lengths, *positions; + float spacing; + spSkeleton* skeleton; + float skeletonX, skeletonY, boneX, boneY, offsetRotation; + int/*bool*/tip; + float rotateMix = self->rotateMix, translateMix = self->translateMix; + int/*bool*/ translate = translateMix > 0, rotate = rotateMix > 0; + spPathAttachment* attachment = (spPathAttachment*)self->target->attachment; + spPathConstraintData* data = self->data; + spSpacingMode spacingMode = data->spacingMode; + int lengthSpacing = spacingMode == SP_SPACING_MODE_LENGTH; + spRotateMode rotateMode = data->rotateMode; + int tangents = rotateMode == SP_ROTATE_MODE_TANGENT, scale = rotateMode == SP_ROTATE_MODE_CHAIN_SCALE; + int boneCount = self->bonesCount, spacesCount = tangents ? boneCount : boneCount + 1; + spBone** bones = self->bones; + + if (!translate && !rotate) return; + if ((attachment == 0) || (attachment->super.super.type != SP_ATTACHMENT_PATH)) return; + + if (self->spacesCount != spacesCount) { + if (self->spaces) FREE(self->spaces); + self->spaces = MALLOC(float, spacesCount); + self->spacesCount = spacesCount; + } + spaces = self->spaces; + lengths = 0; + spacing = self->spacing; + if (scale || lengthSpacing) { + if (scale) { + if (self->lengthsCount != boneCount) { + if (self->lengths) FREE(self->lengths); + self->lengths = MALLOC(float, boneCount); + self->lengthsCount = boneCount; + } + lengths = self->lengths; + } + for (i = 0, n = spacesCount - 1; i < n;) { + spBone* bone = bones[i]; + length = bone->data->length, x = length * bone->a, y = length * bone->c; + length = SQRT(x * x + y * y); + if (scale) lengths[i] = length; + spaces[++i] = lengthSpacing ? MAX(0, length + spacing) : spacing; + } + } else { + for (i = 1; i < spacesCount; i++) { + spaces[i] = spacing; + } + } + + positions = spPathConstraint_computeWorldPositions(self, attachment, spacesCount, tangents, + data->positionMode == SP_POSITION_MODE_PERCENT, spacingMode == SP_SPACING_MODE_PERCENT); + skeleton = self->target->bone->skeleton; + skeletonX = skeleton->x, skeletonY = skeleton->y; + boneX = positions[0], boneY = positions[1], offsetRotation = self->data->offsetRotation; + tip = rotateMode == SP_ROTATE_MODE_CHAIN_SCALE && offsetRotation == 0; + for (i = 0, p = 3; i < boneCount; i++, p += 3) { + spBone* bone = bones[i]; + CONST_CAST(float, bone->worldX) += (boneX - skeletonX - bone->worldX) * translateMix; + CONST_CAST(float, bone->worldY) += (boneY - skeletonY - bone->worldY) * translateMix; + x = positions[p], y = positions[p + 1], dx = x - boneX, dy = y - boneY; + if (scale) { + length = lengths[i]; + if (length != 0) { + s = (SQRT(dx * dx + dy * dy) / length - 1) * rotateMix + 1; + CONST_CAST(float, bone->a) *= s; + CONST_CAST(float, bone->c) *= s; + } + } + boneX = x; + boneY = y; + if (rotate) { + float a = bone->a, b = bone->b, c = bone->c, d = bone->d, r, cosine, sine; + if (tangents) + r = positions[p - 1]; + else if (spaces[i + 1] == 0) + r = positions[p + 2]; + else + r = ATAN2(dy, dx); + r -= ATAN2(c, a) - offsetRotation * DEG_RAD; + if (tip) { + cosine = COS(r); + sine = SIN(r); + length = bone->data->length; + boneX += (length * (cosine * a - sine * c) - dx) * rotateMix; + boneY += (length * (sine * a + cosine * c) - dy) * rotateMix; + } + if (r > PI) + r -= PI2; + else if (r < -PI) + r += PI2; + r *= rotateMix; + cosine = COS(r); + sine = SIN(r); + CONST_CAST(float, bone->a) = cosine * a - sine * c; + CONST_CAST(float, bone->b) = cosine * b - sine * d; + CONST_CAST(float, bone->c) = sine * a + cosine * c; + CONST_CAST(float, bone->d) = sine * b + cosine * d; + } + } +} + +static void _addBeforePosition(float p, float* temp, int i, float* out, int o) { + float x1 = temp[i], y1 = temp[i + 1], dx = temp[i + 2] - x1, dy = temp[i + 3] - y1, r = ATAN2(dy, dx); + out[o] = x1 + p * COS(r); + out[o + 1] = y1 + p * SIN(r); + out[o + 2] = r; +} + +static void _addAfterPosition (float p, float* temp, int i, float* out, int o) { + float x1 = temp[i + 2], y1 = temp[i + 3], dx = x1 - temp[i], dy = y1 - temp[i + 1], r = ATAN2(dy, dx); + out[o] = x1 + p * COS(r); + out[o + 1] = y1 + p * SIN(r); + out[o + 2] = r; +} + +static void _addCurvePosition (float p, float x1, float y1, float cx1, float cy1, float cx2, float cy2, float x2, float y2, + float* out, int o, int/*bool*/tangents) { + float tt, ttt, u, uu, uuu; + float ut, ut3, uut3, utt3; + float x, y; + if (p == 0) p = 0.0001f; + tt = p * p, ttt = tt * p, u = 1 - p, uu = u * u, uuu = uu * u; + ut = u * p, ut3 = ut * 3, uut3 = u * ut3, utt3 = ut3 * p; + x = x1 * uuu + cx1 * uut3 + cx2 * utt3 + x2 * ttt, y = y1 * uuu + cy1 * uut3 + cy2 * utt3 + y2 * ttt; + out[o] = x; + out[o + 1] = y; + if (tangents) out[o + 2] = ATAN2(y - (y1 * uu + cy1 * ut * 2 + cy2 * tt), x - (x1 * uu + cx1 * ut * 2 + cx2 * tt)); +} + +float* spPathConstraint_computeWorldPositions(spPathConstraint* self, spPathAttachment* path, int spacesCount, int/*bool*/ tangents, int/*bool*/percentPosition, int/**/percentSpacing) { + int i, o, w, curve, segment, /*bool*/closed, verticesLength, curveCount, prevCurve; + float* out, *curves, *segments; + float tmpx, tmpy, dddfx, dddfy, ddfx, ddfy, dfx, dfy, pathLength, curveLength, p; + float x1, y1, cx1, cy1, cx2, cy2, x2, y2; + spSlot* target = self->target; + float position = self->position; + float* spaces = self->spaces, *world = 0; + if (self->positionsCount != spacesCount * 3 + 2) { + if (self->positions) FREE(self->positions); + self->positions = MALLOC(float, spacesCount * 3 + 2); + self->positionsCount = spacesCount * 3 + 2; + } + out = self->positions; + closed = path->closed; + verticesLength = path->super.worldVerticesLength, curveCount = verticesLength / 6, prevCurve = PATHCONSTRAINT_NONE; + + if (!path->constantSpeed) { + float* lengths = path->lengths; + curveCount -= closed ? 1 : 2; + pathLength = lengths[curveCount]; + if (percentPosition) position *= pathLength; + if (percentSpacing) { + for (i = 0; i < spacesCount; i++) + spaces[i] *= pathLength; + } + if (self->worldCount != 8) { + if (self->world) FREE(self->world); + self->world = MALLOC(float, 8); + self->worldCount = 8; + } + world = self->world; + for (i = 0, o = 0, curve = 0; i < spacesCount; i++, o += 3) { + float space = spaces[i]; + position += space; + p = position; + + if (closed) { + p = FMOD(p, pathLength); + if (p < 0) p += pathLength; + curve = 0; + } else if (p < 0) { + if (prevCurve != PATHCONSTRAINT_BEFORE) { + prevCurve = PATHCONSTRAINT_BEFORE; + spPathAttachment_computeWorldVertices1(path, target, 2, 4, world, 0); + } + _addBeforePosition(p, world, 0, out, o); + continue; + } else if (p > pathLength) { + if (prevCurve != PATHCONSTRAINT_AFTER) { + prevCurve = PATHCONSTRAINT_AFTER; + spPathAttachment_computeWorldVertices1(path, target, verticesLength - 6, 4, world, 0); + } + _addAfterPosition(p - pathLength, world, 0, out, o); + continue; + } + + /* Determine curve containing position. */ + for (;; curve++) { + float length = lengths[curve]; + if (p > length) continue; + if (curve == 0) + p /= length; + else { + float prev = lengths[curve - 1]; + p = (p - prev) / (length - prev); + } + break; + } + if (curve != prevCurve) { + prevCurve = curve; + if (closed && curve == curveCount) { + spPathAttachment_computeWorldVertices1(path, target, verticesLength - 4, 4, world, 0); + spPathAttachment_computeWorldVertices1(path, target, 0, 4, world, 4); + } else + spPathAttachment_computeWorldVertices1(path, target, curve * 6 + 2, 8, world, 0); + } + _addCurvePosition(p, world[0], world[1], world[2], world[3], world[4], world[5], world[6], world[7], out, o, + tangents || (i > 0 && space == 0)); + } + return out; + } + + /* World vertices. */ + if (closed) { + verticesLength += 2; + if (self->worldCount != verticesLength) { + if (self->world) FREE(self->world); + self->world = MALLOC(float, verticesLength); + self->worldCount = verticesLength; + } + world = self->world; + spPathAttachment_computeWorldVertices1(path, target, 2, verticesLength - 4, world, 0); + spPathAttachment_computeWorldVertices1(path, target, 0, 2, world, verticesLength - 4); + world[verticesLength - 2] = world[0]; + world[verticesLength - 1] = world[1]; + } else { + curveCount--; + verticesLength -= 4; + if (self->worldCount != verticesLength) { + if (self->world) FREE(self->world); + self->world = MALLOC(float, verticesLength); + self->worldCount = verticesLength; + } + spPathAttachment_computeWorldVertices1(path, target, 2, verticesLength, world, 0); + } + + /* Curve lengths. */ + if (self->curvesCount != curveCount) { + if (self->curves) FREE(self->curves); + self->curves = MALLOC(float, curveCount); + self->curvesCount = curveCount; + } + curves = self->curves; + pathLength = 0; + x1 = world[0], y1 = world[1], cx1 = 0, cy1 = 0, cx2 = 0, cy2 = 0, x2 = 0, y2 = 0; + for (i = 0, w = 2; i < curveCount; i++, w += 6) { + cx1 = world[w]; + cy1 = world[w + 1]; + cx2 = world[w + 2]; + cy2 = world[w + 3]; + x2 = world[w + 4]; + y2 = world[w + 5]; + tmpx = (x1 - cx1 * 2 + cx2) * 0.1875f; + tmpy = (y1 - cy1 * 2 + cy2) * 0.1875f; + dddfx = ((cx1 - cx2) * 3 - x1 + x2) * 0.09375f; + dddfy = ((cy1 - cy2) * 3 - y1 + y2) * 0.09375f; + ddfx = tmpx * 2 + dddfx; + ddfy = tmpy * 2 + dddfy; + dfx = (cx1 - x1) * 0.75f + tmpx + dddfx * 0.16666667f; + dfy = (cy1 - y1) * 0.75f + tmpy + dddfy * 0.16666667f; + pathLength += SQRT(dfx * dfx + dfy * dfy); + dfx += ddfx; + dfy += ddfy; + ddfx += dddfx; + ddfy += dddfy; + pathLength += SQRT(dfx * dfx + dfy * dfy); + dfx += ddfx; + dfy += ddfy; + pathLength += SQRT(dfx * dfx + dfy * dfy); + dfx += ddfx + dddfx; + dfy += ddfy + dddfy; + pathLength += SQRT(dfx * dfx + dfy * dfy); + curves[i] = pathLength; + x1 = x2; + y1 = y2; + } + if (percentPosition) position *= pathLength; + if (percentSpacing) { + for (i = 0; i < spacesCount; i++) + spaces[i] *= pathLength; + } + + segments = self->segments; + curveLength = 0; + for (i = 0, o = 0, curve = 0, segment = 0; i < spacesCount; i++, o += 3) { + float space = spaces[i]; + position += space; + p = position; + + if (closed) { + p = FMOD(p, pathLength); + if (p < 0) p += pathLength; + curve = 0; + } else if (p < 0) { + _addBeforePosition(p, world, 0, out, o); + continue; + } else if (p > pathLength) { + _addAfterPosition(p - pathLength, world, verticesLength - 4, out, o); + continue; + } + + /* Determine curve containing position. */ + for (;; curve++) { + float length = curves[curve]; + if (p > length) continue; + if (curve == 0) + p /= length; + else { + float prev = curves[curve - 1]; + p = (p - prev) / (length - prev); + } + break; + } + + /* Curve segment lengths. */ + if (curve != prevCurve) { + int ii; + prevCurve = curve; + ii = curve * 6; + x1 = world[ii]; + y1 = world[ii + 1]; + cx1 = world[ii + 2]; + cy1 = world[ii + 3]; + cx2 = world[ii + 4]; + cy2 = world[ii + 5]; + x2 = world[ii + 6]; + y2 = world[ii + 7]; + tmpx = (x1 - cx1 * 2 + cx2) * 0.03f; + tmpy = (y1 - cy1 * 2 + cy2) * 0.03f; + dddfx = ((cx1 - cx2) * 3 - x1 + x2) * 0.006f; + dddfy = ((cy1 - cy2) * 3 - y1 + y2) * 0.006f; + ddfx = tmpx * 2 + dddfx; + ddfy = tmpy * 2 + dddfy; + dfx = (cx1 - x1) * 0.3f + tmpx + dddfx * 0.16666667f; + dfy = (cy1 - y1) * 0.3f + tmpy + dddfy * 0.16666667f; + curveLength = SQRT(dfx * dfx + dfy * dfy); + segments[0] = curveLength; + for (ii = 1; ii < 8; ii++) { + dfx += ddfx; + dfy += ddfy; + ddfx += dddfx; + ddfy += dddfy; + curveLength += SQRT(dfx * dfx + dfy * dfy); + segments[ii] = curveLength; + } + dfx += ddfx; + dfy += ddfy; + curveLength += SQRT(dfx * dfx + dfy * dfy); + segments[8] = curveLength; + dfx += ddfx + dddfx; + dfy += ddfy + dddfy; + curveLength += SQRT(dfx * dfx + dfy * dfy); + segments[9] = curveLength; + segment = 0; + } + + /* Weight by segment length. */ + p *= curveLength; + for (;; segment++) { + float length = segments[segment]; + if (p > length) continue; + if (segment == 0) + p /= length; + else { + float prev = segments[segment - 1]; + p = segment + (p - prev) / (length - prev); + } + break; + } + _addCurvePosition(p * 0.1f, x1, y1, cx1, cy1, cx2, cy2, x2, y2, out, o, tangents || (i > 0 && space == 0)); + } + return out; +} diff --git a/spine-c/src/spine/PathConstraintData.c b/spine-c/src/spine/PathConstraintData.c new file mode 100644 index 000000000..ffd816796 --- /dev/null +++ b/spine-c/src/spine/PathConstraintData.c @@ -0,0 +1,45 @@ +/****************************************************************************** + * 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. + *****************************************************************************/ + +#include +#include + +spPathConstraintData* spPathConstraintData_create (const char* name) { + spPathConstraintData* self = NEW(spPathConstraintData); + MALLOC_STR(self->name, name); + return self; +} + +void spPathConstraintData_dispose (spPathConstraintData* self) { + FREE(self->name); + FREE(self->bones); + FREE(self); +} diff --git a/spine-c/src/spine/Skeleton.c b/spine-c/src/spine/Skeleton.c index 2c6807eb0..45f7ba5f0 100644 --- a/spine-c/src/spine/Skeleton.c +++ b/spine-c/src/spine/Skeleton.c @@ -30,11 +30,13 @@ *****************************************************************************/ #include +#include #include #include +#include typedef enum { - SP_UPDATE_BONE, SP_UPDATE_IK_CONSTRAINT, SP_UPDATE_TRANSFORM_CONSTRAINT + SP_UPDATE_BONE, SP_UPDATE_IK_CONSTRAINT, SP_UPDATE_PATH_CONSTRAINT, SP_UPDATE_TRANSFORM_CONSTRAINT } _spUpdateType; typedef struct { @@ -46,11 +48,13 @@ typedef struct { spSkeleton super; int updateCacheCount; + int updateCacheCapacity; _spUpdate* updateCache; } _spSkeleton; spSkeleton* spSkeleton_create (spSkeletonData* data) { - int i, ii; + int i; + int* childrenCounts; _spSkeleton* internal = NEW(_spSkeleton); spSkeleton* self = SUPER(internal); @@ -58,20 +62,30 @@ spSkeleton* spSkeleton_create (spSkeletonData* data) { self->bonesCount = self->data->bonesCount; self->bones = MALLOC(spBone*, self->bonesCount); + childrenCounts = CALLOC(int, self->bonesCount); for (i = 0; i < self->bonesCount; ++i) { spBoneData* boneData = self->data->bones[i]; - spBone* parent = 0; - if (boneData->parent) { - /* Find parent bone. */ - for (ii = 0; ii < self->bonesCount; ++ii) { - if (data->bones[ii] == boneData->parent) { - parent = self->bones[ii]; - break; - } - } + spBone* bone; + if (!boneData->parent) + bone = spBone_create(boneData, self, 0); + else { + spBone* parent = self->bones[boneData->parent->index]; + bone = spBone_create(boneData, self, parent); + ++childrenCounts[boneData->parent->index]; } - self->bones[i] = spBone_create(boneData, self, parent); + self->bones[i] = bone; + } + for (i = 0; i < self->bonesCount; ++i) { + spBoneData* boneData = self->data->bones[i]; + spBone* bone = self->bones[i]; + CONST_CAST(spBone**, bone->children) = MALLOC(spBone*, childrenCounts[boneData->index]); + } + for (i = 0; i < self->bonesCount; ++i) { + spBone* bone = self->bones[i]; + spBone* parent = bone->parent; + if (parent) + parent->children[parent->childrenCount++] = bone; } CONST_CAST(spBone*, self->root) = self->bones[0]; @@ -79,28 +93,16 @@ spSkeleton* spSkeleton_create (spSkeletonData* data) { self->slots = MALLOC(spSlot*, self->slotsCount); for (i = 0; i < self->slotsCount; ++i) { spSlotData *slotData = data->slots[i]; - - /* Find bone for the slotData's boneData. */ - spBone* bone = 0; - for (ii = 0; ii < self->bonesCount; ++ii) { - if (data->bones[ii] == slotData->boneData) { - bone = self->bones[ii]; - break; - } - } + spBone* bone = self->bones[slotData->boneData->index]; self->slots[i] = spSlot_create(slotData, bone); } self->drawOrder = MALLOC(spSlot*, self->slotsCount); memcpy(self->drawOrder, self->slots, sizeof(spSlot*) * self->slotsCount); - self->r = 1; - self->g = 1; - self->b = 1; - self->a = 1; - self->ikConstraintsCount = data->ikConstraintsCount; self->ikConstraints = MALLOC(spIkConstraint*, self->ikConstraintsCount); + self->ikConstraintsSorted = MALLOC(spIkConstraint*, self->ikConstraintsCount); for (i = 0; i < self->data->ikConstraintsCount; ++i) self->ikConstraints[i] = spIkConstraint_create(self->data->ikConstraints[i], self); @@ -109,8 +111,17 @@ spSkeleton* spSkeleton_create (spSkeletonData* data) { for (i = 0; i < self->data->transformConstraintsCount; ++i) self->transformConstraints[i] = spTransformConstraint_create(self->data->transformConstraints[i], self); + self->pathConstraintsCount = data->pathConstraintsCount; + self->pathConstraints = MALLOC(spPathConstraint*, self->pathConstraintsCount); + for (i = 0; i < self->data->pathConstraintsCount; i++) + self->pathConstraints[i] = spPathConstraint_create(self->data->pathConstraints[i], self); + + self->r = 1; self->g = 1; self->b = 1; self->a = 1; + spSkeleton_updateCache(self); + FREE(childrenCounts); + return self; } @@ -131,55 +142,184 @@ void spSkeleton_dispose (spSkeleton* self) { for (i = 0; i < self->ikConstraintsCount; ++i) spIkConstraint_dispose(self->ikConstraints[i]); FREE(self->ikConstraints); + FREE(self->ikConstraintsSorted); for (i = 0; i < self->transformConstraintsCount; ++i) spTransformConstraint_dispose(self->transformConstraints[i]); FREE(self->transformConstraints); + for (i = 0; i < self->pathConstraintsCount; i++) + spPathConstraint_dispose(self->pathConstraints[i]); + FREE(self->pathConstraints); + FREE(self->drawOrder); FREE(self); } -void spSkeleton_updateCache (const spSkeleton* self) { - int i, ii; +static void _addToUpdateCache(_spSkeleton* const internal, _spUpdateType type, void *object) { _spUpdate* update; + if (internal->updateCacheCount == internal->updateCacheCapacity) { + internal->updateCacheCapacity *= 2; + internal->updateCache = realloc(internal->updateCache, sizeof(_spUpdate) * internal->updateCacheCapacity); + } + update = internal->updateCache + internal->updateCacheCount; + update->type = type; + update->object = object; + ++internal->updateCacheCount; +} + +static void _sortBone(_spSkeleton* const internal, spBone* bone) { + if (bone->sorted) return; + if (bone->parent) _sortBone(internal, bone->parent); + bone->sorted = 1; + _addToUpdateCache(internal, SP_UPDATE_BONE, bone); +} + +static void _sortPathConstraintAttachmentBones(_spSkeleton* const internal, spAttachment* attachment, spBone* slotBone) { + spPathAttachment* pathAttachment = (spPathAttachment*)attachment; + int* pathBones; + int pathBonesCount; + if (pathAttachment->super.super.type != SP_ATTACHMENT_PATH) return; + pathBones = pathAttachment->super.bones; + pathBonesCount = pathAttachment->super.bonesCount; + if (pathBones == 0) + _sortBone(internal, slotBone); + else { + spBone** bones = internal->super.bones; + int i; + for (i = 0; i < pathBonesCount; i++) + _sortBone(internal, bones[pathBones[i]]); + } +} + +static void _sortPathConstraintAttachment(_spSkeleton* const internal, spSkin* skin, int slotIndex, spBone* slotBone) { + _Entry* entry = SUB_CAST(_spSkin, skin)->entries; + while (entry) { + if (entry->slotIndex == slotIndex) _sortPathConstraintAttachmentBones(internal, entry->attachment, slotBone); + entry = entry->next; + } +} + +static void _sortReset(spBone** bones, int bonesCount) { + int i; + for (i = 0; i < bonesCount; ++i) { + spBone* bone = bones[i]; + if (bone->sorted) _sortReset(bone->children, bone->childrenCount); + bone->sorted = 0; + } +} + +void spSkeleton_updateCache (spSkeleton* self) { + int i, ii, n, nn, level; + spBone** bones; + spIkConstraint** ikConstraints; + spPathConstraint** pathConstraints; + spTransformConstraint** transformConstraints; _spSkeleton* internal = SUB_CAST(_spSkeleton, self); - int capacity = self->bonesCount + self->transformConstraintsCount + self->ikConstraintsCount; + internal->updateCacheCapacity = self->bonesCount + self->ikConstraintsCount + self->transformConstraintsCount + self->pathConstraintsCount; FREE(internal->updateCache); - internal->updateCache = MALLOC(_spUpdate, capacity); + internal->updateCache = MALLOC(_spUpdate, internal->updateCacheCapacity); internal->updateCacheCount = 0; - for (i = 0; i < self->bonesCount; ++i) { - spBone* bone = self->bones[i]; - update = internal->updateCache + internal->updateCacheCount++; - update->type = SP_UPDATE_BONE; - update->object = bone; - for (ii = 0; ii < self->ikConstraintsCount; ++ii) { - spIkConstraint* ikConstraint = self->ikConstraints[ii]; - if (bone == ikConstraint->bones[ikConstraint->bonesCount - 1]) { - update = internal->updateCache + internal->updateCacheCount++; - update->type = SP_UPDATE_IK_CONSTRAINT; - update->object = ikConstraint; - break; - } + bones = self->bones; + for (i = 0; i < self->bonesCount; ++i) + bones[i]->sorted = 0; + + /* IK first, lowest hierarchy depth first. */ + if (self->ikConstraintsSorted) FREE(self->ikConstraintsSorted); + self->ikConstraintsSorted = MALLOC(spIkConstraint*, self->ikConstraintsCount); + ikConstraints = self->ikConstraintsSorted; + for (i = 0; i < self->ikConstraintsCount; ++i) + ikConstraints[i] = self->ikConstraints[i]; + for (i = 0; i < self->ikConstraintsCount; ++i) { + spIkConstraint* ik = ikConstraints[i]; + spBone* bone = ik->bones[0]->parent; + for (level = 0; bone; ++level) + bone = bone->parent; + ik->level = level; + } + for (i = 1; i < self->ikConstraintsCount; ++i) { + spIkConstraint* ik = ikConstraints[i]; + level = ik->level; + for (ii = i - 1; ii >= 0; --ii) { + spIkConstraint* other = ikConstraints[ii]; + if (other->level < level) break; + ikConstraints[ii + 1] = other; } + ikConstraints[ii + 1] = ik; + } + for (i = 0; i < self->ikConstraintsCount; ++i) { + spBone** constrained; + spBone* parent; + spIkConstraint* constraint = ikConstraints[i]; + spBone* target = constraint->target; + _sortBone(internal, target); + + constrained = constraint->bones; + parent = constrained[0]; + _sortBone(internal, parent); + + _addToUpdateCache(internal, SP_UPDATE_IK_CONSTRAINT, constraint); + + _sortReset(parent->children, parent->childrenCount); + constrained[constraint->bonesCount - 1]->sorted = 1; } - for (i = 0; i < self->transformConstraintsCount; ++i) { - spTransformConstraint* transformConstraint = self->transformConstraints[i]; - for (ii = internal->updateCacheCount - 1; ii >= 0; --ii) { - if (internal->updateCache[ii].object == transformConstraint->bone) { - int insertIndex = ii + 1; - update = internal->updateCache + insertIndex; - memmove(update + 1, update, (internal->updateCacheCount - insertIndex) * sizeof(_spUpdate)); - update->type = SP_UPDATE_TRANSFORM_CONSTRAINT; - update->object = transformConstraint; - internal->updateCacheCount++; - break; - } - } + pathConstraints = self->pathConstraints; + for (i = 0, n = self->pathConstraintsCount; i < n; i++) { + spAttachment* attachment; + spBone** constrained; + int boneCount; + spPathConstraint* constraint = pathConstraints[i]; + + spSlot* slot = constraint->target; + int slotIndex = slot->data->index; + spBone* slotBone = slot->bone; + if (self->skin) _sortPathConstraintAttachment(internal, self->skin, slotIndex, slotBone); + if (self->data->defaultSkin && self->data->defaultSkin != self->skin) + _sortPathConstraintAttachment(internal, self->data->defaultSkin, slotIndex, slotBone); + for (ii = 0, nn = self->data->skinsCount; ii < nn; ii++) + _sortPathConstraintAttachment(internal, self->data->skins[ii], slotIndex, slotBone); + + attachment = slot->attachment; + if (attachment->type == SP_ATTACHMENT_PATH) _sortPathConstraintAttachmentBones(internal, attachment, slotBone); + + constrained = constraint->bones; + boneCount = constraint->bonesCount; + for (ii = 0; ii < boneCount; ii++) + _sortBone(internal, constrained[ii]); + + _addToUpdateCache(internal, SP_UPDATE_PATH_CONSTRAINT, constraint); + + for (ii = 0; ii < boneCount; ii++) + _sortReset(constrained[ii]->children, constrained[ii]->childrenCount); + for (ii = 0; ii < boneCount; ii++) + constrained[ii]->sorted = 1; } + + transformConstraints = self->transformConstraints; + for (i = 0, n = self->transformConstraintsCount; i < n; ++i) { + spTransformConstraint* constraint = transformConstraints[i]; + spBone** constrained = constraint->bones; + + _sortBone(internal, constraint->target); + + for (ii = 0; ii < constraint->bonesCount; ++ii) + _sortBone(internal, constrained[ii]); + + _addToUpdateCache(internal, SP_UPDATE_TRANSFORM_CONSTRAINT, constraint); + + for (ii = 0; ii < constraint->bonesCount; ++ii) { + spBone* bone = constrained[ii]; + _sortReset(bone->children, bone->childrenCount); + } + for (ii = 0; ii < constraint->bonesCount; ++ii) + constrained[ii]->sorted = 1; + } + + for (i = 0; i < self->bonesCount; ++i) + _sortBone(internal, self->bones[i]); } void spSkeleton_updateWorldTransform (const spSkeleton* self) { @@ -198,6 +338,9 @@ void spSkeleton_updateWorldTransform (const spSkeleton* self) { case SP_UPDATE_TRANSFORM_CONSTRAINT: spTransformConstraint_apply((spTransformConstraint*)update->object); break; + case SP_UPDATE_PATH_CONSTRAINT: + spPathConstraint_apply((spPathConstraint*)update->object); + break; } } } @@ -226,6 +369,15 @@ void spSkeleton_setBonesToSetupPose (const spSkeleton* self) { constraint->scaleMix = data->scaleMix; constraint->shearMix = data->shearMix; } + + for (i = 0; i < self->pathConstraintsCount; ++i) { + spPathConstraint* constraint = self->pathConstraints[i]; + spPathConstraintData* data = constraint->data; + constraint->position = data->position; + constraint->spacing = data->spacing; + constraint->rotateMix = data->rotateMix; + constraint->translateMix = data->translateMix; + } } void spSkeleton_setSlotsToSetupPose (const spSkeleton* self) { @@ -344,6 +496,13 @@ spTransformConstraint* spSkeleton_findTransformConstraint (const spSkeleton* sel return 0; } +spPathConstraint* spSkeleton_findPathConstraint (const spSkeleton* self, const char* constraintName) { + int i; + for (i = 0; i < self->pathConstraintsCount; ++i) + if (strcmp(self->pathConstraints[i]->data->name, constraintName) == 0) return self->pathConstraints[i]; + return 0; +} + void spSkeleton_update (spSkeleton* self, float deltaTime) { self->time += deltaTime; } diff --git a/spine-c/src/spine/SkeletonBounds.c b/spine-c/src/spine/SkeletonBounds.c index faae30b92..22ba5f594 100644 --- a/spine-c/src/spine/SkeletonBounds.c +++ b/spine-c/src/spine/SkeletonBounds.c @@ -137,12 +137,12 @@ void spSkeletonBounds_update (spSkeletonBounds* self, spSkeleton* skeleton, int/ self->boundingBoxes[self->count] = boundingBox; polygon = self->polygons[self->count]; - if (!polygon || polygon->capacity < boundingBox->verticesCount) { + if (!polygon || polygon->capacity < boundingBox->super.worldVerticesLength) { if (polygon) spPolygon_dispose(polygon); - self->polygons[self->count] = polygon = spPolygon_create(boundingBox->verticesCount); + self->polygons[self->count] = polygon = spPolygon_create(boundingBox->super.worldVerticesLength); } - polygon->count = boundingBox->verticesCount; - spBoundingBoxAttachment_computeWorldVertices(boundingBox, slot->bone, polygon->vertices); + polygon->count = boundingBox->super.worldVerticesLength; + spBoundingBoxAttachment_computeWorldVertices(boundingBox, slot, polygon->vertices); if (updateAabb) { int ii = 0; diff --git a/spine-c/src/spine/SkeletonData.c b/spine-c/src/spine/SkeletonData.c index b042bafb9..a3e2fc7de 100644 --- a/spine-c/src/spine/SkeletonData.c +++ b/spine-c/src/spine/SkeletonData.c @@ -67,6 +67,10 @@ void spSkeletonData_dispose (spSkeletonData* self) { spTransformConstraintData_dispose(self->transformConstraints[i]); FREE(self->transformConstraints); + for (i = 0; i < self->pathConstraintsCount; i++) + spPathConstraintData_dispose(self->pathConstraints[i]); + FREE(self->pathConstraints); + FREE(self->hash); FREE(self->version); @@ -135,3 +139,10 @@ spTransformConstraintData* spSkeletonData_findTransformConstraint (const spSkele if (strcmp(self->transformConstraints[i]->name, constraintName) == 0) return self->transformConstraints[i]; return 0; } + +spPathConstraintData* spSkeletonData_findPathConstraint (const spSkeletonData* self, const char* constraintName) { + int i; + for (i = 0; i < self->pathConstraintsCount; ++i) + if (strcmp(self->pathConstraints[i]->name, constraintName) == 0) return self->pathConstraints[i]; + return 0; +} diff --git a/spine-c/src/spine/SkeletonJson.c b/spine-c/src/spine/SkeletonJson.c index 2537c66c6..2e0c0b8cd 100644 --- a/spine-c/src/spine/SkeletonJson.c +++ b/spine-c/src/spine/SkeletonJson.c @@ -35,12 +35,13 @@ #include "Json.h" #include #include +#include typedef struct { const char* parent; const char* skin; int slotIndex; - spAttachment* mesh; + spMeshAttachment* mesh; } _spLinkedMesh; typedef struct { @@ -101,7 +102,7 @@ static float toColor (const char* value, int index) { return color / (float)255; } -static void readCurve (spCurveTimeline* timeline, int frameIndex, Json* frame) { +static void readCurve (Json* frame, spCurveTimeline* timeline, int frameIndex) { Json* curve = Json_getItem(frame, "curve"); if (!curve) return; if (curve->type == Json_String && strcmp(curve->valueString, "stepped") == 0) @@ -116,7 +117,7 @@ static void readCurve (spCurveTimeline* timeline, int frameIndex, Json* frame) { } } -static void _spSkeletonJson_addLinkedMesh (spSkeletonJson* self, spAttachment* mesh, const char* skin, int slotIndex, +static void _spSkeletonJson_addLinkedMesh (spSkeletonJson* self, spMeshAttachment* mesh, const char* skin, int slotIndex, const char* parent) { _spLinkedMesh* linkedMesh; _spSkeletonJson* internal = SUB_CAST(_spSkeletonJson, self); @@ -139,20 +140,20 @@ static void _spSkeletonJson_addLinkedMesh (spSkeletonJson* self, spAttachment* m } static spAnimation* _spSkeletonJson_readAnimation (spSkeletonJson* self, Json* root, spSkeletonData *skeletonData) { - int i; + int frameIndex; spAnimation* animation; - Json* frame; - float duration; + Json* valueMap; int timelinesCount = 0; Json* bones = Json_getItem(root, "bones"); Json* slots = Json_getItem(root, "slots"); Json* ik = Json_getItem(root, "ik"); Json* transform = Json_getItem(root, "transform"); - Json* ffd = Json_getItem(root, "ffd"); + Json* paths = Json_getItem(root, "paths"); + Json* deform = Json_getItem(root, "deform"); Json* drawOrder = Json_getItem(root, "drawOrder"); Json* events = Json_getItem(root, "events"); - Json *boneMap, *slotMap, *constraintMap, *ffdMap; + Json *boneMap, *slotMap, *constraintMap; if (!drawOrder) drawOrder = Json_getItem(root, "draworder"); for (boneMap = bones ? bones->child : 0; boneMap; boneMap = boneMap->next) @@ -160,8 +161,10 @@ static spAnimation* _spSkeletonJson_readAnimation (spSkeletonJson* self, Json* r for (slotMap = slots ? slots->child : 0; slotMap; slotMap = slotMap->next) timelinesCount += slotMap->size; timelinesCount += ik ? ik->size : 0; - for (ffdMap = ffd ? ffd->child : 0; ffdMap; ffdMap = ffdMap->next) - for (slotMap = ffdMap->child; slotMap; slotMap = slotMap->next) + timelinesCount += transform ? transform->size : 0; + timelinesCount += paths ? paths->size : 0; + for (constraintMap = deform ? deform->child : 0; constraintMap; constraintMap = constraintMap->next) + for (slotMap = constraintMap->child; slotMap; slotMap = slotMap->next) timelinesCount += slotMap->size; if (drawOrder) ++timelinesCount; if (events) ++timelinesCount; @@ -171,7 +174,7 @@ static spAnimation* _spSkeletonJson_readAnimation (spSkeletonJson* self, Json* r /* Slot timelines. */ for (slotMap = slots ? slots->child : 0; slotMap; slotMap = slotMap->next) { - Json *timelineArray; + Json *timelineMap; int slotIndex = spSkeletonData_findSlotIndex(skeletonData, slotMap->name); if (slotIndex == -1) { @@ -180,35 +183,35 @@ static spAnimation* _spSkeletonJson_readAnimation (spSkeletonJson* self, Json* r return 0; } - for (timelineArray = slotMap->child; timelineArray; timelineArray = timelineArray->next) { - if (strcmp(timelineArray->name, "color") == 0) { - spColorTimeline *timeline = spColorTimeline_create(timelineArray->size); + for (timelineMap = slotMap->child; timelineMap; timelineMap = timelineMap->next) { + if (strcmp(timelineMap->name, "color") == 0) { + spColorTimeline *timeline = spColorTimeline_create(timelineMap->size); timeline->slotIndex = slotIndex; - for (frame = timelineArray->child, i = 0; frame; frame = frame->next, ++i) { - const char* s = Json_getString(frame, "color", 0); - spColorTimeline_setFrame(timeline, i, Json_getFloat(frame, "time", 0), toColor(s, 0), toColor(s, 1), toColor(s, 2), + + for (valueMap = timelineMap->child, frameIndex = 0; valueMap; valueMap = valueMap->next, ++frameIndex) { + const char* s = Json_getString(valueMap, "color", 0); + spColorTimeline_setFrame(timeline, frameIndex, Json_getFloat(valueMap, "time", 0), toColor(s, 0), toColor(s, 1), toColor(s, 2), toColor(s, 3)); - readCurve(SUPER(timeline), i, frame); + readCurve(valueMap, SUPER(timeline), frameIndex); } animation->timelines[animation->timelinesCount++] = SUPER_CAST(spTimeline, timeline); - duration = timeline->frames[timelineArray->size * 5 - 5]; - if (duration > animation->duration) animation->duration = duration; + animation->duration = MAX(animation->duration, timeline->frames[(timelineMap->size - 1) * COLOR_ENTRIES]); - } else if (strcmp(timelineArray->name, "attachment") == 0) { - spAttachmentTimeline *timeline = spAttachmentTimeline_create(timelineArray->size); + } else if (strcmp(timelineMap->name, "attachment") == 0) { + spAttachmentTimeline *timeline = spAttachmentTimeline_create(timelineMap->size); timeline->slotIndex = slotIndex; - for (frame = timelineArray->child, i = 0; frame; frame = frame->next, ++i) { - Json* name = Json_getItem(frame, "name"); - spAttachmentTimeline_setFrame(timeline, i, Json_getFloat(frame, "time", 0), + + for (valueMap = timelineMap->child, frameIndex = 0; valueMap; valueMap = valueMap->next, ++frameIndex) { + Json* name = Json_getItem(valueMap, "name"); + spAttachmentTimeline_setFrame(timeline, frameIndex, Json_getFloat(valueMap, "time", 0), name->type == Json_NULL ? 0 : name->valueString); } animation->timelines[animation->timelinesCount++] = SUPER_CAST(spTimeline, timeline); - duration = timeline->frames[timelineArray->size - 1]; - if (duration > animation->duration) animation->duration = duration; + animation->duration = MAX(animation->duration, timeline->frames[timelineMap->size - 1]); } else { spAnimation_dispose(animation); - _spSkeletonJson_setError(self, 0, "Invalid timeline type for a slot: ", timelineArray->name); + _spSkeletonJson_setError(self, 0, "Invalid timeline type for a slot: ", timelineMap->name); return 0; } } @@ -216,7 +219,7 @@ static spAnimation* _spSkeletonJson_readAnimation (spSkeletonJson* self, Json* r /* Bone timelines. */ for (boneMap = bones ? bones->child : 0; boneMap; boneMap = boneMap->next) { - Json *timelineArray; + Json *timelineMap; int boneIndex = spSkeletonData_findBoneIndex(skeletonData, boneMap->name); if (boneIndex == -1) { @@ -225,42 +228,41 @@ static spAnimation* _spSkeletonJson_readAnimation (spSkeletonJson* self, Json* r return 0; } - for (timelineArray = boneMap->child; timelineArray; timelineArray = timelineArray->next) { - if (strcmp(timelineArray->name, "rotate") == 0) { - spRotateTimeline *timeline = spRotateTimeline_create(timelineArray->size); + for (timelineMap = boneMap->child; timelineMap; timelineMap = timelineMap->next) { + if (strcmp(timelineMap->name, "rotate") == 0) { + spRotateTimeline *timeline = spRotateTimeline_create(timelineMap->size); timeline->boneIndex = boneIndex; - for (frame = timelineArray->child, i = 0; frame; frame = frame->next, ++i) { - spRotateTimeline_setFrame(timeline, i, Json_getFloat(frame, "time", 0), Json_getFloat(frame, "angle", 0)); - readCurve(SUPER(timeline), i, frame); + + for (valueMap = timelineMap->child, frameIndex = 0; valueMap; valueMap = valueMap->next, ++frameIndex) { + spRotateTimeline_setFrame(timeline, frameIndex, Json_getFloat(valueMap, "time", 0), Json_getFloat(valueMap, "angle", 0)); + readCurve(valueMap, SUPER(timeline), frameIndex); } animation->timelines[animation->timelinesCount++] = SUPER_CAST(spTimeline, timeline); - duration = timeline->frames[timelineArray->size * 2 - 2]; - if (duration > animation->duration) animation->duration = duration; + animation->duration = MAX(animation->duration, timeline->frames[(timelineMap->size - 1) * ROTATE_ENTRIES]); } else { - int isScale = strcmp(timelineArray->name, "scale") == 0; - int isTranslate = strcmp(timelineArray->name, "translate") == 0; - int isShear = strcmp(timelineArray->name, "shear") == 0; + int isScale = strcmp(timelineMap->name, "scale") == 0; + int isTranslate = strcmp(timelineMap->name, "translate") == 0; + int isShear = strcmp(timelineMap->name, "shear") == 0; if (isScale || isTranslate || isShear) { - float scale = isTranslate ? self->scale: 1; + float timelineScale = isTranslate ? self->scale: 1; spTranslateTimeline *timeline = 0; - if (isScale) timeline = spScaleTimeline_create(timelineArray->size); - else if (isTranslate) timeline = spTranslateTimeline_create(timelineArray->size); - else if (isShear) timeline = spShearTimeline_create(timelineArray->size); - + if (isScale) timeline = spScaleTimeline_create(timelineMap->size); + else if (isTranslate) timeline = spTranslateTimeline_create(timelineMap->size); + else if (isShear) timeline = spShearTimeline_create(timelineMap->size); timeline->boneIndex = boneIndex; - for (frame = timelineArray->child, i = 0; frame; frame = frame->next, ++i) { - spTranslateTimeline_setFrame(timeline, i, Json_getFloat(frame, "time", 0), Json_getFloat(frame, "x", 0) * scale, - Json_getFloat(frame, "y", 0) * scale); - readCurve(SUPER(timeline), i, frame); + + for (valueMap = timelineMap->child, frameIndex = 0; valueMap; valueMap = valueMap->next, ++frameIndex) { + spTranslateTimeline_setFrame(timeline, frameIndex, Json_getFloat(valueMap, "time", 0), Json_getFloat(valueMap, "x", 0) * timelineScale, + Json_getFloat(valueMap, "y", 0) * timelineScale); + readCurve(valueMap, SUPER(timeline), frameIndex); } animation->timelines[animation->timelinesCount++] = SUPER_CAST(spTimeline, timeline); - duration = timeline->frames[timelineArray->size * 3 - 3]; - if (duration > animation->duration) animation->duration = duration; + animation->duration = MAX(animation->duration, timeline->frames[(timelineMap->size - 1) * TRANSLATE_ENTRIES]); } else { spAnimation_dispose(animation); - _spSkeletonJson_setError(self, 0, "Invalid timeline type for a bone: ", timelineArray->name); + _spSkeletonJson_setError(self, 0, "Invalid timeline type for a bone: ", timelineMap->name); return 0; } } @@ -271,107 +273,151 @@ static spAnimation* _spSkeletonJson_readAnimation (spSkeletonJson* self, Json* r for (constraintMap = ik ? ik->child : 0; constraintMap; constraintMap = constraintMap->next) { spIkConstraintData* constraint = spSkeletonData_findIkConstraint(skeletonData, constraintMap->name); spIkConstraintTimeline* timeline = spIkConstraintTimeline_create(constraintMap->size); - for (i = 0; i < skeletonData->ikConstraintsCount; ++i) { - if (constraint == skeletonData->ikConstraints[i]) { - timeline->ikConstraintIndex = i; + for (frameIndex = 0; frameIndex < skeletonData->ikConstraintsCount; ++frameIndex) { + if (constraint == skeletonData->ikConstraints[frameIndex]) { + timeline->ikConstraintIndex = frameIndex; break; } } - for (frame = constraintMap->child, i = 0; frame; frame = frame->next, ++i) { - spIkConstraintTimeline_setFrame(timeline, i, Json_getFloat(frame, "time", 0), Json_getFloat(frame, "mix", 1), - Json_getInt(frame, "bendPositive", 1) ? 1 : -1); - readCurve(SUPER(timeline), i, frame); + for (valueMap = constraintMap->child, frameIndex = 0; valueMap; valueMap = valueMap->next, ++frameIndex) { + spIkConstraintTimeline_setFrame(timeline, frameIndex, Json_getFloat(valueMap, "time", 0), Json_getFloat(valueMap, "mix", 1), + Json_getInt(valueMap, "bendPositive", 1) ? 1 : -1); + readCurve(valueMap, SUPER(timeline), frameIndex); } animation->timelines[animation->timelinesCount++] = SUPER_CAST(spTimeline, timeline); - duration = timeline->frames[constraintMap->size * 3 - 3]; - if (duration > animation->duration) animation->duration = duration; + animation->duration = MAX(animation->duration, timeline->frames[(constraintMap->size - 1) * IKCONSTRAINT_ENTRIES]); } /* Transform constraint timelines. */ for (constraintMap = transform ? transform->child : 0; constraintMap; constraintMap = constraintMap->next) { spTransformConstraintData* constraint = spSkeletonData_findTransformConstraint(skeletonData, constraintMap->name); spTransformConstraintTimeline* timeline = spTransformConstraintTimeline_create(constraintMap->size); - for (i = 0; i < skeletonData->transformConstraintsCount; ++i) { - if (constraint == skeletonData->transformConstraints[i]) { - timeline->transformConstraintIndex = i; + for (frameIndex = 0; frameIndex < skeletonData->transformConstraintsCount; ++frameIndex) { + if (constraint == skeletonData->transformConstraints[frameIndex]) { + timeline->transformConstraintIndex = frameIndex; break; } } - for (frame = constraintMap->child, i = 0; frame; frame = frame->next, ++i) { - spTransformConstraintTimeline_setFrame(timeline, i, Json_getFloat(frame, "time", 0), Json_getFloat(frame, "rotateMix", 1), - Json_getFloat(frame, "translateMix", 1), Json_getFloat(frame, "scaleMix", 1), Json_getFloat(frame, "shearMix", 1)); - readCurve(SUPER(timeline), i, frame); + for (valueMap = constraintMap->child, frameIndex = 0; valueMap; valueMap = valueMap->next, ++frameIndex) { + spTransformConstraintTimeline_setFrame(timeline, frameIndex, Json_getFloat(valueMap, "time", 0), Json_getFloat(valueMap, "rotateMix", 1), + Json_getFloat(valueMap, "translateMix", 1), Json_getFloat(valueMap, "scaleMix", 1), Json_getFloat(valueMap, "shearMix", 1)); + readCurve(valueMap, SUPER(timeline), frameIndex); } animation->timelines[animation->timelinesCount++] = SUPER_CAST(spTimeline, timeline); - duration = timeline->frames[constraintMap->size * 5 - 5]; - if (duration > animation->duration) animation->duration = duration; + animation->duration = MAX(animation->duration, timeline->frames[(constraintMap->size - 1) * TRANSFORMCONSTRAINT_ENTRIES]); } - /* FFD timelines. */ - for (ffdMap = ffd ? ffd->child : 0; ffdMap; ffdMap = ffdMap->next) { - spSkin* skin = spSkeletonData_findSkin(skeletonData, ffdMap->name); - for (slotMap = ffdMap->child; slotMap; slotMap = slotMap->next) { - int slotIndex = spSkeletonData_findSlotIndex(skeletonData, slotMap->name); - Json* timelineArray; - for (timelineArray = slotMap->child; timelineArray; timelineArray = timelineArray->next) { - Json* frame; - int verticesCount = 0; - float* tempVertices; - spFFDTimeline *timeline; + /** Path constraint timelines. */ + for(constraintMap = paths ? paths->child : 0; constraintMap; constraintMap = constraintMap->next ) { + int constraintIndex, i; + Json* timelineMap; - spAttachment* attachment = spSkin_getAttachment(skin, slotIndex, timelineArray->name); + spPathConstraintData* data = spSkeletonData_findPathConstraint(skeletonData, constraintMap->name); + if (!data) { + spAnimation_dispose(animation); + _spSkeletonJson_setError(self, root, "Path constraint not found: ", constraintMap->name); + return 0; + } + for (i = 0; i < skeletonData->pathConstraintsCount; i++) { + if (skeletonData->pathConstraints[i] == data) { + constraintIndex = i; + break; + } + } + + for (timelineMap = constraintMap->child; timelineMap; timelineMap = timelineMap->next) { + const char* timelineName = timelineMap->name; + if (strcmp(timelineName, "position") == 0 || strcmp(timelineName, "spacing") == 0) { + spPathConstraintPositionTimeline* timeline; + float timelineScale = 1; + if (strcmp(timelineName, "spacing") == 0) { + timeline = (spPathConstraintPositionTimeline*)spPathConstraintSpacingTimeline_create(timelineMap->size); + if (data->spacingMode == SP_SPACING_MODE_LENGTH || data->spacingMode == SP_SPACING_MODE_FIXED) timelineScale = self->scale; + } else { + timeline = spPathConstraintPositionTimeline_create(timelineMap->size); + if (data->positionMode == SP_POSITION_MODE_FIXED) timelineScale = self->scale; + } + timeline->pathConstraintIndex = constraintIndex; + for (valueMap = timelineMap->child, frameIndex = 0; valueMap; valueMap = valueMap->next, ++frameIndex) { + spPathConstraintPositionTimeline_setFrame(timeline, frameIndex, Json_getFloat(valueMap, "time", 0), Json_getFloat(valueMap, timelineName, 0) * timelineScale); + readCurve(valueMap, SUPER(timeline), frameIndex); + } + animation->timelines[animation->timelinesCount++] = SUPER_CAST(spTimeline, timeline); + animation->duration = MAX(animation->duration, timeline->frames[(timelineMap->size - 1) * PATHCONSTRAINTPOSITION_ENTRIES]); + } else if (strcmp(timelineName, "mix")) { + spPathConstraintMixTimeline* timeline = spPathConstraintMixTimeline_create(timelineMap->size); + timeline->pathConstraintIndex = constraintIndex; + for (valueMap = timelineMap->child, frameIndex = 0; valueMap; valueMap = valueMap->next, ++frameIndex) { + spPathConstraintMixTimeline_setFrame(timeline, frameIndex, Json_getFloat(valueMap, "time", 0), + Json_getFloat(valueMap, "rotateMix", 1), Json_getFloat(valueMap, "translateMix", 1)); + readCurve(valueMap, SUPER(timeline), frameIndex); + } + animation->timelines[animation->timelinesCount++] = SUPER_CAST(spTimeline, timeline); + animation->duration = MAX(animation->duration, timeline->frames[(timelineMap->size - 1) * PATHCONSTRAINTMIX_ENTRIES]); + } + } + } + + /* Deform timelines. */ + for (constraintMap = deform ? deform->child : 0; constraintMap; constraintMap = constraintMap->next) { + spSkin* skin = spSkeletonData_findSkin(skeletonData, constraintMap->name); + for (slotMap = constraintMap->child; slotMap; slotMap = slotMap->next) { + int slotIndex = spSkeletonData_findSlotIndex(skeletonData, slotMap->name); + Json* timelineMap; + for (timelineMap = slotMap->child; timelineMap; timelineMap = timelineMap->next) { + float* tempDeform; + spDeformTimeline *timeline; + int weighted, deformLength; + + spVertexAttachment* attachment = SUB_CAST(spVertexAttachment, spSkin_getAttachment(skin, slotIndex, timelineMap->name)); if (!attachment) { spAnimation_dispose(animation); - _spSkeletonJson_setError(self, 0, "Attachment not found: ", timelineArray->name); + _spSkeletonJson_setError(self, 0, "Attachment not found: ", timelineMap->name); return 0; } - if (attachment->type == SP_ATTACHMENT_MESH) - verticesCount = SUB_CAST(spMeshAttachment, attachment)->verticesCount; - else if (attachment->type == SP_ATTACHMENT_WEIGHTED_MESH) - verticesCount = SUB_CAST(spWeightedMeshAttachment, attachment)->weightsCount / 3 * 2; + weighted = attachment->bones != 0; + deformLength = weighted ? attachment->verticesCount / 3 * 2 : attachment->verticesCount; + tempDeform = MALLOC(float, deformLength); - timeline = spFFDTimeline_create(timelineArray->size, verticesCount); + timeline = spDeformTimeline_create(timelineMap->size, deformLength); timeline->slotIndex = slotIndex; - timeline->attachment = attachment; + timeline->attachment = SUPER(attachment); - tempVertices = MALLOC(float, verticesCount); - for (frame = timelineArray->child, i = 0; frame; frame = frame->next, ++i) { - Json* vertices = Json_getItem(frame, "vertices"); - float* frameVertices; + for (valueMap = timelineMap->child, frameIndex = 0; valueMap; valueMap = valueMap->next, ++frameIndex) { + Json* vertices = Json_getItem(valueMap, "vertices"); + float* deform; if (!vertices) { - if (attachment->type == SP_ATTACHMENT_MESH) - frameVertices = SUB_CAST(spMeshAttachment, attachment)->vertices; - else { - frameVertices = tempVertices; - memset(frameVertices, 0, sizeof(float) * verticesCount); - } + if (weighted) { + deform = tempDeform; + memset(deform, 0, sizeof(float) * deformLength); + } else + deform = attachment->vertices; } else { - int v, start = Json_getInt(frame, "offset", 0); + int v, start = Json_getInt(valueMap, "offset", 0); Json* vertex; - frameVertices = tempVertices; - memset(frameVertices, 0, sizeof(float) * start); + deform = tempDeform; + memset(deform, 0, sizeof(float) * start); if (self->scale == 1) { for (vertex = vertices->child, v = start; vertex; vertex = vertex->next, ++v) - frameVertices[v] = vertex->valueFloat; + deform[v] = vertex->valueFloat; } else { for (vertex = vertices->child, v = start; vertex; vertex = vertex->next, ++v) - frameVertices[v] = vertex->valueFloat * self->scale; + deform[v] = vertex->valueFloat * self->scale; } - memset(frameVertices + v, 0, sizeof(float) * (verticesCount - v)); - if (attachment->type == SP_ATTACHMENT_MESH) { - float* meshVertices = SUB_CAST(spMeshAttachment, attachment)->vertices; - for (v = 0; v < verticesCount; ++v) - frameVertices[v] += meshVertices[v]; + memset(deform + v, 0, sizeof(float) * (deformLength - v)); + if (!weighted) { + float* vertices = attachment->vertices; + for (v = 0; v < deformLength; ++v) + deform[v] += vertices[v]; } } - spFFDTimeline_setFrame(timeline, i, Json_getFloat(frame, "time", 0), frameVertices); - readCurve(SUPER(timeline), i, frame); + spDeformTimeline_setFrame(timeline, frameIndex, Json_getFloat(valueMap, "time", 0), deform); + readCurve(valueMap, SUPER(timeline), frameIndex); } - FREE(tempVertices); + FREE(tempDeform); animation->timelines[animation->timelinesCount++] = SUPER_CAST(spTimeline, timeline); - duration = timeline->frames[timelineArray->size - 1]; - if (duration > animation->duration) animation->duration = duration; + animation->duration = MAX(animation->duration, timeline->frames[timelineMap->size - 1]); } } } @@ -379,10 +425,10 @@ static spAnimation* _spSkeletonJson_readAnimation (spSkeletonJson* self, Json* r /* Draw order timeline. */ if (drawOrder) { spDrawOrderTimeline* timeline = spDrawOrderTimeline_create(drawOrder->size, skeletonData->slotsCount); - for (frame = drawOrder->child, i = 0; frame; frame = frame->next, ++i) { + for (valueMap = drawOrder->child, frameIndex = 0; valueMap; valueMap = valueMap->next, ++frameIndex) { int ii; int* drawOrder = 0; - Json* offsets = Json_getItem(frame, "offsets"); + Json* offsets = Json_getItem(valueMap, "offsets"); if (offsets) { Json* offsetMap; int* unchanged = MALLOC(int, skeletonData->slotsCount - offsets->size); @@ -414,43 +460,90 @@ static spAnimation* _spSkeletonJson_readAnimation (spSkeletonJson* self, Json* r if (drawOrder[ii] == -1) drawOrder[ii] = unchanged[--unchangedIndex]; FREE(unchanged); } - spDrawOrderTimeline_setFrame(timeline, i, Json_getFloat(frame, "time", 0), drawOrder); + spDrawOrderTimeline_setFrame(timeline, frameIndex, Json_getFloat(valueMap, "time", 0), drawOrder); FREE(drawOrder); } animation->timelines[animation->timelinesCount++] = SUPER_CAST(spTimeline, timeline); - duration = timeline->frames[drawOrder->size - 1]; - if (duration > animation->duration) animation->duration = duration; + animation->duration = MAX(animation->duration, timeline->frames[drawOrder->size - 1]); } /* Event timeline. */ if (events) { - Json* frame; - spEventTimeline* timeline = spEventTimeline_create(events->size); - for (frame = events->child, i = 0; frame; frame = frame->next, ++i) { + for (valueMap = events->child, frameIndex = 0; valueMap; valueMap = valueMap->next, ++frameIndex) { spEvent* event; const char* stringValue; - spEventData* eventData = spSkeletonData_findEvent(skeletonData, Json_getString(frame, "name", 0)); + spEventData* eventData = spSkeletonData_findEvent(skeletonData, Json_getString(valueMap, "name", 0)); if (!eventData) { spAnimation_dispose(animation); - _spSkeletonJson_setError(self, 0, "Event not found: ", Json_getString(frame, "name", 0)); + _spSkeletonJson_setError(self, 0, "Event not found: ", Json_getString(valueMap, "name", 0)); return 0; } - event = spEvent_create(Json_getFloat(frame, "time", 0), eventData); - event->intValue = Json_getInt(frame, "int", eventData->intValue); - event->floatValue = Json_getFloat(frame, "float", eventData->floatValue); - stringValue = Json_getString(frame, "string", eventData->stringValue); + event = spEvent_create(Json_getFloat(valueMap, "time", 0), eventData); + event->intValue = Json_getInt(valueMap, "int", eventData->intValue); + event->floatValue = Json_getFloat(valueMap, "float", eventData->floatValue); + stringValue = Json_getString(valueMap, "string", eventData->stringValue); if (stringValue) MALLOC_STR(event->stringValue, stringValue); - spEventTimeline_setFrame(timeline, i, event); + spEventTimeline_setFrame(timeline, frameIndex, event); } animation->timelines[animation->timelinesCount++] = SUPER_CAST(spTimeline, timeline); - duration = timeline->frames[events->size - 1]; - if (duration > animation->duration) animation->duration = duration; + animation->duration = MAX(animation->duration, timeline->frames[events->size - 1]); } return animation; } +static void _readVertices(spSkeletonJson* self, Json* attachmentMap, spVertexAttachment* attachment, int verticesLength) { + Json* entry; + float* vertices; + int i, b, w, nn, entrySize; + + attachment->worldVerticesLength = verticesLength; + + entry = Json_getItem(attachmentMap, "vertices"); + entrySize = entry->size; + vertices = MALLOC(float, entrySize); + for (entry = entry->child, i = 0; entry; entry = entry->next, ++i) + vertices[i] = entry->valueFloat; + + if (verticesLength == entrySize) { + if (self->scale != 1) + for (i = 0; i < entrySize; ++i) + vertices[i] *= self->scale; + attachment->verticesCount = verticesLength; + attachment->vertices = vertices; + + attachment->bonesCount = 0; + attachment->bones = 0; + } else { + attachment->verticesCount = 0; + attachment->bonesCount = 0; + + for (i = 0; i < entrySize;) { + int bonesCount = (int)vertices[i]; + attachment->bonesCount += 1 + bonesCount; + attachment->verticesCount += 3 * bonesCount; + i += 1 + bonesCount * 4; + } + + attachment->vertices = MALLOC(float, attachment->verticesCount); + attachment->bones = MALLOC(int, attachment->bonesCount); + + for (i = 0, b = 0, w = 0; i < entrySize;) { + int bonesCount = (int)vertices[i++]; + attachment->bones[b++] = bonesCount; + for (nn = i + bonesCount * 4; i < nn;) { + attachment->bones[b++] = (int)vertices[i++]; + attachment->vertices[w++] = vertices[i++] * self->scale; + attachment->vertices[w++] = vertices[i++] * self->scale; + attachment->vertices[w++] = vertices[i++]; + } + } + + FREE(vertices); + } +} + spSkeletonData* spSkeletonJson_readSkeletonDataFile (spSkeletonJson* self, const char* path) { int length; spSkeletonData* skeletonData; @@ -467,7 +560,7 @@ spSkeletonData* spSkeletonJson_readSkeletonDataFile (spSkeletonJson* self, const spSkeletonData* spSkeletonJson_readSkeletonData (spSkeletonJson* self, const char* json) { int i, ii; spSkeletonData* skeletonData; - Json *root, *skeleton, *bones, *boneMap, *ik, *transform, *slots, *skins, *animations, *events; + Json *root, *skeleton, *bones, *boneMap, *ik, *transform, *path, *slots, *skins, *animations, *events; char* oldLocale; _spSkeletonJson* internal = SUB_CAST(_spSkeletonJson, self); @@ -497,7 +590,7 @@ spSkeletonData* spSkeletonJson_readSkeletonData (spSkeletonJson* self, const cha bones = Json_getItem(root, "bones"); skeletonData->bones = MALLOC(spBoneData*, bones->size); for (boneMap = bones->child, i = 0; boneMap; boneMap = boneMap->next, ++i) { - spBoneData* boneData; + spBoneData* data; spBoneData* parent = 0; const char* parentName = Json_getString(boneMap, "parent", 0); @@ -510,101 +603,22 @@ spSkeletonData* spSkeletonJson_readSkeletonData (spSkeletonJson* self, const cha } } - boneData = spBoneData_create(Json_getString(boneMap, "name", 0), parent); - boneData->length = Json_getFloat(boneMap, "length", 0) * self->scale; - boneData->x = Json_getFloat(boneMap, "x", 0) * self->scale; - boneData->y = Json_getFloat(boneMap, "y", 0) * self->scale; - boneData->rotation = Json_getFloat(boneMap, "rotation", 0); - boneData->scaleX = Json_getFloat(boneMap, "scaleX", 1); - boneData->scaleY = Json_getFloat(boneMap, "scaleY", 1); - boneData->shearX = Json_getFloat(boneMap, "shearX", 0); - boneData->shearY = Json_getFloat(boneMap, "shearY", 0); - boneData->inheritScale = Json_getInt(boneMap, "inheritScale", 1); - boneData->inheritRotation = Json_getInt(boneMap, "inheritRotation", 1); + data = spBoneData_create(skeletonData->bonesCount, Json_getString(boneMap, "name", 0), parent); + data->length = Json_getFloat(boneMap, "length", 0) * self->scale; + data->x = Json_getFloat(boneMap, "x", 0) * self->scale; + data->y = Json_getFloat(boneMap, "y", 0) * self->scale; + data->rotation = Json_getFloat(boneMap, "rotation", 0); + data->scaleX = Json_getFloat(boneMap, "scaleX", 1); + data->scaleY = Json_getFloat(boneMap, "scaleY", 1); + data->shearX = Json_getFloat(boneMap, "shearX", 0); + data->shearY = Json_getFloat(boneMap, "shearY", 0); + data->inheritRotation = Json_getInt(boneMap, "inheritRotation", 1); + data->inheritScale = Json_getInt(boneMap, "inheritScale", 1); - skeletonData->bones[i] = boneData; + skeletonData->bones[i] = data; skeletonData->bonesCount++; } - /* IK constraints. */ - ik = Json_getItem(root, "ik"); - if (ik) { - Json *ikMap; - skeletonData->ikConstraintsCount = ik->size; - skeletonData->ikConstraints = MALLOC(spIkConstraintData*, ik->size); - for (ikMap = ik->child, i = 0; ikMap; ikMap = ikMap->next, ++i) { - const char* targetName; - - spIkConstraintData* ikConstraintData = spIkConstraintData_create(Json_getString(ikMap, "name", 0)); - boneMap = Json_getItem(ikMap, "bones"); - ikConstraintData->bonesCount = boneMap->size; - ikConstraintData->bones = MALLOC(spBoneData*, boneMap->size); - for (boneMap = boneMap->child, ii = 0; boneMap; boneMap = boneMap->next, ++ii) { - ikConstraintData->bones[ii] = spSkeletonData_findBone(skeletonData, boneMap->valueString); - if (!ikConstraintData->bones[ii]) { - spSkeletonData_dispose(skeletonData); - _spSkeletonJson_setError(self, root, "IK bone not found: ", boneMap->valueString); - return 0; - } - } - - targetName = Json_getString(ikMap, "target", 0); - ikConstraintData->target = spSkeletonData_findBone(skeletonData, targetName); - if (!ikConstraintData->target) { - spSkeletonData_dispose(skeletonData); - _spSkeletonJson_setError(self, root, "Target bone not found: ", boneMap->name); - return 0; - } - - ikConstraintData->bendDirection = Json_getInt(ikMap, "bendPositive", 1) ? 1 : -1; - ikConstraintData->mix = Json_getFloat(ikMap, "mix", 1); - - skeletonData->ikConstraints[i] = ikConstraintData; - } - } - - /* Transform constraints. */ - transform = Json_getItem(root, "transform"); - if (transform) { - Json *transformMap; - skeletonData->transformConstraintsCount = transform->size; - skeletonData->transformConstraints = MALLOC(spTransformConstraintData*, transform->size); - for (transformMap = transform->child, i = 0; transformMap; transformMap = transformMap->next, ++i) { - const char* name; - - spTransformConstraintData* transformConstraintData = spTransformConstraintData_create(Json_getString(transformMap, "name", 0)); - - name = Json_getString(transformMap, "bone", 0); - transformConstraintData->bone = spSkeletonData_findBone(skeletonData, name); - if (!transformConstraintData->bone) { - spSkeletonData_dispose(skeletonData); - _spSkeletonJson_setError(self, root, "Bone not found: ", boneMap->name); - return 0; - } - - name = Json_getString(transformMap, "target", 0); - transformConstraintData->target = spSkeletonData_findBone(skeletonData, name); - if (!transformConstraintData->target) { - spSkeletonData_dispose(skeletonData); - _spSkeletonJson_setError(self, root, "Target bone not found: ", boneMap->name); - return 0; - } - - transformConstraintData->offsetRotation = Json_getFloat(transformMap, "rotation", 0); - transformConstraintData->offsetX = Json_getFloat(transformMap, "x", 0) * self->scale; - transformConstraintData->offsetY = Json_getFloat(transformMap, "y", 0) * self->scale; - transformConstraintData->offsetScaleX = Json_getFloat(transformMap, "scaleX", 0) * self->scale; - transformConstraintData->offsetScaleY = Json_getFloat(transformMap, "scaleY", 0) * self->scale; - transformConstraintData->offsetShearY = Json_getFloat(transformMap, "shearY", 0) * self->scale; - transformConstraintData->rotateMix = Json_getFloat(transformMap, "rotateMix", 1); - transformConstraintData->translateMix = Json_getFloat(transformMap, "translateMix", 1); - transformConstraintData->scaleMix = Json_getFloat(transformMap, "scaleMix", 1); - transformConstraintData->shearMix = Json_getFloat(transformMap, "shearMix", 1); - - skeletonData->transformConstraints[i] = transformConstraintData; - } - } - /* Slots. */ slots = Json_getItem(root, "slots"); if (slots) { @@ -612,7 +626,7 @@ spSkeletonData* spSkeletonJson_readSkeletonData (spSkeletonJson* self, const cha skeletonData->slotsCount = slots->size; skeletonData->slots = MALLOC(spSlotData*, slots->size); for (slotMap = slots->child, i = 0; slotMap; slotMap = slotMap->next, ++i) { - spSlotData* slotData; + spSlotData* data; const char* color; Json *item; @@ -624,46 +638,190 @@ spSkeletonData* spSkeletonJson_readSkeletonData (spSkeletonJson* self, const cha return 0; } - slotData = spSlotData_create(Json_getString(slotMap, "name", 0), boneData); + data = spSlotData_create(i, Json_getString(slotMap, "name", 0), boneData); color = Json_getString(slotMap, "color", 0); if (color) { - slotData->r = toColor(color, 0); - slotData->g = toColor(color, 1); - slotData->b = toColor(color, 2); - slotData->a = toColor(color, 3); + data->r = toColor(color, 0); + data->g = toColor(color, 1); + data->b = toColor(color, 2); + data->a = toColor(color, 3); } item = Json_getItem(slotMap, "attachment"); - if (item) spSlotData_setAttachmentName(slotData, item->valueString); + if (item) spSlotData_setAttachmentName(data, item->valueString); item = Json_getItem(slotMap, "blend"); if (item) { if (strcmp(item->valueString, "additive") == 0) - slotData->blendMode = SP_BLEND_MODE_ADDITIVE; + data->blendMode = SP_BLEND_MODE_ADDITIVE; else if (strcmp(item->valueString, "multiply") == 0) - slotData->blendMode = SP_BLEND_MODE_MULTIPLY; + data->blendMode = SP_BLEND_MODE_MULTIPLY; else if (strcmp(item->valueString, "screen") == 0) - slotData->blendMode = SP_BLEND_MODE_SCREEN; + data->blendMode = SP_BLEND_MODE_SCREEN; } - skeletonData->slots[i] = slotData; + skeletonData->slots[i] = data; + } + } + + /* IK constraints. */ + ik = Json_getItem(root, "ik"); + if (ik) { + Json *constraintMap; + skeletonData->ikConstraintsCount = ik->size; + skeletonData->ikConstraints = MALLOC(spIkConstraintData*, ik->size); + for (constraintMap = ik->child, i = 0; constraintMap; constraintMap = constraintMap->next, ++i) { + const char* targetName; + + spIkConstraintData* data = spIkConstraintData_create(Json_getString(constraintMap, "name", 0)); + + boneMap = Json_getItem(constraintMap, "bones"); + data->bonesCount = boneMap->size; + data->bones = MALLOC(spBoneData*, boneMap->size); + for (boneMap = boneMap->child, ii = 0; boneMap; boneMap = boneMap->next, ++ii) { + data->bones[ii] = spSkeletonData_findBone(skeletonData, boneMap->valueString); + if (!data->bones[ii]) { + spSkeletonData_dispose(skeletonData); + _spSkeletonJson_setError(self, root, "IK bone not found: ", boneMap->valueString); + return 0; + } + } + + targetName = Json_getString(constraintMap, "target", 0); + data->target = spSkeletonData_findBone(skeletonData, targetName); + if (!data->target) { + spSkeletonData_dispose(skeletonData); + _spSkeletonJson_setError(self, root, "Target bone not found: ", boneMap->name); + return 0; + } + + data->bendDirection = Json_getInt(constraintMap, "bendPositive", 1) ? 1 : -1; + data->mix = Json_getFloat(constraintMap, "mix", 1); + + skeletonData->ikConstraints[i] = data; + } + } + + /* Transform constraints. */ + transform = Json_getItem(root, "transform"); + if (transform) { + Json *constraintMap; + skeletonData->transformConstraintsCount = transform->size; + skeletonData->transformConstraints = MALLOC(spTransformConstraintData*, transform->size); + for (constraintMap = transform->child, i = 0; constraintMap; constraintMap = constraintMap->next, ++i) { + const char* name; + + spTransformConstraintData* data = spTransformConstraintData_create(Json_getString(constraintMap, "name", 0)); + + boneMap = Json_getItem(constraintMap, "bones"); + data->bonesCount = boneMap->size; + CONST_CAST(spBoneData**, data->bones) = MALLOC(spBoneData*, boneMap->size); + for (boneMap = boneMap->child, ii = 0; boneMap; boneMap = boneMap->next, ++ii) { + data->bones[ii] = spSkeletonData_findBone(skeletonData, boneMap->valueString); + if (!data->bones[ii]) { + spSkeletonData_dispose(skeletonData); + _spSkeletonJson_setError(self, root, "Transform bone not found: ", boneMap->valueString); + return 0; + } + } + + name = Json_getString(constraintMap, "target", 0); + data->target = spSkeletonData_findBone(skeletonData, name); + if (!data->target) { + spSkeletonData_dispose(skeletonData); + _spSkeletonJson_setError(self, root, "Target bone not found: ", boneMap->name); + return 0; + } + + data->offsetRotation = Json_getFloat(constraintMap, "rotation", 0); + data->offsetX = Json_getFloat(constraintMap, "x", 0) * self->scale; + data->offsetY = Json_getFloat(constraintMap, "y", 0) * self->scale; + data->offsetScaleX = Json_getFloat(constraintMap, "scaleX", 0); + data->offsetScaleY = Json_getFloat(constraintMap, "scaleY", 0); + data->offsetShearY = Json_getFloat(constraintMap, "shearY", 0); + + data->rotateMix = Json_getFloat(constraintMap, "rotateMix", 1); + data->translateMix = Json_getFloat(constraintMap, "translateMix", 1); + data->scaleMix = Json_getFloat(constraintMap, "scaleMix", 1); + data->shearMix = Json_getFloat(constraintMap, "shearMix", 1); + + skeletonData->transformConstraints[i] = data; + } + } + + /* Path constraints */ + path = Json_getItem(root, "path"); + if (path) { + Json *constraintMap; + skeletonData->pathConstraintsCount = path->size; + skeletonData->pathConstraints = MALLOC(spPathConstraintData*, path->size); + for (constraintMap = path->child, i = 0; constraintMap; constraintMap = constraintMap->next, ++i) { + const char* name; + const char* item; + + spPathConstraintData* data = spPathConstraintData_create(Json_getString(constraintMap, "name", 0)); + + boneMap = Json_getItem(constraintMap, "bones"); + data->bonesCount = boneMap->size; + CONST_CAST(spBoneData**, data->bones) = MALLOC(spBoneData*, boneMap->size); + for (boneMap = boneMap->child, ii = 0; boneMap; boneMap = boneMap->next, ++ii) { + data->bones[ii] = spSkeletonData_findBone(skeletonData, boneMap->valueString); + if (!data->bones[ii]) { + spSkeletonData_dispose(skeletonData); + _spSkeletonJson_setError(self, root, "Path bone not found: ", boneMap->valueString); + return 0; + } + } + + name = Json_getString(constraintMap, "target", 0); + data->target = spSkeletonData_findSlot(skeletonData, name); + if (!data->target) { + spSkeletonData_dispose(skeletonData); + _spSkeletonJson_setError(self, root, "Target slot not found: ", boneMap->name); + return 0; + } + + item = Json_getString(constraintMap, "positionMode", "percent"); + if (strcmp(item, "fixed") == 0) data->positionMode = SP_POSITION_MODE_FIXED; + else if (strcmp(item, "percent") == 0) data->positionMode = SP_POSITION_MODE_PERCENT; + + item = Json_getString(constraintMap, "spacingMode", "length"); + if (strcmp(item, "length") == 0) data->spacingMode = SP_SPACING_MODE_LENGTH; + else if (strcmp(item, "fixed") == 0) data->spacingMode = SP_SPACING_MODE_FIXED; + else if (strcmp(item, "percent") == 0) data->spacingMode = SP_SPACING_MODE_PERCENT; + + item = Json_getString(constraintMap, "rotateMode", "tangent"); + if (strcmp(item, "tangent") == 0) data->rotateMode = SP_ROTATE_MODE_TANGENT; + else if (strcmp(item, "chain") == 0) data->rotateMode = SP_ROTATE_MODE_CHAIN; + else if (strcmp(item, "chainScale") == 0) data->rotateMode = SP_ROTATE_MODE_CHAIN_SCALE; + + data->offsetRotation = Json_getFloat(constraintMap, "rotation", 0); + data->position = Json_getFloat(constraintMap, "position", 0); + if (data->positionMode == SP_POSITION_MODE_FIXED) data->position *= self->scale; + data->spacing = Json_getFloat(constraintMap, "spacing", 0); + if (data->spacingMode == SP_SPACING_MODE_LENGTH || data->spacingMode == SP_SPACING_MODE_FIXED) data->spacing *= self->scale; + data->rotateMix = Json_getFloat(constraintMap, "rotateMix", 1); + data->translateMix = Json_getFloat(constraintMap, "translateMix", 1); + + skeletonData->pathConstraints[i] = data; } } /* Skins. */ skins = Json_getItem(root, "skins"); if (skins) { - Json *slotMap; + Json *skinMap; skeletonData->skins = MALLOC(spSkin*, skins->size); - for (slotMap = skins->child, i = 0; slotMap; slotMap = slotMap->next, ++i) { + for (skinMap = skins->child, i = 0; skinMap; skinMap = skinMap->next, ++i) { Json *attachmentsMap; - spSkin *skin = spSkin_create(slotMap->name); + Json *curves; + spSkin *skin = spSkin_create(skinMap->name); skeletonData->skins[skeletonData->skinsCount++] = skin; - if (strcmp(slotMap->name, "default") == 0) skeletonData->defaultSkin = skin; + if (strcmp(skinMap->name, "default") == 0) skeletonData->defaultSkin = skin; - for (attachmentsMap = slotMap->child; attachmentsMap; attachmentsMap = attachmentsMap->next) { + for (attachmentsMap = skinMap->child; attachmentsMap; attachmentsMap = attachmentsMap->next) { int slotIndex = spSkeletonData_findSlotIndex(skeletonData, attachmentsMap->name); Json *attachmentMap; @@ -682,14 +840,12 @@ spSkeletonData* spSkeletonJson_readSkeletonData (spSkeletonJson* self, const cha type = SP_ATTACHMENT_REGION; else if (strcmp(typeString, "mesh") == 0) type = SP_ATTACHMENT_MESH; - else if (strcmp(typeString, "weightedmesh") == 0 || strcmp(typeString, "skinnedmesh") == 0) - type = SP_ATTACHMENT_WEIGHTED_MESH; else if (strcmp(typeString, "linkedmesh") == 0) type = SP_ATTACHMENT_LINKED_MESH; - else if (strcmp(typeString, "weightedlinkedmesh") == 0) - type = SP_ATTACHMENT_WEIGHTED_LINKED_MESH; else if (strcmp(typeString, "boundingbox") == 0) type = SP_ATTACHMENT_BOUNDING_BOX; + else if (strcmp(typeString, "path") == 0) + type = SP_ATTACHMENT_PATH; else { spSkeletonData_dispose(skeletonData); _spSkeletonJson_setError(self, root, "Unknown attachment type: ", typeString); @@ -750,12 +906,7 @@ spSkeletonData* spSkeletonJson_readSkeletonData (spSkeletonJson* self, const cha entry = Json_getItem(attachmentMap, "parent"); if (!entry) { - entry = Json_getItem(attachmentMap, "vertices"); - mesh->verticesCount = entry->size; - mesh->vertices = MALLOC(float, entry->size); - for (entry = entry->child, i = 0; entry; entry = entry->next, ++i) - mesh->vertices[i] = entry->valueFloat * self->scale; - + int verticesLength; entry = Json_getItem(attachmentMap, "triangles"); mesh->trianglesCount = entry->size; mesh->triangles = MALLOC(unsigned short, entry->size); @@ -763,10 +914,13 @@ spSkeletonData* spSkeletonJson_readSkeletonData (spSkeletonJson* self, const cha mesh->triangles[i] = (unsigned short)entry->valueInt; entry = Json_getItem(attachmentMap, "uvs"); - mesh->regionUVs = MALLOC(float, entry->size); + verticesLength = entry->size; + mesh->regionUVs = MALLOC(float, verticesLength); for (entry = entry->child, i = 0; entry; entry = entry->next, ++i) mesh->regionUVs[i] = entry->valueFloat; + _readVertices(self, attachmentMap, SUPER(mesh), verticesLength); + spMeshAttachment_updateUVs(mesh); mesh->hullLength = Json_getInt(attachmentMap, "hull", 0); @@ -781,103 +935,35 @@ spSkeletonData* spSkeletonJson_readSkeletonData (spSkeletonJson* self, const cha spAttachmentLoader_configureAttachment(self->attachmentLoader, attachment); } else { - mesh->inheritFFD = Json_getInt(attachmentMap, "ffd", 1); - _spSkeletonJson_addLinkedMesh(self, attachment, Json_getString(attachmentMap, "skin", 0), slotIndex, + mesh->inheritDeform = Json_getInt(attachmentMap, "deform", 1); + _spSkeletonJson_addLinkedMesh(self, SUB_CAST(spMeshAttachment, attachment), Json_getString(attachmentMap, "skin", 0), slotIndex, entry->valueString); } break; } - case SP_ATTACHMENT_WEIGHTED_MESH: - case SP_ATTACHMENT_WEIGHTED_LINKED_MESH: { - spWeightedMeshAttachment* mesh = SUB_CAST(spWeightedMeshAttachment, attachment); - int verticesCount, b, w, nn; - float* vertices; - - MALLOC_STR(mesh->path, path); - - color = Json_getString(attachmentMap, "color", 0); - if (color) { - mesh->r = toColor(color, 0); - mesh->g = toColor(color, 1); - mesh->b = toColor(color, 2); - mesh->a = toColor(color, 3); - } - - mesh->width = Json_getFloat(attachmentMap, "width", 32) * self->scale; - mesh->height = Json_getFloat(attachmentMap, "height", 32) * self->scale; - - entry = Json_getItem(attachmentMap, "parent"); - if (!entry) { - entry = Json_getItem(attachmentMap, "uvs"); - mesh->uvsCount = entry->size; - mesh->regionUVs = MALLOC(float, entry->size); - for (entry = entry->child, i = 0; entry; entry = entry->next, ++i) - mesh->regionUVs[i] = entry->valueFloat; - - entry = Json_getItem(attachmentMap, "vertices"); - verticesCount = entry->size; - vertices = MALLOC(float, entry->size); - for (entry = entry->child, i = 0; entry; entry = entry->next, ++i) - vertices[i] = entry->valueFloat; - - for (i = 0; i < verticesCount;) { - int bonesCount = (int)vertices[i]; - mesh->bonesCount += bonesCount + 1; - mesh->weightsCount += bonesCount * 3; - i += 1 + bonesCount * 4; - } - mesh->bones = MALLOC(int, mesh->bonesCount); - mesh->weights = MALLOC(float, mesh->weightsCount); - - for (i = 0, b = 0, w = 0; i < verticesCount;) { - int bonesCount = (int)vertices[i++]; - mesh->bones[b++] = bonesCount; - for (nn = i + bonesCount * 4; i < nn; i += 4, ++b, w += 3) { - mesh->bones[b] = (int)vertices[i]; - mesh->weights[w] = vertices[i + 1] * self->scale; - mesh->weights[w + 1] = vertices[i + 2] * self->scale; - mesh->weights[w + 2] = vertices[i + 3]; - } - } - - FREE(vertices); - - entry = Json_getItem(attachmentMap, "triangles"); - mesh->trianglesCount = entry->size; - mesh->triangles = MALLOC(unsigned short, entry->size); - for (entry = entry->child, i = 0; entry; entry = entry->next, ++i) - mesh->triangles[i] = (unsigned short)entry->valueInt; - - spWeightedMeshAttachment_updateUVs(mesh); - - mesh->hullLength = Json_getInt(attachmentMap, "hull", 0); - - entry = Json_getItem(attachmentMap, "edges"); - if (entry) { - mesh->edgesCount = entry->size; - mesh->edges = MALLOC(int, entry->size); - for (entry = entry->child, i = 0; entry; entry = entry->next, ++i) - mesh->edges[i] = entry->valueInt; - } - - spAttachmentLoader_configureAttachment(self->attachmentLoader, attachment); - } else { - mesh->inheritFFD = Json_getInt(attachmentMap, "ffd", 1); - _spSkeletonJson_addLinkedMesh(self, attachment, Json_getString(attachmentMap, "skin", 0), slotIndex, - entry->valueString); - } - break; - } case SP_ATTACHMENT_BOUNDING_BOX: { spBoundingBoxAttachment* box = SUB_CAST(spBoundingBoxAttachment, attachment); - entry = Json_getItem(attachmentMap, "vertices"); - box->verticesCount = entry->size; - box->vertices = MALLOC(float, entry->size); - for (entry = entry->child, i = 0; entry; entry = entry->next, ++i) - box->vertices[i] = entry->valueFloat * self->scale; + _readVertices(self, attachmentMap, SUPER(box), Json_getInt(attachmentMap, "vertexCount", 0) << 1); spAttachmentLoader_configureAttachment(self->attachmentLoader, attachment); break; } + case SP_ATTACHMENT_PATH: { + spPathAttachment* path = SUB_CAST(spPathAttachment, attachment); + int vertexCount = 0; + path->closed = Json_getInt(attachmentMap, "closed", 0); + path->constantSpeed = Json_getInt(attachmentMap, "constantSpeed", 1); + vertexCount = Json_getInt(attachmentMap, "vertexCount", 0); + _readVertices(self, attachmentMap, SUPER(path), vertexCount << 1); + + path->lengthsLength = vertexCount / 3; + path->lengths = MALLOC(float, path->lengthsLength); + + curves = Json_getItem(attachmentMap, "lengths"); + for (curves = curves->child, i = 0; curves; curves = curves->next, ++i) { + path->lengths[i] = curves->valueFloat * self->scale; + } + break; + } } spSkin_addAttachment(skin, slotIndex, skinAttachmentName, attachment); @@ -897,21 +983,14 @@ spSkeletonData* spSkeletonJson_readSkeletonData (spSkeletonJson* self, const cha return 0; } parent = spSkin_getAttachment(skin, linkedMesh->slotIndex, linkedMesh->parent); - if (!skin) { + if (!parent) { spSkeletonData_dispose(skeletonData); _spSkeletonJson_setError(self, 0, "Parent mesh not found: ", linkedMesh->parent); return 0; } - if (linkedMesh->mesh->type == SP_ATTACHMENT_MESH) { - spMeshAttachment* mesh = SUB_CAST(spMeshAttachment, linkedMesh->mesh); - spMeshAttachment_setParentMesh(mesh, SUB_CAST(spMeshAttachment, parent)); - spMeshAttachment_updateUVs(mesh); - } else { - spWeightedMeshAttachment* mesh = SUB_CAST(spWeightedMeshAttachment, linkedMesh->mesh); - spWeightedMeshAttachment_setParentMesh(mesh, SUB_CAST(spWeightedMeshAttachment, parent)); - spWeightedMeshAttachment_updateUVs(mesh); - } - spAttachmentLoader_configureAttachment(self->attachmentLoader, linkedMesh->mesh); + spMeshAttachment_setParentMesh(linkedMesh->mesh, SUB_CAST(spMeshAttachment, parent)); + spMeshAttachment_updateUVs(linkedMesh->mesh); + spAttachmentLoader_configureAttachment(self->attachmentLoader, SUPER(SUPER(linkedMesh->mesh))); } /* Events. */ diff --git a/spine-c/src/spine/Skin.c b/spine-c/src/spine/Skin.c index afbf52c61..2fb361ea4 100644 --- a/spine-c/src/spine/Skin.c +++ b/spine-c/src/spine/Skin.c @@ -32,14 +32,6 @@ #include #include -typedef struct _Entry _Entry; -struct _Entry { - int slotIndex; - const char* name; - spAttachment* attachment; - _Entry* next; -}; - _Entry* _Entry_create (int slotIndex, const char* name, spAttachment* attachment) { _Entry* self = NEW(_Entry); self->slotIndex = slotIndex; @@ -56,11 +48,6 @@ void _Entry_dispose (_Entry* self) { /**/ -typedef struct { - spSkin super; - _Entry* entries; -} _spSkin; - spSkin* spSkin_create (const char* name) { spSkin* self = SUPER(NEW(_spSkin)); MALLOC_STR(self->name, name); diff --git a/spine-c/src/spine/Slot.c b/spine-c/src/spine/Slot.c index 709ae9f98..a0df1c5b4 100644 --- a/spine-c/src/spine/Slot.c +++ b/spine-c/src/spine/Slot.c @@ -66,8 +66,6 @@ float spSlot_getAttachmentTime (const spSlot* self) { } void spSlot_setToSetupPose (spSlot* self) { - spAttachment* attachment = 0; - self->r = self->data->r; self->g = self->data->g; self->b = self->data->b; @@ -76,14 +74,8 @@ void spSlot_setToSetupPose (spSlot* self) { if (!self->data->attachmentName) spSlot_setAttachment(self, 0); else { - /* Find slot index. */ - int i; - for (i = 0; i < self->bone->skeleton->data->slotsCount; ++i) { - if (self->data == self->bone->skeleton->data->slots[i]) { - attachment = spSkeleton_getAttachmentForSlotIndex(self->bone->skeleton, i, self->data->attachmentName); - break; - } - } + spAttachment* attachment = spSkeleton_getAttachmentForSlotIndex( + self->bone->skeleton, self->data->index, self->data->attachmentName); CONST_CAST(spAttachment*, self->attachment) = 0; spSlot_setAttachment(self, attachment); } diff --git a/spine-c/src/spine/SlotData.c b/spine-c/src/spine/SlotData.c index 7d575bc81..833a03788 100644 --- a/spine-c/src/spine/SlotData.c +++ b/spine-c/src/spine/SlotData.c @@ -32,8 +32,9 @@ #include #include -spSlotData* spSlotData_create (const char* name, spBoneData* boneData) { +spSlotData* spSlotData_create (const int index, const char* name, spBoneData* boneData) { spSlotData* self = NEW(spSlotData); + CONST_CAST(int, self->index) = index; MALLOC_STR(self->name, name); CONST_CAST(spBoneData*, self->boneData) = boneData; self->r = 1; diff --git a/spine-c/src/spine/TransformConstraint.c b/spine-c/src/spine/TransformConstraint.c index 9cf88271d..8cdc97442 100644 --- a/spine-c/src/spine/TransformConstraint.c +++ b/spine-c/src/spine/TransformConstraint.c @@ -34,73 +34,79 @@ #include spTransformConstraint* spTransformConstraint_create (spTransformConstraintData* data, const spSkeleton* skeleton) { + int i; spTransformConstraint* self = NEW(spTransformConstraint); CONST_CAST(spTransformConstraintData*, self->data) = data; - self->translateMix = data->translateMix; self->rotateMix = data->rotateMix; + self->translateMix = data->translateMix; self->scaleMix = data->scaleMix; self->shearMix = data->shearMix; - self->offsetX = data->offsetX; - self->offsetY = data->offsetY; - self->bone = spSkeleton_findBone(skeleton, self->data->bone->name); + self->bonesCount = data->bonesCount; + CONST_CAST(spBone**, self->bones) = MALLOC(spBone*, self->bonesCount); + for (i = 0; i < self->bonesCount; ++i) + self->bones[i] = spSkeleton_findBone(skeleton, self->data->bones[i]->name); self->target = spSkeleton_findBone(skeleton, self->data->target->name); return self; } void spTransformConstraint_dispose (spTransformConstraint* self) { + FREE(self->bones); FREE(self); } void spTransformConstraint_apply (spTransformConstraint* self) { - spBone* bone = self->bone; + float rotateMix = self->rotateMix, translateMix = self->translateMix, scaleMix = self->scaleMix, shearMix = self->shearMix; spBone* target = self->target; + float ta = target->a, tb = target->b, tc = target->c, td = target->d; + int i; + for (i = 0; i < self->bonesCount; ++i) { + spBone* bone = self->bones[i]; - if (self->rotateMix > 0) { - float cosine, sine; - float a = bone->a, b = bone->b, c = bone->c, d = bone->d; - float r = atan2(target->c, target->a) - atan2(c, a) + self->offsetRotation * DEG_RAD; - if (r > PI) - r -= PI2; - else if (r < -PI) r += PI2; - r *= self->rotateMix; - cosine = COS(r); sine = SIN(r); - CONST_CAST(float, bone->a) = cosine * a - sine * c; - CONST_CAST(float, bone->b) = cosine * b - sine * d; - CONST_CAST(float, bone->c) = sine * a + cosine * c; - CONST_CAST(float, bone->d) = sine * b + cosine * d; - } + if (rotateMix > 0) { + float a = bone->a, b = bone->b, c = bone->c, d = bone->d; + float r = ATAN2(tc, ta) - ATAN2(c, a) + self->data->offsetRotation * DEG_RAD; + float cosine, sine; + if (r > PI) r -= PI2; + else if (r < -PI) r += PI2; + r *= rotateMix; + cosine = COS(r); + sine = SIN(r); + CONST_CAST(float, bone->a) = cosine * a - sine * c; + CONST_CAST(float, bone->b) = cosine * b - sine * d; + CONST_CAST(float, bone->c) = sine * a + cosine * c; + CONST_CAST(float, bone->d) = sine * b + cosine * d; + } - if (self->scaleMix > 0) { - float bs = (float)SQRT(bone->a * bone->a + bone->c * bone->c); - float ts = (float)SQRT(target->a * target->a + target->c * target->c); - float s = bs > 0.00001f ? (bs + (ts - bs + self->offsetScaleX) * self->scaleMix) / bs : 0; - CONST_CAST(float, bone->a) *= s; - CONST_CAST(float, bone->c) *= s; - bs = (float)SQRT(bone->b * bone->b + bone->d * bone->d); - ts = (float)SQRT(target->b * target->b + target->d * target->d); - s = bs > 0.00001f ? (bs + (ts - bs + self->offsetScaleY) * self->scaleMix) / bs : 0; - CONST_CAST(float, bone->b) *= s; - CONST_CAST(float, bone->d) *= s; - } + if (translateMix > 0) { + float x, y; + spBone_localToWorld(target, self->data->offsetX, self->data->offsetY, &x, &y); + CONST_CAST(float, bone->worldX) += (x - bone->worldX) * translateMix; + CONST_CAST(float, bone->worldY) += (y - bone->worldY) * translateMix; + } - if (self->shearMix > 0) { - float b = bone->b, d = bone->d; - float by = atan2(d, b); - float r = atan2(target->d, target->b) - atan2(target->c, target->a) - (by - atan2(bone->c, bone->a)); - float s; - if (r > PI) - r -= PI2; - else if (r < -PI) r += PI2; - r = by + (r + self->offsetShearY * DEG_RAD) * self->shearMix; - s = (float)SQRT(b * b + d * d); - CONST_CAST(float, bone->b) = COS(r) * s; - CONST_CAST(float, bone->d) = SIN(r) * s; - } + if (scaleMix > 0) { + float bs = SQRT(bone->a * bone->a + bone->c * bone->c); + float ts = SQRT(ta * ta + tc * tc); + float s = bs > 0.00001f ? (bs + (ts - bs + self->data->offsetScaleX) * scaleMix) / bs : 0; + CONST_CAST(float, bone->a) *= s; + CONST_CAST(float, bone->c) *= s; + bs = SQRT(bone->b * bone->b + bone->d * bone->d); + ts = SQRT(tb * tb + td * td); + s = bs > 0.00001f ? (bs + (ts - bs + self->data->offsetScaleY) * scaleMix) / bs : 0; + CONST_CAST(float, bone->b) *= s; + CONST_CAST(float, bone->d) *= s; + } - if (self->translateMix > 0) { - float tx, ty; - spBone_localToWorld(self->target, self->offsetX, self->offsetY, &tx, &ty); - CONST_CAST(float, self->bone->worldX) += (tx - self->bone->worldX) * self->translateMix; - CONST_CAST(float, self->bone->worldY) += (ty - self->bone->worldY) * self->translateMix; + if (shearMix > 0) { + float b = bone->b, d = bone->d; + float by = ATAN2(d, b); + float r = ATAN2(td, tb) - ATAN2(tc, ta) - (by - ATAN2(bone->c, bone->a)); + float s = SQRT(b * b + d * d); + if (r > PI) r -= PI2; + else if (r < -PI) r += PI2; + r = by + (r + self->data->offsetShearY * DEG_RAD) * shearMix; + CONST_CAST(float, bone->b) = COS(r) * s; + CONST_CAST(float, bone->d) = SIN(r) * s; + } } } diff --git a/spine-c/src/spine/TransformConstraintData.c b/spine-c/src/spine/TransformConstraintData.c index 8d685e7a0..bc93d4e93 100644 --- a/spine-c/src/spine/TransformConstraintData.c +++ b/spine-c/src/spine/TransformConstraintData.c @@ -40,5 +40,6 @@ spTransformConstraintData* spTransformConstraintData_create (const char* name) { void spTransformConstraintData_dispose (spTransformConstraintData* self) { FREE(self->name); + FREE(self->bones); FREE(self); } diff --git a/spine-c/src/spine/VertexAttachment.c b/spine-c/src/spine/VertexAttachment.c new file mode 100644 index 000000000..fe4dd2606 --- /dev/null +++ b/spine-c/src/spine/VertexAttachment.c @@ -0,0 +1,113 @@ +/****************************************************************************** + * 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. + *****************************************************************************/ + +#include +#include + +void _spVertexAttachment_deinit (spVertexAttachment* attachment) { + _spAttachment_deinit(SUPER(attachment)); + FREE(attachment->bones); + FREE(attachment->vertices); +} + +void spVertexAttachment_computeWorldVertices (spVertexAttachment* self, spSlot* slot, float* worldVertices) { + spVertexAttachment_computeWorldVertices1(self, 0, self->worldVerticesLength, slot, worldVertices, 0); +} + +void spVertexAttachment_computeWorldVertices1 (spVertexAttachment* self, int start, int count, spSlot* slot, float* worldVertices, int offset) { + spSkeleton* skeleton; + float x, y; + int deformLength; + float* deform; + float* vertices; + int* bones; + + count += offset; + skeleton = slot->bone->skeleton; + x = skeleton->x; + y = skeleton->y; + deformLength = slot->attachmentVerticesCount; + deform = slot->attachmentVertices; + vertices = self->vertices; + bones = self->bones; + if (!bones) { + spBone* bone; + int v, w; + if (deformLength > 0) vertices = deform; + bone = slot->bone; + x += bone->worldX; + y += bone->worldY; + for (v = start, w = offset; w < count; v += 2, w += 2) { + float vx = vertices[v], vy = vertices[v + 1]; + worldVertices[w] = vx * bone->a + vy * bone->b + x; + worldVertices[w + 1] = vx * bone->c + vy * bone->d + y; + } + } else { + int v = 0, skip = 0, i, w, b, n; + spBone** skeletonBones; + for (i = 0; i < start; i += 2) { + int n = bones[v]; + v += n + 1; + skip += n; + } + skeletonBones = skeleton->bones; + if (deformLength == 0) { + for (w = offset, b = skip * 3; w < count; w += 2) { + float wx = x, wy = y; + n = bones[v++]; + n += v; + for (; v < n; v++, b += 3) { + spBone* bone = skeletonBones[bones[v]]; + float vx = vertices[b], vy = vertices[b + 1], weight = vertices[b + 2]; + wx += (vx * bone->a + vy * bone->b + bone->worldX) * weight; + wy += (vx * bone->c + vy * bone->d + bone->worldY) * weight; + } + worldVertices[w] = wx; + worldVertices[w + 1] = wy; + } + } else { + int w, b, f, n; + for (w = offset, b = skip * 3, f = skip << 1; w < count; w += 2) { + float wx = x, wy = y; + n = bones[v++]; + n += v; + for (; v < n; v++, b += 3, f += 2) { + spBone* bone = skeletonBones[bones[v]]; + float vx = vertices[b] + deform[f], vy = vertices[b + 1] + deform[f + 1], weight = vertices[b + 2]; + wx += (vx * bone->a + vy * bone->b + bone->worldX) * weight; + wy += (vx * bone->c + vy * bone->d + bone->worldY) * weight; + } + worldVertices[w] = wx; + worldVertices[w + 1] = wy; + } + } + } +} diff --git a/spine-c/src/spine/WeightedMeshAttachment.c b/spine-c/src/spine/WeightedMeshAttachment.c deleted file mode 100644 index c88ddd89e..000000000 --- a/spine-c/src/spine/WeightedMeshAttachment.c +++ /dev/null @@ -1,137 +0,0 @@ -/****************************************************************************** - * 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. - *****************************************************************************/ - -#include -#include - -void _spWeightedMeshAttachment_dispose (spAttachment* attachment) { - spWeightedMeshAttachment* self = SUB_CAST(spWeightedMeshAttachment, attachment); - _spAttachment_deinit(attachment); - FREE(self->path); - FREE(self->uvs); - if (!self->parentMesh) { - FREE(self->regionUVs); - FREE(self->bones); - FREE(self->weights); - FREE(self->triangles); - FREE(self->edges); - } - FREE(self); -} - -spWeightedMeshAttachment* spWeightedMeshAttachment_create (const char* name) { - spWeightedMeshAttachment* self = NEW(spWeightedMeshAttachment); - self->r = 1; - self->g = 1; - self->b = 1; - self->a = 1; - _spAttachment_init(SUPER(self), name, SP_ATTACHMENT_WEIGHTED_MESH, _spWeightedMeshAttachment_dispose); - return self; -} - -void spWeightedMeshAttachment_updateUVs (spWeightedMeshAttachment* self) { - int i; - float width = self->regionU2 - self->regionU, height = self->regionV2 - self->regionV; - FREE(self->uvs); - self->uvs = MALLOC(float, self->uvsCount); - if (self->regionRotate) { - for (i = 0; i < self->uvsCount; i += 2) { - self->uvs[i] = self->regionU + self->regionUVs[i + 1] * width; - self->uvs[i + 1] = self->regionV + height - self->regionUVs[i] * height; - } - } else { - for (i = 0; i < self->uvsCount; i += 2) { - self->uvs[i] = self->regionU + self->regionUVs[i] * width; - self->uvs[i + 1] = self->regionV + self->regionUVs[i + 1] * height; - } - } -} - -void spWeightedMeshAttachment_computeWorldVertices (spWeightedMeshAttachment* self, spSlot* slot, float* worldVertices) { - int w = 0, v = 0, b = 0, f = 0; - float x = slot->bone->skeleton->x, y = slot->bone->skeleton->y; - spBone** skeletonBones = slot->bone->skeleton->bones; - if (slot->attachmentVerticesCount == 0) { - for (; v < self->bonesCount; w += 2) { - float wx = 0, wy = 0; - const int nn = self->bones[v] + v; - v++; - for (; v <= nn; v++, b += 3) { - const spBone* bone = skeletonBones[self->bones[v]]; - const float vx = self->weights[b], vy = self->weights[b + 1], weight = self->weights[b + 2]; - 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; - } - } else { - const float* ffd = slot->attachmentVertices; - for (; v < self->bonesCount; w += 2) { - float wx = 0, wy = 0; - const int nn = self->bones[v] + v; - v++; - for (; v <= nn; v++, b += 3, f += 2) { - const spBone* bone = skeletonBones[self->bones[v]]; - const float vx = self->weights[b] + ffd[f], vy = self->weights[b + 1] + ffd[f + 1], weight = self->weights[b + 2]; - 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; - } - } -} - -void spWeightedMeshAttachment_setParentMesh (spWeightedMeshAttachment* self, spWeightedMeshAttachment* parentMesh) { - CONST_CAST(spWeightedMeshAttachment*, self->parentMesh) = parentMesh; - if (parentMesh) { - self->bones = parentMesh->bones; - self->bonesCount = parentMesh->bonesCount; - - self->weights = parentMesh->weights; - self->weightsCount = parentMesh->weightsCount; - - self->regionUVs = parentMesh->regionUVs; - self->uvsCount = parentMesh->uvsCount; - - self->triangles = parentMesh->triangles; - self->trianglesCount = parentMesh->trianglesCount; - - self->hullLength = parentMesh->hullLength; - - self->edges = parentMesh->edges; - self->edgesCount = parentMesh->edgesCount; - - self->width = parentMesh->width; - self->height = parentMesh->height; - } -} diff --git a/spine-cocos2d-objc/README.md b/spine-cocos2d-objc/README.md index 167a2d66a..18cad2a89 100644 --- a/spine-cocos2d-objc/README.md +++ b/spine-cocos2d-objc/README.md @@ -10,7 +10,7 @@ The Spine Runtimes are developed with the intent to be used with data exported f ## Spine version -spine-cocos2d-objc works with data exported from Spine version 3.2.01. +spine-cocos2d-objc works with data exported from Spine version 3.3.07. spine-cocos2d-objc supports all Spine features. diff --git a/spine-cocos2d-objc/Resources/goblins-mesh.atlas b/spine-cocos2d-objc/Resources/goblins-mesh.atlas index d0ddb80c6..2652027f9 100644 --- a/spine-cocos2d-objc/Resources/goblins-mesh.atlas +++ b/spine-cocos2d-objc/Resources/goblins-mesh.atlas @@ -1,291 +1,292 @@ goblins-mesh.png +size: 512,512 format: RGBA8888 filter: Linear,Linear repeat: none dagger - rotate: true - xy: 372, 100 + rotate: false + xy: 26, 147 size: 26, 108 orig: 26, 108 offset: 0, 0 index: -1 goblin/eyes-closed rotate: false - xy: 2, 7 + xy: 329, 334 size: 34, 12 orig: 34, 12 offset: 0, 0 index: -1 goblin/head rotate: false - xy: 107, 36 + xy: 26, 355 size: 103, 66 orig: 103, 66 offset: 0, 0 index: -1 goblin/left-arm rotate: false - xy: 901, 56 + xy: 54, 142 size: 37, 35 orig: 37, 35 offset: 0, 0 index: -1 goblin/left-foot - rotate: false - xy: 929, 95 + rotate: true + xy: 2, 69 size: 65, 31 orig: 65, 31 offset: 0, 0 index: -1 goblin/left-hand rotate: false - xy: 452, 2 + xy: 266, 332 size: 36, 41 orig: 36, 41 offset: 0, 0 index: -1 goblin/left-lower-leg rotate: true - xy: 713, 93 + xy: 273, 433 size: 33, 70 orig: 33, 70 offset: 0, 0 index: -1 goblin/left-shoulder rotate: false - xy: 610, 44 + xy: 305, 288 size: 29, 44 orig: 29, 44 offset: 0, 0 index: -1 goblin/left-upper-leg - rotate: true - xy: 638, 93 + rotate: false + xy: 96, 280 size: 33, 73 orig: 33, 73 offset: 0, 0 index: -1 goblin/neck rotate: false - xy: 490, 2 + xy: 267, 289 size: 36, 41 orig: 36, 41 offset: 0, 0 index: -1 goblin/pelvis rotate: false - xy: 482, 45 + xy: 131, 363 size: 62, 43 orig: 62, 43 offset: 0, 0 index: -1 goblin/right-arm - rotate: true - xy: 690, 2 + rotate: false + xy: 304, 334 size: 23, 50 orig: 23, 50 offset: 0, 0 index: -1 goblin/right-foot rotate: false - xy: 771, 58 + xy: 201, 397 size: 63, 33 orig: 63, 33 offset: 0, 0 index: -1 goblin/right-hand rotate: false - xy: 940, 56 + xy: 336, 295 size: 36, 37 orig: 36, 37 offset: 0, 0 index: -1 goblin/right-lower-leg rotate: true - xy: 482, 90 + xy: 273, 468 size: 36, 76 orig: 36, 76 offset: 0, 0 index: -1 goblin/right-shoulder - rotate: true - xy: 602, 3 + rotate: false + xy: 196, 285 size: 39, 45 orig: 39, 45 offset: 0, 0 index: -1 goblin/right-upper-leg rotate: true - xy: 641, 57 + xy: 131, 282 size: 34, 63 orig: 34, 63 offset: 0, 0 index: -1 goblin/torso - rotate: true - xy: 212, 34 + rotate: false + xy: 131, 408 size: 68, 96 orig: 68, 96 offset: 0, 0 index: -1 goblin/undie-straps - rotate: false - xy: 380, 5 + rotate: true + xy: 266, 375 size: 55, 19 orig: 55, 19 offset: 0, 0 index: -1 goblin/undies rotate: false - xy: 174, 5 + xy: 429, 440 size: 36, 29 orig: 36, 29 offset: 0, 0 index: -1 goblingirl/eyes-closed rotate: false - xy: 269, 11 + xy: 96, 257 size: 37, 21 orig: 37, 21 offset: 0, 0 index: -1 goblingirl/head rotate: false - xy: 2, 21 + xy: 26, 423 size: 103, 81 orig: 103, 81 offset: 0, 0 index: -1 goblingirl/left-arm - rotate: true - xy: 978, 56 + rotate: false + xy: 390, 434 size: 37, 35 orig: 37, 35 offset: 0, 0 index: -1 goblingirl/left-foot - rotate: false - xy: 107, 3 + rotate: true + xy: 2, 2 size: 65, 31 orig: 65, 31 offset: 0, 0 index: -1 goblingirl/left-hand rotate: false - xy: 565, 2 + xy: 329, 348 size: 35, 40 orig: 35, 40 offset: 0, 0 index: -1 goblingirl/left-lower-leg rotate: true - xy: 785, 93 + xy: 351, 471 size: 33, 70 orig: 33, 70 offset: 0, 0 index: -1 goblingirl/left-shoulder - rotate: true - xy: 690, 27 + rotate: false + xy: 237, 284 size: 28, 46 orig: 28, 46 offset: 0, 0 index: -1 goblingirl/left-upper-leg rotate: true - xy: 857, 93 + xy: 423, 471 size: 33, 70 orig: 33, 70 offset: 0, 0 index: -1 goblingirl/neck rotate: false - xy: 528, 2 + xy: 328, 390 size: 35, 41 orig: 35, 41 offset: 0, 0 index: -1 goblingirl/pelvis rotate: false - xy: 546, 45 + xy: 131, 318 size: 62, 43 orig: 62, 43 offset: 0, 0 index: -1 goblingirl/right-arm - rotate: false - xy: 452, 48 + rotate: true + xy: 135, 252 size: 28, 50 orig: 28, 50 offset: 0, 0 index: -1 goblingirl/right-foot - rotate: false - xy: 836, 58 + rotate: true + xy: 231, 332 size: 63, 33 orig: 63, 33 offset: 0, 0 index: -1 goblingirl/right-hand rotate: true - xy: 771, 20 + xy: 351, 433 size: 36, 37 orig: 36, 37 offset: 0, 0 index: -1 goblingirl/right-lower-leg - rotate: true - xy: 560, 90 + rotate: false + xy: 54, 179 size: 36, 76 orig: 36, 76 offset: 0, 0 index: -1 goblingirl/right-shoulder rotate: false - xy: 649, 10 + xy: 287, 386 size: 39, 45 orig: 39, 45 offset: 0, 0 index: -1 goblingirl/right-upper-leg - rotate: true - xy: 706, 57 + rotate: false + xy: 195, 332 size: 34, 63 orig: 34, 63 offset: 0, 0 index: -1 goblingirl/torso rotate: false - xy: 310, 2 + xy: 26, 257 size: 68, 96 orig: 68, 96 offset: 0, 0 index: -1 goblingirl/undie-straps - rotate: false - xy: 212, 13 + rotate: true + xy: 92, 200 size: 55, 19 orig: 55, 19 offset: 0, 0 index: -1 goblingirl/undies - rotate: false - xy: 810, 27 + rotate: true + xy: 365, 395 size: 36, 29 orig: 36, 29 offset: 0, 0 index: -1 shield rotate: false - xy: 380, 26 + xy: 201, 432 size: 70, 72 orig: 70, 72 offset: 0, 0 index: -1 spear - rotate: true - xy: 2, 104 + rotate: false + xy: 2, 136 size: 22, 368 orig: 22, 368 offset: 0, 0 diff --git a/spine-cocos2d-objc/Resources/goblins-mesh.json b/spine-cocos2d-objc/Resources/goblins-mesh.json index b35360ad1..8443eee97 100644 --- a/spine-cocos2d-objc/Resources/goblins-mesh.json +++ b/spine-cocos2d-objc/Resources/goblins-mesh.json @@ -1,26 +1,27 @@ { +"skeleton": { "hash": "P7CQ4ImK+tcAICATgSttlZ5HOSM", "spine": "3.3.07", "width": 266.93, "height": 349.6, "images": "./images/" }, "bones": [ { "name": "root" }, { "name": "hip", "parent": "root", "x": 0.64, "y": 114.41 }, - { "name": "left upper leg", "parent": "hip", "length": 50.39, "x": 14.45, "y": 2.81, "rotation": -89.09 }, + { "name": "torso", "parent": "hip", "length": 85.82, "rotation": 93.92, "x": -6.42, "y": 1.97 }, + { "name": "neck", "parent": "torso", "length": 18.38, "rotation": -1.51, "x": 81.67, "y": -6.34 }, + { "name": "head", "parent": "neck", "length": 68.28, "rotation": -13.92, "x": 20.93, "y": 11.59 }, + { "name": "left shoulder", "parent": "torso", "length": 35.43, "rotation": -156.96, "x": 74.04, "y": -20.38 }, + { "name": "left arm", "parent": "left shoulder", "length": 35.62, "rotation": 28.16, "x": 37.85, "y": -2.34 }, + { "name": "left upper leg", "parent": "hip", "length": 50.39, "rotation": -89.09, "x": 14.45, "y": 2.81 }, + { "name": "left lower leg", "parent": "left upper leg", "length": 49.89, "rotation": -16.65, "x": 56.34, "y": 0.98 }, + { "name": "left foot", "parent": "left lower leg", "length": 46.5, "rotation": 102.43, "x": 58.94, "y": -7.61 }, + { "name": "left hand", "parent": "left arm", "length": 11.52, "rotation": 2.7, "x": 35.62, "y": 0.07 }, { "name": "pelvis", "parent": "hip", "x": 1.41, "y": -6.57 }, - { "name": "right upper leg", "parent": "hip", "length": 42.45, "x": -20.07, "y": -6.83, "rotation": -97.49 }, - { "name": "torso", "parent": "hip", "length": 85.82, "x": -6.42, "y": 1.97, "rotation": 93.92 }, - { "name": "left lower leg", "parent": "left upper leg", "length": 49.89, "x": 56.34, "y": 0.98, "rotation": -16.65 }, - { "name": "left shoulder", "parent": "torso", "length": 35.43, "x": 74.04, "y": -20.38, "rotation": -156.96 }, - { "name": "neck", "parent": "torso", "length": 18.38, "x": 81.67, "y": -6.34, "rotation": -1.51 }, - { "name": "right lower leg", "parent": "right upper leg", "length": 58.52, "x": 42.99, "y": -0.61, "rotation": -14.34 }, - { "name": "right shoulder", "parent": "torso", "length": 37.24, "x": 76.02, "y": 18.14, "rotation": 133.88 }, - { "name": "head", "parent": "neck", "length": 68.28, "x": 20.93, "y": 11.59, "rotation": -13.92 }, - { "name": "left arm", "parent": "left shoulder", "length": 35.62, "x": 37.85, "y": -2.34, "rotation": 28.16 }, - { "name": "left foot", "parent": "left lower leg", "length": 46.5, "x": 58.94, "y": -7.61, "rotation": 102.43 }, - { "name": "right arm", "parent": "right shoulder", "length": 36.74, "x": 37.6, "y": 0.31, "rotation": 36.32 }, - { "name": "right foot", "parent": "right lower leg", "length": 45.45, "x": 64.88, "y": 0.04, "rotation": 110.3 }, - { "name": "left hand", "parent": "left arm", "length": 11.52, "x": 35.62, "y": 0.07, "rotation": 2.7 }, - { "name": "right hand", "parent": "right arm", "length": 15.32, "x": 36.9, "y": 0.34, "rotation": 2.35 }, - { "name": "spear1", "parent": "left hand", "length": 65.06, "x": 0.48, "y": 17.03, "rotation": 102.43 }, - { "name": "spear2", "parent": "spear1", "length": 61.41, "x": 65.05, "y": 0.04, "rotation": 0.9 }, - { "name": "spear3", "parent": "spear2", "length": 76.79, "x": 61.88, "y": 0.57, "rotation": -0.9 } + { "name": "right shoulder", "parent": "torso", "length": 37.24, "rotation": 133.88, "x": 76.02, "y": 18.14 }, + { "name": "right arm", "parent": "right shoulder", "length": 36.74, "rotation": 36.32, "x": 37.6, "y": 0.31 }, + { "name": "right upper leg", "parent": "hip", "length": 42.45, "rotation": -97.49, "x": -20.07, "y": -6.83 }, + { "name": "right lower leg", "parent": "right upper leg", "length": 58.52, "rotation": -14.34, "x": 42.99, "y": -0.61 }, + { "name": "right foot", "parent": "right lower leg", "length": 45.45, "rotation": 110.3, "x": 64.88, "y": 0.04 }, + { "name": "right hand", "parent": "right arm", "length": 15.32, "rotation": 2.35, "x": 36.9, "y": 0.34 }, + { "name": "spear1", "parent": "left hand", "length": 65.06, "rotation": 102.43, "x": 0.48, "y": 17.03 }, + { "name": "spear2", "parent": "spear1", "length": 61.41, "rotation": 0.9, "x": 65.05, "y": 0.04 }, + { "name": "spear3", "parent": "spear2", "length": 76.79, "rotation": -0.9, "x": 61.88, "y": 0.57 } ], "slots": [ { "name": "left shoulder", "bone": "left shoulder", "attachment": "left shoulder" }, @@ -52,12 +53,12 @@ "left hand item": { "dagger": { "x": 7.88, "y": -23.45, "rotation": 10.47, "width": 26, "height": 108 }, "spear": { - "type": "skinnedmesh", + "type": "mesh", "uvs": [ 1, 0.11236, 0.77096, 0.13278, 0.76608, 0.21781, 0.75642, 0.386, 0.74723, 0.54607, 0.72117, 1, 0.28838, 1, 0.24208, 0.54327, 0.22589, 0.38361, 0.2089, 0.21605, 0.20043, 0.13242, 0, 0.11519, 0.4527, 0, 0.58399, 0 ], - "triangles": [ 5, 6, 4, 6, 7, 4, 4, 7, 3, 2, 9, 1, 9, 10, 1, 10, 12, 1, 12, 13, 1, 1, 13, 0, 10, 11, 12, 3, 8, 2, 8, 9, 2, 7, 8, 3 ], - "vertices": [ 1, 20, 38.54, -10.88, 1, 1, 20, 30.97, -5.93, 1, 2, 19, 61.48, -5.58, 0.51, 20, -0.31, -6.16, 0.48, 2, 18, 64.73, -5.03, 0.5, 19, -0.4, -5.06, 0.49, 1, 16, 4.56, 23.91, 1, 1, 16, 41.7, -138.95, 1, 1, 16, 32.42, -141.1, 1, 1, 16, -6.49, 22.4, 1, 2, 18, 65.48, 6.64, 0.5, 19, 0.53, 6.59, 0.49, 2, 19, 62.18, 6.66, 0.51, 20, 0.2, 6.09, 0.48, 1, 20, 30.96, 6.61, 1, 1, 20, 37.26, 11.09, 1, 1, 20, 79.75, 1.59, 1, 1, 20, 79.78, -1.29, 1 ], - "edges": [ 24, 22, 22, 20, 10, 12, 2, 0, 24, 26, 0, 26, 8, 10, 12, 14, 6, 8, 14, 16, 2, 4, 4, 6, 16, 18, 18, 20, 20, 2 ], + "triangles": [ 4, 7, 3, 6, 7, 4, 5, 6, 4, 10, 11, 12, 1, 13, 0, 12, 13, 1, 10, 12, 1, 9, 10, 1, 2, 9, 1, 8, 9, 2, 3, 8, 2, 7, 8, 3 ], + "vertices": [ 1, 20, 38.54, -10.88, 1, 1, 20, 30.97, -5.93, 1, 2, 19, 61.48, -5.58, 0.5116, 20, -0.31, -6.16, 0.48839, 2, 18, 64.73, -5.03, 0.50272, 19, -0.4, -5.06, 0.49728, 1, 10, 4.56, 23.91, 1, 1, 10, 41.7, -138.95, 1, 1, 10, 32.41999, -141.1, 1, 1, 10, -6.49, 22.4, 1, 2, 18, 65.48, 6.64, 0.50272, 19, 0.52999, 6.59, 0.49728, 2, 19, 62.18, 6.66, 0.5116, 20, 0.2, 6.09, 0.48839, 1, 20, 30.96, 6.61, 1, 1, 20, 37.25999, 11.09, 1, 1, 20, 79.75, 1.59, 1, 1, 20, 79.78, -1.29, 1 ], "hull": 14, + "edges": [ 24, 22, 22, 20, 10, 12, 2, 0, 24, 26, 0, 26, 8, 10, 12, 14, 6, 8, 14, 16, 2, 4, 4, 6, 16, 18, 18, 20, 20, 2 ], "width": 22, "height": 368 } @@ -68,8 +69,8 @@ "uvs": [ 0.78091, 0.38453, 1, 0.38405, 1, 0.44881, 0.73953, 0.4687, 0.74641, 0.81344, 0.34022, 1, 0.15434, 1, 0.11303, 0.78858, 0.23007, 0.47367, 0, 0.45047, 0, 0.38621, 0.22367, 0.38573, 0.24384, 0, 1, 0 ], "triangles": [ 0, 12, 13, 11, 12, 0, 0, 1, 2, 9, 10, 11, 3, 11, 0, 3, 0, 2, 8, 11, 3, 9, 11, 8, 5, 6, 7, 4, 5, 8, 4, 8, 3, 5, 7, 8 ], "vertices": [ 15.49, -12.82, 21.13, -13.57, 20.16, -20.49, 13.15, -21.67, 8.13, -58.56, -5.13, -77.04, -9.92, -76.36, -7.79, -53.6, -0.03, -20.36, -5.6, -17.04, -4.63, -10.17, 1.12, -10.93, 7.46, 30.24, 26.93, 27.49 ], - "edges": [ 22, 20, 24, 26, 22, 24, 2, 0, 0, 22, 0, 26, 12, 14, 14, 16, 18, 20, 16, 18, 2, 4, 4, 6, 6, 8, 10, 12, 8, 10 ], "hull": 14, + "edges": [ 22, 20, 24, 26, 22, 24, 2, 0, 0, 22, 0, 26, 12, 14, 14, 16, 18, 20, 16, 18, 2, 4, 4, 6, 6, 8, 10, 12, 8, 10 ], "width": 26, "height": 108 } @@ -87,10 +88,10 @@ "name": "goblin/head", "type": "mesh", "uvs": [ 0, 0.60494, 0.14172, 0.5145, 0.24218, 0.55229, 0.32667, 0.67806, 0.37969, 0.79352, 0.53505, 0.93014, 0.86056, 1, 0.94071, 0.94169, 0.92098, 0.69923, 0.9888, 0.65497, 0.99003, 0.51643, 0.89632, 0.43561, 0.94487, 0.41916, 1, 0.39713, 1, 0.2836, 0.94017, 0.27027, 0.87906, 0.25666, 0.80754, 0.16044, 0.66698, 0.01997, 0.4734, 0.01805, 0.29215, 0.19893, 0.25392, 0.31823, 0.09117, 0.324, 0, 0.44331, 0.43271, 0.69153, 0.466, 0.47794, 0.35996, 0.31246, 0.73473, 0.68593, 0.72215, 0.57425, 0.88179, 0.5583, 0.80267, 0.51015 ], - "triangles": [ 26, 20, 19, 21, 20, 26, 15, 14, 13, 12, 15, 13, 11, 16, 15, 11, 15, 12, 26, 17, 25, 18, 26, 19, 17, 26, 18, 30, 25, 17, 30, 17, 16, 30, 16, 11, 1, 22, 21, 23, 22, 1, 2, 1, 21, 2, 21, 26, 29, 30, 11, 29, 11, 10, 28, 25, 30, 0, 23, 1, 9, 29, 10, 25, 3, 2, 25, 2, 26, 29, 27, 28, 29, 28, 30, 24, 3, 25, 24, 25, 28, 24, 28, 27, 8, 29, 9, 27, 29, 8, 4, 3, 24, 5, 24, 27, 4, 24, 5, 7, 6, 27, 7, 27, 8, 5, 27, 6 ], - "vertices": [ 14.56, 50.42, 23.12, 35.47, 17.46, 26.36, 11.57, 16.86, 3.74, 11.71, -5.89, -3.91, -11.83, -37.23, -8.31, -45.63, 7.75, -44.24, 10.39, -51.33, 19.52, -51.82, 25.21, -43.15, 26.12, -47.43, 27.35, -53.16, 34.84, -53.46, 35.96, -47.33, 37.11, -41.08, 43.75, -33.97, 53.58, -19.87, 54.5, 0.03, 43.31, 19.16, 35.6, 23.41, 35.89, 40.17, 28.39, 49.87, 10.25, 5.99, 24.2, 2, 35.55, 12.48, 9.39, -25.1, 16.8, -24.31, 17.2, -40.65, 20.68, -33.02 ], - "edges": [ 0, 2, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 18, 20, 20, 22, 26, 28, 32, 34, 34, 36, 36, 38, 38, 40, 40, 42, 42, 44, 44, 46, 0, 46, 6, 48, 48, 50, 50, 52, 52, 42, 2, 4, 4, 6, 4, 52, 2, 44, 22, 32, 22, 24, 24, 26, 28, 30, 30, 32, 24, 30, 16, 54, 54, 56, 20, 58, 58, 54, 16, 58, 22, 60, 60, 56, 58, 60 ], + "triangles": [ 5, 27, 6, 7, 27, 8, 7, 6, 27, 4, 24, 5, 5, 24, 27, 4, 3, 24, 27, 29, 8, 8, 29, 9, 24, 28, 27, 24, 25, 28, 24, 3, 25, 29, 28, 30, 29, 27, 28, 25, 2, 26, 25, 3, 2, 9, 29, 10, 0, 23, 1, 28, 25, 30, 29, 11, 10, 29, 30, 11, 2, 21, 26, 2, 1, 21, 23, 22, 1, 1, 22, 21, 30, 16, 11, 30, 17, 16, 30, 25, 17, 17, 26, 18, 18, 26, 19, 26, 17, 25, 11, 15, 12, 11, 16, 15, 12, 15, 13, 15, 14, 13, 21, 20, 26, 26, 20, 19 ], + "vertices": [ 14.56, 50.42, 23.12, 35.47, 17.45999, 26.36, 11.57, 16.86, 3.74, 11.71, -5.89, -3.91, -11.83, -37.23, -8.31, -45.63, 7.75, -44.24, 10.39, -51.33, 19.52, -51.82, 25.21, -43.15, 26.12, -47.43, 27.35, -53.16, 34.84, -53.46, 35.96, -47.33, 37.11, -41.08, 43.75, -33.97, 53.58, -19.87, 54.5, 0.03, 43.31, 19.16, 35.59999, 23.41, 35.89, 40.16999, 28.39, 49.87, 10.25, 5.99, 24.2, 2, 35.55, 12.48, 9.39, -25.1, 16.79999, -24.31, 17.2, -40.65, 20.68, -33.02 ], "hull": 24, + "edges": [ 0, 2, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 18, 20, 20, 22, 26, 28, 32, 34, 34, 36, 36, 38, 38, 40, 40, 42, 42, 44, 44, 46, 0, 46, 6, 48, 48, 50, 50, 52, 52, 42, 2, 4, 4, 6, 4, 52, 2, 44, 22, 32, 22, 24, 24, 26, 28, 30, 30, 32, 24, 30, 16, 54, 54, 56, 20, 58, 58, 54, 16, 58, 22, 60, 60, 56, 58, 60 ], "width": 103, "height": 66 } @@ -100,10 +101,10 @@ "name": "goblin/left-arm", "type": "mesh", "uvs": [ 0.68992, 0.29284, 1, 0.46364, 1, 0.74643, 0.84089, 1, 0.66344, 1, 0.33765, 0.64284, 0, 0.44124, 0, 0, 0.34295, 0 ], - "triangles": [ 6, 7, 8, 5, 6, 8, 0, 5, 8, 0, 1, 2, 5, 0, 2, 4, 5, 2, 3, 4, 2 ], - "vertices": [ 18.6, 8.81, 32.19, 10.31, 38.02, 1.62, 38.08, -9.63, 32.31, -13.49, 14.37, -9.62, -0.75, -10.78, -9.84, 2.77, 1.29, 10.25 ], - "edges": [ 14, 16, 16, 0, 0, 2, 2, 4, 6, 4, 6, 8, 8, 10, 12, 14, 10, 12 ], + "triangles": [ 3, 4, 2, 4, 5, 2, 5, 0, 2, 0, 1, 2, 0, 5, 8, 5, 6, 8, 6, 7, 8 ], + "vertices": [ 18.6, 8.81, 32.18999, 10.31, 38.02, 1.62, 38.08, -9.63, 32.31, -13.49, 14.37, -9.62, -0.75, -10.78, -9.84, 2.77, 1.29, 10.25 ], "hull": 9, + "edges": [ 14, 16, 16, 0, 0, 2, 2, 4, 6, 4, 6, 8, 8, 10, 12, 14, 10, 12 ], "width": 37, "height": 35 } @@ -115,8 +116,8 @@ "uvs": [ 0.15733, 0.31873, 0.08195, 0.78502, 0.15884, 0.99366, 0.41633, 0.96804, 0.68822, 0.97636, 1, 0.96388, 0.99385, 0.73501, 0.85294, 0.51862, 0.61479, 0.31056, 0.46991, 0, 0.48032, 0.75604, 0.75994, 0.77706 ], "triangles": [ 0, 9, 8, 10, 0, 8, 10, 8, 7, 11, 10, 7, 11, 7, 6, 1, 0, 10, 11, 6, 5, 3, 1, 10, 4, 10, 11, 4, 11, 5, 3, 10, 4, 2, 1, 3 ], "vertices": [ 2.28, 13.07, -1.76, -1.64, 3.59, -7.8, 20.25, -6.04, 37.91, -5.27, 58.12, -3.71, 57.31, 3.34, 47.78, 9.51, 31.95, 15.05, 21.99, 24.11, 24.03, 0.75, 42.21, 1.16 ], - "edges": [ 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 0, 18, 6, 20, 20, 16, 2, 20, 8, 22, 22, 14, 20, 22, 22, 10 ], "hull": 10, + "edges": [ 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 0, 18, 6, 20, 20, 16, 2, 20, 8, 22, 22, 14, 20, 22, 22, 10 ], "width": 65, "height": 31 } @@ -127,9 +128,9 @@ "type": "mesh", "uvs": [ 0.518, 0.12578, 1, 0.16285, 0.99788, 0.50578, 0.69745, 1, 0.37445, 1, 0, 0.80051, 0, 0.42792, 0.17601, 0, 0.43567, 0 ], "triangles": [ 2, 0, 1, 0, 5, 6, 6, 7, 0, 0, 7, 8, 3, 4, 0, 4, 5, 0, 2, 3, 0 ], - "vertices": [ -3.11, 15.42, 10.83, 22.27, 15.5, 14.55, 18.35, -8.96, 9.48, -14.32, -4.58, -14.3, -11.63, -2.63, -14.89, 13.68, -7.75, 17.99 ], - "edges": [ 16, 0, 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 14, 16, 12, 14 ], + "vertices": [ -3.11, 15.42, 10.83, 22.27, 15.5, 14.55, 18.35, -8.96, 9.47999, -14.32, -4.58, -14.3, -11.63, -2.63, -14.89, 13.68, -7.75, 17.99 ], "hull": 9, + "edges": [ 16, 0, 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 14, 16, 12, 14 ], "width": 36, "height": 41 } @@ -140,9 +141,9 @@ "type": "mesh", "uvs": [ 0.95508, 0.20749, 0.81927, 0.65213, 0.94754, 0.77308, 0.67842, 0.97346, 0.46463, 1, 0.26845, 1, 0.04963, 0.90706, 0.2106, 0.60115, 0.07478, 0.40195, 0.18545, 0, 0.28857, 0 ], "triangles": [ 10, 8, 9, 1, 7, 10, 7, 8, 10, 0, 1, 10, 1, 4, 7, 3, 1, 2, 5, 6, 7, 7, 4, 5, 1, 3, 4 ], - "vertices": [ -0.19, 6.82, 30.97, 10.96, 37.97, 17.33, 53.88, 12.6, 57.58, 6.31, 59.34, 0.08, 55.04, -8.63, 32.99, -9.33, 20.79, -17.43, -7.27, -21.56, -8.19, -18.29 ], - "edges": [ 20, 0, 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 18, 20, 16, 18 ], + "vertices": [ -0.19, 6.82, 30.97, 10.96, 37.97, 17.33, 53.88, 12.6, 57.58, 6.31, 59.34, 0.08, 55.04, -8.63, 32.99, -9.33, 20.79, -17.43, -7.27, -21.56, -8.18999, -18.29 ], "hull": 11, + "edges": [ 20, 0, 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 18, 20, 16, 18 ], "width": 33, "height": 70 } @@ -152,10 +153,10 @@ "name": "goblin/left-shoulder", "type": "mesh", "uvs": [ 0.7377, 0.40692, 1, 0.75237, 1, 1, 0.62046, 1, 0.26184, 0.56601, 0, 0.29783, 0, 0, 0.44115, 0 ], - "triangles": [ 5, 6, 7, 4, 5, 7, 4, 7, 0, 3, 4, 0, 3, 0, 1, 3, 1, 2 ], - "vertices": [ 15.18, 5.74, 32.17, 5.32, 41.79, 0.21, 36.63, -9.5, 14.88, -9.72, 0.9, -10.89, -10.66, -4.74, -4.66, 6.54 ], - "edges": [ 12, 14, 14, 0, 4, 2, 0, 2, 4, 6, 6, 8, 10, 12, 8, 10 ], + "triangles": [ 3, 1, 2, 3, 0, 1, 3, 4, 0, 4, 7, 0, 4, 5, 7, 5, 6, 7 ], + "vertices": [ 15.18, 5.74, 32.16999, 5.32, 41.79, 0.21, 36.63, -9.5, 14.88, -9.72, 0.9, -10.89, -10.66, -4.73999, -4.66, 6.54 ], "hull": 8, + "edges": [ 12, 14, 14, 0, 4, 2, 0, 2, 4, 6, 6, 8, 10, 12, 8, 10 ], "width": 29, "height": 44 } @@ -167,8 +168,8 @@ "uvs": [ 1, 0.12167, 1, 0.54873, 0.91067, 0.78907, 0.76567, 1, 0.3087, 0.9579, 0, 0.68777, 0, 0.219, 0.51961, 0, 0.87552, 0 ], "triangles": [ 7, 8, 0, 5, 6, 7, 0, 1, 7, 4, 5, 7, 1, 4, 7, 2, 4, 1, 3, 4, 2 ], "vertices": [ 2.33, 13.06, 33.5, 12.57, 51, 9.34, 66.32, 4.31, 63, -10.71, 43.13, -20.58, 8.91, -20.04, -6.79, -2.64, -6.61, 9.1 ], - "edges": [ 10, 8, 8, 6, 6, 4, 4, 2, 10, 12, 12, 14, 14, 16, 2, 0, 16, 0 ], "hull": 9, + "edges": [ 10, 8, 8, 6, 6, 4, 4, 2, 10, 12, 12, 14, 14, 16, 2, 0, 16, 0 ], "width": 33, "height": 73 } @@ -178,10 +179,10 @@ "name": "goblin/neck", "type": "mesh", "uvs": [ 0.81967, 0.27365, 0.92101, 0.82048, 0.47134, 1, 0.15679, 0.9354, 0, 0.7556, 0.19268, 0.51833, 0.15468, 0.35706, 0, 0.21989, 0.13568, 0, 0.68878, 0, 0.70145, 0.53872 ], - "triangles": [ 6, 8, 9, 6, 9, 0, 7, 8, 6, 10, 5, 6, 0, 10, 6, 10, 0, 1, 3, 4, 5, 2, 5, 10, 2, 10, 1, 3, 5, 2 ], - "vertices": [ 18.62, -11.65, -3.98, -13.85, -10.28, 2.76, -6.91, 13.89, 0.8, 19.05, 10.06, 11.51, 16.74, 12.45, 22.71, 17.64, 31.4, 12.19, 30.12, -7.67, 8.05, -6.71 ], - "edges": [ 14, 12, 12, 10, 10, 8, 8, 6, 6, 4, 4, 2, 2, 20, 20, 0, 0, 18, 16, 18, 14, 16, 0, 2 ], + "triangles": [ 3, 5, 2, 2, 10, 1, 2, 5, 10, 3, 4, 5, 10, 0, 1, 0, 10, 6, 10, 5, 6, 7, 8, 6, 6, 9, 0, 6, 8, 9 ], + "vertices": [ 18.62, -11.65, -3.98, -13.85, -10.28, 2.76, -6.91, 13.89, 0.8, 19.04999, 10.06, 11.51, 16.74, 12.45, 22.71, 17.64, 31.4, 12.19, 30.12, -7.67, 8.05, -6.71 ], "hull": 10, + "edges": [ 14, 12, 12, 10, 10, 8, 8, 6, 6, 4, 4, 2, 2, 20, 20, 0, 0, 18, 16, 18, 14, 16, 0, 2 ], "width": 36, "height": 41 } @@ -193,8 +194,8 @@ "uvs": [ 1, 1, 0, 1, 0, 0, 1, 0 ], "triangles": [ 1, 2, 3, 1, 3, 0 ], "vertices": [ 25.38, -20.73, -36.61, -20.73, -36.61, 22.26, 25.38, 22.26 ], - "edges": [ 0, 2, 2, 4, 4, 6, 0, 6 ], "hull": 4, + "edges": [ 0, 2, 2, 4, 4, 6, 0, 6 ], "width": 62, "height": 43 } @@ -204,10 +205,10 @@ "name": "goblin/right-arm", "type": "mesh", "uvs": [ 1, 0.09223, 1, 0.8501, 0.72058, 1, 0.24384, 1, 0, 0.86558, 0.20822, 0.10919, 0.50903, 0, 0.85342, 0 ], - "triangles": [ 6, 7, 0, 2, 3, 5, 4, 5, 3, 1, 6, 0, 6, 2, 5, 1, 2, 6 ], - "vertices": [ -4.75, 8.89, 33.03, 11.74, 40.99, 5.89, 41.81, -5.03, 35.53, -11.13, -2.53, -9.2, -8.5, -2.71, -9.09, 5.18 ], - "edges": [ 8, 6, 4, 6, 4, 2, 12, 14, 2, 0, 14, 0, 10, 12, 8, 10 ], + "triangles": [ 1, 2, 6, 6, 2, 5, 1, 6, 0, 4, 5, 3, 2, 3, 5, 6, 7, 0 ], + "vertices": [ -4.75, 8.89, 33.03, 11.74, 40.99, 5.89, 41.81, -5.03, 35.53, -11.13, -2.53, -9.2, -8.5, -2.71, -9.09, 5.17999 ], "hull": 8, + "edges": [ 8, 6, 4, 6, 4, 2, 12, 14, 2, 0, 14, 0, 10, 12, 8, 10 ], "width": 23, "height": 50 } @@ -219,8 +220,8 @@ "uvs": [ 0.40851, 0.0047, 0.59087, 0.33404, 0.75959, 0.48311, 0.88907, 0.59751, 0.97532, 0.89391, 0.90385, 1, 0.6722, 1, 0.38633, 1, 0.08074, 1, 0, 0.88921, 0, 0.65984, 0, 0.46577, 0.0906, 0.0988, 0.305, 0, 0.47461, 0.71257, 0.715, 0.74681 ], "triangles": [ 1, 10, 11, 1, 13, 0, 14, 1, 2, 1, 12, 13, 12, 1, 11, 14, 10, 1, 15, 14, 2, 15, 2, 3, 9, 10, 14, 15, 3, 4, 7, 8, 9, 14, 7, 9, 6, 14, 15, 5, 6, 15, 7, 14, 6, 4, 5, 15 ], "vertices": [ 17.36, 25.99, 29.13, 15.44, 39.89, 10.8, 48.14, 7.24, 53.84, -2.38, 49.43, -6, 34.84, -6.39, 16.84, -6.87, -2.4, -7.38, -7.58, -3.86, -7.78, 3.7, -7.95, 10.1, -2.57, 22.36, 10.84, 25.97, 22.14, 2.75, 37.31, 2.03 ], - "edges": [ 0, 2, 6, 8, 8, 10, 16, 18, 22, 24, 24, 26, 0, 26, 10, 12, 2, 4, 4, 6, 12, 14, 14, 16, 18, 20, 20, 22, 2, 28, 28, 14, 20, 28, 4, 30, 30, 12, 28, 30, 30, 8 ], "hull": 14, + "edges": [ 0, 2, 6, 8, 8, 10, 16, 18, 22, 24, 24, 26, 0, 26, 10, 12, 2, 4, 4, 6, 12, 14, 14, 16, 18, 20, 20, 22, 2, 28, 28, 14, 20, 28, 4, 30, 30, 12, 28, 30, 30, 8 ], "width": 63, "height": 33 } @@ -231,9 +232,9 @@ "type": "mesh", "uvs": [ 0.17957, 0, 0, 0.44772, 0, 0.79734, 0.20057, 0.94264, 0.55057, 1, 0.8539, 1, 0.89823, 0.82004, 0.8259, 0.74285, 0.84223, 0.49993, 0.96356, 0.34102, 0.66023, 0 ], "triangles": [ 8, 10, 9, 0, 10, 1, 8, 2, 1, 8, 1, 10, 7, 3, 8, 3, 2, 8, 4, 3, 7, 5, 7, 6, 4, 7, 5 ], - "vertices": [ -10.82, -9.45, 5.95, -15.34, 18.88, -14.9, 24, -7.5, 25.69, 5.16, 25.31, 16.07, 18.61, 17.44, 15.84, 14.74, 6.84, 15.02, 0.81, 19.18, -11.41, 7.83 ], - "edges": [ 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 18, 20, 0, 20 ], + "vertices": [ -10.82, -9.45, 5.95, -15.34, 18.87999, -14.9, 24, -7.5, 25.69, 5.16, 25.31, 16.07, 18.61, 17.44, 15.84, 14.74, 6.84, 15.02, 0.81, 19.18, -11.41, 7.83 ], "hull": 11, + "edges": [ 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 18, 20, 0, 20 ], "width": 36, "height": 37 } @@ -245,8 +246,8 @@ "uvs": [ 0.88538, 0.22262, 0.76167, 0.3594, 0.75088, 0.78308, 0.95326, 0.84981, 1, 0.60302 ], "triangles": [ 1, 0, 4, 2, 1, 4, 3, 2, 4 ], "vertices": [ -2.82, 15.97, 2.4, 11.71, 18.08, 11.9, 20.27, 19.27, 11.09, 20.62 ], - "edges": [ 2, 4, 4, 6, 6, 8, 2, 0, 0, 8 ], "hull": 5, + "edges": [ 2, 4, 4, 6, 6, 8, 2, 0, 0, 8 ], "width": 36, "height": 37 } @@ -257,9 +258,9 @@ "type": "mesh", "uvs": [ 1, 0.27261, 0.81312, 0.52592, 0.79587, 0.71795, 0.95544, 0.80988, 0.85193, 0.95493, 0.47241, 1, 0.14033, 1, 0, 0.8773, 0.14896, 0.67914, 0.1619, 0.30325, 0.60611, 0 ], "triangles": [ 1, 10, 0, 9, 10, 1, 8, 9, 1, 2, 8, 1, 4, 2, 3, 6, 7, 8, 5, 6, 8, 2, 5, 8, 4, 5, 2 ], - "vertices": [ 6.26, 8.46, 23.32, 8.04, 37.1, 12.89, 41.45, 20.82, 53.07, 21.46, 61.33, 10.06, 65.77, -1.03, 58.99, -9.19, 43.02, -9.81, 16.33, -20, -12.79, -9.26 ], - "edges": [ 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 0, 20, 18, 20 ], + "vertices": [ 6.26, 8.46, 23.32, 8.04, 37.09999, 12.89, 41.45, 20.82, 53.07, 21.46, 61.33, 10.06, 65.76999, -1.03, 58.99, -9.18999, 43.02, -9.81, 16.33, -20, -12.79, -9.26 ], "hull": 11, + "edges": [ 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 0, 20, 18, 20 ], "width": 36, "height": 76 } @@ -269,10 +270,10 @@ "name": "goblin/right-shoulder", "type": "mesh", "uvs": [ 0.62008, 0.03708, 0.92131, 0.09048, 1, 0.38319, 0.72049, 0.6937, 0.31656, 1, 0, 1, 0, 0.75106, 0.28233, 0.49988 ], - "triangles": [ 2, 3, 0, 2, 0, 1, 7, 0, 3, 4, 5, 6, 4, 7, 3, 4, 6, 7 ], + "triangles": [ 4, 6, 7, 4, 7, 3, 4, 5, 6, 7, 0, 3, 2, 0, 1, 2, 3, 0 ], "vertices": [ -3.17, -11.05, -9, -0.57, -1.01, 10.33, 16.69, 11.17, 37.41, 8.2, 45.45, -1.16, 36.95, -8.46, 21.2, -7.47 ], - "edges": [ 10, 12, 12, 14, 14, 0, 0, 2, 2, 4, 4, 6, 8, 10, 6, 8 ], "hull": 8, + "edges": [ 10, 12, 12, 14, 14, 0, 0, 2, 2, 4, 4, 6, 8, 10, 6, 8 ], "width": 39, "height": 45 } @@ -283,9 +284,9 @@ "type": "mesh", "uvs": [ 0.27018, 0, 0.11618, 0.18177, 0, 0.70688, 0, 0.89577, 0.26668, 1, 0.48718, 1, 0.67618, 0.83532, 1, 0.5161, 1, 0.25543, 0.74618, 0.0571 ], "triangles": [ 9, 8, 7, 9, 1, 0, 6, 9, 7, 6, 1, 9, 2, 1, 6, 4, 3, 2, 6, 4, 2, 5, 4, 6 ], - "vertices": [ -9.85, -10.37, 2.17, -14.07, 35.49, -13.66, 47.29, -12.11, 52.61, -2.26, 51.63, 5.16, 40.51, 10.18, 19.13, 18.47, 2.85, 16.32, -8.4, 6.14 ], - "edges": [ 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 0, 18 ], + "vertices": [ -9.85, -10.37, 2.17, -14.07, 35.49, -13.66, 47.29, -12.11, 52.61, -2.26, 51.63, 5.16, 40.50999, 10.18, 19.12999, 18.46999, 2.85, 16.32, -8.39999, 6.14 ], "hull": 10, + "edges": [ 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 0, 18 ], "width": 34, "height": 63 } @@ -295,10 +296,10 @@ "name": "goblin/torso", "type": "mesh", "uvs": [ 0, 0.33287, 0.15945, 0.46488, 0.15761, 0.60314, 0.15502, 0.79806, 0.32807, 0.93478, 0.6875, 1, 0.80731, 1, 1, 0.77763, 1, 0.66147, 1, 0.56703, 0.93207, 0.4771, 0.86944, 0.39416, 0.83837, 0.226, 0.68085, 0, 0.14836, 0, 0, 0.07199, 0.78734, 0.86249, 0.43679, 0.79649, 0.76738, 0.61733, 0.44345, 0.58747, 0.54329, 0.38316, 0.77692, 0.73446, 0.66478, 0.51012 ], - "triangles": [ 0, 15, 14, 20, 14, 13, 20, 13, 12, 1, 0, 14, 20, 12, 11, 20, 1, 14, 22, 20, 11, 22, 11, 10, 19, 1, 20, 19, 20, 22, 2, 1, 19, 18, 22, 10, 18, 10, 9, 19, 22, 18, 18, 9, 8, 21, 18, 8, 21, 8, 7, 17, 2, 19, 21, 17, 19, 21, 19, 18, 3, 2, 17, 16, 21, 7, 17, 21, 16, 4, 3, 17, 5, 17, 16, 4, 17, 5, 6, 16, 7, 5, 16, 6 ], - "vertices": [ 56.93, 27.95, 43.37, 18.23, 30.16, 19.5, 11.53, 21.28, -2.55, 10.69, -10.89, -13.12, -11.59, -21.23, 8.54, -36.12, 19.65, -37.08, 28.68, -37.86, 37.68, -34, 45.98, -30.44, 56.4, -29.07, 84.78, -20.92, 87.9, 15.15, 81.88, 25.79, 1.67, -21.01, 10.03, 2.18, 25.23, -18.25, 29.98, 0, 48.54, -8.39, 13.98, -21.36, 35.9, -15.6 ], - "edges": [ 0, 2, 6, 8, 8, 10, 10, 12, 12, 14, 22, 24, 24, 26, 26, 28, 28, 30, 0, 30, 14, 32, 32, 34, 34, 6, 18, 36, 36, 38, 2, 4, 4, 6, 38, 4, 2, 40, 40, 22, 40, 38, 38, 34, 32, 10, 34, 8, 40, 28, 14, 16, 16, 18, 32, 42, 42, 36, 16, 42, 42, 34, 18, 20, 20, 22, 36, 44, 44, 40, 20, 44 ], + "triangles": [ 5, 16, 6, 6, 16, 7, 4, 17, 5, 5, 17, 16, 4, 3, 17, 17, 21, 16, 16, 21, 7, 3, 2, 17, 21, 19, 18, 21, 17, 19, 17, 2, 19, 21, 8, 7, 21, 18, 8, 18, 9, 8, 19, 22, 18, 18, 10, 9, 18, 22, 10, 2, 1, 19, 19, 20, 22, 19, 1, 20, 22, 11, 10, 22, 20, 11, 20, 1, 14, 20, 12, 11, 1, 0, 14, 20, 13, 12, 20, 14, 13, 0, 15, 14 ], + "vertices": [ 56.93, 27.95, 43.37, 18.23, 30.16, 19.5, 11.53, 21.28, -2.55, 10.69, -10.89, -13.12, -11.59, -21.23, 8.54, -36.12, 19.65, -37.08, 28.68, -37.86, 37.68, -34, 45.98, -30.44, 56.4, -29.07, 84.78, -20.92, 87.9, 15.15, 81.87999, 25.79, 1.67, -21.01, 10.03, 2.18, 25.23, -18.25, 29.98, 0, 48.54, -8.39, 13.98, -21.36, 35.9, -15.6 ], "hull": 16, + "edges": [ 0, 2, 6, 8, 8, 10, 10, 12, 12, 14, 22, 24, 24, 26, 26, 28, 28, 30, 0, 30, 14, 32, 32, 34, 34, 6, 18, 36, 36, 38, 2, 4, 4, 6, 38, 4, 2, 40, 40, 22, 40, 38, 38, 34, 32, 10, 34, 8, 40, 28, 14, 16, 16, 18, 32, 42, 42, 36, 16, 42, 42, 34, 18, 20, 20, 22, 36, 44, 44, 40, 20, 44 ], "width": 68, "height": 96 } @@ -309,9 +310,9 @@ "type": "mesh", "uvs": [ 0.36097, 0.44959, 0.66297, 0.60591, 1, 0.19486, 1, 0.57117, 0.75897, 1, 0.38697, 1, 0, 0.26433, 0, 0, 0.12497, 0 ], "triangles": [ 6, 7, 8, 6, 8, 0, 3, 1, 2, 5, 0, 1, 6, 0, 5, 4, 1, 3, 5, 1, 4 ], - "vertices": [ -10.56, 12.87, 6.53, 9.9, 25.62, 17.71, 25.62, 10.56, 11.97, 2.41, -9.09, 2.41, -31, 16.39, -31, 21.41, -23.92, 21.41 ], - "edges": [ 14, 16, 16, 0, 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 12, 14, 10, 12, 0, 10, 2, 8 ], + "vertices": [ -10.56, 12.87, 6.53, 9.89999, 25.62, 17.70999, 25.62, 10.56, 11.97, 2.41, -9.09, 2.41, -31, 16.39, -31, 21.41, -23.92, 21.41 ], "hull": 9, + "edges": [ 14, 16, 16, 0, 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 12, 14, 10, 12, 0, 10, 2, 8 ], "width": 55, "height": 19 } @@ -322,9 +323,9 @@ "type": "mesh", "uvs": [ 0, 0.32029, 0.14893, 0.59457, 0.22437, 1, 0.35909, 1, 0.50998, 1, 0.79559, 0.58453, 0.9842, 0.28015, 1, 0.00588, 0.46957, 0.17646, 0, 0.03933, 0.48843, 0.59122, 0.48114, 0.43099 ], "triangles": [ 6, 8, 7, 0, 9, 8, 11, 8, 6, 0, 8, 11, 5, 11, 6, 10, 11, 5, 1, 0, 11, 1, 11, 10, 3, 2, 1, 10, 3, 1, 4, 10, 5, 3, 10, 4 ], - "vertices": [ -13.22, 5.56, -8, -2.47, -5.49, -14.27, -0.64, -14.36, 4.78, -14.45, 15.27, -2.59, 22.22, 6.11, 22.92, 14.05, 3.75, 9.44, -13.08, 13.71, 4.21, -2.59, 4.03, 2.05 ], - "edges": [ 0, 2, 2, 4, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 0, 18, 4, 6, 6, 8, 6, 20, 16, 22, 22, 20, 0, 22, 22, 12, 2, 20, 20, 10 ], + "vertices": [ -13.22, 5.56, -8, -2.47, -5.49, -14.27, -0.64, -14.36, 4.78, -14.45, 15.27, -2.58999, 22.22, 6.11, 22.92, 14.05, 3.75, 9.43999, -13.08, 13.71, 4.21, -2.58999, 4.03, 2.05 ], "hull": 10, + "edges": [ 0, 2, 2, 4, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 0, 18, 4, 6, 6, 8, 6, 20, 16, 22, 22, 20, 0, 22, 22, 12, 2, 20, 20, 10 ], "width": 36, "height": 29 } @@ -757,7 +758,7 @@ ] } }, - "ffd": { + "deform": { "default": { "left hand item": { "spear": [ @@ -769,19 +770,19 @@ { "time": 0, "offset": 26, - "vertices": [ 2.34, 0.14 ], + "vertices": [ 2.34754, 0.14469 ], "curve": [ 0.25, 0, 0.75, 1 ] }, { "time": 0.5, "offset": 8, - "vertices": [ -1.19, 4.31, 0.07, 6.41, 1.66, 6.18, 1.75, 3.59 ], + "vertices": [ -1.19415, 4.31531, 0.07279, 6.41351, 1.66048, 6.18882, 1.75232, 3.59555 ], "curve": [ 0.25, 0, 0.75, 1 ] }, { "time": 1, "offset": 26, - "vertices": [ 2.34, 0.14 ] + "vertices": [ 2.34754, 0.14469 ] } ] } @@ -795,22 +796,22 @@ }, { "time": 0.2, - "vertices": [ -10.97, -6.68, -4.68, -2.46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.08, 0.08, -1.08, 0.08, -1.08, 0.08, 0, 0, -2.22, 2.66, -4.83, 2.7, -5.7, -0.51, -3.15, -1.61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6.64, 0.81, -11.82, -1.34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.08, 0.08 ], + "vertices": [ -10.97826, -6.68962, -4.68015, -2.46175, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.08534, 0.08391, -1.08534, 0.08391, -1.08534, 0.08391, 0, 0, -2.22324, 2.66465, -4.83295, 2.70084, -5.70553, -0.51941, -3.15962, -1.61501, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6.64741, 0.81612, -11.82285, -1.34955, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.08534, 0.08391 ], "curve": [ 0.25, 0, 0.75, 1 ] }, { "time": 0.3666, - "vertices": [ 10.69, 4.05, 3.66, 1.85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.47, 0.09, 1.47, 0.09, 1.47, 0.09, 0, 0, 2.69, -0.22, 3.77, 0.11, 3.68, 1.55, 2.49, 1.65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4.45, -3.91, 9.19, -1.66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.47, 0.09 ], + "vertices": [ 10.69275, 4.05949, 3.66373, 1.85426, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.47305, 0.09017, 1.47305, 0.09017, 1.47305, 0.09017, 0, 0, 2.69652, -0.22738, 3.77135, 0.11417, 3.6893, 1.55352, 2.49594, 1.65501, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4.4588, -3.9113, 9.19593, -1.66854, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.47305, 0.09017 ], "curve": [ 0.621, 0, 0.75, 1 ] }, { "time": 0.7, - "vertices": [ -10.97, -6.68, -4.68, -2.46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.17, -0.17, -1.17, -0.17, -1.17, -0.17, 0, 0, -2.22, 2.66, -4.83, 2.7, -5.7, -0.51, -3.15, -1.61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6.64, 0.81, -11.82, -1.34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.17, -0.17 ], + "vertices": [ -10.97826, -6.68962, -4.68015, -2.46175, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.1755, -0.17183, -1.1755, -0.17182, -1.1755, -0.17183, 0, 0, -2.22324, 2.66465, -4.83295, 2.70084, -5.70553, -0.51941, -3.15962, -1.61501, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6.64741, 0.81612, -11.82285, -1.34955, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.1755, -0.17183 ], "curve": [ 0.25, 0, 0.75, 1 ] }, { "time": 0.8666, - "vertices": [ 10.69, 4.05, 3.66, 1.85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.38, 0.08, 0.38, 0.08, 0.38, 0.08, 0, 0, 2.69, -0.22, 3.77, 0.11, 3.68, 1.55, 2.49, 1.65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4.45, -3.91, 9.19, -1.66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.38, 0.08 ], + "vertices": [ 10.69275, 4.05949, 3.66373, 1.85426, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.38687, 0.08446, 0.38687, 0.08446, 0.38687, 0.08446, 0, 0, 2.69652, -0.22738, 3.77135, 0.11417, 3.6893, 1.55352, 2.49594, 1.65501, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4.4588, -3.9113, 9.19593, -1.66854, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.38687, 0.08446 ], "curve": [ 0.25, 0, 0.75, 1 ] }, { "time": 1 } @@ -821,35 +822,35 @@ { "time": 0, "offset": 8, - "vertices": [ 3.69, 2.37, -7.16, 18.79, -12.78, 14.77, -12.75, 6.5, -3.13, 1.98, -0.44, 0.36, 0, 0, -3.8, 2.98 ] + "vertices": [ 3.69298, 2.37572, -7.16969, 18.79732, -12.78161, 14.7778, -12.75775, 6.50514, -3.13475, 1.98906, -0.44401, 0.36629, 0, 0, -3.80085, 2.98474 ] }, { "time": 0.1333 }, { "time": 0.2333, "offset": 8, - "vertices": [ -3.96, -2.34, -5.8, -12.47, -2.23, -12.99, 2.02, -9.1, 0, 0, 0, 0, 0, 0, -1.35, -5.28 ] + "vertices": [ -3.96072, -2.34594, -5.80445, -12.47629, -2.23129, -12.99037, 2.02941, -9.1036, 0, 0, 0, 0, 0, 0, -1.35254, -5.2883 ] }, { "time": 0.3666, "offset": 8, - "vertices": [ 0.66, 0.33, 0.33, 2.69, -0.48, 2.54, -1.13, 1.38, 0, 0, 0, 0, 0, 0, -0.11, 0.79 ] + "vertices": [ 0.66504, 0.33548, 0.33902, 2.69014, -0.4817, 2.54524, -1.13592, 1.38562, 0, 0, 0, 0, 0, 0, -0.11907, 0.79273 ] }, { "time": 0.5, "curve": "stepped" }, { "time": 0.6333 }, { "time": 0.7333, "offset": 8, - "vertices": [ -2.97, 9.4, -6.91, 19.92, -10.55, 18.41, -12.37, 12.38, -4.72, 6.3, 0, 0, -1.48, 4.88, -7.06, 10.7 ] + "vertices": [ -2.97737, 9.40254, -6.91661, 19.92794, -10.55287, 18.41085, -12.37161, 12.38473, -4.72606, 6.30798, 0, 0, -1.48902, 4.88944, -7.06773, 10.70101 ] }, { "time": 0.8333, "offset": 6, - "vertices": [ 1.05, 1.56, -2.52, 7.99, -5.52, 17.14, -8.93, 15.79, -10.73, 10.22, -4.23, 5.36, 0, 0, 0, 0, -5.83, 8.55 ] + "vertices": [ 1.05318, 1.56361, -2.52722, 7.9974, -5.5203, 17.14136, -8.93317, 15.79635, -10.73747, 10.22055, -4.23801, 5.36992, 0, 0, 0, 0, -5.83147, 8.55531 ] }, { "time": 1, "offset": 8, - "vertices": [ 3.69, 2.37, -7.16, 18.79, -12.78, 14.77, -12.75, 6.5, -3.13, 1.98, -0.44, 0.36, 0, 0, -3.8, 2.98 ] + "vertices": [ 3.69298, 2.37572, -7.16969, 18.79732, -12.78161, 14.7778, -12.75775, 6.50514, -3.13475, 1.98906, -0.44401, 0.36629, 0, 0, -3.80085, 2.98474 ] } ] }, @@ -859,22 +860,22 @@ { "time": 0.1333, "offset": 6, - "vertices": [ -0.68, -4.13 ] + "vertices": [ -0.68989, -4.13283 ] }, { "time": 0.3333, "offset": 6, - "vertices": [ -1.04, -3.1 ] + "vertices": [ -1.04945, -3.10476 ] }, { "time": 0.7, "offset": 6, - "vertices": [ -1.42, -6.3 ] + "vertices": [ -1.4245, -6.30616 ] }, { "time": 0.8666, "offset": 6, - "vertices": [ -1.13, -1.79 ] + "vertices": [ -1.13541, -1.79035 ] }, { "time": 1 } ] @@ -885,38 +886,38 @@ { "time": 0.1333, "offset": 2, - "vertices": [ -2.81, 2.63, -2.35, 3.89, -1.99, 4.86, -0.93, 5.57, -0.48, 5.09, -0.34, 3.42, -0.17, 1.36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.31, 1.91, -1.32, 3.65 ] + "vertices": [ -2.81258, 2.63114, -2.35238, 3.89441, -1.99921, 4.8639, -0.93273, 5.57982, -0.48886, 5.09854, -0.34812, 3.42912, -0.17445, 1.36898, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.31305, 1.91371, -1.32986, 3.65703 ] }, { "time": 0.2333, "offset": 2, - "vertices": [ -6.39, 6.41, -7.74, 8.27, -7.02, 11.35, -4.03, 13.93, -2.5, 12.62, -1.46, 7.58, -0.17, 1.36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3.84, 2.61, -4.53, 7.92 ] + "vertices": [ -6.39088, 6.41245, -7.74575, 8.27191, -7.02471, 11.35894, -4.0347, 13.93454, -2.50399, 12.62962, -1.46124, 7.58915, -0.17445, 1.36898, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3.84765, 2.61215, -4.53955, 7.92357 ] }, { "time": 0.3, "offset": 2, - "vertices": [ -8.27, 6.68, -9.29, 10.13, -8.62, 14.71, -4.58, 18.81, -2.2, 17.1, -0.07, 9.9, 2.54, 1.01, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.94, 2.38, -4.59, 10.01 ] + "vertices": [ -8.27184, 6.68821, -9.29764, 10.13797, -8.62231, 14.71339, -4.58629, 18.81939, -2.20304, 17.10709, -0.07794, 9.9046, 2.54451, 1.01642, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.94624, 2.38007, -4.59398, 10.01888 ] }, { "time": 0.3666, "offset": 2, - "vertices": [ -10.47, 9.44, -13.36, 12.4, -14.32, 16.94, -9.24, 23.55, -5.51, 21.51, -1.19, 11.53, 2.54, 1.01, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4.14, 2.29, -6.63, 11.37 ] + "vertices": [ -10.47683, 9.44175, -13.36882, 12.40982, -14.32568, 16.94392, -9.24462, 23.55674, -5.51711, 21.51377, -1.19581, 11.53192, 2.54451, 1.01642, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4.14847, 2.29389, -6.63418, 11.37127 ] }, { "time": 0.5, "offset": 2, - "vertices": [ -5.42, 4.36, -10.59, 7.04, -11.64, 11.55, -6.19, 20.12, -1.45, 18.05, 4.86, 6.41, 2.81, 0.27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.96, 4.94 ] + "vertices": [ -5.42473, 4.36854, -10.59004, 7.04468, -11.64251, 11.55845, -6.19665, 20.12805, -1.45497, 18.05411, 4.86619, 6.41678, 2.81462, 0.27601, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.96412, 4.94829 ] }, { "time": 0.6333 }, { "time": 0.7333, "offset": 4, - "vertices": [ 1.31, -6.84, -0.87, -12.54, -5.98, -14.08, -7.15, -11.63, -5.67, -4.83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.06, -6.93 ] + "vertices": [ 1.31462, -6.84099, -0.87905, -12.54479, -5.9851, -14.08367, -7.15892, -11.63193, -5.6792, -4.83544, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.06163, -6.93844 ] }, { "time": 0.8, "offset": 4, - "vertices": [ 0.65, -3.42, -0.43, -6.27, -2.99, -7.04, -3.57, -5.81, -2.83, -2.41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.79, -1.28, 0, 0, 0, 0, -1.03, -3.46 ] + "vertices": [ 0.65731, -3.42049, -0.43952, -6.27239, -2.99255, -7.04183, -3.57946, -5.81596, -2.83959, -2.41772, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.79687, -1.2802, 0, 0, 0, 0, -1.03081, -3.46922 ] }, { "time": 0.8666 } ] @@ -926,13 +927,13 @@ { "time": 0, "offset": 4, - "vertices": [ -1.48, 0.34, 0, 0, 1.31, 0.08, 1.6, 0.09, 0.13, 0.15, 0, 0, 0, 0, -0.72, -0.04 ] + "vertices": [ -1.48416, 0.34736, 0, 0, 1.31152, 0.08085, 1.60295, 0.09881, 0.13673, 0.1547, 0, 0, 0, 0, -0.72862, -0.0449 ] }, { "time": 0.5 }, { "time": 1, "offset": 4, - "vertices": [ -1.48, 0.34, 0, 0, 1.31, 0.08, 1.6, 0.09, 0.13, 0.15, 0, 0, 0, 0, -0.72, -0.04 ] + "vertices": [ -1.48416, 0.34736, 0, 0, 1.31152, 0.08085, 1.60295, 0.09881, 0.13673, 0.1547, 0, 0, 0, 0, -0.72862, -0.0449 ] } ] }, @@ -942,7 +943,7 @@ { "time": 0.6, "offset": 6, - "vertices": [ 1.8, -1.56 ] + "vertices": [ 1.80396, -1.56552 ] }, { "time": 1 } ] @@ -951,17 +952,17 @@ "right upper leg": [ { "time": 0, - "vertices": [ -6.03, -1.46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.34, -1.93, -1.86, -5.05, -2.5, -3.09 ] + "vertices": [ -6.03856, -1.46324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.34684, -1.93101, -1.86047, -5.05265, -2.5014, -3.09984 ] }, { "time": 0.3333 }, { "time": 0.8666, "offset": 14, - "vertices": [ 0.13, -2.35, -1.33, -5.99, -1.35, -4.43 ] + "vertices": [ 0.13424, -2.35377, -1.33317, -5.99572, -1.35861, -4.43323 ] }, { "time": 1, - "vertices": [ -6.03, -1.46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.34, -1.93, -1.86, -5.05, -2.5, -3.09 ] + "vertices": [ -6.03856, -1.46324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.34684, -1.93101, -1.86047, -5.05265, -2.5014, -3.09984 ] } ] }, @@ -970,37 +971,37 @@ { "time": 0, "offset": 14, - "vertices": [ -1.48, -0.24, -2.72, -2.15, -0.51, -3.39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.09, -2.61, 0, 0, 0.57, -1.24, 0, 0, 0, 0, -2.11, -3.29 ] + "vertices": [ -1.48952, -0.24021, -2.72312, -2.15489, -0.51183, -3.39752, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.0964, -2.61458, 0, 0, 0.57686, -1.24874, 0, 0, 0, 0, -2.11251, -3.29932 ] }, { "time": 0.1333, "offset": 14, - "vertices": [ 1.31, -0.59, -0.97, -1.62, 0.74, -0.61, -1.44, 1.97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.65, -3.95, 0, 0, -1.46, -0.31, 0, 0, 0, 0, -3.31, -3.55, -2.56, 0.29 ] + "vertices": [ 1.31318, -0.59727, -0.97944, -1.62934, 0.74861, -0.6123, -1.44598, 1.97515, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.65701, -3.95221, 0, 0, -1.46987, -0.31373, 0, 0, 0, 0, -3.31756, -3.5535, -2.56329, 0.29673 ] }, { "time": 0.3, "offset": 14, - "vertices": [ 6.03, -3.13, 7.55, -1.38, 6.79, 0.31, 4.23, 1.14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4.07, -5.16, 0, 0, 4, 0.27, 0, 0, 0, 0, 3.43, -3.52 ] + "vertices": [ 6.03761, -3.13561, 7.55475, -1.38111, 6.79747, 0.31171, 4.23503, 1.14012, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4.07575, -5.16824, 0, 0, 4.0041, 0.27245, 0, 0, 0, 0, 3.4376, -3.52286 ] }, { "time": 0.5, "offset": 14, - "vertices": [ 2.25, -0.87, 2.57, -0.56, 3.17, -0.57, 1.48, 0.99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3.22, -4.43, 0, 0, 1.48, 0.01, 0, 0, 0, 0, 0.31, -3.28, -1.53, 0.17 ] + "vertices": [ 2.25942, -0.87202, 2.575, -0.56861, 3.17112, -0.57003, 1.48704, 0.9924, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3.22451, -4.43862, 0, 0, 1.48691, 0.01586, 0, 0, 0, 0, 0.31388, -3.28095, -1.53797, 0.17803 ] }, { "time": 0.6333, "offset": 14, - "vertices": [ 0.75, -1.51, -0.97, -1.62, 0.74, -0.61, -1.44, 1.97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.65, -3.95, 0, 0, -1.46, -0.31, 0, 0, 0, 0, -3.31, -3.55, -2.56, 0.29 ] + "vertices": [ 0.75002, -1.51701, -0.97944, -1.62934, 0.74861, -0.6123, -1.44598, 1.97515, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.65701, -3.95221, 0, 0, -1.46987, -0.31373, 0, 0, 0, 0, -3.31756, -3.5535, -2.56329, 0.29673 ] }, { "time": 0.8666, "offset": 14, - "vertices": [ 0.62, -1.26, 0.38, -2.2, 3.25, -0.5, 2.41, 2.39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.66, -3.1, 0, 0, 2.3, -1.15, 0, 0, 0, 0, -0.07, -3.63, -0.93, 0.1 ] + "vertices": [ 0.62202, -1.26262, 0.38489, -2.20701, 3.25048, -0.50042, 2.41108, 2.39315, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.6639, -3.10099, 0, 0, 2.30655, -1.15196, 0, 0, 0, 0, -0.07676, -3.63497, -0.9321, 0.1079 ] }, { "time": 1, "offset": 14, - "vertices": [ -1.48, -0.24, -2.72, -2.15, -0.51, -3.39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.09, -2.61, 0, 0, 0.57, -1.24, 0, 0, 0, 0, -2.11, -3.29 ] + "vertices": [ -1.48952, -0.24021, -2.72312, -2.15489, -0.51183, -3.39752, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.0964, -2.61458, 0, 0, 0.57686, -1.24874, 0, 0, 0, 0, -2.11251, -3.29932 ] } ] }, @@ -1009,32 +1010,32 @@ { "time": 0, "offset": 2, - "vertices": [ -1.77, 0.54, -0.96, -1.03, -0.39, -0.24, -1.77, 0.54 ] + "vertices": [ -1.77696, 0.54759, -0.96145, -1.03793, -0.39148, -0.24071, -1.77696, 0.54759 ] }, { "time": 0.1333, "offset": 2, - "vertices": [ -2.25, -1.03, -1.49, -4.23, -0.74, -2.84, -1.9, 0.54 ] + "vertices": [ -2.25683, -1.03177, -1.49719, -4.23861, -0.74469, -2.84906, -1.90072, 0.54477 ] }, { "time": 0.3333, "offset": 2, - "vertices": [ -2.37, -0.05, -0.49, 0.19, -0.9, 1.16, -1.6, 2.7, 0.96, 0.8 ] + "vertices": [ -2.37974, -0.05431, -0.49433, 0.19436, -0.90861, 1.16519, -1.60956, 2.70798, 0.96186, 0.80615 ] }, { "time": 0.7, "offset": 2, - "vertices": [ -0.91, -2.76, -0.62, -3.63, -0.84, -2.26, -2.56, 0.52 ] + "vertices": [ -0.91714, -2.76567, -0.62214, -3.63489, -0.8494, -2.26772, -2.56076, 0.5297 ] }, { "time": 0.8666, "offset": 2, - "vertices": [ -2.56, 0.52, -1.58, 0.32, -1.38, 0.32, -2.56, 0.52 ] + "vertices": [ -2.56076, 0.5297, -1.58064, 0.32031, -1.3847, 0.32476, -2.56076, 0.5297 ] }, { "time": 1, "offset": 2, - "vertices": [ -1.77, 0.54, -0.8, 0.53, -0.8, 0.53, -1.77, 0.54 ] + "vertices": [ -1.77696, 0.54759, -0.80128, 0.53413, -0.80128, 0.53413, -1.77696, 0.54759 ] } ] }, @@ -1042,35 +1043,35 @@ "undies": [ { "time": 0, - "vertices": [ 0.43, 0.72, 10.6, -0.11, 2.29, 0, 2.29, 0, 2.29, 0, 0.58, 0.24, -2.4, -0.65, -2.27, -0.77, 2.29, 0, 0.58, -0.48, 4.98, -0.11, 6.5, -0.23 ] + "vertices": [ 0.43098, 0.722, 10.60295, -0.11699, 2.29598, 0, 2.29598, 0, 2.29598, 0, 0.58798, 0.24399, -2.40018, -0.65335, -2.2782, -0.77533, 2.29598, 0, 0.58798, -0.48799, 4.98697, -0.11699, 6.50796, -0.23399 ] }, { "time": 0.1333, - "vertices": [ 0.72, 0.43, 7.2, -0.16, 1.37, 0, 1.37, 0, 1.37, 0, 1.25, 0.04, -0.99, -2.95, -1.37, -3.07, 1.37, 0, 0.35, -0.29, 2.99, -0.07, 3.9, -0.14 ] + "vertices": [ 0.72659, 0.43319, 7.20416, -0.1638, 1.37759, 0, 1.37759, 0, 1.37759, 0, 1.25279, 0.0464, -0.99861, -2.95085, -1.37542, -3.07404, 1.37759, 0, 0.35279, -0.29279, 2.99218, -0.07019, 3.90478, -0.14039 ] }, { "time": 0.3333, - "vertices": [ 1.16, 0, 2.1, -0.23, 0, 0, 0, 0, 0, 0, 2.24, -0.24, -0.43, 0.6, -1.55, 0.48 ] + "vertices": [ 1.16999, 0, 2.10599, -0.234, 0, 0, 0, 0, 0, 0, 2.24999, -0.24999, -0.4344, 0.60551, -1.55939, 0.48051 ] }, { "time": 0.5333, - "vertices": [ 1.16, 0, -0.23, -0.93, -2.92, 0.35, 0, 0, 0, 0, 0.49, -0.24, -0.64, -2.07, -0.64, -2.07 ] + "vertices": [ 1.16999, 0, -0.234, -0.93599, -2.92499, 0.35099, 0, 0, 0, 0, 0.49999, -0.24999, -0.64078, -2.07914, -0.64078, -2.07914 ] }, { "time": 0.7, - "vertices": [ 1.86, -0.11, 4.66, -0.09, -1.76, 0.21, 0, 0, -0.56, 0.32, -1.13, -1.15, -2.19, -3.47, -1.29, -3.47, 0, 0, 0, 0, 1.58, -0.04, 2.65, 0.16 ] + "vertices": [ 1.8627, -0.11514, 4.66326, -0.09099, -1.76428, 0.21171, 0, 0, -0.56832, 0.32832, -1.13833, -1.1511, -2.19996, -3.47068, -1.29718, -3.47068, 0, 0, 0, 0, 1.58785, -0.04642, 2.65941, 0.16714 ] }, { "time": 0.8333, - "vertices": [ 2.41, -0.2, 8.58, 0.58, -0.83, 0.1, 0, 0, -1.02, 0.59, -2.44, -1.87, -1.62, 0, 0, 0, 0, 0, 0, 0, 2.85, -0.08, 4.78, 0.3 ] + "vertices": [ 2.41687, -0.20725, 8.58108, 0.585, -0.83571, 0.10028, 0, 0, -1.02299, 0.59098, -2.44899, -1.872, -1.62499, 0, 0, 0, 0, 0, 0, 0, 2.85813, -0.08356, 4.78695, 0.30086 ] }, { "time": 0.8666, - "vertices": [ 2.01, -0.02, 8.98, 0.44, -0.2, 0.08, 0.45, 0, -0.35, 0.47, -1.84, -1.44, -0.79, 1.26, 0.53, 1.23, 0.45, 0, 0.11, -0.09, 3.28, -0.09, 5.13, 0.19 ] + "vertices": [ 2.01969, -0.0214, 8.98545, 0.4446, -0.20937, 0.08022, 0.45919, 0, -0.35919, 0.47279, -1.84159, -1.4488, -0.79153, 1.2642, 0.53285, 1.23981, 0.45919, 0, 0.11759, -0.09759, 3.2839, -0.09025, 5.13115, 0.19388 ] }, { "time": 1, - "vertices": [ 0.43, 0.72, 10.6, -0.11, 2.29, 0, 2.29, 0, 2.29, 0, 0.58, 0.24, -2.4, -0.65, -2.27, -0.77, 2.29, 0, 0.58, -0.48, 4.98, -0.11, 6.5, -0.23 ] + "vertices": [ 0.43098, 0.722, 10.60295, -0.11699, 2.29598, 0, 2.29598, 0, 2.29598, 0, 0.58798, 0.24399, -2.40018, -0.65335, -2.2782, -0.77533, 2.29598, 0, 0.58798, -0.48799, 4.98697, -0.11699, 6.50796, -0.23399 ] } ] } diff --git a/spine-cocos2d-objc/Resources/goblins-mesh.png b/spine-cocos2d-objc/Resources/goblins-mesh.png index a3daf0010..6eaf853b1 100644 Binary files a/spine-cocos2d-objc/Resources/goblins-mesh.png and b/spine-cocos2d-objc/Resources/goblins-mesh.png differ diff --git a/spine-cocos2d-objc/Resources/raptor.atlas b/spine-cocos2d-objc/Resources/raptor.atlas new file mode 100644 index 000000000..b59a1747c --- /dev/null +++ b/spine-cocos2d-objc/Resources/raptor.atlas @@ -0,0 +1,251 @@ + +raptor.png +size: 2048,2048 +format: RGBA8888 +filter: Linear,Linear +repeat: none +back_arm + rotate: false + xy: 830, 1093 + size: 91, 57 + orig: 91, 57 + offset: 0, 0 + index: -1 +back_bracer + rotate: true + xy: 217, 113 + size: 77, 55 + orig: 77, 55 + offset: 0, 0 + index: -1 +back_hand + rotate: true + xy: 275, 501 + size: 72, 68 + orig: 72, 68 + offset: 0, 0 + index: -1 +back_knee + rotate: false + xy: 583, 955 + size: 97, 134 + orig: 97, 134 + offset: 0, 0 + index: -1 +back_thigh + rotate: true + xy: 440, 689 + size: 78, 47 + orig: 78, 47 + offset: 0, 0 + index: -1 +eyes_open + rotate: true + xy: 495, 848 + size: 93, 89 + orig: 93, 89 + offset: 0, 0 + index: -1 +front_arm + rotate: false + xy: 2, 5 + size: 96, 60 + orig: 96, 60 + offset: 0, 0 + index: -1 +front_bracer + rotate: true + xy: 217, 192 + size: 81, 58 + orig: 81, 58 + offset: 0, 0 + index: -1 +front_hand + rotate: false + xy: 586, 878 + size: 82, 75 + orig: 82, 75 + offset: 0, 0 + index: -1 +front_open_hand + rotate: true + xy: 495, 760 + size: 86, 87 + orig: 86, 87 + offset: 0, 0 + index: -1 +front_thigh + rotate: false + xy: 714, 1092 + size: 114, 58 + orig: 114, 58 + offset: 0, 0 + index: -1 +gun + rotate: false + xy: 2, 67 + size: 213, 206 + orig: 213, 206 + offset: 0, 0 + index: -1 +gun_nohand + rotate: false + xy: 1563, 1547 + size: 210, 203 + orig: 210, 203 + offset: 0, 0 + index: -1 +head + rotate: false + xy: 2, 275 + size: 271, 298 + orig: 271, 298 + offset: 0, 0 + index: -1 +lower_leg + rotate: true + xy: 386, 943 + size: 146, 195 + orig: 146, 195 + offset: 0, 0 + index: -1 +mouth_smile + rotate: false + xy: 100, 6 + size: 93, 59 + orig: 93, 59 + offset: 0, 0 + index: -1 +neck + rotate: false + xy: 1012, 1109 + size: 36, 41 + orig: 36, 41 + offset: 0, 0 + index: -1 +raptor_arm_back + rotate: false + xy: 330, 769 + size: 163, 172 + orig: 163, 172 + offset: 0, 0 + index: -1 +raptor_body + rotate: false + xy: 2, 1468 + size: 1219, 570 + orig: 1219, 570 + offset: 0, 0 + index: -1 +raptor_front_arm + rotate: true + xy: 1223, 1445 + size: 162, 203 + orig: 162, 203 + offset: 0, 0 + index: -1 +raptor_front_leg + rotate: false + xy: 2, 952 + size: 382, 514 + orig: 382, 514 + offset: 0, 0 + index: -1 +raptor_hindleg_back + rotate: false + xy: 1223, 1609 + size: 338, 429 + orig: 338, 429 + offset: 0, 0 + index: -1 +raptor_horn + rotate: false + xy: 714, 1307 + size: 363, 159 + orig: 363, 159 + offset: 0, 0 + index: -1 +raptor_horn_back + rotate: false + xy: 714, 1152 + size: 351, 153 + orig: 351, 153 + offset: 0, 0 + index: -1 +raptor_jaw + rotate: false + xy: 1563, 1752 + size: 305, 286 + orig: 305, 286 + offset: 0, 0 + index: -1 +raptor_saddle_noshadow + rotate: false + xy: 2, 575 + size: 326, 375 + orig: 326, 375 + offset: 0, 0 + index: -1 +raptor_saddle_strap_front + rotate: true + xy: 1558, 1431 + size: 114, 189 + orig: 114, 189 + offset: 0, 0 + index: -1 +raptor_saddle_strap_rear + rotate: false + xy: 1079, 1318 + size: 108, 148 + orig: 108, 148 + offset: 0, 0 + index: -1 +raptor_saddle_w_shadow + rotate: false + xy: 386, 1091 + size: 326, 375 + orig: 326, 375 + offset: 0, 0 + index: -1 +raptor_tongue + rotate: true + xy: 1428, 1436 + size: 171, 128 + orig: 171, 128 + offset: 0, 0 + index: -1 +stirrup_back + rotate: false + xy: 923, 1081 + size: 87, 69 + orig: 87, 69 + offset: 0, 0 + index: -1 +stirrup_front + rotate: false + xy: 1775, 1650 + size: 89, 100 + orig: 89, 100 + offset: 0, 0 + index: -1 +stirrup_strap + rotate: true + xy: 1775, 1551 + size: 97, 91 + orig: 97, 91 + offset: 0, 0 + index: -1 +torso + rotate: false + xy: 330, 585 + size: 108, 182 + orig: 108, 182 + offset: 0, 0 + index: -1 +visor + rotate: true + xy: 1870, 1777 + size: 261, 168 + orig: 261, 168 + offset: 0, 0 + index: -1 diff --git a/spine-cocos2d-objc/Resources/raptor.json b/spine-cocos2d-objc/Resources/raptor.json new file mode 100644 index 000000000..24504ac67 --- /dev/null +++ b/spine-cocos2d-objc/Resources/raptor.json @@ -0,0 +1,2620 @@ +{ +"skeleton": { "hash": "tzTkzbBrpNYAwwMjxvin8GH1NPg", "spine": "3.3.07", "width": 1223.72, "height": 1055.5, "images": "./images/" }, +"bones": [ + { "name": "root" }, + { "name": "hip", "parent": "root", "rotation": 3.15, "x": -136.78, "y": 415.47, "color": "fbff00ff" }, + { "name": "torso1", "parent": "hip", "length": 126.25, "rotation": -4.97, "x": 30.03, "y": -0.4, "color": "eaff00ff" }, + { "name": "saddle", "parent": "torso1", "length": 50.91, "rotation": 91.8, "x": 4.56, "y": 71.86, "color": "ff7300ff" }, + { "name": "spineboy_hip", "parent": "saddle", "length": 0.52, "rotation": 90.01, "x": 81.88, "y": 2.68, "color": "ffffffff" }, + { + "name": "spineboy_torso", + "parent": "spineboy_hip", + "length": 122.45, + "rotation": -75.85, + "x": 1.05, + "y": -2.1, + "color": "ffffffff" + }, + { "name": "torso2", "parent": "torso1", "length": 121.2, "rotation": 39.84, "x": 126.25, "y": -0.37, "color": "eaff00ff" }, + { "name": "neck", "parent": "torso2", "length": 70.59, "rotation": 41.37, "x": 121.19, "y": 0.34, "color": "eaff00ff" }, + { "name": "head", "parent": "neck", "length": 105.5, "rotation": 9.82, "x": 70.59, "y": 0.03, "color": "eaff00ff" }, + { "name": "horn_rear", "parent": "head", "length": 73.78, "rotation": 44.31, "x": 99.27, "y": -226.79, "color": "e07800ff" }, + { "name": "rear_arm_target", "parent": "horn_rear", "rotation": -133.55, "x": 232.68, "y": 245.84, "color": "e07800ff" }, + { + "name": "back_arm", + "parent": "spineboy_torso", + "length": 67.21, + "rotation": -120.89, + "x": 96.33, + "y": -38.46, + "color": "ffffffff" + }, + { "name": "back_bracer", "parent": "back_arm", "length": 43.68, "rotation": 17.48, "x": 67.21, "y": -0.31, "color": "ffffffff" }, + { + "name": "back_hand", + "parent": "back_bracer", + "length": 41.97, + "rotation": 9.2, + "x": 43.68, + "y": 0.06, + "inheritRotation": false, + "color": "ffffffff" + }, + { "name": "spineboy_rear_arm_goal", "parent": "saddle", "x": -30.43, "y": -100.08, "color": "ff0001ff" }, + { "name": "back_thigh", "parent": "spineboy_hip", "length": 71.15, "rotation": 160.75, "x": -9.57, "y": 2.31, "color": "ffffffff" }, + { "name": "back_knee", "parent": "back_thigh", "length": 97.17, "rotation": -54.97, "x": 71.15, "y": -0.28, "color": "ffffffff" }, + { "name": "horn_front", "parent": "head", "length": 87.48, "rotation": 49.36, "x": 82.09, "y": -221.36, "color": "15ff00ff" }, + { "name": "front_arm_target", "parent": "horn_front", "rotation": -138.59, "x": 294.58, "y": 234.17, "color": "15ff00ff" }, + { + "name": "front_arm", + "parent": "spineboy_torso", + "length": 74.51, + "rotation": -118.16, + "x": 101.37, + "y": 9.78, + "color": "ffffffff" + }, + { "name": "front_bracer", "parent": "front_arm", "length": 39.85, "rotation": 20.3, "x": 74.52, "y": -0.41, "color": "ffffffff" }, + { "name": "front_arm1", "parent": "torso2", "length": 109.99, "rotation": 224.54, "x": 46.37, "y": -84.61, "color": "15ff00ff" }, + { "name": "front_arm2", "parent": "front_arm1", "length": 86.33, "rotation": 105.23, "x": 109.99, "y": 0.2, "color": "15ff00ff" }, + { "name": "front_foot_goal", "parent": "root", "rotation": -0.94, "x": -45.79, "y": -28.67, "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, "rotation": -51.5, "x": 27.36, "y": -28.27, "color": "15ff00ff" }, + { "name": "front_leg2", "parent": "front_leg1", "length": 208.54, "rotation": 261.93, "x": 251.03, "y": 0.16, "color": "15ff00ff" }, + { "name": "front_leg3", "parent": "front_leg2", "length": 118.18, "rotation": 85.46, "x": 208.5, "y": -1.63, "color": "15ff00ff" }, + { + "name": "front_foot1", + "parent": "front_leg3", + "length": 57.79, + "rotation": 54.46, + "x": 118.19, + "y": -0.79, + "scaleX": 1.126, + "color": "15ff00ff" + }, + { + "name": "front_foot2", + "parent": "front_foot1", + "length": 56.19, + "rotation": -2.15, + "x": 57.78, + "y": -0.02, + "scaleX": 0.73, + "scaleY": 0.823, + "inheritRotation": false, + "color": "15ff00ff" + }, + { + "name": "front_foot3", + "parent": "front_foot2", + "length": 129.88, + "rotation": -2.7, + "x": 49.71, + "y": 20.65, + "scaleX": 1.154, + "color": "15ff00ff" + }, + { "name": "front_hand", "parent": "front_arm2", "length": 47.55, "rotation": -56.83, "x": 86.33, "y": 0.06, "color": "15ff00ff" }, + { + "name": "front_hand2", + "parent": "front_bracer", + "length": 58.18, + "rotation": 13.9, + "x": 39.98, + "y": -0.89, + "inheritRotation": false, + "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, + "rotation": 163.34, + "x": 15.51, + "y": 17.01, + "color": "ffffffff" + }, + { "name": "lower_leg", "parent": "front_thigh", "length": 111.5, "rotation": -49.62, "x": 77.92, "y": -0.1, "color": "ffffffff" }, + { + "name": "gun", + "parent": "spineboy_hip", + "length": 181.35, + "rotation": 107.11, + "x": 16.86, + "y": -7.89, + "scaleX": 0.816, + "scaleY": 0.816, + "color": "ffffffff" + }, + { "name": "neck2", "parent": "spineboy_torso", "length": 32.04, "rotation": -45.22, "x": 113.44, "y": -15.21, "color": "ffffffff" }, + { "name": "head2", "parent": "neck2", "length": 249.64, "rotation": 11.65, "x": 23.01, "y": 3.47, "color": "ffffffff" }, + { "name": "jaw", "parent": "head", "length": 203.76, "rotation": -140.14, "x": 29.36, "y": -40.15, "color": "ffff00ff" }, + { "name": "rear_arm1", "parent": "torso2", "length": 109.56, "rotation": -124.71, "x": 57.05, "y": -95.38, "color": "e07800ff" }, + { "name": "rear_arm2", "parent": "rear_arm1", "length": 85.8, "rotation": 123.56, "x": 109.56, "color": "e07800ff" }, + { "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": "rear_leg1", "parent": "hip", "length": 226.27, "rotation": -54.76, "x": 55.19, "y": -71.25, "color": "e07800ff" }, + { "name": "rear_leg2", "parent": "rear_leg1", "length": 172.58, "rotation": -92.25, "x": 226.32, "y": 0.23, "color": "e07800ff" }, + { "name": "rear_leg3", "parent": "rear_leg2", "length": 103.05, "rotation": 82.81, "x": 172.31, "y": 2.21, "color": "e07800ff" }, + { "name": "rear_foot1", "parent": "rear_leg3", "length": 84.51, "rotation": 75.43, "x": 102.37, "y": -0.02, "color": "e07800ff" }, + { + "name": "rear_foot2", + "parent": "rear_foot1", + "length": 102.31, + "rotation": -6.13, + "x": 84.49, + "y": -0.34, + "inheritRotation": false, + "color": "e07800ff" + }, + { "name": "rear_hand", "parent": "rear_arm2", "length": 45.8, "rotation": -76.28, "x": 85.8, "y": 0.1, "color": "e07800ff" }, + { + "name": "saddle_strap_front1", + "parent": "saddle", + "length": 97.27, + "rotation": -148.11, + "x": -27.36, + "y": -73.38, + "color": "ff7300ff" + }, + { + "name": "saddle_strap_front2", + "parent": "saddle_strap_front1", + "length": 102.74, + "rotation": -11.13, + "x": 97.29, + "y": 0.3, + "color": "ff7300ff" + }, + { + "name": "saddle_strap_rear1", + "parent": "saddle", + "length": 38.62, + "rotation": 151.13, + "x": -33.34, + "y": 87.32, + "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, + "rotation": 3.63, + "x": 54.86, + "y": 0.19, + "color": "ff7300ff" + }, + { "name": "stirrup", "parent": "saddle", "length": 78.17, "rotation": -68.85, "x": -81.94, "y": -103.38, "color": "ff7300ff" }, + { "name": "stirrup_strap1", "parent": "saddle", "length": 43.69, "rotation": -135, "x": -20.38, "y": -29.37, "color": "ff7300ff" }, + { "name": "stirrup_strap2", "parent": "stirrup_strap1", "length": 51.62, "rotation": 9.38, "x": 43.7, "color": "ff7300ff" }, + { "name": "tail1", "parent": "hip", "length": 162.53, "rotation": 162.92, "x": -20.86, "y": 6.87, "color": "eaff00ff" }, + { "name": "tail2", "parent": "tail1", "length": 130.02, "rotation": 30.3, "x": 162.53, "y": -0.82, "color": "eaff00ff" }, + { "name": "tail3", "parent": "tail2", "length": 141.06, "rotation": 6.88, "x": 130.02, "y": 0.1, "color": "eaff00ff" }, + { "name": "tail4", "parent": "tail3", "length": 126.25, "rotation": -18.86, "x": 141.05, "y": 0.64, "color": "eaff00ff" }, + { "name": "tail5", "parent": "tail4", "length": 91.06, "rotation": -22.34, "x": 126.25, "y": -0.47, "color": "eaff00ff" }, + { "name": "tongue1", "parent": "head", "length": 55.11, "rotation": -129.04, "x": 20.81, "y": -104.75, "color": "ffff00ff" }, + { "name": "tongue2", "parent": "tongue1", "length": 44.66, "rotation": 8.93, "x": 55.59, "y": 0.93, "color": "fff200ff" }, + { "name": "tongue3", "parent": "tongue2", "length": 43.64, "rotation": 12.86, "x": 44.26, "y": -0.2, "color": "fff200ff" } +], +"slots": [ + { "name": "back_hand", "bone": "back_hand", "attachment": "back_hand" }, + { "name": "back_arm", "bone": "back_arm", "attachment": "back_arm" }, + { "name": "back_bracer", "bone": "back_bracer", "attachment": "back_bracer" }, + { "name": "back_knee", "bone": "back_knee", "attachment": "back_knee" }, + { "name": "raptor_horn_back", "bone": "horn_rear", "attachment": "raptor_horn_back" }, + { "name": "raptor_tongue", "bone": "root", "attachment": "raptor_tongue" }, + { "name": "raptor_hindleg_back", "bone": "rear_leg1", "attachment": "raptor_hindleg_back" }, + { "name": "raptor_arm_back", "bone": "root", "attachment": "raptor_arm_back" }, + { "name": "raptor_body", "bone": "torso1", "attachment": "raptor_body" }, + { "name": "back_thigh", "bone": "back_thigh", "attachment": "back_thigh" }, + { "name": "raptor_saddle_strap_front", "bone": "saddle_strap_front1", "attachment": "raptor_saddle_strap_front" }, + { "name": "raptor_saddle_strap_rear", "bone": "saddle_strap_rear1", "attachment": "raptor_saddle_strap_rear" }, + { "name": "raptor_saddle_w_shadow", "bone": "saddle", "attachment": "raptor_saddle_w_shadow" }, + { "name": "raptor_saddle_noshadow", "bone": "saddle" }, + { "name": "raptor_front_arm", "bone": "root", "attachment": "raptor_front_arm" }, + { "name": "raptor_front_leg", "bone": "front_leg1", "attachment": "raptor_front_leg" }, + { "name": "raptor_jaw", "bone": "jaw", "attachment": "raptor_jaw" }, + { "name": "neck", "bone": "neck2", "attachment": "neck" }, + { "name": "spineboy_torso", "bone": "spineboy_torso", "attachment": "torso" }, + { "name": "head", "bone": "head2", "attachment": "head" }, + { "name": "eyes_open", "bone": "head2", "attachment": "eyes_open" }, + { "name": "mouth_smile", "bone": "head2", "attachment": "mouth_smile" }, + { "name": "visor", "bone": "head2", "attachment": "visor" }, + { "name": "raptor_horn", "bone": "horn_front", "attachment": "raptor_horn" }, + { "name": "front_thigh", "bone": "front_thigh", "attachment": "front_thigh" }, + { "name": "stirrup_back", "bone": "stirrup", "attachment": "stirrup_back" }, + { "name": "lower_leg", "bone": "lower_leg", "attachment": "lower_leg" }, + { "name": "stirrup_strap", "bone": "stirrup", "attachment": "stirrup_strap" }, + { "name": "stirrup_front", "bone": "stirrup", "attachment": "stirrup_front" }, + { "name": "gun", "bone": "gun", "attachment": "gun_nohand" }, + { "name": "front_arm", "bone": "front_arm", "attachment": "front_arm" }, + { "name": "front_bracer", "bone": "front_bracer", "attachment": "front_bracer" }, + { "name": "front_hand", "bone": "front_hand2", "attachment": "front_hand" } +], +"ik": [ + { + "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": "rear_leg_goal", + "bones": [ "rear_leg1", "rear_leg2" ], + "target": "rear_leg_goal", + "bendPositive": false + }, + { + "name": "spineboy_front_leg_goal", + "bones": [ "front_thigh", "lower_leg" ], + "target": "spineboy_front_arm_goal", + "bendPositive": false + }, + { + "name": "spineboy_rear_leg_goal", + "bones": [ "back_thigh", "back_knee" ], + "target": "spineboy_rear_arm_goal", + "bendPositive": false + }, + { + "name": "stirrup", + "bones": [ "stirrup_strap1", "stirrup_strap2" ], + "target": "stirrup" + } +], +"skins": { + "default": { + "back_arm": { + "back_arm": { "x": 29.71, "y": 2.04, "rotation": 16.75, "width": 91, "height": 57 } + }, + "back_bracer": { + "back_bracer": { "x": 13.19, "y": -4.28, "rotation": -0.72, "width": 77, "height": 55 } + }, + "back_hand": { + "back_hand": { "x": 18.6, "y": 4.23, "rotation": -10.99, "width": 72, "height": 68 } + }, + "back_knee": { + "back_knee": { "x": 45.77, "y": 20.47, "rotation": 74.22, "width": 97, "height": 134 } + }, + "back_thigh": { + "back_thigh": { "x": 37.85, "y": -4.36, "rotation": 19.24, "width": 78, "height": 47 } + }, + "eyes_open": { + "eyes_open": { "x": 93.23, "y": -25.45, "rotation": -70.57, "width": 93, "height": 89 } + }, + "front_arm": { + "front_arm": { "x": 31.38, "y": 5.09, "rotation": 14.02, "width": 96, "height": 60 } + }, + "front_bracer": { + "front_bracer": { "x": 11.68, "y": -1.36, "rotation": -6.28, "width": 81, "height": 58 } + }, + "front_hand": { + "front_hand": { "x": 35.7, "y": 7.84, "rotation": -13.96, "width": 82, "height": 75 }, + "front_open_hand": { "x": 42.54, "y": 4.62, "rotation": 62.19, "width": 86, "height": 87 }, + "gun": { "x": 98.9, "y": 22.97, "rotation": 56.34, "width": 213, "height": 206 } + }, + "front_thigh": { + "front_thigh": { "x": 45.7, "y": -3.1, "rotation": 16.65, "width": 114, "height": 58 } + }, + "gun": { + "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": [ 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, + "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": { + "head": { "x": 132.33, "y": 1.19, "rotation": -70.57, "width": 271, "height": 298 } + }, + "lower_leg": { + "lower_leg": { "x": 76.2, "y": 22.2, "rotation": 66.28, "width": 146, "height": 195 } + }, + "mouth_smile": { + "mouth_smile": { "x": 27.66, "y": -31.33, "rotation": -70.57, "width": 93, "height": 59 } + }, + "neck": { + "neck": { "x": 15.09, "y": -1.66, "rotation": -58.91, "width": 36, "height": 41 } + }, + "raptor_arm_back": { + "raptor_arm_back": { + "type": "mesh", + "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": [ 6, 15, 16, 5, 6, 16, 5, 16, 4, 6, 7, 15, 16, 17, 4, 8, 15, 7, 14, 15, 8, 12, 14, 8, 12, 8, 9, 12, 9, 10, 11, 12, 10, 13, 14, 12, 17, 3, 4, 19, 20, 2, 18, 19, 2, 18, 2, 3, 18, 3, 17, 21, 22, 23, 24, 21, 23, 0, 21, 24, 1, 21, 0, 1, 20, 21, 2, 20, 1 ], + "vertices": [ 2, 40, 36.95, 33.31, 0.91666, 41, 68.53, 41.05, 0.08333, 2, 40, 66.01999, 20.35, 0.76813, 41, 41.41, 24.39, 0.23186, 2, 40, 74.51, 16.57, 0.64468, 41, 33.49, 19.53, 0.35531, 2, 40, 70.89, 21.97, 0.29071, 41, 39.99, 19.45999, 0.70928, 3, 40, 42.77, 63.89, 0.11483, 41, 90.47, 18.95, 0.60854, 49, -17.2, 9, 0.2766, 2, 41, 101.86, 18.83, 0.45955, 49, -14.38, 20.04, 0.54044, 2, 41, 106.47, 2.08, 0.0625, 49, 2.98, 20.56, 0.9375, 1, 49, 51.32, 21.98, 1, 1, 49, 60.41, 11.1, 1, 1, 49, 72.39, 9.60999, 1, 1, 49, 100.37, -23.87, 1, 1, 49, 104.96, -40.9, 1, 1, 49, 78.37, -25.61, 1, 1, 49, 86.05, -56.84, 1, 1, 49, 52.92, -30.04, 1, 2, 41, 62.24, -43.92, 0.0625, 49, 37.18999, -33.33, 0.9375, 2, 41, 64.89, -28.65, 0.3125, 49, 22.98, -27.14, 0.6875, 2, 41, 57.69, -27.17, 0.30612, 49, 19.83, -33.78, 0.69387, 2, 40, 124.19, 3.83, 0.19395, 41, -5.09, -14.23, 0.80604, 2, 40, 110.77, -19.65, 0.3125, 41, -16.87999, 10.1, 0.6875, 2, 40, 99.14, -19.2, 0.51612, 41, -9.93, 19.44, 0.48386, 2, 40, 43.73, -17.03, 0.9375, 41, 23.17, 63.92, 0.0625, 1, 40, 35.41, -29.77, 1, 1, 40, -15.68, -28.02, 1, 1, 40, -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": "mesh", + "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": [ 13, 60, 12, 12, 71, 46, 46, 70, 47, 11, 12, 46, 47, 11, 46, 10, 11, 47, 13, 14, 55, 15, 93, 14, 16, 56, 15, 58, 26, 27, 28, 58, 27, 63, 28, 29, 63, 58, 28, 25, 26, 58, 25, 58, 63, 57, 63, 29, 92, 29, 30, 57, 29, 92, 24, 25, 63, 24, 63, 57, 23, 24, 57, 92, 23, 57, 22, 23, 92, 62, 22, 92, 21, 22, 62, 20, 21, 91, 92, 30, 62, 91, 21, 62, 62, 30, 31, 91, 62, 31, 31, 32, 93, 20, 91, 56, 56, 19, 20, 17, 19, 56, 18, 19, 17, 93, 91, 31, 55, 34, 35, 33, 34, 55, 61, 33, 55, 61, 32, 33, 93, 32, 61, 56, 91, 93, 56, 93, 15, 16, 17, 56, 36, 37, 54, 60, 35, 36, 54, 60, 36, 60, 55, 35, 61, 55, 14, 93, 61, 14, 60, 13, 55, 12, 60, 54, 39, 54, 37, 39, 37, 38, 71, 54, 39, 40, 71, 39, 53, 71, 40, 53, 40, 41, 12, 54, 71, 46, 71, 53, 66, 45, 0, 44, 45, 66, 1, 84, 85, 65, 66, 0, 0, 85, 65, 85, 86, 65, 85, 0, 1, 78, 85, 84, 79, 78, 84, 78, 86, 85, 77, 86, 78, 77, 78, 79, 67, 66, 65, 83, 80, 79, 84, 83, 79, 77, 79, 80, 84, 90, 83, 82, 77, 80, 1, 90, 84, 94, 65, 86, 94, 86, 77, 94, 77, 82, 67, 65, 94, 51, 44, 66, 51, 66, 67, 81, 82, 80, 83, 88, 81, 87, 94, 82, 87, 82, 81, 87, 81, 88, 88, 90, 89, 87, 88, 89, 80, 83, 81, 90, 88, 83, 43, 44, 51, 64, 67, 94, 64, 94, 87, 68, 67, 64, 51, 67, 68, 76, 64, 87, 76, 87, 89, 74, 68, 64, 74, 64, 76, 3, 74, 76, 59, 43, 51, 59, 51, 68, 69, 59, 68, 74, 69, 68, 69, 74, 3, 90, 1, 2, 89, 90, 2, 76, 89, 2, 3, 76, 2, 75, 69, 3, 4, 75, 3, 75, 72, 69, 5, 75, 4, 5, 72, 75, 72, 59, 69, 59, 42, 43, 72, 42, 59, 50, 42, 72, 50, 72, 5, 6, 50, 5, 73, 50, 6, 52, 70, 42, 50, 52, 42, 73, 52, 50, 7, 73, 6, 49, 73, 7, 52, 73, 49, 8, 49, 7, 48, 52, 49, 48, 49, 8, 47, 52, 48, 70, 53, 41, 70, 41, 42, 46, 53, 70, 47, 70, 52, 9, 48, 8, 47, 48, 9, 10, 47, 9 ], + "vertices": [ 1, 8, 147.48, -145.48, 1, 1, 8, 89.4, -281.62, 1, 1, 8, -28.24, -285.93, 1, 1, 8, -14.58, -194.68, 1, 4, 6, 238.39, -84.13, 0.20851, 7, 32.09999, -140.85, 0.19336, 8, -61.96, -132.26, 0.42115, 39, 129.57, 6.39, 0.17696, 5, 2, 332.7, 63.71, 0.06905, 6, 199.57, -83.03, 0.29424, 7, 3.69, -114.37, 0.2194, 8, -85.43, -101.32, 0.30859, 39, 127.34, -26.64, 0.1087, 5, 2, 307.08, 43.5, 0.11018, 6, 166.95, -82.12999, 0.37282, 7, -20.18, -92.14, 0.24572, 8, -105.18, -75.33999, 0.21862, 39, 123.08, -64.79, 0.05264, 4, 2, 307.75, 5.7, 0.18627, 6, 143.25, -111.59, 0.58009, 7, -57.43, -98.57, 0.12363, 8, -142.98, -75.33, 0.10999, 2, 2, 308.7, -30.55, 0.25, 6, 120.75, -140.04, 0.75, 2, 2, 213.94, -142.7, 0.75, 6, -23.83, -165.45, 0.25, 3, 2, 64.44999, -187.34, 0.31139, 58, -158.45, 158.33, 0.10379, 1, 84.16, -190.98, 0.5848, 1, 1, -61.47, -178.84, 1, 4, 58, 118.47, 114.74, 0.07383, 59, 17.17, 122.49, 0.17504, 60, -100.71, 132.55, 0.06818, 1, -166.91, -67.94999, 0.68294, 4, 58, 170.4, 123.13, 0.06537, 59, 66.71, 104.77, 0.20999, 60, -53.08, 110.21, 0.12016, 1, -217.69, -61.33, 0.60447, 6, 58, 221.11, 131.31, 0.02179, 59, 115.07, 87.47, 0.23058, 60, -6.58, 88.39, 0.16258, 61, -168.92, 31, 0.02826, 62, -282.82, -90.19, 0.029, 1, -267.66, -55.14, 0.52776, 5, 59, 146.51, 86.08, 0.23635, 60, 26.66, 83.39, 0.19338, 61, -134.99, 41.34, 0.06624, 62, -257.52, -60.65, 0.06962, 1, -298.87, -61.99, 0.43436, 5, 59, 178.73, 86.41, 0.22521, 60, 56.68, 81.29, 0.20997, 61, -107.13, 46.31, 0.11271, 62, -232.44, -51.26, 0.12148, 1, -328.68, -69.24, 0.3306, 5, 59, 203.26, 86.51, 0.21603, 60, 83.06, 77.01999, 0.22457, 61, -79.56, 53.53, 0.13939, 62, -210.89, -28.3, 0.15618, 1, -354.01, -75.41, 0.26379, 5, 59, 238.06, 85.41, 0.20114, 60, 115.65, 74.66, 0.2315, 61, -49.53, 60.58, 0.16455, 62, -185.49, -14.98, 0.19123, 1, -385.33, -83.15, 0.21156, 5, 59, 255.33, 78.85, 0.18224, 60, 133.83, 63.18, 0.23194, 61, -27.04, 56.84, 0.18907, 62, -163.58, -5.26, 0.22658, 1, -406.45, -79.89, 0.17015, 5, 59, 275.48, 71.62, 0.16169, 60, 152.97, 53.58, 0.22885, 61, -5.82, 53.94, 0.21292, 62, -142.85, 0.11, 0.26159, 1, -427.72, -77.47, 0.13493, 5, 59, 313.81, 53.61, 0.14198, 60, 188.04, 35.82, 0.22293, 61, 31.84, 49.3, 0.23478, 62, -106.46, 7.49, 0.29326, 1, -465.96, -72.58999, 0.10702, 5, 59, 345.74, 45.54, 0.12502, 60, 219.6, 19.28, 0.2179, 61, 68.31, 43.02, 0.25622, 62, -70.12999, 18.19, 0.32248, 1, -502.09, -68.19, 0.07835, 4, 59, 390.81, 21.3, 0.11758, 60, 261.62, -3.66, 0.22607, 61, 114.55, 37.83, 0.29087, 62, -26.15, 30.34, 0.36547, 4, 59, 423.87, -11.11, 0.10536, 60, 291.46, -39.06, 0.21954, 61, 154.83, 14.99, 0.30098, 62, 19.91, 25.67, 0.37409, 4, 59, 456.68, -43.27, 0.09949, 60, 321.06, -74.19999, 0.21749, 61, 194.79, -7.66, 0.30788, 62, 65.62, 21.04, 0.37513, 4, 59, 480.34, -100.28, 0.10045, 60, 339.2, -133.2, 0.22026, 61, 232.3, -56.69, 0.31103, 62, 119.7, -8.68999, 0.36824, 4, 59, 424.34, -67.51999, 0.10379, 60, 286.57, -95.27, 0.23087, 61, 169.77, -39.4, 0.30828, 62, 55.51, -18.08, 0.35705, 4, 59, 387.08, -53.84, 0.11505, 60, 250.77, -78.11, 0.2454, 61, 130.24, -35.75, 0.30092, 62, 17.87, -30.67, 0.3386, 4, 59, 346.04, -38.78, 0.13471, 60, 211.34, -59.22, 0.26271, 61, 86.7, -31.72, 0.2888, 62, -23.59, -44.54, 0.31376, 5, 58, 449.17, 125.97, 0.02419, 59, 311.45, -35.25, 0.16384, 60, 175.89, -56.83, 0.2727, 61, 51.53, -43.14, 0.26317, 62, -52.88, -67.87, 0.27607, 5, 58, 418.38, 93.72, 0.05913, 59, 269.72, -40.64, 0.19681, 60, 135.19, -53.82, 0.27688, 61, 13.42, -53.11, 0.23219, 62, -82.03, -93.66, 0.23497, 5, 58, 390.82, 86.58, 0.10638, 59, 241.19, -39.8, 0.2354, 60, 105.59, -52.93, 0.27331, 61, -16.25, -62.16, 0.19459, 62, -108.34, -111.24, 0.19028, 5, 58, 364.8, 62.48, 0.14347, 59, 207.71, -42.14, 0.28099, 60, 73.33, -49.43, 0.26867, 61, -46.11, -70.49, 0.15764, 62, -129.51, -133.56, 0.1492, 5, 58, 345.49, 47.53, 0.18499, 59, 182.34, -50.62, 0.33114, 60, 45.87, -56.62, 0.25881, 61, -71.57, -84.96, 0.1174, 62, -150.85, -153.35, 0.10763, 5, 58, 319.95, 15.15, 0.23755, 59, 145.6, -61.95, 0.39396, 60, 9.60999, -63.26, 0.24619, 61, -101.06, -105.58, 0.06443, 62, -165.65, -187.83, 0.05784, 3, 58, 276.58, -30.61, 0.29942, 59, 85.52, -81.11, 0.46774, 60, -52.01, -76.62, 0.23283, 3, 58, 214.5, -70.36, 0.32855, 59, 11.97, -85.98, 0.48601, 60, -125.69, -74.48, 0.18543, 2, 58, 147.14, -113.5, 0.59565, 59, -67.83999, -91.26, 0.40433, 2, 2, -113.14, 135.84, 0.24192, 58, 91.72, -112.59, 0.75807, 2, 2, -42.12, 116.77, 0.14515, 58, 18.2, -111.17, 0.85484, 1, 2, 44.2, 107.1, 1, 2, 2, 140.09, 96.35, 0.22579, 6, 72.58999, 65.41, 0.7742, 4, 2, 137.69, 169.35, 0.05644, 6, 117.5, 123, 0.24355, 7, 78.3, 94.48, 0.2125, 8, 23.7, 91.74, 0.4875, 2, 7, 171.15, 111.98, 0.25, 8, 118.17, 93.15, 0.75, 1, 8, 158.96, -25.58, 1, 1, 1, -40.63, -86.01, 1, 3, 2, 67.33999, -86.66, 0.33215, 58, -137.02, 59.92, 0.08303, 1, 92.54, -90.61, 0.5848, 2, 2, 170.13, -66.29, 0.75, 6, -8.53, -78.72, 0.25, 2, 2, 231.74, -8.12, 0.4, 6, 76.03, -73.51999, 0.6, 4, 2, 222.04, 70.41, 0.17551, 6, 118.9, -7, 0.55823, 7, -6.58, -3.99, 0.17739, 8, -76.73, 9.18, 0.08884, 1, 8, 50.43, -46.56, 1, 1, 6, -9.88, 20.65, 1, 2, 2, -53.22, 20.53, 0.2, 58, 5.8, -15.09, 0.8, 3, 2, -180.71, 32.22, 0.08564, 58, 132.35, 4.23999, 0.56215, 59, -23.98, 19.01, 0.35219, 3, 58, 246.39, 57.53, 0.30273, 59, 101.61, 10.65, 0.46989, 60, -27.28, 13.2, 0.22737, 5, 58, 346.99, 126.85, 0.13479, 59, 223.17, 22.83, 0.28279, 60, 94.88, 13.77, 0.24481, 61, -47.85, -3.72, 0.17322, 62, -158.02, -73.16, 0.16438, 4, 59, 367.51, -9.96, 0.14656, 60, 235.45, -32.57, 0.23073, 61, 100.06, 1.62, 0.29607, 62, -24.81, -8.63, 0.32661, 4, 59, 440.24, -55.6, 0.10821, 60, 303.52, -84.91, 0.21897, 61, 182.07, -23.8, 0.31097, 62, 60.48, 1.14, 0.36182, 3, 6, 174.99, 22.22, 0.2, 7, 54.82, -19.14, 0.6, 8, -18.79999, -16.2, 0.2, 3, 58, 189.25, 30.83, 0.33253, 59, 38.68, 14.84, 0.48076, 60, -89.52, 23.34, 0.18669, 5, 58, 295.08, 91.08, 0.22891, 59, 160.45, 16.54, 0.38754, 60, 31.85, 13.48, 0.2306, 61, -106.86, -25.89, 0.08042, 62, -203.08, -117.24, 0.0725, 5, 58, 414.43, 146.25, 0.07359, 59, 291.61, 7.27, 0.20198, 60, 161.53, -8.2, 0.23762, 61, 22.27, -1.17999, 0.24024, 62, -94.86, -42.56, 0.24654, 4, 59, 404.01, -32.87, 0.12351, 60, 269.61, -58.84, 0.22261, 61, 141.21, -11.13, 0.30609, 62, 17.98, -3.72, 0.34777, 1, 8, 26.4, -166.06, 1, 1, 8, 87.21, -106.12, 1, 1, 8, 108.19, -49.62, 1, 2, 8, 61.73, -82.12999, 0.50021, 39, 4.42, 52.83, 0.49978, 2, 8, 22.84, -109.4, 0.50021, 39, 51.52, 46.73, 0.49978, 4, 6, 247.12, -50.52, 0.06545, 7, 60.86, -121.4, 0.06069, 8, -30.3, -118, 0.49079, 39, 96.58, 17.21999, 0.38305, 1, 2, 26.73, 14.8, 1, 2, 2, -107.97, 25.67, 0.24192, 58, 60.17, -6.91, 0.75807, 4, 2, 235.53, 102.96, 0.0761, 6, 150.1, 9.35, 0.35533, 7, 27.64, -12.34, 0.41675, 8, -44.43, -4.87, 0.1518, 3, 2, 227.15, 28.49, 0.31015, 6, 95.96, -42.46, 0.60548, 7, -47.23, -15.44, 0.08435, 2, 8, 5.19, -153.1, 0.87618, 39, 90.96, 71.21, 0.12381, 4, 6, 243.13, -60.59, 0.10669, 7, 51.21, -126.33, 0.09893, 8, -40.65, -121.21, 0.47072, 39, 105.71, 17.33, 0.32363, 1, 8, 23.69, -185.21, 1, 1, 8, 79.64, -175.94, 1, 1, 8, 93.96, -187.56, 1, 1, 8, 87.07, -206.55, 1, 1, 8, 64.19999, -216.74, 1, 1, 8, 52.23, -203.68, 1, 1, 8, 59.24, -187.03, 1, 1, 8, 64.26, -223.8, 1, 1, 8, 89.44, -211.41, 1, 1, 8, 102.04, -186.95, 1, 1, 8, 83.1, -166.14, 1, 1, 8, 46.84, -186.41, 1, 1, 8, 50.32, -204.36, 1, 1, 8, 41.7, -206.59, 1, 1, 8, 61.87, -230.97, 1, 5, 58, 374.97, 143.6, 0.10291, 59, 256.29, 17.42, 0.23985, 60, 127.43, 2.07, 0.2431, 61, -13.35, -3.05, 0.20854, 62, -128.14, -55.46, 0.20557, 4, 59, 327.21, 4.42, 0.17789, 60, 196.28, -19.32, 0.24248, 61, 58.71, -1.04999, 0.28055, 62, -62.24, -26.21, 0.29905, 5, 58, 318.32, 113.62, 0.17774, 59, 192.26, 20.14, 0.33383, 60, 64.19, 12.44, 0.24171, 61, -76.55, -13.67, 0.12849, 62, -182.56, -89.31, 0.11821, 2, 8, 56.98, -162.99, 0.89259, 39, 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": "mesh", + "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, 21, 3.06, 31.88, 0.51075, 6, 66.56, -109.48, 0.48924, 1, 21, 35.87, 35.62, 1, 2, 21, 60.94, 27.12, 0.8464, 22, 46.49, 31.12, 0.15358, 2, 21, 74.05, 22.67, 0.3492, 22, 36.5, 21.53, 0.65078, 3, 21, 67, 31.58, 0.10937, 22, 47.66, 23.68, 0.78125, 31, -40.93, -19.44, 0.10937, 2, 22, 86.98, 31.24, 0.65078, 31, -25.75, 17.61, 0.3492, 2, 22, 103.83, 34.49, 0.34375, 31, -19.24, 33.49, 0.65625, 2, 22, 114.04, 19.51, 0.10937, 31, -1.11, 33.84, 0.89062, 1, 31, 53.62, 34.88, 1, 1, 31, 96.03, -19.16, 1, 1, 31, 104.2, -47.31, 1, 1, 31, 71.33999, -23.98, 1, 1, 31, 81.39, -64.61, 1, 1, 31, 76.8, -68.81, 1, 1, 31, 46.65, -34.25, 1, 2, 22, 73.12999, -45.76, 0.10937, 31, 31.14, -36.12, 0.89062, 2, 22, 73.98, -26.9, 0.34375, 31, 15.82, -25.09, 0.65625, 2, 22, 65.1, -26.69, 0.65078, 31, 10.78, -32.41, 0.3492, 3, 21, 133.56, 9.13, 0.10937, 22, -2.94, -25.03, 0.78125, 31, -27.84, -88.47, 0.10937, 2, 21, 123.67, -14.42, 0.3492, 22, -19.29, -5.39, 0.65078, 2, 21, 97.41, -15.43, 0.8464, 22, -8.08, 18.37, 0.15358, 1, 21, 45.46, -17.43, 1, 2, 21, 40.68999, -27.17, 0.45035, 6, -1.69, -93.8, 0.54964, 2, 21, -2.74, -29.63, 0.44352, 6, 18.99, -72.93, 0.55646, 1, 6, 32.11, -48.45, 1, 1, 6, 57.56, -67.43, 1, 1, 6, 84.38, -87.42, 1, 2, 21, 16.44, 5.21, 0.7182, 6, 46.31, -101.86, 0.28178, 2, 21, -4.51, 5.32, 0.48851, 6, 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": "mesh", + "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, 41, 42, 44, 43, 9, 10, 42, 43, 10, 41, 43, 42, 10, 13, 42, 11, 13, 10, 13, 11, 12, 13, 44, 42, 14, 15, 13, 45, 8, 9, 45, 40, 8, 16, 40, 45, 17, 40, 16, 16, 45, 15, 15, 45, 44, 45, 41, 44, 15, 44, 13, 45, 9, 43, 45, 43, 41, 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": [ 2, 25, 128.03, 88.47, 0.8504, 1, 158.83, -71.91, 0.14959, 2, 25, 219.55, 53.15, 0.77988, 26, -48.04, -38.58, 0.22011, 2, 25, 266.3, 35.09999, 0.53544, 26, -36.73, 10.22, 0.46455, 2, 25, 286.89, 9.79, 0.35166, 26, -14.56, 34.14, 0.64832, 2, 25, 281.54, -41.24, 0.09228, 26, 36.71, 36, 0.90771, 3, 25, 271.53, -136.86, 0.05786, 26, 132.77, 39.48, 0.71425, 27, 34.99, 78.76, 0.22787, 3, 26, 158.21, 55.17, 0.5308, 27, 52.65, 54.63, 0.38143, 28, 7.01, 85.54, 0.08776, 5, 26, 167.14, 99.49, 0.21498, 27, 97.55, 49.25, 0.35357, 28, 28.72, 45.87, 0.14219, 29, -21.26, 49.99, 0.22491, 30, -72.29, 25.96, 0.06431, 5, 26, 154.22, 105.55, 0.07537, 27, 102.57, 62.6, 0.23051, 28, 42.51, 49.55, 0.28379, 29, -7.06, 51.39, 0.27004, 30, -58.17, 28.03, 0.14026, 4, 27, 109.72, 83.39, 0.11607, 28, 64.08999, 55.23, 0.08123, 29, 15.12, 53.51, 0.36961, 30, -36.09, 31.19, 0.43307, 1, 30, 35.8, 41.81, 1, 1, 30, 128.11, 17.93, 1, 1, 30, 188.72, -29.42, 1, 2, 29, 93.29, -7.6, 0.47999, 30, 44.86, -26.17, 0.52, 2, 29, 133.17, -49.83, 0.776, 30, 86.69, -66.47, 0.22399, 2, 29, 78.78, -50.15, 0.76799, 30, 32.38, -69.36, 0.232, 1, 29, -4.91, -33.55, 1, 3, 27, 155.04, -5.13, 0.35917, 28, 17.87999, -32.5, 0.30632, 29, -44.62, -25.61, 0.33449, 4, 26, 254.98, 126.27, 0.10154, 27, 131.21, -36.2, 0.54211, 28, -21.24, -31.17, 0.20873, 29, -83.01999, -17.96999, 0.1476, 3, 26, 240.33, 7.81, 0.25586, 27, 11.94, -30.98, 0.61614, 28, -86.31, 68.9, 0.12797, 2, 26, 239.26, -23.1, 0.45486, 27, -18.95999, -32.37, 0.54513, 3, 25, 187.65, -209.73, 0.09777, 26, 216.66, -33.34999, 0.58892, 27, -30.97, -10.65, 0.3133, 2, 25, 163.85, -128.67, 0.19603, 26, 139.75, -68.26, 0.80396, 2, 25, 165.74, -94.49, 0.31962, 26, 105.59, -71.26, 0.68037, 2, 25, 166.39, -79.07, 0.46225, 26, 90.23, -72.76, 0.53774, 2, 25, 166.49, -74.17, 0.53785, 26, 85.42, -73.28, 0.46213, 2, 25, 141.54, -82.46, 0.73138, 26, 97.13, -96.82, 0.26861, 2, 25, 99.76, -97.08, 0.85324, 26, 117.34, -136.23, 0.14675, 2, 25, 45.01, -114.56, 0.83615, 1, -51.09, -135.29, 0.16384, 2, 25, -16.2, -74.76, 0.62989, 1, -42.95, -58.38, 0.3701, 2, 25, -74.73, -19.33, 0.31468, 1, -52.66, 17.54999, 0.68531, 2, 25, 1.67, 76.75, 0.25576, 1, 70.07, 18.78, 0.74423, 1, 25, 93.54, 4.13, 1, 2, 25, 185.14, -6.66, 0.75461, 26, 15.98, -64.26999, 0.24538, 2, 25, 217.11, -18.75, 0.50844, 26, 23.47, -30.93, 0.49154, 2, 25, 225.63, -32.91999, 0.32527, 26, 36.3, -20.5, 0.67472, 2, 25, 223, -84.73, 0.20192, 26, 87.96, -15.86, 0.79807, 3, 25, 235.61, -168.06, 0.0809, 26, 168.69, 8.29, 0.57147, 27, 6.74, 40.47, 0.34761, 3, 26, 191.79, 35.8, 0.32545, 27, 36, 19.62, 0.57243, 28, -31.14, 78.74, 0.10211, 4, 26, 206.64, 111.53, 0.10808, 27, 112.69, 10.82, 0.52067, 28, 6.25, 11.23, 0.23517, 29, -49.03, 19.43, 0.13606, 3, 27, 130.6, 26.41, 0.35067, 28, 29.35, 5.71, 0.28241, 29, -27.12, 10.25, 0.3669, 2, 29, 67.46, 3.16, 0.384, 30, 18.54999, -16.62999, 0.61599, 1, 30, 19.07, -14.51, 1, 2, 29, 36, 24.95, 0.384, 30, -13.89, 3.64, 0.61599, 2, 29, 86.23, -6.55, 0.48799, 30, 37.75, -25.46, 0.512, 4, 26, 164.9, 153.55, 0.02263, 27, 151.18, 56, 0.23908, 28, 65.44, 5.55, 0.19254, 29, 8.45, 4.27, 0.54574, 2, 25, -9.28, -17.5, 0.59605, 1, 7.72, -30.85, 0.40393, 2, 25, 195.9, -53.81, 0.42368, 26, 61.11, -47.06, 0.5763, 2, 25, 190.1, -48.45, 0.53231, 26, 56.61, -53.56, 0.46768, 2, 25, 161.26, -48.26, 0.79873, 26, 60.44, -82.12999, 0.20126, 2, 25, 120.37, -58.54, 0.85455, 26, 76.31, -121.18, 0.14544, 2, 25, 197.37, -69.23, 0.3355, 26, 76.17, -43.46, 0.66449 ], + "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": "mesh", + "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": [ 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, 44, 53.94, 69.15, 1, 1, 44, 126.23, 67.31, 1, 2, 44, 226.42, 31.13, 0.9375, 45, -30.87, -1.11, 0.0625, 2, 44, 240.84, 25.33, 0.7, 45, -25.64, 13.52, 0.3, 2, 44, 246.67, 8.05, 0.3, 45, -8.60999, 20.02, 0.7, 3, 44, 240.81, -115.25, 0.0625, 45, 114.8, 19.01, 0.875, 46, 9.47999, 59.16, 0.0625, 2, 45, 131.07, 29.69, 0.7, 46, 22.11, 44.35, 0.3, 2, 45, 146.06, 39.54, 0.3, 46, 33.75999, 30.71, 0.7, 3, 45, 152.6, 65.01, 0.12566, 46, 59.85, 27.41, 0.75203, 47, 15.85, 48.05, 0.12229, 3, 45, 154.28, 71.58999, 0.05444, 46, 66.58999, 26.56, 0.78401, 47, 16.71999, 41.31, 0.16154, 3, 46, 71.19, 35.75999, 0.64716, 47, 26.78, 39.16999, 0.13169, 48, -67.32, 18.95999, 0.22114, 3, 46, 87.93, 69.21, 0.0625, 47, 63.37, 31.39, 0.675, 48, -30.17, 23.3, 0.26249, 2, 47, 113.82, 35.72, 0.1038, 48, 16.23, 43.56, 0.89619, 1, 48, 128.14, 12.02, 1, 1, 48, 161.85, -15.81, 1, 2, 47, 90.98, -23.36, 0.0138, 48, 13.52, -19.71999, 0.98619, 2, 47, 62.97, -25.81, 0.7, 48, -12.23, -31.02, 0.3, 3, 46, 115.12, -1.33, 0.08333, 47, 1.93, -12.66, 0.83333, 48, -74.26, -38.09999, 0.08333, 2, 46, 106.11, -23.53, 0.3, 47, -21.8, -9.52, 0.7, 2, 46, 97.43, -44.9, 0.7, 47, -44.67, -6.51, 0.3, 2, 46, 84.26, -40.68999, 0.9375, 47, -43.9, 7.29, 0.0625, 1, 46, 49.18, -29.46, 1, 2, 45, 206.75, 5.37, 0.13333, 46, 7.44, -33.77, 0.86666, 2, 45, 219.64, -20.52, 0.36111, 46, -16.64, -49.8, 0.63888, 2, 45, 208.4, -37.82, 0.72083, 46, -35.22, -40.82, 0.27916, 2, 45, 200.49, -50.02, 0.91666, 46, -48.31, -34.48, 0.08333, 1, 45, 161.1, -36.97, 1, 2, 44, 150.1, -116.76, 0.08333, 45, 119.88, -71.55, 0.91666, 2, 44, 154.99, -70.71, 0.42846, 45, 73.68, -68.47, 0.57153, 2, 44, 150.3, -65.26999, 0.35604, 45, 68.42, -73.36, 0.64395, 2, 44, 146.51, -60.87, 0.59147, 45, 64.17, -77.32, 0.40852, 2, 44, 115.12, -75.08, 0.8446, 45, 79.61, -108.13, 0.15538, 1, 44, 63.33, -98.53, 1, 1, 44, 21.78, -94.55, 1, 1, 44, -66.69, -32.04, 1, 1, 44, -6.62, 52.97, 1, 1, 44, 58.14, -6, 1, 1, 44, 121.17, 2.44, 1, 1, 44, 188.87, -12.1, 1, 2, 44, 197.11, -18.42, 0.7, 45, 19.79, -28.44, 0.3, 2, 44, 203.98, -28.61, 0.3, 45, 29.69, -21.17, 0.7, 1, 45, 136.67, -7.42, 1, 2, 45, 164.32, 0.66, 0.7, 46, -2.53, 7.73, 0.3, 2, 45, 177.97, 21.57, 0.25, 46, 19.92, -3.19, 0.75, 1, 46, 71.93, -6.29, 1, 2, 46, 79.66, -3.72, 0.7, 47, -9.28, 21.04, 0.3, 2, 46, 87.98, 7.25, 0.3125, 47, 3.42, 15.76, 0.6875, 3, 46, 114.16, 61.85, 0.04, 47, 62.84, 4.15, 0.7, 48, -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": { + "raptor_horn": { "x": 156.2, "y": 74.1, "rotation": -137.26, "width": 363, "height": 159 } + }, + "raptor_horn_back": { + "raptor_horn_back": { "x": 121.42, "y": 83.01, "rotation": -132.21, "width": 351, "height": 153 } + }, + "raptor_jaw": { + "raptor_jaw": { + "type": "mesh", + "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": [ 14, 13, 0, 14, 0, 1, 5, 3, 4, 10, 14, 1, 11, 14, 10, 6, 3, 5, 2, 10, 1, 7, 2, 3, 7, 3, 6, 2, 8, 10, 8, 9, 10, 2, 7, 8, 14, 12, 13, 11, 12, 14 ], + "vertices": [ 1, 39, 28.6, 68.85, 1, 1, 39, 69.65, 38.95, 1, 1, 39, 150.72, 72.87999, 1, 1, 39, 186.16, 74.79, 1, 1, 39, 199.76, 159.69, 1, 1, 39, 213.35, 148.16, 1, 1, 39, 242.43, 74.42, 1, 1, 39, 230.31, -13.08, 1, 1, 39, 189.56, -71.99, 1, 1, 39, 132.76, -105.6, 1, 1, 39, 83.71, -55.39, 1, 2, 8, -18.31, 12.1, 0.67732, 39, -0.04, -70.76, 0.32267, 1, 8, 113.44, 16.95, 1, 1, 8, 116.36, -62.48, 1, 1, 39, 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": { + "raptor_saddle_noshadow": { "x": 80.83, "y": 10.63, "rotation": -88.64, "width": 326, "height": 375 } + }, + "raptor_saddle_strap_front": { + "raptor_saddle_strap_front": { "x": 128.83, "y": -4.71, "rotation": 61.29, "width": 114, "height": 189 } + }, + "raptor_saddle_strap_rear": { + "raptor_saddle_strap_rear": { + "type": "mesh", + "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": [ 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, 52, 3.9, -3.27, 1, 1, 52, 4.25, 15.05, 1, 1, 52, 13.24, 20.28, 1, 2, 52, 23.42, 21.2, 0.7, 53, -15.2, 21.22, 0.3, 3, 52, 41.11, 22.87, 0.3, 53, 2.48, 22.89, 0.6375, 54, -33.83, 24.96, 0.0625, 3, 52, 52.07, 21.72, 0.0625, 53, 13.43, 21.74, 0.6375, 54, -22.97, 23.11, 0.3, 2, 53, 18.39, 20.76, 0.25, 54, -18.09, 21.82, 0.75, 1, 54, -18.76, 33.09, 1, 1, 54, 49.92, 31.57, 1, 1, 54, 53.21, 25, 1, 1, 54, 53.11, -27.48, 1, 1, 54, 49.74, -31.27, 1, 1, 54, -20.73, -36.75999, 1, 1, 54, -23.82, -22.28, 1, 3, 52, 53.48, -24.61, 0.0625, 53, 14.84, -24.59, 0.575, 54, -24.51, -23.21, 0.3625, 3, 52, 41.43999, -26.12, 0.3, 53, 2.81, -26.09, 0.6375, 54, -36.62, -23.95, 0.0625, 2, 52, 24.38, -26.12, 0.7, 53, -14.24, -26.1, 0.3, 1, 52, 5.57, -26.12, 1, 1, 52, 3.54, -22.64, 1, 1, 54, -23.08, -0.04, 1, 2, 52, 41.66, -1.72, 0.3125, 53, 3.03, -1.7, 0.6875, 2, 52, 23.85, -2.46, 0.7, 53, -14.77, -2.44, 0.3, 2, 53, 13.95, -1.5, 0.64582, 54, -23.94, -0.11, 0.35416 ], + "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": { + "raptor_saddle_w_shadow": { "x": 80.83, "y": 10.63, "rotation": -88.64, "width": 326, "height": 375 } + }, + "raptor_tongue": { + "raptor_tongue": { + "type": "mesh", + "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, 63, 3.63, 27.04, 0.6875, 64, -47.26, 33.87, 0.3125, 3, 63, 39.09, 19.45, 0.3125, 64, -13.41, 20.86, 0.625, 65, -51.54, 33.37, 0.0625, 3, 63, 71.56, 19.02, 0.0625, 64, 18.58, 15.39, 0.625, 65, -21.56, 20.92, 0.3125, 2, 64, 55.03, 16.85, 0.3125, 65, 14.29, 14.23, 0.6875, 2, 64, 93.34, 18.39, 0.08333, 65, 51.98, 7.21, 0.91666, 1, 65, 56.09, -4.5, 1, 2, 64, 85.06, -1.49, 0.08333, 65, 39.48, -10.33, 0.91666, 2, 64, 54.22, -9.18, 0.3125, 65, 7.71, -10.96, 0.6875, 3, 63, 75.14, -14.72, 0.0625, 64, 16.87, -18.5, 0.625, 65, -30.77, -11.73, 0.3125, 3, 63, 38.8, -25.8, 0.3125, 64, -20.74, -23.8, 0.625, 65, -68.62, -8.53, 0.0625, 2, 63, 2.4, -35.77, 0.6875, 64, -58.25, -27.99, 0.3125, 2, 63, -17.28, -40.62, 0.91666, 64, -78.44999, -29.71, 0.08333, 1, 63, -59.91, 8.18, 1, 2, 63, -26.13, 37.68999, 0.91666, 64, -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": { + "torso": { "x": 55.88, "y": 4.86, "rotation": -104.14, "width": 108, "height": 182 } + }, + "stirrup_back": { + "stirrup_back": { "x": 53.2, "y": 31.34, "rotation": -21.12, "width": 87, "height": 69 } + }, + "stirrup_front": { + "stirrup_front": { "x": 36.13, "y": 20.39, "rotation": -21.12, "width": 89, "height": 100 } + }, + "stirrup_strap": { + "stirrup_strap": { + "type": "mesh", + "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, 56, 24.71, 8.03, 0.80344, 57, -17.42, 11.02, 0.19655, 2, 56, 37.95, 8.04, 0.59978, 57, -4.36, 8.87, 0.40021, 2, 56, 50.88, 8.04, 0.36895, 57, 8.39, 6.77, 0.63103, 2, 56, 65.92, 12.27, 0.17748, 57, 23.91, 8.47999, 0.82251, 2, 56, 81.72, 16.7, 0.05943, 57, 40.23, 10.28, 0.94056, 2, 56, 98.82, 25.04, 0.01209, 57, 58.46, 15.71, 0.9879, 2, 56, 114.44, 11.57, 0.00191, 57, 71.67, -0.11, 0.99808, 2, 56, 100.47, -4.61, 0.01816, 57, 55.25, -13.81, 0.98182, 2, 56, 78.79, -4.14, 0.07487, 57, 33.93999, -9.81, 0.92512, 2, 56, 65.83, -6.24, 0.2028, 57, 20.81, -9.76, 0.79719, 2, 56, 49.78, -8.83, 0.39971, 57, 4.55, -9.7, 0.60028, 2, 56, 37.93, -10.97, 0.62658, 57, -7.48, -9.88, 0.37341, 2, 56, 25.85, -13.15, 0.82034, 57, -19.75, -10.06, 0.17965, 2, 56, 0.25, -18.03, 0.95288, 57, -45.81, -10.7, 0.04711, 2, 56, -17.83, -2.43, 0.97709, 57, -61.11, 7.63, 0.0229, 2, 56, 1.57, 20.07, 0.94774, 57, -38.29, 26.67, 0.05225, 2, 56, 10.84, -1.23, 0.97709, 57, -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": { + "visor": { "x": 99.13, "y": 6.51, "rotation": -70.57, "width": 261, "height": 168 } + } + } +}, +"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 } + ] + } + } + }, + "gungrab": { + "slots": { + "front_hand": { + "attachment": [ + { "time": 0, "name": "front_open_hand" }, + { "time": 0.1666, "name": "gun" } + ] + }, + "gun": { + "attachment": [ + { "time": 0, "name": "gun_nohand" }, + { "time": 0.1666, "name": null } + ] + } + }, + "bones": { + "front_hand2": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.1333, "angle": 12.33 }, + { "time": 0.1666, "angle": -89.54 }, + { "time": 0.2333, "angle": -79.78 }, + { "time": 0.4666, "angle": -10.18 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 }, + { "time": 0.1666, "x": 0.938, "y": 0.938 }, + { "time": 0.4666, "x": 1, "y": 1 } + ] + }, + "front_arm": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.0666, "angle": -31.99 }, + { + "time": 0.1666, + "angle": 223.11, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 0.2333, + "angle": 155.19, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 0.3666, + "angle": 246.13, + "curve": [ 0.184, 0.33, 0.75, 1 ] + }, + { "time": 0.4666, "angle": -56.74 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 }, + { "time": 0.1666, "x": 6.49, "y": -2.66 }, + { "time": 0.2333, "x": 6.84, "y": 4.79 }, + { "time": 0.4666, "x": 0, "y": 0 } + ] + }, + "front_bracer": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.1666, "angle": 86.01 }, + { "time": 0.2333, "angle": 114.94 }, + { + "time": 0.3666, + "angle": 81.86, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 0.4666, "angle": 34.73 } + ] + } + }, + "ik": { + "front_arm_goal": [ + { "time": 0, "mix": 0 } + ] + } + }, + "walk": { + "bones": { + "root": { + "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 } + ] + }, + "front_foot_goal": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.2666, "angle": -51.26 }, + { "time": 0.4, "angle": -65.17 }, + { "time": 0.5333, "angle": -76.28 }, + { "time": 0.8, "angle": -76.52 }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 343.28, "y": 36.5 }, + { "time": 0.2666, "x": 86.5, "y": 36.99 }, + { "time": 0.5333, "x": -173.36, "y": 37.42 }, + { "time": 0.6, "x": -68.15, "y": 141.15 }, + { "time": 0.7333, "x": 91.78, "y": 238.01 }, + { "time": 0.8, "x": 155.89, "y": 190.91 }, + { "time": 0.9666, "x": 303.28, "y": 94.4 }, + { "time": 1.0666, "x": 343.28, "y": 36.5 } + ] + }, + "hip": { + "rotate": [ + { "time": 0, "angle": -4.78 }, + { "time": 0.0666, "angle": -3.99 }, + { "time": 0.2666, "angle": -12.49 }, + { "time": 0.5333, "angle": -4.78 }, + { "time": 0.6, "angle": -3.99 }, + { "time": 0.8, "angle": -12.49 }, + { "time": 1.0666, "angle": -4.78 } + ], + "translate": [ + { + "time": 0, + "x": 161.93, + "y": 4.89, + "curve": [ 0.27, 0.37, 0.62, 0.4 ] + }, + { + "time": 0.0666, + "x": 165.04, + "y": -5.99, + "curve": [ 0.244, 0, 0.757, 1 ] + }, + { + "time": 0.2666, + "x": 178.8, + "y": 136.52, + "curve": [ 0.25, 0, 0.841, 0.8 ] + }, + { + "time": 0.5333, + "x": 161.93, + "y": 4.89, + "curve": [ 0.27, 0.37, 0.62, 0.4 ] + }, + { + "time": 0.6, + "x": 165.04, + "y": -5.99, + "curve": [ 0.244, 0, 0.757, 1 ] + }, + { + "time": 0.8, + "x": 178.8, + "y": 136.52, + "curve": [ 0.25, 0, 0.858, 0.82 ] + }, + { "time": 1.0666, "x": 161.93, "y": 4.89 } + ] + }, + "rear_foot_goal": { + "rotate": [ + { "time": 0, "angle": -62.73 }, + { "time": 0.2666, "angle": -107.17 }, + { "time": 0.4666, "angle": -40.51 }, + { "time": 0.8, "angle": -97.15 }, + { "time": 1.0666, "angle": -62.73 } + ], + "translate": [ + { "time": 0, "x": -266.69, "y": -15.46 }, + { "time": 0.1333, "x": -87.88, "y": 124.85 }, + { "time": 0.2666, "x": 88.35, "y": 134.06 }, + { "time": 0.3666, "x": 198.39, "y": 90.64 }, + { "time": 0.4666, "x": 308.19, "y": -26.42 }, + { "time": 0.6, "x": 167.06, "y": -26.42 }, + { "time": 1.0666, "x": -266.69, "y": -15.46 } + ] + }, + "front_leg1": { + "rotate": [ + { "time": 0, "angle": 27.07 }, + { "time": 1.0666, "angle": 31.39 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 }, + { "time": 0.0666, "x": -0.21, "y": 15.19 }, + { "time": 0.5333, "x": -0.33, "y": 12.15 }, + { "time": 0.7333, "x": -4.74, "y": 31.93 }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "front_leg_goal": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": -18.04, "y": -2.88 }, + { "time": 0.4333, "x": -42.2, "y": -88.63 }, + { "time": 0.5333, "x": -27.31, "y": -43.9 }, + { "time": 0.7333, "x": -1.52, "y": -94.28 }, + { "time": 0.8, "x": -24.29, "y": -116.41 }, + { "time": 1, "x": -41.88, "y": -93.3 }, + { "time": 1.0666, "x": -18.04, "y": -2.88 } + ] + }, + "rear_leg1": { + "rotate": [ + { "time": 0, "angle": -64.85 }, + { "time": 1.0666, "angle": -45.71 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "rear_leg_goal": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": -2.05, "y": 15.12 }, + { "time": 0.2666, "x": 17.49, "y": -150.43 }, + { "time": 0.4666, "x": -40.21, "y": -81.76 }, + { "time": 0.5333, "x": -31.68, "y": -82.43 }, + { "time": 0.8, "x": 2.65, "y": -169.21 }, + { "time": 0.9333, "x": -16.76, "y": -98.31 }, + { "time": 1.0666, "x": -2.05, "y": 15.12 } + ] + }, + "tail1": { + "rotate": [ + { "time": 0, "angle": 1.3 }, + { "time": 0.0666, "angle": 4.13 }, + { "time": 0.3333, "angle": -5.77 }, + { "time": 0.6333, "angle": 4.13 }, + { "time": 0.9, "angle": -5.77 }, + { "time": 1.0666, "angle": 1.3 } + ], + "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 } + ] + }, + "torso1": { + "rotate": [ + { "time": 0, "angle": 7.21 }, + { "time": 0.2666, "angle": 4.19 }, + { "time": 0.5333, "angle": 7.21 }, + { "time": 0.8, "angle": 4.19 }, + { "time": 1.0666, "angle": 7.21 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "front_leg2": { + "rotate": [ + { "time": 0, "angle": -347.28 }, + { "time": 1.0666, "angle": -362.06 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "rear_leg2": { + "rotate": [ + { "time": 0, "angle": 27.05 }, + { "time": 1.0666, "angle": 9.92 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "saddle": { + "rotate": [ + { "time": 0, "angle": -2.51 }, + { "time": 0.2666, "angle": -4.17 }, + { "time": 0.5333, "angle": -3.85 }, + { "time": 0.8, "angle": -3.09 }, + { "time": 1.0666, "angle": -2.51 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { + "time": 0.2666, + "x": 0, + "y": 0, + "curve": [ 0.149, 0.28, 0.75, 1 ] + }, + { + "time": 0.3333, + "x": -0.03, + "y": 5.91, + "curve": [ 0.421, 0, 0.85, 0.78 ] + }, + { "time": 0.5333, "x": 0, "y": 0 }, + { "time": 0.6, "x": -0.2, "y": -2.35 }, + { + "time": 0.8, + "x": 0, + "y": 0, + "curve": [ 0.149, 0.28, 0.75, 1 ] + }, + { + "time": 0.8666, + "x": -0.03, + "y": 5.91, + "curve": [ 0.421, 0, 0.85, 0.78 ] + }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "tail2": { + "rotate": [ + { "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": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "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": { + "rotate": [ + { "time": 0, "angle": 8.6 }, + { + "time": 0.2666, + "angle": 9.52, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 0.5333, "angle": 8.01 }, + { + "time": 0.8, + "angle": 5.48, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 1.0666, "angle": 8.6 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "front_arm1": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.5, "angle": -367.82 }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 20.64, "y": -7.55 }, + { "time": 0.5, "x": -2.86, "y": 3.32 }, + { "time": 0.8, "x": 24.09, "y": -1.47 }, + { "time": 0.9333, "x": 21.73, "y": -3.7 }, + { "time": 1.0666, "x": 20.64, "y": -7.55 } + ] + }, + "front_leg3": { + "rotate": [ + { "time": 0, "angle": 1.14, "curve": "stepped" }, + { "time": 1.0666, "angle": 1.14 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "neck": { + "rotate": [ + { "time": 0, "angle": 6.5 }, + { "time": 0.2666, "angle": 12.71 }, + { "time": 0.5333, "angle": 6.5 }, + { "time": 0.8, "angle": 12.71 }, + { "time": 1.0666, "angle": 6.5 } + ], + "translate": [ + { "time": 0, "x": 12.59, "y": -31.3 }, + { + "time": 0.2666, + "x": -10.84, + "y": -72.28, + "curve": [ 0.204, 0.01, 0.861, 0.86 ] + }, + { "time": 0.5333, "x": 12.59, "y": -31.3 }, + { + "time": 0.8, + "x": -10.84, + "y": -72.28, + "curve": [ 0.204, 0.01, 0.861, 0.86 ] + }, + { "time": 1.0666, "x": 12.59, "y": -31.3 } + ] + }, + "rear_arm1": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.5, "angle": 13.71 }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 }, + { "time": 0.5, "x": 11.12, "y": -13.38 }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "rear_leg3": { + "rotate": [ + { "time": 0, "angle": -23.18, "curve": "stepped" }, + { "time": 1.0666, "angle": -23.18 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "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 } + ] + }, + "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 } + ] + }, + "tail3": { + "rotate": [ + { "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": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "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": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.5, "angle": 22.44 }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "front_foot1": { + "rotate": [ + { "time": 0, "angle": -41.33, "curve": "stepped" }, + { "time": 1.0666, "angle": -41.33 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "head": { + "rotate": [ + { "time": 0, "angle": -7.36 }, + { + "time": 0.1333, + "angle": -12.99, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 0.4, "angle": -6.12 }, + { "time": 0.5333, "angle": -7.36 }, + { + "time": 0.6666, + "angle": -12.99, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 0.9333, "angle": -6.12 }, + { "time": 1.0666, "angle": -7.36 } + ], + "translate": [ + { "time": 0, "x": -3.88, "y": -32.87 }, + { "time": 0.9333, "x": -3.33, "y": -22.81 }, + { "time": 1.0666, "x": -3.88, "y": -32.87 } + ] + }, + "rear_arm2": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.5, "angle": -30.2 }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "rear_foot1": { + "rotate": [ + { "time": 0, "angle": 2.07, "curve": "stepped" }, + { "time": 1.0666, "angle": 2.07 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "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 } + ] + }, + "saddle_strap_rear2": { + "rotate": [ + { "time": 0, "angle": -4.44 }, + { "time": 0.1, "angle": -2.66 }, + { "time": 0.3, "angle": -0.35 }, + { "time": 0.4333, "angle": -1.7 }, + { "time": 0.6333, "angle": -2.54 }, + { "time": 0.9, "angle": -0.51 }, + { "time": 1.0666, "angle": -4.44 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "stirrup": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.2666, "angle": -4.95 }, + { "time": 0.5333, "angle": 0 }, + { "time": 0.8, "angle": -4.95 }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 8.97, "y": 4.99 }, + { "time": 0.2666, "x": 4.85, "y": 0.99 }, + { "time": 0.5333, "x": 7.75, "y": -2.99 }, + { "time": 0.8, "x": 4.85, "y": 0.99 }, + { "time": 1.0666, "x": 8.97, "y": 4.99 } + ] + }, + "tail4": { + "rotate": [ + { "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": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "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": { + "rotate": [ + { "time": 0, "angle": 36.9 }, + { "time": 0.0666, "angle": 7.88 }, + { "time": 0.1333, "angle": 4.66 }, + { "time": 0.4, "angle": 7.59 }, + { "time": 0.5333, "angle": 8.08 }, + { "time": 0.6666, "angle": -67.33 }, + { "time": 0.7333, "angle": -65.23 }, + { "time": 1, "angle": 27.74 }, + { "time": 1.0666, "angle": 36.9 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "front_hand": { + "rotate": [ + { "time": 0, "angle": 9.49 }, + { "time": 0.5, "angle": -48.6 }, + { "time": 1.0666, "angle": 9.49 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "horn_front": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 }, + { "time": 0.2666, "x": -7.18, "y": -1.38 }, + { "time": 0.5333, "x": 0, "y": 0 }, + { "time": 0.8, "x": -7.18, "y": -1.38 }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "horn_rear": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 }, + { "time": 0.2666, "x": 12.34, "y": 9.16 }, + { "time": 0.5333, "x": 0, "y": 0 }, + { "time": 0.8, "x": 12.34, "y": 9.16 }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "jaw": { + "rotate": [ + { "time": 0, "angle": 25.56 }, + { "time": 0.2, "angle": 21.27 }, + { "time": 0.3333, "angle": 21.35 }, + { "time": 0.6666, "angle": 15.6 }, + { "time": 0.8666, "angle": 22.96 }, + { "time": 1.0666, "angle": 25.56 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "rear_foot2": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.1333, "angle": -82.37 }, + { "time": 0.2666, "angle": -110.3 }, + { "time": 0.4333, "angle": 36.21 }, + { "time": 0.5333, "angle": 2.1 }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "rear_hand": { + "rotate": [ + { "time": 0, "angle": -28.89 }, + { "time": 0.5, "angle": 12.19 }, + { "time": 1.0666, "angle": -28.89 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "saddle_strap_rear3": { + "rotate": [ + { "time": 0, "angle": -1.31 }, + { "time": 0.1, "angle": 0.46 }, + { "time": 0.3, "angle": 2.77 }, + { "time": 0.4333, "angle": 1.42 }, + { "time": 0.6333, "angle": 0.58 }, + { "time": 0.9, "angle": 2.61 }, + { "time": 1.0666, "angle": -1.31 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "tail5": { + "rotate": [ + { + "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": 1.0666, "x": 0, "y": 0 } + ], + "scale": [ + { "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": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.3333, "angle": 7.55 }, + { "time": 0.6666, "angle": -1.68 }, + { "time": 0.9333, "angle": 8.11 }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "front_foot3": { + "rotate": [ + { "time": 0, "angle": -1.65 }, + { "time": 0.0666, "angle": -5.29 }, + { "time": 0.1333, "angle": -3.94 }, + { "time": 0.2666, "angle": -3.81 }, + { "time": 0.5333, "angle": -5.89 }, + { "time": 0.6, "angle": -21.2 }, + { "time": 0.6666, "angle": -73.63 }, + { "time": 0.7333, "angle": -102.81 }, + { "time": 0.8333, "angle": -41.3 }, + { "time": 1, "angle": 10.93 }, + { "time": 1.0666, "angle": -1.65 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "tongue2": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.3333, "angle": 7.55 }, + { "time": 0.6666, "angle": -1.68 }, + { "time": 0.9333, "angle": 8.11 }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "tongue3": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.3333, "angle": 7.55 }, + { "time": 0.6666, "angle": -1.68 }, + { "time": 0.9333, "angle": 8.11 }, + { "time": 1.0666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "head2": { + "rotate": [ + { "time": 0, "angle": 38.59 }, + { "time": 0.2666, "angle": 43.18 }, + { "time": 0.5333, "angle": 38.59 }, + { "time": 0.8, "angle": 43.18 }, + { "time": 1.0666, "angle": 38.59 } + ] + }, + "neck2": { + "rotate": [ + { "time": 0, "angle": 9.65 }, + { "time": 0.2666, "angle": 14.71 }, + { "time": 0.5333, "angle": 9.65 }, + { "time": 0.8, "angle": 14.71 }, + { "time": 1.0666, "angle": 9.65 } + ] + }, + "spineboy_hip": { + "translate": [ + { + "time": 0, + "x": 32.54, + "y": 1.34, + "curve": [ 0.412, 0, 0.872, 0.78 ] + }, + { + "time": 0.2666, + "x": -12.88, + "y": 0.58, + "curve": [ 0.138, 0.17, 0.75, 1 ] + }, + { + "time": 0.5333, + "x": 32.54, + "y": 1.34, + "curve": [ 0.367, 0, 0.867, 0.81 ] + }, + { + "time": 0.8, + "x": -12.88, + "y": 0.58, + "curve": [ 0.164, 0.17, 0.75, 1 ] + }, + { "time": 1.0666, "x": 32.54, "y": 1.34 } + ] + }, + "spineboy_torso": { + "rotate": [ + { "time": 0, "angle": -37.93 }, + { + "time": 0.2666, + "angle": -29.47, + "curve": [ 0.492, 0, 0.75, 1 ] + }, + { "time": 0.5333, "angle": -37.93 }, + { + "time": 0.8, + "angle": -29.47, + "curve": [ 0.492, 0, 0.75, 1 ] + }, + { "time": 1.0666, "angle": -37.71 } + ] + }, + "front_arm": { + "translate": [ + { "time": 0, "x": 0, "y": 0 }, + { "time": 0.3333, "x": -14.43, "y": -11.03 }, + { "time": 0.5333, "x": 0, "y": 0 }, + { "time": 0.8, "x": -14.43, "y": -11.03 }, + { "time": 1.0666, "x": 0, "y": 0 } + ] + }, + "gun": { + "rotate": [ + { + "time": 0, + "angle": -11.68, + "curve": [ 0.379, 0.6, 0.724, 1 ] + }, + { "time": 0.0666, "angle": -17.59 }, + { + "time": 0.3333, + "angle": 14.45, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 0.6, + "angle": -24.74, + "curve": [ 0.326, 0, 0.715, 1 ] + }, + { + "time": 0.8666, + "angle": 14.45, + "curve": [ 0.242, 0, 0.666, 0.66 ] + }, + { "time": 1.0666, "angle": -11.68 } + ], + "translate": [ + { "time": 0, "x": 0.84, "y": -3.81 }, + { "time": 0.0666, "x": 0, "y": 0 }, + { "time": 0.3333, "x": 3.37, "y": -15.27 }, + { "time": 0.6, "x": 0, "y": 0 }, + { "time": 0.8666, "x": 3.37, "y": -15.27 }, + { "time": 1.0666, "x": 0.84, "y": -3.81 } + ] + } + }, + "deform": { + "default": { + "raptor_body": { + "raptor_body": [ + { "time": 0 }, + { + "time": 0.2666, + "offset": 314, + "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, -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": 314, + "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, -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 } + ] + }, + "raptor_front_leg": { + "raptor_front_leg": [ + { "time": 0, "curve": "stepped" }, + { "time": 0.2666 }, + { + "time": 0.5333, + "offset": 138, + "vertices": [ -2.23608, 21.95403, 21.54915, -4.7554 ] + }, + { + "time": 0.6, + "offset": 138, + "vertices": [ 7.17962, 15.14358, 15.26523, -6.91741 ] + }, + { + "time": 0.7333, + "offset": 110, + "vertices": [ -0.82485, 0.73406, -0.01284, -1.10443, 0, 0, 0, 0, 1.4866, -2.59426, 0.98071, 2.82342, 2.7366, -10.49935, 6.12506, 8.95282, -2.60873, -2.28384, 3.43417, -0.47045, -2.28305, -4.76037, 5.08892, 1.40078, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 ] + }, + { "time": 0.8, "curve": "stepped" }, + { "time": 0.9666, "curve": "stepped" }, + { "time": 1.0666 } + ] + } + } + } + } +} +} \ No newline at end of file diff --git a/spine-cocos2d-objc/Resources/raptor.png b/spine-cocos2d-objc/Resources/raptor.png new file mode 100644 index 000000000..625072a67 Binary files /dev/null and b/spine-cocos2d-objc/Resources/raptor.png differ diff --git a/spine-cocos2d-objc/Resources/spineboy.atlas b/spine-cocos2d-objc/Resources/spineboy.atlas index 19c0934b1..e9500cc4a 100644 --- a/spine-cocos2d-objc/Resources/spineboy.atlas +++ b/spine-cocos2d-objc/Resources/spineboy.atlas @@ -1,194 +1,195 @@ spineboy.png +size: 1024,1024 format: RGBA8888 filter: Linear,Linear repeat: none eye_indifferent - rotate: true - xy: 389, 5 - size: 56, 53 - orig: 56, 53 + rotate: false + xy: 550, 694 + size: 93, 89 + orig: 93, 89 offset: 0, 0 index: -1 eye_surprised rotate: false - xy: 580, 34 - size: 56, 53 - orig: 56, 53 + xy: 834, 856 + size: 93, 89 + orig: 93, 89 offset: 0, 0 index: -1 front_bracer rotate: false - xy: 732, 85 - size: 35, 48 - orig: 35, 48 + xy: 678, 774 + size: 58, 80 + orig: 58, 80 offset: 0, 0 index: -1 front_fist_closed - rotate: false - xy: 556, 91 - size: 45, 49 - orig: 45, 49 + rotate: true + xy: 466, 593 + size: 75, 82 + orig: 75, 82 offset: 0, 0 index: -1 front_fist_open rotate: false - xy: 668, 32 - size: 52, 52 - orig: 52, 52 + xy: 550, 605 + size: 86, 87 + orig: 86, 87 offset: 0, 0 index: -1 front_foot rotate: false - xy: 924, 201 - size: 76, 41 - orig: 76, 41 + xy: 550, 785 + size: 126, 69 + orig: 126, 69 offset: 0, 0 index: -1 front_foot_bend1 - rotate: false - xy: 845, 200 - size: 77, 42 - orig: 77, 42 + rotate: true + xy: 375, 492 + size: 128, 70 + orig: 128, 70 offset: 0, 0 index: -1 front_foot_bend2 - rotate: false - xy: 778, 186 - size: 65, 56 - orig: 65, 56 + rotate: true + xy: 275, 330 + size: 108, 93 + orig: 108, 93 offset: 0, 0 index: -1 front_shin - rotate: true - xy: 444, 91 - size: 49, 110 - orig: 49, 110 + rotate: false + xy: 466, 670 + size: 82, 184 + orig: 82, 184 offset: 0, 0 index: -1 front_thigh - rotate: true - xy: 603, 89 - size: 29, 67 - orig: 29, 67 + rotate: false + xy: 214, 208 + size: 48, 112 + orig: 48, 112 offset: 0, 0 index: -1 front_upper_arm - rotate: true - xy: 672, 86 - size: 32, 58 - orig: 32, 58 + rotate: false + xy: 214, 109 + size: 54, 97 + orig: 54, 97 offset: 0, 0 index: -1 goggles rotate: false - xy: 444, 142 - size: 157, 100 - orig: 157, 100 + xy: 466, 856 + size: 261, 166 + orig: 261, 166 offset: 0, 0 index: -1 gun rotate: false - xy: 603, 120 - size: 126, 122 - orig: 126, 122 + xy: 2, 117 + size: 210, 203 + orig: 210, 203 offset: 0, 0 index: -1 head rotate: false - xy: 279, 63 - size: 163, 179 - orig: 163, 179 + xy: 2, 322 + size: 271, 298 + orig: 271, 298 offset: 0, 0 index: -1 mouth_grind rotate: false - xy: 845, 163 - size: 56, 35 - orig: 56, 35 + xy: 929, 896 + size: 93, 59 + orig: 93, 59 offset: 0, 0 index: -1 mouth_oooo rotate: false - xy: 842, 126 - size: 56, 35 - orig: 56, 35 + xy: 929, 835 + size: 93, 59 + orig: 93, 59 offset: 0, 0 index: -1 mouth_smile rotate: false - xy: 769, 97 - size: 56, 35 - orig: 56, 35 + xy: 447, 532 + size: 93, 59 + orig: 93, 59 offset: 0, 0 index: -1 muzzle rotate: false - xy: 2, 2 - size: 275, 240 - orig: 277, 240 + xy: 2, 622 + size: 462, 400 + orig: 462, 400 offset: 0, 0 index: -1 neck rotate: false - xy: 903, 173 - size: 22, 25 - orig: 22, 25 + xy: 796, 819 + size: 36, 41 + orig: 36, 41 offset: 0, 0 index: -1 rear_bracer rotate: false - xy: 722, 40 - size: 34, 43 - orig: 34, 43 + xy: 738, 788 + size: 56, 72 + orig: 56, 72 offset: 0, 0 index: -1 rear_foot - rotate: false - xy: 444, 11 - size: 68, 36 - orig: 68, 36 + rotate: true + xy: 2, 2 + size: 113, 60 + orig: 113, 60 offset: 0, 0 index: -1 rear_foot_bend1 rotate: false - xy: 444, 49 - size: 70, 40 - orig: 70, 40 + xy: 64, 49 + size: 117, 66 + orig: 117, 66 offset: 0, 0 index: -1 rear_foot_bend2 rotate: false - xy: 778, 134 - size: 62, 50 - orig: 62, 50 + xy: 729, 862 + size: 103, 83 + orig: 103, 83 offset: 0, 0 index: -1 rear_shin - rotate: false - xy: 731, 135 - size: 45, 107 - orig: 45, 107 + rotate: true + xy: 729, 947 + size: 75, 178 + orig: 75, 178 offset: 0, 0 index: -1 rear_thigh rotate: true - xy: 516, 50 - size: 39, 62 - orig: 39, 62 + xy: 909, 957 + size: 65, 104 + orig: 65, 104 offset: 0, 0 index: -1 rear_upper_arm - rotate: false - xy: 638, 35 - size: 28, 52 - orig: 28, 52 + rotate: true + xy: 447, 483 + size: 47, 87 + orig: 47, 87 offset: 0, 0 index: -1 torso - rotate: true - xy: 279, 2 - size: 59, 108 - orig: 59, 108 + rotate: false + xy: 275, 440 + size: 98, 180 + orig: 98, 180 offset: 0, 0 index: -1 diff --git a/spine-cocos2d-objc/Resources/spineboy.json b/spine-cocos2d-objc/Resources/spineboy.json index 1ffa7aad5..88bafe6a7 100644 --- a/spine-cocos2d-objc/Resources/spineboy.json +++ b/spine-cocos2d-objc/Resources/spineboy.json @@ -1,39 +1,31 @@ { +"skeleton": { "hash": "rPoYyBLFG6F0CGZ5wsUEBKDJU9U", "spine": "3.3.07", "width": 470.71, "height": 731.57, "images": "./images/" }, "bones": [ { "name": "hip", "y": 247.47 }, - { "name": "front_thigh", "parent": "hip", "length": 74.8, "x": -17.45, "y": -11.64, "rotation": -95.51, "color": "00ff04ff" }, - { "name": "rear_thigh", "parent": "hip", "length": 85.71, "x": 8.91, "y": -5.62, "rotation": -72.54, "color": "ff000dff" }, - { "name": "torso", "parent": "hip", "length": 127.55, "x": -1.61, "y": 4.9, "rotation": 103.82, "color": "e0da19ff" }, - { - "name": "front_shin", - "parent": "front_thigh", - "length": 128.76, - "x": 78.69, - "y": 1.6, - "rotation": -2.21, - "inheritScale": false, - "color": "00ff04ff" - }, - { "name": "front_upper_arm", "parent": "torso", "length": 69.45, "x": 103.75, "y": 19.32, "rotation": 168.37, "color": "00ff04ff" }, - { "name": "neck", "parent": "torso", "length": 25.45, "x": 127.49, "y": -0.3, "rotation": -31.53, "color": "e0da19ff" }, - { "name": "rear_shin", "parent": "rear_thigh", "length": 121.87, "x": 86.1, "y": -1.32, "rotation": -19.83, "color": "ff000dff" }, - { "name": "rear_upper_arm", "parent": "torso", "length": 51.93, "x": 92.35, "y": -19.22, "rotation": -169.55, "color": "ff000dff" }, + { "name": "torso", "parent": "hip", "length": 127.55, "rotation": 103.82, "x": -1.61, "y": 4.9, "color": "e0da19ff" }, + { "name": "front_upper_arm", "parent": "torso", "length": 69.45, "rotation": 168.37, "x": 103.75, "y": 19.32, "color": "00ff04ff" }, { "name": "front_bracer", "parent": "front_upper_arm", "length": 40.57, + "rotation": 18.29, "x": 68.8, "y": -0.68, - "rotation": 18.29, "color": "00ff04ff" }, - { "name": "front_foot", "parent": "front_shin", "length": 91.34, "x": 128.75, "y": -0.33, "rotation": 77.9, "color": "00ff04ff" }, - { "name": "head", "parent": "neck", "length": 263.57, "x": 27.66, "y": -0.25, "rotation": 23.18, "color": "e0da19ff" }, - { "name": "rear_bracer", "parent": "rear_upper_arm", "length": 34.55, "x": 51.35, "rotation": 23.15, "color": "ff000dff" }, - { "name": "rear_foot", "parent": "rear_shin", "length": 82.57, "x": 121.45, "y": -0.75, "rotation": 69.3, "color": "ff000dff" }, - { "name": "front_fist", "parent": "front_bracer", "length": 65.38, "x": 40.56, "y": 0.19, "rotation": 12.43, "color": "00ff04ff" }, - { "name": "gun", "parent": "rear_bracer", "length": 43.1, "x": 34.42, "y": -0.45, "rotation": 5.34, "color": "ff000dff" }, - { "name": "gunTip", "parent": "gun", "x": 201.04, "y": 52.13, "rotation": 6.83, "color": "ff000dff" } + { "name": "front_fist", "parent": "front_bracer", "length": 65.38, "rotation": 12.43, "x": 40.56, "y": 0.19, "color": "00ff04ff" }, + { "name": "front_thigh", "parent": "hip", "length": 74.8, "rotation": -95.51, "x": -17.45, "y": -11.64, "color": "00ff04ff" }, + { "name": "front_shin", "parent": "front_thigh", "length": 128.76, "rotation": -2.21, "x": 78.69, "y": 1.6, "color": "00ff04ff" }, + { "name": "front_foot", "parent": "front_shin", "length": 91.34, "rotation": 77.9, "x": 128.75, "y": -0.33, "color": "00ff04ff" }, + { "name": "rear_upper_arm", "parent": "torso", "length": 51.93, "rotation": -169.55, "x": 92.35, "y": -19.22, "color": "ff000dff" }, + { "name": "rear_bracer", "parent": "rear_upper_arm", "length": 34.55, "rotation": 23.15, "x": 51.35, "color": "ff000dff" }, + { "name": "gun", "parent": "rear_bracer", "length": 43.1, "rotation": 5.34, "x": 34.42, "y": -0.45, "color": "ff000dff" }, + { "name": "gunTip", "parent": "gun", "rotation": 6.83, "x": 201.04, "y": 52.13, "color": "ff000dff" }, + { "name": "neck", "parent": "torso", "length": 25.45, "rotation": -31.53, "x": 127.49, "y": -0.3, "color": "e0da19ff" }, + { "name": "head", "parent": "neck", "length": 263.57, "rotation": 23.18, "x": 27.66, "y": -0.25, "color": "e0da19ff" }, + { "name": "rear_thigh", "parent": "hip", "length": 85.71, "rotation": -72.54, "x": 8.91, "y": -5.62, "color": "ff000dff" }, + { "name": "rear_shin", "parent": "rear_thigh", "length": 121.87, "rotation": -19.83, "x": 86.1, "y": -1.32, "color": "ff000dff" }, + { "name": "rear_foot", "parent": "rear_shin", "length": 82.57, "rotation": 69.3, "x": 121.45, "y": -0.75, "color": "ff000dff" } ], "slots": [ { "name": "rear_upper_arm", "bone": "rear_upper_arm", "attachment": "rear_upper_arm" }, @@ -54,7 +46,8 @@ { "name": "goggles", "bone": "head", "attachment": "goggles" }, { "name": "front_bracer", "bone": "front_bracer", "attachment": "front_bracer" }, { "name": "front_fist", "bone": "front_fist", "attachment": "front_fist_closed" }, - { "name": "muzzle", "bone": "gunTip", "additive": true } + { "name": "muzzle", "bone": "gunTip", "blend": "additive" }, + { "name": "head-bb", "bone": "head" } ], "skins": { "default": { @@ -92,6 +85,13 @@ "head": { "head": { "x": 128.95, "y": 0.29, "rotation": -70.63, "width": 271, "height": 298 } }, + "head-bb": { + "head": { + "type": "boundingbox", + "vertexCount": 6, + "vertices": [ -19.14, -70.3, 40.8, -118.07, 257.77, -115.61, 285.16, 57.18, 120.77, 164.95, -5.06, 76.94 ] + } + }, "mouth": { "mouth_grind": { "x": 23.68, "y": -32.23, "rotation": -70.63, "width": 93, "height": 59 }, "mouth_oooo": { "x": 23.68, "y": -32.23, "rotation": -70.63, "width": 93, "height": 59 }, @@ -1825,10 +1825,6 @@ ] }, "muzzle": { - "attachment": [ - { "time": 0.1333, "name": "muzzle" }, - { "time": 0.2666, "name": null } - ], "color": [ { "time": 0.1333, @@ -1841,6 +1837,10 @@ "curve": [ 0.821, 0, 0.909, 0.89 ] }, { "time": 0.2666, "color": "ffffff00" } + ], + "attachment": [ + { "time": 0.1333, "name": "muzzle" }, + { "time": 0.2666, "name": null } ] } }, @@ -2008,7 +2008,7 @@ ] } }, - "draworder": [ + "drawOrder": [ { "time": 0.6666, "offsets": [ diff --git a/spine-cocos2d-objc/Resources/spineboy.png b/spine-cocos2d-objc/Resources/spineboy.png index dce2fe3e2..c336b66f6 100644 Binary files a/spine-cocos2d-objc/Resources/spineboy.png and b/spine-cocos2d-objc/Resources/spineboy.png differ diff --git a/spine-cocos2d-objc/Resources/tank.atlas b/spine-cocos2d-objc/Resources/tank.atlas new file mode 100644 index 000000000..b925bb065 --- /dev/null +++ b/spine-cocos2d-objc/Resources/tank.atlas @@ -0,0 +1,125 @@ + +tank.png +size: 2048,2048 +format: RGBA8888 +filter: Linear,Linear +repeat: none +images/antenna + rotate: true + xy: 1295, 1730 + size: 22, 303 + orig: 22, 303 + offset: 0, 0 + index: -1 +images/cannon + rotate: true + xy: 504, 769 + size: 931, 58 + orig: 931, 58 + offset: 0, 0 + index: -1 +images/cannonConnector + rotate: false + xy: 564, 1239 + size: 112, 135 + orig: 112, 135 + offset: 0, 0 + index: -1 +images/guntower + rotate: false + xy: 1295, 1754 + size: 730, 289 + orig: 730, 289 + offset: 0, 0 + index: -1 +images/machinegun + rotate: true + xy: 504, 436 + size: 331, 57 + orig: 331, 57 + offset: 0, 0 + index: -1 +images/machinegun-mount + rotate: false + xy: 2, 2 + size: 72, 96 + orig: 72, 96 + offset: 0, 0 + index: -1 +images/rock + rotate: false + xy: 226, 358 + size: 252, 55 + orig: 252, 55 + offset: 0, 0 + index: -1 +images/tankBottom + rotate: true + xy: 226, 415 + size: 1285, 276 + orig: 1285, 276 + offset: 0, 0 + index: -1 +images/tankBottom-shadow + rotate: false + xy: 2, 1702 + size: 1291, 341 + orig: 1291, 341 + offset: 0, 0 + index: -1 +images/tankTop + rotate: true + xy: 2, 293 + size: 1407, 222 + orig: 1407, 222 + offset: 0, 0 + index: -1 +images/tread + rotate: false + xy: 226, 326 + size: 96, 30 + orig: 96, 30 + offset: 0, 0 + index: -1 +images/tread-inside + rotate: false + xy: 195, 263 + size: 25, 28 + orig: 25, 28 + offset: 0, 0 + index: -1 +images/wheel-big + rotate: false + xy: 2, 100 + size: 191, 191 + orig: 191, 191 + offset: 0, 0 + index: -1 +images/wheel-big-overlay + rotate: false + xy: 564, 1514 + size: 186, 186 + orig: 186, 186 + offset: 0, 0 + index: -1 +images/wheel-mid + rotate: false + xy: 564, 1376 + size: 136, 136 + orig: 136, 136 + offset: 0, 0 + index: -1 +images/wheel-mid-overlay + rotate: false + xy: 752, 1564 + size: 136, 136 + orig: 136, 136 + offset: 0, 0 + index: -1 +images/wheel-small + rotate: false + xy: 890, 1629 + size: 71, 71 + orig: 71, 71 + offset: 0, 0 + index: -1 diff --git a/spine-cocos2d-objc/Resources/tank.json b/spine-cocos2d-objc/Resources/tank.json new file mode 100644 index 000000000..c26ccbe47 --- /dev/null +++ b/spine-cocos2d-objc/Resources/tank.json @@ -0,0 +1,1899 @@ +{ +"skeleton": { "hash": "kgtyty1lpfv5JU2lygtFi2u3oQQ", "spine": "3.3.07", "width": 1914.53, "height": 964.05, "images": "" }, +"bones": [ + { "name": "root" }, + { "name": "tankRoot", "parent": "root", "y": 200 }, + { "name": "tankTreads", "parent": "tankRoot" }, + { "name": "tankBody", "parent": "tankTreads", "y": 10 }, + { "name": "guntower", "parent": "tankBody", "x": -21.72, "y": 245.47 }, + { "name": "antennaRoot", "parent": "guntower", "x": 164.6, "y": 202.52 }, + { "name": "antenna1", "parent": "antennaRoot", "length": 40, "rotation": 90, "y": 39.99, "color": "ffee00ff" }, + { "name": "antenna2", "parent": "antenna1", "length": 42, "x": 42, "color": "ffee00ff" }, + { "name": "antenna3", "parent": "antenna2", "length": 42, "x": 42, "color": "ffee00ff" }, + { "name": "antenna4", "parent": "antenna3", "length": 42, "x": 42, "color": "ffee00ff" }, + { "name": "antenna5", "parent": "antenna4", "length": 42, "x": 42, "color": "ffee00ff" }, + { "name": "antenna6", "parent": "antenna5", "length": 42, "x": 42, "color": "ffee00ff" }, + { "name": "cannonConnector", "parent": "guntower", "x": -235.04, "y": 96.07 }, + { "name": "cannonTarget", "parent": "tankRoot", "x": -1486.66, "y": 351.82, "color": "ff3f00ff" }, + { "name": "cannon", "parent": "cannonConnector", "length": 946.68, "rotation": 180, "color": "ff4000ff" }, + { "name": "cannonTip", "parent": "cannon", "x": 946.68, "color": "ff4000ff" }, + { "name": "machineGunTarget", "parent": "tankRoot", "x": -1474, "y": 559.42, "color": "ff3f00ff" }, + { + "name": "machinegun-mount", + "parent": "guntower", + "length": 90.97, + "rotation": 90, + "x": -123.72, + "y": 218.32, + "color": "15ff00ff" + }, + { + "name": "machinegun", + "parent": "machinegun-mount", + "length": 208.94, + "rotation": 90, + "x": 91.52, + "y": -1.03, + "color": "15ff00ff" + }, + { "name": "machinegun-tip", "parent": "machinegun", "x": 210.42, "y": -12.2 }, + { "name": "rock", "parent": "root", "x": -656.45 }, + { + "name": "tread", + "parent": "tankRoot", + "length": 82, + "rotation": 180, + "x": -22.89, + "y": 213.85, + "scaleX": 0.993, + "color": "e64344ff" + }, + { "name": "tread2", "parent": "tread", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread3", "parent": "tread2", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread4", "parent": "tread3", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread5", "parent": "tread4", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread6", "parent": "tread5", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread7", "parent": "tread6", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread8", "parent": "tread7", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread9", "parent": "tread8", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread10", "parent": "tread9", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread11", "parent": "tread10", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread12", "parent": "tread11", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread13", "parent": "tread12", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread14", "parent": "tread13", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread15", "parent": "tread14", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread16", "parent": "tread15", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread17", "parent": "tread16", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread18", "parent": "tread17", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread19", "parent": "tread18", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread20", "parent": "tread19", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread21", "parent": "tread20", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread22", "parent": "tread21", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread23", "parent": "tread22", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread24", "parent": "tread23", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread25", "parent": "tread24", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread26", "parent": "tread25", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread27", "parent": "tread26", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread28", "parent": "tread27", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread29", "parent": "tread28", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread30", "parent": "tread29", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread31", "parent": "tread30", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread32", "parent": "tread31", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread33", "parent": "tread32", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread34", "parent": "tread33", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread35", "parent": "tread34", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread36", "parent": "tread35", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "wheel-midCenter", "parent": "tankRoot", "y": -114.56 }, + { "name": "treadCollider1", "parent": "wheel-midCenter", "x": -329.57, "y": -85.44, "color": "ff00fbff" }, + { "name": "treadCollider2", "parent": "wheel-midCenter", "x": -165.95, "y": -85.44, "color": "ff00fbff" }, + { "name": "treadCollider3", "parent": "wheel-midCenter", "y": -85.44, "color": "ff00fbff" }, + { "name": "treadCollider4", "parent": "wheel-midCenter", "x": 163.56, "y": -85.44, "color": "ff00fbff" }, + { "name": "treadCollider5", "parent": "wheel-midCenter", "x": 329.12, "y": -85.44, "color": "ff00fbff" }, + { "name": "treadGravity1", "parent": "tankRoot", "rotation": 180, "x": -175.35, "y": 109.99, "color": "ff00fbff" }, + { "name": "treadGravity2", "parent": "tankRoot", "rotation": 180, "x": 177.88, "y": 105.45, "color": "ff00fbff" }, + { "name": "wheel-bigRoot1", "parent": "tankTreads", "x": -549.59, "y": 14.39, "color": "abe323ff" }, + { "name": "wheel-big1", "parent": "wheel-bigRoot1", "x": -0.02, "color": "abe323ff" }, + { "name": "wheel-bigRoot2", "parent": "tankTreads", "x": 547.33, "y": 14.39 }, + { "name": "wheel-big2", "parent": "wheel-bigRoot2" }, + { "name": "wheel-midRoot1", "parent": "wheel-midCenter", "x": -410.57, "color": "abe323ff" }, + { "name": "wheel-mid1", "parent": "wheel-midRoot1", "color": "abe323ff" }, + { "name": "wheel-midRoot2", "parent": "wheel-midCenter", "x": -246.95 }, + { "name": "wheel-mid2", "parent": "wheel-midRoot2" }, + { "name": "wheel-midRoot3", "parent": "wheel-midCenter", "x": -82.72 }, + { "name": "wheel-mid3", "parent": "wheel-midRoot3" }, + { "name": "wheel-midRoot4", "parent": "wheel-midCenter", "x": 80.89 }, + { "name": "wheel-mid4", "parent": "wheel-midRoot4" }, + { "name": "wheel-midRoot5", "parent": "wheel-midCenter", "x": 244.51 }, + { "name": "wheel-mid5", "parent": "wheel-midRoot5" }, + { "name": "wheel-midRoot6", "parent": "wheel-midCenter", "x": 408.73 }, + { "name": "wheel-mid6", "parent": "wheel-midRoot6" }, + { "name": "wheel-smallRoot1", "parent": "tankTreads", "x": -337.38, "y": 109.43 }, + { "name": "wheel-small1", "parent": "wheel-smallRoot1", "color": "abe323ff" }, + { "name": "wheel-smallRoot2", "parent": "tankTreads", "x": 0.08, "y": 109.43 }, + { "name": "wheel-small2", "parent": "wheel-smallRoot2" }, + { "name": "wheel-smallRoot3", "parent": "tankTreads", "x": 334.68, "y": 109.43 }, + { "name": "wheel-small3", "parent": "wheel-smallRoot3" } +], +"slots": [ + { "name": "tankBody-shadow", "bone": "tankBody", "color": "ffffffb9", "attachment": "images/tankBottom-shadow" }, + { "name": "bottom", "bone": "tankBody", "attachment": "images/tankBottom" }, + { "name": "tread-inside1", "bone": "tread", "attachment": "images/tread-inside" }, + { "name": "tread-inside53", "bone": "tread27", "attachment": "images/tread-inside" }, + { "name": "tread-inside27", "bone": "tread14", "attachment": "images/tread-inside" }, + { "name": "tread-inside3", "bone": "tread2", "attachment": "images/tread-inside" }, + { "name": "tread-inside55", "bone": "tread28", "attachment": "images/tread-inside" }, + { "name": "tread-inside29", "bone": "tread15", "attachment": "images/tread-inside" }, + { "name": "tread-inside5", "bone": "tread3", "attachment": "images/tread-inside" }, + { "name": "tread-inside57", "bone": "tread29", "attachment": "images/tread-inside" }, + { "name": "tread-inside31", "bone": "tread16", "attachment": "images/tread-inside" }, + { "name": "tread-inside7", "bone": "tread4", "attachment": "images/tread-inside" }, + { "name": "tread-inside59", "bone": "tread30", "attachment": "images/tread-inside" }, + { "name": "tread-inside33", "bone": "tread17", "attachment": "images/tread-inside" }, + { "name": "tread-inside9", "bone": "tread5", "attachment": "images/tread-inside" }, + { "name": "tread-inside61", "bone": "tread31", "attachment": "images/tread-inside" }, + { "name": "tread-inside35", "bone": "tread18", "attachment": "images/tread-inside" }, + { "name": "tread-inside11", "bone": "tread6", "attachment": "images/tread-inside" }, + { "name": "tread-inside63", "bone": "tread32", "attachment": "images/tread-inside" }, + { "name": "tread-inside37", "bone": "tread19", "attachment": "images/tread-inside" }, + { "name": "tread-inside13", "bone": "tread7", "attachment": "images/tread-inside" }, + { "name": "tread-inside65", "bone": "tread33", "attachment": "images/tread-inside" }, + { "name": "tread-inside39", "bone": "tread20", "attachment": "images/tread-inside" }, + { "name": "tread-inside15", "bone": "tread8", "attachment": "images/tread-inside" }, + { "name": "tread-inside67", "bone": "tread34", "attachment": "images/tread-inside" }, + { "name": "tread-inside69", "bone": "tread35", "attachment": "images/tread-inside" }, + { "name": "tread-inside71", "bone": "tread36", "attachment": "images/tread-inside" }, + { "name": "tread-inside41", "bone": "tread21", "attachment": "images/tread-inside" }, + { "name": "tread-inside17", "bone": "tread9", "attachment": "images/tread-inside" }, + { "name": "tread-inside43", "bone": "tread22", "attachment": "images/tread-inside" }, + { "name": "tread-inside19", "bone": "tread10", "attachment": "images/tread-inside" }, + { "name": "tread-inside45", "bone": "tread23", "attachment": "images/tread-inside" }, + { "name": "tread-inside21", "bone": "tread11", "attachment": "images/tread-inside" }, + { "name": "tread-inside47", "bone": "tread24", "attachment": "images/tread-inside" }, + { "name": "tread-inside23", "bone": "tread12", "attachment": "images/tread-inside" }, + { "name": "tread-inside49", "bone": "tread25", "attachment": "images/tread-inside" }, + { "name": "tread-inside25", "bone": "tread13", "attachment": "images/tread-inside" }, + { "name": "tread-inside51", "bone": "tread26", "attachment": "images/tread-inside" }, + { "name": "tread-inside2", "bone": "tread", "attachment": "images/tread-inside" }, + { "name": "tread-inside54", "bone": "tread27", "attachment": "images/tread-inside" }, + { "name": "tread-inside28", "bone": "tread14", "attachment": "images/tread-inside" }, + { "name": "tread-inside4", "bone": "tread2", "attachment": "images/tread-inside" }, + { "name": "tread-inside56", "bone": "tread28", "attachment": "images/tread-inside" }, + { "name": "tread-inside30", "bone": "tread15", "attachment": "images/tread-inside" }, + { "name": "tread-inside6", "bone": "tread3", "attachment": "images/tread-inside" }, + { "name": "tread-inside58", "bone": "tread29", "attachment": "images/tread-inside" }, + { "name": "tread-inside32", "bone": "tread16", "attachment": "images/tread-inside" }, + { "name": "tread-inside8", "bone": "tread4", "attachment": "images/tread-inside" }, + { "name": "tread-inside60", "bone": "tread30", "attachment": "images/tread-inside" }, + { "name": "tread-inside34", "bone": "tread17", "attachment": "images/tread-inside" }, + { "name": "tread-inside10", "bone": "tread5", "attachment": "images/tread-inside" }, + { "name": "tread-inside62", "bone": "tread31", "attachment": "images/tread-inside" }, + { "name": "tread-inside36", "bone": "tread18", "attachment": "images/tread-inside" }, + { "name": "tread-inside12", "bone": "tread6", "attachment": "images/tread-inside" }, + { "name": "tread-inside64", "bone": "tread32", "attachment": "images/tread-inside" }, + { "name": "tread-inside38", "bone": "tread19", "attachment": "images/tread-inside" }, + { "name": "tread-inside14", "bone": "tread7", "attachment": "images/tread-inside" }, + { "name": "tread-inside66", "bone": "tread33", "attachment": "images/tread-inside" }, + { "name": "tread-inside40", "bone": "tread20", "attachment": "images/tread-inside" }, + { "name": "tread-inside16", "bone": "tread8", "attachment": "images/tread-inside" }, + { "name": "tread-inside68", "bone": "tread34", "attachment": "images/tread-inside" }, + { "name": "tread-inside70", "bone": "tread35", "attachment": "images/tread-inside" }, + { "name": "tread-inside72", "bone": "tread36", "attachment": "images/tread-inside" }, + { "name": "tread-inside42", "bone": "tread21", "attachment": "images/tread-inside" }, + { "name": "tread-inside18", "bone": "tread9", "attachment": "images/tread-inside" }, + { "name": "tread-inside44", "bone": "tread22", "attachment": "images/tread-inside" }, + { "name": "tread-inside20", "bone": "tread10", "attachment": "images/tread-inside" }, + { "name": "tread-inside46", "bone": "tread23", "attachment": "images/tread-inside" }, + { "name": "tread-inside22", "bone": "tread11", "attachment": "images/tread-inside" }, + { "name": "tread-inside48", "bone": "tread24", "attachment": "images/tread-inside" }, + { "name": "tread-inside24", "bone": "tread12", "attachment": "images/tread-inside" }, + { "name": "tread-inside50", "bone": "tread25", "attachment": "images/tread-inside" }, + { "name": "tread-inside26", "bone": "tread13", "attachment": "images/tread-inside" }, + { "name": "tread-inside52", "bone": "tread26", "attachment": "images/tread-inside" }, + { "name": "wheel-big", "bone": "wheel-big1", "color": "dbdbdbff", "attachment": "images/wheel-big" }, + { "name": "wheel-big2", "bone": "wheel-big2", "color": "dbdbdbff", "attachment": "images/wheel-big" }, + { "name": "wheel-mid", "bone": "wheel-mid1", "attachment": "images/wheel-mid" }, + { "name": "wheel-mid2", "bone": "wheel-mid2", "attachment": "images/wheel-mid" }, + { "name": "wheel-mid3", "bone": "wheel-mid3", "attachment": "images/wheel-mid" }, + { "name": "wheel-mid4", "bone": "wheel-mid4", "attachment": "images/wheel-mid" }, + { "name": "wheel-mid5", "bone": "wheel-mid5", "attachment": "images/wheel-mid" }, + { "name": "wheel-mid6", "bone": "wheel-mid6", "attachment": "images/wheel-mid" }, + { "name": "wheel-small", "bone": "wheel-small1", "attachment": "images/wheel-small" }, + { "name": "wheel-small2", "bone": "wheel-small2", "attachment": "images/wheel-small" }, + { "name": "wheel-small3", "bone": "wheel-small3", "attachment": "images/wheel-small" }, + { + "name": "wheel-mid-overlay", + "bone": "wheel-midRoot1", + "color": "ffffffec", + "attachment": "images/wheel-mid-overlay", + "blend": "multiply" + }, + { + "name": "wheel-mid-overlay2", + "bone": "wheel-midRoot2", + "color": "ffffffec", + "attachment": "images/wheel-mid-overlay", + "blend": "multiply" + }, + { + "name": "wheel-mid-overlay3", + "bone": "wheel-midRoot3", + "color": "ffffffec", + "attachment": "images/wheel-mid-overlay", + "blend": "multiply" + }, + { + "name": "wheel-mid-overlay4", + "bone": "wheel-midRoot4", + "color": "ffffffec", + "attachment": "images/wheel-mid-overlay", + "blend": "multiply" + }, + { + "name": "wheel-mid-overlay5", + "bone": "wheel-midRoot5", + "color": "ffffffec", + "attachment": "images/wheel-mid-overlay", + "blend": "multiply" + }, + { + "name": "wheel-mid-overlay6", + "bone": "wheel-midRoot6", + "color": "ffffffec", + "attachment": "images/wheel-mid-overlay", + "blend": "multiply" + }, + { + "name": "wheel-big-overlay1", + "bone": "wheel-bigRoot1", + "color": "ffffffe9", + "attachment": "images/wheel-big-overlay", + "blend": "multiply" + }, + { + "name": "wheel-big-overlay2", + "bone": "wheel-bigRoot2", + "color": "ffffffe9", + "attachment": "images/wheel-big-overlay", + "blend": "multiply" + }, + { "name": "treads", "bone": "tankRoot", "attachment": "treads" }, + { "name": "tread", "bone": "tread", "color": "c0974fff", "attachment": "images/tread" }, + { "name": "tread27", "bone": "tread27", "color": "adc9b8ff", "attachment": "images/tread" }, + { "name": "tread14", "bone": "tread14", "attachment": "images/tread" }, + { "name": "tread2", "bone": "tread2", "attachment": "images/tread" }, + { "name": "tread28", "bone": "tread28", "attachment": "images/tread" }, + { "name": "tread15", "bone": "tread15", "color": "adc9b8ff", "attachment": "images/tread" }, + { "name": "tread3", "bone": "tread3", "color": "adc9b8ff", "attachment": "images/tread" }, + { "name": "tread29", "bone": "tread29", "color": "adc9b8ff", "attachment": "images/tread" }, + { "name": "tread16", "bone": "tread16", "attachment": "images/tread" }, + { "name": "tread4", "bone": "tread4", "attachment": "images/tread" }, + { "name": "tread30", "bone": "tread30", "attachment": "images/tread" }, + { "name": "tread17", "bone": "tread17", "color": "adc9b8ff", "attachment": "images/tread" }, + { "name": "tread5", "bone": "tread5", "color": "adc9b8ff", "attachment": "images/tread" }, + { "name": "tread31", "bone": "tread31", "color": "adc9b8ff", "attachment": "images/tread" }, + { "name": "tread18", "bone": "tread18", "attachment": "images/tread" }, + { "name": "tread6", "bone": "tread6", "attachment": "images/tread" }, + { "name": "tread32", "bone": "tread32", "attachment": "images/tread" }, + { "name": "tread19", "bone": "tread19", "color": "adc9b8ff", "attachment": "images/tread" }, + { "name": "tread7", "bone": "tread7", "color": "adc9b8ff", "attachment": "images/tread" }, + { "name": "tread33", "bone": "tread33", "color": "adc9b8ff", "attachment": "images/tread" }, + { "name": "tread20", "bone": "tread20", "attachment": "images/tread" }, + { "name": "tread8", "bone": "tread8", "attachment": "images/tread" }, + { "name": "tread34", "bone": "tread34", "attachment": "images/tread" }, + { "name": "tread35", "bone": "tread35", "color": "adc9b8ff", "attachment": "images/tread" }, + { "name": "tread36", "bone": "tread36", "color": "adc9b8ff", "attachment": "images/tread" }, + { "name": "tread21", "bone": "tread21", "color": "adc9b8ff", "attachment": "images/tread" }, + { "name": "tread9", "bone": "tread9", "color": "adc9b8ff", "attachment": "images/tread" }, + { "name": "tread22", "bone": "tread22", "attachment": "images/tread" }, + { "name": "tread10", "bone": "tread10", "attachment": "images/tread" }, + { "name": "tread23", "bone": "tread23", "color": "adc9b8ff", "attachment": "images/tread" }, + { "name": "tread11", "bone": "tread11", "color": "adc9b8ff", "attachment": "images/tread" }, + { "name": "tread24", "bone": "tread24", "attachment": "images/tread" }, + { "name": "tread12", "bone": "tread12", "attachment": "images/tread" }, + { "name": "tread25", "bone": "tread25", "color": "adc9b8ff", "attachment": "images/tread" }, + { "name": "tread13", "bone": "tread13", "color": "adc9b8ff", "attachment": "images/tread" }, + { "name": "tread26", "bone": "tread26", "attachment": "images/tread" }, + { "name": "rock", "bone": "rock", "attachment": "images/rock" }, + { "name": "machinegun", "bone": "machinegun", "attachment": "images/machinegun" }, + { "name": "machinegun-mount", "bone": "machinegun-mount", "attachment": "images/machinegun-mount" }, + { "name": "tankTop", "bone": "tankBody", "attachment": "images/tankTop" }, + { "name": "guntower", "bone": "guntower", "attachment": "images/guntower" }, + { "name": "cannon", "bone": "cannon", "attachment": "images/cannon" }, + { "name": "cannonConnector", "bone": "cannonConnector", "attachment": "images/cannonConnector" }, + { "name": "antenna", "bone": "antennaRoot", "attachment": "images/antenna" } +], +"ik": [ + { + "name": "cannonTarget", + "bones": [ "cannon" ], + "target": "cannonTarget" + }, + { + "name": "machineGunTarget", + "bones": [ "machinegun" ], + "target": "machineGunTarget", + "mix": 0 + } +], +"transform": [ + { + "name": "wheel-big", + "bones": [ "wheel-big2" ], + "target": "wheel-big1", + "rotation": 65.6, + "translateMix": 0, + "scaleMix": 0, + "shearMix": 0 + }, + { + "name": "wheel-mid1", + "bones": [ "wheel-mid2", "wheel-mid4" ], + "target": "wheel-mid1", + "rotation": 93, + "translateMix": 0, + "scaleMix": 0, + "shearMix": 0 + }, + { + "name": "wheel-mid2", + "bones": [ "wheel-mid3", "wheel-mid5" ], + "target": "wheel-mid1", + "rotation": -89, + "translateMix": 0, + "scaleMix": 0, + "shearMix": 0 + }, + { + "name": "wheel-mid3", + "bones": [ "wheel-mid6" ], + "target": "wheel-mid1", + "rotation": -152.6, + "translateMix": 0, + "scaleMix": 0, + "shearMix": 0 + }, + { + "name": "wheel-small1", + "bones": [ "wheel-small2" ], + "target": "wheel-small1", + "rotation": 87, + "translateMix": 0, + "scaleMix": 0, + "shearMix": 0 + }, + { + "name": "wheel-small2", + "bones": [ "wheel-small3" ], + "target": "wheel-small1", + "rotation": 54.9, + "translateMix": 0, + "scaleMix": 0, + "shearMix": 0 + } +], +"path": [ + { + "name": "treads", + "bones": [ + "tread", + "tread2", + "tread3", + "tread4", + "tread5", + "tread6", + "tread7", + "tread8", + "tread9", + "tread10", + "tread11", + "tread12", + "tread13", + "tread14", + "tread15", + "tread16", + "tread17", + "tread18", + "tread19", + "tread20", + "tread21", + "tread22", + "tread23", + "tread24", + "tread25", + "tread26", + "tread27", + "tread28", + "tread29", + "tread30", + "tread31", + "tread32", + "tread33", + "tread34", + "tread35", + "tread36" + ], + "target": "treads", + "rotateMode": "chain" + } +], +"skins": { + "default": { + "antenna": { + "images/antenna": { + "type": "mesh", + "uvs": [ 0.64286, 0.07875, 0.65354, 0.15349, 0.66324, 0.22137, 0.67367, 0.29433, 0.68383, 0.36543, 0.69359, 0.43374, 0.7031, 0.50029, 0.71311, 0.5703, 0.72327, 0.64138, 0.73406, 0.71688, 0.7444, 0.78929, 0.75614, 0.8714, 0.76905, 0.9431, 1, 0.9431, 1, 1, 0, 1, 0, 0.9431, 0.20105, 0.9431, 0.20105, 0.87093, 0.21461, 0.78846, 0.22651, 0.71606, 0.23885, 0.64098, 0.25035, 0.57104, 0.26206, 0.49983, 0.27306, 0.4329, 0.2843, 0.36453, 0.29592, 0.29381, 0.308, 0.22037, 0.319, 0.15345, 0.33141, 0.07795, 0.34423, 0, 0.6316, 0 ], + "triangles": [ 30, 31, 0, 29, 30, 0, 29, 0, 1, 28, 29, 1, 28, 1, 2, 27, 28, 2, 27, 2, 3, 26, 3, 4, 25, 26, 4, 25, 4, 5, 26, 27, 3, 24, 5, 6, 23, 24, 6, 7, 23, 6, 24, 25, 5, 22, 7, 8, 21, 22, 8, 21, 8, 9, 7, 22, 23, 20, 9, 10, 19, 20, 10, 20, 21, 9, 19, 10, 11, 18, 19, 11, 17, 18, 11, 17, 11, 12, 15, 16, 17, 12, 13, 14, 15, 17, 12, 14, 15, 12 ], + "vertices": [ 2, 10, 65.37999, -3.14, 0.3125, 11, 23.38, -3.14, 0.6875, 3, 9, 84.73, -3.37, 0.0625, 10, 42.73, -3.37, 0.625, 11, 0.73, -3.37, 0.3125, 3, 9, 64.16, -3.59, 0.3125, 10, 22.16, -3.59, 0.625, 11, -19.83, -3.59, 0.0625, 3, 8, 84.06, -3.82, 0.0625, 9, 42.06, -3.82, 0.625, 10, 0.06, -3.82, 0.3125, 3, 8, 62.51, -4.04, 0.3125, 9, 20.51, -4.04, 0.625, 10, -21.48, -4.04, 0.0625, 3, 7, 83.81, -4.25, 0.0625, 8, 41.81, -4.25, 0.625, 9, -0.18, -4.25, 0.3125, 3, 7, 63.65, -4.46, 0.3125, 8, 21.65, -4.46, 0.625, 9, -20.34, -4.46, 0.0625, 3, 6, 84.43, -4.67999, 0.0625, 7, 42.43, -4.67999, 0.625, 8, 0.43, -4.67999, 0.3125, 3, 6, 62.9, -4.91, 0.3125, 7, 20.9, -4.91, 0.625, 8, -21.09, -4.91, 0.0625, 3, 5, 5.14, 80.01999, 0.0625, 6, 40.02, -5.14, 0.625, 7, -1.97, -5.14, 0.3125, 3, 5, 5.37, 58.08, 0.375, 6, 18.08, -5.37, 0.5625, 7, -23.91, -5.37, 0.0625, 1, 5, 5.63, 33.2, 1, 1, 5, 5.91, 11.48, 1, 1, 5, 11, 11.48, 1, 1, 5, 10.99, -5.75, 1, 1, 5, -11, -5.75, 1, 1, 5, -10.99, 11.48, 1, 1, 5, -6.57, 11.48, 1, 1, 5, -6.57, 33.34, 1, 3, 5, -6.27, 58.33, 0.375, 6, 18.33, 6.27, 0.5625, 7, -23.66, 6.27, 0.0625, 3, 5, -6.01, 80.26999, 0.0625, 6, 40.27, 6.01, 0.625, 7, -1.72, 6.01, 0.3125, 3, 6, 63.02, 5.74, 0.3125, 7, 21.02, 5.74, 0.625, 8, -20.96999, 5.74, 0.0625, 3, 6, 84.21, 5.49, 0.0625, 7, 42.21, 5.49, 0.625, 8, 0.21, 5.49, 0.3125, 3, 7, 63.79, 5.23, 0.3125, 8, 21.79, 5.23, 0.625, 9, -20.2, 5.23, 0.0625, 3, 7, 84.07, 4.98999, 0.0625, 8, 42.07, 4.98999, 0.625, 9, 0.07, 4.98999, 0.3125, 3, 8, 62.78, 4.73999, 0.3125, 9, 20.78, 4.73999, 0.625, 10, -21.21, 4.73999, 0.0625, 3, 8, 84.21, 4.48, 0.0625, 9, 42.21, 4.48, 0.625, 10, 0.21, 4.48, 0.3125, 3, 9, 64.46, 4.21999, 0.3125, 10, 22.46, 4.21999, 0.625, 11, -19.53, 4.21999, 0.0625, 3, 9, 84.74, 3.98, 0.0625, 10, 42.74, 3.98, 0.625, 11, 0.74, 3.98, 0.3125, 2, 10, 65.62, 3.7, 0.3125, 11, 23.62, 3.7, 0.6875, 1, 11, 47.24, 3.42, 1, 1, 11, 47.24, -2.89, 1 ], + "hull": 32, + "edges": [ 28, 30, 28, 26, 30, 32, 26, 24, 24, 22, 32, 34, 34, 24, 34, 36, 36, 22, 60, 62, 38, 36, 20, 22, 38, 20, 40, 38, 18, 20, 40, 18, 42, 40, 16, 18, 42, 16, 44, 42, 14, 16, 44, 14, 46, 44, 12, 14, 46, 12, 48, 46, 10, 12, 48, 10, 50, 48, 8, 10, 50, 8, 52, 50, 6, 8, 52, 6, 54, 52, 4, 6, 54, 4, 56, 54, 2, 4, 56, 2, 60, 58, 58, 56, 62, 0, 0, 2, 58, 0 ], + "width": 22, + "height": 303 + } + }, + "bottom": { + "images/tankBottom": { "x": -16.66, "y": 9.89, "width": 1285, "height": 276 } + }, + "cannon": { + "images/cannon": { "x": 481.95, "y": -0.02, "rotation": 179.99, "width": 931, "height": 58 } + }, + "cannonConnector": { + "images/cannonConnector": { + "type": "mesh", + "uvs": [ 1, 0.03236, 1, 0.10602, 0.90987, 0.32859, 0.81975, 0.55116, 0.72962, 0.77372, 0.6395, 0.99629, 0.42157, 0.99629, 0.20364, 0.99629, 0, 0.85433, 0, 0.69901, 0.02267, 0.52884, 0, 0.31444, 0.21601, 0.12998, 0.43367, 0, 0.63546, 0.0037, 0.48407, 0.77059, 0.31496, 0.52496, 0.64132, 0.19648, 0.21516, 0.76765, 0.58345, 0.5647, 0.68444, 0.40146, 0.46758, 0.36649, 0.28934, 0.34603 ], + "triangles": [ 21, 22, 12, 11, 12, 22, 17, 21, 13, 17, 13, 14, 21, 12, 13, 21, 17, 20, 16, 22, 21, 10, 11, 22, 10, 22, 16, 19, 21, 20, 16, 21, 19, 18, 10, 16, 9, 10, 18, 15, 16, 19, 18, 16, 15, 8, 9, 18, 7, 8, 18, 6, 18, 15, 7, 18, 6, 14, 0, 1, 17, 14, 1, 2, 17, 1, 20, 17, 2, 3, 20, 2, 19, 20, 3, 4, 19, 3, 15, 19, 4, 5, 15, 4, 6, 15, 5 ], + "vertices": [ 1, 12, 35.91, 69.08, 1, 1, 12, 35.91, 59.13, 1, 1, 12, 25.81, 29.09, 1, 1, 12, 15.72, -0.95, 1, 1, 12, 5.63, -31, 1, 1, 12, -4.46, -61.04, 1, 2, 12, -28.87, -61.04, 0.33333, 14, 28.87, 61.03, 0.66666, 1, 14, 53.27, 61.01, 1, 1, 14, 76.08, 41.83, 1, 1, 14, 71.17, 21.62, 1, 1, 14, 72.83, -1.62, 1, 1, 14, 70.37, -29.12, 1, 1, 14, 50.66, -56.13, 1, 2, 12, -28.43, 74.37, 0.41, 14, 28.43, -74.39, 0.58999, 2, 12, -4.91, 72.94999, 0.52, 14, 4.91, -72.94999, 0.48, 2, 12, -21.87, -30.57, 0.49, 14, 21.87, 30.56, 0.51, 1, 14, 40.81, -2.59999, 1, 2, 12, -4.25, 46.92, 0.49, 14, 4.25, -46.92, 0.51, 1, 14, 51.98, 30.15, 1, 2, 12, -10.74, -2.78, 0.49, 14, 10.74, 2.77, 0.51, 2, 12, 0.56, 19.25, 0.49, 14, -0.56, -19.25, 0.51, 1, 14, 23.71, -23.98, 1, 1, 14, 43.68, -26.76, 1 ], + "hull": 15, + "edges": [ 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 18, 20, 20, 22, 22, 24, 24, 26, 26, 28, 28, 0 ], + "width": 112, + "height": 135 + } + }, + "guntower": { + "images/guntower": { "x": 77.22, "y": 122.58, "width": 730, "height": 289 } + }, + "machinegun": { + "images/machinegun": { "x": 44.85, "y": -5.72, "rotation": -180, "width": 331, "height": 57 } + }, + "machinegun-mount": { + "images/machinegun-mount": { "x": 47.42, "y": -1.53, "rotation": -90, "width": 72, "height": 96 } + }, + "rock": { + "images/rock": { "color": "404040ff", "x": 25.23, "y": 27.35, "width": 252, "height": 55 } + }, + "tankBody-shadow": { + "images/tankBottom-shadow": { "x": -11.43, "y": -42.88, "width": 1291, "height": 341 } + }, + "tankTop": { + "images/tankTop": { "x": 6.8, "y": 168.71, "width": 1407, "height": 222 } + }, + "tread": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread-inside1": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside10": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside11": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside12": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside13": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside14": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside15": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside16": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside17": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside18": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside19": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside2": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside20": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside21": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside22": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside23": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside24": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside25": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside26": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside27": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside28": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside29": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside3": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside30": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside31": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside32": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside33": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside34": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside35": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside36": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside37": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside38": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside39": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside4": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside40": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside41": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside42": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside43": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside44": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside45": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside46": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside47": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside48": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside49": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside5": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside50": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside51": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside52": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside53": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside54": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside55": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside56": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside57": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside58": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside59": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside6": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside60": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside61": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside62": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside63": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside64": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside65": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside66": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside67": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside68": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside69": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside7": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside70": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside71": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside72": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside8": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside9": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread10": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread11": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread12": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread13": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread14": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread15": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread16": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread17": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread18": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread19": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread2": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread20": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread21": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread22": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread23": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread24": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread25": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread26": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread27": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread28": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread29": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread3": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread30": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread31": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread32": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread33": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread34": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread35": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread36": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread4": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread5": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread6": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread7": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread8": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread9": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "treads": { + "treads": { + "type": "path", + "closed": true, + "lengths": [ 182.41, 349, 472.77, 602.99, 780.46, 1052.96, 1133.44, 1218.43, 1298.34, 1382.7, 1465.57, 1546.11, 1628.02, 1707.73, 1794.36, 1876.75, 2158.69, 2321.34, 2438.56, 2579.42, 2745.35, 2919.23 ], + "vertexCount": 66, + "vertices": [ 1, 83, 11.23, 41.86, 1, 1, 83, 0.78, 41.93999, 1, 1, 83, -34.72, 42.23, 1, 1, 63, -104.21, 0.41, 1, 1, 63, 0.07, 0.55, 1, 1, 63, 68.8, 0.64, 1, 1, 81, 20.5, 43.47, 1, 1, 81, 1.13, 40.81, 1, 1, 81, -27.38, 36.84, 1, 1, 65, 147.06, 105, 1, 1, 65, 96.21, 96.63, 1, 1, 65, 43.87, 87.71, 1, 1, 65, 16.18, 103.34, 1, 1, 65, -33.66999, 94.2, 1, 1, 65, -99.35, 81.25, 1, 1, 65, -122.04, -1.69, 1, 1, 65, -83.58, -47.92, 1, 1, 65, -33.53, -109.36, 1, 1, 69, -83.56, -66.08999, 1, 1, 69, -2.16, -67.89, 1, 2, 69, 56.68, -41.48, 0.67999, 58, -24.31, -41.49, 0.32, 1, 58, -26.58, 16.69, 1, 1, 58, -2.69, 16.69, 1, 1, 58, 13.51, 16.69, 1, 2, 71, -52.41, -46.51, 0.74399, 58, 30.2, -46.51, 0.256, 1, 71, -0.32, -68.92, 1, 2, 71, 52.09, -44.72, 0.712, 59, -28.9, -44.73, 0.28799, 1, 59, -22.8, 16.24, 1, 1, 59, -1.42, 16.24, 1, 1, 59, 20.46999, 16.24, 1, 2, 73, -47.21, -47.45, 0.744, 59, 36.00999, -47.46, 0.25599, 1, 73, -0.28, -69.65, 1, 2, 73, 45.23, -47.26, 0.736, 60, -37.48, -47.26, 0.26399, 1, 60, -23.76, 15.27, 1, 1, 60, -0.13, 15.27, 1, 1, 60, 24.45, 15.27, 1, 2, 75, -47.36, -48.7, 0.74399, 60, 33.52, -48.7, 0.256, 1, 75, -0.49, -70.39, 1, 2, 75, 49.09, -48.33, 0.744, 61, -33.57, -48.34, 0.25599, 1, 61, -20.89, 15.83, 1, 1, 61, -1.25, 15.83, 1, 1, 61, 15.78, 15.83, 1, 2, 77, -52.49, -48.21, 0.75999, 61, 28.45, -48.21, 0.24, 1, 77, -2.5, -68.92, 1, 2, 77, 55.72, -47.82, 0.752, 62, -28.88, -47.82, 0.248, 1, 62, -21.64, 16.69, 1, 1, 62, -0.48, 16.69, 1, 1, 62, 20.73, 16.69, 1, 2, 79, -53.65, -48.89, 0.76, 62, 25.96, -48.89, 0.23999, 1, 79, 2.27, -69.65, 1, 1, 79, 44.94, -69.74, 1, 1, 65, 1172.98, -85.6, 1, 1, 65, 1190.53, -42.24, 1, 1, 65, 1215.63, 19.75, 1, 1, 65, 1175.55, 76.62, 1, 1, 65, 1134.22, 95.07, 1, 1, 65, 1128.4, 97.66, 1, 1, 65, 1081.79, 87.47, 1, 1, 65, 1017.16, 92.52, 1, 1, 65, 977.9, 95.58, 1, 1, 85, 47.07, 42.29, 1, 1, 85, 0.24, 42.74, 1, 1, 85, -29.63, 43.28, 1, 1, 64, -86.64, 1.35, 1, 1, 64, 0.49, 0.25, 1, 1, 64, 92.42, -0.89, 1 ] + } + }, + "wheel-big": { + "images/wheel-big": { "width": 191, "height": 191 } + }, + "wheel-big-overlay1": { + "images/wheel-big-overlay": { "width": 186, "height": 186 } + }, + "wheel-big-overlay2": { + "images/wheel-big-overlay": { "width": 186, "height": 186 } + }, + "wheel-big2": { + "images/wheel-big": { "width": 191, "height": 191 } + }, + "wheel-mid": { + "images/wheel-mid": { "width": 136, "height": 136 } + }, + "wheel-mid-overlay": { + "images/wheel-mid-overlay": { "width": 136, "height": 136 } + }, + "wheel-mid-overlay2": { + "images/wheel-mid-overlay": { "width": 136, "height": 136 } + }, + "wheel-mid-overlay3": { + "images/wheel-mid-overlay": { "width": 136, "height": 136 } + }, + "wheel-mid-overlay4": { + "images/wheel-mid-overlay": { "width": 136, "height": 136 } + }, + "wheel-mid-overlay5": { + "images/wheel-mid-overlay": { "width": 136, "height": 136 } + }, + "wheel-mid-overlay6": { + "images/wheel-mid-overlay": { "width": 136, "height": 136 } + }, + "wheel-mid2": { + "images/wheel-mid": { "width": 136, "height": 136 } + }, + "wheel-mid3": { + "images/wheel-mid": { "width": 136, "height": 136 } + }, + "wheel-mid4": { + "images/wheel-mid": { "width": 136, "height": 136 } + }, + "wheel-mid5": { + "images/wheel-mid": { "width": 136, "height": 136 } + }, + "wheel-mid6": { + "images/wheel-mid": { "width": 136, "height": 136 } + }, + "wheel-small": { + "images/wheel-small": { "width": 71, "height": 71 } + }, + "wheel-small2": { + "images/wheel-small": { "width": 71, "height": 71 } + }, + "wheel-small3": { + "images/wheel-small": { "width": 71, "height": 71 } + } + } +}, +"animations": { + "drive": { + "bones": { + "tankRoot": { + "translate": [ + { + "time": 0, + "x": 0, + "y": 0, + "curve": [ 0.549, 0, 0.907, 0.84 ] + }, + { + "time": 3.0333, + "x": -1426.14, + "y": 0, + "curve": [ 0.211, 0.23, 0.851, 0.92 ] + }, + { + "time": 4.8666, + "x": -2806.98, + "y": 0, + "curve": [ 0.253, 0.27, 0.625, 0.94 ] + }, + { "time": 5.3333, "x": -2903.34, "y": 0 } + ] + }, + "wheel-midRoot1": { + "translate": [ + { "time": 0.7666, "x": 0, "y": 0 }, + { + "time": 1.1666, + "x": 0, + "y": 50.95, + "curve": [ 0.633, 0, 0.907, 0.82 ] + }, + { "time": 1.5666, "x": 0, "y": 0 } + ] + }, + "treadCollider1": { + "rotate": [ + { "time": 1.1, "angle": 0 }, + { "time": 1.2333, "angle": -19.78 }, + { "time": 1.4666, "angle": 0 }, + { "time": 1.6, "angle": 28.87 }, + { "time": 1.8, "angle": 0 } + ], + "translate": [ + { "time": 1.1, "x": 0, "y": 0 }, + { + "time": 1.4666, + "x": 0, + "y": 58.66, + "curve": [ 0.352, 0, 0.828, 0.92 ] + }, + { "time": 1.8, "x": 0, "y": 0 } + ] + }, + "wheel-midRoot2": { + "translate": [ + { "time": 1.2666, "x": 0, "y": 0 }, + { + "time": 1.6333, + "x": 0, + "y": 55.07, + "curve": [ 0.889, 0.01, 0.843, 0.81 ] + }, + { "time": 1.9333, "x": 0, "y": 0 } + ] + }, + "treadCollider2": { + "rotate": [ + { "time": 1.5333, "angle": 0 }, + { "time": 1.6333, "angle": -18.67 }, + { "time": 1.8, "angle": 0 }, + { "time": 1.9, "angle": 29.49 }, + { "time": 2.0666, "angle": 0 } + ], + "translate": [ + { + "time": 1.5333, + "x": 0, + "y": 0, + "curve": [ 0.16, 0.25, 0.813, 0.82 ] + }, + { + "time": 1.8, + "x": 0, + "y": 59.03, + "curve": [ 0.376, 0.26, 0.879, 0.79 ] + }, + { "time": 2.0666, "x": 0, "y": 0 } + ] + }, + "wheel-midRoot3": { + "translate": [ + { "time": 1.6666, "x": 0, "y": 0 }, + { + "time": 1.9333, + "x": 0, + "y": 60.17, + "curve": [ 0.544, 0, 0.838, 0.77 ] + }, + { "time": 2.2, "x": 0, "y": 0 } + ] + }, + "treadCollider3": { + "rotate": [ + { "time": 1.8666, "angle": 0 }, + { "time": 1.9333, "angle": -20.16 }, + { "time": 2.0666, "angle": 0.57 }, + { "time": 2.1666, "angle": 33.66 }, + { "time": 2.3333, "angle": 0 } + ], + "translate": [ + { "time": 1.8666, "x": 0, "y": 0 }, + { + "time": 2.0666, + "x": 0, + "y": 61.53, + "curve": [ 0.582, 0, 0.836, 0.77 ] + }, + { "time": 2.3333, "x": 0, "y": 0 } + ] + }, + "wheel-midRoot4": { + "translate": [ + { "time": 1.9333, "x": 0, "y": 0 }, + { + "time": 2.2, + "x": 0, + "y": 58.89, + "curve": [ 0.48, 0, 0.75, 1 ] + }, + { "time": 2.4666, "x": 0, "y": 0 } + ] + }, + "treadCollider4": { + "rotate": [ + { "time": 2.1333, "angle": 0 }, + { "time": 2.2, "angle": -20.43 }, + { "time": 2.3333, "angle": 4.49 }, + { "time": 2.4333, "angle": 35.87 }, + { "time": 2.5666, "angle": 0 } + ], + "translate": [ + { + "time": 2.1333, + "x": 0, + "y": 0, + "curve": [ 0.191, 0.49, 0.75, 1 ] + }, + { "time": 2.3333, "x": 0, "y": 66.64 }, + { "time": 2.5666, "x": 0, "y": 0 } + ] + }, + "wheel-midRoot5": { + "translate": [ + { "time": 2.2, "x": 0, "y": 0 }, + { "time": 2.4333, "x": 0, "y": 60.26 }, + { "time": 2.7, "x": 0, "y": 0 } + ] + }, + "treadCollider5": { + "rotate": [ + { "time": 2.3333, "angle": 0 }, + { "time": 2.4333, "angle": -23.6 }, + { "time": 2.5666, "angle": 6.49 }, + { "time": 2.6666, "angle": 29.93 }, + { "time": 2.8, "angle": -0.13 } + ], + "translate": [ + { "time": 2.3333, "x": 0, "y": 0 }, + { "time": 2.4333, "x": 0, "y": 36.34 }, + { "time": 2.5, "x": 0, "y": 56.39 }, + { "time": 2.5666, "x": 0, "y": 61.34 }, + { "time": 2.8, "x": 0, "y": 2.04 } + ] + }, + "wheel-midRoot6": { + "translate": [ + { + "time": 2.4333, + "x": 0, + "y": 0, + "curve": [ 0.19, 0.26, 0.804, 0.8 ] + }, + { + "time": 2.6333, + "x": 0, + "y": 51.86, + "curve": [ 0.346, 0, 0.852, 0.7 ] + }, + { "time": 2.8, "x": 0, "y": 0 } + ] + }, + "wheel-mid1": { + "rotate": [ + { + "time": 0, + "angle": 21, + "curve": [ 0.504, 0.11, 0.931, 0.71 ] + }, + { "time": 0.8, "angle": 120 }, + { "time": 1.2333, "angle": 240 }, + { "time": 1.6, "angle": 0 }, + { "time": 1.9, "angle": 120 }, + { "time": 2.1666, "angle": 240 }, + { "time": 2.4, "angle": 0 }, + { "time": 2.5666, "angle": 120 }, + { "time": 2.7333, "angle": 240 }, + { "time": 2.9333, "angle": 0 }, + { "time": 3.1, "angle": 120 }, + { "time": 3.2666, "angle": 240 }, + { "time": 3.4333, "angle": 0 }, + { "time": 3.6333, "angle": 120 }, + { "time": 3.8, "angle": 240 }, + { "time": 3.9666, "angle": 0 }, + { "time": 4.1666, "angle": 120 }, + { "time": 4.3333, "angle": 240 }, + { "time": 4.5, "angle": 0 }, + { "time": 4.7, "angle": 120 }, + { "time": 4.8666, "angle": 240 }, + { "time": 5.2666, "angle": -67.99 } + ] + }, + "tankTreads": { + "rotate": [ + { + "time": 0, + "angle": 0, + "curve": [ 0.145, 0.34, 0.75, 1 ] + }, + { "time": 1.1, "angle": -3.9 }, + { "time": 1.3333, "angle": -2.37 }, + { "time": 1.6333, "angle": -3.54 }, + { "time": 2.1666, "angle": 0.27 }, + { + "time": 2.4666, + "angle": 2.55, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 2.7, + "angle": 3.88, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 3, "angle": -3.62 }, + { "time": 3.2333, "angle": -1.23, "curve": "stepped" }, + { + "time": 4.8666, + "angle": -1.23, + "curve": [ 0.188, 0.16, 0.75, 1 ] + }, + { + "time": 5.2, + "angle": 4.47, + "curve": [ 0.416, 0.01, 0.75, 1 ] + }, + { + "time": 5.5666, + "angle": -3.08, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 5.8333, "angle": -1.23 } + ] + }, + "wheel-big1": { + "rotate": [ + { + "time": 0, + "angle": 0, + "curve": [ 0.504, 0.11, 0.931, 0.71 ] + }, + { "time": 1.1, "angle": 120 }, + { "time": 1.5333, "angle": 240 }, + { "time": 1.8, "angle": 360 }, + { "time": 2.0333, "angle": 120 }, + { "time": 2.2666, "angle": 240 }, + { "time": 2.4666, "angle": 360 }, + { "time": 2.7, "angle": 120 }, + { "time": 2.9333, "angle": 240 }, + { "time": 3.1333, "angle": 360 }, + { "time": 3.3666, "angle": 120 }, + { "time": 3.5666, "angle": 240 }, + { "time": 3.8, "angle": -24 }, + { "time": 4.0333, "angle": 120 }, + { "time": 4.2333, "angle": 240 }, + { "time": 4.4666, "angle": -24 }, + { "time": 4.7, "angle": 120 }, + { "time": 4.8666, "angle": -143.99 }, + { + "time": 5.0666, + "angle": -131.4, + "curve": [ 0.14, 0.25, 0.75, 1 ] + }, + { "time": 5.6666, "angle": -76.85 }, + { "time": 5.8333, "angle": -72.3 } + ] + }, + "treadGravity1": { + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.4666, "x": 0, "y": 0 }, + { "time": 1.8, "x": 0, "y": 29.44 }, + { "time": 2.3333, "x": 0, "y": -0.52 }, + { "time": 2.5666, "x": 0, "y": 5.2 }, + { "time": 2.6666, "x": 0, "y": -11.05, "curve": "stepped" }, + { "time": 4.8666, "x": 0, "y": -11.05 }, + { "time": 5.0666, "x": 0, "y": -1.91 }, + { "time": 5.5333, "x": 0, "y": -6.9 }, + { "time": 5.7333, "x": 0, "y": -11.05 } + ] + }, + "treadGravity2": { + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.4666, "x": 0, "y": 0 }, + { "time": 1.8, "x": 0, "y": 8.5 }, + { "time": 2.3333, "x": 0, "y": 34.74 }, + { "time": 2.5666, "x": 0, "y": 5.2 }, + { "time": 2.6666, "x": 0, "y": -11.05, "curve": "stepped" }, + { "time": 4.8666, "x": 0, "y": -11.05 }, + { "time": 5.0666, "x": 0, "y": 3.9 }, + { "time": 5.5333, "x": 0, "y": -6.9 }, + { "time": 5.7333, "x": 0, "y": -11.05 } + ] + }, + "wheel-small1": { + "rotate": [ + { + "time": 0, + "angle": 0, + "curve": [ 0.504, 0.11, 0.931, 0.71 ] + }, + { "time": 0.7, "angle": 120 }, + { "time": 1.1, "angle": 240 }, + { "time": 1.4666, "angle": 360 }, + { "time": 1.7666, "angle": 120 }, + { "time": 2.0333, "angle": 240 }, + { "time": 2.2666, "angle": 360 }, + { "time": 2.4333, "angle": 120 }, + { "time": 2.5666, "angle": 240 }, + { "time": 2.7, "angle": 360 }, + { "time": 2.8333, "angle": 120 }, + { "time": 2.9666, "angle": 240 }, + { "time": 3.1, "angle": 360 }, + { "time": 3.2333, "angle": 120 }, + { "time": 3.3666, "angle": 240 }, + { "time": 3.5, "angle": 360 }, + { "time": 3.6333, "angle": 120 }, + { "time": 3.7666, "angle": 240 }, + { "time": 3.9, "angle": 360 }, + { "time": 4.0333, "angle": 120 }, + { "time": 4.1666, "angle": 240 }, + { "time": 4.3, "angle": 360 }, + { "time": 4.4333, "angle": 120 }, + { "time": 4.5666, "angle": 240 }, + { "time": 4.7, "angle": 360 }, + { "time": 4.8333, "angle": 120 }, + { "time": 5, "angle": 240 }, + { + "time": 5.2, + "angle": -25.64, + "curve": [ 0.181, 0.26, 0.75, 1 ] + }, + { "time": 5.5666, "angle": 90 } + ] + }, + "tankBody": { + "rotate": [ + { + "time": 0, + "angle": 0, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 1.1666, + "angle": -1.41, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 1.9333, + "angle": -0.18, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 2.3, + "angle": 0.84, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 3.0333, + "angle": -2.33, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 3.4666, + "angle": -0.45, + "curve": [ 0.329, 0.32, 0.757, 1 ] + }, + { + "time": 4.8666, + "angle": 0, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 5.3333, + "angle": 1.82, + "curve": [ 0.324, 0.01, 0.75, 1 ] + }, + { + "time": 5.6666, + "angle": -1.15, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 6.0333, "angle": 0 } + ] + }, + "antenna1": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { + "time": 0.4333, + "angle": 0, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 0.7333, + "angle": -1.55, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 1.0666, + "angle": -0.68, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 1.4, + "angle": 0.61, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 1.6666, "angle": -0.67, "curve": "stepped" }, + { + "time": 2.1333, + "angle": -0.67, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 2.3666, + "angle": 0.88, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 2.5666, + "angle": -1.69, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 2.8666, + "angle": 1.18, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 3.0333, + "angle": -1.09, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 3.2333, + "angle": 1.03, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 3.5, + "angle": -0.44, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 4.6666, "angle": -0.18 }, + { + "time": 5.0333, + "angle": -1.05, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 5.3666, + "angle": 9.17, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 5.6666, + "angle": -3.14, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 5.9, + "angle": 2.96, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 6.1, + "angle": -0.29, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 6.2666, "angle": 0.96 }, + { "time": 6.4, "angle": 0 } + ] + }, + "antenna2": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { + "time": 0.4333, + "angle": 0, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 0.7333, + "angle": -1.55, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 1.0666, + "angle": -0.68, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 1.4, + "angle": 0.61, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 1.6666, "angle": -0.67, "curve": "stepped" }, + { + "time": 2.1333, + "angle": -0.67, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 2.3666, + "angle": 0.88, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 2.5666, + "angle": -1.69, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 2.8666, + "angle": 1.18, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 3.0333, + "angle": -1.09, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 3.2333, + "angle": 1.03, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 3.5, + "angle": -0.44, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 4.6666, "angle": -0.18 }, + { + "time": 5.0333, + "angle": -1.05, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 5.3666, + "angle": 9.17, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 5.6666, + "angle": -3.14, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 5.9, + "angle": 2.96, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 6.1, + "angle": -0.29, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 6.2666, "angle": 0.96 }, + { "time": 6.4, "angle": 0 } + ] + }, + "antenna3": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { + "time": 0.4333, + "angle": 0, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 0.7333, + "angle": -1.55, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 1.0666, + "angle": -0.68, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 1.4, + "angle": 0.61, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 1.6666, "angle": -0.67, "curve": "stepped" }, + { + "time": 2.1333, + "angle": -0.67, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 2.3666, + "angle": 0.88, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 2.5666, + "angle": -1.69, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 2.8666, + "angle": 1.18, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 3.0333, + "angle": -1.09, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 3.2333, + "angle": 1.03, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 3.5, + "angle": -0.44, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 4.6666, "angle": -0.18 }, + { + "time": 5.0333, + "angle": -1.05, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 5.3666, + "angle": 9.17, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 5.6666, + "angle": -3.14, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 5.9, + "angle": 2.96, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 6.1, + "angle": -0.29, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 6.2666, "angle": 0.96 }, + { "time": 6.4, "angle": 0 } + ] + }, + "antenna4": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { + "time": 0.4333, + "angle": 0, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 0.7333, + "angle": -1.55, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 1.0666, + "angle": -0.68, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 1.4, + "angle": 0.61, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 1.6666, "angle": -0.67, "curve": "stepped" }, + { + "time": 2.1333, + "angle": -0.67, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 2.3666, + "angle": 0.88, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 2.5666, + "angle": -1.69, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 2.8666, + "angle": 1.18, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 3.0333, + "angle": -1.09, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 3.2333, + "angle": 1.03, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 3.5, + "angle": -0.44, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 4.6666, "angle": -0.18 }, + { + "time": 5.0333, + "angle": -1.05, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 5.3666, + "angle": 9.17, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 5.6666, + "angle": -3.14, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 5.9, + "angle": 2.96, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 6.1, + "angle": -0.29, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 6.2666, "angle": 0.96 }, + { "time": 6.4, "angle": 0 } + ] + }, + "antenna5": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { + "time": 0.4333, + "angle": 0, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 0.7333, + "angle": -1.55, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 1.0666, + "angle": -0.68, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 1.4, + "angle": 0.61, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 1.6666, "angle": -0.67, "curve": "stepped" }, + { + "time": 2.1333, + "angle": -0.67, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 2.3666, + "angle": 0.88, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 2.5666, + "angle": -1.69, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 2.8666, + "angle": 1.18, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 3.0333, + "angle": -1.09, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 3.2333, + "angle": 1.03, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 3.5, + "angle": -0.44, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 4.6666, "angle": -0.18 }, + { + "time": 5.0333, + "angle": -1.05, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 5.3666, + "angle": 9.17, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 5.6666, + "angle": -3.14, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 5.9, + "angle": 2.96, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 6.1, + "angle": -0.29, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 6.2666, "angle": 0.96 }, + { "time": 6.4, "angle": 0 } + ] + }, + "antenna6": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { + "time": 0.4333, + "angle": 0, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 0.7333, + "angle": -1.55, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 1.0666, + "angle": -0.68, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 1.4, + "angle": 0.61, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 1.6666, "angle": -0.67, "curve": "stepped" }, + { + "time": 2.1333, + "angle": -0.67, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 2.3666, + "angle": 0.88, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 2.5666, + "angle": -1.69, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 2.8666, + "angle": 1.18, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 3.0333, + "angle": -1.09, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 3.2333, + "angle": 1.03, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 3.5, + "angle": -0.44, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 4.6666, "angle": -0.18 }, + { + "time": 5.0333, + "angle": -1.05, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 5.3666, + "angle": 9.17, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 5.6666, + "angle": -3.14, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 5.9, + "angle": 2.96, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 6.1, + "angle": -0.29, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 6.2666, "angle": 0.96 }, + { "time": 6.4, "angle": 0 } + ] + }, + "machinegun": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { + "time": 2.8333, + "angle": 0, + "curve": [ 0.183, 0.17, 0.75, 1 ] + }, + { + "time": 3, + "angle": -4.43, + "curve": [ 0.156, 0.16, 0.75, 1 ] + }, + { + "time": 3.1666, + "angle": -2.93, + "curve": [ 0.156, 0.16, 0.75, 1 ] + }, + { + "time": 4.8333, + "angle": 0, + "curve": [ 0.183, 0.17, 0.75, 1 ] + }, + { + "time": 5.1666, + "angle": -6.05, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 5.4, + "angle": 6.15, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 5.6, "angle": -1.26 } + ] + }, + "cannon": { + "rotate": [ + { "time": 0, "angle": 0 } + ] + }, + "cannonTarget": { + "translate": [ + { + "time": 5, + "x": 0, + "y": 0, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 6.3333, "x": -15.38, "y": 99.99 } + ] + } + }, + "ik": { + "cannonTarget": [ + { "time": 0, "mix": 0.809, "curve": "stepped" }, + { "time": 4.7333, "mix": 0.809 }, + { "time": 5.1666, "mix": 0.504 }, + { "time": 5.6666 } + ] + }, + "paths": { + "treads": { + "position": [ + { + "time": 0, + "curve": [ 0.549, 0, 0.907, 0.84 ] + }, + { "time": 3.0333, "position": 0.51 }, + { "time": 4.8666, "position": 0.9794 }, + { + "time": 5.2666, + "position": 1, + "curve": [ 0.226, 0.15, 0.765, 0.96 ] + }, + { + "time": 5.5333, + "position": 1.02, + "curve": [ 0.279, 0.32, 0.694, 0.99 ] + }, + { "time": 5.8333, "position": 1.021 } + ] + } + } + } +} +} \ No newline at end of file diff --git a/spine-cocos2d-objc/Resources/tank.png b/spine-cocos2d-objc/Resources/tank.png new file mode 100644 index 000000000..9811ee418 Binary files /dev/null and b/spine-cocos2d-objc/Resources/tank.png differ diff --git a/spine-cocos2d-objc/example/GoblinsExample.m b/spine-cocos2d-objc/example/GoblinsExample.m index 58735c55a..a2e9a1e84 100644 --- a/spine-cocos2d-objc/example/GoblinsExample.m +++ b/spine-cocos2d-objc/example/GoblinsExample.m @@ -30,7 +30,7 @@ *****************************************************************************/ #import "GoblinsExample.h" -#import "SpineboyExample.h" +#import "RaptorExample.h" @implementation GoblinsExample @@ -65,7 +65,7 @@ else if (skeletonNode.timeScale == 1) skeletonNode.timeScale = 0.3f; else - [[CCDirector sharedDirector] replaceScene:[SpineboyExample scene]]; + [[CCDirector sharedDirector] replaceScene:[RaptorExample scene]]; } #endif diff --git a/spine-cocos2d-objc/example/RaptorExample.h b/spine-cocos2d-objc/example/RaptorExample.h new file mode 100644 index 000000000..1951c6e8c --- /dev/null +++ b/spine-cocos2d-objc/example/RaptorExample.h @@ -0,0 +1,41 @@ +/****************************************************************************** + * 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. + *****************************************************************************/ + +#import "cocos2d.h" +#import + +@interface RaptorExample : CCNode { + SkeletonAnimation* skeletonNode; +} + ++ (CCScene*) scene; + +@end diff --git a/spine-cocos2d-objc/example/RaptorExample.m b/spine-cocos2d-objc/example/RaptorExample.m new file mode 100644 index 000000000..983f4982f --- /dev/null +++ b/spine-cocos2d-objc/example/RaptorExample.m @@ -0,0 +1,71 @@ +/****************************************************************************** + * 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. + *****************************************************************************/ + +#import "RaptorExample.h" +#import "TankExample.h" + +@implementation RaptorExample + ++ (CCScene*) scene { + CCScene *scene = [CCScene node]; + [scene addChild:[RaptorExample node]]; + return scene; +} + +-(id) init { + self = [super init]; + if (!self) return nil; + + skeletonNode = [SkeletonAnimation skeletonWithFile:@"raptor.json" atlasFile:@"raptor.atlas" scale:0.3f]; + [skeletonNode setAnimationForTrack:0 name:@"walk" loop:YES]; + + CGSize windowSize = [[CCDirector sharedDirector] viewSize]; + [skeletonNode setPosition:ccp(windowSize.width / 2, 20)]; + [self addChild:skeletonNode]; + + self.userInteractionEnabled = YES; + self.contentSize = windowSize; + + return self; +} + +#if ( TARGET_OS_IPHONE || TARGET_IPHONE_SIMULATOR ) +- (void)touchBegan:(UITouch *)touch withEvent:(UIEvent *)event { + if (!skeletonNode.debugBones) + skeletonNode.debugBones = true; + else if (skeletonNode.timeScale == 1) + skeletonNode.timeScale = 0.3f; + else + [[CCDirector sharedDirector] replaceScene:[TankExample scene]]; +} +#endif + +@end diff --git a/spine-cocos2d-objc/example/TankExample.h b/spine-cocos2d-objc/example/TankExample.h new file mode 100644 index 000000000..ad0fbb0ff --- /dev/null +++ b/spine-cocos2d-objc/example/TankExample.h @@ -0,0 +1,41 @@ +/****************************************************************************** + * 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. + *****************************************************************************/ + +#import "cocos2d.h" +#import + +@interface TankExample : CCNode { + SkeletonAnimation* skeletonNode; +} + ++ (CCScene*) scene; + +@end diff --git a/spine-cocos2d-objc/example/TankExample.m b/spine-cocos2d-objc/example/TankExample.m new file mode 100644 index 000000000..1c28908b4 --- /dev/null +++ b/spine-cocos2d-objc/example/TankExample.m @@ -0,0 +1,71 @@ +/****************************************************************************** + * 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. + *****************************************************************************/ + +#import "TankExample.h" +#import "SpineboyExample.h" + +@implementation TankExample + ++ (CCScene*) scene { + CCScene *scene = [CCScene node]; + [scene addChild:[TankExample node]]; + return scene; +} + +-(id) init { + self = [super init]; + if (!self) return nil; + + skeletonNode = [SkeletonAnimation skeletonWithFile:@"tank.json" atlasFile:@"tank.atlas" scale:0.2f]; + [skeletonNode setAnimationForTrack:0 name:@"drive" loop:YES]; + + CGSize windowSize = [[CCDirector sharedDirector] viewSize]; + [skeletonNode setPosition:ccp(windowSize.width / 2, 20)]; + [self addChild:skeletonNode]; + + self.userInteractionEnabled = YES; + self.contentSize = windowSize; + + return self; +} + +#if ( TARGET_OS_IPHONE || TARGET_IPHONE_SIMULATOR ) +- (void)touchBegan:(UITouch *)touch withEvent:(UIEvent *)event { + if (!skeletonNode.debugBones) + skeletonNode.debugBones = true; + else if (skeletonNode.timeScale == 1) + skeletonNode.timeScale = 0.3f; + else + [[CCDirector sharedDirector] replaceScene:[SpineboyExample scene]]; +} +#endif + +@end diff --git a/spine-cocos2d-objc/spine-cocos2d-objc.xcodeproj/project.pbxproj b/spine-cocos2d-objc/spine-cocos2d-objc.xcodeproj/project.pbxproj index f7615215e..25f04a239 100644 --- a/spine-cocos2d-objc/spine-cocos2d-objc.xcodeproj/project.pbxproj +++ b/spine-cocos2d-objc/spine-cocos2d-objc.xcodeproj/project.pbxproj @@ -7,11 +7,6 @@ objects = { /* Begin PBXBuildFile section */ - 431FF7F31C735D8D00D52DF2 /* TransformConstraint.c in Sources */ = {isa = PBXBuildFile; fileRef = 431FF7F01C735D8D00D52DF2 /* TransformConstraint.c */; }; - 431FF7F41C735D8D00D52DF2 /* TransformConstraintData.c in Sources */ = {isa = PBXBuildFile; fileRef = 431FF7F11C735D8D00D52DF2 /* TransformConstraintData.c */; }; - 431FF7F51C735D8D00D52DF2 /* WeightedMeshAttachment.c in Sources */ = {isa = PBXBuildFile; fileRef = 431FF7F21C735D8D00D52DF2 /* WeightedMeshAttachment.c */; }; - 43B7CC0919DC4ACD0031321C /* IkConstraint.c in Sources */ = {isa = PBXBuildFile; fileRef = 43B7CC0719DC4ACD0031321C /* IkConstraint.c */; }; - 43B7CC0A19DC4ACD0031321C /* IkConstraintData.c in Sources */ = {isa = PBXBuildFile; fileRef = 43B7CC0819DC4ACD0031321C /* IkConstraintData.c */; }; 43C3282F170B0C19004A9460 /* spine-cocos2d-objc.m in Sources */ = {isa = PBXBuildFile; fileRef = 43C3282D170B0C19004A9460 /* spine-cocos2d-objc.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; 43C3286C170B0DA6004A9460 /* spineboy.json in Resources */ = {isa = PBXBuildFile; fileRef = 43C32868170B0DA6004A9460 /* spineboy.json */; }; 43C3286E170B0DA6004A9460 /* spineboy.atlas in Resources */ = {isa = PBXBuildFile; fileRef = 43C3286A170B0DA6004A9460 /* spineboy.atlas */; }; @@ -33,34 +28,50 @@ 43F7010F1927FBC700CA4038 /* goblins-mesh.atlas in Resources */ = {isa = PBXBuildFile; fileRef = 43F7010C1927FBC700CA4038 /* goblins-mesh.atlas */; }; 43F701101927FBC700CA4038 /* goblins-mesh.json in Resources */ = {isa = PBXBuildFile; fileRef = 43F7010D1927FBC700CA4038 /* goblins-mesh.json */; }; 43F701111927FBC700CA4038 /* goblins-mesh.png in Resources */ = {isa = PBXBuildFile; fileRef = 43F7010E1927FBC700CA4038 /* goblins-mesh.png */; }; - 43F7FF511927F91900CA4038 /* Animation.c in Sources */ = {isa = PBXBuildFile; fileRef = 43F7FF381927F91900CA4038 /* Animation.c */; }; - 43F7FF521927F91900CA4038 /* AnimationState.c in Sources */ = {isa = PBXBuildFile; fileRef = 43F7FF391927F91900CA4038 /* AnimationState.c */; }; - 43F7FF531927F91900CA4038 /* AnimationStateData.c in Sources */ = {isa = PBXBuildFile; fileRef = 43F7FF3A1927F91900CA4038 /* AnimationStateData.c */; }; - 43F7FF541927F91900CA4038 /* Atlas.c in Sources */ = {isa = PBXBuildFile; fileRef = 43F7FF3B1927F91900CA4038 /* Atlas.c */; }; - 43F7FF551927F91900CA4038 /* AtlasAttachmentLoader.c in Sources */ = {isa = PBXBuildFile; fileRef = 43F7FF3C1927F91900CA4038 /* AtlasAttachmentLoader.c */; }; - 43F7FF561927F91900CA4038 /* Attachment.c in Sources */ = {isa = PBXBuildFile; fileRef = 43F7FF3D1927F91900CA4038 /* Attachment.c */; }; - 43F7FF571927F91900CA4038 /* AttachmentLoader.c in Sources */ = {isa = PBXBuildFile; fileRef = 43F7FF3E1927F91900CA4038 /* AttachmentLoader.c */; }; - 43F7FF581927F91900CA4038 /* Bone.c in Sources */ = {isa = PBXBuildFile; fileRef = 43F7FF3F1927F91900CA4038 /* Bone.c */; }; - 43F7FF591927F91900CA4038 /* BoneData.c in Sources */ = {isa = PBXBuildFile; fileRef = 43F7FF401927F91900CA4038 /* BoneData.c */; }; - 43F7FF5A1927F91900CA4038 /* BoundingBoxAttachment.c in Sources */ = {isa = PBXBuildFile; fileRef = 43F7FF411927F91900CA4038 /* BoundingBoxAttachment.c */; }; - 43F7FF5B1927F91900CA4038 /* Event.c in Sources */ = {isa = PBXBuildFile; fileRef = 43F7FF421927F91900CA4038 /* Event.c */; }; - 43F7FF5C1927F91900CA4038 /* EventData.c in Sources */ = {isa = PBXBuildFile; fileRef = 43F7FF431927F91900CA4038 /* EventData.c */; }; - 43F7FF5D1927F91900CA4038 /* extension.c in Sources */ = {isa = PBXBuildFile; fileRef = 43F7FF441927F91900CA4038 /* extension.c */; }; - 43F7FF5E1927F91900CA4038 /* Json.c in Sources */ = {isa = PBXBuildFile; fileRef = 43F7FF451927F91900CA4038 /* Json.c */; }; - 43F7FF5F1927F91900CA4038 /* MeshAttachment.c in Sources */ = {isa = PBXBuildFile; fileRef = 43F7FF471927F91900CA4038 /* MeshAttachment.c */; }; - 43F7FF601927F91900CA4038 /* RegionAttachment.c in Sources */ = {isa = PBXBuildFile; fileRef = 43F7FF481927F91900CA4038 /* RegionAttachment.c */; }; - 43F7FF611927F91900CA4038 /* Skeleton.c in Sources */ = {isa = PBXBuildFile; fileRef = 43F7FF491927F91900CA4038 /* Skeleton.c */; }; - 43F7FF621927F91900CA4038 /* SkeletonBounds.c in Sources */ = {isa = PBXBuildFile; fileRef = 43F7FF4A1927F91900CA4038 /* SkeletonBounds.c */; }; - 43F7FF631927F91900CA4038 /* SkeletonData.c in Sources */ = {isa = PBXBuildFile; fileRef = 43F7FF4B1927F91900CA4038 /* SkeletonData.c */; }; - 43F7FF641927F91900CA4038 /* SkeletonJson.c in Sources */ = {isa = PBXBuildFile; fileRef = 43F7FF4C1927F91900CA4038 /* SkeletonJson.c */; }; - 43F7FF651927F91900CA4038 /* Skin.c in Sources */ = {isa = PBXBuildFile; fileRef = 43F7FF4D1927F91900CA4038 /* Skin.c */; }; - 43F7FF671927F91900CA4038 /* Slot.c in Sources */ = {isa = PBXBuildFile; fileRef = 43F7FF4F1927F91900CA4038 /* Slot.c */; }; - 43F7FF681927F91900CA4038 /* SlotData.c in Sources */ = {isa = PBXBuildFile; fileRef = 43F7FF501927F91900CA4038 /* SlotData.c */; }; 43F7FF881927F94800CA4038 /* SkeletonAnimation.m in Sources */ = {isa = PBXBuildFile; fileRef = 43F7FF841927F94800CA4038 /* SkeletonAnimation.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; 43F7FF891927F94800CA4038 /* SkeletonRenderer.m in Sources */ = {isa = PBXBuildFile; fileRef = 43F7FF861927F94800CA4038 /* SkeletonRenderer.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; 43F7FF8E1927F96700CA4038 /* GoblinsExample.m in Sources */ = {isa = PBXBuildFile; fileRef = 43F7FF8B1927F96700CA4038 /* GoblinsExample.m */; }; 43F7FF8F1927F96700CA4038 /* SpineboyExample.m in Sources */ = {isa = PBXBuildFile; fileRef = 43F7FF8D1927F96700CA4038 /* SpineboyExample.m */; }; 652107961895250000B1FF07 /* CoreText.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 652107951895250000B1FF07 /* CoreText.framework */; }; + 76F5BD7D1D2BDCB5005917E5 /* Animation.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD5D1D2BDCB5005917E5 /* Animation.c */; }; + 76F5BD7E1D2BDCB5005917E5 /* AnimationState.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD5E1D2BDCB5005917E5 /* AnimationState.c */; }; + 76F5BD7F1D2BDCB5005917E5 /* AnimationStateData.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD5F1D2BDCB5005917E5 /* AnimationStateData.c */; }; + 76F5BD801D2BDCB5005917E5 /* Atlas.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD601D2BDCB5005917E5 /* Atlas.c */; }; + 76F5BD811D2BDCB5005917E5 /* AtlasAttachmentLoader.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD611D2BDCB5005917E5 /* AtlasAttachmentLoader.c */; }; + 76F5BD821D2BDCB5005917E5 /* Attachment.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD621D2BDCB5005917E5 /* Attachment.c */; }; + 76F5BD831D2BDCB5005917E5 /* AttachmentLoader.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD631D2BDCB5005917E5 /* AttachmentLoader.c */; }; + 76F5BD841D2BDCB5005917E5 /* Bone.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD641D2BDCB5005917E5 /* Bone.c */; }; + 76F5BD851D2BDCB5005917E5 /* BoneData.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD651D2BDCB5005917E5 /* BoneData.c */; }; + 76F5BD861D2BDCB5005917E5 /* BoundingBoxAttachment.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD661D2BDCB5005917E5 /* BoundingBoxAttachment.c */; }; + 76F5BD871D2BDCB5005917E5 /* Event.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD671D2BDCB5005917E5 /* Event.c */; }; + 76F5BD881D2BDCB5005917E5 /* EventData.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD681D2BDCB5005917E5 /* EventData.c */; }; + 76F5BD891D2BDCB5005917E5 /* extension.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD691D2BDCB5005917E5 /* extension.c */; }; + 76F5BD8A1D2BDCB5005917E5 /* IkConstraint.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD6A1D2BDCB5005917E5 /* IkConstraint.c */; }; + 76F5BD8B1D2BDCB5005917E5 /* IkConstraintData.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD6B1D2BDCB5005917E5 /* IkConstraintData.c */; }; + 76F5BD8C1D2BDCB5005917E5 /* Json.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD6C1D2BDCB5005917E5 /* Json.c */; }; + 76F5BD8D1D2BDCB5005917E5 /* MeshAttachment.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD6E1D2BDCB5005917E5 /* MeshAttachment.c */; }; + 76F5BD8E1D2BDCB5005917E5 /* PathAttachment.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD6F1D2BDCB5005917E5 /* PathAttachment.c */; }; + 76F5BD8F1D2BDCB5005917E5 /* PathConstraint.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD701D2BDCB5005917E5 /* PathConstraint.c */; }; + 76F5BD901D2BDCB5005917E5 /* PathConstraintData.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD711D2BDCB5005917E5 /* PathConstraintData.c */; }; + 76F5BD911D2BDCB5005917E5 /* RegionAttachment.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD721D2BDCB5005917E5 /* RegionAttachment.c */; }; + 76F5BD921D2BDCB5005917E5 /* Skeleton.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD731D2BDCB5005917E5 /* Skeleton.c */; }; + 76F5BD931D2BDCB5005917E5 /* SkeletonBounds.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD741D2BDCB5005917E5 /* SkeletonBounds.c */; }; + 76F5BD941D2BDCB5005917E5 /* SkeletonData.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD751D2BDCB5005917E5 /* SkeletonData.c */; }; + 76F5BD951D2BDCB5005917E5 /* SkeletonJson.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD761D2BDCB5005917E5 /* SkeletonJson.c */; }; + 76F5BD961D2BDCB5005917E5 /* Skin.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD771D2BDCB5005917E5 /* Skin.c */; }; + 76F5BD971D2BDCB5005917E5 /* Slot.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD781D2BDCB5005917E5 /* Slot.c */; }; + 76F5BD981D2BDCB5005917E5 /* SlotData.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD791D2BDCB5005917E5 /* SlotData.c */; }; + 76F5BD991D2BDCB5005917E5 /* TransformConstraint.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD7A1D2BDCB5005917E5 /* TransformConstraint.c */; }; + 76F5BD9A1D2BDCB5005917E5 /* TransformConstraintData.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD7B1D2BDCB5005917E5 /* TransformConstraintData.c */; }; + 76F5BD9B1D2BDCB5005917E5 /* VertexAttachment.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD7C1D2BDCB5005917E5 /* VertexAttachment.c */; }; + 76F5BDA21D2BDE1C005917E5 /* raptor.atlas in Resources */ = {isa = PBXBuildFile; fileRef = 76F5BD9C1D2BDE1C005917E5 /* raptor.atlas */; }; + 76F5BDA31D2BDE1C005917E5 /* raptor.json in Resources */ = {isa = PBXBuildFile; fileRef = 76F5BD9D1D2BDE1C005917E5 /* raptor.json */; }; + 76F5BDA41D2BDE1C005917E5 /* raptor.png in Resources */ = {isa = PBXBuildFile; fileRef = 76F5BD9E1D2BDE1C005917E5 /* raptor.png */; }; + 76F5BDA51D2BDE1C005917E5 /* tank.atlas in Resources */ = {isa = PBXBuildFile; fileRef = 76F5BD9F1D2BDE1C005917E5 /* tank.atlas */; }; + 76F5BDA61D2BDE1C005917E5 /* tank.json in Resources */ = {isa = PBXBuildFile; fileRef = 76F5BDA01D2BDE1C005917E5 /* tank.json */; }; + 76F5BDA71D2BDE1C005917E5 /* tank.png in Resources */ = {isa = PBXBuildFile; fileRef = 76F5BDA11D2BDE1C005917E5 /* tank.png */; }; + 76F5BDAA1D2BDE67005917E5 /* RaptorExample.m in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BDA91D2BDE67005917E5 /* RaptorExample.m */; }; + 76F5BDAD1D2BDFA2005917E5 /* TankExample.m in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BDAC1D2BDFA2005917E5 /* TankExample.m */; }; 83F1A0EF1986955A001F6B44 /* GLKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 83F1A0EE1986955A001F6B44 /* GLKit.framework */; }; 9A5D2499170A94DA0030D4DD /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9A5D2498170A94DA0030D4DD /* QuartzCore.framework */; }; 9A5D249B170A94DA0030D4DD /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9A5D249A170A94DA0030D4DD /* OpenGLES.framework */; }; @@ -112,16 +123,6 @@ /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ - 431FF7ED1C735D7A00D52DF2 /* TransformConstraint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TransformConstraint.h; path = "../spine-c/include/spine/TransformConstraint.h"; sourceTree = ""; }; - 431FF7EE1C735D7A00D52DF2 /* TransformConstraintData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TransformConstraintData.h; path = "../spine-c/include/spine/TransformConstraintData.h"; sourceTree = ""; }; - 431FF7EF1C735D7A00D52DF2 /* WeightedMeshAttachment.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WeightedMeshAttachment.h; path = "../spine-c/include/spine/WeightedMeshAttachment.h"; sourceTree = ""; }; - 431FF7F01C735D8D00D52DF2 /* TransformConstraint.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = TransformConstraint.c; path = "../spine-c/src/spine/TransformConstraint.c"; sourceTree = ""; }; - 431FF7F11C735D8D00D52DF2 /* TransformConstraintData.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = TransformConstraintData.c; path = "../spine-c/src/spine/TransformConstraintData.c"; sourceTree = ""; }; - 431FF7F21C735D8D00D52DF2 /* WeightedMeshAttachment.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = WeightedMeshAttachment.c; path = "../spine-c/src/spine/WeightedMeshAttachment.c"; sourceTree = ""; }; - 43B7CC0719DC4ACD0031321C /* IkConstraint.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = IkConstraint.c; path = "../spine-c/src/spine/IkConstraint.c"; sourceTree = ""; }; - 43B7CC0819DC4ACD0031321C /* IkConstraintData.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = IkConstraintData.c; path = "../spine-c/src/spine/IkConstraintData.c"; sourceTree = ""; }; - 43B7CC0D19DC4AE30031321C /* IkConstraint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = IkConstraint.h; path = "../spine-c/include/spine/IkConstraint.h"; sourceTree = ""; }; - 43B7CC0E19DC4AE30031321C /* IkConstraintData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = IkConstraintData.h; path = "../spine-c/include/spine/IkConstraintData.h"; sourceTree = ""; }; 43C3282D170B0C19004A9460 /* spine-cocos2d-objc.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = "spine-cocos2d-objc.m"; path = "src/spine/spine-cocos2d-objc.m"; sourceTree = ""; }; 43C3282E170B0C19004A9460 /* spine-cocos2d-objc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "spine-cocos2d-objc.h"; path = "src/spine/spine-cocos2d-objc.h"; sourceTree = ""; }; 43C32868170B0DA6004A9460 /* spineboy.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; name = spineboy.json; path = Resources/spineboy.json; sourceTree = ""; }; @@ -146,53 +147,6 @@ 43F7010C1927FBC700CA4038 /* goblins-mesh.atlas */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = "goblins-mesh.atlas"; path = "Resources/goblins-mesh.atlas"; sourceTree = ""; }; 43F7010D1927FBC700CA4038 /* goblins-mesh.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; name = "goblins-mesh.json"; path = "Resources/goblins-mesh.json"; sourceTree = ""; }; 43F7010E1927FBC700CA4038 /* goblins-mesh.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "goblins-mesh.png"; path = "Resources/goblins-mesh.png"; sourceTree = ""; }; - 43F7FF381927F91900CA4038 /* Animation.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Animation.c; path = "../spine-c/src/spine/Animation.c"; sourceTree = ""; }; - 43F7FF391927F91900CA4038 /* AnimationState.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = AnimationState.c; path = "../spine-c/src/spine/AnimationState.c"; sourceTree = ""; }; - 43F7FF3A1927F91900CA4038 /* AnimationStateData.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = AnimationStateData.c; path = "../spine-c/src/spine/AnimationStateData.c"; sourceTree = ""; }; - 43F7FF3B1927F91900CA4038 /* Atlas.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Atlas.c; path = "../spine-c/src/spine/Atlas.c"; sourceTree = ""; }; - 43F7FF3C1927F91900CA4038 /* AtlasAttachmentLoader.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = AtlasAttachmentLoader.c; path = "../spine-c/src/spine/AtlasAttachmentLoader.c"; sourceTree = ""; }; - 43F7FF3D1927F91900CA4038 /* Attachment.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Attachment.c; path = "../spine-c/src/spine/Attachment.c"; sourceTree = ""; }; - 43F7FF3E1927F91900CA4038 /* AttachmentLoader.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = AttachmentLoader.c; path = "../spine-c/src/spine/AttachmentLoader.c"; sourceTree = ""; }; - 43F7FF3F1927F91900CA4038 /* Bone.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Bone.c; path = "../spine-c/src/spine/Bone.c"; sourceTree = ""; }; - 43F7FF401927F91900CA4038 /* BoneData.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = BoneData.c; path = "../spine-c/src/spine/BoneData.c"; sourceTree = ""; }; - 43F7FF411927F91900CA4038 /* BoundingBoxAttachment.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = BoundingBoxAttachment.c; path = "../spine-c/src/spine/BoundingBoxAttachment.c"; sourceTree = ""; }; - 43F7FF421927F91900CA4038 /* Event.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Event.c; path = "../spine-c/src/spine/Event.c"; sourceTree = ""; }; - 43F7FF431927F91900CA4038 /* EventData.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = EventData.c; path = "../spine-c/src/spine/EventData.c"; sourceTree = ""; }; - 43F7FF441927F91900CA4038 /* extension.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = extension.c; path = "../spine-c/src/spine/extension.c"; sourceTree = ""; }; - 43F7FF451927F91900CA4038 /* Json.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Json.c; path = "../spine-c/src/spine/Json.c"; sourceTree = ""; }; - 43F7FF461927F91900CA4038 /* Json.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Json.h; path = "../spine-c/src/spine/Json.h"; sourceTree = ""; }; - 43F7FF471927F91900CA4038 /* MeshAttachment.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = MeshAttachment.c; path = "../spine-c/src/spine/MeshAttachment.c"; sourceTree = ""; }; - 43F7FF481927F91900CA4038 /* RegionAttachment.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = RegionAttachment.c; path = "../spine-c/src/spine/RegionAttachment.c"; sourceTree = ""; }; - 43F7FF491927F91900CA4038 /* Skeleton.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Skeleton.c; path = "../spine-c/src/spine/Skeleton.c"; sourceTree = ""; }; - 43F7FF4A1927F91900CA4038 /* SkeletonBounds.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = SkeletonBounds.c; path = "../spine-c/src/spine/SkeletonBounds.c"; sourceTree = ""; }; - 43F7FF4B1927F91900CA4038 /* SkeletonData.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = SkeletonData.c; path = "../spine-c/src/spine/SkeletonData.c"; sourceTree = ""; }; - 43F7FF4C1927F91900CA4038 /* SkeletonJson.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = SkeletonJson.c; path = "../spine-c/src/spine/SkeletonJson.c"; sourceTree = ""; }; - 43F7FF4D1927F91900CA4038 /* Skin.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Skin.c; path = "../spine-c/src/spine/Skin.c"; sourceTree = ""; }; - 43F7FF4F1927F91900CA4038 /* Slot.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Slot.c; path = "../spine-c/src/spine/Slot.c"; sourceTree = ""; }; - 43F7FF501927F91900CA4038 /* SlotData.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = SlotData.c; path = "../spine-c/src/spine/SlotData.c"; sourceTree = ""; }; - 43F7FF691927F92500CA4038 /* Animation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Animation.h; path = "../spine-c/include/spine/Animation.h"; sourceTree = ""; }; - 43F7FF6A1927F92500CA4038 /* AnimationState.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AnimationState.h; path = "../spine-c/include/spine/AnimationState.h"; sourceTree = ""; }; - 43F7FF6B1927F92500CA4038 /* AnimationStateData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AnimationStateData.h; path = "../spine-c/include/spine/AnimationStateData.h"; sourceTree = ""; }; - 43F7FF6C1927F92500CA4038 /* Atlas.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Atlas.h; path = "../spine-c/include/spine/Atlas.h"; sourceTree = ""; }; - 43F7FF6D1927F92500CA4038 /* AtlasAttachmentLoader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AtlasAttachmentLoader.h; path = "../spine-c/include/spine/AtlasAttachmentLoader.h"; sourceTree = ""; }; - 43F7FF6E1927F92500CA4038 /* Attachment.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Attachment.h; path = "../spine-c/include/spine/Attachment.h"; sourceTree = ""; }; - 43F7FF6F1927F92500CA4038 /* AttachmentLoader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AttachmentLoader.h; path = "../spine-c/include/spine/AttachmentLoader.h"; sourceTree = ""; }; - 43F7FF701927F92500CA4038 /* Bone.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Bone.h; path = "../spine-c/include/spine/Bone.h"; sourceTree = ""; }; - 43F7FF711927F92500CA4038 /* BoneData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = BoneData.h; path = "../spine-c/include/spine/BoneData.h"; sourceTree = ""; }; - 43F7FF721927F92500CA4038 /* BoundingBoxAttachment.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = BoundingBoxAttachment.h; path = "../spine-c/include/spine/BoundingBoxAttachment.h"; sourceTree = ""; }; - 43F7FF731927F92500CA4038 /* Event.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Event.h; path = "../spine-c/include/spine/Event.h"; sourceTree = ""; }; - 43F7FF741927F92500CA4038 /* EventData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = EventData.h; path = "../spine-c/include/spine/EventData.h"; sourceTree = ""; }; - 43F7FF751927F92500CA4038 /* extension.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = extension.h; path = "../spine-c/include/spine/extension.h"; sourceTree = ""; }; - 43F7FF761927F92500CA4038 /* MeshAttachment.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MeshAttachment.h; path = "../spine-c/include/spine/MeshAttachment.h"; sourceTree = ""; }; - 43F7FF771927F92500CA4038 /* RegionAttachment.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RegionAttachment.h; path = "../spine-c/include/spine/RegionAttachment.h"; sourceTree = ""; }; - 43F7FF781927F92500CA4038 /* Skeleton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Skeleton.h; path = "../spine-c/include/spine/Skeleton.h"; sourceTree = ""; }; - 43F7FF791927F92500CA4038 /* SkeletonBounds.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkeletonBounds.h; path = "../spine-c/include/spine/SkeletonBounds.h"; sourceTree = ""; }; - 43F7FF7A1927F92500CA4038 /* SkeletonData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkeletonData.h; path = "../spine-c/include/spine/SkeletonData.h"; sourceTree = ""; }; - 43F7FF7B1927F92500CA4038 /* SkeletonJson.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkeletonJson.h; path = "../spine-c/include/spine/SkeletonJson.h"; sourceTree = ""; }; - 43F7FF7C1927F92500CA4038 /* Skin.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Skin.h; path = "../spine-c/include/spine/Skin.h"; sourceTree = ""; }; - 43F7FF7E1927F92500CA4038 /* Slot.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Slot.h; path = "../spine-c/include/spine/Slot.h"; sourceTree = ""; }; - 43F7FF7F1927F92500CA4038 /* SlotData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SlotData.h; path = "../spine-c/include/spine/SlotData.h"; sourceTree = ""; }; - 43F7FF801927F92500CA4038 /* spine.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = spine.h; path = "../spine-c/include/spine/spine.h"; sourceTree = ""; }; 43F7FF831927F94800CA4038 /* SkeletonAnimation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkeletonAnimation.h; path = src/spine/SkeletonAnimation.h; sourceTree = ""; }; 43F7FF841927F94800CA4038 /* SkeletonAnimation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SkeletonAnimation.m; path = src/spine/SkeletonAnimation.m; sourceTree = ""; }; 43F7FF851927F94800CA4038 /* SkeletonRenderer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkeletonRenderer.h; path = src/spine/SkeletonRenderer.h; sourceTree = ""; }; @@ -202,6 +156,48 @@ 43F7FF8C1927F96700CA4038 /* SpineboyExample.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SpineboyExample.h; path = example/SpineboyExample.h; sourceTree = ""; }; 43F7FF8D1927F96700CA4038 /* SpineboyExample.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SpineboyExample.m; path = example/SpineboyExample.m; sourceTree = ""; }; 652107951895250000B1FF07 /* CoreText.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreText.framework; path = System/Library/Frameworks/CoreText.framework; sourceTree = SDKROOT; }; + 76F5BD5D1D2BDCB5005917E5 /* Animation.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Animation.c; path = "../spine-c/src/spine/Animation.c"; sourceTree = ""; }; + 76F5BD5E1D2BDCB5005917E5 /* AnimationState.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = AnimationState.c; path = "../spine-c/src/spine/AnimationState.c"; sourceTree = ""; }; + 76F5BD5F1D2BDCB5005917E5 /* AnimationStateData.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = AnimationStateData.c; path = "../spine-c/src/spine/AnimationStateData.c"; sourceTree = ""; }; + 76F5BD601D2BDCB5005917E5 /* Atlas.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Atlas.c; path = "../spine-c/src/spine/Atlas.c"; sourceTree = ""; }; + 76F5BD611D2BDCB5005917E5 /* AtlasAttachmentLoader.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = AtlasAttachmentLoader.c; path = "../spine-c/src/spine/AtlasAttachmentLoader.c"; sourceTree = ""; }; + 76F5BD621D2BDCB5005917E5 /* Attachment.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Attachment.c; path = "../spine-c/src/spine/Attachment.c"; sourceTree = ""; }; + 76F5BD631D2BDCB5005917E5 /* AttachmentLoader.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = AttachmentLoader.c; path = "../spine-c/src/spine/AttachmentLoader.c"; sourceTree = ""; }; + 76F5BD641D2BDCB5005917E5 /* Bone.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Bone.c; path = "../spine-c/src/spine/Bone.c"; sourceTree = ""; }; + 76F5BD651D2BDCB5005917E5 /* BoneData.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = BoneData.c; path = "../spine-c/src/spine/BoneData.c"; sourceTree = ""; }; + 76F5BD661D2BDCB5005917E5 /* BoundingBoxAttachment.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = BoundingBoxAttachment.c; path = "../spine-c/src/spine/BoundingBoxAttachment.c"; sourceTree = ""; }; + 76F5BD671D2BDCB5005917E5 /* Event.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Event.c; path = "../spine-c/src/spine/Event.c"; sourceTree = ""; }; + 76F5BD681D2BDCB5005917E5 /* EventData.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = EventData.c; path = "../spine-c/src/spine/EventData.c"; sourceTree = ""; }; + 76F5BD691D2BDCB5005917E5 /* extension.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = extension.c; path = "../spine-c/src/spine/extension.c"; sourceTree = ""; }; + 76F5BD6A1D2BDCB5005917E5 /* IkConstraint.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = IkConstraint.c; path = "../spine-c/src/spine/IkConstraint.c"; sourceTree = ""; }; + 76F5BD6B1D2BDCB5005917E5 /* IkConstraintData.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = IkConstraintData.c; path = "../spine-c/src/spine/IkConstraintData.c"; sourceTree = ""; }; + 76F5BD6C1D2BDCB5005917E5 /* Json.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Json.c; path = "../spine-c/src/spine/Json.c"; sourceTree = ""; }; + 76F5BD6D1D2BDCB5005917E5 /* Json.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Json.h; path = "../spine-c/src/spine/Json.h"; sourceTree = ""; }; + 76F5BD6E1D2BDCB5005917E5 /* MeshAttachment.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = MeshAttachment.c; path = "../spine-c/src/spine/MeshAttachment.c"; sourceTree = ""; }; + 76F5BD6F1D2BDCB5005917E5 /* PathAttachment.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = PathAttachment.c; path = "../spine-c/src/spine/PathAttachment.c"; sourceTree = ""; }; + 76F5BD701D2BDCB5005917E5 /* PathConstraint.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = PathConstraint.c; path = "../spine-c/src/spine/PathConstraint.c"; sourceTree = ""; }; + 76F5BD711D2BDCB5005917E5 /* PathConstraintData.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = PathConstraintData.c; path = "../spine-c/src/spine/PathConstraintData.c"; sourceTree = ""; }; + 76F5BD721D2BDCB5005917E5 /* RegionAttachment.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = RegionAttachment.c; path = "../spine-c/src/spine/RegionAttachment.c"; sourceTree = ""; }; + 76F5BD731D2BDCB5005917E5 /* Skeleton.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Skeleton.c; path = "../spine-c/src/spine/Skeleton.c"; sourceTree = ""; }; + 76F5BD741D2BDCB5005917E5 /* SkeletonBounds.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = SkeletonBounds.c; path = "../spine-c/src/spine/SkeletonBounds.c"; sourceTree = ""; }; + 76F5BD751D2BDCB5005917E5 /* SkeletonData.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = SkeletonData.c; path = "../spine-c/src/spine/SkeletonData.c"; sourceTree = ""; }; + 76F5BD761D2BDCB5005917E5 /* SkeletonJson.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = SkeletonJson.c; path = "../spine-c/src/spine/SkeletonJson.c"; sourceTree = ""; }; + 76F5BD771D2BDCB5005917E5 /* Skin.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Skin.c; path = "../spine-c/src/spine/Skin.c"; sourceTree = ""; }; + 76F5BD781D2BDCB5005917E5 /* Slot.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Slot.c; path = "../spine-c/src/spine/Slot.c"; sourceTree = ""; }; + 76F5BD791D2BDCB5005917E5 /* SlotData.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = SlotData.c; path = "../spine-c/src/spine/SlotData.c"; sourceTree = ""; }; + 76F5BD7A1D2BDCB5005917E5 /* TransformConstraint.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = TransformConstraint.c; path = "../spine-c/src/spine/TransformConstraint.c"; sourceTree = ""; }; + 76F5BD7B1D2BDCB5005917E5 /* TransformConstraintData.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = TransformConstraintData.c; path = "../spine-c/src/spine/TransformConstraintData.c"; sourceTree = ""; }; + 76F5BD7C1D2BDCB5005917E5 /* VertexAttachment.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = VertexAttachment.c; path = "../spine-c/src/spine/VertexAttachment.c"; sourceTree = ""; }; + 76F5BD9C1D2BDE1C005917E5 /* raptor.atlas */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = raptor.atlas; path = Resources/raptor.atlas; sourceTree = ""; }; + 76F5BD9D1D2BDE1C005917E5 /* raptor.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; name = raptor.json; path = Resources/raptor.json; sourceTree = ""; }; + 76F5BD9E1D2BDE1C005917E5 /* raptor.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = raptor.png; path = Resources/raptor.png; sourceTree = ""; }; + 76F5BD9F1D2BDE1C005917E5 /* tank.atlas */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = tank.atlas; path = Resources/tank.atlas; sourceTree = ""; }; + 76F5BDA01D2BDE1C005917E5 /* tank.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; name = tank.json; path = Resources/tank.json; sourceTree = ""; }; + 76F5BDA11D2BDE1C005917E5 /* tank.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = tank.png; path = Resources/tank.png; sourceTree = ""; }; + 76F5BDA81D2BDE67005917E5 /* RaptorExample.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RaptorExample.h; path = example/RaptorExample.h; sourceTree = ""; }; + 76F5BDA91D2BDE67005917E5 /* RaptorExample.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = RaptorExample.m; path = example/RaptorExample.m; sourceTree = ""; }; + 76F5BDAB1D2BDFA2005917E5 /* TankExample.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TankExample.h; path = example/TankExample.h; sourceTree = ""; }; + 76F5BDAC1D2BDFA2005917E5 /* TankExample.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = TankExample.m; path = example/TankExample.m; sourceTree = ""; }; 83F1A0EE1986955A001F6B44 /* GLKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GLKit.framework; path = System/Library/Frameworks/GLKit.framework; sourceTree = SDKROOT; }; 9A5D2495170A94DA0030D4DD /* SpineExample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = SpineExample.app; sourceTree = BUILT_PRODUCTS_DIR; }; 9A5D2498170A94DA0030D4DD /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; }; @@ -259,6 +255,10 @@ 43F7FF8D1927F96700CA4038 /* SpineboyExample.m */, 43F7FF8A1927F96700CA4038 /* GoblinsExample.h */, 43F7FF8B1927F96700CA4038 /* GoblinsExample.m */, + 76F5BDA81D2BDE67005917E5 /* RaptorExample.h */, + 76F5BDA91D2BDE67005917E5 /* RaptorExample.m */, + 76F5BDAB1D2BDFA2005917E5 /* TankExample.h */, + 76F5BDAC1D2BDFA2005917E5 /* TankExample.m */, 43C32A07170B10FF004A9460 /* AppDelegate.h */, 43C32A08170B10FF004A9460 /* AppDelegate.m */, 43C32A05170B0F93004A9460 /* main.m */, @@ -270,63 +270,38 @@ 43C32822170B0BC2004A9460 /* spine-c */ = { isa = PBXGroup; children = ( - 43F7FF381927F91900CA4038 /* Animation.c */, - 43F7FF691927F92500CA4038 /* Animation.h */, - 43F7FF391927F91900CA4038 /* AnimationState.c */, - 43F7FF6A1927F92500CA4038 /* AnimationState.h */, - 43F7FF3A1927F91900CA4038 /* AnimationStateData.c */, - 43F7FF6B1927F92500CA4038 /* AnimationStateData.h */, - 43F7FF3B1927F91900CA4038 /* Atlas.c */, - 43F7FF6C1927F92500CA4038 /* Atlas.h */, - 43F7FF3C1927F91900CA4038 /* AtlasAttachmentLoader.c */, - 43F7FF6D1927F92500CA4038 /* AtlasAttachmentLoader.h */, - 43F7FF3D1927F91900CA4038 /* Attachment.c */, - 43F7FF6E1927F92500CA4038 /* Attachment.h */, - 43F7FF3E1927F91900CA4038 /* AttachmentLoader.c */, - 43F7FF6F1927F92500CA4038 /* AttachmentLoader.h */, - 43F7FF3F1927F91900CA4038 /* Bone.c */, - 43F7FF701927F92500CA4038 /* Bone.h */, - 43F7FF401927F91900CA4038 /* BoneData.c */, - 43F7FF711927F92500CA4038 /* BoneData.h */, - 43F7FF411927F91900CA4038 /* BoundingBoxAttachment.c */, - 43F7FF721927F92500CA4038 /* BoundingBoxAttachment.h */, - 43F7FF421927F91900CA4038 /* Event.c */, - 43F7FF731927F92500CA4038 /* Event.h */, - 43F7FF431927F91900CA4038 /* EventData.c */, - 43F7FF741927F92500CA4038 /* EventData.h */, - 43F7FF441927F91900CA4038 /* extension.c */, - 43F7FF751927F92500CA4038 /* extension.h */, - 43B7CC0719DC4ACD0031321C /* IkConstraint.c */, - 43B7CC0D19DC4AE30031321C /* IkConstraint.h */, - 43B7CC0819DC4ACD0031321C /* IkConstraintData.c */, - 43B7CC0E19DC4AE30031321C /* IkConstraintData.h */, - 43F7FF451927F91900CA4038 /* Json.c */, - 43F7FF461927F91900CA4038 /* Json.h */, - 43F7FF471927F91900CA4038 /* MeshAttachment.c */, - 43F7FF761927F92500CA4038 /* MeshAttachment.h */, - 43F7FF481927F91900CA4038 /* RegionAttachment.c */, - 43F7FF771927F92500CA4038 /* RegionAttachment.h */, - 43F7FF491927F91900CA4038 /* Skeleton.c */, - 43F7FF781927F92500CA4038 /* Skeleton.h */, - 43F7FF4A1927F91900CA4038 /* SkeletonBounds.c */, - 43F7FF791927F92500CA4038 /* SkeletonBounds.h */, - 43F7FF4B1927F91900CA4038 /* SkeletonData.c */, - 43F7FF7A1927F92500CA4038 /* SkeletonData.h */, - 43F7FF4C1927F91900CA4038 /* SkeletonJson.c */, - 43F7FF7B1927F92500CA4038 /* SkeletonJson.h */, - 43F7FF4D1927F91900CA4038 /* Skin.c */, - 43F7FF7C1927F92500CA4038 /* Skin.h */, - 43F7FF4F1927F91900CA4038 /* Slot.c */, - 43F7FF7E1927F92500CA4038 /* Slot.h */, - 43F7FF501927F91900CA4038 /* SlotData.c */, - 43F7FF7F1927F92500CA4038 /* SlotData.h */, - 43F7FF801927F92500CA4038 /* spine.h */, - 431FF7F01C735D8D00D52DF2 /* TransformConstraint.c */, - 431FF7ED1C735D7A00D52DF2 /* TransformConstraint.h */, - 431FF7F11C735D8D00D52DF2 /* TransformConstraintData.c */, - 431FF7EE1C735D7A00D52DF2 /* TransformConstraintData.h */, - 431FF7F21C735D8D00D52DF2 /* WeightedMeshAttachment.c */, - 431FF7EF1C735D7A00D52DF2 /* WeightedMeshAttachment.h */, + 76F5BD5D1D2BDCB5005917E5 /* Animation.c */, + 76F5BD5E1D2BDCB5005917E5 /* AnimationState.c */, + 76F5BD5F1D2BDCB5005917E5 /* AnimationStateData.c */, + 76F5BD601D2BDCB5005917E5 /* Atlas.c */, + 76F5BD611D2BDCB5005917E5 /* AtlasAttachmentLoader.c */, + 76F5BD621D2BDCB5005917E5 /* Attachment.c */, + 76F5BD631D2BDCB5005917E5 /* AttachmentLoader.c */, + 76F5BD641D2BDCB5005917E5 /* Bone.c */, + 76F5BD651D2BDCB5005917E5 /* BoneData.c */, + 76F5BD661D2BDCB5005917E5 /* BoundingBoxAttachment.c */, + 76F5BD671D2BDCB5005917E5 /* Event.c */, + 76F5BD681D2BDCB5005917E5 /* EventData.c */, + 76F5BD691D2BDCB5005917E5 /* extension.c */, + 76F5BD6A1D2BDCB5005917E5 /* IkConstraint.c */, + 76F5BD6B1D2BDCB5005917E5 /* IkConstraintData.c */, + 76F5BD6C1D2BDCB5005917E5 /* Json.c */, + 76F5BD6D1D2BDCB5005917E5 /* Json.h */, + 76F5BD6E1D2BDCB5005917E5 /* MeshAttachment.c */, + 76F5BD6F1D2BDCB5005917E5 /* PathAttachment.c */, + 76F5BD701D2BDCB5005917E5 /* PathConstraint.c */, + 76F5BD711D2BDCB5005917E5 /* PathConstraintData.c */, + 76F5BD721D2BDCB5005917E5 /* RegionAttachment.c */, + 76F5BD731D2BDCB5005917E5 /* Skeleton.c */, + 76F5BD741D2BDCB5005917E5 /* SkeletonBounds.c */, + 76F5BD751D2BDCB5005917E5 /* SkeletonData.c */, + 76F5BD761D2BDCB5005917E5 /* SkeletonJson.c */, + 76F5BD771D2BDCB5005917E5 /* Skin.c */, + 76F5BD781D2BDCB5005917E5 /* Slot.c */, + 76F5BD791D2BDCB5005917E5 /* SlotData.c */, + 76F5BD7A1D2BDCB5005917E5 /* TransformConstraint.c */, + 76F5BD7B1D2BDCB5005917E5 /* TransformConstraintData.c */, + 76F5BD7C1D2BDCB5005917E5 /* VertexAttachment.c */, ); name = "spine-c"; sourceTree = ""; @@ -347,6 +322,12 @@ 43C32867170B0C7F004A9460 /* Resources */ = { isa = PBXGroup; children = ( + 76F5BD9C1D2BDE1C005917E5 /* raptor.atlas */, + 76F5BD9D1D2BDE1C005917E5 /* raptor.json */, + 76F5BD9E1D2BDE1C005917E5 /* raptor.png */, + 76F5BD9F1D2BDE1C005917E5 /* tank.atlas */, + 76F5BDA01D2BDE1C005917E5 /* tank.json */, + 76F5BDA11D2BDE1C005917E5 /* tank.png */, 43F7010C1927FBC700CA4038 /* goblins-mesh.atlas */, 43F7010D1927FBC700CA4038 /* goblins-mesh.json */, 43F7010E1927FBC700CA4038 /* goblins-mesh.png */, @@ -512,19 +493,25 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( + 76F5BDA51D2BDE1C005917E5 /* tank.atlas in Resources */, 43C3286C170B0DA6004A9460 /* spineboy.json in Resources */, 43C3286E170B0DA6004A9460 /* spineboy.atlas in Resources */, 43C3286F170B0DA6004A9460 /* spineboy.png in Resources */, 43C3287D170B0DBE004A9460 /* Default-568h@2x.png in Resources */, 43C3287E170B0DBE004A9460 /* Default-Landscape~ipad.png in Resources */, 43C3287F170B0DBE004A9460 /* Default.png in Resources */, + 76F5BDA31D2BDE1C005917E5 /* raptor.json in Resources */, 43C32880170B0DBE004A9460 /* Default@2x.png in Resources */, 43C32881170B0DBE004A9460 /* Icon-72.png in Resources */, + 76F5BDA41D2BDE1C005917E5 /* raptor.png in Resources */, 43C32882170B0DBE004A9460 /* Icon-Small-50.png in Resources */, + 76F5BDA21D2BDE1C005917E5 /* raptor.atlas in Resources */, 43C32883170B0DBE004A9460 /* Icon-Small.png in Resources */, 43C32884170B0DBE004A9460 /* Icon-Small@2x.png in Resources */, 43C32885170B0DBE004A9460 /* Icon.png in Resources */, + 76F5BDA71D2BDE1C005917E5 /* tank.png in Resources */, 43C32886170B0DBE004A9460 /* Icon@2x.png in Resources */, + 76F5BDA61D2BDE1C005917E5 /* tank.json in Resources */, 43C32888170B0DBE004A9460 /* iTunesArtwork in Resources */, 43F7010F1927FBC700CA4038 /* goblins-mesh.atlas in Resources */, 43F701101927FBC700CA4038 /* goblins-mesh.json in Resources */, @@ -539,41 +526,46 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + 76F5BDAA1D2BDE67005917E5 /* RaptorExample.m in Sources */, + 76F5BD8E1D2BDCB5005917E5 /* PathAttachment.c in Sources */, + 76F5BDAD1D2BDFA2005917E5 /* TankExample.m in Sources */, + 76F5BD931D2BDCB5005917E5 /* SkeletonBounds.c in Sources */, + 76F5BD871D2BDCB5005917E5 /* Event.c in Sources */, + 76F5BD8C1D2BDCB5005917E5 /* Json.c in Sources */, + 76F5BD891D2BDCB5005917E5 /* extension.c in Sources */, + 76F5BD881D2BDCB5005917E5 /* EventData.c in Sources */, + 76F5BD7F1D2BDCB5005917E5 /* AnimationStateData.c in Sources */, + 76F5BD8B1D2BDCB5005917E5 /* IkConstraintData.c in Sources */, + 76F5BD831D2BDCB5005917E5 /* AttachmentLoader.c in Sources */, + 76F5BD9A1D2BDCB5005917E5 /* TransformConstraintData.c in Sources */, + 76F5BD971D2BDCB5005917E5 /* Slot.c in Sources */, + 76F5BD861D2BDCB5005917E5 /* BoundingBoxAttachment.c in Sources */, + 76F5BD9B1D2BDCB5005917E5 /* VertexAttachment.c in Sources */, 43C3282F170B0C19004A9460 /* spine-cocos2d-objc.m in Sources */, + 76F5BD821D2BDCB5005917E5 /* Attachment.c in Sources */, + 76F5BD801D2BDCB5005917E5 /* Atlas.c in Sources */, + 76F5BD911D2BDCB5005917E5 /* RegionAttachment.c in Sources */, 43C32A06170B0F93004A9460 /* main.m in Sources */, + 76F5BD8F1D2BDCB5005917E5 /* PathConstraint.c in Sources */, 43C32A09170B10FF004A9460 /* AppDelegate.m in Sources */, - 43F7FF511927F91900CA4038 /* Animation.c in Sources */, - 43F7FF521927F91900CA4038 /* AnimationState.c in Sources */, - 43F7FF531927F91900CA4038 /* AnimationStateData.c in Sources */, - 43F7FF541927F91900CA4038 /* Atlas.c in Sources */, - 43F7FF551927F91900CA4038 /* AtlasAttachmentLoader.c in Sources */, - 43F7FF561927F91900CA4038 /* Attachment.c in Sources */, - 43F7FF571927F91900CA4038 /* AttachmentLoader.c in Sources */, - 43F7FF581927F91900CA4038 /* Bone.c in Sources */, - 43F7FF591927F91900CA4038 /* BoneData.c in Sources */, - 43F7FF5A1927F91900CA4038 /* BoundingBoxAttachment.c in Sources */, - 43F7FF5B1927F91900CA4038 /* Event.c in Sources */, - 43F7FF5C1927F91900CA4038 /* EventData.c in Sources */, - 43B7CC0A19DC4ACD0031321C /* IkConstraintData.c in Sources */, - 43F7FF5D1927F91900CA4038 /* extension.c in Sources */, - 43F7FF5E1927F91900CA4038 /* Json.c in Sources */, - 43F7FF5F1927F91900CA4038 /* MeshAttachment.c in Sources */, - 43F7FF601927F91900CA4038 /* RegionAttachment.c in Sources */, - 431FF7F51C735D8D00D52DF2 /* WeightedMeshAttachment.c in Sources */, - 43F7FF611927F91900CA4038 /* Skeleton.c in Sources */, - 43F7FF621927F91900CA4038 /* SkeletonBounds.c in Sources */, - 43F7FF631927F91900CA4038 /* SkeletonData.c in Sources */, - 43F7FF641927F91900CA4038 /* SkeletonJson.c in Sources */, - 43F7FF651927F91900CA4038 /* Skin.c in Sources */, - 43B7CC0919DC4ACD0031321C /* IkConstraint.c in Sources */, - 43F7FF671927F91900CA4038 /* Slot.c in Sources */, - 43F7FF681927F91900CA4038 /* SlotData.c in Sources */, + 76F5BD981D2BDCB5005917E5 /* SlotData.c in Sources */, + 76F5BD7E1D2BDCB5005917E5 /* AnimationState.c in Sources */, 43F7FF881927F94800CA4038 /* SkeletonAnimation.m in Sources */, + 76F5BD851D2BDCB5005917E5 /* BoneData.c in Sources */, + 76F5BD7D1D2BDCB5005917E5 /* Animation.c in Sources */, + 76F5BD841D2BDCB5005917E5 /* Bone.c in Sources */, + 76F5BD901D2BDCB5005917E5 /* PathConstraintData.c in Sources */, 43F7FF891927F94800CA4038 /* SkeletonRenderer.m in Sources */, + 76F5BD921D2BDCB5005917E5 /* Skeleton.c in Sources */, + 76F5BD811D2BDCB5005917E5 /* AtlasAttachmentLoader.c in Sources */, + 76F5BD961D2BDCB5005917E5 /* Skin.c in Sources */, 43F7FF8E1927F96700CA4038 /* GoblinsExample.m in Sources */, - 431FF7F41C735D8D00D52DF2 /* TransformConstraintData.c in Sources */, + 76F5BD941D2BDCB5005917E5 /* SkeletonData.c in Sources */, + 76F5BD8A1D2BDCB5005917E5 /* IkConstraint.c in Sources */, 43F7FF8F1927F96700CA4038 /* SpineboyExample.m in Sources */, - 431FF7F31C735D8D00D52DF2 /* TransformConstraint.c in Sources */, + 76F5BD951D2BDCB5005917E5 /* SkeletonJson.c in Sources */, + 76F5BD8D1D2BDCB5005917E5 /* MeshAttachment.c in Sources */, + 76F5BD991D2BDCB5005917E5 /* TransformConstraint.c in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/spine-cocos2d-objc/src/spine/SkeletonRenderer.h b/spine-cocos2d-objc/src/spine/SkeletonRenderer.h index 05c58deb5..181b47bf0 100644 --- a/spine-cocos2d-objc/src/spine/SkeletonRenderer.h +++ b/spine-cocos2d-objc/src/spine/SkeletonRenderer.h @@ -57,7 +57,6 @@ - (CCTexture*) getTextureForRegion:(spRegionAttachment*)attachment; - (CCTexture*) getTextureForMesh:(spMeshAttachment*)attachment; -- (CCTexture*) getTextureForWeightedMesh:(spWeightedMeshAttachment*)attachment; // --- Convenience methods for common Skeleton_* functions. - (void) updateWorldTransform; diff --git a/spine-cocos2d-objc/src/spine/SkeletonRenderer.m b/spine-cocos2d-objc/src/spine/SkeletonRenderer.m index 9341af324..41eddfc38 100644 --- a/spine-cocos2d-objc/src/spine/SkeletonRenderer.m +++ b/spine-cocos2d-objc/src/spine/SkeletonRenderer.m @@ -174,21 +174,7 @@ static const unsigned short quadTriangles[6] = {0, 1, 2, 2, 3, 0}; spMeshAttachment_computeWorldVertices(attachment, slot, _worldVertices); texture = [self getTextureForMesh:attachment]; uvs = attachment->uvs; - verticesCount = attachment->verticesCount; - triangles = attachment->triangles; - trianglesCount = attachment->trianglesCount; - r = attachment->r; - g = attachment->g; - b = attachment->b; - a = attachment->a; - break; - } - case SP_ATTACHMENT_WEIGHTED_MESH: { - spWeightedMeshAttachment* attachment = (spWeightedMeshAttachment*)slot->attachment; - spWeightedMeshAttachment_computeWorldVertices(attachment, slot, _worldVertices); - texture = [self getTextureForWeightedMesh:attachment]; - uvs = attachment->uvs; - verticesCount = attachment->uvsCount; + verticesCount = attachment->super.worldVerticesLength; triangles = attachment->triangles; trianglesCount = attachment->trianglesCount; r = attachment->r; @@ -288,10 +274,6 @@ static const unsigned short quadTriangles[6] = {0, 1, 2, 2, 3, 0}; return (CCTexture*)((spAtlasRegion*)attachment->rendererObject)->page->rendererObject; } -- (CCTexture*) getTextureForWeightedMesh:(spWeightedMeshAttachment*)attachment { - return (CCTexture*)((spAtlasRegion*)attachment->rendererObject)->page->rendererObject; -} - - (CGRect) boundingBox { float minX = FLT_MAX, minY = FLT_MAX, maxX = FLT_MIN, maxY = FLT_MIN; float scaleX = self.scaleX, scaleY = self.scaleY; @@ -306,11 +288,7 @@ static const unsigned short quadTriangles[6] = {0, 1, 2, 2, 3, 0}; } else if (slot->attachment->type == SP_ATTACHMENT_MESH) { spMeshAttachment* mesh = (spMeshAttachment*)slot->attachment; spMeshAttachment_computeWorldVertices(mesh, slot, _worldVertices); - verticesCount = mesh->verticesCount; - } else if (slot->attachment->type == SP_ATTACHMENT_WEIGHTED_MESH) { - spWeightedMeshAttachment* mesh = (spWeightedMeshAttachment*)slot->attachment; - spWeightedMeshAttachment_computeWorldVertices(mesh, slot, _worldVertices); - verticesCount = mesh->uvsCount; + verticesCount = mesh->super.worldVerticesLength; } else continue; for (int ii = 0; ii < verticesCount; ii += 2) { diff --git a/spine-cocos2dx/CMakeLists.txt b/spine-cocos2dx/CMakeLists.txt index f491a0380..806a736f7 100644 --- a/spine-cocos2dx/CMakeLists.txt +++ b/spine-cocos2dx/CMakeLists.txt @@ -1,3 +1,4 @@ +cmake_minimum_required(VERSION 2.8) set(EXAMPLE_DIR "${CMAKE_CURRENT_LIST_DIR}/example") if (NOT EXISTS ${EXAMPLE_DIR}/cocos2d) message("Downloading cocos2dx, this may take some time!") diff --git a/spine-cocos2dx/README.md b/spine-cocos2dx/README.md index a032a783a..1f30a1a54 100644 --- a/spine-cocos2dx/README.md +++ b/spine-cocos2dx/README.md @@ -10,7 +10,7 @@ The Spine Runtimes are developed with the intent to be used with data exported f ## Spine version -spine-cocos2dx works with data exported from Spine version 3.2.01. +spine-cocos2dx works with data exported from Spine version 3.3.07. spine-cocos2dx supports all Spine features. @@ -40,6 +40,7 @@ The Spine cocos2d-x example works on Windows and Mac OS X. 7. Click `Configure`. This will download the cocos2d-x dependency and wire it up with the example source code in `spine-runtimes/spine-cocos2dx/example`. The download is 400mb, so get yourself a cup of tea. 8. Open the `spine-runtimes/spine-cocos2dx/example/proj.win32/spine-cocos2d-x.sln` file in Visual Studio 2015. Visual Studio may ask you to install the Windows XP/7 SDK, which you should install. 9. Expand the cocos2d_libs sub project and delete the `editor-support/spine` group. This will remove the outdated Spine cocos2d-x runtime shipped by cocos2d-x from your build. +9. Expand `References` of the cocos2d_libs sub project, and remove the entry for `libSpine`, which should be marked with an error. 9. Right click the `spine-cocos2d-x` project in the solution explorer and select `Set as Startup Project` from the context menu 10. Click `Local Windows Debugger` to run the example @@ -51,7 +52,7 @@ The Spine cocos2d-x example works on Windows and Mac OS X. 4. Open a terminal, and `cd` into the `spine-runtimes/spine-cocos2dx` folder 5. Type `mkdir build && cd build && cmake ../..`. This will download the cocos2d-x dependency and wire it up with the example source code in `spine-runtimes/spine-cocos2dx/example`. The download is 400mb, so get yourself a cup of tea. 6. Open the Xcode project in `spine-runtimes/spine-cocos2dx/example/proj.ios_mac` -7. Expand the `cocos2d_libs.xcodeproj` sub project, delete the group `editor-support/spine`. This will remove the +7. Expand the `cocos2d_libs.xcodeproj` sub project, delete the group `editor-support/spine`. This will remove the outdated Spine cocos2d-x runtime shipped by cocos2d-x. 8. Click the `Run` button or type `CMD+R` to run the example ## Notes diff --git a/spine-cocos2dx/example/Classes/AppDelegate.h b/spine-cocos2dx/example/Classes/AppDelegate.h index 9b0cd0516..2bc788a6f 100644 --- a/spine-cocos2dx/example/Classes/AppDelegate.h +++ b/spine-cocos2dx/example/Classes/AppDelegate.h @@ -41,7 +41,7 @@ public: virtual bool applicationDidFinishLaunching (); virtual void applicationDidEnterBackground (); - virtual void applicationWillEnterForeground (); + virtual void applicationWillEnterForeground (); }; #endif // _APPDELEGATE_H_ diff --git a/spine-cocos2dx/example/Classes/RaptorExample.cpp b/spine-cocos2dx/example/Classes/RaptorExample.cpp index 30b5bae5b..7a62bad09 100644 --- a/spine-cocos2dx/example/Classes/RaptorExample.cpp +++ b/spine-cocos2dx/example/Classes/RaptorExample.cpp @@ -30,7 +30,7 @@ *****************************************************************************/ #include "RaptorExample.h" -#include "BatchingExample.h" +#include "TankExample.h" USING_NS_CC; using namespace spine; @@ -61,7 +61,7 @@ bool RaptorExample::init () { else if (skeletonNode->getTimeScale() == 1) skeletonNode->setTimeScale(0.3f); else - Director::getInstance()->replaceScene(BatchingExample::scene()); + Director::getInstance()->replaceScene(TankExample::scene()); return true; }; _eventDispatcher->addEventListenerWithSceneGraphPriority(listener, this); diff --git a/spine-cocos2dx/example/Classes/TankExample.cpp b/spine-cocos2dx/example/Classes/TankExample.cpp new file mode 100644 index 000000000..d1f318d74 --- /dev/null +++ b/spine-cocos2dx/example/Classes/TankExample.cpp @@ -0,0 +1,68 @@ +/****************************************************************************** + * 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. + *****************************************************************************/ + +#include "TankExample.h" +#include "BatchingExample.h" + +USING_NS_CC; +using namespace spine; + +Scene* TankExample::scene () { + Scene *scene = Scene::create(); + scene->addChild(TankExample::create()); + return scene; +} + +bool TankExample::init () { + if (!LayerColor::initWithColor(Color4B(128, 128, 128, 255))) return false; + + skeletonNode = SkeletonAnimation::createWithFile("tank.json", "tank.atlas", 0.5f); + skeletonNode->setAnimation(0, "drive", true); + + skeletonNode->setPosition(Vec2(_contentSize.width / 2 + 400, 20)); + addChild(skeletonNode); + + scheduleUpdate(); + + EventListenerTouchOneByOne* listener = EventListenerTouchOneByOne::create(); + listener->onTouchBegan = [this] (Touch* touch, Event* event) -> bool { + if (!skeletonNode->getDebugBonesEnabled()) + skeletonNode->setDebugBonesEnabled(true); + else if (skeletonNode->getTimeScale() == 1) + skeletonNode->setTimeScale(0.3f); + else + Director::getInstance()->replaceScene(BatchingExample::scene()); + return true; + }; + _eventDispatcher->addEventListenerWithSceneGraphPriority(listener, this); + + return true; +} diff --git a/spine-cocos2dx/example/Classes/TankExample.h b/spine-cocos2dx/example/Classes/TankExample.h new file mode 100644 index 000000000..eccbb413d --- /dev/null +++ b/spine-cocos2dx/example/Classes/TankExample.h @@ -0,0 +1,50 @@ +/****************************************************************************** + * 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. + *****************************************************************************/ + +#ifndef _TANKEXAMPLE_H_ +#define _TANKEXAMPLE_H_ + +#include "cocos2d.h" +#include + +class TankExample : public cocos2d::LayerColor { +public: + static cocos2d::Scene* scene (); + + CREATE_FUNC(TankExample); + + virtual bool init (); + +private: + spine::SkeletonAnimation* skeletonNode; +}; + +#endif // _TANKEXAMPLE_H_ diff --git a/spine-cocos2dx/example/Resources/common/goblins-mesh.atlas b/spine-cocos2dx/example/Resources/common/goblins-mesh.atlas new file mode 100644 index 000000000..2652027f9 --- /dev/null +++ b/spine-cocos2dx/example/Resources/common/goblins-mesh.atlas @@ -0,0 +1,293 @@ + +goblins-mesh.png +size: 512,512 +format: RGBA8888 +filter: Linear,Linear +repeat: none +dagger + rotate: false + xy: 26, 147 + size: 26, 108 + orig: 26, 108 + offset: 0, 0 + index: -1 +goblin/eyes-closed + rotate: false + xy: 329, 334 + size: 34, 12 + orig: 34, 12 + offset: 0, 0 + index: -1 +goblin/head + rotate: false + xy: 26, 355 + size: 103, 66 + orig: 103, 66 + offset: 0, 0 + index: -1 +goblin/left-arm + rotate: false + xy: 54, 142 + size: 37, 35 + orig: 37, 35 + offset: 0, 0 + index: -1 +goblin/left-foot + rotate: true + xy: 2, 69 + size: 65, 31 + orig: 65, 31 + offset: 0, 0 + index: -1 +goblin/left-hand + rotate: false + xy: 266, 332 + size: 36, 41 + orig: 36, 41 + offset: 0, 0 + index: -1 +goblin/left-lower-leg + rotate: true + xy: 273, 433 + size: 33, 70 + orig: 33, 70 + offset: 0, 0 + index: -1 +goblin/left-shoulder + rotate: false + xy: 305, 288 + size: 29, 44 + orig: 29, 44 + offset: 0, 0 + index: -1 +goblin/left-upper-leg + rotate: false + xy: 96, 280 + size: 33, 73 + orig: 33, 73 + offset: 0, 0 + index: -1 +goblin/neck + rotate: false + xy: 267, 289 + size: 36, 41 + orig: 36, 41 + offset: 0, 0 + index: -1 +goblin/pelvis + rotate: false + xy: 131, 363 + size: 62, 43 + orig: 62, 43 + offset: 0, 0 + index: -1 +goblin/right-arm + rotate: false + xy: 304, 334 + size: 23, 50 + orig: 23, 50 + offset: 0, 0 + index: -1 +goblin/right-foot + rotate: false + xy: 201, 397 + size: 63, 33 + orig: 63, 33 + offset: 0, 0 + index: -1 +goblin/right-hand + rotate: false + xy: 336, 295 + size: 36, 37 + orig: 36, 37 + offset: 0, 0 + index: -1 +goblin/right-lower-leg + rotate: true + xy: 273, 468 + size: 36, 76 + orig: 36, 76 + offset: 0, 0 + index: -1 +goblin/right-shoulder + rotate: false + xy: 196, 285 + size: 39, 45 + orig: 39, 45 + offset: 0, 0 + index: -1 +goblin/right-upper-leg + rotate: true + xy: 131, 282 + size: 34, 63 + orig: 34, 63 + offset: 0, 0 + index: -1 +goblin/torso + rotate: false + xy: 131, 408 + size: 68, 96 + orig: 68, 96 + offset: 0, 0 + index: -1 +goblin/undie-straps + rotate: true + xy: 266, 375 + size: 55, 19 + orig: 55, 19 + offset: 0, 0 + index: -1 +goblin/undies + rotate: false + xy: 429, 440 + size: 36, 29 + orig: 36, 29 + offset: 0, 0 + index: -1 +goblingirl/eyes-closed + rotate: false + xy: 96, 257 + size: 37, 21 + orig: 37, 21 + offset: 0, 0 + index: -1 +goblingirl/head + rotate: false + xy: 26, 423 + size: 103, 81 + orig: 103, 81 + offset: 0, 0 + index: -1 +goblingirl/left-arm + rotate: false + xy: 390, 434 + size: 37, 35 + orig: 37, 35 + offset: 0, 0 + index: -1 +goblingirl/left-foot + rotate: true + xy: 2, 2 + size: 65, 31 + orig: 65, 31 + offset: 0, 0 + index: -1 +goblingirl/left-hand + rotate: false + xy: 329, 348 + size: 35, 40 + orig: 35, 40 + offset: 0, 0 + index: -1 +goblingirl/left-lower-leg + rotate: true + xy: 351, 471 + size: 33, 70 + orig: 33, 70 + offset: 0, 0 + index: -1 +goblingirl/left-shoulder + rotate: false + xy: 237, 284 + size: 28, 46 + orig: 28, 46 + offset: 0, 0 + index: -1 +goblingirl/left-upper-leg + rotate: true + xy: 423, 471 + size: 33, 70 + orig: 33, 70 + offset: 0, 0 + index: -1 +goblingirl/neck + rotate: false + xy: 328, 390 + size: 35, 41 + orig: 35, 41 + offset: 0, 0 + index: -1 +goblingirl/pelvis + rotate: false + xy: 131, 318 + size: 62, 43 + orig: 62, 43 + offset: 0, 0 + index: -1 +goblingirl/right-arm + rotate: true + xy: 135, 252 + size: 28, 50 + orig: 28, 50 + offset: 0, 0 + index: -1 +goblingirl/right-foot + rotate: true + xy: 231, 332 + size: 63, 33 + orig: 63, 33 + offset: 0, 0 + index: -1 +goblingirl/right-hand + rotate: true + xy: 351, 433 + size: 36, 37 + orig: 36, 37 + offset: 0, 0 + index: -1 +goblingirl/right-lower-leg + rotate: false + xy: 54, 179 + size: 36, 76 + orig: 36, 76 + offset: 0, 0 + index: -1 +goblingirl/right-shoulder + rotate: false + xy: 287, 386 + size: 39, 45 + orig: 39, 45 + offset: 0, 0 + index: -1 +goblingirl/right-upper-leg + rotate: false + xy: 195, 332 + size: 34, 63 + orig: 34, 63 + offset: 0, 0 + index: -1 +goblingirl/torso + rotate: false + xy: 26, 257 + size: 68, 96 + orig: 68, 96 + offset: 0, 0 + index: -1 +goblingirl/undie-straps + rotate: true + xy: 92, 200 + size: 55, 19 + orig: 55, 19 + offset: 0, 0 + index: -1 +goblingirl/undies + rotate: true + xy: 365, 395 + size: 36, 29 + orig: 36, 29 + offset: 0, 0 + index: -1 +shield + rotate: false + xy: 201, 432 + size: 70, 72 + orig: 70, 72 + offset: 0, 0 + index: -1 +spear + rotate: false + xy: 2, 136 + size: 22, 368 + orig: 22, 368 + offset: 0, 0 + index: -1 diff --git a/spine-cocos2dx/example/Resources/common/goblins-mesh.json b/spine-cocos2dx/example/Resources/common/goblins-mesh.json index b35360ad1..8443eee97 100644 --- a/spine-cocos2dx/example/Resources/common/goblins-mesh.json +++ b/spine-cocos2dx/example/Resources/common/goblins-mesh.json @@ -1,26 +1,27 @@ { +"skeleton": { "hash": "P7CQ4ImK+tcAICATgSttlZ5HOSM", "spine": "3.3.07", "width": 266.93, "height": 349.6, "images": "./images/" }, "bones": [ { "name": "root" }, { "name": "hip", "parent": "root", "x": 0.64, "y": 114.41 }, - { "name": "left upper leg", "parent": "hip", "length": 50.39, "x": 14.45, "y": 2.81, "rotation": -89.09 }, + { "name": "torso", "parent": "hip", "length": 85.82, "rotation": 93.92, "x": -6.42, "y": 1.97 }, + { "name": "neck", "parent": "torso", "length": 18.38, "rotation": -1.51, "x": 81.67, "y": -6.34 }, + { "name": "head", "parent": "neck", "length": 68.28, "rotation": -13.92, "x": 20.93, "y": 11.59 }, + { "name": "left shoulder", "parent": "torso", "length": 35.43, "rotation": -156.96, "x": 74.04, "y": -20.38 }, + { "name": "left arm", "parent": "left shoulder", "length": 35.62, "rotation": 28.16, "x": 37.85, "y": -2.34 }, + { "name": "left upper leg", "parent": "hip", "length": 50.39, "rotation": -89.09, "x": 14.45, "y": 2.81 }, + { "name": "left lower leg", "parent": "left upper leg", "length": 49.89, "rotation": -16.65, "x": 56.34, "y": 0.98 }, + { "name": "left foot", "parent": "left lower leg", "length": 46.5, "rotation": 102.43, "x": 58.94, "y": -7.61 }, + { "name": "left hand", "parent": "left arm", "length": 11.52, "rotation": 2.7, "x": 35.62, "y": 0.07 }, { "name": "pelvis", "parent": "hip", "x": 1.41, "y": -6.57 }, - { "name": "right upper leg", "parent": "hip", "length": 42.45, "x": -20.07, "y": -6.83, "rotation": -97.49 }, - { "name": "torso", "parent": "hip", "length": 85.82, "x": -6.42, "y": 1.97, "rotation": 93.92 }, - { "name": "left lower leg", "parent": "left upper leg", "length": 49.89, "x": 56.34, "y": 0.98, "rotation": -16.65 }, - { "name": "left shoulder", "parent": "torso", "length": 35.43, "x": 74.04, "y": -20.38, "rotation": -156.96 }, - { "name": "neck", "parent": "torso", "length": 18.38, "x": 81.67, "y": -6.34, "rotation": -1.51 }, - { "name": "right lower leg", "parent": "right upper leg", "length": 58.52, "x": 42.99, "y": -0.61, "rotation": -14.34 }, - { "name": "right shoulder", "parent": "torso", "length": 37.24, "x": 76.02, "y": 18.14, "rotation": 133.88 }, - { "name": "head", "parent": "neck", "length": 68.28, "x": 20.93, "y": 11.59, "rotation": -13.92 }, - { "name": "left arm", "parent": "left shoulder", "length": 35.62, "x": 37.85, "y": -2.34, "rotation": 28.16 }, - { "name": "left foot", "parent": "left lower leg", "length": 46.5, "x": 58.94, "y": -7.61, "rotation": 102.43 }, - { "name": "right arm", "parent": "right shoulder", "length": 36.74, "x": 37.6, "y": 0.31, "rotation": 36.32 }, - { "name": "right foot", "parent": "right lower leg", "length": 45.45, "x": 64.88, "y": 0.04, "rotation": 110.3 }, - { "name": "left hand", "parent": "left arm", "length": 11.52, "x": 35.62, "y": 0.07, "rotation": 2.7 }, - { "name": "right hand", "parent": "right arm", "length": 15.32, "x": 36.9, "y": 0.34, "rotation": 2.35 }, - { "name": "spear1", "parent": "left hand", "length": 65.06, "x": 0.48, "y": 17.03, "rotation": 102.43 }, - { "name": "spear2", "parent": "spear1", "length": 61.41, "x": 65.05, "y": 0.04, "rotation": 0.9 }, - { "name": "spear3", "parent": "spear2", "length": 76.79, "x": 61.88, "y": 0.57, "rotation": -0.9 } + { "name": "right shoulder", "parent": "torso", "length": 37.24, "rotation": 133.88, "x": 76.02, "y": 18.14 }, + { "name": "right arm", "parent": "right shoulder", "length": 36.74, "rotation": 36.32, "x": 37.6, "y": 0.31 }, + { "name": "right upper leg", "parent": "hip", "length": 42.45, "rotation": -97.49, "x": -20.07, "y": -6.83 }, + { "name": "right lower leg", "parent": "right upper leg", "length": 58.52, "rotation": -14.34, "x": 42.99, "y": -0.61 }, + { "name": "right foot", "parent": "right lower leg", "length": 45.45, "rotation": 110.3, "x": 64.88, "y": 0.04 }, + { "name": "right hand", "parent": "right arm", "length": 15.32, "rotation": 2.35, "x": 36.9, "y": 0.34 }, + { "name": "spear1", "parent": "left hand", "length": 65.06, "rotation": 102.43, "x": 0.48, "y": 17.03 }, + { "name": "spear2", "parent": "spear1", "length": 61.41, "rotation": 0.9, "x": 65.05, "y": 0.04 }, + { "name": "spear3", "parent": "spear2", "length": 76.79, "rotation": -0.9, "x": 61.88, "y": 0.57 } ], "slots": [ { "name": "left shoulder", "bone": "left shoulder", "attachment": "left shoulder" }, @@ -52,12 +53,12 @@ "left hand item": { "dagger": { "x": 7.88, "y": -23.45, "rotation": 10.47, "width": 26, "height": 108 }, "spear": { - "type": "skinnedmesh", + "type": "mesh", "uvs": [ 1, 0.11236, 0.77096, 0.13278, 0.76608, 0.21781, 0.75642, 0.386, 0.74723, 0.54607, 0.72117, 1, 0.28838, 1, 0.24208, 0.54327, 0.22589, 0.38361, 0.2089, 0.21605, 0.20043, 0.13242, 0, 0.11519, 0.4527, 0, 0.58399, 0 ], - "triangles": [ 5, 6, 4, 6, 7, 4, 4, 7, 3, 2, 9, 1, 9, 10, 1, 10, 12, 1, 12, 13, 1, 1, 13, 0, 10, 11, 12, 3, 8, 2, 8, 9, 2, 7, 8, 3 ], - "vertices": [ 1, 20, 38.54, -10.88, 1, 1, 20, 30.97, -5.93, 1, 2, 19, 61.48, -5.58, 0.51, 20, -0.31, -6.16, 0.48, 2, 18, 64.73, -5.03, 0.5, 19, -0.4, -5.06, 0.49, 1, 16, 4.56, 23.91, 1, 1, 16, 41.7, -138.95, 1, 1, 16, 32.42, -141.1, 1, 1, 16, -6.49, 22.4, 1, 2, 18, 65.48, 6.64, 0.5, 19, 0.53, 6.59, 0.49, 2, 19, 62.18, 6.66, 0.51, 20, 0.2, 6.09, 0.48, 1, 20, 30.96, 6.61, 1, 1, 20, 37.26, 11.09, 1, 1, 20, 79.75, 1.59, 1, 1, 20, 79.78, -1.29, 1 ], - "edges": [ 24, 22, 22, 20, 10, 12, 2, 0, 24, 26, 0, 26, 8, 10, 12, 14, 6, 8, 14, 16, 2, 4, 4, 6, 16, 18, 18, 20, 20, 2 ], + "triangles": [ 4, 7, 3, 6, 7, 4, 5, 6, 4, 10, 11, 12, 1, 13, 0, 12, 13, 1, 10, 12, 1, 9, 10, 1, 2, 9, 1, 8, 9, 2, 3, 8, 2, 7, 8, 3 ], + "vertices": [ 1, 20, 38.54, -10.88, 1, 1, 20, 30.97, -5.93, 1, 2, 19, 61.48, -5.58, 0.5116, 20, -0.31, -6.16, 0.48839, 2, 18, 64.73, -5.03, 0.50272, 19, -0.4, -5.06, 0.49728, 1, 10, 4.56, 23.91, 1, 1, 10, 41.7, -138.95, 1, 1, 10, 32.41999, -141.1, 1, 1, 10, -6.49, 22.4, 1, 2, 18, 65.48, 6.64, 0.50272, 19, 0.52999, 6.59, 0.49728, 2, 19, 62.18, 6.66, 0.5116, 20, 0.2, 6.09, 0.48839, 1, 20, 30.96, 6.61, 1, 1, 20, 37.25999, 11.09, 1, 1, 20, 79.75, 1.59, 1, 1, 20, 79.78, -1.29, 1 ], "hull": 14, + "edges": [ 24, 22, 22, 20, 10, 12, 2, 0, 24, 26, 0, 26, 8, 10, 12, 14, 6, 8, 14, 16, 2, 4, 4, 6, 16, 18, 18, 20, 20, 2 ], "width": 22, "height": 368 } @@ -68,8 +69,8 @@ "uvs": [ 0.78091, 0.38453, 1, 0.38405, 1, 0.44881, 0.73953, 0.4687, 0.74641, 0.81344, 0.34022, 1, 0.15434, 1, 0.11303, 0.78858, 0.23007, 0.47367, 0, 0.45047, 0, 0.38621, 0.22367, 0.38573, 0.24384, 0, 1, 0 ], "triangles": [ 0, 12, 13, 11, 12, 0, 0, 1, 2, 9, 10, 11, 3, 11, 0, 3, 0, 2, 8, 11, 3, 9, 11, 8, 5, 6, 7, 4, 5, 8, 4, 8, 3, 5, 7, 8 ], "vertices": [ 15.49, -12.82, 21.13, -13.57, 20.16, -20.49, 13.15, -21.67, 8.13, -58.56, -5.13, -77.04, -9.92, -76.36, -7.79, -53.6, -0.03, -20.36, -5.6, -17.04, -4.63, -10.17, 1.12, -10.93, 7.46, 30.24, 26.93, 27.49 ], - "edges": [ 22, 20, 24, 26, 22, 24, 2, 0, 0, 22, 0, 26, 12, 14, 14, 16, 18, 20, 16, 18, 2, 4, 4, 6, 6, 8, 10, 12, 8, 10 ], "hull": 14, + "edges": [ 22, 20, 24, 26, 22, 24, 2, 0, 0, 22, 0, 26, 12, 14, 14, 16, 18, 20, 16, 18, 2, 4, 4, 6, 6, 8, 10, 12, 8, 10 ], "width": 26, "height": 108 } @@ -87,10 +88,10 @@ "name": "goblin/head", "type": "mesh", "uvs": [ 0, 0.60494, 0.14172, 0.5145, 0.24218, 0.55229, 0.32667, 0.67806, 0.37969, 0.79352, 0.53505, 0.93014, 0.86056, 1, 0.94071, 0.94169, 0.92098, 0.69923, 0.9888, 0.65497, 0.99003, 0.51643, 0.89632, 0.43561, 0.94487, 0.41916, 1, 0.39713, 1, 0.2836, 0.94017, 0.27027, 0.87906, 0.25666, 0.80754, 0.16044, 0.66698, 0.01997, 0.4734, 0.01805, 0.29215, 0.19893, 0.25392, 0.31823, 0.09117, 0.324, 0, 0.44331, 0.43271, 0.69153, 0.466, 0.47794, 0.35996, 0.31246, 0.73473, 0.68593, 0.72215, 0.57425, 0.88179, 0.5583, 0.80267, 0.51015 ], - "triangles": [ 26, 20, 19, 21, 20, 26, 15, 14, 13, 12, 15, 13, 11, 16, 15, 11, 15, 12, 26, 17, 25, 18, 26, 19, 17, 26, 18, 30, 25, 17, 30, 17, 16, 30, 16, 11, 1, 22, 21, 23, 22, 1, 2, 1, 21, 2, 21, 26, 29, 30, 11, 29, 11, 10, 28, 25, 30, 0, 23, 1, 9, 29, 10, 25, 3, 2, 25, 2, 26, 29, 27, 28, 29, 28, 30, 24, 3, 25, 24, 25, 28, 24, 28, 27, 8, 29, 9, 27, 29, 8, 4, 3, 24, 5, 24, 27, 4, 24, 5, 7, 6, 27, 7, 27, 8, 5, 27, 6 ], - "vertices": [ 14.56, 50.42, 23.12, 35.47, 17.46, 26.36, 11.57, 16.86, 3.74, 11.71, -5.89, -3.91, -11.83, -37.23, -8.31, -45.63, 7.75, -44.24, 10.39, -51.33, 19.52, -51.82, 25.21, -43.15, 26.12, -47.43, 27.35, -53.16, 34.84, -53.46, 35.96, -47.33, 37.11, -41.08, 43.75, -33.97, 53.58, -19.87, 54.5, 0.03, 43.31, 19.16, 35.6, 23.41, 35.89, 40.17, 28.39, 49.87, 10.25, 5.99, 24.2, 2, 35.55, 12.48, 9.39, -25.1, 16.8, -24.31, 17.2, -40.65, 20.68, -33.02 ], - "edges": [ 0, 2, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 18, 20, 20, 22, 26, 28, 32, 34, 34, 36, 36, 38, 38, 40, 40, 42, 42, 44, 44, 46, 0, 46, 6, 48, 48, 50, 50, 52, 52, 42, 2, 4, 4, 6, 4, 52, 2, 44, 22, 32, 22, 24, 24, 26, 28, 30, 30, 32, 24, 30, 16, 54, 54, 56, 20, 58, 58, 54, 16, 58, 22, 60, 60, 56, 58, 60 ], + "triangles": [ 5, 27, 6, 7, 27, 8, 7, 6, 27, 4, 24, 5, 5, 24, 27, 4, 3, 24, 27, 29, 8, 8, 29, 9, 24, 28, 27, 24, 25, 28, 24, 3, 25, 29, 28, 30, 29, 27, 28, 25, 2, 26, 25, 3, 2, 9, 29, 10, 0, 23, 1, 28, 25, 30, 29, 11, 10, 29, 30, 11, 2, 21, 26, 2, 1, 21, 23, 22, 1, 1, 22, 21, 30, 16, 11, 30, 17, 16, 30, 25, 17, 17, 26, 18, 18, 26, 19, 26, 17, 25, 11, 15, 12, 11, 16, 15, 12, 15, 13, 15, 14, 13, 21, 20, 26, 26, 20, 19 ], + "vertices": [ 14.56, 50.42, 23.12, 35.47, 17.45999, 26.36, 11.57, 16.86, 3.74, 11.71, -5.89, -3.91, -11.83, -37.23, -8.31, -45.63, 7.75, -44.24, 10.39, -51.33, 19.52, -51.82, 25.21, -43.15, 26.12, -47.43, 27.35, -53.16, 34.84, -53.46, 35.96, -47.33, 37.11, -41.08, 43.75, -33.97, 53.58, -19.87, 54.5, 0.03, 43.31, 19.16, 35.59999, 23.41, 35.89, 40.16999, 28.39, 49.87, 10.25, 5.99, 24.2, 2, 35.55, 12.48, 9.39, -25.1, 16.79999, -24.31, 17.2, -40.65, 20.68, -33.02 ], "hull": 24, + "edges": [ 0, 2, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 18, 20, 20, 22, 26, 28, 32, 34, 34, 36, 36, 38, 38, 40, 40, 42, 42, 44, 44, 46, 0, 46, 6, 48, 48, 50, 50, 52, 52, 42, 2, 4, 4, 6, 4, 52, 2, 44, 22, 32, 22, 24, 24, 26, 28, 30, 30, 32, 24, 30, 16, 54, 54, 56, 20, 58, 58, 54, 16, 58, 22, 60, 60, 56, 58, 60 ], "width": 103, "height": 66 } @@ -100,10 +101,10 @@ "name": "goblin/left-arm", "type": "mesh", "uvs": [ 0.68992, 0.29284, 1, 0.46364, 1, 0.74643, 0.84089, 1, 0.66344, 1, 0.33765, 0.64284, 0, 0.44124, 0, 0, 0.34295, 0 ], - "triangles": [ 6, 7, 8, 5, 6, 8, 0, 5, 8, 0, 1, 2, 5, 0, 2, 4, 5, 2, 3, 4, 2 ], - "vertices": [ 18.6, 8.81, 32.19, 10.31, 38.02, 1.62, 38.08, -9.63, 32.31, -13.49, 14.37, -9.62, -0.75, -10.78, -9.84, 2.77, 1.29, 10.25 ], - "edges": [ 14, 16, 16, 0, 0, 2, 2, 4, 6, 4, 6, 8, 8, 10, 12, 14, 10, 12 ], + "triangles": [ 3, 4, 2, 4, 5, 2, 5, 0, 2, 0, 1, 2, 0, 5, 8, 5, 6, 8, 6, 7, 8 ], + "vertices": [ 18.6, 8.81, 32.18999, 10.31, 38.02, 1.62, 38.08, -9.63, 32.31, -13.49, 14.37, -9.62, -0.75, -10.78, -9.84, 2.77, 1.29, 10.25 ], "hull": 9, + "edges": [ 14, 16, 16, 0, 0, 2, 2, 4, 6, 4, 6, 8, 8, 10, 12, 14, 10, 12 ], "width": 37, "height": 35 } @@ -115,8 +116,8 @@ "uvs": [ 0.15733, 0.31873, 0.08195, 0.78502, 0.15884, 0.99366, 0.41633, 0.96804, 0.68822, 0.97636, 1, 0.96388, 0.99385, 0.73501, 0.85294, 0.51862, 0.61479, 0.31056, 0.46991, 0, 0.48032, 0.75604, 0.75994, 0.77706 ], "triangles": [ 0, 9, 8, 10, 0, 8, 10, 8, 7, 11, 10, 7, 11, 7, 6, 1, 0, 10, 11, 6, 5, 3, 1, 10, 4, 10, 11, 4, 11, 5, 3, 10, 4, 2, 1, 3 ], "vertices": [ 2.28, 13.07, -1.76, -1.64, 3.59, -7.8, 20.25, -6.04, 37.91, -5.27, 58.12, -3.71, 57.31, 3.34, 47.78, 9.51, 31.95, 15.05, 21.99, 24.11, 24.03, 0.75, 42.21, 1.16 ], - "edges": [ 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 0, 18, 6, 20, 20, 16, 2, 20, 8, 22, 22, 14, 20, 22, 22, 10 ], "hull": 10, + "edges": [ 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 0, 18, 6, 20, 20, 16, 2, 20, 8, 22, 22, 14, 20, 22, 22, 10 ], "width": 65, "height": 31 } @@ -127,9 +128,9 @@ "type": "mesh", "uvs": [ 0.518, 0.12578, 1, 0.16285, 0.99788, 0.50578, 0.69745, 1, 0.37445, 1, 0, 0.80051, 0, 0.42792, 0.17601, 0, 0.43567, 0 ], "triangles": [ 2, 0, 1, 0, 5, 6, 6, 7, 0, 0, 7, 8, 3, 4, 0, 4, 5, 0, 2, 3, 0 ], - "vertices": [ -3.11, 15.42, 10.83, 22.27, 15.5, 14.55, 18.35, -8.96, 9.48, -14.32, -4.58, -14.3, -11.63, -2.63, -14.89, 13.68, -7.75, 17.99 ], - "edges": [ 16, 0, 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 14, 16, 12, 14 ], + "vertices": [ -3.11, 15.42, 10.83, 22.27, 15.5, 14.55, 18.35, -8.96, 9.47999, -14.32, -4.58, -14.3, -11.63, -2.63, -14.89, 13.68, -7.75, 17.99 ], "hull": 9, + "edges": [ 16, 0, 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 14, 16, 12, 14 ], "width": 36, "height": 41 } @@ -140,9 +141,9 @@ "type": "mesh", "uvs": [ 0.95508, 0.20749, 0.81927, 0.65213, 0.94754, 0.77308, 0.67842, 0.97346, 0.46463, 1, 0.26845, 1, 0.04963, 0.90706, 0.2106, 0.60115, 0.07478, 0.40195, 0.18545, 0, 0.28857, 0 ], "triangles": [ 10, 8, 9, 1, 7, 10, 7, 8, 10, 0, 1, 10, 1, 4, 7, 3, 1, 2, 5, 6, 7, 7, 4, 5, 1, 3, 4 ], - "vertices": [ -0.19, 6.82, 30.97, 10.96, 37.97, 17.33, 53.88, 12.6, 57.58, 6.31, 59.34, 0.08, 55.04, -8.63, 32.99, -9.33, 20.79, -17.43, -7.27, -21.56, -8.19, -18.29 ], - "edges": [ 20, 0, 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 18, 20, 16, 18 ], + "vertices": [ -0.19, 6.82, 30.97, 10.96, 37.97, 17.33, 53.88, 12.6, 57.58, 6.31, 59.34, 0.08, 55.04, -8.63, 32.99, -9.33, 20.79, -17.43, -7.27, -21.56, -8.18999, -18.29 ], "hull": 11, + "edges": [ 20, 0, 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 18, 20, 16, 18 ], "width": 33, "height": 70 } @@ -152,10 +153,10 @@ "name": "goblin/left-shoulder", "type": "mesh", "uvs": [ 0.7377, 0.40692, 1, 0.75237, 1, 1, 0.62046, 1, 0.26184, 0.56601, 0, 0.29783, 0, 0, 0.44115, 0 ], - "triangles": [ 5, 6, 7, 4, 5, 7, 4, 7, 0, 3, 4, 0, 3, 0, 1, 3, 1, 2 ], - "vertices": [ 15.18, 5.74, 32.17, 5.32, 41.79, 0.21, 36.63, -9.5, 14.88, -9.72, 0.9, -10.89, -10.66, -4.74, -4.66, 6.54 ], - "edges": [ 12, 14, 14, 0, 4, 2, 0, 2, 4, 6, 6, 8, 10, 12, 8, 10 ], + "triangles": [ 3, 1, 2, 3, 0, 1, 3, 4, 0, 4, 7, 0, 4, 5, 7, 5, 6, 7 ], + "vertices": [ 15.18, 5.74, 32.16999, 5.32, 41.79, 0.21, 36.63, -9.5, 14.88, -9.72, 0.9, -10.89, -10.66, -4.73999, -4.66, 6.54 ], "hull": 8, + "edges": [ 12, 14, 14, 0, 4, 2, 0, 2, 4, 6, 6, 8, 10, 12, 8, 10 ], "width": 29, "height": 44 } @@ -167,8 +168,8 @@ "uvs": [ 1, 0.12167, 1, 0.54873, 0.91067, 0.78907, 0.76567, 1, 0.3087, 0.9579, 0, 0.68777, 0, 0.219, 0.51961, 0, 0.87552, 0 ], "triangles": [ 7, 8, 0, 5, 6, 7, 0, 1, 7, 4, 5, 7, 1, 4, 7, 2, 4, 1, 3, 4, 2 ], "vertices": [ 2.33, 13.06, 33.5, 12.57, 51, 9.34, 66.32, 4.31, 63, -10.71, 43.13, -20.58, 8.91, -20.04, -6.79, -2.64, -6.61, 9.1 ], - "edges": [ 10, 8, 8, 6, 6, 4, 4, 2, 10, 12, 12, 14, 14, 16, 2, 0, 16, 0 ], "hull": 9, + "edges": [ 10, 8, 8, 6, 6, 4, 4, 2, 10, 12, 12, 14, 14, 16, 2, 0, 16, 0 ], "width": 33, "height": 73 } @@ -178,10 +179,10 @@ "name": "goblin/neck", "type": "mesh", "uvs": [ 0.81967, 0.27365, 0.92101, 0.82048, 0.47134, 1, 0.15679, 0.9354, 0, 0.7556, 0.19268, 0.51833, 0.15468, 0.35706, 0, 0.21989, 0.13568, 0, 0.68878, 0, 0.70145, 0.53872 ], - "triangles": [ 6, 8, 9, 6, 9, 0, 7, 8, 6, 10, 5, 6, 0, 10, 6, 10, 0, 1, 3, 4, 5, 2, 5, 10, 2, 10, 1, 3, 5, 2 ], - "vertices": [ 18.62, -11.65, -3.98, -13.85, -10.28, 2.76, -6.91, 13.89, 0.8, 19.05, 10.06, 11.51, 16.74, 12.45, 22.71, 17.64, 31.4, 12.19, 30.12, -7.67, 8.05, -6.71 ], - "edges": [ 14, 12, 12, 10, 10, 8, 8, 6, 6, 4, 4, 2, 2, 20, 20, 0, 0, 18, 16, 18, 14, 16, 0, 2 ], + "triangles": [ 3, 5, 2, 2, 10, 1, 2, 5, 10, 3, 4, 5, 10, 0, 1, 0, 10, 6, 10, 5, 6, 7, 8, 6, 6, 9, 0, 6, 8, 9 ], + "vertices": [ 18.62, -11.65, -3.98, -13.85, -10.28, 2.76, -6.91, 13.89, 0.8, 19.04999, 10.06, 11.51, 16.74, 12.45, 22.71, 17.64, 31.4, 12.19, 30.12, -7.67, 8.05, -6.71 ], "hull": 10, + "edges": [ 14, 12, 12, 10, 10, 8, 8, 6, 6, 4, 4, 2, 2, 20, 20, 0, 0, 18, 16, 18, 14, 16, 0, 2 ], "width": 36, "height": 41 } @@ -193,8 +194,8 @@ "uvs": [ 1, 1, 0, 1, 0, 0, 1, 0 ], "triangles": [ 1, 2, 3, 1, 3, 0 ], "vertices": [ 25.38, -20.73, -36.61, -20.73, -36.61, 22.26, 25.38, 22.26 ], - "edges": [ 0, 2, 2, 4, 4, 6, 0, 6 ], "hull": 4, + "edges": [ 0, 2, 2, 4, 4, 6, 0, 6 ], "width": 62, "height": 43 } @@ -204,10 +205,10 @@ "name": "goblin/right-arm", "type": "mesh", "uvs": [ 1, 0.09223, 1, 0.8501, 0.72058, 1, 0.24384, 1, 0, 0.86558, 0.20822, 0.10919, 0.50903, 0, 0.85342, 0 ], - "triangles": [ 6, 7, 0, 2, 3, 5, 4, 5, 3, 1, 6, 0, 6, 2, 5, 1, 2, 6 ], - "vertices": [ -4.75, 8.89, 33.03, 11.74, 40.99, 5.89, 41.81, -5.03, 35.53, -11.13, -2.53, -9.2, -8.5, -2.71, -9.09, 5.18 ], - "edges": [ 8, 6, 4, 6, 4, 2, 12, 14, 2, 0, 14, 0, 10, 12, 8, 10 ], + "triangles": [ 1, 2, 6, 6, 2, 5, 1, 6, 0, 4, 5, 3, 2, 3, 5, 6, 7, 0 ], + "vertices": [ -4.75, 8.89, 33.03, 11.74, 40.99, 5.89, 41.81, -5.03, 35.53, -11.13, -2.53, -9.2, -8.5, -2.71, -9.09, 5.17999 ], "hull": 8, + "edges": [ 8, 6, 4, 6, 4, 2, 12, 14, 2, 0, 14, 0, 10, 12, 8, 10 ], "width": 23, "height": 50 } @@ -219,8 +220,8 @@ "uvs": [ 0.40851, 0.0047, 0.59087, 0.33404, 0.75959, 0.48311, 0.88907, 0.59751, 0.97532, 0.89391, 0.90385, 1, 0.6722, 1, 0.38633, 1, 0.08074, 1, 0, 0.88921, 0, 0.65984, 0, 0.46577, 0.0906, 0.0988, 0.305, 0, 0.47461, 0.71257, 0.715, 0.74681 ], "triangles": [ 1, 10, 11, 1, 13, 0, 14, 1, 2, 1, 12, 13, 12, 1, 11, 14, 10, 1, 15, 14, 2, 15, 2, 3, 9, 10, 14, 15, 3, 4, 7, 8, 9, 14, 7, 9, 6, 14, 15, 5, 6, 15, 7, 14, 6, 4, 5, 15 ], "vertices": [ 17.36, 25.99, 29.13, 15.44, 39.89, 10.8, 48.14, 7.24, 53.84, -2.38, 49.43, -6, 34.84, -6.39, 16.84, -6.87, -2.4, -7.38, -7.58, -3.86, -7.78, 3.7, -7.95, 10.1, -2.57, 22.36, 10.84, 25.97, 22.14, 2.75, 37.31, 2.03 ], - "edges": [ 0, 2, 6, 8, 8, 10, 16, 18, 22, 24, 24, 26, 0, 26, 10, 12, 2, 4, 4, 6, 12, 14, 14, 16, 18, 20, 20, 22, 2, 28, 28, 14, 20, 28, 4, 30, 30, 12, 28, 30, 30, 8 ], "hull": 14, + "edges": [ 0, 2, 6, 8, 8, 10, 16, 18, 22, 24, 24, 26, 0, 26, 10, 12, 2, 4, 4, 6, 12, 14, 14, 16, 18, 20, 20, 22, 2, 28, 28, 14, 20, 28, 4, 30, 30, 12, 28, 30, 30, 8 ], "width": 63, "height": 33 } @@ -231,9 +232,9 @@ "type": "mesh", "uvs": [ 0.17957, 0, 0, 0.44772, 0, 0.79734, 0.20057, 0.94264, 0.55057, 1, 0.8539, 1, 0.89823, 0.82004, 0.8259, 0.74285, 0.84223, 0.49993, 0.96356, 0.34102, 0.66023, 0 ], "triangles": [ 8, 10, 9, 0, 10, 1, 8, 2, 1, 8, 1, 10, 7, 3, 8, 3, 2, 8, 4, 3, 7, 5, 7, 6, 4, 7, 5 ], - "vertices": [ -10.82, -9.45, 5.95, -15.34, 18.88, -14.9, 24, -7.5, 25.69, 5.16, 25.31, 16.07, 18.61, 17.44, 15.84, 14.74, 6.84, 15.02, 0.81, 19.18, -11.41, 7.83 ], - "edges": [ 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 18, 20, 0, 20 ], + "vertices": [ -10.82, -9.45, 5.95, -15.34, 18.87999, -14.9, 24, -7.5, 25.69, 5.16, 25.31, 16.07, 18.61, 17.44, 15.84, 14.74, 6.84, 15.02, 0.81, 19.18, -11.41, 7.83 ], "hull": 11, + "edges": [ 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 18, 20, 0, 20 ], "width": 36, "height": 37 } @@ -245,8 +246,8 @@ "uvs": [ 0.88538, 0.22262, 0.76167, 0.3594, 0.75088, 0.78308, 0.95326, 0.84981, 1, 0.60302 ], "triangles": [ 1, 0, 4, 2, 1, 4, 3, 2, 4 ], "vertices": [ -2.82, 15.97, 2.4, 11.71, 18.08, 11.9, 20.27, 19.27, 11.09, 20.62 ], - "edges": [ 2, 4, 4, 6, 6, 8, 2, 0, 0, 8 ], "hull": 5, + "edges": [ 2, 4, 4, 6, 6, 8, 2, 0, 0, 8 ], "width": 36, "height": 37 } @@ -257,9 +258,9 @@ "type": "mesh", "uvs": [ 1, 0.27261, 0.81312, 0.52592, 0.79587, 0.71795, 0.95544, 0.80988, 0.85193, 0.95493, 0.47241, 1, 0.14033, 1, 0, 0.8773, 0.14896, 0.67914, 0.1619, 0.30325, 0.60611, 0 ], "triangles": [ 1, 10, 0, 9, 10, 1, 8, 9, 1, 2, 8, 1, 4, 2, 3, 6, 7, 8, 5, 6, 8, 2, 5, 8, 4, 5, 2 ], - "vertices": [ 6.26, 8.46, 23.32, 8.04, 37.1, 12.89, 41.45, 20.82, 53.07, 21.46, 61.33, 10.06, 65.77, -1.03, 58.99, -9.19, 43.02, -9.81, 16.33, -20, -12.79, -9.26 ], - "edges": [ 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 0, 20, 18, 20 ], + "vertices": [ 6.26, 8.46, 23.32, 8.04, 37.09999, 12.89, 41.45, 20.82, 53.07, 21.46, 61.33, 10.06, 65.76999, -1.03, 58.99, -9.18999, 43.02, -9.81, 16.33, -20, -12.79, -9.26 ], "hull": 11, + "edges": [ 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 0, 20, 18, 20 ], "width": 36, "height": 76 } @@ -269,10 +270,10 @@ "name": "goblin/right-shoulder", "type": "mesh", "uvs": [ 0.62008, 0.03708, 0.92131, 0.09048, 1, 0.38319, 0.72049, 0.6937, 0.31656, 1, 0, 1, 0, 0.75106, 0.28233, 0.49988 ], - "triangles": [ 2, 3, 0, 2, 0, 1, 7, 0, 3, 4, 5, 6, 4, 7, 3, 4, 6, 7 ], + "triangles": [ 4, 6, 7, 4, 7, 3, 4, 5, 6, 7, 0, 3, 2, 0, 1, 2, 3, 0 ], "vertices": [ -3.17, -11.05, -9, -0.57, -1.01, 10.33, 16.69, 11.17, 37.41, 8.2, 45.45, -1.16, 36.95, -8.46, 21.2, -7.47 ], - "edges": [ 10, 12, 12, 14, 14, 0, 0, 2, 2, 4, 4, 6, 8, 10, 6, 8 ], "hull": 8, + "edges": [ 10, 12, 12, 14, 14, 0, 0, 2, 2, 4, 4, 6, 8, 10, 6, 8 ], "width": 39, "height": 45 } @@ -283,9 +284,9 @@ "type": "mesh", "uvs": [ 0.27018, 0, 0.11618, 0.18177, 0, 0.70688, 0, 0.89577, 0.26668, 1, 0.48718, 1, 0.67618, 0.83532, 1, 0.5161, 1, 0.25543, 0.74618, 0.0571 ], "triangles": [ 9, 8, 7, 9, 1, 0, 6, 9, 7, 6, 1, 9, 2, 1, 6, 4, 3, 2, 6, 4, 2, 5, 4, 6 ], - "vertices": [ -9.85, -10.37, 2.17, -14.07, 35.49, -13.66, 47.29, -12.11, 52.61, -2.26, 51.63, 5.16, 40.51, 10.18, 19.13, 18.47, 2.85, 16.32, -8.4, 6.14 ], - "edges": [ 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 0, 18 ], + "vertices": [ -9.85, -10.37, 2.17, -14.07, 35.49, -13.66, 47.29, -12.11, 52.61, -2.26, 51.63, 5.16, 40.50999, 10.18, 19.12999, 18.46999, 2.85, 16.32, -8.39999, 6.14 ], "hull": 10, + "edges": [ 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 0, 18 ], "width": 34, "height": 63 } @@ -295,10 +296,10 @@ "name": "goblin/torso", "type": "mesh", "uvs": [ 0, 0.33287, 0.15945, 0.46488, 0.15761, 0.60314, 0.15502, 0.79806, 0.32807, 0.93478, 0.6875, 1, 0.80731, 1, 1, 0.77763, 1, 0.66147, 1, 0.56703, 0.93207, 0.4771, 0.86944, 0.39416, 0.83837, 0.226, 0.68085, 0, 0.14836, 0, 0, 0.07199, 0.78734, 0.86249, 0.43679, 0.79649, 0.76738, 0.61733, 0.44345, 0.58747, 0.54329, 0.38316, 0.77692, 0.73446, 0.66478, 0.51012 ], - "triangles": [ 0, 15, 14, 20, 14, 13, 20, 13, 12, 1, 0, 14, 20, 12, 11, 20, 1, 14, 22, 20, 11, 22, 11, 10, 19, 1, 20, 19, 20, 22, 2, 1, 19, 18, 22, 10, 18, 10, 9, 19, 22, 18, 18, 9, 8, 21, 18, 8, 21, 8, 7, 17, 2, 19, 21, 17, 19, 21, 19, 18, 3, 2, 17, 16, 21, 7, 17, 21, 16, 4, 3, 17, 5, 17, 16, 4, 17, 5, 6, 16, 7, 5, 16, 6 ], - "vertices": [ 56.93, 27.95, 43.37, 18.23, 30.16, 19.5, 11.53, 21.28, -2.55, 10.69, -10.89, -13.12, -11.59, -21.23, 8.54, -36.12, 19.65, -37.08, 28.68, -37.86, 37.68, -34, 45.98, -30.44, 56.4, -29.07, 84.78, -20.92, 87.9, 15.15, 81.88, 25.79, 1.67, -21.01, 10.03, 2.18, 25.23, -18.25, 29.98, 0, 48.54, -8.39, 13.98, -21.36, 35.9, -15.6 ], - "edges": [ 0, 2, 6, 8, 8, 10, 10, 12, 12, 14, 22, 24, 24, 26, 26, 28, 28, 30, 0, 30, 14, 32, 32, 34, 34, 6, 18, 36, 36, 38, 2, 4, 4, 6, 38, 4, 2, 40, 40, 22, 40, 38, 38, 34, 32, 10, 34, 8, 40, 28, 14, 16, 16, 18, 32, 42, 42, 36, 16, 42, 42, 34, 18, 20, 20, 22, 36, 44, 44, 40, 20, 44 ], + "triangles": [ 5, 16, 6, 6, 16, 7, 4, 17, 5, 5, 17, 16, 4, 3, 17, 17, 21, 16, 16, 21, 7, 3, 2, 17, 21, 19, 18, 21, 17, 19, 17, 2, 19, 21, 8, 7, 21, 18, 8, 18, 9, 8, 19, 22, 18, 18, 10, 9, 18, 22, 10, 2, 1, 19, 19, 20, 22, 19, 1, 20, 22, 11, 10, 22, 20, 11, 20, 1, 14, 20, 12, 11, 1, 0, 14, 20, 13, 12, 20, 14, 13, 0, 15, 14 ], + "vertices": [ 56.93, 27.95, 43.37, 18.23, 30.16, 19.5, 11.53, 21.28, -2.55, 10.69, -10.89, -13.12, -11.59, -21.23, 8.54, -36.12, 19.65, -37.08, 28.68, -37.86, 37.68, -34, 45.98, -30.44, 56.4, -29.07, 84.78, -20.92, 87.9, 15.15, 81.87999, 25.79, 1.67, -21.01, 10.03, 2.18, 25.23, -18.25, 29.98, 0, 48.54, -8.39, 13.98, -21.36, 35.9, -15.6 ], "hull": 16, + "edges": [ 0, 2, 6, 8, 8, 10, 10, 12, 12, 14, 22, 24, 24, 26, 26, 28, 28, 30, 0, 30, 14, 32, 32, 34, 34, 6, 18, 36, 36, 38, 2, 4, 4, 6, 38, 4, 2, 40, 40, 22, 40, 38, 38, 34, 32, 10, 34, 8, 40, 28, 14, 16, 16, 18, 32, 42, 42, 36, 16, 42, 42, 34, 18, 20, 20, 22, 36, 44, 44, 40, 20, 44 ], "width": 68, "height": 96 } @@ -309,9 +310,9 @@ "type": "mesh", "uvs": [ 0.36097, 0.44959, 0.66297, 0.60591, 1, 0.19486, 1, 0.57117, 0.75897, 1, 0.38697, 1, 0, 0.26433, 0, 0, 0.12497, 0 ], "triangles": [ 6, 7, 8, 6, 8, 0, 3, 1, 2, 5, 0, 1, 6, 0, 5, 4, 1, 3, 5, 1, 4 ], - "vertices": [ -10.56, 12.87, 6.53, 9.9, 25.62, 17.71, 25.62, 10.56, 11.97, 2.41, -9.09, 2.41, -31, 16.39, -31, 21.41, -23.92, 21.41 ], - "edges": [ 14, 16, 16, 0, 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 12, 14, 10, 12, 0, 10, 2, 8 ], + "vertices": [ -10.56, 12.87, 6.53, 9.89999, 25.62, 17.70999, 25.62, 10.56, 11.97, 2.41, -9.09, 2.41, -31, 16.39, -31, 21.41, -23.92, 21.41 ], "hull": 9, + "edges": [ 14, 16, 16, 0, 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 12, 14, 10, 12, 0, 10, 2, 8 ], "width": 55, "height": 19 } @@ -322,9 +323,9 @@ "type": "mesh", "uvs": [ 0, 0.32029, 0.14893, 0.59457, 0.22437, 1, 0.35909, 1, 0.50998, 1, 0.79559, 0.58453, 0.9842, 0.28015, 1, 0.00588, 0.46957, 0.17646, 0, 0.03933, 0.48843, 0.59122, 0.48114, 0.43099 ], "triangles": [ 6, 8, 7, 0, 9, 8, 11, 8, 6, 0, 8, 11, 5, 11, 6, 10, 11, 5, 1, 0, 11, 1, 11, 10, 3, 2, 1, 10, 3, 1, 4, 10, 5, 3, 10, 4 ], - "vertices": [ -13.22, 5.56, -8, -2.47, -5.49, -14.27, -0.64, -14.36, 4.78, -14.45, 15.27, -2.59, 22.22, 6.11, 22.92, 14.05, 3.75, 9.44, -13.08, 13.71, 4.21, -2.59, 4.03, 2.05 ], - "edges": [ 0, 2, 2, 4, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 0, 18, 4, 6, 6, 8, 6, 20, 16, 22, 22, 20, 0, 22, 22, 12, 2, 20, 20, 10 ], + "vertices": [ -13.22, 5.56, -8, -2.47, -5.49, -14.27, -0.64, -14.36, 4.78, -14.45, 15.27, -2.58999, 22.22, 6.11, 22.92, 14.05, 3.75, 9.43999, -13.08, 13.71, 4.21, -2.58999, 4.03, 2.05 ], "hull": 10, + "edges": [ 0, 2, 2, 4, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 0, 18, 4, 6, 6, 8, 6, 20, 16, 22, 22, 20, 0, 22, 22, 12, 2, 20, 20, 10 ], "width": 36, "height": 29 } @@ -757,7 +758,7 @@ ] } }, - "ffd": { + "deform": { "default": { "left hand item": { "spear": [ @@ -769,19 +770,19 @@ { "time": 0, "offset": 26, - "vertices": [ 2.34, 0.14 ], + "vertices": [ 2.34754, 0.14469 ], "curve": [ 0.25, 0, 0.75, 1 ] }, { "time": 0.5, "offset": 8, - "vertices": [ -1.19, 4.31, 0.07, 6.41, 1.66, 6.18, 1.75, 3.59 ], + "vertices": [ -1.19415, 4.31531, 0.07279, 6.41351, 1.66048, 6.18882, 1.75232, 3.59555 ], "curve": [ 0.25, 0, 0.75, 1 ] }, { "time": 1, "offset": 26, - "vertices": [ 2.34, 0.14 ] + "vertices": [ 2.34754, 0.14469 ] } ] } @@ -795,22 +796,22 @@ }, { "time": 0.2, - "vertices": [ -10.97, -6.68, -4.68, -2.46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.08, 0.08, -1.08, 0.08, -1.08, 0.08, 0, 0, -2.22, 2.66, -4.83, 2.7, -5.7, -0.51, -3.15, -1.61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6.64, 0.81, -11.82, -1.34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.08, 0.08 ], + "vertices": [ -10.97826, -6.68962, -4.68015, -2.46175, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.08534, 0.08391, -1.08534, 0.08391, -1.08534, 0.08391, 0, 0, -2.22324, 2.66465, -4.83295, 2.70084, -5.70553, -0.51941, -3.15962, -1.61501, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6.64741, 0.81612, -11.82285, -1.34955, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.08534, 0.08391 ], "curve": [ 0.25, 0, 0.75, 1 ] }, { "time": 0.3666, - "vertices": [ 10.69, 4.05, 3.66, 1.85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.47, 0.09, 1.47, 0.09, 1.47, 0.09, 0, 0, 2.69, -0.22, 3.77, 0.11, 3.68, 1.55, 2.49, 1.65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4.45, -3.91, 9.19, -1.66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.47, 0.09 ], + "vertices": [ 10.69275, 4.05949, 3.66373, 1.85426, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.47305, 0.09017, 1.47305, 0.09017, 1.47305, 0.09017, 0, 0, 2.69652, -0.22738, 3.77135, 0.11417, 3.6893, 1.55352, 2.49594, 1.65501, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4.4588, -3.9113, 9.19593, -1.66854, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.47305, 0.09017 ], "curve": [ 0.621, 0, 0.75, 1 ] }, { "time": 0.7, - "vertices": [ -10.97, -6.68, -4.68, -2.46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.17, -0.17, -1.17, -0.17, -1.17, -0.17, 0, 0, -2.22, 2.66, -4.83, 2.7, -5.7, -0.51, -3.15, -1.61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6.64, 0.81, -11.82, -1.34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.17, -0.17 ], + "vertices": [ -10.97826, -6.68962, -4.68015, -2.46175, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.1755, -0.17183, -1.1755, -0.17182, -1.1755, -0.17183, 0, 0, -2.22324, 2.66465, -4.83295, 2.70084, -5.70553, -0.51941, -3.15962, -1.61501, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6.64741, 0.81612, -11.82285, -1.34955, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.1755, -0.17183 ], "curve": [ 0.25, 0, 0.75, 1 ] }, { "time": 0.8666, - "vertices": [ 10.69, 4.05, 3.66, 1.85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.38, 0.08, 0.38, 0.08, 0.38, 0.08, 0, 0, 2.69, -0.22, 3.77, 0.11, 3.68, 1.55, 2.49, 1.65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4.45, -3.91, 9.19, -1.66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.38, 0.08 ], + "vertices": [ 10.69275, 4.05949, 3.66373, 1.85426, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.38687, 0.08446, 0.38687, 0.08446, 0.38687, 0.08446, 0, 0, 2.69652, -0.22738, 3.77135, 0.11417, 3.6893, 1.55352, 2.49594, 1.65501, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4.4588, -3.9113, 9.19593, -1.66854, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.38687, 0.08446 ], "curve": [ 0.25, 0, 0.75, 1 ] }, { "time": 1 } @@ -821,35 +822,35 @@ { "time": 0, "offset": 8, - "vertices": [ 3.69, 2.37, -7.16, 18.79, -12.78, 14.77, -12.75, 6.5, -3.13, 1.98, -0.44, 0.36, 0, 0, -3.8, 2.98 ] + "vertices": [ 3.69298, 2.37572, -7.16969, 18.79732, -12.78161, 14.7778, -12.75775, 6.50514, -3.13475, 1.98906, -0.44401, 0.36629, 0, 0, -3.80085, 2.98474 ] }, { "time": 0.1333 }, { "time": 0.2333, "offset": 8, - "vertices": [ -3.96, -2.34, -5.8, -12.47, -2.23, -12.99, 2.02, -9.1, 0, 0, 0, 0, 0, 0, -1.35, -5.28 ] + "vertices": [ -3.96072, -2.34594, -5.80445, -12.47629, -2.23129, -12.99037, 2.02941, -9.1036, 0, 0, 0, 0, 0, 0, -1.35254, -5.2883 ] }, { "time": 0.3666, "offset": 8, - "vertices": [ 0.66, 0.33, 0.33, 2.69, -0.48, 2.54, -1.13, 1.38, 0, 0, 0, 0, 0, 0, -0.11, 0.79 ] + "vertices": [ 0.66504, 0.33548, 0.33902, 2.69014, -0.4817, 2.54524, -1.13592, 1.38562, 0, 0, 0, 0, 0, 0, -0.11907, 0.79273 ] }, { "time": 0.5, "curve": "stepped" }, { "time": 0.6333 }, { "time": 0.7333, "offset": 8, - "vertices": [ -2.97, 9.4, -6.91, 19.92, -10.55, 18.41, -12.37, 12.38, -4.72, 6.3, 0, 0, -1.48, 4.88, -7.06, 10.7 ] + "vertices": [ -2.97737, 9.40254, -6.91661, 19.92794, -10.55287, 18.41085, -12.37161, 12.38473, -4.72606, 6.30798, 0, 0, -1.48902, 4.88944, -7.06773, 10.70101 ] }, { "time": 0.8333, "offset": 6, - "vertices": [ 1.05, 1.56, -2.52, 7.99, -5.52, 17.14, -8.93, 15.79, -10.73, 10.22, -4.23, 5.36, 0, 0, 0, 0, -5.83, 8.55 ] + "vertices": [ 1.05318, 1.56361, -2.52722, 7.9974, -5.5203, 17.14136, -8.93317, 15.79635, -10.73747, 10.22055, -4.23801, 5.36992, 0, 0, 0, 0, -5.83147, 8.55531 ] }, { "time": 1, "offset": 8, - "vertices": [ 3.69, 2.37, -7.16, 18.79, -12.78, 14.77, -12.75, 6.5, -3.13, 1.98, -0.44, 0.36, 0, 0, -3.8, 2.98 ] + "vertices": [ 3.69298, 2.37572, -7.16969, 18.79732, -12.78161, 14.7778, -12.75775, 6.50514, -3.13475, 1.98906, -0.44401, 0.36629, 0, 0, -3.80085, 2.98474 ] } ] }, @@ -859,22 +860,22 @@ { "time": 0.1333, "offset": 6, - "vertices": [ -0.68, -4.13 ] + "vertices": [ -0.68989, -4.13283 ] }, { "time": 0.3333, "offset": 6, - "vertices": [ -1.04, -3.1 ] + "vertices": [ -1.04945, -3.10476 ] }, { "time": 0.7, "offset": 6, - "vertices": [ -1.42, -6.3 ] + "vertices": [ -1.4245, -6.30616 ] }, { "time": 0.8666, "offset": 6, - "vertices": [ -1.13, -1.79 ] + "vertices": [ -1.13541, -1.79035 ] }, { "time": 1 } ] @@ -885,38 +886,38 @@ { "time": 0.1333, "offset": 2, - "vertices": [ -2.81, 2.63, -2.35, 3.89, -1.99, 4.86, -0.93, 5.57, -0.48, 5.09, -0.34, 3.42, -0.17, 1.36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.31, 1.91, -1.32, 3.65 ] + "vertices": [ -2.81258, 2.63114, -2.35238, 3.89441, -1.99921, 4.8639, -0.93273, 5.57982, -0.48886, 5.09854, -0.34812, 3.42912, -0.17445, 1.36898, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.31305, 1.91371, -1.32986, 3.65703 ] }, { "time": 0.2333, "offset": 2, - "vertices": [ -6.39, 6.41, -7.74, 8.27, -7.02, 11.35, -4.03, 13.93, -2.5, 12.62, -1.46, 7.58, -0.17, 1.36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3.84, 2.61, -4.53, 7.92 ] + "vertices": [ -6.39088, 6.41245, -7.74575, 8.27191, -7.02471, 11.35894, -4.0347, 13.93454, -2.50399, 12.62962, -1.46124, 7.58915, -0.17445, 1.36898, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3.84765, 2.61215, -4.53955, 7.92357 ] }, { "time": 0.3, "offset": 2, - "vertices": [ -8.27, 6.68, -9.29, 10.13, -8.62, 14.71, -4.58, 18.81, -2.2, 17.1, -0.07, 9.9, 2.54, 1.01, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.94, 2.38, -4.59, 10.01 ] + "vertices": [ -8.27184, 6.68821, -9.29764, 10.13797, -8.62231, 14.71339, -4.58629, 18.81939, -2.20304, 17.10709, -0.07794, 9.9046, 2.54451, 1.01642, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.94624, 2.38007, -4.59398, 10.01888 ] }, { "time": 0.3666, "offset": 2, - "vertices": [ -10.47, 9.44, -13.36, 12.4, -14.32, 16.94, -9.24, 23.55, -5.51, 21.51, -1.19, 11.53, 2.54, 1.01, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4.14, 2.29, -6.63, 11.37 ] + "vertices": [ -10.47683, 9.44175, -13.36882, 12.40982, -14.32568, 16.94392, -9.24462, 23.55674, -5.51711, 21.51377, -1.19581, 11.53192, 2.54451, 1.01642, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4.14847, 2.29389, -6.63418, 11.37127 ] }, { "time": 0.5, "offset": 2, - "vertices": [ -5.42, 4.36, -10.59, 7.04, -11.64, 11.55, -6.19, 20.12, -1.45, 18.05, 4.86, 6.41, 2.81, 0.27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.96, 4.94 ] + "vertices": [ -5.42473, 4.36854, -10.59004, 7.04468, -11.64251, 11.55845, -6.19665, 20.12805, -1.45497, 18.05411, 4.86619, 6.41678, 2.81462, 0.27601, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.96412, 4.94829 ] }, { "time": 0.6333 }, { "time": 0.7333, "offset": 4, - "vertices": [ 1.31, -6.84, -0.87, -12.54, -5.98, -14.08, -7.15, -11.63, -5.67, -4.83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.06, -6.93 ] + "vertices": [ 1.31462, -6.84099, -0.87905, -12.54479, -5.9851, -14.08367, -7.15892, -11.63193, -5.6792, -4.83544, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.06163, -6.93844 ] }, { "time": 0.8, "offset": 4, - "vertices": [ 0.65, -3.42, -0.43, -6.27, -2.99, -7.04, -3.57, -5.81, -2.83, -2.41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.79, -1.28, 0, 0, 0, 0, -1.03, -3.46 ] + "vertices": [ 0.65731, -3.42049, -0.43952, -6.27239, -2.99255, -7.04183, -3.57946, -5.81596, -2.83959, -2.41772, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.79687, -1.2802, 0, 0, 0, 0, -1.03081, -3.46922 ] }, { "time": 0.8666 } ] @@ -926,13 +927,13 @@ { "time": 0, "offset": 4, - "vertices": [ -1.48, 0.34, 0, 0, 1.31, 0.08, 1.6, 0.09, 0.13, 0.15, 0, 0, 0, 0, -0.72, -0.04 ] + "vertices": [ -1.48416, 0.34736, 0, 0, 1.31152, 0.08085, 1.60295, 0.09881, 0.13673, 0.1547, 0, 0, 0, 0, -0.72862, -0.0449 ] }, { "time": 0.5 }, { "time": 1, "offset": 4, - "vertices": [ -1.48, 0.34, 0, 0, 1.31, 0.08, 1.6, 0.09, 0.13, 0.15, 0, 0, 0, 0, -0.72, -0.04 ] + "vertices": [ -1.48416, 0.34736, 0, 0, 1.31152, 0.08085, 1.60295, 0.09881, 0.13673, 0.1547, 0, 0, 0, 0, -0.72862, -0.0449 ] } ] }, @@ -942,7 +943,7 @@ { "time": 0.6, "offset": 6, - "vertices": [ 1.8, -1.56 ] + "vertices": [ 1.80396, -1.56552 ] }, { "time": 1 } ] @@ -951,17 +952,17 @@ "right upper leg": [ { "time": 0, - "vertices": [ -6.03, -1.46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.34, -1.93, -1.86, -5.05, -2.5, -3.09 ] + "vertices": [ -6.03856, -1.46324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.34684, -1.93101, -1.86047, -5.05265, -2.5014, -3.09984 ] }, { "time": 0.3333 }, { "time": 0.8666, "offset": 14, - "vertices": [ 0.13, -2.35, -1.33, -5.99, -1.35, -4.43 ] + "vertices": [ 0.13424, -2.35377, -1.33317, -5.99572, -1.35861, -4.43323 ] }, { "time": 1, - "vertices": [ -6.03, -1.46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.34, -1.93, -1.86, -5.05, -2.5, -3.09 ] + "vertices": [ -6.03856, -1.46324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.34684, -1.93101, -1.86047, -5.05265, -2.5014, -3.09984 ] } ] }, @@ -970,37 +971,37 @@ { "time": 0, "offset": 14, - "vertices": [ -1.48, -0.24, -2.72, -2.15, -0.51, -3.39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.09, -2.61, 0, 0, 0.57, -1.24, 0, 0, 0, 0, -2.11, -3.29 ] + "vertices": [ -1.48952, -0.24021, -2.72312, -2.15489, -0.51183, -3.39752, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.0964, -2.61458, 0, 0, 0.57686, -1.24874, 0, 0, 0, 0, -2.11251, -3.29932 ] }, { "time": 0.1333, "offset": 14, - "vertices": [ 1.31, -0.59, -0.97, -1.62, 0.74, -0.61, -1.44, 1.97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.65, -3.95, 0, 0, -1.46, -0.31, 0, 0, 0, 0, -3.31, -3.55, -2.56, 0.29 ] + "vertices": [ 1.31318, -0.59727, -0.97944, -1.62934, 0.74861, -0.6123, -1.44598, 1.97515, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.65701, -3.95221, 0, 0, -1.46987, -0.31373, 0, 0, 0, 0, -3.31756, -3.5535, -2.56329, 0.29673 ] }, { "time": 0.3, "offset": 14, - "vertices": [ 6.03, -3.13, 7.55, -1.38, 6.79, 0.31, 4.23, 1.14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4.07, -5.16, 0, 0, 4, 0.27, 0, 0, 0, 0, 3.43, -3.52 ] + "vertices": [ 6.03761, -3.13561, 7.55475, -1.38111, 6.79747, 0.31171, 4.23503, 1.14012, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4.07575, -5.16824, 0, 0, 4.0041, 0.27245, 0, 0, 0, 0, 3.4376, -3.52286 ] }, { "time": 0.5, "offset": 14, - "vertices": [ 2.25, -0.87, 2.57, -0.56, 3.17, -0.57, 1.48, 0.99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3.22, -4.43, 0, 0, 1.48, 0.01, 0, 0, 0, 0, 0.31, -3.28, -1.53, 0.17 ] + "vertices": [ 2.25942, -0.87202, 2.575, -0.56861, 3.17112, -0.57003, 1.48704, 0.9924, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3.22451, -4.43862, 0, 0, 1.48691, 0.01586, 0, 0, 0, 0, 0.31388, -3.28095, -1.53797, 0.17803 ] }, { "time": 0.6333, "offset": 14, - "vertices": [ 0.75, -1.51, -0.97, -1.62, 0.74, -0.61, -1.44, 1.97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.65, -3.95, 0, 0, -1.46, -0.31, 0, 0, 0, 0, -3.31, -3.55, -2.56, 0.29 ] + "vertices": [ 0.75002, -1.51701, -0.97944, -1.62934, 0.74861, -0.6123, -1.44598, 1.97515, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.65701, -3.95221, 0, 0, -1.46987, -0.31373, 0, 0, 0, 0, -3.31756, -3.5535, -2.56329, 0.29673 ] }, { "time": 0.8666, "offset": 14, - "vertices": [ 0.62, -1.26, 0.38, -2.2, 3.25, -0.5, 2.41, 2.39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.66, -3.1, 0, 0, 2.3, -1.15, 0, 0, 0, 0, -0.07, -3.63, -0.93, 0.1 ] + "vertices": [ 0.62202, -1.26262, 0.38489, -2.20701, 3.25048, -0.50042, 2.41108, 2.39315, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.6639, -3.10099, 0, 0, 2.30655, -1.15196, 0, 0, 0, 0, -0.07676, -3.63497, -0.9321, 0.1079 ] }, { "time": 1, "offset": 14, - "vertices": [ -1.48, -0.24, -2.72, -2.15, -0.51, -3.39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.09, -2.61, 0, 0, 0.57, -1.24, 0, 0, 0, 0, -2.11, -3.29 ] + "vertices": [ -1.48952, -0.24021, -2.72312, -2.15489, -0.51183, -3.39752, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.0964, -2.61458, 0, 0, 0.57686, -1.24874, 0, 0, 0, 0, -2.11251, -3.29932 ] } ] }, @@ -1009,32 +1010,32 @@ { "time": 0, "offset": 2, - "vertices": [ -1.77, 0.54, -0.96, -1.03, -0.39, -0.24, -1.77, 0.54 ] + "vertices": [ -1.77696, 0.54759, -0.96145, -1.03793, -0.39148, -0.24071, -1.77696, 0.54759 ] }, { "time": 0.1333, "offset": 2, - "vertices": [ -2.25, -1.03, -1.49, -4.23, -0.74, -2.84, -1.9, 0.54 ] + "vertices": [ -2.25683, -1.03177, -1.49719, -4.23861, -0.74469, -2.84906, -1.90072, 0.54477 ] }, { "time": 0.3333, "offset": 2, - "vertices": [ -2.37, -0.05, -0.49, 0.19, -0.9, 1.16, -1.6, 2.7, 0.96, 0.8 ] + "vertices": [ -2.37974, -0.05431, -0.49433, 0.19436, -0.90861, 1.16519, -1.60956, 2.70798, 0.96186, 0.80615 ] }, { "time": 0.7, "offset": 2, - "vertices": [ -0.91, -2.76, -0.62, -3.63, -0.84, -2.26, -2.56, 0.52 ] + "vertices": [ -0.91714, -2.76567, -0.62214, -3.63489, -0.8494, -2.26772, -2.56076, 0.5297 ] }, { "time": 0.8666, "offset": 2, - "vertices": [ -2.56, 0.52, -1.58, 0.32, -1.38, 0.32, -2.56, 0.52 ] + "vertices": [ -2.56076, 0.5297, -1.58064, 0.32031, -1.3847, 0.32476, -2.56076, 0.5297 ] }, { "time": 1, "offset": 2, - "vertices": [ -1.77, 0.54, -0.8, 0.53, -0.8, 0.53, -1.77, 0.54 ] + "vertices": [ -1.77696, 0.54759, -0.80128, 0.53413, -0.80128, 0.53413, -1.77696, 0.54759 ] } ] }, @@ -1042,35 +1043,35 @@ "undies": [ { "time": 0, - "vertices": [ 0.43, 0.72, 10.6, -0.11, 2.29, 0, 2.29, 0, 2.29, 0, 0.58, 0.24, -2.4, -0.65, -2.27, -0.77, 2.29, 0, 0.58, -0.48, 4.98, -0.11, 6.5, -0.23 ] + "vertices": [ 0.43098, 0.722, 10.60295, -0.11699, 2.29598, 0, 2.29598, 0, 2.29598, 0, 0.58798, 0.24399, -2.40018, -0.65335, -2.2782, -0.77533, 2.29598, 0, 0.58798, -0.48799, 4.98697, -0.11699, 6.50796, -0.23399 ] }, { "time": 0.1333, - "vertices": [ 0.72, 0.43, 7.2, -0.16, 1.37, 0, 1.37, 0, 1.37, 0, 1.25, 0.04, -0.99, -2.95, -1.37, -3.07, 1.37, 0, 0.35, -0.29, 2.99, -0.07, 3.9, -0.14 ] + "vertices": [ 0.72659, 0.43319, 7.20416, -0.1638, 1.37759, 0, 1.37759, 0, 1.37759, 0, 1.25279, 0.0464, -0.99861, -2.95085, -1.37542, -3.07404, 1.37759, 0, 0.35279, -0.29279, 2.99218, -0.07019, 3.90478, -0.14039 ] }, { "time": 0.3333, - "vertices": [ 1.16, 0, 2.1, -0.23, 0, 0, 0, 0, 0, 0, 2.24, -0.24, -0.43, 0.6, -1.55, 0.48 ] + "vertices": [ 1.16999, 0, 2.10599, -0.234, 0, 0, 0, 0, 0, 0, 2.24999, -0.24999, -0.4344, 0.60551, -1.55939, 0.48051 ] }, { "time": 0.5333, - "vertices": [ 1.16, 0, -0.23, -0.93, -2.92, 0.35, 0, 0, 0, 0, 0.49, -0.24, -0.64, -2.07, -0.64, -2.07 ] + "vertices": [ 1.16999, 0, -0.234, -0.93599, -2.92499, 0.35099, 0, 0, 0, 0, 0.49999, -0.24999, -0.64078, -2.07914, -0.64078, -2.07914 ] }, { "time": 0.7, - "vertices": [ 1.86, -0.11, 4.66, -0.09, -1.76, 0.21, 0, 0, -0.56, 0.32, -1.13, -1.15, -2.19, -3.47, -1.29, -3.47, 0, 0, 0, 0, 1.58, -0.04, 2.65, 0.16 ] + "vertices": [ 1.8627, -0.11514, 4.66326, -0.09099, -1.76428, 0.21171, 0, 0, -0.56832, 0.32832, -1.13833, -1.1511, -2.19996, -3.47068, -1.29718, -3.47068, 0, 0, 0, 0, 1.58785, -0.04642, 2.65941, 0.16714 ] }, { "time": 0.8333, - "vertices": [ 2.41, -0.2, 8.58, 0.58, -0.83, 0.1, 0, 0, -1.02, 0.59, -2.44, -1.87, -1.62, 0, 0, 0, 0, 0, 0, 0, 2.85, -0.08, 4.78, 0.3 ] + "vertices": [ 2.41687, -0.20725, 8.58108, 0.585, -0.83571, 0.10028, 0, 0, -1.02299, 0.59098, -2.44899, -1.872, -1.62499, 0, 0, 0, 0, 0, 0, 0, 2.85813, -0.08356, 4.78695, 0.30086 ] }, { "time": 0.8666, - "vertices": [ 2.01, -0.02, 8.98, 0.44, -0.2, 0.08, 0.45, 0, -0.35, 0.47, -1.84, -1.44, -0.79, 1.26, 0.53, 1.23, 0.45, 0, 0.11, -0.09, 3.28, -0.09, 5.13, 0.19 ] + "vertices": [ 2.01969, -0.0214, 8.98545, 0.4446, -0.20937, 0.08022, 0.45919, 0, -0.35919, 0.47279, -1.84159, -1.4488, -0.79153, 1.2642, 0.53285, 1.23981, 0.45919, 0, 0.11759, -0.09759, 3.2839, -0.09025, 5.13115, 0.19388 ] }, { "time": 1, - "vertices": [ 0.43, 0.72, 10.6, -0.11, 2.29, 0, 2.29, 0, 2.29, 0, 0.58, 0.24, -2.4, -0.65, -2.27, -0.77, 2.29, 0, 0.58, -0.48, 4.98, -0.11, 6.5, -0.23 ] + "vertices": [ 0.43098, 0.722, 10.60295, -0.11699, 2.29598, 0, 2.29598, 0, 2.29598, 0, 0.58798, 0.24399, -2.40018, -0.65335, -2.2782, -0.77533, 2.29598, 0, 0.58798, -0.48799, 4.98697, -0.11699, 6.50796, -0.23399 ] } ] } diff --git a/spine-cocos2dx/example/Resources/common/goblins-mesh.png b/spine-cocos2dx/example/Resources/common/goblins-mesh.png new file mode 100644 index 000000000..6eaf853b1 Binary files /dev/null and b/spine-cocos2dx/example/Resources/common/goblins-mesh.png differ diff --git a/spine-cocos2dx/example/Resources/common/raptor.atlas b/spine-cocos2dx/example/Resources/common/raptor.atlas index c90da0078..b59a1747c 100644 --- a/spine-cocos2dx/example/Resources/common/raptor.atlas +++ b/spine-cocos2dx/example/Resources/common/raptor.atlas @@ -1,251 +1,251 @@ raptor.png -size: 1022,1022 +size: 2048,2048 format: RGBA8888 filter: Linear,Linear repeat: none back_arm rotate: false - xy: 410, 545 - size: 46, 29 - orig: 46, 29 + xy: 830, 1093 + size: 91, 57 + orig: 91, 57 offset: 0, 0 index: -1 back_bracer - rotate: false - xy: 540, 548 - size: 39, 28 - orig: 39, 28 + rotate: true + xy: 217, 113 + size: 77, 55 + orig: 77, 55 offset: 0, 0 index: -1 back_hand rotate: true - xy: 504, 538 - size: 36, 34 - orig: 36, 34 + xy: 275, 501 + size: 72, 68 + orig: 72, 68 offset: 0, 0 index: -1 back_knee rotate: false - xy: 299, 478 - size: 49, 67 - orig: 49, 67 + xy: 583, 955 + size: 97, 134 + orig: 97, 134 offset: 0, 0 index: -1 back_thigh rotate: true - xy: 140, 247 - size: 39, 24 - orig: 39, 24 + xy: 440, 689 + size: 78, 47 + orig: 78, 47 offset: 0, 0 index: -1 eyes_open rotate: true - xy: 2, 2 - size: 47, 45 - orig: 47, 45 + xy: 495, 848 + size: 93, 89 + orig: 93, 89 offset: 0, 0 index: -1 front_arm rotate: false - xy: 360, 544 - size: 48, 30 - orig: 48, 30 + xy: 2, 5 + size: 96, 60 + orig: 96, 60 offset: 0, 0 index: -1 front_bracer - rotate: false - xy: 538, 578 - size: 41, 29 - orig: 41, 29 + rotate: true + xy: 217, 192 + size: 81, 58 + orig: 81, 58 offset: 0, 0 index: -1 front_hand rotate: false - xy: 538, 609 - size: 41, 38 - orig: 41, 38 + xy: 586, 878 + size: 82, 75 + orig: 82, 75 offset: 0, 0 index: -1 front_open_hand - rotate: false - xy: 894, 782 - size: 43, 44 - orig: 43, 44 + rotate: true + xy: 495, 760 + size: 86, 87 + orig: 86, 87 offset: 0, 0 index: -1 front_thigh rotate: false - xy: 942, 849 - size: 57, 29 - orig: 57, 29 + xy: 714, 1092 + size: 114, 58 + orig: 114, 58 offset: 0, 0 index: -1 gun rotate: false - xy: 785, 774 - size: 107, 103 - orig: 107, 103 + xy: 2, 67 + size: 213, 206 + orig: 213, 206 offset: 0, 0 index: -1 gun_nohand rotate: false - xy: 614, 703 - size: 105, 102 - orig: 105, 102 + xy: 1563, 1547 + size: 210, 203 + orig: 210, 203 offset: 0, 0 index: -1 head rotate: false - xy: 2, 137 - size: 136, 149 - orig: 136, 149 + xy: 2, 275 + size: 271, 298 + orig: 271, 298 offset: 0, 0 index: -1 lower_leg rotate: true - xy: 780, 699 - size: 73, 98 - orig: 73, 98 + xy: 386, 943 + size: 146, 195 + orig: 146, 195 offset: 0, 0 index: -1 mouth_smile - rotate: true - xy: 49, 2 - size: 47, 30 - orig: 47, 30 + rotate: false + xy: 100, 6 + size: 93, 59 + orig: 93, 59 offset: 0, 0 index: -1 neck - rotate: true - xy: 1001, 860 - size: 18, 21 - orig: 18, 21 + rotate: false + xy: 1012, 1109 + size: 36, 41 + orig: 36, 41 offset: 0, 0 index: -1 raptor_arm_back rotate: false - xy: 940, 936 - size: 82, 86 - orig: 82, 86 + xy: 330, 769 + size: 163, 172 + orig: 163, 172 offset: 0, 0 index: -1 raptor_body rotate: false - xy: 2, 737 - size: 610, 285 - orig: 610, 285 + xy: 2, 1468 + size: 1219, 570 + orig: 1219, 570 offset: 0, 0 index: -1 raptor_front_arm rotate: true - xy: 195, 464 - size: 81, 102 - orig: 81, 102 + xy: 1223, 1445 + size: 162, 203 + orig: 162, 203 offset: 0, 0 index: -1 raptor_front_leg rotate: false - xy: 2, 478 - size: 191, 257 - orig: 191, 257 + xy: 2, 952 + size: 382, 514 + orig: 382, 514 offset: 0, 0 index: -1 raptor_hindleg_back rotate: false - xy: 614, 807 - size: 169, 215 - orig: 169, 215 + xy: 1223, 1609 + size: 338, 429 + orig: 338, 429 offset: 0, 0 index: -1 raptor_horn rotate: false - xy: 360, 655 - size: 182, 80 - orig: 182, 80 + xy: 714, 1307 + size: 363, 159 + orig: 363, 159 offset: 0, 0 index: -1 raptor_horn_back rotate: false - xy: 360, 576 - size: 176, 77 - orig: 176, 77 + xy: 714, 1152 + size: 351, 153 + orig: 351, 153 offset: 0, 0 index: -1 raptor_jaw rotate: false - xy: 785, 879 - size: 153, 143 - orig: 153, 143 + xy: 1563, 1752 + size: 305, 286 + orig: 305, 286 offset: 0, 0 index: -1 raptor_saddle_noshadow rotate: false - xy: 2, 288 - size: 163, 188 - orig: 163, 188 + xy: 2, 575 + size: 326, 375 + orig: 326, 375 offset: 0, 0 index: -1 raptor_saddle_strap_front - rotate: false - xy: 721, 710 - size: 57, 95 - orig: 57, 95 + rotate: true + xy: 1558, 1431 + size: 114, 189 + orig: 114, 189 offset: 0, 0 index: -1 raptor_saddle_strap_rear - rotate: true - xy: 940, 880 - size: 54, 74 - orig: 54, 74 + rotate: false + xy: 1079, 1318 + size: 108, 148 + orig: 108, 148 offset: 0, 0 index: -1 raptor_saddle_w_shadow rotate: false - xy: 195, 547 - size: 163, 188 - orig: 163, 188 + xy: 386, 1091 + size: 326, 375 + orig: 326, 375 offset: 0, 0 index: -1 raptor_tongue rotate: true - xy: 544, 649 - size: 86, 64 - orig: 86, 64 + xy: 1428, 1436 + size: 171, 128 + orig: 171, 128 offset: 0, 0 index: -1 stirrup_back rotate: false - xy: 458, 539 - size: 44, 35 - orig: 44, 35 + xy: 923, 1081 + size: 87, 69 + orig: 87, 69 offset: 0, 0 index: -1 stirrup_front - rotate: true - xy: 81, 4 - size: 45, 50 - orig: 45, 50 + rotate: false + xy: 1775, 1650 + size: 89, 100 + orig: 89, 100 offset: 0, 0 index: -1 stirrup_strap rotate: true - xy: 894, 828 - size: 49, 46 - orig: 49, 46 + xy: 1775, 1551 + size: 97, 91 + orig: 97, 91 offset: 0, 0 index: -1 torso - rotate: true - xy: 610, 647 - size: 54, 91 - orig: 54, 91 + rotate: false + xy: 330, 585 + size: 108, 182 + orig: 108, 182 offset: 0, 0 index: -1 visor - rotate: false - xy: 2, 51 - size: 131, 84 - orig: 131, 84 + rotate: true + xy: 1870, 1777 + size: 261, 168 + orig: 261, 168 offset: 0, 0 index: -1 diff --git a/spine-cocos2dx/example/Resources/common/raptor.json b/spine-cocos2dx/example/Resources/common/raptor.json index df9892de6..24504ac67 100644 --- a/spine-cocos2dx/example/Resources/common/raptor.json +++ b/spine-cocos2dx/example/Resources/common/raptor.json @@ -1,167 +1,202 @@ { -"skeleton": { "hash": "r3IJRaLbaxgEoW1YBAOrYT69jB4", "spine": "Dev", "width": 1224.2, "height": 1052.38 }, +"skeleton": { "hash": "tzTkzbBrpNYAwwMjxvin8GH1NPg", "spine": "3.3.07", "width": 1223.72, "height": 1055.5, "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": "hip", "parent": "root", "rotation": 3.15, "x": -136.78, "y": 415.47, "color": "fbff00ff" }, + { "name": "torso1", "parent": "hip", "length": 126.25, "rotation": -4.97, "x": 30.03, "y": -0.4, "color": "eaff00ff" }, + { "name": "saddle", "parent": "torso1", "length": 50.91, "rotation": 91.8, "x": 4.56, "y": 71.86, "color": "ff7300ff" }, + { "name": "spineboy_hip", "parent": "saddle", "length": 0.52, "rotation": 90.01, "x": 81.88, "y": 2.68, "color": "ffffffff" }, { - "name": "gun", + "name": "spineboy_torso", "parent": "spineboy_hip", - "length": 181.35, - "x": 16.86, - "y": -7.89, - "scaleX": 0.816, - "scaleY": 0.816, - "rotation": 107.11 + "length": 122.45, + "rotation": -75.85, + "x": 1.05, + "y": -2.1, + "color": "ffffffff" + }, + { "name": "torso2", "parent": "torso1", "length": 121.2, "rotation": 39.84, "x": 126.25, "y": -0.37, "color": "eaff00ff" }, + { "name": "neck", "parent": "torso2", "length": 70.59, "rotation": 41.37, "x": 121.19, "y": 0.34, "color": "eaff00ff" }, + { "name": "head", "parent": "neck", "length": 105.5, "rotation": 9.82, "x": 70.59, "y": 0.03, "color": "eaff00ff" }, + { "name": "horn_rear", "parent": "head", "length": 73.78, "rotation": 44.31, "x": 99.27, "y": -226.79, "color": "e07800ff" }, + { "name": "rear_arm_target", "parent": "horn_rear", "rotation": -133.55, "x": 232.68, "y": 245.84, "color": "e07800ff" }, + { + "name": "back_arm", + "parent": "spineboy_torso", + "length": 67.21, + "rotation": -120.89, + "x": 96.33, + "y": -38.46, + "color": "ffffffff" + }, + { "name": "back_bracer", "parent": "back_arm", "length": 43.68, "rotation": 17.48, "x": 67.21, "y": -0.31, "color": "ffffffff" }, + { + "name": "back_hand", + "parent": "back_bracer", + "length": 41.97, + "rotation": 9.2, + "x": 43.68, + "y": 0.06, + "inheritRotation": false, + "color": "ffffffff" + }, + { "name": "spineboy_rear_arm_goal", "parent": "saddle", "x": -30.43, "y": -100.08, "color": "ff0001ff" }, + { "name": "back_thigh", "parent": "spineboy_hip", "length": 71.15, "rotation": 160.75, "x": -9.57, "y": 2.31, "color": "ffffffff" }, + { "name": "back_knee", "parent": "back_thigh", "length": 97.17, "rotation": -54.97, "x": 71.15, "y": -0.28, "color": "ffffffff" }, + { "name": "horn_front", "parent": "head", "length": 87.48, "rotation": 49.36, "x": 82.09, "y": -221.36, "color": "15ff00ff" }, + { "name": "front_arm_target", "parent": "horn_front", "rotation": -138.59, "x": 294.58, "y": 234.17, "color": "15ff00ff" }, + { + "name": "front_arm", + "parent": "spineboy_torso", + "length": 74.51, + "rotation": -118.16, + "x": 101.37, + "y": 9.78, + "color": "ffffffff" + }, + { "name": "front_bracer", "parent": "front_arm", "length": 39.85, "rotation": 20.3, "x": 74.52, "y": -0.41, "color": "ffffffff" }, + { "name": "front_arm1", "parent": "torso2", "length": 109.99, "rotation": 224.54, "x": 46.37, "y": -84.61, "color": "15ff00ff" }, + { "name": "front_arm2", "parent": "front_arm1", "length": 86.33, "rotation": 105.23, "x": 109.99, "y": 0.2, "color": "15ff00ff" }, + { "name": "front_foot_goal", "parent": "root", "rotation": -0.94, "x": -45.79, "y": -28.67, "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, "rotation": -51.5, "x": 27.36, "y": -28.27, "color": "15ff00ff" }, + { "name": "front_leg2", "parent": "front_leg1", "length": 208.54, "rotation": 261.93, "x": 251.03, "y": 0.16, "color": "15ff00ff" }, + { "name": "front_leg3", "parent": "front_leg2", "length": 118.18, "rotation": 85.46, "x": 208.5, "y": -1.63, "color": "15ff00ff" }, + { + "name": "front_foot1", + "parent": "front_leg3", + "length": 57.79, + "rotation": 54.46, + "x": 118.19, + "y": -0.79, + "scaleX": 1.126, + "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", "length": 56.19, + "rotation": -2.15, "x": 57.78, "y": -0.02, "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", "length": 129.88, + "rotation": -2.7, "x": 49.71, "y": 20.65, "scaleX": 1.154, - "rotation": -3.16, - "inheritRotation": false + "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": "front_hand", "parent": "front_arm2", "length": 47.55, "rotation": -56.83, "x": 86.33, "y": 0.06, "color": "15ff00ff" }, { "name": "front_hand2", "parent": "front_bracer", "length": 58.18, + "rotation": 13.9, "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 } -], -"ik": [ + { "name": "spineboy_front_arm_goal", "parent": "saddle", "x": -50.7, "y": -96.93, "color": "ff0004ff" }, { - "name": "front_leg_goal", - "bones": [ "front_leg1", "front_leg2" ], - "target": "front_leg_goal", - "bendPositive": false + "name": "front_thigh", + "parent": "spineboy_hip", + "length": 77.79, + "rotation": 163.34, + "x": 15.51, + "y": 17.01, + "color": "ffffffff" + }, + { "name": "lower_leg", "parent": "front_thigh", "length": 111.5, "rotation": -49.62, "x": 77.92, "y": -0.1, "color": "ffffffff" }, + { + "name": "gun", + "parent": "spineboy_hip", + "length": 181.35, + "rotation": 107.11, + "x": 16.86, + "y": -7.89, + "scaleX": 0.816, + "scaleY": 0.816, + "color": "ffffffff" + }, + { "name": "neck2", "parent": "spineboy_torso", "length": 32.04, "rotation": -45.22, "x": 113.44, "y": -15.21, "color": "ffffffff" }, + { "name": "head2", "parent": "neck2", "length": 249.64, "rotation": 11.65, "x": 23.01, "y": 3.47, "color": "ffffffff" }, + { "name": "jaw", "parent": "head", "length": 203.76, "rotation": -140.14, "x": 29.36, "y": -40.15, "color": "ffff00ff" }, + { "name": "rear_arm1", "parent": "torso2", "length": 109.56, "rotation": -124.71, "x": 57.05, "y": -95.38, "color": "e07800ff" }, + { "name": "rear_arm2", "parent": "rear_arm1", "length": 85.8, "rotation": 123.56, "x": 109.56, "color": "e07800ff" }, + { "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": "rear_leg1", "parent": "hip", "length": 226.27, "rotation": -54.76, "x": 55.19, "y": -71.25, "color": "e07800ff" }, + { "name": "rear_leg2", "parent": "rear_leg1", "length": 172.58, "rotation": -92.25, "x": 226.32, "y": 0.23, "color": "e07800ff" }, + { "name": "rear_leg3", "parent": "rear_leg2", "length": 103.05, "rotation": 82.81, "x": 172.31, "y": 2.21, "color": "e07800ff" }, + { "name": "rear_foot1", "parent": "rear_leg3", "length": 84.51, "rotation": 75.43, "x": 102.37, "y": -0.02, "color": "e07800ff" }, + { + "name": "rear_foot2", + "parent": "rear_foot1", + "length": 102.31, + "rotation": -6.13, + "x": 84.49, + "y": -0.34, + "inheritRotation": false, + "color": "e07800ff" + }, + { "name": "rear_hand", "parent": "rear_arm2", "length": 45.8, "rotation": -76.28, "x": 85.8, "y": 0.1, "color": "e07800ff" }, + { + "name": "saddle_strap_front1", + "parent": "saddle", + "length": 97.27, + "rotation": -148.11, + "x": -27.36, + "y": -73.38, + "color": "ff7300ff" }, { - "name": "rear_leg_goal", - "bones": [ "rear_leg1", "rear_leg2" ], - "target": "rear_leg_goal", - "bendPositive": false + "name": "saddle_strap_front2", + "parent": "saddle_strap_front1", + "length": 102.74, + "rotation": -11.13, + "x": 97.29, + "y": 0.3, + "color": "ff7300ff" }, { - "name": "front_foot_goal", - "bones": [ "front_leg3", "front_foot1" ], - "target": "front_foot_goal" + "name": "saddle_strap_rear1", + "parent": "saddle", + "length": 38.62, + "rotation": 151.13, + "x": -33.34, + "y": 87.32, + "color": "ff7300ff" }, + { "name": "saddle_strap_rear2", "parent": "saddle_strap_rear1", "length": 54.36, "x": 38.63, "y": -0.02, "color": "ff7300ff" }, { - "name": "rear_foot_goal", - "bones": [ "rear_leg3", "rear_foot1" ], - "target": "rear_foot_goal" + "name": "saddle_strap_rear3", + "parent": "saddle_strap_rear2", + "length": 44.04, + "rotation": 3.63, + "x": 54.86, + "y": 0.19, + "color": "ff7300ff" }, - { - "name": "stirrup", - "bones": [ "stirrup_strap1", "stirrup_strap2" ], - "target": "stirrup" - }, - { - "name": "spineboy_rear_leg_goal", - "bones": [ "back_thigh", "back_knee" ], - "target": "spineboy_rear_arm_goal", - "bendPositive": false - }, - { - "name": "spineboy_front_leg_goal", - "bones": [ "front_thigh", "lower_leg" ], - "target": "spineboy_front_arm_goal", - "bendPositive": false - }, - { - "name": "rear_arm_goal", - "bones": [ "back_arm", "back_bracer" ], - "target": "bone2" - }, - { - "name": "front_arm_goal", - "bones": [ "front_arm", "front_bracer" ], - "target": "bone" - } + { "name": "stirrup", "parent": "saddle", "length": 78.17, "rotation": -68.85, "x": -81.94, "y": -103.38, "color": "ff7300ff" }, + { "name": "stirrup_strap1", "parent": "saddle", "length": 43.69, "rotation": -135, "x": -20.38, "y": -29.37, "color": "ff7300ff" }, + { "name": "stirrup_strap2", "parent": "stirrup_strap1", "length": 51.62, "rotation": 9.38, "x": 43.7, "color": "ff7300ff" }, + { "name": "tail1", "parent": "hip", "length": 162.53, "rotation": 162.92, "x": -20.86, "y": 6.87, "color": "eaff00ff" }, + { "name": "tail2", "parent": "tail1", "length": 130.02, "rotation": 30.3, "x": 162.53, "y": -0.82, "color": "eaff00ff" }, + { "name": "tail3", "parent": "tail2", "length": 141.06, "rotation": 6.88, "x": 130.02, "y": 0.1, "color": "eaff00ff" }, + { "name": "tail4", "parent": "tail3", "length": 126.25, "rotation": -18.86, "x": 141.05, "y": 0.64, "color": "eaff00ff" }, + { "name": "tail5", "parent": "tail4", "length": 91.06, "rotation": -22.34, "x": 126.25, "y": -0.47, "color": "eaff00ff" }, + { "name": "tongue1", "parent": "head", "length": 55.11, "rotation": -129.04, "x": 20.81, "y": -104.75, "color": "ffff00ff" }, + { "name": "tongue2", "parent": "tongue1", "length": 44.66, "rotation": 8.93, "x": 55.59, "y": 0.93, "color": "fff200ff" }, + { "name": "tongue3", "parent": "tongue2", "length": 43.64, "rotation": 12.86, "x": 44.26, "y": -0.2, "color": "fff200ff" } ], "slots": [ { "name": "back_hand", "bone": "back_hand", "attachment": "back_hand" }, @@ -198,6 +233,57 @@ { "name": "front_bracer", "bone": "front_bracer", "attachment": "front_bracer" }, { "name": "front_hand", "bone": "front_hand2", "attachment": "front_hand" } ], +"ik": [ + { + "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": "rear_leg_goal", + "bones": [ "rear_leg1", "rear_leg2" ], + "target": "rear_leg_goal", + "bendPositive": false + }, + { + "name": "spineboy_front_leg_goal", + "bones": [ "front_thigh", "lower_leg" ], + "target": "spineboy_front_arm_goal", + "bendPositive": false + }, + { + "name": "spineboy_rear_leg_goal", + "bones": [ "back_thigh", "back_knee" ], + "target": "spineboy_rear_arm_goal", + "bendPositive": false + }, + { + "name": "stirrup", + "bones": [ "stirrup_strap1", "stirrup_strap2" ], + "target": "stirrup" + } +], "skins": { "default": { "back_arm": { @@ -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": "mesh", + "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": [ 6, 15, 16, 5, 6, 16, 5, 16, 4, 6, 7, 15, 16, 17, 4, 8, 15, 7, 14, 15, 8, 12, 14, 8, 12, 8, 9, 12, 9, 10, 11, 12, 10, 13, 14, 12, 17, 3, 4, 19, 20, 2, 18, 19, 2, 18, 2, 3, 18, 3, 17, 21, 22, 23, 24, 21, 23, 0, 21, 24, 1, 21, 0, 1, 20, 21, 2, 20, 1 ], + "vertices": [ 2, 40, 36.95, 33.31, 0.91666, 41, 68.53, 41.05, 0.08333, 2, 40, 66.01999, 20.35, 0.76813, 41, 41.41, 24.39, 0.23186, 2, 40, 74.51, 16.57, 0.64468, 41, 33.49, 19.53, 0.35531, 2, 40, 70.89, 21.97, 0.29071, 41, 39.99, 19.45999, 0.70928, 3, 40, 42.77, 63.89, 0.11483, 41, 90.47, 18.95, 0.60854, 49, -17.2, 9, 0.2766, 2, 41, 101.86, 18.83, 0.45955, 49, -14.38, 20.04, 0.54044, 2, 41, 106.47, 2.08, 0.0625, 49, 2.98, 20.56, 0.9375, 1, 49, 51.32, 21.98, 1, 1, 49, 60.41, 11.1, 1, 1, 49, 72.39, 9.60999, 1, 1, 49, 100.37, -23.87, 1, 1, 49, 104.96, -40.9, 1, 1, 49, 78.37, -25.61, 1, 1, 49, 86.05, -56.84, 1, 1, 49, 52.92, -30.04, 1, 2, 41, 62.24, -43.92, 0.0625, 49, 37.18999, -33.33, 0.9375, 2, 41, 64.89, -28.65, 0.3125, 49, 22.98, -27.14, 0.6875, 2, 41, 57.69, -27.17, 0.30612, 49, 19.83, -33.78, 0.69387, 2, 40, 124.19, 3.83, 0.19395, 41, -5.09, -14.23, 0.80604, 2, 40, 110.77, -19.65, 0.3125, 41, -16.87999, 10.1, 0.6875, 2, 40, 99.14, -19.2, 0.51612, 41, -9.93, 19.44, 0.48386, 2, 40, 43.73, -17.03, 0.9375, 41, 23.17, 63.92, 0.0625, 1, 40, 35.41, -29.77, 1, 1, 40, -15.68, -28.02, 1, 1, 40, -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": "mesh", + "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": [ 13, 60, 12, 12, 71, 46, 46, 70, 47, 11, 12, 46, 47, 11, 46, 10, 11, 47, 13, 14, 55, 15, 93, 14, 16, 56, 15, 58, 26, 27, 28, 58, 27, 63, 28, 29, 63, 58, 28, 25, 26, 58, 25, 58, 63, 57, 63, 29, 92, 29, 30, 57, 29, 92, 24, 25, 63, 24, 63, 57, 23, 24, 57, 92, 23, 57, 22, 23, 92, 62, 22, 92, 21, 22, 62, 20, 21, 91, 92, 30, 62, 91, 21, 62, 62, 30, 31, 91, 62, 31, 31, 32, 93, 20, 91, 56, 56, 19, 20, 17, 19, 56, 18, 19, 17, 93, 91, 31, 55, 34, 35, 33, 34, 55, 61, 33, 55, 61, 32, 33, 93, 32, 61, 56, 91, 93, 56, 93, 15, 16, 17, 56, 36, 37, 54, 60, 35, 36, 54, 60, 36, 60, 55, 35, 61, 55, 14, 93, 61, 14, 60, 13, 55, 12, 60, 54, 39, 54, 37, 39, 37, 38, 71, 54, 39, 40, 71, 39, 53, 71, 40, 53, 40, 41, 12, 54, 71, 46, 71, 53, 66, 45, 0, 44, 45, 66, 1, 84, 85, 65, 66, 0, 0, 85, 65, 85, 86, 65, 85, 0, 1, 78, 85, 84, 79, 78, 84, 78, 86, 85, 77, 86, 78, 77, 78, 79, 67, 66, 65, 83, 80, 79, 84, 83, 79, 77, 79, 80, 84, 90, 83, 82, 77, 80, 1, 90, 84, 94, 65, 86, 94, 86, 77, 94, 77, 82, 67, 65, 94, 51, 44, 66, 51, 66, 67, 81, 82, 80, 83, 88, 81, 87, 94, 82, 87, 82, 81, 87, 81, 88, 88, 90, 89, 87, 88, 89, 80, 83, 81, 90, 88, 83, 43, 44, 51, 64, 67, 94, 64, 94, 87, 68, 67, 64, 51, 67, 68, 76, 64, 87, 76, 87, 89, 74, 68, 64, 74, 64, 76, 3, 74, 76, 59, 43, 51, 59, 51, 68, 69, 59, 68, 74, 69, 68, 69, 74, 3, 90, 1, 2, 89, 90, 2, 76, 89, 2, 3, 76, 2, 75, 69, 3, 4, 75, 3, 75, 72, 69, 5, 75, 4, 5, 72, 75, 72, 59, 69, 59, 42, 43, 72, 42, 59, 50, 42, 72, 50, 72, 5, 6, 50, 5, 73, 50, 6, 52, 70, 42, 50, 52, 42, 73, 52, 50, 7, 73, 6, 49, 73, 7, 52, 73, 49, 8, 49, 7, 48, 52, 49, 48, 49, 8, 47, 52, 48, 70, 53, 41, 70, 41, 42, 46, 53, 70, 47, 70, 52, 9, 48, 8, 47, 48, 9, 10, 47, 9 ], + "vertices": [ 1, 8, 147.48, -145.48, 1, 1, 8, 89.4, -281.62, 1, 1, 8, -28.24, -285.93, 1, 1, 8, -14.58, -194.68, 1, 4, 6, 238.39, -84.13, 0.20851, 7, 32.09999, -140.85, 0.19336, 8, -61.96, -132.26, 0.42115, 39, 129.57, 6.39, 0.17696, 5, 2, 332.7, 63.71, 0.06905, 6, 199.57, -83.03, 0.29424, 7, 3.69, -114.37, 0.2194, 8, -85.43, -101.32, 0.30859, 39, 127.34, -26.64, 0.1087, 5, 2, 307.08, 43.5, 0.11018, 6, 166.95, -82.12999, 0.37282, 7, -20.18, -92.14, 0.24572, 8, -105.18, -75.33999, 0.21862, 39, 123.08, -64.79, 0.05264, 4, 2, 307.75, 5.7, 0.18627, 6, 143.25, -111.59, 0.58009, 7, -57.43, -98.57, 0.12363, 8, -142.98, -75.33, 0.10999, 2, 2, 308.7, -30.55, 0.25, 6, 120.75, -140.04, 0.75, 2, 2, 213.94, -142.7, 0.75, 6, -23.83, -165.45, 0.25, 3, 2, 64.44999, -187.34, 0.31139, 58, -158.45, 158.33, 0.10379, 1, 84.16, -190.98, 0.5848, 1, 1, -61.47, -178.84, 1, 4, 58, 118.47, 114.74, 0.07383, 59, 17.17, 122.49, 0.17504, 60, -100.71, 132.55, 0.06818, 1, -166.91, -67.94999, 0.68294, 4, 58, 170.4, 123.13, 0.06537, 59, 66.71, 104.77, 0.20999, 60, -53.08, 110.21, 0.12016, 1, -217.69, -61.33, 0.60447, 6, 58, 221.11, 131.31, 0.02179, 59, 115.07, 87.47, 0.23058, 60, -6.58, 88.39, 0.16258, 61, -168.92, 31, 0.02826, 62, -282.82, -90.19, 0.029, 1, -267.66, -55.14, 0.52776, 5, 59, 146.51, 86.08, 0.23635, 60, 26.66, 83.39, 0.19338, 61, -134.99, 41.34, 0.06624, 62, -257.52, -60.65, 0.06962, 1, -298.87, -61.99, 0.43436, 5, 59, 178.73, 86.41, 0.22521, 60, 56.68, 81.29, 0.20997, 61, -107.13, 46.31, 0.11271, 62, -232.44, -51.26, 0.12148, 1, -328.68, -69.24, 0.3306, 5, 59, 203.26, 86.51, 0.21603, 60, 83.06, 77.01999, 0.22457, 61, -79.56, 53.53, 0.13939, 62, -210.89, -28.3, 0.15618, 1, -354.01, -75.41, 0.26379, 5, 59, 238.06, 85.41, 0.20114, 60, 115.65, 74.66, 0.2315, 61, -49.53, 60.58, 0.16455, 62, -185.49, -14.98, 0.19123, 1, -385.33, -83.15, 0.21156, 5, 59, 255.33, 78.85, 0.18224, 60, 133.83, 63.18, 0.23194, 61, -27.04, 56.84, 0.18907, 62, -163.58, -5.26, 0.22658, 1, -406.45, -79.89, 0.17015, 5, 59, 275.48, 71.62, 0.16169, 60, 152.97, 53.58, 0.22885, 61, -5.82, 53.94, 0.21292, 62, -142.85, 0.11, 0.26159, 1, -427.72, -77.47, 0.13493, 5, 59, 313.81, 53.61, 0.14198, 60, 188.04, 35.82, 0.22293, 61, 31.84, 49.3, 0.23478, 62, -106.46, 7.49, 0.29326, 1, -465.96, -72.58999, 0.10702, 5, 59, 345.74, 45.54, 0.12502, 60, 219.6, 19.28, 0.2179, 61, 68.31, 43.02, 0.25622, 62, -70.12999, 18.19, 0.32248, 1, -502.09, -68.19, 0.07835, 4, 59, 390.81, 21.3, 0.11758, 60, 261.62, -3.66, 0.22607, 61, 114.55, 37.83, 0.29087, 62, -26.15, 30.34, 0.36547, 4, 59, 423.87, -11.11, 0.10536, 60, 291.46, -39.06, 0.21954, 61, 154.83, 14.99, 0.30098, 62, 19.91, 25.67, 0.37409, 4, 59, 456.68, -43.27, 0.09949, 60, 321.06, -74.19999, 0.21749, 61, 194.79, -7.66, 0.30788, 62, 65.62, 21.04, 0.37513, 4, 59, 480.34, -100.28, 0.10045, 60, 339.2, -133.2, 0.22026, 61, 232.3, -56.69, 0.31103, 62, 119.7, -8.68999, 0.36824, 4, 59, 424.34, -67.51999, 0.10379, 60, 286.57, -95.27, 0.23087, 61, 169.77, -39.4, 0.30828, 62, 55.51, -18.08, 0.35705, 4, 59, 387.08, -53.84, 0.11505, 60, 250.77, -78.11, 0.2454, 61, 130.24, -35.75, 0.30092, 62, 17.87, -30.67, 0.3386, 4, 59, 346.04, -38.78, 0.13471, 60, 211.34, -59.22, 0.26271, 61, 86.7, -31.72, 0.2888, 62, -23.59, -44.54, 0.31376, 5, 58, 449.17, 125.97, 0.02419, 59, 311.45, -35.25, 0.16384, 60, 175.89, -56.83, 0.2727, 61, 51.53, -43.14, 0.26317, 62, -52.88, -67.87, 0.27607, 5, 58, 418.38, 93.72, 0.05913, 59, 269.72, -40.64, 0.19681, 60, 135.19, -53.82, 0.27688, 61, 13.42, -53.11, 0.23219, 62, -82.03, -93.66, 0.23497, 5, 58, 390.82, 86.58, 0.10638, 59, 241.19, -39.8, 0.2354, 60, 105.59, -52.93, 0.27331, 61, -16.25, -62.16, 0.19459, 62, -108.34, -111.24, 0.19028, 5, 58, 364.8, 62.48, 0.14347, 59, 207.71, -42.14, 0.28099, 60, 73.33, -49.43, 0.26867, 61, -46.11, -70.49, 0.15764, 62, -129.51, -133.56, 0.1492, 5, 58, 345.49, 47.53, 0.18499, 59, 182.34, -50.62, 0.33114, 60, 45.87, -56.62, 0.25881, 61, -71.57, -84.96, 0.1174, 62, -150.85, -153.35, 0.10763, 5, 58, 319.95, 15.15, 0.23755, 59, 145.6, -61.95, 0.39396, 60, 9.60999, -63.26, 0.24619, 61, -101.06, -105.58, 0.06443, 62, -165.65, -187.83, 0.05784, 3, 58, 276.58, -30.61, 0.29942, 59, 85.52, -81.11, 0.46774, 60, -52.01, -76.62, 0.23283, 3, 58, 214.5, -70.36, 0.32855, 59, 11.97, -85.98, 0.48601, 60, -125.69, -74.48, 0.18543, 2, 58, 147.14, -113.5, 0.59565, 59, -67.83999, -91.26, 0.40433, 2, 2, -113.14, 135.84, 0.24192, 58, 91.72, -112.59, 0.75807, 2, 2, -42.12, 116.77, 0.14515, 58, 18.2, -111.17, 0.85484, 1, 2, 44.2, 107.1, 1, 2, 2, 140.09, 96.35, 0.22579, 6, 72.58999, 65.41, 0.7742, 4, 2, 137.69, 169.35, 0.05644, 6, 117.5, 123, 0.24355, 7, 78.3, 94.48, 0.2125, 8, 23.7, 91.74, 0.4875, 2, 7, 171.15, 111.98, 0.25, 8, 118.17, 93.15, 0.75, 1, 8, 158.96, -25.58, 1, 1, 1, -40.63, -86.01, 1, 3, 2, 67.33999, -86.66, 0.33215, 58, -137.02, 59.92, 0.08303, 1, 92.54, -90.61, 0.5848, 2, 2, 170.13, -66.29, 0.75, 6, -8.53, -78.72, 0.25, 2, 2, 231.74, -8.12, 0.4, 6, 76.03, -73.51999, 0.6, 4, 2, 222.04, 70.41, 0.17551, 6, 118.9, -7, 0.55823, 7, -6.58, -3.99, 0.17739, 8, -76.73, 9.18, 0.08884, 1, 8, 50.43, -46.56, 1, 1, 6, -9.88, 20.65, 1, 2, 2, -53.22, 20.53, 0.2, 58, 5.8, -15.09, 0.8, 3, 2, -180.71, 32.22, 0.08564, 58, 132.35, 4.23999, 0.56215, 59, -23.98, 19.01, 0.35219, 3, 58, 246.39, 57.53, 0.30273, 59, 101.61, 10.65, 0.46989, 60, -27.28, 13.2, 0.22737, 5, 58, 346.99, 126.85, 0.13479, 59, 223.17, 22.83, 0.28279, 60, 94.88, 13.77, 0.24481, 61, -47.85, -3.72, 0.17322, 62, -158.02, -73.16, 0.16438, 4, 59, 367.51, -9.96, 0.14656, 60, 235.45, -32.57, 0.23073, 61, 100.06, 1.62, 0.29607, 62, -24.81, -8.63, 0.32661, 4, 59, 440.24, -55.6, 0.10821, 60, 303.52, -84.91, 0.21897, 61, 182.07, -23.8, 0.31097, 62, 60.48, 1.14, 0.36182, 3, 6, 174.99, 22.22, 0.2, 7, 54.82, -19.14, 0.6, 8, -18.79999, -16.2, 0.2, 3, 58, 189.25, 30.83, 0.33253, 59, 38.68, 14.84, 0.48076, 60, -89.52, 23.34, 0.18669, 5, 58, 295.08, 91.08, 0.22891, 59, 160.45, 16.54, 0.38754, 60, 31.85, 13.48, 0.2306, 61, -106.86, -25.89, 0.08042, 62, -203.08, -117.24, 0.0725, 5, 58, 414.43, 146.25, 0.07359, 59, 291.61, 7.27, 0.20198, 60, 161.53, -8.2, 0.23762, 61, 22.27, -1.17999, 0.24024, 62, -94.86, -42.56, 0.24654, 4, 59, 404.01, -32.87, 0.12351, 60, 269.61, -58.84, 0.22261, 61, 141.21, -11.13, 0.30609, 62, 17.98, -3.72, 0.34777, 1, 8, 26.4, -166.06, 1, 1, 8, 87.21, -106.12, 1, 1, 8, 108.19, -49.62, 1, 2, 8, 61.73, -82.12999, 0.50021, 39, 4.42, 52.83, 0.49978, 2, 8, 22.84, -109.4, 0.50021, 39, 51.52, 46.73, 0.49978, 4, 6, 247.12, -50.52, 0.06545, 7, 60.86, -121.4, 0.06069, 8, -30.3, -118, 0.49079, 39, 96.58, 17.21999, 0.38305, 1, 2, 26.73, 14.8, 1, 2, 2, -107.97, 25.67, 0.24192, 58, 60.17, -6.91, 0.75807, 4, 2, 235.53, 102.96, 0.0761, 6, 150.1, 9.35, 0.35533, 7, 27.64, -12.34, 0.41675, 8, -44.43, -4.87, 0.1518, 3, 2, 227.15, 28.49, 0.31015, 6, 95.96, -42.46, 0.60548, 7, -47.23, -15.44, 0.08435, 2, 8, 5.19, -153.1, 0.87618, 39, 90.96, 71.21, 0.12381, 4, 6, 243.13, -60.59, 0.10669, 7, 51.21, -126.33, 0.09893, 8, -40.65, -121.21, 0.47072, 39, 105.71, 17.33, 0.32363, 1, 8, 23.69, -185.21, 1, 1, 8, 79.64, -175.94, 1, 1, 8, 93.96, -187.56, 1, 1, 8, 87.07, -206.55, 1, 1, 8, 64.19999, -216.74, 1, 1, 8, 52.23, -203.68, 1, 1, 8, 59.24, -187.03, 1, 1, 8, 64.26, -223.8, 1, 1, 8, 89.44, -211.41, 1, 1, 8, 102.04, -186.95, 1, 1, 8, 83.1, -166.14, 1, 1, 8, 46.84, -186.41, 1, 1, 8, 50.32, -204.36, 1, 1, 8, 41.7, -206.59, 1, 1, 8, 61.87, -230.97, 1, 5, 58, 374.97, 143.6, 0.10291, 59, 256.29, 17.42, 0.23985, 60, 127.43, 2.07, 0.2431, 61, -13.35, -3.05, 0.20854, 62, -128.14, -55.46, 0.20557, 4, 59, 327.21, 4.42, 0.17789, 60, 196.28, -19.32, 0.24248, 61, 58.71, -1.04999, 0.28055, 62, -62.24, -26.21, 0.29905, 5, 58, 318.32, 113.62, 0.17774, 59, 192.26, 20.14, 0.33383, 60, 64.19, 12.44, 0.24171, 61, -76.55, -13.67, 0.12849, 62, -182.56, -89.31, 0.11821, 2, 8, 56.98, -162.99, 0.89259, 39, 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": "mesh", "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 + "vertices": [ 2, 21, 3.06, 31.88, 0.51075, 6, 66.56, -109.48, 0.48924, 1, 21, 35.87, 35.62, 1, 2, 21, 60.94, 27.12, 0.8464, 22, 46.49, 31.12, 0.15358, 2, 21, 74.05, 22.67, 0.3492, 22, 36.5, 21.53, 0.65078, 3, 21, 67, 31.58, 0.10937, 22, 47.66, 23.68, 0.78125, 31, -40.93, -19.44, 0.10937, 2, 22, 86.98, 31.24, 0.65078, 31, -25.75, 17.61, 0.3492, 2, 22, 103.83, 34.49, 0.34375, 31, -19.24, 33.49, 0.65625, 2, 22, 114.04, 19.51, 0.10937, 31, -1.11, 33.84, 0.89062, 1, 31, 53.62, 34.88, 1, 1, 31, 96.03, -19.16, 1, 1, 31, 104.2, -47.31, 1, 1, 31, 71.33999, -23.98, 1, 1, 31, 81.39, -64.61, 1, 1, 31, 76.8, -68.81, 1, 1, 31, 46.65, -34.25, 1, 2, 22, 73.12999, -45.76, 0.10937, 31, 31.14, -36.12, 0.89062, 2, 22, 73.98, -26.9, 0.34375, 31, 15.82, -25.09, 0.65625, 2, 22, 65.1, -26.69, 0.65078, 31, 10.78, -32.41, 0.3492, 3, 21, 133.56, 9.13, 0.10937, 22, -2.94, -25.03, 0.78125, 31, -27.84, -88.47, 0.10937, 2, 21, 123.67, -14.42, 0.3492, 22, -19.29, -5.39, 0.65078, 2, 21, 97.41, -15.43, 0.8464, 22, -8.08, 18.37, 0.15358, 1, 21, 45.46, -17.43, 1, 2, 21, 40.68999, -27.17, 0.45035, 6, -1.69, -93.8, 0.54964, 2, 21, -2.74, -29.63, 0.44352, 6, 18.99, -72.93, 0.55646, 1, 6, 32.11, -48.45, 1, 1, 6, 57.56, -67.43, 1, 1, 6, 84.38, -87.42, 1, 2, 21, 16.44, 5.21, 0.7182, 6, 46.31, -101.86, 0.28178, 2, 21, -4.51, 5.32, 0.48851, 6, 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": "mesh", "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, 41, 42, 44, 43, 9, 10, 42, 43, 10, 41, 43, 42, 10, 13, 42, 11, 13, 10, 13, 11, 12, 13, 44, 42, 14, 15, 13, 45, 8, 9, 45, 40, 8, 16, 40, 45, 17, 40, 16, 16, 45, 15, 15, 45, 44, 45, 41, 44, 15, 44, 13, 45, 9, 43, 45, 43, 41, 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": [ 2, 25, 128.03, 88.47, 0.8504, 1, 158.83, -71.91, 0.14959, 2, 25, 219.55, 53.15, 0.77988, 26, -48.04, -38.58, 0.22011, 2, 25, 266.3, 35.09999, 0.53544, 26, -36.73, 10.22, 0.46455, 2, 25, 286.89, 9.79, 0.35166, 26, -14.56, 34.14, 0.64832, 2, 25, 281.54, -41.24, 0.09228, 26, 36.71, 36, 0.90771, 3, 25, 271.53, -136.86, 0.05786, 26, 132.77, 39.48, 0.71425, 27, 34.99, 78.76, 0.22787, 3, 26, 158.21, 55.17, 0.5308, 27, 52.65, 54.63, 0.38143, 28, 7.01, 85.54, 0.08776, 5, 26, 167.14, 99.49, 0.21498, 27, 97.55, 49.25, 0.35357, 28, 28.72, 45.87, 0.14219, 29, -21.26, 49.99, 0.22491, 30, -72.29, 25.96, 0.06431, 5, 26, 154.22, 105.55, 0.07537, 27, 102.57, 62.6, 0.23051, 28, 42.51, 49.55, 0.28379, 29, -7.06, 51.39, 0.27004, 30, -58.17, 28.03, 0.14026, 4, 27, 109.72, 83.39, 0.11607, 28, 64.08999, 55.23, 0.08123, 29, 15.12, 53.51, 0.36961, 30, -36.09, 31.19, 0.43307, 1, 30, 35.8, 41.81, 1, 1, 30, 128.11, 17.93, 1, 1, 30, 188.72, -29.42, 1, 2, 29, 93.29, -7.6, 0.47999, 30, 44.86, -26.17, 0.52, 2, 29, 133.17, -49.83, 0.776, 30, 86.69, -66.47, 0.22399, 2, 29, 78.78, -50.15, 0.76799, 30, 32.38, -69.36, 0.232, 1, 29, -4.91, -33.55, 1, 3, 27, 155.04, -5.13, 0.35917, 28, 17.87999, -32.5, 0.30632, 29, -44.62, -25.61, 0.33449, 4, 26, 254.98, 126.27, 0.10154, 27, 131.21, -36.2, 0.54211, 28, -21.24, -31.17, 0.20873, 29, -83.01999, -17.96999, 0.1476, 3, 26, 240.33, 7.81, 0.25586, 27, 11.94, -30.98, 0.61614, 28, -86.31, 68.9, 0.12797, 2, 26, 239.26, -23.1, 0.45486, 27, -18.95999, -32.37, 0.54513, 3, 25, 187.65, -209.73, 0.09777, 26, 216.66, -33.34999, 0.58892, 27, -30.97, -10.65, 0.3133, 2, 25, 163.85, -128.67, 0.19603, 26, 139.75, -68.26, 0.80396, 2, 25, 165.74, -94.49, 0.31962, 26, 105.59, -71.26, 0.68037, 2, 25, 166.39, -79.07, 0.46225, 26, 90.23, -72.76, 0.53774, 2, 25, 166.49, -74.17, 0.53785, 26, 85.42, -73.28, 0.46213, 2, 25, 141.54, -82.46, 0.73138, 26, 97.13, -96.82, 0.26861, 2, 25, 99.76, -97.08, 0.85324, 26, 117.34, -136.23, 0.14675, 2, 25, 45.01, -114.56, 0.83615, 1, -51.09, -135.29, 0.16384, 2, 25, -16.2, -74.76, 0.62989, 1, -42.95, -58.38, 0.3701, 2, 25, -74.73, -19.33, 0.31468, 1, -52.66, 17.54999, 0.68531, 2, 25, 1.67, 76.75, 0.25576, 1, 70.07, 18.78, 0.74423, 1, 25, 93.54, 4.13, 1, 2, 25, 185.14, -6.66, 0.75461, 26, 15.98, -64.26999, 0.24538, 2, 25, 217.11, -18.75, 0.50844, 26, 23.47, -30.93, 0.49154, 2, 25, 225.63, -32.91999, 0.32527, 26, 36.3, -20.5, 0.67472, 2, 25, 223, -84.73, 0.20192, 26, 87.96, -15.86, 0.79807, 3, 25, 235.61, -168.06, 0.0809, 26, 168.69, 8.29, 0.57147, 27, 6.74, 40.47, 0.34761, 3, 26, 191.79, 35.8, 0.32545, 27, 36, 19.62, 0.57243, 28, -31.14, 78.74, 0.10211, 4, 26, 206.64, 111.53, 0.10808, 27, 112.69, 10.82, 0.52067, 28, 6.25, 11.23, 0.23517, 29, -49.03, 19.43, 0.13606, 3, 27, 130.6, 26.41, 0.35067, 28, 29.35, 5.71, 0.28241, 29, -27.12, 10.25, 0.3669, 2, 29, 67.46, 3.16, 0.384, 30, 18.54999, -16.62999, 0.61599, 1, 30, 19.07, -14.51, 1, 2, 29, 36, 24.95, 0.384, 30, -13.89, 3.64, 0.61599, 2, 29, 86.23, -6.55, 0.48799, 30, 37.75, -25.46, 0.512, 4, 26, 164.9, 153.55, 0.02263, 27, 151.18, 56, 0.23908, 28, 65.44, 5.55, 0.19254, 29, 8.45, 4.27, 0.54574, 2, 25, -9.28, -17.5, 0.59605, 1, 7.72, -30.85, 0.40393, 2, 25, 195.9, -53.81, 0.42368, 26, 61.11, -47.06, 0.5763, 2, 25, 190.1, -48.45, 0.53231, 26, 56.61, -53.56, 0.46768, 2, 25, 161.26, -48.26, 0.79873, 26, 60.44, -82.12999, 0.20126, 2, 25, 120.37, -58.54, 0.85455, 26, 76.31, -121.18, 0.14544, 2, 25, 197.37, -69.23, 0.3355, 26, 76.17, -43.46, 0.66449 ], + "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": "mesh", "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, 44, 53.94, 69.15, 1, 1, 44, 126.23, 67.31, 1, 2, 44, 226.42, 31.13, 0.9375, 45, -30.87, -1.11, 0.0625, 2, 44, 240.84, 25.33, 0.7, 45, -25.64, 13.52, 0.3, 2, 44, 246.67, 8.05, 0.3, 45, -8.60999, 20.02, 0.7, 3, 44, 240.81, -115.25, 0.0625, 45, 114.8, 19.01, 0.875, 46, 9.47999, 59.16, 0.0625, 2, 45, 131.07, 29.69, 0.7, 46, 22.11, 44.35, 0.3, 2, 45, 146.06, 39.54, 0.3, 46, 33.75999, 30.71, 0.7, 3, 45, 152.6, 65.01, 0.12566, 46, 59.85, 27.41, 0.75203, 47, 15.85, 48.05, 0.12229, 3, 45, 154.28, 71.58999, 0.05444, 46, 66.58999, 26.56, 0.78401, 47, 16.71999, 41.31, 0.16154, 3, 46, 71.19, 35.75999, 0.64716, 47, 26.78, 39.16999, 0.13169, 48, -67.32, 18.95999, 0.22114, 3, 46, 87.93, 69.21, 0.0625, 47, 63.37, 31.39, 0.675, 48, -30.17, 23.3, 0.26249, 2, 47, 113.82, 35.72, 0.1038, 48, 16.23, 43.56, 0.89619, 1, 48, 128.14, 12.02, 1, 1, 48, 161.85, -15.81, 1, 2, 47, 90.98, -23.36, 0.0138, 48, 13.52, -19.71999, 0.98619, 2, 47, 62.97, -25.81, 0.7, 48, -12.23, -31.02, 0.3, 3, 46, 115.12, -1.33, 0.08333, 47, 1.93, -12.66, 0.83333, 48, -74.26, -38.09999, 0.08333, 2, 46, 106.11, -23.53, 0.3, 47, -21.8, -9.52, 0.7, 2, 46, 97.43, -44.9, 0.7, 47, -44.67, -6.51, 0.3, 2, 46, 84.26, -40.68999, 0.9375, 47, -43.9, 7.29, 0.0625, 1, 46, 49.18, -29.46, 1, 2, 45, 206.75, 5.37, 0.13333, 46, 7.44, -33.77, 0.86666, 2, 45, 219.64, -20.52, 0.36111, 46, -16.64, -49.8, 0.63888, 2, 45, 208.4, -37.82, 0.72083, 46, -35.22, -40.82, 0.27916, 2, 45, 200.49, -50.02, 0.91666, 46, -48.31, -34.48, 0.08333, 1, 45, 161.1, -36.97, 1, 2, 44, 150.1, -116.76, 0.08333, 45, 119.88, -71.55, 0.91666, 2, 44, 154.99, -70.71, 0.42846, 45, 73.68, -68.47, 0.57153, 2, 44, 150.3, -65.26999, 0.35604, 45, 68.42, -73.36, 0.64395, 2, 44, 146.51, -60.87, 0.59147, 45, 64.17, -77.32, 0.40852, 2, 44, 115.12, -75.08, 0.8446, 45, 79.61, -108.13, 0.15538, 1, 44, 63.33, -98.53, 1, 1, 44, 21.78, -94.55, 1, 1, 44, -66.69, -32.04, 1, 1, 44, -6.62, 52.97, 1, 1, 44, 58.14, -6, 1, 1, 44, 121.17, 2.44, 1, 1, 44, 188.87, -12.1, 1, 2, 44, 197.11, -18.42, 0.7, 45, 19.79, -28.44, 0.3, 2, 44, 203.98, -28.61, 0.3, 45, 29.69, -21.17, 0.7, 1, 45, 136.67, -7.42, 1, 2, 45, 164.32, 0.66, 0.7, 46, -2.53, 7.73, 0.3, 2, 45, 177.97, 21.57, 0.25, 46, 19.92, -3.19, 0.75, 1, 46, 71.93, -6.29, 1, 2, 46, 79.66, -3.72, 0.7, 47, -9.28, 21.04, 0.3, 2, 46, 87.98, 7.25, 0.3125, 47, 3.42, 15.76, 0.6875, 3, 46, 114.16, 61.85, 0.04, 47, 62.84, 4.15, 0.7, 48, -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": "mesh", + "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": [ 14, 13, 0, 14, 0, 1, 5, 3, 4, 10, 14, 1, 11, 14, 10, 6, 3, 5, 2, 10, 1, 7, 2, 3, 7, 3, 6, 2, 8, 10, 8, 9, 10, 2, 7, 8, 14, 12, 13, 11, 12, 14 ], + "vertices": [ 1, 39, 28.6, 68.85, 1, 1, 39, 69.65, 38.95, 1, 1, 39, 150.72, 72.87999, 1, 1, 39, 186.16, 74.79, 1, 1, 39, 199.76, 159.69, 1, 1, 39, 213.35, 148.16, 1, 1, 39, 242.43, 74.42, 1, 1, 39, 230.31, -13.08, 1, 1, 39, 189.56, -71.99, 1, 1, 39, 132.76, -105.6, 1, 1, 39, 83.71, -55.39, 1, 2, 8, -18.31, 12.1, 0.67732, 39, -0.04, -70.76, 0.32267, 1, 8, 113.44, 16.95, 1, 1, 8, 116.36, -62.48, 1, 1, 39, 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": "mesh", "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, 52, 3.9, -3.27, 1, 1, 52, 4.25, 15.05, 1, 1, 52, 13.24, 20.28, 1, 2, 52, 23.42, 21.2, 0.7, 53, -15.2, 21.22, 0.3, 3, 52, 41.11, 22.87, 0.3, 53, 2.48, 22.89, 0.6375, 54, -33.83, 24.96, 0.0625, 3, 52, 52.07, 21.72, 0.0625, 53, 13.43, 21.74, 0.6375, 54, -22.97, 23.11, 0.3, 2, 53, 18.39, 20.76, 0.25, 54, -18.09, 21.82, 0.75, 1, 54, -18.76, 33.09, 1, 1, 54, 49.92, 31.57, 1, 1, 54, 53.21, 25, 1, 1, 54, 53.11, -27.48, 1, 1, 54, 49.74, -31.27, 1, 1, 54, -20.73, -36.75999, 1, 1, 54, -23.82, -22.28, 1, 3, 52, 53.48, -24.61, 0.0625, 53, 14.84, -24.59, 0.575, 54, -24.51, -23.21, 0.3625, 3, 52, 41.43999, -26.12, 0.3, 53, 2.81, -26.09, 0.6375, 54, -36.62, -23.95, 0.0625, 2, 52, 24.38, -26.12, 0.7, 53, -14.24, -26.1, 0.3, 1, 52, 5.57, -26.12, 1, 1, 52, 3.54, -22.64, 1, 1, 54, -23.08, -0.04, 1, 2, 52, 41.66, -1.72, 0.3125, 53, 3.03, -1.7, 0.6875, 2, 52, 23.85, -2.46, 0.7, 53, -14.77, -2.44, 0.3, 2, 53, 13.95, -1.5, 0.64582, 54, -23.94, -0.11, 0.35416 ], + "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": "mesh", "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 + "vertices": [ 2, 63, 3.63, 27.04, 0.6875, 64, -47.26, 33.87, 0.3125, 3, 63, 39.09, 19.45, 0.3125, 64, -13.41, 20.86, 0.625, 65, -51.54, 33.37, 0.0625, 3, 63, 71.56, 19.02, 0.0625, 64, 18.58, 15.39, 0.625, 65, -21.56, 20.92, 0.3125, 2, 64, 55.03, 16.85, 0.3125, 65, 14.29, 14.23, 0.6875, 2, 64, 93.34, 18.39, 0.08333, 65, 51.98, 7.21, 0.91666, 1, 65, 56.09, -4.5, 1, 2, 64, 85.06, -1.49, 0.08333, 65, 39.48, -10.33, 0.91666, 2, 64, 54.22, -9.18, 0.3125, 65, 7.71, -10.96, 0.6875, 3, 63, 75.14, -14.72, 0.0625, 64, 16.87, -18.5, 0.625, 65, -30.77, -11.73, 0.3125, 3, 63, 38.8, -25.8, 0.3125, 64, -20.74, -23.8, 0.625, 65, -68.62, -8.53, 0.0625, 2, 63, 2.4, -35.77, 0.6875, 64, -58.25, -27.99, 0.3125, 2, 63, -17.28, -40.62, 0.91666, 64, -78.44999, -29.71, 0.08333, 1, 63, -59.91, 8.18, 1, 2, 63, -26.13, 37.68999, 0.91666, 64, -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": "mesh", "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 + "vertices": [ 2, 56, 24.71, 8.03, 0.80344, 57, -17.42, 11.02, 0.19655, 2, 56, 37.95, 8.04, 0.59978, 57, -4.36, 8.87, 0.40021, 2, 56, 50.88, 8.04, 0.36895, 57, 8.39, 6.77, 0.63103, 2, 56, 65.92, 12.27, 0.17748, 57, 23.91, 8.47999, 0.82251, 2, 56, 81.72, 16.7, 0.05943, 57, 40.23, 10.28, 0.94056, 2, 56, 98.82, 25.04, 0.01209, 57, 58.46, 15.71, 0.9879, 2, 56, 114.44, 11.57, 0.00191, 57, 71.67, -0.11, 0.99808, 2, 56, 100.47, -4.61, 0.01816, 57, 55.25, -13.81, 0.98182, 2, 56, 78.79, -4.14, 0.07487, 57, 33.93999, -9.81, 0.92512, 2, 56, 65.83, -6.24, 0.2028, 57, 20.81, -9.76, 0.79719, 2, 56, 49.78, -8.83, 0.39971, 57, 4.55, -9.7, 0.60028, 2, 56, 37.93, -10.97, 0.62658, 57, -7.48, -9.88, 0.37341, 2, 56, 25.85, -13.15, 0.82034, 57, -19.75, -10.06, 0.17965, 2, 56, 0.25, -18.03, 0.95288, 57, -45.81, -10.7, 0.04711, 2, 56, -17.83, -2.43, 0.97709, 57, -61.11, 7.63, 0.0229, 2, 56, 1.57, 20.07, 0.94774, 57, -38.29, 26.67, 0.05225, 2, 56, 10.84, -1.23, 0.97709, 57, -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,7 +480,1179 @@ } }, "animations": { - "empty": {}, + "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 } + ] + } + } + }, "gungrab": { "slots": { "front_hand": { @@ -439,13 +1727,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 } ] } }, @@ -552,9 +1834,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 +1862,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 +1915,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 +1925,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 +1973,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 +2106,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,36 +2233,43 @@ }, "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": { "rotate": [ - { "time": 0, "angle": 44.18 }, + { "time": 0, "angle": 36.9 }, { "time": 0.0666, "angle": 7.88 }, { "time": 0.1333, "angle": 4.66 }, { "time": 0.4, "angle": 7.59 }, { "time": 0.5333, "angle": 8.08 }, { "time": 0.6666, "angle": -67.33 }, { "time": 0.7333, "angle": -65.23 }, - { "time": 1, "angle": 42.33 }, - { "time": 1.0666, "angle": 44.18 } + { "time": 1, "angle": 27.74 }, + { "time": 1.0666, "angle": 36.9 } ], "translate": [ { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, @@ -1098,23 +2369,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": { @@ -1132,7 +2419,7 @@ }, "front_foot3": { "rotate": [ - { "time": 0, "angle": 27.59 }, + { "time": 0, "angle": -1.65 }, { "time": 0.0666, "angle": -5.29 }, { "time": 0.1333, "angle": -3.94 }, { "time": 0.2666, "angle": -3.81 }, @@ -1141,8 +2428,8 @@ { "time": 0.6666, "angle": -73.63 }, { "time": 0.7333, "angle": -102.81 }, { "time": 0.8333, "angle": -41.3 }, - { "time": 1, "angle": 27.59 }, - { "time": 1.0666, "angle": 27.59 } + { "time": 1, "angle": 10.93 }, + { "time": 1.0666, "angle": -1.65 } ], "translate": [ { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, @@ -1283,21 +2570,21 @@ ] } }, - "ffd": { + "deform": { "default": { "raptor_body": { "raptor_body": [ { "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": 314, + "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, -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": 314, + "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, -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 +2595,18 @@ { "time": 0.2666 }, { "time": 0.5333, - "offset": 216, - "vertices": [ -2.23, 21.95, 21.54, -4.75 ] + "offset": 138, + "vertices": [ -2.23608, 21.95403, 21.54915, -4.7554 ] }, { "time": 0.6, - "offset": 216, - "vertices": [ 7.17, 15.14, 15.26, -6.91 ] + "offset": 138, + "vertices": [ 7.17962, 15.14358, 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": 110, + "vertices": [ -0.82485, 0.73406, -0.01284, -1.10443, 0, 0, 0, 0, 1.4866, -2.59426, 0.98071, 2.82342, 2.7366, -10.49935, 6.12506, 8.95282, -2.60873, -2.28384, 3.43417, -0.47045, -2.28305, -4.76037, 5.08892, 1.40078, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 ] }, { "time": 0.8, "curve": "stepped" }, { "time": 0.9666, "curve": "stepped" }, diff --git a/spine-cocos2dx/example/Resources/common/raptor.png b/spine-cocos2dx/example/Resources/common/raptor.png index 861dbce1a..625072a67 100644 Binary files a/spine-cocos2dx/example/Resources/common/raptor.png and b/spine-cocos2dx/example/Resources/common/raptor.png differ diff --git a/spine-cocos2dx/example/Resources/common/spineboy.atlas b/spine-cocos2dx/example/Resources/common/spineboy.atlas new file mode 100644 index 000000000..e9500cc4a --- /dev/null +++ b/spine-cocos2dx/example/Resources/common/spineboy.atlas @@ -0,0 +1,195 @@ + +spineboy.png +size: 1024,1024 +format: RGBA8888 +filter: Linear,Linear +repeat: none +eye_indifferent + rotate: false + xy: 550, 694 + size: 93, 89 + orig: 93, 89 + offset: 0, 0 + index: -1 +eye_surprised + rotate: false + xy: 834, 856 + size: 93, 89 + orig: 93, 89 + offset: 0, 0 + index: -1 +front_bracer + rotate: false + xy: 678, 774 + size: 58, 80 + orig: 58, 80 + offset: 0, 0 + index: -1 +front_fist_closed + rotate: true + xy: 466, 593 + size: 75, 82 + orig: 75, 82 + offset: 0, 0 + index: -1 +front_fist_open + rotate: false + xy: 550, 605 + size: 86, 87 + orig: 86, 87 + offset: 0, 0 + index: -1 +front_foot + rotate: false + xy: 550, 785 + size: 126, 69 + orig: 126, 69 + offset: 0, 0 + index: -1 +front_foot_bend1 + rotate: true + xy: 375, 492 + size: 128, 70 + orig: 128, 70 + offset: 0, 0 + index: -1 +front_foot_bend2 + rotate: true + xy: 275, 330 + size: 108, 93 + orig: 108, 93 + offset: 0, 0 + index: -1 +front_shin + rotate: false + xy: 466, 670 + size: 82, 184 + orig: 82, 184 + offset: 0, 0 + index: -1 +front_thigh + rotate: false + xy: 214, 208 + size: 48, 112 + orig: 48, 112 + offset: 0, 0 + index: -1 +front_upper_arm + rotate: false + xy: 214, 109 + size: 54, 97 + orig: 54, 97 + offset: 0, 0 + index: -1 +goggles + rotate: false + xy: 466, 856 + size: 261, 166 + orig: 261, 166 + offset: 0, 0 + index: -1 +gun + rotate: false + xy: 2, 117 + size: 210, 203 + orig: 210, 203 + offset: 0, 0 + index: -1 +head + rotate: false + xy: 2, 322 + size: 271, 298 + orig: 271, 298 + offset: 0, 0 + index: -1 +mouth_grind + rotate: false + xy: 929, 896 + size: 93, 59 + orig: 93, 59 + offset: 0, 0 + index: -1 +mouth_oooo + rotate: false + xy: 929, 835 + size: 93, 59 + orig: 93, 59 + offset: 0, 0 + index: -1 +mouth_smile + rotate: false + xy: 447, 532 + size: 93, 59 + orig: 93, 59 + offset: 0, 0 + index: -1 +muzzle + rotate: false + xy: 2, 622 + size: 462, 400 + orig: 462, 400 + offset: 0, 0 + index: -1 +neck + rotate: false + xy: 796, 819 + size: 36, 41 + orig: 36, 41 + offset: 0, 0 + index: -1 +rear_bracer + rotate: false + xy: 738, 788 + size: 56, 72 + orig: 56, 72 + offset: 0, 0 + index: -1 +rear_foot + rotate: true + xy: 2, 2 + size: 113, 60 + orig: 113, 60 + offset: 0, 0 + index: -1 +rear_foot_bend1 + rotate: false + xy: 64, 49 + size: 117, 66 + orig: 117, 66 + offset: 0, 0 + index: -1 +rear_foot_bend2 + rotate: false + xy: 729, 862 + size: 103, 83 + orig: 103, 83 + offset: 0, 0 + index: -1 +rear_shin + rotate: true + xy: 729, 947 + size: 75, 178 + orig: 75, 178 + offset: 0, 0 + index: -1 +rear_thigh + rotate: true + xy: 909, 957 + size: 65, 104 + orig: 65, 104 + offset: 0, 0 + index: -1 +rear_upper_arm + rotate: true + xy: 447, 483 + size: 47, 87 + orig: 47, 87 + offset: 0, 0 + index: -1 +torso + rotate: false + xy: 275, 440 + size: 98, 180 + orig: 98, 180 + offset: 0, 0 + index: -1 diff --git a/spine-cocos2dx/example/Resources/common/spineboy.json b/spine-cocos2dx/example/Resources/common/spineboy.json index 1ffa7aad5..88bafe6a7 100644 --- a/spine-cocos2dx/example/Resources/common/spineboy.json +++ b/spine-cocos2dx/example/Resources/common/spineboy.json @@ -1,39 +1,31 @@ { +"skeleton": { "hash": "rPoYyBLFG6F0CGZ5wsUEBKDJU9U", "spine": "3.3.07", "width": 470.71, "height": 731.57, "images": "./images/" }, "bones": [ { "name": "hip", "y": 247.47 }, - { "name": "front_thigh", "parent": "hip", "length": 74.8, "x": -17.45, "y": -11.64, "rotation": -95.51, "color": "00ff04ff" }, - { "name": "rear_thigh", "parent": "hip", "length": 85.71, "x": 8.91, "y": -5.62, "rotation": -72.54, "color": "ff000dff" }, - { "name": "torso", "parent": "hip", "length": 127.55, "x": -1.61, "y": 4.9, "rotation": 103.82, "color": "e0da19ff" }, - { - "name": "front_shin", - "parent": "front_thigh", - "length": 128.76, - "x": 78.69, - "y": 1.6, - "rotation": -2.21, - "inheritScale": false, - "color": "00ff04ff" - }, - { "name": "front_upper_arm", "parent": "torso", "length": 69.45, "x": 103.75, "y": 19.32, "rotation": 168.37, "color": "00ff04ff" }, - { "name": "neck", "parent": "torso", "length": 25.45, "x": 127.49, "y": -0.3, "rotation": -31.53, "color": "e0da19ff" }, - { "name": "rear_shin", "parent": "rear_thigh", "length": 121.87, "x": 86.1, "y": -1.32, "rotation": -19.83, "color": "ff000dff" }, - { "name": "rear_upper_arm", "parent": "torso", "length": 51.93, "x": 92.35, "y": -19.22, "rotation": -169.55, "color": "ff000dff" }, + { "name": "torso", "parent": "hip", "length": 127.55, "rotation": 103.82, "x": -1.61, "y": 4.9, "color": "e0da19ff" }, + { "name": "front_upper_arm", "parent": "torso", "length": 69.45, "rotation": 168.37, "x": 103.75, "y": 19.32, "color": "00ff04ff" }, { "name": "front_bracer", "parent": "front_upper_arm", "length": 40.57, + "rotation": 18.29, "x": 68.8, "y": -0.68, - "rotation": 18.29, "color": "00ff04ff" }, - { "name": "front_foot", "parent": "front_shin", "length": 91.34, "x": 128.75, "y": -0.33, "rotation": 77.9, "color": "00ff04ff" }, - { "name": "head", "parent": "neck", "length": 263.57, "x": 27.66, "y": -0.25, "rotation": 23.18, "color": "e0da19ff" }, - { "name": "rear_bracer", "parent": "rear_upper_arm", "length": 34.55, "x": 51.35, "rotation": 23.15, "color": "ff000dff" }, - { "name": "rear_foot", "parent": "rear_shin", "length": 82.57, "x": 121.45, "y": -0.75, "rotation": 69.3, "color": "ff000dff" }, - { "name": "front_fist", "parent": "front_bracer", "length": 65.38, "x": 40.56, "y": 0.19, "rotation": 12.43, "color": "00ff04ff" }, - { "name": "gun", "parent": "rear_bracer", "length": 43.1, "x": 34.42, "y": -0.45, "rotation": 5.34, "color": "ff000dff" }, - { "name": "gunTip", "parent": "gun", "x": 201.04, "y": 52.13, "rotation": 6.83, "color": "ff000dff" } + { "name": "front_fist", "parent": "front_bracer", "length": 65.38, "rotation": 12.43, "x": 40.56, "y": 0.19, "color": "00ff04ff" }, + { "name": "front_thigh", "parent": "hip", "length": 74.8, "rotation": -95.51, "x": -17.45, "y": -11.64, "color": "00ff04ff" }, + { "name": "front_shin", "parent": "front_thigh", "length": 128.76, "rotation": -2.21, "x": 78.69, "y": 1.6, "color": "00ff04ff" }, + { "name": "front_foot", "parent": "front_shin", "length": 91.34, "rotation": 77.9, "x": 128.75, "y": -0.33, "color": "00ff04ff" }, + { "name": "rear_upper_arm", "parent": "torso", "length": 51.93, "rotation": -169.55, "x": 92.35, "y": -19.22, "color": "ff000dff" }, + { "name": "rear_bracer", "parent": "rear_upper_arm", "length": 34.55, "rotation": 23.15, "x": 51.35, "color": "ff000dff" }, + { "name": "gun", "parent": "rear_bracer", "length": 43.1, "rotation": 5.34, "x": 34.42, "y": -0.45, "color": "ff000dff" }, + { "name": "gunTip", "parent": "gun", "rotation": 6.83, "x": 201.04, "y": 52.13, "color": "ff000dff" }, + { "name": "neck", "parent": "torso", "length": 25.45, "rotation": -31.53, "x": 127.49, "y": -0.3, "color": "e0da19ff" }, + { "name": "head", "parent": "neck", "length": 263.57, "rotation": 23.18, "x": 27.66, "y": -0.25, "color": "e0da19ff" }, + { "name": "rear_thigh", "parent": "hip", "length": 85.71, "rotation": -72.54, "x": 8.91, "y": -5.62, "color": "ff000dff" }, + { "name": "rear_shin", "parent": "rear_thigh", "length": 121.87, "rotation": -19.83, "x": 86.1, "y": -1.32, "color": "ff000dff" }, + { "name": "rear_foot", "parent": "rear_shin", "length": 82.57, "rotation": 69.3, "x": 121.45, "y": -0.75, "color": "ff000dff" } ], "slots": [ { "name": "rear_upper_arm", "bone": "rear_upper_arm", "attachment": "rear_upper_arm" }, @@ -54,7 +46,8 @@ { "name": "goggles", "bone": "head", "attachment": "goggles" }, { "name": "front_bracer", "bone": "front_bracer", "attachment": "front_bracer" }, { "name": "front_fist", "bone": "front_fist", "attachment": "front_fist_closed" }, - { "name": "muzzle", "bone": "gunTip", "additive": true } + { "name": "muzzle", "bone": "gunTip", "blend": "additive" }, + { "name": "head-bb", "bone": "head" } ], "skins": { "default": { @@ -92,6 +85,13 @@ "head": { "head": { "x": 128.95, "y": 0.29, "rotation": -70.63, "width": 271, "height": 298 } }, + "head-bb": { + "head": { + "type": "boundingbox", + "vertexCount": 6, + "vertices": [ -19.14, -70.3, 40.8, -118.07, 257.77, -115.61, 285.16, 57.18, 120.77, 164.95, -5.06, 76.94 ] + } + }, "mouth": { "mouth_grind": { "x": 23.68, "y": -32.23, "rotation": -70.63, "width": 93, "height": 59 }, "mouth_oooo": { "x": 23.68, "y": -32.23, "rotation": -70.63, "width": 93, "height": 59 }, @@ -1825,10 +1825,6 @@ ] }, "muzzle": { - "attachment": [ - { "time": 0.1333, "name": "muzzle" }, - { "time": 0.2666, "name": null } - ], "color": [ { "time": 0.1333, @@ -1841,6 +1837,10 @@ "curve": [ 0.821, 0, 0.909, 0.89 ] }, { "time": 0.2666, "color": "ffffff00" } + ], + "attachment": [ + { "time": 0.1333, "name": "muzzle" }, + { "time": 0.2666, "name": null } ] } }, @@ -2008,7 +2008,7 @@ ] } }, - "draworder": [ + "drawOrder": [ { "time": 0.6666, "offsets": [ diff --git a/spine-cocos2dx/example/Resources/common/spineboy.png b/spine-cocos2dx/example/Resources/common/spineboy.png new file mode 100644 index 000000000..c336b66f6 Binary files /dev/null and b/spine-cocos2dx/example/Resources/common/spineboy.png differ diff --git a/spine-cocos2dx/example/Resources/common/tank.atlas b/spine-cocos2dx/example/Resources/common/tank.atlas new file mode 100644 index 000000000..b925bb065 --- /dev/null +++ b/spine-cocos2dx/example/Resources/common/tank.atlas @@ -0,0 +1,125 @@ + +tank.png +size: 2048,2048 +format: RGBA8888 +filter: Linear,Linear +repeat: none +images/antenna + rotate: true + xy: 1295, 1730 + size: 22, 303 + orig: 22, 303 + offset: 0, 0 + index: -1 +images/cannon + rotate: true + xy: 504, 769 + size: 931, 58 + orig: 931, 58 + offset: 0, 0 + index: -1 +images/cannonConnector + rotate: false + xy: 564, 1239 + size: 112, 135 + orig: 112, 135 + offset: 0, 0 + index: -1 +images/guntower + rotate: false + xy: 1295, 1754 + size: 730, 289 + orig: 730, 289 + offset: 0, 0 + index: -1 +images/machinegun + rotate: true + xy: 504, 436 + size: 331, 57 + orig: 331, 57 + offset: 0, 0 + index: -1 +images/machinegun-mount + rotate: false + xy: 2, 2 + size: 72, 96 + orig: 72, 96 + offset: 0, 0 + index: -1 +images/rock + rotate: false + xy: 226, 358 + size: 252, 55 + orig: 252, 55 + offset: 0, 0 + index: -1 +images/tankBottom + rotate: true + xy: 226, 415 + size: 1285, 276 + orig: 1285, 276 + offset: 0, 0 + index: -1 +images/tankBottom-shadow + rotate: false + xy: 2, 1702 + size: 1291, 341 + orig: 1291, 341 + offset: 0, 0 + index: -1 +images/tankTop + rotate: true + xy: 2, 293 + size: 1407, 222 + orig: 1407, 222 + offset: 0, 0 + index: -1 +images/tread + rotate: false + xy: 226, 326 + size: 96, 30 + orig: 96, 30 + offset: 0, 0 + index: -1 +images/tread-inside + rotate: false + xy: 195, 263 + size: 25, 28 + orig: 25, 28 + offset: 0, 0 + index: -1 +images/wheel-big + rotate: false + xy: 2, 100 + size: 191, 191 + orig: 191, 191 + offset: 0, 0 + index: -1 +images/wheel-big-overlay + rotate: false + xy: 564, 1514 + size: 186, 186 + orig: 186, 186 + offset: 0, 0 + index: -1 +images/wheel-mid + rotate: false + xy: 564, 1376 + size: 136, 136 + orig: 136, 136 + offset: 0, 0 + index: -1 +images/wheel-mid-overlay + rotate: false + xy: 752, 1564 + size: 136, 136 + orig: 136, 136 + offset: 0, 0 + index: -1 +images/wheel-small + rotate: false + xy: 890, 1629 + size: 71, 71 + orig: 71, 71 + offset: 0, 0 + index: -1 diff --git a/spine-cocos2dx/example/Resources/common/tank.json b/spine-cocos2dx/example/Resources/common/tank.json new file mode 100644 index 000000000..c26ccbe47 --- /dev/null +++ b/spine-cocos2dx/example/Resources/common/tank.json @@ -0,0 +1,1899 @@ +{ +"skeleton": { "hash": "kgtyty1lpfv5JU2lygtFi2u3oQQ", "spine": "3.3.07", "width": 1914.53, "height": 964.05, "images": "" }, +"bones": [ + { "name": "root" }, + { "name": "tankRoot", "parent": "root", "y": 200 }, + { "name": "tankTreads", "parent": "tankRoot" }, + { "name": "tankBody", "parent": "tankTreads", "y": 10 }, + { "name": "guntower", "parent": "tankBody", "x": -21.72, "y": 245.47 }, + { "name": "antennaRoot", "parent": "guntower", "x": 164.6, "y": 202.52 }, + { "name": "antenna1", "parent": "antennaRoot", "length": 40, "rotation": 90, "y": 39.99, "color": "ffee00ff" }, + { "name": "antenna2", "parent": "antenna1", "length": 42, "x": 42, "color": "ffee00ff" }, + { "name": "antenna3", "parent": "antenna2", "length": 42, "x": 42, "color": "ffee00ff" }, + { "name": "antenna4", "parent": "antenna3", "length": 42, "x": 42, "color": "ffee00ff" }, + { "name": "antenna5", "parent": "antenna4", "length": 42, "x": 42, "color": "ffee00ff" }, + { "name": "antenna6", "parent": "antenna5", "length": 42, "x": 42, "color": "ffee00ff" }, + { "name": "cannonConnector", "parent": "guntower", "x": -235.04, "y": 96.07 }, + { "name": "cannonTarget", "parent": "tankRoot", "x": -1486.66, "y": 351.82, "color": "ff3f00ff" }, + { "name": "cannon", "parent": "cannonConnector", "length": 946.68, "rotation": 180, "color": "ff4000ff" }, + { "name": "cannonTip", "parent": "cannon", "x": 946.68, "color": "ff4000ff" }, + { "name": "machineGunTarget", "parent": "tankRoot", "x": -1474, "y": 559.42, "color": "ff3f00ff" }, + { + "name": "machinegun-mount", + "parent": "guntower", + "length": 90.97, + "rotation": 90, + "x": -123.72, + "y": 218.32, + "color": "15ff00ff" + }, + { + "name": "machinegun", + "parent": "machinegun-mount", + "length": 208.94, + "rotation": 90, + "x": 91.52, + "y": -1.03, + "color": "15ff00ff" + }, + { "name": "machinegun-tip", "parent": "machinegun", "x": 210.42, "y": -12.2 }, + { "name": "rock", "parent": "root", "x": -656.45 }, + { + "name": "tread", + "parent": "tankRoot", + "length": 82, + "rotation": 180, + "x": -22.89, + "y": 213.85, + "scaleX": 0.993, + "color": "e64344ff" + }, + { "name": "tread2", "parent": "tread", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread3", "parent": "tread2", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread4", "parent": "tread3", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread5", "parent": "tread4", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread6", "parent": "tread5", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread7", "parent": "tread6", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread8", "parent": "tread7", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread9", "parent": "tread8", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread10", "parent": "tread9", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread11", "parent": "tread10", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread12", "parent": "tread11", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread13", "parent": "tread12", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread14", "parent": "tread13", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread15", "parent": "tread14", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread16", "parent": "tread15", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread17", "parent": "tread16", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread18", "parent": "tread17", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread19", "parent": "tread18", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread20", "parent": "tread19", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread21", "parent": "tread20", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread22", "parent": "tread21", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread23", "parent": "tread22", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread24", "parent": "tread23", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread25", "parent": "tread24", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread26", "parent": "tread25", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread27", "parent": "tread26", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread28", "parent": "tread27", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread29", "parent": "tread28", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread30", "parent": "tread29", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread31", "parent": "tread30", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread32", "parent": "tread31", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread33", "parent": "tread32", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread34", "parent": "tread33", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread35", "parent": "tread34", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread36", "parent": "tread35", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "wheel-midCenter", "parent": "tankRoot", "y": -114.56 }, + { "name": "treadCollider1", "parent": "wheel-midCenter", "x": -329.57, "y": -85.44, "color": "ff00fbff" }, + { "name": "treadCollider2", "parent": "wheel-midCenter", "x": -165.95, "y": -85.44, "color": "ff00fbff" }, + { "name": "treadCollider3", "parent": "wheel-midCenter", "y": -85.44, "color": "ff00fbff" }, + { "name": "treadCollider4", "parent": "wheel-midCenter", "x": 163.56, "y": -85.44, "color": "ff00fbff" }, + { "name": "treadCollider5", "parent": "wheel-midCenter", "x": 329.12, "y": -85.44, "color": "ff00fbff" }, + { "name": "treadGravity1", "parent": "tankRoot", "rotation": 180, "x": -175.35, "y": 109.99, "color": "ff00fbff" }, + { "name": "treadGravity2", "parent": "tankRoot", "rotation": 180, "x": 177.88, "y": 105.45, "color": "ff00fbff" }, + { "name": "wheel-bigRoot1", "parent": "tankTreads", "x": -549.59, "y": 14.39, "color": "abe323ff" }, + { "name": "wheel-big1", "parent": "wheel-bigRoot1", "x": -0.02, "color": "abe323ff" }, + { "name": "wheel-bigRoot2", "parent": "tankTreads", "x": 547.33, "y": 14.39 }, + { "name": "wheel-big2", "parent": "wheel-bigRoot2" }, + { "name": "wheel-midRoot1", "parent": "wheel-midCenter", "x": -410.57, "color": "abe323ff" }, + { "name": "wheel-mid1", "parent": "wheel-midRoot1", "color": "abe323ff" }, + { "name": "wheel-midRoot2", "parent": "wheel-midCenter", "x": -246.95 }, + { "name": "wheel-mid2", "parent": "wheel-midRoot2" }, + { "name": "wheel-midRoot3", "parent": "wheel-midCenter", "x": -82.72 }, + { "name": "wheel-mid3", "parent": "wheel-midRoot3" }, + { "name": "wheel-midRoot4", "parent": "wheel-midCenter", "x": 80.89 }, + { "name": "wheel-mid4", "parent": "wheel-midRoot4" }, + { "name": "wheel-midRoot5", "parent": "wheel-midCenter", "x": 244.51 }, + { "name": "wheel-mid5", "parent": "wheel-midRoot5" }, + { "name": "wheel-midRoot6", "parent": "wheel-midCenter", "x": 408.73 }, + { "name": "wheel-mid6", "parent": "wheel-midRoot6" }, + { "name": "wheel-smallRoot1", "parent": "tankTreads", "x": -337.38, "y": 109.43 }, + { "name": "wheel-small1", "parent": "wheel-smallRoot1", "color": "abe323ff" }, + { "name": "wheel-smallRoot2", "parent": "tankTreads", "x": 0.08, "y": 109.43 }, + { "name": "wheel-small2", "parent": "wheel-smallRoot2" }, + { "name": "wheel-smallRoot3", "parent": "tankTreads", "x": 334.68, "y": 109.43 }, + { "name": "wheel-small3", "parent": "wheel-smallRoot3" } +], +"slots": [ + { "name": "tankBody-shadow", "bone": "tankBody", "color": "ffffffb9", "attachment": "images/tankBottom-shadow" }, + { "name": "bottom", "bone": "tankBody", "attachment": "images/tankBottom" }, + { "name": "tread-inside1", "bone": "tread", "attachment": "images/tread-inside" }, + { "name": "tread-inside53", "bone": "tread27", "attachment": "images/tread-inside" }, + { "name": "tread-inside27", "bone": "tread14", "attachment": "images/tread-inside" }, + { "name": "tread-inside3", "bone": "tread2", "attachment": "images/tread-inside" }, + { "name": "tread-inside55", "bone": "tread28", "attachment": "images/tread-inside" }, + { "name": "tread-inside29", "bone": "tread15", "attachment": "images/tread-inside" }, + { "name": "tread-inside5", "bone": "tread3", "attachment": "images/tread-inside" }, + { "name": "tread-inside57", "bone": "tread29", "attachment": "images/tread-inside" }, + { "name": "tread-inside31", "bone": "tread16", "attachment": "images/tread-inside" }, + { "name": "tread-inside7", "bone": "tread4", "attachment": "images/tread-inside" }, + { "name": "tread-inside59", "bone": "tread30", "attachment": "images/tread-inside" }, + { "name": "tread-inside33", "bone": "tread17", "attachment": "images/tread-inside" }, + { "name": "tread-inside9", "bone": "tread5", "attachment": "images/tread-inside" }, + { "name": "tread-inside61", "bone": "tread31", "attachment": "images/tread-inside" }, + { "name": "tread-inside35", "bone": "tread18", "attachment": "images/tread-inside" }, + { "name": "tread-inside11", "bone": "tread6", "attachment": "images/tread-inside" }, + { "name": "tread-inside63", "bone": "tread32", "attachment": "images/tread-inside" }, + { "name": "tread-inside37", "bone": "tread19", "attachment": "images/tread-inside" }, + { "name": "tread-inside13", "bone": "tread7", "attachment": "images/tread-inside" }, + { "name": "tread-inside65", "bone": "tread33", "attachment": "images/tread-inside" }, + { "name": "tread-inside39", "bone": "tread20", "attachment": "images/tread-inside" }, + { "name": "tread-inside15", "bone": "tread8", "attachment": "images/tread-inside" }, + { "name": "tread-inside67", "bone": "tread34", "attachment": "images/tread-inside" }, + { "name": "tread-inside69", "bone": "tread35", "attachment": "images/tread-inside" }, + { "name": "tread-inside71", "bone": "tread36", "attachment": "images/tread-inside" }, + { "name": "tread-inside41", "bone": "tread21", "attachment": "images/tread-inside" }, + { "name": "tread-inside17", "bone": "tread9", "attachment": "images/tread-inside" }, + { "name": "tread-inside43", "bone": "tread22", "attachment": "images/tread-inside" }, + { "name": "tread-inside19", "bone": "tread10", "attachment": "images/tread-inside" }, + { "name": "tread-inside45", "bone": "tread23", "attachment": "images/tread-inside" }, + { "name": "tread-inside21", "bone": "tread11", "attachment": "images/tread-inside" }, + { "name": "tread-inside47", "bone": "tread24", "attachment": "images/tread-inside" }, + { "name": "tread-inside23", "bone": "tread12", "attachment": "images/tread-inside" }, + { "name": "tread-inside49", "bone": "tread25", "attachment": "images/tread-inside" }, + { "name": "tread-inside25", "bone": "tread13", "attachment": "images/tread-inside" }, + { "name": "tread-inside51", "bone": "tread26", "attachment": "images/tread-inside" }, + { "name": "tread-inside2", "bone": "tread", "attachment": "images/tread-inside" }, + { "name": "tread-inside54", "bone": "tread27", "attachment": "images/tread-inside" }, + { "name": "tread-inside28", "bone": "tread14", "attachment": "images/tread-inside" }, + { "name": "tread-inside4", "bone": "tread2", "attachment": "images/tread-inside" }, + { "name": "tread-inside56", "bone": "tread28", "attachment": "images/tread-inside" }, + { "name": "tread-inside30", "bone": "tread15", "attachment": "images/tread-inside" }, + { "name": "tread-inside6", "bone": "tread3", "attachment": "images/tread-inside" }, + { "name": "tread-inside58", "bone": "tread29", "attachment": "images/tread-inside" }, + { "name": "tread-inside32", "bone": "tread16", "attachment": "images/tread-inside" }, + { "name": "tread-inside8", "bone": "tread4", "attachment": "images/tread-inside" }, + { "name": "tread-inside60", "bone": "tread30", "attachment": "images/tread-inside" }, + { "name": "tread-inside34", "bone": "tread17", "attachment": "images/tread-inside" }, + { "name": "tread-inside10", "bone": "tread5", "attachment": "images/tread-inside" }, + { "name": "tread-inside62", "bone": "tread31", "attachment": "images/tread-inside" }, + { "name": "tread-inside36", "bone": "tread18", "attachment": "images/tread-inside" }, + { "name": "tread-inside12", "bone": "tread6", "attachment": "images/tread-inside" }, + { "name": "tread-inside64", "bone": "tread32", "attachment": "images/tread-inside" }, + { "name": "tread-inside38", "bone": "tread19", "attachment": "images/tread-inside" }, + { "name": "tread-inside14", "bone": "tread7", "attachment": "images/tread-inside" }, + { "name": "tread-inside66", "bone": "tread33", "attachment": "images/tread-inside" }, + { "name": "tread-inside40", "bone": "tread20", "attachment": "images/tread-inside" }, + { "name": "tread-inside16", "bone": "tread8", "attachment": "images/tread-inside" }, + { "name": "tread-inside68", "bone": "tread34", "attachment": "images/tread-inside" }, + { "name": "tread-inside70", "bone": "tread35", "attachment": "images/tread-inside" }, + { "name": "tread-inside72", "bone": "tread36", "attachment": "images/tread-inside" }, + { "name": "tread-inside42", "bone": "tread21", "attachment": "images/tread-inside" }, + { "name": "tread-inside18", "bone": "tread9", "attachment": "images/tread-inside" }, + { "name": "tread-inside44", "bone": "tread22", "attachment": "images/tread-inside" }, + { "name": "tread-inside20", "bone": "tread10", "attachment": "images/tread-inside" }, + { "name": "tread-inside46", "bone": "tread23", "attachment": "images/tread-inside" }, + { "name": "tread-inside22", "bone": "tread11", "attachment": "images/tread-inside" }, + { "name": "tread-inside48", "bone": "tread24", "attachment": "images/tread-inside" }, + { "name": "tread-inside24", "bone": "tread12", "attachment": "images/tread-inside" }, + { "name": "tread-inside50", "bone": "tread25", "attachment": "images/tread-inside" }, + { "name": "tread-inside26", "bone": "tread13", "attachment": "images/tread-inside" }, + { "name": "tread-inside52", "bone": "tread26", "attachment": "images/tread-inside" }, + { "name": "wheel-big", "bone": "wheel-big1", "color": "dbdbdbff", "attachment": "images/wheel-big" }, + { "name": "wheel-big2", "bone": "wheel-big2", "color": "dbdbdbff", "attachment": "images/wheel-big" }, + { "name": "wheel-mid", "bone": "wheel-mid1", "attachment": "images/wheel-mid" }, + { "name": "wheel-mid2", "bone": "wheel-mid2", "attachment": "images/wheel-mid" }, + { "name": "wheel-mid3", "bone": "wheel-mid3", "attachment": "images/wheel-mid" }, + { "name": "wheel-mid4", "bone": "wheel-mid4", "attachment": "images/wheel-mid" }, + { "name": "wheel-mid5", "bone": "wheel-mid5", "attachment": "images/wheel-mid" }, + { "name": "wheel-mid6", "bone": "wheel-mid6", "attachment": "images/wheel-mid" }, + { "name": "wheel-small", "bone": "wheel-small1", "attachment": "images/wheel-small" }, + { "name": "wheel-small2", "bone": "wheel-small2", "attachment": "images/wheel-small" }, + { "name": "wheel-small3", "bone": "wheel-small3", "attachment": "images/wheel-small" }, + { + "name": "wheel-mid-overlay", + "bone": "wheel-midRoot1", + "color": "ffffffec", + "attachment": "images/wheel-mid-overlay", + "blend": "multiply" + }, + { + "name": "wheel-mid-overlay2", + "bone": "wheel-midRoot2", + "color": "ffffffec", + "attachment": "images/wheel-mid-overlay", + "blend": "multiply" + }, + { + "name": "wheel-mid-overlay3", + "bone": "wheel-midRoot3", + "color": "ffffffec", + "attachment": "images/wheel-mid-overlay", + "blend": "multiply" + }, + { + "name": "wheel-mid-overlay4", + "bone": "wheel-midRoot4", + "color": "ffffffec", + "attachment": "images/wheel-mid-overlay", + "blend": "multiply" + }, + { + "name": "wheel-mid-overlay5", + "bone": "wheel-midRoot5", + "color": "ffffffec", + "attachment": "images/wheel-mid-overlay", + "blend": "multiply" + }, + { + "name": "wheel-mid-overlay6", + "bone": "wheel-midRoot6", + "color": "ffffffec", + "attachment": "images/wheel-mid-overlay", + "blend": "multiply" + }, + { + "name": "wheel-big-overlay1", + "bone": "wheel-bigRoot1", + "color": "ffffffe9", + "attachment": "images/wheel-big-overlay", + "blend": "multiply" + }, + { + "name": "wheel-big-overlay2", + "bone": "wheel-bigRoot2", + "color": "ffffffe9", + "attachment": "images/wheel-big-overlay", + "blend": "multiply" + }, + { "name": "treads", "bone": "tankRoot", "attachment": "treads" }, + { "name": "tread", "bone": "tread", "color": "c0974fff", "attachment": "images/tread" }, + { "name": "tread27", "bone": "tread27", "color": "adc9b8ff", "attachment": "images/tread" }, + { "name": "tread14", "bone": "tread14", "attachment": "images/tread" }, + { "name": "tread2", "bone": "tread2", "attachment": "images/tread" }, + { "name": "tread28", "bone": "tread28", "attachment": "images/tread" }, + { "name": "tread15", "bone": "tread15", "color": "adc9b8ff", "attachment": "images/tread" }, + { "name": "tread3", "bone": "tread3", "color": "adc9b8ff", "attachment": "images/tread" }, + { "name": "tread29", "bone": "tread29", "color": "adc9b8ff", "attachment": "images/tread" }, + { "name": "tread16", "bone": "tread16", "attachment": "images/tread" }, + { "name": "tread4", "bone": "tread4", "attachment": "images/tread" }, + { "name": "tread30", "bone": "tread30", "attachment": "images/tread" }, + { "name": "tread17", "bone": "tread17", "color": "adc9b8ff", "attachment": "images/tread" }, + { "name": "tread5", "bone": "tread5", "color": "adc9b8ff", "attachment": "images/tread" }, + { "name": "tread31", "bone": "tread31", "color": "adc9b8ff", "attachment": "images/tread" }, + { "name": "tread18", "bone": "tread18", "attachment": "images/tread" }, + { "name": "tread6", "bone": "tread6", "attachment": "images/tread" }, + { "name": "tread32", "bone": "tread32", "attachment": "images/tread" }, + { "name": "tread19", "bone": "tread19", "color": "adc9b8ff", "attachment": "images/tread" }, + { "name": "tread7", "bone": "tread7", "color": "adc9b8ff", "attachment": "images/tread" }, + { "name": "tread33", "bone": "tread33", "color": "adc9b8ff", "attachment": "images/tread" }, + { "name": "tread20", "bone": "tread20", "attachment": "images/tread" }, + { "name": "tread8", "bone": "tread8", "attachment": "images/tread" }, + { "name": "tread34", "bone": "tread34", "attachment": "images/tread" }, + { "name": "tread35", "bone": "tread35", "color": "adc9b8ff", "attachment": "images/tread" }, + { "name": "tread36", "bone": "tread36", "color": "adc9b8ff", "attachment": "images/tread" }, + { "name": "tread21", "bone": "tread21", "color": "adc9b8ff", "attachment": "images/tread" }, + { "name": "tread9", "bone": "tread9", "color": "adc9b8ff", "attachment": "images/tread" }, + { "name": "tread22", "bone": "tread22", "attachment": "images/tread" }, + { "name": "tread10", "bone": "tread10", "attachment": "images/tread" }, + { "name": "tread23", "bone": "tread23", "color": "adc9b8ff", "attachment": "images/tread" }, + { "name": "tread11", "bone": "tread11", "color": "adc9b8ff", "attachment": "images/tread" }, + { "name": "tread24", "bone": "tread24", "attachment": "images/tread" }, + { "name": "tread12", "bone": "tread12", "attachment": "images/tread" }, + { "name": "tread25", "bone": "tread25", "color": "adc9b8ff", "attachment": "images/tread" }, + { "name": "tread13", "bone": "tread13", "color": "adc9b8ff", "attachment": "images/tread" }, + { "name": "tread26", "bone": "tread26", "attachment": "images/tread" }, + { "name": "rock", "bone": "rock", "attachment": "images/rock" }, + { "name": "machinegun", "bone": "machinegun", "attachment": "images/machinegun" }, + { "name": "machinegun-mount", "bone": "machinegun-mount", "attachment": "images/machinegun-mount" }, + { "name": "tankTop", "bone": "tankBody", "attachment": "images/tankTop" }, + { "name": "guntower", "bone": "guntower", "attachment": "images/guntower" }, + { "name": "cannon", "bone": "cannon", "attachment": "images/cannon" }, + { "name": "cannonConnector", "bone": "cannonConnector", "attachment": "images/cannonConnector" }, + { "name": "antenna", "bone": "antennaRoot", "attachment": "images/antenna" } +], +"ik": [ + { + "name": "cannonTarget", + "bones": [ "cannon" ], + "target": "cannonTarget" + }, + { + "name": "machineGunTarget", + "bones": [ "machinegun" ], + "target": "machineGunTarget", + "mix": 0 + } +], +"transform": [ + { + "name": "wheel-big", + "bones": [ "wheel-big2" ], + "target": "wheel-big1", + "rotation": 65.6, + "translateMix": 0, + "scaleMix": 0, + "shearMix": 0 + }, + { + "name": "wheel-mid1", + "bones": [ "wheel-mid2", "wheel-mid4" ], + "target": "wheel-mid1", + "rotation": 93, + "translateMix": 0, + "scaleMix": 0, + "shearMix": 0 + }, + { + "name": "wheel-mid2", + "bones": [ "wheel-mid3", "wheel-mid5" ], + "target": "wheel-mid1", + "rotation": -89, + "translateMix": 0, + "scaleMix": 0, + "shearMix": 0 + }, + { + "name": "wheel-mid3", + "bones": [ "wheel-mid6" ], + "target": "wheel-mid1", + "rotation": -152.6, + "translateMix": 0, + "scaleMix": 0, + "shearMix": 0 + }, + { + "name": "wheel-small1", + "bones": [ "wheel-small2" ], + "target": "wheel-small1", + "rotation": 87, + "translateMix": 0, + "scaleMix": 0, + "shearMix": 0 + }, + { + "name": "wheel-small2", + "bones": [ "wheel-small3" ], + "target": "wheel-small1", + "rotation": 54.9, + "translateMix": 0, + "scaleMix": 0, + "shearMix": 0 + } +], +"path": [ + { + "name": "treads", + "bones": [ + "tread", + "tread2", + "tread3", + "tread4", + "tread5", + "tread6", + "tread7", + "tread8", + "tread9", + "tread10", + "tread11", + "tread12", + "tread13", + "tread14", + "tread15", + "tread16", + "tread17", + "tread18", + "tread19", + "tread20", + "tread21", + "tread22", + "tread23", + "tread24", + "tread25", + "tread26", + "tread27", + "tread28", + "tread29", + "tread30", + "tread31", + "tread32", + "tread33", + "tread34", + "tread35", + "tread36" + ], + "target": "treads", + "rotateMode": "chain" + } +], +"skins": { + "default": { + "antenna": { + "images/antenna": { + "type": "mesh", + "uvs": [ 0.64286, 0.07875, 0.65354, 0.15349, 0.66324, 0.22137, 0.67367, 0.29433, 0.68383, 0.36543, 0.69359, 0.43374, 0.7031, 0.50029, 0.71311, 0.5703, 0.72327, 0.64138, 0.73406, 0.71688, 0.7444, 0.78929, 0.75614, 0.8714, 0.76905, 0.9431, 1, 0.9431, 1, 1, 0, 1, 0, 0.9431, 0.20105, 0.9431, 0.20105, 0.87093, 0.21461, 0.78846, 0.22651, 0.71606, 0.23885, 0.64098, 0.25035, 0.57104, 0.26206, 0.49983, 0.27306, 0.4329, 0.2843, 0.36453, 0.29592, 0.29381, 0.308, 0.22037, 0.319, 0.15345, 0.33141, 0.07795, 0.34423, 0, 0.6316, 0 ], + "triangles": [ 30, 31, 0, 29, 30, 0, 29, 0, 1, 28, 29, 1, 28, 1, 2, 27, 28, 2, 27, 2, 3, 26, 3, 4, 25, 26, 4, 25, 4, 5, 26, 27, 3, 24, 5, 6, 23, 24, 6, 7, 23, 6, 24, 25, 5, 22, 7, 8, 21, 22, 8, 21, 8, 9, 7, 22, 23, 20, 9, 10, 19, 20, 10, 20, 21, 9, 19, 10, 11, 18, 19, 11, 17, 18, 11, 17, 11, 12, 15, 16, 17, 12, 13, 14, 15, 17, 12, 14, 15, 12 ], + "vertices": [ 2, 10, 65.37999, -3.14, 0.3125, 11, 23.38, -3.14, 0.6875, 3, 9, 84.73, -3.37, 0.0625, 10, 42.73, -3.37, 0.625, 11, 0.73, -3.37, 0.3125, 3, 9, 64.16, -3.59, 0.3125, 10, 22.16, -3.59, 0.625, 11, -19.83, -3.59, 0.0625, 3, 8, 84.06, -3.82, 0.0625, 9, 42.06, -3.82, 0.625, 10, 0.06, -3.82, 0.3125, 3, 8, 62.51, -4.04, 0.3125, 9, 20.51, -4.04, 0.625, 10, -21.48, -4.04, 0.0625, 3, 7, 83.81, -4.25, 0.0625, 8, 41.81, -4.25, 0.625, 9, -0.18, -4.25, 0.3125, 3, 7, 63.65, -4.46, 0.3125, 8, 21.65, -4.46, 0.625, 9, -20.34, -4.46, 0.0625, 3, 6, 84.43, -4.67999, 0.0625, 7, 42.43, -4.67999, 0.625, 8, 0.43, -4.67999, 0.3125, 3, 6, 62.9, -4.91, 0.3125, 7, 20.9, -4.91, 0.625, 8, -21.09, -4.91, 0.0625, 3, 5, 5.14, 80.01999, 0.0625, 6, 40.02, -5.14, 0.625, 7, -1.97, -5.14, 0.3125, 3, 5, 5.37, 58.08, 0.375, 6, 18.08, -5.37, 0.5625, 7, -23.91, -5.37, 0.0625, 1, 5, 5.63, 33.2, 1, 1, 5, 5.91, 11.48, 1, 1, 5, 11, 11.48, 1, 1, 5, 10.99, -5.75, 1, 1, 5, -11, -5.75, 1, 1, 5, -10.99, 11.48, 1, 1, 5, -6.57, 11.48, 1, 1, 5, -6.57, 33.34, 1, 3, 5, -6.27, 58.33, 0.375, 6, 18.33, 6.27, 0.5625, 7, -23.66, 6.27, 0.0625, 3, 5, -6.01, 80.26999, 0.0625, 6, 40.27, 6.01, 0.625, 7, -1.72, 6.01, 0.3125, 3, 6, 63.02, 5.74, 0.3125, 7, 21.02, 5.74, 0.625, 8, -20.96999, 5.74, 0.0625, 3, 6, 84.21, 5.49, 0.0625, 7, 42.21, 5.49, 0.625, 8, 0.21, 5.49, 0.3125, 3, 7, 63.79, 5.23, 0.3125, 8, 21.79, 5.23, 0.625, 9, -20.2, 5.23, 0.0625, 3, 7, 84.07, 4.98999, 0.0625, 8, 42.07, 4.98999, 0.625, 9, 0.07, 4.98999, 0.3125, 3, 8, 62.78, 4.73999, 0.3125, 9, 20.78, 4.73999, 0.625, 10, -21.21, 4.73999, 0.0625, 3, 8, 84.21, 4.48, 0.0625, 9, 42.21, 4.48, 0.625, 10, 0.21, 4.48, 0.3125, 3, 9, 64.46, 4.21999, 0.3125, 10, 22.46, 4.21999, 0.625, 11, -19.53, 4.21999, 0.0625, 3, 9, 84.74, 3.98, 0.0625, 10, 42.74, 3.98, 0.625, 11, 0.74, 3.98, 0.3125, 2, 10, 65.62, 3.7, 0.3125, 11, 23.62, 3.7, 0.6875, 1, 11, 47.24, 3.42, 1, 1, 11, 47.24, -2.89, 1 ], + "hull": 32, + "edges": [ 28, 30, 28, 26, 30, 32, 26, 24, 24, 22, 32, 34, 34, 24, 34, 36, 36, 22, 60, 62, 38, 36, 20, 22, 38, 20, 40, 38, 18, 20, 40, 18, 42, 40, 16, 18, 42, 16, 44, 42, 14, 16, 44, 14, 46, 44, 12, 14, 46, 12, 48, 46, 10, 12, 48, 10, 50, 48, 8, 10, 50, 8, 52, 50, 6, 8, 52, 6, 54, 52, 4, 6, 54, 4, 56, 54, 2, 4, 56, 2, 60, 58, 58, 56, 62, 0, 0, 2, 58, 0 ], + "width": 22, + "height": 303 + } + }, + "bottom": { + "images/tankBottom": { "x": -16.66, "y": 9.89, "width": 1285, "height": 276 } + }, + "cannon": { + "images/cannon": { "x": 481.95, "y": -0.02, "rotation": 179.99, "width": 931, "height": 58 } + }, + "cannonConnector": { + "images/cannonConnector": { + "type": "mesh", + "uvs": [ 1, 0.03236, 1, 0.10602, 0.90987, 0.32859, 0.81975, 0.55116, 0.72962, 0.77372, 0.6395, 0.99629, 0.42157, 0.99629, 0.20364, 0.99629, 0, 0.85433, 0, 0.69901, 0.02267, 0.52884, 0, 0.31444, 0.21601, 0.12998, 0.43367, 0, 0.63546, 0.0037, 0.48407, 0.77059, 0.31496, 0.52496, 0.64132, 0.19648, 0.21516, 0.76765, 0.58345, 0.5647, 0.68444, 0.40146, 0.46758, 0.36649, 0.28934, 0.34603 ], + "triangles": [ 21, 22, 12, 11, 12, 22, 17, 21, 13, 17, 13, 14, 21, 12, 13, 21, 17, 20, 16, 22, 21, 10, 11, 22, 10, 22, 16, 19, 21, 20, 16, 21, 19, 18, 10, 16, 9, 10, 18, 15, 16, 19, 18, 16, 15, 8, 9, 18, 7, 8, 18, 6, 18, 15, 7, 18, 6, 14, 0, 1, 17, 14, 1, 2, 17, 1, 20, 17, 2, 3, 20, 2, 19, 20, 3, 4, 19, 3, 15, 19, 4, 5, 15, 4, 6, 15, 5 ], + "vertices": [ 1, 12, 35.91, 69.08, 1, 1, 12, 35.91, 59.13, 1, 1, 12, 25.81, 29.09, 1, 1, 12, 15.72, -0.95, 1, 1, 12, 5.63, -31, 1, 1, 12, -4.46, -61.04, 1, 2, 12, -28.87, -61.04, 0.33333, 14, 28.87, 61.03, 0.66666, 1, 14, 53.27, 61.01, 1, 1, 14, 76.08, 41.83, 1, 1, 14, 71.17, 21.62, 1, 1, 14, 72.83, -1.62, 1, 1, 14, 70.37, -29.12, 1, 1, 14, 50.66, -56.13, 1, 2, 12, -28.43, 74.37, 0.41, 14, 28.43, -74.39, 0.58999, 2, 12, -4.91, 72.94999, 0.52, 14, 4.91, -72.94999, 0.48, 2, 12, -21.87, -30.57, 0.49, 14, 21.87, 30.56, 0.51, 1, 14, 40.81, -2.59999, 1, 2, 12, -4.25, 46.92, 0.49, 14, 4.25, -46.92, 0.51, 1, 14, 51.98, 30.15, 1, 2, 12, -10.74, -2.78, 0.49, 14, 10.74, 2.77, 0.51, 2, 12, 0.56, 19.25, 0.49, 14, -0.56, -19.25, 0.51, 1, 14, 23.71, -23.98, 1, 1, 14, 43.68, -26.76, 1 ], + "hull": 15, + "edges": [ 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 18, 20, 20, 22, 22, 24, 24, 26, 26, 28, 28, 0 ], + "width": 112, + "height": 135 + } + }, + "guntower": { + "images/guntower": { "x": 77.22, "y": 122.58, "width": 730, "height": 289 } + }, + "machinegun": { + "images/machinegun": { "x": 44.85, "y": -5.72, "rotation": -180, "width": 331, "height": 57 } + }, + "machinegun-mount": { + "images/machinegun-mount": { "x": 47.42, "y": -1.53, "rotation": -90, "width": 72, "height": 96 } + }, + "rock": { + "images/rock": { "color": "404040ff", "x": 25.23, "y": 27.35, "width": 252, "height": 55 } + }, + "tankBody-shadow": { + "images/tankBottom-shadow": { "x": -11.43, "y": -42.88, "width": 1291, "height": 341 } + }, + "tankTop": { + "images/tankTop": { "x": 6.8, "y": 168.71, "width": 1407, "height": 222 } + }, + "tread": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread-inside1": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside10": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside11": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside12": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside13": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside14": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside15": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside16": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside17": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside18": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside19": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside2": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside20": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside21": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside22": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside23": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside24": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside25": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside26": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside27": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside28": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside29": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside3": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside30": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside31": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside32": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside33": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside34": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside35": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside36": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside37": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside38": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside39": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside4": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside40": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside41": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside42": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside43": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside44": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside45": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside46": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside47": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside48": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside49": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside5": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside50": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside51": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside52": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside53": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside54": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside55": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside56": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside57": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside58": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside59": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside6": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside60": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside61": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside62": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside63": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside64": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside65": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside66": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside67": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside68": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside69": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside7": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside70": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside71": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside72": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside8": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside9": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread10": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread11": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread12": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread13": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread14": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread15": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread16": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread17": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread18": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread19": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread2": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread20": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread21": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread22": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread23": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread24": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread25": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread26": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread27": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread28": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread29": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread3": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread30": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread31": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread32": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread33": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread34": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread35": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread36": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread4": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread5": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread6": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread7": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread8": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread9": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "treads": { + "treads": { + "type": "path", + "closed": true, + "lengths": [ 182.41, 349, 472.77, 602.99, 780.46, 1052.96, 1133.44, 1218.43, 1298.34, 1382.7, 1465.57, 1546.11, 1628.02, 1707.73, 1794.36, 1876.75, 2158.69, 2321.34, 2438.56, 2579.42, 2745.35, 2919.23 ], + "vertexCount": 66, + "vertices": [ 1, 83, 11.23, 41.86, 1, 1, 83, 0.78, 41.93999, 1, 1, 83, -34.72, 42.23, 1, 1, 63, -104.21, 0.41, 1, 1, 63, 0.07, 0.55, 1, 1, 63, 68.8, 0.64, 1, 1, 81, 20.5, 43.47, 1, 1, 81, 1.13, 40.81, 1, 1, 81, -27.38, 36.84, 1, 1, 65, 147.06, 105, 1, 1, 65, 96.21, 96.63, 1, 1, 65, 43.87, 87.71, 1, 1, 65, 16.18, 103.34, 1, 1, 65, -33.66999, 94.2, 1, 1, 65, -99.35, 81.25, 1, 1, 65, -122.04, -1.69, 1, 1, 65, -83.58, -47.92, 1, 1, 65, -33.53, -109.36, 1, 1, 69, -83.56, -66.08999, 1, 1, 69, -2.16, -67.89, 1, 2, 69, 56.68, -41.48, 0.67999, 58, -24.31, -41.49, 0.32, 1, 58, -26.58, 16.69, 1, 1, 58, -2.69, 16.69, 1, 1, 58, 13.51, 16.69, 1, 2, 71, -52.41, -46.51, 0.74399, 58, 30.2, -46.51, 0.256, 1, 71, -0.32, -68.92, 1, 2, 71, 52.09, -44.72, 0.712, 59, -28.9, -44.73, 0.28799, 1, 59, -22.8, 16.24, 1, 1, 59, -1.42, 16.24, 1, 1, 59, 20.46999, 16.24, 1, 2, 73, -47.21, -47.45, 0.744, 59, 36.00999, -47.46, 0.25599, 1, 73, -0.28, -69.65, 1, 2, 73, 45.23, -47.26, 0.736, 60, -37.48, -47.26, 0.26399, 1, 60, -23.76, 15.27, 1, 1, 60, -0.13, 15.27, 1, 1, 60, 24.45, 15.27, 1, 2, 75, -47.36, -48.7, 0.74399, 60, 33.52, -48.7, 0.256, 1, 75, -0.49, -70.39, 1, 2, 75, 49.09, -48.33, 0.744, 61, -33.57, -48.34, 0.25599, 1, 61, -20.89, 15.83, 1, 1, 61, -1.25, 15.83, 1, 1, 61, 15.78, 15.83, 1, 2, 77, -52.49, -48.21, 0.75999, 61, 28.45, -48.21, 0.24, 1, 77, -2.5, -68.92, 1, 2, 77, 55.72, -47.82, 0.752, 62, -28.88, -47.82, 0.248, 1, 62, -21.64, 16.69, 1, 1, 62, -0.48, 16.69, 1, 1, 62, 20.73, 16.69, 1, 2, 79, -53.65, -48.89, 0.76, 62, 25.96, -48.89, 0.23999, 1, 79, 2.27, -69.65, 1, 1, 79, 44.94, -69.74, 1, 1, 65, 1172.98, -85.6, 1, 1, 65, 1190.53, -42.24, 1, 1, 65, 1215.63, 19.75, 1, 1, 65, 1175.55, 76.62, 1, 1, 65, 1134.22, 95.07, 1, 1, 65, 1128.4, 97.66, 1, 1, 65, 1081.79, 87.47, 1, 1, 65, 1017.16, 92.52, 1, 1, 65, 977.9, 95.58, 1, 1, 85, 47.07, 42.29, 1, 1, 85, 0.24, 42.74, 1, 1, 85, -29.63, 43.28, 1, 1, 64, -86.64, 1.35, 1, 1, 64, 0.49, 0.25, 1, 1, 64, 92.42, -0.89, 1 ] + } + }, + "wheel-big": { + "images/wheel-big": { "width": 191, "height": 191 } + }, + "wheel-big-overlay1": { + "images/wheel-big-overlay": { "width": 186, "height": 186 } + }, + "wheel-big-overlay2": { + "images/wheel-big-overlay": { "width": 186, "height": 186 } + }, + "wheel-big2": { + "images/wheel-big": { "width": 191, "height": 191 } + }, + "wheel-mid": { + "images/wheel-mid": { "width": 136, "height": 136 } + }, + "wheel-mid-overlay": { + "images/wheel-mid-overlay": { "width": 136, "height": 136 } + }, + "wheel-mid-overlay2": { + "images/wheel-mid-overlay": { "width": 136, "height": 136 } + }, + "wheel-mid-overlay3": { + "images/wheel-mid-overlay": { "width": 136, "height": 136 } + }, + "wheel-mid-overlay4": { + "images/wheel-mid-overlay": { "width": 136, "height": 136 } + }, + "wheel-mid-overlay5": { + "images/wheel-mid-overlay": { "width": 136, "height": 136 } + }, + "wheel-mid-overlay6": { + "images/wheel-mid-overlay": { "width": 136, "height": 136 } + }, + "wheel-mid2": { + "images/wheel-mid": { "width": 136, "height": 136 } + }, + "wheel-mid3": { + "images/wheel-mid": { "width": 136, "height": 136 } + }, + "wheel-mid4": { + "images/wheel-mid": { "width": 136, "height": 136 } + }, + "wheel-mid5": { + "images/wheel-mid": { "width": 136, "height": 136 } + }, + "wheel-mid6": { + "images/wheel-mid": { "width": 136, "height": 136 } + }, + "wheel-small": { + "images/wheel-small": { "width": 71, "height": 71 } + }, + "wheel-small2": { + "images/wheel-small": { "width": 71, "height": 71 } + }, + "wheel-small3": { + "images/wheel-small": { "width": 71, "height": 71 } + } + } +}, +"animations": { + "drive": { + "bones": { + "tankRoot": { + "translate": [ + { + "time": 0, + "x": 0, + "y": 0, + "curve": [ 0.549, 0, 0.907, 0.84 ] + }, + { + "time": 3.0333, + "x": -1426.14, + "y": 0, + "curve": [ 0.211, 0.23, 0.851, 0.92 ] + }, + { + "time": 4.8666, + "x": -2806.98, + "y": 0, + "curve": [ 0.253, 0.27, 0.625, 0.94 ] + }, + { "time": 5.3333, "x": -2903.34, "y": 0 } + ] + }, + "wheel-midRoot1": { + "translate": [ + { "time": 0.7666, "x": 0, "y": 0 }, + { + "time": 1.1666, + "x": 0, + "y": 50.95, + "curve": [ 0.633, 0, 0.907, 0.82 ] + }, + { "time": 1.5666, "x": 0, "y": 0 } + ] + }, + "treadCollider1": { + "rotate": [ + { "time": 1.1, "angle": 0 }, + { "time": 1.2333, "angle": -19.78 }, + { "time": 1.4666, "angle": 0 }, + { "time": 1.6, "angle": 28.87 }, + { "time": 1.8, "angle": 0 } + ], + "translate": [ + { "time": 1.1, "x": 0, "y": 0 }, + { + "time": 1.4666, + "x": 0, + "y": 58.66, + "curve": [ 0.352, 0, 0.828, 0.92 ] + }, + { "time": 1.8, "x": 0, "y": 0 } + ] + }, + "wheel-midRoot2": { + "translate": [ + { "time": 1.2666, "x": 0, "y": 0 }, + { + "time": 1.6333, + "x": 0, + "y": 55.07, + "curve": [ 0.889, 0.01, 0.843, 0.81 ] + }, + { "time": 1.9333, "x": 0, "y": 0 } + ] + }, + "treadCollider2": { + "rotate": [ + { "time": 1.5333, "angle": 0 }, + { "time": 1.6333, "angle": -18.67 }, + { "time": 1.8, "angle": 0 }, + { "time": 1.9, "angle": 29.49 }, + { "time": 2.0666, "angle": 0 } + ], + "translate": [ + { + "time": 1.5333, + "x": 0, + "y": 0, + "curve": [ 0.16, 0.25, 0.813, 0.82 ] + }, + { + "time": 1.8, + "x": 0, + "y": 59.03, + "curve": [ 0.376, 0.26, 0.879, 0.79 ] + }, + { "time": 2.0666, "x": 0, "y": 0 } + ] + }, + "wheel-midRoot3": { + "translate": [ + { "time": 1.6666, "x": 0, "y": 0 }, + { + "time": 1.9333, + "x": 0, + "y": 60.17, + "curve": [ 0.544, 0, 0.838, 0.77 ] + }, + { "time": 2.2, "x": 0, "y": 0 } + ] + }, + "treadCollider3": { + "rotate": [ + { "time": 1.8666, "angle": 0 }, + { "time": 1.9333, "angle": -20.16 }, + { "time": 2.0666, "angle": 0.57 }, + { "time": 2.1666, "angle": 33.66 }, + { "time": 2.3333, "angle": 0 } + ], + "translate": [ + { "time": 1.8666, "x": 0, "y": 0 }, + { + "time": 2.0666, + "x": 0, + "y": 61.53, + "curve": [ 0.582, 0, 0.836, 0.77 ] + }, + { "time": 2.3333, "x": 0, "y": 0 } + ] + }, + "wheel-midRoot4": { + "translate": [ + { "time": 1.9333, "x": 0, "y": 0 }, + { + "time": 2.2, + "x": 0, + "y": 58.89, + "curve": [ 0.48, 0, 0.75, 1 ] + }, + { "time": 2.4666, "x": 0, "y": 0 } + ] + }, + "treadCollider4": { + "rotate": [ + { "time": 2.1333, "angle": 0 }, + { "time": 2.2, "angle": -20.43 }, + { "time": 2.3333, "angle": 4.49 }, + { "time": 2.4333, "angle": 35.87 }, + { "time": 2.5666, "angle": 0 } + ], + "translate": [ + { + "time": 2.1333, + "x": 0, + "y": 0, + "curve": [ 0.191, 0.49, 0.75, 1 ] + }, + { "time": 2.3333, "x": 0, "y": 66.64 }, + { "time": 2.5666, "x": 0, "y": 0 } + ] + }, + "wheel-midRoot5": { + "translate": [ + { "time": 2.2, "x": 0, "y": 0 }, + { "time": 2.4333, "x": 0, "y": 60.26 }, + { "time": 2.7, "x": 0, "y": 0 } + ] + }, + "treadCollider5": { + "rotate": [ + { "time": 2.3333, "angle": 0 }, + { "time": 2.4333, "angle": -23.6 }, + { "time": 2.5666, "angle": 6.49 }, + { "time": 2.6666, "angle": 29.93 }, + { "time": 2.8, "angle": -0.13 } + ], + "translate": [ + { "time": 2.3333, "x": 0, "y": 0 }, + { "time": 2.4333, "x": 0, "y": 36.34 }, + { "time": 2.5, "x": 0, "y": 56.39 }, + { "time": 2.5666, "x": 0, "y": 61.34 }, + { "time": 2.8, "x": 0, "y": 2.04 } + ] + }, + "wheel-midRoot6": { + "translate": [ + { + "time": 2.4333, + "x": 0, + "y": 0, + "curve": [ 0.19, 0.26, 0.804, 0.8 ] + }, + { + "time": 2.6333, + "x": 0, + "y": 51.86, + "curve": [ 0.346, 0, 0.852, 0.7 ] + }, + { "time": 2.8, "x": 0, "y": 0 } + ] + }, + "wheel-mid1": { + "rotate": [ + { + "time": 0, + "angle": 21, + "curve": [ 0.504, 0.11, 0.931, 0.71 ] + }, + { "time": 0.8, "angle": 120 }, + { "time": 1.2333, "angle": 240 }, + { "time": 1.6, "angle": 0 }, + { "time": 1.9, "angle": 120 }, + { "time": 2.1666, "angle": 240 }, + { "time": 2.4, "angle": 0 }, + { "time": 2.5666, "angle": 120 }, + { "time": 2.7333, "angle": 240 }, + { "time": 2.9333, "angle": 0 }, + { "time": 3.1, "angle": 120 }, + { "time": 3.2666, "angle": 240 }, + { "time": 3.4333, "angle": 0 }, + { "time": 3.6333, "angle": 120 }, + { "time": 3.8, "angle": 240 }, + { "time": 3.9666, "angle": 0 }, + { "time": 4.1666, "angle": 120 }, + { "time": 4.3333, "angle": 240 }, + { "time": 4.5, "angle": 0 }, + { "time": 4.7, "angle": 120 }, + { "time": 4.8666, "angle": 240 }, + { "time": 5.2666, "angle": -67.99 } + ] + }, + "tankTreads": { + "rotate": [ + { + "time": 0, + "angle": 0, + "curve": [ 0.145, 0.34, 0.75, 1 ] + }, + { "time": 1.1, "angle": -3.9 }, + { "time": 1.3333, "angle": -2.37 }, + { "time": 1.6333, "angle": -3.54 }, + { "time": 2.1666, "angle": 0.27 }, + { + "time": 2.4666, + "angle": 2.55, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 2.7, + "angle": 3.88, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 3, "angle": -3.62 }, + { "time": 3.2333, "angle": -1.23, "curve": "stepped" }, + { + "time": 4.8666, + "angle": -1.23, + "curve": [ 0.188, 0.16, 0.75, 1 ] + }, + { + "time": 5.2, + "angle": 4.47, + "curve": [ 0.416, 0.01, 0.75, 1 ] + }, + { + "time": 5.5666, + "angle": -3.08, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 5.8333, "angle": -1.23 } + ] + }, + "wheel-big1": { + "rotate": [ + { + "time": 0, + "angle": 0, + "curve": [ 0.504, 0.11, 0.931, 0.71 ] + }, + { "time": 1.1, "angle": 120 }, + { "time": 1.5333, "angle": 240 }, + { "time": 1.8, "angle": 360 }, + { "time": 2.0333, "angle": 120 }, + { "time": 2.2666, "angle": 240 }, + { "time": 2.4666, "angle": 360 }, + { "time": 2.7, "angle": 120 }, + { "time": 2.9333, "angle": 240 }, + { "time": 3.1333, "angle": 360 }, + { "time": 3.3666, "angle": 120 }, + { "time": 3.5666, "angle": 240 }, + { "time": 3.8, "angle": -24 }, + { "time": 4.0333, "angle": 120 }, + { "time": 4.2333, "angle": 240 }, + { "time": 4.4666, "angle": -24 }, + { "time": 4.7, "angle": 120 }, + { "time": 4.8666, "angle": -143.99 }, + { + "time": 5.0666, + "angle": -131.4, + "curve": [ 0.14, 0.25, 0.75, 1 ] + }, + { "time": 5.6666, "angle": -76.85 }, + { "time": 5.8333, "angle": -72.3 } + ] + }, + "treadGravity1": { + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.4666, "x": 0, "y": 0 }, + { "time": 1.8, "x": 0, "y": 29.44 }, + { "time": 2.3333, "x": 0, "y": -0.52 }, + { "time": 2.5666, "x": 0, "y": 5.2 }, + { "time": 2.6666, "x": 0, "y": -11.05, "curve": "stepped" }, + { "time": 4.8666, "x": 0, "y": -11.05 }, + { "time": 5.0666, "x": 0, "y": -1.91 }, + { "time": 5.5333, "x": 0, "y": -6.9 }, + { "time": 5.7333, "x": 0, "y": -11.05 } + ] + }, + "treadGravity2": { + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.4666, "x": 0, "y": 0 }, + { "time": 1.8, "x": 0, "y": 8.5 }, + { "time": 2.3333, "x": 0, "y": 34.74 }, + { "time": 2.5666, "x": 0, "y": 5.2 }, + { "time": 2.6666, "x": 0, "y": -11.05, "curve": "stepped" }, + { "time": 4.8666, "x": 0, "y": -11.05 }, + { "time": 5.0666, "x": 0, "y": 3.9 }, + { "time": 5.5333, "x": 0, "y": -6.9 }, + { "time": 5.7333, "x": 0, "y": -11.05 } + ] + }, + "wheel-small1": { + "rotate": [ + { + "time": 0, + "angle": 0, + "curve": [ 0.504, 0.11, 0.931, 0.71 ] + }, + { "time": 0.7, "angle": 120 }, + { "time": 1.1, "angle": 240 }, + { "time": 1.4666, "angle": 360 }, + { "time": 1.7666, "angle": 120 }, + { "time": 2.0333, "angle": 240 }, + { "time": 2.2666, "angle": 360 }, + { "time": 2.4333, "angle": 120 }, + { "time": 2.5666, "angle": 240 }, + { "time": 2.7, "angle": 360 }, + { "time": 2.8333, "angle": 120 }, + { "time": 2.9666, "angle": 240 }, + { "time": 3.1, "angle": 360 }, + { "time": 3.2333, "angle": 120 }, + { "time": 3.3666, "angle": 240 }, + { "time": 3.5, "angle": 360 }, + { "time": 3.6333, "angle": 120 }, + { "time": 3.7666, "angle": 240 }, + { "time": 3.9, "angle": 360 }, + { "time": 4.0333, "angle": 120 }, + { "time": 4.1666, "angle": 240 }, + { "time": 4.3, "angle": 360 }, + { "time": 4.4333, "angle": 120 }, + { "time": 4.5666, "angle": 240 }, + { "time": 4.7, "angle": 360 }, + { "time": 4.8333, "angle": 120 }, + { "time": 5, "angle": 240 }, + { + "time": 5.2, + "angle": -25.64, + "curve": [ 0.181, 0.26, 0.75, 1 ] + }, + { "time": 5.5666, "angle": 90 } + ] + }, + "tankBody": { + "rotate": [ + { + "time": 0, + "angle": 0, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 1.1666, + "angle": -1.41, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 1.9333, + "angle": -0.18, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 2.3, + "angle": 0.84, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 3.0333, + "angle": -2.33, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 3.4666, + "angle": -0.45, + "curve": [ 0.329, 0.32, 0.757, 1 ] + }, + { + "time": 4.8666, + "angle": 0, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 5.3333, + "angle": 1.82, + "curve": [ 0.324, 0.01, 0.75, 1 ] + }, + { + "time": 5.6666, + "angle": -1.15, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 6.0333, "angle": 0 } + ] + }, + "antenna1": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { + "time": 0.4333, + "angle": 0, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 0.7333, + "angle": -1.55, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 1.0666, + "angle": -0.68, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 1.4, + "angle": 0.61, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 1.6666, "angle": -0.67, "curve": "stepped" }, + { + "time": 2.1333, + "angle": -0.67, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 2.3666, + "angle": 0.88, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 2.5666, + "angle": -1.69, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 2.8666, + "angle": 1.18, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 3.0333, + "angle": -1.09, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 3.2333, + "angle": 1.03, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 3.5, + "angle": -0.44, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 4.6666, "angle": -0.18 }, + { + "time": 5.0333, + "angle": -1.05, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 5.3666, + "angle": 9.17, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 5.6666, + "angle": -3.14, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 5.9, + "angle": 2.96, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 6.1, + "angle": -0.29, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 6.2666, "angle": 0.96 }, + { "time": 6.4, "angle": 0 } + ] + }, + "antenna2": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { + "time": 0.4333, + "angle": 0, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 0.7333, + "angle": -1.55, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 1.0666, + "angle": -0.68, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 1.4, + "angle": 0.61, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 1.6666, "angle": -0.67, "curve": "stepped" }, + { + "time": 2.1333, + "angle": -0.67, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 2.3666, + "angle": 0.88, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 2.5666, + "angle": -1.69, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 2.8666, + "angle": 1.18, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 3.0333, + "angle": -1.09, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 3.2333, + "angle": 1.03, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 3.5, + "angle": -0.44, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 4.6666, "angle": -0.18 }, + { + "time": 5.0333, + "angle": -1.05, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 5.3666, + "angle": 9.17, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 5.6666, + "angle": -3.14, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 5.9, + "angle": 2.96, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 6.1, + "angle": -0.29, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 6.2666, "angle": 0.96 }, + { "time": 6.4, "angle": 0 } + ] + }, + "antenna3": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { + "time": 0.4333, + "angle": 0, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 0.7333, + "angle": -1.55, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 1.0666, + "angle": -0.68, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 1.4, + "angle": 0.61, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 1.6666, "angle": -0.67, "curve": "stepped" }, + { + "time": 2.1333, + "angle": -0.67, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 2.3666, + "angle": 0.88, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 2.5666, + "angle": -1.69, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 2.8666, + "angle": 1.18, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 3.0333, + "angle": -1.09, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 3.2333, + "angle": 1.03, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 3.5, + "angle": -0.44, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 4.6666, "angle": -0.18 }, + { + "time": 5.0333, + "angle": -1.05, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 5.3666, + "angle": 9.17, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 5.6666, + "angle": -3.14, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 5.9, + "angle": 2.96, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 6.1, + "angle": -0.29, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 6.2666, "angle": 0.96 }, + { "time": 6.4, "angle": 0 } + ] + }, + "antenna4": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { + "time": 0.4333, + "angle": 0, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 0.7333, + "angle": -1.55, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 1.0666, + "angle": -0.68, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 1.4, + "angle": 0.61, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 1.6666, "angle": -0.67, "curve": "stepped" }, + { + "time": 2.1333, + "angle": -0.67, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 2.3666, + "angle": 0.88, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 2.5666, + "angle": -1.69, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 2.8666, + "angle": 1.18, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 3.0333, + "angle": -1.09, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 3.2333, + "angle": 1.03, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 3.5, + "angle": -0.44, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 4.6666, "angle": -0.18 }, + { + "time": 5.0333, + "angle": -1.05, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 5.3666, + "angle": 9.17, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 5.6666, + "angle": -3.14, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 5.9, + "angle": 2.96, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 6.1, + "angle": -0.29, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 6.2666, "angle": 0.96 }, + { "time": 6.4, "angle": 0 } + ] + }, + "antenna5": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { + "time": 0.4333, + "angle": 0, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 0.7333, + "angle": -1.55, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 1.0666, + "angle": -0.68, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 1.4, + "angle": 0.61, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 1.6666, "angle": -0.67, "curve": "stepped" }, + { + "time": 2.1333, + "angle": -0.67, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 2.3666, + "angle": 0.88, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 2.5666, + "angle": -1.69, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 2.8666, + "angle": 1.18, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 3.0333, + "angle": -1.09, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 3.2333, + "angle": 1.03, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 3.5, + "angle": -0.44, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 4.6666, "angle": -0.18 }, + { + "time": 5.0333, + "angle": -1.05, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 5.3666, + "angle": 9.17, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 5.6666, + "angle": -3.14, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 5.9, + "angle": 2.96, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 6.1, + "angle": -0.29, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 6.2666, "angle": 0.96 }, + { "time": 6.4, "angle": 0 } + ] + }, + "antenna6": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { + "time": 0.4333, + "angle": 0, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 0.7333, + "angle": -1.55, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 1.0666, + "angle": -0.68, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 1.4, + "angle": 0.61, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 1.6666, "angle": -0.67, "curve": "stepped" }, + { + "time": 2.1333, + "angle": -0.67, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 2.3666, + "angle": 0.88, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 2.5666, + "angle": -1.69, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 2.8666, + "angle": 1.18, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 3.0333, + "angle": -1.09, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 3.2333, + "angle": 1.03, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 3.5, + "angle": -0.44, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 4.6666, "angle": -0.18 }, + { + "time": 5.0333, + "angle": -1.05, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 5.3666, + "angle": 9.17, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 5.6666, + "angle": -3.14, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 5.9, + "angle": 2.96, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 6.1, + "angle": -0.29, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 6.2666, "angle": 0.96 }, + { "time": 6.4, "angle": 0 } + ] + }, + "machinegun": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { + "time": 2.8333, + "angle": 0, + "curve": [ 0.183, 0.17, 0.75, 1 ] + }, + { + "time": 3, + "angle": -4.43, + "curve": [ 0.156, 0.16, 0.75, 1 ] + }, + { + "time": 3.1666, + "angle": -2.93, + "curve": [ 0.156, 0.16, 0.75, 1 ] + }, + { + "time": 4.8333, + "angle": 0, + "curve": [ 0.183, 0.17, 0.75, 1 ] + }, + { + "time": 5.1666, + "angle": -6.05, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 5.4, + "angle": 6.15, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 5.6, "angle": -1.26 } + ] + }, + "cannon": { + "rotate": [ + { "time": 0, "angle": 0 } + ] + }, + "cannonTarget": { + "translate": [ + { + "time": 5, + "x": 0, + "y": 0, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 6.3333, "x": -15.38, "y": 99.99 } + ] + } + }, + "ik": { + "cannonTarget": [ + { "time": 0, "mix": 0.809, "curve": "stepped" }, + { "time": 4.7333, "mix": 0.809 }, + { "time": 5.1666, "mix": 0.504 }, + { "time": 5.6666 } + ] + }, + "paths": { + "treads": { + "position": [ + { + "time": 0, + "curve": [ 0.549, 0, 0.907, 0.84 ] + }, + { "time": 3.0333, "position": 0.51 }, + { "time": 4.8666, "position": 0.9794 }, + { + "time": 5.2666, + "position": 1, + "curve": [ 0.226, 0.15, 0.765, 0.96 ] + }, + { + "time": 5.5333, + "position": 1.02, + "curve": [ 0.279, 0.32, 0.694, 0.99 ] + }, + { "time": 5.8333, "position": 1.021 } + ] + } + } + } +} +} \ No newline at end of file diff --git a/spine-cocos2dx/example/Resources/common/tank.png b/spine-cocos2dx/example/Resources/common/tank.png new file mode 100644 index 000000000..9811ee418 Binary files /dev/null and b/spine-cocos2dx/example/Resources/common/tank.png differ diff --git a/spine-cocos2dx/example/proj.ios_mac/ios/AppController.mm b/spine-cocos2dx/example/proj.ios_mac/ios/AppController.mm index 4bb313aa6..c7ce58f60 100644 --- a/spine-cocos2dx/example/proj.ios_mac/ios/AppController.mm +++ b/spine-cocos2dx/example/proj.ios_mac/ios/AppController.mm @@ -39,7 +39,7 @@ static AppDelegate s_sharedApplication; - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { cocos2d::Application *app = cocos2d::Application::getInstance(); - app->initGLContextAttrs(); + app->initGLContextAttrs(); cocos2d::GLViewImpl::convertAttrs(); // Override point for customization after application launch. diff --git a/spine-cocos2dx/example/proj.ios_mac/spine-cocos2d-x.xcodeproj/project.pbxproj b/spine-cocos2dx/example/proj.ios_mac/spine-cocos2d-x.xcodeproj/project.pbxproj index 5f2d46ca1..f34466c64 100644 --- a/spine-cocos2dx/example/proj.ios_mac/spine-cocos2d-x.xcodeproj/project.pbxproj +++ b/spine-cocos2dx/example/proj.ios_mac/spine-cocos2d-x.xcodeproj/project.pbxproj @@ -51,34 +51,6 @@ 76AAA3C31D180F7C00C54FCB /* RaptorExample.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA3BA1D180F7C00C54FCB /* RaptorExample.cpp */; }; 76AAA3C41D180F7C00C54FCB /* SimpleCommand.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA3BC1D180F7C00C54FCB /* SimpleCommand.cpp */; }; 76AAA3C51D180F7C00C54FCB /* SpineboyExample.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA3BE1D180F7C00C54FCB /* SpineboyExample.cpp */; }; - 76AAA3E31D180FA800C54FCB /* Animation.c in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA3C61D180FA800C54FCB /* Animation.c */; }; - 76AAA3E41D180FA800C54FCB /* AnimationState.c in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA3C71D180FA800C54FCB /* AnimationState.c */; }; - 76AAA3E51D180FA800C54FCB /* AnimationStateData.c in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA3C81D180FA800C54FCB /* AnimationStateData.c */; }; - 76AAA3E61D180FA800C54FCB /* Atlas.c in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA3C91D180FA800C54FCB /* Atlas.c */; }; - 76AAA3E71D180FA800C54FCB /* AtlasAttachmentLoader.c in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA3CA1D180FA800C54FCB /* AtlasAttachmentLoader.c */; }; - 76AAA3E81D180FA800C54FCB /* Attachment.c in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA3CB1D180FA800C54FCB /* Attachment.c */; }; - 76AAA3E91D180FA800C54FCB /* AttachmentLoader.c in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA3CC1D180FA800C54FCB /* AttachmentLoader.c */; }; - 76AAA3EA1D180FA800C54FCB /* Bone.c in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA3CD1D180FA800C54FCB /* Bone.c */; }; - 76AAA3EB1D180FA800C54FCB /* BoneData.c in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA3CE1D180FA800C54FCB /* BoneData.c */; }; - 76AAA3EC1D180FA800C54FCB /* BoundingBoxAttachment.c in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA3CF1D180FA800C54FCB /* BoundingBoxAttachment.c */; }; - 76AAA3ED1D180FA800C54FCB /* Event.c in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA3D01D180FA800C54FCB /* Event.c */; }; - 76AAA3EE1D180FA800C54FCB /* EventData.c in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA3D11D180FA800C54FCB /* EventData.c */; }; - 76AAA3EF1D180FA800C54FCB /* extension.c in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA3D21D180FA800C54FCB /* extension.c */; }; - 76AAA3F01D180FA800C54FCB /* IkConstraint.c in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA3D31D180FA800C54FCB /* IkConstraint.c */; }; - 76AAA3F11D180FA800C54FCB /* IkConstraintData.c in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA3D41D180FA800C54FCB /* IkConstraintData.c */; }; - 76AAA3F21D180FA800C54FCB /* Json.c in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA3D51D180FA800C54FCB /* Json.c */; }; - 76AAA3F31D180FA800C54FCB /* MeshAttachment.c in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA3D71D180FA800C54FCB /* MeshAttachment.c */; }; - 76AAA3F41D180FA800C54FCB /* RegionAttachment.c in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA3D81D180FA800C54FCB /* RegionAttachment.c */; }; - 76AAA3F51D180FA800C54FCB /* Skeleton.c in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA3D91D180FA800C54FCB /* Skeleton.c */; }; - 76AAA3F61D180FA800C54FCB /* SkeletonBounds.c in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA3DA1D180FA800C54FCB /* SkeletonBounds.c */; }; - 76AAA3F71D180FA800C54FCB /* SkeletonData.c in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA3DB1D180FA800C54FCB /* SkeletonData.c */; }; - 76AAA3F81D180FA800C54FCB /* SkeletonJson.c in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA3DC1D180FA800C54FCB /* SkeletonJson.c */; }; - 76AAA3F91D180FA800C54FCB /* Skin.c in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA3DD1D180FA800C54FCB /* Skin.c */; }; - 76AAA3FA1D180FA800C54FCB /* Slot.c in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA3DE1D180FA800C54FCB /* Slot.c */; }; - 76AAA3FB1D180FA800C54FCB /* SlotData.c in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA3DF1D180FA800C54FCB /* SlotData.c */; }; - 76AAA3FC1D180FA800C54FCB /* TransformConstraint.c in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA3E01D180FA800C54FCB /* TransformConstraint.c */; }; - 76AAA3FD1D180FA800C54FCB /* TransformConstraintData.c in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA3E11D180FA800C54FCB /* TransformConstraintData.c */; }; - 76AAA3FE1D180FA800C54FCB /* WeightedMeshAttachment.c in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA3E21D180FA800C54FCB /* WeightedMeshAttachment.c */; }; 76AAA40C1D18106000C54FCB /* AttachmentVertices.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA4001D18106000C54FCB /* AttachmentVertices.cpp */; }; 76AAA40D1D18106000C54FCB /* Cocos2dAttachmentLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA4021D18106000C54FCB /* Cocos2dAttachmentLoader.cpp */; }; 76AAA40E1D18106000C54FCB /* SkeletonAnimation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA4041D18106000C54FCB /* SkeletonAnimation.cpp */; }; @@ -97,35 +69,6 @@ 76AAA41B1D18119F00C54FCB /* SkeletonRenderer.h in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA4091D18106000C54FCB /* SkeletonRenderer.h */; }; 76AAA41C1D18119F00C54FCB /* spine-cocos2dx.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA40A1D18106000C54FCB /* spine-cocos2dx.cpp */; }; 76AAA41D1D18119F00C54FCB /* spine-cocos2dx.h in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA40B1D18106000C54FCB /* spine-cocos2dx.h */; }; - 76AAA41E1D1811A700C54FCB /* Animation.c in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA3C61D180FA800C54FCB /* Animation.c */; }; - 76AAA41F1D1811A700C54FCB /* AnimationState.c in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA3C71D180FA800C54FCB /* AnimationState.c */; }; - 76AAA4201D1811A700C54FCB /* AnimationStateData.c in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA3C81D180FA800C54FCB /* AnimationStateData.c */; }; - 76AAA4211D1811A700C54FCB /* Atlas.c in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA3C91D180FA800C54FCB /* Atlas.c */; }; - 76AAA4221D1811A700C54FCB /* AtlasAttachmentLoader.c in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA3CA1D180FA800C54FCB /* AtlasAttachmentLoader.c */; }; - 76AAA4231D1811A700C54FCB /* Attachment.c in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA3CB1D180FA800C54FCB /* Attachment.c */; }; - 76AAA4241D1811A700C54FCB /* AttachmentLoader.c in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA3CC1D180FA800C54FCB /* AttachmentLoader.c */; }; - 76AAA4251D1811A700C54FCB /* Bone.c in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA3CD1D180FA800C54FCB /* Bone.c */; }; - 76AAA4261D1811A700C54FCB /* BoneData.c in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA3CE1D180FA800C54FCB /* BoneData.c */; }; - 76AAA4271D1811A700C54FCB /* BoundingBoxAttachment.c in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA3CF1D180FA800C54FCB /* BoundingBoxAttachment.c */; }; - 76AAA4281D1811A700C54FCB /* Event.c in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA3D01D180FA800C54FCB /* Event.c */; }; - 76AAA4291D1811A700C54FCB /* EventData.c in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA3D11D180FA800C54FCB /* EventData.c */; }; - 76AAA42A1D1811A700C54FCB /* extension.c in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA3D21D180FA800C54FCB /* extension.c */; }; - 76AAA42B1D1811A700C54FCB /* IkConstraint.c in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA3D31D180FA800C54FCB /* IkConstraint.c */; }; - 76AAA42C1D1811A700C54FCB /* IkConstraintData.c in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA3D41D180FA800C54FCB /* IkConstraintData.c */; }; - 76AAA42D1D1811A700C54FCB /* Json.c in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA3D51D180FA800C54FCB /* Json.c */; }; - 76AAA42E1D1811A700C54FCB /* Json.h in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA3D61D180FA800C54FCB /* Json.h */; }; - 76AAA42F1D1811A700C54FCB /* MeshAttachment.c in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA3D71D180FA800C54FCB /* MeshAttachment.c */; }; - 76AAA4301D1811A700C54FCB /* RegionAttachment.c in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA3D81D180FA800C54FCB /* RegionAttachment.c */; }; - 76AAA4311D1811A700C54FCB /* Skeleton.c in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA3D91D180FA800C54FCB /* Skeleton.c */; }; - 76AAA4321D1811A700C54FCB /* SkeletonBounds.c in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA3DA1D180FA800C54FCB /* SkeletonBounds.c */; }; - 76AAA4331D1811A700C54FCB /* SkeletonData.c in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA3DB1D180FA800C54FCB /* SkeletonData.c */; }; - 76AAA4341D1811A700C54FCB /* SkeletonJson.c in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA3DC1D180FA800C54FCB /* SkeletonJson.c */; }; - 76AAA4351D1811A700C54FCB /* Skin.c in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA3DD1D180FA800C54FCB /* Skin.c */; }; - 76AAA4361D1811A700C54FCB /* Slot.c in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA3DE1D180FA800C54FCB /* Slot.c */; }; - 76AAA4371D1811A700C54FCB /* SlotData.c in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA3DF1D180FA800C54FCB /* SlotData.c */; }; - 76AAA4381D1811A700C54FCB /* TransformConstraint.c in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA3E01D180FA800C54FCB /* TransformConstraint.c */; }; - 76AAA4391D1811A700C54FCB /* TransformConstraintData.c in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA3E11D180FA800C54FCB /* TransformConstraintData.c */; }; - 76AAA43A1D1811A700C54FCB /* WeightedMeshAttachment.c in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA3E21D180FA800C54FCB /* WeightedMeshAttachment.c */; }; 76AAA43B1D1811B000C54FCB /* AppDelegate.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA3B31D180F7C00C54FCB /* AppDelegate.cpp */; }; 76AAA43C1D1811B000C54FCB /* AppDelegate.h in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA3B41D180F7C00C54FCB /* AppDelegate.h */; }; 76AAA43D1D1811B000C54FCB /* AppMacros.h in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA3B51D180F7C00C54FCB /* AppMacros.h */; }; @@ -149,6 +92,72 @@ 76AAA45E1D18132D00C54FCB /* iphone in Resources */ = {isa = PBXBuildFile; fileRef = 76AAA4551D18132D00C54FCB /* iphone */; }; 76AAA45F1D18132D00C54FCB /* iphone-retina in Resources */ = {isa = PBXBuildFile; fileRef = 76AAA4561D18132D00C54FCB /* iphone-retina */; }; 76AAA4601D18132D00C54FCB /* iphone-retina in Resources */ = {isa = PBXBuildFile; fileRef = 76AAA4561D18132D00C54FCB /* iphone-retina */; }; + 76F5BD141D2BB57F005917E5 /* Animation.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BCF41D2BB57F005917E5 /* Animation.c */; }; + 76F5BD151D2BB57F005917E5 /* AnimationState.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BCF51D2BB57F005917E5 /* AnimationState.c */; }; + 76F5BD161D2BB57F005917E5 /* AnimationStateData.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BCF61D2BB57F005917E5 /* AnimationStateData.c */; }; + 76F5BD171D2BB57F005917E5 /* Atlas.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BCF71D2BB57F005917E5 /* Atlas.c */; }; + 76F5BD181D2BB57F005917E5 /* AtlasAttachmentLoader.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BCF81D2BB57F005917E5 /* AtlasAttachmentLoader.c */; }; + 76F5BD191D2BB57F005917E5 /* Attachment.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BCF91D2BB57F005917E5 /* Attachment.c */; }; + 76F5BD1A1D2BB57F005917E5 /* AttachmentLoader.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BCFA1D2BB57F005917E5 /* AttachmentLoader.c */; }; + 76F5BD1B1D2BB57F005917E5 /* Bone.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BCFB1D2BB57F005917E5 /* Bone.c */; }; + 76F5BD1C1D2BB57F005917E5 /* BoneData.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BCFC1D2BB57F005917E5 /* BoneData.c */; }; + 76F5BD1D1D2BB57F005917E5 /* BoundingBoxAttachment.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BCFD1D2BB57F005917E5 /* BoundingBoxAttachment.c */; }; + 76F5BD1E1D2BB57F005917E5 /* Event.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BCFE1D2BB57F005917E5 /* Event.c */; }; + 76F5BD1F1D2BB57F005917E5 /* EventData.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BCFF1D2BB57F005917E5 /* EventData.c */; }; + 76F5BD201D2BB57F005917E5 /* extension.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD001D2BB57F005917E5 /* extension.c */; }; + 76F5BD211D2BB57F005917E5 /* IkConstraint.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD011D2BB57F005917E5 /* IkConstraint.c */; }; + 76F5BD221D2BB57F005917E5 /* IkConstraintData.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD021D2BB57F005917E5 /* IkConstraintData.c */; }; + 76F5BD231D2BB57F005917E5 /* Json.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD031D2BB57F005917E5 /* Json.c */; }; + 76F5BD241D2BB57F005917E5 /* MeshAttachment.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD051D2BB57F005917E5 /* MeshAttachment.c */; }; + 76F5BD251D2BB57F005917E5 /* PathAttachment.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD061D2BB57F005917E5 /* PathAttachment.c */; }; + 76F5BD261D2BB57F005917E5 /* PathConstraint.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD071D2BB57F005917E5 /* PathConstraint.c */; }; + 76F5BD271D2BB57F005917E5 /* PathConstraintData.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD081D2BB57F005917E5 /* PathConstraintData.c */; }; + 76F5BD281D2BB57F005917E5 /* RegionAttachment.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD091D2BB57F005917E5 /* RegionAttachment.c */; }; + 76F5BD291D2BB57F005917E5 /* Skeleton.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD0A1D2BB57F005917E5 /* Skeleton.c */; }; + 76F5BD2A1D2BB57F005917E5 /* SkeletonBounds.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD0B1D2BB57F005917E5 /* SkeletonBounds.c */; }; + 76F5BD2B1D2BB57F005917E5 /* SkeletonData.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD0C1D2BB57F005917E5 /* SkeletonData.c */; }; + 76F5BD2C1D2BB57F005917E5 /* SkeletonJson.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD0D1D2BB57F005917E5 /* SkeletonJson.c */; }; + 76F5BD2D1D2BB57F005917E5 /* Skin.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD0E1D2BB57F005917E5 /* Skin.c */; }; + 76F5BD2E1D2BB57F005917E5 /* Slot.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD0F1D2BB57F005917E5 /* Slot.c */; }; + 76F5BD2F1D2BB57F005917E5 /* SlotData.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD101D2BB57F005917E5 /* SlotData.c */; }; + 76F5BD301D2BB57F005917E5 /* TransformConstraint.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD111D2BB57F005917E5 /* TransformConstraint.c */; }; + 76F5BD311D2BB57F005917E5 /* TransformConstraintData.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD121D2BB57F005917E5 /* TransformConstraintData.c */; }; + 76F5BD321D2BB57F005917E5 /* VertexAttachment.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD131D2BB57F005917E5 /* VertexAttachment.c */; }; + 76F5BD331D2BD4A9005917E5 /* Animation.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BCF41D2BB57F005917E5 /* Animation.c */; }; + 76F5BD341D2BD4A9005917E5 /* AnimationState.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BCF51D2BB57F005917E5 /* AnimationState.c */; }; + 76F5BD351D2BD4A9005917E5 /* AnimationStateData.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BCF61D2BB57F005917E5 /* AnimationStateData.c */; }; + 76F5BD361D2BD4A9005917E5 /* Atlas.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BCF71D2BB57F005917E5 /* Atlas.c */; }; + 76F5BD371D2BD4A9005917E5 /* AtlasAttachmentLoader.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BCF81D2BB57F005917E5 /* AtlasAttachmentLoader.c */; }; + 76F5BD381D2BD4A9005917E5 /* Attachment.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BCF91D2BB57F005917E5 /* Attachment.c */; }; + 76F5BD391D2BD4A9005917E5 /* AttachmentLoader.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BCFA1D2BB57F005917E5 /* AttachmentLoader.c */; }; + 76F5BD3A1D2BD4A9005917E5 /* Bone.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BCFB1D2BB57F005917E5 /* Bone.c */; }; + 76F5BD3B1D2BD4A9005917E5 /* BoneData.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BCFC1D2BB57F005917E5 /* BoneData.c */; }; + 76F5BD3C1D2BD4A9005917E5 /* BoundingBoxAttachment.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BCFD1D2BB57F005917E5 /* BoundingBoxAttachment.c */; }; + 76F5BD3D1D2BD4A9005917E5 /* Event.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BCFE1D2BB57F005917E5 /* Event.c */; }; + 76F5BD3E1D2BD4A9005917E5 /* EventData.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BCFF1D2BB57F005917E5 /* EventData.c */; }; + 76F5BD3F1D2BD4A9005917E5 /* extension.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD001D2BB57F005917E5 /* extension.c */; }; + 76F5BD401D2BD4A9005917E5 /* IkConstraint.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD011D2BB57F005917E5 /* IkConstraint.c */; }; + 76F5BD411D2BD4A9005917E5 /* IkConstraintData.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD021D2BB57F005917E5 /* IkConstraintData.c */; }; + 76F5BD421D2BD4A9005917E5 /* Json.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD031D2BB57F005917E5 /* Json.c */; }; + 76F5BD431D2BD4A9005917E5 /* Json.h in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD041D2BB57F005917E5 /* Json.h */; }; + 76F5BD441D2BD4A9005917E5 /* MeshAttachment.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD051D2BB57F005917E5 /* MeshAttachment.c */; }; + 76F5BD451D2BD4A9005917E5 /* PathAttachment.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD061D2BB57F005917E5 /* PathAttachment.c */; }; + 76F5BD461D2BD4A9005917E5 /* PathConstraint.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD071D2BB57F005917E5 /* PathConstraint.c */; }; + 76F5BD471D2BD4A9005917E5 /* PathConstraintData.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD081D2BB57F005917E5 /* PathConstraintData.c */; }; + 76F5BD481D2BD4A9005917E5 /* RegionAttachment.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD091D2BB57F005917E5 /* RegionAttachment.c */; }; + 76F5BD491D2BD4A9005917E5 /* Skeleton.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD0A1D2BB57F005917E5 /* Skeleton.c */; }; + 76F5BD4A1D2BD4A9005917E5 /* SkeletonBounds.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD0B1D2BB57F005917E5 /* SkeletonBounds.c */; }; + 76F5BD4B1D2BD4A9005917E5 /* SkeletonData.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD0C1D2BB57F005917E5 /* SkeletonData.c */; }; + 76F5BD4C1D2BD4A9005917E5 /* SkeletonJson.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD0D1D2BB57F005917E5 /* SkeletonJson.c */; }; + 76F5BD4D1D2BD4A9005917E5 /* Skin.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD0E1D2BB57F005917E5 /* Skin.c */; }; + 76F5BD4E1D2BD4A9005917E5 /* Slot.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD0F1D2BB57F005917E5 /* Slot.c */; }; + 76F5BD4F1D2BD4A9005917E5 /* SlotData.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD101D2BB57F005917E5 /* SlotData.c */; }; + 76F5BD501D2BD4A9005917E5 /* TransformConstraint.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD111D2BB57F005917E5 /* TransformConstraint.c */; }; + 76F5BD511D2BD4A9005917E5 /* TransformConstraintData.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD121D2BB57F005917E5 /* TransformConstraintData.c */; }; + 76F5BD521D2BD4A9005917E5 /* VertexAttachment.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD131D2BB57F005917E5 /* VertexAttachment.c */; }; + 76F5BD551D2BD7D3005917E5 /* TankExample.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD531D2BD7D3005917E5 /* TankExample.cpp */; }; + 76F5BD561D2BD7EF005917E5 /* TankExample.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD531D2BD7D3005917E5 /* TankExample.cpp */; }; + 76F5BD571D2BD7EF005917E5 /* TankExample.h in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD541D2BD7D3005917E5 /* TankExample.h */; }; 8262943E1AAF051F00CB7CF7 /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8262943D1AAF051F00CB7CF7 /* Security.framework */; }; BF171245129291EC00B8313A /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BF170DB012928DE900B8313A /* OpenGLES.framework */; }; BF1712471292920000B8313A /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = BF170DB412928DE900B8313A /* libz.dylib */; }; @@ -254,35 +263,6 @@ 76AAA3BD1D180F7C00C54FCB /* SimpleCommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SimpleCommand.h; sourceTree = ""; }; 76AAA3BE1D180F7C00C54FCB /* SpineboyExample.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SpineboyExample.cpp; sourceTree = ""; }; 76AAA3BF1D180F7C00C54FCB /* SpineboyExample.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SpineboyExample.h; sourceTree = ""; }; - 76AAA3C61D180FA800C54FCB /* Animation.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Animation.c; path = "../../../spine-c/src/spine/Animation.c"; sourceTree = ""; }; - 76AAA3C71D180FA800C54FCB /* AnimationState.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = AnimationState.c; path = "../../../spine-c/src/spine/AnimationState.c"; sourceTree = ""; }; - 76AAA3C81D180FA800C54FCB /* AnimationStateData.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = AnimationStateData.c; path = "../../../spine-c/src/spine/AnimationStateData.c"; sourceTree = ""; }; - 76AAA3C91D180FA800C54FCB /* Atlas.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Atlas.c; path = "../../../spine-c/src/spine/Atlas.c"; sourceTree = ""; }; - 76AAA3CA1D180FA800C54FCB /* AtlasAttachmentLoader.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = AtlasAttachmentLoader.c; path = "../../../spine-c/src/spine/AtlasAttachmentLoader.c"; sourceTree = ""; }; - 76AAA3CB1D180FA800C54FCB /* Attachment.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Attachment.c; path = "../../../spine-c/src/spine/Attachment.c"; sourceTree = ""; }; - 76AAA3CC1D180FA800C54FCB /* AttachmentLoader.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = AttachmentLoader.c; path = "../../../spine-c/src/spine/AttachmentLoader.c"; sourceTree = ""; }; - 76AAA3CD1D180FA800C54FCB /* Bone.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Bone.c; path = "../../../spine-c/src/spine/Bone.c"; sourceTree = ""; }; - 76AAA3CE1D180FA800C54FCB /* BoneData.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = BoneData.c; path = "../../../spine-c/src/spine/BoneData.c"; sourceTree = ""; }; - 76AAA3CF1D180FA800C54FCB /* BoundingBoxAttachment.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = BoundingBoxAttachment.c; path = "../../../spine-c/src/spine/BoundingBoxAttachment.c"; sourceTree = ""; }; - 76AAA3D01D180FA800C54FCB /* Event.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Event.c; path = "../../../spine-c/src/spine/Event.c"; sourceTree = ""; }; - 76AAA3D11D180FA800C54FCB /* EventData.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = EventData.c; path = "../../../spine-c/src/spine/EventData.c"; sourceTree = ""; }; - 76AAA3D21D180FA800C54FCB /* extension.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = extension.c; path = "../../../spine-c/src/spine/extension.c"; sourceTree = ""; }; - 76AAA3D31D180FA800C54FCB /* IkConstraint.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = IkConstraint.c; path = "../../../spine-c/src/spine/IkConstraint.c"; sourceTree = ""; }; - 76AAA3D41D180FA800C54FCB /* IkConstraintData.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = IkConstraintData.c; path = "../../../spine-c/src/spine/IkConstraintData.c"; sourceTree = ""; }; - 76AAA3D51D180FA800C54FCB /* Json.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Json.c; path = "../../../spine-c/src/spine/Json.c"; sourceTree = ""; }; - 76AAA3D61D180FA800C54FCB /* Json.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Json.h; path = "../../../spine-c/src/spine/Json.h"; sourceTree = ""; }; - 76AAA3D71D180FA800C54FCB /* MeshAttachment.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = MeshAttachment.c; path = "../../../spine-c/src/spine/MeshAttachment.c"; sourceTree = ""; }; - 76AAA3D81D180FA800C54FCB /* RegionAttachment.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = RegionAttachment.c; path = "../../../spine-c/src/spine/RegionAttachment.c"; sourceTree = ""; }; - 76AAA3D91D180FA800C54FCB /* Skeleton.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Skeleton.c; path = "../../../spine-c/src/spine/Skeleton.c"; sourceTree = ""; }; - 76AAA3DA1D180FA800C54FCB /* SkeletonBounds.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = SkeletonBounds.c; path = "../../../spine-c/src/spine/SkeletonBounds.c"; sourceTree = ""; }; - 76AAA3DB1D180FA800C54FCB /* SkeletonData.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = SkeletonData.c; path = "../../../spine-c/src/spine/SkeletonData.c"; sourceTree = ""; }; - 76AAA3DC1D180FA800C54FCB /* SkeletonJson.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = SkeletonJson.c; path = "../../../spine-c/src/spine/SkeletonJson.c"; sourceTree = ""; }; - 76AAA3DD1D180FA800C54FCB /* Skin.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Skin.c; path = "../../../spine-c/src/spine/Skin.c"; sourceTree = ""; }; - 76AAA3DE1D180FA800C54FCB /* Slot.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Slot.c; path = "../../../spine-c/src/spine/Slot.c"; sourceTree = ""; }; - 76AAA3DF1D180FA800C54FCB /* SlotData.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = SlotData.c; path = "../../../spine-c/src/spine/SlotData.c"; sourceTree = ""; }; - 76AAA3E01D180FA800C54FCB /* TransformConstraint.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = TransformConstraint.c; path = "../../../spine-c/src/spine/TransformConstraint.c"; sourceTree = ""; }; - 76AAA3E11D180FA800C54FCB /* TransformConstraintData.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = TransformConstraintData.c; path = "../../../spine-c/src/spine/TransformConstraintData.c"; sourceTree = ""; }; - 76AAA3E21D180FA800C54FCB /* WeightedMeshAttachment.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = WeightedMeshAttachment.c; path = "../../../spine-c/src/spine/WeightedMeshAttachment.c"; sourceTree = ""; }; 76AAA4001D18106000C54FCB /* AttachmentVertices.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = AttachmentVertices.cpp; path = ../../src/spine/AttachmentVertices.cpp; sourceTree = ""; }; 76AAA4011D18106000C54FCB /* AttachmentVertices.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AttachmentVertices.h; path = ../../src/spine/AttachmentVertices.h; sourceTree = ""; }; 76AAA4021D18106000C54FCB /* Cocos2dAttachmentLoader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Cocos2dAttachmentLoader.cpp; path = ../../src/spine/Cocos2dAttachmentLoader.cpp; sourceTree = ""; }; @@ -300,6 +280,40 @@ 76AAA4541D18132D00C54FCB /* ipad-retina */ = {isa = PBXFileReference; lastKnownFileType = folder; path = "ipad-retina"; sourceTree = ""; }; 76AAA4551D18132D00C54FCB /* iphone */ = {isa = PBXFileReference; lastKnownFileType = folder; path = iphone; sourceTree = ""; }; 76AAA4561D18132D00C54FCB /* iphone-retina */ = {isa = PBXFileReference; lastKnownFileType = folder; path = "iphone-retina"; sourceTree = ""; }; + 76F5BCF41D2BB57F005917E5 /* Animation.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Animation.c; path = "../../../spine-c/src/spine/Animation.c"; sourceTree = ""; }; + 76F5BCF51D2BB57F005917E5 /* AnimationState.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = AnimationState.c; path = "../../../spine-c/src/spine/AnimationState.c"; sourceTree = ""; }; + 76F5BCF61D2BB57F005917E5 /* AnimationStateData.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = AnimationStateData.c; path = "../../../spine-c/src/spine/AnimationStateData.c"; sourceTree = ""; }; + 76F5BCF71D2BB57F005917E5 /* Atlas.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Atlas.c; path = "../../../spine-c/src/spine/Atlas.c"; sourceTree = ""; }; + 76F5BCF81D2BB57F005917E5 /* AtlasAttachmentLoader.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = AtlasAttachmentLoader.c; path = "../../../spine-c/src/spine/AtlasAttachmentLoader.c"; sourceTree = ""; }; + 76F5BCF91D2BB57F005917E5 /* Attachment.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Attachment.c; path = "../../../spine-c/src/spine/Attachment.c"; sourceTree = ""; }; + 76F5BCFA1D2BB57F005917E5 /* AttachmentLoader.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = AttachmentLoader.c; path = "../../../spine-c/src/spine/AttachmentLoader.c"; sourceTree = ""; }; + 76F5BCFB1D2BB57F005917E5 /* Bone.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Bone.c; path = "../../../spine-c/src/spine/Bone.c"; sourceTree = ""; }; + 76F5BCFC1D2BB57F005917E5 /* BoneData.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = BoneData.c; path = "../../../spine-c/src/spine/BoneData.c"; sourceTree = ""; }; + 76F5BCFD1D2BB57F005917E5 /* BoundingBoxAttachment.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = BoundingBoxAttachment.c; path = "../../../spine-c/src/spine/BoundingBoxAttachment.c"; sourceTree = ""; }; + 76F5BCFE1D2BB57F005917E5 /* Event.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Event.c; path = "../../../spine-c/src/spine/Event.c"; sourceTree = ""; }; + 76F5BCFF1D2BB57F005917E5 /* EventData.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = EventData.c; path = "../../../spine-c/src/spine/EventData.c"; sourceTree = ""; }; + 76F5BD001D2BB57F005917E5 /* extension.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = extension.c; path = "../../../spine-c/src/spine/extension.c"; sourceTree = ""; }; + 76F5BD011D2BB57F005917E5 /* IkConstraint.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = IkConstraint.c; path = "../../../spine-c/src/spine/IkConstraint.c"; sourceTree = ""; }; + 76F5BD021D2BB57F005917E5 /* IkConstraintData.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = IkConstraintData.c; path = "../../../spine-c/src/spine/IkConstraintData.c"; sourceTree = ""; }; + 76F5BD031D2BB57F005917E5 /* Json.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Json.c; path = "../../../spine-c/src/spine/Json.c"; sourceTree = ""; }; + 76F5BD041D2BB57F005917E5 /* Json.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Json.h; path = "../../../spine-c/src/spine/Json.h"; sourceTree = ""; }; + 76F5BD051D2BB57F005917E5 /* MeshAttachment.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = MeshAttachment.c; path = "../../../spine-c/src/spine/MeshAttachment.c"; sourceTree = ""; }; + 76F5BD061D2BB57F005917E5 /* PathAttachment.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = PathAttachment.c; path = "../../../spine-c/src/spine/PathAttachment.c"; sourceTree = ""; }; + 76F5BD071D2BB57F005917E5 /* PathConstraint.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = PathConstraint.c; path = "../../../spine-c/src/spine/PathConstraint.c"; sourceTree = ""; }; + 76F5BD081D2BB57F005917E5 /* PathConstraintData.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = PathConstraintData.c; path = "../../../spine-c/src/spine/PathConstraintData.c"; sourceTree = ""; }; + 76F5BD091D2BB57F005917E5 /* RegionAttachment.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = RegionAttachment.c; path = "../../../spine-c/src/spine/RegionAttachment.c"; sourceTree = ""; }; + 76F5BD0A1D2BB57F005917E5 /* Skeleton.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Skeleton.c; path = "../../../spine-c/src/spine/Skeleton.c"; sourceTree = ""; }; + 76F5BD0B1D2BB57F005917E5 /* SkeletonBounds.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = SkeletonBounds.c; path = "../../../spine-c/src/spine/SkeletonBounds.c"; sourceTree = ""; }; + 76F5BD0C1D2BB57F005917E5 /* SkeletonData.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = SkeletonData.c; path = "../../../spine-c/src/spine/SkeletonData.c"; sourceTree = ""; }; + 76F5BD0D1D2BB57F005917E5 /* SkeletonJson.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = SkeletonJson.c; path = "../../../spine-c/src/spine/SkeletonJson.c"; sourceTree = ""; }; + 76F5BD0E1D2BB57F005917E5 /* Skin.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Skin.c; path = "../../../spine-c/src/spine/Skin.c"; sourceTree = ""; }; + 76F5BD0F1D2BB57F005917E5 /* Slot.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Slot.c; path = "../../../spine-c/src/spine/Slot.c"; sourceTree = ""; }; + 76F5BD101D2BB57F005917E5 /* SlotData.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = SlotData.c; path = "../../../spine-c/src/spine/SlotData.c"; sourceTree = ""; }; + 76F5BD111D2BB57F005917E5 /* TransformConstraint.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = TransformConstraint.c; path = "../../../spine-c/src/spine/TransformConstraint.c"; sourceTree = ""; }; + 76F5BD121D2BB57F005917E5 /* TransformConstraintData.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = TransformConstraintData.c; path = "../../../spine-c/src/spine/TransformConstraintData.c"; sourceTree = ""; }; + 76F5BD131D2BB57F005917E5 /* VertexAttachment.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = VertexAttachment.c; path = "../../../spine-c/src/spine/VertexAttachment.c"; sourceTree = ""; }; + 76F5BD531D2BD7D3005917E5 /* TankExample.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TankExample.cpp; sourceTree = ""; }; + 76F5BD541D2BD7D3005917E5 /* TankExample.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TankExample.h; sourceTree = ""; }; 8262943D1AAF051F00CB7CF7 /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = System/Library/Frameworks/Security.framework; sourceTree = SDKROOT; }; BF170DB012928DE900B8313A /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGLES.framework; path = System/Library/Frameworks/OpenGLES.framework; sourceTree = SDKROOT; }; BF170DB412928DE900B8313A /* libz.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libz.dylib; path = usr/lib/libz.dylib; sourceTree = SDKROOT; }; @@ -447,6 +461,8 @@ 46880B8319C43A87006E1F66 /* Classes */ = { isa = PBXGroup; children = ( + 76F5BD531D2BD7D3005917E5 /* TankExample.cpp */, + 76F5BD541D2BD7D3005917E5 /* TankExample.h */, 76AAA3B31D180F7C00C54FCB /* AppDelegate.cpp */, 76AAA3B41D180F7C00C54FCB /* AppDelegate.h */, 76AAA3B51D180F7C00C54FCB /* AppMacros.h */, @@ -515,35 +531,38 @@ 76AAA3B21D180F7300C54FCB /* spine */ = { isa = PBXGroup; children = ( - 76AAA3C61D180FA800C54FCB /* Animation.c */, - 76AAA3C71D180FA800C54FCB /* AnimationState.c */, - 76AAA3C81D180FA800C54FCB /* AnimationStateData.c */, - 76AAA3C91D180FA800C54FCB /* Atlas.c */, - 76AAA3CA1D180FA800C54FCB /* AtlasAttachmentLoader.c */, - 76AAA3CB1D180FA800C54FCB /* Attachment.c */, - 76AAA3CC1D180FA800C54FCB /* AttachmentLoader.c */, - 76AAA3CD1D180FA800C54FCB /* Bone.c */, - 76AAA3CE1D180FA800C54FCB /* BoneData.c */, - 76AAA3CF1D180FA800C54FCB /* BoundingBoxAttachment.c */, - 76AAA3D01D180FA800C54FCB /* Event.c */, - 76AAA3D11D180FA800C54FCB /* EventData.c */, - 76AAA3D21D180FA800C54FCB /* extension.c */, - 76AAA3D31D180FA800C54FCB /* IkConstraint.c */, - 76AAA3D41D180FA800C54FCB /* IkConstraintData.c */, - 76AAA3D51D180FA800C54FCB /* Json.c */, - 76AAA3D61D180FA800C54FCB /* Json.h */, - 76AAA3D71D180FA800C54FCB /* MeshAttachment.c */, - 76AAA3D81D180FA800C54FCB /* RegionAttachment.c */, - 76AAA3D91D180FA800C54FCB /* Skeleton.c */, - 76AAA3DA1D180FA800C54FCB /* SkeletonBounds.c */, - 76AAA3DB1D180FA800C54FCB /* SkeletonData.c */, - 76AAA3DC1D180FA800C54FCB /* SkeletonJson.c */, - 76AAA3DD1D180FA800C54FCB /* Skin.c */, - 76AAA3DE1D180FA800C54FCB /* Slot.c */, - 76AAA3DF1D180FA800C54FCB /* SlotData.c */, - 76AAA3E01D180FA800C54FCB /* TransformConstraint.c */, - 76AAA3E11D180FA800C54FCB /* TransformConstraintData.c */, - 76AAA3E21D180FA800C54FCB /* WeightedMeshAttachment.c */, + 76F5BCF41D2BB57F005917E5 /* Animation.c */, + 76F5BCF51D2BB57F005917E5 /* AnimationState.c */, + 76F5BCF61D2BB57F005917E5 /* AnimationStateData.c */, + 76F5BCF71D2BB57F005917E5 /* Atlas.c */, + 76F5BCF81D2BB57F005917E5 /* AtlasAttachmentLoader.c */, + 76F5BCF91D2BB57F005917E5 /* Attachment.c */, + 76F5BCFA1D2BB57F005917E5 /* AttachmentLoader.c */, + 76F5BCFB1D2BB57F005917E5 /* Bone.c */, + 76F5BCFC1D2BB57F005917E5 /* BoneData.c */, + 76F5BCFD1D2BB57F005917E5 /* BoundingBoxAttachment.c */, + 76F5BCFE1D2BB57F005917E5 /* Event.c */, + 76F5BCFF1D2BB57F005917E5 /* EventData.c */, + 76F5BD001D2BB57F005917E5 /* extension.c */, + 76F5BD011D2BB57F005917E5 /* IkConstraint.c */, + 76F5BD021D2BB57F005917E5 /* IkConstraintData.c */, + 76F5BD031D2BB57F005917E5 /* Json.c */, + 76F5BD041D2BB57F005917E5 /* Json.h */, + 76F5BD051D2BB57F005917E5 /* MeshAttachment.c */, + 76F5BD061D2BB57F005917E5 /* PathAttachment.c */, + 76F5BD071D2BB57F005917E5 /* PathConstraint.c */, + 76F5BD081D2BB57F005917E5 /* PathConstraintData.c */, + 76F5BD091D2BB57F005917E5 /* RegionAttachment.c */, + 76F5BD0A1D2BB57F005917E5 /* Skeleton.c */, + 76F5BD0B1D2BB57F005917E5 /* SkeletonBounds.c */, + 76F5BD0C1D2BB57F005917E5 /* SkeletonData.c */, + 76F5BD0D1D2BB57F005917E5 /* SkeletonJson.c */, + 76F5BD0E1D2BB57F005917E5 /* Skin.c */, + 76F5BD0F1D2BB57F005917E5 /* Slot.c */, + 76F5BD101D2BB57F005917E5 /* SlotData.c */, + 76F5BD111D2BB57F005917E5 /* TransformConstraint.c */, + 76F5BD121D2BB57F005917E5 /* TransformConstraintData.c */, + 76F5BD131D2BB57F005917E5 /* VertexAttachment.c */, ); name = spine; sourceTree = ""; @@ -715,49 +734,53 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 76AAA3E61D180FA800C54FCB /* Atlas.c in Sources */, + 76F5BD221D2BB57F005917E5 /* IkConstraintData.c in Sources */, + 76F5BD1E1D2BB57F005917E5 /* Event.c in Sources */, + 76F5BD311D2BB57F005917E5 /* TransformConstraintData.c in Sources */, + 76F5BD1B1D2BB57F005917E5 /* Bone.c in Sources */, + 76F5BD171D2BB57F005917E5 /* Atlas.c in Sources */, 76AAA40C1D18106000C54FCB /* AttachmentVertices.cpp in Sources */, - 76AAA3EA1D180FA800C54FCB /* Bone.c in Sources */, - 76AAA3ED1D180FA800C54FCB /* Event.c in Sources */, - 76AAA3E31D180FA800C54FCB /* Animation.c in Sources */, - 76AAA3F81D180FA800C54FCB /* SkeletonJson.c in Sources */, + 76F5BD551D2BD7D3005917E5 /* TankExample.cpp in Sources */, + 76F5BD321D2BB57F005917E5 /* VertexAttachment.c in Sources */, 76AAA3C51D180F7C00C54FCB /* SpineboyExample.cpp in Sources */, - 76AAA3F21D180FA800C54FCB /* Json.c in Sources */, - 76AAA3F71D180FA800C54FCB /* SkeletonData.c in Sources */, - 76AAA3E91D180FA800C54FCB /* AttachmentLoader.c in Sources */, - 76AAA3F11D180FA800C54FCB /* IkConstraintData.c in Sources */, - 76AAA3F51D180FA800C54FCB /* Skeleton.c in Sources */, - 76AAA3FE1D180FA800C54FCB /* WeightedMeshAttachment.c in Sources */, - 76AAA3EB1D180FA800C54FCB /* BoneData.c in Sources */, - 76AAA3F91D180FA800C54FCB /* Skin.c in Sources */, + 76F5BD2C1D2BB57F005917E5 /* SkeletonJson.c in Sources */, + 76F5BD2E1D2BB57F005917E5 /* Slot.c in Sources */, + 76F5BD251D2BB57F005917E5 /* PathAttachment.c in Sources */, + 76F5BD1D1D2BB57F005917E5 /* BoundingBoxAttachment.c in Sources */, + 76F5BD161D2BB57F005917E5 /* AnimationStateData.c in Sources */, 76AAA3C11D180F7C00C54FCB /* BatchingExample.cpp in Sources */, + 76F5BD2D1D2BB57F005917E5 /* Skin.c in Sources */, 76AAA40D1D18106000C54FCB /* Cocos2dAttachmentLoader.cpp in Sources */, - 76AAA3E41D180FA800C54FCB /* AnimationState.c in Sources */, - 76AAA3EF1D180FA800C54FCB /* extension.c in Sources */, - 76AAA3FA1D180FA800C54FCB /* Slot.c in Sources */, - 76AAA3FC1D180FA800C54FCB /* TransformConstraint.c in Sources */, 76AAA40F1D18106000C54FCB /* SkeletonBatch.cpp in Sources */, - 76AAA3F01D180FA800C54FCB /* IkConstraint.c in Sources */, + 76F5BD211D2BB57F005917E5 /* IkConstraint.c in Sources */, + 76F5BD1F1D2BB57F005917E5 /* EventData.c in Sources */, + 76F5BD1A1D2BB57F005917E5 /* AttachmentLoader.c in Sources */, 76AAA3C31D180F7C00C54FCB /* RaptorExample.cpp in Sources */, - 76AAA3F61D180FA800C54FCB /* SkeletonBounds.c in Sources */, - 76AAA3EC1D180FA800C54FCB /* BoundingBoxAttachment.c in Sources */, + 76F5BD281D2BB57F005917E5 /* RegionAttachment.c in Sources */, + 76F5BD2A1D2BB57F005917E5 /* SkeletonBounds.c in Sources */, + 76F5BD201D2BB57F005917E5 /* extension.c in Sources */, 76AAA3C01D180F7C00C54FCB /* AppDelegate.cpp in Sources */, 76AAA3C41D180F7C00C54FCB /* SimpleCommand.cpp in Sources */, + 76F5BD261D2BB57F005917E5 /* PathConstraint.c in Sources */, 503AE10017EB989F00D1A890 /* AppController.mm in Sources */, - 76AAA3E81D180FA800C54FCB /* Attachment.c in Sources */, - 76AAA3F31D180FA800C54FCB /* MeshAttachment.c in Sources */, - 76AAA3E71D180FA800C54FCB /* AtlasAttachmentLoader.c in Sources */, - 76AAA3FB1D180FA800C54FCB /* SlotData.c in Sources */, - 76AAA3FD1D180FA800C54FCB /* TransformConstraintData.c in Sources */, - 76AAA3EE1D180FA800C54FCB /* EventData.c in Sources */, - 76AAA3E51D180FA800C54FCB /* AnimationStateData.c in Sources */, 76AAA40E1D18106000C54FCB /* SkeletonAnimation.cpp in Sources */, 76AAA4111D18106000C54FCB /* spine-cocos2dx.cpp in Sources */, + 76F5BD181D2BB57F005917E5 /* AtlasAttachmentLoader.c in Sources */, + 76F5BD151D2BB57F005917E5 /* AnimationState.c in Sources */, + 76F5BD2F1D2BB57F005917E5 /* SlotData.c in Sources */, + 76F5BD271D2BB57F005917E5 /* PathConstraintData.c in Sources */, + 76F5BD291D2BB57F005917E5 /* Skeleton.c in Sources */, + 76F5BD241D2BB57F005917E5 /* MeshAttachment.c in Sources */, + 76F5BD1C1D2BB57F005917E5 /* BoneData.c in Sources */, 76AAA3C21D180F7C00C54FCB /* GoblinsExample.cpp in Sources */, + 76F5BD141D2BB57F005917E5 /* Animation.c in Sources */, + 76F5BD2B1D2BB57F005917E5 /* SkeletonData.c in Sources */, 503AE10217EB989F00D1A890 /* RootViewController.mm in Sources */, - 76AAA3F41D180FA800C54FCB /* RegionAttachment.c in Sources */, + 76F5BD191D2BB57F005917E5 /* Attachment.c in Sources */, + 76F5BD231D2BB57F005917E5 /* Json.c in Sources */, 503AE10117EB989F00D1A890 /* main.m in Sources */, 76AAA4101D18106000C54FCB /* SkeletonRenderer.cpp in Sources */, + 76F5BD301D2BB57F005917E5 /* TransformConstraint.c in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -765,6 +788,40 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + 76F5BD561D2BD7EF005917E5 /* TankExample.cpp in Sources */, + 76F5BD571D2BD7EF005917E5 /* TankExample.h in Sources */, + 76F5BD331D2BD4A9005917E5 /* Animation.c in Sources */, + 76F5BD341D2BD4A9005917E5 /* AnimationState.c in Sources */, + 76F5BD351D2BD4A9005917E5 /* AnimationStateData.c in Sources */, + 76F5BD361D2BD4A9005917E5 /* Atlas.c in Sources */, + 76F5BD371D2BD4A9005917E5 /* AtlasAttachmentLoader.c in Sources */, + 76F5BD381D2BD4A9005917E5 /* Attachment.c in Sources */, + 76F5BD391D2BD4A9005917E5 /* AttachmentLoader.c in Sources */, + 76F5BD3A1D2BD4A9005917E5 /* Bone.c in Sources */, + 76F5BD3B1D2BD4A9005917E5 /* BoneData.c in Sources */, + 76F5BD3C1D2BD4A9005917E5 /* BoundingBoxAttachment.c in Sources */, + 76F5BD3D1D2BD4A9005917E5 /* Event.c in Sources */, + 76F5BD3E1D2BD4A9005917E5 /* EventData.c in Sources */, + 76F5BD3F1D2BD4A9005917E5 /* extension.c in Sources */, + 76F5BD401D2BD4A9005917E5 /* IkConstraint.c in Sources */, + 76F5BD411D2BD4A9005917E5 /* IkConstraintData.c in Sources */, + 76F5BD421D2BD4A9005917E5 /* Json.c in Sources */, + 76F5BD431D2BD4A9005917E5 /* Json.h in Sources */, + 76F5BD441D2BD4A9005917E5 /* MeshAttachment.c in Sources */, + 76F5BD451D2BD4A9005917E5 /* PathAttachment.c in Sources */, + 76F5BD461D2BD4A9005917E5 /* PathConstraint.c in Sources */, + 76F5BD471D2BD4A9005917E5 /* PathConstraintData.c in Sources */, + 76F5BD481D2BD4A9005917E5 /* RegionAttachment.c in Sources */, + 76F5BD491D2BD4A9005917E5 /* Skeleton.c in Sources */, + 76F5BD4A1D2BD4A9005917E5 /* SkeletonBounds.c in Sources */, + 76F5BD4B1D2BD4A9005917E5 /* SkeletonData.c in Sources */, + 76F5BD4C1D2BD4A9005917E5 /* SkeletonJson.c in Sources */, + 76F5BD4D1D2BD4A9005917E5 /* Skin.c in Sources */, + 76F5BD4E1D2BD4A9005917E5 /* Slot.c in Sources */, + 76F5BD4F1D2BD4A9005917E5 /* SlotData.c in Sources */, + 76F5BD501D2BD4A9005917E5 /* TransformConstraint.c in Sources */, + 76F5BD511D2BD4A9005917E5 /* TransformConstraintData.c in Sources */, + 76F5BD521D2BD4A9005917E5 /* VertexAttachment.c in Sources */, 76AAA43B1D1811B000C54FCB /* AppDelegate.cpp in Sources */, 76AAA43C1D1811B000C54FCB /* AppDelegate.h in Sources */, 76AAA43D1D1811B000C54FCB /* AppMacros.h in Sources */, @@ -778,35 +835,6 @@ 76AAA4451D1811B000C54FCB /* SimpleCommand.h in Sources */, 76AAA4461D1811B000C54FCB /* SpineboyExample.cpp in Sources */, 76AAA4471D1811B000C54FCB /* SpineboyExample.h in Sources */, - 76AAA41E1D1811A700C54FCB /* Animation.c in Sources */, - 76AAA41F1D1811A700C54FCB /* AnimationState.c in Sources */, - 76AAA4201D1811A700C54FCB /* AnimationStateData.c in Sources */, - 76AAA4211D1811A700C54FCB /* Atlas.c in Sources */, - 76AAA4221D1811A700C54FCB /* AtlasAttachmentLoader.c in Sources */, - 76AAA4231D1811A700C54FCB /* Attachment.c in Sources */, - 76AAA4241D1811A700C54FCB /* AttachmentLoader.c in Sources */, - 76AAA4251D1811A700C54FCB /* Bone.c in Sources */, - 76AAA4261D1811A700C54FCB /* BoneData.c in Sources */, - 76AAA4271D1811A700C54FCB /* BoundingBoxAttachment.c in Sources */, - 76AAA4281D1811A700C54FCB /* Event.c in Sources */, - 76AAA4291D1811A700C54FCB /* EventData.c in Sources */, - 76AAA42A1D1811A700C54FCB /* extension.c in Sources */, - 76AAA42B1D1811A700C54FCB /* IkConstraint.c in Sources */, - 76AAA42C1D1811A700C54FCB /* IkConstraintData.c in Sources */, - 76AAA42D1D1811A700C54FCB /* Json.c in Sources */, - 76AAA42E1D1811A700C54FCB /* Json.h in Sources */, - 76AAA42F1D1811A700C54FCB /* MeshAttachment.c in Sources */, - 76AAA4301D1811A700C54FCB /* RegionAttachment.c in Sources */, - 76AAA4311D1811A700C54FCB /* Skeleton.c in Sources */, - 76AAA4321D1811A700C54FCB /* SkeletonBounds.c in Sources */, - 76AAA4331D1811A700C54FCB /* SkeletonData.c in Sources */, - 76AAA4341D1811A700C54FCB /* SkeletonJson.c in Sources */, - 76AAA4351D1811A700C54FCB /* Skin.c in Sources */, - 76AAA4361D1811A700C54FCB /* Slot.c in Sources */, - 76AAA4371D1811A700C54FCB /* SlotData.c in Sources */, - 76AAA4381D1811A700C54FCB /* TransformConstraint.c in Sources */, - 76AAA4391D1811A700C54FCB /* TransformConstraintData.c in Sources */, - 76AAA43A1D1811A700C54FCB /* WeightedMeshAttachment.c in Sources */, 76AAA4121D18119F00C54FCB /* AttachmentVertices.cpp in Sources */, 76AAA4131D18119F00C54FCB /* AttachmentVertices.h in Sources */, 76AAA4141D18119F00C54FCB /* Cocos2dAttachmentLoader.cpp in Sources */, diff --git a/spine-cocos2dx/example/proj.win32/spine-cocos2d-x.vcxproj b/spine-cocos2dx/example/proj.win32/spine-cocos2d-x.vcxproj index 9c9618356..95dfbbf27 100644 --- a/spine-cocos2dx/example/proj.win32/spine-cocos2d-x.vcxproj +++ b/spine-cocos2dx/example/proj.win32/spine-cocos2d-x.vcxproj @@ -162,6 +162,9 @@ xcopy "$(ProjectDir)..\Resources" "$(OutDir)" /D /E /I /F /Y + + + @@ -172,7 +175,7 @@ xcopy "$(ProjectDir)..\Resources" "$(OutDir)" /D /E /I /F /Y - + @@ -185,6 +188,7 @@ xcopy "$(ProjectDir)..\Resources" "$(OutDir)" /D /E /I /F /Y + @@ -204,6 +208,9 @@ xcopy "$(ProjectDir)..\Resources" "$(OutDir)" /D /E /I /F /Y + + + @@ -215,7 +222,7 @@ xcopy "$(ProjectDir)..\Resources" "$(OutDir)" /D /E /I /F /Y - + @@ -230,6 +237,7 @@ xcopy "$(ProjectDir)..\Resources" "$(OutDir)" /D /E /I /F /Y + diff --git a/spine-cocos2dx/example/proj.win32/spine-cocos2d-x.vcxproj.filters b/spine-cocos2dx/example/proj.win32/spine-cocos2d-x.vcxproj.filters index 1332e7ae7..406bf581a 100644 --- a/spine-cocos2dx/example/proj.win32/spine-cocos2d-x.vcxproj.filters +++ b/spine-cocos2dx/example/proj.win32/spine-cocos2d-x.vcxproj.filters @@ -108,6 +108,15 @@ spine + + spine + + + spine + + + spine + spine @@ -138,9 +147,12 @@ spine - + spine + + src + @@ -185,7 +197,7 @@ spine-cocos2dx - + spine @@ -206,9 +218,6 @@ spine - - spine - spine @@ -236,6 +245,15 @@ spine + + spine + + + spine + + + spine + spine @@ -269,9 +287,15 @@ spine - + spine + + spine + + + src + diff --git a/spine-cocos2dx/src/spine/Cocos2dAttachmentLoader.cpp b/spine-cocos2dx/src/spine/Cocos2dAttachmentLoader.cpp index 3b3dbde2b..fe719d669 100644 --- a/spine-cocos2dx/src/spine/Cocos2dAttachmentLoader.cpp +++ b/spine-cocos2dx/src/spine/Cocos2dAttachmentLoader.cpp @@ -64,22 +64,9 @@ void _Cocos2dAttachmentLoader_configureAttachment (spAttachmentLoader* loader, s spMeshAttachment* meshAttachment = SUB_CAST(spMeshAttachment, attachment); spAtlasRegion* region = (spAtlasRegion*)meshAttachment->rendererObject; AttachmentVertices* attachmentVertices = new AttachmentVertices((Texture2D*)region->page->rendererObject, - meshAttachment->verticesCount >> 1, meshAttachment->triangles, meshAttachment->trianglesCount); + meshAttachment->super.worldVerticesLength >> 1, meshAttachment->triangles, meshAttachment->trianglesCount); V3F_C4B_T2F* vertices = attachmentVertices->_triangles->verts; - for (int i = 0, ii = 0, nn = meshAttachment->verticesCount; ii < nn; ++i, ii += 2) { - vertices[i].texCoords.u = meshAttachment->uvs[ii]; - vertices[i].texCoords.v = meshAttachment->uvs[ii + 1]; - } - meshAttachment->rendererObject = attachmentVertices; - break; - } - case SP_ATTACHMENT_WEIGHTED_MESH: { - spWeightedMeshAttachment* meshAttachment = SUB_CAST(spWeightedMeshAttachment, attachment); - spAtlasRegion* region = (spAtlasRegion*)meshAttachment->rendererObject; - AttachmentVertices* attachmentVertices = new AttachmentVertices((Texture2D*)region->page->rendererObject, - meshAttachment->uvsCount >> 1, meshAttachment->triangles, meshAttachment->trianglesCount); - V3F_C4B_T2F* vertices = attachmentVertices->_triangles->verts; - for (int i = 0, ii = 0, nn = meshAttachment->uvsCount; ii < nn; ++i, ii += 2) { + for (int i = 0, ii = 0, nn = meshAttachment->super.worldVerticesLength; ii < nn; ++i, ii += 2) { vertices[i].texCoords.u = meshAttachment->uvs[ii]; vertices[i].texCoords.v = meshAttachment->uvs[ii + 1]; } @@ -102,11 +89,6 @@ void _Cocos2dAttachmentLoader_disposeAttachment (spAttachmentLoader* loader, spA delete (AttachmentVertices*)meshAttachment->rendererObject; break; } - case SP_ATTACHMENT_WEIGHTED_MESH: { - spWeightedMeshAttachment* meshAttachment = SUB_CAST(spWeightedMeshAttachment, attachment); - delete (AttachmentVertices*)meshAttachment->rendererObject; - break; - } default: ; } } diff --git a/spine-cocos2dx/src/spine/SkeletonRenderer.cpp b/spine-cocos2dx/src/spine/SkeletonRenderer.cpp index 572b200ea..01f5c6937 100644 --- a/spine-cocos2dx/src/spine/SkeletonRenderer.cpp +++ b/spine-cocos2dx/src/spine/SkeletonRenderer.cpp @@ -180,16 +180,6 @@ void SkeletonRenderer::draw (Renderer* renderer, const Mat4& transform, uint32_t color.a = attachment->a; break; } - case SP_ATTACHMENT_WEIGHTED_MESH: { - spWeightedMeshAttachment* attachment = (spWeightedMeshAttachment*)slot->attachment; - spWeightedMeshAttachment_computeWorldVertices(attachment, slot, _worldVertices); - attachmentVertices = getAttachmentVertices(attachment); - color.r = attachment->r; - color.g = attachment->g; - color.b = attachment->b; - color.a = attachment->a; - break; - } default: continue; } @@ -292,10 +282,6 @@ AttachmentVertices* SkeletonRenderer::getAttachmentVertices (spMeshAttachment* a return (AttachmentVertices*)attachment->rendererObject; } -AttachmentVertices* SkeletonRenderer::getAttachmentVertices (spWeightedMeshAttachment* attachment) const { - return (AttachmentVertices*)attachment->rendererObject; -} - Rect SkeletonRenderer::getBoundingBox () const { float minX = FLT_MAX, minY = FLT_MAX, maxX = FLT_MIN, maxY = FLT_MIN; float scaleX = getScaleX(), scaleY = getScaleY(); @@ -310,11 +296,7 @@ Rect SkeletonRenderer::getBoundingBox () const { } else if (slot->attachment->type == SP_ATTACHMENT_MESH) { spMeshAttachment* mesh = (spMeshAttachment*)slot->attachment; spMeshAttachment_computeWorldVertices(mesh, slot, _worldVertices); - verticesCount = mesh->verticesCount; - } else if (slot->attachment->type == SP_ATTACHMENT_WEIGHTED_MESH) { - spWeightedMeshAttachment* mesh = (spWeightedMeshAttachment*)slot->attachment; - spWeightedMeshAttachment_computeWorldVertices(mesh, slot, _worldVertices); - verticesCount = mesh->uvsCount; + verticesCount = mesh->super.worldVerticesLength; } else continue; for (int ii = 0; ii < verticesCount; ii += 2) { diff --git a/spine-cocos2dx/src/spine/SkeletonRenderer.h b/spine-cocos2dx/src/spine/SkeletonRenderer.h index 05f0b5534..28422151c 100644 --- a/spine-cocos2dx/src/spine/SkeletonRenderer.h +++ b/spine-cocos2dx/src/spine/SkeletonRenderer.h @@ -117,7 +117,6 @@ protected: void setSkeletonData (spSkeletonData* skeletonData, bool ownsSkeletonData); virtual AttachmentVertices* getAttachmentVertices (spRegionAttachment* attachment) const; virtual AttachmentVertices* getAttachmentVertices (spMeshAttachment* attachment) const; - virtual AttachmentVertices* getAttachmentVertices (spWeightedMeshAttachment* attachment) const; bool _ownsSkeletonData; spAtlas* _atlas; diff --git a/spine-libgdx/spine-libgdx-tests/assets/path/tank.atlas b/spine-libgdx/spine-libgdx-tests/assets/path/tank.atlas new file mode 100644 index 000000000..ecf24e7df --- /dev/null +++ b/spine-libgdx/spine-libgdx-tests/assets/path/tank.atlas @@ -0,0 +1,125 @@ + +tank.png +size: 2048,1024 +format: RGBA8888 +filter: Linear,Linear +repeat: none +images/antenna + rotate: true + xy: 1295, 683 + size: 22, 303 + orig: 22, 303 + offset: 0, 0 + index: -1 +images/cannon + rotate: false + xy: 2, 93 + size: 931, 58 + orig: 931, 58 + offset: 0, 0 + index: -1 +images/cannonConnector + rotate: true + xy: 1676, 455 + size: 112, 135 + orig: 112, 135 + offset: 0, 0 + index: -1 +images/guntower + rotate: false + xy: 1295, 707 + size: 730, 289 + orig: 730, 289 + offset: 0, 0 + index: -1 +images/machinegun + rotate: false + xy: 2, 34 + size: 331, 57 + orig: 331, 57 + offset: 0, 0 + index: -1 +images/machinegun-mount + rotate: false + xy: 1952, 609 + size: 72, 96 + orig: 72, 96 + offset: 0, 0 + index: -1 +images/rock + rotate: false + xy: 935, 96 + size: 252, 55 + orig: 252, 55 + offset: 0, 0 + index: -1 +images/tankBottom + rotate: false + xy: 2, 377 + size: 1285, 276 + orig: 1285, 276 + offset: 0, 0 + index: -1 +images/tankBottom-shadow + rotate: false + xy: 2, 655 + size: 1291, 341 + orig: 1291, 341 + offset: 0, 0 + index: -1 +images/tankTop + rotate: false + xy: 2, 153 + size: 1407, 222 + orig: 1407, 222 + offset: 0, 0 + index: -1 +images/tread + rotate: false + xy: 2, 2 + size: 96, 30 + orig: 96, 30 + offset: 0, 0 + index: -1 +images/tread-inside + rotate: false + xy: 335, 63 + size: 25, 28 + orig: 25, 28 + offset: 0, 0 + index: -1 +images/wheel-big + rotate: false + xy: 1295, 490 + size: 191, 191 + orig: 191, 191 + offset: 0, 0 + index: -1 +images/wheel-big-overlay + rotate: false + xy: 1488, 495 + size: 186, 186 + orig: 186, 186 + offset: 0, 0 + index: -1 +images/wheel-mid + rotate: false + xy: 1676, 569 + size: 136, 136 + orig: 136, 136 + offset: 0, 0 + index: -1 +images/wheel-mid-overlay + rotate: false + xy: 1814, 569 + size: 136, 136 + orig: 136, 136 + offset: 0, 0 + index: -1 +images/wheel-small + rotate: false + xy: 1813, 496 + size: 71, 71 + orig: 71, 71 + offset: 0, 0 + index: -1 diff --git a/spine-libgdx/spine-libgdx-tests/assets/path/tank.json b/spine-libgdx/spine-libgdx-tests/assets/path/tank.json new file mode 100644 index 000000000..c26ccbe47 --- /dev/null +++ b/spine-libgdx/spine-libgdx-tests/assets/path/tank.json @@ -0,0 +1,1899 @@ +{ +"skeleton": { "hash": "kgtyty1lpfv5JU2lygtFi2u3oQQ", "spine": "3.3.07", "width": 1914.53, "height": 964.05, "images": "" }, +"bones": [ + { "name": "root" }, + { "name": "tankRoot", "parent": "root", "y": 200 }, + { "name": "tankTreads", "parent": "tankRoot" }, + { "name": "tankBody", "parent": "tankTreads", "y": 10 }, + { "name": "guntower", "parent": "tankBody", "x": -21.72, "y": 245.47 }, + { "name": "antennaRoot", "parent": "guntower", "x": 164.6, "y": 202.52 }, + { "name": "antenna1", "parent": "antennaRoot", "length": 40, "rotation": 90, "y": 39.99, "color": "ffee00ff" }, + { "name": "antenna2", "parent": "antenna1", "length": 42, "x": 42, "color": "ffee00ff" }, + { "name": "antenna3", "parent": "antenna2", "length": 42, "x": 42, "color": "ffee00ff" }, + { "name": "antenna4", "parent": "antenna3", "length": 42, "x": 42, "color": "ffee00ff" }, + { "name": "antenna5", "parent": "antenna4", "length": 42, "x": 42, "color": "ffee00ff" }, + { "name": "antenna6", "parent": "antenna5", "length": 42, "x": 42, "color": "ffee00ff" }, + { "name": "cannonConnector", "parent": "guntower", "x": -235.04, "y": 96.07 }, + { "name": "cannonTarget", "parent": "tankRoot", "x": -1486.66, "y": 351.82, "color": "ff3f00ff" }, + { "name": "cannon", "parent": "cannonConnector", "length": 946.68, "rotation": 180, "color": "ff4000ff" }, + { "name": "cannonTip", "parent": "cannon", "x": 946.68, "color": "ff4000ff" }, + { "name": "machineGunTarget", "parent": "tankRoot", "x": -1474, "y": 559.42, "color": "ff3f00ff" }, + { + "name": "machinegun-mount", + "parent": "guntower", + "length": 90.97, + "rotation": 90, + "x": -123.72, + "y": 218.32, + "color": "15ff00ff" + }, + { + "name": "machinegun", + "parent": "machinegun-mount", + "length": 208.94, + "rotation": 90, + "x": 91.52, + "y": -1.03, + "color": "15ff00ff" + }, + { "name": "machinegun-tip", "parent": "machinegun", "x": 210.42, "y": -12.2 }, + { "name": "rock", "parent": "root", "x": -656.45 }, + { + "name": "tread", + "parent": "tankRoot", + "length": 82, + "rotation": 180, + "x": -22.89, + "y": 213.85, + "scaleX": 0.993, + "color": "e64344ff" + }, + { "name": "tread2", "parent": "tread", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread3", "parent": "tread2", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread4", "parent": "tread3", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread5", "parent": "tread4", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread6", "parent": "tread5", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread7", "parent": "tread6", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread8", "parent": "tread7", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread9", "parent": "tread8", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread10", "parent": "tread9", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread11", "parent": "tread10", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread12", "parent": "tread11", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread13", "parent": "tread12", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread14", "parent": "tread13", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread15", "parent": "tread14", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread16", "parent": "tread15", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread17", "parent": "tread16", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread18", "parent": "tread17", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread19", "parent": "tread18", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread20", "parent": "tread19", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread21", "parent": "tread20", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread22", "parent": "tread21", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread23", "parent": "tread22", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread24", "parent": "tread23", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread25", "parent": "tread24", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread26", "parent": "tread25", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread27", "parent": "tread26", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread28", "parent": "tread27", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread29", "parent": "tread28", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread30", "parent": "tread29", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread31", "parent": "tread30", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread32", "parent": "tread31", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread33", "parent": "tread32", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread34", "parent": "tread33", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread35", "parent": "tread34", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread36", "parent": "tread35", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "wheel-midCenter", "parent": "tankRoot", "y": -114.56 }, + { "name": "treadCollider1", "parent": "wheel-midCenter", "x": -329.57, "y": -85.44, "color": "ff00fbff" }, + { "name": "treadCollider2", "parent": "wheel-midCenter", "x": -165.95, "y": -85.44, "color": "ff00fbff" }, + { "name": "treadCollider3", "parent": "wheel-midCenter", "y": -85.44, "color": "ff00fbff" }, + { "name": "treadCollider4", "parent": "wheel-midCenter", "x": 163.56, "y": -85.44, "color": "ff00fbff" }, + { "name": "treadCollider5", "parent": "wheel-midCenter", "x": 329.12, "y": -85.44, "color": "ff00fbff" }, + { "name": "treadGravity1", "parent": "tankRoot", "rotation": 180, "x": -175.35, "y": 109.99, "color": "ff00fbff" }, + { "name": "treadGravity2", "parent": "tankRoot", "rotation": 180, "x": 177.88, "y": 105.45, "color": "ff00fbff" }, + { "name": "wheel-bigRoot1", "parent": "tankTreads", "x": -549.59, "y": 14.39, "color": "abe323ff" }, + { "name": "wheel-big1", "parent": "wheel-bigRoot1", "x": -0.02, "color": "abe323ff" }, + { "name": "wheel-bigRoot2", "parent": "tankTreads", "x": 547.33, "y": 14.39 }, + { "name": "wheel-big2", "parent": "wheel-bigRoot2" }, + { "name": "wheel-midRoot1", "parent": "wheel-midCenter", "x": -410.57, "color": "abe323ff" }, + { "name": "wheel-mid1", "parent": "wheel-midRoot1", "color": "abe323ff" }, + { "name": "wheel-midRoot2", "parent": "wheel-midCenter", "x": -246.95 }, + { "name": "wheel-mid2", "parent": "wheel-midRoot2" }, + { "name": "wheel-midRoot3", "parent": "wheel-midCenter", "x": -82.72 }, + { "name": "wheel-mid3", "parent": "wheel-midRoot3" }, + { "name": "wheel-midRoot4", "parent": "wheel-midCenter", "x": 80.89 }, + { "name": "wheel-mid4", "parent": "wheel-midRoot4" }, + { "name": "wheel-midRoot5", "parent": "wheel-midCenter", "x": 244.51 }, + { "name": "wheel-mid5", "parent": "wheel-midRoot5" }, + { "name": "wheel-midRoot6", "parent": "wheel-midCenter", "x": 408.73 }, + { "name": "wheel-mid6", "parent": "wheel-midRoot6" }, + { "name": "wheel-smallRoot1", "parent": "tankTreads", "x": -337.38, "y": 109.43 }, + { "name": "wheel-small1", "parent": "wheel-smallRoot1", "color": "abe323ff" }, + { "name": "wheel-smallRoot2", "parent": "tankTreads", "x": 0.08, "y": 109.43 }, + { "name": "wheel-small2", "parent": "wheel-smallRoot2" }, + { "name": "wheel-smallRoot3", "parent": "tankTreads", "x": 334.68, "y": 109.43 }, + { "name": "wheel-small3", "parent": "wheel-smallRoot3" } +], +"slots": [ + { "name": "tankBody-shadow", "bone": "tankBody", "color": "ffffffb9", "attachment": "images/tankBottom-shadow" }, + { "name": "bottom", "bone": "tankBody", "attachment": "images/tankBottom" }, + { "name": "tread-inside1", "bone": "tread", "attachment": "images/tread-inside" }, + { "name": "tread-inside53", "bone": "tread27", "attachment": "images/tread-inside" }, + { "name": "tread-inside27", "bone": "tread14", "attachment": "images/tread-inside" }, + { "name": "tread-inside3", "bone": "tread2", "attachment": "images/tread-inside" }, + { "name": "tread-inside55", "bone": "tread28", "attachment": "images/tread-inside" }, + { "name": "tread-inside29", "bone": "tread15", "attachment": "images/tread-inside" }, + { "name": "tread-inside5", "bone": "tread3", "attachment": "images/tread-inside" }, + { "name": "tread-inside57", "bone": "tread29", "attachment": "images/tread-inside" }, + { "name": "tread-inside31", "bone": "tread16", "attachment": "images/tread-inside" }, + { "name": "tread-inside7", "bone": "tread4", "attachment": "images/tread-inside" }, + { "name": "tread-inside59", "bone": "tread30", "attachment": "images/tread-inside" }, + { "name": "tread-inside33", "bone": "tread17", "attachment": "images/tread-inside" }, + { "name": "tread-inside9", "bone": "tread5", "attachment": "images/tread-inside" }, + { "name": "tread-inside61", "bone": "tread31", "attachment": "images/tread-inside" }, + { "name": "tread-inside35", "bone": "tread18", "attachment": "images/tread-inside" }, + { "name": "tread-inside11", "bone": "tread6", "attachment": "images/tread-inside" }, + { "name": "tread-inside63", "bone": "tread32", "attachment": "images/tread-inside" }, + { "name": "tread-inside37", "bone": "tread19", "attachment": "images/tread-inside" }, + { "name": "tread-inside13", "bone": "tread7", "attachment": "images/tread-inside" }, + { "name": "tread-inside65", "bone": "tread33", "attachment": "images/tread-inside" }, + { "name": "tread-inside39", "bone": "tread20", "attachment": "images/tread-inside" }, + { "name": "tread-inside15", "bone": "tread8", "attachment": "images/tread-inside" }, + { "name": "tread-inside67", "bone": "tread34", "attachment": "images/tread-inside" }, + { "name": "tread-inside69", "bone": "tread35", "attachment": "images/tread-inside" }, + { "name": "tread-inside71", "bone": "tread36", "attachment": "images/tread-inside" }, + { "name": "tread-inside41", "bone": "tread21", "attachment": "images/tread-inside" }, + { "name": "tread-inside17", "bone": "tread9", "attachment": "images/tread-inside" }, + { "name": "tread-inside43", "bone": "tread22", "attachment": "images/tread-inside" }, + { "name": "tread-inside19", "bone": "tread10", "attachment": "images/tread-inside" }, + { "name": "tread-inside45", "bone": "tread23", "attachment": "images/tread-inside" }, + { "name": "tread-inside21", "bone": "tread11", "attachment": "images/tread-inside" }, + { "name": "tread-inside47", "bone": "tread24", "attachment": "images/tread-inside" }, + { "name": "tread-inside23", "bone": "tread12", "attachment": "images/tread-inside" }, + { "name": "tread-inside49", "bone": "tread25", "attachment": "images/tread-inside" }, + { "name": "tread-inside25", "bone": "tread13", "attachment": "images/tread-inside" }, + { "name": "tread-inside51", "bone": "tread26", "attachment": "images/tread-inside" }, + { "name": "tread-inside2", "bone": "tread", "attachment": "images/tread-inside" }, + { "name": "tread-inside54", "bone": "tread27", "attachment": "images/tread-inside" }, + { "name": "tread-inside28", "bone": "tread14", "attachment": "images/tread-inside" }, + { "name": "tread-inside4", "bone": "tread2", "attachment": "images/tread-inside" }, + { "name": "tread-inside56", "bone": "tread28", "attachment": "images/tread-inside" }, + { "name": "tread-inside30", "bone": "tread15", "attachment": "images/tread-inside" }, + { "name": "tread-inside6", "bone": "tread3", "attachment": "images/tread-inside" }, + { "name": "tread-inside58", "bone": "tread29", "attachment": "images/tread-inside" }, + { "name": "tread-inside32", "bone": "tread16", "attachment": "images/tread-inside" }, + { "name": "tread-inside8", "bone": "tread4", "attachment": "images/tread-inside" }, + { "name": "tread-inside60", "bone": "tread30", "attachment": "images/tread-inside" }, + { "name": "tread-inside34", "bone": "tread17", "attachment": "images/tread-inside" }, + { "name": "tread-inside10", "bone": "tread5", "attachment": "images/tread-inside" }, + { "name": "tread-inside62", "bone": "tread31", "attachment": "images/tread-inside" }, + { "name": "tread-inside36", "bone": "tread18", "attachment": "images/tread-inside" }, + { "name": "tread-inside12", "bone": "tread6", "attachment": "images/tread-inside" }, + { "name": "tread-inside64", "bone": "tread32", "attachment": "images/tread-inside" }, + { "name": "tread-inside38", "bone": "tread19", "attachment": "images/tread-inside" }, + { "name": "tread-inside14", "bone": "tread7", "attachment": "images/tread-inside" }, + { "name": "tread-inside66", "bone": "tread33", "attachment": "images/tread-inside" }, + { "name": "tread-inside40", "bone": "tread20", "attachment": "images/tread-inside" }, + { "name": "tread-inside16", "bone": "tread8", "attachment": "images/tread-inside" }, + { "name": "tread-inside68", "bone": "tread34", "attachment": "images/tread-inside" }, + { "name": "tread-inside70", "bone": "tread35", "attachment": "images/tread-inside" }, + { "name": "tread-inside72", "bone": "tread36", "attachment": "images/tread-inside" }, + { "name": "tread-inside42", "bone": "tread21", "attachment": "images/tread-inside" }, + { "name": "tread-inside18", "bone": "tread9", "attachment": "images/tread-inside" }, + { "name": "tread-inside44", "bone": "tread22", "attachment": "images/tread-inside" }, + { "name": "tread-inside20", "bone": "tread10", "attachment": "images/tread-inside" }, + { "name": "tread-inside46", "bone": "tread23", "attachment": "images/tread-inside" }, + { "name": "tread-inside22", "bone": "tread11", "attachment": "images/tread-inside" }, + { "name": "tread-inside48", "bone": "tread24", "attachment": "images/tread-inside" }, + { "name": "tread-inside24", "bone": "tread12", "attachment": "images/tread-inside" }, + { "name": "tread-inside50", "bone": "tread25", "attachment": "images/tread-inside" }, + { "name": "tread-inside26", "bone": "tread13", "attachment": "images/tread-inside" }, + { "name": "tread-inside52", "bone": "tread26", "attachment": "images/tread-inside" }, + { "name": "wheel-big", "bone": "wheel-big1", "color": "dbdbdbff", "attachment": "images/wheel-big" }, + { "name": "wheel-big2", "bone": "wheel-big2", "color": "dbdbdbff", "attachment": "images/wheel-big" }, + { "name": "wheel-mid", "bone": "wheel-mid1", "attachment": "images/wheel-mid" }, + { "name": "wheel-mid2", "bone": "wheel-mid2", "attachment": "images/wheel-mid" }, + { "name": "wheel-mid3", "bone": "wheel-mid3", "attachment": "images/wheel-mid" }, + { "name": "wheel-mid4", "bone": "wheel-mid4", "attachment": "images/wheel-mid" }, + { "name": "wheel-mid5", "bone": "wheel-mid5", "attachment": "images/wheel-mid" }, + { "name": "wheel-mid6", "bone": "wheel-mid6", "attachment": "images/wheel-mid" }, + { "name": "wheel-small", "bone": "wheel-small1", "attachment": "images/wheel-small" }, + { "name": "wheel-small2", "bone": "wheel-small2", "attachment": "images/wheel-small" }, + { "name": "wheel-small3", "bone": "wheel-small3", "attachment": "images/wheel-small" }, + { + "name": "wheel-mid-overlay", + "bone": "wheel-midRoot1", + "color": "ffffffec", + "attachment": "images/wheel-mid-overlay", + "blend": "multiply" + }, + { + "name": "wheel-mid-overlay2", + "bone": "wheel-midRoot2", + "color": "ffffffec", + "attachment": "images/wheel-mid-overlay", + "blend": "multiply" + }, + { + "name": "wheel-mid-overlay3", + "bone": "wheel-midRoot3", + "color": "ffffffec", + "attachment": "images/wheel-mid-overlay", + "blend": "multiply" + }, + { + "name": "wheel-mid-overlay4", + "bone": "wheel-midRoot4", + "color": "ffffffec", + "attachment": "images/wheel-mid-overlay", + "blend": "multiply" + }, + { + "name": "wheel-mid-overlay5", + "bone": "wheel-midRoot5", + "color": "ffffffec", + "attachment": "images/wheel-mid-overlay", + "blend": "multiply" + }, + { + "name": "wheel-mid-overlay6", + "bone": "wheel-midRoot6", + "color": "ffffffec", + "attachment": "images/wheel-mid-overlay", + "blend": "multiply" + }, + { + "name": "wheel-big-overlay1", + "bone": "wheel-bigRoot1", + "color": "ffffffe9", + "attachment": "images/wheel-big-overlay", + "blend": "multiply" + }, + { + "name": "wheel-big-overlay2", + "bone": "wheel-bigRoot2", + "color": "ffffffe9", + "attachment": "images/wheel-big-overlay", + "blend": "multiply" + }, + { "name": "treads", "bone": "tankRoot", "attachment": "treads" }, + { "name": "tread", "bone": "tread", "color": "c0974fff", "attachment": "images/tread" }, + { "name": "tread27", "bone": "tread27", "color": "adc9b8ff", "attachment": "images/tread" }, + { "name": "tread14", "bone": "tread14", "attachment": "images/tread" }, + { "name": "tread2", "bone": "tread2", "attachment": "images/tread" }, + { "name": "tread28", "bone": "tread28", "attachment": "images/tread" }, + { "name": "tread15", "bone": "tread15", "color": "adc9b8ff", "attachment": "images/tread" }, + { "name": "tread3", "bone": "tread3", "color": "adc9b8ff", "attachment": "images/tread" }, + { "name": "tread29", "bone": "tread29", "color": "adc9b8ff", "attachment": "images/tread" }, + { "name": "tread16", "bone": "tread16", "attachment": "images/tread" }, + { "name": "tread4", "bone": "tread4", "attachment": "images/tread" }, + { "name": "tread30", "bone": "tread30", "attachment": "images/tread" }, + { "name": "tread17", "bone": "tread17", "color": "adc9b8ff", "attachment": "images/tread" }, + { "name": "tread5", "bone": "tread5", "color": "adc9b8ff", "attachment": "images/tread" }, + { "name": "tread31", "bone": "tread31", "color": "adc9b8ff", "attachment": "images/tread" }, + { "name": "tread18", "bone": "tread18", "attachment": "images/tread" }, + { "name": "tread6", "bone": "tread6", "attachment": "images/tread" }, + { "name": "tread32", "bone": "tread32", "attachment": "images/tread" }, + { "name": "tread19", "bone": "tread19", "color": "adc9b8ff", "attachment": "images/tread" }, + { "name": "tread7", "bone": "tread7", "color": "adc9b8ff", "attachment": "images/tread" }, + { "name": "tread33", "bone": "tread33", "color": "adc9b8ff", "attachment": "images/tread" }, + { "name": "tread20", "bone": "tread20", "attachment": "images/tread" }, + { "name": "tread8", "bone": "tread8", "attachment": "images/tread" }, + { "name": "tread34", "bone": "tread34", "attachment": "images/tread" }, + { "name": "tread35", "bone": "tread35", "color": "adc9b8ff", "attachment": "images/tread" }, + { "name": "tread36", "bone": "tread36", "color": "adc9b8ff", "attachment": "images/tread" }, + { "name": "tread21", "bone": "tread21", "color": "adc9b8ff", "attachment": "images/tread" }, + { "name": "tread9", "bone": "tread9", "color": "adc9b8ff", "attachment": "images/tread" }, + { "name": "tread22", "bone": "tread22", "attachment": "images/tread" }, + { "name": "tread10", "bone": "tread10", "attachment": "images/tread" }, + { "name": "tread23", "bone": "tread23", "color": "adc9b8ff", "attachment": "images/tread" }, + { "name": "tread11", "bone": "tread11", "color": "adc9b8ff", "attachment": "images/tread" }, + { "name": "tread24", "bone": "tread24", "attachment": "images/tread" }, + { "name": "tread12", "bone": "tread12", "attachment": "images/tread" }, + { "name": "tread25", "bone": "tread25", "color": "adc9b8ff", "attachment": "images/tread" }, + { "name": "tread13", "bone": "tread13", "color": "adc9b8ff", "attachment": "images/tread" }, + { "name": "tread26", "bone": "tread26", "attachment": "images/tread" }, + { "name": "rock", "bone": "rock", "attachment": "images/rock" }, + { "name": "machinegun", "bone": "machinegun", "attachment": "images/machinegun" }, + { "name": "machinegun-mount", "bone": "machinegun-mount", "attachment": "images/machinegun-mount" }, + { "name": "tankTop", "bone": "tankBody", "attachment": "images/tankTop" }, + { "name": "guntower", "bone": "guntower", "attachment": "images/guntower" }, + { "name": "cannon", "bone": "cannon", "attachment": "images/cannon" }, + { "name": "cannonConnector", "bone": "cannonConnector", "attachment": "images/cannonConnector" }, + { "name": "antenna", "bone": "antennaRoot", "attachment": "images/antenna" } +], +"ik": [ + { + "name": "cannonTarget", + "bones": [ "cannon" ], + "target": "cannonTarget" + }, + { + "name": "machineGunTarget", + "bones": [ "machinegun" ], + "target": "machineGunTarget", + "mix": 0 + } +], +"transform": [ + { + "name": "wheel-big", + "bones": [ "wheel-big2" ], + "target": "wheel-big1", + "rotation": 65.6, + "translateMix": 0, + "scaleMix": 0, + "shearMix": 0 + }, + { + "name": "wheel-mid1", + "bones": [ "wheel-mid2", "wheel-mid4" ], + "target": "wheel-mid1", + "rotation": 93, + "translateMix": 0, + "scaleMix": 0, + "shearMix": 0 + }, + { + "name": "wheel-mid2", + "bones": [ "wheel-mid3", "wheel-mid5" ], + "target": "wheel-mid1", + "rotation": -89, + "translateMix": 0, + "scaleMix": 0, + "shearMix": 0 + }, + { + "name": "wheel-mid3", + "bones": [ "wheel-mid6" ], + "target": "wheel-mid1", + "rotation": -152.6, + "translateMix": 0, + "scaleMix": 0, + "shearMix": 0 + }, + { + "name": "wheel-small1", + "bones": [ "wheel-small2" ], + "target": "wheel-small1", + "rotation": 87, + "translateMix": 0, + "scaleMix": 0, + "shearMix": 0 + }, + { + "name": "wheel-small2", + "bones": [ "wheel-small3" ], + "target": "wheel-small1", + "rotation": 54.9, + "translateMix": 0, + "scaleMix": 0, + "shearMix": 0 + } +], +"path": [ + { + "name": "treads", + "bones": [ + "tread", + "tread2", + "tread3", + "tread4", + "tread5", + "tread6", + "tread7", + "tread8", + "tread9", + "tread10", + "tread11", + "tread12", + "tread13", + "tread14", + "tread15", + "tread16", + "tread17", + "tread18", + "tread19", + "tread20", + "tread21", + "tread22", + "tread23", + "tread24", + "tread25", + "tread26", + "tread27", + "tread28", + "tread29", + "tread30", + "tread31", + "tread32", + "tread33", + "tread34", + "tread35", + "tread36" + ], + "target": "treads", + "rotateMode": "chain" + } +], +"skins": { + "default": { + "antenna": { + "images/antenna": { + "type": "mesh", + "uvs": [ 0.64286, 0.07875, 0.65354, 0.15349, 0.66324, 0.22137, 0.67367, 0.29433, 0.68383, 0.36543, 0.69359, 0.43374, 0.7031, 0.50029, 0.71311, 0.5703, 0.72327, 0.64138, 0.73406, 0.71688, 0.7444, 0.78929, 0.75614, 0.8714, 0.76905, 0.9431, 1, 0.9431, 1, 1, 0, 1, 0, 0.9431, 0.20105, 0.9431, 0.20105, 0.87093, 0.21461, 0.78846, 0.22651, 0.71606, 0.23885, 0.64098, 0.25035, 0.57104, 0.26206, 0.49983, 0.27306, 0.4329, 0.2843, 0.36453, 0.29592, 0.29381, 0.308, 0.22037, 0.319, 0.15345, 0.33141, 0.07795, 0.34423, 0, 0.6316, 0 ], + "triangles": [ 30, 31, 0, 29, 30, 0, 29, 0, 1, 28, 29, 1, 28, 1, 2, 27, 28, 2, 27, 2, 3, 26, 3, 4, 25, 26, 4, 25, 4, 5, 26, 27, 3, 24, 5, 6, 23, 24, 6, 7, 23, 6, 24, 25, 5, 22, 7, 8, 21, 22, 8, 21, 8, 9, 7, 22, 23, 20, 9, 10, 19, 20, 10, 20, 21, 9, 19, 10, 11, 18, 19, 11, 17, 18, 11, 17, 11, 12, 15, 16, 17, 12, 13, 14, 15, 17, 12, 14, 15, 12 ], + "vertices": [ 2, 10, 65.37999, -3.14, 0.3125, 11, 23.38, -3.14, 0.6875, 3, 9, 84.73, -3.37, 0.0625, 10, 42.73, -3.37, 0.625, 11, 0.73, -3.37, 0.3125, 3, 9, 64.16, -3.59, 0.3125, 10, 22.16, -3.59, 0.625, 11, -19.83, -3.59, 0.0625, 3, 8, 84.06, -3.82, 0.0625, 9, 42.06, -3.82, 0.625, 10, 0.06, -3.82, 0.3125, 3, 8, 62.51, -4.04, 0.3125, 9, 20.51, -4.04, 0.625, 10, -21.48, -4.04, 0.0625, 3, 7, 83.81, -4.25, 0.0625, 8, 41.81, -4.25, 0.625, 9, -0.18, -4.25, 0.3125, 3, 7, 63.65, -4.46, 0.3125, 8, 21.65, -4.46, 0.625, 9, -20.34, -4.46, 0.0625, 3, 6, 84.43, -4.67999, 0.0625, 7, 42.43, -4.67999, 0.625, 8, 0.43, -4.67999, 0.3125, 3, 6, 62.9, -4.91, 0.3125, 7, 20.9, -4.91, 0.625, 8, -21.09, -4.91, 0.0625, 3, 5, 5.14, 80.01999, 0.0625, 6, 40.02, -5.14, 0.625, 7, -1.97, -5.14, 0.3125, 3, 5, 5.37, 58.08, 0.375, 6, 18.08, -5.37, 0.5625, 7, -23.91, -5.37, 0.0625, 1, 5, 5.63, 33.2, 1, 1, 5, 5.91, 11.48, 1, 1, 5, 11, 11.48, 1, 1, 5, 10.99, -5.75, 1, 1, 5, -11, -5.75, 1, 1, 5, -10.99, 11.48, 1, 1, 5, -6.57, 11.48, 1, 1, 5, -6.57, 33.34, 1, 3, 5, -6.27, 58.33, 0.375, 6, 18.33, 6.27, 0.5625, 7, -23.66, 6.27, 0.0625, 3, 5, -6.01, 80.26999, 0.0625, 6, 40.27, 6.01, 0.625, 7, -1.72, 6.01, 0.3125, 3, 6, 63.02, 5.74, 0.3125, 7, 21.02, 5.74, 0.625, 8, -20.96999, 5.74, 0.0625, 3, 6, 84.21, 5.49, 0.0625, 7, 42.21, 5.49, 0.625, 8, 0.21, 5.49, 0.3125, 3, 7, 63.79, 5.23, 0.3125, 8, 21.79, 5.23, 0.625, 9, -20.2, 5.23, 0.0625, 3, 7, 84.07, 4.98999, 0.0625, 8, 42.07, 4.98999, 0.625, 9, 0.07, 4.98999, 0.3125, 3, 8, 62.78, 4.73999, 0.3125, 9, 20.78, 4.73999, 0.625, 10, -21.21, 4.73999, 0.0625, 3, 8, 84.21, 4.48, 0.0625, 9, 42.21, 4.48, 0.625, 10, 0.21, 4.48, 0.3125, 3, 9, 64.46, 4.21999, 0.3125, 10, 22.46, 4.21999, 0.625, 11, -19.53, 4.21999, 0.0625, 3, 9, 84.74, 3.98, 0.0625, 10, 42.74, 3.98, 0.625, 11, 0.74, 3.98, 0.3125, 2, 10, 65.62, 3.7, 0.3125, 11, 23.62, 3.7, 0.6875, 1, 11, 47.24, 3.42, 1, 1, 11, 47.24, -2.89, 1 ], + "hull": 32, + "edges": [ 28, 30, 28, 26, 30, 32, 26, 24, 24, 22, 32, 34, 34, 24, 34, 36, 36, 22, 60, 62, 38, 36, 20, 22, 38, 20, 40, 38, 18, 20, 40, 18, 42, 40, 16, 18, 42, 16, 44, 42, 14, 16, 44, 14, 46, 44, 12, 14, 46, 12, 48, 46, 10, 12, 48, 10, 50, 48, 8, 10, 50, 8, 52, 50, 6, 8, 52, 6, 54, 52, 4, 6, 54, 4, 56, 54, 2, 4, 56, 2, 60, 58, 58, 56, 62, 0, 0, 2, 58, 0 ], + "width": 22, + "height": 303 + } + }, + "bottom": { + "images/tankBottom": { "x": -16.66, "y": 9.89, "width": 1285, "height": 276 } + }, + "cannon": { + "images/cannon": { "x": 481.95, "y": -0.02, "rotation": 179.99, "width": 931, "height": 58 } + }, + "cannonConnector": { + "images/cannonConnector": { + "type": "mesh", + "uvs": [ 1, 0.03236, 1, 0.10602, 0.90987, 0.32859, 0.81975, 0.55116, 0.72962, 0.77372, 0.6395, 0.99629, 0.42157, 0.99629, 0.20364, 0.99629, 0, 0.85433, 0, 0.69901, 0.02267, 0.52884, 0, 0.31444, 0.21601, 0.12998, 0.43367, 0, 0.63546, 0.0037, 0.48407, 0.77059, 0.31496, 0.52496, 0.64132, 0.19648, 0.21516, 0.76765, 0.58345, 0.5647, 0.68444, 0.40146, 0.46758, 0.36649, 0.28934, 0.34603 ], + "triangles": [ 21, 22, 12, 11, 12, 22, 17, 21, 13, 17, 13, 14, 21, 12, 13, 21, 17, 20, 16, 22, 21, 10, 11, 22, 10, 22, 16, 19, 21, 20, 16, 21, 19, 18, 10, 16, 9, 10, 18, 15, 16, 19, 18, 16, 15, 8, 9, 18, 7, 8, 18, 6, 18, 15, 7, 18, 6, 14, 0, 1, 17, 14, 1, 2, 17, 1, 20, 17, 2, 3, 20, 2, 19, 20, 3, 4, 19, 3, 15, 19, 4, 5, 15, 4, 6, 15, 5 ], + "vertices": [ 1, 12, 35.91, 69.08, 1, 1, 12, 35.91, 59.13, 1, 1, 12, 25.81, 29.09, 1, 1, 12, 15.72, -0.95, 1, 1, 12, 5.63, -31, 1, 1, 12, -4.46, -61.04, 1, 2, 12, -28.87, -61.04, 0.33333, 14, 28.87, 61.03, 0.66666, 1, 14, 53.27, 61.01, 1, 1, 14, 76.08, 41.83, 1, 1, 14, 71.17, 21.62, 1, 1, 14, 72.83, -1.62, 1, 1, 14, 70.37, -29.12, 1, 1, 14, 50.66, -56.13, 1, 2, 12, -28.43, 74.37, 0.41, 14, 28.43, -74.39, 0.58999, 2, 12, -4.91, 72.94999, 0.52, 14, 4.91, -72.94999, 0.48, 2, 12, -21.87, -30.57, 0.49, 14, 21.87, 30.56, 0.51, 1, 14, 40.81, -2.59999, 1, 2, 12, -4.25, 46.92, 0.49, 14, 4.25, -46.92, 0.51, 1, 14, 51.98, 30.15, 1, 2, 12, -10.74, -2.78, 0.49, 14, 10.74, 2.77, 0.51, 2, 12, 0.56, 19.25, 0.49, 14, -0.56, -19.25, 0.51, 1, 14, 23.71, -23.98, 1, 1, 14, 43.68, -26.76, 1 ], + "hull": 15, + "edges": [ 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 18, 20, 20, 22, 22, 24, 24, 26, 26, 28, 28, 0 ], + "width": 112, + "height": 135 + } + }, + "guntower": { + "images/guntower": { "x": 77.22, "y": 122.58, "width": 730, "height": 289 } + }, + "machinegun": { + "images/machinegun": { "x": 44.85, "y": -5.72, "rotation": -180, "width": 331, "height": 57 } + }, + "machinegun-mount": { + "images/machinegun-mount": { "x": 47.42, "y": -1.53, "rotation": -90, "width": 72, "height": 96 } + }, + "rock": { + "images/rock": { "color": "404040ff", "x": 25.23, "y": 27.35, "width": 252, "height": 55 } + }, + "tankBody-shadow": { + "images/tankBottom-shadow": { "x": -11.43, "y": -42.88, "width": 1291, "height": 341 } + }, + "tankTop": { + "images/tankTop": { "x": 6.8, "y": 168.71, "width": 1407, "height": 222 } + }, + "tread": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread-inside1": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside10": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside11": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside12": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside13": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside14": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside15": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside16": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside17": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside18": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside19": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside2": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside20": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside21": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside22": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside23": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside24": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside25": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside26": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside27": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside28": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside29": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside3": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside30": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside31": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside32": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside33": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside34": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside35": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside36": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside37": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside38": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside39": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside4": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside40": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside41": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside42": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside43": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside44": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside45": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside46": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside47": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside48": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside49": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside5": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside50": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside51": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside52": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside53": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside54": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside55": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside56": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside57": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside58": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside59": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside6": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside60": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside61": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside62": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside63": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside64": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside65": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside66": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside67": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside68": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside69": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside7": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside70": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside71": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside72": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside8": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside9": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread10": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread11": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread12": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread13": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread14": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread15": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread16": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread17": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread18": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread19": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread2": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread20": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread21": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread22": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread23": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread24": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread25": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread26": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread27": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread28": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread29": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread3": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread30": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread31": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread32": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread33": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread34": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread35": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread36": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread4": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread5": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread6": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread7": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread8": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread9": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "treads": { + "treads": { + "type": "path", + "closed": true, + "lengths": [ 182.41, 349, 472.77, 602.99, 780.46, 1052.96, 1133.44, 1218.43, 1298.34, 1382.7, 1465.57, 1546.11, 1628.02, 1707.73, 1794.36, 1876.75, 2158.69, 2321.34, 2438.56, 2579.42, 2745.35, 2919.23 ], + "vertexCount": 66, + "vertices": [ 1, 83, 11.23, 41.86, 1, 1, 83, 0.78, 41.93999, 1, 1, 83, -34.72, 42.23, 1, 1, 63, -104.21, 0.41, 1, 1, 63, 0.07, 0.55, 1, 1, 63, 68.8, 0.64, 1, 1, 81, 20.5, 43.47, 1, 1, 81, 1.13, 40.81, 1, 1, 81, -27.38, 36.84, 1, 1, 65, 147.06, 105, 1, 1, 65, 96.21, 96.63, 1, 1, 65, 43.87, 87.71, 1, 1, 65, 16.18, 103.34, 1, 1, 65, -33.66999, 94.2, 1, 1, 65, -99.35, 81.25, 1, 1, 65, -122.04, -1.69, 1, 1, 65, -83.58, -47.92, 1, 1, 65, -33.53, -109.36, 1, 1, 69, -83.56, -66.08999, 1, 1, 69, -2.16, -67.89, 1, 2, 69, 56.68, -41.48, 0.67999, 58, -24.31, -41.49, 0.32, 1, 58, -26.58, 16.69, 1, 1, 58, -2.69, 16.69, 1, 1, 58, 13.51, 16.69, 1, 2, 71, -52.41, -46.51, 0.74399, 58, 30.2, -46.51, 0.256, 1, 71, -0.32, -68.92, 1, 2, 71, 52.09, -44.72, 0.712, 59, -28.9, -44.73, 0.28799, 1, 59, -22.8, 16.24, 1, 1, 59, -1.42, 16.24, 1, 1, 59, 20.46999, 16.24, 1, 2, 73, -47.21, -47.45, 0.744, 59, 36.00999, -47.46, 0.25599, 1, 73, -0.28, -69.65, 1, 2, 73, 45.23, -47.26, 0.736, 60, -37.48, -47.26, 0.26399, 1, 60, -23.76, 15.27, 1, 1, 60, -0.13, 15.27, 1, 1, 60, 24.45, 15.27, 1, 2, 75, -47.36, -48.7, 0.74399, 60, 33.52, -48.7, 0.256, 1, 75, -0.49, -70.39, 1, 2, 75, 49.09, -48.33, 0.744, 61, -33.57, -48.34, 0.25599, 1, 61, -20.89, 15.83, 1, 1, 61, -1.25, 15.83, 1, 1, 61, 15.78, 15.83, 1, 2, 77, -52.49, -48.21, 0.75999, 61, 28.45, -48.21, 0.24, 1, 77, -2.5, -68.92, 1, 2, 77, 55.72, -47.82, 0.752, 62, -28.88, -47.82, 0.248, 1, 62, -21.64, 16.69, 1, 1, 62, -0.48, 16.69, 1, 1, 62, 20.73, 16.69, 1, 2, 79, -53.65, -48.89, 0.76, 62, 25.96, -48.89, 0.23999, 1, 79, 2.27, -69.65, 1, 1, 79, 44.94, -69.74, 1, 1, 65, 1172.98, -85.6, 1, 1, 65, 1190.53, -42.24, 1, 1, 65, 1215.63, 19.75, 1, 1, 65, 1175.55, 76.62, 1, 1, 65, 1134.22, 95.07, 1, 1, 65, 1128.4, 97.66, 1, 1, 65, 1081.79, 87.47, 1, 1, 65, 1017.16, 92.52, 1, 1, 65, 977.9, 95.58, 1, 1, 85, 47.07, 42.29, 1, 1, 85, 0.24, 42.74, 1, 1, 85, -29.63, 43.28, 1, 1, 64, -86.64, 1.35, 1, 1, 64, 0.49, 0.25, 1, 1, 64, 92.42, -0.89, 1 ] + } + }, + "wheel-big": { + "images/wheel-big": { "width": 191, "height": 191 } + }, + "wheel-big-overlay1": { + "images/wheel-big-overlay": { "width": 186, "height": 186 } + }, + "wheel-big-overlay2": { + "images/wheel-big-overlay": { "width": 186, "height": 186 } + }, + "wheel-big2": { + "images/wheel-big": { "width": 191, "height": 191 } + }, + "wheel-mid": { + "images/wheel-mid": { "width": 136, "height": 136 } + }, + "wheel-mid-overlay": { + "images/wheel-mid-overlay": { "width": 136, "height": 136 } + }, + "wheel-mid-overlay2": { + "images/wheel-mid-overlay": { "width": 136, "height": 136 } + }, + "wheel-mid-overlay3": { + "images/wheel-mid-overlay": { "width": 136, "height": 136 } + }, + "wheel-mid-overlay4": { + "images/wheel-mid-overlay": { "width": 136, "height": 136 } + }, + "wheel-mid-overlay5": { + "images/wheel-mid-overlay": { "width": 136, "height": 136 } + }, + "wheel-mid-overlay6": { + "images/wheel-mid-overlay": { "width": 136, "height": 136 } + }, + "wheel-mid2": { + "images/wheel-mid": { "width": 136, "height": 136 } + }, + "wheel-mid3": { + "images/wheel-mid": { "width": 136, "height": 136 } + }, + "wheel-mid4": { + "images/wheel-mid": { "width": 136, "height": 136 } + }, + "wheel-mid5": { + "images/wheel-mid": { "width": 136, "height": 136 } + }, + "wheel-mid6": { + "images/wheel-mid": { "width": 136, "height": 136 } + }, + "wheel-small": { + "images/wheel-small": { "width": 71, "height": 71 } + }, + "wheel-small2": { + "images/wheel-small": { "width": 71, "height": 71 } + }, + "wheel-small3": { + "images/wheel-small": { "width": 71, "height": 71 } + } + } +}, +"animations": { + "drive": { + "bones": { + "tankRoot": { + "translate": [ + { + "time": 0, + "x": 0, + "y": 0, + "curve": [ 0.549, 0, 0.907, 0.84 ] + }, + { + "time": 3.0333, + "x": -1426.14, + "y": 0, + "curve": [ 0.211, 0.23, 0.851, 0.92 ] + }, + { + "time": 4.8666, + "x": -2806.98, + "y": 0, + "curve": [ 0.253, 0.27, 0.625, 0.94 ] + }, + { "time": 5.3333, "x": -2903.34, "y": 0 } + ] + }, + "wheel-midRoot1": { + "translate": [ + { "time": 0.7666, "x": 0, "y": 0 }, + { + "time": 1.1666, + "x": 0, + "y": 50.95, + "curve": [ 0.633, 0, 0.907, 0.82 ] + }, + { "time": 1.5666, "x": 0, "y": 0 } + ] + }, + "treadCollider1": { + "rotate": [ + { "time": 1.1, "angle": 0 }, + { "time": 1.2333, "angle": -19.78 }, + { "time": 1.4666, "angle": 0 }, + { "time": 1.6, "angle": 28.87 }, + { "time": 1.8, "angle": 0 } + ], + "translate": [ + { "time": 1.1, "x": 0, "y": 0 }, + { + "time": 1.4666, + "x": 0, + "y": 58.66, + "curve": [ 0.352, 0, 0.828, 0.92 ] + }, + { "time": 1.8, "x": 0, "y": 0 } + ] + }, + "wheel-midRoot2": { + "translate": [ + { "time": 1.2666, "x": 0, "y": 0 }, + { + "time": 1.6333, + "x": 0, + "y": 55.07, + "curve": [ 0.889, 0.01, 0.843, 0.81 ] + }, + { "time": 1.9333, "x": 0, "y": 0 } + ] + }, + "treadCollider2": { + "rotate": [ + { "time": 1.5333, "angle": 0 }, + { "time": 1.6333, "angle": -18.67 }, + { "time": 1.8, "angle": 0 }, + { "time": 1.9, "angle": 29.49 }, + { "time": 2.0666, "angle": 0 } + ], + "translate": [ + { + "time": 1.5333, + "x": 0, + "y": 0, + "curve": [ 0.16, 0.25, 0.813, 0.82 ] + }, + { + "time": 1.8, + "x": 0, + "y": 59.03, + "curve": [ 0.376, 0.26, 0.879, 0.79 ] + }, + { "time": 2.0666, "x": 0, "y": 0 } + ] + }, + "wheel-midRoot3": { + "translate": [ + { "time": 1.6666, "x": 0, "y": 0 }, + { + "time": 1.9333, + "x": 0, + "y": 60.17, + "curve": [ 0.544, 0, 0.838, 0.77 ] + }, + { "time": 2.2, "x": 0, "y": 0 } + ] + }, + "treadCollider3": { + "rotate": [ + { "time": 1.8666, "angle": 0 }, + { "time": 1.9333, "angle": -20.16 }, + { "time": 2.0666, "angle": 0.57 }, + { "time": 2.1666, "angle": 33.66 }, + { "time": 2.3333, "angle": 0 } + ], + "translate": [ + { "time": 1.8666, "x": 0, "y": 0 }, + { + "time": 2.0666, + "x": 0, + "y": 61.53, + "curve": [ 0.582, 0, 0.836, 0.77 ] + }, + { "time": 2.3333, "x": 0, "y": 0 } + ] + }, + "wheel-midRoot4": { + "translate": [ + { "time": 1.9333, "x": 0, "y": 0 }, + { + "time": 2.2, + "x": 0, + "y": 58.89, + "curve": [ 0.48, 0, 0.75, 1 ] + }, + { "time": 2.4666, "x": 0, "y": 0 } + ] + }, + "treadCollider4": { + "rotate": [ + { "time": 2.1333, "angle": 0 }, + { "time": 2.2, "angle": -20.43 }, + { "time": 2.3333, "angle": 4.49 }, + { "time": 2.4333, "angle": 35.87 }, + { "time": 2.5666, "angle": 0 } + ], + "translate": [ + { + "time": 2.1333, + "x": 0, + "y": 0, + "curve": [ 0.191, 0.49, 0.75, 1 ] + }, + { "time": 2.3333, "x": 0, "y": 66.64 }, + { "time": 2.5666, "x": 0, "y": 0 } + ] + }, + "wheel-midRoot5": { + "translate": [ + { "time": 2.2, "x": 0, "y": 0 }, + { "time": 2.4333, "x": 0, "y": 60.26 }, + { "time": 2.7, "x": 0, "y": 0 } + ] + }, + "treadCollider5": { + "rotate": [ + { "time": 2.3333, "angle": 0 }, + { "time": 2.4333, "angle": -23.6 }, + { "time": 2.5666, "angle": 6.49 }, + { "time": 2.6666, "angle": 29.93 }, + { "time": 2.8, "angle": -0.13 } + ], + "translate": [ + { "time": 2.3333, "x": 0, "y": 0 }, + { "time": 2.4333, "x": 0, "y": 36.34 }, + { "time": 2.5, "x": 0, "y": 56.39 }, + { "time": 2.5666, "x": 0, "y": 61.34 }, + { "time": 2.8, "x": 0, "y": 2.04 } + ] + }, + "wheel-midRoot6": { + "translate": [ + { + "time": 2.4333, + "x": 0, + "y": 0, + "curve": [ 0.19, 0.26, 0.804, 0.8 ] + }, + { + "time": 2.6333, + "x": 0, + "y": 51.86, + "curve": [ 0.346, 0, 0.852, 0.7 ] + }, + { "time": 2.8, "x": 0, "y": 0 } + ] + }, + "wheel-mid1": { + "rotate": [ + { + "time": 0, + "angle": 21, + "curve": [ 0.504, 0.11, 0.931, 0.71 ] + }, + { "time": 0.8, "angle": 120 }, + { "time": 1.2333, "angle": 240 }, + { "time": 1.6, "angle": 0 }, + { "time": 1.9, "angle": 120 }, + { "time": 2.1666, "angle": 240 }, + { "time": 2.4, "angle": 0 }, + { "time": 2.5666, "angle": 120 }, + { "time": 2.7333, "angle": 240 }, + { "time": 2.9333, "angle": 0 }, + { "time": 3.1, "angle": 120 }, + { "time": 3.2666, "angle": 240 }, + { "time": 3.4333, "angle": 0 }, + { "time": 3.6333, "angle": 120 }, + { "time": 3.8, "angle": 240 }, + { "time": 3.9666, "angle": 0 }, + { "time": 4.1666, "angle": 120 }, + { "time": 4.3333, "angle": 240 }, + { "time": 4.5, "angle": 0 }, + { "time": 4.7, "angle": 120 }, + { "time": 4.8666, "angle": 240 }, + { "time": 5.2666, "angle": -67.99 } + ] + }, + "tankTreads": { + "rotate": [ + { + "time": 0, + "angle": 0, + "curve": [ 0.145, 0.34, 0.75, 1 ] + }, + { "time": 1.1, "angle": -3.9 }, + { "time": 1.3333, "angle": -2.37 }, + { "time": 1.6333, "angle": -3.54 }, + { "time": 2.1666, "angle": 0.27 }, + { + "time": 2.4666, + "angle": 2.55, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 2.7, + "angle": 3.88, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 3, "angle": -3.62 }, + { "time": 3.2333, "angle": -1.23, "curve": "stepped" }, + { + "time": 4.8666, + "angle": -1.23, + "curve": [ 0.188, 0.16, 0.75, 1 ] + }, + { + "time": 5.2, + "angle": 4.47, + "curve": [ 0.416, 0.01, 0.75, 1 ] + }, + { + "time": 5.5666, + "angle": -3.08, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 5.8333, "angle": -1.23 } + ] + }, + "wheel-big1": { + "rotate": [ + { + "time": 0, + "angle": 0, + "curve": [ 0.504, 0.11, 0.931, 0.71 ] + }, + { "time": 1.1, "angle": 120 }, + { "time": 1.5333, "angle": 240 }, + { "time": 1.8, "angle": 360 }, + { "time": 2.0333, "angle": 120 }, + { "time": 2.2666, "angle": 240 }, + { "time": 2.4666, "angle": 360 }, + { "time": 2.7, "angle": 120 }, + { "time": 2.9333, "angle": 240 }, + { "time": 3.1333, "angle": 360 }, + { "time": 3.3666, "angle": 120 }, + { "time": 3.5666, "angle": 240 }, + { "time": 3.8, "angle": -24 }, + { "time": 4.0333, "angle": 120 }, + { "time": 4.2333, "angle": 240 }, + { "time": 4.4666, "angle": -24 }, + { "time": 4.7, "angle": 120 }, + { "time": 4.8666, "angle": -143.99 }, + { + "time": 5.0666, + "angle": -131.4, + "curve": [ 0.14, 0.25, 0.75, 1 ] + }, + { "time": 5.6666, "angle": -76.85 }, + { "time": 5.8333, "angle": -72.3 } + ] + }, + "treadGravity1": { + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.4666, "x": 0, "y": 0 }, + { "time": 1.8, "x": 0, "y": 29.44 }, + { "time": 2.3333, "x": 0, "y": -0.52 }, + { "time": 2.5666, "x": 0, "y": 5.2 }, + { "time": 2.6666, "x": 0, "y": -11.05, "curve": "stepped" }, + { "time": 4.8666, "x": 0, "y": -11.05 }, + { "time": 5.0666, "x": 0, "y": -1.91 }, + { "time": 5.5333, "x": 0, "y": -6.9 }, + { "time": 5.7333, "x": 0, "y": -11.05 } + ] + }, + "treadGravity2": { + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.4666, "x": 0, "y": 0 }, + { "time": 1.8, "x": 0, "y": 8.5 }, + { "time": 2.3333, "x": 0, "y": 34.74 }, + { "time": 2.5666, "x": 0, "y": 5.2 }, + { "time": 2.6666, "x": 0, "y": -11.05, "curve": "stepped" }, + { "time": 4.8666, "x": 0, "y": -11.05 }, + { "time": 5.0666, "x": 0, "y": 3.9 }, + { "time": 5.5333, "x": 0, "y": -6.9 }, + { "time": 5.7333, "x": 0, "y": -11.05 } + ] + }, + "wheel-small1": { + "rotate": [ + { + "time": 0, + "angle": 0, + "curve": [ 0.504, 0.11, 0.931, 0.71 ] + }, + { "time": 0.7, "angle": 120 }, + { "time": 1.1, "angle": 240 }, + { "time": 1.4666, "angle": 360 }, + { "time": 1.7666, "angle": 120 }, + { "time": 2.0333, "angle": 240 }, + { "time": 2.2666, "angle": 360 }, + { "time": 2.4333, "angle": 120 }, + { "time": 2.5666, "angle": 240 }, + { "time": 2.7, "angle": 360 }, + { "time": 2.8333, "angle": 120 }, + { "time": 2.9666, "angle": 240 }, + { "time": 3.1, "angle": 360 }, + { "time": 3.2333, "angle": 120 }, + { "time": 3.3666, "angle": 240 }, + { "time": 3.5, "angle": 360 }, + { "time": 3.6333, "angle": 120 }, + { "time": 3.7666, "angle": 240 }, + { "time": 3.9, "angle": 360 }, + { "time": 4.0333, "angle": 120 }, + { "time": 4.1666, "angle": 240 }, + { "time": 4.3, "angle": 360 }, + { "time": 4.4333, "angle": 120 }, + { "time": 4.5666, "angle": 240 }, + { "time": 4.7, "angle": 360 }, + { "time": 4.8333, "angle": 120 }, + { "time": 5, "angle": 240 }, + { + "time": 5.2, + "angle": -25.64, + "curve": [ 0.181, 0.26, 0.75, 1 ] + }, + { "time": 5.5666, "angle": 90 } + ] + }, + "tankBody": { + "rotate": [ + { + "time": 0, + "angle": 0, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 1.1666, + "angle": -1.41, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 1.9333, + "angle": -0.18, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 2.3, + "angle": 0.84, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 3.0333, + "angle": -2.33, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 3.4666, + "angle": -0.45, + "curve": [ 0.329, 0.32, 0.757, 1 ] + }, + { + "time": 4.8666, + "angle": 0, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 5.3333, + "angle": 1.82, + "curve": [ 0.324, 0.01, 0.75, 1 ] + }, + { + "time": 5.6666, + "angle": -1.15, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 6.0333, "angle": 0 } + ] + }, + "antenna1": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { + "time": 0.4333, + "angle": 0, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 0.7333, + "angle": -1.55, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 1.0666, + "angle": -0.68, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 1.4, + "angle": 0.61, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 1.6666, "angle": -0.67, "curve": "stepped" }, + { + "time": 2.1333, + "angle": -0.67, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 2.3666, + "angle": 0.88, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 2.5666, + "angle": -1.69, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 2.8666, + "angle": 1.18, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 3.0333, + "angle": -1.09, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 3.2333, + "angle": 1.03, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 3.5, + "angle": -0.44, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 4.6666, "angle": -0.18 }, + { + "time": 5.0333, + "angle": -1.05, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 5.3666, + "angle": 9.17, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 5.6666, + "angle": -3.14, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 5.9, + "angle": 2.96, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 6.1, + "angle": -0.29, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 6.2666, "angle": 0.96 }, + { "time": 6.4, "angle": 0 } + ] + }, + "antenna2": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { + "time": 0.4333, + "angle": 0, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 0.7333, + "angle": -1.55, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 1.0666, + "angle": -0.68, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 1.4, + "angle": 0.61, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 1.6666, "angle": -0.67, "curve": "stepped" }, + { + "time": 2.1333, + "angle": -0.67, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 2.3666, + "angle": 0.88, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 2.5666, + "angle": -1.69, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 2.8666, + "angle": 1.18, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 3.0333, + "angle": -1.09, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 3.2333, + "angle": 1.03, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 3.5, + "angle": -0.44, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 4.6666, "angle": -0.18 }, + { + "time": 5.0333, + "angle": -1.05, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 5.3666, + "angle": 9.17, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 5.6666, + "angle": -3.14, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 5.9, + "angle": 2.96, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 6.1, + "angle": -0.29, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 6.2666, "angle": 0.96 }, + { "time": 6.4, "angle": 0 } + ] + }, + "antenna3": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { + "time": 0.4333, + "angle": 0, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 0.7333, + "angle": -1.55, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 1.0666, + "angle": -0.68, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 1.4, + "angle": 0.61, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 1.6666, "angle": -0.67, "curve": "stepped" }, + { + "time": 2.1333, + "angle": -0.67, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 2.3666, + "angle": 0.88, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 2.5666, + "angle": -1.69, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 2.8666, + "angle": 1.18, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 3.0333, + "angle": -1.09, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 3.2333, + "angle": 1.03, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 3.5, + "angle": -0.44, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 4.6666, "angle": -0.18 }, + { + "time": 5.0333, + "angle": -1.05, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 5.3666, + "angle": 9.17, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 5.6666, + "angle": -3.14, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 5.9, + "angle": 2.96, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 6.1, + "angle": -0.29, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 6.2666, "angle": 0.96 }, + { "time": 6.4, "angle": 0 } + ] + }, + "antenna4": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { + "time": 0.4333, + "angle": 0, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 0.7333, + "angle": -1.55, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 1.0666, + "angle": -0.68, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 1.4, + "angle": 0.61, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 1.6666, "angle": -0.67, "curve": "stepped" }, + { + "time": 2.1333, + "angle": -0.67, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 2.3666, + "angle": 0.88, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 2.5666, + "angle": -1.69, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 2.8666, + "angle": 1.18, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 3.0333, + "angle": -1.09, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 3.2333, + "angle": 1.03, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 3.5, + "angle": -0.44, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 4.6666, "angle": -0.18 }, + { + "time": 5.0333, + "angle": -1.05, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 5.3666, + "angle": 9.17, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 5.6666, + "angle": -3.14, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 5.9, + "angle": 2.96, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 6.1, + "angle": -0.29, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 6.2666, "angle": 0.96 }, + { "time": 6.4, "angle": 0 } + ] + }, + "antenna5": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { + "time": 0.4333, + "angle": 0, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 0.7333, + "angle": -1.55, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 1.0666, + "angle": -0.68, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 1.4, + "angle": 0.61, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 1.6666, "angle": -0.67, "curve": "stepped" }, + { + "time": 2.1333, + "angle": -0.67, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 2.3666, + "angle": 0.88, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 2.5666, + "angle": -1.69, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 2.8666, + "angle": 1.18, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 3.0333, + "angle": -1.09, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 3.2333, + "angle": 1.03, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 3.5, + "angle": -0.44, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 4.6666, "angle": -0.18 }, + { + "time": 5.0333, + "angle": -1.05, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 5.3666, + "angle": 9.17, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 5.6666, + "angle": -3.14, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 5.9, + "angle": 2.96, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 6.1, + "angle": -0.29, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 6.2666, "angle": 0.96 }, + { "time": 6.4, "angle": 0 } + ] + }, + "antenna6": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { + "time": 0.4333, + "angle": 0, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 0.7333, + "angle": -1.55, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 1.0666, + "angle": -0.68, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 1.4, + "angle": 0.61, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 1.6666, "angle": -0.67, "curve": "stepped" }, + { + "time": 2.1333, + "angle": -0.67, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 2.3666, + "angle": 0.88, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 2.5666, + "angle": -1.69, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 2.8666, + "angle": 1.18, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 3.0333, + "angle": -1.09, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 3.2333, + "angle": 1.03, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 3.5, + "angle": -0.44, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 4.6666, "angle": -0.18 }, + { + "time": 5.0333, + "angle": -1.05, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 5.3666, + "angle": 9.17, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 5.6666, + "angle": -3.14, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 5.9, + "angle": 2.96, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 6.1, + "angle": -0.29, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 6.2666, "angle": 0.96 }, + { "time": 6.4, "angle": 0 } + ] + }, + "machinegun": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { + "time": 2.8333, + "angle": 0, + "curve": [ 0.183, 0.17, 0.75, 1 ] + }, + { + "time": 3, + "angle": -4.43, + "curve": [ 0.156, 0.16, 0.75, 1 ] + }, + { + "time": 3.1666, + "angle": -2.93, + "curve": [ 0.156, 0.16, 0.75, 1 ] + }, + { + "time": 4.8333, + "angle": 0, + "curve": [ 0.183, 0.17, 0.75, 1 ] + }, + { + "time": 5.1666, + "angle": -6.05, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 5.4, + "angle": 6.15, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 5.6, "angle": -1.26 } + ] + }, + "cannon": { + "rotate": [ + { "time": 0, "angle": 0 } + ] + }, + "cannonTarget": { + "translate": [ + { + "time": 5, + "x": 0, + "y": 0, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 6.3333, "x": -15.38, "y": 99.99 } + ] + } + }, + "ik": { + "cannonTarget": [ + { "time": 0, "mix": 0.809, "curve": "stepped" }, + { "time": 4.7333, "mix": 0.809 }, + { "time": 5.1666, "mix": 0.504 }, + { "time": 5.6666 } + ] + }, + "paths": { + "treads": { + "position": [ + { + "time": 0, + "curve": [ 0.549, 0, 0.907, 0.84 ] + }, + { "time": 3.0333, "position": 0.51 }, + { "time": 4.8666, "position": 0.9794 }, + { + "time": 5.2666, + "position": 1, + "curve": [ 0.226, 0.15, 0.765, 0.96 ] + }, + { + "time": 5.5333, + "position": 1.02, + "curve": [ 0.279, 0.32, 0.694, 0.99 ] + }, + { "time": 5.8333, "position": 1.021 } + ] + } + } + } +} +} \ No newline at end of file diff --git a/spine-libgdx/spine-libgdx-tests/assets/path/tank.png b/spine-libgdx/spine-libgdx-tests/assets/path/tank.png new file mode 100644 index 000000000..b0b1b3642 Binary files /dev/null and b/spine-libgdx/spine-libgdx-tests/assets/path/tank.png differ diff --git a/spine-libgdx/spine-libgdx-tests/assets/path/tank.skel b/spine-libgdx/spine-libgdx-tests/assets/path/tank.skel new file mode 100644 index 000000000..1da9f265c Binary files /dev/null and b/spine-libgdx/spine-libgdx-tests/assets/path/tank.skel differ diff --git a/spine-libgdx/spine-libgdx-tests/assets/path/test.atlas b/spine-libgdx/spine-libgdx-tests/assets/path/test.atlas new file mode 100644 index 000000000..04c7a4696 --- /dev/null +++ b/spine-libgdx/spine-libgdx-tests/assets/path/test.atlas @@ -0,0 +1,13 @@ + +test.png +size: 512,512 +format: RGBA8888 +filter: Linear,Linear +repeat: none +badlogic + rotate: false + xy: 2, 2 + size: 460, 460 + orig: 460, 460 + offset: 0, 0 + index: -1 diff --git a/spine-libgdx/spine-libgdx-tests/assets/path/test.json b/spine-libgdx/spine-libgdx-tests/assets/path/test.json new file mode 100644 index 000000000..066187128 --- /dev/null +++ b/spine-libgdx/spine-libgdx-tests/assets/path/test.json @@ -0,0 +1,48 @@ +{ +"skeleton": { "hash": "XCHjZ6CXxuRTpodKRwdOuXKgOx4", "spine": "3.3.07", "width": 78.98, "height": 78.98, "images": "./images/" }, +"bones": [ + { "name": "root" }, + { "name": "image", "parent": "root", "length": 100, "x": 91.84 }, + { "name": "pathbone", "parent": "root" } +], +"slots": [ + { "name": "badlogic", "bone": "image", "attachment": "badlogic" }, + { "name": "path", "bone": "pathbone", "attachment": "path" } +], +"path": [ + { + "name": "pathConstraint", + "bones": [ "image" ], + "target": "path", + "rotateMode": "chain" + } +], +"skins": { + "default": { + "badlogic": { + "badlogic": { "x": -2.94, "y": 0.53, "scaleX": 0.129, "scaleY": 0.129, "width": 460, "height": 460 } + }, + "path": { + "path": { + "type": "path", + "closed": true, + "lengths": [ 172.76, 358.01, 486.73, 700.2 ], + "vertexCount": 12, + "vertices": [ 2.23, 110.87, 47.15, 79.55, 67.76, 64.62, 172.59, 6.71, 207.52, 47.95, 242.44, 89.19, 231.71, 187.91, 207.52, 225.7, 183.32, 263.49, 122.11, 245.01, 86.65, 236.76, -123.64, 188.65 ] + } + } + } +}, +"animations": { + "test": { + "paths": { + "pathConstraint": { + "position": [ + { "time": 0 }, + { "time": 3.3333, "position": 1 } + ] + } + } + } +} +} \ No newline at end of file diff --git a/spine-libgdx/spine-libgdx-tests/assets/path/test.png b/spine-libgdx/spine-libgdx-tests/assets/path/test.png new file mode 100644 index 000000000..84baff252 Binary files /dev/null and b/spine-libgdx/spine-libgdx-tests/assets/path/test.png differ diff --git a/spine-libgdx/spine-libgdx-tests/src/com/esotericsoftware/spine/PathTest.java b/spine-libgdx/spine-libgdx-tests/src/com/esotericsoftware/spine/PathTest.java new file mode 100644 index 000000000..ebb49a6a1 --- /dev/null +++ b/spine-libgdx/spine-libgdx-tests/src/com/esotericsoftware/spine/PathTest.java @@ -0,0 +1,46 @@ + +package com.esotericsoftware.spine; + +import com.badlogic.gdx.ApplicationAdapter; +import com.badlogic.gdx.Gdx; +import com.badlogic.gdx.backends.lwjgl.LwjglApplication; +import com.badlogic.gdx.graphics.g2d.TextureAtlas; + +public class PathTest extends ApplicationAdapter { + + + @Override + public void create () { + TextureAtlas atlas = new TextureAtlas(Gdx.files.internal("path/tank.atlas")); + SkeletonJson json = new SkeletonJson(atlas); + SkeletonData data = json.readSkeletonData(Gdx.files.internal("path/tank.json")); + Skeleton skeleton = new Skeleton(data); + skeleton.x = 0; + skeleton.y = 0; + AnimationStateData animData = new AnimationStateData(data); + AnimationState animState = new AnimationState(animData); + animState.setAnimation(0, "drive", true); + + float d = 3; + for (int i = 0; i < 1; i++) { + skeleton.update(d); + animState.update(d); + animState.apply(skeleton); + skeleton.updateWorldTransform(); + for (Bone bone: skeleton.getBones()) { + System.out.println(String.format("%s %f %f %f %f %f %f", bone.data.name, bone.a, bone.b, bone.c, bone.d, bone.worldX, bone.worldY)); + } + System.out.println("==========================================="); + for (int ii = 0; ii < skeleton.slots.size; ii++) { + Slot slot = skeleton.drawOrder.get(ii); + System.out.println(slot.data.name); + } + System.out.println("==========================================="); + d += 0.1f; + } + } + + public static void main (String[] args) { + new LwjglApplication(new PathTest()); + } +} diff --git a/spine-sfml/.cproject b/spine-sfml/.cproject deleted file mode 100644 index 2e94d15a6..000000000 --- a/spine-sfml/.cproject +++ /dev/null @@ -1,193 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - make - - moo - true - true - true - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/spine-sfml/.project b/spine-sfml/.project deleted file mode 100644 index c17ffb5df..000000000 --- a/spine-sfml/.project +++ /dev/null @@ -1,28 +0,0 @@ - - - spine-sfml - - - spine-c - - - - org.eclipse.cdt.managedbuilder.core.genmakebuilder - clean,full,incremental, - - - - - org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder - full,incremental, - - - - - - org.eclipse.cdt.core.cnature - org.eclipse.cdt.core.ccnature - org.eclipse.cdt.managedbuilder.core.managedBuildNature - org.eclipse.cdt.managedbuilder.core.ScannerConfigNature - - diff --git a/spine-sfml/.settings/org.eclipse.cdt.codan.core.prefs b/spine-sfml/.settings/org.eclipse.cdt.codan.core.prefs deleted file mode 100644 index c7be96702..000000000 --- a/spine-sfml/.settings/org.eclipse.cdt.codan.core.prefs +++ /dev/null @@ -1,68 +0,0 @@ -eclipse.preferences.version=1 -org.eclipse.cdt.codan.checkers.errnoreturn=Warning -org.eclipse.cdt.codan.checkers.errnoreturn.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},implicit\=>false} -org.eclipse.cdt.codan.checkers.errreturnvalue=Error -org.eclipse.cdt.codan.checkers.errreturnvalue.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}} -org.eclipse.cdt.codan.checkers.noreturn=Error -org.eclipse.cdt.codan.checkers.noreturn.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},implicit\=>false} -org.eclipse.cdt.codan.internal.checkers.AbstractClassCreation=Error -org.eclipse.cdt.codan.internal.checkers.AbstractClassCreation.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}} -org.eclipse.cdt.codan.internal.checkers.AmbiguousProblem=Error -org.eclipse.cdt.codan.internal.checkers.AmbiguousProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}} -org.eclipse.cdt.codan.internal.checkers.AssignmentInConditionProblem=Warning -org.eclipse.cdt.codan.internal.checkers.AssignmentInConditionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}} -org.eclipse.cdt.codan.internal.checkers.AssignmentToItselfProblem=Error -org.eclipse.cdt.codan.internal.checkers.AssignmentToItselfProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}} -org.eclipse.cdt.codan.internal.checkers.CaseBreakProblem=-Warning -org.eclipse.cdt.codan.internal.checkers.CaseBreakProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},no_break_comment\=>"no break",last_case_param\=>true,empty_case_param\=>false} -org.eclipse.cdt.codan.internal.checkers.CatchByReference=Warning -org.eclipse.cdt.codan.internal.checkers.CatchByReference.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},unknown\=>false,exceptions\=>()} -org.eclipse.cdt.codan.internal.checkers.CircularReferenceProblem=Error -org.eclipse.cdt.codan.internal.checkers.CircularReferenceProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}} -org.eclipse.cdt.codan.internal.checkers.ClassMembersInitialization=Warning -org.eclipse.cdt.codan.internal.checkers.ClassMembersInitialization.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},skip\=>true} -org.eclipse.cdt.codan.internal.checkers.FieldResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.FieldResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}} -org.eclipse.cdt.codan.internal.checkers.FunctionResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.FunctionResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}} -org.eclipse.cdt.codan.internal.checkers.InvalidArguments=Error -org.eclipse.cdt.codan.internal.checkers.InvalidArguments.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}} -org.eclipse.cdt.codan.internal.checkers.InvalidTemplateArgumentsProblem=Error -org.eclipse.cdt.codan.internal.checkers.InvalidTemplateArgumentsProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}} -org.eclipse.cdt.codan.internal.checkers.LabelStatementNotFoundProblem=Error -org.eclipse.cdt.codan.internal.checkers.LabelStatementNotFoundProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}} -org.eclipse.cdt.codan.internal.checkers.MemberDeclarationNotFoundProblem=Error -org.eclipse.cdt.codan.internal.checkers.MemberDeclarationNotFoundProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}} -org.eclipse.cdt.codan.internal.checkers.MethodResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.MethodResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}} -org.eclipse.cdt.codan.internal.checkers.NamingConventionFunctionChecker=-Info -org.eclipse.cdt.codan.internal.checkers.NamingConventionFunctionChecker.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},pattern\=>"^[a-z]",macro\=>true,exceptions\=>()} -org.eclipse.cdt.codan.internal.checkers.NonVirtualDestructorProblem=Warning -org.eclipse.cdt.codan.internal.checkers.NonVirtualDestructorProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}} -org.eclipse.cdt.codan.internal.checkers.OverloadProblem=Error -org.eclipse.cdt.codan.internal.checkers.OverloadProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}} -org.eclipse.cdt.codan.internal.checkers.RedeclarationProblem=Error -org.eclipse.cdt.codan.internal.checkers.RedeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}} -org.eclipse.cdt.codan.internal.checkers.RedefinitionProblem=Error -org.eclipse.cdt.codan.internal.checkers.RedefinitionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}} -org.eclipse.cdt.codan.internal.checkers.ReturnStyleProblem=-Warning -org.eclipse.cdt.codan.internal.checkers.ReturnStyleProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}} -org.eclipse.cdt.codan.internal.checkers.ScanfFormatStringSecurityProblem=-Warning -org.eclipse.cdt.codan.internal.checkers.ScanfFormatStringSecurityProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}} -org.eclipse.cdt.codan.internal.checkers.StatementHasNoEffectProblem=Warning -org.eclipse.cdt.codan.internal.checkers.StatementHasNoEffectProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},macro\=>true,exceptions\=>()} -org.eclipse.cdt.codan.internal.checkers.SuggestedParenthesisProblem=Warning -org.eclipse.cdt.codan.internal.checkers.SuggestedParenthesisProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},paramNot\=>false} -org.eclipse.cdt.codan.internal.checkers.SuspiciousSemicolonProblem=Warning -org.eclipse.cdt.codan.internal.checkers.SuspiciousSemicolonProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},else\=>false,afterelse\=>false} -org.eclipse.cdt.codan.internal.checkers.TypeResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.TypeResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}} -org.eclipse.cdt.codan.internal.checkers.UnusedFunctionDeclarationProblem=Warning -org.eclipse.cdt.codan.internal.checkers.UnusedFunctionDeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},macro\=>true} -org.eclipse.cdt.codan.internal.checkers.UnusedStaticFunctionProblem=Warning -org.eclipse.cdt.codan.internal.checkers.UnusedStaticFunctionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},macro\=>true} -org.eclipse.cdt.codan.internal.checkers.UnusedVariableDeclarationProblem=Warning -org.eclipse.cdt.codan.internal.checkers.UnusedVariableDeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},macro\=>true,exceptions\=>("@(\#)","$Id")} -org.eclipse.cdt.codan.internal.checkers.VariableResolutionProblem=Error -org.eclipse.cdt.codan.internal.checkers.VariableResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}} -useParentScope=false diff --git a/spine-sfml/.settings/org.eclipse.cdt.core.prefs b/spine-sfml/.settings/org.eclipse.cdt.core.prefs deleted file mode 100644 index b2d602b0b..000000000 --- a/spine-sfml/.settings/org.eclipse.cdt.core.prefs +++ /dev/null @@ -1,163 +0,0 @@ -eclipse.preferences.version=1 -org.eclipse.cdt.core.formatter.alignment_for_arguments_in_method_invocation=16 -org.eclipse.cdt.core.formatter.alignment_for_assignment=16 -org.eclipse.cdt.core.formatter.alignment_for_base_clause_in_type_declaration=80 -org.eclipse.cdt.core.formatter.alignment_for_binary_expression=16 -org.eclipse.cdt.core.formatter.alignment_for_compact_if=16 -org.eclipse.cdt.core.formatter.alignment_for_conditional_expression=34 -org.eclipse.cdt.core.formatter.alignment_for_conditional_expression_chain=18 -org.eclipse.cdt.core.formatter.alignment_for_constructor_initializer_list=0 -org.eclipse.cdt.core.formatter.alignment_for_declarator_list=16 -org.eclipse.cdt.core.formatter.alignment_for_enumerator_list=48 -org.eclipse.cdt.core.formatter.alignment_for_expression_list=0 -org.eclipse.cdt.core.formatter.alignment_for_expressions_in_array_initializer=16 -org.eclipse.cdt.core.formatter.alignment_for_member_access=0 -org.eclipse.cdt.core.formatter.alignment_for_overloaded_left_shift_chain=16 -org.eclipse.cdt.core.formatter.alignment_for_parameters_in_method_declaration=16 -org.eclipse.cdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16 -org.eclipse.cdt.core.formatter.brace_position_for_array_initializer=end_of_line -org.eclipse.cdt.core.formatter.brace_position_for_block=end_of_line -org.eclipse.cdt.core.formatter.brace_position_for_block_in_case=end_of_line -org.eclipse.cdt.core.formatter.brace_position_for_method_declaration=end_of_line -org.eclipse.cdt.core.formatter.brace_position_for_namespace_declaration=end_of_line -org.eclipse.cdt.core.formatter.brace_position_for_switch=end_of_line -org.eclipse.cdt.core.formatter.brace_position_for_type_declaration=end_of_line -org.eclipse.cdt.core.formatter.comment.min_distance_between_code_and_line_comment=1 -org.eclipse.cdt.core.formatter.comment.never_indent_line_comments_on_first_column=true -org.eclipse.cdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=true -org.eclipse.cdt.core.formatter.compact_else_if=true -org.eclipse.cdt.core.formatter.continuation_indentation=2 -org.eclipse.cdt.core.formatter.continuation_indentation_for_array_initializer=2 -org.eclipse.cdt.core.formatter.format_guardian_clause_on_one_line=false -org.eclipse.cdt.core.formatter.indent_access_specifier_compare_to_type_header=false -org.eclipse.cdt.core.formatter.indent_access_specifier_extra_spaces=0 -org.eclipse.cdt.core.formatter.indent_body_declarations_compare_to_access_specifier=true -org.eclipse.cdt.core.formatter.indent_body_declarations_compare_to_namespace_header=false -org.eclipse.cdt.core.formatter.indent_breaks_compare_to_cases=true -org.eclipse.cdt.core.formatter.indent_declaration_compare_to_template_header=false -org.eclipse.cdt.core.formatter.indent_empty_lines=false -org.eclipse.cdt.core.formatter.indent_statements_compare_to_block=true -org.eclipse.cdt.core.formatter.indent_statements_compare_to_body=true -org.eclipse.cdt.core.formatter.indent_switchstatements_compare_to_cases=true -org.eclipse.cdt.core.formatter.indent_switchstatements_compare_to_switch=false -org.eclipse.cdt.core.formatter.indentation.size=4 -org.eclipse.cdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert -org.eclipse.cdt.core.formatter.insert_new_line_after_template_declaration=do not insert -org.eclipse.cdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert -org.eclipse.cdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert -org.eclipse.cdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert -org.eclipse.cdt.core.formatter.insert_new_line_before_colon_in_constructor_initializer_list=do not insert -org.eclipse.cdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert -org.eclipse.cdt.core.formatter.insert_new_line_before_identifier_in_function_declaration=do not insert -org.eclipse.cdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert -org.eclipse.cdt.core.formatter.insert_new_line_in_empty_block=insert -org.eclipse.cdt.core.formatter.insert_space_after_assignment_operator=insert -org.eclipse.cdt.core.formatter.insert_space_after_binary_operator=insert -org.eclipse.cdt.core.formatter.insert_space_after_closing_angle_bracket_in_template_arguments=insert -org.eclipse.cdt.core.formatter.insert_space_after_closing_angle_bracket_in_template_parameters=insert -org.eclipse.cdt.core.formatter.insert_space_after_closing_brace_in_block=insert -org.eclipse.cdt.core.formatter.insert_space_after_closing_paren_in_cast=insert -org.eclipse.cdt.core.formatter.insert_space_after_colon_in_base_clause=insert -org.eclipse.cdt.core.formatter.insert_space_after_colon_in_case=insert -org.eclipse.cdt.core.formatter.insert_space_after_colon_in_conditional=insert -org.eclipse.cdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert -org.eclipse.cdt.core.formatter.insert_space_after_comma_in_array_initializer=insert -org.eclipse.cdt.core.formatter.insert_space_after_comma_in_base_types=insert -org.eclipse.cdt.core.formatter.insert_space_after_comma_in_declarator_list=insert -org.eclipse.cdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert -org.eclipse.cdt.core.formatter.insert_space_after_comma_in_expression_list=insert -org.eclipse.cdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert -org.eclipse.cdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert -org.eclipse.cdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert -org.eclipse.cdt.core.formatter.insert_space_after_comma_in_template_arguments=insert -org.eclipse.cdt.core.formatter.insert_space_after_comma_in_template_parameters=insert -org.eclipse.cdt.core.formatter.insert_space_after_opening_angle_bracket_in_template_arguments=do not insert -org.eclipse.cdt.core.formatter.insert_space_after_opening_angle_bracket_in_template_parameters=do not insert -org.eclipse.cdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert -org.eclipse.cdt.core.formatter.insert_space_after_opening_bracket=do not insert -org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert -org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert -org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_exception_specification=do not insert -org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert -org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert -org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert -org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert -org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert -org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert -org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert -org.eclipse.cdt.core.formatter.insert_space_after_postfix_operator=do not insert -org.eclipse.cdt.core.formatter.insert_space_after_prefix_operator=do not insert -org.eclipse.cdt.core.formatter.insert_space_after_question_in_conditional=insert -org.eclipse.cdt.core.formatter.insert_space_after_semicolon_in_for=insert -org.eclipse.cdt.core.formatter.insert_space_after_unary_operator=do not insert -org.eclipse.cdt.core.formatter.insert_space_before_assignment_operator=insert -org.eclipse.cdt.core.formatter.insert_space_before_binary_operator=insert -org.eclipse.cdt.core.formatter.insert_space_before_closing_angle_bracket_in_template_arguments=do not insert -org.eclipse.cdt.core.formatter.insert_space_before_closing_angle_bracket_in_template_parameters=do not insert -org.eclipse.cdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert -org.eclipse.cdt.core.formatter.insert_space_before_closing_bracket=do not insert -org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert -org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert -org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_exception_specification=do not insert -org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert -org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert -org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert -org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert -org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert -org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert -org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert -org.eclipse.cdt.core.formatter.insert_space_before_colon_in_base_clause=do not insert -org.eclipse.cdt.core.formatter.insert_space_before_colon_in_case=do not insert -org.eclipse.cdt.core.formatter.insert_space_before_colon_in_conditional=insert -org.eclipse.cdt.core.formatter.insert_space_before_colon_in_default=do not insert -org.eclipse.cdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert -org.eclipse.cdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert -org.eclipse.cdt.core.formatter.insert_space_before_comma_in_base_types=do not insert -org.eclipse.cdt.core.formatter.insert_space_before_comma_in_declarator_list=do not insert -org.eclipse.cdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert -org.eclipse.cdt.core.formatter.insert_space_before_comma_in_expression_list=do not insert -org.eclipse.cdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert -org.eclipse.cdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert -org.eclipse.cdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert -org.eclipse.cdt.core.formatter.insert_space_before_comma_in_template_arguments=do not insert -org.eclipse.cdt.core.formatter.insert_space_before_comma_in_template_parameters=do not insert -org.eclipse.cdt.core.formatter.insert_space_before_opening_angle_bracket_in_template_arguments=do not insert -org.eclipse.cdt.core.formatter.insert_space_before_opening_angle_bracket_in_template_parameters=do not insert -org.eclipse.cdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert -org.eclipse.cdt.core.formatter.insert_space_before_opening_brace_in_block=insert -org.eclipse.cdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert -org.eclipse.cdt.core.formatter.insert_space_before_opening_brace_in_namespace_declaration=insert -org.eclipse.cdt.core.formatter.insert_space_before_opening_brace_in_switch=insert -org.eclipse.cdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert -org.eclipse.cdt.core.formatter.insert_space_before_opening_bracket=do not insert -org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_catch=insert -org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_exception_specification=insert -org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_for=insert -org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_if=insert -org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert -org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert -org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert -org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_switch=insert -org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_while=insert -org.eclipse.cdt.core.formatter.insert_space_before_postfix_operator=do not insert -org.eclipse.cdt.core.formatter.insert_space_before_prefix_operator=do not insert -org.eclipse.cdt.core.formatter.insert_space_before_question_in_conditional=insert -org.eclipse.cdt.core.formatter.insert_space_before_semicolon=do not insert -org.eclipse.cdt.core.formatter.insert_space_before_semicolon_in_for=do not insert -org.eclipse.cdt.core.formatter.insert_space_before_unary_operator=do not insert -org.eclipse.cdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert -org.eclipse.cdt.core.formatter.insert_space_between_empty_brackets=do not insert -org.eclipse.cdt.core.formatter.insert_space_between_empty_parens_in_exception_specification=do not insert -org.eclipse.cdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert -org.eclipse.cdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert -org.eclipse.cdt.core.formatter.join_wrapped_lines=true -org.eclipse.cdt.core.formatter.keep_else_statement_on_same_line=false -org.eclipse.cdt.core.formatter.keep_empty_array_initializer_on_one_line=false -org.eclipse.cdt.core.formatter.keep_imple_if_on_one_line=false -org.eclipse.cdt.core.formatter.keep_then_statement_on_same_line=false -org.eclipse.cdt.core.formatter.lineSplit=130 -org.eclipse.cdt.core.formatter.number_of_empty_lines_to_preserve=1 -org.eclipse.cdt.core.formatter.put_empty_statement_on_new_line=true -org.eclipse.cdt.core.formatter.tabulation.char=tab -org.eclipse.cdt.core.formatter.tabulation.size=3 -org.eclipse.cdt.core.formatter.use_tabs_only_for_leading_indentations=false diff --git a/spine-sfml/.settings/org.eclipse.cdt.managedbuilder.core.prefs b/spine-sfml/.settings/org.eclipse.cdt.managedbuilder.core.prefs deleted file mode 100644 index bfe651904..000000000 --- a/spine-sfml/.settings/org.eclipse.cdt.managedbuilder.core.prefs +++ /dev/null @@ -1,13 +0,0 @@ -eclipse.preferences.version=1 -environment/buildEnvironmentInclude/cdt.managedbuild.config.gnu.mingw.exe.debug.804921154/CPATH/delimiter=; -environment/buildEnvironmentInclude/cdt.managedbuild.config.gnu.mingw.exe.debug.804921154/CPATH/operation=remove -environment/buildEnvironmentInclude/cdt.managedbuild.config.gnu.mingw.exe.debug.804921154/CPLUS_INCLUDE_PATH/delimiter=; -environment/buildEnvironmentInclude/cdt.managedbuild.config.gnu.mingw.exe.debug.804921154/CPLUS_INCLUDE_PATH/operation=remove -environment/buildEnvironmentInclude/cdt.managedbuild.config.gnu.mingw.exe.debug.804921154/C_INCLUDE_PATH/delimiter=; -environment/buildEnvironmentInclude/cdt.managedbuild.config.gnu.mingw.exe.debug.804921154/C_INCLUDE_PATH/operation=remove -environment/buildEnvironmentInclude/cdt.managedbuild.config.gnu.mingw.exe.debug.804921154/append=true -environment/buildEnvironmentInclude/cdt.managedbuild.config.gnu.mingw.exe.debug.804921154/appendContributed=true -environment/buildEnvironmentLibrary/cdt.managedbuild.config.gnu.mingw.exe.debug.804921154/LIBRARY_PATH/delimiter=; -environment/buildEnvironmentLibrary/cdt.managedbuild.config.gnu.mingw.exe.debug.804921154/LIBRARY_PATH/operation=remove -environment/buildEnvironmentLibrary/cdt.managedbuild.config.gnu.mingw.exe.debug.804921154/append=true -environment/buildEnvironmentLibrary/cdt.managedbuild.config.gnu.mingw.exe.debug.804921154/appendContributed=true diff --git a/spine-sfml/.settings/org.eclipse.cdt.ui.prefs b/spine-sfml/.settings/org.eclipse.cdt.ui.prefs deleted file mode 100644 index 0a72262a7..000000000 --- a/spine-sfml/.settings/org.eclipse.cdt.ui.prefs +++ /dev/null @@ -1,3 +0,0 @@ -eclipse.preferences.version=1 -formatter_profile=_Nate -formatter_settings_version=1 diff --git a/spine-sfml/.settings/org.eclipse.ltk.core.refactoring.prefs b/spine-sfml/.settings/org.eclipse.ltk.core.refactoring.prefs deleted file mode 100644 index b196c64a3..000000000 --- a/spine-sfml/.settings/org.eclipse.ltk.core.refactoring.prefs +++ /dev/null @@ -1,2 +0,0 @@ -eclipse.preferences.version=1 -org.eclipse.ltk.core.refactoring.enable.project.refactoring.history=false diff --git a/spine-sfml/README.md b/spine-sfml/README.md index 856804404..3d6a4ee44 100644 --- a/spine-sfml/README.md +++ b/spine-sfml/README.md @@ -10,7 +10,7 @@ The Spine Runtimes are developed with the intent to be used with data exported f ## Spine version -spine-sfml works with data exported from Spine version 3.2.01. +spine-sfml works with data exported from Spine version 3.3.07. spine-sfml supports all Spine features. diff --git a/spine-sfml/data/goblins-mesh.atlas b/spine-sfml/data/goblins-mesh.atlas index d0ddb80c6..2652027f9 100644 --- a/spine-sfml/data/goblins-mesh.atlas +++ b/spine-sfml/data/goblins-mesh.atlas @@ -1,291 +1,292 @@ goblins-mesh.png +size: 512,512 format: RGBA8888 filter: Linear,Linear repeat: none dagger - rotate: true - xy: 372, 100 + rotate: false + xy: 26, 147 size: 26, 108 orig: 26, 108 offset: 0, 0 index: -1 goblin/eyes-closed rotate: false - xy: 2, 7 + xy: 329, 334 size: 34, 12 orig: 34, 12 offset: 0, 0 index: -1 goblin/head rotate: false - xy: 107, 36 + xy: 26, 355 size: 103, 66 orig: 103, 66 offset: 0, 0 index: -1 goblin/left-arm rotate: false - xy: 901, 56 + xy: 54, 142 size: 37, 35 orig: 37, 35 offset: 0, 0 index: -1 goblin/left-foot - rotate: false - xy: 929, 95 + rotate: true + xy: 2, 69 size: 65, 31 orig: 65, 31 offset: 0, 0 index: -1 goblin/left-hand rotate: false - xy: 452, 2 + xy: 266, 332 size: 36, 41 orig: 36, 41 offset: 0, 0 index: -1 goblin/left-lower-leg rotate: true - xy: 713, 93 + xy: 273, 433 size: 33, 70 orig: 33, 70 offset: 0, 0 index: -1 goblin/left-shoulder rotate: false - xy: 610, 44 + xy: 305, 288 size: 29, 44 orig: 29, 44 offset: 0, 0 index: -1 goblin/left-upper-leg - rotate: true - xy: 638, 93 + rotate: false + xy: 96, 280 size: 33, 73 orig: 33, 73 offset: 0, 0 index: -1 goblin/neck rotate: false - xy: 490, 2 + xy: 267, 289 size: 36, 41 orig: 36, 41 offset: 0, 0 index: -1 goblin/pelvis rotate: false - xy: 482, 45 + xy: 131, 363 size: 62, 43 orig: 62, 43 offset: 0, 0 index: -1 goblin/right-arm - rotate: true - xy: 690, 2 + rotate: false + xy: 304, 334 size: 23, 50 orig: 23, 50 offset: 0, 0 index: -1 goblin/right-foot rotate: false - xy: 771, 58 + xy: 201, 397 size: 63, 33 orig: 63, 33 offset: 0, 0 index: -1 goblin/right-hand rotate: false - xy: 940, 56 + xy: 336, 295 size: 36, 37 orig: 36, 37 offset: 0, 0 index: -1 goblin/right-lower-leg rotate: true - xy: 482, 90 + xy: 273, 468 size: 36, 76 orig: 36, 76 offset: 0, 0 index: -1 goblin/right-shoulder - rotate: true - xy: 602, 3 + rotate: false + xy: 196, 285 size: 39, 45 orig: 39, 45 offset: 0, 0 index: -1 goblin/right-upper-leg rotate: true - xy: 641, 57 + xy: 131, 282 size: 34, 63 orig: 34, 63 offset: 0, 0 index: -1 goblin/torso - rotate: true - xy: 212, 34 + rotate: false + xy: 131, 408 size: 68, 96 orig: 68, 96 offset: 0, 0 index: -1 goblin/undie-straps - rotate: false - xy: 380, 5 + rotate: true + xy: 266, 375 size: 55, 19 orig: 55, 19 offset: 0, 0 index: -1 goblin/undies rotate: false - xy: 174, 5 + xy: 429, 440 size: 36, 29 orig: 36, 29 offset: 0, 0 index: -1 goblingirl/eyes-closed rotate: false - xy: 269, 11 + xy: 96, 257 size: 37, 21 orig: 37, 21 offset: 0, 0 index: -1 goblingirl/head rotate: false - xy: 2, 21 + xy: 26, 423 size: 103, 81 orig: 103, 81 offset: 0, 0 index: -1 goblingirl/left-arm - rotate: true - xy: 978, 56 + rotate: false + xy: 390, 434 size: 37, 35 orig: 37, 35 offset: 0, 0 index: -1 goblingirl/left-foot - rotate: false - xy: 107, 3 + rotate: true + xy: 2, 2 size: 65, 31 orig: 65, 31 offset: 0, 0 index: -1 goblingirl/left-hand rotate: false - xy: 565, 2 + xy: 329, 348 size: 35, 40 orig: 35, 40 offset: 0, 0 index: -1 goblingirl/left-lower-leg rotate: true - xy: 785, 93 + xy: 351, 471 size: 33, 70 orig: 33, 70 offset: 0, 0 index: -1 goblingirl/left-shoulder - rotate: true - xy: 690, 27 + rotate: false + xy: 237, 284 size: 28, 46 orig: 28, 46 offset: 0, 0 index: -1 goblingirl/left-upper-leg rotate: true - xy: 857, 93 + xy: 423, 471 size: 33, 70 orig: 33, 70 offset: 0, 0 index: -1 goblingirl/neck rotate: false - xy: 528, 2 + xy: 328, 390 size: 35, 41 orig: 35, 41 offset: 0, 0 index: -1 goblingirl/pelvis rotate: false - xy: 546, 45 + xy: 131, 318 size: 62, 43 orig: 62, 43 offset: 0, 0 index: -1 goblingirl/right-arm - rotate: false - xy: 452, 48 + rotate: true + xy: 135, 252 size: 28, 50 orig: 28, 50 offset: 0, 0 index: -1 goblingirl/right-foot - rotate: false - xy: 836, 58 + rotate: true + xy: 231, 332 size: 63, 33 orig: 63, 33 offset: 0, 0 index: -1 goblingirl/right-hand rotate: true - xy: 771, 20 + xy: 351, 433 size: 36, 37 orig: 36, 37 offset: 0, 0 index: -1 goblingirl/right-lower-leg - rotate: true - xy: 560, 90 + rotate: false + xy: 54, 179 size: 36, 76 orig: 36, 76 offset: 0, 0 index: -1 goblingirl/right-shoulder rotate: false - xy: 649, 10 + xy: 287, 386 size: 39, 45 orig: 39, 45 offset: 0, 0 index: -1 goblingirl/right-upper-leg - rotate: true - xy: 706, 57 + rotate: false + xy: 195, 332 size: 34, 63 orig: 34, 63 offset: 0, 0 index: -1 goblingirl/torso rotate: false - xy: 310, 2 + xy: 26, 257 size: 68, 96 orig: 68, 96 offset: 0, 0 index: -1 goblingirl/undie-straps - rotate: false - xy: 212, 13 + rotate: true + xy: 92, 200 size: 55, 19 orig: 55, 19 offset: 0, 0 index: -1 goblingirl/undies - rotate: false - xy: 810, 27 + rotate: true + xy: 365, 395 size: 36, 29 orig: 36, 29 offset: 0, 0 index: -1 shield rotate: false - xy: 380, 26 + xy: 201, 432 size: 70, 72 orig: 70, 72 offset: 0, 0 index: -1 spear - rotate: true - xy: 2, 104 + rotate: false + xy: 2, 136 size: 22, 368 orig: 22, 368 offset: 0, 0 diff --git a/spine-sfml/data/goblins-mesh.json b/spine-sfml/data/goblins-mesh.json index 67a624a36..8443eee97 100644 --- a/spine-sfml/data/goblins-mesh.json +++ b/spine-sfml/data/goblins-mesh.json @@ -1,26 +1,27 @@ { +"skeleton": { "hash": "P7CQ4ImK+tcAICATgSttlZ5HOSM", "spine": "3.3.07", "width": 266.93, "height": 349.6, "images": "./images/" }, "bones": [ { "name": "root" }, { "name": "hip", "parent": "root", "x": 0.64, "y": 114.41 }, - { "name": "left upper leg", "parent": "hip", "length": 50.39, "x": 14.45, "y": 2.81, "rotation": -89.09 }, + { "name": "torso", "parent": "hip", "length": 85.82, "rotation": 93.92, "x": -6.42, "y": 1.97 }, + { "name": "neck", "parent": "torso", "length": 18.38, "rotation": -1.51, "x": 81.67, "y": -6.34 }, + { "name": "head", "parent": "neck", "length": 68.28, "rotation": -13.92, "x": 20.93, "y": 11.59 }, + { "name": "left shoulder", "parent": "torso", "length": 35.43, "rotation": -156.96, "x": 74.04, "y": -20.38 }, + { "name": "left arm", "parent": "left shoulder", "length": 35.62, "rotation": 28.16, "x": 37.85, "y": -2.34 }, + { "name": "left upper leg", "parent": "hip", "length": 50.39, "rotation": -89.09, "x": 14.45, "y": 2.81 }, + { "name": "left lower leg", "parent": "left upper leg", "length": 49.89, "rotation": -16.65, "x": 56.34, "y": 0.98 }, + { "name": "left foot", "parent": "left lower leg", "length": 46.5, "rotation": 102.43, "x": 58.94, "y": -7.61 }, + { "name": "left hand", "parent": "left arm", "length": 11.52, "rotation": 2.7, "x": 35.62, "y": 0.07 }, { "name": "pelvis", "parent": "hip", "x": 1.41, "y": -6.57 }, - { "name": "right upper leg", "parent": "hip", "length": 42.45, "x": -20.07, "y": -6.83, "rotation": -97.49 }, - { "name": "torso", "parent": "hip", "length": 85.82, "x": -6.42, "y": 1.97, "rotation": 93.92 }, - { "name": "left lower leg", "parent": "left upper leg", "length": 49.89, "x": 56.34, "y": 0.98, "rotation": -16.65 }, - { "name": "left shoulder", "parent": "torso", "length": 35.43, "x": 74.04, "y": -20.38, "rotation": -156.96 }, - { "name": "neck", "parent": "torso", "length": 18.38, "x": 81.67, "y": -6.34, "rotation": -1.51 }, - { "name": "right lower leg", "parent": "right upper leg", "length": 58.52, "x": 42.99, "y": -0.61, "rotation": -14.34 }, - { "name": "right shoulder", "parent": "torso", "length": 37.24, "x": 76.02, "y": 18.14, "rotation": 133.88 }, - { "name": "head", "parent": "neck", "length": 68.28, "x": 20.93, "y": 11.59, "rotation": -13.92 }, - { "name": "left arm", "parent": "left shoulder", "length": 35.62, "x": 37.85, "y": -2.34, "rotation": 28.16 }, - { "name": "left foot", "parent": "left lower leg", "length": 46.5, "x": 58.94, "y": -7.61, "rotation": 102.43 }, - { "name": "right arm", "parent": "right shoulder", "length": 36.74, "x": 37.6, "y": 0.31, "rotation": 36.32 }, - { "name": "right foot", "parent": "right lower leg", "length": 45.45, "x": 64.88, "y": 0.04, "rotation": 110.3 }, - { "name": "left hand", "parent": "left arm", "length": 11.52, "x": 35.62, "y": 0.07, "rotation": 2.7 }, - { "name": "right hand", "parent": "right arm", "length": 15.32, "x": 36.9, "y": 0.34, "rotation": 2.35 }, - { "name": "spear1", "parent": "left hand", "length": 65.06, "x": 0.48, "y": 17.03, "rotation": 102.43 }, - { "name": "spear2", "parent": "spear1", "length": 61.41, "x": 65.05, "y": 0.04, "rotation": 0.9 }, - { "name": "spear3", "parent": "spear2", "length": 76.79, "x": 61.88, "y": 0.57, "rotation": -0.9 } + { "name": "right shoulder", "parent": "torso", "length": 37.24, "rotation": 133.88, "x": 76.02, "y": 18.14 }, + { "name": "right arm", "parent": "right shoulder", "length": 36.74, "rotation": 36.32, "x": 37.6, "y": 0.31 }, + { "name": "right upper leg", "parent": "hip", "length": 42.45, "rotation": -97.49, "x": -20.07, "y": -6.83 }, + { "name": "right lower leg", "parent": "right upper leg", "length": 58.52, "rotation": -14.34, "x": 42.99, "y": -0.61 }, + { "name": "right foot", "parent": "right lower leg", "length": 45.45, "rotation": 110.3, "x": 64.88, "y": 0.04 }, + { "name": "right hand", "parent": "right arm", "length": 15.32, "rotation": 2.35, "x": 36.9, "y": 0.34 }, + { "name": "spear1", "parent": "left hand", "length": 65.06, "rotation": 102.43, "x": 0.48, "y": 17.03 }, + { "name": "spear2", "parent": "spear1", "length": 61.41, "rotation": 0.9, "x": 65.05, "y": 0.04 }, + { "name": "spear3", "parent": "spear2", "length": 76.79, "rotation": -0.9, "x": 61.88, "y": 0.57 } ], "slots": [ { "name": "left shoulder", "bone": "left shoulder", "attachment": "left shoulder" }, @@ -52,12 +53,12 @@ "left hand item": { "dagger": { "x": 7.88, "y": -23.45, "rotation": 10.47, "width": 26, "height": 108 }, "spear": { - "type": "skinnedmesh", + "type": "mesh", "uvs": [ 1, 0.11236, 0.77096, 0.13278, 0.76608, 0.21781, 0.75642, 0.386, 0.74723, 0.54607, 0.72117, 1, 0.28838, 1, 0.24208, 0.54327, 0.22589, 0.38361, 0.2089, 0.21605, 0.20043, 0.13242, 0, 0.11519, 0.4527, 0, 0.58399, 0 ], "triangles": [ 4, 7, 3, 6, 7, 4, 5, 6, 4, 10, 11, 12, 1, 13, 0, 12, 13, 1, 10, 12, 1, 9, 10, 1, 2, 9, 1, 8, 9, 2, 3, 8, 2, 7, 8, 3 ], - "vertices": [ 1, 20, 38.54, -10.88, 1, 1, 20, 30.97, -5.93, 1, 2, 19, 61.48, -5.58, 0.51, 20, -0.31, -6.16, 0.48, 2, 18, 64.73, -5.03, 0.5, 19, -0.4, -5.06, 0.49, 1, 16, 4.56, 23.91, 1, 1, 16, 41.7, -138.95, 1, 1, 16, 32.42, -141.1, 1, 1, 16, -6.49, 22.4, 1, 2, 18, 65.48, 6.64, 0.5, 19, 0.53, 6.59, 0.49, 2, 19, 62.18, 6.66, 0.51, 20, 0.2, 6.09, 0.48, 1, 20, 30.96, 6.61, 1, 1, 20, 37.26, 11.09, 1, 1, 20, 79.75, 1.59, 1, 1, 20, 79.78, -1.29, 1 ], - "edges": [ 24, 22, 22, 20, 10, 12, 2, 0, 24, 26, 0, 26, 8, 10, 12, 14, 6, 8, 14, 16, 2, 4, 4, 6, 16, 18, 18, 20, 20, 2 ], + "vertices": [ 1, 20, 38.54, -10.88, 1, 1, 20, 30.97, -5.93, 1, 2, 19, 61.48, -5.58, 0.5116, 20, -0.31, -6.16, 0.48839, 2, 18, 64.73, -5.03, 0.50272, 19, -0.4, -5.06, 0.49728, 1, 10, 4.56, 23.91, 1, 1, 10, 41.7, -138.95, 1, 1, 10, 32.41999, -141.1, 1, 1, 10, -6.49, 22.4, 1, 2, 18, 65.48, 6.64, 0.50272, 19, 0.52999, 6.59, 0.49728, 2, 19, 62.18, 6.66, 0.5116, 20, 0.2, 6.09, 0.48839, 1, 20, 30.96, 6.61, 1, 1, 20, 37.25999, 11.09, 1, 1, 20, 79.75, 1.59, 1, 1, 20, 79.78, -1.29, 1 ], "hull": 14, + "edges": [ 24, 22, 22, 20, 10, 12, 2, 0, 24, 26, 0, 26, 8, 10, 12, 14, 6, 8, 14, 16, 2, 4, 4, 6, 16, 18, 18, 20, 20, 2 ], "width": 22, "height": 368 } @@ -66,10 +67,10 @@ "dagger": { "type": "mesh", "uvs": [ 0.78091, 0.38453, 1, 0.38405, 1, 0.44881, 0.73953, 0.4687, 0.74641, 0.81344, 0.34022, 1, 0.15434, 1, 0.11303, 0.78858, 0.23007, 0.47367, 0, 0.45047, 0, 0.38621, 0.22367, 0.38573, 0.24384, 0, 1, 0 ], - "triangles": [ 5, 7, 8, 4, 8, 3, 4, 5, 8, 5, 6, 7, 9, 11, 8, 8, 11, 3, 3, 0, 2, 3, 11, 0, 9, 10, 11, 0, 1, 2, 11, 12, 0, 0, 12, 13 ], + "triangles": [ 0, 12, 13, 11, 12, 0, 0, 1, 2, 9, 10, 11, 3, 11, 0, 3, 0, 2, 8, 11, 3, 9, 11, 8, 5, 6, 7, 4, 5, 8, 4, 8, 3, 5, 7, 8 ], "vertices": [ 15.49, -12.82, 21.13, -13.57, 20.16, -20.49, 13.15, -21.67, 8.13, -58.56, -5.13, -77.04, -9.92, -76.36, -7.79, -53.6, -0.03, -20.36, -5.6, -17.04, -4.63, -10.17, 1.12, -10.93, 7.46, 30.24, 26.93, 27.49 ], - "edges": [ 22, 20, 24, 26, 22, 24, 2, 0, 0, 22, 0, 26, 12, 14, 14, 16, 18, 20, 16, 18, 2, 4, 4, 6, 6, 8, 10, 12, 8, 10 ], "hull": 14, + "edges": [ 22, 20, 24, 26, 22, 24, 2, 0, 0, 22, 0, 26, 12, 14, 14, 16, 18, 20, 16, 18, 2, 4, 4, 6, 6, 8, 10, 12, 8, 10 ], "width": 26, "height": 108 } @@ -88,9 +89,9 @@ "type": "mesh", "uvs": [ 0, 0.60494, 0.14172, 0.5145, 0.24218, 0.55229, 0.32667, 0.67806, 0.37969, 0.79352, 0.53505, 0.93014, 0.86056, 1, 0.94071, 0.94169, 0.92098, 0.69923, 0.9888, 0.65497, 0.99003, 0.51643, 0.89632, 0.43561, 0.94487, 0.41916, 1, 0.39713, 1, 0.2836, 0.94017, 0.27027, 0.87906, 0.25666, 0.80754, 0.16044, 0.66698, 0.01997, 0.4734, 0.01805, 0.29215, 0.19893, 0.25392, 0.31823, 0.09117, 0.324, 0, 0.44331, 0.43271, 0.69153, 0.466, 0.47794, 0.35996, 0.31246, 0.73473, 0.68593, 0.72215, 0.57425, 0.88179, 0.5583, 0.80267, 0.51015 ], "triangles": [ 5, 27, 6, 7, 27, 8, 7, 6, 27, 4, 24, 5, 5, 24, 27, 4, 3, 24, 27, 29, 8, 8, 29, 9, 24, 28, 27, 24, 25, 28, 24, 3, 25, 29, 28, 30, 29, 27, 28, 25, 2, 26, 25, 3, 2, 9, 29, 10, 0, 23, 1, 28, 25, 30, 29, 11, 10, 29, 30, 11, 2, 21, 26, 2, 1, 21, 23, 22, 1, 1, 22, 21, 30, 16, 11, 30, 17, 16, 30, 25, 17, 17, 26, 18, 18, 26, 19, 26, 17, 25, 11, 15, 12, 11, 16, 15, 12, 15, 13, 15, 14, 13, 21, 20, 26, 26, 20, 19 ], - "vertices": [ 14.56, 50.42, 23.12, 35.47, 17.46, 26.36, 11.57, 16.86, 3.74, 11.71, -5.89, -3.91, -11.83, -37.23, -8.31, -45.63, 7.75, -44.24, 10.39, -51.33, 19.52, -51.82, 25.21, -43.15, 26.12, -47.43, 27.35, -53.16, 34.84, -53.46, 35.96, -47.33, 37.11, -41.08, 43.75, -33.97, 53.58, -19.87, 54.5, 0.03, 43.31, 19.16, 35.6, 23.41, 35.89, 40.17, 28.39, 49.87, 10.25, 5.99, 24.2, 2, 35.55, 12.48, 9.39, -25.1, 16.8, -24.31, 17.2, -40.65, 20.68, -33.02 ], - "edges": [ 0, 2, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 18, 20, 20, 22, 26, 28, 32, 34, 34, 36, 36, 38, 38, 40, 40, 42, 42, 44, 44, 46, 0, 46, 6, 48, 48, 50, 50, 52, 52, 42, 2, 4, 4, 6, 4, 52, 2, 44, 22, 32, 22, 24, 24, 26, 28, 30, 30, 32, 24, 30, 16, 54, 54, 56, 20, 58, 58, 54, 16, 58, 22, 60, 60, 56, 58, 60 ], + "vertices": [ 14.56, 50.42, 23.12, 35.47, 17.45999, 26.36, 11.57, 16.86, 3.74, 11.71, -5.89, -3.91, -11.83, -37.23, -8.31, -45.63, 7.75, -44.24, 10.39, -51.33, 19.52, -51.82, 25.21, -43.15, 26.12, -47.43, 27.35, -53.16, 34.84, -53.46, 35.96, -47.33, 37.11, -41.08, 43.75, -33.97, 53.58, -19.87, 54.5, 0.03, 43.31, 19.16, 35.59999, 23.41, 35.89, 40.16999, 28.39, 49.87, 10.25, 5.99, 24.2, 2, 35.55, 12.48, 9.39, -25.1, 16.79999, -24.31, 17.2, -40.65, 20.68, -33.02 ], "hull": 24, + "edges": [ 0, 2, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 18, 20, 20, 22, 26, 28, 32, 34, 34, 36, 36, 38, 38, 40, 40, 42, 42, 44, 44, 46, 0, 46, 6, 48, 48, 50, 50, 52, 52, 42, 2, 4, 4, 6, 4, 52, 2, 44, 22, 32, 22, 24, 24, 26, 28, 30, 30, 32, 24, 30, 16, 54, 54, 56, 20, 58, 58, 54, 16, 58, 22, 60, 60, 56, 58, 60 ], "width": 103, "height": 66 } @@ -101,9 +102,9 @@ "type": "mesh", "uvs": [ 0.68992, 0.29284, 1, 0.46364, 1, 0.74643, 0.84089, 1, 0.66344, 1, 0.33765, 0.64284, 0, 0.44124, 0, 0, 0.34295, 0 ], "triangles": [ 3, 4, 2, 4, 5, 2, 5, 0, 2, 0, 1, 2, 0, 5, 8, 5, 6, 8, 6, 7, 8 ], - "vertices": [ 18.6, 8.81, 32.19, 10.31, 38.02, 1.62, 38.08, -9.63, 32.31, -13.49, 14.37, -9.62, -0.75, -10.78, -9.84, 2.77, 1.29, 10.25 ], - "edges": [ 14, 16, 16, 0, 0, 2, 2, 4, 6, 4, 6, 8, 8, 10, 12, 14, 10, 12 ], + "vertices": [ 18.6, 8.81, 32.18999, 10.31, 38.02, 1.62, 38.08, -9.63, 32.31, -13.49, 14.37, -9.62, -0.75, -10.78, -9.84, 2.77, 1.29, 10.25 ], "hull": 9, + "edges": [ 14, 16, 16, 0, 0, 2, 2, 4, 6, 4, 6, 8, 8, 10, 12, 14, 10, 12 ], "width": 37, "height": 35 } @@ -113,10 +114,10 @@ "name": "goblin/left-foot", "type": "mesh", "uvs": [ 0.15733, 0.31873, 0.08195, 0.78502, 0.15884, 0.99366, 0.41633, 0.96804, 0.68822, 0.97636, 1, 0.96388, 0.99385, 0.73501, 0.85294, 0.51862, 0.61479, 0.31056, 0.46991, 0, 0.48032, 0.75604, 0.75994, 0.77706 ], - "triangles": [ 2, 1, 3, 3, 10, 4, 4, 11, 5, 4, 10, 11, 3, 1, 10, 11, 6, 5, 1, 0, 10, 11, 7, 6, 11, 10, 7, 10, 8, 7, 10, 0, 8, 0, 9, 8 ], + "triangles": [ 0, 9, 8, 10, 0, 8, 10, 8, 7, 11, 10, 7, 11, 7, 6, 1, 0, 10, 11, 6, 5, 3, 1, 10, 4, 10, 11, 4, 11, 5, 3, 10, 4, 2, 1, 3 ], "vertices": [ 2.28, 13.07, -1.76, -1.64, 3.59, -7.8, 20.25, -6.04, 37.91, -5.27, 58.12, -3.71, 57.31, 3.34, 47.78, 9.51, 31.95, 15.05, 21.99, 24.11, 24.03, 0.75, 42.21, 1.16 ], - "edges": [ 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 0, 18, 6, 20, 20, 16, 2, 20, 8, 22, 22, 14, 20, 22, 22, 10 ], "hull": 10, + "edges": [ 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 0, 18, 6, 20, 20, 16, 2, 20, 8, 22, 22, 14, 20, 22, 22, 10 ], "width": 65, "height": 31 } @@ -126,10 +127,10 @@ "name": "goblin/left-hand", "type": "mesh", "uvs": [ 0.518, 0.12578, 1, 0.16285, 0.99788, 0.50578, 0.69745, 1, 0.37445, 1, 0, 0.80051, 0, 0.42792, 0.17601, 0, 0.43567, 0 ], - "triangles": [ 2, 3, 0, 4, 5, 0, 3, 4, 0, 0, 7, 8, 6, 7, 0, 0, 5, 6, 2, 0, 1 ], - "vertices": [ -3.11, 15.42, 10.83, 22.27, 15.5, 14.55, 18.35, -8.96, 9.48, -14.32, -4.58, -14.3, -11.63, -2.63, -14.89, 13.68, -7.75, 17.99 ], - "edges": [ 16, 0, 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 14, 16, 12, 14 ], + "triangles": [ 2, 0, 1, 0, 5, 6, 6, 7, 0, 0, 7, 8, 3, 4, 0, 4, 5, 0, 2, 3, 0 ], + "vertices": [ -3.11, 15.42, 10.83, 22.27, 15.5, 14.55, 18.35, -8.96, 9.47999, -14.32, -4.58, -14.3, -11.63, -2.63, -14.89, 13.68, -7.75, 17.99 ], "hull": 9, + "edges": [ 16, 0, 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 14, 16, 12, 14 ], "width": 36, "height": 41 } @@ -139,10 +140,10 @@ "name": "goblin/left-lower-leg", "type": "mesh", "uvs": [ 0.95508, 0.20749, 0.81927, 0.65213, 0.94754, 0.77308, 0.67842, 0.97346, 0.46463, 1, 0.26845, 1, 0.04963, 0.90706, 0.2106, 0.60115, 0.07478, 0.40195, 0.18545, 0, 0.28857, 0 ], - "triangles": [ 1, 3, 4, 7, 4, 5, 5, 6, 7, 3, 1, 2, 1, 4, 7, 0, 1, 10, 7, 8, 10, 1, 7, 10, 10, 8, 9 ], - "vertices": [ -0.19, 6.82, 30.97, 10.96, 37.97, 17.33, 53.88, 12.6, 57.58, 6.31, 59.34, 0.08, 55.04, -8.63, 32.99, -9.33, 20.79, -17.43, -7.27, -21.56, -8.19, -18.29 ], - "edges": [ 20, 0, 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 18, 20, 16, 18 ], + "triangles": [ 10, 8, 9, 1, 7, 10, 7, 8, 10, 0, 1, 10, 1, 4, 7, 3, 1, 2, 5, 6, 7, 7, 4, 5, 1, 3, 4 ], + "vertices": [ -0.19, 6.82, 30.97, 10.96, 37.97, 17.33, 53.88, 12.6, 57.58, 6.31, 59.34, 0.08, 55.04, -8.63, 32.99, -9.33, 20.79, -17.43, -7.27, -21.56, -8.18999, -18.29 ], "hull": 11, + "edges": [ 20, 0, 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 18, 20, 16, 18 ], "width": 33, "height": 70 } @@ -153,9 +154,9 @@ "type": "mesh", "uvs": [ 0.7377, 0.40692, 1, 0.75237, 1, 1, 0.62046, 1, 0.26184, 0.56601, 0, 0.29783, 0, 0, 0.44115, 0 ], "triangles": [ 3, 1, 2, 3, 0, 1, 3, 4, 0, 4, 7, 0, 4, 5, 7, 5, 6, 7 ], - "vertices": [ 15.18, 5.74, 32.17, 5.32, 41.79, 0.21, 36.63, -9.5, 14.88, -9.72, 0.9, -10.89, -10.66, -4.74, -4.66, 6.54 ], - "edges": [ 12, 14, 14, 0, 4, 2, 0, 2, 4, 6, 6, 8, 10, 12, 8, 10 ], + "vertices": [ 15.18, 5.74, 32.16999, 5.32, 41.79, 0.21, 36.63, -9.5, 14.88, -9.72, 0.9, -10.89, -10.66, -4.73999, -4.66, 6.54 ], "hull": 8, + "edges": [ 12, 14, 14, 0, 4, 2, 0, 2, 4, 6, 6, 8, 10, 12, 8, 10 ], "width": 29, "height": 44 } @@ -165,10 +166,10 @@ "name": "goblin/left-upper-leg", "type": "mesh", "uvs": [ 1, 0.12167, 1, 0.54873, 0.91067, 0.78907, 0.76567, 1, 0.3087, 0.9579, 0, 0.68777, 0, 0.219, 0.51961, 0, 0.87552, 0 ], - "triangles": [ 3, 4, 2, 2, 4, 1, 1, 4, 7, 4, 5, 7, 0, 1, 7, 5, 6, 7, 7, 8, 0 ], + "triangles": [ 7, 8, 0, 5, 6, 7, 0, 1, 7, 4, 5, 7, 1, 4, 7, 2, 4, 1, 3, 4, 2 ], "vertices": [ 2.33, 13.06, 33.5, 12.57, 51, 9.34, 66.32, 4.31, 63, -10.71, 43.13, -20.58, 8.91, -20.04, -6.79, -2.64, -6.61, 9.1 ], - "edges": [ 10, 8, 8, 6, 6, 4, 4, 2, 10, 12, 12, 14, 14, 16, 2, 0, 16, 0 ], "hull": 9, + "edges": [ 10, 8, 8, 6, 6, 4, 4, 2, 10, 12, 12, 14, 14, 16, 2, 0, 16, 0 ], "width": 33, "height": 73 } @@ -179,9 +180,9 @@ "type": "mesh", "uvs": [ 0.81967, 0.27365, 0.92101, 0.82048, 0.47134, 1, 0.15679, 0.9354, 0, 0.7556, 0.19268, 0.51833, 0.15468, 0.35706, 0, 0.21989, 0.13568, 0, 0.68878, 0, 0.70145, 0.53872 ], "triangles": [ 3, 5, 2, 2, 10, 1, 2, 5, 10, 3, 4, 5, 10, 0, 1, 0, 10, 6, 10, 5, 6, 7, 8, 6, 6, 9, 0, 6, 8, 9 ], - "vertices": [ 18.62, -11.65, -3.98, -13.85, -10.28, 2.76, -6.91, 13.89, 0.8, 19.05, 10.06, 11.51, 16.74, 12.45, 22.71, 17.64, 31.4, 12.19, 30.12, -7.67, 8.05, -6.71 ], - "edges": [ 14, 12, 12, 10, 10, 8, 8, 6, 6, 4, 4, 2, 2, 20, 20, 0, 0, 18, 16, 18, 14, 16, 0, 2 ], + "vertices": [ 18.62, -11.65, -3.98, -13.85, -10.28, 2.76, -6.91, 13.89, 0.8, 19.04999, 10.06, 11.51, 16.74, 12.45, 22.71, 17.64, 31.4, 12.19, 30.12, -7.67, 8.05, -6.71 ], "hull": 10, + "edges": [ 14, 12, 12, 10, 10, 8, 8, 6, 6, 4, 4, 2, 2, 20, 20, 0, 0, 18, 16, 18, 14, 16, 0, 2 ], "width": 36, "height": 41 } @@ -191,10 +192,10 @@ "name": "goblin/pelvis", "type": "mesh", "uvs": [ 1, 1, 0, 1, 0, 0, 1, 0 ], - "triangles": [ 1, 3, 0, 1, 2, 3 ], + "triangles": [ 1, 2, 3, 1, 3, 0 ], "vertices": [ 25.38, -20.73, -36.61, -20.73, -36.61, 22.26, 25.38, 22.26 ], - "edges": [ 0, 2, 2, 4, 4, 6, 0, 6 ], "hull": 4, + "edges": [ 0, 2, 2, 4, 4, 6, 0, 6 ], "width": 62, "height": 43 } @@ -205,9 +206,9 @@ "type": "mesh", "uvs": [ 1, 0.09223, 1, 0.8501, 0.72058, 1, 0.24384, 1, 0, 0.86558, 0.20822, 0.10919, 0.50903, 0, 0.85342, 0 ], "triangles": [ 1, 2, 6, 6, 2, 5, 1, 6, 0, 4, 5, 3, 2, 3, 5, 6, 7, 0 ], - "vertices": [ -4.75, 8.89, 33.03, 11.74, 40.99, 5.89, 41.81, -5.03, 35.53, -11.13, -2.53, -9.2, -8.5, -2.71, -9.09, 5.18 ], - "edges": [ 8, 6, 4, 6, 4, 2, 12, 14, 2, 0, 14, 0, 10, 12, 8, 10 ], + "vertices": [ -4.75, 8.89, 33.03, 11.74, 40.99, 5.89, 41.81, -5.03, 35.53, -11.13, -2.53, -9.2, -8.5, -2.71, -9.09, 5.17999 ], "hull": 8, + "edges": [ 8, 6, 4, 6, 4, 2, 12, 14, 2, 0, 14, 0, 10, 12, 8, 10 ], "width": 23, "height": 50 } @@ -217,10 +218,10 @@ "name": "goblin/right-foot", "type": "mesh", "uvs": [ 0.40851, 0.0047, 0.59087, 0.33404, 0.75959, 0.48311, 0.88907, 0.59751, 0.97532, 0.89391, 0.90385, 1, 0.6722, 1, 0.38633, 1, 0.08074, 1, 0, 0.88921, 0, 0.65984, 0, 0.46577, 0.0906, 0.0988, 0.305, 0, 0.47461, 0.71257, 0.715, 0.74681 ], - "triangles": [ 4, 5, 15, 7, 14, 6, 5, 6, 15, 6, 14, 15, 14, 7, 9, 7, 8, 9, 15, 3, 4, 9, 10, 14, 15, 2, 3, 15, 14, 2, 14, 10, 1, 12, 1, 11, 1, 12, 13, 14, 1, 2, 1, 13, 0, 1, 10, 11 ], + "triangles": [ 1, 10, 11, 1, 13, 0, 14, 1, 2, 1, 12, 13, 12, 1, 11, 14, 10, 1, 15, 14, 2, 15, 2, 3, 9, 10, 14, 15, 3, 4, 7, 8, 9, 14, 7, 9, 6, 14, 15, 5, 6, 15, 7, 14, 6, 4, 5, 15 ], "vertices": [ 17.36, 25.99, 29.13, 15.44, 39.89, 10.8, 48.14, 7.24, 53.84, -2.38, 49.43, -6, 34.84, -6.39, 16.84, -6.87, -2.4, -7.38, -7.58, -3.86, -7.78, 3.7, -7.95, 10.1, -2.57, 22.36, 10.84, 25.97, 22.14, 2.75, 37.31, 2.03 ], - "edges": [ 0, 2, 6, 8, 8, 10, 16, 18, 22, 24, 24, 26, 0, 26, 10, 12, 2, 4, 4, 6, 12, 14, 14, 16, 18, 20, 20, 22, 2, 28, 28, 14, 20, 28, 4, 30, 30, 12, 28, 30, 30, 8 ], "hull": 14, + "edges": [ 0, 2, 6, 8, 8, 10, 16, 18, 22, 24, 24, 26, 0, 26, 10, 12, 2, 4, 4, 6, 12, 14, 14, 16, 18, 20, 20, 22, 2, 28, 28, 14, 20, 28, 4, 30, 30, 12, 28, 30, 30, 8 ], "width": 63, "height": 33 } @@ -230,10 +231,10 @@ "name": "goblin/right-hand", "type": "mesh", "uvs": [ 0.17957, 0, 0, 0.44772, 0, 0.79734, 0.20057, 0.94264, 0.55057, 1, 0.8539, 1, 0.89823, 0.82004, 0.8259, 0.74285, 0.84223, 0.49993, 0.96356, 0.34102, 0.66023, 0 ], - "triangles": [ 4, 7, 5, 5, 7, 6, 4, 3, 7, 3, 2, 8, 7, 3, 8, 8, 1, 10, 8, 2, 1, 0, 10, 1, 8, 10, 9 ], - "vertices": [ -10.82, -9.45, 5.95, -15.34, 18.88, -14.9, 24, -7.5, 25.69, 5.16, 25.31, 16.07, 18.61, 17.44, 15.84, 14.74, 6.84, 15.02, 0.81, 19.18, -11.41, 7.83 ], - "edges": [ 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 18, 20, 0, 20 ], + "triangles": [ 8, 10, 9, 0, 10, 1, 8, 2, 1, 8, 1, 10, 7, 3, 8, 3, 2, 8, 4, 3, 7, 5, 7, 6, 4, 7, 5 ], + "vertices": [ -10.82, -9.45, 5.95, -15.34, 18.87999, -14.9, 24, -7.5, 25.69, 5.16, 25.31, 16.07, 18.61, 17.44, 15.84, 14.74, 6.84, 15.02, 0.81, 19.18, -11.41, 7.83 ], "hull": 11, + "edges": [ 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 18, 20, 0, 20 ], "width": 36, "height": 37 } @@ -243,10 +244,10 @@ "name": "goblin/right-hand", "type": "mesh", "uvs": [ 0.88538, 0.22262, 0.76167, 0.3594, 0.75088, 0.78308, 0.95326, 0.84981, 1, 0.60302 ], - "triangles": [ 3, 2, 4, 2, 1, 4, 1, 0, 4 ], + "triangles": [ 1, 0, 4, 2, 1, 4, 3, 2, 4 ], "vertices": [ -2.82, 15.97, 2.4, 11.71, 18.08, 11.9, 20.27, 19.27, 11.09, 20.62 ], - "edges": [ 2, 4, 4, 6, 6, 8, 2, 0, 0, 8 ], "hull": 5, + "edges": [ 2, 4, 4, 6, 6, 8, 2, 0, 0, 8 ], "width": 36, "height": 37 } @@ -256,10 +257,10 @@ "name": "goblin/right-lower-leg", "type": "mesh", "uvs": [ 1, 0.27261, 0.81312, 0.52592, 0.79587, 0.71795, 0.95544, 0.80988, 0.85193, 0.95493, 0.47241, 1, 0.14033, 1, 0, 0.8773, 0.14896, 0.67914, 0.1619, 0.30325, 0.60611, 0 ], - "triangles": [ 4, 5, 2, 2, 5, 8, 5, 6, 8, 6, 7, 8, 4, 2, 3, 2, 8, 1, 8, 9, 1, 9, 10, 1, 1, 10, 0 ], - "vertices": [ 6.26, 8.46, 23.32, 8.04, 37.1, 12.89, 41.45, 20.82, 53.07, 21.46, 61.33, 10.06, 65.77, -1.03, 58.99, -9.19, 43.02, -9.81, 16.33, -20, -12.79, -9.26 ], - "edges": [ 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 0, 20, 18, 20 ], + "triangles": [ 1, 10, 0, 9, 10, 1, 8, 9, 1, 2, 8, 1, 4, 2, 3, 6, 7, 8, 5, 6, 8, 2, 5, 8, 4, 5, 2 ], + "vertices": [ 6.26, 8.46, 23.32, 8.04, 37.09999, 12.89, 41.45, 20.82, 53.07, 21.46, 61.33, 10.06, 65.76999, -1.03, 58.99, -9.18999, 43.02, -9.81, 16.33, -20, -12.79, -9.26 ], "hull": 11, + "edges": [ 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 0, 20, 18, 20 ], "width": 36, "height": 76 } @@ -271,8 +272,8 @@ "uvs": [ 0.62008, 0.03708, 0.92131, 0.09048, 1, 0.38319, 0.72049, 0.6937, 0.31656, 1, 0, 1, 0, 0.75106, 0.28233, 0.49988 ], "triangles": [ 4, 6, 7, 4, 7, 3, 4, 5, 6, 7, 0, 3, 2, 0, 1, 2, 3, 0 ], "vertices": [ -3.17, -11.05, -9, -0.57, -1.01, 10.33, 16.69, 11.17, 37.41, 8.2, 45.45, -1.16, 36.95, -8.46, 21.2, -7.47 ], - "edges": [ 10, 12, 12, 14, 14, 0, 0, 2, 2, 4, 4, 6, 8, 10, 6, 8 ], "hull": 8, + "edges": [ 10, 12, 12, 14, 14, 0, 0, 2, 2, 4, 4, 6, 8, 10, 6, 8 ], "width": 39, "height": 45 } @@ -282,10 +283,10 @@ "name": "goblin/right-upper-leg", "type": "mesh", "uvs": [ 0.27018, 0, 0.11618, 0.18177, 0, 0.70688, 0, 0.89577, 0.26668, 1, 0.48718, 1, 0.67618, 0.83532, 1, 0.5161, 1, 0.25543, 0.74618, 0.0571 ], - "triangles": [ 5, 4, 6, 6, 4, 2, 4, 3, 2, 2, 1, 6, 6, 1, 9, 6, 9, 7, 9, 1, 0, 9, 8, 7 ], - "vertices": [ -9.85, -10.37, 2.17, -14.07, 35.49, -13.66, 47.29, -12.11, 52.61, -2.26, 51.63, 5.16, 40.51, 10.18, 19.13, 18.47, 2.85, 16.32, -8.4, 6.14 ], - "edges": [ 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 0, 18 ], + "triangles": [ 9, 8, 7, 9, 1, 0, 6, 9, 7, 6, 1, 9, 2, 1, 6, 4, 3, 2, 6, 4, 2, 5, 4, 6 ], + "vertices": [ -9.85, -10.37, 2.17, -14.07, 35.49, -13.66, 47.29, -12.11, 52.61, -2.26, 51.63, 5.16, 40.50999, 10.18, 19.12999, 18.46999, 2.85, 16.32, -8.39999, 6.14 ], "hull": 10, + "edges": [ 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 0, 18 ], "width": 34, "height": 63 } @@ -296,9 +297,9 @@ "type": "mesh", "uvs": [ 0, 0.33287, 0.15945, 0.46488, 0.15761, 0.60314, 0.15502, 0.79806, 0.32807, 0.93478, 0.6875, 1, 0.80731, 1, 1, 0.77763, 1, 0.66147, 1, 0.56703, 0.93207, 0.4771, 0.86944, 0.39416, 0.83837, 0.226, 0.68085, 0, 0.14836, 0, 0, 0.07199, 0.78734, 0.86249, 0.43679, 0.79649, 0.76738, 0.61733, 0.44345, 0.58747, 0.54329, 0.38316, 0.77692, 0.73446, 0.66478, 0.51012 ], "triangles": [ 5, 16, 6, 6, 16, 7, 4, 17, 5, 5, 17, 16, 4, 3, 17, 17, 21, 16, 16, 21, 7, 3, 2, 17, 21, 19, 18, 21, 17, 19, 17, 2, 19, 21, 8, 7, 21, 18, 8, 18, 9, 8, 19, 22, 18, 18, 10, 9, 18, 22, 10, 2, 1, 19, 19, 20, 22, 19, 1, 20, 22, 11, 10, 22, 20, 11, 20, 1, 14, 20, 12, 11, 1, 0, 14, 20, 13, 12, 20, 14, 13, 0, 15, 14 ], - "vertices": [ 56.93, 27.95, 43.37, 18.23, 30.16, 19.5, 11.53, 21.28, -2.55, 10.69, -10.89, -13.12, -11.59, -21.23, 8.54, -36.12, 19.65, -37.08, 28.68, -37.86, 37.68, -34, 45.98, -30.44, 56.4, -29.07, 84.78, -20.92, 87.9, 15.15, 81.88, 25.79, 1.67, -21.01, 10.03, 2.18, 25.23, -18.25, 29.98, 0, 48.54, -8.39, 13.98, -21.36, 35.9, -15.6 ], - "edges": [ 0, 2, 6, 8, 8, 10, 10, 12, 12, 14, 22, 24, 24, 26, 26, 28, 28, 30, 0, 30, 14, 32, 32, 34, 34, 6, 18, 36, 36, 38, 2, 4, 4, 6, 38, 4, 2, 40, 40, 22, 40, 38, 38, 34, 32, 10, 34, 8, 40, 28, 14, 16, 16, 18, 32, 42, 42, 36, 16, 42, 42, 34, 18, 20, 20, 22, 36, 44, 44, 40, 20, 44 ], + "vertices": [ 56.93, 27.95, 43.37, 18.23, 30.16, 19.5, 11.53, 21.28, -2.55, 10.69, -10.89, -13.12, -11.59, -21.23, 8.54, -36.12, 19.65, -37.08, 28.68, -37.86, 37.68, -34, 45.98, -30.44, 56.4, -29.07, 84.78, -20.92, 87.9, 15.15, 81.87999, 25.79, 1.67, -21.01, 10.03, 2.18, 25.23, -18.25, 29.98, 0, 48.54, -8.39, 13.98, -21.36, 35.9, -15.6 ], "hull": 16, + "edges": [ 0, 2, 6, 8, 8, 10, 10, 12, 12, 14, 22, 24, 24, 26, 26, 28, 28, 30, 0, 30, 14, 32, 32, 34, 34, 6, 18, 36, 36, 38, 2, 4, 4, 6, 38, 4, 2, 40, 40, 22, 40, 38, 38, 34, 32, 10, 34, 8, 40, 28, 14, 16, 16, 18, 32, 42, 42, 36, 16, 42, 42, 34, 18, 20, 20, 22, 36, 44, 44, 40, 20, 44 ], "width": 68, "height": 96 } @@ -308,10 +309,10 @@ "name": "goblin/undie-straps", "type": "mesh", "uvs": [ 0.36097, 0.44959, 0.66297, 0.60591, 1, 0.19486, 1, 0.57117, 0.75897, 1, 0.38697, 1, 0, 0.26433, 0, 0, 0.12497, 0 ], - "triangles": [ 5, 1, 4, 4, 1, 3, 6, 0, 5, 5, 0, 1, 3, 1, 2, 6, 8, 0, 6, 7, 8 ], - "vertices": [ -10.56, 12.87, 6.53, 9.9, 25.62, 17.71, 25.62, 10.56, 11.97, 2.41, -9.09, 2.41, -31, 16.39, -31, 21.41, -23.92, 21.41 ], - "edges": [ 14, 16, 16, 0, 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 12, 14, 10, 12, 0, 10, 2, 8 ], + "triangles": [ 6, 7, 8, 6, 8, 0, 3, 1, 2, 5, 0, 1, 6, 0, 5, 4, 1, 3, 5, 1, 4 ], + "vertices": [ -10.56, 12.87, 6.53, 9.89999, 25.62, 17.70999, 25.62, 10.56, 11.97, 2.41, -9.09, 2.41, -31, 16.39, -31, 21.41, -23.92, 21.41 ], "hull": 9, + "edges": [ 14, 16, 16, 0, 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 12, 14, 10, 12, 0, 10, 2, 8 ], "width": 55, "height": 19 } @@ -321,10 +322,10 @@ "name": "goblin/undies", "type": "mesh", "uvs": [ 0, 0.32029, 0.14893, 0.59457, 0.22437, 1, 0.35909, 1, 0.50998, 1, 0.79559, 0.58453, 0.9842, 0.28015, 1, 0.00588, 0.46957, 0.17646, 0, 0.03933, 0.48843, 0.59122, 0.48114, 0.43099 ], - "triangles": [ 3, 10, 4, 4, 10, 5, 10, 3, 1, 3, 2, 1, 1, 11, 10, 1, 0, 11, 10, 11, 5, 5, 11, 6, 0, 8, 11, 11, 8, 6, 0, 9, 8, 6, 8, 7 ], - "vertices": [ -13.22, 5.56, -8, -2.47, -5.49, -14.27, -0.64, -14.36, 4.78, -14.45, 15.27, -2.59, 22.22, 6.11, 22.92, 14.05, 3.75, 9.44, -13.08, 13.71, 4.21, -2.59, 4.03, 2.05 ], - "edges": [ 0, 2, 2, 4, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 0, 18, 4, 6, 6, 8, 6, 20, 16, 22, 22, 20, 0, 22, 22, 12, 2, 20, 20, 10 ], + "triangles": [ 6, 8, 7, 0, 9, 8, 11, 8, 6, 0, 8, 11, 5, 11, 6, 10, 11, 5, 1, 0, 11, 1, 11, 10, 3, 2, 1, 10, 3, 1, 4, 10, 5, 3, 10, 4 ], + "vertices": [ -13.22, 5.56, -8, -2.47, -5.49, -14.27, -0.64, -14.36, 4.78, -14.45, 15.27, -2.58999, 22.22, 6.11, 22.92, 14.05, 3.75, 9.43999, -13.08, 13.71, 4.21, -2.58999, 4.03, 2.05 ], "hull": 10, + "edges": [ 0, 2, 2, 4, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 0, 18, 4, 6, 6, 8, 6, 20, 16, 22, 22, 20, 0, 22, 22, 12, 2, 20, 20, 10 ], "width": 36, "height": 29 } @@ -757,7 +758,7 @@ ] } }, - "ffd": { + "deform": { "default": { "left hand item": { "spear": [ @@ -769,19 +770,19 @@ { "time": 0, "offset": 26, - "vertices": [ 2.34, 0.14 ], + "vertices": [ 2.34754, 0.14469 ], "curve": [ 0.25, 0, 0.75, 1 ] }, { "time": 0.5, "offset": 8, - "vertices": [ -1.19, 4.31, 0.07, 6.41, 1.66, 6.18, 1.75, 3.59 ], + "vertices": [ -1.19415, 4.31531, 0.07279, 6.41351, 1.66048, 6.18882, 1.75232, 3.59555 ], "curve": [ 0.25, 0, 0.75, 1 ] }, { "time": 1, "offset": 26, - "vertices": [ 2.34, 0.14 ] + "vertices": [ 2.34754, 0.14469 ] } ] } @@ -795,22 +796,22 @@ }, { "time": 0.2, - "vertices": [ -10.97, -6.68, -4.68, -2.46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.08, 0.08, -1.08, 0.08, -1.08, 0.08, 0, 0, -2.22, 2.66, -4.83, 2.7, -5.7, -0.51, -3.15, -1.61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6.64, 0.81, -11.82, -1.34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.08, 0.08 ], + "vertices": [ -10.97826, -6.68962, -4.68015, -2.46175, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.08534, 0.08391, -1.08534, 0.08391, -1.08534, 0.08391, 0, 0, -2.22324, 2.66465, -4.83295, 2.70084, -5.70553, -0.51941, -3.15962, -1.61501, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6.64741, 0.81612, -11.82285, -1.34955, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.08534, 0.08391 ], "curve": [ 0.25, 0, 0.75, 1 ] }, { "time": 0.3666, - "vertices": [ 10.69, 4.05, 3.66, 1.85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.47, 0.09, 1.47, 0.09, 1.47, 0.09, 0, 0, 2.69, -0.22, 3.77, 0.11, 3.68, 1.55, 2.49, 1.65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4.45, -3.91, 9.19, -1.66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.47, 0.09 ], + "vertices": [ 10.69275, 4.05949, 3.66373, 1.85426, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.47305, 0.09017, 1.47305, 0.09017, 1.47305, 0.09017, 0, 0, 2.69652, -0.22738, 3.77135, 0.11417, 3.6893, 1.55352, 2.49594, 1.65501, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4.4588, -3.9113, 9.19593, -1.66854, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.47305, 0.09017 ], "curve": [ 0.621, 0, 0.75, 1 ] }, { "time": 0.7, - "vertices": [ -10.97, -6.68, -4.68, -2.46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.17, -0.17, -1.17, -0.17, -1.17, -0.17, 0, 0, -2.22, 2.66, -4.83, 2.7, -5.7, -0.51, -3.15, -1.61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6.64, 0.81, -11.82, -1.34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.17, -0.17 ], + "vertices": [ -10.97826, -6.68962, -4.68015, -2.46175, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.1755, -0.17183, -1.1755, -0.17182, -1.1755, -0.17183, 0, 0, -2.22324, 2.66465, -4.83295, 2.70084, -5.70553, -0.51941, -3.15962, -1.61501, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6.64741, 0.81612, -11.82285, -1.34955, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.1755, -0.17183 ], "curve": [ 0.25, 0, 0.75, 1 ] }, { "time": 0.8666, - "vertices": [ 10.69, 4.05, 3.66, 1.85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.38, 0.08, 0.38, 0.08, 0.38, 0.08, 0, 0, 2.69, -0.22, 3.77, 0.11, 3.68, 1.55, 2.49, 1.65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4.45, -3.91, 9.19, -1.66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.38, 0.08 ], + "vertices": [ 10.69275, 4.05949, 3.66373, 1.85426, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.38687, 0.08446, 0.38687, 0.08446, 0.38687, 0.08446, 0, 0, 2.69652, -0.22738, 3.77135, 0.11417, 3.6893, 1.55352, 2.49594, 1.65501, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4.4588, -3.9113, 9.19593, -1.66854, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.38687, 0.08446 ], "curve": [ 0.25, 0, 0.75, 1 ] }, { "time": 1 } @@ -821,35 +822,35 @@ { "time": 0, "offset": 8, - "vertices": [ 3.69, 2.37, -7.16, 18.79, -12.78, 14.77, -12.75, 6.5, -3.13, 1.98, -0.44, 0.36, 0, 0, -3.8, 2.98 ] + "vertices": [ 3.69298, 2.37572, -7.16969, 18.79732, -12.78161, 14.7778, -12.75775, 6.50514, -3.13475, 1.98906, -0.44401, 0.36629, 0, 0, -3.80085, 2.98474 ] }, { "time": 0.1333 }, { "time": 0.2333, "offset": 8, - "vertices": [ -3.96, -2.34, -5.8, -12.47, -2.23, -12.99, 2.02, -9.1, 0, 0, 0, 0, 0, 0, -1.35, -5.28 ] + "vertices": [ -3.96072, -2.34594, -5.80445, -12.47629, -2.23129, -12.99037, 2.02941, -9.1036, 0, 0, 0, 0, 0, 0, -1.35254, -5.2883 ] }, { "time": 0.3666, "offset": 8, - "vertices": [ 0.66, 0.33, 0.33, 2.69, -0.48, 2.54, -1.13, 1.38, 0, 0, 0, 0, 0, 0, -0.11, 0.79 ] + "vertices": [ 0.66504, 0.33548, 0.33902, 2.69014, -0.4817, 2.54524, -1.13592, 1.38562, 0, 0, 0, 0, 0, 0, -0.11907, 0.79273 ] }, { "time": 0.5, "curve": "stepped" }, { "time": 0.6333 }, { "time": 0.7333, "offset": 8, - "vertices": [ -2.97, 9.4, -6.91, 19.92, -10.55, 18.41, -12.37, 12.38, -4.72, 6.3, 0, 0, -1.48, 4.88, -7.06, 10.7 ] + "vertices": [ -2.97737, 9.40254, -6.91661, 19.92794, -10.55287, 18.41085, -12.37161, 12.38473, -4.72606, 6.30798, 0, 0, -1.48902, 4.88944, -7.06773, 10.70101 ] }, { "time": 0.8333, "offset": 6, - "vertices": [ 1.05, 1.56, -2.52, 7.99, -5.52, 17.14, -8.93, 15.79, -10.73, 10.22, -4.23, 5.36, 0, 0, 0, 0, -5.83, 8.55 ] + "vertices": [ 1.05318, 1.56361, -2.52722, 7.9974, -5.5203, 17.14136, -8.93317, 15.79635, -10.73747, 10.22055, -4.23801, 5.36992, 0, 0, 0, 0, -5.83147, 8.55531 ] }, { "time": 1, "offset": 8, - "vertices": [ 3.69, 2.37, -7.16, 18.79, -12.78, 14.77, -12.75, 6.5, -3.13, 1.98, -0.44, 0.36, 0, 0, -3.8, 2.98 ] + "vertices": [ 3.69298, 2.37572, -7.16969, 18.79732, -12.78161, 14.7778, -12.75775, 6.50514, -3.13475, 1.98906, -0.44401, 0.36629, 0, 0, -3.80085, 2.98474 ] } ] }, @@ -859,22 +860,22 @@ { "time": 0.1333, "offset": 6, - "vertices": [ -0.68, -4.13 ] + "vertices": [ -0.68989, -4.13283 ] }, { "time": 0.3333, "offset": 6, - "vertices": [ -1.04, -3.1 ] + "vertices": [ -1.04945, -3.10476 ] }, { "time": 0.7, "offset": 6, - "vertices": [ -1.42, -6.3 ] + "vertices": [ -1.4245, -6.30616 ] }, { "time": 0.8666, "offset": 6, - "vertices": [ -1.13, -1.79 ] + "vertices": [ -1.13541, -1.79035 ] }, { "time": 1 } ] @@ -885,38 +886,38 @@ { "time": 0.1333, "offset": 2, - "vertices": [ -2.81, 2.63, -2.35, 3.89, -1.99, 4.86, -0.93, 5.57, -0.48, 5.09, -0.34, 3.42, -0.17, 1.36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.31, 1.91, -1.32, 3.65 ] + "vertices": [ -2.81258, 2.63114, -2.35238, 3.89441, -1.99921, 4.8639, -0.93273, 5.57982, -0.48886, 5.09854, -0.34812, 3.42912, -0.17445, 1.36898, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.31305, 1.91371, -1.32986, 3.65703 ] }, { "time": 0.2333, "offset": 2, - "vertices": [ -6.39, 6.41, -7.74, 8.27, -7.02, 11.35, -4.03, 13.93, -2.5, 12.62, -1.46, 7.58, -0.17, 1.36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3.84, 2.61, -4.53, 7.92 ] + "vertices": [ -6.39088, 6.41245, -7.74575, 8.27191, -7.02471, 11.35894, -4.0347, 13.93454, -2.50399, 12.62962, -1.46124, 7.58915, -0.17445, 1.36898, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3.84765, 2.61215, -4.53955, 7.92357 ] }, { "time": 0.3, "offset": 2, - "vertices": [ -8.27, 6.68, -9.29, 10.13, -8.62, 14.71, -4.58, 18.81, -2.2, 17.1, -0.07, 9.9, 2.54, 1.01, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.94, 2.38, -4.59, 10.01 ] + "vertices": [ -8.27184, 6.68821, -9.29764, 10.13797, -8.62231, 14.71339, -4.58629, 18.81939, -2.20304, 17.10709, -0.07794, 9.9046, 2.54451, 1.01642, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.94624, 2.38007, -4.59398, 10.01888 ] }, { "time": 0.3666, "offset": 2, - "vertices": [ -10.47, 9.44, -13.36, 12.4, -14.32, 16.94, -9.24, 23.55, -5.51, 21.51, -1.19, 11.53, 2.54, 1.01, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4.14, 2.29, -6.63, 11.37 ] + "vertices": [ -10.47683, 9.44175, -13.36882, 12.40982, -14.32568, 16.94392, -9.24462, 23.55674, -5.51711, 21.51377, -1.19581, 11.53192, 2.54451, 1.01642, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4.14847, 2.29389, -6.63418, 11.37127 ] }, { "time": 0.5, "offset": 2, - "vertices": [ -5.42, 4.36, -10.59, 7.04, -11.64, 11.55, -6.19, 20.12, -1.45, 18.05, 4.86, 6.41, 2.81, 0.27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.96, 4.94 ] + "vertices": [ -5.42473, 4.36854, -10.59004, 7.04468, -11.64251, 11.55845, -6.19665, 20.12805, -1.45497, 18.05411, 4.86619, 6.41678, 2.81462, 0.27601, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.96412, 4.94829 ] }, { "time": 0.6333 }, { "time": 0.7333, "offset": 4, - "vertices": [ 1.31, -6.84, -0.87, -12.54, -5.98, -14.08, -7.15, -11.63, -5.67, -4.83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.06, -6.93 ] + "vertices": [ 1.31462, -6.84099, -0.87905, -12.54479, -5.9851, -14.08367, -7.15892, -11.63193, -5.6792, -4.83544, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.06163, -6.93844 ] }, { "time": 0.8, "offset": 4, - "vertices": [ 0.65, -3.42, -0.43, -6.27, -2.99, -7.04, -3.57, -5.81, -2.83, -2.41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.79, -1.28, 0, 0, 0, 0, -1.03, -3.46 ] + "vertices": [ 0.65731, -3.42049, -0.43952, -6.27239, -2.99255, -7.04183, -3.57946, -5.81596, -2.83959, -2.41772, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.79687, -1.2802, 0, 0, 0, 0, -1.03081, -3.46922 ] }, { "time": 0.8666 } ] @@ -926,13 +927,13 @@ { "time": 0, "offset": 4, - "vertices": [ -1.48, 0.34, 0, 0, 1.31, 0.08, 1.6, 0.09, 0.13, 0.15, 0, 0, 0, 0, -0.72, -0.04 ] + "vertices": [ -1.48416, 0.34736, 0, 0, 1.31152, 0.08085, 1.60295, 0.09881, 0.13673, 0.1547, 0, 0, 0, 0, -0.72862, -0.0449 ] }, { "time": 0.5 }, { "time": 1, "offset": 4, - "vertices": [ -1.48, 0.34, 0, 0, 1.31, 0.08, 1.6, 0.09, 0.13, 0.15, 0, 0, 0, 0, -0.72, -0.04 ] + "vertices": [ -1.48416, 0.34736, 0, 0, 1.31152, 0.08085, 1.60295, 0.09881, 0.13673, 0.1547, 0, 0, 0, 0, -0.72862, -0.0449 ] } ] }, @@ -942,7 +943,7 @@ { "time": 0.6, "offset": 6, - "vertices": [ 1.8, -1.56 ] + "vertices": [ 1.80396, -1.56552 ] }, { "time": 1 } ] @@ -951,17 +952,17 @@ "right upper leg": [ { "time": 0, - "vertices": [ -6.03, -1.46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.34, -1.93, -1.86, -5.05, -2.5, -3.09 ] + "vertices": [ -6.03856, -1.46324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.34684, -1.93101, -1.86047, -5.05265, -2.5014, -3.09984 ] }, { "time": 0.3333 }, { "time": 0.8666, "offset": 14, - "vertices": [ 0.13, -2.35, -1.33, -5.99, -1.35, -4.43 ] + "vertices": [ 0.13424, -2.35377, -1.33317, -5.99572, -1.35861, -4.43323 ] }, { "time": 1, - "vertices": [ -6.03, -1.46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.34, -1.93, -1.86, -5.05, -2.5, -3.09 ] + "vertices": [ -6.03856, -1.46324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.34684, -1.93101, -1.86047, -5.05265, -2.5014, -3.09984 ] } ] }, @@ -970,37 +971,37 @@ { "time": 0, "offset": 14, - "vertices": [ -1.48, -0.24, -2.72, -2.15, -0.51, -3.39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.09, -2.61, 0, 0, 0.57, -1.24, 0, 0, 0, 0, -2.11, -3.29 ] + "vertices": [ -1.48952, -0.24021, -2.72312, -2.15489, -0.51183, -3.39752, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.0964, -2.61458, 0, 0, 0.57686, -1.24874, 0, 0, 0, 0, -2.11251, -3.29932 ] }, { "time": 0.1333, "offset": 14, - "vertices": [ 1.31, -0.59, -0.97, -1.62, 0.74, -0.61, -1.44, 1.97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.65, -3.95, 0, 0, -1.46, -0.31, 0, 0, 0, 0, -3.31, -3.55, -2.56, 0.29 ] + "vertices": [ 1.31318, -0.59727, -0.97944, -1.62934, 0.74861, -0.6123, -1.44598, 1.97515, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.65701, -3.95221, 0, 0, -1.46987, -0.31373, 0, 0, 0, 0, -3.31756, -3.5535, -2.56329, 0.29673 ] }, { "time": 0.3, "offset": 14, - "vertices": [ 6.03, -3.13, 7.55, -1.38, 6.79, 0.31, 4.23, 1.14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4.07, -5.16, 0, 0, 4, 0.27, 0, 0, 0, 0, 3.43, -3.52 ] + "vertices": [ 6.03761, -3.13561, 7.55475, -1.38111, 6.79747, 0.31171, 4.23503, 1.14012, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4.07575, -5.16824, 0, 0, 4.0041, 0.27245, 0, 0, 0, 0, 3.4376, -3.52286 ] }, { "time": 0.5, "offset": 14, - "vertices": [ 2.25, -0.87, 2.57, -0.56, 3.17, -0.57, 1.48, 0.99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3.22, -4.43, 0, 0, 1.48, 0.01, 0, 0, 0, 0, 0.31, -3.28, -1.53, 0.17 ] + "vertices": [ 2.25942, -0.87202, 2.575, -0.56861, 3.17112, -0.57003, 1.48704, 0.9924, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3.22451, -4.43862, 0, 0, 1.48691, 0.01586, 0, 0, 0, 0, 0.31388, -3.28095, -1.53797, 0.17803 ] }, { "time": 0.6333, "offset": 14, - "vertices": [ 0.75, -1.51, -0.97, -1.62, 0.74, -0.61, -1.44, 1.97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.65, -3.95, 0, 0, -1.46, -0.31, 0, 0, 0, 0, -3.31, -3.55, -2.56, 0.29 ] + "vertices": [ 0.75002, -1.51701, -0.97944, -1.62934, 0.74861, -0.6123, -1.44598, 1.97515, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.65701, -3.95221, 0, 0, -1.46987, -0.31373, 0, 0, 0, 0, -3.31756, -3.5535, -2.56329, 0.29673 ] }, { "time": 0.8666, "offset": 14, - "vertices": [ 0.62, -1.26, 0.38, -2.2, 3.25, -0.5, 2.41, 2.39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.66, -3.1, 0, 0, 2.3, -1.15, 0, 0, 0, 0, -0.07, -3.63, -0.93, 0.1 ] + "vertices": [ 0.62202, -1.26262, 0.38489, -2.20701, 3.25048, -0.50042, 2.41108, 2.39315, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.6639, -3.10099, 0, 0, 2.30655, -1.15196, 0, 0, 0, 0, -0.07676, -3.63497, -0.9321, 0.1079 ] }, { "time": 1, "offset": 14, - "vertices": [ -1.48, -0.24, -2.72, -2.15, -0.51, -3.39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.09, -2.61, 0, 0, 0.57, -1.24, 0, 0, 0, 0, -2.11, -3.29 ] + "vertices": [ -1.48952, -0.24021, -2.72312, -2.15489, -0.51183, -3.39752, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.0964, -2.61458, 0, 0, 0.57686, -1.24874, 0, 0, 0, 0, -2.11251, -3.29932 ] } ] }, @@ -1009,32 +1010,32 @@ { "time": 0, "offset": 2, - "vertices": [ -1.77, 0.54, -0.96, -1.03, -0.39, -0.24, -1.77, 0.54 ] + "vertices": [ -1.77696, 0.54759, -0.96145, -1.03793, -0.39148, -0.24071, -1.77696, 0.54759 ] }, { "time": 0.1333, "offset": 2, - "vertices": [ -2.25, -1.03, -1.49, -4.23, -0.74, -2.84, -1.9, 0.54 ] + "vertices": [ -2.25683, -1.03177, -1.49719, -4.23861, -0.74469, -2.84906, -1.90072, 0.54477 ] }, { "time": 0.3333, "offset": 2, - "vertices": [ -2.37, -0.05, -0.49, 0.19, -0.9, 1.16, -1.6, 2.7, 0.96, 0.8 ] + "vertices": [ -2.37974, -0.05431, -0.49433, 0.19436, -0.90861, 1.16519, -1.60956, 2.70798, 0.96186, 0.80615 ] }, { "time": 0.7, "offset": 2, - "vertices": [ -0.91, -2.76, -0.62, -3.63, -0.84, -2.26, -2.56, 0.52 ] + "vertices": [ -0.91714, -2.76567, -0.62214, -3.63489, -0.8494, -2.26772, -2.56076, 0.5297 ] }, { "time": 0.8666, "offset": 2, - "vertices": [ -2.56, 0.52, -1.58, 0.32, -1.38, 0.32, -2.56, 0.52 ] + "vertices": [ -2.56076, 0.5297, -1.58064, 0.32031, -1.3847, 0.32476, -2.56076, 0.5297 ] }, { "time": 1, "offset": 2, - "vertices": [ -1.77, 0.54, -0.8, 0.53, -0.8, 0.53, -1.77, 0.54 ] + "vertices": [ -1.77696, 0.54759, -0.80128, 0.53413, -0.80128, 0.53413, -1.77696, 0.54759 ] } ] }, @@ -1042,35 +1043,35 @@ "undies": [ { "time": 0, - "vertices": [ 0.43, 0.72, 10.6, -0.11, 2.29, 0, 2.29, 0, 2.29, 0, 0.58, 0.24, -2.4, -0.65, -2.27, -0.77, 2.29, 0, 0.58, -0.48, 4.98, -0.11, 6.5, -0.23 ] + "vertices": [ 0.43098, 0.722, 10.60295, -0.11699, 2.29598, 0, 2.29598, 0, 2.29598, 0, 0.58798, 0.24399, -2.40018, -0.65335, -2.2782, -0.77533, 2.29598, 0, 0.58798, -0.48799, 4.98697, -0.11699, 6.50796, -0.23399 ] }, { "time": 0.1333, - "vertices": [ 0.72, 0.43, 7.2, -0.16, 1.37, 0, 1.37, 0, 1.37, 0, 1.25, 0.04, -0.99, -2.95, -1.37, -3.07, 1.37, 0, 0.35, -0.29, 2.99, -0.07, 3.9, -0.14 ] + "vertices": [ 0.72659, 0.43319, 7.20416, -0.1638, 1.37759, 0, 1.37759, 0, 1.37759, 0, 1.25279, 0.0464, -0.99861, -2.95085, -1.37542, -3.07404, 1.37759, 0, 0.35279, -0.29279, 2.99218, -0.07019, 3.90478, -0.14039 ] }, { "time": 0.3333, - "vertices": [ 1.16, 0, 2.1, -0.23, 0, 0, 0, 0, 0, 0, 2.24, -0.24, -0.43, 0.6, -1.55, 0.48 ] + "vertices": [ 1.16999, 0, 2.10599, -0.234, 0, 0, 0, 0, 0, 0, 2.24999, -0.24999, -0.4344, 0.60551, -1.55939, 0.48051 ] }, { "time": 0.5333, - "vertices": [ 1.16, 0, -0.23, -0.93, -2.92, 0.35, 0, 0, 0, 0, 0.49, -0.24, -0.64, -2.07, -0.64, -2.07 ] + "vertices": [ 1.16999, 0, -0.234, -0.93599, -2.92499, 0.35099, 0, 0, 0, 0, 0.49999, -0.24999, -0.64078, -2.07914, -0.64078, -2.07914 ] }, { "time": 0.7, - "vertices": [ 1.86, -0.11, 4.66, -0.09, -1.76, 0.21, 0, 0, -0.56, 0.32, -1.13, -1.15, -2.19, -3.47, -1.29, -3.47, 0, 0, 0, 0, 1.58, -0.04, 2.65, 0.16 ] + "vertices": [ 1.8627, -0.11514, 4.66326, -0.09099, -1.76428, 0.21171, 0, 0, -0.56832, 0.32832, -1.13833, -1.1511, -2.19996, -3.47068, -1.29718, -3.47068, 0, 0, 0, 0, 1.58785, -0.04642, 2.65941, 0.16714 ] }, { "time": 0.8333, - "vertices": [ 2.41, -0.2, 8.58, 0.58, -0.83, 0.1, 0, 0, -1.02, 0.59, -2.44, -1.87, -1.62, 0, 0, 0, 0, 0, 0, 0, 2.85, -0.08, 4.78, 0.3 ] + "vertices": [ 2.41687, -0.20725, 8.58108, 0.585, -0.83571, 0.10028, 0, 0, -1.02299, 0.59098, -2.44899, -1.872, -1.62499, 0, 0, 0, 0, 0, 0, 0, 2.85813, -0.08356, 4.78695, 0.30086 ] }, { "time": 0.8666, - "vertices": [ 2.01, -0.02, 8.98, 0.44, -0.2, 0.08, 0.45, 0, -0.35, 0.47, -1.84, -1.44, -0.79, 1.26, 0.53, 1.23, 0.45, 0, 0.11, -0.09, 3.28, -0.09, 5.13, 0.19 ] + "vertices": [ 2.01969, -0.0214, 8.98545, 0.4446, -0.20937, 0.08022, 0.45919, 0, -0.35919, 0.47279, -1.84159, -1.4488, -0.79153, 1.2642, 0.53285, 1.23981, 0.45919, 0, 0.11759, -0.09759, 3.2839, -0.09025, 5.13115, 0.19388 ] }, { "time": 1, - "vertices": [ 0.43, 0.72, 10.6, -0.11, 2.29, 0, 2.29, 0, 2.29, 0, 0.58, 0.24, -2.4, -0.65, -2.27, -0.77, 2.29, 0, 0.58, -0.48, 4.98, -0.11, 6.5, -0.23 ] + "vertices": [ 0.43098, 0.722, 10.60295, -0.11699, 2.29598, 0, 2.29598, 0, 2.29598, 0, 0.58798, 0.24399, -2.40018, -0.65335, -2.2782, -0.77533, 2.29598, 0, 0.58798, -0.48799, 4.98697, -0.11699, 6.50796, -0.23399 ] } ] } diff --git a/spine-sfml/data/goblins-mesh.png b/spine-sfml/data/goblins-mesh.png index a3daf0010..6eaf853b1 100644 Binary files a/spine-sfml/data/goblins-mesh.png and b/spine-sfml/data/goblins-mesh.png differ diff --git a/spine-sfml/data/raptor.atlas b/spine-sfml/data/raptor.atlas index c90da0078..b59a1747c 100644 --- a/spine-sfml/data/raptor.atlas +++ b/spine-sfml/data/raptor.atlas @@ -1,251 +1,251 @@ raptor.png -size: 1022,1022 +size: 2048,2048 format: RGBA8888 filter: Linear,Linear repeat: none back_arm rotate: false - xy: 410, 545 - size: 46, 29 - orig: 46, 29 + xy: 830, 1093 + size: 91, 57 + orig: 91, 57 offset: 0, 0 index: -1 back_bracer - rotate: false - xy: 540, 548 - size: 39, 28 - orig: 39, 28 + rotate: true + xy: 217, 113 + size: 77, 55 + orig: 77, 55 offset: 0, 0 index: -1 back_hand rotate: true - xy: 504, 538 - size: 36, 34 - orig: 36, 34 + xy: 275, 501 + size: 72, 68 + orig: 72, 68 offset: 0, 0 index: -1 back_knee rotate: false - xy: 299, 478 - size: 49, 67 - orig: 49, 67 + xy: 583, 955 + size: 97, 134 + orig: 97, 134 offset: 0, 0 index: -1 back_thigh rotate: true - xy: 140, 247 - size: 39, 24 - orig: 39, 24 + xy: 440, 689 + size: 78, 47 + orig: 78, 47 offset: 0, 0 index: -1 eyes_open rotate: true - xy: 2, 2 - size: 47, 45 - orig: 47, 45 + xy: 495, 848 + size: 93, 89 + orig: 93, 89 offset: 0, 0 index: -1 front_arm rotate: false - xy: 360, 544 - size: 48, 30 - orig: 48, 30 + xy: 2, 5 + size: 96, 60 + orig: 96, 60 offset: 0, 0 index: -1 front_bracer - rotate: false - xy: 538, 578 - size: 41, 29 - orig: 41, 29 + rotate: true + xy: 217, 192 + size: 81, 58 + orig: 81, 58 offset: 0, 0 index: -1 front_hand rotate: false - xy: 538, 609 - size: 41, 38 - orig: 41, 38 + xy: 586, 878 + size: 82, 75 + orig: 82, 75 offset: 0, 0 index: -1 front_open_hand - rotate: false - xy: 894, 782 - size: 43, 44 - orig: 43, 44 + rotate: true + xy: 495, 760 + size: 86, 87 + orig: 86, 87 offset: 0, 0 index: -1 front_thigh rotate: false - xy: 942, 849 - size: 57, 29 - orig: 57, 29 + xy: 714, 1092 + size: 114, 58 + orig: 114, 58 offset: 0, 0 index: -1 gun rotate: false - xy: 785, 774 - size: 107, 103 - orig: 107, 103 + xy: 2, 67 + size: 213, 206 + orig: 213, 206 offset: 0, 0 index: -1 gun_nohand rotate: false - xy: 614, 703 - size: 105, 102 - orig: 105, 102 + xy: 1563, 1547 + size: 210, 203 + orig: 210, 203 offset: 0, 0 index: -1 head rotate: false - xy: 2, 137 - size: 136, 149 - orig: 136, 149 + xy: 2, 275 + size: 271, 298 + orig: 271, 298 offset: 0, 0 index: -1 lower_leg rotate: true - xy: 780, 699 - size: 73, 98 - orig: 73, 98 + xy: 386, 943 + size: 146, 195 + orig: 146, 195 offset: 0, 0 index: -1 mouth_smile - rotate: true - xy: 49, 2 - size: 47, 30 - orig: 47, 30 + rotate: false + xy: 100, 6 + size: 93, 59 + orig: 93, 59 offset: 0, 0 index: -1 neck - rotate: true - xy: 1001, 860 - size: 18, 21 - orig: 18, 21 + rotate: false + xy: 1012, 1109 + size: 36, 41 + orig: 36, 41 offset: 0, 0 index: -1 raptor_arm_back rotate: false - xy: 940, 936 - size: 82, 86 - orig: 82, 86 + xy: 330, 769 + size: 163, 172 + orig: 163, 172 offset: 0, 0 index: -1 raptor_body rotate: false - xy: 2, 737 - size: 610, 285 - orig: 610, 285 + xy: 2, 1468 + size: 1219, 570 + orig: 1219, 570 offset: 0, 0 index: -1 raptor_front_arm rotate: true - xy: 195, 464 - size: 81, 102 - orig: 81, 102 + xy: 1223, 1445 + size: 162, 203 + orig: 162, 203 offset: 0, 0 index: -1 raptor_front_leg rotate: false - xy: 2, 478 - size: 191, 257 - orig: 191, 257 + xy: 2, 952 + size: 382, 514 + orig: 382, 514 offset: 0, 0 index: -1 raptor_hindleg_back rotate: false - xy: 614, 807 - size: 169, 215 - orig: 169, 215 + xy: 1223, 1609 + size: 338, 429 + orig: 338, 429 offset: 0, 0 index: -1 raptor_horn rotate: false - xy: 360, 655 - size: 182, 80 - orig: 182, 80 + xy: 714, 1307 + size: 363, 159 + orig: 363, 159 offset: 0, 0 index: -1 raptor_horn_back rotate: false - xy: 360, 576 - size: 176, 77 - orig: 176, 77 + xy: 714, 1152 + size: 351, 153 + orig: 351, 153 offset: 0, 0 index: -1 raptor_jaw rotate: false - xy: 785, 879 - size: 153, 143 - orig: 153, 143 + xy: 1563, 1752 + size: 305, 286 + orig: 305, 286 offset: 0, 0 index: -1 raptor_saddle_noshadow rotate: false - xy: 2, 288 - size: 163, 188 - orig: 163, 188 + xy: 2, 575 + size: 326, 375 + orig: 326, 375 offset: 0, 0 index: -1 raptor_saddle_strap_front - rotate: false - xy: 721, 710 - size: 57, 95 - orig: 57, 95 + rotate: true + xy: 1558, 1431 + size: 114, 189 + orig: 114, 189 offset: 0, 0 index: -1 raptor_saddle_strap_rear - rotate: true - xy: 940, 880 - size: 54, 74 - orig: 54, 74 + rotate: false + xy: 1079, 1318 + size: 108, 148 + orig: 108, 148 offset: 0, 0 index: -1 raptor_saddle_w_shadow rotate: false - xy: 195, 547 - size: 163, 188 - orig: 163, 188 + xy: 386, 1091 + size: 326, 375 + orig: 326, 375 offset: 0, 0 index: -1 raptor_tongue rotate: true - xy: 544, 649 - size: 86, 64 - orig: 86, 64 + xy: 1428, 1436 + size: 171, 128 + orig: 171, 128 offset: 0, 0 index: -1 stirrup_back rotate: false - xy: 458, 539 - size: 44, 35 - orig: 44, 35 + xy: 923, 1081 + size: 87, 69 + orig: 87, 69 offset: 0, 0 index: -1 stirrup_front - rotate: true - xy: 81, 4 - size: 45, 50 - orig: 45, 50 + rotate: false + xy: 1775, 1650 + size: 89, 100 + orig: 89, 100 offset: 0, 0 index: -1 stirrup_strap rotate: true - xy: 894, 828 - size: 49, 46 - orig: 49, 46 + xy: 1775, 1551 + size: 97, 91 + orig: 97, 91 offset: 0, 0 index: -1 torso - rotate: true - xy: 610, 647 - size: 54, 91 - orig: 54, 91 + rotate: false + xy: 330, 585 + size: 108, 182 + orig: 108, 182 offset: 0, 0 index: -1 visor - rotate: false - xy: 2, 51 - size: 131, 84 - orig: 131, 84 + rotate: true + xy: 1870, 1777 + size: 261, 168 + orig: 261, 168 offset: 0, 0 index: -1 diff --git a/spine-sfml/data/raptor.json b/spine-sfml/data/raptor.json index df9892de6..24504ac67 100644 --- a/spine-sfml/data/raptor.json +++ b/spine-sfml/data/raptor.json @@ -1,167 +1,202 @@ { -"skeleton": { "hash": "r3IJRaLbaxgEoW1YBAOrYT69jB4", "spine": "Dev", "width": 1224.2, "height": 1052.38 }, +"skeleton": { "hash": "tzTkzbBrpNYAwwMjxvin8GH1NPg", "spine": "3.3.07", "width": 1223.72, "height": 1055.5, "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": "hip", "parent": "root", "rotation": 3.15, "x": -136.78, "y": 415.47, "color": "fbff00ff" }, + { "name": "torso1", "parent": "hip", "length": 126.25, "rotation": -4.97, "x": 30.03, "y": -0.4, "color": "eaff00ff" }, + { "name": "saddle", "parent": "torso1", "length": 50.91, "rotation": 91.8, "x": 4.56, "y": 71.86, "color": "ff7300ff" }, + { "name": "spineboy_hip", "parent": "saddle", "length": 0.52, "rotation": 90.01, "x": 81.88, "y": 2.68, "color": "ffffffff" }, { - "name": "gun", + "name": "spineboy_torso", "parent": "spineboy_hip", - "length": 181.35, - "x": 16.86, - "y": -7.89, - "scaleX": 0.816, - "scaleY": 0.816, - "rotation": 107.11 + "length": 122.45, + "rotation": -75.85, + "x": 1.05, + "y": -2.1, + "color": "ffffffff" + }, + { "name": "torso2", "parent": "torso1", "length": 121.2, "rotation": 39.84, "x": 126.25, "y": -0.37, "color": "eaff00ff" }, + { "name": "neck", "parent": "torso2", "length": 70.59, "rotation": 41.37, "x": 121.19, "y": 0.34, "color": "eaff00ff" }, + { "name": "head", "parent": "neck", "length": 105.5, "rotation": 9.82, "x": 70.59, "y": 0.03, "color": "eaff00ff" }, + { "name": "horn_rear", "parent": "head", "length": 73.78, "rotation": 44.31, "x": 99.27, "y": -226.79, "color": "e07800ff" }, + { "name": "rear_arm_target", "parent": "horn_rear", "rotation": -133.55, "x": 232.68, "y": 245.84, "color": "e07800ff" }, + { + "name": "back_arm", + "parent": "spineboy_torso", + "length": 67.21, + "rotation": -120.89, + "x": 96.33, + "y": -38.46, + "color": "ffffffff" + }, + { "name": "back_bracer", "parent": "back_arm", "length": 43.68, "rotation": 17.48, "x": 67.21, "y": -0.31, "color": "ffffffff" }, + { + "name": "back_hand", + "parent": "back_bracer", + "length": 41.97, + "rotation": 9.2, + "x": 43.68, + "y": 0.06, + "inheritRotation": false, + "color": "ffffffff" + }, + { "name": "spineboy_rear_arm_goal", "parent": "saddle", "x": -30.43, "y": -100.08, "color": "ff0001ff" }, + { "name": "back_thigh", "parent": "spineboy_hip", "length": 71.15, "rotation": 160.75, "x": -9.57, "y": 2.31, "color": "ffffffff" }, + { "name": "back_knee", "parent": "back_thigh", "length": 97.17, "rotation": -54.97, "x": 71.15, "y": -0.28, "color": "ffffffff" }, + { "name": "horn_front", "parent": "head", "length": 87.48, "rotation": 49.36, "x": 82.09, "y": -221.36, "color": "15ff00ff" }, + { "name": "front_arm_target", "parent": "horn_front", "rotation": -138.59, "x": 294.58, "y": 234.17, "color": "15ff00ff" }, + { + "name": "front_arm", + "parent": "spineboy_torso", + "length": 74.51, + "rotation": -118.16, + "x": 101.37, + "y": 9.78, + "color": "ffffffff" + }, + { "name": "front_bracer", "parent": "front_arm", "length": 39.85, "rotation": 20.3, "x": 74.52, "y": -0.41, "color": "ffffffff" }, + { "name": "front_arm1", "parent": "torso2", "length": 109.99, "rotation": 224.54, "x": 46.37, "y": -84.61, "color": "15ff00ff" }, + { "name": "front_arm2", "parent": "front_arm1", "length": 86.33, "rotation": 105.23, "x": 109.99, "y": 0.2, "color": "15ff00ff" }, + { "name": "front_foot_goal", "parent": "root", "rotation": -0.94, "x": -45.79, "y": -28.67, "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, "rotation": -51.5, "x": 27.36, "y": -28.27, "color": "15ff00ff" }, + { "name": "front_leg2", "parent": "front_leg1", "length": 208.54, "rotation": 261.93, "x": 251.03, "y": 0.16, "color": "15ff00ff" }, + { "name": "front_leg3", "parent": "front_leg2", "length": 118.18, "rotation": 85.46, "x": 208.5, "y": -1.63, "color": "15ff00ff" }, + { + "name": "front_foot1", + "parent": "front_leg3", + "length": 57.79, + "rotation": 54.46, + "x": 118.19, + "y": -0.79, + "scaleX": 1.126, + "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", "length": 56.19, + "rotation": -2.15, "x": 57.78, "y": -0.02, "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", "length": 129.88, + "rotation": -2.7, "x": 49.71, "y": 20.65, "scaleX": 1.154, - "rotation": -3.16, - "inheritRotation": false + "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": "front_hand", "parent": "front_arm2", "length": 47.55, "rotation": -56.83, "x": 86.33, "y": 0.06, "color": "15ff00ff" }, { "name": "front_hand2", "parent": "front_bracer", "length": 58.18, + "rotation": 13.9, "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 } -], -"ik": [ + { "name": "spineboy_front_arm_goal", "parent": "saddle", "x": -50.7, "y": -96.93, "color": "ff0004ff" }, { - "name": "front_leg_goal", - "bones": [ "front_leg1", "front_leg2" ], - "target": "front_leg_goal", - "bendPositive": false + "name": "front_thigh", + "parent": "spineboy_hip", + "length": 77.79, + "rotation": 163.34, + "x": 15.51, + "y": 17.01, + "color": "ffffffff" + }, + { "name": "lower_leg", "parent": "front_thigh", "length": 111.5, "rotation": -49.62, "x": 77.92, "y": -0.1, "color": "ffffffff" }, + { + "name": "gun", + "parent": "spineboy_hip", + "length": 181.35, + "rotation": 107.11, + "x": 16.86, + "y": -7.89, + "scaleX": 0.816, + "scaleY": 0.816, + "color": "ffffffff" + }, + { "name": "neck2", "parent": "spineboy_torso", "length": 32.04, "rotation": -45.22, "x": 113.44, "y": -15.21, "color": "ffffffff" }, + { "name": "head2", "parent": "neck2", "length": 249.64, "rotation": 11.65, "x": 23.01, "y": 3.47, "color": "ffffffff" }, + { "name": "jaw", "parent": "head", "length": 203.76, "rotation": -140.14, "x": 29.36, "y": -40.15, "color": "ffff00ff" }, + { "name": "rear_arm1", "parent": "torso2", "length": 109.56, "rotation": -124.71, "x": 57.05, "y": -95.38, "color": "e07800ff" }, + { "name": "rear_arm2", "parent": "rear_arm1", "length": 85.8, "rotation": 123.56, "x": 109.56, "color": "e07800ff" }, + { "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": "rear_leg1", "parent": "hip", "length": 226.27, "rotation": -54.76, "x": 55.19, "y": -71.25, "color": "e07800ff" }, + { "name": "rear_leg2", "parent": "rear_leg1", "length": 172.58, "rotation": -92.25, "x": 226.32, "y": 0.23, "color": "e07800ff" }, + { "name": "rear_leg3", "parent": "rear_leg2", "length": 103.05, "rotation": 82.81, "x": 172.31, "y": 2.21, "color": "e07800ff" }, + { "name": "rear_foot1", "parent": "rear_leg3", "length": 84.51, "rotation": 75.43, "x": 102.37, "y": -0.02, "color": "e07800ff" }, + { + "name": "rear_foot2", + "parent": "rear_foot1", + "length": 102.31, + "rotation": -6.13, + "x": 84.49, + "y": -0.34, + "inheritRotation": false, + "color": "e07800ff" + }, + { "name": "rear_hand", "parent": "rear_arm2", "length": 45.8, "rotation": -76.28, "x": 85.8, "y": 0.1, "color": "e07800ff" }, + { + "name": "saddle_strap_front1", + "parent": "saddle", + "length": 97.27, + "rotation": -148.11, + "x": -27.36, + "y": -73.38, + "color": "ff7300ff" }, { - "name": "rear_leg_goal", - "bones": [ "rear_leg1", "rear_leg2" ], - "target": "rear_leg_goal", - "bendPositive": false + "name": "saddle_strap_front2", + "parent": "saddle_strap_front1", + "length": 102.74, + "rotation": -11.13, + "x": 97.29, + "y": 0.3, + "color": "ff7300ff" }, { - "name": "front_foot_goal", - "bones": [ "front_leg3", "front_foot1" ], - "target": "front_foot_goal" + "name": "saddle_strap_rear1", + "parent": "saddle", + "length": 38.62, + "rotation": 151.13, + "x": -33.34, + "y": 87.32, + "color": "ff7300ff" }, + { "name": "saddle_strap_rear2", "parent": "saddle_strap_rear1", "length": 54.36, "x": 38.63, "y": -0.02, "color": "ff7300ff" }, { - "name": "rear_foot_goal", - "bones": [ "rear_leg3", "rear_foot1" ], - "target": "rear_foot_goal" + "name": "saddle_strap_rear3", + "parent": "saddle_strap_rear2", + "length": 44.04, + "rotation": 3.63, + "x": 54.86, + "y": 0.19, + "color": "ff7300ff" }, - { - "name": "stirrup", - "bones": [ "stirrup_strap1", "stirrup_strap2" ], - "target": "stirrup" - }, - { - "name": "spineboy_rear_leg_goal", - "bones": [ "back_thigh", "back_knee" ], - "target": "spineboy_rear_arm_goal", - "bendPositive": false - }, - { - "name": "spineboy_front_leg_goal", - "bones": [ "front_thigh", "lower_leg" ], - "target": "spineboy_front_arm_goal", - "bendPositive": false - }, - { - "name": "rear_arm_goal", - "bones": [ "back_arm", "back_bracer" ], - "target": "bone2" - }, - { - "name": "front_arm_goal", - "bones": [ "front_arm", "front_bracer" ], - "target": "bone" - } + { "name": "stirrup", "parent": "saddle", "length": 78.17, "rotation": -68.85, "x": -81.94, "y": -103.38, "color": "ff7300ff" }, + { "name": "stirrup_strap1", "parent": "saddle", "length": 43.69, "rotation": -135, "x": -20.38, "y": -29.37, "color": "ff7300ff" }, + { "name": "stirrup_strap2", "parent": "stirrup_strap1", "length": 51.62, "rotation": 9.38, "x": 43.7, "color": "ff7300ff" }, + { "name": "tail1", "parent": "hip", "length": 162.53, "rotation": 162.92, "x": -20.86, "y": 6.87, "color": "eaff00ff" }, + { "name": "tail2", "parent": "tail1", "length": 130.02, "rotation": 30.3, "x": 162.53, "y": -0.82, "color": "eaff00ff" }, + { "name": "tail3", "parent": "tail2", "length": 141.06, "rotation": 6.88, "x": 130.02, "y": 0.1, "color": "eaff00ff" }, + { "name": "tail4", "parent": "tail3", "length": 126.25, "rotation": -18.86, "x": 141.05, "y": 0.64, "color": "eaff00ff" }, + { "name": "tail5", "parent": "tail4", "length": 91.06, "rotation": -22.34, "x": 126.25, "y": -0.47, "color": "eaff00ff" }, + { "name": "tongue1", "parent": "head", "length": 55.11, "rotation": -129.04, "x": 20.81, "y": -104.75, "color": "ffff00ff" }, + { "name": "tongue2", "parent": "tongue1", "length": 44.66, "rotation": 8.93, "x": 55.59, "y": 0.93, "color": "fff200ff" }, + { "name": "tongue3", "parent": "tongue2", "length": 43.64, "rotation": 12.86, "x": 44.26, "y": -0.2, "color": "fff200ff" } ], "slots": [ { "name": "back_hand", "bone": "back_hand", "attachment": "back_hand" }, @@ -198,6 +233,57 @@ { "name": "front_bracer", "bone": "front_bracer", "attachment": "front_bracer" }, { "name": "front_hand", "bone": "front_hand2", "attachment": "front_hand" } ], +"ik": [ + { + "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": "rear_leg_goal", + "bones": [ "rear_leg1", "rear_leg2" ], + "target": "rear_leg_goal", + "bendPositive": false + }, + { + "name": "spineboy_front_leg_goal", + "bones": [ "front_thigh", "lower_leg" ], + "target": "spineboy_front_arm_goal", + "bendPositive": false + }, + { + "name": "spineboy_rear_leg_goal", + "bones": [ "back_thigh", "back_knee" ], + "target": "spineboy_rear_arm_goal", + "bendPositive": false + }, + { + "name": "stirrup", + "bones": [ "stirrup_strap1", "stirrup_strap2" ], + "target": "stirrup" + } +], "skins": { "default": { "back_arm": { @@ -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": "mesh", + "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": [ 6, 15, 16, 5, 6, 16, 5, 16, 4, 6, 7, 15, 16, 17, 4, 8, 15, 7, 14, 15, 8, 12, 14, 8, 12, 8, 9, 12, 9, 10, 11, 12, 10, 13, 14, 12, 17, 3, 4, 19, 20, 2, 18, 19, 2, 18, 2, 3, 18, 3, 17, 21, 22, 23, 24, 21, 23, 0, 21, 24, 1, 21, 0, 1, 20, 21, 2, 20, 1 ], + "vertices": [ 2, 40, 36.95, 33.31, 0.91666, 41, 68.53, 41.05, 0.08333, 2, 40, 66.01999, 20.35, 0.76813, 41, 41.41, 24.39, 0.23186, 2, 40, 74.51, 16.57, 0.64468, 41, 33.49, 19.53, 0.35531, 2, 40, 70.89, 21.97, 0.29071, 41, 39.99, 19.45999, 0.70928, 3, 40, 42.77, 63.89, 0.11483, 41, 90.47, 18.95, 0.60854, 49, -17.2, 9, 0.2766, 2, 41, 101.86, 18.83, 0.45955, 49, -14.38, 20.04, 0.54044, 2, 41, 106.47, 2.08, 0.0625, 49, 2.98, 20.56, 0.9375, 1, 49, 51.32, 21.98, 1, 1, 49, 60.41, 11.1, 1, 1, 49, 72.39, 9.60999, 1, 1, 49, 100.37, -23.87, 1, 1, 49, 104.96, -40.9, 1, 1, 49, 78.37, -25.61, 1, 1, 49, 86.05, -56.84, 1, 1, 49, 52.92, -30.04, 1, 2, 41, 62.24, -43.92, 0.0625, 49, 37.18999, -33.33, 0.9375, 2, 41, 64.89, -28.65, 0.3125, 49, 22.98, -27.14, 0.6875, 2, 41, 57.69, -27.17, 0.30612, 49, 19.83, -33.78, 0.69387, 2, 40, 124.19, 3.83, 0.19395, 41, -5.09, -14.23, 0.80604, 2, 40, 110.77, -19.65, 0.3125, 41, -16.87999, 10.1, 0.6875, 2, 40, 99.14, -19.2, 0.51612, 41, -9.93, 19.44, 0.48386, 2, 40, 43.73, -17.03, 0.9375, 41, 23.17, 63.92, 0.0625, 1, 40, 35.41, -29.77, 1, 1, 40, -15.68, -28.02, 1, 1, 40, -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": "mesh", + "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": [ 13, 60, 12, 12, 71, 46, 46, 70, 47, 11, 12, 46, 47, 11, 46, 10, 11, 47, 13, 14, 55, 15, 93, 14, 16, 56, 15, 58, 26, 27, 28, 58, 27, 63, 28, 29, 63, 58, 28, 25, 26, 58, 25, 58, 63, 57, 63, 29, 92, 29, 30, 57, 29, 92, 24, 25, 63, 24, 63, 57, 23, 24, 57, 92, 23, 57, 22, 23, 92, 62, 22, 92, 21, 22, 62, 20, 21, 91, 92, 30, 62, 91, 21, 62, 62, 30, 31, 91, 62, 31, 31, 32, 93, 20, 91, 56, 56, 19, 20, 17, 19, 56, 18, 19, 17, 93, 91, 31, 55, 34, 35, 33, 34, 55, 61, 33, 55, 61, 32, 33, 93, 32, 61, 56, 91, 93, 56, 93, 15, 16, 17, 56, 36, 37, 54, 60, 35, 36, 54, 60, 36, 60, 55, 35, 61, 55, 14, 93, 61, 14, 60, 13, 55, 12, 60, 54, 39, 54, 37, 39, 37, 38, 71, 54, 39, 40, 71, 39, 53, 71, 40, 53, 40, 41, 12, 54, 71, 46, 71, 53, 66, 45, 0, 44, 45, 66, 1, 84, 85, 65, 66, 0, 0, 85, 65, 85, 86, 65, 85, 0, 1, 78, 85, 84, 79, 78, 84, 78, 86, 85, 77, 86, 78, 77, 78, 79, 67, 66, 65, 83, 80, 79, 84, 83, 79, 77, 79, 80, 84, 90, 83, 82, 77, 80, 1, 90, 84, 94, 65, 86, 94, 86, 77, 94, 77, 82, 67, 65, 94, 51, 44, 66, 51, 66, 67, 81, 82, 80, 83, 88, 81, 87, 94, 82, 87, 82, 81, 87, 81, 88, 88, 90, 89, 87, 88, 89, 80, 83, 81, 90, 88, 83, 43, 44, 51, 64, 67, 94, 64, 94, 87, 68, 67, 64, 51, 67, 68, 76, 64, 87, 76, 87, 89, 74, 68, 64, 74, 64, 76, 3, 74, 76, 59, 43, 51, 59, 51, 68, 69, 59, 68, 74, 69, 68, 69, 74, 3, 90, 1, 2, 89, 90, 2, 76, 89, 2, 3, 76, 2, 75, 69, 3, 4, 75, 3, 75, 72, 69, 5, 75, 4, 5, 72, 75, 72, 59, 69, 59, 42, 43, 72, 42, 59, 50, 42, 72, 50, 72, 5, 6, 50, 5, 73, 50, 6, 52, 70, 42, 50, 52, 42, 73, 52, 50, 7, 73, 6, 49, 73, 7, 52, 73, 49, 8, 49, 7, 48, 52, 49, 48, 49, 8, 47, 52, 48, 70, 53, 41, 70, 41, 42, 46, 53, 70, 47, 70, 52, 9, 48, 8, 47, 48, 9, 10, 47, 9 ], + "vertices": [ 1, 8, 147.48, -145.48, 1, 1, 8, 89.4, -281.62, 1, 1, 8, -28.24, -285.93, 1, 1, 8, -14.58, -194.68, 1, 4, 6, 238.39, -84.13, 0.20851, 7, 32.09999, -140.85, 0.19336, 8, -61.96, -132.26, 0.42115, 39, 129.57, 6.39, 0.17696, 5, 2, 332.7, 63.71, 0.06905, 6, 199.57, -83.03, 0.29424, 7, 3.69, -114.37, 0.2194, 8, -85.43, -101.32, 0.30859, 39, 127.34, -26.64, 0.1087, 5, 2, 307.08, 43.5, 0.11018, 6, 166.95, -82.12999, 0.37282, 7, -20.18, -92.14, 0.24572, 8, -105.18, -75.33999, 0.21862, 39, 123.08, -64.79, 0.05264, 4, 2, 307.75, 5.7, 0.18627, 6, 143.25, -111.59, 0.58009, 7, -57.43, -98.57, 0.12363, 8, -142.98, -75.33, 0.10999, 2, 2, 308.7, -30.55, 0.25, 6, 120.75, -140.04, 0.75, 2, 2, 213.94, -142.7, 0.75, 6, -23.83, -165.45, 0.25, 3, 2, 64.44999, -187.34, 0.31139, 58, -158.45, 158.33, 0.10379, 1, 84.16, -190.98, 0.5848, 1, 1, -61.47, -178.84, 1, 4, 58, 118.47, 114.74, 0.07383, 59, 17.17, 122.49, 0.17504, 60, -100.71, 132.55, 0.06818, 1, -166.91, -67.94999, 0.68294, 4, 58, 170.4, 123.13, 0.06537, 59, 66.71, 104.77, 0.20999, 60, -53.08, 110.21, 0.12016, 1, -217.69, -61.33, 0.60447, 6, 58, 221.11, 131.31, 0.02179, 59, 115.07, 87.47, 0.23058, 60, -6.58, 88.39, 0.16258, 61, -168.92, 31, 0.02826, 62, -282.82, -90.19, 0.029, 1, -267.66, -55.14, 0.52776, 5, 59, 146.51, 86.08, 0.23635, 60, 26.66, 83.39, 0.19338, 61, -134.99, 41.34, 0.06624, 62, -257.52, -60.65, 0.06962, 1, -298.87, -61.99, 0.43436, 5, 59, 178.73, 86.41, 0.22521, 60, 56.68, 81.29, 0.20997, 61, -107.13, 46.31, 0.11271, 62, -232.44, -51.26, 0.12148, 1, -328.68, -69.24, 0.3306, 5, 59, 203.26, 86.51, 0.21603, 60, 83.06, 77.01999, 0.22457, 61, -79.56, 53.53, 0.13939, 62, -210.89, -28.3, 0.15618, 1, -354.01, -75.41, 0.26379, 5, 59, 238.06, 85.41, 0.20114, 60, 115.65, 74.66, 0.2315, 61, -49.53, 60.58, 0.16455, 62, -185.49, -14.98, 0.19123, 1, -385.33, -83.15, 0.21156, 5, 59, 255.33, 78.85, 0.18224, 60, 133.83, 63.18, 0.23194, 61, -27.04, 56.84, 0.18907, 62, -163.58, -5.26, 0.22658, 1, -406.45, -79.89, 0.17015, 5, 59, 275.48, 71.62, 0.16169, 60, 152.97, 53.58, 0.22885, 61, -5.82, 53.94, 0.21292, 62, -142.85, 0.11, 0.26159, 1, -427.72, -77.47, 0.13493, 5, 59, 313.81, 53.61, 0.14198, 60, 188.04, 35.82, 0.22293, 61, 31.84, 49.3, 0.23478, 62, -106.46, 7.49, 0.29326, 1, -465.96, -72.58999, 0.10702, 5, 59, 345.74, 45.54, 0.12502, 60, 219.6, 19.28, 0.2179, 61, 68.31, 43.02, 0.25622, 62, -70.12999, 18.19, 0.32248, 1, -502.09, -68.19, 0.07835, 4, 59, 390.81, 21.3, 0.11758, 60, 261.62, -3.66, 0.22607, 61, 114.55, 37.83, 0.29087, 62, -26.15, 30.34, 0.36547, 4, 59, 423.87, -11.11, 0.10536, 60, 291.46, -39.06, 0.21954, 61, 154.83, 14.99, 0.30098, 62, 19.91, 25.67, 0.37409, 4, 59, 456.68, -43.27, 0.09949, 60, 321.06, -74.19999, 0.21749, 61, 194.79, -7.66, 0.30788, 62, 65.62, 21.04, 0.37513, 4, 59, 480.34, -100.28, 0.10045, 60, 339.2, -133.2, 0.22026, 61, 232.3, -56.69, 0.31103, 62, 119.7, -8.68999, 0.36824, 4, 59, 424.34, -67.51999, 0.10379, 60, 286.57, -95.27, 0.23087, 61, 169.77, -39.4, 0.30828, 62, 55.51, -18.08, 0.35705, 4, 59, 387.08, -53.84, 0.11505, 60, 250.77, -78.11, 0.2454, 61, 130.24, -35.75, 0.30092, 62, 17.87, -30.67, 0.3386, 4, 59, 346.04, -38.78, 0.13471, 60, 211.34, -59.22, 0.26271, 61, 86.7, -31.72, 0.2888, 62, -23.59, -44.54, 0.31376, 5, 58, 449.17, 125.97, 0.02419, 59, 311.45, -35.25, 0.16384, 60, 175.89, -56.83, 0.2727, 61, 51.53, -43.14, 0.26317, 62, -52.88, -67.87, 0.27607, 5, 58, 418.38, 93.72, 0.05913, 59, 269.72, -40.64, 0.19681, 60, 135.19, -53.82, 0.27688, 61, 13.42, -53.11, 0.23219, 62, -82.03, -93.66, 0.23497, 5, 58, 390.82, 86.58, 0.10638, 59, 241.19, -39.8, 0.2354, 60, 105.59, -52.93, 0.27331, 61, -16.25, -62.16, 0.19459, 62, -108.34, -111.24, 0.19028, 5, 58, 364.8, 62.48, 0.14347, 59, 207.71, -42.14, 0.28099, 60, 73.33, -49.43, 0.26867, 61, -46.11, -70.49, 0.15764, 62, -129.51, -133.56, 0.1492, 5, 58, 345.49, 47.53, 0.18499, 59, 182.34, -50.62, 0.33114, 60, 45.87, -56.62, 0.25881, 61, -71.57, -84.96, 0.1174, 62, -150.85, -153.35, 0.10763, 5, 58, 319.95, 15.15, 0.23755, 59, 145.6, -61.95, 0.39396, 60, 9.60999, -63.26, 0.24619, 61, -101.06, -105.58, 0.06443, 62, -165.65, -187.83, 0.05784, 3, 58, 276.58, -30.61, 0.29942, 59, 85.52, -81.11, 0.46774, 60, -52.01, -76.62, 0.23283, 3, 58, 214.5, -70.36, 0.32855, 59, 11.97, -85.98, 0.48601, 60, -125.69, -74.48, 0.18543, 2, 58, 147.14, -113.5, 0.59565, 59, -67.83999, -91.26, 0.40433, 2, 2, -113.14, 135.84, 0.24192, 58, 91.72, -112.59, 0.75807, 2, 2, -42.12, 116.77, 0.14515, 58, 18.2, -111.17, 0.85484, 1, 2, 44.2, 107.1, 1, 2, 2, 140.09, 96.35, 0.22579, 6, 72.58999, 65.41, 0.7742, 4, 2, 137.69, 169.35, 0.05644, 6, 117.5, 123, 0.24355, 7, 78.3, 94.48, 0.2125, 8, 23.7, 91.74, 0.4875, 2, 7, 171.15, 111.98, 0.25, 8, 118.17, 93.15, 0.75, 1, 8, 158.96, -25.58, 1, 1, 1, -40.63, -86.01, 1, 3, 2, 67.33999, -86.66, 0.33215, 58, -137.02, 59.92, 0.08303, 1, 92.54, -90.61, 0.5848, 2, 2, 170.13, -66.29, 0.75, 6, -8.53, -78.72, 0.25, 2, 2, 231.74, -8.12, 0.4, 6, 76.03, -73.51999, 0.6, 4, 2, 222.04, 70.41, 0.17551, 6, 118.9, -7, 0.55823, 7, -6.58, -3.99, 0.17739, 8, -76.73, 9.18, 0.08884, 1, 8, 50.43, -46.56, 1, 1, 6, -9.88, 20.65, 1, 2, 2, -53.22, 20.53, 0.2, 58, 5.8, -15.09, 0.8, 3, 2, -180.71, 32.22, 0.08564, 58, 132.35, 4.23999, 0.56215, 59, -23.98, 19.01, 0.35219, 3, 58, 246.39, 57.53, 0.30273, 59, 101.61, 10.65, 0.46989, 60, -27.28, 13.2, 0.22737, 5, 58, 346.99, 126.85, 0.13479, 59, 223.17, 22.83, 0.28279, 60, 94.88, 13.77, 0.24481, 61, -47.85, -3.72, 0.17322, 62, -158.02, -73.16, 0.16438, 4, 59, 367.51, -9.96, 0.14656, 60, 235.45, -32.57, 0.23073, 61, 100.06, 1.62, 0.29607, 62, -24.81, -8.63, 0.32661, 4, 59, 440.24, -55.6, 0.10821, 60, 303.52, -84.91, 0.21897, 61, 182.07, -23.8, 0.31097, 62, 60.48, 1.14, 0.36182, 3, 6, 174.99, 22.22, 0.2, 7, 54.82, -19.14, 0.6, 8, -18.79999, -16.2, 0.2, 3, 58, 189.25, 30.83, 0.33253, 59, 38.68, 14.84, 0.48076, 60, -89.52, 23.34, 0.18669, 5, 58, 295.08, 91.08, 0.22891, 59, 160.45, 16.54, 0.38754, 60, 31.85, 13.48, 0.2306, 61, -106.86, -25.89, 0.08042, 62, -203.08, -117.24, 0.0725, 5, 58, 414.43, 146.25, 0.07359, 59, 291.61, 7.27, 0.20198, 60, 161.53, -8.2, 0.23762, 61, 22.27, -1.17999, 0.24024, 62, -94.86, -42.56, 0.24654, 4, 59, 404.01, -32.87, 0.12351, 60, 269.61, -58.84, 0.22261, 61, 141.21, -11.13, 0.30609, 62, 17.98, -3.72, 0.34777, 1, 8, 26.4, -166.06, 1, 1, 8, 87.21, -106.12, 1, 1, 8, 108.19, -49.62, 1, 2, 8, 61.73, -82.12999, 0.50021, 39, 4.42, 52.83, 0.49978, 2, 8, 22.84, -109.4, 0.50021, 39, 51.52, 46.73, 0.49978, 4, 6, 247.12, -50.52, 0.06545, 7, 60.86, -121.4, 0.06069, 8, -30.3, -118, 0.49079, 39, 96.58, 17.21999, 0.38305, 1, 2, 26.73, 14.8, 1, 2, 2, -107.97, 25.67, 0.24192, 58, 60.17, -6.91, 0.75807, 4, 2, 235.53, 102.96, 0.0761, 6, 150.1, 9.35, 0.35533, 7, 27.64, -12.34, 0.41675, 8, -44.43, -4.87, 0.1518, 3, 2, 227.15, 28.49, 0.31015, 6, 95.96, -42.46, 0.60548, 7, -47.23, -15.44, 0.08435, 2, 8, 5.19, -153.1, 0.87618, 39, 90.96, 71.21, 0.12381, 4, 6, 243.13, -60.59, 0.10669, 7, 51.21, -126.33, 0.09893, 8, -40.65, -121.21, 0.47072, 39, 105.71, 17.33, 0.32363, 1, 8, 23.69, -185.21, 1, 1, 8, 79.64, -175.94, 1, 1, 8, 93.96, -187.56, 1, 1, 8, 87.07, -206.55, 1, 1, 8, 64.19999, -216.74, 1, 1, 8, 52.23, -203.68, 1, 1, 8, 59.24, -187.03, 1, 1, 8, 64.26, -223.8, 1, 1, 8, 89.44, -211.41, 1, 1, 8, 102.04, -186.95, 1, 1, 8, 83.1, -166.14, 1, 1, 8, 46.84, -186.41, 1, 1, 8, 50.32, -204.36, 1, 1, 8, 41.7, -206.59, 1, 1, 8, 61.87, -230.97, 1, 5, 58, 374.97, 143.6, 0.10291, 59, 256.29, 17.42, 0.23985, 60, 127.43, 2.07, 0.2431, 61, -13.35, -3.05, 0.20854, 62, -128.14, -55.46, 0.20557, 4, 59, 327.21, 4.42, 0.17789, 60, 196.28, -19.32, 0.24248, 61, 58.71, -1.04999, 0.28055, 62, -62.24, -26.21, 0.29905, 5, 58, 318.32, 113.62, 0.17774, 59, 192.26, 20.14, 0.33383, 60, 64.19, 12.44, 0.24171, 61, -76.55, -13.67, 0.12849, 62, -182.56, -89.31, 0.11821, 2, 8, 56.98, -162.99, 0.89259, 39, 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": "mesh", "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 + "vertices": [ 2, 21, 3.06, 31.88, 0.51075, 6, 66.56, -109.48, 0.48924, 1, 21, 35.87, 35.62, 1, 2, 21, 60.94, 27.12, 0.8464, 22, 46.49, 31.12, 0.15358, 2, 21, 74.05, 22.67, 0.3492, 22, 36.5, 21.53, 0.65078, 3, 21, 67, 31.58, 0.10937, 22, 47.66, 23.68, 0.78125, 31, -40.93, -19.44, 0.10937, 2, 22, 86.98, 31.24, 0.65078, 31, -25.75, 17.61, 0.3492, 2, 22, 103.83, 34.49, 0.34375, 31, -19.24, 33.49, 0.65625, 2, 22, 114.04, 19.51, 0.10937, 31, -1.11, 33.84, 0.89062, 1, 31, 53.62, 34.88, 1, 1, 31, 96.03, -19.16, 1, 1, 31, 104.2, -47.31, 1, 1, 31, 71.33999, -23.98, 1, 1, 31, 81.39, -64.61, 1, 1, 31, 76.8, -68.81, 1, 1, 31, 46.65, -34.25, 1, 2, 22, 73.12999, -45.76, 0.10937, 31, 31.14, -36.12, 0.89062, 2, 22, 73.98, -26.9, 0.34375, 31, 15.82, -25.09, 0.65625, 2, 22, 65.1, -26.69, 0.65078, 31, 10.78, -32.41, 0.3492, 3, 21, 133.56, 9.13, 0.10937, 22, -2.94, -25.03, 0.78125, 31, -27.84, -88.47, 0.10937, 2, 21, 123.67, -14.42, 0.3492, 22, -19.29, -5.39, 0.65078, 2, 21, 97.41, -15.43, 0.8464, 22, -8.08, 18.37, 0.15358, 1, 21, 45.46, -17.43, 1, 2, 21, 40.68999, -27.17, 0.45035, 6, -1.69, -93.8, 0.54964, 2, 21, -2.74, -29.63, 0.44352, 6, 18.99, -72.93, 0.55646, 1, 6, 32.11, -48.45, 1, 1, 6, 57.56, -67.43, 1, 1, 6, 84.38, -87.42, 1, 2, 21, 16.44, 5.21, 0.7182, 6, 46.31, -101.86, 0.28178, 2, 21, -4.51, 5.32, 0.48851, 6, 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": "mesh", "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, 41, 42, 44, 43, 9, 10, 42, 43, 10, 41, 43, 42, 10, 13, 42, 11, 13, 10, 13, 11, 12, 13, 44, 42, 14, 15, 13, 45, 8, 9, 45, 40, 8, 16, 40, 45, 17, 40, 16, 16, 45, 15, 15, 45, 44, 45, 41, 44, 15, 44, 13, 45, 9, 43, 45, 43, 41, 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": [ 2, 25, 128.03, 88.47, 0.8504, 1, 158.83, -71.91, 0.14959, 2, 25, 219.55, 53.15, 0.77988, 26, -48.04, -38.58, 0.22011, 2, 25, 266.3, 35.09999, 0.53544, 26, -36.73, 10.22, 0.46455, 2, 25, 286.89, 9.79, 0.35166, 26, -14.56, 34.14, 0.64832, 2, 25, 281.54, -41.24, 0.09228, 26, 36.71, 36, 0.90771, 3, 25, 271.53, -136.86, 0.05786, 26, 132.77, 39.48, 0.71425, 27, 34.99, 78.76, 0.22787, 3, 26, 158.21, 55.17, 0.5308, 27, 52.65, 54.63, 0.38143, 28, 7.01, 85.54, 0.08776, 5, 26, 167.14, 99.49, 0.21498, 27, 97.55, 49.25, 0.35357, 28, 28.72, 45.87, 0.14219, 29, -21.26, 49.99, 0.22491, 30, -72.29, 25.96, 0.06431, 5, 26, 154.22, 105.55, 0.07537, 27, 102.57, 62.6, 0.23051, 28, 42.51, 49.55, 0.28379, 29, -7.06, 51.39, 0.27004, 30, -58.17, 28.03, 0.14026, 4, 27, 109.72, 83.39, 0.11607, 28, 64.08999, 55.23, 0.08123, 29, 15.12, 53.51, 0.36961, 30, -36.09, 31.19, 0.43307, 1, 30, 35.8, 41.81, 1, 1, 30, 128.11, 17.93, 1, 1, 30, 188.72, -29.42, 1, 2, 29, 93.29, -7.6, 0.47999, 30, 44.86, -26.17, 0.52, 2, 29, 133.17, -49.83, 0.776, 30, 86.69, -66.47, 0.22399, 2, 29, 78.78, -50.15, 0.76799, 30, 32.38, -69.36, 0.232, 1, 29, -4.91, -33.55, 1, 3, 27, 155.04, -5.13, 0.35917, 28, 17.87999, -32.5, 0.30632, 29, -44.62, -25.61, 0.33449, 4, 26, 254.98, 126.27, 0.10154, 27, 131.21, -36.2, 0.54211, 28, -21.24, -31.17, 0.20873, 29, -83.01999, -17.96999, 0.1476, 3, 26, 240.33, 7.81, 0.25586, 27, 11.94, -30.98, 0.61614, 28, -86.31, 68.9, 0.12797, 2, 26, 239.26, -23.1, 0.45486, 27, -18.95999, -32.37, 0.54513, 3, 25, 187.65, -209.73, 0.09777, 26, 216.66, -33.34999, 0.58892, 27, -30.97, -10.65, 0.3133, 2, 25, 163.85, -128.67, 0.19603, 26, 139.75, -68.26, 0.80396, 2, 25, 165.74, -94.49, 0.31962, 26, 105.59, -71.26, 0.68037, 2, 25, 166.39, -79.07, 0.46225, 26, 90.23, -72.76, 0.53774, 2, 25, 166.49, -74.17, 0.53785, 26, 85.42, -73.28, 0.46213, 2, 25, 141.54, -82.46, 0.73138, 26, 97.13, -96.82, 0.26861, 2, 25, 99.76, -97.08, 0.85324, 26, 117.34, -136.23, 0.14675, 2, 25, 45.01, -114.56, 0.83615, 1, -51.09, -135.29, 0.16384, 2, 25, -16.2, -74.76, 0.62989, 1, -42.95, -58.38, 0.3701, 2, 25, -74.73, -19.33, 0.31468, 1, -52.66, 17.54999, 0.68531, 2, 25, 1.67, 76.75, 0.25576, 1, 70.07, 18.78, 0.74423, 1, 25, 93.54, 4.13, 1, 2, 25, 185.14, -6.66, 0.75461, 26, 15.98, -64.26999, 0.24538, 2, 25, 217.11, -18.75, 0.50844, 26, 23.47, -30.93, 0.49154, 2, 25, 225.63, -32.91999, 0.32527, 26, 36.3, -20.5, 0.67472, 2, 25, 223, -84.73, 0.20192, 26, 87.96, -15.86, 0.79807, 3, 25, 235.61, -168.06, 0.0809, 26, 168.69, 8.29, 0.57147, 27, 6.74, 40.47, 0.34761, 3, 26, 191.79, 35.8, 0.32545, 27, 36, 19.62, 0.57243, 28, -31.14, 78.74, 0.10211, 4, 26, 206.64, 111.53, 0.10808, 27, 112.69, 10.82, 0.52067, 28, 6.25, 11.23, 0.23517, 29, -49.03, 19.43, 0.13606, 3, 27, 130.6, 26.41, 0.35067, 28, 29.35, 5.71, 0.28241, 29, -27.12, 10.25, 0.3669, 2, 29, 67.46, 3.16, 0.384, 30, 18.54999, -16.62999, 0.61599, 1, 30, 19.07, -14.51, 1, 2, 29, 36, 24.95, 0.384, 30, -13.89, 3.64, 0.61599, 2, 29, 86.23, -6.55, 0.48799, 30, 37.75, -25.46, 0.512, 4, 26, 164.9, 153.55, 0.02263, 27, 151.18, 56, 0.23908, 28, 65.44, 5.55, 0.19254, 29, 8.45, 4.27, 0.54574, 2, 25, -9.28, -17.5, 0.59605, 1, 7.72, -30.85, 0.40393, 2, 25, 195.9, -53.81, 0.42368, 26, 61.11, -47.06, 0.5763, 2, 25, 190.1, -48.45, 0.53231, 26, 56.61, -53.56, 0.46768, 2, 25, 161.26, -48.26, 0.79873, 26, 60.44, -82.12999, 0.20126, 2, 25, 120.37, -58.54, 0.85455, 26, 76.31, -121.18, 0.14544, 2, 25, 197.37, -69.23, 0.3355, 26, 76.17, -43.46, 0.66449 ], + "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": "mesh", "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, 44, 53.94, 69.15, 1, 1, 44, 126.23, 67.31, 1, 2, 44, 226.42, 31.13, 0.9375, 45, -30.87, -1.11, 0.0625, 2, 44, 240.84, 25.33, 0.7, 45, -25.64, 13.52, 0.3, 2, 44, 246.67, 8.05, 0.3, 45, -8.60999, 20.02, 0.7, 3, 44, 240.81, -115.25, 0.0625, 45, 114.8, 19.01, 0.875, 46, 9.47999, 59.16, 0.0625, 2, 45, 131.07, 29.69, 0.7, 46, 22.11, 44.35, 0.3, 2, 45, 146.06, 39.54, 0.3, 46, 33.75999, 30.71, 0.7, 3, 45, 152.6, 65.01, 0.12566, 46, 59.85, 27.41, 0.75203, 47, 15.85, 48.05, 0.12229, 3, 45, 154.28, 71.58999, 0.05444, 46, 66.58999, 26.56, 0.78401, 47, 16.71999, 41.31, 0.16154, 3, 46, 71.19, 35.75999, 0.64716, 47, 26.78, 39.16999, 0.13169, 48, -67.32, 18.95999, 0.22114, 3, 46, 87.93, 69.21, 0.0625, 47, 63.37, 31.39, 0.675, 48, -30.17, 23.3, 0.26249, 2, 47, 113.82, 35.72, 0.1038, 48, 16.23, 43.56, 0.89619, 1, 48, 128.14, 12.02, 1, 1, 48, 161.85, -15.81, 1, 2, 47, 90.98, -23.36, 0.0138, 48, 13.52, -19.71999, 0.98619, 2, 47, 62.97, -25.81, 0.7, 48, -12.23, -31.02, 0.3, 3, 46, 115.12, -1.33, 0.08333, 47, 1.93, -12.66, 0.83333, 48, -74.26, -38.09999, 0.08333, 2, 46, 106.11, -23.53, 0.3, 47, -21.8, -9.52, 0.7, 2, 46, 97.43, -44.9, 0.7, 47, -44.67, -6.51, 0.3, 2, 46, 84.26, -40.68999, 0.9375, 47, -43.9, 7.29, 0.0625, 1, 46, 49.18, -29.46, 1, 2, 45, 206.75, 5.37, 0.13333, 46, 7.44, -33.77, 0.86666, 2, 45, 219.64, -20.52, 0.36111, 46, -16.64, -49.8, 0.63888, 2, 45, 208.4, -37.82, 0.72083, 46, -35.22, -40.82, 0.27916, 2, 45, 200.49, -50.02, 0.91666, 46, -48.31, -34.48, 0.08333, 1, 45, 161.1, -36.97, 1, 2, 44, 150.1, -116.76, 0.08333, 45, 119.88, -71.55, 0.91666, 2, 44, 154.99, -70.71, 0.42846, 45, 73.68, -68.47, 0.57153, 2, 44, 150.3, -65.26999, 0.35604, 45, 68.42, -73.36, 0.64395, 2, 44, 146.51, -60.87, 0.59147, 45, 64.17, -77.32, 0.40852, 2, 44, 115.12, -75.08, 0.8446, 45, 79.61, -108.13, 0.15538, 1, 44, 63.33, -98.53, 1, 1, 44, 21.78, -94.55, 1, 1, 44, -66.69, -32.04, 1, 1, 44, -6.62, 52.97, 1, 1, 44, 58.14, -6, 1, 1, 44, 121.17, 2.44, 1, 1, 44, 188.87, -12.1, 1, 2, 44, 197.11, -18.42, 0.7, 45, 19.79, -28.44, 0.3, 2, 44, 203.98, -28.61, 0.3, 45, 29.69, -21.17, 0.7, 1, 45, 136.67, -7.42, 1, 2, 45, 164.32, 0.66, 0.7, 46, -2.53, 7.73, 0.3, 2, 45, 177.97, 21.57, 0.25, 46, 19.92, -3.19, 0.75, 1, 46, 71.93, -6.29, 1, 2, 46, 79.66, -3.72, 0.7, 47, -9.28, 21.04, 0.3, 2, 46, 87.98, 7.25, 0.3125, 47, 3.42, 15.76, 0.6875, 3, 46, 114.16, 61.85, 0.04, 47, 62.84, 4.15, 0.7, 48, -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": "mesh", + "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": [ 14, 13, 0, 14, 0, 1, 5, 3, 4, 10, 14, 1, 11, 14, 10, 6, 3, 5, 2, 10, 1, 7, 2, 3, 7, 3, 6, 2, 8, 10, 8, 9, 10, 2, 7, 8, 14, 12, 13, 11, 12, 14 ], + "vertices": [ 1, 39, 28.6, 68.85, 1, 1, 39, 69.65, 38.95, 1, 1, 39, 150.72, 72.87999, 1, 1, 39, 186.16, 74.79, 1, 1, 39, 199.76, 159.69, 1, 1, 39, 213.35, 148.16, 1, 1, 39, 242.43, 74.42, 1, 1, 39, 230.31, -13.08, 1, 1, 39, 189.56, -71.99, 1, 1, 39, 132.76, -105.6, 1, 1, 39, 83.71, -55.39, 1, 2, 8, -18.31, 12.1, 0.67732, 39, -0.04, -70.76, 0.32267, 1, 8, 113.44, 16.95, 1, 1, 8, 116.36, -62.48, 1, 1, 39, 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": "mesh", "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, 52, 3.9, -3.27, 1, 1, 52, 4.25, 15.05, 1, 1, 52, 13.24, 20.28, 1, 2, 52, 23.42, 21.2, 0.7, 53, -15.2, 21.22, 0.3, 3, 52, 41.11, 22.87, 0.3, 53, 2.48, 22.89, 0.6375, 54, -33.83, 24.96, 0.0625, 3, 52, 52.07, 21.72, 0.0625, 53, 13.43, 21.74, 0.6375, 54, -22.97, 23.11, 0.3, 2, 53, 18.39, 20.76, 0.25, 54, -18.09, 21.82, 0.75, 1, 54, -18.76, 33.09, 1, 1, 54, 49.92, 31.57, 1, 1, 54, 53.21, 25, 1, 1, 54, 53.11, -27.48, 1, 1, 54, 49.74, -31.27, 1, 1, 54, -20.73, -36.75999, 1, 1, 54, -23.82, -22.28, 1, 3, 52, 53.48, -24.61, 0.0625, 53, 14.84, -24.59, 0.575, 54, -24.51, -23.21, 0.3625, 3, 52, 41.43999, -26.12, 0.3, 53, 2.81, -26.09, 0.6375, 54, -36.62, -23.95, 0.0625, 2, 52, 24.38, -26.12, 0.7, 53, -14.24, -26.1, 0.3, 1, 52, 5.57, -26.12, 1, 1, 52, 3.54, -22.64, 1, 1, 54, -23.08, -0.04, 1, 2, 52, 41.66, -1.72, 0.3125, 53, 3.03, -1.7, 0.6875, 2, 52, 23.85, -2.46, 0.7, 53, -14.77, -2.44, 0.3, 2, 53, 13.95, -1.5, 0.64582, 54, -23.94, -0.11, 0.35416 ], + "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": "mesh", "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 + "vertices": [ 2, 63, 3.63, 27.04, 0.6875, 64, -47.26, 33.87, 0.3125, 3, 63, 39.09, 19.45, 0.3125, 64, -13.41, 20.86, 0.625, 65, -51.54, 33.37, 0.0625, 3, 63, 71.56, 19.02, 0.0625, 64, 18.58, 15.39, 0.625, 65, -21.56, 20.92, 0.3125, 2, 64, 55.03, 16.85, 0.3125, 65, 14.29, 14.23, 0.6875, 2, 64, 93.34, 18.39, 0.08333, 65, 51.98, 7.21, 0.91666, 1, 65, 56.09, -4.5, 1, 2, 64, 85.06, -1.49, 0.08333, 65, 39.48, -10.33, 0.91666, 2, 64, 54.22, -9.18, 0.3125, 65, 7.71, -10.96, 0.6875, 3, 63, 75.14, -14.72, 0.0625, 64, 16.87, -18.5, 0.625, 65, -30.77, -11.73, 0.3125, 3, 63, 38.8, -25.8, 0.3125, 64, -20.74, -23.8, 0.625, 65, -68.62, -8.53, 0.0625, 2, 63, 2.4, -35.77, 0.6875, 64, -58.25, -27.99, 0.3125, 2, 63, -17.28, -40.62, 0.91666, 64, -78.44999, -29.71, 0.08333, 1, 63, -59.91, 8.18, 1, 2, 63, -26.13, 37.68999, 0.91666, 64, -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": "mesh", "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 + "vertices": [ 2, 56, 24.71, 8.03, 0.80344, 57, -17.42, 11.02, 0.19655, 2, 56, 37.95, 8.04, 0.59978, 57, -4.36, 8.87, 0.40021, 2, 56, 50.88, 8.04, 0.36895, 57, 8.39, 6.77, 0.63103, 2, 56, 65.92, 12.27, 0.17748, 57, 23.91, 8.47999, 0.82251, 2, 56, 81.72, 16.7, 0.05943, 57, 40.23, 10.28, 0.94056, 2, 56, 98.82, 25.04, 0.01209, 57, 58.46, 15.71, 0.9879, 2, 56, 114.44, 11.57, 0.00191, 57, 71.67, -0.11, 0.99808, 2, 56, 100.47, -4.61, 0.01816, 57, 55.25, -13.81, 0.98182, 2, 56, 78.79, -4.14, 0.07487, 57, 33.93999, -9.81, 0.92512, 2, 56, 65.83, -6.24, 0.2028, 57, 20.81, -9.76, 0.79719, 2, 56, 49.78, -8.83, 0.39971, 57, 4.55, -9.7, 0.60028, 2, 56, 37.93, -10.97, 0.62658, 57, -7.48, -9.88, 0.37341, 2, 56, 25.85, -13.15, 0.82034, 57, -19.75, -10.06, 0.17965, 2, 56, 0.25, -18.03, 0.95288, 57, -45.81, -10.7, 0.04711, 2, 56, -17.83, -2.43, 0.97709, 57, -61.11, 7.63, 0.0229, 2, 56, 1.57, 20.07, 0.94774, 57, -38.29, 26.67, 0.05225, 2, 56, 10.84, -1.23, 0.97709, 57, -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,7 +480,1179 @@ } }, "animations": { - "empty": {}, + "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 } + ] + } + } + }, "gungrab": { "slots": { "front_hand": { @@ -439,13 +1727,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 } ] } }, @@ -552,9 +1834,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 +1862,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 +1915,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 +1925,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 +1973,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 +2106,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,36 +2233,43 @@ }, "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": { "rotate": [ - { "time": 0, "angle": 44.18 }, + { "time": 0, "angle": 36.9 }, { "time": 0.0666, "angle": 7.88 }, { "time": 0.1333, "angle": 4.66 }, { "time": 0.4, "angle": 7.59 }, { "time": 0.5333, "angle": 8.08 }, { "time": 0.6666, "angle": -67.33 }, { "time": 0.7333, "angle": -65.23 }, - { "time": 1, "angle": 42.33 }, - { "time": 1.0666, "angle": 44.18 } + { "time": 1, "angle": 27.74 }, + { "time": 1.0666, "angle": 36.9 } ], "translate": [ { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, @@ -1098,23 +2369,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": { @@ -1132,7 +2419,7 @@ }, "front_foot3": { "rotate": [ - { "time": 0, "angle": 27.59 }, + { "time": 0, "angle": -1.65 }, { "time": 0.0666, "angle": -5.29 }, { "time": 0.1333, "angle": -3.94 }, { "time": 0.2666, "angle": -3.81 }, @@ -1141,8 +2428,8 @@ { "time": 0.6666, "angle": -73.63 }, { "time": 0.7333, "angle": -102.81 }, { "time": 0.8333, "angle": -41.3 }, - { "time": 1, "angle": 27.59 }, - { "time": 1.0666, "angle": 27.59 } + { "time": 1, "angle": 10.93 }, + { "time": 1.0666, "angle": -1.65 } ], "translate": [ { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, @@ -1283,21 +2570,21 @@ ] } }, - "ffd": { + "deform": { "default": { "raptor_body": { "raptor_body": [ { "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": 314, + "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, -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": 314, + "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, -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 +2595,18 @@ { "time": 0.2666 }, { "time": 0.5333, - "offset": 216, - "vertices": [ -2.23, 21.95, 21.54, -4.75 ] + "offset": 138, + "vertices": [ -2.23608, 21.95403, 21.54915, -4.7554 ] }, { "time": 0.6, - "offset": 216, - "vertices": [ 7.17, 15.14, 15.26, -6.91 ] + "offset": 138, + "vertices": [ 7.17962, 15.14358, 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": 110, + "vertices": [ -0.82485, 0.73406, -0.01284, -1.10443, 0, 0, 0, 0, 1.4866, -2.59426, 0.98071, 2.82342, 2.7366, -10.49935, 6.12506, 8.95282, -2.60873, -2.28384, 3.43417, -0.47045, -2.28305, -4.76037, 5.08892, 1.40078, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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 ] }, { "time": 0.8, "curve": "stepped" }, { "time": 0.9666, "curve": "stepped" }, diff --git a/spine-sfml/data/raptor.png b/spine-sfml/data/raptor.png index 861dbce1a..625072a67 100644 Binary files a/spine-sfml/data/raptor.png and b/spine-sfml/data/raptor.png differ diff --git a/spine-sfml/data/spineboy-shear.json b/spine-sfml/data/spineboy-shear.json deleted file mode 100644 index dd2607b4f..000000000 --- a/spine-sfml/data/spineboy-shear.json +++ /dev/null @@ -1,183 +0,0 @@ -{ -"skeleton": { "hash": "8JOt0KF63FuqjG/j+ncweKjt3Vc", "spine": "9.0.01", "width": 505.42, "height": 723.02, "images": "./images/" }, -"bones": [ - { "name": "root" }, - { "name": "hip", "parent": "root", "length": 338.72, "y": 247.47 }, - { "name": "shoot target", "parent": "root", "rotation": 1.22, "x": 578.73, "y": 350.08, "color": "ff3f00ff" }, - { "name": "aimer", "parent": "hip", "length": 350.93, "rotation": 1.57, "x": -5.73, "y": 98.76 }, - { "name": "aiming gun target", "parent": "aimer", "rotation": 0.33, "x": 317.91, "y": -78.74, "color": "ff3f00ff" }, - { "name": "free gun bone", "parent": "root", "rotation": -37.23, "x": 41.13, "y": 276.2 }, - { "name": "torso", "parent": "hip", "length": 127.55, "rotation": 103.82, "x": -1.61, "y": 4.9, "color": "e0da19ff" }, - { "name": "front_upper_arm", "parent": "torso", "length": 69.45, "rotation": 168.37, "x": 103.75, "y": 19.32, "color": "00ff04ff" }, - { - "name": "front_bracer", - "parent": "front_upper_arm", - "length": 40.57, - "rotation": 18.29, - "x": 68.8, - "y": -0.68, - "color": "00ff04ff" - }, - { "name": "front_fist", "parent": "front_bracer", "length": 65.38, "rotation": 29.28, "x": 40.56, "y": 0.19, "color": "00ff04ff" }, - { "name": "front_thigh", "parent": "hip", "length": 74.8, "rotation": -95.51, "x": -17.45, "y": -11.64, "color": "00ff04ff" }, - { - "name": "front_shin", - "parent": "front_thigh", - "length": 128.76, - "rotation": -2.21, - "x": 78.69, - "y": 1.6, - "inheritScale": false, - "color": "00ff04ff" - }, - { "name": "front_foot", "parent": "front_shin", "length": 91.34, "rotation": 77.9, "x": 128.75, "y": -0.33, "color": "00ff04ff" }, - { "name": "rear_upper_arm", "parent": "torso", "length": 51.93, "rotation": -169.55, "x": 92.35, "y": -19.22, "color": "ff000dff" }, - { "name": "rear_bracer", "parent": "rear_upper_arm", "length": 34.55, "rotation": 23.15, "x": 51.35, "color": "ff000dff" }, - { "name": "gun", "parent": "rear_bracer", "length": 43.1, "rotation": 5.34, "x": 34.42, "y": -0.45, "color": "ff000dff" }, - { "name": "gunTip", "parent": "gun", "rotation": 6.83, "x": 201.03, "y": 52.12, "color": "ff000dff" }, - { "name": "neck", "parent": "torso", "length": 25.45, "rotation": -31.53, "x": 127.49, "y": -0.3, "color": "e0da19ff" }, - { "name": "head", "parent": "neck", "length": 263.57, "rotation": 23.18, "x": 27.66, "y": -0.25, "color": "e0da19ff" }, - { "name": "rear_thigh", "parent": "hip", "length": 85.71, "rotation": -72.54, "x": 8.91, "y": -5.62, "color": "ff000dff" }, - { "name": "rear_shin", "parent": "rear_thigh", "length": 121.87, "rotation": -19.83, "x": 86.1, "y": -1.32, "color": "ff000dff" }, - { "name": "rear_foot", "parent": "rear_shin", "length": 82.57, "rotation": 69.3, "x": 121.45, "y": -0.75, "color": "ff000dff" } -], -"ik": [ - { - "name": "aiming constraint", - "bones": [ "aimer" ], - "target": "shoot target", - "mix": 0 - }, - { - "name": "aiming gun constraint", - "bones": [ "rear_upper_arm", "rear_bracer" ], - "target": "aiming gun target", - "mix": 0 - } -], -"transform": [ - { "name": "gun flying", "bone": "gun", "target": "free gun bone", "rotateMix": 0, "translateMix": 0, "scaleMix": 0, "shearMix": 0 } -], -"slots": [ - { "name": "rear_upper_arm", "bone": "rear_upper_arm", "attachment": "rear_upper_arm" }, - { "name": "rear_bracer", "bone": "rear_bracer", "attachment": "rear_bracer" }, - { "name": "gun", "bone": "gun", "attachment": "gun" }, - { "name": "rear_foot", "bone": "rear_foot", "attachment": "rear_foot" }, - { "name": "rear_thigh", "bone": "rear_thigh", "attachment": "rear_thigh" }, - { "name": "rear_shin", "bone": "rear_shin", "attachment": "rear_shin" }, - { "name": "neck", "bone": "neck", "attachment": "neck" }, - { "name": "torso", "bone": "torso", "attachment": "torso" }, - { "name": "front_upper_arm", "bone": "front_upper_arm", "attachment": "front_upper_arm" }, - { "name": "head", "bone": "head", "attachment": "head" }, - { "name": "eye", "bone": "head", "attachment": "eye_indifferent" }, - { "name": "front_thigh", "bone": "front_thigh", "attachment": "front_thigh" }, - { "name": "front_foot", "bone": "front_foot", "attachment": "front_foot" }, - { "name": "front_shin", "bone": "front_shin", "attachment": "front_shin" }, - { "name": "mouth", "bone": "head", "attachment": "mouth_smile" }, - { "name": "goggles", "bone": "head", "attachment": "goggles" }, - { "name": "front_bracer", "bone": "front_bracer", "attachment": "front_bracer" }, - { "name": "front_fist", "bone": "front_fist", "attachment": "front_fist_closed" }, - { "name": "muzzle", "bone": "gunTip", "blend": "additive" }, - { "name": "head-bb", "bone": "head" } -], -"skins": { - "default": { - "eye": { - "eye_indifferent": { "x": 85.72, "y": -28.18, "rotation": -70.63, "width": 93, "height": 89 }, - "eye_surprised": { "x": 85.72, "y": -28.18, "rotation": -70.63, "width": 93, "height": 89 } - }, - "front_bracer": { - "front_bracer": { "x": 12.03, "y": -1.67, "rotation": 79.59, "width": 58, "height": 80 } - }, - "front_fist": { - "front_fist_closed": { "x": 35.71, "y": -4.54, "rotation": 50.3, "width": 75, "height": 82 }, - "front_fist_open": { "x": 40.11, "y": -4.04, "rotation": 50.3, "width": 86, "height": 87 } - }, - "front_foot": { - "front_foot": { "x": 29.51, "y": 7.83, "rotation": 18.68, "width": 126, "height": 69 }, - "front_foot_bend1": { "x": 29.51, "y": 7.83, "rotation": 18.68, "width": 128, "height": 70 }, - "front_foot_bend2": { "x": 16.07, "y": 13.83, "rotation": 18.68, "width": 108, "height": 93 } - }, - "front_shin": { - "front_shin": { "x": 55.11, "y": -3.54, "rotation": 96.59, "width": 82, "height": 184 } - }, - "front_thigh": { - "front_thigh": { "x": 42.47, "y": 4.44, "rotation": 84.86, "width": 48, "height": 112 } - }, - "front_upper_arm": { - "front_upper_arm": { "x": 28.3, "y": 7.37, "rotation": 97.89, "width": 54, "height": 97 } - }, - "goggles": { - "goggles": { "x": 97.07, "y": 6.54, "rotation": -70.63, "width": 261, "height": 166 } - }, - "gun": { - "gun": { "x": 77.29, "y": 16.39, "rotation": 60.82, "width": 210, "height": 203 } - }, - "head": { - "head": { "x": 128.95, "y": 0.29, "rotation": -70.63, "width": 271, "height": 298 } - }, - "head-bb": { - "head": { - "type": "boundingbox", - "vertexCount": 6, - "vertices": [ -19.14, -70.3, 40.8, -118.07, 257.77, -115.61, 285.16, 57.18, 120.77, 164.95, -5.06, 76.94 ] - } - }, - "mouth": { - "mouth_grind": { "x": 23.68, "y": -32.23, "rotation": -70.63, "width": 93, "height": 59 }, - "mouth_oooo": { "x": 23.68, "y": -32.23, "rotation": -70.63, "width": 93, "height": 59 }, - "mouth_smile": { "x": 23.68, "y": -32.23, "rotation": -70.63, "width": 93, "height": 59 } - }, - "muzzle": { - "muzzle": { "x": 18.25, "y": 5.44, "rotation": 0.15, "width": 462, "height": 400 } - }, - "neck": { - "neck": { "x": 9.76, "y": -3.01, "rotation": -55.22, "width": 36, "height": 41 } - }, - "rear_bracer": { - "rear_bracer": { "x": 11.15, "y": -2.2, "rotation": 66.17, "width": 56, "height": 72 } - }, - "rear_foot": { - "rear_foot": { "x": 31.51, "y": 3.57, "rotation": 23.07, "width": 113, "height": 60 }, - "rear_foot_bend1": { "x": 34.39, "y": 4.8, "rotation": 23.07, "width": 117, "height": 66 }, - "rear_foot_bend2": { "x": 30.38, "y": 12.62, "rotation": 23.07, "width": 103, "height": 83 } - }, - "rear_shin": { - "rear_shin": { "x": 58.29, "y": -2.75, "rotation": 92.37, "width": 75, "height": 178 } - }, - "rear_thigh": { - "rear_thigh": { "x": 33.1, "y": -4.11, "rotation": 72.54, "width": 65, "height": 104 } - }, - "rear_upper_arm": { - "rear_upper_arm": { "x": 21.12, "y": 4.08, "rotation": 89.32, "width": 47, "height": 87 } - }, - "torso": { - "torso": { "x": 63.61, "y": 7.12, "rotation": -94.53, "width": 98, "height": 180 } - } - } -}, -"events": { - "footstep": {}, - "headAttach": { "int": 3, "float": 4 }, - "headBehind": { "int": 5, "float": 6, "string": "setup" }, - "headPop": { "int": 1, "float": 2 } -}, -"animations": { - "shear": { - "bones": { - "head": { - "shear": [ - { "time": 0, "x": 0, "y": 0 }, - { "time": 0.5, "x": 45, "y": 0 }, - { "time": 1, "x": 0.59, "y": 0 } - ] - } - }, - "transform": { - "gun flying": [ - { "time": 0 } - ] - } - } -} -} \ No newline at end of file diff --git a/spine-sfml/data/spineboy.atlas b/spine-sfml/data/spineboy.atlas index 19c0934b1..e9500cc4a 100644 --- a/spine-sfml/data/spineboy.atlas +++ b/spine-sfml/data/spineboy.atlas @@ -1,194 +1,195 @@ spineboy.png +size: 1024,1024 format: RGBA8888 filter: Linear,Linear repeat: none eye_indifferent - rotate: true - xy: 389, 5 - size: 56, 53 - orig: 56, 53 + rotate: false + xy: 550, 694 + size: 93, 89 + orig: 93, 89 offset: 0, 0 index: -1 eye_surprised rotate: false - xy: 580, 34 - size: 56, 53 - orig: 56, 53 + xy: 834, 856 + size: 93, 89 + orig: 93, 89 offset: 0, 0 index: -1 front_bracer rotate: false - xy: 732, 85 - size: 35, 48 - orig: 35, 48 + xy: 678, 774 + size: 58, 80 + orig: 58, 80 offset: 0, 0 index: -1 front_fist_closed - rotate: false - xy: 556, 91 - size: 45, 49 - orig: 45, 49 + rotate: true + xy: 466, 593 + size: 75, 82 + orig: 75, 82 offset: 0, 0 index: -1 front_fist_open rotate: false - xy: 668, 32 - size: 52, 52 - orig: 52, 52 + xy: 550, 605 + size: 86, 87 + orig: 86, 87 offset: 0, 0 index: -1 front_foot rotate: false - xy: 924, 201 - size: 76, 41 - orig: 76, 41 + xy: 550, 785 + size: 126, 69 + orig: 126, 69 offset: 0, 0 index: -1 front_foot_bend1 - rotate: false - xy: 845, 200 - size: 77, 42 - orig: 77, 42 + rotate: true + xy: 375, 492 + size: 128, 70 + orig: 128, 70 offset: 0, 0 index: -1 front_foot_bend2 - rotate: false - xy: 778, 186 - size: 65, 56 - orig: 65, 56 + rotate: true + xy: 275, 330 + size: 108, 93 + orig: 108, 93 offset: 0, 0 index: -1 front_shin - rotate: true - xy: 444, 91 - size: 49, 110 - orig: 49, 110 + rotate: false + xy: 466, 670 + size: 82, 184 + orig: 82, 184 offset: 0, 0 index: -1 front_thigh - rotate: true - xy: 603, 89 - size: 29, 67 - orig: 29, 67 + rotate: false + xy: 214, 208 + size: 48, 112 + orig: 48, 112 offset: 0, 0 index: -1 front_upper_arm - rotate: true - xy: 672, 86 - size: 32, 58 - orig: 32, 58 + rotate: false + xy: 214, 109 + size: 54, 97 + orig: 54, 97 offset: 0, 0 index: -1 goggles rotate: false - xy: 444, 142 - size: 157, 100 - orig: 157, 100 + xy: 466, 856 + size: 261, 166 + orig: 261, 166 offset: 0, 0 index: -1 gun rotate: false - xy: 603, 120 - size: 126, 122 - orig: 126, 122 + xy: 2, 117 + size: 210, 203 + orig: 210, 203 offset: 0, 0 index: -1 head rotate: false - xy: 279, 63 - size: 163, 179 - orig: 163, 179 + xy: 2, 322 + size: 271, 298 + orig: 271, 298 offset: 0, 0 index: -1 mouth_grind rotate: false - xy: 845, 163 - size: 56, 35 - orig: 56, 35 + xy: 929, 896 + size: 93, 59 + orig: 93, 59 offset: 0, 0 index: -1 mouth_oooo rotate: false - xy: 842, 126 - size: 56, 35 - orig: 56, 35 + xy: 929, 835 + size: 93, 59 + orig: 93, 59 offset: 0, 0 index: -1 mouth_smile rotate: false - xy: 769, 97 - size: 56, 35 - orig: 56, 35 + xy: 447, 532 + size: 93, 59 + orig: 93, 59 offset: 0, 0 index: -1 muzzle rotate: false - xy: 2, 2 - size: 275, 240 - orig: 277, 240 + xy: 2, 622 + size: 462, 400 + orig: 462, 400 offset: 0, 0 index: -1 neck rotate: false - xy: 903, 173 - size: 22, 25 - orig: 22, 25 + xy: 796, 819 + size: 36, 41 + orig: 36, 41 offset: 0, 0 index: -1 rear_bracer rotate: false - xy: 722, 40 - size: 34, 43 - orig: 34, 43 + xy: 738, 788 + size: 56, 72 + orig: 56, 72 offset: 0, 0 index: -1 rear_foot - rotate: false - xy: 444, 11 - size: 68, 36 - orig: 68, 36 + rotate: true + xy: 2, 2 + size: 113, 60 + orig: 113, 60 offset: 0, 0 index: -1 rear_foot_bend1 rotate: false - xy: 444, 49 - size: 70, 40 - orig: 70, 40 + xy: 64, 49 + size: 117, 66 + orig: 117, 66 offset: 0, 0 index: -1 rear_foot_bend2 rotate: false - xy: 778, 134 - size: 62, 50 - orig: 62, 50 + xy: 729, 862 + size: 103, 83 + orig: 103, 83 offset: 0, 0 index: -1 rear_shin - rotate: false - xy: 731, 135 - size: 45, 107 - orig: 45, 107 + rotate: true + xy: 729, 947 + size: 75, 178 + orig: 75, 178 offset: 0, 0 index: -1 rear_thigh rotate: true - xy: 516, 50 - size: 39, 62 - orig: 39, 62 + xy: 909, 957 + size: 65, 104 + orig: 65, 104 offset: 0, 0 index: -1 rear_upper_arm - rotate: false - xy: 638, 35 - size: 28, 52 - orig: 28, 52 + rotate: true + xy: 447, 483 + size: 47, 87 + orig: 47, 87 offset: 0, 0 index: -1 torso - rotate: true - xy: 279, 2 - size: 59, 108 - orig: 59, 108 + rotate: false + xy: 275, 440 + size: 98, 180 + orig: 98, 180 offset: 0, 0 index: -1 diff --git a/spine-sfml/data/spineboy.json b/spine-sfml/data/spineboy.json index 2e422677a..88bafe6a7 100644 --- a/spine-sfml/data/spineboy.json +++ b/spine-sfml/data/spineboy.json @@ -1,39 +1,31 @@ { +"skeleton": { "hash": "rPoYyBLFG6F0CGZ5wsUEBKDJU9U", "spine": "3.3.07", "width": 470.71, "height": 731.57, "images": "./images/" }, "bones": [ { "name": "hip", "y": 247.47 }, - { "name": "front_thigh", "parent": "hip", "length": 74.8, "x": -17.45, "y": -11.64, "rotation": -95.51, "color": "00ff04ff" }, - { "name": "rear_thigh", "parent": "hip", "length": 85.71, "x": 8.91, "y": -5.62, "rotation": -72.54, "color": "ff000dff" }, - { "name": "torso", "parent": "hip", "length": 127.55, "x": -1.61, "y": 4.9, "rotation": 103.82, "color": "e0da19ff" }, - { - "name": "front_shin", - "parent": "front_thigh", - "length": 128.76, - "x": 78.69, - "y": 1.6, - "rotation": -2.21, - "inheritScale": false, - "color": "00ff04ff" - }, - { "name": "front_upper_arm", "parent": "torso", "length": 69.45, "x": 103.75, "y": 19.32, "rotation": 168.37, "color": "00ff04ff" }, - { "name": "neck", "parent": "torso", "length": 25.45, "x": 127.49, "y": -0.3, "rotation": -31.53, "color": "e0da19ff" }, - { "name": "rear_shin", "parent": "rear_thigh", "length": 121.87, "x": 86.1, "y": -1.32, "rotation": -19.83, "color": "ff000dff" }, - { "name": "rear_upper_arm", "parent": "torso", "length": 51.93, "x": 92.35, "y": -19.22, "rotation": -169.55, "color": "ff000dff" }, + { "name": "torso", "parent": "hip", "length": 127.55, "rotation": 103.82, "x": -1.61, "y": 4.9, "color": "e0da19ff" }, + { "name": "front_upper_arm", "parent": "torso", "length": 69.45, "rotation": 168.37, "x": 103.75, "y": 19.32, "color": "00ff04ff" }, { "name": "front_bracer", "parent": "front_upper_arm", "length": 40.57, + "rotation": 18.29, "x": 68.8, "y": -0.68, - "rotation": 18.29, "color": "00ff04ff" }, - { "name": "front_foot", "parent": "front_shin", "length": 91.34, "x": 128.75, "y": -0.33, "rotation": 77.9, "color": "00ff04ff" }, - { "name": "head", "parent": "neck", "length": 263.57, "x": 27.66, "y": -0.25, "rotation": 23.18, "color": "e0da19ff" }, - { "name": "rear_bracer", "parent": "rear_upper_arm", "length": 34.55, "x": 51.35, "rotation": 23.15, "color": "ff000dff" }, - { "name": "rear_foot", "parent": "rear_shin", "length": 82.57, "x": 121.45, "y": -0.75, "rotation": 69.3, "color": "ff000dff" }, - { "name": "front_fist", "parent": "front_bracer", "length": 65.38, "x": 40.56, "y": 0.19, "rotation": 12.43, "color": "00ff04ff" }, - { "name": "gun", "parent": "rear_bracer", "length": 43.1, "x": 34.42, "y": -0.45, "rotation": 5.34, "color": "ff000dff" }, - { "name": "gunTip", "parent": "gun", "x": 201.04, "y": 52.13, "rotation": 6.83, "color": "ff000dff" } + { "name": "front_fist", "parent": "front_bracer", "length": 65.38, "rotation": 12.43, "x": 40.56, "y": 0.19, "color": "00ff04ff" }, + { "name": "front_thigh", "parent": "hip", "length": 74.8, "rotation": -95.51, "x": -17.45, "y": -11.64, "color": "00ff04ff" }, + { "name": "front_shin", "parent": "front_thigh", "length": 128.76, "rotation": -2.21, "x": 78.69, "y": 1.6, "color": "00ff04ff" }, + { "name": "front_foot", "parent": "front_shin", "length": 91.34, "rotation": 77.9, "x": 128.75, "y": -0.33, "color": "00ff04ff" }, + { "name": "rear_upper_arm", "parent": "torso", "length": 51.93, "rotation": -169.55, "x": 92.35, "y": -19.22, "color": "ff000dff" }, + { "name": "rear_bracer", "parent": "rear_upper_arm", "length": 34.55, "rotation": 23.15, "x": 51.35, "color": "ff000dff" }, + { "name": "gun", "parent": "rear_bracer", "length": 43.1, "rotation": 5.34, "x": 34.42, "y": -0.45, "color": "ff000dff" }, + { "name": "gunTip", "parent": "gun", "rotation": 6.83, "x": 201.04, "y": 52.13, "color": "ff000dff" }, + { "name": "neck", "parent": "torso", "length": 25.45, "rotation": -31.53, "x": 127.49, "y": -0.3, "color": "e0da19ff" }, + { "name": "head", "parent": "neck", "length": 263.57, "rotation": 23.18, "x": 27.66, "y": -0.25, "color": "e0da19ff" }, + { "name": "rear_thigh", "parent": "hip", "length": 85.71, "rotation": -72.54, "x": 8.91, "y": -5.62, "color": "ff000dff" }, + { "name": "rear_shin", "parent": "rear_thigh", "length": 121.87, "rotation": -19.83, "x": 86.1, "y": -1.32, "color": "ff000dff" }, + { "name": "rear_foot", "parent": "rear_shin", "length": 82.57, "rotation": 69.3, "x": 121.45, "y": -0.75, "color": "ff000dff" } ], "slots": [ { "name": "rear_upper_arm", "bone": "rear_upper_arm", "attachment": "rear_upper_arm" }, @@ -54,8 +46,8 @@ { "name": "goggles", "bone": "head", "attachment": "goggles" }, { "name": "front_bracer", "bone": "front_bracer", "attachment": "front_bracer" }, { "name": "front_fist", "bone": "front_fist", "attachment": "front_fist_closed" }, - { "name": "muzzle", "bone": "gunTip", "additive": true }, - { "name": "head-bb", "bone": "head", "attachment": "head" } + { "name": "muzzle", "bone": "gunTip", "blend": "additive" }, + { "name": "head-bb", "bone": "head" } ], "skins": { "default": { @@ -96,7 +88,8 @@ "head-bb": { "head": { "type": "boundingbox", - "vertices": [ -19.143097, -70.30209, 40.80313, -118.074234, 257.77155, -115.61827, 285.16193, 57.18005, 120.77191, 164.95125, -5.067627, 76.94907 ] + "vertexCount": 6, + "vertices": [ -19.14, -70.3, 40.8, -118.07, 257.77, -115.61, 285.16, 57.18, 120.77, 164.95, -5.06, 76.94 ] } }, "mouth": { @@ -1832,10 +1825,6 @@ ] }, "muzzle": { - "attachment": [ - { "time": 0.1333, "name": "muzzle" }, - { "time": 0.2666, "name": null } - ], "color": [ { "time": 0.1333, @@ -1848,6 +1837,10 @@ "curve": [ 0.821, 0, 0.909, 0.89 ] }, { "time": 0.2666, "color": "ffffff00" } + ], + "attachment": [ + { "time": 0.1333, "name": "muzzle" }, + { "time": 0.2666, "name": null } ] } }, @@ -2015,7 +2008,7 @@ ] } }, - "draworder": [ + "drawOrder": [ { "time": 0.6666, "offsets": [ diff --git a/spine-sfml/data/spineboy.png b/spine-sfml/data/spineboy.png index dce2fe3e2..c336b66f6 100644 Binary files a/spine-sfml/data/spineboy.png and b/spine-sfml/data/spineboy.png differ diff --git a/spine-sfml/data/tank.atlas b/spine-sfml/data/tank.atlas new file mode 100644 index 000000000..b925bb065 --- /dev/null +++ b/spine-sfml/data/tank.atlas @@ -0,0 +1,125 @@ + +tank.png +size: 2048,2048 +format: RGBA8888 +filter: Linear,Linear +repeat: none +images/antenna + rotate: true + xy: 1295, 1730 + size: 22, 303 + orig: 22, 303 + offset: 0, 0 + index: -1 +images/cannon + rotate: true + xy: 504, 769 + size: 931, 58 + orig: 931, 58 + offset: 0, 0 + index: -1 +images/cannonConnector + rotate: false + xy: 564, 1239 + size: 112, 135 + orig: 112, 135 + offset: 0, 0 + index: -1 +images/guntower + rotate: false + xy: 1295, 1754 + size: 730, 289 + orig: 730, 289 + offset: 0, 0 + index: -1 +images/machinegun + rotate: true + xy: 504, 436 + size: 331, 57 + orig: 331, 57 + offset: 0, 0 + index: -1 +images/machinegun-mount + rotate: false + xy: 2, 2 + size: 72, 96 + orig: 72, 96 + offset: 0, 0 + index: -1 +images/rock + rotate: false + xy: 226, 358 + size: 252, 55 + orig: 252, 55 + offset: 0, 0 + index: -1 +images/tankBottom + rotate: true + xy: 226, 415 + size: 1285, 276 + orig: 1285, 276 + offset: 0, 0 + index: -1 +images/tankBottom-shadow + rotate: false + xy: 2, 1702 + size: 1291, 341 + orig: 1291, 341 + offset: 0, 0 + index: -1 +images/tankTop + rotate: true + xy: 2, 293 + size: 1407, 222 + orig: 1407, 222 + offset: 0, 0 + index: -1 +images/tread + rotate: false + xy: 226, 326 + size: 96, 30 + orig: 96, 30 + offset: 0, 0 + index: -1 +images/tread-inside + rotate: false + xy: 195, 263 + size: 25, 28 + orig: 25, 28 + offset: 0, 0 + index: -1 +images/wheel-big + rotate: false + xy: 2, 100 + size: 191, 191 + orig: 191, 191 + offset: 0, 0 + index: -1 +images/wheel-big-overlay + rotate: false + xy: 564, 1514 + size: 186, 186 + orig: 186, 186 + offset: 0, 0 + index: -1 +images/wheel-mid + rotate: false + xy: 564, 1376 + size: 136, 136 + orig: 136, 136 + offset: 0, 0 + index: -1 +images/wheel-mid-overlay + rotate: false + xy: 752, 1564 + size: 136, 136 + orig: 136, 136 + offset: 0, 0 + index: -1 +images/wheel-small + rotate: false + xy: 890, 1629 + size: 71, 71 + orig: 71, 71 + offset: 0, 0 + index: -1 diff --git a/spine-sfml/data/tank.json b/spine-sfml/data/tank.json new file mode 100644 index 000000000..c26ccbe47 --- /dev/null +++ b/spine-sfml/data/tank.json @@ -0,0 +1,1899 @@ +{ +"skeleton": { "hash": "kgtyty1lpfv5JU2lygtFi2u3oQQ", "spine": "3.3.07", "width": 1914.53, "height": 964.05, "images": "" }, +"bones": [ + { "name": "root" }, + { "name": "tankRoot", "parent": "root", "y": 200 }, + { "name": "tankTreads", "parent": "tankRoot" }, + { "name": "tankBody", "parent": "tankTreads", "y": 10 }, + { "name": "guntower", "parent": "tankBody", "x": -21.72, "y": 245.47 }, + { "name": "antennaRoot", "parent": "guntower", "x": 164.6, "y": 202.52 }, + { "name": "antenna1", "parent": "antennaRoot", "length": 40, "rotation": 90, "y": 39.99, "color": "ffee00ff" }, + { "name": "antenna2", "parent": "antenna1", "length": 42, "x": 42, "color": "ffee00ff" }, + { "name": "antenna3", "parent": "antenna2", "length": 42, "x": 42, "color": "ffee00ff" }, + { "name": "antenna4", "parent": "antenna3", "length": 42, "x": 42, "color": "ffee00ff" }, + { "name": "antenna5", "parent": "antenna4", "length": 42, "x": 42, "color": "ffee00ff" }, + { "name": "antenna6", "parent": "antenna5", "length": 42, "x": 42, "color": "ffee00ff" }, + { "name": "cannonConnector", "parent": "guntower", "x": -235.04, "y": 96.07 }, + { "name": "cannonTarget", "parent": "tankRoot", "x": -1486.66, "y": 351.82, "color": "ff3f00ff" }, + { "name": "cannon", "parent": "cannonConnector", "length": 946.68, "rotation": 180, "color": "ff4000ff" }, + { "name": "cannonTip", "parent": "cannon", "x": 946.68, "color": "ff4000ff" }, + { "name": "machineGunTarget", "parent": "tankRoot", "x": -1474, "y": 559.42, "color": "ff3f00ff" }, + { + "name": "machinegun-mount", + "parent": "guntower", + "length": 90.97, + "rotation": 90, + "x": -123.72, + "y": 218.32, + "color": "15ff00ff" + }, + { + "name": "machinegun", + "parent": "machinegun-mount", + "length": 208.94, + "rotation": 90, + "x": 91.52, + "y": -1.03, + "color": "15ff00ff" + }, + { "name": "machinegun-tip", "parent": "machinegun", "x": 210.42, "y": -12.2 }, + { "name": "rock", "parent": "root", "x": -656.45 }, + { + "name": "tread", + "parent": "tankRoot", + "length": 82, + "rotation": 180, + "x": -22.89, + "y": 213.85, + "scaleX": 0.993, + "color": "e64344ff" + }, + { "name": "tread2", "parent": "tread", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread3", "parent": "tread2", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread4", "parent": "tread3", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread5", "parent": "tread4", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread6", "parent": "tread5", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread7", "parent": "tread6", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread8", "parent": "tread7", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread9", "parent": "tread8", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread10", "parent": "tread9", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread11", "parent": "tread10", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread12", "parent": "tread11", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread13", "parent": "tread12", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread14", "parent": "tread13", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread15", "parent": "tread14", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread16", "parent": "tread15", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread17", "parent": "tread16", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread18", "parent": "tread17", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread19", "parent": "tread18", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread20", "parent": "tread19", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread21", "parent": "tread20", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread22", "parent": "tread21", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread23", "parent": "tread22", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread24", "parent": "tread23", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread25", "parent": "tread24", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread26", "parent": "tread25", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread27", "parent": "tread26", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread28", "parent": "tread27", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread29", "parent": "tread28", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread30", "parent": "tread29", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread31", "parent": "tread30", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread32", "parent": "tread31", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread33", "parent": "tread32", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread34", "parent": "tread33", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread35", "parent": "tread34", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "tread36", "parent": "tread35", "length": 82, "x": 82, "color": "e64344ff" }, + { "name": "wheel-midCenter", "parent": "tankRoot", "y": -114.56 }, + { "name": "treadCollider1", "parent": "wheel-midCenter", "x": -329.57, "y": -85.44, "color": "ff00fbff" }, + { "name": "treadCollider2", "parent": "wheel-midCenter", "x": -165.95, "y": -85.44, "color": "ff00fbff" }, + { "name": "treadCollider3", "parent": "wheel-midCenter", "y": -85.44, "color": "ff00fbff" }, + { "name": "treadCollider4", "parent": "wheel-midCenter", "x": 163.56, "y": -85.44, "color": "ff00fbff" }, + { "name": "treadCollider5", "parent": "wheel-midCenter", "x": 329.12, "y": -85.44, "color": "ff00fbff" }, + { "name": "treadGravity1", "parent": "tankRoot", "rotation": 180, "x": -175.35, "y": 109.99, "color": "ff00fbff" }, + { "name": "treadGravity2", "parent": "tankRoot", "rotation": 180, "x": 177.88, "y": 105.45, "color": "ff00fbff" }, + { "name": "wheel-bigRoot1", "parent": "tankTreads", "x": -549.59, "y": 14.39, "color": "abe323ff" }, + { "name": "wheel-big1", "parent": "wheel-bigRoot1", "x": -0.02, "color": "abe323ff" }, + { "name": "wheel-bigRoot2", "parent": "tankTreads", "x": 547.33, "y": 14.39 }, + { "name": "wheel-big2", "parent": "wheel-bigRoot2" }, + { "name": "wheel-midRoot1", "parent": "wheel-midCenter", "x": -410.57, "color": "abe323ff" }, + { "name": "wheel-mid1", "parent": "wheel-midRoot1", "color": "abe323ff" }, + { "name": "wheel-midRoot2", "parent": "wheel-midCenter", "x": -246.95 }, + { "name": "wheel-mid2", "parent": "wheel-midRoot2" }, + { "name": "wheel-midRoot3", "parent": "wheel-midCenter", "x": -82.72 }, + { "name": "wheel-mid3", "parent": "wheel-midRoot3" }, + { "name": "wheel-midRoot4", "parent": "wheel-midCenter", "x": 80.89 }, + { "name": "wheel-mid4", "parent": "wheel-midRoot4" }, + { "name": "wheel-midRoot5", "parent": "wheel-midCenter", "x": 244.51 }, + { "name": "wheel-mid5", "parent": "wheel-midRoot5" }, + { "name": "wheel-midRoot6", "parent": "wheel-midCenter", "x": 408.73 }, + { "name": "wheel-mid6", "parent": "wheel-midRoot6" }, + { "name": "wheel-smallRoot1", "parent": "tankTreads", "x": -337.38, "y": 109.43 }, + { "name": "wheel-small1", "parent": "wheel-smallRoot1", "color": "abe323ff" }, + { "name": "wheel-smallRoot2", "parent": "tankTreads", "x": 0.08, "y": 109.43 }, + { "name": "wheel-small2", "parent": "wheel-smallRoot2" }, + { "name": "wheel-smallRoot3", "parent": "tankTreads", "x": 334.68, "y": 109.43 }, + { "name": "wheel-small3", "parent": "wheel-smallRoot3" } +], +"slots": [ + { "name": "tankBody-shadow", "bone": "tankBody", "color": "ffffffb9", "attachment": "images/tankBottom-shadow" }, + { "name": "bottom", "bone": "tankBody", "attachment": "images/tankBottom" }, + { "name": "tread-inside1", "bone": "tread", "attachment": "images/tread-inside" }, + { "name": "tread-inside53", "bone": "tread27", "attachment": "images/tread-inside" }, + { "name": "tread-inside27", "bone": "tread14", "attachment": "images/tread-inside" }, + { "name": "tread-inside3", "bone": "tread2", "attachment": "images/tread-inside" }, + { "name": "tread-inside55", "bone": "tread28", "attachment": "images/tread-inside" }, + { "name": "tread-inside29", "bone": "tread15", "attachment": "images/tread-inside" }, + { "name": "tread-inside5", "bone": "tread3", "attachment": "images/tread-inside" }, + { "name": "tread-inside57", "bone": "tread29", "attachment": "images/tread-inside" }, + { "name": "tread-inside31", "bone": "tread16", "attachment": "images/tread-inside" }, + { "name": "tread-inside7", "bone": "tread4", "attachment": "images/tread-inside" }, + { "name": "tread-inside59", "bone": "tread30", "attachment": "images/tread-inside" }, + { "name": "tread-inside33", "bone": "tread17", "attachment": "images/tread-inside" }, + { "name": "tread-inside9", "bone": "tread5", "attachment": "images/tread-inside" }, + { "name": "tread-inside61", "bone": "tread31", "attachment": "images/tread-inside" }, + { "name": "tread-inside35", "bone": "tread18", "attachment": "images/tread-inside" }, + { "name": "tread-inside11", "bone": "tread6", "attachment": "images/tread-inside" }, + { "name": "tread-inside63", "bone": "tread32", "attachment": "images/tread-inside" }, + { "name": "tread-inside37", "bone": "tread19", "attachment": "images/tread-inside" }, + { "name": "tread-inside13", "bone": "tread7", "attachment": "images/tread-inside" }, + { "name": "tread-inside65", "bone": "tread33", "attachment": "images/tread-inside" }, + { "name": "tread-inside39", "bone": "tread20", "attachment": "images/tread-inside" }, + { "name": "tread-inside15", "bone": "tread8", "attachment": "images/tread-inside" }, + { "name": "tread-inside67", "bone": "tread34", "attachment": "images/tread-inside" }, + { "name": "tread-inside69", "bone": "tread35", "attachment": "images/tread-inside" }, + { "name": "tread-inside71", "bone": "tread36", "attachment": "images/tread-inside" }, + { "name": "tread-inside41", "bone": "tread21", "attachment": "images/tread-inside" }, + { "name": "tread-inside17", "bone": "tread9", "attachment": "images/tread-inside" }, + { "name": "tread-inside43", "bone": "tread22", "attachment": "images/tread-inside" }, + { "name": "tread-inside19", "bone": "tread10", "attachment": "images/tread-inside" }, + { "name": "tread-inside45", "bone": "tread23", "attachment": "images/tread-inside" }, + { "name": "tread-inside21", "bone": "tread11", "attachment": "images/tread-inside" }, + { "name": "tread-inside47", "bone": "tread24", "attachment": "images/tread-inside" }, + { "name": "tread-inside23", "bone": "tread12", "attachment": "images/tread-inside" }, + { "name": "tread-inside49", "bone": "tread25", "attachment": "images/tread-inside" }, + { "name": "tread-inside25", "bone": "tread13", "attachment": "images/tread-inside" }, + { "name": "tread-inside51", "bone": "tread26", "attachment": "images/tread-inside" }, + { "name": "tread-inside2", "bone": "tread", "attachment": "images/tread-inside" }, + { "name": "tread-inside54", "bone": "tread27", "attachment": "images/tread-inside" }, + { "name": "tread-inside28", "bone": "tread14", "attachment": "images/tread-inside" }, + { "name": "tread-inside4", "bone": "tread2", "attachment": "images/tread-inside" }, + { "name": "tread-inside56", "bone": "tread28", "attachment": "images/tread-inside" }, + { "name": "tread-inside30", "bone": "tread15", "attachment": "images/tread-inside" }, + { "name": "tread-inside6", "bone": "tread3", "attachment": "images/tread-inside" }, + { "name": "tread-inside58", "bone": "tread29", "attachment": "images/tread-inside" }, + { "name": "tread-inside32", "bone": "tread16", "attachment": "images/tread-inside" }, + { "name": "tread-inside8", "bone": "tread4", "attachment": "images/tread-inside" }, + { "name": "tread-inside60", "bone": "tread30", "attachment": "images/tread-inside" }, + { "name": "tread-inside34", "bone": "tread17", "attachment": "images/tread-inside" }, + { "name": "tread-inside10", "bone": "tread5", "attachment": "images/tread-inside" }, + { "name": "tread-inside62", "bone": "tread31", "attachment": "images/tread-inside" }, + { "name": "tread-inside36", "bone": "tread18", "attachment": "images/tread-inside" }, + { "name": "tread-inside12", "bone": "tread6", "attachment": "images/tread-inside" }, + { "name": "tread-inside64", "bone": "tread32", "attachment": "images/tread-inside" }, + { "name": "tread-inside38", "bone": "tread19", "attachment": "images/tread-inside" }, + { "name": "tread-inside14", "bone": "tread7", "attachment": "images/tread-inside" }, + { "name": "tread-inside66", "bone": "tread33", "attachment": "images/tread-inside" }, + { "name": "tread-inside40", "bone": "tread20", "attachment": "images/tread-inside" }, + { "name": "tread-inside16", "bone": "tread8", "attachment": "images/tread-inside" }, + { "name": "tread-inside68", "bone": "tread34", "attachment": "images/tread-inside" }, + { "name": "tread-inside70", "bone": "tread35", "attachment": "images/tread-inside" }, + { "name": "tread-inside72", "bone": "tread36", "attachment": "images/tread-inside" }, + { "name": "tread-inside42", "bone": "tread21", "attachment": "images/tread-inside" }, + { "name": "tread-inside18", "bone": "tread9", "attachment": "images/tread-inside" }, + { "name": "tread-inside44", "bone": "tread22", "attachment": "images/tread-inside" }, + { "name": "tread-inside20", "bone": "tread10", "attachment": "images/tread-inside" }, + { "name": "tread-inside46", "bone": "tread23", "attachment": "images/tread-inside" }, + { "name": "tread-inside22", "bone": "tread11", "attachment": "images/tread-inside" }, + { "name": "tread-inside48", "bone": "tread24", "attachment": "images/tread-inside" }, + { "name": "tread-inside24", "bone": "tread12", "attachment": "images/tread-inside" }, + { "name": "tread-inside50", "bone": "tread25", "attachment": "images/tread-inside" }, + { "name": "tread-inside26", "bone": "tread13", "attachment": "images/tread-inside" }, + { "name": "tread-inside52", "bone": "tread26", "attachment": "images/tread-inside" }, + { "name": "wheel-big", "bone": "wheel-big1", "color": "dbdbdbff", "attachment": "images/wheel-big" }, + { "name": "wheel-big2", "bone": "wheel-big2", "color": "dbdbdbff", "attachment": "images/wheel-big" }, + { "name": "wheel-mid", "bone": "wheel-mid1", "attachment": "images/wheel-mid" }, + { "name": "wheel-mid2", "bone": "wheel-mid2", "attachment": "images/wheel-mid" }, + { "name": "wheel-mid3", "bone": "wheel-mid3", "attachment": "images/wheel-mid" }, + { "name": "wheel-mid4", "bone": "wheel-mid4", "attachment": "images/wheel-mid" }, + { "name": "wheel-mid5", "bone": "wheel-mid5", "attachment": "images/wheel-mid" }, + { "name": "wheel-mid6", "bone": "wheel-mid6", "attachment": "images/wheel-mid" }, + { "name": "wheel-small", "bone": "wheel-small1", "attachment": "images/wheel-small" }, + { "name": "wheel-small2", "bone": "wheel-small2", "attachment": "images/wheel-small" }, + { "name": "wheel-small3", "bone": "wheel-small3", "attachment": "images/wheel-small" }, + { + "name": "wheel-mid-overlay", + "bone": "wheel-midRoot1", + "color": "ffffffec", + "attachment": "images/wheel-mid-overlay", + "blend": "multiply" + }, + { + "name": "wheel-mid-overlay2", + "bone": "wheel-midRoot2", + "color": "ffffffec", + "attachment": "images/wheel-mid-overlay", + "blend": "multiply" + }, + { + "name": "wheel-mid-overlay3", + "bone": "wheel-midRoot3", + "color": "ffffffec", + "attachment": "images/wheel-mid-overlay", + "blend": "multiply" + }, + { + "name": "wheel-mid-overlay4", + "bone": "wheel-midRoot4", + "color": "ffffffec", + "attachment": "images/wheel-mid-overlay", + "blend": "multiply" + }, + { + "name": "wheel-mid-overlay5", + "bone": "wheel-midRoot5", + "color": "ffffffec", + "attachment": "images/wheel-mid-overlay", + "blend": "multiply" + }, + { + "name": "wheel-mid-overlay6", + "bone": "wheel-midRoot6", + "color": "ffffffec", + "attachment": "images/wheel-mid-overlay", + "blend": "multiply" + }, + { + "name": "wheel-big-overlay1", + "bone": "wheel-bigRoot1", + "color": "ffffffe9", + "attachment": "images/wheel-big-overlay", + "blend": "multiply" + }, + { + "name": "wheel-big-overlay2", + "bone": "wheel-bigRoot2", + "color": "ffffffe9", + "attachment": "images/wheel-big-overlay", + "blend": "multiply" + }, + { "name": "treads", "bone": "tankRoot", "attachment": "treads" }, + { "name": "tread", "bone": "tread", "color": "c0974fff", "attachment": "images/tread" }, + { "name": "tread27", "bone": "tread27", "color": "adc9b8ff", "attachment": "images/tread" }, + { "name": "tread14", "bone": "tread14", "attachment": "images/tread" }, + { "name": "tread2", "bone": "tread2", "attachment": "images/tread" }, + { "name": "tread28", "bone": "tread28", "attachment": "images/tread" }, + { "name": "tread15", "bone": "tread15", "color": "adc9b8ff", "attachment": "images/tread" }, + { "name": "tread3", "bone": "tread3", "color": "adc9b8ff", "attachment": "images/tread" }, + { "name": "tread29", "bone": "tread29", "color": "adc9b8ff", "attachment": "images/tread" }, + { "name": "tread16", "bone": "tread16", "attachment": "images/tread" }, + { "name": "tread4", "bone": "tread4", "attachment": "images/tread" }, + { "name": "tread30", "bone": "tread30", "attachment": "images/tread" }, + { "name": "tread17", "bone": "tread17", "color": "adc9b8ff", "attachment": "images/tread" }, + { "name": "tread5", "bone": "tread5", "color": "adc9b8ff", "attachment": "images/tread" }, + { "name": "tread31", "bone": "tread31", "color": "adc9b8ff", "attachment": "images/tread" }, + { "name": "tread18", "bone": "tread18", "attachment": "images/tread" }, + { "name": "tread6", "bone": "tread6", "attachment": "images/tread" }, + { "name": "tread32", "bone": "tread32", "attachment": "images/tread" }, + { "name": "tread19", "bone": "tread19", "color": "adc9b8ff", "attachment": "images/tread" }, + { "name": "tread7", "bone": "tread7", "color": "adc9b8ff", "attachment": "images/tread" }, + { "name": "tread33", "bone": "tread33", "color": "adc9b8ff", "attachment": "images/tread" }, + { "name": "tread20", "bone": "tread20", "attachment": "images/tread" }, + { "name": "tread8", "bone": "tread8", "attachment": "images/tread" }, + { "name": "tread34", "bone": "tread34", "attachment": "images/tread" }, + { "name": "tread35", "bone": "tread35", "color": "adc9b8ff", "attachment": "images/tread" }, + { "name": "tread36", "bone": "tread36", "color": "adc9b8ff", "attachment": "images/tread" }, + { "name": "tread21", "bone": "tread21", "color": "adc9b8ff", "attachment": "images/tread" }, + { "name": "tread9", "bone": "tread9", "color": "adc9b8ff", "attachment": "images/tread" }, + { "name": "tread22", "bone": "tread22", "attachment": "images/tread" }, + { "name": "tread10", "bone": "tread10", "attachment": "images/tread" }, + { "name": "tread23", "bone": "tread23", "color": "adc9b8ff", "attachment": "images/tread" }, + { "name": "tread11", "bone": "tread11", "color": "adc9b8ff", "attachment": "images/tread" }, + { "name": "tread24", "bone": "tread24", "attachment": "images/tread" }, + { "name": "tread12", "bone": "tread12", "attachment": "images/tread" }, + { "name": "tread25", "bone": "tread25", "color": "adc9b8ff", "attachment": "images/tread" }, + { "name": "tread13", "bone": "tread13", "color": "adc9b8ff", "attachment": "images/tread" }, + { "name": "tread26", "bone": "tread26", "attachment": "images/tread" }, + { "name": "rock", "bone": "rock", "attachment": "images/rock" }, + { "name": "machinegun", "bone": "machinegun", "attachment": "images/machinegun" }, + { "name": "machinegun-mount", "bone": "machinegun-mount", "attachment": "images/machinegun-mount" }, + { "name": "tankTop", "bone": "tankBody", "attachment": "images/tankTop" }, + { "name": "guntower", "bone": "guntower", "attachment": "images/guntower" }, + { "name": "cannon", "bone": "cannon", "attachment": "images/cannon" }, + { "name": "cannonConnector", "bone": "cannonConnector", "attachment": "images/cannonConnector" }, + { "name": "antenna", "bone": "antennaRoot", "attachment": "images/antenna" } +], +"ik": [ + { + "name": "cannonTarget", + "bones": [ "cannon" ], + "target": "cannonTarget" + }, + { + "name": "machineGunTarget", + "bones": [ "machinegun" ], + "target": "machineGunTarget", + "mix": 0 + } +], +"transform": [ + { + "name": "wheel-big", + "bones": [ "wheel-big2" ], + "target": "wheel-big1", + "rotation": 65.6, + "translateMix": 0, + "scaleMix": 0, + "shearMix": 0 + }, + { + "name": "wheel-mid1", + "bones": [ "wheel-mid2", "wheel-mid4" ], + "target": "wheel-mid1", + "rotation": 93, + "translateMix": 0, + "scaleMix": 0, + "shearMix": 0 + }, + { + "name": "wheel-mid2", + "bones": [ "wheel-mid3", "wheel-mid5" ], + "target": "wheel-mid1", + "rotation": -89, + "translateMix": 0, + "scaleMix": 0, + "shearMix": 0 + }, + { + "name": "wheel-mid3", + "bones": [ "wheel-mid6" ], + "target": "wheel-mid1", + "rotation": -152.6, + "translateMix": 0, + "scaleMix": 0, + "shearMix": 0 + }, + { + "name": "wheel-small1", + "bones": [ "wheel-small2" ], + "target": "wheel-small1", + "rotation": 87, + "translateMix": 0, + "scaleMix": 0, + "shearMix": 0 + }, + { + "name": "wheel-small2", + "bones": [ "wheel-small3" ], + "target": "wheel-small1", + "rotation": 54.9, + "translateMix": 0, + "scaleMix": 0, + "shearMix": 0 + } +], +"path": [ + { + "name": "treads", + "bones": [ + "tread", + "tread2", + "tread3", + "tread4", + "tread5", + "tread6", + "tread7", + "tread8", + "tread9", + "tread10", + "tread11", + "tread12", + "tread13", + "tread14", + "tread15", + "tread16", + "tread17", + "tread18", + "tread19", + "tread20", + "tread21", + "tread22", + "tread23", + "tread24", + "tread25", + "tread26", + "tread27", + "tread28", + "tread29", + "tread30", + "tread31", + "tread32", + "tread33", + "tread34", + "tread35", + "tread36" + ], + "target": "treads", + "rotateMode": "chain" + } +], +"skins": { + "default": { + "antenna": { + "images/antenna": { + "type": "mesh", + "uvs": [ 0.64286, 0.07875, 0.65354, 0.15349, 0.66324, 0.22137, 0.67367, 0.29433, 0.68383, 0.36543, 0.69359, 0.43374, 0.7031, 0.50029, 0.71311, 0.5703, 0.72327, 0.64138, 0.73406, 0.71688, 0.7444, 0.78929, 0.75614, 0.8714, 0.76905, 0.9431, 1, 0.9431, 1, 1, 0, 1, 0, 0.9431, 0.20105, 0.9431, 0.20105, 0.87093, 0.21461, 0.78846, 0.22651, 0.71606, 0.23885, 0.64098, 0.25035, 0.57104, 0.26206, 0.49983, 0.27306, 0.4329, 0.2843, 0.36453, 0.29592, 0.29381, 0.308, 0.22037, 0.319, 0.15345, 0.33141, 0.07795, 0.34423, 0, 0.6316, 0 ], + "triangles": [ 30, 31, 0, 29, 30, 0, 29, 0, 1, 28, 29, 1, 28, 1, 2, 27, 28, 2, 27, 2, 3, 26, 3, 4, 25, 26, 4, 25, 4, 5, 26, 27, 3, 24, 5, 6, 23, 24, 6, 7, 23, 6, 24, 25, 5, 22, 7, 8, 21, 22, 8, 21, 8, 9, 7, 22, 23, 20, 9, 10, 19, 20, 10, 20, 21, 9, 19, 10, 11, 18, 19, 11, 17, 18, 11, 17, 11, 12, 15, 16, 17, 12, 13, 14, 15, 17, 12, 14, 15, 12 ], + "vertices": [ 2, 10, 65.37999, -3.14, 0.3125, 11, 23.38, -3.14, 0.6875, 3, 9, 84.73, -3.37, 0.0625, 10, 42.73, -3.37, 0.625, 11, 0.73, -3.37, 0.3125, 3, 9, 64.16, -3.59, 0.3125, 10, 22.16, -3.59, 0.625, 11, -19.83, -3.59, 0.0625, 3, 8, 84.06, -3.82, 0.0625, 9, 42.06, -3.82, 0.625, 10, 0.06, -3.82, 0.3125, 3, 8, 62.51, -4.04, 0.3125, 9, 20.51, -4.04, 0.625, 10, -21.48, -4.04, 0.0625, 3, 7, 83.81, -4.25, 0.0625, 8, 41.81, -4.25, 0.625, 9, -0.18, -4.25, 0.3125, 3, 7, 63.65, -4.46, 0.3125, 8, 21.65, -4.46, 0.625, 9, -20.34, -4.46, 0.0625, 3, 6, 84.43, -4.67999, 0.0625, 7, 42.43, -4.67999, 0.625, 8, 0.43, -4.67999, 0.3125, 3, 6, 62.9, -4.91, 0.3125, 7, 20.9, -4.91, 0.625, 8, -21.09, -4.91, 0.0625, 3, 5, 5.14, 80.01999, 0.0625, 6, 40.02, -5.14, 0.625, 7, -1.97, -5.14, 0.3125, 3, 5, 5.37, 58.08, 0.375, 6, 18.08, -5.37, 0.5625, 7, -23.91, -5.37, 0.0625, 1, 5, 5.63, 33.2, 1, 1, 5, 5.91, 11.48, 1, 1, 5, 11, 11.48, 1, 1, 5, 10.99, -5.75, 1, 1, 5, -11, -5.75, 1, 1, 5, -10.99, 11.48, 1, 1, 5, -6.57, 11.48, 1, 1, 5, -6.57, 33.34, 1, 3, 5, -6.27, 58.33, 0.375, 6, 18.33, 6.27, 0.5625, 7, -23.66, 6.27, 0.0625, 3, 5, -6.01, 80.26999, 0.0625, 6, 40.27, 6.01, 0.625, 7, -1.72, 6.01, 0.3125, 3, 6, 63.02, 5.74, 0.3125, 7, 21.02, 5.74, 0.625, 8, -20.96999, 5.74, 0.0625, 3, 6, 84.21, 5.49, 0.0625, 7, 42.21, 5.49, 0.625, 8, 0.21, 5.49, 0.3125, 3, 7, 63.79, 5.23, 0.3125, 8, 21.79, 5.23, 0.625, 9, -20.2, 5.23, 0.0625, 3, 7, 84.07, 4.98999, 0.0625, 8, 42.07, 4.98999, 0.625, 9, 0.07, 4.98999, 0.3125, 3, 8, 62.78, 4.73999, 0.3125, 9, 20.78, 4.73999, 0.625, 10, -21.21, 4.73999, 0.0625, 3, 8, 84.21, 4.48, 0.0625, 9, 42.21, 4.48, 0.625, 10, 0.21, 4.48, 0.3125, 3, 9, 64.46, 4.21999, 0.3125, 10, 22.46, 4.21999, 0.625, 11, -19.53, 4.21999, 0.0625, 3, 9, 84.74, 3.98, 0.0625, 10, 42.74, 3.98, 0.625, 11, 0.74, 3.98, 0.3125, 2, 10, 65.62, 3.7, 0.3125, 11, 23.62, 3.7, 0.6875, 1, 11, 47.24, 3.42, 1, 1, 11, 47.24, -2.89, 1 ], + "hull": 32, + "edges": [ 28, 30, 28, 26, 30, 32, 26, 24, 24, 22, 32, 34, 34, 24, 34, 36, 36, 22, 60, 62, 38, 36, 20, 22, 38, 20, 40, 38, 18, 20, 40, 18, 42, 40, 16, 18, 42, 16, 44, 42, 14, 16, 44, 14, 46, 44, 12, 14, 46, 12, 48, 46, 10, 12, 48, 10, 50, 48, 8, 10, 50, 8, 52, 50, 6, 8, 52, 6, 54, 52, 4, 6, 54, 4, 56, 54, 2, 4, 56, 2, 60, 58, 58, 56, 62, 0, 0, 2, 58, 0 ], + "width": 22, + "height": 303 + } + }, + "bottom": { + "images/tankBottom": { "x": -16.66, "y": 9.89, "width": 1285, "height": 276 } + }, + "cannon": { + "images/cannon": { "x": 481.95, "y": -0.02, "rotation": 179.99, "width": 931, "height": 58 } + }, + "cannonConnector": { + "images/cannonConnector": { + "type": "mesh", + "uvs": [ 1, 0.03236, 1, 0.10602, 0.90987, 0.32859, 0.81975, 0.55116, 0.72962, 0.77372, 0.6395, 0.99629, 0.42157, 0.99629, 0.20364, 0.99629, 0, 0.85433, 0, 0.69901, 0.02267, 0.52884, 0, 0.31444, 0.21601, 0.12998, 0.43367, 0, 0.63546, 0.0037, 0.48407, 0.77059, 0.31496, 0.52496, 0.64132, 0.19648, 0.21516, 0.76765, 0.58345, 0.5647, 0.68444, 0.40146, 0.46758, 0.36649, 0.28934, 0.34603 ], + "triangles": [ 21, 22, 12, 11, 12, 22, 17, 21, 13, 17, 13, 14, 21, 12, 13, 21, 17, 20, 16, 22, 21, 10, 11, 22, 10, 22, 16, 19, 21, 20, 16, 21, 19, 18, 10, 16, 9, 10, 18, 15, 16, 19, 18, 16, 15, 8, 9, 18, 7, 8, 18, 6, 18, 15, 7, 18, 6, 14, 0, 1, 17, 14, 1, 2, 17, 1, 20, 17, 2, 3, 20, 2, 19, 20, 3, 4, 19, 3, 15, 19, 4, 5, 15, 4, 6, 15, 5 ], + "vertices": [ 1, 12, 35.91, 69.08, 1, 1, 12, 35.91, 59.13, 1, 1, 12, 25.81, 29.09, 1, 1, 12, 15.72, -0.95, 1, 1, 12, 5.63, -31, 1, 1, 12, -4.46, -61.04, 1, 2, 12, -28.87, -61.04, 0.33333, 14, 28.87, 61.03, 0.66666, 1, 14, 53.27, 61.01, 1, 1, 14, 76.08, 41.83, 1, 1, 14, 71.17, 21.62, 1, 1, 14, 72.83, -1.62, 1, 1, 14, 70.37, -29.12, 1, 1, 14, 50.66, -56.13, 1, 2, 12, -28.43, 74.37, 0.41, 14, 28.43, -74.39, 0.58999, 2, 12, -4.91, 72.94999, 0.52, 14, 4.91, -72.94999, 0.48, 2, 12, -21.87, -30.57, 0.49, 14, 21.87, 30.56, 0.51, 1, 14, 40.81, -2.59999, 1, 2, 12, -4.25, 46.92, 0.49, 14, 4.25, -46.92, 0.51, 1, 14, 51.98, 30.15, 1, 2, 12, -10.74, -2.78, 0.49, 14, 10.74, 2.77, 0.51, 2, 12, 0.56, 19.25, 0.49, 14, -0.56, -19.25, 0.51, 1, 14, 23.71, -23.98, 1, 1, 14, 43.68, -26.76, 1 ], + "hull": 15, + "edges": [ 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 18, 20, 20, 22, 22, 24, 24, 26, 26, 28, 28, 0 ], + "width": 112, + "height": 135 + } + }, + "guntower": { + "images/guntower": { "x": 77.22, "y": 122.58, "width": 730, "height": 289 } + }, + "machinegun": { + "images/machinegun": { "x": 44.85, "y": -5.72, "rotation": -180, "width": 331, "height": 57 } + }, + "machinegun-mount": { + "images/machinegun-mount": { "x": 47.42, "y": -1.53, "rotation": -90, "width": 72, "height": 96 } + }, + "rock": { + "images/rock": { "color": "404040ff", "x": 25.23, "y": 27.35, "width": 252, "height": 55 } + }, + "tankBody-shadow": { + "images/tankBottom-shadow": { "x": -11.43, "y": -42.88, "width": 1291, "height": 341 } + }, + "tankTop": { + "images/tankTop": { "x": 6.8, "y": 168.71, "width": 1407, "height": 222 } + }, + "tread": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread-inside1": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside10": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside11": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside12": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside13": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside14": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside15": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside16": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside17": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside18": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside19": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside2": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside20": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside21": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside22": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside23": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside24": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside25": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside26": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside27": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside28": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside29": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside3": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside30": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside31": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside32": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside33": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside34": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside35": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside36": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside37": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside38": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside39": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside4": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside40": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside41": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside42": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside43": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside44": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside45": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside46": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside47": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside48": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside49": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside5": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside50": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside51": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside52": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside53": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside54": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside55": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside56": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside57": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside58": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside59": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside6": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside60": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside61": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside62": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside63": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside64": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside65": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside66": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside67": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside68": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside69": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside7": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside70": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside71": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside72": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside8": { + "images/tread-inside": { "x": 20.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread-inside9": { + "images/tread-inside": { "x": 60.1, "y": 12.56, "rotation": -180, "width": 25, "height": 28 } + }, + "tread10": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread11": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread12": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread13": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread14": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread15": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread16": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread17": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread18": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread19": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread2": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread20": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread21": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread22": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread23": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread24": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread25": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread26": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread27": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread28": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread29": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread3": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread30": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread31": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread32": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread33": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread34": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread35": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread36": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread4": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread5": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread6": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread7": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread8": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "tread9": { + "images/tread": { "x": 45.47, "y": -8.28, "rotation": -179.99, "width": 96, "height": 30 } + }, + "treads": { + "treads": { + "type": "path", + "closed": true, + "lengths": [ 182.41, 349, 472.77, 602.99, 780.46, 1052.96, 1133.44, 1218.43, 1298.34, 1382.7, 1465.57, 1546.11, 1628.02, 1707.73, 1794.36, 1876.75, 2158.69, 2321.34, 2438.56, 2579.42, 2745.35, 2919.23 ], + "vertexCount": 66, + "vertices": [ 1, 83, 11.23, 41.86, 1, 1, 83, 0.78, 41.93999, 1, 1, 83, -34.72, 42.23, 1, 1, 63, -104.21, 0.41, 1, 1, 63, 0.07, 0.55, 1, 1, 63, 68.8, 0.64, 1, 1, 81, 20.5, 43.47, 1, 1, 81, 1.13, 40.81, 1, 1, 81, -27.38, 36.84, 1, 1, 65, 147.06, 105, 1, 1, 65, 96.21, 96.63, 1, 1, 65, 43.87, 87.71, 1, 1, 65, 16.18, 103.34, 1, 1, 65, -33.66999, 94.2, 1, 1, 65, -99.35, 81.25, 1, 1, 65, -122.04, -1.69, 1, 1, 65, -83.58, -47.92, 1, 1, 65, -33.53, -109.36, 1, 1, 69, -83.56, -66.08999, 1, 1, 69, -2.16, -67.89, 1, 2, 69, 56.68, -41.48, 0.67999, 58, -24.31, -41.49, 0.32, 1, 58, -26.58, 16.69, 1, 1, 58, -2.69, 16.69, 1, 1, 58, 13.51, 16.69, 1, 2, 71, -52.41, -46.51, 0.74399, 58, 30.2, -46.51, 0.256, 1, 71, -0.32, -68.92, 1, 2, 71, 52.09, -44.72, 0.712, 59, -28.9, -44.73, 0.28799, 1, 59, -22.8, 16.24, 1, 1, 59, -1.42, 16.24, 1, 1, 59, 20.46999, 16.24, 1, 2, 73, -47.21, -47.45, 0.744, 59, 36.00999, -47.46, 0.25599, 1, 73, -0.28, -69.65, 1, 2, 73, 45.23, -47.26, 0.736, 60, -37.48, -47.26, 0.26399, 1, 60, -23.76, 15.27, 1, 1, 60, -0.13, 15.27, 1, 1, 60, 24.45, 15.27, 1, 2, 75, -47.36, -48.7, 0.74399, 60, 33.52, -48.7, 0.256, 1, 75, -0.49, -70.39, 1, 2, 75, 49.09, -48.33, 0.744, 61, -33.57, -48.34, 0.25599, 1, 61, -20.89, 15.83, 1, 1, 61, -1.25, 15.83, 1, 1, 61, 15.78, 15.83, 1, 2, 77, -52.49, -48.21, 0.75999, 61, 28.45, -48.21, 0.24, 1, 77, -2.5, -68.92, 1, 2, 77, 55.72, -47.82, 0.752, 62, -28.88, -47.82, 0.248, 1, 62, -21.64, 16.69, 1, 1, 62, -0.48, 16.69, 1, 1, 62, 20.73, 16.69, 1, 2, 79, -53.65, -48.89, 0.76, 62, 25.96, -48.89, 0.23999, 1, 79, 2.27, -69.65, 1, 1, 79, 44.94, -69.74, 1, 1, 65, 1172.98, -85.6, 1, 1, 65, 1190.53, -42.24, 1, 1, 65, 1215.63, 19.75, 1, 1, 65, 1175.55, 76.62, 1, 1, 65, 1134.22, 95.07, 1, 1, 65, 1128.4, 97.66, 1, 1, 65, 1081.79, 87.47, 1, 1, 65, 1017.16, 92.52, 1, 1, 65, 977.9, 95.58, 1, 1, 85, 47.07, 42.29, 1, 1, 85, 0.24, 42.74, 1, 1, 85, -29.63, 43.28, 1, 1, 64, -86.64, 1.35, 1, 1, 64, 0.49, 0.25, 1, 1, 64, 92.42, -0.89, 1 ] + } + }, + "wheel-big": { + "images/wheel-big": { "width": 191, "height": 191 } + }, + "wheel-big-overlay1": { + "images/wheel-big-overlay": { "width": 186, "height": 186 } + }, + "wheel-big-overlay2": { + "images/wheel-big-overlay": { "width": 186, "height": 186 } + }, + "wheel-big2": { + "images/wheel-big": { "width": 191, "height": 191 } + }, + "wheel-mid": { + "images/wheel-mid": { "width": 136, "height": 136 } + }, + "wheel-mid-overlay": { + "images/wheel-mid-overlay": { "width": 136, "height": 136 } + }, + "wheel-mid-overlay2": { + "images/wheel-mid-overlay": { "width": 136, "height": 136 } + }, + "wheel-mid-overlay3": { + "images/wheel-mid-overlay": { "width": 136, "height": 136 } + }, + "wheel-mid-overlay4": { + "images/wheel-mid-overlay": { "width": 136, "height": 136 } + }, + "wheel-mid-overlay5": { + "images/wheel-mid-overlay": { "width": 136, "height": 136 } + }, + "wheel-mid-overlay6": { + "images/wheel-mid-overlay": { "width": 136, "height": 136 } + }, + "wheel-mid2": { + "images/wheel-mid": { "width": 136, "height": 136 } + }, + "wheel-mid3": { + "images/wheel-mid": { "width": 136, "height": 136 } + }, + "wheel-mid4": { + "images/wheel-mid": { "width": 136, "height": 136 } + }, + "wheel-mid5": { + "images/wheel-mid": { "width": 136, "height": 136 } + }, + "wheel-mid6": { + "images/wheel-mid": { "width": 136, "height": 136 } + }, + "wheel-small": { + "images/wheel-small": { "width": 71, "height": 71 } + }, + "wheel-small2": { + "images/wheel-small": { "width": 71, "height": 71 } + }, + "wheel-small3": { + "images/wheel-small": { "width": 71, "height": 71 } + } + } +}, +"animations": { + "drive": { + "bones": { + "tankRoot": { + "translate": [ + { + "time": 0, + "x": 0, + "y": 0, + "curve": [ 0.549, 0, 0.907, 0.84 ] + }, + { + "time": 3.0333, + "x": -1426.14, + "y": 0, + "curve": [ 0.211, 0.23, 0.851, 0.92 ] + }, + { + "time": 4.8666, + "x": -2806.98, + "y": 0, + "curve": [ 0.253, 0.27, 0.625, 0.94 ] + }, + { "time": 5.3333, "x": -2903.34, "y": 0 } + ] + }, + "wheel-midRoot1": { + "translate": [ + { "time": 0.7666, "x": 0, "y": 0 }, + { + "time": 1.1666, + "x": 0, + "y": 50.95, + "curve": [ 0.633, 0, 0.907, 0.82 ] + }, + { "time": 1.5666, "x": 0, "y": 0 } + ] + }, + "treadCollider1": { + "rotate": [ + { "time": 1.1, "angle": 0 }, + { "time": 1.2333, "angle": -19.78 }, + { "time": 1.4666, "angle": 0 }, + { "time": 1.6, "angle": 28.87 }, + { "time": 1.8, "angle": 0 } + ], + "translate": [ + { "time": 1.1, "x": 0, "y": 0 }, + { + "time": 1.4666, + "x": 0, + "y": 58.66, + "curve": [ 0.352, 0, 0.828, 0.92 ] + }, + { "time": 1.8, "x": 0, "y": 0 } + ] + }, + "wheel-midRoot2": { + "translate": [ + { "time": 1.2666, "x": 0, "y": 0 }, + { + "time": 1.6333, + "x": 0, + "y": 55.07, + "curve": [ 0.889, 0.01, 0.843, 0.81 ] + }, + { "time": 1.9333, "x": 0, "y": 0 } + ] + }, + "treadCollider2": { + "rotate": [ + { "time": 1.5333, "angle": 0 }, + { "time": 1.6333, "angle": -18.67 }, + { "time": 1.8, "angle": 0 }, + { "time": 1.9, "angle": 29.49 }, + { "time": 2.0666, "angle": 0 } + ], + "translate": [ + { + "time": 1.5333, + "x": 0, + "y": 0, + "curve": [ 0.16, 0.25, 0.813, 0.82 ] + }, + { + "time": 1.8, + "x": 0, + "y": 59.03, + "curve": [ 0.376, 0.26, 0.879, 0.79 ] + }, + { "time": 2.0666, "x": 0, "y": 0 } + ] + }, + "wheel-midRoot3": { + "translate": [ + { "time": 1.6666, "x": 0, "y": 0 }, + { + "time": 1.9333, + "x": 0, + "y": 60.17, + "curve": [ 0.544, 0, 0.838, 0.77 ] + }, + { "time": 2.2, "x": 0, "y": 0 } + ] + }, + "treadCollider3": { + "rotate": [ + { "time": 1.8666, "angle": 0 }, + { "time": 1.9333, "angle": -20.16 }, + { "time": 2.0666, "angle": 0.57 }, + { "time": 2.1666, "angle": 33.66 }, + { "time": 2.3333, "angle": 0 } + ], + "translate": [ + { "time": 1.8666, "x": 0, "y": 0 }, + { + "time": 2.0666, + "x": 0, + "y": 61.53, + "curve": [ 0.582, 0, 0.836, 0.77 ] + }, + { "time": 2.3333, "x": 0, "y": 0 } + ] + }, + "wheel-midRoot4": { + "translate": [ + { "time": 1.9333, "x": 0, "y": 0 }, + { + "time": 2.2, + "x": 0, + "y": 58.89, + "curve": [ 0.48, 0, 0.75, 1 ] + }, + { "time": 2.4666, "x": 0, "y": 0 } + ] + }, + "treadCollider4": { + "rotate": [ + { "time": 2.1333, "angle": 0 }, + { "time": 2.2, "angle": -20.43 }, + { "time": 2.3333, "angle": 4.49 }, + { "time": 2.4333, "angle": 35.87 }, + { "time": 2.5666, "angle": 0 } + ], + "translate": [ + { + "time": 2.1333, + "x": 0, + "y": 0, + "curve": [ 0.191, 0.49, 0.75, 1 ] + }, + { "time": 2.3333, "x": 0, "y": 66.64 }, + { "time": 2.5666, "x": 0, "y": 0 } + ] + }, + "wheel-midRoot5": { + "translate": [ + { "time": 2.2, "x": 0, "y": 0 }, + { "time": 2.4333, "x": 0, "y": 60.26 }, + { "time": 2.7, "x": 0, "y": 0 } + ] + }, + "treadCollider5": { + "rotate": [ + { "time": 2.3333, "angle": 0 }, + { "time": 2.4333, "angle": -23.6 }, + { "time": 2.5666, "angle": 6.49 }, + { "time": 2.6666, "angle": 29.93 }, + { "time": 2.8, "angle": -0.13 } + ], + "translate": [ + { "time": 2.3333, "x": 0, "y": 0 }, + { "time": 2.4333, "x": 0, "y": 36.34 }, + { "time": 2.5, "x": 0, "y": 56.39 }, + { "time": 2.5666, "x": 0, "y": 61.34 }, + { "time": 2.8, "x": 0, "y": 2.04 } + ] + }, + "wheel-midRoot6": { + "translate": [ + { + "time": 2.4333, + "x": 0, + "y": 0, + "curve": [ 0.19, 0.26, 0.804, 0.8 ] + }, + { + "time": 2.6333, + "x": 0, + "y": 51.86, + "curve": [ 0.346, 0, 0.852, 0.7 ] + }, + { "time": 2.8, "x": 0, "y": 0 } + ] + }, + "wheel-mid1": { + "rotate": [ + { + "time": 0, + "angle": 21, + "curve": [ 0.504, 0.11, 0.931, 0.71 ] + }, + { "time": 0.8, "angle": 120 }, + { "time": 1.2333, "angle": 240 }, + { "time": 1.6, "angle": 0 }, + { "time": 1.9, "angle": 120 }, + { "time": 2.1666, "angle": 240 }, + { "time": 2.4, "angle": 0 }, + { "time": 2.5666, "angle": 120 }, + { "time": 2.7333, "angle": 240 }, + { "time": 2.9333, "angle": 0 }, + { "time": 3.1, "angle": 120 }, + { "time": 3.2666, "angle": 240 }, + { "time": 3.4333, "angle": 0 }, + { "time": 3.6333, "angle": 120 }, + { "time": 3.8, "angle": 240 }, + { "time": 3.9666, "angle": 0 }, + { "time": 4.1666, "angle": 120 }, + { "time": 4.3333, "angle": 240 }, + { "time": 4.5, "angle": 0 }, + { "time": 4.7, "angle": 120 }, + { "time": 4.8666, "angle": 240 }, + { "time": 5.2666, "angle": -67.99 } + ] + }, + "tankTreads": { + "rotate": [ + { + "time": 0, + "angle": 0, + "curve": [ 0.145, 0.34, 0.75, 1 ] + }, + { "time": 1.1, "angle": -3.9 }, + { "time": 1.3333, "angle": -2.37 }, + { "time": 1.6333, "angle": -3.54 }, + { "time": 2.1666, "angle": 0.27 }, + { + "time": 2.4666, + "angle": 2.55, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 2.7, + "angle": 3.88, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 3, "angle": -3.62 }, + { "time": 3.2333, "angle": -1.23, "curve": "stepped" }, + { + "time": 4.8666, + "angle": -1.23, + "curve": [ 0.188, 0.16, 0.75, 1 ] + }, + { + "time": 5.2, + "angle": 4.47, + "curve": [ 0.416, 0.01, 0.75, 1 ] + }, + { + "time": 5.5666, + "angle": -3.08, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 5.8333, "angle": -1.23 } + ] + }, + "wheel-big1": { + "rotate": [ + { + "time": 0, + "angle": 0, + "curve": [ 0.504, 0.11, 0.931, 0.71 ] + }, + { "time": 1.1, "angle": 120 }, + { "time": 1.5333, "angle": 240 }, + { "time": 1.8, "angle": 360 }, + { "time": 2.0333, "angle": 120 }, + { "time": 2.2666, "angle": 240 }, + { "time": 2.4666, "angle": 360 }, + { "time": 2.7, "angle": 120 }, + { "time": 2.9333, "angle": 240 }, + { "time": 3.1333, "angle": 360 }, + { "time": 3.3666, "angle": 120 }, + { "time": 3.5666, "angle": 240 }, + { "time": 3.8, "angle": -24 }, + { "time": 4.0333, "angle": 120 }, + { "time": 4.2333, "angle": 240 }, + { "time": 4.4666, "angle": -24 }, + { "time": 4.7, "angle": 120 }, + { "time": 4.8666, "angle": -143.99 }, + { + "time": 5.0666, + "angle": -131.4, + "curve": [ 0.14, 0.25, 0.75, 1 ] + }, + { "time": 5.6666, "angle": -76.85 }, + { "time": 5.8333, "angle": -72.3 } + ] + }, + "treadGravity1": { + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.4666, "x": 0, "y": 0 }, + { "time": 1.8, "x": 0, "y": 29.44 }, + { "time": 2.3333, "x": 0, "y": -0.52 }, + { "time": 2.5666, "x": 0, "y": 5.2 }, + { "time": 2.6666, "x": 0, "y": -11.05, "curve": "stepped" }, + { "time": 4.8666, "x": 0, "y": -11.05 }, + { "time": 5.0666, "x": 0, "y": -1.91 }, + { "time": 5.5333, "x": 0, "y": -6.9 }, + { "time": 5.7333, "x": 0, "y": -11.05 } + ] + }, + "treadGravity2": { + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 1.4666, "x": 0, "y": 0 }, + { "time": 1.8, "x": 0, "y": 8.5 }, + { "time": 2.3333, "x": 0, "y": 34.74 }, + { "time": 2.5666, "x": 0, "y": 5.2 }, + { "time": 2.6666, "x": 0, "y": -11.05, "curve": "stepped" }, + { "time": 4.8666, "x": 0, "y": -11.05 }, + { "time": 5.0666, "x": 0, "y": 3.9 }, + { "time": 5.5333, "x": 0, "y": -6.9 }, + { "time": 5.7333, "x": 0, "y": -11.05 } + ] + }, + "wheel-small1": { + "rotate": [ + { + "time": 0, + "angle": 0, + "curve": [ 0.504, 0.11, 0.931, 0.71 ] + }, + { "time": 0.7, "angle": 120 }, + { "time": 1.1, "angle": 240 }, + { "time": 1.4666, "angle": 360 }, + { "time": 1.7666, "angle": 120 }, + { "time": 2.0333, "angle": 240 }, + { "time": 2.2666, "angle": 360 }, + { "time": 2.4333, "angle": 120 }, + { "time": 2.5666, "angle": 240 }, + { "time": 2.7, "angle": 360 }, + { "time": 2.8333, "angle": 120 }, + { "time": 2.9666, "angle": 240 }, + { "time": 3.1, "angle": 360 }, + { "time": 3.2333, "angle": 120 }, + { "time": 3.3666, "angle": 240 }, + { "time": 3.5, "angle": 360 }, + { "time": 3.6333, "angle": 120 }, + { "time": 3.7666, "angle": 240 }, + { "time": 3.9, "angle": 360 }, + { "time": 4.0333, "angle": 120 }, + { "time": 4.1666, "angle": 240 }, + { "time": 4.3, "angle": 360 }, + { "time": 4.4333, "angle": 120 }, + { "time": 4.5666, "angle": 240 }, + { "time": 4.7, "angle": 360 }, + { "time": 4.8333, "angle": 120 }, + { "time": 5, "angle": 240 }, + { + "time": 5.2, + "angle": -25.64, + "curve": [ 0.181, 0.26, 0.75, 1 ] + }, + { "time": 5.5666, "angle": 90 } + ] + }, + "tankBody": { + "rotate": [ + { + "time": 0, + "angle": 0, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 1.1666, + "angle": -1.41, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 1.9333, + "angle": -0.18, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 2.3, + "angle": 0.84, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 3.0333, + "angle": -2.33, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 3.4666, + "angle": -0.45, + "curve": [ 0.329, 0.32, 0.757, 1 ] + }, + { + "time": 4.8666, + "angle": 0, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 5.3333, + "angle": 1.82, + "curve": [ 0.324, 0.01, 0.75, 1 ] + }, + { + "time": 5.6666, + "angle": -1.15, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 6.0333, "angle": 0 } + ] + }, + "antenna1": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { + "time": 0.4333, + "angle": 0, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 0.7333, + "angle": -1.55, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 1.0666, + "angle": -0.68, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 1.4, + "angle": 0.61, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 1.6666, "angle": -0.67, "curve": "stepped" }, + { + "time": 2.1333, + "angle": -0.67, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 2.3666, + "angle": 0.88, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 2.5666, + "angle": -1.69, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 2.8666, + "angle": 1.18, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 3.0333, + "angle": -1.09, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 3.2333, + "angle": 1.03, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 3.5, + "angle": -0.44, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 4.6666, "angle": -0.18 }, + { + "time": 5.0333, + "angle": -1.05, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 5.3666, + "angle": 9.17, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 5.6666, + "angle": -3.14, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 5.9, + "angle": 2.96, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 6.1, + "angle": -0.29, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 6.2666, "angle": 0.96 }, + { "time": 6.4, "angle": 0 } + ] + }, + "antenna2": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { + "time": 0.4333, + "angle": 0, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 0.7333, + "angle": -1.55, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 1.0666, + "angle": -0.68, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 1.4, + "angle": 0.61, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 1.6666, "angle": -0.67, "curve": "stepped" }, + { + "time": 2.1333, + "angle": -0.67, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 2.3666, + "angle": 0.88, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 2.5666, + "angle": -1.69, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 2.8666, + "angle": 1.18, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 3.0333, + "angle": -1.09, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 3.2333, + "angle": 1.03, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 3.5, + "angle": -0.44, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 4.6666, "angle": -0.18 }, + { + "time": 5.0333, + "angle": -1.05, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 5.3666, + "angle": 9.17, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 5.6666, + "angle": -3.14, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 5.9, + "angle": 2.96, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 6.1, + "angle": -0.29, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 6.2666, "angle": 0.96 }, + { "time": 6.4, "angle": 0 } + ] + }, + "antenna3": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { + "time": 0.4333, + "angle": 0, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 0.7333, + "angle": -1.55, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 1.0666, + "angle": -0.68, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 1.4, + "angle": 0.61, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 1.6666, "angle": -0.67, "curve": "stepped" }, + { + "time": 2.1333, + "angle": -0.67, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 2.3666, + "angle": 0.88, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 2.5666, + "angle": -1.69, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 2.8666, + "angle": 1.18, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 3.0333, + "angle": -1.09, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 3.2333, + "angle": 1.03, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 3.5, + "angle": -0.44, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 4.6666, "angle": -0.18 }, + { + "time": 5.0333, + "angle": -1.05, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 5.3666, + "angle": 9.17, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 5.6666, + "angle": -3.14, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 5.9, + "angle": 2.96, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 6.1, + "angle": -0.29, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 6.2666, "angle": 0.96 }, + { "time": 6.4, "angle": 0 } + ] + }, + "antenna4": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { + "time": 0.4333, + "angle": 0, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 0.7333, + "angle": -1.55, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 1.0666, + "angle": -0.68, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 1.4, + "angle": 0.61, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 1.6666, "angle": -0.67, "curve": "stepped" }, + { + "time": 2.1333, + "angle": -0.67, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 2.3666, + "angle": 0.88, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 2.5666, + "angle": -1.69, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 2.8666, + "angle": 1.18, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 3.0333, + "angle": -1.09, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 3.2333, + "angle": 1.03, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 3.5, + "angle": -0.44, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 4.6666, "angle": -0.18 }, + { + "time": 5.0333, + "angle": -1.05, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 5.3666, + "angle": 9.17, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 5.6666, + "angle": -3.14, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 5.9, + "angle": 2.96, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 6.1, + "angle": -0.29, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 6.2666, "angle": 0.96 }, + { "time": 6.4, "angle": 0 } + ] + }, + "antenna5": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { + "time": 0.4333, + "angle": 0, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 0.7333, + "angle": -1.55, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 1.0666, + "angle": -0.68, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 1.4, + "angle": 0.61, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 1.6666, "angle": -0.67, "curve": "stepped" }, + { + "time": 2.1333, + "angle": -0.67, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 2.3666, + "angle": 0.88, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 2.5666, + "angle": -1.69, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 2.8666, + "angle": 1.18, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 3.0333, + "angle": -1.09, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 3.2333, + "angle": 1.03, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 3.5, + "angle": -0.44, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 4.6666, "angle": -0.18 }, + { + "time": 5.0333, + "angle": -1.05, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 5.3666, + "angle": 9.17, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 5.6666, + "angle": -3.14, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 5.9, + "angle": 2.96, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 6.1, + "angle": -0.29, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 6.2666, "angle": 0.96 }, + { "time": 6.4, "angle": 0 } + ] + }, + "antenna6": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { + "time": 0.4333, + "angle": 0, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 0.7333, + "angle": -1.55, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 1.0666, + "angle": -0.68, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 1.4, + "angle": 0.61, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 1.6666, "angle": -0.67, "curve": "stepped" }, + { + "time": 2.1333, + "angle": -0.67, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 2.3666, + "angle": 0.88, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 2.5666, + "angle": -1.69, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 2.8666, + "angle": 1.18, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 3.0333, + "angle": -1.09, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 3.2333, + "angle": 1.03, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 3.5, + "angle": -0.44, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 4.6666, "angle": -0.18 }, + { + "time": 5.0333, + "angle": -1.05, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 5.3666, + "angle": 9.17, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 5.6666, + "angle": -3.14, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 5.9, + "angle": 2.96, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 6.1, + "angle": -0.29, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 6.2666, "angle": 0.96 }, + { "time": 6.4, "angle": 0 } + ] + }, + "machinegun": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { + "time": 2.8333, + "angle": 0, + "curve": [ 0.183, 0.17, 0.75, 1 ] + }, + { + "time": 3, + "angle": -4.43, + "curve": [ 0.156, 0.16, 0.75, 1 ] + }, + { + "time": 3.1666, + "angle": -2.93, + "curve": [ 0.156, 0.16, 0.75, 1 ] + }, + { + "time": 4.8333, + "angle": 0, + "curve": [ 0.183, 0.17, 0.75, 1 ] + }, + { + "time": 5.1666, + "angle": -6.05, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 5.4, + "angle": 6.15, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 5.6, "angle": -1.26 } + ] + }, + "cannon": { + "rotate": [ + { "time": 0, "angle": 0 } + ] + }, + "cannonTarget": { + "translate": [ + { + "time": 5, + "x": 0, + "y": 0, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 6.3333, "x": -15.38, "y": 99.99 } + ] + } + }, + "ik": { + "cannonTarget": [ + { "time": 0, "mix": 0.809, "curve": "stepped" }, + { "time": 4.7333, "mix": 0.809 }, + { "time": 5.1666, "mix": 0.504 }, + { "time": 5.6666 } + ] + }, + "paths": { + "treads": { + "position": [ + { + "time": 0, + "curve": [ 0.549, 0, 0.907, 0.84 ] + }, + { "time": 3.0333, "position": 0.51 }, + { "time": 4.8666, "position": 0.9794 }, + { + "time": 5.2666, + "position": 1, + "curve": [ 0.226, 0.15, 0.765, 0.96 ] + }, + { + "time": 5.5333, + "position": 1.02, + "curve": [ 0.279, 0.32, 0.694, 0.99 ] + }, + { "time": 5.8333, "position": 1.021 } + ] + } + } + } +} +} \ No newline at end of file diff --git a/spine-sfml/data/tank.png b/spine-sfml/data/tank.png new file mode 100644 index 000000000..9811ee418 Binary files /dev/null and b/spine-sfml/data/tank.png differ diff --git a/spine-sfml/example/main.cpp b/spine-sfml/example/main.cpp index 5b9943cdb..a2ae02c52 100644 --- a/spine-sfml/example/main.cpp +++ b/spine-sfml/example/main.cpp @@ -95,13 +95,10 @@ void spineboy () { Slot* headSlot = Skeleton_findSlot(skeleton, "head"); drawable->state->listener = callback; - if (false) { - AnimationState_setAnimationByName(drawable->state, 0, "test", true); - } else { - AnimationState_setAnimationByName(drawable->state, 0, "walk", true); - AnimationState_addAnimationByName(drawable->state, 0, "jump", false, 3); - AnimationState_addAnimationByName(drawable->state, 0, "run", true, 0); - } + AnimationState_setAnimationByName(drawable->state, 0, "test", true); + AnimationState_addAnimationByName(drawable->state, 0, "walk", true, 0); + AnimationState_addAnimationByName(drawable->state, 0, "jump", false, 3); + AnimationState_addAnimationByName(drawable->state, 0, "run", true, 0); sf::RenderWindow window(sf::VideoMode(640, 480), "Spine SFML - spineboy"); window.setFramerateLimit(60); @@ -207,7 +204,6 @@ void raptor () { Skeleton_updateWorldTransform(skeleton); AnimationState_setAnimationByName(drawable->state, 0, "walk", true); - AnimationState_setAnimationByName(drawable->state, 1, "empty", false); AnimationState_addAnimationByName(drawable->state, 1, "gungrab", false, 2); sf::RenderWindow window(sf::VideoMode(640, 640), "Spine SFML - raptor"); @@ -232,7 +228,92 @@ void raptor () { Atlas_dispose(atlas); } +void tank () { + // Load atlas, skeleton, and animations. + Atlas* atlas = Atlas_createFromFile("data/tank.atlas", 0); + SkeletonJson* json = SkeletonJson_create(atlas); + json->scale = 0.2f; + SkeletonData *skeletonData = SkeletonJson_readSkeletonDataFile(json, "data/tank.json"); + if (!skeletonData) { + printf("Error: %s\n", json->error); + exit(0); + } + SkeletonJson_dispose(json); + + SkeletonDrawable* drawable = new SkeletonDrawable(skeletonData); + drawable->timeScale = 1; + + Skeleton* skeleton = drawable->skeleton; + skeleton->x = 500; + skeleton->y = 590; + Skeleton_updateWorldTransform(skeleton); + + AnimationState_setAnimationByName(drawable->state, 0, "drive", true); + + sf::RenderWindow window(sf::VideoMode(640, 640), "Spine SFML - tank"); + window.setFramerateLimit(60); + sf::Event event; + sf::Clock deltaClock; + + while (window.isOpen()) { + while (window.pollEvent(event)) + if (event.type == sf::Event::Closed) window.close(); + + float delta = deltaClock.getElapsedTime().asSeconds(); + deltaClock.restart(); + drawable->update(delta); + window.clear(); + window.draw(*drawable); + window.display(); + } + + SkeletonData_dispose(skeletonData); + Atlas_dispose(atlas); +} + +/** + * Used for debugging purposes during runtime development + */ +void test () { + // Load atlas, skeleton, and animations. + Atlas* atlas = Atlas_createFromFile("data/tank.atlas", 0); + SkeletonJson* json = SkeletonJson_create(atlas); + json->scale = 1; + SkeletonData *skeletonData = SkeletonJson_readSkeletonDataFile(json, "data/tank.json"); + if (!skeletonData) { + printf("Error: %s\n", json->error); + exit(0); + } + SkeletonJson_dispose(json); + + spSkeleton* skeleton = Skeleton_create(skeletonData); + spAnimationStateData* animData = spAnimationStateData_create(skeletonData); + spAnimationState* animState = spAnimationState_create(animData); + spAnimationState_setAnimationByName(animState, 0, "drive", true); + + + float d = 3; + for (int i = 0; i < 1; i++) { + spSkeleton_update(skeleton, d); + spAnimationState_update(animState, d); + spAnimationState_apply(animState, skeleton); + spSkeleton_updateWorldTransform(skeleton); + for (int ii = 0; ii < skeleton->bonesCount; ii++) { + spBone* bone = skeleton->bones[ii]; + printf("%s %f %f %f %f %f %f\n", bone->data->name, bone->a, bone->b, bone->c, bone->d, bone->worldX, bone->worldY); + } + printf("========================================\n"); + d += 0.1f; + } + + SkeletonData_dispose(skeletonData); + Skeleton_dispose(skeleton); + Atlas_dispose(atlas); +} + int main () { + test(); + tank(); raptor(); spineboy(); goblins(); diff --git a/spine-sfml/src/spine/spine-sfml.cpp b/spine-sfml/src/spine/spine-sfml.cpp index c40da9441..1390461ae 100644 --- a/spine-sfml/src/spine/spine-sfml.cpp +++ b/spine-sfml/src/spine/spine-sfml.cpp @@ -176,7 +176,7 @@ void SkeletonDrawable::draw (RenderTarget& target, RenderStates states) const { } else if (attachment->type == ATTACHMENT_MESH) { MeshAttachment* mesh = (MeshAttachment*)attachment; - if (mesh->verticesCount > SPINE_MESH_VERTEX_COUNT_MAX) continue; + if (mesh->super.worldVerticesLength > SPINE_MESH_VERTEX_COUNT_MAX) continue; texture = (Texture*)((AtlasRegion*)mesh->rendererObject)->page->rendererObject; MeshAttachment_computeWorldVertices(mesh, slot, worldVertices); @@ -199,30 +199,6 @@ void SkeletonDrawable::draw (RenderTarget& target, RenderStates states) const { vertexArray->append(vertex); } - } else if (attachment->type == ATTACHMENT_WEIGHTED_MESH) { - WeightedMeshAttachment* mesh = (WeightedMeshAttachment*)attachment; - if (mesh->uvsCount > SPINE_MESH_VERTEX_COUNT_MAX) continue; - texture = (Texture*)((AtlasRegion*)mesh->rendererObject)->page->rendererObject; - WeightedMeshAttachment_computeWorldVertices(mesh, slot, worldVertices); - - Uint8 r = static_cast(skeleton->r * slot->r * 255); - Uint8 g = static_cast(skeleton->g * slot->g * 255); - Uint8 b = static_cast(skeleton->b * slot->b * 255); - Uint8 a = static_cast(skeleton->a * slot->a * 255); - vertex.color.r = r; - vertex.color.g = g; - vertex.color.b = b; - vertex.color.a = a; - - Vector2u size = texture->getSize(); - for (int i = 0; i < mesh->trianglesCount; ++i) { - int index = mesh->triangles[i] << 1; - vertex.position.x = worldVertices[index]; - vertex.position.y = worldVertices[index + 1]; - vertex.texCoords.x = mesh->uvs[index] * size.x; - vertex.texCoords.y = mesh->uvs[index + 1] * size.y; - vertexArray->append(vertex); - } } if (texture) { diff --git a/spine-torque2d/README.md b/spine-torque2d/README.md deleted file mode 100644 index d3ed6de67..000000000 --- a/spine-torque2d/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# spine-torque2d - -The Spine runtime for [Torque2D](https://www.garagegames.com/products/torque-2d) is currently integrated into Torque2D itself: - -https://github.com/GarageGames/Torque2D/tree/master/engine/source/spine - -Unfortunately, it is also a bit out of date.