|  | #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()); | 
|  | } | 
|  | } |