| #include "rive/viewmodel/property_symbol_dependent.hpp" | |
| using namespace rive; | |
| PropertySymbolDependent::PropertySymbolDependent( | |
| Core* core, | |
| CoreObjectListener* coreObjectListener, | |
| ViewModelInstanceValue* instanceValue) | |
| : m_coreObject(core) | |
| , m_coreObjectListener(coreObjectListener) | |
| , m_instanceValue(instanceValue) | |
| { | |
| if (m_instanceValue != nullptr) | |
| { | |
| m_instanceValue->addDependent(this); | |
| } | |
| } | |
| PropertySymbolDependent::~PropertySymbolDependent() | |
| { | |
| if (m_instanceValue != nullptr) | |
| { | |
| m_instanceValue->removeDependent(this); | |
| } | |
| } | |
| void PropertySymbolDependent::addDirt(ComponentDirt value, bool recurse) | |
| { | |
| writeValue(); | |
| m_coreObjectListener->markDirty(); | |
| } | |
| PropertySymbolDependentSingle::PropertySymbolDependentSingle( | |
| Core* core, | |
| CoreObjectListener* coreObjectListener, | |
| ViewModelInstanceValue* instanceValue, | |
| uint16_t propertyKey) | |
| : PropertySymbolDependent(core, coreObjectListener, instanceValue) | |
| , m_propertyKey(propertyKey) | |
| {} | |
| PropertySymbolDependentMulti::PropertySymbolDependentMulti( | |
| Core* core, | |
| CoreObjectListener* coreObjectListener, | |
| ViewModelInstanceValue* instanceValue, | |
| std::vector<uint16_t> propertyKeys) | |
| : PropertySymbolDependent(core, coreObjectListener, instanceValue) | |
| , m_propertyKeys(propertyKeys) | |
| {} | |
| CoreObjectListener::CoreObjectListener( | |
| Core* core, | |
| rcp<ViewModelInstance> instance) | |
| : m_core(core) | |
| , m_instance(instance) | |
| {} | |
| CoreObjectListener::~CoreObjectListener() | |
| { | |
| delete m_core; | |
| deleteProperties(); | |
| } | |
| void CoreObjectListener::createProperties() { deleteProperties(); } | |
| void CoreObjectListener::deleteProperties() | |
| { | |
| for (auto& property : m_properties) | |
| { | |
| delete property; | |
| } | |
| m_properties.clear(); | |
| } | |
| void CoreObjectListener::remap(rcp<ViewModelInstance> instance) | |
| { | |
| if (instance != m_instance) | |
| { | |
| deleteProperties(); | |
| m_instance = instance; | |
| createProperties(); | |
| } | |
| } |