blob: b14254aae15208a074935d509815dae6fbd3f111 [file] [log] [blame]
#include "rive/animation/transition_comparator.hpp"
#include "rive/animation/transition_viewmodel_condition.hpp"
#include "rive/animation/state_machine_instance.hpp"
#include "rive/importers/transition_viewmodel_condition_importer.hpp"
using namespace rive;
StatusCode TransitionComparator::import(ImportStack& importStack)
{
auto transitionViewModelConditionImporter =
importStack.latest<TransitionViewModelConditionImporter>(
TransitionViewModelCondition::typeKey);
if (transitionViewModelConditionImporter == nullptr)
{
return StatusCode::MissingObject;
}
transitionViewModelConditionImporter->setComparator(this);
return Super::import(importStack);
}
bool TransitionComparator::compareNumbers(float left, float right, TransitionConditionOp op)
{
switch (op)
{
case TransitionConditionOp::equal:
return left == right;
case TransitionConditionOp::notEqual:
return left != right;
case TransitionConditionOp::lessThanOrEqual:
return left <= right;
case TransitionConditionOp::lessThan:
return left < right;
case TransitionConditionOp::greaterThanOrEqual:
return left >= right;
case TransitionConditionOp::greaterThan:
return left > right;
default:
return false;
}
}
bool TransitionComparator::compareStrings(std::string left,
std::string right,
TransitionConditionOp op)
{
switch (op)
{
case TransitionConditionOp::equal:
return left == right;
case TransitionConditionOp::notEqual:
return left != right;
default:
return false;
}
}
bool TransitionComparator::compareBooleans(bool left, bool right, TransitionConditionOp op)
{
switch (op)
{
case TransitionConditionOp::equal:
return left == right;
case TransitionConditionOp::notEqual:
return left != right;
default:
return false;
}
}
bool TransitionComparator::compareEnums(uint16_t left, uint16_t right, TransitionConditionOp op)
{
switch (op)
{
case TransitionConditionOp::equal:
return left == right;
case TransitionConditionOp::notEqual:
return left != right;
default:
return false;
}
}
bool TransitionComparator::compareColors(int left, int right, TransitionConditionOp op)
{
switch (op)
{
case TransitionConditionOp::equal:
return left == right;
case TransitionConditionOp::notEqual:
return left != right;
default:
return false;
}
}
bool TransitionComparator::compare(TransitionComparator* comparand,
TransitionConditionOp operation,
const StateMachineInstance* stateMachineInstance)
{
return false;
}