Added a delta time member variable to openspace engine and changed how dt is calculated.

it is now averaged over two frames instead of being just dt between two frames. This gives more stability
This commit is contained in:
Joakim Kilby
2015-02-09 13:52:00 +01:00
parent 36bfe79eb4
commit 32a56085d9
2 changed files with 8 additions and 5 deletions

View File

@@ -98,6 +98,7 @@ private:
ghoul::cmdparser::CommandlineParser _commandlineParser;
LuaConsole _console;
GUI _gui;
double _dt;
SyncBuffer* _syncBuffer;

View File

@@ -82,7 +82,8 @@ OpenSpaceEngine* OpenSpaceEngine::_engine = nullptr;
OpenSpaceEngine::OpenSpaceEngine(std::string programName)
: _commandlineParser(programName, true)
, _syncBuffer(nullptr)
, _syncBuffer(nullptr)
, _dt(0.0)
{
SpiceManager::initialize();
Time::initialize();
@@ -493,12 +494,12 @@ bool OpenSpaceEngine::initializeGL() {
void OpenSpaceEngine::preSynchronization() {
FileSys.triggerFilesystemEvents();
if (sgct::Engine::instance()->isMaster()) {
const double dt = sgct::Engine::instance()->getDt();
_interactionHandler.update(dt);
_dt = (_dt + sgct::Engine::instance()->getDt()) * 0.5;
_interactionHandler.update(_dt);
_interactionHandler.lockControls();
//Time::ref().advanceTime(dt);
Time::ref().advanceTime(_dt);
}
}
@@ -610,6 +611,7 @@ void OpenSpaceEngine::mouseScrollWheelCallback(int pos) {
void OpenSpaceEngine::encode() {
if (_syncBuffer) {
_renderEngine.serialize(_syncBuffer);
_syncBuffer->write();
}
}