mirror of
https://github.com/OpenSpace/OpenSpace.git
synced 2026-03-13 08:58:54 -05:00
merge solved, fixed broken for loop in iswacontainer
This commit is contained in:
@@ -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);
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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{
|
||||
|
||||
@@ -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(){
|
||||
|
||||
@@ -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){
|
||||
|
||||
@@ -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();
|
||||
|
||||
|
||||
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user