From 489b7bbcd2833b563ea95e2b1bcbddc7b848ccdb Mon Sep 17 00:00:00 2001 From: Sebastian Piwell Date: Fri, 13 May 2016 10:20:51 -0400 Subject: [PATCH] Clean up --- modules/iswa/rendering/dataplane.cpp | 2 +- modules/iswa/rendering/iswagroup.cpp | 2 - modules/iswa/rendering/screenspacecygnet.cpp | 1 - modules/iswa/rendering/screenspacecygnet.h | 2 - modules/iswa/util/iswamanager.cpp | 239 +++++-------------- modules/iswa/util/iswamanager.h | 29 +-- modules/iswa/util/iswamanager_lua.inl | 21 +- 7 files changed, 89 insertions(+), 207 deletions(-) diff --git a/modules/iswa/rendering/dataplane.cpp b/modules/iswa/rendering/dataplane.cpp index 35000d9cc8..7818467370 100644 --- a/modules/iswa/rendering/dataplane.cpp +++ b/modules/iswa/rendering/dataplane.cpp @@ -343,7 +343,7 @@ std::vector DataPlane::readData(std::string& dataBuffer){ numValues++; } } - std::cout << "Actual size: " << numValues << " Expected: " << _dimensions.x*_dimensions.y << std::endl; + // std::cout << "Actual size: " << numValues << " Expected: " << _dimensions.x*_dimensions.y << std::endl; if(numValues != _dimensions.x*_dimensions.y){ LWARNING("Number of values read and expected are not the same"); return std::vector(); diff --git a/modules/iswa/rendering/iswagroup.cpp b/modules/iswa/rendering/iswagroup.cpp index 51b009bb4b..a004c18876 100644 --- a/modules/iswa/rendering/iswagroup.cpp +++ b/modules/iswa/rendering/iswagroup.cpp @@ -71,7 +71,6 @@ void IswaGroup::registerCygnet(IswaCygnet* cygnet, IswaManager::CygnetType type) return; } - if(type == IswaManager::CygnetType::Data){ DataPlane* dataplane = static_cast(cygnet); @@ -171,7 +170,6 @@ void IswaGroup::registerProperties(){ OsEng.gui()._iswa.registerProperty(&_delete); _delete.onChange([this]{ clearGroup(); - // IswaManager::ref().unregisterGroup(_id); }); } diff --git a/modules/iswa/rendering/screenspacecygnet.cpp b/modules/iswa/rendering/screenspacecygnet.cpp index bb8e5d6c92..01a5bca29a 100644 --- a/modules/iswa/rendering/screenspacecygnet.cpp +++ b/modules/iswa/rendering/screenspacecygnet.cpp @@ -36,7 +36,6 @@ namespace openspace { ScreenSpaceCygnet::ScreenSpaceCygnet(const ghoul::Dictionary& dictionary) : ScreenSpaceImage(dictionary) - , _updateInterval("updateInterval", "Update Interval", 1.0, 0.0 , 10.0) { // hacky, have to first get as float and then cast to int. float cygnetid; diff --git a/modules/iswa/rendering/screenspacecygnet.h b/modules/iswa/rendering/screenspacecygnet.h index 55166c5517..bdf021da34 100644 --- a/modules/iswa/rendering/screenspacecygnet.h +++ b/modules/iswa/rendering/screenspacecygnet.h @@ -42,10 +42,8 @@ public: virtual void update() override; - private: int _cygnetId; - properties::FloatProperty _updateInterval; int _updateTime; double _openSpaceTime; diff --git a/modules/iswa/util/iswamanager.cpp b/modules/iswa/util/iswamanager.cpp index 16fbf50c91..459a107cdc 100644 --- a/modules/iswa/util/iswamanager.cpp +++ b/modules/iswa/util/iswamanager.cpp @@ -49,9 +49,7 @@ namespace { namespace openspace{ -IswaManager::IswaManager() -// :_iswaNames("iswaNames", "iSWA Cygnets") -{ +IswaManager::IswaManager(){ _month["JAN"] = "01"; _month["FEB"] = "02"; _month["MAR"] = "03"; @@ -81,11 +79,11 @@ IswaManager::IswaManager() LWARNING("Download to memory was aborted: " + err); } ); - } IswaManager::~IswaManager(){ _groups.clear(); + _cygnetInformation.clear(); } void IswaManager::addIswaCygnet(std::string info){ @@ -148,9 +146,7 @@ void IswaManager::addIswaCygnet(int id, std::string info, int group){ metaFuture->json, metadataCallback ); - }else{ - //create kameleonplane - // createKameleonPlane(info); + }else{ std::shared_ptr metaFuture = std::make_shared(); metaFuture->id = -1; metaFuture->group = group; @@ -171,52 +167,13 @@ void IswaManager::addIswaCygnet(int id, std::string info, int group){ metaFuture->json, metadataCallback ); - } + } } - void IswaManager::deleteIswaCygnet(std::string name){ OsEng.scriptEngine().queueScript("openspace.removeSceneGraphNode('" + name + "')"); } -void IswaManager::deleteScreenSpaceCygnet(int id){ - if(_cygnetInformation.find(id) == _cygnetInformation.end()){ - LWARNING("Could not find Cygnet with id = " + std::to_string(id)); - return; - } - - std::string script = "openspace.unregisterScreenSpaceRenderable('" + _cygnetInformation[id]->name + "');"; - OsEng.scriptEngine().queueScript(script); -} - -std::shared_ptr IswaManager::downloadImageToMemory(int id, std::string& buffer){ - return DlManager.downloadToMemory( - iswaUrl(id, "image"), - buffer, - [](const DownloadManager::FileFuture& f){ - if(f.isFinished){ - LDEBUG("Download to memory finished"); - } else if (f.isAborted){ - LWARNING("Download to memory was aborted: " + f.errorMessage); - } - } - ); -} - -std::shared_ptr IswaManager::downloadDataToMemory(int id, std::string& buffer){ - return DlManager.downloadToMemory( - iswaUrl(id, "data"), - buffer, - [](const DownloadManager::FileFuture& f){ - if(f.isFinished){ - LDEBUG("Download to memory finished"); - } else if (f.isAborted){ - LWARNING("Download to memory was aborted: " + f.errorMessage); - } - } - ); -} - std::future IswaManager::fetchImageCygnet(int id){ return std::move( DlManager.fetchFile( iswaUrl(id, "image"), @@ -241,7 +198,6 @@ std::future IswaManager::fetchDataCygnet(int id){ ) ); } - std::string IswaManager::iswaUrl(int id, std::string type){ std::string url; if(id < 0){ @@ -267,6 +223,44 @@ std::string IswaManager::iswaUrl(int id, std::string type){ return url; } +void IswaManager::registerToGroup(int id, CygnetType type, IswaCygnet* cygnet){ + if(_groups.find(id) == _groups.end()){ + _groups.insert(std::pair>(id, std::make_shared(id))); + } + + _groups[id]->registerCygnet(cygnet, type); +} + +void IswaManager::unregisterFromGroup(int id, IswaCygnet* cygnet){ + if(_groups.find(id) != _groups.end()){ + _groups[id]->unregisterCygnet(cygnet); + } +} + +void IswaManager::registerOptionsToGroup(int id, const std::vector& options){ + if(_groups.find(id) != _groups.end()){ + _groups[id]->registerOptions(options); + } +} + +std::shared_ptr IswaManager::iswaGroup(std::string name){ + for(auto group : _groups){ + if(group.second->name() == name){ + return group.second; + } + } + + return nullptr; +} + +std::map>& IswaManager::cygnetInformation(){ + return _cygnetInformation; +} + +std::map>& IswaManager::groups(){ + return _groups; +} + std::shared_ptr IswaManager::downloadMetadata(int id){ std::shared_ptr metaFuture = std::make_shared(); @@ -287,36 +281,6 @@ std::shared_ptr IswaManager::downloadMetadata(int id){ return metaFuture; } -void IswaManager::createScreenSpace(int id){ - std::string script = "openspace.iswa.addScreenSpaceCygnet(" - "{CygnetId =" + std::to_string(id) + "});"; - OsEng.scriptEngine().queueScript(script); -} - -void IswaManager::createPlane(std::shared_ptr data){ - // check if this plane already exist - std::string name = _type[data->type] + _geom[data->geom] + std::to_string(data->id); - - if(data->group > 0){ - auto it = _groups.find(data->group); - if(it == _groups.end() || (*it).second->checkType((CygnetType) data->type)) - name += "_Group" + std::to_string(data->group); - } - - data->name = name; - - if( OsEng.renderEngine().scene()->sceneGraphNode(name) ){ - LERROR("A node with name \"" + name +"\" already exist"); - return; - } - - std::string luaTable = parseJSONToLuaTable(data); - if(luaTable != ""){ - std::string script = "openspace.addSceneGraphNode(" + luaTable + ");"; - OsEng.scriptEngine().queueScript(script); - } -} - std::string IswaManager::parseJSONToLuaTable(std::shared_ptr data){ if(data->json != ""){ json j = json::parse(data->json); @@ -369,113 +333,34 @@ std::string IswaManager::parseJSONToLuaTable(std::shared_ptr dat return ""; } -// void IswaManager::createKameleonPlane(std::string kwPath, int group){ -// kwPath = "${OPENSPACE_DATA}/" + kwPath; -// const std::string& extension = ghoul::filesystem::File(absPath(kwPath)).fileExtension(); - -// if(FileSys.fileExists(absPath(kwPath)) && extension == "cdf"){ -// std::string luaTable = parseKWToLuaTable(kwPath, group); -// if(!luaTable.empty()){ -// std::cout << luaTable << std::endl; -// std::string script = "openspace.addSceneGraphNode(" + luaTable + ");"; -// OsEng.scriptEngine().queueScript(script); -// } -// }else{ -// LWARNING( kwPath + " is not a cdf file or can't be found."); -// } -// } -// -// std::string IswaManager::parseKWToLuaTable(std::string kwPath, int group){ -// if(kwPath != ""){ -// const std::string& extension = ghoul::filesystem::File(absPath(kwPath)).fileExtension(); -// if(extension == "cdf"){ -// KameleonWrapper kw = KameleonWrapper(absPath(kwPath)); - -// std::string parent = kw.getParent(); -// std::string frame = kw.getFrame(); -// glm::vec3 min = kw.getGridMin(); -// glm::vec3 max = kw.getGridMax(); - -// glm::vec4 spatialScale; -// std::string coordinateType; - -// std::tuple < std::string, std::string, std::string > gridUnits = kw.getGridUnits(); -// if (std::get<0>(gridUnits) == "R" && std::get<1>(gridUnits) == "R" && std::get<2>(gridUnits) == "R") { -// spatialScale.x = 6.371f; -// spatialScale.y = 6.371f; -// spatialScale.z = 6.371f; -// spatialScale.w = 6; - -// coordinateType = "Cartesian"; -// }else{ -// spatialScale = glm::vec4(1.0); -// spatialScale.w = 1; //-log10(1.0f/max.x); - -// coordinateType = "Polar"; -// } -// std::string table = "{" -// "Name = 'KameleonPlane0'," -// "Parent = '" + parent + "', " -// "Renderable = {" -// "Type = 'KameleonPlane', " -// "Id = 0 ," -// "Frame = '" + frame + "' , " -// "GridMin = " + std::to_string(min) + ", " -// "GridMax = " + std::to_string(max) + ", " -// "SpatialScale = " + std::to_string(spatialScale) + ", " -// "UpdateTime = 0, " -// "kwPath = '" + kwPath + "' ," -// "axisCut = 'y' ," -// "CoordinateType = '" + coordinateType + "', " -// "Group = "+ std::to_string(group) + " ," -// "}" -// "}" -// ; -// // std::cout << table << std::endl; -// return table; -// } -// } -// return ""; -// } - - -void IswaManager::registerGroup(int id){ - _groups.insert(std::pair>(id, std::make_shared(id))); +void IswaManager::createScreenSpace(int id){ + std::string script = "openspace.iswa.addScreenSpaceCygnet(" + "{CygnetId =" + std::to_string(id) + "});"; + OsEng.scriptEngine().queueScript(script); } -void IswaManager::unregisterGroup(int id){ - if(_groups.find(id) != _groups.end()) - _groups[id]->clearGroup(); -} +void IswaManager::createPlane(std::shared_ptr data){ + // check if this plane already exist + std::string name = _type[data->type] + _geom[data->geom] + std::to_string(data->id); -void IswaManager::registerToGroup(int id, CygnetType type, IswaCygnet* cygnet){ - if(_groups.find(id) == _groups.end()){ - registerGroup(id); + if(data->group > 0){ + auto it = _groups.find(data->group); + if(it == _groups.end() || (*it).second->checkType((CygnetType) data->type)) + name += "_Group" + std::to_string(data->group); } - _groups[id]->registerCygnet(cygnet, type); -} + data->name = name; -void IswaManager::unregisterFromGroup(int id, IswaCygnet* cygnet){ - if(_groups.find(id) != _groups.end()){ - _groups[id]->unregisterCygnet(cygnet); - } -} - -void IswaManager::registerOptionsToGroup(int id, const std::vector& options){ - if(_groups.find(id) != _groups.end()){ - _groups[id]->registerOptions(options); - } -} - -std::shared_ptr IswaManager::iswaGroup(std::string name){ - for(auto group : _groups){ - if(group.second->name() == name){ - return group.second; - } + if( OsEng.renderEngine().scene()->sceneGraphNode(name) ){ + LERROR("A node with name \"" + name +"\" already exist"); + return; } - return nullptr; + std::string luaTable = parseJSONToLuaTable(data); + if(luaTable != ""){ + std::string script = "openspace.addSceneGraphNode(" + luaTable + ");"; + OsEng.scriptEngine().queueScript(script); + } } void IswaManager::fillCygnetInfo(std::string jsonString){ diff --git a/modules/iswa/util/iswamanager.h b/modules/iswa/util/iswamanager.h index 12b76630b1..0fcfaa13c6 100644 --- a/modules/iswa/util/iswamanager.h +++ b/modules/iswa/util/iswamanager.h @@ -78,38 +78,27 @@ public: void addIswaCygnet(std::string info); void addIswaCygnet(int id, std::string info = "Texture", int group = -1); void deleteIswaCygnet(std::string); - void deleteScreenSpaceCygnet(int id); - - std::shared_ptr downloadImageToMemory(int id, std::string& buffer); - std::shared_ptr downloadDataToMemory(int id, std::string& buffer); std::future fetchImageCygnet(int id); std::future fetchDataCygnet(int id); + std::string iswaUrl(int id, std::string type = "image"); - void registerGroup(int id); - void unregisterGroup(int id); void registerToGroup(int id, CygnetType type, IswaCygnet* cygnet); void unregisterFromGroup(int id, IswaCygnet* cygnet); void registerOptionsToGroup(int id, const std::vector& options); std::shared_ptr iswaGroup(std::string name); + + std::map>& cygnetInformation(); + std::map>& groups(); static scripting::ScriptEngine::LuaLibrary luaLibrary(); - std::string iswaUrl(int id, std::string type = "image"); - void createScreenSpace(int id); - - std::map>& cygnetInformation(){ - return _cygnetInformation; - } - private: std::shared_ptr downloadMetadata(int id); - - void createPlane(std::shared_ptr data); std::string parseJSONToLuaTable(std::shared_ptr data); - - void createKameleonPlane(std::string kwPath, int group = -1); - std::string parseKWToLuaTable(std::string kwPath, int group); + + void createScreenSpace(int id); + void createPlane(std::shared_ptr data); void fillCygnetInfo(std::string jsonString); @@ -117,13 +106,11 @@ private: std::map _type; std::map _geom; - std::map> _groups; - std::shared_ptr _kameleon; std::set _kameleonFrames; + std::map> _groups; std::map> _cygnetInformation; - // properties::SelectionProperty _iswaNames; }; } //namespace openspace diff --git a/modules/iswa/util/iswamanager_lua.inl b/modules/iswa/util/iswamanager_lua.inl index 94bfde74ca..7128e15dc5 100644 --- a/modules/iswa/util/iswamanager_lua.inl +++ b/modules/iswa/util/iswamanager_lua.inl @@ -33,7 +33,7 @@ int iswa_addCygnet(lua_State* L) { } int iswa_addScreenSpaceCygnet(lua_State* L){ - static const std::string _loggerCat = "registerScreenSpaceRenderable"; + static const std::string _loggerCat = "addScreenSpaceCygnet"; using ghoul::lua::errorLocation; int nArguments = lua_gettop(L); @@ -84,14 +84,29 @@ int iswa_removeCygnet(lua_State* L){ } int iswa_removeScrenSpaceCygnet(lua_State* L){ + static const std::string _loggerCat = "removeScreenSpaceCygnet"; + int id = lua_tonumber(L, 1); - IswaManager::ref().deleteScreenSpaceCygnet(id); + + auto cygnetInformation = IswaManager::ref().cygnetInformation(); + if(cygnetInformation.find(id) == cygnetInformation.end()){ + LWARNING("Could not find Cygnet with id = " + std::to_string(id)); + return 0; + } + + std::string script = "openspace.unregisterScreenSpaceRenderable('" + cygnetInformation[id]->name + "');"; + OsEng.scriptEngine().queueScript(script); return 0; } int iswa_removeGroup(lua_State* L){ int id = lua_tonumber(L, 1); - IswaManager::ref().unregisterGroup(id); + // IswaManager::ref().unregisterGroup(id); + + auto groups = IswaManager::ref().groups(); + if(groups.find(id) != groups.end()) + groups[id]->clearGroup(); + return 0; }