| #include "rive/constraints/constraint.hpp" | |
| #include "rive/container_component.hpp" | |
| #include "rive/transform_component.hpp" | |
| #include "rive/core_context.hpp" | |
| #include "rive/math/mat2d.hpp" | |
| using namespace rive; | |
| StatusCode Constraint::onAddedClean(CoreContext* context) | |
| { | |
| if (!parent()->is<TransformComponent>()) | |
| { | |
| return StatusCode::InvalidObject; | |
| } | |
| parent()->as<TransformComponent>()->addConstraint(this); | |
| return StatusCode::Ok; | |
| } | |
| void Constraint::markConstraintDirty() { parent()->as<TransformComponent>()->markTransformDirty(); } | |
| void Constraint::strengthChanged() { markConstraintDirty(); } | |
| void Constraint::buildDependencies() | |
| { | |
| Super::buildDependencies(); | |
| parent()->addDependent(this); | |
| } | |
| void Constraint::onDirty(ComponentDirt dirt) | |
| { | |
| // Whenever the constraint gets any dirt, make sure to mark the constrained | |
| // component dirty. | |
| markConstraintDirty(); | |
| } | |
| static Mat2D identity; | |
| const Mat2D& rive::getParentWorld(const TransformComponent& component) | |
| { | |
| auto parent = component.parent(); | |
| if (parent->is<WorldTransformComponent>()) | |
| { | |
| return parent->as<WorldTransformComponent>()->worldTransform(); | |
| } | |
| return identity; | |
| } |