drawLines< posTrait, colTrait, texTrait, sizeTrait > Struct Template Reference

Inheritance diagram for drawLines< posTrait, colTrait, texTrait, sizeTrait >:

osg::ParticlesDrawer

List of all members.

Public Member Functions

virtual void draw (Particles *part, DrawActionBase *action, UInt32 length)
virtual void drawIndexed (Particles *part, DrawActionBase *action, Int32 *index, UInt32 length)


Detailed Description

template<class posTrait, class colTrait, class texTrait, class sizeTrait>
struct drawLines< posTrait, colTrait, texTrait, sizeTrait >

Definition at line 1632 of file OSGParticles.cpp.


Member Function Documentation

template<class posTrait, class colTrait, class texTrait, class sizeTrait>
virtual void drawLines< posTrait, colTrait, texTrait, sizeTrait >::draw ( Particles part,
DrawActionBase action,
UInt32  length 
) [inline, virtual]

Implements osg::ParticlesDrawer.

Definition at line 1634 of file OSGParticles.cpp.

References osg::ParticlesBase::getPositions(), osg::ParticlesBase::getSecPositions(), and init().

01635     {
01636         // some variables for faster access
01637         GeoPositionsPtr  pos  = part->getPositions();
01638 
01639         // init traits
01640         typename colTrait::dataType colData;
01641         colTrait::init(part, action, colData);
01642 
01643         typename texTrait::dataType texData;
01644         texTrait::init(part, action, texData);
01645 
01646         typename sizeTrait::dataType sizeData;
01647         sizeTrait::init(part, action, sizeData);
01648 
01649         typename posTrait::dataType posData;
01650         posTrait::init(part, action, posData, part->getPositions());
01651 
01652         typename posTrait::dataType secPosData;
01653         posTrait::init(part, action, secPosData, part->getSecPositions());
01654 
01655         Real32 s = sizeTrait::size(sizeData, 0)[0];
01656 
01657         glPushAttrib(GL_LINE_BIT);
01658         glLineWidth(s);
01659           
01660         glBegin(GL_LINES);
01661         
01662         for(UInt32 i = 0; i < length; ++i)
01663         {
01664             if(colTrait::particle (colData,  i))
01665                 continue;
01666 
01667             if(texTrait::particle (texData,  i))
01668                 continue;
01669 
01670             if(sizeTrait::particle(sizeData, i))
01671                 continue;
01672 
01673             if(posTrait::particle(posData, i))
01674                 continue;
01675 
01676             if(posTrait::particle(secPosData, i))
01677                 continue;
01678 
01679             posTrait::vertex(posData);
01680             posTrait::vertex(secPosData);
01681         }
01682 
01683         glEnd();
01684     
01685         glPopAttrib();
01686     }

template<class posTrait, class colTrait, class texTrait, class sizeTrait>
virtual void drawLines< posTrait, colTrait, texTrait, sizeTrait >::drawIndexed ( Particles part,
DrawActionBase action,
Int32 *  index,
UInt32  length 
) [inline, virtual]

Implements osg::ParticlesDrawer.

Definition at line 1688 of file OSGParticles.cpp.

References osg::ParticlesBase::getPositions(), osg::ParticlesBase::getSecPositions(), and init().

01690     {
01691         // some variables for faster access
01692         GeoPositionsPtr  pos  = part->getPositions();
01693 
01694         // init traits
01695         typename colTrait::dataType colData;
01696         colTrait::init(part, action, colData);
01697 
01698         typename texTrait::dataType texData;
01699         texTrait::init(part, action, texData);
01700 
01701         typename sizeTrait::dataType sizeData;
01702         sizeTrait::init(part, action, sizeData);
01703 
01704         typename posTrait::dataType posData;
01705         posTrait::init(part, action, posData, part->getPositions());
01706 
01707         typename posTrait::dataType secPosData;
01708         posTrait::init(part, action, secPosData, part->getSecPositions());
01709 
01710         Real32 s = sizeTrait::size(sizeData, 0)[0];
01711 
01712         glPushAttrib(GL_LINE_BIT);
01713         glLineWidth(s);
01714           
01715         glBegin(GL_LINES);
01716 
01717         Int32 i;
01718 
01719         for(UInt32 ii = 0; ii < length; ++ii)
01720         {
01721             i = index[ii];
01722 
01723             if(i < 0 || i > Int32(pos->getSize()))
01724                 continue;
01725 
01726             if(colTrait::particle (colData,  i))
01727                 continue;
01728 
01729             if(texTrait::particle (texData,  i))
01730                 continue;
01731 
01732             if(sizeTrait::particle(sizeData, i))
01733                 continue;
01734 
01735             if(posTrait::particle(posData, i))
01736                 continue;
01737 
01738             if(posTrait::particle(secPosData, i))
01739                 continue;
01740 
01741             posTrait::vertex(posData);
01742             posTrait::vertex(secPosData);
01743         }
01744 
01745         glEnd();
01746     
01747         glPopAttrib();
01748     }


The documentation for this struct was generated from the following file:

Generated on Mon Mar 17 12:02:58 2008 for OpenSG by  doxygen 1.5.5