From 033a60bff5b9a9def551c33b2dfa5ecebd6955a3 Mon Sep 17 00:00:00 2001 From: Anselme Date: Tue, 5 Sep 2017 18:35:34 +0200 Subject: [PATCH] added editor folder, added an object editor node --- CMakeLists.txt | 4 ++-- src/defaultkeysmap.h | 19 +++++++++++++++++-- src/editor/objecteditor.cpp | 28 ++++++++++++++++++++++++++++ src/editor/objecteditor.h | 20 ++++++++++++++++++++ src/scene/trackballcameranode.cpp | 20 -------------------- src/scene/trackballcameranode.h | 31 ------------------------------- src/test/main.cpp | 1 - 7 files changed, 67 insertions(+), 56 deletions(-) create mode 100644 src/editor/objecteditor.cpp create mode 100644 src/editor/objecteditor.h delete mode 100644 src/scene/trackballcameranode.cpp delete mode 100644 src/scene/trackballcameranode.h diff --git a/CMakeLists.txt b/CMakeLists.txt index 5c31045..5e9916d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -7,8 +7,8 @@ SET(VERSION_MINOR 0) set(EXTRA_INCLUDES ${PROJECT_SOURCE_DIR}/src) # choose source file -file(GLOB LIB_SRC_LIST src/*.cpp src/tools/*.cpp src/scene/*.cpp src/scene/gui/*.cpp src/sparrowshell/*.cpp) -file(GLOB LIB_HEAD_LIST src/*.h src/tools/*.h src/scene/*.h src/scene/gui/*.h src/sparrowshell/*.h) +file(GLOB LIB_SRC_LIST src/*.cpp src/tools/*.cpp src/scene/*.cpp src/scene/gui/*.cpp src/sparrowshell/*.cpp src/editor/*.cpp) +file(GLOB LIB_HEAD_LIST src/*.h src/tools/*.h src/scene/*.h src/scene/gui/*.h src/sparrowshell/*.h src/editor/*.h) file(GLOB EXEC_SRC_LIST src/test/*.cpp) set(RESOURCES_FILES ${LIB_HEAD_LIST}) diff --git a/src/defaultkeysmap.h b/src/defaultkeysmap.h index caed570..be6042f 100644 --- a/src/defaultkeysmap.h +++ b/src/defaultkeysmap.h @@ -6,7 +6,8 @@ class DefaultKeysMap : public IKeysMap { public: - enum{MAIN_ACTION, SECONDARY_ACTION, TERTIARY_ACTION, MOVE_FORWARD, MOVE_BACKWARD, STRAFE_LEFT, STRAFE_RIGHT, JUMP,RUN, + enum{MAIN_ACTION, SECONDARY_ACTION, TERTIARY_ACTION, MOVE_FORWARD, MOVE_BACKWARD, STRAFE_LEFT, STRAFE_RIGHT, JUMP, RUN, + MAIN_ACTION_HOLD, SECONDARY_ACTION_HOLD, TOGGLE_NOCLIP, TOGGLE_PHYSICS_DEBUG, TOGGLE_CONSOLE, MOVE_CURSOR_LEFT, MOVE_CURSOR_RIGHT, HISTORY_UP,HISTORY_DOWN, TOGGLE_MOUSE_CURSOR, LEFT_CLICK, EXIT_GAME,LAST_DEFAULT_ACTION}; @@ -20,6 +21,8 @@ public: keys.push_back( {{STRAFE_LEFT,input::KEYBOARD}, sf::Keyboard::Q, IKeysMap::HOLD} ); keys.push_back( {{STRAFE_RIGHT,input::KEYBOARD}, sf::Keyboard::D, IKeysMap::HOLD} ); keys.push_back( {{RUN,input::KEYBOARD}, sf::Keyboard::LShift,IKeysMap::HOLD} ); + keys.push_back( {{MAIN_ACTION_HOLD,input::MOUSE}, sf::Mouse::Left, IKeysMap::HOLD} ); + keys.push_back( {{SECONDARY_ACTION_HOLD,input::MOUSE}, sf::Mouse::Right, IKeysMap::HOLD} ); keys.push_back( {{JUMP,input::KEYBOARD}, sf::Keyboard::Space, IKeysMap::PRESSED} ); keys.push_back( {{TOGGLE_NOCLIP,input::KEYBOARD}, sf::Keyboard::G, IKeysMap::PRESSED} ); keys.push_back( {{TOGGLE_PHYSICS_DEBUG,input::KEYBOARD},sf::Keyboard::P, IKeysMap::PRESSED} ); @@ -52,7 +55,19 @@ public: {EXIT_GAME,input::KEYBOARD} }; } - + + static std::vector getObjectEditorContext() + { + return { + {MAIN_ACTION,input::MOUSE}, + {SECONDARY_ACTION,input::MOUSE}, + {EXIT_GAME,input::KEYBOARD}, + {MAIN_ACTION_HOLD,input::MOUSE}, + {SECONDARY_ACTION_HOLD,input::MOUSE}, + {TOGGLE_CONSOLE,input::KEYBOARD}, + }; + } + static std::vector getShellContext() { return { diff --git a/src/editor/objecteditor.cpp b/src/editor/objecteditor.cpp new file mode 100644 index 0000000..02f2162 --- /dev/null +++ b/src/editor/objecteditor.cpp @@ -0,0 +1,28 @@ +#include "objecteditor.h" + +#include "engine.h" +#include "defaultkeysmap.h" + +#include + +#include + +ObjectEditor::ObjectEditor() : + m_camera(new TrackBallCamera()) +{ + +} + +void ObjectEditor::update() +{ + Input* input = getEngine().getInput(); + glm::vec2 diff = input->getDeltaPosition(); + for(Action action : input->getActions()) + { + if(action.action == DefaultKeysMap::MAIN_ACTION_HOLD) + m_camera->moveCamera(diff.x, diff.y); + else if(action.action == DefaultKeysMap::SECONDARY_ACTION_HOLD) + m_camera->rotateCamera(diff.x, diff.y); + } + m_camera->zoom(input->getDeltaVerticalScroll()*120.f); +} diff --git a/src/editor/objecteditor.h b/src/editor/objecteditor.h new file mode 100644 index 0000000..fbc6db2 --- /dev/null +++ b/src/editor/objecteditor.h @@ -0,0 +1,20 @@ +#ifndef OBJECTEDITOR_H +#define OBJECTEDITOR_H + +#include "scene/cameranode.h" + +class TrackBallCamera; + +class ObjectEditor : public CameraNode +{ + TrackBallCamera* m_camera; + +public: + ObjectEditor(); + + Camera *getCamera() { return (Camera*)m_camera; } + + void update(); +}; + +#endif // OBJECTEDITOR_H diff --git a/src/scene/trackballcameranode.cpp b/src/scene/trackballcameranode.cpp deleted file mode 100644 index 3d4cc2b..0000000 --- a/src/scene/trackballcameranode.cpp +++ /dev/null @@ -1,20 +0,0 @@ -#include "trackballcameranode.h" - -TrackBallCameraNode::TrackBallCameraNode(Input *input) : - m_input(input), - m_action_move(NO_ACTION), - m_action_rotate(NO_ACTION) -{} - -void TrackBallCameraNode::update() -{ - glm::vec2 diff = m_input->getDeltaPosition(); - for(Action action : m_input->getActions()) - { - if(action.action == m_action_move) - moveCamera(diff.x, diff.y); - else if(action.action == m_action_rotate) - rotateCamera(diff.x, diff.y); - } - zoom(m_input->getDeltaVerticalScroll()*120.f); -} diff --git a/src/scene/trackballcameranode.h b/src/scene/trackballcameranode.h deleted file mode 100644 index fd7fffa..0000000 --- a/src/scene/trackballcameranode.h +++ /dev/null @@ -1,31 +0,0 @@ -#ifndef TRACKBALLCAMERANODE_H -#define TRACKBALLCAMERANODE_H - -#include "cameranode.h" -#include "SparrowRenderer/trackballcamera.h" -#include "SparrowInput/input.h" - -/** - * @brief The CameraNode class is a scene node that can be used by the renderer - */ -class TrackBallCameraNode : public CameraNode, public TrackBallCamera -{ - Input *m_input; - int m_action_move; - int m_action_rotate; - -public: - TrackBallCameraNode(Input *input); - - void setInputs(int action_move, int action_rotate) - { - m_action_move = action_move; - m_action_rotate = action_rotate; - } - - virtual void update(); - - virtual Camera *getCamera() { return this; } -}; - -#endif // TRACKBALLCAMERANODE_H diff --git a/src/test/main.cpp b/src/test/main.cpp index 252776e..d678564 100644 --- a/src/test/main.cpp +++ b/src/test/main.cpp @@ -13,7 +13,6 @@ #include #include -#include #include #include #include