From David Callu, added findSlaveIndexForCamera method

This commit is contained in:
Robert Osfield
2007-09-21 19:43:06 +00:00
parent 6630dcf15c
commit 5c36fbb18f
2 changed files with 22 additions and 10 deletions

View File

@@ -118,23 +118,25 @@ class OSG_EXPORT View : public osg::Object
bool addSlave(osg::Camera* camera, const osg::Matrix& projectionOffset, const osg::Matrix& viewOffse, bool useMastersSceneData=true);
bool removeSlave(unsigned int pos);
unsigned int getNumSlaves() const { return _slaves.size(); }
Slave& getSlave(unsigned int pos) { return _slaves[pos]; }
const Slave& getSlave(unsigned int pos) const { return _slaves[pos]; }
Slave* findSlaveForCamera(osg::Camera* camera);
unsigned int findSlaveIndexForCamera(osg::Camera* camera);
Slave * findSlaveForCamera(osg::Camera* camera);
void updateSlaves();
void updateSlave(unsigned int i);
protected :
virtual ~View();
virtual osg::GraphicsOperation* createRenderer(osg::Camera*) { return 0; }
osg::ref_ptr<osg::Stats> _stats;

View File

@@ -190,15 +190,25 @@ bool View::removeSlave(unsigned int pos)
return true;
}
View::Slave* View::findSlaveForCamera(osg::Camera* camera)
View::Slave * View::findSlaveForCamera(osg::Camera* camera)
{
if (_camera == camera) return 0;
unsigned int i = findSlaveIndexForCamera(camera);
if (i >= getNumSlaves()) return (NULL);
return &(_slaves[i]);
}
unsigned int View::findSlaveIndexForCamera(osg::Camera* camera)
{
if (_camera == camera) return _slaves.size();
for(unsigned int i=0; i<_slaves.size(); ++i)
{
if (_slaves[i]._camera == camera) return &(_slaves[i]);
if (_slaves[i]._camera == camera) return (i);
}
return 0;
return _slaves.size();
}