GameApi 28
Library used by GameApi Builder tool
Loading...
Searching...
No Matches
State.hh
Go to the documentation of this file.
1#ifndef STATE_HH
2#define STATE_HH
3#include "Buffer.hh"
4#include "Graph.hh"
5#include "Effect.hh"
6
7
8
9class State
10{
11public:
12 void Alloc(int count);
13 void SetTexture(int statenum, BufferRef buffer);
14public:
15 void SwitchToState(int statenum);
16};
17
18#if 0
19class MeshStates : public Mesh
20{
21public:
22 MeshStates(Mesh &m, int state) : m(m), state(state)
23 {
24 numstates = m.NumStates();
25 points = new Point*[numstates];
26 for(int i=0;i<numstates;i++)
27 {
28 points[i] = new Point[];
29 }
30 }
31
32 virtual int NumFrames() const=0;
33 virtual int NumFaces(int framenum) const=0;
34 virtual int NumPoints() const=0;
35 virtual Point FacePoint(int framenum, int face, int point) const=0;
36
37 int NumPoints(int framenum, int state) const
38 {
39 int numpoints = m.NumPoints();
40 int fr = m.NumFrames();
41 int count = 0;
42 for(int f=0;f<fr;f++)
43 {
44 int faces = m.NumFaces(f);
45 for(int fa=0;fa<faces;fa++)
46 {
47 count += numpoints;
48 }
49 }
50 }
51private:
52 Mesh &m;
53 int state;
54 Point **points;
55 int numstates;
56};
57#endif
58
59template<class T, class CX, class CY>
60class ColumnBitmap : public Bitmap<T>
61{
62public:
63 virtual CX Column(int x) const=0;
64 virtual CY Row(int y) const=0;
65};
66
67template<class C, class CX, class CY>
68class DynColumnBitmap : public ColumnBitmap<C,CX,CY>
69{
70public:
71 DynColumnBitmap(int sx, int sy) : sx(sx), sy(sy)
72 {
73 cx_array = new CX[sx];
74 cy_array = new CY[sy];
75 c_array = new C[sx*sy];
76 }
77 ~DynColumnBitmap() { delete [] cx_array; delete [] cy_array; delete [] c_array; }
78 virtual int SizeX() const { return sx; }
79 virtual int SizeY() const { return sy; }
80 virtual C Map(int x, int y) const
81 {
82 return c_array[x+y*sx];
83 }
84 CX Column(int x) const
85 {
86 return cx_array[x];
87 }
88 CY Row(int y) const
89 {
90 return cy_array[y];
91 }
92
93 C &DynMap(int x, int y) const
94 {
95 //std::cout << "DynMap " << x << " " << y << std::endl;
96 return c_array[x+y*sx];
97 }
98 CX &DynColumn(int x) const
99 {
100 return cx_array[x];
101 }
102 CY &DynRow(int y) const
103 {
104 return cy_array[y];
105 }
106
107private:
108 int sx,sy;
109 CX *cx_array;
110 CY *cy_array;
111 C *c_array;
112};
114{
115 StateColumn() : framenum(0), numstates(0), m(Matrix::Identity()) { }
119};
121{
123};
124
133
135{
136public:
137 virtual int NumFaces() const=0;
138 virtual int NumPoints() const=0;
139 virtual Point FacePoint(int face, int point) const=0;
140 virtual Vector PointNormal(int face, int point) const=0;
141 virtual Point2d TexCoord(int face, int point) const=0;
142 virtual unsigned int VertexColor(int face, int point) const=0;
143
144 virtual int Pos() const =0;
145 virtual int Size() const=0;
146};
147
149{
150public:
151 virtual int NumFaces() const { return 0; }
152 virtual int NumPoints() const { return 0; }
153 virtual Point FacePoint(int face, int point) const { return Point(0.0,0.0,0.0); }
154 virtual Vector PointNormal(int face, int point) const { return Vector(0.0,0.0,0.0); }
155 virtual Point2d TexCoord(int face, int point) const { Point2d p; p.x = 0.0; return p; }
156 virtual unsigned int VertexColor(int face, int point) const
157 {
158 return 0;
159 }
160
161 virtual int Pos() const { return 0; }
162 virtual int Size() const { return 0; }
163};
164
165
166class FaceInfoMesh : public Mesh
167{
168public:
169 FaceInfoMesh(FaceInfo &fi) : fi(fi) { }
170 virtual int NumFrames() const { return 1; }
171 virtual int NumFaces(int framenum) const { return fi.NumFaces(); }
172 virtual int NumPoints() const { return fi.NumPoints(); }
173 virtual Point FacePoint(int framenum, int statenum, int face, int point) const { return fi.FacePoint(face, point); }
174
175 virtual int NumStates() const { return 0; }
176 virtual int StateNum(int frame, int face) const { return 0; }
177
178private:
179 FaceInfo &fi;
180};
181
182
184{
185public:
187 virtual int NumFrames() const { return 1; }
188 virtual Vector PointNormal(int framenum, int statenum, int face, int point) const
189 {
190 return fi.PointNormal(face,point);
191 }
192private:
193 FaceInfo &fi;
194};
195
197{
198public:
200 virtual int NumFrames() const { return 1; }
201 Point2d TexCoord(int framenum, int statenum, int face, int point) const
202 {
203 return fi.TexCoord(face,point);
204 }
205private:
206 FaceInfo &fi;
207};
208
210{
211public:
212 FaceInfoMeshColors(FaceInfo &fi) : fi(fi) { }
213 virtual int NumFrames() const { return 1; }
214 virtual unsigned int VertexColor(int framenum, int statenum, int face, int point) const { return fi.VertexColor(face, point); }
215
216private:
217 FaceInfo &fi;
218};
219
220
221
222
223class FaceInfoImpl : public FaceInfo
224{
225public:
226 FaceInfoImpl(FaceInfo *next) : next(next) { }
227 virtual int NumFaces() const { return next->NumFaces(); }
228 virtual int NumPoints() const { return next->NumPoints(); }
229 virtual Point FacePoint(int face, int point) const { return next->FacePoint(face, point); }
230 virtual Vector PointNormal(int face, int point) const { return next->PointNormal(face,point); }
231 virtual Point2d TexCoord(int face, int point) const { return next->TexCoord(face,point); }
232 virtual unsigned int VertexColor(int face, int point) const
233 {
234 return next->VertexColor(face,point);
235 }
236private:
237 FaceInfo *next;
238};
239
241{
242public:
243 FaceInfoCalc(Mesh &m, int framenum, int statenum) : m(&m), framenum(framenum), statenum(statenum)
244 {
245 m_currentstate = m.StateNum(framenum, 0);
246 }
247 FaceInfoCalc(Mesh &m, MeshNormals &n, int framenum, int statenum) : m(&m), normals(&n), framenum(framenum), statenum(statenum) {
248 m_currentstate = m.StateNum(framenum, 0);
249
250 }
251 FaceInfoCalc(Mesh &m, MeshTexCoords &c, int framenum, int statenum) : m(&m), coords(&c), framenum(framenum), statenum(statenum)
252 {
253 m_currentstate = m.StateNum(framenum, 0);
254 }
255 FaceInfoCalc(Mesh &m, MeshColors &c, int framenum, int statenum) : m(&m), color(&c), framenum(framenum), statenum(statenum)
256 {
257 m_currentstate = m.StateNum(framenum, 0);
258 }
259
260 mutable int currentpos;
261 mutable int currentsize;
262 virtual int NumFaces() const
263 {
264 //int framenum = 0;
265 int facenum = m->NumFaces(framenum);
266 if (m->NumStates()<2) { return facenum; }
267 int currentstate = -1;
268 if (facenum) { currentstate = m_currentstate; /* m->StateNum(framenum,0);*/ }
269 int count = 0;
270 int count2 =0;
271 int face = 0;
272 if (statenum != 0)
273 {
274 for(; face < facenum; face++)
275 {
276 int state = m->StateNum(framenum, face);
277 if (state != currentstate)
278 {
279 if (count == statenum) break;
280 count ++;
281 currentstate = state;
282 if (count == statenum) break;
283 }
284 }
285 } else { if (facenum) currentstate = m_currentstate; /* m->StateNum(framenum,0);*/ }
286 currentpos = face;
287 //std::cout << "NumFaces currentpos = " << currentpos << std::endl;
288 for(;face<facenum;face++)
289 {
290 int state = m->StateNum(framenum, face);
291 count2++;
292 if (state != currentstate)
293 {
294 break;
295 }
296 }
297 currentsize = face - currentpos;
298 //std::cout << "NumFaces currentsize = " << currentsize << std::endl;
299 return currentsize; // count2
300 }
301 virtual Point FacePoint(int face2, int point2) const
302 {
303 if (!m) return Point(0.0,0.0,0.0);
304 //int framenum = 0;
305 int facenum = m->NumFaces(framenum);
306 if (m->NumStates()<2) { return m->FacePoint(framenum, 0, face2, point2); }
307 int currentstate = -1;
308 if (facenum) { currentstate = m->StateNum(framenum,0); }
309 int count = 0;
310 int count2 = 0;
311 int face = 0;
312 if (statenum != 0) {
313 for(; face < facenum; face++)
314 {
315 int state = m->StateNum(framenum, face);
316 if (state != currentstate)
317 {
318 currentstate = state;
319 if (count == statenum) break;
320 count ++;
321 if (count == statenum) break;
322 }
323 }
324 } else { if (facenum) currentstate = m->StateNum(framenum, 0); }
325 //std::cout << "FacePoint face1 = " << face << std::endl;
326 int oldface = face;
327 for(;face<facenum;face++)
328 {
329 int state = m->StateNum(framenum, face);
330 if (face2==count2)
331 {
332 //std::cout << "FacePoint face1 = " << face << std::endl;
333 return m->FacePoint(framenum, state, oldface+count2, point2);
334 }
335 count2++;
336 if (state != currentstate)
337 {
338 break;
339 }
340 if (face2==count2)
341 {
342 return m->FacePoint(framenum, state, oldface+count2, point2);
343 }
344 }
345
346 Point p(0.0,0.0,0.0);
347 return p;
348 }
349 virtual Vector PointNormal(int face2, int point2) const
350 {
351 if (!m) return Vector(0.0,0.0,0.0);
352 if (!normals) return Vector(0.0,0.0,0.0);
353 //int framenum = 0;
354 if (m->NumStates()<2) { return normals->PointNormal(framenum, 0, face2, point2); }
355 int facenum = m->NumFaces(framenum);
356 int currentstate = -1;
357 if (facenum) { currentstate = m->StateNum(framenum,0); }
358 int count = 0;
359 int count2 = 0;
360 int face = 0;
361 if (statenum != 0)
362 {
363 for(; face < facenum; face++)
364 {
365 int state = m->StateNum(framenum, face);
366 if (state != currentstate)
367 {
368 currentstate = state;
369 if (count == statenum) break;
370 count ++;
371 if (count == statenum) break;
372 }
373 }
374 }else { if (facenum) currentstate = m->StateNum(framenum, 0); }
375 int oldface = face;
376 for(;face<facenum;face++)
377 {
378 int state = m->StateNum(framenum, face);
379 if (face2==count2)
380 {
381 return normals->PointNormal(framenum, state, oldface+count2, point2);
382 }
383 count2++;
384 if (state != currentstate)
385 {
386 break;
387 }
388 if (face2==count2)
389 {
390 return normals->PointNormal(framenum, state, oldface+count2, point2);
391 }
392 }
393
394 Vector p(0.0,0.0,0.0);
395 return p;
396
397 }
398 virtual Point2d TexCoord(int face2, int point2) const
399 {
400 if (!m) { Point2d p; p.x = 0.0; p.y = 0.0; return p; }
401 if (!coords) { Point2d p; p.x = 0.0; p.y = 0.0; return p; }
402 //int framenum = 0;
403 int facenum = m->NumFaces(framenum);
404 int currentstate = -1;
405 if (m->NumStates()<2) { return coords->TexCoord(framenum, 0, face2, point2); }
406 if (facenum) { currentstate = m->StateNum(framenum,0); }
407 int count = 0;
408 int count2 = 0;
409 int face = 0;
410 if (statenum != 0) {
411 for(; face < facenum; face++)
412 {
413 int state = m->StateNum(framenum, face);
414 if (state != currentstate)
415 {
416 currentstate = state;
417 if (count == statenum) break;
418 count ++;
419 if (count == statenum) break;
420 }
421 }
422 } else { if (facenum) currentstate = m->StateNum(framenum, 0); }
423 int oldface = face;
424
425 for(;face<facenum;face++)
426 {
427 int state = m->StateNum(framenum, face);
428 if (face2==count2)
429 {
430 Point2d p = coords->TexCoord(framenum, state, oldface+count2, point2);
431 // std::cout << framenum << " " << state << ":" << count2 << " " << point2 << ":" << p.x << " " << p.y << std::endl;
432 return p;
433 }
434 count2++;
435 if (state != currentstate)
436 {
437 break;
438 }
439 if (face2==count2)
440 {
441 Point2d p = coords->TexCoord(framenum, state, oldface+count2, point2);
442 //std::cout << framenum << " " << state << ":" << count2 << " " << point2 << ":" << p.x << " " << p.y << std::endl;
443 return p;
444 }
445 }
446
447 Point2d p;
448 p.x = 0.0; p.y = 0.0;
449 return p;
450
451 }
452 virtual unsigned int VertexColor(int face2, int point2) const
453 {
454 if (!m) { unsigned int p = 0; return p; }
455 if (!color) { unsigned int p = 0; return p; }
456 //int framenum = 0;
457 if (m->NumStates()<2) { return color->VertexColor(framenum, 0, face2, point2); }
458 int facenum = m->NumFaces(framenum);
459 int currentstate = -1;
460 if (facenum) { currentstate = m->StateNum(framenum,0); }
461 int count = 0;
462 int count2 = 0;
463 int face = 0;
464 if (statenum != 0) {
465 for(; face < facenum; face++)
466 {
467 int state = m->StateNum(framenum, face);
468 if (state != currentstate)
469 {
470 currentstate = state;
471 if (count == statenum) break;
472 count ++;
473 if (count == statenum) break;
474 }
475 }
476 } else { if (facenum) currentstate = m->StateNum(framenum, 0); }
477 int oldface = face;
478
479 for(;face<facenum;face++)
480 {
481 int state = m->StateNum(framenum, face);
482 if (face2==count2)
483 {
484 return color->VertexColor(framenum, state, oldface+count2, point2);
485 }
486 count2++;
487 if (state != currentstate)
488 {
489 break;
490 }
491 if (face2==count2)
492 {
493 return color->VertexColor(framenum, state, oldface+count2, point2);
494 }
495 }
496
497 unsigned int p=0;
498 return p;
499 }
500
501private:
502 Mesh *m;
503 MeshNormals *normals;
504 MeshTexCoords *coords;
506 int framenum, statenum;
507 int m_currentstate;
508};
509
511{
512public:
513 MeshFaceInfo(FaceInfo *next, Mesh &m, int framenum, int statenum) : FaceInfoImpl(next), calc(m, framenum, statenum), m(m) { }
514 virtual int Pos() const { calc.NumFaces(); return calc.currentpos; }
515 virtual int Size() const { calc.NumFaces(); return calc.currentsize; }
516
517 virtual int NumFaces() const
518 {
519 return calc.NumFaces();
520 }
521 virtual int NumPoints() const
522 {
523 return m.NumPoints();
524 }
525 virtual Point FacePoint(int face2, int point2) const
526 {
527 return calc.FacePoint(face2, point2);
528 }
529private:
530 FaceInfoCalc calc;
531 Mesh &m;
532};
533
535{
536public:
537 MeshNormalsFaceInfo(FaceInfo *next, Mesh &m, MeshNormals &n, int framenum, int statenum) : FaceInfoImpl(next), calc(m, n, framenum, statenum), m(m) { }
538 virtual int Pos() const { calc.NumFaces(); return calc.currentpos; }
539 virtual int Size() const { calc.NumFaces(); return calc.currentsize; }
540 virtual int NumFaces() const
541 {
542 return calc.NumFaces();
543 }
544 virtual int NumPoints() const
545 {
546 return m.NumPoints();
547 }
548 virtual Vector PointNormal(int face, int point) const
549 {
550 return calc.PointNormal(face,point);
551 }
552 virtual Point FacePoint(int face2, int point2) const
553 {
554 return calc.FacePoint(face2, point2);
555 }
556private:
557 FaceInfoCalc calc;
558 Mesh &m;
559};
560
562{
563public:
564 MeshTexCoordsFaceInfo(FaceInfo *next, Mesh &m, MeshTexCoords &tx, int framenum, int statenum) : FaceInfoImpl(next), calc(m, tx, framenum, statenum), m(m) { }
565 virtual int Pos() const { calc.NumFaces(); return calc.currentpos; }
566 virtual int Size() const { calc.NumFaces(); return calc.currentsize; }
567 virtual int NumFaces() const
568 {
569 return calc.NumFaces();
570 }
571 virtual int NumPoints() const
572 {
573 return m.NumPoints();
574 }
575 virtual Point2d TexCoord(int face, int point) const
576 {
577 return calc.TexCoord(face,point);
578 }
579 virtual Point FacePoint(int face2, int point2) const
580 {
581 return calc.FacePoint(face2, point2);
582 }
583private:
584 FaceInfoCalc calc;
585 Mesh &m;
586};
587
588
590{
591public:
592 MeshColorsFaceInfo(FaceInfo *next, Mesh &m, MeshColors &cl, int framenum, int statenum) : FaceInfoImpl(next), calc(m, cl, framenum, statenum), m(m) { }
593 virtual int Pos() const { calc.NumFaces(); return calc.currentpos; }
594 virtual int Size() const { calc.NumFaces(); return calc.currentsize; }
595 virtual int NumFaces() const
596 {
597 return calc.NumFaces();
598 }
599 virtual int NumPoints() const
600 {
601 return m.NumPoints();
602 }
603 virtual unsigned int VertexColor(int face, int point) const
604 {
605 return calc.VertexColor(face,point);
606 }
607 virtual Point FacePoint(int face2, int point2) const
608 {
609 return calc.FacePoint(face2, point2);
610 }
611private:
612 FaceInfoCalc calc;
613 Mesh &m;
614};
615
616
617
619{
621};
622// indexed by (sx=framenum, sy=statenum)
623template<class C, class CX, class CY>
624class StateBitmap : public DynColumnBitmap<C,CX,CY>
625{
626public:
627 StateBitmap(int sx, int sy) : DynColumnBitmap<C, CX, CY>(sx,sy) { }
628 void SetColumn(int framenum, int numstates)
629 {
630 DynColumnBitmap<C,CX,CY>::DynColumn(framenum).framenum = framenum;
631 DynColumnBitmap<C,CX,CY>::DynColumn(framenum).numstates = numstates;
632 }
633 void SetRow(int statenum, int numframes)
634 {
635 DynColumnBitmap<C,CX,CY>::DynRow(statenum).statenum = statenum;
636 DynColumnBitmap<C,CX,CY>::DynRow(statenum).numframes = numframes;
637 }
638 void SetGrid(int framenum, int statenum, FaceInfo *info)
639 {
640 DynColumnBitmap<C,CX,CY>::DynMap(framenum,statenum).info = info;
641 }
642};
643
644class MeshStateBitmap : public StateBitmap<StateInfo, StateColumn, StateRow>
645{
646public:
649 {
650 }
651 void HeavyPrepare() { }
652
653 void Prepare() { }
654
655 void Copy()
656 {
657 int frames = m.NumFrames();
658 int states = CountY(m);
659 for(int x=0;x<frames;x++)
660 {
661 for(int y=0;y<states;y++)
662 {
663 SetGrid(x,y, new MeshFaceInfo(new EmptyFaceInfo, m, x,y));
664 }
665 }
666 }
667 int CountX(Mesh &m)
668 {
669 int count = m.NumFrames();
670 return count;
671 }
672 int CountY(Mesh &m)
673 {
674 int framenum = 0;
675 int facenum = m.NumFaces(framenum);
676 int currentstate = -1;
677 int count = 0;
678 std::cout << "CountY: faces=" << facenum << std::endl;
679 for(int face = 0; face < facenum; face++)
680 {
681 int state = m.StateNum(framenum, face);
682 if (state != currentstate)
683 {
684 count ++;
685 currentstate = state;
686 }
687 }
688 return count;
689 }
690
691private:
692 std::map<int,int> counts;
693 Mesh &m;
694};
695
696
697class MeshNormalsStateBitmap : public StateBitmap<StateInfo, StateColumn, StateRow>
698{
699public:
702 {
703 }
704 void HeavyPrepare() { }
705
706 void Prepare() { }
707 void Copy()
708 {
709 int frames = m.NumFrames();
710 int states = CountY(m);
711 for(int x=0;x<frames;x++)
712 {
713 for(int y=0;y<states;y++)
714 {
715 SetGrid(x,y, new MeshNormalsFaceInfo(new EmptyFaceInfo, m, n, x,y));
716 }
717 }
718 }
719 int CountX(Mesh &m)
720 {
721 int count = m.NumFrames();
722 return count;
723 }
724 int CountY(Mesh &m)
725 {
726 int framenum = 0;
727 int facenum = m.NumFaces(framenum);
728 int currentstate = -1;
729 int count = 0;
730 for(int face = 0; face < facenum; face++)
731 {
732 int state = m.StateNum(framenum, face);
733 if (state != currentstate)
734 {
735 count ++;
736 currentstate = state;
737 }
738 }
739 return count;
740 }
741
742private:
743 //std::map<int,int> counts;
744 Mesh &m;
745 MeshNormals &n;
746};
747
748
749class MeshColorsStateBitmap : public StateBitmap<StateInfo, StateColumn, StateRow>
750{
751public:
754 {
755 }
756 void HeavyPrepare() { }
757
758 void Prepare() { }
759 void Copy()
760 {
761 int frames = m.NumFrames();
762 int states = CountY(m);
763 for(int x=0;x<frames;x++)
764 {
765 for(int y=0;y<states;y++)
766 {
767 SetGrid(x,y, new MeshColorsFaceInfo(new EmptyFaceInfo,m, n, x,y));
768 }
769 }
770 }
771 int CountX(Mesh &m)
772 {
773 int count = m.NumFrames();
774 return count;
775 }
776 int CountY(Mesh &m)
777 {
778 int framenum = 0;
779 int facenum = m.NumFaces(framenum);
780 int currentstate = -1;
781 int count = 0;
782 for(int face = 0; face < facenum; face++)
783 {
784 int state = m.StateNum(framenum, face);
785 if (state != currentstate)
786 {
787 count ++;
788 currentstate = state;
789 }
790 }
791 return count;
792 }
793
794private:
795 //std::map<int,int> counts;
796 Mesh &m;
797 MeshColors &n;
798};
799
800class MeshTexCoordStateBitmap : public StateBitmap<StateInfo, StateColumn, StateRow>
801{
802public:
805 {
806 }
807 void HeavyPrepare() { }
808
809 void Prepare() { }
810
811 void Copy()
812 {
813 int frames = m.NumFrames();
814 int states = CountY(m);
815 for(int x=0;x<frames;x++)
816 {
817 for(int y=0;y<states;y++)
818 {
819 SetGrid(x,y, new MeshTexCoordsFaceInfo(new EmptyFaceInfo,m, n, x,y));
820 }
821 }
822 }
823 int CountX(Mesh &m)
824 {
825 int count = m.NumFrames();
826 return count;
827 }
828 int CountY(Mesh &m)
829 {
830 int framenum = 0;
831 int facenum = m.NumFaces(framenum);
832 int currentstate = -1;
833 int count = 0;
834 for(int face = 0; face < facenum; face++)
835 {
836 int state = m.StateNum(framenum, face);
837 if (state != currentstate)
838 {
839 count ++;
840 currentstate = state;
841 }
842 }
843 return count;
844 }
845
846private:
847 //std::map<int,int> counts;
848 Mesh &m;
849 MeshTexCoords &n;
850};
851
852
853class FrameArrayMesh : public Mesh
854{
855public:
856 FrameArrayMesh(Mesh **array, int size) : array(array), size(size) { }
857 virtual int NumFrames() const { return size; }
858 virtual int NumFaces(int framenum) const
859 {
860 return array[framenum]->NumFaces(0);
861 //int s = size;
862 //int count = 0;
863 //for(int i=0;i<s;i++)
864 // {
865 // count += array[i]->NumFaces(framenum);
866 // }
867 //return count;
868 }
869 virtual int NumPoints() const
870 {
871 return array[0]->NumPoints();
872 }
873 virtual Point FacePoint(int framenum, int statenum, int face, int point) const {
874 return array[framenum]->FacePoint(0, statenum, face, point);
875 }
876
877 virtual int NumStates() const { return 0; }
878 virtual int StateNum(int framenum, int face) const { return 0; }
879
880private:
881 Mesh **array;
882 int size;
883};
884
885
887{
888public:
889 FrameArrayMeshNormals(MeshNormals **normals, int size) : normals(normals), size(size) { }
890 virtual int NumFrames() const { return size; }
891 virtual Vector PointNormal(int framenum, int statenum, int face, int point) const
892 {
893 //std::cout << framenum << " " << size << std::endl;
894 //std::cout << normals << std::endl;
895 //std::cout << normals[framenum] << std::endl;
896 return normals[framenum]->PointNormal(0, statenum, face, point);
897 }
898private:
899 MeshNormals **normals;
900 int size;
901};
902
904{
905public:
906 FrameArrayMeshColors(MeshColors **colors, int size) : colors(colors), size(size) { }
907 virtual int NumFrames() const { return size; }
908 virtual unsigned int VertexColor(int framenum, int statenum, int face, int point) const
909 {
910 return colors[framenum]->VertexColor(0, statenum, face, point);
911 }
912private:
914 int size;
915};
916
918{
919public:
920 FrameArrayMeshTexCoords(MeshTexCoords **coords, int size) : coords(coords), size(size) { }
921 virtual int NumFrames() const { return size; }
922 Point2d TexCoord(int framenum, int statenum, int face, int point) const
923 {
924 return coords[framenum]->TexCoord(0, statenum, face, point);
925 }
926private:
927 MeshTexCoords **coords;
928 int size;
929};
930
932{
935 {
936 if (m) { bitmap = new MeshStateBitmap(*m); }
937 if (n) { normals = new MeshNormalsStateBitmap(*m, *n); }
938 if (coords) { texcoord = new MeshTexCoordStateBitmap(*m, *coords); }
939 if (c) { colors = new MeshColorsStateBitmap(*m, *c); }
940 }
941 ~StateBitmaps() { delete bitmap; delete normals; delete colors; delete texcoord; delete tex; }
942 void SetMatrix(int framenum, Matrix m)
943 {
944 StateColumn &column = bitmap->DynColumn(framenum);
945 column.m = m;
946 }
947 void SetTexture(int face, BufferRef ref)
948 {
949 int sy = bitmap->SizeY();
950 for(int y=0;y<sy;y++)
951 {
952 StateInfo &info = bitmap->DynMap(0, y);
953 int pos = info.info->Pos();
954 int size = info.info->Size();
955 //std::cout << "SetTexturepos: " << pos << " " << size << ":" << face << std::endl;
956 if (face >= pos && face < pos+size)
957 {
958 //std::cout << "SetTexture" << y << std::endl;
959 StateRow &row = texcoord->DynRow(y);
960 row.texture = new Texture;
961 row.texture->buffer = ref;
962 break;
963 }
964 }
965 }
966 void Prepare()
967 {
968 bitmap->Copy();
969 normals->Copy();
970 colors->Copy();
971 texcoord->Copy();
972 if (tex)
973 {
974 int s = tex->NumTextures();
975 //std::cout << "NumTextures: " << s << std::endl;
976 for(int i=0;i<s;i++)
977 {
978 tex->GenTexture(i);
979 BufferRef r = tex->TextureBuf(i);
980 int face = texfaces.Index(i);
981 //std::cout << "Setting texture: " << face << " " << r.width << " " << r.height << std::endl;
982 SetTexture(face, r);
983 }
984 }
985 int sx = bitmap->SizeX();
986 int sy = bitmap->SizeY();
987 //std::cout << sx << " " << sy << std::endl;
988 for(int y=0;y<sy;y++) // statenum
989 {
990 //std::cout << "State:" << y << std::endl;
991 StateRow &row = bitmap->DynRow(y);
992 row.rend = new ArrayRender(g_low);
993 if (row.texture)
994 row.rend->AllocTexture(1);
995 Mesh **meshes = new Mesh*[sx];
996 MeshNormals **normals2 = new MeshNormals*[sx];
997 MeshTexCoords **texcoords = new MeshTexCoords*[sx];
998 MeshColors **colors2 = new MeshColors*[sx];
999 for(int x=0;x<sx;x++) // framenum
1000 {
1001 StateInfo &s = bitmap->DynMap(x,y);
1002 StateInfo &sn = normals->DynMap(x,y);
1003 StateInfo &st = texcoord->DynMap(x,y);
1004 StateInfo &sc = colors->DynMap(x,y);
1005
1006 //std::cout << "Info:" << sn.info << std::endl;
1007
1008 //sn.rend = 0;
1009 //sc.rend = 0;
1010 //st.rend = 0;
1011
1012 meshes[x] = new FaceInfoMesh(*s.info);
1013 normals2[x] = new FaceInfoMeshNormals(*sn.info);
1014 texcoords[x] = new FaceInfoMeshTexCoords(*st.info);
1015 colors2[x] = new FaceInfoMeshColors(*sc.info);
1016 }
1017 FrameArrayMesh mesh(meshes, sx);
1018 FrameArrayMeshNormals normal(normals2, sx);
1019 FrameArrayMeshTexCoords coord(texcoords, sx);
1020 FrameArrayMeshColors color(colors2, sx);
1021
1022 MeshToTriangles trimesh(mesh);
1023 MeshNormalsToTriangles trinormal(normal, mesh.NumPoints()==4);
1024 MeshTexCoordsToTriangles tricoord(coord, mesh.NumPoints()==4);
1025 MeshColorsToTriangles tricolor(color, mesh.NumPoints()==4);
1026 row.rend->Alloc(trimesh.NumFaces(0), trimesh.NumFaces(0)*trimesh.NumPoints(), mesh.NumFrames(),normal.NumFrames(),color.NumFrames(),coord.NumFrames());
1027 row.rend->InsertAll(trimesh, trinormal, tricoord, tricolor);
1028 for(int i=0;i<sx;i++)
1029 {
1030 delete meshes[i];
1031 delete normals2[i];
1032 delete texcoords[i];
1033 delete colors2[i];
1034 }
1035 delete [] meshes;
1036 delete [] normals2;
1037 delete [] texcoords;
1038 delete [] colors2;
1039 }
1040 int texcount = sy;
1041 if (texcount && tex->NumTextures())
1042 {
1043
1044 MeshTextures *texture = 0;
1045 for(int y=sy-1;y>=0;y--)
1046 {
1047 StateRow &r = texcoord->DynRow(y);
1048 StateRow &rr = bitmap->DynRow(y);
1049 rr.rend->AllocTexture(1);
1050 BufferRef buf = r.texture->buffer;
1052 //if (texture)
1053 // {
1054 // texture = new MeshTexturesImpl(*bitmap, *texture);
1055 // }
1056 //else
1057 // {
1058 texture = new MeshTexturesImpl(*bitmap);
1059 // }
1060 rr.rend->UpdateTexture(*texture, 0);
1061 delete texture;
1062 }
1063 }
1064
1065 }
1066 void Render(int framenum);
1067 ArrayRender *GetRender(int row) const {
1068 StateRow &r = bitmap->DynRow(row);
1069 return r.rend;
1070 }
1071 Matrix GetMatrix(int framenum) const {
1072 StateColumn &col = bitmap->DynColumn(framenum);
1073 return col.m;
1074 }
1075
1082};
1083
1084
1085
1086// LINK a->a
1087// LINK a->(a,a)
1088// LINK (a,a)->a
1089// LINK a->_|_
1090// LINK T->a
1092{
1093public:
1094 virtual void Link(int face1, int face2)=0; // a->a
1095 virtual void LinkSplit(int face, int face1, int face2)=0; // a->(a,a)
1096 virtual void LinkCombine(int face1, int face2, int face)=0; // (a,a)->a
1097 virtual void LinkTerminate(int face1)=0;
1098 virtual void LinkStart(int face1)=0;
1099};
1100class FrameLinkage : public Linkage
1101{
1102public:
1103 FrameLinkage(int frame) : frame(frame) { }
1104 int FrameNum() const { return frame; }
1105
1106private:
1107 int frame;
1108};
1109
1111{
1112public:
1113 FrameLinkageImpl(int frame) : FrameLinkage(frame) { }
1114 virtual void Link(int face1, int face2) // a->a
1115 {
1116 Node n;
1117 n.type = 1;
1118 n.input_face1 = face1;
1119 n.output_face1 = face2;
1120 CheckInput(face1);
1121 CheckOutput(face2);
1122 vec.push_back(n);
1123 }
1124 virtual void LinkSplit(int face, int face1, int face2) // a->(a,a)
1125 {
1126 Node n;
1127 n.type = 2;
1128 n.input_face1 = face;
1129 n.output_face1 = face1;
1130 n.output_face2 = face2;
1131 CheckInput(face);
1132 CheckOutput(face1);
1133 CheckOutput(face2);
1134 vec.push_back(n);
1135 }
1136 virtual void LinkCombine(int face1, int face2, int face) // (a,a)->a
1137 {
1138 Node n;
1139 n.type = 3;
1140 n.input_face1 = face1;
1141 n.input_face2 = face2;
1142 n.output_face1 = face;
1143 CheckInput(face1);
1144 CheckInput(face2);
1145 CheckOutput(face);
1146 vec.push_back(n);
1147 }
1148 virtual void LinkTerminate(int face1) // a->_|_
1149 {
1150 Node n;
1151 n.type = 4;
1152 n.input_face1 = face1;
1153 n.output_face1 = -1;
1154 CheckInput(face1);
1155 vec.push_back(n);
1156 }
1157 virtual void LinkStart(int face1) // T -> a
1158 {
1159 Node n;
1160 n.type = 5;
1161 n.input_face1 = -1;
1162 n.output_face1 = face1;
1163 CheckOutput(face1);
1164 vec.push_back(n);
1165 }
1180 std::vector<Node> vec;
1181
1182 int CalcDelta() const
1183 {
1184 int s = vec.size();
1185 int count = 0;
1186 for(int i=0;i<s;i++)
1187 {
1188 const Node &n = vec[i];
1189 switch(n.type)
1190 {
1191 case 1: count+=0; break; // a->a
1192 case 2: count+=1; break; // a->(a,a)
1193 case 3: count+=0; break; // (a,a)->a
1194 case 4: count+=0; break; // a->_|_
1195 case 5: count+=1; break; // T->a
1196 };
1197 }
1198 return count;
1199 }
1200 void NextUsedOnes(std::vector<int> &vec2)
1201 {
1202 int s = vec.size();
1203 for(int i=0;i<s;i++)
1204 {
1205 const Node &n = vec[i];
1206 if (n.input_face1 != -1)
1207 vec2[n.input_face1] = 0;
1208
1209 if (n.input_face2 != -1)
1210 vec2[n.input_face2] = 0;
1211
1212 if (n.output_face1 != -1)
1213 vec2[n.output_face1] = 1;
1214
1215 if (n.output_face2 != -1)
1216 vec2[n.output_face2] = 1;
1217 }
1218 }
1219
1220 void CheckInput(int input)
1221 {
1222 int s = vec.size();
1223 for(int i=0;i<s;i++)
1224 {
1225 Node &n = vec[i];
1226 if (n.input_face1 == input) std::cout << "ERROR, INPUT DUPLICATE" << std::endl;
1227 if (n.input_face2 == input) std::cout << "ERROR, INPUT DUPLICATE" << std::endl;
1228 }
1229 }
1230
1231 void CheckOutput(int output)
1232 {
1233 int s = vec.size();
1234 for(int i=0;i<s;i++)
1235 {
1236 Node &n = vec[i];
1237 if (n.output_face1 == output) std::cout << "ERROR, OUTPUT DUPLICATE" << std::endl;
1238 if (n.output_face2 == output) std::cout << "ERROR, OUTPUT DUPLICATE" << std::endl;
1239 }
1240 }
1241
1242};
1243
1245{
1246public:
1247 std::vector<FrameLinkage*> vec; // indexed by framenum
1248};
1249#endif
Color2 colors[]
Definition Effect.cc:56
LowApi * g_low
Definition GameApi_low.cc:1684
void info(std::string info)
Definition check.cc:24
Definition Effect.hh:11461
void Alloc(int numfaces, int numvertices)
Definition GameApi_dep_arr_render.cc:415
std::vector< std::pair< int, int > > InsertAll(Mesh &mesh, MeshNormals &normal, MeshTexCoords &coord, MeshColors &color)
Definition GameApi_dep_arr_render.cc:348
void AllocTexture(int count)
Definition GameApi_dep_arr_render.cc:152
void UpdateTexture(MeshTextures &texture, int num, bool textrender=false)
Definition GameApi_dep_arr_render.cc:230
Definition Graph.hh:2459
Definition GraphI.hh:826
Definition Effect.hh:10323
Definition GraphI.hh:622
Definition State.hh:61
virtual CY Row(int y) const =0
virtual CX Column(int x) const =0
~DynColumnBitmap()
Definition State.hh:77
virtual int SizeX() const
Definition State.hh:78
C & DynMap(int x, int y) const
Definition State.hh:93
CY Row(int y) const
Definition State.hh:88
DynColumnBitmap(int sx, int sy)
Definition State.hh:71
CY & DynRow(int y) const
Definition State.hh:102
virtual C Map(int x, int y) const
Definition State.hh:80
CX Column(int x) const
Definition State.hh:84
CX & DynColumn(int x) const
Definition State.hh:98
virtual int SizeY() const
Definition State.hh:79
Definition State.hh:149
virtual int NumFaces() const
Definition State.hh:151
virtual Point FacePoint(int face, int point) const
Definition State.hh:153
virtual int NumPoints() const
Definition State.hh:152
virtual Point2d TexCoord(int face, int point) const
Definition State.hh:155
virtual Vector PointNormal(int face, int point) const
Definition State.hh:154
virtual int Size() const
Definition State.hh:162
virtual unsigned int VertexColor(int face, int point) const
Definition State.hh:156
virtual int Pos() const
Definition State.hh:161
Definition State.hh:241
virtual Vector PointNormal(int face2, int point2) const
Definition State.hh:349
int currentpos
Definition State.hh:260
virtual Point2d TexCoord(int face2, int point2) const
Definition State.hh:398
FaceInfoCalc(Mesh &m, int framenum, int statenum)
Definition State.hh:243
int currentsize
Definition State.hh:261
FaceInfoCalc(Mesh &m, MeshTexCoords &c, int framenum, int statenum)
Definition State.hh:251
virtual unsigned int VertexColor(int face2, int point2) const
Definition State.hh:452
virtual int NumFaces() const
Definition State.hh:262
FaceInfoCalc(Mesh &m, MeshColors &c, int framenum, int statenum)
Definition State.hh:255
virtual Point FacePoint(int face2, int point2) const
Definition State.hh:301
FaceInfoCalc(Mesh &m, MeshNormals &n, int framenum, int statenum)
Definition State.hh:247
virtual unsigned int VertexColor(int face, int point) const
Definition State.hh:232
virtual int NumPoints() const
Definition State.hh:228
virtual int NumFaces() const
Definition State.hh:227
FaceInfoImpl(FaceInfo *next)
Definition State.hh:226
virtual Vector PointNormal(int face, int point) const
Definition State.hh:230
virtual Point2d TexCoord(int face, int point) const
Definition State.hh:231
virtual Point FacePoint(int face, int point) const
Definition State.hh:229
Definition State.hh:210
virtual int NumFrames() const
Definition State.hh:213
virtual unsigned int VertexColor(int framenum, int statenum, int face, int point) const
Definition State.hh:214
FaceInfoMeshColors(FaceInfo &fi)
Definition State.hh:212
Definition State.hh:184
FaceInfoMeshNormals(FaceInfo &fi)
Definition State.hh:186
virtual int NumFrames() const
Definition State.hh:187
virtual Vector PointNormal(int framenum, int statenum, int face, int point) const
Definition State.hh:188
Definition State.hh:197
virtual int NumFrames() const
Definition State.hh:200
Point2d TexCoord(int framenum, int statenum, int face, int point) const
Definition State.hh:201
FaceInfoMeshTexCoords(FaceInfo &fi)
Definition State.hh:199
Definition State.hh:167
virtual int NumPoints() const
Definition State.hh:172
virtual int NumStates() const
Definition State.hh:175
virtual int NumFrames() const
Definition State.hh:170
virtual int StateNum(int frame, int face) const
Definition State.hh:176
FaceInfoMesh(FaceInfo &fi)
Definition State.hh:169
virtual int NumFaces(int framenum) const
Definition State.hh:171
virtual Point FacePoint(int framenum, int statenum, int face, int point) const
Definition State.hh:173
Definition State.hh:135
virtual int NumPoints() const =0
virtual int Pos() const =0
virtual unsigned int VertexColor(int face, int point) const =0
virtual int NumFaces() const =0
virtual int Size() const =0
virtual Vector PointNormal(int face, int point) const =0
virtual Point2d TexCoord(int face, int point) const =0
virtual Point FacePoint(int face, int point) const =0
Definition State.hh:904
virtual int NumFrames() const
Definition State.hh:907
FrameArrayMeshColors(MeshColors **colors, int size)
Definition State.hh:906
virtual unsigned int VertexColor(int framenum, int statenum, int face, int point) const
Definition State.hh:908
Definition State.hh:887
FrameArrayMeshNormals(MeshNormals **normals, int size)
Definition State.hh:889
virtual int NumFrames() const
Definition State.hh:890
virtual Vector PointNormal(int framenum, int statenum, int face, int point) const
Definition State.hh:891
Definition State.hh:918
virtual int NumFrames() const
Definition State.hh:921
FrameArrayMeshTexCoords(MeshTexCoords **coords, int size)
Definition State.hh:920
Point2d TexCoord(int framenum, int statenum, int face, int point) const
Definition State.hh:922
Definition State.hh:854
virtual int NumPoints() const
Definition State.hh:869
virtual int NumStates() const
Definition State.hh:877
virtual Point FacePoint(int framenum, int statenum, int face, int point) const
Definition State.hh:873
virtual int NumFaces(int framenum) const
Definition State.hh:858
FrameArrayMesh(Mesh **array, int size)
Definition State.hh:856
virtual int StateNum(int framenum, int face) const
Definition State.hh:878
virtual int NumFrames() const
Definition State.hh:857
Definition State.hh:1245
std::vector< FrameLinkage * > vec
Definition State.hh:1247
std::vector< Node > vec
Definition State.hh:1180
int CalcDelta() const
Definition State.hh:1182
virtual void LinkCombine(int face1, int face2, int face)
Definition State.hh:1136
void CheckInput(int input)
Definition State.hh:1220
virtual void Link(int face1, int face2)
Definition State.hh:1114
void NextUsedOnes(std::vector< int > &vec2)
Definition State.hh:1200
virtual void LinkTerminate(int face1)
Definition State.hh:1148
virtual void LinkStart(int face1)
Definition State.hh:1157
void CheckOutput(int output)
Definition State.hh:1231
FrameLinkageImpl(int frame)
Definition State.hh:1113
virtual void LinkSplit(int face, int face1, int face2)
Definition State.hh:1124
int FrameNum() const
Definition State.hh:1104
FrameLinkage(int frame)
Definition State.hh:1103
Definition EffectI.hh:11
Definition State.hh:1092
virtual void Link(int face1, int face2)=0
virtual void LinkTerminate(int face1)=0
virtual void LinkStart(int face1)=0
virtual void LinkCombine(int face1, int face2, int face)=0
virtual void LinkSplit(int face, int face1, int face2)=0
Definition VectorTools.hh:279
Definition State.hh:590
virtual Point FacePoint(int face2, int point2) const
Definition State.hh:607
virtual int NumPoints() const
Definition State.hh:599
MeshColorsFaceInfo(FaceInfo *next, Mesh &m, MeshColors &cl, int framenum, int statenum)
Definition State.hh:592
virtual unsigned int VertexColor(int face, int point) const
Definition State.hh:603
virtual int NumFaces() const
Definition State.hh:595
virtual int Pos() const
Definition State.hh:593
virtual int Size() const
Definition State.hh:594
Definition State.hh:750
MeshColorsStateBitmap(Mesh &m, MeshColors &n)
Definition State.hh:752
void Prepare()
Definition State.hh:758
void Collect(CollectVisitor &vis)
Definition State.hh:753
int CountX(Mesh &m)
Definition State.hh:771
int CountY(Mesh &m)
Definition State.hh:776
void HeavyPrepare()
Definition State.hh:756
void Copy()
Definition State.hh:759
Definition Effect.hh:11822
Definition Effect.hh:11389
Definition State.hh:511
virtual Point FacePoint(int face2, int point2) const
Definition State.hh:525
virtual int NumPoints() const
Definition State.hh:521
MeshFaceInfo(FaceInfo *next, Mesh &m, int framenum, int statenum)
Definition State.hh:513
virtual int Size() const
Definition State.hh:515
virtual int Pos() const
Definition State.hh:514
virtual int NumFaces() const
Definition State.hh:517
Definition State.hh:535
MeshNormalsFaceInfo(FaceInfo *next, Mesh &m, MeshNormals &n, int framenum, int statenum)
Definition State.hh:537
virtual int Pos() const
Definition State.hh:538
virtual Vector PointNormal(int face, int point) const
Definition State.hh:548
virtual int NumPoints() const
Definition State.hh:544
virtual Point FacePoint(int face2, int point2) const
Definition State.hh:552
virtual int Size() const
Definition State.hh:539
virtual int NumFaces() const
Definition State.hh:540
Definition State.hh:698
void Prepare()
Definition State.hh:706
void Collect(CollectVisitor &vis)
Definition State.hh:701
int CountY(Mesh &m)
Definition State.hh:724
void Copy()
Definition State.hh:707
void HeavyPrepare()
Definition State.hh:704
MeshNormalsStateBitmap(Mesh &m, MeshNormals &n)
Definition State.hh:700
int CountX(Mesh &m)
Definition State.hh:719
Definition Effect.hh:11779
Definition Effect.hh:11346
Definition State.hh:645
void HeavyPrepare()
Definition State.hh:651
void Collect(CollectVisitor &vis)
Definition State.hh:648
int CountY(Mesh &m)
Definition State.hh:672
MeshStateBitmap(Mesh &m)
Definition State.hh:647
void Prepare()
Definition State.hh:653
int CountX(Mesh &m)
Definition State.hh:667
void Copy()
Definition State.hh:655
Definition State.hh:801
void Collect(CollectVisitor &vis)
Definition State.hh:804
int CountY(Mesh &m)
Definition State.hh:828
MeshTexCoordStateBitmap(Mesh &m, MeshTexCoords &n)
Definition State.hh:803
int CountX(Mesh &m)
Definition State.hh:823
void Prepare()
Definition State.hh:809
void Copy()
Definition State.hh:811
void HeavyPrepare()
Definition State.hh:807
Definition State.hh:562
virtual int NumPoints() const
Definition State.hh:571
virtual int NumFaces() const
Definition State.hh:567
virtual int Size() const
Definition State.hh:566
virtual Point FacePoint(int face2, int point2) const
Definition State.hh:579
virtual int Pos() const
Definition State.hh:565
virtual Point2d TexCoord(int face, int point) const
Definition State.hh:575
MeshTexCoordsFaceInfo(FaceInfo *next, Mesh &m, MeshTexCoords &tx, int framenum, int statenum)
Definition State.hh:564
Definition Effect.hh:11800
Definition Effect.hh:11366
Definition Graph.hh:6501
Definition Effect.hh:11409
Definition Effect.hh:11742
virtual int NumFaces(int framenum) const
Definition Effect.hh:11752
virtual int NumPoints() const
Definition Effect.hh:11758
Definition Effect.hh:11256
virtual int NumPoints() const =0
virtual Point FacePoint(int framenum, int statenum, int face, int point) const =0
virtual int NumFaces(int framenum) const =0
virtual int NumFrames() const =0
virtual int NumStates() const =0
StateBitmap(int sx, int sy)
Definition State.hh:627
void SetColumn(int framenum, int numstates)
Definition State.hh:628
void SetGrid(int framenum, int statenum, FaceInfo *info)
Definition State.hh:638
void SetRow(int statenum, int numframes)
Definition State.hh:633
Definition VectorTools.hh:125
frame( $arr, $width, $height, $data, $i, $homepage, $noheaders, $seamless, $transparent)
Definition emscripten_frame.php:18
background color
Definition gameapi_example.php:46
n< br > font size
Definition meshpage.php:3536
size_t count(const T &t_target, const typename T::key_type &t_key)
Definition bootstrap_stl.hpp:104
double f(const std::string &, double, bool) noexcept
Definition profile_cpp_calls_2.cpp:4
Definition Buffer.hh:32
Definition GameApi.h:30
Definition State.hh:1167
int output_face1
Definition State.hh:1177
int input_face2
Definition State.hh:1176
int input_face1
Definition State.hh:1175
Node()
Definition State.hh:1168
int type
Definition State.hh:1174
int output_face2
Definition State.hh:1178
Node(const Node &n)
Definition State.hh:1170
Definition VectorTools.hh:910
float x
Definition VectorTools.hh:911
float y
Definition VectorTools.hh:911
Definition Parser.cc:60
MeshStateBitmap * bitmap
Definition State.hh:1076
void SetTexture(int face, BufferRef ref)
Definition State.hh:947
MeshTexCoordStateBitmap * texcoord
Definition State.hh:1079
~StateBitmaps()
Definition State.hh:941
Matrix GetMatrix(int framenum) const
Definition State.hh:1071
void Prepare()
Definition State.hh:966
MeshTextures * tex
Definition State.hh:1080
MeshColorsStateBitmap * colors
Definition State.hh:1078
ArrayRender * GetRender(int row) const
Definition State.hh:1067
void Render(int framenum)
Definition State.cc:11
MeshNormalsStateBitmap * normals
Definition State.hh:1077
StateBitmaps(Mesh *m, MeshNormals *n, MeshTexCoords *coords, MeshColors *c, MeshTextures *tex, Function< int, int > &texfaces)
Definition State.hh:933
void SetMatrix(int framenum, Matrix m)
Definition State.hh:942
Function< int, int > & texfaces
Definition State.hh:1081
Definition State.hh:114
StateColumn()
Definition State.hh:115
int numstates
Definition State.hh:117
int framenum
Definition State.hh:116
Matrix m
Definition State.hh:118
Definition State.hh:619
FaceInfo * info
Definition State.hh:620
Definition State.hh:126
Texture * texture
Definition State.hh:130
int numframes
Definition State.hh:129
ArrayRender * rend
Definition State.hh:131
StateRow()
Definition State.hh:127
int statenum
Definition State.hh:128
Definition FightGame.hh:5
void SwitchToState(int statenum)
void Alloc(int count)
void SetTexture(int statenum, BufferRef buffer)
Definition State.hh:121
BufferRef buffer
Definition State.hh:122