27#include "CObjectSerializable.h"
28#include "CArraySerializable.h"
29#include "Utils/CInterpolator.h"
34 class SKYLICHT_API CInterpolateSerializable :
public CObjectSerializable
41 CInterpolateSerializable(
const char* name) :
42 CObjectSerializable(name),
43 m_valueX(
"valueX",
this),
44 m_valueY(
"valueY",
this)
46 m_objectType = ObjectInterpolate;
49 CInterpolateSerializable(
const char* name, CObjectSerializable* parent) :
50 CObjectSerializable(name, parent),
51 m_valueX(
"valueX",
this),
52 m_valueY(
"valueY",
this)
54 m_objectType = ObjectInterpolate;
57 virtual ~CInterpolateSerializable()
64 return m_valueX.getElementCount();
73 virtual void setInterpolator(
const CInterpolator* interpolator) = 0;
75 virtual void getInterpolator(
CInterpolator* interpolator) = 0;
79 class SKYLICHT_API CInterpolateFloatSerializable :
public CInterpolateSerializable<CFloatProperty>
88 CInterpolateFloatSerializable(
const char* name) :
89 CInterpolateSerializable<CFloatProperty>(name),
90 m_control(
"control",
this),
91 m_controlL(
"controlLeft",
this),
92 m_controlR(
"controlRight",
this),
93 m_controlType(
"controlType",
this)
98 CInterpolateSerializable<CFloatProperty>(name, parent),
99 m_control(
"control",
this),
100 m_controlL(
"controlLeft",
this),
101 m_controlR(
"controlRight",
this),
102 m_controlType(
"controlType",
this)
106 virtual ~CInterpolateFloatSerializable()
118 m_controlType.clear();
121 inline void addEntry(
float x,
float y)
145 virtual void setInterpolator(
const CInterpolator* interpolator)
147 const std::set<SInterpolatorEntry>& graph = interpolator->
getGraph();
148 const std::vector<SControlPoint>& controls = interpolator->
getControlPoints(0);
151 for (
auto& i : graph)
153 addEntry(i.X, i.Value[0]);
156 for (
auto& i : controls)
166 for (
int i = 0, n = m_valueX.getElementCount(); i < n; i++)
174 for (
int i = 0, n = m_control.getElementCount(); i < n; i++)
189 CInterpolateFloatSerializable*
object =
new CInterpolateFloatSerializable(Name.c_str());
Definition CArraySerializable.h:83
Definition CValuePropertyTemplate.h:197
Definition CValuePropertyTemplate.h:65
Keyframe interpolator for scalar, vector, and color values.
Definition CInterpolator.h:146
std::vector< SControlPoint > & getControlPoints(int layer)
Get mutable Bezier control points for a value layer.
Definition CInterpolator.h:278
@ Float
One float channel.
Definition CInterpolator.h:154
SControlPoint & addControlPoint(int layer=0)
Add a control point to a value layer.
void setType(EInterpolatorType type)
Set the value layout.
Definition CInterpolator.h:194
std::set< SInterpolatorEntry > & getGraph()
Get mutable access to graph entries.
Definition CInterpolator.h:259
bool addEntry(const SInterpolatorEntry &entry)
Add a raw graph entry.
Definition CInterpolator.h:305
void clearGraph()
Remove all graph entries and control points.
Definition CInterpolator.h:390
Definition CObjectSerializable.h:36
Definition CValuePropertyTemplate.h:779
Everything in the Skylicht Engine. You can start by looking at the topics.
Definition AudioDebugLog.h:29
Bezier control point used to generate interpolation graph entries.
Definition CInterpolator.h:99
core::vector2df Left
Left tangent offset.
Definition CInterpolator.h:118
EControlType Type
Control point tangent type.
Definition CInterpolator.h:122
core::vector2df Position
Point position.
Definition CInterpolator.h:116
EControlType
Tangent behavior for a control point.
Definition CInterpolator.h:104
core::vector2df Right
Right tangent offset.
Definition CInterpolator.h:120