diff --git a/spine-sfml/example/main.cpp b/spine-sfml/example/main.cpp index 66d2d9457..916bb39e6 100644 --- a/spine-sfml/example/main.cpp +++ b/spine-sfml/example/main.cpp @@ -366,6 +366,60 @@ void coin (SkeletonData* skeletonData, Atlas* atlas) { } } +void owl (SkeletonData* skeletonData, Atlas* atlas) { + SkeletonDrawable* drawable = new SkeletonDrawable(skeletonData); + drawable->timeScale = 1; + + Skeleton* skeleton = drawable->skeleton; + skeleton->x = 320; + skeleton->y = 400; + Skeleton_updateWorldTransform(skeleton); + + AnimationState_setAnimationByName(drawable->state, 0, "idle", true); + AnimationState_setAnimationByName(drawable->state, 1, "blink", true); + spTrackEntry* left = AnimationState_setAnimationByName(drawable->state, 2, "left", true); + spTrackEntry* right = AnimationState_setAnimationByName(drawable->state, 3, "right", true); + spTrackEntry* up = AnimationState_setAnimationByName(drawable->state, 4, "up", true); + spTrackEntry* down = AnimationState_setAnimationByName(drawable->state, 5, "down", true); + + left->alpha = 0; + left->mixBlend = SP_MIX_BLEND_ADD; + right->alpha = 0; + right->mixBlend = SP_MIX_BLEND_ADD; + up->alpha = 0; + up->mixBlend = SP_MIX_BLEND_ADD; + down->alpha = 0; + down->mixBlend = SP_MIX_BLEND_ADD; + + sf::RenderWindow window(sf::VideoMode(640, 640), "Spine SFML - owl"); + window.setFramerateLimit(60); + sf::Event event; + sf::Clock deltaClock; + while (window.isOpen()) { + while (window.pollEvent(event)) { + if (event.type == sf::Event::Closed) window.close(); + if (event.type == sf::Event::MouseMoved) { + float x = event.mouseMove.x / 640.0f; + left->alpha = (MAX(x, 0.5f) - 0.5f) * 2; + right->alpha = (0.5 - MIN(x, 0.5)) * 2; + + float y = event.mouseMove.y / 640.0f; + down->alpha = (MAX(y, 0.5f) - 0.5f) * 2; + up->alpha = (0.5 - MIN(y, 0.5)) * 2; + } + } + + float delta = deltaClock.getElapsedTime().asSeconds(); + deltaClock.restart(); + + drawable->update(delta); + + window.clear(); + window.draw(*drawable); + window.display(); + } +} + /** * Used for debugging purposes during runtime development */ @@ -395,6 +449,7 @@ void test (SkeletonData* skeletonData, Atlas* atlas) { int main () { testcase(test, "data/tank-pro.json", "data/tank-pro.skel", "data/tank.atlas", 1.0f); + testcase(owl, "data/owl-pro.json", "data/owl-pro.skel", "data/owl.atlas", 0.5f); testcase(coin, "data/coin-pro.json", "data/coin-pro.skel", "data/coin.atlas", 0.5f); testcase(vine, "data/vine-pro.json", "data/vine-pro.skel", "data/vine.atlas", 0.5f); testcase(tank, "data/tank-pro.json", "data/tank-pro.skel", "data/tank.atlas", 0.2f);