Files
OpenSpace/GUI.diff
2014-12-06 00:32:17 +01:00

106 lines
3.5 KiB
Diff

diff --git a/include/openspace/rendering/renderengine.h b/include/openspace/rendering/renderengine.h
index c3d8c9e..8f70641 100644
--- a/include/openspace/rendering/renderengine.h
+++ b/include/openspace/rendering/renderengine.h
@@ -36,6 +36,7 @@ class SceneGraph;
class ABuffer;
class ABufferVisualizer;
class ScreenLog;
+class GUI;
class RenderEngine {
public:
@@ -78,6 +79,7 @@ private:
SceneGraph* _sceneGraph;
ABuffer* _abuffer;
ScreenLog* _log;
+ GUI* _gui;
bool _showInfo;
bool _showScreenLog;
diff --git a/scripts/bind_keys.lua b/scripts/bind_keys.lua
index a0f9442..08a3254 100644
--- a/scripts/bind_keys.lua
+++ b/scripts/bind_keys.lua
@@ -17,5 +17,6 @@ openspace.bindKey("f5", "loadKeyBindings()")
openspace.bindKey("U", "openspace.distance(-interaction_speed * openspace.dt(), 13.0)")
openspace.bindKey("J", "openspace.distance(interaction_speed * openspace.dt(), 13.0)")
+openspace.bindKey("K", "openspace.distance(interaction_speed * openspace.dt(), 20.0)")
openspace.bindKey("PRINT_SCREEN", "openspace.takeScreenshot()")
\ No newline at end of file
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 0dc32c8..4be7f7a 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -130,6 +130,11 @@ source_group(Interface FILES ${INTERFACE_SOURCE} ${INTERFACE_HEADER})
include_directories(${HEADER_ROOT_DIR})
include_directories(${GHOUL_ROOT_DIR}/ext/boost)
+include_directories(${CMAKE_SOURCE_DIR}/ext/imgui)
+set(OPENSPACE_HEADER ${OPENSPACE_HEADER} ${CMAKE_SOURCE_DIR}/ext/imgui/imgui.h)
+set(OPENSPACE_SOURCE ${OPENSPACE_SOURCE} ${CMAKE_SOURCE_DIR}/ext/imgui/imgui.cpp)
+source_group(ext\\imgui FILES ${CMAKE_SOURCE_DIR}/ext/imgui/imgui.h ${CMAKE_SOURCE_DIR}/ext/imgui/imgui.cpp)
+
if (APPLE)
add_definitions(-D__APPLE__)
set(CMAKE_CXX_FLAGS "-std=c++11 -stdlib=libc++ ${CMAKE_CXX_FLAGS}")
diff --git a/src/rendering/renderengine.cpp b/src/rendering/renderengine.cpp
index 9317b0e..93735eb 100644
--- a/src/rendering/renderengine.cpp
+++ b/src/rendering/renderengine.cpp
@@ -30,6 +30,7 @@
#include <openspace/abuffer/abufferSingleLinked.h>
#include <openspace/abuffer/abufferfixed.h>
#include <openspace/abuffer/abufferdynamic.h>
+#include <openspace/engine/gui.h>
#include <openspace/engine/openspaceengine.h>
#include <openspace/scenegraph/scenegraph.h>
#include <openspace/util/camera.h>
@@ -38,7 +39,6 @@
#include <openspace/util/screenlog.h>
#include <openspace/util/spicemanager.h>
#include <openspace/util/syncbuffer.h>
-
#include <ghoul/filesystem/filesystem.h>
#include <ghoul/lua/lua_helper.h>
@@ -111,6 +111,7 @@ RenderEngine::RenderEngine()
, _sceneGraph(nullptr)
, _abuffer(nullptr)
, _log(nullptr)
+ , _gui(nullptr)
, _showInfo(true)
, _showScreenLog(true)
, _takeScreenshot(false)
@@ -241,6 +242,11 @@ bool RenderEngine::initializeGL()
_visualizer = new ABufferVisualizer();
+ int x,y;
+ sgct::Engine::instance()->getActiveViewportSize(x, y);
+ _gui = new GUI(glm::vec2(glm::ivec2(x,y)));
+ _gui->initializeGL();
+
// successful init
return true;
}
@@ -330,6 +336,16 @@ void RenderEngine::render()
else {
_visualizer->render();
}
+
+ double posX, posY;
+ sgct::Engine::instance()->getMousePos(0, &posX, &posY);
+
+ int button0 = sgct::Engine::instance()->getMouseButton(0, 0);
+ int button1 = sgct::Engine::instance()->getMouseButton(0, 1);
+ bool buttons[2] = { button0 != 0, button1 != 0 };
+
+ double dt = std::max(sgct::Engine::instance()->getDt(), 1.0/60.0);
+ _gui->render(dt, glm::vec2(posX, posY), buttons);
#if 1