| #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) | |
| { | |
| // Inside an artboard, File::readObjects already put this in the artboard's | |
| // object list (see claimsArtboardSlot). | |
| auto artboardImporter = importStack.latest<ArtboardImporter>( | |
| ArtboardBase::typeKey); | |
| if (artboardImporter == nullptr) | |
| { | |
| auto backboardImporter = importStack.latest<BackboardImporter>( | |
| BackboardBase::typeKey); | |
| if (backboardImporter != nullptr) | |
| { | |
| backboardImporter->addInterpolator(this); | |
| } | |
| else | |
| { | |
| return StatusCode::MissingObject; | |
| } | |
| } | |
| return Super::import(importStack); | |
| } |