Hi All,

This is my first submission so hopefully it will make sense...

This is a very simple but powerful change to the osgManipulator
"Dragger" class, it allows you to specify your own custom geometry for
a dragger when you create it. The actual osg changes are very simple,
but I have also included an example of how to use it (because that is
the hardest bit). I think the how to use comments should be added to
the Dragger code somewhere (Dragger.cpp?).


"Dragger"

/** Setup custom geometry for dragger. */
void setupCustomGeometry(osg::MatrixTransform* customxform);


"Dragger.cpp"

/** Setup custom geometry for dragger. */
void Dragger::setupCustomGeometry(osg::MatrixTransform* customxform)
{
        addChild(customxform);
}

"How to use"

/* Here is an example of using setupCustomGeometry 
// As before create the type of dragger that you need 
dragger = new osgManipulator::Translate2DDragger();

// however instead of calling "dragger->setupDefaultGeometry();" 
// create your own geometry to suit your task (refer to
setupDefaultGeometry() for hints)
// an example of a "box" dragger looks like...
osg::ref_ptr<osg::MatrixTransform> customDraggerxform = new
osg::MatrixTransform;
osg::ref_ptr<osg::Geode> customDraggerGeode = new osg::Geode;
osg::ref_ptr<osg::Box> box = new osg::Box (osg::Vec3(0.0f,0.0f,0.0f),
400.0f, 2.0f, 400.0f);
osg::ref_ptr<osg::Drawable> drawable = new
osg::ShapeDrawable(box.get());
//osgManipulator::setDrawableToAlwaysCull(*drawable); // you can make
draggers invisible too
customDraggerGeode->addDrawable(drawable.get());
customDraggerxform->addChild(customDraggerGeode.get());

// once you have your geometry, pass it to the dragger to use as the
pick geometry
dragger->setupCustomGeometry(customDraggerxform.get());
*/

Cheers, 

Paul 
-- 
Paul McIntosh 
www.internetscooter.com 

_______________________________________________
osg-submissions mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-submissions-openscenegraph.org

Reply via email to