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