GameApi 28
Library used by GameApi Builder tool
Loading...
Searching...
No Matches
Data.hh
Go to the documentation of this file.
1
3{
4 float x,y,z;
5};
6template<class T>
7struct LineData
8{
11};
12template<class T>
14{
15 std::vector<T> vec;
16};
17template<class T>
19{
20 T p1,p2,p3,p4;
21};
23{
24 float x,y,z,t;
25};
27{
28 float angle, t;
29};
30
31//
32// Functions
33//
34bool angle_time(const TAngleData &t1, const TAngleData &t2, float time,
35 float &angle)
36{
37 int mi = std::min(t1.t, t2.t);
38 int ma = std::max(t1.t, t2.t);
39 if (time < mi) return false;
40 if (time > ma) return false;
41 time -= mi;
42 time /= ma-mi;
43 if (t1.t < t2.t)
44 {
45 float ami = t1.angle;
46 float ama = t2.angle;
47 float a = ami*(1.0-time)+ama*time;
48 angle = a;
49 return true;
50 }
51 else
52 {
53 float ami = t2.angle;
54 float ama = t1.angle;
55 float a = ami*(1.0-time)+ama*time;
56 angle = a;
57 return true;
58 }
59
60}
61bool point_time(const TPointData &t1, const TPointData &t2, float time,
62 PointData &res)
63{
64 int mi = std::min(t1.t, t2.t);
65 int ma = std::max(t1.t, t2.t);
66 if (time < mi) return false;
67 if (time > ma) return false;
68 time -= mi;
69 time /= ma-mi;
70 if (t1.t < t2.t)
71 {
72 Point pmi(t1.x,t1.y,t1.z);
73 Point pma(t2.x,t2.y,t2.z);
74 Vector r = Vector(pmi)*(1.0-time)+Vector(pma)*time;
75 res.x = r.dx;
76 res.y = r.dy;
77 res.z = r.dz;
78 return true;
79 }
80 else
81 {
82 Point pmi(t2.x,t2.y,t2.z);
83 Point pma(t1.x,t1.y,t1.z);
84 Vector r = Vector(pmi)*(1.0-time)+Vector(pma)*time;
85 res.x = r.dx;
86 res.y = r.dy;
87 res.z = r.dz;
88 return true;
89 }
90}
91
92class EnemyMovement : public Array<int, Point>
93{
94public:
95 void push_back(const TPointData &t1, const TPointData &t2, int id)
96 {
97 v1.push_back(t1);
98 v2.push_back(t2);
99 vid.push_back(id);
100 }
101
102 int Size() const { return v1.size(); }
103 Point Index(int i) const
104 {
105 PointData pd;
106 bool b = point_time(v1[i], v2[i], time, pd);
107 if (b) { return Point(pd.x,pd.y,pd.z); }
108 return Point(0.0,0.0,0.0);
109 }
110 bool IsValid(int i) const
111 {
112 PointData pd;
113 bool b = point_time(v1[i], v2[i], time, pd);
114 return b;
115 }
116 int Id(int i) const
117 {
118 return vid[i];
119 }
120 void set_time(float t) { time = t; }
121private:
122 std::vector<TPointData> v1;
123 std::vector<TPointData> v2;
124 std::vector<int> vid;
125 float time;
126};
bool point_time(const TPointData &t1, const TPointData &t2, float time, PointData &res)
Definition Data.hh:61
bool angle_time(const TAngleData &t1, const TAngleData &t2, float time, float &angle)
Definition Data.hh:34
Definition EffectI.hh:22
Definition Data.hh:93
int Size() const
Definition Data.hh:102
Point Index(int i) const
Definition Data.hh:103
bool IsValid(int i) const
Definition Data.hh:110
int Id(int i) const
Definition Data.hh:116
void set_time(float t)
Definition Data.hh:120
void push_back(const TPointData &t1, const TPointData &t2, int id)
Definition Data.hh:95
Definition Data.hh:19
Definition VectorTools.hh:125
float dy
Definition VectorTools.hh:268
float dz
Definition VectorTools.hh:268
float dx
Definition VectorTools.hh:268
Definition Data.hh:8
T start
Definition Data.hh:9
T end
Definition Data.hh:10
Definition Data.hh:3
float z
Definition Data.hh:4
float x
Definition Data.hh:4
float y
Definition Data.hh:4
Definition Parser.cc:60
Definition Data.hh:14
std::vector< T > vec
Definition Data.hh:15
Definition Data.hh:27
float angle
Definition Data.hh:28
float t
Definition Data.hh:28
Definition Data.hh:23
float t
Definition Data.hh:24
float y
Definition Data.hh:24
float x
Definition Data.hh:24
float z
Definition Data.hh:24
Definition GameApi.h:42