Change structure of message passing to WWT to more general case with functions

This commit is contained in:
Ylva Selling
2021-03-03 11:36:23 +01:00
parent 8eadcafce3
commit df5719f39f
4 changed files with 54 additions and 23 deletions
-1
View File
@@ -1,4 +1,3 @@
set(DEFAULT_MODULE ON)
set(OPENSPACE_DEPENDENCIES
webbrowser
)
+37 -14
View File
@@ -23,15 +23,13 @@
****************************************************************************************/
#include <modules/skybrowser/skybrowsermodule.h>
//#include <modules/webbrowser/webbrowsermodule.h>
//#include <modules/webbrowser/include/screenspacebrowser.h>
#include <openspace/engine/moduleengine.h>
#include <openspace/engine/globals.h>
#include <openspace/engine/globalscallbacks.h>
#include <openspace/interaction/navigationhandler.h>
#include <openspace/rendering/renderengine.h>
#include <openspace/scene/scenegraphnode.h>
//#include <openspace/scene/scenegraphnode.h>
#include <openspace/scene/scene.h>
#include <openspace/util/factorymanager.h>
#include <thread>
@@ -40,7 +38,6 @@
#include "skybrowsermodule_lua.inl"
namespace {
constexpr const openspace::properties::Property::PropertyInfo TestInfo =
{
@@ -75,6 +72,7 @@ SkybrowserModule::SkybrowserModule()
: OpenSpaceModule(Name)
, _testProperty(TestInfo)
, _zoomFactor(ZoomInfo, 70.f ,0.f ,150.f)
//, _skyBrowser(nullptr)
{
addProperty(_testProperty);
addProperty(_zoomFactor);
@@ -130,20 +128,46 @@ void SkybrowserModule::internalInitialize(const ghoul::Dictionary& dict) {
*/
}
void SkybrowserModule::WWTfollowCamera() const {
bool SkybrowserModule::sendMessageToWWT(const std::string& msg) {
ScreenSpaceBrowser* browser = dynamic_cast<ScreenSpaceBrowser*>(global::renderEngine->screenSpaceRenderable("ScreenSpaceBowser"));
if (browser) {
std::string script = "sendMessageToWWT(" + msg + ");";
browser->executeJavascript(script);
return true;
}
else {
LERROR("No sky browser added! Can't send message.");
return false;
}
}
void SkybrowserModule::WWTfollowCamera() {
// Get camera view direction
const glm::dvec3 viewDirection = global::navigationHandler->camera()->viewDirectionWorldSpace();
// Convert to celestial coordinates
const SkybrowserModule* module = global::moduleEngine->module<SkybrowserModule>();
glm::dvec2 celestCoords = module->convertGalacticToCelestial(viewDirection);
// Execute javascript on browser
ScreenSpaceBrowser* browser = dynamic_cast<ScreenSpaceBrowser*>(global::renderEngine->screenSpaceRenderable("ScreenSpaceBowser"));
std::string script = "window.frames[0].postMessage({event: 'center_on_coordinates', ra : Number(" + std::to_string(celestCoords[0]) + "), dec : Number(" + std::to_string(celestCoords[1]) + "), fov : Number(" + std::to_string(_zoomFactor) + "), instant : false})";
browser->executeJavascript(script);
glm::dvec2 celestCoords = convertGalacticToCelestial(viewDirection);
std::string message = createMessageForMovingWWTCamera(celestCoords, _zoomFactor);
sendMessageToWWT(message);
}
std::string SkybrowserModule::createMessageForMovingWWTCamera(glm::dvec2 celestCoords, float fov, bool moveInstantly) const {
std::string moveInstString = moveInstantly ? "true" : "false";
std::string script = "{ event: 'center_on_coordinates' , ra: " + std::to_string(celestCoords[0]) + ", dec : " + std::to_string(celestCoords[1]) + ", fov: " + std::to_string(_zoomFactor) + ", instant: " + moveInstString +"}";
return script;
}
/*
void SkybrowserModule::initializeBrowser(ScreenSpaceBrowser* skyBrowser) {
_skyBrowser = skyBrowser;
}
ScreenSpaceBrowser* SkybrowserModule::skyBrowser() {
return _skyBrowser;
}
*/
glm::dvec2 SkybrowserModule::convertGalacticToCelestial(glm::dvec3 rGal) const {
// Used the math from this website: https://gea.esac.esa.int/archive/documentation/GD -->
@@ -158,7 +182,6 @@ glm::dvec2 SkybrowserModule::convertGalacticToCelestial(glm::dvec3 rGal) const {
float ra = atan2(rICRS[1], rICRS[0]);
float dec = atan2(rICRS[2], glm::sqrt((rICRS[0] * rICRS[0]) + (rICRS[1] * rICRS[1])));
std::cout << glm::degrees(dec) << std::endl;
return glm::dvec2(glm::degrees(ra), glm::degrees(dec));
}
+8 -5
View File
@@ -28,14 +28,11 @@
#include <openspace/util/openspacemodule.h>
#include <openspace/documentation/documentation.h>
#include <openspace/properties/scalar/boolproperty.h>
#include <openspace/properties/scalar/floatproperty.h>
#include <openspace/properties/stringproperty.h>
namespace openspace {
class SkybrowserModule : public OpenSpaceModule {
@@ -47,8 +44,14 @@ public:
float zoomFactor() const;
glm::dvec2 convertGalacticToCelestial(glm::dvec3 coords) const;
void WWTfollowCamera() const;
void WWTfollowCamera();
std::string createMessageForMovingWWTCamera(glm::dvec2 celestCoords, float fov, bool moveInstantly = false) const;
bool sendMessageToWWT(const std::string& msg);
//void initializeBrowser(ScreenSpaceBrowser* skyBrowser_);
//ScreenSpaceBrowser* skyBrowser();
scripting::LuaLibrary luaLibrary() const override;
//std::vector<documentation::Documentation> documentations() const override;
@@ -57,7 +60,7 @@ protected:
properties::StringProperty _testProperty;
properties::FloatProperty _zoomFactor;
//ScreenSpaceBrowser* _skyBrowser;
};
} // namespace openspace
+9 -3
View File
@@ -30,7 +30,7 @@ namespace openspace::skybrowser::luascriptfunctions {
int followCamera(lua_State* L) {
ghoul::lua::checkArgumentsAndThrow(L, 0, "lua::followCamera");
const SkybrowserModule* module = global::moduleEngine->module<SkybrowserModule>();
SkybrowserModule* module = global::moduleEngine->module<SkybrowserModule>();
module->WWTfollowCamera();
return 1;
@@ -38,6 +38,9 @@ namespace openspace::skybrowser::luascriptfunctions {
int moveBrowser(lua_State* L) {
ghoul::lua::checkArgumentsAndThrow(L, 0, "lua::moveBrowser");
//SkybrowserModule* module = global::moduleEngine->module<SkybrowserModule>();
// module->skyBrowser()->translate(glm::vec3(-0.8, -0.4, 0.0));
ScreenSpaceBrowser* browser = dynamic_cast<ScreenSpaceBrowser*>(global::renderEngine->screenSpaceRenderable("ScreenSpaceBowser"));
browser->translate(glm::vec3(-0.8, -0.4, 0.0));
return 1;
@@ -47,7 +50,7 @@ namespace openspace::skybrowser::luascriptfunctions {
ghoul::lua::checkArgumentsAndThrow(L, 1, "lua::createBrowser");
ghoul::lua::value<std::string>(L, 1);
const SkybrowserModule* module = global::moduleEngine->module<SkybrowserModule>();
SkybrowserModule* module = global::moduleEngine->module<SkybrowserModule>();
//std::string _url = "https://wallpaperaccess.com/full/3010132.jpg";
// 'https://cdn.wallpapersafari.com/6/92/0nbCPw.jpg'
@@ -58,13 +61,16 @@ namespace openspace::skybrowser::luascriptfunctions {
node.setValue("Type", "ScreenSpaceBrowser"s);
node.setValue("Identifier", "ScreenSpaceBowser"s);
node.setValue("Name", "Screen Space Bowser"s);
node.setValue("Url", "http://localhost:7800/sky_browser/index.html"s);
node.setValue("Url", "http://localhost:8000/index.html"s);
// node.setValue("Dimensions", "glm::ivec2(1000, 1000)");
openspace::global::scriptEngine->queueScript(
"openspace.addScreenSpaceRenderable(" + ghoul::formatLua(node) + ")",
scripting::ScriptEngine::RemoteScripting::Yes
);
ScreenSpaceBrowser* browser = dynamic_cast<ScreenSpaceBrowser*>(global::renderEngine->screenSpaceRenderable("ScreenSpaceBowser"));
// module->initializeBrowser(browser);
return 1;
}