Hi,
I tried this (with osg variables as class member) but it doen't display the 
grid :
 
if(/*!gridGeodePtr*/gridDisplayed==false )
{

gridGeode->addDrawable(gridGeometryV.get());
gridGeode->addDrawable(gridGeometryH.get());
root = CameraManager::getSingletonPtr()->getRoot(); 
root->addChild(gridGeode.get());
/*root->addChild(gridGeode.get());

gridGeode->addDrawable(gridGeometryV.get());
gridGeode->addDrawable(gridGeometryH.get());*/


long int iterationNumber = 0 ;

for( int i = -100 ; i <= 100 ; i =i++ )
{
gridVerticesVertical->push_back(osg::Vec3(i*10, -1000, 0));
gridVerticesHorizontal->push_back(osg::Vec3(-1000, i*10, 0));
iterationNumber++ ;
}
for( int i = -100 ; i <= 100 ; i =i++ )
{
gridVerticesVertical->push_back(osg::Vec3(i*10, 1000, 0));
gridVerticesHorizontal->push_back(osg::Vec3(1000, i*10, 0));
iterationNumber++ ;
}
gridGeometryV->setVertexArray(gridVerticesVertical);
gridGeometryH->setVertexArray(gridVerticesHorizontal);
osg::DrawElementsUInt* horizontalLines = new 
osg::DrawElementsUInt(osg::PrimitiveSet::LINES, 0);
osg::DrawElementsUInt* verticalLines = new 
osg::DrawElementsUInt(osg::PrimitiveSet::LINES, 0);

for(int i = (iterationNumber - 1) ; i > (iterationNumber/2) ; i--) 
{
verticalLines->push_back(i);
verticalLines->push_back(i-(iterationNumber/2));
horizontalLines->push_back(i);
horizontalLines->push_back(i-(iterationNumber/2));
}
gridGeometryV->addPrimitiveSet(verticalLines);
gridGeometryH->addPrimitiveSet(horizontalLines);
gridGeode->setNodeMask(1);
gridDisplayed=true ;
//gridGeodePtr = gridGeode ;
}
else
{ 
//gridGeometryV->releaseGLObjects();
//gridGeometryH->releaseGLObjects();
gridGeode->setNodeMask(0);
//root->removeChild(gridGeode.get());
//gridGeode->deleteUsingDeleteHandler();
//gridGeode.release();
gridDisplayed=false ;
/*gridGeodePtr = NULL ;*/
}
 



> Date: Fri, 8 Aug 2008 20:11:57 +1000> From: [EMAIL PROTECTED]> To: 
> [email protected]> Subject: Re: [osg-users] problem to 
> delete an object from the screen> > Hi Sébastien,> > Sébastien Champmartin 
> wrote:> > void GmlOsgObject::createGrid()> > {> > osg::ref_ptr 
> <osg::PositionAttitudeTransform> root = > > 
> CameraManager::getSingletonPtr()->getRoot();> > osg::ref_ptr <osg::Geode> 
> gridGeode = new osg::Geode();> > if(/*!gridGeodePtr*/gridDisplayed==false )> 
> > {> > root->addChild(gridGeode.get());> > > 
> gridGeode->addDrawable(gridGeometryV.get());> > 
> gridGeode->addDrawable(gridGeometryH.get());> >... > > }> > else> > {> > 
> gridGeode->setNodeMask(0);> > root->removeChild(gridGeode.get());> > 
> gridDisplayed=false ;> > }> > }> > You're creating 'gridGeode' every time the 
> function is called. So for the first call you > create a 'gridGeode' and add 
> it to 'root'. For the next call you're creating *another* > 'gridGeode' and 
> try to remove that from the 'root'.> > Make 'gridGeode' a member of your 
> object and make sure you only create it once.> To make the grid invisible 
> it's actually enough to call 'gridGeode->setNodeMask(0)' (as > you're already 
> doing) to make it invisible and call 'setNodeMask(~0)' to make it visible > 
> again.> > Cheers,> /ulrich> > 
> _______________________________________________> osg-users mailing list> 
> [email protected]> 
> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
_________________________________________________________________
Retouchez, classez et partagez vos photos gratuitement avec le logiciel Galerie 
de Photos !
http://www.windowslive.fr/galerie/
_______________________________________________
osg-users mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

Reply via email to