Merge fix

This commit is contained in:
Sebastian Piwell
2016-05-16 15:26:43 -04:00
5 changed files with 100 additions and 34 deletions
+1 -1
View File
@@ -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");
+16 -25
View File
@@ -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;
}
+80 -7
View File
@@ -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);
+2
View File
@@ -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);