| #include <rive/file.hpp> |
| #include <rive/node.hpp> |
| #include <rive/shapes/clipping_shape.hpp> |
| #include <rive/shapes/rectangle.hpp> |
| #include <rive/shapes/shape.hpp> |
| #include <rive/animation/linear_animation_instance.hpp> |
| #include "utils/no_op_renderer.hpp" |
| #include "rive_file_reader.hpp" |
| #include <catch.hpp> |
| #include <cstdio> |
| |
| TEST_CASE("draw rules load and sort correctly", "[draw rules]") |
| { |
| auto file = ReadRiveFile("../../test/assets/draw_rule_cycle.riv"); |
| |
| // auto file = reader.file(); |
| std::unique_ptr<rive::ArtboardInstance> artboard = file->artboardDefault(); |
| auto node = artboard->find<rive::Node>("Blue"); |
| REQUIRE(node != nullptr); |
| REQUIRE(node->is<rive::Shape>()); |
| // auto shape = node->as<rive::Shape>(); |
| |
| artboard->updateComponents(); |
| REQUIRE(artboard->animationCount() == 1); |
| |
| // Check that we can advance the ping-pong animation with 1 second duration |
| // without a hang. |
| std::unique_ptr<rive::LinearAnimationInstance> animation = artboard->animationAt(0); |
| // Advance and apply some frames. |
| int frames = 10; |
| float frameDuration = 1.0f; |
| |
| for (int i = 0; i < frames; i++) |
| { |
| animation->advanceAndApply(frameDuration); |
| rive::NoOpRenderer renderer; |
| artboard->draw(&renderer); |
| } |
| } |