added editor folder, added an object editor node

This commit is contained in:
Anselme 2017-09-05 18:35:34 +02:00
parent e5a9ac9da0
commit 033a60bff5
7 changed files with 67 additions and 56 deletions

View File

@ -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})

View File

@ -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<Action> 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<Action> getShellContext()
{
return {

View File

@ -0,0 +1,28 @@
#include "objecteditor.h"
#include "engine.h"
#include "defaultkeysmap.h"
#include <SparrowInput/input.h>
#include <SparrowRenderer/trackballcamera.h>
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);
}

20
src/editor/objecteditor.h Normal file
View File

@ -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

View File

@ -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);
}

View File

@ -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

View File

@ -13,7 +13,6 @@
#include <scene/scenetree.h>
#include <scene/textnode.h>
#include <scene/trackballcameranode.h>
#include <scene/playercharacternode.h>
#include <scene/lightnode.h>
#include <scene/graphicalcontainernode.h>