Moved the managing of frame stamp from osgProducer::Viewer into
osgProducer::OsgCamaraGroup. Added setting of trackball in osgcameragroup so its starts in the correct place for different models.
This commit is contained in:
@@ -126,6 +126,10 @@ void OsgCameraGroup::_init()
|
||||
|
||||
_initialized = false;
|
||||
|
||||
// set up the time and frame counter.
|
||||
_frameNumber = 0;
|
||||
_start_tick = _timer.tick();
|
||||
|
||||
if (!_frameStamp) _frameStamp = new osg::FrameStamp;
|
||||
|
||||
// set up the maximum number of graphics contexts, before loading the scene graph
|
||||
@@ -133,6 +137,7 @@ void OsgCameraGroup::_init()
|
||||
osg::DisplaySettings::instance()->setMaxNumberOfGraphicsContexts( getNumberOfCameras() );
|
||||
|
||||
_applicationUsage = osg::ApplicationUsage::instance();
|
||||
|
||||
}
|
||||
|
||||
void OsgCameraGroup::setSceneData( osg::Node *scene )
|
||||
@@ -404,12 +409,21 @@ const osg::Matrix OsgCameraGroup::getViewMatrix() const
|
||||
return matrix;
|
||||
}
|
||||
|
||||
void OsgCameraGroup::sync()
|
||||
{
|
||||
CameraGroup::sync();
|
||||
|
||||
// set the frame stamp for the new frame.
|
||||
double time_since_start = _timer.delta_s(_start_tick,_timer.tick());
|
||||
_frameStamp->setFrameNumber(_frameNumber++);
|
||||
_frameStamp->setReferenceTime(time_since_start);
|
||||
}
|
||||
|
||||
void OsgCameraGroup::frame()
|
||||
{
|
||||
osg::Node* node = getTopMostSceneData();
|
||||
if (node) node->getBound();
|
||||
|
||||
CameraGroup::frame();
|
||||
_frameStamp->setFrameNumber( _frameStamp->getFrameNumber() + 1 );
|
||||
}
|
||||
|
||||
|
||||
@@ -125,7 +125,6 @@ private:
|
||||
//
|
||||
Viewer::Viewer():
|
||||
_done(0),
|
||||
_frameNumber(0),
|
||||
_kbmcb(0),
|
||||
_recordingAnimationPath(false)
|
||||
{
|
||||
@@ -134,7 +133,6 @@ Viewer::Viewer():
|
||||
Viewer::Viewer(Producer::CameraConfig *cfg):
|
||||
OsgCameraGroup(cfg),
|
||||
_done(false),
|
||||
_frameNumber(0),
|
||||
_kbmcb(0),
|
||||
_recordingAnimationPath(false)
|
||||
{
|
||||
@@ -143,7 +141,6 @@ Viewer::Viewer(Producer::CameraConfig *cfg):
|
||||
Viewer::Viewer(const std::string& configFile):
|
||||
OsgCameraGroup(configFile),
|
||||
_done(false),
|
||||
_frameNumber(0),
|
||||
_kbmcb(0),
|
||||
_recordingAnimationPath(false)
|
||||
{
|
||||
@@ -152,7 +149,6 @@ Viewer::Viewer(const std::string& configFile):
|
||||
Viewer::Viewer(osg::ArgumentParser& arguments):
|
||||
OsgCameraGroup(arguments),
|
||||
_done(false),
|
||||
_frameNumber(0),
|
||||
_kbmcb(0),
|
||||
_recordingAnimationPath(false)
|
||||
{
|
||||
@@ -187,9 +183,6 @@ void Viewer::setUpViewer(unsigned int options)
|
||||
(new Producer::KeyboardMouse(ia)) :
|
||||
(new Producer::KeyboardMouse(getCamera(0)->getRenderSurface()));
|
||||
|
||||
// set up the time and frame counter.
|
||||
_frameNumber = 0;
|
||||
_start_tick = _timer.tick();
|
||||
|
||||
// set the keyboard mouse callback to catch the events from the windows.
|
||||
if (!_kbmcb)
|
||||
@@ -338,15 +331,6 @@ bool Viewer::realize()
|
||||
return _realized;
|
||||
}
|
||||
|
||||
void Viewer::sync()
|
||||
{
|
||||
OsgCameraGroup::sync();
|
||||
|
||||
// set the frame stamp for the new frame.
|
||||
double time_since_start = _timer.delta_s(_start_tick,_timer.tick());
|
||||
_frameStamp->setFrameNumber(_frameNumber++);
|
||||
_frameStamp->setReferenceTime(time_since_start);
|
||||
}
|
||||
|
||||
void Viewer::update()
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user