blob: 3287059f0c5c07e1572cd2b7d4f7c48663fd736c [file] [log] [blame]
#include "rive/animation/transition_property_viewmodel_comparator.hpp"
#include "rive/animation/transition_self_comparator.hpp"
#include "rive/animation/transition_value_number_comparator.hpp"
#include "rive/animation/transition_value_string_comparator.hpp"
#include "rive/animation/transition_value_color_comparator.hpp"
#include "rive/animation/transition_value_boolean_comparator.hpp"
#include "rive/animation/transition_value_asset_comparator.hpp"
#include "rive/animation/transition_value_artboard_comparator.hpp"
#include "rive/animation/transition_value_enum_comparator.hpp"
#include "rive/animation/transition_value_trigger_comparator.hpp"
#include "rive/animation/state_machine_instance.hpp"
#include "rive/importers/bindable_property_importer.hpp"
#include "rive/data_bind/bindable_property_artboard.hpp"
#include "rive/data_bind/bindable_property_asset.hpp"
#include "rive/data_bind/bindable_property_number.hpp"
#include "rive/data_bind/bindable_property_string.hpp"
#include "rive/data_bind/bindable_property_color.hpp"
#include "rive/data_bind/bindable_property_enum.hpp"
#include "rive/data_bind/bindable_property_integer.hpp"
#include "rive/data_bind/bindable_property_boolean.hpp"
#include "rive/data_bind/bindable_property_trigger.hpp"
#include "rive/viewmodel/viewmodel_instance_trigger.hpp"
using namespace rive;
TransitionPropertyViewModelComparator::~TransitionPropertyViewModelComparator()
{
if (m_bindableProperty != nullptr)
{
delete m_bindableProperty;
m_bindableProperty = nullptr;
}
}
StatusCode TransitionPropertyViewModelComparator::import(
ImportStack& importStack)
{
auto bindablePropertyImporter =
importStack.latest<BindablePropertyImporter>(
BindablePropertyBase::typeKey);
if (bindablePropertyImporter == nullptr)
{
return StatusCode::MissingObject;
}
m_bindableProperty = bindablePropertyImporter->bindableProperty();
return Super::import(importStack);
}
void TransitionPropertyViewModelComparator::useInLayer(
const StateMachineInstance* stateMachineInstance,
StateMachineLayerInstance* layerInstance) const
{
auto bindableInstance =
stateMachineInstance->bindablePropertyInstance(m_bindableProperty);
if (bindableInstance == nullptr)
{
return;
}
auto dataBind =
stateMachineInstance->bindableDataBindToTarget(bindableInstance);
auto source = dataBind->source();
if (source != nullptr)
{
source->useInLayer(layerInstance);
}
}