From 7e4aecbd90d5afac0c0a6beb92867dc9f53cc87e Mon Sep 17 00:00:00 2001 From: Sebastian Piwell Date: Mon, 4 Apr 2016 16:42:01 -0400 Subject: [PATCH] Add ISWACygnets at runtime --- modules/iswa/rendering/iswacontainer.cpp | 6 +++++ modules/iswa/rendering/iswacontainer.h | 5 ++-- modules/iswa/rendering/iswacygnet.h | 5 ++++ modules/iswa/util/iswamanager.cpp | 31 +++++++++++++++++++++++- modules/iswa/util/iswamanager.h | 1 + modules/onscreengui/src/gui.cpp | 18 ++++++++++---- 6 files changed, 58 insertions(+), 8 deletions(-) diff --git a/modules/iswa/rendering/iswacontainer.cpp b/modules/iswa/rendering/iswacontainer.cpp index 6310d64a40..3cca87c903 100644 --- a/modules/iswa/rendering/iswacontainer.cpp +++ b/modules/iswa/rendering/iswacontainer.cpp @@ -103,6 +103,12 @@ void ISWAContainer::addISWACygnet(std::string path){ // } } +void ISWAContainer::addISWACygnet(std::shared_ptr cygnet){ + if(cygnet){ + _iSWACygnets.push_back(cygnet); + } +} + void ISWAContainer::deleteCygnet(std::string name){ std::shared_ptr c = iSWACygnet(name); diff --git a/modules/iswa/rendering/iswacontainer.h b/modules/iswa/rendering/iswacontainer.h index f3d36461b0..2872d105c5 100644 --- a/modules/iswa/rendering/iswacontainer.h +++ b/modules/iswa/rendering/iswacontainer.h @@ -43,9 +43,10 @@ public: virtual void update(const UpdateData& data) override; void addISWACygnet(std::string path); + void addISWACygnet(std::shared_ptr cygnet); - void deleteCygnet(ISWACygnet*); - void deleteCygnet(std::string); + void deleteCygnet(ISWACygnet* cygnet); + void deleteCygnet(std::string name); std::shared_ptr iSWACygnet(std::string name); diff --git a/modules/iswa/rendering/iswacygnet.h b/modules/iswa/rendering/iswacygnet.h index 4e12faa79b..0cd970d34c 100644 --- a/modules/iswa/rendering/iswacygnet.h +++ b/modules/iswa/rendering/iswacygnet.h @@ -38,6 +38,8 @@ #include #include #include +#include +#include namespace openspace{ class ISWACygnet : public properties::PropertyOwner{ @@ -53,6 +55,9 @@ public: bool enabled(){return _enabled.value();} virtual bool isReady() = 0; + + void cygnetId(int cygnetId){_cygnetId = cygnetId;} + void parent(std::string parent){_parent = OsEng.renderEngine().scene()->sceneGraphNode(parent);} protected: void setPscUniforms(ghoul::opengl::ProgramObject* program, const Camera* camera, const PowerScaledCoordinate& position); diff --git a/modules/iswa/util/iswamanager.cpp b/modules/iswa/util/iswamanager.cpp index f31f59c00d..f529bcdae1 100644 --- a/modules/iswa/util/iswamanager.cpp +++ b/modules/iswa/util/iswamanager.cpp @@ -29,7 +29,7 @@ #include #include #include - +#include namespace openspace{ ISWAManager::ISWAManager() @@ -51,6 +51,35 @@ namespace openspace{ ISWAManager::~ISWAManager(){} + void ISWAManager::addCygnet(std::string info){ + std::string token; + std::stringstream ss(info); + getline(ss,token,','); + int cygnetId = std::stoi(token); + // std::cout << token << std::endl; + getline(ss,token,','); + std::string parent = token; + + if(parent == "Earth" || parent == "Sun"){ + std::shared_ptr cygnet; + cygnet = std::make_shared(); + cygnet->initialize(); + // cygnet->cygnetId(cygnetId); + // cygnet->parent(parent); + _container->addISWACygnet(cygnet); + + }else{ + OsEng.renderEngine().registerScreenSpaceRenderable(std::make_shared(cygnetId)); + } + // std::cout << token << std::endl; + // if(token = ""){ + // std::cout << "empty" << std::endl; + // } + + // std::shared_ptr cygnet; + // _container->addCygnet(cygnet); + } + std::shared_ptr ISWAManager::createISWACygnet(std::string path){ if(FileSys.fileExists(absPath(path))) { const std::string& extension = ghoul::filesystem::File(absPath(path)).fileExtension(); diff --git a/modules/iswa/util/iswamanager.h b/modules/iswa/util/iswamanager.h index cc42d59fcb..6c0242a6c2 100644 --- a/modules/iswa/util/iswamanager.h +++ b/modules/iswa/util/iswamanager.h @@ -39,6 +39,7 @@ class ISWAManager : public ghoul::Singleton { public: ISWAManager(); ~ISWAManager(); + void addCygnet(std::string info); std::shared_ptr createISWACygnet(std::string); DownloadManager::FileFuture* downloadImage(int, std::string); void downloadData(); diff --git a/modules/onscreengui/src/gui.cpp b/modules/onscreengui/src/gui.cpp index f97bae80fa..133c1c94e7 100644 --- a/modules/onscreengui/src/gui.cpp +++ b/modules/onscreengui/src/gui.cpp @@ -36,6 +36,7 @@ #include #include #include +#include #include @@ -141,7 +142,6 @@ namespace openspace { OsEng.renderEngine().registerScreenSpaceRenderable(std::make_shared(filepath)); } - namespace gui { GUI::GUI() @@ -417,12 +417,20 @@ void GUI::renderMainWindow() { ImGui::Checkbox("Help", &_help._isEnabled); - static const int bufferSize = 256; - static char buffer[bufferSize]; - ImGui::InputText("", buffer, bufferSize); + static const int addImageBufferSize = 256; + static char addImageBuffer[addImageBufferSize]; + ImGui::InputText("addImage", addImageBuffer, addImageBufferSize); if(ImGui::SmallButton("Add Image")){ - addScreenSpaceRenderable(std::string(buffer)); + addScreenSpaceRenderable(std::string(addImageBuffer)); + } + + static const int addCygnetBufferSize = 256; + static char addCygnetBuffer[addCygnetBufferSize]; + ImGui::InputText("addCynget", addCygnetBuffer, addCygnetBufferSize); + + if(ImGui::SmallButton("Add Cygnet")){ + ISWAManager::ref().addCygnet(std::string(addCygnetBuffer)); } ImGui::End();