Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Newer
Older
100644 465 lines (388 sloc) 10.987 kb
36bfbdb first commit since shifting the Stage-3.0 development branch (opengl) to...
rtv authored
1
ec56d04 header clean up
rtv authored
2 #include "region.hh"
3 #include "worldfile.hh"
ec21888 removed world size limitation
rtv authored
4
ec56d04 header clean up
rtv authored
5 using namespace Stg;
ec21888 removed world size limitation
rtv authored
6
36bfbdb first commit since shifting the Stage-3.0 development branch (opengl) to...
rtv authored
7 /** Create a new block. A model's body is a list of these
cfa70a3 experimenting with wavefront planner
rtv authored
8 blocks. The point data is copied, so pts can safely be freed
9 after calling this.*/
9efe76f fixing some memory leaks
thjc authored
10 Block::Block( Model* mod,
1ce2551 cleaning up
rtv authored
11 stg_point_t* pts,
12 size_t pt_count,
13 stg_meters_t zmin,
14 stg_meters_t zmax,
15 Color color,
16 bool inherit_color ) :
89dcdaf major changes for 3.1
rtv authored
17 mod( mod ),
17f2908 cleaning up Block class
rtv authored
18 mpts(),
89dcdaf major changes for 3.1
rtv authored
19 pt_count( pt_count ),
17f2908 cleaning up Block class
rtv authored
20 pts(),
ff51521 cleaning up and STLization of BlockGroup
rtv authored
21 local_z( zmin, zmax ),
89dcdaf major changes for 3.1
rtv authored
22 color( color ),
23 inherit_color( inherit_color ),
850944c tweaked fiducial vis. working on lights
rtv authored
24 glow( 0.0 ),
ff51521 cleaning up and STLization of BlockGroup
rtv authored
25 rendered_cells( new CellPtrVec ),
26 candidate_cells( new CellPtrVec ),
27 gpts()
89dcdaf major changes for 3.1
rtv authored
28 {
29 assert( mod );
30 assert( pt_count > 0 );
ff51521 cleaning up and STLization of BlockGroup
rtv authored
31
32 // copy the argument point data into the member vector
33 this->pts.reserve( pt_count );
34 for( size_t p=0; p<pt_count; p++ )
1ce2551 cleaning up
rtv authored
35 this->pts.push_back( pts[p] );
36bfbdb first commit since shifting the Stage-3.0 development branch (opengl) to...
rtv authored
36 }
37
89dcdaf major changes for 3.1
rtv authored
38 /** A from-file constructor */
9efe76f fixing some memory leaks
thjc authored
39 Block::Block( Model* mod,
1ce2551 cleaning up
rtv authored
40 Worldfile* wf,
41 int entity)
89dcdaf major changes for 3.1
rtv authored
42 : mod( mod ),
1ce2551 cleaning up
rtv authored
43 mpts(),
9efe76f fixing some memory leaks
thjc authored
44 pt_count(0),
17f2908 cleaning up Block class
rtv authored
45 pts(),
996c281 replaced some c-strings with std::strings
rtv authored
46 color(),
cfa70a3 experimenting with wavefront planner
rtv authored
47 inherit_color(true),
1ce2551 cleaning up
rtv authored
48 rendered_cells( new CellPtrVec ),
49 candidate_cells( new CellPtrVec )
89dcdaf major changes for 3.1
rtv authored
50 {
51 assert(mod);
52 assert(wf);
53 assert(entity);
ff51521 cleaning up and STLization of BlockGroup
rtv authored
54
89dcdaf major changes for 3.1
rtv authored
55 Load( wf, entity );
56 }
57
3680786 API changes! removed the Stg prefix from all class names, and renamed so...
rtv authored
58 Block::~Block()
9efe76f fixing some memory leaks
thjc authored
59 {
89dcdaf major changes for 3.1
rtv authored
60 if( mapped ) UnMap();
ff51521 cleaning up and STLization of BlockGroup
rtv authored
61
62 delete rendered_cells;
8aab383 moved bit to STL
rtv authored
63 delete candidate_cells;
36bfbdb first commit since shifting the Stage-3.0 development branch (opengl) to...
rtv authored
64 }
65
41a7d4a grippers partially implemented. they don't lift anything yet
rtv authored
66 void Block::Translate( double x, double y )
67 {
68 for( unsigned int p=0; p<pt_count; p++)
cfa70a3 experimenting with wavefront planner
rtv authored
69 {
70 pts[p].x += x;
71 pts[p].y += y;
72 }
ff51521 cleaning up and STLization of BlockGroup
rtv authored
73
41a7d4a grippers partially implemented. they don't lift anything yet
rtv authored
74 mod->blockgroup.BuildDisplayList( mod );
75 }
76
77 double Block::CenterY()
78 {
79 double min = billion;
80 double max = -billion;
ff51521 cleaning up and STLization of BlockGroup
rtv authored
81
41a7d4a grippers partially implemented. they don't lift anything yet
rtv authored
82 for( unsigned int p=0; p<pt_count; p++)
cfa70a3 experimenting with wavefront planner
rtv authored
83 {
84 if( pts[p].y > max ) max = pts[p].y;
85 if( pts[p].y < min ) min = pts[p].y;
86 }
ff51521 cleaning up and STLization of BlockGroup
rtv authored
87
41a7d4a grippers partially implemented. they don't lift anything yet
rtv authored
88 // return the value half way between max and min
89 return( min + (max - min)/2.0 );
90 }
91
92 double Block::CenterX()
93 {
94 double min = billion;
95 double max = -billion;
ff51521 cleaning up and STLization of BlockGroup
rtv authored
96
41a7d4a grippers partially implemented. they don't lift anything yet
rtv authored
97 for( unsigned int p=0; p<pt_count; p++)
cfa70a3 experimenting with wavefront planner
rtv authored
98 {
99 if( pts[p].x > max ) max = pts[p].x;
100 if( pts[p].x < min ) min = pts[p].x;
101 }
9efe76f fixing some memory leaks
thjc authored
102
41a7d4a grippers partially implemented. they don't lift anything yet
rtv authored
103 // return the value half way between maxx and min
104 return( min + (max - min)/2.0 );
105 }
106
107 void Block::SetCenter( double x, double y )
108 {
109 // move the block by the distance required to bring its center to
110 // the requested position
111 Translate( x-CenterX(), y-CenterY() );
112 }
113
114 void Block::SetCenterY( double y )
115 {
116 // move the block by the distance required to bring its center to
117 // the requested position
118 Translate( 0, y-CenterY() );
119 }
120
121 void Block::SetCenterX( double x )
122 {
123 // move the block by the distance required to bring its center to
124 // the requested position
125 Translate( x-CenterX(), 0 );
126 }
127
128 void Block::SetZ( double min, double max )
129 {
130 local_z.min = min;
131 local_z.max = max;
132
133 // force redraw
134 mod->blockgroup.BuildDisplayList( mod );
135 }
136
c5247e1 fixed alwayson and model property bugs. Fixed stage.pc to include GL and...
rtv authored
137 const Color& Block::GetColor()
36bfbdb first commit since shifting the Stage-3.0 development branch (opengl) to...
rtv authored
138 {
89dcdaf major changes for 3.1
rtv authored
139 return( inherit_color ? mod->color : color );
36bfbdb first commit since shifting the Stage-3.0 development branch (opengl) to...
rtv authored
140 }
141
ff51521 cleaning up and STLization of BlockGroup
rtv authored
142 void Block::AppendTouchingModels( ModelPtrSet& touchers )
ff0dbdd working on charging model and demo
rtv authored
143 {
144 // for every cell we are rendered into
ff51521 cleaning up and STLization of BlockGroup
rtv authored
145 FOR_EACH( cell_it, *rendered_cells )
250c54e performance tweaks
rtv authored
146 // for every block rendered into that cell
147 FOR_EACH( block_it, (*cell_it)->blocks )
148 {
149 if( !mod->IsRelated( (*block_it)->mod ))
150 touchers.insert( (*block_it)->mod );
151 }
ff0dbdd working on charging model and demo
rtv authored
152 }
36bfbdb first commit since shifting the Stage-3.0 development branch (opengl) to...
rtv authored
153
3680786 API changes! removed the Stg prefix from all class names, and renamed so...
rtv authored
154 Model* Block::TestCollision()
36bfbdb first commit since shifting the Stage-3.0 development branch (opengl) to...
rtv authored
155 {
89dcdaf major changes for 3.1
rtv authored
156 //printf( "model %s block %p test collision...\n", mod->Token(), this );
157
158 // find the set of cells we would render into given the current global pose
159 GenerateCandidateCells();
ff51521 cleaning up and STLization of BlockGroup
rtv authored
160
ff0dbdd working on charging model and demo
rtv authored
161 if( mod->vis.obstacle_return )
cfa70a3 experimenting with wavefront planner
rtv authored
162 // for every cell we may be rendered into
712d746 fixed Z collision detection for blocks
rtv authored
163 FOR_EACH( cell_it, *candidate_cells )
cfa70a3 experimenting with wavefront planner
rtv authored
164 {
712d746 fixed Z collision detection for blocks
rtv authored
165 // for every block rendered into that cell
166 FOR_EACH( block_it, (*cell_it)->blocks )
167 {
168 Block* testblock = *block_it;
169 Model* testmod = testblock->mod;
170
171 //printf( " testing block %p of model %s\n", testblock, testmod->Token() );
172
173 // if the tested model is an obstacle and it's not attached to this model
174 if( (testmod != this->mod) &&
175 testmod->vis.obstacle_return &&
176 (!mod->IsRelated( testmod )) &&
177 // also must intersect in the Z range
178 testblock->global_z.min <= global_z.max &&
179 testblock->global_z.max >= global_z.min )
180 {
181 //puts( "HIT");
182 return testmod; // bail immediately with the bad news
183 }
184 }
185 }
186
89dcdaf major changes for 3.1
rtv authored
187 //printf( "model %s block %p collision done. no hits.\n", mod->Token(), this );
188 return NULL; // no hit
36bfbdb first commit since shifting the Stage-3.0 development branch (opengl) to...
rtv authored
189 }
190
3680786 API changes! removed the Stg prefix from all class names, and renamed so...
rtv authored
191 void Block::Map()
36bfbdb first commit since shifting the Stage-3.0 development branch (opengl) to...
rtv authored
192 {
89dcdaf major changes for 3.1
rtv authored
193 // TODO - if called often, we may not need to generate each time
194 GenerateCandidateCells();
195 SwitchToTestedCells();
196 mapped = true;
36bfbdb first commit since shifting the Stage-3.0 development branch (opengl) to...
rtv authored
197 }
198
3680786 API changes! removed the Stg prefix from all class names, and renamed so...
rtv authored
199 void Block::UnMap()
36bfbdb first commit since shifting the Stage-3.0 development branch (opengl) to...
rtv authored
200 {
89dcdaf major changes for 3.1
rtv authored
201 RemoveFromCellArray( rendered_cells );
8aab383 moved bit to STL
rtv authored
202 rendered_cells->clear();
89dcdaf major changes for 3.1
rtv authored
203 mapped = false;
36bfbdb first commit since shifting the Stage-3.0 development branch (opengl) to...
rtv authored
204 }
205
ff51521 cleaning up and STLization of BlockGroup
rtv authored
206 void Block::RemoveFromCellArray( CellPtrVec *cells )
8aab383 moved bit to STL
rtv authored
207 {
ff51521 cleaning up and STLization of BlockGroup
rtv authored
208 FOR_EACH( it, *cells )
64249e4 more STLing and type safety to hopefully reduce bugs
rtv authored
209 {
210 Cell* cell = *it;
0075eb0 attempted bugfix in Player fiducials (untested)
rtv authored
211
250c54e performance tweaks
rtv authored
212 // this special-case test is faster for worlds with simple models, which
213 // are the ones we want to be really fast. It's a small extra cost
214 // for worlds with several models in each cell. It gives a 5%
215 // speed increase in fasr.world.
216 if( (cell->blocks.size() == 1) &&
217 (cell->blocks[0] == this) ) // special, common case
218 {
219 cell->blocks.clear(); // cheap
220 }
221 else // the general but relatively expensive case
222 {
223 EraseAll( this, cell->blocks );
224 }
225
64249e4 more STLing and type safety to hopefully reduce bugs
rtv authored
226 --cell->region->count;
227 --cell->region->superregion->count;
228 }
250c54e performance tweaks
rtv authored
229
230 //printf( "%d %d %.2f\n", count1, countmore, ((float)count1)/float(countmore));
8aab383 moved bit to STL
rtv authored
231 }
232
0075eb0 attempted bugfix in Player fiducials (untested)
rtv authored
233 void Block::SwitchToTestedCells()
8aab383 moved bit to STL
rtv authored
234 {
250c54e performance tweaks
rtv authored
235 // todo:
236
237 // 1. find the set of cells in rendered but not candidate and remove
238 // them
239
240 // 2. find the set of cells in candidate but not rendered and insert
241 // them
242
fec2ad5 cleaning up
rtv authored
243 // .. and see if that is faster than the current method
250c54e performance tweaks
rtv authored
244
0075eb0 attempted bugfix in Player fiducials (untested)
rtv authored
245 RemoveFromCellArray( rendered_cells );
246
247 // render the block into each of the candidate cells
248 FOR_EACH( it, *candidate_cells )
64249e4 more STLing and type safety to hopefully reduce bugs
rtv authored
249 {
250 Cell* cell = *it;
251 // record that I am rendered in this cell
252 rendered_cells->push_back( cell );
253 // store me in the cell
254 cell->blocks.push_back( this );
250c54e performance tweaks
rtv authored
255
64249e4 more STLing and type safety to hopefully reduce bugs
rtv authored
256 ++cell->region->count;
257 ++cell->region->superregion->count;
258 }
9efe76f fixing some memory leaks
thjc authored
259
89dcdaf major changes for 3.1
rtv authored
260 // switch current and candidate cell pointers
ff51521 cleaning up and STLization of BlockGroup
rtv authored
261 CellPtrVec *tmp = rendered_cells;
89dcdaf major changes for 3.1
rtv authored
262 rendered_cells = candidate_cells;
263 candidate_cells = tmp;
264
265 mapped = true;
266 }
22a1279 fixed indentation issues (converted to tabs)
alexcb authored
267
80cdf19 cleaning up code
rtv authored
268 inline stg_point_t Block::BlockPointToModelMeters( const stg_point_t& bpt )
750e048 fixed raserizer scaling bug
rtv authored
269 {
270 Size bgsize = mod->blockgroup.GetSize();
271 stg_point3_t bgoffset = mod->blockgroup.GetOffset();
9efe76f fixing some memory leaks
thjc authored
272
80cdf19 cleaning up code
rtv authored
273 return stg_point_t( (bpt.x - bgoffset.x) * (mod->geom.size.x/bgsize.x),
ff51521 cleaning up and STLization of BlockGroup
rtv authored
274 (bpt.y - bgoffset.y) * (mod->geom.size.y/bgsize.y));
750e048 fixed raserizer scaling bug
rtv authored
275 }
276
80cdf19 cleaning up code
rtv authored
277 void Block::InvalidateModelPointCache()
278 {
ff51521 cleaning up and STLization of BlockGroup
rtv authored
279 // this doesn't happen often, so this simple strategy isn't too wasteful
280 mpts.clear();
80cdf19 cleaning up code
rtv authored
281 }
eaba4cb geometry fixes & graphics tweaks
rtv authored
282
80cdf19 cleaning up code
rtv authored
283 void Block::GenerateCandidateCells()
284 {
8aab383 moved bit to STL
rtv authored
285 candidate_cells->clear();
c5247e1 fixed alwayson and model property bugs. Fixed stage.pc to include GL and...
rtv authored
286
17f2908 cleaning up Block class
rtv authored
287 if( mpts.size() == 0 )
ff51521 cleaning up and STLization of BlockGroup
rtv authored
288 {
289 // no valid cache of model coord points, so generate them
290 mpts.resize( pt_count );
291 for( unsigned int i=0; i<pt_count; i++ )
292 mpts[i] = BlockPointToModelMeters( pts[i] );
293 }
294
250c54e performance tweaks
rtv authored
295 gpts.clear();
296 mod->LocalToPixels( mpts, gpts );
69ff48f performance tweaks
rtv authored
297
6979e2d optimizing block.cc
rtv authored
298 for( unsigned int i=0; i<pt_count; i++ )
ff51521 cleaning up and STLization of BlockGroup
rtv authored
299 mod->world->ForEachCellInLine( gpts[i],
300 gpts[(i+1)%pt_count],
301 *candidate_cells );
80cdf19 cleaning up code
rtv authored
302 // set global Z
303 Pose gpose = mod->GetGlobalPose();
304 gpose.z += mod->geom.pose.z;
305 double scalez = mod->geom.size.z / mod->blockgroup.GetSize().z;
306 stg_meters_t z = gpose.z - mod->blockgroup.GetOffset().z;
ff51521 cleaning up and STLization of BlockGroup
rtv authored
307
89dcdaf major changes for 3.1
rtv authored
308 // store the block's absolute z bounds at this rendering
80cdf19 cleaning up code
rtv authored
309 global_z.min = (scalez * local_z.min) + z;
9efe76f fixing some memory leaks
thjc authored
310 global_z.max = (scalez * local_z.max) + z;
ff51521 cleaning up and STLization of BlockGroup
rtv authored
311
89dcdaf major changes for 3.1
rtv authored
312 mapped = true;
313 }
36bfbdb first commit since shifting the Stage-3.0 development branch (opengl) to...
rtv authored
314
750e048 fixed raserizer scaling bug
rtv authored
315 void swap( int& a, int& b )
e96a997 added model rasterization
rtv authored
316 {
750e048 fixed raserizer scaling bug
rtv authored
317 int tmp = a;
318 a = b;
319 b = tmp;
e96a997 added model rasterization
rtv authored
320 }
321
9efe76f fixing some memory leaks
thjc authored
322 void Block::Rasterize( uint8_t* data,
ff51521 cleaning up and STLization of BlockGroup
rtv authored
323 unsigned int width,
324 unsigned int height,
325 stg_meters_t cellwidth,
326 stg_meters_t cellheight )
750e048 fixed raserizer scaling bug
rtv authored
327 {
328 //printf( "rasterize block %p : w: %u h: %u scale %.2f %.2f offset %.2f %.2f\n",
329 // this, width, height, scalex, scaley, offsetx, offsety );
ff51521 cleaning up and STLization of BlockGroup
rtv authored
330
750e048 fixed raserizer scaling bug
rtv authored
331 for( unsigned int i=0; i<pt_count; i++ )
332 {
ff51521 cleaning up and STLization of BlockGroup
rtv authored
333 // convert points from local to model coords
334 stg_point_t mpt1 = BlockPointToModelMeters( pts[i] );
335 stg_point_t mpt2 = BlockPointToModelMeters( pts[(i+1)%pt_count] );
336
337 // record for debug visualization
338 mod->rastervis.AddPoint( mpt1.x, mpt1.y );
339
340 // shift to the bottom left of the model
341 mpt1.x += mod->geom.size.x/2.0;
342 mpt1.y += mod->geom.size.y/2.0;
343 mpt2.x += mod->geom.size.x/2.0;
344 mpt2.y += mod->geom.size.y/2.0;
345
346 // convert from meters to cells
347 stg_point_int_t a( floor( mpt1.x / cellwidth ),
348 floor( mpt1.y / cellheight ));
349 stg_point_int_t b( floor( mpt2.x / cellwidth ),
350 floor( mpt2.y / cellheight ) );
351
352 bool steep = abs( b.y-a.y ) > abs( b.x-a.x );
353 if( steep )
354 {
355 swap( a.x, a.y );
356 swap( b.x, b.y );
357 }
358
359 if( a.x > b.x )
360 {
361 swap( a.x, b.x );
362 swap( a.y, b.y );
363 }
364
365 double dydx = (double) (b.y - a.y) / (double) (b.x - a.x);
366 double y = a.y;
367 for(int x=a.x; x<=b.x; x++)
368 {
369 if( steep )
370 {
371 if( ! (floor(y) >= 0) ) continue;
372 if( ! (floor(y) < (int)width) ) continue;
373 if( ! (x >= 0) ) continue;
374 if( ! (x < (int)height) ) continue;
375 }
376 else
377 {
378 if( ! (x >= 0) ) continue;
379 if( ! (x < (int)width) ) continue;
380 if( ! (floor(y) >= 0) ) continue;
381 if( ! (floor(y) < (int)height) ) continue;
382 }
383
384 if( steep )
385 data[ (int)floor(y) + (x * width)] = 1;
386 else
387 data[ x + ((int)floor(y) * width)] = 1;
388 y += dydx;
389 }
390 }
e96a997 added model rasterization
rtv authored
391 }
392
3680786 API changes! removed the Stg prefix from all class names, and renamed so...
rtv authored
393 void Block::DrawTop()
89dcdaf major changes for 3.1
rtv authored
394 {
395 // draw the top of the block - a polygon at the highest vertical
396 // extent
397 glBegin( GL_POLYGON);
fec2ad5 cleaning up
rtv authored
398 FOR_EACH( it, pts )
399 glVertex3f( it->x, it->y, local_z.max );
89dcdaf major changes for 3.1
rtv authored
400 glEnd();
9efe76f fixing some memory leaks
thjc authored
401 }
22a1279 fixed indentation issues (converted to tabs)
alexcb authored
402
3680786 API changes! removed the Stg prefix from all class names, and renamed so...
rtv authored
403 void Block::DrawSides()
89dcdaf major changes for 3.1
rtv authored
404 {
9efe76f fixing some memory leaks
thjc authored
405 // construct a strip that wraps around the polygon
89dcdaf major changes for 3.1
rtv authored
406 glBegin(GL_QUAD_STRIP);
fec2ad5 cleaning up
rtv authored
407
408 FOR_EACH( it, pts )
409 {
410 glVertex3f( it->x, it->y, local_z.max );
411 glVertex3f( it->x, it->y, local_z.min );
412 }
89dcdaf major changes for 3.1
rtv authored
413 // close the strip
414 glVertex3f( pts[0].x, pts[0].y, local_z.max );
415 glVertex3f( pts[0].x, pts[0].y, local_z.min );
416 glEnd();
417 }
36bfbdb first commit since shifting the Stage-3.0 development branch (opengl) to...
rtv authored
418
3680786 API changes! removed the Stg prefix from all class names, and renamed so...
rtv authored
419 void Block::DrawFootPrint()
89dcdaf major changes for 3.1
rtv authored
420 {
fec2ad5 cleaning up
rtv authored
421 glBegin(GL_POLYGON);
422 FOR_EACH( it, pts )
423 glVertex2f( it->x, it->y );
89dcdaf major changes for 3.1
rtv authored
424 glEnd();
425 }
22a1279 fixed indentation issues (converted to tabs)
alexcb authored
426
3680786 API changes! removed the Stg prefix from all class names, and renamed so...
rtv authored
427 void Block::DrawSolid()
89dcdaf major changes for 3.1
rtv authored
428 {
429 DrawSides();
430 DrawTop();
431 }
22a1279 fixed indentation issues (converted to tabs)
alexcb authored
432
3680786 API changes! removed the Stg prefix from all class names, and renamed so...
rtv authored
433 void Block::Load( Worldfile* wf, int entity )
89dcdaf major changes for 3.1
rtv authored
434 {
3680786 API changes! removed the Stg prefix from all class names, and renamed so...
rtv authored
435 //printf( "Block::Load entity %d\n", entity );
9efe76f fixing some memory leaks
thjc authored
436
89dcdaf major changes for 3.1
rtv authored
437 pt_count = wf->ReadInt( entity, "points", 0);
17f2908 cleaning up Block class
rtv authored
438 pts.resize( pt_count );
9efe76f fixing some memory leaks
thjc authored
439
89dcdaf major changes for 3.1
rtv authored
440 //printf( "reading %d points\n",
441 // pt_count );
ff51521 cleaning up and STLization of BlockGroup
rtv authored
442
9efe76f fixing some memory leaks
thjc authored
443 char key[128];
03e148e code tidying - eliminated all -Wall warnings
rtv authored
444 for( unsigned int p=0; p<pt_count; p++ ) {
cfa70a3 experimenting with wavefront planner
rtv authored
445 snprintf(key, sizeof(key), "point[%d]", p );
ff51521 cleaning up and STLization of BlockGroup
rtv authored
446
cfa70a3 experimenting with wavefront planner
rtv authored
447 pts[p].x = wf->ReadTupleLength(entity, key, 0, 0);
448 pts[p].y = wf->ReadTupleLength(entity, key, 1, 0);
89dcdaf major changes for 3.1
rtv authored
449 }
ff51521 cleaning up and STLization of BlockGroup
rtv authored
450
89dcdaf major changes for 3.1
rtv authored
451 local_z.min = wf->ReadTupleLength( entity, "z", 0, 0.0 );
452 local_z.max = wf->ReadTupleLength( entity, "z", 1, 1.0 );
ff51521 cleaning up and STLization of BlockGroup
rtv authored
453
996c281 replaced some c-strings with std::strings
rtv authored
454 const std::string& colorstr = wf->ReadString( entity, "color", "" );
455 if( colorstr != "" )
cfa70a3 experimenting with wavefront planner
rtv authored
456 {
4ccc5cd replaced stg_color_t with Color class and added static named constructor...
rtv authored
457 color = Color( colorstr );
cfa70a3 experimenting with wavefront planner
rtv authored
458 inherit_color = false;
459 }
d60514d geometry & graphics fixes. added normalization of blocks to fit inside m...
rtv authored
460 else
cfa70a3 experimenting with wavefront planner
rtv authored
461 inherit_color = true;
850944c tweaked fiducial vis. working on lights
rtv authored
462
463 glow = wf->ReadFloat( entity, "glow", glow );
36bfbdb first commit since shifting the Stage-3.0 development branch (opengl) to...
rtv authored
464 }
Something went wrong with that request. Please try again.