1 #ifndef _RIVE_KEY_FRAME_BASE_HPP_
2 #define _RIVE_KEY_FRAME_BASE_HPP_
4 #include "core/field_types/core_uint_type.hpp"
7 class KeyFrameBase : public Core
13 static const uint16_t typeKey = 29;
15 /// Helper to quickly determine if a core object extends another without
17 bool isTypeOf(uint16_t typeKey) const override
21 case KeyFrameBase::typeKey:
28 uint16_t coreType() const override { return typeKey; }
30 static const uint16_t framePropertyKey = 67;
31 static const uint16_t interpolationTypePropertyKey = 68;
32 static const uint16_t interpolatorIdPropertyKey = 69;
36 int m_InterpolationType = 0;
37 int m_InterpolatorId = -1;
39 inline int frame() const { return m_Frame; }
50 inline int interpolationType() const { return m_InterpolationType; }
51 void interpolationType(int value)
53 if (m_InterpolationType == value)
57 m_InterpolationType = value;
58 interpolationTypeChanged();
61 inline int interpolatorId() const { return m_InterpolatorId; }
62 void interpolatorId(int value)
64 if (m_InterpolatorId == value)
68 m_InterpolatorId = value;
69 interpolatorIdChanged();
72 void copy(const KeyFrameBase& object)
74 m_Frame = object.m_Frame;
75 m_InterpolationType = object.m_InterpolationType;
76 m_InterpolatorId = object.m_InterpolatorId;
79 bool deserialize(uint16_t propertyKey, BinaryReader& reader) override
83 case framePropertyKey:
84 m_Frame = CoreUintType::deserialize(reader);
86 case interpolationTypePropertyKey:
87 m_InterpolationType = CoreUintType::deserialize(reader);
89 case interpolatorIdPropertyKey:
90 m_InterpolatorId = CoreUintType::deserialize(reader);
97 virtual void frameChanged() {}
98 virtual void interpolationTypeChanged() {}
99 virtual void interpolatorIdChanged() {}