| #include "rive/draw_rules.hpp" |
| #include "rive/artboard.hpp" |
| #include "rive/core_context.hpp" |
| #include "rive/draw_target.hpp" |
| |
| using namespace rive; |
| |
| StatusCode DrawRules::onAddedDirty(CoreContext* context) { |
| StatusCode result = Super::onAddedDirty(context); |
| if (result != StatusCode::Ok) { |
| return result; |
| } |
| auto coreObject = context->resolve(drawTargetId()); |
| if (coreObject != nullptr && coreObject->is<DrawTarget>()) { |
| m_ActiveTarget = reinterpret_cast<DrawTarget*>(coreObject); |
| } |
| |
| return StatusCode::Ok; |
| } |
| |
| StatusCode DrawRules::onAddedClean(CoreContext* context) { return StatusCode::Ok; } |
| |
| void DrawRules::drawTargetIdChanged() { |
| auto coreObject = artboard()->resolve(drawTargetId()); |
| if (coreObject == nullptr || !coreObject->is<DrawTarget>()) { |
| m_ActiveTarget = nullptr; |
| } else { |
| m_ActiveTarget = reinterpret_cast<DrawTarget*>(coreObject); |
| } |
| artboard()->addDirt(ComponentDirt::DrawOrder); |
| } |