mirror of
https://github.com/OpenSpace/OpenSpace.git
synced 2025-12-31 00:10:44 -06:00
Use SyncEngine for synchronizing all synced state in RenderEngine
This commit is contained in:
@@ -34,6 +34,10 @@ namespace openspace {
|
||||
class Syncable;
|
||||
class SyncBuffer;
|
||||
|
||||
/**
|
||||
* Manages a collection of <code>Syncable</code>s and ensures they are synchronized
|
||||
* over SGCT nodes.
|
||||
*/
|
||||
class SyncEngine {
|
||||
public:
|
||||
|
||||
|
||||
@@ -31,6 +31,9 @@
|
||||
#include <openspace/properties/stringproperty.h>
|
||||
#include <openspace/rendering/screenspacerenderable.h>
|
||||
|
||||
#include <openspace/util/syncdata.h>
|
||||
|
||||
|
||||
#include <openspace/performance/performancemanager.h>
|
||||
|
||||
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> _onScreenInformation;
|
||||
|
||||
std::vector<Syncable*> getSyncables();
|
||||
|
||||
private:
|
||||
void setRenderer(std::unique_ptr<Renderer> renderer);
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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<Syncable*> RenderEngine::getSyncables(){
|
||||
std::vector<Syncable*> syncables = _mainCamera->getSyncables();
|
||||
syncables.push_back(&_onScreenInformation);
|
||||
return syncables;
|
||||
}
|
||||
|
||||
void RenderEngine::sortScreenspaceRenderables() {
|
||||
std::sort(
|
||||
_screenSpaceRenderables.begin(),
|
||||
|
||||
Reference in New Issue
Block a user