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

Comparing libgender/view.C (file contents):
Revision 1.50 by root, Thu Oct 14 19:54:14 2004 UTC vs.
Revision 1.51 by root, Sat Oct 16 12:33:46 2004 UTC

45 45
46view::~view () 46view::~view ()
47{ 47{
48} 48}
49 49
50void view::begin_occ_query (recv_occ_query &recv) 50void view::begin_occ_query (recv_occ_query &recv, void *id)
51{ 51{
52 occ_queries.push_back (oq_data (&recv, ::begin_occ_query ())); 52 occ_queries.push_back (oq_data (&recv, ::begin_occ_query (), id));
53} 53}
54 54
55void view::end_occ_query () 55void view::end_occ_query ()
56{ 56{
57 ::end_occ_query (); 57 ::end_occ_query ();
62 if (drawn.find (e) != drawn.end ()) 62 if (drawn.find (e) != drawn.end ())
63 return false; 63 return false;
64 64
65 drawn.insert (e); 65 drawn.insert (e);
66 return true; 66 return true;
67}
68
69visibility_base *visible::get_visibility (view &ctx)
70{
71 view::visibility_map::iterator i = ctx.vismap.find (this);
72 visibility_base *vs;
73
74 if (i == ctx.vismap.end ())
75 {
76 vs = new_visibility ();
77 ctx.vismap.insert (view::visibility_map::value_type (this, vs));
78 }
79 else
80 {
81 vs = i->second;
82
83 if (vs->generation != ctx.generation)
84 {
85 if (vs->generation + 1 != ctx.generation)
86 clear_visibility (vs);
87
88 vs->generation = ctx.generation;
89 }
90 }
91
92 return vs;
93
67} 94}
68 95
69void view::reset_projection () 96void view::reset_projection ()
70{ 97{
71 renormalize (orig, p); 98 renormalize (orig, p);
126 farlist.clear (); 153 farlist.clear ();
127 154
128 // check occlusion queries 155 // check occlusion queries
129 for (vector<oq_data>::iterator i = occ_queries.begin (); i != occ_queries.end (); ++i) 156 for (vector<oq_data>::iterator i = occ_queries.begin (); i != occ_queries.end (); ++i)
130 { 157 {
131 occ_query oq(*this, i->second, ::occ_query_result (i->second)); 158 occ_query oq(*this, i->data, ::occ_query_result (i->id));
132 i->first->event (oq); 159 i->recv->event (oq);
133 } 160 }
134 161
135 occ_queries.clear (); 162 occ_queries.clear ();
136 163
137 z_far = nz_far; 164 z_far = nz_far;
183 210
184 for (vector<octant *>::iterator i = vislist.begin (); i != vislist.end (); ++i) 211 for (vector<octant *>::iterator i = vislist.begin (); i != vislist.end (); ++i)
185 { 212 {
186 octant *o = *i; 213 octant *o = *i;
187 214
215#if 0
188 visibility_state &vs = vismap[o]; 216 visibility_state &vs = vismap[o];
189 bool oq = mode == LIGHTED 217 bool oq = mode == LIGHTED
190 && vs.last + 1. < timer.now 218 && vs.last + 1. < timer.now
191 && (vs.visibility == visibility_state::PARTIAL 219 && (vs.visibility == visibility_state::PARTIAL
192 || vs.visibility == visibility_state::FULL); 220 || vs.visibility == visibility_state::FULL);
221#endif
222 bool oq = false;
193 223
194 if (oq) 224 if (oq)
195 begin_occ_query (*o); 225 begin_occ_query (*o);
196 226
197 o->display (*this); 227 o->display (*this);

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines