From 5999369ef18f5c848ba6677c7e675d4e366c05d8 Mon Sep 17 00:00:00 2001 From: Sebastian Piwell Date: Wed, 30 Mar 2016 10:25:45 -0400 Subject: [PATCH] Update texture based on OpenSpace time --- modules/datasurface/rendering/dataplane.cpp | 7 ++----- modules/datasurface/rendering/datasurface.cpp | 6 +++++- modules/datasurface/rendering/datasurface.h | 2 ++ modules/datasurface/rendering/textureplane.cpp | 15 +++++++++------ modules/datasurface/rendering/textureplane.h | 2 +- 5 files changed, 19 insertions(+), 13 deletions(-) diff --git a/modules/datasurface/rendering/dataplane.cpp b/modules/datasurface/rendering/dataplane.cpp index 7fbf31f578..b7a32ded6d 100644 --- a/modules/datasurface/rendering/dataplane.cpp +++ b/modules/datasurface/rendering/dataplane.cpp @@ -46,16 +46,13 @@ DataPlane::DataPlane(std::shared_ptr kw, std::string path) , _texture(nullptr) , _quad(0) , _vertexPositionBuffer(0) -{ - addProperty(_enabled); - addProperty(_cygnetId); - addProperty(_path); - +{ _id = id(); setName("DataPlane" + std::to_string(_id)); OsEng.gui()._property.registerProperty(&_enabled); OsEng.gui()._property.registerProperty(&_cygnetId); OsEng.gui()._property.registerProperty(&_path); + OsEng.gui()._property.registerProperty(&_updateInterval); KameleonWrapper::Model model = _kw->model(); if( model == KameleonWrapper::Model::BATSRUS){ diff --git a/modules/datasurface/rendering/datasurface.cpp b/modules/datasurface/rendering/datasurface.cpp index 7f9c55e8ec..10a1c4a21c 100644 --- a/modules/datasurface/rendering/datasurface.cpp +++ b/modules/datasurface/rendering/datasurface.cpp @@ -35,9 +35,13 @@ DataSurface::DataSurface(std::string path) :_enabled("enabled", "Is Enabled", true) ,_cygnetId("cygnetId", "CygnetID",7, 0, 10) ,_path("path", "Path", path) + ,_updateInterval("updateInterval", "Update Interval", 3, 1, 10) ,_shader(nullptr) { - setName("DataSurface"); + addProperty(_enabled); + addProperty(_cygnetId); + addProperty(_path); + addProperty(_updateInterval); } DataSurface::~DataSurface(){} diff --git a/modules/datasurface/rendering/datasurface.h b/modules/datasurface/rendering/datasurface.h index ad6a541384..6a62c6c1db 100644 --- a/modules/datasurface/rendering/datasurface.h +++ b/modules/datasurface/rendering/datasurface.h @@ -54,11 +54,13 @@ protected: properties::BoolProperty _enabled; properties::IntProperty _cygnetId; properties::StringProperty _path; + properties::FloatProperty _updateInterval; std::unique_ptr _shader; SceneGraphNode* _parent; double _time; + double _lastUpdateTime = 0; std::map _month; }; diff --git a/modules/datasurface/rendering/textureplane.cpp b/modules/datasurface/rendering/textureplane.cpp index 137b9addec..bf62d9c4cc 100644 --- a/modules/datasurface/rendering/textureplane.cpp +++ b/modules/datasurface/rendering/textureplane.cpp @@ -47,15 +47,12 @@ TexturePlane::TexturePlane(std::string path) , _vertexPositionBuffer(0) , _futureTexture(nullptr) { - addProperty(_enabled); - addProperty(_cygnetId); - addProperty(_path); - _id = id(); setName("TexturePlane" + std::to_string(_id)); OsEng.gui()._property.registerProperty(&_enabled); OsEng.gui()._property.registerProperty(&_cygnetId); OsEng.gui()._property.registerProperty(&_path); + OsEng.gui()._property.registerProperty(&_updateInterval); _path.setValue("${OPENSPACE_DATA}/"+ name() + ".jpg"); _cygnetId.onChange([this](){ updateTexture(); }); @@ -165,15 +162,20 @@ void TexturePlane::render(){ } void TexturePlane::update(){ + _time = Time::ref().currentTime(); + _stateMatrix = SpiceManager::ref().positionTransformMatrix("GALACTIC", "GSM", Time::ref().currentTime()); if(_futureTexture && _futureTexture->isFinished){ - _path.set(absPath("${OPENSPACE_DATA}/"+_futureTexture->filePath)); loadTexture(); delete _futureTexture; _futureTexture = nullptr; } + + if((_time-_lastUpdateTime) >= _updateInterval){ + updateTexture(); + } } void TexturePlane::setParent(){ @@ -199,7 +201,8 @@ void TexturePlane::updateTexture(){ _futureTexture = future; imageSize-=1; } - // } + // } + _lastUpdateTime = _time; } void TexturePlane::loadTexture() { diff --git a/modules/datasurface/rendering/textureplane.h b/modules/datasurface/rendering/textureplane.h index e8d4de92e4..7d25ad85a9 100644 --- a/modules/datasurface/rendering/textureplane.h +++ b/modules/datasurface/rendering/textureplane.h @@ -66,7 +66,7 @@ GLuint _quad; GLuint _vertexPositionBuffer; - glm::dmat3 _stateMatrix; + glm::dmat3 _stateMatrix; // bool _planeIsDirty; };