merge solved, fixed broken for loop in iswacontainer

This commit is contained in:
Michael Nilsson
2016-04-04 17:55:46 -04:00
7 changed files with 88 additions and 42 deletions

View File

@@ -47,6 +47,7 @@ bool ISWAContainer::initialize(){
addISWACygnet("${OPENSPACE_DATA}/BATSRUS.cdf");
// addISWACygnet("${OPENSPACE_DATA}/ENLIL.cdf");
//addISWACygnet("${OPENSPACE_DATA}/test.png");
addISWACygnet(5);
addISWACygnet(7);
return true;
@@ -72,18 +73,19 @@ void ISWAContainer::render(const RenderData& data){
void ISWAContainer::update(const UpdateData& data){
int i = 0;
for(auto& extFuture : _extFutures){
if(extFuture->isFinished){
std::string path = "${OPENSPACE_DATA}/scene/iswa/" + std::to_string(extFuture->id) + extFuture->extension;
std::shared_ptr<ISWACygnet> cygnet = ISWAManager::ref().createISWACygnet(extFuture->id, std::move(path));
for (auto it = _extFutures.begin(); it != _extFutures.end(); )
{
if ((*it)->isFinished) {
std::string path = "${OPENSPACE_DATA}/scene/iswa/" + std::to_string((*it)->id) + (*it)->extension;
std::shared_ptr<ISWACygnet> cygnet = ISWAManager::ref().createISWACygnet((*it)->id, std::move(path));
if(cygnet){
_iSWACygnets.push_back(cygnet);
_extFutures.erase( _extFutures.begin() + i );
} else {
++i;
}
_extFutures.erase( it );
}
else {
++it;
}
}
if(!_deletedCygnets.empty())
@@ -107,6 +109,12 @@ void ISWAContainer::addISWACygnet(int id){
_extFutures.push_back(extFuture);
}
void ISWAContainer::addISWACygnet(std::shared_ptr<ISWACygnet> cygnet){
if(cygnet){
_iSWACygnets.push_back(cygnet);
}
}
void ISWAContainer::deleteCygnet(std::string name){
std::shared_ptr<ISWACygnet> c = iSWACygnet(name);

View File

@@ -46,9 +46,10 @@ public:
void addISWACygnet(std::string path);
void addISWACygnet(int id);
void addISWACygnet(std::shared_ptr<ISWACygnet> cygnet);
void deleteCygnet(ISWACygnet*);
void deleteCygnet(std::string);
void deleteCygnet(ISWACygnet* cygnet);
void deleteCygnet(std::string name);
std::shared_ptr<ISWACygnet> iSWACygnet(std::string name);

View File

@@ -38,6 +38,8 @@
#include <modules/onscreengui/include/gui.h>
#include <ghoul/opengl/texture.h>
#include <modules/iswa/util/iswamanager.h>
#include <openspace/engine/openspaceengine.h>
#include <openspace/rendering/renderengine.h>
namespace openspace{
class ISWACygnet : public properties::PropertyOwner{

View File

@@ -40,6 +40,7 @@ ScreenSpaceCygnet::ScreenSpaceCygnet(int cygnetId, std::string path)
, _cygnetId(cygnetId)
, _path(path)
{
std::cout << "screenspacecygnet constructor 1" << std::endl;
_id = id();
setName("ScreenSpaceCygnet" + std::to_string(_id));
addProperty(_updateInterval);
@@ -55,14 +56,12 @@ ScreenSpaceCygnet::ScreenSpaceCygnet(int cygnetId, std::string path)
OsEng.gui()._iSWAproperty.registerProperty(&_updateInterval);
OsEng.gui()._iSWAproperty.registerProperty(&_delete);
}
ScreenSpaceCygnet::~ScreenSpaceCygnet(){}
bool ScreenSpaceCygnet::initialize(){
_originalViewportSize = OsEng.windowWrapper().currentWindowResolution();
createPlane();
createShaders();
updateTexture();
@@ -112,31 +111,24 @@ void ScreenSpaceCygnet::render(){
}
void ScreenSpaceCygnet::update(){
//if(_path != ""){
_time = Time::ref().currentTime();
_openSpaceUpdateInterval = abs(Time::ref().deltaTime()*_updateInterval);
if(_openSpaceUpdateInterval){
if(abs(_time-_lastUpdateTime) >= _updateInterval){
updateTexture();
_lastUpdateTime = _time;
}
}
if(_futureTexture && _futureTexture->isFinished){
//_path = absPath("${OPENSPACE_DATA}/"+_futureTexture->filePath);
loadTexture();
delete _futureTexture;
_futureTexture = nullptr;
}
/* } else {
if(_fileExtension == ""){
//send new request
} else{
_path = "${OPENSPACE_DATA}/"+ name()+_fileExtension;
_time = Time::ref().currentTime();
_openSpaceUpdateInterval = abs(Time::ref().deltaTime()*_updateInterval);
if(_openSpaceUpdateInterval){
if(abs(_time-_lastUpdateTime) >= _updateInterval){
updateTexture();
_lastUpdateTime = _time;
}
}*/
}
if(_futureTexture && _futureTexture->isFinished){
loadTexture();
delete _futureTexture;
_futureTexture = nullptr;
}
}
void ScreenSpaceCygnet::updateTexture(){

View File

@@ -29,7 +29,7 @@
#include <modules/iswa/rendering/textureplane.h>
#include <openspace/util/time.h>
#include <modules/iswa/rendering/iswacontainer.h>
#include <modules/iswa/rendering/screenspacecygnet.h>
namespace openspace{
ISWAManager::ISWAManager()
@@ -51,8 +51,39 @@ namespace openspace{
ISWAManager::~ISWAManager(){}
std::shared_ptr<ISWACygnet> ISWAManager::createISWACygnet(int id, std::string path){
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<TexturePlane> cygnet;
cygnet = std::make_shared<TexturePlane>();
cygnet->initialize();*/
// cygnet->cygnetId(cygnetId);
// cygnet->parent(parent);
//_container->addISWACygnet(cygnet);
_container->addISWACygnet(cygnetId);
//}else{
// OsEng.renderEngine().registerScreenSpaceRenderable(std::make_shared<ScreenSpaceCygnet>(cygnetId));
//}
// std::cout << token << std::endl;
// if(token = ""){
// std::cout << "empty" << std::endl;
// }
// std::shared_ptr<ISWACygnet> cygnet;
// _container->addCygnet(cygnet);
}
std::shared_ptr<ISWACygnet> ISWAManager::createISWACygnet(int id, std::string path){
std::cout << "createISWACygnet " << id << std::endl;
if(path != ""){
const std::string& extension = ghoul::filesystem::File(absPath(path)).fileExtension();
std::shared_ptr<ISWACygnet> cygnet;
@@ -63,6 +94,7 @@ namespace openspace{
} else if(id == 5) {
//check some other condition that id==5 (based on metadata maybe?)
OsEng.renderEngine().registerScreenSpaceRenderable(std::make_shared<ScreenSpaceCygnet>(id, path));
return nullptr;
} else {
cygnet = std::make_shared<TexturePlane>(id, path);
}
@@ -94,7 +126,7 @@ namespace openspace{
std::shared_ptr<ExtensionFuture> extFuture = std::make_shared<ExtensionFuture>();
extFuture->isFinished = false;
extFuture->id = id;
std::cout << "extension id: "<< id << std::endl;
DlManager.getFileExtension(
iSWAurl(id),
[extFuture](std::string extension){

View File

@@ -48,7 +48,10 @@ public:
ISWAManager();
~ISWAManager();
std::shared_ptr<ISWACygnet> createISWACygnet(int, std::string);
void addCygnet(std::string info);
DownloadManager::FileFuture* downloadImage(int, std::string);
void downloadData();

View File

@@ -36,6 +36,7 @@
#include <openspace/rendering/renderengine.h>
#include <openspace/rendering/screenspacerenderable.h>
#include <modules/base/rendering/screenspaceimage.h>
#include <modules/iswa/util/iswamanager.h>
#include <ghoul/opengl/ghoul_gl.h>
@@ -141,7 +142,6 @@ namespace openspace {
OsEng.renderEngine().registerScreenSpaceRenderable(std::make_shared<ScreenSpaceImage>(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();