Added bool View::Slave::_useMastersSceneData to help manage HUD's and RTT

cameras that are embedded in the Viewer's View
This commit is contained in:
Robert Osfield
2007-02-23 11:53:45 +00:00
parent 67a9ac2055
commit 96f567eff3
4 changed files with 23 additions and 14 deletions

View File

@@ -54,29 +54,39 @@ class OSG_EXPORT View : public virtual osg::Referenced
/** Slave allows one to up a camera that follows the master with a local offset to the project and view matrices.*/
struct Slave
{
Slave() {}
Slave(osg::Camera* camera, const osg::Matrixd& projectionOffset, const osg::Matrixd& viewOffset):
_camera(camera), _projectionOffset(projectionOffset), _viewOffset(viewOffset) {}
Slave(bool useMastersSceneData=true):
_useMastersSceneData(useMastersSceneData) {}
Slave(osg::Camera* camera, const osg::Matrixd& projectionOffset, const osg::Matrixd& viewOffset, bool useMastersSceneData=true):
_camera(camera),
_projectionOffset(projectionOffset),
_viewOffset(viewOffset),
_useMastersSceneData(useMastersSceneData) {}
Slave(const Slave& rhs) :
_camera(rhs._camera), _projectionOffset(rhs._projectionOffset), _viewOffset(rhs._viewOffset) {}
_camera(rhs._camera),
_projectionOffset(rhs._projectionOffset),
_viewOffset(rhs._viewOffset),
_useMastersSceneData(rhs._useMastersSceneData) {}
Slave& operator = (const Slave& rhs)
{
_camera = rhs._camera;
_projectionOffset = rhs._projectionOffset;
_viewOffset = rhs._viewOffset;
_useMastersSceneData = rhs._useMastersSceneData;
return *this;
}
osg::ref_ptr<osg::Camera> _camera;
osg::Matrixd _projectionOffset;
osg::Matrixd _viewOffset;
bool _useMastersSceneData;
};
bool addSlave(osg::Camera* camera) { return addSlave(camera, osg::Matrix::identity(), osg::Matrix::identity()); }
bool addSlave(osg::Camera* camera, bool useMastersSceneData=true) { return addSlave(camera, osg::Matrix::identity(), osg::Matrix::identity(), useMastersSceneData); }
bool addSlave(osg::Camera* camera, const osg::Matrix& projectionOffset, const osg::Matrix& viewOffse);
bool addSlave(osg::Camera* camera, const osg::Matrix& projectionOffset, const osg::Matrix& viewOffse, bool useMastersSceneData=true);
bool removeSlave(unsigned int pos);