mirror of
https://github.com/OpenSpace/OpenSpace.git
synced 2026-05-02 08:49:20 -05:00
Make WWT follow OpenSpace w thread, change interval for zoom and fix coordinate conversion error
This commit is contained in:
@@ -37,6 +37,7 @@
|
||||
#include <cmath> // For atan2
|
||||
|
||||
#include "skybrowsermodule_lua.inl"
|
||||
#include <windows.h> // For sleep
|
||||
|
||||
namespace {
|
||||
constexpr const openspace::properties::Property::PropertyInfo TestInfo =
|
||||
@@ -71,7 +72,7 @@ namespace openspace {
|
||||
SkybrowserModule::SkybrowserModule()
|
||||
: OpenSpaceModule(Name)
|
||||
, _testProperty(TestInfo)
|
||||
, _zoomFactor(ZoomInfo, 70.f ,0.f ,150.f)
|
||||
, _zoomFactor(ZoomInfo, 50.f ,0.1f ,70.f)
|
||||
//, _skyBrowser(nullptr)
|
||||
{
|
||||
addProperty(_testProperty);
|
||||
@@ -143,14 +144,17 @@ bool SkybrowserModule::sendMessageToWWT(const std::string& msg) {
|
||||
}
|
||||
|
||||
void SkybrowserModule::WWTfollowCamera() {
|
||||
// Get camera view direction
|
||||
const glm::dvec3 viewDirection = global::navigationHandler->camera()->viewDirectionWorldSpace();
|
||||
while (true) {
|
||||
// Get camera view direction
|
||||
const glm::dvec3 viewDirection = global::navigationHandler->camera()->viewDirectionWorldSpace();
|
||||
|
||||
// Convert to celestial coordinates
|
||||
glm::dvec2 celestCoords = convertGalacticToCelestial(viewDirection);
|
||||
std::string message = createMessageForMovingWWTCamera(celestCoords, _zoomFactor);
|
||||
|
||||
sendMessageToWWT(message);
|
||||
// Convert to celestial coordinates
|
||||
glm::dvec2 celestCoords = convertGalacticToCelestial(viewDirection);
|
||||
std::string message = createMessageForMovingWWTCamera(celestCoords, _zoomFactor);
|
||||
|
||||
sendMessageToWWT(message);
|
||||
Sleep(50);
|
||||
}
|
||||
}
|
||||
|
||||
std::string SkybrowserModule::createMessageForMovingWWTCamera(glm::dvec2 celestCoords, float fov, bool moveInstantly) const {
|
||||
@@ -182,6 +186,7 @@ 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])));
|
||||
|
||||
ra = ra > 0 ? ra : ra + (2 * glm::pi<float>());
|
||||
|
||||
return glm::dvec2(glm::degrees(ra), glm::degrees(dec));
|
||||
}
|
||||
|
||||
@@ -46,7 +46,7 @@ public:
|
||||
glm::dvec2 convertGalacticToCelestial(glm::dvec3 coords) const;
|
||||
void WWTfollowCamera();
|
||||
|
||||
std::string createMessageForMovingWWTCamera(glm::dvec2 celestCoords, float fov, bool moveInstantly = false) const;
|
||||
std::string createMessageForMovingWWTCamera(glm::dvec2 celestCoords, float fov, bool moveInstantly = true) const;
|
||||
|
||||
bool sendMessageToWWT(const std::string& msg);
|
||||
|
||||
|
||||
@@ -19,6 +19,8 @@
|
||||
#include <modules/webbrowser/include/screenspacebrowser.h>
|
||||
#include <openspace/interaction/navigationhandler.h>
|
||||
#include <openspace/util/camera.h>
|
||||
#include <thread>
|
||||
|
||||
|
||||
namespace {
|
||||
constexpr const char _loggerCat[] = "SkybrowserModule";
|
||||
@@ -31,17 +33,23 @@ namespace openspace::skybrowser::luascriptfunctions {
|
||||
ghoul::lua::checkArgumentsAndThrow(L, 0, "lua::followCamera");
|
||||
|
||||
SkybrowserModule* module = global::moduleEngine->module<SkybrowserModule>();
|
||||
module->WWTfollowCamera();
|
||||
|
||||
std::thread thread(&SkybrowserModule::WWTfollowCamera, module);
|
||||
thread.detach();
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
int moveBrowser(lua_State* L) {
|
||||
ghoul::lua::checkArgumentsAndThrow(L, 0, "lua::moveBrowser");
|
||||
|
||||
// SkybrowserModule* module = global::moduleEngine->module<SkybrowserModule>();
|
||||
// std::string test = module->createMessageForMovingWWTCamera(glm::dvec2(18, -32), 50);
|
||||
// module->sendMessageToWWT(test);
|
||||
|
||||
//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->setFaceCameraPropertyToFalse();
|
||||
browser->translate(glm::vec3(-0.8, -0.4, 0.0));
|
||||
return 1;
|
||||
|
||||
@@ -59,7 +59,7 @@ namespace {
|
||||
namespace openspace {
|
||||
|
||||
void ScreenSpaceBrowser::executeJavascript(std::string &script) const {
|
||||
LINFOC(_loggerCat, "Executing javascript " + script);
|
||||
//LINFOC(_loggerCat, "Executing javascript " + script);
|
||||
|
||||
CefRefPtr<CefFrame> frame = _browserInstance->getBrowser()->GetMainFrame();
|
||||
frame->ExecuteJavaScript(script, frame->GetURL(), 0);
|
||||
|
||||
Reference in New Issue
Block a user