diff --git a/.gitignore b/.gitignore index 31ce4784b..682b3cb5e 100644 --- a/.gitignore +++ b/.gitignore @@ -25,12 +25,9 @@ spine-libgdx/libs/* spine-cocos2dx/2/cocos2dx/ !spine-cocos2dx/2/cocos2dx/Place cocos2dx here.txt spine-cocos2dx/2/example/proj.win32/Debug -spine-cocos2dx/3.0/cocos2dx/ -!spine-cocos2dx/3.0/cocos2dx/Place cocos2dx here.txt -spine-cocos2dx/3.0/example/proj.win32/Debug -spine-cocos2dx/3.1/cocos2dx/ -!spine-cocos2dx/3.1/cocos2dx/Place cocos2dx here.txt -spine-cocos2dx/3.1/example/proj.win32/Debug +spine-cocos2dx/3/cocos2dx/ +!spine-cocos2dx/3/cocos2dx/Place cocos2dx here.txt +spine-cocos2dx/3/example/proj.win32/Debug xcuserdata spine-cocos2d-iphone/2/cocos2d/* diff --git a/spine-c/include/spine/Animation.h b/spine-c/include/spine/Animation.h index 17bbf550d..576fcefe9 100644 --- a/spine-c/include/spine/Animation.h +++ b/spine-c/include/spine/Animation.h @@ -45,25 +45,25 @@ typedef struct { const char* const name; float duration; - int timelineCount; + int timelinesCount; spTimeline** timelines; } spAnimation; -spAnimation* spAnimation_create (const char* name, int timelineCount); +spAnimation* spAnimation_create (const char* name, int timelinesCount); 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. */ void spAnimation_apply (const spAnimation* self, struct spSkeleton* skeleton, float lastTime, float time, int loop, - spEvent** events, int* eventCount); + 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 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* eventCount, float alpha); + spEvent** events, int* eventsCount, float alpha); #ifdef SPINE_SHORT_NAMES typedef spAnimation Animation; @@ -83,7 +83,8 @@ typedef enum { SP_TIMELINE_ATTACHMENT, SP_TIMELINE_EVENT, SP_TIMELINE_DRAWORDER, - SP_TIMELINE_FFD + SP_TIMELINE_FFD, + SP_TIMELINE_IKCONSTRAINT } spTimelineType; struct spTimeline { @@ -94,7 +95,7 @@ struct spTimeline { void spTimeline_dispose (spTimeline* self); void spTimeline_apply (const spTimeline* self, struct spSkeleton* skeleton, float lastTime, float time, spEvent** firedEvents, - int* eventCount, float alpha); + int* eventsCount, float alpha); #ifdef SPINE_SHORT_NAMES typedef spTimeline Timeline; @@ -113,7 +114,7 @@ typedef spTimeline Timeline; typedef struct { spTimeline super; - float* curves; /* dfx, dfy, ddfx, ddfy, dddfx, dddfy, ... */ + float* curves; /* type, x, y, ... */ } spCurveTimeline; void spCurveTimeline_setLinear (spCurveTimeline* self, int frameIndex); @@ -142,7 +143,7 @@ typedef struct spBaseTimeline { int boneIndex; } spRotateTimeline; -spRotateTimeline* spRotateTimeline_create (int frameCount); +spRotateTimeline* spRotateTimeline_create (int framesCount); void spRotateTimeline_setFrame (spRotateTimeline* self, int frameIndex, float time, float angle); @@ -156,7 +157,7 @@ typedef spRotateTimeline RotateTimeline; typedef struct spBaseTimeline spTranslateTimeline; -spTranslateTimeline* spTranslateTimeline_create (int frameCount); +spTranslateTimeline* spTranslateTimeline_create (int framesCount); void spTranslateTimeline_setFrame (spTranslateTimeline* self, int frameIndex, float time, float x, float y); @@ -170,7 +171,7 @@ typedef spTranslateTimeline TranslateTimeline; typedef struct spBaseTimeline spScaleTimeline; -spScaleTimeline* spScaleTimeline_create (int frameCount); +spScaleTimeline* spScaleTimeline_create (int framesCount); void spScaleTimeline_setFrame (spScaleTimeline* self, int frameIndex, float time, float x, float y); @@ -189,7 +190,7 @@ typedef struct { int slotIndex; } spColorTimeline; -spColorTimeline* spColorTimeline_create (int frameCount); +spColorTimeline* spColorTimeline_create (int framesCount); void spColorTimeline_setFrame (spColorTimeline* self, int frameIndex, float time, float r, float g, float b, float a); @@ -209,7 +210,7 @@ typedef struct { const char** const attachmentNames; } spAttachmentTimeline; -spAttachmentTimeline* spAttachmentTimeline_create (int frameCount); +spAttachmentTimeline* spAttachmentTimeline_create (int framesCount); /* @param attachmentName May be 0. */ void spAttachmentTimeline_setFrame (spAttachmentTimeline* self, int frameIndex, float time, const char* attachmentName); @@ -229,7 +230,7 @@ typedef struct { spEvent** const events; } spEventTimeline; -spEventTimeline* spEventTimeline_create (int frameCount); +spEventTimeline* spEventTimeline_create (int framesCount); void spEventTimeline_setFrame (spEventTimeline* self, int frameIndex, float time, spEvent* event); @@ -246,10 +247,10 @@ typedef struct { int const framesCount; float* const frames; /* time, ... */ const int** const drawOrders; - int const slotCount; + int const slotsCount; } spDrawOrderTimeline; -spDrawOrderTimeline* spDrawOrderTimeline_create (int frameCount, int slotCount); +spDrawOrderTimeline* spDrawOrderTimeline_create (int framesCount, int slotsCount); void spDrawOrderTimeline_setFrame (spDrawOrderTimeline* self, int frameIndex, float time, const int* drawOrder); @@ -271,7 +272,7 @@ typedef struct { spAttachment* attachment; } spFFDTimeline; -spFFDTimeline* spFFDTimeline_create (int frameCount, int frameVerticesCount); +spFFDTimeline* spFFDTimeline_create (int framesCount, int frameVerticesCount); void spFFDTimeline_setFrame (spFFDTimeline* self, int frameIndex, float time, float* vertices); @@ -281,6 +282,28 @@ typedef spFFDTimeline FFDTimeline; #define FFDTimeline_setFrame(...) spFFDTimeline_setFrame(__VA_ARGS__) #endif +/**/ + +typedef struct { + spCurveTimeline super; + int const framesCount; + float* const frames; /* time, mix, bendDirection, ... */ + int ikConstraintIndex; +} spIkConstraintTimeline; + +spIkConstraintTimeline* spIkConstraintTimeline_create (int framesCount); + +/* @param attachmentName May be 0. */ +void spIkConstraintTimeline_setFrame (spIkConstraintTimeline* self, int frameIndex, float time, float mix, int bendDirection); + +#ifdef SPINE_SHORT_NAMES +typedef spIkConstraintTimeline IkConstraintTimeline; +#define IkConstraintTimeline_create(...) spIkConstraintTimeline_create(__VA_ARGS__) +#define IkConstraintTimeline_setFrame(...) spIkConstraintTimeline_setFrame(__VA_ARGS__) +#endif + +/**/ + #ifdef __cplusplus } #endif diff --git a/spine-c/include/spine/AnimationState.h b/spine-c/include/spine/AnimationState.h index ca9ce553f..7952bc80b 100644 --- a/spine-c/include/spine/AnimationState.h +++ b/spine-c/include/spine/AnimationState.h @@ -67,7 +67,7 @@ struct spAnimationState { float timeScale; spAnimationStateListener listener; - int trackCount; + int tracksCount; spTrackEntry** tracks; void* rendererObject; diff --git a/spine-c/include/spine/Bone.h b/spine-c/include/spine/Bone.h index f934ae404..5e8b1f7bf 100644 --- a/spine-c/include/spine/Bone.h +++ b/spine-c/include/spine/Bone.h @@ -37,12 +37,15 @@ extern "C" { #endif +struct spSkeleton; + typedef struct spBone spBone; struct spBone { spBoneData* const data; + struct spSkeleton* const skeleton; spBone* const parent; float x, y; - float rotation; + float rotation, rotationIK; float scaleX, scaleY; float const m00, m01, worldX; /* a b x */ @@ -54,12 +57,15 @@ struct spBone { void spBone_setYDown (int/*bool*/yDown); /* @param parent May be 0. */ -spBone* spBone_create (spBoneData* data, spBone* parent); +spBone* spBone_create (spBoneData* data, struct spSkeleton* skeleton, spBone* parent); void spBone_dispose (spBone* self); void spBone_setToSetupPose (spBone* self); -void spBone_updateWorldTransform (spBone* self, int/*bool*/flipX, int/*bool*/flipY); +void spBone_updateWorldTransform (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); #ifdef SPINE_SHORT_NAMES typedef spBone Bone; @@ -68,6 +74,8 @@ typedef spBone Bone; #define Bone_dispose(...) spBone_dispose(__VA_ARGS__) #define Bone_setToSetupPose(...) spBone_setToSetupPose(__VA_ARGS__) #define Bone_updateWorldTransform(...) spBone_updateWorldTransform(__VA_ARGS__) +#define Bone_worldToLocal(...) spBone_worldToLocal(__VA_ARGS__) +#define Bone_localToWorld(...) spBone_localToWorld(__VA_ARGS__) #endif #ifdef __cplusplus diff --git a/spine-c/include/spine/BoundingBoxAttachment.h b/spine-c/include/spine/BoundingBoxAttachment.h index eab343810..e67db6c77 100644 --- a/spine-c/include/spine/BoundingBoxAttachment.h +++ b/spine-c/include/spine/BoundingBoxAttachment.h @@ -47,7 +47,7 @@ struct spBoundingBoxAttachment { }; spBoundingBoxAttachment* spBoundingBoxAttachment_create (const char* name); -void spBoundingBoxAttachment_computeWorldVertices (spBoundingBoxAttachment* self, float x, float y, spBone* bone, float* vertices); +void spBoundingBoxAttachment_computeWorldVertices (spBoundingBoxAttachment* self, spBone* bone, float* vertices); #ifdef SPINE_SHORT_NAMES typedef spBoundingBoxAttachment BoundingBoxAttachment; diff --git a/spine-cocos2dx/3.1/src/spine/PolygonBatch.h b/spine-c/include/spine/IkConstraint.h similarity index 63% rename from spine-cocos2dx/3.1/src/spine/PolygonBatch.h rename to spine-c/include/spine/IkConstraint.h index 904f4ae8f..b5cd89b59 100644 --- a/spine-cocos2dx/3.1/src/spine/PolygonBatch.h +++ b/spine-c/include/spine/IkConstraint.h @@ -28,40 +28,46 @@ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *****************************************************************************/ -#ifndef SPINE_POLYGONBATCH_H_ -#define SPINE_POLYGONBATCH_H_ +#ifndef SPINE_IKCONSTRAINT_H_ +#define SPINE_IKCONSTRAINT_H_ -#include "cocos2d.h" +#include +#include -namespace spine { +#ifdef __cplusplus +extern "C" { +#endif -class PolygonBatch : public cocos2d::Ref { -public: - static PolygonBatch* createWithCapacity (int capacity); +struct spSkeleton; - /** @js ctor */ - PolygonBatch(); - - /** @js NA - * @lua NA */ - virtual ~PolygonBatch(); - - bool initWithCapacity (int capacity); - void add (const cocos2d::Texture2D* texture, - const float* vertices, const float* uvs, int verticesCount, - const int* triangles, int trianglesCount, - cocos2d::Color4B* color); - void flush (); - -private: - int capacity; - cocos2d::V2F_C4B_T2F* vertices; - int verticesCount; - GLushort* triangles; - int trianglesCount; - const cocos2d::Texture2D* texture; +typedef struct spIkConstraint spIkConstraint; +struct spIkConstraint { + spIkConstraintData* const data; + + int bonesCount; + spBone** bones; + + spBone* target; + int bendDirection; + float mix; }; -} +spIkConstraint* spIkConstraint_create (spIkConstraintData* data, const struct spSkeleton* skeleton); +void spIkConstraint_dispose (spIkConstraint* self); -#endif // SPINE_POLYGONBATCH_H_ +void spIkConstraint_apply (spIkConstraint* self); + +void spIkConstraint_apply1 (spBone* bone, float targetX, float targetY, float alpha); +void spIkConstraint_apply2 (spBone* parent, spBone* child, float targetX, float targetY, int bendDirection, float alpha); + +#ifdef SPINE_SHORT_NAMES +typedef spIkConstraint IkConstraint; +#define IkConstraint_create(...) spIkConstraint_create(__VA_ARGS__) +#define IkConstraint_dispose(...) spIkConstraint_dispose(__VA_ARGS__) +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* SPINE_IKCONSTRAINT_H_ */ diff --git a/spine-cocos2dx/3.0/src/spine/PolygonBatch.h b/spine-c/include/spine/IkConstraintData.h similarity index 70% rename from spine-cocos2dx/3.0/src/spine/PolygonBatch.h rename to spine-c/include/spine/IkConstraintData.h index 904f4ae8f..7cacd369d 100644 --- a/spine-cocos2dx/3.0/src/spine/PolygonBatch.h +++ b/spine-c/include/spine/IkConstraintData.h @@ -28,40 +28,38 @@ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *****************************************************************************/ -#ifndef SPINE_POLYGONBATCH_H_ -#define SPINE_POLYGONBATCH_H_ +#ifndef SPINE_IKCONSTRAINTDATA_H_ +#define SPINE_IKCONSTRAINTDATA_H_ -#include "cocos2d.h" +#include -namespace spine { +#ifdef __cplusplus +extern "C" { +#endif -class PolygonBatch : public cocos2d::Ref { -public: - static PolygonBatch* createWithCapacity (int capacity); - - /** @js ctor */ - PolygonBatch(); - - /** @js NA - * @lua NA */ - virtual ~PolygonBatch(); - - bool initWithCapacity (int capacity); - void add (const cocos2d::Texture2D* texture, - const float* vertices, const float* uvs, int verticesCount, - const int* triangles, int trianglesCount, - cocos2d::Color4B* color); - void flush (); - -private: - int capacity; - cocos2d::V2F_C4B_T2F* vertices; - int verticesCount; - GLushort* triangles; - int trianglesCount; - const cocos2d::Texture2D* texture; +typedef struct spIkConstraintData spIkConstraintData; +struct spIkConstraintData { + const char* const name; + + int bonesCount; + spBoneData** bones; + + spBoneData* target; + int bendDirection; + float mix; }; -} +spIkConstraintData* spIkConstraintData_create (const char* name); +void spIkConstraintData_dispose (spIkConstraintData* self); -#endif // SPINE_POLYGONBATCH_H_ +#ifdef SPINE_SHORT_NAMES +typedef spIkConstraintData IkConstraintData; +#define IkConstraintData_create(...) spIkConstraintData_create(__VA_ARGS__) +#define IkConstraintData_dispose(...) spIkConstraintData_dispose(__VA_ARGS__) +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* SPINE_IKCONSTRAINTDATA_H_ */ diff --git a/spine-c/include/spine/MeshAttachment.h b/spine-c/include/spine/MeshAttachment.h index f0cf29ed8..5948d84ae 100644 --- a/spine-c/include/spine/MeshAttachment.h +++ b/spine-c/include/spine/MeshAttachment.h @@ -71,7 +71,7 @@ struct spMeshAttachment { spMeshAttachment* spMeshAttachment_create (const char* name); void spMeshAttachment_updateUVs (spMeshAttachment* self); -void spMeshAttachment_computeWorldVertices (spMeshAttachment* self, float x, float y, spSlot* slot, float* worldVertices); +void spMeshAttachment_computeWorldVertices (spMeshAttachment* self, spSlot* slot, float* worldVertices); #ifdef SPINE_SHORT_NAMES typedef spMeshAttachment MeshAttachment; diff --git a/spine-c/include/spine/RegionAttachment.h b/spine-c/include/spine/RegionAttachment.h index 9b91d50e0..22def9486 100644 --- a/spine-c/include/spine/RegionAttachment.h +++ b/spine-c/include/spine/RegionAttachment.h @@ -62,7 +62,7 @@ struct spRegionAttachment { spRegionAttachment* spRegionAttachment_create (const char* name); void spRegionAttachment_setUVs (spRegionAttachment* self, float u, float v, float u2, float v2, int/*bool*/rotate); void spRegionAttachment_updateOffset (spRegionAttachment* self); -void spRegionAttachment_computeWorldVertices (spRegionAttachment* self, float x, float y, spBone* bone, float* vertices); +void spRegionAttachment_computeWorldVertices (spRegionAttachment* self, spBone* bone, float* vertices); #ifdef SPINE_SHORT_NAMES typedef spVertexIndex VertexIndex; diff --git a/spine-c/include/spine/Skeleton.h b/spine-c/include/spine/Skeleton.h index 0df09e033..34517c8ff 100644 --- a/spine-c/include/spine/Skeleton.h +++ b/spine-c/include/spine/Skeleton.h @@ -34,6 +34,7 @@ #include #include #include +#include #ifdef __cplusplus extern "C" { @@ -43,14 +44,17 @@ typedef struct spSkeleton spSkeleton; struct spSkeleton { spSkeletonData* const data; - int boneCount; + int bonesCount; spBone** bones; spBone* const root; - int slotCount; + int slotsCount; spSlot** slots; spSlot** drawOrder; + int ikConstraintsCount; + spIkConstraint** ikConstraints; + spSkin* const skin; float r, g, b, a; float time; @@ -61,6 +65,8 @@ struct spSkeleton { spSkeleton* spSkeleton_create (spSkeletonData* data); void spSkeleton_dispose (spSkeleton* self); +/* Caches information about bones and IK constraints. Must be called if bones or IK constraints are added or removed. */ +void spSkeleton_updateCache (const spSkeleton* self); void spSkeleton_updateWorldTransform (const spSkeleton* self); void spSkeleton_setToSetupPose (const spSkeleton* self); @@ -92,6 +98,9 @@ spAttachment* spSkeleton_getAttachmentForSlotIndex (const spSkeleton* self, int /* Returns 0 if the slot or attachment was not found. */ int spSkeleton_setAttachment (spSkeleton* self, const char* slotName, const char* attachmentName); +/* Returns 0 if the IK constraint was not found. */ +spIkConstraint* spSkeleton_findIkConstraint (const spSkeleton* self, const char* ikConstraintName); + 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 a5a807ba2..1c9822fe4 100644 --- a/spine-c/include/spine/SkeletonData.h +++ b/spine-c/include/spine/SkeletonData.h @@ -36,27 +36,35 @@ #include #include #include +#include #ifdef __cplusplus extern "C" { #endif typedef struct { - int boneCount; + const char* version; + const char* hash; + float width, height; + + int bonesCount; spBoneData** bones; - int slotCount; + int slotsCount; spSlotData** slots; - int skinCount; + int skinsCount; spSkin** skins; spSkin* defaultSkin; - int eventCount; + int eventsCount; spEventData** events; - int animationCount; + int animationsCount; spAnimation** animations; + + int ikConstraintsCount; + spIkConstraintData** ikConstraints; } spSkeletonData; spSkeletonData* spSkeletonData_create (); @@ -74,6 +82,8 @@ spEventData* spSkeletonData_findEvent (const spSkeletonData* self, const char* e spAnimation* spSkeletonData_findAnimation (const spSkeletonData* self, const char* animationName); +spIkConstraintData* spSkeletonData_findIkConstraint (const spSkeletonData* self, const char* ikConstraintName); + #ifdef SPINE_SHORT_NAMES typedef spSkeletonData SkeletonData; #define SkeletonData_create(...) spSkeletonData_create(__VA_ARGS__) diff --git a/spine-c/include/spine/SkinnedMeshAttachment.h b/spine-c/include/spine/SkinnedMeshAttachment.h index 9e3966edb..9d60565e6 100644 --- a/spine-c/include/spine/SkinnedMeshAttachment.h +++ b/spine-c/include/spine/SkinnedMeshAttachment.h @@ -74,7 +74,7 @@ struct spSkinnedMeshAttachment { spSkinnedMeshAttachment* spSkinnedMeshAttachment_create (const char* name); void spSkinnedMeshAttachment_updateUVs (spSkinnedMeshAttachment* self); -void spSkinnedMeshAttachment_computeWorldVertices (spSkinnedMeshAttachment* self, float x, float y, spSlot* bone, float* worldVertices); +void spSkinnedMeshAttachment_computeWorldVertices (spSkinnedMeshAttachment* self, spSlot* slot, float* worldVertices); #ifdef SPINE_SHORT_NAMES typedef spSkinnedMeshAttachment SkinnedMeshAttachment; diff --git a/spine-c/include/spine/Slot.h b/spine-c/include/spine/Slot.h index bb4cce6ee..9e5c66da4 100644 --- a/spine-c/include/spine/Slot.h +++ b/spine-c/include/spine/Slot.h @@ -39,11 +39,8 @@ extern "C" { #endif -struct spSkeleton; - typedef struct spSlot { spSlotData* const data; - struct spSkeleton* const skeleton; spBone* const bone; float r, g, b, a; spAttachment* const attachment; @@ -53,7 +50,7 @@ typedef struct spSlot { float* attachmentVertices; } spSlot; -spSlot* spSlot_create (spSlotData* data, struct spSkeleton* skeleton, spBone* bone); +spSlot* spSlot_create (spSlotData* data, spBone* bone); void spSlot_dispose (spSlot* self); /* @param attachment May be 0 to clear the attachment for the slot. */ diff --git a/spine-c/include/spine/extension.h b/spine-c/include/spine/extension.h index b8ce9ee80..281d63212 100644 --- a/spine-c/include/spine/extension.h +++ b/spine-c/include/spine/extension.h @@ -57,10 +57,24 @@ /* Allocates a new char[], assigns it to TO, and copies FROM to it. Can be used on const types. */ #define MALLOC_STR(TO,FROM) strcpy(CONST_CAST(char*, TO) = (char*)MALLOC(char, strlen(FROM) + 1), FROM) +#define PI 3.1415926535897932385f +#define DEG_RAD (PI / 180) +#define RAD_DEG (180 / PI) + #ifdef __STDC_VERSION__ #define FMOD(A,B) fmodf(A, B) +#define ATAN2(A,B) atan2f(A, B) +#define SIN(A) sinf(A) +#define COS(A) cosf(A) +#define SQRT(A) sqrtf(A) +#define ACOS(A) acosf(A) #else #define FMOD(A,B) (float)fmod(A, B) +#define ATAN2(A,B) (float)atan2(A, B) +#define COS(A) (float)cos(A) +#define SIN(A) (float)sin(A) +#define SQRT(A) (float)sqrt(A) +#define ACOS(A) (float)acos(A) #endif #include @@ -154,7 +168,7 @@ void _spAttachment_deinit (spAttachment* self); void _spTimeline_init (spTimeline* self, spTimelineType type, /**/ void (*dispose) (spTimeline* self), /**/ void (*apply) (const spTimeline* self, spSkeleton* skeleton, float lastTime, float time, spEvent** firedEvents, - int* eventCount, float alpha)); + int* eventsCount, float alpha)); void _spTimeline_deinit (spTimeline* self); #ifdef SPINE_SHORT_NAMES @@ -164,10 +178,10 @@ void _spTimeline_deinit (spTimeline* self); /**/ -void _spCurveTimeline_init (spCurveTimeline* self, spTimelineType type, int frameCount, /**/ +void _spCurveTimeline_init (spCurveTimeline* self, spTimelineType type, int framesCount, /**/ void (*dispose) (spTimeline* self), /**/ void (*apply) (const spTimeline* self, spSkeleton* skeleton, float lastTime, float time, spEvent** firedEvents, - int* eventCount, float alpha)); + int* eventsCount, float alpha)); void _spCurveTimeline_deinit (spCurveTimeline* self); #ifdef SPINE_SHORT_NAMES diff --git a/spine-c/spine-c.vcxproj b/spine-c/spine-c.vcxproj index 2a54d9a5c..5219ad301 100644 --- a/spine-c/spine-c.vcxproj +++ b/spine-c/spine-c.vcxproj @@ -84,6 +84,8 @@ + + @@ -111,6 +113,8 @@ + + diff --git a/spine-c/spine-c.vcxproj.filters b/spine-c/spine-c.vcxproj.filters index 580b17c30..7dc493ef9 100644 --- a/spine-c/spine-c.vcxproj.filters +++ b/spine-c/spine-c.vcxproj.filters @@ -90,6 +90,12 @@ Header Files + + Header Files + + + Header Files + @@ -164,5 +170,11 @@ Source Files + + Source Files + + + Source Files + \ No newline at end of file diff --git a/spine-c/src/spine/Animation.c b/spine-c/src/spine/Animation.c index 68a8ca2a5..b246e8c07 100644 --- a/spine-c/src/spine/Animation.c +++ b/spine-c/src/spine/Animation.c @@ -29,20 +29,21 @@ *****************************************************************************/ #include +#include #include #include -spAnimation* spAnimation_create (const char* name, int timelineCount) { +spAnimation* spAnimation_create (const char* name, int timelinesCount) { spAnimation* self = NEW(spAnimation); MALLOC_STR(self->name, name); - self->timelineCount = timelineCount; - self->timelines = MALLOC(spTimeline*, timelineCount); + self->timelinesCount = timelinesCount; + self->timelines = MALLOC(spTimeline*, timelinesCount); return self; } void spAnimation_dispose (spAnimation* self) { int i; - for (i = 0; i < self->timelineCount; ++i) + for (i = 0; i < self->timelinesCount; ++i) spTimeline_dispose(self->timelines[i]); FREE(self->timelines); FREE(self->name); @@ -50,8 +51,8 @@ void spAnimation_dispose (spAnimation* self) { } void spAnimation_apply (const spAnimation* self, spSkeleton* skeleton, float lastTime, float time, int loop, spEvent** events, - int* eventCount) { - int i, n = self->timelineCount; + int* eventsCount) { + int i, n = self->timelinesCount; if (loop && self->duration) { time = FMOD(time, self->duration); @@ -59,12 +60,12 @@ void spAnimation_apply (const spAnimation* self, spSkeleton* skeleton, float las } for (i = 0; i < n; ++i) - spTimeline_apply(self->timelines[i], skeleton, lastTime, time, events, eventCount, 1); + spTimeline_apply(self->timelines[i], skeleton, lastTime, time, events, eventsCount, 1); } void spAnimation_mix (const spAnimation* self, spSkeleton* skeleton, float lastTime, float time, int loop, spEvent** events, - int* eventCount, float alpha) { - int i, n = self->timelineCount; + int* eventsCount, float alpha) { + int i, n = self->timelinesCount; if (loop && self->duration) { time = FMOD(time, self->duration); @@ -72,21 +73,21 @@ void spAnimation_mix (const spAnimation* self, spSkeleton* skeleton, float lastT } for (i = 0; i < n; ++i) - spTimeline_apply(self->timelines[i], skeleton, lastTime, time, events, eventCount, alpha); + spTimeline_apply(self->timelines[i], skeleton, lastTime, time, events, eventsCount, alpha); } /**/ typedef struct _spTimelineVtable { void (*apply) (const spTimeline* self, spSkeleton* skeleton, float lastTime, float time, spEvent** firedEvents, - int* eventCount, float alpha); + int* eventsCount, float alpha); void (*dispose) (spTimeline* self); } _spTimelineVtable; void _spTimeline_init (spTimeline* self, spTimelineType type, /**/ void (*dispose) (spTimeline* self), /**/ void (*apply) (const spTimeline* self, spSkeleton* skeleton, float lastTime, float time, spEvent** firedEvents, - int* eventCount, float alpha)) { + int* eventsCount, float alpha)) { CONST_CAST(spTimelineType, self->type) = type; CONST_CAST(_spTimelineVtable*, self->vtable) = NEW(_spTimelineVtable); VTABLE(spTimeline, self)->dispose = dispose; @@ -102,22 +103,21 @@ void spTimeline_dispose (spTimeline* self) { } void spTimeline_apply (const spTimeline* self, spSkeleton* skeleton, float lastTime, float time, spEvent** firedEvents, - int* eventCount, float alpha) { - VTABLE(spTimeline, self)->apply(self, skeleton, lastTime, time, firedEvents, eventCount, alpha); + int* eventsCount, float alpha) { + VTABLE(spTimeline, self)->apply(self, skeleton, lastTime, time, firedEvents, eventsCount, alpha); } /**/ -static const float CURVE_LINEAR = 0; -static const float CURVE_STEPPED = -1; -static const int CURVE_SEGMENTS = 10; +static const float CURVE_LINEAR = 0, CURVE_STEPPED = 1, CURVE_BEZIER = 2; +static const int BEZIER_SEGMENTS = 10, BEZIER_SIZE = 10 * 2 - 1; -void _spCurveTimeline_init (spCurveTimeline* self, spTimelineType type, int frameCount, /**/ +void _spCurveTimeline_init (spCurveTimeline* self, spTimelineType type, int framesCount, /**/ void (*dispose) (spTimeline* self), /**/ void (*apply) (const spTimeline* self, spSkeleton* skeleton, float lastTime, float time, spEvent** firedEvents, - int* eventCount, float alpha)) { + int* eventsCount, float alpha)) { _spTimeline_init(SUPER(self), type, dispose, apply); - self->curves = CALLOC(float, (frameCount - 1) * 6); + self->curves = CALLOC(float, (framesCount - 1) * BEZIER_SIZE); } void _spCurveTimeline_deinit (spCurveTimeline* self) { @@ -126,61 +126,28 @@ void _spCurveTimeline_deinit (spCurveTimeline* self) { } void spCurveTimeline_setLinear (spCurveTimeline* self, int frameIndex) { - self->curves[frameIndex * 6] = CURVE_LINEAR; + self->curves[frameIndex * BEZIER_SIZE] = CURVE_LINEAR; } void spCurveTimeline_setStepped (spCurveTimeline* self, int frameIndex) { - self->curves[frameIndex * 6] = CURVE_STEPPED; + self->curves[frameIndex * BEZIER_SIZE] = CURVE_STEPPED; } void spCurveTimeline_setCurve (spCurveTimeline* self, int frameIndex, float cx1, float cy1, float cx2, float cy2) { - float subdiv_step = 1.0f / CURVE_SEGMENTS; - float subdiv_step2 = subdiv_step * subdiv_step; - float subdiv_step3 = subdiv_step2 * subdiv_step; - float pre1 = 3 * subdiv_step; - float pre2 = 3 * subdiv_step2; - float pre4 = 6 * subdiv_step2; - float pre5 = 6 * subdiv_step3; - float tmp1x = -cx1 * 2 + cx2; - float tmp1y = -cy1 * 2 + cy2; - float tmp2x = (cx1 - cx2) * 3 + 1; - float tmp2y = (cy1 - cy2) * 3 + 1; - int i = frameIndex * 6; - self->curves[i] = cx1 * pre1 + tmp1x * pre2 + tmp2x * subdiv_step3; - self->curves[i + 1] = cy1 * pre1 + tmp1y * pre2 + tmp2y * subdiv_step3; - self->curves[i + 2] = tmp1x * pre4 + tmp2x * pre5; - self->curves[i + 3] = tmp1y * pre4 + tmp2y * pre5; - self->curves[i + 4] = tmp2x * pre5; - self->curves[i + 5] = tmp2y * pre5; -} + 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 x = dfx, y = dfy; -float spCurveTimeline_getCurvePercent (const spCurveTimeline* self, int frameIndex, float percent) { - float dfy; - float ddfx; - float ddfy; - float dddfx; - float dddfy; - float x, y; - int i; - int curveIndex = frameIndex * 6; - float dfx = self->curves[curveIndex]; - if (dfx == CURVE_LINEAR) return percent; - if (dfx == CURVE_STEPPED) return 0; - dfy = self->curves[curveIndex + 1]; - ddfx = self->curves[curveIndex + 2]; - ddfy = self->curves[curveIndex + 3]; - dddfx = self->curves[curveIndex + 4]; - dddfy = self->curves[curveIndex + 5]; - x = dfx, y = dfy; - i = CURVE_SEGMENTS - 2; - while (1) { - if (x >= percent) { - float lastX = x - dfx; - float lastY = y - dfy; - return lastY + (y - lastY) * (percent - lastX) / (x - lastX); - } - if (i == 0) break; - i--; + int i = frameIndex * BEZIER_SIZE, n = i + BEZIER_SIZE - 1; + self->curves[i++] = CURVE_BEZIER; + + for (; i < n; i += 2) { + self->curves[i] = x; + self->curves[i + 1] = y; dfx += ddfx; dfy += ddfy; ddfx += dddfx; @@ -188,6 +155,31 @@ float spCurveTimeline_getCurvePercent (const spCurveTimeline* self, int frameInd x += dfx; y += dfy; } +} + +float spCurveTimeline_getCurvePercent (const spCurveTimeline* self, int frameIndex, float percent) { + float x, y; + int i = frameIndex * BEZIER_SIZE, start, n; + float type = self->curves[i]; + if (type == CURVE_LINEAR) return percent; + if (type == CURVE_STEPPED) return 0; + i++; + x = 0; + for (start = i, n = i + BEZIER_SIZE - 1; i < n; i += 2) { + x = self->curves[i]; + if (x >= percent) { + float prevX, prevY; + if (i == start) { + prevX = 0; + prevY = 0; + } else { + prevX = self->curves[i - 2]; + prevY = self->curves[i - 1]; + } + return prevY + (self->curves[i + 1] - prevY) * (percent - prevX) / (x - prevX); + } + } + y = self->curves[i - 1]; return y + (1 - y) * (percent - x) / (1 - x); /* Last point is 1,1. */ } @@ -208,6 +200,23 @@ static int binarySearch (float *values, int valuesLength, float target, int step return 0; } +/* @param target After the first and before the last entry. */ +static int binarySearch1 (float *values, int valuesLength, float target) { + int low = 0, current; + int high = valuesLength - 2; + if (high == 0) return 1; + current = high >> 1; + while (1) { + if (values[(current + 1)] <= target) + low = current + 1; + else + high = current; + if (low == high) return low + 1; + current = (low + high) >> 1; + } + 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) { @@ -227,13 +236,13 @@ void _spBaseTimeline_dispose (spTimeline* timeline) { } /* Many timelines have structure identical to struct spBaseTimeline and extend spCurveTimeline. **/ -struct spBaseTimeline* _spBaseTimeline_create (int frameCount, spTimelineType type, int frameSize, /**/ +struct spBaseTimeline* _spBaseTimeline_create (int framesCount, spTimelineType type, int frameSize, /**/ void (*apply) (const spTimeline* self, spSkeleton* skeleton, float lastTime, float time, spEvent** firedEvents, - int* eventCount, float alpha)) { + int* eventsCount, float alpha)) { struct spBaseTimeline* self = NEW(struct spBaseTimeline); - _spCurveTimeline_init(SUPER(self), type, frameCount, _spBaseTimeline_dispose, apply); + _spCurveTimeline_init(SUPER(self), type, framesCount, _spBaseTimeline_dispose, apply); - CONST_CAST(int, self->framesCount) = frameCount * frameSize; + CONST_CAST(int, self->framesCount) = framesCount * frameSize; CONST_CAST(float*, self->frames) = CALLOC(float, self->framesCount); return self; @@ -241,14 +250,14 @@ struct spBaseTimeline* _spBaseTimeline_create (int frameCount, spTimelineType ty /**/ -static const int ROTATE_LAST_FRAME_TIME = -2; +static const int ROTATE_PREV_FRAME_TIME = -2; static const int ROTATE_FRAME_VALUE = 1; void _spRotateTimeline_apply (const spTimeline* timeline, spSkeleton* skeleton, float lastTime, float time, spEvent** firedEvents, - int* eventCount, float alpha) { + int* eventsCount, float alpha) { spBone *bone; int frameIndex; - float lastFrameValue, frameTime, percent, amount; + float prevFrameValue, frameTime, percent, amount; spRotateTimeline* self = SUB_CAST(spRotateTimeline, timeline); @@ -268,17 +277,17 @@ void _spRotateTimeline_apply (const spTimeline* timeline, spSkeleton* skeleton, /* Interpolate between the previous frame and the current frame. */ frameIndex = binarySearch(self->frames, self->framesCount, time, 2); - lastFrameValue = self->frames[frameIndex - 1]; + prevFrameValue = self->frames[frameIndex - 1]; frameTime = self->frames[frameIndex]; - percent = 1 - (time - frameTime) / (self->frames[frameIndex + ROTATE_LAST_FRAME_TIME] - frameTime); - percent = spCurveTimeline_getCurvePercent(SUPER(self), frameIndex / 2 - 1, percent < 0 ? 0 : (percent > 1 ? 1 : percent)); + percent = 1 - (time - frameTime) / (self->frames[frameIndex + ROTATE_PREV_FRAME_TIME] - frameTime); + percent = spCurveTimeline_getCurvePercent(SUPER(self), (frameIndex >> 1) - 1, percent < 0 ? 0 : (percent > 1 ? 1 : percent)); - amount = self->frames[frameIndex + ROTATE_FRAME_VALUE] - lastFrameValue; + amount = self->frames[frameIndex + ROTATE_FRAME_VALUE] - prevFrameValue; while (amount > 180) amount -= 360; while (amount < -180) amount += 360; - amount = bone->data->rotation + (lastFrameValue + amount * percent) - bone->rotation; + amount = bone->data->rotation + (prevFrameValue + amount * percent) - bone->rotation; while (amount > 180) amount -= 360; while (amount < -180) @@ -286,8 +295,8 @@ void _spRotateTimeline_apply (const spTimeline* timeline, spSkeleton* skeleton, bone->rotation += amount * alpha; } -spRotateTimeline* spRotateTimeline_create (int frameCount) { - return _spBaseTimeline_create(frameCount, SP_TIMELINE_ROTATE, 2, _spRotateTimeline_apply); +spRotateTimeline* spRotateTimeline_create (int framesCount) { + return _spBaseTimeline_create(framesCount, SP_TIMELINE_ROTATE, 2, _spRotateTimeline_apply); } void spRotateTimeline_setFrame (spRotateTimeline* self, int frameIndex, float time, float angle) { @@ -298,15 +307,15 @@ void spRotateTimeline_setFrame (spRotateTimeline* self, int frameIndex, float ti /**/ -static const int TRANSLATE_LAST_FRAME_TIME = -3; +static const int TRANSLATE_PREV_FRAME_TIME = -3; static const int TRANSLATE_FRAME_X = 1; static const int TRANSLATE_FRAME_Y = 2; void _spTranslateTimeline_apply (const spTimeline* timeline, spSkeleton* skeleton, float lastTime, float time, - spEvent** firedEvents, int* eventCount, float alpha) { + spEvent** firedEvents, int* eventsCount, float alpha) { spBone *bone; int frameIndex; - float lastFrameX, lastFrameY, frameTime, percent; + float prevFrameX, prevFrameY, frameTime, percent; spTranslateTimeline* self = SUB_CAST(spTranslateTimeline, timeline); @@ -322,20 +331,20 @@ void _spTranslateTimeline_apply (const spTimeline* timeline, spSkeleton* skeleto /* Interpolate between the previous frame and the current frame. */ frameIndex = binarySearch(self->frames, self->framesCount, time, 3); - lastFrameX = self->frames[frameIndex - 2]; - lastFrameY = self->frames[frameIndex - 1]; + prevFrameX = self->frames[frameIndex - 2]; + prevFrameY = self->frames[frameIndex - 1]; frameTime = self->frames[frameIndex]; - percent = 1 - (time - frameTime) / (self->frames[frameIndex + TRANSLATE_LAST_FRAME_TIME] - frameTime); + percent = 1 - (time - frameTime) / (self->frames[frameIndex + TRANSLATE_PREV_FRAME_TIME] - frameTime); percent = spCurveTimeline_getCurvePercent(SUPER(self), frameIndex / 3 - 1, percent < 0 ? 0 : (percent > 1 ? 1 : percent)); - bone->x += (bone->data->x + lastFrameX + (self->frames[frameIndex + TRANSLATE_FRAME_X] - lastFrameX) * percent - bone->x) + bone->x += (bone->data->x + prevFrameX + (self->frames[frameIndex + TRANSLATE_FRAME_X] - prevFrameX) * percent - bone->x) * alpha; - bone->y += (bone->data->y + lastFrameY + (self->frames[frameIndex + TRANSLATE_FRAME_Y] - lastFrameY) * percent - bone->y) + bone->y += (bone->data->y + prevFrameY + (self->frames[frameIndex + TRANSLATE_FRAME_Y] - prevFrameY) * percent - bone->y) * alpha; } -spTranslateTimeline* spTranslateTimeline_create (int frameCount) { - return _spBaseTimeline_create(frameCount, SP_TIMELINE_TRANSLATE, 3, _spTranslateTimeline_apply); +spTranslateTimeline* spTranslateTimeline_create (int framesCount) { + return _spBaseTimeline_create(framesCount, SP_TIMELINE_TRANSLATE, 3, _spTranslateTimeline_apply); } void spTranslateTimeline_setFrame (spTranslateTimeline* self, int frameIndex, float time, float x, float y) { @@ -348,10 +357,10 @@ void spTranslateTimeline_setFrame (spTranslateTimeline* self, int frameIndex, fl /**/ void _spScaleTimeline_apply (const spTimeline* timeline, spSkeleton* skeleton, float lastTime, float time, spEvent** firedEvents, - int* eventCount, float alpha) { + int* eventsCount, float alpha) { spBone *bone; int frameIndex; - float lastFrameX, lastFrameY, frameTime, percent; + float prevFrameX, prevFrameY, frameTime, percent; spScaleTimeline* self = SUB_CAST(spScaleTimeline, timeline); @@ -366,20 +375,20 @@ void _spScaleTimeline_apply (const spTimeline* timeline, spSkeleton* skeleton, f /* Interpolate between the previous frame and the current frame. */ frameIndex = binarySearch(self->frames, self->framesCount, time, 3); - lastFrameX = self->frames[frameIndex - 2]; - lastFrameY = self->frames[frameIndex - 1]; + prevFrameX = self->frames[frameIndex - 2]; + prevFrameY = self->frames[frameIndex - 1]; frameTime = self->frames[frameIndex]; - percent = 1 - (time - frameTime) / (self->frames[frameIndex + TRANSLATE_LAST_FRAME_TIME] - frameTime); + percent = 1 - (time - frameTime) / (self->frames[frameIndex + TRANSLATE_PREV_FRAME_TIME] - frameTime); percent = spCurveTimeline_getCurvePercent(SUPER(self), frameIndex / 3 - 1, percent < 0 ? 0 : (percent > 1 ? 1 : percent)); - bone->scaleX += (bone->data->scaleX - 1 + lastFrameX + (self->frames[frameIndex + TRANSLATE_FRAME_X] - lastFrameX) * percent + bone->scaleX += (bone->data->scaleX - 1 + prevFrameX + (self->frames[frameIndex + TRANSLATE_FRAME_X] - prevFrameX) * percent - bone->scaleX) * alpha; - bone->scaleY += (bone->data->scaleY - 1 + lastFrameY + (self->frames[frameIndex + TRANSLATE_FRAME_Y] - lastFrameY) * percent + bone->scaleY += (bone->data->scaleY - 1 + prevFrameY + (self->frames[frameIndex + TRANSLATE_FRAME_Y] - prevFrameY) * percent - bone->scaleY) * alpha; } -spScaleTimeline* spScaleTimeline_create (int frameCount) { - return _spBaseTimeline_create(frameCount, SP_TIMELINE_SCALE, 3, _spScaleTimeline_apply); +spScaleTimeline* spScaleTimeline_create (int framesCount) { + return _spBaseTimeline_create(framesCount, SP_TIMELINE_SCALE, 3, _spScaleTimeline_apply); } void spScaleTimeline_setFrame (spScaleTimeline* self, int frameIndex, float time, float x, float y) { @@ -388,17 +397,17 @@ void spScaleTimeline_setFrame (spScaleTimeline* self, int frameIndex, float time /**/ -static const int COLOR_LAST_FRAME_TIME = -5; +static const int COLOR_PREV_FRAME_TIME = -5; static const int COLOR_FRAME_R = 1; static const int COLOR_FRAME_G = 2; static const int COLOR_FRAME_B = 3; static const int COLOR_FRAME_A = 4; void _spColorTimeline_apply (const spTimeline* timeline, spSkeleton* skeleton, float lastTime, float time, spEvent** firedEvents, - int* eventCount, float alpha) { + int* eventsCount, float alpha) { spSlot *slot; int frameIndex; - float lastFrameR, lastFrameG, lastFrameB, lastFrameA, percent, frameTime; + float prevFrameR, prevFrameG, prevFrameB, prevFrameA, percent, frameTime; float r, g, b, a; spColorTimeline* self = (spColorTimeline*)timeline; @@ -414,18 +423,18 @@ void _spColorTimeline_apply (const spTimeline* timeline, spSkeleton* skeleton, f } else { /* Interpolate between the previous frame and the current frame. */ frameIndex = binarySearch(self->frames, self->framesCount, time, 5); - lastFrameR = self->frames[frameIndex - 4]; - lastFrameG = self->frames[frameIndex - 3]; - lastFrameB = self->frames[frameIndex - 2]; - lastFrameA = self->frames[frameIndex - 1]; + prevFrameR = self->frames[frameIndex - 4]; + prevFrameG = self->frames[frameIndex - 3]; + prevFrameB = self->frames[frameIndex - 2]; + prevFrameA = self->frames[frameIndex - 1]; frameTime = self->frames[frameIndex]; - percent = 1 - (time - frameTime) / (self->frames[frameIndex + COLOR_LAST_FRAME_TIME] - frameTime); + percent = 1 - (time - frameTime) / (self->frames[frameIndex + COLOR_PREV_FRAME_TIME] - frameTime); percent = spCurveTimeline_getCurvePercent(SUPER(self), frameIndex / 5 - 1, percent < 0 ? 0 : (percent > 1 ? 1 : percent)); - r = lastFrameR + (self->frames[frameIndex + COLOR_FRAME_R] - lastFrameR) * percent; - g = lastFrameG + (self->frames[frameIndex + COLOR_FRAME_G] - lastFrameG) * percent; - b = lastFrameB + (self->frames[frameIndex + COLOR_FRAME_B] - lastFrameB) * percent; - a = lastFrameA + (self->frames[frameIndex + COLOR_FRAME_A] - lastFrameA) * percent; + r = prevFrameR + (self->frames[frameIndex + COLOR_FRAME_R] - prevFrameR) * percent; + g = prevFrameG + (self->frames[frameIndex + COLOR_FRAME_G] - prevFrameG) * percent; + b = prevFrameB + (self->frames[frameIndex + COLOR_FRAME_B] - prevFrameB) * percent; + a = prevFrameA + (self->frames[frameIndex + COLOR_FRAME_A] - prevFrameA) * percent; } slot = skeleton->slots[self->slotIndex]; if (alpha < 1) { @@ -441,8 +450,8 @@ void _spColorTimeline_apply (const spTimeline* timeline, spSkeleton* skeleton, f } } -spColorTimeline* spColorTimeline_create (int frameCount) { - return (spColorTimeline*)_spBaseTimeline_create(frameCount, SP_TIMELINE_COLOR, 5, _spColorTimeline_apply); +spColorTimeline* spColorTimeline_create (int framesCount) { + return (spColorTimeline*)_spBaseTimeline_create(framesCount, SP_TIMELINE_COLOR, 5, _spColorTimeline_apply); } void spColorTimeline_setFrame (spColorTimeline* self, int frameIndex, float time, float r, float g, float b, float a) { @@ -457,17 +466,20 @@ void spColorTimeline_setFrame (spColorTimeline* self, int frameIndex, float time /**/ void _spAttachmentTimeline_apply (const spTimeline* timeline, spSkeleton* skeleton, float lastTime, float time, - spEvent** firedEvents, int* eventCount, float alpha) { + spEvent** firedEvents, int* eventsCount, float alpha) { int frameIndex; const char* attachmentName; spAttachmentTimeline* self = (spAttachmentTimeline*)timeline; - if (time < self->frames[0]) return; /* Time is before first frame. */ + 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[self->framesCount - 1]) /* Time is after last frame. */ - frameIndex = self->framesCount - 1; - else - frameIndex = binarySearch(self->frames, self->framesCount, time, 1) - 1; + frameIndex = time >= self->frames[self->framesCount - 1] ? + self->framesCount - 1 : binarySearch1(self->frames, self->framesCount, time) - 1; + if (self->frames[frameIndex] <= lastTime) return; attachmentName = self->attachmentNames[frameIndex]; spSlot_setAttachment(skeleton->slots[self->slotIndex], @@ -487,13 +499,13 @@ void _spAttachmentTimeline_dispose (spTimeline* timeline) { FREE(self); } -spAttachmentTimeline* spAttachmentTimeline_create (int frameCount) { +spAttachmentTimeline* spAttachmentTimeline_create (int framesCount) { spAttachmentTimeline* self = NEW(spAttachmentTimeline); _spTimeline_init(SUPER(self), SP_TIMELINE_ATTACHMENT, _spAttachmentTimeline_dispose, _spAttachmentTimeline_apply); - CONST_CAST(int, self->framesCount) = frameCount; - CONST_CAST(float*, self->frames) = CALLOC(float, frameCount); - CONST_CAST(char**, self->attachmentNames) = CALLOC(char*, frameCount); + CONST_CAST(int, self->framesCount) = framesCount; + CONST_CAST(float*, self->frames) = CALLOC(float, framesCount); + CONST_CAST(char**, self->attachmentNames) = CALLOC(char*, framesCount); return self; } @@ -512,13 +524,13 @@ void spAttachmentTimeline_setFrame (spAttachmentTimeline* self, int frameIndex, /** Fires events for frames > lastTime and <= time. */ void _spEventTimeline_apply (const spTimeline* timeline, spSkeleton* skeleton, float lastTime, float time, spEvent** firedEvents, - int* eventCount, float alpha) { + int* eventsCount, float alpha) { spEventTimeline* self = (spEventTimeline*)timeline; int frameIndex; if (!firedEvents) return; if (lastTime > time) { /* Fire events after last time for looped animations. */ - _spEventTimeline_apply(timeline, skeleton, lastTime, (float)INT_MAX, firedEvents, eventCount, alpha); + _spEventTimeline_apply(timeline, skeleton, lastTime, (float)INT_MAX, firedEvents, eventsCount, alpha); lastTime = -1; } else if (lastTime >= self->frames[self->framesCount - 1]) /* Last time is after last frame. */ return; @@ -528,7 +540,7 @@ void _spEventTimeline_apply (const spTimeline* timeline, spSkeleton* skeleton, f frameIndex = 0; else { float frame; - frameIndex = binarySearch(self->frames, self->framesCount, lastTime, 1); + frameIndex = binarySearch1(self->frames, self->framesCount, lastTime); frame = self->frames[frameIndex]; while (frameIndex > 0) { /* Fire multiple events with the same frame. */ if (self->frames[frameIndex - 1] != frame) break; @@ -536,8 +548,8 @@ void _spEventTimeline_apply (const spTimeline* timeline, spSkeleton* skeleton, f } } for (; frameIndex < self->framesCount && time >= self->frames[frameIndex]; ++frameIndex) { - firedEvents[*eventCount] = self->events[frameIndex]; - (*eventCount)++; + firedEvents[*eventsCount] = self->events[frameIndex]; + (*eventsCount)++; } } @@ -554,13 +566,13 @@ void _spEventTimeline_dispose (spTimeline* timeline) { FREE(self); } -spEventTimeline* spEventTimeline_create (int frameCount) { +spEventTimeline* spEventTimeline_create (int framesCount) { spEventTimeline* self = NEW(spEventTimeline); _spTimeline_init(SUPER(self), SP_TIMELINE_EVENT, _spEventTimeline_dispose, _spEventTimeline_apply); - CONST_CAST(int, self->framesCount) = frameCount; - CONST_CAST(float*, self->frames) = CALLOC(float, frameCount); - CONST_CAST(spEvent**, self->events) = CALLOC(spEvent*, frameCount); + CONST_CAST(int, self->framesCount) = framesCount; + CONST_CAST(float*, self->frames) = CALLOC(float, framesCount); + CONST_CAST(spEvent**, self->events) = CALLOC(spEvent*, framesCount); return self; } @@ -575,7 +587,7 @@ void spEventTimeline_setFrame (spEventTimeline* self, int frameIndex, float time /**/ void _spDrawOrderTimeline_apply (const spTimeline* timeline, spSkeleton* skeleton, float lastTime, float time, - spEvent** firedEvents, int* eventCount, float alpha) { + spEvent** firedEvents, int* eventsCount, float alpha) { int i; int frameIndex; const int* drawOrderToSetupIndex; @@ -586,13 +598,13 @@ void _spDrawOrderTimeline_apply (const spTimeline* timeline, spSkeleton* skeleto if (time >= self->frames[self->framesCount - 1]) /* Time is after last frame. */ frameIndex = self->framesCount - 1; else - frameIndex = binarySearch(self->frames, self->framesCount, time, 1) - 1; + frameIndex = binarySearch1(self->frames, self->framesCount, time) - 1; drawOrderToSetupIndex = self->drawOrders[frameIndex]; if (!drawOrderToSetupIndex) - memcpy(skeleton->drawOrder, skeleton->slots, self->slotCount * sizeof(int)); + memcpy(skeleton->drawOrder, skeleton->slots, self->slotsCount * sizeof(int)); else { - for (i = 0; i < self->slotCount; ++i) + for (i = 0; i < self->slotsCount; ++i) skeleton->drawOrder[i] = skeleton->slots[drawOrderToSetupIndex[i]]; } } @@ -610,14 +622,14 @@ void _spDrawOrderTimeline_dispose (spTimeline* timeline) { FREE(self); } -spDrawOrderTimeline* spDrawOrderTimeline_create (int frameCount, int slotCount) { +spDrawOrderTimeline* spDrawOrderTimeline_create (int framesCount, int slotsCount) { spDrawOrderTimeline* self = NEW(spDrawOrderTimeline); _spTimeline_init(SUPER(self), SP_TIMELINE_DRAWORDER, _spDrawOrderTimeline_dispose, _spDrawOrderTimeline_apply); - CONST_CAST(int, self->framesCount) = frameCount; - CONST_CAST(float*, self->frames) = CALLOC(float, frameCount); - CONST_CAST(int**, self->drawOrders) = CALLOC(int*, frameCount); - CONST_CAST(int, self->slotCount) = slotCount; + CONST_CAST(int, self->framesCount) = framesCount; + CONST_CAST(float*, self->frames) = CALLOC(float, framesCount); + CONST_CAST(int**, self->drawOrders) = CALLOC(int*, framesCount); + CONST_CAST(int, self->slotsCount) = slotsCount; return self; } @@ -629,15 +641,15 @@ void spDrawOrderTimeline_setFrame (spDrawOrderTimeline* self, int frameIndex, fl if (!drawOrder) self->drawOrders[frameIndex] = 0; else { - self->drawOrders[frameIndex] = MALLOC(int, self->slotCount); - memcpy(CONST_CAST(int*, self->drawOrders[frameIndex]), drawOrder, self->slotCount * sizeof(int)); + self->drawOrders[frameIndex] = MALLOC(int, self->slotsCount); + memcpy(CONST_CAST(int*, self->drawOrders[frameIndex]), drawOrder, self->slotsCount * sizeof(int)); } } /**/ void _spFFDTimeline_apply (const spTimeline* timeline, spSkeleton* skeleton, float lastTime, float time, spEvent** firedEvents, - int* eventCount, float alpha) { + int* eventsCount, float alpha) { int frameIndex, i; float percent, frameTime; const float* prevVertices; @@ -674,7 +686,7 @@ void _spFFDTimeline_apply (const spTimeline* timeline, spSkeleton* skeleton, flo } /* Interpolate between the previous frame and the current frame. */ - frameIndex = binarySearch(self->frames, self->framesCount, time, 1); + frameIndex = binarySearch1(self->frames, self->framesCount, time); frameTime = self->frames[frameIndex]; percent = 1 - (time - frameTime) / (self->frames[frameIndex - 1] - frameTime); percent = spCurveTimeline_getCurvePercent(SUPER(self), frameIndex - 1, percent < 0 ? 0 : (percent > 1 ? 1 : percent)); @@ -708,12 +720,12 @@ void _spFFDTimeline_dispose (spTimeline* timeline) { FREE(self); } -spFFDTimeline* spFFDTimeline_create (int frameCount, int frameVerticesCount) { +spFFDTimeline* spFFDTimeline_create (int framesCount, int frameVerticesCount) { spFFDTimeline* self = NEW(spFFDTimeline); - _spCurveTimeline_init(SUPER(self), SP_TIMELINE_FFD, frameCount, _spFFDTimeline_dispose, _spFFDTimeline_apply); - CONST_CAST(int, self->framesCount) = frameCount; + _spCurveTimeline_init(SUPER(self), SP_TIMELINE_FFD, framesCount, _spFFDTimeline_dispose, _spFFDTimeline_apply); + CONST_CAST(int, self->framesCount) = framesCount; CONST_CAST(float*, self->frames) = CALLOC(float, self->framesCount); - CONST_CAST(float**, self->frameVertices) = CALLOC(float*, frameCount); + CONST_CAST(float**, self->frameVertices) = CALLOC(float*, framesCount); CONST_CAST(int, self->frameVerticesCount) = frameVerticesCount; return self; } @@ -729,3 +741,50 @@ void spFFDTimeline_setFrame (spFFDTimeline* self, int frameIndex, float time, fl memcpy(CONST_CAST(float*, self->frameVertices[frameIndex]), vertices, self->frameVerticesCount * sizeof(float)); } } + + +/**/ + +static const int IKCONSTRAINT_PREV_FRAME_TIME = -3; +static const int IKCONSTRAINT_FRAME_MIX = 1; +static const int IKCONSTRAINT_FRAME_BEND_DIRECTION = 2; + +void _spIkConstraintTimeline_apply (const spTimeline* timeline, spSkeleton* skeleton, float lastTime, float time, + spEvent** firedEvents, int* eventsCount, float alpha) { + int frameIndex; + float prevFrameMix, frameTime, percent, mix; + spIkConstraint* ikConstraint; + spIkConstraintTimeline* self = (spIkConstraintTimeline*)timeline; + + if (time < self->frames[0]) return; /* Time is before first frame. */ + + ikConstraint = skeleton->ikConstraints[self->ikConstraintIndex]; + + if (time >= self->frames[self->framesCount - 3]) { /* Time is after last frame. */ + ikConstraint->mix += (self->frames[self->framesCount - 2] - ikConstraint->mix) * alpha; + ikConstraint->bendDirection = (int)self->frames[self->framesCount - 1]; + return; + } + + /* Interpolate between the previous frame and the current frame. */ + frameIndex = binarySearch(self->frames, self->framesCount, time, 3); + prevFrameMix = self->frames[frameIndex - 2]; + frameTime = self->frames[frameIndex]; + percent = 1 - (time - frameTime) / (self->frames[frameIndex + IKCONSTRAINT_PREV_FRAME_TIME] - frameTime); + percent = spCurveTimeline_getCurvePercent(SUPER(self), frameIndex / 3 - 1, percent < 0 ? 0 : (percent > 1 ? 1 : percent)); + + mix = prevFrameMix + (self->frames[frameIndex + IKCONSTRAINT_FRAME_MIX] - prevFrameMix) * percent; + ikConstraint->mix += (mix - ikConstraint->mix) * alpha; + ikConstraint->bendDirection = (int)self->frames[frameIndex + IKCONSTRAINT_FRAME_BEND_DIRECTION]; +} + +spIkConstraintTimeline* spIkConstraintTimeline_create (int framesCount) { + return (spIkConstraintTimeline*)_spBaseTimeline_create(framesCount, SP_TIMELINE_IKCONSTRAINT, 3, _spIkConstraintTimeline_apply); +} + +void spIkConstraintTimeline_setFrame (spIkConstraintTimeline* self, int frameIndex, float time, float mix, int bendDirection) { + frameIndex *= 3; + self->frames[frameIndex] = time; + self->frames[frameIndex + 1] = mix; + self->frames[frameIndex + 2] = (float)bendDirection; +} diff --git a/spine-c/src/spine/AnimationState.c b/spine-c/src/spine/AnimationState.c index 0d2ea8dec..419c4594f 100644 --- a/spine-c/src/spine/AnimationState.c +++ b/spine-c/src/spine/AnimationState.c @@ -80,7 +80,7 @@ void spAnimationState_dispose (spAnimationState* self) { int i; _spAnimationState* internal = SUB_CAST(_spAnimationState, self); FREE(internal->events); - for (i = 0; i < self->trackCount; ++i) + for (i = 0; i < self->tracksCount; ++i) _spAnimationState_disposeAllEntries(self, self->tracks[i]); FREE(self->tracks); FREE(self); @@ -92,7 +92,7 @@ void spAnimationState_update (spAnimationState* self, float delta) { int i; float previousDelta; delta *= self->timeScale; - for (i = 0; i < self->trackCount; ++i) { + for (i = 0; i < self->tracksCount; ++i) { spTrackEntry* current = self->tracks[i]; if (!current) continue; @@ -117,15 +117,15 @@ void spAnimationState_apply (spAnimationState* self, spSkeleton* skeleton) { _spAnimationState* internal = SUB_CAST(_spAnimationState, self); int i, ii; - int eventCount; + int eventsCount; int entryChanged; float time; spTrackEntry* previous; - for (i = 0; i < self->trackCount; ++i) { + for (i = 0; i < self->tracksCount; ++i) { spTrackEntry* current = self->tracks[i]; if (!current) continue; - eventCount = 0; + eventsCount = 0; time = current->time; if (!current->loop && time > current->endTime) time = current->endTime; @@ -134,10 +134,10 @@ void spAnimationState_apply (spAnimationState* self, spSkeleton* skeleton) { if (!previous) { if (current->mix == 1) { spAnimation_apply(current->animation, skeleton, current->lastTime, time, - current->loop, internal->events, &eventCount); + current->loop, internal->events, &eventsCount); } else { spAnimation_mix(current->animation, skeleton, current->lastTime, time, - current->loop, internal->events, &eventCount, current->mix); + current->loop, internal->events, &eventsCount, current->mix); } } else { float alpha = current->mixTime / current->mixDuration * current->mix; @@ -152,11 +152,11 @@ void spAnimationState_apply (spAnimationState* self, spSkeleton* skeleton) { current->previous = 0; } spAnimation_mix(current->animation, skeleton, current->lastTime, time, - current->loop, internal->events, &eventCount, alpha); + current->loop, internal->events, &eventsCount, alpha); } entryChanged = 0; - for (ii = 0; ii < eventCount; ++ii) { + for (ii = 0; ii < eventsCount; ++ii) { spEvent* event = internal->events[ii]; if (current->listener) { current->listener(self, i, SP_ANIMATION_EVENT, event, 0); @@ -195,14 +195,14 @@ void spAnimationState_apply (spAnimationState* self, spSkeleton* skeleton) { void spAnimationState_clearTracks (spAnimationState* self) { int i; - for (i = 0; i < self->trackCount; ++i) + for (i = 0; i < self->tracksCount; ++i) spAnimationState_clearTrack(self, i); - self->trackCount = 0; + self->tracksCount = 0; } void spAnimationState_clearTrack (spAnimationState* self, int trackIndex) { spTrackEntry* current; - if (trackIndex >= self->trackCount) return; + if (trackIndex >= self->tracksCount) return; current = self->tracks[trackIndex]; if (!current) return; @@ -216,12 +216,12 @@ void spAnimationState_clearTrack (spAnimationState* self, int trackIndex) { spTrackEntry* _spAnimationState_expandToIndex (spAnimationState* self, int index) { spTrackEntry** newTracks; - if (index < self->trackCount) return self->tracks[index]; + if (index < self->tracksCount) return self->tracks[index]; newTracks = CALLOC(spTrackEntry*, index + 1); - memcpy(newTracks, self->tracks, self->trackCount * sizeof(spTrackEntry*)); + memcpy(newTracks, self->tracks, self->tracksCount * sizeof(spTrackEntry*)); FREE(self->tracks); self->tracks = newTracks; - self->trackCount = index + 1; + self->tracksCount = index + 1; return 0; } @@ -317,6 +317,6 @@ spTrackEntry* spAnimationState_addAnimation (spAnimationState* self, int trackIn } spTrackEntry* spAnimationState_getCurrent (spAnimationState* self, int trackIndex) { - if (trackIndex >= self->trackCount) return 0; + if (trackIndex >= self->tracksCount) return 0; return self->tracks[trackIndex]; } diff --git a/spine-c/src/spine/Bone.c b/spine-c/src/spine/Bone.c index 271b30a97..0e91facc5 100644 --- a/spine-c/src/spine/Bone.c +++ b/spine-c/src/spine/Bone.c @@ -37,9 +37,10 @@ void spBone_setYDown (int value) { yDown = value; } -spBone* spBone_create (spBoneData* data, spBone* parent) { +spBone* spBone_create (spBoneData* data, spSkeleton* skeleton, spBone* parent) { spBone* self = NEW(spBone); CONST_CAST(spBoneData*, self->data) = data; + CONST_CAST(spSkeleton*, self->skeleton) = skeleton; CONST_CAST(spBone*, self->parent) = parent; spBone_setToSetupPose(self); return self; @@ -49,15 +50,7 @@ void spBone_dispose (spBone* self) { FREE(self); } -void spBone_setToSetupPose (spBone* self) { - self->x = self->data->x; - self->y = self->data->y; - self->rotation = self->data->rotation; - self->scaleX = self->data->scaleX; - self->scaleY = self->data->scaleY; -} - -void spBone_updateWorldTransform (spBone* self, int flipX, int flipY) { +void spBone_updateWorldTransform (spBone* self) { float radians, cosine, sine; if (self->parent) { CONST_CAST(float, self->worldX) = self->x * self->parent->m00 + self->y * self->parent->m01 + self->parent->worldX; @@ -70,32 +63,56 @@ void spBone_updateWorldTransform (spBone* self, int flipX, int flipY) { CONST_CAST(float, self->worldScaleY) = self->scaleY; } CONST_CAST(float, self->worldRotation) = - self->data->inheritRotation ? self->parent->worldRotation + self->rotation : self->rotation; + self->data->inheritRotation ? self->parent->worldRotation + self->rotationIK : self->rotationIK; } else { - CONST_CAST(float, self->worldX) = flipX ? -self->x : self->x; - CONST_CAST(float, self->worldY) = flipY != yDown ? -self->y : self->y; + CONST_CAST(float, self->worldX) = self->skeleton->flipX ? -self->x : self->x; + CONST_CAST(float, self->worldY) = self->skeleton->flipY != yDown ? -self->y : self->y; CONST_CAST(float, self->worldScaleX) = self->scaleX; CONST_CAST(float, self->worldScaleY) = self->scaleY; - CONST_CAST(float, self->worldRotation) = self->rotation; + CONST_CAST(float, self->worldRotation) = self->rotationIK; } - radians = (float)(self->worldRotation * 3.1415926535897932385 / 180); -#ifdef __STDC_VERSION__ - cosine = cosf(radians); - sine = sinf(radians); -#else - cosine = (float)cos(radians); - sine = (float)sin(radians); -#endif - CONST_CAST(float, self->m00) = cosine * self->worldScaleX; - CONST_CAST(float, self->m10) = sine * self->worldScaleX; - CONST_CAST(float, self->m01) = -sine * self->worldScaleY; - CONST_CAST(float, self->m11) = cosine * self->worldScaleY; - if (flipX) { - CONST_CAST(float, self->m00) = -self->m00; - CONST_CAST(float, self->m01) = -self->m01; + radians = self->worldRotation * DEG_RAD; + cosine = COS(radians); + sine = SIN(radians); + if (self->skeleton->flipX) { + CONST_CAST(float, self->m00) = -cosine * self->worldScaleX; + CONST_CAST(float, self->m01) = sine * self->worldScaleY; + } else { + CONST_CAST(float, self->m00) = cosine * self->worldScaleX; + CONST_CAST(float, self->m01) = -sine * self->worldScaleY; } - if (flipY != yDown) { - CONST_CAST(float, self->m10) = -self->m10; - CONST_CAST(float, self->m11) = -self->m11; + if (self->skeleton->flipY != yDown) { + CONST_CAST(float, self->m10) = -sine * self->worldScaleX; + CONST_CAST(float, self->m11) = -cosine * self->worldScaleY; + } else { + CONST_CAST(float, self->m10) = sine * self->worldScaleX; + CONST_CAST(float, self->m11) = cosine * self->worldScaleY; } } + +void spBone_setToSetupPose (spBone* self) { + self->x = self->data->x; + self->y = self->data->y; + self->rotation = self->data->rotation; + self->rotationIK = self->rotation; + self->scaleX = self->data->scaleX; + self->scaleY = self->data->scaleY; +} + +void spBone_worldToLocal (spBone* self, float worldX, float worldY, float* localX, float* localY) { + float invDet; + float dx = worldX - self->worldX, dy = worldY - self->worldY; + float m00 = self->m00, m11 = self->m11; + if (self->skeleton->flipX != (self->skeleton->flipY != yDown)) { + m00 *= -1; + m11 *= -1; + } + invDet = 1 / (m00 * m11 - self->m01 * self->m10); + *localX = (dx * m00 * invDet - dy * self->m01 * invDet); + *localY = (dy * m11 * invDet - dx * self->m10 * invDet); +} + +void spBone_localToWorld (spBone* self, float localX, float localY, float* worldX, float* worldY) { + *worldX = localX * self->m00 + localY * self->m01 + self->worldX; + *worldY = localX * self->m10 + localY * self->m11 + self->worldY; +} diff --git a/spine-c/src/spine/BoundingBoxAttachment.c b/spine-c/src/spine/BoundingBoxAttachment.c index 7deb5c793..6df38ed32 100644 --- a/spine-c/src/spine/BoundingBoxAttachment.c +++ b/spine-c/src/spine/BoundingBoxAttachment.c @@ -46,13 +46,11 @@ spBoundingBoxAttachment* spBoundingBoxAttachment_create (const char* name) { return self; } -void spBoundingBoxAttachment_computeWorldVertices (spBoundingBoxAttachment* self, float x, float y, spBone* bone, float* worldVertices) { +void spBoundingBoxAttachment_computeWorldVertices (spBoundingBoxAttachment* self, spBone* bone, float* worldVertices) { int i; float px, py; float* vertices = self->vertices; - - x += bone->worldX; - y += bone->worldY; + 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]; diff --git a/spine-c/src/spine/IkConstraint.c b/spine-c/src/spine/IkConstraint.c new file mode 100644 index 000000000..d23ada807 --- /dev/null +++ b/spine-c/src/spine/IkConstraint.c @@ -0,0 +1,133 @@ +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.1 + * + * Copyright (c) 2013, Esoteric Software + * All rights reserved. + * + * You are granted a perpetual, non-exclusive, non-sublicensable and + * non-transferable license to install, execute and perform the Spine Runtimes + * Software (the "Software") solely for internal use. Without the written + * permission of Esoteric Software (typically granted by licensing Spine), 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 SOFTARE 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 + +spIkConstraint* spIkConstraint_create (spIkConstraintData* data, const spSkeleton* skeleton) { + int i; + + 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); + + return self; +} + +void spIkConstraint_dispose (spIkConstraint* 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; + } +} + +void spIkConstraint_apply1 (spBone* bone, float targetX, float targetY, float alpha) { + float parentRotation = (!bone->data->inheritRotation || !bone->parent) ? 0 : bone->parent->worldRotation; + float rotation = bone->rotation; + float rotationIK = ATAN2(targetY - bone->worldY, targetX - bone->worldX) * RAD_DEG - parentRotation; + bone->rotationIK = rotation + (rotationIK - rotation) * alpha; +} + +void spIkConstraint_apply2 (spBone* parent, spBone* child, float targetX, float targetY, int bendDirection, float alpha) { + float positionX, positionY, childX, childY, offset, len1, len2, cosDenom, cos, childAngle, adjacent, opposite, parentAngle, rotation; + spBone* parentParent; + float childRotation = child->rotation, parentRotation = parent->rotation; + if (alpha == 0) { + child->rotationIK = childRotation; + parent->rotationIK = parentRotation; + return; + } + parentParent = parent->parent; + if (parentParent) { + spBone_worldToLocal(parentParent, targetX, targetY, &positionX, &positionY); + targetX = (positionX - parent->x) * parentParent->worldScaleX; + targetY = (positionY - parent->y) * parentParent->worldScaleY; + } else { + targetX -= parent->x; + targetY -= parent->y; + } + if (child->parent == parent) { + positionX = child->x; + positionY = child->y; + } else { + spBone_localToWorld(child->parent, child->x, child->y, &positionX, &positionY); + spBone_worldToLocal(parent, positionX, positionY, &positionX, &positionY); + } + childX = positionX * parent->worldScaleX; + childY = positionY * parent->worldScaleY; + offset = ATAN2(childY, childX); + len1 = SQRT(childX * childX + childY * childY); + len2 = child->data->length * child->worldScaleX; + /* Based on code by Ryan Juckett with permission: Copyright (c) 2008-2009 Ryan Juckett, http://www.ryanjuckett.com/ */ + cosDenom = 2 * len1 * len2; + if (cosDenom < 0.0001f) { + child->rotationIK = childRotation + (ATAN2(targetY, targetX) * RAD_DEG - parentRotation - childRotation) * alpha; + return; + } + cos = (targetX * targetX + targetY * targetY - len1 * len1 - len2 * len2) / cosDenom; + if (cos < -1) + cos = -1; + else if (cos > 1) /**/ + cos = 1; + childAngle = ACOS(cos) * bendDirection; + adjacent = len1 + len2 * cos; + opposite = len2 * SIN(childAngle); + parentAngle = ATAN2(targetY * adjacent - targetX * opposite, targetX * adjacent + targetY * opposite); + rotation = (parentAngle - offset) * RAD_DEG - parentRotation; + if (rotation > 180) + rotation -= 360; + else if (rotation < -180) /**/ + rotation += 360; + parent->rotationIK = parentRotation + rotation * alpha; + rotation = (childAngle + offset) * RAD_DEG - childRotation; + if (rotation > 180) + rotation -= 360; + else if (rotation < -180) /**/ + rotation += 360; + child->rotationIK = childRotation + (rotation + parent->worldRotation - child->parent->worldRotation) * alpha; +} diff --git a/spine-cocos2dx/3.1/example/Classes/GoblinsExample.h b/spine-c/src/spine/IkConstraintData.c similarity index 82% rename from spine-cocos2dx/3.1/example/Classes/GoblinsExample.h rename to spine-c/src/spine/IkConstraintData.c index b74ecaaf8..f25b6eb30 100644 --- a/spine-cocos2dx/3.1/example/Classes/GoblinsExample.h +++ b/spine-c/src/spine/IkConstraintData.c @@ -28,21 +28,19 @@ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *****************************************************************************/ -#ifndef _GOBLINSEXAMPLE_H_ -#define _GOBLINSEXAMPLE_H_ +#include +#include -#include "cocos2d.h" -#include +spIkConstraintData* spIkConstraintData_create (const char* name) { + spIkConstraintData* self = NEW(spIkConstraintData); + MALLOC_STR(self->name, name); + self->bendDirection = 1; + self->mix = 1; + return self; +} -class GoblinsExample : public cocos2d::LayerColor { -public: - static cocos2d::Scene* scene (); - - virtual bool init (); - - CREATE_FUNC (GoblinsExample); -private: - spine::SkeletonAnimation* skeletonNode; -}; - -#endif // _GOBLINSEXAMPLE_H_ +void spIkConstraintData_dispose (spIkConstraintData* self) { + FREE(self->name); + FREE(self->bones); + FREE(self); +} diff --git a/spine-c/src/spine/Json.c b/spine-c/src/spine/Json.c index da13a1201..6225ff00c 100644 --- a/spine-c/src/spine/Json.c +++ b/spine-c/src/spine/Json.c @@ -1,5 +1,6 @@ /* - Copyright (c) 2009 Dave Gamble + Copyright (c) 2009, Dave Gamble + Copyright (c) 2013, Esoteric Software Permission is hereby granted, dispose of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -55,19 +56,19 @@ static int Json_strcasecmp (const char* s1, const char* s2) { /* TODO we may be able to elide these NULL checks if we can prove * the graph and input (only callsite is Json_getItem) should not have NULLs */ - if ( s1 && s2 ) - { + if (s1 && s2) { #if defined(_WIN32) - return _stricmp( s1, s2 ); + return _stricmp(s1, s2); #else return strcasecmp( s1, s2 ); #endif - } - else - { - if ( s1 < s2 ) return -1; /* s1 is null, s2 is not */ - else if ( s1 == s2 ) return 0; /* both are null */ - else return 1; /* s2 is nul s1 is not */ + } else { + if (s1 < s2) + return -1; /* s1 is null, s2 is not */ + else if (s1 == s2) + return 0; /* both are null */ + else + return 1; /* s2 is nul s1 is not */ } } @@ -101,29 +102,24 @@ static const char* parse_number (Json *item, const char* num) { * We also already know that this starts with [-0-9] from parse_value. */ #if __STDC_VERSION__ >= 199901L - n = strtof( num, &endptr ); + n = strtof(num, &endptr); #else n = (float)strtod( num, &endptr ); #endif /* ignore errno's ERANGE, which returns +/-HUGE_VAL */ /* n is 0 on any other error */ - - if ( endptr != num ) - { + if (endptr != num) { /* Parse success, number found. */ item->valueFloat = n; item->valueInt = (int)n; item->type = Json_Number; return endptr; - } - else - { + } else { /* Parse failure, ep is set. */ ep = num; return 0; } - } /* Parse the input text into an unescaped cstring, and populate item. */ @@ -231,7 +227,7 @@ static const char* parse_object (Json *item, const char* value); /* Utility to jump whitespace and cr/lf */ static const char* skip (const char* in) { - if ( !in ) return 0; /* must propagate NULL since it's often called in skip(f(...)) form */ + if (!in) return 0; /* must propagate NULL since it's often called in skip(f(...)) form */ while (*in && (unsigned char)*in <= 32) in++; return in; @@ -262,54 +258,50 @@ static const char* parse_value (Json *item, const char* value) { if (!value) return 0; /* Fail on null. */ #endif - switch ( *value ) - { - case 'n': - { - if (!strncmp(value+1, "ull", 3)) { - item->type = Json_NULL; - return value + 4; - } - break; + switch (*value) { + case 'n': { + if (!strncmp(value + 1, "ull", 3)) { + item->type = Json_NULL; + return value + 4; } - case 'f': - { - if (!strncmp(value+1, "alse", 4)) { - item->type = Json_False; - /* calloc prevents us needing item->type = Json_False or valueInt = 0 here */ - return value + 5; - } - break; + break; + } + case 'f': { + if (!strncmp(value + 1, "alse", 4)) { + item->type = Json_False; + /* calloc prevents us needing item->type = Json_False or valueInt = 0 here */ + return value + 5; } - case 't': - { - if (!strncmp(value+1, "rue", 3)) { - item->type = Json_True; - item->valueInt = 1; - return value + 4; - } - break; + break; + } + case 't': { + if (!strncmp(value + 1, "rue", 3)) { + item->type = Json_True; + item->valueInt = 1; + return value + 4; } - case '\"': - return parse_string(item, value); - case '[': - return parse_array(item, value); - case '{': - return parse_object(item, value); - case '-': /* fallthrough */ - case '0': /* fallthrough */ - case '1': /* fallthrough */ - case '2': /* fallthrough */ - case '3': /* fallthrough */ - case '4': /* fallthrough */ - case '5': /* fallthrough */ - case '6': /* fallthrough */ - case '7': /* fallthrough */ - case '8': /* fallthrough */ - case '9': - return parse_number(item, value); - default: - break; + break; + } + case '\"': + return parse_string(item, value); + case '[': + return parse_array(item, value); + case '{': + return parse_object(item, value); + case '-': /* fallthrough */ + case '0': /* fallthrough */ + case '1': /* fallthrough */ + case '2': /* fallthrough */ + case '3': /* fallthrough */ + case '4': /* fallthrough */ + case '5': /* fallthrough */ + case '6': /* fallthrough */ + case '7': /* fallthrough */ + case '8': /* fallthrough */ + case '9': + return parse_number(item, value); + default: + break; } ep = value; diff --git a/spine-c/src/spine/Json.h b/spine-c/src/spine/Json.h index bf72dc486..078a5a715 100644 --- a/spine-c/src/spine/Json.h +++ b/spine-c/src/spine/Json.h @@ -39,7 +39,7 @@ extern "C" { #define Json_Object 6 #ifndef SPINE_JSON_HAVE_PREV -/* Spine doesn't use the "prev" link in the Json sibling lists. */ +/* Spine doesn't use the "prev" link in the Json sibling lists. */ #define SPINE_JSON_HAVE_PREV 0 #endif diff --git a/spine-c/src/spine/MeshAttachment.c b/spine-c/src/spine/MeshAttachment.c index 631e6d0c4..0ca41fbc0 100644 --- a/spine-c/src/spine/MeshAttachment.c +++ b/spine-c/src/spine/MeshAttachment.c @@ -71,12 +71,11 @@ void spMeshAttachment_updateUVs (spMeshAttachment* self) { } } -void spMeshAttachment_computeWorldVertices (spMeshAttachment* self, float x, float y, spSlot* slot, float* worldVertices) { +void spMeshAttachment_computeWorldVertices (spMeshAttachment* self, spSlot* slot, float* worldVertices) { int i; float* vertices = self->vertices; const spBone* bone = slot->bone; - x += bone->worldX; - y += bone->worldY; + 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]; diff --git a/spine-c/src/spine/RegionAttachment.c b/spine-c/src/spine/RegionAttachment.c index eb15f0e46..6b1030518 100644 --- a/spine-c/src/spine/RegionAttachment.c +++ b/spine-c/src/spine/RegionAttachment.c @@ -79,14 +79,8 @@ void spRegionAttachment_updateOffset (spRegionAttachment* self) { float localY = -self->height / 2 * self->scaleY + self->regionOffsetY * regionScaleY; float localX2 = localX + self->regionWidth * regionScaleX; float localY2 = localY + self->regionHeight * regionScaleY; - float radians = (float)(self->rotation * 3.1415926535897932385 / 180); -#ifdef __STDC_VERSION__ - float cosine = cosf(radians); - float sine = sinf(radians); -#else - float cosine = (float)cos(radians); - float sine = (float)sin(radians); -#endif + float radians = self->rotation * DEG_RAD; + float cosine = COS(radians), sine = SIN(radians); float localXCos = localX * cosine + self->x; float localXSin = localX * sine; float localYCos = localY * cosine + self->y; @@ -105,10 +99,9 @@ void spRegionAttachment_updateOffset (spRegionAttachment* self) { self->offset[SP_VERTEX_Y4] = localYCos + localX2Sin; } -void spRegionAttachment_computeWorldVertices (spRegionAttachment* self, float x, float y, spBone* bone, float* vertices) { +void spRegionAttachment_computeWorldVertices (spRegionAttachment* self, spBone* bone, float* vertices) { const float* offset = self->offset; - x += bone->worldX; - y += bone->worldY; + float x = bone->skeleton->x + bone->worldX, y = bone->skeleton->y + bone->worldY; vertices[SP_VERTEX_X1] = offset[SP_VERTEX_X1] * bone->m00 + offset[SP_VERTEX_Y1] * bone->m01 + x; vertices[SP_VERTEX_Y1] = offset[SP_VERTEX_X1] * bone->m10 + offset[SP_VERTEX_Y1] * bone->m11 + y; vertices[SP_VERTEX_X2] = offset[SP_VERTEX_X2] * bone->m00 + offset[SP_VERTEX_Y2] * bone->m01 + x; diff --git a/spine-c/src/spine/Skeleton.c b/spine-c/src/spine/Skeleton.c index be7fc423d..d8835db72 100644 --- a/spine-c/src/spine/Skeleton.c +++ b/spine-c/src/spine/Skeleton.c @@ -32,76 +32,182 @@ #include #include +typedef struct { + spSkeleton super; + + int boneCacheCount; + int* boneCacheCounts; + spBone*** boneCache; +} _spSkeleton; + spSkeleton* spSkeleton_create (spSkeletonData* data) { int i, ii; - spSkeleton* self = NEW(spSkeleton); + _spSkeleton* internal = NEW(_spSkeleton); + spSkeleton* self = SUPER(internal); CONST_CAST(spSkeletonData*, self->data) = data; - self->boneCount = self->data->boneCount; - self->bones = MALLOC(spBone*, self->boneCount); + self->bonesCount = self->data->bonesCount; + self->bones = MALLOC(spBone*, self->bonesCount); - for (i = 0; i < self->boneCount; ++i) { + 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->boneCount; ++ii) { + for (ii = 0; ii < self->bonesCount; ++ii) { if (data->bones[ii] == boneData->parent) { parent = self->bones[ii]; break; } } } - self->bones[i] = spBone_create(boneData, parent); + self->bones[i] = spBone_create(boneData, self, parent); } CONST_CAST(spBone*, self->root) = self->bones[0]; - self->slotCount = data->slotCount; - self->slots = MALLOC(spSlot*, self->slotCount); - for (i = 0; i < self->slotCount; ++i) { + self->slotsCount = data->slotsCount; + 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->boneCount; ++ii) { + for (ii = 0; ii < self->bonesCount; ++ii) { if (data->bones[ii] == slotData->boneData) { bone = self->bones[ii]; break; } } - self->slots[i] = spSlot_create(slotData, self, bone); + self->slots[i] = spSlot_create(slotData, bone); } - self->drawOrder = MALLOC(spSlot*, self->slotCount); - memcpy(self->drawOrder, self->slots, sizeof(spSlot*) * self->slotCount); + 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); + for (i = 0; i < self->data->ikConstraintsCount; ++i) + self->ikConstraints[i] = spIkConstraint_create(self->data->ikConstraints[i], self); + + spSkeleton_updateCache(self); + return self; } void spSkeleton_dispose (spSkeleton* self) { int i; - for (i = 0; i < self->boneCount; ++i) + _spSkeleton* internal = SUB_CAST(_spSkeleton, self); + + for (i = 0; i < internal->boneCacheCount; ++i) + FREE(internal->boneCache[i]); + FREE(internal->boneCache); + FREE(internal->boneCacheCounts); + + for (i = 0; i < self->bonesCount; ++i) spBone_dispose(self->bones[i]); FREE(self->bones); - for (i = 0; i < self->slotCount; ++i) + for (i = 0; i < self->slotsCount; ++i) spSlot_dispose(self->slots[i]); FREE(self->slots); + for (i = 0; i < self->ikConstraintsCount; ++i) + spIkConstraint_dispose(self->ikConstraints[i]); + FREE(self->ikConstraints); + FREE(self->drawOrder); FREE(self); } +void spSkeleton_updateCache (const spSkeleton* self) { + int i, ii; + _spSkeleton* internal = SUB_CAST(_spSkeleton, self); + + for (i = 0; i < internal->boneCacheCount; ++i) + FREE(internal->boneCache[i]); + FREE(internal->boneCache); + FREE(internal->boneCacheCounts); + + internal->boneCacheCount = self->ikConstraintsCount + 1; + internal->boneCache = MALLOC(spBone**, internal->boneCacheCount); + internal->boneCacheCounts = CALLOC(int, internal->boneCacheCount); + + /* Compute array sizes. */ + for (i = 0; i < self->bonesCount; ++i) { + spBone* current = self->bones[i]; + do { + for (ii = 0; ii < self->ikConstraintsCount; ++ii) { + spIkConstraint* ikConstraint = self->ikConstraints[ii]; + spBone* parent = ikConstraint->bones[0]; + spBone* child = ikConstraint->bones[ikConstraint->bonesCount - 1]; + while (1) { + if (current == child) { + internal->boneCacheCounts[ii]++; + internal->boneCacheCounts[ii + 1]++; + goto outer1; + } + if (child == parent) break; + child = child->parent; + } + } + current = current->parent; + } while (current); + internal->boneCacheCounts[0]++; + outer1: {} + } + + for (i = 0; i < internal->boneCacheCount; ++i) + internal->boneCache[i] = MALLOC(spBone*, internal->boneCacheCounts[i]); + memset(internal->boneCacheCounts, 0, internal->boneCacheCount * sizeof(int)); + + /* Populate arrays. */ + for (i = 0; i < self->bonesCount; ++i) { + spBone* bone = self->bones[i]; + spBone* current = bone; + do { + for (ii = 0; ii < self->ikConstraintsCount; ++ii) { + spIkConstraint* ikConstraint = self->ikConstraints[ii]; + spBone* parent = ikConstraint->bones[0]; + spBone* child = ikConstraint->bones[ikConstraint->bonesCount - 1]; + while (1) { + if (current == child) { + internal->boneCache[ii][internal->boneCacheCounts[ii]++] = bone; + internal->boneCache[ii + 1][internal->boneCacheCounts[ii + 1]++] = bone; + goto outer2; + } + if (child == parent) break; + child = child->parent; + } + } + current = current->parent; + } while (current); + internal->boneCache[0][internal->boneCacheCounts[0]++] = bone; + outer2: {} + } +} + void spSkeleton_updateWorldTransform (const spSkeleton* self) { - int i; - for (i = 0; i < self->boneCount; ++i) - spBone_updateWorldTransform(self->bones[i], self->flipX, self->flipY); + int i, ii, nn, last; + _spSkeleton* internal = SUB_CAST(_spSkeleton, self); + + for (i = 0; i < self->bonesCount; ++i) + self->bones[i]->rotationIK = self->bones[i]->rotation; + + i = 0; + last = internal->boneCacheCount - 1; + while (1) { + for (ii = 0, nn = internal->boneCacheCounts[i]; ii < nn; ++ii) + spBone_updateWorldTransform(internal->boneCache[i][ii]); + if (i == last) break; + spIkConstraint_apply(self->ikConstraints[i]); + i++; + } } void spSkeleton_setToSetupPose (const spSkeleton* self) { @@ -111,41 +217,47 @@ void spSkeleton_setToSetupPose (const spSkeleton* self) { void spSkeleton_setBonesToSetupPose (const spSkeleton* self) { int i; - for (i = 0; i < self->boneCount; ++i) + for (i = 0; i < self->bonesCount; ++i) spBone_setToSetupPose(self->bones[i]); + + for (i = 0; i < self->ikConstraintsCount; ++i) { + spIkConstraint* ikConstraint = self->ikConstraints[i]; + ikConstraint->bendDirection = ikConstraint->data->bendDirection; + ikConstraint->mix = ikConstraint->data->mix; + } } void spSkeleton_setSlotsToSetupPose (const spSkeleton* self) { int i; - memcpy(self->drawOrder, self->slots, self->slotCount * sizeof(spSlot*)); - for (i = 0; i < self->slotCount; ++i) + memcpy(self->drawOrder, self->slots, self->slotsCount * sizeof(spSlot*)); + for (i = 0; i < self->slotsCount; ++i) spSlot_setToSetupPose(self->slots[i]); } spBone* spSkeleton_findBone (const spSkeleton* self, const char* boneName) { int i; - for (i = 0; i < self->boneCount; ++i) + for (i = 0; i < self->bonesCount; ++i) if (strcmp(self->data->bones[i]->name, boneName) == 0) return self->bones[i]; return 0; } int spSkeleton_findBoneIndex (const spSkeleton* self, const char* boneName) { int i; - for (i = 0; i < self->boneCount; ++i) + for (i = 0; i < self->bonesCount; ++i) if (strcmp(self->data->bones[i]->name, boneName) == 0) return i; return -1; } spSlot* spSkeleton_findSlot (const spSkeleton* self, const char* slotName) { int i; - for (i = 0; i < self->slotCount; ++i) + for (i = 0; i < self->slotsCount; ++i) if (strcmp(self->data->slots[i]->name, slotName) == 0) return self->slots[i]; return 0; } int spSkeleton_findSlotIndex (const spSkeleton* self, const char* slotName) { int i; - for (i = 0; i < self->slotCount; ++i) + for (i = 0; i < self->slotsCount; ++i) if (strcmp(self->data->slots[i]->name, slotName) == 0) return i; return -1; } @@ -169,7 +281,7 @@ void spSkeleton_setSkin (spSkeleton* self, spSkin* newSkin) { else { /* No previous skin, attach setup pose attachments. */ int i; - for (i = 0; i < self->slotCount; ++i) { + for (i = 0; i < self->slotsCount; ++i) { spSlot* slot = self->slots[i]; if (slot->data->attachmentName) { spAttachment* attachment = spSkin_getAttachment(newSkin, i, slot->data->attachmentName); @@ -201,7 +313,7 @@ spAttachment* spSkeleton_getAttachmentForSlotIndex (const spSkeleton* self, int int spSkeleton_setAttachment (spSkeleton* self, const char* slotName, const char* attachmentName) { int i; - for (i = 0; i < self->slotCount; ++i) { + for (i = 0; i < self->slotsCount; ++i) { spSlot *slot = self->slots[i]; if (strcmp(slot->data->name, slotName) == 0) { if (!attachmentName) @@ -217,6 +329,13 @@ int spSkeleton_setAttachment (spSkeleton* self, const char* slotName, const char return 0; } +spIkConstraint* spSkeleton_findIkConstraint (const spSkeleton* self, const char* ikConstraintName) { + int i; + for (i = 0; i < self->ikConstraintsCount; ++i) + if (strcmp(self->ikConstraints[i]->data->name, ikConstraintName) == 0) return self->ikConstraints[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 21b311a37..16c35facc 100644 --- a/spine-c/src/spine/SkeletonBounds.c +++ b/spine-c/src/spine/SkeletonBounds.c @@ -105,18 +105,18 @@ void spSkeletonBounds_update (spSkeletonBounds* self, spSkeleton* skeleton, int/ int i; _spSkeletonBounds* internal = SUB_CAST(_spSkeletonBounds, self); - if (internal->capacity < skeleton->slotCount) { + if (internal->capacity < skeleton->slotsCount) { spPolygon** newPolygons; FREE(self->boundingBoxes); - self->boundingBoxes = MALLOC(spBoundingBoxAttachment*, skeleton->slotCount); + self->boundingBoxes = MALLOC(spBoundingBoxAttachment*, skeleton->slotsCount); - newPolygons = CALLOC(spPolygon*, skeleton->slotCount); + newPolygons = CALLOC(spPolygon*, skeleton->slotsCount); memcpy(newPolygons, self->polygons, internal->capacity); FREE(self->polygons); self->polygons = newPolygons; - internal->capacity = skeleton->slotCount; + internal->capacity = skeleton->slotsCount; } self->minX = (float)INT_MAX; @@ -125,7 +125,7 @@ void spSkeletonBounds_update (spSkeletonBounds* self, spSkeleton* skeleton, int/ self->maxY = (float)INT_MIN; self->count = 0; - for (i = 0; i < skeleton->slotCount; ++i) { + for (i = 0; i < skeleton->slotsCount; ++i) { spPolygon* polygon; spBoundingBoxAttachment* boundingBox; @@ -141,7 +141,7 @@ void spSkeletonBounds_update (spSkeletonBounds* self, spSkeleton* skeleton, int/ self->polygons[self->count] = polygon = spPolygon_create(boundingBox->verticesCount); } polygon->count = boundingBox->verticesCount; - spBoundingBoxAttachment_computeWorldVertices(boundingBox, skeleton->x, skeleton->y, slot->bone, polygon->vertices); + spBoundingBoxAttachment_computeWorldVertices(boundingBox, slot->bone, polygon->vertices); if (updateAabb) { int ii = 0; @@ -155,7 +155,7 @@ void spSkeletonBounds_update (spSkeletonBounds* self, spSkeleton* skeleton, int/ } } - ++self->count; + self->count++; } } diff --git a/spine-c/src/spine/SkeletonData.c b/spine-c/src/spine/SkeletonData.c index 7a7a30364..d586415b7 100644 --- a/spine-c/src/spine/SkeletonData.c +++ b/spine-c/src/spine/SkeletonData.c @@ -38,74 +38,85 @@ spSkeletonData* spSkeletonData_create () { void spSkeletonData_dispose (spSkeletonData* self) { int i; - for (i = 0; i < self->boneCount; ++i) + for (i = 0; i < self->bonesCount; ++i) spBoneData_dispose(self->bones[i]); FREE(self->bones); - for (i = 0; i < self->slotCount; ++i) + for (i = 0; i < self->slotsCount; ++i) spSlotData_dispose(self->slots[i]); FREE(self->slots); - for (i = 0; i < self->skinCount; ++i) + for (i = 0; i < self->skinsCount; ++i) spSkin_dispose(self->skins[i]); FREE(self->skins); - for (i = 0; i < self->animationCount; ++i) + for (i = 0; i < self->eventsCount; ++i) + spEventData_dispose(self->events[i]); + FREE(self->events); + + for (i = 0; i < self->animationsCount; ++i) spAnimation_dispose(self->animations[i]); FREE(self->animations); - for (i = 0; i < self->eventCount; ++i) - spEventData_dispose(self->events[i]); - FREE(self->events); + for (i = 0; i < self->ikConstraintsCount; ++i) + spIkConstraintData_dispose(self->ikConstraints[i]); + FREE(self->ikConstraints); FREE(self); } spBoneData* spSkeletonData_findBone (const spSkeletonData* self, const char* boneName) { int i; - for (i = 0; i < self->boneCount; ++i) + for (i = 0; i < self->bonesCount; ++i) if (strcmp(self->bones[i]->name, boneName) == 0) return self->bones[i]; return 0; } int spSkeletonData_findBoneIndex (const spSkeletonData* self, const char* boneName) { int i; - for (i = 0; i < self->boneCount; ++i) + for (i = 0; i < self->bonesCount; ++i) if (strcmp(self->bones[i]->name, boneName) == 0) return i; return -1; } spSlotData* spSkeletonData_findSlot (const spSkeletonData* self, const char* slotName) { int i; - for (i = 0; i < self->slotCount; ++i) + for (i = 0; i < self->slotsCount; ++i) if (strcmp(self->slots[i]->name, slotName) == 0) return self->slots[i]; return 0; } int spSkeletonData_findSlotIndex (const spSkeletonData* self, const char* slotName) { int i; - for (i = 0; i < self->slotCount; ++i) + for (i = 0; i < self->slotsCount; ++i) if (strcmp(self->slots[i]->name, slotName) == 0) return i; return -1; } spSkin* spSkeletonData_findSkin (const spSkeletonData* self, const char* skinName) { int i; - for (i = 0; i < self->skinCount; ++i) + for (i = 0; i < self->skinsCount; ++i) if (strcmp(self->skins[i]->name, skinName) == 0) return self->skins[i]; return 0; } spEventData* spSkeletonData_findEvent (const spSkeletonData* self, const char* eventName) { int i; - for (i = 0; i < self->eventCount; ++i) + for (i = 0; i < self->eventsCount; ++i) if (strcmp(self->events[i]->name, eventName) == 0) return self->events[i]; return 0; } spAnimation* spSkeletonData_findAnimation (const spSkeletonData* self, const char* animationName) { int i; - for (i = 0; i < self->animationCount; ++i) + for (i = 0; i < self->animationsCount; ++i) if (strcmp(self->animations[i]->name, animationName) == 0) return self->animations[i]; return 0; } + +spIkConstraintData* spSkeletonData_findIkConstraint (const spSkeletonData* self, const char* ikConstraintName) { + int i; + for (i = 0; i < self->ikConstraintsCount; ++i) + if (strcmp(self->ikConstraints[i]->name, ikConstraintName) == 0) return self->ikConstraints[i]; + return 0; +} diff --git a/spine-c/src/spine/SkeletonJson.c b/spine-c/src/spine/SkeletonJson.c index ea121487d..09a0cc04d 100644 --- a/spine-c/src/spine/SkeletonJson.c +++ b/spine-c/src/spine/SkeletonJson.c @@ -109,27 +109,29 @@ static spAnimation* _spSkeletonJson_readAnimation (spSkeletonJson* self, Json* r Json* bones = Json_getItem(root, "bones"); Json* slots = Json_getItem(root, "slots"); + Json* ik = Json_getItem(root, "ik"); Json* ffd = Json_getItem(root, "ffd"); Json* drawOrder = Json_getItem(root, "draworder"); Json* events = Json_getItem(root, "events"); - Json *boneMap, *slotMap, *ffdMap; + Json *boneMap, *slotMap, *ikMap, *ffdMap; - int timelineCount = 0; + int timelinesCount = 0; for (boneMap = bones ? bones->child : 0; boneMap; boneMap = boneMap->next) - timelineCount += boneMap->size; + timelinesCount += boneMap->size; for (slotMap = slots ? slots->child : 0; slotMap; slotMap = slotMap->next) - timelineCount += slotMap->size; + 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) - timelineCount += slotMap->size; - if (events) ++timelineCount; - if (drawOrder) ++timelineCount; + timelinesCount += slotMap->size; + if (events) ++timelinesCount; + if (drawOrder) ++timelinesCount; - animation = spAnimation_create(root->name, timelineCount); - animation->timelineCount = 0; - skeletonData->animations[skeletonData->animationCount] = animation; - ++skeletonData->animationCount; + animation = spAnimation_create(root->name, timelinesCount); + animation->timelinesCount = 0; + skeletonData->animations[skeletonData->animationsCount++] = animation; + /* Slot timelines. */ for (slotMap = slots ? slots->child : 0; slotMap; slotMap = slotMap->next) { Json *timelineArray; @@ -150,7 +152,7 @@ static spAnimation* _spSkeletonJson_readAnimation (spSkeletonJson* self, Json* r toColor(s, 3)); readCurve(SUPER(timeline), i, frame); } - animation->timelines[animation->timelineCount++] = SUPER_CAST(spTimeline, timeline); + animation->timelines[animation->timelinesCount++] = SUPER_CAST(spTimeline, timeline); duration = timeline->frames[timelineArray->size * 5 - 5]; if (duration > animation->duration) animation->duration = duration; @@ -162,7 +164,7 @@ static spAnimation* _spSkeletonJson_readAnimation (spSkeletonJson* self, Json* r spAttachmentTimeline_setFrame(timeline, i, Json_getFloat(frame, "time", 0), name->type == Json_NULL ? 0 : name->valueString); } - animation->timelines[animation->timelineCount++] = SUPER_CAST(spTimeline, timeline); + animation->timelines[animation->timelinesCount++] = SUPER_CAST(spTimeline, timeline); duration = timeline->frames[timelineArray->size - 1]; if (duration > animation->duration) animation->duration = duration; @@ -174,13 +176,14 @@ static spAnimation* _spSkeletonJson_readAnimation (spSkeletonJson* self, Json* r } } + /* Bone timelines. */ for (boneMap = bones ? bones->child : 0; boneMap; boneMap = boneMap->next) { Json *timelineArray; int boneIndex = spSkeletonData_findBoneIndex(skeletonData, boneMap->name); if (boneIndex == -1) { spAnimation_dispose(animation); - _spSkeletonJson_setError(self, root, "spBone not found: ", boneMap->name); + _spSkeletonJson_setError(self, root, "Bone not found: ", boneMap->name); return 0; } @@ -192,7 +195,7 @@ static spAnimation* _spSkeletonJson_readAnimation (spSkeletonJson* self, Json* r spRotateTimeline_setFrame(timeline, i, Json_getFloat(frame, "time", 0), Json_getFloat(frame, "angle", 0)); readCurve(SUPER(timeline), i, frame); } - animation->timelines[animation->timelineCount++] = SUPER_CAST(spTimeline, timeline); + animation->timelines[animation->timelinesCount++] = SUPER_CAST(spTimeline, timeline); duration = timeline->frames[timelineArray->size * 2 - 2]; if (duration > animation->duration) animation->duration = duration; @@ -208,7 +211,7 @@ static spAnimation* _spSkeletonJson_readAnimation (spSkeletonJson* self, Json* r Json_getFloat(frame, "y", 0) * scale); readCurve(SUPER(timeline), i, frame); } - animation->timelines[animation->timelineCount++] = SUPER_CAST(spTimeline, timeline); + animation->timelines[animation->timelinesCount++] = SUPER_CAST(spTimeline, timeline); duration = timeline->frames[timelineArray->size * 3 - 3]; if (duration > animation->duration) animation->duration = duration; } else { @@ -220,6 +223,27 @@ static spAnimation* _spSkeletonJson_readAnimation (spSkeletonJson* self, Json* r } } + /* IK timelines. */ + for (ikMap = ik ? ik->child : 0; ikMap; ikMap = ikMap->next) { + spIkConstraintData* ikConstraint = spSkeletonData_findIkConstraint(skeletonData, ikMap->name); + spIkConstraintTimeline* timeline = spIkConstraintTimeline_create(ikMap->size); + for (i = 0; i < skeletonData->ikConstraintsCount; ++i) { + if (ikConstraint == skeletonData->ikConstraints[i]) { + timeline->ikConstraintIndex = i; + break; + } + } + for (frame = ikMap->child, i = 0; frame; frame = frame->next, ++i) { + spIkConstraintTimeline_setFrame(timeline, i, Json_getFloat(frame, "time", 0), Json_getFloat(frame, "mix", 0), + Json_getInt(frame, "bendPositive", 1) ? 1 : -1); + readCurve(SUPER(timeline), i, frame); + } + animation->timelines[animation->timelinesCount++] = SUPER_CAST(spTimeline, timeline); + duration = timeline->frames[ikMap->size * 3 - 3]; + if (duration > animation->duration) animation->duration = duration; + } + + /* 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) { @@ -281,26 +305,27 @@ static spAnimation* _spSkeletonJson_readAnimation (spSkeletonJson* self, Json* r } FREE(tempVertices); - animation->timelines[animation->timelineCount++] = SUPER_CAST(spTimeline, timeline); + animation->timelines[animation->timelinesCount++] = SUPER_CAST(spTimeline, timeline); duration = timeline->frames[timelineArray->size - 1]; if (duration > animation->duration) animation->duration = duration; } } } + /* Draw order timeline. */ if (drawOrder) { - spDrawOrderTimeline* timeline = spDrawOrderTimeline_create(drawOrder->size, skeletonData->slotCount); + spDrawOrderTimeline* timeline = spDrawOrderTimeline_create(drawOrder->size, skeletonData->slotsCount); for (frame = drawOrder->child, i = 0; frame; frame = frame->next, ++i) { int ii; int* drawOrder = 0; Json* offsets = Json_getItem(frame, "offsets"); if (offsets) { Json* offsetMap; - int* unchanged = MALLOC(int, skeletonData->slotCount - offsets->size); + int* unchanged = MALLOC(int, skeletonData->slotsCount - offsets->size); int originalIndex = 0, unchangedIndex = 0; - drawOrder = MALLOC(int, skeletonData->slotCount); - for (ii = skeletonData->slotCount - 1; ii >= 0; --ii) + drawOrder = MALLOC(int, skeletonData->slotsCount); + for (ii = skeletonData->slotsCount - 1; ii >= 0; --ii) drawOrder[ii] = -1; for (offsetMap = offsets->child; offsetMap; offsetMap = offsetMap->next) { @@ -315,24 +340,25 @@ static spAnimation* _spSkeletonJson_readAnimation (spSkeletonJson* self, Json* r unchanged[unchangedIndex++] = originalIndex++; /* Set changed items. */ drawOrder[originalIndex + Json_getInt(offsetMap, "offset", 0)] = originalIndex; - ++originalIndex; + originalIndex++; } /* Collect remaining unchanged items. */ - while (originalIndex < skeletonData->slotCount) + while (originalIndex < skeletonData->slotsCount) unchanged[unchangedIndex++] = originalIndex++; /* Fill in unchanged items. */ - for (ii = skeletonData->slotCount - 1; ii >= 0; ii--) + for (ii = skeletonData->slotsCount - 1; ii >= 0; ii--) if (drawOrder[ii] == -1) drawOrder[ii] = unchanged[--unchangedIndex]; FREE(unchanged); } spDrawOrderTimeline_setFrame(timeline, i, Json_getFloat(frame, "time", 0), drawOrder); FREE(drawOrder); } - animation->timelines[animation->timelineCount++] = SUPER_CAST(spTimeline, timeline); + animation->timelines[animation->timelinesCount++] = SUPER_CAST(spTimeline, timeline); duration = timeline->frames[drawOrder->size - 1]; if (duration > animation->duration) animation->duration = duration; } + /* Event timeline. */ if (events) { Json* frame; @@ -353,7 +379,7 @@ static spAnimation* _spSkeletonJson_readAnimation (spSkeletonJson* self, Json* r if (stringValue) MALLOC_STR(event->stringValue, stringValue); spEventTimeline_setFrame(timeline, i, Json_getFloat(frame, "time", 0), event); } - animation->timelines[animation->timelineCount++] = SUPER_CAST(spTimeline, timeline); + animation->timelines[animation->timelinesCount++] = SUPER_CAST(spTimeline, timeline); duration = timeline->frames[events->size - 1]; if (duration > animation->duration) animation->duration = duration; } @@ -375,9 +401,9 @@ spSkeletonData* spSkeletonJson_readSkeletonDataFile (spSkeletonJson* self, const } spSkeletonData* spSkeletonJson_readSkeletonData (spSkeletonJson* self, const char* json) { - int i; + int i, ii; spSkeletonData* skeletonData; - Json *root, *bones, *boneMap, *slots, *skins, *animations, *events; + Json *root, *skeleton, *bones, *boneMap, *ik, *slots, *skins, *animations, *events; FREE(self->error); CONST_CAST(char*, self->error) = 0; @@ -390,6 +416,15 @@ spSkeletonData* spSkeletonJson_readSkeletonData (spSkeletonJson* self, const cha skeletonData = spSkeletonData_create(); + skeleton = Json_getItem(root, "skeleton"); + if (skeleton) { + skeletonData->hash = Json_getString(skeleton, "hash", 0); + skeletonData->version = Json_getString(skeleton, "spine", 0); + skeletonData->width = Json_getFloat(skeleton, "width", 0); + skeletonData->height = Json_getFloat(skeleton, "height", 0); + } + + /* Bones. */ bones = Json_getItem(root, "bones"); skeletonData->bones = MALLOC(spBoneData*, bones->size); for (boneMap = bones->child, i = 0; boneMap; boneMap = boneMap->next, ++i) { @@ -417,12 +452,51 @@ spSkeletonData* spSkeletonJson_readSkeletonData (spSkeletonJson* self, const cha boneData->inheritRotation = Json_getInt(boneMap, "inheritRotation", 1); skeletonData->bones[i] = boneData; - ++skeletonData->boneCount; + 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; + } + } + + /* Slots. */ slots = Json_getItem(root, "slots"); if (slots) { Json *slotMap; + skeletonData->slotsCount = slots->size; skeletonData->slots = MALLOC(spSlotData*, slots->size); for (slotMap = slots->child, i = 0; slotMap; slotMap = slotMap->next, ++i) { spSlotData* slotData; @@ -433,7 +507,7 @@ spSkeletonData* spSkeletonJson_readSkeletonData (spSkeletonJson* self, const cha spBoneData* boneData = spSkeletonData_findBone(skeletonData, boneName); if (!boneData) { spSkeletonData_dispose(skeletonData); - _spSkeletonJson_setError(self, root, "spSlot bone not found: ", boneName); + _spSkeletonJson_setError(self, root, "Slot bone not found: ", boneName); return 0; } @@ -453,20 +527,20 @@ spSkeletonData* spSkeletonJson_readSkeletonData (spSkeletonJson* self, const cha slotData->additiveBlending = Json_getInt(slotMap, "additive", 0); skeletonData->slots[i] = slotData; - ++skeletonData->slotCount; } } + /* Skins. */ skins = Json_getItem(root, "skins"); if (skins) { Json *slotMap; + skeletonData->skinsCount = skins->size; skeletonData->skins = MALLOC(spSkin*, skins->size); for (slotMap = skins->child, i = 0; slotMap; slotMap = slotMap->next, ++i) { Json *attachmentsMap; spSkin *skin = spSkin_create(slotMap->name); skeletonData->skins[i] = skin; - ++skeletonData->skinCount; if (strcmp(slotMap->name, "default") == 0) skeletonData->defaultSkin = skin; for (attachmentsMap = slotMap->child; attachmentsMap; attachmentsMap = attachmentsMap->next) { @@ -597,18 +671,18 @@ spSkeletonData* spSkeletonJson_readSkeletonData (spSkeletonJson* self, const cha vertices[i] = entry->valueFloat; for (i = 0; i < verticesCount;) { - int boneCount = (int)vertices[i]; - mesh->bonesCount += boneCount + 1; - mesh->weightsCount += boneCount * 3; - i += 1 + boneCount * 4; + 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 boneCount = (int)vertices[i++]; - mesh->bones[b++] = boneCount; - for (nn = i + boneCount * 4; i < nn; i += 4, ++b, w += 3) { + 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; @@ -670,14 +744,15 @@ spSkeletonData* spSkeletonJson_readSkeletonData (spSkeletonJson* self, const cha if (events) { Json *eventMap; const char* stringValue; + skeletonData->eventsCount = events->size; skeletonData->events = MALLOC(spEventData*, events->size); - for (eventMap = events->child; eventMap; eventMap = eventMap->next) { + for (eventMap = events->child, i = 0; eventMap; eventMap = eventMap->next, ++i) { spEventData* eventData = spEventData_create(eventMap->name); eventData->intValue = Json_getInt(eventMap, "int", 0); eventData->floatValue = Json_getFloat(eventMap, "float", 0); stringValue = Json_getString(eventMap, "string", 0); if (stringValue) MALLOC_STR(eventData->stringValue, stringValue); - skeletonData->events[skeletonData->eventCount++] = eventData; + skeletonData->events[i] = eventData; } } diff --git a/spine-c/src/spine/SkinnedMeshAttachment.c b/spine-c/src/spine/SkinnedMeshAttachment.c index 0d162fc13..1697d7948 100644 --- a/spine-c/src/spine/SkinnedMeshAttachment.c +++ b/spine-c/src/spine/SkinnedMeshAttachment.c @@ -72,10 +72,10 @@ void spSkinnedMeshAttachment_updateUVs (spSkinnedMeshAttachment* self) { } } -void spSkinnedMeshAttachment_computeWorldVertices (spSkinnedMeshAttachment* self, float x, float y, spSlot* slot, - float* worldVertices) { +void spSkinnedMeshAttachment_computeWorldVertices (spSkinnedMeshAttachment* self, spSlot* slot, float* worldVertices) { int w = 0, v = 0, b = 0, f = 0; - spBone** skeletonBones = slot->skeleton->bones; + 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; diff --git a/spine-c/src/spine/Slot.c b/spine-c/src/spine/Slot.c index 32c0dd530..bab8b5b43 100644 --- a/spine-c/src/spine/Slot.c +++ b/spine-c/src/spine/Slot.c @@ -30,17 +30,15 @@ #include #include -#include typedef struct { spSlot super; float attachmentTime; } _spSlot; -spSlot* spSlot_create (spSlotData* data, spSkeleton* skeleton, spBone* bone) { +spSlot* spSlot_create (spSlotData* data, spBone* bone) { spSlot* self = SUPER(NEW(_spSlot)); CONST_CAST(spSlotData*, self->data) = data; - CONST_CAST(spSkeleton*, self->skeleton) = skeleton; CONST_CAST(spBone*, self->bone) = bone; spSlot_setToSetupPose(self); return self; @@ -53,15 +51,15 @@ void spSlot_dispose (spSlot* self) { void spSlot_setAttachment (spSlot* self, spAttachment* attachment) { CONST_CAST(spAttachment*, self->attachment) = attachment; - SUB_CAST(_spSlot, self) ->attachmentTime = self->skeleton->time; + SUB_CAST(_spSlot, self) ->attachmentTime = self->bone->skeleton->time; } void spSlot_setAttachmentTime (spSlot* self, float time) { - SUB_CAST(_spSlot, self) ->attachmentTime = self->skeleton->time - time; + SUB_CAST(_spSlot, self) ->attachmentTime = self->bone->skeleton->time - time; } float spSlot_getAttachmentTime (const spSlot* self) { - return self->skeleton->time - SUB_CAST(_spSlot, self) ->attachmentTime; + return self->bone->skeleton->time - SUB_CAST(_spSlot, self) ->attachmentTime; } void spSlot_setToSetupPose (spSlot* self) { @@ -74,9 +72,9 @@ void spSlot_setToSetupPose (spSlot* self) { if (self->data->attachmentName) { /* Find slot index. */ int i; - for (i = 0; i < self->skeleton->data->slotCount; ++i) { - if (self->data == self->skeleton->data->slots[i]) { - attachment = spSkeleton_getAttachmentForSlotIndex(self->skeleton, i, self->data->attachmentName); + 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; } } diff --git a/spine-cocos2d-iphone/2/src/spine/SkeletonRenderer.m b/spine-cocos2d-iphone/2/src/spine/SkeletonRenderer.m index 32a4f3d61..ef0d5d0d8 100644 --- a/spine-cocos2d-iphone/2/src/spine/SkeletonRenderer.m +++ b/spine-cocos2d-iphone/2/src/spine/SkeletonRenderer.m @@ -149,14 +149,14 @@ static const int quadTriangles[6] = {0, 1, 2, 2, 3, 0}; const int* triangles = 0; int trianglesCount = 0; float r = 0, g = 0, b = 0, a = 0; - for (int i = 0, n = _skeleton->slotCount; i < n; i++) { + for (int i = 0, n = _skeleton->slotsCount; i < n; i++) { spSlot* slot = _skeleton->drawOrder[i]; if (!slot->attachment) continue; CCTexture2D *texture = 0; switch (slot->attachment->type) { case SP_ATTACHMENT_REGION: { spRegionAttachment* attachment = (spRegionAttachment*)slot->attachment; - spRegionAttachment_computeWorldVertices(attachment, slot->skeleton->x, slot->skeleton->y, slot->bone, worldVertices); + spRegionAttachment_computeWorldVertices(attachment, slot->bone, worldVertices); texture = [self getTextureForRegion:attachment]; uvs = attachment->uvs; verticesCount = 8; @@ -170,7 +170,7 @@ static const int quadTriangles[6] = {0, 1, 2, 2, 3, 0}; } case SP_ATTACHMENT_MESH: { spMeshAttachment* attachment = (spMeshAttachment*)slot->attachment; - spMeshAttachment_computeWorldVertices(attachment, slot->skeleton->x, slot->skeleton->y, slot, worldVertices); + spMeshAttachment_computeWorldVertices(attachment, slot, worldVertices); texture = [self getTextureForMesh:attachment]; uvs = attachment->uvs; verticesCount = attachment->verticesCount; @@ -184,7 +184,7 @@ static const int quadTriangles[6] = {0, 1, 2, 2, 3, 0}; } case SP_ATTACHMENT_SKINNED_MESH: { spSkinnedMeshAttachment* attachment = (spSkinnedMeshAttachment*)slot->attachment; - spSkinnedMeshAttachment_computeWorldVertices(attachment, slot->skeleton->x, slot->skeleton->y, slot, worldVertices); + spSkinnedMeshAttachment_computeWorldVertices(attachment, slot, worldVertices); texture = [self getTextureForSkinnedMesh:attachment]; uvs = attachment->uvs; verticesCount = attachment->uvsCount; @@ -220,11 +220,11 @@ static const int quadTriangles[6] = {0, 1, 2, 2, 3, 0}; ccDrawColor4B(0, 0, 255, 255); glLineWidth(1); CGPoint points[4]; - for (int i = 0, n = _skeleton->slotCount; i < n; i++) { + for (int i = 0, n = _skeleton->slotsCount; i < n; i++) { spSlot* slot = _skeleton->drawOrder[i]; if (!slot->attachment || slot->attachment->type != SP_ATTACHMENT_REGION) continue; spRegionAttachment* attachment = (spRegionAttachment*)slot->attachment; - spRegionAttachment_computeWorldVertices(attachment, slot->skeleton->x, slot->skeleton->y, slot->bone, worldVertices); + spRegionAttachment_computeWorldVertices(attachment, slot->bone, worldVertices); points[0] = ccp(worldVertices[0], worldVertices[1]); points[1] = ccp(worldVertices[2], worldVertices[3]); points[2] = ccp(worldVertices[4], worldVertices[5]); @@ -236,7 +236,7 @@ static const int quadTriangles[6] = {0, 1, 2, 2, 3, 0}; // Bone lengths. glLineWidth(2); ccDrawColor4B(255, 0, 0, 255); - for (int i = 0, n = _skeleton->boneCount; i < n; i++) { + for (int i = 0, n = _skeleton->bonesCount; i < n; i++) { spBone *bone = _skeleton->bones[i]; float x = bone->data->length * bone->m00 + bone->worldX; float y = bone->data->length * bone->m10 + bone->worldY; @@ -245,7 +245,7 @@ static const int quadTriangles[6] = {0, 1, 2, 2, 3, 0}; // Bone origins. ccPointSize(4); ccDrawColor4B(0, 0, 255, 255); // Root bone is blue. - for (int i = 0, n = _skeleton->boneCount; i < n; i++) { + for (int i = 0, n = _skeleton->bonesCount; i < n; i++) { spBone *bone = _skeleton->bones[i]; ccDrawPoint(ccp(bone->worldX, bone->worldY)); if (i == 0) ccDrawColor4B(0, 255, 0, 255); @@ -268,21 +268,21 @@ static const int quadTriangles[6] = {0, 1, 2, 2, 3, 0}; - (CGRect) boundingBox { float minX = FLT_MAX, minY = FLT_MAX, maxX = FLT_MIN, maxY = FLT_MIN; float scaleX = self.scaleX, scaleY = self.scaleY; - for (int i = 0; i < _skeleton->slotCount; ++i) { + for (int i = 0; i < _skeleton->slotsCount; ++i) { spSlot* slot = _skeleton->slots[i]; if (!slot->attachment) continue; int verticesCount; if (slot->attachment->type == SP_ATTACHMENT_REGION) { spRegionAttachment* attachment = (spRegionAttachment*)slot->attachment; - spRegionAttachment_computeWorldVertices(attachment, slot->skeleton->x, slot->skeleton->y, slot->bone, worldVertices); + spRegionAttachment_computeWorldVertices(attachment, slot->bone, worldVertices); verticesCount = 8; } else if (slot->attachment->type == SP_ATTACHMENT_MESH) { spMeshAttachment* mesh = (spMeshAttachment*)slot->attachment; - spMeshAttachment_computeWorldVertices(mesh, slot->skeleton->x, slot->skeleton->y, slot, worldVertices); + spMeshAttachment_computeWorldVertices(mesh, slot, worldVertices); verticesCount = mesh->verticesCount; } else if (slot->attachment->type == SP_ATTACHMENT_SKINNED_MESH) { spSkinnedMeshAttachment* mesh = (spSkinnedMeshAttachment*)slot->attachment; - spSkinnedMeshAttachment_computeWorldVertices(mesh, slot->skeleton->x, slot->skeleton->y, slot, worldVertices); + spSkinnedMeshAttachment_computeWorldVertices(mesh, slot, worldVertices); verticesCount = mesh->uvsCount; } else continue; diff --git a/spine-cocos2d-iphone/3.0/src/spine/SkeletonRenderer.m b/spine-cocos2d-iphone/3.0/src/spine/SkeletonRenderer.m index e70a7371e..b4ab82425 100755 --- a/spine-cocos2d-iphone/3.0/src/spine/SkeletonRenderer.m +++ b/spine-cocos2d-iphone/3.0/src/spine/SkeletonRenderer.m @@ -147,7 +147,7 @@ static const int quadTriangles[6] = {0, 1, 2, 2, 3, 0}; const int* triangles = 0; int trianglesCount = 0; float r = 0, g = 0, b = 0, a = 0; - for (int i = 0, n = _skeleton->slotCount; i < n; i++) { + for (int i = 0, n = _skeleton->slotsCount; i < n; i++) { spSlot* slot = _skeleton->drawOrder[i]; if (!slot->attachment) continue; @@ -155,7 +155,7 @@ static const int quadTriangles[6] = {0, 1, 2, 2, 3, 0}; switch (slot->attachment->type) { case SP_ATTACHMENT_REGION: { spRegionAttachment* attachment = (spRegionAttachment*)slot->attachment; - spRegionAttachment_computeWorldVertices(attachment, slot->skeleton->x, slot->skeleton->y, slot->bone, worldVertices); + spRegionAttachment_computeWorldVertices(attachment, slot->bone, worldVertices); texture = [self getTextureForRegion:attachment]; uvs = attachment->uvs; verticesCount = 8; @@ -170,7 +170,7 @@ static const int quadTriangles[6] = {0, 1, 2, 2, 3, 0}; case SP_ATTACHMENT_MESH: { spMeshAttachment* attachment = (spMeshAttachment*)slot->attachment; - spMeshAttachment_computeWorldVertices(attachment, slot->skeleton->x, slot->skeleton->y, slot, worldVertices); + spMeshAttachment_computeWorldVertices(attachment, slot, worldVertices); texture = [self getTextureForMesh:attachment]; uvs = attachment->uvs; verticesCount = attachment->verticesCount; @@ -185,7 +185,7 @@ static const int quadTriangles[6] = {0, 1, 2, 2, 3, 0}; case SP_ATTACHMENT_SKINNED_MESH: { spSkinnedMeshAttachment* attachment = (spSkinnedMeshAttachment*)slot->attachment; - spSkinnedMeshAttachment_computeWorldVertices(attachment, slot->skeleton->x, slot->skeleton->y, slot, worldVertices); + spSkinnedMeshAttachment_computeWorldVertices(attachment, slot, worldVertices); texture = [self getTextureForSkinnedMesh:attachment]; uvs = attachment->uvs; verticesCount = attachment->uvsCount; @@ -233,11 +233,11 @@ static const int quadTriangles[6] = {0, 1, 2, 2, 3, 0}; if (_debugSlots) { // Slots. CGPoint points[4]; - for (int i = 0, n = _skeleton->slotCount; i < n; i++) { + for (int i = 0, n = _skeleton->slotsCount; i < n; i++) { spSlot* slot = _skeleton->drawOrder[i]; if (!slot->attachment || slot->attachment->type != SP_ATTACHMENT_REGION) continue; spRegionAttachment* attachment = (spRegionAttachment*)slot->attachment; - spRegionAttachment_computeWorldVertices(attachment, slot->skeleton->x, slot->skeleton->y, slot->bone, worldVertices); + spRegionAttachment_computeWorldVertices(attachment, slot->bone, worldVertices); points[0] = ccp(worldVertices[0], worldVertices[1]); points[1] = ccp(worldVertices[2], worldVertices[3]); points[2] = ccp(worldVertices[4], worldVertices[5]); @@ -248,7 +248,7 @@ static const int quadTriangles[6] = {0, 1, 2, 2, 3, 0}; } if (_debugBones) { // Bone lengths. - for (int i = 0, n = _skeleton->boneCount; i < n; i++) { + for (int i = 0, n = _skeleton->bonesCount; i < n; i++) { spBone *bone = _skeleton->bones[i]; float x = bone->data->length * bone->m00 + bone->worldX; float y = bone->data->length * bone->m10 + bone->worldY; @@ -256,7 +256,7 @@ static const int quadTriangles[6] = {0, 1, 2, 2, 3, 0}; } // Bone origins. - for (int i = 0, n = _skeleton->boneCount; i < n; i++) { + for (int i = 0, n = _skeleton->bonesCount; i < n; i++) { spBone *bone = _skeleton->bones[i]; [_drawNode drawDot:ccp(bone->worldX, bone->worldY) radius:4 color:[CCColor greenColor]]; if (i == 0) [_drawNode drawDot:ccp(bone->worldX, bone->worldY) radius:4 color:[CCColor blueColor]]; @@ -279,21 +279,21 @@ static const int quadTriangles[6] = {0, 1, 2, 2, 3, 0}; - (CGRect) boundingBox { float minX = FLT_MAX, minY = FLT_MAX, maxX = FLT_MIN, maxY = FLT_MIN; float scaleX = self.scaleX, scaleY = self.scaleY; - for (int i = 0; i < _skeleton->slotCount; ++i) { + for (int i = 0; i < _skeleton->slotsCount; ++i) { spSlot* slot = _skeleton->slots[i]; if (!slot->attachment) continue; int verticesCount; if (slot->attachment->type == SP_ATTACHMENT_REGION) { spRegionAttachment* attachment = (spRegionAttachment*)slot->attachment; - spRegionAttachment_computeWorldVertices(attachment, slot->skeleton->x, slot->skeleton->y, slot->bone, worldVertices); + spRegionAttachment_computeWorldVertices(attachment, slot->bone, worldVertices); verticesCount = 8; } else if (slot->attachment->type == SP_ATTACHMENT_MESH) { spMeshAttachment* mesh = (spMeshAttachment*)slot->attachment; - spMeshAttachment_computeWorldVertices(mesh, slot->skeleton->x, slot->skeleton->y, slot, worldVertices); + spMeshAttachment_computeWorldVertices(mesh, slot, worldVertices); verticesCount = mesh->verticesCount; } else if (slot->attachment->type == SP_ATTACHMENT_SKINNED_MESH) { spSkinnedMeshAttachment* mesh = (spSkinnedMeshAttachment*)slot->attachment; - spSkinnedMeshAttachment_computeWorldVertices(mesh, slot->skeleton->x, slot->skeleton->y, slot, worldVertices); + spSkinnedMeshAttachment_computeWorldVertices(mesh, slot, worldVertices); verticesCount = mesh->uvsCount; } else continue; diff --git a/spine-cocos2dx/2/README.md b/spine-cocos2dx/2/README.md index 9edd7e268..fb9a867dc 100644 --- a/spine-cocos2dx/2/README.md +++ b/spine-cocos2dx/2/README.md @@ -16,5 +16,5 @@ Alternatively, the contents of the `spine-c/src`, `spine-c/include` and `spine-c ## Examples -[Spineboy](https://github.com/EsotericSoftware/spine-runtimes/blob/master/spine-cocos2dx/2/example/Classes/SpineboyExample.cpp) -[Golbins](https://github.com/EsotericSoftware/spine-runtimes/blob/master/spine-cocos2dx/2/example/Classes/GoblinsExample.cpp) +- [Spineboy](https://github.com/EsotericSoftware/spine-runtimes/blob/master/spine-cocos2dx/2/example/Classes/SpineboyExample.cpp) +- [Golbins](https://github.com/EsotericSoftware/spine-runtimes/blob/master/spine-cocos2dx/2/example/Classes/GoblinsExample.cpp) diff --git a/spine-cocos2dx/2/src/spine/SkeletonRenderer.cpp b/spine-cocos2dx/2/src/spine/SkeletonRenderer.cpp index 8ff54fbd8..0a2fec9e9 100644 --- a/spine-cocos2dx/2/src/spine/SkeletonRenderer.cpp +++ b/spine-cocos2dx/2/src/spine/SkeletonRenderer.cpp @@ -151,14 +151,14 @@ void SkeletonRenderer::draw () { const int* triangles = nullptr; int trianglesCount = 0; float r = 0, g = 0, b = 0, a = 0; - for (int i = 0, n = skeleton->slotCount; i < n; i++) { + for (int i = 0, n = skeleton->slotsCount; i < n; i++) { spSlot* slot = skeleton->drawOrder[i]; if (!slot->attachment) continue; CCTexture2D *texture = nullptr; switch (slot->attachment->type) { case SP_ATTACHMENT_REGION: { spRegionAttachment* attachment = (spRegionAttachment*)slot->attachment; - spRegionAttachment_computeWorldVertices(attachment, slot->skeleton->x, slot->skeleton->y, slot->bone, worldVertices); + spRegionAttachment_computeWorldVertices(attachment, slot->bone, worldVertices); texture = getTexture(attachment); uvs = attachment->uvs; verticesCount = 8; @@ -172,7 +172,7 @@ void SkeletonRenderer::draw () { } case SP_ATTACHMENT_MESH: { spMeshAttachment* attachment = (spMeshAttachment*)slot->attachment; - spMeshAttachment_computeWorldVertices(attachment, slot->skeleton->x, slot->skeleton->y, slot, worldVertices); + spMeshAttachment_computeWorldVertices(attachment, slot, worldVertices); texture = getTexture(attachment); uvs = attachment->uvs; verticesCount = attachment->verticesCount; @@ -186,7 +186,7 @@ void SkeletonRenderer::draw () { } case SP_ATTACHMENT_SKINNED_MESH: { spSkinnedMeshAttachment* attachment = (spSkinnedMeshAttachment*)slot->attachment; - spSkinnedMeshAttachment_computeWorldVertices(attachment, slot->skeleton->x, slot->skeleton->y, slot, worldVertices); + spSkinnedMeshAttachment_computeWorldVertices(attachment, slot, worldVertices); texture = getTexture(attachment); uvs = attachment->uvs; verticesCount = attachment->uvsCount; @@ -220,11 +220,11 @@ void SkeletonRenderer::draw () { ccDrawColor4B(0, 0, 255, 255); glLineWidth(1); CCPoint points[4]; - for (int i = 0, n = skeleton->slotCount; i < n; i++) { + for (int i = 0, n = skeleton->slotsCount; i < n; i++) { spSlot* slot = skeleton->drawOrder[i]; if (!slot->attachment || slot->attachment->type != SP_ATTACHMENT_REGION) continue; spRegionAttachment* attachment = (spRegionAttachment*)slot->attachment; - spRegionAttachment_computeWorldVertices(attachment, slot->skeleton->x, slot->skeleton->y, slot->bone, worldVertices); + spRegionAttachment_computeWorldVertices(attachment, slot->bone, worldVertices); points[0] = ccp(worldVertices[0], worldVertices[1]); points[1] = ccp(worldVertices[2], worldVertices[3]); points[2] = ccp(worldVertices[4], worldVertices[5]); @@ -236,7 +236,7 @@ void SkeletonRenderer::draw () { // Bone lengths. glLineWidth(2); ccDrawColor4B(255, 0, 0, 255); - for (int i = 0, n = skeleton->boneCount; i < n; i++) { + for (int i = 0, n = skeleton->bonesCount; i < n; i++) { spBone *bone = skeleton->bones[i]; float x = bone->data->length * bone->m00 + bone->worldX; float y = bone->data->length * bone->m10 + bone->worldY; @@ -245,7 +245,7 @@ void SkeletonRenderer::draw () { // Bone origins. ccPointSize(4); ccDrawColor4B(0, 0, 255, 255); // Root bone is blue. - for (int i = 0, n = skeleton->boneCount; i < n; i++) { + for (int i = 0, n = skeleton->bonesCount; i < n; i++) { spBone *bone = skeleton->bones[i]; ccDrawPoint(ccp(bone->worldX, bone->worldY)); if (i == 0) ccDrawColor4B(0, 255, 0, 255); @@ -268,21 +268,21 @@ CCTexture2D* SkeletonRenderer::getTexture (spSkinnedMeshAttachment* attachment) CCRect SkeletonRenderer::boundingBox () { float minX = FLT_MAX, minY = FLT_MAX, maxX = FLT_MIN, maxY = FLT_MIN; float scaleX = getScaleX(), scaleY = getScaleY(); - for (int i = 0; i < skeleton->slotCount; ++i) { + for (int i = 0; i < skeleton->slotsCount; ++i) { spSlot* slot = skeleton->slots[i]; if (!slot->attachment) continue; int verticesCount; if (slot->attachment->type == SP_ATTACHMENT_REGION) { spRegionAttachment* attachment = (spRegionAttachment*)slot->attachment; - spRegionAttachment_computeWorldVertices(attachment, slot->skeleton->x, slot->skeleton->y, slot->bone, worldVertices); + spRegionAttachment_computeWorldVertices(attachment, slot->bone, worldVertices); verticesCount = 8; } else if (slot->attachment->type == SP_ATTACHMENT_MESH) { spMeshAttachment* mesh = (spMeshAttachment*)slot->attachment; - spMeshAttachment_computeWorldVertices(mesh, slot->skeleton->x, slot->skeleton->y, slot, worldVertices); + spMeshAttachment_computeWorldVertices(mesh, slot, worldVertices); verticesCount = mesh->verticesCount; } else if (slot->attachment->type == SP_ATTACHMENT_SKINNED_MESH) { spSkinnedMeshAttachment* mesh = (spSkinnedMeshAttachment*)slot->attachment; - spSkinnedMeshAttachment_computeWorldVertices(mesh, slot->skeleton->x, slot->skeleton->y, slot, worldVertices); + spSkinnedMeshAttachment_computeWorldVertices(mesh, slot, worldVertices); verticesCount = mesh->uvsCount; } else continue; diff --git a/spine-cocos2dx/3.0/README.md b/spine-cocos2dx/3.0/README.md deleted file mode 100644 index cdb3d42f8..000000000 --- a/spine-cocos2dx/3.0/README.md +++ /dev/null @@ -1,20 +0,0 @@ -# spine-cocos2dx v3.0 - -The spine-cocos2dx runtime provides functionality to load, manipulate and render [Spine](http://esotericsoftware.com) skeletal animation data using [cocos2d-x](http://www.cocos2d-x.org/). spine-cocos2dx is based on [spine-c](https://github.com/EsotericSoftware/spine-runtimes/tree/master/spine-c). - -## Setup - -1. Download the Spine Runtimes source using [git](https://help.github.com/articles/set-up-git) or by downloading it [as a zip](https://github.com/EsotericSoftware/spine-runtimes/archive/master.zip). -1. Place the contents of a cocos2d-x version 3.0 distribution into the `spine-cocos2dx/3.0/cocos2dx` directory. -1. Open the XCode (Mac) or Visual C++ 2012 Express (Windows) project file from the `spine-cocos2dx/3.0/example` directory. Build files are also provided for Android. - -Alternatively, the contents of the `spine-c/src`, `spine-c/include` and `spine-cocos2dx/3.0/src` directories can be copied into your project. Be sure your header search path will find the contents of the `spine-c/include` and `spine-cocos2dx/3.0/src` directories. Note that the includes use `spine/Xxx.h`, so the `spine` directory cannot be omitted when copying the files. - -## Notes - -- Images are no longer premultiplied by cocos2d-x as they where in cocos2d-x v2, so the Spine atlas images *should* use premultiplied alpha. - -## Examples - -[Spineboy](https://github.com/EsotericSoftware/spine-runtimes/blob/master/spine-cocos2dx/3.0/example/Classes/SpineboyExample.cpp) -[Golbins](https://github.com/EsotericSoftware/spine-runtimes/blob/master/spine-cocos2dx/3.0/example/Classes/GoblinsExample.cpp) \ No newline at end of file diff --git a/spine-cocos2dx/3.0/example/Classes/AppDelegate.h b/spine-cocos2dx/3.0/example/Classes/AppDelegate.h deleted file mode 100644 index 318fc27f4..000000000 --- a/spine-cocos2dx/3.0/example/Classes/AppDelegate.h +++ /dev/null @@ -1,18 +0,0 @@ - - -#ifndef _APPDELEGATE_H_ -#define _APPDELEGATE_H_ - -#include "cocos2d.h" - -class AppDelegate: private cocos2d::CCApplication { -public: - AppDelegate (); - virtual ~AppDelegate (); - - virtual bool applicationDidFinishLaunching (); - virtual void applicationDidEnterBackground (); - virtual void applicationWillEnterForeground (); -}; - -#endif // _APPDELEGATE_H_ \ No newline at end of file diff --git a/spine-cocos2dx/3.0/example/Classes/AppMacros.h b/spine-cocos2dx/3.0/example/Classes/AppMacros.h deleted file mode 100644 index 3f3a06e0e..000000000 --- a/spine-cocos2dx/3.0/example/Classes/AppMacros.h +++ /dev/null @@ -1,61 +0,0 @@ - - -#ifndef _APPMACROS_H_ -#define _APPMACROS_H_ - -#include "cocos2d.h" - -/* For demonstrating using one design resolution to match different resources, - or one resource to match different design resolutions. - - [Situation 1] Using one design resolution to match different resources. - Please look into Appdelegate::applicationDidFinishLaunching. - We check current device frame size to decide which resource need to be selected. - So if you want to test this situation which said in title '[Situation 1]', - you should change ios simulator to different device(e.g. iphone, iphone-retina3.5, iphone-retina4.0, ipad, ipad-retina), - or change the window size in "proj.XXX/main.cpp" by "CCEGLView::setFrameSize" if you are using win32 or linux plaform - and modify "proj.mac/AppController.mm" by changing the window rectangle. - - [Situation 2] Using one resource to match different design resolutions. - The coordinates in your codes is based on your current design resolution rather than resource size. - Therefore, your design resolution could be very large and your resource size could be small. - To test this, just define the marco 'TARGET_DESIGN_RESOLUTION_SIZE' to 'DESIGN_RESOLUTION_2048X1536' - and open iphone simulator or create a window of 480x320 size. - - [Note] Normally, developer just need to define one design resolution(e.g. 960x640) with one or more resources. - */ - -#define DESIGN_RESOLUTION_480X320 0 -#define DESIGN_RESOLUTION_960x640 1 -#define DESIGN_RESOLUTION_1024X768 2 -#define DESIGN_RESOLUTION_2048X1536 3 - -/* If you want to switch design resolution, change next line */ -#define TARGET_DESIGN_RESOLUTION_SIZE DESIGN_RESOLUTION_960x640 - -typedef struct tagResource { - cocos2d::Size size; - char directory[100]; -} Resource; - -static Resource smallResource = {cocos2d::Size(480, 320), "iphone"}; -static Resource mediumResource = {cocos2d::Size(960, 640), "iphone-retina"}; -static Resource largeResource = {cocos2d::Size(1024, 768), "ipad"}; -static Resource extralargeResource = {cocos2d::Size(2048, 1536), "ipad-retina"}; - -#if (TARGET_DESIGN_RESOLUTION_SIZE == DESIGN_RESOLUTION_480X320) -static cocos2d::CCSize designResolutionSize = cocos2d::Size(480, 320); -#elif (TARGET_DESIGN_RESOLUTION_SIZE == DESIGN_RESOLUTION_960x640) -static cocos2d::CCSize designResolutionSize = cocos2d::Size(960, 640); -#elif (TARGET_DESIGN_RESOLUTION_SIZE == DESIGN_RESOLUTION_1024X768) -static cocos2d::CCSize designResolutionSize = cocos2d::Size(1024, 768); -#elif (TARGET_DESIGN_RESOLUTION_SIZE == DESIGN_RESOLUTION_2048X1536) -static cocos2d::CCSize designResolutionSize = cocos2d::Size(2048, 1536); -#else -#error unknown target design resolution! -#endif - -// The font size 24 is designed for small resolution, so we should change it to fit for current design resolution -#define TITLE_FONT_SIZE (cocos2d::Director::getInstance()->getOpenGLView()->getDesignResolutionSize().width / smallResource.size.width * 24) - -#endif /* _APPMACROS_H_ */ \ No newline at end of file diff --git a/spine-cocos2dx/3.0/example/Classes/GoblinsExample.cpp b/spine-cocos2dx/3.0/example/Classes/GoblinsExample.cpp deleted file mode 100644 index 4f7bee35e..000000000 --- a/spine-cocos2dx/3.0/example/Classes/GoblinsExample.cpp +++ /dev/null @@ -1,73 +0,0 @@ -/****************************************************************************** - * Spine Runtimes Software License - * Version 2.1 - * - * Copyright (c) 2013, Esoteric Software - * All rights reserved. - * - * You are granted a perpetual, non-exclusive, non-sublicensable and - * non-transferable license to install, execute and perform the Spine Runtimes - * Software (the "Software") solely for internal use. Without the written - * permission of Esoteric Software (typically granted by licensing Spine), 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 SOFTARE 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 "GoblinsExample.h" -#include "SpineboyExample.h" -#include -#include -#include - -USING_NS_CC; -using namespace spine; -using namespace std; - -Scene* GoblinsExample::scene () { - Scene *scene = Scene::create(); - scene->addChild(GoblinsExample::create()); - return scene; -} - -bool GoblinsExample::init () { - if (!LayerColor::initWithColor(Color4B(128, 128, 128, 255))) return false; - - skeletonNode = SkeletonAnimation::createWithFile("goblins-ffd.json", "goblins-ffd.atlas", 1.5f); - skeletonNode->setAnimation(0, "walk", true); - skeletonNode->setSkin("goblin"); - - Size windowSize = Director::getInstance()->getWinSize(); - skeletonNode->setPosition(Point(windowSize.width / 2, 20)); - addChild(skeletonNode); - - scheduleUpdate(); - - EventListenerTouchOneByOne* listener = EventListenerTouchOneByOne::create(); - listener->onTouchBegan = [this] (Touch* touch, Event* event) -> bool { - if (!skeletonNode->debugBones) - skeletonNode->debugBones = true; - else if (skeletonNode->timeScale == 1) - skeletonNode->timeScale = 0.3f; - else - Director::getInstance()->replaceScene(SpineboyExample::scene()); - return true; - }; - _eventDispatcher->addEventListenerWithSceneGraphPriority(listener, this); - - return true; -} diff --git a/spine-cocos2dx/3.0/example/Classes/SpineboyExample.cpp b/spine-cocos2dx/3.0/example/Classes/SpineboyExample.cpp deleted file mode 100644 index 838d1fa78..000000000 --- a/spine-cocos2dx/3.0/example/Classes/SpineboyExample.cpp +++ /dev/null @@ -1,105 +0,0 @@ -/****************************************************************************** - * Spine Runtimes Software License - * Version 2.1 - * - * Copyright (c) 2013, Esoteric Software - * All rights reserved. - * - * You are granted a perpetual, non-exclusive, non-sublicensable and - * non-transferable license to install, execute and perform the Spine Runtimes - * Software (the "Software") solely for internal use. Without the written - * permission of Esoteric Software (typically granted by licensing Spine), 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 SOFTARE 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 "SpineboyExample.h" -#include "GoblinsExample.h" -#include -#include -#include - -USING_NS_CC; -using namespace spine; -using namespace std; - -Scene* SpineboyExample::scene () { - Scene *scene = Scene::create(); - scene->addChild(SpineboyExample::create()); - return scene; -} - -bool SpineboyExample::init () { - if (!LayerColor::initWithColor(Color4B(128, 128, 128, 255))) return false; - - skeletonNode = SkeletonAnimation::createWithFile("spineboy.json", "spineboy.atlas", 0.6f); - - skeletonNode->startListener = [this] (int trackIndex) { - spTrackEntry* entry = spAnimationState_getCurrent(skeletonNode->state, trackIndex); - const char* animationName = (entry && entry->animation) ? entry->animation->name : 0; - log("%d start: %s", trackIndex, animationName); - }; - skeletonNode->endListener = [] (int trackIndex) { - log("%d end", trackIndex); - }; - skeletonNode->completeListener = [] (int trackIndex, int loopCount) { - log("%d complete: %d", trackIndex, loopCount); - }; - skeletonNode->eventListener = [] (int trackIndex, spEvent* event) { - log("%d event: %s, %d, %f, %s", trackIndex, event->data->name, event->intValue, event->floatValue, event->stringValue); - }; - - skeletonNode->setMix("walk", "jump", 0.2f); - skeletonNode->setMix("jump", "run", 0.2f); - skeletonNode->setAnimation(0, "walk", true); - spTrackEntry* jumpEntry = skeletonNode->addAnimation(0, "jump", false, 3); - skeletonNode->addAnimation(0, "run", true); - - skeletonNode->setStartListener(jumpEntry, [] (int trackIndex) { - log("jumped!"); - }); - - // skeletonNode->addAnimation(1, "test", true); - // skeletonNode->runAction(RepeatForever::create(Sequence::create(FadeOut::create(1), FadeIn::create(1), DelayTime::create(5), NULL))); - - Size windowSize = Director::getInstance()->getWinSize(); - skeletonNode->setPosition(Point(windowSize.width / 2, 20)); - addChild(skeletonNode); - - scheduleUpdate(); - - EventListenerTouchOneByOne* listener = EventListenerTouchOneByOne::create(); - listener->onTouchBegan = [this] (Touch* touch, Event* event) -> bool { - if (!skeletonNode->debugBones) - skeletonNode->debugBones = true; - else if (skeletonNode->timeScale == 1) - skeletonNode->timeScale = 0.3f; - else - Director::getInstance()->replaceScene(GoblinsExample::scene()); - return true; - }; - _eventDispatcher->addEventListenerWithSceneGraphPriority(listener, this); - - return true; -} - -void SpineboyExample::update (float deltaTime) { - // Test releasing memory. - // Director::getInstance()->replaceScene(SpineboyExample::scene()); -} - diff --git a/spine-cocos2dx/3.0/example/Resources/ipad-retina/goblins-ffd.png b/spine-cocos2dx/3.0/example/Resources/ipad-retina/goblins-ffd.png deleted file mode 100644 index f172361f2..000000000 Binary files a/spine-cocos2dx/3.0/example/Resources/ipad-retina/goblins-ffd.png and /dev/null differ diff --git a/spine-cocos2dx/3.0/example/Resources/ipad-retina/spineboy.png b/spine-cocos2dx/3.0/example/Resources/ipad-retina/spineboy.png deleted file mode 100644 index b43262310..000000000 Binary files a/spine-cocos2dx/3.0/example/Resources/ipad-retina/spineboy.png and /dev/null differ diff --git a/spine-cocos2dx/3.0/example/Resources/ipad/goblins-ffd.png b/spine-cocos2dx/3.0/example/Resources/ipad/goblins-ffd.png deleted file mode 100644 index f172361f2..000000000 Binary files a/spine-cocos2dx/3.0/example/Resources/ipad/goblins-ffd.png and /dev/null differ diff --git a/spine-cocos2dx/3.0/example/Resources/ipad/spineboy.png b/spine-cocos2dx/3.0/example/Resources/ipad/spineboy.png deleted file mode 100644 index b43262310..000000000 Binary files a/spine-cocos2dx/3.0/example/Resources/ipad/spineboy.png and /dev/null differ diff --git a/spine-cocos2dx/3.0/example/Resources/iphone-retina/goblins-ffd.png b/spine-cocos2dx/3.0/example/Resources/iphone-retina/goblins-ffd.png deleted file mode 100644 index f172361f2..000000000 Binary files a/spine-cocos2dx/3.0/example/Resources/iphone-retina/goblins-ffd.png and /dev/null differ diff --git a/spine-cocos2dx/3.0/example/Resources/iphone-retina/spineboy.png b/spine-cocos2dx/3.0/example/Resources/iphone-retina/spineboy.png deleted file mode 100644 index b43262310..000000000 Binary files a/spine-cocos2dx/3.0/example/Resources/iphone-retina/spineboy.png and /dev/null differ diff --git a/spine-cocos2dx/3.0/example/Resources/iphone/goblins-ffd.png b/spine-cocos2dx/3.0/example/Resources/iphone/goblins-ffd.png deleted file mode 100644 index f172361f2..000000000 Binary files a/spine-cocos2dx/3.0/example/Resources/iphone/goblins-ffd.png and /dev/null differ diff --git a/spine-cocos2dx/3.0/example/Resources/iphone/spineboy.png b/spine-cocos2dx/3.0/example/Resources/iphone/spineboy.png deleted file mode 100644 index b43262310..000000000 Binary files a/spine-cocos2dx/3.0/example/Resources/iphone/spineboy.png and /dev/null differ diff --git a/spine-cocos2dx/3.0/src/spine/PolygonBatch.cpp b/spine-cocos2dx/3.0/src/spine/PolygonBatch.cpp deleted file mode 100644 index a8a227873..000000000 --- a/spine-cocos2dx/3.0/src/spine/PolygonBatch.cpp +++ /dev/null @@ -1,112 +0,0 @@ -/****************************************************************************** - * Spine Runtimes Software License - * Version 2.1 - * - * Copyright (c) 2013, Esoteric Software - * All rights reserved. - * - * You are granted a perpetual, non-exclusive, non-sublicensable and - * non-transferable license to install, execute and perform the Spine Runtimes - * Software (the "Software") solely for internal use. Without the written - * permission of Esoteric Software (typically granted by licensing Spine), 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 SOFTARE 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 - -USING_NS_CC; - -namespace spine { - -PolygonBatch* PolygonBatch::createWithCapacity (int capacity) { - PolygonBatch* batch = new PolygonBatch(); - batch->initWithCapacity(capacity); - batch->autorelease(); - return batch; -} - -PolygonBatch::PolygonBatch () : - capacity(0), - vertices(nullptr), verticesCount(0), - triangles(nullptr), trianglesCount(0), - texture(nullptr) -{} - -bool PolygonBatch::initWithCapacity (int capacity) { - // 32767 is max index, so 32767 / 3 - (32767 / 3 % 3) = 10920. - CCASSERT(capacity <= 10920, "capacity cannot be > 10920"); - CCASSERT(capacity >= 0, "capacity cannot be < 0"); - this->capacity = capacity; - vertices = MALLOC(V2F_C4B_T2F, capacity); - triangles = MALLOC(GLushort, capacity * 3); - return true; -} - -PolygonBatch::~PolygonBatch () { - FREE(vertices); - FREE(triangles); -} - -void PolygonBatch::add (const Texture2D* addTexture, - const float* addVertices, const float* uvs, int addVerticesCount, - const int* addTriangles, int addTrianglesCount, - Color4B* color) { - - if ( - addTexture != texture - || verticesCount + (addVerticesCount >> 1) > capacity - || trianglesCount + addTrianglesCount > capacity * 3) { - this->flush(); - texture = addTexture; - } - - for (int i = 0; i < addTrianglesCount; ++i, ++trianglesCount) - triangles[trianglesCount] = addTriangles[i] + verticesCount; - - for (int i = 0; i < addVerticesCount; i += 2, ++verticesCount) { - V2F_C4B_T2F* vertex = vertices + verticesCount; - vertex->vertices.x = addVertices[i]; - vertex->vertices.y = addVertices[i + 1]; - vertex->colors = *color; - vertex->texCoords.u = uvs[i]; - vertex->texCoords.v = uvs[i + 1]; - } -} - -void PolygonBatch::flush () { - if (!verticesCount) return; - - GL::bindTexture2D(texture->getName()); - glEnableVertexAttribArray(GLProgram::VERTEX_ATTRIB_POSITION); - glEnableVertexAttribArray(GLProgram::VERTEX_ATTRIB_COLOR); - glEnableVertexAttribArray(GLProgram::VERTEX_ATTRIB_TEX_COORDS); - glVertexAttribPointer(GLProgram::VERTEX_ATTRIB_POSITION, 2, GL_FLOAT, GL_FALSE, sizeof(V2F_C4B_T2F), &vertices[0].vertices); - glVertexAttribPointer(GLProgram::VERTEX_ATTRIB_COLOR, 4, GL_UNSIGNED_BYTE, GL_TRUE, sizeof(V2F_C4B_T2F), &vertices[0].colors); - glVertexAttribPointer(GLProgram::VERTEX_ATTRIB_TEX_COORDS, 2, GL_FLOAT, GL_FALSE, sizeof(V2F_C4B_T2F), &vertices[0].texCoords); - - glDrawElements(GL_TRIANGLES, trianglesCount, GL_UNSIGNED_SHORT, triangles); - - verticesCount = 0; - trianglesCount = 0; - - CHECK_GL_ERROR_DEBUG(); -} - -} diff --git a/spine-cocos2dx/3.0/src/spine/SkeletonAnimation.cpp b/spine-cocos2dx/3.0/src/spine/SkeletonAnimation.cpp deleted file mode 100644 index 611916ea3..000000000 --- a/spine-cocos2dx/3.0/src/spine/SkeletonAnimation.cpp +++ /dev/null @@ -1,229 +0,0 @@ -/****************************************************************************** - * Spine Runtimes Software License - * Version 2.1 - * - * Copyright (c) 2013, Esoteric Software - * All rights reserved. - * - * You are granted a perpetual, non-exclusive, non-sublicensable and - * non-transferable license to install, execute and perform the Spine Runtimes - * Software (the "Software") solely for internal use. Without the written - * permission of Esoteric Software (typically granted by licensing Spine), 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 SOFTARE 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 -#include - -USING_NS_CC; -using std::min; -using std::max; -using std::vector; - -namespace spine { - -void animationCallback (spAnimationState* state, int trackIndex, spEventType type, spEvent* event, int loopCount) { - ((SkeletonAnimation*)state->rendererObject)->onAnimationStateEvent(trackIndex, type, event, loopCount); -} - -void trackEntryCallback (spAnimationState* state, int trackIndex, spEventType type, spEvent* event, int loopCount) { - ((SkeletonAnimation*)state->rendererObject)->onTrackEntryEvent(trackIndex, type, event, loopCount); -} - -typedef struct _TrackEntryListeners { - StartListener startListener; - EndListener endListener; - CompleteListener completeListener; - EventListener eventListener; -} _TrackEntryListeners; - -static _TrackEntryListeners* getListeners (spTrackEntry* entry) { - if (!entry->rendererObject) { - entry->rendererObject = NEW(spine::_TrackEntryListeners); - entry->listener = trackEntryCallback; - } - return (_TrackEntryListeners*)entry->rendererObject; -} - -void disposeTrackEntry (spTrackEntry* entry) { - if (entry->rendererObject) FREE(entry->rendererObject); - _spTrackEntry_dispose(entry); -} - -// - -SkeletonAnimation* SkeletonAnimation::createWithData (spSkeletonData* skeletonData) { - SkeletonAnimation* node = new SkeletonAnimation(skeletonData); - node->autorelease(); - return node; -} - -SkeletonAnimation* SkeletonAnimation::createWithFile (const char* skeletonDataFile, spAtlas* atlas, float scale) { - SkeletonAnimation* node = new SkeletonAnimation(skeletonDataFile, atlas, scale); - node->autorelease(); - return node; -} - -SkeletonAnimation* SkeletonAnimation::createWithFile (const char* skeletonDataFile, const char* atlasFile, float scale) { - SkeletonAnimation* node = new SkeletonAnimation(skeletonDataFile, atlasFile, scale); - node->autorelease(); - return node; -} - -void SkeletonAnimation::initialize () { - ownsAnimationStateData = true; - state = spAnimationState_create(spAnimationStateData_create(skeleton->data)); - state->rendererObject = this; - state->listener = animationCallback; - - _spAnimationState* stateInternal = (_spAnimationState*)state; - stateInternal->disposeTrackEntry = disposeTrackEntry; -} - -SkeletonAnimation::SkeletonAnimation (spSkeletonData *skeletonData) - : SkeletonRenderer(skeletonData) { - initialize(); -} - -SkeletonAnimation::SkeletonAnimation (const char* skeletonDataFile, spAtlas* atlas, float scale) - : SkeletonRenderer(skeletonDataFile, atlas, scale) { - initialize(); -} - -SkeletonAnimation::SkeletonAnimation (const char* skeletonDataFile, const char* atlasFile, float scale) - : SkeletonRenderer(skeletonDataFile, atlasFile, scale) { - initialize(); -} - -SkeletonAnimation::~SkeletonAnimation () { - if (ownsAnimationStateData) spAnimationStateData_dispose(state->data); - spAnimationState_dispose(state); -} - -void SkeletonAnimation::update (float deltaTime) { - super::update(deltaTime); - - deltaTime *= timeScale; - spAnimationState_update(state, deltaTime); - spAnimationState_apply(state, skeleton); - spSkeleton_updateWorldTransform(skeleton); -} - -void SkeletonAnimation::setAnimationStateData (spAnimationStateData* stateData) { - CCASSERT(stateData, "stateData cannot be null."); - - if (ownsAnimationStateData) spAnimationStateData_dispose(state->data); - spAnimationState_dispose(state); - - ownsAnimationStateData = false; - state = spAnimationState_create(stateData); - state->rendererObject = this; - state->listener = animationCallback; -} - -void SkeletonAnimation::setMix (const char* fromAnimation, const char* toAnimation, float duration) { - spAnimationStateData_setMixByName(state->data, fromAnimation, toAnimation, duration); -} - -spTrackEntry* SkeletonAnimation::setAnimation (int trackIndex, const char* name, bool loop) { - spAnimation* animation = spSkeletonData_findAnimation(skeleton->data, name); - if (!animation) { - log("Spine: Animation not found: %s", name); - return 0; - } - return spAnimationState_setAnimation(state, trackIndex, animation, loop); -} - -spTrackEntry* SkeletonAnimation::addAnimation (int trackIndex, const char* name, bool loop, float delay) { - spAnimation* animation = spSkeletonData_findAnimation(skeleton->data, name); - if (!animation) { - log("Spine: Animation not found: %s", name); - return 0; - } - return spAnimationState_addAnimation(state, trackIndex, animation, loop, delay); -} - -spTrackEntry* SkeletonAnimation::getCurrent (int trackIndex) { - return spAnimationState_getCurrent(state, trackIndex); -} - -void SkeletonAnimation::clearTracks () { - spAnimationState_clearTracks(state); -} - -void SkeletonAnimation::clearTrack (int trackIndex) { - spAnimationState_clearTrack(state, trackIndex); -} - -void SkeletonAnimation::onAnimationStateEvent (int trackIndex, spEventType type, spEvent* event, int loopCount) { - switch (type) { - case SP_ANIMATION_START: - if (startListener) startListener(trackIndex); - break; - case SP_ANIMATION_END: - if (endListener) endListener(trackIndex); - break; - case SP_ANIMATION_COMPLETE: - if (completeListener) completeListener(trackIndex, loopCount); - break; - case SP_ANIMATION_EVENT: - if (eventListener) eventListener(trackIndex, event); - break; - } -} - -void SkeletonAnimation::onTrackEntryEvent (int trackIndex, spEventType type, spEvent* event, int loopCount) { - spTrackEntry* entry = spAnimationState_getCurrent(state, trackIndex); - if (!entry->rendererObject) return; - _TrackEntryListeners* listeners = (_TrackEntryListeners*)entry->rendererObject; - switch (type) { - case SP_ANIMATION_START: - if (listeners->startListener) listeners->startListener(trackIndex); - break; - case SP_ANIMATION_END: - if (listeners->endListener) listeners->endListener(trackIndex); - break; - case SP_ANIMATION_COMPLETE: - if (listeners->completeListener) listeners->completeListener(trackIndex, loopCount); - break; - case SP_ANIMATION_EVENT: - if (listeners->eventListener) listeners->eventListener(trackIndex, event); - break; - } -} - -void SkeletonAnimation::setStartListener (spTrackEntry* entry, StartListener listener) { - getListeners(entry)->startListener = listener; -} - -void SkeletonAnimation::setEndListener (spTrackEntry* entry, EndListener listener) { - getListeners(entry)->endListener = listener; -} - -void SkeletonAnimation::setCompleteListener (spTrackEntry* entry, CompleteListener listener) { - getListeners(entry)->completeListener = listener; -} - -void SkeletonAnimation::setEventListener (spTrackEntry* entry, spine::EventListener listener) { - getListeners(entry)->eventListener = listener; -} - -} diff --git a/spine-cocos2dx/3.0/src/spine/SkeletonAnimation.h b/spine-cocos2dx/3.0/src/spine/SkeletonAnimation.h deleted file mode 100644 index ce5da45bb..000000000 --- a/spine-cocos2dx/3.0/src/spine/SkeletonAnimation.h +++ /dev/null @@ -1,96 +0,0 @@ -/****************************************************************************** - * Spine Runtimes Software License - * Version 2.1 - * - * Copyright (c) 2013, Esoteric Software - * All rights reserved. - * - * You are granted a perpetual, non-exclusive, non-sublicensable and - * non-transferable license to install, execute and perform the Spine Runtimes - * Software (the "Software") solely for internal use. Without the written - * permission of Esoteric Software (typically granted by licensing Spine), 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 SOFTARE 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_SKELETONANIMATION_H_ -#define SPINE_SKELETONANIMATION_H_ - -#include -#include -#include "cocos2d.h" - -namespace spine { - -typedef std::function StartListener; -typedef std::function EndListener; -typedef std::function CompleteListener; -typedef std::function EventListener; - -/** Draws an animated skeleton, providing an AnimationState for applying one or more animations and queuing animations to be - * played later. */ -class SkeletonAnimation: public SkeletonRenderer { -public: - spAnimationState* state; - - static SkeletonAnimation* createWithData (spSkeletonData* skeletonData); - static SkeletonAnimation* createWithFile (const char* skeletonDataFile, spAtlas* atlas, float scale = 0); - static SkeletonAnimation* createWithFile (const char* skeletonDataFile, const char* atlasFile, float scale = 0); - - SkeletonAnimation (spSkeletonData* skeletonData); - SkeletonAnimation (const char* skeletonDataFile, spAtlas* atlas, float scale = 0); - SkeletonAnimation (const char* skeletonDataFile, const char* atlasFile, float scale = 0); - - virtual ~SkeletonAnimation (); - - virtual void update (float deltaTime); - - void setAnimationStateData (spAnimationStateData* stateData); - void setMix (const char* fromAnimation, const char* toAnimation, float duration); - - spTrackEntry* setAnimation (int trackIndex, const char* name, bool loop); - spTrackEntry* addAnimation (int trackIndex, const char* name, bool loop, float delay = 0); - spTrackEntry* getCurrent (int trackIndex = 0); - void clearTracks (); - void clearTrack (int trackIndex = 0); - - StartListener startListener; - EndListener endListener; - CompleteListener completeListener; - EventListener eventListener; - void setStartListener (spTrackEntry* entry, StartListener listener); - void setEndListener (spTrackEntry* entry, EndListener listener); - void setCompleteListener (spTrackEntry* entry, CompleteListener listener); - void setEventListener (spTrackEntry* entry, EventListener listener); - - virtual void onAnimationStateEvent (int trackIndex, spEventType type, spEvent* event, int loopCount); - virtual void onTrackEntryEvent (int trackIndex, spEventType type, spEvent* event, int loopCount); - -protected: - SkeletonAnimation (); - -private: - typedef SkeletonRenderer super; - bool ownsAnimationStateData; - - void initialize (); -}; - -} - -#endif /* SPINE_SKELETONANIMATION_H_ */ diff --git a/spine-cocos2dx/3.0/src/spine/SkeletonRenderer.cpp b/spine-cocos2dx/3.0/src/spine/SkeletonRenderer.cpp deleted file mode 100644 index 0635a7a4b..000000000 --- a/spine-cocos2dx/3.0/src/spine/SkeletonRenderer.cpp +++ /dev/null @@ -1,366 +0,0 @@ -/****************************************************************************** - * Spine Runtimes Software License - * Version 2.1 - * - * Copyright (c) 2013, Esoteric Software - * All rights reserved. - * - * You are granted a perpetual, non-exclusive, non-sublicensable and - * non-transferable license to install, execute and perform the Spine Runtimes - * Software (the "Software") solely for internal use. Without the written - * permission of Esoteric Software (typically granted by licensing Spine), 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 SOFTARE 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 -#include -#include - -USING_NS_CC; -using std::min; -using std::max; - -namespace spine { - -static const int quadTriangles[6] = {0, 1, 2, 2, 3, 0}; - -SkeletonRenderer* SkeletonRenderer::createWithData (spSkeletonData* skeletonData, bool ownsSkeletonData) { - SkeletonRenderer* node = new SkeletonRenderer(skeletonData, ownsSkeletonData); - node->autorelease(); - return node; -} - -SkeletonRenderer* SkeletonRenderer::createWithFile (const char* skeletonDataFile, spAtlas* atlas, float scale) { - SkeletonRenderer* node = new SkeletonRenderer(skeletonDataFile, atlas, scale); - node->autorelease(); - return node; -} - -SkeletonRenderer* SkeletonRenderer::createWithFile (const char* skeletonDataFile, const char* atlasFile, float scale) { - SkeletonRenderer* node = new SkeletonRenderer(skeletonDataFile, atlasFile, scale); - node->autorelease(); - return node; -} - -void SkeletonRenderer::initialize () { - atlas = 0; - debugSlots = false; - debugBones = false; - timeScale = 1; - - worldVertices = MALLOC(float, 1000); // Max number of vertices per mesh. - - batch = PolygonBatch::createWithCapacity(2000); // Max number of vertices and triangles per batch. - batch->retain(); - - blendFunc = BlendFunc::ALPHA_PREMULTIPLIED; - setOpacityModifyRGB(true); - - setShaderProgram(ShaderCache::getInstance()->getProgram(GLProgram::SHADER_NAME_POSITION_TEXTURE_COLOR)); - scheduleUpdate(); -} - -void SkeletonRenderer::setSkeletonData (spSkeletonData *skeletonData, bool ownsSkeletonData) { - skeleton = spSkeleton_create(skeletonData); - rootBone = skeleton->bones[0]; - this->ownsSkeletonData = ownsSkeletonData; -} - -SkeletonRenderer::SkeletonRenderer () { - initialize(); -} - -SkeletonRenderer::SkeletonRenderer (spSkeletonData *skeletonData, bool ownsSkeletonData) { - initialize(); - - setSkeletonData(skeletonData, ownsSkeletonData); -} - -SkeletonRenderer::SkeletonRenderer (const char* skeletonDataFile, spAtlas* atlas, float scale) { - initialize(); - - spSkeletonJson* json = spSkeletonJson_create(atlas); - json->scale = scale; - spSkeletonData* skeletonData = spSkeletonJson_readSkeletonDataFile(json, skeletonDataFile); - CCASSERT(skeletonData, json->error ? json->error : "Error reading skeleton data."); - spSkeletonJson_dispose(json); - - setSkeletonData(skeletonData, true); -} - -SkeletonRenderer::SkeletonRenderer (const char* skeletonDataFile, const char* atlasFile, float scale) { - initialize(); - - atlas = spAtlas_createFromFile(atlasFile, 0); - CCASSERT(atlas, "Error reading atlas file."); - - spSkeletonJson* json = spSkeletonJson_create(atlas); - json->scale = scale; - spSkeletonData* skeletonData = spSkeletonJson_readSkeletonDataFile(json, skeletonDataFile); - CCASSERT(skeletonData, json->error ? json->error : "Error reading skeleton data file."); - spSkeletonJson_dispose(json); - - setSkeletonData(skeletonData, true); -} - -SkeletonRenderer::~SkeletonRenderer () { - if (ownsSkeletonData) spSkeletonData_dispose(skeleton->data); - if (atlas) spAtlas_dispose(atlas); - spSkeleton_dispose(skeleton); - batch->release(); - FREE(worldVertices); -} - -void SkeletonRenderer::update (float deltaTime) { - spSkeleton_update(skeleton, deltaTime * timeScale); -} - -void SkeletonRenderer::draw(Renderer* renderer, const kmMat4& transform, bool transformUpdated) { - drawCommand.init(_globalZOrder); - drawCommand.func = CC_CALLBACK_0(SkeletonRenderer::drawSkeleton, this, transform, transformUpdated); - renderer->addCommand(&drawCommand); -} - -void SkeletonRenderer::drawSkeleton (const kmMat4& transform, bool transformUpdated) { - getShaderProgram()->use(); - getShaderProgram()->setUniformsForBuiltins(transform); - GL::bindVAO(0); - - Color3B nodeColor = getColor(); - skeleton->r = nodeColor.r / (float)255; - skeleton->g = nodeColor.g / (float)255; - skeleton->b = nodeColor.b / (float)255; - skeleton->a = getDisplayedOpacity() / (float)255; - - int additive = -1; - Color4B color; - const float* uvs = nullptr; - int verticesCount = 0; - const int* triangles = nullptr; - int trianglesCount = 0; - float r = 0, g = 0, b = 0, a = 0; - for (int i = 0, n = skeleton->slotCount; i < n; i++) { - spSlot* slot = skeleton->drawOrder[i]; - if (!slot->attachment) continue; - Texture2D *texture = nullptr; - switch (slot->attachment->type) { - case SP_ATTACHMENT_REGION: { - spRegionAttachment* attachment = (spRegionAttachment*)slot->attachment; - spRegionAttachment_computeWorldVertices(attachment, slot->skeleton->x, slot->skeleton->y, slot->bone, worldVertices); - texture = getTexture(attachment); - uvs = attachment->uvs; - verticesCount = 8; - triangles = quadTriangles; - trianglesCount = 6; - r = attachment->r; - g = attachment->g; - b = attachment->b; - a = attachment->a; - break; - } - case SP_ATTACHMENT_MESH: { - spMeshAttachment* attachment = (spMeshAttachment*)slot->attachment; - spMeshAttachment_computeWorldVertices(attachment, slot->skeleton->x, slot->skeleton->y, slot, worldVertices); - texture = getTexture(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_SKINNED_MESH: { - spSkinnedMeshAttachment* attachment = (spSkinnedMeshAttachment*)slot->attachment; - spSkinnedMeshAttachment_computeWorldVertices(attachment, slot->skeleton->x, slot->skeleton->y, slot, worldVertices); - texture = getTexture(attachment); - uvs = attachment->uvs; - verticesCount = attachment->uvsCount; - triangles = attachment->triangles; - trianglesCount = attachment->trianglesCount; - r = attachment->r; - g = attachment->g; - b = attachment->b; - a = attachment->a; - break; - } - } - if (texture) { - if (slot->data->additiveBlending != additive) { - batch->flush(); - GL::blendFunc(blendFunc.src, slot->data->additiveBlending ? GL_ONE : blendFunc.dst); - additive = slot->data->additiveBlending; - } - color.a = skeleton->a * slot->a * a * 255; - float multiplier = premultipliedAlpha ? color.a : 255; - color.r = skeleton->r * slot->r * r * multiplier; - color.g = skeleton->g * slot->g * g * multiplier; - color.b = skeleton->b * slot->b * b * multiplier; - batch->add(texture, worldVertices, uvs, verticesCount, triangles, trianglesCount, &color); - } - } - batch->flush(); - - if (debugSlots || debugBones) { - kmGLPushMatrix(); - kmGLLoadMatrix(&transform); - if (debugSlots) { - // Slots. - DrawPrimitives::setDrawColor4B(0, 0, 255, 255); - glLineWidth(1); - Point points[4]; - V3F_C4B_T2F_Quad quad; - for (int i = 0, n = skeleton->slotCount; i < n; i++) { - spSlot* slot = skeleton->drawOrder[i]; - if (!slot->attachment || slot->attachment->type != SP_ATTACHMENT_REGION) continue; - spRegionAttachment* attachment = (spRegionAttachment*)slot->attachment; - spRegionAttachment_computeWorldVertices(attachment, slot->skeleton->x, slot->skeleton->y, slot->bone, worldVertices); - points[0] = Point(worldVertices[0], worldVertices[1]); - points[1] = Point(worldVertices[2], worldVertices[3]); - points[2] = Point(worldVertices[4], worldVertices[5]); - points[3] = Point(worldVertices[6], worldVertices[7]); - DrawPrimitives::drawPoly(points, 4, true); - } - } - if (debugBones) { - // Bone lengths. - glLineWidth(2); - DrawPrimitives::setDrawColor4B(255, 0, 0, 255); - for (int i = 0, n = skeleton->boneCount; i < n; i++) { - spBone *bone = skeleton->bones[i]; - float x = bone->data->length * bone->m00 + bone->worldX; - float y = bone->data->length * bone->m10 + bone->worldY; - DrawPrimitives::drawLine(Point(bone->worldX, bone->worldY), Point(x, y)); - } - // Bone origins. - DrawPrimitives::setPointSize(4); - DrawPrimitives::setDrawColor4B(0, 0, 255, 255); // Root bone is blue. - for (int i = 0, n = skeleton->boneCount; i < n; i++) { - spBone *bone = skeleton->bones[i]; - DrawPrimitives::drawPoint(Point(bone->worldX, bone->worldY)); - if (i == 0) DrawPrimitives::setDrawColor4B(0, 255, 0, 255); - } - } - kmGLPopMatrix(); - } -} - -Texture2D* SkeletonRenderer::getTexture (spRegionAttachment* attachment) const { - return (Texture2D*)((spAtlasRegion*)attachment->rendererObject)->page->rendererObject; -} - -Texture2D* SkeletonRenderer::getTexture (spMeshAttachment* attachment) const { - return (Texture2D*)((spAtlasRegion*)attachment->rendererObject)->page->rendererObject; -} - -Texture2D* SkeletonRenderer::getTexture (spSkinnedMeshAttachment* attachment) const { - return (Texture2D*)((spAtlasRegion*)attachment->rendererObject)->page->rendererObject; -} - -Rect SkeletonRenderer::getBoundingBox () const { - float minX = FLT_MAX, minY = FLT_MAX, maxX = FLT_MIN, maxY = FLT_MIN; - float scaleX = getScaleX(), scaleY = getScaleY(); - for (int i = 0; i < skeleton->slotCount; ++i) { - spSlot* slot = skeleton->slots[i]; - if (!slot->attachment) continue; - int verticesCount; - if (slot->attachment->type == SP_ATTACHMENT_REGION) { - spRegionAttachment* attachment = (spRegionAttachment*)slot->attachment; - spRegionAttachment_computeWorldVertices(attachment, slot->skeleton->x, slot->skeleton->y, slot->bone, worldVertices); - verticesCount = 8; - } else if (slot->attachment->type == SP_ATTACHMENT_MESH) { - spMeshAttachment* mesh = (spMeshAttachment*)slot->attachment; - spMeshAttachment_computeWorldVertices(mesh, slot->skeleton->x, slot->skeleton->y, slot, worldVertices); - verticesCount = mesh->verticesCount; - } else if (slot->attachment->type == SP_ATTACHMENT_SKINNED_MESH) { - spSkinnedMeshAttachment* mesh = (spSkinnedMeshAttachment*)slot->attachment; - spSkinnedMeshAttachment_computeWorldVertices(mesh, slot->skeleton->x, slot->skeleton->y, slot, worldVertices); - verticesCount = mesh->uvsCount; - } else - continue; - for (int ii = 0; ii < verticesCount; ii += 2) { - float x = worldVertices[ii] * scaleX, y = worldVertices[ii + 1] * scaleY; - minX = min(minX, x); - minY = min(minY, y); - maxX = max(maxX, x); - maxY = max(maxY, y); - } - } - Point position = getPosition(); - return Rect(position.x + minX, position.y + minY, maxX - minX, maxY - minY); -} - -// --- Convenience methods for Skeleton_* functions. - -void SkeletonRenderer::updateWorldTransform () { - spSkeleton_updateWorldTransform(skeleton); -} - -void SkeletonRenderer::setToSetupPose () { - spSkeleton_setToSetupPose(skeleton); -} -void SkeletonRenderer::setBonesToSetupPose () { - spSkeleton_setBonesToSetupPose(skeleton); -} -void SkeletonRenderer::setSlotsToSetupPose () { - spSkeleton_setSlotsToSetupPose(skeleton); -} - -spBone* SkeletonRenderer::findBone (const char* boneName) const { - return spSkeleton_findBone(skeleton, boneName); -} - -spSlot* SkeletonRenderer::findSlot (const char* slotName) const { - return spSkeleton_findSlot(skeleton, slotName); -} - -bool SkeletonRenderer::setSkin (const char* skinName) { - return spSkeleton_setSkinByName(skeleton, skinName) ? true : false; -} - -spAttachment* SkeletonRenderer::getAttachment (const char* slotName, const char* attachmentName) const { - return spSkeleton_getAttachmentForSlotName(skeleton, slotName, attachmentName); -} -bool SkeletonRenderer::setAttachment (const char* slotName, const char* attachmentName) { - return spSkeleton_setAttachment(skeleton, slotName, attachmentName) ? true : false; -} - -// --- CCBlendProtocol - -const BlendFunc& SkeletonRenderer::getBlendFunc () const { - return blendFunc; -} - -void SkeletonRenderer::setBlendFunc (const BlendFunc &blendFunc) { - this->blendFunc = blendFunc; -} - -void SkeletonRenderer::setOpacityModifyRGB (bool value) { - premultipliedAlpha = value; -} - -bool SkeletonRenderer::isOpacityModifyRGB () { - return premultipliedAlpha; -} - -} diff --git a/spine-cocos2dx/3.0/src/spine/SkeletonRenderer.h b/spine-cocos2dx/3.0/src/spine/SkeletonRenderer.h deleted file mode 100644 index e8a2fc655..000000000 --- a/spine-cocos2dx/3.0/src/spine/SkeletonRenderer.h +++ /dev/null @@ -1,113 +0,0 @@ -/****************************************************************************** - * Spine Runtimes Software License - * Version 2.1 - * - * Copyright (c) 2013, Esoteric Software - * All rights reserved. - * - * You are granted a perpetual, non-exclusive, non-sublicensable and - * non-transferable license to install, execute and perform the Spine Runtimes - * Software (the "Software") solely for internal use. Without the written - * permission of Esoteric Software (typically granted by licensing Spine), 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 SOFTARE 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_SKELETONRENDERER_H_ -#define SPINE_SKELETONRENDERER_H_ - -#include -#include "cocos2d.h" - -namespace spine { - -class PolygonBatch; - -/** Draws a skeleton. */ -class SkeletonRenderer: public cocos2d::Node, public cocos2d::BlendProtocol { -public: - spSkeleton* skeleton; - spBone* rootBone; - float timeScale; - bool debugSlots; - bool debugBones; - bool premultipliedAlpha; - - static SkeletonRenderer* createWithData (spSkeletonData* skeletonData, bool ownsSkeletonData = false); - static SkeletonRenderer* createWithFile (const char* skeletonDataFile, spAtlas* atlas, float scale = 0); - static SkeletonRenderer* createWithFile (const char* skeletonDataFile, const char* atlasFile, float scale = 0); - - SkeletonRenderer (spSkeletonData* skeletonData, bool ownsSkeletonData = false); - SkeletonRenderer (const char* skeletonDataFile, spAtlas* atlas, float scale = 0); - SkeletonRenderer (const char* skeletonDataFile, const char* atlasFile, float scale = 0); - - virtual ~SkeletonRenderer (); - - virtual void update (float deltaTime) override; - virtual void draw(cocos2d::Renderer* renderer, const kmMat4& transform, bool transformUpdated) override; - virtual void drawSkeleton (const kmMat4& transform, bool transformUpdated); - virtual cocos2d::Rect getBoundingBox () const override; - - // --- Convenience methods for common Skeleton_* functions. - void updateWorldTransform (); - - void setToSetupPose (); - void setBonesToSetupPose (); - void setSlotsToSetupPose (); - - /* Returns 0 if the bone was not found. */ - spBone* findBone (const char* boneName) const; - /* Returns 0 if the slot was not found. */ - spSlot* findSlot (const char* slotName) const; - - /* Sets the skin used to look up attachments not found in the SkeletonData defaultSkin. Attachments from the new skin are - * attached if the corresponding attachment from the old skin was attached. Returns false if the skin was not found. - * @param skin May be 0.*/ - bool setSkin (const char* skinName); - - /* Returns 0 if the slot or attachment was not found. */ - spAttachment* getAttachment (const char* slotName, const char* attachmentName) const; - /* Returns false if the slot or attachment was not found. */ - bool setAttachment (const char* slotName, const char* attachmentName); - - // --- BlendProtocol - virtual void setBlendFunc (const cocos2d::BlendFunc& blendFunc); - virtual const cocos2d::BlendFunc& getBlendFunc () const; - virtual void setOpacityModifyRGB (bool value); - virtual bool isOpacityModifyRGB (); - -protected: - SkeletonRenderer (); - void setSkeletonData (spSkeletonData* skeletonData, bool ownsSkeletonData); - virtual cocos2d::Texture2D* getTexture (spRegionAttachment* attachment) const; - virtual cocos2d::Texture2D* getTexture (spMeshAttachment* attachment) const; - virtual cocos2d::Texture2D* getTexture (spSkinnedMeshAttachment* attachment) const; - -private: - bool ownsSkeletonData; - spAtlas* atlas; - cocos2d::CustomCommand drawCommand; - cocos2d::BlendFunc blendFunc; - PolygonBatch* batch; - float* worldVertices; - void initialize (); -}; - -} - -#endif /* SPINE_SKELETONRENDERER_H_ */ diff --git a/spine-cocos2dx/3.1/README.md b/spine-cocos2dx/3.1/README.md deleted file mode 100644 index 5409fd81c..000000000 --- a/spine-cocos2dx/3.1/README.md +++ /dev/null @@ -1,21 +0,0 @@ -# spine-cocos2dx v3.1 - -The spine-cocos2dx runtime provides functionality to load, manipulate and render [Spine](http://esotericsoftware.com) skeletal animation data using [cocos2d-x](http://www.cocos2d-x.org/). spine-cocos2dx is based on [spine-c](https://github.com/EsotericSoftware/spine-runtimes/tree/master/spine-c). - -## Setup - -1. Download the Spine Runtimes source using [git](https://help.github.com/articles/set-up-git) or by downloading it [as a zip](https://github.com/EsotericSoftware/spine-runtimes/archive/master.zip). -1. Place the contents of a cocos2d-x version 3.1 distribution into the `spine-cocos2dx/3.1/cocos2dx` directory. -1. Run the `python download-deps.py` script in the `spine-cocos2dx/3.1/cocos2dx` directory. -1. Open the XCode (Mac) or Visual C++ 2012 Express (Windows) project file from the `spine-cocos2dx/3.1/example` directory. Build files are also provided for Android. - -Alternatively, the contents of the `spine-c/src`, `spine-c/include` and `spine-cocos2dx/3.1/src` directories can be copied into your project. Be sure your header search path will find the contents of the `spine-c/include` and `spine-cocos2dx/3.1/src` directories. Note that the includes use `spine/Xxx.h`, so the `spine` directory cannot be omitted when copying the files. - -## Notes - -- Images are no longer premultiplied by cocos2d-x as they where in cocos2d-x v2, so the Spine atlas images *should* use premultiplied alpha. - -## Examples - -[Spineboy](https://github.com/EsotericSoftware/spine-runtimes/blob/master/spine-cocos2dx/3.1/example/Classes/SpineboyExample.cpp) -[Golbins](https://github.com/EsotericSoftware/spine-runtimes/blob/master/spine-cocos2dx/3.1/example/Classes/GoblinsExample.cpp) diff --git a/spine-cocos2dx/3.1/example/Classes/AppDelegate.cpp b/spine-cocos2dx/3.1/example/Classes/AppDelegate.cpp deleted file mode 100644 index ed90b2b75..000000000 --- a/spine-cocos2dx/3.1/example/Classes/AppDelegate.cpp +++ /dev/null @@ -1,87 +0,0 @@ -#include "AppDelegate.h" - -#include -#include - -#include "SpineboyExample.h" -#include "AppMacros.h" - -USING_NS_CC; -using namespace std; - -AppDelegate::AppDelegate () { -} - -AppDelegate::~AppDelegate () { -} - -bool AppDelegate::applicationDidFinishLaunching () { - // initialize director - auto director = Director::getInstance(); - auto glview = director->getOpenGLView(); - - // Set the design resolution -#if (CC_TARGET_PLATFORM == CC_PLATFORM_WP8) - // a bug in DirectX 11 level9-x on the device prevents ResolutionPolicy::NO_BORDER from working correctly - glview->setDesignResolutionSize(designResolutionSize.width, designResolutionSize.height, ResolutionPolicy::SHOW_ALL); -#else - glview->setDesignResolutionSize(designResolutionSize.width, designResolutionSize.height, ResolutionPolicy::NO_BORDER); -#endif - - Size frameSize = glview->getFrameSize(); - - vector searchPath; - - // In this demo, we select resource according to the frame's height. - // If the resource size is different from design resolution size, you need to set contentScaleFactor. - // We use the ratio of resource's height to the height of design resolution, - // this can make sure that the resource's height could fit for the height of design resolution. - if (frameSize.height > mediumResource.size.height) { - // if the frame's height is larger than the height of medium resource size, select large resource. - searchPath.push_back(largeResource.directory); - director->setContentScaleFactor(MIN(largeResource.size.height/designResolutionSize.height, largeResource.size.width/designResolutionSize.width)); - } else if (frameSize.height > smallResource.size.height) { - // if the frame's height is larger than the height of small resource size, select medium resource. - searchPath.push_back(mediumResource.directory); - director->setContentScaleFactor(MIN(mediumResource.size.height/designResolutionSize.height, mediumResource.size.width/designResolutionSize.width)); - } else { - // if the frame's height is smaller than the height of medium resource size, select small resource. - searchPath.push_back(smallResource.directory); - director->setContentScaleFactor(MIN(smallResource.size.height/designResolutionSize.height, smallResource.size.width/designResolutionSize.width)); - } - - searchPath.push_back("common"); - - // set searching path - FileUtils::getInstance()->setSearchPaths(searchPath); - - // turn on display FPS - director->setDisplayStats(true); - - // set FPS. the default value is 1.0/60 if you don't call this - director->setAnimationInterval(1.0 / 60); - - // create a scene. it's an autorelease object - auto scene = SpineboyExample::scene(); - - // run - director->runWithScene(scene); - - return true; -} - -// This function will be called when the app is inactive. When comes a phone call,it's be invoked too -void AppDelegate::applicationDidEnterBackground () { - Director::getInstance()->stopAnimation(); - - // if you use SimpleAudioEngine, it must be paused - // SimpleAudioEngine::sharedEngine()->pauseBackgroundMusic(); -} - -// this function will be called when the app is active again -void AppDelegate::applicationWillEnterForeground () { - Director::getInstance()->startAnimation(); - - // if you use SimpleAudioEngine, it must resume here - // SimpleAudioEngine::sharedEngine()->resumeBackgroundMusic(); -} diff --git a/spine-cocos2dx/3.1/example/Classes/AppDelegate.h b/spine-cocos2dx/3.1/example/Classes/AppDelegate.h deleted file mode 100644 index 318fc27f4..000000000 --- a/spine-cocos2dx/3.1/example/Classes/AppDelegate.h +++ /dev/null @@ -1,18 +0,0 @@ - - -#ifndef _APPDELEGATE_H_ -#define _APPDELEGATE_H_ - -#include "cocos2d.h" - -class AppDelegate: private cocos2d::CCApplication { -public: - AppDelegate (); - virtual ~AppDelegate (); - - virtual bool applicationDidFinishLaunching (); - virtual void applicationDidEnterBackground (); - virtual void applicationWillEnterForeground (); -}; - -#endif // _APPDELEGATE_H_ \ No newline at end of file diff --git a/spine-cocos2dx/3.1/example/Classes/AppMacros.h b/spine-cocos2dx/3.1/example/Classes/AppMacros.h deleted file mode 100644 index 3f3a06e0e..000000000 --- a/spine-cocos2dx/3.1/example/Classes/AppMacros.h +++ /dev/null @@ -1,61 +0,0 @@ - - -#ifndef _APPMACROS_H_ -#define _APPMACROS_H_ - -#include "cocos2d.h" - -/* For demonstrating using one design resolution to match different resources, - or one resource to match different design resolutions. - - [Situation 1] Using one design resolution to match different resources. - Please look into Appdelegate::applicationDidFinishLaunching. - We check current device frame size to decide which resource need to be selected. - So if you want to test this situation which said in title '[Situation 1]', - you should change ios simulator to different device(e.g. iphone, iphone-retina3.5, iphone-retina4.0, ipad, ipad-retina), - or change the window size in "proj.XXX/main.cpp" by "CCEGLView::setFrameSize" if you are using win32 or linux plaform - and modify "proj.mac/AppController.mm" by changing the window rectangle. - - [Situation 2] Using one resource to match different design resolutions. - The coordinates in your codes is based on your current design resolution rather than resource size. - Therefore, your design resolution could be very large and your resource size could be small. - To test this, just define the marco 'TARGET_DESIGN_RESOLUTION_SIZE' to 'DESIGN_RESOLUTION_2048X1536' - and open iphone simulator or create a window of 480x320 size. - - [Note] Normally, developer just need to define one design resolution(e.g. 960x640) with one or more resources. - */ - -#define DESIGN_RESOLUTION_480X320 0 -#define DESIGN_RESOLUTION_960x640 1 -#define DESIGN_RESOLUTION_1024X768 2 -#define DESIGN_RESOLUTION_2048X1536 3 - -/* If you want to switch design resolution, change next line */ -#define TARGET_DESIGN_RESOLUTION_SIZE DESIGN_RESOLUTION_960x640 - -typedef struct tagResource { - cocos2d::Size size; - char directory[100]; -} Resource; - -static Resource smallResource = {cocos2d::Size(480, 320), "iphone"}; -static Resource mediumResource = {cocos2d::Size(960, 640), "iphone-retina"}; -static Resource largeResource = {cocos2d::Size(1024, 768), "ipad"}; -static Resource extralargeResource = {cocos2d::Size(2048, 1536), "ipad-retina"}; - -#if (TARGET_DESIGN_RESOLUTION_SIZE == DESIGN_RESOLUTION_480X320) -static cocos2d::CCSize designResolutionSize = cocos2d::Size(480, 320); -#elif (TARGET_DESIGN_RESOLUTION_SIZE == DESIGN_RESOLUTION_960x640) -static cocos2d::CCSize designResolutionSize = cocos2d::Size(960, 640); -#elif (TARGET_DESIGN_RESOLUTION_SIZE == DESIGN_RESOLUTION_1024X768) -static cocos2d::CCSize designResolutionSize = cocos2d::Size(1024, 768); -#elif (TARGET_DESIGN_RESOLUTION_SIZE == DESIGN_RESOLUTION_2048X1536) -static cocos2d::CCSize designResolutionSize = cocos2d::Size(2048, 1536); -#else -#error unknown target design resolution! -#endif - -// The font size 24 is designed for small resolution, so we should change it to fit for current design resolution -#define TITLE_FONT_SIZE (cocos2d::Director::getInstance()->getOpenGLView()->getDesignResolutionSize().width / smallResource.size.width * 24) - -#endif /* _APPMACROS_H_ */ \ No newline at end of file diff --git a/spine-cocos2dx/3.1/example/Classes/SpineboyExample.cpp b/spine-cocos2dx/3.1/example/Classes/SpineboyExample.cpp deleted file mode 100644 index 10a11fc97..000000000 --- a/spine-cocos2dx/3.1/example/Classes/SpineboyExample.cpp +++ /dev/null @@ -1,105 +0,0 @@ -/****************************************************************************** - * Spine Runtimes Software License - * Version 2.1 - * - * Copyright (c) 2013, Esoteric Software - * All rights reserved. - * - * You are granted a perpetual, non-exclusive, non-sublicensable and - * non-transferable license to install, execute and perform the Spine Runtimes - * Software (the "Software") solely for internal use. Without the written - * permission of Esoteric Software (typically granted by licensing Spine), 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 SOFTARE 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 "SpineboyExample.h" -#include "GoblinsExample.h" -#include -#include -#include - -USING_NS_CC; -using namespace spine; -using namespace std; - -Scene* SpineboyExample::scene () { - Scene *scene = Scene::create(); - scene->addChild(SpineboyExample::create()); - return scene; -} - -bool SpineboyExample::init () { - if (!LayerColor::initWithColor(Color4B(128, 128, 128, 255))) return false; - - skeletonNode = SkeletonAnimation::createWithFile("spineboy.json", "spineboy.atlas", 0.6f); - - skeletonNode->startListener = [this] (int trackIndex) { - spTrackEntry* entry = spAnimationState_getCurrent(skeletonNode->state, trackIndex); - const char* animationName = (entry && entry->animation) ? entry->animation->name : 0; - log("%d start: %s", trackIndex, animationName); - }; - skeletonNode->endListener = [] (int trackIndex) { - log("%d end", trackIndex); - }; - skeletonNode->completeListener = [] (int trackIndex, int loopCount) { - log("%d complete: %d", trackIndex, loopCount); - }; - skeletonNode->eventListener = [] (int trackIndex, spEvent* event) { - log("%d event: %s, %d, %f, %s", trackIndex, event->data->name, event->intValue, event->floatValue, event->stringValue); - }; - - skeletonNode->setMix("walk", "jump", 0.2f); - skeletonNode->setMix("jump", "run", 0.2f); - skeletonNode->setAnimation(0, "walk", true); - spTrackEntry* jumpEntry = skeletonNode->addAnimation(0, "jump", false, 3); - skeletonNode->addAnimation(0, "run", true); - - skeletonNode->setStartListener(jumpEntry, [] (int trackIndex) { - log("jumped!"); - }); - - // skeletonNode->addAnimation(1, "test", true); - // skeletonNode->runAction(RepeatForever::create(Sequence::create(FadeOut::create(1), FadeIn::create(1), DelayTime::create(5), NULL))); - - Size windowSize = Director::getInstance()->getWinSize(); - skeletonNode->setPosition(Vec2(windowSize.width / 2, 20)); - addChild(skeletonNode); - - scheduleUpdate(); - - EventListenerTouchOneByOne* listener = EventListenerTouchOneByOne::create(); - listener->onTouchBegan = [this] (Touch* touch, Event* event) -> bool { - if (!skeletonNode->debugBones) - skeletonNode->debugBones = true; - else if (skeletonNode->timeScale == 1) - skeletonNode->timeScale = 0.3f; - else - Director::getInstance()->replaceScene(GoblinsExample::scene()); - return true; - }; - _eventDispatcher->addEventListenerWithSceneGraphPriority(listener, this); - - return true; -} - -void SpineboyExample::update (float deltaTime) { - // Test releasing memory. - // Director::getInstance()->replaceScene(SpineboyExample::scene()); -} - diff --git a/spine-cocos2dx/3.1/example/Classes/SpineboyExample.h b/spine-cocos2dx/3.1/example/Classes/SpineboyExample.h deleted file mode 100644 index 641834609..000000000 --- a/spine-cocos2dx/3.1/example/Classes/SpineboyExample.h +++ /dev/null @@ -1,49 +0,0 @@ -/****************************************************************************** - * Spine Runtimes Software License - * Version 2.1 - * - * Copyright (c) 2013, Esoteric Software - * All rights reserved. - * - * You are granted a perpetual, non-exclusive, non-sublicensable and - * non-transferable license to install, execute and perform the Spine Runtimes - * Software (the "Software") solely for internal use. Without the written - * permission of Esoteric Software (typically granted by licensing Spine), 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 SOFTARE 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 _SPINEBOYEXAMPLE_H_ -#define _SPINEBOYEXAMPLE_H_ - -#include "cocos2d.h" -#include - -class SpineboyExample : public cocos2d::LayerColor { -public: - static cocos2d::Scene* scene (); - - virtual bool init (); - virtual void update (float deltaTime); - - CREATE_FUNC (SpineboyExample); -private: - spine::SkeletonAnimation* skeletonNode; -}; - -#endif // _SPINEBOYEXAMPLE_H_ diff --git a/spine-cocos2dx/3.1/example/Resources/common/goblins-ffd.json b/spine-cocos2dx/3.1/example/Resources/common/goblins-ffd.json deleted file mode 100644 index b35360ad1..000000000 --- a/spine-cocos2dx/3.1/example/Resources/common/goblins-ffd.json +++ /dev/null @@ -1,1081 +0,0 @@ -{ -"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": "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 } -], -"slots": [ - { "name": "left shoulder", "bone": "left shoulder", "attachment": "left shoulder" }, - { "name": "left arm", "bone": "left arm", "attachment": "left arm" }, - { "name": "left hand item", "bone": "left hand", "attachment": "spear" }, - { "name": "left hand", "bone": "left hand", "attachment": "left hand" }, - { "name": "left foot", "bone": "left foot", "attachment": "left foot" }, - { "name": "left lower leg", "bone": "left lower leg", "attachment": "left lower leg" }, - { "name": "left upper leg", "bone": "left upper leg", "attachment": "left upper leg" }, - { "name": "neck", "bone": "neck", "attachment": "neck" }, - { "name": "torso", "bone": "torso", "attachment": "torso" }, - { "name": "pelvis", "bone": "pelvis", "attachment": "pelvis" }, - { "name": "right foot", "bone": "right foot", "attachment": "right foot" }, - { "name": "right lower leg", "bone": "right lower leg", "attachment": "right lower leg" }, - { "name": "undie straps", "bone": "pelvis", "attachment": "undie straps" }, - { "name": "undies", "bone": "pelvis", "attachment": "undies" }, - { "name": "right upper leg", "bone": "right upper leg", "attachment": "right upper leg" }, - { "name": "head", "bone": "head", "attachment": "head" }, - { "name": "eyes", "bone": "head" }, - { "name": "right shoulder", "bone": "right shoulder", "attachment": "right shoulder" }, - { "name": "right arm", "bone": "right arm", "attachment": "right arm" }, - { "name": "right hand thumb", "bone": "right hand", "attachment": "right hand thumb" }, - { "name": "right hand item", "bone": "right hand", "attachment": "dagger" }, - { "name": "right hand", "bone": "right hand", "attachment": "right hand" }, - { "name": "right hand item 2", "bone": "right hand", "attachment": "shield" } -], -"skins": { - "default": { - "left hand item": { - "dagger": { "x": 7.88, "y": -23.45, "rotation": 10.47, "width": 26, "height": 108 }, - "spear": { - "type": "skinnedmesh", - "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 ], - "hull": 14, - "width": 22, - "height": 368 - } - }, - "right hand item": { - "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": [ 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, - "width": 26, - "height": 108 - } - }, - "right hand item 2": { - "shield": { "rotation": 93.49, "width": 70, "height": 72 } - } - }, - "goblin": { - "eyes": { - "eyes closed": { "name": "goblin/eyes-closed", "x": 29.19, "y": -24.89, "rotation": -88.92, "width": 34, "height": 12 } - }, - "head": { - "head": { - "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 ], - "hull": 24, - "width": 103, - "height": 66 - } - }, - "left arm": { - "left arm": { - "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 ], - "hull": 9, - "width": 37, - "height": 35 - } - }, - "left foot": { - "left foot": { - "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": [ 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, - "width": 65, - "height": 31 - } - }, - "left hand": { - "left hand": { - "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, 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 ], - "hull": 9, - "width": 36, - "height": 41 - } - }, - "left lower leg": { - "left lower leg": { - "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": [ 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 ], - "hull": 11, - "width": 33, - "height": 70 - } - }, - "left shoulder": { - "left shoulder": { - "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 ], - "hull": 8, - "width": 29, - "height": 44 - } - }, - "left upper leg": { - "left upper leg": { - "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": [ 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, - "width": 33, - "height": 73 - } - }, - "neck": { - "neck": { - "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 ], - "hull": 10, - "width": 36, - "height": 41 - } - }, - "pelvis": { - "pelvis": { - "name": "goblin/pelvis", - "type": "mesh", - "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, - "width": 62, - "height": 43 - } - }, - "right arm": { - "right arm": { - "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 ], - "hull": 8, - "width": 23, - "height": 50 - } - }, - "right foot": { - "right foot": { - "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": [ 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, - "width": 63, - "height": 33 - } - }, - "right hand": { - "right hand": { - "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": [ 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 ], - "hull": 11, - "width": 36, - "height": 37 - } - }, - "right hand thumb": { - "right hand thumb": { - "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": [ 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, - "width": 36, - "height": 37 - } - }, - "right lower leg": { - "right lower leg": { - "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": [ 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 ], - "hull": 11, - "width": 36, - "height": 76 - } - }, - "right shoulder": { - "right shoulder": { - "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 ], - "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, - "width": 39, - "height": 45 - } - }, - "right upper leg": { - "right upper leg": { - "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": [ 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 ], - "hull": 10, - "width": 34, - "height": 63 - } - }, - "torso": { - "torso": { - "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 ], - "hull": 16, - "width": 68, - "height": 96 - } - }, - "undie straps": { - "undie straps": { - "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": [ 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 ], - "hull": 9, - "width": 55, - "height": 19 - } - }, - "undies": { - "undies": { - "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": [ 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 ], - "hull": 10, - "width": 36, - "height": 29 - } - } - }, - "goblingirl": { - "eyes": { - "eyes closed": { "name": "goblingirl/eyes-closed", "x": 28, "y": -25.54, "rotation": -87.04, "width": 37, "height": 21 } - }, - "head": { - "head": { "name": "goblingirl/head", "x": 27.71, "y": -4.32, "rotation": -85.58, "width": 103, "height": 81 } - }, - "left arm": { - "left arm": { "name": "goblingirl/left-arm", "x": 19.64, "y": -2.42, "rotation": 33.05, "width": 37, "height": 35 } - }, - "left foot": { - "left foot": { "name": "goblingirl/left-foot", "x": 25.17, "y": 7.92, "rotation": 3.32, "width": 65, "height": 31 } - }, - "left hand": { - "left hand": { - "name": "goblingirl/left-hand", - "x": 4.34, - "y": 2.39, - "scaleX": 0.896, - "scaleY": 0.896, - "rotation": 30.34, - "width": 35, - "height": 40 - } - }, - "left lower leg": { - "left lower leg": { "name": "goblingirl/left-lower-leg", "x": 25.02, "y": -0.6, "rotation": 105.75, "width": 33, "height": 70 } - }, - "left shoulder": { - "left shoulder": { "name": "goblingirl/left-shoulder", "x": 19.8, "y": -0.42, "rotation": 61.21, "width": 28, "height": 46 } - }, - "left upper leg": { - "left upper leg": { "name": "goblingirl/left-upper-leg", "x": 30.21, "y": -2.95, "rotation": 89.09, "width": 33, "height": 70 } - }, - "neck": { - "neck": { "name": "goblingirl/neck", "x": 6.16, "y": -3.14, "rotation": -98.86, "width": 35, "height": 41 } - }, - "pelvis": { - "pelvis": { "name": "goblingirl/pelvis", "x": -3.87, "y": 3.18, "width": 62, "height": 43 } - }, - "right arm": { - "right arm": { "name": "goblingirl/right-arm", "x": 16.85, "y": -0.66, "rotation": 93.52, "width": 28, "height": 50 } - }, - "right foot": { - "right foot": { "name": "goblingirl/right-foot", "x": 23.46, "y": 9.66, "rotation": 1.52, "width": 63, "height": 33 } - }, - "right hand": { - "right hand": { "name": "goblingirl/right-hand", "x": 7.21, "y": 3.43, "rotation": 91.16, "width": 36, "height": 37 } - }, - "right hand thumb": { - "right hand thumb": { "name": "goblingirl/right-hand", "x": 7.21, "y": 3.43, "rotation": 91.16, "width": 36, "height": 37 } - }, - "right lower leg": { - "right lower leg": { "name": "goblingirl/right-lower-leg", "x": 26.15, "y": -3.27, "rotation": 111.83, "width": 36, "height": 76 } - }, - "right shoulder": { - "right shoulder": { "name": "goblingirl/right-shoulder", "x": 14.46, "y": 0.45, "rotation": 129.85, "width": 39, "height": 45 } - }, - "right upper leg": { - "right upper leg": { "name": "goblingirl/right-upper-leg", "x": 19.69, "y": 2.13, "rotation": 97.49, "width": 34, "height": 63 } - }, - "torso": { - "torso": { "name": "goblingirl/torso", "x": 36.28, "y": -5.14, "rotation": -95.74, "width": 68, "height": 96 } - }, - "undie straps": { - "undie straps": { "name": "goblingirl/undie-straps", "x": -1.51, "y": 14.18, "width": 55, "height": 19 } - }, - "undies": { - "undies": { "name": "goblingirl/undies", "x": 5.4, "y": 1.7, "width": 36, "height": 29 } - } - } -}, -"animations": { - "walk": { - "slots": { - "eyes": { - "attachment": [ - { "time": 0.7, "name": "eyes closed" }, - { "time": 0.8, "name": null } - ] - } - }, - "bones": { - "left upper leg": { - "rotate": [ - { "time": 0, "angle": -26.55 }, - { "time": 0.1333, "angle": -8.78 }, - { "time": 0.2333, "angle": 9.51 }, - { "time": 0.3666, "angle": 30.74 }, - { "time": 0.5, "angle": 25.33 }, - { "time": 0.6333, "angle": 26.11 }, - { "time": 0.7333, "angle": 7.45 }, - { "time": 0.8666, "angle": -21.19 }, - { "time": 1, "angle": -26.55 } - ], - "translate": [ - { "time": 0, "x": -1.32, "y": 1.7 }, - { "time": 0.3666, "x": -0.06, "y": 2.42 }, - { "time": 1, "x": -1.32, "y": 1.7 } - ] - }, - "right upper leg": { - "rotate": [ - { "time": 0, "angle": 42.45 }, - { - "time": 0.1333, - "angle": 49.86, - "curve": [ 0.414, 0, 0.705, 0.99 ] - }, - { "time": 0.2333, "angle": 22.51 }, - { "time": 0.5, "angle": -16.93 }, - { "time": 0.6333, "angle": 1.89 }, - { - "time": 0.7333, - "angle": 34.86, - "curve": [ 0.462, 0.11, 1, 1 ] - }, - { - "time": 0.8666, - "angle": 58.68, - "curve": [ 0.5, 0.02, 1, 1 ] - }, - { "time": 1, "angle": 42.45 } - ], - "translate": [ - { "time": 0, "x": 6.23, "y": 0 }, - { "time": 0.2333, "x": 2.14, "y": 2.4 }, - { "time": 0.5, "x": 2.44, "y": 4.8 }, - { "time": 1, "x": 6.23, "y": 0 } - ] - }, - "left lower leg": { - "rotate": [ - { "time": 0, "angle": -18.05 }, - { "time": 0.1333, "angle": -63.5 }, - { "time": 0.2333, "angle": -83.01 }, - { "time": 0.5, "angle": 5.11 }, - { "time": 0.6333, "angle": -28.29 }, - { "time": 0.7333, "angle": -27.52 }, - { "time": 0.8666, "angle": 3.53 }, - { "time": 1, "angle": -18.05 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 }, - { "time": 0.2333, "x": 2.55, "y": -0.47 }, - { "time": 0.5, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 1, "x": 0, "y": 0 } - ] - }, - "left foot": { - "rotate": [ - { "time": 0, "angle": -14.56 }, - { "time": 0.1333, "angle": -10.42 }, - { "time": 0.2333, "angle": -5.01 }, - { "time": 0.3, "angle": 6.67 }, - { "time": 0.3666, "angle": 3.87 }, - { "time": 0.5, "angle": -3.87 }, - { "time": 0.6333, "angle": 2.78 }, - { "time": 0.7333, "angle": -11.99 }, - { "time": 0.8666, "angle": -12.45 }, - { "time": 1, "angle": -14.56 } - ] - }, - "right shoulder": { - "rotate": [ - { - "time": 0, - "angle": 5.29, - "curve": [ 0.264, 0, 0.75, 1 ] - }, - { "time": 0.6333, "angle": 6.65 }, - { "time": 1, "angle": 5.29 } - ] - }, - "right arm": { - "rotate": [ - { - "time": 0, - "angle": -4.02, - "curve": [ 0.267, 0, 0.804, 0.99 ] - }, - { - "time": 0.6333, - "angle": 19.78, - "curve": [ 0.307, 0, 0.787, 0.99 ] - }, - { "time": 1, "angle": -4.02 } - ] - }, - "right hand": { - "rotate": [ - { "time": 0, "angle": 8.98 }, - { "time": 0.6333, "angle": 0.51 }, - { "time": 1, "angle": 8.98 } - ] - }, - "left shoulder": { - "rotate": [ - { - "time": 0, - "angle": 6.25, - "curve": [ 0.339, 0, 0.683, 1 ] - }, - { - "time": 0.5, - "angle": -11.78, - "curve": [ 0.281, 0, 0.686, 0.99 ] - }, - { "time": 1, "angle": 6.25 } - ], - "translate": [ - { "time": 0, "x": 1.15, "y": 0.23 } - ] - }, - "left hand": { - "rotate": [ - { - "time": 0, - "angle": -21.23, - "curve": [ 0.295, 0, 0.755, 0.98 ] - }, - { - "time": 0.5, - "angle": -27.28, - "curve": [ 0.241, 0, 0.75, 0.97 ] - }, - { "time": 1, "angle": -21.23 } - ] - }, - "left arm": { - "rotate": [ - { - "time": 0, - "angle": 28.37, - "curve": [ 0.339, 0, 0.683, 1 ] - }, - { - "time": 0.5, - "angle": 60.09, - "curve": [ 0.281, 0, 0.686, 0.99 ] - }, - { "time": 1, "angle": 28.37 } - ] - }, - "torso": { - "rotate": [ - { "time": 0, "angle": -10.28 }, - { - "time": 0.1333, - "angle": -15.38, - "curve": [ 0.545, 0, 0.818, 1 ] - }, - { - "time": 0.3666, - "angle": -9.78, - "curve": [ 0.58, 0.17, 0.669, 0.99 ] - }, - { - "time": 0.6333, - "angle": -15.75, - "curve": [ 0.235, 0.01, 0.795, 1 ] - }, - { - "time": 0.8666, - "angle": -7.06, - "curve": [ 0.209, 0, 0.816, 0.98 ] - }, - { "time": 1, "angle": -10.28 } - ], - "translate": [ - { "time": 0, "x": -3.72, "y": -0.01 } - ] - }, - "right foot": { - "rotate": [ - { "time": 0, "angle": -5.25 }, - { "time": 0.2333, "angle": -17.76 }, - { "time": 0.3666, "angle": -20.09 }, - { "time": 0.5, "angle": -19.73 }, - { "time": 0.7333, "angle": -11.68 }, - { "time": 0.8, "angle": 4.46 }, - { "time": 0.8666, "angle": 0.46 }, - { "time": 1, "angle": -5.25 } - ] - }, - "right lower leg": { - "rotate": [ - { - "time": 0, - "angle": -3.39, - "curve": [ 0.316, 0.01, 0.741, 0.98 ] - }, - { - "time": 0.1333, - "angle": -43.21, - "curve": [ 0.414, 0, 0.705, 0.99 ] - }, - { "time": 0.2333, "angle": -25.98 }, - { "time": 0.5, "angle": -19.53 }, - { "time": 0.6333, "angle": -64.8 }, - { - "time": 0.7333, - "angle": -89.54, - "curve": [ 0.557, 0.18, 1, 1 ] - }, - { "time": 1, "angle": -3.39 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.5, "x": 0, "y": 0 }, - { "time": 0.6333, "x": 2.18, "y": 0.21 }, - { "time": 1, "x": 0, "y": 0 } - ] - }, - "hip": { - "rotate": [ - { "time": 0, "angle": 0, "curve": "stepped" }, - { "time": 1, "angle": 0 } - ], - "translate": [ - { "time": 0, "x": 0, "y": -8.4 }, - { - "time": 0.1333, - "x": 0, - "y": -9.35, - "curve": [ 0.326, 0.05, 0.674, 0.93 ] - }, - { - "time": 0.2333, - "x": 0, - "y": -0.59, - "curve": [ 0.325, 0.39, 0.643, 0.7 ] - }, - { "time": 0.3666, "x": 0, "y": -3.96 }, - { "time": 0.5, "x": 0, "y": -8.4 }, - { - "time": 0.6333, - "x": 0, - "y": -10, - "curve": [ 0.359, 0.47, 0.646, 0.74 ] - }, - { - "time": 0.7333, - "x": 0, - "y": -5.29, - "curve": [ 0.333, 0.36, 0.662, 0.69 ] - }, - { - "time": 0.8, - "x": 0, - "y": -2.49, - "curve": [ 0.322, 0.35, 0.651, 0.68 ] - }, - { "time": 0.8666, "x": 0, "y": -3.96 }, - { "time": 1, "x": 0, "y": -8.4 } - ] - }, - "neck": { - "rotate": [ - { "time": 0, "angle": 3.6 }, - { "time": 0.1333, "angle": 17.49 }, - { "time": 0.2333, "angle": 6.1 }, - { "time": 0.3666, "angle": 3.45 }, - { "time": 0.5, "angle": 5.17 }, - { "time": 0.6333, "angle": 18.36 }, - { "time": 0.7333, "angle": 6.09 }, - { "time": 0.8666, "angle": 2.28 }, - { "time": 1, "angle": 3.6 } - ] - }, - "head": { - "rotate": [ - { - "time": 0, - "angle": 3.6, - "curve": [ 0, 0, 0.704, 1.17 ] - }, - { "time": 0.1333, "angle": -0.2 }, - { "time": 0.2333, "angle": 6.1 }, - { "time": 0.3666, "angle": 3.45 }, - { - "time": 0.5, - "angle": 5.17, - "curve": [ 0, 0, 0.704, 1.61 ] - }, - { "time": 0.6666, "angle": 1.1 }, - { "time": 0.7333, "angle": 6.09 }, - { "time": 0.8666, "angle": 2.28 }, - { "time": 1, "angle": 3.6 } - ] - }, - "pelvis": { - "rotate": [ - { "time": 0, "angle": -1.33 } - ], - "translate": [ - { "time": 0, "x": 0.39, "y": -0.78 } - ] - }, - "spear1": { - "rotate": [ - { "time": 0, "angle": 1.84 }, - { "time": 0.2, "angle": -5.38 }, - { "time": 0.5, "angle": 2.95 }, - { "time": 0.7333, "angle": -3.67 }, - { "time": 1, "angle": 1.84 } - ] - }, - "spear2": { - "rotate": [ - { "time": 0, "angle": 1.84 }, - { "time": 0.2, "angle": -5.38 }, - { "time": 0.5, "angle": 2.95 }, - { "time": 0.7333, "angle": -3.67 }, - { "time": 1, "angle": 1.84 } - ] - }, - "spear3": { - "rotate": [ - { "time": 0, "angle": 3.64 }, - { "time": 0.2, "angle": -3.59 }, - { "time": 0.5, "angle": 4.74 }, - { "time": 0.7333, "angle": -1.87 }, - { "time": 1, "angle": 3.64 } - ] - } - }, - "ffd": { - "default": { - "left hand item": { - "spear": [ - { "time": 0 } - ] - }, - "right hand item": { - "dagger": [ - { - "time": 0, - "offset": 26, - "vertices": [ 2.34, 0.14 ], - "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 ], - "curve": [ 0.25, 0, 0.75, 1 ] - }, - { - "time": 1, - "offset": 26, - "vertices": [ 2.34, 0.14 ] - } - ] - } - }, - "goblin": { - "head": { - "head": [ - { - "time": 0, - "curve": [ 0.632, 0, 0.75, 1 ] - }, - { - "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 ], - "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 ], - "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 ], - "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 ], - "curve": [ 0.25, 0, 0.75, 1 ] - }, - { "time": 1 } - ] - }, - "left foot": { - "left foot": [ - { - "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 ] - }, - { "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 ] - }, - { - "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 ] - }, - { "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 ] - }, - { - "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 ] - }, - { - "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 ] - } - ] - }, - "pelvis": { - "pelvis": [ - { "time": 0 }, - { - "time": 0.1333, - "offset": 6, - "vertices": [ -0.68, -4.13 ] - }, - { - "time": 0.3333, - "offset": 6, - "vertices": [ -1.04, -3.1 ] - }, - { - "time": 0.7, - "offset": 6, - "vertices": [ -1.42, -6.3 ] - }, - { - "time": 0.8666, - "offset": 6, - "vertices": [ -1.13, -1.79 ] - }, - { "time": 1 } - ] - }, - "right foot": { - "right foot": [ - { "time": 0 }, - { - "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 ] - }, - { - "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 ] - }, - { - "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 ] - }, - { - "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 ] - }, - { - "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 ] - }, - { "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 ] - }, - { - "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 ] - }, - { "time": 0.8666 } - ] - }, - "right hand": { - "right hand": [ - { - "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 ] - }, - { "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 ] - } - ] - }, - "right lower leg": { - "right lower leg": [ - { "time": 0 }, - { - "time": 0.6, - "offset": 6, - "vertices": [ 1.8, -1.56 ] - }, - { "time": 1 } - ] - }, - "right upper leg": { - "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 ] - }, - { "time": 0.3333 }, - { - "time": 0.8666, - "offset": 14, - "vertices": [ 0.13, -2.35, -1.33, -5.99, -1.35, -4.43 ] - }, - { - "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 ] - } - ] - }, - "torso": { - "torso": [ - { - "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 ] - }, - { - "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 ] - }, - { - "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 ] - }, - { - "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 ] - }, - { - "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 ] - }, - { - "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 ] - }, - { - "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 ] - } - ] - }, - "undie straps": { - "undie straps": [ - { - "time": 0, - "offset": 2, - "vertices": [ -1.77, 0.54, -0.96, -1.03, -0.39, -0.24, -1.77, 0.54 ] - }, - { - "time": 0.1333, - "offset": 2, - "vertices": [ -2.25, -1.03, -1.49, -4.23, -0.74, -2.84, -1.9, 0.54 ] - }, - { - "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 ] - }, - { - "time": 0.7, - "offset": 2, - "vertices": [ -0.91, -2.76, -0.62, -3.63, -0.84, -2.26, -2.56, 0.52 ] - }, - { - "time": 0.8666, - "offset": 2, - "vertices": [ -2.56, 0.52, -1.58, 0.32, -1.38, 0.32, -2.56, 0.52 ] - }, - { - "time": 1, - "offset": 2, - "vertices": [ -1.77, 0.54, -0.8, 0.53, -0.8, 0.53, -1.77, 0.54 ] - } - ] - }, - "undies": { - "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 ] - }, - { - "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 ] - }, - { - "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 ] - }, - { - "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 ] - }, - { - "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 ] - }, - { - "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 ] - }, - { - "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 ] - }, - { - "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 ] - } - ] - } - } - } - } -} -} \ No newline at end of file diff --git a/spine-cocos2dx/3.1/example/Resources/common/spineboy.json b/spine-cocos2dx/3.1/example/Resources/common/spineboy.json deleted file mode 100644 index 1ffa7aad5..000000000 --- a/spine-cocos2dx/3.1/example/Resources/common/spineboy.json +++ /dev/null @@ -1,2412 +0,0 @@ -{ -"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": "front_bracer", - "parent": "front_upper_arm", - "length": 40.57, - "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" } -], -"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", "additive": true } -], -"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.49, "y": 6, "rotation": 67.16, "width": 75, "height": 82 }, - "front_fist_open": { "x": 39.56, "y": 7.76, "rotation": 67.16, "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.3, "y": 16.4, "rotation": 60.82, "width": 210, "height": 203 } - }, - "head": { - "head": { "x": 128.95, "y": 0.29, "rotation": -70.63, "width": 271, "height": 298 } - }, - "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": { - "death": { - "slots": { - "eye": { - "attachment": [ - { "time": 0, "name": "eye_surprised" }, - { "time": 0.4666, "name": "eye_indifferent" }, - { "time": 2.2333, "name": "eye_surprised" }, - { "time": 4.5333, "name": "eye_indifferent" } - ] - }, - "front_fist": { - "attachment": [ - { "time": 0, "name": "front_fist_open" } - ] - }, - "mouth": { - "attachment": [ - { "time": 0, "name": "mouth_oooo" }, - { "time": 2.2333, "name": "mouth_grind" }, - { "time": 4.5333, "name": "mouth_oooo" } - ] - } - }, - "bones": { - "head": { - "rotate": [ - { "time": 0, "angle": -2.82 }, - { "time": 0.1333, "angle": -28.74 }, - { "time": 0.2333, "angle": 11.42 }, - { "time": 0.3333, "angle": -50.24 }, - { "time": 0.4, "angle": -72.66, "curve": "stepped" }, - { "time": 0.4333, "angle": -72.66 }, - { "time": 0.5, "angle": -20.24 }, - { "time": 0.5666, "angle": -85.28, "curve": "stepped" }, - { "time": 0.9333, "angle": -85.28, "curve": "stepped" }, - { "time": 2.2333, "angle": -85.28 }, - { "time": 2.5, "angle": -51.96, "curve": "stepped" }, - { "time": 4.5333, "angle": -51.96 }, - { "time": 4.6666, "angle": -85.28 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - }, - "neck": { - "rotate": [ - { "time": 0, "angle": -2.82 }, - { "time": 0.1333, "angle": 12.35 }, - { "time": 0.2333, "angle": 29.89 }, - { "time": 0.3, "angle": 70.36 }, - { "time": 0.4, "angle": -10.22, "curve": "stepped" }, - { "time": 0.4333, "angle": -10.22 }, - { "time": 0.5, "angle": 2.92 }, - { "time": 0.5666, "angle": 47.94, "curve": "stepped" }, - { "time": 2.2333, "angle": 47.94 }, - { "time": 2.5, "angle": 18.5, "curve": "stepped" }, - { "time": 4.5333, "angle": 18.5 }, - { "time": 4.6666, "angle": 47.94 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - }, - "torso": { - "rotate": [ - { "time": 0, "angle": -8.61 }, - { "time": 0.1333, "angle": 28.19 }, - { "time": 0.2666, "angle": -280.19 }, - { "time": 0.4, "angle": -237.22, "curve": "stepped" }, - { "time": 0.4333, "angle": -237.22 }, - { "time": 0.5, "angle": 76.03, "curve": "stepped" }, - { "time": 0.8, "angle": 76.03, "curve": "stepped" }, - { "time": 0.9333, "angle": 76.03, "curve": "stepped" }, - { "time": 2.2333, "angle": 76.03 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.9333, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 2.2333, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - }, - "front_upper_arm": { - "rotate": [ - { "time": 0, "angle": -38.85 }, - { "time": 0.1333, "angle": -299.58 }, - { "time": 0.2666, "angle": -244.74 }, - { "time": 0.4, "angle": -292.35 }, - { "time": 0.4333, "angle": -315.84 }, - { "time": 0.5, "angle": -347.94 }, - { "time": 0.7, "angle": -347.33, "curve": "stepped" }, - { "time": 2.2333, "angle": -347.33 }, - { "time": 2.7, "angle": -290.68 }, - { "time": 2.7666, "angle": -285.1 }, - { "time": 4.6666, "angle": -290.68 }, - { "time": 4.8, "angle": 8.61 }, - { "time": 4.8666, "angle": 10.94 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - }, - "rear_upper_arm": { - "rotate": [ - { "time": 0, "angle": -44.69 }, - { "time": 0.1333, "angle": 112.26 }, - { "time": 0.2666, "angle": 129.07 }, - { "time": 0.4, "angle": 134.94, "curve": "stepped" }, - { "time": 0.4333, "angle": 134.94 }, - { "time": 0.5666, "angle": 172.6, "curve": "stepped" }, - { "time": 0.9333, "angle": 172.6, "curve": "stepped" }, - { "time": 2.2333, "angle": 172.6 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - }, - "front_bracer": { - "rotate": [ - { "time": 0, "angle": 21.88 }, - { "time": 0.1333, "angle": 11.48 }, - { "time": 0.2666, "angle": -18.81 }, - { "time": 0.4, "angle": -18.92 }, - { "time": 0.4333, "angle": -18.28 }, - { "time": 0.5, "angle": 60.61 }, - { "time": 0.7, "angle": -18.87, "curve": "stepped" }, - { "time": 2.2333, "angle": -18.87 }, - { "time": 2.7, "angle": -1.95, "curve": "stepped" }, - { "time": 4.6666, "angle": -1.95 }, - { "time": 4.8, "angle": 34.55 }, - { "time": 4.9333, "angle": -18.74 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - }, - "front_fist": { - "rotate": [ - { "time": 0, "angle": -2.33 }, - { "time": 0.2666, "angle": 26.34 }, - { "time": 0.7, "angle": -6.07, "curve": "stepped" }, - { "time": 2.2333, "angle": -6.07 }, - { "time": 2.7, "angle": 5.72, "curve": "stepped" }, - { "time": 4.6666, "angle": 5.72 }, - { "time": 4.8666, "angle": -6.52 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - }, - "rear_bracer": { - "rotate": [ - { "time": 0, "angle": 10.36 }, - { "time": 0.1333, "angle": -23.12 }, - { "time": 0.2666, "angle": -23.11 }, - { "time": 0.4, "angle": -23.16, "curve": "stepped" }, - { "time": 0.4333, "angle": -23.16 }, - { "time": 0.5666, "angle": -23.2, "curve": "stepped" }, - { "time": 0.9333, "angle": -23.2, "curve": "stepped" }, - { "time": 2.2333, "angle": -23.2 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - }, - "gun": { - "rotate": [ - { "time": 0, "angle": -2.78 }, - { "time": 0.1333, "angle": -24.58 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - }, - "hip": { - "rotate": [ - { "time": 0, "angle": 0, "curve": "stepped" }, - { "time": 0.9333, "angle": 0, "curve": "stepped" }, - { "time": 2.2333, "angle": 0 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 }, - { "time": 0.2, "x": 50.34, "y": 151.73 }, - { "time": 0.4, "x": 5.16, "y": -119.64, "curve": "stepped" }, - { "time": 0.4333, "x": 5.16, "y": -119.64 }, - { "time": 0.5, "x": 50.34, "y": -205.18, "curve": "stepped" }, - { "time": 0.8, "x": 50.34, "y": -205.18, "curve": "stepped" }, - { "time": 0.9333, "x": 50.34, "y": -205.18, "curve": "stepped" }, - { "time": 2.2333, "x": 50.34, "y": -205.18 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - }, - "front_thigh": { - "rotate": [ - { "time": 0, "angle": 0 }, - { "time": 0.1333, "angle": 8.47 }, - { "time": 0.2666, "angle": 115.95 }, - { "time": 0.4, "angle": 180.66, "curve": "stepped" }, - { "time": 0.4333, "angle": 180.66 }, - { "time": 0.5, "angle": 155.22 }, - { "time": 0.6, "angle": 97.73 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - }, - "front_shin": { - "rotate": [ - { "time": 0, "angle": 0 }, - { "time": 0.1333, "angle": -27.37 }, - { "time": 0.2666, "angle": -35.1 }, - { "time": 0.4, "angle": -37.72, "curve": "stepped" }, - { "time": 0.4333, "angle": -37.72 }, - { "time": 0.5, "angle": -40.06 }, - { "time": 0.6, "angle": 2.76 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - }, - "rear_thigh": { - "rotate": [ - { "time": 0, "angle": 0 }, - { "time": 0.1333, "angle": 70.45 }, - { "time": 0.2666, "angle": 155.34 }, - { "time": 0.4, "angle": 214.31, "curve": "stepped" }, - { "time": 0.4333, "angle": 214.31 }, - { "time": 0.5, "angle": 169.67 }, - { "time": 0.8, "angle": 83.27 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - }, - "rear_shin": { - "rotate": [ - { "time": 0, "angle": 0 }, - { "time": 0.1333, "angle": 18.93 }, - { "time": 0.2666, "angle": -21.04 }, - { "time": 0.4, "angle": -29.93, "curve": "stepped" }, - { "time": 0.4333, "angle": -29.93 }, - { "time": 0.5, "angle": -16.79 }, - { "time": 0.8, "angle": 7.77 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - }, - "rear_foot": { - "rotate": [ - { "time": 0, "angle": 0 }, - { "time": 0.1333, "angle": -11.62 }, - { "time": 0.4, "angle": -45.59, "curve": "stepped" }, - { "time": 0.4333, "angle": -45.59 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - }, - "front_foot": { - "rotate": [ - { "time": 0, "angle": 0 }, - { "time": 0.4, "angle": -48.75, "curve": "stepped" }, - { "time": 0.4333, "angle": -48.75 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - }, - "gunTip": { - "rotate": [ - { "time": 0, "angle": 0 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - } - } - }, - "hit": { - "slots": { - "front_fist": { - "attachment": [ - { "time": 0.1666, "name": "front_fist_open" } - ] - }, - "mouth": { - "attachment": [ - { "time": 0, "name": "mouth_grind" }, - { "time": 0.3333, "name": "mouth_smile" } - ] - } - }, - "bones": { - "torso": { - "rotate": [ - { "time": 0, "angle": 56.42 }, - { "time": 0.3333, "angle": 8.89 } - ] - }, - "neck": { - "rotate": [ - { "time": 0, "angle": 35.38 }, - { "time": 0.2333, "angle": 24.94 } - ] - }, - "head": { - "rotate": [ - { "time": 0, "angle": 10.21 }, - { "time": 0.3333, "angle": -41.3 } - ] - }, - "front_upper_arm": { - "rotate": [ - { - "time": 0, - "angle": -310.92, - "curve": [ 0.38, 0.53, 0.744, 1 ] - }, - { "time": 0.3333, "angle": -112.59 } - ], - "translate": [ - { "time": 0, "x": 7.23, "y": -13.13 } - ] - }, - "front_bracer": { - "rotate": [ - { "time": 0, "angle": 36.99 }, - { "time": 0.3333, "angle": -28.64 } - ] - }, - "front_fist": { - "rotate": [ - { "time": 0, "angle": 13.59 }, - { "time": 0.3333, "angle": 7.55 } - ] - }, - "rear_upper_arm": { - "rotate": [ - { - "time": 0, - "angle": 271.02, - "curve": [ 0.342, 0.36, 0.68, 0.71 ] - }, - { "time": 0.3333, "angle": -15.84 } - ], - "translate": [ - { "time": 0.3333, "x": -0.09, "y": -0.46 } - ] - }, - "rear_bracer": { - "rotate": [ - { "time": 0, "angle": 0 }, - { "time": 0.3333, "angle": 40.03 } - ] - }, - "gun": { - "rotate": [ - { "time": 0, "angle": 14.98 }, - { "time": 0.3333, "angle": 39.75 } - ] - }, - "hip": { - "translate": [ - { "time": 0, "x": -75.54, "y": -78.03 }, - { "time": 0.2333, "x": -36.48, "y": 12.42 }, - { "time": 0.3333, "x": -36.48, "y": -2.99 } - ] - }, - "front_thigh": { - "rotate": [ - { - "time": 0, - "angle": 90.94, - "curve": [ 0.227, 0.26, 0.432, 1 ] - }, - { "time": 0.3333, "angle": 32.02 } - ], - "translate": [ - { "time": 0, "x": 7.21, "y": -4 } - ] - }, - "rear_thigh": { - "rotate": [ - { - "time": 0, - "angle": 40.51, - "curve": [ 0.295, 0.3, 0.59, 0.99 ] - }, - { "time": 0.3333, "angle": 90.76 } - ], - "translate": [ - { "time": 0, "x": -1.96, "y": -0.32 } - ] - }, - "front_shin": { - "rotate": [ - { "time": 0, "angle": -96.62 }, - { "time": 0.3333, "angle": -15.13 } - ] - }, - "rear_shin": { - "rotate": [ - { "time": 0, "angle": 7.99 }, - { "time": 0.3333, "angle": -67.54 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - }, - "front_foot": { - "rotate": [ - { "time": 0, "angle": 5.4 }, - { "time": 0.3333, "angle": -16.26 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - }, - "rear_foot": { - "rotate": [ - { "time": 0, "angle": 2.67 }, - { "time": 0.3333, "angle": -10.31 } - ] - } - } - }, - "idle": { - "slots": { - "front_fist": { - "attachment": [ - { "time": 0, "name": "front_fist_open" }, - { "time": 1.6666, "name": "front_fist_open" } - ] - }, - "mouth": { - "attachment": [ - { "time": 0, "name": "mouth_smile" }, - { "time": 1.6666, "name": "mouth_smile" } - ] - } - }, - "bones": { - "torso": { - "rotate": [ - { - "time": 0, - "angle": -5.61, - "curve": [ 0.25, 0, 0.75, 1 ] - }, - { - "time": 0.8333, - "angle": -9.65, - "curve": [ 0.25, 0, 0.75, 1 ] - }, - { "time": 1.6666, "angle": -5.61 } - ], - "translate": [ - { "time": 0, "x": -6.49, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 1.6666, "x": 1, "y": 1 } - ] - }, - "front_upper_arm": { - "rotate": [ - { - "time": 0, - "angle": -59.85, - "curve": [ 0.492, 0, 0.75, 1 ] - }, - { - "time": 0.6666, - "angle": -54.31, - "curve": [ 0.324, 0.11, 0.75, 1 ] - }, - { "time": 1.6666, "angle": -59.85 } - ], - "translate": [ - { "time": 0, "x": -7.12, "y": -8.23 }, - { "time": 0.6666, "x": -6.32, "y": -8.3 }, - { "time": 1.6666, "x": -7.12, "y": -8.23 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 1.6666, "x": 1, "y": 1 } - ] - }, - "rear_upper_arm": { - "rotate": [ - { - "time": 0, - "angle": 62.41, - "curve": [ 0.504, 0.02, 0.75, 1 ] - }, - { - "time": 0.7333, - "angle": 43.83, - "curve": [ 0.25, 0, 0.75, 1 ] - }, - { "time": 1.6666, "angle": 62.41 } - ], - "translate": [ - { "time": 0, "x": -1.83, "y": -16.78 }, - { "time": 0.6666, "x": 0.34, "y": -15.23 }, - { "time": 1.6666, "x": -1.83, "y": -16.78 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 1.6666, "x": 1, "y": 1 } - ] - }, - "neck": { - "rotate": [ - { "time": 0, "angle": 0 }, - { "time": 0.6666, "angle": 2.39 }, - { "time": 1.6666, "angle": 0 } - ], - "translate": [ - { "time": 0, "x": -1.88, "y": -4.76, "curve": "stepped" }, - { "time": 1.6666, "x": -1.88, "y": -4.76 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 1.6666, "x": 1, "y": 1 } - ] - }, - "front_thigh": { - "rotate": [ - { - "time": 0, - "angle": 0.64, - "curve": [ 0.235, 0, 0.558, 0.99 ] - }, - { - "time": 0.6666, - "angle": -4.34, - "curve": [ 0.594, 0, 0.653, 1 ] - }, - { "time": 1.6666, "angle": 0.64 } - ], - "translate": [ - { "time": 0, "x": -13.39, "y": 6.69, "curve": "stepped" }, - { "time": 1.6666, "x": -13.39, "y": 6.69 } - ], - "scale": [ - { - "time": 0, - "x": 0.896, - "y": 1, - "curve": [ 0.235, 0, 0.558, 0.99 ] - }, - { - "time": 0.6666, - "x": 0.825, - "y": 1, - "curve": [ 0.594, 0, 0.653, 1 ] - }, - { "time": 1.6666, "x": 0.896, "y": 1 } - ] - }, - "front_shin": { - "rotate": [ - { "time": 0, "angle": -19.28, "curve": "stepped" }, - { "time": 1.6666, "angle": -19.28 } - ], - "scale": [ - { - "time": 0, - "x": 1, - "y": 1, - "curve": [ 0.235, 0, 0.558, 0.99 ] - }, - { - "time": 0.6666, - "x": 0.994, - "y": 1, - "curve": [ 0.594, 0, 0.653, 1 ] - }, - { "time": 1.6666, "x": 1, "y": 1 } - ] - }, - "rear_thigh": { - "rotate": [ - { - "time": 0, - "angle": 30.5, - "curve": [ 0.235, 0, 0.558, 0.99 ] - }, - { - "time": 0.6666, - "angle": 40.15, - "curve": [ 0.594, 0, 0.653, 1 ] - }, - { "time": 1.6666, "angle": 30.5 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 1.6666, "x": 1, "y": 1 } - ] - }, - "rear_shin": { - "rotate": [ - { - "time": 0, - "angle": -23.83, - "curve": [ 0.235, 0, 0.558, 0.99 ] - }, - { - "time": 0.6666, - "angle": -43.77, - "curve": [ 0.594, 0, 0.653, 1 ] - }, - { "time": 1.6666, "angle": -23.83 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 1.6666, "x": 1, "y": 1 } - ] - }, - "front_foot": { - "rotate": [ - { - "time": 0, - "angle": 5.13, - "curve": [ 0.235, 0, 0.558, 0.99 ] - }, - { - "time": 0.6666, - "angle": 10.04, - "curve": [ 0.594, 0, 0.653, 1 ] - }, - { "time": 1.6666, "angle": 5.13 } - ], - "scale": [ - { "time": 0, "x": 0.755, "y": 1.309, "curve": "stepped" }, - { "time": 1.6666, "x": 0.755, "y": 1.309 } - ] - }, - "hip": { - "translate": [ - { - "time": 0, - "x": -6.63, - "y": -23.01, - "curve": [ 0.235, 0, 0.558, 0.99 ] - }, - { - "time": 0.6666, - "x": 6.27, - "y": -35, - "curve": [ 0.594, 0, 0.653, 1 ] - }, - { "time": 1.6666, "x": -6.63, "y": -23.01 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 1.6666, "x": 1, "y": 1 } - ] - }, - "rear_foot": { - "rotate": [ - { - "time": 0, - "angle": -7.34, - "curve": [ 0.235, 0, 0.558, 0.99 ] - }, - { - "time": 0.6666, - "angle": 3.85, - "curve": [ 0.594, 0, 0.653, 1 ] - }, - { "time": 1.6666, "angle": -7.34 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 1.6666, "x": 1, "y": 1 } - ] - }, - "rear_bracer": { - "rotate": [ - { - "time": 0, - "angle": -17.16, - "curve": [ 0.25, 0, 0.75, 1 ] - }, - { - "time": 0.6666, - "angle": 12.52, - "curve": [ 0.25, 0, 0.75, 1 ] - }, - { "time": 1.6666, "angle": -17.16 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 1.6666, "x": 1, "y": 1 } - ] - }, - "head": { - "rotate": [ - { - "time": 0, - "angle": -5.51, - "curve": [ 0.25, 0, 0.75, 1 ] - }, - { - "time": 0.6666, - "angle": -3.12, - "curve": [ 0.25, 0, 0.75, 1 ] - }, - { "time": 1.6666, "angle": -5.51 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 1.6666, "x": 1, "y": 1 } - ] - }, - "front_bracer": { - "rotate": [ - { - "time": 0, - "angle": 45.46, - "curve": [ 0.492, 0, 0.75, 1 ] - }, - { - "time": 0.6666, - "angle": 41.33, - "curve": [ 0.32, 0.1, 0.736, 0.91 ] - }, - { "time": 1.6666, "angle": 45.46 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 1.6666, "x": 1, "y": 1 } - ] - }, - "gun": { - "rotate": [ - { - "time": 0, - "angle": 0, - "curve": [ 0.25, 0, 0.75, 1 ] - }, - { - "time": 0.6666, - "angle": -15.59, - "curve": [ 0.732, 0, 0.769, 0.99 ] - }, - { "time": 1.6666, "angle": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 1.6666, "x": 1, "y": 1 } - ] - }, - "front_fist": { - "rotate": [ - { - "time": 0, - "angle": -6.84, - "curve": [ 0.492, 0, 0.75, 1 ] - }, - { - "time": 0.6666, - "angle": -14.63, - "curve": [ 0.324, 0.11, 0.75, 1 ] - }, - { "time": 1.6666, "angle": -6.84 } - ], - "scale": [ - { - "time": 0, - "x": 1, - "y": 1, - "curve": [ 0.25, 0, 0.75, 1 ] - }, - { - "time": 0.6666, - "x": 0.689, - "y": 1.1, - "curve": [ 0.25, 0, 0.75, 1 ] - }, - { "time": 1.6666, "x": 1, "y": 1 } - ] - } - } - }, - "jump": { - "slots": { - "front_fist": { - "attachment": [ - { "time": 0, "name": "front_fist_open" }, - { "time": 0.2, "name": "front_fist_closed" }, - { "time": 0.6666, "name": "front_fist_open" } - ] - }, - "mouth": { - "attachment": [ - { "time": 0, "name": "mouth_grind" } - ] - }, - "torso": { - "attachment": [ - { "time": 0, "name": "torso" } - ] - } - }, - "bones": { - "front_thigh": { - "rotate": [ - { - "time": 0, - "angle": 91.53, - "curve": [ 0.278, 0.46, 0.763, 1 ] - }, - { - "time": 0.2, - "angle": -35.83, - "curve": [ 0.761, 0, 0.75, 1 ] - }, - { "time": 0.4333, "angle": 127.74 }, - { - "time": 0.7333, - "angle": 48.18, - "curve": [ 0.227, 0.26, 0.432, 1 ] - }, - { "time": 0.8333, "angle": 25.35 }, - { "time": 0.9333, "angle": 45.37 }, - { "time": 1.0333, "angle": 38.12 }, - { "time": 1.1333, "angle": 25.35 }, - { "time": 1.3333, "angle": 91.53 } - ], - "translate": [ - { "time": 0, "x": -2.56, "y": 5.77 }, - { "time": 0.4333, "x": 8.3, "y": 7.98 }, - { "time": 0.7333, "x": 7.21, "y": -4 }, - { "time": 1.3333, "x": -2.56, "y": 5.77 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - }, - "torso": { - "rotate": [ - { "time": 0, "angle": -42.63 }, - { "time": 0.2, "angle": -5.74 }, - { "time": 0.4333, "angle": -50.76 }, - { "time": 0.7333, "angle": 1.89 }, - { "time": 0.8333, "angle": 11.58 }, - { "time": 0.9666, "angle": -1.89 }, - { "time": 1.1333, "angle": 11.58 }, - { "time": 1.3333, "angle": -42.63 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - }, - "rear_thigh": { - "rotate": [ - { "time": 0, "angle": -26.32 }, - { "time": 0.2, "angle": 121.44 }, - { "time": 0.4333, "angle": 70.54 }, - { - "time": 0.7333, - "angle": 79.89, - "curve": [ 0.295, 0.3, 0.59, 0.99 ] - }, - { "time": 0.8333, "angle": 99.12 }, - { "time": 0.9333, "angle": 74.05 }, - { "time": 1.0333, "angle": 98.04 }, - { "time": 1.1333, "angle": 99.12 }, - { "time": 1.3333, "angle": -26.32 } - ], - "translate": [ - { "time": 0, "x": -0.56, "y": -0.32 }, - { "time": 0.4333, "x": -8.5, "y": 10.58 }, - { "time": 0.7333, "x": -1.96, "y": -0.32 }, - { "time": 1.3333, "x": -0.56, "y": -0.32 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - }, - "rear_shin": { - "rotate": [ - { "time": 0, "angle": -78.69 }, - { "time": 0.4333, "angle": -55.56 }, - { "time": 0.7333, "angle": -62.84 }, - { "time": 0.8333, "angle": -80.74 }, - { "time": 0.9333, "angle": -41.12 }, - { "time": 1.0333, "angle": -77.4 }, - { "time": 1.1333, "angle": -80.74 }, - { "time": 1.3333, "angle": -78.69 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.7333, "x": 1, "y": 1 } - ] - }, - "front_upper_arm": { - "rotate": [ - { "time": 0, "angle": -22.61 }, - { "time": 0.2, "angle": -246.68 }, - { - "time": 0.6, - "angle": 11.28, - "curve": [ 0.246, 0, 0.633, 0.53 ] - }, - { - "time": 0.7333, - "angle": -57.45, - "curve": [ 0.38, 0.53, 0.744, 1 ] - }, - { "time": 0.8666, "angle": -112.59 }, - { "time": 0.9333, "angle": -102.17 }, - { "time": 1.0333, "angle": -108.61 }, - { "time": 1.1333, "angle": -112.59 }, - { "time": 1.3333, "angle": -22.61 } - ], - "translate": [ - { "time": 0, "x": 6.08, "y": 7.15 }, - { "time": 0.2, "x": 7.23, "y": -13.13, "curve": "stepped" }, - { "time": 0.7333, "x": 7.23, "y": -13.13 }, - { "time": 1.3333, "x": 6.08, "y": 7.15 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - }, - "front_bracer": { - "rotate": [ - { "time": 0, "angle": 66.46 }, - { "time": 0.2, "angle": 42.39 }, - { "time": 0.4333, "angle": 26.06 }, - { "time": 0.7333, "angle": 13.28 }, - { "time": 0.8666, "angle": -28.64 }, - { "time": 0.9333, "angle": -22.31 }, - { "time": 1.0333, "angle": -35.39 }, - { "time": 1.1333, "angle": -28.64 }, - { "time": 1.3333, "angle": 66.46 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - }, - "front_fist": { - "rotate": [ - { "time": 0, "angle": -28.43 }, - { "time": 0.4333, "angle": -45.6 }, - { "time": 0.7333, "angle": -53.66 }, - { "time": 0.8666, "angle": 7.55 }, - { "time": 0.9333, "angle": 31.15 }, - { "time": 1.0333, "angle": -32.58 }, - { "time": 1.1333, "angle": 7.55 }, - { "time": 1.3333, "angle": -28.43 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - }, - "rear_upper_arm": { - "rotate": [ - { "time": 0, "angle": 39.68 }, - { "time": 0.2, "angle": 276.57 }, - { "time": 0.3, "angle": 17.73 }, - { "time": 0.4333, "angle": 83.38 }, - { - "time": 0.6, - "angle": -4.71, - "curve": [ 0.246, 0, 0.633, 0.53 ] - }, - { - "time": 0.7333, - "angle": -69.63, - "curve": [ 0.342, 0.36, 0.68, 0.71 ] - }, - { - "time": 0.7666, - "angle": 321.47, - "curve": [ 0.333, 0.33, 0.667, 0.66 ] - }, - { - "time": 0.8, - "angle": 33.7, - "curve": [ 0.358, 0.64, 0.693, 1 ] - }, - { "time": 0.8666, "angle": 34.56 }, - { "time": 1.0333, "angle": 71.96 }, - { "time": 1.1333, "angle": 34.56 }, - { "time": 1.3333, "angle": 39.68 } - ], - "translate": [ - { "time": 0, "x": -3.1, "y": -4.86 }, - { "time": 0.2, "x": 23.33, "y": 49.07 }, - { "time": 0.4333, "x": 20.78, "y": 40.21 }, - { "time": 1.3333, "x": -3.1, "y": -4.86 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - }, - "rear_bracer": { - "rotate": [ - { "time": 0, "angle": 29.66 }, - { "time": 0.2, "angle": 45.06 }, - { "time": 0.4333, "angle": -4.34 }, - { "time": 0.7666, "angle": 61.68 }, - { "time": 0.8, "angle": 82.59 }, - { "time": 0.8666, "angle": 80.06 }, - { "time": 1.0333, "angle": 57.56 }, - { "time": 1.1333, "angle": 80.06 }, - { "time": 1.3333, "angle": 29.66 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - }, - "neck": { - "rotate": [ - { "time": 0, "angle": 24.9 }, - { "time": 0.2, "angle": 16.31 }, - { "time": 0.4333, "angle": 7.44 }, - { "time": 0.7333, "angle": -20.35 }, - { "time": 0.8333, "angle": -0.69, "curve": "stepped" }, - { "time": 1.1333, "angle": -0.69 }, - { "time": 1.3333, "angle": 24.9 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - }, - "head": { - "rotate": [ - { "time": 0, "angle": 24.92 }, - { "time": 0.2, "angle": 10.36 }, - { "time": 0.4333, "angle": 28.65 }, - { "time": 0.7333, "angle": -2.65 }, - { "time": 0.8333, "angle": -28.94, "curve": "stepped" }, - { "time": 1.1333, "angle": -28.94 }, - { "time": 1.3333, "angle": 24.92 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - }, - "hip": { - "rotate": [ - { "time": 0, "angle": 0 } - ], - "translate": [ - { - "time": 0, - "x": -34.51, - "y": -78.62, - "curve": [ 0.232, 1, 0.75, 1 ] - }, - { - "time": 0.2, - "x": -34.51, - "y": 182.5, - "curve": [ 0.232, 0.48, 0.598, 0.79 ] - }, - { - "time": 0.7666, - "x": -34.51, - "y": 596.22, - "curve": [ 0.329, 0.17, 0.66, 0.21 ] - }, - { "time": 1.1333, "x": -34.51, "y": 2.49 }, - { "time": 1.3333, "x": -34.51, "y": -78.62 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - }, - "front_shin": { - "rotate": [ - { - "time": 0, - "angle": -90.62, - "curve": [ 0.416, 0.54, 0.743, 1 ] - }, - { - "time": 0.2, - "angle": -10.52, - "curve": [ 0.644, 0, 0.75, 1 ] - }, - { "time": 0.4333, "angle": -127.72 }, - { "time": 0.7333, "angle": -19.91 }, - { "time": 0.8333, "angle": -5.16 }, - { "time": 0.9333, "angle": -35.06 }, - { "time": 1.0333, "angle": -43.97 }, - { "time": 1.1333, "angle": -5.16 }, - { "time": 1.3333, "angle": -90.62 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - }, - "front_foot": { - "rotate": [ - { "time": 0, "angle": -0.79 }, - { "time": 0.0333, "angle": 16.27 }, - { "time": 0.0666, "angle": 23.52 }, - { "time": 0.1, "angle": 21.02 }, - { "time": 0.1333, "angle": 10.92 }, - { "time": 0.2, "angle": -38.45 }, - { "time": 0.4333, "angle": 6.62 }, - { "time": 0.7333, "angle": -11.51 }, - { "time": 1.0333, "angle": -22.91 }, - { "time": 1.3333, "angle": -0.79 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - }, - "rear_foot": { - "rotate": [ - { "time": 0, "angle": -12.77 }, - { "time": 0.2, "angle": 17.05 }, - { "time": 0.4333, "angle": 19.45 }, - { "time": 0.7333, "angle": 2.67 }, - { "time": 1.0333, "angle": -28.49 }, - { "time": 1.3333, "angle": -12.77 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - }, - "gun": { - "rotate": [ - { "time": 0, "angle": 6.18 }, - { "time": 0.2, "angle": 30.81 }, - { "time": 0.4333, "angle": 13.25 }, - { "time": 0.7333, "angle": 14.98 }, - { "time": 0.7666, "angle": 25.64 }, - { "time": 0.8, "angle": 20.62 }, - { "time": 0.8666, "angle": 64.52 }, - { "time": 1.0333, "angle": 8.59 }, - { "time": 1.1333, "angle": 64.52 }, - { "time": 1.3333, "angle": 6.18 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - } - } - }, - "run": { - "slots": { - "front_fist": { - "attachment": [ - { "time": 0, "name": "front_fist_closed" } - ] - }, - "mouth": { - "attachment": [ - { "time": 0, "name": "mouth_grind" } - ] - }, - "torso": { - "attachment": [ - { "time": 0, "name": "torso" } - ] - } - }, - "bones": { - "front_thigh": { - "rotate": [ - { - "time": 0, - "angle": 42.05, - "curve": [ 0.195, 0.86, 0.75, 1 ] - }, - { "time": 0.0666, "angle": 46.07 }, - { "time": 0.1333, "angle": -20.28 }, - { "time": 0.2, "angle": -27.23 }, - { "time": 0.2666, "angle": -47.16 }, - { "time": 0.3333, "angle": -39.79 }, - { "time": 0.4, "angle": -25.86 }, - { "time": 0.4666, "angle": 14.35 }, - { "time": 0.5333, "angle": 55.62 }, - { "time": 0.6, "angle": 69.65 }, - { "time": 0.6666, "angle": 86.4 }, - { "time": 0.7333, "angle": 65.87 }, - { "time": 0.8, "angle": 42.05 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 }, - { "time": 0.0333, "x": -5.79, "y": 11.15 }, - { "time": 0.0666, "x": -5.13, "y": 11.55 }, - { "time": 0.1333, "x": -7.7, "y": 8.98 }, - { "time": 0.5333, "x": -1.26, "y": 3.83 }, - { "time": 0.8, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "torso": { - "rotate": [ - { "time": 0, "angle": -39.7 }, - { "time": 0.2, "angle": -57.29 }, - { "time": 0.4, "angle": -39.7 }, - { "time": 0.6, "angle": -57.29 }, - { "time": 0.8, "angle": -39.7 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.4, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.8, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "rear_thigh": { - "rotate": [ - { "time": 0, "angle": -56.59 }, - { "time": 0.0666, "angle": -21.57 }, - { "time": 0.1333, "angle": 27.95 }, - { "time": 0.2, "angle": 42.42 }, - { "time": 0.2666, "angle": 62.37 }, - { "time": 0.3333, "angle": 45.42 }, - { "time": 0.4, "angle": 15.67 }, - { "time": 0.4666, "angle": 28.22 }, - { "time": 0.5333, "angle": -38.62 }, - { "time": 0.6, "angle": -53.26 }, - { "time": 0.6666, "angle": -79.31 }, - { "time": 0.7333, "angle": -86.47 }, - { "time": 0.8, "angle": -56.59 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 }, - { "time": 0.4, "x": -6.76, "y": -3.86 }, - { "time": 0.4333, "x": -15.85, "y": 7.28 }, - { "time": 0.4666, "x": -13.04, "y": 4.04 }, - { "time": 0.5, "x": -10.24, "y": 7.11 }, - { "time": 0.5333, "x": -9.01, "y": -5.15 }, - { "time": 0.6666, "x": -23.18, "y": -2.57 }, - { "time": 0.8, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "rear_shin": { - "rotate": [ - { "time": 0, "angle": -74 }, - { "time": 0.0666, "angle": -83.38 }, - { "time": 0.1333, "angle": -106.69 }, - { "time": 0.2, "angle": -66.01 }, - { "time": 0.2666, "angle": -55.22 }, - { "time": 0.3333, "angle": -24.8 }, - { - "time": 0.4, - "angle": 18.44, - "curve": [ 0.25, 0, 0.75, 1 ] - }, - { "time": 0.4666, "angle": -56.65 }, - { - "time": 0.5333, - "angle": -11.94, - "curve": [ 0.25, 0, 0.75, 1 ] - }, - { "time": 0.6666, "angle": -41.26 }, - { "time": 0.7333, "angle": -43.6 }, - { "time": 0.8, "angle": -74 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.8, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "front_upper_arm": { - "rotate": [ - { "time": 0, "angle": -89.36 }, - { "time": 0.0666, "angle": -95.67 }, - { "time": 0.1333, "angle": -22 }, - { "time": 0.2, "angle": -316.04 }, - { "time": 0.2666, "angle": -274.94 }, - { "time": 0.3333, "angle": -273.74 }, - { "time": 0.4, "angle": -272.09 }, - { "time": 0.4666, "angle": -264.89 }, - { "time": 0.5333, "angle": -320.09 }, - { "time": 0.6, "angle": -50.83 }, - { "time": 0.6666, "angle": -81.72 }, - { "time": 0.7333, "angle": -83.92 }, - { "time": 0.8, "angle": -89.36 } - ], - "translate": [ - { "time": 0, "x": 6.24, "y": 10.05 }, - { "time": 0.2666, "x": 4.95, "y": -13.13 }, - { "time": 0.6, "x": -2.43, "y": 1.94 }, - { "time": 0.8, "x": 6.24, "y": 10.05 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "front_bracer": { - "rotate": [ - { "time": 0, "angle": 33.43 }, - { "time": 0.0666, "angle": 20.53 }, - { "time": 0.1333, "angle": 15.26 }, - { "time": 0.2, "angle": 19.28 }, - { "time": 0.2666, "angle": 22.62 }, - { "time": 0.3333, "angle": 37.29 }, - { "time": 0.4, "angle": 41.53 }, - { "time": 0.4666, "angle": 31.73 }, - { "time": 0.5333, "angle": 67.45 }, - { "time": 0.6666, "angle": 39.77 }, - { "time": 0.7333, "angle": 30.95 }, - { "time": 0.8, "angle": 33.43 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.8, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "front_fist": { - "rotate": [ - { "time": 0, "angle": -19.75 }, - { "time": 0.0666, "angle": -37.11 }, - { "time": 0.1333, "angle": -50.79 }, - { "time": 0.2666, "angle": -12.69 }, - { "time": 0.3333, "angle": 3.01 }, - { "time": 0.4333, "angle": 12.05 }, - { "time": 0.5333, "angle": 13.25 }, - { "time": 0.8, "angle": -19.75 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.8, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "rear_upper_arm": { - "rotate": [ - { "time": 0, "angle": 68.68 }, - { "time": 0.0666, "angle": 73.89 }, - { "time": 0.1333, "angle": -9.64 }, - { "time": 0.2, "angle": 284.27 }, - { "time": 0.2666, "angle": 283.29 }, - { "time": 0.3333, "angle": 278.28 }, - { "time": 0.4, "angle": 271.02 }, - { "time": 0.4666, "angle": 263.2 }, - { "time": 0.5333, "angle": 314.25 }, - { "time": 0.6, "angle": 16.83 }, - { "time": 0.6666, "angle": 70.35 }, - { "time": 0.7333, "angle": 73.53 }, - { "time": 0.8, "angle": 68.68 } - ], - "translate": [ - { "time": 0, "x": -2.57, "y": -8.89 }, - { "time": 0.1333, "x": -4.68, "y": 7.2 }, - { "time": 0.2, "x": 21.73, "y": 51.17 }, - { "time": 0.6, "x": 4.33, "y": 2.05 }, - { "time": 0.8, "x": -2.57, "y": -8.89 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "rear_bracer": { - "rotate": [ - { "time": 0, "angle": 31.04 }, - { "time": 0.0666, "angle": 28.28 }, - { "time": 0.1333, "angle": 49.36 }, - { "time": 0.2, "angle": 59.37 }, - { "time": 0.2666, "angle": 8.56 }, - { "time": 0.3333, "angle": 9.38 }, - { "time": 0.4, "angle": 11.51 }, - { "time": 0.4666, "angle": 7.22 }, - { "time": 0.5333, "angle": -18.44 }, - { "time": 0.6, "angle": 11.44 }, - { "time": 0.6666, "angle": 9.99 }, - { "time": 0.7333, "angle": 8.28 }, - { "time": 0.8, "angle": 31.04 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.8, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "neck": { - "rotate": [ - { "time": 0, "angle": 11.03 }, - { "time": 0.2, "angle": 13.58 }, - { "time": 0.4, "angle": 11.03 }, - { "time": 0.6, "angle": 13.58 }, - { "time": 0.8, "angle": 11.03 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.4, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.8, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "head": { - "rotate": [ - { "time": 0, "angle": 11.03 }, - { "time": 0.1, "angle": 12.34 }, - { "time": 0.2, "angle": 25.55 }, - { "time": 0.4, "angle": 11.03 }, - { "time": 0.5, "angle": 12.34 }, - { "time": 0.6, "angle": 25.55 }, - { "time": 0.8, "angle": 11.03 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.4, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.8, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "hip": { - "rotate": [ - { "time": 0, "angle": 0, "curve": "stepped" }, - { "time": 0.8, "angle": 0 } - ], - "translate": [ - { "time": 0, "x": -62.47, "y": -23.1 }, - { - "time": 0.0666, - "x": -62.47, - "y": -38.51, - "curve": [ 0.244, 0.04, 0.75, 1 ] - }, - { - "time": 0.2666, - "x": -62.47, - "y": 22.28, - "curve": [ 0.17, 0.52, 0.75, 1 ] - }, - { "time": 0.4, "x": -62.47, "y": -23.1 }, - { "time": 0.4333, "x": -62.47, "y": -24.59 }, - { - "time": 0.4666, - "x": -62.47, - "y": -43.29, - "curve": [ 0.25, 0, 0.75, 1 ] - }, - { "time": 0.6666, "x": -62.47, "y": 22.28 }, - { "time": 0.8, "x": -62.47, "y": -23.1 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "front_shin": { - "rotate": [ - { - "time": 0, - "angle": 0, - "curve": [ 0.481, 0.01, 0.75, 1 ] - }, - { "time": 0.0666, "angle": -64.42 }, - { - "time": 0.1333, - "angle": -20.59, - "curve": [ 0.25, 0, 0.75, 1 ] - }, - { "time": 0.2666, "angle": -62.51 }, - { "time": 0.3333, "angle": -79.74 }, - { "time": 0.4, "angle": -78.28 }, - { - "time": 0.4666, - "angle": -118.96, - "curve": [ 0.93, 0, 0.952, 0.95 ] - }, - { "time": 0.6, "angle": -88.95 }, - { "time": 0.6666, "angle": -79.09 }, - { "time": 0.7333, "angle": -47.77 }, - { "time": 0.8, "angle": 0 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.8, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "front_foot": { - "rotate": [ - { "time": 0, "angle": 0 }, - { - "time": 0.0333, - "angle": -21.13, - "curve": [ 0.121, 0.23, 0.75, 1 ] - }, - { "time": 0.0666, "angle": 17.64 }, - { "time": 0.1, "angle": 29.92 }, - { "time": 0.1333, "angle": 16.44 }, - { "time": 0.2, "angle": -29.22 }, - { "time": 0.2666, "angle": -1.61 }, - { "time": 0.3333, "angle": -10.22 }, - { "time": 0.4666, "angle": -15.99 }, - { "time": 0.6, "angle": 9.03 }, - { "time": 0.7333, "angle": 17.32 }, - { "time": 0.8, "angle": 0 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.8, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "rear_foot": { - "rotate": [ - { "time": 0, "angle": 0 }, - { "time": 0.0666, "angle": -12.04 }, - { "time": 0.1333, "angle": -0.87 }, - { "time": 0.2, "angle": 25.81 }, - { "time": 0.2666, "angle": 4.71 }, - { - "time": 0.4, - "angle": 18.09, - "curve": [ 0.281, 0.73, 0.75, 1 ] - }, - { "time": 0.4333, "angle": -1.7 }, - { "time": 0.4666, "angle": 27.12 }, - { "time": 0.5, "angle": 38.83 }, - { "time": 0.5333, "angle": 30.76 }, - { "time": 0.5666, "angle": -20.49 }, - { "time": 0.6, "angle": -30.8 }, - { "time": 0.6666, "angle": -1.31 }, - { "time": 0.8, "angle": 0 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.8, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "gun": { - "rotate": [ - { "time": 0, "angle": 0 }, - { "time": 0.1333, "angle": 24.72 }, - { "time": 0.5, "angle": -11.87 }, - { "time": 0.8, "angle": 0 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.8, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - } - }, - "events": [ - { "time": 0, "name": "footstep" }, - { "time": 0.4, "name": "footstep", "int": 1 } - ] - }, - "shoot": { - "slots": { - "front_fist": { - "attachment": [ - { "time": 0.1333, "name": "front_fist_closed" }, - { "time": 0.4, "name": "front_fist_open" } - ] - }, - "mouth": { - "attachment": [ - { "time": 0.1333, "name": "mouth_grind" } - ] - }, - "muzzle": { - "attachment": [ - { "time": 0.1333, "name": "muzzle" }, - { "time": 0.2666, "name": null } - ], - "color": [ - { - "time": 0.1333, - "color": "ffffff00", - "curve": [ 0.118, 0.99, 0.75, 1 ] - }, - { - "time": 0.1666, - "color": "ffffffff", - "curve": [ 0.821, 0, 0.909, 0.89 ] - }, - { "time": 0.2666, "color": "ffffff00" } - ] - } - }, - "bones": { - "front_fist": { - "scale": [ - { "time": 0.1333, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.4, "x": 1, "y": 1 } - ] - }, - "gunTip": { - "translate": [ - { "time": 0.1333, "x": 0, "y": 0 }, - { "time": 0.2, "x": 20.93, "y": 1.57 } - ], - "scale": [ - { "time": 0.1333, "x": 1, "y": 1 }, - { "time": 0.2, "x": 1.247, "y": 1.516 } - ] - }, - "gun": { - "rotate": [ - { "time": 0, "angle": 1.9 } - ], - "translate": [ - { - "time": 0, - "x": 7.95, - "y": 5.84, - "curve": [ 0, 0.3, 0.678, 1 ] - }, - { "time": 0.3, "x": -9.3, "y": -1.41 }, - { "time": 0.4, "x": 0, "y": 0 } - ] - }, - "rear_bracer": { - "rotate": [ - { "time": 0, "angle": -30.47 } - ], - "translate": [ - { - "time": 0, - "x": 0, - "y": 0, - "curve": [ 0, 0.3, 0.678, 1 ] - }, - { "time": 0.3, "x": -5.99, "y": -3.71 }, - { "time": 0.4, "x": 0, "y": 0 } - ] - }, - "rear_upper_arm": { - "rotate": [ - { "time": 0, "angle": 62.3 } - ], - "translate": [ - { - "time": 0, - "x": 0, - "y": 0, - "curve": [ 0, 0.3, 0.678, 1 ] - }, - { "time": 0.3, "x": 2.81, "y": 11.41 }, - { "time": 0.4, "x": 0, "y": 0 } - ] - } - } - }, - "test": { - "slots": { - "front_foot": { - "color": [ - { "time": 0.6666, "color": "ffffffff" }, - { "time": 1.3333, "color": "ff0700ff" } - ] - }, - "gun": { - "color": [ - { "time": 0, "color": "ffffffff", "curve": "stepped" }, - { "time": 0.6666, "color": "ffffffff" }, - { "time": 1.3333, "color": "32ff00ff" } - ] - }, - "rear_foot": { - "color": [ - { "time": 0.6666, "color": "ffffffff" }, - { "time": 1.3333, "color": "ff0700ff" } - ] - } - }, - "bones": { - "head": { - "rotate": [ - { "time": 0, "angle": 0 }, - { "time": 0.3333, "angle": -20.72 }, - { "time": 0.6666, "angle": -32.41 }, - { "time": 1, "angle": -5.3 }, - { "time": 1.3333, "angle": 24.96 }, - { "time": 1.6666, "angle": 15.61 }, - { "time": 2, "angle": 0 } - ], - "translate": [ - { - "time": 0, - "x": 0, - "y": 0, - "curve": [ 0.172, 0.37, 0.574, 0.73 ] - }, - { - "time": 0.1666, - "x": 144.19, - "y": -77.59, - "curve": [ 0.372, 0.61, 0.765, 1 ] - }, - { - "time": 0.3333, - "x": 217.61, - "y": -192.63, - "curve": [ 0.282, 0, 0.624, 0.31 ] - }, - { - "time": 0.5, - "x": 181.21, - "y": -365.66, - "curve": [ 0.313, 0.21, 0.654, 0.54 ] - }, - { - "time": 0.6666, - "x": 20.09, - "y": -500.4, - "curve": [ 0.147, 0.27, 0.75, 1 ] - }, - { "time": 0.8333, "x": -194.24, "y": -341.84 }, - { "time": 1, "x": -307.93, "y": -114 }, - { - "time": 1.1666, - "x": -330.38, - "y": 121.42, - "curve": [ 0.25, 0, 0.764, 0.48 ] - }, - { - "time": 1.3333, - "x": -240.42, - "y": 335.66, - "curve": [ 0.229, 0.37, 0.58, 0.73 ] - }, - { - "time": 1.5, - "x": -56.12, - "y": 288.06, - "curve": [ 0.296, 0.6, 0.641, 1 ] - }, - { - "time": 1.6666, - "x": 87.63, - "y": 191.33, - "curve": [ 0.238, 0, 0.626, 0.39 ] - }, - { - "time": 1.8333, - "x": 60.62, - "y": 95.14, - "curve": [ 0.41, 0.26, 0.803, 0.62 ] - }, - { "time": 2, "x": 0, "y": 0 } - ] - } - }, - "draworder": [ - { - "time": 0.6666, - "offsets": [ - { "slot": "head", "offset": -9 }, - { "slot": "eye", "offset": -9 }, - { "slot": "mouth", "offset": -12 }, - { "slot": "goggles", "offset": -12 } - ] - }, - { "time": 1.3333 } - ], - "events": [ - { "time": 0, "name": "headPop", "int": 0, "float": 0, "string": "pop.wav" }, - { "time": 1, "name": "headBehind", "int": 7, "float": 8, "string": "animate" }, - { "time": 2, "name": "headAttach", "int": 0, "float": 0, "string": "attach.wav" } - ] - }, - "walk": { - "slots": { - "front_fist": { - "attachment": [ - { "time": 0, "name": "front_fist_closed" } - ] - }, - "mouth": { - "attachment": [ - { "time": 0, "name": "mouth_smile" } - ] - }, - "torso": { - "attachment": [ - { "time": 0, "name": "torso" } - ] - } - }, - "bones": { - "front_thigh": { - "rotate": [ - { "time": 0, "angle": 15.79 }, - { "time": 0.1, "angle": 27.39 }, - { "time": 0.2, "angle": -7.94 }, - { "time": 0.3, "angle": -16.94 }, - { "time": 0.4, "angle": -28.62 }, - { "time": 0.5, "angle": -19.3 }, - { "time": 0.6, "angle": -3.08 }, - { "time": 0.7, "angle": 29.51 }, - { "time": 0.8, "angle": 15.79 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 }, - { "time": 0.4, "x": -1.18, "y": 0.54 }, - { "time": 0.5, "x": 0.11, "y": 0.41 }, - { "time": 0.6, "x": 9.48, "y": 0.27 }, - { "time": 0.8, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.4, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "front_shin": { - "rotate": [ - { "time": 0, "angle": 5.12 }, - { "time": 0.1, "angle": -20.87 }, - { "time": 0.2, "angle": 13.37 }, - { "time": 0.3, "angle": 15.98 }, - { "time": 0.4, "angle": 5.94 }, - { "time": 0.5, "angle": -26.76 }, - { "time": 0.7, "angle": -55.44 }, - { "time": 0.8, "angle": 5.12 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.8, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "rear_thigh": { - "rotate": [ - { "time": 0, "angle": -34.38 }, - { "time": 0.1, "angle": -30.32 }, - { "time": 0.2, "angle": -37.22 }, - { "time": 0.3, "angle": 20.73 }, - { "time": 0.4, "angle": 8.69 }, - { "time": 0.5, "angle": 12.16 }, - { "time": 0.6, "angle": -24.62 }, - { "time": 0.7, "angle": -27.26 }, - { "time": 0.8, "angle": -34.38 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 }, - { "time": 0.4, "x": 4.08, "y": -9.53 }, - { "time": 0.5, "x": 0, "y": 0 }, - { "time": 0.7, "x": -21.14, "y": -9.6 }, - { "time": 0.8, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "rear_shin": { - "rotate": [ - { "time": 0, "angle": 14.26 }, - { "time": 0.1, "angle": -17.3 }, - { "time": 0.2, "angle": -12.67 }, - { "time": 0.3, "angle": -58.89 }, - { "time": 0.4, "angle": 15.95 }, - { "time": 0.5, "angle": -9 }, - { "time": 0.6, "angle": 26.06 }, - { "time": 0.7, "angle": 21.85 }, - { "time": 0.8, "angle": 14.26 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.8, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 }, - { "time": 0.1, "x": 0.951, "y": 1 }, - { "time": 0.5, "x": 0.975, "y": 1 }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "rear_foot": { - "rotate": [ - { "time": 0, "angle": 10.13 }, - { "time": 0.1, "angle": 12.27 }, - { "time": 0.2, "angle": -2.94 }, - { "time": 0.3, "angle": 6.29 }, - { "time": 0.4, "angle": 13.45 }, - { "time": 0.5, "angle": -3.57 }, - { "time": 0.6, "angle": -0.97 }, - { "time": 0.7, "angle": 2.97 }, - { "time": 0.8, "angle": 10.13 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.8, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "front_upper_arm": { - "rotate": [ - { "time": 0, "angle": -23.74 }, - { "time": 0.4, "angle": -320.57 }, - { "time": 0.8, "angle": -23.74 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.8, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "rear_upper_arm": { - "rotate": [ - { "time": 0, "angle": 11.62 }, - { "time": 0.1, "angle": 19.36 }, - { "time": 0.4, "angle": 345.26 }, - { "time": 0.5, "angle": 343.44 }, - { "time": 0.8, "angle": 11.62 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.8, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "torso": { - "rotate": [ - { "time": 0, "angle": -12.11 }, - { "time": 0.1666, "angle": -17.16 }, - { "time": 0.4, "angle": -12.11 }, - { "time": 0.5666, "angle": -15.81 }, - { "time": 0.8, "angle": -12.11 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "neck": { - "rotate": [ - { "time": 0, "angle": 1.41 }, - { "time": 0.2333, "angle": -3.04 }, - { "time": 0.4, "angle": 1.41 }, - { "time": 0.6333, "angle": -3.04 }, - { "time": 0.8, "angle": 1.41 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.4, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.8, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "head": { - "rotate": [ - { "time": 0, "angle": 6.97 }, - { "time": 0.1666, "angle": 8.02 }, - { "time": 0.2666, "angle": 12.65 }, - { "time": 0.4, "angle": 6.97 }, - { "time": 0.5666, "angle": 8.02 }, - { "time": 0.6666, "angle": 12.65 }, - { "time": 0.8, "angle": 6.97 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.4, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.8, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "hip": { - "rotate": [ - { "time": 0, "angle": 0, "curve": "stepped" }, - { "time": 0.8, "angle": 0 } - ], - "translate": [ - { - "time": 0, - "x": -23.93, - "y": 3.22, - "curve": [ 0.518, 0.03, 0.807, 0.61 ] - }, - { - "time": 0.1, - "x": -23.93, - "y": -9.24, - "curve": [ 0.135, 0.33, 0.601, 0.99 ] - }, - { - "time": 0.2, - "x": -23.93, - "y": 4.35, - "curve": [ 0.204, 0.68, 0.75, 1 ] - }, - { - "time": 0.3, - "x": -23.93, - "y": 2.38, - "curve": [ 0.25, 0, 0.75, 1 ] - }, - { - "time": 0.4, - "x": -23.93, - "y": -2.5, - "curve": [ 0.692, 0.01, 0.75, 1 ] - }, - { - "time": 0.5, - "x": -23.93, - "y": -10.32, - "curve": [ 0.235, 0.77, 0.75, 1 ] - }, - { - "time": 0.6, - "x": -23.93, - "y": 4.35, - "curve": [ 0.287, 0.37, 0.718, 0.76 ] - }, - { - "time": 0.7, - "x": -23.93, - "y": 10.34, - "curve": [ 0.615, 0, 0.75, 1 ] - }, - { "time": 0.8, "x": -23.93, "y": 3.22 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "front_bracer": { - "rotate": [ - { "time": 0, "angle": 0 }, - { "time": 0.4, "angle": 20.59 }, - { "time": 0.8, "angle": 0 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.8, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "front_foot": { - "rotate": [ - { "time": 0, "angle": 12.49 }, - { "time": 0.1, "angle": -8.34 }, - { "time": 0.2, "angle": -6.17 }, - { "time": 0.3, "angle": -0.75 }, - { "time": 0.3333, "angle": 3.89 }, - { "time": 0.4, "angle": 10.22 }, - { "time": 0.5, "angle": 11.44 }, - { "time": 0.6, "angle": -0.33 }, - { "time": 0.7, "angle": 0.15 }, - { "time": 0.8, "angle": 12.49 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.8, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "rear_bracer": { - "rotate": [ - { "time": 0, "angle": 3.58 }, - { "time": 0.1, "angle": 5.51 }, - { "time": 0.4, "angle": -22.77 }, - { "time": 0.5, "angle": -9.65 }, - { "time": 0.8, "angle": 3.58 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.8, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "front_fist": { - "rotate": [ - { "time": 0, "angle": -15.22 }, - { "time": 0.1, "angle": -51.4 }, - { "time": 0.4, "angle": -39.4 }, - { "time": 0.5, "angle": 19.26 }, - { "time": 0.8, "angle": -15.22 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.8, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "gun": { - "rotate": [ - { - "time": 0, - "angle": -24.06, - "curve": [ 0.25, 0, 0.75, 1 ] - }, - { - "time": 0.1, - "angle": -10.94, - "curve": [ 0.381, 0.54, 0.742, 1 ] - }, - { - "time": 0.4, - "angle": 25.34, - "curve": [ 0.25, 0, 0.75, 1 ] - }, - { - "time": 0.6666, - "angle": -27.47, - "curve": [ 0.25, 0, 0.75, 1 ] - }, - { "time": 0.8, "angle": -24.06 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.8, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - } - } - } -} -} \ No newline at end of file diff --git a/spine-cocos2dx/3.1/example/Resources/common/sprite.png b/spine-cocos2dx/3.1/example/Resources/common/sprite.png deleted file mode 100644 index 91dd46533..000000000 Binary files a/spine-cocos2dx/3.1/example/Resources/common/sprite.png and /dev/null differ diff --git a/spine-cocos2dx/3.1/example/Resources/ipad-retina/goblins-ffd.atlas b/spine-cocos2dx/3.1/example/Resources/ipad-retina/goblins-ffd.atlas deleted file mode 100644 index b977b07f6..000000000 --- a/spine-cocos2dx/3.1/example/Resources/ipad-retina/goblins-ffd.atlas +++ /dev/null @@ -1,292 +0,0 @@ - -goblins-ffd.png -format: RGBA8888 -filter: Linear,Linear -repeat: none -dagger - rotate: false - xy: 2, 28 - size: 26, 108 - orig: 26, 108 - offset: 0, 0 - index: -1 -goblin/eyes-closed - rotate: false - xy: 137, 29 - size: 34, 12 - orig: 34, 12 - offset: 0, 0 - index: -1 -goblin/head - rotate: false - xy: 26, 357 - size: 103, 66 - orig: 103, 66 - offset: 0, 0 - index: -1 -goblin/left-arm - rotate: false - xy: 30, 28 - size: 37, 35 - orig: 37, 35 - offset: 0, 0 - index: -1 -goblin/left-foot - rotate: false - xy: 134, 260 - size: 65, 31 - orig: 65, 31 - offset: 0, 0 - index: -1 -goblin/left-hand - rotate: false - xy: 69, 25 - size: 36, 41 - orig: 36, 41 - offset: 0, 0 - index: -1 -goblin/left-lower-leg - rotate: false - xy: 134, 293 - size: 33, 70 - orig: 33, 70 - offset: 0, 0 - index: -1 -goblin/left-shoulder - rotate: false - xy: 137, 43 - size: 29, 44 - orig: 29, 44 - offset: 0, 0 - index: -1 -goblin/left-upper-leg - rotate: false - xy: 30, 65 - size: 33, 73 - orig: 33, 73 - offset: 0, 0 - index: -1 -goblin/neck - rotate: false - xy: 201, 387 - size: 36, 41 - orig: 36, 41 - offset: 0, 0 - index: -1 -goblin/pelvis - rotate: false - xy: 26, 140 - size: 62, 43 - orig: 62, 43 - offset: 0, 0 - index: -1 -goblin/right-arm - rotate: false - xy: 171, 84 - size: 23, 50 - orig: 23, 50 - offset: 0, 0 - index: -1 -goblin/right-foot - rotate: false - xy: 134, 225 - size: 63, 33 - orig: 63, 33 - offset: 0, 0 - index: -1 -goblin/right-hand - rotate: false - xy: 204, 258 - size: 36, 37 - orig: 36, 37 - offset: 0, 0 - index: -1 -goblin/right-lower-leg - rotate: false - xy: 201, 430 - size: 36, 76 - orig: 36, 76 - offset: 0, 0 - index: -1 -goblin/right-shoulder - rotate: false - xy: 130, 89 - size: 39, 45 - orig: 39, 45 - offset: 0, 0 - index: -1 -goblin/right-upper-leg - rotate: false - xy: 98, 214 - size: 34, 63 - orig: 34, 63 - offset: 0, 0 - index: -1 -goblin/torso - rotate: false - xy: 131, 410 - size: 68, 96 - orig: 68, 96 - offset: 0, 0 - index: -1 -goblin/undie-straps - rotate: false - xy: 2, 7 - size: 55, 19 - orig: 55, 19 - offset: 0, 0 - index: -1 -goblin/undies - rotate: false - xy: 199, 227 - size: 36, 29 - orig: 36, 29 - offset: 0, 0 - index: -1 -goblingirl/eyes-closed - rotate: false - xy: 59, 2 - size: 37, 21 - orig: 37, 21 - offset: 0, 0 - index: -1 -goblingirl/head - rotate: false - xy: 26, 425 - size: 103, 81 - orig: 103, 81 - offset: 0, 0 - index: -1 -goblingirl/left-arm - rotate: false - xy: 201, 190 - size: 37, 35 - orig: 37, 35 - offset: 0, 0 - index: -1 -goblingirl/left-foot - rotate: false - xy: 134, 192 - size: 65, 31 - orig: 65, 31 - offset: 0, 0 - index: -1 -goblingirl/left-hand - rotate: false - xy: 196, 109 - size: 35, 40 - orig: 35, 40 - offset: 0, 0 - index: -1 -goblingirl/left-lower-leg - rotate: false - xy: 169, 293 - size: 33, 70 - orig: 33, 70 - offset: 0, 0 - index: -1 -goblingirl/left-shoulder - rotate: false - xy: 107, 30 - size: 28, 46 - orig: 28, 46 - offset: 0, 0 - index: -1 -goblingirl/left-upper-leg - rotate: false - xy: 65, 68 - size: 33, 70 - orig: 33, 70 - offset: 0, 0 - index: -1 -goblingirl/neck - rotate: false - xy: 204, 297 - size: 35, 41 - orig: 35, 41 - offset: 0, 0 - index: -1 -goblingirl/pelvis - rotate: false - xy: 131, 365 - size: 62, 43 - orig: 62, 43 - offset: 0, 0 - index: -1 -goblingirl/right-arm - rotate: false - xy: 100, 97 - size: 28, 50 - orig: 28, 50 - offset: 0, 0 - index: -1 -goblingirl/right-foot - rotate: false - xy: 134, 157 - size: 63, 33 - orig: 63, 33 - offset: 0, 0 - index: -1 -goblingirl/right-hand - rotate: false - xy: 199, 151 - size: 36, 37 - orig: 36, 37 - offset: 0, 0 - index: -1 -goblingirl/right-lower-leg - rotate: false - xy: 96, 279 - size: 36, 76 - orig: 36, 76 - offset: 0, 0 - index: -1 -goblingirl/right-shoulder - rotate: false - xy: 204, 340 - size: 39, 45 - orig: 39, 45 - offset: 0, 0 - index: -1 -goblingirl/right-upper-leg - rotate: false - xy: 98, 149 - size: 34, 63 - orig: 34, 63 - offset: 0, 0 - index: -1 -goblingirl/torso - rotate: false - xy: 26, 259 - size: 68, 96 - orig: 68, 96 - offset: 0, 0 - index: -1 -goblingirl/undie-straps - rotate: false - xy: 134, 136 - size: 55, 19 - orig: 55, 19 - offset: 0, 0 - index: -1 -goblingirl/undies - rotate: false - xy: 196, 78 - size: 36, 29 - orig: 36, 29 - offset: 0, 0 - index: -1 -shield - rotate: false - xy: 26, 185 - size: 70, 72 - orig: 70, 72 - offset: 0, 0 - index: -1 -spear - rotate: false - xy: 2, 138 - size: 22, 368 - orig: 22, 368 - offset: 0, 0 - index: -1 diff --git a/spine-cocos2dx/3.1/example/Resources/ipad-retina/goblins-ffd.png b/spine-cocos2dx/3.1/example/Resources/ipad-retina/goblins-ffd.png deleted file mode 100644 index f172361f2..000000000 Binary files a/spine-cocos2dx/3.1/example/Resources/ipad-retina/goblins-ffd.png and /dev/null differ diff --git a/spine-cocos2dx/3.1/example/Resources/ipad-retina/spineboy.atlas b/spine-cocos2dx/3.1/example/Resources/ipad-retina/spineboy.atlas deleted file mode 100644 index 19c0934b1..000000000 --- a/spine-cocos2dx/3.1/example/Resources/ipad-retina/spineboy.atlas +++ /dev/null @@ -1,194 +0,0 @@ - -spineboy.png -format: RGBA8888 -filter: Linear,Linear -repeat: none -eye_indifferent - rotate: true - xy: 389, 5 - size: 56, 53 - orig: 56, 53 - offset: 0, 0 - index: -1 -eye_surprised - rotate: false - xy: 580, 34 - size: 56, 53 - orig: 56, 53 - offset: 0, 0 - index: -1 -front_bracer - rotate: false - xy: 732, 85 - size: 35, 48 - orig: 35, 48 - offset: 0, 0 - index: -1 -front_fist_closed - rotate: false - xy: 556, 91 - size: 45, 49 - orig: 45, 49 - offset: 0, 0 - index: -1 -front_fist_open - rotate: false - xy: 668, 32 - size: 52, 52 - orig: 52, 52 - offset: 0, 0 - index: -1 -front_foot - rotate: false - xy: 924, 201 - size: 76, 41 - orig: 76, 41 - offset: 0, 0 - index: -1 -front_foot_bend1 - rotate: false - xy: 845, 200 - size: 77, 42 - orig: 77, 42 - offset: 0, 0 - index: -1 -front_foot_bend2 - rotate: false - xy: 778, 186 - size: 65, 56 - orig: 65, 56 - offset: 0, 0 - index: -1 -front_shin - rotate: true - xy: 444, 91 - size: 49, 110 - orig: 49, 110 - offset: 0, 0 - index: -1 -front_thigh - rotate: true - xy: 603, 89 - size: 29, 67 - orig: 29, 67 - offset: 0, 0 - index: -1 -front_upper_arm - rotate: true - xy: 672, 86 - size: 32, 58 - orig: 32, 58 - offset: 0, 0 - index: -1 -goggles - rotate: false - xy: 444, 142 - size: 157, 100 - orig: 157, 100 - offset: 0, 0 - index: -1 -gun - rotate: false - xy: 603, 120 - size: 126, 122 - orig: 126, 122 - offset: 0, 0 - index: -1 -head - rotate: false - xy: 279, 63 - size: 163, 179 - orig: 163, 179 - offset: 0, 0 - index: -1 -mouth_grind - rotate: false - xy: 845, 163 - size: 56, 35 - orig: 56, 35 - offset: 0, 0 - index: -1 -mouth_oooo - rotate: false - xy: 842, 126 - size: 56, 35 - orig: 56, 35 - offset: 0, 0 - index: -1 -mouth_smile - rotate: false - xy: 769, 97 - size: 56, 35 - orig: 56, 35 - offset: 0, 0 - index: -1 -muzzle - rotate: false - xy: 2, 2 - size: 275, 240 - orig: 277, 240 - offset: 0, 0 - index: -1 -neck - rotate: false - xy: 903, 173 - size: 22, 25 - orig: 22, 25 - offset: 0, 0 - index: -1 -rear_bracer - rotate: false - xy: 722, 40 - size: 34, 43 - orig: 34, 43 - offset: 0, 0 - index: -1 -rear_foot - rotate: false - xy: 444, 11 - size: 68, 36 - orig: 68, 36 - offset: 0, 0 - index: -1 -rear_foot_bend1 - rotate: false - xy: 444, 49 - size: 70, 40 - orig: 70, 40 - offset: 0, 0 - index: -1 -rear_foot_bend2 - rotate: false - xy: 778, 134 - size: 62, 50 - orig: 62, 50 - offset: 0, 0 - index: -1 -rear_shin - rotate: false - xy: 731, 135 - size: 45, 107 - orig: 45, 107 - offset: 0, 0 - index: -1 -rear_thigh - rotate: true - xy: 516, 50 - size: 39, 62 - orig: 39, 62 - offset: 0, 0 - index: -1 -rear_upper_arm - rotate: false - xy: 638, 35 - size: 28, 52 - orig: 28, 52 - offset: 0, 0 - index: -1 -torso - rotate: true - xy: 279, 2 - size: 59, 108 - orig: 59, 108 - offset: 0, 0 - index: -1 diff --git a/spine-cocos2dx/3.1/example/Resources/ipad-retina/spineboy.png b/spine-cocos2dx/3.1/example/Resources/ipad-retina/spineboy.png deleted file mode 100644 index b43262310..000000000 Binary files a/spine-cocos2dx/3.1/example/Resources/ipad-retina/spineboy.png and /dev/null differ diff --git a/spine-cocos2dx/3.1/example/Resources/ipad/goblins-ffd.atlas b/spine-cocos2dx/3.1/example/Resources/ipad/goblins-ffd.atlas deleted file mode 100644 index b977b07f6..000000000 --- a/spine-cocos2dx/3.1/example/Resources/ipad/goblins-ffd.atlas +++ /dev/null @@ -1,292 +0,0 @@ - -goblins-ffd.png -format: RGBA8888 -filter: Linear,Linear -repeat: none -dagger - rotate: false - xy: 2, 28 - size: 26, 108 - orig: 26, 108 - offset: 0, 0 - index: -1 -goblin/eyes-closed - rotate: false - xy: 137, 29 - size: 34, 12 - orig: 34, 12 - offset: 0, 0 - index: -1 -goblin/head - rotate: false - xy: 26, 357 - size: 103, 66 - orig: 103, 66 - offset: 0, 0 - index: -1 -goblin/left-arm - rotate: false - xy: 30, 28 - size: 37, 35 - orig: 37, 35 - offset: 0, 0 - index: -1 -goblin/left-foot - rotate: false - xy: 134, 260 - size: 65, 31 - orig: 65, 31 - offset: 0, 0 - index: -1 -goblin/left-hand - rotate: false - xy: 69, 25 - size: 36, 41 - orig: 36, 41 - offset: 0, 0 - index: -1 -goblin/left-lower-leg - rotate: false - xy: 134, 293 - size: 33, 70 - orig: 33, 70 - offset: 0, 0 - index: -1 -goblin/left-shoulder - rotate: false - xy: 137, 43 - size: 29, 44 - orig: 29, 44 - offset: 0, 0 - index: -1 -goblin/left-upper-leg - rotate: false - xy: 30, 65 - size: 33, 73 - orig: 33, 73 - offset: 0, 0 - index: -1 -goblin/neck - rotate: false - xy: 201, 387 - size: 36, 41 - orig: 36, 41 - offset: 0, 0 - index: -1 -goblin/pelvis - rotate: false - xy: 26, 140 - size: 62, 43 - orig: 62, 43 - offset: 0, 0 - index: -1 -goblin/right-arm - rotate: false - xy: 171, 84 - size: 23, 50 - orig: 23, 50 - offset: 0, 0 - index: -1 -goblin/right-foot - rotate: false - xy: 134, 225 - size: 63, 33 - orig: 63, 33 - offset: 0, 0 - index: -1 -goblin/right-hand - rotate: false - xy: 204, 258 - size: 36, 37 - orig: 36, 37 - offset: 0, 0 - index: -1 -goblin/right-lower-leg - rotate: false - xy: 201, 430 - size: 36, 76 - orig: 36, 76 - offset: 0, 0 - index: -1 -goblin/right-shoulder - rotate: false - xy: 130, 89 - size: 39, 45 - orig: 39, 45 - offset: 0, 0 - index: -1 -goblin/right-upper-leg - rotate: false - xy: 98, 214 - size: 34, 63 - orig: 34, 63 - offset: 0, 0 - index: -1 -goblin/torso - rotate: false - xy: 131, 410 - size: 68, 96 - orig: 68, 96 - offset: 0, 0 - index: -1 -goblin/undie-straps - rotate: false - xy: 2, 7 - size: 55, 19 - orig: 55, 19 - offset: 0, 0 - index: -1 -goblin/undies - rotate: false - xy: 199, 227 - size: 36, 29 - orig: 36, 29 - offset: 0, 0 - index: -1 -goblingirl/eyes-closed - rotate: false - xy: 59, 2 - size: 37, 21 - orig: 37, 21 - offset: 0, 0 - index: -1 -goblingirl/head - rotate: false - xy: 26, 425 - size: 103, 81 - orig: 103, 81 - offset: 0, 0 - index: -1 -goblingirl/left-arm - rotate: false - xy: 201, 190 - size: 37, 35 - orig: 37, 35 - offset: 0, 0 - index: -1 -goblingirl/left-foot - rotate: false - xy: 134, 192 - size: 65, 31 - orig: 65, 31 - offset: 0, 0 - index: -1 -goblingirl/left-hand - rotate: false - xy: 196, 109 - size: 35, 40 - orig: 35, 40 - offset: 0, 0 - index: -1 -goblingirl/left-lower-leg - rotate: false - xy: 169, 293 - size: 33, 70 - orig: 33, 70 - offset: 0, 0 - index: -1 -goblingirl/left-shoulder - rotate: false - xy: 107, 30 - size: 28, 46 - orig: 28, 46 - offset: 0, 0 - index: -1 -goblingirl/left-upper-leg - rotate: false - xy: 65, 68 - size: 33, 70 - orig: 33, 70 - offset: 0, 0 - index: -1 -goblingirl/neck - rotate: false - xy: 204, 297 - size: 35, 41 - orig: 35, 41 - offset: 0, 0 - index: -1 -goblingirl/pelvis - rotate: false - xy: 131, 365 - size: 62, 43 - orig: 62, 43 - offset: 0, 0 - index: -1 -goblingirl/right-arm - rotate: false - xy: 100, 97 - size: 28, 50 - orig: 28, 50 - offset: 0, 0 - index: -1 -goblingirl/right-foot - rotate: false - xy: 134, 157 - size: 63, 33 - orig: 63, 33 - offset: 0, 0 - index: -1 -goblingirl/right-hand - rotate: false - xy: 199, 151 - size: 36, 37 - orig: 36, 37 - offset: 0, 0 - index: -1 -goblingirl/right-lower-leg - rotate: false - xy: 96, 279 - size: 36, 76 - orig: 36, 76 - offset: 0, 0 - index: -1 -goblingirl/right-shoulder - rotate: false - xy: 204, 340 - size: 39, 45 - orig: 39, 45 - offset: 0, 0 - index: -1 -goblingirl/right-upper-leg - rotate: false - xy: 98, 149 - size: 34, 63 - orig: 34, 63 - offset: 0, 0 - index: -1 -goblingirl/torso - rotate: false - xy: 26, 259 - size: 68, 96 - orig: 68, 96 - offset: 0, 0 - index: -1 -goblingirl/undie-straps - rotate: false - xy: 134, 136 - size: 55, 19 - orig: 55, 19 - offset: 0, 0 - index: -1 -goblingirl/undies - rotate: false - xy: 196, 78 - size: 36, 29 - orig: 36, 29 - offset: 0, 0 - index: -1 -shield - rotate: false - xy: 26, 185 - size: 70, 72 - orig: 70, 72 - offset: 0, 0 - index: -1 -spear - rotate: false - xy: 2, 138 - size: 22, 368 - orig: 22, 368 - offset: 0, 0 - index: -1 diff --git a/spine-cocos2dx/3.1/example/Resources/ipad/goblins-ffd.png b/spine-cocos2dx/3.1/example/Resources/ipad/goblins-ffd.png deleted file mode 100644 index f172361f2..000000000 Binary files a/spine-cocos2dx/3.1/example/Resources/ipad/goblins-ffd.png and /dev/null differ diff --git a/spine-cocos2dx/3.1/example/Resources/ipad/spineboy.atlas b/spine-cocos2dx/3.1/example/Resources/ipad/spineboy.atlas deleted file mode 100644 index 19c0934b1..000000000 --- a/spine-cocos2dx/3.1/example/Resources/ipad/spineboy.atlas +++ /dev/null @@ -1,194 +0,0 @@ - -spineboy.png -format: RGBA8888 -filter: Linear,Linear -repeat: none -eye_indifferent - rotate: true - xy: 389, 5 - size: 56, 53 - orig: 56, 53 - offset: 0, 0 - index: -1 -eye_surprised - rotate: false - xy: 580, 34 - size: 56, 53 - orig: 56, 53 - offset: 0, 0 - index: -1 -front_bracer - rotate: false - xy: 732, 85 - size: 35, 48 - orig: 35, 48 - offset: 0, 0 - index: -1 -front_fist_closed - rotate: false - xy: 556, 91 - size: 45, 49 - orig: 45, 49 - offset: 0, 0 - index: -1 -front_fist_open - rotate: false - xy: 668, 32 - size: 52, 52 - orig: 52, 52 - offset: 0, 0 - index: -1 -front_foot - rotate: false - xy: 924, 201 - size: 76, 41 - orig: 76, 41 - offset: 0, 0 - index: -1 -front_foot_bend1 - rotate: false - xy: 845, 200 - size: 77, 42 - orig: 77, 42 - offset: 0, 0 - index: -1 -front_foot_bend2 - rotate: false - xy: 778, 186 - size: 65, 56 - orig: 65, 56 - offset: 0, 0 - index: -1 -front_shin - rotate: true - xy: 444, 91 - size: 49, 110 - orig: 49, 110 - offset: 0, 0 - index: -1 -front_thigh - rotate: true - xy: 603, 89 - size: 29, 67 - orig: 29, 67 - offset: 0, 0 - index: -1 -front_upper_arm - rotate: true - xy: 672, 86 - size: 32, 58 - orig: 32, 58 - offset: 0, 0 - index: -1 -goggles - rotate: false - xy: 444, 142 - size: 157, 100 - orig: 157, 100 - offset: 0, 0 - index: -1 -gun - rotate: false - xy: 603, 120 - size: 126, 122 - orig: 126, 122 - offset: 0, 0 - index: -1 -head - rotate: false - xy: 279, 63 - size: 163, 179 - orig: 163, 179 - offset: 0, 0 - index: -1 -mouth_grind - rotate: false - xy: 845, 163 - size: 56, 35 - orig: 56, 35 - offset: 0, 0 - index: -1 -mouth_oooo - rotate: false - xy: 842, 126 - size: 56, 35 - orig: 56, 35 - offset: 0, 0 - index: -1 -mouth_smile - rotate: false - xy: 769, 97 - size: 56, 35 - orig: 56, 35 - offset: 0, 0 - index: -1 -muzzle - rotate: false - xy: 2, 2 - size: 275, 240 - orig: 277, 240 - offset: 0, 0 - index: -1 -neck - rotate: false - xy: 903, 173 - size: 22, 25 - orig: 22, 25 - offset: 0, 0 - index: -1 -rear_bracer - rotate: false - xy: 722, 40 - size: 34, 43 - orig: 34, 43 - offset: 0, 0 - index: -1 -rear_foot - rotate: false - xy: 444, 11 - size: 68, 36 - orig: 68, 36 - offset: 0, 0 - index: -1 -rear_foot_bend1 - rotate: false - xy: 444, 49 - size: 70, 40 - orig: 70, 40 - offset: 0, 0 - index: -1 -rear_foot_bend2 - rotate: false - xy: 778, 134 - size: 62, 50 - orig: 62, 50 - offset: 0, 0 - index: -1 -rear_shin - rotate: false - xy: 731, 135 - size: 45, 107 - orig: 45, 107 - offset: 0, 0 - index: -1 -rear_thigh - rotate: true - xy: 516, 50 - size: 39, 62 - orig: 39, 62 - offset: 0, 0 - index: -1 -rear_upper_arm - rotate: false - xy: 638, 35 - size: 28, 52 - orig: 28, 52 - offset: 0, 0 - index: -1 -torso - rotate: true - xy: 279, 2 - size: 59, 108 - orig: 59, 108 - offset: 0, 0 - index: -1 diff --git a/spine-cocos2dx/3.1/example/Resources/ipad/spineboy.png b/spine-cocos2dx/3.1/example/Resources/ipad/spineboy.png deleted file mode 100644 index b43262310..000000000 Binary files a/spine-cocos2dx/3.1/example/Resources/ipad/spineboy.png and /dev/null differ diff --git a/spine-cocos2dx/3.1/example/Resources/iphone-retina/goblins-ffd.atlas b/spine-cocos2dx/3.1/example/Resources/iphone-retina/goblins-ffd.atlas deleted file mode 100644 index b977b07f6..000000000 --- a/spine-cocos2dx/3.1/example/Resources/iphone-retina/goblins-ffd.atlas +++ /dev/null @@ -1,292 +0,0 @@ - -goblins-ffd.png -format: RGBA8888 -filter: Linear,Linear -repeat: none -dagger - rotate: false - xy: 2, 28 - size: 26, 108 - orig: 26, 108 - offset: 0, 0 - index: -1 -goblin/eyes-closed - rotate: false - xy: 137, 29 - size: 34, 12 - orig: 34, 12 - offset: 0, 0 - index: -1 -goblin/head - rotate: false - xy: 26, 357 - size: 103, 66 - orig: 103, 66 - offset: 0, 0 - index: -1 -goblin/left-arm - rotate: false - xy: 30, 28 - size: 37, 35 - orig: 37, 35 - offset: 0, 0 - index: -1 -goblin/left-foot - rotate: false - xy: 134, 260 - size: 65, 31 - orig: 65, 31 - offset: 0, 0 - index: -1 -goblin/left-hand - rotate: false - xy: 69, 25 - size: 36, 41 - orig: 36, 41 - offset: 0, 0 - index: -1 -goblin/left-lower-leg - rotate: false - xy: 134, 293 - size: 33, 70 - orig: 33, 70 - offset: 0, 0 - index: -1 -goblin/left-shoulder - rotate: false - xy: 137, 43 - size: 29, 44 - orig: 29, 44 - offset: 0, 0 - index: -1 -goblin/left-upper-leg - rotate: false - xy: 30, 65 - size: 33, 73 - orig: 33, 73 - offset: 0, 0 - index: -1 -goblin/neck - rotate: false - xy: 201, 387 - size: 36, 41 - orig: 36, 41 - offset: 0, 0 - index: -1 -goblin/pelvis - rotate: false - xy: 26, 140 - size: 62, 43 - orig: 62, 43 - offset: 0, 0 - index: -1 -goblin/right-arm - rotate: false - xy: 171, 84 - size: 23, 50 - orig: 23, 50 - offset: 0, 0 - index: -1 -goblin/right-foot - rotate: false - xy: 134, 225 - size: 63, 33 - orig: 63, 33 - offset: 0, 0 - index: -1 -goblin/right-hand - rotate: false - xy: 204, 258 - size: 36, 37 - orig: 36, 37 - offset: 0, 0 - index: -1 -goblin/right-lower-leg - rotate: false - xy: 201, 430 - size: 36, 76 - orig: 36, 76 - offset: 0, 0 - index: -1 -goblin/right-shoulder - rotate: false - xy: 130, 89 - size: 39, 45 - orig: 39, 45 - offset: 0, 0 - index: -1 -goblin/right-upper-leg - rotate: false - xy: 98, 214 - size: 34, 63 - orig: 34, 63 - offset: 0, 0 - index: -1 -goblin/torso - rotate: false - xy: 131, 410 - size: 68, 96 - orig: 68, 96 - offset: 0, 0 - index: -1 -goblin/undie-straps - rotate: false - xy: 2, 7 - size: 55, 19 - orig: 55, 19 - offset: 0, 0 - index: -1 -goblin/undies - rotate: false - xy: 199, 227 - size: 36, 29 - orig: 36, 29 - offset: 0, 0 - index: -1 -goblingirl/eyes-closed - rotate: false - xy: 59, 2 - size: 37, 21 - orig: 37, 21 - offset: 0, 0 - index: -1 -goblingirl/head - rotate: false - xy: 26, 425 - size: 103, 81 - orig: 103, 81 - offset: 0, 0 - index: -1 -goblingirl/left-arm - rotate: false - xy: 201, 190 - size: 37, 35 - orig: 37, 35 - offset: 0, 0 - index: -1 -goblingirl/left-foot - rotate: false - xy: 134, 192 - size: 65, 31 - orig: 65, 31 - offset: 0, 0 - index: -1 -goblingirl/left-hand - rotate: false - xy: 196, 109 - size: 35, 40 - orig: 35, 40 - offset: 0, 0 - index: -1 -goblingirl/left-lower-leg - rotate: false - xy: 169, 293 - size: 33, 70 - orig: 33, 70 - offset: 0, 0 - index: -1 -goblingirl/left-shoulder - rotate: false - xy: 107, 30 - size: 28, 46 - orig: 28, 46 - offset: 0, 0 - index: -1 -goblingirl/left-upper-leg - rotate: false - xy: 65, 68 - size: 33, 70 - orig: 33, 70 - offset: 0, 0 - index: -1 -goblingirl/neck - rotate: false - xy: 204, 297 - size: 35, 41 - orig: 35, 41 - offset: 0, 0 - index: -1 -goblingirl/pelvis - rotate: false - xy: 131, 365 - size: 62, 43 - orig: 62, 43 - offset: 0, 0 - index: -1 -goblingirl/right-arm - rotate: false - xy: 100, 97 - size: 28, 50 - orig: 28, 50 - offset: 0, 0 - index: -1 -goblingirl/right-foot - rotate: false - xy: 134, 157 - size: 63, 33 - orig: 63, 33 - offset: 0, 0 - index: -1 -goblingirl/right-hand - rotate: false - xy: 199, 151 - size: 36, 37 - orig: 36, 37 - offset: 0, 0 - index: -1 -goblingirl/right-lower-leg - rotate: false - xy: 96, 279 - size: 36, 76 - orig: 36, 76 - offset: 0, 0 - index: -1 -goblingirl/right-shoulder - rotate: false - xy: 204, 340 - size: 39, 45 - orig: 39, 45 - offset: 0, 0 - index: -1 -goblingirl/right-upper-leg - rotate: false - xy: 98, 149 - size: 34, 63 - orig: 34, 63 - offset: 0, 0 - index: -1 -goblingirl/torso - rotate: false - xy: 26, 259 - size: 68, 96 - orig: 68, 96 - offset: 0, 0 - index: -1 -goblingirl/undie-straps - rotate: false - xy: 134, 136 - size: 55, 19 - orig: 55, 19 - offset: 0, 0 - index: -1 -goblingirl/undies - rotate: false - xy: 196, 78 - size: 36, 29 - orig: 36, 29 - offset: 0, 0 - index: -1 -shield - rotate: false - xy: 26, 185 - size: 70, 72 - orig: 70, 72 - offset: 0, 0 - index: -1 -spear - rotate: false - xy: 2, 138 - size: 22, 368 - orig: 22, 368 - offset: 0, 0 - index: -1 diff --git a/spine-cocos2dx/3.1/example/Resources/iphone-retina/goblins-ffd.png b/spine-cocos2dx/3.1/example/Resources/iphone-retina/goblins-ffd.png deleted file mode 100644 index f172361f2..000000000 Binary files a/spine-cocos2dx/3.1/example/Resources/iphone-retina/goblins-ffd.png and /dev/null differ diff --git a/spine-cocos2dx/3.1/example/Resources/iphone-retina/spineboy.atlas b/spine-cocos2dx/3.1/example/Resources/iphone-retina/spineboy.atlas deleted file mode 100644 index 19c0934b1..000000000 --- a/spine-cocos2dx/3.1/example/Resources/iphone-retina/spineboy.atlas +++ /dev/null @@ -1,194 +0,0 @@ - -spineboy.png -format: RGBA8888 -filter: Linear,Linear -repeat: none -eye_indifferent - rotate: true - xy: 389, 5 - size: 56, 53 - orig: 56, 53 - offset: 0, 0 - index: -1 -eye_surprised - rotate: false - xy: 580, 34 - size: 56, 53 - orig: 56, 53 - offset: 0, 0 - index: -1 -front_bracer - rotate: false - xy: 732, 85 - size: 35, 48 - orig: 35, 48 - offset: 0, 0 - index: -1 -front_fist_closed - rotate: false - xy: 556, 91 - size: 45, 49 - orig: 45, 49 - offset: 0, 0 - index: -1 -front_fist_open - rotate: false - xy: 668, 32 - size: 52, 52 - orig: 52, 52 - offset: 0, 0 - index: -1 -front_foot - rotate: false - xy: 924, 201 - size: 76, 41 - orig: 76, 41 - offset: 0, 0 - index: -1 -front_foot_bend1 - rotate: false - xy: 845, 200 - size: 77, 42 - orig: 77, 42 - offset: 0, 0 - index: -1 -front_foot_bend2 - rotate: false - xy: 778, 186 - size: 65, 56 - orig: 65, 56 - offset: 0, 0 - index: -1 -front_shin - rotate: true - xy: 444, 91 - size: 49, 110 - orig: 49, 110 - offset: 0, 0 - index: -1 -front_thigh - rotate: true - xy: 603, 89 - size: 29, 67 - orig: 29, 67 - offset: 0, 0 - index: -1 -front_upper_arm - rotate: true - xy: 672, 86 - size: 32, 58 - orig: 32, 58 - offset: 0, 0 - index: -1 -goggles - rotate: false - xy: 444, 142 - size: 157, 100 - orig: 157, 100 - offset: 0, 0 - index: -1 -gun - rotate: false - xy: 603, 120 - size: 126, 122 - orig: 126, 122 - offset: 0, 0 - index: -1 -head - rotate: false - xy: 279, 63 - size: 163, 179 - orig: 163, 179 - offset: 0, 0 - index: -1 -mouth_grind - rotate: false - xy: 845, 163 - size: 56, 35 - orig: 56, 35 - offset: 0, 0 - index: -1 -mouth_oooo - rotate: false - xy: 842, 126 - size: 56, 35 - orig: 56, 35 - offset: 0, 0 - index: -1 -mouth_smile - rotate: false - xy: 769, 97 - size: 56, 35 - orig: 56, 35 - offset: 0, 0 - index: -1 -muzzle - rotate: false - xy: 2, 2 - size: 275, 240 - orig: 277, 240 - offset: 0, 0 - index: -1 -neck - rotate: false - xy: 903, 173 - size: 22, 25 - orig: 22, 25 - offset: 0, 0 - index: -1 -rear_bracer - rotate: false - xy: 722, 40 - size: 34, 43 - orig: 34, 43 - offset: 0, 0 - index: -1 -rear_foot - rotate: false - xy: 444, 11 - size: 68, 36 - orig: 68, 36 - offset: 0, 0 - index: -1 -rear_foot_bend1 - rotate: false - xy: 444, 49 - size: 70, 40 - orig: 70, 40 - offset: 0, 0 - index: -1 -rear_foot_bend2 - rotate: false - xy: 778, 134 - size: 62, 50 - orig: 62, 50 - offset: 0, 0 - index: -1 -rear_shin - rotate: false - xy: 731, 135 - size: 45, 107 - orig: 45, 107 - offset: 0, 0 - index: -1 -rear_thigh - rotate: true - xy: 516, 50 - size: 39, 62 - orig: 39, 62 - offset: 0, 0 - index: -1 -rear_upper_arm - rotate: false - xy: 638, 35 - size: 28, 52 - orig: 28, 52 - offset: 0, 0 - index: -1 -torso - rotate: true - xy: 279, 2 - size: 59, 108 - orig: 59, 108 - offset: 0, 0 - index: -1 diff --git a/spine-cocos2dx/3.1/example/Resources/iphone-retina/spineboy.png b/spine-cocos2dx/3.1/example/Resources/iphone-retina/spineboy.png deleted file mode 100644 index b43262310..000000000 Binary files a/spine-cocos2dx/3.1/example/Resources/iphone-retina/spineboy.png and /dev/null differ diff --git a/spine-cocos2dx/3.1/example/Resources/iphone/goblins-ffd.atlas b/spine-cocos2dx/3.1/example/Resources/iphone/goblins-ffd.atlas deleted file mode 100644 index b977b07f6..000000000 --- a/spine-cocos2dx/3.1/example/Resources/iphone/goblins-ffd.atlas +++ /dev/null @@ -1,292 +0,0 @@ - -goblins-ffd.png -format: RGBA8888 -filter: Linear,Linear -repeat: none -dagger - rotate: false - xy: 2, 28 - size: 26, 108 - orig: 26, 108 - offset: 0, 0 - index: -1 -goblin/eyes-closed - rotate: false - xy: 137, 29 - size: 34, 12 - orig: 34, 12 - offset: 0, 0 - index: -1 -goblin/head - rotate: false - xy: 26, 357 - size: 103, 66 - orig: 103, 66 - offset: 0, 0 - index: -1 -goblin/left-arm - rotate: false - xy: 30, 28 - size: 37, 35 - orig: 37, 35 - offset: 0, 0 - index: -1 -goblin/left-foot - rotate: false - xy: 134, 260 - size: 65, 31 - orig: 65, 31 - offset: 0, 0 - index: -1 -goblin/left-hand - rotate: false - xy: 69, 25 - size: 36, 41 - orig: 36, 41 - offset: 0, 0 - index: -1 -goblin/left-lower-leg - rotate: false - xy: 134, 293 - size: 33, 70 - orig: 33, 70 - offset: 0, 0 - index: -1 -goblin/left-shoulder - rotate: false - xy: 137, 43 - size: 29, 44 - orig: 29, 44 - offset: 0, 0 - index: -1 -goblin/left-upper-leg - rotate: false - xy: 30, 65 - size: 33, 73 - orig: 33, 73 - offset: 0, 0 - index: -1 -goblin/neck - rotate: false - xy: 201, 387 - size: 36, 41 - orig: 36, 41 - offset: 0, 0 - index: -1 -goblin/pelvis - rotate: false - xy: 26, 140 - size: 62, 43 - orig: 62, 43 - offset: 0, 0 - index: -1 -goblin/right-arm - rotate: false - xy: 171, 84 - size: 23, 50 - orig: 23, 50 - offset: 0, 0 - index: -1 -goblin/right-foot - rotate: false - xy: 134, 225 - size: 63, 33 - orig: 63, 33 - offset: 0, 0 - index: -1 -goblin/right-hand - rotate: false - xy: 204, 258 - size: 36, 37 - orig: 36, 37 - offset: 0, 0 - index: -1 -goblin/right-lower-leg - rotate: false - xy: 201, 430 - size: 36, 76 - orig: 36, 76 - offset: 0, 0 - index: -1 -goblin/right-shoulder - rotate: false - xy: 130, 89 - size: 39, 45 - orig: 39, 45 - offset: 0, 0 - index: -1 -goblin/right-upper-leg - rotate: false - xy: 98, 214 - size: 34, 63 - orig: 34, 63 - offset: 0, 0 - index: -1 -goblin/torso - rotate: false - xy: 131, 410 - size: 68, 96 - orig: 68, 96 - offset: 0, 0 - index: -1 -goblin/undie-straps - rotate: false - xy: 2, 7 - size: 55, 19 - orig: 55, 19 - offset: 0, 0 - index: -1 -goblin/undies - rotate: false - xy: 199, 227 - size: 36, 29 - orig: 36, 29 - offset: 0, 0 - index: -1 -goblingirl/eyes-closed - rotate: false - xy: 59, 2 - size: 37, 21 - orig: 37, 21 - offset: 0, 0 - index: -1 -goblingirl/head - rotate: false - xy: 26, 425 - size: 103, 81 - orig: 103, 81 - offset: 0, 0 - index: -1 -goblingirl/left-arm - rotate: false - xy: 201, 190 - size: 37, 35 - orig: 37, 35 - offset: 0, 0 - index: -1 -goblingirl/left-foot - rotate: false - xy: 134, 192 - size: 65, 31 - orig: 65, 31 - offset: 0, 0 - index: -1 -goblingirl/left-hand - rotate: false - xy: 196, 109 - size: 35, 40 - orig: 35, 40 - offset: 0, 0 - index: -1 -goblingirl/left-lower-leg - rotate: false - xy: 169, 293 - size: 33, 70 - orig: 33, 70 - offset: 0, 0 - index: -1 -goblingirl/left-shoulder - rotate: false - xy: 107, 30 - size: 28, 46 - orig: 28, 46 - offset: 0, 0 - index: -1 -goblingirl/left-upper-leg - rotate: false - xy: 65, 68 - size: 33, 70 - orig: 33, 70 - offset: 0, 0 - index: -1 -goblingirl/neck - rotate: false - xy: 204, 297 - size: 35, 41 - orig: 35, 41 - offset: 0, 0 - index: -1 -goblingirl/pelvis - rotate: false - xy: 131, 365 - size: 62, 43 - orig: 62, 43 - offset: 0, 0 - index: -1 -goblingirl/right-arm - rotate: false - xy: 100, 97 - size: 28, 50 - orig: 28, 50 - offset: 0, 0 - index: -1 -goblingirl/right-foot - rotate: false - xy: 134, 157 - size: 63, 33 - orig: 63, 33 - offset: 0, 0 - index: -1 -goblingirl/right-hand - rotate: false - xy: 199, 151 - size: 36, 37 - orig: 36, 37 - offset: 0, 0 - index: -1 -goblingirl/right-lower-leg - rotate: false - xy: 96, 279 - size: 36, 76 - orig: 36, 76 - offset: 0, 0 - index: -1 -goblingirl/right-shoulder - rotate: false - xy: 204, 340 - size: 39, 45 - orig: 39, 45 - offset: 0, 0 - index: -1 -goblingirl/right-upper-leg - rotate: false - xy: 98, 149 - size: 34, 63 - orig: 34, 63 - offset: 0, 0 - index: -1 -goblingirl/torso - rotate: false - xy: 26, 259 - size: 68, 96 - orig: 68, 96 - offset: 0, 0 - index: -1 -goblingirl/undie-straps - rotate: false - xy: 134, 136 - size: 55, 19 - orig: 55, 19 - offset: 0, 0 - index: -1 -goblingirl/undies - rotate: false - xy: 196, 78 - size: 36, 29 - orig: 36, 29 - offset: 0, 0 - index: -1 -shield - rotate: false - xy: 26, 185 - size: 70, 72 - orig: 70, 72 - offset: 0, 0 - index: -1 -spear - rotate: false - xy: 2, 138 - size: 22, 368 - orig: 22, 368 - offset: 0, 0 - index: -1 diff --git a/spine-cocos2dx/3.1/example/Resources/iphone/goblins-ffd.png b/spine-cocos2dx/3.1/example/Resources/iphone/goblins-ffd.png deleted file mode 100644 index f172361f2..000000000 Binary files a/spine-cocos2dx/3.1/example/Resources/iphone/goblins-ffd.png and /dev/null differ diff --git a/spine-cocos2dx/3.1/example/Resources/iphone/spineboy.atlas b/spine-cocos2dx/3.1/example/Resources/iphone/spineboy.atlas deleted file mode 100644 index 19c0934b1..000000000 --- a/spine-cocos2dx/3.1/example/Resources/iphone/spineboy.atlas +++ /dev/null @@ -1,194 +0,0 @@ - -spineboy.png -format: RGBA8888 -filter: Linear,Linear -repeat: none -eye_indifferent - rotate: true - xy: 389, 5 - size: 56, 53 - orig: 56, 53 - offset: 0, 0 - index: -1 -eye_surprised - rotate: false - xy: 580, 34 - size: 56, 53 - orig: 56, 53 - offset: 0, 0 - index: -1 -front_bracer - rotate: false - xy: 732, 85 - size: 35, 48 - orig: 35, 48 - offset: 0, 0 - index: -1 -front_fist_closed - rotate: false - xy: 556, 91 - size: 45, 49 - orig: 45, 49 - offset: 0, 0 - index: -1 -front_fist_open - rotate: false - xy: 668, 32 - size: 52, 52 - orig: 52, 52 - offset: 0, 0 - index: -1 -front_foot - rotate: false - xy: 924, 201 - size: 76, 41 - orig: 76, 41 - offset: 0, 0 - index: -1 -front_foot_bend1 - rotate: false - xy: 845, 200 - size: 77, 42 - orig: 77, 42 - offset: 0, 0 - index: -1 -front_foot_bend2 - rotate: false - xy: 778, 186 - size: 65, 56 - orig: 65, 56 - offset: 0, 0 - index: -1 -front_shin - rotate: true - xy: 444, 91 - size: 49, 110 - orig: 49, 110 - offset: 0, 0 - index: -1 -front_thigh - rotate: true - xy: 603, 89 - size: 29, 67 - orig: 29, 67 - offset: 0, 0 - index: -1 -front_upper_arm - rotate: true - xy: 672, 86 - size: 32, 58 - orig: 32, 58 - offset: 0, 0 - index: -1 -goggles - rotate: false - xy: 444, 142 - size: 157, 100 - orig: 157, 100 - offset: 0, 0 - index: -1 -gun - rotate: false - xy: 603, 120 - size: 126, 122 - orig: 126, 122 - offset: 0, 0 - index: -1 -head - rotate: false - xy: 279, 63 - size: 163, 179 - orig: 163, 179 - offset: 0, 0 - index: -1 -mouth_grind - rotate: false - xy: 845, 163 - size: 56, 35 - orig: 56, 35 - offset: 0, 0 - index: -1 -mouth_oooo - rotate: false - xy: 842, 126 - size: 56, 35 - orig: 56, 35 - offset: 0, 0 - index: -1 -mouth_smile - rotate: false - xy: 769, 97 - size: 56, 35 - orig: 56, 35 - offset: 0, 0 - index: -1 -muzzle - rotate: false - xy: 2, 2 - size: 275, 240 - orig: 277, 240 - offset: 0, 0 - index: -1 -neck - rotate: false - xy: 903, 173 - size: 22, 25 - orig: 22, 25 - offset: 0, 0 - index: -1 -rear_bracer - rotate: false - xy: 722, 40 - size: 34, 43 - orig: 34, 43 - offset: 0, 0 - index: -1 -rear_foot - rotate: false - xy: 444, 11 - size: 68, 36 - orig: 68, 36 - offset: 0, 0 - index: -1 -rear_foot_bend1 - rotate: false - xy: 444, 49 - size: 70, 40 - orig: 70, 40 - offset: 0, 0 - index: -1 -rear_foot_bend2 - rotate: false - xy: 778, 134 - size: 62, 50 - orig: 62, 50 - offset: 0, 0 - index: -1 -rear_shin - rotate: false - xy: 731, 135 - size: 45, 107 - orig: 45, 107 - offset: 0, 0 - index: -1 -rear_thigh - rotate: true - xy: 516, 50 - size: 39, 62 - orig: 39, 62 - offset: 0, 0 - index: -1 -rear_upper_arm - rotate: false - xy: 638, 35 - size: 28, 52 - orig: 28, 52 - offset: 0, 0 - index: -1 -torso - rotate: true - xy: 279, 2 - size: 59, 108 - orig: 59, 108 - offset: 0, 0 - index: -1 diff --git a/spine-cocos2dx/3.1/example/Resources/iphone/spineboy.png b/spine-cocos2dx/3.1/example/Resources/iphone/spineboy.png deleted file mode 100644 index b43262310..000000000 Binary files a/spine-cocos2dx/3.1/example/Resources/iphone/spineboy.png and /dev/null differ diff --git a/spine-cocos2dx/3.1/example/proj.win32/main.cpp b/spine-cocos2dx/3.1/example/proj.win32/main.cpp deleted file mode 100644 index 801cba97d..000000000 --- a/spine-cocos2dx/3.1/example/proj.win32/main.cpp +++ /dev/null @@ -1,22 +0,0 @@ -#include "main.h" -#include "../Classes/AppDelegate.h" - -USING_NS_CC; - -int APIENTRY _tWinMain(HINSTANCE hInstance, - HINSTANCE hPrevInstance, - LPTSTR lpCmdLine, - int nCmdShow) -{ - UNREFERENCED_PARAMETER(hPrevInstance); - UNREFERENCED_PARAMETER(lpCmdLine); - - // create the application instance - AppDelegate app; - - auto director = Director::getInstance(); - auto glview = GLView::create("Spine Example"); - glview->setFrameSize(960, 640); - director->setOpenGLView(glview); - return Application::getInstance()->run(); -} diff --git a/spine-cocos2dx/3.1/example/proj.win32/main.h b/spine-cocos2dx/3.1/example/proj.win32/main.h deleted file mode 100644 index 1eec81188..000000000 --- a/spine-cocos2dx/3.1/example/proj.win32/main.h +++ /dev/null @@ -1,9 +0,0 @@ -#ifndef __MAIN_H__ -#define __MAIN_H__ - -#define WIN32_LEAN_AND_MEAN - -#include -#include - -#endif // __MAIN_H__ diff --git a/spine-cocos2dx/3.1/example/proj.win32/spine-cocos2dx.sln b/spine-cocos2dx/3.1/example/proj.win32/spine-cocos2dx.sln deleted file mode 100644 index 98c48b343..000000000 --- a/spine-cocos2dx/3.1/example/proj.win32/spine-cocos2dx.sln +++ /dev/null @@ -1,53 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Express 2012 for Windows Desktop -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "spine-cocos2dx", "spine-cocos2dx.vcxproj", "{DB4C84B9-AC6D-46A1-B7E6-A77FE4515ACF}" - ProjectSection(ProjectDependencies) = postProject - {98A51BA8-FC3A-415B-AC8F-8C7BD464E93E} = {98A51BA8-FC3A-415B-AC8F-8C7BD464E93E} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libcocos2d", "..\..\cocos2dx\cocos\2d\cocos2d.vcxproj", "{98A51BA8-FC3A-415B-AC8F-8C7BD464E93E}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libchipmunk", "..\..\cocos2dx\external\chipmunk\proj.win32\chipmunk.vcxproj", "{207BC7A9-CCF1-4F2F-A04D-45F72242AE25}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "spine-c", "..\..\..\..\spine-c\spine-c.vcxproj", "{5D74934A-7512-45EE-8402-7B95D3642E85}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Win32 = Debug|Win32 - Release|Win32 = Release|Win32 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {DB4C84B9-AC6D-46A1-B7E6-A77FE4515ACF}.Debug|Win32.ActiveCfg = Debug|Win32 - {DB4C84B9-AC6D-46A1-B7E6-A77FE4515ACF}.Debug|Win32.Build.0 = Debug|Win32 - {DB4C84B9-AC6D-46A1-B7E6-A77FE4515ACF}.Release|Win32.ActiveCfg = Release|Win32 - {DB4C84B9-AC6D-46A1-B7E6-A77FE4515ACF}.Release|Win32.Build.0 = Release|Win32 - {98A51BA8-FC3A-415B-AC8F-8C7BD464E93E}.Debug|Win32.ActiveCfg = Debug|Win32 - {98A51BA8-FC3A-415B-AC8F-8C7BD464E93E}.Debug|Win32.Build.0 = Debug|Win32 - {98A51BA8-FC3A-415B-AC8F-8C7BD464E93E}.Release|Win32.ActiveCfg = Release|Win32 - {98A51BA8-FC3A-415B-AC8F-8C7BD464E93E}.Release|Win32.Build.0 = Release|Win32 - {207BC7A9-CCF1-4F2F-A04D-45F72242AE25}.Debug|Win32.ActiveCfg = Debug|Win32 - {207BC7A9-CCF1-4F2F-A04D-45F72242AE25}.Debug|Win32.Build.0 = Debug|Win32 - {207BC7A9-CCF1-4F2F-A04D-45F72242AE25}.Release|Win32.ActiveCfg = Release|Win32 - {207BC7A9-CCF1-4F2F-A04D-45F72242AE25}.Release|Win32.Build.0 = Release|Win32 - {5D74934A-7512-45EE-8402-7B95D3642E85}.Debug|Win32.ActiveCfg = Debug|Win32 - {5D74934A-7512-45EE-8402-7B95D3642E85}.Debug|Win32.Build.0 = Debug|Win32 - {5D74934A-7512-45EE-8402-7B95D3642E85}.Release|Win32.ActiveCfg = Release|Win32 - {5D74934A-7512-45EE-8402-7B95D3642E85}.Release|Win32.Build.0 = Release|Win32 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(DPCodeReviewSolutionGUID) = preSolution - DPCodeReviewSolutionGUID = {00000000-0000-0000-0000-000000000000} - EndGlobalSection - GlobalSection(DPCodeReviewSolutionGUID) = preSolution - DPCodeReviewSolutionGUID = {00000000-0000-0000-0000-000000000000} - EndGlobalSection - GlobalSection(DPCodeReviewSolutionGUID) = preSolution - DPCodeReviewSolutionGUID = {00000000-0000-0000-0000-000000000000} - EndGlobalSection - GlobalSection(DPCodeReviewSolutionGUID) = preSolution - DPCodeReviewSolutionGUID = {00000000-0000-0000-0000-000000000000} - EndGlobalSection -EndGlobal diff --git a/spine-cocos2dx/3.1/example/proj.win32/spine-cocos2dx.vcxproj b/spine-cocos2dx/3.1/example/proj.win32/spine-cocos2dx.vcxproj deleted file mode 100644 index 7341fc837..000000000 --- a/spine-cocos2dx/3.1/example/proj.win32/spine-cocos2dx.vcxproj +++ /dev/null @@ -1,171 +0,0 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - - {DB4C84B9-AC6D-46A1-B7E6-A77FE4515ACF} - spine - Win32Proj - spine-cocos2dx - - - - Application - Unicode - true - v100 - v110 - v110_xp - - - Application - Unicode - v100 - v110 - v110_xp - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.40219.1 - $(SolutionDir)$(Configuration).win32\ - $(Configuration).win32\ - true - $(SolutionDir)$(Configuration).win32\ - $(Configuration).win32\ - false - AllRules.ruleset - - - AllRules.ruleset - - - - - $(MSBuildProgramFiles32)\Microsoft SDKs\Windows\v7.1A\lib;$(LibraryPath) - - - $(MSBuildProgramFiles32)\Microsoft SDKs\Windows\v7.1A\lib;$(LibraryPath) - - - - Disabled - $(ProjectDir)..\Classes;$(ProjectDir)..\..\src;$(ProjectDir)..\..\..\..\spine-c\include;%(AdditionalIncludeDirectories) - WIN32;_DEBUG;_WINDOWS;COCOS2D_DEBUG=1;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - - - Level3 - EditAndContinue - 4267;4251;4244;%(DisableSpecificWarnings) - CompileAsCpp - - - %(AdditionalDependencies) - $(OutDir)$(ProjectName).exe - $(OutDir);%(AdditionalLibraryDirectories) - true - Windows - MachineX86 - - - false - libcmt.lib;msvcrt.lib;libcmtd.lib - - - - - - - - - MaxSpeed - true - $(ProjectDir)..\..\..\..\cocos2dx;$(ProjectDir)..\..\..\..\cocos2dx\include;$(ProjectDir)..\..\..\..\cocos2dx\kazmath\include;$(ProjectDir)..\..\..\..\cocos2dx\platform\win32;$(ProjectDir)..\..\..\..\cocos2dx\platform\third_party\win32\OGLES;..\Classes;%(AdditionalIncludeDirectories) - WIN32;NDEBUG;_WINDOWS;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) - MultiThreadedDLL - true - - - Level3 - ProgramDatabase - 4267;4251;4244;%(DisableSpecificWarnings) - - - opengl32.lib;glew32.lib;libcocos2d.lib;%(AdditionalDependencies) - $(OutDir)$(ProjectName).exe - $(OutDir);%(AdditionalLibraryDirectories) - true - Windows - true - true - MachineX86 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {5d74934a-7512-45ee-8402-7b95d3642e85} - - - {98a51ba8-fc3a-415b-ac8f-8c7bd464e93e} - false - false - false - true - false - - - {207bc7a9-ccf1-4f2f-a04d-45f72242ae25} - - - - - - \ No newline at end of file diff --git a/spine-cocos2dx/3.1/example/proj.win32/spine-cocos2dx.vcxproj.filters b/spine-cocos2dx/3.1/example/proj.win32/spine-cocos2dx.vcxproj.filters deleted file mode 100644 index ad5c9ffc3..000000000 --- a/spine-cocos2dx/3.1/example/proj.win32/spine-cocos2dx.vcxproj.filters +++ /dev/null @@ -1,69 +0,0 @@ - - - - - {ef769de4-53ac-449d-92e6-e67ec8d7414e} - - - {0dcd52ca-d521-4ba1-a1fa-c0d58a2df402} - - - {54b66b2b-0990-4335-a821-332c44b6f83e} - - - - - win32 - - - Classes - - - Classes - - - src - - - src - - - src - - - src - - - Classes - - - Classes - - - - - win32 - - - Classes - - - src - - - src - - - src - - - src - - - Classes - - - Classes - - - \ No newline at end of file diff --git a/spine-cocos2dx/3.1/src/spine/PolygonBatch.cpp b/spine-cocos2dx/3.1/src/spine/PolygonBatch.cpp deleted file mode 100644 index a8a227873..000000000 --- a/spine-cocos2dx/3.1/src/spine/PolygonBatch.cpp +++ /dev/null @@ -1,112 +0,0 @@ -/****************************************************************************** - * Spine Runtimes Software License - * Version 2.1 - * - * Copyright (c) 2013, Esoteric Software - * All rights reserved. - * - * You are granted a perpetual, non-exclusive, non-sublicensable and - * non-transferable license to install, execute and perform the Spine Runtimes - * Software (the "Software") solely for internal use. Without the written - * permission of Esoteric Software (typically granted by licensing Spine), 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 SOFTARE 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 - -USING_NS_CC; - -namespace spine { - -PolygonBatch* PolygonBatch::createWithCapacity (int capacity) { - PolygonBatch* batch = new PolygonBatch(); - batch->initWithCapacity(capacity); - batch->autorelease(); - return batch; -} - -PolygonBatch::PolygonBatch () : - capacity(0), - vertices(nullptr), verticesCount(0), - triangles(nullptr), trianglesCount(0), - texture(nullptr) -{} - -bool PolygonBatch::initWithCapacity (int capacity) { - // 32767 is max index, so 32767 / 3 - (32767 / 3 % 3) = 10920. - CCASSERT(capacity <= 10920, "capacity cannot be > 10920"); - CCASSERT(capacity >= 0, "capacity cannot be < 0"); - this->capacity = capacity; - vertices = MALLOC(V2F_C4B_T2F, capacity); - triangles = MALLOC(GLushort, capacity * 3); - return true; -} - -PolygonBatch::~PolygonBatch () { - FREE(vertices); - FREE(triangles); -} - -void PolygonBatch::add (const Texture2D* addTexture, - const float* addVertices, const float* uvs, int addVerticesCount, - const int* addTriangles, int addTrianglesCount, - Color4B* color) { - - if ( - addTexture != texture - || verticesCount + (addVerticesCount >> 1) > capacity - || trianglesCount + addTrianglesCount > capacity * 3) { - this->flush(); - texture = addTexture; - } - - for (int i = 0; i < addTrianglesCount; ++i, ++trianglesCount) - triangles[trianglesCount] = addTriangles[i] + verticesCount; - - for (int i = 0; i < addVerticesCount; i += 2, ++verticesCount) { - V2F_C4B_T2F* vertex = vertices + verticesCount; - vertex->vertices.x = addVertices[i]; - vertex->vertices.y = addVertices[i + 1]; - vertex->colors = *color; - vertex->texCoords.u = uvs[i]; - vertex->texCoords.v = uvs[i + 1]; - } -} - -void PolygonBatch::flush () { - if (!verticesCount) return; - - GL::bindTexture2D(texture->getName()); - glEnableVertexAttribArray(GLProgram::VERTEX_ATTRIB_POSITION); - glEnableVertexAttribArray(GLProgram::VERTEX_ATTRIB_COLOR); - glEnableVertexAttribArray(GLProgram::VERTEX_ATTRIB_TEX_COORDS); - glVertexAttribPointer(GLProgram::VERTEX_ATTRIB_POSITION, 2, GL_FLOAT, GL_FALSE, sizeof(V2F_C4B_T2F), &vertices[0].vertices); - glVertexAttribPointer(GLProgram::VERTEX_ATTRIB_COLOR, 4, GL_UNSIGNED_BYTE, GL_TRUE, sizeof(V2F_C4B_T2F), &vertices[0].colors); - glVertexAttribPointer(GLProgram::VERTEX_ATTRIB_TEX_COORDS, 2, GL_FLOAT, GL_FALSE, sizeof(V2F_C4B_T2F), &vertices[0].texCoords); - - glDrawElements(GL_TRIANGLES, trianglesCount, GL_UNSIGNED_SHORT, triangles); - - verticesCount = 0; - trianglesCount = 0; - - CHECK_GL_ERROR_DEBUG(); -} - -} diff --git a/spine-cocos2dx/3.1/src/spine/SkeletonAnimation.cpp b/spine-cocos2dx/3.1/src/spine/SkeletonAnimation.cpp deleted file mode 100644 index 611916ea3..000000000 --- a/spine-cocos2dx/3.1/src/spine/SkeletonAnimation.cpp +++ /dev/null @@ -1,229 +0,0 @@ -/****************************************************************************** - * Spine Runtimes Software License - * Version 2.1 - * - * Copyright (c) 2013, Esoteric Software - * All rights reserved. - * - * You are granted a perpetual, non-exclusive, non-sublicensable and - * non-transferable license to install, execute and perform the Spine Runtimes - * Software (the "Software") solely for internal use. Without the written - * permission of Esoteric Software (typically granted by licensing Spine), 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 SOFTARE 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 -#include - -USING_NS_CC; -using std::min; -using std::max; -using std::vector; - -namespace spine { - -void animationCallback (spAnimationState* state, int trackIndex, spEventType type, spEvent* event, int loopCount) { - ((SkeletonAnimation*)state->rendererObject)->onAnimationStateEvent(trackIndex, type, event, loopCount); -} - -void trackEntryCallback (spAnimationState* state, int trackIndex, spEventType type, spEvent* event, int loopCount) { - ((SkeletonAnimation*)state->rendererObject)->onTrackEntryEvent(trackIndex, type, event, loopCount); -} - -typedef struct _TrackEntryListeners { - StartListener startListener; - EndListener endListener; - CompleteListener completeListener; - EventListener eventListener; -} _TrackEntryListeners; - -static _TrackEntryListeners* getListeners (spTrackEntry* entry) { - if (!entry->rendererObject) { - entry->rendererObject = NEW(spine::_TrackEntryListeners); - entry->listener = trackEntryCallback; - } - return (_TrackEntryListeners*)entry->rendererObject; -} - -void disposeTrackEntry (spTrackEntry* entry) { - if (entry->rendererObject) FREE(entry->rendererObject); - _spTrackEntry_dispose(entry); -} - -// - -SkeletonAnimation* SkeletonAnimation::createWithData (spSkeletonData* skeletonData) { - SkeletonAnimation* node = new SkeletonAnimation(skeletonData); - node->autorelease(); - return node; -} - -SkeletonAnimation* SkeletonAnimation::createWithFile (const char* skeletonDataFile, spAtlas* atlas, float scale) { - SkeletonAnimation* node = new SkeletonAnimation(skeletonDataFile, atlas, scale); - node->autorelease(); - return node; -} - -SkeletonAnimation* SkeletonAnimation::createWithFile (const char* skeletonDataFile, const char* atlasFile, float scale) { - SkeletonAnimation* node = new SkeletonAnimation(skeletonDataFile, atlasFile, scale); - node->autorelease(); - return node; -} - -void SkeletonAnimation::initialize () { - ownsAnimationStateData = true; - state = spAnimationState_create(spAnimationStateData_create(skeleton->data)); - state->rendererObject = this; - state->listener = animationCallback; - - _spAnimationState* stateInternal = (_spAnimationState*)state; - stateInternal->disposeTrackEntry = disposeTrackEntry; -} - -SkeletonAnimation::SkeletonAnimation (spSkeletonData *skeletonData) - : SkeletonRenderer(skeletonData) { - initialize(); -} - -SkeletonAnimation::SkeletonAnimation (const char* skeletonDataFile, spAtlas* atlas, float scale) - : SkeletonRenderer(skeletonDataFile, atlas, scale) { - initialize(); -} - -SkeletonAnimation::SkeletonAnimation (const char* skeletonDataFile, const char* atlasFile, float scale) - : SkeletonRenderer(skeletonDataFile, atlasFile, scale) { - initialize(); -} - -SkeletonAnimation::~SkeletonAnimation () { - if (ownsAnimationStateData) spAnimationStateData_dispose(state->data); - spAnimationState_dispose(state); -} - -void SkeletonAnimation::update (float deltaTime) { - super::update(deltaTime); - - deltaTime *= timeScale; - spAnimationState_update(state, deltaTime); - spAnimationState_apply(state, skeleton); - spSkeleton_updateWorldTransform(skeleton); -} - -void SkeletonAnimation::setAnimationStateData (spAnimationStateData* stateData) { - CCASSERT(stateData, "stateData cannot be null."); - - if (ownsAnimationStateData) spAnimationStateData_dispose(state->data); - spAnimationState_dispose(state); - - ownsAnimationStateData = false; - state = spAnimationState_create(stateData); - state->rendererObject = this; - state->listener = animationCallback; -} - -void SkeletonAnimation::setMix (const char* fromAnimation, const char* toAnimation, float duration) { - spAnimationStateData_setMixByName(state->data, fromAnimation, toAnimation, duration); -} - -spTrackEntry* SkeletonAnimation::setAnimation (int trackIndex, const char* name, bool loop) { - spAnimation* animation = spSkeletonData_findAnimation(skeleton->data, name); - if (!animation) { - log("Spine: Animation not found: %s", name); - return 0; - } - return spAnimationState_setAnimation(state, trackIndex, animation, loop); -} - -spTrackEntry* SkeletonAnimation::addAnimation (int trackIndex, const char* name, bool loop, float delay) { - spAnimation* animation = spSkeletonData_findAnimation(skeleton->data, name); - if (!animation) { - log("Spine: Animation not found: %s", name); - return 0; - } - return spAnimationState_addAnimation(state, trackIndex, animation, loop, delay); -} - -spTrackEntry* SkeletonAnimation::getCurrent (int trackIndex) { - return spAnimationState_getCurrent(state, trackIndex); -} - -void SkeletonAnimation::clearTracks () { - spAnimationState_clearTracks(state); -} - -void SkeletonAnimation::clearTrack (int trackIndex) { - spAnimationState_clearTrack(state, trackIndex); -} - -void SkeletonAnimation::onAnimationStateEvent (int trackIndex, spEventType type, spEvent* event, int loopCount) { - switch (type) { - case SP_ANIMATION_START: - if (startListener) startListener(trackIndex); - break; - case SP_ANIMATION_END: - if (endListener) endListener(trackIndex); - break; - case SP_ANIMATION_COMPLETE: - if (completeListener) completeListener(trackIndex, loopCount); - break; - case SP_ANIMATION_EVENT: - if (eventListener) eventListener(trackIndex, event); - break; - } -} - -void SkeletonAnimation::onTrackEntryEvent (int trackIndex, spEventType type, spEvent* event, int loopCount) { - spTrackEntry* entry = spAnimationState_getCurrent(state, trackIndex); - if (!entry->rendererObject) return; - _TrackEntryListeners* listeners = (_TrackEntryListeners*)entry->rendererObject; - switch (type) { - case SP_ANIMATION_START: - if (listeners->startListener) listeners->startListener(trackIndex); - break; - case SP_ANIMATION_END: - if (listeners->endListener) listeners->endListener(trackIndex); - break; - case SP_ANIMATION_COMPLETE: - if (listeners->completeListener) listeners->completeListener(trackIndex, loopCount); - break; - case SP_ANIMATION_EVENT: - if (listeners->eventListener) listeners->eventListener(trackIndex, event); - break; - } -} - -void SkeletonAnimation::setStartListener (spTrackEntry* entry, StartListener listener) { - getListeners(entry)->startListener = listener; -} - -void SkeletonAnimation::setEndListener (spTrackEntry* entry, EndListener listener) { - getListeners(entry)->endListener = listener; -} - -void SkeletonAnimation::setCompleteListener (spTrackEntry* entry, CompleteListener listener) { - getListeners(entry)->completeListener = listener; -} - -void SkeletonAnimation::setEventListener (spTrackEntry* entry, spine::EventListener listener) { - getListeners(entry)->eventListener = listener; -} - -} diff --git a/spine-cocos2dx/3.1/src/spine/SkeletonAnimation.h b/spine-cocos2dx/3.1/src/spine/SkeletonAnimation.h deleted file mode 100644 index ce5da45bb..000000000 --- a/spine-cocos2dx/3.1/src/spine/SkeletonAnimation.h +++ /dev/null @@ -1,96 +0,0 @@ -/****************************************************************************** - * Spine Runtimes Software License - * Version 2.1 - * - * Copyright (c) 2013, Esoteric Software - * All rights reserved. - * - * You are granted a perpetual, non-exclusive, non-sublicensable and - * non-transferable license to install, execute and perform the Spine Runtimes - * Software (the "Software") solely for internal use. Without the written - * permission of Esoteric Software (typically granted by licensing Spine), 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 SOFTARE 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_SKELETONANIMATION_H_ -#define SPINE_SKELETONANIMATION_H_ - -#include -#include -#include "cocos2d.h" - -namespace spine { - -typedef std::function StartListener; -typedef std::function EndListener; -typedef std::function CompleteListener; -typedef std::function EventListener; - -/** Draws an animated skeleton, providing an AnimationState for applying one or more animations and queuing animations to be - * played later. */ -class SkeletonAnimation: public SkeletonRenderer { -public: - spAnimationState* state; - - static SkeletonAnimation* createWithData (spSkeletonData* skeletonData); - static SkeletonAnimation* createWithFile (const char* skeletonDataFile, spAtlas* atlas, float scale = 0); - static SkeletonAnimation* createWithFile (const char* skeletonDataFile, const char* atlasFile, float scale = 0); - - SkeletonAnimation (spSkeletonData* skeletonData); - SkeletonAnimation (const char* skeletonDataFile, spAtlas* atlas, float scale = 0); - SkeletonAnimation (const char* skeletonDataFile, const char* atlasFile, float scale = 0); - - virtual ~SkeletonAnimation (); - - virtual void update (float deltaTime); - - void setAnimationStateData (spAnimationStateData* stateData); - void setMix (const char* fromAnimation, const char* toAnimation, float duration); - - spTrackEntry* setAnimation (int trackIndex, const char* name, bool loop); - spTrackEntry* addAnimation (int trackIndex, const char* name, bool loop, float delay = 0); - spTrackEntry* getCurrent (int trackIndex = 0); - void clearTracks (); - void clearTrack (int trackIndex = 0); - - StartListener startListener; - EndListener endListener; - CompleteListener completeListener; - EventListener eventListener; - void setStartListener (spTrackEntry* entry, StartListener listener); - void setEndListener (spTrackEntry* entry, EndListener listener); - void setCompleteListener (spTrackEntry* entry, CompleteListener listener); - void setEventListener (spTrackEntry* entry, EventListener listener); - - virtual void onAnimationStateEvent (int trackIndex, spEventType type, spEvent* event, int loopCount); - virtual void onTrackEntryEvent (int trackIndex, spEventType type, spEvent* event, int loopCount); - -protected: - SkeletonAnimation (); - -private: - typedef SkeletonRenderer super; - bool ownsAnimationStateData; - - void initialize (); -}; - -} - -#endif /* SPINE_SKELETONANIMATION_H_ */ diff --git a/spine-cocos2dx/3.1/src/spine/SkeletonRenderer.cpp b/spine-cocos2dx/3.1/src/spine/SkeletonRenderer.cpp deleted file mode 100644 index 784952983..000000000 --- a/spine-cocos2dx/3.1/src/spine/SkeletonRenderer.cpp +++ /dev/null @@ -1,369 +0,0 @@ -/****************************************************************************** - * Spine Runtimes Software License - * Version 2.1 - * - * Copyright (c) 2013, Esoteric Software - * All rights reserved. - * - * You are granted a perpetual, non-exclusive, non-sublicensable and - * non-transferable license to install, execute and perform the Spine Runtimes - * Software (the "Software") solely for internal use. Without the written - * permission of Esoteric Software (typically granted by licensing Spine), 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 SOFTARE 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 -#include -#include - -USING_NS_CC; -using std::min; -using std::max; - -namespace spine { - -static const int quadTriangles[6] = {0, 1, 2, 2, 3, 0}; - -SkeletonRenderer* SkeletonRenderer::createWithData (spSkeletonData* skeletonData, bool ownsSkeletonData) { - SkeletonRenderer* node = new SkeletonRenderer(skeletonData, ownsSkeletonData); - node->autorelease(); - return node; -} - -SkeletonRenderer* SkeletonRenderer::createWithFile (const char* skeletonDataFile, spAtlas* atlas, float scale) { - SkeletonRenderer* node = new SkeletonRenderer(skeletonDataFile, atlas, scale); - node->autorelease(); - return node; -} - -SkeletonRenderer* SkeletonRenderer::createWithFile (const char* skeletonDataFile, const char* atlasFile, float scale) { - SkeletonRenderer* node = new SkeletonRenderer(skeletonDataFile, atlasFile, scale); - node->autorelease(); - return node; -} - -void SkeletonRenderer::initialize () { - atlas = 0; - debugSlots = false; - debugBones = false; - timeScale = 1; - - worldVertices = MALLOC(float, 1000); // Max number of vertices per mesh. - - batch = PolygonBatch::createWithCapacity(2000); // Max number of vertices and triangles per batch. - batch->retain(); - - blendFunc = BlendFunc::ALPHA_PREMULTIPLIED; - setOpacityModifyRGB(true); - - setGLProgram(ShaderCache::getInstance()->getGLProgram(GLProgram::SHADER_NAME_POSITION_TEXTURE_COLOR)); - scheduleUpdate(); -} - -void SkeletonRenderer::setSkeletonData (spSkeletonData *skeletonData, bool ownsSkeletonData) { - skeleton = spSkeleton_create(skeletonData); - rootBone = skeleton->bones[0]; - this->ownsSkeletonData = ownsSkeletonData; -} - -SkeletonRenderer::SkeletonRenderer () { - initialize(); -} - -SkeletonRenderer::SkeletonRenderer (spSkeletonData *skeletonData, bool ownsSkeletonData) { - initialize(); - - setSkeletonData(skeletonData, ownsSkeletonData); -} - -SkeletonRenderer::SkeletonRenderer (const char* skeletonDataFile, spAtlas* atlas, float scale) { - initialize(); - - spSkeletonJson* json = spSkeletonJson_create(atlas); - json->scale = scale; - spSkeletonData* skeletonData = spSkeletonJson_readSkeletonDataFile(json, skeletonDataFile); - CCASSERT(skeletonData, json->error ? json->error : "Error reading skeleton data."); - spSkeletonJson_dispose(json); - - setSkeletonData(skeletonData, true); -} - -SkeletonRenderer::SkeletonRenderer (const char* skeletonDataFile, const char* atlasFile, float scale) { - initialize(); - - atlas = spAtlas_createFromFile(atlasFile, 0); - CCASSERT(atlas, "Error reading atlas file."); - - spSkeletonJson* json = spSkeletonJson_create(atlas); - json->scale = scale; - spSkeletonData* skeletonData = spSkeletonJson_readSkeletonDataFile(json, skeletonDataFile); - CCASSERT(skeletonData, json->error ? json->error : "Error reading skeleton data file."); - spSkeletonJson_dispose(json); - - setSkeletonData(skeletonData, true); -} - -SkeletonRenderer::~SkeletonRenderer () { - if (ownsSkeletonData) spSkeletonData_dispose(skeleton->data); - if (atlas) spAtlas_dispose(atlas); - spSkeleton_dispose(skeleton); - batch->release(); - FREE(worldVertices); -} - -void SkeletonRenderer::update (float deltaTime) { - spSkeleton_update(skeleton, deltaTime * timeScale); -} - -void SkeletonRenderer::draw (Renderer* renderer, const Mat4& transform, bool transformUpdated) { - drawCommand.init(_globalZOrder); - drawCommand.func = CC_CALLBACK_0(SkeletonRenderer::drawSkeleton, this, transform, transformUpdated); - renderer->addCommand(&drawCommand); -} - -void SkeletonRenderer::drawSkeleton (const Mat4 &transform, bool transformUpdated) { - getGLProgram()->use(); - getGLProgram()->setUniformsForBuiltins(transform); - GL::bindVAO(0); - - Color3B nodeColor = getColor(); - skeleton->r = nodeColor.r / (float)255; - skeleton->g = nodeColor.g / (float)255; - skeleton->b = nodeColor.b / (float)255; - skeleton->a = getDisplayedOpacity() / (float)255; - - int additive = -1; - Color4B color; - const float* uvs = nullptr; - int verticesCount = 0; - const int* triangles = nullptr; - int trianglesCount = 0; - float r = 0, g = 0, b = 0, a = 0; - for (int i = 0, n = skeleton->slotCount; i < n; i++) { - spSlot* slot = skeleton->drawOrder[i]; - if (!slot->attachment) continue; - Texture2D *texture = nullptr; - switch (slot->attachment->type) { - case SP_ATTACHMENT_REGION: { - spRegionAttachment* attachment = (spRegionAttachment*)slot->attachment; - spRegionAttachment_computeWorldVertices(attachment, slot->skeleton->x, slot->skeleton->y, slot->bone, worldVertices); - texture = getTexture(attachment); - uvs = attachment->uvs; - verticesCount = 8; - triangles = quadTriangles; - trianglesCount = 6; - r = attachment->r; - g = attachment->g; - b = attachment->b; - a = attachment->a; - break; - } - case SP_ATTACHMENT_MESH: { - spMeshAttachment* attachment = (spMeshAttachment*)slot->attachment; - spMeshAttachment_computeWorldVertices(attachment, slot->skeleton->x, slot->skeleton->y, slot, worldVertices); - texture = getTexture(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_SKINNED_MESH: { - spSkinnedMeshAttachment* attachment = (spSkinnedMeshAttachment*)slot->attachment; - spSkinnedMeshAttachment_computeWorldVertices(attachment, slot->skeleton->x, slot->skeleton->y, slot, worldVertices); - texture = getTexture(attachment); - uvs = attachment->uvs; - verticesCount = attachment->uvsCount; - triangles = attachment->triangles; - trianglesCount = attachment->trianglesCount; - r = attachment->r; - g = attachment->g; - b = attachment->b; - a = attachment->a; - break; - } - default: ; - } - if (texture) { - if (slot->data->additiveBlending != additive) { - batch->flush(); - GL::blendFunc(blendFunc.src, slot->data->additiveBlending ? GL_ONE : blendFunc.dst); - additive = slot->data->additiveBlending; - } - color.a = skeleton->a * slot->a * a * 255; - float multiplier = premultipliedAlpha ? color.a : 255; - color.r = skeleton->r * slot->r * r * multiplier; - color.g = skeleton->g * slot->g * g * multiplier; - color.b = skeleton->b * slot->b * b * multiplier; - batch->add(texture, worldVertices, uvs, verticesCount, triangles, trianglesCount, &color); - } - } - batch->flush(); - - if (debugSlots || debugBones) { - Director* director = Director::getInstance(); - director->pushMatrix(MATRIX_STACK_TYPE::MATRIX_STACK_MODELVIEW); - director->loadMatrix(MATRIX_STACK_TYPE::MATRIX_STACK_MODELVIEW, transform); - - if (debugSlots) { - // Slots. - DrawPrimitives::setDrawColor4B(0, 0, 255, 255); - glLineWidth(1); - Vec2 points[4]; - V3F_C4B_T2F_Quad quad; - for (int i = 0, n = skeleton->slotCount; i < n; i++) { - spSlot* slot = skeleton->drawOrder[i]; - if (!slot->attachment || slot->attachment->type != SP_ATTACHMENT_REGION) continue; - spRegionAttachment* attachment = (spRegionAttachment*)slot->attachment; - spRegionAttachment_computeWorldVertices(attachment, slot->skeleton->x, slot->skeleton->y, slot->bone, worldVertices); - points[0] = Vec2(worldVertices[0], worldVertices[1]); - points[1] = Vec2(worldVertices[2], worldVertices[3]); - points[2] = Vec2(worldVertices[4], worldVertices[5]); - points[3] = Vec2(worldVertices[6], worldVertices[7]); - DrawPrimitives::drawPoly(points, 4, true); - } - } - if (debugBones) { - // Bone lengths. - glLineWidth(2); - DrawPrimitives::setDrawColor4B(255, 0, 0, 255); - for (int i = 0, n = skeleton->boneCount; i < n; i++) { - spBone *bone = skeleton->bones[i]; - float x = bone->data->length * bone->m00 + bone->worldX; - float y = bone->data->length * bone->m10 + bone->worldY; - DrawPrimitives::drawLine(Vec2(bone->worldX, bone->worldY), Vec2(x, y)); - } - // Bone origins. - DrawPrimitives::setPointSize(4); - DrawPrimitives::setDrawColor4B(0, 0, 255, 255); // Root bone is blue. - for (int i = 0, n = skeleton->boneCount; i < n; i++) { - spBone *bone = skeleton->bones[i]; - DrawPrimitives::drawPoint(Vec2(bone->worldX, bone->worldY)); - if (i == 0) DrawPrimitives::setDrawColor4B(0, 255, 0, 255); - } - } - director->popMatrix(MATRIX_STACK_TYPE::MATRIX_STACK_MODELVIEW); - } -} - -Texture2D* SkeletonRenderer::getTexture (spRegionAttachment* attachment) const { - return (Texture2D*)((spAtlasRegion*)attachment->rendererObject)->page->rendererObject; -} - -Texture2D* SkeletonRenderer::getTexture (spMeshAttachment* attachment) const { - return (Texture2D*)((spAtlasRegion*)attachment->rendererObject)->page->rendererObject; -} - -Texture2D* SkeletonRenderer::getTexture (spSkinnedMeshAttachment* attachment) const { - return (Texture2D*)((spAtlasRegion*)attachment->rendererObject)->page->rendererObject; -} - -Rect SkeletonRenderer::getBoundingBox () const { - float minX = FLT_MAX, minY = FLT_MAX, maxX = FLT_MIN, maxY = FLT_MIN; - float scaleX = getScaleX(), scaleY = getScaleY(); - for (int i = 0; i < skeleton->slotCount; ++i) { - spSlot* slot = skeleton->slots[i]; - if (!slot->attachment) continue; - int verticesCount; - if (slot->attachment->type == SP_ATTACHMENT_REGION) { - spRegionAttachment* attachment = (spRegionAttachment*)slot->attachment; - spRegionAttachment_computeWorldVertices(attachment, slot->skeleton->x, slot->skeleton->y, slot->bone, worldVertices); - verticesCount = 8; - } else if (slot->attachment->type == SP_ATTACHMENT_MESH) { - spMeshAttachment* mesh = (spMeshAttachment*)slot->attachment; - spMeshAttachment_computeWorldVertices(mesh, slot->skeleton->x, slot->skeleton->y, slot, worldVertices); - verticesCount = mesh->verticesCount; - } else if (slot->attachment->type == SP_ATTACHMENT_SKINNED_MESH) { - spSkinnedMeshAttachment* mesh = (spSkinnedMeshAttachment*)slot->attachment; - spSkinnedMeshAttachment_computeWorldVertices(mesh, slot->skeleton->x, slot->skeleton->y, slot, worldVertices); - verticesCount = mesh->uvsCount; - } else - continue; - for (int ii = 0; ii < verticesCount; ii += 2) { - float x = worldVertices[ii] * scaleX, y = worldVertices[ii + 1] * scaleY; - minX = min(minX, x); - minY = min(minY, y); - maxX = max(maxX, x); - maxY = max(maxY, y); - } - } - Vec2 position = getPosition(); - return Rect(position.x + minX, position.y + minY, maxX - minX, maxY - minY); -} - -// --- Convenience methods for Skeleton_* functions. - -void SkeletonRenderer::updateWorldTransform () { - spSkeleton_updateWorldTransform(skeleton); -} - -void SkeletonRenderer::setToSetupPose () { - spSkeleton_setToSetupPose(skeleton); -} -void SkeletonRenderer::setBonesToSetupPose () { - spSkeleton_setBonesToSetupPose(skeleton); -} -void SkeletonRenderer::setSlotsToSetupPose () { - spSkeleton_setSlotsToSetupPose(skeleton); -} - -spBone* SkeletonRenderer::findBone (const char* boneName) const { - return spSkeleton_findBone(skeleton, boneName); -} - -spSlot* SkeletonRenderer::findSlot (const char* slotName) const { - return spSkeleton_findSlot(skeleton, slotName); -} - -bool SkeletonRenderer::setSkin (const char* skinName) { - return spSkeleton_setSkinByName(skeleton, skinName) ? true : false; -} - -spAttachment* SkeletonRenderer::getAttachment (const char* slotName, const char* attachmentName) const { - return spSkeleton_getAttachmentForSlotName(skeleton, slotName, attachmentName); -} -bool SkeletonRenderer::setAttachment (const char* slotName, const char* attachmentName) { - return spSkeleton_setAttachment(skeleton, slotName, attachmentName) ? true : false; -} - -// --- CCBlendProtocol - -const BlendFunc& SkeletonRenderer::getBlendFunc () const { - return blendFunc; -} - -void SkeletonRenderer::setBlendFunc (const BlendFunc &blendFunc) { - this->blendFunc = blendFunc; -} - -void SkeletonRenderer::setOpacityModifyRGB (bool value) { - premultipliedAlpha = value; -} - -bool SkeletonRenderer::isOpacityModifyRGB () { - return premultipliedAlpha; -} - -} diff --git a/spine-cocos2dx/3.1/src/spine/SkeletonRenderer.h b/spine-cocos2dx/3.1/src/spine/SkeletonRenderer.h deleted file mode 100644 index 3e891cfb1..000000000 --- a/spine-cocos2dx/3.1/src/spine/SkeletonRenderer.h +++ /dev/null @@ -1,113 +0,0 @@ -/****************************************************************************** - * Spine Runtimes Software License - * Version 2.1 - * - * Copyright (c) 2013, Esoteric Software - * All rights reserved. - * - * You are granted a perpetual, non-exclusive, non-sublicensable and - * non-transferable license to install, execute and perform the Spine Runtimes - * Software (the "Software") solely for internal use. Without the written - * permission of Esoteric Software (typically granted by licensing Spine), 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 SOFTARE 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_SKELETONRENDERER_H_ -#define SPINE_SKELETONRENDERER_H_ - -#include -#include "cocos2d.h" - -namespace spine { - -class PolygonBatch; - -/** Draws a skeleton. */ -class SkeletonRenderer: public cocos2d::Node, public cocos2d::BlendProtocol { -public: - spSkeleton* skeleton; - spBone* rootBone; - float timeScale; - bool debugSlots; - bool debugBones; - bool premultipliedAlpha; - - static SkeletonRenderer* createWithData (spSkeletonData* skeletonData, bool ownsSkeletonData = false); - static SkeletonRenderer* createWithFile (const char* skeletonDataFile, spAtlas* atlas, float scale = 0); - static SkeletonRenderer* createWithFile (const char* skeletonDataFile, const char* atlasFile, float scale = 0); - - SkeletonRenderer (spSkeletonData* skeletonData, bool ownsSkeletonData = false); - SkeletonRenderer (const char* skeletonDataFile, spAtlas* atlas, float scale = 0); - SkeletonRenderer (const char* skeletonDataFile, const char* atlasFile, float scale = 0); - - virtual ~SkeletonRenderer (); - - virtual void update (float deltaTime) override; - virtual void draw (cocos2d::Renderer* renderer, const cocos2d::Mat4& transform, bool transformUpdated) override; - virtual void drawSkeleton (const cocos2d::Mat4& transform, bool transformUpdated); - virtual cocos2d::Rect getBoundingBox () const override; - - // --- Convenience methods for common Skeleton_* functions. - void updateWorldTransform (); - - void setToSetupPose (); - void setBonesToSetupPose (); - void setSlotsToSetupPose (); - - /* Returns 0 if the bone was not found. */ - spBone* findBone (const char* boneName) const; - /* Returns 0 if the slot was not found. */ - spSlot* findSlot (const char* slotName) const; - - /* Sets the skin used to look up attachments not found in the SkeletonData defaultSkin. Attachments from the new skin are - * attached if the corresponding attachment from the old skin was attached. Returns false if the skin was not found. - * @param skin May be 0.*/ - bool setSkin (const char* skinName); - - /* Returns 0 if the slot or attachment was not found. */ - spAttachment* getAttachment (const char* slotName, const char* attachmentName) const; - /* Returns false if the slot or attachment was not found. */ - bool setAttachment (const char* slotName, const char* attachmentName); - - // --- BlendProtocol - virtual void setBlendFunc (const cocos2d::BlendFunc& blendFunc); - virtual const cocos2d::BlendFunc& getBlendFunc () const; - virtual void setOpacityModifyRGB (bool value); - virtual bool isOpacityModifyRGB (); - -protected: - SkeletonRenderer (); - void setSkeletonData (spSkeletonData* skeletonData, bool ownsSkeletonData); - virtual cocos2d::Texture2D* getTexture (spRegionAttachment* attachment) const; - virtual cocos2d::Texture2D* getTexture (spMeshAttachment* attachment) const; - virtual cocos2d::Texture2D* getTexture (spSkinnedMeshAttachment* attachment) const; - -private: - bool ownsSkeletonData; - spAtlas* atlas; - cocos2d::CustomCommand drawCommand; - cocos2d::BlendFunc blendFunc; - PolygonBatch* batch; - float* worldVertices; - void initialize (); -}; - -} - -#endif /* SPINE_SKELETONRENDERER_H_ */ diff --git a/spine-cocos2dx/3.1/src/spine/spine-cocos2dx.cpp b/spine-cocos2dx/3.1/src/spine/spine-cocos2dx.cpp deleted file mode 100644 index 5ab0c1d71..000000000 --- a/spine-cocos2dx/3.1/src/spine/spine-cocos2dx.cpp +++ /dev/null @@ -1,55 +0,0 @@ -/****************************************************************************** - * Spine Runtimes Software License - * Version 2.1 - * - * Copyright (c) 2013, Esoteric Software - * All rights reserved. - * - * You are granted a perpetual, non-exclusive, non-sublicensable and - * non-transferable license to install, execute and perform the Spine Runtimes - * Software (the "Software") solely for internal use. Without the written - * permission of Esoteric Software (typically granted by licensing Spine), 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 SOFTARE 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 - -USING_NS_CC; - -void _spAtlasPage_createTexture (spAtlasPage* self, const char* path) { - Texture2D* texture = Director::getInstance()->getTextureCache()->addImage(path); - texture->retain(); - self->rendererObject = texture; - self->width = texture->getPixelsWide(); - self->height = texture->getPixelsHigh(); -} - -void _spAtlasPage_disposeTexture (spAtlasPage* self) { - ((Texture2D*)self->rendererObject)->release(); -} - -char* _spUtil_readFile (const char* path, int* length) { - Data data = FileUtils::getInstance()->getDataFromFile( - FileUtils::getInstance()->fullPathForFilename(path).c_str()); - *length = data.getSize(); - char* bytes = MALLOC(char, *length); - memcpy(bytes, data.getBytes(), *length); - return bytes; -} diff --git a/spine-cocos2dx/3.1/src/spine/spine-cocos2dx.h b/spine-cocos2dx/3.1/src/spine/spine-cocos2dx.h deleted file mode 100644 index 3409012f3..000000000 --- a/spine-cocos2dx/3.1/src/spine/spine-cocos2dx.h +++ /dev/null @@ -1,39 +0,0 @@ -/****************************************************************************** - * Spine Runtimes Software License - * Version 2.1 - * - * Copyright (c) 2013, Esoteric Software - * All rights reserved. - * - * You are granted a perpetual, non-exclusive, non-sublicensable and - * non-transferable license to install, execute and perform the Spine Runtimes - * Software (the "Software") solely for internal use. Without the written - * permission of Esoteric Software (typically granted by licensing Spine), 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 SOFTARE 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_COCOS2DX_H_ -#define SPINE_COCOS2DX_H_ - -#include -#include "cocos2d.h" -#include -#include - -#endif /* SPINE_COCOS2DX_H_ */ diff --git a/spine-cocos2dx/3.2/README.md b/spine-cocos2dx/3.2/README.md deleted file mode 100644 index 71429230a..000000000 --- a/spine-cocos2dx/3.2/README.md +++ /dev/null @@ -1,21 +0,0 @@ -# spine-cocos2dx v3.2 - -The spine-cocos2dx runtime provides functionality to load, manipulate and render [Spine](http://esotericsoftware.com) skeletal animation data using [cocos2d-x](http://www.cocos2d-x.org/). spine-cocos2dx is based on [spine-c](https://github.com/EsotericSoftware/spine-runtimes/tree/master/spine-c). - -## Setup - -1. Download the Spine Runtimes source using [git](https://help.github.com/articles/set-up-git) or by downloading it [as a zip](https://github.com/EsotericSoftware/spine-runtimes/archive/master.zip). -1. Place the contents of a cocos2d-x version 3.2 distribution into the `spine-cocos2dx/3.2/cocos2dx` directory. -1. Run the `python download-deps.py` script in the `spine-cocos2dx/3.2/cocos2dx` directory. -1. Open the XCode (Mac) or Visual C++ 2012 Express (Windows) project file from the `spine-cocos2dx/3.2/example` directory. Build files are also provided for Android. - -Alternatively, the contents of the `spine-c/src`, `spine-c/include` and `spine-cocos2dx/3.2/src` directories can be copied into your project. Be sure your header search path will find the contents of the `spine-c/include` and `spine-cocos2dx/3.1/src` directories. Note that the includes use `spine/Xxx.h`, so the `spine` directory cannot be omitted when copying the files. - -## Notes - -- Images are no longer premultiplied by cocos2d-x as they where in cocos2d-x v2, so the Spine atlas images *should* use premultiplied alpha. - -## Examples - -[Spineboy](https://github.com/EsotericSoftware/spine-runtimes/blob/master/spine-cocos2dx/3.2/example/Classes/SpineboyExample.cpp) -[Golbins](https://github.com/EsotericSoftware/spine-runtimes/blob/master/spine-cocos2dx/3.2/example/Classes/GoblinsExample.cpp) diff --git a/spine-cocos2dx/3.2/cocos2dx/Place cocos2dx here.txt b/spine-cocos2dx/3.2/cocos2dx/Place cocos2dx here.txt deleted file mode 100644 index e69de29bb..000000000 diff --git a/spine-cocos2dx/3.2/example/Classes/AppDelegate.cpp b/spine-cocos2dx/3.2/example/Classes/AppDelegate.cpp deleted file mode 100644 index f78d409af..000000000 --- a/spine-cocos2dx/3.2/example/Classes/AppDelegate.cpp +++ /dev/null @@ -1,91 +0,0 @@ -#include "AppDelegate.h" - -#include -#include - -#include "SpineboyExample.h" -#include "AppMacros.h" - -USING_NS_CC; -using namespace std; - -AppDelegate::AppDelegate () { -} - -AppDelegate::~AppDelegate () { -} - -bool AppDelegate::applicationDidFinishLaunching () { - // initialize director - auto director = Director::getInstance(); - auto glview = director->getOpenGLView(); - if(!glview) { - glview = GLView::create("Spine Example"); - director->setOpenGLView(glview); - } - - // Set the design resolution -#if (CC_TARGET_PLATFORM == CC_PLATFORM_WP8) - // a bug in DirectX 11 level9-x on the device prevents ResolutionPolicy::NO_BORDER from working correctly - glview->setDesignResolutionSize(designResolutionSize.width, designResolutionSize.height, ResolutionPolicy::SHOW_ALL); -#else - glview->setDesignResolutionSize(designResolutionSize.width, designResolutionSize.height, ResolutionPolicy::NO_BORDER); -#endif - - Size frameSize = glview->getFrameSize(); - - vector searchPath; - - // In this demo, we select resource according to the frame's height. - // If the resource size is different from design resolution size, you need to set contentScaleFactor. - // We use the ratio of resource's height to the height of design resolution, - // this can make sure that the resource's height could fit for the height of design resolution. - if (frameSize.height > mediumResource.size.height) { - // if the frame's height is larger than the height of medium resource size, select large resource. - searchPath.push_back(largeResource.directory); - director->setContentScaleFactor(MIN(largeResource.size.height/designResolutionSize.height, largeResource.size.width/designResolutionSize.width)); - } else if (frameSize.height > smallResource.size.height) { - // if the frame's height is larger than the height of small resource size, select medium resource. - searchPath.push_back(mediumResource.directory); - director->setContentScaleFactor(MIN(mediumResource.size.height/designResolutionSize.height, mediumResource.size.width/designResolutionSize.width)); - } else { - // if the frame's height is smaller than the height of medium resource size, select small resource. - searchPath.push_back(smallResource.directory); - director->setContentScaleFactor(MIN(smallResource.size.height/designResolutionSize.height, smallResource.size.width/designResolutionSize.width)); - } - - searchPath.push_back("common"); - - // set searching path - FileUtils::getInstance()->setSearchPaths(searchPath); - - // turn on display FPS - director->setDisplayStats(true); - - // set FPS. the default value is 1.0/60 if you don't call this - director->setAnimationInterval(1.0 / 60); - - // create a scene. it's an autorelease object - auto scene = SpineboyExample::scene(); - - // run - director->runWithScene(scene); - - return true; -} - -// This function will be called when the app is inactive. When comes a phone call,it's be invoked too -void AppDelegate::applicationDidEnterBackground () { - Director::getInstance()->stopAnimation(); - - // if you use SimpleAudioEngine, it must be paused - // SimpleAudioEngine::sharedEngine()->pauseBackgroundMusic(); -} - -// this function will be called when the app is active again -void AppDelegate::applicationWillEnterForeground () { - Director::getInstance()->startAnimation(); - - // if you use SimpleAudioEngine, it must resume here - // SimpleAudioEngine::sharedEngine()->resumeBackgroundMusic(); -} diff --git a/spine-cocos2dx/3.2/example/Classes/SpineboyExample.h b/spine-cocos2dx/3.2/example/Classes/SpineboyExample.h deleted file mode 100644 index 641834609..000000000 --- a/spine-cocos2dx/3.2/example/Classes/SpineboyExample.h +++ /dev/null @@ -1,49 +0,0 @@ -/****************************************************************************** - * Spine Runtimes Software License - * Version 2.1 - * - * Copyright (c) 2013, Esoteric Software - * All rights reserved. - * - * You are granted a perpetual, non-exclusive, non-sublicensable and - * non-transferable license to install, execute and perform the Spine Runtimes - * Software (the "Software") solely for internal use. Without the written - * permission of Esoteric Software (typically granted by licensing Spine), 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 SOFTARE 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 _SPINEBOYEXAMPLE_H_ -#define _SPINEBOYEXAMPLE_H_ - -#include "cocos2d.h" -#include - -class SpineboyExample : public cocos2d::LayerColor { -public: - static cocos2d::Scene* scene (); - - virtual bool init (); - virtual void update (float deltaTime); - - CREATE_FUNC (SpineboyExample); -private: - spine::SkeletonAnimation* skeletonNode; -}; - -#endif // _SPINEBOYEXAMPLE_H_ diff --git a/spine-cocos2dx/3.2/example/Resources/common/goblins-ffd.json b/spine-cocos2dx/3.2/example/Resources/common/goblins-ffd.json deleted file mode 100644 index b35360ad1..000000000 --- a/spine-cocos2dx/3.2/example/Resources/common/goblins-ffd.json +++ /dev/null @@ -1,1081 +0,0 @@ -{ -"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": "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 } -], -"slots": [ - { "name": "left shoulder", "bone": "left shoulder", "attachment": "left shoulder" }, - { "name": "left arm", "bone": "left arm", "attachment": "left arm" }, - { "name": "left hand item", "bone": "left hand", "attachment": "spear" }, - { "name": "left hand", "bone": "left hand", "attachment": "left hand" }, - { "name": "left foot", "bone": "left foot", "attachment": "left foot" }, - { "name": "left lower leg", "bone": "left lower leg", "attachment": "left lower leg" }, - { "name": "left upper leg", "bone": "left upper leg", "attachment": "left upper leg" }, - { "name": "neck", "bone": "neck", "attachment": "neck" }, - { "name": "torso", "bone": "torso", "attachment": "torso" }, - { "name": "pelvis", "bone": "pelvis", "attachment": "pelvis" }, - { "name": "right foot", "bone": "right foot", "attachment": "right foot" }, - { "name": "right lower leg", "bone": "right lower leg", "attachment": "right lower leg" }, - { "name": "undie straps", "bone": "pelvis", "attachment": "undie straps" }, - { "name": "undies", "bone": "pelvis", "attachment": "undies" }, - { "name": "right upper leg", "bone": "right upper leg", "attachment": "right upper leg" }, - { "name": "head", "bone": "head", "attachment": "head" }, - { "name": "eyes", "bone": "head" }, - { "name": "right shoulder", "bone": "right shoulder", "attachment": "right shoulder" }, - { "name": "right arm", "bone": "right arm", "attachment": "right arm" }, - { "name": "right hand thumb", "bone": "right hand", "attachment": "right hand thumb" }, - { "name": "right hand item", "bone": "right hand", "attachment": "dagger" }, - { "name": "right hand", "bone": "right hand", "attachment": "right hand" }, - { "name": "right hand item 2", "bone": "right hand", "attachment": "shield" } -], -"skins": { - "default": { - "left hand item": { - "dagger": { "x": 7.88, "y": -23.45, "rotation": 10.47, "width": 26, "height": 108 }, - "spear": { - "type": "skinnedmesh", - "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 ], - "hull": 14, - "width": 22, - "height": 368 - } - }, - "right hand item": { - "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": [ 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, - "width": 26, - "height": 108 - } - }, - "right hand item 2": { - "shield": { "rotation": 93.49, "width": 70, "height": 72 } - } - }, - "goblin": { - "eyes": { - "eyes closed": { "name": "goblin/eyes-closed", "x": 29.19, "y": -24.89, "rotation": -88.92, "width": 34, "height": 12 } - }, - "head": { - "head": { - "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 ], - "hull": 24, - "width": 103, - "height": 66 - } - }, - "left arm": { - "left arm": { - "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 ], - "hull": 9, - "width": 37, - "height": 35 - } - }, - "left foot": { - "left foot": { - "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": [ 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, - "width": 65, - "height": 31 - } - }, - "left hand": { - "left hand": { - "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, 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 ], - "hull": 9, - "width": 36, - "height": 41 - } - }, - "left lower leg": { - "left lower leg": { - "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": [ 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 ], - "hull": 11, - "width": 33, - "height": 70 - } - }, - "left shoulder": { - "left shoulder": { - "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 ], - "hull": 8, - "width": 29, - "height": 44 - } - }, - "left upper leg": { - "left upper leg": { - "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": [ 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, - "width": 33, - "height": 73 - } - }, - "neck": { - "neck": { - "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 ], - "hull": 10, - "width": 36, - "height": 41 - } - }, - "pelvis": { - "pelvis": { - "name": "goblin/pelvis", - "type": "mesh", - "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, - "width": 62, - "height": 43 - } - }, - "right arm": { - "right arm": { - "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 ], - "hull": 8, - "width": 23, - "height": 50 - } - }, - "right foot": { - "right foot": { - "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": [ 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, - "width": 63, - "height": 33 - } - }, - "right hand": { - "right hand": { - "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": [ 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 ], - "hull": 11, - "width": 36, - "height": 37 - } - }, - "right hand thumb": { - "right hand thumb": { - "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": [ 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, - "width": 36, - "height": 37 - } - }, - "right lower leg": { - "right lower leg": { - "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": [ 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 ], - "hull": 11, - "width": 36, - "height": 76 - } - }, - "right shoulder": { - "right shoulder": { - "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 ], - "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, - "width": 39, - "height": 45 - } - }, - "right upper leg": { - "right upper leg": { - "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": [ 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 ], - "hull": 10, - "width": 34, - "height": 63 - } - }, - "torso": { - "torso": { - "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 ], - "hull": 16, - "width": 68, - "height": 96 - } - }, - "undie straps": { - "undie straps": { - "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": [ 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 ], - "hull": 9, - "width": 55, - "height": 19 - } - }, - "undies": { - "undies": { - "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": [ 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 ], - "hull": 10, - "width": 36, - "height": 29 - } - } - }, - "goblingirl": { - "eyes": { - "eyes closed": { "name": "goblingirl/eyes-closed", "x": 28, "y": -25.54, "rotation": -87.04, "width": 37, "height": 21 } - }, - "head": { - "head": { "name": "goblingirl/head", "x": 27.71, "y": -4.32, "rotation": -85.58, "width": 103, "height": 81 } - }, - "left arm": { - "left arm": { "name": "goblingirl/left-arm", "x": 19.64, "y": -2.42, "rotation": 33.05, "width": 37, "height": 35 } - }, - "left foot": { - "left foot": { "name": "goblingirl/left-foot", "x": 25.17, "y": 7.92, "rotation": 3.32, "width": 65, "height": 31 } - }, - "left hand": { - "left hand": { - "name": "goblingirl/left-hand", - "x": 4.34, - "y": 2.39, - "scaleX": 0.896, - "scaleY": 0.896, - "rotation": 30.34, - "width": 35, - "height": 40 - } - }, - "left lower leg": { - "left lower leg": { "name": "goblingirl/left-lower-leg", "x": 25.02, "y": -0.6, "rotation": 105.75, "width": 33, "height": 70 } - }, - "left shoulder": { - "left shoulder": { "name": "goblingirl/left-shoulder", "x": 19.8, "y": -0.42, "rotation": 61.21, "width": 28, "height": 46 } - }, - "left upper leg": { - "left upper leg": { "name": "goblingirl/left-upper-leg", "x": 30.21, "y": -2.95, "rotation": 89.09, "width": 33, "height": 70 } - }, - "neck": { - "neck": { "name": "goblingirl/neck", "x": 6.16, "y": -3.14, "rotation": -98.86, "width": 35, "height": 41 } - }, - "pelvis": { - "pelvis": { "name": "goblingirl/pelvis", "x": -3.87, "y": 3.18, "width": 62, "height": 43 } - }, - "right arm": { - "right arm": { "name": "goblingirl/right-arm", "x": 16.85, "y": -0.66, "rotation": 93.52, "width": 28, "height": 50 } - }, - "right foot": { - "right foot": { "name": "goblingirl/right-foot", "x": 23.46, "y": 9.66, "rotation": 1.52, "width": 63, "height": 33 } - }, - "right hand": { - "right hand": { "name": "goblingirl/right-hand", "x": 7.21, "y": 3.43, "rotation": 91.16, "width": 36, "height": 37 } - }, - "right hand thumb": { - "right hand thumb": { "name": "goblingirl/right-hand", "x": 7.21, "y": 3.43, "rotation": 91.16, "width": 36, "height": 37 } - }, - "right lower leg": { - "right lower leg": { "name": "goblingirl/right-lower-leg", "x": 26.15, "y": -3.27, "rotation": 111.83, "width": 36, "height": 76 } - }, - "right shoulder": { - "right shoulder": { "name": "goblingirl/right-shoulder", "x": 14.46, "y": 0.45, "rotation": 129.85, "width": 39, "height": 45 } - }, - "right upper leg": { - "right upper leg": { "name": "goblingirl/right-upper-leg", "x": 19.69, "y": 2.13, "rotation": 97.49, "width": 34, "height": 63 } - }, - "torso": { - "torso": { "name": "goblingirl/torso", "x": 36.28, "y": -5.14, "rotation": -95.74, "width": 68, "height": 96 } - }, - "undie straps": { - "undie straps": { "name": "goblingirl/undie-straps", "x": -1.51, "y": 14.18, "width": 55, "height": 19 } - }, - "undies": { - "undies": { "name": "goblingirl/undies", "x": 5.4, "y": 1.7, "width": 36, "height": 29 } - } - } -}, -"animations": { - "walk": { - "slots": { - "eyes": { - "attachment": [ - { "time": 0.7, "name": "eyes closed" }, - { "time": 0.8, "name": null } - ] - } - }, - "bones": { - "left upper leg": { - "rotate": [ - { "time": 0, "angle": -26.55 }, - { "time": 0.1333, "angle": -8.78 }, - { "time": 0.2333, "angle": 9.51 }, - { "time": 0.3666, "angle": 30.74 }, - { "time": 0.5, "angle": 25.33 }, - { "time": 0.6333, "angle": 26.11 }, - { "time": 0.7333, "angle": 7.45 }, - { "time": 0.8666, "angle": -21.19 }, - { "time": 1, "angle": -26.55 } - ], - "translate": [ - { "time": 0, "x": -1.32, "y": 1.7 }, - { "time": 0.3666, "x": -0.06, "y": 2.42 }, - { "time": 1, "x": -1.32, "y": 1.7 } - ] - }, - "right upper leg": { - "rotate": [ - { "time": 0, "angle": 42.45 }, - { - "time": 0.1333, - "angle": 49.86, - "curve": [ 0.414, 0, 0.705, 0.99 ] - }, - { "time": 0.2333, "angle": 22.51 }, - { "time": 0.5, "angle": -16.93 }, - { "time": 0.6333, "angle": 1.89 }, - { - "time": 0.7333, - "angle": 34.86, - "curve": [ 0.462, 0.11, 1, 1 ] - }, - { - "time": 0.8666, - "angle": 58.68, - "curve": [ 0.5, 0.02, 1, 1 ] - }, - { "time": 1, "angle": 42.45 } - ], - "translate": [ - { "time": 0, "x": 6.23, "y": 0 }, - { "time": 0.2333, "x": 2.14, "y": 2.4 }, - { "time": 0.5, "x": 2.44, "y": 4.8 }, - { "time": 1, "x": 6.23, "y": 0 } - ] - }, - "left lower leg": { - "rotate": [ - { "time": 0, "angle": -18.05 }, - { "time": 0.1333, "angle": -63.5 }, - { "time": 0.2333, "angle": -83.01 }, - { "time": 0.5, "angle": 5.11 }, - { "time": 0.6333, "angle": -28.29 }, - { "time": 0.7333, "angle": -27.52 }, - { "time": 0.8666, "angle": 3.53 }, - { "time": 1, "angle": -18.05 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 }, - { "time": 0.2333, "x": 2.55, "y": -0.47 }, - { "time": 0.5, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 1, "x": 0, "y": 0 } - ] - }, - "left foot": { - "rotate": [ - { "time": 0, "angle": -14.56 }, - { "time": 0.1333, "angle": -10.42 }, - { "time": 0.2333, "angle": -5.01 }, - { "time": 0.3, "angle": 6.67 }, - { "time": 0.3666, "angle": 3.87 }, - { "time": 0.5, "angle": -3.87 }, - { "time": 0.6333, "angle": 2.78 }, - { "time": 0.7333, "angle": -11.99 }, - { "time": 0.8666, "angle": -12.45 }, - { "time": 1, "angle": -14.56 } - ] - }, - "right shoulder": { - "rotate": [ - { - "time": 0, - "angle": 5.29, - "curve": [ 0.264, 0, 0.75, 1 ] - }, - { "time": 0.6333, "angle": 6.65 }, - { "time": 1, "angle": 5.29 } - ] - }, - "right arm": { - "rotate": [ - { - "time": 0, - "angle": -4.02, - "curve": [ 0.267, 0, 0.804, 0.99 ] - }, - { - "time": 0.6333, - "angle": 19.78, - "curve": [ 0.307, 0, 0.787, 0.99 ] - }, - { "time": 1, "angle": -4.02 } - ] - }, - "right hand": { - "rotate": [ - { "time": 0, "angle": 8.98 }, - { "time": 0.6333, "angle": 0.51 }, - { "time": 1, "angle": 8.98 } - ] - }, - "left shoulder": { - "rotate": [ - { - "time": 0, - "angle": 6.25, - "curve": [ 0.339, 0, 0.683, 1 ] - }, - { - "time": 0.5, - "angle": -11.78, - "curve": [ 0.281, 0, 0.686, 0.99 ] - }, - { "time": 1, "angle": 6.25 } - ], - "translate": [ - { "time": 0, "x": 1.15, "y": 0.23 } - ] - }, - "left hand": { - "rotate": [ - { - "time": 0, - "angle": -21.23, - "curve": [ 0.295, 0, 0.755, 0.98 ] - }, - { - "time": 0.5, - "angle": -27.28, - "curve": [ 0.241, 0, 0.75, 0.97 ] - }, - { "time": 1, "angle": -21.23 } - ] - }, - "left arm": { - "rotate": [ - { - "time": 0, - "angle": 28.37, - "curve": [ 0.339, 0, 0.683, 1 ] - }, - { - "time": 0.5, - "angle": 60.09, - "curve": [ 0.281, 0, 0.686, 0.99 ] - }, - { "time": 1, "angle": 28.37 } - ] - }, - "torso": { - "rotate": [ - { "time": 0, "angle": -10.28 }, - { - "time": 0.1333, - "angle": -15.38, - "curve": [ 0.545, 0, 0.818, 1 ] - }, - { - "time": 0.3666, - "angle": -9.78, - "curve": [ 0.58, 0.17, 0.669, 0.99 ] - }, - { - "time": 0.6333, - "angle": -15.75, - "curve": [ 0.235, 0.01, 0.795, 1 ] - }, - { - "time": 0.8666, - "angle": -7.06, - "curve": [ 0.209, 0, 0.816, 0.98 ] - }, - { "time": 1, "angle": -10.28 } - ], - "translate": [ - { "time": 0, "x": -3.72, "y": -0.01 } - ] - }, - "right foot": { - "rotate": [ - { "time": 0, "angle": -5.25 }, - { "time": 0.2333, "angle": -17.76 }, - { "time": 0.3666, "angle": -20.09 }, - { "time": 0.5, "angle": -19.73 }, - { "time": 0.7333, "angle": -11.68 }, - { "time": 0.8, "angle": 4.46 }, - { "time": 0.8666, "angle": 0.46 }, - { "time": 1, "angle": -5.25 } - ] - }, - "right lower leg": { - "rotate": [ - { - "time": 0, - "angle": -3.39, - "curve": [ 0.316, 0.01, 0.741, 0.98 ] - }, - { - "time": 0.1333, - "angle": -43.21, - "curve": [ 0.414, 0, 0.705, 0.99 ] - }, - { "time": 0.2333, "angle": -25.98 }, - { "time": 0.5, "angle": -19.53 }, - { "time": 0.6333, "angle": -64.8 }, - { - "time": 0.7333, - "angle": -89.54, - "curve": [ 0.557, 0.18, 1, 1 ] - }, - { "time": 1, "angle": -3.39 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.5, "x": 0, "y": 0 }, - { "time": 0.6333, "x": 2.18, "y": 0.21 }, - { "time": 1, "x": 0, "y": 0 } - ] - }, - "hip": { - "rotate": [ - { "time": 0, "angle": 0, "curve": "stepped" }, - { "time": 1, "angle": 0 } - ], - "translate": [ - { "time": 0, "x": 0, "y": -8.4 }, - { - "time": 0.1333, - "x": 0, - "y": -9.35, - "curve": [ 0.326, 0.05, 0.674, 0.93 ] - }, - { - "time": 0.2333, - "x": 0, - "y": -0.59, - "curve": [ 0.325, 0.39, 0.643, 0.7 ] - }, - { "time": 0.3666, "x": 0, "y": -3.96 }, - { "time": 0.5, "x": 0, "y": -8.4 }, - { - "time": 0.6333, - "x": 0, - "y": -10, - "curve": [ 0.359, 0.47, 0.646, 0.74 ] - }, - { - "time": 0.7333, - "x": 0, - "y": -5.29, - "curve": [ 0.333, 0.36, 0.662, 0.69 ] - }, - { - "time": 0.8, - "x": 0, - "y": -2.49, - "curve": [ 0.322, 0.35, 0.651, 0.68 ] - }, - { "time": 0.8666, "x": 0, "y": -3.96 }, - { "time": 1, "x": 0, "y": -8.4 } - ] - }, - "neck": { - "rotate": [ - { "time": 0, "angle": 3.6 }, - { "time": 0.1333, "angle": 17.49 }, - { "time": 0.2333, "angle": 6.1 }, - { "time": 0.3666, "angle": 3.45 }, - { "time": 0.5, "angle": 5.17 }, - { "time": 0.6333, "angle": 18.36 }, - { "time": 0.7333, "angle": 6.09 }, - { "time": 0.8666, "angle": 2.28 }, - { "time": 1, "angle": 3.6 } - ] - }, - "head": { - "rotate": [ - { - "time": 0, - "angle": 3.6, - "curve": [ 0, 0, 0.704, 1.17 ] - }, - { "time": 0.1333, "angle": -0.2 }, - { "time": 0.2333, "angle": 6.1 }, - { "time": 0.3666, "angle": 3.45 }, - { - "time": 0.5, - "angle": 5.17, - "curve": [ 0, 0, 0.704, 1.61 ] - }, - { "time": 0.6666, "angle": 1.1 }, - { "time": 0.7333, "angle": 6.09 }, - { "time": 0.8666, "angle": 2.28 }, - { "time": 1, "angle": 3.6 } - ] - }, - "pelvis": { - "rotate": [ - { "time": 0, "angle": -1.33 } - ], - "translate": [ - { "time": 0, "x": 0.39, "y": -0.78 } - ] - }, - "spear1": { - "rotate": [ - { "time": 0, "angle": 1.84 }, - { "time": 0.2, "angle": -5.38 }, - { "time": 0.5, "angle": 2.95 }, - { "time": 0.7333, "angle": -3.67 }, - { "time": 1, "angle": 1.84 } - ] - }, - "spear2": { - "rotate": [ - { "time": 0, "angle": 1.84 }, - { "time": 0.2, "angle": -5.38 }, - { "time": 0.5, "angle": 2.95 }, - { "time": 0.7333, "angle": -3.67 }, - { "time": 1, "angle": 1.84 } - ] - }, - "spear3": { - "rotate": [ - { "time": 0, "angle": 3.64 }, - { "time": 0.2, "angle": -3.59 }, - { "time": 0.5, "angle": 4.74 }, - { "time": 0.7333, "angle": -1.87 }, - { "time": 1, "angle": 3.64 } - ] - } - }, - "ffd": { - "default": { - "left hand item": { - "spear": [ - { "time": 0 } - ] - }, - "right hand item": { - "dagger": [ - { - "time": 0, - "offset": 26, - "vertices": [ 2.34, 0.14 ], - "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 ], - "curve": [ 0.25, 0, 0.75, 1 ] - }, - { - "time": 1, - "offset": 26, - "vertices": [ 2.34, 0.14 ] - } - ] - } - }, - "goblin": { - "head": { - "head": [ - { - "time": 0, - "curve": [ 0.632, 0, 0.75, 1 ] - }, - { - "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 ], - "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 ], - "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 ], - "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 ], - "curve": [ 0.25, 0, 0.75, 1 ] - }, - { "time": 1 } - ] - }, - "left foot": { - "left foot": [ - { - "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 ] - }, - { "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 ] - }, - { - "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 ] - }, - { "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 ] - }, - { - "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 ] - }, - { - "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 ] - } - ] - }, - "pelvis": { - "pelvis": [ - { "time": 0 }, - { - "time": 0.1333, - "offset": 6, - "vertices": [ -0.68, -4.13 ] - }, - { - "time": 0.3333, - "offset": 6, - "vertices": [ -1.04, -3.1 ] - }, - { - "time": 0.7, - "offset": 6, - "vertices": [ -1.42, -6.3 ] - }, - { - "time": 0.8666, - "offset": 6, - "vertices": [ -1.13, -1.79 ] - }, - { "time": 1 } - ] - }, - "right foot": { - "right foot": [ - { "time": 0 }, - { - "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 ] - }, - { - "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 ] - }, - { - "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 ] - }, - { - "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 ] - }, - { - "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 ] - }, - { "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 ] - }, - { - "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 ] - }, - { "time": 0.8666 } - ] - }, - "right hand": { - "right hand": [ - { - "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 ] - }, - { "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 ] - } - ] - }, - "right lower leg": { - "right lower leg": [ - { "time": 0 }, - { - "time": 0.6, - "offset": 6, - "vertices": [ 1.8, -1.56 ] - }, - { "time": 1 } - ] - }, - "right upper leg": { - "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 ] - }, - { "time": 0.3333 }, - { - "time": 0.8666, - "offset": 14, - "vertices": [ 0.13, -2.35, -1.33, -5.99, -1.35, -4.43 ] - }, - { - "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 ] - } - ] - }, - "torso": { - "torso": [ - { - "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 ] - }, - { - "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 ] - }, - { - "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 ] - }, - { - "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 ] - }, - { - "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 ] - }, - { - "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 ] - }, - { - "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 ] - } - ] - }, - "undie straps": { - "undie straps": [ - { - "time": 0, - "offset": 2, - "vertices": [ -1.77, 0.54, -0.96, -1.03, -0.39, -0.24, -1.77, 0.54 ] - }, - { - "time": 0.1333, - "offset": 2, - "vertices": [ -2.25, -1.03, -1.49, -4.23, -0.74, -2.84, -1.9, 0.54 ] - }, - { - "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 ] - }, - { - "time": 0.7, - "offset": 2, - "vertices": [ -0.91, -2.76, -0.62, -3.63, -0.84, -2.26, -2.56, 0.52 ] - }, - { - "time": 0.8666, - "offset": 2, - "vertices": [ -2.56, 0.52, -1.58, 0.32, -1.38, 0.32, -2.56, 0.52 ] - }, - { - "time": 1, - "offset": 2, - "vertices": [ -1.77, 0.54, -0.8, 0.53, -0.8, 0.53, -1.77, 0.54 ] - } - ] - }, - "undies": { - "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 ] - }, - { - "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 ] - }, - { - "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 ] - }, - { - "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 ] - }, - { - "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 ] - }, - { - "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 ] - }, - { - "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 ] - }, - { - "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 ] - } - ] - } - } - } - } -} -} \ No newline at end of file diff --git a/spine-cocos2dx/3.2/example/Resources/common/spineboy.json b/spine-cocos2dx/3.2/example/Resources/common/spineboy.json deleted file mode 100644 index 1ffa7aad5..000000000 --- a/spine-cocos2dx/3.2/example/Resources/common/spineboy.json +++ /dev/null @@ -1,2412 +0,0 @@ -{ -"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": "front_bracer", - "parent": "front_upper_arm", - "length": 40.57, - "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" } -], -"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", "additive": true } -], -"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.49, "y": 6, "rotation": 67.16, "width": 75, "height": 82 }, - "front_fist_open": { "x": 39.56, "y": 7.76, "rotation": 67.16, "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.3, "y": 16.4, "rotation": 60.82, "width": 210, "height": 203 } - }, - "head": { - "head": { "x": 128.95, "y": 0.29, "rotation": -70.63, "width": 271, "height": 298 } - }, - "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": { - "death": { - "slots": { - "eye": { - "attachment": [ - { "time": 0, "name": "eye_surprised" }, - { "time": 0.4666, "name": "eye_indifferent" }, - { "time": 2.2333, "name": "eye_surprised" }, - { "time": 4.5333, "name": "eye_indifferent" } - ] - }, - "front_fist": { - "attachment": [ - { "time": 0, "name": "front_fist_open" } - ] - }, - "mouth": { - "attachment": [ - { "time": 0, "name": "mouth_oooo" }, - { "time": 2.2333, "name": "mouth_grind" }, - { "time": 4.5333, "name": "mouth_oooo" } - ] - } - }, - "bones": { - "head": { - "rotate": [ - { "time": 0, "angle": -2.82 }, - { "time": 0.1333, "angle": -28.74 }, - { "time": 0.2333, "angle": 11.42 }, - { "time": 0.3333, "angle": -50.24 }, - { "time": 0.4, "angle": -72.66, "curve": "stepped" }, - { "time": 0.4333, "angle": -72.66 }, - { "time": 0.5, "angle": -20.24 }, - { "time": 0.5666, "angle": -85.28, "curve": "stepped" }, - { "time": 0.9333, "angle": -85.28, "curve": "stepped" }, - { "time": 2.2333, "angle": -85.28 }, - { "time": 2.5, "angle": -51.96, "curve": "stepped" }, - { "time": 4.5333, "angle": -51.96 }, - { "time": 4.6666, "angle": -85.28 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - }, - "neck": { - "rotate": [ - { "time": 0, "angle": -2.82 }, - { "time": 0.1333, "angle": 12.35 }, - { "time": 0.2333, "angle": 29.89 }, - { "time": 0.3, "angle": 70.36 }, - { "time": 0.4, "angle": -10.22, "curve": "stepped" }, - { "time": 0.4333, "angle": -10.22 }, - { "time": 0.5, "angle": 2.92 }, - { "time": 0.5666, "angle": 47.94, "curve": "stepped" }, - { "time": 2.2333, "angle": 47.94 }, - { "time": 2.5, "angle": 18.5, "curve": "stepped" }, - { "time": 4.5333, "angle": 18.5 }, - { "time": 4.6666, "angle": 47.94 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - }, - "torso": { - "rotate": [ - { "time": 0, "angle": -8.61 }, - { "time": 0.1333, "angle": 28.19 }, - { "time": 0.2666, "angle": -280.19 }, - { "time": 0.4, "angle": -237.22, "curve": "stepped" }, - { "time": 0.4333, "angle": -237.22 }, - { "time": 0.5, "angle": 76.03, "curve": "stepped" }, - { "time": 0.8, "angle": 76.03, "curve": "stepped" }, - { "time": 0.9333, "angle": 76.03, "curve": "stepped" }, - { "time": 2.2333, "angle": 76.03 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.9333, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 2.2333, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - }, - "front_upper_arm": { - "rotate": [ - { "time": 0, "angle": -38.85 }, - { "time": 0.1333, "angle": -299.58 }, - { "time": 0.2666, "angle": -244.74 }, - { "time": 0.4, "angle": -292.35 }, - { "time": 0.4333, "angle": -315.84 }, - { "time": 0.5, "angle": -347.94 }, - { "time": 0.7, "angle": -347.33, "curve": "stepped" }, - { "time": 2.2333, "angle": -347.33 }, - { "time": 2.7, "angle": -290.68 }, - { "time": 2.7666, "angle": -285.1 }, - { "time": 4.6666, "angle": -290.68 }, - { "time": 4.8, "angle": 8.61 }, - { "time": 4.8666, "angle": 10.94 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - }, - "rear_upper_arm": { - "rotate": [ - { "time": 0, "angle": -44.69 }, - { "time": 0.1333, "angle": 112.26 }, - { "time": 0.2666, "angle": 129.07 }, - { "time": 0.4, "angle": 134.94, "curve": "stepped" }, - { "time": 0.4333, "angle": 134.94 }, - { "time": 0.5666, "angle": 172.6, "curve": "stepped" }, - { "time": 0.9333, "angle": 172.6, "curve": "stepped" }, - { "time": 2.2333, "angle": 172.6 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - }, - "front_bracer": { - "rotate": [ - { "time": 0, "angle": 21.88 }, - { "time": 0.1333, "angle": 11.48 }, - { "time": 0.2666, "angle": -18.81 }, - { "time": 0.4, "angle": -18.92 }, - { "time": 0.4333, "angle": -18.28 }, - { "time": 0.5, "angle": 60.61 }, - { "time": 0.7, "angle": -18.87, "curve": "stepped" }, - { "time": 2.2333, "angle": -18.87 }, - { "time": 2.7, "angle": -1.95, "curve": "stepped" }, - { "time": 4.6666, "angle": -1.95 }, - { "time": 4.8, "angle": 34.55 }, - { "time": 4.9333, "angle": -18.74 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - }, - "front_fist": { - "rotate": [ - { "time": 0, "angle": -2.33 }, - { "time": 0.2666, "angle": 26.34 }, - { "time": 0.7, "angle": -6.07, "curve": "stepped" }, - { "time": 2.2333, "angle": -6.07 }, - { "time": 2.7, "angle": 5.72, "curve": "stepped" }, - { "time": 4.6666, "angle": 5.72 }, - { "time": 4.8666, "angle": -6.52 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - }, - "rear_bracer": { - "rotate": [ - { "time": 0, "angle": 10.36 }, - { "time": 0.1333, "angle": -23.12 }, - { "time": 0.2666, "angle": -23.11 }, - { "time": 0.4, "angle": -23.16, "curve": "stepped" }, - { "time": 0.4333, "angle": -23.16 }, - { "time": 0.5666, "angle": -23.2, "curve": "stepped" }, - { "time": 0.9333, "angle": -23.2, "curve": "stepped" }, - { "time": 2.2333, "angle": -23.2 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - }, - "gun": { - "rotate": [ - { "time": 0, "angle": -2.78 }, - { "time": 0.1333, "angle": -24.58 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - }, - "hip": { - "rotate": [ - { "time": 0, "angle": 0, "curve": "stepped" }, - { "time": 0.9333, "angle": 0, "curve": "stepped" }, - { "time": 2.2333, "angle": 0 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 }, - { "time": 0.2, "x": 50.34, "y": 151.73 }, - { "time": 0.4, "x": 5.16, "y": -119.64, "curve": "stepped" }, - { "time": 0.4333, "x": 5.16, "y": -119.64 }, - { "time": 0.5, "x": 50.34, "y": -205.18, "curve": "stepped" }, - { "time": 0.8, "x": 50.34, "y": -205.18, "curve": "stepped" }, - { "time": 0.9333, "x": 50.34, "y": -205.18, "curve": "stepped" }, - { "time": 2.2333, "x": 50.34, "y": -205.18 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - }, - "front_thigh": { - "rotate": [ - { "time": 0, "angle": 0 }, - { "time": 0.1333, "angle": 8.47 }, - { "time": 0.2666, "angle": 115.95 }, - { "time": 0.4, "angle": 180.66, "curve": "stepped" }, - { "time": 0.4333, "angle": 180.66 }, - { "time": 0.5, "angle": 155.22 }, - { "time": 0.6, "angle": 97.73 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - }, - "front_shin": { - "rotate": [ - { "time": 0, "angle": 0 }, - { "time": 0.1333, "angle": -27.37 }, - { "time": 0.2666, "angle": -35.1 }, - { "time": 0.4, "angle": -37.72, "curve": "stepped" }, - { "time": 0.4333, "angle": -37.72 }, - { "time": 0.5, "angle": -40.06 }, - { "time": 0.6, "angle": 2.76 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - }, - "rear_thigh": { - "rotate": [ - { "time": 0, "angle": 0 }, - { "time": 0.1333, "angle": 70.45 }, - { "time": 0.2666, "angle": 155.34 }, - { "time": 0.4, "angle": 214.31, "curve": "stepped" }, - { "time": 0.4333, "angle": 214.31 }, - { "time": 0.5, "angle": 169.67 }, - { "time": 0.8, "angle": 83.27 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - }, - "rear_shin": { - "rotate": [ - { "time": 0, "angle": 0 }, - { "time": 0.1333, "angle": 18.93 }, - { "time": 0.2666, "angle": -21.04 }, - { "time": 0.4, "angle": -29.93, "curve": "stepped" }, - { "time": 0.4333, "angle": -29.93 }, - { "time": 0.5, "angle": -16.79 }, - { "time": 0.8, "angle": 7.77 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - }, - "rear_foot": { - "rotate": [ - { "time": 0, "angle": 0 }, - { "time": 0.1333, "angle": -11.62 }, - { "time": 0.4, "angle": -45.59, "curve": "stepped" }, - { "time": 0.4333, "angle": -45.59 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - }, - "front_foot": { - "rotate": [ - { "time": 0, "angle": 0 }, - { "time": 0.4, "angle": -48.75, "curve": "stepped" }, - { "time": 0.4333, "angle": -48.75 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - }, - "gunTip": { - "rotate": [ - { "time": 0, "angle": 0 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - } - } - }, - "hit": { - "slots": { - "front_fist": { - "attachment": [ - { "time": 0.1666, "name": "front_fist_open" } - ] - }, - "mouth": { - "attachment": [ - { "time": 0, "name": "mouth_grind" }, - { "time": 0.3333, "name": "mouth_smile" } - ] - } - }, - "bones": { - "torso": { - "rotate": [ - { "time": 0, "angle": 56.42 }, - { "time": 0.3333, "angle": 8.89 } - ] - }, - "neck": { - "rotate": [ - { "time": 0, "angle": 35.38 }, - { "time": 0.2333, "angle": 24.94 } - ] - }, - "head": { - "rotate": [ - { "time": 0, "angle": 10.21 }, - { "time": 0.3333, "angle": -41.3 } - ] - }, - "front_upper_arm": { - "rotate": [ - { - "time": 0, - "angle": -310.92, - "curve": [ 0.38, 0.53, 0.744, 1 ] - }, - { "time": 0.3333, "angle": -112.59 } - ], - "translate": [ - { "time": 0, "x": 7.23, "y": -13.13 } - ] - }, - "front_bracer": { - "rotate": [ - { "time": 0, "angle": 36.99 }, - { "time": 0.3333, "angle": -28.64 } - ] - }, - "front_fist": { - "rotate": [ - { "time": 0, "angle": 13.59 }, - { "time": 0.3333, "angle": 7.55 } - ] - }, - "rear_upper_arm": { - "rotate": [ - { - "time": 0, - "angle": 271.02, - "curve": [ 0.342, 0.36, 0.68, 0.71 ] - }, - { "time": 0.3333, "angle": -15.84 } - ], - "translate": [ - { "time": 0.3333, "x": -0.09, "y": -0.46 } - ] - }, - "rear_bracer": { - "rotate": [ - { "time": 0, "angle": 0 }, - { "time": 0.3333, "angle": 40.03 } - ] - }, - "gun": { - "rotate": [ - { "time": 0, "angle": 14.98 }, - { "time": 0.3333, "angle": 39.75 } - ] - }, - "hip": { - "translate": [ - { "time": 0, "x": -75.54, "y": -78.03 }, - { "time": 0.2333, "x": -36.48, "y": 12.42 }, - { "time": 0.3333, "x": -36.48, "y": -2.99 } - ] - }, - "front_thigh": { - "rotate": [ - { - "time": 0, - "angle": 90.94, - "curve": [ 0.227, 0.26, 0.432, 1 ] - }, - { "time": 0.3333, "angle": 32.02 } - ], - "translate": [ - { "time": 0, "x": 7.21, "y": -4 } - ] - }, - "rear_thigh": { - "rotate": [ - { - "time": 0, - "angle": 40.51, - "curve": [ 0.295, 0.3, 0.59, 0.99 ] - }, - { "time": 0.3333, "angle": 90.76 } - ], - "translate": [ - { "time": 0, "x": -1.96, "y": -0.32 } - ] - }, - "front_shin": { - "rotate": [ - { "time": 0, "angle": -96.62 }, - { "time": 0.3333, "angle": -15.13 } - ] - }, - "rear_shin": { - "rotate": [ - { "time": 0, "angle": 7.99 }, - { "time": 0.3333, "angle": -67.54 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - }, - "front_foot": { - "rotate": [ - { "time": 0, "angle": 5.4 }, - { "time": 0.3333, "angle": -16.26 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - }, - "rear_foot": { - "rotate": [ - { "time": 0, "angle": 2.67 }, - { "time": 0.3333, "angle": -10.31 } - ] - } - } - }, - "idle": { - "slots": { - "front_fist": { - "attachment": [ - { "time": 0, "name": "front_fist_open" }, - { "time": 1.6666, "name": "front_fist_open" } - ] - }, - "mouth": { - "attachment": [ - { "time": 0, "name": "mouth_smile" }, - { "time": 1.6666, "name": "mouth_smile" } - ] - } - }, - "bones": { - "torso": { - "rotate": [ - { - "time": 0, - "angle": -5.61, - "curve": [ 0.25, 0, 0.75, 1 ] - }, - { - "time": 0.8333, - "angle": -9.65, - "curve": [ 0.25, 0, 0.75, 1 ] - }, - { "time": 1.6666, "angle": -5.61 } - ], - "translate": [ - { "time": 0, "x": -6.49, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 1.6666, "x": 1, "y": 1 } - ] - }, - "front_upper_arm": { - "rotate": [ - { - "time": 0, - "angle": -59.85, - "curve": [ 0.492, 0, 0.75, 1 ] - }, - { - "time": 0.6666, - "angle": -54.31, - "curve": [ 0.324, 0.11, 0.75, 1 ] - }, - { "time": 1.6666, "angle": -59.85 } - ], - "translate": [ - { "time": 0, "x": -7.12, "y": -8.23 }, - { "time": 0.6666, "x": -6.32, "y": -8.3 }, - { "time": 1.6666, "x": -7.12, "y": -8.23 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 1.6666, "x": 1, "y": 1 } - ] - }, - "rear_upper_arm": { - "rotate": [ - { - "time": 0, - "angle": 62.41, - "curve": [ 0.504, 0.02, 0.75, 1 ] - }, - { - "time": 0.7333, - "angle": 43.83, - "curve": [ 0.25, 0, 0.75, 1 ] - }, - { "time": 1.6666, "angle": 62.41 } - ], - "translate": [ - { "time": 0, "x": -1.83, "y": -16.78 }, - { "time": 0.6666, "x": 0.34, "y": -15.23 }, - { "time": 1.6666, "x": -1.83, "y": -16.78 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 1.6666, "x": 1, "y": 1 } - ] - }, - "neck": { - "rotate": [ - { "time": 0, "angle": 0 }, - { "time": 0.6666, "angle": 2.39 }, - { "time": 1.6666, "angle": 0 } - ], - "translate": [ - { "time": 0, "x": -1.88, "y": -4.76, "curve": "stepped" }, - { "time": 1.6666, "x": -1.88, "y": -4.76 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 1.6666, "x": 1, "y": 1 } - ] - }, - "front_thigh": { - "rotate": [ - { - "time": 0, - "angle": 0.64, - "curve": [ 0.235, 0, 0.558, 0.99 ] - }, - { - "time": 0.6666, - "angle": -4.34, - "curve": [ 0.594, 0, 0.653, 1 ] - }, - { "time": 1.6666, "angle": 0.64 } - ], - "translate": [ - { "time": 0, "x": -13.39, "y": 6.69, "curve": "stepped" }, - { "time": 1.6666, "x": -13.39, "y": 6.69 } - ], - "scale": [ - { - "time": 0, - "x": 0.896, - "y": 1, - "curve": [ 0.235, 0, 0.558, 0.99 ] - }, - { - "time": 0.6666, - "x": 0.825, - "y": 1, - "curve": [ 0.594, 0, 0.653, 1 ] - }, - { "time": 1.6666, "x": 0.896, "y": 1 } - ] - }, - "front_shin": { - "rotate": [ - { "time": 0, "angle": -19.28, "curve": "stepped" }, - { "time": 1.6666, "angle": -19.28 } - ], - "scale": [ - { - "time": 0, - "x": 1, - "y": 1, - "curve": [ 0.235, 0, 0.558, 0.99 ] - }, - { - "time": 0.6666, - "x": 0.994, - "y": 1, - "curve": [ 0.594, 0, 0.653, 1 ] - }, - { "time": 1.6666, "x": 1, "y": 1 } - ] - }, - "rear_thigh": { - "rotate": [ - { - "time": 0, - "angle": 30.5, - "curve": [ 0.235, 0, 0.558, 0.99 ] - }, - { - "time": 0.6666, - "angle": 40.15, - "curve": [ 0.594, 0, 0.653, 1 ] - }, - { "time": 1.6666, "angle": 30.5 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 1.6666, "x": 1, "y": 1 } - ] - }, - "rear_shin": { - "rotate": [ - { - "time": 0, - "angle": -23.83, - "curve": [ 0.235, 0, 0.558, 0.99 ] - }, - { - "time": 0.6666, - "angle": -43.77, - "curve": [ 0.594, 0, 0.653, 1 ] - }, - { "time": 1.6666, "angle": -23.83 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 1.6666, "x": 1, "y": 1 } - ] - }, - "front_foot": { - "rotate": [ - { - "time": 0, - "angle": 5.13, - "curve": [ 0.235, 0, 0.558, 0.99 ] - }, - { - "time": 0.6666, - "angle": 10.04, - "curve": [ 0.594, 0, 0.653, 1 ] - }, - { "time": 1.6666, "angle": 5.13 } - ], - "scale": [ - { "time": 0, "x": 0.755, "y": 1.309, "curve": "stepped" }, - { "time": 1.6666, "x": 0.755, "y": 1.309 } - ] - }, - "hip": { - "translate": [ - { - "time": 0, - "x": -6.63, - "y": -23.01, - "curve": [ 0.235, 0, 0.558, 0.99 ] - }, - { - "time": 0.6666, - "x": 6.27, - "y": -35, - "curve": [ 0.594, 0, 0.653, 1 ] - }, - { "time": 1.6666, "x": -6.63, "y": -23.01 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 1.6666, "x": 1, "y": 1 } - ] - }, - "rear_foot": { - "rotate": [ - { - "time": 0, - "angle": -7.34, - "curve": [ 0.235, 0, 0.558, 0.99 ] - }, - { - "time": 0.6666, - "angle": 3.85, - "curve": [ 0.594, 0, 0.653, 1 ] - }, - { "time": 1.6666, "angle": -7.34 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 1.6666, "x": 1, "y": 1 } - ] - }, - "rear_bracer": { - "rotate": [ - { - "time": 0, - "angle": -17.16, - "curve": [ 0.25, 0, 0.75, 1 ] - }, - { - "time": 0.6666, - "angle": 12.52, - "curve": [ 0.25, 0, 0.75, 1 ] - }, - { "time": 1.6666, "angle": -17.16 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 1.6666, "x": 1, "y": 1 } - ] - }, - "head": { - "rotate": [ - { - "time": 0, - "angle": -5.51, - "curve": [ 0.25, 0, 0.75, 1 ] - }, - { - "time": 0.6666, - "angle": -3.12, - "curve": [ 0.25, 0, 0.75, 1 ] - }, - { "time": 1.6666, "angle": -5.51 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 1.6666, "x": 1, "y": 1 } - ] - }, - "front_bracer": { - "rotate": [ - { - "time": 0, - "angle": 45.46, - "curve": [ 0.492, 0, 0.75, 1 ] - }, - { - "time": 0.6666, - "angle": 41.33, - "curve": [ 0.32, 0.1, 0.736, 0.91 ] - }, - { "time": 1.6666, "angle": 45.46 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 1.6666, "x": 1, "y": 1 } - ] - }, - "gun": { - "rotate": [ - { - "time": 0, - "angle": 0, - "curve": [ 0.25, 0, 0.75, 1 ] - }, - { - "time": 0.6666, - "angle": -15.59, - "curve": [ 0.732, 0, 0.769, 0.99 ] - }, - { "time": 1.6666, "angle": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 1.6666, "x": 1, "y": 1 } - ] - }, - "front_fist": { - "rotate": [ - { - "time": 0, - "angle": -6.84, - "curve": [ 0.492, 0, 0.75, 1 ] - }, - { - "time": 0.6666, - "angle": -14.63, - "curve": [ 0.324, 0.11, 0.75, 1 ] - }, - { "time": 1.6666, "angle": -6.84 } - ], - "scale": [ - { - "time": 0, - "x": 1, - "y": 1, - "curve": [ 0.25, 0, 0.75, 1 ] - }, - { - "time": 0.6666, - "x": 0.689, - "y": 1.1, - "curve": [ 0.25, 0, 0.75, 1 ] - }, - { "time": 1.6666, "x": 1, "y": 1 } - ] - } - } - }, - "jump": { - "slots": { - "front_fist": { - "attachment": [ - { "time": 0, "name": "front_fist_open" }, - { "time": 0.2, "name": "front_fist_closed" }, - { "time": 0.6666, "name": "front_fist_open" } - ] - }, - "mouth": { - "attachment": [ - { "time": 0, "name": "mouth_grind" } - ] - }, - "torso": { - "attachment": [ - { "time": 0, "name": "torso" } - ] - } - }, - "bones": { - "front_thigh": { - "rotate": [ - { - "time": 0, - "angle": 91.53, - "curve": [ 0.278, 0.46, 0.763, 1 ] - }, - { - "time": 0.2, - "angle": -35.83, - "curve": [ 0.761, 0, 0.75, 1 ] - }, - { "time": 0.4333, "angle": 127.74 }, - { - "time": 0.7333, - "angle": 48.18, - "curve": [ 0.227, 0.26, 0.432, 1 ] - }, - { "time": 0.8333, "angle": 25.35 }, - { "time": 0.9333, "angle": 45.37 }, - { "time": 1.0333, "angle": 38.12 }, - { "time": 1.1333, "angle": 25.35 }, - { "time": 1.3333, "angle": 91.53 } - ], - "translate": [ - { "time": 0, "x": -2.56, "y": 5.77 }, - { "time": 0.4333, "x": 8.3, "y": 7.98 }, - { "time": 0.7333, "x": 7.21, "y": -4 }, - { "time": 1.3333, "x": -2.56, "y": 5.77 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - }, - "torso": { - "rotate": [ - { "time": 0, "angle": -42.63 }, - { "time": 0.2, "angle": -5.74 }, - { "time": 0.4333, "angle": -50.76 }, - { "time": 0.7333, "angle": 1.89 }, - { "time": 0.8333, "angle": 11.58 }, - { "time": 0.9666, "angle": -1.89 }, - { "time": 1.1333, "angle": 11.58 }, - { "time": 1.3333, "angle": -42.63 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - }, - "rear_thigh": { - "rotate": [ - { "time": 0, "angle": -26.32 }, - { "time": 0.2, "angle": 121.44 }, - { "time": 0.4333, "angle": 70.54 }, - { - "time": 0.7333, - "angle": 79.89, - "curve": [ 0.295, 0.3, 0.59, 0.99 ] - }, - { "time": 0.8333, "angle": 99.12 }, - { "time": 0.9333, "angle": 74.05 }, - { "time": 1.0333, "angle": 98.04 }, - { "time": 1.1333, "angle": 99.12 }, - { "time": 1.3333, "angle": -26.32 } - ], - "translate": [ - { "time": 0, "x": -0.56, "y": -0.32 }, - { "time": 0.4333, "x": -8.5, "y": 10.58 }, - { "time": 0.7333, "x": -1.96, "y": -0.32 }, - { "time": 1.3333, "x": -0.56, "y": -0.32 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - }, - "rear_shin": { - "rotate": [ - { "time": 0, "angle": -78.69 }, - { "time": 0.4333, "angle": -55.56 }, - { "time": 0.7333, "angle": -62.84 }, - { "time": 0.8333, "angle": -80.74 }, - { "time": 0.9333, "angle": -41.12 }, - { "time": 1.0333, "angle": -77.4 }, - { "time": 1.1333, "angle": -80.74 }, - { "time": 1.3333, "angle": -78.69 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.7333, "x": 1, "y": 1 } - ] - }, - "front_upper_arm": { - "rotate": [ - { "time": 0, "angle": -22.61 }, - { "time": 0.2, "angle": -246.68 }, - { - "time": 0.6, - "angle": 11.28, - "curve": [ 0.246, 0, 0.633, 0.53 ] - }, - { - "time": 0.7333, - "angle": -57.45, - "curve": [ 0.38, 0.53, 0.744, 1 ] - }, - { "time": 0.8666, "angle": -112.59 }, - { "time": 0.9333, "angle": -102.17 }, - { "time": 1.0333, "angle": -108.61 }, - { "time": 1.1333, "angle": -112.59 }, - { "time": 1.3333, "angle": -22.61 } - ], - "translate": [ - { "time": 0, "x": 6.08, "y": 7.15 }, - { "time": 0.2, "x": 7.23, "y": -13.13, "curve": "stepped" }, - { "time": 0.7333, "x": 7.23, "y": -13.13 }, - { "time": 1.3333, "x": 6.08, "y": 7.15 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - }, - "front_bracer": { - "rotate": [ - { "time": 0, "angle": 66.46 }, - { "time": 0.2, "angle": 42.39 }, - { "time": 0.4333, "angle": 26.06 }, - { "time": 0.7333, "angle": 13.28 }, - { "time": 0.8666, "angle": -28.64 }, - { "time": 0.9333, "angle": -22.31 }, - { "time": 1.0333, "angle": -35.39 }, - { "time": 1.1333, "angle": -28.64 }, - { "time": 1.3333, "angle": 66.46 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - }, - "front_fist": { - "rotate": [ - { "time": 0, "angle": -28.43 }, - { "time": 0.4333, "angle": -45.6 }, - { "time": 0.7333, "angle": -53.66 }, - { "time": 0.8666, "angle": 7.55 }, - { "time": 0.9333, "angle": 31.15 }, - { "time": 1.0333, "angle": -32.58 }, - { "time": 1.1333, "angle": 7.55 }, - { "time": 1.3333, "angle": -28.43 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - }, - "rear_upper_arm": { - "rotate": [ - { "time": 0, "angle": 39.68 }, - { "time": 0.2, "angle": 276.57 }, - { "time": 0.3, "angle": 17.73 }, - { "time": 0.4333, "angle": 83.38 }, - { - "time": 0.6, - "angle": -4.71, - "curve": [ 0.246, 0, 0.633, 0.53 ] - }, - { - "time": 0.7333, - "angle": -69.63, - "curve": [ 0.342, 0.36, 0.68, 0.71 ] - }, - { - "time": 0.7666, - "angle": 321.47, - "curve": [ 0.333, 0.33, 0.667, 0.66 ] - }, - { - "time": 0.8, - "angle": 33.7, - "curve": [ 0.358, 0.64, 0.693, 1 ] - }, - { "time": 0.8666, "angle": 34.56 }, - { "time": 1.0333, "angle": 71.96 }, - { "time": 1.1333, "angle": 34.56 }, - { "time": 1.3333, "angle": 39.68 } - ], - "translate": [ - { "time": 0, "x": -3.1, "y": -4.86 }, - { "time": 0.2, "x": 23.33, "y": 49.07 }, - { "time": 0.4333, "x": 20.78, "y": 40.21 }, - { "time": 1.3333, "x": -3.1, "y": -4.86 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - }, - "rear_bracer": { - "rotate": [ - { "time": 0, "angle": 29.66 }, - { "time": 0.2, "angle": 45.06 }, - { "time": 0.4333, "angle": -4.34 }, - { "time": 0.7666, "angle": 61.68 }, - { "time": 0.8, "angle": 82.59 }, - { "time": 0.8666, "angle": 80.06 }, - { "time": 1.0333, "angle": 57.56 }, - { "time": 1.1333, "angle": 80.06 }, - { "time": 1.3333, "angle": 29.66 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - }, - "neck": { - "rotate": [ - { "time": 0, "angle": 24.9 }, - { "time": 0.2, "angle": 16.31 }, - { "time": 0.4333, "angle": 7.44 }, - { "time": 0.7333, "angle": -20.35 }, - { "time": 0.8333, "angle": -0.69, "curve": "stepped" }, - { "time": 1.1333, "angle": -0.69 }, - { "time": 1.3333, "angle": 24.9 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - }, - "head": { - "rotate": [ - { "time": 0, "angle": 24.92 }, - { "time": 0.2, "angle": 10.36 }, - { "time": 0.4333, "angle": 28.65 }, - { "time": 0.7333, "angle": -2.65 }, - { "time": 0.8333, "angle": -28.94, "curve": "stepped" }, - { "time": 1.1333, "angle": -28.94 }, - { "time": 1.3333, "angle": 24.92 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - }, - "hip": { - "rotate": [ - { "time": 0, "angle": 0 } - ], - "translate": [ - { - "time": 0, - "x": -34.51, - "y": -78.62, - "curve": [ 0.232, 1, 0.75, 1 ] - }, - { - "time": 0.2, - "x": -34.51, - "y": 182.5, - "curve": [ 0.232, 0.48, 0.598, 0.79 ] - }, - { - "time": 0.7666, - "x": -34.51, - "y": 596.22, - "curve": [ 0.329, 0.17, 0.66, 0.21 ] - }, - { "time": 1.1333, "x": -34.51, "y": 2.49 }, - { "time": 1.3333, "x": -34.51, "y": -78.62 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - }, - "front_shin": { - "rotate": [ - { - "time": 0, - "angle": -90.62, - "curve": [ 0.416, 0.54, 0.743, 1 ] - }, - { - "time": 0.2, - "angle": -10.52, - "curve": [ 0.644, 0, 0.75, 1 ] - }, - { "time": 0.4333, "angle": -127.72 }, - { "time": 0.7333, "angle": -19.91 }, - { "time": 0.8333, "angle": -5.16 }, - { "time": 0.9333, "angle": -35.06 }, - { "time": 1.0333, "angle": -43.97 }, - { "time": 1.1333, "angle": -5.16 }, - { "time": 1.3333, "angle": -90.62 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - }, - "front_foot": { - "rotate": [ - { "time": 0, "angle": -0.79 }, - { "time": 0.0333, "angle": 16.27 }, - { "time": 0.0666, "angle": 23.52 }, - { "time": 0.1, "angle": 21.02 }, - { "time": 0.1333, "angle": 10.92 }, - { "time": 0.2, "angle": -38.45 }, - { "time": 0.4333, "angle": 6.62 }, - { "time": 0.7333, "angle": -11.51 }, - { "time": 1.0333, "angle": -22.91 }, - { "time": 1.3333, "angle": -0.79 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - }, - "rear_foot": { - "rotate": [ - { "time": 0, "angle": -12.77 }, - { "time": 0.2, "angle": 17.05 }, - { "time": 0.4333, "angle": 19.45 }, - { "time": 0.7333, "angle": 2.67 }, - { "time": 1.0333, "angle": -28.49 }, - { "time": 1.3333, "angle": -12.77 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - }, - "gun": { - "rotate": [ - { "time": 0, "angle": 6.18 }, - { "time": 0.2, "angle": 30.81 }, - { "time": 0.4333, "angle": 13.25 }, - { "time": 0.7333, "angle": 14.98 }, - { "time": 0.7666, "angle": 25.64 }, - { "time": 0.8, "angle": 20.62 }, - { "time": 0.8666, "angle": 64.52 }, - { "time": 1.0333, "angle": 8.59 }, - { "time": 1.1333, "angle": 64.52 }, - { "time": 1.3333, "angle": 6.18 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 } - ] - } - } - }, - "run": { - "slots": { - "front_fist": { - "attachment": [ - { "time": 0, "name": "front_fist_closed" } - ] - }, - "mouth": { - "attachment": [ - { "time": 0, "name": "mouth_grind" } - ] - }, - "torso": { - "attachment": [ - { "time": 0, "name": "torso" } - ] - } - }, - "bones": { - "front_thigh": { - "rotate": [ - { - "time": 0, - "angle": 42.05, - "curve": [ 0.195, 0.86, 0.75, 1 ] - }, - { "time": 0.0666, "angle": 46.07 }, - { "time": 0.1333, "angle": -20.28 }, - { "time": 0.2, "angle": -27.23 }, - { "time": 0.2666, "angle": -47.16 }, - { "time": 0.3333, "angle": -39.79 }, - { "time": 0.4, "angle": -25.86 }, - { "time": 0.4666, "angle": 14.35 }, - { "time": 0.5333, "angle": 55.62 }, - { "time": 0.6, "angle": 69.65 }, - { "time": 0.6666, "angle": 86.4 }, - { "time": 0.7333, "angle": 65.87 }, - { "time": 0.8, "angle": 42.05 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 }, - { "time": 0.0333, "x": -5.79, "y": 11.15 }, - { "time": 0.0666, "x": -5.13, "y": 11.55 }, - { "time": 0.1333, "x": -7.7, "y": 8.98 }, - { "time": 0.5333, "x": -1.26, "y": 3.83 }, - { "time": 0.8, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "torso": { - "rotate": [ - { "time": 0, "angle": -39.7 }, - { "time": 0.2, "angle": -57.29 }, - { "time": 0.4, "angle": -39.7 }, - { "time": 0.6, "angle": -57.29 }, - { "time": 0.8, "angle": -39.7 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.4, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.8, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "rear_thigh": { - "rotate": [ - { "time": 0, "angle": -56.59 }, - { "time": 0.0666, "angle": -21.57 }, - { "time": 0.1333, "angle": 27.95 }, - { "time": 0.2, "angle": 42.42 }, - { "time": 0.2666, "angle": 62.37 }, - { "time": 0.3333, "angle": 45.42 }, - { "time": 0.4, "angle": 15.67 }, - { "time": 0.4666, "angle": 28.22 }, - { "time": 0.5333, "angle": -38.62 }, - { "time": 0.6, "angle": -53.26 }, - { "time": 0.6666, "angle": -79.31 }, - { "time": 0.7333, "angle": -86.47 }, - { "time": 0.8, "angle": -56.59 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 }, - { "time": 0.4, "x": -6.76, "y": -3.86 }, - { "time": 0.4333, "x": -15.85, "y": 7.28 }, - { "time": 0.4666, "x": -13.04, "y": 4.04 }, - { "time": 0.5, "x": -10.24, "y": 7.11 }, - { "time": 0.5333, "x": -9.01, "y": -5.15 }, - { "time": 0.6666, "x": -23.18, "y": -2.57 }, - { "time": 0.8, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "rear_shin": { - "rotate": [ - { "time": 0, "angle": -74 }, - { "time": 0.0666, "angle": -83.38 }, - { "time": 0.1333, "angle": -106.69 }, - { "time": 0.2, "angle": -66.01 }, - { "time": 0.2666, "angle": -55.22 }, - { "time": 0.3333, "angle": -24.8 }, - { - "time": 0.4, - "angle": 18.44, - "curve": [ 0.25, 0, 0.75, 1 ] - }, - { "time": 0.4666, "angle": -56.65 }, - { - "time": 0.5333, - "angle": -11.94, - "curve": [ 0.25, 0, 0.75, 1 ] - }, - { "time": 0.6666, "angle": -41.26 }, - { "time": 0.7333, "angle": -43.6 }, - { "time": 0.8, "angle": -74 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.8, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "front_upper_arm": { - "rotate": [ - { "time": 0, "angle": -89.36 }, - { "time": 0.0666, "angle": -95.67 }, - { "time": 0.1333, "angle": -22 }, - { "time": 0.2, "angle": -316.04 }, - { "time": 0.2666, "angle": -274.94 }, - { "time": 0.3333, "angle": -273.74 }, - { "time": 0.4, "angle": -272.09 }, - { "time": 0.4666, "angle": -264.89 }, - { "time": 0.5333, "angle": -320.09 }, - { "time": 0.6, "angle": -50.83 }, - { "time": 0.6666, "angle": -81.72 }, - { "time": 0.7333, "angle": -83.92 }, - { "time": 0.8, "angle": -89.36 } - ], - "translate": [ - { "time": 0, "x": 6.24, "y": 10.05 }, - { "time": 0.2666, "x": 4.95, "y": -13.13 }, - { "time": 0.6, "x": -2.43, "y": 1.94 }, - { "time": 0.8, "x": 6.24, "y": 10.05 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "front_bracer": { - "rotate": [ - { "time": 0, "angle": 33.43 }, - { "time": 0.0666, "angle": 20.53 }, - { "time": 0.1333, "angle": 15.26 }, - { "time": 0.2, "angle": 19.28 }, - { "time": 0.2666, "angle": 22.62 }, - { "time": 0.3333, "angle": 37.29 }, - { "time": 0.4, "angle": 41.53 }, - { "time": 0.4666, "angle": 31.73 }, - { "time": 0.5333, "angle": 67.45 }, - { "time": 0.6666, "angle": 39.77 }, - { "time": 0.7333, "angle": 30.95 }, - { "time": 0.8, "angle": 33.43 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.8, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "front_fist": { - "rotate": [ - { "time": 0, "angle": -19.75 }, - { "time": 0.0666, "angle": -37.11 }, - { "time": 0.1333, "angle": -50.79 }, - { "time": 0.2666, "angle": -12.69 }, - { "time": 0.3333, "angle": 3.01 }, - { "time": 0.4333, "angle": 12.05 }, - { "time": 0.5333, "angle": 13.25 }, - { "time": 0.8, "angle": -19.75 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.8, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "rear_upper_arm": { - "rotate": [ - { "time": 0, "angle": 68.68 }, - { "time": 0.0666, "angle": 73.89 }, - { "time": 0.1333, "angle": -9.64 }, - { "time": 0.2, "angle": 284.27 }, - { "time": 0.2666, "angle": 283.29 }, - { "time": 0.3333, "angle": 278.28 }, - { "time": 0.4, "angle": 271.02 }, - { "time": 0.4666, "angle": 263.2 }, - { "time": 0.5333, "angle": 314.25 }, - { "time": 0.6, "angle": 16.83 }, - { "time": 0.6666, "angle": 70.35 }, - { "time": 0.7333, "angle": 73.53 }, - { "time": 0.8, "angle": 68.68 } - ], - "translate": [ - { "time": 0, "x": -2.57, "y": -8.89 }, - { "time": 0.1333, "x": -4.68, "y": 7.2 }, - { "time": 0.2, "x": 21.73, "y": 51.17 }, - { "time": 0.6, "x": 4.33, "y": 2.05 }, - { "time": 0.8, "x": -2.57, "y": -8.89 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "rear_bracer": { - "rotate": [ - { "time": 0, "angle": 31.04 }, - { "time": 0.0666, "angle": 28.28 }, - { "time": 0.1333, "angle": 49.36 }, - { "time": 0.2, "angle": 59.37 }, - { "time": 0.2666, "angle": 8.56 }, - { "time": 0.3333, "angle": 9.38 }, - { "time": 0.4, "angle": 11.51 }, - { "time": 0.4666, "angle": 7.22 }, - { "time": 0.5333, "angle": -18.44 }, - { "time": 0.6, "angle": 11.44 }, - { "time": 0.6666, "angle": 9.99 }, - { "time": 0.7333, "angle": 8.28 }, - { "time": 0.8, "angle": 31.04 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.8, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "neck": { - "rotate": [ - { "time": 0, "angle": 11.03 }, - { "time": 0.2, "angle": 13.58 }, - { "time": 0.4, "angle": 11.03 }, - { "time": 0.6, "angle": 13.58 }, - { "time": 0.8, "angle": 11.03 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.4, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.8, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "head": { - "rotate": [ - { "time": 0, "angle": 11.03 }, - { "time": 0.1, "angle": 12.34 }, - { "time": 0.2, "angle": 25.55 }, - { "time": 0.4, "angle": 11.03 }, - { "time": 0.5, "angle": 12.34 }, - { "time": 0.6, "angle": 25.55 }, - { "time": 0.8, "angle": 11.03 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.4, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.8, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "hip": { - "rotate": [ - { "time": 0, "angle": 0, "curve": "stepped" }, - { "time": 0.8, "angle": 0 } - ], - "translate": [ - { "time": 0, "x": -62.47, "y": -23.1 }, - { - "time": 0.0666, - "x": -62.47, - "y": -38.51, - "curve": [ 0.244, 0.04, 0.75, 1 ] - }, - { - "time": 0.2666, - "x": -62.47, - "y": 22.28, - "curve": [ 0.17, 0.52, 0.75, 1 ] - }, - { "time": 0.4, "x": -62.47, "y": -23.1 }, - { "time": 0.4333, "x": -62.47, "y": -24.59 }, - { - "time": 0.4666, - "x": -62.47, - "y": -43.29, - "curve": [ 0.25, 0, 0.75, 1 ] - }, - { "time": 0.6666, "x": -62.47, "y": 22.28 }, - { "time": 0.8, "x": -62.47, "y": -23.1 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "front_shin": { - "rotate": [ - { - "time": 0, - "angle": 0, - "curve": [ 0.481, 0.01, 0.75, 1 ] - }, - { "time": 0.0666, "angle": -64.42 }, - { - "time": 0.1333, - "angle": -20.59, - "curve": [ 0.25, 0, 0.75, 1 ] - }, - { "time": 0.2666, "angle": -62.51 }, - { "time": 0.3333, "angle": -79.74 }, - { "time": 0.4, "angle": -78.28 }, - { - "time": 0.4666, - "angle": -118.96, - "curve": [ 0.93, 0, 0.952, 0.95 ] - }, - { "time": 0.6, "angle": -88.95 }, - { "time": 0.6666, "angle": -79.09 }, - { "time": 0.7333, "angle": -47.77 }, - { "time": 0.8, "angle": 0 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.8, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "front_foot": { - "rotate": [ - { "time": 0, "angle": 0 }, - { - "time": 0.0333, - "angle": -21.13, - "curve": [ 0.121, 0.23, 0.75, 1 ] - }, - { "time": 0.0666, "angle": 17.64 }, - { "time": 0.1, "angle": 29.92 }, - { "time": 0.1333, "angle": 16.44 }, - { "time": 0.2, "angle": -29.22 }, - { "time": 0.2666, "angle": -1.61 }, - { "time": 0.3333, "angle": -10.22 }, - { "time": 0.4666, "angle": -15.99 }, - { "time": 0.6, "angle": 9.03 }, - { "time": 0.7333, "angle": 17.32 }, - { "time": 0.8, "angle": 0 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.8, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "rear_foot": { - "rotate": [ - { "time": 0, "angle": 0 }, - { "time": 0.0666, "angle": -12.04 }, - { "time": 0.1333, "angle": -0.87 }, - { "time": 0.2, "angle": 25.81 }, - { "time": 0.2666, "angle": 4.71 }, - { - "time": 0.4, - "angle": 18.09, - "curve": [ 0.281, 0.73, 0.75, 1 ] - }, - { "time": 0.4333, "angle": -1.7 }, - { "time": 0.4666, "angle": 27.12 }, - { "time": 0.5, "angle": 38.83 }, - { "time": 0.5333, "angle": 30.76 }, - { "time": 0.5666, "angle": -20.49 }, - { "time": 0.6, "angle": -30.8 }, - { "time": 0.6666, "angle": -1.31 }, - { "time": 0.8, "angle": 0 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.8, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "gun": { - "rotate": [ - { "time": 0, "angle": 0 }, - { "time": 0.1333, "angle": 24.72 }, - { "time": 0.5, "angle": -11.87 }, - { "time": 0.8, "angle": 0 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.8, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - } - }, - "events": [ - { "time": 0, "name": "footstep" }, - { "time": 0.4, "name": "footstep", "int": 1 } - ] - }, - "shoot": { - "slots": { - "front_fist": { - "attachment": [ - { "time": 0.1333, "name": "front_fist_closed" }, - { "time": 0.4, "name": "front_fist_open" } - ] - }, - "mouth": { - "attachment": [ - { "time": 0.1333, "name": "mouth_grind" } - ] - }, - "muzzle": { - "attachment": [ - { "time": 0.1333, "name": "muzzle" }, - { "time": 0.2666, "name": null } - ], - "color": [ - { - "time": 0.1333, - "color": "ffffff00", - "curve": [ 0.118, 0.99, 0.75, 1 ] - }, - { - "time": 0.1666, - "color": "ffffffff", - "curve": [ 0.821, 0, 0.909, 0.89 ] - }, - { "time": 0.2666, "color": "ffffff00" } - ] - } - }, - "bones": { - "front_fist": { - "scale": [ - { "time": 0.1333, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.4, "x": 1, "y": 1 } - ] - }, - "gunTip": { - "translate": [ - { "time": 0.1333, "x": 0, "y": 0 }, - { "time": 0.2, "x": 20.93, "y": 1.57 } - ], - "scale": [ - { "time": 0.1333, "x": 1, "y": 1 }, - { "time": 0.2, "x": 1.247, "y": 1.516 } - ] - }, - "gun": { - "rotate": [ - { "time": 0, "angle": 1.9 } - ], - "translate": [ - { - "time": 0, - "x": 7.95, - "y": 5.84, - "curve": [ 0, 0.3, 0.678, 1 ] - }, - { "time": 0.3, "x": -9.3, "y": -1.41 }, - { "time": 0.4, "x": 0, "y": 0 } - ] - }, - "rear_bracer": { - "rotate": [ - { "time": 0, "angle": -30.47 } - ], - "translate": [ - { - "time": 0, - "x": 0, - "y": 0, - "curve": [ 0, 0.3, 0.678, 1 ] - }, - { "time": 0.3, "x": -5.99, "y": -3.71 }, - { "time": 0.4, "x": 0, "y": 0 } - ] - }, - "rear_upper_arm": { - "rotate": [ - { "time": 0, "angle": 62.3 } - ], - "translate": [ - { - "time": 0, - "x": 0, - "y": 0, - "curve": [ 0, 0.3, 0.678, 1 ] - }, - { "time": 0.3, "x": 2.81, "y": 11.41 }, - { "time": 0.4, "x": 0, "y": 0 } - ] - } - } - }, - "test": { - "slots": { - "front_foot": { - "color": [ - { "time": 0.6666, "color": "ffffffff" }, - { "time": 1.3333, "color": "ff0700ff" } - ] - }, - "gun": { - "color": [ - { "time": 0, "color": "ffffffff", "curve": "stepped" }, - { "time": 0.6666, "color": "ffffffff" }, - { "time": 1.3333, "color": "32ff00ff" } - ] - }, - "rear_foot": { - "color": [ - { "time": 0.6666, "color": "ffffffff" }, - { "time": 1.3333, "color": "ff0700ff" } - ] - } - }, - "bones": { - "head": { - "rotate": [ - { "time": 0, "angle": 0 }, - { "time": 0.3333, "angle": -20.72 }, - { "time": 0.6666, "angle": -32.41 }, - { "time": 1, "angle": -5.3 }, - { "time": 1.3333, "angle": 24.96 }, - { "time": 1.6666, "angle": 15.61 }, - { "time": 2, "angle": 0 } - ], - "translate": [ - { - "time": 0, - "x": 0, - "y": 0, - "curve": [ 0.172, 0.37, 0.574, 0.73 ] - }, - { - "time": 0.1666, - "x": 144.19, - "y": -77.59, - "curve": [ 0.372, 0.61, 0.765, 1 ] - }, - { - "time": 0.3333, - "x": 217.61, - "y": -192.63, - "curve": [ 0.282, 0, 0.624, 0.31 ] - }, - { - "time": 0.5, - "x": 181.21, - "y": -365.66, - "curve": [ 0.313, 0.21, 0.654, 0.54 ] - }, - { - "time": 0.6666, - "x": 20.09, - "y": -500.4, - "curve": [ 0.147, 0.27, 0.75, 1 ] - }, - { "time": 0.8333, "x": -194.24, "y": -341.84 }, - { "time": 1, "x": -307.93, "y": -114 }, - { - "time": 1.1666, - "x": -330.38, - "y": 121.42, - "curve": [ 0.25, 0, 0.764, 0.48 ] - }, - { - "time": 1.3333, - "x": -240.42, - "y": 335.66, - "curve": [ 0.229, 0.37, 0.58, 0.73 ] - }, - { - "time": 1.5, - "x": -56.12, - "y": 288.06, - "curve": [ 0.296, 0.6, 0.641, 1 ] - }, - { - "time": 1.6666, - "x": 87.63, - "y": 191.33, - "curve": [ 0.238, 0, 0.626, 0.39 ] - }, - { - "time": 1.8333, - "x": 60.62, - "y": 95.14, - "curve": [ 0.41, 0.26, 0.803, 0.62 ] - }, - { "time": 2, "x": 0, "y": 0 } - ] - } - }, - "draworder": [ - { - "time": 0.6666, - "offsets": [ - { "slot": "head", "offset": -9 }, - { "slot": "eye", "offset": -9 }, - { "slot": "mouth", "offset": -12 }, - { "slot": "goggles", "offset": -12 } - ] - }, - { "time": 1.3333 } - ], - "events": [ - { "time": 0, "name": "headPop", "int": 0, "float": 0, "string": "pop.wav" }, - { "time": 1, "name": "headBehind", "int": 7, "float": 8, "string": "animate" }, - { "time": 2, "name": "headAttach", "int": 0, "float": 0, "string": "attach.wav" } - ] - }, - "walk": { - "slots": { - "front_fist": { - "attachment": [ - { "time": 0, "name": "front_fist_closed" } - ] - }, - "mouth": { - "attachment": [ - { "time": 0, "name": "mouth_smile" } - ] - }, - "torso": { - "attachment": [ - { "time": 0, "name": "torso" } - ] - } - }, - "bones": { - "front_thigh": { - "rotate": [ - { "time": 0, "angle": 15.79 }, - { "time": 0.1, "angle": 27.39 }, - { "time": 0.2, "angle": -7.94 }, - { "time": 0.3, "angle": -16.94 }, - { "time": 0.4, "angle": -28.62 }, - { "time": 0.5, "angle": -19.3 }, - { "time": 0.6, "angle": -3.08 }, - { "time": 0.7, "angle": 29.51 }, - { "time": 0.8, "angle": 15.79 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 }, - { "time": 0.4, "x": -1.18, "y": 0.54 }, - { "time": 0.5, "x": 0.11, "y": 0.41 }, - { "time": 0.6, "x": 9.48, "y": 0.27 }, - { "time": 0.8, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.4, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "front_shin": { - "rotate": [ - { "time": 0, "angle": 5.12 }, - { "time": 0.1, "angle": -20.87 }, - { "time": 0.2, "angle": 13.37 }, - { "time": 0.3, "angle": 15.98 }, - { "time": 0.4, "angle": 5.94 }, - { "time": 0.5, "angle": -26.76 }, - { "time": 0.7, "angle": -55.44 }, - { "time": 0.8, "angle": 5.12 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.8, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "rear_thigh": { - "rotate": [ - { "time": 0, "angle": -34.38 }, - { "time": 0.1, "angle": -30.32 }, - { "time": 0.2, "angle": -37.22 }, - { "time": 0.3, "angle": 20.73 }, - { "time": 0.4, "angle": 8.69 }, - { "time": 0.5, "angle": 12.16 }, - { "time": 0.6, "angle": -24.62 }, - { "time": 0.7, "angle": -27.26 }, - { "time": 0.8, "angle": -34.38 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0 }, - { "time": 0.4, "x": 4.08, "y": -9.53 }, - { "time": 0.5, "x": 0, "y": 0 }, - { "time": 0.7, "x": -21.14, "y": -9.6 }, - { "time": 0.8, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "rear_shin": { - "rotate": [ - { "time": 0, "angle": 14.26 }, - { "time": 0.1, "angle": -17.3 }, - { "time": 0.2, "angle": -12.67 }, - { "time": 0.3, "angle": -58.89 }, - { "time": 0.4, "angle": 15.95 }, - { "time": 0.5, "angle": -9 }, - { "time": 0.6, "angle": 26.06 }, - { "time": 0.7, "angle": 21.85 }, - { "time": 0.8, "angle": 14.26 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.8, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1 }, - { "time": 0.1, "x": 0.951, "y": 1 }, - { "time": 0.5, "x": 0.975, "y": 1 }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "rear_foot": { - "rotate": [ - { "time": 0, "angle": 10.13 }, - { "time": 0.1, "angle": 12.27 }, - { "time": 0.2, "angle": -2.94 }, - { "time": 0.3, "angle": 6.29 }, - { "time": 0.4, "angle": 13.45 }, - { "time": 0.5, "angle": -3.57 }, - { "time": 0.6, "angle": -0.97 }, - { "time": 0.7, "angle": 2.97 }, - { "time": 0.8, "angle": 10.13 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.8, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "front_upper_arm": { - "rotate": [ - { "time": 0, "angle": -23.74 }, - { "time": 0.4, "angle": -320.57 }, - { "time": 0.8, "angle": -23.74 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.8, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "rear_upper_arm": { - "rotate": [ - { "time": 0, "angle": 11.62 }, - { "time": 0.1, "angle": 19.36 }, - { "time": 0.4, "angle": 345.26 }, - { "time": 0.5, "angle": 343.44 }, - { "time": 0.8, "angle": 11.62 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.8, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "torso": { - "rotate": [ - { "time": 0, "angle": -12.11 }, - { "time": 0.1666, "angle": -17.16 }, - { "time": 0.4, "angle": -12.11 }, - { "time": 0.5666, "angle": -15.81 }, - { "time": 0.8, "angle": -12.11 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "neck": { - "rotate": [ - { "time": 0, "angle": 1.41 }, - { "time": 0.2333, "angle": -3.04 }, - { "time": 0.4, "angle": 1.41 }, - { "time": 0.6333, "angle": -3.04 }, - { "time": 0.8, "angle": 1.41 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.4, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.8, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "head": { - "rotate": [ - { "time": 0, "angle": 6.97 }, - { "time": 0.1666, "angle": 8.02 }, - { "time": 0.2666, "angle": 12.65 }, - { "time": 0.4, "angle": 6.97 }, - { "time": 0.5666, "angle": 8.02 }, - { "time": 0.6666, "angle": 12.65 }, - { "time": 0.8, "angle": 6.97 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.4, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.8, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "hip": { - "rotate": [ - { "time": 0, "angle": 0, "curve": "stepped" }, - { "time": 0.8, "angle": 0 } - ], - "translate": [ - { - "time": 0, - "x": -23.93, - "y": 3.22, - "curve": [ 0.518, 0.03, 0.807, 0.61 ] - }, - { - "time": 0.1, - "x": -23.93, - "y": -9.24, - "curve": [ 0.135, 0.33, 0.601, 0.99 ] - }, - { - "time": 0.2, - "x": -23.93, - "y": 4.35, - "curve": [ 0.204, 0.68, 0.75, 1 ] - }, - { - "time": 0.3, - "x": -23.93, - "y": 2.38, - "curve": [ 0.25, 0, 0.75, 1 ] - }, - { - "time": 0.4, - "x": -23.93, - "y": -2.5, - "curve": [ 0.692, 0.01, 0.75, 1 ] - }, - { - "time": 0.5, - "x": -23.93, - "y": -10.32, - "curve": [ 0.235, 0.77, 0.75, 1 ] - }, - { - "time": 0.6, - "x": -23.93, - "y": 4.35, - "curve": [ 0.287, 0.37, 0.718, 0.76 ] - }, - { - "time": 0.7, - "x": -23.93, - "y": 10.34, - "curve": [ 0.615, 0, 0.75, 1 ] - }, - { "time": 0.8, "x": -23.93, "y": 3.22 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "front_bracer": { - "rotate": [ - { "time": 0, "angle": 0 }, - { "time": 0.4, "angle": 20.59 }, - { "time": 0.8, "angle": 0 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.8, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "front_foot": { - "rotate": [ - { "time": 0, "angle": 12.49 }, - { "time": 0.1, "angle": -8.34 }, - { "time": 0.2, "angle": -6.17 }, - { "time": 0.3, "angle": -0.75 }, - { "time": 0.3333, "angle": 3.89 }, - { "time": 0.4, "angle": 10.22 }, - { "time": 0.5, "angle": 11.44 }, - { "time": 0.6, "angle": -0.33 }, - { "time": 0.7, "angle": 0.15 }, - { "time": 0.8, "angle": 12.49 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.8, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "rear_bracer": { - "rotate": [ - { "time": 0, "angle": 3.58 }, - { "time": 0.1, "angle": 5.51 }, - { "time": 0.4, "angle": -22.77 }, - { "time": 0.5, "angle": -9.65 }, - { "time": 0.8, "angle": 3.58 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.8, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "front_fist": { - "rotate": [ - { "time": 0, "angle": -15.22 }, - { "time": 0.1, "angle": -51.4 }, - { "time": 0.4, "angle": -39.4 }, - { "time": 0.5, "angle": 19.26 }, - { "time": 0.8, "angle": -15.22 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.8, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - }, - "gun": { - "rotate": [ - { - "time": 0, - "angle": -24.06, - "curve": [ 0.25, 0, 0.75, 1 ] - }, - { - "time": 0.1, - "angle": -10.94, - "curve": [ 0.381, 0.54, 0.742, 1 ] - }, - { - "time": 0.4, - "angle": 25.34, - "curve": [ 0.25, 0, 0.75, 1 ] - }, - { - "time": 0.6666, - "angle": -27.47, - "curve": [ 0.25, 0, 0.75, 1 ] - }, - { "time": 0.8, "angle": -24.06 } - ], - "translate": [ - { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, - { "time": 0.8, "x": 0, "y": 0 } - ], - "scale": [ - { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, - { "time": 0.8, "x": 1, "y": 1 } - ] - } - } - } -} -} \ No newline at end of file diff --git a/spine-cocos2dx/3.2/example/Resources/common/sprite.png b/spine-cocos2dx/3.2/example/Resources/common/sprite.png deleted file mode 100644 index 91dd46533..000000000 Binary files a/spine-cocos2dx/3.2/example/Resources/common/sprite.png and /dev/null differ diff --git a/spine-cocos2dx/3.2/example/Resources/ipad-retina/goblins-ffd.atlas b/spine-cocos2dx/3.2/example/Resources/ipad-retina/goblins-ffd.atlas deleted file mode 100644 index b977b07f6..000000000 --- a/spine-cocos2dx/3.2/example/Resources/ipad-retina/goblins-ffd.atlas +++ /dev/null @@ -1,292 +0,0 @@ - -goblins-ffd.png -format: RGBA8888 -filter: Linear,Linear -repeat: none -dagger - rotate: false - xy: 2, 28 - size: 26, 108 - orig: 26, 108 - offset: 0, 0 - index: -1 -goblin/eyes-closed - rotate: false - xy: 137, 29 - size: 34, 12 - orig: 34, 12 - offset: 0, 0 - index: -1 -goblin/head - rotate: false - xy: 26, 357 - size: 103, 66 - orig: 103, 66 - offset: 0, 0 - index: -1 -goblin/left-arm - rotate: false - xy: 30, 28 - size: 37, 35 - orig: 37, 35 - offset: 0, 0 - index: -1 -goblin/left-foot - rotate: false - xy: 134, 260 - size: 65, 31 - orig: 65, 31 - offset: 0, 0 - index: -1 -goblin/left-hand - rotate: false - xy: 69, 25 - size: 36, 41 - orig: 36, 41 - offset: 0, 0 - index: -1 -goblin/left-lower-leg - rotate: false - xy: 134, 293 - size: 33, 70 - orig: 33, 70 - offset: 0, 0 - index: -1 -goblin/left-shoulder - rotate: false - xy: 137, 43 - size: 29, 44 - orig: 29, 44 - offset: 0, 0 - index: -1 -goblin/left-upper-leg - rotate: false - xy: 30, 65 - size: 33, 73 - orig: 33, 73 - offset: 0, 0 - index: -1 -goblin/neck - rotate: false - xy: 201, 387 - size: 36, 41 - orig: 36, 41 - offset: 0, 0 - index: -1 -goblin/pelvis - rotate: false - xy: 26, 140 - size: 62, 43 - orig: 62, 43 - offset: 0, 0 - index: -1 -goblin/right-arm - rotate: false - xy: 171, 84 - size: 23, 50 - orig: 23, 50 - offset: 0, 0 - index: -1 -goblin/right-foot - rotate: false - xy: 134, 225 - size: 63, 33 - orig: 63, 33 - offset: 0, 0 - index: -1 -goblin/right-hand - rotate: false - xy: 204, 258 - size: 36, 37 - orig: 36, 37 - offset: 0, 0 - index: -1 -goblin/right-lower-leg - rotate: false - xy: 201, 430 - size: 36, 76 - orig: 36, 76 - offset: 0, 0 - index: -1 -goblin/right-shoulder - rotate: false - xy: 130, 89 - size: 39, 45 - orig: 39, 45 - offset: 0, 0 - index: -1 -goblin/right-upper-leg - rotate: false - xy: 98, 214 - size: 34, 63 - orig: 34, 63 - offset: 0, 0 - index: -1 -goblin/torso - rotate: false - xy: 131, 410 - size: 68, 96 - orig: 68, 96 - offset: 0, 0 - index: -1 -goblin/undie-straps - rotate: false - xy: 2, 7 - size: 55, 19 - orig: 55, 19 - offset: 0, 0 - index: -1 -goblin/undies - rotate: false - xy: 199, 227 - size: 36, 29 - orig: 36, 29 - offset: 0, 0 - index: -1 -goblingirl/eyes-closed - rotate: false - xy: 59, 2 - size: 37, 21 - orig: 37, 21 - offset: 0, 0 - index: -1 -goblingirl/head - rotate: false - xy: 26, 425 - size: 103, 81 - orig: 103, 81 - offset: 0, 0 - index: -1 -goblingirl/left-arm - rotate: false - xy: 201, 190 - size: 37, 35 - orig: 37, 35 - offset: 0, 0 - index: -1 -goblingirl/left-foot - rotate: false - xy: 134, 192 - size: 65, 31 - orig: 65, 31 - offset: 0, 0 - index: -1 -goblingirl/left-hand - rotate: false - xy: 196, 109 - size: 35, 40 - orig: 35, 40 - offset: 0, 0 - index: -1 -goblingirl/left-lower-leg - rotate: false - xy: 169, 293 - size: 33, 70 - orig: 33, 70 - offset: 0, 0 - index: -1 -goblingirl/left-shoulder - rotate: false - xy: 107, 30 - size: 28, 46 - orig: 28, 46 - offset: 0, 0 - index: -1 -goblingirl/left-upper-leg - rotate: false - xy: 65, 68 - size: 33, 70 - orig: 33, 70 - offset: 0, 0 - index: -1 -goblingirl/neck - rotate: false - xy: 204, 297 - size: 35, 41 - orig: 35, 41 - offset: 0, 0 - index: -1 -goblingirl/pelvis - rotate: false - xy: 131, 365 - size: 62, 43 - orig: 62, 43 - offset: 0, 0 - index: -1 -goblingirl/right-arm - rotate: false - xy: 100, 97 - size: 28, 50 - orig: 28, 50 - offset: 0, 0 - index: -1 -goblingirl/right-foot - rotate: false - xy: 134, 157 - size: 63, 33 - orig: 63, 33 - offset: 0, 0 - index: -1 -goblingirl/right-hand - rotate: false - xy: 199, 151 - size: 36, 37 - orig: 36, 37 - offset: 0, 0 - index: -1 -goblingirl/right-lower-leg - rotate: false - xy: 96, 279 - size: 36, 76 - orig: 36, 76 - offset: 0, 0 - index: -1 -goblingirl/right-shoulder - rotate: false - xy: 204, 340 - size: 39, 45 - orig: 39, 45 - offset: 0, 0 - index: -1 -goblingirl/right-upper-leg - rotate: false - xy: 98, 149 - size: 34, 63 - orig: 34, 63 - offset: 0, 0 - index: -1 -goblingirl/torso - rotate: false - xy: 26, 259 - size: 68, 96 - orig: 68, 96 - offset: 0, 0 - index: -1 -goblingirl/undie-straps - rotate: false - xy: 134, 136 - size: 55, 19 - orig: 55, 19 - offset: 0, 0 - index: -1 -goblingirl/undies - rotate: false - xy: 196, 78 - size: 36, 29 - orig: 36, 29 - offset: 0, 0 - index: -1 -shield - rotate: false - xy: 26, 185 - size: 70, 72 - orig: 70, 72 - offset: 0, 0 - index: -1 -spear - rotate: false - xy: 2, 138 - size: 22, 368 - orig: 22, 368 - offset: 0, 0 - index: -1 diff --git a/spine-cocos2dx/3.2/example/Resources/ipad-retina/goblins-ffd.png b/spine-cocos2dx/3.2/example/Resources/ipad-retina/goblins-ffd.png deleted file mode 100644 index f172361f2..000000000 Binary files a/spine-cocos2dx/3.2/example/Resources/ipad-retina/goblins-ffd.png and /dev/null differ diff --git a/spine-cocos2dx/3.2/example/Resources/ipad-retina/spineboy.atlas b/spine-cocos2dx/3.2/example/Resources/ipad-retina/spineboy.atlas deleted file mode 100644 index 19c0934b1..000000000 --- a/spine-cocos2dx/3.2/example/Resources/ipad-retina/spineboy.atlas +++ /dev/null @@ -1,194 +0,0 @@ - -spineboy.png -format: RGBA8888 -filter: Linear,Linear -repeat: none -eye_indifferent - rotate: true - xy: 389, 5 - size: 56, 53 - orig: 56, 53 - offset: 0, 0 - index: -1 -eye_surprised - rotate: false - xy: 580, 34 - size: 56, 53 - orig: 56, 53 - offset: 0, 0 - index: -1 -front_bracer - rotate: false - xy: 732, 85 - size: 35, 48 - orig: 35, 48 - offset: 0, 0 - index: -1 -front_fist_closed - rotate: false - xy: 556, 91 - size: 45, 49 - orig: 45, 49 - offset: 0, 0 - index: -1 -front_fist_open - rotate: false - xy: 668, 32 - size: 52, 52 - orig: 52, 52 - offset: 0, 0 - index: -1 -front_foot - rotate: false - xy: 924, 201 - size: 76, 41 - orig: 76, 41 - offset: 0, 0 - index: -1 -front_foot_bend1 - rotate: false - xy: 845, 200 - size: 77, 42 - orig: 77, 42 - offset: 0, 0 - index: -1 -front_foot_bend2 - rotate: false - xy: 778, 186 - size: 65, 56 - orig: 65, 56 - offset: 0, 0 - index: -1 -front_shin - rotate: true - xy: 444, 91 - size: 49, 110 - orig: 49, 110 - offset: 0, 0 - index: -1 -front_thigh - rotate: true - xy: 603, 89 - size: 29, 67 - orig: 29, 67 - offset: 0, 0 - index: -1 -front_upper_arm - rotate: true - xy: 672, 86 - size: 32, 58 - orig: 32, 58 - offset: 0, 0 - index: -1 -goggles - rotate: false - xy: 444, 142 - size: 157, 100 - orig: 157, 100 - offset: 0, 0 - index: -1 -gun - rotate: false - xy: 603, 120 - size: 126, 122 - orig: 126, 122 - offset: 0, 0 - index: -1 -head - rotate: false - xy: 279, 63 - size: 163, 179 - orig: 163, 179 - offset: 0, 0 - index: -1 -mouth_grind - rotate: false - xy: 845, 163 - size: 56, 35 - orig: 56, 35 - offset: 0, 0 - index: -1 -mouth_oooo - rotate: false - xy: 842, 126 - size: 56, 35 - orig: 56, 35 - offset: 0, 0 - index: -1 -mouth_smile - rotate: false - xy: 769, 97 - size: 56, 35 - orig: 56, 35 - offset: 0, 0 - index: -1 -muzzle - rotate: false - xy: 2, 2 - size: 275, 240 - orig: 277, 240 - offset: 0, 0 - index: -1 -neck - rotate: false - xy: 903, 173 - size: 22, 25 - orig: 22, 25 - offset: 0, 0 - index: -1 -rear_bracer - rotate: false - xy: 722, 40 - size: 34, 43 - orig: 34, 43 - offset: 0, 0 - index: -1 -rear_foot - rotate: false - xy: 444, 11 - size: 68, 36 - orig: 68, 36 - offset: 0, 0 - index: -1 -rear_foot_bend1 - rotate: false - xy: 444, 49 - size: 70, 40 - orig: 70, 40 - offset: 0, 0 - index: -1 -rear_foot_bend2 - rotate: false - xy: 778, 134 - size: 62, 50 - orig: 62, 50 - offset: 0, 0 - index: -1 -rear_shin - rotate: false - xy: 731, 135 - size: 45, 107 - orig: 45, 107 - offset: 0, 0 - index: -1 -rear_thigh - rotate: true - xy: 516, 50 - size: 39, 62 - orig: 39, 62 - offset: 0, 0 - index: -1 -rear_upper_arm - rotate: false - xy: 638, 35 - size: 28, 52 - orig: 28, 52 - offset: 0, 0 - index: -1 -torso - rotate: true - xy: 279, 2 - size: 59, 108 - orig: 59, 108 - offset: 0, 0 - index: -1 diff --git a/spine-cocos2dx/3.2/example/Resources/ipad-retina/spineboy.png b/spine-cocos2dx/3.2/example/Resources/ipad-retina/spineboy.png deleted file mode 100644 index b43262310..000000000 Binary files a/spine-cocos2dx/3.2/example/Resources/ipad-retina/spineboy.png and /dev/null differ diff --git a/spine-cocos2dx/3.2/example/Resources/ipad/goblins-ffd.atlas b/spine-cocos2dx/3.2/example/Resources/ipad/goblins-ffd.atlas deleted file mode 100644 index b977b07f6..000000000 --- a/spine-cocos2dx/3.2/example/Resources/ipad/goblins-ffd.atlas +++ /dev/null @@ -1,292 +0,0 @@ - -goblins-ffd.png -format: RGBA8888 -filter: Linear,Linear -repeat: none -dagger - rotate: false - xy: 2, 28 - size: 26, 108 - orig: 26, 108 - offset: 0, 0 - index: -1 -goblin/eyes-closed - rotate: false - xy: 137, 29 - size: 34, 12 - orig: 34, 12 - offset: 0, 0 - index: -1 -goblin/head - rotate: false - xy: 26, 357 - size: 103, 66 - orig: 103, 66 - offset: 0, 0 - index: -1 -goblin/left-arm - rotate: false - xy: 30, 28 - size: 37, 35 - orig: 37, 35 - offset: 0, 0 - index: -1 -goblin/left-foot - rotate: false - xy: 134, 260 - size: 65, 31 - orig: 65, 31 - offset: 0, 0 - index: -1 -goblin/left-hand - rotate: false - xy: 69, 25 - size: 36, 41 - orig: 36, 41 - offset: 0, 0 - index: -1 -goblin/left-lower-leg - rotate: false - xy: 134, 293 - size: 33, 70 - orig: 33, 70 - offset: 0, 0 - index: -1 -goblin/left-shoulder - rotate: false - xy: 137, 43 - size: 29, 44 - orig: 29, 44 - offset: 0, 0 - index: -1 -goblin/left-upper-leg - rotate: false - xy: 30, 65 - size: 33, 73 - orig: 33, 73 - offset: 0, 0 - index: -1 -goblin/neck - rotate: false - xy: 201, 387 - size: 36, 41 - orig: 36, 41 - offset: 0, 0 - index: -1 -goblin/pelvis - rotate: false - xy: 26, 140 - size: 62, 43 - orig: 62, 43 - offset: 0, 0 - index: -1 -goblin/right-arm - rotate: false - xy: 171, 84 - size: 23, 50 - orig: 23, 50 - offset: 0, 0 - index: -1 -goblin/right-foot - rotate: false - xy: 134, 225 - size: 63, 33 - orig: 63, 33 - offset: 0, 0 - index: -1 -goblin/right-hand - rotate: false - xy: 204, 258 - size: 36, 37 - orig: 36, 37 - offset: 0, 0 - index: -1 -goblin/right-lower-leg - rotate: false - xy: 201, 430 - size: 36, 76 - orig: 36, 76 - offset: 0, 0 - index: -1 -goblin/right-shoulder - rotate: false - xy: 130, 89 - size: 39, 45 - orig: 39, 45 - offset: 0, 0 - index: -1 -goblin/right-upper-leg - rotate: false - xy: 98, 214 - size: 34, 63 - orig: 34, 63 - offset: 0, 0 - index: -1 -goblin/torso - rotate: false - xy: 131, 410 - size: 68, 96 - orig: 68, 96 - offset: 0, 0 - index: -1 -goblin/undie-straps - rotate: false - xy: 2, 7 - size: 55, 19 - orig: 55, 19 - offset: 0, 0 - index: -1 -goblin/undies - rotate: false - xy: 199, 227 - size: 36, 29 - orig: 36, 29 - offset: 0, 0 - index: -1 -goblingirl/eyes-closed - rotate: false - xy: 59, 2 - size: 37, 21 - orig: 37, 21 - offset: 0, 0 - index: -1 -goblingirl/head - rotate: false - xy: 26, 425 - size: 103, 81 - orig: 103, 81 - offset: 0, 0 - index: -1 -goblingirl/left-arm - rotate: false - xy: 201, 190 - size: 37, 35 - orig: 37, 35 - offset: 0, 0 - index: -1 -goblingirl/left-foot - rotate: false - xy: 134, 192 - size: 65, 31 - orig: 65, 31 - offset: 0, 0 - index: -1 -goblingirl/left-hand - rotate: false - xy: 196, 109 - size: 35, 40 - orig: 35, 40 - offset: 0, 0 - index: -1 -goblingirl/left-lower-leg - rotate: false - xy: 169, 293 - size: 33, 70 - orig: 33, 70 - offset: 0, 0 - index: -1 -goblingirl/left-shoulder - rotate: false - xy: 107, 30 - size: 28, 46 - orig: 28, 46 - offset: 0, 0 - index: -1 -goblingirl/left-upper-leg - rotate: false - xy: 65, 68 - size: 33, 70 - orig: 33, 70 - offset: 0, 0 - index: -1 -goblingirl/neck - rotate: false - xy: 204, 297 - size: 35, 41 - orig: 35, 41 - offset: 0, 0 - index: -1 -goblingirl/pelvis - rotate: false - xy: 131, 365 - size: 62, 43 - orig: 62, 43 - offset: 0, 0 - index: -1 -goblingirl/right-arm - rotate: false - xy: 100, 97 - size: 28, 50 - orig: 28, 50 - offset: 0, 0 - index: -1 -goblingirl/right-foot - rotate: false - xy: 134, 157 - size: 63, 33 - orig: 63, 33 - offset: 0, 0 - index: -1 -goblingirl/right-hand - rotate: false - xy: 199, 151 - size: 36, 37 - orig: 36, 37 - offset: 0, 0 - index: -1 -goblingirl/right-lower-leg - rotate: false - xy: 96, 279 - size: 36, 76 - orig: 36, 76 - offset: 0, 0 - index: -1 -goblingirl/right-shoulder - rotate: false - xy: 204, 340 - size: 39, 45 - orig: 39, 45 - offset: 0, 0 - index: -1 -goblingirl/right-upper-leg - rotate: false - xy: 98, 149 - size: 34, 63 - orig: 34, 63 - offset: 0, 0 - index: -1 -goblingirl/torso - rotate: false - xy: 26, 259 - size: 68, 96 - orig: 68, 96 - offset: 0, 0 - index: -1 -goblingirl/undie-straps - rotate: false - xy: 134, 136 - size: 55, 19 - orig: 55, 19 - offset: 0, 0 - index: -1 -goblingirl/undies - rotate: false - xy: 196, 78 - size: 36, 29 - orig: 36, 29 - offset: 0, 0 - index: -1 -shield - rotate: false - xy: 26, 185 - size: 70, 72 - orig: 70, 72 - offset: 0, 0 - index: -1 -spear - rotate: false - xy: 2, 138 - size: 22, 368 - orig: 22, 368 - offset: 0, 0 - index: -1 diff --git a/spine-cocos2dx/3.2/example/Resources/ipad/goblins-ffd.png b/spine-cocos2dx/3.2/example/Resources/ipad/goblins-ffd.png deleted file mode 100644 index f172361f2..000000000 Binary files a/spine-cocos2dx/3.2/example/Resources/ipad/goblins-ffd.png and /dev/null differ diff --git a/spine-cocos2dx/3.2/example/Resources/ipad/spineboy.atlas b/spine-cocos2dx/3.2/example/Resources/ipad/spineboy.atlas deleted file mode 100644 index 19c0934b1..000000000 --- a/spine-cocos2dx/3.2/example/Resources/ipad/spineboy.atlas +++ /dev/null @@ -1,194 +0,0 @@ - -spineboy.png -format: RGBA8888 -filter: Linear,Linear -repeat: none -eye_indifferent - rotate: true - xy: 389, 5 - size: 56, 53 - orig: 56, 53 - offset: 0, 0 - index: -1 -eye_surprised - rotate: false - xy: 580, 34 - size: 56, 53 - orig: 56, 53 - offset: 0, 0 - index: -1 -front_bracer - rotate: false - xy: 732, 85 - size: 35, 48 - orig: 35, 48 - offset: 0, 0 - index: -1 -front_fist_closed - rotate: false - xy: 556, 91 - size: 45, 49 - orig: 45, 49 - offset: 0, 0 - index: -1 -front_fist_open - rotate: false - xy: 668, 32 - size: 52, 52 - orig: 52, 52 - offset: 0, 0 - index: -1 -front_foot - rotate: false - xy: 924, 201 - size: 76, 41 - orig: 76, 41 - offset: 0, 0 - index: -1 -front_foot_bend1 - rotate: false - xy: 845, 200 - size: 77, 42 - orig: 77, 42 - offset: 0, 0 - index: -1 -front_foot_bend2 - rotate: false - xy: 778, 186 - size: 65, 56 - orig: 65, 56 - offset: 0, 0 - index: -1 -front_shin - rotate: true - xy: 444, 91 - size: 49, 110 - orig: 49, 110 - offset: 0, 0 - index: -1 -front_thigh - rotate: true - xy: 603, 89 - size: 29, 67 - orig: 29, 67 - offset: 0, 0 - index: -1 -front_upper_arm - rotate: true - xy: 672, 86 - size: 32, 58 - orig: 32, 58 - offset: 0, 0 - index: -1 -goggles - rotate: false - xy: 444, 142 - size: 157, 100 - orig: 157, 100 - offset: 0, 0 - index: -1 -gun - rotate: false - xy: 603, 120 - size: 126, 122 - orig: 126, 122 - offset: 0, 0 - index: -1 -head - rotate: false - xy: 279, 63 - size: 163, 179 - orig: 163, 179 - offset: 0, 0 - index: -1 -mouth_grind - rotate: false - xy: 845, 163 - size: 56, 35 - orig: 56, 35 - offset: 0, 0 - index: -1 -mouth_oooo - rotate: false - xy: 842, 126 - size: 56, 35 - orig: 56, 35 - offset: 0, 0 - index: -1 -mouth_smile - rotate: false - xy: 769, 97 - size: 56, 35 - orig: 56, 35 - offset: 0, 0 - index: -1 -muzzle - rotate: false - xy: 2, 2 - size: 275, 240 - orig: 277, 240 - offset: 0, 0 - index: -1 -neck - rotate: false - xy: 903, 173 - size: 22, 25 - orig: 22, 25 - offset: 0, 0 - index: -1 -rear_bracer - rotate: false - xy: 722, 40 - size: 34, 43 - orig: 34, 43 - offset: 0, 0 - index: -1 -rear_foot - rotate: false - xy: 444, 11 - size: 68, 36 - orig: 68, 36 - offset: 0, 0 - index: -1 -rear_foot_bend1 - rotate: false - xy: 444, 49 - size: 70, 40 - orig: 70, 40 - offset: 0, 0 - index: -1 -rear_foot_bend2 - rotate: false - xy: 778, 134 - size: 62, 50 - orig: 62, 50 - offset: 0, 0 - index: -1 -rear_shin - rotate: false - xy: 731, 135 - size: 45, 107 - orig: 45, 107 - offset: 0, 0 - index: -1 -rear_thigh - rotate: true - xy: 516, 50 - size: 39, 62 - orig: 39, 62 - offset: 0, 0 - index: -1 -rear_upper_arm - rotate: false - xy: 638, 35 - size: 28, 52 - orig: 28, 52 - offset: 0, 0 - index: -1 -torso - rotate: true - xy: 279, 2 - size: 59, 108 - orig: 59, 108 - offset: 0, 0 - index: -1 diff --git a/spine-cocos2dx/3.2/example/Resources/ipad/spineboy.png b/spine-cocos2dx/3.2/example/Resources/ipad/spineboy.png deleted file mode 100644 index b43262310..000000000 Binary files a/spine-cocos2dx/3.2/example/Resources/ipad/spineboy.png and /dev/null differ diff --git a/spine-cocos2dx/3.2/example/Resources/iphone-retina/goblins-ffd.atlas b/spine-cocos2dx/3.2/example/Resources/iphone-retina/goblins-ffd.atlas deleted file mode 100644 index b977b07f6..000000000 --- a/spine-cocos2dx/3.2/example/Resources/iphone-retina/goblins-ffd.atlas +++ /dev/null @@ -1,292 +0,0 @@ - -goblins-ffd.png -format: RGBA8888 -filter: Linear,Linear -repeat: none -dagger - rotate: false - xy: 2, 28 - size: 26, 108 - orig: 26, 108 - offset: 0, 0 - index: -1 -goblin/eyes-closed - rotate: false - xy: 137, 29 - size: 34, 12 - orig: 34, 12 - offset: 0, 0 - index: -1 -goblin/head - rotate: false - xy: 26, 357 - size: 103, 66 - orig: 103, 66 - offset: 0, 0 - index: -1 -goblin/left-arm - rotate: false - xy: 30, 28 - size: 37, 35 - orig: 37, 35 - offset: 0, 0 - index: -1 -goblin/left-foot - rotate: false - xy: 134, 260 - size: 65, 31 - orig: 65, 31 - offset: 0, 0 - index: -1 -goblin/left-hand - rotate: false - xy: 69, 25 - size: 36, 41 - orig: 36, 41 - offset: 0, 0 - index: -1 -goblin/left-lower-leg - rotate: false - xy: 134, 293 - size: 33, 70 - orig: 33, 70 - offset: 0, 0 - index: -1 -goblin/left-shoulder - rotate: false - xy: 137, 43 - size: 29, 44 - orig: 29, 44 - offset: 0, 0 - index: -1 -goblin/left-upper-leg - rotate: false - xy: 30, 65 - size: 33, 73 - orig: 33, 73 - offset: 0, 0 - index: -1 -goblin/neck - rotate: false - xy: 201, 387 - size: 36, 41 - orig: 36, 41 - offset: 0, 0 - index: -1 -goblin/pelvis - rotate: false - xy: 26, 140 - size: 62, 43 - orig: 62, 43 - offset: 0, 0 - index: -1 -goblin/right-arm - rotate: false - xy: 171, 84 - size: 23, 50 - orig: 23, 50 - offset: 0, 0 - index: -1 -goblin/right-foot - rotate: false - xy: 134, 225 - size: 63, 33 - orig: 63, 33 - offset: 0, 0 - index: -1 -goblin/right-hand - rotate: false - xy: 204, 258 - size: 36, 37 - orig: 36, 37 - offset: 0, 0 - index: -1 -goblin/right-lower-leg - rotate: false - xy: 201, 430 - size: 36, 76 - orig: 36, 76 - offset: 0, 0 - index: -1 -goblin/right-shoulder - rotate: false - xy: 130, 89 - size: 39, 45 - orig: 39, 45 - offset: 0, 0 - index: -1 -goblin/right-upper-leg - rotate: false - xy: 98, 214 - size: 34, 63 - orig: 34, 63 - offset: 0, 0 - index: -1 -goblin/torso - rotate: false - xy: 131, 410 - size: 68, 96 - orig: 68, 96 - offset: 0, 0 - index: -1 -goblin/undie-straps - rotate: false - xy: 2, 7 - size: 55, 19 - orig: 55, 19 - offset: 0, 0 - index: -1 -goblin/undies - rotate: false - xy: 199, 227 - size: 36, 29 - orig: 36, 29 - offset: 0, 0 - index: -1 -goblingirl/eyes-closed - rotate: false - xy: 59, 2 - size: 37, 21 - orig: 37, 21 - offset: 0, 0 - index: -1 -goblingirl/head - rotate: false - xy: 26, 425 - size: 103, 81 - orig: 103, 81 - offset: 0, 0 - index: -1 -goblingirl/left-arm - rotate: false - xy: 201, 190 - size: 37, 35 - orig: 37, 35 - offset: 0, 0 - index: -1 -goblingirl/left-foot - rotate: false - xy: 134, 192 - size: 65, 31 - orig: 65, 31 - offset: 0, 0 - index: -1 -goblingirl/left-hand - rotate: false - xy: 196, 109 - size: 35, 40 - orig: 35, 40 - offset: 0, 0 - index: -1 -goblingirl/left-lower-leg - rotate: false - xy: 169, 293 - size: 33, 70 - orig: 33, 70 - offset: 0, 0 - index: -1 -goblingirl/left-shoulder - rotate: false - xy: 107, 30 - size: 28, 46 - orig: 28, 46 - offset: 0, 0 - index: -1 -goblingirl/left-upper-leg - rotate: false - xy: 65, 68 - size: 33, 70 - orig: 33, 70 - offset: 0, 0 - index: -1 -goblingirl/neck - rotate: false - xy: 204, 297 - size: 35, 41 - orig: 35, 41 - offset: 0, 0 - index: -1 -goblingirl/pelvis - rotate: false - xy: 131, 365 - size: 62, 43 - orig: 62, 43 - offset: 0, 0 - index: -1 -goblingirl/right-arm - rotate: false - xy: 100, 97 - size: 28, 50 - orig: 28, 50 - offset: 0, 0 - index: -1 -goblingirl/right-foot - rotate: false - xy: 134, 157 - size: 63, 33 - orig: 63, 33 - offset: 0, 0 - index: -1 -goblingirl/right-hand - rotate: false - xy: 199, 151 - size: 36, 37 - orig: 36, 37 - offset: 0, 0 - index: -1 -goblingirl/right-lower-leg - rotate: false - xy: 96, 279 - size: 36, 76 - orig: 36, 76 - offset: 0, 0 - index: -1 -goblingirl/right-shoulder - rotate: false - xy: 204, 340 - size: 39, 45 - orig: 39, 45 - offset: 0, 0 - index: -1 -goblingirl/right-upper-leg - rotate: false - xy: 98, 149 - size: 34, 63 - orig: 34, 63 - offset: 0, 0 - index: -1 -goblingirl/torso - rotate: false - xy: 26, 259 - size: 68, 96 - orig: 68, 96 - offset: 0, 0 - index: -1 -goblingirl/undie-straps - rotate: false - xy: 134, 136 - size: 55, 19 - orig: 55, 19 - offset: 0, 0 - index: -1 -goblingirl/undies - rotate: false - xy: 196, 78 - size: 36, 29 - orig: 36, 29 - offset: 0, 0 - index: -1 -shield - rotate: false - xy: 26, 185 - size: 70, 72 - orig: 70, 72 - offset: 0, 0 - index: -1 -spear - rotate: false - xy: 2, 138 - size: 22, 368 - orig: 22, 368 - offset: 0, 0 - index: -1 diff --git a/spine-cocos2dx/3.2/example/Resources/iphone-retina/goblins-ffd.png b/spine-cocos2dx/3.2/example/Resources/iphone-retina/goblins-ffd.png deleted file mode 100644 index f172361f2..000000000 Binary files a/spine-cocos2dx/3.2/example/Resources/iphone-retina/goblins-ffd.png and /dev/null differ diff --git a/spine-cocos2dx/3.2/example/Resources/iphone-retina/spineboy.atlas b/spine-cocos2dx/3.2/example/Resources/iphone-retina/spineboy.atlas deleted file mode 100644 index 19c0934b1..000000000 --- a/spine-cocos2dx/3.2/example/Resources/iphone-retina/spineboy.atlas +++ /dev/null @@ -1,194 +0,0 @@ - -spineboy.png -format: RGBA8888 -filter: Linear,Linear -repeat: none -eye_indifferent - rotate: true - xy: 389, 5 - size: 56, 53 - orig: 56, 53 - offset: 0, 0 - index: -1 -eye_surprised - rotate: false - xy: 580, 34 - size: 56, 53 - orig: 56, 53 - offset: 0, 0 - index: -1 -front_bracer - rotate: false - xy: 732, 85 - size: 35, 48 - orig: 35, 48 - offset: 0, 0 - index: -1 -front_fist_closed - rotate: false - xy: 556, 91 - size: 45, 49 - orig: 45, 49 - offset: 0, 0 - index: -1 -front_fist_open - rotate: false - xy: 668, 32 - size: 52, 52 - orig: 52, 52 - offset: 0, 0 - index: -1 -front_foot - rotate: false - xy: 924, 201 - size: 76, 41 - orig: 76, 41 - offset: 0, 0 - index: -1 -front_foot_bend1 - rotate: false - xy: 845, 200 - size: 77, 42 - orig: 77, 42 - offset: 0, 0 - index: -1 -front_foot_bend2 - rotate: false - xy: 778, 186 - size: 65, 56 - orig: 65, 56 - offset: 0, 0 - index: -1 -front_shin - rotate: true - xy: 444, 91 - size: 49, 110 - orig: 49, 110 - offset: 0, 0 - index: -1 -front_thigh - rotate: true - xy: 603, 89 - size: 29, 67 - orig: 29, 67 - offset: 0, 0 - index: -1 -front_upper_arm - rotate: true - xy: 672, 86 - size: 32, 58 - orig: 32, 58 - offset: 0, 0 - index: -1 -goggles - rotate: false - xy: 444, 142 - size: 157, 100 - orig: 157, 100 - offset: 0, 0 - index: -1 -gun - rotate: false - xy: 603, 120 - size: 126, 122 - orig: 126, 122 - offset: 0, 0 - index: -1 -head - rotate: false - xy: 279, 63 - size: 163, 179 - orig: 163, 179 - offset: 0, 0 - index: -1 -mouth_grind - rotate: false - xy: 845, 163 - size: 56, 35 - orig: 56, 35 - offset: 0, 0 - index: -1 -mouth_oooo - rotate: false - xy: 842, 126 - size: 56, 35 - orig: 56, 35 - offset: 0, 0 - index: -1 -mouth_smile - rotate: false - xy: 769, 97 - size: 56, 35 - orig: 56, 35 - offset: 0, 0 - index: -1 -muzzle - rotate: false - xy: 2, 2 - size: 275, 240 - orig: 277, 240 - offset: 0, 0 - index: -1 -neck - rotate: false - xy: 903, 173 - size: 22, 25 - orig: 22, 25 - offset: 0, 0 - index: -1 -rear_bracer - rotate: false - xy: 722, 40 - size: 34, 43 - orig: 34, 43 - offset: 0, 0 - index: -1 -rear_foot - rotate: false - xy: 444, 11 - size: 68, 36 - orig: 68, 36 - offset: 0, 0 - index: -1 -rear_foot_bend1 - rotate: false - xy: 444, 49 - size: 70, 40 - orig: 70, 40 - offset: 0, 0 - index: -1 -rear_foot_bend2 - rotate: false - xy: 778, 134 - size: 62, 50 - orig: 62, 50 - offset: 0, 0 - index: -1 -rear_shin - rotate: false - xy: 731, 135 - size: 45, 107 - orig: 45, 107 - offset: 0, 0 - index: -1 -rear_thigh - rotate: true - xy: 516, 50 - size: 39, 62 - orig: 39, 62 - offset: 0, 0 - index: -1 -rear_upper_arm - rotate: false - xy: 638, 35 - size: 28, 52 - orig: 28, 52 - offset: 0, 0 - index: -1 -torso - rotate: true - xy: 279, 2 - size: 59, 108 - orig: 59, 108 - offset: 0, 0 - index: -1 diff --git a/spine-cocos2dx/3.2/example/Resources/iphone-retina/spineboy.png b/spine-cocos2dx/3.2/example/Resources/iphone-retina/spineboy.png deleted file mode 100644 index b43262310..000000000 Binary files a/spine-cocos2dx/3.2/example/Resources/iphone-retina/spineboy.png and /dev/null differ diff --git a/spine-cocos2dx/3.2/example/Resources/iphone/goblins-ffd.atlas b/spine-cocos2dx/3.2/example/Resources/iphone/goblins-ffd.atlas deleted file mode 100644 index b977b07f6..000000000 --- a/spine-cocos2dx/3.2/example/Resources/iphone/goblins-ffd.atlas +++ /dev/null @@ -1,292 +0,0 @@ - -goblins-ffd.png -format: RGBA8888 -filter: Linear,Linear -repeat: none -dagger - rotate: false - xy: 2, 28 - size: 26, 108 - orig: 26, 108 - offset: 0, 0 - index: -1 -goblin/eyes-closed - rotate: false - xy: 137, 29 - size: 34, 12 - orig: 34, 12 - offset: 0, 0 - index: -1 -goblin/head - rotate: false - xy: 26, 357 - size: 103, 66 - orig: 103, 66 - offset: 0, 0 - index: -1 -goblin/left-arm - rotate: false - xy: 30, 28 - size: 37, 35 - orig: 37, 35 - offset: 0, 0 - index: -1 -goblin/left-foot - rotate: false - xy: 134, 260 - size: 65, 31 - orig: 65, 31 - offset: 0, 0 - index: -1 -goblin/left-hand - rotate: false - xy: 69, 25 - size: 36, 41 - orig: 36, 41 - offset: 0, 0 - index: -1 -goblin/left-lower-leg - rotate: false - xy: 134, 293 - size: 33, 70 - orig: 33, 70 - offset: 0, 0 - index: -1 -goblin/left-shoulder - rotate: false - xy: 137, 43 - size: 29, 44 - orig: 29, 44 - offset: 0, 0 - index: -1 -goblin/left-upper-leg - rotate: false - xy: 30, 65 - size: 33, 73 - orig: 33, 73 - offset: 0, 0 - index: -1 -goblin/neck - rotate: false - xy: 201, 387 - size: 36, 41 - orig: 36, 41 - offset: 0, 0 - index: -1 -goblin/pelvis - rotate: false - xy: 26, 140 - size: 62, 43 - orig: 62, 43 - offset: 0, 0 - index: -1 -goblin/right-arm - rotate: false - xy: 171, 84 - size: 23, 50 - orig: 23, 50 - offset: 0, 0 - index: -1 -goblin/right-foot - rotate: false - xy: 134, 225 - size: 63, 33 - orig: 63, 33 - offset: 0, 0 - index: -1 -goblin/right-hand - rotate: false - xy: 204, 258 - size: 36, 37 - orig: 36, 37 - offset: 0, 0 - index: -1 -goblin/right-lower-leg - rotate: false - xy: 201, 430 - size: 36, 76 - orig: 36, 76 - offset: 0, 0 - index: -1 -goblin/right-shoulder - rotate: false - xy: 130, 89 - size: 39, 45 - orig: 39, 45 - offset: 0, 0 - index: -1 -goblin/right-upper-leg - rotate: false - xy: 98, 214 - size: 34, 63 - orig: 34, 63 - offset: 0, 0 - index: -1 -goblin/torso - rotate: false - xy: 131, 410 - size: 68, 96 - orig: 68, 96 - offset: 0, 0 - index: -1 -goblin/undie-straps - rotate: false - xy: 2, 7 - size: 55, 19 - orig: 55, 19 - offset: 0, 0 - index: -1 -goblin/undies - rotate: false - xy: 199, 227 - size: 36, 29 - orig: 36, 29 - offset: 0, 0 - index: -1 -goblingirl/eyes-closed - rotate: false - xy: 59, 2 - size: 37, 21 - orig: 37, 21 - offset: 0, 0 - index: -1 -goblingirl/head - rotate: false - xy: 26, 425 - size: 103, 81 - orig: 103, 81 - offset: 0, 0 - index: -1 -goblingirl/left-arm - rotate: false - xy: 201, 190 - size: 37, 35 - orig: 37, 35 - offset: 0, 0 - index: -1 -goblingirl/left-foot - rotate: false - xy: 134, 192 - size: 65, 31 - orig: 65, 31 - offset: 0, 0 - index: -1 -goblingirl/left-hand - rotate: false - xy: 196, 109 - size: 35, 40 - orig: 35, 40 - offset: 0, 0 - index: -1 -goblingirl/left-lower-leg - rotate: false - xy: 169, 293 - size: 33, 70 - orig: 33, 70 - offset: 0, 0 - index: -1 -goblingirl/left-shoulder - rotate: false - xy: 107, 30 - size: 28, 46 - orig: 28, 46 - offset: 0, 0 - index: -1 -goblingirl/left-upper-leg - rotate: false - xy: 65, 68 - size: 33, 70 - orig: 33, 70 - offset: 0, 0 - index: -1 -goblingirl/neck - rotate: false - xy: 204, 297 - size: 35, 41 - orig: 35, 41 - offset: 0, 0 - index: -1 -goblingirl/pelvis - rotate: false - xy: 131, 365 - size: 62, 43 - orig: 62, 43 - offset: 0, 0 - index: -1 -goblingirl/right-arm - rotate: false - xy: 100, 97 - size: 28, 50 - orig: 28, 50 - offset: 0, 0 - index: -1 -goblingirl/right-foot - rotate: false - xy: 134, 157 - size: 63, 33 - orig: 63, 33 - offset: 0, 0 - index: -1 -goblingirl/right-hand - rotate: false - xy: 199, 151 - size: 36, 37 - orig: 36, 37 - offset: 0, 0 - index: -1 -goblingirl/right-lower-leg - rotate: false - xy: 96, 279 - size: 36, 76 - orig: 36, 76 - offset: 0, 0 - index: -1 -goblingirl/right-shoulder - rotate: false - xy: 204, 340 - size: 39, 45 - orig: 39, 45 - offset: 0, 0 - index: -1 -goblingirl/right-upper-leg - rotate: false - xy: 98, 149 - size: 34, 63 - orig: 34, 63 - offset: 0, 0 - index: -1 -goblingirl/torso - rotate: false - xy: 26, 259 - size: 68, 96 - orig: 68, 96 - offset: 0, 0 - index: -1 -goblingirl/undie-straps - rotate: false - xy: 134, 136 - size: 55, 19 - orig: 55, 19 - offset: 0, 0 - index: -1 -goblingirl/undies - rotate: false - xy: 196, 78 - size: 36, 29 - orig: 36, 29 - offset: 0, 0 - index: -1 -shield - rotate: false - xy: 26, 185 - size: 70, 72 - orig: 70, 72 - offset: 0, 0 - index: -1 -spear - rotate: false - xy: 2, 138 - size: 22, 368 - orig: 22, 368 - offset: 0, 0 - index: -1 diff --git a/spine-cocos2dx/3.2/example/Resources/iphone/goblins-ffd.png b/spine-cocos2dx/3.2/example/Resources/iphone/goblins-ffd.png deleted file mode 100644 index f172361f2..000000000 Binary files a/spine-cocos2dx/3.2/example/Resources/iphone/goblins-ffd.png and /dev/null differ diff --git a/spine-cocos2dx/3.2/example/Resources/iphone/spineboy.atlas b/spine-cocos2dx/3.2/example/Resources/iphone/spineboy.atlas deleted file mode 100644 index 19c0934b1..000000000 --- a/spine-cocos2dx/3.2/example/Resources/iphone/spineboy.atlas +++ /dev/null @@ -1,194 +0,0 @@ - -spineboy.png -format: RGBA8888 -filter: Linear,Linear -repeat: none -eye_indifferent - rotate: true - xy: 389, 5 - size: 56, 53 - orig: 56, 53 - offset: 0, 0 - index: -1 -eye_surprised - rotate: false - xy: 580, 34 - size: 56, 53 - orig: 56, 53 - offset: 0, 0 - index: -1 -front_bracer - rotate: false - xy: 732, 85 - size: 35, 48 - orig: 35, 48 - offset: 0, 0 - index: -1 -front_fist_closed - rotate: false - xy: 556, 91 - size: 45, 49 - orig: 45, 49 - offset: 0, 0 - index: -1 -front_fist_open - rotate: false - xy: 668, 32 - size: 52, 52 - orig: 52, 52 - offset: 0, 0 - index: -1 -front_foot - rotate: false - xy: 924, 201 - size: 76, 41 - orig: 76, 41 - offset: 0, 0 - index: -1 -front_foot_bend1 - rotate: false - xy: 845, 200 - size: 77, 42 - orig: 77, 42 - offset: 0, 0 - index: -1 -front_foot_bend2 - rotate: false - xy: 778, 186 - size: 65, 56 - orig: 65, 56 - offset: 0, 0 - index: -1 -front_shin - rotate: true - xy: 444, 91 - size: 49, 110 - orig: 49, 110 - offset: 0, 0 - index: -1 -front_thigh - rotate: true - xy: 603, 89 - size: 29, 67 - orig: 29, 67 - offset: 0, 0 - index: -1 -front_upper_arm - rotate: true - xy: 672, 86 - size: 32, 58 - orig: 32, 58 - offset: 0, 0 - index: -1 -goggles - rotate: false - xy: 444, 142 - size: 157, 100 - orig: 157, 100 - offset: 0, 0 - index: -1 -gun - rotate: false - xy: 603, 120 - size: 126, 122 - orig: 126, 122 - offset: 0, 0 - index: -1 -head - rotate: false - xy: 279, 63 - size: 163, 179 - orig: 163, 179 - offset: 0, 0 - index: -1 -mouth_grind - rotate: false - xy: 845, 163 - size: 56, 35 - orig: 56, 35 - offset: 0, 0 - index: -1 -mouth_oooo - rotate: false - xy: 842, 126 - size: 56, 35 - orig: 56, 35 - offset: 0, 0 - index: -1 -mouth_smile - rotate: false - xy: 769, 97 - size: 56, 35 - orig: 56, 35 - offset: 0, 0 - index: -1 -muzzle - rotate: false - xy: 2, 2 - size: 275, 240 - orig: 277, 240 - offset: 0, 0 - index: -1 -neck - rotate: false - xy: 903, 173 - size: 22, 25 - orig: 22, 25 - offset: 0, 0 - index: -1 -rear_bracer - rotate: false - xy: 722, 40 - size: 34, 43 - orig: 34, 43 - offset: 0, 0 - index: -1 -rear_foot - rotate: false - xy: 444, 11 - size: 68, 36 - orig: 68, 36 - offset: 0, 0 - index: -1 -rear_foot_bend1 - rotate: false - xy: 444, 49 - size: 70, 40 - orig: 70, 40 - offset: 0, 0 - index: -1 -rear_foot_bend2 - rotate: false - xy: 778, 134 - size: 62, 50 - orig: 62, 50 - offset: 0, 0 - index: -1 -rear_shin - rotate: false - xy: 731, 135 - size: 45, 107 - orig: 45, 107 - offset: 0, 0 - index: -1 -rear_thigh - rotate: true - xy: 516, 50 - size: 39, 62 - orig: 39, 62 - offset: 0, 0 - index: -1 -rear_upper_arm - rotate: false - xy: 638, 35 - size: 28, 52 - orig: 28, 52 - offset: 0, 0 - index: -1 -torso - rotate: true - xy: 279, 2 - size: 59, 108 - orig: 59, 108 - offset: 0, 0 - index: -1 diff --git a/spine-cocos2dx/3.2/example/Resources/iphone/spineboy.png b/spine-cocos2dx/3.2/example/Resources/iphone/spineboy.png deleted file mode 100644 index b43262310..000000000 Binary files a/spine-cocos2dx/3.2/example/Resources/iphone/spineboy.png and /dev/null differ diff --git a/spine-cocos2dx/3.2/example/proj.win32/main.cpp b/spine-cocos2dx/3.2/example/proj.win32/main.cpp deleted file mode 100644 index 801cba97d..000000000 --- a/spine-cocos2dx/3.2/example/proj.win32/main.cpp +++ /dev/null @@ -1,22 +0,0 @@ -#include "main.h" -#include "../Classes/AppDelegate.h" - -USING_NS_CC; - -int APIENTRY _tWinMain(HINSTANCE hInstance, - HINSTANCE hPrevInstance, - LPTSTR lpCmdLine, - int nCmdShow) -{ - UNREFERENCED_PARAMETER(hPrevInstance); - UNREFERENCED_PARAMETER(lpCmdLine); - - // create the application instance - AppDelegate app; - - auto director = Director::getInstance(); - auto glview = GLView::create("Spine Example"); - glview->setFrameSize(960, 640); - director->setOpenGLView(glview); - return Application::getInstance()->run(); -} diff --git a/spine-cocos2dx/3.2/example/proj.win32/main.h b/spine-cocos2dx/3.2/example/proj.win32/main.h deleted file mode 100644 index 1eec81188..000000000 --- a/spine-cocos2dx/3.2/example/proj.win32/main.h +++ /dev/null @@ -1,9 +0,0 @@ -#ifndef __MAIN_H__ -#define __MAIN_H__ - -#define WIN32_LEAN_AND_MEAN - -#include -#include - -#endif // __MAIN_H__ diff --git a/spine-cocos2dx/3.2/example/proj.win32/spine-cocos2dx.sln b/spine-cocos2dx/3.2/example/proj.win32/spine-cocos2dx.sln deleted file mode 100644 index 98c48b343..000000000 --- a/spine-cocos2dx/3.2/example/proj.win32/spine-cocos2dx.sln +++ /dev/null @@ -1,53 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Express 2012 for Windows Desktop -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "spine-cocos2dx", "spine-cocos2dx.vcxproj", "{DB4C84B9-AC6D-46A1-B7E6-A77FE4515ACF}" - ProjectSection(ProjectDependencies) = postProject - {98A51BA8-FC3A-415B-AC8F-8C7BD464E93E} = {98A51BA8-FC3A-415B-AC8F-8C7BD464E93E} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libcocos2d", "..\..\cocos2dx\cocos\2d\cocos2d.vcxproj", "{98A51BA8-FC3A-415B-AC8F-8C7BD464E93E}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libchipmunk", "..\..\cocos2dx\external\chipmunk\proj.win32\chipmunk.vcxproj", "{207BC7A9-CCF1-4F2F-A04D-45F72242AE25}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "spine-c", "..\..\..\..\spine-c\spine-c.vcxproj", "{5D74934A-7512-45EE-8402-7B95D3642E85}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Win32 = Debug|Win32 - Release|Win32 = Release|Win32 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {DB4C84B9-AC6D-46A1-B7E6-A77FE4515ACF}.Debug|Win32.ActiveCfg = Debug|Win32 - {DB4C84B9-AC6D-46A1-B7E6-A77FE4515ACF}.Debug|Win32.Build.0 = Debug|Win32 - {DB4C84B9-AC6D-46A1-B7E6-A77FE4515ACF}.Release|Win32.ActiveCfg = Release|Win32 - {DB4C84B9-AC6D-46A1-B7E6-A77FE4515ACF}.Release|Win32.Build.0 = Release|Win32 - {98A51BA8-FC3A-415B-AC8F-8C7BD464E93E}.Debug|Win32.ActiveCfg = Debug|Win32 - {98A51BA8-FC3A-415B-AC8F-8C7BD464E93E}.Debug|Win32.Build.0 = Debug|Win32 - {98A51BA8-FC3A-415B-AC8F-8C7BD464E93E}.Release|Win32.ActiveCfg = Release|Win32 - {98A51BA8-FC3A-415B-AC8F-8C7BD464E93E}.Release|Win32.Build.0 = Release|Win32 - {207BC7A9-CCF1-4F2F-A04D-45F72242AE25}.Debug|Win32.ActiveCfg = Debug|Win32 - {207BC7A9-CCF1-4F2F-A04D-45F72242AE25}.Debug|Win32.Build.0 = Debug|Win32 - {207BC7A9-CCF1-4F2F-A04D-45F72242AE25}.Release|Win32.ActiveCfg = Release|Win32 - {207BC7A9-CCF1-4F2F-A04D-45F72242AE25}.Release|Win32.Build.0 = Release|Win32 - {5D74934A-7512-45EE-8402-7B95D3642E85}.Debug|Win32.ActiveCfg = Debug|Win32 - {5D74934A-7512-45EE-8402-7B95D3642E85}.Debug|Win32.Build.0 = Debug|Win32 - {5D74934A-7512-45EE-8402-7B95D3642E85}.Release|Win32.ActiveCfg = Release|Win32 - {5D74934A-7512-45EE-8402-7B95D3642E85}.Release|Win32.Build.0 = Release|Win32 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(DPCodeReviewSolutionGUID) = preSolution - DPCodeReviewSolutionGUID = {00000000-0000-0000-0000-000000000000} - EndGlobalSection - GlobalSection(DPCodeReviewSolutionGUID) = preSolution - DPCodeReviewSolutionGUID = {00000000-0000-0000-0000-000000000000} - EndGlobalSection - GlobalSection(DPCodeReviewSolutionGUID) = preSolution - DPCodeReviewSolutionGUID = {00000000-0000-0000-0000-000000000000} - EndGlobalSection - GlobalSection(DPCodeReviewSolutionGUID) = preSolution - DPCodeReviewSolutionGUID = {00000000-0000-0000-0000-000000000000} - EndGlobalSection -EndGlobal diff --git a/spine-cocos2dx/3.2/example/proj.win32/spine-cocos2dx.vcxproj b/spine-cocos2dx/3.2/example/proj.win32/spine-cocos2dx.vcxproj deleted file mode 100644 index 7341fc837..000000000 --- a/spine-cocos2dx/3.2/example/proj.win32/spine-cocos2dx.vcxproj +++ /dev/null @@ -1,171 +0,0 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - - {DB4C84B9-AC6D-46A1-B7E6-A77FE4515ACF} - spine - Win32Proj - spine-cocos2dx - - - - Application - Unicode - true - v100 - v110 - v110_xp - - - Application - Unicode - v100 - v110 - v110_xp - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.40219.1 - $(SolutionDir)$(Configuration).win32\ - $(Configuration).win32\ - true - $(SolutionDir)$(Configuration).win32\ - $(Configuration).win32\ - false - AllRules.ruleset - - - AllRules.ruleset - - - - - $(MSBuildProgramFiles32)\Microsoft SDKs\Windows\v7.1A\lib;$(LibraryPath) - - - $(MSBuildProgramFiles32)\Microsoft SDKs\Windows\v7.1A\lib;$(LibraryPath) - - - - Disabled - $(ProjectDir)..\Classes;$(ProjectDir)..\..\src;$(ProjectDir)..\..\..\..\spine-c\include;%(AdditionalIncludeDirectories) - WIN32;_DEBUG;_WINDOWS;COCOS2D_DEBUG=1;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - - - Level3 - EditAndContinue - 4267;4251;4244;%(DisableSpecificWarnings) - CompileAsCpp - - - %(AdditionalDependencies) - $(OutDir)$(ProjectName).exe - $(OutDir);%(AdditionalLibraryDirectories) - true - Windows - MachineX86 - - - false - libcmt.lib;msvcrt.lib;libcmtd.lib - - - - - - - - - MaxSpeed - true - $(ProjectDir)..\..\..\..\cocos2dx;$(ProjectDir)..\..\..\..\cocos2dx\include;$(ProjectDir)..\..\..\..\cocos2dx\kazmath\include;$(ProjectDir)..\..\..\..\cocos2dx\platform\win32;$(ProjectDir)..\..\..\..\cocos2dx\platform\third_party\win32\OGLES;..\Classes;%(AdditionalIncludeDirectories) - WIN32;NDEBUG;_WINDOWS;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) - MultiThreadedDLL - true - - - Level3 - ProgramDatabase - 4267;4251;4244;%(DisableSpecificWarnings) - - - opengl32.lib;glew32.lib;libcocos2d.lib;%(AdditionalDependencies) - $(OutDir)$(ProjectName).exe - $(OutDir);%(AdditionalLibraryDirectories) - true - Windows - true - true - MachineX86 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {5d74934a-7512-45ee-8402-7b95d3642e85} - - - {98a51ba8-fc3a-415b-ac8f-8c7bd464e93e} - false - false - false - true - false - - - {207bc7a9-ccf1-4f2f-a04d-45f72242ae25} - - - - - - \ No newline at end of file diff --git a/spine-cocos2dx/3.2/example/proj.win32/spine-cocos2dx.vcxproj.filters b/spine-cocos2dx/3.2/example/proj.win32/spine-cocos2dx.vcxproj.filters deleted file mode 100644 index ad5c9ffc3..000000000 --- a/spine-cocos2dx/3.2/example/proj.win32/spine-cocos2dx.vcxproj.filters +++ /dev/null @@ -1,69 +0,0 @@ - - - - - {ef769de4-53ac-449d-92e6-e67ec8d7414e} - - - {0dcd52ca-d521-4ba1-a1fa-c0d58a2df402} - - - {54b66b2b-0990-4335-a821-332c44b6f83e} - - - - - win32 - - - Classes - - - Classes - - - src - - - src - - - src - - - src - - - Classes - - - Classes - - - - - win32 - - - Classes - - - src - - - src - - - src - - - src - - - Classes - - - Classes - - - \ No newline at end of file diff --git a/spine-cocos2dx/3.2/src/spine/spine-cocos2dx.cpp b/spine-cocos2dx/3.2/src/spine/spine-cocos2dx.cpp deleted file mode 100644 index 5ab0c1d71..000000000 --- a/spine-cocos2dx/3.2/src/spine/spine-cocos2dx.cpp +++ /dev/null @@ -1,55 +0,0 @@ -/****************************************************************************** - * Spine Runtimes Software License - * Version 2.1 - * - * Copyright (c) 2013, Esoteric Software - * All rights reserved. - * - * You are granted a perpetual, non-exclusive, non-sublicensable and - * non-transferable license to install, execute and perform the Spine Runtimes - * Software (the "Software") solely for internal use. Without the written - * permission of Esoteric Software (typically granted by licensing Spine), 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 SOFTARE 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 - -USING_NS_CC; - -void _spAtlasPage_createTexture (spAtlasPage* self, const char* path) { - Texture2D* texture = Director::getInstance()->getTextureCache()->addImage(path); - texture->retain(); - self->rendererObject = texture; - self->width = texture->getPixelsWide(); - self->height = texture->getPixelsHigh(); -} - -void _spAtlasPage_disposeTexture (spAtlasPage* self) { - ((Texture2D*)self->rendererObject)->release(); -} - -char* _spUtil_readFile (const char* path, int* length) { - Data data = FileUtils::getInstance()->getDataFromFile( - FileUtils::getInstance()->fullPathForFilename(path).c_str()); - *length = data.getSize(); - char* bytes = MALLOC(char, *length); - memcpy(bytes, data.getBytes(), *length); - return bytes; -} diff --git a/spine-cocos2dx/3.2/src/spine/spine-cocos2dx.h b/spine-cocos2dx/3.2/src/spine/spine-cocos2dx.h deleted file mode 100644 index 3409012f3..000000000 --- a/spine-cocos2dx/3.2/src/spine/spine-cocos2dx.h +++ /dev/null @@ -1,39 +0,0 @@ -/****************************************************************************** - * Spine Runtimes Software License - * Version 2.1 - * - * Copyright (c) 2013, Esoteric Software - * All rights reserved. - * - * You are granted a perpetual, non-exclusive, non-sublicensable and - * non-transferable license to install, execute and perform the Spine Runtimes - * Software (the "Software") solely for internal use. Without the written - * permission of Esoteric Software (typically granted by licensing Spine), 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 SOFTARE 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_COCOS2DX_H_ -#define SPINE_COCOS2DX_H_ - -#include -#include "cocos2d.h" -#include -#include - -#endif /* SPINE_COCOS2DX_H_ */ diff --git a/spine-cocos2dx/3/README.md b/spine-cocos2dx/3/README.md new file mode 100644 index 000000000..d6bfd8cbe --- /dev/null +++ b/spine-cocos2dx/3/README.md @@ -0,0 +1,22 @@ +# spine-cocos2dx v3.x + +The spine-cocos2dx runtime provides functionality to load, manipulate and render [Spine](http://esotericsoftware.com) skeletal animation data using [cocos2d-x](http://www.cocos2d-x.org/). spine-cocos2dx is based on [spine-c](https://github.com/EsotericSoftware/spine-runtimes/tree/master/spine-c). + +## Setup + +1. Download the Spine Runtimes source using [git](https://help.github.com/articles/set-up-git) or by downloading it [as a zip](https://github.com/EsotericSoftware/spine-runtimes/archive/master.zip). +1. Place the contents of a cocos2d-x version 3.x distribution into the `spine-cocos2dx/3/cocos2dx` directory. +1. Run the `python download-deps.py` script in the `spine-cocos2dx/3/cocos2dx` directory. +1. Open the XCode (Mac) or Visual C++ 2012 Express (Windows) project file from the `spine-cocos2dx/3/example` directory. Build files are also provided for Android. + +Alternatively, the contents of the `spine-c/src`, `spine-c/include` and `spine-cocos2dx/3/src` directories can be copied into your project. Be sure your header search path will find the contents of the `spine-c/include` and `spine-cocos2dx/3.1/src` directories. Note that the includes use `spine/Xxx.h`, so the `spine` directory cannot be omitted when copying the files. + +## Notes + +- Images are premultiplied by cocos2d-x, so the Spine atlas images should *not* use premultiplied alpha. + +## Examples + +- [Raptor](https://github.com/EsotericSoftware/spine-runtimes/blob/master/spine-cocos2dx/3/example/Classes/RaptorExample.cpp) +- [Spineboy](https://github.com/EsotericSoftware/spine-runtimes/blob/master/spine-cocos2dx/3/example/Classes/SpineboyExample.cpp) +- [Golbins](https://github.com/EsotericSoftware/spine-runtimes/blob/master/spine-cocos2dx/3/example/Classes/GoblinsExample.cpp) diff --git a/spine-cocos2dx/3.1/cocos2dx/Place cocos2dx here.txt b/spine-cocos2dx/3/cocos2dx/Place cocos2dx here.txt similarity index 100% rename from spine-cocos2dx/3.1/cocos2dx/Place cocos2dx here.txt rename to spine-cocos2dx/3/cocos2dx/Place cocos2dx here.txt diff --git a/spine-cocos2dx/3.0/example/Classes/AppDelegate.cpp b/spine-cocos2dx/3/example/Classes/AppDelegate.cpp similarity index 95% rename from spine-cocos2dx/3.0/example/Classes/AppDelegate.cpp rename to spine-cocos2dx/3/example/Classes/AppDelegate.cpp index ed90b2b75..f1439c353 100644 --- a/spine-cocos2dx/3.0/example/Classes/AppDelegate.cpp +++ b/spine-cocos2dx/3/example/Classes/AppDelegate.cpp @@ -3,7 +3,7 @@ #include #include -#include "SpineboyExample.h" +#include "RaptorExample.h" #include "AppMacros.h" USING_NS_CC; @@ -19,6 +19,10 @@ bool AppDelegate::applicationDidFinishLaunching () { // initialize director auto director = Director::getInstance(); auto glview = director->getOpenGLView(); + if (!glview) { + glview = GLView::create("Spine Example"); + director->setOpenGLView(glview); + } // Set the design resolution #if (CC_TARGET_PLATFORM == CC_PLATFORM_WP8) @@ -62,7 +66,7 @@ bool AppDelegate::applicationDidFinishLaunching () { director->setAnimationInterval(1.0 / 60); // create a scene. it's an autorelease object - auto scene = SpineboyExample::scene(); + auto scene = RaptorExample::scene(); // run director->runWithScene(scene); diff --git a/spine-cocos2dx/3.2/example/Classes/AppDelegate.h b/spine-cocos2dx/3/example/Classes/AppDelegate.h similarity index 100% rename from spine-cocos2dx/3.2/example/Classes/AppDelegate.h rename to spine-cocos2dx/3/example/Classes/AppDelegate.h diff --git a/spine-cocos2dx/3.2/example/Classes/AppMacros.h b/spine-cocos2dx/3/example/Classes/AppMacros.h similarity index 100% rename from spine-cocos2dx/3.2/example/Classes/AppMacros.h rename to spine-cocos2dx/3/example/Classes/AppMacros.h diff --git a/spine-cocos2dx/3.2/example/Classes/GoblinsExample.cpp b/spine-cocos2dx/3/example/Classes/GoblinsExample.cpp similarity index 96% rename from spine-cocos2dx/3.2/example/Classes/GoblinsExample.cpp rename to spine-cocos2dx/3/example/Classes/GoblinsExample.cpp index a2e4d3c89..45f0c291e 100644 --- a/spine-cocos2dx/3.2/example/Classes/GoblinsExample.cpp +++ b/spine-cocos2dx/3/example/Classes/GoblinsExample.cpp @@ -29,7 +29,7 @@ *****************************************************************************/ #include "GoblinsExample.h" -#include "SpineboyExample.h" +#include "RaptorExample.h" #include #include #include @@ -64,7 +64,7 @@ bool GoblinsExample::init () { else if (skeletonNode->getTimeScale() == 1) skeletonNode->setTimeScale(0.3f); else - Director::getInstance()->replaceScene(SpineboyExample::scene()); + Director::getInstance()->replaceScene(RaptorExample::scene()); return true; }; _eventDispatcher->addEventListenerWithSceneGraphPriority(listener, this); diff --git a/spine-cocos2dx/3.0/example/Classes/GoblinsExample.h b/spine-cocos2dx/3/example/Classes/GoblinsExample.h similarity index 100% rename from spine-cocos2dx/3.0/example/Classes/GoblinsExample.h rename to spine-cocos2dx/3/example/Classes/GoblinsExample.h diff --git a/spine-cocos2dx/3.1/example/Classes/GoblinsExample.cpp b/spine-cocos2dx/3/example/Classes/RaptorExample.cpp similarity index 84% rename from spine-cocos2dx/3.1/example/Classes/GoblinsExample.cpp rename to spine-cocos2dx/3/example/Classes/RaptorExample.cpp index d9954d39e..2670dc412 100644 --- a/spine-cocos2dx/3.1/example/Classes/GoblinsExample.cpp +++ b/spine-cocos2dx/3/example/Classes/RaptorExample.cpp @@ -28,7 +28,7 @@ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *****************************************************************************/ -#include "GoblinsExample.h" +#include "RaptorExample.h" #include "SpineboyExample.h" #include #include @@ -38,18 +38,19 @@ USING_NS_CC; using namespace spine; using namespace std; -Scene* GoblinsExample::scene () { +Scene* RaptorExample::scene () { Scene *scene = Scene::create(); - scene->addChild(GoblinsExample::create()); + scene->addChild(RaptorExample::create()); return scene; } -bool GoblinsExample::init () { +bool RaptorExample::init () { if (!LayerColor::initWithColor(Color4B(128, 128, 128, 255))) return false; - skeletonNode = SkeletonAnimation::createWithFile("goblins-ffd.json", "goblins-ffd.atlas", 1.5f); + skeletonNode = SkeletonAnimation::createWithFile("raptor.json", "raptor.atlas", 0.5f); skeletonNode->setAnimation(0, "walk", true); - skeletonNode->setSkin("goblin"); + skeletonNode->setAnimation(1, "empty", false); + skeletonNode->addAnimation(1, "gungrab", false, 2); Size windowSize = Director::getInstance()->getWinSize(); skeletonNode->setPosition(Vec2(windowSize.width / 2, 20)); @@ -59,10 +60,10 @@ bool GoblinsExample::init () { EventListenerTouchOneByOne* listener = EventListenerTouchOneByOne::create(); listener->onTouchBegan = [this] (Touch* touch, Event* event) -> bool { - if (!skeletonNode->debugBones) - skeletonNode->debugBones = true; - else if (skeletonNode->timeScale == 1) - skeletonNode->timeScale = 0.3f; + if (!skeletonNode->getDebugBonesEnabled()) + skeletonNode->setDebugBonesEnabled(true); + else if (skeletonNode->getTimeScale() == 1) + skeletonNode->setTimeScale(0.3f); else Director::getInstance()->replaceScene(SpineboyExample::scene()); return true; diff --git a/spine-cocos2dx/3.2/example/Classes/GoblinsExample.h b/spine-cocos2dx/3/example/Classes/RaptorExample.h similarity index 92% rename from spine-cocos2dx/3.2/example/Classes/GoblinsExample.h rename to spine-cocos2dx/3/example/Classes/RaptorExample.h index b74ecaaf8..c8b1b3096 100644 --- a/spine-cocos2dx/3.2/example/Classes/GoblinsExample.h +++ b/spine-cocos2dx/3/example/Classes/RaptorExample.h @@ -28,21 +28,21 @@ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *****************************************************************************/ -#ifndef _GOBLINSEXAMPLE_H_ -#define _GOBLINSEXAMPLE_H_ +#ifndef _RAPTOREXAMPLE_H_ +#define _RAPTOREXAMPLE_H_ #include "cocos2d.h" #include -class GoblinsExample : public cocos2d::LayerColor { +class RaptorExample : public cocos2d::LayerColor { public: static cocos2d::Scene* scene (); virtual bool init (); - CREATE_FUNC (GoblinsExample); + CREATE_FUNC (RaptorExample); private: spine::SkeletonAnimation* skeletonNode; }; -#endif // _GOBLINSEXAMPLE_H_ +#endif // _RAPTOREXAMPLE_H_ diff --git a/spine-cocos2dx/3.2/example/Classes/SpineboyExample.cpp b/spine-cocos2dx/3/example/Classes/SpineboyExample.cpp similarity index 100% rename from spine-cocos2dx/3.2/example/Classes/SpineboyExample.cpp rename to spine-cocos2dx/3/example/Classes/SpineboyExample.cpp diff --git a/spine-cocos2dx/3.0/example/Classes/SpineboyExample.h b/spine-cocos2dx/3/example/Classes/SpineboyExample.h similarity index 100% rename from spine-cocos2dx/3.0/example/Classes/SpineboyExample.h rename to spine-cocos2dx/3/example/Classes/SpineboyExample.h diff --git a/spine-cocos2dx/3.0/example/Resources/common/goblins-ffd.json b/spine-cocos2dx/3/example/Resources/common/goblins-ffd.json similarity index 100% rename from spine-cocos2dx/3.0/example/Resources/common/goblins-ffd.json rename to spine-cocos2dx/3/example/Resources/common/goblins-ffd.json diff --git a/spine-cocos2dx/3/example/Resources/common/raptor.atlas b/spine-cocos2dx/3/example/Resources/common/raptor.atlas new file mode 100644 index 000000000..c90da0078 --- /dev/null +++ b/spine-cocos2dx/3/example/Resources/common/raptor.atlas @@ -0,0 +1,251 @@ + +raptor.png +size: 1022,1022 +format: RGBA8888 +filter: Linear,Linear +repeat: none +back_arm + rotate: false + xy: 410, 545 + size: 46, 29 + orig: 46, 29 + offset: 0, 0 + index: -1 +back_bracer + rotate: false + xy: 540, 548 + size: 39, 28 + orig: 39, 28 + offset: 0, 0 + index: -1 +back_hand + rotate: true + xy: 504, 538 + size: 36, 34 + orig: 36, 34 + offset: 0, 0 + index: -1 +back_knee + rotate: false + xy: 299, 478 + size: 49, 67 + orig: 49, 67 + offset: 0, 0 + index: -1 +back_thigh + rotate: true + xy: 140, 247 + size: 39, 24 + orig: 39, 24 + offset: 0, 0 + index: -1 +eyes_open + rotate: true + xy: 2, 2 + size: 47, 45 + orig: 47, 45 + offset: 0, 0 + index: -1 +front_arm + rotate: false + xy: 360, 544 + size: 48, 30 + orig: 48, 30 + offset: 0, 0 + index: -1 +front_bracer + rotate: false + xy: 538, 578 + size: 41, 29 + orig: 41, 29 + offset: 0, 0 + index: -1 +front_hand + rotate: false + xy: 538, 609 + size: 41, 38 + orig: 41, 38 + offset: 0, 0 + index: -1 +front_open_hand + rotate: false + xy: 894, 782 + size: 43, 44 + orig: 43, 44 + offset: 0, 0 + index: -1 +front_thigh + rotate: false + xy: 942, 849 + size: 57, 29 + orig: 57, 29 + offset: 0, 0 + index: -1 +gun + rotate: false + xy: 785, 774 + size: 107, 103 + orig: 107, 103 + offset: 0, 0 + index: -1 +gun_nohand + rotate: false + xy: 614, 703 + size: 105, 102 + orig: 105, 102 + offset: 0, 0 + index: -1 +head + rotate: false + xy: 2, 137 + size: 136, 149 + orig: 136, 149 + offset: 0, 0 + index: -1 +lower_leg + rotate: true + xy: 780, 699 + size: 73, 98 + orig: 73, 98 + offset: 0, 0 + index: -1 +mouth_smile + rotate: true + xy: 49, 2 + size: 47, 30 + orig: 47, 30 + offset: 0, 0 + index: -1 +neck + rotate: true + xy: 1001, 860 + size: 18, 21 + orig: 18, 21 + offset: 0, 0 + index: -1 +raptor_arm_back + rotate: false + xy: 940, 936 + size: 82, 86 + orig: 82, 86 + offset: 0, 0 + index: -1 +raptor_body + rotate: false + xy: 2, 737 + size: 610, 285 + orig: 610, 285 + offset: 0, 0 + index: -1 +raptor_front_arm + rotate: true + xy: 195, 464 + size: 81, 102 + orig: 81, 102 + offset: 0, 0 + index: -1 +raptor_front_leg + rotate: false + xy: 2, 478 + size: 191, 257 + orig: 191, 257 + offset: 0, 0 + index: -1 +raptor_hindleg_back + rotate: false + xy: 614, 807 + size: 169, 215 + orig: 169, 215 + offset: 0, 0 + index: -1 +raptor_horn + rotate: false + xy: 360, 655 + size: 182, 80 + orig: 182, 80 + offset: 0, 0 + index: -1 +raptor_horn_back + rotate: false + xy: 360, 576 + size: 176, 77 + orig: 176, 77 + offset: 0, 0 + index: -1 +raptor_jaw + rotate: false + xy: 785, 879 + size: 153, 143 + orig: 153, 143 + offset: 0, 0 + index: -1 +raptor_saddle_noshadow + rotate: false + xy: 2, 288 + size: 163, 188 + orig: 163, 188 + offset: 0, 0 + index: -1 +raptor_saddle_strap_front + rotate: false + xy: 721, 710 + size: 57, 95 + orig: 57, 95 + offset: 0, 0 + index: -1 +raptor_saddle_strap_rear + rotate: true + xy: 940, 880 + size: 54, 74 + orig: 54, 74 + offset: 0, 0 + index: -1 +raptor_saddle_w_shadow + rotate: false + xy: 195, 547 + size: 163, 188 + orig: 163, 188 + offset: 0, 0 + index: -1 +raptor_tongue + rotate: true + xy: 544, 649 + size: 86, 64 + orig: 86, 64 + offset: 0, 0 + index: -1 +stirrup_back + rotate: false + xy: 458, 539 + size: 44, 35 + orig: 44, 35 + offset: 0, 0 + index: -1 +stirrup_front + rotate: true + xy: 81, 4 + size: 45, 50 + orig: 45, 50 + offset: 0, 0 + index: -1 +stirrup_strap + rotate: true + xy: 894, 828 + size: 49, 46 + orig: 49, 46 + offset: 0, 0 + index: -1 +torso + rotate: true + xy: 610, 647 + size: 54, 91 + orig: 54, 91 + offset: 0, 0 + index: -1 +visor + rotate: false + xy: 2, 51 + size: 131, 84 + orig: 131, 84 + offset: 0, 0 + index: -1 diff --git a/spine-cocos2dx/3/example/Resources/common/raptor.json b/spine-cocos2dx/3/example/Resources/common/raptor.json new file mode 100644 index 000000000..df9892de6 --- /dev/null +++ b/spine-cocos2dx/3/example/Resources/common/raptor.json @@ -0,0 +1,1333 @@ +{ +"skeleton": { "hash": "r3IJRaLbaxgEoW1YBAOrYT69jB4", "spine": "Dev", "width": 1224.2, "height": 1052.38 }, +"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": "gun", + "parent": "spineboy_hip", + "length": 181.35, + "x": 16.86, + "y": -7.89, + "scaleX": 0.816, + "scaleY": 0.816, + "rotation": 107.11 + }, + { "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, + "x": 57.78, + "y": -0.02, + "scaleX": 0.73, + "scaleY": 0.823, + "rotation": -0.46, + "inheritRotation": false + }, + { "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, + "x": 49.71, + "y": 20.65, + "scaleX": 1.154, + "rotation": -3.16, + "inheritRotation": false + }, + { "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_hand2", + "parent": "front_bracer", + "length": 58.18, + "x": 39.98, + "y": -0.89, + "rotation": 13.9, + "inheritRotation": false + }, + { "name": "tongue3", "parent": "tongue2", "length": 43.64, "x": 44.26, "y": -0.2, "rotation": 12.86 } +], +"ik": [ + { + "name": "front_leg_goal", + "bones": [ "front_leg1", "front_leg2" ], + "target": "front_leg_goal", + "bendPositive": false + }, + { + "name": "rear_leg_goal", + "bones": [ "rear_leg1", "rear_leg2" ], + "target": "rear_leg_goal", + "bendPositive": false + }, + { + "name": "front_foot_goal", + "bones": [ "front_leg3", "front_foot1" ], + "target": "front_foot_goal" + }, + { + "name": "rear_foot_goal", + "bones": [ "rear_leg3", "rear_foot1" ], + "target": "rear_foot_goal" + }, + { + "name": "stirrup", + "bones": [ "stirrup_strap1", "stirrup_strap2" ], + "target": "stirrup" + }, + { + "name": "spineboy_rear_leg_goal", + "bones": [ "back_thigh", "back_knee" ], + "target": "spineboy_rear_arm_goal", + "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" + } +], +"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" } +], +"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": [ 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 ], + "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 + } + }, + "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": "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 + } + }, + "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 + } + }, + "raptor_front_arm": { + "raptor_front_arm": { + "type": "skinnedmesh", + "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 + } + }, + "raptor_front_leg": { + "raptor_front_leg": { + "type": "skinnedmesh", + "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 + } + }, + "raptor_hindleg_back": { + "raptor_hindleg_back": { + "type": "skinnedmesh", + "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 + } + }, + "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": "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 + } + }, + "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": "skinnedmesh", + "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 + } + }, + "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": "skinnedmesh", + "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 + } + }, + "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": "skinnedmesh", + "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 + } + }, + "visor": { + "visor": { "x": 99.13, "y": 6.51, "rotation": -70.57, "width": 261, "height": 168 } + } + } +}, +"animations": { + "empty": {}, + "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": 1, + "bendPositive": true, + "curve": [ 0.317, 0.13, 0.781, 0.56 ] + }, + { "time": 0.1333, "mix": 0, "bendPositive": true } + ] + } + }, + "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": 0.5333, "angle": -41.93 }, + { "time": 0.6333, "angle": -16.71 }, + { "time": 0.7333, "angle": 16.92 }, + { "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": 0.1, "angle": -45.79 }, + { "time": 0.1666, "angle": -19.95 }, + { "time": 0.4, "angle": 35.36 }, + { "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": 0.5333, "angle": -346.78 }, + { "time": 0.6333, "angle": -398.52 }, + { "time": 0.7333, "angle": -393.21 }, + { "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": 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": [ + { "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": -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 } + ], + "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 } + ] + }, + "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": -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 } + ], + "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 } + ] + }, + "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": 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 } + ], + "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 } + ] + }, + "front_foot2": { + "rotate": [ + { "time": 0, "angle": 44.18 }, + { "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 } + ], + "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": -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 } + ], + "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 } + ] + }, + "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": 27.59 }, + { "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": 27.59 }, + { "time": 1.0666, "angle": 27.59 } + ], + "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 } + ] + } + }, + "ffd": { + "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 ] + }, + { "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 ] + }, + { "time": 1.0666 } + ] + }, + "raptor_front_leg": { + "raptor_front_leg": [ + { "time": 0, "curve": "stepped" }, + { "time": 0.2666 }, + { + "time": 0.5333, + "offset": 216, + "vertices": [ -2.23, 21.95, 21.54, -4.75 ] + }, + { + "time": 0.6, + "offset": 216, + "vertices": [ 7.17, 15.14, 15.26, -6.91 ] + }, + { + "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 ] + }, + { "time": 0.8, "curve": "stepped" }, + { "time": 0.9666, "curve": "stepped" }, + { "time": 1.0666 } + ] + } + } + } + } +} +} \ No newline at end of file diff --git a/spine-cocos2dx/3/example/Resources/common/raptor.png b/spine-cocos2dx/3/example/Resources/common/raptor.png new file mode 100644 index 000000000..861dbce1a Binary files /dev/null and b/spine-cocos2dx/3/example/Resources/common/raptor.png differ diff --git a/spine-cocos2dx/3.0/example/Resources/common/spineboy.json b/spine-cocos2dx/3/example/Resources/common/spineboy.json similarity index 100% rename from spine-cocos2dx/3.0/example/Resources/common/spineboy.json rename to spine-cocos2dx/3/example/Resources/common/spineboy.json diff --git a/spine-cocos2dx/3.0/example/Resources/common/sprite.png b/spine-cocos2dx/3/example/Resources/common/sprite.png similarity index 100% rename from spine-cocos2dx/3.0/example/Resources/common/sprite.png rename to spine-cocos2dx/3/example/Resources/common/sprite.png diff --git a/spine-cocos2dx/3.0/example/Resources/ipad-retina/goblins-ffd.atlas b/spine-cocos2dx/3/example/Resources/ipad-retina/goblins-ffd.atlas similarity index 81% rename from spine-cocos2dx/3.0/example/Resources/ipad-retina/goblins-ffd.atlas rename to spine-cocos2dx/3/example/Resources/ipad-retina/goblins-ffd.atlas index b977b07f6..5fefae2bb 100644 --- a/spine-cocos2dx/3.0/example/Resources/ipad-retina/goblins-ffd.atlas +++ b/spine-cocos2dx/3/example/Resources/ipad-retina/goblins-ffd.atlas @@ -4,288 +4,288 @@ format: RGBA8888 filter: Linear,Linear repeat: none dagger - rotate: false - xy: 2, 28 + rotate: true + xy: 372, 100 size: 26, 108 orig: 26, 108 offset: 0, 0 index: -1 goblin/eyes-closed rotate: false - xy: 137, 29 + xy: 2, 7 size: 34, 12 orig: 34, 12 offset: 0, 0 index: -1 goblin/head rotate: false - xy: 26, 357 + xy: 107, 36 size: 103, 66 orig: 103, 66 offset: 0, 0 index: -1 goblin/left-arm rotate: false - xy: 30, 28 + xy: 901, 56 size: 37, 35 orig: 37, 35 offset: 0, 0 index: -1 goblin/left-foot rotate: false - xy: 134, 260 + xy: 929, 95 size: 65, 31 orig: 65, 31 offset: 0, 0 index: -1 goblin/left-hand rotate: false - xy: 69, 25 + xy: 452, 2 size: 36, 41 orig: 36, 41 offset: 0, 0 index: -1 goblin/left-lower-leg - rotate: false - xy: 134, 293 + rotate: true + xy: 713, 93 size: 33, 70 orig: 33, 70 offset: 0, 0 index: -1 goblin/left-shoulder rotate: false - xy: 137, 43 + xy: 610, 44 size: 29, 44 orig: 29, 44 offset: 0, 0 index: -1 goblin/left-upper-leg - rotate: false - xy: 30, 65 + rotate: true + xy: 638, 93 size: 33, 73 orig: 33, 73 offset: 0, 0 index: -1 goblin/neck rotate: false - xy: 201, 387 + xy: 490, 2 size: 36, 41 orig: 36, 41 offset: 0, 0 index: -1 goblin/pelvis rotate: false - xy: 26, 140 + xy: 482, 45 size: 62, 43 orig: 62, 43 offset: 0, 0 index: -1 goblin/right-arm - rotate: false - xy: 171, 84 + rotate: true + xy: 690, 2 size: 23, 50 orig: 23, 50 offset: 0, 0 index: -1 goblin/right-foot rotate: false - xy: 134, 225 + xy: 771, 58 size: 63, 33 orig: 63, 33 offset: 0, 0 index: -1 goblin/right-hand rotate: false - xy: 204, 258 + xy: 940, 56 size: 36, 37 orig: 36, 37 offset: 0, 0 index: -1 goblin/right-lower-leg - rotate: false - xy: 201, 430 + rotate: true + xy: 482, 90 size: 36, 76 orig: 36, 76 offset: 0, 0 index: -1 goblin/right-shoulder - rotate: false - xy: 130, 89 + rotate: true + xy: 602, 3 size: 39, 45 orig: 39, 45 offset: 0, 0 index: -1 goblin/right-upper-leg - rotate: false - xy: 98, 214 + rotate: true + xy: 641, 57 size: 34, 63 orig: 34, 63 offset: 0, 0 index: -1 goblin/torso - rotate: false - xy: 131, 410 + rotate: true + xy: 212, 34 size: 68, 96 orig: 68, 96 offset: 0, 0 index: -1 goblin/undie-straps rotate: false - xy: 2, 7 + xy: 380, 5 size: 55, 19 orig: 55, 19 offset: 0, 0 index: -1 goblin/undies rotate: false - xy: 199, 227 + xy: 174, 5 size: 36, 29 orig: 36, 29 offset: 0, 0 index: -1 goblingirl/eyes-closed rotate: false - xy: 59, 2 + xy: 269, 11 size: 37, 21 orig: 37, 21 offset: 0, 0 index: -1 goblingirl/head rotate: false - xy: 26, 425 + xy: 2, 21 size: 103, 81 orig: 103, 81 offset: 0, 0 index: -1 goblingirl/left-arm - rotate: false - xy: 201, 190 + rotate: true + xy: 978, 56 size: 37, 35 orig: 37, 35 offset: 0, 0 index: -1 goblingirl/left-foot rotate: false - xy: 134, 192 + xy: 107, 3 size: 65, 31 orig: 65, 31 offset: 0, 0 index: -1 goblingirl/left-hand rotate: false - xy: 196, 109 + xy: 565, 2 size: 35, 40 orig: 35, 40 offset: 0, 0 index: -1 goblingirl/left-lower-leg - rotate: false - xy: 169, 293 + rotate: true + xy: 785, 93 size: 33, 70 orig: 33, 70 offset: 0, 0 index: -1 goblingirl/left-shoulder - rotate: false - xy: 107, 30 + rotate: true + xy: 690, 27 size: 28, 46 orig: 28, 46 offset: 0, 0 index: -1 goblingirl/left-upper-leg - rotate: false - xy: 65, 68 + rotate: true + xy: 857, 93 size: 33, 70 orig: 33, 70 offset: 0, 0 index: -1 goblingirl/neck rotate: false - xy: 204, 297 + xy: 528, 2 size: 35, 41 orig: 35, 41 offset: 0, 0 index: -1 goblingirl/pelvis rotate: false - xy: 131, 365 + xy: 546, 45 size: 62, 43 orig: 62, 43 offset: 0, 0 index: -1 goblingirl/right-arm rotate: false - xy: 100, 97 + xy: 452, 48 size: 28, 50 orig: 28, 50 offset: 0, 0 index: -1 goblingirl/right-foot rotate: false - xy: 134, 157 + xy: 836, 58 size: 63, 33 orig: 63, 33 offset: 0, 0 index: -1 goblingirl/right-hand - rotate: false - xy: 199, 151 + rotate: true + xy: 771, 20 size: 36, 37 orig: 36, 37 offset: 0, 0 index: -1 goblingirl/right-lower-leg - rotate: false - xy: 96, 279 + rotate: true + xy: 560, 90 size: 36, 76 orig: 36, 76 offset: 0, 0 index: -1 goblingirl/right-shoulder rotate: false - xy: 204, 340 + xy: 649, 10 size: 39, 45 orig: 39, 45 offset: 0, 0 index: -1 goblingirl/right-upper-leg - rotate: false - xy: 98, 149 + rotate: true + xy: 706, 57 size: 34, 63 orig: 34, 63 offset: 0, 0 index: -1 goblingirl/torso rotate: false - xy: 26, 259 + xy: 310, 2 size: 68, 96 orig: 68, 96 offset: 0, 0 index: -1 goblingirl/undie-straps rotate: false - xy: 134, 136 + xy: 212, 13 size: 55, 19 orig: 55, 19 offset: 0, 0 index: -1 goblingirl/undies rotate: false - xy: 196, 78 + xy: 810, 27 size: 36, 29 orig: 36, 29 offset: 0, 0 index: -1 shield rotate: false - xy: 26, 185 + xy: 380, 26 size: 70, 72 orig: 70, 72 offset: 0, 0 index: -1 spear - rotate: false - xy: 2, 138 + rotate: true + xy: 2, 104 size: 22, 368 orig: 22, 368 offset: 0, 0 diff --git a/spine-cocos2dx/3/example/Resources/ipad-retina/goblins-ffd.png b/spine-cocos2dx/3/example/Resources/ipad-retina/goblins-ffd.png new file mode 100644 index 000000000..a3daf0010 Binary files /dev/null and b/spine-cocos2dx/3/example/Resources/ipad-retina/goblins-ffd.png differ diff --git a/spine-cocos2dx/3.0/example/Resources/ipad-retina/spineboy.atlas b/spine-cocos2dx/3/example/Resources/ipad-retina/spineboy.atlas similarity index 100% rename from spine-cocos2dx/3.0/example/Resources/ipad-retina/spineboy.atlas rename to spine-cocos2dx/3/example/Resources/ipad-retina/spineboy.atlas diff --git a/spine-cocos2dx/3/example/Resources/ipad-retina/spineboy.png b/spine-cocos2dx/3/example/Resources/ipad-retina/spineboy.png new file mode 100644 index 000000000..dce2fe3e2 Binary files /dev/null and b/spine-cocos2dx/3/example/Resources/ipad-retina/spineboy.png differ diff --git a/spine-cocos2dx/3.0/example/Resources/ipad/goblins-ffd.atlas b/spine-cocos2dx/3/example/Resources/ipad/goblins-ffd.atlas similarity index 81% rename from spine-cocos2dx/3.0/example/Resources/ipad/goblins-ffd.atlas rename to spine-cocos2dx/3/example/Resources/ipad/goblins-ffd.atlas index b977b07f6..5fefae2bb 100644 --- a/spine-cocos2dx/3.0/example/Resources/ipad/goblins-ffd.atlas +++ b/spine-cocos2dx/3/example/Resources/ipad/goblins-ffd.atlas @@ -4,288 +4,288 @@ format: RGBA8888 filter: Linear,Linear repeat: none dagger - rotate: false - xy: 2, 28 + rotate: true + xy: 372, 100 size: 26, 108 orig: 26, 108 offset: 0, 0 index: -1 goblin/eyes-closed rotate: false - xy: 137, 29 + xy: 2, 7 size: 34, 12 orig: 34, 12 offset: 0, 0 index: -1 goblin/head rotate: false - xy: 26, 357 + xy: 107, 36 size: 103, 66 orig: 103, 66 offset: 0, 0 index: -1 goblin/left-arm rotate: false - xy: 30, 28 + xy: 901, 56 size: 37, 35 orig: 37, 35 offset: 0, 0 index: -1 goblin/left-foot rotate: false - xy: 134, 260 + xy: 929, 95 size: 65, 31 orig: 65, 31 offset: 0, 0 index: -1 goblin/left-hand rotate: false - xy: 69, 25 + xy: 452, 2 size: 36, 41 orig: 36, 41 offset: 0, 0 index: -1 goblin/left-lower-leg - rotate: false - xy: 134, 293 + rotate: true + xy: 713, 93 size: 33, 70 orig: 33, 70 offset: 0, 0 index: -1 goblin/left-shoulder rotate: false - xy: 137, 43 + xy: 610, 44 size: 29, 44 orig: 29, 44 offset: 0, 0 index: -1 goblin/left-upper-leg - rotate: false - xy: 30, 65 + rotate: true + xy: 638, 93 size: 33, 73 orig: 33, 73 offset: 0, 0 index: -1 goblin/neck rotate: false - xy: 201, 387 + xy: 490, 2 size: 36, 41 orig: 36, 41 offset: 0, 0 index: -1 goblin/pelvis rotate: false - xy: 26, 140 + xy: 482, 45 size: 62, 43 orig: 62, 43 offset: 0, 0 index: -1 goblin/right-arm - rotate: false - xy: 171, 84 + rotate: true + xy: 690, 2 size: 23, 50 orig: 23, 50 offset: 0, 0 index: -1 goblin/right-foot rotate: false - xy: 134, 225 + xy: 771, 58 size: 63, 33 orig: 63, 33 offset: 0, 0 index: -1 goblin/right-hand rotate: false - xy: 204, 258 + xy: 940, 56 size: 36, 37 orig: 36, 37 offset: 0, 0 index: -1 goblin/right-lower-leg - rotate: false - xy: 201, 430 + rotate: true + xy: 482, 90 size: 36, 76 orig: 36, 76 offset: 0, 0 index: -1 goblin/right-shoulder - rotate: false - xy: 130, 89 + rotate: true + xy: 602, 3 size: 39, 45 orig: 39, 45 offset: 0, 0 index: -1 goblin/right-upper-leg - rotate: false - xy: 98, 214 + rotate: true + xy: 641, 57 size: 34, 63 orig: 34, 63 offset: 0, 0 index: -1 goblin/torso - rotate: false - xy: 131, 410 + rotate: true + xy: 212, 34 size: 68, 96 orig: 68, 96 offset: 0, 0 index: -1 goblin/undie-straps rotate: false - xy: 2, 7 + xy: 380, 5 size: 55, 19 orig: 55, 19 offset: 0, 0 index: -1 goblin/undies rotate: false - xy: 199, 227 + xy: 174, 5 size: 36, 29 orig: 36, 29 offset: 0, 0 index: -1 goblingirl/eyes-closed rotate: false - xy: 59, 2 + xy: 269, 11 size: 37, 21 orig: 37, 21 offset: 0, 0 index: -1 goblingirl/head rotate: false - xy: 26, 425 + xy: 2, 21 size: 103, 81 orig: 103, 81 offset: 0, 0 index: -1 goblingirl/left-arm - rotate: false - xy: 201, 190 + rotate: true + xy: 978, 56 size: 37, 35 orig: 37, 35 offset: 0, 0 index: -1 goblingirl/left-foot rotate: false - xy: 134, 192 + xy: 107, 3 size: 65, 31 orig: 65, 31 offset: 0, 0 index: -1 goblingirl/left-hand rotate: false - xy: 196, 109 + xy: 565, 2 size: 35, 40 orig: 35, 40 offset: 0, 0 index: -1 goblingirl/left-lower-leg - rotate: false - xy: 169, 293 + rotate: true + xy: 785, 93 size: 33, 70 orig: 33, 70 offset: 0, 0 index: -1 goblingirl/left-shoulder - rotate: false - xy: 107, 30 + rotate: true + xy: 690, 27 size: 28, 46 orig: 28, 46 offset: 0, 0 index: -1 goblingirl/left-upper-leg - rotate: false - xy: 65, 68 + rotate: true + xy: 857, 93 size: 33, 70 orig: 33, 70 offset: 0, 0 index: -1 goblingirl/neck rotate: false - xy: 204, 297 + xy: 528, 2 size: 35, 41 orig: 35, 41 offset: 0, 0 index: -1 goblingirl/pelvis rotate: false - xy: 131, 365 + xy: 546, 45 size: 62, 43 orig: 62, 43 offset: 0, 0 index: -1 goblingirl/right-arm rotate: false - xy: 100, 97 + xy: 452, 48 size: 28, 50 orig: 28, 50 offset: 0, 0 index: -1 goblingirl/right-foot rotate: false - xy: 134, 157 + xy: 836, 58 size: 63, 33 orig: 63, 33 offset: 0, 0 index: -1 goblingirl/right-hand - rotate: false - xy: 199, 151 + rotate: true + xy: 771, 20 size: 36, 37 orig: 36, 37 offset: 0, 0 index: -1 goblingirl/right-lower-leg - rotate: false - xy: 96, 279 + rotate: true + xy: 560, 90 size: 36, 76 orig: 36, 76 offset: 0, 0 index: -1 goblingirl/right-shoulder rotate: false - xy: 204, 340 + xy: 649, 10 size: 39, 45 orig: 39, 45 offset: 0, 0 index: -1 goblingirl/right-upper-leg - rotate: false - xy: 98, 149 + rotate: true + xy: 706, 57 size: 34, 63 orig: 34, 63 offset: 0, 0 index: -1 goblingirl/torso rotate: false - xy: 26, 259 + xy: 310, 2 size: 68, 96 orig: 68, 96 offset: 0, 0 index: -1 goblingirl/undie-straps rotate: false - xy: 134, 136 + xy: 212, 13 size: 55, 19 orig: 55, 19 offset: 0, 0 index: -1 goblingirl/undies rotate: false - xy: 196, 78 + xy: 810, 27 size: 36, 29 orig: 36, 29 offset: 0, 0 index: -1 shield rotate: false - xy: 26, 185 + xy: 380, 26 size: 70, 72 orig: 70, 72 offset: 0, 0 index: -1 spear - rotate: false - xy: 2, 138 + rotate: true + xy: 2, 104 size: 22, 368 orig: 22, 368 offset: 0, 0 diff --git a/spine-cocos2dx/3/example/Resources/ipad/goblins-ffd.png b/spine-cocos2dx/3/example/Resources/ipad/goblins-ffd.png new file mode 100644 index 000000000..a3daf0010 Binary files /dev/null and b/spine-cocos2dx/3/example/Resources/ipad/goblins-ffd.png differ diff --git a/spine-cocos2dx/3.0/example/Resources/ipad/spineboy.atlas b/spine-cocos2dx/3/example/Resources/ipad/spineboy.atlas similarity index 100% rename from spine-cocos2dx/3.0/example/Resources/ipad/spineboy.atlas rename to spine-cocos2dx/3/example/Resources/ipad/spineboy.atlas diff --git a/spine-cocos2dx/3/example/Resources/ipad/spineboy.png b/spine-cocos2dx/3/example/Resources/ipad/spineboy.png new file mode 100644 index 000000000..dce2fe3e2 Binary files /dev/null and b/spine-cocos2dx/3/example/Resources/ipad/spineboy.png differ diff --git a/spine-cocos2dx/3.0/example/Resources/iphone-retina/goblins-ffd.atlas b/spine-cocos2dx/3/example/Resources/iphone-retina/goblins-ffd.atlas similarity index 81% rename from spine-cocos2dx/3.0/example/Resources/iphone-retina/goblins-ffd.atlas rename to spine-cocos2dx/3/example/Resources/iphone-retina/goblins-ffd.atlas index b977b07f6..5fefae2bb 100644 --- a/spine-cocos2dx/3.0/example/Resources/iphone-retina/goblins-ffd.atlas +++ b/spine-cocos2dx/3/example/Resources/iphone-retina/goblins-ffd.atlas @@ -4,288 +4,288 @@ format: RGBA8888 filter: Linear,Linear repeat: none dagger - rotate: false - xy: 2, 28 + rotate: true + xy: 372, 100 size: 26, 108 orig: 26, 108 offset: 0, 0 index: -1 goblin/eyes-closed rotate: false - xy: 137, 29 + xy: 2, 7 size: 34, 12 orig: 34, 12 offset: 0, 0 index: -1 goblin/head rotate: false - xy: 26, 357 + xy: 107, 36 size: 103, 66 orig: 103, 66 offset: 0, 0 index: -1 goblin/left-arm rotate: false - xy: 30, 28 + xy: 901, 56 size: 37, 35 orig: 37, 35 offset: 0, 0 index: -1 goblin/left-foot rotate: false - xy: 134, 260 + xy: 929, 95 size: 65, 31 orig: 65, 31 offset: 0, 0 index: -1 goblin/left-hand rotate: false - xy: 69, 25 + xy: 452, 2 size: 36, 41 orig: 36, 41 offset: 0, 0 index: -1 goblin/left-lower-leg - rotate: false - xy: 134, 293 + rotate: true + xy: 713, 93 size: 33, 70 orig: 33, 70 offset: 0, 0 index: -1 goblin/left-shoulder rotate: false - xy: 137, 43 + xy: 610, 44 size: 29, 44 orig: 29, 44 offset: 0, 0 index: -1 goblin/left-upper-leg - rotate: false - xy: 30, 65 + rotate: true + xy: 638, 93 size: 33, 73 orig: 33, 73 offset: 0, 0 index: -1 goblin/neck rotate: false - xy: 201, 387 + xy: 490, 2 size: 36, 41 orig: 36, 41 offset: 0, 0 index: -1 goblin/pelvis rotate: false - xy: 26, 140 + xy: 482, 45 size: 62, 43 orig: 62, 43 offset: 0, 0 index: -1 goblin/right-arm - rotate: false - xy: 171, 84 + rotate: true + xy: 690, 2 size: 23, 50 orig: 23, 50 offset: 0, 0 index: -1 goblin/right-foot rotate: false - xy: 134, 225 + xy: 771, 58 size: 63, 33 orig: 63, 33 offset: 0, 0 index: -1 goblin/right-hand rotate: false - xy: 204, 258 + xy: 940, 56 size: 36, 37 orig: 36, 37 offset: 0, 0 index: -1 goblin/right-lower-leg - rotate: false - xy: 201, 430 + rotate: true + xy: 482, 90 size: 36, 76 orig: 36, 76 offset: 0, 0 index: -1 goblin/right-shoulder - rotate: false - xy: 130, 89 + rotate: true + xy: 602, 3 size: 39, 45 orig: 39, 45 offset: 0, 0 index: -1 goblin/right-upper-leg - rotate: false - xy: 98, 214 + rotate: true + xy: 641, 57 size: 34, 63 orig: 34, 63 offset: 0, 0 index: -1 goblin/torso - rotate: false - xy: 131, 410 + rotate: true + xy: 212, 34 size: 68, 96 orig: 68, 96 offset: 0, 0 index: -1 goblin/undie-straps rotate: false - xy: 2, 7 + xy: 380, 5 size: 55, 19 orig: 55, 19 offset: 0, 0 index: -1 goblin/undies rotate: false - xy: 199, 227 + xy: 174, 5 size: 36, 29 orig: 36, 29 offset: 0, 0 index: -1 goblingirl/eyes-closed rotate: false - xy: 59, 2 + xy: 269, 11 size: 37, 21 orig: 37, 21 offset: 0, 0 index: -1 goblingirl/head rotate: false - xy: 26, 425 + xy: 2, 21 size: 103, 81 orig: 103, 81 offset: 0, 0 index: -1 goblingirl/left-arm - rotate: false - xy: 201, 190 + rotate: true + xy: 978, 56 size: 37, 35 orig: 37, 35 offset: 0, 0 index: -1 goblingirl/left-foot rotate: false - xy: 134, 192 + xy: 107, 3 size: 65, 31 orig: 65, 31 offset: 0, 0 index: -1 goblingirl/left-hand rotate: false - xy: 196, 109 + xy: 565, 2 size: 35, 40 orig: 35, 40 offset: 0, 0 index: -1 goblingirl/left-lower-leg - rotate: false - xy: 169, 293 + rotate: true + xy: 785, 93 size: 33, 70 orig: 33, 70 offset: 0, 0 index: -1 goblingirl/left-shoulder - rotate: false - xy: 107, 30 + rotate: true + xy: 690, 27 size: 28, 46 orig: 28, 46 offset: 0, 0 index: -1 goblingirl/left-upper-leg - rotate: false - xy: 65, 68 + rotate: true + xy: 857, 93 size: 33, 70 orig: 33, 70 offset: 0, 0 index: -1 goblingirl/neck rotate: false - xy: 204, 297 + xy: 528, 2 size: 35, 41 orig: 35, 41 offset: 0, 0 index: -1 goblingirl/pelvis rotate: false - xy: 131, 365 + xy: 546, 45 size: 62, 43 orig: 62, 43 offset: 0, 0 index: -1 goblingirl/right-arm rotate: false - xy: 100, 97 + xy: 452, 48 size: 28, 50 orig: 28, 50 offset: 0, 0 index: -1 goblingirl/right-foot rotate: false - xy: 134, 157 + xy: 836, 58 size: 63, 33 orig: 63, 33 offset: 0, 0 index: -1 goblingirl/right-hand - rotate: false - xy: 199, 151 + rotate: true + xy: 771, 20 size: 36, 37 orig: 36, 37 offset: 0, 0 index: -1 goblingirl/right-lower-leg - rotate: false - xy: 96, 279 + rotate: true + xy: 560, 90 size: 36, 76 orig: 36, 76 offset: 0, 0 index: -1 goblingirl/right-shoulder rotate: false - xy: 204, 340 + xy: 649, 10 size: 39, 45 orig: 39, 45 offset: 0, 0 index: -1 goblingirl/right-upper-leg - rotate: false - xy: 98, 149 + rotate: true + xy: 706, 57 size: 34, 63 orig: 34, 63 offset: 0, 0 index: -1 goblingirl/torso rotate: false - xy: 26, 259 + xy: 310, 2 size: 68, 96 orig: 68, 96 offset: 0, 0 index: -1 goblingirl/undie-straps rotate: false - xy: 134, 136 + xy: 212, 13 size: 55, 19 orig: 55, 19 offset: 0, 0 index: -1 goblingirl/undies rotate: false - xy: 196, 78 + xy: 810, 27 size: 36, 29 orig: 36, 29 offset: 0, 0 index: -1 shield rotate: false - xy: 26, 185 + xy: 380, 26 size: 70, 72 orig: 70, 72 offset: 0, 0 index: -1 spear - rotate: false - xy: 2, 138 + rotate: true + xy: 2, 104 size: 22, 368 orig: 22, 368 offset: 0, 0 diff --git a/spine-cocos2dx/3/example/Resources/iphone-retina/goblins-ffd.png b/spine-cocos2dx/3/example/Resources/iphone-retina/goblins-ffd.png new file mode 100644 index 000000000..a3daf0010 Binary files /dev/null and b/spine-cocos2dx/3/example/Resources/iphone-retina/goblins-ffd.png differ diff --git a/spine-cocos2dx/3.0/example/Resources/iphone-retina/spineboy.atlas b/spine-cocos2dx/3/example/Resources/iphone-retina/spineboy.atlas similarity index 100% rename from spine-cocos2dx/3.0/example/Resources/iphone-retina/spineboy.atlas rename to spine-cocos2dx/3/example/Resources/iphone-retina/spineboy.atlas diff --git a/spine-cocos2dx/3/example/Resources/iphone-retina/spineboy.png b/spine-cocos2dx/3/example/Resources/iphone-retina/spineboy.png new file mode 100644 index 000000000..dce2fe3e2 Binary files /dev/null and b/spine-cocos2dx/3/example/Resources/iphone-retina/spineboy.png differ diff --git a/spine-cocos2dx/3.0/example/Resources/iphone/goblins-ffd.atlas b/spine-cocos2dx/3/example/Resources/iphone/goblins-ffd.atlas similarity index 81% rename from spine-cocos2dx/3.0/example/Resources/iphone/goblins-ffd.atlas rename to spine-cocos2dx/3/example/Resources/iphone/goblins-ffd.atlas index b977b07f6..5fefae2bb 100644 --- a/spine-cocos2dx/3.0/example/Resources/iphone/goblins-ffd.atlas +++ b/spine-cocos2dx/3/example/Resources/iphone/goblins-ffd.atlas @@ -4,288 +4,288 @@ format: RGBA8888 filter: Linear,Linear repeat: none dagger - rotate: false - xy: 2, 28 + rotate: true + xy: 372, 100 size: 26, 108 orig: 26, 108 offset: 0, 0 index: -1 goblin/eyes-closed rotate: false - xy: 137, 29 + xy: 2, 7 size: 34, 12 orig: 34, 12 offset: 0, 0 index: -1 goblin/head rotate: false - xy: 26, 357 + xy: 107, 36 size: 103, 66 orig: 103, 66 offset: 0, 0 index: -1 goblin/left-arm rotate: false - xy: 30, 28 + xy: 901, 56 size: 37, 35 orig: 37, 35 offset: 0, 0 index: -1 goblin/left-foot rotate: false - xy: 134, 260 + xy: 929, 95 size: 65, 31 orig: 65, 31 offset: 0, 0 index: -1 goblin/left-hand rotate: false - xy: 69, 25 + xy: 452, 2 size: 36, 41 orig: 36, 41 offset: 0, 0 index: -1 goblin/left-lower-leg - rotate: false - xy: 134, 293 + rotate: true + xy: 713, 93 size: 33, 70 orig: 33, 70 offset: 0, 0 index: -1 goblin/left-shoulder rotate: false - xy: 137, 43 + xy: 610, 44 size: 29, 44 orig: 29, 44 offset: 0, 0 index: -1 goblin/left-upper-leg - rotate: false - xy: 30, 65 + rotate: true + xy: 638, 93 size: 33, 73 orig: 33, 73 offset: 0, 0 index: -1 goblin/neck rotate: false - xy: 201, 387 + xy: 490, 2 size: 36, 41 orig: 36, 41 offset: 0, 0 index: -1 goblin/pelvis rotate: false - xy: 26, 140 + xy: 482, 45 size: 62, 43 orig: 62, 43 offset: 0, 0 index: -1 goblin/right-arm - rotate: false - xy: 171, 84 + rotate: true + xy: 690, 2 size: 23, 50 orig: 23, 50 offset: 0, 0 index: -1 goblin/right-foot rotate: false - xy: 134, 225 + xy: 771, 58 size: 63, 33 orig: 63, 33 offset: 0, 0 index: -1 goblin/right-hand rotate: false - xy: 204, 258 + xy: 940, 56 size: 36, 37 orig: 36, 37 offset: 0, 0 index: -1 goblin/right-lower-leg - rotate: false - xy: 201, 430 + rotate: true + xy: 482, 90 size: 36, 76 orig: 36, 76 offset: 0, 0 index: -1 goblin/right-shoulder - rotate: false - xy: 130, 89 + rotate: true + xy: 602, 3 size: 39, 45 orig: 39, 45 offset: 0, 0 index: -1 goblin/right-upper-leg - rotate: false - xy: 98, 214 + rotate: true + xy: 641, 57 size: 34, 63 orig: 34, 63 offset: 0, 0 index: -1 goblin/torso - rotate: false - xy: 131, 410 + rotate: true + xy: 212, 34 size: 68, 96 orig: 68, 96 offset: 0, 0 index: -1 goblin/undie-straps rotate: false - xy: 2, 7 + xy: 380, 5 size: 55, 19 orig: 55, 19 offset: 0, 0 index: -1 goblin/undies rotate: false - xy: 199, 227 + xy: 174, 5 size: 36, 29 orig: 36, 29 offset: 0, 0 index: -1 goblingirl/eyes-closed rotate: false - xy: 59, 2 + xy: 269, 11 size: 37, 21 orig: 37, 21 offset: 0, 0 index: -1 goblingirl/head rotate: false - xy: 26, 425 + xy: 2, 21 size: 103, 81 orig: 103, 81 offset: 0, 0 index: -1 goblingirl/left-arm - rotate: false - xy: 201, 190 + rotate: true + xy: 978, 56 size: 37, 35 orig: 37, 35 offset: 0, 0 index: -1 goblingirl/left-foot rotate: false - xy: 134, 192 + xy: 107, 3 size: 65, 31 orig: 65, 31 offset: 0, 0 index: -1 goblingirl/left-hand rotate: false - xy: 196, 109 + xy: 565, 2 size: 35, 40 orig: 35, 40 offset: 0, 0 index: -1 goblingirl/left-lower-leg - rotate: false - xy: 169, 293 + rotate: true + xy: 785, 93 size: 33, 70 orig: 33, 70 offset: 0, 0 index: -1 goblingirl/left-shoulder - rotate: false - xy: 107, 30 + rotate: true + xy: 690, 27 size: 28, 46 orig: 28, 46 offset: 0, 0 index: -1 goblingirl/left-upper-leg - rotate: false - xy: 65, 68 + rotate: true + xy: 857, 93 size: 33, 70 orig: 33, 70 offset: 0, 0 index: -1 goblingirl/neck rotate: false - xy: 204, 297 + xy: 528, 2 size: 35, 41 orig: 35, 41 offset: 0, 0 index: -1 goblingirl/pelvis rotate: false - xy: 131, 365 + xy: 546, 45 size: 62, 43 orig: 62, 43 offset: 0, 0 index: -1 goblingirl/right-arm rotate: false - xy: 100, 97 + xy: 452, 48 size: 28, 50 orig: 28, 50 offset: 0, 0 index: -1 goblingirl/right-foot rotate: false - xy: 134, 157 + xy: 836, 58 size: 63, 33 orig: 63, 33 offset: 0, 0 index: -1 goblingirl/right-hand - rotate: false - xy: 199, 151 + rotate: true + xy: 771, 20 size: 36, 37 orig: 36, 37 offset: 0, 0 index: -1 goblingirl/right-lower-leg - rotate: false - xy: 96, 279 + rotate: true + xy: 560, 90 size: 36, 76 orig: 36, 76 offset: 0, 0 index: -1 goblingirl/right-shoulder rotate: false - xy: 204, 340 + xy: 649, 10 size: 39, 45 orig: 39, 45 offset: 0, 0 index: -1 goblingirl/right-upper-leg - rotate: false - xy: 98, 149 + rotate: true + xy: 706, 57 size: 34, 63 orig: 34, 63 offset: 0, 0 index: -1 goblingirl/torso rotate: false - xy: 26, 259 + xy: 310, 2 size: 68, 96 orig: 68, 96 offset: 0, 0 index: -1 goblingirl/undie-straps rotate: false - xy: 134, 136 + xy: 212, 13 size: 55, 19 orig: 55, 19 offset: 0, 0 index: -1 goblingirl/undies rotate: false - xy: 196, 78 + xy: 810, 27 size: 36, 29 orig: 36, 29 offset: 0, 0 index: -1 shield rotate: false - xy: 26, 185 + xy: 380, 26 size: 70, 72 orig: 70, 72 offset: 0, 0 index: -1 spear - rotate: false - xy: 2, 138 + rotate: true + xy: 2, 104 size: 22, 368 orig: 22, 368 offset: 0, 0 diff --git a/spine-cocos2dx/3/example/Resources/iphone/goblins-ffd.png b/spine-cocos2dx/3/example/Resources/iphone/goblins-ffd.png new file mode 100644 index 000000000..a3daf0010 Binary files /dev/null and b/spine-cocos2dx/3/example/Resources/iphone/goblins-ffd.png differ diff --git a/spine-cocos2dx/3.0/example/Resources/iphone/spineboy.atlas b/spine-cocos2dx/3/example/Resources/iphone/spineboy.atlas similarity index 100% rename from spine-cocos2dx/3.0/example/Resources/iphone/spineboy.atlas rename to spine-cocos2dx/3/example/Resources/iphone/spineboy.atlas diff --git a/spine-cocos2dx/3/example/Resources/iphone/spineboy.png b/spine-cocos2dx/3/example/Resources/iphone/spineboy.png new file mode 100644 index 000000000..dce2fe3e2 Binary files /dev/null and b/spine-cocos2dx/3/example/Resources/iphone/spineboy.png differ diff --git a/spine-cocos2dx/3.2/example/proj.ios_mac/Spine.xcodeproj/project.pbxproj b/spine-cocos2dx/3/example/proj.ios_mac/Spine.xcodeproj/project.pbxproj similarity index 100% rename from spine-cocos2dx/3.2/example/proj.ios_mac/Spine.xcodeproj/project.pbxproj rename to spine-cocos2dx/3/example/proj.ios_mac/Spine.xcodeproj/project.pbxproj diff --git a/spine-cocos2dx/3.2/example/proj.ios_mac/Spine.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/spine-cocos2dx/3/example/proj.ios_mac/Spine.xcodeproj/project.xcworkspace/contents.xcworkspacedata similarity index 100% rename from spine-cocos2dx/3.2/example/proj.ios_mac/Spine.xcodeproj/project.xcworkspace/contents.xcworkspacedata rename to spine-cocos2dx/3/example/proj.ios_mac/Spine.xcodeproj/project.xcworkspace/contents.xcworkspacedata diff --git a/spine-cocos2dx/3.2/example/proj.ios_mac/Spine.xcodeproj/project.xcworkspace/xcshareddata/LiquidFun-EyeCandy.xccheckout b/spine-cocos2dx/3/example/proj.ios_mac/Spine.xcodeproj/project.xcworkspace/xcshareddata/LiquidFun-EyeCandy.xccheckout similarity index 100% rename from spine-cocos2dx/3.2/example/proj.ios_mac/Spine.xcodeproj/project.xcworkspace/xcshareddata/LiquidFun-EyeCandy.xccheckout rename to spine-cocos2dx/3/example/proj.ios_mac/Spine.xcodeproj/project.xcworkspace/xcshareddata/LiquidFun-EyeCandy.xccheckout diff --git a/spine-cocos2dx/3.2/example/proj.ios_mac/Spine.xcodeproj/project.xcworkspace/xcshareddata/LiquidFun.xccheckout b/spine-cocos2dx/3/example/proj.ios_mac/Spine.xcodeproj/project.xcworkspace/xcshareddata/LiquidFun.xccheckout similarity index 100% rename from spine-cocos2dx/3.2/example/proj.ios_mac/Spine.xcodeproj/project.xcworkspace/xcshareddata/LiquidFun.xccheckout rename to spine-cocos2dx/3/example/proj.ios_mac/Spine.xcodeproj/project.xcworkspace/xcshareddata/LiquidFun.xccheckout diff --git a/spine-cocos2dx/3.2/example/proj.ios_mac/ios/AppController.h b/spine-cocos2dx/3/example/proj.ios_mac/ios/AppController.h similarity index 100% rename from spine-cocos2dx/3.2/example/proj.ios_mac/ios/AppController.h rename to spine-cocos2dx/3/example/proj.ios_mac/ios/AppController.h diff --git a/spine-cocos2dx/3.2/example/proj.ios_mac/ios/AppController.mm b/spine-cocos2dx/3/example/proj.ios_mac/ios/AppController.mm similarity index 100% rename from spine-cocos2dx/3.2/example/proj.ios_mac/ios/AppController.mm rename to spine-cocos2dx/3/example/proj.ios_mac/ios/AppController.mm diff --git a/spine-cocos2dx/3.2/example/proj.ios_mac/ios/Default-568h@2x.png b/spine-cocos2dx/3/example/proj.ios_mac/ios/Default-568h@2x.png similarity index 100% rename from spine-cocos2dx/3.2/example/proj.ios_mac/ios/Default-568h@2x.png rename to spine-cocos2dx/3/example/proj.ios_mac/ios/Default-568h@2x.png diff --git a/spine-cocos2dx/3.2/example/proj.ios_mac/ios/Default.png b/spine-cocos2dx/3/example/proj.ios_mac/ios/Default.png similarity index 100% rename from spine-cocos2dx/3.2/example/proj.ios_mac/ios/Default.png rename to spine-cocos2dx/3/example/proj.ios_mac/ios/Default.png diff --git a/spine-cocos2dx/3.2/example/proj.ios_mac/ios/Default@2x.png b/spine-cocos2dx/3/example/proj.ios_mac/ios/Default@2x.png similarity index 100% rename from spine-cocos2dx/3.2/example/proj.ios_mac/ios/Default@2x.png rename to spine-cocos2dx/3/example/proj.ios_mac/ios/Default@2x.png diff --git a/spine-cocos2dx/3.2/example/proj.ios_mac/ios/Icon-100.png b/spine-cocos2dx/3/example/proj.ios_mac/ios/Icon-100.png similarity index 100% rename from spine-cocos2dx/3.2/example/proj.ios_mac/ios/Icon-100.png rename to spine-cocos2dx/3/example/proj.ios_mac/ios/Icon-100.png diff --git a/spine-cocos2dx/3.2/example/proj.ios_mac/ios/Icon-114.png b/spine-cocos2dx/3/example/proj.ios_mac/ios/Icon-114.png similarity index 100% rename from spine-cocos2dx/3.2/example/proj.ios_mac/ios/Icon-114.png rename to spine-cocos2dx/3/example/proj.ios_mac/ios/Icon-114.png diff --git a/spine-cocos2dx/3.2/example/proj.ios_mac/ios/Icon-120.png b/spine-cocos2dx/3/example/proj.ios_mac/ios/Icon-120.png similarity index 100% rename from spine-cocos2dx/3.2/example/proj.ios_mac/ios/Icon-120.png rename to spine-cocos2dx/3/example/proj.ios_mac/ios/Icon-120.png diff --git a/spine-cocos2dx/3.2/example/proj.ios_mac/ios/Icon-144.png b/spine-cocos2dx/3/example/proj.ios_mac/ios/Icon-144.png similarity index 100% rename from spine-cocos2dx/3.2/example/proj.ios_mac/ios/Icon-144.png rename to spine-cocos2dx/3/example/proj.ios_mac/ios/Icon-144.png diff --git a/spine-cocos2dx/3.2/example/proj.ios_mac/ios/Icon-152.png b/spine-cocos2dx/3/example/proj.ios_mac/ios/Icon-152.png similarity index 100% rename from spine-cocos2dx/3.2/example/proj.ios_mac/ios/Icon-152.png rename to spine-cocos2dx/3/example/proj.ios_mac/ios/Icon-152.png diff --git a/spine-cocos2dx/3.2/example/proj.ios_mac/ios/Icon-29.png b/spine-cocos2dx/3/example/proj.ios_mac/ios/Icon-29.png similarity index 100% rename from spine-cocos2dx/3.2/example/proj.ios_mac/ios/Icon-29.png rename to spine-cocos2dx/3/example/proj.ios_mac/ios/Icon-29.png diff --git a/spine-cocos2dx/3.2/example/proj.ios_mac/ios/Icon-40.png b/spine-cocos2dx/3/example/proj.ios_mac/ios/Icon-40.png similarity index 100% rename from spine-cocos2dx/3.2/example/proj.ios_mac/ios/Icon-40.png rename to spine-cocos2dx/3/example/proj.ios_mac/ios/Icon-40.png diff --git a/spine-cocos2dx/3.2/example/proj.ios_mac/ios/Icon-50.png b/spine-cocos2dx/3/example/proj.ios_mac/ios/Icon-50.png similarity index 100% rename from spine-cocos2dx/3.2/example/proj.ios_mac/ios/Icon-50.png rename to spine-cocos2dx/3/example/proj.ios_mac/ios/Icon-50.png diff --git a/spine-cocos2dx/3.2/example/proj.ios_mac/ios/Icon-57.png b/spine-cocos2dx/3/example/proj.ios_mac/ios/Icon-57.png similarity index 100% rename from spine-cocos2dx/3.2/example/proj.ios_mac/ios/Icon-57.png rename to spine-cocos2dx/3/example/proj.ios_mac/ios/Icon-57.png diff --git a/spine-cocos2dx/3.2/example/proj.ios_mac/ios/Icon-58.png b/spine-cocos2dx/3/example/proj.ios_mac/ios/Icon-58.png similarity index 100% rename from spine-cocos2dx/3.2/example/proj.ios_mac/ios/Icon-58.png rename to spine-cocos2dx/3/example/proj.ios_mac/ios/Icon-58.png diff --git a/spine-cocos2dx/3.2/example/proj.ios_mac/ios/Icon-72.png b/spine-cocos2dx/3/example/proj.ios_mac/ios/Icon-72.png similarity index 100% rename from spine-cocos2dx/3.2/example/proj.ios_mac/ios/Icon-72.png rename to spine-cocos2dx/3/example/proj.ios_mac/ios/Icon-72.png diff --git a/spine-cocos2dx/3.2/example/proj.ios_mac/ios/Icon-76.png b/spine-cocos2dx/3/example/proj.ios_mac/ios/Icon-76.png similarity index 100% rename from spine-cocos2dx/3.2/example/proj.ios_mac/ios/Icon-76.png rename to spine-cocos2dx/3/example/proj.ios_mac/ios/Icon-76.png diff --git a/spine-cocos2dx/3.2/example/proj.ios_mac/ios/Icon-80.png b/spine-cocos2dx/3/example/proj.ios_mac/ios/Icon-80.png similarity index 100% rename from spine-cocos2dx/3.2/example/proj.ios_mac/ios/Icon-80.png rename to spine-cocos2dx/3/example/proj.ios_mac/ios/Icon-80.png diff --git a/spine-cocos2dx/3.2/example/proj.ios_mac/ios/Info.plist b/spine-cocos2dx/3/example/proj.ios_mac/ios/Info.plist similarity index 100% rename from spine-cocos2dx/3.2/example/proj.ios_mac/ios/Info.plist rename to spine-cocos2dx/3/example/proj.ios_mac/ios/Info.plist diff --git a/spine-cocos2dx/3.2/example/proj.ios_mac/ios/Prefix.pch b/spine-cocos2dx/3/example/proj.ios_mac/ios/Prefix.pch similarity index 100% rename from spine-cocos2dx/3.2/example/proj.ios_mac/ios/Prefix.pch rename to spine-cocos2dx/3/example/proj.ios_mac/ios/Prefix.pch diff --git a/spine-cocos2dx/3.2/example/proj.ios_mac/ios/RootViewController.h b/spine-cocos2dx/3/example/proj.ios_mac/ios/RootViewController.h similarity index 100% rename from spine-cocos2dx/3.2/example/proj.ios_mac/ios/RootViewController.h rename to spine-cocos2dx/3/example/proj.ios_mac/ios/RootViewController.h diff --git a/spine-cocos2dx/3.2/example/proj.ios_mac/ios/RootViewController.mm b/spine-cocos2dx/3/example/proj.ios_mac/ios/RootViewController.mm similarity index 100% rename from spine-cocos2dx/3.2/example/proj.ios_mac/ios/RootViewController.mm rename to spine-cocos2dx/3/example/proj.ios_mac/ios/RootViewController.mm diff --git a/spine-cocos2dx/3.2/example/proj.ios_mac/ios/main.m b/spine-cocos2dx/3/example/proj.ios_mac/ios/main.m similarity index 100% rename from spine-cocos2dx/3.2/example/proj.ios_mac/ios/main.m rename to spine-cocos2dx/3/example/proj.ios_mac/ios/main.m diff --git a/spine-cocos2dx/3.2/example/proj.ios_mac/mac/Icon.icns b/spine-cocos2dx/3/example/proj.ios_mac/mac/Icon.icns similarity index 100% rename from spine-cocos2dx/3.2/example/proj.ios_mac/mac/Icon.icns rename to spine-cocos2dx/3/example/proj.ios_mac/mac/Icon.icns diff --git a/spine-cocos2dx/3.2/example/proj.ios_mac/mac/Info.plist b/spine-cocos2dx/3/example/proj.ios_mac/mac/Info.plist similarity index 100% rename from spine-cocos2dx/3.2/example/proj.ios_mac/mac/Info.plist rename to spine-cocos2dx/3/example/proj.ios_mac/mac/Info.plist diff --git a/spine-cocos2dx/3.2/example/proj.ios_mac/mac/Prefix.pch b/spine-cocos2dx/3/example/proj.ios_mac/mac/Prefix.pch similarity index 100% rename from spine-cocos2dx/3.2/example/proj.ios_mac/mac/Prefix.pch rename to spine-cocos2dx/3/example/proj.ios_mac/mac/Prefix.pch diff --git a/spine-cocos2dx/3.2/example/proj.ios_mac/mac/main.cpp b/spine-cocos2dx/3/example/proj.ios_mac/mac/main.cpp similarity index 100% rename from spine-cocos2dx/3.2/example/proj.ios_mac/mac/main.cpp rename to spine-cocos2dx/3/example/proj.ios_mac/mac/main.cpp diff --git a/spine-cocos2dx/3.0/example/proj.win32/main.cpp b/spine-cocos2dx/3/example/proj.win32/main.cpp similarity index 100% rename from spine-cocos2dx/3.0/example/proj.win32/main.cpp rename to spine-cocos2dx/3/example/proj.win32/main.cpp diff --git a/spine-cocos2dx/3.0/example/proj.win32/main.h b/spine-cocos2dx/3/example/proj.win32/main.h similarity index 100% rename from spine-cocos2dx/3.0/example/proj.win32/main.h rename to spine-cocos2dx/3/example/proj.win32/main.h diff --git a/spine-cocos2dx/3.0/example/proj.win32/spine-cocos2dx.sln b/spine-cocos2dx/3/example/proj.win32/spine-cocos2dx.sln similarity index 100% rename from spine-cocos2dx/3.0/example/proj.win32/spine-cocos2dx.sln rename to spine-cocos2dx/3/example/proj.win32/spine-cocos2dx.sln diff --git a/spine-cocos2dx/3.0/example/proj.win32/spine-cocos2dx.vcxproj b/spine-cocos2dx/3/example/proj.win32/spine-cocos2dx.vcxproj similarity index 98% rename from spine-cocos2dx/3.0/example/proj.win32/spine-cocos2dx.vcxproj rename to spine-cocos2dx/3/example/proj.win32/spine-cocos2dx.vcxproj index 7341fc837..c82cb2a25 100644 --- a/spine-cocos2dx/3.0/example/proj.win32/spine-cocos2dx.vcxproj +++ b/spine-cocos2dx/3/example/proj.win32/spine-cocos2dx.vcxproj @@ -136,6 +136,7 @@ + @@ -146,6 +147,7 @@ + diff --git a/spine-cocos2dx/3.0/example/proj.win32/spine-cocos2dx.vcxproj.filters b/spine-cocos2dx/3/example/proj.win32/spine-cocos2dx.vcxproj.filters similarity index 91% rename from spine-cocos2dx/3.0/example/proj.win32/spine-cocos2dx.vcxproj.filters rename to spine-cocos2dx/3/example/proj.win32/spine-cocos2dx.vcxproj.filters index ad5c9ffc3..3157dcb55 100644 --- a/spine-cocos2dx/3.0/example/proj.win32/spine-cocos2dx.vcxproj.filters +++ b/spine-cocos2dx/3/example/proj.win32/spine-cocos2dx.vcxproj.filters @@ -39,6 +39,9 @@ Classes + + Classes + @@ -65,5 +68,8 @@ Classes + + Classes + \ No newline at end of file diff --git a/spine-cocos2dx/3.2/src/spine/PolygonBatch.cpp b/spine-cocos2dx/3/src/spine/PolygonBatch.cpp similarity index 99% rename from spine-cocos2dx/3.2/src/spine/PolygonBatch.cpp rename to spine-cocos2dx/3/src/spine/PolygonBatch.cpp index a24b5825c..26e35a77d 100644 --- a/spine-cocos2dx/3.2/src/spine/PolygonBatch.cpp +++ b/spine-cocos2dx/3/src/spine/PolygonBatch.cpp @@ -94,6 +94,7 @@ void PolygonBatch::flush () { if (!_verticesCount) return; GL::bindTexture2D(_texture->getName()); + GL::bindVAO(0); glEnableVertexAttribArray(GLProgram::VERTEX_ATTRIB_POSITION); glEnableVertexAttribArray(GLProgram::VERTEX_ATTRIB_COLOR); glEnableVertexAttribArray(GLProgram::VERTEX_ATTRIB_TEX_COORDS); diff --git a/spine-cocos2dx/3.2/src/spine/PolygonBatch.h b/spine-cocos2dx/3/src/spine/PolygonBatch.h similarity index 100% rename from spine-cocos2dx/3.2/src/spine/PolygonBatch.h rename to spine-cocos2dx/3/src/spine/PolygonBatch.h diff --git a/spine-cocos2dx/3.2/src/spine/SkeletonAnimation.cpp b/spine-cocos2dx/3/src/spine/SkeletonAnimation.cpp similarity index 100% rename from spine-cocos2dx/3.2/src/spine/SkeletonAnimation.cpp rename to spine-cocos2dx/3/src/spine/SkeletonAnimation.cpp diff --git a/spine-cocos2dx/3.2/src/spine/SkeletonAnimation.h b/spine-cocos2dx/3/src/spine/SkeletonAnimation.h similarity index 85% rename from spine-cocos2dx/3.2/src/spine/SkeletonAnimation.h rename to spine-cocos2dx/3/src/spine/SkeletonAnimation.h index d79772c52..b9a37e0d1 100644 --- a/spine-cocos2dx/3.2/src/spine/SkeletonAnimation.h +++ b/spine-cocos2dx/3/src/spine/SkeletonAnimation.h @@ -47,8 +47,8 @@ typedef std::function EventListener; class SkeletonAnimation: public SkeletonRenderer { public: static SkeletonAnimation* createWithData (spSkeletonData* skeletonData); - static SkeletonAnimation* createWithFile (const std::string& skeletonDataFile, spAtlas* atlas, float scale = 0); - static SkeletonAnimation* createWithFile (const std::string& skeletonDataFile, const std::string& atlasFile, float scale = 0); + static SkeletonAnimation* createWithFile (const std::string& skeletonDataFile, spAtlas* atlas, float scale = 1); + static SkeletonAnimation* createWithFile (const std::string& skeletonDataFile, const std::string& atlasFile, float scale = 1); virtual void update (float deltaTime); @@ -71,16 +71,6 @@ public: void setTrackCompleteListener (spTrackEntry* entry, const CompleteListener& listener); void setTrackEventListener (spTrackEntry* entry, const EventListener& listener); - void setStartListener (spTrackEntry* entry, const StartListener& listener) CC_DEPRECATED_ATTRIBUTE - { setTrackStartListener(entry, listener); } - void setEndListener (spTrackEntry* entry, const EndListener& listener) CC_DEPRECATED_ATTRIBUTE - { setTrackEndListener(entry, listener); } - void setCompleteListener (spTrackEntry* entry, const CompleteListener& listener) CC_DEPRECATED_ATTRIBUTE - { setTrackCompleteListener(entry, listener); } - void setEventListener (spTrackEntry* entry, const EventListener& listener) CC_DEPRECATED_ATTRIBUTE - { setTrackEventListener(entry, listener); } - - virtual void onAnimationStateEvent (int trackIndex, spEventType type, spEvent* event, int loopCount); virtual void onTrackEntryEvent (int trackIndex, spEventType type, spEvent* event, int loopCount); @@ -89,8 +79,8 @@ public: protected: SkeletonAnimation (); SkeletonAnimation (spSkeletonData* skeletonData); - SkeletonAnimation (const std::string&skeletonDataFile, spAtlas* atlas, float scale = 0); - SkeletonAnimation (const std::string& skeletonDataFile, const std::string& atlasFile, float scale = 0); + SkeletonAnimation (const std::string&skeletonDataFile, spAtlas* atlas, float scale = 1); + SkeletonAnimation (const std::string& skeletonDataFile, const std::string& atlasFile, float scale = 1); virtual ~SkeletonAnimation (); void initialize (); diff --git a/spine-cocos2dx/3.2/src/spine/SkeletonRenderer.cpp b/spine-cocos2dx/3/src/spine/SkeletonRenderer.cpp similarity index 92% rename from spine-cocos2dx/3.2/src/spine/SkeletonRenderer.cpp rename to spine-cocos2dx/3/src/spine/SkeletonRenderer.cpp index dd919b79f..370e84b3f 100644 --- a/spine-cocos2dx/3.2/src/spine/SkeletonRenderer.cpp +++ b/spine-cocos2dx/3/src/spine/SkeletonRenderer.cpp @@ -140,7 +140,6 @@ void SkeletonRenderer::draw (Renderer* renderer, const Mat4& transform, uint32_t } void SkeletonRenderer::drawSkeleton (const Mat4 &transform, uint32_t transformFlags) { - getGLProgramState()->apply(transform); Color3B nodeColor = getColor(); @@ -156,14 +155,14 @@ void SkeletonRenderer::drawSkeleton (const Mat4 &transform, uint32_t transformFl const int* triangles = nullptr; int trianglesCount = 0; float r = 0, g = 0, b = 0, a = 0; - for (int i = 0, n = _skeleton->slotCount; i < n; i++) { + for (int i = 0, n = _skeleton->slotsCount; i < n; i++) { spSlot* slot = _skeleton->drawOrder[i]; if (!slot->attachment) continue; Texture2D *texture = nullptr; switch (slot->attachment->type) { case SP_ATTACHMENT_REGION: { spRegionAttachment* attachment = (spRegionAttachment*)slot->attachment; - spRegionAttachment_computeWorldVertices(attachment, slot->skeleton->x, slot->skeleton->y, slot->bone, _worldVertices); + spRegionAttachment_computeWorldVertices(attachment, slot->bone, _worldVertices); texture = getTexture(attachment); uvs = attachment->uvs; verticesCount = 8; @@ -177,7 +176,7 @@ void SkeletonRenderer::drawSkeleton (const Mat4 &transform, uint32_t transformFl } case SP_ATTACHMENT_MESH: { spMeshAttachment* attachment = (spMeshAttachment*)slot->attachment; - spMeshAttachment_computeWorldVertices(attachment, slot->skeleton->x, slot->skeleton->y, slot, _worldVertices); + spMeshAttachment_computeWorldVertices(attachment, slot, _worldVertices); texture = getTexture(attachment); uvs = attachment->uvs; verticesCount = attachment->verticesCount; @@ -191,7 +190,7 @@ void SkeletonRenderer::drawSkeleton (const Mat4 &transform, uint32_t transformFl } case SP_ATTACHMENT_SKINNED_MESH: { spSkinnedMeshAttachment* attachment = (spSkinnedMeshAttachment*)slot->attachment; - spSkinnedMeshAttachment_computeWorldVertices(attachment, slot->skeleton->x, slot->skeleton->y, slot, _worldVertices); + spSkinnedMeshAttachment_computeWorldVertices(attachment, slot, _worldVertices); texture = getTexture(attachment); uvs = attachment->uvs; verticesCount = attachment->uvsCount; @@ -232,11 +231,11 @@ void SkeletonRenderer::drawSkeleton (const Mat4 &transform, uint32_t transformFl glLineWidth(1); Vec2 points[4]; V3F_C4B_T2F_Quad quad; - for (int i = 0, n = _skeleton->slotCount; i < n; i++) { + for (int i = 0, n = _skeleton->slotsCount; i < n; i++) { spSlot* slot = _skeleton->drawOrder[i]; if (!slot->attachment || slot->attachment->type != SP_ATTACHMENT_REGION) continue; spRegionAttachment* attachment = (spRegionAttachment*)slot->attachment; - spRegionAttachment_computeWorldVertices(attachment, slot->skeleton->x, slot->skeleton->y, slot->bone, _worldVertices); + spRegionAttachment_computeWorldVertices(attachment, slot->bone, _worldVertices); points[0] = Vec2(_worldVertices[0], _worldVertices[1]); points[1] = Vec2(_worldVertices[2], _worldVertices[3]); points[2] = Vec2(_worldVertices[4], _worldVertices[5]); @@ -248,7 +247,7 @@ void SkeletonRenderer::drawSkeleton (const Mat4 &transform, uint32_t transformFl // Bone lengths. glLineWidth(2); DrawPrimitives::setDrawColor4B(255, 0, 0, 255); - for (int i = 0, n = _skeleton->boneCount; i < n; i++) { + for (int i = 0, n = _skeleton->bonesCount; i < n; i++) { spBone *bone = _skeleton->bones[i]; float x = bone->data->length * bone->m00 + bone->worldX; float y = bone->data->length * bone->m10 + bone->worldY; @@ -257,7 +256,7 @@ void SkeletonRenderer::drawSkeleton (const Mat4 &transform, uint32_t transformFl // Bone origins. DrawPrimitives::setPointSize(4); DrawPrimitives::setDrawColor4B(0, 0, 255, 255); // Root bone is blue. - for (int i = 0, n = _skeleton->boneCount; i < n; i++) { + for (int i = 0, n = _skeleton->bonesCount; i < n; i++) { spBone *bone = _skeleton->bones[i]; DrawPrimitives::drawPoint(Vec2(bone->worldX, bone->worldY)); if (i == 0) DrawPrimitives::setDrawColor4B(0, 255, 0, 255); @@ -282,21 +281,21 @@ Texture2D* SkeletonRenderer::getTexture (spSkinnedMeshAttachment* attachment) co Rect SkeletonRenderer::getBoundingBox () const { float minX = FLT_MAX, minY = FLT_MAX, maxX = FLT_MIN, maxY = FLT_MIN; float scaleX = getScaleX(), scaleY = getScaleY(); - for (int i = 0; i < _skeleton->slotCount; ++i) { + for (int i = 0; i < _skeleton->slotsCount; ++i) { spSlot* slot = _skeleton->slots[i]; if (!slot->attachment) continue; int verticesCount; if (slot->attachment->type == SP_ATTACHMENT_REGION) { spRegionAttachment* attachment = (spRegionAttachment*)slot->attachment; - spRegionAttachment_computeWorldVertices(attachment, slot->skeleton->x, slot->skeleton->y, slot->bone, _worldVertices); + spRegionAttachment_computeWorldVertices(attachment, slot->bone, _worldVertices); verticesCount = 8; } else if (slot->attachment->type == SP_ATTACHMENT_MESH) { spMeshAttachment* mesh = (spMeshAttachment*)slot->attachment; - spMeshAttachment_computeWorldVertices(mesh, slot->skeleton->x, slot->skeleton->y, slot, _worldVertices); + spMeshAttachment_computeWorldVertices(mesh, slot, _worldVertices); verticesCount = mesh->verticesCount; } else if (slot->attachment->type == SP_ATTACHMENT_SKINNED_MESH) { spSkinnedMeshAttachment* mesh = (spSkinnedMeshAttachment*)slot->attachment; - spSkinnedMeshAttachment_computeWorldVertices(mesh, slot->skeleton->x, slot->skeleton->y, slot, _worldVertices); + spSkinnedMeshAttachment_computeWorldVertices(mesh, slot, _worldVertices); verticesCount = mesh->uvsCount; } else continue; diff --git a/spine-cocos2dx/3.2/src/spine/SkeletonRenderer.h b/spine-cocos2dx/3/src/spine/SkeletonRenderer.h similarity index 96% rename from spine-cocos2dx/3.2/src/spine/SkeletonRenderer.h rename to spine-cocos2dx/3/src/spine/SkeletonRenderer.h index 5e2e5a58d..b5043ab70 100644 --- a/spine-cocos2dx/3.2/src/spine/SkeletonRenderer.h +++ b/spine-cocos2dx/3/src/spine/SkeletonRenderer.h @@ -42,8 +42,8 @@ class PolygonBatch; class SkeletonRenderer: public cocos2d::Node, public cocos2d::BlendProtocol { public: static SkeletonRenderer* createWithData (spSkeletonData* skeletonData, bool ownsSkeletonData = false); - static SkeletonRenderer* createWithFile (const std::string& skeletonDataFile, spAtlas* atlas, float scale = 0); - static SkeletonRenderer* createWithFile (const std::string& skeletonDataFile, const std::string& atlasFile, float scale = 0); + static SkeletonRenderer* createWithFile (const std::string& skeletonDataFile, spAtlas* atlas, float scale = 1); + static SkeletonRenderer* createWithFile (const std::string& skeletonDataFile, const std::string& atlasFile, float scale = 1); virtual void update (float deltaTime) override; virtual void draw (cocos2d::Renderer* renderer, const cocos2d::Mat4& transform, uint32_t transformFlags) override; @@ -91,8 +91,8 @@ public: protected: SkeletonRenderer (); SkeletonRenderer (spSkeletonData* skeletonData, bool ownsSkeletonData = false); - SkeletonRenderer (const std::string& skeletonDataFile, spAtlas* atlas, float scale = 0); - SkeletonRenderer (const std::string& skeletonDataFile, const std::string& atlasFile, float scale = 0); + SkeletonRenderer (const std::string& skeletonDataFile, spAtlas* atlas, float scale = 1); + SkeletonRenderer (const std::string& skeletonDataFile, const std::string& atlasFile, float scale = 1); virtual ~SkeletonRenderer (); void initialize (); diff --git a/spine-cocos2dx/3.0/src/spine/spine-cocos2dx.cpp b/spine-cocos2dx/3/src/spine/spine-cocos2dx.cpp similarity index 100% rename from spine-cocos2dx/3.0/src/spine/spine-cocos2dx.cpp rename to spine-cocos2dx/3/src/spine/spine-cocos2dx.cpp diff --git a/spine-cocos2dx/3.0/src/spine/spine-cocos2dx.h b/spine-cocos2dx/3/src/spine/spine-cocos2dx.h similarity index 100% rename from spine-cocos2dx/3.0/src/spine/spine-cocos2dx.h rename to spine-cocos2dx/3/src/spine/spine-cocos2dx.h diff --git a/spine-csharp/src/Attachments/BoundingBoxAttachment.cs b/spine-csharp/src/Attachments/BoundingBoxAttachment.cs index 838dbeb55..16c670670 100644 --- a/spine-csharp/src/Attachments/BoundingBoxAttachment.cs +++ b/spine-csharp/src/Attachments/BoundingBoxAttachment.cs @@ -42,9 +42,8 @@ namespace Spine { } /// Must have at least the same length as this attachment's vertices. - public void ComputeWorldVertices (float x, float y, Bone bone, float[] worldVertices) { - x += bone.worldX; - y += bone.worldY; + public void ComputeWorldVertices (Bone bone, float[] worldVertices) { + float x = bone.skeleton.x + bone.worldX, y = bone.skeleton.y + bone.worldY; float m00 = bone.m00; float m01 = bone.m01; float m10 = bone.m10; diff --git a/spine-csharp/src/Attachments/MeshAttachment.cs b/spine-csharp/src/Attachments/MeshAttachment.cs index 033afab1b..eee732741 100644 --- a/spine-csharp/src/Attachments/MeshAttachment.cs +++ b/spine-csharp/src/Attachments/MeshAttachment.cs @@ -90,10 +90,9 @@ namespace Spine { } } - public void ComputeWorldVertices (float x, float y, Slot slot, float[] worldVertices) { + public void ComputeWorldVertices (Slot slot, float[] worldVertices) { Bone bone = slot.bone; - x += bone.worldX; - y += bone.worldY; + float x = bone.skeleton.x + bone.worldX, y = bone.skeleton.y + bone.worldY; float m00 = bone.m00, m01 = bone.m01, m10 = bone.m10, m11 = bone.m11; float[] vertices = this.vertices; int verticesCount = vertices.Length; diff --git a/spine-csharp/src/Attachments/RegionAttachment.cs b/spine-csharp/src/Attachments/RegionAttachment.cs index 511cb4103..ba6fc82ed 100644 --- a/spine-csharp/src/Attachments/RegionAttachment.cs +++ b/spine-csharp/src/Attachments/RegionAttachment.cs @@ -134,9 +134,8 @@ namespace Spine { offset[Y4] = localYCos + localX2Sin; } - public void ComputeWorldVertices (float x, float y, Bone bone, float[] worldVertices) { - x += bone.worldX; - y += bone.worldY; + public void ComputeWorldVertices (Bone bone, float[] worldVertices) { + float x = bone.skeleton.x + bone.worldX, y = bone.skeleton.y + bone.worldY; float m00 = bone.m00, m01 = bone.m01, m10 = bone.m10, m11 = bone.m11; float[] offset = this.offset; worldVertices[X1] = offset[X1] * m00 + offset[Y1] * m01 + x; diff --git a/spine-csharp/src/Attachments/SkinnedMeshAttachment.cs b/spine-csharp/src/Attachments/SkinnedMeshAttachment.cs index 5ba661866..fc7de7e00 100644 --- a/spine-csharp/src/Attachments/SkinnedMeshAttachment.cs +++ b/spine-csharp/src/Attachments/SkinnedMeshAttachment.cs @@ -93,8 +93,10 @@ namespace Spine { } } - public void ComputeWorldVertices (float x, float y, Slot slot, float[] worldVertices) { - List skeletonBones = slot.skeleton.bones; + public void ComputeWorldVertices (Slot slot, float[] worldVertices) { + Skeleton skeleton = slot.bone.skeleton; + List skeletonBones = skeleton.bones; + float x = skeleton.x, y = skeleton.y; float[] weights = this.weights; int[] bones = this.bones; if (slot.attachmentVerticesCount == 0) { diff --git a/spine-csharp/src/Bone.cs b/spine-csharp/src/Bone.cs index bc63853fb..21549e4cd 100644 --- a/spine-csharp/src/Bone.cs +++ b/spine-csharp/src/Bone.cs @@ -35,13 +35,14 @@ namespace Spine { static public bool yDown; internal BoneData data; + internal Skeleton skeleton; internal Bone parent; internal float x, y, rotation, rotationIK, scaleX, scaleY; internal float m00, m01, m10, m11; internal float worldX, worldY, worldRotation, worldScaleX, worldScaleY; - internal bool flipX, flipY; public BoneData Data { get { return data; } } + public Skeleton Skeleton { get { return skeleton; } } public Bone Parent { get { return parent; } } public float X { get { return x; } set { x = value; } } public float Y { get { return y; } set { y = value; } } @@ -63,9 +64,11 @@ namespace Spine { public float WorldScaleY { get { return worldScaleY; } } /// May be null. - public Bone (BoneData data, Bone parent) { + public Bone (BoneData data, Skeleton skeleton, Bone parent) { if (data == null) throw new ArgumentNullException("data cannot be null."); + if (skeleton == null) throw new ArgumentNullException("skeleton cannot be null."); this.data = data; + this.skeleton = skeleton; this.parent = parent; SetToSetupPose(); } @@ -73,6 +76,7 @@ namespace Spine { /// Computes the world SRT using the parent bone and the local SRT. public void UpdateWorldTransform () { Bone parent = this.parent; + Skeleton skeleton = this.skeleton; float x = this.x, y = this.y; if (parent != null) { worldX = x * parent.m00 + y * parent.m01 + parent.worldX; @@ -86,8 +90,8 @@ namespace Spine { } worldRotation = data.inheritRotation ? parent.worldRotation + rotationIK : rotationIK; } else { - worldX = flipX ? -x : x; - worldY = flipY != yDown ? -y : y; + worldX = skeleton.flipX ? -x : x; + worldY = skeleton.flipY != yDown ? -y : y; worldScaleX = scaleX; worldScaleY = scaleY; worldRotation = rotationIK; @@ -95,14 +99,14 @@ namespace Spine { float radians = worldRotation * (float)Math.PI / 180; float cos = (float)Math.Cos(radians); float sin = (float)Math.Sin(radians); - if (flipX) { + if (skeleton.flipX) { m00 = -cos * worldScaleX; m01 = sin * worldScaleY; } else { m00 = cos * worldScaleX; m01 = -sin * worldScaleY; } - if (flipY != yDown) { + if (skeleton.flipY != yDown) { m10 = -sin * worldScaleX; m11 = -cos * worldScaleY; } else { @@ -124,7 +128,8 @@ namespace Spine { public void worldToLocal (float worldX, float worldY, out float localX, out float localY) { float dx = worldX - this.worldX, dy = worldY - this.worldY; float m00 = this.m00, m10 = this.m10, m01 = this.m01, m11 = this.m11; - if (flipX != (flipY != yDown)) { + Skeleton skeleton = this.skeleton; + if (skeleton.flipX != (skeleton.flipY != yDown)) { m00 *= -1; m11 *= -1; } diff --git a/spine-csharp/src/IkConstraint.cs b/spine-csharp/src/IkConstraint.cs index 6b27c4a03..5a6160842 100644 --- a/spine-csharp/src/IkConstraint.cs +++ b/spine-csharp/src/IkConstraint.cs @@ -53,11 +53,9 @@ namespace Spine { bendDirection = data.bendDirection; bones = new List(data.bones.Count); - if (skeleton != null) { - foreach (BoneData boneData in data.bones) - bones.Add(skeleton.FindBone(boneData.name)); - target = skeleton.FindBone(data.target.name); - } + foreach (BoneData boneData in data.bones) + bones.Add(skeleton.FindBone(boneData.name)); + target = skeleton.FindBone(data.target.name); } public void apply () { diff --git a/spine-csharp/src/Skeleton.cs b/spine-csharp/src/Skeleton.cs index 699cd6a33..ab6d4d610 100644 --- a/spine-csharp/src/Skeleton.cs +++ b/spine-csharp/src/Skeleton.cs @@ -38,7 +38,7 @@ namespace Spine { internal List slots; internal List drawOrder; internal List ikConstraints = new List(); - private List> updateBonesCache = new List>(); + private List> boneCache = new List>(); internal Skin skin; internal float r = 1, g = 1, b = 1, a = 1; internal float time; @@ -58,28 +58,8 @@ namespace Spine { public float Time { get { return time; } set { time = value; } } public float X { get { return x; } set { x = value; } } public float Y { get { return y; } set { y = value; } } - - public bool FlipX { - get { return flipX; } - set { - if (flipX == value) return; - flipX = value; - List bones = this.bones; - for (int i = 0, n = bones.Count; i < n; i++) - bones[i].flipX = value; - } - } - - public bool FlipY { - get { return flipY; } - set { - if (flipY == value) return; - flipY = value; - List bones = this.bones; - for (int i = 0, n = bones.Count; i < n; i++) - bones[i].flipY = value; - } - } + public bool FlipX { get { return flipX; } set { flipX = value; } } + public bool FlipY { get { return flipY; } set { flipY = value; } } public Bone RootBone { get { @@ -94,14 +74,14 @@ namespace Spine { bones = new List(data.bones.Count); foreach (BoneData boneData in data.bones) { Bone parent = boneData.parent == null ? null : bones[data.bones.IndexOf(boneData.parent)]; - bones.Add(new Bone(boneData, parent)); + bones.Add(new Bone(boneData, this, parent)); } slots = new List(data.slots.Count); drawOrder = new List(data.slots.Count); foreach (SlotData slotData in data.slots) { Bone bone = bones[data.bones.IndexOf(slotData.boneData)]; - Slot slot = new Slot(slotData, this, bone); + Slot slot = new Slot(slotData, bone); slots.Add(slot); drawOrder.Add(slot); } @@ -116,18 +96,18 @@ namespace Spine { /// Caches information about bones and IK constraints. Must be called if bones or IK constraints are added or /// removed. public void UpdateCache () { - List> updateBonesCache = this.updateBonesCache; + List> boneCache = this.boneCache; List ikConstraints = this.ikConstraints; int ikConstraintsCount = ikConstraints.Count; int arrayCount = ikConstraintsCount + 1; - if (updateBonesCache.Count > arrayCount) updateBonesCache.RemoveRange(arrayCount, updateBonesCache.Count - arrayCount); - for (int i = 0, n = updateBonesCache.Count; i < n; i++) - updateBonesCache[i].Clear(); - while (updateBonesCache.Count < arrayCount) - updateBonesCache.Add(new List()); + if (boneCache.Count > arrayCount) boneCache.RemoveRange(arrayCount, boneCache.Count - arrayCount); + for (int i = 0, n = boneCache.Count; i < n; i++) + boneCache[i].Clear(); + while (boneCache.Count < arrayCount) + boneCache.Add(new List()); - List nonIkBones = updateBonesCache[0]; + List nonIkBones = boneCache[0]; for (int i = 0, n = bones.Count; i < n; i++) { Bone bone = bones[i]; @@ -139,8 +119,8 @@ namespace Spine { Bone child = ikConstraint.bones[ikConstraint.bones.Count - 1]; while (true) { if (current == child) { - updateBonesCache[ii].Add(bone); - updateBonesCache[ii + 1].Add(bone); + boneCache[ii].Add(bone); + boneCache[ii + 1].Add(bone); goto outer; } if (child == parent) break; @@ -161,11 +141,11 @@ namespace Spine { Bone bone = bones[ii]; bone.rotationIK = bone.rotation; } - List> updateBonesCache = this.updateBonesCache; + List> boneCache = this.boneCache; List ikConstraints = this.ikConstraints; - int i = 0, last = updateBonesCache.Count - 1; + int i = 0, last = boneCache.Count - 1; while (true) { - List updateBones = updateBonesCache[i]; + List updateBones = boneCache[i]; for (int ii = 0, nn = updateBones.Count; ii < nn; ii++) updateBones[ii].UpdateWorldTransform(); if (i == last) break; diff --git a/spine-csharp/src/SkeletonBounds.cs b/spine-csharp/src/SkeletonBounds.cs index 3e434a8f4..4c546d76c 100644 --- a/spine-csharp/src/SkeletonBounds.cs +++ b/spine-csharp/src/SkeletonBounds.cs @@ -55,7 +55,6 @@ namespace Spine { List polygons = Polygons; List slots = skeleton.slots; int slotCount = slots.Count; - float x = skeleton.x, y = skeleton.y; boundingBoxes.Clear(); foreach (Polygon polygon in polygons) @@ -80,7 +79,7 @@ namespace Spine { int count = boundingBox.Vertices.Length; polygon.Count = count; if (polygon.Vertices.Length < count) polygon.Vertices = new float[count]; - boundingBox.ComputeWorldVertices(x, y, slot.bone, polygon.Vertices); + boundingBox.ComputeWorldVertices(slot.bone, polygon.Vertices); } if (updateAabb) aabbCompute(); diff --git a/spine-csharp/src/SkeletonJson.cs b/spine-csharp/src/SkeletonJson.cs index 224af335a..8ad08bb6e 100644 --- a/spine-csharp/src/SkeletonJson.cs +++ b/spine-csharp/src/SkeletonJson.cs @@ -91,14 +91,14 @@ namespace Spine { if (root == null) throw new Exception("Invalid JSON."); // Skeleton. - var skeletonMap = (Dictionary)root["skeleton"]; - if (skeletonMap != null) { - skeletonData.version = (String)skeletonMap["spine"]; + if (root.ContainsKey("skeleton")) { + var skeletonMap = (Dictionary)root["skeleton"]; skeletonData.hash = (String)skeletonMap["hash"]; + skeletonData.version = (String)skeletonMap["spine"]; skeletonData.width = GetFloat(skeletonMap, "width", 0); skeletonData.height = GetFloat(skeletonMap, "width", 1); } - + // Bones. foreach (Dictionary boneMap in (List)root["bones"]) { BoneData parent = null; @@ -120,7 +120,7 @@ namespace Spine { } // IK constraints. - if(root.ContainsKey("ik")){ + if (root.ContainsKey("ik")) { foreach (Dictionary ikMap in (List)root["ik"]) { IkConstraintData ikConstraintData = new IkConstraintData((String)ikMap["name"]); diff --git a/spine-csharp/src/Slot.cs b/spine-csharp/src/Slot.cs index a4ccd67a4..e5c382a5a 100644 --- a/spine-csharp/src/Slot.cs +++ b/spine-csharp/src/Slot.cs @@ -34,7 +34,6 @@ namespace Spine { public class Slot { internal SlotData data; internal Bone bone; - internal Skeleton skeleton; internal float r, g, b, a; internal Attachment attachment; internal float attachmentTime; @@ -43,7 +42,7 @@ namespace Spine { public SlotData Data { get { return data; } } public Bone Bone { get { return bone; } } - public Skeleton Skeleton { get { return skeleton; } } + public Skeleton Skeleton { get { return bone.skeleton; } } public float R { get { return r; } set { r = value; } } public float G { get { return g; } set { g = value; } } public float B { get { return b; } set { b = value; } } @@ -56,29 +55,27 @@ namespace Spine { } set { attachment = value; - attachmentTime = skeleton.time; + attachmentTime = bone.skeleton.time; attachmentVerticesCount = 0; } } public float AttachmentTime { get { - return skeleton.time - attachmentTime; + return bone.skeleton.time - attachmentTime; } set { - attachmentTime = skeleton.time - value; + attachmentTime = bone.skeleton.time - value; } } public float[] AttachmentVertices { get { return attachmentVertices; } set { attachmentVertices = value; } } public int AttachmentVerticesCount { get { return attachmentVerticesCount; } set { attachmentVerticesCount = value; } } - public Slot (SlotData data, Skeleton skeleton, Bone bone) { + public Slot (SlotData data, Bone bone) { if (data == null) throw new ArgumentNullException("data cannot be null."); - if (skeleton == null) throw new ArgumentNullException("skeleton cannot be null."); if (bone == null) throw new ArgumentNullException("bone cannot be null."); this.data = data; - this.skeleton = skeleton; this.bone = bone; SetToSetupPose(); } @@ -88,11 +85,11 @@ namespace Spine { g = data.g; b = data.b; a = data.a; - Attachment = data.attachmentName == null ? null : skeleton.GetAttachment(slotIndex, data.attachmentName); + Attachment = data.attachmentName == null ? null : bone.skeleton.GetAttachment(slotIndex, data.attachmentName); } public void SetToSetupPose () { - SetToSetupPose(skeleton.data.slots.IndexOf(data)); + SetToSetupPose(bone.skeleton.data.slots.IndexOf(data)); } override public String ToString () { diff --git a/spine-libgdx/assets/raptor/raptor.atlas b/spine-libgdx/assets/raptor/raptor.atlas new file mode 100644 index 000000000..c90da0078 --- /dev/null +++ b/spine-libgdx/assets/raptor/raptor.atlas @@ -0,0 +1,251 @@ + +raptor.png +size: 1022,1022 +format: RGBA8888 +filter: Linear,Linear +repeat: none +back_arm + rotate: false + xy: 410, 545 + size: 46, 29 + orig: 46, 29 + offset: 0, 0 + index: -1 +back_bracer + rotate: false + xy: 540, 548 + size: 39, 28 + orig: 39, 28 + offset: 0, 0 + index: -1 +back_hand + rotate: true + xy: 504, 538 + size: 36, 34 + orig: 36, 34 + offset: 0, 0 + index: -1 +back_knee + rotate: false + xy: 299, 478 + size: 49, 67 + orig: 49, 67 + offset: 0, 0 + index: -1 +back_thigh + rotate: true + xy: 140, 247 + size: 39, 24 + orig: 39, 24 + offset: 0, 0 + index: -1 +eyes_open + rotate: true + xy: 2, 2 + size: 47, 45 + orig: 47, 45 + offset: 0, 0 + index: -1 +front_arm + rotate: false + xy: 360, 544 + size: 48, 30 + orig: 48, 30 + offset: 0, 0 + index: -1 +front_bracer + rotate: false + xy: 538, 578 + size: 41, 29 + orig: 41, 29 + offset: 0, 0 + index: -1 +front_hand + rotate: false + xy: 538, 609 + size: 41, 38 + orig: 41, 38 + offset: 0, 0 + index: -1 +front_open_hand + rotate: false + xy: 894, 782 + size: 43, 44 + orig: 43, 44 + offset: 0, 0 + index: -1 +front_thigh + rotate: false + xy: 942, 849 + size: 57, 29 + orig: 57, 29 + offset: 0, 0 + index: -1 +gun + rotate: false + xy: 785, 774 + size: 107, 103 + orig: 107, 103 + offset: 0, 0 + index: -1 +gun_nohand + rotate: false + xy: 614, 703 + size: 105, 102 + orig: 105, 102 + offset: 0, 0 + index: -1 +head + rotate: false + xy: 2, 137 + size: 136, 149 + orig: 136, 149 + offset: 0, 0 + index: -1 +lower_leg + rotate: true + xy: 780, 699 + size: 73, 98 + orig: 73, 98 + offset: 0, 0 + index: -1 +mouth_smile + rotate: true + xy: 49, 2 + size: 47, 30 + orig: 47, 30 + offset: 0, 0 + index: -1 +neck + rotate: true + xy: 1001, 860 + size: 18, 21 + orig: 18, 21 + offset: 0, 0 + index: -1 +raptor_arm_back + rotate: false + xy: 940, 936 + size: 82, 86 + orig: 82, 86 + offset: 0, 0 + index: -1 +raptor_body + rotate: false + xy: 2, 737 + size: 610, 285 + orig: 610, 285 + offset: 0, 0 + index: -1 +raptor_front_arm + rotate: true + xy: 195, 464 + size: 81, 102 + orig: 81, 102 + offset: 0, 0 + index: -1 +raptor_front_leg + rotate: false + xy: 2, 478 + size: 191, 257 + orig: 191, 257 + offset: 0, 0 + index: -1 +raptor_hindleg_back + rotate: false + xy: 614, 807 + size: 169, 215 + orig: 169, 215 + offset: 0, 0 + index: -1 +raptor_horn + rotate: false + xy: 360, 655 + size: 182, 80 + orig: 182, 80 + offset: 0, 0 + index: -1 +raptor_horn_back + rotate: false + xy: 360, 576 + size: 176, 77 + orig: 176, 77 + offset: 0, 0 + index: -1 +raptor_jaw + rotate: false + xy: 785, 879 + size: 153, 143 + orig: 153, 143 + offset: 0, 0 + index: -1 +raptor_saddle_noshadow + rotate: false + xy: 2, 288 + size: 163, 188 + orig: 163, 188 + offset: 0, 0 + index: -1 +raptor_saddle_strap_front + rotate: false + xy: 721, 710 + size: 57, 95 + orig: 57, 95 + offset: 0, 0 + index: -1 +raptor_saddle_strap_rear + rotate: true + xy: 940, 880 + size: 54, 74 + orig: 54, 74 + offset: 0, 0 + index: -1 +raptor_saddle_w_shadow + rotate: false + xy: 195, 547 + size: 163, 188 + orig: 163, 188 + offset: 0, 0 + index: -1 +raptor_tongue + rotate: true + xy: 544, 649 + size: 86, 64 + orig: 86, 64 + offset: 0, 0 + index: -1 +stirrup_back + rotate: false + xy: 458, 539 + size: 44, 35 + orig: 44, 35 + offset: 0, 0 + index: -1 +stirrup_front + rotate: true + xy: 81, 4 + size: 45, 50 + orig: 45, 50 + offset: 0, 0 + index: -1 +stirrup_strap + rotate: true + xy: 894, 828 + size: 49, 46 + orig: 49, 46 + offset: 0, 0 + index: -1 +torso + rotate: true + xy: 610, 647 + size: 54, 91 + orig: 54, 91 + offset: 0, 0 + index: -1 +visor + rotate: false + xy: 2, 51 + size: 131, 84 + orig: 131, 84 + offset: 0, 0 + index: -1 diff --git a/spine-libgdx/assets/raptor/raptor.json b/spine-libgdx/assets/raptor/raptor.json new file mode 100644 index 000000000..df9892de6 --- /dev/null +++ b/spine-libgdx/assets/raptor/raptor.json @@ -0,0 +1,1333 @@ +{ +"skeleton": { "hash": "r3IJRaLbaxgEoW1YBAOrYT69jB4", "spine": "Dev", "width": 1224.2, "height": 1052.38 }, +"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": "gun", + "parent": "spineboy_hip", + "length": 181.35, + "x": 16.86, + "y": -7.89, + "scaleX": 0.816, + "scaleY": 0.816, + "rotation": 107.11 + }, + { "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, + "x": 57.78, + "y": -0.02, + "scaleX": 0.73, + "scaleY": 0.823, + "rotation": -0.46, + "inheritRotation": false + }, + { "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, + "x": 49.71, + "y": 20.65, + "scaleX": 1.154, + "rotation": -3.16, + "inheritRotation": false + }, + { "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_hand2", + "parent": "front_bracer", + "length": 58.18, + "x": 39.98, + "y": -0.89, + "rotation": 13.9, + "inheritRotation": false + }, + { "name": "tongue3", "parent": "tongue2", "length": 43.64, "x": 44.26, "y": -0.2, "rotation": 12.86 } +], +"ik": [ + { + "name": "front_leg_goal", + "bones": [ "front_leg1", "front_leg2" ], + "target": "front_leg_goal", + "bendPositive": false + }, + { + "name": "rear_leg_goal", + "bones": [ "rear_leg1", "rear_leg2" ], + "target": "rear_leg_goal", + "bendPositive": false + }, + { + "name": "front_foot_goal", + "bones": [ "front_leg3", "front_foot1" ], + "target": "front_foot_goal" + }, + { + "name": "rear_foot_goal", + "bones": [ "rear_leg3", "rear_foot1" ], + "target": "rear_foot_goal" + }, + { + "name": "stirrup", + "bones": [ "stirrup_strap1", "stirrup_strap2" ], + "target": "stirrup" + }, + { + "name": "spineboy_rear_leg_goal", + "bones": [ "back_thigh", "back_knee" ], + "target": "spineboy_rear_arm_goal", + "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" + } +], +"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" } +], +"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": [ 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 ], + "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 + } + }, + "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": "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 + } + }, + "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 + } + }, + "raptor_front_arm": { + "raptor_front_arm": { + "type": "skinnedmesh", + "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 + } + }, + "raptor_front_leg": { + "raptor_front_leg": { + "type": "skinnedmesh", + "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 + } + }, + "raptor_hindleg_back": { + "raptor_hindleg_back": { + "type": "skinnedmesh", + "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 + } + }, + "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": "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 + } + }, + "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": "skinnedmesh", + "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 + } + }, + "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": "skinnedmesh", + "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 + } + }, + "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": "skinnedmesh", + "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 + } + }, + "visor": { + "visor": { "x": 99.13, "y": 6.51, "rotation": -70.57, "width": 261, "height": 168 } + } + } +}, +"animations": { + "empty": {}, + "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": 1, + "bendPositive": true, + "curve": [ 0.317, 0.13, 0.781, 0.56 ] + }, + { "time": 0.1333, "mix": 0, "bendPositive": true } + ] + } + }, + "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": 0.5333, "angle": -41.93 }, + { "time": 0.6333, "angle": -16.71 }, + { "time": 0.7333, "angle": 16.92 }, + { "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": 0.1, "angle": -45.79 }, + { "time": 0.1666, "angle": -19.95 }, + { "time": 0.4, "angle": 35.36 }, + { "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": 0.5333, "angle": -346.78 }, + { "time": 0.6333, "angle": -398.52 }, + { "time": 0.7333, "angle": -393.21 }, + { "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": 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": [ + { "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": -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 } + ], + "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 } + ] + }, + "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": -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 } + ], + "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 } + ] + }, + "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": 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 } + ], + "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 } + ] + }, + "front_foot2": { + "rotate": [ + { "time": 0, "angle": 44.18 }, + { "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 } + ], + "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": -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 } + ], + "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 } + ] + }, + "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": 27.59 }, + { "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": 27.59 }, + { "time": 1.0666, "angle": 27.59 } + ], + "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 } + ] + } + }, + "ffd": { + "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 ] + }, + { "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 ] + }, + { "time": 1.0666 } + ] + }, + "raptor_front_leg": { + "raptor_front_leg": [ + { "time": 0, "curve": "stepped" }, + { "time": 0.2666 }, + { + "time": 0.5333, + "offset": 216, + "vertices": [ -2.23, 21.95, 21.54, -4.75 ] + }, + { + "time": 0.6, + "offset": 216, + "vertices": [ 7.17, 15.14, 15.26, -6.91 ] + }, + { + "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 ] + }, + { "time": 0.8, "curve": "stepped" }, + { "time": 0.9666, "curve": "stepped" }, + { "time": 1.0666 } + ] + } + } + } + } +} +} \ No newline at end of file diff --git a/spine-libgdx/assets/raptor/raptor.png b/spine-libgdx/assets/raptor/raptor.png new file mode 100644 index 000000000..78aed4d3e Binary files /dev/null and b/spine-libgdx/assets/raptor/raptor.png differ diff --git a/spine-libgdx/assets/raptor/raptor.skel b/spine-libgdx/assets/raptor/raptor.skel new file mode 100644 index 000000000..249f5e1be Binary files /dev/null and b/spine-libgdx/assets/raptor/raptor.skel differ diff --git a/spine-libgdx/src/com/esotericsoftware/spine/Animation.java b/spine-libgdx/src/com/esotericsoftware/spine/Animation.java index 8f3d9162b..c0220e201 100644 --- a/spine-libgdx/src/com/esotericsoftware/spine/Animation.java +++ b/spine-libgdx/src/com/esotericsoftware/spine/Animation.java @@ -128,11 +128,11 @@ public class Animation { if (high == 0) return 1; int current = high >>> 1; while (true) { - if (values[(current + 1)] <= target) + if (values[current + 1] <= target) low = current + 1; else high = current; - if (low == high) return (low + 1); + if (low == high) return low + 1; current = (low + high) >>> 1; } } @@ -510,7 +510,7 @@ public class Animation { } else if (lastTime > time) // lastTime = -1; - int frameIndex = time >= frames[frames.length - 1] ? frames.length - 1 : binarySearch(frames, time, 1) - 1; + int frameIndex = time >= frames[frames.length - 1] ? frames.length - 1 : binarySearch(frames, time) - 1; if (frames[frameIndex] <= lastTime) return; String attachmentName = attachmentNames[frameIndex]; diff --git a/spine-libgdx/src/com/esotericsoftware/spine/Bone.java b/spine-libgdx/src/com/esotericsoftware/spine/Bone.java index a57c0b3db..6022a6fc3 100644 --- a/spine-libgdx/src/com/esotericsoftware/spine/Bone.java +++ b/spine-libgdx/src/com/esotericsoftware/spine/Bone.java @@ -38,29 +38,38 @@ import com.badlogic.gdx.math.Vector2; public class Bone { final BoneData data; + final Skeleton skeleton; final Bone parent; float x, y; float rotation, rotationIK; float scaleX, scaleY; - boolean flipX, flipY; float m00, m01, worldX; // a b x float m10, m11, worldY; // c d y float worldRotation; float worldScaleX, worldScaleY; - /** @param parent May be null. */ - public Bone (BoneData data, Bone parent) { - if (data == null) throw new IllegalArgumentException("data cannot be null."); + Bone (BoneData data) { this.data = data; + parent = null; + skeleton = null; + } + + /** @param parent May be null. */ + public Bone (BoneData data, Skeleton skeleton, Bone parent) { + if (data == null) throw new IllegalArgumentException("data cannot be null."); + if (skeleton == null) throw new IllegalArgumentException("skeleton cannot be null."); + this.data = data; + this.skeleton = skeleton; this.parent = parent; setToSetupPose(); } /** Copy constructor. * @param parent May be null. */ - public Bone (Bone bone, Bone parent) { + public Bone (Bone bone, Skeleton skeleton, Bone parent) { if (bone == null) throw new IllegalArgumentException("bone cannot be null."); + this.skeleton = skeleton; this.parent = parent; data = bone.data; x = bone.x; @@ -69,12 +78,11 @@ public class Bone { rotationIK = bone.rotationIK; scaleX = bone.scaleX; scaleY = bone.scaleY; - flipX = bone.flipX; - flipY = bone.flipY; } /** Computes the world SRT using the parent bone and the local SRT. */ public void updateWorldTransform () { + Skeleton skeleton = this.skeleton; Bone parent = this.parent; float x = this.x, y = this.y; if (parent != null) { @@ -89,22 +97,22 @@ public class Bone { } worldRotation = data.inheritRotation ? parent.worldRotation + rotationIK : rotationIK; } else { - worldX = flipX ? -x : x; - worldY = flipY ? -y : y; + worldX = skeleton.flipX ? -x : x; + worldY = skeleton.flipY ? -y : y; worldScaleX = scaleX; worldScaleY = scaleY; worldRotation = rotationIK; } float cos = MathUtils.cosDeg(worldRotation); float sin = MathUtils.sinDeg(worldRotation); - if (flipX) { + if (skeleton.flipX) { m00 = -cos * worldScaleX; m01 = sin * worldScaleY; } else { m00 = cos * worldScaleX; m01 = -sin * worldScaleY; } - if (flipY) { + if (skeleton.flipY) { m10 = -sin * worldScaleX; m11 = -cos * worldScaleY; } else { @@ -127,6 +135,10 @@ public class Bone { return data; } + public Skeleton getSkeleton () { + return skeleton; + } + public Bone getParent () { return parent; } @@ -250,7 +262,8 @@ public class Bone { public Vector2 worldToLocal (Vector2 world) { float x = world.x - worldX, y = world.y - worldY; float m00 = this.m00, m10 = this.m10, m01 = this.m01, m11 = this.m11; - if (flipX != flipY) { + Skeleton skeleton = this.skeleton; + if (skeleton.flipX != skeleton.flipY) { m00 *= -1; m11 *= -1; } diff --git a/spine-libgdx/src/com/esotericsoftware/spine/Skeleton.java b/spine-libgdx/src/com/esotericsoftware/spine/Skeleton.java index 90d424667..1961d7e9b 100644 --- a/spine-libgdx/src/com/esotericsoftware/spine/Skeleton.java +++ b/spine-libgdx/src/com/esotericsoftware/spine/Skeleton.java @@ -41,7 +41,7 @@ public class Skeleton { final Array slots; Array drawOrder; final Array ikConstraints; - private final Array> updateBonesCache = new Array(); + private final Array> boneCache = new Array(); Skin skin; final Color color; float time; @@ -55,14 +55,14 @@ public class Skeleton { bones = new Array(data.bones.size); for (BoneData boneData : data.bones) { Bone parent = boneData.parent == null ? null : bones.get(data.bones.indexOf(boneData.parent, true)); - bones.add(new Bone(boneData, parent)); + bones.add(new Bone(boneData, this, parent)); } slots = new Array(data.slots.size); drawOrder = new Array(data.slots.size); for (SlotData slotData : data.slots) { Bone bone = bones.get(data.bones.indexOf(slotData.boneData, true)); - Slot slot = new Slot(slotData, this, bone); + Slot slot = new Slot(slotData, bone); slots.add(slot); drawOrder.add(slot); } @@ -84,13 +84,13 @@ public class Skeleton { bones = new Array(skeleton.bones.size); for (Bone bone : skeleton.bones) { Bone parent = bone.parent == null ? null : bones.get(skeleton.bones.indexOf(bone.parent, true)); - bones.add(new Bone(bone, parent)); + bones.add(new Bone(bone, this, parent)); } slots = new Array(skeleton.slots.size); for (Slot slot : skeleton.slots) { Bone bone = bones.get(skeleton.bones.indexOf(slot.bone, true)); - slots.add(new Slot(slot, this, bone)); + slots.add(new Slot(slot, bone)); } drawOrder = new Array(slots.size); @@ -117,18 +117,18 @@ public class Skeleton { /** Caches information about bones and IK constraints. Must be called if bones or IK constraints are added or removed. */ public void updateCache () { - Array> updateBonesCache = this.updateBonesCache; + Array> boneCache = this.boneCache; Array ikConstraints = this.ikConstraints; int ikConstraintsCount = ikConstraints.size; int arrayCount = ikConstraintsCount + 1; - updateBonesCache.truncate(arrayCount); - for (int i = 0, n = updateBonesCache.size; i < n; i++) - updateBonesCache.get(i).clear(); - while (updateBonesCache.size < arrayCount) - updateBonesCache.add(new Array()); + boneCache.truncate(arrayCount); + for (int i = 0, n = boneCache.size; i < n; i++) + boneCache.get(i).clear(); + while (boneCache.size < arrayCount) + boneCache.add(new Array()); - Array nonIkBones = updateBonesCache.first(); + Array nonIkBones = boneCache.first(); outer: for (int i = 0, n = bones.size; i < n; i++) { @@ -141,8 +141,8 @@ public class Skeleton { Bone child = ikConstraint.bones.peek(); while (true) { if (current == child) { - updateBonesCache.get(ii).add(bone); - updateBonesCache.get(ii + 1).add(bone); + boneCache.get(ii).add(bone); + boneCache.get(ii + 1).add(bone); continue outer; } if (child == parent) break; @@ -162,11 +162,11 @@ public class Skeleton { Bone bone = bones.get(i); bone.rotationIK = bone.rotation; } - Array> updateBonesCache = this.updateBonesCache; + Array> boneCache = this.boneCache; Array ikConstraints = this.ikConstraints; - int i = 0, last = updateBonesCache.size - 1; + int i = 0, last = boneCache.size - 1; while (true) { - Array updateBones = updateBonesCache.get(i); + Array updateBones = boneCache.get(i); for (int ii = 0, nn = updateBones.size; ii < nn; ii++) updateBones.get(ii).updateWorldTransform(); if (i == last) break; @@ -365,11 +365,7 @@ public class Skeleton { } public void setFlipX (boolean flipX) { - if (this.flipX == flipX) return; this.flipX = flipX; - Array bones = this.bones; - for (int i = 0, n = bones.size; i < n; i++) - bones.get(i).flipX = flipX; } public boolean getFlipY () { @@ -377,21 +373,12 @@ public class Skeleton { } public void setFlipY (boolean flipY) { - if (this.flipY == flipY) return; this.flipY = flipY; - Array bones = this.bones; - for (int i = 0, n = bones.size; i < n; i++) - bones.get(i).flipY = flipY; } public void setFlip (boolean flipX, boolean flipY) { - if (this.flipX == flipX && this.flipY == flipY) return; - Array bones = this.bones; - for (int i = 0, n = bones.size; i < n; i++) { - Bone bone = bones.get(i); - bone.flipX = flipX; - bone.flipY = flipY; - } + this.flipX = flipX; + this.flipY = flipY; } public float getX () { diff --git a/spine-libgdx/src/com/esotericsoftware/spine/SkeletonBinary.java b/spine-libgdx/src/com/esotericsoftware/spine/SkeletonBinary.java index 33d2e8d1e..e42849a9b 100644 --- a/spine-libgdx/src/com/esotericsoftware/spine/SkeletonBinary.java +++ b/spine-libgdx/src/com/esotericsoftware/spine/SkeletonBinary.java @@ -107,8 +107,8 @@ public class SkeletonBinary { DataInput input = new DataInput(file.read(512)); try { - skeletonData.version = input.readString(); skeletonData.hash = input.readString(); + skeletonData.version = input.readString(); skeletonData.width = input.readFloat(); skeletonData.height = input.readFloat(); diff --git a/spine-libgdx/src/com/esotericsoftware/spine/SkeletonBounds.java b/spine-libgdx/src/com/esotericsoftware/spine/SkeletonBounds.java index 11394e17f..d3dd4444c 100644 --- a/spine-libgdx/src/com/esotericsoftware/spine/SkeletonBounds.java +++ b/spine-libgdx/src/com/esotericsoftware/spine/SkeletonBounds.java @@ -52,7 +52,6 @@ public class SkeletonBounds { Array polygons = this.polygons; Array slots = skeleton.slots; int slotCount = slots.size; - float x = skeleton.getX(), y = skeleton.getY(); boundingBoxes.clear(); polygonPool.freeAll(polygons); @@ -71,7 +70,7 @@ public class SkeletonBounds { polygon.ensureCapacity(vertexCount); polygon.size = vertexCount; - boundingBox.computeWorldVertices(x, y, slot.bone, polygon.items); + boundingBox.computeWorldVertices(slot.bone, polygon.items); } } diff --git a/spine-libgdx/src/com/esotericsoftware/spine/SkeletonJson.java b/spine-libgdx/src/com/esotericsoftware/spine/SkeletonJson.java index e137b9a85..985e3a62e 100644 --- a/spine-libgdx/src/com/esotericsoftware/spine/SkeletonJson.java +++ b/spine-libgdx/src/com/esotericsoftware/spine/SkeletonJson.java @@ -93,8 +93,8 @@ public class SkeletonJson { // Skeleton. JsonValue skeletonMap = root.get("skeleton"); if (skeletonMap != null) { - skeletonData.version = skeletonMap.getString("spine"); skeletonData.hash = skeletonMap.getString("hash"); + skeletonData.version = skeletonMap.getString("spine"); skeletonData.width = skeletonMap.getFloat("width"); skeletonData.height = skeletonMap.getFloat("height"); } @@ -203,7 +203,7 @@ public class SkeletonJson { String path = map.getString("path", name); switch (AttachmentType.valueOf(map.getString("type", AttachmentType.region.name()))) { - case region: + case region: { RegionAttachment region = attachmentLoader.newRegionAttachment(skin, name, path); if (region == null) return null; region.setPath(path); @@ -220,6 +220,7 @@ public class SkeletonJson { region.updateOffset(); return region; + } case boundingbox: { BoundingBoxAttachment box = attachmentLoader.newBoundingBoxAttachment(skin, name); if (box == null) return null; @@ -245,6 +246,9 @@ public class SkeletonJson { mesh.setRegionUVs(map.require("uvs").asFloatArray()); mesh.updateUVs(); + String color = map.getString("color", null); + if (color != null) mesh.getColor().set(Color.valueOf(color)); + if (map.has("hull")) mesh.setHullLength(map.require("hull").asInt() * 2); if (map.has("edges")) mesh.setEdges(map.require("edges").asIntArray()); mesh.setWidth(map.getFloat("width", 0) * scale); @@ -276,6 +280,9 @@ public class SkeletonJson { mesh.setRegionUVs(uvs); mesh.updateUVs(); + String color = map.getString("color", null); + if (color != null) mesh.getColor().set(Color.valueOf(color)); + if (map.has("hull")) mesh.setHullLength(map.require("hull").asInt() * 2); if (map.has("edges")) mesh.setEdges(map.require("edges").asIntArray()); mesh.setWidth(map.getFloat("width", 0) * scale); diff --git a/spine-libgdx/src/com/esotericsoftware/spine/Slot.java b/spine-libgdx/src/com/esotericsoftware/spine/Slot.java index e100e221d..9990dbc2e 100644 --- a/spine-libgdx/src/com/esotericsoftware/spine/Slot.java +++ b/spine-libgdx/src/com/esotericsoftware/spine/Slot.java @@ -38,37 +38,31 @@ import com.badlogic.gdx.utils.FloatArray; public class Slot { final SlotData data; final Bone bone; - private final Skeleton skeleton; final Color color; Attachment attachment; private float attachmentTime; private FloatArray attachmentVertices = new FloatArray(); - Slot () { - data = null; + Slot (SlotData data) { + this.data = data; bone = null; - skeleton = null; color = new Color(1, 1, 1, 1); } - public Slot (SlotData data, Skeleton skeleton, Bone bone) { + public Slot (SlotData data, Bone bone) { if (data == null) throw new IllegalArgumentException("data cannot be null."); - if (skeleton == null) throw new IllegalArgumentException("skeleton cannot be null."); if (bone == null) throw new IllegalArgumentException("bone cannot be null."); this.data = data; - this.skeleton = skeleton; this.bone = bone; color = new Color(); setToSetupPose(); } /** Copy constructor. */ - public Slot (Slot slot, Skeleton skeleton, Bone bone) { + public Slot (Slot slot, Bone bone) { if (slot == null) throw new IllegalArgumentException("slot cannot be null."); - if (skeleton == null) throw new IllegalArgumentException("skeleton cannot be null."); if (bone == null) throw new IllegalArgumentException("bone cannot be null."); data = slot.data; - this.skeleton = skeleton; this.bone = bone; color = new Color(slot.color); attachment = slot.attachment; @@ -79,14 +73,14 @@ public class Slot { return data; } - public Skeleton getSkeleton () { - return skeleton; - } - public Bone getBone () { return bone; } + public Skeleton getSkeleton () { + return bone.skeleton; + } + public Color getColor () { return color; } @@ -101,17 +95,17 @@ public class Slot { public void setAttachment (Attachment attachment) { if (this.attachment == attachment) return; this.attachment = attachment; - attachmentTime = skeleton.time; + attachmentTime = bone.skeleton.time; attachmentVertices.clear(); } public void setAttachmentTime (float time) { - attachmentTime = skeleton.time - time; + attachmentTime = bone.skeleton.time - time; } /** Returns the time since the attachment was set. */ public float getAttachmentTime () { - return skeleton.time - attachmentTime; + return bone.skeleton.time - attachmentTime; } public void setAttachmentVertices (FloatArray attachmentVertices) { @@ -124,12 +118,12 @@ public class Slot { void setToSetupPose (int slotIndex) { color.set(data.color); - setAttachment(data.attachmentName == null ? null : skeleton.getAttachment(slotIndex, data.attachmentName)); + setAttachment(data.attachmentName == null ? null : bone.skeleton.getAttachment(slotIndex, data.attachmentName)); attachmentVertices.clear(); } public void setToSetupPose () { - setToSetupPose(skeleton.data.slots.indexOf(data, true)); + setToSetupPose(bone.skeleton.data.slots.indexOf(data, true)); } public String toString () { diff --git a/spine-libgdx/src/com/esotericsoftware/spine/attachments/BoundingBoxAttachment.java b/spine-libgdx/src/com/esotericsoftware/spine/attachments/BoundingBoxAttachment.java index f6b01ba38..e55390181 100644 --- a/spine-libgdx/src/com/esotericsoftware/spine/attachments/BoundingBoxAttachment.java +++ b/spine-libgdx/src/com/esotericsoftware/spine/attachments/BoundingBoxAttachment.java @@ -31,6 +31,7 @@ package com.esotericsoftware.spine.attachments; import com.esotericsoftware.spine.Bone; +import com.esotericsoftware.spine.Skeleton; public class BoundingBoxAttachment extends Attachment { private float[] vertices; @@ -39,9 +40,9 @@ public class BoundingBoxAttachment extends Attachment { super(name); } - public void computeWorldVertices (float x, float y, Bone bone, float[] worldVertices) { - x += bone.getWorldX(); - y += bone.getWorldY(); + public void computeWorldVertices (Bone bone, float[] worldVertices) { + Skeleton skeleton = bone.getSkeleton(); + float x = skeleton.getX() + bone.getWorldX(), y = skeleton.getY() + bone.getWorldY(); float m00 = bone.getM00(); float m01 = bone.getM01(); float m10 = bone.getM10(); diff --git a/spine-libgdx/test/com/esotericsoftware/spine/SimpleTest1.java b/spine-libgdx/test/com/esotericsoftware/spine/SimpleTest1.java index 42a98cd25..18f7c5077 100644 --- a/spine-libgdx/test/com/esotericsoftware/spine/SimpleTest1.java +++ b/spine-libgdx/test/com/esotericsoftware/spine/SimpleTest1.java @@ -52,7 +52,7 @@ public class SimpleTest1 extends ApplicationAdapter { camera = new OrthographicCamera(); batch = new SpriteBatch(); renderer = new SkeletonRenderer(); - renderer.setPremultipliedAlpha(true); + renderer.setPremultipliedAlpha(true); // PMA results in correct blending without outlines. debugRenderer = new SkeletonRendererDebug(); debugRenderer.setBoundingBoxes(false); debugRenderer.setRegionAttachments(false); @@ -71,6 +71,8 @@ public class SimpleTest1 extends ApplicationAdapter { state = new AnimationState(stateData); // Holds the animation state for a skeleton (current animation, time, etc). state.setTimeScale(0.5f); // Slow all animations down to 50% speed. + + // Queue animations on track 0. state.setAnimation(0, "run", true); state.addAnimation(0, "jump", false, 2); // Jump after 2 seconds. state.addAnimation(0, "run", true, 0); // Run after the jump. diff --git a/spine-libgdx/test/com/esotericsoftware/spine/SimpleTest2.java b/spine-libgdx/test/com/esotericsoftware/spine/SimpleTest2.java index 57e7de69f..ed1ad2887 100644 --- a/spine-libgdx/test/com/esotericsoftware/spine/SimpleTest2.java +++ b/spine-libgdx/test/com/esotericsoftware/spine/SimpleTest2.java @@ -98,6 +98,8 @@ public class SimpleTest2 extends ApplicationAdapter { System.out.println(trackIndex + " end: " + state.getCurrent(trackIndex)); } }); + + // Set animation on track 0. state.setAnimation(0, "run", true); Gdx.input.setInputProcessor(new InputAdapter() { diff --git a/spine-libgdx/test/com/esotericsoftware/spine/SimpleTest3.java b/spine-libgdx/test/com/esotericsoftware/spine/SimpleTest3.java new file mode 100644 index 000000000..eae6d8cd6 --- /dev/null +++ b/spine-libgdx/test/com/esotericsoftware/spine/SimpleTest3.java @@ -0,0 +1,111 @@ +/****************************************************************************** + * Spine Runtimes Software License + * Version 2.1 + * + * Copyright (c) 2013, Esoteric Software + * All rights reserved. + * + * You are granted a perpetual, non-exclusive, non-sublicensable and + * non-transferable license to install, execute and perform the Spine Runtimes + * Software (the "Software") solely for internal use. Without the written + * permission of Esoteric Software (typically granted by licensing Spine), 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 SOFTARE 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. + *****************************************************************************/ + +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.GL20; +import com.badlogic.gdx.graphics.OrthographicCamera; +import com.badlogic.gdx.graphics.g2d.PolygonSpriteBatch; +import com.badlogic.gdx.graphics.g2d.TextureAtlas; + +public class SimpleTest3 extends ApplicationAdapter { + OrthographicCamera camera; + PolygonSpriteBatch batch; + SkeletonRenderer renderer; + SkeletonRendererDebug debugRenderer; + + TextureAtlas atlas; + Skeleton skeleton; + AnimationState state; + + public void create () { + camera = new OrthographicCamera(); + batch = new PolygonSpriteBatch(); // Required to render meshes. SpriteBatch can't render meshes. + renderer = new SkeletonRenderer(); + renderer.setPremultipliedAlpha(true); + debugRenderer = new SkeletonRendererDebug(); + debugRenderer.setMeshTriangles(false); + debugRenderer.setRegionAttachments(false); + debugRenderer.setMeshHull(false); + + atlas = new TextureAtlas(Gdx.files.internal("raptor/raptor.atlas")); + SkeletonJson json = new SkeletonJson(atlas); // This loads skeleton JSON data, which is stateless. + json.setScale(0.5f); // Load the skeleton at 50% the size it was in Spine. + SkeletonData skeletonData = json.readSkeletonData(Gdx.files.internal("raptor/raptor.json")); + + skeleton = new Skeleton(skeletonData); // Skeleton holds skeleton state (bone positions, slot attachments, etc). + skeleton.setPosition(250, 20); + + AnimationStateData stateData = new AnimationStateData(skeletonData); // Defines mixing (crossfading) between animations. + + state = new AnimationState(stateData); // Holds the animation state for a skeleton (current animation, time, etc). + state.setTimeScale(0.6f); // Slow all animations down to 60% speed. + + // Queue animations on tracks 0 and 1. + state.setAnimation(0, "walk", true); + state.setAnimation(1, "empty", false); + state.addAnimation(1, "gungrab", false, 2); // Keys in higher tracks override the pose from lower tracks. + } + + public void render () { + state.update(Gdx.graphics.getDeltaTime()); // Update the animation time. + + Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); + + state.apply(skeleton); // Poses skeleton using current animations. This sets the bones' local SRT. + skeleton.updateWorldTransform(); // Uses the bones' local SRT to compute their world SRT. + + // Configure the camera, SpriteBatch, and SkeletonRendererDebug. + camera.update(); + batch.getProjectionMatrix().set(camera.combined); + debugRenderer.getShapeRenderer().setProjectionMatrix(camera.combined); + + batch.begin(); + renderer.draw(batch, skeleton); // Draw the skeleton images. + batch.end(); + + debugRenderer.draw(skeleton); // Draw debug lines. + } + + public void resize (int width, int height) { + camera.setToOrtho(false); // Update camera with new size. + } + + public void dispose () { + atlas.dispose(); + } + + public static void main (String[] args) throws Exception { + new LwjglApplication(new SimpleTest3()); + } +} diff --git a/spine-monogame/windows8-store/example/spine-monogame-example.csproj b/spine-monogame/windows8-store/example/spine-monogame-example.csproj index 7d50a13bb..6f48c20ba 100644 --- a/spine-monogame/windows8-store/example/spine-monogame-example.csproj +++ b/spine-monogame/windows8-store/example/spine-monogame-example.csproj @@ -145,6 +145,9 @@ Assets\goblins-ffd.json + + Assets\raptor.png + Assets\spineboy.atlas @@ -173,6 +176,14 @@ SpineMonogameWindows8Store + + + Assets\raptor.atlas + + + Assets\raptor.json + + 11.0 diff --git a/spine-monogame/windows8-store/src/SpineMonogameWindows8Store.csproj b/spine-monogame/windows8-store/src/SpineMonogameWindows8Store.csproj index b336a9b75..cc090f02a 100644 --- a/spine-monogame/windows8-store/src/SpineMonogameWindows8Store.csproj +++ b/spine-monogame/windows8-store/src/SpineMonogameWindows8Store.csproj @@ -174,6 +174,12 @@ spine-csharp\EventData.cs + + spine-csharp\IkConstraint.cs + + + spine-csharp\IkConstraintData.cs + spine-csharp\Json.cs diff --git a/spine-monogame/xamarinstudio-ios/src/spine-monogame-xamarinstudio-ios.csproj b/spine-monogame/xamarinstudio-ios/src/spine-monogame-xamarinstudio-ios.csproj index 2dab93700..a605c9153 100644 --- a/spine-monogame/xamarinstudio-ios/src/spine-monogame-xamarinstudio-ios.csproj +++ b/spine-monogame/xamarinstudio-ios/src/spine-monogame-xamarinstudio-ios.csproj @@ -3,7 +3,7 @@ Debug AnyCPU - 10.0.0 + 8.0.30703 2.0 {08DC311B-1F38-4CBD-B7B6-B734984A8CB3} {6BC8ED88-2882-458C-8E55-DFD12B67127B};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} @@ -43,8 +43,9 @@ + - + {DB8508BB-9849-4CC2-BC0F-8EB5DACB3C47} MonoGame.Framework.iOS @@ -140,5 +141,11 @@ spine-csharp\Attachments\SkinnedMeshAttachment.cs + + spine-csharp\IkConstraint.cs + + + spine-csharp\IkConstraintData.cs + diff --git a/spine-sfml/README.md b/spine-sfml/README.md index 77343ba0d..5958b2a29 100644 --- a/spine-sfml/README.md +++ b/spine-sfml/README.md @@ -12,4 +12,4 @@ Alternatively, the contents of the `spine-c/src`, `spine-c/include` and `spine-s ## Examples -[Simple example](https://github.com/EsotericSoftware/spine-runtimes/blob/master/spine-sfml/example/main.cpp#L61) +- [Simple example](https://github.com/EsotericSoftware/spine-runtimes/blob/master/spine-sfml/example/main.cpp#L61) diff --git a/spine-sfml/data/raptor.atlas b/spine-sfml/data/raptor.atlas new file mode 100644 index 000000000..c90da0078 --- /dev/null +++ b/spine-sfml/data/raptor.atlas @@ -0,0 +1,251 @@ + +raptor.png +size: 1022,1022 +format: RGBA8888 +filter: Linear,Linear +repeat: none +back_arm + rotate: false + xy: 410, 545 + size: 46, 29 + orig: 46, 29 + offset: 0, 0 + index: -1 +back_bracer + rotate: false + xy: 540, 548 + size: 39, 28 + orig: 39, 28 + offset: 0, 0 + index: -1 +back_hand + rotate: true + xy: 504, 538 + size: 36, 34 + orig: 36, 34 + offset: 0, 0 + index: -1 +back_knee + rotate: false + xy: 299, 478 + size: 49, 67 + orig: 49, 67 + offset: 0, 0 + index: -1 +back_thigh + rotate: true + xy: 140, 247 + size: 39, 24 + orig: 39, 24 + offset: 0, 0 + index: -1 +eyes_open + rotate: true + xy: 2, 2 + size: 47, 45 + orig: 47, 45 + offset: 0, 0 + index: -1 +front_arm + rotate: false + xy: 360, 544 + size: 48, 30 + orig: 48, 30 + offset: 0, 0 + index: -1 +front_bracer + rotate: false + xy: 538, 578 + size: 41, 29 + orig: 41, 29 + offset: 0, 0 + index: -1 +front_hand + rotate: false + xy: 538, 609 + size: 41, 38 + orig: 41, 38 + offset: 0, 0 + index: -1 +front_open_hand + rotate: false + xy: 894, 782 + size: 43, 44 + orig: 43, 44 + offset: 0, 0 + index: -1 +front_thigh + rotate: false + xy: 942, 849 + size: 57, 29 + orig: 57, 29 + offset: 0, 0 + index: -1 +gun + rotate: false + xy: 785, 774 + size: 107, 103 + orig: 107, 103 + offset: 0, 0 + index: -1 +gun_nohand + rotate: false + xy: 614, 703 + size: 105, 102 + orig: 105, 102 + offset: 0, 0 + index: -1 +head + rotate: false + xy: 2, 137 + size: 136, 149 + orig: 136, 149 + offset: 0, 0 + index: -1 +lower_leg + rotate: true + xy: 780, 699 + size: 73, 98 + orig: 73, 98 + offset: 0, 0 + index: -1 +mouth_smile + rotate: true + xy: 49, 2 + size: 47, 30 + orig: 47, 30 + offset: 0, 0 + index: -1 +neck + rotate: true + xy: 1001, 860 + size: 18, 21 + orig: 18, 21 + offset: 0, 0 + index: -1 +raptor_arm_back + rotate: false + xy: 940, 936 + size: 82, 86 + orig: 82, 86 + offset: 0, 0 + index: -1 +raptor_body + rotate: false + xy: 2, 737 + size: 610, 285 + orig: 610, 285 + offset: 0, 0 + index: -1 +raptor_front_arm + rotate: true + xy: 195, 464 + size: 81, 102 + orig: 81, 102 + offset: 0, 0 + index: -1 +raptor_front_leg + rotate: false + xy: 2, 478 + size: 191, 257 + orig: 191, 257 + offset: 0, 0 + index: -1 +raptor_hindleg_back + rotate: false + xy: 614, 807 + size: 169, 215 + orig: 169, 215 + offset: 0, 0 + index: -1 +raptor_horn + rotate: false + xy: 360, 655 + size: 182, 80 + orig: 182, 80 + offset: 0, 0 + index: -1 +raptor_horn_back + rotate: false + xy: 360, 576 + size: 176, 77 + orig: 176, 77 + offset: 0, 0 + index: -1 +raptor_jaw + rotate: false + xy: 785, 879 + size: 153, 143 + orig: 153, 143 + offset: 0, 0 + index: -1 +raptor_saddle_noshadow + rotate: false + xy: 2, 288 + size: 163, 188 + orig: 163, 188 + offset: 0, 0 + index: -1 +raptor_saddle_strap_front + rotate: false + xy: 721, 710 + size: 57, 95 + orig: 57, 95 + offset: 0, 0 + index: -1 +raptor_saddle_strap_rear + rotate: true + xy: 940, 880 + size: 54, 74 + orig: 54, 74 + offset: 0, 0 + index: -1 +raptor_saddle_w_shadow + rotate: false + xy: 195, 547 + size: 163, 188 + orig: 163, 188 + offset: 0, 0 + index: -1 +raptor_tongue + rotate: true + xy: 544, 649 + size: 86, 64 + orig: 86, 64 + offset: 0, 0 + index: -1 +stirrup_back + rotate: false + xy: 458, 539 + size: 44, 35 + orig: 44, 35 + offset: 0, 0 + index: -1 +stirrup_front + rotate: true + xy: 81, 4 + size: 45, 50 + orig: 45, 50 + offset: 0, 0 + index: -1 +stirrup_strap + rotate: true + xy: 894, 828 + size: 49, 46 + orig: 49, 46 + offset: 0, 0 + index: -1 +torso + rotate: true + xy: 610, 647 + size: 54, 91 + orig: 54, 91 + offset: 0, 0 + index: -1 +visor + rotate: false + xy: 2, 51 + size: 131, 84 + orig: 131, 84 + offset: 0, 0 + index: -1 diff --git a/spine-sfml/data/raptor.json b/spine-sfml/data/raptor.json new file mode 100644 index 000000000..df9892de6 --- /dev/null +++ b/spine-sfml/data/raptor.json @@ -0,0 +1,1333 @@ +{ +"skeleton": { "hash": "r3IJRaLbaxgEoW1YBAOrYT69jB4", "spine": "Dev", "width": 1224.2, "height": 1052.38 }, +"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": "gun", + "parent": "spineboy_hip", + "length": 181.35, + "x": 16.86, + "y": -7.89, + "scaleX": 0.816, + "scaleY": 0.816, + "rotation": 107.11 + }, + { "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, + "x": 57.78, + "y": -0.02, + "scaleX": 0.73, + "scaleY": 0.823, + "rotation": -0.46, + "inheritRotation": false + }, + { "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, + "x": 49.71, + "y": 20.65, + "scaleX": 1.154, + "rotation": -3.16, + "inheritRotation": false + }, + { "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_hand2", + "parent": "front_bracer", + "length": 58.18, + "x": 39.98, + "y": -0.89, + "rotation": 13.9, + "inheritRotation": false + }, + { "name": "tongue3", "parent": "tongue2", "length": 43.64, "x": 44.26, "y": -0.2, "rotation": 12.86 } +], +"ik": [ + { + "name": "front_leg_goal", + "bones": [ "front_leg1", "front_leg2" ], + "target": "front_leg_goal", + "bendPositive": false + }, + { + "name": "rear_leg_goal", + "bones": [ "rear_leg1", "rear_leg2" ], + "target": "rear_leg_goal", + "bendPositive": false + }, + { + "name": "front_foot_goal", + "bones": [ "front_leg3", "front_foot1" ], + "target": "front_foot_goal" + }, + { + "name": "rear_foot_goal", + "bones": [ "rear_leg3", "rear_foot1" ], + "target": "rear_foot_goal" + }, + { + "name": "stirrup", + "bones": [ "stirrup_strap1", "stirrup_strap2" ], + "target": "stirrup" + }, + { + "name": "spineboy_rear_leg_goal", + "bones": [ "back_thigh", "back_knee" ], + "target": "spineboy_rear_arm_goal", + "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" + } +], +"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" } +], +"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": [ 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 ], + "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 + } + }, + "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": "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 + } + }, + "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 + } + }, + "raptor_front_arm": { + "raptor_front_arm": { + "type": "skinnedmesh", + "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 + } + }, + "raptor_front_leg": { + "raptor_front_leg": { + "type": "skinnedmesh", + "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 + } + }, + "raptor_hindleg_back": { + "raptor_hindleg_back": { + "type": "skinnedmesh", + "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 + } + }, + "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": "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 + } + }, + "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": "skinnedmesh", + "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 + } + }, + "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": "skinnedmesh", + "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 + } + }, + "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": "skinnedmesh", + "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 + } + }, + "visor": { + "visor": { "x": 99.13, "y": 6.51, "rotation": -70.57, "width": 261, "height": 168 } + } + } +}, +"animations": { + "empty": {}, + "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": 1, + "bendPositive": true, + "curve": [ 0.317, 0.13, 0.781, 0.56 ] + }, + { "time": 0.1333, "mix": 0, "bendPositive": true } + ] + } + }, + "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": 0.5333, "angle": -41.93 }, + { "time": 0.6333, "angle": -16.71 }, + { "time": 0.7333, "angle": 16.92 }, + { "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": 0.1, "angle": -45.79 }, + { "time": 0.1666, "angle": -19.95 }, + { "time": 0.4, "angle": 35.36 }, + { "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": 0.5333, "angle": -346.78 }, + { "time": 0.6333, "angle": -398.52 }, + { "time": 0.7333, "angle": -393.21 }, + { "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": 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": [ + { "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": -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 } + ], + "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 } + ] + }, + "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": -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 } + ], + "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 } + ] + }, + "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": 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 } + ], + "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 } + ] + }, + "front_foot2": { + "rotate": [ + { "time": 0, "angle": 44.18 }, + { "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 } + ], + "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": -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 } + ], + "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 } + ] + }, + "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": 27.59 }, + { "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": 27.59 }, + { "time": 1.0666, "angle": 27.59 } + ], + "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 } + ] + } + }, + "ffd": { + "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 ] + }, + { "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 ] + }, + { "time": 1.0666 } + ] + }, + "raptor_front_leg": { + "raptor_front_leg": [ + { "time": 0, "curve": "stepped" }, + { "time": 0.2666 }, + { + "time": 0.5333, + "offset": 216, + "vertices": [ -2.23, 21.95, 21.54, -4.75 ] + }, + { + "time": 0.6, + "offset": 216, + "vertices": [ 7.17, 15.14, 15.26, -6.91 ] + }, + { + "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 ] + }, + { "time": 0.8, "curve": "stepped" }, + { "time": 0.9666, "curve": "stepped" }, + { "time": 1.0666 } + ] + } + } + } + } +} +} \ No newline at end of file diff --git a/spine-sfml/data/raptor.png b/spine-sfml/data/raptor.png new file mode 100644 index 000000000..861dbce1a Binary files /dev/null and b/spine-sfml/data/raptor.png differ diff --git a/spine-sfml/example/main.cpp b/spine-sfml/example/main.cpp index 223e26f73..2a9c556e5 100644 --- a/spine-sfml/example/main.cpp +++ b/spine-sfml/example/main.cpp @@ -101,7 +101,7 @@ void spineboy () { AnimationState_addAnimationByName(drawable->state, 0, "run", true, 0); } - sf::RenderWindow window(sf::VideoMode(640, 480), "Spine SFML"); + sf::RenderWindow window(sf::VideoMode(640, 480), "Spine SFML - spineboy"); window.setFramerateLimit(60); sf::Event event; sf::Clock deltaClock; @@ -144,7 +144,6 @@ void goblins () { printf("Error: %s\n", json->error); exit(0); } - Animation* walkAnimation = SkeletonData_findAnimation(skeletonData, "walk"); SkeletonJson_dispose(json); SkeletonDrawable* drawable = new SkeletonDrawable(skeletonData); @@ -161,9 +160,55 @@ void goblins () { skeleton->y = 590; Skeleton_updateWorldTransform(skeleton); - AnimationState_setAnimation(drawable->state, 0, walkAnimation, true); + AnimationState_setAnimationByName(drawable->state, 0, "walk", true); - sf::RenderWindow window(sf::VideoMode(640, 640), "Spine SFML"); + sf::RenderWindow window(sf::VideoMode(640, 640), "Spine SFML - goblins"); + 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); +} + +void raptor () { + // Load atlas, skeleton, and animations. + Atlas* atlas = Atlas_createFromFile("data/raptor.atlas", 0); + SkeletonJson* json = SkeletonJson_create(atlas); + json->scale = 0.5f; + SkeletonData *skeletonData = SkeletonJson_readSkeletonDataFile(json, "data/raptor.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 = 320; + skeleton->y = 590; + 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"); window.setFramerateLimit(60); sf::Event event; sf::Clock deltaClock; @@ -186,6 +231,7 @@ void goblins () { } int main () { + raptor(); spineboy(); goblins(); } diff --git a/spine-sfml/src/spine/spine-sfml.cpp b/spine-sfml/src/spine/spine-sfml.cpp index e1f5615cd..4543ebf84 100644 --- a/spine-sfml/src/spine/spine-sfml.cpp +++ b/spine-sfml/src/spine/spine-sfml.cpp @@ -66,11 +66,15 @@ namespace spine { SkeletonDrawable::SkeletonDrawable (SkeletonData* skeletonData, AnimationStateData* stateData) : timeScale(1), - vertexArray(new VertexArray(Triangles, skeletonData->boneCount * 4)), + vertexArray(new VertexArray(Triangles, skeletonData->bonesCount * 4)), worldVertices(0) { Bone_setYDown(true); worldVertices = MALLOC(float, SPINE_MESH_VERTEX_COUNT_MAX); skeleton = Skeleton_create(skeletonData); + + ownsAnimationStateData = stateData == 0; + if (ownsAnimationStateData) stateData = AnimationStateData_create(skeletonData); + state = AnimationState_create(stateData); } @@ -78,6 +82,7 @@ SkeletonDrawable::~SkeletonDrawable () { delete vertexArray; FREE(worldVertices); AnimationState_dispose(state); + if (ownsAnimationStateData) AnimationStateData_dispose(state->data); Skeleton_dispose(skeleton); } @@ -94,7 +99,7 @@ void SkeletonDrawable::draw (RenderTarget& target, RenderStates states) const { sf::Vertex vertices[4]; sf::Vertex vertex; - for (int i = 0; i < skeleton->slotCount; ++i) { + for (int i = 0; i < skeleton->slotsCount; ++i) { Slot* slot = skeleton->drawOrder[i]; Attachment* attachment = slot->attachment; if (!attachment) continue; @@ -102,7 +107,7 @@ void SkeletonDrawable::draw (RenderTarget& target, RenderStates states) const { if (attachment->type == ATTACHMENT_REGION) { RegionAttachment* regionAttachment = (RegionAttachment*)attachment; texture = (Texture*)((AtlasRegion*)regionAttachment->rendererObject)->page->rendererObject; - RegionAttachment_computeWorldVertices(regionAttachment, slot->skeleton->x, slot->skeleton->y, slot->bone, worldVertices); + RegionAttachment_computeWorldVertices(regionAttachment, slot->bone, worldVertices); Uint8 r = static_cast(skeleton->r * slot->r * 255); Uint8 g = static_cast(skeleton->g * slot->g * 255); @@ -157,7 +162,7 @@ void SkeletonDrawable::draw (RenderTarget& target, RenderStates states) const { MeshAttachment* mesh = (MeshAttachment*)attachment; if (mesh->verticesCount > SPINE_MESH_VERTEX_COUNT_MAX) continue; texture = (Texture*)((AtlasRegion*)mesh->rendererObject)->page->rendererObject; - MeshAttachment_computeWorldVertices(mesh, slot->skeleton->x, slot->skeleton->y, slot, worldVertices); + MeshAttachment_computeWorldVertices(mesh, slot, worldVertices); Uint8 r = static_cast(skeleton->r * slot->r * 255); Uint8 g = static_cast(skeleton->g * slot->g * 255); @@ -182,7 +187,7 @@ void SkeletonDrawable::draw (RenderTarget& target, RenderStates states) const { SkinnedMeshAttachment* mesh = (SkinnedMeshAttachment*)attachment; if (mesh->uvsCount > SPINE_MESH_VERTEX_COUNT_MAX) continue; texture = (Texture*)((AtlasRegion*)mesh->rendererObject)->page->rendererObject; - SkinnedMeshAttachment_computeWorldVertices(mesh, slot->skeleton->x, slot->skeleton->y, slot, worldVertices); + SkinnedMeshAttachment_computeWorldVertices(mesh, slot, worldVertices); Uint8 r = static_cast(skeleton->r * slot->r * 255); Uint8 g = static_cast(skeleton->g * slot->g * 255); diff --git a/spine-sfml/src/spine/spine-sfml.h b/spine-sfml/src/spine/spine-sfml.h index ebbb34fda..64b7120d0 100644 --- a/spine-sfml/src/spine/spine-sfml.h +++ b/spine-sfml/src/spine/spine-sfml.h @@ -52,6 +52,7 @@ public: virtual void draw (sf::RenderTarget& target, sf::RenderStates states) const; private: + bool ownsAnimationStateData; float* worldVertices; }; diff --git a/spine-tk2d/Assets/spine-tk2d/SkeletonRenderer.cs b/spine-tk2d/Assets/spine-tk2d/SkeletonRenderer.cs index 432b61bfb..355ac0e46 100644 --- a/spine-tk2d/Assets/spine-tk2d/SkeletonRenderer.cs +++ b/spine-tk2d/Assets/spine-tk2d/SkeletonRenderer.cs @@ -190,14 +190,14 @@ public class SkeletonRenderer : MonoBehaviour { Color32[] colors = this.colors; int vertexIndex = 0; Color32 color = new Color32(); - float x = skeleton.x, y = skeleton.y, zSpacing = this.zSpacing; + float zSpacing = this.zSpacing; float a = skeleton.a * 255, r = skeleton.r, g = skeleton.g, b = skeleton.b; for (int i = 0; i < drawOrderCount; i++) { Slot slot = drawOrder[i]; Attachment attachment = slot.attachment; if (attachment is RegionAttachment) { RegionAttachment regionAttachment = (RegionAttachment)attachment; - regionAttachment.ComputeWorldVertices(x, y, slot.bone, tempVertices); + regionAttachment.ComputeWorldVertices(slot.bone, tempVertices); float z = i * zSpacing; vertices[vertexIndex] = new Vector3(tempVertices[RegionAttachment.X1], tempVertices[RegionAttachment.Y1], z); @@ -228,7 +228,7 @@ public class SkeletonRenderer : MonoBehaviour { MeshAttachment meshAttachment = (MeshAttachment)attachment; int meshVertexCount = meshAttachment.vertices.Length; if (tempVertices.Length < meshVertexCount) tempVertices = new float[meshVertexCount]; - meshAttachment.ComputeWorldVertices(x, y, slot, tempVertices); + meshAttachment.ComputeWorldVertices(slot, tempVertices); color.a = (byte)(a * slot.a * meshAttachment.a); color.r = (byte)(r * slot.r * meshAttachment.r * color.a); @@ -247,7 +247,7 @@ public class SkeletonRenderer : MonoBehaviour { SkinnedMeshAttachment meshAttachment = (SkinnedMeshAttachment)attachment; int meshVertexCount = meshAttachment.uvs.Length; if (tempVertices.Length < meshVertexCount) tempVertices = new float[meshVertexCount]; - meshAttachment.ComputeWorldVertices(x, y, slot, tempVertices); + meshAttachment.ComputeWorldVertices(slot, tempVertices); color.a = (byte)(a * slot.a * meshAttachment.a); color.r = (byte)(r * slot.r * meshAttachment.r * color.a); diff --git a/spine-unity/Assets/Examples/Scenes/Raptor.unity b/spine-unity/Assets/Examples/Scenes/Raptor.unity index 7c3307d31..f4336077f 100644 Binary files a/spine-unity/Assets/Examples/Scenes/Raptor.unity and b/spine-unity/Assets/Examples/Scenes/Raptor.unity differ diff --git a/spine-unity/Assets/Examples/Scripts/Raptor.cs b/spine-unity/Assets/Examples/Scripts/Raptor.cs new file mode 100644 index 000000000..45fb5eccf --- /dev/null +++ b/spine-unity/Assets/Examples/Scripts/Raptor.cs @@ -0,0 +1,13 @@ +using UnityEngine; +using System.Collections; + +public class Raptor : MonoBehaviour { + public void Start () { + // Get the SkeletonAnimation component for the GameObject this script is attached to. + SkeletonAnimation skeletonAnimation = GetComponent(); + // Set an animation on track 1 that does nothing to be played first. + skeletonAnimation.state.SetAnimation(1, "empty", false); + // Queue gun grab to be played on track 1 two seconds later. + skeletonAnimation.state.AddAnimation(1, "gungrab", false, 2); + } +} diff --git a/spine-unity/Assets/Examples/Scripts/Raptor.cs.meta b/spine-unity/Assets/Examples/Scripts/Raptor.cs.meta new file mode 100644 index 000000000..3738cf371 --- /dev/null +++ b/spine-unity/Assets/Examples/Scripts/Raptor.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 8b0d38dc0b91fb443a41838d475ae49b +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/spine-unity/Assets/Examples/Spine/Raptor/raptor.atlas.txt b/spine-unity/Assets/Examples/Spine/Raptor/raptor.atlas.txt index 560d3d48c..c90da0078 100644 --- a/spine-unity/Assets/Examples/Spine/Raptor/raptor.atlas.txt +++ b/spine-unity/Assets/Examples/Spine/Raptor/raptor.atlas.txt @@ -4,245 +4,245 @@ size: 1022,1022 format: RGBA8888 filter: Linear,Linear repeat: none -images/back_arm +back_arm rotate: false xy: 410, 545 size: 46, 29 orig: 46, 29 offset: 0, 0 index: -1 -images/back_bracer +back_bracer rotate: false xy: 540, 548 size: 39, 28 orig: 39, 28 offset: 0, 0 index: -1 -images/back_hand +back_hand rotate: true xy: 504, 538 size: 36, 34 orig: 36, 34 offset: 0, 0 index: -1 -images/back_knee +back_knee rotate: false xy: 299, 478 size: 49, 67 orig: 49, 67 offset: 0, 0 index: -1 -images/back_thigh +back_thigh rotate: true xy: 140, 247 size: 39, 24 orig: 39, 24 offset: 0, 0 index: -1 -images/eyes_open +eyes_open rotate: true xy: 2, 2 size: 47, 45 orig: 47, 45 offset: 0, 0 index: -1 -images/front_arm +front_arm rotate: false xy: 360, 544 size: 48, 30 orig: 48, 30 offset: 0, 0 index: -1 -images/front_bracer +front_bracer rotate: false xy: 538, 578 size: 41, 29 orig: 41, 29 offset: 0, 0 index: -1 -images/front_hand +front_hand rotate: false xy: 538, 609 size: 41, 38 orig: 41, 38 offset: 0, 0 index: -1 -images/front_open_hand +front_open_hand rotate: false xy: 894, 782 size: 43, 44 orig: 43, 44 offset: 0, 0 index: -1 -images/front_thigh +front_thigh rotate: false xy: 942, 849 size: 57, 29 orig: 57, 29 offset: 0, 0 index: -1 -images/gun +gun rotate: false xy: 785, 774 size: 107, 103 orig: 107, 103 offset: 0, 0 index: -1 -images/gun_nohand +gun_nohand rotate: false xy: 614, 703 size: 105, 102 orig: 105, 102 offset: 0, 0 index: -1 -images/head +head rotate: false xy: 2, 137 size: 136, 149 orig: 136, 149 offset: 0, 0 index: -1 -images/lower_leg +lower_leg rotate: true xy: 780, 699 size: 73, 98 orig: 73, 98 offset: 0, 0 index: -1 -images/mouth_smile +mouth_smile rotate: true xy: 49, 2 size: 47, 30 orig: 47, 30 offset: 0, 0 index: -1 -images/neck +neck rotate: true xy: 1001, 860 size: 18, 21 orig: 18, 21 offset: 0, 0 index: -1 -images/raptor_arm_back +raptor_arm_back rotate: false xy: 940, 936 size: 82, 86 orig: 82, 86 offset: 0, 0 index: -1 -images/raptor_body +raptor_body rotate: false xy: 2, 737 size: 610, 285 orig: 610, 285 offset: 0, 0 index: -1 -images/raptor_front_arm +raptor_front_arm rotate: true xy: 195, 464 size: 81, 102 orig: 81, 102 offset: 0, 0 index: -1 -images/raptor_front_leg +raptor_front_leg rotate: false xy: 2, 478 size: 191, 257 orig: 191, 257 offset: 0, 0 index: -1 -images/raptor_hindleg_back +raptor_hindleg_back rotate: false xy: 614, 807 size: 169, 215 orig: 169, 215 offset: 0, 0 index: -1 -images/raptor_horn +raptor_horn rotate: false xy: 360, 655 size: 182, 80 orig: 182, 80 offset: 0, 0 index: -1 -images/raptor_horn_back +raptor_horn_back rotate: false xy: 360, 576 size: 176, 77 orig: 176, 77 offset: 0, 0 index: -1 -images/raptor_jaw +raptor_jaw rotate: false xy: 785, 879 size: 153, 143 orig: 153, 143 offset: 0, 0 index: -1 -images/raptor_saddle_noshadow +raptor_saddle_noshadow rotate: false xy: 2, 288 size: 163, 188 orig: 163, 188 offset: 0, 0 index: -1 -images/raptor_saddle_strap_front +raptor_saddle_strap_front rotate: false xy: 721, 710 size: 57, 95 orig: 57, 95 offset: 0, 0 index: -1 -images/raptor_saddle_strap_rear +raptor_saddle_strap_rear rotate: true xy: 940, 880 size: 54, 74 orig: 54, 74 offset: 0, 0 index: -1 -images/raptor_saddle_w_shadow +raptor_saddle_w_shadow rotate: false xy: 195, 547 size: 163, 188 orig: 163, 188 offset: 0, 0 index: -1 -images/raptor_tongue +raptor_tongue rotate: true xy: 544, 649 size: 86, 64 orig: 86, 64 offset: 0, 0 index: -1 -images/stirrup_back +stirrup_back rotate: false xy: 458, 539 size: 44, 35 orig: 44, 35 offset: 0, 0 index: -1 -images/stirrup_front +stirrup_front rotate: true xy: 81, 4 size: 45, 50 orig: 45, 50 offset: 0, 0 index: -1 -images/stirrup_strap +stirrup_strap rotate: true xy: 894, 828 size: 49, 46 orig: 49, 46 offset: 0, 0 index: -1 -images/torso +torso rotate: true xy: 610, 647 size: 54, 91 orig: 54, 91 offset: 0, 0 index: -1 -images/visor +visor rotate: false xy: 2, 51 size: 131, 84 diff --git a/spine-unity/Assets/Examples/Spine/Raptor/raptor.json b/spine-unity/Assets/Examples/Spine/Raptor/raptor.json index 37324b094..df9892de6 100644 --- a/spine-unity/Assets/Examples/Spine/Raptor/raptor.json +++ b/spine-unity/Assets/Examples/Spine/Raptor/raptor.json @@ -1 +1,1333 @@ -{"skeleton":{"spine":"Dev","hash":"gpnuCmS4cM+VWprF3iClFQcYxeQ","width":1243.46,"height":1062.38},"bones":[{"name":"root"},{"name":"front_foot_goal","parent":"root","x":-45.79,"y":-28.67,"rotation":-0.94,"color":"ff0000ff"},{"name":"hip","parent":"root","x":-136.78,"y":415.47,"rotation":3.15,"color":"fbff00ff"},{"name":"rear_foot_goal","parent":"root","x":33.43,"y":30.81,"color":"ff0000ff"},{"name":"front_leg1","parent":"hip","length":251.74,"x":27.36,"y":-28.27,"rotation":-51.5,"color":"15ff00ff"},{"name":"front_leg_goal","parent":"front_foot_goal","x":-106.06,"y":115.58,"color":"ff0000ff"},{"name":"rear_leg1","parent":"hip","length":226.27,"x":55.19,"y":-71.25,"rotation":-54.76,"color":"e07800ff"},{"name":"rear_leg_goal","parent":"rear_foot_goal","x":-127.51,"y":75.99,"color":"ff0000ff"},{"name":"tail1","parent":"hip","length":162.53,"x":-20.86,"y":6.87,"rotation":162.92,"color":"eaff00ff"},{"name":"torso1","parent":"hip","length":126.25,"x":30.03,"y":-0.4,"rotation":-4.97,"color":"eaff00ff"},{"name":"front_leg2","parent":"front_leg1","length":208.54,"x":251.03,"y":0.16,"rotation":261.93,"color":"15ff00ff"},{"name":"rear_leg2","parent":"rear_leg1","length":172.58,"x":226.32,"y":0.23,"rotation":-92.25,"color":"e07800ff"},{"name":"saddle","parent":"torso1","length":50.91,"x":4.56,"y":71.86,"rotation":91.8,"color":"ff7300ff"},{"name":"tail2","parent":"tail1","length":130.02,"x":162.53,"y":-0.82,"rotation":30.3,"color":"eaff00ff"},{"name":"torso2","parent":"torso1","length":121.2,"x":126.25,"y":-0.37,"rotation":39.84,"color":"eaff00ff"},{"name":"front_arm1","parent":"torso2","length":109.99,"x":46.37,"y":-84.61,"rotation":224.54,"color":"15ff00ff"},{"name":"front_leg3","parent":"front_leg2","length":118.18,"x":208.5,"y":-1.63,"rotation":85.46,"color":"15ff00ff"},{"name":"neck","parent":"torso2","length":70.59,"x":121.19,"y":0.34,"rotation":41.37,"color":"eaff00ff"},{"name":"rear_arm1","parent":"torso2","length":109.56,"x":57.05,"y":-95.38,"rotation":-124.71,"color":"e07800ff"},{"name":"rear_leg3","parent":"rear_leg2","length":103.05,"x":172.31,"y":2.21,"rotation":82.81,"color":"e07800ff"},{"name":"saddle_strap_front1","parent":"saddle","length":97.27,"x":-27.36,"y":-73.38,"rotation":-148.11,"color":"ff7300ff"},{"name":"saddle_strap_rear1","parent":"saddle","length":38.62,"x":-33.34,"y":87.32,"rotation":151.13,"color":"ff7300ff"},{"name":"spineboy_front_arm_goal","parent":"saddle","x":-50.7,"y":-96.93,"color":"ff0004ff"},{"name":"spineboy_hip","parent":"saddle","length":0.52,"x":81.88,"y":2.68,"rotation":90.01,"color":"ffffffff"},{"name":"spineboy_rear_arm_goal","parent":"saddle","x":-30.43,"y":-100.08,"color":"ff0001ff"},{"name":"stirrup","parent":"saddle","length":78.17,"x":-81.94,"y":-103.38,"rotation":-68.85,"color":"ff7300ff"},{"name":"stirrup_strap1","parent":"saddle","length":43.69,"x":-20.38,"y":-29.37,"rotation":-135,"color":"ff7300ff"},{"name":"tail3","parent":"tail2","length":141.06,"x":130.02,"y":0.1,"rotation":6.88,"color":"eaff00ff"},{"name":"back_thigh","parent":"spineboy_hip","length":71.15,"x":-9.57,"y":2.31,"rotation":160.75,"color":"ffffffff"},{"name":"front_arm2","parent":"front_arm1","length":86.33,"x":109.99,"y":0.2,"rotation":105.23,"color":"15ff00ff"},{"name":"front_foot1","parent":"front_leg3","length":57.79,"x":118.19,"y":-0.79,"scaleX":1.126,"rotation":54.46,"color":"15ff00ff"},{"name":"front_thigh","parent":"spineboy_hip","length":77.79,"x":15.51,"y":17.01,"rotation":163.34,"color":"ffffffff"},{"name":"gun","parent":"spineboy_hip","length":181.35,"x":16.86,"y":-7.89,"scaleX":0.816,"scaleY":0.816,"rotation":107.11,"color":"ffffffff"},{"name":"head","parent":"neck","length":105.5,"x":70.59,"y":0.03,"rotation":9.82,"color":"eaff00ff"},{"name":"rear_arm2","parent":"rear_arm1","length":85.8,"x":109.56,"rotation":123.56,"color":"e07800ff"},{"name":"rear_foot1","parent":"rear_leg3","length":84.51,"x":102.37,"y":-0.02,"rotation":75.43,"color":"e07800ff"},{"name":"saddle_strap_front2","parent":"saddle_strap_front1","length":102.74,"x":97.29,"y":0.3,"rotation":-11.13,"color":"ff7300ff"},{"name":"saddle_strap_rear2","parent":"saddle_strap_rear1","length":54.36,"x":38.63,"y":-0.02,"color":"ff7300ff"},{"name":"spineboy_torso","parent":"spineboy_hip","length":122.45,"x":1.05,"y":-2.1,"rotation":-75.85,"color":"ffffffff"},{"name":"stirrup_strap2","parent":"stirrup_strap1","length":51.62,"x":43.7,"rotation":9.38,"color":"ff7300ff"},{"name":"tail4","parent":"tail3","length":126.25,"x":141.05,"y":0.64,"rotation":-18.86,"color":"eaff00ff"},{"name":"back_arm","parent":"spineboy_torso","length":67.21,"x":96.33,"y":-38.46,"rotation":-120.89,"color":"ffffffff"},{"name":"back_knee","parent":"back_thigh","length":97.17,"x":71.15,"y":-0.28,"rotation":-54.97,"color":"ffffffff"},{"name":"front_arm","parent":"spineboy_torso","length":74.51,"x":101.37,"y":9.78,"rotation":-118.16,"color":"ffffffff"},{"name":"front_foot2","parent":"front_foot1","length":56.19,"x":57.78,"y":-0.02,"scaleX":0.73,"scaleY":0.823,"rotation":-0.46,"inheritRotation":false,"color":"15ff00ff"},{"name":"front_hand","parent":"front_arm2","length":47.55,"x":86.33,"y":0.06,"rotation":-56.83,"color":"15ff00ff"},{"name":"horn_front","parent":"head","length":87.48,"x":82.09,"y":-221.36,"rotation":49.36,"color":"15ff00ff"},{"name":"horn_rear","parent":"head","length":73.78,"x":99.27,"y":-226.79,"rotation":44.31,"color":"e07800ff"},{"name":"jaw","parent":"head","length":203.76,"x":29.36,"y":-40.15,"rotation":-140.14,"inheritScale":false,"color":"ffff00ff"},{"name":"lower_leg","parent":"front_thigh","length":111.5,"x":77.92,"y":-0.1,"rotation":-49.62,"color":"ffffffff"},{"name":"neck2","parent":"spineboy_torso","length":32.04,"x":113.44,"y":-15.21,"rotation":-45.22,"color":"ffffffff"},{"name":"rear_foot2","parent":"rear_foot1","length":102.31,"x":84.49,"y":-0.34,"rotation":-6.13,"inheritRotation":false,"color":"e07800ff"},{"name":"rear_hand","parent":"rear_arm2","length":45.8,"x":85.8,"y":0.1,"rotation":-76.28,"color":"e07800ff"},{"name":"saddle_strap_rear3","parent":"saddle_strap_rear2","length":44.04,"x":54.86,"y":0.19,"rotation":3.63,"color":"ff7300ff"},{"name":"tail5","parent":"tail4","length":91.06,"x":126.25,"y":-0.47,"rotation":-22.34,"color":"eaff00ff"},{"name":"tongue1","parent":"head","length":55.11,"x":20.81,"y":-104.75,"rotation":-129.04,"color":"ffff00ff"},{"name":"back_bracer","parent":"back_arm","length":43.68,"x":67.21,"y":-0.31,"rotation":17.48,"color":"ffffffff"},{"name":"bone","parent":"horn_front","x":294.58,"y":234.17,"rotation":-138.59,"color":"15ff00ff"},{"name":"bone2","parent":"horn_rear","x":232.68,"y":245.84,"rotation":-133.55,"color":"e07800ff"},{"name":"front_bracer","parent":"front_arm","length":39.85,"x":74.52,"y":-0.41,"rotation":20.3,"color":"ffffffff"},{"name":"front_foot3","parent":"front_foot2","length":129.88,"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,"color":"ffffffff"},{"name":"tongue2","parent":"tongue1","length":44.66,"x":55.59,"y":0.93,"rotation":8.93,"color":"fff200ff"},{"name":"back_hand","parent":"back_bracer","length":41.97,"x":43.68,"y":0.06,"rotation":9.2,"inheritRotation":false,"color":"ffffffff"},{"name":"front_hand2","parent":"front_bracer","length":58.18,"x":39.98,"y":-0.89,"rotation":13.9,"inheritRotation":false,"color":"ffffffff"},{"name":"tongue3","parent":"tongue2","length":43.64,"x":44.26,"y":-0.2,"rotation":12.86,"color":"fff200ff"}],"ik":[{"name":"front_leg_goal","bones":["front_leg1","front_leg2"],"target":"front_leg_goal","bendPositive":false},{"name":"rear_leg_goal","bones":["rear_leg1","rear_leg2"],"target":"rear_leg_goal","bendPositive":false},{"name":"front_foot_goal","bones":["front_leg3","front_foot1"],"target":"front_foot_goal"},{"name":"rear_foot_goal","bones":["rear_leg3","rear_foot1"],"target":"rear_foot_goal"},{"name":"stirrup","bones":["stirrup_strap1","stirrup_strap2"],"target":"stirrup"},{"name":"spineboy_rear_leg_goal","bones":["back_thigh","back_knee"],"target":"spineboy_rear_arm_goal","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"}],"slots":[{"name":"back_hand","bone":"back_hand","attachment":"images/back_hand"},{"name":"back_arm","bone":"back_arm","attachment":"images/back_arm"},{"name":"back_bracer","bone":"back_bracer","attachment":"images/back_bracer"},{"name":"back_knee","bone":"back_knee","attachment":"images/back_knee"},{"name":"raptor_horn_back","bone":"horn_rear","attachment":"images/raptor_horn_back"},{"name":"raptor_tongue","bone":"root","attachment":"images/raptor_tongue"},{"name":"raptor_hindleg_back","bone":"rear_leg1","attachment":"images/raptor_hindleg_back"},{"name":"raptor_arm_back","bone":"root","attachment":"images/raptor_arm_back"},{"name":"raptor_body","bone":"torso1","attachment":"images/raptor_body"},{"name":"back_thigh","bone":"back_thigh","attachment":"images/back_thigh"},{"name":"raptor_saddle_strap_front","bone":"saddle_strap_front1","attachment":"images/raptor_saddle_strap_front"},{"name":"raptor_saddle_strap_rear","bone":"saddle_strap_rear1","attachment":"images/raptor_saddle_strap_rear"},{"name":"raptor_saddle_w_shadow","bone":"saddle","attachment":"images/raptor_saddle_w_shadow"},{"name":"raptor_saddle_noshadow","bone":"saddle"},{"name":"raptor_front_arm","bone":"root","attachment":"images/raptor_front_arm"},{"name":"raptor_front_leg","bone":"front_leg1","attachment":"images/raptor_front_leg"},{"name":"raptor_jaw","bone":"jaw","attachment":"images/raptor_jaw"},{"name":"neck","bone":"neck2","attachment":"images/neck"},{"name":"spineboy_torso","bone":"spineboy_torso","attachment":"images/torso"},{"name":"head","bone":"head2","attachment":"images/head"},{"name":"eyes_open","bone":"head2","attachment":"images/eyes_open"},{"name":"mouth_smile","bone":"head2","attachment":"images/mouth_smile"},{"name":"visor","bone":"head2","attachment":"images/visor"},{"name":"raptor_horn","bone":"horn_front","attachment":"images/raptor_horn"},{"name":"front_thigh","bone":"front_thigh","attachment":"images/front_thigh"},{"name":"stirrup_back","bone":"stirrup","attachment":"images/stirrup_back"},{"name":"lower_leg","bone":"lower_leg","attachment":"images/lower_leg"},{"name":"stirrup_strap","bone":"stirrup","attachment":"images/stirrup_strap"},{"name":"stirrup_front","bone":"stirrup","attachment":"images/stirrup_front"},{"name":"gun","bone":"gun","attachment":"images/gun_nohand"},{"name":"front_arm","bone":"front_arm","attachment":"images/front_arm"},{"name":"front_bracer","bone":"front_bracer","attachment":"images/front_bracer"},{"name":"front_hand","bone":"front_hand2","attachment":"images/front_hand"}],"skins":{"default":{"back_arm":{"images/back_arm":{"x":29.71,"y":2.04,"rotation":16.75,"width":91,"height":57}},"back_bracer":{"images/back_bracer":{"x":13.19,"y":-4.28,"rotation":-0.72,"width":77,"height":55}},"back_hand":{"images/back_hand":{"x":18.6,"y":4.23,"rotation":-10.99,"width":72,"height":68}},"back_knee":{"images/back_knee":{"x":45.77,"y":20.47,"rotation":74.22,"width":97,"height":134}},"back_thigh":{"images/back_thigh":{"x":37.85,"y":-4.36,"rotation":19.24,"width":78,"height":47}},"eyes_open":{"images/eyes_open":{"x":93.23,"y":-25.45,"rotation":-70.57,"width":93,"height":89}},"front_arm":{"images/front_arm":{"x":31.38,"y":5.09,"rotation":14.02,"width":96,"height":60}},"front_bracer":{"images/front_bracer":{"x":11.68,"y":-1.36,"rotation":-6.28,"width":81,"height":58}},"front_hand":{"images/front_hand":{"x":35.7,"y":7.84,"rotation":-13.96,"width":82,"height":75},"images/front_open_hand":{"x":42.54,"y":4.62,"rotation":62.19,"width":86,"height":87},"images/gun":{"x":98.9,"y":22.97,"rotation":56.34,"width":213,"height":206}},"front_thigh":{"images/front_thigh":{"x":45.7,"y":-3.1,"rotation":16.65,"width":114,"height":58}},"gun":{"images/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":{"images/head":{"x":132.33,"y":1.19,"rotation":-70.57,"width":271,"height":298}},"lower_leg":{"images/lower_leg":{"x":76.2,"y":22.2,"rotation":66.28,"width":146,"height":195}},"mouth_smile":{"images/mouth_smile":{"x":27.66,"y":-31.33,"rotation":-70.57,"width":93,"height":59}},"neck":{"images/neck":{"x":15.09,"y":-1.66,"rotation":-58.91,"width":36,"height":41}},"raptor_arm_back":{"images/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":[15,16,4,12,13,11,10,11,9,11,8,9,11,24,8,11,13,24,13,14,24,24,14,7,24,7,8,6,7,14,5,15,4,5,6,15,6,14,15,17,3,16,17,2,3,17,18,2,16,3,4,18,19,2,2,19,1,1,19,20,1,20,0,0,20,23,23,20,22,20,21,22],"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,"edges":[42,44,42,40,36,34,30,28,28,26,26,24,22,20,16,48,48,14,44,46,36,4,6,4,6,34,40,38,38,36,4,2,2,0,38,2,10,30,34,32,32,30,10,8,8,6,32,8,14,12,12,10,12,28,14,16,16,18,20,18,24,22,46,0],"width":163,"height":172}},"raptor_body":{"images/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":[12,58,52,12,69,44,44,68,45,11,12,44,45,11,44,10,11,45,56,24,25,26,56,25,61,26,27,61,56,26,23,24,56,23,56,61,55,61,27,22,23,61,22,61,55,21,22,55,90,27,28,55,27,90,60,28,29,90,28,60,89,60,29,90,21,55,20,21,90,60,20,90,19,20,60,19,60,89,33,59,32,32,91,31,30,31,54,32,59,91,89,29,30,89,30,54,31,91,54,15,91,59,18,19,89,16,54,91,54,18,89,18,54,17,91,15,16,16,17,54,58,34,35,34,53,33,35,52,58,34,58,53,13,14,53,59,53,14,58,13,53,13,58,12,33,53,59,14,15,59,36,37,52,36,52,35,69,52,37,38,69,37,51,69,38,51,38,39,12,52,69,44,69,51,64,43,0,49,42,43,1,82,83,63,64,0,63,0,84,0,83,84,83,0,1,76,83,82,76,84,83,75,84,76,75,76,77,65,64,63,81,78,77,82,81,77,75,77,78,82,88,81,80,75,78,1,88,82,64,49,43,49,64,65,79,80,78,80,84,75,85,80,79,85,84,80,88,87,86,88,86,81,85,86,87,41,42,49,84,62,63,63,62,65,84,74,62,66,65,62,49,65,66,85,74,84,74,85,87,72,66,62,72,62,74,3,72,74,57,41,49,57,49,66,67,57,66,72,67,66,73,67,72,88,1,2,87,88,2,74,87,2,3,74,2,3,73,72,4,73,3,73,57,67,4,57,73,4,5,70,57,4,70,57,40,41,70,40,57,48,40,70,5,48,70,6,48,5,71,48,6,50,68,40,48,50,40,71,50,48,7,71,6,47,71,7,50,71,47,8,47,7,46,50,47,46,47,8,45,50,46,68,51,39,68,39,40,44,51,68,45,68,50,9,46,8,45,46,9,10,45,9],"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,"edges":[22,20,20,18,18,16,6,4,4,2,86,84,50,48,48,46,24,22,24,88,88,22,88,90,90,20,90,92,92,18,92,94,94,16,12,96,96,80,98,84,98,86,80,100,100,90,94,100,76,102,102,88,72,104,104,24,68,106,106,28,62,108,108,34,54,110,110,42,50,112,112,46,84,82,82,80,114,98,82,114,8,6,114,8,24,26,26,28,104,116,116,106,26,116,68,70,70,72,116,70,28,30,106,118,30,118,66,68,118,66,38,120,120,58,42,44,44,46,110,122,122,112,44,122,50,52,52,54,122,52,124,126,126,128,128,130,132,98,130,132,132,134,76,78,78,80,100,136,136,102,78,136,72,74,74,76,102,138,138,104,74,138,8,10,10,12,96,140,140,114,10,140,12,14,14,16,94,142,142,96,14,142,6,144,144,132,8,146,146,134,144,146,6,148,144,148,124,148,0,86,0,2,150,152,152,154,154,156,156,158,158,160,160,150,162,164,164,166,0,168,168,148,166,168,168,170,170,172,172,162,148,174,174,176,176,2,58,60,60,62,108,178,178,120,60,178,34,36,36,38,178,36,54,56,56,58,110,180,180,120,56,180,38,40,40,42,180,40,62,64,64,66,108,182,182,118,64,182,30,32,32,34,182,32],"width":1219,"height":570}},"raptor_front_arm":{"images/raptor_front_arm":{"type":"skinnedmesh","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":[23,24,25,28,25,26,23,25,28,0,28,26,10,11,9,13,14,12,12,14,11,11,8,9,11,14,8,8,14,7,7,14,15,15,16,7,6,16,5,6,7,16,18,4,17,18,3,4,18,19,3,16,17,5,17,4,5,19,20,3,3,20,2,2,20,21,2,21,1,21,27,1,21,22,27,1,27,0,27,23,28,27,22,23,27,28,0],"vertices":[2,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,"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,0,54,54,44,54,42,44,46,46,48,50,56,56,54,46,56,56,52],"width":162,"height":203}},"raptor_front_leg":{"images/raptor_front_leg":{"type":"skinnedmesh","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,13,11,12,11,13,10,10,13,42,13,44,42,41,43,42,42,43,10,43,9,10,13,14,44,14,15,44,16,45,15,15,45,44,17,40,16,16,40,45,45,41,44,45,43,41,41,42,44,40,8,45,45,9,43,45,8,9,18,39,17,17,39,40,18,38,39,18,19,38,40,7,8,40,39,7,39,6,7,39,38,6,20,21,19,19,21,38,38,37,6,38,21,37,6,37,5,5,36,4,5,37,36,21,22,37,37,22,36,36,35,4,4,35,3,36,47,35,22,23,36,23,51,36,36,51,47,35,34,3,3,34,2,23,24,51,51,24,47,47,48,35,35,48,34,24,25,47,47,25,48,34,1,2,48,33,34,34,33,1,25,49,48,48,49,33,25,26,49,26,50,49,26,27,50,33,49,32,49,50,32,33,0,1,33,32,0,50,27,32,32,27,28,28,46,32,28,29,46,46,31,32,32,31,0,29,30,46],"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,"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,0,64,64,56,2,66,64,66,4,68,66,68,6,70,68,70,8,72,72,44,70,72,10,74,74,42,72,74,12,76,76,38,74,76,14,78,78,36,76,78,16,80,80,34,78,80,26,84,86,84,86,20,26,88,82,88,88,28,80,90,90,88,16,18,18,20,18,90,30,32,32,34,90,32,86,18,82,86,56,58,58,60,60,92,92,64,58,92,92,62,94,70,50,96,96,68,94,96,52,98,98,66,96,98,52,54,54,56,54,100,100,98,100,64,48,50,94,48,44,46,46,48,46,102,102,72,102,94],"width":382,"height":514}},"raptor_hindleg_back":{"images/raptor_hindleg_back":{"type":"skinnedmesh","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,47,12,15,13,14,15,12,13,16,47,15,47,11,12,18,45,46,17,47,16,18,46,17,47,46,10,17,46,47,47,10,11,46,9,10,45,18,19,44,45,20,20,45,19,20,21,44,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,40,29,39,24,42,22,7,42,6,40,39,4,28,29,40,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,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,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,"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,0,72,72,64,68,72,2,74,74,62,72,74,4,76,76,60,74,76,6,78,78,58,76,78,8,80,80,56,78,80,10,82,82,52,80,82,12,84,84,48,82,84,14,86,86,44,84,86,16,88,88,40,86,88,18,90,90,38,88,90,20,92,92,36,90,92,92,94,94,22,94,32,30,24,94,24],"width":338,"height":429}},"raptor_horn":{"images/raptor_horn":{"x":156.2,"y":74.1,"rotation":-137.26,"width":363,"height":159}},"raptor_horn_back":{"images/raptor_horn_back":{"x":121.42,"y":83.01,"rotation":-132.21,"width":351,"height":153}},"raptor_jaw":{"images/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":[11,14,15,14,0,1,5,3,4,6,3,5,2,15,1,7,2,3,7,3,6,15,8,10,15,2,8,8,9,10,2,7,8,15,14,1,10,11,15,14,13,0,14,12,13,11,12,14],"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,"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,28,30,30,20,22,28,28,0,30,2],"width":305,"height":286}},"raptor_saddle_noshadow":{"images/raptor_saddle_noshadow":{"x":80.83,"y":10.63,"rotation":-88.64,"width":326,"height":375}},"raptor_saddle_strap_front":{"images/raptor_saddle_strap_front":{"x":128.83,"y":-4.71,"rotation":61.29,"width":114,"height":189}},"raptor_saddle_strap_rear":{"images/raptor_saddle_strap_rear":{"type":"skinnedmesh","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,20,21,4,15,16,20,22,20,5,5,20,4,14,15,22,22,15,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,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,"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,0,42,42,40,32,42,4,6,6,8,42,6,26,28,28,30,38,44,44,40,28,44,8,10,10,12,44,10],"width":108,"height":148}},"raptor_saddle_w_shadow":{"images/raptor_saddle_w_shadow":{"x":80.83,"y":10.63,"rotation":-88.64,"width":326,"height":375}},"raptor_tongue":{"images/raptor_tongue":{"type":"skinnedmesh","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":[7,8,3,6,7,3,4,6,3,6,4,5,8,7,6,9,1,2,8,9,2,9,10,1,8,2,3,0,11,12,0,12,13,10,11,0,1,10,0],"vertices":[2,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,"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":{"images/torso":{"x":55.88,"y":4.86,"rotation":-104.14,"width":108,"height":182}},"stirrup_back":{"images/stirrup_back":{"x":53.2,"y":31.34,"rotation":-21.12,"width":87,"height":69}},"stirrup_front":{"images/stirrup_front":{"x":36.13,"y":20.39,"rotation":-21.12,"width":89,"height":100}},"stirrup_strap":{"images/stirrup_strap":{"type":"skinnedmesh","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":[7,5,6,7,4,5,7,8,4,8,3,4,8,9,3,9,2,3,9,10,2,2,10,1,10,11,1,11,12,1,13,16,12,12,0,1,12,16,0,16,15,0,13,14,16,16,14,15],"vertices":[2,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,"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":{"images/visor":{"x":99.13,"y":6.51,"rotation":-70.57,"width":261,"height":168}}}},"animations":{"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,"curve":"stepped"},{"time":1.0666,"angle":27.07}],"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":-45.71,"curve":"stepped"},{"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,"curve":"stepped"},{"time":1.0666,"angle":-347.28}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.0666,"x":0,"y":0}]},"rear_leg2":{"rotate":[{"time":0,"angle":9.92,"curve":"stepped"},{"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":-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}],"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}]},"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":-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}],"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}]},"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":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}],"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}]},"front_foot2":{"rotate":[{"time":0,"angle":44.18},{"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}],"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":-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}],"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}]},"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":27.59},{"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":27.59},{"time":1.0666,"angle":27.59}],"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}]}},"ffd":{"default":{"raptor_body":{"images/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]},{"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]},{"time":1.0666}]},"raptor_front_leg":{"images/raptor_front_leg":[{"time":0,"curve":"stepped"},{"time":0.2666},{"time":0.5333,"offset":216,"vertices":[-2.23,21.95,21.54,-4.75]},{"time":0.6,"offset":216,"vertices":[7.17,15.14,15.26,-6.91]},{"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]},{"time":0.8,"curve":"stepped"},{"time":0.9666,"curve":"stepped"},{"time":1.0666}]}}}}}} \ No newline at end of file +{ +"skeleton": { "hash": "r3IJRaLbaxgEoW1YBAOrYT69jB4", "spine": "Dev", "width": 1224.2, "height": 1052.38 }, +"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": "gun", + "parent": "spineboy_hip", + "length": 181.35, + "x": 16.86, + "y": -7.89, + "scaleX": 0.816, + "scaleY": 0.816, + "rotation": 107.11 + }, + { "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, + "x": 57.78, + "y": -0.02, + "scaleX": 0.73, + "scaleY": 0.823, + "rotation": -0.46, + "inheritRotation": false + }, + { "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, + "x": 49.71, + "y": 20.65, + "scaleX": 1.154, + "rotation": -3.16, + "inheritRotation": false + }, + { "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_hand2", + "parent": "front_bracer", + "length": 58.18, + "x": 39.98, + "y": -0.89, + "rotation": 13.9, + "inheritRotation": false + }, + { "name": "tongue3", "parent": "tongue2", "length": 43.64, "x": 44.26, "y": -0.2, "rotation": 12.86 } +], +"ik": [ + { + "name": "front_leg_goal", + "bones": [ "front_leg1", "front_leg2" ], + "target": "front_leg_goal", + "bendPositive": false + }, + { + "name": "rear_leg_goal", + "bones": [ "rear_leg1", "rear_leg2" ], + "target": "rear_leg_goal", + "bendPositive": false + }, + { + "name": "front_foot_goal", + "bones": [ "front_leg3", "front_foot1" ], + "target": "front_foot_goal" + }, + { + "name": "rear_foot_goal", + "bones": [ "rear_leg3", "rear_foot1" ], + "target": "rear_foot_goal" + }, + { + "name": "stirrup", + "bones": [ "stirrup_strap1", "stirrup_strap2" ], + "target": "stirrup" + }, + { + "name": "spineboy_rear_leg_goal", + "bones": [ "back_thigh", "back_knee" ], + "target": "spineboy_rear_arm_goal", + "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" + } +], +"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" } +], +"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": [ 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 ], + "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 + } + }, + "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": "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 + } + }, + "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 + } + }, + "raptor_front_arm": { + "raptor_front_arm": { + "type": "skinnedmesh", + "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 + } + }, + "raptor_front_leg": { + "raptor_front_leg": { + "type": "skinnedmesh", + "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 + } + }, + "raptor_hindleg_back": { + "raptor_hindleg_back": { + "type": "skinnedmesh", + "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 + } + }, + "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": "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 + } + }, + "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": "skinnedmesh", + "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 + } + }, + "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": "skinnedmesh", + "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 + } + }, + "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": "skinnedmesh", + "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 + } + }, + "visor": { + "visor": { "x": 99.13, "y": 6.51, "rotation": -70.57, "width": 261, "height": 168 } + } + } +}, +"animations": { + "empty": {}, + "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": 1, + "bendPositive": true, + "curve": [ 0.317, 0.13, 0.781, 0.56 ] + }, + { "time": 0.1333, "mix": 0, "bendPositive": true } + ] + } + }, + "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": 0.5333, "angle": -41.93 }, + { "time": 0.6333, "angle": -16.71 }, + { "time": 0.7333, "angle": 16.92 }, + { "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": 0.1, "angle": -45.79 }, + { "time": 0.1666, "angle": -19.95 }, + { "time": 0.4, "angle": 35.36 }, + { "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": 0.5333, "angle": -346.78 }, + { "time": 0.6333, "angle": -398.52 }, + { "time": 0.7333, "angle": -393.21 }, + { "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": 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": [ + { "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": -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 } + ], + "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 } + ] + }, + "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": -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 } + ], + "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 } + ] + }, + "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": 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 } + ], + "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 } + ] + }, + "front_foot2": { + "rotate": [ + { "time": 0, "angle": 44.18 }, + { "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 } + ], + "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": -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 } + ], + "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 } + ] + }, + "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": 27.59 }, + { "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": 27.59 }, + { "time": 1.0666, "angle": 27.59 } + ], + "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 } + ] + } + }, + "ffd": { + "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 ] + }, + { "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 ] + }, + { "time": 1.0666 } + ] + }, + "raptor_front_leg": { + "raptor_front_leg": [ + { "time": 0, "curve": "stepped" }, + { "time": 0.2666 }, + { + "time": 0.5333, + "offset": 216, + "vertices": [ -2.23, 21.95, 21.54, -4.75 ] + }, + { + "time": 0.6, + "offset": 216, + "vertices": [ 7.17, 15.14, 15.26, -6.91 ] + }, + { + "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 ] + }, + { "time": 0.8, "curve": "stepped" }, + { "time": 0.9666, "curve": "stepped" }, + { "time": 1.0666 } + ] + } + } + } + } +} +} \ No newline at end of file diff --git a/spine-unity/Assets/Examples/Spine/raptor.prefab b/spine-unity/Assets/Examples/Spine/raptor.prefab new file mode 100644 index 000000000..50ff3a22e Binary files /dev/null and b/spine-unity/Assets/Examples/Spine/raptor.prefab differ diff --git a/spine-unity/Assets/Examples/Spine/raptor.prefab.meta b/spine-unity/Assets/Examples/Spine/raptor.prefab.meta new file mode 100644 index 000000000..80943ffd6 --- /dev/null +++ b/spine-unity/Assets/Examples/Spine/raptor.prefab.meta @@ -0,0 +1,4 @@ +fileFormatVersion: 2 +guid: 8179ddd20a15b8d4f85e42a9c6b3b319 +NativeFormatImporter: + userData: diff --git a/spine-unity/Assets/spine-unity/SkeletonRenderer.cs b/spine-unity/Assets/spine-unity/SkeletonRenderer.cs index dd8eea25b..56d475131 100644 --- a/spine-unity/Assets/spine-unity/SkeletonRenderer.cs +++ b/spine-unity/Assets/spine-unity/SkeletonRenderer.cs @@ -193,14 +193,14 @@ public class SkeletonRenderer : MonoBehaviour { Color32[] colors = this.colors; int vertexIndex = 0; Color32 color = new Color32(); - float x = skeleton.x, y = skeleton.y, zSpacing = this.zSpacing; + float zSpacing = this.zSpacing; float a = skeleton.a * 255, r = skeleton.r, g = skeleton.g, b = skeleton.b; for (int i = 0; i < drawOrderCount; i++) { Slot slot = drawOrder[i]; Attachment attachment = slot.attachment; if (attachment is RegionAttachment) { RegionAttachment regionAttachment = (RegionAttachment)attachment; - regionAttachment.ComputeWorldVertices(x, y, slot.bone, tempVertices); + regionAttachment.ComputeWorldVertices(slot.bone, tempVertices); float z = i * zSpacing; vertices[vertexIndex] = new Vector3(tempVertices[RegionAttachment.X1], tempVertices[RegionAttachment.Y1], z); @@ -231,7 +231,7 @@ public class SkeletonRenderer : MonoBehaviour { MeshAttachment meshAttachment = (MeshAttachment)attachment; int meshVertexCount = meshAttachment.vertices.Length; if (tempVertices.Length < meshVertexCount) tempVertices = new float[meshVertexCount]; - meshAttachment.ComputeWorldVertices(x, y, slot, tempVertices); + meshAttachment.ComputeWorldVertices(slot, tempVertices); color.a = (byte)(a * slot.a * meshAttachment.a); color.r = (byte)(r * slot.r * meshAttachment.r * color.a); @@ -250,7 +250,7 @@ public class SkeletonRenderer : MonoBehaviour { SkinnedMeshAttachment meshAttachment = (SkinnedMeshAttachment)attachment; int meshVertexCount = meshAttachment.uvs.Length; if (tempVertices.Length < meshVertexCount) tempVertices = new float[meshVertexCount]; - meshAttachment.ComputeWorldVertices(x, y, slot, tempVertices); + meshAttachment.ComputeWorldVertices(slot, tempVertices); color.a = (byte)(a * slot.a * meshAttachment.a); color.r = (byte)(r * slot.r * meshAttachment.r * color.a); diff --git a/spine-xna/example/data/raptor.atlas b/spine-xna/example/data/raptor.atlas index 560d3d48c..c90da0078 100644 --- a/spine-xna/example/data/raptor.atlas +++ b/spine-xna/example/data/raptor.atlas @@ -4,245 +4,245 @@ size: 1022,1022 format: RGBA8888 filter: Linear,Linear repeat: none -images/back_arm +back_arm rotate: false xy: 410, 545 size: 46, 29 orig: 46, 29 offset: 0, 0 index: -1 -images/back_bracer +back_bracer rotate: false xy: 540, 548 size: 39, 28 orig: 39, 28 offset: 0, 0 index: -1 -images/back_hand +back_hand rotate: true xy: 504, 538 size: 36, 34 orig: 36, 34 offset: 0, 0 index: -1 -images/back_knee +back_knee rotate: false xy: 299, 478 size: 49, 67 orig: 49, 67 offset: 0, 0 index: -1 -images/back_thigh +back_thigh rotate: true xy: 140, 247 size: 39, 24 orig: 39, 24 offset: 0, 0 index: -1 -images/eyes_open +eyes_open rotate: true xy: 2, 2 size: 47, 45 orig: 47, 45 offset: 0, 0 index: -1 -images/front_arm +front_arm rotate: false xy: 360, 544 size: 48, 30 orig: 48, 30 offset: 0, 0 index: -1 -images/front_bracer +front_bracer rotate: false xy: 538, 578 size: 41, 29 orig: 41, 29 offset: 0, 0 index: -1 -images/front_hand +front_hand rotate: false xy: 538, 609 size: 41, 38 orig: 41, 38 offset: 0, 0 index: -1 -images/front_open_hand +front_open_hand rotate: false xy: 894, 782 size: 43, 44 orig: 43, 44 offset: 0, 0 index: -1 -images/front_thigh +front_thigh rotate: false xy: 942, 849 size: 57, 29 orig: 57, 29 offset: 0, 0 index: -1 -images/gun +gun rotate: false xy: 785, 774 size: 107, 103 orig: 107, 103 offset: 0, 0 index: -1 -images/gun_nohand +gun_nohand rotate: false xy: 614, 703 size: 105, 102 orig: 105, 102 offset: 0, 0 index: -1 -images/head +head rotate: false xy: 2, 137 size: 136, 149 orig: 136, 149 offset: 0, 0 index: -1 -images/lower_leg +lower_leg rotate: true xy: 780, 699 size: 73, 98 orig: 73, 98 offset: 0, 0 index: -1 -images/mouth_smile +mouth_smile rotate: true xy: 49, 2 size: 47, 30 orig: 47, 30 offset: 0, 0 index: -1 -images/neck +neck rotate: true xy: 1001, 860 size: 18, 21 orig: 18, 21 offset: 0, 0 index: -1 -images/raptor_arm_back +raptor_arm_back rotate: false xy: 940, 936 size: 82, 86 orig: 82, 86 offset: 0, 0 index: -1 -images/raptor_body +raptor_body rotate: false xy: 2, 737 size: 610, 285 orig: 610, 285 offset: 0, 0 index: -1 -images/raptor_front_arm +raptor_front_arm rotate: true xy: 195, 464 size: 81, 102 orig: 81, 102 offset: 0, 0 index: -1 -images/raptor_front_leg +raptor_front_leg rotate: false xy: 2, 478 size: 191, 257 orig: 191, 257 offset: 0, 0 index: -1 -images/raptor_hindleg_back +raptor_hindleg_back rotate: false xy: 614, 807 size: 169, 215 orig: 169, 215 offset: 0, 0 index: -1 -images/raptor_horn +raptor_horn rotate: false xy: 360, 655 size: 182, 80 orig: 182, 80 offset: 0, 0 index: -1 -images/raptor_horn_back +raptor_horn_back rotate: false xy: 360, 576 size: 176, 77 orig: 176, 77 offset: 0, 0 index: -1 -images/raptor_jaw +raptor_jaw rotate: false xy: 785, 879 size: 153, 143 orig: 153, 143 offset: 0, 0 index: -1 -images/raptor_saddle_noshadow +raptor_saddle_noshadow rotate: false xy: 2, 288 size: 163, 188 orig: 163, 188 offset: 0, 0 index: -1 -images/raptor_saddle_strap_front +raptor_saddle_strap_front rotate: false xy: 721, 710 size: 57, 95 orig: 57, 95 offset: 0, 0 index: -1 -images/raptor_saddle_strap_rear +raptor_saddle_strap_rear rotate: true xy: 940, 880 size: 54, 74 orig: 54, 74 offset: 0, 0 index: -1 -images/raptor_saddle_w_shadow +raptor_saddle_w_shadow rotate: false xy: 195, 547 size: 163, 188 orig: 163, 188 offset: 0, 0 index: -1 -images/raptor_tongue +raptor_tongue rotate: true xy: 544, 649 size: 86, 64 orig: 86, 64 offset: 0, 0 index: -1 -images/stirrup_back +stirrup_back rotate: false xy: 458, 539 size: 44, 35 orig: 44, 35 offset: 0, 0 index: -1 -images/stirrup_front +stirrup_front rotate: true xy: 81, 4 size: 45, 50 orig: 45, 50 offset: 0, 0 index: -1 -images/stirrup_strap +stirrup_strap rotate: true xy: 894, 828 size: 49, 46 orig: 49, 46 offset: 0, 0 index: -1 -images/torso +torso rotate: true xy: 610, 647 size: 54, 91 orig: 54, 91 offset: 0, 0 index: -1 -images/visor +visor rotate: false xy: 2, 51 size: 131, 84 diff --git a/spine-xna/example/data/raptor.json b/spine-xna/example/data/raptor.json index 37324b094..df9892de6 100644 --- a/spine-xna/example/data/raptor.json +++ b/spine-xna/example/data/raptor.json @@ -1 +1,1333 @@ -{"skeleton":{"spine":"Dev","hash":"gpnuCmS4cM+VWprF3iClFQcYxeQ","width":1243.46,"height":1062.38},"bones":[{"name":"root"},{"name":"front_foot_goal","parent":"root","x":-45.79,"y":-28.67,"rotation":-0.94,"color":"ff0000ff"},{"name":"hip","parent":"root","x":-136.78,"y":415.47,"rotation":3.15,"color":"fbff00ff"},{"name":"rear_foot_goal","parent":"root","x":33.43,"y":30.81,"color":"ff0000ff"},{"name":"front_leg1","parent":"hip","length":251.74,"x":27.36,"y":-28.27,"rotation":-51.5,"color":"15ff00ff"},{"name":"front_leg_goal","parent":"front_foot_goal","x":-106.06,"y":115.58,"color":"ff0000ff"},{"name":"rear_leg1","parent":"hip","length":226.27,"x":55.19,"y":-71.25,"rotation":-54.76,"color":"e07800ff"},{"name":"rear_leg_goal","parent":"rear_foot_goal","x":-127.51,"y":75.99,"color":"ff0000ff"},{"name":"tail1","parent":"hip","length":162.53,"x":-20.86,"y":6.87,"rotation":162.92,"color":"eaff00ff"},{"name":"torso1","parent":"hip","length":126.25,"x":30.03,"y":-0.4,"rotation":-4.97,"color":"eaff00ff"},{"name":"front_leg2","parent":"front_leg1","length":208.54,"x":251.03,"y":0.16,"rotation":261.93,"color":"15ff00ff"},{"name":"rear_leg2","parent":"rear_leg1","length":172.58,"x":226.32,"y":0.23,"rotation":-92.25,"color":"e07800ff"},{"name":"saddle","parent":"torso1","length":50.91,"x":4.56,"y":71.86,"rotation":91.8,"color":"ff7300ff"},{"name":"tail2","parent":"tail1","length":130.02,"x":162.53,"y":-0.82,"rotation":30.3,"color":"eaff00ff"},{"name":"torso2","parent":"torso1","length":121.2,"x":126.25,"y":-0.37,"rotation":39.84,"color":"eaff00ff"},{"name":"front_arm1","parent":"torso2","length":109.99,"x":46.37,"y":-84.61,"rotation":224.54,"color":"15ff00ff"},{"name":"front_leg3","parent":"front_leg2","length":118.18,"x":208.5,"y":-1.63,"rotation":85.46,"color":"15ff00ff"},{"name":"neck","parent":"torso2","length":70.59,"x":121.19,"y":0.34,"rotation":41.37,"color":"eaff00ff"},{"name":"rear_arm1","parent":"torso2","length":109.56,"x":57.05,"y":-95.38,"rotation":-124.71,"color":"e07800ff"},{"name":"rear_leg3","parent":"rear_leg2","length":103.05,"x":172.31,"y":2.21,"rotation":82.81,"color":"e07800ff"},{"name":"saddle_strap_front1","parent":"saddle","length":97.27,"x":-27.36,"y":-73.38,"rotation":-148.11,"color":"ff7300ff"},{"name":"saddle_strap_rear1","parent":"saddle","length":38.62,"x":-33.34,"y":87.32,"rotation":151.13,"color":"ff7300ff"},{"name":"spineboy_front_arm_goal","parent":"saddle","x":-50.7,"y":-96.93,"color":"ff0004ff"},{"name":"spineboy_hip","parent":"saddle","length":0.52,"x":81.88,"y":2.68,"rotation":90.01,"color":"ffffffff"},{"name":"spineboy_rear_arm_goal","parent":"saddle","x":-30.43,"y":-100.08,"color":"ff0001ff"},{"name":"stirrup","parent":"saddle","length":78.17,"x":-81.94,"y":-103.38,"rotation":-68.85,"color":"ff7300ff"},{"name":"stirrup_strap1","parent":"saddle","length":43.69,"x":-20.38,"y":-29.37,"rotation":-135,"color":"ff7300ff"},{"name":"tail3","parent":"tail2","length":141.06,"x":130.02,"y":0.1,"rotation":6.88,"color":"eaff00ff"},{"name":"back_thigh","parent":"spineboy_hip","length":71.15,"x":-9.57,"y":2.31,"rotation":160.75,"color":"ffffffff"},{"name":"front_arm2","parent":"front_arm1","length":86.33,"x":109.99,"y":0.2,"rotation":105.23,"color":"15ff00ff"},{"name":"front_foot1","parent":"front_leg3","length":57.79,"x":118.19,"y":-0.79,"scaleX":1.126,"rotation":54.46,"color":"15ff00ff"},{"name":"front_thigh","parent":"spineboy_hip","length":77.79,"x":15.51,"y":17.01,"rotation":163.34,"color":"ffffffff"},{"name":"gun","parent":"spineboy_hip","length":181.35,"x":16.86,"y":-7.89,"scaleX":0.816,"scaleY":0.816,"rotation":107.11,"color":"ffffffff"},{"name":"head","parent":"neck","length":105.5,"x":70.59,"y":0.03,"rotation":9.82,"color":"eaff00ff"},{"name":"rear_arm2","parent":"rear_arm1","length":85.8,"x":109.56,"rotation":123.56,"color":"e07800ff"},{"name":"rear_foot1","parent":"rear_leg3","length":84.51,"x":102.37,"y":-0.02,"rotation":75.43,"color":"e07800ff"},{"name":"saddle_strap_front2","parent":"saddle_strap_front1","length":102.74,"x":97.29,"y":0.3,"rotation":-11.13,"color":"ff7300ff"},{"name":"saddle_strap_rear2","parent":"saddle_strap_rear1","length":54.36,"x":38.63,"y":-0.02,"color":"ff7300ff"},{"name":"spineboy_torso","parent":"spineboy_hip","length":122.45,"x":1.05,"y":-2.1,"rotation":-75.85,"color":"ffffffff"},{"name":"stirrup_strap2","parent":"stirrup_strap1","length":51.62,"x":43.7,"rotation":9.38,"color":"ff7300ff"},{"name":"tail4","parent":"tail3","length":126.25,"x":141.05,"y":0.64,"rotation":-18.86,"color":"eaff00ff"},{"name":"back_arm","parent":"spineboy_torso","length":67.21,"x":96.33,"y":-38.46,"rotation":-120.89,"color":"ffffffff"},{"name":"back_knee","parent":"back_thigh","length":97.17,"x":71.15,"y":-0.28,"rotation":-54.97,"color":"ffffffff"},{"name":"front_arm","parent":"spineboy_torso","length":74.51,"x":101.37,"y":9.78,"rotation":-118.16,"color":"ffffffff"},{"name":"front_foot2","parent":"front_foot1","length":56.19,"x":57.78,"y":-0.02,"scaleX":0.73,"scaleY":0.823,"rotation":-0.46,"inheritRotation":false,"color":"15ff00ff"},{"name":"front_hand","parent":"front_arm2","length":47.55,"x":86.33,"y":0.06,"rotation":-56.83,"color":"15ff00ff"},{"name":"horn_front","parent":"head","length":87.48,"x":82.09,"y":-221.36,"rotation":49.36,"color":"15ff00ff"},{"name":"horn_rear","parent":"head","length":73.78,"x":99.27,"y":-226.79,"rotation":44.31,"color":"e07800ff"},{"name":"jaw","parent":"head","length":203.76,"x":29.36,"y":-40.15,"rotation":-140.14,"inheritScale":false,"color":"ffff00ff"},{"name":"lower_leg","parent":"front_thigh","length":111.5,"x":77.92,"y":-0.1,"rotation":-49.62,"color":"ffffffff"},{"name":"neck2","parent":"spineboy_torso","length":32.04,"x":113.44,"y":-15.21,"rotation":-45.22,"color":"ffffffff"},{"name":"rear_foot2","parent":"rear_foot1","length":102.31,"x":84.49,"y":-0.34,"rotation":-6.13,"inheritRotation":false,"color":"e07800ff"},{"name":"rear_hand","parent":"rear_arm2","length":45.8,"x":85.8,"y":0.1,"rotation":-76.28,"color":"e07800ff"},{"name":"saddle_strap_rear3","parent":"saddle_strap_rear2","length":44.04,"x":54.86,"y":0.19,"rotation":3.63,"color":"ff7300ff"},{"name":"tail5","parent":"tail4","length":91.06,"x":126.25,"y":-0.47,"rotation":-22.34,"color":"eaff00ff"},{"name":"tongue1","parent":"head","length":55.11,"x":20.81,"y":-104.75,"rotation":-129.04,"color":"ffff00ff"},{"name":"back_bracer","parent":"back_arm","length":43.68,"x":67.21,"y":-0.31,"rotation":17.48,"color":"ffffffff"},{"name":"bone","parent":"horn_front","x":294.58,"y":234.17,"rotation":-138.59,"color":"15ff00ff"},{"name":"bone2","parent":"horn_rear","x":232.68,"y":245.84,"rotation":-133.55,"color":"e07800ff"},{"name":"front_bracer","parent":"front_arm","length":39.85,"x":74.52,"y":-0.41,"rotation":20.3,"color":"ffffffff"},{"name":"front_foot3","parent":"front_foot2","length":129.88,"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,"color":"ffffffff"},{"name":"tongue2","parent":"tongue1","length":44.66,"x":55.59,"y":0.93,"rotation":8.93,"color":"fff200ff"},{"name":"back_hand","parent":"back_bracer","length":41.97,"x":43.68,"y":0.06,"rotation":9.2,"inheritRotation":false,"color":"ffffffff"},{"name":"front_hand2","parent":"front_bracer","length":58.18,"x":39.98,"y":-0.89,"rotation":13.9,"inheritRotation":false,"color":"ffffffff"},{"name":"tongue3","parent":"tongue2","length":43.64,"x":44.26,"y":-0.2,"rotation":12.86,"color":"fff200ff"}],"ik":[{"name":"front_leg_goal","bones":["front_leg1","front_leg2"],"target":"front_leg_goal","bendPositive":false},{"name":"rear_leg_goal","bones":["rear_leg1","rear_leg2"],"target":"rear_leg_goal","bendPositive":false},{"name":"front_foot_goal","bones":["front_leg3","front_foot1"],"target":"front_foot_goal"},{"name":"rear_foot_goal","bones":["rear_leg3","rear_foot1"],"target":"rear_foot_goal"},{"name":"stirrup","bones":["stirrup_strap1","stirrup_strap2"],"target":"stirrup"},{"name":"spineboy_rear_leg_goal","bones":["back_thigh","back_knee"],"target":"spineboy_rear_arm_goal","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"}],"slots":[{"name":"back_hand","bone":"back_hand","attachment":"images/back_hand"},{"name":"back_arm","bone":"back_arm","attachment":"images/back_arm"},{"name":"back_bracer","bone":"back_bracer","attachment":"images/back_bracer"},{"name":"back_knee","bone":"back_knee","attachment":"images/back_knee"},{"name":"raptor_horn_back","bone":"horn_rear","attachment":"images/raptor_horn_back"},{"name":"raptor_tongue","bone":"root","attachment":"images/raptor_tongue"},{"name":"raptor_hindleg_back","bone":"rear_leg1","attachment":"images/raptor_hindleg_back"},{"name":"raptor_arm_back","bone":"root","attachment":"images/raptor_arm_back"},{"name":"raptor_body","bone":"torso1","attachment":"images/raptor_body"},{"name":"back_thigh","bone":"back_thigh","attachment":"images/back_thigh"},{"name":"raptor_saddle_strap_front","bone":"saddle_strap_front1","attachment":"images/raptor_saddle_strap_front"},{"name":"raptor_saddle_strap_rear","bone":"saddle_strap_rear1","attachment":"images/raptor_saddle_strap_rear"},{"name":"raptor_saddle_w_shadow","bone":"saddle","attachment":"images/raptor_saddle_w_shadow"},{"name":"raptor_saddle_noshadow","bone":"saddle"},{"name":"raptor_front_arm","bone":"root","attachment":"images/raptor_front_arm"},{"name":"raptor_front_leg","bone":"front_leg1","attachment":"images/raptor_front_leg"},{"name":"raptor_jaw","bone":"jaw","attachment":"images/raptor_jaw"},{"name":"neck","bone":"neck2","attachment":"images/neck"},{"name":"spineboy_torso","bone":"spineboy_torso","attachment":"images/torso"},{"name":"head","bone":"head2","attachment":"images/head"},{"name":"eyes_open","bone":"head2","attachment":"images/eyes_open"},{"name":"mouth_smile","bone":"head2","attachment":"images/mouth_smile"},{"name":"visor","bone":"head2","attachment":"images/visor"},{"name":"raptor_horn","bone":"horn_front","attachment":"images/raptor_horn"},{"name":"front_thigh","bone":"front_thigh","attachment":"images/front_thigh"},{"name":"stirrup_back","bone":"stirrup","attachment":"images/stirrup_back"},{"name":"lower_leg","bone":"lower_leg","attachment":"images/lower_leg"},{"name":"stirrup_strap","bone":"stirrup","attachment":"images/stirrup_strap"},{"name":"stirrup_front","bone":"stirrup","attachment":"images/stirrup_front"},{"name":"gun","bone":"gun","attachment":"images/gun_nohand"},{"name":"front_arm","bone":"front_arm","attachment":"images/front_arm"},{"name":"front_bracer","bone":"front_bracer","attachment":"images/front_bracer"},{"name":"front_hand","bone":"front_hand2","attachment":"images/front_hand"}],"skins":{"default":{"back_arm":{"images/back_arm":{"x":29.71,"y":2.04,"rotation":16.75,"width":91,"height":57}},"back_bracer":{"images/back_bracer":{"x":13.19,"y":-4.28,"rotation":-0.72,"width":77,"height":55}},"back_hand":{"images/back_hand":{"x":18.6,"y":4.23,"rotation":-10.99,"width":72,"height":68}},"back_knee":{"images/back_knee":{"x":45.77,"y":20.47,"rotation":74.22,"width":97,"height":134}},"back_thigh":{"images/back_thigh":{"x":37.85,"y":-4.36,"rotation":19.24,"width":78,"height":47}},"eyes_open":{"images/eyes_open":{"x":93.23,"y":-25.45,"rotation":-70.57,"width":93,"height":89}},"front_arm":{"images/front_arm":{"x":31.38,"y":5.09,"rotation":14.02,"width":96,"height":60}},"front_bracer":{"images/front_bracer":{"x":11.68,"y":-1.36,"rotation":-6.28,"width":81,"height":58}},"front_hand":{"images/front_hand":{"x":35.7,"y":7.84,"rotation":-13.96,"width":82,"height":75},"images/front_open_hand":{"x":42.54,"y":4.62,"rotation":62.19,"width":86,"height":87},"images/gun":{"x":98.9,"y":22.97,"rotation":56.34,"width":213,"height":206}},"front_thigh":{"images/front_thigh":{"x":45.7,"y":-3.1,"rotation":16.65,"width":114,"height":58}},"gun":{"images/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":{"images/head":{"x":132.33,"y":1.19,"rotation":-70.57,"width":271,"height":298}},"lower_leg":{"images/lower_leg":{"x":76.2,"y":22.2,"rotation":66.28,"width":146,"height":195}},"mouth_smile":{"images/mouth_smile":{"x":27.66,"y":-31.33,"rotation":-70.57,"width":93,"height":59}},"neck":{"images/neck":{"x":15.09,"y":-1.66,"rotation":-58.91,"width":36,"height":41}},"raptor_arm_back":{"images/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":[15,16,4,12,13,11,10,11,9,11,8,9,11,24,8,11,13,24,13,14,24,24,14,7,24,7,8,6,7,14,5,15,4,5,6,15,6,14,15,17,3,16,17,2,3,17,18,2,16,3,4,18,19,2,2,19,1,1,19,20,1,20,0,0,20,23,23,20,22,20,21,22],"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,"edges":[42,44,42,40,36,34,30,28,28,26,26,24,22,20,16,48,48,14,44,46,36,4,6,4,6,34,40,38,38,36,4,2,2,0,38,2,10,30,34,32,32,30,10,8,8,6,32,8,14,12,12,10,12,28,14,16,16,18,20,18,24,22,46,0],"width":163,"height":172}},"raptor_body":{"images/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":[12,58,52,12,69,44,44,68,45,11,12,44,45,11,44,10,11,45,56,24,25,26,56,25,61,26,27,61,56,26,23,24,56,23,56,61,55,61,27,22,23,61,22,61,55,21,22,55,90,27,28,55,27,90,60,28,29,90,28,60,89,60,29,90,21,55,20,21,90,60,20,90,19,20,60,19,60,89,33,59,32,32,91,31,30,31,54,32,59,91,89,29,30,89,30,54,31,91,54,15,91,59,18,19,89,16,54,91,54,18,89,18,54,17,91,15,16,16,17,54,58,34,35,34,53,33,35,52,58,34,58,53,13,14,53,59,53,14,58,13,53,13,58,12,33,53,59,14,15,59,36,37,52,36,52,35,69,52,37,38,69,37,51,69,38,51,38,39,12,52,69,44,69,51,64,43,0,49,42,43,1,82,83,63,64,0,63,0,84,0,83,84,83,0,1,76,83,82,76,84,83,75,84,76,75,76,77,65,64,63,81,78,77,82,81,77,75,77,78,82,88,81,80,75,78,1,88,82,64,49,43,49,64,65,79,80,78,80,84,75,85,80,79,85,84,80,88,87,86,88,86,81,85,86,87,41,42,49,84,62,63,63,62,65,84,74,62,66,65,62,49,65,66,85,74,84,74,85,87,72,66,62,72,62,74,3,72,74,57,41,49,57,49,66,67,57,66,72,67,66,73,67,72,88,1,2,87,88,2,74,87,2,3,74,2,3,73,72,4,73,3,73,57,67,4,57,73,4,5,70,57,4,70,57,40,41,70,40,57,48,40,70,5,48,70,6,48,5,71,48,6,50,68,40,48,50,40,71,50,48,7,71,6,47,71,7,50,71,47,8,47,7,46,50,47,46,47,8,45,50,46,68,51,39,68,39,40,44,51,68,45,68,50,9,46,8,45,46,9,10,45,9],"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,"edges":[22,20,20,18,18,16,6,4,4,2,86,84,50,48,48,46,24,22,24,88,88,22,88,90,90,20,90,92,92,18,92,94,94,16,12,96,96,80,98,84,98,86,80,100,100,90,94,100,76,102,102,88,72,104,104,24,68,106,106,28,62,108,108,34,54,110,110,42,50,112,112,46,84,82,82,80,114,98,82,114,8,6,114,8,24,26,26,28,104,116,116,106,26,116,68,70,70,72,116,70,28,30,106,118,30,118,66,68,118,66,38,120,120,58,42,44,44,46,110,122,122,112,44,122,50,52,52,54,122,52,124,126,126,128,128,130,132,98,130,132,132,134,76,78,78,80,100,136,136,102,78,136,72,74,74,76,102,138,138,104,74,138,8,10,10,12,96,140,140,114,10,140,12,14,14,16,94,142,142,96,14,142,6,144,144,132,8,146,146,134,144,146,6,148,144,148,124,148,0,86,0,2,150,152,152,154,154,156,156,158,158,160,160,150,162,164,164,166,0,168,168,148,166,168,168,170,170,172,172,162,148,174,174,176,176,2,58,60,60,62,108,178,178,120,60,178,34,36,36,38,178,36,54,56,56,58,110,180,180,120,56,180,38,40,40,42,180,40,62,64,64,66,108,182,182,118,64,182,30,32,32,34,182,32],"width":1219,"height":570}},"raptor_front_arm":{"images/raptor_front_arm":{"type":"skinnedmesh","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":[23,24,25,28,25,26,23,25,28,0,28,26,10,11,9,13,14,12,12,14,11,11,8,9,11,14,8,8,14,7,7,14,15,15,16,7,6,16,5,6,7,16,18,4,17,18,3,4,18,19,3,16,17,5,17,4,5,19,20,3,3,20,2,2,20,21,2,21,1,21,27,1,21,22,27,1,27,0,27,23,28,27,22,23,27,28,0],"vertices":[2,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,"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,0,54,54,44,54,42,44,46,46,48,50,56,56,54,46,56,56,52],"width":162,"height":203}},"raptor_front_leg":{"images/raptor_front_leg":{"type":"skinnedmesh","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,13,11,12,11,13,10,10,13,42,13,44,42,41,43,42,42,43,10,43,9,10,13,14,44,14,15,44,16,45,15,15,45,44,17,40,16,16,40,45,45,41,44,45,43,41,41,42,44,40,8,45,45,9,43,45,8,9,18,39,17,17,39,40,18,38,39,18,19,38,40,7,8,40,39,7,39,6,7,39,38,6,20,21,19,19,21,38,38,37,6,38,21,37,6,37,5,5,36,4,5,37,36,21,22,37,37,22,36,36,35,4,4,35,3,36,47,35,22,23,36,23,51,36,36,51,47,35,34,3,3,34,2,23,24,51,51,24,47,47,48,35,35,48,34,24,25,47,47,25,48,34,1,2,48,33,34,34,33,1,25,49,48,48,49,33,25,26,49,26,50,49,26,27,50,33,49,32,49,50,32,33,0,1,33,32,0,50,27,32,32,27,28,28,46,32,28,29,46,46,31,32,32,31,0,29,30,46],"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,"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,0,64,64,56,2,66,64,66,4,68,66,68,6,70,68,70,8,72,72,44,70,72,10,74,74,42,72,74,12,76,76,38,74,76,14,78,78,36,76,78,16,80,80,34,78,80,26,84,86,84,86,20,26,88,82,88,88,28,80,90,90,88,16,18,18,20,18,90,30,32,32,34,90,32,86,18,82,86,56,58,58,60,60,92,92,64,58,92,92,62,94,70,50,96,96,68,94,96,52,98,98,66,96,98,52,54,54,56,54,100,100,98,100,64,48,50,94,48,44,46,46,48,46,102,102,72,102,94],"width":382,"height":514}},"raptor_hindleg_back":{"images/raptor_hindleg_back":{"type":"skinnedmesh","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,47,12,15,13,14,15,12,13,16,47,15,47,11,12,18,45,46,17,47,16,18,46,17,47,46,10,17,46,47,47,10,11,46,9,10,45,18,19,44,45,20,20,45,19,20,21,44,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,40,29,39,24,42,22,7,42,6,40,39,4,28,29,40,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,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,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,"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,0,72,72,64,68,72,2,74,74,62,72,74,4,76,76,60,74,76,6,78,78,58,76,78,8,80,80,56,78,80,10,82,82,52,80,82,12,84,84,48,82,84,14,86,86,44,84,86,16,88,88,40,86,88,18,90,90,38,88,90,20,92,92,36,90,92,92,94,94,22,94,32,30,24,94,24],"width":338,"height":429}},"raptor_horn":{"images/raptor_horn":{"x":156.2,"y":74.1,"rotation":-137.26,"width":363,"height":159}},"raptor_horn_back":{"images/raptor_horn_back":{"x":121.42,"y":83.01,"rotation":-132.21,"width":351,"height":153}},"raptor_jaw":{"images/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":[11,14,15,14,0,1,5,3,4,6,3,5,2,15,1,7,2,3,7,3,6,15,8,10,15,2,8,8,9,10,2,7,8,15,14,1,10,11,15,14,13,0,14,12,13,11,12,14],"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,"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,28,30,30,20,22,28,28,0,30,2],"width":305,"height":286}},"raptor_saddle_noshadow":{"images/raptor_saddle_noshadow":{"x":80.83,"y":10.63,"rotation":-88.64,"width":326,"height":375}},"raptor_saddle_strap_front":{"images/raptor_saddle_strap_front":{"x":128.83,"y":-4.71,"rotation":61.29,"width":114,"height":189}},"raptor_saddle_strap_rear":{"images/raptor_saddle_strap_rear":{"type":"skinnedmesh","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,20,21,4,15,16,20,22,20,5,5,20,4,14,15,22,22,15,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,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,"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,0,42,42,40,32,42,4,6,6,8,42,6,26,28,28,30,38,44,44,40,28,44,8,10,10,12,44,10],"width":108,"height":148}},"raptor_saddle_w_shadow":{"images/raptor_saddle_w_shadow":{"x":80.83,"y":10.63,"rotation":-88.64,"width":326,"height":375}},"raptor_tongue":{"images/raptor_tongue":{"type":"skinnedmesh","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":[7,8,3,6,7,3,4,6,3,6,4,5,8,7,6,9,1,2,8,9,2,9,10,1,8,2,3,0,11,12,0,12,13,10,11,0,1,10,0],"vertices":[2,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,"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":{"images/torso":{"x":55.88,"y":4.86,"rotation":-104.14,"width":108,"height":182}},"stirrup_back":{"images/stirrup_back":{"x":53.2,"y":31.34,"rotation":-21.12,"width":87,"height":69}},"stirrup_front":{"images/stirrup_front":{"x":36.13,"y":20.39,"rotation":-21.12,"width":89,"height":100}},"stirrup_strap":{"images/stirrup_strap":{"type":"skinnedmesh","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":[7,5,6,7,4,5,7,8,4,8,3,4,8,9,3,9,2,3,9,10,2,2,10,1,10,11,1,11,12,1,13,16,12,12,0,1,12,16,0,16,15,0,13,14,16,16,14,15],"vertices":[2,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,"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":{"images/visor":{"x":99.13,"y":6.51,"rotation":-70.57,"width":261,"height":168}}}},"animations":{"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,"curve":"stepped"},{"time":1.0666,"angle":27.07}],"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":-45.71,"curve":"stepped"},{"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,"curve":"stepped"},{"time":1.0666,"angle":-347.28}],"translate":[{"time":0,"x":0,"y":0,"curve":"stepped"},{"time":1.0666,"x":0,"y":0}]},"rear_leg2":{"rotate":[{"time":0,"angle":9.92,"curve":"stepped"},{"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":-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}],"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}]},"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":-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}],"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}]},"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":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}],"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}]},"front_foot2":{"rotate":[{"time":0,"angle":44.18},{"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}],"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":-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}],"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}]},"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":27.59},{"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":27.59},{"time":1.0666,"angle":27.59}],"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}]}},"ffd":{"default":{"raptor_body":{"images/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]},{"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]},{"time":1.0666}]},"raptor_front_leg":{"images/raptor_front_leg":[{"time":0,"curve":"stepped"},{"time":0.2666},{"time":0.5333,"offset":216,"vertices":[-2.23,21.95,21.54,-4.75]},{"time":0.6,"offset":216,"vertices":[7.17,15.14,15.26,-6.91]},{"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]},{"time":0.8,"curve":"stepped"},{"time":0.9666,"curve":"stepped"},{"time":1.0666}]}}}}}} \ No newline at end of file +{ +"skeleton": { "hash": "r3IJRaLbaxgEoW1YBAOrYT69jB4", "spine": "Dev", "width": 1224.2, "height": 1052.38 }, +"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": "gun", + "parent": "spineboy_hip", + "length": 181.35, + "x": 16.86, + "y": -7.89, + "scaleX": 0.816, + "scaleY": 0.816, + "rotation": 107.11 + }, + { "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, + "x": 57.78, + "y": -0.02, + "scaleX": 0.73, + "scaleY": 0.823, + "rotation": -0.46, + "inheritRotation": false + }, + { "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, + "x": 49.71, + "y": 20.65, + "scaleX": 1.154, + "rotation": -3.16, + "inheritRotation": false + }, + { "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_hand2", + "parent": "front_bracer", + "length": 58.18, + "x": 39.98, + "y": -0.89, + "rotation": 13.9, + "inheritRotation": false + }, + { "name": "tongue3", "parent": "tongue2", "length": 43.64, "x": 44.26, "y": -0.2, "rotation": 12.86 } +], +"ik": [ + { + "name": "front_leg_goal", + "bones": [ "front_leg1", "front_leg2" ], + "target": "front_leg_goal", + "bendPositive": false + }, + { + "name": "rear_leg_goal", + "bones": [ "rear_leg1", "rear_leg2" ], + "target": "rear_leg_goal", + "bendPositive": false + }, + { + "name": "front_foot_goal", + "bones": [ "front_leg3", "front_foot1" ], + "target": "front_foot_goal" + }, + { + "name": "rear_foot_goal", + "bones": [ "rear_leg3", "rear_foot1" ], + "target": "rear_foot_goal" + }, + { + "name": "stirrup", + "bones": [ "stirrup_strap1", "stirrup_strap2" ], + "target": "stirrup" + }, + { + "name": "spineboy_rear_leg_goal", + "bones": [ "back_thigh", "back_knee" ], + "target": "spineboy_rear_arm_goal", + "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" + } +], +"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" } +], +"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": [ 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 ], + "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 + } + }, + "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": "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 + } + }, + "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 + } + }, + "raptor_front_arm": { + "raptor_front_arm": { + "type": "skinnedmesh", + "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 + } + }, + "raptor_front_leg": { + "raptor_front_leg": { + "type": "skinnedmesh", + "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 + } + }, + "raptor_hindleg_back": { + "raptor_hindleg_back": { + "type": "skinnedmesh", + "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 + } + }, + "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": "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 + } + }, + "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": "skinnedmesh", + "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 + } + }, + "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": "skinnedmesh", + "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 + } + }, + "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": "skinnedmesh", + "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 + } + }, + "visor": { + "visor": { "x": 99.13, "y": 6.51, "rotation": -70.57, "width": 261, "height": 168 } + } + } +}, +"animations": { + "empty": {}, + "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": 1, + "bendPositive": true, + "curve": [ 0.317, 0.13, 0.781, 0.56 ] + }, + { "time": 0.1333, "mix": 0, "bendPositive": true } + ] + } + }, + "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": 0.5333, "angle": -41.93 }, + { "time": 0.6333, "angle": -16.71 }, + { "time": 0.7333, "angle": 16.92 }, + { "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": 0.1, "angle": -45.79 }, + { "time": 0.1666, "angle": -19.95 }, + { "time": 0.4, "angle": 35.36 }, + { "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": 0.5333, "angle": -346.78 }, + { "time": 0.6333, "angle": -398.52 }, + { "time": 0.7333, "angle": -393.21 }, + { "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": 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": [ + { "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": -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 } + ], + "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 } + ] + }, + "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": -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 } + ], + "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 } + ] + }, + "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": 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 } + ], + "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 } + ] + }, + "front_foot2": { + "rotate": [ + { "time": 0, "angle": 44.18 }, + { "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 } + ], + "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": -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 } + ], + "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 } + ] + }, + "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": 27.59 }, + { "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": 27.59 }, + { "time": 1.0666, "angle": 27.59 } + ], + "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 } + ] + } + }, + "ffd": { + "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 ] + }, + { "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 ] + }, + { "time": 1.0666 } + ] + }, + "raptor_front_leg": { + "raptor_front_leg": [ + { "time": 0, "curve": "stepped" }, + { "time": 0.2666 }, + { + "time": 0.5333, + "offset": 216, + "vertices": [ -2.23, 21.95, 21.54, -4.75 ] + }, + { + "time": 0.6, + "offset": 216, + "vertices": [ 7.17, 15.14, 15.26, -6.91 ] + }, + { + "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 ] + }, + { "time": 0.8, "curve": "stepped" }, + { "time": 0.9666, "curve": "stepped" }, + { "time": 1.0666 } + ] + } + } + } + } +} +} \ No newline at end of file diff --git a/spine-xna/example/src/ExampleGame.cs b/spine-xna/example/src/ExampleGame.cs index fdb3bbc4b..b34e5e599 100644 --- a/spine-xna/example/src/ExampleGame.cs +++ b/spine-xna/example/src/ExampleGame.cs @@ -34,7 +34,6 @@ using System.Collections.Generic; using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Audio; using Microsoft.Xna.Framework.Content; -using Microsoft.Xna.Framework.GamerServices; using Microsoft.Xna.Framework.Graphics; using Microsoft.Xna.Framework.Input; using Microsoft.Xna.Framework.Media; @@ -103,6 +102,10 @@ namespace Spine { TrackEntry entry = state.AddAnimation(0, "jump", false, 0); entry.End += End; // Event handling for queued animations. state.AddAnimation(0, "run", true, 0); + } else if (name == "raptor") { + state.SetAnimation(0, "walk", true); + state.SetAnimation(1, "empty", false); + state.AddAnimation(1, "gungrab", false, 2); } else { state.SetAnimation(0, "walk", true); } @@ -120,9 +123,10 @@ namespace Spine { protected override void Update (GameTime gameTime) { // Allows the game to exit +#if !WINDOWS_STOREAPP if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed) this.Exit(); - +#endif // TODO: Add your update logic here base.Update(gameTime); diff --git a/spine-xna/src/SkeletonMeshRenderer.cs b/spine-xna/src/SkeletonMeshRenderer.cs index fd01d7e58..48697ba4e 100644 --- a/spine-xna/src/SkeletonMeshRenderer.cs +++ b/spine-xna/src/SkeletonMeshRenderer.cs @@ -90,7 +90,6 @@ namespace Spine { public void Draw (Skeleton skeleton) { float[] vertices = this.vertices; List drawOrder = skeleton.DrawOrder; - float x = skeleton.X, y = skeleton.Y; float skeletonR = skeleton.R, skeletonG = skeleton.G, skeletonB = skeleton.B, skeletonA = skeleton.A; for (int i = 0, n = drawOrder.Count; i < n; i++) { Slot slot = drawOrder[i]; @@ -128,7 +127,7 @@ namespace Spine { itemVertices[BR].Color = color; itemVertices[TR].Color = color; - regionAttachment.ComputeWorldVertices(x, y, slot.Bone, vertices); + regionAttachment.ComputeWorldVertices(slot.Bone, vertices); itemVertices[TL].Position.X = vertices[RegionAttachment.X1]; itemVertices[TL].Position.Y = vertices[RegionAttachment.Y1]; itemVertices[TL].Position.Z = 0; @@ -155,7 +154,7 @@ namespace Spine { MeshAttachment mesh = (MeshAttachment)attachment; int vertexCount = mesh.Vertices.Length; if (vertices.Length < vertexCount) vertices = new float[vertexCount]; - mesh.ComputeWorldVertices(x, y, slot, vertices); + mesh.ComputeWorldVertices(slot, vertices); int[] triangles = mesh.Triangles; MeshItem item = batcher.NextItem(vertexCount, triangles.Length); @@ -192,7 +191,7 @@ namespace Spine { SkinnedMeshAttachment mesh = (SkinnedMeshAttachment)attachment; int vertexCount = mesh.UVs.Length; if (vertices.Length < vertexCount) vertices = new float[vertexCount]; - mesh.ComputeWorldVertices(x, y, slot, vertices); + mesh.ComputeWorldVertices(slot, vertices); int[] triangles = mesh.Triangles; MeshItem item = batcher.NextItem(vertexCount, triangles.Length); diff --git a/spine-xna/src/SkeletonRegionRenderer.cs b/spine-xna/src/SkeletonRegionRenderer.cs index 88fe03cf3..d9d7448ec 100644 --- a/spine-xna/src/SkeletonRegionRenderer.cs +++ b/spine-xna/src/SkeletonRegionRenderer.cs @@ -83,7 +83,6 @@ namespace Spine { public void Draw (Skeleton skeleton) { List drawOrder = skeleton.DrawOrder; - float x = skeleton.X, y = skeleton.Y; float skeletonR = skeleton.R, skeletonG = skeleton.G, skeletonB = skeleton.B, skeletonA = skeleton.A; for (int i = 0, n = drawOrder.Count; i < n; i++) { Slot slot = drawOrder[i]; @@ -112,7 +111,7 @@ namespace Spine { item.vertexTR.Color = color; float[] vertices = this.vertices; - regionAttachment.ComputeWorldVertices(x, y, slot.Bone, vertices); + regionAttachment.ComputeWorldVertices(slot.Bone, vertices); item.vertexTL.Position.X = vertices[RegionAttachment.X1]; item.vertexTL.Position.Y = vertices[RegionAttachment.Y1]; item.vertexTL.Position.Z = 0;