| #include "rive/constraints/targeted_constraint.hpp" |
| #include "rive/transform_component.hpp" |
| #include "rive/core_context.hpp" |
| |
| using namespace rive; |
| |
| StatusCode TargetedConstraint::onAddedDirty(CoreContext* context) { |
| StatusCode code = Super::onAddedDirty(context); |
| if (code != StatusCode::Ok) { |
| return code; |
| } |
| auto coreObject = context->resolve(targetId()); |
| if (coreObject == nullptr || !coreObject->is<TransformComponent>()) { |
| return StatusCode::MissingObject; |
| } |
| |
| m_Target = reinterpret_cast<TransformComponent*>(coreObject); |
| |
| return StatusCode::Ok; |
| } |
| |
| void TargetedConstraint::buildDependencies() { |
| // Targeted constraints must have their constrained component (parent) |
| // update after the target. |
| if (m_Target != nullptr) { |
| m_Target->addDependent(parent()); |
| } |
| } |