Richard Boegli's CnC_Generals_Zero_Hour Fork WIP
This is documentation of Richard Boegil's Zero Hour Fork
 
Loading...
Searching...
No Matches
curve.h
Go to the documentation of this file.
1/*
2** Command & Conquer Generals Zero Hour(tm)
3** Copyright 2025 Electronic Arts Inc.
4**
5** This program is free software: you can redistribute it and/or modify
6** it under the terms of the GNU General Public License as published by
7** the Free Software Foundation, either version 3 of the License, or
8** (at your option) any later version.
9**
10** This program is distributed in the hope that it will be useful,
11** but WITHOUT ANY WARRANTY; without even the implied warranty of
12** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13** GNU General Public License for more details.
14**
15** You should have received a copy of the GNU General Public License
16** along with this program. If not, see <http://www.gnu.org/licenses/>.
17*/
18
19/***********************************************************************************************
20 *** C O N F I D E N T I A L --- W E S T W O O D S T U D I O S ***
21 ***********************************************************************************************
22 * *
23 * Project Name : WWMath *
24 * *
25 * $Archive:: /VSS_Sync/wwmath/curve.h $*
26 * *
27 * Author:: Greg Hjelstrom *
28 * *
29 * $Modtime:: 6/13/01 2:18p $*
30 * *
31 * $Revision:: 8 $*
32 * *
33 *---------------------------------------------------------------------------------------------*
34 * Functions: *
35 * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
36
37
38#if defined(_MSC_VER)
39#pragma once
40#endif
41
42#ifndef CURVE_H
43#define CURVE_H
44
45#ifndef ALWAYS_H
46#include "always.h"
47#endif
48
49#ifndef VECTOR_H
50#include "vector.h"
51#endif
52
53#ifndef VECTOR3_H
54#include "vector3.h"
55#endif
56
57#ifndef PERSIST_H
58#include "persist.h"
59#endif
60
61class ChunkLoadClass;
62class ChunkSaveClass;
63
64
66{
67public:
68
69 Curve3DClass(void);
70 Curve3DClass(const Curve3DClass & that);
71 virtual ~Curve3DClass(void);
73
74 virtual void Evaluate(float time,Vector3 * set_val) = 0;
75 virtual bool Is_Looping(void);
76 virtual void Set_Looping(bool onoff);
77 virtual int Key_Count(void);
78 virtual void Get_Key(int i,Vector3 * set_point,float * set_t);
79 virtual void Set_Key(int i,const Vector3 & point);
80 virtual int Add_Key(const Vector3 & point,float t);
81 virtual void Remove_Key(int i);
82 virtual void Clear_Keys(void);
83 float Get_Start_Time(void);
84 float Get_End_Time(void);
85
86 // persistant object support
87 virtual bool Save (ChunkSaveClass &csave);
88 virtual bool Load (ChunkLoadClass &cload);
89
90protected:
91
92 void Find_Interval(float time,int * i0,int * i1,float * t);
93
95 {
96 public:
98 float Time;
99 bool operator == (const KeyClass & that) { return ((Point == that.Point) && (Time == that.Time)); }
100 bool operator != (const KeyClass & that) { return !KeyClass::operator==(that); }
101 };
102
105};
106
107
109{
110public:
111 virtual void Evaluate(float time,Vector3 * set_val);
112
113 // persistant object support
114 virtual const PersistFactoryClass & Get_Factory(void) const;
115 virtual bool Save(ChunkSaveClass &csave);
116 virtual bool Load(ChunkLoadClass &cload);
117};
118
119
120/*
121** 1-Dimensional curve classes.
122*/
124{
125public:
126
127 Curve1DClass(void);
128 Curve1DClass(const Curve1DClass & that);
129 virtual ~Curve1DClass(void);
130 Curve1DClass & operator = (const Curve1DClass & that);
131
132 virtual void Evaluate(float time,float * set_val) = 0;
133 virtual bool Is_Looping(void);
134 virtual void Set_Looping(bool onoff);
135 virtual int Key_Count(void);
136 virtual void Get_Key(int i,float * set_point,float * set_t,unsigned int * extra=NULL);
137 virtual void Set_Key(int i,float point,unsigned int extra=0);
138 virtual int Add_Key(float point,float t,unsigned int extra=0);
139 virtual void Remove_Key(int i);
140 virtual void Clear_Keys(void);
141 float Get_Start_Time(void);
142 float Get_End_Time(void);
143
144 // persistant object support
145 virtual bool Save (ChunkSaveClass &csave);
146 virtual bool Load (ChunkLoadClass &cload);
147
148protected:
149
150 void Find_Interval(float time,int * i0,int * i1,float * t);
151
153 {
154 public:
155 float Point;
156 float Time;
157 unsigned int Extra;
158 bool operator == (const KeyClass & that) { return ((Point == that.Point) && (Time == that.Time) && (Extra == that.Extra)); }
159 bool operator != (const KeyClass & that) { return !KeyClass::operator==(that); }
160 };
161
164};
165
166
168{
169public:
170 virtual void Evaluate(float time,float * set_val);
171
172 // persistant object support
173 virtual const PersistFactoryClass & Get_Factory(void) const;
174 virtual bool Save(ChunkSaveClass &csave);
175 virtual bool Load(ChunkLoadClass &cload);
176};
177
178
179#endif //CURVE_H
#define NULL
Definition BaseType.h:92
unsigned int Extra
Definition curve.h:157
bool operator!=(const KeyClass &that)
Definition curve.h:159
bool operator==(const KeyClass &that)
Definition curve.h:158
float Get_Start_Time(void)
Definition curve.cpp:361
virtual void Evaluate(float time, float *set_val)=0
virtual void Clear_Keys(void)
Definition curve.cpp:431
virtual bool Is_Looping(void)
Definition curve.cpp:351
void Find_Interval(float time, int *i0, int *i1, float *t)
Definition curve.cpp:436
virtual int Key_Count(void)
Definition curve.cpp:379
virtual void Get_Key(int i, float *set_point, float *set_t, unsigned int *extra=NULL)
Definition curve.cpp:384
virtual bool Load(ChunkLoadClass &cload)
Definition curve.cpp:488
bool IsLooping
Definition curve.h:162
virtual void Set_Key(int i, float point, unsigned int extra=0)
Definition curve.cpp:399
Curve1DClass(void)
Definition curve.cpp:330
virtual int Add_Key(float point, float t, unsigned int extra=0)
Definition curve.cpp:408
virtual void Remove_Key(int i)
Definition curve.cpp:424
float Get_End_Time(void)
Definition curve.cpp:370
Curve1DClass & operator=(const Curve1DClass &that)
Definition curve.cpp:344
virtual bool Save(ChunkSaveClass &csave)
Definition curve.cpp:468
virtual ~Curve1DClass(void)
Definition curve.cpp:340
DynamicVectorClass< KeyClass > Keys
Definition curve.h:163
virtual void Set_Looping(bool onoff)
Definition curve.cpp:356
bool operator==(const KeyClass &that)
Definition curve.h:99
bool operator!=(const KeyClass &that)
Definition curve.h:100
Curve3DClass(void)
Definition curve.cpp:87
virtual void Remove_Key(int i)
Definition curve.cpp:176
virtual void Clear_Keys(void)
Definition curve.cpp:183
virtual void Set_Key(int i, const Vector3 &point)
Definition curve.cpp:153
bool IsLooping
Definition curve.h:103
virtual int Key_Count(void)
Definition curve.cpp:136
void Find_Interval(float time, int *i0, int *i1, float *t)
Definition curve.cpp:188
virtual bool Load(ChunkLoadClass &cload)
Definition curve.cpp:221
Curve3DClass & operator=(const Curve3DClass &that)
Definition curve.cpp:101
virtual ~Curve3DClass(void)
Definition curve.cpp:97
float Get_Start_Time(void)
Definition curve.cpp:118
float Get_End_Time(void)
Definition curve.cpp:127
virtual void Set_Looping(bool onoff)
Definition curve.cpp:113
virtual bool Is_Looping(void)
Definition curve.cpp:108
virtual bool Save(ChunkSaveClass &csave)
Definition curve.cpp:202
virtual void Get_Key(int i, Vector3 *set_point, float *set_t)
Definition curve.cpp:141
virtual void Evaluate(float time, Vector3 *set_val)=0
virtual int Add_Key(const Vector3 &point, float t)
Definition curve.cpp:161
DynamicVectorClass< KeyClass > Keys
Definition curve.h:104
virtual bool Save(ChunkSaveClass &csave)
Definition curve.cpp:563
virtual void Evaluate(float time, float *set_val)
Definition curve.cpp:537
virtual const PersistFactoryClass & Get_Factory(void) const
Definition curve.cpp:558
virtual bool Load(ChunkLoadClass &cload)
Definition curve.cpp:571
virtual const PersistFactoryClass & Get_Factory(void) const
Definition curve.cpp:291
virtual void Evaluate(float time, Vector3 *set_val)
Definition curve.cpp:272
virtual bool Save(ChunkSaveClass &csave)
Definition curve.cpp:296
virtual bool Load(ChunkLoadClass &cload)
Definition curve.cpp:304