| #include "rive/animation/keyframe_interpolator.hpp" |
| #include "rive/artboard.hpp" |
| #include "rive/backboard.hpp" |
| #include "rive/core.hpp" |
| #include "rive/importers/artboard_importer.hpp" |
| #include "rive/importers/backboard_importer.hpp" |
| #include "rive/importers/import_stack.hpp" |
| #include "rive/layout_component.hpp" |
| |
| using namespace rive; |
| |
| InterpolatorHost* InterpolatorHost::from(Core* component) |
| { |
| switch (component->coreType()) |
| { |
| case LayoutComponent::typeKey: |
| return component->as<LayoutComponent>(); |
| default: |
| return nullptr; |
| } |
| return nullptr; |
| } |
| |
| StatusCode KeyFrameInterpolator::import(ImportStack& importStack) |
| { |
| auto artboardImporter = |
| importStack.latest<ArtboardImporter>(ArtboardBase::typeKey); |
| if (artboardImporter != nullptr) |
| { |
| artboardImporter->addComponent(this); |
| } |
| else |
| { |
| auto backboardImporter = |
| importStack.latest<BackboardImporter>(BackboardBase::typeKey); |
| if (backboardImporter != nullptr) |
| { |
| backboardImporter->addInterpolator(this); |
| } |
| else |
| { |
| return StatusCode::MissingObject; |
| } |
| } |
| return Super::import(importStack); |
| } |