[c][sfml][cocos2d-x][cocos2d-objc] Updated to 3.3.07 (#629)
10
.gitignore
vendored
@ -24,9 +24,9 @@ spine-sfml/Debug/*
|
||||
spine-sfml/SFML
|
||||
spine-sfml/dependencies
|
||||
|
||||
spine-libgdx/spine-libgdx/bin/*
|
||||
spine-libgdx/spine-libgdx-tests/bin/*
|
||||
spine-libgdx/spine-skeletonviewer/bin/*
|
||||
spine-libgdx/spine-libgdx/bin
|
||||
spine-libgdx/spine-libgdx-tests/bin
|
||||
spine-libgdx/spine-skeletonviewer/bin
|
||||
|
||||
spine-cocos2dx/dependencies
|
||||
spine-cocos2dx/example/cocos2dx.zip
|
||||
@ -35,8 +35,8 @@ spine-cocos2dx/example/cocos2d
|
||||
spine-cocos2dx/example/proj.win32/spine-cocos2d-x.VC.opendb
|
||||
xcuserdata/
|
||||
|
||||
spine-cocos2d-iphone/cocos2d/*
|
||||
spine-cocos2d-iphone/spine-cocos2d-iphone-ios.xcodeproj/project.xcworkspace/xcshareddata/
|
||||
spine-cocos2d-objc/cocos2d/*
|
||||
spine-cocos2d-objc/spine-cocos2d-iphone-objc.xcodeproj/project.xcworkspace/xcshareddata/
|
||||
|
||||
spine-csharp/bin
|
||||
spine-csharp/obj
|
||||
|
||||
@ -12,7 +12,7 @@ The Spine Runtimes are developed with the intent to be used with data exported f
|
||||
|
||||
## Spine version
|
||||
|
||||
spine-c works with data exported from Spine version 3.2.01.
|
||||
spine-c works with data exported from Spine version 3.3.07.
|
||||
|
||||
spine-c supports all Spine features.
|
||||
|
||||
@ -48,4 +48,3 @@ spine-c uses an OOP style of programming where each "class" is made up of a stru
|
||||
- [spine-cocos2d-iphone](https://github.com/EsotericSoftware/spine-runtimes/blob/master/spine-cocos2d-iphone)
|
||||
- [spine-cocos2dx](https://github.com/EsotericSoftware/spine-runtimes/blob/master/spine-cocos2dx)
|
||||
- [spine-sfml](https://github.com/EsotericSoftware/spine-runtimes/blob/master/spine-sfml)
|
||||
- [spine-torque2d](https://github.com/EsotericSoftware/spine-runtimes/blob/master/spine-torque2d)
|
||||
|
||||
@ -64,13 +64,13 @@ void spAnimation_dispose (spAnimation* self);
|
||||
|
||||
/** Poses the skeleton at the specified time for this animation.
|
||||
* @param lastTime The last time the animation was applied.
|
||||
* @param events Any triggered events are added. */
|
||||
* @param events Any triggered events are added. May be null.*/
|
||||
void spAnimation_apply (const spAnimation* self, struct spSkeleton* skeleton, float lastTime, float time, int loop,
|
||||
spEvent** events, int* eventsCount);
|
||||
|
||||
/** Poses the skeleton at the specified time for this animation mixed with the current pose.
|
||||
* @param lastTime The last time the animation was applied.
|
||||
* @param events Any triggered events are added.
|
||||
* @param events Any triggered events are added. May be null.
|
||||
* @param alpha The amount of this animation that affects the current pose. */
|
||||
void spAnimation_mix (const spAnimation* self, struct spSkeleton* skeleton, float lastTime, float time, int loop,
|
||||
spEvent** events, int* eventsCount, float alpha);
|
||||
@ -94,9 +94,12 @@ typedef enum {
|
||||
SP_TIMELINE_ATTACHMENT,
|
||||
SP_TIMELINE_EVENT,
|
||||
SP_TIMELINE_DRAWORDER,
|
||||
SP_TIMELINE_FFD,
|
||||
SP_TIMELINE_DEFORM,
|
||||
SP_TIMELINE_IKCONSTRAINT,
|
||||
SP_TIMELINE_TRANSFORMCONSTRAINT
|
||||
SP_TIMELINE_TRANSFORMCONSTRAINT,
|
||||
SP_TIMELINE_PATHCONSTRAINTPOSITION,
|
||||
SP_TIMELINE_PATHCONSTRAINTSPACING,
|
||||
SP_TIMELINE_PATHCONSTRAINTMIX
|
||||
} spTimelineType;
|
||||
|
||||
struct spTimeline {
|
||||
@ -179,6 +182,8 @@ typedef struct spBaseTimeline {
|
||||
|
||||
/**/
|
||||
|
||||
static const int ROTATE_ENTRIES = 2;
|
||||
|
||||
typedef struct spBaseTimeline spRotateTimeline;
|
||||
|
||||
spRotateTimeline* spRotateTimeline_create (int framesCount);
|
||||
@ -193,6 +198,8 @@ typedef spRotateTimeline RotateTimeline;
|
||||
|
||||
/**/
|
||||
|
||||
static const int TRANSLATE_ENTRIES = 3;
|
||||
|
||||
typedef struct spBaseTimeline spTranslateTimeline;
|
||||
|
||||
spTranslateTimeline* spTranslateTimeline_create (int framesCount);
|
||||
@ -235,6 +242,8 @@ typedef spShearTimeline ShearTimeline;
|
||||
|
||||
/**/
|
||||
|
||||
static const int COLOR_ENTRIES = 5;
|
||||
|
||||
typedef struct spColorTimeline {
|
||||
spCurveTimeline super;
|
||||
int const framesCount;
|
||||
@ -352,7 +361,7 @@ typedef spDrawOrderTimeline DrawOrderTimeline;
|
||||
|
||||
/**/
|
||||
|
||||
typedef struct spFFDTimeline {
|
||||
typedef struct spDeformTimeline {
|
||||
spCurveTimeline super;
|
||||
int const framesCount;
|
||||
float* const frames; /* time, ... */
|
||||
@ -362,7 +371,7 @@ typedef struct spFFDTimeline {
|
||||
spAttachment* attachment;
|
||||
|
||||
#ifdef __cplusplus
|
||||
spFFDTimeline() :
|
||||
spDeformTimeline() :
|
||||
super(),
|
||||
framesCount(0),
|
||||
frames(0),
|
||||
@ -371,20 +380,22 @@ typedef struct spFFDTimeline {
|
||||
slotIndex(0) {
|
||||
}
|
||||
#endif
|
||||
} spFFDTimeline;
|
||||
} spDeformTimeline;
|
||||
|
||||
spFFDTimeline* spFFDTimeline_create (int framesCount, int frameVerticesCount);
|
||||
spDeformTimeline* spDeformTimeline_create (int framesCount, int frameVerticesCount);
|
||||
|
||||
void spFFDTimeline_setFrame (spFFDTimeline* self, int frameIndex, float time, float* vertices);
|
||||
void spDeformTimeline_setFrame (spDeformTimeline* self, int frameIndex, float time, float* vertices);
|
||||
|
||||
#ifdef SPINE_SHORT_NAMES
|
||||
typedef spFFDTimeline FFDTimeline;
|
||||
#define FFDTimeline_create(...) spFFDTimeline_create(__VA_ARGS__)
|
||||
#define FFDTimeline_setFrame(...) spFFDTimeline_setFrame(__VA_ARGS__)
|
||||
typedef spDeformTimeline DeformTimeline;
|
||||
#define DeformTimeline_create(...) spDeformTimeline_create(__VA_ARGS__)
|
||||
#define DeformTimeline_setFrame(...) spDeformTimeline_setFrame(__VA_ARGS__)
|
||||
#endif
|
||||
|
||||
/**/
|
||||
|
||||
static const int IKCONSTRAINT_ENTRIES = 3;
|
||||
|
||||
typedef struct spIkConstraintTimeline {
|
||||
spCurveTimeline super;
|
||||
int const framesCount;
|
||||
@ -413,10 +424,12 @@ typedef spIkConstraintTimeline IkConstraintTimeline;
|
||||
|
||||
/**/
|
||||
|
||||
static const int TRANSFORMCONSTRAINT_ENTRIES = 5;
|
||||
|
||||
typedef struct spTransformConstraintTimeline {
|
||||
spCurveTimeline super;
|
||||
int const framesCount;
|
||||
float* const frames; /* time, mix, bendDirection, ... */
|
||||
float* const frames; /* time, rotate mix, translate mix, scale mix, shear mix, ... */
|
||||
int transformConstraintIndex;
|
||||
|
||||
#ifdef __cplusplus
|
||||
@ -441,6 +454,96 @@ typedef spTransformConstraintTimeline TransformConstraintTimeline;
|
||||
|
||||
/**/
|
||||
|
||||
static const int PATHCONSTRAINTPOSITION_ENTRIES = 2;
|
||||
|
||||
typedef struct spPathConstraintPositionTimeline {
|
||||
spCurveTimeline super;
|
||||
int const framesCount;
|
||||
float* const frames; /* time, rotate mix, translate mix, scale mix, shear mix, ... */
|
||||
int pathConstraintIndex;
|
||||
|
||||
#ifdef __cplusplus
|
||||
spPathConstraintPositionTimeline() :
|
||||
super(),
|
||||
framesCount(0),
|
||||
frames(0),
|
||||
pathConstraintIndex(0) {
|
||||
}
|
||||
#endif
|
||||
} spPathConstraintPositionTimeline;
|
||||
|
||||
spPathConstraintPositionTimeline* spPathConstraintPositionTimeline_create (int framesCount);
|
||||
|
||||
void spPathConstraintPositionTimeline_setFrame (spPathConstraintPositionTimeline* self, int frameIndex, float time, float value);
|
||||
|
||||
#ifdef SPINE_SHORT_NAMES
|
||||
typedef spPathConstraintPositionTimeline PathConstraintPositionTimeline;
|
||||
#define PathConstraintPositionTimeline_create(...) spPathConstraintPositionTimeline_create(__VA_ARGS__)
|
||||
#define PathConstraintPositionTimeline_setFrame(...) spPathConstraintPositionTimeline_setFrame(__VA_ARGS__)
|
||||
#endif
|
||||
|
||||
/**/
|
||||
|
||||
static const int PATHCONSTRAINTSPACING_ENTRIES = 2;
|
||||
|
||||
typedef struct spPathConstraintSpacingTimeline {
|
||||
spCurveTimeline super;
|
||||
int const framesCount;
|
||||
float* const frames; /* time, rotate mix, translate mix, scale mix, shear mix, ... */
|
||||
int pathConstraintIndex;
|
||||
|
||||
#ifdef __cplusplus
|
||||
spPathConstraintSpacingTimeline() :
|
||||
super(),
|
||||
framesCount(0),
|
||||
frames(0),
|
||||
pathConstraintIndex(0) {
|
||||
}
|
||||
#endif
|
||||
} spPathConstraintSpacingTimeline;
|
||||
|
||||
spPathConstraintSpacingTimeline* spPathConstraintSpacingTimeline_create (int framesCount);
|
||||
|
||||
void spPathConstraintSpacingTimeline_setFrame (spPathConstraintSpacingTimeline* self, int frameIndex, float time, float value);
|
||||
|
||||
#ifdef SPINE_SHORT_NAMES
|
||||
typedef spPathConstraintSpacingTimeline PathConstraintSpacingTimeline;
|
||||
#define PathConstraintSpacingTimeline_create(...) spPathConstraintSpacingTimeline_create(__VA_ARGS__)
|
||||
#define PathConstraintSpacingTimeline_setFrame(...) spPathConstraintSpacingTimeline_setFrame(__VA_ARGS__)
|
||||
#endif
|
||||
|
||||
/**/
|
||||
|
||||
static const int PATHCONSTRAINTMIX_ENTRIES = 3;
|
||||
|
||||
typedef struct spPathConstraintMixTimeline {
|
||||
spCurveTimeline super;
|
||||
int const framesCount;
|
||||
float* const frames; /* time, rotate mix, translate mix, scale mix, shear mix, ... */
|
||||
int pathConstraintIndex;
|
||||
|
||||
#ifdef __cplusplus
|
||||
spPathConstraintMixTimeline() :
|
||||
super(),
|
||||
framesCount(0),
|
||||
frames(0),
|
||||
pathConstraintIndex(0) {
|
||||
}
|
||||
#endif
|
||||
} spPathConstraintMixTimeline;
|
||||
|
||||
spPathConstraintMixTimeline* spPathConstraintMixTimeline_create (int framesCount);
|
||||
|
||||
void spPathConstraintMixTimeline_setFrame (spPathConstraintMixTimeline* self, int frameIndex, float time, float rotateMix, float translateMix);
|
||||
|
||||
#ifdef SPINE_SHORT_NAMES
|
||||
typedef spPathConstraintMixTimeline PathConstraintMixTimeline;
|
||||
#define PathConstraintMixTimeline_create(...) spPathConstraintMixTimeline_create(__VA_ARGS__)
|
||||
#define PathConstraintMixTimeline_setFrame(...) spPathConstraintMixTimeline_setFrame(__VA_ARGS__)
|
||||
#endif
|
||||
|
||||
/**/
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
@ -42,9 +42,8 @@ typedef enum {
|
||||
SP_ATTACHMENT_REGION,
|
||||
SP_ATTACHMENT_BOUNDING_BOX,
|
||||
SP_ATTACHMENT_MESH,
|
||||
SP_ATTACHMENT_WEIGHTED_MESH,
|
||||
SP_ATTACHMENT_LINKED_MESH,
|
||||
SP_ATTACHMENT_WEIGHTED_LINKED_MESH
|
||||
SP_ATTACHMENT_PATH
|
||||
} spAttachmentType;
|
||||
|
||||
typedef struct spAttachment {
|
||||
@ -69,9 +68,7 @@ typedef spAttachmentType AttachmentType;
|
||||
#define ATTACHMENT_REGION SP_ATTACHMENT_REGION
|
||||
#define ATTACHMENT_BOUNDING_BOX SP_ATTACHMENT_BOUNDING_BOX
|
||||
#define ATTACHMENT_MESH SP_ATTACHMENT_MESH
|
||||
#define ATTACHMENT_WEIGHTED_MESH SP_ATTACHMENT_WEIGHTED_MESH
|
||||
#define ATTACHMENT_LINKED_MESH SP_ATTACHMENT_LINKED_MESH
|
||||
#define ATTACHMENT_WEIGHTED_LINKED_MESH SP_ATTACHMENT_WEIGHTED_LINKED_MESH
|
||||
typedef spAttachment Attachment;
|
||||
#define Attachment_dispose(...) spAttachment_dispose(__VA_ARGS__)
|
||||
#endif
|
||||
|
||||
@ -45,24 +45,31 @@ struct spBone {
|
||||
spBoneData* const data;
|
||||
struct spSkeleton* const skeleton;
|
||||
spBone* const parent;
|
||||
int childrenCount;
|
||||
spBone** const children;
|
||||
float x, y, rotation, scaleX, scaleY, shearX, shearY;
|
||||
float appliedRotation, appliedScaleX, appliedScaleY;
|
||||
float appliedRotation;
|
||||
|
||||
float const a, b, worldX;
|
||||
float const c, d, worldY;
|
||||
float const worldSignX, worldSignY;
|
||||
|
||||
int/*bool*/ sorted;
|
||||
|
||||
#ifdef __cplusplus
|
||||
spBone() :
|
||||
data(0),
|
||||
skeleton(0),
|
||||
parent(0),
|
||||
childrenCount(0), children(0),
|
||||
x(0), y(0), rotation(0), scaleX(0), scaleY(0),
|
||||
appliedRotation(0), appliedScaleX(0), appliedScaleY(0),
|
||||
appliedRotation(0),
|
||||
|
||||
a(0), b(0), worldX(0),
|
||||
c(0), d(0), worldY(0),
|
||||
worldSignX(0), worldSignY(0) {
|
||||
worldSignX(0), worldSignY(0),
|
||||
|
||||
sorted(0) {
|
||||
}
|
||||
#endif
|
||||
};
|
||||
@ -84,6 +91,11 @@ float spBone_getWorldRotationY (spBone* self);
|
||||
float spBone_getWorldScaleX (spBone* self);
|
||||
float spBone_getWorldScaleY (spBone* self);
|
||||
|
||||
float spBone_worldToLocalRotationX (spBone* self);
|
||||
float spBone_worldToLocalRotationY (spBone* self);
|
||||
void spBone_rotateWorld (spBone* self, float degrees);
|
||||
void spBone_updateLocalTransform (spBone* self);
|
||||
|
||||
void spBone_worldToLocal (spBone* self, float worldX, float worldY, float* localX, float* localY);
|
||||
void spBone_localToWorld (spBone* self, float localX, float localY, float* worldX, float* worldY);
|
||||
|
||||
@ -100,6 +112,10 @@ typedef spBone Bone;
|
||||
#define Bone_getWorldRotationY(...) spBone_getWorldRotationY(__VA_ARGS__)
|
||||
#define Bone_getWorldScaleX(...) spBone_getWorldScaleX(__VA_ARGS__)
|
||||
#define Bone_getWorldScaleY(...) spBone_getWorldScaleY(__VA_ARGS__)
|
||||
#define Bone_worldToLocalRotationX(...) spBone_worldToLocalRotationX(__VA_ARGS__)
|
||||
#define Bone_worldToLocalRotationY(...) spBone_worldToLocalRotationY(__VA_ARGS__)
|
||||
#define Bone_rotateWorld(...) spBone_rotateWorld(__VA_ARGS__)
|
||||
#define Bone_updateLocalTransform(...) spBone_updateLocalTransform(__VA_ARGS__)
|
||||
#define Bone_worldToLocal(...) spBone_worldToLocal(__VA_ARGS__)
|
||||
#define Bone_localToWorld(...) spBone_localToWorld(__VA_ARGS__)
|
||||
#endif
|
||||
|
||||
@ -38,26 +38,29 @@ extern "C" {
|
||||
|
||||
typedef struct spBoneData spBoneData;
|
||||
struct spBoneData {
|
||||
const int index;
|
||||
const char* const name;
|
||||
spBoneData* const parent;
|
||||
float length;
|
||||
float x, y, rotation, scaleX, scaleY, shearX, shearY;
|
||||
int/*bool*/inheritScale, inheritRotation;
|
||||
int/*bool*/inheritRotation, inheritScale;
|
||||
|
||||
#ifdef __cplusplus
|
||||
spBoneData() :
|
||||
index(0),
|
||||
name(0),
|
||||
parent(0),
|
||||
length(0),
|
||||
x(0), y(0),
|
||||
rotation(0),
|
||||
scaleX(0), scaleY(0),
|
||||
inheritScale(0), inheritRotation(0) {
|
||||
shearX(0), shearY(0),
|
||||
inheritRotation(0), inheritScale(0) {
|
||||
}
|
||||
#endif
|
||||
};
|
||||
|
||||
spBoneData* spBoneData_create (const char* name, spBoneData* parent);
|
||||
spBoneData* spBoneData_create (int index, const char* name, spBoneData* parent);
|
||||
void spBoneData_dispose (spBoneData* self);
|
||||
|
||||
#ifdef SPINE_SHORT_NAMES
|
||||
|
||||
@ -33,6 +33,7 @@
|
||||
#define SPINE_BOUNDINGBOXATTACHMENT_H_
|
||||
|
||||
#include <spine/Attachment.h>
|
||||
#include <spine/VertexAttachment.h>
|
||||
#include <spine/Atlas.h>
|
||||
#include <spine/Slot.h>
|
||||
|
||||
@ -41,13 +42,11 @@ extern "C" {
|
||||
#endif
|
||||
|
||||
typedef struct spBoundingBoxAttachment {
|
||||
spAttachment super;
|
||||
int verticesCount;
|
||||
float* vertices;
|
||||
spVertexAttachment super;
|
||||
} spBoundingBoxAttachment;
|
||||
|
||||
spBoundingBoxAttachment* spBoundingBoxAttachment_create (const char* name);
|
||||
void spBoundingBoxAttachment_computeWorldVertices (spBoundingBoxAttachment* self, spBone* bone, float* vertices);
|
||||
void spBoundingBoxAttachment_computeWorldVertices (spBoundingBoxAttachment* self, spSlot* slot, float* worldVertices);
|
||||
|
||||
#ifdef SPINE_SHORT_NAMES
|
||||
typedef spBoundingBoxAttachment BoundingBoxAttachment;
|
||||
|
||||
@ -51,6 +51,8 @@ typedef struct spIkConstraint {
|
||||
int bendDirection;
|
||||
float mix;
|
||||
|
||||
int level;
|
||||
|
||||
#ifdef __cplusplus
|
||||
spIkConstraint() :
|
||||
data(0),
|
||||
@ -58,7 +60,8 @@ typedef struct spIkConstraint {
|
||||
bones(0),
|
||||
target(0),
|
||||
bendDirection(0),
|
||||
mix(0) {
|
||||
mix(0),
|
||||
level(0) {
|
||||
}
|
||||
#endif
|
||||
} spIkConstraint;
|
||||
|
||||
@ -33,6 +33,7 @@
|
||||
#define SPINE_MESHATTACHMENT_H_
|
||||
|
||||
#include <spine/Attachment.h>
|
||||
#include <spine/VertexAttachment.h>
|
||||
#include <spine/Atlas.h>
|
||||
#include <spine/Slot.h>
|
||||
|
||||
@ -42,23 +43,7 @@ extern "C" {
|
||||
|
||||
typedef struct spMeshAttachment spMeshAttachment;
|
||||
struct spMeshAttachment {
|
||||
spAttachment super;
|
||||
const char* path;
|
||||
|
||||
int verticesCount;
|
||||
float* vertices;
|
||||
int hullLength;
|
||||
|
||||
float* regionUVs;
|
||||
float* uvs;
|
||||
|
||||
int trianglesCount;
|
||||
unsigned short* triangles;
|
||||
|
||||
spMeshAttachment* const parentMesh;
|
||||
int/*bool*/inheritFFD;
|
||||
|
||||
float r, g, b, a;
|
||||
spVertexAttachment super;
|
||||
|
||||
void* rendererObject;
|
||||
int regionOffsetX, regionOffsetY; /* Pixels stripped from the bottom left, unrotated. */
|
||||
@ -67,6 +52,21 @@ struct spMeshAttachment {
|
||||
float regionU, regionV, regionU2, regionV2;
|
||||
int/*bool*/regionRotate;
|
||||
|
||||
const char* path;
|
||||
|
||||
float* regionUVs;
|
||||
float* uvs;
|
||||
|
||||
int trianglesCount;
|
||||
unsigned short* triangles;
|
||||
|
||||
float r, g, b, a;
|
||||
|
||||
int hullLength;
|
||||
|
||||
spMeshAttachment* const parentMesh;
|
||||
int/*bool*/inheritDeform;
|
||||
|
||||
/* Nonessential. */
|
||||
int edgesCount;
|
||||
int* edges;
|
||||
|
||||
65
spine-c/include/spine/PathAttachment.h
Normal file
@ -0,0 +1,65 @@
|
||||
/******************************************************************************
|
||||
* Spine Runtimes Software License
|
||||
* Version 2.3
|
||||
*
|
||||
* Copyright (c) 2013-2015, Esoteric Software
|
||||
* All rights reserved.
|
||||
*
|
||||
* You are granted a perpetual, non-exclusive, non-sublicensable and
|
||||
* non-transferable license to use, install, execute and perform the Spine
|
||||
* Runtimes Software (the "Software") and derivative works solely for personal
|
||||
* or internal use. Without the written permission of Esoteric Software (see
|
||||
* Section 2 of the Spine Software License Agreement), you may not (a) modify,
|
||||
* translate, adapt or otherwise create derivative works, improvements of the
|
||||
* Software or develop new applications using the Software or (b) remove,
|
||||
* delete, alter or obscure any trademarks or any copyright, trademark, patent
|
||||
* or other intellectual property or proprietary rights notices on or in the
|
||||
* Software, including any copy thereof. Redistributions in binary or source
|
||||
* form must include this license and terms.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR
|
||||
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
|
||||
* EVENT SHALL ESOTERIC SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
||||
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*****************************************************************************/
|
||||
|
||||
#ifndef SPINE_PATHATTACHMENT_H_
|
||||
#define SPINE_PATHATTACHMENT_H_
|
||||
|
||||
#include <spine/Attachment.h>
|
||||
#include <spine/VertexAttachment.h>
|
||||
#include <spine/Atlas.h>
|
||||
#include <spine/Slot.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
typedef struct spPathAttachment {
|
||||
spVertexAttachment super;
|
||||
int lengthsLength;
|
||||
float* lengths;
|
||||
int/*bool*/ closed, constantSpeed;
|
||||
} spPathAttachment;
|
||||
|
||||
spPathAttachment* spPathAttachment_create (const char* name);
|
||||
void spPathAttachment_computeWorldVertices (spPathAttachment* self, spSlot* slot, float* worldVertices);
|
||||
void spPathAttachment_computeWorldVertices1 (spPathAttachment* self, spSlot* slot, int start, int count, float* worldVertices, int offset);
|
||||
|
||||
#ifdef SPINE_SHORT_NAMES
|
||||
typedef spPathAttachment PathAttachment;
|
||||
#define PathAttachment_create(...) spPathAttachment_create(__VA_ARGS__)
|
||||
#define PathAttachment_computeWorldVertices(...) spPathAttachment_computeWorldVertices(__VA_ARGS__)
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* SPINE_PATHATTACHMENT_H_ */
|
||||
113
spine-c/include/spine/PathConstraint.h
Normal file
@ -0,0 +1,113 @@
|
||||
/******************************************************************************
|
||||
* Spine Runtimes Software License
|
||||
* Version 2.3
|
||||
*
|
||||
* Copyright (c) 2013-2015, Esoteric Software
|
||||
* All rights reserved.
|
||||
*
|
||||
* You are granted a perpetual, non-exclusive, non-sublicensable and
|
||||
* non-transferable license to use, install, execute and perform the Spine
|
||||
* Runtimes Software (the "Software") and derivative works solely for personal
|
||||
* or internal use. Without the written permission of Esoteric Software (see
|
||||
* Section 2 of the Spine Software License Agreement), you may not (a) modify,
|
||||
* translate, adapt or otherwise create derivative works, improvements of the
|
||||
* Software or develop new applications using the Software or (b) remove,
|
||||
* delete, alter or obscure any trademarks or any copyright, trademark, patent
|
||||
* or other intellectual property or proprietary rights notices on or in the
|
||||
* Software, including any copy thereof. Redistributions in binary or source
|
||||
* form must include this license and terms.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR
|
||||
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
|
||||
* EVENT SHALL ESOTERIC SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
||||
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*****************************************************************************/
|
||||
|
||||
#ifndef SPINE_PATHCONSTRAINT_H_
|
||||
#define SPINE_PATHCONSTRAINT_H_
|
||||
|
||||
#include <spine/PathConstraintData.h>
|
||||
#include <spine/Bone.h>
|
||||
#include <spine/Slot.h>
|
||||
#include "PathAttachment.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
struct spSkeleton;
|
||||
|
||||
typedef struct spPathConstraint {
|
||||
spPathConstraintData* const data;
|
||||
int bonesCount;
|
||||
spBone** const bones;
|
||||
spSlot* target;
|
||||
float position, spacing, rotateMix, translateMix;
|
||||
|
||||
int spacesCount;
|
||||
float* spaces;
|
||||
|
||||
int positionsCount;
|
||||
float* positions;
|
||||
|
||||
int worldCount;
|
||||
float* world;
|
||||
|
||||
int curvesCount;
|
||||
float* curves;
|
||||
|
||||
int lengthsCount;
|
||||
float* lengths;
|
||||
|
||||
float segments[10];
|
||||
|
||||
#ifdef __cplusplus
|
||||
spPathConstraint() :
|
||||
data(0),
|
||||
bonesCount(0),
|
||||
bones(0),
|
||||
target(0),
|
||||
position(0),
|
||||
spacing(0),
|
||||
rotateMix(0),
|
||||
translateMix(0),
|
||||
spacesCount(0),
|
||||
spaces(0),
|
||||
positionsCount(0),
|
||||
positions(0),
|
||||
worldCount(0),
|
||||
world(0),
|
||||
curvesCount(0),
|
||||
curves(0),
|
||||
lengthsCount(0),
|
||||
lengths(0) {
|
||||
}
|
||||
#endif
|
||||
} spPathConstraint;
|
||||
|
||||
#define SP_PATHCONSTRAINT_
|
||||
|
||||
spPathConstraint* spPathConstraint_create (spPathConstraintData* data, const struct spSkeleton* skeleton);
|
||||
void spPathConstraint_dispose (spPathConstraint* self);
|
||||
|
||||
void spPathConstraint_apply (spPathConstraint* self);
|
||||
float* spPathConstraint_computeWorldPositions(spPathConstraint* self, spPathAttachment* path, int spacesCount, int/*bool*/ tangents, int/*bool*/percentPosition, int/**/percentSpacing);
|
||||
|
||||
#ifdef SPINE_SHORT_NAMES
|
||||
typedef spPathConstraint PathConstraint;
|
||||
#define PathConstraint_create(...) spPathConstraint_create(__VA_ARGS__)
|
||||
#define PathConstraint_dispose(...) spPathConstraint_dispose(__VA_ARGS__)
|
||||
#define PathConstraint_apply(...) spPathConstraint_apply(__VA_ARGS__)
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* SPINE_PATHCONSTRAINT_H_ */
|
||||
96
spine-c/include/spine/PathConstraintData.h
Normal file
@ -0,0 +1,96 @@
|
||||
/******************************************************************************
|
||||
* Spine Runtimes Software License
|
||||
* Version 2.3
|
||||
*
|
||||
* Copyright (c) 2013-2015, Esoteric Software
|
||||
* All rights reserved.
|
||||
*
|
||||
* You are granted a perpetual, non-exclusive, non-sublicensable and
|
||||
* non-transferable license to use, install, execute and perform the Spine
|
||||
* Runtimes Software (the "Software") and derivative works solely for personal
|
||||
* or internal use. Without the written permission of Esoteric Software (see
|
||||
* Section 2 of the Spine Software License Agreement), you may not (a) modify,
|
||||
* translate, adapt or otherwise create derivative works, improvements of the
|
||||
* Software or develop new applications using the Software or (b) remove,
|
||||
* delete, alter or obscure any trademarks or any copyright, trademark, patent
|
||||
* or other intellectual property or proprietary rights notices on or in the
|
||||
* Software, including any copy thereof. Redistributions in binary or source
|
||||
* form must include this license and terms.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR
|
||||
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
|
||||
* EVENT SHALL ESOTERIC SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
||||
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*****************************************************************************/
|
||||
|
||||
#ifndef SPINE_PATHCONSTRAINTDATA_H_
|
||||
#define SPINE_PATHCONSTRAINTDATA_H_
|
||||
|
||||
#include <spine/BoneData.h>
|
||||
#include <spine/SlotData.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
typedef enum {
|
||||
SP_POSITION_MODE_FIXED, SP_POSITION_MODE_PERCENT
|
||||
} spPositionMode;
|
||||
|
||||
typedef enum {
|
||||
SP_SPACING_MODE_LENGTH, SP_SPACING_MODE_FIXED, SP_SPACING_MODE_PERCENT
|
||||
} spSpacingMode;
|
||||
|
||||
typedef enum {
|
||||
SP_ROTATE_MODE_TANGENT, SP_ROTATE_MODE_CHAIN, SP_ROTATE_MODE_CHAIN_SCALE
|
||||
} spRotateMode;
|
||||
|
||||
typedef struct spPathConstraintData {
|
||||
const char* const name;
|
||||
int bonesCount;
|
||||
spBoneData** const bones;
|
||||
spSlotData* target;
|
||||
spPositionMode positionMode;
|
||||
spSpacingMode spacingMode;
|
||||
spRotateMode rotateMode;
|
||||
float offsetRotation;
|
||||
float position, spacing, rotateMix, translateMix;
|
||||
|
||||
#ifdef __cplusplus
|
||||
spPathConstraintData() :
|
||||
name(0),
|
||||
bonesCount(0),
|
||||
bones(0),
|
||||
target(0),
|
||||
positionMode(SP_POSITION_MODE_FIXED),
|
||||
spacingMode(SP_SPACING_MODE_LENGTH),
|
||||
rotateMode(SP_ROTATE_MODE_TANGENT),
|
||||
offsetRotation(0),
|
||||
position(0),
|
||||
spacing(0),
|
||||
rotateMix(0),
|
||||
translateMix(0) {
|
||||
}
|
||||
#endif
|
||||
} spPathConstraintData;
|
||||
|
||||
spPathConstraintData* spPathConstraintData_create (const char* name);
|
||||
void spPathConstraintData_dispose (spPathConstraintData* self);
|
||||
|
||||
#ifdef SPINE_SHORT_NAMES
|
||||
typedef spPathConstraintData PathConstraintData;
|
||||
#define PathConstraintData_create(...) spPathConstraintData_create(__VA_ARGS__)
|
||||
#define PathConstraintData_dispose(...) spPathConstraintData_dispose(__VA_ARGS__)
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* SPINE_PATHCONSTRAINTDATA_H_ */
|
||||
@ -37,6 +37,7 @@
|
||||
#include <spine/Skin.h>
|
||||
#include <spine/IkConstraint.h>
|
||||
#include <spine/TransformConstraint.h>
|
||||
#include <spine/PathConstraint.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
@ -55,10 +56,14 @@ typedef struct spSkeleton {
|
||||
|
||||
int ikConstraintsCount;
|
||||
spIkConstraint** ikConstraints;
|
||||
spIkConstraint** ikConstraintsSorted;
|
||||
|
||||
int transformConstraintsCount;
|
||||
spTransformConstraint** transformConstraints;
|
||||
|
||||
int pathConstraintsCount;
|
||||
spPathConstraint** pathConstraints;
|
||||
|
||||
spSkin* const skin;
|
||||
float r, g, b, a;
|
||||
float time;
|
||||
@ -77,6 +82,7 @@ typedef struct spSkeleton {
|
||||
|
||||
ikConstraintsCount(0),
|
||||
ikConstraints(0),
|
||||
ikConstraintsSorted(0),
|
||||
|
||||
transformConstraintsCount(0),
|
||||
transformConstraints(0),
|
||||
@ -94,8 +100,9 @@ typedef struct spSkeleton {
|
||||
spSkeleton* spSkeleton_create (spSkeletonData* data);
|
||||
void spSkeleton_dispose (spSkeleton* self);
|
||||
|
||||
/* Caches information about bones and constraints. Must be called if bones or constraints are added or removed. */
|
||||
void spSkeleton_updateCache (const spSkeleton* self);
|
||||
/* Caches information about bones and constraints. Must be called if bones or constraints, or weighted path attachments
|
||||
* are added or removed. */
|
||||
void spSkeleton_updateCache (spSkeleton* self);
|
||||
void spSkeleton_updateWorldTransform (const spSkeleton* self);
|
||||
|
||||
/* Sets the bones, constraints, and slots to their setup pose values. */
|
||||
@ -137,6 +144,9 @@ spIkConstraint* spSkeleton_findIkConstraint (const spSkeleton* self, const char*
|
||||
/* Returns 0 if the transform constraint was not found. */
|
||||
spTransformConstraint* spSkeleton_findTransformConstraint (const spSkeleton* self, const char* constraintName);
|
||||
|
||||
/* Returns 0 if the path constraint was not found. */
|
||||
spPathConstraint* spSkeleton_findPathConstraint (const spSkeleton* self, const char* constraintName);
|
||||
|
||||
void spSkeleton_update (spSkeleton* self, float deltaTime);
|
||||
|
||||
#ifdef SPINE_SHORT_NAMES
|
||||
|
||||
@ -39,6 +39,7 @@
|
||||
#include <spine/Animation.h>
|
||||
#include <spine/IkConstraintData.h>
|
||||
#include <spine/TransformConstraintData.h>
|
||||
#include <spine/PathConstraintData.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
@ -70,6 +71,9 @@ typedef struct spSkeletonData {
|
||||
|
||||
int transformConstraintsCount;
|
||||
spTransformConstraintData** transformConstraints;
|
||||
|
||||
int pathConstraintsCount;
|
||||
spPathConstraintData** pathConstraints;
|
||||
} spSkeletonData;
|
||||
|
||||
spSkeletonData* spSkeletonData_create ();
|
||||
@ -91,6 +95,8 @@ spIkConstraintData* spSkeletonData_findIkConstraint (const spSkeletonData* self,
|
||||
|
||||
spTransformConstraintData* spSkeletonData_findTransformConstraint (const spSkeletonData* self, const char* constraintName);
|
||||
|
||||
spPathConstraintData* spSkeletonData_findPathConstraint (const spSkeletonData* self, const char* constraintName);
|
||||
|
||||
#ifdef SPINE_SHORT_NAMES
|
||||
typedef spSkeletonData SkeletonData;
|
||||
#define SkeletonData_create(...) spSkeletonData_create(__VA_ARGS__)
|
||||
|
||||
@ -50,6 +50,20 @@ typedef struct spSkin {
|
||||
#endif
|
||||
} spSkin;
|
||||
|
||||
/* Private structs, needed by Skeleton */
|
||||
typedef struct _Entry _Entry;
|
||||
struct _Entry {
|
||||
int slotIndex;
|
||||
const char* name;
|
||||
spAttachment* attachment;
|
||||
_Entry* next;
|
||||
};
|
||||
|
||||
typedef struct {
|
||||
spSkin super;
|
||||
_Entry* entries;
|
||||
} _spSkin;
|
||||
|
||||
spSkin* spSkin_create (const char* name);
|
||||
void spSkin_dispose (spSkin* self);
|
||||
|
||||
|
||||
@ -43,6 +43,7 @@ typedef enum {
|
||||
} spBlendMode;
|
||||
|
||||
typedef struct spSlotData {
|
||||
const int index;
|
||||
const char* const name;
|
||||
const spBoneData* const boneData;
|
||||
const char* attachmentName;
|
||||
@ -51,6 +52,7 @@ typedef struct spSlotData {
|
||||
|
||||
#ifdef __cplusplus
|
||||
spSlotData() :
|
||||
index(0),
|
||||
name(0),
|
||||
boneData(0),
|
||||
attachmentName(0),
|
||||
@ -60,7 +62,7 @@ typedef struct spSlotData {
|
||||
#endif
|
||||
} spSlotData;
|
||||
|
||||
spSlotData* spSlotData_create (const char* name, spBoneData* boneData);
|
||||
spSlotData* spSlotData_create (const int index, const char* name, spBoneData* boneData);
|
||||
void spSlotData_dispose (spSlotData* self);
|
||||
|
||||
/* @param attachmentName May be 0 for no setup pose attachment. */
|
||||
|
||||
@ -43,26 +43,21 @@ struct spSkeleton;
|
||||
|
||||
typedef struct spTransformConstraint {
|
||||
spTransformConstraintData* const data;
|
||||
spBone* bone;
|
||||
int bonesCount;
|
||||
spBone** const bones;
|
||||
spBone* target;
|
||||
float rotateMix, translateMix, scaleMix, shearMix;
|
||||
float offsetRotation, offsetX, offsetY, offsetScaleX, offsetScaleY, offsetShearY;
|
||||
|
||||
#ifdef __cplusplus
|
||||
spTransformConstraint() :
|
||||
data(0),
|
||||
bone(0),
|
||||
bonesCount(0),
|
||||
bones(0),
|
||||
target(0),
|
||||
rotateMix(0),
|
||||
translateMix(0),
|
||||
scaleMix(0),
|
||||
shearMix(0),
|
||||
offsetRotation(0),
|
||||
offsetX(0),
|
||||
offsetY(0),
|
||||
offsetScaleX(0),
|
||||
offsetScaleY(0),
|
||||
offsetShearY(0) {
|
||||
shearMix(0) {
|
||||
}
|
||||
#endif
|
||||
} spTransformConstraint;
|
||||
|
||||
@ -40,8 +40,8 @@ extern "C" {
|
||||
|
||||
typedef struct spTransformConstraintData {
|
||||
const char* const name;
|
||||
|
||||
spBoneData* bone;
|
||||
int bonesCount;
|
||||
spBoneData** const bones;
|
||||
spBoneData* target;
|
||||
float rotateMix, translateMix, scaleMix, shearMix;
|
||||
float offsetRotation, offsetX, offsetY, offsetScaleX, offsetScaleY, offsetShearY;
|
||||
@ -49,7 +49,8 @@ typedef struct spTransformConstraintData {
|
||||
#ifdef __cplusplus
|
||||
spTransformConstraintData() :
|
||||
name(0),
|
||||
bone(0),
|
||||
bonesCount(0),
|
||||
bones(0),
|
||||
target(0),
|
||||
rotateMix(0),
|
||||
translateMix(0),
|
||||
|
||||
@ -29,8 +29,8 @@
|
||||
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*****************************************************************************/
|
||||
|
||||
#ifndef SPINE_WEIGHTEDMESHATTACHMENT_H_
|
||||
#define SPINE_WEIGHTEDMESHATTACHMENT_H_
|
||||
#ifndef SPINE_VERTEXATTACHMENT_H_
|
||||
#define SPINE_VERTEXATTACHMENT_H_
|
||||
|
||||
#include <spine/Attachment.h>
|
||||
#include <spine/Slot.h>
|
||||
@ -39,58 +39,30 @@
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
typedef struct spWeightedMeshAttachment spWeightedMeshAttachment;
|
||||
struct spWeightedMeshAttachment {
|
||||
typedef struct spVertexAttachment spVertexAttachment;
|
||||
struct spVertexAttachment {
|
||||
spAttachment super;
|
||||
const char* path;
|
||||
|
||||
int bonesCount;
|
||||
int* bones;
|
||||
|
||||
int weightsCount;
|
||||
float* weights;
|
||||
int verticesCount;
|
||||
float* vertices;
|
||||
|
||||
int trianglesCount;
|
||||
unsigned short* triangles;
|
||||
|
||||
int uvsCount;
|
||||
float* regionUVs;
|
||||
float* uvs;
|
||||
int hullLength;
|
||||
|
||||
spWeightedMeshAttachment* const parentMesh;
|
||||
int/*bool*/inheritFFD;
|
||||
|
||||
float r, g, b, a;
|
||||
|
||||
void* rendererObject;
|
||||
int regionOffsetX, regionOffsetY; /* Pixels stripped from the bottom left, unrotated. */
|
||||
int regionWidth, regionHeight; /* Unrotated, stripped pixel size. */
|
||||
int regionOriginalWidth, regionOriginalHeight; /* Unrotated, unstripped pixel size. */
|
||||
float regionU, regionV, regionU2, regionV2;
|
||||
int/*bool*/regionRotate;
|
||||
|
||||
/* Nonessential. */
|
||||
int edgesCount;
|
||||
int* edges;
|
||||
float width, height;
|
||||
int worldVerticesLength;
|
||||
};
|
||||
|
||||
spWeightedMeshAttachment* spWeightedMeshAttachment_create (const char* name);
|
||||
void spWeightedMeshAttachment_updateUVs (spWeightedMeshAttachment* self);
|
||||
void spWeightedMeshAttachment_computeWorldVertices (spWeightedMeshAttachment* self, spSlot* slot, float* worldVertices);
|
||||
void spWeightedMeshAttachment_setParentMesh (spWeightedMeshAttachment* self, spWeightedMeshAttachment* parentMesh);
|
||||
void spVertexAttachment_computeWorldVertices (spVertexAttachment* self, spSlot* slot, float* worldVertices);
|
||||
void spVertexAttachment_computeWorldVertices1 (spVertexAttachment* self, int start, int count, spSlot* slot, float* worldVertices, int offset);
|
||||
|
||||
#ifdef SPINE_SHORT_NAMES
|
||||
typedef spWeightedMeshAttachment WeightedMeshAttachment;
|
||||
#define WeightedMeshAttachment_create(...) spWeightedMeshAttachment_create(__VA_ARGS__)
|
||||
#define WeightedMeshAttachment_updateUVs(...) spWeightedMeshAttachment_updateUVs(__VA_ARGS__)
|
||||
#define WeightedMeshAttachment_computeWorldVertices(...) spWeightedMeshAttachment_computeWorldVertices(__VA_ARGS__)
|
||||
#define WeightedMeshAttachment_setParentMesh(...) spWeightedMeshAttachment_setParentMesh(__VA_ARGS__)
|
||||
typedef spVertexAttachment VertexAttachment;
|
||||
#define VertexAttachment_computeWorldVertices(...) spVertexAttachment_computeWorldVertices(__VA_ARGS__)
|
||||
#define VertexAttachment_computeWorldVertices1(...) spVertexAttachment_computeWorldVertices1(__VA_ARGS__)
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* SPINE_WEIGHTEDMESHATTACHMENT_H_ */
|
||||
#endif /* SPINE_VERTEXATTACHMENT_H_ */
|
||||
@ -82,6 +82,10 @@
|
||||
#define ACOS(A) (float)acos(A)
|
||||
#endif
|
||||
|
||||
#define CLAMP(x, min, max) (x < min ? min : (x > max ? max : x))
|
||||
#define MIN(x, y) (x < y ? x : y)
|
||||
#define MAX(x, y) (x > y ? x : y)
|
||||
|
||||
#define UNUSED(x) (void)(x)
|
||||
|
||||
#include <stdlib.h>
|
||||
@ -91,10 +95,11 @@
|
||||
#include <spine/Animation.h>
|
||||
#include <spine/Atlas.h>
|
||||
#include <spine/AttachmentLoader.h>
|
||||
#include <spine/VertexAttachment.h>
|
||||
#include <spine/RegionAttachment.h>
|
||||
#include <spine/MeshAttachment.h>
|
||||
#include <spine/WeightedMeshAttachment.h>
|
||||
#include <spine/BoundingBoxAttachment.h>
|
||||
#include <spine/PathAttachment.h>
|
||||
#include <spine/AnimationState.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
@ -178,10 +183,12 @@ void _spAttachmentLoader_setUnknownTypeError (spAttachmentLoader* self, spAttach
|
||||
void _spAttachment_init (spAttachment* self, const char* name, spAttachmentType type,
|
||||
void (*dispose) (spAttachment* self));
|
||||
void _spAttachment_deinit (spAttachment* self);
|
||||
void _spVertexAttachment_deinit (spVertexAttachment* self);
|
||||
|
||||
#ifdef SPINE_SHORT_NAMES
|
||||
#define _Attachment_init(...) _spAttachment_init(__VA_ARGS__)
|
||||
#define _Attachment_deinit(...) _spAttachment_deinit(__VA_ARGS__)
|
||||
#define _VertexAttachment_deinit(...) _spVertexAttachment_deinit(__VA_ARGS__)
|
||||
#endif
|
||||
|
||||
/**/
|
||||
|
||||
@ -42,8 +42,8 @@
|
||||
#include <spine/Bone.h>
|
||||
#include <spine/BoneData.h>
|
||||
#include <spine/RegionAttachment.h>
|
||||
#include <spine/VertexAttachment.h>
|
||||
#include <spine/MeshAttachment.h>
|
||||
#include <spine/WeightedMeshAttachment.h>
|
||||
#include <spine/BoundingBoxAttachment.h>
|
||||
#include <spine/Skeleton.h>
|
||||
#include <spine/SkeletonBounds.h>
|
||||
|
||||
@ -111,7 +111,7 @@ void spTimeline_apply (const spTimeline* self, spSkeleton* skeleton, float lastT
|
||||
/**/
|
||||
|
||||
static const float CURVE_LINEAR = 0, CURVE_STEPPED = 1, CURVE_BEZIER = 2;
|
||||
static const int BEZIER_SEGMENTS = 10, BEZIER_SIZE = 10 * 2 - 1;
|
||||
static const int BEZIER_SIZE = 10 * 2 - 1;
|
||||
|
||||
void _spCurveTimeline_init (spCurveTimeline* self, spTimelineType type, int framesCount, /**/
|
||||
void (*dispose) (spTimeline* self), /**/
|
||||
@ -135,12 +135,10 @@ void spCurveTimeline_setStepped (spCurveTimeline* self, int frameIndex) {
|
||||
}
|
||||
|
||||
void spCurveTimeline_setCurve (spCurveTimeline* self, int frameIndex, float cx1, float cy1, float cx2, float cy2) {
|
||||
float subdiv1 = 1.0f / BEZIER_SEGMENTS, subdiv2 = subdiv1 * subdiv1, subdiv3 = subdiv2 * subdiv1;
|
||||
float pre1 = 3 * subdiv1, pre2 = 3 * subdiv2, pre4 = 6 * subdiv2, pre5 = 6 * subdiv3;
|
||||
float tmp1x = -cx1 * 2 + cx2, tmp1y = -cy1 * 2 + cy2, tmp2x = (cx1 - cx2) * 3 + 1, tmp2y = (cy1 - cy2) * 3 + 1;
|
||||
float dfx = cx1 * pre1 + tmp1x * pre2 + tmp2x * subdiv3, dfy = cy1 * pre1 + tmp1y * pre2 + tmp2y * subdiv3;
|
||||
float ddfx = tmp1x * pre4 + tmp2x * pre5, ddfy = tmp1y * pre4 + tmp2y * pre5;
|
||||
float dddfx = tmp2x * pre5, dddfy = tmp2y * pre5;
|
||||
float tmpx = (-cx1 * 2 + cx2) * 0.03f, tmpy = (-cy1 * 2 + cy2) * 0.03f;
|
||||
float dddfx = ((cx1 - cx2) * 3 + 1) * 0.006f, dddfy = ((cy1 - cy2) * 3 + 1) * 0.006f;
|
||||
float ddfx = tmpx * 2 + dddfx, ddfy = tmpy * 2 + dddfy;
|
||||
float dfx = cx1 * 0.3f + tmpx + dddfx * 0.16666667f, dfy = cy1 * 0.3f + tmpy + dddfy * 0.16666667f;
|
||||
float x = dfx, y = dfy;
|
||||
|
||||
int i = frameIndex * BEZIER_SIZE, n = i + BEZIER_SIZE - 1;
|
||||
@ -162,6 +160,7 @@ float spCurveTimeline_getCurvePercent (const spCurveTimeline* self, int frameInd
|
||||
float x, y;
|
||||
int i = frameIndex * BEZIER_SIZE, start, n;
|
||||
float type = self->curves[i];
|
||||
percent = CLAMP(percent, 0, 1);
|
||||
if (type == CURVE_LINEAR) return percent;
|
||||
if (type == CURVE_STEPPED) return 0;
|
||||
i++;
|
||||
@ -218,15 +217,6 @@ static int binarySearch1 (float *values, int valuesLength, float target) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*static int linearSearch (float *values, int valuesLength, float target, int step) {
|
||||
int i, last = valuesLength - step;
|
||||
for (i = 0; i <= last; i += step) {
|
||||
if (values[i] <= target) continue;
|
||||
return i;
|
||||
}
|
||||
return -1;
|
||||
}*/
|
||||
|
||||
/**/
|
||||
|
||||
void _spBaseTimeline_dispose (spTimeline* timeline) {
|
||||
@ -251,14 +241,14 @@ struct spBaseTimeline* _spBaseTimeline_create (int framesCount, spTimelineType t
|
||||
|
||||
/**/
|
||||
|
||||
static const int ROTATE_PREV_TIME = -2;
|
||||
static const int ROTATE_FRAME = 1;
|
||||
static const int ROTATE_PREV_TIME = -2, ROTATE_PREV_ROTATION = -1;
|
||||
static const int ROTATE_ROTATION = 1;
|
||||
|
||||
void _spRotateTimeline_apply (const spTimeline* timeline, spSkeleton* skeleton, float lastTime, float time, spEvent** firedEvents,
|
||||
int* eventsCount, float alpha) {
|
||||
spBone *bone;
|
||||
int frame;
|
||||
float prevFrameValue, frameTime, percent, amount;
|
||||
float prevRotation, frameTime, percent, amount;
|
||||
|
||||
spRotateTimeline* self = SUB_CAST(spRotateTimeline, timeline);
|
||||
|
||||
@ -266,8 +256,8 @@ void _spRotateTimeline_apply (const spTimeline* timeline, spSkeleton* skeleton,
|
||||
|
||||
bone = skeleton->bones[self->boneIndex];
|
||||
|
||||
if (time >= self->frames[self->framesCount - 2]) { /* Time is after last frame. */
|
||||
amount = bone->data->rotation + self->frames[self->framesCount - 1] - bone->rotation;
|
||||
if (time >= self->frames[self->framesCount - ROTATE_ENTRIES]) { /* Time is after last frame. */
|
||||
amount = bone->data->rotation + self->frames[self->framesCount + ROTATE_PREV_ROTATION] - bone->rotation;
|
||||
while (amount > 180)
|
||||
amount -= 360;
|
||||
while (amount < -180)
|
||||
@ -277,18 +267,17 @@ void _spRotateTimeline_apply (const spTimeline* timeline, spSkeleton* skeleton,
|
||||
}
|
||||
|
||||
/* Interpolate between the previous frame and the current frame. */
|
||||
frame = binarySearch(self->frames, self->framesCount, time, 2);
|
||||
prevFrameValue = self->frames[frame - 1];
|
||||
frame = binarySearch(self->frames, self->framesCount, time, ROTATE_ENTRIES);
|
||||
prevRotation = self->frames[frame + ROTATE_PREV_ROTATION];
|
||||
frameTime = self->frames[frame];
|
||||
percent = 1 - (time - frameTime) / (self->frames[frame + ROTATE_PREV_TIME] - frameTime);
|
||||
percent = spCurveTimeline_getCurvePercent(SUPER(self), (frame >> 1) - 1, percent < 0 ? 0 : (percent > 1 ? 1 : percent));
|
||||
percent = spCurveTimeline_getCurvePercent(SUPER(self), (frame >> 1) - 1, 1 - (time - frameTime) / (self->frames[frame + ROTATE_PREV_TIME] - frameTime));
|
||||
|
||||
amount = self->frames[frame + ROTATE_FRAME] - prevFrameValue;
|
||||
amount = self->frames[frame + ROTATE_ROTATION] - prevRotation;
|
||||
while (amount > 180)
|
||||
amount -= 360;
|
||||
while (amount < -180)
|
||||
amount += 360;
|
||||
amount = bone->data->rotation + (prevFrameValue + amount * percent) - bone->rotation;
|
||||
amount = bone->data->rotation + (prevRotation + amount * percent) - bone->rotation;
|
||||
while (amount > 180)
|
||||
amount -= 360;
|
||||
while (amount < -180)
|
||||
@ -301,26 +290,25 @@ void _spRotateTimeline_apply (const spTimeline* timeline, spSkeleton* skeleton,
|
||||
}
|
||||
|
||||
spRotateTimeline* spRotateTimeline_create (int framesCount) {
|
||||
return _spBaseTimeline_create(framesCount, SP_TIMELINE_ROTATE, 2, _spRotateTimeline_apply);
|
||||
return _spBaseTimeline_create(framesCount, SP_TIMELINE_ROTATE, ROTATE_ENTRIES, _spRotateTimeline_apply);
|
||||
}
|
||||
|
||||
void spRotateTimeline_setFrame (spRotateTimeline* self, int frameIndex, float time, float angle) {
|
||||
frameIndex *= 2;
|
||||
void spRotateTimeline_setFrame (spRotateTimeline* self, int frameIndex, float time, float degrees) {
|
||||
frameIndex <<= 1;
|
||||
self->frames[frameIndex] = time;
|
||||
self->frames[frameIndex + 1] = angle;
|
||||
self->frames[frameIndex + ROTATE_ROTATION] = degrees;
|
||||
}
|
||||
|
||||
/**/
|
||||
|
||||
static const int TRANSLATE_PREV_TIME = -3;
|
||||
static const int TRANSLATE_X = 1;
|
||||
static const int TRANSLATE_Y = 2;
|
||||
static const int TRANSLATE_PREV_TIME = -3, TRANSLATE_PREV_X = -2, TRANSLATE_PREV_Y = -1;
|
||||
static const int TRANSLATE_X = 1, TRANSLATE_Y = 2;
|
||||
|
||||
void _spTranslateTimeline_apply (const spTimeline* timeline, spSkeleton* skeleton, float lastTime, float time,
|
||||
spEvent** firedEvents, int* eventsCount, float alpha) {
|
||||
spBone *bone;
|
||||
int frame;
|
||||
float prevFrameX, prevFrameY, frameTime, percent;
|
||||
float prevX, prevY, frameTime, percent;
|
||||
|
||||
spTranslateTimeline* self = SUB_CAST(spTranslateTimeline, timeline);
|
||||
|
||||
@ -328,24 +316,21 @@ void _spTranslateTimeline_apply (const spTimeline* timeline, spSkeleton* skeleto
|
||||
|
||||
bone = skeleton->bones[self->boneIndex];
|
||||
|
||||
if (time >= self->frames[self->framesCount - 3]) { /* Time is after last frame. */
|
||||
bone->x += (bone->data->x + self->frames[self->framesCount - 2] - bone->x) * alpha;
|
||||
bone->y += (bone->data->y + self->frames[self->framesCount - 1] - bone->y) * alpha;
|
||||
if (time >= self->frames[self->framesCount - TRANSLATE_ENTRIES]) { /* Time is after last frame. */
|
||||
bone->x += (bone->data->x + self->frames[self->framesCount + TRANSLATE_PREV_X] - bone->x) * alpha;
|
||||
bone->y += (bone->data->y + self->frames[self->framesCount + TRANSLATE_PREV_Y] - bone->y) * alpha;
|
||||
return;
|
||||
}
|
||||
|
||||
/* Interpolate between the previous frame and the current frame. */
|
||||
frame = binarySearch(self->frames, self->framesCount, time, 3);
|
||||
prevFrameX = self->frames[frame - 2];
|
||||
prevFrameY = self->frames[frame - 1];
|
||||
frame = binarySearch(self->frames, self->framesCount, time, TRANSLATE_ENTRIES);
|
||||
prevX = self->frames[frame + TRANSLATE_PREV_X];
|
||||
prevY = self->frames[frame + TRANSLATE_PREV_Y];
|
||||
frameTime = self->frames[frame];
|
||||
percent = 1 - (time - frameTime) / (self->frames[frame + TRANSLATE_PREV_TIME] - frameTime);
|
||||
percent = spCurveTimeline_getCurvePercent(SUPER(self), frame / 3 - 1, percent < 0 ? 0 : (percent > 1 ? 1 : percent));
|
||||
percent = spCurveTimeline_getCurvePercent(SUPER(self), frame / TRANSLATE_ENTRIES - 1, 1 - (time - frameTime) / (self->frames[frame + TRANSLATE_PREV_TIME] - frameTime));
|
||||
|
||||
bone->x += (bone->data->x + prevFrameX + (self->frames[frame + TRANSLATE_X] - prevFrameX) * percent - bone->x)
|
||||
* alpha;
|
||||
bone->y += (bone->data->y + prevFrameY + (self->frames[frame + TRANSLATE_Y] - prevFrameY) * percent - bone->y)
|
||||
* alpha;
|
||||
bone->x += (bone->data->x + prevX + (self->frames[frame + TRANSLATE_X] - prevX) * percent - bone->x) * alpha;
|
||||
bone->y += (bone->data->y + prevY + (self->frames[frame + TRANSLATE_Y] - prevY) * percent - bone->y) * alpha;
|
||||
|
||||
UNUSED(lastTime);
|
||||
UNUSED(firedEvents);
|
||||
@ -353,14 +338,14 @@ void _spTranslateTimeline_apply (const spTimeline* timeline, spSkeleton* skeleto
|
||||
}
|
||||
|
||||
spTranslateTimeline* spTranslateTimeline_create (int framesCount) {
|
||||
return _spBaseTimeline_create(framesCount, SP_TIMELINE_TRANSLATE, 3, _spTranslateTimeline_apply);
|
||||
return _spBaseTimeline_create(framesCount, SP_TIMELINE_TRANSLATE, TRANSLATE_ENTRIES, _spTranslateTimeline_apply);
|
||||
}
|
||||
|
||||
void spTranslateTimeline_setFrame (spTranslateTimeline* self, int frameIndex, float time, float x, float y) {
|
||||
frameIndex *= 3;
|
||||
frameIndex *= TRANSLATE_ENTRIES;
|
||||
self->frames[frameIndex] = time;
|
||||
self->frames[frameIndex + 1] = x;
|
||||
self->frames[frameIndex + 2] = y;
|
||||
self->frames[frameIndex + TRANSLATE_X] = x;
|
||||
self->frames[frameIndex + TRANSLATE_Y] = y;
|
||||
}
|
||||
|
||||
/**/
|
||||
@ -369,31 +354,28 @@ void _spScaleTimeline_apply (const spTimeline* timeline, spSkeleton* skeleton, f
|
||||
int* eventsCount, float alpha) {
|
||||
spBone *bone;
|
||||
int frame;
|
||||
float prevFrameX, prevFrameY, frameTime, percent;
|
||||
float prevX, prevY, frameTime, percent;
|
||||
|
||||
spScaleTimeline* self = SUB_CAST(spScaleTimeline, timeline);
|
||||
|
||||
if (time < self->frames[0]) return; /* Time is before first frame. */
|
||||
|
||||
bone = skeleton->bones[self->boneIndex];
|
||||
if (time >= self->frames[self->framesCount - 3]) { /* Time is after last frame. */
|
||||
bone->scaleX += (bone->data->scaleX * self->frames[self->framesCount - 2] - bone->scaleX) * alpha;
|
||||
bone->scaleY += (bone->data->scaleY * self->frames[self->framesCount - 1] - bone->scaleY) * alpha;
|
||||
if (time >= self->frames[self->framesCount - TRANSLATE_ENTRIES]) { /* Time is after last frame. */
|
||||
bone->scaleX += (bone->data->scaleX * self->frames[self->framesCount + TRANSLATE_PREV_X] - bone->scaleX) * alpha;
|
||||
bone->scaleY += (bone->data->scaleY * self->frames[self->framesCount + TRANSLATE_PREV_Y] - bone->scaleY) * alpha;
|
||||
return;
|
||||
}
|
||||
|
||||
/* Interpolate between the previous frame and the current frame. */
|
||||
frame = binarySearch(self->frames, self->framesCount, time, 3);
|
||||
prevFrameX = self->frames[frame - 2];
|
||||
prevFrameY = self->frames[frame - 1];
|
||||
frame = binarySearch(self->frames, self->framesCount, time, TRANSLATE_ENTRIES);
|
||||
prevX = self->frames[frame + TRANSLATE_PREV_X];
|
||||
prevY = self->frames[frame + TRANSLATE_PREV_Y];
|
||||
frameTime = self->frames[frame];
|
||||
percent = 1 - (time - frameTime) / (self->frames[frame + TRANSLATE_PREV_TIME] - frameTime);
|
||||
percent = spCurveTimeline_getCurvePercent(SUPER(self), frame / 3 - 1, percent < 0 ? 0 : (percent > 1 ? 1 : percent));
|
||||
percent = spCurveTimeline_getCurvePercent(SUPER(self), frame / TRANSLATE_ENTRIES - 1, 1 - (time - frameTime) / (self->frames[frame + TRANSLATE_PREV_TIME] - frameTime));
|
||||
|
||||
bone->scaleX += (bone->data->scaleX * (prevFrameX + (self->frames[frame + TRANSLATE_X] - prevFrameX) * percent)
|
||||
- bone->scaleX) * alpha;
|
||||
bone->scaleY += (bone->data->scaleY * (prevFrameY + (self->frames[frame + TRANSLATE_Y] - prevFrameY) * percent)
|
||||
- bone->scaleY) * alpha;
|
||||
bone->scaleX += (bone->data->scaleX * (prevX + (self->frames[frame + TRANSLATE_X] - prevX) * percent) - bone->scaleX) * alpha;
|
||||
bone->scaleY += (bone->data->scaleY * (prevY + (self->frames[frame + TRANSLATE_Y] - prevY) * percent) - bone->scaleY) * alpha;
|
||||
|
||||
UNUSED(lastTime);
|
||||
UNUSED(firedEvents);
|
||||
@ -401,7 +383,7 @@ void _spScaleTimeline_apply (const spTimeline* timeline, spSkeleton* skeleton, f
|
||||
}
|
||||
|
||||
spScaleTimeline* spScaleTimeline_create (int framesCount) {
|
||||
return _spBaseTimeline_create(framesCount, SP_TIMELINE_SCALE, 3, _spScaleTimeline_apply);
|
||||
return _spBaseTimeline_create(framesCount, SP_TIMELINE_SCALE, TRANSLATE_ENTRIES, _spScaleTimeline_apply);
|
||||
}
|
||||
|
||||
void spScaleTimeline_setFrame (spScaleTimeline* self, int frameIndex, float time, float x, float y) {
|
||||
@ -414,31 +396,28 @@ void _spShearTimeline_apply (const spTimeline* timeline, spSkeleton* skeleton, f
|
||||
int* eventsCount, float alpha) {
|
||||
spBone *bone;
|
||||
int frame;
|
||||
float prevFrameX, prevFrameY, frameTime, percent;
|
||||
float prevX, prevY, frameTime, percent;
|
||||
|
||||
spShearTimeline* self = SUB_CAST(spShearTimeline, timeline);
|
||||
|
||||
if (time < self->frames[0]) return; /* Time is before first frame. */
|
||||
|
||||
bone = skeleton->bones[self->boneIndex];
|
||||
if (time >= self->frames[self->framesCount - 3]) { /* Time is after last frame. */
|
||||
bone->shearX += (bone->data->shearX * self->frames[self->framesCount - 2] - bone->shearX) * alpha;
|
||||
bone->shearY += (bone->data->shearY * self->frames[self->framesCount - 1] - bone->shearY) * alpha;
|
||||
if (time >= self->frames[self->framesCount - TRANSLATE_ENTRIES]) { /* Time is after last frame. */
|
||||
bone->shearX += (bone->data->shearX + self->frames[self->framesCount + TRANSLATE_PREV_X] - bone->shearX) * alpha;
|
||||
bone->shearY += (bone->data->shearY + self->frames[self->framesCount + TRANSLATE_PREV_Y] - bone->shearY) * alpha;
|
||||
return;
|
||||
}
|
||||
|
||||
/* Interpolate between the previous frame and the current frame. */
|
||||
frame = binarySearch(self->frames, self->framesCount, time, 3);
|
||||
prevFrameX = self->frames[frame - 2];
|
||||
prevFrameY = self->frames[frame - 1];
|
||||
frame = binarySearch(self->frames, self->framesCount, time, TRANSLATE_ENTRIES);
|
||||
prevX = self->frames[frame + TRANSLATE_PREV_X];
|
||||
prevY = self->frames[frame + TRANSLATE_PREV_Y];
|
||||
frameTime = self->frames[frame];
|
||||
percent = 1 - (time - frameTime) / (self->frames[frame + TRANSLATE_PREV_TIME] - frameTime);
|
||||
percent = spCurveTimeline_getCurvePercent(SUPER(self), frame / 3 - 1, percent < 0 ? 0 : (percent > 1 ? 1 : percent));
|
||||
percent = spCurveTimeline_getCurvePercent(SUPER(self), frame / TRANSLATE_ENTRIES - 1, 1 - (time - frameTime) / (self->frames[frame + TRANSLATE_PREV_TIME] - frameTime));
|
||||
|
||||
bone->shearX += (bone->data->shearX + (prevFrameX + (self->frames[frame + TRANSLATE_X] - prevFrameX) * percent)
|
||||
- bone->shearX) * alpha;
|
||||
bone->shearY += (bone->data->shearY + (prevFrameY + (self->frames[frame + TRANSLATE_Y] - prevFrameY) * percent)
|
||||
- bone->shearY) * alpha;
|
||||
bone->shearX += (bone->data->shearX + prevX + (self->frames[frame + TRANSLATE_X] - prevX) * percent - bone->shearX) * alpha;
|
||||
bone->shearY += (bone->data->shearY + prevY + (self->frames[frame + TRANSLATE_Y] - prevY) * percent - bone->shearY) * alpha;
|
||||
|
||||
UNUSED(lastTime);
|
||||
UNUSED(firedEvents);
|
||||
@ -455,11 +434,8 @@ void spShearTimeline_setFrame (spShearTimeline* self, int frameIndex, float time
|
||||
|
||||
/**/
|
||||
|
||||
static const int COLOR_PREV_TIME = -5;
|
||||
static const int COLOR_R = 1;
|
||||
static const int COLOR_G = 2;
|
||||
static const int COLOR_B = 3;
|
||||
static const int COLOR_A = 4;
|
||||
static const int COLOR_PREV_TIME = -5, COLOR_PREV_R = -4, COLOR_PREV_G = -3, COLOR_PREV_B = -2, COLOR_PREV_A = -1;
|
||||
static const int COLOR_R = 1, COLOR_G = 2, COLOR_B = 3, COLOR_A = 4;
|
||||
|
||||
void _spColorTimeline_apply (const spTimeline* timeline, spSkeleton* skeleton, float lastTime, float time, spEvent** firedEvents,
|
||||
int* eventsCount, float alpha) {
|
||||
@ -472,22 +448,23 @@ void _spColorTimeline_apply (const spTimeline* timeline, spSkeleton* skeleton, f
|
||||
if (time < self->frames[0]) return; /* Time is before first frame. */
|
||||
|
||||
if (time >= self->frames[self->framesCount - 5]) { /* Time is after last frame */
|
||||
int i = self->framesCount - 1;
|
||||
r = self->frames[i - 3];
|
||||
g = self->frames[i - 2];
|
||||
b = self->frames[i - 1];
|
||||
a = self->frames[i];
|
||||
int i = self->framesCount;
|
||||
r = self->frames[i + COLOR_PREV_R];
|
||||
g = self->frames[i + COLOR_PREV_G];
|
||||
b = self->frames[i + COLOR_PREV_B];
|
||||
a = self->frames[i + COLOR_PREV_A];
|
||||
} else {
|
||||
/* Interpolate between the previous frame and the current frame. */
|
||||
frame = binarySearch(self->frames, self->framesCount, time, 5);
|
||||
frameTime = self->frames[frame];
|
||||
percent = 1 - (time - frameTime) / (self->frames[frame + COLOR_PREV_TIME] - frameTime);
|
||||
percent = spCurveTimeline_getCurvePercent(SUPER(self), frame / 5 - 1, percent < 0 ? 0 : (percent > 1 ? 1 : percent));
|
||||
frame = binarySearch(self->frames, self->framesCount, time, COLOR_ENTRIES);
|
||||
|
||||
r = self->frames[frame - 4];
|
||||
g = self->frames[frame - 3];
|
||||
b = self->frames[frame - 2];
|
||||
a = self->frames[frame - 1];
|
||||
r = self->frames[frame + COLOR_PREV_R];
|
||||
g = self->frames[frame + COLOR_PREV_G];
|
||||
b = self->frames[frame + COLOR_PREV_B];
|
||||
a = self->frames[frame + COLOR_PREV_A];
|
||||
|
||||
frameTime = self->frames[frame];
|
||||
percent = spCurveTimeline_getCurvePercent(SUPER(self), frame / COLOR_ENTRIES - 1,
|
||||
1 - (time - frameTime) / (self->frames[frame + COLOR_PREV_TIME] - frameTime));
|
||||
|
||||
r += (self->frames[frame + COLOR_R] - r) * percent;
|
||||
g += (self->frames[frame + COLOR_G] - g) * percent;
|
||||
@ -517,33 +494,30 @@ spColorTimeline* spColorTimeline_create (int framesCount) {
|
||||
}
|
||||
|
||||
void spColorTimeline_setFrame (spColorTimeline* self, int frameIndex, float time, float r, float g, float b, float a) {
|
||||
frameIndex *= 5;
|
||||
frameIndex *= COLOR_ENTRIES;
|
||||
self->frames[frameIndex] = time;
|
||||
self->frames[frameIndex + 1] = r;
|
||||
self->frames[frameIndex + 2] = g;
|
||||
self->frames[frameIndex + 3] = b;
|
||||
self->frames[frameIndex + 4] = a;
|
||||
self->frames[frameIndex + COLOR_R] = r;
|
||||
self->frames[frameIndex + COLOR_G] = g;
|
||||
self->frames[frameIndex + COLOR_B] = b;
|
||||
self->frames[frameIndex + COLOR_A] = a;
|
||||
}
|
||||
|
||||
/**/
|
||||
|
||||
void _spAttachmentTimeline_apply (const spTimeline* timeline, spSkeleton* skeleton, float lastTime, float time,
|
||||
spEvent** firedEvents, int* eventsCount, float alpha) {
|
||||
int frame;
|
||||
const char* attachmentName;
|
||||
spAttachmentTimeline* self = (spAttachmentTimeline*)timeline;
|
||||
int frameIndex;
|
||||
|
||||
if (time < self->frames[0]) {
|
||||
if (lastTime > time) _spAttachmentTimeline_apply(timeline, skeleton, lastTime, (float)INT_MAX, 0, 0, 0);
|
||||
return;
|
||||
} else if (lastTime > time) /**/
|
||||
lastTime = -1;
|
||||
if (time < self->frames[0]) return;
|
||||
|
||||
frame = time >= self->frames[self->framesCount - 1] ?
|
||||
self->framesCount - 1 : binarySearch1(self->frames, self->framesCount, time) - 1;
|
||||
if (self->frames[frame] < lastTime) return;
|
||||
if (time >= self->frames[self->framesCount - 1])
|
||||
frameIndex = self->framesCount - 1;
|
||||
else
|
||||
frameIndex = binarySearch1(self->frames, self->framesCount, time) - 1;
|
||||
|
||||
attachmentName = self->attachmentNames[frame];
|
||||
attachmentName = self->attachmentNames[frameIndex];
|
||||
spSlot_setAttachment(skeleton->slots[self->slotIndex],
|
||||
attachmentName ? spSkeleton_getAttachmentForSlotIndex(skeleton, self->slotIndex, attachmentName) : 0);
|
||||
|
||||
@ -719,13 +693,13 @@ void spDrawOrderTimeline_setFrame (spDrawOrderTimeline* self, int frameIndex, fl
|
||||
|
||||
/**/
|
||||
|
||||
void _spFFDTimeline_apply (const spTimeline* timeline, spSkeleton* skeleton, float lastTime, float time, spEvent** firedEvents,
|
||||
void _spDeformTimeline_apply (const spTimeline* timeline, spSkeleton* skeleton, float lastTime, float time, spEvent** firedEvents,
|
||||
int* eventsCount, float alpha) {
|
||||
int frame, i, vertexCount;
|
||||
float percent, frameTime;
|
||||
const float* prevVertices;
|
||||
const float* nextVertices;
|
||||
spFFDTimeline* self = (spFFDTimeline*)timeline;
|
||||
spDeformTimeline* self = (spDeformTimeline*)timeline;
|
||||
|
||||
spSlot *slot = skeleton->slots[self->slotIndex];
|
||||
|
||||
@ -734,12 +708,7 @@ void _spFFDTimeline_apply (const spTimeline* timeline, spSkeleton* skeleton, flo
|
||||
switch (slot->attachment->type) {
|
||||
case SP_ATTACHMENT_MESH: {
|
||||
spMeshAttachment* mesh = SUB_CAST(spMeshAttachment, slot->attachment);
|
||||
if (!mesh->inheritFFD || mesh->parentMesh != (void*)self->attachment) return;
|
||||
break;
|
||||
}
|
||||
case SP_ATTACHMENT_WEIGHTED_MESH: {
|
||||
spWeightedMeshAttachment* mesh = SUB_CAST(spWeightedMeshAttachment, slot->attachment);
|
||||
if (!mesh->inheritFFD || mesh->parentMesh != (void*)self->attachment) return;
|
||||
if (!mesh->inheritDeform || mesh->parentMesh != (void*)self->attachment) return;
|
||||
break;
|
||||
}
|
||||
default:
|
||||
@ -774,8 +743,7 @@ void _spFFDTimeline_apply (const spTimeline* timeline, spSkeleton* skeleton, flo
|
||||
/* Interpolate between the previous frame and the current frame. */
|
||||
frame = binarySearch1(self->frames, self->framesCount, time);
|
||||
frameTime = self->frames[frame];
|
||||
percent = 1 - (time - frameTime) / (self->frames[frame - 1] - frameTime);
|
||||
percent = spCurveTimeline_getCurvePercent(SUPER(self), frame - 1, percent < 0 ? 0 : (percent > 1 ? 1 : percent));
|
||||
percent = spCurveTimeline_getCurvePercent(SUPER(self), frame - 1, 1 - (time - frameTime) / (self->frames[frame - 1] - frameTime));
|
||||
|
||||
prevVertices = self->frameVertices[frame - 1];
|
||||
nextVertices = self->frameVertices[frame];
|
||||
@ -797,8 +765,8 @@ void _spFFDTimeline_apply (const spTimeline* timeline, spSkeleton* skeleton, flo
|
||||
UNUSED(eventsCount);
|
||||
}
|
||||
|
||||
void _spFFDTimeline_dispose (spTimeline* timeline) {
|
||||
spFFDTimeline* self = SUB_CAST(spFFDTimeline, timeline);
|
||||
void _spDeformTimeline_dispose (spTimeline* timeline) {
|
||||
spDeformTimeline* self = SUB_CAST(spDeformTimeline, timeline);
|
||||
int i;
|
||||
|
||||
_spCurveTimeline_deinit(SUPER(self));
|
||||
@ -810,9 +778,9 @@ void _spFFDTimeline_dispose (spTimeline* timeline) {
|
||||
FREE(self);
|
||||
}
|
||||
|
||||
spFFDTimeline* spFFDTimeline_create (int framesCount, int frameVerticesCount) {
|
||||
spFFDTimeline* self = NEW(spFFDTimeline);
|
||||
_spCurveTimeline_init(SUPER(self), SP_TIMELINE_FFD, framesCount, _spFFDTimeline_dispose, _spFFDTimeline_apply);
|
||||
spDeformTimeline* spDeformTimeline_create (int framesCount, int frameVerticesCount) {
|
||||
spDeformTimeline* self = NEW(spDeformTimeline);
|
||||
_spCurveTimeline_init(SUPER(self), SP_TIMELINE_DEFORM, framesCount, _spDeformTimeline_dispose, _spDeformTimeline_apply);
|
||||
CONST_CAST(int, self->framesCount) = framesCount;
|
||||
CONST_CAST(float*, self->frames) = CALLOC(float, self->framesCount);
|
||||
CONST_CAST(float**, self->frameVertices) = CALLOC(float*, framesCount);
|
||||
@ -820,7 +788,7 @@ spFFDTimeline* spFFDTimeline_create (int framesCount, int frameVerticesCount) {
|
||||
return self;
|
||||
}
|
||||
|
||||
void spFFDTimeline_setFrame (spFFDTimeline* self, int frameIndex, float time, float* vertices) {
|
||||
void spDeformTimeline_setFrame (spDeformTimeline* self, int frameIndex, float time, float* vertices) {
|
||||
self->frames[frameIndex] = time;
|
||||
|
||||
FREE(self->frameVertices[frameIndex]);
|
||||
@ -835,10 +803,8 @@ void spFFDTimeline_setFrame (spFFDTimeline* self, int frameIndex, float time, fl
|
||||
|
||||
/**/
|
||||
|
||||
static const int IKCONSTRAINT_PREV_TIME = -3;
|
||||
static const int IKCONSTRAINT_PREV_MIX = -2;
|
||||
static const int IKCONSTRAINT_PREV_BEND_DIRECTION = -1;
|
||||
static const int IKCONSTRAINT_MIX = 1;
|
||||
static const int IKCONSTRAINT_PREV_TIME = -3, IKCONSTRAINT_PREV_MIX = -2, IKCONSTRAINT_PREV_BEND_DIRECTION = -1;
|
||||
static const int IKCONSTRAINT_MIX = 1, IKCONSTRAINT_BEND_DIRECTION = 2;
|
||||
|
||||
void _spIkConstraintTimeline_apply (const spTimeline* timeline, spSkeleton* skeleton, float lastTime, float time,
|
||||
spEvent** firedEvents, int* eventsCount, float alpha) {
|
||||
@ -851,19 +817,18 @@ void _spIkConstraintTimeline_apply (const spTimeline* timeline, spSkeleton* skel
|
||||
|
||||
constraint = skeleton->ikConstraints[self->ikConstraintIndex];
|
||||
|
||||
if (time >= self->frames[self->framesCount - 3]) { /* Time is after last frame. */
|
||||
if (time >= self->frames[self->framesCount - IKCONSTRAINT_ENTRIES]) { /* Time is after last frame. */
|
||||
constraint->mix += (self->frames[self->framesCount + IKCONSTRAINT_PREV_MIX] - constraint->mix) * alpha;
|
||||
constraint->bendDirection = (int)self->frames[self->framesCount + IKCONSTRAINT_PREV_BEND_DIRECTION];
|
||||
return;
|
||||
}
|
||||
|
||||
/* Interpolate between the previous frame and the current frame. */
|
||||
frame = binarySearch(self->frames, self->framesCount, time, 3);
|
||||
frameTime = self->frames[frame];
|
||||
percent = 1 - (time - frameTime) / (self->frames[frame + IKCONSTRAINT_PREV_TIME] - frameTime);
|
||||
percent = spCurveTimeline_getCurvePercent(SUPER(self), frame / 3 - 1, percent < 0 ? 0 : (percent > 1 ? 1 : percent));
|
||||
|
||||
frame = binarySearch(self->frames, self->framesCount, time, IKCONSTRAINT_ENTRIES);
|
||||
mix = self->frames[frame + IKCONSTRAINT_PREV_MIX];
|
||||
frameTime = self->frames[frame];
|
||||
percent = spCurveTimeline_getCurvePercent(SUPER(self), frame / IKCONSTRAINT_ENTRIES - 1, 1 - (time - frameTime) / (self->frames[frame + IKCONSTRAINT_PREV_TIME] - frameTime));
|
||||
|
||||
constraint->mix += (mix + (self->frames[frame + IKCONSTRAINT_MIX] - mix) * percent - constraint->mix) * alpha;
|
||||
constraint->bendDirection = (int)self->frames[frame + IKCONSTRAINT_PREV_BEND_DIRECTION];
|
||||
|
||||
@ -873,26 +838,26 @@ void _spIkConstraintTimeline_apply (const spTimeline* timeline, spSkeleton* skel
|
||||
}
|
||||
|
||||
spIkConstraintTimeline* spIkConstraintTimeline_create (int framesCount) {
|
||||
return (spIkConstraintTimeline*)_spBaseTimeline_create(framesCount, SP_TIMELINE_IKCONSTRAINT, 3, _spIkConstraintTimeline_apply);
|
||||
return (spIkConstraintTimeline*)_spBaseTimeline_create(framesCount, SP_TIMELINE_IKCONSTRAINT, IKCONSTRAINT_ENTRIES, _spIkConstraintTimeline_apply);
|
||||
}
|
||||
|
||||
void spIkConstraintTimeline_setFrame (spIkConstraintTimeline* self, int frameIndex, float time, float mix, int bendDirection) {
|
||||
frameIndex *= 3;
|
||||
frameIndex *= IKCONSTRAINT_ENTRIES;
|
||||
self->frames[frameIndex] = time;
|
||||
self->frames[frameIndex + 1] = mix;
|
||||
self->frames[frameIndex + 2] = (float)bendDirection;
|
||||
self->frames[frameIndex + IKCONSTRAINT_MIX] = mix;
|
||||
self->frames[frameIndex + IKCONSTRAINT_BEND_DIRECTION] = (float)bendDirection;
|
||||
}
|
||||
|
||||
/**/
|
||||
static const int TRANSFORMCONSTRAINT_PREV_TIME = -5;
|
||||
static const int TRANSFORMCONSTRAINT_PREV_ROTATE_MIX = -4;
|
||||
static const int TRANSFORMCONSTRAINT_PREV_TRANSLATE_MIX = -3;
|
||||
static const int TRANSFORMCONSTRAINT_PREV_SCALE_MIX = -2;
|
||||
static const int TRANSFORMCONSTRAINT_PREV_SHEAR_MIX = -1;
|
||||
static const int TRANSFORMCONSTRAINT_ROTATE_MIX = 1;
|
||||
static const int TRANSFORMCONSTRAINT_TRANSLATE_MIX = 2;
|
||||
static const int TRANSFORMCONSTRAINT_SCALE_MIX = 3;
|
||||
static const int TRANSFORMCONSTRAINT_SHEAR_MIX = 4;
|
||||
static const int TRANSFORMCONSTRAINT_PREV_ROTATE = -4;
|
||||
static const int TRANSFORMCONSTRAINT_PREV_TRANSLATE = -3;
|
||||
static const int TRANSFORMCONSTRAINT_PREV_SCALE = -2;
|
||||
static const int TRANSFORMCONSTRAINT_PREV_SHEAR = -1;
|
||||
static const int TRANSFORMCONSTRAINT_ROTATE = 1;
|
||||
static const int TRANSFORMCONSTRAINT_TRANSLATE = 2;
|
||||
static const int TRANSFORMCONSTRAINT_SCALE = 3;
|
||||
static const int TRANSFORMCONSTRAINT_SHEAR = 4;
|
||||
|
||||
void _spTransformConstraintTimeline_apply (const spTimeline* timeline, spSkeleton* skeleton, float lastTime, float time,
|
||||
spEvent** firedEvents, int* eventsCount, float alpha) {
|
||||
@ -905,30 +870,28 @@ void _spTransformConstraintTimeline_apply (const spTimeline* timeline, spSkeleto
|
||||
|
||||
constraint = skeleton->transformConstraints[self->transformConstraintIndex];
|
||||
|
||||
if (time >= self->frames[self->framesCount - 5]) { /* Time is after last frame. */
|
||||
if (time >= self->frames[self->framesCount - TRANSFORMCONSTRAINT_ENTRIES]) { /* Time is after last frame. */
|
||||
int len = self->framesCount;
|
||||
constraint->rotateMix += (self->frames[len + TRANSFORMCONSTRAINT_PREV_ROTATE_MIX] - constraint->rotateMix) * alpha;
|
||||
constraint->translateMix += (self->frames[len + TRANSFORMCONSTRAINT_PREV_TRANSLATE_MIX] - constraint->translateMix) * alpha;
|
||||
constraint->scaleMix += (self->frames[len + TRANSFORMCONSTRAINT_PREV_SCALE_MIX] - constraint->scaleMix) * alpha;
|
||||
constraint->shearMix += (self->frames[len + TRANSFORMCONSTRAINT_PREV_SHEAR_MIX] - constraint->shearMix) * alpha;
|
||||
constraint->rotateMix += (self->frames[len + TRANSFORMCONSTRAINT_PREV_ROTATE] - constraint->rotateMix) * alpha;
|
||||
constraint->translateMix += (self->frames[len + TRANSFORMCONSTRAINT_PREV_TRANSLATE] - constraint->translateMix) * alpha;
|
||||
constraint->scaleMix += (self->frames[len + TRANSFORMCONSTRAINT_PREV_SCALE] - constraint->scaleMix) * alpha;
|
||||
constraint->shearMix += (self->frames[len + TRANSFORMCONSTRAINT_PREV_SHEAR] - constraint->shearMix) * alpha;
|
||||
return;
|
||||
}
|
||||
|
||||
/* Interpolate between the previous frame and the current frame. */
|
||||
frame = binarySearch(self->frames, self->framesCount, time, 5);
|
||||
frame = binarySearch(self->frames, self->framesCount, time, TRANSFORMCONSTRAINT_ENTRIES);
|
||||
frameTime = self->frames[frame];
|
||||
percent = 1 - (time - frameTime) / (self->frames[frame + TRANSFORMCONSTRAINT_PREV_TIME] - frameTime);
|
||||
percent = spCurveTimeline_getCurvePercent(SUPER(self), frame / 5 - 1, percent < 0 ? 0 : (percent > 1 ? 1 : percent));
|
||||
percent = spCurveTimeline_getCurvePercent(SUPER(self), frame / TRANSFORMCONSTRAINT_ENTRIES - 1, 1 - (time - frameTime) / (self->frames[frame + TRANSFORMCONSTRAINT_PREV_TIME] - frameTime));
|
||||
|
||||
rotate = self->frames[frame + TRANSFORMCONSTRAINT_PREV_ROTATE_MIX];
|
||||
translate = self->frames[frame + TRANSFORMCONSTRAINT_PREV_TRANSLATE_MIX];
|
||||
scale = self->frames[frame + TRANSFORMCONSTRAINT_PREV_SCALE_MIX];
|
||||
shear = self->frames[frame + TRANSFORMCONSTRAINT_PREV_SHEAR_MIX];
|
||||
constraint->rotateMix += (rotate + (self->frames[frame + TRANSFORMCONSTRAINT_ROTATE_MIX] - rotate) * percent - constraint->rotateMix) * alpha;
|
||||
constraint->translateMix += (translate + (self->frames[frame + TRANSFORMCONSTRAINT_TRANSLATE_MIX] - translate) * percent - constraint->translateMix)
|
||||
* alpha;
|
||||
constraint->scaleMix += (scale + (self->frames[frame + TRANSFORMCONSTRAINT_SCALE_MIX] - scale) * percent - constraint->scaleMix) * alpha;
|
||||
constraint->shearMix += (shear + (self->frames[frame + TRANSFORMCONSTRAINT_SHEAR_MIX] - shear) * percent - constraint->shearMix) * alpha;
|
||||
rotate = self->frames[frame + TRANSFORMCONSTRAINT_PREV_ROTATE];
|
||||
translate = self->frames[frame + TRANSFORMCONSTRAINT_PREV_TRANSLATE];
|
||||
scale = self->frames[frame + TRANSFORMCONSTRAINT_PREV_SCALE];
|
||||
shear = self->frames[frame + TRANSFORMCONSTRAINT_PREV_SHEAR];
|
||||
constraint->rotateMix += (rotate + (self->frames[frame + TRANSFORMCONSTRAINT_ROTATE] - rotate) * percent - constraint->rotateMix) * alpha;
|
||||
constraint->translateMix += (translate + (self->frames[frame + TRANSFORMCONSTRAINT_TRANSLATE] - translate) * percent - constraint->translateMix) * alpha;
|
||||
constraint->scaleMix += (scale + (self->frames[frame + TRANSFORMCONSTRAINT_SCALE] - scale) * percent - constraint->scaleMix) * alpha;
|
||||
constraint->shearMix += (shear + (self->frames[frame + TRANSFORMCONSTRAINT_SHEAR] - shear) * percent - constraint->shearMix) * alpha;
|
||||
|
||||
UNUSED(lastTime);
|
||||
UNUSED(firedEvents);
|
||||
@ -936,14 +899,157 @@ void _spTransformConstraintTimeline_apply (const spTimeline* timeline, spSkeleto
|
||||
}
|
||||
|
||||
spTransformConstraintTimeline* spTransformConstraintTimeline_create (int framesCount) {
|
||||
return (spTransformConstraintTimeline*)_spBaseTimeline_create(framesCount, SP_TIMELINE_TRANSFORMCONSTRAINT, 5, _spTransformConstraintTimeline_apply);
|
||||
return (spTransformConstraintTimeline*)_spBaseTimeline_create(framesCount, SP_TIMELINE_TRANSFORMCONSTRAINT, TRANSFORMCONSTRAINT_ENTRIES, _spTransformConstraintTimeline_apply);
|
||||
}
|
||||
|
||||
void spTransformConstraintTimeline_setFrame (spTransformConstraintTimeline* self, int frameIndex, float time, float rotateMix, float translateMix, float scaleMix, float shearMix) {
|
||||
frameIndex *= 5;
|
||||
frameIndex *= TRANSFORMCONSTRAINT_ENTRIES;
|
||||
self->frames[frameIndex] = time;
|
||||
self->frames[frameIndex + 1] = rotateMix;
|
||||
self->frames[frameIndex + 2] = translateMix;
|
||||
self->frames[frameIndex + 3] = scaleMix;
|
||||
self->frames[frameIndex + 4] = shearMix;
|
||||
self->frames[frameIndex + TRANSFORMCONSTRAINT_ROTATE] = rotateMix;
|
||||
self->frames[frameIndex + TRANSFORMCONSTRAINT_TRANSLATE] = translateMix;
|
||||
self->frames[frameIndex + TRANSFORMCONSTRAINT_SCALE] = scaleMix;
|
||||
self->frames[frameIndex + TRANSFORMCONSTRAINT_SHEAR] = shearMix;
|
||||
}
|
||||
|
||||
/**/
|
||||
|
||||
static const int PATHCONSTRAINTPOSITION_PREV_TIME = -2;
|
||||
static const int PATHCONSTRAINTPOSITION_PREV_VALUE = -1;
|
||||
static const int PATHCONSTRAINTPOSITION_VALUE = 1;
|
||||
|
||||
void _spPathConstraintPositionTimeline_apply(const spTimeline* timeline, spSkeleton* skeleton, float lastTime, float time,
|
||||
spEvent** firedEvents, int* eventsCount, float alpha) {
|
||||
int frame;
|
||||
float frameTime, percent, position;
|
||||
spPathConstraint* constraint;
|
||||
spPathConstraintPositionTimeline* self = (spPathConstraintPositionTimeline*)timeline;
|
||||
|
||||
if (time < self->frames[0]) return; /* Time is before first frame. */
|
||||
|
||||
constraint = skeleton->pathConstraints[self->pathConstraintIndex];
|
||||
|
||||
if (time >= self->frames[self->framesCount - PATHCONSTRAINTPOSITION_ENTRIES]) { /* Time is after last frame. */
|
||||
int len = self->framesCount;
|
||||
constraint->position += (self->frames[len + PATHCONSTRAINTPOSITION_PREV_VALUE] - constraint->position) * alpha;
|
||||
return;
|
||||
}
|
||||
|
||||
/* Interpolate between the previous frame and the current frame. */
|
||||
frame = binarySearch(self->frames, self->framesCount, time, PATHCONSTRAINTPOSITION_ENTRIES);
|
||||
position = self->frames[frame + PATHCONSTRAINTPOSITION_PREV_VALUE];
|
||||
frameTime = self->frames[frame];
|
||||
percent = spCurveTimeline_getCurvePercent(SUPER(self), frame / PATHCONSTRAINTPOSITION_ENTRIES - 1, 1 - (time - frameTime) / (self->frames[frame + PATHCONSTRAINTPOSITION_PREV_TIME] - frameTime));
|
||||
|
||||
constraint->position += (position + (self->frames[frame + PATHCONSTRAINTPOSITION_VALUE] - position) * percent - constraint->position) * alpha;
|
||||
|
||||
UNUSED(lastTime);
|
||||
UNUSED(firedEvents);
|
||||
UNUSED(eventsCount);
|
||||
}
|
||||
|
||||
spPathConstraintPositionTimeline* spPathConstraintPositionTimeline_create (int framesCount) {
|
||||
return (spPathConstraintPositionTimeline*)_spBaseTimeline_create(framesCount, SP_TIMELINE_PATHCONSTRAINTPOSITION, PATHCONSTRAINTPOSITION_ENTRIES, _spPathConstraintPositionTimeline_apply);
|
||||
}
|
||||
|
||||
void spPathConstraintPositionTimeline_setFrame (spPathConstraintPositionTimeline* self, int frameIndex, float time, float value) {
|
||||
frameIndex *= PATHCONSTRAINTPOSITION_ENTRIES;
|
||||
self->frames[frameIndex] = time;
|
||||
self->frames[frameIndex + PATHCONSTRAINTPOSITION_VALUE] = value;
|
||||
}
|
||||
|
||||
/**/
|
||||
static const int PATHCONSTRAINTSPACING_PREV_TIME = -2;
|
||||
static const int PATHCONSTRAINTSPACING_PREV_VALUE = -1;
|
||||
static const int PATHCONSTRAINTSPACING_VALUE = 1;
|
||||
|
||||
void _spPathConstraintSpacingTimeline_apply(const spTimeline* timeline, spSkeleton* skeleton, float lastTime, float time,
|
||||
spEvent** firedEvents, int* eventsCount, float alpha) {
|
||||
int frame;
|
||||
float frameTime, percent, spacing;
|
||||
spPathConstraint* constraint;
|
||||
spPathConstraintSpacingTimeline* self = (spPathConstraintSpacingTimeline*)timeline;
|
||||
|
||||
if (time < self->frames[0]) return; /* Time is before first frame. */
|
||||
|
||||
constraint = skeleton->pathConstraints[self->pathConstraintIndex];
|
||||
|
||||
if (time >= self->frames[self->framesCount - PATHCONSTRAINTSPACING_ENTRIES]) { /* Time is after last frame. */
|
||||
int len = self->framesCount;
|
||||
constraint->spacing += (self->frames[len + PATHCONSTRAINTSPACING_PREV_VALUE] - constraint->spacing) * alpha;
|
||||
return;
|
||||
}
|
||||
|
||||
/* Interpolate between the previous frame and the current frame. */
|
||||
frame = binarySearch(self->frames, self->framesCount, time, PATHCONSTRAINTSPACING_ENTRIES);
|
||||
spacing = self->frames[frame + PATHCONSTRAINTSPACING_PREV_VALUE];
|
||||
frameTime = self->frames[frame];
|
||||
percent = spCurveTimeline_getCurvePercent(SUPER(self), frame / PATHCONSTRAINTSPACING_ENTRIES - 1, 1 - (time - frameTime) / (self->frames[frame + PATHCONSTRAINTSPACING_PREV_TIME] - frameTime));
|
||||
|
||||
constraint->spacing += (spacing + (self->frames[frame + PATHCONSTRAINTSPACING_VALUE] - spacing) * percent - constraint->spacing) * alpha;
|
||||
|
||||
UNUSED(lastTime);
|
||||
UNUSED(firedEvents);
|
||||
UNUSED(eventsCount);
|
||||
}
|
||||
|
||||
spPathConstraintSpacingTimeline* spPathConstraintSpacingTimeline_create (int framesCount) {
|
||||
return (spPathConstraintSpacingTimeline*)_spBaseTimeline_create(framesCount, SP_TIMELINE_PATHCONSTRAINTSPACING, PATHCONSTRAINTSPACING_ENTRIES, _spPathConstraintSpacingTimeline_apply);
|
||||
}
|
||||
|
||||
void spPathConstraintSpacingTimeline_setFrame (spPathConstraintSpacingTimeline* self, int frameIndex, float time, float value) {
|
||||
frameIndex *= PATHCONSTRAINTSPACING_ENTRIES;
|
||||
self->frames[frameIndex] = time;
|
||||
self->frames[frameIndex + PATHCONSTRAINTSPACING_VALUE] = value;
|
||||
}
|
||||
|
||||
/**/
|
||||
|
||||
static const int PATHCONSTRAINTMIX_PREV_TIME = -3;
|
||||
static const int PATHCONSTRAINTMIX_PREV_ROTATE = -2;
|
||||
static const int PATHCONSTRAINTMIX_PREV_TRANSLATE = -1;
|
||||
static const int PATHCONSTRAINTMIX_ROTATE = 1;
|
||||
static const int PATHCONSTRAINTMIX_TRANSLATE = 2;
|
||||
|
||||
void _spPathConstraintMixTimeline_apply(const spTimeline* timeline, spSkeleton* skeleton, float lastTime, float time,
|
||||
spEvent** firedEvents, int* eventsCount, float alpha) {
|
||||
int frame;
|
||||
float frameTime, percent, rotate, translate;
|
||||
spPathConstraint* constraint;
|
||||
spPathConstraintMixTimeline* self = (spPathConstraintMixTimeline*)timeline;
|
||||
|
||||
if (time < self->frames[0]) return; /* Time is before first frame. */
|
||||
|
||||
constraint = skeleton->pathConstraints[self->pathConstraintIndex];
|
||||
|
||||
if (time >= self->frames[self->framesCount - PATHCONSTRAINTMIX_ENTRIES]) { /* Time is after last frame. */
|
||||
int len = self->framesCount;
|
||||
constraint->rotateMix += (self->frames[len + PATHCONSTRAINTMIX_PREV_ROTATE] - constraint->rotateMix) * alpha;
|
||||
constraint->translateMix += (self->frames[len + PATHCONSTRAINTMIX_PREV_TRANSLATE] - constraint->translateMix) * alpha;
|
||||
return;
|
||||
}
|
||||
|
||||
/* Interpolate between the previous frame and the current frame. */
|
||||
frame = binarySearch(self->frames, self->framesCount, time, PATHCONSTRAINTMIX_ENTRIES);
|
||||
rotate = self->frames[frame + PATHCONSTRAINTMIX_PREV_ROTATE];
|
||||
translate = self->frames[frame + PATHCONSTRAINTMIX_PREV_TRANSLATE];
|
||||
frameTime = self->frames[frame];
|
||||
percent = spCurveTimeline_getCurvePercent(SUPER(self), frame / PATHCONSTRAINTMIX_ENTRIES - 1, 1 - (time - frameTime) / (self->frames[frame + PATHCONSTRAINTMIX_PREV_TIME] - frameTime));
|
||||
|
||||
constraint->rotateMix += (rotate + (self->frames[frame + PATHCONSTRAINTMIX_ROTATE] - rotate) * percent - constraint->rotateMix) * alpha;
|
||||
constraint->translateMix += (translate + (self->frames[frame + PATHCONSTRAINTMIX_TRANSLATE] - translate) * percent - constraint->translateMix) * alpha;
|
||||
|
||||
UNUSED(lastTime);
|
||||
UNUSED(firedEvents);
|
||||
UNUSED(eventsCount);
|
||||
}
|
||||
|
||||
spPathConstraintMixTimeline* spPathConstraintMixTimeline_create (int framesCount) {
|
||||
return (spPathConstraintMixTimeline*)_spBaseTimeline_create(framesCount, SP_TIMELINE_PATHCONSTRAINTMIX, PATHCONSTRAINTMIX_ENTRIES, _spPathConstraintMixTimeline_apply);
|
||||
}
|
||||
|
||||
void spPathConstraintMixTimeline_setFrame (spPathConstraintMixTimeline* self, int frameIndex, float time, float rotateMix, float translateMix) {
|
||||
frameIndex *= PATHCONSTRAINTMIX_ENTRIES;
|
||||
self->frames[frameIndex] = time;
|
||||
self->frames[frameIndex + PATHCONSTRAINTMIX_ROTATE] = rotateMix;
|
||||
self->frames[frameIndex + PATHCONSTRAINTMIX_TRANSLATE] = translateMix;
|
||||
}
|
||||
|
||||
@ -75,33 +75,12 @@ spAttachment* _spAtlasAttachmentLoader_createAttachment (spAttachmentLoader* loa
|
||||
attachment->regionHeight = region->height;
|
||||
attachment->regionOriginalWidth = region->originalWidth;
|
||||
attachment->regionOriginalHeight = region->originalHeight;
|
||||
return SUPER(attachment);
|
||||
}
|
||||
case SP_ATTACHMENT_WEIGHTED_MESH:
|
||||
case SP_ATTACHMENT_WEIGHTED_LINKED_MESH: {
|
||||
spWeightedMeshAttachment* attachment;
|
||||
spAtlasRegion* region = spAtlas_findRegion(self->atlas, path);
|
||||
if (!region) {
|
||||
_spAttachmentLoader_setError(loader, "Region not found: ", path);
|
||||
return 0;
|
||||
}
|
||||
attachment = spWeightedMeshAttachment_create(name);
|
||||
attachment->rendererObject = region;
|
||||
attachment->regionU = region->u;
|
||||
attachment->regionV = region->v;
|
||||
attachment->regionU2 = region->u2;
|
||||
attachment->regionV2 = region->v2;
|
||||
attachment->regionRotate = region->rotate;
|
||||
attachment->regionOffsetX = region->offsetX;
|
||||
attachment->regionOffsetY = region->offsetY;
|
||||
attachment->regionWidth = region->width;
|
||||
attachment->regionHeight = region->height;
|
||||
attachment->regionOriginalWidth = region->originalWidth;
|
||||
attachment->regionOriginalHeight = region->originalHeight;
|
||||
return SUPER(attachment);
|
||||
return SUPER(SUPER(attachment));
|
||||
}
|
||||
case SP_ATTACHMENT_BOUNDING_BOX:
|
||||
return SUPER(spBoundingBoxAttachment_create(name));
|
||||
return SUPER(SUPER(spBoundingBoxAttachment_create(name)));
|
||||
case SP_ATTACHMENT_PATH:
|
||||
return SUPER(SUPER(spPathAttachment_create(name)));
|
||||
default:
|
||||
_spAttachmentLoader_setUnknownTypeError(loader, type);
|
||||
return 0;
|
||||
|
||||
@ -52,6 +52,7 @@ spBone* spBone_create (spBoneData* data, spSkeleton* skeleton, spBone* parent) {
|
||||
}
|
||||
|
||||
void spBone_dispose (spBone* self) {
|
||||
FREE(self->children);
|
||||
FREE(self);
|
||||
}
|
||||
|
||||
@ -68,8 +69,6 @@ void spBone_updateWorldTransformWith (spBone* self, float x, float y, float rota
|
||||
spBone* parent = self->parent;
|
||||
|
||||
CONST_CAST(float, self->appliedRotation) = rotation;
|
||||
CONST_CAST(float, self->appliedScaleX) = scaleX;
|
||||
CONST_CAST(float, self->appliedScaleY) = scaleY;
|
||||
|
||||
if (!parent) { /* Root bone. */
|
||||
if (self->skeleton->flipX) {
|
||||
@ -117,10 +116,10 @@ void spBone_updateWorldTransformWith (spBone* self, float x, float y, float rota
|
||||
do {
|
||||
cosine = COS_DEG(parent->appliedRotation); sine = SIN_DEG(parent->appliedRotation);
|
||||
temp = pa * cosine + pb * sine;
|
||||
pb = pa * -sine + pb * cosine;
|
||||
pb = pb * cosine - pa * sine;
|
||||
pa = temp;
|
||||
temp = pc * cosine + pd * sine;
|
||||
pd = pc * -sine + pd * cosine;
|
||||
pd = pd * cosine - pc * sine;
|
||||
pc = temp;
|
||||
|
||||
if (!parent->data->inheritRotation) break;
|
||||
@ -137,25 +136,23 @@ void spBone_updateWorldTransformWith (spBone* self, float x, float y, float rota
|
||||
pd = 1;
|
||||
do {
|
||||
float za, zb, zc, zd;
|
||||
float r = parent->appliedRotation;
|
||||
float psx = parent->appliedScaleX; float psy = parent->appliedScaleY;
|
||||
cosine = COS_DEG(r); sine = SIN_DEG(r);
|
||||
za = cosine * psx; zb = -sine * psy; zc = sine * psx; zd = cosine * psy;
|
||||
float psx = parent->scaleX, psy = parent->scaleY;
|
||||
cosine = COS_DEG(parent->appliedRotation);
|
||||
sine = SIN_DEG(parent->appliedRotation);
|
||||
za = cosine * psx; zb = sine * psy; zc = sine * psx; zd = cosine * psy;
|
||||
temp = pa * za + pb * zc;
|
||||
pb = pa * zb + pb * zd;
|
||||
pb = pb * zd - pa * zb;
|
||||
pa = temp;
|
||||
temp = pc * za + pd * zc;
|
||||
pd = pc * zb + pd * zd;
|
||||
pd = pd * zd - pc * zb;
|
||||
pc = temp;
|
||||
|
||||
if (psx < 0) r = -r;
|
||||
cosine = COS_DEG(-r);
|
||||
sine = SIN_DEG(-r);
|
||||
if (psx >= 0) sine = -sine;
|
||||
temp = pa * cosine + pb * sine;
|
||||
pb = pa * -sine + pb * cosine;
|
||||
pb = pb * cosine - pa * sine;
|
||||
pa = temp;
|
||||
temp = pc * cosine + pd * sine;
|
||||
pd = pc * -sine + pd * cosine;
|
||||
pd = pd * cosine - pc * sine;
|
||||
pc = temp;
|
||||
|
||||
if (!parent->data->inheritScale) break;
|
||||
@ -208,10 +205,78 @@ float spBone_getWorldScaleY (spBone* self) {
|
||||
return SQRT(self->c * self->c + self->d * self->d) * self->worldSignY;
|
||||
}
|
||||
|
||||
float spBone_worldToLocalRotationX (spBone* self) {
|
||||
spBone* parent = self->parent;
|
||||
if (!parent) return self->rotation;
|
||||
return ATAN2(parent->a * self->c - parent->c * self->a, parent->d * self->a - parent->b * self->c) * RAD_DEG;
|
||||
}
|
||||
|
||||
float spBone_worldToLocalRotationY (spBone* self) {
|
||||
spBone* parent = self->parent;
|
||||
if (self->parent) return self->rotation;
|
||||
return ATAN2(parent->a * self->d - parent->c * self->b, parent->d * self->b - parent->b * self->d) * RAD_DEG;
|
||||
}
|
||||
|
||||
void spBone_rotateWorld (spBone* self, float degrees) {
|
||||
float a = self->a, b = self->b, c = self->c, d = self->d;
|
||||
float cosine = COS_DEG(degrees), sine = SIN_DEG(degrees);
|
||||
CONST_CAST(float, self->a) = cosine * a - sine * c;
|
||||
CONST_CAST(float, self->b) = cosine * b - sine * d;
|
||||
CONST_CAST(float, self->c) = sine * a + cosine * c;
|
||||
CONST_CAST(float, self->d) = sine * b + cosine * d;
|
||||
}
|
||||
|
||||
/** Computes the local transform from the world transform. This can be useful to perform processing on the local transform
|
||||
* after the world transform has been modified directly (eg, by a constraint).
|
||||
* <p>
|
||||
* Some redundant information is lost by the world transform, such as -1,-1 scale versus 180 rotation. The computed local
|
||||
* transform values may differ from the original values but are functionally the same. */
|
||||
void spBone_updateLocalTransform (spBone* self) {
|
||||
spBone* parent = self->parent;
|
||||
if (!parent) {
|
||||
float det = self->a * self->d - self->b * self->c;
|
||||
self->x = self->worldX;
|
||||
self->y = self->worldY;
|
||||
self->rotation = ATAN2(self->c, self->a) * RAD_DEG;
|
||||
self->scaleX = SQRT(self->a * self->a + self->c * self->c);
|
||||
self->scaleY = SQRT(self->b * self->b + self->d * self->d);
|
||||
self->shearX = 0;
|
||||
self->shearY = ATAN2(self->a * self->b + self->c * self->d, det) * RAD_DEG;
|
||||
} else {
|
||||
float pa = parent->a, pb = parent->b, pc = parent->c, pd = parent->d;
|
||||
float pid = 1 / (pa * pd - pb * pc);
|
||||
float dx = self->worldX - parent->worldX, dy = self->worldY - parent->worldY;
|
||||
float ia = pid * pd;
|
||||
float id = pid * pa;
|
||||
float ib = pid * pb;
|
||||
float ic = pid * pc;
|
||||
float ra = ia * self->a - ib * self->c;
|
||||
float rb = ia * self->b - ib * self->d;
|
||||
float rc = id * self->c - ic * self->a;
|
||||
float rd = id * self->d - ic * self->b;
|
||||
self->x = (dx * pd * pid - dy * pb * pid);
|
||||
self->y = (dy * pa * pid - dx * pc * pid);
|
||||
self->shearX = 0;
|
||||
self->scaleX = SQRT(ra * ra + rc * rc);
|
||||
if (self->scaleX > 0.0001f) {
|
||||
float det = ra * rd - rb * rc;
|
||||
self->scaleY = det / self->scaleX;
|
||||
self->shearY = ATAN2(ra * rb + rc * rd, det) * RAD_DEG;
|
||||
self->rotation = ATAN2(rc, ra) * RAD_DEG;
|
||||
} else {
|
||||
self->scaleX = 0;
|
||||
self->scaleY = SQRT(rb * rb + rd * rd);
|
||||
self->shearY = 0;
|
||||
self->rotation = 90 - ATAN2(rd, rb) * RAD_DEG;
|
||||
}
|
||||
self->appliedRotation = self->rotation;
|
||||
}
|
||||
}
|
||||
|
||||
void spBone_worldToLocal (spBone* self, float worldX, float worldY, float* localX, float* localY) {
|
||||
float x = worldX - self->worldX, y = worldY - self->worldY;
|
||||
float a = self->a, b = self->b, c = self->c, d = self->d;
|
||||
float invDet = 1 / (a * d - b * c);
|
||||
float x = worldX - self->worldX, y = worldY - self->worldY;
|
||||
*localX = (x * d * invDet - y * b * invDet);
|
||||
*localY = (y * a * invDet - x * c * invDet);
|
||||
}
|
||||
|
||||
@ -32,14 +32,15 @@
|
||||
#include <spine/BoneData.h>
|
||||
#include <spine/extension.h>
|
||||
|
||||
spBoneData* spBoneData_create (const char* name, spBoneData* parent) {
|
||||
spBoneData* spBoneData_create (int index, const char* name, spBoneData* parent) {
|
||||
spBoneData* self = NEW(spBoneData);
|
||||
CONST_CAST(int, self->index) = index;
|
||||
MALLOC_STR(self->name, name);
|
||||
CONST_CAST(spBoneData*, self->parent) = parent;
|
||||
self->scaleX = 1;
|
||||
self->scaleY = 1;
|
||||
self->inheritScale = 1;
|
||||
self->inheritRotation = 1;
|
||||
self->inheritScale = 1;
|
||||
return self;
|
||||
}
|
||||
|
||||
|
||||
@ -35,27 +35,17 @@
|
||||
void _spBoundingBoxAttachment_dispose (spAttachment* attachment) {
|
||||
spBoundingBoxAttachment* self = SUB_CAST(spBoundingBoxAttachment, attachment);
|
||||
|
||||
_spAttachment_deinit(attachment);
|
||||
_spVertexAttachment_deinit(SUPER(self));
|
||||
|
||||
FREE(self->vertices);
|
||||
FREE(self);
|
||||
}
|
||||
|
||||
spBoundingBoxAttachment* spBoundingBoxAttachment_create (const char* name) {
|
||||
spBoundingBoxAttachment* self = NEW(spBoundingBoxAttachment);
|
||||
_spAttachment_init(SUPER(self), name, SP_ATTACHMENT_BOUNDING_BOX, _spBoundingBoxAttachment_dispose);
|
||||
_spAttachment_init(SUPER(SUPER(self)), name, SP_ATTACHMENT_BOUNDING_BOX, _spBoundingBoxAttachment_dispose);
|
||||
return self;
|
||||
}
|
||||
|
||||
void spBoundingBoxAttachment_computeWorldVertices (spBoundingBoxAttachment* self, spBone* bone, float* worldVertices) {
|
||||
int i;
|
||||
float px, py;
|
||||
float* vertices = self->vertices;
|
||||
float x = bone->skeleton->x + bone->worldX, y = bone->skeleton->y + bone->worldY;
|
||||
for (i = 0; i < self->verticesCount; i += 2) {
|
||||
px = vertices[i];
|
||||
py = vertices[i + 1];
|
||||
worldVertices[i] = px * bone->a + py * bone->b + x;
|
||||
worldVertices[i + 1] = px * bone->c + py * bone->d + y;
|
||||
}
|
||||
void spBoundingBoxAttachment_computeWorldVertices (spBoundingBoxAttachment* self, spSlot* slot, float* worldVertices) {
|
||||
spVertexAttachment_computeWorldVertices(SUPER(self), slot, worldVertices);
|
||||
}
|
||||
|
||||
@ -35,186 +35,177 @@
|
||||
#include <float.h>
|
||||
|
||||
spIkConstraint *spIkConstraint_create(spIkConstraintData *data, const spSkeleton *skeleton) {
|
||||
int i;
|
||||
int i;
|
||||
|
||||
spIkConstraint *self = NEW(spIkConstraint);
|
||||
CONST_CAST(spIkConstraintData*, self->data) = data;
|
||||
self->bendDirection = data->bendDirection;
|
||||
self->mix = data->mix;
|
||||
spIkConstraint *self = NEW(spIkConstraint);
|
||||
CONST_CAST(spIkConstraintData*, self->data) = data;
|
||||
self->bendDirection = data->bendDirection;
|
||||
self->mix = data->mix;
|
||||
|
||||
self->bonesCount = self->data->bonesCount;
|
||||
self->bones = MALLOC(spBone*, self->bonesCount);
|
||||
for (i = 0; i < self->bonesCount; ++i)
|
||||
self->bones[i] = spSkeleton_findBone(skeleton, self->data->bones[i]->name);
|
||||
self->target = spSkeleton_findBone(skeleton, self->data->target->name);
|
||||
self->bonesCount = self->data->bonesCount;
|
||||
self->bones = MALLOC(spBone*, self->bonesCount);
|
||||
for (i = 0; i < self->bonesCount; ++i)
|
||||
self->bones[i] = spSkeleton_findBone(skeleton, self->data->bones[i]->name);
|
||||
self->target = spSkeleton_findBone(skeleton, self->data->target->name);
|
||||
|
||||
return self;
|
||||
return self;
|
||||
}
|
||||
|
||||
void spIkConstraint_dispose(spIkConstraint *self) {
|
||||
FREE(self->bones);
|
||||
FREE(self);
|
||||
FREE(self->bones);
|
||||
FREE(self);
|
||||
}
|
||||
|
||||
void spIkConstraint_apply(spIkConstraint *self) {
|
||||
switch (self->bonesCount) {
|
||||
case 1:
|
||||
spIkConstraint_apply1(self->bones[0], self->target->worldX, self->target->worldY, self->mix);
|
||||
break;
|
||||
case 2:
|
||||
spIkConstraint_apply2(self->bones[0], self->bones[1], self->target->worldX, self->target->worldY,
|
||||
self->bendDirection,
|
||||
self->mix);
|
||||
break;
|
||||
}
|
||||
switch (self->bonesCount) {
|
||||
case 1:
|
||||
spIkConstraint_apply1(self->bones[0], self->target->worldX, self->target->worldY, self->mix);
|
||||
break;
|
||||
case 2:
|
||||
spIkConstraint_apply2(self->bones[0], self->bones[1], self->target->worldX, self->target->worldY, self->bendDirection, self->mix);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void spIkConstraint_apply1(spBone *bone, float targetX, float targetY, float alpha) {
|
||||
spBone *pp = bone->parent;
|
||||
float id = 1 / (pp->a * pp->d - pp->b * pp->c);
|
||||
float x = targetX - pp->worldX, y = targetY - pp->worldY;
|
||||
float tx = (x * pp->d - y * pp->b) * id - bone->x, ty = (y * pp->a - x * pp->c) * id - bone->y;
|
||||
float rotationIK = ATAN2(ty, tx) * RAD_DEG - bone->shearX;
|
||||
if (bone->scaleX < 0) rotationIK += 180;
|
||||
if (rotationIK > 180)
|
||||
rotationIK -= 360;
|
||||
else if (rotationIK < -180) rotationIK += 360;
|
||||
spBone_updateWorldTransformWith(bone, bone->x, bone->y, bone->rotation + (rotationIK - bone->rotation) * alpha,
|
||||
bone->appliedScaleX,
|
||||
bone->appliedScaleY, bone->shearX, bone->shearY);
|
||||
void spIkConstraint_apply1 (spBone* bone, float targetX, float targetY, float alpha) {
|
||||
spBone* pp = bone->parent;
|
||||
float id = 1 / (pp->a * pp->d - pp->b * pp->c);
|
||||
float x = targetX - pp->worldX, y = targetY - pp->worldY;
|
||||
float tx = (x * pp->d - y * pp->b) * id - bone->x, ty = (y * pp->a - x * pp->c) * id - bone->y;
|
||||
float rotationIK = ATAN2(ty, tx) * RAD_DEG - bone->shearX - bone->rotation;
|
||||
if (bone->scaleX < 0) rotationIK += 180;
|
||||
if (rotationIK > 180) rotationIK -= 360;
|
||||
else if (rotationIK < -180) rotationIK += 360;
|
||||
spBone_updateWorldTransformWith(bone, bone->x, bone->y, bone->rotation + rotationIK * alpha, bone->scaleX,
|
||||
bone->scaleY, bone->shearX, bone->shearY);
|
||||
}
|
||||
|
||||
void spIkConstraint_apply2(spBone *parent, spBone *child, float targetX, float targetY, int bendDir, float alpha) {
|
||||
float px = parent->x, py = parent->y, psx = parent->appliedScaleX, psy = parent->appliedScaleY;
|
||||
int os1, os2, s2;
|
||||
float cx, cy, csx;
|
||||
int u;
|
||||
spBone *pp;
|
||||
float ppa, ppb, ppc, ppd, id;
|
||||
float x, y;
|
||||
float tx, ty;
|
||||
float dx, dy;
|
||||
float l1, l2, a1, a2;
|
||||
float os;
|
||||
float rotation;
|
||||
|
||||
if (alpha == 0) return;
|
||||
if (psx < 0) {
|
||||
psx = -psx;
|
||||
os1 = 180;
|
||||
s2 = -1;
|
||||
} else {
|
||||
os1 = 0;
|
||||
s2 = 1;
|
||||
}
|
||||
if (psy < 0) {
|
||||
psy = -psy;
|
||||
s2 = -s2;
|
||||
}
|
||||
cx = child->x; cy = child->y; csx = child->appliedScaleX;
|
||||
u = ABS(psx - psy) <= 0.0001f;
|
||||
if (!u && cy != 0) {
|
||||
CONST_CAST(float, child->worldX) = parent->a * cx + parent->worldX;
|
||||
CONST_CAST(float, child->worldY) = parent->c * cx + parent->worldY;
|
||||
cy = 0;
|
||||
}
|
||||
if (csx < 0) {
|
||||
csx = -csx;
|
||||
os2 = 180;
|
||||
} else
|
||||
os2 = 0;
|
||||
pp = parent->parent;
|
||||
ppa = pp->a; ppb = pp->b; ppc = pp->c; ppd = pp->d; id = 1 / (ppa * ppd - ppb * ppc);
|
||||
x = targetX - pp->worldX; y = targetY - pp->worldY;
|
||||
tx = (x * ppd - y * ppb) * id - px; ty = (y * ppa - x * ppc) * id - py;
|
||||
x = child->worldX - pp->worldX;
|
||||
y = child->worldY - pp->worldY;
|
||||
dx = (x * ppd - y * ppb) * id - px; dy = (y * ppa - x * ppc) * id - py;
|
||||
l1 = SQRT(dx * dx + dy * dy); l2 = child->data->length * csx;
|
||||
outer:
|
||||
if (u) {
|
||||
float cosine, a, o;
|
||||
l2 *= psx;
|
||||
cosine = (tx * tx + ty * ty - l1 * l1 - l2 * l2) / (2 * l1 * l2);
|
||||
if (cosine < -1)
|
||||
cosine = -1;
|
||||
else if (cosine > 1) cosine = 1;
|
||||
a2 = ACOS(cosine) * bendDir;
|
||||
a = l1 + l2 * cosine, o = l2 * SIN(a2);
|
||||
a1 = ATAN2(ty * a - tx * o, tx * a + ty * o);
|
||||
} else {
|
||||
float minAngle, minDist, minX, minY, maxAngle, maxDist, maxX, maxY, angle;
|
||||
float a = psx * l2, b = psy * l2, ta = ATAN2(ty, tx);
|
||||
float aa = a * a, bb = b * b, ll = l1 * l1, dd = tx * tx + ty * ty;
|
||||
float c0 = bb * ll + aa * dd - aa * bb, c1 = -2 * bb * l1, c2 = bb - aa;
|
||||
float d = c1 * c1 - 4 * c2 * c0;
|
||||
if (d >= 0) {
|
||||
float q = SQRT(d), r0, r, r1;
|
||||
if (c1 < 0) q = -q;
|
||||
q = -(c1 + q) / 2;
|
||||
r0 = q / c2; r1 = c0 / q;
|
||||
r = ABS(r0) < ABS(r1) ? r0 : r1;
|
||||
if (r * r <= dd) {
|
||||
y = SQRT(dd - r * r) * bendDir;
|
||||
a1 = ta - ATAN2(y, r);
|
||||
a2 = ATAN2(y / psy, (r - l1) / psx);
|
||||
goto outer;
|
||||
}
|
||||
}
|
||||
minAngle = 0; minDist = FLT_MAX; minX = 0; minY = 0;
|
||||
maxAngle = 0; maxDist = 0; maxX = 0; maxY = 0;
|
||||
x = l1 + a;
|
||||
d = x * x;
|
||||
if (d > maxDist) {
|
||||
maxAngle = 0;
|
||||
maxDist = d;
|
||||
maxX = x;
|
||||
}
|
||||
x = l1 - a;
|
||||
d = x * x;
|
||||
if (d < minDist) {
|
||||
minAngle = PI;
|
||||
minDist = d;
|
||||
minX = x;
|
||||
}
|
||||
angle = ACOS(-a * l1 / (aa - bb));
|
||||
x = a * COS(angle) + l1;
|
||||
y = b * SIN(angle);
|
||||
d = x * x + y * y;
|
||||
if (d < minDist) {
|
||||
minAngle = angle;
|
||||
minDist = d;
|
||||
minX = x;
|
||||
minY = y;
|
||||
}
|
||||
if (d > maxDist) {
|
||||
maxAngle = angle;
|
||||
maxDist = d;
|
||||
maxX = x;
|
||||
maxY = y;
|
||||
}
|
||||
if (dd <= (minDist + maxDist) / 2) {
|
||||
a1 = ta - ATAN2(minY * bendDir, minX);
|
||||
a2 = minAngle * bendDir;
|
||||
} else {
|
||||
a1 = ta - ATAN2(maxY * bendDir, maxX);
|
||||
a2 = maxAngle * bendDir;
|
||||
}
|
||||
}
|
||||
os = ATAN2(cy, cx) * s2;
|
||||
a1 = (a1 - os) * RAD_DEG + os1;
|
||||
a2 = ((a2 + os) * RAD_DEG - child->shearX) * s2 + os2;
|
||||
if (a1 > 180)
|
||||
a1 -= 360;
|
||||
else if (a1 < -180) a1 += 360;
|
||||
if (a2 > 180)
|
||||
a2 -= 360;
|
||||
else if (a2 < -180) a2 += 360;
|
||||
|
||||
rotation = parent->rotation;
|
||||
spBone_updateWorldTransformWith(parent, px, py, rotation + (a1 - rotation) * alpha, parent->appliedScaleX,
|
||||
parent->appliedScaleY, 0, 0);
|
||||
rotation = child->rotation;
|
||||
spBone_updateWorldTransformWith(child, cx, cy, rotation + (a2 - rotation) * alpha, child->appliedScaleX,
|
||||
child->appliedScaleY, child->shearX, child->shearY);
|
||||
void spIkConstraint_apply2 (spBone* parent, spBone* child, float targetX, float targetY, int bendDir, float alpha) {
|
||||
float px = parent->x, py = parent->y, psx = parent->scaleX, psy = parent->scaleY;
|
||||
float cx = child->x, cy, csx = child->scaleX, cwx, cwy;
|
||||
int o1, o2, s2, u;
|
||||
spBone* pp = parent->parent;
|
||||
float tx, ty, dx, dy, l1, l2, a1, a2, r;
|
||||
float id, x, y;
|
||||
if (alpha == 0) {
|
||||
spBone_updateWorldTransform(child);
|
||||
return;
|
||||
}
|
||||
if (psx < 0) {
|
||||
psx = -psx;
|
||||
o1 = 180;
|
||||
s2 = -1;
|
||||
} else {
|
||||
o1 = 0;
|
||||
s2 = 1;
|
||||
}
|
||||
if (psy < 0) {
|
||||
psy = -psy;
|
||||
s2 = -s2;
|
||||
}
|
||||
if (csx < 0) {
|
||||
csx = -csx;
|
||||
o2 = 180;
|
||||
} else
|
||||
o2 = 0;
|
||||
r = psx - psy;
|
||||
u = (r < 0 ? -r : r) <= 0.0001f;
|
||||
if (!u) {
|
||||
cy = 0;
|
||||
cwx = parent->a * cx + parent->worldX;
|
||||
cwy = parent->c * cx + parent->worldY;
|
||||
} else {
|
||||
cy = child->y;
|
||||
cwx = parent->a * cx + parent->b * cy + parent->worldX;
|
||||
cwy = parent->c * cx + parent->d * cy + parent->worldY;
|
||||
}
|
||||
id = 1 / (pp->a * pp->d - pp->b * pp->c);
|
||||
x = targetX - pp->worldX;
|
||||
y = targetY - pp->worldY;
|
||||
tx = (x * pp->d - y * pp->b) * id - px;
|
||||
ty = (y * pp->a - x * pp->c) * id - py;
|
||||
x = cwx - pp->worldX;
|
||||
y = cwy - pp->worldY;
|
||||
dx = (x * pp->d - y * pp->b) * id - px;
|
||||
dy = (y * pp->a - x * pp->c) * id - py;
|
||||
l1 = SQRT(dx * dx + dy * dy);
|
||||
l2 = child->data->length * csx;
|
||||
if (u) {
|
||||
float cosine, a, b;
|
||||
l2 *= psx;
|
||||
cosine = (tx * tx + ty * ty - l1 * l1 - l2 * l2) / (2 * l1 * l2);
|
||||
if (cosine < -1) cosine = -1;
|
||||
else if (cosine > 1) cosine = 1;
|
||||
a2 = ACOS(cosine) * bendDir;
|
||||
a = l1 + l2 * cosine;
|
||||
b = l2 * SIN(a2);
|
||||
a1 = ATAN2(ty * a - tx * b, tx * a + ty * b);
|
||||
} else {
|
||||
float a = psx * l2, b = psy * l2;
|
||||
float aa = a * a, bb = b * b, ll = l1 * l1, dd = tx * tx + ty * ty, ta = ATAN2(ty, tx);
|
||||
float c0 = bb * ll + aa * dd - aa * bb, c1 = -2 * bb * l1, c2 = bb - aa;
|
||||
float d = c1 * c1 - 4 * c2 * c0;
|
||||
float minAngle = 0, minDist = FLT_MAX, minX = 0, minY = 0;
|
||||
float maxAngle = 0, maxDist = 0, maxX = 0, maxY = 0;
|
||||
float x = l1 + a, dist = x * x, angle, y;
|
||||
if (d >= 0) {
|
||||
float q = SQRT(d), r0, r1;
|
||||
if (c1 < 0) q = -q;
|
||||
q = -(c1 + q) / 2;
|
||||
r0 = q / c2; r1 = c0 / q;
|
||||
r = ABS(r0) < ABS(r1) ? r0 : r1;
|
||||
if (r * r <= dd) {
|
||||
y = SQRT(dd - r * r) * bendDir;
|
||||
a1 = ta - ATAN2(y, r);
|
||||
a2 = ATAN2(y / psy, (r - l1) / psx);
|
||||
goto outer;
|
||||
}
|
||||
}
|
||||
if (dist > maxDist) {
|
||||
maxAngle = 0;
|
||||
maxDist = dist;
|
||||
maxX = x;
|
||||
}
|
||||
x = l1 - a;
|
||||
dist = x * x;
|
||||
if (dist < minDist) {
|
||||
minAngle = PI;
|
||||
minDist = dist;
|
||||
minX = x;
|
||||
}
|
||||
angle = ACOS(-a * l1 / (aa - bb));
|
||||
x = a * COS(angle) + l1;
|
||||
y = b * SIN(angle);
|
||||
dist = x * x + y * y;
|
||||
if (dist < minDist) {
|
||||
minAngle = angle;
|
||||
minDist = dist;
|
||||
minX = x;
|
||||
minY = y;
|
||||
}
|
||||
if (dist > maxDist) {
|
||||
maxAngle = angle;
|
||||
maxDist = dist;
|
||||
maxX = x;
|
||||
maxY = y;
|
||||
}
|
||||
if (dd <= (minDist + maxDist) / 2) {
|
||||
a1 = ta - ATAN2(minY * bendDir, minX);
|
||||
a2 = minAngle * bendDir;
|
||||
} else {
|
||||
a1 = ta - ATAN2(maxY * bendDir, maxX);
|
||||
a2 = maxAngle * bendDir;
|
||||
}
|
||||
}
|
||||
outer: {
|
||||
float os = ATAN2(cy, cx) * s2;
|
||||
a1 = (a1 - os) * RAD_DEG + o1 - parent->rotation;
|
||||
if (a1 > 180) a1 -= 360;
|
||||
else if (a1 < -180) a1 += 360;
|
||||
spBone_updateWorldTransformWith(parent, px, py, parent->rotation + a1 * alpha, parent->scaleX, parent->scaleY, 0, 0);
|
||||
a2 = ((a2 + os) * RAD_DEG - child->shearX) * s2 + o2 - child->rotation;
|
||||
if (a2 > 180) a2 -= 360;
|
||||
else if (a2 < -180) a2 += 360;
|
||||
spBone_updateWorldTransformWith(child, cx, cy, child->rotation + a2 * alpha, child->scaleX, child->scaleY, child->shearX, child->shearY);
|
||||
}
|
||||
}
|
||||
|
||||
@ -34,15 +34,15 @@
|
||||
|
||||
void _spMeshAttachment_dispose (spAttachment* attachment) {
|
||||
spMeshAttachment* self = SUB_CAST(spMeshAttachment, attachment);
|
||||
_spAttachment_deinit(attachment);
|
||||
FREE(self->path);
|
||||
FREE(self->uvs);
|
||||
if (!self->parentMesh) {
|
||||
FREE(self->vertices);
|
||||
_spVertexAttachment_deinit(SUPER(self));
|
||||
FREE(self->regionUVs);
|
||||
FREE(self->triangles);
|
||||
FREE(self->edges);
|
||||
}
|
||||
} else
|
||||
_spAttachment_deinit(attachment);
|
||||
FREE(self);
|
||||
}
|
||||
|
||||
@ -52,22 +52,23 @@ spMeshAttachment* spMeshAttachment_create (const char* name) {
|
||||
self->g = 1;
|
||||
self->b = 1;
|
||||
self->a = 1;
|
||||
_spAttachment_init(SUPER(self), name, SP_ATTACHMENT_MESH, _spMeshAttachment_dispose);
|
||||
_spAttachment_init(SUPER(SUPER(self)), name, SP_ATTACHMENT_MESH, _spMeshAttachment_dispose);
|
||||
return self;
|
||||
}
|
||||
|
||||
void spMeshAttachment_updateUVs (spMeshAttachment* self) {
|
||||
int i;
|
||||
float width = self->regionU2 - self->regionU, height = self->regionV2 - self->regionV;
|
||||
int verticesLength = SUPER(self)->worldVerticesLength;
|
||||
FREE(self->uvs);
|
||||
self->uvs = MALLOC(float, self->verticesCount);
|
||||
self->uvs = MALLOC(float, verticesLength);
|
||||
if (self->regionRotate) {
|
||||
for (i = 0; i < self->verticesCount; i += 2) {
|
||||
for (i = 0; i < verticesLength; i += 2) {
|
||||
self->uvs[i] = self->regionU + self->regionUVs[i + 1] * width;
|
||||
self->uvs[i + 1] = self->regionV + height - self->regionUVs[i] * height;
|
||||
}
|
||||
} else {
|
||||
for (i = 0; i < self->verticesCount; i += 2) {
|
||||
for (i = 0; i < verticesLength; i += 2) {
|
||||
self->uvs[i] = self->regionU + self->regionUVs[i] * width;
|
||||
self->uvs[i + 1] = self->regionV + self->regionUVs[i + 1] * height;
|
||||
}
|
||||
@ -75,24 +76,21 @@ void spMeshAttachment_updateUVs (spMeshAttachment* self) {
|
||||
}
|
||||
|
||||
void spMeshAttachment_computeWorldVertices (spMeshAttachment* self, spSlot* slot, float* worldVertices) {
|
||||
int i;
|
||||
float* vertices = self->vertices;
|
||||
const spBone* bone = slot->bone;
|
||||
float x = bone->skeleton->x + bone->worldX, y = bone->skeleton->y + bone->worldY;
|
||||
if (slot->attachmentVerticesCount == self->verticesCount) vertices = slot->attachmentVertices;
|
||||
for (i = 0; i < self->verticesCount; i += 2) {
|
||||
const float vx = vertices[i], vy = vertices[i + 1];
|
||||
worldVertices[i] = vx * bone->a + vy * bone->b + x;
|
||||
worldVertices[i + 1] = vx * bone->c + vy * bone->d + y;
|
||||
}
|
||||
spVertexAttachment_computeWorldVertices(SUPER(self), slot, worldVertices);
|
||||
}
|
||||
|
||||
void spMeshAttachment_setParentMesh (spMeshAttachment* self, spMeshAttachment* parentMesh) {
|
||||
CONST_CAST(spMeshAttachment*, self->parentMesh) = parentMesh;
|
||||
if (parentMesh) {
|
||||
self->vertices = parentMesh->vertices;
|
||||
self->super.worldVerticesLength = parentMesh->super.worldVerticesLength;
|
||||
|
||||
self->super.bones = parentMesh->super.bones;
|
||||
self->super.bonesCount = parentMesh->super.bonesCount;
|
||||
|
||||
self->super.vertices = parentMesh->super.vertices;
|
||||
self->super.verticesCount = parentMesh->super.verticesCount;
|
||||
|
||||
self->regionUVs = parentMesh->regionUVs;
|
||||
self->verticesCount = parentMesh->verticesCount;
|
||||
|
||||
self->triangles = parentMesh->triangles;
|
||||
self->trianglesCount = parentMesh->trianglesCount;
|
||||
|
||||
56
spine-c/src/spine/PathAttachment.c
Normal file
@ -0,0 +1,56 @@
|
||||
/******************************************************************************
|
||||
* Spine Runtimes Software License
|
||||
* Version 2.3
|
||||
*
|
||||
* Copyright (c) 2013-2015, Esoteric Software
|
||||
* All rights reserved.
|
||||
*
|
||||
* You are granted a perpetual, non-exclusive, non-sublicensable and
|
||||
* non-transferable license to use, install, execute and perform the Spine
|
||||
* Runtimes Software (the "Software") and derivative works solely for personal
|
||||
* or internal use. Without the written permission of Esoteric Software (see
|
||||
* Section 2 of the Spine Software License Agreement), you may not (a) modify,
|
||||
* translate, adapt or otherwise create derivative works, improvements of the
|
||||
* Software or develop new applications using the Software or (b) remove,
|
||||
* delete, alter or obscure any trademarks or any copyright, trademark, patent
|
||||
* or other intellectual property or proprietary rights notices on or in the
|
||||
* Software, including any copy thereof. Redistributions in binary or source
|
||||
* form must include this license and terms.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR
|
||||
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
|
||||
* EVENT SHALL ESOTERIC SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
||||
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*****************************************************************************/
|
||||
|
||||
#include <spine/PathAttachment.h>
|
||||
#include <spine/extension.h>
|
||||
|
||||
void _spPathAttachment_dispose (spAttachment* attachment) {
|
||||
spPathAttachment* self = SUB_CAST(spPathAttachment, attachment);
|
||||
|
||||
_spVertexAttachment_deinit(SUPER(self));
|
||||
|
||||
FREE(self->lengths);
|
||||
FREE(self);
|
||||
}
|
||||
|
||||
spPathAttachment* spPathAttachment_create (const char* name) {
|
||||
spPathAttachment* self = NEW(spPathAttachment);
|
||||
_spAttachment_init(SUPER(SUPER(self)), name, SP_ATTACHMENT_PATH, _spPathAttachment_dispose);
|
||||
return self;
|
||||
}
|
||||
|
||||
void spPathAttachment_computeWorldVertices (spPathAttachment* self, spSlot* slot, float* worldVertices) {
|
||||
spVertexAttachment_computeWorldVertices(SUPER(self), slot, worldVertices);
|
||||
}
|
||||
|
||||
void spPathAttachment_computeWorldVertices1 (spPathAttachment* self, spSlot* slot, int start, int count, float* worldVertices, int offset) {
|
||||
spVertexAttachment_computeWorldVertices1(SUPER(self), start, count, slot, worldVertices, offset);
|
||||
}
|
||||
451
spine-c/src/spine/PathConstraint.c
Normal file
@ -0,0 +1,451 @@
|
||||
/******************************************************************************
|
||||
* Spine Runtimes Software License
|
||||
* Version 2.3
|
||||
*
|
||||
* Copyright (c) 2013-2015, Esoteric Software
|
||||
* All rights reserved.
|
||||
*
|
||||
* You are granted a perpetual, non-exclusive, non-sublicensable and
|
||||
* non-transferable license to use, install, execute and perform the Spine
|
||||
* Runtimes Software (the "Software") and derivative works solely for personal
|
||||
* or internal use. Without the written permission of Esoteric Software (see
|
||||
* Section 2 of the Spine Software License Agreement), you may not (a) modify,
|
||||
* translate, adapt or otherwise create derivative works, improvements of the
|
||||
* Software or develop new applications using the Software or (b) remove,
|
||||
* delete, alter or obscure any trademarks or any copyright, trademark, patent
|
||||
* or other intellectual property or proprietary rights notices on or in the
|
||||
* Software, including any copy thereof. Redistributions in binary or source
|
||||
* form must include this license and terms.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR
|
||||
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
|
||||
* EVENT SHALL ESOTERIC SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
||||
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*****************************************************************************/
|
||||
|
||||
#include <spine/PathConstraint.h>
|
||||
#include <spine/Skeleton.h>
|
||||
#include <spine/extension.h>
|
||||
|
||||
#define PATHCONSTRAINT_NONE -1
|
||||
#define PATHCONSTRAINT_BEFORE -2
|
||||
#define PATHCONSTRAINT_AFTER -3
|
||||
|
||||
spPathConstraint* spPathConstraint_create (spPathConstraintData* data, const spSkeleton* skeleton) {
|
||||
int i;
|
||||
spPathConstraint *self = NEW(spPathConstraint);
|
||||
CONST_CAST(spPathConstraintData*, self->data) = data;
|
||||
self->bonesCount = data->bonesCount;
|
||||
CONST_CAST(spBone**, self->bones) = MALLOC(spBone*, self->bonesCount);
|
||||
for (i = 0; i < self->bonesCount; ++i)
|
||||
self->bones[i] = spSkeleton_findBone(skeleton, self->data->bones[i]->name);
|
||||
self->target = spSkeleton_findSlot(skeleton, self->data->target->name);
|
||||
self->position = data->position;
|
||||
self->spacing = data->spacing;
|
||||
self->rotateMix = data->rotateMix;
|
||||
self->translateMix = data->translateMix;
|
||||
self->spacesCount = 0;
|
||||
self->spaces = 0;
|
||||
self->positionsCount = 0;
|
||||
self->positions = 0;
|
||||
self->worldCount = 0;
|
||||
self->world = 0;
|
||||
self->curvesCount = 0;
|
||||
self->curves = 0;
|
||||
self->lengthsCount = 0;
|
||||
self->lengths = 0;
|
||||
return self;
|
||||
}
|
||||
|
||||
void spPathConstraint_dispose (spPathConstraint* self) {
|
||||
FREE(self->bones);
|
||||
FREE(self->spaces);
|
||||
if (self->positions) FREE(self->positions);
|
||||
if (self->world) FREE(self->world);
|
||||
if (self->curves) FREE(self->curves);
|
||||
if (self->lengths) FREE(self->lengths);
|
||||
FREE(self);
|
||||
}
|
||||
|
||||
void spPathConstraint_apply (spPathConstraint* self) {
|
||||
int i, p, n;
|
||||
float length, x, y, dx, dy, s;
|
||||
float* spaces, *lengths, *positions;
|
||||
float spacing;
|
||||
spSkeleton* skeleton;
|
||||
float skeletonX, skeletonY, boneX, boneY, offsetRotation;
|
||||
int/*bool*/tip;
|
||||
float rotateMix = self->rotateMix, translateMix = self->translateMix;
|
||||
int/*bool*/ translate = translateMix > 0, rotate = rotateMix > 0;
|
||||
spPathAttachment* attachment = (spPathAttachment*)self->target->attachment;
|
||||
spPathConstraintData* data = self->data;
|
||||
spSpacingMode spacingMode = data->spacingMode;
|
||||
int lengthSpacing = spacingMode == SP_SPACING_MODE_LENGTH;
|
||||
spRotateMode rotateMode = data->rotateMode;
|
||||
int tangents = rotateMode == SP_ROTATE_MODE_TANGENT, scale = rotateMode == SP_ROTATE_MODE_CHAIN_SCALE;
|
||||
int boneCount = self->bonesCount, spacesCount = tangents ? boneCount : boneCount + 1;
|
||||
spBone** bones = self->bones;
|
||||
|
||||
if (!translate && !rotate) return;
|
||||
if ((attachment == 0) || (attachment->super.super.type != SP_ATTACHMENT_PATH)) return;
|
||||
|
||||
if (self->spacesCount != spacesCount) {
|
||||
if (self->spaces) FREE(self->spaces);
|
||||
self->spaces = MALLOC(float, spacesCount);
|
||||
self->spacesCount = spacesCount;
|
||||
}
|
||||
spaces = self->spaces;
|
||||
lengths = 0;
|
||||
spacing = self->spacing;
|
||||
if (scale || lengthSpacing) {
|
||||
if (scale) {
|
||||
if (self->lengthsCount != boneCount) {
|
||||
if (self->lengths) FREE(self->lengths);
|
||||
self->lengths = MALLOC(float, boneCount);
|
||||
self->lengthsCount = boneCount;
|
||||
}
|
||||
lengths = self->lengths;
|
||||
}
|
||||
for (i = 0, n = spacesCount - 1; i < n;) {
|
||||
spBone* bone = bones[i];
|
||||
length = bone->data->length, x = length * bone->a, y = length * bone->c;
|
||||
length = SQRT(x * x + y * y);
|
||||
if (scale) lengths[i] = length;
|
||||
spaces[++i] = lengthSpacing ? MAX(0, length + spacing) : spacing;
|
||||
}
|
||||
} else {
|
||||
for (i = 1; i < spacesCount; i++) {
|
||||
spaces[i] = spacing;
|
||||
}
|
||||
}
|
||||
|
||||
positions = spPathConstraint_computeWorldPositions(self, attachment, spacesCount, tangents,
|
||||
data->positionMode == SP_POSITION_MODE_PERCENT, spacingMode == SP_SPACING_MODE_PERCENT);
|
||||
skeleton = self->target->bone->skeleton;
|
||||
skeletonX = skeleton->x, skeletonY = skeleton->y;
|
||||
boneX = positions[0], boneY = positions[1], offsetRotation = self->data->offsetRotation;
|
||||
tip = rotateMode == SP_ROTATE_MODE_CHAIN_SCALE && offsetRotation == 0;
|
||||
for (i = 0, p = 3; i < boneCount; i++, p += 3) {
|
||||
spBone* bone = bones[i];
|
||||
CONST_CAST(float, bone->worldX) += (boneX - skeletonX - bone->worldX) * translateMix;
|
||||
CONST_CAST(float, bone->worldY) += (boneY - skeletonY - bone->worldY) * translateMix;
|
||||
x = positions[p], y = positions[p + 1], dx = x - boneX, dy = y - boneY;
|
||||
if (scale) {
|
||||
length = lengths[i];
|
||||
if (length != 0) {
|
||||
s = (SQRT(dx * dx + dy * dy) / length - 1) * rotateMix + 1;
|
||||
CONST_CAST(float, bone->a) *= s;
|
||||
CONST_CAST(float, bone->c) *= s;
|
||||
}
|
||||
}
|
||||
boneX = x;
|
||||
boneY = y;
|
||||
if (rotate) {
|
||||
float a = bone->a, b = bone->b, c = bone->c, d = bone->d, r, cosine, sine;
|
||||
if (tangents)
|
||||
r = positions[p - 1];
|
||||
else if (spaces[i + 1] == 0)
|
||||
r = positions[p + 2];
|
||||
else
|
||||
r = ATAN2(dy, dx);
|
||||
r -= ATAN2(c, a) - offsetRotation * DEG_RAD;
|
||||
if (tip) {
|
||||
cosine = COS(r);
|
||||
sine = SIN(r);
|
||||
length = bone->data->length;
|
||||
boneX += (length * (cosine * a - sine * c) - dx) * rotateMix;
|
||||
boneY += (length * (sine * a + cosine * c) - dy) * rotateMix;
|
||||
}
|
||||
if (r > PI)
|
||||
r -= PI2;
|
||||
else if (r < -PI)
|
||||
r += PI2;
|
||||
r *= rotateMix;
|
||||
cosine = COS(r);
|
||||
sine = SIN(r);
|
||||
CONST_CAST(float, bone->a) = cosine * a - sine * c;
|
||||
CONST_CAST(float, bone->b) = cosine * b - sine * d;
|
||||
CONST_CAST(float, bone->c) = sine * a + cosine * c;
|
||||
CONST_CAST(float, bone->d) = sine * b + cosine * d;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void _addBeforePosition(float p, float* temp, int i, float* out, int o) {
|
||||
float x1 = temp[i], y1 = temp[i + 1], dx = temp[i + 2] - x1, dy = temp[i + 3] - y1, r = ATAN2(dy, dx);
|
||||
out[o] = x1 + p * COS(r);
|
||||
out[o + 1] = y1 + p * SIN(r);
|
||||
out[o + 2] = r;
|
||||
}
|
||||
|
||||
static void _addAfterPosition (float p, float* temp, int i, float* out, int o) {
|
||||
float x1 = temp[i + 2], y1 = temp[i + 3], dx = x1 - temp[i], dy = y1 - temp[i + 1], r = ATAN2(dy, dx);
|
||||
out[o] = x1 + p * COS(r);
|
||||
out[o + 1] = y1 + p * SIN(r);
|
||||
out[o + 2] = r;
|
||||
}
|
||||
|
||||
static void _addCurvePosition (float p, float x1, float y1, float cx1, float cy1, float cx2, float cy2, float x2, float y2,
|
||||
float* out, int o, int/*bool*/tangents) {
|
||||
float tt, ttt, u, uu, uuu;
|
||||
float ut, ut3, uut3, utt3;
|
||||
float x, y;
|
||||
if (p == 0) p = 0.0001f;
|
||||
tt = p * p, ttt = tt * p, u = 1 - p, uu = u * u, uuu = uu * u;
|
||||
ut = u * p, ut3 = ut * 3, uut3 = u * ut3, utt3 = ut3 * p;
|
||||
x = x1 * uuu + cx1 * uut3 + cx2 * utt3 + x2 * ttt, y = y1 * uuu + cy1 * uut3 + cy2 * utt3 + y2 * ttt;
|
||||
out[o] = x;
|
||||
out[o + 1] = y;
|
||||
if (tangents) out[o + 2] = ATAN2(y - (y1 * uu + cy1 * ut * 2 + cy2 * tt), x - (x1 * uu + cx1 * ut * 2 + cx2 * tt));
|
||||
}
|
||||
|
||||
float* spPathConstraint_computeWorldPositions(spPathConstraint* self, spPathAttachment* path, int spacesCount, int/*bool*/ tangents, int/*bool*/percentPosition, int/**/percentSpacing) {
|
||||
int i, o, w, curve, segment, /*bool*/closed, verticesLength, curveCount, prevCurve;
|
||||
float* out, *curves, *segments;
|
||||
float tmpx, tmpy, dddfx, dddfy, ddfx, ddfy, dfx, dfy, pathLength, curveLength, p;
|
||||
float x1, y1, cx1, cy1, cx2, cy2, x2, y2;
|
||||
spSlot* target = self->target;
|
||||
float position = self->position;
|
||||
float* spaces = self->spaces, *world = 0;
|
||||
if (self->positionsCount != spacesCount * 3 + 2) {
|
||||
if (self->positions) FREE(self->positions);
|
||||
self->positions = MALLOC(float, spacesCount * 3 + 2);
|
||||
self->positionsCount = spacesCount * 3 + 2;
|
||||
}
|
||||
out = self->positions;
|
||||
closed = path->closed;
|
||||
verticesLength = path->super.worldVerticesLength, curveCount = verticesLength / 6, prevCurve = PATHCONSTRAINT_NONE;
|
||||
|
||||
if (!path->constantSpeed) {
|
||||
float* lengths = path->lengths;
|
||||
curveCount -= closed ? 1 : 2;
|
||||
pathLength = lengths[curveCount];
|
||||
if (percentPosition) position *= pathLength;
|
||||
if (percentSpacing) {
|
||||
for (i = 0; i < spacesCount; i++)
|
||||
spaces[i] *= pathLength;
|
||||
}
|
||||
if (self->worldCount != 8) {
|
||||
if (self->world) FREE(self->world);
|
||||
self->world = MALLOC(float, 8);
|
||||
self->worldCount = 8;
|
||||
}
|
||||
world = self->world;
|
||||
for (i = 0, o = 0, curve = 0; i < spacesCount; i++, o += 3) {
|
||||
float space = spaces[i];
|
||||
position += space;
|
||||
p = position;
|
||||
|
||||
if (closed) {
|
||||
p = FMOD(p, pathLength);
|
||||
if (p < 0) p += pathLength;
|
||||
curve = 0;
|
||||
} else if (p < 0) {
|
||||
if (prevCurve != PATHCONSTRAINT_BEFORE) {
|
||||
prevCurve = PATHCONSTRAINT_BEFORE;
|
||||
spPathAttachment_computeWorldVertices1(path, target, 2, 4, world, 0);
|
||||
}
|
||||
_addBeforePosition(p, world, 0, out, o);
|
||||
continue;
|
||||
} else if (p > pathLength) {
|
||||
if (prevCurve != PATHCONSTRAINT_AFTER) {
|
||||
prevCurve = PATHCONSTRAINT_AFTER;
|
||||
spPathAttachment_computeWorldVertices1(path, target, verticesLength - 6, 4, world, 0);
|
||||
}
|
||||
_addAfterPosition(p - pathLength, world, 0, out, o);
|
||||
continue;
|
||||
}
|
||||
|
||||
/* Determine curve containing position. */
|
||||
for (;; curve++) {
|
||||
float length = lengths[curve];
|
||||
if (p > length) continue;
|
||||
if (curve == 0)
|
||||
p /= length;
|
||||
else {
|
||||
float prev = lengths[curve - 1];
|
||||
p = (p - prev) / (length - prev);
|
||||
}
|
||||
break;
|
||||
}
|
||||
if (curve != prevCurve) {
|
||||
prevCurve = curve;
|
||||
if (closed && curve == curveCount) {
|
||||
spPathAttachment_computeWorldVertices1(path, target, verticesLength - 4, 4, world, 0);
|
||||
spPathAttachment_computeWorldVertices1(path, target, 0, 4, world, 4);
|
||||
} else
|
||||
spPathAttachment_computeWorldVertices1(path, target, curve * 6 + 2, 8, world, 0);
|
||||
}
|
||||
_addCurvePosition(p, world[0], world[1], world[2], world[3], world[4], world[5], world[6], world[7], out, o,
|
||||
tangents || (i > 0 && space == 0));
|
||||
}
|
||||
return out;
|
||||
}
|
||||
|
||||
/* World vertices. */
|
||||
if (closed) {
|
||||
verticesLength += 2;
|
||||
if (self->worldCount != verticesLength) {
|
||||
if (self->world) FREE(self->world);
|
||||
self->world = MALLOC(float, verticesLength);
|
||||
self->worldCount = verticesLength;
|
||||
}
|
||||
world = self->world;
|
||||
spPathAttachment_computeWorldVertices1(path, target, 2, verticesLength - 4, world, 0);
|
||||
spPathAttachment_computeWorldVertices1(path, target, 0, 2, world, verticesLength - 4);
|
||||
world[verticesLength - 2] = world[0];
|
||||
world[verticesLength - 1] = world[1];
|
||||
} else {
|
||||
curveCount--;
|
||||
verticesLength -= 4;
|
||||
if (self->worldCount != verticesLength) {
|
||||
if (self->world) FREE(self->world);
|
||||
self->world = MALLOC(float, verticesLength);
|
||||
self->worldCount = verticesLength;
|
||||
}
|
||||
spPathAttachment_computeWorldVertices1(path, target, 2, verticesLength, world, 0);
|
||||
}
|
||||
|
||||
/* Curve lengths. */
|
||||
if (self->curvesCount != curveCount) {
|
||||
if (self->curves) FREE(self->curves);
|
||||
self->curves = MALLOC(float, curveCount);
|
||||
self->curvesCount = curveCount;
|
||||
}
|
||||
curves = self->curves;
|
||||
pathLength = 0;
|
||||
x1 = world[0], y1 = world[1], cx1 = 0, cy1 = 0, cx2 = 0, cy2 = 0, x2 = 0, y2 = 0;
|
||||
for (i = 0, w = 2; i < curveCount; i++, w += 6) {
|
||||
cx1 = world[w];
|
||||
cy1 = world[w + 1];
|
||||
cx2 = world[w + 2];
|
||||
cy2 = world[w + 3];
|
||||
x2 = world[w + 4];
|
||||
y2 = world[w + 5];
|
||||
tmpx = (x1 - cx1 * 2 + cx2) * 0.1875f;
|
||||
tmpy = (y1 - cy1 * 2 + cy2) * 0.1875f;
|
||||
dddfx = ((cx1 - cx2) * 3 - x1 + x2) * 0.09375f;
|
||||
dddfy = ((cy1 - cy2) * 3 - y1 + y2) * 0.09375f;
|
||||
ddfx = tmpx * 2 + dddfx;
|
||||
ddfy = tmpy * 2 + dddfy;
|
||||
dfx = (cx1 - x1) * 0.75f + tmpx + dddfx * 0.16666667f;
|
||||
dfy = (cy1 - y1) * 0.75f + tmpy + dddfy * 0.16666667f;
|
||||
pathLength += SQRT(dfx * dfx + dfy * dfy);
|
||||
dfx += ddfx;
|
||||
dfy += ddfy;
|
||||
ddfx += dddfx;
|
||||
ddfy += dddfy;
|
||||
pathLength += SQRT(dfx * dfx + dfy * dfy);
|
||||
dfx += ddfx;
|
||||
dfy += ddfy;
|
||||
pathLength += SQRT(dfx * dfx + dfy * dfy);
|
||||
dfx += ddfx + dddfx;
|
||||
dfy += ddfy + dddfy;
|
||||
pathLength += SQRT(dfx * dfx + dfy * dfy);
|
||||
curves[i] = pathLength;
|
||||
x1 = x2;
|
||||
y1 = y2;
|
||||
}
|
||||
if (percentPosition) position *= pathLength;
|
||||
if (percentSpacing) {
|
||||
for (i = 0; i < spacesCount; i++)
|
||||
spaces[i] *= pathLength;
|
||||
}
|
||||
|
||||
segments = self->segments;
|
||||
curveLength = 0;
|
||||
for (i = 0, o = 0, curve = 0, segment = 0; i < spacesCount; i++, o += 3) {
|
||||
float space = spaces[i];
|
||||
position += space;
|
||||
p = position;
|
||||
|
||||
if (closed) {
|
||||
p = FMOD(p, pathLength);
|
||||
if (p < 0) p += pathLength;
|
||||
curve = 0;
|
||||
} else if (p < 0) {
|
||||
_addBeforePosition(p, world, 0, out, o);
|
||||
continue;
|
||||
} else if (p > pathLength) {
|
||||
_addAfterPosition(p - pathLength, world, verticesLength - 4, out, o);
|
||||
continue;
|
||||
}
|
||||
|
||||
/* Determine curve containing position. */
|
||||
for (;; curve++) {
|
||||
float length = curves[curve];
|
||||
if (p > length) continue;
|
||||
if (curve == 0)
|
||||
p /= length;
|
||||
else {
|
||||
float prev = curves[curve - 1];
|
||||
p = (p - prev) / (length - prev);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
/* Curve segment lengths. */
|
||||
if (curve != prevCurve) {
|
||||
int ii;
|
||||
prevCurve = curve;
|
||||
ii = curve * 6;
|
||||
x1 = world[ii];
|
||||
y1 = world[ii + 1];
|
||||
cx1 = world[ii + 2];
|
||||
cy1 = world[ii + 3];
|
||||
cx2 = world[ii + 4];
|
||||
cy2 = world[ii + 5];
|
||||
x2 = world[ii + 6];
|
||||
y2 = world[ii + 7];
|
||||
tmpx = (x1 - cx1 * 2 + cx2) * 0.03f;
|
||||
tmpy = (y1 - cy1 * 2 + cy2) * 0.03f;
|
||||
dddfx = ((cx1 - cx2) * 3 - x1 + x2) * 0.006f;
|
||||
dddfy = ((cy1 - cy2) * 3 - y1 + y2) * 0.006f;
|
||||
ddfx = tmpx * 2 + dddfx;
|
||||
ddfy = tmpy * 2 + dddfy;
|
||||
dfx = (cx1 - x1) * 0.3f + tmpx + dddfx * 0.16666667f;
|
||||
dfy = (cy1 - y1) * 0.3f + tmpy + dddfy * 0.16666667f;
|
||||
curveLength = SQRT(dfx * dfx + dfy * dfy);
|
||||
segments[0] = curveLength;
|
||||
for (ii = 1; ii < 8; ii++) {
|
||||
dfx += ddfx;
|
||||
dfy += ddfy;
|
||||
ddfx += dddfx;
|
||||
ddfy += dddfy;
|
||||
curveLength += SQRT(dfx * dfx + dfy * dfy);
|
||||
segments[ii] = curveLength;
|
||||
}
|
||||
dfx += ddfx;
|
||||
dfy += ddfy;
|
||||
curveLength += SQRT(dfx * dfx + dfy * dfy);
|
||||
segments[8] = curveLength;
|
||||
dfx += ddfx + dddfx;
|
||||
dfy += ddfy + dddfy;
|
||||
curveLength += SQRT(dfx * dfx + dfy * dfy);
|
||||
segments[9] = curveLength;
|
||||
segment = 0;
|
||||
}
|
||||
|
||||
/* Weight by segment length. */
|
||||
p *= curveLength;
|
||||
for (;; segment++) {
|
||||
float length = segments[segment];
|
||||
if (p > length) continue;
|
||||
if (segment == 0)
|
||||
p /= length;
|
||||
else {
|
||||
float prev = segments[segment - 1];
|
||||
p = segment + (p - prev) / (length - prev);
|
||||
}
|
||||
break;
|
||||
}
|
||||
_addCurvePosition(p * 0.1f, x1, y1, cx1, cy1, cx2, cy2, x2, y2, out, o, tangents || (i > 0 && space == 0));
|
||||
}
|
||||
return out;
|
||||
}
|
||||
45
spine-c/src/spine/PathConstraintData.c
Normal file
@ -0,0 +1,45 @@
|
||||
/******************************************************************************
|
||||
* Spine Runtimes Software License
|
||||
* Version 2.3
|
||||
*
|
||||
* Copyright (c) 2013-2015, Esoteric Software
|
||||
* All rights reserved.
|
||||
*
|
||||
* You are granted a perpetual, non-exclusive, non-sublicensable and
|
||||
* non-transferable license to use, install, execute and perform the Spine
|
||||
* Runtimes Software (the "Software") and derivative works solely for personal
|
||||
* or internal use. Without the written permission of Esoteric Software (see
|
||||
* Section 2 of the Spine Software License Agreement), you may not (a) modify,
|
||||
* translate, adapt or otherwise create derivative works, improvements of the
|
||||
* Software or develop new applications using the Software or (b) remove,
|
||||
* delete, alter or obscure any trademarks or any copyright, trademark, patent
|
||||
* or other intellectual property or proprietary rights notices on or in the
|
||||
* Software, including any copy thereof. Redistributions in binary or source
|
||||
* form must include this license and terms.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR
|
||||
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
|
||||
* EVENT SHALL ESOTERIC SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
||||
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*****************************************************************************/
|
||||
|
||||
#include <spine/PathConstraintData.h>
|
||||
#include <spine/extension.h>
|
||||
|
||||
spPathConstraintData* spPathConstraintData_create (const char* name) {
|
||||
spPathConstraintData* self = NEW(spPathConstraintData);
|
||||
MALLOC_STR(self->name, name);
|
||||
return self;
|
||||
}
|
||||
|
||||
void spPathConstraintData_dispose (spPathConstraintData* self) {
|
||||
FREE(self->name);
|
||||
FREE(self->bones);
|
||||
FREE(self);
|
||||
}
|
||||
@ -30,11 +30,13 @@
|
||||
*****************************************************************************/
|
||||
|
||||
#include <spine/Skeleton.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <spine/extension.h>
|
||||
#include <spine/Skin.h>
|
||||
|
||||
typedef enum {
|
||||
SP_UPDATE_BONE, SP_UPDATE_IK_CONSTRAINT, SP_UPDATE_TRANSFORM_CONSTRAINT
|
||||
SP_UPDATE_BONE, SP_UPDATE_IK_CONSTRAINT, SP_UPDATE_PATH_CONSTRAINT, SP_UPDATE_TRANSFORM_CONSTRAINT
|
||||
} _spUpdateType;
|
||||
|
||||
typedef struct {
|
||||
@ -46,11 +48,13 @@ typedef struct {
|
||||
spSkeleton super;
|
||||
|
||||
int updateCacheCount;
|
||||
int updateCacheCapacity;
|
||||
_spUpdate* updateCache;
|
||||
} _spSkeleton;
|
||||
|
||||
spSkeleton* spSkeleton_create (spSkeletonData* data) {
|
||||
int i, ii;
|
||||
int i;
|
||||
int* childrenCounts;
|
||||
|
||||
_spSkeleton* internal = NEW(_spSkeleton);
|
||||
spSkeleton* self = SUPER(internal);
|
||||
@ -58,20 +62,30 @@ spSkeleton* spSkeleton_create (spSkeletonData* data) {
|
||||
|
||||
self->bonesCount = self->data->bonesCount;
|
||||
self->bones = MALLOC(spBone*, self->bonesCount);
|
||||
childrenCounts = CALLOC(int, self->bonesCount);
|
||||
|
||||
for (i = 0; i < self->bonesCount; ++i) {
|
||||
spBoneData* boneData = self->data->bones[i];
|
||||
spBone* parent = 0;
|
||||
if (boneData->parent) {
|
||||
/* Find parent bone. */
|
||||
for (ii = 0; ii < self->bonesCount; ++ii) {
|
||||
if (data->bones[ii] == boneData->parent) {
|
||||
parent = self->bones[ii];
|
||||
break;
|
||||
}
|
||||
}
|
||||
spBone* bone;
|
||||
if (!boneData->parent)
|
||||
bone = spBone_create(boneData, self, 0);
|
||||
else {
|
||||
spBone* parent = self->bones[boneData->parent->index];
|
||||
bone = spBone_create(boneData, self, parent);
|
||||
++childrenCounts[boneData->parent->index];
|
||||
}
|
||||
self->bones[i] = spBone_create(boneData, self, parent);
|
||||
self->bones[i] = bone;
|
||||
}
|
||||
for (i = 0; i < self->bonesCount; ++i) {
|
||||
spBoneData* boneData = self->data->bones[i];
|
||||
spBone* bone = self->bones[i];
|
||||
CONST_CAST(spBone**, bone->children) = MALLOC(spBone*, childrenCounts[boneData->index]);
|
||||
}
|
||||
for (i = 0; i < self->bonesCount; ++i) {
|
||||
spBone* bone = self->bones[i];
|
||||
spBone* parent = bone->parent;
|
||||
if (parent)
|
||||
parent->children[parent->childrenCount++] = bone;
|
||||
}
|
||||
CONST_CAST(spBone*, self->root) = self->bones[0];
|
||||
|
||||
@ -79,28 +93,16 @@ spSkeleton* spSkeleton_create (spSkeletonData* data) {
|
||||
self->slots = MALLOC(spSlot*, self->slotsCount);
|
||||
for (i = 0; i < self->slotsCount; ++i) {
|
||||
spSlotData *slotData = data->slots[i];
|
||||
|
||||
/* Find bone for the slotData's boneData. */
|
||||
spBone* bone = 0;
|
||||
for (ii = 0; ii < self->bonesCount; ++ii) {
|
||||
if (data->bones[ii] == slotData->boneData) {
|
||||
bone = self->bones[ii];
|
||||
break;
|
||||
}
|
||||
}
|
||||
spBone* bone = self->bones[slotData->boneData->index];
|
||||
self->slots[i] = spSlot_create(slotData, bone);
|
||||
}
|
||||
|
||||
self->drawOrder = MALLOC(spSlot*, self->slotsCount);
|
||||
memcpy(self->drawOrder, self->slots, sizeof(spSlot*) * self->slotsCount);
|
||||
|
||||
self->r = 1;
|
||||
self->g = 1;
|
||||
self->b = 1;
|
||||
self->a = 1;
|
||||
|
||||
self->ikConstraintsCount = data->ikConstraintsCount;
|
||||
self->ikConstraints = MALLOC(spIkConstraint*, self->ikConstraintsCount);
|
||||
self->ikConstraintsSorted = MALLOC(spIkConstraint*, self->ikConstraintsCount);
|
||||
for (i = 0; i < self->data->ikConstraintsCount; ++i)
|
||||
self->ikConstraints[i] = spIkConstraint_create(self->data->ikConstraints[i], self);
|
||||
|
||||
@ -109,8 +111,17 @@ spSkeleton* spSkeleton_create (spSkeletonData* data) {
|
||||
for (i = 0; i < self->data->transformConstraintsCount; ++i)
|
||||
self->transformConstraints[i] = spTransformConstraint_create(self->data->transformConstraints[i], self);
|
||||
|
||||
self->pathConstraintsCount = data->pathConstraintsCount;
|
||||
self->pathConstraints = MALLOC(spPathConstraint*, self->pathConstraintsCount);
|
||||
for (i = 0; i < self->data->pathConstraintsCount; i++)
|
||||
self->pathConstraints[i] = spPathConstraint_create(self->data->pathConstraints[i], self);
|
||||
|
||||
self->r = 1; self->g = 1; self->b = 1; self->a = 1;
|
||||
|
||||
spSkeleton_updateCache(self);
|
||||
|
||||
FREE(childrenCounts);
|
||||
|
||||
return self;
|
||||
}
|
||||
|
||||
@ -131,55 +142,184 @@ void spSkeleton_dispose (spSkeleton* self) {
|
||||
for (i = 0; i < self->ikConstraintsCount; ++i)
|
||||
spIkConstraint_dispose(self->ikConstraints[i]);
|
||||
FREE(self->ikConstraints);
|
||||
FREE(self->ikConstraintsSorted);
|
||||
|
||||
for (i = 0; i < self->transformConstraintsCount; ++i)
|
||||
spTransformConstraint_dispose(self->transformConstraints[i]);
|
||||
FREE(self->transformConstraints);
|
||||
|
||||
for (i = 0; i < self->pathConstraintsCount; i++)
|
||||
spPathConstraint_dispose(self->pathConstraints[i]);
|
||||
FREE(self->pathConstraints);
|
||||
|
||||
FREE(self->drawOrder);
|
||||
FREE(self);
|
||||
}
|
||||
|
||||
void spSkeleton_updateCache (const spSkeleton* self) {
|
||||
int i, ii;
|
||||
static void _addToUpdateCache(_spSkeleton* const internal, _spUpdateType type, void *object) {
|
||||
_spUpdate* update;
|
||||
if (internal->updateCacheCount == internal->updateCacheCapacity) {
|
||||
internal->updateCacheCapacity *= 2;
|
||||
internal->updateCache = realloc(internal->updateCache, sizeof(_spUpdate) * internal->updateCacheCapacity);
|
||||
}
|
||||
update = internal->updateCache + internal->updateCacheCount;
|
||||
update->type = type;
|
||||
update->object = object;
|
||||
++internal->updateCacheCount;
|
||||
}
|
||||
|
||||
static void _sortBone(_spSkeleton* const internal, spBone* bone) {
|
||||
if (bone->sorted) return;
|
||||
if (bone->parent) _sortBone(internal, bone->parent);
|
||||
bone->sorted = 1;
|
||||
_addToUpdateCache(internal, SP_UPDATE_BONE, bone);
|
||||
}
|
||||
|
||||
static void _sortPathConstraintAttachmentBones(_spSkeleton* const internal, spAttachment* attachment, spBone* slotBone) {
|
||||
spPathAttachment* pathAttachment = (spPathAttachment*)attachment;
|
||||
int* pathBones;
|
||||
int pathBonesCount;
|
||||
if (pathAttachment->super.super.type != SP_ATTACHMENT_PATH) return;
|
||||
pathBones = pathAttachment->super.bones;
|
||||
pathBonesCount = pathAttachment->super.bonesCount;
|
||||
if (pathBones == 0)
|
||||
_sortBone(internal, slotBone);
|
||||
else {
|
||||
spBone** bones = internal->super.bones;
|
||||
int i;
|
||||
for (i = 0; i < pathBonesCount; i++)
|
||||
_sortBone(internal, bones[pathBones[i]]);
|
||||
}
|
||||
}
|
||||
|
||||
static void _sortPathConstraintAttachment(_spSkeleton* const internal, spSkin* skin, int slotIndex, spBone* slotBone) {
|
||||
_Entry* entry = SUB_CAST(_spSkin, skin)->entries;
|
||||
while (entry) {
|
||||
if (entry->slotIndex == slotIndex) _sortPathConstraintAttachmentBones(internal, entry->attachment, slotBone);
|
||||
entry = entry->next;
|
||||
}
|
||||
}
|
||||
|
||||
static void _sortReset(spBone** bones, int bonesCount) {
|
||||
int i;
|
||||
for (i = 0; i < bonesCount; ++i) {
|
||||
spBone* bone = bones[i];
|
||||
if (bone->sorted) _sortReset(bone->children, bone->childrenCount);
|
||||
bone->sorted = 0;
|
||||
}
|
||||
}
|
||||
|
||||
void spSkeleton_updateCache (spSkeleton* self) {
|
||||
int i, ii, n, nn, level;
|
||||
spBone** bones;
|
||||
spIkConstraint** ikConstraints;
|
||||
spPathConstraint** pathConstraints;
|
||||
spTransformConstraint** transformConstraints;
|
||||
_spSkeleton* internal = SUB_CAST(_spSkeleton, self);
|
||||
int capacity = self->bonesCount + self->transformConstraintsCount + self->ikConstraintsCount;
|
||||
internal->updateCacheCapacity = self->bonesCount + self->ikConstraintsCount + self->transformConstraintsCount + self->pathConstraintsCount;
|
||||
|
||||
FREE(internal->updateCache);
|
||||
internal->updateCache = MALLOC(_spUpdate, capacity);
|
||||
internal->updateCache = MALLOC(_spUpdate, internal->updateCacheCapacity);
|
||||
internal->updateCacheCount = 0;
|
||||
|
||||
for (i = 0; i < self->bonesCount; ++i) {
|
||||
spBone* bone = self->bones[i];
|
||||
update = internal->updateCache + internal->updateCacheCount++;
|
||||
update->type = SP_UPDATE_BONE;
|
||||
update->object = bone;
|
||||
for (ii = 0; ii < self->ikConstraintsCount; ++ii) {
|
||||
spIkConstraint* ikConstraint = self->ikConstraints[ii];
|
||||
if (bone == ikConstraint->bones[ikConstraint->bonesCount - 1]) {
|
||||
update = internal->updateCache + internal->updateCacheCount++;
|
||||
update->type = SP_UPDATE_IK_CONSTRAINT;
|
||||
update->object = ikConstraint;
|
||||
break;
|
||||
}
|
||||
bones = self->bones;
|
||||
for (i = 0; i < self->bonesCount; ++i)
|
||||
bones[i]->sorted = 0;
|
||||
|
||||
/* IK first, lowest hierarchy depth first. */
|
||||
if (self->ikConstraintsSorted) FREE(self->ikConstraintsSorted);
|
||||
self->ikConstraintsSorted = MALLOC(spIkConstraint*, self->ikConstraintsCount);
|
||||
ikConstraints = self->ikConstraintsSorted;
|
||||
for (i = 0; i < self->ikConstraintsCount; ++i)
|
||||
ikConstraints[i] = self->ikConstraints[i];
|
||||
for (i = 0; i < self->ikConstraintsCount; ++i) {
|
||||
spIkConstraint* ik = ikConstraints[i];
|
||||
spBone* bone = ik->bones[0]->parent;
|
||||
for (level = 0; bone; ++level)
|
||||
bone = bone->parent;
|
||||
ik->level = level;
|
||||
}
|
||||
for (i = 1; i < self->ikConstraintsCount; ++i) {
|
||||
spIkConstraint* ik = ikConstraints[i];
|
||||
level = ik->level;
|
||||
for (ii = i - 1; ii >= 0; --ii) {
|
||||
spIkConstraint* other = ikConstraints[ii];
|
||||
if (other->level < level) break;
|
||||
ikConstraints[ii + 1] = other;
|
||||
}
|
||||
ikConstraints[ii + 1] = ik;
|
||||
}
|
||||
for (i = 0; i < self->ikConstraintsCount; ++i) {
|
||||
spBone** constrained;
|
||||
spBone* parent;
|
||||
spIkConstraint* constraint = ikConstraints[i];
|
||||
spBone* target = constraint->target;
|
||||
_sortBone(internal, target);
|
||||
|
||||
constrained = constraint->bones;
|
||||
parent = constrained[0];
|
||||
_sortBone(internal, parent);
|
||||
|
||||
_addToUpdateCache(internal, SP_UPDATE_IK_CONSTRAINT, constraint);
|
||||
|
||||
_sortReset(parent->children, parent->childrenCount);
|
||||
constrained[constraint->bonesCount - 1]->sorted = 1;
|
||||
}
|
||||
|
||||
for (i = 0; i < self->transformConstraintsCount; ++i) {
|
||||
spTransformConstraint* transformConstraint = self->transformConstraints[i];
|
||||
for (ii = internal->updateCacheCount - 1; ii >= 0; --ii) {
|
||||
if (internal->updateCache[ii].object == transformConstraint->bone) {
|
||||
int insertIndex = ii + 1;
|
||||
update = internal->updateCache + insertIndex;
|
||||
memmove(update + 1, update, (internal->updateCacheCount - insertIndex) * sizeof(_spUpdate));
|
||||
update->type = SP_UPDATE_TRANSFORM_CONSTRAINT;
|
||||
update->object = transformConstraint;
|
||||
internal->updateCacheCount++;
|
||||
break;
|
||||
}
|
||||
}
|
||||
pathConstraints = self->pathConstraints;
|
||||
for (i = 0, n = self->pathConstraintsCount; i < n; i++) {
|
||||
spAttachment* attachment;
|
||||
spBone** constrained;
|
||||
int boneCount;
|
||||
spPathConstraint* constraint = pathConstraints[i];
|
||||
|
||||
spSlot* slot = constraint->target;
|
||||
int slotIndex = slot->data->index;
|
||||
spBone* slotBone = slot->bone;
|
||||
if (self->skin) _sortPathConstraintAttachment(internal, self->skin, slotIndex, slotBone);
|
||||
if (self->data->defaultSkin && self->data->defaultSkin != self->skin)
|
||||
_sortPathConstraintAttachment(internal, self->data->defaultSkin, slotIndex, slotBone);
|
||||
for (ii = 0, nn = self->data->skinsCount; ii < nn; ii++)
|
||||
_sortPathConstraintAttachment(internal, self->data->skins[ii], slotIndex, slotBone);
|
||||
|
||||
attachment = slot->attachment;
|
||||
if (attachment->type == SP_ATTACHMENT_PATH) _sortPathConstraintAttachmentBones(internal, attachment, slotBone);
|
||||
|
||||
constrained = constraint->bones;
|
||||
boneCount = constraint->bonesCount;
|
||||
for (ii = 0; ii < boneCount; ii++)
|
||||
_sortBone(internal, constrained[ii]);
|
||||
|
||||
_addToUpdateCache(internal, SP_UPDATE_PATH_CONSTRAINT, constraint);
|
||||
|
||||
for (ii = 0; ii < boneCount; ii++)
|
||||
_sortReset(constrained[ii]->children, constrained[ii]->childrenCount);
|
||||
for (ii = 0; ii < boneCount; ii++)
|
||||
constrained[ii]->sorted = 1;
|
||||
}
|
||||
|
||||
transformConstraints = self->transformConstraints;
|
||||
for (i = 0, n = self->transformConstraintsCount; i < n; ++i) {
|
||||
spTransformConstraint* constraint = transformConstraints[i];
|
||||
spBone** constrained = constraint->bones;
|
||||
|
||||
_sortBone(internal, constraint->target);
|
||||
|
||||
for (ii = 0; ii < constraint->bonesCount; ++ii)
|
||||
_sortBone(internal, constrained[ii]);
|
||||
|
||||
_addToUpdateCache(internal, SP_UPDATE_TRANSFORM_CONSTRAINT, constraint);
|
||||
|
||||
for (ii = 0; ii < constraint->bonesCount; ++ii) {
|
||||
spBone* bone = constrained[ii];
|
||||
_sortReset(bone->children, bone->childrenCount);
|
||||
}
|
||||
for (ii = 0; ii < constraint->bonesCount; ++ii)
|
||||
constrained[ii]->sorted = 1;
|
||||
}
|
||||
|
||||
for (i = 0; i < self->bonesCount; ++i)
|
||||
_sortBone(internal, self->bones[i]);
|
||||
}
|
||||
|
||||
void spSkeleton_updateWorldTransform (const spSkeleton* self) {
|
||||
@ -198,6 +338,9 @@ void spSkeleton_updateWorldTransform (const spSkeleton* self) {
|
||||
case SP_UPDATE_TRANSFORM_CONSTRAINT:
|
||||
spTransformConstraint_apply((spTransformConstraint*)update->object);
|
||||
break;
|
||||
case SP_UPDATE_PATH_CONSTRAINT:
|
||||
spPathConstraint_apply((spPathConstraint*)update->object);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -226,6 +369,15 @@ void spSkeleton_setBonesToSetupPose (const spSkeleton* self) {
|
||||
constraint->scaleMix = data->scaleMix;
|
||||
constraint->shearMix = data->shearMix;
|
||||
}
|
||||
|
||||
for (i = 0; i < self->pathConstraintsCount; ++i) {
|
||||
spPathConstraint* constraint = self->pathConstraints[i];
|
||||
spPathConstraintData* data = constraint->data;
|
||||
constraint->position = data->position;
|
||||
constraint->spacing = data->spacing;
|
||||
constraint->rotateMix = data->rotateMix;
|
||||
constraint->translateMix = data->translateMix;
|
||||
}
|
||||
}
|
||||
|
||||
void spSkeleton_setSlotsToSetupPose (const spSkeleton* self) {
|
||||
@ -344,6 +496,13 @@ spTransformConstraint* spSkeleton_findTransformConstraint (const spSkeleton* sel
|
||||
return 0;
|
||||
}
|
||||
|
||||
spPathConstraint* spSkeleton_findPathConstraint (const spSkeleton* self, const char* constraintName) {
|
||||
int i;
|
||||
for (i = 0; i < self->pathConstraintsCount; ++i)
|
||||
if (strcmp(self->pathConstraints[i]->data->name, constraintName) == 0) return self->pathConstraints[i];
|
||||
return 0;
|
||||
}
|
||||
|
||||
void spSkeleton_update (spSkeleton* self, float deltaTime) {
|
||||
self->time += deltaTime;
|
||||
}
|
||||
|
||||
@ -137,12 +137,12 @@ void spSkeletonBounds_update (spSkeletonBounds* self, spSkeleton* skeleton, int/
|
||||
self->boundingBoxes[self->count] = boundingBox;
|
||||
|
||||
polygon = self->polygons[self->count];
|
||||
if (!polygon || polygon->capacity < boundingBox->verticesCount) {
|
||||
if (!polygon || polygon->capacity < boundingBox->super.worldVerticesLength) {
|
||||
if (polygon) spPolygon_dispose(polygon);
|
||||
self->polygons[self->count] = polygon = spPolygon_create(boundingBox->verticesCount);
|
||||
self->polygons[self->count] = polygon = spPolygon_create(boundingBox->super.worldVerticesLength);
|
||||
}
|
||||
polygon->count = boundingBox->verticesCount;
|
||||
spBoundingBoxAttachment_computeWorldVertices(boundingBox, slot->bone, polygon->vertices);
|
||||
polygon->count = boundingBox->super.worldVerticesLength;
|
||||
spBoundingBoxAttachment_computeWorldVertices(boundingBox, slot, polygon->vertices);
|
||||
|
||||
if (updateAabb) {
|
||||
int ii = 0;
|
||||
|
||||
@ -67,6 +67,10 @@ void spSkeletonData_dispose (spSkeletonData* self) {
|
||||
spTransformConstraintData_dispose(self->transformConstraints[i]);
|
||||
FREE(self->transformConstraints);
|
||||
|
||||
for (i = 0; i < self->pathConstraintsCount; i++)
|
||||
spPathConstraintData_dispose(self->pathConstraints[i]);
|
||||
FREE(self->pathConstraints);
|
||||
|
||||
FREE(self->hash);
|
||||
FREE(self->version);
|
||||
|
||||
@ -135,3 +139,10 @@ spTransformConstraintData* spSkeletonData_findTransformConstraint (const spSkele
|
||||
if (strcmp(self->transformConstraints[i]->name, constraintName) == 0) return self->transformConstraints[i];
|
||||
return 0;
|
||||
}
|
||||
|
||||
spPathConstraintData* spSkeletonData_findPathConstraint (const spSkeletonData* self, const char* constraintName) {
|
||||
int i;
|
||||
for (i = 0; i < self->pathConstraintsCount; ++i)
|
||||
if (strcmp(self->pathConstraints[i]->name, constraintName) == 0) return self->pathConstraints[i];
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -32,14 +32,6 @@
|
||||
#include <spine/Skin.h>
|
||||
#include <spine/extension.h>
|
||||
|
||||
typedef struct _Entry _Entry;
|
||||
struct _Entry {
|
||||
int slotIndex;
|
||||
const char* name;
|
||||
spAttachment* attachment;
|
||||
_Entry* next;
|
||||
};
|
||||
|
||||
_Entry* _Entry_create (int slotIndex, const char* name, spAttachment* attachment) {
|
||||
_Entry* self = NEW(_Entry);
|
||||
self->slotIndex = slotIndex;
|
||||
@ -56,11 +48,6 @@ void _Entry_dispose (_Entry* self) {
|
||||
|
||||
/**/
|
||||
|
||||
typedef struct {
|
||||
spSkin super;
|
||||
_Entry* entries;
|
||||
} _spSkin;
|
||||
|
||||
spSkin* spSkin_create (const char* name) {
|
||||
spSkin* self = SUPER(NEW(_spSkin));
|
||||
MALLOC_STR(self->name, name);
|
||||
|
||||
@ -66,8 +66,6 @@ float spSlot_getAttachmentTime (const spSlot* self) {
|
||||
}
|
||||
|
||||
void spSlot_setToSetupPose (spSlot* self) {
|
||||
spAttachment* attachment = 0;
|
||||
|
||||
self->r = self->data->r;
|
||||
self->g = self->data->g;
|
||||
self->b = self->data->b;
|
||||
@ -76,14 +74,8 @@ void spSlot_setToSetupPose (spSlot* self) {
|
||||
if (!self->data->attachmentName)
|
||||
spSlot_setAttachment(self, 0);
|
||||
else {
|
||||
/* Find slot index. */
|
||||
int i;
|
||||
for (i = 0; i < self->bone->skeleton->data->slotsCount; ++i) {
|
||||
if (self->data == self->bone->skeleton->data->slots[i]) {
|
||||
attachment = spSkeleton_getAttachmentForSlotIndex(self->bone->skeleton, i, self->data->attachmentName);
|
||||
break;
|
||||
}
|
||||
}
|
||||
spAttachment* attachment = spSkeleton_getAttachmentForSlotIndex(
|
||||
self->bone->skeleton, self->data->index, self->data->attachmentName);
|
||||
CONST_CAST(spAttachment*, self->attachment) = 0;
|
||||
spSlot_setAttachment(self, attachment);
|
||||
}
|
||||
|
||||
@ -32,8 +32,9 @@
|
||||
#include <spine/SlotData.h>
|
||||
#include <spine/extension.h>
|
||||
|
||||
spSlotData* spSlotData_create (const char* name, spBoneData* boneData) {
|
||||
spSlotData* spSlotData_create (const int index, const char* name, spBoneData* boneData) {
|
||||
spSlotData* self = NEW(spSlotData);
|
||||
CONST_CAST(int, self->index) = index;
|
||||
MALLOC_STR(self->name, name);
|
||||
CONST_CAST(spBoneData*, self->boneData) = boneData;
|
||||
self->r = 1;
|
||||
|
||||
@ -34,73 +34,79 @@
|
||||
#include <spine/extension.h>
|
||||
|
||||
spTransformConstraint* spTransformConstraint_create (spTransformConstraintData* data, const spSkeleton* skeleton) {
|
||||
int i;
|
||||
spTransformConstraint* self = NEW(spTransformConstraint);
|
||||
CONST_CAST(spTransformConstraintData*, self->data) = data;
|
||||
self->translateMix = data->translateMix;
|
||||
self->rotateMix = data->rotateMix;
|
||||
self->translateMix = data->translateMix;
|
||||
self->scaleMix = data->scaleMix;
|
||||
self->shearMix = data->shearMix;
|
||||
self->offsetX = data->offsetX;
|
||||
self->offsetY = data->offsetY;
|
||||
self->bone = spSkeleton_findBone(skeleton, self->data->bone->name);
|
||||
self->bonesCount = data->bonesCount;
|
||||
CONST_CAST(spBone**, self->bones) = MALLOC(spBone*, self->bonesCount);
|
||||
for (i = 0; i < self->bonesCount; ++i)
|
||||
self->bones[i] = spSkeleton_findBone(skeleton, self->data->bones[i]->name);
|
||||
self->target = spSkeleton_findBone(skeleton, self->data->target->name);
|
||||
return self;
|
||||
}
|
||||
|
||||
void spTransformConstraint_dispose (spTransformConstraint* self) {
|
||||
FREE(self->bones);
|
||||
FREE(self);
|
||||
}
|
||||
|
||||
void spTransformConstraint_apply (spTransformConstraint* self) {
|
||||
spBone* bone = self->bone;
|
||||
float rotateMix = self->rotateMix, translateMix = self->translateMix, scaleMix = self->scaleMix, shearMix = self->shearMix;
|
||||
spBone* target = self->target;
|
||||
float ta = target->a, tb = target->b, tc = target->c, td = target->d;
|
||||
int i;
|
||||
for (i = 0; i < self->bonesCount; ++i) {
|
||||
spBone* bone = self->bones[i];
|
||||
|
||||
if (self->rotateMix > 0) {
|
||||
float cosine, sine;
|
||||
float a = bone->a, b = bone->b, c = bone->c, d = bone->d;
|
||||
float r = atan2(target->c, target->a) - atan2(c, a) + self->offsetRotation * DEG_RAD;
|
||||
if (r > PI)
|
||||
r -= PI2;
|
||||
else if (r < -PI) r += PI2;
|
||||
r *= self->rotateMix;
|
||||
cosine = COS(r); sine = SIN(r);
|
||||
CONST_CAST(float, bone->a) = cosine * a - sine * c;
|
||||
CONST_CAST(float, bone->b) = cosine * b - sine * d;
|
||||
CONST_CAST(float, bone->c) = sine * a + cosine * c;
|
||||
CONST_CAST(float, bone->d) = sine * b + cosine * d;
|
||||
}
|
||||
if (rotateMix > 0) {
|
||||
float a = bone->a, b = bone->b, c = bone->c, d = bone->d;
|
||||
float r = ATAN2(tc, ta) - ATAN2(c, a) + self->data->offsetRotation * DEG_RAD;
|
||||
float cosine, sine;
|
||||
if (r > PI) r -= PI2;
|
||||
else if (r < -PI) r += PI2;
|
||||
r *= rotateMix;
|
||||
cosine = COS(r);
|
||||
sine = SIN(r);
|
||||
CONST_CAST(float, bone->a) = cosine * a - sine * c;
|
||||
CONST_CAST(float, bone->b) = cosine * b - sine * d;
|
||||
CONST_CAST(float, bone->c) = sine * a + cosine * c;
|
||||
CONST_CAST(float, bone->d) = sine * b + cosine * d;
|
||||
}
|
||||
|
||||
if (self->scaleMix > 0) {
|
||||
float bs = (float)SQRT(bone->a * bone->a + bone->c * bone->c);
|
||||
float ts = (float)SQRT(target->a * target->a + target->c * target->c);
|
||||
float s = bs > 0.00001f ? (bs + (ts - bs + self->offsetScaleX) * self->scaleMix) / bs : 0;
|
||||
CONST_CAST(float, bone->a) *= s;
|
||||
CONST_CAST(float, bone->c) *= s;
|
||||
bs = (float)SQRT(bone->b * bone->b + bone->d * bone->d);
|
||||
ts = (float)SQRT(target->b * target->b + target->d * target->d);
|
||||
s = bs > 0.00001f ? (bs + (ts - bs + self->offsetScaleY) * self->scaleMix) / bs : 0;
|
||||
CONST_CAST(float, bone->b) *= s;
|
||||
CONST_CAST(float, bone->d) *= s;
|
||||
}
|
||||
if (translateMix > 0) {
|
||||
float x, y;
|
||||
spBone_localToWorld(target, self->data->offsetX, self->data->offsetY, &x, &y);
|
||||
CONST_CAST(float, bone->worldX) += (x - bone->worldX) * translateMix;
|
||||
CONST_CAST(float, bone->worldY) += (y - bone->worldY) * translateMix;
|
||||
}
|
||||
|
||||
if (self->shearMix > 0) {
|
||||
float b = bone->b, d = bone->d;
|
||||
float by = atan2(d, b);
|
||||
float r = atan2(target->d, target->b) - atan2(target->c, target->a) - (by - atan2(bone->c, bone->a));
|
||||
float s;
|
||||
if (r > PI)
|
||||
r -= PI2;
|
||||
else if (r < -PI) r += PI2;
|
||||
r = by + (r + self->offsetShearY * DEG_RAD) * self->shearMix;
|
||||
s = (float)SQRT(b * b + d * d);
|
||||
CONST_CAST(float, bone->b) = COS(r) * s;
|
||||
CONST_CAST(float, bone->d) = SIN(r) * s;
|
||||
}
|
||||
if (scaleMix > 0) {
|
||||
float bs = SQRT(bone->a * bone->a + bone->c * bone->c);
|
||||
float ts = SQRT(ta * ta + tc * tc);
|
||||
float s = bs > 0.00001f ? (bs + (ts - bs + self->data->offsetScaleX) * scaleMix) / bs : 0;
|
||||
CONST_CAST(float, bone->a) *= s;
|
||||
CONST_CAST(float, bone->c) *= s;
|
||||
bs = SQRT(bone->b * bone->b + bone->d * bone->d);
|
||||
ts = SQRT(tb * tb + td * td);
|
||||
s = bs > 0.00001f ? (bs + (ts - bs + self->data->offsetScaleY) * scaleMix) / bs : 0;
|
||||
CONST_CAST(float, bone->b) *= s;
|
||||
CONST_CAST(float, bone->d) *= s;
|
||||
}
|
||||
|
||||
if (self->translateMix > 0) {
|
||||
float tx, ty;
|
||||
spBone_localToWorld(self->target, self->offsetX, self->offsetY, &tx, &ty);
|
||||
CONST_CAST(float, self->bone->worldX) += (tx - self->bone->worldX) * self->translateMix;
|
||||
CONST_CAST(float, self->bone->worldY) += (ty - self->bone->worldY) * self->translateMix;
|
||||
if (shearMix > 0) {
|
||||
float b = bone->b, d = bone->d;
|
||||
float by = ATAN2(d, b);
|
||||
float r = ATAN2(td, tb) - ATAN2(tc, ta) - (by - ATAN2(bone->c, bone->a));
|
||||
float s = SQRT(b * b + d * d);
|
||||
if (r > PI) r -= PI2;
|
||||
else if (r < -PI) r += PI2;
|
||||
r = by + (r + self->data->offsetShearY * DEG_RAD) * shearMix;
|
||||
CONST_CAST(float, bone->b) = COS(r) * s;
|
||||
CONST_CAST(float, bone->d) = SIN(r) * s;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -40,5 +40,6 @@ spTransformConstraintData* spTransformConstraintData_create (const char* name) {
|
||||
|
||||
void spTransformConstraintData_dispose (spTransformConstraintData* self) {
|
||||
FREE(self->name);
|
||||
FREE(self->bones);
|
||||
FREE(self);
|
||||
}
|
||||
|
||||
113
spine-c/src/spine/VertexAttachment.c
Normal file
@ -0,0 +1,113 @@
|
||||
/******************************************************************************
|
||||
* Spine Runtimes Software License
|
||||
* Version 2.3
|
||||
*
|
||||
* Copyright (c) 2013-2015, Esoteric Software
|
||||
* All rights reserved.
|
||||
*
|
||||
* You are granted a perpetual, non-exclusive, non-sublicensable and
|
||||
* non-transferable license to use, install, execute and perform the Spine
|
||||
* Runtimes Software (the "Software") and derivative works solely for personal
|
||||
* or internal use. Without the written permission of Esoteric Software (see
|
||||
* Section 2 of the Spine Software License Agreement), you may not (a) modify,
|
||||
* translate, adapt or otherwise create derivative works, improvements of the
|
||||
* Software or develop new applications using the Software or (b) remove,
|
||||
* delete, alter or obscure any trademarks or any copyright, trademark, patent
|
||||
* or other intellectual property or proprietary rights notices on or in the
|
||||
* Software, including any copy thereof. Redistributions in binary or source
|
||||
* form must include this license and terms.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR
|
||||
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
|
||||
* EVENT SHALL ESOTERIC SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
||||
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*****************************************************************************/
|
||||
|
||||
#include <spine/VertexAttachment.h>
|
||||
#include <spine/extension.h>
|
||||
|
||||
void _spVertexAttachment_deinit (spVertexAttachment* attachment) {
|
||||
_spAttachment_deinit(SUPER(attachment));
|
||||
FREE(attachment->bones);
|
||||
FREE(attachment->vertices);
|
||||
}
|
||||
|
||||
void spVertexAttachment_computeWorldVertices (spVertexAttachment* self, spSlot* slot, float* worldVertices) {
|
||||
spVertexAttachment_computeWorldVertices1(self, 0, self->worldVerticesLength, slot, worldVertices, 0);
|
||||
}
|
||||
|
||||
void spVertexAttachment_computeWorldVertices1 (spVertexAttachment* self, int start, int count, spSlot* slot, float* worldVertices, int offset) {
|
||||
spSkeleton* skeleton;
|
||||
float x, y;
|
||||
int deformLength;
|
||||
float* deform;
|
||||
float* vertices;
|
||||
int* bones;
|
||||
|
||||
count += offset;
|
||||
skeleton = slot->bone->skeleton;
|
||||
x = skeleton->x;
|
||||
y = skeleton->y;
|
||||
deformLength = slot->attachmentVerticesCount;
|
||||
deform = slot->attachmentVertices;
|
||||
vertices = self->vertices;
|
||||
bones = self->bones;
|
||||
if (!bones) {
|
||||
spBone* bone;
|
||||
int v, w;
|
||||
if (deformLength > 0) vertices = deform;
|
||||
bone = slot->bone;
|
||||
x += bone->worldX;
|
||||
y += bone->worldY;
|
||||
for (v = start, w = offset; w < count; v += 2, w += 2) {
|
||||
float vx = vertices[v], vy = vertices[v + 1];
|
||||
worldVertices[w] = vx * bone->a + vy * bone->b + x;
|
||||
worldVertices[w + 1] = vx * bone->c + vy * bone->d + y;
|
||||
}
|
||||
} else {
|
||||
int v = 0, skip = 0, i, w, b, n;
|
||||
spBone** skeletonBones;
|
||||
for (i = 0; i < start; i += 2) {
|
||||
int n = bones[v];
|
||||
v += n + 1;
|
||||
skip += n;
|
||||
}
|
||||
skeletonBones = skeleton->bones;
|
||||
if (deformLength == 0) {
|
||||
for (w = offset, b = skip * 3; w < count; w += 2) {
|
||||
float wx = x, wy = y;
|
||||
n = bones[v++];
|
||||
n += v;
|
||||
for (; v < n; v++, b += 3) {
|
||||
spBone* bone = skeletonBones[bones[v]];
|
||||
float vx = vertices[b], vy = vertices[b + 1], weight = vertices[b + 2];
|
||||
wx += (vx * bone->a + vy * bone->b + bone->worldX) * weight;
|
||||
wy += (vx * bone->c + vy * bone->d + bone->worldY) * weight;
|
||||
}
|
||||
worldVertices[w] = wx;
|
||||
worldVertices[w + 1] = wy;
|
||||
}
|
||||
} else {
|
||||
int w, b, f, n;
|
||||
for (w = offset, b = skip * 3, f = skip << 1; w < count; w += 2) {
|
||||
float wx = x, wy = y;
|
||||
n = bones[v++];
|
||||
n += v;
|
||||
for (; v < n; v++, b += 3, f += 2) {
|
||||
spBone* bone = skeletonBones[bones[v]];
|
||||
float vx = vertices[b] + deform[f], vy = vertices[b + 1] + deform[f + 1], weight = vertices[b + 2];
|
||||
wx += (vx * bone->a + vy * bone->b + bone->worldX) * weight;
|
||||
wy += (vx * bone->c + vy * bone->d + bone->worldY) * weight;
|
||||
}
|
||||
worldVertices[w] = wx;
|
||||
worldVertices[w + 1] = wy;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1,137 +0,0 @@
|
||||
/******************************************************************************
|
||||
* Spine Runtimes Software License
|
||||
* Version 2.3
|
||||
*
|
||||
* Copyright (c) 2013-2015, Esoteric Software
|
||||
* All rights reserved.
|
||||
*
|
||||
* You are granted a perpetual, non-exclusive, non-sublicensable and
|
||||
* non-transferable license to use, install, execute and perform the Spine
|
||||
* Runtimes Software (the "Software") and derivative works solely for personal
|
||||
* or internal use. Without the written permission of Esoteric Software (see
|
||||
* Section 2 of the Spine Software License Agreement), you may not (a) modify,
|
||||
* translate, adapt or otherwise create derivative works, improvements of the
|
||||
* Software or develop new applications using the Software or (b) remove,
|
||||
* delete, alter or obscure any trademarks or any copyright, trademark, patent
|
||||
* or other intellectual property or proprietary rights notices on or in the
|
||||
* Software, including any copy thereof. Redistributions in binary or source
|
||||
* form must include this license and terms.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR
|
||||
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
|
||||
* EVENT SHALL ESOTERIC SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
||||
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*****************************************************************************/
|
||||
|
||||
#include <spine/WeightedMeshAttachment.h>
|
||||
#include <spine/extension.h>
|
||||
|
||||
void _spWeightedMeshAttachment_dispose (spAttachment* attachment) {
|
||||
spWeightedMeshAttachment* self = SUB_CAST(spWeightedMeshAttachment, attachment);
|
||||
_spAttachment_deinit(attachment);
|
||||
FREE(self->path);
|
||||
FREE(self->uvs);
|
||||
if (!self->parentMesh) {
|
||||
FREE(self->regionUVs);
|
||||
FREE(self->bones);
|
||||
FREE(self->weights);
|
||||
FREE(self->triangles);
|
||||
FREE(self->edges);
|
||||
}
|
||||
FREE(self);
|
||||
}
|
||||
|
||||
spWeightedMeshAttachment* spWeightedMeshAttachment_create (const char* name) {
|
||||
spWeightedMeshAttachment* self = NEW(spWeightedMeshAttachment);
|
||||
self->r = 1;
|
||||
self->g = 1;
|
||||
self->b = 1;
|
||||
self->a = 1;
|
||||
_spAttachment_init(SUPER(self), name, SP_ATTACHMENT_WEIGHTED_MESH, _spWeightedMeshAttachment_dispose);
|
||||
return self;
|
||||
}
|
||||
|
||||
void spWeightedMeshAttachment_updateUVs (spWeightedMeshAttachment* self) {
|
||||
int i;
|
||||
float width = self->regionU2 - self->regionU, height = self->regionV2 - self->regionV;
|
||||
FREE(self->uvs);
|
||||
self->uvs = MALLOC(float, self->uvsCount);
|
||||
if (self->regionRotate) {
|
||||
for (i = 0; i < self->uvsCount; i += 2) {
|
||||
self->uvs[i] = self->regionU + self->regionUVs[i + 1] * width;
|
||||
self->uvs[i + 1] = self->regionV + height - self->regionUVs[i] * height;
|
||||
}
|
||||
} else {
|
||||
for (i = 0; i < self->uvsCount; i += 2) {
|
||||
self->uvs[i] = self->regionU + self->regionUVs[i] * width;
|
||||
self->uvs[i + 1] = self->regionV + self->regionUVs[i + 1] * height;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void spWeightedMeshAttachment_computeWorldVertices (spWeightedMeshAttachment* self, spSlot* slot, float* worldVertices) {
|
||||
int w = 0, v = 0, b = 0, f = 0;
|
||||
float x = slot->bone->skeleton->x, y = slot->bone->skeleton->y;
|
||||
spBone** skeletonBones = slot->bone->skeleton->bones;
|
||||
if (slot->attachmentVerticesCount == 0) {
|
||||
for (; v < self->bonesCount; w += 2) {
|
||||
float wx = 0, wy = 0;
|
||||
const int nn = self->bones[v] + v;
|
||||
v++;
|
||||
for (; v <= nn; v++, b += 3) {
|
||||
const spBone* bone = skeletonBones[self->bones[v]];
|
||||
const float vx = self->weights[b], vy = self->weights[b + 1], weight = self->weights[b + 2];
|
||||
wx += (vx * bone->a + vy * bone->b + bone->worldX) * weight;
|
||||
wy += (vx * bone->c + vy * bone->d + bone->worldY) * weight;
|
||||
}
|
||||
worldVertices[w] = wx + x;
|
||||
worldVertices[w + 1] = wy + y;
|
||||
}
|
||||
} else {
|
||||
const float* ffd = slot->attachmentVertices;
|
||||
for (; v < self->bonesCount; w += 2) {
|
||||
float wx = 0, wy = 0;
|
||||
const int nn = self->bones[v] + v;
|
||||
v++;
|
||||
for (; v <= nn; v++, b += 3, f += 2) {
|
||||
const spBone* bone = skeletonBones[self->bones[v]];
|
||||
const float vx = self->weights[b] + ffd[f], vy = self->weights[b + 1] + ffd[f + 1], weight = self->weights[b + 2];
|
||||
wx += (vx * bone->a + vy * bone->b + bone->worldX) * weight;
|
||||
wy += (vx * bone->c + vy * bone->d + bone->worldY) * weight;
|
||||
}
|
||||
worldVertices[w] = wx + x;
|
||||
worldVertices[w + 1] = wy + y;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void spWeightedMeshAttachment_setParentMesh (spWeightedMeshAttachment* self, spWeightedMeshAttachment* parentMesh) {
|
||||
CONST_CAST(spWeightedMeshAttachment*, self->parentMesh) = parentMesh;
|
||||
if (parentMesh) {
|
||||
self->bones = parentMesh->bones;
|
||||
self->bonesCount = parentMesh->bonesCount;
|
||||
|
||||
self->weights = parentMesh->weights;
|
||||
self->weightsCount = parentMesh->weightsCount;
|
||||
|
||||
self->regionUVs = parentMesh->regionUVs;
|
||||
self->uvsCount = parentMesh->uvsCount;
|
||||
|
||||
self->triangles = parentMesh->triangles;
|
||||
self->trianglesCount = parentMesh->trianglesCount;
|
||||
|
||||
self->hullLength = parentMesh->hullLength;
|
||||
|
||||
self->edges = parentMesh->edges;
|
||||
self->edgesCount = parentMesh->edgesCount;
|
||||
|
||||
self->width = parentMesh->width;
|
||||
self->height = parentMesh->height;
|
||||
}
|
||||
}
|
||||
@ -10,7 +10,7 @@ The Spine Runtimes are developed with the intent to be used with data exported f
|
||||
|
||||
## Spine version
|
||||
|
||||
spine-cocos2d-objc works with data exported from Spine version 3.2.01.
|
||||
spine-cocos2d-objc works with data exported from Spine version 3.3.07.
|
||||
|
||||
spine-cocos2d-objc supports all Spine features.
|
||||
|
||||
|
||||
@ -1,291 +1,292 @@
|
||||
|
||||
goblins-mesh.png
|
||||
size: 512,512
|
||||
format: RGBA8888
|
||||
filter: Linear,Linear
|
||||
repeat: none
|
||||
dagger
|
||||
rotate: true
|
||||
xy: 372, 100
|
||||
rotate: false
|
||||
xy: 26, 147
|
||||
size: 26, 108
|
||||
orig: 26, 108
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/eyes-closed
|
||||
rotate: false
|
||||
xy: 2, 7
|
||||
xy: 329, 334
|
||||
size: 34, 12
|
||||
orig: 34, 12
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/head
|
||||
rotate: false
|
||||
xy: 107, 36
|
||||
xy: 26, 355
|
||||
size: 103, 66
|
||||
orig: 103, 66
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/left-arm
|
||||
rotate: false
|
||||
xy: 901, 56
|
||||
xy: 54, 142
|
||||
size: 37, 35
|
||||
orig: 37, 35
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/left-foot
|
||||
rotate: false
|
||||
xy: 929, 95
|
||||
rotate: true
|
||||
xy: 2, 69
|
||||
size: 65, 31
|
||||
orig: 65, 31
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/left-hand
|
||||
rotate: false
|
||||
xy: 452, 2
|
||||
xy: 266, 332
|
||||
size: 36, 41
|
||||
orig: 36, 41
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/left-lower-leg
|
||||
rotate: true
|
||||
xy: 713, 93
|
||||
xy: 273, 433
|
||||
size: 33, 70
|
||||
orig: 33, 70
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/left-shoulder
|
||||
rotate: false
|
||||
xy: 610, 44
|
||||
xy: 305, 288
|
||||
size: 29, 44
|
||||
orig: 29, 44
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/left-upper-leg
|
||||
rotate: true
|
||||
xy: 638, 93
|
||||
rotate: false
|
||||
xy: 96, 280
|
||||
size: 33, 73
|
||||
orig: 33, 73
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/neck
|
||||
rotate: false
|
||||
xy: 490, 2
|
||||
xy: 267, 289
|
||||
size: 36, 41
|
||||
orig: 36, 41
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/pelvis
|
||||
rotate: false
|
||||
xy: 482, 45
|
||||
xy: 131, 363
|
||||
size: 62, 43
|
||||
orig: 62, 43
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/right-arm
|
||||
rotate: true
|
||||
xy: 690, 2
|
||||
rotate: false
|
||||
xy: 304, 334
|
||||
size: 23, 50
|
||||
orig: 23, 50
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/right-foot
|
||||
rotate: false
|
||||
xy: 771, 58
|
||||
xy: 201, 397
|
||||
size: 63, 33
|
||||
orig: 63, 33
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/right-hand
|
||||
rotate: false
|
||||
xy: 940, 56
|
||||
xy: 336, 295
|
||||
size: 36, 37
|
||||
orig: 36, 37
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/right-lower-leg
|
||||
rotate: true
|
||||
xy: 482, 90
|
||||
xy: 273, 468
|
||||
size: 36, 76
|
||||
orig: 36, 76
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/right-shoulder
|
||||
rotate: true
|
||||
xy: 602, 3
|
||||
rotate: false
|
||||
xy: 196, 285
|
||||
size: 39, 45
|
||||
orig: 39, 45
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/right-upper-leg
|
||||
rotate: true
|
||||
xy: 641, 57
|
||||
xy: 131, 282
|
||||
size: 34, 63
|
||||
orig: 34, 63
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/torso
|
||||
rotate: true
|
||||
xy: 212, 34
|
||||
rotate: false
|
||||
xy: 131, 408
|
||||
size: 68, 96
|
||||
orig: 68, 96
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/undie-straps
|
||||
rotate: false
|
||||
xy: 380, 5
|
||||
rotate: true
|
||||
xy: 266, 375
|
||||
size: 55, 19
|
||||
orig: 55, 19
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/undies
|
||||
rotate: false
|
||||
xy: 174, 5
|
||||
xy: 429, 440
|
||||
size: 36, 29
|
||||
orig: 36, 29
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblingirl/eyes-closed
|
||||
rotate: false
|
||||
xy: 269, 11
|
||||
xy: 96, 257
|
||||
size: 37, 21
|
||||
orig: 37, 21
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblingirl/head
|
||||
rotate: false
|
||||
xy: 2, 21
|
||||
xy: 26, 423
|
||||
size: 103, 81
|
||||
orig: 103, 81
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblingirl/left-arm
|
||||
rotate: true
|
||||
xy: 978, 56
|
||||
rotate: false
|
||||
xy: 390, 434
|
||||
size: 37, 35
|
||||
orig: 37, 35
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblingirl/left-foot
|
||||
rotate: false
|
||||
xy: 107, 3
|
||||
rotate: true
|
||||
xy: 2, 2
|
||||
size: 65, 31
|
||||
orig: 65, 31
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblingirl/left-hand
|
||||
rotate: false
|
||||
xy: 565, 2
|
||||
xy: 329, 348
|
||||
size: 35, 40
|
||||
orig: 35, 40
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblingirl/left-lower-leg
|
||||
rotate: true
|
||||
xy: 785, 93
|
||||
xy: 351, 471
|
||||
size: 33, 70
|
||||
orig: 33, 70
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblingirl/left-shoulder
|
||||
rotate: true
|
||||
xy: 690, 27
|
||||
rotate: false
|
||||
xy: 237, 284
|
||||
size: 28, 46
|
||||
orig: 28, 46
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblingirl/left-upper-leg
|
||||
rotate: true
|
||||
xy: 857, 93
|
||||
xy: 423, 471
|
||||
size: 33, 70
|
||||
orig: 33, 70
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblingirl/neck
|
||||
rotate: false
|
||||
xy: 528, 2
|
||||
xy: 328, 390
|
||||
size: 35, 41
|
||||
orig: 35, 41
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblingirl/pelvis
|
||||
rotate: false
|
||||
xy: 546, 45
|
||||
xy: 131, 318
|
||||
size: 62, 43
|
||||
orig: 62, 43
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblingirl/right-arm
|
||||
rotate: false
|
||||
xy: 452, 48
|
||||
rotate: true
|
||||
xy: 135, 252
|
||||
size: 28, 50
|
||||
orig: 28, 50
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblingirl/right-foot
|
||||
rotate: false
|
||||
xy: 836, 58
|
||||
rotate: true
|
||||
xy: 231, 332
|
||||
size: 63, 33
|
||||
orig: 63, 33
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblingirl/right-hand
|
||||
rotate: true
|
||||
xy: 771, 20
|
||||
xy: 351, 433
|
||||
size: 36, 37
|
||||
orig: 36, 37
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblingirl/right-lower-leg
|
||||
rotate: true
|
||||
xy: 560, 90
|
||||
rotate: false
|
||||
xy: 54, 179
|
||||
size: 36, 76
|
||||
orig: 36, 76
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblingirl/right-shoulder
|
||||
rotate: false
|
||||
xy: 649, 10
|
||||
xy: 287, 386
|
||||
size: 39, 45
|
||||
orig: 39, 45
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblingirl/right-upper-leg
|
||||
rotate: true
|
||||
xy: 706, 57
|
||||
rotate: false
|
||||
xy: 195, 332
|
||||
size: 34, 63
|
||||
orig: 34, 63
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblingirl/torso
|
||||
rotate: false
|
||||
xy: 310, 2
|
||||
xy: 26, 257
|
||||
size: 68, 96
|
||||
orig: 68, 96
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblingirl/undie-straps
|
||||
rotate: false
|
||||
xy: 212, 13
|
||||
rotate: true
|
||||
xy: 92, 200
|
||||
size: 55, 19
|
||||
orig: 55, 19
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblingirl/undies
|
||||
rotate: false
|
||||
xy: 810, 27
|
||||
rotate: true
|
||||
xy: 365, 395
|
||||
size: 36, 29
|
||||
orig: 36, 29
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
shield
|
||||
rotate: false
|
||||
xy: 380, 26
|
||||
xy: 201, 432
|
||||
size: 70, 72
|
||||
orig: 70, 72
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
spear
|
||||
rotate: true
|
||||
xy: 2, 104
|
||||
rotate: false
|
||||
xy: 2, 136
|
||||
size: 22, 368
|
||||
orig: 22, 368
|
||||
offset: 0, 0
|
||||
|
||||
@ -1,26 +1,27 @@
|
||||
{
|
||||
"skeleton": { "hash": "P7CQ4ImK+tcAICATgSttlZ5HOSM", "spine": "3.3.07", "width": 266.93, "height": 349.6, "images": "./images/" },
|
||||
"bones": [
|
||||
{ "name": "root" },
|
||||
{ "name": "hip", "parent": "root", "x": 0.64, "y": 114.41 },
|
||||
{ "name": "left upper leg", "parent": "hip", "length": 50.39, "x": 14.45, "y": 2.81, "rotation": -89.09 },
|
||||
{ "name": "torso", "parent": "hip", "length": 85.82, "rotation": 93.92, "x": -6.42, "y": 1.97 },
|
||||
{ "name": "neck", "parent": "torso", "length": 18.38, "rotation": -1.51, "x": 81.67, "y": -6.34 },
|
||||
{ "name": "head", "parent": "neck", "length": 68.28, "rotation": -13.92, "x": 20.93, "y": 11.59 },
|
||||
{ "name": "left shoulder", "parent": "torso", "length": 35.43, "rotation": -156.96, "x": 74.04, "y": -20.38 },
|
||||
{ "name": "left arm", "parent": "left shoulder", "length": 35.62, "rotation": 28.16, "x": 37.85, "y": -2.34 },
|
||||
{ "name": "left upper leg", "parent": "hip", "length": 50.39, "rotation": -89.09, "x": 14.45, "y": 2.81 },
|
||||
{ "name": "left lower leg", "parent": "left upper leg", "length": 49.89, "rotation": -16.65, "x": 56.34, "y": 0.98 },
|
||||
{ "name": "left foot", "parent": "left lower leg", "length": 46.5, "rotation": 102.43, "x": 58.94, "y": -7.61 },
|
||||
{ "name": "left hand", "parent": "left arm", "length": 11.52, "rotation": 2.7, "x": 35.62, "y": 0.07 },
|
||||
{ "name": "pelvis", "parent": "hip", "x": 1.41, "y": -6.57 },
|
||||
{ "name": "right upper leg", "parent": "hip", "length": 42.45, "x": -20.07, "y": -6.83, "rotation": -97.49 },
|
||||
{ "name": "torso", "parent": "hip", "length": 85.82, "x": -6.42, "y": 1.97, "rotation": 93.92 },
|
||||
{ "name": "left lower leg", "parent": "left upper leg", "length": 49.89, "x": 56.34, "y": 0.98, "rotation": -16.65 },
|
||||
{ "name": "left shoulder", "parent": "torso", "length": 35.43, "x": 74.04, "y": -20.38, "rotation": -156.96 },
|
||||
{ "name": "neck", "parent": "torso", "length": 18.38, "x": 81.67, "y": -6.34, "rotation": -1.51 },
|
||||
{ "name": "right lower leg", "parent": "right upper leg", "length": 58.52, "x": 42.99, "y": -0.61, "rotation": -14.34 },
|
||||
{ "name": "right shoulder", "parent": "torso", "length": 37.24, "x": 76.02, "y": 18.14, "rotation": 133.88 },
|
||||
{ "name": "head", "parent": "neck", "length": 68.28, "x": 20.93, "y": 11.59, "rotation": -13.92 },
|
||||
{ "name": "left arm", "parent": "left shoulder", "length": 35.62, "x": 37.85, "y": -2.34, "rotation": 28.16 },
|
||||
{ "name": "left foot", "parent": "left lower leg", "length": 46.5, "x": 58.94, "y": -7.61, "rotation": 102.43 },
|
||||
{ "name": "right arm", "parent": "right shoulder", "length": 36.74, "x": 37.6, "y": 0.31, "rotation": 36.32 },
|
||||
{ "name": "right foot", "parent": "right lower leg", "length": 45.45, "x": 64.88, "y": 0.04, "rotation": 110.3 },
|
||||
{ "name": "left hand", "parent": "left arm", "length": 11.52, "x": 35.62, "y": 0.07, "rotation": 2.7 },
|
||||
{ "name": "right hand", "parent": "right arm", "length": 15.32, "x": 36.9, "y": 0.34, "rotation": 2.35 },
|
||||
{ "name": "spear1", "parent": "left hand", "length": 65.06, "x": 0.48, "y": 17.03, "rotation": 102.43 },
|
||||
{ "name": "spear2", "parent": "spear1", "length": 61.41, "x": 65.05, "y": 0.04, "rotation": 0.9 },
|
||||
{ "name": "spear3", "parent": "spear2", "length": 76.79, "x": 61.88, "y": 0.57, "rotation": -0.9 }
|
||||
{ "name": "right shoulder", "parent": "torso", "length": 37.24, "rotation": 133.88, "x": 76.02, "y": 18.14 },
|
||||
{ "name": "right arm", "parent": "right shoulder", "length": 36.74, "rotation": 36.32, "x": 37.6, "y": 0.31 },
|
||||
{ "name": "right upper leg", "parent": "hip", "length": 42.45, "rotation": -97.49, "x": -20.07, "y": -6.83 },
|
||||
{ "name": "right lower leg", "parent": "right upper leg", "length": 58.52, "rotation": -14.34, "x": 42.99, "y": -0.61 },
|
||||
{ "name": "right foot", "parent": "right lower leg", "length": 45.45, "rotation": 110.3, "x": 64.88, "y": 0.04 },
|
||||
{ "name": "right hand", "parent": "right arm", "length": 15.32, "rotation": 2.35, "x": 36.9, "y": 0.34 },
|
||||
{ "name": "spear1", "parent": "left hand", "length": 65.06, "rotation": 102.43, "x": 0.48, "y": 17.03 },
|
||||
{ "name": "spear2", "parent": "spear1", "length": 61.41, "rotation": 0.9, "x": 65.05, "y": 0.04 },
|
||||
{ "name": "spear3", "parent": "spear2", "length": 76.79, "rotation": -0.9, "x": 61.88, "y": 0.57 }
|
||||
],
|
||||
"slots": [
|
||||
{ "name": "left shoulder", "bone": "left shoulder", "attachment": "left shoulder" },
|
||||
@ -52,12 +53,12 @@
|
||||
"left hand item": {
|
||||
"dagger": { "x": 7.88, "y": -23.45, "rotation": 10.47, "width": 26, "height": 108 },
|
||||
"spear": {
|
||||
"type": "skinnedmesh",
|
||||
"type": "mesh",
|
||||
"uvs": [ 1, 0.11236, 0.77096, 0.13278, 0.76608, 0.21781, 0.75642, 0.386, 0.74723, 0.54607, 0.72117, 1, 0.28838, 1, 0.24208, 0.54327, 0.22589, 0.38361, 0.2089, 0.21605, 0.20043, 0.13242, 0, 0.11519, 0.4527, 0, 0.58399, 0 ],
|
||||
"triangles": [ 5, 6, 4, 6, 7, 4, 4, 7, 3, 2, 9, 1, 9, 10, 1, 10, 12, 1, 12, 13, 1, 1, 13, 0, 10, 11, 12, 3, 8, 2, 8, 9, 2, 7, 8, 3 ],
|
||||
"vertices": [ 1, 20, 38.54, -10.88, 1, 1, 20, 30.97, -5.93, 1, 2, 19, 61.48, -5.58, 0.51, 20, -0.31, -6.16, 0.48, 2, 18, 64.73, -5.03, 0.5, 19, -0.4, -5.06, 0.49, 1, 16, 4.56, 23.91, 1, 1, 16, 41.7, -138.95, 1, 1, 16, 32.42, -141.1, 1, 1, 16, -6.49, 22.4, 1, 2, 18, 65.48, 6.64, 0.5, 19, 0.53, 6.59, 0.49, 2, 19, 62.18, 6.66, 0.51, 20, 0.2, 6.09, 0.48, 1, 20, 30.96, 6.61, 1, 1, 20, 37.26, 11.09, 1, 1, 20, 79.75, 1.59, 1, 1, 20, 79.78, -1.29, 1 ],
|
||||
"edges": [ 24, 22, 22, 20, 10, 12, 2, 0, 24, 26, 0, 26, 8, 10, 12, 14, 6, 8, 14, 16, 2, 4, 4, 6, 16, 18, 18, 20, 20, 2 ],
|
||||
"triangles": [ 4, 7, 3, 6, 7, 4, 5, 6, 4, 10, 11, 12, 1, 13, 0, 12, 13, 1, 10, 12, 1, 9, 10, 1, 2, 9, 1, 8, 9, 2, 3, 8, 2, 7, 8, 3 ],
|
||||
"vertices": [ 1, 20, 38.54, -10.88, 1, 1, 20, 30.97, -5.93, 1, 2, 19, 61.48, -5.58, 0.5116, 20, -0.31, -6.16, 0.48839, 2, 18, 64.73, -5.03, 0.50272, 19, -0.4, -5.06, 0.49728, 1, 10, 4.56, 23.91, 1, 1, 10, 41.7, -138.95, 1, 1, 10, 32.41999, -141.1, 1, 1, 10, -6.49, 22.4, 1, 2, 18, 65.48, 6.64, 0.50272, 19, 0.52999, 6.59, 0.49728, 2, 19, 62.18, 6.66, 0.5116, 20, 0.2, 6.09, 0.48839, 1, 20, 30.96, 6.61, 1, 1, 20, 37.25999, 11.09, 1, 1, 20, 79.75, 1.59, 1, 1, 20, 79.78, -1.29, 1 ],
|
||||
"hull": 14,
|
||||
"edges": [ 24, 22, 22, 20, 10, 12, 2, 0, 24, 26, 0, 26, 8, 10, 12, 14, 6, 8, 14, 16, 2, 4, 4, 6, 16, 18, 18, 20, 20, 2 ],
|
||||
"width": 22,
|
||||
"height": 368
|
||||
}
|
||||
@ -68,8 +69,8 @@
|
||||
"uvs": [ 0.78091, 0.38453, 1, 0.38405, 1, 0.44881, 0.73953, 0.4687, 0.74641, 0.81344, 0.34022, 1, 0.15434, 1, 0.11303, 0.78858, 0.23007, 0.47367, 0, 0.45047, 0, 0.38621, 0.22367, 0.38573, 0.24384, 0, 1, 0 ],
|
||||
"triangles": [ 0, 12, 13, 11, 12, 0, 0, 1, 2, 9, 10, 11, 3, 11, 0, 3, 0, 2, 8, 11, 3, 9, 11, 8, 5, 6, 7, 4, 5, 8, 4, 8, 3, 5, 7, 8 ],
|
||||
"vertices": [ 15.49, -12.82, 21.13, -13.57, 20.16, -20.49, 13.15, -21.67, 8.13, -58.56, -5.13, -77.04, -9.92, -76.36, -7.79, -53.6, -0.03, -20.36, -5.6, -17.04, -4.63, -10.17, 1.12, -10.93, 7.46, 30.24, 26.93, 27.49 ],
|
||||
"edges": [ 22, 20, 24, 26, 22, 24, 2, 0, 0, 22, 0, 26, 12, 14, 14, 16, 18, 20, 16, 18, 2, 4, 4, 6, 6, 8, 10, 12, 8, 10 ],
|
||||
"hull": 14,
|
||||
"edges": [ 22, 20, 24, 26, 22, 24, 2, 0, 0, 22, 0, 26, 12, 14, 14, 16, 18, 20, 16, 18, 2, 4, 4, 6, 6, 8, 10, 12, 8, 10 ],
|
||||
"width": 26,
|
||||
"height": 108
|
||||
}
|
||||
@ -87,10 +88,10 @@
|
||||
"name": "goblin/head",
|
||||
"type": "mesh",
|
||||
"uvs": [ 0, 0.60494, 0.14172, 0.5145, 0.24218, 0.55229, 0.32667, 0.67806, 0.37969, 0.79352, 0.53505, 0.93014, 0.86056, 1, 0.94071, 0.94169, 0.92098, 0.69923, 0.9888, 0.65497, 0.99003, 0.51643, 0.89632, 0.43561, 0.94487, 0.41916, 1, 0.39713, 1, 0.2836, 0.94017, 0.27027, 0.87906, 0.25666, 0.80754, 0.16044, 0.66698, 0.01997, 0.4734, 0.01805, 0.29215, 0.19893, 0.25392, 0.31823, 0.09117, 0.324, 0, 0.44331, 0.43271, 0.69153, 0.466, 0.47794, 0.35996, 0.31246, 0.73473, 0.68593, 0.72215, 0.57425, 0.88179, 0.5583, 0.80267, 0.51015 ],
|
||||
"triangles": [ 26, 20, 19, 21, 20, 26, 15, 14, 13, 12, 15, 13, 11, 16, 15, 11, 15, 12, 26, 17, 25, 18, 26, 19, 17, 26, 18, 30, 25, 17, 30, 17, 16, 30, 16, 11, 1, 22, 21, 23, 22, 1, 2, 1, 21, 2, 21, 26, 29, 30, 11, 29, 11, 10, 28, 25, 30, 0, 23, 1, 9, 29, 10, 25, 3, 2, 25, 2, 26, 29, 27, 28, 29, 28, 30, 24, 3, 25, 24, 25, 28, 24, 28, 27, 8, 29, 9, 27, 29, 8, 4, 3, 24, 5, 24, 27, 4, 24, 5, 7, 6, 27, 7, 27, 8, 5, 27, 6 ],
|
||||
"vertices": [ 14.56, 50.42, 23.12, 35.47, 17.46, 26.36, 11.57, 16.86, 3.74, 11.71, -5.89, -3.91, -11.83, -37.23, -8.31, -45.63, 7.75, -44.24, 10.39, -51.33, 19.52, -51.82, 25.21, -43.15, 26.12, -47.43, 27.35, -53.16, 34.84, -53.46, 35.96, -47.33, 37.11, -41.08, 43.75, -33.97, 53.58, -19.87, 54.5, 0.03, 43.31, 19.16, 35.6, 23.41, 35.89, 40.17, 28.39, 49.87, 10.25, 5.99, 24.2, 2, 35.55, 12.48, 9.39, -25.1, 16.8, -24.31, 17.2, -40.65, 20.68, -33.02 ],
|
||||
"edges": [ 0, 2, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 18, 20, 20, 22, 26, 28, 32, 34, 34, 36, 36, 38, 38, 40, 40, 42, 42, 44, 44, 46, 0, 46, 6, 48, 48, 50, 50, 52, 52, 42, 2, 4, 4, 6, 4, 52, 2, 44, 22, 32, 22, 24, 24, 26, 28, 30, 30, 32, 24, 30, 16, 54, 54, 56, 20, 58, 58, 54, 16, 58, 22, 60, 60, 56, 58, 60 ],
|
||||
"triangles": [ 5, 27, 6, 7, 27, 8, 7, 6, 27, 4, 24, 5, 5, 24, 27, 4, 3, 24, 27, 29, 8, 8, 29, 9, 24, 28, 27, 24, 25, 28, 24, 3, 25, 29, 28, 30, 29, 27, 28, 25, 2, 26, 25, 3, 2, 9, 29, 10, 0, 23, 1, 28, 25, 30, 29, 11, 10, 29, 30, 11, 2, 21, 26, 2, 1, 21, 23, 22, 1, 1, 22, 21, 30, 16, 11, 30, 17, 16, 30, 25, 17, 17, 26, 18, 18, 26, 19, 26, 17, 25, 11, 15, 12, 11, 16, 15, 12, 15, 13, 15, 14, 13, 21, 20, 26, 26, 20, 19 ],
|
||||
"vertices": [ 14.56, 50.42, 23.12, 35.47, 17.45999, 26.36, 11.57, 16.86, 3.74, 11.71, -5.89, -3.91, -11.83, -37.23, -8.31, -45.63, 7.75, -44.24, 10.39, -51.33, 19.52, -51.82, 25.21, -43.15, 26.12, -47.43, 27.35, -53.16, 34.84, -53.46, 35.96, -47.33, 37.11, -41.08, 43.75, -33.97, 53.58, -19.87, 54.5, 0.03, 43.31, 19.16, 35.59999, 23.41, 35.89, 40.16999, 28.39, 49.87, 10.25, 5.99, 24.2, 2, 35.55, 12.48, 9.39, -25.1, 16.79999, -24.31, 17.2, -40.65, 20.68, -33.02 ],
|
||||
"hull": 24,
|
||||
"edges": [ 0, 2, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 18, 20, 20, 22, 26, 28, 32, 34, 34, 36, 36, 38, 38, 40, 40, 42, 42, 44, 44, 46, 0, 46, 6, 48, 48, 50, 50, 52, 52, 42, 2, 4, 4, 6, 4, 52, 2, 44, 22, 32, 22, 24, 24, 26, 28, 30, 30, 32, 24, 30, 16, 54, 54, 56, 20, 58, 58, 54, 16, 58, 22, 60, 60, 56, 58, 60 ],
|
||||
"width": 103,
|
||||
"height": 66
|
||||
}
|
||||
@ -100,10 +101,10 @@
|
||||
"name": "goblin/left-arm",
|
||||
"type": "mesh",
|
||||
"uvs": [ 0.68992, 0.29284, 1, 0.46364, 1, 0.74643, 0.84089, 1, 0.66344, 1, 0.33765, 0.64284, 0, 0.44124, 0, 0, 0.34295, 0 ],
|
||||
"triangles": [ 6, 7, 8, 5, 6, 8, 0, 5, 8, 0, 1, 2, 5, 0, 2, 4, 5, 2, 3, 4, 2 ],
|
||||
"vertices": [ 18.6, 8.81, 32.19, 10.31, 38.02, 1.62, 38.08, -9.63, 32.31, -13.49, 14.37, -9.62, -0.75, -10.78, -9.84, 2.77, 1.29, 10.25 ],
|
||||
"edges": [ 14, 16, 16, 0, 0, 2, 2, 4, 6, 4, 6, 8, 8, 10, 12, 14, 10, 12 ],
|
||||
"triangles": [ 3, 4, 2, 4, 5, 2, 5, 0, 2, 0, 1, 2, 0, 5, 8, 5, 6, 8, 6, 7, 8 ],
|
||||
"vertices": [ 18.6, 8.81, 32.18999, 10.31, 38.02, 1.62, 38.08, -9.63, 32.31, -13.49, 14.37, -9.62, -0.75, -10.78, -9.84, 2.77, 1.29, 10.25 ],
|
||||
"hull": 9,
|
||||
"edges": [ 14, 16, 16, 0, 0, 2, 2, 4, 6, 4, 6, 8, 8, 10, 12, 14, 10, 12 ],
|
||||
"width": 37,
|
||||
"height": 35
|
||||
}
|
||||
@ -115,8 +116,8 @@
|
||||
"uvs": [ 0.15733, 0.31873, 0.08195, 0.78502, 0.15884, 0.99366, 0.41633, 0.96804, 0.68822, 0.97636, 1, 0.96388, 0.99385, 0.73501, 0.85294, 0.51862, 0.61479, 0.31056, 0.46991, 0, 0.48032, 0.75604, 0.75994, 0.77706 ],
|
||||
"triangles": [ 0, 9, 8, 10, 0, 8, 10, 8, 7, 11, 10, 7, 11, 7, 6, 1, 0, 10, 11, 6, 5, 3, 1, 10, 4, 10, 11, 4, 11, 5, 3, 10, 4, 2, 1, 3 ],
|
||||
"vertices": [ 2.28, 13.07, -1.76, -1.64, 3.59, -7.8, 20.25, -6.04, 37.91, -5.27, 58.12, -3.71, 57.31, 3.34, 47.78, 9.51, 31.95, 15.05, 21.99, 24.11, 24.03, 0.75, 42.21, 1.16 ],
|
||||
"edges": [ 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 0, 18, 6, 20, 20, 16, 2, 20, 8, 22, 22, 14, 20, 22, 22, 10 ],
|
||||
"hull": 10,
|
||||
"edges": [ 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 0, 18, 6, 20, 20, 16, 2, 20, 8, 22, 22, 14, 20, 22, 22, 10 ],
|
||||
"width": 65,
|
||||
"height": 31
|
||||
}
|
||||
@ -127,9 +128,9 @@
|
||||
"type": "mesh",
|
||||
"uvs": [ 0.518, 0.12578, 1, 0.16285, 0.99788, 0.50578, 0.69745, 1, 0.37445, 1, 0, 0.80051, 0, 0.42792, 0.17601, 0, 0.43567, 0 ],
|
||||
"triangles": [ 2, 0, 1, 0, 5, 6, 6, 7, 0, 0, 7, 8, 3, 4, 0, 4, 5, 0, 2, 3, 0 ],
|
||||
"vertices": [ -3.11, 15.42, 10.83, 22.27, 15.5, 14.55, 18.35, -8.96, 9.48, -14.32, -4.58, -14.3, -11.63, -2.63, -14.89, 13.68, -7.75, 17.99 ],
|
||||
"edges": [ 16, 0, 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 14, 16, 12, 14 ],
|
||||
"vertices": [ -3.11, 15.42, 10.83, 22.27, 15.5, 14.55, 18.35, -8.96, 9.47999, -14.32, -4.58, -14.3, -11.63, -2.63, -14.89, 13.68, -7.75, 17.99 ],
|
||||
"hull": 9,
|
||||
"edges": [ 16, 0, 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 14, 16, 12, 14 ],
|
||||
"width": 36,
|
||||
"height": 41
|
||||
}
|
||||
@ -140,9 +141,9 @@
|
||||
"type": "mesh",
|
||||
"uvs": [ 0.95508, 0.20749, 0.81927, 0.65213, 0.94754, 0.77308, 0.67842, 0.97346, 0.46463, 1, 0.26845, 1, 0.04963, 0.90706, 0.2106, 0.60115, 0.07478, 0.40195, 0.18545, 0, 0.28857, 0 ],
|
||||
"triangles": [ 10, 8, 9, 1, 7, 10, 7, 8, 10, 0, 1, 10, 1, 4, 7, 3, 1, 2, 5, 6, 7, 7, 4, 5, 1, 3, 4 ],
|
||||
"vertices": [ -0.19, 6.82, 30.97, 10.96, 37.97, 17.33, 53.88, 12.6, 57.58, 6.31, 59.34, 0.08, 55.04, -8.63, 32.99, -9.33, 20.79, -17.43, -7.27, -21.56, -8.19, -18.29 ],
|
||||
"edges": [ 20, 0, 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 18, 20, 16, 18 ],
|
||||
"vertices": [ -0.19, 6.82, 30.97, 10.96, 37.97, 17.33, 53.88, 12.6, 57.58, 6.31, 59.34, 0.08, 55.04, -8.63, 32.99, -9.33, 20.79, -17.43, -7.27, -21.56, -8.18999, -18.29 ],
|
||||
"hull": 11,
|
||||
"edges": [ 20, 0, 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 18, 20, 16, 18 ],
|
||||
"width": 33,
|
||||
"height": 70
|
||||
}
|
||||
@ -152,10 +153,10 @@
|
||||
"name": "goblin/left-shoulder",
|
||||
"type": "mesh",
|
||||
"uvs": [ 0.7377, 0.40692, 1, 0.75237, 1, 1, 0.62046, 1, 0.26184, 0.56601, 0, 0.29783, 0, 0, 0.44115, 0 ],
|
||||
"triangles": [ 5, 6, 7, 4, 5, 7, 4, 7, 0, 3, 4, 0, 3, 0, 1, 3, 1, 2 ],
|
||||
"vertices": [ 15.18, 5.74, 32.17, 5.32, 41.79, 0.21, 36.63, -9.5, 14.88, -9.72, 0.9, -10.89, -10.66, -4.74, -4.66, 6.54 ],
|
||||
"edges": [ 12, 14, 14, 0, 4, 2, 0, 2, 4, 6, 6, 8, 10, 12, 8, 10 ],
|
||||
"triangles": [ 3, 1, 2, 3, 0, 1, 3, 4, 0, 4, 7, 0, 4, 5, 7, 5, 6, 7 ],
|
||||
"vertices": [ 15.18, 5.74, 32.16999, 5.32, 41.79, 0.21, 36.63, -9.5, 14.88, -9.72, 0.9, -10.89, -10.66, -4.73999, -4.66, 6.54 ],
|
||||
"hull": 8,
|
||||
"edges": [ 12, 14, 14, 0, 4, 2, 0, 2, 4, 6, 6, 8, 10, 12, 8, 10 ],
|
||||
"width": 29,
|
||||
"height": 44
|
||||
}
|
||||
@ -167,8 +168,8 @@
|
||||
"uvs": [ 1, 0.12167, 1, 0.54873, 0.91067, 0.78907, 0.76567, 1, 0.3087, 0.9579, 0, 0.68777, 0, 0.219, 0.51961, 0, 0.87552, 0 ],
|
||||
"triangles": [ 7, 8, 0, 5, 6, 7, 0, 1, 7, 4, 5, 7, 1, 4, 7, 2, 4, 1, 3, 4, 2 ],
|
||||
"vertices": [ 2.33, 13.06, 33.5, 12.57, 51, 9.34, 66.32, 4.31, 63, -10.71, 43.13, -20.58, 8.91, -20.04, -6.79, -2.64, -6.61, 9.1 ],
|
||||
"edges": [ 10, 8, 8, 6, 6, 4, 4, 2, 10, 12, 12, 14, 14, 16, 2, 0, 16, 0 ],
|
||||
"hull": 9,
|
||||
"edges": [ 10, 8, 8, 6, 6, 4, 4, 2, 10, 12, 12, 14, 14, 16, 2, 0, 16, 0 ],
|
||||
"width": 33,
|
||||
"height": 73
|
||||
}
|
||||
@ -178,10 +179,10 @@
|
||||
"name": "goblin/neck",
|
||||
"type": "mesh",
|
||||
"uvs": [ 0.81967, 0.27365, 0.92101, 0.82048, 0.47134, 1, 0.15679, 0.9354, 0, 0.7556, 0.19268, 0.51833, 0.15468, 0.35706, 0, 0.21989, 0.13568, 0, 0.68878, 0, 0.70145, 0.53872 ],
|
||||
"triangles": [ 6, 8, 9, 6, 9, 0, 7, 8, 6, 10, 5, 6, 0, 10, 6, 10, 0, 1, 3, 4, 5, 2, 5, 10, 2, 10, 1, 3, 5, 2 ],
|
||||
"vertices": [ 18.62, -11.65, -3.98, -13.85, -10.28, 2.76, -6.91, 13.89, 0.8, 19.05, 10.06, 11.51, 16.74, 12.45, 22.71, 17.64, 31.4, 12.19, 30.12, -7.67, 8.05, -6.71 ],
|
||||
"edges": [ 14, 12, 12, 10, 10, 8, 8, 6, 6, 4, 4, 2, 2, 20, 20, 0, 0, 18, 16, 18, 14, 16, 0, 2 ],
|
||||
"triangles": [ 3, 5, 2, 2, 10, 1, 2, 5, 10, 3, 4, 5, 10, 0, 1, 0, 10, 6, 10, 5, 6, 7, 8, 6, 6, 9, 0, 6, 8, 9 ],
|
||||
"vertices": [ 18.62, -11.65, -3.98, -13.85, -10.28, 2.76, -6.91, 13.89, 0.8, 19.04999, 10.06, 11.51, 16.74, 12.45, 22.71, 17.64, 31.4, 12.19, 30.12, -7.67, 8.05, -6.71 ],
|
||||
"hull": 10,
|
||||
"edges": [ 14, 12, 12, 10, 10, 8, 8, 6, 6, 4, 4, 2, 2, 20, 20, 0, 0, 18, 16, 18, 14, 16, 0, 2 ],
|
||||
"width": 36,
|
||||
"height": 41
|
||||
}
|
||||
@ -193,8 +194,8 @@
|
||||
"uvs": [ 1, 1, 0, 1, 0, 0, 1, 0 ],
|
||||
"triangles": [ 1, 2, 3, 1, 3, 0 ],
|
||||
"vertices": [ 25.38, -20.73, -36.61, -20.73, -36.61, 22.26, 25.38, 22.26 ],
|
||||
"edges": [ 0, 2, 2, 4, 4, 6, 0, 6 ],
|
||||
"hull": 4,
|
||||
"edges": [ 0, 2, 2, 4, 4, 6, 0, 6 ],
|
||||
"width": 62,
|
||||
"height": 43
|
||||
}
|
||||
@ -204,10 +205,10 @@
|
||||
"name": "goblin/right-arm",
|
||||
"type": "mesh",
|
||||
"uvs": [ 1, 0.09223, 1, 0.8501, 0.72058, 1, 0.24384, 1, 0, 0.86558, 0.20822, 0.10919, 0.50903, 0, 0.85342, 0 ],
|
||||
"triangles": [ 6, 7, 0, 2, 3, 5, 4, 5, 3, 1, 6, 0, 6, 2, 5, 1, 2, 6 ],
|
||||
"vertices": [ -4.75, 8.89, 33.03, 11.74, 40.99, 5.89, 41.81, -5.03, 35.53, -11.13, -2.53, -9.2, -8.5, -2.71, -9.09, 5.18 ],
|
||||
"edges": [ 8, 6, 4, 6, 4, 2, 12, 14, 2, 0, 14, 0, 10, 12, 8, 10 ],
|
||||
"triangles": [ 1, 2, 6, 6, 2, 5, 1, 6, 0, 4, 5, 3, 2, 3, 5, 6, 7, 0 ],
|
||||
"vertices": [ -4.75, 8.89, 33.03, 11.74, 40.99, 5.89, 41.81, -5.03, 35.53, -11.13, -2.53, -9.2, -8.5, -2.71, -9.09, 5.17999 ],
|
||||
"hull": 8,
|
||||
"edges": [ 8, 6, 4, 6, 4, 2, 12, 14, 2, 0, 14, 0, 10, 12, 8, 10 ],
|
||||
"width": 23,
|
||||
"height": 50
|
||||
}
|
||||
@ -219,8 +220,8 @@
|
||||
"uvs": [ 0.40851, 0.0047, 0.59087, 0.33404, 0.75959, 0.48311, 0.88907, 0.59751, 0.97532, 0.89391, 0.90385, 1, 0.6722, 1, 0.38633, 1, 0.08074, 1, 0, 0.88921, 0, 0.65984, 0, 0.46577, 0.0906, 0.0988, 0.305, 0, 0.47461, 0.71257, 0.715, 0.74681 ],
|
||||
"triangles": [ 1, 10, 11, 1, 13, 0, 14, 1, 2, 1, 12, 13, 12, 1, 11, 14, 10, 1, 15, 14, 2, 15, 2, 3, 9, 10, 14, 15, 3, 4, 7, 8, 9, 14, 7, 9, 6, 14, 15, 5, 6, 15, 7, 14, 6, 4, 5, 15 ],
|
||||
"vertices": [ 17.36, 25.99, 29.13, 15.44, 39.89, 10.8, 48.14, 7.24, 53.84, -2.38, 49.43, -6, 34.84, -6.39, 16.84, -6.87, -2.4, -7.38, -7.58, -3.86, -7.78, 3.7, -7.95, 10.1, -2.57, 22.36, 10.84, 25.97, 22.14, 2.75, 37.31, 2.03 ],
|
||||
"edges": [ 0, 2, 6, 8, 8, 10, 16, 18, 22, 24, 24, 26, 0, 26, 10, 12, 2, 4, 4, 6, 12, 14, 14, 16, 18, 20, 20, 22, 2, 28, 28, 14, 20, 28, 4, 30, 30, 12, 28, 30, 30, 8 ],
|
||||
"hull": 14,
|
||||
"edges": [ 0, 2, 6, 8, 8, 10, 16, 18, 22, 24, 24, 26, 0, 26, 10, 12, 2, 4, 4, 6, 12, 14, 14, 16, 18, 20, 20, 22, 2, 28, 28, 14, 20, 28, 4, 30, 30, 12, 28, 30, 30, 8 ],
|
||||
"width": 63,
|
||||
"height": 33
|
||||
}
|
||||
@ -231,9 +232,9 @@
|
||||
"type": "mesh",
|
||||
"uvs": [ 0.17957, 0, 0, 0.44772, 0, 0.79734, 0.20057, 0.94264, 0.55057, 1, 0.8539, 1, 0.89823, 0.82004, 0.8259, 0.74285, 0.84223, 0.49993, 0.96356, 0.34102, 0.66023, 0 ],
|
||||
"triangles": [ 8, 10, 9, 0, 10, 1, 8, 2, 1, 8, 1, 10, 7, 3, 8, 3, 2, 8, 4, 3, 7, 5, 7, 6, 4, 7, 5 ],
|
||||
"vertices": [ -10.82, -9.45, 5.95, -15.34, 18.88, -14.9, 24, -7.5, 25.69, 5.16, 25.31, 16.07, 18.61, 17.44, 15.84, 14.74, 6.84, 15.02, 0.81, 19.18, -11.41, 7.83 ],
|
||||
"edges": [ 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 18, 20, 0, 20 ],
|
||||
"vertices": [ -10.82, -9.45, 5.95, -15.34, 18.87999, -14.9, 24, -7.5, 25.69, 5.16, 25.31, 16.07, 18.61, 17.44, 15.84, 14.74, 6.84, 15.02, 0.81, 19.18, -11.41, 7.83 ],
|
||||
"hull": 11,
|
||||
"edges": [ 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 18, 20, 0, 20 ],
|
||||
"width": 36,
|
||||
"height": 37
|
||||
}
|
||||
@ -245,8 +246,8 @@
|
||||
"uvs": [ 0.88538, 0.22262, 0.76167, 0.3594, 0.75088, 0.78308, 0.95326, 0.84981, 1, 0.60302 ],
|
||||
"triangles": [ 1, 0, 4, 2, 1, 4, 3, 2, 4 ],
|
||||
"vertices": [ -2.82, 15.97, 2.4, 11.71, 18.08, 11.9, 20.27, 19.27, 11.09, 20.62 ],
|
||||
"edges": [ 2, 4, 4, 6, 6, 8, 2, 0, 0, 8 ],
|
||||
"hull": 5,
|
||||
"edges": [ 2, 4, 4, 6, 6, 8, 2, 0, 0, 8 ],
|
||||
"width": 36,
|
||||
"height": 37
|
||||
}
|
||||
@ -257,9 +258,9 @@
|
||||
"type": "mesh",
|
||||
"uvs": [ 1, 0.27261, 0.81312, 0.52592, 0.79587, 0.71795, 0.95544, 0.80988, 0.85193, 0.95493, 0.47241, 1, 0.14033, 1, 0, 0.8773, 0.14896, 0.67914, 0.1619, 0.30325, 0.60611, 0 ],
|
||||
"triangles": [ 1, 10, 0, 9, 10, 1, 8, 9, 1, 2, 8, 1, 4, 2, 3, 6, 7, 8, 5, 6, 8, 2, 5, 8, 4, 5, 2 ],
|
||||
"vertices": [ 6.26, 8.46, 23.32, 8.04, 37.1, 12.89, 41.45, 20.82, 53.07, 21.46, 61.33, 10.06, 65.77, -1.03, 58.99, -9.19, 43.02, -9.81, 16.33, -20, -12.79, -9.26 ],
|
||||
"edges": [ 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 0, 20, 18, 20 ],
|
||||
"vertices": [ 6.26, 8.46, 23.32, 8.04, 37.09999, 12.89, 41.45, 20.82, 53.07, 21.46, 61.33, 10.06, 65.76999, -1.03, 58.99, -9.18999, 43.02, -9.81, 16.33, -20, -12.79, -9.26 ],
|
||||
"hull": 11,
|
||||
"edges": [ 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 0, 20, 18, 20 ],
|
||||
"width": 36,
|
||||
"height": 76
|
||||
}
|
||||
@ -269,10 +270,10 @@
|
||||
"name": "goblin/right-shoulder",
|
||||
"type": "mesh",
|
||||
"uvs": [ 0.62008, 0.03708, 0.92131, 0.09048, 1, 0.38319, 0.72049, 0.6937, 0.31656, 1, 0, 1, 0, 0.75106, 0.28233, 0.49988 ],
|
||||
"triangles": [ 2, 3, 0, 2, 0, 1, 7, 0, 3, 4, 5, 6, 4, 7, 3, 4, 6, 7 ],
|
||||
"triangles": [ 4, 6, 7, 4, 7, 3, 4, 5, 6, 7, 0, 3, 2, 0, 1, 2, 3, 0 ],
|
||||
"vertices": [ -3.17, -11.05, -9, -0.57, -1.01, 10.33, 16.69, 11.17, 37.41, 8.2, 45.45, -1.16, 36.95, -8.46, 21.2, -7.47 ],
|
||||
"edges": [ 10, 12, 12, 14, 14, 0, 0, 2, 2, 4, 4, 6, 8, 10, 6, 8 ],
|
||||
"hull": 8,
|
||||
"edges": [ 10, 12, 12, 14, 14, 0, 0, 2, 2, 4, 4, 6, 8, 10, 6, 8 ],
|
||||
"width": 39,
|
||||
"height": 45
|
||||
}
|
||||
@ -283,9 +284,9 @@
|
||||
"type": "mesh",
|
||||
"uvs": [ 0.27018, 0, 0.11618, 0.18177, 0, 0.70688, 0, 0.89577, 0.26668, 1, 0.48718, 1, 0.67618, 0.83532, 1, 0.5161, 1, 0.25543, 0.74618, 0.0571 ],
|
||||
"triangles": [ 9, 8, 7, 9, 1, 0, 6, 9, 7, 6, 1, 9, 2, 1, 6, 4, 3, 2, 6, 4, 2, 5, 4, 6 ],
|
||||
"vertices": [ -9.85, -10.37, 2.17, -14.07, 35.49, -13.66, 47.29, -12.11, 52.61, -2.26, 51.63, 5.16, 40.51, 10.18, 19.13, 18.47, 2.85, 16.32, -8.4, 6.14 ],
|
||||
"edges": [ 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 0, 18 ],
|
||||
"vertices": [ -9.85, -10.37, 2.17, -14.07, 35.49, -13.66, 47.29, -12.11, 52.61, -2.26, 51.63, 5.16, 40.50999, 10.18, 19.12999, 18.46999, 2.85, 16.32, -8.39999, 6.14 ],
|
||||
"hull": 10,
|
||||
"edges": [ 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 0, 18 ],
|
||||
"width": 34,
|
||||
"height": 63
|
||||
}
|
||||
@ -295,10 +296,10 @@
|
||||
"name": "goblin/torso",
|
||||
"type": "mesh",
|
||||
"uvs": [ 0, 0.33287, 0.15945, 0.46488, 0.15761, 0.60314, 0.15502, 0.79806, 0.32807, 0.93478, 0.6875, 1, 0.80731, 1, 1, 0.77763, 1, 0.66147, 1, 0.56703, 0.93207, 0.4771, 0.86944, 0.39416, 0.83837, 0.226, 0.68085, 0, 0.14836, 0, 0, 0.07199, 0.78734, 0.86249, 0.43679, 0.79649, 0.76738, 0.61733, 0.44345, 0.58747, 0.54329, 0.38316, 0.77692, 0.73446, 0.66478, 0.51012 ],
|
||||
"triangles": [ 0, 15, 14, 20, 14, 13, 20, 13, 12, 1, 0, 14, 20, 12, 11, 20, 1, 14, 22, 20, 11, 22, 11, 10, 19, 1, 20, 19, 20, 22, 2, 1, 19, 18, 22, 10, 18, 10, 9, 19, 22, 18, 18, 9, 8, 21, 18, 8, 21, 8, 7, 17, 2, 19, 21, 17, 19, 21, 19, 18, 3, 2, 17, 16, 21, 7, 17, 21, 16, 4, 3, 17, 5, 17, 16, 4, 17, 5, 6, 16, 7, 5, 16, 6 ],
|
||||
"vertices": [ 56.93, 27.95, 43.37, 18.23, 30.16, 19.5, 11.53, 21.28, -2.55, 10.69, -10.89, -13.12, -11.59, -21.23, 8.54, -36.12, 19.65, -37.08, 28.68, -37.86, 37.68, -34, 45.98, -30.44, 56.4, -29.07, 84.78, -20.92, 87.9, 15.15, 81.88, 25.79, 1.67, -21.01, 10.03, 2.18, 25.23, -18.25, 29.98, 0, 48.54, -8.39, 13.98, -21.36, 35.9, -15.6 ],
|
||||
"edges": [ 0, 2, 6, 8, 8, 10, 10, 12, 12, 14, 22, 24, 24, 26, 26, 28, 28, 30, 0, 30, 14, 32, 32, 34, 34, 6, 18, 36, 36, 38, 2, 4, 4, 6, 38, 4, 2, 40, 40, 22, 40, 38, 38, 34, 32, 10, 34, 8, 40, 28, 14, 16, 16, 18, 32, 42, 42, 36, 16, 42, 42, 34, 18, 20, 20, 22, 36, 44, 44, 40, 20, 44 ],
|
||||
"triangles": [ 5, 16, 6, 6, 16, 7, 4, 17, 5, 5, 17, 16, 4, 3, 17, 17, 21, 16, 16, 21, 7, 3, 2, 17, 21, 19, 18, 21, 17, 19, 17, 2, 19, 21, 8, 7, 21, 18, 8, 18, 9, 8, 19, 22, 18, 18, 10, 9, 18, 22, 10, 2, 1, 19, 19, 20, 22, 19, 1, 20, 22, 11, 10, 22, 20, 11, 20, 1, 14, 20, 12, 11, 1, 0, 14, 20, 13, 12, 20, 14, 13, 0, 15, 14 ],
|
||||
"vertices": [ 56.93, 27.95, 43.37, 18.23, 30.16, 19.5, 11.53, 21.28, -2.55, 10.69, -10.89, -13.12, -11.59, -21.23, 8.54, -36.12, 19.65, -37.08, 28.68, -37.86, 37.68, -34, 45.98, -30.44, 56.4, -29.07, 84.78, -20.92, 87.9, 15.15, 81.87999, 25.79, 1.67, -21.01, 10.03, 2.18, 25.23, -18.25, 29.98, 0, 48.54, -8.39, 13.98, -21.36, 35.9, -15.6 ],
|
||||
"hull": 16,
|
||||
"edges": [ 0, 2, 6, 8, 8, 10, 10, 12, 12, 14, 22, 24, 24, 26, 26, 28, 28, 30, 0, 30, 14, 32, 32, 34, 34, 6, 18, 36, 36, 38, 2, 4, 4, 6, 38, 4, 2, 40, 40, 22, 40, 38, 38, 34, 32, 10, 34, 8, 40, 28, 14, 16, 16, 18, 32, 42, 42, 36, 16, 42, 42, 34, 18, 20, 20, 22, 36, 44, 44, 40, 20, 44 ],
|
||||
"width": 68,
|
||||
"height": 96
|
||||
}
|
||||
@ -309,9 +310,9 @@
|
||||
"type": "mesh",
|
||||
"uvs": [ 0.36097, 0.44959, 0.66297, 0.60591, 1, 0.19486, 1, 0.57117, 0.75897, 1, 0.38697, 1, 0, 0.26433, 0, 0, 0.12497, 0 ],
|
||||
"triangles": [ 6, 7, 8, 6, 8, 0, 3, 1, 2, 5, 0, 1, 6, 0, 5, 4, 1, 3, 5, 1, 4 ],
|
||||
"vertices": [ -10.56, 12.87, 6.53, 9.9, 25.62, 17.71, 25.62, 10.56, 11.97, 2.41, -9.09, 2.41, -31, 16.39, -31, 21.41, -23.92, 21.41 ],
|
||||
"edges": [ 14, 16, 16, 0, 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 12, 14, 10, 12, 0, 10, 2, 8 ],
|
||||
"vertices": [ -10.56, 12.87, 6.53, 9.89999, 25.62, 17.70999, 25.62, 10.56, 11.97, 2.41, -9.09, 2.41, -31, 16.39, -31, 21.41, -23.92, 21.41 ],
|
||||
"hull": 9,
|
||||
"edges": [ 14, 16, 16, 0, 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 12, 14, 10, 12, 0, 10, 2, 8 ],
|
||||
"width": 55,
|
||||
"height": 19
|
||||
}
|
||||
@ -322,9 +323,9 @@
|
||||
"type": "mesh",
|
||||
"uvs": [ 0, 0.32029, 0.14893, 0.59457, 0.22437, 1, 0.35909, 1, 0.50998, 1, 0.79559, 0.58453, 0.9842, 0.28015, 1, 0.00588, 0.46957, 0.17646, 0, 0.03933, 0.48843, 0.59122, 0.48114, 0.43099 ],
|
||||
"triangles": [ 6, 8, 7, 0, 9, 8, 11, 8, 6, 0, 8, 11, 5, 11, 6, 10, 11, 5, 1, 0, 11, 1, 11, 10, 3, 2, 1, 10, 3, 1, 4, 10, 5, 3, 10, 4 ],
|
||||
"vertices": [ -13.22, 5.56, -8, -2.47, -5.49, -14.27, -0.64, -14.36, 4.78, -14.45, 15.27, -2.59, 22.22, 6.11, 22.92, 14.05, 3.75, 9.44, -13.08, 13.71, 4.21, -2.59, 4.03, 2.05 ],
|
||||
"edges": [ 0, 2, 2, 4, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 0, 18, 4, 6, 6, 8, 6, 20, 16, 22, 22, 20, 0, 22, 22, 12, 2, 20, 20, 10 ],
|
||||
"vertices": [ -13.22, 5.56, -8, -2.47, -5.49, -14.27, -0.64, -14.36, 4.78, -14.45, 15.27, -2.58999, 22.22, 6.11, 22.92, 14.05, 3.75, 9.43999, -13.08, 13.71, 4.21, -2.58999, 4.03, 2.05 ],
|
||||
"hull": 10,
|
||||
"edges": [ 0, 2, 2, 4, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 0, 18, 4, 6, 6, 8, 6, 20, 16, 22, 22, 20, 0, 22, 22, 12, 2, 20, 20, 10 ],
|
||||
"width": 36,
|
||||
"height": 29
|
||||
}
|
||||
@ -757,7 +758,7 @@
|
||||
]
|
||||
}
|
||||
},
|
||||
"ffd": {
|
||||
"deform": {
|
||||
"default": {
|
||||
"left hand item": {
|
||||
"spear": [
|
||||
@ -769,19 +770,19 @@
|
||||
{
|
||||
"time": 0,
|
||||
"offset": 26,
|
||||
"vertices": [ 2.34, 0.14 ],
|
||||
"vertices": [ 2.34754, 0.14469 ],
|
||||
"curve": [ 0.25, 0, 0.75, 1 ]
|
||||
},
|
||||
{
|
||||
"time": 0.5,
|
||||
"offset": 8,
|
||||
"vertices": [ -1.19, 4.31, 0.07, 6.41, 1.66, 6.18, 1.75, 3.59 ],
|
||||
"vertices": [ -1.19415, 4.31531, 0.07279, 6.41351, 1.66048, 6.18882, 1.75232, 3.59555 ],
|
||||
"curve": [ 0.25, 0, 0.75, 1 ]
|
||||
},
|
||||
{
|
||||
"time": 1,
|
||||
"offset": 26,
|
||||
"vertices": [ 2.34, 0.14 ]
|
||||
"vertices": [ 2.34754, 0.14469 ]
|
||||
}
|
||||
]
|
||||
}
|
||||
@ -795,22 +796,22 @@
|
||||
},
|
||||
{
|
||||
"time": 0.2,
|
||||
"vertices": [ -10.97, -6.68, -4.68, -2.46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.08, 0.08, -1.08, 0.08, -1.08, 0.08, 0, 0, -2.22, 2.66, -4.83, 2.7, -5.7, -0.51, -3.15, -1.61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6.64, 0.81, -11.82, -1.34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.08, 0.08 ],
|
||||
"vertices": [ -10.97826, -6.68962, -4.68015, -2.46175, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.08534, 0.08391, -1.08534, 0.08391, -1.08534, 0.08391, 0, 0, -2.22324, 2.66465, -4.83295, 2.70084, -5.70553, -0.51941, -3.15962, -1.61501, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6.64741, 0.81612, -11.82285, -1.34955, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.08534, 0.08391 ],
|
||||
"curve": [ 0.25, 0, 0.75, 1 ]
|
||||
},
|
||||
{
|
||||
"time": 0.3666,
|
||||
"vertices": [ 10.69, 4.05, 3.66, 1.85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.47, 0.09, 1.47, 0.09, 1.47, 0.09, 0, 0, 2.69, -0.22, 3.77, 0.11, 3.68, 1.55, 2.49, 1.65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4.45, -3.91, 9.19, -1.66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.47, 0.09 ],
|
||||
"vertices": [ 10.69275, 4.05949, 3.66373, 1.85426, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.47305, 0.09017, 1.47305, 0.09017, 1.47305, 0.09017, 0, 0, 2.69652, -0.22738, 3.77135, 0.11417, 3.6893, 1.55352, 2.49594, 1.65501, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4.4588, -3.9113, 9.19593, -1.66854, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.47305, 0.09017 ],
|
||||
"curve": [ 0.621, 0, 0.75, 1 ]
|
||||
},
|
||||
{
|
||||
"time": 0.7,
|
||||
"vertices": [ -10.97, -6.68, -4.68, -2.46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.17, -0.17, -1.17, -0.17, -1.17, -0.17, 0, 0, -2.22, 2.66, -4.83, 2.7, -5.7, -0.51, -3.15, -1.61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6.64, 0.81, -11.82, -1.34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.17, -0.17 ],
|
||||
"vertices": [ -10.97826, -6.68962, -4.68015, -2.46175, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.1755, -0.17183, -1.1755, -0.17182, -1.1755, -0.17183, 0, 0, -2.22324, 2.66465, -4.83295, 2.70084, -5.70553, -0.51941, -3.15962, -1.61501, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6.64741, 0.81612, -11.82285, -1.34955, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.1755, -0.17183 ],
|
||||
"curve": [ 0.25, 0, 0.75, 1 ]
|
||||
},
|
||||
{
|
||||
"time": 0.8666,
|
||||
"vertices": [ 10.69, 4.05, 3.66, 1.85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.38, 0.08, 0.38, 0.08, 0.38, 0.08, 0, 0, 2.69, -0.22, 3.77, 0.11, 3.68, 1.55, 2.49, 1.65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4.45, -3.91, 9.19, -1.66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.38, 0.08 ],
|
||||
"vertices": [ 10.69275, 4.05949, 3.66373, 1.85426, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.38687, 0.08446, 0.38687, 0.08446, 0.38687, 0.08446, 0, 0, 2.69652, -0.22738, 3.77135, 0.11417, 3.6893, 1.55352, 2.49594, 1.65501, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4.4588, -3.9113, 9.19593, -1.66854, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.38687, 0.08446 ],
|
||||
"curve": [ 0.25, 0, 0.75, 1 ]
|
||||
},
|
||||
{ "time": 1 }
|
||||
@ -821,35 +822,35 @@
|
||||
{
|
||||
"time": 0,
|
||||
"offset": 8,
|
||||
"vertices": [ 3.69, 2.37, -7.16, 18.79, -12.78, 14.77, -12.75, 6.5, -3.13, 1.98, -0.44, 0.36, 0, 0, -3.8, 2.98 ]
|
||||
"vertices": [ 3.69298, 2.37572, -7.16969, 18.79732, -12.78161, 14.7778, -12.75775, 6.50514, -3.13475, 1.98906, -0.44401, 0.36629, 0, 0, -3.80085, 2.98474 ]
|
||||
},
|
||||
{ "time": 0.1333 },
|
||||
{
|
||||
"time": 0.2333,
|
||||
"offset": 8,
|
||||
"vertices": [ -3.96, -2.34, -5.8, -12.47, -2.23, -12.99, 2.02, -9.1, 0, 0, 0, 0, 0, 0, -1.35, -5.28 ]
|
||||
"vertices": [ -3.96072, -2.34594, -5.80445, -12.47629, -2.23129, -12.99037, 2.02941, -9.1036, 0, 0, 0, 0, 0, 0, -1.35254, -5.2883 ]
|
||||
},
|
||||
{
|
||||
"time": 0.3666,
|
||||
"offset": 8,
|
||||
"vertices": [ 0.66, 0.33, 0.33, 2.69, -0.48, 2.54, -1.13, 1.38, 0, 0, 0, 0, 0, 0, -0.11, 0.79 ]
|
||||
"vertices": [ 0.66504, 0.33548, 0.33902, 2.69014, -0.4817, 2.54524, -1.13592, 1.38562, 0, 0, 0, 0, 0, 0, -0.11907, 0.79273 ]
|
||||
},
|
||||
{ "time": 0.5, "curve": "stepped" },
|
||||
{ "time": 0.6333 },
|
||||
{
|
||||
"time": 0.7333,
|
||||
"offset": 8,
|
||||
"vertices": [ -2.97, 9.4, -6.91, 19.92, -10.55, 18.41, -12.37, 12.38, -4.72, 6.3, 0, 0, -1.48, 4.88, -7.06, 10.7 ]
|
||||
"vertices": [ -2.97737, 9.40254, -6.91661, 19.92794, -10.55287, 18.41085, -12.37161, 12.38473, -4.72606, 6.30798, 0, 0, -1.48902, 4.88944, -7.06773, 10.70101 ]
|
||||
},
|
||||
{
|
||||
"time": 0.8333,
|
||||
"offset": 6,
|
||||
"vertices": [ 1.05, 1.56, -2.52, 7.99, -5.52, 17.14, -8.93, 15.79, -10.73, 10.22, -4.23, 5.36, 0, 0, 0, 0, -5.83, 8.55 ]
|
||||
"vertices": [ 1.05318, 1.56361, -2.52722, 7.9974, -5.5203, 17.14136, -8.93317, 15.79635, -10.73747, 10.22055, -4.23801, 5.36992, 0, 0, 0, 0, -5.83147, 8.55531 ]
|
||||
},
|
||||
{
|
||||
"time": 1,
|
||||
"offset": 8,
|
||||
"vertices": [ 3.69, 2.37, -7.16, 18.79, -12.78, 14.77, -12.75, 6.5, -3.13, 1.98, -0.44, 0.36, 0, 0, -3.8, 2.98 ]
|
||||
"vertices": [ 3.69298, 2.37572, -7.16969, 18.79732, -12.78161, 14.7778, -12.75775, 6.50514, -3.13475, 1.98906, -0.44401, 0.36629, 0, 0, -3.80085, 2.98474 ]
|
||||
}
|
||||
]
|
||||
},
|
||||
@ -859,22 +860,22 @@
|
||||
{
|
||||
"time": 0.1333,
|
||||
"offset": 6,
|
||||
"vertices": [ -0.68, -4.13 ]
|
||||
"vertices": [ -0.68989, -4.13283 ]
|
||||
},
|
||||
{
|
||||
"time": 0.3333,
|
||||
"offset": 6,
|
||||
"vertices": [ -1.04, -3.1 ]
|
||||
"vertices": [ -1.04945, -3.10476 ]
|
||||
},
|
||||
{
|
||||
"time": 0.7,
|
||||
"offset": 6,
|
||||
"vertices": [ -1.42, -6.3 ]
|
||||
"vertices": [ -1.4245, -6.30616 ]
|
||||
},
|
||||
{
|
||||
"time": 0.8666,
|
||||
"offset": 6,
|
||||
"vertices": [ -1.13, -1.79 ]
|
||||
"vertices": [ -1.13541, -1.79035 ]
|
||||
},
|
||||
{ "time": 1 }
|
||||
]
|
||||
@ -885,38 +886,38 @@
|
||||
{
|
||||
"time": 0.1333,
|
||||
"offset": 2,
|
||||
"vertices": [ -2.81, 2.63, -2.35, 3.89, -1.99, 4.86, -0.93, 5.57, -0.48, 5.09, -0.34, 3.42, -0.17, 1.36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.31, 1.91, -1.32, 3.65 ]
|
||||
"vertices": [ -2.81258, 2.63114, -2.35238, 3.89441, -1.99921, 4.8639, -0.93273, 5.57982, -0.48886, 5.09854, -0.34812, 3.42912, -0.17445, 1.36898, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.31305, 1.91371, -1.32986, 3.65703 ]
|
||||
},
|
||||
{
|
||||
"time": 0.2333,
|
||||
"offset": 2,
|
||||
"vertices": [ -6.39, 6.41, -7.74, 8.27, -7.02, 11.35, -4.03, 13.93, -2.5, 12.62, -1.46, 7.58, -0.17, 1.36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3.84, 2.61, -4.53, 7.92 ]
|
||||
"vertices": [ -6.39088, 6.41245, -7.74575, 8.27191, -7.02471, 11.35894, -4.0347, 13.93454, -2.50399, 12.62962, -1.46124, 7.58915, -0.17445, 1.36898, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3.84765, 2.61215, -4.53955, 7.92357 ]
|
||||
},
|
||||
{
|
||||
"time": 0.3,
|
||||
"offset": 2,
|
||||
"vertices": [ -8.27, 6.68, -9.29, 10.13, -8.62, 14.71, -4.58, 18.81, -2.2, 17.1, -0.07, 9.9, 2.54, 1.01, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.94, 2.38, -4.59, 10.01 ]
|
||||
"vertices": [ -8.27184, 6.68821, -9.29764, 10.13797, -8.62231, 14.71339, -4.58629, 18.81939, -2.20304, 17.10709, -0.07794, 9.9046, 2.54451, 1.01642, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.94624, 2.38007, -4.59398, 10.01888 ]
|
||||
},
|
||||
{
|
||||
"time": 0.3666,
|
||||
"offset": 2,
|
||||
"vertices": [ -10.47, 9.44, -13.36, 12.4, -14.32, 16.94, -9.24, 23.55, -5.51, 21.51, -1.19, 11.53, 2.54, 1.01, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4.14, 2.29, -6.63, 11.37 ]
|
||||
"vertices": [ -10.47683, 9.44175, -13.36882, 12.40982, -14.32568, 16.94392, -9.24462, 23.55674, -5.51711, 21.51377, -1.19581, 11.53192, 2.54451, 1.01642, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4.14847, 2.29389, -6.63418, 11.37127 ]
|
||||
},
|
||||
{
|
||||
"time": 0.5,
|
||||
"offset": 2,
|
||||
"vertices": [ -5.42, 4.36, -10.59, 7.04, -11.64, 11.55, -6.19, 20.12, -1.45, 18.05, 4.86, 6.41, 2.81, 0.27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.96, 4.94 ]
|
||||
"vertices": [ -5.42473, 4.36854, -10.59004, 7.04468, -11.64251, 11.55845, -6.19665, 20.12805, -1.45497, 18.05411, 4.86619, 6.41678, 2.81462, 0.27601, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.96412, 4.94829 ]
|
||||
},
|
||||
{ "time": 0.6333 },
|
||||
{
|
||||
"time": 0.7333,
|
||||
"offset": 4,
|
||||
"vertices": [ 1.31, -6.84, -0.87, -12.54, -5.98, -14.08, -7.15, -11.63, -5.67, -4.83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.06, -6.93 ]
|
||||
"vertices": [ 1.31462, -6.84099, -0.87905, -12.54479, -5.9851, -14.08367, -7.15892, -11.63193, -5.6792, -4.83544, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.06163, -6.93844 ]
|
||||
},
|
||||
{
|
||||
"time": 0.8,
|
||||
"offset": 4,
|
||||
"vertices": [ 0.65, -3.42, -0.43, -6.27, -2.99, -7.04, -3.57, -5.81, -2.83, -2.41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.79, -1.28, 0, 0, 0, 0, -1.03, -3.46 ]
|
||||
"vertices": [ 0.65731, -3.42049, -0.43952, -6.27239, -2.99255, -7.04183, -3.57946, -5.81596, -2.83959, -2.41772, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.79687, -1.2802, 0, 0, 0, 0, -1.03081, -3.46922 ]
|
||||
},
|
||||
{ "time": 0.8666 }
|
||||
]
|
||||
@ -926,13 +927,13 @@
|
||||
{
|
||||
"time": 0,
|
||||
"offset": 4,
|
||||
"vertices": [ -1.48, 0.34, 0, 0, 1.31, 0.08, 1.6, 0.09, 0.13, 0.15, 0, 0, 0, 0, -0.72, -0.04 ]
|
||||
"vertices": [ -1.48416, 0.34736, 0, 0, 1.31152, 0.08085, 1.60295, 0.09881, 0.13673, 0.1547, 0, 0, 0, 0, -0.72862, -0.0449 ]
|
||||
},
|
||||
{ "time": 0.5 },
|
||||
{
|
||||
"time": 1,
|
||||
"offset": 4,
|
||||
"vertices": [ -1.48, 0.34, 0, 0, 1.31, 0.08, 1.6, 0.09, 0.13, 0.15, 0, 0, 0, 0, -0.72, -0.04 ]
|
||||
"vertices": [ -1.48416, 0.34736, 0, 0, 1.31152, 0.08085, 1.60295, 0.09881, 0.13673, 0.1547, 0, 0, 0, 0, -0.72862, -0.0449 ]
|
||||
}
|
||||
]
|
||||
},
|
||||
@ -942,7 +943,7 @@
|
||||
{
|
||||
"time": 0.6,
|
||||
"offset": 6,
|
||||
"vertices": [ 1.8, -1.56 ]
|
||||
"vertices": [ 1.80396, -1.56552 ]
|
||||
},
|
||||
{ "time": 1 }
|
||||
]
|
||||
@ -951,17 +952,17 @@
|
||||
"right upper leg": [
|
||||
{
|
||||
"time": 0,
|
||||
"vertices": [ -6.03, -1.46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.34, -1.93, -1.86, -5.05, -2.5, -3.09 ]
|
||||
"vertices": [ -6.03856, -1.46324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.34684, -1.93101, -1.86047, -5.05265, -2.5014, -3.09984 ]
|
||||
},
|
||||
{ "time": 0.3333 },
|
||||
{
|
||||
"time": 0.8666,
|
||||
"offset": 14,
|
||||
"vertices": [ 0.13, -2.35, -1.33, -5.99, -1.35, -4.43 ]
|
||||
"vertices": [ 0.13424, -2.35377, -1.33317, -5.99572, -1.35861, -4.43323 ]
|
||||
},
|
||||
{
|
||||
"time": 1,
|
||||
"vertices": [ -6.03, -1.46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.34, -1.93, -1.86, -5.05, -2.5, -3.09 ]
|
||||
"vertices": [ -6.03856, -1.46324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.34684, -1.93101, -1.86047, -5.05265, -2.5014, -3.09984 ]
|
||||
}
|
||||
]
|
||||
},
|
||||
@ -970,37 +971,37 @@
|
||||
{
|
||||
"time": 0,
|
||||
"offset": 14,
|
||||
"vertices": [ -1.48, -0.24, -2.72, -2.15, -0.51, -3.39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.09, -2.61, 0, 0, 0.57, -1.24, 0, 0, 0, 0, -2.11, -3.29 ]
|
||||
"vertices": [ -1.48952, -0.24021, -2.72312, -2.15489, -0.51183, -3.39752, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.0964, -2.61458, 0, 0, 0.57686, -1.24874, 0, 0, 0, 0, -2.11251, -3.29932 ]
|
||||
},
|
||||
{
|
||||
"time": 0.1333,
|
||||
"offset": 14,
|
||||
"vertices": [ 1.31, -0.59, -0.97, -1.62, 0.74, -0.61, -1.44, 1.97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.65, -3.95, 0, 0, -1.46, -0.31, 0, 0, 0, 0, -3.31, -3.55, -2.56, 0.29 ]
|
||||
"vertices": [ 1.31318, -0.59727, -0.97944, -1.62934, 0.74861, -0.6123, -1.44598, 1.97515, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.65701, -3.95221, 0, 0, -1.46987, -0.31373, 0, 0, 0, 0, -3.31756, -3.5535, -2.56329, 0.29673 ]
|
||||
},
|
||||
{
|
||||
"time": 0.3,
|
||||
"offset": 14,
|
||||
"vertices": [ 6.03, -3.13, 7.55, -1.38, 6.79, 0.31, 4.23, 1.14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4.07, -5.16, 0, 0, 4, 0.27, 0, 0, 0, 0, 3.43, -3.52 ]
|
||||
"vertices": [ 6.03761, -3.13561, 7.55475, -1.38111, 6.79747, 0.31171, 4.23503, 1.14012, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4.07575, -5.16824, 0, 0, 4.0041, 0.27245, 0, 0, 0, 0, 3.4376, -3.52286 ]
|
||||
},
|
||||
{
|
||||
"time": 0.5,
|
||||
"offset": 14,
|
||||
"vertices": [ 2.25, -0.87, 2.57, -0.56, 3.17, -0.57, 1.48, 0.99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3.22, -4.43, 0, 0, 1.48, 0.01, 0, 0, 0, 0, 0.31, -3.28, -1.53, 0.17 ]
|
||||
"vertices": [ 2.25942, -0.87202, 2.575, -0.56861, 3.17112, -0.57003, 1.48704, 0.9924, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3.22451, -4.43862, 0, 0, 1.48691, 0.01586, 0, 0, 0, 0, 0.31388, -3.28095, -1.53797, 0.17803 ]
|
||||
},
|
||||
{
|
||||
"time": 0.6333,
|
||||
"offset": 14,
|
||||
"vertices": [ 0.75, -1.51, -0.97, -1.62, 0.74, -0.61, -1.44, 1.97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.65, -3.95, 0, 0, -1.46, -0.31, 0, 0, 0, 0, -3.31, -3.55, -2.56, 0.29 ]
|
||||
"vertices": [ 0.75002, -1.51701, -0.97944, -1.62934, 0.74861, -0.6123, -1.44598, 1.97515, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.65701, -3.95221, 0, 0, -1.46987, -0.31373, 0, 0, 0, 0, -3.31756, -3.5535, -2.56329, 0.29673 ]
|
||||
},
|
||||
{
|
||||
"time": 0.8666,
|
||||
"offset": 14,
|
||||
"vertices": [ 0.62, -1.26, 0.38, -2.2, 3.25, -0.5, 2.41, 2.39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.66, -3.1, 0, 0, 2.3, -1.15, 0, 0, 0, 0, -0.07, -3.63, -0.93, 0.1 ]
|
||||
"vertices": [ 0.62202, -1.26262, 0.38489, -2.20701, 3.25048, -0.50042, 2.41108, 2.39315, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.6639, -3.10099, 0, 0, 2.30655, -1.15196, 0, 0, 0, 0, -0.07676, -3.63497, -0.9321, 0.1079 ]
|
||||
},
|
||||
{
|
||||
"time": 1,
|
||||
"offset": 14,
|
||||
"vertices": [ -1.48, -0.24, -2.72, -2.15, -0.51, -3.39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.09, -2.61, 0, 0, 0.57, -1.24, 0, 0, 0, 0, -2.11, -3.29 ]
|
||||
"vertices": [ -1.48952, -0.24021, -2.72312, -2.15489, -0.51183, -3.39752, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.0964, -2.61458, 0, 0, 0.57686, -1.24874, 0, 0, 0, 0, -2.11251, -3.29932 ]
|
||||
}
|
||||
]
|
||||
},
|
||||
@ -1009,32 +1010,32 @@
|
||||
{
|
||||
"time": 0,
|
||||
"offset": 2,
|
||||
"vertices": [ -1.77, 0.54, -0.96, -1.03, -0.39, -0.24, -1.77, 0.54 ]
|
||||
"vertices": [ -1.77696, 0.54759, -0.96145, -1.03793, -0.39148, -0.24071, -1.77696, 0.54759 ]
|
||||
},
|
||||
{
|
||||
"time": 0.1333,
|
||||
"offset": 2,
|
||||
"vertices": [ -2.25, -1.03, -1.49, -4.23, -0.74, -2.84, -1.9, 0.54 ]
|
||||
"vertices": [ -2.25683, -1.03177, -1.49719, -4.23861, -0.74469, -2.84906, -1.90072, 0.54477 ]
|
||||
},
|
||||
{
|
||||
"time": 0.3333,
|
||||
"offset": 2,
|
||||
"vertices": [ -2.37, -0.05, -0.49, 0.19, -0.9, 1.16, -1.6, 2.7, 0.96, 0.8 ]
|
||||
"vertices": [ -2.37974, -0.05431, -0.49433, 0.19436, -0.90861, 1.16519, -1.60956, 2.70798, 0.96186, 0.80615 ]
|
||||
},
|
||||
{
|
||||
"time": 0.7,
|
||||
"offset": 2,
|
||||
"vertices": [ -0.91, -2.76, -0.62, -3.63, -0.84, -2.26, -2.56, 0.52 ]
|
||||
"vertices": [ -0.91714, -2.76567, -0.62214, -3.63489, -0.8494, -2.26772, -2.56076, 0.5297 ]
|
||||
},
|
||||
{
|
||||
"time": 0.8666,
|
||||
"offset": 2,
|
||||
"vertices": [ -2.56, 0.52, -1.58, 0.32, -1.38, 0.32, -2.56, 0.52 ]
|
||||
"vertices": [ -2.56076, 0.5297, -1.58064, 0.32031, -1.3847, 0.32476, -2.56076, 0.5297 ]
|
||||
},
|
||||
{
|
||||
"time": 1,
|
||||
"offset": 2,
|
||||
"vertices": [ -1.77, 0.54, -0.8, 0.53, -0.8, 0.53, -1.77, 0.54 ]
|
||||
"vertices": [ -1.77696, 0.54759, -0.80128, 0.53413, -0.80128, 0.53413, -1.77696, 0.54759 ]
|
||||
}
|
||||
]
|
||||
},
|
||||
@ -1042,35 +1043,35 @@
|
||||
"undies": [
|
||||
{
|
||||
"time": 0,
|
||||
"vertices": [ 0.43, 0.72, 10.6, -0.11, 2.29, 0, 2.29, 0, 2.29, 0, 0.58, 0.24, -2.4, -0.65, -2.27, -0.77, 2.29, 0, 0.58, -0.48, 4.98, -0.11, 6.5, -0.23 ]
|
||||
"vertices": [ 0.43098, 0.722, 10.60295, -0.11699, 2.29598, 0, 2.29598, 0, 2.29598, 0, 0.58798, 0.24399, -2.40018, -0.65335, -2.2782, -0.77533, 2.29598, 0, 0.58798, -0.48799, 4.98697, -0.11699, 6.50796, -0.23399 ]
|
||||
},
|
||||
{
|
||||
"time": 0.1333,
|
||||
"vertices": [ 0.72, 0.43, 7.2, -0.16, 1.37, 0, 1.37, 0, 1.37, 0, 1.25, 0.04, -0.99, -2.95, -1.37, -3.07, 1.37, 0, 0.35, -0.29, 2.99, -0.07, 3.9, -0.14 ]
|
||||
"vertices": [ 0.72659, 0.43319, 7.20416, -0.1638, 1.37759, 0, 1.37759, 0, 1.37759, 0, 1.25279, 0.0464, -0.99861, -2.95085, -1.37542, -3.07404, 1.37759, 0, 0.35279, -0.29279, 2.99218, -0.07019, 3.90478, -0.14039 ]
|
||||
},
|
||||
{
|
||||
"time": 0.3333,
|
||||
"vertices": [ 1.16, 0, 2.1, -0.23, 0, 0, 0, 0, 0, 0, 2.24, -0.24, -0.43, 0.6, -1.55, 0.48 ]
|
||||
"vertices": [ 1.16999, 0, 2.10599, -0.234, 0, 0, 0, 0, 0, 0, 2.24999, -0.24999, -0.4344, 0.60551, -1.55939, 0.48051 ]
|
||||
},
|
||||
{
|
||||
"time": 0.5333,
|
||||
"vertices": [ 1.16, 0, -0.23, -0.93, -2.92, 0.35, 0, 0, 0, 0, 0.49, -0.24, -0.64, -2.07, -0.64, -2.07 ]
|
||||
"vertices": [ 1.16999, 0, -0.234, -0.93599, -2.92499, 0.35099, 0, 0, 0, 0, 0.49999, -0.24999, -0.64078, -2.07914, -0.64078, -2.07914 ]
|
||||
},
|
||||
{
|
||||
"time": 0.7,
|
||||
"vertices": [ 1.86, -0.11, 4.66, -0.09, -1.76, 0.21, 0, 0, -0.56, 0.32, -1.13, -1.15, -2.19, -3.47, -1.29, -3.47, 0, 0, 0, 0, 1.58, -0.04, 2.65, 0.16 ]
|
||||
"vertices": [ 1.8627, -0.11514, 4.66326, -0.09099, -1.76428, 0.21171, 0, 0, -0.56832, 0.32832, -1.13833, -1.1511, -2.19996, -3.47068, -1.29718, -3.47068, 0, 0, 0, 0, 1.58785, -0.04642, 2.65941, 0.16714 ]
|
||||
},
|
||||
{
|
||||
"time": 0.8333,
|
||||
"vertices": [ 2.41, -0.2, 8.58, 0.58, -0.83, 0.1, 0, 0, -1.02, 0.59, -2.44, -1.87, -1.62, 0, 0, 0, 0, 0, 0, 0, 2.85, -0.08, 4.78, 0.3 ]
|
||||
"vertices": [ 2.41687, -0.20725, 8.58108, 0.585, -0.83571, 0.10028, 0, 0, -1.02299, 0.59098, -2.44899, -1.872, -1.62499, 0, 0, 0, 0, 0, 0, 0, 2.85813, -0.08356, 4.78695, 0.30086 ]
|
||||
},
|
||||
{
|
||||
"time": 0.8666,
|
||||
"vertices": [ 2.01, -0.02, 8.98, 0.44, -0.2, 0.08, 0.45, 0, -0.35, 0.47, -1.84, -1.44, -0.79, 1.26, 0.53, 1.23, 0.45, 0, 0.11, -0.09, 3.28, -0.09, 5.13, 0.19 ]
|
||||
"vertices": [ 2.01969, -0.0214, 8.98545, 0.4446, -0.20937, 0.08022, 0.45919, 0, -0.35919, 0.47279, -1.84159, -1.4488, -0.79153, 1.2642, 0.53285, 1.23981, 0.45919, 0, 0.11759, -0.09759, 3.2839, -0.09025, 5.13115, 0.19388 ]
|
||||
},
|
||||
{
|
||||
"time": 1,
|
||||
"vertices": [ 0.43, 0.72, 10.6, -0.11, 2.29, 0, 2.29, 0, 2.29, 0, 0.58, 0.24, -2.4, -0.65, -2.27, -0.77, 2.29, 0, 0.58, -0.48, 4.98, -0.11, 6.5, -0.23 ]
|
||||
"vertices": [ 0.43098, 0.722, 10.60295, -0.11699, 2.29598, 0, 2.29598, 0, 2.29598, 0, 0.58798, 0.24399, -2.40018, -0.65335, -2.2782, -0.77533, 2.29598, 0, 0.58798, -0.48799, 4.98697, -0.11699, 6.50796, -0.23399 ]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
|
Before Width: | Height: | Size: 217 KiB After Width: | Height: | Size: 214 KiB |
251
spine-cocos2d-objc/Resources/raptor.atlas
Normal file
@ -0,0 +1,251 @@
|
||||
|
||||
raptor.png
|
||||
size: 2048,2048
|
||||
format: RGBA8888
|
||||
filter: Linear,Linear
|
||||
repeat: none
|
||||
back_arm
|
||||
rotate: false
|
||||
xy: 830, 1093
|
||||
size: 91, 57
|
||||
orig: 91, 57
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
back_bracer
|
||||
rotate: true
|
||||
xy: 217, 113
|
||||
size: 77, 55
|
||||
orig: 77, 55
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
back_hand
|
||||
rotate: true
|
||||
xy: 275, 501
|
||||
size: 72, 68
|
||||
orig: 72, 68
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
back_knee
|
||||
rotate: false
|
||||
xy: 583, 955
|
||||
size: 97, 134
|
||||
orig: 97, 134
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
back_thigh
|
||||
rotate: true
|
||||
xy: 440, 689
|
||||
size: 78, 47
|
||||
orig: 78, 47
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
eyes_open
|
||||
rotate: true
|
||||
xy: 495, 848
|
||||
size: 93, 89
|
||||
orig: 93, 89
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
front_arm
|
||||
rotate: false
|
||||
xy: 2, 5
|
||||
size: 96, 60
|
||||
orig: 96, 60
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
front_bracer
|
||||
rotate: true
|
||||
xy: 217, 192
|
||||
size: 81, 58
|
||||
orig: 81, 58
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
front_hand
|
||||
rotate: false
|
||||
xy: 586, 878
|
||||
size: 82, 75
|
||||
orig: 82, 75
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
front_open_hand
|
||||
rotate: true
|
||||
xy: 495, 760
|
||||
size: 86, 87
|
||||
orig: 86, 87
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
front_thigh
|
||||
rotate: false
|
||||
xy: 714, 1092
|
||||
size: 114, 58
|
||||
orig: 114, 58
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
gun
|
||||
rotate: false
|
||||
xy: 2, 67
|
||||
size: 213, 206
|
||||
orig: 213, 206
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
gun_nohand
|
||||
rotate: false
|
||||
xy: 1563, 1547
|
||||
size: 210, 203
|
||||
orig: 210, 203
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
head
|
||||
rotate: false
|
||||
xy: 2, 275
|
||||
size: 271, 298
|
||||
orig: 271, 298
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
lower_leg
|
||||
rotate: true
|
||||
xy: 386, 943
|
||||
size: 146, 195
|
||||
orig: 146, 195
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
mouth_smile
|
||||
rotate: false
|
||||
xy: 100, 6
|
||||
size: 93, 59
|
||||
orig: 93, 59
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
neck
|
||||
rotate: false
|
||||
xy: 1012, 1109
|
||||
size: 36, 41
|
||||
orig: 36, 41
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
raptor_arm_back
|
||||
rotate: false
|
||||
xy: 330, 769
|
||||
size: 163, 172
|
||||
orig: 163, 172
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
raptor_body
|
||||
rotate: false
|
||||
xy: 2, 1468
|
||||
size: 1219, 570
|
||||
orig: 1219, 570
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
raptor_front_arm
|
||||
rotate: true
|
||||
xy: 1223, 1445
|
||||
size: 162, 203
|
||||
orig: 162, 203
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
raptor_front_leg
|
||||
rotate: false
|
||||
xy: 2, 952
|
||||
size: 382, 514
|
||||
orig: 382, 514
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
raptor_hindleg_back
|
||||
rotate: false
|
||||
xy: 1223, 1609
|
||||
size: 338, 429
|
||||
orig: 338, 429
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
raptor_horn
|
||||
rotate: false
|
||||
xy: 714, 1307
|
||||
size: 363, 159
|
||||
orig: 363, 159
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
raptor_horn_back
|
||||
rotate: false
|
||||
xy: 714, 1152
|
||||
size: 351, 153
|
||||
orig: 351, 153
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
raptor_jaw
|
||||
rotate: false
|
||||
xy: 1563, 1752
|
||||
size: 305, 286
|
||||
orig: 305, 286
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
raptor_saddle_noshadow
|
||||
rotate: false
|
||||
xy: 2, 575
|
||||
size: 326, 375
|
||||
orig: 326, 375
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
raptor_saddle_strap_front
|
||||
rotate: true
|
||||
xy: 1558, 1431
|
||||
size: 114, 189
|
||||
orig: 114, 189
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
raptor_saddle_strap_rear
|
||||
rotate: false
|
||||
xy: 1079, 1318
|
||||
size: 108, 148
|
||||
orig: 108, 148
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
raptor_saddle_w_shadow
|
||||
rotate: false
|
||||
xy: 386, 1091
|
||||
size: 326, 375
|
||||
orig: 326, 375
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
raptor_tongue
|
||||
rotate: true
|
||||
xy: 1428, 1436
|
||||
size: 171, 128
|
||||
orig: 171, 128
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
stirrup_back
|
||||
rotate: false
|
||||
xy: 923, 1081
|
||||
size: 87, 69
|
||||
orig: 87, 69
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
stirrup_front
|
||||
rotate: false
|
||||
xy: 1775, 1650
|
||||
size: 89, 100
|
||||
orig: 89, 100
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
stirrup_strap
|
||||
rotate: true
|
||||
xy: 1775, 1551
|
||||
size: 97, 91
|
||||
orig: 97, 91
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
torso
|
||||
rotate: false
|
||||
xy: 330, 585
|
||||
size: 108, 182
|
||||
orig: 108, 182
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
visor
|
||||
rotate: true
|
||||
xy: 1870, 1777
|
||||
size: 261, 168
|
||||
orig: 261, 168
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
2620
spine-cocos2d-objc/Resources/raptor.json
Normal file
BIN
spine-cocos2d-objc/Resources/raptor.png
Normal file
|
After Width: | Height: | Size: 1.7 MiB |
@ -1,194 +1,195 @@
|
||||
|
||||
spineboy.png
|
||||
size: 1024,1024
|
||||
format: RGBA8888
|
||||
filter: Linear,Linear
|
||||
repeat: none
|
||||
eye_indifferent
|
||||
rotate: true
|
||||
xy: 389, 5
|
||||
size: 56, 53
|
||||
orig: 56, 53
|
||||
rotate: false
|
||||
xy: 550, 694
|
||||
size: 93, 89
|
||||
orig: 93, 89
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
eye_surprised
|
||||
rotate: false
|
||||
xy: 580, 34
|
||||
size: 56, 53
|
||||
orig: 56, 53
|
||||
xy: 834, 856
|
||||
size: 93, 89
|
||||
orig: 93, 89
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
front_bracer
|
||||
rotate: false
|
||||
xy: 732, 85
|
||||
size: 35, 48
|
||||
orig: 35, 48
|
||||
xy: 678, 774
|
||||
size: 58, 80
|
||||
orig: 58, 80
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
front_fist_closed
|
||||
rotate: false
|
||||
xy: 556, 91
|
||||
size: 45, 49
|
||||
orig: 45, 49
|
||||
rotate: true
|
||||
xy: 466, 593
|
||||
size: 75, 82
|
||||
orig: 75, 82
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
front_fist_open
|
||||
rotate: false
|
||||
xy: 668, 32
|
||||
size: 52, 52
|
||||
orig: 52, 52
|
||||
xy: 550, 605
|
||||
size: 86, 87
|
||||
orig: 86, 87
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
front_foot
|
||||
rotate: false
|
||||
xy: 924, 201
|
||||
size: 76, 41
|
||||
orig: 76, 41
|
||||
xy: 550, 785
|
||||
size: 126, 69
|
||||
orig: 126, 69
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
front_foot_bend1
|
||||
rotate: false
|
||||
xy: 845, 200
|
||||
size: 77, 42
|
||||
orig: 77, 42
|
||||
rotate: true
|
||||
xy: 375, 492
|
||||
size: 128, 70
|
||||
orig: 128, 70
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
front_foot_bend2
|
||||
rotate: false
|
||||
xy: 778, 186
|
||||
size: 65, 56
|
||||
orig: 65, 56
|
||||
rotate: true
|
||||
xy: 275, 330
|
||||
size: 108, 93
|
||||
orig: 108, 93
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
front_shin
|
||||
rotate: true
|
||||
xy: 444, 91
|
||||
size: 49, 110
|
||||
orig: 49, 110
|
||||
rotate: false
|
||||
xy: 466, 670
|
||||
size: 82, 184
|
||||
orig: 82, 184
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
front_thigh
|
||||
rotate: true
|
||||
xy: 603, 89
|
||||
size: 29, 67
|
||||
orig: 29, 67
|
||||
rotate: false
|
||||
xy: 214, 208
|
||||
size: 48, 112
|
||||
orig: 48, 112
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
front_upper_arm
|
||||
rotate: true
|
||||
xy: 672, 86
|
||||
size: 32, 58
|
||||
orig: 32, 58
|
||||
rotate: false
|
||||
xy: 214, 109
|
||||
size: 54, 97
|
||||
orig: 54, 97
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goggles
|
||||
rotate: false
|
||||
xy: 444, 142
|
||||
size: 157, 100
|
||||
orig: 157, 100
|
||||
xy: 466, 856
|
||||
size: 261, 166
|
||||
orig: 261, 166
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
gun
|
||||
rotate: false
|
||||
xy: 603, 120
|
||||
size: 126, 122
|
||||
orig: 126, 122
|
||||
xy: 2, 117
|
||||
size: 210, 203
|
||||
orig: 210, 203
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
head
|
||||
rotate: false
|
||||
xy: 279, 63
|
||||
size: 163, 179
|
||||
orig: 163, 179
|
||||
xy: 2, 322
|
||||
size: 271, 298
|
||||
orig: 271, 298
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
mouth_grind
|
||||
rotate: false
|
||||
xy: 845, 163
|
||||
size: 56, 35
|
||||
orig: 56, 35
|
||||
xy: 929, 896
|
||||
size: 93, 59
|
||||
orig: 93, 59
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
mouth_oooo
|
||||
rotate: false
|
||||
xy: 842, 126
|
||||
size: 56, 35
|
||||
orig: 56, 35
|
||||
xy: 929, 835
|
||||
size: 93, 59
|
||||
orig: 93, 59
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
mouth_smile
|
||||
rotate: false
|
||||
xy: 769, 97
|
||||
size: 56, 35
|
||||
orig: 56, 35
|
||||
xy: 447, 532
|
||||
size: 93, 59
|
||||
orig: 93, 59
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
muzzle
|
||||
rotate: false
|
||||
xy: 2, 2
|
||||
size: 275, 240
|
||||
orig: 277, 240
|
||||
xy: 2, 622
|
||||
size: 462, 400
|
||||
orig: 462, 400
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
neck
|
||||
rotate: false
|
||||
xy: 903, 173
|
||||
size: 22, 25
|
||||
orig: 22, 25
|
||||
xy: 796, 819
|
||||
size: 36, 41
|
||||
orig: 36, 41
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
rear_bracer
|
||||
rotate: false
|
||||
xy: 722, 40
|
||||
size: 34, 43
|
||||
orig: 34, 43
|
||||
xy: 738, 788
|
||||
size: 56, 72
|
||||
orig: 56, 72
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
rear_foot
|
||||
rotate: false
|
||||
xy: 444, 11
|
||||
size: 68, 36
|
||||
orig: 68, 36
|
||||
rotate: true
|
||||
xy: 2, 2
|
||||
size: 113, 60
|
||||
orig: 113, 60
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
rear_foot_bend1
|
||||
rotate: false
|
||||
xy: 444, 49
|
||||
size: 70, 40
|
||||
orig: 70, 40
|
||||
xy: 64, 49
|
||||
size: 117, 66
|
||||
orig: 117, 66
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
rear_foot_bend2
|
||||
rotate: false
|
||||
xy: 778, 134
|
||||
size: 62, 50
|
||||
orig: 62, 50
|
||||
xy: 729, 862
|
||||
size: 103, 83
|
||||
orig: 103, 83
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
rear_shin
|
||||
rotate: false
|
||||
xy: 731, 135
|
||||
size: 45, 107
|
||||
orig: 45, 107
|
||||
rotate: true
|
||||
xy: 729, 947
|
||||
size: 75, 178
|
||||
orig: 75, 178
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
rear_thigh
|
||||
rotate: true
|
||||
xy: 516, 50
|
||||
size: 39, 62
|
||||
orig: 39, 62
|
||||
xy: 909, 957
|
||||
size: 65, 104
|
||||
orig: 65, 104
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
rear_upper_arm
|
||||
rotate: false
|
||||
xy: 638, 35
|
||||
size: 28, 52
|
||||
orig: 28, 52
|
||||
rotate: true
|
||||
xy: 447, 483
|
||||
size: 47, 87
|
||||
orig: 47, 87
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
torso
|
||||
rotate: true
|
||||
xy: 279, 2
|
||||
size: 59, 108
|
||||
orig: 59, 108
|
||||
rotate: false
|
||||
xy: 275, 440
|
||||
size: 98, 180
|
||||
orig: 98, 180
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
|
||||
@ -1,39 +1,31 @@
|
||||
{
|
||||
"skeleton": { "hash": "rPoYyBLFG6F0CGZ5wsUEBKDJU9U", "spine": "3.3.07", "width": 470.71, "height": 731.57, "images": "./images/" },
|
||||
"bones": [
|
||||
{ "name": "hip", "y": 247.47 },
|
||||
{ "name": "front_thigh", "parent": "hip", "length": 74.8, "x": -17.45, "y": -11.64, "rotation": -95.51, "color": "00ff04ff" },
|
||||
{ "name": "rear_thigh", "parent": "hip", "length": 85.71, "x": 8.91, "y": -5.62, "rotation": -72.54, "color": "ff000dff" },
|
||||
{ "name": "torso", "parent": "hip", "length": 127.55, "x": -1.61, "y": 4.9, "rotation": 103.82, "color": "e0da19ff" },
|
||||
{
|
||||
"name": "front_shin",
|
||||
"parent": "front_thigh",
|
||||
"length": 128.76,
|
||||
"x": 78.69,
|
||||
"y": 1.6,
|
||||
"rotation": -2.21,
|
||||
"inheritScale": false,
|
||||
"color": "00ff04ff"
|
||||
},
|
||||
{ "name": "front_upper_arm", "parent": "torso", "length": 69.45, "x": 103.75, "y": 19.32, "rotation": 168.37, "color": "00ff04ff" },
|
||||
{ "name": "neck", "parent": "torso", "length": 25.45, "x": 127.49, "y": -0.3, "rotation": -31.53, "color": "e0da19ff" },
|
||||
{ "name": "rear_shin", "parent": "rear_thigh", "length": 121.87, "x": 86.1, "y": -1.32, "rotation": -19.83, "color": "ff000dff" },
|
||||
{ "name": "rear_upper_arm", "parent": "torso", "length": 51.93, "x": 92.35, "y": -19.22, "rotation": -169.55, "color": "ff000dff" },
|
||||
{ "name": "torso", "parent": "hip", "length": 127.55, "rotation": 103.82, "x": -1.61, "y": 4.9, "color": "e0da19ff" },
|
||||
{ "name": "front_upper_arm", "parent": "torso", "length": 69.45, "rotation": 168.37, "x": 103.75, "y": 19.32, "color": "00ff04ff" },
|
||||
{
|
||||
"name": "front_bracer",
|
||||
"parent": "front_upper_arm",
|
||||
"length": 40.57,
|
||||
"rotation": 18.29,
|
||||
"x": 68.8,
|
||||
"y": -0.68,
|
||||
"rotation": 18.29,
|
||||
"color": "00ff04ff"
|
||||
},
|
||||
{ "name": "front_foot", "parent": "front_shin", "length": 91.34, "x": 128.75, "y": -0.33, "rotation": 77.9, "color": "00ff04ff" },
|
||||
{ "name": "head", "parent": "neck", "length": 263.57, "x": 27.66, "y": -0.25, "rotation": 23.18, "color": "e0da19ff" },
|
||||
{ "name": "rear_bracer", "parent": "rear_upper_arm", "length": 34.55, "x": 51.35, "rotation": 23.15, "color": "ff000dff" },
|
||||
{ "name": "rear_foot", "parent": "rear_shin", "length": 82.57, "x": 121.45, "y": -0.75, "rotation": 69.3, "color": "ff000dff" },
|
||||
{ "name": "front_fist", "parent": "front_bracer", "length": 65.38, "x": 40.56, "y": 0.19, "rotation": 12.43, "color": "00ff04ff" },
|
||||
{ "name": "gun", "parent": "rear_bracer", "length": 43.1, "x": 34.42, "y": -0.45, "rotation": 5.34, "color": "ff000dff" },
|
||||
{ "name": "gunTip", "parent": "gun", "x": 201.04, "y": 52.13, "rotation": 6.83, "color": "ff000dff" }
|
||||
{ "name": "front_fist", "parent": "front_bracer", "length": 65.38, "rotation": 12.43, "x": 40.56, "y": 0.19, "color": "00ff04ff" },
|
||||
{ "name": "front_thigh", "parent": "hip", "length": 74.8, "rotation": -95.51, "x": -17.45, "y": -11.64, "color": "00ff04ff" },
|
||||
{ "name": "front_shin", "parent": "front_thigh", "length": 128.76, "rotation": -2.21, "x": 78.69, "y": 1.6, "color": "00ff04ff" },
|
||||
{ "name": "front_foot", "parent": "front_shin", "length": 91.34, "rotation": 77.9, "x": 128.75, "y": -0.33, "color": "00ff04ff" },
|
||||
{ "name": "rear_upper_arm", "parent": "torso", "length": 51.93, "rotation": -169.55, "x": 92.35, "y": -19.22, "color": "ff000dff" },
|
||||
{ "name": "rear_bracer", "parent": "rear_upper_arm", "length": 34.55, "rotation": 23.15, "x": 51.35, "color": "ff000dff" },
|
||||
{ "name": "gun", "parent": "rear_bracer", "length": 43.1, "rotation": 5.34, "x": 34.42, "y": -0.45, "color": "ff000dff" },
|
||||
{ "name": "gunTip", "parent": "gun", "rotation": 6.83, "x": 201.04, "y": 52.13, "color": "ff000dff" },
|
||||
{ "name": "neck", "parent": "torso", "length": 25.45, "rotation": -31.53, "x": 127.49, "y": -0.3, "color": "e0da19ff" },
|
||||
{ "name": "head", "parent": "neck", "length": 263.57, "rotation": 23.18, "x": 27.66, "y": -0.25, "color": "e0da19ff" },
|
||||
{ "name": "rear_thigh", "parent": "hip", "length": 85.71, "rotation": -72.54, "x": 8.91, "y": -5.62, "color": "ff000dff" },
|
||||
{ "name": "rear_shin", "parent": "rear_thigh", "length": 121.87, "rotation": -19.83, "x": 86.1, "y": -1.32, "color": "ff000dff" },
|
||||
{ "name": "rear_foot", "parent": "rear_shin", "length": 82.57, "rotation": 69.3, "x": 121.45, "y": -0.75, "color": "ff000dff" }
|
||||
],
|
||||
"slots": [
|
||||
{ "name": "rear_upper_arm", "bone": "rear_upper_arm", "attachment": "rear_upper_arm" },
|
||||
@ -54,7 +46,8 @@
|
||||
{ "name": "goggles", "bone": "head", "attachment": "goggles" },
|
||||
{ "name": "front_bracer", "bone": "front_bracer", "attachment": "front_bracer" },
|
||||
{ "name": "front_fist", "bone": "front_fist", "attachment": "front_fist_closed" },
|
||||
{ "name": "muzzle", "bone": "gunTip", "additive": true }
|
||||
{ "name": "muzzle", "bone": "gunTip", "blend": "additive" },
|
||||
{ "name": "head-bb", "bone": "head" }
|
||||
],
|
||||
"skins": {
|
||||
"default": {
|
||||
@ -92,6 +85,13 @@
|
||||
"head": {
|
||||
"head": { "x": 128.95, "y": 0.29, "rotation": -70.63, "width": 271, "height": 298 }
|
||||
},
|
||||
"head-bb": {
|
||||
"head": {
|
||||
"type": "boundingbox",
|
||||
"vertexCount": 6,
|
||||
"vertices": [ -19.14, -70.3, 40.8, -118.07, 257.77, -115.61, 285.16, 57.18, 120.77, 164.95, -5.06, 76.94 ]
|
||||
}
|
||||
},
|
||||
"mouth": {
|
||||
"mouth_grind": { "x": 23.68, "y": -32.23, "rotation": -70.63, "width": 93, "height": 59 },
|
||||
"mouth_oooo": { "x": 23.68, "y": -32.23, "rotation": -70.63, "width": 93, "height": 59 },
|
||||
@ -1825,10 +1825,6 @@
|
||||
]
|
||||
},
|
||||
"muzzle": {
|
||||
"attachment": [
|
||||
{ "time": 0.1333, "name": "muzzle" },
|
||||
{ "time": 0.2666, "name": null }
|
||||
],
|
||||
"color": [
|
||||
{
|
||||
"time": 0.1333,
|
||||
@ -1841,6 +1837,10 @@
|
||||
"curve": [ 0.821, 0, 0.909, 0.89 ]
|
||||
},
|
||||
{ "time": 0.2666, "color": "ffffff00" }
|
||||
],
|
||||
"attachment": [
|
||||
{ "time": 0.1333, "name": "muzzle" },
|
||||
{ "time": 0.2666, "name": null }
|
||||
]
|
||||
}
|
||||
},
|
||||
@ -2008,7 +2008,7 @@
|
||||
]
|
||||
}
|
||||
},
|
||||
"draworder": [
|
||||
"drawOrder": [
|
||||
{
|
||||
"time": 0.6666,
|
||||
"offsets": [
|
||||
|
||||
|
Before Width: | Height: | Size: 253 KiB After Width: | Height: | Size: 593 KiB |
125
spine-cocos2d-objc/Resources/tank.atlas
Normal file
@ -0,0 +1,125 @@
|
||||
|
||||
tank.png
|
||||
size: 2048,2048
|
||||
format: RGBA8888
|
||||
filter: Linear,Linear
|
||||
repeat: none
|
||||
images/antenna
|
||||
rotate: true
|
||||
xy: 1295, 1730
|
||||
size: 22, 303
|
||||
orig: 22, 303
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
images/cannon
|
||||
rotate: true
|
||||
xy: 504, 769
|
||||
size: 931, 58
|
||||
orig: 931, 58
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
images/cannonConnector
|
||||
rotate: false
|
||||
xy: 564, 1239
|
||||
size: 112, 135
|
||||
orig: 112, 135
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
images/guntower
|
||||
rotate: false
|
||||
xy: 1295, 1754
|
||||
size: 730, 289
|
||||
orig: 730, 289
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
images/machinegun
|
||||
rotate: true
|
||||
xy: 504, 436
|
||||
size: 331, 57
|
||||
orig: 331, 57
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
images/machinegun-mount
|
||||
rotate: false
|
||||
xy: 2, 2
|
||||
size: 72, 96
|
||||
orig: 72, 96
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
images/rock
|
||||
rotate: false
|
||||
xy: 226, 358
|
||||
size: 252, 55
|
||||
orig: 252, 55
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
images/tankBottom
|
||||
rotate: true
|
||||
xy: 226, 415
|
||||
size: 1285, 276
|
||||
orig: 1285, 276
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
images/tankBottom-shadow
|
||||
rotate: false
|
||||
xy: 2, 1702
|
||||
size: 1291, 341
|
||||
orig: 1291, 341
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
images/tankTop
|
||||
rotate: true
|
||||
xy: 2, 293
|
||||
size: 1407, 222
|
||||
orig: 1407, 222
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
images/tread
|
||||
rotate: false
|
||||
xy: 226, 326
|
||||
size: 96, 30
|
||||
orig: 96, 30
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
images/tread-inside
|
||||
rotate: false
|
||||
xy: 195, 263
|
||||
size: 25, 28
|
||||
orig: 25, 28
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
images/wheel-big
|
||||
rotate: false
|
||||
xy: 2, 100
|
||||
size: 191, 191
|
||||
orig: 191, 191
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
images/wheel-big-overlay
|
||||
rotate: false
|
||||
xy: 564, 1514
|
||||
size: 186, 186
|
||||
orig: 186, 186
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
images/wheel-mid
|
||||
rotate: false
|
||||
xy: 564, 1376
|
||||
size: 136, 136
|
||||
orig: 136, 136
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
images/wheel-mid-overlay
|
||||
rotate: false
|
||||
xy: 752, 1564
|
||||
size: 136, 136
|
||||
orig: 136, 136
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
images/wheel-small
|
||||
rotate: false
|
||||
xy: 890, 1629
|
||||
size: 71, 71
|
||||
orig: 71, 71
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
1899
spine-cocos2d-objc/Resources/tank.json
Normal file
BIN
spine-cocos2d-objc/Resources/tank.png
Normal file
|
After Width: | Height: | Size: 1.3 MiB |
@ -30,7 +30,7 @@
|
||||
*****************************************************************************/
|
||||
|
||||
#import "GoblinsExample.h"
|
||||
#import "SpineboyExample.h"
|
||||
#import "RaptorExample.h"
|
||||
|
||||
@implementation GoblinsExample
|
||||
|
||||
@ -65,7 +65,7 @@
|
||||
else if (skeletonNode.timeScale == 1)
|
||||
skeletonNode.timeScale = 0.3f;
|
||||
else
|
||||
[[CCDirector sharedDirector] replaceScene:[SpineboyExample scene]];
|
||||
[[CCDirector sharedDirector] replaceScene:[RaptorExample scene]];
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
41
spine-cocos2d-objc/example/RaptorExample.h
Normal file
@ -0,0 +1,41 @@
|
||||
/******************************************************************************
|
||||
* Spine Runtimes Software License
|
||||
* Version 2.3
|
||||
*
|
||||
* Copyright (c) 2013-2015, Esoteric Software
|
||||
* All rights reserved.
|
||||
*
|
||||
* You are granted a perpetual, non-exclusive, non-sublicensable and
|
||||
* non-transferable license to use, install, execute and perform the Spine
|
||||
* Runtimes Software (the "Software") and derivative works solely for personal
|
||||
* or internal use. Without the written permission of Esoteric Software (see
|
||||
* Section 2 of the Spine Software License Agreement), you may not (a) modify,
|
||||
* translate, adapt or otherwise create derivative works, improvements of the
|
||||
* Software or develop new applications using the Software or (b) remove,
|
||||
* delete, alter or obscure any trademarks or any copyright, trademark, patent
|
||||
* or other intellectual property or proprietary rights notices on or in the
|
||||
* Software, including any copy thereof. Redistributions in binary or source
|
||||
* form must include this license and terms.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR
|
||||
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
|
||||
* EVENT SHALL ESOTERIC SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
||||
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*****************************************************************************/
|
||||
|
||||
#import "cocos2d.h"
|
||||
#import <spine/spine-cocos2d-objc.h>
|
||||
|
||||
@interface RaptorExample : CCNode {
|
||||
SkeletonAnimation* skeletonNode;
|
||||
}
|
||||
|
||||
+ (CCScene*) scene;
|
||||
|
||||
@end
|
||||
71
spine-cocos2d-objc/example/RaptorExample.m
Normal file
@ -0,0 +1,71 @@
|
||||
/******************************************************************************
|
||||
* Spine Runtimes Software License
|
||||
* Version 2.3
|
||||
*
|
||||
* Copyright (c) 2013-2015, Esoteric Software
|
||||
* All rights reserved.
|
||||
*
|
||||
* You are granted a perpetual, non-exclusive, non-sublicensable and
|
||||
* non-transferable license to use, install, execute and perform the Spine
|
||||
* Runtimes Software (the "Software") and derivative works solely for personal
|
||||
* or internal use. Without the written permission of Esoteric Software (see
|
||||
* Section 2 of the Spine Software License Agreement), you may not (a) modify,
|
||||
* translate, adapt or otherwise create derivative works, improvements of the
|
||||
* Software or develop new applications using the Software or (b) remove,
|
||||
* delete, alter or obscure any trademarks or any copyright, trademark, patent
|
||||
* or other intellectual property or proprietary rights notices on or in the
|
||||
* Software, including any copy thereof. Redistributions in binary or source
|
||||
* form must include this license and terms.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR
|
||||
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
|
||||
* EVENT SHALL ESOTERIC SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
||||
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*****************************************************************************/
|
||||
|
||||
#import "RaptorExample.h"
|
||||
#import "TankExample.h"
|
||||
|
||||
@implementation RaptorExample
|
||||
|
||||
+ (CCScene*) scene {
|
||||
CCScene *scene = [CCScene node];
|
||||
[scene addChild:[RaptorExample node]];
|
||||
return scene;
|
||||
}
|
||||
|
||||
-(id) init {
|
||||
self = [super init];
|
||||
if (!self) return nil;
|
||||
|
||||
skeletonNode = [SkeletonAnimation skeletonWithFile:@"raptor.json" atlasFile:@"raptor.atlas" scale:0.3f];
|
||||
[skeletonNode setAnimationForTrack:0 name:@"walk" loop:YES];
|
||||
|
||||
CGSize windowSize = [[CCDirector sharedDirector] viewSize];
|
||||
[skeletonNode setPosition:ccp(windowSize.width / 2, 20)];
|
||||
[self addChild:skeletonNode];
|
||||
|
||||
self.userInteractionEnabled = YES;
|
||||
self.contentSize = windowSize;
|
||||
|
||||
return self;
|
||||
}
|
||||
|
||||
#if ( TARGET_OS_IPHONE || TARGET_IPHONE_SIMULATOR )
|
||||
- (void)touchBegan:(UITouch *)touch withEvent:(UIEvent *)event {
|
||||
if (!skeletonNode.debugBones)
|
||||
skeletonNode.debugBones = true;
|
||||
else if (skeletonNode.timeScale == 1)
|
||||
skeletonNode.timeScale = 0.3f;
|
||||
else
|
||||
[[CCDirector sharedDirector] replaceScene:[TankExample scene]];
|
||||
}
|
||||
#endif
|
||||
|
||||
@end
|
||||
41
spine-cocos2d-objc/example/TankExample.h
Normal file
@ -0,0 +1,41 @@
|
||||
/******************************************************************************
|
||||
* Spine Runtimes Software License
|
||||
* Version 2.3
|
||||
*
|
||||
* Copyright (c) 2013-2015, Esoteric Software
|
||||
* All rights reserved.
|
||||
*
|
||||
* You are granted a perpetual, non-exclusive, non-sublicensable and
|
||||
* non-transferable license to use, install, execute and perform the Spine
|
||||
* Runtimes Software (the "Software") and derivative works solely for personal
|
||||
* or internal use. Without the written permission of Esoteric Software (see
|
||||
* Section 2 of the Spine Software License Agreement), you may not (a) modify,
|
||||
* translate, adapt or otherwise create derivative works, improvements of the
|
||||
* Software or develop new applications using the Software or (b) remove,
|
||||
* delete, alter or obscure any trademarks or any copyright, trademark, patent
|
||||
* or other intellectual property or proprietary rights notices on or in the
|
||||
* Software, including any copy thereof. Redistributions in binary or source
|
||||
* form must include this license and terms.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR
|
||||
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
|
||||
* EVENT SHALL ESOTERIC SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
||||
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*****************************************************************************/
|
||||
|
||||
#import "cocos2d.h"
|
||||
#import <spine/spine-cocos2d-objc.h>
|
||||
|
||||
@interface TankExample : CCNode {
|
||||
SkeletonAnimation* skeletonNode;
|
||||
}
|
||||
|
||||
+ (CCScene*) scene;
|
||||
|
||||
@end
|
||||
71
spine-cocos2d-objc/example/TankExample.m
Normal file
@ -0,0 +1,71 @@
|
||||
/******************************************************************************
|
||||
* Spine Runtimes Software License
|
||||
* Version 2.3
|
||||
*
|
||||
* Copyright (c) 2013-2015, Esoteric Software
|
||||
* All rights reserved.
|
||||
*
|
||||
* You are granted a perpetual, non-exclusive, non-sublicensable and
|
||||
* non-transferable license to use, install, execute and perform the Spine
|
||||
* Runtimes Software (the "Software") and derivative works solely for personal
|
||||
* or internal use. Without the written permission of Esoteric Software (see
|
||||
* Section 2 of the Spine Software License Agreement), you may not (a) modify,
|
||||
* translate, adapt or otherwise create derivative works, improvements of the
|
||||
* Software or develop new applications using the Software or (b) remove,
|
||||
* delete, alter or obscure any trademarks or any copyright, trademark, patent
|
||||
* or other intellectual property or proprietary rights notices on or in the
|
||||
* Software, including any copy thereof. Redistributions in binary or source
|
||||
* form must include this license and terms.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR
|
||||
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
|
||||
* EVENT SHALL ESOTERIC SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
||||
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*****************************************************************************/
|
||||
|
||||
#import "TankExample.h"
|
||||
#import "SpineboyExample.h"
|
||||
|
||||
@implementation TankExample
|
||||
|
||||
+ (CCScene*) scene {
|
||||
CCScene *scene = [CCScene node];
|
||||
[scene addChild:[TankExample node]];
|
||||
return scene;
|
||||
}
|
||||
|
||||
-(id) init {
|
||||
self = [super init];
|
||||
if (!self) return nil;
|
||||
|
||||
skeletonNode = [SkeletonAnimation skeletonWithFile:@"tank.json" atlasFile:@"tank.atlas" scale:0.2f];
|
||||
[skeletonNode setAnimationForTrack:0 name:@"drive" loop:YES];
|
||||
|
||||
CGSize windowSize = [[CCDirector sharedDirector] viewSize];
|
||||
[skeletonNode setPosition:ccp(windowSize.width / 2, 20)];
|
||||
[self addChild:skeletonNode];
|
||||
|
||||
self.userInteractionEnabled = YES;
|
||||
self.contentSize = windowSize;
|
||||
|
||||
return self;
|
||||
}
|
||||
|
||||
#if ( TARGET_OS_IPHONE || TARGET_IPHONE_SIMULATOR )
|
||||
- (void)touchBegan:(UITouch *)touch withEvent:(UIEvent *)event {
|
||||
if (!skeletonNode.debugBones)
|
||||
skeletonNode.debugBones = true;
|
||||
else if (skeletonNode.timeScale == 1)
|
||||
skeletonNode.timeScale = 0.3f;
|
||||
else
|
||||
[[CCDirector sharedDirector] replaceScene:[SpineboyExample scene]];
|
||||
}
|
||||
#endif
|
||||
|
||||
@end
|
||||
@ -7,11 +7,6 @@
|
||||
objects = {
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
431FF7F31C735D8D00D52DF2 /* TransformConstraint.c in Sources */ = {isa = PBXBuildFile; fileRef = 431FF7F01C735D8D00D52DF2 /* TransformConstraint.c */; };
|
||||
431FF7F41C735D8D00D52DF2 /* TransformConstraintData.c in Sources */ = {isa = PBXBuildFile; fileRef = 431FF7F11C735D8D00D52DF2 /* TransformConstraintData.c */; };
|
||||
431FF7F51C735D8D00D52DF2 /* WeightedMeshAttachment.c in Sources */ = {isa = PBXBuildFile; fileRef = 431FF7F21C735D8D00D52DF2 /* WeightedMeshAttachment.c */; };
|
||||
43B7CC0919DC4ACD0031321C /* IkConstraint.c in Sources */ = {isa = PBXBuildFile; fileRef = 43B7CC0719DC4ACD0031321C /* IkConstraint.c */; };
|
||||
43B7CC0A19DC4ACD0031321C /* IkConstraintData.c in Sources */ = {isa = PBXBuildFile; fileRef = 43B7CC0819DC4ACD0031321C /* IkConstraintData.c */; };
|
||||
43C3282F170B0C19004A9460 /* spine-cocos2d-objc.m in Sources */ = {isa = PBXBuildFile; fileRef = 43C3282D170B0C19004A9460 /* spine-cocos2d-objc.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
|
||||
43C3286C170B0DA6004A9460 /* spineboy.json in Resources */ = {isa = PBXBuildFile; fileRef = 43C32868170B0DA6004A9460 /* spineboy.json */; };
|
||||
43C3286E170B0DA6004A9460 /* spineboy.atlas in Resources */ = {isa = PBXBuildFile; fileRef = 43C3286A170B0DA6004A9460 /* spineboy.atlas */; };
|
||||
@ -33,34 +28,50 @@
|
||||
43F7010F1927FBC700CA4038 /* goblins-mesh.atlas in Resources */ = {isa = PBXBuildFile; fileRef = 43F7010C1927FBC700CA4038 /* goblins-mesh.atlas */; };
|
||||
43F701101927FBC700CA4038 /* goblins-mesh.json in Resources */ = {isa = PBXBuildFile; fileRef = 43F7010D1927FBC700CA4038 /* goblins-mesh.json */; };
|
||||
43F701111927FBC700CA4038 /* goblins-mesh.png in Resources */ = {isa = PBXBuildFile; fileRef = 43F7010E1927FBC700CA4038 /* goblins-mesh.png */; };
|
||||
43F7FF511927F91900CA4038 /* Animation.c in Sources */ = {isa = PBXBuildFile; fileRef = 43F7FF381927F91900CA4038 /* Animation.c */; };
|
||||
43F7FF521927F91900CA4038 /* AnimationState.c in Sources */ = {isa = PBXBuildFile; fileRef = 43F7FF391927F91900CA4038 /* AnimationState.c */; };
|
||||
43F7FF531927F91900CA4038 /* AnimationStateData.c in Sources */ = {isa = PBXBuildFile; fileRef = 43F7FF3A1927F91900CA4038 /* AnimationStateData.c */; };
|
||||
43F7FF541927F91900CA4038 /* Atlas.c in Sources */ = {isa = PBXBuildFile; fileRef = 43F7FF3B1927F91900CA4038 /* Atlas.c */; };
|
||||
43F7FF551927F91900CA4038 /* AtlasAttachmentLoader.c in Sources */ = {isa = PBXBuildFile; fileRef = 43F7FF3C1927F91900CA4038 /* AtlasAttachmentLoader.c */; };
|
||||
43F7FF561927F91900CA4038 /* Attachment.c in Sources */ = {isa = PBXBuildFile; fileRef = 43F7FF3D1927F91900CA4038 /* Attachment.c */; };
|
||||
43F7FF571927F91900CA4038 /* AttachmentLoader.c in Sources */ = {isa = PBXBuildFile; fileRef = 43F7FF3E1927F91900CA4038 /* AttachmentLoader.c */; };
|
||||
43F7FF581927F91900CA4038 /* Bone.c in Sources */ = {isa = PBXBuildFile; fileRef = 43F7FF3F1927F91900CA4038 /* Bone.c */; };
|
||||
43F7FF591927F91900CA4038 /* BoneData.c in Sources */ = {isa = PBXBuildFile; fileRef = 43F7FF401927F91900CA4038 /* BoneData.c */; };
|
||||
43F7FF5A1927F91900CA4038 /* BoundingBoxAttachment.c in Sources */ = {isa = PBXBuildFile; fileRef = 43F7FF411927F91900CA4038 /* BoundingBoxAttachment.c */; };
|
||||
43F7FF5B1927F91900CA4038 /* Event.c in Sources */ = {isa = PBXBuildFile; fileRef = 43F7FF421927F91900CA4038 /* Event.c */; };
|
||||
43F7FF5C1927F91900CA4038 /* EventData.c in Sources */ = {isa = PBXBuildFile; fileRef = 43F7FF431927F91900CA4038 /* EventData.c */; };
|
||||
43F7FF5D1927F91900CA4038 /* extension.c in Sources */ = {isa = PBXBuildFile; fileRef = 43F7FF441927F91900CA4038 /* extension.c */; };
|
||||
43F7FF5E1927F91900CA4038 /* Json.c in Sources */ = {isa = PBXBuildFile; fileRef = 43F7FF451927F91900CA4038 /* Json.c */; };
|
||||
43F7FF5F1927F91900CA4038 /* MeshAttachment.c in Sources */ = {isa = PBXBuildFile; fileRef = 43F7FF471927F91900CA4038 /* MeshAttachment.c */; };
|
||||
43F7FF601927F91900CA4038 /* RegionAttachment.c in Sources */ = {isa = PBXBuildFile; fileRef = 43F7FF481927F91900CA4038 /* RegionAttachment.c */; };
|
||||
43F7FF611927F91900CA4038 /* Skeleton.c in Sources */ = {isa = PBXBuildFile; fileRef = 43F7FF491927F91900CA4038 /* Skeleton.c */; };
|
||||
43F7FF621927F91900CA4038 /* SkeletonBounds.c in Sources */ = {isa = PBXBuildFile; fileRef = 43F7FF4A1927F91900CA4038 /* SkeletonBounds.c */; };
|
||||
43F7FF631927F91900CA4038 /* SkeletonData.c in Sources */ = {isa = PBXBuildFile; fileRef = 43F7FF4B1927F91900CA4038 /* SkeletonData.c */; };
|
||||
43F7FF641927F91900CA4038 /* SkeletonJson.c in Sources */ = {isa = PBXBuildFile; fileRef = 43F7FF4C1927F91900CA4038 /* SkeletonJson.c */; };
|
||||
43F7FF651927F91900CA4038 /* Skin.c in Sources */ = {isa = PBXBuildFile; fileRef = 43F7FF4D1927F91900CA4038 /* Skin.c */; };
|
||||
43F7FF671927F91900CA4038 /* Slot.c in Sources */ = {isa = PBXBuildFile; fileRef = 43F7FF4F1927F91900CA4038 /* Slot.c */; };
|
||||
43F7FF681927F91900CA4038 /* SlotData.c in Sources */ = {isa = PBXBuildFile; fileRef = 43F7FF501927F91900CA4038 /* SlotData.c */; };
|
||||
43F7FF881927F94800CA4038 /* SkeletonAnimation.m in Sources */ = {isa = PBXBuildFile; fileRef = 43F7FF841927F94800CA4038 /* SkeletonAnimation.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
|
||||
43F7FF891927F94800CA4038 /* SkeletonRenderer.m in Sources */ = {isa = PBXBuildFile; fileRef = 43F7FF861927F94800CA4038 /* SkeletonRenderer.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
|
||||
43F7FF8E1927F96700CA4038 /* GoblinsExample.m in Sources */ = {isa = PBXBuildFile; fileRef = 43F7FF8B1927F96700CA4038 /* GoblinsExample.m */; };
|
||||
43F7FF8F1927F96700CA4038 /* SpineboyExample.m in Sources */ = {isa = PBXBuildFile; fileRef = 43F7FF8D1927F96700CA4038 /* SpineboyExample.m */; };
|
||||
652107961895250000B1FF07 /* CoreText.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 652107951895250000B1FF07 /* CoreText.framework */; };
|
||||
76F5BD7D1D2BDCB5005917E5 /* Animation.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD5D1D2BDCB5005917E5 /* Animation.c */; };
|
||||
76F5BD7E1D2BDCB5005917E5 /* AnimationState.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD5E1D2BDCB5005917E5 /* AnimationState.c */; };
|
||||
76F5BD7F1D2BDCB5005917E5 /* AnimationStateData.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD5F1D2BDCB5005917E5 /* AnimationStateData.c */; };
|
||||
76F5BD801D2BDCB5005917E5 /* Atlas.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD601D2BDCB5005917E5 /* Atlas.c */; };
|
||||
76F5BD811D2BDCB5005917E5 /* AtlasAttachmentLoader.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD611D2BDCB5005917E5 /* AtlasAttachmentLoader.c */; };
|
||||
76F5BD821D2BDCB5005917E5 /* Attachment.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD621D2BDCB5005917E5 /* Attachment.c */; };
|
||||
76F5BD831D2BDCB5005917E5 /* AttachmentLoader.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD631D2BDCB5005917E5 /* AttachmentLoader.c */; };
|
||||
76F5BD841D2BDCB5005917E5 /* Bone.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD641D2BDCB5005917E5 /* Bone.c */; };
|
||||
76F5BD851D2BDCB5005917E5 /* BoneData.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD651D2BDCB5005917E5 /* BoneData.c */; };
|
||||
76F5BD861D2BDCB5005917E5 /* BoundingBoxAttachment.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD661D2BDCB5005917E5 /* BoundingBoxAttachment.c */; };
|
||||
76F5BD871D2BDCB5005917E5 /* Event.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD671D2BDCB5005917E5 /* Event.c */; };
|
||||
76F5BD881D2BDCB5005917E5 /* EventData.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD681D2BDCB5005917E5 /* EventData.c */; };
|
||||
76F5BD891D2BDCB5005917E5 /* extension.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD691D2BDCB5005917E5 /* extension.c */; };
|
||||
76F5BD8A1D2BDCB5005917E5 /* IkConstraint.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD6A1D2BDCB5005917E5 /* IkConstraint.c */; };
|
||||
76F5BD8B1D2BDCB5005917E5 /* IkConstraintData.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD6B1D2BDCB5005917E5 /* IkConstraintData.c */; };
|
||||
76F5BD8C1D2BDCB5005917E5 /* Json.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD6C1D2BDCB5005917E5 /* Json.c */; };
|
||||
76F5BD8D1D2BDCB5005917E5 /* MeshAttachment.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD6E1D2BDCB5005917E5 /* MeshAttachment.c */; };
|
||||
76F5BD8E1D2BDCB5005917E5 /* PathAttachment.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD6F1D2BDCB5005917E5 /* PathAttachment.c */; };
|
||||
76F5BD8F1D2BDCB5005917E5 /* PathConstraint.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD701D2BDCB5005917E5 /* PathConstraint.c */; };
|
||||
76F5BD901D2BDCB5005917E5 /* PathConstraintData.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD711D2BDCB5005917E5 /* PathConstraintData.c */; };
|
||||
76F5BD911D2BDCB5005917E5 /* RegionAttachment.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD721D2BDCB5005917E5 /* RegionAttachment.c */; };
|
||||
76F5BD921D2BDCB5005917E5 /* Skeleton.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD731D2BDCB5005917E5 /* Skeleton.c */; };
|
||||
76F5BD931D2BDCB5005917E5 /* SkeletonBounds.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD741D2BDCB5005917E5 /* SkeletonBounds.c */; };
|
||||
76F5BD941D2BDCB5005917E5 /* SkeletonData.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD751D2BDCB5005917E5 /* SkeletonData.c */; };
|
||||
76F5BD951D2BDCB5005917E5 /* SkeletonJson.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD761D2BDCB5005917E5 /* SkeletonJson.c */; };
|
||||
76F5BD961D2BDCB5005917E5 /* Skin.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD771D2BDCB5005917E5 /* Skin.c */; };
|
||||
76F5BD971D2BDCB5005917E5 /* Slot.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD781D2BDCB5005917E5 /* Slot.c */; };
|
||||
76F5BD981D2BDCB5005917E5 /* SlotData.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD791D2BDCB5005917E5 /* SlotData.c */; };
|
||||
76F5BD991D2BDCB5005917E5 /* TransformConstraint.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD7A1D2BDCB5005917E5 /* TransformConstraint.c */; };
|
||||
76F5BD9A1D2BDCB5005917E5 /* TransformConstraintData.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD7B1D2BDCB5005917E5 /* TransformConstraintData.c */; };
|
||||
76F5BD9B1D2BDCB5005917E5 /* VertexAttachment.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD7C1D2BDCB5005917E5 /* VertexAttachment.c */; };
|
||||
76F5BDA21D2BDE1C005917E5 /* raptor.atlas in Resources */ = {isa = PBXBuildFile; fileRef = 76F5BD9C1D2BDE1C005917E5 /* raptor.atlas */; };
|
||||
76F5BDA31D2BDE1C005917E5 /* raptor.json in Resources */ = {isa = PBXBuildFile; fileRef = 76F5BD9D1D2BDE1C005917E5 /* raptor.json */; };
|
||||
76F5BDA41D2BDE1C005917E5 /* raptor.png in Resources */ = {isa = PBXBuildFile; fileRef = 76F5BD9E1D2BDE1C005917E5 /* raptor.png */; };
|
||||
76F5BDA51D2BDE1C005917E5 /* tank.atlas in Resources */ = {isa = PBXBuildFile; fileRef = 76F5BD9F1D2BDE1C005917E5 /* tank.atlas */; };
|
||||
76F5BDA61D2BDE1C005917E5 /* tank.json in Resources */ = {isa = PBXBuildFile; fileRef = 76F5BDA01D2BDE1C005917E5 /* tank.json */; };
|
||||
76F5BDA71D2BDE1C005917E5 /* tank.png in Resources */ = {isa = PBXBuildFile; fileRef = 76F5BDA11D2BDE1C005917E5 /* tank.png */; };
|
||||
76F5BDAA1D2BDE67005917E5 /* RaptorExample.m in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BDA91D2BDE67005917E5 /* RaptorExample.m */; };
|
||||
76F5BDAD1D2BDFA2005917E5 /* TankExample.m in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BDAC1D2BDFA2005917E5 /* TankExample.m */; };
|
||||
83F1A0EF1986955A001F6B44 /* GLKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 83F1A0EE1986955A001F6B44 /* GLKit.framework */; };
|
||||
9A5D2499170A94DA0030D4DD /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9A5D2498170A94DA0030D4DD /* QuartzCore.framework */; };
|
||||
9A5D249B170A94DA0030D4DD /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9A5D249A170A94DA0030D4DD /* OpenGLES.framework */; };
|
||||
@ -112,16 +123,6 @@
|
||||
/* End PBXContainerItemProxy section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
431FF7ED1C735D7A00D52DF2 /* TransformConstraint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TransformConstraint.h; path = "../spine-c/include/spine/TransformConstraint.h"; sourceTree = "<group>"; };
|
||||
431FF7EE1C735D7A00D52DF2 /* TransformConstraintData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TransformConstraintData.h; path = "../spine-c/include/spine/TransformConstraintData.h"; sourceTree = "<group>"; };
|
||||
431FF7EF1C735D7A00D52DF2 /* WeightedMeshAttachment.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WeightedMeshAttachment.h; path = "../spine-c/include/spine/WeightedMeshAttachment.h"; sourceTree = "<group>"; };
|
||||
431FF7F01C735D8D00D52DF2 /* TransformConstraint.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = TransformConstraint.c; path = "../spine-c/src/spine/TransformConstraint.c"; sourceTree = "<group>"; };
|
||||
431FF7F11C735D8D00D52DF2 /* TransformConstraintData.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = TransformConstraintData.c; path = "../spine-c/src/spine/TransformConstraintData.c"; sourceTree = "<group>"; };
|
||||
431FF7F21C735D8D00D52DF2 /* WeightedMeshAttachment.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = WeightedMeshAttachment.c; path = "../spine-c/src/spine/WeightedMeshAttachment.c"; sourceTree = "<group>"; };
|
||||
43B7CC0719DC4ACD0031321C /* IkConstraint.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = IkConstraint.c; path = "../spine-c/src/spine/IkConstraint.c"; sourceTree = "<group>"; };
|
||||
43B7CC0819DC4ACD0031321C /* IkConstraintData.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = IkConstraintData.c; path = "../spine-c/src/spine/IkConstraintData.c"; sourceTree = "<group>"; };
|
||||
43B7CC0D19DC4AE30031321C /* IkConstraint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = IkConstraint.h; path = "../spine-c/include/spine/IkConstraint.h"; sourceTree = "<group>"; };
|
||||
43B7CC0E19DC4AE30031321C /* IkConstraintData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = IkConstraintData.h; path = "../spine-c/include/spine/IkConstraintData.h"; sourceTree = "<group>"; };
|
||||
43C3282D170B0C19004A9460 /* spine-cocos2d-objc.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = "spine-cocos2d-objc.m"; path = "src/spine/spine-cocos2d-objc.m"; sourceTree = "<group>"; };
|
||||
43C3282E170B0C19004A9460 /* spine-cocos2d-objc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "spine-cocos2d-objc.h"; path = "src/spine/spine-cocos2d-objc.h"; sourceTree = "<group>"; };
|
||||
43C32868170B0DA6004A9460 /* spineboy.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; name = spineboy.json; path = Resources/spineboy.json; sourceTree = "<group>"; };
|
||||
@ -146,53 +147,6 @@
|
||||
43F7010C1927FBC700CA4038 /* goblins-mesh.atlas */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = "goblins-mesh.atlas"; path = "Resources/goblins-mesh.atlas"; sourceTree = "<group>"; };
|
||||
43F7010D1927FBC700CA4038 /* goblins-mesh.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; name = "goblins-mesh.json"; path = "Resources/goblins-mesh.json"; sourceTree = "<group>"; };
|
||||
43F7010E1927FBC700CA4038 /* goblins-mesh.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "goblins-mesh.png"; path = "Resources/goblins-mesh.png"; sourceTree = "<group>"; };
|
||||
43F7FF381927F91900CA4038 /* Animation.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Animation.c; path = "../spine-c/src/spine/Animation.c"; sourceTree = "<group>"; };
|
||||
43F7FF391927F91900CA4038 /* AnimationState.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = AnimationState.c; path = "../spine-c/src/spine/AnimationState.c"; sourceTree = "<group>"; };
|
||||
43F7FF3A1927F91900CA4038 /* AnimationStateData.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = AnimationStateData.c; path = "../spine-c/src/spine/AnimationStateData.c"; sourceTree = "<group>"; };
|
||||
43F7FF3B1927F91900CA4038 /* Atlas.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Atlas.c; path = "../spine-c/src/spine/Atlas.c"; sourceTree = "<group>"; };
|
||||
43F7FF3C1927F91900CA4038 /* AtlasAttachmentLoader.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = AtlasAttachmentLoader.c; path = "../spine-c/src/spine/AtlasAttachmentLoader.c"; sourceTree = "<group>"; };
|
||||
43F7FF3D1927F91900CA4038 /* Attachment.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Attachment.c; path = "../spine-c/src/spine/Attachment.c"; sourceTree = "<group>"; };
|
||||
43F7FF3E1927F91900CA4038 /* AttachmentLoader.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = AttachmentLoader.c; path = "../spine-c/src/spine/AttachmentLoader.c"; sourceTree = "<group>"; };
|
||||
43F7FF3F1927F91900CA4038 /* Bone.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Bone.c; path = "../spine-c/src/spine/Bone.c"; sourceTree = "<group>"; };
|
||||
43F7FF401927F91900CA4038 /* BoneData.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = BoneData.c; path = "../spine-c/src/spine/BoneData.c"; sourceTree = "<group>"; };
|
||||
43F7FF411927F91900CA4038 /* BoundingBoxAttachment.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = BoundingBoxAttachment.c; path = "../spine-c/src/spine/BoundingBoxAttachment.c"; sourceTree = "<group>"; };
|
||||
43F7FF421927F91900CA4038 /* Event.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Event.c; path = "../spine-c/src/spine/Event.c"; sourceTree = "<group>"; };
|
||||
43F7FF431927F91900CA4038 /* EventData.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = EventData.c; path = "../spine-c/src/spine/EventData.c"; sourceTree = "<group>"; };
|
||||
43F7FF441927F91900CA4038 /* extension.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = extension.c; path = "../spine-c/src/spine/extension.c"; sourceTree = "<group>"; };
|
||||
43F7FF451927F91900CA4038 /* Json.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Json.c; path = "../spine-c/src/spine/Json.c"; sourceTree = "<group>"; };
|
||||
43F7FF461927F91900CA4038 /* Json.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Json.h; path = "../spine-c/src/spine/Json.h"; sourceTree = "<group>"; };
|
||||
43F7FF471927F91900CA4038 /* MeshAttachment.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = MeshAttachment.c; path = "../spine-c/src/spine/MeshAttachment.c"; sourceTree = "<group>"; };
|
||||
43F7FF481927F91900CA4038 /* RegionAttachment.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = RegionAttachment.c; path = "../spine-c/src/spine/RegionAttachment.c"; sourceTree = "<group>"; };
|
||||
43F7FF491927F91900CA4038 /* Skeleton.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Skeleton.c; path = "../spine-c/src/spine/Skeleton.c"; sourceTree = "<group>"; };
|
||||
43F7FF4A1927F91900CA4038 /* SkeletonBounds.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = SkeletonBounds.c; path = "../spine-c/src/spine/SkeletonBounds.c"; sourceTree = "<group>"; };
|
||||
43F7FF4B1927F91900CA4038 /* SkeletonData.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = SkeletonData.c; path = "../spine-c/src/spine/SkeletonData.c"; sourceTree = "<group>"; };
|
||||
43F7FF4C1927F91900CA4038 /* SkeletonJson.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = SkeletonJson.c; path = "../spine-c/src/spine/SkeletonJson.c"; sourceTree = "<group>"; };
|
||||
43F7FF4D1927F91900CA4038 /* Skin.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Skin.c; path = "../spine-c/src/spine/Skin.c"; sourceTree = "<group>"; };
|
||||
43F7FF4F1927F91900CA4038 /* Slot.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Slot.c; path = "../spine-c/src/spine/Slot.c"; sourceTree = "<group>"; };
|
||||
43F7FF501927F91900CA4038 /* SlotData.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = SlotData.c; path = "../spine-c/src/spine/SlotData.c"; sourceTree = "<group>"; };
|
||||
43F7FF691927F92500CA4038 /* Animation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Animation.h; path = "../spine-c/include/spine/Animation.h"; sourceTree = "<group>"; };
|
||||
43F7FF6A1927F92500CA4038 /* AnimationState.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AnimationState.h; path = "../spine-c/include/spine/AnimationState.h"; sourceTree = "<group>"; };
|
||||
43F7FF6B1927F92500CA4038 /* AnimationStateData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AnimationStateData.h; path = "../spine-c/include/spine/AnimationStateData.h"; sourceTree = "<group>"; };
|
||||
43F7FF6C1927F92500CA4038 /* Atlas.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Atlas.h; path = "../spine-c/include/spine/Atlas.h"; sourceTree = "<group>"; };
|
||||
43F7FF6D1927F92500CA4038 /* AtlasAttachmentLoader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AtlasAttachmentLoader.h; path = "../spine-c/include/spine/AtlasAttachmentLoader.h"; sourceTree = "<group>"; };
|
||||
43F7FF6E1927F92500CA4038 /* Attachment.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Attachment.h; path = "../spine-c/include/spine/Attachment.h"; sourceTree = "<group>"; };
|
||||
43F7FF6F1927F92500CA4038 /* AttachmentLoader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AttachmentLoader.h; path = "../spine-c/include/spine/AttachmentLoader.h"; sourceTree = "<group>"; };
|
||||
43F7FF701927F92500CA4038 /* Bone.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Bone.h; path = "../spine-c/include/spine/Bone.h"; sourceTree = "<group>"; };
|
||||
43F7FF711927F92500CA4038 /* BoneData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = BoneData.h; path = "../spine-c/include/spine/BoneData.h"; sourceTree = "<group>"; };
|
||||
43F7FF721927F92500CA4038 /* BoundingBoxAttachment.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = BoundingBoxAttachment.h; path = "../spine-c/include/spine/BoundingBoxAttachment.h"; sourceTree = "<group>"; };
|
||||
43F7FF731927F92500CA4038 /* Event.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Event.h; path = "../spine-c/include/spine/Event.h"; sourceTree = "<group>"; };
|
||||
43F7FF741927F92500CA4038 /* EventData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = EventData.h; path = "../spine-c/include/spine/EventData.h"; sourceTree = "<group>"; };
|
||||
43F7FF751927F92500CA4038 /* extension.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = extension.h; path = "../spine-c/include/spine/extension.h"; sourceTree = "<group>"; };
|
||||
43F7FF761927F92500CA4038 /* MeshAttachment.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MeshAttachment.h; path = "../spine-c/include/spine/MeshAttachment.h"; sourceTree = "<group>"; };
|
||||
43F7FF771927F92500CA4038 /* RegionAttachment.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RegionAttachment.h; path = "../spine-c/include/spine/RegionAttachment.h"; sourceTree = "<group>"; };
|
||||
43F7FF781927F92500CA4038 /* Skeleton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Skeleton.h; path = "../spine-c/include/spine/Skeleton.h"; sourceTree = "<group>"; };
|
||||
43F7FF791927F92500CA4038 /* SkeletonBounds.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkeletonBounds.h; path = "../spine-c/include/spine/SkeletonBounds.h"; sourceTree = "<group>"; };
|
||||
43F7FF7A1927F92500CA4038 /* SkeletonData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkeletonData.h; path = "../spine-c/include/spine/SkeletonData.h"; sourceTree = "<group>"; };
|
||||
43F7FF7B1927F92500CA4038 /* SkeletonJson.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkeletonJson.h; path = "../spine-c/include/spine/SkeletonJson.h"; sourceTree = "<group>"; };
|
||||
43F7FF7C1927F92500CA4038 /* Skin.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Skin.h; path = "../spine-c/include/spine/Skin.h"; sourceTree = "<group>"; };
|
||||
43F7FF7E1927F92500CA4038 /* Slot.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Slot.h; path = "../spine-c/include/spine/Slot.h"; sourceTree = "<group>"; };
|
||||
43F7FF7F1927F92500CA4038 /* SlotData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SlotData.h; path = "../spine-c/include/spine/SlotData.h"; sourceTree = "<group>"; };
|
||||
43F7FF801927F92500CA4038 /* spine.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = spine.h; path = "../spine-c/include/spine/spine.h"; sourceTree = "<group>"; };
|
||||
43F7FF831927F94800CA4038 /* SkeletonAnimation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkeletonAnimation.h; path = src/spine/SkeletonAnimation.h; sourceTree = "<group>"; };
|
||||
43F7FF841927F94800CA4038 /* SkeletonAnimation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SkeletonAnimation.m; path = src/spine/SkeletonAnimation.m; sourceTree = "<group>"; };
|
||||
43F7FF851927F94800CA4038 /* SkeletonRenderer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SkeletonRenderer.h; path = src/spine/SkeletonRenderer.h; sourceTree = "<group>"; };
|
||||
@ -202,6 +156,48 @@
|
||||
43F7FF8C1927F96700CA4038 /* SpineboyExample.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SpineboyExample.h; path = example/SpineboyExample.h; sourceTree = "<group>"; };
|
||||
43F7FF8D1927F96700CA4038 /* SpineboyExample.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SpineboyExample.m; path = example/SpineboyExample.m; sourceTree = "<group>"; };
|
||||
652107951895250000B1FF07 /* CoreText.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreText.framework; path = System/Library/Frameworks/CoreText.framework; sourceTree = SDKROOT; };
|
||||
76F5BD5D1D2BDCB5005917E5 /* Animation.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Animation.c; path = "../spine-c/src/spine/Animation.c"; sourceTree = "<group>"; };
|
||||
76F5BD5E1D2BDCB5005917E5 /* AnimationState.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = AnimationState.c; path = "../spine-c/src/spine/AnimationState.c"; sourceTree = "<group>"; };
|
||||
76F5BD5F1D2BDCB5005917E5 /* AnimationStateData.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = AnimationStateData.c; path = "../spine-c/src/spine/AnimationStateData.c"; sourceTree = "<group>"; };
|
||||
76F5BD601D2BDCB5005917E5 /* Atlas.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Atlas.c; path = "../spine-c/src/spine/Atlas.c"; sourceTree = "<group>"; };
|
||||
76F5BD611D2BDCB5005917E5 /* AtlasAttachmentLoader.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = AtlasAttachmentLoader.c; path = "../spine-c/src/spine/AtlasAttachmentLoader.c"; sourceTree = "<group>"; };
|
||||
76F5BD621D2BDCB5005917E5 /* Attachment.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Attachment.c; path = "../spine-c/src/spine/Attachment.c"; sourceTree = "<group>"; };
|
||||
76F5BD631D2BDCB5005917E5 /* AttachmentLoader.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = AttachmentLoader.c; path = "../spine-c/src/spine/AttachmentLoader.c"; sourceTree = "<group>"; };
|
||||
76F5BD641D2BDCB5005917E5 /* Bone.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Bone.c; path = "../spine-c/src/spine/Bone.c"; sourceTree = "<group>"; };
|
||||
76F5BD651D2BDCB5005917E5 /* BoneData.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = BoneData.c; path = "../spine-c/src/spine/BoneData.c"; sourceTree = "<group>"; };
|
||||
76F5BD661D2BDCB5005917E5 /* BoundingBoxAttachment.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = BoundingBoxAttachment.c; path = "../spine-c/src/spine/BoundingBoxAttachment.c"; sourceTree = "<group>"; };
|
||||
76F5BD671D2BDCB5005917E5 /* Event.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Event.c; path = "../spine-c/src/spine/Event.c"; sourceTree = "<group>"; };
|
||||
76F5BD681D2BDCB5005917E5 /* EventData.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = EventData.c; path = "../spine-c/src/spine/EventData.c"; sourceTree = "<group>"; };
|
||||
76F5BD691D2BDCB5005917E5 /* extension.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = extension.c; path = "../spine-c/src/spine/extension.c"; sourceTree = "<group>"; };
|
||||
76F5BD6A1D2BDCB5005917E5 /* IkConstraint.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = IkConstraint.c; path = "../spine-c/src/spine/IkConstraint.c"; sourceTree = "<group>"; };
|
||||
76F5BD6B1D2BDCB5005917E5 /* IkConstraintData.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = IkConstraintData.c; path = "../spine-c/src/spine/IkConstraintData.c"; sourceTree = "<group>"; };
|
||||
76F5BD6C1D2BDCB5005917E5 /* Json.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Json.c; path = "../spine-c/src/spine/Json.c"; sourceTree = "<group>"; };
|
||||
76F5BD6D1D2BDCB5005917E5 /* Json.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Json.h; path = "../spine-c/src/spine/Json.h"; sourceTree = "<group>"; };
|
||||
76F5BD6E1D2BDCB5005917E5 /* MeshAttachment.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = MeshAttachment.c; path = "../spine-c/src/spine/MeshAttachment.c"; sourceTree = "<group>"; };
|
||||
76F5BD6F1D2BDCB5005917E5 /* PathAttachment.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = PathAttachment.c; path = "../spine-c/src/spine/PathAttachment.c"; sourceTree = "<group>"; };
|
||||
76F5BD701D2BDCB5005917E5 /* PathConstraint.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = PathConstraint.c; path = "../spine-c/src/spine/PathConstraint.c"; sourceTree = "<group>"; };
|
||||
76F5BD711D2BDCB5005917E5 /* PathConstraintData.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = PathConstraintData.c; path = "../spine-c/src/spine/PathConstraintData.c"; sourceTree = "<group>"; };
|
||||
76F5BD721D2BDCB5005917E5 /* RegionAttachment.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = RegionAttachment.c; path = "../spine-c/src/spine/RegionAttachment.c"; sourceTree = "<group>"; };
|
||||
76F5BD731D2BDCB5005917E5 /* Skeleton.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Skeleton.c; path = "../spine-c/src/spine/Skeleton.c"; sourceTree = "<group>"; };
|
||||
76F5BD741D2BDCB5005917E5 /* SkeletonBounds.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = SkeletonBounds.c; path = "../spine-c/src/spine/SkeletonBounds.c"; sourceTree = "<group>"; };
|
||||
76F5BD751D2BDCB5005917E5 /* SkeletonData.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = SkeletonData.c; path = "../spine-c/src/spine/SkeletonData.c"; sourceTree = "<group>"; };
|
||||
76F5BD761D2BDCB5005917E5 /* SkeletonJson.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = SkeletonJson.c; path = "../spine-c/src/spine/SkeletonJson.c"; sourceTree = "<group>"; };
|
||||
76F5BD771D2BDCB5005917E5 /* Skin.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Skin.c; path = "../spine-c/src/spine/Skin.c"; sourceTree = "<group>"; };
|
||||
76F5BD781D2BDCB5005917E5 /* Slot.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Slot.c; path = "../spine-c/src/spine/Slot.c"; sourceTree = "<group>"; };
|
||||
76F5BD791D2BDCB5005917E5 /* SlotData.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = SlotData.c; path = "../spine-c/src/spine/SlotData.c"; sourceTree = "<group>"; };
|
||||
76F5BD7A1D2BDCB5005917E5 /* TransformConstraint.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = TransformConstraint.c; path = "../spine-c/src/spine/TransformConstraint.c"; sourceTree = "<group>"; };
|
||||
76F5BD7B1D2BDCB5005917E5 /* TransformConstraintData.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = TransformConstraintData.c; path = "../spine-c/src/spine/TransformConstraintData.c"; sourceTree = "<group>"; };
|
||||
76F5BD7C1D2BDCB5005917E5 /* VertexAttachment.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = VertexAttachment.c; path = "../spine-c/src/spine/VertexAttachment.c"; sourceTree = "<group>"; };
|
||||
76F5BD9C1D2BDE1C005917E5 /* raptor.atlas */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = raptor.atlas; path = Resources/raptor.atlas; sourceTree = "<group>"; };
|
||||
76F5BD9D1D2BDE1C005917E5 /* raptor.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; name = raptor.json; path = Resources/raptor.json; sourceTree = "<group>"; };
|
||||
76F5BD9E1D2BDE1C005917E5 /* raptor.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = raptor.png; path = Resources/raptor.png; sourceTree = "<group>"; };
|
||||
76F5BD9F1D2BDE1C005917E5 /* tank.atlas */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = tank.atlas; path = Resources/tank.atlas; sourceTree = "<group>"; };
|
||||
76F5BDA01D2BDE1C005917E5 /* tank.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; name = tank.json; path = Resources/tank.json; sourceTree = "<group>"; };
|
||||
76F5BDA11D2BDE1C005917E5 /* tank.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = tank.png; path = Resources/tank.png; sourceTree = "<group>"; };
|
||||
76F5BDA81D2BDE67005917E5 /* RaptorExample.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RaptorExample.h; path = example/RaptorExample.h; sourceTree = "<group>"; };
|
||||
76F5BDA91D2BDE67005917E5 /* RaptorExample.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = RaptorExample.m; path = example/RaptorExample.m; sourceTree = "<group>"; };
|
||||
76F5BDAB1D2BDFA2005917E5 /* TankExample.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TankExample.h; path = example/TankExample.h; sourceTree = "<group>"; };
|
||||
76F5BDAC1D2BDFA2005917E5 /* TankExample.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = TankExample.m; path = example/TankExample.m; sourceTree = "<group>"; };
|
||||
83F1A0EE1986955A001F6B44 /* GLKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GLKit.framework; path = System/Library/Frameworks/GLKit.framework; sourceTree = SDKROOT; };
|
||||
9A5D2495170A94DA0030D4DD /* SpineExample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = SpineExample.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
9A5D2498170A94DA0030D4DD /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; };
|
||||
@ -259,6 +255,10 @@
|
||||
43F7FF8D1927F96700CA4038 /* SpineboyExample.m */,
|
||||
43F7FF8A1927F96700CA4038 /* GoblinsExample.h */,
|
||||
43F7FF8B1927F96700CA4038 /* GoblinsExample.m */,
|
||||
76F5BDA81D2BDE67005917E5 /* RaptorExample.h */,
|
||||
76F5BDA91D2BDE67005917E5 /* RaptorExample.m */,
|
||||
76F5BDAB1D2BDFA2005917E5 /* TankExample.h */,
|
||||
76F5BDAC1D2BDFA2005917E5 /* TankExample.m */,
|
||||
43C32A07170B10FF004A9460 /* AppDelegate.h */,
|
||||
43C32A08170B10FF004A9460 /* AppDelegate.m */,
|
||||
43C32A05170B0F93004A9460 /* main.m */,
|
||||
@ -270,63 +270,38 @@
|
||||
43C32822170B0BC2004A9460 /* spine-c */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
43F7FF381927F91900CA4038 /* Animation.c */,
|
||||
43F7FF691927F92500CA4038 /* Animation.h */,
|
||||
43F7FF391927F91900CA4038 /* AnimationState.c */,
|
||||
43F7FF6A1927F92500CA4038 /* AnimationState.h */,
|
||||
43F7FF3A1927F91900CA4038 /* AnimationStateData.c */,
|
||||
43F7FF6B1927F92500CA4038 /* AnimationStateData.h */,
|
||||
43F7FF3B1927F91900CA4038 /* Atlas.c */,
|
||||
43F7FF6C1927F92500CA4038 /* Atlas.h */,
|
||||
43F7FF3C1927F91900CA4038 /* AtlasAttachmentLoader.c */,
|
||||
43F7FF6D1927F92500CA4038 /* AtlasAttachmentLoader.h */,
|
||||
43F7FF3D1927F91900CA4038 /* Attachment.c */,
|
||||
43F7FF6E1927F92500CA4038 /* Attachment.h */,
|
||||
43F7FF3E1927F91900CA4038 /* AttachmentLoader.c */,
|
||||
43F7FF6F1927F92500CA4038 /* AttachmentLoader.h */,
|
||||
43F7FF3F1927F91900CA4038 /* Bone.c */,
|
||||
43F7FF701927F92500CA4038 /* Bone.h */,
|
||||
43F7FF401927F91900CA4038 /* BoneData.c */,
|
||||
43F7FF711927F92500CA4038 /* BoneData.h */,
|
||||
43F7FF411927F91900CA4038 /* BoundingBoxAttachment.c */,
|
||||
43F7FF721927F92500CA4038 /* BoundingBoxAttachment.h */,
|
||||
43F7FF421927F91900CA4038 /* Event.c */,
|
||||
43F7FF731927F92500CA4038 /* Event.h */,
|
||||
43F7FF431927F91900CA4038 /* EventData.c */,
|
||||
43F7FF741927F92500CA4038 /* EventData.h */,
|
||||
43F7FF441927F91900CA4038 /* extension.c */,
|
||||
43F7FF751927F92500CA4038 /* extension.h */,
|
||||
43B7CC0719DC4ACD0031321C /* IkConstraint.c */,
|
||||
43B7CC0D19DC4AE30031321C /* IkConstraint.h */,
|
||||
43B7CC0819DC4ACD0031321C /* IkConstraintData.c */,
|
||||
43B7CC0E19DC4AE30031321C /* IkConstraintData.h */,
|
||||
43F7FF451927F91900CA4038 /* Json.c */,
|
||||
43F7FF461927F91900CA4038 /* Json.h */,
|
||||
43F7FF471927F91900CA4038 /* MeshAttachment.c */,
|
||||
43F7FF761927F92500CA4038 /* MeshAttachment.h */,
|
||||
43F7FF481927F91900CA4038 /* RegionAttachment.c */,
|
||||
43F7FF771927F92500CA4038 /* RegionAttachment.h */,
|
||||
43F7FF491927F91900CA4038 /* Skeleton.c */,
|
||||
43F7FF781927F92500CA4038 /* Skeleton.h */,
|
||||
43F7FF4A1927F91900CA4038 /* SkeletonBounds.c */,
|
||||
43F7FF791927F92500CA4038 /* SkeletonBounds.h */,
|
||||
43F7FF4B1927F91900CA4038 /* SkeletonData.c */,
|
||||
43F7FF7A1927F92500CA4038 /* SkeletonData.h */,
|
||||
43F7FF4C1927F91900CA4038 /* SkeletonJson.c */,
|
||||
43F7FF7B1927F92500CA4038 /* SkeletonJson.h */,
|
||||
43F7FF4D1927F91900CA4038 /* Skin.c */,
|
||||
43F7FF7C1927F92500CA4038 /* Skin.h */,
|
||||
43F7FF4F1927F91900CA4038 /* Slot.c */,
|
||||
43F7FF7E1927F92500CA4038 /* Slot.h */,
|
||||
43F7FF501927F91900CA4038 /* SlotData.c */,
|
||||
43F7FF7F1927F92500CA4038 /* SlotData.h */,
|
||||
43F7FF801927F92500CA4038 /* spine.h */,
|
||||
431FF7F01C735D8D00D52DF2 /* TransformConstraint.c */,
|
||||
431FF7ED1C735D7A00D52DF2 /* TransformConstraint.h */,
|
||||
431FF7F11C735D8D00D52DF2 /* TransformConstraintData.c */,
|
||||
431FF7EE1C735D7A00D52DF2 /* TransformConstraintData.h */,
|
||||
431FF7F21C735D8D00D52DF2 /* WeightedMeshAttachment.c */,
|
||||
431FF7EF1C735D7A00D52DF2 /* WeightedMeshAttachment.h */,
|
||||
76F5BD5D1D2BDCB5005917E5 /* Animation.c */,
|
||||
76F5BD5E1D2BDCB5005917E5 /* AnimationState.c */,
|
||||
76F5BD5F1D2BDCB5005917E5 /* AnimationStateData.c */,
|
||||
76F5BD601D2BDCB5005917E5 /* Atlas.c */,
|
||||
76F5BD611D2BDCB5005917E5 /* AtlasAttachmentLoader.c */,
|
||||
76F5BD621D2BDCB5005917E5 /* Attachment.c */,
|
||||
76F5BD631D2BDCB5005917E5 /* AttachmentLoader.c */,
|
||||
76F5BD641D2BDCB5005917E5 /* Bone.c */,
|
||||
76F5BD651D2BDCB5005917E5 /* BoneData.c */,
|
||||
76F5BD661D2BDCB5005917E5 /* BoundingBoxAttachment.c */,
|
||||
76F5BD671D2BDCB5005917E5 /* Event.c */,
|
||||
76F5BD681D2BDCB5005917E5 /* EventData.c */,
|
||||
76F5BD691D2BDCB5005917E5 /* extension.c */,
|
||||
76F5BD6A1D2BDCB5005917E5 /* IkConstraint.c */,
|
||||
76F5BD6B1D2BDCB5005917E5 /* IkConstraintData.c */,
|
||||
76F5BD6C1D2BDCB5005917E5 /* Json.c */,
|
||||
76F5BD6D1D2BDCB5005917E5 /* Json.h */,
|
||||
76F5BD6E1D2BDCB5005917E5 /* MeshAttachment.c */,
|
||||
76F5BD6F1D2BDCB5005917E5 /* PathAttachment.c */,
|
||||
76F5BD701D2BDCB5005917E5 /* PathConstraint.c */,
|
||||
76F5BD711D2BDCB5005917E5 /* PathConstraintData.c */,
|
||||
76F5BD721D2BDCB5005917E5 /* RegionAttachment.c */,
|
||||
76F5BD731D2BDCB5005917E5 /* Skeleton.c */,
|
||||
76F5BD741D2BDCB5005917E5 /* SkeletonBounds.c */,
|
||||
76F5BD751D2BDCB5005917E5 /* SkeletonData.c */,
|
||||
76F5BD761D2BDCB5005917E5 /* SkeletonJson.c */,
|
||||
76F5BD771D2BDCB5005917E5 /* Skin.c */,
|
||||
76F5BD781D2BDCB5005917E5 /* Slot.c */,
|
||||
76F5BD791D2BDCB5005917E5 /* SlotData.c */,
|
||||
76F5BD7A1D2BDCB5005917E5 /* TransformConstraint.c */,
|
||||
76F5BD7B1D2BDCB5005917E5 /* TransformConstraintData.c */,
|
||||
76F5BD7C1D2BDCB5005917E5 /* VertexAttachment.c */,
|
||||
);
|
||||
name = "spine-c";
|
||||
sourceTree = "<group>";
|
||||
@ -347,6 +322,12 @@
|
||||
43C32867170B0C7F004A9460 /* Resources */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
76F5BD9C1D2BDE1C005917E5 /* raptor.atlas */,
|
||||
76F5BD9D1D2BDE1C005917E5 /* raptor.json */,
|
||||
76F5BD9E1D2BDE1C005917E5 /* raptor.png */,
|
||||
76F5BD9F1D2BDE1C005917E5 /* tank.atlas */,
|
||||
76F5BDA01D2BDE1C005917E5 /* tank.json */,
|
||||
76F5BDA11D2BDE1C005917E5 /* tank.png */,
|
||||
43F7010C1927FBC700CA4038 /* goblins-mesh.atlas */,
|
||||
43F7010D1927FBC700CA4038 /* goblins-mesh.json */,
|
||||
43F7010E1927FBC700CA4038 /* goblins-mesh.png */,
|
||||
@ -512,19 +493,25 @@
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
76F5BDA51D2BDE1C005917E5 /* tank.atlas in Resources */,
|
||||
43C3286C170B0DA6004A9460 /* spineboy.json in Resources */,
|
||||
43C3286E170B0DA6004A9460 /* spineboy.atlas in Resources */,
|
||||
43C3286F170B0DA6004A9460 /* spineboy.png in Resources */,
|
||||
43C3287D170B0DBE004A9460 /* Default-568h@2x.png in Resources */,
|
||||
43C3287E170B0DBE004A9460 /* Default-Landscape~ipad.png in Resources */,
|
||||
43C3287F170B0DBE004A9460 /* Default.png in Resources */,
|
||||
76F5BDA31D2BDE1C005917E5 /* raptor.json in Resources */,
|
||||
43C32880170B0DBE004A9460 /* Default@2x.png in Resources */,
|
||||
43C32881170B0DBE004A9460 /* Icon-72.png in Resources */,
|
||||
76F5BDA41D2BDE1C005917E5 /* raptor.png in Resources */,
|
||||
43C32882170B0DBE004A9460 /* Icon-Small-50.png in Resources */,
|
||||
76F5BDA21D2BDE1C005917E5 /* raptor.atlas in Resources */,
|
||||
43C32883170B0DBE004A9460 /* Icon-Small.png in Resources */,
|
||||
43C32884170B0DBE004A9460 /* Icon-Small@2x.png in Resources */,
|
||||
43C32885170B0DBE004A9460 /* Icon.png in Resources */,
|
||||
76F5BDA71D2BDE1C005917E5 /* tank.png in Resources */,
|
||||
43C32886170B0DBE004A9460 /* Icon@2x.png in Resources */,
|
||||
76F5BDA61D2BDE1C005917E5 /* tank.json in Resources */,
|
||||
43C32888170B0DBE004A9460 /* iTunesArtwork in Resources */,
|
||||
43F7010F1927FBC700CA4038 /* goblins-mesh.atlas in Resources */,
|
||||
43F701101927FBC700CA4038 /* goblins-mesh.json in Resources */,
|
||||
@ -539,41 +526,46 @@
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
76F5BDAA1D2BDE67005917E5 /* RaptorExample.m in Sources */,
|
||||
76F5BD8E1D2BDCB5005917E5 /* PathAttachment.c in Sources */,
|
||||
76F5BDAD1D2BDFA2005917E5 /* TankExample.m in Sources */,
|
||||
76F5BD931D2BDCB5005917E5 /* SkeletonBounds.c in Sources */,
|
||||
76F5BD871D2BDCB5005917E5 /* Event.c in Sources */,
|
||||
76F5BD8C1D2BDCB5005917E5 /* Json.c in Sources */,
|
||||
76F5BD891D2BDCB5005917E5 /* extension.c in Sources */,
|
||||
76F5BD881D2BDCB5005917E5 /* EventData.c in Sources */,
|
||||
76F5BD7F1D2BDCB5005917E5 /* AnimationStateData.c in Sources */,
|
||||
76F5BD8B1D2BDCB5005917E5 /* IkConstraintData.c in Sources */,
|
||||
76F5BD831D2BDCB5005917E5 /* AttachmentLoader.c in Sources */,
|
||||
76F5BD9A1D2BDCB5005917E5 /* TransformConstraintData.c in Sources */,
|
||||
76F5BD971D2BDCB5005917E5 /* Slot.c in Sources */,
|
||||
76F5BD861D2BDCB5005917E5 /* BoundingBoxAttachment.c in Sources */,
|
||||
76F5BD9B1D2BDCB5005917E5 /* VertexAttachment.c in Sources */,
|
||||
43C3282F170B0C19004A9460 /* spine-cocos2d-objc.m in Sources */,
|
||||
76F5BD821D2BDCB5005917E5 /* Attachment.c in Sources */,
|
||||
76F5BD801D2BDCB5005917E5 /* Atlas.c in Sources */,
|
||||
76F5BD911D2BDCB5005917E5 /* RegionAttachment.c in Sources */,
|
||||
43C32A06170B0F93004A9460 /* main.m in Sources */,
|
||||
76F5BD8F1D2BDCB5005917E5 /* PathConstraint.c in Sources */,
|
||||
43C32A09170B10FF004A9460 /* AppDelegate.m in Sources */,
|
||||
43F7FF511927F91900CA4038 /* Animation.c in Sources */,
|
||||
43F7FF521927F91900CA4038 /* AnimationState.c in Sources */,
|
||||
43F7FF531927F91900CA4038 /* AnimationStateData.c in Sources */,
|
||||
43F7FF541927F91900CA4038 /* Atlas.c in Sources */,
|
||||
43F7FF551927F91900CA4038 /* AtlasAttachmentLoader.c in Sources */,
|
||||
43F7FF561927F91900CA4038 /* Attachment.c in Sources */,
|
||||
43F7FF571927F91900CA4038 /* AttachmentLoader.c in Sources */,
|
||||
43F7FF581927F91900CA4038 /* Bone.c in Sources */,
|
||||
43F7FF591927F91900CA4038 /* BoneData.c in Sources */,
|
||||
43F7FF5A1927F91900CA4038 /* BoundingBoxAttachment.c in Sources */,
|
||||
43F7FF5B1927F91900CA4038 /* Event.c in Sources */,
|
||||
43F7FF5C1927F91900CA4038 /* EventData.c in Sources */,
|
||||
43B7CC0A19DC4ACD0031321C /* IkConstraintData.c in Sources */,
|
||||
43F7FF5D1927F91900CA4038 /* extension.c in Sources */,
|
||||
43F7FF5E1927F91900CA4038 /* Json.c in Sources */,
|
||||
43F7FF5F1927F91900CA4038 /* MeshAttachment.c in Sources */,
|
||||
43F7FF601927F91900CA4038 /* RegionAttachment.c in Sources */,
|
||||
431FF7F51C735D8D00D52DF2 /* WeightedMeshAttachment.c in Sources */,
|
||||
43F7FF611927F91900CA4038 /* Skeleton.c in Sources */,
|
||||
43F7FF621927F91900CA4038 /* SkeletonBounds.c in Sources */,
|
||||
43F7FF631927F91900CA4038 /* SkeletonData.c in Sources */,
|
||||
43F7FF641927F91900CA4038 /* SkeletonJson.c in Sources */,
|
||||
43F7FF651927F91900CA4038 /* Skin.c in Sources */,
|
||||
43B7CC0919DC4ACD0031321C /* IkConstraint.c in Sources */,
|
||||
43F7FF671927F91900CA4038 /* Slot.c in Sources */,
|
||||
43F7FF681927F91900CA4038 /* SlotData.c in Sources */,
|
||||
76F5BD981D2BDCB5005917E5 /* SlotData.c in Sources */,
|
||||
76F5BD7E1D2BDCB5005917E5 /* AnimationState.c in Sources */,
|
||||
43F7FF881927F94800CA4038 /* SkeletonAnimation.m in Sources */,
|
||||
76F5BD851D2BDCB5005917E5 /* BoneData.c in Sources */,
|
||||
76F5BD7D1D2BDCB5005917E5 /* Animation.c in Sources */,
|
||||
76F5BD841D2BDCB5005917E5 /* Bone.c in Sources */,
|
||||
76F5BD901D2BDCB5005917E5 /* PathConstraintData.c in Sources */,
|
||||
43F7FF891927F94800CA4038 /* SkeletonRenderer.m in Sources */,
|
||||
76F5BD921D2BDCB5005917E5 /* Skeleton.c in Sources */,
|
||||
76F5BD811D2BDCB5005917E5 /* AtlasAttachmentLoader.c in Sources */,
|
||||
76F5BD961D2BDCB5005917E5 /* Skin.c in Sources */,
|
||||
43F7FF8E1927F96700CA4038 /* GoblinsExample.m in Sources */,
|
||||
431FF7F41C735D8D00D52DF2 /* TransformConstraintData.c in Sources */,
|
||||
76F5BD941D2BDCB5005917E5 /* SkeletonData.c in Sources */,
|
||||
76F5BD8A1D2BDCB5005917E5 /* IkConstraint.c in Sources */,
|
||||
43F7FF8F1927F96700CA4038 /* SpineboyExample.m in Sources */,
|
||||
431FF7F31C735D8D00D52DF2 /* TransformConstraint.c in Sources */,
|
||||
76F5BD951D2BDCB5005917E5 /* SkeletonJson.c in Sources */,
|
||||
76F5BD8D1D2BDCB5005917E5 /* MeshAttachment.c in Sources */,
|
||||
76F5BD991D2BDCB5005917E5 /* TransformConstraint.c in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
|
||||
@ -57,7 +57,6 @@
|
||||
|
||||
- (CCTexture*) getTextureForRegion:(spRegionAttachment*)attachment;
|
||||
- (CCTexture*) getTextureForMesh:(spMeshAttachment*)attachment;
|
||||
- (CCTexture*) getTextureForWeightedMesh:(spWeightedMeshAttachment*)attachment;
|
||||
|
||||
// --- Convenience methods for common Skeleton_* functions.
|
||||
- (void) updateWorldTransform;
|
||||
|
||||
@ -174,21 +174,7 @@ static const unsigned short quadTriangles[6] = {0, 1, 2, 2, 3, 0};
|
||||
spMeshAttachment_computeWorldVertices(attachment, slot, _worldVertices);
|
||||
texture = [self getTextureForMesh:attachment];
|
||||
uvs = attachment->uvs;
|
||||
verticesCount = attachment->verticesCount;
|
||||
triangles = attachment->triangles;
|
||||
trianglesCount = attachment->trianglesCount;
|
||||
r = attachment->r;
|
||||
g = attachment->g;
|
||||
b = attachment->b;
|
||||
a = attachment->a;
|
||||
break;
|
||||
}
|
||||
case SP_ATTACHMENT_WEIGHTED_MESH: {
|
||||
spWeightedMeshAttachment* attachment = (spWeightedMeshAttachment*)slot->attachment;
|
||||
spWeightedMeshAttachment_computeWorldVertices(attachment, slot, _worldVertices);
|
||||
texture = [self getTextureForWeightedMesh:attachment];
|
||||
uvs = attachment->uvs;
|
||||
verticesCount = attachment->uvsCount;
|
||||
verticesCount = attachment->super.worldVerticesLength;
|
||||
triangles = attachment->triangles;
|
||||
trianglesCount = attachment->trianglesCount;
|
||||
r = attachment->r;
|
||||
@ -288,10 +274,6 @@ static const unsigned short quadTriangles[6] = {0, 1, 2, 2, 3, 0};
|
||||
return (CCTexture*)((spAtlasRegion*)attachment->rendererObject)->page->rendererObject;
|
||||
}
|
||||
|
||||
- (CCTexture*) getTextureForWeightedMesh:(spWeightedMeshAttachment*)attachment {
|
||||
return (CCTexture*)((spAtlasRegion*)attachment->rendererObject)->page->rendererObject;
|
||||
}
|
||||
|
||||
- (CGRect) boundingBox {
|
||||
float minX = FLT_MAX, minY = FLT_MAX, maxX = FLT_MIN, maxY = FLT_MIN;
|
||||
float scaleX = self.scaleX, scaleY = self.scaleY;
|
||||
@ -306,11 +288,7 @@ static const unsigned short quadTriangles[6] = {0, 1, 2, 2, 3, 0};
|
||||
} else if (slot->attachment->type == SP_ATTACHMENT_MESH) {
|
||||
spMeshAttachment* mesh = (spMeshAttachment*)slot->attachment;
|
||||
spMeshAttachment_computeWorldVertices(mesh, slot, _worldVertices);
|
||||
verticesCount = mesh->verticesCount;
|
||||
} else if (slot->attachment->type == SP_ATTACHMENT_WEIGHTED_MESH) {
|
||||
spWeightedMeshAttachment* mesh = (spWeightedMeshAttachment*)slot->attachment;
|
||||
spWeightedMeshAttachment_computeWorldVertices(mesh, slot, _worldVertices);
|
||||
verticesCount = mesh->uvsCount;
|
||||
verticesCount = mesh->super.worldVerticesLength;
|
||||
} else
|
||||
continue;
|
||||
for (int ii = 0; ii < verticesCount; ii += 2) {
|
||||
|
||||
@ -1,3 +1,4 @@
|
||||
cmake_minimum_required(VERSION 2.8)
|
||||
set(EXAMPLE_DIR "${CMAKE_CURRENT_LIST_DIR}/example")
|
||||
if (NOT EXISTS ${EXAMPLE_DIR}/cocos2d)
|
||||
message("Downloading cocos2dx, this may take some time!")
|
||||
|
||||
@ -10,7 +10,7 @@ The Spine Runtimes are developed with the intent to be used with data exported f
|
||||
|
||||
## Spine version
|
||||
|
||||
spine-cocos2dx works with data exported from Spine version 3.2.01.
|
||||
spine-cocos2dx works with data exported from Spine version 3.3.07.
|
||||
|
||||
spine-cocos2dx supports all Spine features.
|
||||
|
||||
@ -40,6 +40,7 @@ The Spine cocos2d-x example works on Windows and Mac OS X.
|
||||
7. Click `Configure`. This will download the cocos2d-x dependency and wire it up with the example source code in `spine-runtimes/spine-cocos2dx/example`. The download is 400mb, so get yourself a cup of tea.
|
||||
8. Open the `spine-runtimes/spine-cocos2dx/example/proj.win32/spine-cocos2d-x.sln` file in Visual Studio 2015. Visual Studio may ask you to install the Windows XP/7 SDK, which you should install.
|
||||
9. Expand the cocos2d_libs sub project and delete the `editor-support/spine` group. This will remove the outdated Spine cocos2d-x runtime shipped by cocos2d-x from your build.
|
||||
9. Expand `References` of the cocos2d_libs sub project, and remove the entry for `libSpine`, which should be marked with an error.
|
||||
9. Right click the `spine-cocos2d-x` project in the solution explorer and select `Set as Startup Project` from the context menu
|
||||
10. Click `Local Windows Debugger` to run the example
|
||||
|
||||
@ -51,7 +52,7 @@ The Spine cocos2d-x example works on Windows and Mac OS X.
|
||||
4. Open a terminal, and `cd` into the `spine-runtimes/spine-cocos2dx` folder
|
||||
5. Type `mkdir build && cd build && cmake ../..`. This will download the cocos2d-x dependency and wire it up with the example source code in `spine-runtimes/spine-cocos2dx/example`. The download is 400mb, so get yourself a cup of tea.
|
||||
6. Open the Xcode project in `spine-runtimes/spine-cocos2dx/example/proj.ios_mac`
|
||||
7. Expand the `cocos2d_libs.xcodeproj` sub project, delete the group `editor-support/spine`. This will remove the
|
||||
7. Expand the `cocos2d_libs.xcodeproj` sub project, delete the group `editor-support/spine`. This will remove the outdated Spine cocos2d-x runtime shipped by cocos2d-x.
|
||||
8. Click the `Run` button or type `CMD+R` to run the example
|
||||
|
||||
## Notes
|
||||
|
||||
@ -41,7 +41,7 @@ public:
|
||||
|
||||
virtual bool applicationDidFinishLaunching ();
|
||||
virtual void applicationDidEnterBackground ();
|
||||
virtual void applicationWillEnterForeground ();
|
||||
virtual void applicationWillEnterForeground ();
|
||||
};
|
||||
|
||||
#endif // _APPDELEGATE_H_
|
||||
|
||||
@ -30,7 +30,7 @@
|
||||
*****************************************************************************/
|
||||
|
||||
#include "RaptorExample.h"
|
||||
#include "BatchingExample.h"
|
||||
#include "TankExample.h"
|
||||
|
||||
USING_NS_CC;
|
||||
using namespace spine;
|
||||
@ -61,7 +61,7 @@ bool RaptorExample::init () {
|
||||
else if (skeletonNode->getTimeScale() == 1)
|
||||
skeletonNode->setTimeScale(0.3f);
|
||||
else
|
||||
Director::getInstance()->replaceScene(BatchingExample::scene());
|
||||
Director::getInstance()->replaceScene(TankExample::scene());
|
||||
return true;
|
||||
};
|
||||
_eventDispatcher->addEventListenerWithSceneGraphPriority(listener, this);
|
||||
|
||||
68
spine-cocos2dx/example/Classes/TankExample.cpp
Normal file
@ -0,0 +1,68 @@
|
||||
/******************************************************************************
|
||||
* Spine Runtimes Software License
|
||||
* Version 2.3
|
||||
*
|
||||
* Copyright (c) 2013-2015, Esoteric Software
|
||||
* All rights reserved.
|
||||
*
|
||||
* You are granted a perpetual, non-exclusive, non-sublicensable and
|
||||
* non-transferable license to use, install, execute and perform the Spine
|
||||
* Runtimes Software (the "Software") and derivative works solely for personal
|
||||
* or internal use. Without the written permission of Esoteric Software (see
|
||||
* Section 2 of the Spine Software License Agreement), you may not (a) modify,
|
||||
* translate, adapt or otherwise create derivative works, improvements of the
|
||||
* Software or develop new applications using the Software or (b) remove,
|
||||
* delete, alter or obscure any trademarks or any copyright, trademark, patent
|
||||
* or other intellectual property or proprietary rights notices on or in the
|
||||
* Software, including any copy thereof. Redistributions in binary or source
|
||||
* form must include this license and terms.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR
|
||||
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
|
||||
* EVENT SHALL ESOTERIC SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
||||
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*****************************************************************************/
|
||||
|
||||
#include "TankExample.h"
|
||||
#include "BatchingExample.h"
|
||||
|
||||
USING_NS_CC;
|
||||
using namespace spine;
|
||||
|
||||
Scene* TankExample::scene () {
|
||||
Scene *scene = Scene::create();
|
||||
scene->addChild(TankExample::create());
|
||||
return scene;
|
||||
}
|
||||
|
||||
bool TankExample::init () {
|
||||
if (!LayerColor::initWithColor(Color4B(128, 128, 128, 255))) return false;
|
||||
|
||||
skeletonNode = SkeletonAnimation::createWithFile("tank.json", "tank.atlas", 0.5f);
|
||||
skeletonNode->setAnimation(0, "drive", true);
|
||||
|
||||
skeletonNode->setPosition(Vec2(_contentSize.width / 2 + 400, 20));
|
||||
addChild(skeletonNode);
|
||||
|
||||
scheduleUpdate();
|
||||
|
||||
EventListenerTouchOneByOne* listener = EventListenerTouchOneByOne::create();
|
||||
listener->onTouchBegan = [this] (Touch* touch, Event* event) -> bool {
|
||||
if (!skeletonNode->getDebugBonesEnabled())
|
||||
skeletonNode->setDebugBonesEnabled(true);
|
||||
else if (skeletonNode->getTimeScale() == 1)
|
||||
skeletonNode->setTimeScale(0.3f);
|
||||
else
|
||||
Director::getInstance()->replaceScene(BatchingExample::scene());
|
||||
return true;
|
||||
};
|
||||
_eventDispatcher->addEventListenerWithSceneGraphPriority(listener, this);
|
||||
|
||||
return true;
|
||||
}
|
||||
50
spine-cocos2dx/example/Classes/TankExample.h
Normal file
@ -0,0 +1,50 @@
|
||||
/******************************************************************************
|
||||
* Spine Runtimes Software License
|
||||
* Version 2.3
|
||||
*
|
||||
* Copyright (c) 2013-2015, Esoteric Software
|
||||
* All rights reserved.
|
||||
*
|
||||
* You are granted a perpetual, non-exclusive, non-sublicensable and
|
||||
* non-transferable license to use, install, execute and perform the Spine
|
||||
* Runtimes Software (the "Software") and derivative works solely for personal
|
||||
* or internal use. Without the written permission of Esoteric Software (see
|
||||
* Section 2 of the Spine Software License Agreement), you may not (a) modify,
|
||||
* translate, adapt or otherwise create derivative works, improvements of the
|
||||
* Software or develop new applications using the Software or (b) remove,
|
||||
* delete, alter or obscure any trademarks or any copyright, trademark, patent
|
||||
* or other intellectual property or proprietary rights notices on or in the
|
||||
* Software, including any copy thereof. Redistributions in binary or source
|
||||
* form must include this license and terms.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR
|
||||
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
|
||||
* EVENT SHALL ESOTERIC SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
||||
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*****************************************************************************/
|
||||
|
||||
#ifndef _TANKEXAMPLE_H_
|
||||
#define _TANKEXAMPLE_H_
|
||||
|
||||
#include "cocos2d.h"
|
||||
#include <spine/spine-cocos2dx.h>
|
||||
|
||||
class TankExample : public cocos2d::LayerColor {
|
||||
public:
|
||||
static cocos2d::Scene* scene ();
|
||||
|
||||
CREATE_FUNC(TankExample);
|
||||
|
||||
virtual bool init ();
|
||||
|
||||
private:
|
||||
spine::SkeletonAnimation* skeletonNode;
|
||||
};
|
||||
|
||||
#endif // _TANKEXAMPLE_H_
|
||||
293
spine-cocos2dx/example/Resources/common/goblins-mesh.atlas
Normal file
@ -0,0 +1,293 @@
|
||||
|
||||
goblins-mesh.png
|
||||
size: 512,512
|
||||
format: RGBA8888
|
||||
filter: Linear,Linear
|
||||
repeat: none
|
||||
dagger
|
||||
rotate: false
|
||||
xy: 26, 147
|
||||
size: 26, 108
|
||||
orig: 26, 108
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/eyes-closed
|
||||
rotate: false
|
||||
xy: 329, 334
|
||||
size: 34, 12
|
||||
orig: 34, 12
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/head
|
||||
rotate: false
|
||||
xy: 26, 355
|
||||
size: 103, 66
|
||||
orig: 103, 66
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/left-arm
|
||||
rotate: false
|
||||
xy: 54, 142
|
||||
size: 37, 35
|
||||
orig: 37, 35
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/left-foot
|
||||
rotate: true
|
||||
xy: 2, 69
|
||||
size: 65, 31
|
||||
orig: 65, 31
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/left-hand
|
||||
rotate: false
|
||||
xy: 266, 332
|
||||
size: 36, 41
|
||||
orig: 36, 41
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/left-lower-leg
|
||||
rotate: true
|
||||
xy: 273, 433
|
||||
size: 33, 70
|
||||
orig: 33, 70
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/left-shoulder
|
||||
rotate: false
|
||||
xy: 305, 288
|
||||
size: 29, 44
|
||||
orig: 29, 44
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/left-upper-leg
|
||||
rotate: false
|
||||
xy: 96, 280
|
||||
size: 33, 73
|
||||
orig: 33, 73
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/neck
|
||||
rotate: false
|
||||
xy: 267, 289
|
||||
size: 36, 41
|
||||
orig: 36, 41
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/pelvis
|
||||
rotate: false
|
||||
xy: 131, 363
|
||||
size: 62, 43
|
||||
orig: 62, 43
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/right-arm
|
||||
rotate: false
|
||||
xy: 304, 334
|
||||
size: 23, 50
|
||||
orig: 23, 50
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/right-foot
|
||||
rotate: false
|
||||
xy: 201, 397
|
||||
size: 63, 33
|
||||
orig: 63, 33
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/right-hand
|
||||
rotate: false
|
||||
xy: 336, 295
|
||||
size: 36, 37
|
||||
orig: 36, 37
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/right-lower-leg
|
||||
rotate: true
|
||||
xy: 273, 468
|
||||
size: 36, 76
|
||||
orig: 36, 76
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/right-shoulder
|
||||
rotate: false
|
||||
xy: 196, 285
|
||||
size: 39, 45
|
||||
orig: 39, 45
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/right-upper-leg
|
||||
rotate: true
|
||||
xy: 131, 282
|
||||
size: 34, 63
|
||||
orig: 34, 63
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/torso
|
||||
rotate: false
|
||||
xy: 131, 408
|
||||
size: 68, 96
|
||||
orig: 68, 96
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/undie-straps
|
||||
rotate: true
|
||||
xy: 266, 375
|
||||
size: 55, 19
|
||||
orig: 55, 19
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/undies
|
||||
rotate: false
|
||||
xy: 429, 440
|
||||
size: 36, 29
|
||||
orig: 36, 29
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblingirl/eyes-closed
|
||||
rotate: false
|
||||
xy: 96, 257
|
||||
size: 37, 21
|
||||
orig: 37, 21
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblingirl/head
|
||||
rotate: false
|
||||
xy: 26, 423
|
||||
size: 103, 81
|
||||
orig: 103, 81
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblingirl/left-arm
|
||||
rotate: false
|
||||
xy: 390, 434
|
||||
size: 37, 35
|
||||
orig: 37, 35
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblingirl/left-foot
|
||||
rotate: true
|
||||
xy: 2, 2
|
||||
size: 65, 31
|
||||
orig: 65, 31
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblingirl/left-hand
|
||||
rotate: false
|
||||
xy: 329, 348
|
||||
size: 35, 40
|
||||
orig: 35, 40
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblingirl/left-lower-leg
|
||||
rotate: true
|
||||
xy: 351, 471
|
||||
size: 33, 70
|
||||
orig: 33, 70
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblingirl/left-shoulder
|
||||
rotate: false
|
||||
xy: 237, 284
|
||||
size: 28, 46
|
||||
orig: 28, 46
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblingirl/left-upper-leg
|
||||
rotate: true
|
||||
xy: 423, 471
|
||||
size: 33, 70
|
||||
orig: 33, 70
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblingirl/neck
|
||||
rotate: false
|
||||
xy: 328, 390
|
||||
size: 35, 41
|
||||
orig: 35, 41
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblingirl/pelvis
|
||||
rotate: false
|
||||
xy: 131, 318
|
||||
size: 62, 43
|
||||
orig: 62, 43
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblingirl/right-arm
|
||||
rotate: true
|
||||
xy: 135, 252
|
||||
size: 28, 50
|
||||
orig: 28, 50
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblingirl/right-foot
|
||||
rotate: true
|
||||
xy: 231, 332
|
||||
size: 63, 33
|
||||
orig: 63, 33
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblingirl/right-hand
|
||||
rotate: true
|
||||
xy: 351, 433
|
||||
size: 36, 37
|
||||
orig: 36, 37
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblingirl/right-lower-leg
|
||||
rotate: false
|
||||
xy: 54, 179
|
||||
size: 36, 76
|
||||
orig: 36, 76
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblingirl/right-shoulder
|
||||
rotate: false
|
||||
xy: 287, 386
|
||||
size: 39, 45
|
||||
orig: 39, 45
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblingirl/right-upper-leg
|
||||
rotate: false
|
||||
xy: 195, 332
|
||||
size: 34, 63
|
||||
orig: 34, 63
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblingirl/torso
|
||||
rotate: false
|
||||
xy: 26, 257
|
||||
size: 68, 96
|
||||
orig: 68, 96
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblingirl/undie-straps
|
||||
rotate: true
|
||||
xy: 92, 200
|
||||
size: 55, 19
|
||||
orig: 55, 19
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblingirl/undies
|
||||
rotate: true
|
||||
xy: 365, 395
|
||||
size: 36, 29
|
||||
orig: 36, 29
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
shield
|
||||
rotate: false
|
||||
xy: 201, 432
|
||||
size: 70, 72
|
||||
orig: 70, 72
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
spear
|
||||
rotate: false
|
||||
xy: 2, 136
|
||||
size: 22, 368
|
||||
orig: 22, 368
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
@ -1,26 +1,27 @@
|
||||
{
|
||||
"skeleton": { "hash": "P7CQ4ImK+tcAICATgSttlZ5HOSM", "spine": "3.3.07", "width": 266.93, "height": 349.6, "images": "./images/" },
|
||||
"bones": [
|
||||
{ "name": "root" },
|
||||
{ "name": "hip", "parent": "root", "x": 0.64, "y": 114.41 },
|
||||
{ "name": "left upper leg", "parent": "hip", "length": 50.39, "x": 14.45, "y": 2.81, "rotation": -89.09 },
|
||||
{ "name": "torso", "parent": "hip", "length": 85.82, "rotation": 93.92, "x": -6.42, "y": 1.97 },
|
||||
{ "name": "neck", "parent": "torso", "length": 18.38, "rotation": -1.51, "x": 81.67, "y": -6.34 },
|
||||
{ "name": "head", "parent": "neck", "length": 68.28, "rotation": -13.92, "x": 20.93, "y": 11.59 },
|
||||
{ "name": "left shoulder", "parent": "torso", "length": 35.43, "rotation": -156.96, "x": 74.04, "y": -20.38 },
|
||||
{ "name": "left arm", "parent": "left shoulder", "length": 35.62, "rotation": 28.16, "x": 37.85, "y": -2.34 },
|
||||
{ "name": "left upper leg", "parent": "hip", "length": 50.39, "rotation": -89.09, "x": 14.45, "y": 2.81 },
|
||||
{ "name": "left lower leg", "parent": "left upper leg", "length": 49.89, "rotation": -16.65, "x": 56.34, "y": 0.98 },
|
||||
{ "name": "left foot", "parent": "left lower leg", "length": 46.5, "rotation": 102.43, "x": 58.94, "y": -7.61 },
|
||||
{ "name": "left hand", "parent": "left arm", "length": 11.52, "rotation": 2.7, "x": 35.62, "y": 0.07 },
|
||||
{ "name": "pelvis", "parent": "hip", "x": 1.41, "y": -6.57 },
|
||||
{ "name": "right upper leg", "parent": "hip", "length": 42.45, "x": -20.07, "y": -6.83, "rotation": -97.49 },
|
||||
{ "name": "torso", "parent": "hip", "length": 85.82, "x": -6.42, "y": 1.97, "rotation": 93.92 },
|
||||
{ "name": "left lower leg", "parent": "left upper leg", "length": 49.89, "x": 56.34, "y": 0.98, "rotation": -16.65 },
|
||||
{ "name": "left shoulder", "parent": "torso", "length": 35.43, "x": 74.04, "y": -20.38, "rotation": -156.96 },
|
||||
{ "name": "neck", "parent": "torso", "length": 18.38, "x": 81.67, "y": -6.34, "rotation": -1.51 },
|
||||
{ "name": "right lower leg", "parent": "right upper leg", "length": 58.52, "x": 42.99, "y": -0.61, "rotation": -14.34 },
|
||||
{ "name": "right shoulder", "parent": "torso", "length": 37.24, "x": 76.02, "y": 18.14, "rotation": 133.88 },
|
||||
{ "name": "head", "parent": "neck", "length": 68.28, "x": 20.93, "y": 11.59, "rotation": -13.92 },
|
||||
{ "name": "left arm", "parent": "left shoulder", "length": 35.62, "x": 37.85, "y": -2.34, "rotation": 28.16 },
|
||||
{ "name": "left foot", "parent": "left lower leg", "length": 46.5, "x": 58.94, "y": -7.61, "rotation": 102.43 },
|
||||
{ "name": "right arm", "parent": "right shoulder", "length": 36.74, "x": 37.6, "y": 0.31, "rotation": 36.32 },
|
||||
{ "name": "right foot", "parent": "right lower leg", "length": 45.45, "x": 64.88, "y": 0.04, "rotation": 110.3 },
|
||||
{ "name": "left hand", "parent": "left arm", "length": 11.52, "x": 35.62, "y": 0.07, "rotation": 2.7 },
|
||||
{ "name": "right hand", "parent": "right arm", "length": 15.32, "x": 36.9, "y": 0.34, "rotation": 2.35 },
|
||||
{ "name": "spear1", "parent": "left hand", "length": 65.06, "x": 0.48, "y": 17.03, "rotation": 102.43 },
|
||||
{ "name": "spear2", "parent": "spear1", "length": 61.41, "x": 65.05, "y": 0.04, "rotation": 0.9 },
|
||||
{ "name": "spear3", "parent": "spear2", "length": 76.79, "x": 61.88, "y": 0.57, "rotation": -0.9 }
|
||||
{ "name": "right shoulder", "parent": "torso", "length": 37.24, "rotation": 133.88, "x": 76.02, "y": 18.14 },
|
||||
{ "name": "right arm", "parent": "right shoulder", "length": 36.74, "rotation": 36.32, "x": 37.6, "y": 0.31 },
|
||||
{ "name": "right upper leg", "parent": "hip", "length": 42.45, "rotation": -97.49, "x": -20.07, "y": -6.83 },
|
||||
{ "name": "right lower leg", "parent": "right upper leg", "length": 58.52, "rotation": -14.34, "x": 42.99, "y": -0.61 },
|
||||
{ "name": "right foot", "parent": "right lower leg", "length": 45.45, "rotation": 110.3, "x": 64.88, "y": 0.04 },
|
||||
{ "name": "right hand", "parent": "right arm", "length": 15.32, "rotation": 2.35, "x": 36.9, "y": 0.34 },
|
||||
{ "name": "spear1", "parent": "left hand", "length": 65.06, "rotation": 102.43, "x": 0.48, "y": 17.03 },
|
||||
{ "name": "spear2", "parent": "spear1", "length": 61.41, "rotation": 0.9, "x": 65.05, "y": 0.04 },
|
||||
{ "name": "spear3", "parent": "spear2", "length": 76.79, "rotation": -0.9, "x": 61.88, "y": 0.57 }
|
||||
],
|
||||
"slots": [
|
||||
{ "name": "left shoulder", "bone": "left shoulder", "attachment": "left shoulder" },
|
||||
@ -52,12 +53,12 @@
|
||||
"left hand item": {
|
||||
"dagger": { "x": 7.88, "y": -23.45, "rotation": 10.47, "width": 26, "height": 108 },
|
||||
"spear": {
|
||||
"type": "skinnedmesh",
|
||||
"type": "mesh",
|
||||
"uvs": [ 1, 0.11236, 0.77096, 0.13278, 0.76608, 0.21781, 0.75642, 0.386, 0.74723, 0.54607, 0.72117, 1, 0.28838, 1, 0.24208, 0.54327, 0.22589, 0.38361, 0.2089, 0.21605, 0.20043, 0.13242, 0, 0.11519, 0.4527, 0, 0.58399, 0 ],
|
||||
"triangles": [ 5, 6, 4, 6, 7, 4, 4, 7, 3, 2, 9, 1, 9, 10, 1, 10, 12, 1, 12, 13, 1, 1, 13, 0, 10, 11, 12, 3, 8, 2, 8, 9, 2, 7, 8, 3 ],
|
||||
"vertices": [ 1, 20, 38.54, -10.88, 1, 1, 20, 30.97, -5.93, 1, 2, 19, 61.48, -5.58, 0.51, 20, -0.31, -6.16, 0.48, 2, 18, 64.73, -5.03, 0.5, 19, -0.4, -5.06, 0.49, 1, 16, 4.56, 23.91, 1, 1, 16, 41.7, -138.95, 1, 1, 16, 32.42, -141.1, 1, 1, 16, -6.49, 22.4, 1, 2, 18, 65.48, 6.64, 0.5, 19, 0.53, 6.59, 0.49, 2, 19, 62.18, 6.66, 0.51, 20, 0.2, 6.09, 0.48, 1, 20, 30.96, 6.61, 1, 1, 20, 37.26, 11.09, 1, 1, 20, 79.75, 1.59, 1, 1, 20, 79.78, -1.29, 1 ],
|
||||
"edges": [ 24, 22, 22, 20, 10, 12, 2, 0, 24, 26, 0, 26, 8, 10, 12, 14, 6, 8, 14, 16, 2, 4, 4, 6, 16, 18, 18, 20, 20, 2 ],
|
||||
"triangles": [ 4, 7, 3, 6, 7, 4, 5, 6, 4, 10, 11, 12, 1, 13, 0, 12, 13, 1, 10, 12, 1, 9, 10, 1, 2, 9, 1, 8, 9, 2, 3, 8, 2, 7, 8, 3 ],
|
||||
"vertices": [ 1, 20, 38.54, -10.88, 1, 1, 20, 30.97, -5.93, 1, 2, 19, 61.48, -5.58, 0.5116, 20, -0.31, -6.16, 0.48839, 2, 18, 64.73, -5.03, 0.50272, 19, -0.4, -5.06, 0.49728, 1, 10, 4.56, 23.91, 1, 1, 10, 41.7, -138.95, 1, 1, 10, 32.41999, -141.1, 1, 1, 10, -6.49, 22.4, 1, 2, 18, 65.48, 6.64, 0.50272, 19, 0.52999, 6.59, 0.49728, 2, 19, 62.18, 6.66, 0.5116, 20, 0.2, 6.09, 0.48839, 1, 20, 30.96, 6.61, 1, 1, 20, 37.25999, 11.09, 1, 1, 20, 79.75, 1.59, 1, 1, 20, 79.78, -1.29, 1 ],
|
||||
"hull": 14,
|
||||
"edges": [ 24, 22, 22, 20, 10, 12, 2, 0, 24, 26, 0, 26, 8, 10, 12, 14, 6, 8, 14, 16, 2, 4, 4, 6, 16, 18, 18, 20, 20, 2 ],
|
||||
"width": 22,
|
||||
"height": 368
|
||||
}
|
||||
@ -68,8 +69,8 @@
|
||||
"uvs": [ 0.78091, 0.38453, 1, 0.38405, 1, 0.44881, 0.73953, 0.4687, 0.74641, 0.81344, 0.34022, 1, 0.15434, 1, 0.11303, 0.78858, 0.23007, 0.47367, 0, 0.45047, 0, 0.38621, 0.22367, 0.38573, 0.24384, 0, 1, 0 ],
|
||||
"triangles": [ 0, 12, 13, 11, 12, 0, 0, 1, 2, 9, 10, 11, 3, 11, 0, 3, 0, 2, 8, 11, 3, 9, 11, 8, 5, 6, 7, 4, 5, 8, 4, 8, 3, 5, 7, 8 ],
|
||||
"vertices": [ 15.49, -12.82, 21.13, -13.57, 20.16, -20.49, 13.15, -21.67, 8.13, -58.56, -5.13, -77.04, -9.92, -76.36, -7.79, -53.6, -0.03, -20.36, -5.6, -17.04, -4.63, -10.17, 1.12, -10.93, 7.46, 30.24, 26.93, 27.49 ],
|
||||
"edges": [ 22, 20, 24, 26, 22, 24, 2, 0, 0, 22, 0, 26, 12, 14, 14, 16, 18, 20, 16, 18, 2, 4, 4, 6, 6, 8, 10, 12, 8, 10 ],
|
||||
"hull": 14,
|
||||
"edges": [ 22, 20, 24, 26, 22, 24, 2, 0, 0, 22, 0, 26, 12, 14, 14, 16, 18, 20, 16, 18, 2, 4, 4, 6, 6, 8, 10, 12, 8, 10 ],
|
||||
"width": 26,
|
||||
"height": 108
|
||||
}
|
||||
@ -87,10 +88,10 @@
|
||||
"name": "goblin/head",
|
||||
"type": "mesh",
|
||||
"uvs": [ 0, 0.60494, 0.14172, 0.5145, 0.24218, 0.55229, 0.32667, 0.67806, 0.37969, 0.79352, 0.53505, 0.93014, 0.86056, 1, 0.94071, 0.94169, 0.92098, 0.69923, 0.9888, 0.65497, 0.99003, 0.51643, 0.89632, 0.43561, 0.94487, 0.41916, 1, 0.39713, 1, 0.2836, 0.94017, 0.27027, 0.87906, 0.25666, 0.80754, 0.16044, 0.66698, 0.01997, 0.4734, 0.01805, 0.29215, 0.19893, 0.25392, 0.31823, 0.09117, 0.324, 0, 0.44331, 0.43271, 0.69153, 0.466, 0.47794, 0.35996, 0.31246, 0.73473, 0.68593, 0.72215, 0.57425, 0.88179, 0.5583, 0.80267, 0.51015 ],
|
||||
"triangles": [ 26, 20, 19, 21, 20, 26, 15, 14, 13, 12, 15, 13, 11, 16, 15, 11, 15, 12, 26, 17, 25, 18, 26, 19, 17, 26, 18, 30, 25, 17, 30, 17, 16, 30, 16, 11, 1, 22, 21, 23, 22, 1, 2, 1, 21, 2, 21, 26, 29, 30, 11, 29, 11, 10, 28, 25, 30, 0, 23, 1, 9, 29, 10, 25, 3, 2, 25, 2, 26, 29, 27, 28, 29, 28, 30, 24, 3, 25, 24, 25, 28, 24, 28, 27, 8, 29, 9, 27, 29, 8, 4, 3, 24, 5, 24, 27, 4, 24, 5, 7, 6, 27, 7, 27, 8, 5, 27, 6 ],
|
||||
"vertices": [ 14.56, 50.42, 23.12, 35.47, 17.46, 26.36, 11.57, 16.86, 3.74, 11.71, -5.89, -3.91, -11.83, -37.23, -8.31, -45.63, 7.75, -44.24, 10.39, -51.33, 19.52, -51.82, 25.21, -43.15, 26.12, -47.43, 27.35, -53.16, 34.84, -53.46, 35.96, -47.33, 37.11, -41.08, 43.75, -33.97, 53.58, -19.87, 54.5, 0.03, 43.31, 19.16, 35.6, 23.41, 35.89, 40.17, 28.39, 49.87, 10.25, 5.99, 24.2, 2, 35.55, 12.48, 9.39, -25.1, 16.8, -24.31, 17.2, -40.65, 20.68, -33.02 ],
|
||||
"edges": [ 0, 2, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 18, 20, 20, 22, 26, 28, 32, 34, 34, 36, 36, 38, 38, 40, 40, 42, 42, 44, 44, 46, 0, 46, 6, 48, 48, 50, 50, 52, 52, 42, 2, 4, 4, 6, 4, 52, 2, 44, 22, 32, 22, 24, 24, 26, 28, 30, 30, 32, 24, 30, 16, 54, 54, 56, 20, 58, 58, 54, 16, 58, 22, 60, 60, 56, 58, 60 ],
|
||||
"triangles": [ 5, 27, 6, 7, 27, 8, 7, 6, 27, 4, 24, 5, 5, 24, 27, 4, 3, 24, 27, 29, 8, 8, 29, 9, 24, 28, 27, 24, 25, 28, 24, 3, 25, 29, 28, 30, 29, 27, 28, 25, 2, 26, 25, 3, 2, 9, 29, 10, 0, 23, 1, 28, 25, 30, 29, 11, 10, 29, 30, 11, 2, 21, 26, 2, 1, 21, 23, 22, 1, 1, 22, 21, 30, 16, 11, 30, 17, 16, 30, 25, 17, 17, 26, 18, 18, 26, 19, 26, 17, 25, 11, 15, 12, 11, 16, 15, 12, 15, 13, 15, 14, 13, 21, 20, 26, 26, 20, 19 ],
|
||||
"vertices": [ 14.56, 50.42, 23.12, 35.47, 17.45999, 26.36, 11.57, 16.86, 3.74, 11.71, -5.89, -3.91, -11.83, -37.23, -8.31, -45.63, 7.75, -44.24, 10.39, -51.33, 19.52, -51.82, 25.21, -43.15, 26.12, -47.43, 27.35, -53.16, 34.84, -53.46, 35.96, -47.33, 37.11, -41.08, 43.75, -33.97, 53.58, -19.87, 54.5, 0.03, 43.31, 19.16, 35.59999, 23.41, 35.89, 40.16999, 28.39, 49.87, 10.25, 5.99, 24.2, 2, 35.55, 12.48, 9.39, -25.1, 16.79999, -24.31, 17.2, -40.65, 20.68, -33.02 ],
|
||||
"hull": 24,
|
||||
"edges": [ 0, 2, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 18, 20, 20, 22, 26, 28, 32, 34, 34, 36, 36, 38, 38, 40, 40, 42, 42, 44, 44, 46, 0, 46, 6, 48, 48, 50, 50, 52, 52, 42, 2, 4, 4, 6, 4, 52, 2, 44, 22, 32, 22, 24, 24, 26, 28, 30, 30, 32, 24, 30, 16, 54, 54, 56, 20, 58, 58, 54, 16, 58, 22, 60, 60, 56, 58, 60 ],
|
||||
"width": 103,
|
||||
"height": 66
|
||||
}
|
||||
@ -100,10 +101,10 @@
|
||||
"name": "goblin/left-arm",
|
||||
"type": "mesh",
|
||||
"uvs": [ 0.68992, 0.29284, 1, 0.46364, 1, 0.74643, 0.84089, 1, 0.66344, 1, 0.33765, 0.64284, 0, 0.44124, 0, 0, 0.34295, 0 ],
|
||||
"triangles": [ 6, 7, 8, 5, 6, 8, 0, 5, 8, 0, 1, 2, 5, 0, 2, 4, 5, 2, 3, 4, 2 ],
|
||||
"vertices": [ 18.6, 8.81, 32.19, 10.31, 38.02, 1.62, 38.08, -9.63, 32.31, -13.49, 14.37, -9.62, -0.75, -10.78, -9.84, 2.77, 1.29, 10.25 ],
|
||||
"edges": [ 14, 16, 16, 0, 0, 2, 2, 4, 6, 4, 6, 8, 8, 10, 12, 14, 10, 12 ],
|
||||
"triangles": [ 3, 4, 2, 4, 5, 2, 5, 0, 2, 0, 1, 2, 0, 5, 8, 5, 6, 8, 6, 7, 8 ],
|
||||
"vertices": [ 18.6, 8.81, 32.18999, 10.31, 38.02, 1.62, 38.08, -9.63, 32.31, -13.49, 14.37, -9.62, -0.75, -10.78, -9.84, 2.77, 1.29, 10.25 ],
|
||||
"hull": 9,
|
||||
"edges": [ 14, 16, 16, 0, 0, 2, 2, 4, 6, 4, 6, 8, 8, 10, 12, 14, 10, 12 ],
|
||||
"width": 37,
|
||||
"height": 35
|
||||
}
|
||||
@ -115,8 +116,8 @@
|
||||
"uvs": [ 0.15733, 0.31873, 0.08195, 0.78502, 0.15884, 0.99366, 0.41633, 0.96804, 0.68822, 0.97636, 1, 0.96388, 0.99385, 0.73501, 0.85294, 0.51862, 0.61479, 0.31056, 0.46991, 0, 0.48032, 0.75604, 0.75994, 0.77706 ],
|
||||
"triangles": [ 0, 9, 8, 10, 0, 8, 10, 8, 7, 11, 10, 7, 11, 7, 6, 1, 0, 10, 11, 6, 5, 3, 1, 10, 4, 10, 11, 4, 11, 5, 3, 10, 4, 2, 1, 3 ],
|
||||
"vertices": [ 2.28, 13.07, -1.76, -1.64, 3.59, -7.8, 20.25, -6.04, 37.91, -5.27, 58.12, -3.71, 57.31, 3.34, 47.78, 9.51, 31.95, 15.05, 21.99, 24.11, 24.03, 0.75, 42.21, 1.16 ],
|
||||
"edges": [ 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 0, 18, 6, 20, 20, 16, 2, 20, 8, 22, 22, 14, 20, 22, 22, 10 ],
|
||||
"hull": 10,
|
||||
"edges": [ 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 0, 18, 6, 20, 20, 16, 2, 20, 8, 22, 22, 14, 20, 22, 22, 10 ],
|
||||
"width": 65,
|
||||
"height": 31
|
||||
}
|
||||
@ -127,9 +128,9 @@
|
||||
"type": "mesh",
|
||||
"uvs": [ 0.518, 0.12578, 1, 0.16285, 0.99788, 0.50578, 0.69745, 1, 0.37445, 1, 0, 0.80051, 0, 0.42792, 0.17601, 0, 0.43567, 0 ],
|
||||
"triangles": [ 2, 0, 1, 0, 5, 6, 6, 7, 0, 0, 7, 8, 3, 4, 0, 4, 5, 0, 2, 3, 0 ],
|
||||
"vertices": [ -3.11, 15.42, 10.83, 22.27, 15.5, 14.55, 18.35, -8.96, 9.48, -14.32, -4.58, -14.3, -11.63, -2.63, -14.89, 13.68, -7.75, 17.99 ],
|
||||
"edges": [ 16, 0, 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 14, 16, 12, 14 ],
|
||||
"vertices": [ -3.11, 15.42, 10.83, 22.27, 15.5, 14.55, 18.35, -8.96, 9.47999, -14.32, -4.58, -14.3, -11.63, -2.63, -14.89, 13.68, -7.75, 17.99 ],
|
||||
"hull": 9,
|
||||
"edges": [ 16, 0, 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 14, 16, 12, 14 ],
|
||||
"width": 36,
|
||||
"height": 41
|
||||
}
|
||||
@ -140,9 +141,9 @@
|
||||
"type": "mesh",
|
||||
"uvs": [ 0.95508, 0.20749, 0.81927, 0.65213, 0.94754, 0.77308, 0.67842, 0.97346, 0.46463, 1, 0.26845, 1, 0.04963, 0.90706, 0.2106, 0.60115, 0.07478, 0.40195, 0.18545, 0, 0.28857, 0 ],
|
||||
"triangles": [ 10, 8, 9, 1, 7, 10, 7, 8, 10, 0, 1, 10, 1, 4, 7, 3, 1, 2, 5, 6, 7, 7, 4, 5, 1, 3, 4 ],
|
||||
"vertices": [ -0.19, 6.82, 30.97, 10.96, 37.97, 17.33, 53.88, 12.6, 57.58, 6.31, 59.34, 0.08, 55.04, -8.63, 32.99, -9.33, 20.79, -17.43, -7.27, -21.56, -8.19, -18.29 ],
|
||||
"edges": [ 20, 0, 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 18, 20, 16, 18 ],
|
||||
"vertices": [ -0.19, 6.82, 30.97, 10.96, 37.97, 17.33, 53.88, 12.6, 57.58, 6.31, 59.34, 0.08, 55.04, -8.63, 32.99, -9.33, 20.79, -17.43, -7.27, -21.56, -8.18999, -18.29 ],
|
||||
"hull": 11,
|
||||
"edges": [ 20, 0, 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 18, 20, 16, 18 ],
|
||||
"width": 33,
|
||||
"height": 70
|
||||
}
|
||||
@ -152,10 +153,10 @@
|
||||
"name": "goblin/left-shoulder",
|
||||
"type": "mesh",
|
||||
"uvs": [ 0.7377, 0.40692, 1, 0.75237, 1, 1, 0.62046, 1, 0.26184, 0.56601, 0, 0.29783, 0, 0, 0.44115, 0 ],
|
||||
"triangles": [ 5, 6, 7, 4, 5, 7, 4, 7, 0, 3, 4, 0, 3, 0, 1, 3, 1, 2 ],
|
||||
"vertices": [ 15.18, 5.74, 32.17, 5.32, 41.79, 0.21, 36.63, -9.5, 14.88, -9.72, 0.9, -10.89, -10.66, -4.74, -4.66, 6.54 ],
|
||||
"edges": [ 12, 14, 14, 0, 4, 2, 0, 2, 4, 6, 6, 8, 10, 12, 8, 10 ],
|
||||
"triangles": [ 3, 1, 2, 3, 0, 1, 3, 4, 0, 4, 7, 0, 4, 5, 7, 5, 6, 7 ],
|
||||
"vertices": [ 15.18, 5.74, 32.16999, 5.32, 41.79, 0.21, 36.63, -9.5, 14.88, -9.72, 0.9, -10.89, -10.66, -4.73999, -4.66, 6.54 ],
|
||||
"hull": 8,
|
||||
"edges": [ 12, 14, 14, 0, 4, 2, 0, 2, 4, 6, 6, 8, 10, 12, 8, 10 ],
|
||||
"width": 29,
|
||||
"height": 44
|
||||
}
|
||||
@ -167,8 +168,8 @@
|
||||
"uvs": [ 1, 0.12167, 1, 0.54873, 0.91067, 0.78907, 0.76567, 1, 0.3087, 0.9579, 0, 0.68777, 0, 0.219, 0.51961, 0, 0.87552, 0 ],
|
||||
"triangles": [ 7, 8, 0, 5, 6, 7, 0, 1, 7, 4, 5, 7, 1, 4, 7, 2, 4, 1, 3, 4, 2 ],
|
||||
"vertices": [ 2.33, 13.06, 33.5, 12.57, 51, 9.34, 66.32, 4.31, 63, -10.71, 43.13, -20.58, 8.91, -20.04, -6.79, -2.64, -6.61, 9.1 ],
|
||||
"edges": [ 10, 8, 8, 6, 6, 4, 4, 2, 10, 12, 12, 14, 14, 16, 2, 0, 16, 0 ],
|
||||
"hull": 9,
|
||||
"edges": [ 10, 8, 8, 6, 6, 4, 4, 2, 10, 12, 12, 14, 14, 16, 2, 0, 16, 0 ],
|
||||
"width": 33,
|
||||
"height": 73
|
||||
}
|
||||
@ -178,10 +179,10 @@
|
||||
"name": "goblin/neck",
|
||||
"type": "mesh",
|
||||
"uvs": [ 0.81967, 0.27365, 0.92101, 0.82048, 0.47134, 1, 0.15679, 0.9354, 0, 0.7556, 0.19268, 0.51833, 0.15468, 0.35706, 0, 0.21989, 0.13568, 0, 0.68878, 0, 0.70145, 0.53872 ],
|
||||
"triangles": [ 6, 8, 9, 6, 9, 0, 7, 8, 6, 10, 5, 6, 0, 10, 6, 10, 0, 1, 3, 4, 5, 2, 5, 10, 2, 10, 1, 3, 5, 2 ],
|
||||
"vertices": [ 18.62, -11.65, -3.98, -13.85, -10.28, 2.76, -6.91, 13.89, 0.8, 19.05, 10.06, 11.51, 16.74, 12.45, 22.71, 17.64, 31.4, 12.19, 30.12, -7.67, 8.05, -6.71 ],
|
||||
"edges": [ 14, 12, 12, 10, 10, 8, 8, 6, 6, 4, 4, 2, 2, 20, 20, 0, 0, 18, 16, 18, 14, 16, 0, 2 ],
|
||||
"triangles": [ 3, 5, 2, 2, 10, 1, 2, 5, 10, 3, 4, 5, 10, 0, 1, 0, 10, 6, 10, 5, 6, 7, 8, 6, 6, 9, 0, 6, 8, 9 ],
|
||||
"vertices": [ 18.62, -11.65, -3.98, -13.85, -10.28, 2.76, -6.91, 13.89, 0.8, 19.04999, 10.06, 11.51, 16.74, 12.45, 22.71, 17.64, 31.4, 12.19, 30.12, -7.67, 8.05, -6.71 ],
|
||||
"hull": 10,
|
||||
"edges": [ 14, 12, 12, 10, 10, 8, 8, 6, 6, 4, 4, 2, 2, 20, 20, 0, 0, 18, 16, 18, 14, 16, 0, 2 ],
|
||||
"width": 36,
|
||||
"height": 41
|
||||
}
|
||||
@ -193,8 +194,8 @@
|
||||
"uvs": [ 1, 1, 0, 1, 0, 0, 1, 0 ],
|
||||
"triangles": [ 1, 2, 3, 1, 3, 0 ],
|
||||
"vertices": [ 25.38, -20.73, -36.61, -20.73, -36.61, 22.26, 25.38, 22.26 ],
|
||||
"edges": [ 0, 2, 2, 4, 4, 6, 0, 6 ],
|
||||
"hull": 4,
|
||||
"edges": [ 0, 2, 2, 4, 4, 6, 0, 6 ],
|
||||
"width": 62,
|
||||
"height": 43
|
||||
}
|
||||
@ -204,10 +205,10 @@
|
||||
"name": "goblin/right-arm",
|
||||
"type": "mesh",
|
||||
"uvs": [ 1, 0.09223, 1, 0.8501, 0.72058, 1, 0.24384, 1, 0, 0.86558, 0.20822, 0.10919, 0.50903, 0, 0.85342, 0 ],
|
||||
"triangles": [ 6, 7, 0, 2, 3, 5, 4, 5, 3, 1, 6, 0, 6, 2, 5, 1, 2, 6 ],
|
||||
"vertices": [ -4.75, 8.89, 33.03, 11.74, 40.99, 5.89, 41.81, -5.03, 35.53, -11.13, -2.53, -9.2, -8.5, -2.71, -9.09, 5.18 ],
|
||||
"edges": [ 8, 6, 4, 6, 4, 2, 12, 14, 2, 0, 14, 0, 10, 12, 8, 10 ],
|
||||
"triangles": [ 1, 2, 6, 6, 2, 5, 1, 6, 0, 4, 5, 3, 2, 3, 5, 6, 7, 0 ],
|
||||
"vertices": [ -4.75, 8.89, 33.03, 11.74, 40.99, 5.89, 41.81, -5.03, 35.53, -11.13, -2.53, -9.2, -8.5, -2.71, -9.09, 5.17999 ],
|
||||
"hull": 8,
|
||||
"edges": [ 8, 6, 4, 6, 4, 2, 12, 14, 2, 0, 14, 0, 10, 12, 8, 10 ],
|
||||
"width": 23,
|
||||
"height": 50
|
||||
}
|
||||
@ -219,8 +220,8 @@
|
||||
"uvs": [ 0.40851, 0.0047, 0.59087, 0.33404, 0.75959, 0.48311, 0.88907, 0.59751, 0.97532, 0.89391, 0.90385, 1, 0.6722, 1, 0.38633, 1, 0.08074, 1, 0, 0.88921, 0, 0.65984, 0, 0.46577, 0.0906, 0.0988, 0.305, 0, 0.47461, 0.71257, 0.715, 0.74681 ],
|
||||
"triangles": [ 1, 10, 11, 1, 13, 0, 14, 1, 2, 1, 12, 13, 12, 1, 11, 14, 10, 1, 15, 14, 2, 15, 2, 3, 9, 10, 14, 15, 3, 4, 7, 8, 9, 14, 7, 9, 6, 14, 15, 5, 6, 15, 7, 14, 6, 4, 5, 15 ],
|
||||
"vertices": [ 17.36, 25.99, 29.13, 15.44, 39.89, 10.8, 48.14, 7.24, 53.84, -2.38, 49.43, -6, 34.84, -6.39, 16.84, -6.87, -2.4, -7.38, -7.58, -3.86, -7.78, 3.7, -7.95, 10.1, -2.57, 22.36, 10.84, 25.97, 22.14, 2.75, 37.31, 2.03 ],
|
||||
"edges": [ 0, 2, 6, 8, 8, 10, 16, 18, 22, 24, 24, 26, 0, 26, 10, 12, 2, 4, 4, 6, 12, 14, 14, 16, 18, 20, 20, 22, 2, 28, 28, 14, 20, 28, 4, 30, 30, 12, 28, 30, 30, 8 ],
|
||||
"hull": 14,
|
||||
"edges": [ 0, 2, 6, 8, 8, 10, 16, 18, 22, 24, 24, 26, 0, 26, 10, 12, 2, 4, 4, 6, 12, 14, 14, 16, 18, 20, 20, 22, 2, 28, 28, 14, 20, 28, 4, 30, 30, 12, 28, 30, 30, 8 ],
|
||||
"width": 63,
|
||||
"height": 33
|
||||
}
|
||||
@ -231,9 +232,9 @@
|
||||
"type": "mesh",
|
||||
"uvs": [ 0.17957, 0, 0, 0.44772, 0, 0.79734, 0.20057, 0.94264, 0.55057, 1, 0.8539, 1, 0.89823, 0.82004, 0.8259, 0.74285, 0.84223, 0.49993, 0.96356, 0.34102, 0.66023, 0 ],
|
||||
"triangles": [ 8, 10, 9, 0, 10, 1, 8, 2, 1, 8, 1, 10, 7, 3, 8, 3, 2, 8, 4, 3, 7, 5, 7, 6, 4, 7, 5 ],
|
||||
"vertices": [ -10.82, -9.45, 5.95, -15.34, 18.88, -14.9, 24, -7.5, 25.69, 5.16, 25.31, 16.07, 18.61, 17.44, 15.84, 14.74, 6.84, 15.02, 0.81, 19.18, -11.41, 7.83 ],
|
||||
"edges": [ 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 18, 20, 0, 20 ],
|
||||
"vertices": [ -10.82, -9.45, 5.95, -15.34, 18.87999, -14.9, 24, -7.5, 25.69, 5.16, 25.31, 16.07, 18.61, 17.44, 15.84, 14.74, 6.84, 15.02, 0.81, 19.18, -11.41, 7.83 ],
|
||||
"hull": 11,
|
||||
"edges": [ 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 18, 20, 0, 20 ],
|
||||
"width": 36,
|
||||
"height": 37
|
||||
}
|
||||
@ -245,8 +246,8 @@
|
||||
"uvs": [ 0.88538, 0.22262, 0.76167, 0.3594, 0.75088, 0.78308, 0.95326, 0.84981, 1, 0.60302 ],
|
||||
"triangles": [ 1, 0, 4, 2, 1, 4, 3, 2, 4 ],
|
||||
"vertices": [ -2.82, 15.97, 2.4, 11.71, 18.08, 11.9, 20.27, 19.27, 11.09, 20.62 ],
|
||||
"edges": [ 2, 4, 4, 6, 6, 8, 2, 0, 0, 8 ],
|
||||
"hull": 5,
|
||||
"edges": [ 2, 4, 4, 6, 6, 8, 2, 0, 0, 8 ],
|
||||
"width": 36,
|
||||
"height": 37
|
||||
}
|
||||
@ -257,9 +258,9 @@
|
||||
"type": "mesh",
|
||||
"uvs": [ 1, 0.27261, 0.81312, 0.52592, 0.79587, 0.71795, 0.95544, 0.80988, 0.85193, 0.95493, 0.47241, 1, 0.14033, 1, 0, 0.8773, 0.14896, 0.67914, 0.1619, 0.30325, 0.60611, 0 ],
|
||||
"triangles": [ 1, 10, 0, 9, 10, 1, 8, 9, 1, 2, 8, 1, 4, 2, 3, 6, 7, 8, 5, 6, 8, 2, 5, 8, 4, 5, 2 ],
|
||||
"vertices": [ 6.26, 8.46, 23.32, 8.04, 37.1, 12.89, 41.45, 20.82, 53.07, 21.46, 61.33, 10.06, 65.77, -1.03, 58.99, -9.19, 43.02, -9.81, 16.33, -20, -12.79, -9.26 ],
|
||||
"edges": [ 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 0, 20, 18, 20 ],
|
||||
"vertices": [ 6.26, 8.46, 23.32, 8.04, 37.09999, 12.89, 41.45, 20.82, 53.07, 21.46, 61.33, 10.06, 65.76999, -1.03, 58.99, -9.18999, 43.02, -9.81, 16.33, -20, -12.79, -9.26 ],
|
||||
"hull": 11,
|
||||
"edges": [ 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 0, 20, 18, 20 ],
|
||||
"width": 36,
|
||||
"height": 76
|
||||
}
|
||||
@ -269,10 +270,10 @@
|
||||
"name": "goblin/right-shoulder",
|
||||
"type": "mesh",
|
||||
"uvs": [ 0.62008, 0.03708, 0.92131, 0.09048, 1, 0.38319, 0.72049, 0.6937, 0.31656, 1, 0, 1, 0, 0.75106, 0.28233, 0.49988 ],
|
||||
"triangles": [ 2, 3, 0, 2, 0, 1, 7, 0, 3, 4, 5, 6, 4, 7, 3, 4, 6, 7 ],
|
||||
"triangles": [ 4, 6, 7, 4, 7, 3, 4, 5, 6, 7, 0, 3, 2, 0, 1, 2, 3, 0 ],
|
||||
"vertices": [ -3.17, -11.05, -9, -0.57, -1.01, 10.33, 16.69, 11.17, 37.41, 8.2, 45.45, -1.16, 36.95, -8.46, 21.2, -7.47 ],
|
||||
"edges": [ 10, 12, 12, 14, 14, 0, 0, 2, 2, 4, 4, 6, 8, 10, 6, 8 ],
|
||||
"hull": 8,
|
||||
"edges": [ 10, 12, 12, 14, 14, 0, 0, 2, 2, 4, 4, 6, 8, 10, 6, 8 ],
|
||||
"width": 39,
|
||||
"height": 45
|
||||
}
|
||||
@ -283,9 +284,9 @@
|
||||
"type": "mesh",
|
||||
"uvs": [ 0.27018, 0, 0.11618, 0.18177, 0, 0.70688, 0, 0.89577, 0.26668, 1, 0.48718, 1, 0.67618, 0.83532, 1, 0.5161, 1, 0.25543, 0.74618, 0.0571 ],
|
||||
"triangles": [ 9, 8, 7, 9, 1, 0, 6, 9, 7, 6, 1, 9, 2, 1, 6, 4, 3, 2, 6, 4, 2, 5, 4, 6 ],
|
||||
"vertices": [ -9.85, -10.37, 2.17, -14.07, 35.49, -13.66, 47.29, -12.11, 52.61, -2.26, 51.63, 5.16, 40.51, 10.18, 19.13, 18.47, 2.85, 16.32, -8.4, 6.14 ],
|
||||
"edges": [ 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 0, 18 ],
|
||||
"vertices": [ -9.85, -10.37, 2.17, -14.07, 35.49, -13.66, 47.29, -12.11, 52.61, -2.26, 51.63, 5.16, 40.50999, 10.18, 19.12999, 18.46999, 2.85, 16.32, -8.39999, 6.14 ],
|
||||
"hull": 10,
|
||||
"edges": [ 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 0, 18 ],
|
||||
"width": 34,
|
||||
"height": 63
|
||||
}
|
||||
@ -295,10 +296,10 @@
|
||||
"name": "goblin/torso",
|
||||
"type": "mesh",
|
||||
"uvs": [ 0, 0.33287, 0.15945, 0.46488, 0.15761, 0.60314, 0.15502, 0.79806, 0.32807, 0.93478, 0.6875, 1, 0.80731, 1, 1, 0.77763, 1, 0.66147, 1, 0.56703, 0.93207, 0.4771, 0.86944, 0.39416, 0.83837, 0.226, 0.68085, 0, 0.14836, 0, 0, 0.07199, 0.78734, 0.86249, 0.43679, 0.79649, 0.76738, 0.61733, 0.44345, 0.58747, 0.54329, 0.38316, 0.77692, 0.73446, 0.66478, 0.51012 ],
|
||||
"triangles": [ 0, 15, 14, 20, 14, 13, 20, 13, 12, 1, 0, 14, 20, 12, 11, 20, 1, 14, 22, 20, 11, 22, 11, 10, 19, 1, 20, 19, 20, 22, 2, 1, 19, 18, 22, 10, 18, 10, 9, 19, 22, 18, 18, 9, 8, 21, 18, 8, 21, 8, 7, 17, 2, 19, 21, 17, 19, 21, 19, 18, 3, 2, 17, 16, 21, 7, 17, 21, 16, 4, 3, 17, 5, 17, 16, 4, 17, 5, 6, 16, 7, 5, 16, 6 ],
|
||||
"vertices": [ 56.93, 27.95, 43.37, 18.23, 30.16, 19.5, 11.53, 21.28, -2.55, 10.69, -10.89, -13.12, -11.59, -21.23, 8.54, -36.12, 19.65, -37.08, 28.68, -37.86, 37.68, -34, 45.98, -30.44, 56.4, -29.07, 84.78, -20.92, 87.9, 15.15, 81.88, 25.79, 1.67, -21.01, 10.03, 2.18, 25.23, -18.25, 29.98, 0, 48.54, -8.39, 13.98, -21.36, 35.9, -15.6 ],
|
||||
"edges": [ 0, 2, 6, 8, 8, 10, 10, 12, 12, 14, 22, 24, 24, 26, 26, 28, 28, 30, 0, 30, 14, 32, 32, 34, 34, 6, 18, 36, 36, 38, 2, 4, 4, 6, 38, 4, 2, 40, 40, 22, 40, 38, 38, 34, 32, 10, 34, 8, 40, 28, 14, 16, 16, 18, 32, 42, 42, 36, 16, 42, 42, 34, 18, 20, 20, 22, 36, 44, 44, 40, 20, 44 ],
|
||||
"triangles": [ 5, 16, 6, 6, 16, 7, 4, 17, 5, 5, 17, 16, 4, 3, 17, 17, 21, 16, 16, 21, 7, 3, 2, 17, 21, 19, 18, 21, 17, 19, 17, 2, 19, 21, 8, 7, 21, 18, 8, 18, 9, 8, 19, 22, 18, 18, 10, 9, 18, 22, 10, 2, 1, 19, 19, 20, 22, 19, 1, 20, 22, 11, 10, 22, 20, 11, 20, 1, 14, 20, 12, 11, 1, 0, 14, 20, 13, 12, 20, 14, 13, 0, 15, 14 ],
|
||||
"vertices": [ 56.93, 27.95, 43.37, 18.23, 30.16, 19.5, 11.53, 21.28, -2.55, 10.69, -10.89, -13.12, -11.59, -21.23, 8.54, -36.12, 19.65, -37.08, 28.68, -37.86, 37.68, -34, 45.98, -30.44, 56.4, -29.07, 84.78, -20.92, 87.9, 15.15, 81.87999, 25.79, 1.67, -21.01, 10.03, 2.18, 25.23, -18.25, 29.98, 0, 48.54, -8.39, 13.98, -21.36, 35.9, -15.6 ],
|
||||
"hull": 16,
|
||||
"edges": [ 0, 2, 6, 8, 8, 10, 10, 12, 12, 14, 22, 24, 24, 26, 26, 28, 28, 30, 0, 30, 14, 32, 32, 34, 34, 6, 18, 36, 36, 38, 2, 4, 4, 6, 38, 4, 2, 40, 40, 22, 40, 38, 38, 34, 32, 10, 34, 8, 40, 28, 14, 16, 16, 18, 32, 42, 42, 36, 16, 42, 42, 34, 18, 20, 20, 22, 36, 44, 44, 40, 20, 44 ],
|
||||
"width": 68,
|
||||
"height": 96
|
||||
}
|
||||
@ -309,9 +310,9 @@
|
||||
"type": "mesh",
|
||||
"uvs": [ 0.36097, 0.44959, 0.66297, 0.60591, 1, 0.19486, 1, 0.57117, 0.75897, 1, 0.38697, 1, 0, 0.26433, 0, 0, 0.12497, 0 ],
|
||||
"triangles": [ 6, 7, 8, 6, 8, 0, 3, 1, 2, 5, 0, 1, 6, 0, 5, 4, 1, 3, 5, 1, 4 ],
|
||||
"vertices": [ -10.56, 12.87, 6.53, 9.9, 25.62, 17.71, 25.62, 10.56, 11.97, 2.41, -9.09, 2.41, -31, 16.39, -31, 21.41, -23.92, 21.41 ],
|
||||
"edges": [ 14, 16, 16, 0, 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 12, 14, 10, 12, 0, 10, 2, 8 ],
|
||||
"vertices": [ -10.56, 12.87, 6.53, 9.89999, 25.62, 17.70999, 25.62, 10.56, 11.97, 2.41, -9.09, 2.41, -31, 16.39, -31, 21.41, -23.92, 21.41 ],
|
||||
"hull": 9,
|
||||
"edges": [ 14, 16, 16, 0, 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 12, 14, 10, 12, 0, 10, 2, 8 ],
|
||||
"width": 55,
|
||||
"height": 19
|
||||
}
|
||||
@ -322,9 +323,9 @@
|
||||
"type": "mesh",
|
||||
"uvs": [ 0, 0.32029, 0.14893, 0.59457, 0.22437, 1, 0.35909, 1, 0.50998, 1, 0.79559, 0.58453, 0.9842, 0.28015, 1, 0.00588, 0.46957, 0.17646, 0, 0.03933, 0.48843, 0.59122, 0.48114, 0.43099 ],
|
||||
"triangles": [ 6, 8, 7, 0, 9, 8, 11, 8, 6, 0, 8, 11, 5, 11, 6, 10, 11, 5, 1, 0, 11, 1, 11, 10, 3, 2, 1, 10, 3, 1, 4, 10, 5, 3, 10, 4 ],
|
||||
"vertices": [ -13.22, 5.56, -8, -2.47, -5.49, -14.27, -0.64, -14.36, 4.78, -14.45, 15.27, -2.59, 22.22, 6.11, 22.92, 14.05, 3.75, 9.44, -13.08, 13.71, 4.21, -2.59, 4.03, 2.05 ],
|
||||
"edges": [ 0, 2, 2, 4, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 0, 18, 4, 6, 6, 8, 6, 20, 16, 22, 22, 20, 0, 22, 22, 12, 2, 20, 20, 10 ],
|
||||
"vertices": [ -13.22, 5.56, -8, -2.47, -5.49, -14.27, -0.64, -14.36, 4.78, -14.45, 15.27, -2.58999, 22.22, 6.11, 22.92, 14.05, 3.75, 9.43999, -13.08, 13.71, 4.21, -2.58999, 4.03, 2.05 ],
|
||||
"hull": 10,
|
||||
"edges": [ 0, 2, 2, 4, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 0, 18, 4, 6, 6, 8, 6, 20, 16, 22, 22, 20, 0, 22, 22, 12, 2, 20, 20, 10 ],
|
||||
"width": 36,
|
||||
"height": 29
|
||||
}
|
||||
@ -757,7 +758,7 @@
|
||||
]
|
||||
}
|
||||
},
|
||||
"ffd": {
|
||||
"deform": {
|
||||
"default": {
|
||||
"left hand item": {
|
||||
"spear": [
|
||||
@ -769,19 +770,19 @@
|
||||
{
|
||||
"time": 0,
|
||||
"offset": 26,
|
||||
"vertices": [ 2.34, 0.14 ],
|
||||
"vertices": [ 2.34754, 0.14469 ],
|
||||
"curve": [ 0.25, 0, 0.75, 1 ]
|
||||
},
|
||||
{
|
||||
"time": 0.5,
|
||||
"offset": 8,
|
||||
"vertices": [ -1.19, 4.31, 0.07, 6.41, 1.66, 6.18, 1.75, 3.59 ],
|
||||
"vertices": [ -1.19415, 4.31531, 0.07279, 6.41351, 1.66048, 6.18882, 1.75232, 3.59555 ],
|
||||
"curve": [ 0.25, 0, 0.75, 1 ]
|
||||
},
|
||||
{
|
||||
"time": 1,
|
||||
"offset": 26,
|
||||
"vertices": [ 2.34, 0.14 ]
|
||||
"vertices": [ 2.34754, 0.14469 ]
|
||||
}
|
||||
]
|
||||
}
|
||||
@ -795,22 +796,22 @@
|
||||
},
|
||||
{
|
||||
"time": 0.2,
|
||||
"vertices": [ -10.97, -6.68, -4.68, -2.46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.08, 0.08, -1.08, 0.08, -1.08, 0.08, 0, 0, -2.22, 2.66, -4.83, 2.7, -5.7, -0.51, -3.15, -1.61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6.64, 0.81, -11.82, -1.34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.08, 0.08 ],
|
||||
"vertices": [ -10.97826, -6.68962, -4.68015, -2.46175, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.08534, 0.08391, -1.08534, 0.08391, -1.08534, 0.08391, 0, 0, -2.22324, 2.66465, -4.83295, 2.70084, -5.70553, -0.51941, -3.15962, -1.61501, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6.64741, 0.81612, -11.82285, -1.34955, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.08534, 0.08391 ],
|
||||
"curve": [ 0.25, 0, 0.75, 1 ]
|
||||
},
|
||||
{
|
||||
"time": 0.3666,
|
||||
"vertices": [ 10.69, 4.05, 3.66, 1.85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.47, 0.09, 1.47, 0.09, 1.47, 0.09, 0, 0, 2.69, -0.22, 3.77, 0.11, 3.68, 1.55, 2.49, 1.65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4.45, -3.91, 9.19, -1.66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.47, 0.09 ],
|
||||
"vertices": [ 10.69275, 4.05949, 3.66373, 1.85426, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.47305, 0.09017, 1.47305, 0.09017, 1.47305, 0.09017, 0, 0, 2.69652, -0.22738, 3.77135, 0.11417, 3.6893, 1.55352, 2.49594, 1.65501, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4.4588, -3.9113, 9.19593, -1.66854, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.47305, 0.09017 ],
|
||||
"curve": [ 0.621, 0, 0.75, 1 ]
|
||||
},
|
||||
{
|
||||
"time": 0.7,
|
||||
"vertices": [ -10.97, -6.68, -4.68, -2.46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.17, -0.17, -1.17, -0.17, -1.17, -0.17, 0, 0, -2.22, 2.66, -4.83, 2.7, -5.7, -0.51, -3.15, -1.61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6.64, 0.81, -11.82, -1.34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.17, -0.17 ],
|
||||
"vertices": [ -10.97826, -6.68962, -4.68015, -2.46175, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.1755, -0.17183, -1.1755, -0.17182, -1.1755, -0.17183, 0, 0, -2.22324, 2.66465, -4.83295, 2.70084, -5.70553, -0.51941, -3.15962, -1.61501, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6.64741, 0.81612, -11.82285, -1.34955, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.1755, -0.17183 ],
|
||||
"curve": [ 0.25, 0, 0.75, 1 ]
|
||||
},
|
||||
{
|
||||
"time": 0.8666,
|
||||
"vertices": [ 10.69, 4.05, 3.66, 1.85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.38, 0.08, 0.38, 0.08, 0.38, 0.08, 0, 0, 2.69, -0.22, 3.77, 0.11, 3.68, 1.55, 2.49, 1.65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4.45, -3.91, 9.19, -1.66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.38, 0.08 ],
|
||||
"vertices": [ 10.69275, 4.05949, 3.66373, 1.85426, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.38687, 0.08446, 0.38687, 0.08446, 0.38687, 0.08446, 0, 0, 2.69652, -0.22738, 3.77135, 0.11417, 3.6893, 1.55352, 2.49594, 1.65501, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4.4588, -3.9113, 9.19593, -1.66854, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.38687, 0.08446 ],
|
||||
"curve": [ 0.25, 0, 0.75, 1 ]
|
||||
},
|
||||
{ "time": 1 }
|
||||
@ -821,35 +822,35 @@
|
||||
{
|
||||
"time": 0,
|
||||
"offset": 8,
|
||||
"vertices": [ 3.69, 2.37, -7.16, 18.79, -12.78, 14.77, -12.75, 6.5, -3.13, 1.98, -0.44, 0.36, 0, 0, -3.8, 2.98 ]
|
||||
"vertices": [ 3.69298, 2.37572, -7.16969, 18.79732, -12.78161, 14.7778, -12.75775, 6.50514, -3.13475, 1.98906, -0.44401, 0.36629, 0, 0, -3.80085, 2.98474 ]
|
||||
},
|
||||
{ "time": 0.1333 },
|
||||
{
|
||||
"time": 0.2333,
|
||||
"offset": 8,
|
||||
"vertices": [ -3.96, -2.34, -5.8, -12.47, -2.23, -12.99, 2.02, -9.1, 0, 0, 0, 0, 0, 0, -1.35, -5.28 ]
|
||||
"vertices": [ -3.96072, -2.34594, -5.80445, -12.47629, -2.23129, -12.99037, 2.02941, -9.1036, 0, 0, 0, 0, 0, 0, -1.35254, -5.2883 ]
|
||||
},
|
||||
{
|
||||
"time": 0.3666,
|
||||
"offset": 8,
|
||||
"vertices": [ 0.66, 0.33, 0.33, 2.69, -0.48, 2.54, -1.13, 1.38, 0, 0, 0, 0, 0, 0, -0.11, 0.79 ]
|
||||
"vertices": [ 0.66504, 0.33548, 0.33902, 2.69014, -0.4817, 2.54524, -1.13592, 1.38562, 0, 0, 0, 0, 0, 0, -0.11907, 0.79273 ]
|
||||
},
|
||||
{ "time": 0.5, "curve": "stepped" },
|
||||
{ "time": 0.6333 },
|
||||
{
|
||||
"time": 0.7333,
|
||||
"offset": 8,
|
||||
"vertices": [ -2.97, 9.4, -6.91, 19.92, -10.55, 18.41, -12.37, 12.38, -4.72, 6.3, 0, 0, -1.48, 4.88, -7.06, 10.7 ]
|
||||
"vertices": [ -2.97737, 9.40254, -6.91661, 19.92794, -10.55287, 18.41085, -12.37161, 12.38473, -4.72606, 6.30798, 0, 0, -1.48902, 4.88944, -7.06773, 10.70101 ]
|
||||
},
|
||||
{
|
||||
"time": 0.8333,
|
||||
"offset": 6,
|
||||
"vertices": [ 1.05, 1.56, -2.52, 7.99, -5.52, 17.14, -8.93, 15.79, -10.73, 10.22, -4.23, 5.36, 0, 0, 0, 0, -5.83, 8.55 ]
|
||||
"vertices": [ 1.05318, 1.56361, -2.52722, 7.9974, -5.5203, 17.14136, -8.93317, 15.79635, -10.73747, 10.22055, -4.23801, 5.36992, 0, 0, 0, 0, -5.83147, 8.55531 ]
|
||||
},
|
||||
{
|
||||
"time": 1,
|
||||
"offset": 8,
|
||||
"vertices": [ 3.69, 2.37, -7.16, 18.79, -12.78, 14.77, -12.75, 6.5, -3.13, 1.98, -0.44, 0.36, 0, 0, -3.8, 2.98 ]
|
||||
"vertices": [ 3.69298, 2.37572, -7.16969, 18.79732, -12.78161, 14.7778, -12.75775, 6.50514, -3.13475, 1.98906, -0.44401, 0.36629, 0, 0, -3.80085, 2.98474 ]
|
||||
}
|
||||
]
|
||||
},
|
||||
@ -859,22 +860,22 @@
|
||||
{
|
||||
"time": 0.1333,
|
||||
"offset": 6,
|
||||
"vertices": [ -0.68, -4.13 ]
|
||||
"vertices": [ -0.68989, -4.13283 ]
|
||||
},
|
||||
{
|
||||
"time": 0.3333,
|
||||
"offset": 6,
|
||||
"vertices": [ -1.04, -3.1 ]
|
||||
"vertices": [ -1.04945, -3.10476 ]
|
||||
},
|
||||
{
|
||||
"time": 0.7,
|
||||
"offset": 6,
|
||||
"vertices": [ -1.42, -6.3 ]
|
||||
"vertices": [ -1.4245, -6.30616 ]
|
||||
},
|
||||
{
|
||||
"time": 0.8666,
|
||||
"offset": 6,
|
||||
"vertices": [ -1.13, -1.79 ]
|
||||
"vertices": [ -1.13541, -1.79035 ]
|
||||
},
|
||||
{ "time": 1 }
|
||||
]
|
||||
@ -885,38 +886,38 @@
|
||||
{
|
||||
"time": 0.1333,
|
||||
"offset": 2,
|
||||
"vertices": [ -2.81, 2.63, -2.35, 3.89, -1.99, 4.86, -0.93, 5.57, -0.48, 5.09, -0.34, 3.42, -0.17, 1.36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.31, 1.91, -1.32, 3.65 ]
|
||||
"vertices": [ -2.81258, 2.63114, -2.35238, 3.89441, -1.99921, 4.8639, -0.93273, 5.57982, -0.48886, 5.09854, -0.34812, 3.42912, -0.17445, 1.36898, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.31305, 1.91371, -1.32986, 3.65703 ]
|
||||
},
|
||||
{
|
||||
"time": 0.2333,
|
||||
"offset": 2,
|
||||
"vertices": [ -6.39, 6.41, -7.74, 8.27, -7.02, 11.35, -4.03, 13.93, -2.5, 12.62, -1.46, 7.58, -0.17, 1.36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3.84, 2.61, -4.53, 7.92 ]
|
||||
"vertices": [ -6.39088, 6.41245, -7.74575, 8.27191, -7.02471, 11.35894, -4.0347, 13.93454, -2.50399, 12.62962, -1.46124, 7.58915, -0.17445, 1.36898, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3.84765, 2.61215, -4.53955, 7.92357 ]
|
||||
},
|
||||
{
|
||||
"time": 0.3,
|
||||
"offset": 2,
|
||||
"vertices": [ -8.27, 6.68, -9.29, 10.13, -8.62, 14.71, -4.58, 18.81, -2.2, 17.1, -0.07, 9.9, 2.54, 1.01, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.94, 2.38, -4.59, 10.01 ]
|
||||
"vertices": [ -8.27184, 6.68821, -9.29764, 10.13797, -8.62231, 14.71339, -4.58629, 18.81939, -2.20304, 17.10709, -0.07794, 9.9046, 2.54451, 1.01642, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.94624, 2.38007, -4.59398, 10.01888 ]
|
||||
},
|
||||
{
|
||||
"time": 0.3666,
|
||||
"offset": 2,
|
||||
"vertices": [ -10.47, 9.44, -13.36, 12.4, -14.32, 16.94, -9.24, 23.55, -5.51, 21.51, -1.19, 11.53, 2.54, 1.01, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4.14, 2.29, -6.63, 11.37 ]
|
||||
"vertices": [ -10.47683, 9.44175, -13.36882, 12.40982, -14.32568, 16.94392, -9.24462, 23.55674, -5.51711, 21.51377, -1.19581, 11.53192, 2.54451, 1.01642, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4.14847, 2.29389, -6.63418, 11.37127 ]
|
||||
},
|
||||
{
|
||||
"time": 0.5,
|
||||
"offset": 2,
|
||||
"vertices": [ -5.42, 4.36, -10.59, 7.04, -11.64, 11.55, -6.19, 20.12, -1.45, 18.05, 4.86, 6.41, 2.81, 0.27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.96, 4.94 ]
|
||||
"vertices": [ -5.42473, 4.36854, -10.59004, 7.04468, -11.64251, 11.55845, -6.19665, 20.12805, -1.45497, 18.05411, 4.86619, 6.41678, 2.81462, 0.27601, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.96412, 4.94829 ]
|
||||
},
|
||||
{ "time": 0.6333 },
|
||||
{
|
||||
"time": 0.7333,
|
||||
"offset": 4,
|
||||
"vertices": [ 1.31, -6.84, -0.87, -12.54, -5.98, -14.08, -7.15, -11.63, -5.67, -4.83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.06, -6.93 ]
|
||||
"vertices": [ 1.31462, -6.84099, -0.87905, -12.54479, -5.9851, -14.08367, -7.15892, -11.63193, -5.6792, -4.83544, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2.06163, -6.93844 ]
|
||||
},
|
||||
{
|
||||
"time": 0.8,
|
||||
"offset": 4,
|
||||
"vertices": [ 0.65, -3.42, -0.43, -6.27, -2.99, -7.04, -3.57, -5.81, -2.83, -2.41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.79, -1.28, 0, 0, 0, 0, -1.03, -3.46 ]
|
||||
"vertices": [ 0.65731, -3.42049, -0.43952, -6.27239, -2.99255, -7.04183, -3.57946, -5.81596, -2.83959, -2.41772, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.79687, -1.2802, 0, 0, 0, 0, -1.03081, -3.46922 ]
|
||||
},
|
||||
{ "time": 0.8666 }
|
||||
]
|
||||
@ -926,13 +927,13 @@
|
||||
{
|
||||
"time": 0,
|
||||
"offset": 4,
|
||||
"vertices": [ -1.48, 0.34, 0, 0, 1.31, 0.08, 1.6, 0.09, 0.13, 0.15, 0, 0, 0, 0, -0.72, -0.04 ]
|
||||
"vertices": [ -1.48416, 0.34736, 0, 0, 1.31152, 0.08085, 1.60295, 0.09881, 0.13673, 0.1547, 0, 0, 0, 0, -0.72862, -0.0449 ]
|
||||
},
|
||||
{ "time": 0.5 },
|
||||
{
|
||||
"time": 1,
|
||||
"offset": 4,
|
||||
"vertices": [ -1.48, 0.34, 0, 0, 1.31, 0.08, 1.6, 0.09, 0.13, 0.15, 0, 0, 0, 0, -0.72, -0.04 ]
|
||||
"vertices": [ -1.48416, 0.34736, 0, 0, 1.31152, 0.08085, 1.60295, 0.09881, 0.13673, 0.1547, 0, 0, 0, 0, -0.72862, -0.0449 ]
|
||||
}
|
||||
]
|
||||
},
|
||||
@ -942,7 +943,7 @@
|
||||
{
|
||||
"time": 0.6,
|
||||
"offset": 6,
|
||||
"vertices": [ 1.8, -1.56 ]
|
||||
"vertices": [ 1.80396, -1.56552 ]
|
||||
},
|
||||
{ "time": 1 }
|
||||
]
|
||||
@ -951,17 +952,17 @@
|
||||
"right upper leg": [
|
||||
{
|
||||
"time": 0,
|
||||
"vertices": [ -6.03, -1.46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.34, -1.93, -1.86, -5.05, -2.5, -3.09 ]
|
||||
"vertices": [ -6.03856, -1.46324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.34684, -1.93101, -1.86047, -5.05265, -2.5014, -3.09984 ]
|
||||
},
|
||||
{ "time": 0.3333 },
|
||||
{
|
||||
"time": 0.8666,
|
||||
"offset": 14,
|
||||
"vertices": [ 0.13, -2.35, -1.33, -5.99, -1.35, -4.43 ]
|
||||
"vertices": [ 0.13424, -2.35377, -1.33317, -5.99572, -1.35861, -4.43323 ]
|
||||
},
|
||||
{
|
||||
"time": 1,
|
||||
"vertices": [ -6.03, -1.46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.34, -1.93, -1.86, -5.05, -2.5, -3.09 ]
|
||||
"vertices": [ -6.03856, -1.46324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.34684, -1.93101, -1.86047, -5.05265, -2.5014, -3.09984 ]
|
||||
}
|
||||
]
|
||||
},
|
||||
@ -970,37 +971,37 @@
|
||||
{
|
||||
"time": 0,
|
||||
"offset": 14,
|
||||
"vertices": [ -1.48, -0.24, -2.72, -2.15, -0.51, -3.39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.09, -2.61, 0, 0, 0.57, -1.24, 0, 0, 0, 0, -2.11, -3.29 ]
|
||||
"vertices": [ -1.48952, -0.24021, -2.72312, -2.15489, -0.51183, -3.39752, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.0964, -2.61458, 0, 0, 0.57686, -1.24874, 0, 0, 0, 0, -2.11251, -3.29932 ]
|
||||
},
|
||||
{
|
||||
"time": 0.1333,
|
||||
"offset": 14,
|
||||
"vertices": [ 1.31, -0.59, -0.97, -1.62, 0.74, -0.61, -1.44, 1.97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.65, -3.95, 0, 0, -1.46, -0.31, 0, 0, 0, 0, -3.31, -3.55, -2.56, 0.29 ]
|
||||
"vertices": [ 1.31318, -0.59727, -0.97944, -1.62934, 0.74861, -0.6123, -1.44598, 1.97515, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.65701, -3.95221, 0, 0, -1.46987, -0.31373, 0, 0, 0, 0, -3.31756, -3.5535, -2.56329, 0.29673 ]
|
||||
},
|
||||
{
|
||||
"time": 0.3,
|
||||
"offset": 14,
|
||||
"vertices": [ 6.03, -3.13, 7.55, -1.38, 6.79, 0.31, 4.23, 1.14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4.07, -5.16, 0, 0, 4, 0.27, 0, 0, 0, 0, 3.43, -3.52 ]
|
||||
"vertices": [ 6.03761, -3.13561, 7.55475, -1.38111, 6.79747, 0.31171, 4.23503, 1.14012, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4.07575, -5.16824, 0, 0, 4.0041, 0.27245, 0, 0, 0, 0, 3.4376, -3.52286 ]
|
||||
},
|
||||
{
|
||||
"time": 0.5,
|
||||
"offset": 14,
|
||||
"vertices": [ 2.25, -0.87, 2.57, -0.56, 3.17, -0.57, 1.48, 0.99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3.22, -4.43, 0, 0, 1.48, 0.01, 0, 0, 0, 0, 0.31, -3.28, -1.53, 0.17 ]
|
||||
"vertices": [ 2.25942, -0.87202, 2.575, -0.56861, 3.17112, -0.57003, 1.48704, 0.9924, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3.22451, -4.43862, 0, 0, 1.48691, 0.01586, 0, 0, 0, 0, 0.31388, -3.28095, -1.53797, 0.17803 ]
|
||||
},
|
||||
{
|
||||
"time": 0.6333,
|
||||
"offset": 14,
|
||||
"vertices": [ 0.75, -1.51, -0.97, -1.62, 0.74, -0.61, -1.44, 1.97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.65, -3.95, 0, 0, -1.46, -0.31, 0, 0, 0, 0, -3.31, -3.55, -2.56, 0.29 ]
|
||||
"vertices": [ 0.75002, -1.51701, -0.97944, -1.62934, 0.74861, -0.6123, -1.44598, 1.97515, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.65701, -3.95221, 0, 0, -1.46987, -0.31373, 0, 0, 0, 0, -3.31756, -3.5535, -2.56329, 0.29673 ]
|
||||
},
|
||||
{
|
||||
"time": 0.8666,
|
||||
"offset": 14,
|
||||
"vertices": [ 0.62, -1.26, 0.38, -2.2, 3.25, -0.5, 2.41, 2.39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.66, -3.1, 0, 0, 2.3, -1.15, 0, 0, 0, 0, -0.07, -3.63, -0.93, 0.1 ]
|
||||
"vertices": [ 0.62202, -1.26262, 0.38489, -2.20701, 3.25048, -0.50042, 2.41108, 2.39315, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.6639, -3.10099, 0, 0, 2.30655, -1.15196, 0, 0, 0, 0, -0.07676, -3.63497, -0.9321, 0.1079 ]
|
||||
},
|
||||
{
|
||||
"time": 1,
|
||||
"offset": 14,
|
||||
"vertices": [ -1.48, -0.24, -2.72, -2.15, -0.51, -3.39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.09, -2.61, 0, 0, 0.57, -1.24, 0, 0, 0, 0, -2.11, -3.29 ]
|
||||
"vertices": [ -1.48952, -0.24021, -2.72312, -2.15489, -0.51183, -3.39752, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.0964, -2.61458, 0, 0, 0.57686, -1.24874, 0, 0, 0, 0, -2.11251, -3.29932 ]
|
||||
}
|
||||
]
|
||||
},
|
||||
@ -1009,32 +1010,32 @@
|
||||
{
|
||||
"time": 0,
|
||||
"offset": 2,
|
||||
"vertices": [ -1.77, 0.54, -0.96, -1.03, -0.39, -0.24, -1.77, 0.54 ]
|
||||
"vertices": [ -1.77696, 0.54759, -0.96145, -1.03793, -0.39148, -0.24071, -1.77696, 0.54759 ]
|
||||
},
|
||||
{
|
||||
"time": 0.1333,
|
||||
"offset": 2,
|
||||
"vertices": [ -2.25, -1.03, -1.49, -4.23, -0.74, -2.84, -1.9, 0.54 ]
|
||||
"vertices": [ -2.25683, -1.03177, -1.49719, -4.23861, -0.74469, -2.84906, -1.90072, 0.54477 ]
|
||||
},
|
||||
{
|
||||
"time": 0.3333,
|
||||
"offset": 2,
|
||||
"vertices": [ -2.37, -0.05, -0.49, 0.19, -0.9, 1.16, -1.6, 2.7, 0.96, 0.8 ]
|
||||
"vertices": [ -2.37974, -0.05431, -0.49433, 0.19436, -0.90861, 1.16519, -1.60956, 2.70798, 0.96186, 0.80615 ]
|
||||
},
|
||||
{
|
||||
"time": 0.7,
|
||||
"offset": 2,
|
||||
"vertices": [ -0.91, -2.76, -0.62, -3.63, -0.84, -2.26, -2.56, 0.52 ]
|
||||
"vertices": [ -0.91714, -2.76567, -0.62214, -3.63489, -0.8494, -2.26772, -2.56076, 0.5297 ]
|
||||
},
|
||||
{
|
||||
"time": 0.8666,
|
||||
"offset": 2,
|
||||
"vertices": [ -2.56, 0.52, -1.58, 0.32, -1.38, 0.32, -2.56, 0.52 ]
|
||||
"vertices": [ -2.56076, 0.5297, -1.58064, 0.32031, -1.3847, 0.32476, -2.56076, 0.5297 ]
|
||||
},
|
||||
{
|
||||
"time": 1,
|
||||
"offset": 2,
|
||||
"vertices": [ -1.77, 0.54, -0.8, 0.53, -0.8, 0.53, -1.77, 0.54 ]
|
||||
"vertices": [ -1.77696, 0.54759, -0.80128, 0.53413, -0.80128, 0.53413, -1.77696, 0.54759 ]
|
||||
}
|
||||
]
|
||||
},
|
||||
@ -1042,35 +1043,35 @@
|
||||
"undies": [
|
||||
{
|
||||
"time": 0,
|
||||
"vertices": [ 0.43, 0.72, 10.6, -0.11, 2.29, 0, 2.29, 0, 2.29, 0, 0.58, 0.24, -2.4, -0.65, -2.27, -0.77, 2.29, 0, 0.58, -0.48, 4.98, -0.11, 6.5, -0.23 ]
|
||||
"vertices": [ 0.43098, 0.722, 10.60295, -0.11699, 2.29598, 0, 2.29598, 0, 2.29598, 0, 0.58798, 0.24399, -2.40018, -0.65335, -2.2782, -0.77533, 2.29598, 0, 0.58798, -0.48799, 4.98697, -0.11699, 6.50796, -0.23399 ]
|
||||
},
|
||||
{
|
||||
"time": 0.1333,
|
||||
"vertices": [ 0.72, 0.43, 7.2, -0.16, 1.37, 0, 1.37, 0, 1.37, 0, 1.25, 0.04, -0.99, -2.95, -1.37, -3.07, 1.37, 0, 0.35, -0.29, 2.99, -0.07, 3.9, -0.14 ]
|
||||
"vertices": [ 0.72659, 0.43319, 7.20416, -0.1638, 1.37759, 0, 1.37759, 0, 1.37759, 0, 1.25279, 0.0464, -0.99861, -2.95085, -1.37542, -3.07404, 1.37759, 0, 0.35279, -0.29279, 2.99218, -0.07019, 3.90478, -0.14039 ]
|
||||
},
|
||||
{
|
||||
"time": 0.3333,
|
||||
"vertices": [ 1.16, 0, 2.1, -0.23, 0, 0, 0, 0, 0, 0, 2.24, -0.24, -0.43, 0.6, -1.55, 0.48 ]
|
||||
"vertices": [ 1.16999, 0, 2.10599, -0.234, 0, 0, 0, 0, 0, 0, 2.24999, -0.24999, -0.4344, 0.60551, -1.55939, 0.48051 ]
|
||||
},
|
||||
{
|
||||
"time": 0.5333,
|
||||
"vertices": [ 1.16, 0, -0.23, -0.93, -2.92, 0.35, 0, 0, 0, 0, 0.49, -0.24, -0.64, -2.07, -0.64, -2.07 ]
|
||||
"vertices": [ 1.16999, 0, -0.234, -0.93599, -2.92499, 0.35099, 0, 0, 0, 0, 0.49999, -0.24999, -0.64078, -2.07914, -0.64078, -2.07914 ]
|
||||
},
|
||||
{
|
||||
"time": 0.7,
|
||||
"vertices": [ 1.86, -0.11, 4.66, -0.09, -1.76, 0.21, 0, 0, -0.56, 0.32, -1.13, -1.15, -2.19, -3.47, -1.29, -3.47, 0, 0, 0, 0, 1.58, -0.04, 2.65, 0.16 ]
|
||||
"vertices": [ 1.8627, -0.11514, 4.66326, -0.09099, -1.76428, 0.21171, 0, 0, -0.56832, 0.32832, -1.13833, -1.1511, -2.19996, -3.47068, -1.29718, -3.47068, 0, 0, 0, 0, 1.58785, -0.04642, 2.65941, 0.16714 ]
|
||||
},
|
||||
{
|
||||
"time": 0.8333,
|
||||
"vertices": [ 2.41, -0.2, 8.58, 0.58, -0.83, 0.1, 0, 0, -1.02, 0.59, -2.44, -1.87, -1.62, 0, 0, 0, 0, 0, 0, 0, 2.85, -0.08, 4.78, 0.3 ]
|
||||
"vertices": [ 2.41687, -0.20725, 8.58108, 0.585, -0.83571, 0.10028, 0, 0, -1.02299, 0.59098, -2.44899, -1.872, -1.62499, 0, 0, 0, 0, 0, 0, 0, 2.85813, -0.08356, 4.78695, 0.30086 ]
|
||||
},
|
||||
{
|
||||
"time": 0.8666,
|
||||
"vertices": [ 2.01, -0.02, 8.98, 0.44, -0.2, 0.08, 0.45, 0, -0.35, 0.47, -1.84, -1.44, -0.79, 1.26, 0.53, 1.23, 0.45, 0, 0.11, -0.09, 3.28, -0.09, 5.13, 0.19 ]
|
||||
"vertices": [ 2.01969, -0.0214, 8.98545, 0.4446, -0.20937, 0.08022, 0.45919, 0, -0.35919, 0.47279, -1.84159, -1.4488, -0.79153, 1.2642, 0.53285, 1.23981, 0.45919, 0, 0.11759, -0.09759, 3.2839, -0.09025, 5.13115, 0.19388 ]
|
||||
},
|
||||
{
|
||||
"time": 1,
|
||||
"vertices": [ 0.43, 0.72, 10.6, -0.11, 2.29, 0, 2.29, 0, 2.29, 0, 0.58, 0.24, -2.4, -0.65, -2.27, -0.77, 2.29, 0, 0.58, -0.48, 4.98, -0.11, 6.5, -0.23 ]
|
||||
"vertices": [ 0.43098, 0.722, 10.60295, -0.11699, 2.29598, 0, 2.29598, 0, 2.29598, 0, 0.58798, 0.24399, -2.40018, -0.65335, -2.2782, -0.77533, 2.29598, 0, 0.58798, -0.48799, 4.98697, -0.11699, 6.50796, -0.23399 ]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
BIN
spine-cocos2dx/example/Resources/common/goblins-mesh.png
Normal file
|
After Width: | Height: | Size: 214 KiB |
@ -1,251 +1,251 @@
|
||||
|
||||
raptor.png
|
||||
size: 1022,1022
|
||||
size: 2048,2048
|
||||
format: RGBA8888
|
||||
filter: Linear,Linear
|
||||
repeat: none
|
||||
back_arm
|
||||
rotate: false
|
||||
xy: 410, 545
|
||||
size: 46, 29
|
||||
orig: 46, 29
|
||||
xy: 830, 1093
|
||||
size: 91, 57
|
||||
orig: 91, 57
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
back_bracer
|
||||
rotate: false
|
||||
xy: 540, 548
|
||||
size: 39, 28
|
||||
orig: 39, 28
|
||||
rotate: true
|
||||
xy: 217, 113
|
||||
size: 77, 55
|
||||
orig: 77, 55
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
back_hand
|
||||
rotate: true
|
||||
xy: 504, 538
|
||||
size: 36, 34
|
||||
orig: 36, 34
|
||||
xy: 275, 501
|
||||
size: 72, 68
|
||||
orig: 72, 68
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
back_knee
|
||||
rotate: false
|
||||
xy: 299, 478
|
||||
size: 49, 67
|
||||
orig: 49, 67
|
||||
xy: 583, 955
|
||||
size: 97, 134
|
||||
orig: 97, 134
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
back_thigh
|
||||
rotate: true
|
||||
xy: 140, 247
|
||||
size: 39, 24
|
||||
orig: 39, 24
|
||||
xy: 440, 689
|
||||
size: 78, 47
|
||||
orig: 78, 47
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
eyes_open
|
||||
rotate: true
|
||||
xy: 2, 2
|
||||
size: 47, 45
|
||||
orig: 47, 45
|
||||
xy: 495, 848
|
||||
size: 93, 89
|
||||
orig: 93, 89
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
front_arm
|
||||
rotate: false
|
||||
xy: 360, 544
|
||||
size: 48, 30
|
||||
orig: 48, 30
|
||||
xy: 2, 5
|
||||
size: 96, 60
|
||||
orig: 96, 60
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
front_bracer
|
||||
rotate: false
|
||||
xy: 538, 578
|
||||
size: 41, 29
|
||||
orig: 41, 29
|
||||
rotate: true
|
||||
xy: 217, 192
|
||||
size: 81, 58
|
||||
orig: 81, 58
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
front_hand
|
||||
rotate: false
|
||||
xy: 538, 609
|
||||
size: 41, 38
|
||||
orig: 41, 38
|
||||
xy: 586, 878
|
||||
size: 82, 75
|
||||
orig: 82, 75
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
front_open_hand
|
||||
rotate: false
|
||||
xy: 894, 782
|
||||
size: 43, 44
|
||||
orig: 43, 44
|
||||
rotate: true
|
||||
xy: 495, 760
|
||||
size: 86, 87
|
||||
orig: 86, 87
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
front_thigh
|
||||
rotate: false
|
||||
xy: 942, 849
|
||||
size: 57, 29
|
||||
orig: 57, 29
|
||||
xy: 714, 1092
|
||||
size: 114, 58
|
||||
orig: 114, 58
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
gun
|
||||
rotate: false
|
||||
xy: 785, 774
|
||||
size: 107, 103
|
||||
orig: 107, 103
|
||||
xy: 2, 67
|
||||
size: 213, 206
|
||||
orig: 213, 206
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
gun_nohand
|
||||
rotate: false
|
||||
xy: 614, 703
|
||||
size: 105, 102
|
||||
orig: 105, 102
|
||||
xy: 1563, 1547
|
||||
size: 210, 203
|
||||
orig: 210, 203
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
head
|
||||
rotate: false
|
||||
xy: 2, 137
|
||||
size: 136, 149
|
||||
orig: 136, 149
|
||||
xy: 2, 275
|
||||
size: 271, 298
|
||||
orig: 271, 298
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
lower_leg
|
||||
rotate: true
|
||||
xy: 780, 699
|
||||
size: 73, 98
|
||||
orig: 73, 98
|
||||
xy: 386, 943
|
||||
size: 146, 195
|
||||
orig: 146, 195
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
mouth_smile
|
||||
rotate: true
|
||||
xy: 49, 2
|
||||
size: 47, 30
|
||||
orig: 47, 30
|
||||
rotate: false
|
||||
xy: 100, 6
|
||||
size: 93, 59
|
||||
orig: 93, 59
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
neck
|
||||
rotate: true
|
||||
xy: 1001, 860
|
||||
size: 18, 21
|
||||
orig: 18, 21
|
||||
rotate: false
|
||||
xy: 1012, 1109
|
||||
size: 36, 41
|
||||
orig: 36, 41
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
raptor_arm_back
|
||||
rotate: false
|
||||
xy: 940, 936
|
||||
size: 82, 86
|
||||
orig: 82, 86
|
||||
xy: 330, 769
|
||||
size: 163, 172
|
||||
orig: 163, 172
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
raptor_body
|
||||
rotate: false
|
||||
xy: 2, 737
|
||||
size: 610, 285
|
||||
orig: 610, 285
|
||||
xy: 2, 1468
|
||||
size: 1219, 570
|
||||
orig: 1219, 570
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
raptor_front_arm
|
||||
rotate: true
|
||||
xy: 195, 464
|
||||
size: 81, 102
|
||||
orig: 81, 102
|
||||
xy: 1223, 1445
|
||||
size: 162, 203
|
||||
orig: 162, 203
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
raptor_front_leg
|
||||
rotate: false
|
||||
xy: 2, 478
|
||||
size: 191, 257
|
||||
orig: 191, 257
|
||||
xy: 2, 952
|
||||
size: 382, 514
|
||||
orig: 382, 514
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
raptor_hindleg_back
|
||||
rotate: false
|
||||
xy: 614, 807
|
||||
size: 169, 215
|
||||
orig: 169, 215
|
||||
xy: 1223, 1609
|
||||
size: 338, 429
|
||||
orig: 338, 429
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
raptor_horn
|
||||
rotate: false
|
||||
xy: 360, 655
|
||||
size: 182, 80
|
||||
orig: 182, 80
|
||||
xy: 714, 1307
|
||||
size: 363, 159
|
||||
orig: 363, 159
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
raptor_horn_back
|
||||
rotate: false
|
||||
xy: 360, 576
|
||||
size: 176, 77
|
||||
orig: 176, 77
|
||||
xy: 714, 1152
|
||||
size: 351, 153
|
||||
orig: 351, 153
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
raptor_jaw
|
||||
rotate: false
|
||||
xy: 785, 879
|
||||
size: 153, 143
|
||||
orig: 153, 143
|
||||
xy: 1563, 1752
|
||||
size: 305, 286
|
||||
orig: 305, 286
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
raptor_saddle_noshadow
|
||||
rotate: false
|
||||
xy: 2, 288
|
||||
size: 163, 188
|
||||
orig: 163, 188
|
||||
xy: 2, 575
|
||||
size: 326, 375
|
||||
orig: 326, 375
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
raptor_saddle_strap_front
|
||||
rotate: false
|
||||
xy: 721, 710
|
||||
size: 57, 95
|
||||
orig: 57, 95
|
||||
rotate: true
|
||||
xy: 1558, 1431
|
||||
size: 114, 189
|
||||
orig: 114, 189
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
raptor_saddle_strap_rear
|
||||
rotate: true
|
||||
xy: 940, 880
|
||||
size: 54, 74
|
||||
orig: 54, 74
|
||||
rotate: false
|
||||
xy: 1079, 1318
|
||||
size: 108, 148
|
||||
orig: 108, 148
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
raptor_saddle_w_shadow
|
||||
rotate: false
|
||||
xy: 195, 547
|
||||
size: 163, 188
|
||||
orig: 163, 188
|
||||
xy: 386, 1091
|
||||
size: 326, 375
|
||||
orig: 326, 375
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
raptor_tongue
|
||||
rotate: true
|
||||
xy: 544, 649
|
||||
size: 86, 64
|
||||
orig: 86, 64
|
||||
xy: 1428, 1436
|
||||
size: 171, 128
|
||||
orig: 171, 128
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
stirrup_back
|
||||
rotate: false
|
||||
xy: 458, 539
|
||||
size: 44, 35
|
||||
orig: 44, 35
|
||||
xy: 923, 1081
|
||||
size: 87, 69
|
||||
orig: 87, 69
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
stirrup_front
|
||||
rotate: true
|
||||
xy: 81, 4
|
||||
size: 45, 50
|
||||
orig: 45, 50
|
||||
rotate: false
|
||||
xy: 1775, 1650
|
||||
size: 89, 100
|
||||
orig: 89, 100
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
stirrup_strap
|
||||
rotate: true
|
||||
xy: 894, 828
|
||||
size: 49, 46
|
||||
orig: 49, 46
|
||||
xy: 1775, 1551
|
||||
size: 97, 91
|
||||
orig: 97, 91
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
torso
|
||||
rotate: true
|
||||
xy: 610, 647
|
||||
size: 54, 91
|
||||
orig: 54, 91
|
||||
rotate: false
|
||||
xy: 330, 585
|
||||
size: 108, 182
|
||||
orig: 108, 182
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
visor
|
||||
rotate: false
|
||||
xy: 2, 51
|
||||
size: 131, 84
|
||||
orig: 131, 84
|
||||
rotate: true
|
||||
xy: 1870, 1777
|
||||
size: 261, 168
|
||||
orig: 261, 168
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
|
||||
|
Before Width: | Height: | Size: 550 KiB After Width: | Height: | Size: 1.7 MiB |
195
spine-cocos2dx/example/Resources/common/spineboy.atlas
Normal file
@ -0,0 +1,195 @@
|
||||
|
||||
spineboy.png
|
||||
size: 1024,1024
|
||||
format: RGBA8888
|
||||
filter: Linear,Linear
|
||||
repeat: none
|
||||
eye_indifferent
|
||||
rotate: false
|
||||
xy: 550, 694
|
||||
size: 93, 89
|
||||
orig: 93, 89
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
eye_surprised
|
||||
rotate: false
|
||||
xy: 834, 856
|
||||
size: 93, 89
|
||||
orig: 93, 89
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
front_bracer
|
||||
rotate: false
|
||||
xy: 678, 774
|
||||
size: 58, 80
|
||||
orig: 58, 80
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
front_fist_closed
|
||||
rotate: true
|
||||
xy: 466, 593
|
||||
size: 75, 82
|
||||
orig: 75, 82
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
front_fist_open
|
||||
rotate: false
|
||||
xy: 550, 605
|
||||
size: 86, 87
|
||||
orig: 86, 87
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
front_foot
|
||||
rotate: false
|
||||
xy: 550, 785
|
||||
size: 126, 69
|
||||
orig: 126, 69
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
front_foot_bend1
|
||||
rotate: true
|
||||
xy: 375, 492
|
||||
size: 128, 70
|
||||
orig: 128, 70
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
front_foot_bend2
|
||||
rotate: true
|
||||
xy: 275, 330
|
||||
size: 108, 93
|
||||
orig: 108, 93
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
front_shin
|
||||
rotate: false
|
||||
xy: 466, 670
|
||||
size: 82, 184
|
||||
orig: 82, 184
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
front_thigh
|
||||
rotate: false
|
||||
xy: 214, 208
|
||||
size: 48, 112
|
||||
orig: 48, 112
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
front_upper_arm
|
||||
rotate: false
|
||||
xy: 214, 109
|
||||
size: 54, 97
|
||||
orig: 54, 97
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goggles
|
||||
rotate: false
|
||||
xy: 466, 856
|
||||
size: 261, 166
|
||||
orig: 261, 166
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
gun
|
||||
rotate: false
|
||||
xy: 2, 117
|
||||
size: 210, 203
|
||||
orig: 210, 203
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
head
|
||||
rotate: false
|
||||
xy: 2, 322
|
||||
size: 271, 298
|
||||
orig: 271, 298
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
mouth_grind
|
||||
rotate: false
|
||||
xy: 929, 896
|
||||
size: 93, 59
|
||||
orig: 93, 59
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
mouth_oooo
|
||||
rotate: false
|
||||
xy: 929, 835
|
||||
size: 93, 59
|
||||
orig: 93, 59
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
mouth_smile
|
||||
rotate: false
|
||||
xy: 447, 532
|
||||
size: 93, 59
|
||||
orig: 93, 59
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
muzzle
|
||||
rotate: false
|
||||
xy: 2, 622
|
||||
size: 462, 400
|
||||
orig: 462, 400
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
neck
|
||||
rotate: false
|
||||
xy: 796, 819
|
||||
size: 36, 41
|
||||
orig: 36, 41
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
rear_bracer
|
||||
rotate: false
|
||||
xy: 738, 788
|
||||
size: 56, 72
|
||||
orig: 56, 72
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
rear_foot
|
||||
rotate: true
|
||||
xy: 2, 2
|
||||
size: 113, 60
|
||||
orig: 113, 60
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
rear_foot_bend1
|
||||
rotate: false
|
||||
xy: 64, 49
|
||||
size: 117, 66
|
||||
orig: 117, 66
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
rear_foot_bend2
|
||||
rotate: false
|
||||
xy: 729, 862
|
||||
size: 103, 83
|
||||
orig: 103, 83
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
rear_shin
|
||||
rotate: true
|
||||
xy: 729, 947
|
||||
size: 75, 178
|
||||
orig: 75, 178
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
rear_thigh
|
||||
rotate: true
|
||||
xy: 909, 957
|
||||
size: 65, 104
|
||||
orig: 65, 104
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
rear_upper_arm
|
||||
rotate: true
|
||||
xy: 447, 483
|
||||
size: 47, 87
|
||||
orig: 47, 87
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
torso
|
||||
rotate: false
|
||||
xy: 275, 440
|
||||
size: 98, 180
|
||||
orig: 98, 180
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
@ -1,39 +1,31 @@
|
||||
{
|
||||
"skeleton": { "hash": "rPoYyBLFG6F0CGZ5wsUEBKDJU9U", "spine": "3.3.07", "width": 470.71, "height": 731.57, "images": "./images/" },
|
||||
"bones": [
|
||||
{ "name": "hip", "y": 247.47 },
|
||||
{ "name": "front_thigh", "parent": "hip", "length": 74.8, "x": -17.45, "y": -11.64, "rotation": -95.51, "color": "00ff04ff" },
|
||||
{ "name": "rear_thigh", "parent": "hip", "length": 85.71, "x": 8.91, "y": -5.62, "rotation": -72.54, "color": "ff000dff" },
|
||||
{ "name": "torso", "parent": "hip", "length": 127.55, "x": -1.61, "y": 4.9, "rotation": 103.82, "color": "e0da19ff" },
|
||||
{
|
||||
"name": "front_shin",
|
||||
"parent": "front_thigh",
|
||||
"length": 128.76,
|
||||
"x": 78.69,
|
||||
"y": 1.6,
|
||||
"rotation": -2.21,
|
||||
"inheritScale": false,
|
||||
"color": "00ff04ff"
|
||||
},
|
||||
{ "name": "front_upper_arm", "parent": "torso", "length": 69.45, "x": 103.75, "y": 19.32, "rotation": 168.37, "color": "00ff04ff" },
|
||||
{ "name": "neck", "parent": "torso", "length": 25.45, "x": 127.49, "y": -0.3, "rotation": -31.53, "color": "e0da19ff" },
|
||||
{ "name": "rear_shin", "parent": "rear_thigh", "length": 121.87, "x": 86.1, "y": -1.32, "rotation": -19.83, "color": "ff000dff" },
|
||||
{ "name": "rear_upper_arm", "parent": "torso", "length": 51.93, "x": 92.35, "y": -19.22, "rotation": -169.55, "color": "ff000dff" },
|
||||
{ "name": "torso", "parent": "hip", "length": 127.55, "rotation": 103.82, "x": -1.61, "y": 4.9, "color": "e0da19ff" },
|
||||
{ "name": "front_upper_arm", "parent": "torso", "length": 69.45, "rotation": 168.37, "x": 103.75, "y": 19.32, "color": "00ff04ff" },
|
||||
{
|
||||
"name": "front_bracer",
|
||||
"parent": "front_upper_arm",
|
||||
"length": 40.57,
|
||||
"rotation": 18.29,
|
||||
"x": 68.8,
|
||||
"y": -0.68,
|
||||
"rotation": 18.29,
|
||||
"color": "00ff04ff"
|
||||
},
|
||||
{ "name": "front_foot", "parent": "front_shin", "length": 91.34, "x": 128.75, "y": -0.33, "rotation": 77.9, "color": "00ff04ff" },
|
||||
{ "name": "head", "parent": "neck", "length": 263.57, "x": 27.66, "y": -0.25, "rotation": 23.18, "color": "e0da19ff" },
|
||||
{ "name": "rear_bracer", "parent": "rear_upper_arm", "length": 34.55, "x": 51.35, "rotation": 23.15, "color": "ff000dff" },
|
||||
{ "name": "rear_foot", "parent": "rear_shin", "length": 82.57, "x": 121.45, "y": -0.75, "rotation": 69.3, "color": "ff000dff" },
|
||||
{ "name": "front_fist", "parent": "front_bracer", "length": 65.38, "x": 40.56, "y": 0.19, "rotation": 12.43, "color": "00ff04ff" },
|
||||
{ "name": "gun", "parent": "rear_bracer", "length": 43.1, "x": 34.42, "y": -0.45, "rotation": 5.34, "color": "ff000dff" },
|
||||
{ "name": "gunTip", "parent": "gun", "x": 201.04, "y": 52.13, "rotation": 6.83, "color": "ff000dff" }
|
||||
{ "name": "front_fist", "parent": "front_bracer", "length": 65.38, "rotation": 12.43, "x": 40.56, "y": 0.19, "color": "00ff04ff" },
|
||||
{ "name": "front_thigh", "parent": "hip", "length": 74.8, "rotation": -95.51, "x": -17.45, "y": -11.64, "color": "00ff04ff" },
|
||||
{ "name": "front_shin", "parent": "front_thigh", "length": 128.76, "rotation": -2.21, "x": 78.69, "y": 1.6, "color": "00ff04ff" },
|
||||
{ "name": "front_foot", "parent": "front_shin", "length": 91.34, "rotation": 77.9, "x": 128.75, "y": -0.33, "color": "00ff04ff" },
|
||||
{ "name": "rear_upper_arm", "parent": "torso", "length": 51.93, "rotation": -169.55, "x": 92.35, "y": -19.22, "color": "ff000dff" },
|
||||
{ "name": "rear_bracer", "parent": "rear_upper_arm", "length": 34.55, "rotation": 23.15, "x": 51.35, "color": "ff000dff" },
|
||||
{ "name": "gun", "parent": "rear_bracer", "length": 43.1, "rotation": 5.34, "x": 34.42, "y": -0.45, "color": "ff000dff" },
|
||||
{ "name": "gunTip", "parent": "gun", "rotation": 6.83, "x": 201.04, "y": 52.13, "color": "ff000dff" },
|
||||
{ "name": "neck", "parent": "torso", "length": 25.45, "rotation": -31.53, "x": 127.49, "y": -0.3, "color": "e0da19ff" },
|
||||
{ "name": "head", "parent": "neck", "length": 263.57, "rotation": 23.18, "x": 27.66, "y": -0.25, "color": "e0da19ff" },
|
||||
{ "name": "rear_thigh", "parent": "hip", "length": 85.71, "rotation": -72.54, "x": 8.91, "y": -5.62, "color": "ff000dff" },
|
||||
{ "name": "rear_shin", "parent": "rear_thigh", "length": 121.87, "rotation": -19.83, "x": 86.1, "y": -1.32, "color": "ff000dff" },
|
||||
{ "name": "rear_foot", "parent": "rear_shin", "length": 82.57, "rotation": 69.3, "x": 121.45, "y": -0.75, "color": "ff000dff" }
|
||||
],
|
||||
"slots": [
|
||||
{ "name": "rear_upper_arm", "bone": "rear_upper_arm", "attachment": "rear_upper_arm" },
|
||||
@ -54,7 +46,8 @@
|
||||
{ "name": "goggles", "bone": "head", "attachment": "goggles" },
|
||||
{ "name": "front_bracer", "bone": "front_bracer", "attachment": "front_bracer" },
|
||||
{ "name": "front_fist", "bone": "front_fist", "attachment": "front_fist_closed" },
|
||||
{ "name": "muzzle", "bone": "gunTip", "additive": true }
|
||||
{ "name": "muzzle", "bone": "gunTip", "blend": "additive" },
|
||||
{ "name": "head-bb", "bone": "head" }
|
||||
],
|
||||
"skins": {
|
||||
"default": {
|
||||
@ -92,6 +85,13 @@
|
||||
"head": {
|
||||
"head": { "x": 128.95, "y": 0.29, "rotation": -70.63, "width": 271, "height": 298 }
|
||||
},
|
||||
"head-bb": {
|
||||
"head": {
|
||||
"type": "boundingbox",
|
||||
"vertexCount": 6,
|
||||
"vertices": [ -19.14, -70.3, 40.8, -118.07, 257.77, -115.61, 285.16, 57.18, 120.77, 164.95, -5.06, 76.94 ]
|
||||
}
|
||||
},
|
||||
"mouth": {
|
||||
"mouth_grind": { "x": 23.68, "y": -32.23, "rotation": -70.63, "width": 93, "height": 59 },
|
||||
"mouth_oooo": { "x": 23.68, "y": -32.23, "rotation": -70.63, "width": 93, "height": 59 },
|
||||
@ -1825,10 +1825,6 @@
|
||||
]
|
||||
},
|
||||
"muzzle": {
|
||||
"attachment": [
|
||||
{ "time": 0.1333, "name": "muzzle" },
|
||||
{ "time": 0.2666, "name": null }
|
||||
],
|
||||
"color": [
|
||||
{
|
||||
"time": 0.1333,
|
||||
@ -1841,6 +1837,10 @@
|
||||
"curve": [ 0.821, 0, 0.909, 0.89 ]
|
||||
},
|
||||
{ "time": 0.2666, "color": "ffffff00" }
|
||||
],
|
||||
"attachment": [
|
||||
{ "time": 0.1333, "name": "muzzle" },
|
||||
{ "time": 0.2666, "name": null }
|
||||
]
|
||||
}
|
||||
},
|
||||
@ -2008,7 +2008,7 @@
|
||||
]
|
||||
}
|
||||
},
|
||||
"draworder": [
|
||||
"drawOrder": [
|
||||
{
|
||||
"time": 0.6666,
|
||||
"offsets": [
|
||||
|
||||
BIN
spine-cocos2dx/example/Resources/common/spineboy.png
Normal file
|
After Width: | Height: | Size: 593 KiB |
125
spine-cocos2dx/example/Resources/common/tank.atlas
Normal file
@ -0,0 +1,125 @@
|
||||
|
||||
tank.png
|
||||
size: 2048,2048
|
||||
format: RGBA8888
|
||||
filter: Linear,Linear
|
||||
repeat: none
|
||||
images/antenna
|
||||
rotate: true
|
||||
xy: 1295, 1730
|
||||
size: 22, 303
|
||||
orig: 22, 303
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
images/cannon
|
||||
rotate: true
|
||||
xy: 504, 769
|
||||
size: 931, 58
|
||||
orig: 931, 58
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
images/cannonConnector
|
||||
rotate: false
|
||||
xy: 564, 1239
|
||||
size: 112, 135
|
||||
orig: 112, 135
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
images/guntower
|
||||
rotate: false
|
||||
xy: 1295, 1754
|
||||
size: 730, 289
|
||||
orig: 730, 289
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
images/machinegun
|
||||
rotate: true
|
||||
xy: 504, 436
|
||||
size: 331, 57
|
||||
orig: 331, 57
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
images/machinegun-mount
|
||||
rotate: false
|
||||
xy: 2, 2
|
||||
size: 72, 96
|
||||
orig: 72, 96
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
images/rock
|
||||
rotate: false
|
||||
xy: 226, 358
|
||||
size: 252, 55
|
||||
orig: 252, 55
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
images/tankBottom
|
||||
rotate: true
|
||||
xy: 226, 415
|
||||
size: 1285, 276
|
||||
orig: 1285, 276
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
images/tankBottom-shadow
|
||||
rotate: false
|
||||
xy: 2, 1702
|
||||
size: 1291, 341
|
||||
orig: 1291, 341
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
images/tankTop
|
||||
rotate: true
|
||||
xy: 2, 293
|
||||
size: 1407, 222
|
||||
orig: 1407, 222
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
images/tread
|
||||
rotate: false
|
||||
xy: 226, 326
|
||||
size: 96, 30
|
||||
orig: 96, 30
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
images/tread-inside
|
||||
rotate: false
|
||||
xy: 195, 263
|
||||
size: 25, 28
|
||||
orig: 25, 28
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
images/wheel-big
|
||||
rotate: false
|
||||
xy: 2, 100
|
||||
size: 191, 191
|
||||
orig: 191, 191
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
images/wheel-big-overlay
|
||||
rotate: false
|
||||
xy: 564, 1514
|
||||
size: 186, 186
|
||||
orig: 186, 186
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
images/wheel-mid
|
||||
rotate: false
|
||||
xy: 564, 1376
|
||||
size: 136, 136
|
||||
orig: 136, 136
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
images/wheel-mid-overlay
|
||||
rotate: false
|
||||
xy: 752, 1564
|
||||
size: 136, 136
|
||||
orig: 136, 136
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
images/wheel-small
|
||||
rotate: false
|
||||
xy: 890, 1629
|
||||
size: 71, 71
|
||||
orig: 71, 71
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
1899
spine-cocos2dx/example/Resources/common/tank.json
Normal file
BIN
spine-cocos2dx/example/Resources/common/tank.png
Normal file
|
After Width: | Height: | Size: 1.3 MiB |
@ -39,7 +39,7 @@ static AppDelegate s_sharedApplication;
|
||||
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
|
||||
|
||||
cocos2d::Application *app = cocos2d::Application::getInstance();
|
||||
app->initGLContextAttrs();
|
||||
app->initGLContextAttrs();
|
||||
cocos2d::GLViewImpl::convertAttrs();
|
||||
|
||||
// Override point for customization after application launch.
|
||||
|
||||
@ -51,34 +51,6 @@
|
||||
76AAA3C31D180F7C00C54FCB /* RaptorExample.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA3BA1D180F7C00C54FCB /* RaptorExample.cpp */; };
|
||||
76AAA3C41D180F7C00C54FCB /* SimpleCommand.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA3BC1D180F7C00C54FCB /* SimpleCommand.cpp */; };
|
||||
76AAA3C51D180F7C00C54FCB /* SpineboyExample.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA3BE1D180F7C00C54FCB /* SpineboyExample.cpp */; };
|
||||
76AAA3E31D180FA800C54FCB /* Animation.c in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA3C61D180FA800C54FCB /* Animation.c */; };
|
||||
76AAA3E41D180FA800C54FCB /* AnimationState.c in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA3C71D180FA800C54FCB /* AnimationState.c */; };
|
||||
76AAA3E51D180FA800C54FCB /* AnimationStateData.c in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA3C81D180FA800C54FCB /* AnimationStateData.c */; };
|
||||
76AAA3E61D180FA800C54FCB /* Atlas.c in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA3C91D180FA800C54FCB /* Atlas.c */; };
|
||||
76AAA3E71D180FA800C54FCB /* AtlasAttachmentLoader.c in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA3CA1D180FA800C54FCB /* AtlasAttachmentLoader.c */; };
|
||||
76AAA3E81D180FA800C54FCB /* Attachment.c in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA3CB1D180FA800C54FCB /* Attachment.c */; };
|
||||
76AAA3E91D180FA800C54FCB /* AttachmentLoader.c in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA3CC1D180FA800C54FCB /* AttachmentLoader.c */; };
|
||||
76AAA3EA1D180FA800C54FCB /* Bone.c in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA3CD1D180FA800C54FCB /* Bone.c */; };
|
||||
76AAA3EB1D180FA800C54FCB /* BoneData.c in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA3CE1D180FA800C54FCB /* BoneData.c */; };
|
||||
76AAA3EC1D180FA800C54FCB /* BoundingBoxAttachment.c in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA3CF1D180FA800C54FCB /* BoundingBoxAttachment.c */; };
|
||||
76AAA3ED1D180FA800C54FCB /* Event.c in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA3D01D180FA800C54FCB /* Event.c */; };
|
||||
76AAA3EE1D180FA800C54FCB /* EventData.c in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA3D11D180FA800C54FCB /* EventData.c */; };
|
||||
76AAA3EF1D180FA800C54FCB /* extension.c in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA3D21D180FA800C54FCB /* extension.c */; };
|
||||
76AAA3F01D180FA800C54FCB /* IkConstraint.c in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA3D31D180FA800C54FCB /* IkConstraint.c */; };
|
||||
76AAA3F11D180FA800C54FCB /* IkConstraintData.c in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA3D41D180FA800C54FCB /* IkConstraintData.c */; };
|
||||
76AAA3F21D180FA800C54FCB /* Json.c in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA3D51D180FA800C54FCB /* Json.c */; };
|
||||
76AAA3F31D180FA800C54FCB /* MeshAttachment.c in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA3D71D180FA800C54FCB /* MeshAttachment.c */; };
|
||||
76AAA3F41D180FA800C54FCB /* RegionAttachment.c in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA3D81D180FA800C54FCB /* RegionAttachment.c */; };
|
||||
76AAA3F51D180FA800C54FCB /* Skeleton.c in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA3D91D180FA800C54FCB /* Skeleton.c */; };
|
||||
76AAA3F61D180FA800C54FCB /* SkeletonBounds.c in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA3DA1D180FA800C54FCB /* SkeletonBounds.c */; };
|
||||
76AAA3F71D180FA800C54FCB /* SkeletonData.c in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA3DB1D180FA800C54FCB /* SkeletonData.c */; };
|
||||
76AAA3F81D180FA800C54FCB /* SkeletonJson.c in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA3DC1D180FA800C54FCB /* SkeletonJson.c */; };
|
||||
76AAA3F91D180FA800C54FCB /* Skin.c in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA3DD1D180FA800C54FCB /* Skin.c */; };
|
||||
76AAA3FA1D180FA800C54FCB /* Slot.c in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA3DE1D180FA800C54FCB /* Slot.c */; };
|
||||
76AAA3FB1D180FA800C54FCB /* SlotData.c in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA3DF1D180FA800C54FCB /* SlotData.c */; };
|
||||
76AAA3FC1D180FA800C54FCB /* TransformConstraint.c in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA3E01D180FA800C54FCB /* TransformConstraint.c */; };
|
||||
76AAA3FD1D180FA800C54FCB /* TransformConstraintData.c in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA3E11D180FA800C54FCB /* TransformConstraintData.c */; };
|
||||
76AAA3FE1D180FA800C54FCB /* WeightedMeshAttachment.c in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA3E21D180FA800C54FCB /* WeightedMeshAttachment.c */; };
|
||||
76AAA40C1D18106000C54FCB /* AttachmentVertices.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA4001D18106000C54FCB /* AttachmentVertices.cpp */; };
|
||||
76AAA40D1D18106000C54FCB /* Cocos2dAttachmentLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA4021D18106000C54FCB /* Cocos2dAttachmentLoader.cpp */; };
|
||||
76AAA40E1D18106000C54FCB /* SkeletonAnimation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA4041D18106000C54FCB /* SkeletonAnimation.cpp */; };
|
||||
@ -97,35 +69,6 @@
|
||||
76AAA41B1D18119F00C54FCB /* SkeletonRenderer.h in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA4091D18106000C54FCB /* SkeletonRenderer.h */; };
|
||||
76AAA41C1D18119F00C54FCB /* spine-cocos2dx.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA40A1D18106000C54FCB /* spine-cocos2dx.cpp */; };
|
||||
76AAA41D1D18119F00C54FCB /* spine-cocos2dx.h in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA40B1D18106000C54FCB /* spine-cocos2dx.h */; };
|
||||
76AAA41E1D1811A700C54FCB /* Animation.c in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA3C61D180FA800C54FCB /* Animation.c */; };
|
||||
76AAA41F1D1811A700C54FCB /* AnimationState.c in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA3C71D180FA800C54FCB /* AnimationState.c */; };
|
||||
76AAA4201D1811A700C54FCB /* AnimationStateData.c in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA3C81D180FA800C54FCB /* AnimationStateData.c */; };
|
||||
76AAA4211D1811A700C54FCB /* Atlas.c in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA3C91D180FA800C54FCB /* Atlas.c */; };
|
||||
76AAA4221D1811A700C54FCB /* AtlasAttachmentLoader.c in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA3CA1D180FA800C54FCB /* AtlasAttachmentLoader.c */; };
|
||||
76AAA4231D1811A700C54FCB /* Attachment.c in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA3CB1D180FA800C54FCB /* Attachment.c */; };
|
||||
76AAA4241D1811A700C54FCB /* AttachmentLoader.c in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA3CC1D180FA800C54FCB /* AttachmentLoader.c */; };
|
||||
76AAA4251D1811A700C54FCB /* Bone.c in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA3CD1D180FA800C54FCB /* Bone.c */; };
|
||||
76AAA4261D1811A700C54FCB /* BoneData.c in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA3CE1D180FA800C54FCB /* BoneData.c */; };
|
||||
76AAA4271D1811A700C54FCB /* BoundingBoxAttachment.c in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA3CF1D180FA800C54FCB /* BoundingBoxAttachment.c */; };
|
||||
76AAA4281D1811A700C54FCB /* Event.c in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA3D01D180FA800C54FCB /* Event.c */; };
|
||||
76AAA4291D1811A700C54FCB /* EventData.c in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA3D11D180FA800C54FCB /* EventData.c */; };
|
||||
76AAA42A1D1811A700C54FCB /* extension.c in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA3D21D180FA800C54FCB /* extension.c */; };
|
||||
76AAA42B1D1811A700C54FCB /* IkConstraint.c in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA3D31D180FA800C54FCB /* IkConstraint.c */; };
|
||||
76AAA42C1D1811A700C54FCB /* IkConstraintData.c in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA3D41D180FA800C54FCB /* IkConstraintData.c */; };
|
||||
76AAA42D1D1811A700C54FCB /* Json.c in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA3D51D180FA800C54FCB /* Json.c */; };
|
||||
76AAA42E1D1811A700C54FCB /* Json.h in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA3D61D180FA800C54FCB /* Json.h */; };
|
||||
76AAA42F1D1811A700C54FCB /* MeshAttachment.c in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA3D71D180FA800C54FCB /* MeshAttachment.c */; };
|
||||
76AAA4301D1811A700C54FCB /* RegionAttachment.c in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA3D81D180FA800C54FCB /* RegionAttachment.c */; };
|
||||
76AAA4311D1811A700C54FCB /* Skeleton.c in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA3D91D180FA800C54FCB /* Skeleton.c */; };
|
||||
76AAA4321D1811A700C54FCB /* SkeletonBounds.c in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA3DA1D180FA800C54FCB /* SkeletonBounds.c */; };
|
||||
76AAA4331D1811A700C54FCB /* SkeletonData.c in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA3DB1D180FA800C54FCB /* SkeletonData.c */; };
|
||||
76AAA4341D1811A700C54FCB /* SkeletonJson.c in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA3DC1D180FA800C54FCB /* SkeletonJson.c */; };
|
||||
76AAA4351D1811A700C54FCB /* Skin.c in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA3DD1D180FA800C54FCB /* Skin.c */; };
|
||||
76AAA4361D1811A700C54FCB /* Slot.c in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA3DE1D180FA800C54FCB /* Slot.c */; };
|
||||
76AAA4371D1811A700C54FCB /* SlotData.c in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA3DF1D180FA800C54FCB /* SlotData.c */; };
|
||||
76AAA4381D1811A700C54FCB /* TransformConstraint.c in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA3E01D180FA800C54FCB /* TransformConstraint.c */; };
|
||||
76AAA4391D1811A700C54FCB /* TransformConstraintData.c in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA3E11D180FA800C54FCB /* TransformConstraintData.c */; };
|
||||
76AAA43A1D1811A700C54FCB /* WeightedMeshAttachment.c in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA3E21D180FA800C54FCB /* WeightedMeshAttachment.c */; };
|
||||
76AAA43B1D1811B000C54FCB /* AppDelegate.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA3B31D180F7C00C54FCB /* AppDelegate.cpp */; };
|
||||
76AAA43C1D1811B000C54FCB /* AppDelegate.h in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA3B41D180F7C00C54FCB /* AppDelegate.h */; };
|
||||
76AAA43D1D1811B000C54FCB /* AppMacros.h in Sources */ = {isa = PBXBuildFile; fileRef = 76AAA3B51D180F7C00C54FCB /* AppMacros.h */; };
|
||||
@ -149,6 +92,72 @@
|
||||
76AAA45E1D18132D00C54FCB /* iphone in Resources */ = {isa = PBXBuildFile; fileRef = 76AAA4551D18132D00C54FCB /* iphone */; };
|
||||
76AAA45F1D18132D00C54FCB /* iphone-retina in Resources */ = {isa = PBXBuildFile; fileRef = 76AAA4561D18132D00C54FCB /* iphone-retina */; };
|
||||
76AAA4601D18132D00C54FCB /* iphone-retina in Resources */ = {isa = PBXBuildFile; fileRef = 76AAA4561D18132D00C54FCB /* iphone-retina */; };
|
||||
76F5BD141D2BB57F005917E5 /* Animation.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BCF41D2BB57F005917E5 /* Animation.c */; };
|
||||
76F5BD151D2BB57F005917E5 /* AnimationState.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BCF51D2BB57F005917E5 /* AnimationState.c */; };
|
||||
76F5BD161D2BB57F005917E5 /* AnimationStateData.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BCF61D2BB57F005917E5 /* AnimationStateData.c */; };
|
||||
76F5BD171D2BB57F005917E5 /* Atlas.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BCF71D2BB57F005917E5 /* Atlas.c */; };
|
||||
76F5BD181D2BB57F005917E5 /* AtlasAttachmentLoader.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BCF81D2BB57F005917E5 /* AtlasAttachmentLoader.c */; };
|
||||
76F5BD191D2BB57F005917E5 /* Attachment.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BCF91D2BB57F005917E5 /* Attachment.c */; };
|
||||
76F5BD1A1D2BB57F005917E5 /* AttachmentLoader.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BCFA1D2BB57F005917E5 /* AttachmentLoader.c */; };
|
||||
76F5BD1B1D2BB57F005917E5 /* Bone.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BCFB1D2BB57F005917E5 /* Bone.c */; };
|
||||
76F5BD1C1D2BB57F005917E5 /* BoneData.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BCFC1D2BB57F005917E5 /* BoneData.c */; };
|
||||
76F5BD1D1D2BB57F005917E5 /* BoundingBoxAttachment.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BCFD1D2BB57F005917E5 /* BoundingBoxAttachment.c */; };
|
||||
76F5BD1E1D2BB57F005917E5 /* Event.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BCFE1D2BB57F005917E5 /* Event.c */; };
|
||||
76F5BD1F1D2BB57F005917E5 /* EventData.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BCFF1D2BB57F005917E5 /* EventData.c */; };
|
||||
76F5BD201D2BB57F005917E5 /* extension.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD001D2BB57F005917E5 /* extension.c */; };
|
||||
76F5BD211D2BB57F005917E5 /* IkConstraint.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD011D2BB57F005917E5 /* IkConstraint.c */; };
|
||||
76F5BD221D2BB57F005917E5 /* IkConstraintData.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD021D2BB57F005917E5 /* IkConstraintData.c */; };
|
||||
76F5BD231D2BB57F005917E5 /* Json.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD031D2BB57F005917E5 /* Json.c */; };
|
||||
76F5BD241D2BB57F005917E5 /* MeshAttachment.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD051D2BB57F005917E5 /* MeshAttachment.c */; };
|
||||
76F5BD251D2BB57F005917E5 /* PathAttachment.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD061D2BB57F005917E5 /* PathAttachment.c */; };
|
||||
76F5BD261D2BB57F005917E5 /* PathConstraint.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD071D2BB57F005917E5 /* PathConstraint.c */; };
|
||||
76F5BD271D2BB57F005917E5 /* PathConstraintData.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD081D2BB57F005917E5 /* PathConstraintData.c */; };
|
||||
76F5BD281D2BB57F005917E5 /* RegionAttachment.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD091D2BB57F005917E5 /* RegionAttachment.c */; };
|
||||
76F5BD291D2BB57F005917E5 /* Skeleton.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD0A1D2BB57F005917E5 /* Skeleton.c */; };
|
||||
76F5BD2A1D2BB57F005917E5 /* SkeletonBounds.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD0B1D2BB57F005917E5 /* SkeletonBounds.c */; };
|
||||
76F5BD2B1D2BB57F005917E5 /* SkeletonData.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD0C1D2BB57F005917E5 /* SkeletonData.c */; };
|
||||
76F5BD2C1D2BB57F005917E5 /* SkeletonJson.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD0D1D2BB57F005917E5 /* SkeletonJson.c */; };
|
||||
76F5BD2D1D2BB57F005917E5 /* Skin.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD0E1D2BB57F005917E5 /* Skin.c */; };
|
||||
76F5BD2E1D2BB57F005917E5 /* Slot.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD0F1D2BB57F005917E5 /* Slot.c */; };
|
||||
76F5BD2F1D2BB57F005917E5 /* SlotData.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD101D2BB57F005917E5 /* SlotData.c */; };
|
||||
76F5BD301D2BB57F005917E5 /* TransformConstraint.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD111D2BB57F005917E5 /* TransformConstraint.c */; };
|
||||
76F5BD311D2BB57F005917E5 /* TransformConstraintData.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD121D2BB57F005917E5 /* TransformConstraintData.c */; };
|
||||
76F5BD321D2BB57F005917E5 /* VertexAttachment.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD131D2BB57F005917E5 /* VertexAttachment.c */; };
|
||||
76F5BD331D2BD4A9005917E5 /* Animation.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BCF41D2BB57F005917E5 /* Animation.c */; };
|
||||
76F5BD341D2BD4A9005917E5 /* AnimationState.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BCF51D2BB57F005917E5 /* AnimationState.c */; };
|
||||
76F5BD351D2BD4A9005917E5 /* AnimationStateData.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BCF61D2BB57F005917E5 /* AnimationStateData.c */; };
|
||||
76F5BD361D2BD4A9005917E5 /* Atlas.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BCF71D2BB57F005917E5 /* Atlas.c */; };
|
||||
76F5BD371D2BD4A9005917E5 /* AtlasAttachmentLoader.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BCF81D2BB57F005917E5 /* AtlasAttachmentLoader.c */; };
|
||||
76F5BD381D2BD4A9005917E5 /* Attachment.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BCF91D2BB57F005917E5 /* Attachment.c */; };
|
||||
76F5BD391D2BD4A9005917E5 /* AttachmentLoader.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BCFA1D2BB57F005917E5 /* AttachmentLoader.c */; };
|
||||
76F5BD3A1D2BD4A9005917E5 /* Bone.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BCFB1D2BB57F005917E5 /* Bone.c */; };
|
||||
76F5BD3B1D2BD4A9005917E5 /* BoneData.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BCFC1D2BB57F005917E5 /* BoneData.c */; };
|
||||
76F5BD3C1D2BD4A9005917E5 /* BoundingBoxAttachment.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BCFD1D2BB57F005917E5 /* BoundingBoxAttachment.c */; };
|
||||
76F5BD3D1D2BD4A9005917E5 /* Event.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BCFE1D2BB57F005917E5 /* Event.c */; };
|
||||
76F5BD3E1D2BD4A9005917E5 /* EventData.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BCFF1D2BB57F005917E5 /* EventData.c */; };
|
||||
76F5BD3F1D2BD4A9005917E5 /* extension.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD001D2BB57F005917E5 /* extension.c */; };
|
||||
76F5BD401D2BD4A9005917E5 /* IkConstraint.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD011D2BB57F005917E5 /* IkConstraint.c */; };
|
||||
76F5BD411D2BD4A9005917E5 /* IkConstraintData.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD021D2BB57F005917E5 /* IkConstraintData.c */; };
|
||||
76F5BD421D2BD4A9005917E5 /* Json.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD031D2BB57F005917E5 /* Json.c */; };
|
||||
76F5BD431D2BD4A9005917E5 /* Json.h in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD041D2BB57F005917E5 /* Json.h */; };
|
||||
76F5BD441D2BD4A9005917E5 /* MeshAttachment.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD051D2BB57F005917E5 /* MeshAttachment.c */; };
|
||||
76F5BD451D2BD4A9005917E5 /* PathAttachment.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD061D2BB57F005917E5 /* PathAttachment.c */; };
|
||||
76F5BD461D2BD4A9005917E5 /* PathConstraint.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD071D2BB57F005917E5 /* PathConstraint.c */; };
|
||||
76F5BD471D2BD4A9005917E5 /* PathConstraintData.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD081D2BB57F005917E5 /* PathConstraintData.c */; };
|
||||
76F5BD481D2BD4A9005917E5 /* RegionAttachment.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD091D2BB57F005917E5 /* RegionAttachment.c */; };
|
||||
76F5BD491D2BD4A9005917E5 /* Skeleton.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD0A1D2BB57F005917E5 /* Skeleton.c */; };
|
||||
76F5BD4A1D2BD4A9005917E5 /* SkeletonBounds.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD0B1D2BB57F005917E5 /* SkeletonBounds.c */; };
|
||||
76F5BD4B1D2BD4A9005917E5 /* SkeletonData.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD0C1D2BB57F005917E5 /* SkeletonData.c */; };
|
||||
76F5BD4C1D2BD4A9005917E5 /* SkeletonJson.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD0D1D2BB57F005917E5 /* SkeletonJson.c */; };
|
||||
76F5BD4D1D2BD4A9005917E5 /* Skin.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD0E1D2BB57F005917E5 /* Skin.c */; };
|
||||
76F5BD4E1D2BD4A9005917E5 /* Slot.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD0F1D2BB57F005917E5 /* Slot.c */; };
|
||||
76F5BD4F1D2BD4A9005917E5 /* SlotData.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD101D2BB57F005917E5 /* SlotData.c */; };
|
||||
76F5BD501D2BD4A9005917E5 /* TransformConstraint.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD111D2BB57F005917E5 /* TransformConstraint.c */; };
|
||||
76F5BD511D2BD4A9005917E5 /* TransformConstraintData.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD121D2BB57F005917E5 /* TransformConstraintData.c */; };
|
||||
76F5BD521D2BD4A9005917E5 /* VertexAttachment.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD131D2BB57F005917E5 /* VertexAttachment.c */; };
|
||||
76F5BD551D2BD7D3005917E5 /* TankExample.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD531D2BD7D3005917E5 /* TankExample.cpp */; };
|
||||
76F5BD561D2BD7EF005917E5 /* TankExample.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD531D2BD7D3005917E5 /* TankExample.cpp */; };
|
||||
76F5BD571D2BD7EF005917E5 /* TankExample.h in Sources */ = {isa = PBXBuildFile; fileRef = 76F5BD541D2BD7D3005917E5 /* TankExample.h */; };
|
||||
8262943E1AAF051F00CB7CF7 /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8262943D1AAF051F00CB7CF7 /* Security.framework */; };
|
||||
BF171245129291EC00B8313A /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BF170DB012928DE900B8313A /* OpenGLES.framework */; };
|
||||
BF1712471292920000B8313A /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = BF170DB412928DE900B8313A /* libz.dylib */; };
|
||||
@ -254,35 +263,6 @@
|
||||
76AAA3BD1D180F7C00C54FCB /* SimpleCommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SimpleCommand.h; sourceTree = "<group>"; };
|
||||
76AAA3BE1D180F7C00C54FCB /* SpineboyExample.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SpineboyExample.cpp; sourceTree = "<group>"; };
|
||||
76AAA3BF1D180F7C00C54FCB /* SpineboyExample.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SpineboyExample.h; sourceTree = "<group>"; };
|
||||
76AAA3C61D180FA800C54FCB /* Animation.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Animation.c; path = "../../../spine-c/src/spine/Animation.c"; sourceTree = "<group>"; };
|
||||
76AAA3C71D180FA800C54FCB /* AnimationState.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = AnimationState.c; path = "../../../spine-c/src/spine/AnimationState.c"; sourceTree = "<group>"; };
|
||||
76AAA3C81D180FA800C54FCB /* AnimationStateData.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = AnimationStateData.c; path = "../../../spine-c/src/spine/AnimationStateData.c"; sourceTree = "<group>"; };
|
||||
76AAA3C91D180FA800C54FCB /* Atlas.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Atlas.c; path = "../../../spine-c/src/spine/Atlas.c"; sourceTree = "<group>"; };
|
||||
76AAA3CA1D180FA800C54FCB /* AtlasAttachmentLoader.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = AtlasAttachmentLoader.c; path = "../../../spine-c/src/spine/AtlasAttachmentLoader.c"; sourceTree = "<group>"; };
|
||||
76AAA3CB1D180FA800C54FCB /* Attachment.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Attachment.c; path = "../../../spine-c/src/spine/Attachment.c"; sourceTree = "<group>"; };
|
||||
76AAA3CC1D180FA800C54FCB /* AttachmentLoader.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = AttachmentLoader.c; path = "../../../spine-c/src/spine/AttachmentLoader.c"; sourceTree = "<group>"; };
|
||||
76AAA3CD1D180FA800C54FCB /* Bone.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Bone.c; path = "../../../spine-c/src/spine/Bone.c"; sourceTree = "<group>"; };
|
||||
76AAA3CE1D180FA800C54FCB /* BoneData.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = BoneData.c; path = "../../../spine-c/src/spine/BoneData.c"; sourceTree = "<group>"; };
|
||||
76AAA3CF1D180FA800C54FCB /* BoundingBoxAttachment.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = BoundingBoxAttachment.c; path = "../../../spine-c/src/spine/BoundingBoxAttachment.c"; sourceTree = "<group>"; };
|
||||
76AAA3D01D180FA800C54FCB /* Event.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Event.c; path = "../../../spine-c/src/spine/Event.c"; sourceTree = "<group>"; };
|
||||
76AAA3D11D180FA800C54FCB /* EventData.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = EventData.c; path = "../../../spine-c/src/spine/EventData.c"; sourceTree = "<group>"; };
|
||||
76AAA3D21D180FA800C54FCB /* extension.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = extension.c; path = "../../../spine-c/src/spine/extension.c"; sourceTree = "<group>"; };
|
||||
76AAA3D31D180FA800C54FCB /* IkConstraint.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = IkConstraint.c; path = "../../../spine-c/src/spine/IkConstraint.c"; sourceTree = "<group>"; };
|
||||
76AAA3D41D180FA800C54FCB /* IkConstraintData.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = IkConstraintData.c; path = "../../../spine-c/src/spine/IkConstraintData.c"; sourceTree = "<group>"; };
|
||||
76AAA3D51D180FA800C54FCB /* Json.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Json.c; path = "../../../spine-c/src/spine/Json.c"; sourceTree = "<group>"; };
|
||||
76AAA3D61D180FA800C54FCB /* Json.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Json.h; path = "../../../spine-c/src/spine/Json.h"; sourceTree = "<group>"; };
|
||||
76AAA3D71D180FA800C54FCB /* MeshAttachment.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = MeshAttachment.c; path = "../../../spine-c/src/spine/MeshAttachment.c"; sourceTree = "<group>"; };
|
||||
76AAA3D81D180FA800C54FCB /* RegionAttachment.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = RegionAttachment.c; path = "../../../spine-c/src/spine/RegionAttachment.c"; sourceTree = "<group>"; };
|
||||
76AAA3D91D180FA800C54FCB /* Skeleton.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Skeleton.c; path = "../../../spine-c/src/spine/Skeleton.c"; sourceTree = "<group>"; };
|
||||
76AAA3DA1D180FA800C54FCB /* SkeletonBounds.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = SkeletonBounds.c; path = "../../../spine-c/src/spine/SkeletonBounds.c"; sourceTree = "<group>"; };
|
||||
76AAA3DB1D180FA800C54FCB /* SkeletonData.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = SkeletonData.c; path = "../../../spine-c/src/spine/SkeletonData.c"; sourceTree = "<group>"; };
|
||||
76AAA3DC1D180FA800C54FCB /* SkeletonJson.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = SkeletonJson.c; path = "../../../spine-c/src/spine/SkeletonJson.c"; sourceTree = "<group>"; };
|
||||
76AAA3DD1D180FA800C54FCB /* Skin.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Skin.c; path = "../../../spine-c/src/spine/Skin.c"; sourceTree = "<group>"; };
|
||||
76AAA3DE1D180FA800C54FCB /* Slot.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Slot.c; path = "../../../spine-c/src/spine/Slot.c"; sourceTree = "<group>"; };
|
||||
76AAA3DF1D180FA800C54FCB /* SlotData.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = SlotData.c; path = "../../../spine-c/src/spine/SlotData.c"; sourceTree = "<group>"; };
|
||||
76AAA3E01D180FA800C54FCB /* TransformConstraint.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = TransformConstraint.c; path = "../../../spine-c/src/spine/TransformConstraint.c"; sourceTree = "<group>"; };
|
||||
76AAA3E11D180FA800C54FCB /* TransformConstraintData.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = TransformConstraintData.c; path = "../../../spine-c/src/spine/TransformConstraintData.c"; sourceTree = "<group>"; };
|
||||
76AAA3E21D180FA800C54FCB /* WeightedMeshAttachment.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = WeightedMeshAttachment.c; path = "../../../spine-c/src/spine/WeightedMeshAttachment.c"; sourceTree = "<group>"; };
|
||||
76AAA4001D18106000C54FCB /* AttachmentVertices.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = AttachmentVertices.cpp; path = ../../src/spine/AttachmentVertices.cpp; sourceTree = "<group>"; };
|
||||
76AAA4011D18106000C54FCB /* AttachmentVertices.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AttachmentVertices.h; path = ../../src/spine/AttachmentVertices.h; sourceTree = "<group>"; };
|
||||
76AAA4021D18106000C54FCB /* Cocos2dAttachmentLoader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Cocos2dAttachmentLoader.cpp; path = ../../src/spine/Cocos2dAttachmentLoader.cpp; sourceTree = "<group>"; };
|
||||
@ -300,6 +280,40 @@
|
||||
76AAA4541D18132D00C54FCB /* ipad-retina */ = {isa = PBXFileReference; lastKnownFileType = folder; path = "ipad-retina"; sourceTree = "<group>"; };
|
||||
76AAA4551D18132D00C54FCB /* iphone */ = {isa = PBXFileReference; lastKnownFileType = folder; path = iphone; sourceTree = "<group>"; };
|
||||
76AAA4561D18132D00C54FCB /* iphone-retina */ = {isa = PBXFileReference; lastKnownFileType = folder; path = "iphone-retina"; sourceTree = "<group>"; };
|
||||
76F5BCF41D2BB57F005917E5 /* Animation.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Animation.c; path = "../../../spine-c/src/spine/Animation.c"; sourceTree = "<group>"; };
|
||||
76F5BCF51D2BB57F005917E5 /* AnimationState.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = AnimationState.c; path = "../../../spine-c/src/spine/AnimationState.c"; sourceTree = "<group>"; };
|
||||
76F5BCF61D2BB57F005917E5 /* AnimationStateData.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = AnimationStateData.c; path = "../../../spine-c/src/spine/AnimationStateData.c"; sourceTree = "<group>"; };
|
||||
76F5BCF71D2BB57F005917E5 /* Atlas.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Atlas.c; path = "../../../spine-c/src/spine/Atlas.c"; sourceTree = "<group>"; };
|
||||
76F5BCF81D2BB57F005917E5 /* AtlasAttachmentLoader.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = AtlasAttachmentLoader.c; path = "../../../spine-c/src/spine/AtlasAttachmentLoader.c"; sourceTree = "<group>"; };
|
||||
76F5BCF91D2BB57F005917E5 /* Attachment.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Attachment.c; path = "../../../spine-c/src/spine/Attachment.c"; sourceTree = "<group>"; };
|
||||
76F5BCFA1D2BB57F005917E5 /* AttachmentLoader.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = AttachmentLoader.c; path = "../../../spine-c/src/spine/AttachmentLoader.c"; sourceTree = "<group>"; };
|
||||
76F5BCFB1D2BB57F005917E5 /* Bone.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Bone.c; path = "../../../spine-c/src/spine/Bone.c"; sourceTree = "<group>"; };
|
||||
76F5BCFC1D2BB57F005917E5 /* BoneData.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = BoneData.c; path = "../../../spine-c/src/spine/BoneData.c"; sourceTree = "<group>"; };
|
||||
76F5BCFD1D2BB57F005917E5 /* BoundingBoxAttachment.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = BoundingBoxAttachment.c; path = "../../../spine-c/src/spine/BoundingBoxAttachment.c"; sourceTree = "<group>"; };
|
||||
76F5BCFE1D2BB57F005917E5 /* Event.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Event.c; path = "../../../spine-c/src/spine/Event.c"; sourceTree = "<group>"; };
|
||||
76F5BCFF1D2BB57F005917E5 /* EventData.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = EventData.c; path = "../../../spine-c/src/spine/EventData.c"; sourceTree = "<group>"; };
|
||||
76F5BD001D2BB57F005917E5 /* extension.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = extension.c; path = "../../../spine-c/src/spine/extension.c"; sourceTree = "<group>"; };
|
||||
76F5BD011D2BB57F005917E5 /* IkConstraint.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = IkConstraint.c; path = "../../../spine-c/src/spine/IkConstraint.c"; sourceTree = "<group>"; };
|
||||
76F5BD021D2BB57F005917E5 /* IkConstraintData.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = IkConstraintData.c; path = "../../../spine-c/src/spine/IkConstraintData.c"; sourceTree = "<group>"; };
|
||||
76F5BD031D2BB57F005917E5 /* Json.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Json.c; path = "../../../spine-c/src/spine/Json.c"; sourceTree = "<group>"; };
|
||||
76F5BD041D2BB57F005917E5 /* Json.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Json.h; path = "../../../spine-c/src/spine/Json.h"; sourceTree = "<group>"; };
|
||||
76F5BD051D2BB57F005917E5 /* MeshAttachment.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = MeshAttachment.c; path = "../../../spine-c/src/spine/MeshAttachment.c"; sourceTree = "<group>"; };
|
||||
76F5BD061D2BB57F005917E5 /* PathAttachment.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = PathAttachment.c; path = "../../../spine-c/src/spine/PathAttachment.c"; sourceTree = "<group>"; };
|
||||
76F5BD071D2BB57F005917E5 /* PathConstraint.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = PathConstraint.c; path = "../../../spine-c/src/spine/PathConstraint.c"; sourceTree = "<group>"; };
|
||||
76F5BD081D2BB57F005917E5 /* PathConstraintData.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = PathConstraintData.c; path = "../../../spine-c/src/spine/PathConstraintData.c"; sourceTree = "<group>"; };
|
||||
76F5BD091D2BB57F005917E5 /* RegionAttachment.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = RegionAttachment.c; path = "../../../spine-c/src/spine/RegionAttachment.c"; sourceTree = "<group>"; };
|
||||
76F5BD0A1D2BB57F005917E5 /* Skeleton.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Skeleton.c; path = "../../../spine-c/src/spine/Skeleton.c"; sourceTree = "<group>"; };
|
||||
76F5BD0B1D2BB57F005917E5 /* SkeletonBounds.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = SkeletonBounds.c; path = "../../../spine-c/src/spine/SkeletonBounds.c"; sourceTree = "<group>"; };
|
||||
76F5BD0C1D2BB57F005917E5 /* SkeletonData.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = SkeletonData.c; path = "../../../spine-c/src/spine/SkeletonData.c"; sourceTree = "<group>"; };
|
||||
76F5BD0D1D2BB57F005917E5 /* SkeletonJson.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = SkeletonJson.c; path = "../../../spine-c/src/spine/SkeletonJson.c"; sourceTree = "<group>"; };
|
||||
76F5BD0E1D2BB57F005917E5 /* Skin.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Skin.c; path = "../../../spine-c/src/spine/Skin.c"; sourceTree = "<group>"; };
|
||||
76F5BD0F1D2BB57F005917E5 /* Slot.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = Slot.c; path = "../../../spine-c/src/spine/Slot.c"; sourceTree = "<group>"; };
|
||||
76F5BD101D2BB57F005917E5 /* SlotData.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = SlotData.c; path = "../../../spine-c/src/spine/SlotData.c"; sourceTree = "<group>"; };
|
||||
76F5BD111D2BB57F005917E5 /* TransformConstraint.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = TransformConstraint.c; path = "../../../spine-c/src/spine/TransformConstraint.c"; sourceTree = "<group>"; };
|
||||
76F5BD121D2BB57F005917E5 /* TransformConstraintData.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = TransformConstraintData.c; path = "../../../spine-c/src/spine/TransformConstraintData.c"; sourceTree = "<group>"; };
|
||||
76F5BD131D2BB57F005917E5 /* VertexAttachment.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = VertexAttachment.c; path = "../../../spine-c/src/spine/VertexAttachment.c"; sourceTree = "<group>"; };
|
||||
76F5BD531D2BD7D3005917E5 /* TankExample.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TankExample.cpp; sourceTree = "<group>"; };
|
||||
76F5BD541D2BD7D3005917E5 /* TankExample.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TankExample.h; sourceTree = "<group>"; };
|
||||
8262943D1AAF051F00CB7CF7 /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = System/Library/Frameworks/Security.framework; sourceTree = SDKROOT; };
|
||||
BF170DB012928DE900B8313A /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGLES.framework; path = System/Library/Frameworks/OpenGLES.framework; sourceTree = SDKROOT; };
|
||||
BF170DB412928DE900B8313A /* libz.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libz.dylib; path = usr/lib/libz.dylib; sourceTree = SDKROOT; };
|
||||
@ -447,6 +461,8 @@
|
||||
46880B8319C43A87006E1F66 /* Classes */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
76F5BD531D2BD7D3005917E5 /* TankExample.cpp */,
|
||||
76F5BD541D2BD7D3005917E5 /* TankExample.h */,
|
||||
76AAA3B31D180F7C00C54FCB /* AppDelegate.cpp */,
|
||||
76AAA3B41D180F7C00C54FCB /* AppDelegate.h */,
|
||||
76AAA3B51D180F7C00C54FCB /* AppMacros.h */,
|
||||
@ -515,35 +531,38 @@
|
||||
76AAA3B21D180F7300C54FCB /* spine */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
76AAA3C61D180FA800C54FCB /* Animation.c */,
|
||||
76AAA3C71D180FA800C54FCB /* AnimationState.c */,
|
||||
76AAA3C81D180FA800C54FCB /* AnimationStateData.c */,
|
||||
76AAA3C91D180FA800C54FCB /* Atlas.c */,
|
||||
76AAA3CA1D180FA800C54FCB /* AtlasAttachmentLoader.c */,
|
||||
76AAA3CB1D180FA800C54FCB /* Attachment.c */,
|
||||
76AAA3CC1D180FA800C54FCB /* AttachmentLoader.c */,
|
||||
76AAA3CD1D180FA800C54FCB /* Bone.c */,
|
||||
76AAA3CE1D180FA800C54FCB /* BoneData.c */,
|
||||
76AAA3CF1D180FA800C54FCB /* BoundingBoxAttachment.c */,
|
||||
76AAA3D01D180FA800C54FCB /* Event.c */,
|
||||
76AAA3D11D180FA800C54FCB /* EventData.c */,
|
||||
76AAA3D21D180FA800C54FCB /* extension.c */,
|
||||
76AAA3D31D180FA800C54FCB /* IkConstraint.c */,
|
||||
76AAA3D41D180FA800C54FCB /* IkConstraintData.c */,
|
||||
76AAA3D51D180FA800C54FCB /* Json.c */,
|
||||
76AAA3D61D180FA800C54FCB /* Json.h */,
|
||||
76AAA3D71D180FA800C54FCB /* MeshAttachment.c */,
|
||||
76AAA3D81D180FA800C54FCB /* RegionAttachment.c */,
|
||||
76AAA3D91D180FA800C54FCB /* Skeleton.c */,
|
||||
76AAA3DA1D180FA800C54FCB /* SkeletonBounds.c */,
|
||||
76AAA3DB1D180FA800C54FCB /* SkeletonData.c */,
|
||||
76AAA3DC1D180FA800C54FCB /* SkeletonJson.c */,
|
||||
76AAA3DD1D180FA800C54FCB /* Skin.c */,
|
||||
76AAA3DE1D180FA800C54FCB /* Slot.c */,
|
||||
76AAA3DF1D180FA800C54FCB /* SlotData.c */,
|
||||
76AAA3E01D180FA800C54FCB /* TransformConstraint.c */,
|
||||
76AAA3E11D180FA800C54FCB /* TransformConstraintData.c */,
|
||||
76AAA3E21D180FA800C54FCB /* WeightedMeshAttachment.c */,
|
||||
76F5BCF41D2BB57F005917E5 /* Animation.c */,
|
||||
76F5BCF51D2BB57F005917E5 /* AnimationState.c */,
|
||||
76F5BCF61D2BB57F005917E5 /* AnimationStateData.c */,
|
||||
76F5BCF71D2BB57F005917E5 /* Atlas.c */,
|
||||
76F5BCF81D2BB57F005917E5 /* AtlasAttachmentLoader.c */,
|
||||
76F5BCF91D2BB57F005917E5 /* Attachment.c */,
|
||||
76F5BCFA1D2BB57F005917E5 /* AttachmentLoader.c */,
|
||||
76F5BCFB1D2BB57F005917E5 /* Bone.c */,
|
||||
76F5BCFC1D2BB57F005917E5 /* BoneData.c */,
|
||||
76F5BCFD1D2BB57F005917E5 /* BoundingBoxAttachment.c */,
|
||||
76F5BCFE1D2BB57F005917E5 /* Event.c */,
|
||||
76F5BCFF1D2BB57F005917E5 /* EventData.c */,
|
||||
76F5BD001D2BB57F005917E5 /* extension.c */,
|
||||
76F5BD011D2BB57F005917E5 /* IkConstraint.c */,
|
||||
76F5BD021D2BB57F005917E5 /* IkConstraintData.c */,
|
||||
76F5BD031D2BB57F005917E5 /* Json.c */,
|
||||
76F5BD041D2BB57F005917E5 /* Json.h */,
|
||||
76F5BD051D2BB57F005917E5 /* MeshAttachment.c */,
|
||||
76F5BD061D2BB57F005917E5 /* PathAttachment.c */,
|
||||
76F5BD071D2BB57F005917E5 /* PathConstraint.c */,
|
||||
76F5BD081D2BB57F005917E5 /* PathConstraintData.c */,
|
||||
76F5BD091D2BB57F005917E5 /* RegionAttachment.c */,
|
||||
76F5BD0A1D2BB57F005917E5 /* Skeleton.c */,
|
||||
76F5BD0B1D2BB57F005917E5 /* SkeletonBounds.c */,
|
||||
76F5BD0C1D2BB57F005917E5 /* SkeletonData.c */,
|
||||
76F5BD0D1D2BB57F005917E5 /* SkeletonJson.c */,
|
||||
76F5BD0E1D2BB57F005917E5 /* Skin.c */,
|
||||
76F5BD0F1D2BB57F005917E5 /* Slot.c */,
|
||||
76F5BD101D2BB57F005917E5 /* SlotData.c */,
|
||||
76F5BD111D2BB57F005917E5 /* TransformConstraint.c */,
|
||||
76F5BD121D2BB57F005917E5 /* TransformConstraintData.c */,
|
||||
76F5BD131D2BB57F005917E5 /* VertexAttachment.c */,
|
||||
);
|
||||
name = spine;
|
||||
sourceTree = "<group>";
|
||||
@ -715,49 +734,53 @@
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
76AAA3E61D180FA800C54FCB /* Atlas.c in Sources */,
|
||||
76F5BD221D2BB57F005917E5 /* IkConstraintData.c in Sources */,
|
||||
76F5BD1E1D2BB57F005917E5 /* Event.c in Sources */,
|
||||
76F5BD311D2BB57F005917E5 /* TransformConstraintData.c in Sources */,
|
||||
76F5BD1B1D2BB57F005917E5 /* Bone.c in Sources */,
|
||||
76F5BD171D2BB57F005917E5 /* Atlas.c in Sources */,
|
||||
76AAA40C1D18106000C54FCB /* AttachmentVertices.cpp in Sources */,
|
||||
76AAA3EA1D180FA800C54FCB /* Bone.c in Sources */,
|
||||
76AAA3ED1D180FA800C54FCB /* Event.c in Sources */,
|
||||
76AAA3E31D180FA800C54FCB /* Animation.c in Sources */,
|
||||
76AAA3F81D180FA800C54FCB /* SkeletonJson.c in Sources */,
|
||||
76F5BD551D2BD7D3005917E5 /* TankExample.cpp in Sources */,
|
||||
76F5BD321D2BB57F005917E5 /* VertexAttachment.c in Sources */,
|
||||
76AAA3C51D180F7C00C54FCB /* SpineboyExample.cpp in Sources */,
|
||||
76AAA3F21D180FA800C54FCB /* Json.c in Sources */,
|
||||
76AAA3F71D180FA800C54FCB /* SkeletonData.c in Sources */,
|
||||
76AAA3E91D180FA800C54FCB /* AttachmentLoader.c in Sources */,
|
||||
76AAA3F11D180FA800C54FCB /* IkConstraintData.c in Sources */,
|
||||
76AAA3F51D180FA800C54FCB /* Skeleton.c in Sources */,
|
||||
76AAA3FE1D180FA800C54FCB /* WeightedMeshAttachment.c in Sources */,
|
||||
76AAA3EB1D180FA800C54FCB /* BoneData.c in Sources */,
|
||||
76AAA3F91D180FA800C54FCB /* Skin.c in Sources */,
|
||||
76F5BD2C1D2BB57F005917E5 /* SkeletonJson.c in Sources */,
|
||||
76F5BD2E1D2BB57F005917E5 /* Slot.c in Sources */,
|
||||
76F5BD251D2BB57F005917E5 /* PathAttachment.c in Sources */,
|
||||
76F5BD1D1D2BB57F005917E5 /* BoundingBoxAttachment.c in Sources */,
|
||||
76F5BD161D2BB57F005917E5 /* AnimationStateData.c in Sources */,
|
||||
76AAA3C11D180F7C00C54FCB /* BatchingExample.cpp in Sources */,
|
||||
76F5BD2D1D2BB57F005917E5 /* Skin.c in Sources */,
|
||||
76AAA40D1D18106000C54FCB /* Cocos2dAttachmentLoader.cpp in Sources */,
|
||||
76AAA3E41D180FA800C54FCB /* AnimationState.c in Sources */,
|
||||
76AAA3EF1D180FA800C54FCB /* extension.c in Sources */,
|
||||
76AAA3FA1D180FA800C54FCB /* Slot.c in Sources */,
|
||||
76AAA3FC1D180FA800C54FCB /* TransformConstraint.c in Sources */,
|
||||
76AAA40F1D18106000C54FCB /* SkeletonBatch.cpp in Sources */,
|
||||
76AAA3F01D180FA800C54FCB /* IkConstraint.c in Sources */,
|
||||
76F5BD211D2BB57F005917E5 /* IkConstraint.c in Sources */,
|
||||
76F5BD1F1D2BB57F005917E5 /* EventData.c in Sources */,
|
||||
76F5BD1A1D2BB57F005917E5 /* AttachmentLoader.c in Sources */,
|
||||
76AAA3C31D180F7C00C54FCB /* RaptorExample.cpp in Sources */,
|
||||
76AAA3F61D180FA800C54FCB /* SkeletonBounds.c in Sources */,
|
||||
76AAA3EC1D180FA800C54FCB /* BoundingBoxAttachment.c in Sources */,
|
||||
76F5BD281D2BB57F005917E5 /* RegionAttachment.c in Sources */,
|
||||
76F5BD2A1D2BB57F005917E5 /* SkeletonBounds.c in Sources */,
|
||||
76F5BD201D2BB57F005917E5 /* extension.c in Sources */,
|
||||
76AAA3C01D180F7C00C54FCB /* AppDelegate.cpp in Sources */,
|
||||
76AAA3C41D180F7C00C54FCB /* SimpleCommand.cpp in Sources */,
|
||||
76F5BD261D2BB57F005917E5 /* PathConstraint.c in Sources */,
|
||||
503AE10017EB989F00D1A890 /* AppController.mm in Sources */,
|
||||
76AAA3E81D180FA800C54FCB /* Attachment.c in Sources */,
|
||||
76AAA3F31D180FA800C54FCB /* MeshAttachment.c in Sources */,
|
||||
76AAA3E71D180FA800C54FCB /* AtlasAttachmentLoader.c in Sources */,
|
||||
76AAA3FB1D180FA800C54FCB /* SlotData.c in Sources */,
|
||||
76AAA3FD1D180FA800C54FCB /* TransformConstraintData.c in Sources */,
|
||||
76AAA3EE1D180FA800C54FCB /* EventData.c in Sources */,
|
||||
76AAA3E51D180FA800C54FCB /* AnimationStateData.c in Sources */,
|
||||
76AAA40E1D18106000C54FCB /* SkeletonAnimation.cpp in Sources */,
|
||||
76AAA4111D18106000C54FCB /* spine-cocos2dx.cpp in Sources */,
|
||||
76F5BD181D2BB57F005917E5 /* AtlasAttachmentLoader.c in Sources */,
|
||||
76F5BD151D2BB57F005917E5 /* AnimationState.c in Sources */,
|
||||
76F5BD2F1D2BB57F005917E5 /* SlotData.c in Sources */,
|
||||
76F5BD271D2BB57F005917E5 /* PathConstraintData.c in Sources */,
|
||||
76F5BD291D2BB57F005917E5 /* Skeleton.c in Sources */,
|
||||
76F5BD241D2BB57F005917E5 /* MeshAttachment.c in Sources */,
|
||||
76F5BD1C1D2BB57F005917E5 /* BoneData.c in Sources */,
|
||||
76AAA3C21D180F7C00C54FCB /* GoblinsExample.cpp in Sources */,
|
||||
76F5BD141D2BB57F005917E5 /* Animation.c in Sources */,
|
||||
76F5BD2B1D2BB57F005917E5 /* SkeletonData.c in Sources */,
|
||||
503AE10217EB989F00D1A890 /* RootViewController.mm in Sources */,
|
||||
76AAA3F41D180FA800C54FCB /* RegionAttachment.c in Sources */,
|
||||
76F5BD191D2BB57F005917E5 /* Attachment.c in Sources */,
|
||||
76F5BD231D2BB57F005917E5 /* Json.c in Sources */,
|
||||
503AE10117EB989F00D1A890 /* main.m in Sources */,
|
||||
76AAA4101D18106000C54FCB /* SkeletonRenderer.cpp in Sources */,
|
||||
76F5BD301D2BB57F005917E5 /* TransformConstraint.c in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
@ -765,6 +788,40 @@
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
76F5BD561D2BD7EF005917E5 /* TankExample.cpp in Sources */,
|
||||
76F5BD571D2BD7EF005917E5 /* TankExample.h in Sources */,
|
||||
76F5BD331D2BD4A9005917E5 /* Animation.c in Sources */,
|
||||
76F5BD341D2BD4A9005917E5 /* AnimationState.c in Sources */,
|
||||
76F5BD351D2BD4A9005917E5 /* AnimationStateData.c in Sources */,
|
||||
76F5BD361D2BD4A9005917E5 /* Atlas.c in Sources */,
|
||||
76F5BD371D2BD4A9005917E5 /* AtlasAttachmentLoader.c in Sources */,
|
||||
76F5BD381D2BD4A9005917E5 /* Attachment.c in Sources */,
|
||||
76F5BD391D2BD4A9005917E5 /* AttachmentLoader.c in Sources */,
|
||||
76F5BD3A1D2BD4A9005917E5 /* Bone.c in Sources */,
|
||||
76F5BD3B1D2BD4A9005917E5 /* BoneData.c in Sources */,
|
||||
76F5BD3C1D2BD4A9005917E5 /* BoundingBoxAttachment.c in Sources */,
|
||||
76F5BD3D1D2BD4A9005917E5 /* Event.c in Sources */,
|
||||
76F5BD3E1D2BD4A9005917E5 /* EventData.c in Sources */,
|
||||
76F5BD3F1D2BD4A9005917E5 /* extension.c in Sources */,
|
||||
76F5BD401D2BD4A9005917E5 /* IkConstraint.c in Sources */,
|
||||
76F5BD411D2BD4A9005917E5 /* IkConstraintData.c in Sources */,
|
||||
76F5BD421D2BD4A9005917E5 /* Json.c in Sources */,
|
||||
76F5BD431D2BD4A9005917E5 /* Json.h in Sources */,
|
||||
76F5BD441D2BD4A9005917E5 /* MeshAttachment.c in Sources */,
|
||||
76F5BD451D2BD4A9005917E5 /* PathAttachment.c in Sources */,
|
||||
76F5BD461D2BD4A9005917E5 /* PathConstraint.c in Sources */,
|
||||
76F5BD471D2BD4A9005917E5 /* PathConstraintData.c in Sources */,
|
||||
76F5BD481D2BD4A9005917E5 /* RegionAttachment.c in Sources */,
|
||||
76F5BD491D2BD4A9005917E5 /* Skeleton.c in Sources */,
|
||||
76F5BD4A1D2BD4A9005917E5 /* SkeletonBounds.c in Sources */,
|
||||
76F5BD4B1D2BD4A9005917E5 /* SkeletonData.c in Sources */,
|
||||
76F5BD4C1D2BD4A9005917E5 /* SkeletonJson.c in Sources */,
|
||||
76F5BD4D1D2BD4A9005917E5 /* Skin.c in Sources */,
|
||||
76F5BD4E1D2BD4A9005917E5 /* Slot.c in Sources */,
|
||||
76F5BD4F1D2BD4A9005917E5 /* SlotData.c in Sources */,
|
||||
76F5BD501D2BD4A9005917E5 /* TransformConstraint.c in Sources */,
|
||||
76F5BD511D2BD4A9005917E5 /* TransformConstraintData.c in Sources */,
|
||||
76F5BD521D2BD4A9005917E5 /* VertexAttachment.c in Sources */,
|
||||
76AAA43B1D1811B000C54FCB /* AppDelegate.cpp in Sources */,
|
||||
76AAA43C1D1811B000C54FCB /* AppDelegate.h in Sources */,
|
||||
76AAA43D1D1811B000C54FCB /* AppMacros.h in Sources */,
|
||||
@ -778,35 +835,6 @@
|
||||
76AAA4451D1811B000C54FCB /* SimpleCommand.h in Sources */,
|
||||
76AAA4461D1811B000C54FCB /* SpineboyExample.cpp in Sources */,
|
||||
76AAA4471D1811B000C54FCB /* SpineboyExample.h in Sources */,
|
||||
76AAA41E1D1811A700C54FCB /* Animation.c in Sources */,
|
||||
76AAA41F1D1811A700C54FCB /* AnimationState.c in Sources */,
|
||||
76AAA4201D1811A700C54FCB /* AnimationStateData.c in Sources */,
|
||||
76AAA4211D1811A700C54FCB /* Atlas.c in Sources */,
|
||||
76AAA4221D1811A700C54FCB /* AtlasAttachmentLoader.c in Sources */,
|
||||
76AAA4231D1811A700C54FCB /* Attachment.c in Sources */,
|
||||
76AAA4241D1811A700C54FCB /* AttachmentLoader.c in Sources */,
|
||||
76AAA4251D1811A700C54FCB /* Bone.c in Sources */,
|
||||
76AAA4261D1811A700C54FCB /* BoneData.c in Sources */,
|
||||
76AAA4271D1811A700C54FCB /* BoundingBoxAttachment.c in Sources */,
|
||||
76AAA4281D1811A700C54FCB /* Event.c in Sources */,
|
||||
76AAA4291D1811A700C54FCB /* EventData.c in Sources */,
|
||||
76AAA42A1D1811A700C54FCB /* extension.c in Sources */,
|
||||
76AAA42B1D1811A700C54FCB /* IkConstraint.c in Sources */,
|
||||
76AAA42C1D1811A700C54FCB /* IkConstraintData.c in Sources */,
|
||||
76AAA42D1D1811A700C54FCB /* Json.c in Sources */,
|
||||
76AAA42E1D1811A700C54FCB /* Json.h in Sources */,
|
||||
76AAA42F1D1811A700C54FCB /* MeshAttachment.c in Sources */,
|
||||
76AAA4301D1811A700C54FCB /* RegionAttachment.c in Sources */,
|
||||
76AAA4311D1811A700C54FCB /* Skeleton.c in Sources */,
|
||||
76AAA4321D1811A700C54FCB /* SkeletonBounds.c in Sources */,
|
||||
76AAA4331D1811A700C54FCB /* SkeletonData.c in Sources */,
|
||||
76AAA4341D1811A700C54FCB /* SkeletonJson.c in Sources */,
|
||||
76AAA4351D1811A700C54FCB /* Skin.c in Sources */,
|
||||
76AAA4361D1811A700C54FCB /* Slot.c in Sources */,
|
||||
76AAA4371D1811A700C54FCB /* SlotData.c in Sources */,
|
||||
76AAA4381D1811A700C54FCB /* TransformConstraint.c in Sources */,
|
||||
76AAA4391D1811A700C54FCB /* TransformConstraintData.c in Sources */,
|
||||
76AAA43A1D1811A700C54FCB /* WeightedMeshAttachment.c in Sources */,
|
||||
76AAA4121D18119F00C54FCB /* AttachmentVertices.cpp in Sources */,
|
||||
76AAA4131D18119F00C54FCB /* AttachmentVertices.h in Sources */,
|
||||
76AAA4141D18119F00C54FCB /* Cocos2dAttachmentLoader.cpp in Sources */,
|
||||
|
||||
@ -162,6 +162,9 @@ xcopy "$(ProjectDir)..\Resources" "$(OutDir)" /D /E /I /F /Y
|
||||
<ClCompile Include="..\..\..\spine-c\src\spine\IkConstraintData.c" />
|
||||
<ClCompile Include="..\..\..\spine-c\src\spine\Json.c" />
|
||||
<ClCompile Include="..\..\..\spine-c\src\spine\MeshAttachment.c" />
|
||||
<ClCompile Include="..\..\..\spine-c\src\spine\PathAttachment.c" />
|
||||
<ClCompile Include="..\..\..\spine-c\src\spine\PathConstraint.c" />
|
||||
<ClCompile Include="..\..\..\spine-c\src\spine\PathConstraintData.c" />
|
||||
<ClCompile Include="..\..\..\spine-c\src\spine\RegionAttachment.c" />
|
||||
<ClCompile Include="..\..\..\spine-c\src\spine\Skeleton.c" />
|
||||
<ClCompile Include="..\..\..\spine-c\src\spine\SkeletonBounds.c" />
|
||||
@ -172,7 +175,7 @@ xcopy "$(ProjectDir)..\Resources" "$(OutDir)" /D /E /I /F /Y
|
||||
<ClCompile Include="..\..\..\spine-c\src\spine\SlotData.c" />
|
||||
<ClCompile Include="..\..\..\spine-c\src\spine\TransformConstraint.c" />
|
||||
<ClCompile Include="..\..\..\spine-c\src\spine\TransformConstraintData.c" />
|
||||
<ClCompile Include="..\..\..\spine-c\src\spine\WeightedMeshAttachment.c" />
|
||||
<ClCompile Include="..\..\..\spine-c\src\spine\VertexAttachment.c" />
|
||||
<ClCompile Include="..\..\src\spine\AttachmentVertices.cpp" />
|
||||
<ClCompile Include="..\..\src\spine\Cocos2dAttachmentLoader.cpp" />
|
||||
<ClCompile Include="..\..\src\spine\SkeletonAnimation.cpp" />
|
||||
@ -185,6 +188,7 @@ xcopy "$(ProjectDir)..\Resources" "$(OutDir)" /D /E /I /F /Y
|
||||
<ClCompile Include="..\Classes\RaptorExample.cpp" />
|
||||
<ClCompile Include="..\Classes\SimpleCommand.cpp" />
|
||||
<ClCompile Include="..\Classes\SpineboyExample.cpp" />
|
||||
<ClCompile Include="..\Classes\TankExample.cpp" />
|
||||
<ClCompile Include="main.cpp" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
@ -204,6 +208,9 @@ xcopy "$(ProjectDir)..\Resources" "$(OutDir)" /D /E /I /F /Y
|
||||
<ClInclude Include="..\..\..\spine-c\include\spine\IkConstraint.h" />
|
||||
<ClInclude Include="..\..\..\spine-c\include\spine\IkConstraintData.h" />
|
||||
<ClInclude Include="..\..\..\spine-c\include\spine\MeshAttachment.h" />
|
||||
<ClInclude Include="..\..\..\spine-c\include\spine\PathAttachment.h" />
|
||||
<ClInclude Include="..\..\..\spine-c\include\spine\PathConstraint.h" />
|
||||
<ClInclude Include="..\..\..\spine-c\include\spine\PathConstraintData.h" />
|
||||
<ClInclude Include="..\..\..\spine-c\include\spine\RegionAttachment.h" />
|
||||
<ClInclude Include="..\..\..\spine-c\include\spine\Skeleton.h" />
|
||||
<ClInclude Include="..\..\..\spine-c\include\spine\SkeletonBounds.h" />
|
||||
@ -215,7 +222,7 @@ xcopy "$(ProjectDir)..\Resources" "$(OutDir)" /D /E /I /F /Y
|
||||
<ClInclude Include="..\..\..\spine-c\include\spine\spine.h" />
|
||||
<ClInclude Include="..\..\..\spine-c\include\spine\TransformConstraint.h" />
|
||||
<ClInclude Include="..\..\..\spine-c\include\spine\TransformConstraintData.h" />
|
||||
<ClInclude Include="..\..\..\spine-c\include\spine\WeightedMeshAttachment.h" />
|
||||
<ClInclude Include="..\..\..\spine-c\include\spine\VertexAttachment.h" />
|
||||
<ClInclude Include="..\..\..\spine-c\src\spine\Json.h" />
|
||||
<ClInclude Include="..\..\src\spine\AttachmentVertices.h" />
|
||||
<ClInclude Include="..\..\src\spine\Cocos2dAttachmentLoader.h" />
|
||||
@ -230,6 +237,7 @@ xcopy "$(ProjectDir)..\Resources" "$(OutDir)" /D /E /I /F /Y
|
||||
<ClInclude Include="..\Classes\RaptorExample.h" />
|
||||
<ClInclude Include="..\Classes\SimpleCommand.h" />
|
||||
<ClInclude Include="..\Classes\SpineboyExample.h" />
|
||||
<ClInclude Include="..\Classes\TankExample.h" />
|
||||
<ClInclude Include="main.h" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
|
||||
@ -108,6 +108,15 @@
|
||||
<ClCompile Include="..\..\..\spine-c\src\spine\MeshAttachment.c">
|
||||
<Filter>spine</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\spine-c\src\spine\PathAttachment.c">
|
||||
<Filter>spine</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\spine-c\src\spine\PathConstraint.c">
|
||||
<Filter>spine</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\spine-c\src\spine\PathConstraintData.c">
|
||||
<Filter>spine</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\spine-c\src\spine\RegionAttachment.c">
|
||||
<Filter>spine</Filter>
|
||||
</ClCompile>
|
||||
@ -138,9 +147,12 @@
|
||||
<ClCompile Include="..\..\..\spine-c\src\spine\TransformConstraintData.c">
|
||||
<Filter>spine</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\spine-c\src\spine\WeightedMeshAttachment.c">
|
||||
<ClCompile Include="..\..\..\spine-c\src\spine\VertexAttachment.c">
|
||||
<Filter>spine</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\Classes\TankExample.cpp">
|
||||
<Filter>src</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="main.h">
|
||||
@ -185,7 +197,7 @@
|
||||
<ClInclude Include="..\..\src\spine\spine-cocos2dx.h">
|
||||
<Filter>spine-cocos2dx</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\spine-c\src\spine\Json.h">
|
||||
<ClInclude Include="..\..\..\spine-c\include\spine\AttachmentLoader.h">
|
||||
<Filter>spine</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\spine-c\include\spine\Animation.h">
|
||||
@ -206,9 +218,6 @@
|
||||
<ClInclude Include="..\..\..\spine-c\include\spine\Attachment.h">
|
||||
<Filter>spine</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\spine-c\include\spine\AttachmentLoader.h">
|
||||
<Filter>spine</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\spine-c\include\spine\Bone.h">
|
||||
<Filter>spine</Filter>
|
||||
</ClInclude>
|
||||
@ -236,6 +245,15 @@
|
||||
<ClInclude Include="..\..\..\spine-c\include\spine\MeshAttachment.h">
|
||||
<Filter>spine</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\spine-c\include\spine\PathAttachment.h">
|
||||
<Filter>spine</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\spine-c\include\spine\PathConstraint.h">
|
||||
<Filter>spine</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\spine-c\include\spine\PathConstraintData.h">
|
||||
<Filter>spine</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\spine-c\include\spine\RegionAttachment.h">
|
||||
<Filter>spine</Filter>
|
||||
</ClInclude>
|
||||
@ -269,9 +287,15 @@
|
||||
<ClInclude Include="..\..\..\spine-c\include\spine\TransformConstraintData.h">
|
||||
<Filter>spine</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\spine-c\include\spine\WeightedMeshAttachment.h">
|
||||
<ClInclude Include="..\..\..\spine-c\include\spine\VertexAttachment.h">
|
||||
<Filter>spine</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\spine-c\src\spine\Json.h">
|
||||
<Filter>spine</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\Classes\TankExample.h">
|
||||
<Filter>src</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ResourceCompile Include="game.rc">
|
||||
|
||||
@ -64,22 +64,9 @@ void _Cocos2dAttachmentLoader_configureAttachment (spAttachmentLoader* loader, s
|
||||
spMeshAttachment* meshAttachment = SUB_CAST(spMeshAttachment, attachment);
|
||||
spAtlasRegion* region = (spAtlasRegion*)meshAttachment->rendererObject;
|
||||
AttachmentVertices* attachmentVertices = new AttachmentVertices((Texture2D*)region->page->rendererObject,
|
||||
meshAttachment->verticesCount >> 1, meshAttachment->triangles, meshAttachment->trianglesCount);
|
||||
meshAttachment->super.worldVerticesLength >> 1, meshAttachment->triangles, meshAttachment->trianglesCount);
|
||||
V3F_C4B_T2F* vertices = attachmentVertices->_triangles->verts;
|
||||
for (int i = 0, ii = 0, nn = meshAttachment->verticesCount; ii < nn; ++i, ii += 2) {
|
||||
vertices[i].texCoords.u = meshAttachment->uvs[ii];
|
||||
vertices[i].texCoords.v = meshAttachment->uvs[ii + 1];
|
||||
}
|
||||
meshAttachment->rendererObject = attachmentVertices;
|
||||
break;
|
||||
}
|
||||
case SP_ATTACHMENT_WEIGHTED_MESH: {
|
||||
spWeightedMeshAttachment* meshAttachment = SUB_CAST(spWeightedMeshAttachment, attachment);
|
||||
spAtlasRegion* region = (spAtlasRegion*)meshAttachment->rendererObject;
|
||||
AttachmentVertices* attachmentVertices = new AttachmentVertices((Texture2D*)region->page->rendererObject,
|
||||
meshAttachment->uvsCount >> 1, meshAttachment->triangles, meshAttachment->trianglesCount);
|
||||
V3F_C4B_T2F* vertices = attachmentVertices->_triangles->verts;
|
||||
for (int i = 0, ii = 0, nn = meshAttachment->uvsCount; ii < nn; ++i, ii += 2) {
|
||||
for (int i = 0, ii = 0, nn = meshAttachment->super.worldVerticesLength; ii < nn; ++i, ii += 2) {
|
||||
vertices[i].texCoords.u = meshAttachment->uvs[ii];
|
||||
vertices[i].texCoords.v = meshAttachment->uvs[ii + 1];
|
||||
}
|
||||
@ -102,11 +89,6 @@ void _Cocos2dAttachmentLoader_disposeAttachment (spAttachmentLoader* loader, spA
|
||||
delete (AttachmentVertices*)meshAttachment->rendererObject;
|
||||
break;
|
||||
}
|
||||
case SP_ATTACHMENT_WEIGHTED_MESH: {
|
||||
spWeightedMeshAttachment* meshAttachment = SUB_CAST(spWeightedMeshAttachment, attachment);
|
||||
delete (AttachmentVertices*)meshAttachment->rendererObject;
|
||||
break;
|
||||
}
|
||||
default: ;
|
||||
}
|
||||
}
|
||||
|
||||
@ -180,16 +180,6 @@ void SkeletonRenderer::draw (Renderer* renderer, const Mat4& transform, uint32_t
|
||||
color.a = attachment->a;
|
||||
break;
|
||||
}
|
||||
case SP_ATTACHMENT_WEIGHTED_MESH: {
|
||||
spWeightedMeshAttachment* attachment = (spWeightedMeshAttachment*)slot->attachment;
|
||||
spWeightedMeshAttachment_computeWorldVertices(attachment, slot, _worldVertices);
|
||||
attachmentVertices = getAttachmentVertices(attachment);
|
||||
color.r = attachment->r;
|
||||
color.g = attachment->g;
|
||||
color.b = attachment->b;
|
||||
color.a = attachment->a;
|
||||
break;
|
||||
}
|
||||
default:
|
||||
continue;
|
||||
}
|
||||
@ -292,10 +282,6 @@ AttachmentVertices* SkeletonRenderer::getAttachmentVertices (spMeshAttachment* a
|
||||
return (AttachmentVertices*)attachment->rendererObject;
|
||||
}
|
||||
|
||||
AttachmentVertices* SkeletonRenderer::getAttachmentVertices (spWeightedMeshAttachment* attachment) const {
|
||||
return (AttachmentVertices*)attachment->rendererObject;
|
||||
}
|
||||
|
||||
Rect SkeletonRenderer::getBoundingBox () const {
|
||||
float minX = FLT_MAX, minY = FLT_MAX, maxX = FLT_MIN, maxY = FLT_MIN;
|
||||
float scaleX = getScaleX(), scaleY = getScaleY();
|
||||
@ -310,11 +296,7 @@ Rect SkeletonRenderer::getBoundingBox () const {
|
||||
} else if (slot->attachment->type == SP_ATTACHMENT_MESH) {
|
||||
spMeshAttachment* mesh = (spMeshAttachment*)slot->attachment;
|
||||
spMeshAttachment_computeWorldVertices(mesh, slot, _worldVertices);
|
||||
verticesCount = mesh->verticesCount;
|
||||
} else if (slot->attachment->type == SP_ATTACHMENT_WEIGHTED_MESH) {
|
||||
spWeightedMeshAttachment* mesh = (spWeightedMeshAttachment*)slot->attachment;
|
||||
spWeightedMeshAttachment_computeWorldVertices(mesh, slot, _worldVertices);
|
||||
verticesCount = mesh->uvsCount;
|
||||
verticesCount = mesh->super.worldVerticesLength;
|
||||
} else
|
||||
continue;
|
||||
for (int ii = 0; ii < verticesCount; ii += 2) {
|
||||
|
||||
@ -117,7 +117,6 @@ protected:
|
||||
void setSkeletonData (spSkeletonData* skeletonData, bool ownsSkeletonData);
|
||||
virtual AttachmentVertices* getAttachmentVertices (spRegionAttachment* attachment) const;
|
||||
virtual AttachmentVertices* getAttachmentVertices (spMeshAttachment* attachment) const;
|
||||
virtual AttachmentVertices* getAttachmentVertices (spWeightedMeshAttachment* attachment) const;
|
||||
|
||||
bool _ownsSkeletonData;
|
||||
spAtlas* _atlas;
|
||||
|
||||
125
spine-libgdx/spine-libgdx-tests/assets/path/tank.atlas
Normal file
@ -0,0 +1,125 @@
|
||||
|
||||
tank.png
|
||||
size: 2048,1024
|
||||
format: RGBA8888
|
||||
filter: Linear,Linear
|
||||
repeat: none
|
||||
images/antenna
|
||||
rotate: true
|
||||
xy: 1295, 683
|
||||
size: 22, 303
|
||||
orig: 22, 303
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
images/cannon
|
||||
rotate: false
|
||||
xy: 2, 93
|
||||
size: 931, 58
|
||||
orig: 931, 58
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
images/cannonConnector
|
||||
rotate: true
|
||||
xy: 1676, 455
|
||||
size: 112, 135
|
||||
orig: 112, 135
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
images/guntower
|
||||
rotate: false
|
||||
xy: 1295, 707
|
||||
size: 730, 289
|
||||
orig: 730, 289
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
images/machinegun
|
||||
rotate: false
|
||||
xy: 2, 34
|
||||
size: 331, 57
|
||||
orig: 331, 57
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
images/machinegun-mount
|
||||
rotate: false
|
||||
xy: 1952, 609
|
||||
size: 72, 96
|
||||
orig: 72, 96
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
images/rock
|
||||
rotate: false
|
||||
xy: 935, 96
|
||||
size: 252, 55
|
||||
orig: 252, 55
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
images/tankBottom
|
||||
rotate: false
|
||||
xy: 2, 377
|
||||
size: 1285, 276
|
||||
orig: 1285, 276
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
images/tankBottom-shadow
|
||||
rotate: false
|
||||
xy: 2, 655
|
||||
size: 1291, 341
|
||||
orig: 1291, 341
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
images/tankTop
|
||||
rotate: false
|
||||
xy: 2, 153
|
||||
size: 1407, 222
|
||||
orig: 1407, 222
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
images/tread
|
||||
rotate: false
|
||||
xy: 2, 2
|
||||
size: 96, 30
|
||||
orig: 96, 30
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
images/tread-inside
|
||||
rotate: false
|
||||
xy: 335, 63
|
||||
size: 25, 28
|
||||
orig: 25, 28
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
images/wheel-big
|
||||
rotate: false
|
||||
xy: 1295, 490
|
||||
size: 191, 191
|
||||
orig: 191, 191
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
images/wheel-big-overlay
|
||||
rotate: false
|
||||
xy: 1488, 495
|
||||
size: 186, 186
|
||||
orig: 186, 186
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
images/wheel-mid
|
||||
rotate: false
|
||||
xy: 1676, 569
|
||||
size: 136, 136
|
||||
orig: 136, 136
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
images/wheel-mid-overlay
|
||||
rotate: false
|
||||
xy: 1814, 569
|
||||
size: 136, 136
|
||||
orig: 136, 136
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
images/wheel-small
|
||||
rotate: false
|
||||
xy: 1813, 496
|
||||
size: 71, 71
|
||||
orig: 71, 71
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
1899
spine-libgdx/spine-libgdx-tests/assets/path/tank.json
Normal file
BIN
spine-libgdx/spine-libgdx-tests/assets/path/tank.png
Normal file
|
After Width: | Height: | Size: 1.1 MiB |
BIN
spine-libgdx/spine-libgdx-tests/assets/path/tank.skel
Normal file
13
spine-libgdx/spine-libgdx-tests/assets/path/test.atlas
Normal file
@ -0,0 +1,13 @@
|
||||
|
||||
test.png
|
||||
size: 512,512
|
||||
format: RGBA8888
|
||||
filter: Linear,Linear
|
||||
repeat: none
|
||||
badlogic
|
||||
rotate: false
|
||||
xy: 2, 2
|
||||
size: 460, 460
|
||||
orig: 460, 460
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
48
spine-libgdx/spine-libgdx-tests/assets/path/test.json
Normal file
@ -0,0 +1,48 @@
|
||||
{
|
||||
"skeleton": { "hash": "XCHjZ6CXxuRTpodKRwdOuXKgOx4", "spine": "3.3.07", "width": 78.98, "height": 78.98, "images": "./images/" },
|
||||
"bones": [
|
||||
{ "name": "root" },
|
||||
{ "name": "image", "parent": "root", "length": 100, "x": 91.84 },
|
||||
{ "name": "pathbone", "parent": "root" }
|
||||
],
|
||||
"slots": [
|
||||
{ "name": "badlogic", "bone": "image", "attachment": "badlogic" },
|
||||
{ "name": "path", "bone": "pathbone", "attachment": "path" }
|
||||
],
|
||||
"path": [
|
||||
{
|
||||
"name": "pathConstraint",
|
||||
"bones": [ "image" ],
|
||||
"target": "path",
|
||||
"rotateMode": "chain"
|
||||
}
|
||||
],
|
||||
"skins": {
|
||||
"default": {
|
||||
"badlogic": {
|
||||
"badlogic": { "x": -2.94, "y": 0.53, "scaleX": 0.129, "scaleY": 0.129, "width": 460, "height": 460 }
|
||||
},
|
||||
"path": {
|
||||
"path": {
|
||||
"type": "path",
|
||||
"closed": true,
|
||||
"lengths": [ 172.76, 358.01, 486.73, 700.2 ],
|
||||
"vertexCount": 12,
|
||||
"vertices": [ 2.23, 110.87, 47.15, 79.55, 67.76, 64.62, 172.59, 6.71, 207.52, 47.95, 242.44, 89.19, 231.71, 187.91, 207.52, 225.7, 183.32, 263.49, 122.11, 245.01, 86.65, 236.76, -123.64, 188.65 ]
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"animations": {
|
||||
"test": {
|
||||
"paths": {
|
||||
"pathConstraint": {
|
||||
"position": [
|
||||
{ "time": 0 },
|
||||
{ "time": 3.3333, "position": 1 }
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
BIN
spine-libgdx/spine-libgdx-tests/assets/path/test.png
Normal file
|
After Width: | Height: | Size: 43 KiB |
@ -0,0 +1,46 @@
|
||||
|
||||
package com.esotericsoftware.spine;
|
||||
|
||||
import com.badlogic.gdx.ApplicationAdapter;
|
||||
import com.badlogic.gdx.Gdx;
|
||||
import com.badlogic.gdx.backends.lwjgl.LwjglApplication;
|
||||
import com.badlogic.gdx.graphics.g2d.TextureAtlas;
|
||||
|
||||
public class PathTest extends ApplicationAdapter {
|
||||
|
||||
|
||||
@Override
|
||||
public void create () {
|
||||
TextureAtlas atlas = new TextureAtlas(Gdx.files.internal("path/tank.atlas"));
|
||||
SkeletonJson json = new SkeletonJson(atlas);
|
||||
SkeletonData data = json.readSkeletonData(Gdx.files.internal("path/tank.json"));
|
||||
Skeleton skeleton = new Skeleton(data);
|
||||
skeleton.x = 0;
|
||||
skeleton.y = 0;
|
||||
AnimationStateData animData = new AnimationStateData(data);
|
||||
AnimationState animState = new AnimationState(animData);
|
||||
animState.setAnimation(0, "drive", true);
|
||||
|
||||
float d = 3;
|
||||
for (int i = 0; i < 1; i++) {
|
||||
skeleton.update(d);
|
||||
animState.update(d);
|
||||
animState.apply(skeleton);
|
||||
skeleton.updateWorldTransform();
|
||||
for (Bone bone: skeleton.getBones()) {
|
||||
System.out.println(String.format("%s %f %f %f %f %f %f", bone.data.name, bone.a, bone.b, bone.c, bone.d, bone.worldX, bone.worldY));
|
||||
}
|
||||
System.out.println("===========================================");
|
||||
for (int ii = 0; ii < skeleton.slots.size; ii++) {
|
||||
Slot slot = skeleton.drawOrder.get(ii);
|
||||
System.out.println(slot.data.name);
|
||||
}
|
||||
System.out.println("===========================================");
|
||||
d += 0.1f;
|
||||
}
|
||||
}
|
||||
|
||||
public static void main (String[] args) {
|
||||
new LwjglApplication(new PathTest());
|
||||
}
|
||||
}
|
||||
@ -1,193 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<?fileVersion 4.0.0?><cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
|
||||
<storageModule moduleId="org.eclipse.cdt.core.settings">
|
||||
<cconfiguration id="cdt.managedbuild.config.gnu.mingw.exe.debug.804921154">
|
||||
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="cdt.managedbuild.config.gnu.mingw.exe.debug.804921154" moduleId="org.eclipse.cdt.core.settings" name="Debug">
|
||||
<externalSettings/>
|
||||
<extensions>
|
||||
<extension id="org.eclipse.cdt.core.PE" point="org.eclipse.cdt.core.BinaryParser"/>
|
||||
<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||
<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||
<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||
</extensions>
|
||||
</storageModule>
|
||||
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
|
||||
<configuration artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe,org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.debug" cleanCommand="rm -rf" description="" id="cdt.managedbuild.config.gnu.mingw.exe.debug.804921154" name="Debug" parent="cdt.managedbuild.config.gnu.mingw.exe.debug">
|
||||
<folderInfo id="cdt.managedbuild.config.gnu.mingw.exe.debug.804921154." name="/" resourcePath="">
|
||||
<toolChain id="cdt.managedbuild.toolchain.gnu.mingw.exe.debug.1440800193" name="MinGW GCC" resourceTypeBasedDiscovery="true" superClass="cdt.managedbuild.toolchain.gnu.mingw.exe.debug">
|
||||
<targetPlatform id="cdt.managedbuild.target.gnu.platform.mingw.exe.debug.797088945" name="Debug Platform" superClass="cdt.managedbuild.target.gnu.platform.mingw.exe.debug"/>
|
||||
<builder buildPath="${workspace_loc:/cpp-generic/Debug}" id="cdt.managedbuild.tool.gnu.builder.mingw.base.1296203303" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="CDT Internal Builder" superClass="cdt.managedbuild.tool.gnu.builder.mingw.base">
|
||||
<outputEntries>
|
||||
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="outputPath" name="Debug"/>
|
||||
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="outputPath" name="Release"/>
|
||||
</outputEntries>
|
||||
</builder>
|
||||
<tool id="cdt.managedbuild.tool.gnu.assembler.mingw.exe.debug.1487845826" name="GCC Assembler" superClass="cdt.managedbuild.tool.gnu.assembler.mingw.exe.debug">
|
||||
<option id="gnu.both.asm.option.include.paths.1112183959" name="Include paths (-I)" superClass="gnu.both.asm.option.include.paths" valueType="includePath">
|
||||
<listOptionValue builtIn="false" value=""${workspace_loc:/spine-sfml/src}""/>
|
||||
<listOptionValue builtIn="false" value=""${workspace_loc:/spine-c/src}""/>
|
||||
<listOptionValue builtIn="false" value=""${workspace_loc:/spine-c/include}""/>
|
||||
<listOptionValue builtIn="false" value=""${workspace_loc:/spine-sfml/SFML/include}""/>
|
||||
</option>
|
||||
<inputType id="cdt.managedbuild.tool.gnu.assembler.input.339251819" superClass="cdt.managedbuild.tool.gnu.assembler.input"/>
|
||||
</tool>
|
||||
<tool id="cdt.managedbuild.tool.gnu.archiver.mingw.base.1265146112" name="GCC Archiver" superClass="cdt.managedbuild.tool.gnu.archiver.mingw.base"/>
|
||||
<tool id="cdt.managedbuild.tool.gnu.cpp.compiler.mingw.exe.debug.1111247076" name="GCC C++ Compiler" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.mingw.exe.debug">
|
||||
<option id="gnu.cpp.compiler.mingw.exe.debug.option.optimization.level.1284147695" name="Optimization Level" superClass="gnu.cpp.compiler.mingw.exe.debug.option.optimization.level" value="gnu.cpp.compiler.optimization.level.none" valueType="enumerated"/>
|
||||
<option id="gnu.cpp.compiler.mingw.exe.debug.option.debugging.level.1570084302" name="Debug Level" superClass="gnu.cpp.compiler.mingw.exe.debug.option.debugging.level" value="gnu.cpp.compiler.debugging.level.max" valueType="enumerated"/>
|
||||
<option id="gnu.cpp.compiler.option.include.paths.934414518" name="Include paths (-I)" superClass="gnu.cpp.compiler.option.include.paths" valueType="includePath">
|
||||
<listOptionValue builtIn="false" value=""${workspace_loc:/spine-sfml/src}""/>
|
||||
<listOptionValue builtIn="false" value=""${workspace_loc:/spine-c/src}""/>
|
||||
<listOptionValue builtIn="false" value=""${workspace_loc:/spine-c/include}""/>
|
||||
<listOptionValue builtIn="false" value=""${workspace_loc:/spine-sfml/SFML/include}""/>
|
||||
</option>
|
||||
<option id="gnu.cpp.compiler.option.warnings.allwarn.2053349441" name="All warnings (-Wall)" superClass="gnu.cpp.compiler.option.warnings.allwarn" value="true" valueType="boolean"/>
|
||||
<option id="gnu.cpp.compiler.option.preprocessor.def.1463772359" name="Defined symbols (-D)" superClass="gnu.cpp.compiler.option.preprocessor.def" valueType="definedSymbols">
|
||||
<listOptionValue builtIn="false" value="SFML_STATIC"/>
|
||||
</option>
|
||||
<option id="gnu.cpp.compiler.option.dialect.std.322230174" name="Language standard" superClass="gnu.cpp.compiler.option.dialect.std" value="gnu.cpp.compiler.dialect.default" valueType="enumerated"/>
|
||||
<inputType id="cdt.managedbuild.tool.gnu.cpp.compiler.input.1445618618" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.input"/>
|
||||
</tool>
|
||||
<tool command="gcc" id="cdt.managedbuild.tool.gnu.c.compiler.mingw.exe.debug.344670633" name="GCC C Compiler" superClass="cdt.managedbuild.tool.gnu.c.compiler.mingw.exe.debug">
|
||||
<option defaultValue="gnu.c.optimization.level.none" id="gnu.c.compiler.mingw.exe.debug.option.optimization.level.1455011160" name="Optimization Level" superClass="gnu.c.compiler.mingw.exe.debug.option.optimization.level" valueType="enumerated"/>
|
||||
<option id="gnu.c.compiler.mingw.exe.debug.option.debugging.level.242859432" name="Debug Level" superClass="gnu.c.compiler.mingw.exe.debug.option.debugging.level" value="gnu.c.debugging.level.max" valueType="enumerated"/>
|
||||
<option id="gnu.c.compiler.option.include.paths.991681732" name="Include paths (-I)" superClass="gnu.c.compiler.option.include.paths" valueType="includePath">
|
||||
<listOptionValue builtIn="false" value=""${workspace_loc:/spine-sfml/src}""/>
|
||||
<listOptionValue builtIn="false" value=""${workspace_loc:/spine-c/src}""/>
|
||||
<listOptionValue builtIn="false" value=""${workspace_loc:/spine-c/include}""/>
|
||||
<listOptionValue builtIn="false" value=""${workspace_loc:/spine-sfml/SFML/include}""/>
|
||||
</option>
|
||||
<option id="gnu.c.compiler.option.misc.other.20851089" name="Other flags" superClass="gnu.c.compiler.option.misc.other" value="-c -fmessage-length=0" valueType="string"/>
|
||||
<option id="gnu.c.compiler.option.dialect.std.27152499" name="Language standard" superClass="gnu.c.compiler.option.dialect.std" value="gnu.c.compiler.dialect.default" valueType="enumerated"/>
|
||||
<inputType id="cdt.managedbuild.tool.gnu.c.compiler.input.753970334" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/>
|
||||
</tool>
|
||||
<tool id="cdt.managedbuild.tool.gnu.c.linker.mingw.exe.debug.913061526" name="MinGW C Linker" superClass="cdt.managedbuild.tool.gnu.c.linker.mingw.exe.debug"/>
|
||||
<tool id="cdt.managedbuild.tool.gnu.cpp.linker.mingw.exe.debug.1697744244" name="MinGW C++ Linker" superClass="cdt.managedbuild.tool.gnu.cpp.linker.mingw.exe.debug">
|
||||
<option id="gnu.cpp.link.option.paths.1569606245" name="Library search path (-L)" superClass="gnu.cpp.link.option.paths" valueType="libPaths">
|
||||
<listOptionValue builtIn="false" value=""${workspace_loc:/spine-c/Debug}""/>
|
||||
<listOptionValue builtIn="false" value=""${workspace_loc:/spine-sfml/SFML/lib}""/>
|
||||
</option>
|
||||
<option id="gnu.cpp.link.option.libs.43946887" name="Libraries (-l)" superClass="gnu.cpp.link.option.libs" valueType="libs">
|
||||
<listOptionValue builtIn="false" value="spine-c"/>
|
||||
<listOptionValue builtIn="false" value="sfml-main-d"/>
|
||||
<listOptionValue builtIn="false" value="sfml-graphics-s-d"/>
|
||||
<listOptionValue builtIn="false" value="sfml-window-s-d"/>
|
||||
<listOptionValue builtIn="false" value="sfml-system-s-d"/>
|
||||
<listOptionValue builtIn="false" value="opengl32"/>
|
||||
<listOptionValue builtIn="false" value="jpeg"/>
|
||||
<listOptionValue builtIn="false" value="gdi32"/>
|
||||
<listOptionValue builtIn="false" value="winmm"/>
|
||||
</option>
|
||||
<option id="gnu.cpp.link.option.flags.705669165" name="Linker flags" superClass="gnu.cpp.link.option.flags" value="-Wl,-subsystem,windows" valueType="string"/>
|
||||
<inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.241907813" superClass="cdt.managedbuild.tool.gnu.cpp.linker.input">
|
||||
<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
|
||||
<additionalInput kind="additionalinput" paths="$(LIBS)"/>
|
||||
</inputType>
|
||||
</tool>
|
||||
</toolChain>
|
||||
</folderInfo>
|
||||
<sourceEntries>
|
||||
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="example"/>
|
||||
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="src"/>
|
||||
</sourceEntries>
|
||||
</configuration>
|
||||
</storageModule>
|
||||
<storageModule moduleId="org.eclipse.cdt.core.externalSettings">
|
||||
<externalSettings containerId="spine-c;" factoryId="org.eclipse.cdt.core.cfg.export.settings.sipplier"/>
|
||||
</storageModule>
|
||||
</cconfiguration>
|
||||
<cconfiguration id="cdt.managedbuild.config.gnu.mingw.exe.release.165980790">
|
||||
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="cdt.managedbuild.config.gnu.mingw.exe.release.165980790" moduleId="org.eclipse.cdt.core.settings" name="Release">
|
||||
<externalSettings/>
|
||||
<extensions>
|
||||
<extension id="org.eclipse.cdt.core.PE" point="org.eclipse.cdt.core.BinaryParser"/>
|
||||
<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||
<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||
<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||
</extensions>
|
||||
</storageModule>
|
||||
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
|
||||
<configuration artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe,org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.release" cleanCommand="rm -rf" description="" id="cdt.managedbuild.config.gnu.mingw.exe.release.165980790" name="Release" parent="cdt.managedbuild.config.gnu.mingw.exe.release">
|
||||
<folderInfo id="cdt.managedbuild.config.gnu.mingw.exe.release.165980790." name="/" resourcePath="">
|
||||
<toolChain id="cdt.managedbuild.toolchain.gnu.mingw.exe.release.1562355563" name="MinGW GCC" superClass="cdt.managedbuild.toolchain.gnu.mingw.exe.release">
|
||||
<targetPlatform id="cdt.managedbuild.target.gnu.platform.mingw.exe.release.532329562" name="Debug Platform" superClass="cdt.managedbuild.target.gnu.platform.mingw.exe.release"/>
|
||||
<builder buildPath="${workspace_loc:/cpp-generic/Release}" id="cdt.managedbuild.tool.gnu.builder.mingw.base.1379215371" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="CDT Internal Builder" superClass="cdt.managedbuild.tool.gnu.builder.mingw.base"/>
|
||||
<tool id="cdt.managedbuild.tool.gnu.assembler.mingw.exe.release.1078317821" name="GCC Assembler" superClass="cdt.managedbuild.tool.gnu.assembler.mingw.exe.release">
|
||||
<inputType id="cdt.managedbuild.tool.gnu.assembler.input.1307271372" superClass="cdt.managedbuild.tool.gnu.assembler.input"/>
|
||||
</tool>
|
||||
<tool id="cdt.managedbuild.tool.gnu.archiver.mingw.base.687579974" name="GCC Archiver" superClass="cdt.managedbuild.tool.gnu.archiver.mingw.base"/>
|
||||
<tool id="cdt.managedbuild.tool.gnu.cpp.compiler.mingw.exe.release.1002197508" name="GCC C++ Compiler" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.mingw.exe.release">
|
||||
<option id="gnu.cpp.compiler.mingw.exe.release.option.optimization.level.1999365576" name="Optimization Level" superClass="gnu.cpp.compiler.mingw.exe.release.option.optimization.level" value="gnu.cpp.compiler.optimization.level.most" valueType="enumerated"/>
|
||||
<option id="gnu.cpp.compiler.mingw.exe.release.option.debugging.level.1315352624" name="Debug Level" superClass="gnu.cpp.compiler.mingw.exe.release.option.debugging.level" value="gnu.cpp.compiler.debugging.level.none" valueType="enumerated"/>
|
||||
<inputType id="cdt.managedbuild.tool.gnu.cpp.compiler.input.708689179" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.input"/>
|
||||
</tool>
|
||||
<tool id="cdt.managedbuild.tool.gnu.c.compiler.mingw.exe.release.1909158038" name="GCC C Compiler" superClass="cdt.managedbuild.tool.gnu.c.compiler.mingw.exe.release">
|
||||
<option defaultValue="gnu.c.optimization.level.most" id="gnu.c.compiler.mingw.exe.release.option.optimization.level.1039575328" name="Optimization Level" superClass="gnu.c.compiler.mingw.exe.release.option.optimization.level" valueType="enumerated"/>
|
||||
<option id="gnu.c.compiler.mingw.exe.release.option.debugging.level.1692329610" name="Debug Level" superClass="gnu.c.compiler.mingw.exe.release.option.debugging.level" value="gnu.c.debugging.level.none" valueType="enumerated"/>
|
||||
<inputType id="cdt.managedbuild.tool.gnu.c.compiler.input.448919077" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/>
|
||||
</tool>
|
||||
<tool id="cdt.managedbuild.tool.gnu.c.linker.mingw.exe.release.1949432007" name="MinGW C Linker" superClass="cdt.managedbuild.tool.gnu.c.linker.mingw.exe.release"/>
|
||||
<tool id="cdt.managedbuild.tool.gnu.cpp.linker.mingw.exe.release.169613949" name="MinGW C++ Linker" superClass="cdt.managedbuild.tool.gnu.cpp.linker.mingw.exe.release">
|
||||
<inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.2036848420" superClass="cdt.managedbuild.tool.gnu.cpp.linker.input">
|
||||
<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
|
||||
<additionalInput kind="additionalinput" paths="$(LIBS)"/>
|
||||
</inputType>
|
||||
</tool>
|
||||
</toolChain>
|
||||
</folderInfo>
|
||||
<sourceEntries>
|
||||
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="src"/>
|
||||
</sourceEntries>
|
||||
</configuration>
|
||||
</storageModule>
|
||||
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
|
||||
</cconfiguration>
|
||||
</storageModule>
|
||||
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
|
||||
<project id="spine-sfml.cdt.managedbuild.target.gnu.mingw.exe.802690956" name="Executable" projectType="cdt.managedbuild.target.gnu.mingw.exe"/>
|
||||
</storageModule>
|
||||
<storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/>
|
||||
<storageModule moduleId="refreshScope" versionNumber="2">
|
||||
<configuration configurationName="Release">
|
||||
<resource resourceType="PROJECT" workspacePath="/cpp-generic"/>
|
||||
</configuration>
|
||||
<configuration configurationName="Debug"/>
|
||||
</storageModule>
|
||||
<storageModule moduleId="org.eclipse.cdt.internal.ui.text.commentOwnerProjectMappings"/>
|
||||
<storageModule moduleId="org.eclipse.cdt.make.core.buildtargets">
|
||||
<buildTargets>
|
||||
<target name="moo" path="" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
|
||||
<buildCommand>make</buildCommand>
|
||||
<buildArguments/>
|
||||
<buildTarget>moo</buildTarget>
|
||||
<stopOnError>true</stopOnError>
|
||||
<useDefaultCommand>true</useDefaultCommand>
|
||||
<runAllBuilders>true</runAllBuilders>
|
||||
</target>
|
||||
</buildTargets>
|
||||
</storageModule>
|
||||
<storageModule moduleId="scannerConfiguration">
|
||||
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
|
||||
<scannerConfigBuildInfo instanceId="cdt.managedbuild.config.gnu.mingw.exe.debug.804921154">
|
||||
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
|
||||
</scannerConfigBuildInfo>
|
||||
<scannerConfigBuildInfo instanceId="cdt.managedbuild.config.gnu.mingw.exe.debug.804921154;cdt.managedbuild.config.gnu.mingw.exe.debug.804921154.;cdt.managedbuild.tool.gnu.c.compiler.mingw.exe.debug.344670633;cdt.managedbuild.tool.gnu.c.compiler.input.753970334">
|
||||
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC"/>
|
||||
</scannerConfigBuildInfo>
|
||||
<scannerConfigBuildInfo instanceId="cdt.managedbuild.config.gnu.mingw.exe.debug.98344941;cdt.managedbuild.config.gnu.mingw.exe.debug.98344941.;cdt.managedbuild.tool.gnu.cpp.compiler.mingw.exe.debug.1019543305;cdt.managedbuild.tool.gnu.cpp.compiler.input.169804182">
|
||||
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP"/>
|
||||
</scannerConfigBuildInfo>
|
||||
<scannerConfigBuildInfo instanceId="cdt.managedbuild.config.gnu.mingw.exe.release.1009813244;cdt.managedbuild.config.gnu.mingw.exe.release.1009813244.;cdt.managedbuild.tool.gnu.c.compiler.mingw.exe.release.590673427;cdt.managedbuild.tool.gnu.c.compiler.input.802052137">
|
||||
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC"/>
|
||||
</scannerConfigBuildInfo>
|
||||
<scannerConfigBuildInfo instanceId="cdt.managedbuild.config.gnu.mingw.exe.release.1009813244;cdt.managedbuild.config.gnu.mingw.exe.release.1009813244.;cdt.managedbuild.tool.gnu.cpp.compiler.mingw.exe.release.1680995989;cdt.managedbuild.tool.gnu.cpp.compiler.input.672167706">
|
||||
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP"/>
|
||||
</scannerConfigBuildInfo>
|
||||
<scannerConfigBuildInfo instanceId="cdt.managedbuild.config.gnu.mingw.exe.debug.98344941;cdt.managedbuild.config.gnu.mingw.exe.debug.98344941.;cdt.managedbuild.tool.gnu.c.compiler.mingw.exe.debug.155084450;cdt.managedbuild.tool.gnu.c.compiler.input.1081023111">
|
||||
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC"/>
|
||||
</scannerConfigBuildInfo>
|
||||
<scannerConfigBuildInfo instanceId="cdt.managedbuild.config.gnu.mingw.exe.debug.804921154;cdt.managedbuild.config.gnu.mingw.exe.debug.804921154.;cdt.managedbuild.tool.gnu.cpp.compiler.mingw.exe.debug.1111247076;cdt.managedbuild.tool.gnu.cpp.compiler.input.1445618618">
|
||||
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP"/>
|
||||
</scannerConfigBuildInfo>
|
||||
</storageModule>
|
||||
</cproject>
|
||||
@ -1,28 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<projectDescription>
|
||||
<name>spine-sfml</name>
|
||||
<comment></comment>
|
||||
<projects>
|
||||
<project>spine-c</project>
|
||||
</projects>
|
||||
<buildSpec>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>
|
||||
<triggers>clean,full,incremental,</triggers>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
|
||||
<triggers>full,incremental,</triggers>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
</buildSpec>
|
||||
<natures>
|
||||
<nature>org.eclipse.cdt.core.cnature</nature>
|
||||
<nature>org.eclipse.cdt.core.ccnature</nature>
|
||||
<nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
|
||||
<nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
|
||||
</natures>
|
||||
</projectDescription>
|
||||
@ -1,68 +0,0 @@
|
||||
eclipse.preferences.version=1
|
||||
org.eclipse.cdt.codan.checkers.errnoreturn=Warning
|
||||
org.eclipse.cdt.codan.checkers.errnoreturn.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},implicit\=>false}
|
||||
org.eclipse.cdt.codan.checkers.errreturnvalue=Error
|
||||
org.eclipse.cdt.codan.checkers.errreturnvalue.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
|
||||
org.eclipse.cdt.codan.checkers.noreturn=Error
|
||||
org.eclipse.cdt.codan.checkers.noreturn.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},implicit\=>false}
|
||||
org.eclipse.cdt.codan.internal.checkers.AbstractClassCreation=Error
|
||||
org.eclipse.cdt.codan.internal.checkers.AbstractClassCreation.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
|
||||
org.eclipse.cdt.codan.internal.checkers.AmbiguousProblem=Error
|
||||
org.eclipse.cdt.codan.internal.checkers.AmbiguousProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
|
||||
org.eclipse.cdt.codan.internal.checkers.AssignmentInConditionProblem=Warning
|
||||
org.eclipse.cdt.codan.internal.checkers.AssignmentInConditionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
|
||||
org.eclipse.cdt.codan.internal.checkers.AssignmentToItselfProblem=Error
|
||||
org.eclipse.cdt.codan.internal.checkers.AssignmentToItselfProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
|
||||
org.eclipse.cdt.codan.internal.checkers.CaseBreakProblem=-Warning
|
||||
org.eclipse.cdt.codan.internal.checkers.CaseBreakProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},no_break_comment\=>"no break",last_case_param\=>true,empty_case_param\=>false}
|
||||
org.eclipse.cdt.codan.internal.checkers.CatchByReference=Warning
|
||||
org.eclipse.cdt.codan.internal.checkers.CatchByReference.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},unknown\=>false,exceptions\=>()}
|
||||
org.eclipse.cdt.codan.internal.checkers.CircularReferenceProblem=Error
|
||||
org.eclipse.cdt.codan.internal.checkers.CircularReferenceProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
|
||||
org.eclipse.cdt.codan.internal.checkers.ClassMembersInitialization=Warning
|
||||
org.eclipse.cdt.codan.internal.checkers.ClassMembersInitialization.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},skip\=>true}
|
||||
org.eclipse.cdt.codan.internal.checkers.FieldResolutionProblem=Error
|
||||
org.eclipse.cdt.codan.internal.checkers.FieldResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
|
||||
org.eclipse.cdt.codan.internal.checkers.FunctionResolutionProblem=Error
|
||||
org.eclipse.cdt.codan.internal.checkers.FunctionResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
|
||||
org.eclipse.cdt.codan.internal.checkers.InvalidArguments=Error
|
||||
org.eclipse.cdt.codan.internal.checkers.InvalidArguments.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
|
||||
org.eclipse.cdt.codan.internal.checkers.InvalidTemplateArgumentsProblem=Error
|
||||
org.eclipse.cdt.codan.internal.checkers.InvalidTemplateArgumentsProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
|
||||
org.eclipse.cdt.codan.internal.checkers.LabelStatementNotFoundProblem=Error
|
||||
org.eclipse.cdt.codan.internal.checkers.LabelStatementNotFoundProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
|
||||
org.eclipse.cdt.codan.internal.checkers.MemberDeclarationNotFoundProblem=Error
|
||||
org.eclipse.cdt.codan.internal.checkers.MemberDeclarationNotFoundProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
|
||||
org.eclipse.cdt.codan.internal.checkers.MethodResolutionProblem=Error
|
||||
org.eclipse.cdt.codan.internal.checkers.MethodResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
|
||||
org.eclipse.cdt.codan.internal.checkers.NamingConventionFunctionChecker=-Info
|
||||
org.eclipse.cdt.codan.internal.checkers.NamingConventionFunctionChecker.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},pattern\=>"^[a-z]",macro\=>true,exceptions\=>()}
|
||||
org.eclipse.cdt.codan.internal.checkers.NonVirtualDestructorProblem=Warning
|
||||
org.eclipse.cdt.codan.internal.checkers.NonVirtualDestructorProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
|
||||
org.eclipse.cdt.codan.internal.checkers.OverloadProblem=Error
|
||||
org.eclipse.cdt.codan.internal.checkers.OverloadProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
|
||||
org.eclipse.cdt.codan.internal.checkers.RedeclarationProblem=Error
|
||||
org.eclipse.cdt.codan.internal.checkers.RedeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
|
||||
org.eclipse.cdt.codan.internal.checkers.RedefinitionProblem=Error
|
||||
org.eclipse.cdt.codan.internal.checkers.RedefinitionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
|
||||
org.eclipse.cdt.codan.internal.checkers.ReturnStyleProblem=-Warning
|
||||
org.eclipse.cdt.codan.internal.checkers.ReturnStyleProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
|
||||
org.eclipse.cdt.codan.internal.checkers.ScanfFormatStringSecurityProblem=-Warning
|
||||
org.eclipse.cdt.codan.internal.checkers.ScanfFormatStringSecurityProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
|
||||
org.eclipse.cdt.codan.internal.checkers.StatementHasNoEffectProblem=Warning
|
||||
org.eclipse.cdt.codan.internal.checkers.StatementHasNoEffectProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},macro\=>true,exceptions\=>()}
|
||||
org.eclipse.cdt.codan.internal.checkers.SuggestedParenthesisProblem=Warning
|
||||
org.eclipse.cdt.codan.internal.checkers.SuggestedParenthesisProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},paramNot\=>false}
|
||||
org.eclipse.cdt.codan.internal.checkers.SuspiciousSemicolonProblem=Warning
|
||||
org.eclipse.cdt.codan.internal.checkers.SuspiciousSemicolonProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},else\=>false,afterelse\=>false}
|
||||
org.eclipse.cdt.codan.internal.checkers.TypeResolutionProblem=Error
|
||||
org.eclipse.cdt.codan.internal.checkers.TypeResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
|
||||
org.eclipse.cdt.codan.internal.checkers.UnusedFunctionDeclarationProblem=Warning
|
||||
org.eclipse.cdt.codan.internal.checkers.UnusedFunctionDeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},macro\=>true}
|
||||
org.eclipse.cdt.codan.internal.checkers.UnusedStaticFunctionProblem=Warning
|
||||
org.eclipse.cdt.codan.internal.checkers.UnusedStaticFunctionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},macro\=>true}
|
||||
org.eclipse.cdt.codan.internal.checkers.UnusedVariableDeclarationProblem=Warning
|
||||
org.eclipse.cdt.codan.internal.checkers.UnusedVariableDeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},macro\=>true,exceptions\=>("@(\#)","$Id")}
|
||||
org.eclipse.cdt.codan.internal.checkers.VariableResolutionProblem=Error
|
||||
org.eclipse.cdt.codan.internal.checkers.VariableResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true}}
|
||||
useParentScope=false
|
||||
@ -1,163 +0,0 @@
|
||||
eclipse.preferences.version=1
|
||||
org.eclipse.cdt.core.formatter.alignment_for_arguments_in_method_invocation=16
|
||||
org.eclipse.cdt.core.formatter.alignment_for_assignment=16
|
||||
org.eclipse.cdt.core.formatter.alignment_for_base_clause_in_type_declaration=80
|
||||
org.eclipse.cdt.core.formatter.alignment_for_binary_expression=16
|
||||
org.eclipse.cdt.core.formatter.alignment_for_compact_if=16
|
||||
org.eclipse.cdt.core.formatter.alignment_for_conditional_expression=34
|
||||
org.eclipse.cdt.core.formatter.alignment_for_conditional_expression_chain=18
|
||||
org.eclipse.cdt.core.formatter.alignment_for_constructor_initializer_list=0
|
||||
org.eclipse.cdt.core.formatter.alignment_for_declarator_list=16
|
||||
org.eclipse.cdt.core.formatter.alignment_for_enumerator_list=48
|
||||
org.eclipse.cdt.core.formatter.alignment_for_expression_list=0
|
||||
org.eclipse.cdt.core.formatter.alignment_for_expressions_in_array_initializer=16
|
||||
org.eclipse.cdt.core.formatter.alignment_for_member_access=0
|
||||
org.eclipse.cdt.core.formatter.alignment_for_overloaded_left_shift_chain=16
|
||||
org.eclipse.cdt.core.formatter.alignment_for_parameters_in_method_declaration=16
|
||||
org.eclipse.cdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
|
||||
org.eclipse.cdt.core.formatter.brace_position_for_array_initializer=end_of_line
|
||||
org.eclipse.cdt.core.formatter.brace_position_for_block=end_of_line
|
||||
org.eclipse.cdt.core.formatter.brace_position_for_block_in_case=end_of_line
|
||||
org.eclipse.cdt.core.formatter.brace_position_for_method_declaration=end_of_line
|
||||
org.eclipse.cdt.core.formatter.brace_position_for_namespace_declaration=end_of_line
|
||||
org.eclipse.cdt.core.formatter.brace_position_for_switch=end_of_line
|
||||
org.eclipse.cdt.core.formatter.brace_position_for_type_declaration=end_of_line
|
||||
org.eclipse.cdt.core.formatter.comment.min_distance_between_code_and_line_comment=1
|
||||
org.eclipse.cdt.core.formatter.comment.never_indent_line_comments_on_first_column=true
|
||||
org.eclipse.cdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=true
|
||||
org.eclipse.cdt.core.formatter.compact_else_if=true
|
||||
org.eclipse.cdt.core.formatter.continuation_indentation=2
|
||||
org.eclipse.cdt.core.formatter.continuation_indentation_for_array_initializer=2
|
||||
org.eclipse.cdt.core.formatter.format_guardian_clause_on_one_line=false
|
||||
org.eclipse.cdt.core.formatter.indent_access_specifier_compare_to_type_header=false
|
||||
org.eclipse.cdt.core.formatter.indent_access_specifier_extra_spaces=0
|
||||
org.eclipse.cdt.core.formatter.indent_body_declarations_compare_to_access_specifier=true
|
||||
org.eclipse.cdt.core.formatter.indent_body_declarations_compare_to_namespace_header=false
|
||||
org.eclipse.cdt.core.formatter.indent_breaks_compare_to_cases=true
|
||||
org.eclipse.cdt.core.formatter.indent_declaration_compare_to_template_header=false
|
||||
org.eclipse.cdt.core.formatter.indent_empty_lines=false
|
||||
org.eclipse.cdt.core.formatter.indent_statements_compare_to_block=true
|
||||
org.eclipse.cdt.core.formatter.indent_statements_compare_to_body=true
|
||||
org.eclipse.cdt.core.formatter.indent_switchstatements_compare_to_cases=true
|
||||
org.eclipse.cdt.core.formatter.indent_switchstatements_compare_to_switch=false
|
||||
org.eclipse.cdt.core.formatter.indentation.size=4
|
||||
org.eclipse.cdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
|
||||
org.eclipse.cdt.core.formatter.insert_new_line_after_template_declaration=do not insert
|
||||
org.eclipse.cdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
|
||||
org.eclipse.cdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
|
||||
org.eclipse.cdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
|
||||
org.eclipse.cdt.core.formatter.insert_new_line_before_colon_in_constructor_initializer_list=do not insert
|
||||
org.eclipse.cdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
|
||||
org.eclipse.cdt.core.formatter.insert_new_line_before_identifier_in_function_declaration=do not insert
|
||||
org.eclipse.cdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
|
||||
org.eclipse.cdt.core.formatter.insert_new_line_in_empty_block=insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_after_assignment_operator=insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_after_binary_operator=insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_after_closing_angle_bracket_in_template_arguments=insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_after_closing_angle_bracket_in_template_parameters=insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_after_closing_brace_in_block=insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_after_colon_in_base_clause=insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_after_colon_in_case=insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_after_colon_in_conditional=insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_after_comma_in_base_types=insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_after_comma_in_declarator_list=insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_after_comma_in_expression_list=insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_after_comma_in_template_arguments=insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_after_comma_in_template_parameters=insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_after_opening_angle_bracket_in_template_arguments=do not insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_after_opening_angle_bracket_in_template_parameters=do not insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_after_opening_bracket=do not insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_exception_specification=do not insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_after_postfix_operator=do not insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_after_prefix_operator=do not insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_after_question_in_conditional=insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_after_semicolon_in_for=insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_after_unary_operator=do not insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_before_assignment_operator=insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_before_binary_operator=insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_before_closing_angle_bracket_in_template_arguments=do not insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_before_closing_angle_bracket_in_template_parameters=do not insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_before_closing_bracket=do not insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_exception_specification=do not insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_before_colon_in_base_clause=do not insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_before_colon_in_case=do not insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_before_colon_in_conditional=insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_before_colon_in_default=do not insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_before_comma_in_base_types=do not insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_before_comma_in_declarator_list=do not insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_before_comma_in_expression_list=do not insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_before_comma_in_template_arguments=do not insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_before_comma_in_template_parameters=do not insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_before_opening_angle_bracket_in_template_arguments=do not insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_before_opening_angle_bracket_in_template_parameters=do not insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_before_opening_brace_in_block=insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_before_opening_brace_in_namespace_declaration=insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_before_opening_bracket=do not insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_exception_specification=insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_for=insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_if=insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_while=insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_before_postfix_operator=do not insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_before_prefix_operator=do not insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_before_question_in_conditional=insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_before_semicolon=do not insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_before_unary_operator=do not insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_between_empty_brackets=do not insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_between_empty_parens_in_exception_specification=do not insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
|
||||
org.eclipse.cdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
|
||||
org.eclipse.cdt.core.formatter.join_wrapped_lines=true
|
||||
org.eclipse.cdt.core.formatter.keep_else_statement_on_same_line=false
|
||||
org.eclipse.cdt.core.formatter.keep_empty_array_initializer_on_one_line=false
|
||||
org.eclipse.cdt.core.formatter.keep_imple_if_on_one_line=false
|
||||
org.eclipse.cdt.core.formatter.keep_then_statement_on_same_line=false
|
||||
org.eclipse.cdt.core.formatter.lineSplit=130
|
||||
org.eclipse.cdt.core.formatter.number_of_empty_lines_to_preserve=1
|
||||
org.eclipse.cdt.core.formatter.put_empty_statement_on_new_line=true
|
||||
org.eclipse.cdt.core.formatter.tabulation.char=tab
|
||||
org.eclipse.cdt.core.formatter.tabulation.size=3
|
||||
org.eclipse.cdt.core.formatter.use_tabs_only_for_leading_indentations=false
|
||||