| #include "rive/data_bind/converters/data_converter.hpp" | |
| #include "rive/importers/import_stack.hpp" | |
| #include "rive/importers/backboard_importer.hpp" | |
| #include "rive/backboard.hpp" | |
| #include "rive/data_bind/data_bind.hpp" | |
| #include "rive/data_bind/data_bind_context.hpp" | |
| using namespace rive; | |
| DataConverter::~DataConverter() { deleteDataBinds(); } | |
| StatusCode DataConverter::import(ImportStack& importStack) | |
| { | |
| auto backboardImporter = | |
| importStack.latest<BackboardImporter>(Backboard::typeKey); | |
| if (backboardImporter == nullptr) | |
| { | |
| return StatusCode::MissingObject; | |
| } | |
| backboardImporter->addDataConverter(this); | |
| return Super::import(importStack); | |
| } | |
| void DataConverter::bindFromContext(DataContext* dataContext, | |
| DataBind* dataBind) | |
| { | |
| m_parentDataBind = dataBind; | |
| bindDataBindsFromContext(dataContext); | |
| } | |
| void DataConverter::unbind() { unbindDataBinds(); } | |
| void DataConverter::markConverterDirty() | |
| { | |
| m_parentDataBind->addDirt(ComponentDirt::Dependents | | |
| ComponentDirt::Bindings, | |
| false); | |
| } | |
| void DataConverter::addDirtyDataBind(DataBind* dataBind) | |
| { | |
| markConverterDirty(); | |
| DataBindContainer::addDirtyDataBind(dataBind); | |
| } | |
| void DataConverter::update() { updateDataBinds(false); } | |
| void DataConverter::copy(const DataConverter& object) | |
| { | |
| auto dataBinds = object.dataBinds(); | |
| for (auto dataBind : dataBinds) | |
| { | |
| auto dataBindClone = dataBind->clone()->as<DataBind>(); | |
| dataBindClone->target(this); | |
| addDataBind(dataBindClone); | |
| } | |
| DataConverterBase::copy(object); | |
| } | |
| bool DataConverter::advance(float elapsedTime) { return false; } |