|
@@ -42,49 +42,49 @@ Scene* SkeletonRendererSeparatorExample::scene () {
|
|
|
|
|
|
bool SkeletonRendererSeparatorExample::init () {
|
|
|
if (!LayerColor::initWithColor(Color4B(128, 128, 128, 255))) return false;
|
|
|
-
|
|
|
- // Spineboy's back, which will manage the animation and GPU resources
|
|
|
+
|
|
|
+ // Spineboy's back, which will manage the animation and GPU resources
|
|
|
// will render only the front slots of Spineboy
|
|
|
- backNode = SkeletonAnimation::createWithJsonFile("spineboy-ess.json", "spineboy.atlas", 0.6f);
|
|
|
- backNode->setMix("walk", "jump", 0.4);
|
|
|
- backNode->setAnimation(0, "walk", true);
|
|
|
- backNode->setSlotsRange(backNode->findSlot("rear-upper-arm")->data->index, backNode->findSlot("rear-shin")->data->index);
|
|
|
- backNode->setPosition(Vec2(_contentSize.width / 2, 20));
|
|
|
-
|
|
|
- // A simple rectangle to go between the front and back slots of Spineboy
|
|
|
- betweenNode = DrawNode::create();
|
|
|
- Vec2 rect[4];
|
|
|
- rect[0] = Vec2(0, 0);
|
|
|
- rect[1] = Vec2(40, 0);
|
|
|
- rect[2] = Vec2(40, 200);
|
|
|
- rect[3] = Vec2(0, 200);
|
|
|
- betweenNode->drawPolygon(rect, 4, Color4F(1, 0, 0, 1), 1, Color4F(1, 0, 0, 1));
|
|
|
- betweenNode->setPosition(Vec2(_contentSize.width / 2 + 30, 20));
|
|
|
-
|
|
|
- // Spineboy's front, doesn't manage any skeleton, animation or GPU resources, but simply
|
|
|
- // renders the back slots of Spineboy. The skeleton, animatio state and GPU resources
|
|
|
- // are shared with the front node!
|
|
|
- frontNode = SkeletonRenderer::createWithSkeleton(backNode->getSkeleton());
|
|
|
- frontNode->setSlotsRange(frontNode->findSlot("neck")->data->index, -1);
|
|
|
- frontNode->setPosition(Vec2(_contentSize.width / 2, 20));
|
|
|
-
|
|
|
- // Add the front, between and back node in the correct order to this scene
|
|
|
- addChild(backNode);
|
|
|
- addChild(betweenNode);
|
|
|
+ backNode = SkeletonAnimation::createWithJsonFile("spineboy-pro.json", "spineboy.atlas", 0.6f);
|
|
|
+ backNode->setMix("walk", "jump", 0.4);
|
|
|
+ backNode->setAnimation(0, "walk", true);
|
|
|
+ backNode->setSlotsRange(backNode->findSlot("rear-upper-arm")->data->index, backNode->findSlot("rear-shin")->data->index);
|
|
|
+ backNode->setPosition(Vec2(_contentSize.width / 2, 20));
|
|
|
+
|
|
|
+ // A simple rectangle to go between the front and back slots of Spineboy
|
|
|
+ betweenNode = DrawNode::create();
|
|
|
+ Vec2 rect[4];
|
|
|
+ rect[0] = Vec2(0, 0);
|
|
|
+ rect[1] = Vec2(40, 0);
|
|
|
+ rect[2] = Vec2(40, 200);
|
|
|
+ rect[3] = Vec2(0, 200);
|
|
|
+ betweenNode->drawPolygon(rect, 4, Color4F(1, 0, 0, 1), 1, Color4F(1, 0, 0, 1));
|
|
|
+ betweenNode->setPosition(Vec2(_contentSize.width / 2 + 30, 20));
|
|
|
+
|
|
|
+ // Spineboy's front, doesn't manage any skeleton, animation or GPU resources, but simply
|
|
|
+ // renders the back slots of Spineboy. The skeleton, animatio state and GPU resources
|
|
|
+ // are shared with the front node!
|
|
|
+ frontNode = SkeletonRenderer::createWithSkeleton(backNode->getSkeleton());
|
|
|
+ frontNode->setSlotsRange(frontNode->findSlot("neck")->data->index, -1);
|
|
|
+ frontNode->setPosition(Vec2(_contentSize.width / 2, 20));
|
|
|
+
|
|
|
+ // Add the front, between and back node in the correct order to this scene
|
|
|
+ addChild(backNode);
|
|
|
+ addChild(betweenNode);
|
|
|
addChild(frontNode);
|
|
|
|
|
|
scheduleUpdate();
|
|
|
|
|
|
EventListenerTouchOneByOne* listener = EventListenerTouchOneByOne::create();
|
|
|
listener->onTouchBegan = [this] (Touch* touch, Event* event) -> bool {
|
|
|
- if (!backNode->getDebugBonesEnabled())
|
|
|
+ if (!backNode->getDebugBonesEnabled())
|
|
|
{
|
|
|
- backNode->setDebugBonesEnabled(true);
|
|
|
- backNode->setDebugSlotsEnabled(true);
|
|
|
- backNode->setDebugBoundingRectEnabled(true);
|
|
|
- frontNode->setDebugBonesEnabled(true);
|
|
|
- frontNode->setDebugSlotsEnabled(true);
|
|
|
- frontNode->setDebugBoundingRectEnabled(true);
|
|
|
+ backNode->setDebugBonesEnabled(true);
|
|
|
+ backNode->setDebugSlotsEnabled(true);
|
|
|
+ backNode->setDebugBoundingRectEnabled(true);
|
|
|
+ frontNode->setDebugBonesEnabled(true);
|
|
|
+ frontNode->setDebugSlotsEnabled(true);
|
|
|
+ frontNode->setDebugBoundingRectEnabled(true);
|
|
|
}
|
|
|
else if (backNode->getTimeScale() == 1)
|
|
|
backNode->setTimeScale(0.3f);
|