blob: 7b233484a5e31d0367565bb401eee799e5a2d495 [file] [log] [blame]
#include "rive/animation/state_machine_fire_trigger.hpp"
#include "rive/animation/state_machine_instance.hpp"
#include "rive/viewmodel/viewmodel_instance_trigger.hpp"
using namespace rive;
void StateMachineFireTrigger::perform(
StateMachineInstance* stateMachineInstance) const
{
auto dataContext = stateMachineInstance->dataContext();
if (dataContext != nullptr)
{
auto vmProp =
dataContext->getViewModelProperty(m_viewModelPathIdsBuffer);
if (vmProp && vmProp->is<ViewModelInstanceTrigger>())
{
vmProp->as<ViewModelInstanceTrigger>()->trigger();
}
}
}
void StateMachineFireTrigger::decodeViewModelPathIds(Span<const uint8_t> value)
{
BinaryReader reader(value);
while (!reader.reachedEnd())
{
auto val = reader.readVarUintAs<uint32_t>();
m_viewModelPathIdsBuffer.push_back(val);
}
}
void StateMachineFireTrigger::copyViewModelPathIds(
const StateMachineFireTriggerBase& object)
{
m_viewModelPathIdsBuffer =
object.as<StateMachineFireTrigger>()->m_viewModelPathIdsBuffer;
}