Added osg::FrameStamp::set/getSimulationTime().
Added setting of osg_SimulationTime and osg_DeltaSimulationTime to the uniforms set by SceneView Added frame(double simulationTime) and advance(double simulationTime) parameters to osgViewer::SimpleViewer, Vewer and CompositeViewer. Updated various examples and Nodes to use SimulationTime where appropriate.
This commit is contained in:
@@ -35,6 +35,7 @@ CompositeViewer::CompositeViewer():
|
||||
_frameStamp = new osg::FrameStamp;
|
||||
_frameStamp->setFrameNumber(0);
|
||||
_frameStamp->setReferenceTime(0);
|
||||
_frameStamp->setSimulationTime(0);
|
||||
|
||||
setEventQueue(new osgGA::EventQueue);
|
||||
|
||||
@@ -722,7 +723,7 @@ void CompositeViewer::realize()
|
||||
}
|
||||
|
||||
|
||||
void CompositeViewer::frame()
|
||||
void CompositeViewer::frame(double simulationTime)
|
||||
{
|
||||
if (_done) return;
|
||||
|
||||
@@ -739,19 +740,29 @@ void CompositeViewer::frame()
|
||||
|
||||
_firstFrame = false;
|
||||
}
|
||||
advance();
|
||||
advance(simulationTime);
|
||||
|
||||
eventTraversal();
|
||||
updateTraversal();
|
||||
renderingTraversals();
|
||||
}
|
||||
|
||||
void CompositeViewer::advance()
|
||||
void CompositeViewer::advance(double simulationTime)
|
||||
{
|
||||
if (_done) return;
|
||||
|
||||
_frameStamp->setReferenceTime( osg::Timer::instance()->delta_s(_startTick, osg::Timer::instance()->tick()) );
|
||||
_frameStamp->setFrameNumber(_frameStamp->getFrameNumber()+1);
|
||||
|
||||
_frameStamp->setReferenceTime( osg::Timer::instance()->delta_s(_startTick, osg::Timer::instance()->tick()) );
|
||||
|
||||
if (simulationTime==USE_REFERENCE_TIME)
|
||||
{
|
||||
_frameStamp->setSimulationTime(_frameStamp->getReferenceTime());
|
||||
}
|
||||
else
|
||||
{
|
||||
_frameStamp->setSimulationTime(simulationTime);
|
||||
}
|
||||
}
|
||||
|
||||
void CompositeViewer::setCameraWithFocus(osg::Camera* camera)
|
||||
|
||||
@@ -25,6 +25,7 @@ SimpleViewer::SimpleViewer():
|
||||
_frameStamp = new osg::FrameStamp;
|
||||
_frameStamp->setFrameNumber(0);
|
||||
_frameStamp->setReferenceTime(0);
|
||||
_frameStamp->setSimulationTime(0);
|
||||
|
||||
_eventVisitor = new osgGA::EventVisitor;
|
||||
|
||||
@@ -122,7 +123,7 @@ void SimpleViewer::init()
|
||||
}
|
||||
}
|
||||
|
||||
void SimpleViewer::frame()
|
||||
void SimpleViewer::frame(double simulationTime)
|
||||
{
|
||||
if (_firstFrame)
|
||||
{
|
||||
@@ -130,17 +131,27 @@ void SimpleViewer::frame()
|
||||
_firstFrame = false;
|
||||
}
|
||||
|
||||
advance();
|
||||
advance(simulationTime);
|
||||
eventTraversal();
|
||||
updateTraversal();
|
||||
renderingTraversal();
|
||||
}
|
||||
|
||||
void SimpleViewer::advance()
|
||||
void SimpleViewer::advance(double simulationTime)
|
||||
{
|
||||
_frameStamp->setReferenceTime(osg::Timer::instance()->time_s());
|
||||
_frameStamp->setFrameNumber(_frameStamp->getFrameNumber()+1);
|
||||
|
||||
_frameStamp->setReferenceTime(osg::Timer::instance()->time_s());
|
||||
|
||||
if (simulationTime==USE_REFERENCE_TIME)
|
||||
{
|
||||
_frameStamp->setSimulationTime(_frameStamp->getReferenceTime());
|
||||
}
|
||||
else
|
||||
{
|
||||
_frameStamp->setSimulationTime(simulationTime);
|
||||
}
|
||||
|
||||
_sceneView->setFrameStamp(_frameStamp.get());
|
||||
}
|
||||
|
||||
|
||||
@@ -32,6 +32,7 @@ Viewer::Viewer():
|
||||
_frameStamp = new osg::FrameStamp;
|
||||
_frameStamp->setFrameNumber(0);
|
||||
_frameStamp->setReferenceTime(0);
|
||||
_frameStamp->setSimulationTime(0);
|
||||
|
||||
_eventVisitor = new osgGA::EventVisitor;
|
||||
_eventVisitor->setActionAdapter(this);
|
||||
@@ -784,7 +785,7 @@ void Viewer::realize()
|
||||
}
|
||||
|
||||
|
||||
void Viewer::frame()
|
||||
void Viewer::frame(double simulationTime)
|
||||
{
|
||||
if (_done) return;
|
||||
|
||||
@@ -801,22 +802,32 @@ void Viewer::frame()
|
||||
|
||||
_firstFrame = false;
|
||||
}
|
||||
advance();
|
||||
advance(simulationTime);
|
||||
|
||||
eventTraversal();
|
||||
updateTraversal();
|
||||
renderingTraversals();
|
||||
}
|
||||
|
||||
void Viewer::advance()
|
||||
void Viewer::advance(double simulationTime)
|
||||
{
|
||||
if (_done) return;
|
||||
|
||||
double prevousReferenceTime = _frameStamp->getReferenceTime();
|
||||
int previousFrameNumber = _frameStamp->getFrameNumber();
|
||||
|
||||
_frameStamp->setReferenceTime( osg::Timer::instance()->delta_s(_startTick, osg::Timer::instance()->tick()) );
|
||||
_frameStamp->setFrameNumber(_frameStamp->getFrameNumber()+1);
|
||||
|
||||
_frameStamp->setReferenceTime( osg::Timer::instance()->delta_s(_startTick, osg::Timer::instance()->tick()) );
|
||||
|
||||
if (simulationTime==USE_REFERENCE_TIME)
|
||||
{
|
||||
_frameStamp->setSimulationTime(_frameStamp->getReferenceTime());
|
||||
}
|
||||
else
|
||||
{
|
||||
_frameStamp->setSimulationTime(simulationTime);
|
||||
}
|
||||
|
||||
if (getStats())
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user