diff --git a/include/openspace/engine/syncengine.h b/include/openspace/engine/syncengine.h index 50daf2248d..3adc64aabb 100644 --- a/include/openspace/engine/syncengine.h +++ b/include/openspace/engine/syncengine.h @@ -34,6 +34,10 @@ namespace openspace { class Syncable; class SyncBuffer; +/** +* Manages a collection of Syncables and ensures they are synchronized +* over SGCT nodes. +*/ class SyncEngine { public: diff --git a/include/openspace/rendering/renderengine.h b/include/openspace/rendering/renderengine.h index 680ac01263..a08421b872 100644 --- a/include/openspace/rendering/renderengine.h +++ b/include/openspace/rendering/renderengine.h @@ -31,6 +31,9 @@ #include #include +#include + + #include namespace ghoul { @@ -49,6 +52,7 @@ namespace openspace { // Forward declare to minimize dependencies class Camera; class SyncBuffer; + class Scene; class Renderer; class RaycasterManager; @@ -115,9 +119,6 @@ public: bool doesPerformanceMeasurements() const; performance::PerformanceManager* performanceManager(); - void serialize(SyncBuffer* syncBuffer); - void deserialize(SyncBuffer* syncBuffer, bool useDoubleBuffering); - float globalBlackOutFactor(); void setGlobalBlackOutFactor(float factor); void setNAaSamples(int nAaSamples); @@ -188,12 +189,17 @@ public: void startFading(int direction, float fadeDuration); void sortScreenspaceRenderables(); + // This is temporary until a proper screenspace solution is found ---abock - struct { + struct OnScreenInformation{ glm::vec2 _position; unsigned int _size; int _node; - } _onScreenInformation; + }; + + SyncData _onScreenInformation; + + std::vector getSyncables(); private: void setRenderer(std::unique_ptr renderer); diff --git a/src/engine/openspaceengine.cpp b/src/engine/openspaceengine.cpp index 598a500e8f..36ef7ff861 100644 --- a/src/engine/openspaceengine.cpp +++ b/src/engine/openspaceengine.cpp @@ -510,7 +510,7 @@ bool OpenSpaceEngine::initialize() { #endif _syncEngine->addSyncables(Time::ref().getSyncables()); - _syncEngine->addSyncables(_renderEngine->camera()->getSyncables()); + _syncEngine->addSyncables(_renderEngine->getSyncables()); LINFO("Finished initializing"); return true; @@ -958,7 +958,7 @@ void OpenSpaceEngine::encode() { _syncEngine->encode(_syncBuffer.get()); _scriptEngine->serialize(_syncBuffer.get()); - _renderEngine->serialize(_syncBuffer.get()); + //_renderEngine->serialize(_syncBuffer.get()); _syncBuffer->write(); } @@ -972,7 +972,7 @@ void OpenSpaceEngine::decode() { _syncEngine->decode(_syncBuffer.get()); _scriptEngine->deserialize(_syncBuffer.get()); - _renderEngine->deserialize(_syncBuffer.get(), _settingsEngine->useDoubleBuffering()); + //_renderEngine->deserialize(_syncBuffer.get(), _settingsEngine->useDoubleBuffering()); } } diff --git a/src/rendering/renderengine.cpp b/src/rendering/renderengine.cpp index a8cb7b8e36..5ab34ae81b 100644 --- a/src/rendering/renderengine.cpp +++ b/src/rendering/renderengine.cpp @@ -526,20 +526,6 @@ void RenderEngine::setSceneGraph(Scene* sceneGraph) { _sceneGraph = sceneGraph; } -void RenderEngine::serialize(SyncBuffer* syncBuffer) { - syncBuffer->encode(_onScreenInformation._node); - syncBuffer->encode(_onScreenInformation._position.x); - syncBuffer->encode(_onScreenInformation._position.y); - syncBuffer->encode(_onScreenInformation._size); -} - -void RenderEngine::deserialize(SyncBuffer* syncBuffer, bool useDoubleBuffering) { - syncBuffer->decode(_onScreenInformation._node); - syncBuffer->decode(_onScreenInformation._position.x); - syncBuffer->decode(_onScreenInformation._position.y); - syncBuffer->decode(_onScreenInformation._size); -} - Camera* RenderEngine::camera() const { return _mainCamera; } @@ -1700,6 +1686,12 @@ void RenderEngine::renderScreenLog() { } } +std::vector RenderEngine::getSyncables(){ + std::vector syncables = _mainCamera->getSyncables(); + syncables.push_back(&_onScreenInformation); + return syncables; +} + void RenderEngine::sortScreenspaceRenderables() { std::sort( _screenSpaceRenderables.begin(),