added editor folder, added an object editor node
This commit is contained in:
parent
e5a9ac9da0
commit
033a60bff5
@ -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})
|
||||
|
@ -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 {
|
||||
|
28
src/editor/objecteditor.cpp
Normal file
28
src/editor/objecteditor.cpp
Normal 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
20
src/editor/objecteditor.h
Normal 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
|
@ -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);
|
||||
}
|
@ -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
|
@ -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>
|
||||
|
Loading…
x
Reference in New Issue
Block a user