| #include "rive/shapes/cubic_vertex.hpp" | |
| #include "rive/bones/cubic_weight.hpp" | |
| using namespace rive; | |
| const Vec2D& CubicVertex::renderIn() | |
| { | |
| if (hasWeight()) | |
| { | |
| return weight<CubicWeight>()->inTranslation(); | |
| } | |
| else | |
| { | |
| return inPoint(); | |
| } | |
| } | |
| const Vec2D& CubicVertex::renderOut() | |
| { | |
| if (hasWeight()) | |
| { | |
| return weight<CubicWeight>()->outTranslation(); | |
| } | |
| else | |
| { | |
| return outPoint(); | |
| } | |
| } | |
| const Vec2D& CubicVertex::inPoint() | |
| { | |
| if (!m_InValid) | |
| { | |
| computeIn(); | |
| m_InValid = true; | |
| } | |
| return m_InPoint; | |
| } | |
| const Vec2D& CubicVertex::outPoint() | |
| { | |
| if (!m_OutValid) | |
| { | |
| computeOut(); | |
| m_OutValid = true; | |
| } | |
| return m_OutPoint; | |
| } | |
| void CubicVertex::outPoint(const Vec2D& value) | |
| { | |
| m_OutPoint = value; | |
| m_OutValid = true; | |
| } | |
| void CubicVertex::inPoint(const Vec2D& value) | |
| { | |
| m_InPoint = value; | |
| m_InValid = true; | |
| } | |
| void CubicVertex::xChanged() | |
| { | |
| Super::xChanged(); | |
| m_InValid = m_OutValid = false; | |
| } | |
| void CubicVertex::yChanged() | |
| { | |
| Super::yChanged(); | |
| m_InValid = m_OutValid = false; | |
| } | |
| void CubicVertex::deform(const Mat2D& worldTransform, const float* boneTransforms) | |
| { | |
| Super::deform(worldTransform, boneTransforms); | |
| auto cubicWeight = weight<CubicWeight>(); | |
| cubicWeight->inTranslation() = Weight::deform(inPoint(), | |
| cubicWeight->inIndices(), | |
| cubicWeight->inValues(), | |
| worldTransform, | |
| boneTransforms); | |
| cubicWeight->outTranslation() = Weight::deform(outPoint(), | |
| cubicWeight->outIndices(), | |
| cubicWeight->outValues(), | |
| worldTransform, | |
| boneTransforms); | |
| } |