mirror of
https://github.com/OpenSpace/OpenSpace.git
synced 2026-04-28 14:59:31 -05:00
Merge fix
This commit is contained in:
@@ -30,7 +30,7 @@ function postInitialization()
|
||||
|
||||
openspace.printInfo("Done setting default values")
|
||||
|
||||
openspace.iswa.addCygnet("0,Data");
|
||||
openspace.iswa.addCygnet("-4,Data,1");
|
||||
--openspace.iswa.addCygnet("-1,Data,1");
|
||||
--openspace.iswa.addCygnet("-2,Data,1");
|
||||
--openspace.iswa.addCygnet("-3,Data,1");
|
||||
|
||||
@@ -100,7 +100,7 @@ DataSphere::DataSphere(const ghoul::Dictionary& dictionary)
|
||||
|
||||
_type = IswaManager::CygnetType::Data;
|
||||
_dataBuffer = "";
|
||||
_data->frame = "SM";
|
||||
//_data->frame = "SM";
|
||||
}
|
||||
|
||||
DataSphere::~DataSphere(){}
|
||||
@@ -115,16 +115,15 @@ void DataSphere::backgroundValues(glm::vec2 backgroundValues){ _backgroundValues
|
||||
bool DataSphere::loadTexture(){
|
||||
|
||||
// if The future is done then get the new dataFile
|
||||
// if(_futureObject.valid() && DownloadManager::futureReady(_futureObject)){
|
||||
// DownloadManager::MemoryFile dataFile = _futureObject.get();
|
||||
if(_futureObject.valid() && DownloadManager::futureReady(_futureObject)){
|
||||
DownloadManager::MemoryFile dataFile = _futureObject.get();
|
||||
|
||||
// if(dataFile.corrupted)
|
||||
// return false;
|
||||
|
||||
// _dataBuffer = "";
|
||||
// _dataBuffer.append(dataFile.buffer, dataFile.size);
|
||||
// }
|
||||
if(dataFile.corrupted)
|
||||
return false;
|
||||
|
||||
_dataBuffer = "";
|
||||
_dataBuffer.append(dataFile.buffer, dataFile.size);
|
||||
}
|
||||
|
||||
// if the buffer in the datafile is empty, do not proceed
|
||||
if(_dataBuffer.empty())
|
||||
@@ -177,28 +176,20 @@ bool DataSphere::loadTexture(){
|
||||
}
|
||||
|
||||
// _dataBuffer = "";
|
||||
return false;
|
||||
return texturesReady;
|
||||
}
|
||||
|
||||
bool DataSphere::updateTexture(){
|
||||
if(_dataBuffer == ""){
|
||||
std::ifstream data(absPath("${OPENSPACE_DATA}/ionosphere_variables.json"));
|
||||
std::stringstream buffer;
|
||||
buffer << data.rdbuf();
|
||||
_dataBuffer = buffer.str();
|
||||
|
||||
// loadTexture();
|
||||
if(_futureObject.valid())
|
||||
return false;
|
||||
|
||||
std::future<DownloadManager::MemoryFile> future = IswaManager::ref().fetchDataCygnet(_data->id);
|
||||
|
||||
if(future.valid()){
|
||||
_futureObject = std::move(future);
|
||||
return true;
|
||||
}
|
||||
// if(_futureObject.valid())
|
||||
// return false;
|
||||
|
||||
// std::future<DownloadManager::MemoryFile> future = IswaManager::ref().fetchDataCygnet(_data->id);
|
||||
|
||||
// if(future.valid()){
|
||||
// _futureObject = std::move(future);
|
||||
// return true;
|
||||
// }
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -124,7 +124,6 @@ void IswaManager::addIswaCygnet(int id, std::string info, int group){
|
||||
metaFuture->geom = CygnetGeometry::Plane;
|
||||
} else if (info == _type[CygnetType::Data]) {
|
||||
metaFuture->type = CygnetType::Data;
|
||||
metaFuture->geom = CygnetGeometry::Plane;
|
||||
} else {
|
||||
LERROR("\""+ info + "\" is not a valid type");
|
||||
return;
|
||||
@@ -132,14 +131,22 @@ void IswaManager::addIswaCygnet(int id, std::string info, int group){
|
||||
|
||||
auto metadataCallback =
|
||||
[this, metaFuture](const DownloadManager::FileFuture& f){
|
||||
if(f.isFinished){
|
||||
metaFuture->isFinished;
|
||||
if(f.isFinished){
|
||||
metaFuture->isFinished;
|
||||
json j = json::parse(metaFuture->json);
|
||||
if(j["Coordinate Type"].is_null()){
|
||||
metaFuture->geom = CygnetGeometry::Sphere;
|
||||
createSphere(metaFuture);
|
||||
} else if (j["Coordinate Type"] == "Cartesian"){
|
||||
metaFuture->geom = CygnetGeometry::Plane;
|
||||
createPlane(metaFuture);
|
||||
LDEBUG("Download to memory finished");
|
||||
} else if (f.isAborted){
|
||||
LWARNING("Download to memory was aborted: " + f.errorMessage);
|
||||
}
|
||||
};
|
||||
//createPlane(metaFuture);
|
||||
LDEBUG("Download to memory finished");
|
||||
} else if (f.isAborted){
|
||||
LWARNING("Download to memory was aborted: " + f.errorMessage);
|
||||
}
|
||||
};
|
||||
|
||||
// Download metadata
|
||||
DlManager.downloadToMemory(
|
||||
@@ -331,6 +338,49 @@ std::string IswaManager::parseJSONToLuaTable(std::shared_ptr<MetadataFuture> dat
|
||||
return "";
|
||||
}
|
||||
|
||||
std::string IswaManager::jsonSphereToLuaTable(std::shared_ptr<MetadataFuture> data){
|
||||
if(data->json == "")
|
||||
return "";
|
||||
|
||||
json j = json::parse(data->json);
|
||||
j = j["metadata"];
|
||||
std::string parent = "Earth";
|
||||
std::string frame = j["coordinates"];
|
||||
std::string coordinateType = "Spherical";
|
||||
int updateTime = 240;
|
||||
|
||||
glm::vec4 spatialScale(6.371f, 6.371f, 6.371f, 6);
|
||||
|
||||
glm::vec3 max(
|
||||
j["x"]["actual_max"],
|
||||
j["y"]["actual_max"],
|
||||
j["z"]["actual_max"]
|
||||
);
|
||||
|
||||
glm::vec3 min(
|
||||
j["x"]["actual_min"],
|
||||
j["y"]["actual_min"],
|
||||
j["z"]["actual_min"]
|
||||
);
|
||||
|
||||
std::string table = "{"
|
||||
"Name = '" + data->name +"' , "
|
||||
"Parent = '" + parent + "', "
|
||||
"Renderable = {"
|
||||
"Type = '" + _type[data->type] + _geom[data->geom] + "', "
|
||||
"Id = " + std::to_string(data->id) + ", "
|
||||
"Frame = '" + frame + "' , "
|
||||
"GridMin = " + std::to_string(min) + ", "
|
||||
"GridMax = " + std::to_string(max) + ", "
|
||||
"UpdateTime = " + std::to_string(updateTime) + ", "
|
||||
"CoordinateType = '" + coordinateType + "', "
|
||||
"Group = "+ std::to_string(data->group) +
|
||||
"}"
|
||||
"}";
|
||||
|
||||
return table;
|
||||
}
|
||||
|
||||
void IswaManager::createScreenSpace(int id){
|
||||
std::string script = "openspace.iswa.addScreenSpaceCygnet("
|
||||
"{CygnetId =" + std::to_string(id) + "});";
|
||||
@@ -361,6 +411,29 @@ void IswaManager::createPlane(std::shared_ptr<MetadataFuture> data){
|
||||
}
|
||||
}
|
||||
|
||||
void IswaManager::createSphere(std::shared_ptr<MetadataFuture> data){
|
||||
// check if this sphere 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 = jsonSphereToLuaTable(data);
|
||||
if(luaTable != ""){
|
||||
std::string script = "openspace.addSceneGraphNode(" + luaTable + ");";
|
||||
OsEng.scriptEngine().queueScript(script);
|
||||
}
|
||||
}
|
||||
|
||||
void IswaManager::fillCygnetInfo(std::string jsonString){
|
||||
if(jsonString != ""){
|
||||
json j = json::parse(jsonString);
|
||||
|
||||
@@ -96,9 +96,11 @@ public:
|
||||
private:
|
||||
std::shared_ptr<MetadataFuture> downloadMetadata(int id);
|
||||
std::string parseJSONToLuaTable(std::shared_ptr<MetadataFuture> data);
|
||||
std::string jsonSphereToLuaTable(std::shared_ptr<MetadataFuture> data);
|
||||
|
||||
void createScreenSpace(int id);
|
||||
void createPlane(std::shared_ptr<MetadataFuture> data);
|
||||
void createSphere(std::shared_ptr<MetadataFuture> data);
|
||||
|
||||
void fillCygnetInfo(std::string jsonString);
|
||||
|
||||
|
||||
@@ -251,7 +251,7 @@ Histogram Histogram::equalize(){
|
||||
*/
|
||||
float Histogram::equalize(float value){
|
||||
if (value < _minBin || value > _maxBin) {
|
||||
// LWARNING("Equalized value is is not within domain of histogram: min: " + _minBin + " max: " + _maxBin + " val: " + value);
|
||||
LWARNING("Equalized value is is not within domain of histogram. min: " + std::to_string(_minBin) + " max: " + std::to_string(_maxBin) + " val: " + std::to_string(value));
|
||||
}
|
||||
float normalizedValue = (value-_minBin)/(_maxBin-_minBin);
|
||||
int bin = floor(normalizedValue * _numBins);
|
||||
|
||||
Reference in New Issue
Block a user