Merge remote-tracking branch 'upstream/master'
6
.gitignore
vendored
@ -31,8 +31,6 @@ spine-xna/obj
|
||||
spine-xna/example/bin
|
||||
spine-xna/example/obj
|
||||
|
||||
spine-unity/Assets/Plugins/Spine/spine-csharp/*
|
||||
!spine-unity/Assets/Plugins/Spine/spine-csharp/Place spine-csharp here.txt
|
||||
spine-unity/ProjectSettings
|
||||
spine-unity/Temp
|
||||
spine-unity/Library
|
||||
@ -41,6 +39,8 @@ spine-unity/*.sln
|
||||
*.pidb
|
||||
Assembly-*.csproj
|
||||
Assembly-*.pidb
|
||||
spine-unity4
|
||||
spine-unity3
|
||||
|
||||
spine-corona/spine-lua/
|
||||
!spine-corona/spine-lua/Place spine-lua here.txt
|
||||
@ -48,3 +48,5 @@ spine-corona/spine-lua/
|
||||
spine-love/spine-lua/
|
||||
spine-love/love/
|
||||
!spine-love/spine-lua/Place spine-lua here.txt
|
||||
|
||||
spine-starling
|
||||
|
||||
@ -43,14 +43,19 @@ typedef struct RegionAttachment RegionAttachment;
|
||||
struct RegionAttachment {
|
||||
Attachment super;
|
||||
float x, y, scaleX, scaleY, rotation, width, height;
|
||||
AtlasRegion* region;
|
||||
|
||||
void* texture;
|
||||
float regionOffsetX, regionOffsetY; // Pixels stripped from the bottom left, unrotated.
|
||||
float regionWidth, regionHeight; // Unrotated, stripped size.
|
||||
float regionOriginalWidth, regionOriginalHeight; // Unrotated, unstripped size.
|
||||
|
||||
float offset[8];
|
||||
float vertices[8];
|
||||
float uvs[8];
|
||||
};
|
||||
|
||||
RegionAttachment* RegionAttachment_create (const char* name);
|
||||
|
||||
void RegionAttachment_setUVs (RegionAttachment* self, float u, float v, float u2, float v2, int/*bool*/rotate);
|
||||
void RegionAttachment_updateOffset (RegionAttachment* self);
|
||||
void RegionAttachment_updateVertices (RegionAttachment* self, Slot* slot);
|
||||
|
||||
|
||||
@ -44,6 +44,7 @@ void Animation_dispose (Animation* self) {
|
||||
for (i = 0; i < self->timelineCount; ++i)
|
||||
Timeline_dispose(self->timelines[i]);
|
||||
FREE(self->timelines);
|
||||
FREE(self->name);
|
||||
FREE(self);
|
||||
}
|
||||
|
||||
|
||||
@ -240,8 +240,13 @@ Atlas* Atlas_readAtlas (const char* begin, int length, const char* dir) {
|
||||
|
||||
region->u = region->x / (float)page->width;
|
||||
region->v = region->y / (float)page->height;
|
||||
region->u2 = (region->x + region->width) / (float)page->width;
|
||||
region->v2 = (region->y + region->height) / (float)page->height;
|
||||
if (region->rotate) {
|
||||
region->u2 = (region->x + region->height) / (float)page->width;
|
||||
region->v2 = (region->y + region->width) / (float)page->height;
|
||||
} else {
|
||||
region->u2 = (region->x + region->width) / (float)page->width;
|
||||
region->v2 = (region->y + region->height) / (float)page->height;
|
||||
}
|
||||
|
||||
if (!(count = readTuple(end, tuple))) return abortAtlas(self);
|
||||
if (count == 4) { /* split is optional */
|
||||
|
||||
@ -31,18 +31,24 @@ namespace spine {
|
||||
#endif
|
||||
|
||||
Attachment* _AtlasAttachmentLoader_newAttachment (AttachmentLoader* loader, Skin* skin, AttachmentType type, const char* name) {
|
||||
RegionAttachment* attachment;
|
||||
AtlasRegion* region;
|
||||
AtlasAttachmentLoader* self = SUB_CAST(AtlasAttachmentLoader, loader);
|
||||
switch (type) {
|
||||
case ATTACHMENT_REGION: {
|
||||
region = Atlas_findRegion(self->atlas, name);
|
||||
RegionAttachment* attachment;
|
||||
AtlasRegion* region = Atlas_findRegion(self->atlas, name);
|
||||
if (!region) {
|
||||
_AttachmentLoader_setError(loader, "Region not found: ", name);
|
||||
return 0;
|
||||
}
|
||||
attachment = RegionAttachment_create(name);
|
||||
attachment->region = region;
|
||||
attachment->texture = region->page->texture;
|
||||
RegionAttachment_setUVs(attachment, region->u, region->v, region->u2, region->v2, 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);
|
||||
}
|
||||
default:
|
||||
@ -60,4 +66,4 @@ AtlasAttachmentLoader* AtlasAttachmentLoader_create (Atlas* atlas) {
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
@ -39,49 +39,46 @@ RegionAttachment* RegionAttachment_create (const char* name) {
|
||||
return self;
|
||||
}
|
||||
|
||||
void RegionAttachment_updateOffset (RegionAttachment* self) {
|
||||
float radians;
|
||||
float cosine;
|
||||
float sine;
|
||||
float localXCos;
|
||||
float localXSin;
|
||||
float localYCos;
|
||||
float localYSin;
|
||||
float localX2Cos;
|
||||
float localX2Sin;
|
||||
float localY2Cos;
|
||||
float localY2Sin;
|
||||
|
||||
float localX2 = self->width / 2;
|
||||
float localY2 = self->height / 2;
|
||||
float localX = -localX2;
|
||||
float localY = -localY2;
|
||||
if (self->region->rotate) {
|
||||
localX += self->region->offsetX / self->region->originalWidth * self->height;
|
||||
localY += self->region->offsetY / self->region->originalHeight * self->width;
|
||||
localX2 -= (self->region->originalWidth - self->region->offsetX - self->region->height) / self->region->originalWidth * self->width;
|
||||
localY2 -= (self->region->originalHeight - self->region->offsetY - self->region->width) / self->region->originalHeight * self->height;
|
||||
void RegionAttachment_setUVs (RegionAttachment* self, float u, float v, float u2, float v2, int/*bool*/rotate) {
|
||||
if (rotate) {
|
||||
self->uvs[VERTEX_X2] = u;
|
||||
self->uvs[VERTEX_Y2] = v2;
|
||||
self->uvs[VERTEX_X3] = u;
|
||||
self->uvs[VERTEX_Y3] = v;
|
||||
self->uvs[VERTEX_X4] = u2;
|
||||
self->uvs[VERTEX_Y4] = v;
|
||||
self->uvs[VERTEX_X1] = u2;
|
||||
self->uvs[VERTEX_Y1] = v2;
|
||||
} else {
|
||||
localX += self->region->offsetX / self->region->originalWidth * self->width;
|
||||
localY += self->region->offsetY / self->region->originalHeight * self->height;
|
||||
localX2 -= (self->region->originalWidth - self->region->offsetX - self->region->width) / self->region->originalWidth * self->width;
|
||||
localY2 -= (self->region->originalHeight - self->region->offsetY - self->region->height) / self->region->originalHeight * self->height;
|
||||
self->uvs[VERTEX_X1] = u;
|
||||
self->uvs[VERTEX_Y1] = v2;
|
||||
self->uvs[VERTEX_X2] = u;
|
||||
self->uvs[VERTEX_Y2] = v;
|
||||
self->uvs[VERTEX_X3] = u2;
|
||||
self->uvs[VERTEX_Y3] = v;
|
||||
self->uvs[VERTEX_X4] = u2;
|
||||
self->uvs[VERTEX_Y4] = v2;
|
||||
}
|
||||
localX *= self->scaleX;
|
||||
localY *= self->scaleY;
|
||||
localX2 *= self->scaleX;
|
||||
localY2 *= self->scaleY;
|
||||
radians = (float)(self->rotation * 3.1415926535897932385 / 180);
|
||||
cosine = cosf(radians);
|
||||
sine = sinf(radians);
|
||||
localXCos = localX * cosine + self->x;
|
||||
localXSin = localX * sine;
|
||||
localYCos = localY * cosine + self->y;
|
||||
localYSin = localY * sine;
|
||||
localX2Cos = localX2 * cosine + self->x;
|
||||
localX2Sin = localX2 * sine;
|
||||
localY2Cos = localY2 * cosine + self->y;
|
||||
localY2Sin = localY2 * sine;
|
||||
}
|
||||
|
||||
void RegionAttachment_updateOffset (RegionAttachment* self) {
|
||||
float regionScaleX = self->width / self->regionOriginalWidth * self->scaleX;
|
||||
float regionScaleY = self->height / self->regionOriginalHeight * self->scaleX;
|
||||
float localX = -self->width / 2 * self->scaleX + self->regionOffsetX * regionScaleX;
|
||||
float localY = -self->height / 2 * self->scaleX + self->regionOffsetY * regionScaleY;
|
||||
float localX2 = localX + self->regionWidth * regionScaleX;
|
||||
float localY2 = localY + self->regionHeight * regionScaleY;
|
||||
float radians = (float)(self->rotation * 3.1415926535897932385 / 180);
|
||||
float cosine = cosf(radians);
|
||||
float sine = sinf(radians);
|
||||
float localXCos = localX * cosine + self->x;
|
||||
float localXSin = localX * sine;
|
||||
float localYCos = localY * cosine + self->y;
|
||||
float localYSin = localY * sine;
|
||||
float localX2Cos = localX2 * cosine + self->x;
|
||||
float localX2Sin = localX2 * sine;
|
||||
float localY2Cos = localY2 * cosine + self->y;
|
||||
float localY2Sin = localY2 * sine;
|
||||
self->offset[VERTEX_X1] = localXCos - localYSin;
|
||||
self->offset[VERTEX_Y1] = localYCos + localXSin;
|
||||
self->offset[VERTEX_X2] = localXCos - localY2Sin;
|
||||
@ -107,4 +104,4 @@ void RegionAttachment_updateVertices (RegionAttachment* self, Slot* slot) {
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
@ -83,25 +83,14 @@ void RegionAttachment_updateQuad (RegionAttachment* self, Slot* slot, ccV3F_C4B_
|
||||
quad->br.vertices.x = self->vertices[VERTEX_X4];
|
||||
quad->br.vertices.y = self->vertices[VERTEX_Y4];
|
||||
|
||||
if (self->region->rotate) {
|
||||
quad->tl.texCoords.u = self->region->u;
|
||||
quad->tl.texCoords.v = self->region->v2;
|
||||
quad->tr.texCoords.u = self->region->u;
|
||||
quad->tr.texCoords.v = self->region->v;
|
||||
quad->br.texCoords.u = self->region->u2;
|
||||
quad->br.texCoords.v = self->region->v;
|
||||
quad->bl.texCoords.u = self->region->u2;
|
||||
quad->bl.texCoords.v = self->region->v2;
|
||||
} else {
|
||||
quad->bl.texCoords.u = self->region->u;
|
||||
quad->bl.texCoords.v = self->region->v2;
|
||||
quad->tl.texCoords.u = self->region->u;
|
||||
quad->tl.texCoords.v = self->region->v;
|
||||
quad->tr.texCoords.u = self->region->u2;
|
||||
quad->tr.texCoords.v = self->region->v;
|
||||
quad->br.texCoords.u = self->region->u2;
|
||||
quad->br.texCoords.v = self->region->v2;
|
||||
}
|
||||
quad->bl.texCoords.u = self->uvs[VERTEX_X1];
|
||||
quad->bl.texCoords.v = self->uvs[VERTEX_Y1];
|
||||
quad->tl.texCoords.u = self->uvs[VERTEX_X2];
|
||||
quad->tl.texCoords.v = self->uvs[VERTEX_Y2];
|
||||
quad->tr.texCoords.u = self->uvs[VERTEX_X3];
|
||||
quad->tr.texCoords.v = self->uvs[VERTEX_Y3];
|
||||
quad->br.texCoords.u = self->uvs[VERTEX_X4];
|
||||
quad->br.texCoords.v = self->uvs[VERTEX_Y4];
|
||||
}
|
||||
|
||||
#ifdef __cplusplus
|
||||
@ -205,7 +194,7 @@ void RegionAttachment_updateQuad (RegionAttachment* self, Slot* slot, ccV3F_C4B_
|
||||
}
|
||||
|
||||
- (void) update:(ccTime)deltaTime {
|
||||
Skeleton_update(skeleton, deltaTime);
|
||||
Skeleton_update(skeleton, deltaTime * timeScale);
|
||||
AnimationState_update(state, deltaTime * timeScale);
|
||||
AnimationState_apply(state, skeleton);
|
||||
Skeleton_updateWorldTransform(skeleton);
|
||||
@ -231,7 +220,7 @@ void RegionAttachment_updateQuad (RegionAttachment* self, Slot* slot, ccV3F_C4B_
|
||||
Slot* slot = skeleton->slots[i];
|
||||
if (!slot->attachment || slot->attachment->type != ATTACHMENT_REGION) continue;
|
||||
RegionAttachment* attachment = (RegionAttachment*)slot->attachment;
|
||||
CCTextureAtlas* regionTextureAtlas = (CCTextureAtlas*)attachment->region->page->texture;
|
||||
CCTextureAtlas* regionTextureAtlas = (CCTextureAtlas*)attachment->texture;
|
||||
if (regionTextureAtlas != textureAtlas) {
|
||||
if (textureAtlas) {
|
||||
[textureAtlas drawQuads];
|
||||
|
||||
@ -3,26 +3,26 @@
|
||||
{ "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": "left lower leg", "parent": "left upper leg", "length": 49.89, "x": 56.34, "y": 0.98, "rotation": -16.65 },
|
||||
{ "name": "left foot", "parent": "left lower leg", "length": 46.5, "x": 58.94, "y": -7.61, "rotation": 102.43 },
|
||||
{ "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": "right lower leg", "parent": "right upper leg", "length": 58.52, "x": 42.99, "y": -0.61, "rotation": -14.34 },
|
||||
{ "name": "right foot", "parent": "right lower leg", "length": 45.45, "x": 64.88, "y": 0.04, "rotation": 110.3 },
|
||||
{ "name": "torso", "parent": "hip", "length": 85.82, "x": -6.42, "y": 1.97, "rotation": 93.92 },
|
||||
{ "name": "neck", "parent": "torso", "length": 18.38, "x": 81.67, "y": -6.34, "rotation": -1.51 },
|
||||
{ "name": "head", "parent": "neck", "length": 68.28, "x": 20.93, "y": 11.59, "rotation": -13.92 },
|
||||
{ "name": "right shoulder", "parent": "torso", "length": 37.24, "x": 76.02, "y": 18.14, "rotation": 133.88 },
|
||||
{ "name": "right arm", "parent": "right shoulder", "length": 36.74, "x": 37.6, "y": 0.31, "rotation": 36.32 },
|
||||
{ "name": "right hand", "parent": "right arm", "length": 15.32, "x": 36.9, "y": 0.34, "rotation": 2.35 },
|
||||
{ "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": "pelvis", "parent": "hip", "x": 1.41, "y": -6.57 }
|
||||
{ "name": "right hand", "parent": "right arm", "length": 15.32, "x": 36.9, "y": 0.34, "rotation": 2.35 }
|
||||
],
|
||||
"slots": [
|
||||
{ "name": "left shoulder", "bone": "left shoulder", "attachment": "left shoulder" },
|
||||
{ "name": "left arm", "bone": "left arm", "attachment": "left arm" },
|
||||
{ "name": "left hand item", "bone": "left hand", "attachment": "spear" },
|
||||
{ "name": "left hand item", "bone": "left hand", "attachment": "dagger" },
|
||||
{ "name": "left hand", "bone": "left hand", "attachment": "left hand" },
|
||||
{ "name": "left foot", "bone": "left foot", "attachment": "left foot" },
|
||||
{ "name": "left lower leg", "bone": "left lower leg", "attachment": "left lower leg" },
|
||||
@ -45,11 +45,11 @@
|
||||
"skins": {
|
||||
"default": {
|
||||
"left hand item": {
|
||||
"dagger": { "x": 7.88, "y": -23.45, "rotation": 10.47, "width": 26, "height": 108 },
|
||||
"dagger": { "x": -35.5, "y": 3.85, "rotation": 10.47, "width": 156, "height": 238 },
|
||||
"spear": { "x": -4.55, "y": 39.2, "rotation": 13.04, "width": 22, "height": 368 }
|
||||
},
|
||||
"right hand item": {
|
||||
"dagger": { "x": 6.51, "y": -24.15, "rotation": -8.06, "width": 26, "height": 108 }
|
||||
"dagger": { "x": -21.57, "y": 15.8, "rotation": -8.06, "width": 156, "height": 238 }
|
||||
}
|
||||
},
|
||||
"goblin": {
|
||||
|
||||
@ -4,282 +4,282 @@ format: RGBA8888
|
||||
filter: Linear,Linear
|
||||
repeat: none
|
||||
spear
|
||||
rotate: false
|
||||
xy: 2, 142
|
||||
rotate: true
|
||||
xy: 2, 104
|
||||
size: 22, 368
|
||||
orig: 22, 368
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblingirl/head
|
||||
rotate: false
|
||||
xy: 26, 429
|
||||
size: 103, 81
|
||||
xy: 2, 23
|
||||
size: 103, 79
|
||||
orig: 103, 81
|
||||
offset: 0, 0
|
||||
offset: 0, 2
|
||||
index: -1
|
||||
goblin/head
|
||||
rotate: false
|
||||
xy: 26, 361
|
||||
size: 103, 66
|
||||
xy: 107, 38
|
||||
size: 103, 64
|
||||
orig: 103, 66
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/torso
|
||||
rotate: false
|
||||
xy: 131, 414
|
||||
rotate: true
|
||||
xy: 212, 34
|
||||
size: 68, 96
|
||||
orig: 68, 96
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblingirl/torso
|
||||
goblin/right-upper-leg
|
||||
rotate: true
|
||||
xy: 107, 2
|
||||
size: 34, 63
|
||||
orig: 34, 63
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/left-lower-leg
|
||||
rotate: true
|
||||
xy: 172, 2
|
||||
size: 30, 70
|
||||
orig: 33, 70
|
||||
offset: 2, 0
|
||||
index: -1
|
||||
goblingirl/left-lower-leg
|
||||
rotate: true
|
||||
xy: 244, 2
|
||||
size: 30, 70
|
||||
orig: 33, 70
|
||||
offset: 2, 0
|
||||
index: -1
|
||||
goblin/undie-straps
|
||||
rotate: false
|
||||
xy: 26, 263
|
||||
size: 68, 96
|
||||
orig: 68, 96
|
||||
xy: 2, 2
|
||||
size: 55, 19
|
||||
orig: 55, 19
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
dagger
|
||||
rotate: false
|
||||
xy: 26, 153
|
||||
rotate: true
|
||||
xy: 372, 100
|
||||
size: 26, 108
|
||||
orig: 26, 108
|
||||
orig: 156, 238
|
||||
offset: 100, 30
|
||||
index: -1
|
||||
goblingirl/torso
|
||||
rotate: true
|
||||
xy: 482, 60
|
||||
size: 66, 96
|
||||
orig: 68, 96
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/right-lower-leg
|
||||
rotate: false
|
||||
xy: 201, 434
|
||||
size: 36, 76
|
||||
rotate: true
|
||||
xy: 580, 91
|
||||
size: 35, 76
|
||||
orig: 36, 76
|
||||
offset: 0, 0
|
||||
offset: 1, 0
|
||||
index: -1
|
||||
goblingirl/right-lower-leg
|
||||
rotate: false
|
||||
xy: 54, 185
|
||||
size: 36, 76
|
||||
rotate: true
|
||||
xy: 658, 91
|
||||
size: 35, 76
|
||||
orig: 36, 76
|
||||
offset: 0, 0
|
||||
offset: 1, 0
|
||||
index: -1
|
||||
goblin/left-upper-leg
|
||||
rotate: false
|
||||
xy: 96, 286
|
||||
rotate: true
|
||||
xy: 736, 93
|
||||
size: 33, 73
|
||||
orig: 33, 73
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/pelvis
|
||||
rotate: false
|
||||
xy: 131, 369
|
||||
rotate: true
|
||||
xy: 310, 40
|
||||
size: 62, 43
|
||||
orig: 62, 43
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblingirl/pelvis
|
||||
rotate: false
|
||||
xy: 131, 324
|
||||
size: 62, 43
|
||||
orig: 62, 43
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/right-foot
|
||||
rotate: false
|
||||
xy: 131, 289
|
||||
size: 63, 33
|
||||
orig: 63, 33
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/left-lower-leg
|
||||
rotate: false
|
||||
xy: 2, 70
|
||||
size: 33, 70
|
||||
orig: 33, 70
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/right-upper-leg
|
||||
rotate: false
|
||||
xy: 2, 5
|
||||
size: 34, 63
|
||||
orig: 34, 63
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblingirl/left-lower-leg
|
||||
rotate: false
|
||||
xy: 195, 342
|
||||
size: 33, 70
|
||||
orig: 33, 70
|
||||
goblin/left-hand
|
||||
rotate: true
|
||||
xy: 316, 2
|
||||
size: 36, 41
|
||||
orig: 36, 41
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblingirl/left-upper-leg
|
||||
rotate: false
|
||||
xy: 37, 81
|
||||
rotate: true
|
||||
xy: 811, 93
|
||||
size: 33, 70
|
||||
orig: 33, 70
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblingirl/right-upper-leg
|
||||
rotate: false
|
||||
xy: 38, 16
|
||||
size: 34, 63
|
||||
orig: 34, 63
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/eyes-closed
|
||||
rotate: false
|
||||
xy: 38, 2
|
||||
size: 34, 12
|
||||
orig: 34, 12
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/undies
|
||||
rotate: false
|
||||
xy: 54, 154
|
||||
size: 36, 29
|
||||
orig: 36, 29
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/right-arm
|
||||
rotate: false
|
||||
xy: 72, 102
|
||||
size: 23, 50
|
||||
orig: 23, 50
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/left-foot
|
||||
rotate: false
|
||||
xy: 131, 256
|
||||
xy: 883, 95
|
||||
size: 65, 31
|
||||
orig: 65, 31
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblingirl/right-arm
|
||||
rotate: false
|
||||
xy: 196, 290
|
||||
size: 28, 50
|
||||
orig: 28, 50
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblingirl/left-shoulder
|
||||
rotate: false
|
||||
xy: 226, 294
|
||||
size: 28, 46
|
||||
orig: 28, 46
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/left-arm
|
||||
rotate: false
|
||||
xy: 198, 253
|
||||
size: 37, 35
|
||||
orig: 37, 35
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblingirl/left-foot
|
||||
rotate: false
|
||||
xy: 92, 223
|
||||
xy: 950, 95
|
||||
size: 65, 31
|
||||
orig: 65, 31
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblingirl/right-foot
|
||||
goblin/right-foot
|
||||
rotate: false
|
||||
xy: 92, 188
|
||||
xy: 580, 56
|
||||
size: 63, 33
|
||||
orig: 63, 33
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/undie-straps
|
||||
goblingirl/right-foot
|
||||
rotate: false
|
||||
xy: 92, 167
|
||||
size: 55, 19
|
||||
orig: 55, 19
|
||||
xy: 645, 56
|
||||
size: 63, 33
|
||||
orig: 63, 33
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblingirl/left-arm
|
||||
goblingirl/pelvis
|
||||
rotate: false
|
||||
xy: 159, 219
|
||||
size: 37, 35
|
||||
orig: 37, 35
|
||||
xy: 355, 55
|
||||
size: 59, 43
|
||||
orig: 62, 43
|
||||
offset: 1, 0
|
||||
index: -1
|
||||
goblingirl/right-upper-leg
|
||||
rotate: true
|
||||
xy: 416, 64
|
||||
size: 34, 63
|
||||
orig: 34, 63
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/right-shoulder
|
||||
rotate: false
|
||||
xy: 97, 120
|
||||
size: 39, 45
|
||||
xy: 359, 11
|
||||
size: 39, 42
|
||||
orig: 39, 45
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblingirl/right-shoulder
|
||||
rotate: false
|
||||
xy: 198, 206
|
||||
size: 39, 45
|
||||
orig: 39, 45
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/left-hand
|
||||
rotate: false
|
||||
xy: 157, 176
|
||||
size: 36, 41
|
||||
orig: 36, 41
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/neck
|
||||
rotate: false
|
||||
xy: 195, 163
|
||||
size: 36, 41
|
||||
orig: 36, 41
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblingirl/undie-straps
|
||||
rotate: false
|
||||
xy: 97, 99
|
||||
xy: 416, 43
|
||||
size: 55, 19
|
||||
orig: 55, 19
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblingirl/neck
|
||||
goblingirl/right-shoulder
|
||||
rotate: true
|
||||
xy: 400, 2
|
||||
size: 39, 42
|
||||
orig: 39, 45
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/left-arm
|
||||
rotate: true
|
||||
xy: 444, 4
|
||||
size: 37, 35
|
||||
orig: 37, 35
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/neck
|
||||
rotate: false
|
||||
xy: 138, 120
|
||||
size: 35, 41
|
||||
orig: 35, 41
|
||||
xy: 481, 17
|
||||
size: 36, 41
|
||||
orig: 36, 41
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblingirl/left-hand
|
||||
rotate: false
|
||||
xy: 175, 121
|
||||
xy: 519, 18
|
||||
size: 35, 40
|
||||
orig: 35, 40
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/left-shoulder
|
||||
goblingirl/right-arm
|
||||
rotate: false
|
||||
xy: 212, 117
|
||||
xy: 556, 8
|
||||
size: 22, 50
|
||||
orig: 28, 50
|
||||
offset: 3, 0
|
||||
index: -1
|
||||
goblingirl/neck
|
||||
rotate: false
|
||||
xy: 580, 13
|
||||
size: 33, 41
|
||||
orig: 35, 41
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/left-shoulder
|
||||
rotate: true
|
||||
xy: 615, 25
|
||||
size: 29, 44
|
||||
orig: 29, 44
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblingirl/eyes-closed
|
||||
goblingirl/left-shoulder
|
||||
rotate: true
|
||||
xy: 661, 26
|
||||
size: 28, 45
|
||||
orig: 28, 46
|
||||
offset: 0, 1
|
||||
index: -1
|
||||
goblingirl/left-arm
|
||||
rotate: false
|
||||
xy: 154, 97
|
||||
size: 37, 21
|
||||
orig: 37, 21
|
||||
xy: 710, 54
|
||||
size: 37, 35
|
||||
orig: 37, 35
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/right-arm
|
||||
rotate: false
|
||||
xy: 708, 2
|
||||
size: 23, 50
|
||||
orig: 23, 50
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/right-hand
|
||||
rotate: false
|
||||
xy: 193, 78
|
||||
xy: 749, 54
|
||||
size: 36, 37
|
||||
orig: 36, 37
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblingirl/right-hand
|
||||
rotate: false
|
||||
xy: 74, 39
|
||||
size: 36, 37
|
||||
xy: 733, 15
|
||||
size: 35, 37
|
||||
orig: 36, 37
|
||||
offset: 0, 0
|
||||
offset: 1, 0
|
||||
index: -1
|
||||
goblingirl/undies
|
||||
goblin/undies
|
||||
rotate: false
|
||||
xy: 74, 8
|
||||
xy: 787, 62
|
||||
size: 36, 29
|
||||
orig: 36, 29
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblingirl/undies
|
||||
rotate: false
|
||||
xy: 825, 62
|
||||
size: 36, 29
|
||||
orig: 36, 29
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblingirl/eyes-closed
|
||||
rotate: false
|
||||
xy: 59, 6
|
||||
size: 37, 15
|
||||
orig: 37, 21
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/eyes-closed
|
||||
rotate: true
|
||||
xy: 770, 18
|
||||
size: 34, 12
|
||||
orig: 34, 12
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
|
||||
|
Before Width: | Height: | Size: 145 KiB After Width: | Height: | Size: 144 KiB |
@ -4,282 +4,282 @@ format: RGBA8888
|
||||
filter: Linear,Linear
|
||||
repeat: none
|
||||
spear
|
||||
rotate: false
|
||||
xy: 2, 142
|
||||
rotate: true
|
||||
xy: 2, 104
|
||||
size: 22, 368
|
||||
orig: 22, 368
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblingirl/head
|
||||
rotate: false
|
||||
xy: 26, 429
|
||||
size: 103, 81
|
||||
xy: 2, 23
|
||||
size: 103, 79
|
||||
orig: 103, 81
|
||||
offset: 0, 0
|
||||
offset: 0, 2
|
||||
index: -1
|
||||
goblin/head
|
||||
rotate: false
|
||||
xy: 26, 361
|
||||
size: 103, 66
|
||||
xy: 107, 38
|
||||
size: 103, 64
|
||||
orig: 103, 66
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/torso
|
||||
rotate: false
|
||||
xy: 131, 414
|
||||
rotate: true
|
||||
xy: 212, 34
|
||||
size: 68, 96
|
||||
orig: 68, 96
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblingirl/torso
|
||||
goblin/right-upper-leg
|
||||
rotate: true
|
||||
xy: 107, 2
|
||||
size: 34, 63
|
||||
orig: 34, 63
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/left-lower-leg
|
||||
rotate: true
|
||||
xy: 172, 2
|
||||
size: 30, 70
|
||||
orig: 33, 70
|
||||
offset: 2, 0
|
||||
index: -1
|
||||
goblingirl/left-lower-leg
|
||||
rotate: true
|
||||
xy: 244, 2
|
||||
size: 30, 70
|
||||
orig: 33, 70
|
||||
offset: 2, 0
|
||||
index: -1
|
||||
goblin/undie-straps
|
||||
rotate: false
|
||||
xy: 26, 263
|
||||
size: 68, 96
|
||||
orig: 68, 96
|
||||
xy: 2, 2
|
||||
size: 55, 19
|
||||
orig: 55, 19
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
dagger
|
||||
rotate: false
|
||||
xy: 26, 153
|
||||
rotate: true
|
||||
xy: 372, 100
|
||||
size: 26, 108
|
||||
orig: 26, 108
|
||||
orig: 156, 238
|
||||
offset: 100, 30
|
||||
index: -1
|
||||
goblingirl/torso
|
||||
rotate: true
|
||||
xy: 482, 60
|
||||
size: 66, 96
|
||||
orig: 68, 96
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/right-lower-leg
|
||||
rotate: false
|
||||
xy: 201, 434
|
||||
size: 36, 76
|
||||
rotate: true
|
||||
xy: 580, 91
|
||||
size: 35, 76
|
||||
orig: 36, 76
|
||||
offset: 0, 0
|
||||
offset: 1, 0
|
||||
index: -1
|
||||
goblingirl/right-lower-leg
|
||||
rotate: false
|
||||
xy: 54, 185
|
||||
size: 36, 76
|
||||
rotate: true
|
||||
xy: 658, 91
|
||||
size: 35, 76
|
||||
orig: 36, 76
|
||||
offset: 0, 0
|
||||
offset: 1, 0
|
||||
index: -1
|
||||
goblin/left-upper-leg
|
||||
rotate: false
|
||||
xy: 96, 286
|
||||
rotate: true
|
||||
xy: 736, 93
|
||||
size: 33, 73
|
||||
orig: 33, 73
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/pelvis
|
||||
rotate: false
|
||||
xy: 131, 369
|
||||
rotate: true
|
||||
xy: 310, 40
|
||||
size: 62, 43
|
||||
orig: 62, 43
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblingirl/pelvis
|
||||
rotate: false
|
||||
xy: 131, 324
|
||||
size: 62, 43
|
||||
orig: 62, 43
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/right-foot
|
||||
rotate: false
|
||||
xy: 131, 289
|
||||
size: 63, 33
|
||||
orig: 63, 33
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/left-lower-leg
|
||||
rotate: false
|
||||
xy: 2, 70
|
||||
size: 33, 70
|
||||
orig: 33, 70
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/right-upper-leg
|
||||
rotate: false
|
||||
xy: 2, 5
|
||||
size: 34, 63
|
||||
orig: 34, 63
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblingirl/left-lower-leg
|
||||
rotate: false
|
||||
xy: 195, 342
|
||||
size: 33, 70
|
||||
orig: 33, 70
|
||||
goblin/left-hand
|
||||
rotate: true
|
||||
xy: 316, 2
|
||||
size: 36, 41
|
||||
orig: 36, 41
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblingirl/left-upper-leg
|
||||
rotate: false
|
||||
xy: 37, 81
|
||||
rotate: true
|
||||
xy: 811, 93
|
||||
size: 33, 70
|
||||
orig: 33, 70
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblingirl/right-upper-leg
|
||||
rotate: false
|
||||
xy: 38, 16
|
||||
size: 34, 63
|
||||
orig: 34, 63
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/eyes-closed
|
||||
rotate: false
|
||||
xy: 38, 2
|
||||
size: 34, 12
|
||||
orig: 34, 12
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/undies
|
||||
rotate: false
|
||||
xy: 54, 154
|
||||
size: 36, 29
|
||||
orig: 36, 29
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/right-arm
|
||||
rotate: false
|
||||
xy: 72, 102
|
||||
size: 23, 50
|
||||
orig: 23, 50
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/left-foot
|
||||
rotate: false
|
||||
xy: 131, 256
|
||||
xy: 883, 95
|
||||
size: 65, 31
|
||||
orig: 65, 31
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblingirl/right-arm
|
||||
rotate: false
|
||||
xy: 196, 290
|
||||
size: 28, 50
|
||||
orig: 28, 50
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblingirl/left-shoulder
|
||||
rotate: false
|
||||
xy: 226, 294
|
||||
size: 28, 46
|
||||
orig: 28, 46
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/left-arm
|
||||
rotate: false
|
||||
xy: 198, 253
|
||||
size: 37, 35
|
||||
orig: 37, 35
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblingirl/left-foot
|
||||
rotate: false
|
||||
xy: 92, 223
|
||||
xy: 950, 95
|
||||
size: 65, 31
|
||||
orig: 65, 31
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblingirl/right-foot
|
||||
goblin/right-foot
|
||||
rotate: false
|
||||
xy: 92, 188
|
||||
xy: 580, 56
|
||||
size: 63, 33
|
||||
orig: 63, 33
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/undie-straps
|
||||
goblingirl/right-foot
|
||||
rotate: false
|
||||
xy: 92, 167
|
||||
size: 55, 19
|
||||
orig: 55, 19
|
||||
xy: 645, 56
|
||||
size: 63, 33
|
||||
orig: 63, 33
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblingirl/left-arm
|
||||
goblingirl/pelvis
|
||||
rotate: false
|
||||
xy: 159, 219
|
||||
size: 37, 35
|
||||
orig: 37, 35
|
||||
xy: 355, 55
|
||||
size: 59, 43
|
||||
orig: 62, 43
|
||||
offset: 1, 0
|
||||
index: -1
|
||||
goblingirl/right-upper-leg
|
||||
rotate: true
|
||||
xy: 416, 64
|
||||
size: 34, 63
|
||||
orig: 34, 63
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/right-shoulder
|
||||
rotate: false
|
||||
xy: 97, 120
|
||||
size: 39, 45
|
||||
xy: 359, 11
|
||||
size: 39, 42
|
||||
orig: 39, 45
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblingirl/right-shoulder
|
||||
rotate: false
|
||||
xy: 198, 206
|
||||
size: 39, 45
|
||||
orig: 39, 45
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/left-hand
|
||||
rotate: false
|
||||
xy: 157, 176
|
||||
size: 36, 41
|
||||
orig: 36, 41
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/neck
|
||||
rotate: false
|
||||
xy: 195, 163
|
||||
size: 36, 41
|
||||
orig: 36, 41
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblingirl/undie-straps
|
||||
rotate: false
|
||||
xy: 97, 99
|
||||
xy: 416, 43
|
||||
size: 55, 19
|
||||
orig: 55, 19
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblingirl/neck
|
||||
goblingirl/right-shoulder
|
||||
rotate: true
|
||||
xy: 400, 2
|
||||
size: 39, 42
|
||||
orig: 39, 45
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/left-arm
|
||||
rotate: true
|
||||
xy: 444, 4
|
||||
size: 37, 35
|
||||
orig: 37, 35
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/neck
|
||||
rotate: false
|
||||
xy: 138, 120
|
||||
size: 35, 41
|
||||
orig: 35, 41
|
||||
xy: 481, 17
|
||||
size: 36, 41
|
||||
orig: 36, 41
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblingirl/left-hand
|
||||
rotate: false
|
||||
xy: 175, 121
|
||||
xy: 519, 18
|
||||
size: 35, 40
|
||||
orig: 35, 40
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/left-shoulder
|
||||
goblingirl/right-arm
|
||||
rotate: false
|
||||
xy: 212, 117
|
||||
xy: 556, 8
|
||||
size: 22, 50
|
||||
orig: 28, 50
|
||||
offset: 3, 0
|
||||
index: -1
|
||||
goblingirl/neck
|
||||
rotate: false
|
||||
xy: 580, 13
|
||||
size: 33, 41
|
||||
orig: 35, 41
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/left-shoulder
|
||||
rotate: true
|
||||
xy: 615, 25
|
||||
size: 29, 44
|
||||
orig: 29, 44
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblingirl/eyes-closed
|
||||
goblingirl/left-shoulder
|
||||
rotate: true
|
||||
xy: 661, 26
|
||||
size: 28, 45
|
||||
orig: 28, 46
|
||||
offset: 0, 1
|
||||
index: -1
|
||||
goblingirl/left-arm
|
||||
rotate: false
|
||||
xy: 154, 97
|
||||
size: 37, 21
|
||||
orig: 37, 21
|
||||
xy: 710, 54
|
||||
size: 37, 35
|
||||
orig: 37, 35
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/right-arm
|
||||
rotate: false
|
||||
xy: 708, 2
|
||||
size: 23, 50
|
||||
orig: 23, 50
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/right-hand
|
||||
rotate: false
|
||||
xy: 193, 78
|
||||
xy: 749, 54
|
||||
size: 36, 37
|
||||
orig: 36, 37
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblingirl/right-hand
|
||||
rotate: false
|
||||
xy: 74, 39
|
||||
size: 36, 37
|
||||
xy: 733, 15
|
||||
size: 35, 37
|
||||
orig: 36, 37
|
||||
offset: 0, 0
|
||||
offset: 1, 0
|
||||
index: -1
|
||||
goblingirl/undies
|
||||
goblin/undies
|
||||
rotate: false
|
||||
xy: 74, 8
|
||||
xy: 787, 62
|
||||
size: 36, 29
|
||||
orig: 36, 29
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblingirl/undies
|
||||
rotate: false
|
||||
xy: 825, 62
|
||||
size: 36, 29
|
||||
orig: 36, 29
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblingirl/eyes-closed
|
||||
rotate: false
|
||||
xy: 59, 6
|
||||
size: 37, 15
|
||||
orig: 37, 21
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/eyes-closed
|
||||
rotate: true
|
||||
xy: 770, 18
|
||||
size: 34, 12
|
||||
orig: 34, 12
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
|
||||
|
Before Width: | Height: | Size: 145 KiB After Width: | Height: | Size: 144 KiB |
@ -4,282 +4,282 @@ format: RGBA8888
|
||||
filter: Linear,Linear
|
||||
repeat: none
|
||||
spear
|
||||
rotate: false
|
||||
xy: 2, 142
|
||||
rotate: true
|
||||
xy: 2, 104
|
||||
size: 22, 368
|
||||
orig: 22, 368
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblingirl/head
|
||||
rotate: false
|
||||
xy: 26, 429
|
||||
size: 103, 81
|
||||
xy: 2, 23
|
||||
size: 103, 79
|
||||
orig: 103, 81
|
||||
offset: 0, 0
|
||||
offset: 0, 2
|
||||
index: -1
|
||||
goblin/head
|
||||
rotate: false
|
||||
xy: 26, 361
|
||||
size: 103, 66
|
||||
xy: 107, 38
|
||||
size: 103, 64
|
||||
orig: 103, 66
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/torso
|
||||
rotate: false
|
||||
xy: 131, 414
|
||||
rotate: true
|
||||
xy: 212, 34
|
||||
size: 68, 96
|
||||
orig: 68, 96
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblingirl/torso
|
||||
goblin/right-upper-leg
|
||||
rotate: true
|
||||
xy: 107, 2
|
||||
size: 34, 63
|
||||
orig: 34, 63
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/left-lower-leg
|
||||
rotate: true
|
||||
xy: 172, 2
|
||||
size: 30, 70
|
||||
orig: 33, 70
|
||||
offset: 2, 0
|
||||
index: -1
|
||||
goblingirl/left-lower-leg
|
||||
rotate: true
|
||||
xy: 244, 2
|
||||
size: 30, 70
|
||||
orig: 33, 70
|
||||
offset: 2, 0
|
||||
index: -1
|
||||
goblin/undie-straps
|
||||
rotate: false
|
||||
xy: 26, 263
|
||||
size: 68, 96
|
||||
orig: 68, 96
|
||||
xy: 2, 2
|
||||
size: 55, 19
|
||||
orig: 55, 19
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
dagger
|
||||
rotate: false
|
||||
xy: 26, 153
|
||||
rotate: true
|
||||
xy: 372, 100
|
||||
size: 26, 108
|
||||
orig: 26, 108
|
||||
orig: 156, 238
|
||||
offset: 100, 30
|
||||
index: -1
|
||||
goblingirl/torso
|
||||
rotate: true
|
||||
xy: 482, 60
|
||||
size: 66, 96
|
||||
orig: 68, 96
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/right-lower-leg
|
||||
rotate: false
|
||||
xy: 201, 434
|
||||
size: 36, 76
|
||||
rotate: true
|
||||
xy: 580, 91
|
||||
size: 35, 76
|
||||
orig: 36, 76
|
||||
offset: 0, 0
|
||||
offset: 1, 0
|
||||
index: -1
|
||||
goblingirl/right-lower-leg
|
||||
rotate: false
|
||||
xy: 54, 185
|
||||
size: 36, 76
|
||||
rotate: true
|
||||
xy: 658, 91
|
||||
size: 35, 76
|
||||
orig: 36, 76
|
||||
offset: 0, 0
|
||||
offset: 1, 0
|
||||
index: -1
|
||||
goblin/left-upper-leg
|
||||
rotate: false
|
||||
xy: 96, 286
|
||||
rotate: true
|
||||
xy: 736, 93
|
||||
size: 33, 73
|
||||
orig: 33, 73
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/pelvis
|
||||
rotate: false
|
||||
xy: 131, 369
|
||||
rotate: true
|
||||
xy: 310, 40
|
||||
size: 62, 43
|
||||
orig: 62, 43
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblingirl/pelvis
|
||||
rotate: false
|
||||
xy: 131, 324
|
||||
size: 62, 43
|
||||
orig: 62, 43
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/right-foot
|
||||
rotate: false
|
||||
xy: 131, 289
|
||||
size: 63, 33
|
||||
orig: 63, 33
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/left-lower-leg
|
||||
rotate: false
|
||||
xy: 2, 70
|
||||
size: 33, 70
|
||||
orig: 33, 70
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/right-upper-leg
|
||||
rotate: false
|
||||
xy: 2, 5
|
||||
size: 34, 63
|
||||
orig: 34, 63
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblingirl/left-lower-leg
|
||||
rotate: false
|
||||
xy: 195, 342
|
||||
size: 33, 70
|
||||
orig: 33, 70
|
||||
goblin/left-hand
|
||||
rotate: true
|
||||
xy: 316, 2
|
||||
size: 36, 41
|
||||
orig: 36, 41
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblingirl/left-upper-leg
|
||||
rotate: false
|
||||
xy: 37, 81
|
||||
rotate: true
|
||||
xy: 811, 93
|
||||
size: 33, 70
|
||||
orig: 33, 70
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblingirl/right-upper-leg
|
||||
rotate: false
|
||||
xy: 38, 16
|
||||
size: 34, 63
|
||||
orig: 34, 63
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/eyes-closed
|
||||
rotate: false
|
||||
xy: 38, 2
|
||||
size: 34, 12
|
||||
orig: 34, 12
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/undies
|
||||
rotate: false
|
||||
xy: 54, 154
|
||||
size: 36, 29
|
||||
orig: 36, 29
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/right-arm
|
||||
rotate: false
|
||||
xy: 72, 102
|
||||
size: 23, 50
|
||||
orig: 23, 50
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/left-foot
|
||||
rotate: false
|
||||
xy: 131, 256
|
||||
xy: 883, 95
|
||||
size: 65, 31
|
||||
orig: 65, 31
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblingirl/right-arm
|
||||
rotate: false
|
||||
xy: 196, 290
|
||||
size: 28, 50
|
||||
orig: 28, 50
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblingirl/left-shoulder
|
||||
rotate: false
|
||||
xy: 226, 294
|
||||
size: 28, 46
|
||||
orig: 28, 46
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/left-arm
|
||||
rotate: false
|
||||
xy: 198, 253
|
||||
size: 37, 35
|
||||
orig: 37, 35
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblingirl/left-foot
|
||||
rotate: false
|
||||
xy: 92, 223
|
||||
xy: 950, 95
|
||||
size: 65, 31
|
||||
orig: 65, 31
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblingirl/right-foot
|
||||
goblin/right-foot
|
||||
rotate: false
|
||||
xy: 92, 188
|
||||
xy: 580, 56
|
||||
size: 63, 33
|
||||
orig: 63, 33
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/undie-straps
|
||||
goblingirl/right-foot
|
||||
rotate: false
|
||||
xy: 92, 167
|
||||
size: 55, 19
|
||||
orig: 55, 19
|
||||
xy: 645, 56
|
||||
size: 63, 33
|
||||
orig: 63, 33
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblingirl/left-arm
|
||||
goblingirl/pelvis
|
||||
rotate: false
|
||||
xy: 159, 219
|
||||
size: 37, 35
|
||||
orig: 37, 35
|
||||
xy: 355, 55
|
||||
size: 59, 43
|
||||
orig: 62, 43
|
||||
offset: 1, 0
|
||||
index: -1
|
||||
goblingirl/right-upper-leg
|
||||
rotate: true
|
||||
xy: 416, 64
|
||||
size: 34, 63
|
||||
orig: 34, 63
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/right-shoulder
|
||||
rotate: false
|
||||
xy: 97, 120
|
||||
size: 39, 45
|
||||
xy: 359, 11
|
||||
size: 39, 42
|
||||
orig: 39, 45
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblingirl/right-shoulder
|
||||
rotate: false
|
||||
xy: 198, 206
|
||||
size: 39, 45
|
||||
orig: 39, 45
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/left-hand
|
||||
rotate: false
|
||||
xy: 157, 176
|
||||
size: 36, 41
|
||||
orig: 36, 41
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/neck
|
||||
rotate: false
|
||||
xy: 195, 163
|
||||
size: 36, 41
|
||||
orig: 36, 41
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblingirl/undie-straps
|
||||
rotate: false
|
||||
xy: 97, 99
|
||||
xy: 416, 43
|
||||
size: 55, 19
|
||||
orig: 55, 19
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblingirl/neck
|
||||
goblingirl/right-shoulder
|
||||
rotate: true
|
||||
xy: 400, 2
|
||||
size: 39, 42
|
||||
orig: 39, 45
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/left-arm
|
||||
rotate: true
|
||||
xy: 444, 4
|
||||
size: 37, 35
|
||||
orig: 37, 35
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/neck
|
||||
rotate: false
|
||||
xy: 138, 120
|
||||
size: 35, 41
|
||||
orig: 35, 41
|
||||
xy: 481, 17
|
||||
size: 36, 41
|
||||
orig: 36, 41
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblingirl/left-hand
|
||||
rotate: false
|
||||
xy: 175, 121
|
||||
xy: 519, 18
|
||||
size: 35, 40
|
||||
orig: 35, 40
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/left-shoulder
|
||||
goblingirl/right-arm
|
||||
rotate: false
|
||||
xy: 212, 117
|
||||
xy: 556, 8
|
||||
size: 22, 50
|
||||
orig: 28, 50
|
||||
offset: 3, 0
|
||||
index: -1
|
||||
goblingirl/neck
|
||||
rotate: false
|
||||
xy: 580, 13
|
||||
size: 33, 41
|
||||
orig: 35, 41
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/left-shoulder
|
||||
rotate: true
|
||||
xy: 615, 25
|
||||
size: 29, 44
|
||||
orig: 29, 44
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblingirl/eyes-closed
|
||||
goblingirl/left-shoulder
|
||||
rotate: true
|
||||
xy: 661, 26
|
||||
size: 28, 45
|
||||
orig: 28, 46
|
||||
offset: 0, 1
|
||||
index: -1
|
||||
goblingirl/left-arm
|
||||
rotate: false
|
||||
xy: 154, 97
|
||||
size: 37, 21
|
||||
orig: 37, 21
|
||||
xy: 710, 54
|
||||
size: 37, 35
|
||||
orig: 37, 35
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/right-arm
|
||||
rotate: false
|
||||
xy: 708, 2
|
||||
size: 23, 50
|
||||
orig: 23, 50
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/right-hand
|
||||
rotate: false
|
||||
xy: 193, 78
|
||||
xy: 749, 54
|
||||
size: 36, 37
|
||||
orig: 36, 37
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblingirl/right-hand
|
||||
rotate: false
|
||||
xy: 74, 39
|
||||
size: 36, 37
|
||||
xy: 733, 15
|
||||
size: 35, 37
|
||||
orig: 36, 37
|
||||
offset: 0, 0
|
||||
offset: 1, 0
|
||||
index: -1
|
||||
goblingirl/undies
|
||||
goblin/undies
|
||||
rotate: false
|
||||
xy: 74, 8
|
||||
xy: 787, 62
|
||||
size: 36, 29
|
||||
orig: 36, 29
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblingirl/undies
|
||||
rotate: false
|
||||
xy: 825, 62
|
||||
size: 36, 29
|
||||
orig: 36, 29
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblingirl/eyes-closed
|
||||
rotate: false
|
||||
xy: 59, 6
|
||||
size: 37, 15
|
||||
orig: 37, 21
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/eyes-closed
|
||||
rotate: true
|
||||
xy: 770, 18
|
||||
size: 34, 12
|
||||
orig: 34, 12
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
|
||||
|
Before Width: | Height: | Size: 145 KiB After Width: | Height: | Size: 144 KiB |
@ -4,282 +4,282 @@ format: RGBA8888
|
||||
filter: Linear,Linear
|
||||
repeat: none
|
||||
spear
|
||||
rotate: false
|
||||
xy: 2, 142
|
||||
rotate: true
|
||||
xy: 2, 104
|
||||
size: 22, 368
|
||||
orig: 22, 368
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblingirl/head
|
||||
rotate: false
|
||||
xy: 26, 429
|
||||
size: 103, 81
|
||||
xy: 2, 23
|
||||
size: 103, 79
|
||||
orig: 103, 81
|
||||
offset: 0, 0
|
||||
offset: 0, 2
|
||||
index: -1
|
||||
goblin/head
|
||||
rotate: false
|
||||
xy: 26, 361
|
||||
size: 103, 66
|
||||
xy: 107, 38
|
||||
size: 103, 64
|
||||
orig: 103, 66
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/torso
|
||||
rotate: false
|
||||
xy: 131, 414
|
||||
rotate: true
|
||||
xy: 212, 34
|
||||
size: 68, 96
|
||||
orig: 68, 96
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblingirl/torso
|
||||
goblin/right-upper-leg
|
||||
rotate: true
|
||||
xy: 107, 2
|
||||
size: 34, 63
|
||||
orig: 34, 63
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/left-lower-leg
|
||||
rotate: true
|
||||
xy: 172, 2
|
||||
size: 30, 70
|
||||
orig: 33, 70
|
||||
offset: 2, 0
|
||||
index: -1
|
||||
goblingirl/left-lower-leg
|
||||
rotate: true
|
||||
xy: 244, 2
|
||||
size: 30, 70
|
||||
orig: 33, 70
|
||||
offset: 2, 0
|
||||
index: -1
|
||||
goblin/undie-straps
|
||||
rotate: false
|
||||
xy: 26, 263
|
||||
size: 68, 96
|
||||
orig: 68, 96
|
||||
xy: 2, 2
|
||||
size: 55, 19
|
||||
orig: 55, 19
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
dagger
|
||||
rotate: false
|
||||
xy: 26, 153
|
||||
rotate: true
|
||||
xy: 372, 100
|
||||
size: 26, 108
|
||||
orig: 26, 108
|
||||
orig: 156, 238
|
||||
offset: 100, 30
|
||||
index: -1
|
||||
goblingirl/torso
|
||||
rotate: true
|
||||
xy: 482, 60
|
||||
size: 66, 96
|
||||
orig: 68, 96
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/right-lower-leg
|
||||
rotate: false
|
||||
xy: 201, 434
|
||||
size: 36, 76
|
||||
rotate: true
|
||||
xy: 580, 91
|
||||
size: 35, 76
|
||||
orig: 36, 76
|
||||
offset: 0, 0
|
||||
offset: 1, 0
|
||||
index: -1
|
||||
goblingirl/right-lower-leg
|
||||
rotate: false
|
||||
xy: 54, 185
|
||||
size: 36, 76
|
||||
rotate: true
|
||||
xy: 658, 91
|
||||
size: 35, 76
|
||||
orig: 36, 76
|
||||
offset: 0, 0
|
||||
offset: 1, 0
|
||||
index: -1
|
||||
goblin/left-upper-leg
|
||||
rotate: false
|
||||
xy: 96, 286
|
||||
rotate: true
|
||||
xy: 736, 93
|
||||
size: 33, 73
|
||||
orig: 33, 73
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/pelvis
|
||||
rotate: false
|
||||
xy: 131, 369
|
||||
rotate: true
|
||||
xy: 310, 40
|
||||
size: 62, 43
|
||||
orig: 62, 43
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblingirl/pelvis
|
||||
rotate: false
|
||||
xy: 131, 324
|
||||
size: 62, 43
|
||||
orig: 62, 43
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/right-foot
|
||||
rotate: false
|
||||
xy: 131, 289
|
||||
size: 63, 33
|
||||
orig: 63, 33
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/left-lower-leg
|
||||
rotate: false
|
||||
xy: 2, 70
|
||||
size: 33, 70
|
||||
orig: 33, 70
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/right-upper-leg
|
||||
rotate: false
|
||||
xy: 2, 5
|
||||
size: 34, 63
|
||||
orig: 34, 63
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblingirl/left-lower-leg
|
||||
rotate: false
|
||||
xy: 195, 342
|
||||
size: 33, 70
|
||||
orig: 33, 70
|
||||
goblin/left-hand
|
||||
rotate: true
|
||||
xy: 316, 2
|
||||
size: 36, 41
|
||||
orig: 36, 41
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblingirl/left-upper-leg
|
||||
rotate: false
|
||||
xy: 37, 81
|
||||
rotate: true
|
||||
xy: 811, 93
|
||||
size: 33, 70
|
||||
orig: 33, 70
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblingirl/right-upper-leg
|
||||
rotate: false
|
||||
xy: 38, 16
|
||||
size: 34, 63
|
||||
orig: 34, 63
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/eyes-closed
|
||||
rotate: false
|
||||
xy: 38, 2
|
||||
size: 34, 12
|
||||
orig: 34, 12
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/undies
|
||||
rotate: false
|
||||
xy: 54, 154
|
||||
size: 36, 29
|
||||
orig: 36, 29
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/right-arm
|
||||
rotate: false
|
||||
xy: 72, 102
|
||||
size: 23, 50
|
||||
orig: 23, 50
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/left-foot
|
||||
rotate: false
|
||||
xy: 131, 256
|
||||
xy: 883, 95
|
||||
size: 65, 31
|
||||
orig: 65, 31
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblingirl/right-arm
|
||||
rotate: false
|
||||
xy: 196, 290
|
||||
size: 28, 50
|
||||
orig: 28, 50
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblingirl/left-shoulder
|
||||
rotate: false
|
||||
xy: 226, 294
|
||||
size: 28, 46
|
||||
orig: 28, 46
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/left-arm
|
||||
rotate: false
|
||||
xy: 198, 253
|
||||
size: 37, 35
|
||||
orig: 37, 35
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblingirl/left-foot
|
||||
rotate: false
|
||||
xy: 92, 223
|
||||
xy: 950, 95
|
||||
size: 65, 31
|
||||
orig: 65, 31
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblingirl/right-foot
|
||||
goblin/right-foot
|
||||
rotate: false
|
||||
xy: 92, 188
|
||||
xy: 580, 56
|
||||
size: 63, 33
|
||||
orig: 63, 33
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/undie-straps
|
||||
goblingirl/right-foot
|
||||
rotate: false
|
||||
xy: 92, 167
|
||||
size: 55, 19
|
||||
orig: 55, 19
|
||||
xy: 645, 56
|
||||
size: 63, 33
|
||||
orig: 63, 33
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblingirl/left-arm
|
||||
goblingirl/pelvis
|
||||
rotate: false
|
||||
xy: 159, 219
|
||||
size: 37, 35
|
||||
orig: 37, 35
|
||||
xy: 355, 55
|
||||
size: 59, 43
|
||||
orig: 62, 43
|
||||
offset: 1, 0
|
||||
index: -1
|
||||
goblingirl/right-upper-leg
|
||||
rotate: true
|
||||
xy: 416, 64
|
||||
size: 34, 63
|
||||
orig: 34, 63
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/right-shoulder
|
||||
rotate: false
|
||||
xy: 97, 120
|
||||
size: 39, 45
|
||||
xy: 359, 11
|
||||
size: 39, 42
|
||||
orig: 39, 45
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblingirl/right-shoulder
|
||||
rotate: false
|
||||
xy: 198, 206
|
||||
size: 39, 45
|
||||
orig: 39, 45
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/left-hand
|
||||
rotate: false
|
||||
xy: 157, 176
|
||||
size: 36, 41
|
||||
orig: 36, 41
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/neck
|
||||
rotate: false
|
||||
xy: 195, 163
|
||||
size: 36, 41
|
||||
orig: 36, 41
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblingirl/undie-straps
|
||||
rotate: false
|
||||
xy: 97, 99
|
||||
xy: 416, 43
|
||||
size: 55, 19
|
||||
orig: 55, 19
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblingirl/neck
|
||||
goblingirl/right-shoulder
|
||||
rotate: true
|
||||
xy: 400, 2
|
||||
size: 39, 42
|
||||
orig: 39, 45
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/left-arm
|
||||
rotate: true
|
||||
xy: 444, 4
|
||||
size: 37, 35
|
||||
orig: 37, 35
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/neck
|
||||
rotate: false
|
||||
xy: 138, 120
|
||||
size: 35, 41
|
||||
orig: 35, 41
|
||||
xy: 481, 17
|
||||
size: 36, 41
|
||||
orig: 36, 41
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblingirl/left-hand
|
||||
rotate: false
|
||||
xy: 175, 121
|
||||
xy: 519, 18
|
||||
size: 35, 40
|
||||
orig: 35, 40
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/left-shoulder
|
||||
goblingirl/right-arm
|
||||
rotate: false
|
||||
xy: 212, 117
|
||||
xy: 556, 8
|
||||
size: 22, 50
|
||||
orig: 28, 50
|
||||
offset: 3, 0
|
||||
index: -1
|
||||
goblingirl/neck
|
||||
rotate: false
|
||||
xy: 580, 13
|
||||
size: 33, 41
|
||||
orig: 35, 41
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/left-shoulder
|
||||
rotate: true
|
||||
xy: 615, 25
|
||||
size: 29, 44
|
||||
orig: 29, 44
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblingirl/eyes-closed
|
||||
goblingirl/left-shoulder
|
||||
rotate: true
|
||||
xy: 661, 26
|
||||
size: 28, 45
|
||||
orig: 28, 46
|
||||
offset: 0, 1
|
||||
index: -1
|
||||
goblingirl/left-arm
|
||||
rotate: false
|
||||
xy: 154, 97
|
||||
size: 37, 21
|
||||
orig: 37, 21
|
||||
xy: 710, 54
|
||||
size: 37, 35
|
||||
orig: 37, 35
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/right-arm
|
||||
rotate: false
|
||||
xy: 708, 2
|
||||
size: 23, 50
|
||||
orig: 23, 50
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/right-hand
|
||||
rotate: false
|
||||
xy: 193, 78
|
||||
xy: 749, 54
|
||||
size: 36, 37
|
||||
orig: 36, 37
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblingirl/right-hand
|
||||
rotate: false
|
||||
xy: 74, 39
|
||||
size: 36, 37
|
||||
xy: 733, 15
|
||||
size: 35, 37
|
||||
orig: 36, 37
|
||||
offset: 0, 0
|
||||
offset: 1, 0
|
||||
index: -1
|
||||
goblingirl/undies
|
||||
goblin/undies
|
||||
rotate: false
|
||||
xy: 74, 8
|
||||
xy: 787, 62
|
||||
size: 36, 29
|
||||
orig: 36, 29
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblingirl/undies
|
||||
rotate: false
|
||||
xy: 825, 62
|
||||
size: 36, 29
|
||||
orig: 36, 29
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblingirl/eyes-closed
|
||||
rotate: false
|
||||
xy: 59, 6
|
||||
size: 37, 15
|
||||
orig: 37, 21
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/eyes-closed
|
||||
rotate: true
|
||||
xy: 770, 18
|
||||
size: 34, 12
|
||||
orig: 34, 12
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
|
||||
|
Before Width: | Height: | Size: 145 KiB After Width: | Height: | Size: 144 KiB |
|
Before Width: | Height: | Size: 18 KiB |
|
Before Width: | Height: | Size: 3.2 KiB |
|
Before Width: | Height: | Size: 3.4 KiB |
|
Before Width: | Height: | Size: 24 KiB |
|
Before Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 3.5 KiB |
|
Before Width: | Height: | Size: 5.2 KiB |
|
Before Width: | Height: | Size: 4.7 KiB |
|
Before Width: | Height: | Size: 6.0 KiB |
|
Before Width: | Height: | Size: 2.4 KiB |
|
Before Width: | Height: | Size: 3.8 KiB |
|
Before Width: | Height: | Size: 4.4 KiB |
|
Before Width: | Height: | Size: 2.8 KiB |
@ -1,8 +0,0 @@
|
||||
{
|
||||
pot: true,
|
||||
paddingX: 2,
|
||||
paddingY: 2,
|
||||
duplicatePadding: false,
|
||||
filterMin: Linear,
|
||||
filterMag: Linear,
|
||||
}
|
||||
|
Before Width: | Height: | Size: 5.7 KiB |
|
Before Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 3.1 KiB |
|
Before Width: | Height: | Size: 4.4 KiB |
|
Before Width: | Height: | Size: 5.3 KiB |
|
Before Width: | Height: | Size: 3.7 KiB |
|
Before Width: | Height: | Size: 6.0 KiB |
|
Before Width: | Height: | Size: 2.0 KiB |
|
Before Width: | Height: | Size: 4.7 KiB |
|
Before Width: | Height: | Size: 5.4 KiB |
|
Before Width: | Height: | Size: 8.8 KiB |
@ -1,171 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<data version="1.0">
|
||||
<struct type="Settings">
|
||||
<key>fileFormatVersion</key>
|
||||
<int>1</int>
|
||||
<key>variation</key>
|
||||
<string>main</string>
|
||||
<key>verbose</key>
|
||||
<false/>
|
||||
<key>autoSDSettings</key>
|
||||
<array>
|
||||
<struct type="AutoSDSettings">
|
||||
<key>scale</key>
|
||||
<double>0.5</double>
|
||||
<key>extension</key>
|
||||
<string>/iphone/</string>
|
||||
<key>acceptFractionalValues</key>
|
||||
<false/>
|
||||
<key>maxTextureSize</key>
|
||||
<QSize>
|
||||
<key>width</key>
|
||||
<int>2048</int>
|
||||
<key>height</key>
|
||||
<int>2048</int>
|
||||
</QSize>
|
||||
</struct>
|
||||
</array>
|
||||
<key>allowRotation</key>
|
||||
<true/>
|
||||
<key>quiet</key>
|
||||
<false/>
|
||||
<key>premultiplyAlpha</key>
|
||||
<false/>
|
||||
<key>shapeDebug</key>
|
||||
<false/>
|
||||
<key>dpi</key>
|
||||
<uint>72</uint>
|
||||
<key>dataFormat</key>
|
||||
<string>libgdx</string>
|
||||
<key>textureFileName</key>
|
||||
<filename>../Resources/iphone-retina/spineboy.png</filename>
|
||||
<key>flipPVR</key>
|
||||
<false/>
|
||||
<key>ditherType</key>
|
||||
<enum type="SettingsBase::DitherType">NearestNeighbour</enum>
|
||||
<key>backgroundColor</key>
|
||||
<uint>0</uint>
|
||||
<key>libGdx</key>
|
||||
<struct type="LibGDX">
|
||||
<key>filtering</key>
|
||||
<struct type="LibGDXFiltering">
|
||||
<key>x</key>
|
||||
<enum type="LibGDXFiltering::Filtering">Linear</enum>
|
||||
<key>y</key>
|
||||
<enum type="LibGDXFiltering::Filtering">Linear</enum>
|
||||
</struct>
|
||||
</struct>
|
||||
<key>shapePadding</key>
|
||||
<uint>2</uint>
|
||||
<key>jpgQuality</key>
|
||||
<uint>80</uint>
|
||||
<key>pngOptimizationLevel</key>
|
||||
<uint>0</uint>
|
||||
<key>textureSubPath</key>
|
||||
<string></string>
|
||||
<key>textureFormat</key>
|
||||
<enum type="SettingsBase::TextureFormat">png</enum>
|
||||
<key>borderPadding</key>
|
||||
<uint>2</uint>
|
||||
<key>maxTextureSize</key>
|
||||
<QSize>
|
||||
<key>width</key>
|
||||
<int>2048</int>
|
||||
<key>height</key>
|
||||
<int>2048</int>
|
||||
</QSize>
|
||||
<key>fixedTextureSize</key>
|
||||
<QSize>
|
||||
<key>width</key>
|
||||
<int>-1</int>
|
||||
<key>height</key>
|
||||
<int>-1</int>
|
||||
</QSize>
|
||||
<key>reduceBorderArtifacts</key>
|
||||
<false/>
|
||||
<key>algorithmSettings</key>
|
||||
<struct type="AlgorithmSettings">
|
||||
<key>algorithm</key>
|
||||
<enum type="AlgorithmSettings::AlgorithmId">MaxRects</enum>
|
||||
<key>freeSizeMode</key>
|
||||
<enum type="AlgorithmSettings::AlgorithmFreeSizeMode">Best</enum>
|
||||
<key>sizeConstraints</key>
|
||||
<enum type="AlgorithmSettings::SizeConstraints">NPOT</enum>
|
||||
<key>forceSquared</key>
|
||||
<false/>
|
||||
<key>forceWordAligned</key>
|
||||
<false/>
|
||||
<key>maxRects</key>
|
||||
<struct type="AlgorithmMaxRectsSettings">
|
||||
<key>heuristic</key>
|
||||
<enum type="AlgorithmMaxRectsSettings::Heuristic">Best</enum>
|
||||
</struct>
|
||||
<key>basic</key>
|
||||
<struct type="AlgorithmBasicSettings">
|
||||
<key>sortBy</key>
|
||||
<enum type="AlgorithmBasicSettings::SortBy">Best</enum>
|
||||
<key>order</key>
|
||||
<enum type="AlgorithmBasicSettings::Order">Ascending</enum>
|
||||
</struct>
|
||||
</struct>
|
||||
<key>andEngine</key>
|
||||
<struct type="AndEngine">
|
||||
<key>minFilter</key>
|
||||
<enum type="AndEngine::MinFilter">Linear</enum>
|
||||
<key>packageName</key>
|
||||
<string>Texture</string>
|
||||
<key>javaFileName</key>
|
||||
<filename>../Resources/data/spineboy2.java</filename>
|
||||
<key>wrap</key>
|
||||
<struct type="AndEngineWrap">
|
||||
<key>s</key>
|
||||
<enum type="AndEngineWrap::Wrap">Clamp</enum>
|
||||
<key>t</key>
|
||||
<enum type="AndEngineWrap::Wrap">Clamp</enum>
|
||||
</struct>
|
||||
<key>magFilter</key>
|
||||
<enum type="AndEngine::MagFilter">MagLinear</enum>
|
||||
</struct>
|
||||
<key>dataFileName</key>
|
||||
<filename>../Resources/iphone-retina/spineboy.txt</filename>
|
||||
<key>mainExtension</key>
|
||||
<string>/iphone-retina/</string>
|
||||
<key>forceIdenticalLayout</key>
|
||||
<false/>
|
||||
<key>outputFormat</key>
|
||||
<enum type="SettingsBase::OutputFormat">RGBA8888</enum>
|
||||
<key>autoAliasEnabled</key>
|
||||
<true/>
|
||||
<key>trimSpriteNames</key>
|
||||
<false/>
|
||||
<key>globalSpriteSettings</key>
|
||||
<struct type="SpriteSettings">
|
||||
<key>scale</key>
|
||||
<double>1</double>
|
||||
<key>scaleMode</key>
|
||||
<enum type="ScaleMode">Smooth</enum>
|
||||
<key>innerPadding</key>
|
||||
<uint>0</uint>
|
||||
<key>extrude</key>
|
||||
<uint>0</uint>
|
||||
<key>trimThreshold</key>
|
||||
<uint>1</uint>
|
||||
<key>trimMode</key>
|
||||
<enum type="SpriteSettings::TrimMode">Trim</enum>
|
||||
<key>heuristicMask</key>
|
||||
<false/>
|
||||
</struct>
|
||||
<key>fileList</key>
|
||||
<array>
|
||||
<filename>images</filename>
|
||||
</array>
|
||||
<key>ignoreFileList</key>
|
||||
<array/>
|
||||
<key>replaceList</key>
|
||||
<array/>
|
||||
<key>commonDivisorX</key>
|
||||
<uint>1</uint>
|
||||
<key>commonDivisorY</key>
|
||||
<uint>1</uint>
|
||||
</struct>
|
||||
</data>
|
||||
@ -87,25 +87,14 @@ void RegionAttachment_updateQuad (RegionAttachment* self, Slot* slot, ccV3F_C4B_
|
||||
quad->br.vertices.x = self->vertices[VERTEX_X4];
|
||||
quad->br.vertices.y = self->vertices[VERTEX_Y4];
|
||||
|
||||
if (self->region->rotate) {
|
||||
quad->tl.texCoords.u = self->region->u;
|
||||
quad->tl.texCoords.v = self->region->v2;
|
||||
quad->tr.texCoords.u = self->region->u;
|
||||
quad->tr.texCoords.v = self->region->v;
|
||||
quad->br.texCoords.u = self->region->u2;
|
||||
quad->br.texCoords.v = self->region->v;
|
||||
quad->bl.texCoords.u = self->region->u2;
|
||||
quad->bl.texCoords.v = self->region->v2;
|
||||
} else {
|
||||
quad->bl.texCoords.u = self->region->u;
|
||||
quad->bl.texCoords.v = self->region->v2;
|
||||
quad->tl.texCoords.u = self->region->u;
|
||||
quad->tl.texCoords.v = self->region->v;
|
||||
quad->tr.texCoords.u = self->region->u2;
|
||||
quad->tr.texCoords.v = self->region->v;
|
||||
quad->br.texCoords.u = self->region->u2;
|
||||
quad->br.texCoords.v = self->region->v2;
|
||||
}
|
||||
quad->bl.texCoords.u = self->uvs[VERTEX_X1];
|
||||
quad->bl.texCoords.v = self->uvs[VERTEX_Y1];
|
||||
quad->tl.texCoords.u = self->uvs[VERTEX_X2];
|
||||
quad->tl.texCoords.v = self->uvs[VERTEX_Y2];
|
||||
quad->tr.texCoords.u = self->uvs[VERTEX_X3];
|
||||
quad->tr.texCoords.v = self->uvs[VERTEX_Y3];
|
||||
quad->br.texCoords.u = self->uvs[VERTEX_X4];
|
||||
quad->br.texCoords.v = self->uvs[VERTEX_Y4];
|
||||
}
|
||||
|
||||
/**/
|
||||
@ -114,6 +103,7 @@ CCSkeleton* CCSkeleton::createWithFile (const char* skeletonDataFile, Atlas* atl
|
||||
SkeletonJson* json = SkeletonJson_create(atlas);
|
||||
json->scale = scale;
|
||||
SkeletonData* skeletonData = SkeletonJson_readSkeletonDataFile(json, skeletonDataFile);
|
||||
CCAssert(skeletonData, json->error ? json->error : "Error reading skeleton data.");
|
||||
SkeletonJson_dispose(json);
|
||||
CCSkeleton* node = skeletonData ? createWithData(skeletonData) : 0;
|
||||
node->ownsSkeleton = true;
|
||||
@ -122,10 +112,12 @@ CCSkeleton* CCSkeleton::createWithFile (const char* skeletonDataFile, Atlas* atl
|
||||
|
||||
CCSkeleton* CCSkeleton::createWithFile (const char* skeletonDataFile, const char* atlasFile, float scale) {
|
||||
Atlas* atlas = Atlas_readAtlasFile(atlasFile);
|
||||
CCAssert(atlas, "Error reading atlas file.");
|
||||
if (!atlas) return 0;
|
||||
SkeletonJson* json = SkeletonJson_create(atlas);
|
||||
json->scale = scale;
|
||||
SkeletonData* skeletonData = SkeletonJson_readSkeletonDataFile(json, skeletonDataFile);
|
||||
CCAssert(skeletonData, json->error ? json->error : "Error reading skeleton data file.");
|
||||
SkeletonJson_dispose(json);
|
||||
if (!skeletonData) {
|
||||
Atlas_dispose(atlas);
|
||||
@ -197,7 +189,7 @@ void CCSkeleton::draw () {
|
||||
Slot* slot = skeleton->slots[i];
|
||||
if (!slot->attachment || slot->attachment->type != ATTACHMENT_REGION) continue;
|
||||
RegionAttachment* attachment = (RegionAttachment*)slot->attachment;
|
||||
CCTextureAtlas* regionTextureAtlas = (CCTextureAtlas*)attachment->region->page->texture;
|
||||
CCTextureAtlas* regionTextureAtlas = (CCTextureAtlas*)attachment->texture;
|
||||
if (regionTextureAtlas != textureAtlas) {
|
||||
if (textureAtlas) {
|
||||
textureAtlas->drawQuads();
|
||||
|
||||
@ -98,8 +98,13 @@ namespace Spine {
|
||||
|
||||
region.u = x / (float)page.width;
|
||||
region.v = y / (float)page.height;
|
||||
region.u2 = (x + width) / (float)page.width;
|
||||
region.v2 = (y + height) / (float)page.height;
|
||||
if (region.rotate) {
|
||||
region.u2 = (x + height) / (float)page.width;
|
||||
region.v2 = (y + width) / (float)page.height;
|
||||
} else {
|
||||
region.u2 = (x + width) / (float)page.width;
|
||||
region.v2 = (y + height) / (float)page.height;
|
||||
}
|
||||
region.x = x;
|
||||
region.y = y;
|
||||
region.width = Math.Abs(width);
|
||||
|
||||
@ -40,7 +40,14 @@ namespace Spine {
|
||||
AtlasRegion region = atlas.FindRegion(name);
|
||||
if (region == null) throw new Exception("Region not found in atlas: " + name + " (" + type + ")");
|
||||
RegionAttachment attachment = new RegionAttachment(name);
|
||||
attachment.Region = region;
|
||||
attachment.Texture = region.page.texture;
|
||||
attachment.SetUVs(region.u, region.v, region.u2, region.v2, 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 attachment;
|
||||
}
|
||||
throw new Exception("Unknown attachment type: " + type);
|
||||
|
||||
@ -45,45 +45,61 @@ namespace Spine {
|
||||
public float Width { get; set; }
|
||||
public float Height { get; set; }
|
||||
|
||||
public Object Texture { get; set; }
|
||||
public float RegionOffsetX { get; set; }
|
||||
public float RegionOffsetY { get; set; } // Pixels stripped from the bottom left, unrotated.
|
||||
public float RegionWidth { get; set; }
|
||||
public float RegionHeight { get; set; } // Unrotated, stripped size.
|
||||
public float RegionOriginalWidth { get; set; }
|
||||
public float RegionOriginalHeight { get; set; } // Unrotated, unstripped size.
|
||||
|
||||
public float[] Offset { get; private set; }
|
||||
public float[] Vertices { get; private set; }
|
||||
public AtlasRegion Region { get; set; }
|
||||
public float[] UVs { get; private set; }
|
||||
|
||||
public RegionAttachment (string name)
|
||||
: base(name) {
|
||||
Offset = new float[8];
|
||||
Vertices = new float[8];
|
||||
UVs = new float[8];
|
||||
ScaleX = 1;
|
||||
ScaleY = 1;
|
||||
}
|
||||
|
||||
public void SetUVs (float u, float v, float u2, float v2, bool rotate) {
|
||||
float[] uvs = UVs;
|
||||
if (rotate) {
|
||||
uvs[X2] = u;
|
||||
uvs[Y2] = v2;
|
||||
uvs[X3] = u;
|
||||
uvs[Y3] = v;
|
||||
uvs[X4] = u2;
|
||||
uvs[Y4] = v;
|
||||
uvs[X1] = u2;
|
||||
uvs[Y1] = v2;
|
||||
} else {
|
||||
uvs[X1] = u;
|
||||
uvs[Y1] = v2;
|
||||
uvs[X2] = u;
|
||||
uvs[Y2] = v;
|
||||
uvs[X3] = u2;
|
||||
uvs[Y3] = v;
|
||||
uvs[X4] = u2;
|
||||
uvs[Y4] = v2;
|
||||
}
|
||||
}
|
||||
|
||||
public void UpdateOffset () {
|
||||
float width = Width;
|
||||
float height = Height;
|
||||
float localX2 = width / 2;
|
||||
float localY2 = height / 2;
|
||||
float localX = -localX2;
|
||||
float localY = -localY2;
|
||||
AtlasRegion region = Region;
|
||||
if (region != null) {
|
||||
if (region.rotate) {
|
||||
localX += region.offsetX / region.originalWidth * height;
|
||||
localY += region.offsetY / region.originalHeight * width;
|
||||
localX2 -= (region.originalWidth - region.offsetX - region.height) / region.originalWidth * width;
|
||||
localY2 -= (region.originalHeight - region.offsetY - region.width) / region.originalHeight * height;
|
||||
} else {
|
||||
localX += region.offsetX / region.originalWidth * width;
|
||||
localY += region.offsetY / region.originalHeight * height;
|
||||
localX2 -= (region.originalWidth - region.offsetX - region.width) / region.originalWidth * width;
|
||||
localY2 -= (region.originalHeight - region.offsetY - region.height) / region.originalHeight * height;
|
||||
}
|
||||
}
|
||||
float scaleX = ScaleX;
|
||||
float scaleY = ScaleY;
|
||||
localX *= scaleX;
|
||||
localY *= scaleY;
|
||||
localX2 *= scaleX;
|
||||
localY2 *= scaleY;
|
||||
float regionScaleX = width / RegionOriginalWidth * scaleX;
|
||||
float regionScaleY = height / RegionOriginalHeight * scaleX;
|
||||
float localX = -width / 2 * scaleX + RegionOffsetX * regionScaleX;
|
||||
float localY = -height / 2 * scaleX + RegionOffsetY * regionScaleY;
|
||||
float localX2 = localX + RegionWidth * regionScaleX;
|
||||
float localY2 = localY + RegionHeight * regionScaleY;
|
||||
float radians = Rotation * (float)Math.PI / 180;
|
||||
float cos = (float)Math.Cos(radians);
|
||||
float sin = (float)Math.Sin(radians);
|
||||
|
||||
@ -60,8 +60,8 @@ public class RegionAttachment extends Attachment {
|
||||
if (region.rotate) {
|
||||
localX += region.offsetX / region.originalWidth * height;
|
||||
localY += region.offsetY / region.originalHeight * width;
|
||||
localX2 -= (region.originalWidth - region.offsetX - region.packedHeight) / region.originalWidth * width;
|
||||
localY2 -= (region.originalHeight - region.offsetY - region.packedWidth) / region.originalHeight * height;
|
||||
localX2 -= (region.originalWidth - region.offsetX - region.packedHeight) / region.originalWidth * height;
|
||||
localY2 -= (region.originalHeight - region.offsetY - region.packedWidth) / region.originalHeight * width;
|
||||
} else {
|
||||
localX += region.offsetX / region.originalWidth * width;
|
||||
localY += region.offsetY / region.originalHeight * height;
|
||||
|
||||
@ -4,282 +4,282 @@ format: RGBA8888
|
||||
filter: Linear,Linear
|
||||
repeat: none
|
||||
spear
|
||||
rotate: false
|
||||
xy: 2, 142
|
||||
rotate: true
|
||||
xy: 2, 104
|
||||
size: 22, 368
|
||||
orig: 22, 368
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblingirl/head
|
||||
rotate: false
|
||||
xy: 26, 429
|
||||
size: 103, 81
|
||||
xy: 2, 23
|
||||
size: 103, 79
|
||||
orig: 103, 81
|
||||
offset: 0, 0
|
||||
offset: 0, 2
|
||||
index: -1
|
||||
goblin/head
|
||||
rotate: false
|
||||
xy: 26, 361
|
||||
size: 103, 66
|
||||
xy: 107, 38
|
||||
size: 103, 64
|
||||
orig: 103, 66
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/torso
|
||||
rotate: false
|
||||
xy: 131, 414
|
||||
rotate: true
|
||||
xy: 212, 34
|
||||
size: 68, 96
|
||||
orig: 68, 96
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblingirl/torso
|
||||
goblin/right-upper-leg
|
||||
rotate: true
|
||||
xy: 107, 2
|
||||
size: 34, 63
|
||||
orig: 34, 63
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/left-lower-leg
|
||||
rotate: true
|
||||
xy: 172, 2
|
||||
size: 30, 70
|
||||
orig: 33, 70
|
||||
offset: 2, 0
|
||||
index: -1
|
||||
goblingirl/left-lower-leg
|
||||
rotate: true
|
||||
xy: 244, 2
|
||||
size: 30, 70
|
||||
orig: 33, 70
|
||||
offset: 2, 0
|
||||
index: -1
|
||||
goblin/undie-straps
|
||||
rotate: false
|
||||
xy: 26, 263
|
||||
size: 68, 96
|
||||
orig: 68, 96
|
||||
xy: 2, 2
|
||||
size: 55, 19
|
||||
orig: 55, 19
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
dagger
|
||||
rotate: false
|
||||
xy: 26, 153
|
||||
rotate: true
|
||||
xy: 372, 100
|
||||
size: 26, 108
|
||||
orig: 26, 108
|
||||
orig: 156, 238
|
||||
offset: 100, 30
|
||||
index: -1
|
||||
goblingirl/torso
|
||||
rotate: true
|
||||
xy: 482, 60
|
||||
size: 66, 96
|
||||
orig: 68, 96
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/right-lower-leg
|
||||
rotate: false
|
||||
xy: 201, 434
|
||||
size: 36, 76
|
||||
rotate: true
|
||||
xy: 580, 91
|
||||
size: 35, 76
|
||||
orig: 36, 76
|
||||
offset: 0, 0
|
||||
offset: 1, 0
|
||||
index: -1
|
||||
goblingirl/right-lower-leg
|
||||
rotate: false
|
||||
xy: 54, 185
|
||||
size: 36, 76
|
||||
rotate: true
|
||||
xy: 658, 91
|
||||
size: 35, 76
|
||||
orig: 36, 76
|
||||
offset: 0, 0
|
||||
offset: 1, 0
|
||||
index: -1
|
||||
goblin/left-upper-leg
|
||||
rotate: false
|
||||
xy: 96, 286
|
||||
rotate: true
|
||||
xy: 736, 93
|
||||
size: 33, 73
|
||||
orig: 33, 73
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/pelvis
|
||||
rotate: false
|
||||
xy: 131, 369
|
||||
rotate: true
|
||||
xy: 310, 40
|
||||
size: 62, 43
|
||||
orig: 62, 43
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblingirl/pelvis
|
||||
rotate: false
|
||||
xy: 131, 324
|
||||
size: 62, 43
|
||||
orig: 62, 43
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/right-foot
|
||||
rotate: false
|
||||
xy: 131, 289
|
||||
size: 63, 33
|
||||
orig: 63, 33
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/left-lower-leg
|
||||
rotate: false
|
||||
xy: 2, 70
|
||||
size: 33, 70
|
||||
orig: 33, 70
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/right-upper-leg
|
||||
rotate: false
|
||||
xy: 2, 5
|
||||
size: 34, 63
|
||||
orig: 34, 63
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblingirl/left-lower-leg
|
||||
rotate: false
|
||||
xy: 195, 342
|
||||
size: 33, 70
|
||||
orig: 33, 70
|
||||
goblin/left-hand
|
||||
rotate: true
|
||||
xy: 316, 2
|
||||
size: 36, 41
|
||||
orig: 36, 41
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblingirl/left-upper-leg
|
||||
rotate: false
|
||||
xy: 37, 81
|
||||
rotate: true
|
||||
xy: 811, 93
|
||||
size: 33, 70
|
||||
orig: 33, 70
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblingirl/right-upper-leg
|
||||
rotate: false
|
||||
xy: 38, 16
|
||||
size: 34, 63
|
||||
orig: 34, 63
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/eyes-closed
|
||||
rotate: false
|
||||
xy: 38, 2
|
||||
size: 34, 12
|
||||
orig: 34, 12
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/undies
|
||||
rotate: false
|
||||
xy: 54, 154
|
||||
size: 36, 29
|
||||
orig: 36, 29
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/right-arm
|
||||
rotate: false
|
||||
xy: 72, 102
|
||||
size: 23, 50
|
||||
orig: 23, 50
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/left-foot
|
||||
rotate: false
|
||||
xy: 131, 256
|
||||
xy: 883, 95
|
||||
size: 65, 31
|
||||
orig: 65, 31
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblingirl/right-arm
|
||||
rotate: false
|
||||
xy: 196, 290
|
||||
size: 28, 50
|
||||
orig: 28, 50
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblingirl/left-shoulder
|
||||
rotate: false
|
||||
xy: 226, 294
|
||||
size: 28, 46
|
||||
orig: 28, 46
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/left-arm
|
||||
rotate: false
|
||||
xy: 198, 253
|
||||
size: 37, 35
|
||||
orig: 37, 35
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblingirl/left-foot
|
||||
rotate: false
|
||||
xy: 92, 223
|
||||
xy: 950, 95
|
||||
size: 65, 31
|
||||
orig: 65, 31
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblingirl/right-foot
|
||||
goblin/right-foot
|
||||
rotate: false
|
||||
xy: 92, 188
|
||||
xy: 580, 56
|
||||
size: 63, 33
|
||||
orig: 63, 33
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/undie-straps
|
||||
goblingirl/right-foot
|
||||
rotate: false
|
||||
xy: 92, 167
|
||||
size: 55, 19
|
||||
orig: 55, 19
|
||||
xy: 645, 56
|
||||
size: 63, 33
|
||||
orig: 63, 33
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblingirl/left-arm
|
||||
goblingirl/pelvis
|
||||
rotate: false
|
||||
xy: 159, 219
|
||||
size: 37, 35
|
||||
orig: 37, 35
|
||||
xy: 355, 55
|
||||
size: 59, 43
|
||||
orig: 62, 43
|
||||
offset: 1, 0
|
||||
index: -1
|
||||
goblingirl/right-upper-leg
|
||||
rotate: true
|
||||
xy: 416, 64
|
||||
size: 34, 63
|
||||
orig: 34, 63
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/right-shoulder
|
||||
rotate: false
|
||||
xy: 97, 120
|
||||
size: 39, 45
|
||||
xy: 359, 11
|
||||
size: 39, 42
|
||||
orig: 39, 45
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblingirl/right-shoulder
|
||||
rotate: false
|
||||
xy: 198, 206
|
||||
size: 39, 45
|
||||
orig: 39, 45
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/left-hand
|
||||
rotate: false
|
||||
xy: 157, 176
|
||||
size: 36, 41
|
||||
orig: 36, 41
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/neck
|
||||
rotate: false
|
||||
xy: 195, 163
|
||||
size: 36, 41
|
||||
orig: 36, 41
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblingirl/undie-straps
|
||||
rotate: false
|
||||
xy: 97, 99
|
||||
xy: 416, 43
|
||||
size: 55, 19
|
||||
orig: 55, 19
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblingirl/neck
|
||||
goblingirl/right-shoulder
|
||||
rotate: true
|
||||
xy: 400, 2
|
||||
size: 39, 42
|
||||
orig: 39, 45
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/left-arm
|
||||
rotate: true
|
||||
xy: 444, 4
|
||||
size: 37, 35
|
||||
orig: 37, 35
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/neck
|
||||
rotate: false
|
||||
xy: 138, 120
|
||||
size: 35, 41
|
||||
orig: 35, 41
|
||||
xy: 481, 17
|
||||
size: 36, 41
|
||||
orig: 36, 41
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblingirl/left-hand
|
||||
rotate: false
|
||||
xy: 175, 121
|
||||
xy: 519, 18
|
||||
size: 35, 40
|
||||
orig: 35, 40
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/left-shoulder
|
||||
goblingirl/right-arm
|
||||
rotate: false
|
||||
xy: 212, 117
|
||||
xy: 556, 8
|
||||
size: 22, 50
|
||||
orig: 28, 50
|
||||
offset: 3, 0
|
||||
index: -1
|
||||
goblingirl/neck
|
||||
rotate: false
|
||||
xy: 580, 13
|
||||
size: 33, 41
|
||||
orig: 35, 41
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/left-shoulder
|
||||
rotate: true
|
||||
xy: 615, 25
|
||||
size: 29, 44
|
||||
orig: 29, 44
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblingirl/eyes-closed
|
||||
goblingirl/left-shoulder
|
||||
rotate: true
|
||||
xy: 661, 26
|
||||
size: 28, 45
|
||||
orig: 28, 46
|
||||
offset: 0, 1
|
||||
index: -1
|
||||
goblingirl/left-arm
|
||||
rotate: false
|
||||
xy: 154, 97
|
||||
size: 37, 21
|
||||
orig: 37, 21
|
||||
xy: 710, 54
|
||||
size: 37, 35
|
||||
orig: 37, 35
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/right-arm
|
||||
rotate: false
|
||||
xy: 708, 2
|
||||
size: 23, 50
|
||||
orig: 23, 50
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/right-hand
|
||||
rotate: false
|
||||
xy: 193, 78
|
||||
xy: 749, 54
|
||||
size: 36, 37
|
||||
orig: 36, 37
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblingirl/right-hand
|
||||
rotate: false
|
||||
xy: 74, 39
|
||||
size: 36, 37
|
||||
xy: 733, 15
|
||||
size: 35, 37
|
||||
orig: 36, 37
|
||||
offset: 0, 0
|
||||
offset: 1, 0
|
||||
index: -1
|
||||
goblingirl/undies
|
||||
goblin/undies
|
||||
rotate: false
|
||||
xy: 74, 8
|
||||
xy: 787, 62
|
||||
size: 36, 29
|
||||
orig: 36, 29
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblingirl/undies
|
||||
rotate: false
|
||||
xy: 825, 62
|
||||
size: 36, 29
|
||||
orig: 36, 29
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblingirl/eyes-closed
|
||||
rotate: false
|
||||
xy: 59, 6
|
||||
size: 37, 15
|
||||
orig: 37, 21
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
goblin/eyes-closed
|
||||
rotate: true
|
||||
xy: 770, 18
|
||||
size: 34, 12
|
||||
orig: 34, 12
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
|
||||
@ -3,26 +3,26 @@
|
||||
{ "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": "left lower leg", "parent": "left upper leg", "length": 49.89, "x": 56.34, "y": 0.98, "rotation": -16.65 },
|
||||
{ "name": "left foot", "parent": "left lower leg", "length": 46.5, "x": 58.94, "y": -7.61, "rotation": 102.43 },
|
||||
{ "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": "right lower leg", "parent": "right upper leg", "length": 58.52, "x": 42.99, "y": -0.61, "rotation": -14.34 },
|
||||
{ "name": "right foot", "parent": "right lower leg", "length": 45.45, "x": 64.88, "y": 0.04, "rotation": 110.3 },
|
||||
{ "name": "torso", "parent": "hip", "length": 85.82, "x": -6.42, "y": 1.97, "rotation": 93.92 },
|
||||
{ "name": "neck", "parent": "torso", "length": 18.38, "x": 81.67, "y": -6.34, "rotation": -1.51 },
|
||||
{ "name": "head", "parent": "neck", "length": 68.28, "x": 20.93, "y": 11.59, "rotation": -13.92 },
|
||||
{ "name": "right shoulder", "parent": "torso", "length": 37.24, "x": 76.02, "y": 18.14, "rotation": 133.88 },
|
||||
{ "name": "right arm", "parent": "right shoulder", "length": 36.74, "x": 37.6, "y": 0.31, "rotation": 36.32 },
|
||||
{ "name": "right hand", "parent": "right arm", "length": 15.32, "x": 36.9, "y": 0.34, "rotation": 2.35 },
|
||||
{ "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": "pelvis", "parent": "hip", "x": 1.41, "y": -6.57 }
|
||||
{ "name": "right hand", "parent": "right arm", "length": 15.32, "x": 36.9, "y": 0.34, "rotation": 2.35 }
|
||||
],
|
||||
"slots": [
|
||||
{ "name": "left shoulder", "bone": "left shoulder", "attachment": "left shoulder" },
|
||||
{ "name": "left arm", "bone": "left arm", "attachment": "left arm" },
|
||||
{ "name": "left hand item", "bone": "left hand", "attachment": "spear" },
|
||||
{ "name": "left hand item", "bone": "left hand", "attachment": "dagger" },
|
||||
{ "name": "left hand", "bone": "left hand", "attachment": "left hand" },
|
||||
{ "name": "left foot", "bone": "left foot", "attachment": "left foot" },
|
||||
{ "name": "left lower leg", "bone": "left lower leg", "attachment": "left lower leg" },
|
||||
@ -45,11 +45,11 @@
|
||||
"skins": {
|
||||
"default": {
|
||||
"left hand item": {
|
||||
"dagger": { "x": 7.88, "y": -23.45, "rotation": 10.47, "width": 26, "height": 108 },
|
||||
"dagger": { "x": -35.5, "y": 3.85, "rotation": 10.47, "width": 156, "height": 238 },
|
||||
"spear": { "x": -4.55, "y": 39.2, "rotation": 13.04, "width": 22, "height": 368 }
|
||||
},
|
||||
"right hand item": {
|
||||
"dagger": { "x": 6.51, "y": -24.15, "rotation": -8.06, "width": 26, "height": 108 }
|
||||
"dagger": { "x": -21.57, "y": 15.8, "rotation": -8.06, "width": 156, "height": 238 }
|
||||
}
|
||||
},
|
||||
"goblin": {
|
||||
|
||||
|
Before Width: | Height: | Size: 145 KiB After Width: | Height: | Size: 144 KiB |
@ -90,6 +90,7 @@ void goblins () {
|
||||
// Load atlas, skeleton, and animations.
|
||||
Atlas* atlas = Atlas_readAtlasFile("../data/goblins.atlas");
|
||||
SkeletonJson* json = SkeletonJson_create(atlas);
|
||||
json->scale = 2;
|
||||
SkeletonData *skeletonData = SkeletonJson_readSkeletonDataFile(json, "../data/goblins.json");
|
||||
Animation* walkAnimation = SkeletonData_findAnimation(skeletonData, "walk");
|
||||
SkeletonJson_dispose(json);
|
||||
@ -102,15 +103,15 @@ void goblins () {
|
||||
skeleton->flipY = false;
|
||||
Skeleton_setSkinByName(skeleton, "goblin");
|
||||
Skeleton_setSlotsToBindPose(skeleton);
|
||||
Skeleton_setAttachment(skeleton, "left hand item", "dagger");
|
||||
// Skeleton_setAttachment(skeleton, "left hand item", "dagger");
|
||||
|
||||
skeleton->root->x = 320;
|
||||
skeleton->root->y = 420;
|
||||
skeleton->root->y = 590;
|
||||
Skeleton_updateWorldTransform(skeleton);
|
||||
|
||||
AnimationState_setAnimation(drawable->state, walkAnimation, true);
|
||||
|
||||
sf::RenderWindow window(sf::VideoMode(640, 480), "Spine SFML");
|
||||
sf::RenderWindow window(sf::VideoMode(640, 640), "Spine SFML");
|
||||
window.setFramerateLimit(60);
|
||||
sf::Event event;
|
||||
sf::Clock deltaClock;
|
||||
@ -133,6 +134,6 @@ void goblins () {
|
||||
}
|
||||
|
||||
int main () {
|
||||
spineboy();
|
||||
// spineboy();
|
||||
goblins();
|
||||
}
|
||||
|
||||
@ -41,7 +41,7 @@ void _AtlasPage_createTexture (AtlasPage* self, const char* path) {
|
||||
self->texture = texture;
|
||||
Vector2u size = texture->getSize();
|
||||
self->width = size.x;
|
||||
self->height = size.x;
|
||||
self->height = size.y;
|
||||
}
|
||||
|
||||
void _AtlasPage_disposeTexture (AtlasPage* self) {
|
||||
@ -117,32 +117,19 @@ void SkeletonDrawable::draw (RenderTarget& target, RenderStates states) const {
|
||||
vertices[3].position.x = regionAttachment->vertices[VERTEX_X4];
|
||||
vertices[3].position.y = regionAttachment->vertices[VERTEX_Y4];
|
||||
|
||||
int u = regionAttachment->region->x;
|
||||
int u2 = u + regionAttachment->region->width;
|
||||
int v = regionAttachment->region->y;
|
||||
int v2 = v + regionAttachment->region->height;
|
||||
if (regionAttachment->region->rotate) {
|
||||
vertices[1].texCoords.x = u;
|
||||
vertices[1].texCoords.y = v2;
|
||||
vertices[2].texCoords.x = u;
|
||||
vertices[2].texCoords.y = v;
|
||||
vertices[3].texCoords.x = u2;
|
||||
vertices[3].texCoords.y = v;
|
||||
vertices[0].texCoords.x = u2;
|
||||
vertices[0].texCoords.y = v2;
|
||||
} else {
|
||||
vertices[0].texCoords.x = u;
|
||||
vertices[0].texCoords.y = v2;
|
||||
vertices[1].texCoords.x = u;
|
||||
vertices[1].texCoords.y = v;
|
||||
vertices[2].texCoords.x = u2;
|
||||
vertices[2].texCoords.y = v;
|
||||
vertices[3].texCoords.x = u2;
|
||||
vertices[3].texCoords.y = v2;
|
||||
}
|
||||
|
||||
// SMFL doesn't handle batching for us, so we'll just force a single texture per skeleton.
|
||||
states.texture = (Texture*)regionAttachment->region->page->texture;
|
||||
states.texture = (Texture*)regionAttachment->texture;
|
||||
|
||||
Vector2u size = states.texture->getSize();
|
||||
vertices[0].texCoords.x = regionAttachment->uvs[VERTEX_X1] * size.x;
|
||||
vertices[0].texCoords.y = regionAttachment->uvs[VERTEX_Y1] * size.y;
|
||||
vertices[1].texCoords.x = regionAttachment->uvs[VERTEX_X2] * size.x;
|
||||
vertices[1].texCoords.y = regionAttachment->uvs[VERTEX_Y2] * size.y;
|
||||
vertices[2].texCoords.x = regionAttachment->uvs[VERTEX_X3] * size.x;
|
||||
vertices[2].texCoords.y = regionAttachment->uvs[VERTEX_Y3] * size.y;
|
||||
vertices[3].texCoords.x = regionAttachment->uvs[VERTEX_X4] * size.x;
|
||||
vertices[3].texCoords.y = regionAttachment->uvs[VERTEX_Y4] * size.y;
|
||||
|
||||
vertexArray->append(vertices[0]);
|
||||
vertexArray->append(vertices[1]);
|
||||
vertexArray->append(vertices[2]);
|
||||
|
||||
@ -1,4 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 89dad76e10ea944ee9f29109535294be
|
||||
DefaultImporter:
|
||||
userData:
|
||||
|
||||
@ -1,4 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 65ba3309ea8c447678ade95f3fa398da
|
||||
DefaultImporter:
|
||||
userData:
|
||||
|
||||
@ -1,4 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 3ac78ae082927411cba77d73efde27d4
|
||||
DefaultImporter:
|
||||
userData:
|
||||
|
||||
@ -5,4 +5,3 @@ MonoImporter:
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
|
||||
@ -5,4 +5,3 @@ MonoImporter:
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
|
||||
@ -29,10 +29,11 @@ using UnityEngine;
|
||||
|
||||
[CustomEditor(typeof(SkeletonComponent))]
|
||||
public class SkeletonComponentInspector : Editor {
|
||||
private SerializedProperty skeletonDataAsset, animationName, loop, timeScale;
|
||||
private SerializedProperty skeletonDataAsset, animationName, skinName, loop, timeScale;
|
||||
|
||||
void OnEnable () {
|
||||
skeletonDataAsset = serializedObject.FindProperty("skeletonDataAsset");
|
||||
skinName = serializedObject.FindProperty("skinName");
|
||||
animationName = serializedObject.FindProperty("animationName");
|
||||
loop = serializedObject.FindProperty("loop");
|
||||
timeScale = serializedObject.FindProperty("timeScale");
|
||||
@ -46,6 +47,24 @@ public class SkeletonComponentInspector : Editor {
|
||||
EditorGUILayout.PropertyField(skeletonDataAsset);
|
||||
|
||||
if (component.skeleton != null) {
|
||||
// Skin name.
|
||||
String[] skins = new String[component.skeleton.Data.Skins.Count + 1];
|
||||
int skinIndex = 0;
|
||||
for (int i = 0; i < skins.Length - 1; i++) {
|
||||
String name = component.skeleton.Data.Skins[i].Name;
|
||||
skins[i] = name;
|
||||
if (name == skinName.stringValue) skinIndex = i;
|
||||
}
|
||||
|
||||
EditorGUILayout.BeginHorizontal();
|
||||
EditorGUILayout.LabelField("Skin");
|
||||
EditorGUIUtility.LookLikeControls();
|
||||
skinIndex = EditorGUILayout.Popup(skinIndex, skins);
|
||||
EditorGUIUtility.LookLikeInspector();
|
||||
EditorGUILayout.EndHorizontal();
|
||||
|
||||
skinName.stringValue = skinIndex == 0 ? null : skins[skinIndex];
|
||||
|
||||
// Animation name.
|
||||
String[] animations = new String[component.skeleton.Data.Animations.Count + 1];
|
||||
animations[0] = "<None>";
|
||||
@ -53,8 +72,7 @@ public class SkeletonComponentInspector : Editor {
|
||||
for (int i = 0; i < animations.Length - 1; i++) {
|
||||
String name = component.skeleton.Data.Animations[i].Name;
|
||||
animations[i + 1] = name;
|
||||
if (name == animationName.stringValue)
|
||||
animationIndex = i + 1;
|
||||
if (name == animationName.stringValue) animationIndex = i + 1;
|
||||
}
|
||||
|
||||
EditorGUILayout.BeginHorizontal();
|
||||
@ -75,10 +93,10 @@ public class SkeletonComponentInspector : Editor {
|
||||
|
||||
EditorGUILayout.PropertyField(timeScale);
|
||||
|
||||
if (!Application.isPlaying) {
|
||||
if (serializedObject.ApplyModifiedProperties() ||
|
||||
(Event.current.type == EventType.ValidateCommand && Event.current.commandName == "UndoRedoPerformed")
|
||||
) {
|
||||
if (serializedObject.ApplyModifiedProperties() ||
|
||||
(Event.current.type == EventType.ValidateCommand && Event.current.commandName == "UndoRedoPerformed")
|
||||
) {
|
||||
if (!Application.isPlaying) {
|
||||
component.Clear();
|
||||
component.Update();
|
||||
}
|
||||
|
||||
@ -5,4 +5,3 @@ MonoImporter:
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
|
||||
@ -5,4 +5,3 @@ MonoImporter:
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
|
||||
@ -1,4 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: c6674329008ae4c65a7b7e8f1b2a6523
|
||||
DefaultImporter:
|
||||
userData:
|
||||
|
||||
@ -5,4 +5,3 @@ MonoImporter:
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
|
||||
@ -32,12 +32,14 @@ using Spine;
|
||||
public class SkeletonComponent : MonoBehaviour {
|
||||
public SkeletonDataAsset skeletonDataAsset;
|
||||
public Skeleton skeleton;
|
||||
public String skinName;
|
||||
public String animationName;
|
||||
public bool loop;
|
||||
public float timeScale = 1;
|
||||
public Spine.AnimationState state;
|
||||
private Mesh mesh;
|
||||
private Vector3[] vertices;
|
||||
private Color[] colors;
|
||||
private Vector2[] uvs;
|
||||
private int[] triangles;
|
||||
private int quadCount;
|
||||
@ -80,15 +82,26 @@ public class SkeletonComponent : MonoBehaviour {
|
||||
Initialize();
|
||||
|
||||
// Keep AnimationState in sync with animationName and loop fields.
|
||||
if (animationName == null && state.Animation != null)
|
||||
state.ClearAnimation();
|
||||
else if (state.Animation == null || animationName != state.Animation.Name) {
|
||||
if (animationName == null || animationName.Length == 0) {
|
||||
if (state.Animation != null) state.ClearAnimation();
|
||||
} else if (state.Animation == null || animationName != state.Animation.Name) {
|
||||
Spine.Animation animation = skeleton.Data.FindAnimation(animationName);
|
||||
if (animation != null)
|
||||
state.SetAnimation(animation, loop);
|
||||
}
|
||||
state.Loop = loop;
|
||||
|
||||
// Keep Skeleton in sync with skinName.
|
||||
if (skinName == null || skinName.Length == 0) {
|
||||
if (skeleton.Skin != null) {
|
||||
skeleton.SetSkin((Skin)null);
|
||||
skeleton.SetSlotsToBindPose();
|
||||
}
|
||||
} else if (skeleton.Skin == null || skinName != skeleton.Skin.Name) {
|
||||
skeleton.SetSkin(skinName);
|
||||
skeleton.SetSlotsToBindPose();
|
||||
}
|
||||
|
||||
UpdateAnimation();
|
||||
|
||||
// Count quads.
|
||||
@ -105,12 +118,15 @@ public class SkeletonComponent : MonoBehaviour {
|
||||
if (quadCount != this.quadCount) {
|
||||
this.quadCount = quadCount;
|
||||
vertices = new Vector3[quadCount * 4];
|
||||
colors = new Color[quadCount * 4];
|
||||
uvs = new Vector2[quadCount * 4];
|
||||
triangles = new int[quadCount * 6];
|
||||
mesh.Clear();
|
||||
}
|
||||
|
||||
// Setup mesh.
|
||||
int quadIndex = 0;
|
||||
Color color = new Color();
|
||||
for (int i = 0, n = drawOrder.Count; i < n; i++) {
|
||||
Slot slot = drawOrder[i];
|
||||
Attachment attachment = slot.Attachment;
|
||||
@ -125,18 +141,20 @@ public class SkeletonComponent : MonoBehaviour {
|
||||
vertices[vertexIndex + 2] = new Vector3(regionVertices[RegionAttachment.X2], regionVertices[RegionAttachment.Y2], 0);
|
||||
vertices[vertexIndex + 3] = new Vector3(regionVertices[RegionAttachment.X3], regionVertices[RegionAttachment.Y3], 0);
|
||||
|
||||
AtlasRegion region = regionAttachment.Region;
|
||||
if (region.rotate) {
|
||||
uvs[vertexIndex + 1] = new Vector2(region.u, 1 - region.v2);
|
||||
uvs[vertexIndex + 2] = new Vector2(region.u2, 1 - region.v2);
|
||||
uvs[vertexIndex + 3] = new Vector2(region.u, 1 - region.v);
|
||||
uvs[vertexIndex] = new Vector2(region.u2, 1 - region.v);
|
||||
} else {
|
||||
uvs[vertexIndex] = new Vector2(region.u, 1 - region.v2);
|
||||
uvs[vertexIndex + 1] = new Vector2(region.u2, 1 - region.v2);
|
||||
uvs[vertexIndex + 2] = new Vector2(region.u, 1 - region.v);
|
||||
uvs[vertexIndex + 3] = new Vector2(region.u2, 1 - region.v);
|
||||
}
|
||||
color.r = skeleton.R * slot.R;
|
||||
color.g = skeleton.G * slot.G;
|
||||
color.b = skeleton.B * slot.B;
|
||||
color.a = skeleton.A * slot.A;
|
||||
colors[vertexIndex] = color;
|
||||
colors[vertexIndex + 1] = color;
|
||||
colors[vertexIndex + 2] = color;
|
||||
colors[vertexIndex + 3] = color;
|
||||
|
||||
float[] regionUVs = regionAttachment.UVs;
|
||||
uvs[vertexIndex] = new Vector2(regionUVs[RegionAttachment.X1], 1 - regionUVs[RegionAttachment.Y1]);
|
||||
uvs[vertexIndex + 1] = new Vector2(regionUVs[RegionAttachment.X4], 1 - regionUVs[RegionAttachment.Y4]);
|
||||
uvs[vertexIndex + 2] = new Vector2(regionUVs[RegionAttachment.X2], 1 - regionUVs[RegionAttachment.Y2]);
|
||||
uvs[vertexIndex + 3] = new Vector2(regionUVs[RegionAttachment.X3], 1 - regionUVs[RegionAttachment.Y3]);
|
||||
|
||||
int index = quadIndex * 6;
|
||||
triangles[index] = vertexIndex;
|
||||
@ -150,6 +168,7 @@ public class SkeletonComponent : MonoBehaviour {
|
||||
}
|
||||
}
|
||||
mesh.vertices = vertices;
|
||||
mesh.colors = colors;
|
||||
mesh.uv = uvs;
|
||||
mesh.triangles = triangles;
|
||||
|
||||
|
||||
@ -5,4 +5,3 @@ MonoImporter:
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
|
||||
@ -5,4 +5,3 @@ MonoImporter:
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
|
||||
@ -1,4 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 1b62d1da83172ed4f9bfc9077b196f79
|
||||
DefaultImporter:
|
||||
userData:
|
||||
|
||||
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 0420fbdc5d996d142a6850f8bc69b789
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 04676fb0853784d40a83ea746566d7d9
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: f053f134e4ff2fe489038eabf85706e2
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
@ -98,8 +98,13 @@ namespace Spine {
|
||||
|
||||
region.u = x / (float)page.width;
|
||||
region.v = y / (float)page.height;
|
||||
region.u2 = (x + width) / (float)page.width;
|
||||
region.v2 = (y + height) / (float)page.height;
|
||||
if (region.rotate) {
|
||||
region.u2 = (x + height) / (float)page.width;
|
||||
region.v2 = (y + width) / (float)page.height;
|
||||
} else {
|
||||
region.u2 = (x + width) / (float)page.width;
|
||||
region.v2 = (y + height) / (float)page.height;
|
||||
}
|
||||
region.x = x;
|
||||
region.y = y;
|
||||
region.width = Math.Abs(width);
|
||||
|
||||
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 6e3ac7a5e853f8c418686b97eb793a49
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: eca0339f92705724385840be789d03e3
|
||||
@ -40,7 +40,14 @@ namespace Spine {
|
||||
AtlasRegion region = atlas.FindRegion(name);
|
||||
if (region == null) throw new Exception("Region not found in atlas: " + name + " (" + type + ")");
|
||||
RegionAttachment attachment = new RegionAttachment(name);
|
||||
attachment.Region = region;
|
||||
attachment.Texture = region.page.texture;
|
||||
attachment.SetUVs(region.u, region.v, region.u2, region.v2, 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 attachment;
|
||||
}
|
||||
throw new Exception("Unknown attachment type: " + type);
|
||||
|
||||
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 0c1ff82f1740b034480656d1ea5ba5c9
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 3a9d34b8d423e46439ed489f9088a81a
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: d55032acb28c73c4287a3a500e318215
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: b8cd583653fbdab46a2ed87a0eb729d3
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
@ -45,45 +45,61 @@ namespace Spine {
|
||||
public float Width { get; set; }
|
||||
public float Height { get; set; }
|
||||
|
||||
public Object Texture { get; set; }
|
||||
public float RegionOffsetX { get; set; }
|
||||
public float RegionOffsetY { get; set; } // Pixels stripped from the bottom left, unrotated.
|
||||
public float RegionWidth { get; set; }
|
||||
public float RegionHeight { get; set; } // Unrotated, stripped size.
|
||||
public float RegionOriginalWidth { get; set; }
|
||||
public float RegionOriginalHeight { get; set; } // Unrotated, unstripped size.
|
||||
|
||||
public float[] Offset { get; private set; }
|
||||
public float[] Vertices { get; private set; }
|
||||
public AtlasRegion Region { get; set; }
|
||||
public float[] UVs { get; private set; }
|
||||
|
||||
public RegionAttachment (string name)
|
||||
: base(name) {
|
||||
Offset = new float[8];
|
||||
Vertices = new float[8];
|
||||
UVs = new float[8];
|
||||
ScaleX = 1;
|
||||
ScaleY = 1;
|
||||
}
|
||||
|
||||
public void SetUVs (float u, float v, float u2, float v2, bool rotate) {
|
||||
float[] uvs = UVs;
|
||||
if (rotate) {
|
||||
uvs[X2] = u;
|
||||
uvs[Y2] = v2;
|
||||
uvs[X3] = u;
|
||||
uvs[Y3] = v;
|
||||
uvs[X4] = u2;
|
||||
uvs[Y4] = v;
|
||||
uvs[X1] = u2;
|
||||
uvs[Y1] = v2;
|
||||
} else {
|
||||
uvs[X1] = u;
|
||||
uvs[Y1] = v2;
|
||||
uvs[X2] = u;
|
||||
uvs[Y2] = v;
|
||||
uvs[X3] = u2;
|
||||
uvs[Y3] = v;
|
||||
uvs[X4] = u2;
|
||||
uvs[Y4] = v2;
|
||||
}
|
||||
}
|
||||
|
||||
public void UpdateOffset () {
|
||||
float width = Width;
|
||||
float height = Height;
|
||||
float localX2 = width / 2;
|
||||
float localY2 = height / 2;
|
||||
float localX = -localX2;
|
||||
float localY = -localY2;
|
||||
AtlasRegion region = Region;
|
||||
if (region != null) {
|
||||
if (region.rotate) {
|
||||
localX += region.offsetX / region.originalWidth * height;
|
||||
localY += region.offsetY / region.originalHeight * width;
|
||||
localX2 -= (region.originalWidth - region.offsetX - region.height) / region.originalWidth * width;
|
||||
localY2 -= (region.originalHeight - region.offsetY - region.width) / region.originalHeight * height;
|
||||
} else {
|
||||
localX += region.offsetX / region.originalWidth * width;
|
||||
localY += region.offsetY / region.originalHeight * height;
|
||||
localX2 -= (region.originalWidth - region.offsetX - region.width) / region.originalWidth * width;
|
||||
localY2 -= (region.originalHeight - region.offsetY - region.height) / region.originalHeight * height;
|
||||
}
|
||||
}
|
||||
float scaleX = ScaleX;
|
||||
float scaleY = ScaleY;
|
||||
localX *= scaleX;
|
||||
localY *= scaleY;
|
||||
localX2 *= scaleX;
|
||||
localY2 *= scaleY;
|
||||
float regionScaleX = width / RegionOriginalWidth * scaleX;
|
||||
float regionScaleY = height / RegionOriginalHeight * scaleY;
|
||||
float localX = -width / 2 * scaleX + RegionOffsetX * regionScaleX;
|
||||
float localY = -height / 2 * scaleY + RegionOffsetY * regionScaleY;
|
||||
float localX2 = localX + RegionWidth * regionScaleX;
|
||||
float localY2 = localY + RegionHeight * regionScaleY;
|
||||
float radians = Rotation * (float)Math.PI / 180;
|
||||
float cos = (float)Math.Cos(radians);
|
||||
float sin = (float)Math.Sin(radians);
|
||||
|
||||
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: cf530751ed6f2d94684dd5d3f0a46b32
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 9ac20594bc8a0214bacc799c1a24584b
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 40e05d62889ff8f49a201a4207075ab7
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 543c95fda2aa74849b8bd90a810318a7
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: c3d73fa94450faf4eb0073fa19e30a62
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: db93a39a328e01d479bcd2820c7b1137
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: db9e0e85729911e4c9d3ca5638cd016d
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 3a8af7042d0b3f54cbae97de4504bab7
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 6486acd3c3094b44288f9fc6666aaf65
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: ea1befda235c3cf429acd2a0b095e74b
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
@ -1,4 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: b41395738f68d4fbba8311d333db62b1
|
||||
DefaultImporter:
|
||||
userData:
|
||||
|
||||
@ -9,8 +9,9 @@ Shader "Skeleton" {
|
||||
ZWrite Off
|
||||
Blend One OneMinusSrcAlpha
|
||||
Pass {
|
||||
ColorMaterial AmbientAndDiffuse
|
||||
SetTexture [_MainTex] {
|
||||
combine texture
|
||||
combine texture * primary
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,4 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 1e8a610c9e01c3648bac42585e5fc676
|
||||
ShaderImporter:
|
||||
userData:
|
||||
|
||||
@ -1,4 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: e6712a5a0c05f9f4092f9a3197925e99
|
||||
DefaultImporter:
|
||||
userData:
|
||||
|
||||
2
spine-unity/Assets/examples/Unity 3.5.meta
Normal file
@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 97269dddd903cfd469a75f320a0cef8f
|
||||
2
spine-unity/Assets/examples/Unity 3.5/goblins.meta
Normal file
@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 4e70126bb9873e841b4935b7275730cc
|
||||
@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 618309bc7071d724ca2dbfd70e14feef
|
||||
@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 78ac5e44b15e8a7418ea5313951ea050
|
||||