74 float tightness = 0.5f;
106 if (
Keys.Count() < 2) {
107 for (
int i=0; i<
Keys.Count(); i++) {
116 int end =
Keys.Count() - 1;
118 Tangents[end].OutTangent.Set(0,0,0);
140 float total_time = (
Keys[1].Time -
Keys[0].Time) + (
Keys[end].Time -
Keys[end-1].Time);
141 float in_factor = 2.0f * (
Keys[end].Time -
Keys[end-1].Time) / total_time;
142 float out_factor = 2.0f * (
Keys[1].Time -
Keys[0].Time) / total_time;
143 Tangents[end].InTangent *= in_factor;
144 Tangents[0].OutTangent *= out_factor;
148 for (
int i=1; i<
Keys.Count()-1; i++) {
154 float in_factor = 2.0f * (
Keys[i].Time -
Keys[i-1].Time) / (
Keys[i+1].Time -
Keys[i-1].Time);
155 float out_factor = 2.0f * (
Keys[i+1].Time -
Keys[i].Time) / (
Keys[i+1].Time -
Keys[i-1].Time);
158 Tangents[i].OutTangent *= out_factor;
175 for (
int i=0; i<
Tightness.Count(); i++) {
177 csave.
Write(&(tightness),
sizeof(tightness));
201 for (i=0; i<
Keys.Count(); i++) {
202 cload.
Read(&(tightness),
sizeof(tightness));
208 WWDEBUG_SAY((
"Unhandled Chunk: 0x%X File: %s Line: %d\r\n",__FILE__,__LINE__));
224 float tightness = 0.5f;
256 if (
Keys.Count() < 2) {
257 for (
int i=0; i<
Keys.Count(); i++) {
265 int end =
Keys.Count() - 1;
281 float total_time = (
Keys[1].Time -
Keys[0].Time) + (
Keys[end].Time -
Keys[end-1].Time);
282 float in_factor = 2.0f * (
Keys[end].Time -
Keys[end-1].Time) / total_time;
283 float out_factor = 2.0f * (
Keys[1].Time -
Keys[0].Time) / total_time;
284 Tangents[end].InTangent *= in_factor;
285 Tangents[0].OutTangent *= out_factor;
289 for (
int i=1; i<
Keys.Count()-1; i++) {
293 float in_factor = 2.0f * (
Keys[i].Time -
Keys[i-1].Time) / (
Keys[i+1].Time -
Keys[i-1].Time);
294 float out_factor = 2.0f * (
Keys[i+1].Time -
Keys[i].Time) / (
Keys[i+1].Time -
Keys[i-1].Time);
297 Tangents[i].OutTangent *= out_factor;
314 for (
int i=0; i<
Tightness.Count(); i++) {
316 csave.
Write(&(tightness),
sizeof(tightness));
340 for (i=0; i<
Keys.Count(); i++) {
341 cload.
Read(&(tightness),
sizeof(tightness));
347 WWDEBUG_SAY((
"Unhandled Chunk: 0x%X File: %s Line: %d\r\n",__FILE__,__LINE__));
SimplePersistFactoryClass< CardinalSpline3DClass, WWMATH_CHUNKID_CARDINALSPLINE3D > _CardinalSpline3DFactory
@ CARDINAL3D_CHUNK_HERMITE3D
@ CARDINAL1D_CHUNK_HERMITE1D
@ CARDINAL3D_CHUNK_TIGHTNESSKEYS
@ CARDINAL1D_CHUNK_TIGHTNESSKEYS
SimplePersistFactoryClass< CardinalSpline1DClass, WWMATH_CHUNKID_CARDINALSPLINE1D > _CardinalSpline1DFactory
virtual void Clear_Keys(void)
virtual bool Load(ChunkLoadClass &cload)
virtual int Add_Key(float point, float t)
virtual bool Save(ChunkSaveClass &csave)
DynamicVectorClass< float > Tightness
virtual void Update_Tangents(void)
virtual void Set_Tightness(int i, float tightness)
virtual float Get_Tightness(int i)
virtual const PersistFactoryClass & Get_Factory(void) const
virtual void Remove_Key(int i)
virtual void Clear_Keys(void)
virtual void Set_Tightness(int i, float tightness)
virtual void Remove_Key(int i)
virtual bool Load(ChunkLoadClass &cload)
virtual int Add_Key(const Vector3 &point, float t)
virtual float Get_Tightness(int i)
virtual bool Save(ChunkSaveClass &csave)
virtual const PersistFactoryClass & Get_Factory(void) const
DynamicVectorClass< float > Tightness
virtual void Update_Tangents(void)
uint32 Read(void *buf, uint32 nbytes)
uint32 Write(const void *buf, uint32 nbytes)
bool Begin_Chunk(uint32 id)
DynamicVectorClass< KeyClass > Keys
DynamicVectorClass< KeyClass > Keys
DynamicVectorClass< TangentsClass > Tangents
virtual int Add_Key(float point, float t, unsigned int extra=0)
virtual void Clear_Keys(void)
virtual bool Load(ChunkLoadClass &cload)
virtual bool Save(ChunkSaveClass &csave)
virtual void Remove_Key(int i)
virtual bool Save(ChunkSaveClass &csave)
virtual void Remove_Key(int i)
virtual void Clear_Keys(void)
virtual bool Load(ChunkLoadClass &cload)
DynamicVectorClass< TangentsClass > Tangents
virtual int Add_Key(const Vector3 &point, float t)
#define DECLARE_FORCE_LINK(module)