GameApi 28
Library used by GameApi Builder tool
Loading...
Searching...
No Matches
EffectI.hh
Go to the documentation of this file.
1
2#ifndef EFFECTI_HH
3#define EFFECTI_HH
4
5#include "VectorTools.hh"
6
7
8
9template<class A, class B>
11{
12public:
13 typedef A Domain;
14 typedef B CoDomain;
15
16 virtual ~Function() { }
17 virtual B Index(A a) const=0;
18};
19
20template<class I, class T>
21class Array : public Function<I,T>
22{
23public:
24 virtual ~Array() { }
25 virtual I Size() const=0;
26};
27
28template<class T>
29class Curve : public Array<float, T>
30{
31public:
32 virtual ~Curve() { }
33 //float Length() const { return static_cast<float>(Size()); }
34};
35
36
37
38
39
40class CurveIn2d : public Curve<Point2d>
41{
42public:
43 virtual ~CurveIn2d() { }
44 //virtual Point2d Index(float pos) const=0;
45 //virtual float Length() const=0;
46};
47
48class CurveIn3d : public Curve<Point>
49{
50public:
51 virtual ~CurveIn3d() { }
52 //virtual Point Index(float pos) const=0;
53 //virtual float Length() const=0;
54};
55
56struct BBOX {
57 float start_x;
58 float end_x;
59 float start_y;
60 float end_y;
61 float start_z;
62 float end_z;
63};
64
65void stackTrace();
66
68{
69public:
70 virtual ~VertexArrayDyn() { }
71 virtual void prepare(int i)=0;
72 virtual void update(int i)=0; // i=0..9
73 virtual void render()=0;
74};
75
76
102{
103public:
104 virtual ~VertexArrays() { }
105
106 virtual void Collect(CollectVisitor &vis)=0;
107 virtual void HeavyPrepare()=0;
108 virtual void Prepare()=0;
109
110 virtual std::string enabled() const=0;
111 virtual int Num(VertexArrayEnum i) const=0;
112 virtual int NumIndices() const=0;
113 virtual unsigned char *Indices() const=0;
115
116 virtual size_t Stride(VertexArrayEnum i) const=0;
117 virtual void *Attrib(VertexArrayEnum i) const=0;
119 virtual int ComponentCount(VertexArrayEnum i) const=0;
120 //old
121 //virtual void *Position() const=0; // i=0
122 //virtual void *Normal() const=0; // i=1
123 //virtual void *TexCoord_0() const=0; // i=2
124 //virtual void *TexCoord_1() const=0; // i=3
125 //virtual void *Color_0() const=0; // i=4
126 //virtual void *Color_1() const=0; // i=5
127 //virtual void *Joints_0() const=0; // i=6
128 //virtual unsigned short *Joints_0s() const=0; //i=6
129 //virtual void *Joints_1() const=0; // i=7
130 //virtual void *Weights_0() const=0; // i=8
131 //virtual void *Weights_1() const=0; // i=9
132};
133
134void stackTrace();
135
137{
138public:
139 virtual ~FaceCollection2() { }
140 virtual void Collect(CollectVisitor &vis)=0;
141 virtual void HeavyPrepare()=0;
142 virtual void Prepare()=0;
154
155 virtual int NumFaces() const = 0;
156 virtual int NumPoints(int face) const=0;
157 virtual Vertex Face(int face, int point) const=0;
158
159 virtual int NumObjects() const { return 1; }
160 virtual std::pair<int,int> GetObject(int o) const {
161 return std::make_pair(0,NumFaces());
162 }
163 virtual int NumTextures() const { return 0; }
164 virtual void GenTexture(int num) { }
165 virtual BufferRef TextureBuf(int num) const { BufferRef ref; ref.buffer=0; return ref; }
166 virtual int FaceTexture(int face) const { return -1; }
167};
168
169
187
189{
190public:
192 virtual std::string name() const=0;
193 virtual void Collect(CollectVisitor &vis)=0;
194 virtual void HeavyPrepare()=0;
195 virtual void Prepare()=0;
196
197 virtual int NumVertices() const=0;
198 virtual void Faces(std::vector<Point> &vec)=0;
199 virtual void Normal(std::vector<Vector> &vec)=0;
200 virtual void Color(std::vector<unsigned int> &vec)=0;
201 virtual void Tex(std::vector<Point2d> &vec)=0;
202 virtual void Tex3(std::vector<float> &vec)=0;
203 virtual void Joints(std::vector<VEC4> &vec)=0;
204 virtual void Weights(std::vector<VEC4> &vec)=0;
205
206 virtual int NumFaces() const=0;
207 virtual void Indices(std::vector<int> &vec)=0; // size is numfaces*3
208};
209
210
212{
213public:
214 virtual ~FaceCollection() { }
215 virtual std::string name() const=0;
216 virtual bool ReadyToPrepare() const { return true; }
217 virtual void Collect(CollectVisitor &vis)=0;
218 virtual void HeavyPrepare()=0;
219 virtual bool Ready() const { return true; } // async join only
220 virtual void Prepare()=0;
221 virtual void SetDoneCount(int i) { /*std::cout << "setdonecount not implemented at " << typeid(*this).name() << std::endl;*/ }
222 virtual void PrepareDone() { /*std::cout << "Preparedone not implemented at " << typeid(*this).name() << std::endl;*/ }
223 virtual int NumFaces() const = 0;
224 virtual int NumPoints(int face) const=0;
225
226 virtual bool has_normal() const { return true; }
227 virtual bool has_attrib() const { return false; }
228 virtual bool has_color() const { return true; }
229 virtual bool has_texcoord() const { return true; }
230 virtual bool has_skeleton() const { return false; }
231
232 virtual Point FacePoint(int face, int point) const=0;
233 virtual Vector PointNormal(int face, int point) const=0;
234 virtual float Attrib(int face, int point, int id) const=0;
235 virtual int AttribI(int face, int point, int id) const=0;
236 virtual unsigned int Color(int face, int point) const=0;
237 virtual Point2d TexCoord(int face, int point) const=0;
238 virtual float TexCoord3(int face, int point) const { return 0.0; }
239 virtual VEC4 Joints(int face, int point) const { VEC4 v; v.x = 0.0; v.y = 0.0; v.z = 0.0; v.w = 0.0; return v; }
240 virtual VEC4 Weights(int face, int point) const { VEC4 v; v.x = 0.0; v.y = 0.0; v.z = 0.0; v.w = 0.0; return v; }
241 virtual float LightAmount(int face, int point) const { return 0.5; }
242
243 virtual bool IsTransparent() const { return false; }
244
245 virtual int NumObjects() const {
246 //std::cout << "Warning: FaceCollection::NumObjects() called" << std::endl;
247 return 1; }
248 virtual std::pair<int,int> GetObject(int o) const {
249 return std::make_pair(0,NumFaces()); }
250
251 virtual Point EndFacePoint(int face, int point) const { return FacePoint(face, point); }
252 virtual Vector EndPointNormal(int face, int point) const { return PointNormal(face,point); }
253 virtual float EndAttrib(int face, int point, int id) const { return Attrib(face, point, id); }
254 virtual int EndAttribI(int face, int point, int id) const { return AttribI(face,point,id); }
255 virtual unsigned int EndColor(int face, int point) const { return Color(face,point); }
256 virtual Point2d EndTexCoord(int face, int point) const { return TexCoord(face,point); }
257 virtual float EndTexCoord3(int face, int point) const { return TexCoord3(face,point); }
258
259 virtual float StartTime() const { return 0.0; }
260 virtual float Duration() const { return 1.0; }
261
262 virtual int NumTextures() const { return 0; }
263 virtual void GenTexture(int num) { }
264 virtual BufferRef TextureBuf(int num) const { BufferRef ref; ref.buffer = 0; return ref; }
265 virtual int FaceTexture(int face) const { return -1; }
266
267 virtual BBOX GetBoundingBox(bool &success) const { success=false; BBOX b; return b; }
268
269 virtual bool IsMatrixElem() const { return false; }
270
271 virtual bool HasBatchMap() const { /*std::cout << "HasBatchMap returning false: " << name() << std::endl;*/ return false; }
272 virtual FaceBufferRef BatchMap(int start_face, int end_face) const
273 {
274 FaceBufferRef r; r.numfaces=0; return r;
275 }
276};
277
278
280{
281public:
282 virtual ~Attach() { }
283 virtual void Prepare()=0;
284 virtual int Attached(int face, int point) const=0;
285};
286
287
288// Face interpolation
289Point FaceCollection_FacePoint(FaceCollection *coll, int face, float u, float v);
290Vector FaceCollection_Normal(FaceCollection *coll, int face, float u, float v);
291Point2d FaceCollection_TexCoord(FaceCollection *coll, int face, float u, float v);
292float FaceCollection_TexCoord3(FaceCollection *coll, int face, float u, float v);
293unsigned int FaceCollection_Color(FaceCollection *coll, int face, float u, float v);
294
295// face intersection
296std::tuple<int,Point,float,float> FaceCollection_IntersectFace(FaceCollection *coll, Point start_pos, Vector ray_dir);
297
298// face area related functions
301
302
303
305{
306public:
307 virtual ~LineCollection() { }
308 virtual void Collect(CollectVisitor &vis)=0;
309 virtual void HeavyPrepare()=0;
310 virtual void Prepare() { }
311 virtual int NumLines() const =0;
312 virtual Point LinePoint(int line, int point) const = 0;
313 virtual unsigned int LineColor(int line, int point) const { return 0xffffffff; }
314
315 virtual Point EndLinePoint(int line, int point) const { return LinePoint(line,point); }
316 virtual unsigned int EndLineColor(int line, int point) const { return LineColor(line,point); }
317};
318
319
320
321#endif
VA_ComponentType
Definition EffectI.hh:90
@ VA_UBYTE
Definition EffectI.hh:92
@ VA_FLOAT
Definition EffectI.hh:97
@ VA_SHORT
Definition EffectI.hh:93
@ VA_DOUBLE
Definition EffectI.hh:98
@ VA_USHORT
Definition EffectI.hh:94
@ VA_INT
Definition EffectI.hh:95
@ VA_UINT
Definition EffectI.hh:96
@ VA_BYTE
Definition EffectI.hh:91
@ VA_INVALID
Definition EffectI.hh:99
float FaceCollection_TexCoord3(FaceCollection *coll, int face, float u, float v)
std::tuple< int, float, float > FaceCollection_PickRandomPoint_areasensitive(FaceCollection *coll)
float FaceCollection_CalculateFaceArea(FaceCollection *coll, int face)
unsigned int FaceCollection_Color(FaceCollection *coll, int face, float u, float v)
VertexArrayEnum
Definition EffectI.hh:77
@ VA_Joints_0
Definition EffectI.hh:84
@ VA_Weights_0
Definition EffectI.hh:86
@ VA_TexCoord_0
Definition EffectI.hh:80
@ VA_Position
Definition EffectI.hh:78
@ VA_TexCoord_1
Definition EffectI.hh:81
@ VA_Joints_1
Definition EffectI.hh:85
@ VA_Color_0
Definition EffectI.hh:82
@ VA_Color_1
Definition EffectI.hh:83
@ VA_Normal
Definition EffectI.hh:79
@ VA_Weights_1
Definition EffectI.hh:87
Vector FaceCollection_Normal(FaceCollection *coll, int face, float u, float v)
Point2d FaceCollection_TexCoord(FaceCollection *coll, int face, float u, float v)
Point FaceCollection_FacePoint(FaceCollection *coll, int face, float u, float v)
std::tuple< int, Point, float, float > FaceCollection_IntersectFace(FaceCollection *coll, Point start_pos, Vector ray_dir)
void stackTrace()
Definition GameApi_bm.cc:746
Definition compiled_tests.cpp:1189
Definition EffectI.hh:22
virtual ~Array()
Definition EffectI.hh:24
virtual I Size() const =0
Definition EffectI.hh:280
virtual void Prepare()=0
virtual int Attached(int face, int point) const =0
virtual ~Attach()
Definition EffectI.hh:282
Definition compiled_tests.cpp:1200
Definition GraphI.hh:612
Definition GraphI.hh:622
Definition EffectI.hh:41
virtual ~CurveIn2d()
Definition EffectI.hh:43
Definition EffectI.hh:49
virtual ~CurveIn3d()
Definition EffectI.hh:51
Definition EffectI.hh:30
virtual ~Curve()
Definition EffectI.hh:32
Definition EffectI.hh:137
virtual void Collect(CollectVisitor &vis)=0
virtual int NumObjects() const
Definition EffectI.hh:159
virtual int FaceTexture(int face) const
Definition EffectI.hh:166
virtual void Prepare()=0
virtual std::pair< int, int > GetObject(int o) const
Definition EffectI.hh:160
virtual void GenTexture(int num)
Definition EffectI.hh:164
virtual Vertex Face(int face, int point) const =0
virtual ~FaceCollection2()
Definition EffectI.hh:139
virtual int NumTextures() const
Definition EffectI.hh:163
virtual BufferRef TextureBuf(int num) const
Definition EffectI.hh:165
virtual int NumFaces() const =0
virtual int NumPoints(int face) const =0
virtual void HeavyPrepare()=0
Definition EffectI.hh:212
virtual BufferRef TextureBuf(int num) const
Definition EffectI.hh:264
virtual ~FaceCollection()
Definition EffectI.hh:214
virtual void SetDoneCount(int i)
Definition EffectI.hh:221
virtual bool has_skeleton() const
Definition EffectI.hh:230
virtual bool has_attrib() const
Definition EffectI.hh:227
virtual VEC4 Joints(int face, int point) const
Definition EffectI.hh:239
virtual Vector PointNormal(int face, int point) const =0
virtual bool has_normal() const
Definition EffectI.hh:226
virtual Point FacePoint(int face, int point) const =0
virtual void Prepare()=0
virtual BBOX GetBoundingBox(bool &success) const
Definition EffectI.hh:267
virtual float EndTexCoord3(int face, int point) const
Definition EffectI.hh:257
virtual Point2d EndTexCoord(int face, int point) const
Definition EffectI.hh:256
virtual bool has_color() const
Definition EffectI.hh:228
virtual bool has_texcoord() const
Definition EffectI.hh:229
virtual bool Ready() const
Definition EffectI.hh:219
virtual int NumObjects() const
Definition EffectI.hh:245
virtual bool HasBatchMap() const
Definition EffectI.hh:271
virtual bool ReadyToPrepare() const
Definition EffectI.hh:216
virtual float EndAttrib(int face, int point, int id) const
Definition EffectI.hh:253
virtual float StartTime() const
Definition EffectI.hh:259
virtual void HeavyPrepare()=0
virtual std::string name() const =0
virtual float LightAmount(int face, int point) const
Definition EffectI.hh:241
virtual FaceBufferRef BatchMap(int start_face, int end_face) const
Definition EffectI.hh:272
virtual bool IsMatrixElem() const
Definition EffectI.hh:269
virtual int FaceTexture(int face) const
Definition EffectI.hh:265
virtual std::pair< int, int > GetObject(int o) const
Definition EffectI.hh:248
virtual float Attrib(int face, int point, int id) const =0
virtual unsigned int Color(int face, int point) const =0
virtual int EndAttribI(int face, int point, int id) const
Definition EffectI.hh:254
virtual VEC4 Weights(int face, int point) const
Definition EffectI.hh:240
virtual int NumPoints(int face) const =0
virtual Point2d TexCoord(int face, int point) const =0
virtual void PrepareDone()
Definition EffectI.hh:222
virtual int NumFaces() const =0
virtual void Collect(CollectVisitor &vis)=0
virtual void GenTexture(int num)
Definition EffectI.hh:263
virtual Vector EndPointNormal(int face, int point) const
Definition EffectI.hh:252
virtual unsigned int EndColor(int face, int point) const
Definition EffectI.hh:255
virtual float TexCoord3(int face, int point) const
Definition EffectI.hh:238
virtual int NumTextures() const
Definition EffectI.hh:262
virtual Point EndFacePoint(int face, int point) const
Definition EffectI.hh:251
virtual bool IsTransparent() const
Definition EffectI.hh:243
virtual int AttribI(int face, int point, int id) const =0
virtual float Duration() const
Definition EffectI.hh:260
Definition EffectI.hh:11
A Domain
Definition EffectI.hh:13
virtual ~Function()
Definition EffectI.hh:16
virtual B Index(A a) const =0
B CoDomain
Definition EffectI.hh:14
Definition EffectI.hh:305
virtual unsigned int LineColor(int line, int point) const
Definition EffectI.hh:313
virtual void Collect(CollectVisitor &vis)=0
virtual unsigned int EndLineColor(int line, int point) const
Definition EffectI.hh:316
virtual Point EndLinePoint(int line, int point) const
Definition EffectI.hh:315
virtual ~LineCollection()
Definition EffectI.hh:307
virtual void HeavyPrepare()=0
virtual void Prepare()
Definition EffectI.hh:310
virtual int NumLines() const =0
virtual Point LinePoint(int line, int point) const =0
Definition EffectI.hh:189
virtual void Collect(CollectVisitor &vis)=0
virtual int NumFaces() const =0
virtual void Indices(std::vector< int > &vec)=0
virtual void Faces(std::vector< Point > &vec)=0
virtual void Joints(std::vector< VEC4 > &vec)=0
virtual void Prepare()=0
virtual int NumVertices() const =0
virtual void Tex(std::vector< Point2d > &vec)=0
virtual void Weights(std::vector< VEC4 > &vec)=0
virtual ~MutableFaceCollection()
Definition EffectI.hh:191
virtual void HeavyPrepare()=0
virtual void Normal(std::vector< Vector > &vec)=0
virtual std::string name() const =0
virtual void Color(std::vector< unsigned int > &vec)=0
virtual void Tex3(std::vector< float > &vec)=0
Definition VectorTools.hh:119
float w
Definition VectorTools.hh:121
float y
Definition VectorTools.hh:121
float x
Definition VectorTools.hh:121
float z
Definition VectorTools.hh:121
Definition VectorTools.hh:125
Definition EffectI.hh:68
virtual void prepare(int i)=0
virtual void update(int i)=0
virtual void render()=0
virtual ~VertexArrayDyn()
Definition EffectI.hh:70
Definition EffectI.hh:102
virtual int NumIndices() const =0
virtual ~VertexArrays()
Definition EffectI.hh:104
virtual VA_ComponentType IndicesComponentType() const =0
virtual unsigned char * Indices() const =0
virtual size_t Stride(VertexArrayEnum i) const =0
virtual void Collect(CollectVisitor &vis)=0
virtual void Prepare()=0
virtual void * Attrib(VertexArrayEnum i) const =0
virtual int ComponentCount(VertexArrayEnum i) const =0
virtual std::string enabled() const =0
virtual VA_ComponentType ComponentType(VertexArrayEnum i) const =0
virtual int Num(VertexArrayEnum i) const =0
virtual void HeavyPrepare()=0
Definition EffectI.hh:56
float start_y
Definition EffectI.hh:59
float end_z
Definition EffectI.hh:62
float start_x
Definition EffectI.hh:57
float end_x
Definition EffectI.hh:58
float start_z
Definition EffectI.hh:61
float end_y
Definition EffectI.hh:60
Definition Buffer.hh:32
unsigned int * buffer
Definition Buffer.hh:33
Definition EffectI.hh:171
unsigned char * indices_char
Definition EffectI.hh:175
unsigned int * color
Definition EffectI.hh:182
int numfaces
Definition EffectI.hh:172
Point * texcoords
Definition EffectI.hh:183
Vector * pointnormal
Definition EffectI.hh:181
unsigned short * indices_short
Definition EffectI.hh:176
VEC4 * joints
Definition EffectI.hh:184
unsigned int * indices_int
Definition EffectI.hh:177
Point * facepoint2
Definition EffectI.hh:180
VEC4 * weights
Definition EffectI.hh:185
Point * facepoint
Definition EffectI.hh:179
int numvertices
Definition EffectI.hh:173
Definition EffectI.hh:144
float texcoord3
Definition EffectI.hh:150
unsigned int color
Definition EffectI.hh:148
Vector pointnormal
Definition EffectI.hh:147
VEC4 joint
Definition EffectI.hh:151
Point2d texcoord
Definition EffectI.hh:149
Point end_facepoint
Definition EffectI.hh:146
VEC4 weight
Definition EffectI.hh:152
Point facepoint
Definition EffectI.hh:145
Definition VectorTools.hh:910
Definition Parser.cc:60
num
Definition view.php:2821