ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/libgender/entity.h
(Generate patch)

Comparing libgender/entity.h (file contents):
Revision 1.7 by root, Sun Oct 3 03:19:56 2004 UTC vs.
Revision 1.8 by root, Sun Oct 3 05:10:45 2004 UTC

5 5
6#include <vector> 6#include <vector>
7 7
8#include "util.h" 8#include "util.h"
9#include "oct.h" 9#include "oct.h"
10#include "view.h"
10 11
11using namespace std; 12using namespace std;
12 13
13struct entity_base { 14struct entity_base {
14 struct entity_base *parent; 15 struct entity_base *parent;
16 box bbox; 17 box bbox;
17 18
18 virtual void update_bbox (); 19 virtual void update_bbox ();
19 virtual void show (const sector &sec) { }; 20 virtual void show (const sector &sec) { };
20 void hide (); 21 void hide ();
21 virtual void draw (const draw_context &ctx) = 0; 22 virtual void draw (draw_context &ctx) = 0;
23 void try_draw (draw_context &ctx) { if (ctx.may_draw (this)) draw (ctx); }
22 virtual ~entity_base () 24 virtual ~entity_base ()
23 { 25 {
24 hide (); 26 hide ();
25 }; 27 };
26}; 28};
27 29
28struct entity_container : entity_base, protected vector<entity_base *> { 30struct entity_container : entity_base, protected vector<entity_base *> {
29 void add (entity_base *e) { push_back (e); e->parent = this; } 31 void add (entity_base *e) { push_back (e); e->parent = this; }
30 void update_bbox (); 32 void update_bbox ();
31 void show (const sector &sec); 33 void show (const sector &sec);
32 void draw (const draw_context &ctx); 34 void draw (draw_context &ctx);
33 ~entity_container (); 35 ~entity_container ();
34}; 36};
35 37
36struct entity_filter : entity_base { 38struct entity_filter : entity_base {
37protected: 39protected:
52 54
53 entity_base *content () { return e; }; 55 entity_base *content () { return e; };
54 56
55 void update_bbox (); 57 void update_bbox ();
56 void show (const sector &sec); 58 void show (const sector &sec);
57 void draw (const draw_context &ctx); 59 void draw (draw_context &ctx);
58 ~entity_filter (); 60 ~entity_filter ();
59}; 61};
60 62
61struct entity : entity_filter { 63struct entity : entity_filter {
62 sector sec; 64 sector sec;
63 65
64 void show (const sector &sec); 66 void show (const sector &sec);
65 void show (); 67 void show ();
66 void draw (const draw_context &ctx); 68 void draw (draw_context &ctx);
67}; 69};
68 70
69#if 0 71#if 0
70struct entity_affine : entity_filter { 72struct entity_affine : entity_filter {
71 GLfloat m[4][4]; 73 GLfloat m[4][4];
72 74
73 void draw (const draw_context &ctx); 75 void draw (draw_context &ctx);
74}; 76};
75#endif 77#endif
76 78
77struct vertex1d { 79struct vertex1d {
78 colour c; // colour 80 colour c; // colour
93 95
94template<GLenum type> 96template<GLenum type>
95struct entity_opengl1d : entity_opengl, vector<vertex1d> { 97struct entity_opengl1d : entity_opengl, vector<vertex1d> {
96 void update_bbox (); 98 void update_bbox ();
97 void show (const sector &sec); 99 void show (const sector &sec);
98 void draw (const draw_context &ctx); 100 void draw (draw_context &ctx);
99}; 101};
100 102
101template<GLenum type> 103template<GLenum type>
102struct entity_opengl2d : entity_opengl, vector<vertex2d> { 104struct entity_opengl2d : entity_opengl, vector<vertex2d> {
103 material m; 105 material m;
104 106
105 void update_bbox (); 107 void update_bbox ();
106 void show (const sector &sec); 108 void show (const sector &sec);
107 void draw (const draw_context &ctx); 109 void draw (draw_context &ctx);
108}; 110};
109 111
110typedef entity_opengl1d<GL_POINTS> entity_points; 112typedef entity_opengl1d<GL_POINTS> entity_points;
111typedef entity_opengl1d<GL_LINES> entity_lines; 113typedef entity_opengl1d<GL_LINES> entity_lines;
112typedef entity_opengl1d<GL_LINE_STRIP> entity_line_strip; 114typedef entity_opengl1d<GL_LINE_STRIP> entity_line_strip;
116typedef entity_opengl2d<GL_TRIANGLE_FAN> entity_triangle_fan; 118typedef entity_opengl2d<GL_TRIANGLE_FAN> entity_triangle_fan;
117typedef entity_opengl2d<GL_QUADS> entity_quads; 119typedef entity_opengl2d<GL_QUADS> entity_quads;
118typedef entity_opengl2d<GL_QUAD_STRIP> entity_quad_strip; 120typedef entity_opengl2d<GL_QUAD_STRIP> entity_quad_strip;
119typedef entity_opengl2d<GL_POLYGON> entity_polygon; 121typedef entity_opengl2d<GL_POLYGON> entity_polygon;
120 122
121struct view {
122 point p;
123 vec3 d, u;
124 float fov;
125 int w, h;
126
127 void draw (const draw_context &ctx);
128};
129
130#endif 123#endif
131 124
132 125
133 126

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines