cocos2d-x updated to 3.1alpha0.

No meshes yet.
This commit is contained in:
NathanSweet 2014-05-08 19:21:50 +02:00
parent 5848973f0b
commit 5c6ebf2c63
43 changed files with 5551 additions and 3485 deletions

View File

@ -1 +1 @@
cocos2d-2.1rc0-x-2.1.2 or later.
cocos2d-x-3.1alpha0 or later.

View File

@ -1,5 +1,3 @@
#include "AppDelegate.h"
#include <vector>
@ -18,58 +16,72 @@ AppDelegate::~AppDelegate () {
}
bool AppDelegate::applicationDidFinishLaunching () {
CCDirector* director = CCDirector::sharedDirector();
// initialize director
auto director = Director::getInstance();
auto glview = director->getOpenGLView();
CCEGLView* view = CCEGLView::sharedOpenGLView();
director->setOpenGLView(view);
view->setDesignResolutionSize(designResolutionSize.width, designResolutionSize.height, kResolutionNoBorder);
// Set the design resolution
#if (CC_TARGET_PLATFORM == CC_PLATFORM_WP8)
// a bug in DirectX 11 level9-x on the device prevents ResolutionPolicy::NO_BORDER from working correctly
glview->setDesignResolutionSize(designResolutionSize.width, designResolutionSize.height, ResolutionPolicy::SHOW_ALL);
#else
glview->setDesignResolutionSize(designResolutionSize.width, designResolutionSize.height, ResolutionPolicy::NO_BORDER);
#endif
Size frameSize = glview->getFrameSize();
vector<string> searchPath;
// In this demo, we select resource according to the frame's height.
// If the resource size is different from design resolution size, you need to set contentScaleFactor.
// We use the ratio of resource's height to the height of design resolution,
// this can make sure that the resource's height could fit for the height of design resolution.
vector<string> searchPath;
CCSize frameSize = view->getFrameSize();
if (frameSize.height > mediumResource.size.height) {
// if the frame's height is larger than the height of medium resource size, select large resource.
searchPath.push_back(largeResource.directory);
director->setContentScaleFactor( //
MIN(largeResource.size.height / designResolutionSize.height, //
largeResource.size.width / designResolutionSize.width));
director->setContentScaleFactor(MIN(largeResource.size.height/designResolutionSize.height, largeResource.size.width/designResolutionSize.width));
} else if (frameSize.height > smallResource.size.height) {
// if the frame's height is larger than the height of small resource size, select medium resource.
searchPath.push_back(mediumResource.directory);
director->setContentScaleFactor( //
MIN(mediumResource.size.height / designResolutionSize.height, //
mediumResource.size.width / designResolutionSize.width));
director->setContentScaleFactor(MIN(mediumResource.size.height/designResolutionSize.height, mediumResource.size.width/designResolutionSize.width));
} else {
// if the frame's height is smaller than the height of medium resource size, select small resource.
searchPath.push_back(smallResource.directory);
director->setContentScaleFactor( //
MIN(smallResource.size.height / designResolutionSize.height, //
smallResource.size.width / designResolutionSize.width));
director->setContentScaleFactor(MIN(smallResource.size.height/designResolutionSize.height, smallResource.size.width/designResolutionSize.width));
}
searchPath.push_back("common");
CCFileUtils::sharedFileUtils()->setSearchPaths(searchPath);
// set searching path
FileUtils::getInstance()->setSearchPaths(searchPath);
// turn on display FPS
director->setDisplayStats(true);
// set FPS. the default value is 1.0/60 if you don't call this
director->setAnimationInterval(1.0 / 60);
director->runWithScene(ExampleLayer::scene());
// create a scene. it's an autorelease object
auto scene = ExampleLayer::scene();
// run
director->runWithScene(scene);
return true;
}
// This function will be called when the app is inactive. When comes a phone call,it's be invoked too
void AppDelegate::applicationDidEnterBackground () {
CCDirector::sharedDirector()->stopAnimation();
Director::getInstance()->stopAnimation();
// if you use SimpleAudioEngine, it must be paused
// SimpleAudioEngine::sharedEngine()->pauseBackgroundMusic();
}
// this function will be called when the app is active again
void AppDelegate::applicationWillEnterForeground () {
CCDirector::sharedDirector()->startAnimation();
Director::getInstance()->startAnimation();
// if you use SimpleAudioEngine, it must resume here
// SimpleAudioEngine::sharedEngine()->resumeBackgroundMusic();
}
}

View File

@ -34,28 +34,28 @@
#define TARGET_DESIGN_RESOLUTION_SIZE DESIGN_RESOLUTION_960x640
typedef struct tagResource {
cocos2d::CCSize size;
cocos2d::Size size;
char directory[100];
} Resource;
static Resource smallResource = {cocos2d::CCSizeMake(480, 320), "iphone"};
static Resource mediumResource = {cocos2d::CCSizeMake(960, 640), "iphone-retina"};
static Resource largeResource = {cocos2d::CCSizeMake(1024, 768), "iphone"};
static Resource extralargeResource = {cocos2d::CCSizeMake(2048, 1536), "iphone-retina"};
static Resource smallResource = {cocos2d::Size(480, 320), "iphone"};
static Resource mediumResource = {cocos2d::Size(960, 640), "iphone-retina"};
static Resource largeResource = {cocos2d::Size(1024, 768), "ipad"};
static Resource extralargeResource = {cocos2d::Size(2048, 1536), "ipad-retina"};
#if (TARGET_DESIGN_RESOLUTION_SIZE == DESIGN_RESOLUTION_480X320)
static cocos2d::CCSize designResolutionSize = cocos2d::CCSizeMake(480, 320);
static cocos2d::CCSize designResolutionSize = cocos2d::Size(480, 320);
#elif (TARGET_DESIGN_RESOLUTION_SIZE == DESIGN_RESOLUTION_960x640)
static cocos2d::CCSize designResolutionSize = cocos2d::CCSizeMake(960, 640);
static cocos2d::CCSize designResolutionSize = cocos2d::Size(960, 640);
#elif (TARGET_DESIGN_RESOLUTION_SIZE == DESIGN_RESOLUTION_1024X768)
static cocos2d::CCSize designResolutionSize = cocos2d::CCSizeMake(1024, 768);
static cocos2d::CCSize designResolutionSize = cocos2d::Size(1024, 768);
#elif (TARGET_DESIGN_RESOLUTION_SIZE == DESIGN_RESOLUTION_2048X1536)
static cocos2d::CCSize designResolutionSize = cocos2d::CCSizeMake(2048, 1536);
static cocos2d::CCSize designResolutionSize = cocos2d::Size(2048, 1536);
#else
#error unknown target design resolution!
#endif
// The font size 24 is designed for small resolution, so we should change it to fit for current design resolution
#define TITLE_FONT_SIZE (cocos2d::CCEGLView::sharedOpenGLView()->getDesignResolutionSize().width / smallResource.size.width * 24)
#define TITLE_FONT_SIZE (cocos2d::Director::getInstance()->getOpenGLView()->getDesignResolutionSize().width / smallResource.size.width * 24)
#endif /* _APPMACROS_H_ */

View File

@ -1,45 +1,67 @@
/******************************************************************************
* Spine Runtimes Software License
* Version 2.1
*
* Copyright (c) 2013, Esoteric Software
* All rights reserved.
*
* You are granted a perpetual, non-exclusive, non-sublicensable and
* non-transferable license to install, execute and perform the Spine Runtimes
* Software (the "Software") solely for internal use. Without the written
* permission of Esoteric Software (typically granted by licensing Spine), you
* may not (a) modify, translate, adapt or otherwise create derivative works,
* improvements of the Software or develop new applications using the Software
* or (b) remove, delete, alter or obscure any trademarks or any copyright,
* trademark, patent or other intellectual property or proprietary rights
* notices on or in the Software, including any copy thereof. Redistributions
* in binary or source form must include this license and terms.
*
* THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
* EVENT SHALL ESOTERIC SOFTARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*****************************************************************************/
#include "ExampleLayer.h"
#include <iostream>
#include <fstream>
#include <string.h>
using namespace cocos2d;
USING_NS_CC;
using namespace spine;
using namespace std;
CCScene* ExampleLayer::scene () {
CCScene *scene = CCScene::create();
Scene* ExampleLayer::scene () {
Scene *scene = Scene::create();
scene->addChild(ExampleLayer::create());
return scene;
}
bool ExampleLayer::init () {
if (!CCLayerColor::initWithColor(ccc4(128,128,128,255))) return false;
skeletonNode = CCSkeletonAnimation::createWithFile("spineboy.json", "spineboy.atlas");
skeletonNode->setMix("walk", "jump", 0.2f);
skeletonNode->setMix("jump", "walk", 0.4f);
skeletonNode->setAnimationListener(this, animationStateEvent_selector(ExampleLayer::animationStateEvent));
skeletonNode->setAnimation(0, "walk", false);
skeletonNode->addAnimation(0, "jump", false);
skeletonNode->addAnimation(0, "walk", true);
skeletonNode->addAnimation(0, "jump", true, 4);
// skeletonNode->addAnimation(1, "drawOrder", true);
if (!LayerColor::initWithColor(Color4B(128, 128, 128, 255))) return false;
skeletonNode = SkeletonAnimation::createWithFile("spineboy.json", "spineboy.atlas", 0.6f);
skeletonNode->setMix("walk", "jump", 0.2f);
skeletonNode->setMix("jump", "run", 0.2f);
skeletonNode->setAnimationListener(this, animationStateEvent_selector(ExampleLayer::animationStateEvent));
// skeletonNode->timeScale = 0.3f;
skeletonNode->debugBones = true;
skeletonNode->update(0);
skeletonNode->runAction(CCRepeatForever::create(CCSequence::create(CCFadeOut::create(1),
CCFadeIn::create(1),
CCDelayTime::create(5),
NULL)));
skeletonNode->setAnimation(0, "walk", true);
skeletonNode->addAnimation(0, "jump", false, 3);
skeletonNode->addAnimation(0, "run", true);
CCSize windowSize = CCDirector::sharedDirector()->getWinSize();
skeletonNode->setPosition(ccp(windowSize.width / 2, 20));
// skeletonNode->addAnimation(1, "test", true);
// skeletonNode->runAction(RepeatForever::create(Sequence::create(FadeOut::create(1), FadeIn::create(1), DelayTime::create(5), NULL)));
Size windowSize = Director::getInstance()->getWinSize();
skeletonNode->setPosition(Vector2(windowSize.width / 2, 20));
addChild(skeletonNode);
scheduleUpdate();
@ -49,25 +71,25 @@ bool ExampleLayer::init () {
void ExampleLayer::update (float deltaTime) {
// Test releasing memory.
// CCDirector::sharedDirector()->replaceScene(ExampleLayer::scene());
// Director::getInstance()->replaceScene(ExampleLayer::scene());
}
void ExampleLayer::animationStateEvent (CCSkeletonAnimation* node, int trackIndex, spEventType type, spEvent* event, int loopCount) {
void ExampleLayer::animationStateEvent (SkeletonAnimation* node, int trackIndex, spEventType type, spEvent* event, int loopCount) {
spTrackEntry* entry = spAnimationState_getCurrent(node->state, trackIndex);
const char* animationName = (entry && entry->animation) ? entry->animation->name : 0;
switch (type) {
case ANIMATION_START:
CCLog("%d start: %s", trackIndex, animationName);
case SP_ANIMATION_START:
log("%d start: %s", trackIndex, animationName);
break;
case ANIMATION_END:
CCLog("%d end: %s", trackIndex, animationName);
case SP_ANIMATION_END:
log("%d end: %s", trackIndex, animationName);
break;
case ANIMATION_COMPLETE:
CCLog("%d complete: %s, %d", trackIndex, animationName, loopCount);
case SP_ANIMATION_COMPLETE:
log("%d complete: %s, %d", trackIndex, animationName, loopCount);
break;
case ANIMATION_EVENT:
CCLog("%d event: %s, %s: %d, %f, %s", trackIndex, animationName, event->data->name, event->intValue, event->floatValue, event->stringValue);
case SP_ANIMATION_EVENT:
log("%d event: %s, %s: %d, %f, %s", trackIndex, animationName, event->data->name, event->intValue, event->floatValue, event->stringValue);
break;
}
fflush(stdout);

View File

@ -1,4 +1,32 @@
/******************************************************************************
* Spine Runtimes Software License
* Version 2.1
*
* Copyright (c) 2013, Esoteric Software
* All rights reserved.
*
* You are granted a perpetual, non-exclusive, non-sublicensable and
* non-transferable license to install, execute and perform the Spine Runtimes
* Software (the "Software") solely for internal use. Without the written
* permission of Esoteric Software (typically granted by licensing Spine), you
* may not (a) modify, translate, adapt or otherwise create derivative works,
* improvements of the Software or develop new applications using the Software
* or (b) remove, delete, alter or obscure any trademarks or any copyright,
* trademark, patent or other intellectual property or proprietary rights
* notices on or in the Software, including any copy thereof. Redistributions
* in binary or source form must include this license and terms.
*
* THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
* EVENT SHALL ESOTERIC SOFTARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*****************************************************************************/
#ifndef _EXAMPLELAYER_H_
#define _EXAMPLELAYER_H_
@ -6,18 +34,18 @@
#include "cocos2d.h"
#include <spine/spine-cocos2dx.h>
class ExampleLayer: public cocos2d::CCLayerColor {
class ExampleLayer: public cocos2d::LayerColor {
public:
static cocos2d::CCScene* scene ();
static cocos2d::Scene* scene ();
virtual bool init ();
virtual void update (float deltaTime);
CREATE_FUNC (ExampleLayer);
private:
spine::CCSkeletonAnimation* skeletonNode;
void animationStateEvent (spine::CCSkeletonAnimation* node, int trackIndex, spEventType type, spEvent* event, int loopCount);
spine::SkeletonAnimation* skeletonNode;
void animationStateEvent (spine::SkeletonAnimation* node, int trackIndex, spEventType type, spEvent* event, int loopCount);
};
#endif // _EXAMPLELAYER_H_

File diff suppressed because it is too large Load Diff

View File

@ -1,499 +0,0 @@
{
"bones": [
{ "name": "root" },
{ "name": "hip", "parent": "root", "x": 0.64, "y": 114.41 },
{ "name": "left upper leg", "parent": "hip", "length": 50.39, "x": 14.45, "y": 2.81, "rotation": -89.09 },
{ "name": "pelvis", "parent": "hip", "x": 1.41, "y": -6.57 },
{ "name": "right upper leg", "parent": "hip", "length": 42.45, "x": -20.07, "y": -6.83, "rotation": -97.49 },
{ "name": "torso", "parent": "hip", "length": 85.82, "x": -6.42, "y": 1.97, "rotation": 93.92 },
{ "name": "left lower leg", "parent": "left upper leg", "length": 49.89, "x": 56.34, "y": 0.98, "rotation": -16.65 },
{ "name": "left shoulder", "parent": "torso", "length": 35.43, "x": 74.04, "y": -20.38, "rotation": -156.96 },
{ "name": "neck", "parent": "torso", "length": 18.38, "x": 81.67, "y": -6.34, "rotation": -1.51 },
{ "name": "right lower leg", "parent": "right upper leg", "length": 58.52, "x": 42.99, "y": -0.61, "rotation": -14.34 },
{ "name": "right shoulder", "parent": "torso", "length": 37.24, "x": 76.02, "y": 18.14, "rotation": 133.88 },
{ "name": "head", "parent": "neck", "length": 68.28, "x": 20.93, "y": 11.59, "rotation": -13.92 },
{ "name": "left arm", "parent": "left shoulder", "length": 35.62, "x": 37.85, "y": -2.34, "rotation": 28.16 },
{ "name": "left foot", "parent": "left lower leg", "length": 46.5, "x": 58.94, "y": -7.61, "rotation": 102.43 },
{ "name": "right arm", "parent": "right shoulder", "length": 36.74, "x": 37.6, "y": 0.31, "rotation": 36.32 },
{ "name": "right foot", "parent": "right lower leg", "length": 45.45, "x": 64.88, "y": 0.04, "rotation": 110.3 },
{ "name": "left hand", "parent": "left arm", "length": 11.52, "x": 35.62, "y": 0.07, "rotation": 2.7 },
{ "name": "right hand", "parent": "right arm", "length": 15.32, "x": 36.9, "y": 0.34, "rotation": 2.35 }
],
"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": "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" },
{ "name": "left upper leg", "bone": "left upper leg", "attachment": "left upper leg" },
{ "name": "neck", "bone": "neck", "attachment": "neck" },
{ "name": "torso", "bone": "torso", "attachment": "torso" },
{ "name": "pelvis", "bone": "pelvis", "attachment": "pelvis" },
{ "name": "right foot", "bone": "right foot", "attachment": "right foot" },
{ "name": "right lower leg", "bone": "right lower leg", "attachment": "right lower leg" },
{ "name": "undie straps", "bone": "pelvis", "attachment": "undie straps" },
{ "name": "undies", "bone": "pelvis", "attachment": "undies" },
{ "name": "right upper leg", "bone": "right upper leg", "attachment": "right upper leg" },
{ "name": "head", "bone": "head", "attachment": "head" },
{ "name": "eyes", "bone": "head" },
{ "name": "right shoulder", "bone": "right shoulder", "attachment": "right shoulder" },
{ "name": "right arm", "bone": "right arm", "attachment": "right arm" },
{ "name": "right hand item", "bone": "right hand", "attachment": "dagger" },
{ "name": "right hand", "bone": "right hand", "attachment": "right hand" }
],
"skins": {
"default": {
"left hand item": {
"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": -21.57, "y": 15.8, "rotation": -8.06, "width": 156, "height": 238 }
}
},
"goblin": {
"neck": {
"neck": { "name": "goblin/neck", "x": 10.1, "y": 0.42, "rotation": -93.69, "width": 36, "height": 41 }
},
"undies": {
"undies": { "name": "goblin/undies", "x": 6.3, "y": 0.12, "rotation": 0.91, "width": 36, "height": 29 }
},
"right hand": {
"right hand": { "name": "goblin/right-hand", "x": 7.88, "y": 2.78, "rotation": 91.96, "width": 36, "height": 37 }
},
"right arm": {
"right arm": { "name": "goblin/right-arm", "x": 16.44, "y": -1.04, "rotation": 94.32, "width": 23, "height": 50 }
},
"head": {
"head": { "name": "goblin/head", "x": 25.73, "y": 2.33, "rotation": -92.29, "width": 103, "height": 66 }
},
"left shoulder": {
"left shoulder": { "name": "goblin/left-shoulder", "x": 15.56, "y": -2.26, "rotation": 62.01, "width": 29, "height": 44 }
},
"left arm": {
"left arm": {
"name": "goblin/left-arm",
"x": 16.7,
"y": -1.69,
"scaleX": 1.057,
"scaleY": 1.057,
"rotation": 33.84,
"width": 37,
"height": 35
}
},
"left hand": {
"left hand": {
"name": "goblin/left-hand",
"x": 3.47,
"y": 3.41,
"scaleX": 0.892,
"scaleY": 0.892,
"rotation": 31.14,
"width": 36,
"height": 41
}
},
"right lower leg": {
"right lower leg": { "name": "goblin/right-lower-leg", "x": 25.68, "y": -3.15, "rotation": 111.83, "width": 36, "height": 76 }
},
"right upper leg": {
"right upper leg": { "name": "goblin/right-upper-leg", "x": 20.35, "y": 1.47, "rotation": 97.49, "width": 34, "height": 63 }
},
"pelvis": {
"pelvis": { "name": "goblin/pelvis", "x": -5.61, "y": 0.76, "width": 62, "height": 43 }
},
"left lower leg": {
"left lower leg": { "name": "goblin/left-lower-leg", "x": 23.58, "y": -2.06, "rotation": 105.75, "width": 33, "height": 70 }
},
"left upper leg": {
"left upper leg": { "name": "goblin/left-upper-leg", "x": 29.68, "y": -3.87, "rotation": 89.09, "width": 33, "height": 73 }
},
"torso": {
"torso": { "name": "goblin/torso", "x": 38.09, "y": -3.87, "rotation": -94.95, "width": 68, "height": 96 }
},
"right shoulder": {
"right shoulder": { "name": "goblin/right-shoulder", "x": 15.68, "y": -1.03, "rotation": 130.65, "width": 39, "height": 45 }
},
"right foot": {
"right foot": { "name": "goblin/right-foot", "x": 23.56, "y": 9.8, "rotation": 1.52, "width": 63, "height": 33 }
},
"left foot": {
"left foot": { "name": "goblin/left-foot", "x": 24.85, "y": 8.74, "rotation": 3.32, "width": 65, "height": 31 }
},
"undie straps": {
"undie straps": { "name": "goblin/undie-straps", "x": -3.87, "y": 13.1, "scaleX": 1.089, "width": 55, "height": 19 }
},
"eyes": {
"eyes closed": { "name": "goblin/eyes-closed", "x": 32.21, "y": -21.27, "rotation": -88.92, "width": 34, "height": 12 }
}
},
"goblingirl": {
"left upper leg": {
"left upper leg": { "name": "goblingirl/left-upper-leg", "x": 30.21, "y": -2.95, "rotation": 89.09, "width": 33, "height": 70 }
},
"left lower leg": {
"left lower leg": { "name": "goblingirl/left-lower-leg", "x": 25.02, "y": -0.6, "rotation": 105.75, "width": 33, "height": 70 }
},
"left foot": {
"left foot": { "name": "goblingirl/left-foot", "x": 25.17, "y": 7.92, "rotation": 3.32, "width": 65, "height": 31 }
},
"right upper leg": {
"right upper leg": { "name": "goblingirl/right-upper-leg", "x": 19.69, "y": 2.13, "rotation": 97.49, "width": 34, "height": 63 }
},
"right lower leg": {
"right lower leg": { "name": "goblingirl/right-lower-leg", "x": 26.15, "y": -3.27, "rotation": 111.83, "width": 36, "height": 76 }
},
"right foot": {
"right foot": { "name": "goblingirl/right-foot", "x": 23.46, "y": 9.66, "rotation": 1.52, "width": 63, "height": 33 }
},
"torso": {
"torso": { "name": "goblingirl/torso", "x": 36.28, "y": -5.14, "rotation": -95.74, "width": 68, "height": 96 }
},
"left shoulder": {
"left shoulder": { "name": "goblingirl/left-shoulder", "x": 19.8, "y": -0.42, "rotation": 61.21, "width": 28, "height": 46 }
},
"left arm": {
"left arm": { "name": "goblingirl/left-arm", "x": 19.64, "y": -2.42, "rotation": 33.05, "width": 37, "height": 35 }
},
"left hand": {
"left hand": {
"name": "goblingirl/left-hand",
"x": 4.34,
"y": 2.39,
"scaleX": 0.896,
"scaleY": 0.896,
"rotation": 30.34,
"width": 35,
"height": 40
}
},
"neck": {
"neck": { "name": "goblingirl/neck", "x": 6.16, "y": -3.14, "rotation": -98.86, "width": 35, "height": 41 }
},
"head": {
"head": { "name": "goblingirl/head", "x": 27.71, "y": -4.32, "rotation": -85.58, "width": 103, "height": 81 }
},
"right shoulder": {
"right shoulder": { "name": "goblingirl/right-shoulder", "x": 14.46, "y": 0.45, "rotation": 129.85, "width": 39, "height": 45 }
},
"right arm": {
"right arm": { "name": "goblingirl/right-arm", "x": 16.85, "y": -0.66, "rotation": 93.52, "width": 28, "height": 50 }
},
"right hand": {
"right hand": { "name": "goblingirl/right-hand", "x": 7.21, "y": 3.43, "rotation": 91.16, "width": 36, "height": 37 }
},
"pelvis": {
"pelvis": { "name": "goblingirl/pelvis", "x": -3.87, "y": 3.18, "width": 62, "height": 43 }
},
"undie straps": {
"undie straps": { "name": "goblingirl/undie-straps", "x": -1.51, "y": 14.18, "width": 55, "height": 19 }
},
"undies": {
"undies": { "name": "goblingirl/undies", "x": 5.4, "y": 1.7, "width": 36, "height": 29 }
},
"eyes": {
"eyes closed": { "name": "goblingirl/eyes-closed", "x": 28, "y": -25.54, "rotation": -87.04, "width": 37, "height": 21 }
}
}
},
"animations": {
"walk": {
"bones": {
"left upper leg": {
"rotate": [
{ "time": 0, "angle": -26.55 },
{ "time": 0.1333, "angle": -8.78 },
{ "time": 0.2333, "angle": 9.51 },
{ "time": 0.3666, "angle": 30.74 },
{ "time": 0.5, "angle": 25.33 },
{ "time": 0.6333, "angle": 26.11 },
{ "time": 0.7333, "angle": -7.7 },
{ "time": 0.8666, "angle": -21.19 },
{ "time": 1, "angle": -26.55 }
],
"translate": [
{ "time": 0, "x": -1.32, "y": 1.7 },
{ "time": 0.3666, "x": -0.06, "y": 2.42 },
{ "time": 1, "x": -1.32, "y": 1.7 }
]
},
"right upper leg": {
"rotate": [
{ "time": 0, "angle": 42.45 },
{ "time": 0.1333, "angle": 52.1 },
{ "time": 0.2333, "angle": 8.53 },
{ "time": 0.5, "angle": -16.93 },
{ "time": 0.6333, "angle": 1.89 },
{
"time": 0.7333,
"angle": 28.06,
"curve": [ 0.462, 0.11, 1, 1 ]
},
{
"time": 0.8666,
"angle": 58.68,
"curve": [ 0.5, 0.02, 1, 1 ]
},
{ "time": 1, "angle": 42.45 }
],
"translate": [
{ "time": 0, "x": 6.23, "y": 0 },
{ "time": 0.2333, "x": 2.14, "y": 2.4 },
{ "time": 0.5, "x": 2.44, "y": 4.8 },
{ "time": 1, "x": 6.23, "y": 0 }
]
},
"left lower leg": {
"rotate": [
{ "time": 0, "angle": -22.98 },
{ "time": 0.1333, "angle": -63.5 },
{ "time": 0.2333, "angle": -73.76 },
{ "time": 0.5, "angle": 5.11 },
{ "time": 0.6333, "angle": -28.29 },
{ "time": 0.7333, "angle": 4.08 },
{ "time": 0.8666, "angle": 3.53 },
{ "time": 1, "angle": -22.98 }
],
"translate": [
{ "time": 0, "x": 0, "y": 0 },
{ "time": 0.2333, "x": 2.55, "y": -0.47 },
{ "time": 0.5, "x": 0, "y": 0, "curve": "stepped" },
{ "time": 1, "x": 0, "y": 0 }
]
},
"left foot": {
"rotate": [
{ "time": 0, "angle": -3.69 },
{ "time": 0.1333, "angle": -10.42 },
{ "time": 0.2333, "angle": -5.01 },
{ "time": 0.3666, "angle": 3.87 },
{ "time": 0.5, "angle": -3.87 },
{ "time": 0.6333, "angle": 2.78 },
{ "time": 0.7333, "angle": 1.68 },
{ "time": 0.8666, "angle": -8.54 },
{ "time": 1, "angle": -3.69 }
]
},
"right shoulder": {
"rotate": [
{
"time": 0,
"angle": 5.29,
"curve": [ 0.264, 0, 0.75, 1 ]
},
{ "time": 0.6333, "angle": 6.65 },
{ "time": 1, "angle": 5.29 }
]
},
"right arm": {
"rotate": [
{
"time": 0,
"angle": -4.02,
"curve": [ 0.267, 0, 0.804, 0.99 ]
},
{
"time": 0.6333,
"angle": 19.78,
"curve": [ 0.307, 0, 0.787, 0.99 ]
},
{ "time": 1, "angle": -4.02 }
]
},
"right hand": {
"rotate": [
{ "time": 0, "angle": 8.98 },
{ "time": 0.6333, "angle": 0.51 },
{ "time": 1, "angle": 8.98 }
]
},
"left shoulder": {
"rotate": [
{
"time": 0,
"angle": 6.25,
"curve": [ 0.339, 0, 0.683, 1 ]
},
{
"time": 0.5,
"angle": -11.78,
"curve": [ 0.281, 0, 0.686, 0.99 ]
},
{ "time": 1, "angle": 6.25 }
],
"translate": [
{ "time": 0, "x": 1.15, "y": 0.23 }
]
},
"left hand": {
"rotate": [
{
"time": 0,
"angle": -21.23,
"curve": [ 0.295, 0, 0.755, 0.98 ]
},
{
"time": 0.5,
"angle": -27.28,
"curve": [ 0.241, 0, 0.75, 0.97 ]
},
{ "time": 1, "angle": -21.23 }
]
},
"left arm": {
"rotate": [
{
"time": 0,
"angle": 28.37,
"curve": [ 0.339, 0, 0.683, 1 ]
},
{
"time": 0.5,
"angle": 60.09,
"curve": [ 0.281, 0, 0.686, 0.99 ]
},
{ "time": 1, "angle": 28.37 }
]
},
"torso": {
"rotate": [
{ "time": 0, "angle": -10.28 },
{
"time": 0.1333,
"angle": -15.38,
"curve": [ 0.545, 0, 0.818, 1 ]
},
{
"time": 0.3666,
"angle": -9.78,
"curve": [ 0.58, 0.17, 0.669, 0.99 ]
},
{
"time": 0.6333,
"angle": -15.75,
"curve": [ 0.235, 0.01, 0.795, 1 ]
},
{
"time": 0.8666,
"angle": -7.06,
"curve": [ 0.209, 0, 0.816, 0.98 ]
},
{ "time": 1, "angle": -10.28 }
],
"translate": [
{ "time": 0, "x": -1.29, "y": 1.68 }
]
},
"right foot": {
"rotate": [
{ "time": 0, "angle": -5.25 },
{ "time": 0.2333, "angle": -1.91 },
{ "time": 0.3666, "angle": -6.45 },
{ "time": 0.5, "angle": -5.39 },
{ "time": 0.7333, "angle": -11.68 },
{ "time": 0.8666, "angle": 0.46 },
{ "time": 1, "angle": -5.25 }
]
},
"right lower leg": {
"rotate": [
{
"time": 0,
"angle": -3.39,
"curve": [ 0.316, 0.01, 0.741, 0.98 ]
},
{
"time": 0.1333,
"angle": -45.53,
"curve": [ 0.229, 0, 0.738, 0.97 ]
},
{ "time": 0.2333, "angle": -4.83 },
{ "time": 0.5, "angle": -19.53 },
{ "time": 0.6333, "angle": -64.8 },
{
"time": 0.7333,
"angle": -82.56,
"curve": [ 0.557, 0.18, 1, 1 ]
},
{ "time": 1, "angle": -3.39 }
],
"translate": [
{ "time": 0, "x": 0, "y": 0, "curve": "stepped" },
{ "time": 0.5, "x": 0, "y": 0 },
{ "time": 0.6333, "x": 2.18, "y": 0.21 },
{ "time": 1, "x": 0, "y": 0 }
]
},
"hip": {
"rotate": [
{ "time": 0, "angle": 0, "curve": "stepped" },
{ "time": 1, "angle": 0 }
],
"translate": [
{ "time": 0, "x": 0, "y": -4.16 },
{
"time": 0.1333,
"x": 0,
"y": -7.05,
"curve": [ 0.359, 0.47, 0.646, 0.74 ]
},
{ "time": 0.3666, "x": 0, "y": 6.78 },
{ "time": 0.5, "x": 0, "y": -6.13 },
{
"time": 0.6333,
"x": 0,
"y": -7.05,
"curve": [ 0.359, 0.47, 0.646, 0.74 ]
},
{ "time": 0.8666, "x": 0, "y": 6.78 },
{ "time": 1, "x": 0, "y": -4.16 }
]
},
"neck": {
"rotate": [
{ "time": 0, "angle": 3.6 },
{ "time": 0.1333, "angle": 17.49 },
{ "time": 0.2333, "angle": 6.1 },
{ "time": 0.3666, "angle": 3.45 },
{ "time": 0.5, "angle": 5.17 },
{ "time": 0.6333, "angle": 18.36 },
{ "time": 0.7333, "angle": 6.09 },
{ "time": 0.8666, "angle": 2.28 },
{ "time": 1, "angle": 3.6 }
]
},
"head": {
"rotate": [
{
"time": 0,
"angle": 3.6,
"curve": [ 0, 0, 0.704, 1.17 ]
},
{ "time": 0.1333, "angle": -0.2 },
{ "time": 0.2333, "angle": 6.1 },
{ "time": 0.3666, "angle": 3.45 },
{
"time": 0.5,
"angle": 5.17,
"curve": [ 0, 0, 0.704, 1.61 ]
},
{ "time": 0.6666, "angle": 1.1 },
{ "time": 0.7333, "angle": 6.09 },
{ "time": 0.8666, "angle": 2.28 },
{ "time": 1, "angle": 3.6 }
]
}
},
"slots": {
"eyes": {
"attachment": [
{ "time": 0.7, "name": "eyes closed" },
{ "time": 0.8, "name": null }
]
}
}
}
}
}

File diff suppressed because it is too large Load Diff

View File

@ -1,285 +1,292 @@
goblins.png
goblins-ffd.png
format: RGBA8888
filter: Linear,Linear
repeat: none
spear
rotate: true
xy: 2, 104
size: 22, 368
orig: 22, 368
dagger
rotate: false
xy: 2, 28
size: 26, 108
orig: 26, 108
offset: 0, 0
index: -1
goblingirl/head
goblin/eyes-closed
rotate: false
xy: 2, 23
size: 103, 79
orig: 103, 81
offset: 0, 2
xy: 137, 29
size: 34, 12
orig: 34, 12
offset: 0, 0
index: -1
goblin/head
rotate: false
xy: 107, 38
size: 103, 64
xy: 26, 357
size: 103, 66
orig: 103, 66
offset: 0, 0
index: -1
goblin/torso
rotate: true
xy: 212, 34
size: 68, 96
orig: 68, 96
offset: 0, 0
index: -1
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
goblin/left-arm
rotate: false
xy: 2, 2
size: 55, 19
orig: 55, 19
offset: 0, 0
index: -1
dagger
rotate: true
xy: 372, 100
size: 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: true
xy: 580, 91
size: 35, 76
orig: 36, 76
offset: 1, 0
index: -1
goblingirl/right-lower-leg
rotate: true
xy: 658, 91
size: 35, 76
orig: 36, 76
offset: 1, 0
index: -1
goblin/left-upper-leg
rotate: true
xy: 736, 93
size: 33, 73
orig: 33, 73
offset: 0, 0
index: -1
goblin/pelvis
rotate: true
xy: 310, 40
size: 62, 43
orig: 62, 43
offset: 0, 0
index: -1
goblin/left-hand
rotate: true
xy: 316, 2
size: 36, 41
orig: 36, 41
offset: 0, 0
index: -1
goblingirl/left-upper-leg
rotate: true
xy: 811, 93
size: 33, 70
orig: 33, 70
xy: 30, 28
size: 37, 35
orig: 37, 35
offset: 0, 0
index: -1
goblin/left-foot
rotate: false
xy: 883, 95
xy: 134, 260
size: 65, 31
orig: 65, 31
offset: 0, 0
index: -1
goblingirl/left-foot
goblin/left-hand
rotate: false
xy: 950, 95
size: 65, 31
orig: 65, 31
offset: 0, 0
index: -1
goblin/right-foot
rotate: false
xy: 580, 56
size: 63, 33
orig: 63, 33
offset: 0, 0
index: -1
goblingirl/right-foot
rotate: false
xy: 645, 56
size: 63, 33
orig: 63, 33
offset: 0, 0
index: -1
goblingirl/pelvis
rotate: false
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: 359, 11
size: 39, 42
orig: 39, 45
offset: 0, 0
index: -1
goblingirl/undie-straps
rotate: false
xy: 416, 43
size: 55, 19
orig: 55, 19
offset: 0, 0
index: -1
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: 481, 17
xy: 69, 25
size: 36, 41
orig: 36, 41
offset: 0, 0
index: -1
goblingirl/left-hand
goblin/left-lower-leg
rotate: false
xy: 519, 18
size: 35, 40
orig: 35, 40
offset: 0, 0
index: -1
goblingirl/right-arm
rotate: false
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
xy: 134, 293
size: 33, 70
orig: 33, 70
offset: 0, 0
index: -1
goblin/left-shoulder
rotate: true
xy: 615, 25
rotate: false
xy: 137, 43
size: 29, 44
orig: 29, 44
offset: 0, 0
index: -1
goblingirl/left-shoulder
rotate: true
xy: 661, 26
size: 28, 45
orig: 28, 46
offset: 0, 1
index: -1
goblingirl/left-arm
goblin/left-upper-leg
rotate: false
xy: 710, 54
size: 37, 35
orig: 37, 35
xy: 30, 65
size: 33, 73
orig: 33, 73
offset: 0, 0
index: -1
goblin/neck
rotate: false
xy: 201, 387
size: 36, 41
orig: 36, 41
offset: 0, 0
index: -1
goblin/pelvis
rotate: false
xy: 26, 140
size: 62, 43
orig: 62, 43
offset: 0, 0
index: -1
goblin/right-arm
rotate: false
xy: 708, 2
xy: 171, 84
size: 23, 50
orig: 23, 50
offset: 0, 0
index: -1
goblin/right-foot
rotate: false
xy: 134, 225
size: 63, 33
orig: 63, 33
offset: 0, 0
index: -1
goblin/right-hand
rotate: false
xy: 749, 54
xy: 204, 258
size: 36, 37
orig: 36, 37
offset: 0, 0
index: -1
goblingirl/right-hand
goblin/right-lower-leg
rotate: false
xy: 733, 15
size: 35, 37
orig: 36, 37
offset: 1, 0
xy: 201, 430
size: 36, 76
orig: 36, 76
offset: 0, 0
index: -1
goblin/right-shoulder
rotate: false
xy: 130, 89
size: 39, 45
orig: 39, 45
offset: 0, 0
index: -1
goblin/right-upper-leg
rotate: false
xy: 98, 214
size: 34, 63
orig: 34, 63
offset: 0, 0
index: -1
goblin/torso
rotate: false
xy: 131, 410
size: 68, 96
orig: 68, 96
offset: 0, 0
index: -1
goblin/undie-straps
rotate: false
xy: 2, 7
size: 55, 19
orig: 55, 19
offset: 0, 0
index: -1
goblin/undies
rotate: false
xy: 787, 62
size: 36, 29
orig: 36, 29
offset: 0, 0
index: -1
goblingirl/undies
rotate: false
xy: 825, 62
xy: 199, 227
size: 36, 29
orig: 36, 29
offset: 0, 0
index: -1
goblingirl/eyes-closed
rotate: false
xy: 59, 6
size: 37, 15
xy: 59, 2
size: 37, 21
orig: 37, 21
offset: 0, 0
index: -1
goblin/eyes-closed
rotate: true
xy: 770, 18
size: 34, 12
orig: 34, 12
goblingirl/head
rotate: false
xy: 26, 425
size: 103, 81
orig: 103, 81
offset: 0, 0
index: -1
goblingirl/left-arm
rotate: false
xy: 201, 190
size: 37, 35
orig: 37, 35
offset: 0, 0
index: -1
goblingirl/left-foot
rotate: false
xy: 134, 192
size: 65, 31
orig: 65, 31
offset: 0, 0
index: -1
goblingirl/left-hand
rotate: false
xy: 196, 109
size: 35, 40
orig: 35, 40
offset: 0, 0
index: -1
goblingirl/left-lower-leg
rotate: false
xy: 169, 293
size: 33, 70
orig: 33, 70
offset: 0, 0
index: -1
goblingirl/left-shoulder
rotate: false
xy: 107, 30
size: 28, 46
orig: 28, 46
offset: 0, 0
index: -1
goblingirl/left-upper-leg
rotate: false
xy: 65, 68
size: 33, 70
orig: 33, 70
offset: 0, 0
index: -1
goblingirl/neck
rotate: false
xy: 204, 297
size: 35, 41
orig: 35, 41
offset: 0, 0
index: -1
goblingirl/pelvis
rotate: false
xy: 131, 365
size: 62, 43
orig: 62, 43
offset: 0, 0
index: -1
goblingirl/right-arm
rotate: false
xy: 100, 97
size: 28, 50
orig: 28, 50
offset: 0, 0
index: -1
goblingirl/right-foot
rotate: false
xy: 134, 157
size: 63, 33
orig: 63, 33
offset: 0, 0
index: -1
goblingirl/right-hand
rotate: false
xy: 199, 151
size: 36, 37
orig: 36, 37
offset: 0, 0
index: -1
goblingirl/right-lower-leg
rotate: false
xy: 96, 279
size: 36, 76
orig: 36, 76
offset: 0, 0
index: -1
goblingirl/right-shoulder
rotate: false
xy: 204, 340
size: 39, 45
orig: 39, 45
offset: 0, 0
index: -1
goblingirl/right-upper-leg
rotate: false
xy: 98, 149
size: 34, 63
orig: 34, 63
offset: 0, 0
index: -1
goblingirl/torso
rotate: false
xy: 26, 259
size: 68, 96
orig: 68, 96
offset: 0, 0
index: -1
goblingirl/undie-straps
rotate: false
xy: 134, 136
size: 55, 19
orig: 55, 19
offset: 0, 0
index: -1
goblingirl/undies
rotate: false
xy: 196, 78
size: 36, 29
orig: 36, 29
offset: 0, 0
index: -1
shield
rotate: false
xy: 26, 185
size: 70, 72
orig: 70, 72
offset: 0, 0
index: -1
spear
rotate: false
xy: 2, 138
size: 22, 368
orig: 22, 368
offset: 0, 0
index: -1

Binary file not shown.

After

Width:  |  Height:  |  Size: 160 KiB

View File

@ -0,0 +1,194 @@
spineboy.png
format: RGBA8888
filter: Linear,Linear
repeat: none
eye_indifferent
rotate: true
xy: 389, 5
size: 56, 53
orig: 56, 53
offset: 0, 0
index: -1
eye_surprised
rotate: false
xy: 580, 34
size: 56, 53
orig: 56, 53
offset: 0, 0
index: -1
front_bracer
rotate: false
xy: 732, 85
size: 35, 48
orig: 35, 48
offset: 0, 0
index: -1
front_fist_closed
rotate: false
xy: 556, 91
size: 45, 49
orig: 45, 49
offset: 0, 0
index: -1
front_fist_open
rotate: false
xy: 668, 32
size: 52, 52
orig: 52, 52
offset: 0, 0
index: -1
front_foot
rotate: false
xy: 924, 201
size: 76, 41
orig: 76, 41
offset: 0, 0
index: -1
front_foot_bend1
rotate: false
xy: 845, 200
size: 77, 42
orig: 77, 42
offset: 0, 0
index: -1
front_foot_bend2
rotate: false
xy: 778, 186
size: 65, 56
orig: 65, 56
offset: 0, 0
index: -1
front_shin
rotate: true
xy: 444, 91
size: 49, 110
orig: 49, 110
offset: 0, 0
index: -1
front_thigh
rotate: true
xy: 603, 89
size: 29, 67
orig: 29, 67
offset: 0, 0
index: -1
front_upper_arm
rotate: true
xy: 672, 86
size: 32, 58
orig: 32, 58
offset: 0, 0
index: -1
goggles
rotate: false
xy: 444, 142
size: 157, 100
orig: 157, 100
offset: 0, 0
index: -1
gun
rotate: false
xy: 603, 120
size: 126, 122
orig: 126, 122
offset: 0, 0
index: -1
head
rotate: false
xy: 279, 63
size: 163, 179
orig: 163, 179
offset: 0, 0
index: -1
mouth_grind
rotate: false
xy: 845, 163
size: 56, 35
orig: 56, 35
offset: 0, 0
index: -1
mouth_oooo
rotate: false
xy: 842, 126
size: 56, 35
orig: 56, 35
offset: 0, 0
index: -1
mouth_smile
rotate: false
xy: 769, 97
size: 56, 35
orig: 56, 35
offset: 0, 0
index: -1
muzzle
rotate: false
xy: 2, 2
size: 275, 240
orig: 277, 240
offset: 0, 0
index: -1
neck
rotate: false
xy: 903, 173
size: 22, 25
orig: 22, 25
offset: 0, 0
index: -1
rear_bracer
rotate: false
xy: 722, 40
size: 34, 43
orig: 34, 43
offset: 0, 0
index: -1
rear_foot
rotate: false
xy: 444, 11
size: 68, 36
orig: 68, 36
offset: 0, 0
index: -1
rear_foot_bend1
rotate: false
xy: 444, 49
size: 70, 40
orig: 70, 40
offset: 0, 0
index: -1
rear_foot_bend2
rotate: false
xy: 778, 134
size: 62, 50
orig: 62, 50
offset: 0, 0
index: -1
rear_shin
rotate: false
xy: 731, 135
size: 45, 107
orig: 45, 107
offset: 0, 0
index: -1
rear_thigh
rotate: true
xy: 516, 50
size: 39, 62
orig: 39, 62
offset: 0, 0
index: -1
rear_upper_arm
rotate: false
xy: 638, 35
size: 28, 52
orig: 28, 52
offset: 0, 0
index: -1
torso
rotate: true
xy: 279, 2
size: 59, 108
orig: 59, 108
offset: 0, 0
index: -1

Binary file not shown.

After

Width:  |  Height:  |  Size: 239 KiB

View File

@ -1,285 +1,292 @@
goblins.png
goblins-ffd.png
format: RGBA8888
filter: Linear,Linear
repeat: none
spear
rotate: true
xy: 2, 104
size: 22, 368
orig: 22, 368
dagger
rotate: false
xy: 2, 28
size: 26, 108
orig: 26, 108
offset: 0, 0
index: -1
goblingirl/head
goblin/eyes-closed
rotate: false
xy: 2, 23
size: 103, 79
orig: 103, 81
offset: 0, 2
xy: 137, 29
size: 34, 12
orig: 34, 12
offset: 0, 0
index: -1
goblin/head
rotate: false
xy: 107, 38
size: 103, 64
xy: 26, 357
size: 103, 66
orig: 103, 66
offset: 0, 0
index: -1
goblin/torso
rotate: true
xy: 212, 34
size: 68, 96
orig: 68, 96
offset: 0, 0
index: -1
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
goblin/left-arm
rotate: false
xy: 2, 2
size: 55, 19
orig: 55, 19
offset: 0, 0
index: -1
dagger
rotate: true
xy: 372, 100
size: 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: true
xy: 580, 91
size: 35, 76
orig: 36, 76
offset: 1, 0
index: -1
goblingirl/right-lower-leg
rotate: true
xy: 658, 91
size: 35, 76
orig: 36, 76
offset: 1, 0
index: -1
goblin/left-upper-leg
rotate: true
xy: 736, 93
size: 33, 73
orig: 33, 73
offset: 0, 0
index: -1
goblin/pelvis
rotate: true
xy: 310, 40
size: 62, 43
orig: 62, 43
offset: 0, 0
index: -1
goblin/left-hand
rotate: true
xy: 316, 2
size: 36, 41
orig: 36, 41
offset: 0, 0
index: -1
goblingirl/left-upper-leg
rotate: true
xy: 811, 93
size: 33, 70
orig: 33, 70
xy: 30, 28
size: 37, 35
orig: 37, 35
offset: 0, 0
index: -1
goblin/left-foot
rotate: false
xy: 883, 95
xy: 134, 260
size: 65, 31
orig: 65, 31
offset: 0, 0
index: -1
goblingirl/left-foot
goblin/left-hand
rotate: false
xy: 950, 95
size: 65, 31
orig: 65, 31
offset: 0, 0
index: -1
goblin/right-foot
rotate: false
xy: 580, 56
size: 63, 33
orig: 63, 33
offset: 0, 0
index: -1
goblingirl/right-foot
rotate: false
xy: 645, 56
size: 63, 33
orig: 63, 33
offset: 0, 0
index: -1
goblingirl/pelvis
rotate: false
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: 359, 11
size: 39, 42
orig: 39, 45
offset: 0, 0
index: -1
goblingirl/undie-straps
rotate: false
xy: 416, 43
size: 55, 19
orig: 55, 19
offset: 0, 0
index: -1
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: 481, 17
xy: 69, 25
size: 36, 41
orig: 36, 41
offset: 0, 0
index: -1
goblingirl/left-hand
goblin/left-lower-leg
rotate: false
xy: 519, 18
size: 35, 40
orig: 35, 40
offset: 0, 0
index: -1
goblingirl/right-arm
rotate: false
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
xy: 134, 293
size: 33, 70
orig: 33, 70
offset: 0, 0
index: -1
goblin/left-shoulder
rotate: true
xy: 615, 25
rotate: false
xy: 137, 43
size: 29, 44
orig: 29, 44
offset: 0, 0
index: -1
goblingirl/left-shoulder
rotate: true
xy: 661, 26
size: 28, 45
orig: 28, 46
offset: 0, 1
index: -1
goblingirl/left-arm
goblin/left-upper-leg
rotate: false
xy: 710, 54
size: 37, 35
orig: 37, 35
xy: 30, 65
size: 33, 73
orig: 33, 73
offset: 0, 0
index: -1
goblin/neck
rotate: false
xy: 201, 387
size: 36, 41
orig: 36, 41
offset: 0, 0
index: -1
goblin/pelvis
rotate: false
xy: 26, 140
size: 62, 43
orig: 62, 43
offset: 0, 0
index: -1
goblin/right-arm
rotate: false
xy: 708, 2
xy: 171, 84
size: 23, 50
orig: 23, 50
offset: 0, 0
index: -1
goblin/right-foot
rotate: false
xy: 134, 225
size: 63, 33
orig: 63, 33
offset: 0, 0
index: -1
goblin/right-hand
rotate: false
xy: 749, 54
xy: 204, 258
size: 36, 37
orig: 36, 37
offset: 0, 0
index: -1
goblingirl/right-hand
goblin/right-lower-leg
rotate: false
xy: 733, 15
size: 35, 37
orig: 36, 37
offset: 1, 0
xy: 201, 430
size: 36, 76
orig: 36, 76
offset: 0, 0
index: -1
goblin/right-shoulder
rotate: false
xy: 130, 89
size: 39, 45
orig: 39, 45
offset: 0, 0
index: -1
goblin/right-upper-leg
rotate: false
xy: 98, 214
size: 34, 63
orig: 34, 63
offset: 0, 0
index: -1
goblin/torso
rotate: false
xy: 131, 410
size: 68, 96
orig: 68, 96
offset: 0, 0
index: -1
goblin/undie-straps
rotate: false
xy: 2, 7
size: 55, 19
orig: 55, 19
offset: 0, 0
index: -1
goblin/undies
rotate: false
xy: 787, 62
size: 36, 29
orig: 36, 29
offset: 0, 0
index: -1
goblingirl/undies
rotate: false
xy: 825, 62
xy: 199, 227
size: 36, 29
orig: 36, 29
offset: 0, 0
index: -1
goblingirl/eyes-closed
rotate: false
xy: 59, 6
size: 37, 15
xy: 59, 2
size: 37, 21
orig: 37, 21
offset: 0, 0
index: -1
goblin/eyes-closed
rotate: true
xy: 770, 18
size: 34, 12
orig: 34, 12
goblingirl/head
rotate: false
xy: 26, 425
size: 103, 81
orig: 103, 81
offset: 0, 0
index: -1
goblingirl/left-arm
rotate: false
xy: 201, 190
size: 37, 35
orig: 37, 35
offset: 0, 0
index: -1
goblingirl/left-foot
rotate: false
xy: 134, 192
size: 65, 31
orig: 65, 31
offset: 0, 0
index: -1
goblingirl/left-hand
rotate: false
xy: 196, 109
size: 35, 40
orig: 35, 40
offset: 0, 0
index: -1
goblingirl/left-lower-leg
rotate: false
xy: 169, 293
size: 33, 70
orig: 33, 70
offset: 0, 0
index: -1
goblingirl/left-shoulder
rotate: false
xy: 107, 30
size: 28, 46
orig: 28, 46
offset: 0, 0
index: -1
goblingirl/left-upper-leg
rotate: false
xy: 65, 68
size: 33, 70
orig: 33, 70
offset: 0, 0
index: -1
goblingirl/neck
rotate: false
xy: 204, 297
size: 35, 41
orig: 35, 41
offset: 0, 0
index: -1
goblingirl/pelvis
rotate: false
xy: 131, 365
size: 62, 43
orig: 62, 43
offset: 0, 0
index: -1
goblingirl/right-arm
rotate: false
xy: 100, 97
size: 28, 50
orig: 28, 50
offset: 0, 0
index: -1
goblingirl/right-foot
rotate: false
xy: 134, 157
size: 63, 33
orig: 63, 33
offset: 0, 0
index: -1
goblingirl/right-hand
rotate: false
xy: 199, 151
size: 36, 37
orig: 36, 37
offset: 0, 0
index: -1
goblingirl/right-lower-leg
rotate: false
xy: 96, 279
size: 36, 76
orig: 36, 76
offset: 0, 0
index: -1
goblingirl/right-shoulder
rotate: false
xy: 204, 340
size: 39, 45
orig: 39, 45
offset: 0, 0
index: -1
goblingirl/right-upper-leg
rotate: false
xy: 98, 149
size: 34, 63
orig: 34, 63
offset: 0, 0
index: -1
goblingirl/torso
rotate: false
xy: 26, 259
size: 68, 96
orig: 68, 96
offset: 0, 0
index: -1
goblingirl/undie-straps
rotate: false
xy: 134, 136
size: 55, 19
orig: 55, 19
offset: 0, 0
index: -1
goblingirl/undies
rotate: false
xy: 196, 78
size: 36, 29
orig: 36, 29
offset: 0, 0
index: -1
shield
rotate: false
xy: 26, 185
size: 70, 72
orig: 70, 72
offset: 0, 0
index: -1
spear
rotate: false
xy: 2, 138
size: 22, 368
orig: 22, 368
offset: 0, 0
index: -1

Binary file not shown.

After

Width:  |  Height:  |  Size: 160 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 144 KiB

View File

@ -3,164 +3,192 @@ spineboy.png
format: RGBA8888
filter: Linear,Linear
repeat: none
eye_indifferent
rotate: true
xy: 389, 5
size: 56, 53
orig: 56, 53
offset: 0, 0
index: -1
eye_surprised
rotate: false
xy: 580, 34
size: 56, 53
orig: 56, 53
offset: 0, 0
index: -1
front_bracer
rotate: false
xy: 732, 85
size: 35, 48
orig: 35, 48
offset: 0, 0
index: -1
front_fist_closed
rotate: false
xy: 556, 91
size: 45, 49
orig: 45, 49
offset: 0, 0
index: -1
front_fist_open
rotate: false
xy: 668, 32
size: 52, 52
orig: 52, 52
offset: 0, 0
index: -1
front_foot
rotate: false
xy: 924, 201
size: 76, 41
orig: 76, 41
offset: 0, 0
index: -1
front_foot_bend1
rotate: false
xy: 845, 200
size: 77, 42
orig: 77, 42
offset: 0, 0
index: -1
front_foot_bend2
rotate: false
xy: 778, 186
size: 65, 56
orig: 65, 56
offset: 0, 0
index: -1
front_shin
rotate: true
xy: 444, 91
size: 49, 110
orig: 49, 110
offset: 0, 0
index: -1
front_thigh
rotate: true
xy: 603, 89
size: 29, 67
orig: 29, 67
offset: 0, 0
index: -1
front_upper_arm
rotate: true
xy: 672, 86
size: 32, 58
orig: 32, 58
offset: 0, 0
index: -1
goggles
rotate: false
xy: 444, 142
size: 157, 100
orig: 157, 100
offset: 0, 0
index: -1
gun
rotate: false
xy: 603, 120
size: 126, 122
orig: 126, 122
offset: 0, 0
index: -1
head
rotate: false
xy: 1, 122
size: 121, 132
orig: 121, 132
xy: 279, 63
size: 163, 179
orig: 163, 179
offset: 0, 0
index: -1
torso
mouth_grind
rotate: false
xy: 1, 28
size: 68, 92
orig: 68, 92
xy: 845, 163
size: 56, 35
orig: 56, 35
offset: 0, 0
index: -1
left-pant-bottom
mouth_oooo
rotate: false
xy: 1, 4
size: 44, 22
orig: 44, 22
xy: 842, 126
size: 56, 35
orig: 56, 35
offset: 0, 0
index: -1
right-pant-bottom
mouth_smile
rotate: false
xy: 47, 8
size: 46, 18
orig: 46, 18
xy: 769, 97
size: 56, 35
orig: 56, 35
offset: 0, 0
index: -1
right-upper-leg
muzzle
rotate: false
xy: 71, 50
size: 44, 70
orig: 44, 70
offset: 0, 0
index: -1
pelvis
rotate: false
xy: 95, 1
size: 63, 47
orig: 63, 47
offset: 0, 0
index: -1
left-upper-leg
rotate: false
xy: 117, 53
size: 33, 67
orig: 33, 67
offset: 0, 0
index: -1
right-foot
rotate: false
xy: 160, 224
size: 67, 30
orig: 67, 30
offset: 0, 0
index: -1
left-shoulder
rotate: false
xy: 124, 201
size: 34, 53
orig: 34, 53
offset: 0, 0
index: -1
left-ankle
rotate: false
xy: 229, 222
size: 25, 32
orig: 25, 32
offset: 0, 0
index: -1
left-foot
rotate: false
xy: 160, 192
size: 65, 30
orig: 65, 30
xy: 2, 2
size: 275, 240
orig: 277, 240
offset: 0, 0
index: -1
neck
rotate: false
xy: 124, 171
size: 34, 28
orig: 34, 28
xy: 903, 173
size: 22, 25
orig: 22, 25
offset: 0, 0
index: -1
right-arm
rear_bracer
rotate: false
xy: 124, 124
size: 21, 45
orig: 21, 45
xy: 722, 40
size: 34, 43
orig: 34, 43
offset: 0, 0
index: -1
right-ankle
rear_foot
rotate: false
xy: 227, 190
size: 25, 30
orig: 25, 30
xy: 444, 11
size: 68, 36
orig: 68, 36
offset: 0, 0
index: -1
left-hand
rear_foot_bend1
rotate: false
xy: 147, 131
size: 35, 38
orig: 35, 38
xy: 444, 49
size: 70, 40
orig: 70, 40
offset: 0, 0
index: -1
left-arm
rear_foot_bend2
rotate: false
xy: 184, 161
size: 35, 29
orig: 35, 29
xy: 778, 134
size: 62, 50
orig: 62, 50
offset: 0, 0
index: -1
eyes-closed
rear_shin
rotate: false
xy: 221, 161
size: 34, 27
orig: 34, 27
xy: 731, 135
size: 45, 107
orig: 45, 107
offset: 0, 0
index: -1
right-lower-leg
rear_thigh
rotate: true
xy: 516, 50
size: 39, 62
orig: 39, 62
offset: 0, 0
index: -1
rear_upper_arm
rotate: false
xy: 152, 65
size: 51, 64
orig: 51, 64
xy: 638, 35
size: 28, 52
orig: 28, 52
offset: 0, 0
index: -1
right-foot-idle
rotate: false
xy: 184, 131
size: 53, 28
orig: 53, 28
offset: 0, 0
index: -1
left-lower-leg
rotate: false
xy: 205, 65
size: 49, 64
orig: 49, 64
offset: 0, 0
index: -1
right-shoulder
rotate: false
xy: 160, 12
size: 52, 51
orig: 52, 51
offset: 0, 0
index: -1
eyes
rotate: false
xy: 214, 36
size: 34, 27
orig: 34, 27
offset: 0, 0
index: -1
right-hand
rotate: false
xy: 214, 2
size: 32, 32
orig: 32, 32
torso
rotate: true
xy: 279, 2
size: 59, 108
orig: 59, 108
offset: 0, 0
index: -1

Binary file not shown.

Before

Width:  |  Height:  |  Size: 65 KiB

After

Width:  |  Height:  |  Size: 239 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 144 KiB

View File

@ -1,166 +0,0 @@
spineboy.png
format: RGBA8888
filter: Linear,Linear
repeat: none
head
rotate: false
xy: 1, 122
size: 121, 132
orig: 121, 132
offset: 0, 0
index: -1
torso
rotate: false
xy: 1, 28
size: 68, 92
orig: 68, 92
offset: 0, 0
index: -1
left-pant-bottom
rotate: false
xy: 1, 4
size: 44, 22
orig: 44, 22
offset: 0, 0
index: -1
right-pant-bottom
rotate: false
xy: 47, 8
size: 46, 18
orig: 46, 18
offset: 0, 0
index: -1
right-upper-leg
rotate: false
xy: 71, 50
size: 44, 70
orig: 44, 70
offset: 0, 0
index: -1
pelvis
rotate: false
xy: 95, 1
size: 63, 47
orig: 63, 47
offset: 0, 0
index: -1
left-upper-leg
rotate: false
xy: 117, 53
size: 33, 67
orig: 33, 67
offset: 0, 0
index: -1
right-foot
rotate: false
xy: 160, 224
size: 67, 30
orig: 67, 30
offset: 0, 0
index: -1
left-shoulder
rotate: false
xy: 124, 201
size: 34, 53
orig: 34, 53
offset: 0, 0
index: -1
left-ankle
rotate: false
xy: 229, 222
size: 25, 32
orig: 25, 32
offset: 0, 0
index: -1
left-foot
rotate: false
xy: 160, 192
size: 65, 30
orig: 65, 30
offset: 0, 0
index: -1
neck
rotate: false
xy: 124, 171
size: 34, 28
orig: 34, 28
offset: 0, 0
index: -1
right-arm
rotate: false
xy: 124, 124
size: 21, 45
orig: 21, 45
offset: 0, 0
index: -1
right-ankle
rotate: false
xy: 227, 190
size: 25, 30
orig: 25, 30
offset: 0, 0
index: -1
left-hand
rotate: false
xy: 147, 131
size: 35, 38
orig: 35, 38
offset: 0, 0
index: -1
left-arm
rotate: false
xy: 184, 161
size: 35, 29
orig: 35, 29
offset: 0, 0
index: -1
eyes-closed
rotate: false
xy: 221, 161
size: 34, 27
orig: 34, 27
offset: 0, 0
index: -1
right-lower-leg
rotate: false
xy: 152, 65
size: 51, 64
orig: 51, 64
offset: 0, 0
index: -1
right-foot-idle
rotate: false
xy: 184, 131
size: 53, 28
orig: 53, 28
offset: 0, 0
index: -1
left-lower-leg
rotate: false
xy: 205, 65
size: 49, 64
orig: 49, 64
offset: 0, 0
index: -1
right-shoulder
rotate: false
xy: 160, 12
size: 52, 51
orig: 52, 51
offset: 0, 0
index: -1
eyes
rotate: false
xy: 214, 36
size: 34, 27
orig: 34, 27
offset: 0, 0
index: -1
right-hand
rotate: false
xy: 214, 2
size: 32, 32
orig: 32, 32
offset: 0, 0
index: -1

Binary file not shown.

Before

Width:  |  Height:  |  Size: 65 KiB

View File

@ -1,285 +1,292 @@
goblins.png
goblins-ffd.png
format: RGBA8888
filter: Linear,Linear
repeat: none
spear
rotate: true
xy: 2, 104
size: 22, 368
orig: 22, 368
dagger
rotate: false
xy: 2, 28
size: 26, 108
orig: 26, 108
offset: 0, 0
index: -1
goblingirl/head
goblin/eyes-closed
rotate: false
xy: 2, 23
size: 103, 79
orig: 103, 81
offset: 0, 2
xy: 137, 29
size: 34, 12
orig: 34, 12
offset: 0, 0
index: -1
goblin/head
rotate: false
xy: 107, 38
size: 103, 64
xy: 26, 357
size: 103, 66
orig: 103, 66
offset: 0, 0
index: -1
goblin/torso
rotate: true
xy: 212, 34
size: 68, 96
orig: 68, 96
offset: 0, 0
index: -1
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
goblin/left-arm
rotate: false
xy: 2, 2
size: 55, 19
orig: 55, 19
offset: 0, 0
index: -1
dagger
rotate: true
xy: 372, 100
size: 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: true
xy: 580, 91
size: 35, 76
orig: 36, 76
offset: 1, 0
index: -1
goblingirl/right-lower-leg
rotate: true
xy: 658, 91
size: 35, 76
orig: 36, 76
offset: 1, 0
index: -1
goblin/left-upper-leg
rotate: true
xy: 736, 93
size: 33, 73
orig: 33, 73
offset: 0, 0
index: -1
goblin/pelvis
rotate: true
xy: 310, 40
size: 62, 43
orig: 62, 43
offset: 0, 0
index: -1
goblin/left-hand
rotate: true
xy: 316, 2
size: 36, 41
orig: 36, 41
offset: 0, 0
index: -1
goblingirl/left-upper-leg
rotate: true
xy: 811, 93
size: 33, 70
orig: 33, 70
xy: 30, 28
size: 37, 35
orig: 37, 35
offset: 0, 0
index: -1
goblin/left-foot
rotate: false
xy: 883, 95
xy: 134, 260
size: 65, 31
orig: 65, 31
offset: 0, 0
index: -1
goblingirl/left-foot
goblin/left-hand
rotate: false
xy: 950, 95
size: 65, 31
orig: 65, 31
offset: 0, 0
index: -1
goblin/right-foot
rotate: false
xy: 580, 56
size: 63, 33
orig: 63, 33
offset: 0, 0
index: -1
goblingirl/right-foot
rotate: false
xy: 645, 56
size: 63, 33
orig: 63, 33
offset: 0, 0
index: -1
goblingirl/pelvis
rotate: false
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: 359, 11
size: 39, 42
orig: 39, 45
offset: 0, 0
index: -1
goblingirl/undie-straps
rotate: false
xy: 416, 43
size: 55, 19
orig: 55, 19
offset: 0, 0
index: -1
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: 481, 17
xy: 69, 25
size: 36, 41
orig: 36, 41
offset: 0, 0
index: -1
goblingirl/left-hand
goblin/left-lower-leg
rotate: false
xy: 519, 18
size: 35, 40
orig: 35, 40
offset: 0, 0
index: -1
goblingirl/right-arm
rotate: false
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
xy: 134, 293
size: 33, 70
orig: 33, 70
offset: 0, 0
index: -1
goblin/left-shoulder
rotate: true
xy: 615, 25
rotate: false
xy: 137, 43
size: 29, 44
orig: 29, 44
offset: 0, 0
index: -1
goblingirl/left-shoulder
rotate: true
xy: 661, 26
size: 28, 45
orig: 28, 46
offset: 0, 1
index: -1
goblingirl/left-arm
goblin/left-upper-leg
rotate: false
xy: 710, 54
size: 37, 35
orig: 37, 35
xy: 30, 65
size: 33, 73
orig: 33, 73
offset: 0, 0
index: -1
goblin/neck
rotate: false
xy: 201, 387
size: 36, 41
orig: 36, 41
offset: 0, 0
index: -1
goblin/pelvis
rotate: false
xy: 26, 140
size: 62, 43
orig: 62, 43
offset: 0, 0
index: -1
goblin/right-arm
rotate: false
xy: 708, 2
xy: 171, 84
size: 23, 50
orig: 23, 50
offset: 0, 0
index: -1
goblin/right-foot
rotate: false
xy: 134, 225
size: 63, 33
orig: 63, 33
offset: 0, 0
index: -1
goblin/right-hand
rotate: false
xy: 749, 54
xy: 204, 258
size: 36, 37
orig: 36, 37
offset: 0, 0
index: -1
goblingirl/right-hand
goblin/right-lower-leg
rotate: false
xy: 733, 15
size: 35, 37
orig: 36, 37
offset: 1, 0
xy: 201, 430
size: 36, 76
orig: 36, 76
offset: 0, 0
index: -1
goblin/right-shoulder
rotate: false
xy: 130, 89
size: 39, 45
orig: 39, 45
offset: 0, 0
index: -1
goblin/right-upper-leg
rotate: false
xy: 98, 214
size: 34, 63
orig: 34, 63
offset: 0, 0
index: -1
goblin/torso
rotate: false
xy: 131, 410
size: 68, 96
orig: 68, 96
offset: 0, 0
index: -1
goblin/undie-straps
rotate: false
xy: 2, 7
size: 55, 19
orig: 55, 19
offset: 0, 0
index: -1
goblin/undies
rotate: false
xy: 787, 62
size: 36, 29
orig: 36, 29
offset: 0, 0
index: -1
goblingirl/undies
rotate: false
xy: 825, 62
xy: 199, 227
size: 36, 29
orig: 36, 29
offset: 0, 0
index: -1
goblingirl/eyes-closed
rotate: false
xy: 59, 6
size: 37, 15
xy: 59, 2
size: 37, 21
orig: 37, 21
offset: 0, 0
index: -1
goblin/eyes-closed
rotate: true
xy: 770, 18
size: 34, 12
orig: 34, 12
goblingirl/head
rotate: false
xy: 26, 425
size: 103, 81
orig: 103, 81
offset: 0, 0
index: -1
goblingirl/left-arm
rotate: false
xy: 201, 190
size: 37, 35
orig: 37, 35
offset: 0, 0
index: -1
goblingirl/left-foot
rotate: false
xy: 134, 192
size: 65, 31
orig: 65, 31
offset: 0, 0
index: -1
goblingirl/left-hand
rotate: false
xy: 196, 109
size: 35, 40
orig: 35, 40
offset: 0, 0
index: -1
goblingirl/left-lower-leg
rotate: false
xy: 169, 293
size: 33, 70
orig: 33, 70
offset: 0, 0
index: -1
goblingirl/left-shoulder
rotate: false
xy: 107, 30
size: 28, 46
orig: 28, 46
offset: 0, 0
index: -1
goblingirl/left-upper-leg
rotate: false
xy: 65, 68
size: 33, 70
orig: 33, 70
offset: 0, 0
index: -1
goblingirl/neck
rotate: false
xy: 204, 297
size: 35, 41
orig: 35, 41
offset: 0, 0
index: -1
goblingirl/pelvis
rotate: false
xy: 131, 365
size: 62, 43
orig: 62, 43
offset: 0, 0
index: -1
goblingirl/right-arm
rotate: false
xy: 100, 97
size: 28, 50
orig: 28, 50
offset: 0, 0
index: -1
goblingirl/right-foot
rotate: false
xy: 134, 157
size: 63, 33
orig: 63, 33
offset: 0, 0
index: -1
goblingirl/right-hand
rotate: false
xy: 199, 151
size: 36, 37
orig: 36, 37
offset: 0, 0
index: -1
goblingirl/right-lower-leg
rotate: false
xy: 96, 279
size: 36, 76
orig: 36, 76
offset: 0, 0
index: -1
goblingirl/right-shoulder
rotate: false
xy: 204, 340
size: 39, 45
orig: 39, 45
offset: 0, 0
index: -1
goblingirl/right-upper-leg
rotate: false
xy: 98, 149
size: 34, 63
orig: 34, 63
offset: 0, 0
index: -1
goblingirl/torso
rotate: false
xy: 26, 259
size: 68, 96
orig: 68, 96
offset: 0, 0
index: -1
goblingirl/undie-straps
rotate: false
xy: 134, 136
size: 55, 19
orig: 55, 19
offset: 0, 0
index: -1
goblingirl/undies
rotate: false
xy: 196, 78
size: 36, 29
orig: 36, 29
offset: 0, 0
index: -1
shield
rotate: false
xy: 26, 185
size: 70, 72
orig: 70, 72
offset: 0, 0
index: -1
spear
rotate: false
xy: 2, 138
size: 22, 368
orig: 22, 368
offset: 0, 0
index: -1

Binary file not shown.

After

Width:  |  Height:  |  Size: 160 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 144 KiB

View File

@ -3,164 +3,192 @@ spineboy.png
format: RGBA8888
filter: Linear,Linear
repeat: none
eye_indifferent
rotate: true
xy: 389, 5
size: 56, 53
orig: 56, 53
offset: 0, 0
index: -1
eye_surprised
rotate: false
xy: 580, 34
size: 56, 53
orig: 56, 53
offset: 0, 0
index: -1
front_bracer
rotate: false
xy: 732, 85
size: 35, 48
orig: 35, 48
offset: 0, 0
index: -1
front_fist_closed
rotate: false
xy: 556, 91
size: 45, 49
orig: 45, 49
offset: 0, 0
index: -1
front_fist_open
rotate: false
xy: 668, 32
size: 52, 52
orig: 52, 52
offset: 0, 0
index: -1
front_foot
rotate: false
xy: 924, 201
size: 76, 41
orig: 76, 41
offset: 0, 0
index: -1
front_foot_bend1
rotate: false
xy: 845, 200
size: 77, 42
orig: 77, 42
offset: 0, 0
index: -1
front_foot_bend2
rotate: false
xy: 778, 186
size: 65, 56
orig: 65, 56
offset: 0, 0
index: -1
front_shin
rotate: true
xy: 444, 91
size: 49, 110
orig: 49, 110
offset: 0, 0
index: -1
front_thigh
rotate: true
xy: 603, 89
size: 29, 67
orig: 29, 67
offset: 0, 0
index: -1
front_upper_arm
rotate: true
xy: 672, 86
size: 32, 58
orig: 32, 58
offset: 0, 0
index: -1
goggles
rotate: false
xy: 444, 142
size: 157, 100
orig: 157, 100
offset: 0, 0
index: -1
gun
rotate: false
xy: 603, 120
size: 126, 122
orig: 126, 122
offset: 0, 0
index: -1
head
rotate: false
xy: 1, 122
size: 121, 132
orig: 121, 132
xy: 279, 63
size: 163, 179
orig: 163, 179
offset: 0, 0
index: -1
torso
mouth_grind
rotate: false
xy: 1, 28
size: 68, 92
orig: 68, 92
xy: 845, 163
size: 56, 35
orig: 56, 35
offset: 0, 0
index: -1
left-pant-bottom
mouth_oooo
rotate: false
xy: 1, 4
size: 44, 22
orig: 44, 22
xy: 842, 126
size: 56, 35
orig: 56, 35
offset: 0, 0
index: -1
right-pant-bottom
mouth_smile
rotate: false
xy: 47, 8
size: 46, 18
orig: 46, 18
xy: 769, 97
size: 56, 35
orig: 56, 35
offset: 0, 0
index: -1
right-upper-leg
muzzle
rotate: false
xy: 71, 50
size: 44, 70
orig: 44, 70
offset: 0, 0
index: -1
pelvis
rotate: false
xy: 95, 1
size: 63, 47
orig: 63, 47
offset: 0, 0
index: -1
left-upper-leg
rotate: false
xy: 117, 53
size: 33, 67
orig: 33, 67
offset: 0, 0
index: -1
right-foot
rotate: false
xy: 160, 224
size: 67, 30
orig: 67, 30
offset: 0, 0
index: -1
left-shoulder
rotate: false
xy: 124, 201
size: 34, 53
orig: 34, 53
offset: 0, 0
index: -1
left-ankle
rotate: false
xy: 229, 222
size: 25, 32
orig: 25, 32
offset: 0, 0
index: -1
left-foot
rotate: false
xy: 160, 192
size: 65, 30
orig: 65, 30
xy: 2, 2
size: 275, 240
orig: 277, 240
offset: 0, 0
index: -1
neck
rotate: false
xy: 124, 171
size: 34, 28
orig: 34, 28
xy: 903, 173
size: 22, 25
orig: 22, 25
offset: 0, 0
index: -1
right-arm
rear_bracer
rotate: false
xy: 124, 124
size: 21, 45
orig: 21, 45
xy: 722, 40
size: 34, 43
orig: 34, 43
offset: 0, 0
index: -1
right-ankle
rear_foot
rotate: false
xy: 227, 190
size: 25, 30
orig: 25, 30
xy: 444, 11
size: 68, 36
orig: 68, 36
offset: 0, 0
index: -1
left-hand
rear_foot_bend1
rotate: false
xy: 147, 131
size: 35, 38
orig: 35, 38
xy: 444, 49
size: 70, 40
orig: 70, 40
offset: 0, 0
index: -1
left-arm
rear_foot_bend2
rotate: false
xy: 184, 161
size: 35, 29
orig: 35, 29
xy: 778, 134
size: 62, 50
orig: 62, 50
offset: 0, 0
index: -1
eyes-closed
rear_shin
rotate: false
xy: 221, 161
size: 34, 27
orig: 34, 27
xy: 731, 135
size: 45, 107
orig: 45, 107
offset: 0, 0
index: -1
right-lower-leg
rear_thigh
rotate: true
xy: 516, 50
size: 39, 62
orig: 39, 62
offset: 0, 0
index: -1
rear_upper_arm
rotate: false
xy: 152, 65
size: 51, 64
orig: 51, 64
xy: 638, 35
size: 28, 52
orig: 28, 52
offset: 0, 0
index: -1
right-foot-idle
rotate: false
xy: 184, 131
size: 53, 28
orig: 53, 28
offset: 0, 0
index: -1
left-lower-leg
rotate: false
xy: 205, 65
size: 49, 64
orig: 49, 64
offset: 0, 0
index: -1
right-shoulder
rotate: false
xy: 160, 12
size: 52, 51
orig: 52, 51
offset: 0, 0
index: -1
eyes
rotate: false
xy: 214, 36
size: 34, 27
orig: 34, 27
offset: 0, 0
index: -1
right-hand
rotate: false
xy: 214, 2
size: 32, 32
orig: 32, 32
torso
rotate: true
xy: 279, 2
size: 59, 108
orig: 59, 108
offset: 0, 0
index: -1

Binary file not shown.

Before

Width:  |  Height:  |  Size: 65 KiB

After

Width:  |  Height:  |  Size: 239 KiB

View File

@ -1,285 +1,292 @@
goblins.png
goblins-ffd.png
format: RGBA8888
filter: Linear,Linear
repeat: none
spear
rotate: true
xy: 2, 104
size: 22, 368
orig: 22, 368
dagger
rotate: false
xy: 2, 28
size: 26, 108
orig: 26, 108
offset: 0, 0
index: -1
goblingirl/head
goblin/eyes-closed
rotate: false
xy: 2, 23
size: 103, 79
orig: 103, 81
offset: 0, 2
xy: 137, 29
size: 34, 12
orig: 34, 12
offset: 0, 0
index: -1
goblin/head
rotate: false
xy: 107, 38
size: 103, 64
xy: 26, 357
size: 103, 66
orig: 103, 66
offset: 0, 0
index: -1
goblin/torso
rotate: true
xy: 212, 34
size: 68, 96
orig: 68, 96
offset: 0, 0
index: -1
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
goblin/left-arm
rotate: false
xy: 2, 2
size: 55, 19
orig: 55, 19
offset: 0, 0
index: -1
dagger
rotate: true
xy: 372, 100
size: 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: true
xy: 580, 91
size: 35, 76
orig: 36, 76
offset: 1, 0
index: -1
goblingirl/right-lower-leg
rotate: true
xy: 658, 91
size: 35, 76
orig: 36, 76
offset: 1, 0
index: -1
goblin/left-upper-leg
rotate: true
xy: 736, 93
size: 33, 73
orig: 33, 73
offset: 0, 0
index: -1
goblin/pelvis
rotate: true
xy: 310, 40
size: 62, 43
orig: 62, 43
offset: 0, 0
index: -1
goblin/left-hand
rotate: true
xy: 316, 2
size: 36, 41
orig: 36, 41
offset: 0, 0
index: -1
goblingirl/left-upper-leg
rotate: true
xy: 811, 93
size: 33, 70
orig: 33, 70
xy: 30, 28
size: 37, 35
orig: 37, 35
offset: 0, 0
index: -1
goblin/left-foot
rotate: false
xy: 883, 95
xy: 134, 260
size: 65, 31
orig: 65, 31
offset: 0, 0
index: -1
goblingirl/left-foot
goblin/left-hand
rotate: false
xy: 950, 95
size: 65, 31
orig: 65, 31
offset: 0, 0
index: -1
goblin/right-foot
rotate: false
xy: 580, 56
size: 63, 33
orig: 63, 33
offset: 0, 0
index: -1
goblingirl/right-foot
rotate: false
xy: 645, 56
size: 63, 33
orig: 63, 33
offset: 0, 0
index: -1
goblingirl/pelvis
rotate: false
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: 359, 11
size: 39, 42
orig: 39, 45
offset: 0, 0
index: -1
goblingirl/undie-straps
rotate: false
xy: 416, 43
size: 55, 19
orig: 55, 19
offset: 0, 0
index: -1
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: 481, 17
xy: 69, 25
size: 36, 41
orig: 36, 41
offset: 0, 0
index: -1
goblingirl/left-hand
goblin/left-lower-leg
rotate: false
xy: 519, 18
size: 35, 40
orig: 35, 40
offset: 0, 0
index: -1
goblingirl/right-arm
rotate: false
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
xy: 134, 293
size: 33, 70
orig: 33, 70
offset: 0, 0
index: -1
goblin/left-shoulder
rotate: true
xy: 615, 25
rotate: false
xy: 137, 43
size: 29, 44
orig: 29, 44
offset: 0, 0
index: -1
goblingirl/left-shoulder
rotate: true
xy: 661, 26
size: 28, 45
orig: 28, 46
offset: 0, 1
index: -1
goblingirl/left-arm
goblin/left-upper-leg
rotate: false
xy: 710, 54
size: 37, 35
orig: 37, 35
xy: 30, 65
size: 33, 73
orig: 33, 73
offset: 0, 0
index: -1
goblin/neck
rotate: false
xy: 201, 387
size: 36, 41
orig: 36, 41
offset: 0, 0
index: -1
goblin/pelvis
rotate: false
xy: 26, 140
size: 62, 43
orig: 62, 43
offset: 0, 0
index: -1
goblin/right-arm
rotate: false
xy: 708, 2
xy: 171, 84
size: 23, 50
orig: 23, 50
offset: 0, 0
index: -1
goblin/right-foot
rotate: false
xy: 134, 225
size: 63, 33
orig: 63, 33
offset: 0, 0
index: -1
goblin/right-hand
rotate: false
xy: 749, 54
xy: 204, 258
size: 36, 37
orig: 36, 37
offset: 0, 0
index: -1
goblingirl/right-hand
goblin/right-lower-leg
rotate: false
xy: 733, 15
size: 35, 37
orig: 36, 37
offset: 1, 0
xy: 201, 430
size: 36, 76
orig: 36, 76
offset: 0, 0
index: -1
goblin/right-shoulder
rotate: false
xy: 130, 89
size: 39, 45
orig: 39, 45
offset: 0, 0
index: -1
goblin/right-upper-leg
rotate: false
xy: 98, 214
size: 34, 63
orig: 34, 63
offset: 0, 0
index: -1
goblin/torso
rotate: false
xy: 131, 410
size: 68, 96
orig: 68, 96
offset: 0, 0
index: -1
goblin/undie-straps
rotate: false
xy: 2, 7
size: 55, 19
orig: 55, 19
offset: 0, 0
index: -1
goblin/undies
rotate: false
xy: 787, 62
size: 36, 29
orig: 36, 29
offset: 0, 0
index: -1
goblingirl/undies
rotate: false
xy: 825, 62
xy: 199, 227
size: 36, 29
orig: 36, 29
offset: 0, 0
index: -1
goblingirl/eyes-closed
rotate: false
xy: 59, 6
size: 37, 15
xy: 59, 2
size: 37, 21
orig: 37, 21
offset: 0, 0
index: -1
goblin/eyes-closed
rotate: true
xy: 770, 18
size: 34, 12
orig: 34, 12
goblingirl/head
rotate: false
xy: 26, 425
size: 103, 81
orig: 103, 81
offset: 0, 0
index: -1
goblingirl/left-arm
rotate: false
xy: 201, 190
size: 37, 35
orig: 37, 35
offset: 0, 0
index: -1
goblingirl/left-foot
rotate: false
xy: 134, 192
size: 65, 31
orig: 65, 31
offset: 0, 0
index: -1
goblingirl/left-hand
rotate: false
xy: 196, 109
size: 35, 40
orig: 35, 40
offset: 0, 0
index: -1
goblingirl/left-lower-leg
rotate: false
xy: 169, 293
size: 33, 70
orig: 33, 70
offset: 0, 0
index: -1
goblingirl/left-shoulder
rotate: false
xy: 107, 30
size: 28, 46
orig: 28, 46
offset: 0, 0
index: -1
goblingirl/left-upper-leg
rotate: false
xy: 65, 68
size: 33, 70
orig: 33, 70
offset: 0, 0
index: -1
goblingirl/neck
rotate: false
xy: 204, 297
size: 35, 41
orig: 35, 41
offset: 0, 0
index: -1
goblingirl/pelvis
rotate: false
xy: 131, 365
size: 62, 43
orig: 62, 43
offset: 0, 0
index: -1
goblingirl/right-arm
rotate: false
xy: 100, 97
size: 28, 50
orig: 28, 50
offset: 0, 0
index: -1
goblingirl/right-foot
rotate: false
xy: 134, 157
size: 63, 33
orig: 63, 33
offset: 0, 0
index: -1
goblingirl/right-hand
rotate: false
xy: 199, 151
size: 36, 37
orig: 36, 37
offset: 0, 0
index: -1
goblingirl/right-lower-leg
rotate: false
xy: 96, 279
size: 36, 76
orig: 36, 76
offset: 0, 0
index: -1
goblingirl/right-shoulder
rotate: false
xy: 204, 340
size: 39, 45
orig: 39, 45
offset: 0, 0
index: -1
goblingirl/right-upper-leg
rotate: false
xy: 98, 149
size: 34, 63
orig: 34, 63
offset: 0, 0
index: -1
goblingirl/torso
rotate: false
xy: 26, 259
size: 68, 96
orig: 68, 96
offset: 0, 0
index: -1
goblingirl/undie-straps
rotate: false
xy: 134, 136
size: 55, 19
orig: 55, 19
offset: 0, 0
index: -1
goblingirl/undies
rotate: false
xy: 196, 78
size: 36, 29
orig: 36, 29
offset: 0, 0
index: -1
shield
rotate: false
xy: 26, 185
size: 70, 72
orig: 70, 72
offset: 0, 0
index: -1
spear
rotate: false
xy: 2, 138
size: 22, 368
orig: 22, 368
offset: 0, 0
index: -1

Binary file not shown.

After

Width:  |  Height:  |  Size: 160 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 144 KiB

View File

@ -3,164 +3,192 @@ spineboy.png
format: RGBA8888
filter: Linear,Linear
repeat: none
eye_indifferent
rotate: true
xy: 389, 5
size: 56, 53
orig: 56, 53
offset: 0, 0
index: -1
eye_surprised
rotate: false
xy: 580, 34
size: 56, 53
orig: 56, 53
offset: 0, 0
index: -1
front_bracer
rotate: false
xy: 732, 85
size: 35, 48
orig: 35, 48
offset: 0, 0
index: -1
front_fist_closed
rotate: false
xy: 556, 91
size: 45, 49
orig: 45, 49
offset: 0, 0
index: -1
front_fist_open
rotate: false
xy: 668, 32
size: 52, 52
orig: 52, 52
offset: 0, 0
index: -1
front_foot
rotate: false
xy: 924, 201
size: 76, 41
orig: 76, 41
offset: 0, 0
index: -1
front_foot_bend1
rotate: false
xy: 845, 200
size: 77, 42
orig: 77, 42
offset: 0, 0
index: -1
front_foot_bend2
rotate: false
xy: 778, 186
size: 65, 56
orig: 65, 56
offset: 0, 0
index: -1
front_shin
rotate: true
xy: 444, 91
size: 49, 110
orig: 49, 110
offset: 0, 0
index: -1
front_thigh
rotate: true
xy: 603, 89
size: 29, 67
orig: 29, 67
offset: 0, 0
index: -1
front_upper_arm
rotate: true
xy: 672, 86
size: 32, 58
orig: 32, 58
offset: 0, 0
index: -1
goggles
rotate: false
xy: 444, 142
size: 157, 100
orig: 157, 100
offset: 0, 0
index: -1
gun
rotate: false
xy: 603, 120
size: 126, 122
orig: 126, 122
offset: 0, 0
index: -1
head
rotate: false
xy: 1, 122
size: 121, 132
orig: 121, 132
xy: 279, 63
size: 163, 179
orig: 163, 179
offset: 0, 0
index: -1
torso
mouth_grind
rotate: false
xy: 1, 28
size: 68, 92
orig: 68, 92
xy: 845, 163
size: 56, 35
orig: 56, 35
offset: 0, 0
index: -1
left-pant-bottom
mouth_oooo
rotate: false
xy: 1, 4
size: 44, 22
orig: 44, 22
xy: 842, 126
size: 56, 35
orig: 56, 35
offset: 0, 0
index: -1
right-pant-bottom
mouth_smile
rotate: false
xy: 47, 8
size: 46, 18
orig: 46, 18
xy: 769, 97
size: 56, 35
orig: 56, 35
offset: 0, 0
index: -1
right-upper-leg
muzzle
rotate: false
xy: 71, 50
size: 44, 70
orig: 44, 70
offset: 0, 0
index: -1
pelvis
rotate: false
xy: 95, 1
size: 63, 47
orig: 63, 47
offset: 0, 0
index: -1
left-upper-leg
rotate: false
xy: 117, 53
size: 33, 67
orig: 33, 67
offset: 0, 0
index: -1
right-foot
rotate: false
xy: 160, 224
size: 67, 30
orig: 67, 30
offset: 0, 0
index: -1
left-shoulder
rotate: false
xy: 124, 201
size: 34, 53
orig: 34, 53
offset: 0, 0
index: -1
left-ankle
rotate: false
xy: 229, 222
size: 25, 32
orig: 25, 32
offset: 0, 0
index: -1
left-foot
rotate: false
xy: 160, 192
size: 65, 30
orig: 65, 30
xy: 2, 2
size: 275, 240
orig: 277, 240
offset: 0, 0
index: -1
neck
rotate: false
xy: 124, 171
size: 34, 28
orig: 34, 28
xy: 903, 173
size: 22, 25
orig: 22, 25
offset: 0, 0
index: -1
right-arm
rear_bracer
rotate: false
xy: 124, 124
size: 21, 45
orig: 21, 45
xy: 722, 40
size: 34, 43
orig: 34, 43
offset: 0, 0
index: -1
right-ankle
rear_foot
rotate: false
xy: 227, 190
size: 25, 30
orig: 25, 30
xy: 444, 11
size: 68, 36
orig: 68, 36
offset: 0, 0
index: -1
left-hand
rear_foot_bend1
rotate: false
xy: 147, 131
size: 35, 38
orig: 35, 38
xy: 444, 49
size: 70, 40
orig: 70, 40
offset: 0, 0
index: -1
left-arm
rear_foot_bend2
rotate: false
xy: 184, 161
size: 35, 29
orig: 35, 29
xy: 778, 134
size: 62, 50
orig: 62, 50
offset: 0, 0
index: -1
eyes-closed
rear_shin
rotate: false
xy: 221, 161
size: 34, 27
orig: 34, 27
xy: 731, 135
size: 45, 107
orig: 45, 107
offset: 0, 0
index: -1
right-lower-leg
rear_thigh
rotate: true
xy: 516, 50
size: 39, 62
orig: 39, 62
offset: 0, 0
index: -1
rear_upper_arm
rotate: false
xy: 152, 65
size: 51, 64
orig: 51, 64
xy: 638, 35
size: 28, 52
orig: 28, 52
offset: 0, 0
index: -1
right-foot-idle
rotate: false
xy: 184, 131
size: 53, 28
orig: 53, 28
offset: 0, 0
index: -1
left-lower-leg
rotate: false
xy: 205, 65
size: 49, 64
orig: 49, 64
offset: 0, 0
index: -1
right-shoulder
rotate: false
xy: 160, 12
size: 52, 51
orig: 52, 51
offset: 0, 0
index: -1
eyes
rotate: false
xy: 214, 36
size: 34, 27
orig: 34, 27
offset: 0, 0
index: -1
right-hand
rotate: false
xy: 214, 2
size: 32, 32
orig: 32, 32
torso
rotate: true
xy: 279, 2
size: 59, 108
orig: 59, 108
offset: 0, 0
index: -1

Binary file not shown.

Before

Width:  |  Height:  |  Size: 65 KiB

After

Width:  |  Height:  |  Size: 239 KiB

Binary file not shown.

View File

@ -1,6 +1,5 @@
#include "main.h"
#include "../Classes/AppDelegate.h"
#include "CCEGLView.h"
USING_NS_CC;
@ -14,8 +13,10 @@ int APIENTRY _tWinMain(HINSTANCE hInstance,
// create the application instance
AppDelegate app;
CCEGLView* eglView = CCEGLView::sharedOpenGLView();
eglView->setViewName("SpineExample");
eglView->setFrameSize(960, 640);
return CCApplication::sharedApplication()->run();
auto director = Director::getInstance();
auto glview = GLView::create("Spine Example");
glview->setFrameSize(960, 640);
director->setOpenGLView(glview);
return Application::getInstance()->run();
}

View File

@ -6,6 +6,4 @@
#include <windows.h>
#include <tchar.h>
#include "CCStdC.h"
#endif // __MAIN_H__

View File

@ -1,9 +1,16 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Express 2012 for Windows Desktop
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libcocos2d", "..\..\cocos2dx\proj.win32\cocos2d.vcxproj", "{98A51BA8-FC3A-415B-AC8F-8C7BD464E93E}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "spine-cocos2dx", "spine-cocos2dx.vcxproj", "{DB4C84B9-AC6D-46A1-B7E6-A77FE4515ACF}"
ProjectSection(ProjectDependencies) = postProject
{98A51BA8-FC3A-415B-AC8F-8C7BD464E93E} = {98A51BA8-FC3A-415B-AC8F-8C7BD464E93E}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libcocos2d", "..\..\cocos2dx\cocos\2d\cocos2d.vcxproj", "{98A51BA8-FC3A-415B-AC8F-8C7BD464E93E}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libchipmunk", "..\..\cocos2dx\external\chipmunk\proj.win32\chipmunk.vcxproj", "{207BC7A9-CCF1-4F2F-A04D-45F72242AE25}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "spine-c", "..\..\..\spine-c\spine-c.vcxproj", "{5D74934A-7512-45EE-8402-7B95D3642E85}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@ -11,14 +18,22 @@ Global
Release|Win32 = Release|Win32
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{98A51BA8-FC3A-415B-AC8F-8C7BD464E93E}.Debug|Win32.ActiveCfg = Debug|Win32
{98A51BA8-FC3A-415B-AC8F-8C7BD464E93E}.Debug|Win32.Build.0 = Debug|Win32
{98A51BA8-FC3A-415B-AC8F-8C7BD464E93E}.Release|Win32.ActiveCfg = Release|Win32
{98A51BA8-FC3A-415B-AC8F-8C7BD464E93E}.Release|Win32.Build.0 = Release|Win32
{DB4C84B9-AC6D-46A1-B7E6-A77FE4515ACF}.Debug|Win32.ActiveCfg = Debug|Win32
{DB4C84B9-AC6D-46A1-B7E6-A77FE4515ACF}.Debug|Win32.Build.0 = Debug|Win32
{DB4C84B9-AC6D-46A1-B7E6-A77FE4515ACF}.Release|Win32.ActiveCfg = Release|Win32
{DB4C84B9-AC6D-46A1-B7E6-A77FE4515ACF}.Release|Win32.Build.0 = Release|Win32
{98A51BA8-FC3A-415B-AC8F-8C7BD464E93E}.Debug|Win32.ActiveCfg = Debug|Win32
{98A51BA8-FC3A-415B-AC8F-8C7BD464E93E}.Debug|Win32.Build.0 = Debug|Win32
{98A51BA8-FC3A-415B-AC8F-8C7BD464E93E}.Release|Win32.ActiveCfg = Release|Win32
{98A51BA8-FC3A-415B-AC8F-8C7BD464E93E}.Release|Win32.Build.0 = Release|Win32
{207BC7A9-CCF1-4F2F-A04D-45F72242AE25}.Debug|Win32.ActiveCfg = Debug|Win32
{207BC7A9-CCF1-4F2F-A04D-45F72242AE25}.Debug|Win32.Build.0 = Debug|Win32
{207BC7A9-CCF1-4F2F-A04D-45F72242AE25}.Release|Win32.ActiveCfg = Release|Win32
{207BC7A9-CCF1-4F2F-A04D-45F72242AE25}.Release|Win32.Build.0 = Release|Win32
{5D74934A-7512-45EE-8402-7B95D3642E85}.Debug|Win32.ActiveCfg = Debug|Win32
{5D74934A-7512-45EE-8402-7B95D3642E85}.Debug|Win32.Build.0 = Debug|Win32
{5D74934A-7512-45EE-8402-7B95D3642E85}.Release|Win32.ActiveCfg = Release|Win32
{5D74934A-7512-45EE-8402-7B95D3642E85}.Release|Win32.Build.0 = Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@ -29,4 +44,10 @@ Global
GlobalSection(DPCodeReviewSolutionGUID) = preSolution
DPCodeReviewSolutionGUID = {00000000-0000-0000-0000-000000000000}
EndGlobalSection
GlobalSection(DPCodeReviewSolutionGUID) = preSolution
DPCodeReviewSolutionGUID = {00000000-0000-0000-0000-000000000000}
EndGlobalSection
GlobalSection(DPCodeReviewSolutionGUID) = preSolution
DPCodeReviewSolutionGUID = {00000000-0000-0000-0000-000000000000}
EndGlobalSection
EndGlobal

View File

@ -37,9 +37,13 @@
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="..\..\cocos2dx\cocos\2d\cocos2dx.props" />
<Import Project="..\..\cocos2dx\cocos\2d\cocos2d_headers.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="..\..\cocos2dx\cocos\2d\cocos2dx.props" />
<Import Project="..\..\cocos2dx\cocos\2d\cocos2d_headers.props" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
@ -66,7 +70,7 @@
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>$(ProjectDir)..\..\cocos2dx;$(ProjectDir)..\..\cocos2dx\include;$(ProjectDir)..\..\cocos2dx\kazmath\include;$(ProjectDir)..\..\cocos2dx\platform\win32;$(ProjectDir)..\..\cocos2dx\platform\third_party\win32\OGLES;$(ProjectDir)..\Classes;$(ProjectDir)..\..\src;$(ProjectDir)..\..\..\spine-c\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>$(ProjectDir)..\Classes;$(ProjectDir)..\..\src;$(ProjectDir)..\..\..\spine-c\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;COCOS2D_DEBUG=1;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
@ -79,7 +83,7 @@
<CompileAs>CompileAsCpp</CompileAs>
</ClCompile>
<Link>
<AdditionalDependencies>opengl32.lib;glew32.lib;libcocos2d.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(ProjectName).exe</OutputFile>
<AdditionalLibraryDirectories>$(OutDir);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
@ -88,6 +92,7 @@
<EntryPointSymbol>
</EntryPointSymbol>
<ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
<IgnoreSpecificDefaultLibraries>libcmt.lib;msvcrt.lib;libcmtd.lib</IgnoreSpecificDefaultLibraries>
</Link>
<PostBuildEvent>
<Command>
@ -124,31 +129,8 @@
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemGroup>
<ClInclude Include="..\..\..\spine-c\include\spine\Animation.h" />
<ClInclude Include="..\..\..\spine-c\include\spine\AnimationState.h" />
<ClInclude Include="..\..\..\spine-c\include\spine\AnimationStateData.h" />
<ClInclude Include="..\..\..\spine-c\include\spine\Atlas.h" />
<ClInclude Include="..\..\..\spine-c\include\spine\AtlasAttachmentLoader.h" />
<ClInclude Include="..\..\..\spine-c\include\spine\Attachment.h" />
<ClInclude Include="..\..\..\spine-c\include\spine\AttachmentLoader.h" />
<ClInclude Include="..\..\..\spine-c\include\spine\Bone.h" />
<ClInclude Include="..\..\..\spine-c\include\spine\BoneData.h" />
<ClInclude Include="..\..\..\spine-c\include\spine\BoundingBoxAttachment.h" />
<ClInclude Include="..\..\..\spine-c\include\spine\Event.h" />
<ClInclude Include="..\..\..\spine-c\include\spine\EventData.h" />
<ClInclude Include="..\..\..\spine-c\include\spine\extension.h" />
<ClInclude Include="..\..\..\spine-c\include\spine\RegionAttachment.h" />
<ClInclude Include="..\..\..\spine-c\include\spine\Skeleton.h" />
<ClInclude Include="..\..\..\spine-c\include\spine\SkeletonBounds.h" />
<ClInclude Include="..\..\..\spine-c\include\spine\SkeletonData.h" />
<ClInclude Include="..\..\..\spine-c\include\spine\SkeletonJson.h" />
<ClInclude Include="..\..\..\spine-c\include\spine\Skin.h" />
<ClInclude Include="..\..\..\spine-c\include\spine\Slot.h" />
<ClInclude Include="..\..\..\spine-c\include\spine\SlotData.h" />
<ClInclude Include="..\..\..\spine-c\include\spine\spine.h" />
<ClInclude Include="..\..\..\spine-c\src\spine\Json.h" />
<ClInclude Include="..\..\src\spine\CCSkeleton.h" />
<ClInclude Include="..\..\src\spine\CCSkeletonAnimation.h" />
<ClInclude Include="..\..\src\spine\SkeletonAnimation.h" />
<ClInclude Include="..\..\src\spine\SkeletonRenderer.h" />
<ClInclude Include="..\..\src\spine\spine-cocos2dx.h" />
<ClInclude Include="..\Classes\AppDelegate.h" />
<ClInclude Include="..\Classes\AppMacros.h" />
@ -156,38 +138,27 @@
<ClInclude Include="main.h" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\..\..\spine-c\src\spine\Animation.c" />
<ClCompile Include="..\..\..\spine-c\src\spine\AnimationState.c" />
<ClCompile Include="..\..\..\spine-c\src\spine\AnimationStateData.c" />
<ClCompile Include="..\..\..\spine-c\src\spine\Atlas.c" />
<ClCompile Include="..\..\..\spine-c\src\spine\AtlasAttachmentLoader.c" />
<ClCompile Include="..\..\..\spine-c\src\spine\Attachment.c" />
<ClCompile Include="..\..\..\spine-c\src\spine\AttachmentLoader.c" />
<ClCompile Include="..\..\..\spine-c\src\spine\Bone.c" />
<ClCompile Include="..\..\..\spine-c\src\spine\BoneData.c" />
<ClCompile Include="..\..\..\spine-c\src\spine\BoundingBoxAttachment.c" />
<ClCompile Include="..\..\..\spine-c\src\spine\Event.c" />
<ClCompile Include="..\..\..\spine-c\src\spine\EventData.c" />
<ClCompile Include="..\..\..\spine-c\src\spine\extension.c" />
<ClCompile Include="..\..\..\spine-c\src\spine\Json.c" />
<ClCompile Include="..\..\..\spine-c\src\spine\RegionAttachment.c" />
<ClCompile Include="..\..\..\spine-c\src\spine\Skeleton.c" />
<ClCompile Include="..\..\..\spine-c\src\spine\SkeletonBounds.c" />
<ClCompile Include="..\..\..\spine-c\src\spine\SkeletonData.c" />
<ClCompile Include="..\..\..\spine-c\src\spine\SkeletonJson.c" />
<ClCompile Include="..\..\..\spine-c\src\spine\Skin.c" />
<ClCompile Include="..\..\..\spine-c\src\spine\Slot.c" />
<ClCompile Include="..\..\..\spine-c\src\spine\SlotData.c" />
<ClCompile Include="..\..\src\spine\CCSkeleton.cpp" />
<ClCompile Include="..\..\src\spine\CCSkeletonAnimation.cpp" />
<ClCompile Include="..\..\src\spine\SkeletonAnimation.cpp" />
<ClCompile Include="..\..\src\spine\SkeletonRenderer.cpp" />
<ClCompile Include="..\..\src\spine\spine-cocos2dx.cpp" />
<ClCompile Include="..\Classes\AppDelegate.cpp" />
<ClCompile Include="..\Classes\ExampleLayer.cpp" />
<ClCompile Include="main.cpp" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\cocos2dx\proj.win32\cocos2d.vcxproj">
<ProjectReference Include="..\..\..\spine-c\spine-c.vcxproj">
<Project>{5d74934a-7512-45ee-8402-7b95d3642e85}</Project>
</ProjectReference>
<ProjectReference Include="..\..\cocos2dx\cocos\2d\cocos2d.vcxproj">
<Project>{98a51ba8-fc3a-415b-ac8f-8c7bd464e93e}</Project>
<Private>false</Private>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
<CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
<LinkLibraryDependencies>true</LinkLibraryDependencies>
<UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>
</ProjectReference>
<ProjectReference Include="..\..\cocos2dx\external\chipmunk\proj.win32\chipmunk.vcxproj">
<Project>{207bc7a9-ccf1-4f2f-a04d-45f72242ae25}</Project>
</ProjectReference>
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />

View File

@ -7,11 +7,8 @@
<Filter Include="Classes">
<UniqueIdentifier>{0dcd52ca-d521-4ba1-a1fa-c0d58a2df402}</UniqueIdentifier>
</Filter>
<Filter Include="Classes\spine-cocos2dx">
<UniqueIdentifier>{7c460e6e-d4fb-452e-b75f-7a110b9dd9f6}</UniqueIdentifier>
</Filter>
<Filter Include="Classes\spine-c">
<UniqueIdentifier>{bce9df76-2682-4d32-a178-779e330d0ff1}</UniqueIdentifier>
<Filter Include="src">
<UniqueIdentifier>{54b66b2b-0990-4335-a821-332c44b6f83e}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
@ -27,83 +24,14 @@
<ClInclude Include="..\Classes\ExampleLayer.h">
<Filter>Classes</Filter>
</ClInclude>
<ClInclude Include="..\..\src\spine\SkeletonRenderer.h">
<Filter>src</Filter>
</ClInclude>
<ClInclude Include="..\..\src\spine\spine-cocos2dx.h">
<Filter>Classes\spine-cocos2dx</Filter>
<Filter>src</Filter>
</ClInclude>
<ClInclude Include="..\..\..\spine-c\include\spine\Animation.h">
<Filter>Classes\spine-c</Filter>
</ClInclude>
<ClInclude Include="..\..\..\spine-c\include\spine\Atlas.h">
<Filter>Classes\spine-c</Filter>
</ClInclude>
<ClInclude Include="..\..\..\spine-c\include\spine\AtlasAttachmentLoader.h">
<Filter>Classes\spine-c</Filter>
</ClInclude>
<ClInclude Include="..\..\..\spine-c\include\spine\Attachment.h">
<Filter>Classes\spine-c</Filter>
</ClInclude>
<ClInclude Include="..\..\..\spine-c\include\spine\AttachmentLoader.h">
<Filter>Classes\spine-c</Filter>
</ClInclude>
<ClInclude Include="..\..\..\spine-c\include\spine\Bone.h">
<Filter>Classes\spine-c</Filter>
</ClInclude>
<ClInclude Include="..\..\..\spine-c\include\spine\BoneData.h">
<Filter>Classes\spine-c</Filter>
</ClInclude>
<ClInclude Include="..\..\..\spine-c\include\spine\extension.h">
<Filter>Classes\spine-c</Filter>
</ClInclude>
<ClInclude Include="..\..\..\spine-c\include\spine\RegionAttachment.h">
<Filter>Classes\spine-c</Filter>
</ClInclude>
<ClInclude Include="..\..\..\spine-c\include\spine\Skeleton.h">
<Filter>Classes\spine-c</Filter>
</ClInclude>
<ClInclude Include="..\..\..\spine-c\include\spine\SkeletonData.h">
<Filter>Classes\spine-c</Filter>
</ClInclude>
<ClInclude Include="..\..\..\spine-c\include\spine\SkeletonJson.h">
<Filter>Classes\spine-c</Filter>
</ClInclude>
<ClInclude Include="..\..\..\spine-c\include\spine\Skin.h">
<Filter>Classes\spine-c</Filter>
</ClInclude>
<ClInclude Include="..\..\..\spine-c\include\spine\Slot.h">
<Filter>Classes\spine-c</Filter>
</ClInclude>
<ClInclude Include="..\..\..\spine-c\include\spine\SlotData.h">
<Filter>Classes\spine-c</Filter>
</ClInclude>
<ClInclude Include="..\..\..\spine-c\include\spine\spine.h">
<Filter>Classes\spine-c</Filter>
</ClInclude>
<ClInclude Include="..\..\..\spine-c\src\spine\Json.h">
<Filter>Classes\spine-c</Filter>
</ClInclude>
<ClInclude Include="..\..\..\spine-c\include\spine\AnimationState.h">
<Filter>Classes\spine-c</Filter>
</ClInclude>
<ClInclude Include="..\..\..\spine-c\include\spine\AnimationStateData.h">
<Filter>Classes\spine-c</Filter>
</ClInclude>
<ClInclude Include="..\..\src\spine\CCSkeleton.h">
<Filter>Classes\spine-cocos2dx</Filter>
</ClInclude>
<ClInclude Include="..\..\src\spine\CCSkeletonAnimation.h">
<Filter>Classes\spine-cocos2dx</Filter>
</ClInclude>
<ClInclude Include="..\..\..\spine-c\include\spine\BoundingBoxAttachment.h">
<Filter>Classes\spine-c</Filter>
</ClInclude>
<ClInclude Include="..\..\..\spine-c\include\spine\SkeletonBounds.h">
<Filter>Classes\spine-c</Filter>
</ClInclude>
<ClInclude Include="..\..\..\spine-c\include\spine\Event.h">
<Filter>Classes\spine-c</Filter>
</ClInclude>
<ClInclude Include="..\..\..\spine-c\include\spine\EventData.h">
<Filter>Classes\spine-c</Filter>
<ClInclude Include="..\..\src\spine\SkeletonAnimation.h">
<Filter>src</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
@ -116,80 +44,14 @@
<ClCompile Include="..\Classes\ExampleLayer.cpp">
<Filter>Classes</Filter>
</ClCompile>
<ClCompile Include="..\..\src\spine\SkeletonRenderer.cpp">
<Filter>src</Filter>
</ClCompile>
<ClCompile Include="..\..\src\spine\spine-cocos2dx.cpp">
<Filter>Classes\spine-cocos2dx</Filter>
<Filter>src</Filter>
</ClCompile>
<ClCompile Include="..\..\..\spine-c\src\spine\Animation.c">
<Filter>Classes\spine-c</Filter>
</ClCompile>
<ClCompile Include="..\..\..\spine-c\src\spine\Atlas.c">
<Filter>Classes\spine-c</Filter>
</ClCompile>
<ClCompile Include="..\..\..\spine-c\src\spine\AtlasAttachmentLoader.c">
<Filter>Classes\spine-c</Filter>
</ClCompile>
<ClCompile Include="..\..\..\spine-c\src\spine\Attachment.c">
<Filter>Classes\spine-c</Filter>
</ClCompile>
<ClCompile Include="..\..\..\spine-c\src\spine\AttachmentLoader.c">
<Filter>Classes\spine-c</Filter>
</ClCompile>
<ClCompile Include="..\..\..\spine-c\src\spine\Bone.c">
<Filter>Classes\spine-c</Filter>
</ClCompile>
<ClCompile Include="..\..\..\spine-c\src\spine\BoneData.c">
<Filter>Classes\spine-c</Filter>
</ClCompile>
<ClCompile Include="..\..\..\spine-c\src\spine\extension.c">
<Filter>Classes\spine-c</Filter>
</ClCompile>
<ClCompile Include="..\..\..\spine-c\src\spine\Json.c">
<Filter>Classes\spine-c</Filter>
</ClCompile>
<ClCompile Include="..\..\..\spine-c\src\spine\RegionAttachment.c">
<Filter>Classes\spine-c</Filter>
</ClCompile>
<ClCompile Include="..\..\..\spine-c\src\spine\Skeleton.c">
<Filter>Classes\spine-c</Filter>
</ClCompile>
<ClCompile Include="..\..\..\spine-c\src\spine\SkeletonData.c">
<Filter>Classes\spine-c</Filter>
</ClCompile>
<ClCompile Include="..\..\..\spine-c\src\spine\SkeletonJson.c">
<Filter>Classes\spine-c</Filter>
</ClCompile>
<ClCompile Include="..\..\..\spine-c\src\spine\Skin.c">
<Filter>Classes\spine-c</Filter>
</ClCompile>
<ClCompile Include="..\..\..\spine-c\src\spine\Slot.c">
<Filter>Classes\spine-c</Filter>
</ClCompile>
<ClCompile Include="..\..\..\spine-c\src\spine\SlotData.c">
<Filter>Classes\spine-c</Filter>
</ClCompile>
<ClCompile Include="..\..\..\spine-c\src\spine\AnimationStateData.c">
<Filter>Classes\spine-c</Filter>
</ClCompile>
<ClCompile Include="..\..\..\spine-c\src\spine\AnimationState.c">
<Filter>Classes\spine-c</Filter>
</ClCompile>
<ClCompile Include="..\..\src\spine\CCSkeleton.cpp">
<Filter>Classes\spine-cocos2dx</Filter>
</ClCompile>
<ClCompile Include="..\..\src\spine\CCSkeletonAnimation.cpp">
<Filter>Classes\spine-cocos2dx</Filter>
</ClCompile>
<ClCompile Include="..\..\..\spine-c\src\spine\BoundingBoxAttachment.c">
<Filter>Classes\spine-c</Filter>
</ClCompile>
<ClCompile Include="..\..\..\spine-c\src\spine\SkeletonBounds.c">
<Filter>Classes\spine-c</Filter>
</ClCompile>
<ClCompile Include="..\..\..\spine-c\src\spine\Event.c">
<Filter>Classes\spine-c</Filter>
</ClCompile>
<ClCompile Include="..\..\..\spine-c\src\spine\EventData.c">
<Filter>Classes\spine-c</Filter>
<ClCompile Include="..\..\src\spine\SkeletonAnimation.cpp">
<Filter>src</Filter>
</ClCompile>
</ItemGroup>
</Project>

View File

@ -1,304 +0,0 @@
/******************************************************************************
* Spine Runtimes Software License
* Version 2.1
*
* Copyright (c) 2013, Esoteric Software
* All rights reserved.
*
* You are granted a perpetual, non-exclusive, non-sublicensable and
* non-transferable license to install, execute and perform the Spine Runtimes
* Software (the "Software") solely for internal use. Without the written
* permission of Esoteric Software (typically granted by licensing Spine), you
* may not (a) modify, translate, adapt or otherwise create derivative works,
* improvements of the Software or develop new applications using the Software
* or (b) remove, delete, alter or obscure any trademarks or any copyright,
* trademark, patent or other intellectual property or proprietary rights
* notices on or in the Software, including any copy thereof. Redistributions
* in binary or source form must include this license and terms.
*
* THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
* EVENT SHALL ESOTERIC SOFTARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*****************************************************************************/
#include <spine/CCSkeleton.h>
#include <spine/spine-cocos2dx.h>
#include <algorithm>
USING_NS_CC;
using std::min;
using std::max;
namespace spine {
CCSkeleton* CCSkeleton::createWithData (spSkeletonData* skeletonData, bool ownsSkeletonData) {
CCSkeleton* node = new CCSkeleton(skeletonData, ownsSkeletonData);
node->autorelease();
return node;
}
CCSkeleton* CCSkeleton::createWithFile (const char* skeletonDataFile, spAtlas* atlas, float scale) {
CCSkeleton* node = new CCSkeleton(skeletonDataFile, atlas, scale);
node->autorelease();
return node;
}
CCSkeleton* CCSkeleton::createWithFile (const char* skeletonDataFile, const char* atlasFile, float scale) {
CCSkeleton* node = new CCSkeleton(skeletonDataFile, atlasFile, scale);
node->autorelease();
return node;
}
void CCSkeleton::initialize () {
atlas = 0;
debugSlots = false;
debugBones = false;
timeScale = 1;
blendFunc.src = GL_ONE;
blendFunc.dst = GL_ONE_MINUS_SRC_ALPHA;
setOpacityModifyRGB(true);
setShaderProgram(CCShaderCache::sharedShaderCache()->programForKey(kCCShader_PositionTextureColor));
scheduleUpdate();
}
void CCSkeleton::setSkeletonData (spSkeletonData *skeletonData, bool ownsSkeletonData) {
skeleton = spSkeleton_create(skeletonData);
rootBone = skeleton->bones[0];
this->ownsSkeletonData = ownsSkeletonData;
}
CCSkeleton::CCSkeleton () {
initialize();
}
CCSkeleton::CCSkeleton (spSkeletonData *skeletonData, bool ownsSkeletonData) {
initialize();
setSkeletonData(skeletonData, ownsSkeletonData);
}
CCSkeleton::CCSkeleton (const char* skeletonDataFile, spAtlas* atlas, float scale) {
initialize();
spSkeletonJson* json = spSkeletonJson_create(atlas);
json->scale = scale == 0 ? (1 / CCDirector::sharedDirector()->getContentScaleFactor()) : scale;
spSkeletonData* skeletonData = spSkeletonJson_readSkeletonDataFile(json, skeletonDataFile);
CCAssert(skeletonData, json->error ? json->error : "Error reading skeleton data.");
spSkeletonJson_dispose(json);
setSkeletonData(skeletonData, true);
}
CCSkeleton::CCSkeleton (const char* skeletonDataFile, const char* atlasFile, float scale) {
initialize();
atlas = spAtlas_readAtlasFile(atlasFile);
CCAssert(atlas, "Error reading atlas file.");
spSkeletonJson* json = spSkeletonJson_create(atlas);
json->scale = scale == 0 ? (1 / CCDirector::sharedDirector()->getContentScaleFactor()) : scale;
spSkeletonData* skeletonData = spSkeletonJson_readSkeletonDataFile(json, skeletonDataFile);
CCAssert(skeletonData, json->error ? json->error : "Error reading skeleton data file.");
spSkeletonJson_dispose(json);
setSkeletonData(skeletonData, true);
}
CCSkeleton::~CCSkeleton () {
if (ownsSkeletonData) spSkeletonData_dispose(skeleton->data);
if (atlas) spAtlas_dispose(atlas);
spSkeleton_dispose(skeleton);
}
void CCSkeleton::update (float deltaTime) {
spSkeleton_update(skeleton, deltaTime * timeScale);
}
void CCSkeleton::draw () {
CC_NODE_DRAW_SETUP();
ccGLBlendFunc(blendFunc.src, blendFunc.dst);
ccColor3B color = getColor();
skeleton->r = color.r / (float)255;
skeleton->g = color.g / (float)255;
skeleton->b = color.b / (float)255;
skeleton->a = getOpacity() / (float)255;
int additive = 0;
CCTextureAtlas* textureAtlas = 0;
ccV3F_C4B_T2F_Quad quad;
quad.tl.vertices.z = 0;
quad.tr.vertices.z = 0;
quad.bl.vertices.z = 0;
quad.br.vertices.z = 0;
for (int i = 0, n = skeleton->slotCount; i < n; i++) {
spSlot* slot = skeleton->drawOrder[i];
if (!slot->attachment || slot->attachment->type != ATTACHMENT_REGION) continue;
spRegionAttachment* attachment = (spRegionAttachment*)slot->attachment;
CCTextureAtlas* regionTextureAtlas = getTextureAtlas(attachment);
if (slot->data->additiveBlending != additive) {
if (textureAtlas) {
textureAtlas->drawQuads();
textureAtlas->removeAllQuads();
}
additive = !additive;
ccGLBlendFunc(blendFunc.src, additive ? GL_ONE : blendFunc.dst);
} else if (regionTextureAtlas != textureAtlas && textureAtlas) {
textureAtlas->drawQuads();
textureAtlas->removeAllQuads();
}
textureAtlas = regionTextureAtlas;
int quadCount = textureAtlas->getTotalQuads();
if (textureAtlas->getCapacity() == quadCount) {
textureAtlas->drawQuads();
textureAtlas->removeAllQuads();
if (!textureAtlas->resizeCapacity(textureAtlas->getCapacity() * 2)) return;
}
spRegionAttachment_updateQuad(attachment, slot, &quad, premultipliedAlpha);
textureAtlas->updateQuad(&quad, quadCount);
}
if (textureAtlas) {
textureAtlas->drawQuads();
textureAtlas->removeAllQuads();
}
if (debugSlots) {
// Slots.
ccDrawColor4B(0, 0, 255, 255);
glLineWidth(1);
CCPoint points[4];
ccV3F_C4B_T2F_Quad quad;
for (int i = 0, n = skeleton->slotCount; i < n; i++) {
spSlot* slot = skeleton->drawOrder[i];
if (!slot->attachment || slot->attachment->type != ATTACHMENT_REGION) continue;
spRegionAttachment* attachment = (spRegionAttachment*)slot->attachment;
spRegionAttachment_updateQuad(attachment, slot, &quad);
points[0] = ccp(quad.bl.vertices.x, quad.bl.vertices.y);
points[1] = ccp(quad.br.vertices.x, quad.br.vertices.y);
points[2] = ccp(quad.tr.vertices.x, quad.tr.vertices.y);
points[3] = ccp(quad.tl.vertices.x, quad.tl.vertices.y);
ccDrawPoly(points, 4, true);
}
}
if (debugBones) {
// Bone lengths.
glLineWidth(2);
ccDrawColor4B(255, 0, 0, 255);
for (int i = 0, n = skeleton->boneCount; i < n; i++) {
spBone *bone = skeleton->bones[i];
float x = bone->data->length * bone->m00 + bone->worldX;
float y = bone->data->length * bone->m10 + bone->worldY;
ccDrawLine(ccp(bone->worldX, bone->worldY), ccp(x, y));
}
// Bone origins.
ccPointSize(4);
ccDrawColor4B(0, 0, 255, 255); // Root bone is blue.
for (int i = 0, n = skeleton->boneCount; i < n; i++) {
spBone *bone = skeleton->bones[i];
ccDrawPoint(ccp(bone->worldX, bone->worldY));
if (i == 0) ccDrawColor4B(0, 255, 0, 255);
}
}
}
CCTextureAtlas* CCSkeleton::getTextureAtlas (spRegionAttachment* regionAttachment) const {
return (CCTextureAtlas*)((spAtlasRegion*)regionAttachment->rendererObject)->page->rendererObject;
}
CCRect CCSkeleton::boundingBox () {
float minX = FLT_MAX, minY = FLT_MAX, maxX = FLT_MIN, maxY = FLT_MIN;
float scaleX = getScaleX();
float scaleY = getScaleY();
float vertices[8];
for (int i = 0; i < skeleton->slotCount; ++i) {
spSlot* slot = skeleton->slots[i];
if (!slot->attachment || slot->attachment->type != ATTACHMENT_REGION) continue;
spRegionAttachment* attachment = (spRegionAttachment*)slot->attachment;
spRegionAttachment_computeWorldVertices(attachment, slot->skeleton->x, slot->skeleton->y, slot->bone, vertices);
minX = min(minX, vertices[VERTEX_X1] * scaleX);
minY = min(minY, vertices[VERTEX_Y1] * scaleY);
maxX = max(maxX, vertices[VERTEX_X1] * scaleX);
maxY = max(maxY, vertices[VERTEX_Y1] * scaleY);
minX = min(minX, vertices[VERTEX_X4] * scaleX);
minY = min(minY, vertices[VERTEX_Y4] * scaleY);
maxX = max(maxX, vertices[VERTEX_X4] * scaleX);
maxY = max(maxY, vertices[VERTEX_Y4] * scaleY);
minX = min(minX, vertices[VERTEX_X2] * scaleX);
minY = min(minY, vertices[VERTEX_Y2] * scaleY);
maxX = max(maxX, vertices[VERTEX_X2] * scaleX);
maxY = max(maxY, vertices[VERTEX_Y2] * scaleY);
minX = min(minX, vertices[VERTEX_X3] * scaleX);
minY = min(minY, vertices[VERTEX_Y3] * scaleY);
maxX = max(maxX, vertices[VERTEX_X3] * scaleX);
maxY = max(maxY, vertices[VERTEX_Y3] * scaleY);
}
CCPoint position = getPosition();
return CCRectMake(position.x + minX, position.y + minY, maxX - minX, maxY - minY);
}
// --- Convenience methods for Skeleton_* functions.
void CCSkeleton::updateWorldTransform () {
spSkeleton_updateWorldTransform(skeleton);
}
void CCSkeleton::setToSetupPose () {
spSkeleton_setToSetupPose(skeleton);
}
void CCSkeleton::setBonesToSetupPose () {
spSkeleton_setBonesToSetupPose(skeleton);
}
void CCSkeleton::setSlotsToSetupPose () {
spSkeleton_setSlotsToSetupPose(skeleton);
}
spBone* CCSkeleton::findBone (const char* boneName) const {
return spSkeleton_findBone(skeleton, boneName);
}
spSlot* CCSkeleton::findSlot (const char* slotName) const {
return spSkeleton_findSlot(skeleton, slotName);
}
bool CCSkeleton::setSkin (const char* skinName) {
return spSkeleton_setSkinByName(skeleton, skinName) ? true : false;
}
spAttachment* CCSkeleton::getAttachment (const char* slotName, const char* attachmentName) const {
return spSkeleton_getAttachmentForSlotName(skeleton, slotName, attachmentName);
}
bool CCSkeleton::setAttachment (const char* slotName, const char* attachmentName) {
return spSkeleton_setAttachment(skeleton, slotName, attachmentName) ? true : false;
}
// --- CCBlendProtocol
ccBlendFunc CCSkeleton::getBlendFunc () {
return blendFunc;
}
void CCSkeleton::setBlendFunc (ccBlendFunc blendFunc) {
this->blendFunc = blendFunc;
}
void CCSkeleton::setOpacityModifyRGB (bool value) {
premultipliedAlpha = value;
}
bool CCSkeleton::isOpacityModifyRGB () {
return premultipliedAlpha;
}
}

View File

@ -28,7 +28,7 @@
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*****************************************************************************/
#include <spine/CCSkeletonAnimation.h>
#include <spine/SkeletonAnimation.h>
#include <spine/extension.h>
#include <spine/spine-cocos2dx.h>
#include <algorithm>
@ -41,28 +41,28 @@ using std::vector;
namespace spine {
static void callback (spAnimationState* state, int trackIndex, spEventType type, spEvent* event, int loopCount) {
((CCSkeletonAnimation*)state->context)->onAnimationStateEvent(trackIndex, type, event, loopCount);
((SkeletonAnimation*)state->context)->onAnimationStateEvent(trackIndex, type, event, loopCount);
}
CCSkeletonAnimation* CCSkeletonAnimation::createWithData (spSkeletonData* skeletonData) {
CCSkeletonAnimation* node = new CCSkeletonAnimation(skeletonData);
SkeletonAnimation* SkeletonAnimation::createWithData (spSkeletonData* skeletonData) {
SkeletonAnimation* node = new SkeletonAnimation(skeletonData);
node->autorelease();
return node;
}
CCSkeletonAnimation* CCSkeletonAnimation::createWithFile (const char* skeletonDataFile, spAtlas* atlas, float scale) {
CCSkeletonAnimation* node = new CCSkeletonAnimation(skeletonDataFile, atlas, scale);
SkeletonAnimation* SkeletonAnimation::createWithFile (const char* skeletonDataFile, spAtlas* atlas, float scale) {
SkeletonAnimation* node = new SkeletonAnimation(skeletonDataFile, atlas, scale);
node->autorelease();
return node;
}
CCSkeletonAnimation* CCSkeletonAnimation::createWithFile (const char* skeletonDataFile, const char* atlasFile, float scale) {
CCSkeletonAnimation* node = new CCSkeletonAnimation(skeletonDataFile, atlasFile, scale);
SkeletonAnimation* SkeletonAnimation::createWithFile (const char* skeletonDataFile, const char* atlasFile, float scale) {
SkeletonAnimation* node = new SkeletonAnimation(skeletonDataFile, atlasFile, scale);
node->autorelease();
return node;
}
void CCSkeletonAnimation::initialize () {
void SkeletonAnimation::initialize () {
listenerInstance = 0;
listenerMethod = 0;
@ -72,27 +72,27 @@ void CCSkeletonAnimation::initialize () {
state->listener = callback;
}
CCSkeletonAnimation::CCSkeletonAnimation (spSkeletonData *skeletonData)
: CCSkeleton(skeletonData) {
SkeletonAnimation::SkeletonAnimation (spSkeletonData *skeletonData)
: SkeletonRenderer(skeletonData) {
initialize();
}
CCSkeletonAnimation::CCSkeletonAnimation (const char* skeletonDataFile, spAtlas* atlas, float scale)
: CCSkeleton(skeletonDataFile, atlas, scale) {
SkeletonAnimation::SkeletonAnimation (const char* skeletonDataFile, spAtlas* atlas, float scale)
: SkeletonRenderer(skeletonDataFile, atlas, scale) {
initialize();
}
CCSkeletonAnimation::CCSkeletonAnimation (const char* skeletonDataFile, const char* atlasFile, float scale)
: CCSkeleton(skeletonDataFile, atlasFile, scale) {
SkeletonAnimation::SkeletonAnimation (const char* skeletonDataFile, const char* atlasFile, float scale)
: SkeletonRenderer(skeletonDataFile, atlasFile, scale) {
initialize();
}
CCSkeletonAnimation::~CCSkeletonAnimation () {
SkeletonAnimation::~SkeletonAnimation () {
if (ownsAnimationStateData) spAnimationStateData_dispose(state->data);
spAnimationState_dispose(state);
}
void CCSkeletonAnimation::update (float deltaTime) {
void SkeletonAnimation::update (float deltaTime) {
super::update(deltaTime);
deltaTime *= timeScale;
@ -101,8 +101,8 @@ void CCSkeletonAnimation::update (float deltaTime) {
spSkeleton_updateWorldTransform(skeleton);
}
void CCSkeletonAnimation::setAnimationStateData (spAnimationStateData* stateData) {
CCAssert(stateData, "stateData cannot be null.");
void SkeletonAnimation::setAnimationStateData (spAnimationStateData* stateData) {
CCASSERT(stateData, "stateData cannot be null.");
if (ownsAnimationStateData) spAnimationStateData_dispose(state->data);
spAnimationState_dispose(state);
@ -113,46 +113,46 @@ void CCSkeletonAnimation::setAnimationStateData (spAnimationStateData* stateData
state->listener = callback;
}
void CCSkeletonAnimation::setMix (const char* fromAnimation, const char* toAnimation, float duration) {
void SkeletonAnimation::setMix (const char* fromAnimation, const char* toAnimation, float duration) {
spAnimationStateData_setMixByName(state->data, fromAnimation, toAnimation, duration);
}
void CCSkeletonAnimation::setAnimationListener (CCObject* instance, SEL_AnimationStateEvent method) {
void SkeletonAnimation::setAnimationListener (Ref* instance, SEL_AnimationStateEvent method) {
listenerInstance = instance;
listenerMethod = method;
}
spTrackEntry* CCSkeletonAnimation::setAnimation (int trackIndex, const char* name, bool loop) {
spTrackEntry* SkeletonAnimation::setAnimation (int trackIndex, const char* name, bool loop) {
spAnimation* animation = spSkeletonData_findAnimation(skeleton->data, name);
if (!animation) {
CCLog("Spine: Animation not found: %s", name);
log("Spine: Animation not found: %s", name);
return 0;
}
return spAnimationState_setAnimation(state, trackIndex, animation, loop);
}
spTrackEntry* CCSkeletonAnimation::addAnimation (int trackIndex, const char* name, bool loop, float delay) {
spTrackEntry* SkeletonAnimation::addAnimation (int trackIndex, const char* name, bool loop, float delay) {
spAnimation* animation = spSkeletonData_findAnimation(skeleton->data, name);
if (!animation) {
CCLog("Spine: Animation not found: %s", name);
log("Spine: Animation not found: %s", name);
return 0;
}
return spAnimationState_addAnimation(state, trackIndex, animation, loop, delay);
}
spTrackEntry* CCSkeletonAnimation::getCurrent (int trackIndex) {
spTrackEntry* SkeletonAnimation::getCurrent (int trackIndex) {
return spAnimationState_getCurrent(state, trackIndex);
}
void CCSkeletonAnimation::clearTracks () {
void SkeletonAnimation::clearTracks () {
spAnimationState_clearTracks(state);
}
void CCSkeletonAnimation::clearTrack (int trackIndex) {
void SkeletonAnimation::clearTrack (int trackIndex) {
spAnimationState_clearTrack(state, trackIndex);
}
void CCSkeletonAnimation::onAnimationStateEvent (int trackIndex, spEventType type, spEvent* event, int loopCount) {
void SkeletonAnimation::onAnimationStateEvent (int trackIndex, spEventType type, spEvent* event, int loopCount) {
if (listenerInstance) (listenerInstance->*listenerMethod)(this, trackIndex, type, event, loopCount);
}

View File

@ -28,41 +28,41 @@
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*****************************************************************************/
#ifndef SPINE_CCSKELETONANIMATION_H_
#define SPINE_CCSKELETONANIMATION_H_
#ifndef SPINE_SKELETONANIMATION_H_
#define SPINE_SKELETONANIMATION_H_
#include <spine/spine.h>
#include <spine/CCSkeleton.h>
#include <spine/SkeletonRenderer.h>
#include "cocos2d.h"
namespace spine {
class CCSkeletonAnimation;
typedef void (cocos2d::CCObject::*SEL_AnimationStateEvent)(spine::CCSkeletonAnimation* node, int trackIndex, spEventType type, spEvent* event, int loopCount);
class SkeletonAnimation;
typedef void (cocos2d::Ref::*SEL_AnimationStateEvent)(spine::SkeletonAnimation* node, int trackIndex, spEventType type, spEvent* event, int loopCount);
#define animationStateEvent_selector(_SELECTOR) (SEL_AnimationStateEvent)(&_SELECTOR)
/** Draws an animated skeleton, providing an AnimationState for applying one or more animations and queuing animations to be
* played later. */
class CCSkeletonAnimation: public CCSkeleton {
class SkeletonAnimation: public SkeletonRenderer {
public:
spAnimationState* state;
static CCSkeletonAnimation* createWithData (spSkeletonData* skeletonData);
static CCSkeletonAnimation* createWithFile (const char* skeletonDataFile, spAtlas* atlas, float scale = 0);
static CCSkeletonAnimation* createWithFile (const char* skeletonDataFile, const char* atlasFile, float scale = 0);
static SkeletonAnimation* createWithData (spSkeletonData* skeletonData);
static SkeletonAnimation* createWithFile (const char* skeletonDataFile, spAtlas* atlas, float scale = 0);
static SkeletonAnimation* createWithFile (const char* skeletonDataFile, const char* atlasFile, float scale = 0);
CCSkeletonAnimation (spSkeletonData* skeletonData);
CCSkeletonAnimation (const char* skeletonDataFile, spAtlas* atlas, float scale = 0);
CCSkeletonAnimation (const char* skeletonDataFile, const char* atlasFile, float scale = 0);
SkeletonAnimation (spSkeletonData* skeletonData);
SkeletonAnimation (const char* skeletonDataFile, spAtlas* atlas, float scale = 0);
SkeletonAnimation (const char* skeletonDataFile, const char* atlasFile, float scale = 0);
virtual ~CCSkeletonAnimation ();
virtual ~SkeletonAnimation ();
virtual void update (float deltaTime);
void setAnimationStateData (spAnimationStateData* stateData);
void setMix (const char* fromAnimation, const char* toAnimation, float duration);
void setAnimationListener (CCObject* instance, SEL_AnimationStateEvent method);
void setAnimationListener (cocos2d::Ref* instance, SEL_AnimationStateEvent method);
spTrackEntry* setAnimation (int trackIndex, const char* name, bool loop);
spTrackEntry* addAnimation (int trackIndex, const char* name, bool loop, float delay = 0);
spTrackEntry* getCurrent (int trackIndex = 0);
@ -72,11 +72,11 @@ public:
virtual void onAnimationStateEvent (int trackIndex, spEventType type, spEvent* event, int loopCount);
protected:
CCSkeletonAnimation ();
SkeletonAnimation ();
private:
typedef CCSkeleton super;
CCObject* listenerInstance;
typedef SkeletonRenderer super;
cocos2d::Ref* listenerInstance;
SEL_AnimationStateEvent listenerMethod;
bool ownsAnimationStateData;
@ -85,4 +85,4 @@ private:
}
#endif /* SPINE_CCSKELETONANIMATION_H_ */
#endif /* SPINE_SKELETONANIMATION_H_ */

View File

@ -0,0 +1,318 @@
/******************************************************************************
* Spine Runtimes Software License
* Version 2.1
*
* Copyright (c) 2013, Esoteric Software
* All rights reserved.
*
* You are granted a perpetual, non-exclusive, non-sublicensable and
* non-transferable license to install, execute and perform the Spine Runtimes
* Software (the "Software") solely for internal use. Without the written
* permission of Esoteric Software (typically granted by licensing Spine), you
* may not (a) modify, translate, adapt or otherwise create derivative works,
* improvements of the Software or develop new applications using the Software
* or (b) remove, delete, alter or obscure any trademarks or any copyright,
* trademark, patent or other intellectual property or proprietary rights
* notices on or in the Software, including any copy thereof. Redistributions
* in binary or source form must include this license and terms.
*
* THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
* EVENT SHALL ESOTERIC SOFTARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*****************************************************************************/
#include <spine/SkeletonRenderer.h>
#include <spine/spine-cocos2dx.h>
#include <algorithm>
USING_NS_CC;
using std::min;
using std::max;
namespace spine {
SkeletonRenderer* SkeletonRenderer::createWithData (spSkeletonData* skeletonData, bool ownsSkeletonData) {
SkeletonRenderer* node = new SkeletonRenderer(skeletonData, ownsSkeletonData);
node->autorelease();
return node;
}
SkeletonRenderer* SkeletonRenderer::createWithFile (const char* skeletonDataFile, spAtlas* atlas, float scale) {
SkeletonRenderer* node = new SkeletonRenderer(skeletonDataFile, atlas, scale);
node->autorelease();
return node;
}
SkeletonRenderer* SkeletonRenderer::createWithFile (const char* skeletonDataFile, const char* atlasFile, float scale) {
SkeletonRenderer* node = new SkeletonRenderer(skeletonDataFile, atlasFile, scale);
node->autorelease();
return node;
}
void SkeletonRenderer::initialize () {
atlas = 0;
debugSlots = false;
debugBones = false;
timeScale = 1;
blendFunc = BlendFunc::ALPHA_PREMULTIPLIED;
setOpacityModifyRGB(true);
setShaderProgram(ShaderCache::getInstance()->getProgram(GLProgram::SHADER_NAME_POSITION_TEXTURE_COLOR));
scheduleUpdate();
}
void SkeletonRenderer::setSkeletonData (spSkeletonData *skeletonData, bool ownsSkeletonData) {
skeleton = spSkeleton_create(skeletonData);
rootBone = skeleton->bones[0];
this->ownsSkeletonData = ownsSkeletonData;
}
SkeletonRenderer::SkeletonRenderer () {
initialize();
}
SkeletonRenderer::SkeletonRenderer (spSkeletonData *skeletonData, bool ownsSkeletonData) {
initialize();
setSkeletonData(skeletonData, ownsSkeletonData);
}
SkeletonRenderer::SkeletonRenderer (const char* skeletonDataFile, spAtlas* atlas, float scale) {
initialize();
spSkeletonJson* json = spSkeletonJson_create(atlas);
json->scale = scale == 0 ? (1 / Director::getInstance()->getContentScaleFactor()) : scale;
spSkeletonData* skeletonData = spSkeletonJson_readSkeletonDataFile(json, skeletonDataFile);
CCASSERT(skeletonData, json->error ? json->error : "Error reading skeleton data.");
spSkeletonJson_dispose(json);
setSkeletonData(skeletonData, true);
}
SkeletonRenderer::SkeletonRenderer (const char* skeletonDataFile, const char* atlasFile, float scale) {
initialize();
atlas = spAtlas_createFromFile(atlasFile, 0);
CCASSERT(atlas, "Error reading atlas file.");
spSkeletonJson* json = spSkeletonJson_create(atlas);
json->scale = scale == 0 ? (1 / Director::getInstance()->getContentScaleFactor()) : scale;
spSkeletonData* skeletonData = spSkeletonJson_readSkeletonDataFile(json, skeletonDataFile);
CCASSERT(skeletonData, json->error ? json->error : "Error reading skeleton data file.");
spSkeletonJson_dispose(json);
setSkeletonData(skeletonData, true);
}
SkeletonRenderer::~SkeletonRenderer () {
if (ownsSkeletonData) spSkeletonData_dispose(skeleton->data);
if (atlas) spAtlas_dispose(atlas);
spSkeleton_dispose(skeleton);
}
void SkeletonRenderer::update (float deltaTime) {
spSkeleton_update(skeleton, deltaTime * timeScale);
}
void SkeletonRenderer::draw (Renderer* renderer, const Matrix& transform, bool transformUpdated) {
drawCommand.init(_globalZOrder);
drawCommand.func = CC_CALLBACK_0(SkeletonRenderer::drawSkeleton, this, transform, transformUpdated);
renderer->addCommand(&drawCommand);
}
void SkeletonRenderer::drawSkeleton (const Matrix &transform, bool transformUpdated) {
getShaderProgram()->use();
getShaderProgram()->setUniformsForBuiltins(transform);
GL::blendFunc(blendFunc.src, blendFunc.dst);
Color3B color = getColor();
skeleton->r = color.r / (float)255;
skeleton->g = color.g / (float)255;
skeleton->b = color.b / (float)255;
skeleton->a = getOpacity() / (float)255;
int additive = 0;
TextureAtlas* textureAtlas = 0;
V3F_C4B_T2F_Quad quad;
quad.tl.vertices.z = 0;
quad.tr.vertices.z = 0;
quad.bl.vertices.z = 0;
quad.br.vertices.z = 0;
for (int i = 0, n = skeleton->slotCount; i < n; i++) {
spSlot* slot = skeleton->drawOrder[i];
if (!slot->attachment || slot->attachment->type != SP_ATTACHMENT_REGION) continue;
spRegionAttachment* attachment = (spRegionAttachment*)slot->attachment;
TextureAtlas* regionTextureAtlas = getTextureAtlas(attachment);
if (slot->data->additiveBlending != additive) {
if (textureAtlas) {
textureAtlas->drawQuads();
textureAtlas->removeAllQuads();
}
additive = !additive;
GL::blendFunc(blendFunc.src, additive ? GL_ONE : blendFunc.dst);
} else if (regionTextureAtlas != textureAtlas && textureAtlas) {
textureAtlas->drawQuads();
textureAtlas->removeAllQuads();
}
textureAtlas = regionTextureAtlas;
int quadCount = textureAtlas->getTotalQuads();
if (textureAtlas->getCapacity() == quadCount) {
textureAtlas->drawQuads();
textureAtlas->removeAllQuads();
if (!textureAtlas->resizeCapacity(textureAtlas->getCapacity() * 2)) return;
}
spRegionAttachment_updateQuad(attachment, slot, &quad, premultipliedAlpha);
textureAtlas->updateQuad(&quad, quadCount);
}
if (textureAtlas) {
textureAtlas->drawQuads();
textureAtlas->removeAllQuads();
}
if (debugSlots || debugBones) {
Director* director = Director::getInstance();
director->pushMatrix(MATRIX_STACK_TYPE::MATRIX_STACK_MODELVIEW);
director->loadMatrix(MATRIX_STACK_TYPE::MATRIX_STACK_MODELVIEW, transform);
if (debugSlots) {
// Slots.
DrawPrimitives::setDrawColor4B(0, 0, 255, 255);
glLineWidth(1);
Vector2 points[4];
V3F_C4B_T2F_Quad quad;
for (int i = 0, n = skeleton->slotCount; i < n; i++) {
spSlot* slot = skeleton->drawOrder[i];
if (!slot->attachment || slot->attachment->type != SP_ATTACHMENT_REGION) continue;
spRegionAttachment* attachment = (spRegionAttachment*)slot->attachment;
spRegionAttachment_updateQuad(attachment, slot, &quad);
points[0] = Vector2(quad.bl.vertices.x, quad.bl.vertices.y);
points[1] = Vector2(quad.br.vertices.x, quad.br.vertices.y);
points[2] = Vector2(quad.tr.vertices.x, quad.tr.vertices.y);
points[3] = Vector2(quad.tl.vertices.x, quad.tl.vertices.y);
DrawPrimitives::drawPoly(points, 4, true);
}
}
if (debugBones) {
// Bone lengths.
glLineWidth(2);
DrawPrimitives::setDrawColor4B(255, 0, 0, 255);
for (int i = 0, n = skeleton->boneCount; i < n; i++) {
spBone *bone = skeleton->bones[i];
float x = bone->data->length * bone->m00 + bone->worldX;
float y = bone->data->length * bone->m10 + bone->worldY;
DrawPrimitives::drawLine(Vector2(bone->worldX, bone->worldY), Vector2(x, y));
}
// Bone origins.
DrawPrimitives::setPointSize(4);
DrawPrimitives::setDrawColor4B(0, 0, 255, 255); // Root bone is blue.
for (int i = 0, n = skeleton->boneCount; i < n; i++) {
spBone *bone = skeleton->bones[i];
DrawPrimitives::drawPoint(Vector2(bone->worldX, bone->worldY));
if (i == 0) DrawPrimitives::setDrawColor4B(0, 255, 0, 255);
}
}
director->popMatrix(MATRIX_STACK_TYPE::MATRIX_STACK_MODELVIEW);
}
}
TextureAtlas* SkeletonRenderer::getTextureAtlas (spRegionAttachment* regionAttachment) const {
return (TextureAtlas*)((spAtlasRegion*)regionAttachment->rendererObject)->page->rendererObject;
}
Rect SkeletonRenderer::boundingBox () {
float minX = FLT_MAX, minY = FLT_MAX, maxX = FLT_MIN, maxY = FLT_MIN;
float scaleX = getScaleX();
float scaleY = getScaleY();
float vertices[8];
for (int i = 0; i < skeleton->slotCount; ++i) {
spSlot* slot = skeleton->slots[i];
if (!slot->attachment || slot->attachment->type != SP_ATTACHMENT_REGION) continue;
spRegionAttachment* attachment = (spRegionAttachment*)slot->attachment;
spRegionAttachment_computeWorldVertices(attachment, slot->skeleton->x, slot->skeleton->y, slot->bone, vertices);
minX = min(minX, vertices[SP_VERTEX_X1] * scaleX);
minY = min(minY, vertices[SP_VERTEX_Y1] * scaleY);
maxX = max(maxX, vertices[SP_VERTEX_X1] * scaleX);
maxY = max(maxY, vertices[SP_VERTEX_Y1] * scaleY);
minX = min(minX, vertices[SP_VERTEX_X4] * scaleX);
minY = min(minY, vertices[SP_VERTEX_Y4] * scaleY);
maxX = max(maxX, vertices[SP_VERTEX_X4] * scaleX);
maxY = max(maxY, vertices[SP_VERTEX_Y4] * scaleY);
minX = min(minX, vertices[SP_VERTEX_X2] * scaleX);
minY = min(minY, vertices[SP_VERTEX_Y2] * scaleY);
maxX = max(maxX, vertices[SP_VERTEX_X2] * scaleX);
maxY = max(maxY, vertices[SP_VERTEX_Y2] * scaleY);
minX = min(minX, vertices[SP_VERTEX_X3] * scaleX);
minY = min(minY, vertices[SP_VERTEX_Y3] * scaleY);
maxX = max(maxX, vertices[SP_VERTEX_X3] * scaleX);
maxY = max(maxY, vertices[SP_VERTEX_Y3] * scaleY);
}
Vector2 position = getPosition();
return Rect(position.x + minX, position.y + minY, maxX - minX, maxY - minY);
}
// --- Convenience methods for Skeleton_* functions.
void SkeletonRenderer::updateWorldTransform () {
spSkeleton_updateWorldTransform(skeleton);
}
void SkeletonRenderer::setToSetupPose () {
spSkeleton_setToSetupPose(skeleton);
}
void SkeletonRenderer::setBonesToSetupPose () {
spSkeleton_setBonesToSetupPose(skeleton);
}
void SkeletonRenderer::setSlotsToSetupPose () {
spSkeleton_setSlotsToSetupPose(skeleton);
}
spBone* SkeletonRenderer::findBone (const char* boneName) const {
return spSkeleton_findBone(skeleton, boneName);
}
spSlot* SkeletonRenderer::findSlot (const char* slotName) const {
return spSkeleton_findSlot(skeleton, slotName);
}
bool SkeletonRenderer::setSkin (const char* skinName) {
return spSkeleton_setSkinByName(skeleton, skinName) ? true : false;
}
spAttachment* SkeletonRenderer::getAttachment (const char* slotName, const char* attachmentName) const {
return spSkeleton_getAttachmentForSlotName(skeleton, slotName, attachmentName);
}
bool SkeletonRenderer::setAttachment (const char* slotName, const char* attachmentName) {
return spSkeleton_setAttachment(skeleton, slotName, attachmentName) ? true : false;
}
// --- CCBlendProtocol
const BlendFunc& SkeletonRenderer::getBlendFunc () const {
return blendFunc;
}
void SkeletonRenderer::setBlendFunc (const cocos2d::BlendFunc &) {
this->blendFunc = blendFunc;
}
void SkeletonRenderer::setOpacityModifyRGB (bool value) {
premultipliedAlpha = value;
}
bool SkeletonRenderer::isOpacityModifyRGB () {
return premultipliedAlpha;
}
}

View File

@ -28,8 +28,8 @@
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*****************************************************************************/
#ifndef SPINE_CCSKELETON_H_
#define SPINE_CCSKELETON_H_
#ifndef SPINE_SKELETONRENDERER_H_
#define SPINE_SKELETONRENDERER_H_
#include <spine/spine.h>
#include "cocos2d.h"
@ -37,7 +37,7 @@
namespace spine {
/** Draws a skeleton. */
class CCSkeleton: public cocos2d::CCNodeRGBA, public cocos2d::CCBlendProtocol {
class SkeletonRenderer: public cocos2d::NodeRGBA, public cocos2d::BlendProtocol {
public:
spSkeleton* skeleton;
spBone* rootBone;
@ -46,19 +46,20 @@ public:
bool debugBones;
bool premultipliedAlpha;
static CCSkeleton* createWithData (spSkeletonData* skeletonData, bool ownsSkeletonData = false);
static CCSkeleton* createWithFile (const char* skeletonDataFile, spAtlas* atlas, float scale = 0);
static CCSkeleton* createWithFile (const char* skeletonDataFile, const char* atlasFile, float scale = 0);
static SkeletonRenderer* createWithData (spSkeletonData* skeletonData, bool ownsSkeletonData = false);
static SkeletonRenderer* createWithFile (const char* skeletonDataFile, spAtlas* atlas, float scale = 0);
static SkeletonRenderer* createWithFile (const char* skeletonDataFile, const char* atlasFile, float scale = 0);
CCSkeleton (spSkeletonData* skeletonData, bool ownsSkeletonData = false);
CCSkeleton (const char* skeletonDataFile, spAtlas* atlas, float scale = 0);
CCSkeleton (const char* skeletonDataFile, const char* atlasFile, float scale = 0);
SkeletonRenderer (spSkeletonData* skeletonData, bool ownsSkeletonData = false);
SkeletonRenderer (const char* skeletonDataFile, spAtlas* atlas, float scale = 0);
SkeletonRenderer (const char* skeletonDataFile, const char* atlasFile, float scale = 0);
virtual ~CCSkeleton ();
virtual ~SkeletonRenderer ();
virtual void update (float deltaTime);
virtual void draw ();
virtual cocos2d::CCRect boundingBox ();
virtual void draw (cocos2d::Renderer* renderer, const cocos2d::Matrix& transform, bool transformUpdated) override;
void drawSkeleton (const cocos2d::Matrix& transform, bool transformUpdated);
virtual cocos2d::Rect boundingBox ();
// --- Convenience methods for common Skeleton_* functions.
void updateWorldTransform ();
@ -82,22 +83,25 @@ public:
/* Returns false if the slot or attachment was not found. */
bool setAttachment (const char* slotName, const char* attachmentName);
// --- CCBlendProtocol
CC_PROPERTY(cocos2d::ccBlendFunc, blendFunc, BlendFunc);
// --- BlendProtocol
virtual void setBlendFunc (const cocos2d::BlendFunc& blendFunc);
virtual const cocos2d::BlendFunc& getBlendFunc () const;
virtual void setOpacityModifyRGB (bool value);
virtual bool isOpacityModifyRGB ();
protected:
CCSkeleton ();
SkeletonRenderer ();
void setSkeletonData (spSkeletonData* skeletonData, bool ownsSkeletonData);
virtual cocos2d::CCTextureAtlas* getTextureAtlas (spRegionAttachment* regionAttachment) const;
virtual cocos2d::TextureAtlas* getTextureAtlas (spRegionAttachment* regionAttachment) const;
private:
bool ownsSkeletonData;
spAtlas* atlas;
cocos2d::BlendFunc blendFunc;
cocos2d::CustomCommand drawCommand;
void initialize ();
};
}
#endif /* SPINE_CCSKELETON_H_ */
#endif /* SPINE_SKELETONRENDERER_H_ */

View File

@ -34,8 +34,8 @@
USING_NS_CC;
void _spAtlasPage_createTexture (spAtlasPage* self, const char* path) {
CCTexture2D* texture = CCTextureCache::sharedTextureCache()->addImage(path);
CCTextureAtlas* textureAtlas = CCTextureAtlas::createWithTexture(texture, 128);
Texture2D* texture = Director::getInstance()->getTextureCache()->addImage(path);
TextureAtlas* textureAtlas = TextureAtlas::createWithTexture(texture, 128);
textureAtlas->retain();
self->rendererObject = textureAtlas;
self->width = texture->getPixelsWide();
@ -43,20 +43,21 @@ void _spAtlasPage_createTexture (spAtlasPage* self, const char* path) {
}
void _spAtlasPage_disposeTexture (spAtlasPage* self) {
((CCTextureAtlas*)self->rendererObject)->release();
((TextureAtlas*)self->rendererObject)->release();
}
char* _spUtil_readFile (const char* path, int* length) {
unsigned long size;
char* data = reinterpret_cast<char*>(CCFileUtils::sharedFileUtils()->getFileData(
CCFileUtils::sharedFileUtils()->fullPathForFilename(path).c_str(), "r", &size));
*length = size;
return data;
Data data = FileUtils::getInstance()->getDataFromFile(
FileUtils::getInstance()->fullPathForFilename(path).c_str());
*length = data.getSize();
char* bytes = MALLOC(char, *length);
memcpy(bytes, data.getBytes(), *length);
return bytes;
}
/**/
void spRegionAttachment_updateQuad (spRegionAttachment* self, spSlot* slot, ccV3F_C4B_T2F_Quad* quad, bool premultipliedAlpha) {
void spRegionAttachment_updateQuad (spRegionAttachment* self, spSlot* slot, V3F_C4B_T2F_Quad* quad, bool premultipliedAlpha) {
float vertices[8];
spRegionAttachment_computeWorldVertices(self, slot->skeleton->x, slot->skeleton->y, slot->bone, vertices);
@ -87,21 +88,21 @@ void spRegionAttachment_updateQuad (spRegionAttachment* self, spSlot* slot, ccV3
quad->br.colors.b = b;
quad->br.colors.a = a;
quad->bl.vertices.x = vertices[VERTEX_X1];
quad->bl.vertices.y = vertices[VERTEX_Y1];
quad->tl.vertices.x = vertices[VERTEX_X2];
quad->tl.vertices.y = vertices[VERTEX_Y2];
quad->tr.vertices.x = vertices[VERTEX_X3];
quad->tr.vertices.y = vertices[VERTEX_Y3];
quad->br.vertices.x = vertices[VERTEX_X4];
quad->br.vertices.y = vertices[VERTEX_Y4];
quad->bl.vertices.x = vertices[SP_VERTEX_X1];
quad->bl.vertices.y = vertices[SP_VERTEX_Y1];
quad->tl.vertices.x = vertices[SP_VERTEX_X2];
quad->tl.vertices.y = vertices[SP_VERTEX_Y2];
quad->tr.vertices.x = vertices[SP_VERTEX_X3];
quad->tr.vertices.y = vertices[SP_VERTEX_Y3];
quad->br.vertices.x = vertices[SP_VERTEX_X4];
quad->br.vertices.y = vertices[SP_VERTEX_Y4];
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];
quad->bl.texCoords.u = self->uvs[SP_VERTEX_X1];
quad->bl.texCoords.v = self->uvs[SP_VERTEX_Y1];
quad->tl.texCoords.u = self->uvs[SP_VERTEX_X2];
quad->tl.texCoords.v = self->uvs[SP_VERTEX_Y2];
quad->tr.texCoords.u = self->uvs[SP_VERTEX_X3];
quad->tr.texCoords.v = self->uvs[SP_VERTEX_Y3];
quad->br.texCoords.u = self->uvs[SP_VERTEX_X4];
quad->br.texCoords.v = self->uvs[SP_VERTEX_Y4];
}

View File

@ -33,9 +33,9 @@
#include <spine/spine.h>
#include "cocos2d.h"
#include <spine/CCSkeleton.h>
#include <spine/CCSkeletonAnimation.h>
#include <spine/SkeletonRenderer.h>
#include <spine/SkeletonAnimation.h>
void spRegionAttachment_updateQuad (spRegionAttachment* self, spSlot* slot, cocos2d::ccV3F_C4B_T2F_Quad* quad, bool premultiplied = false);
void spRegionAttachment_updateQuad (spRegionAttachment* self, spSlot* slot, cocos2d::V3F_C4B_T2F_Quad* quad, bool premultiplied = false);
#endif /* SPINE_COCOS2DX_H_ */