Fixed Viewer and OsgCameraGroup classes so that work properly with the

Prodicer::setViewByMatrix calls.
This commit is contained in:
Robert Osfield 2003-04-10 10:02:24 +00:00
parent 0a68608bc4
commit e1e54570cb
3 changed files with 11 additions and 6 deletions

View File

@ -73,9 +73,8 @@ class OSGPRODUCER_EXPORT Viewer : public OsgCameraGroup, public osgGA::GUIAction
/** return true if the application is done and should exit.*/
bool done() const;
/** Set the model view matrix of the camera group,
* by individually set all the camera groups's camera.*/
virtual void setView(const osg::Matrix& matrix);
/** Override the Producer::CameraGroup::setViewByMatrix to catch all changes to view.*/
virtual void setViewByMatrix( const Producer::Matrix & pm);
/** Set the threading model and then call realize().*/
virtual bool realize(ThreadingModel thread_model);

View File

@ -390,7 +390,7 @@ const osg::Node* OsgCameraGroup::getTopMostSceneData() const
void OsgCameraGroup::setView(const osg::Matrix& matrix)
{
Producer::Matrix pm(matrix.ptr());
CameraGroup::setView(pm);
setViewByMatrix(pm);
}
const osg::Matrix OsgCameraGroup::getViewMatrix() const

View File

@ -177,11 +177,17 @@ bool Viewer::done() const
return _done;
}
void Viewer::setView(const osg::Matrix& matrix)
void Viewer::setViewByMatrix( const Producer::Matrix & pm)
{
OsgCameraGroup::setView(matrix);
CameraGroup::setViewByMatrix(pm);
if (_keyswitchManipulator.valid() && _old_style_osg_camera.valid())
{
// now convert Producer matrix to an osg::Matrix so we can update
// the internal camera...
osg::Matrix matrix(pm.ptr());
_old_style_osg_camera->home();
_old_style_osg_camera->transformLookAt(matrix);
osg::ref_ptr<osgProducer::EventAdapter> init_event = _kbmcb->createEventAdapter();