… | |
… | |
18 | void draw (draw_context &ctx); |
18 | void draw (draw_context &ctx); |
19 | }; |
19 | }; |
20 | |
20 | |
21 | struct visibility_state { |
21 | struct visibility_state { |
22 | unsigned int generation; |
22 | unsigned int generation; |
23 | enum { OCCLUDED, VISIBLE } visibility; |
23 | enum { UNKNOWN, TESTING, PARTIAL, FULL } visibility; |
24 | |
24 | |
25 | visibility_state () : generation(0), visibility(OCCLUDED) { }; |
25 | visibility_state () : generation(0), visibility(UNKNOWN) { }; |
26 | }; |
26 | }; |
27 | |
27 | |
28 | struct draw_context { |
28 | struct draw_context { |
|
|
29 | view &v; |
|
|
30 | |
29 | gl_matrix projection; |
31 | gl_matrix projection; |
30 | view &v; |
32 | struct { |
|
|
33 | plane l, r, t, b, n, f; |
|
|
34 | } frustum; |
31 | enum { DEPTH, LIGHTED } mode; |
35 | enum { DEPTH, LIGHTED } mode; |
32 | light *l; |
36 | light *l; |
33 | set<entity_base *> drawn; |
37 | set<entity_base *> drawn; |
34 | |
38 | |
35 | unsigned int generation; |
39 | unsigned int generation; |
36 | map<octant *, visibility_state> vismap; |
40 | map<octant *, visibility_state> vismap; |
|
|
41 | vector<octant *> vislist; |
37 | |
42 | |
38 | bool may_draw (entity_base *e); |
43 | bool may_draw (entity_base *e); |
39 | |
44 | |
40 | draw_context (view &v); |
45 | draw_context (view &v); |
41 | ~draw_context (); |
46 | ~draw_context (); |