mapped F3 to ToggleConsole

This commit is contained in:
Lendemor 2016-12-07 12:25:16 +01:00
parent 01e901a0c8
commit 04695941de
8 changed files with 100 additions and 29 deletions

View File

@ -67,6 +67,7 @@ void Engine::update()
m_timeStamp = (unsigned int) m_clock->getElapsedTime().asMilliseconds();
// update Events
m_input->updateEvents();
// update Scene
m_scene->update();
// update Physics
@ -108,7 +109,7 @@ void Engine::setScene(SceneTree *scene)
m_scene = scene;
m_renderer->setScene(m_scene);
m_renderer->resizeGL(m_window->getSize().x, m_window->getSize().y);
m_sparrowshell->setScene(scene);
m_sparrowshell->setSceneTree(scene);
scene->addObject(scene->getRootObject(), m_sparrowshell);
}

View File

@ -10,3 +10,12 @@ void MeshNode::setSceneTree(SceneTree *tree){
SceneNode::setSceneTree(tree);
tree->addToIndex(this);
}
void MeshNode::toggleVisibility(){
m_visible = !m_visible;
if(m_visible){
m_scene->addToIndex(this);
}else{
m_scene->removeFromIndex(this);
}
}

View File

@ -12,6 +12,7 @@
class MeshNode : public SceneNode
{
GeometryNode geometry;
bool m_visible;
public:
// temp
glm::mat4 m_movement;
@ -31,6 +32,8 @@ public:
const glm::mat4& getTransform() { return geometry.modelMatrix; }
void setDepth(float depth);
void toggleVisibility();
GeometryNode* getGeometryNode() { return &geometry; }
};

View File

@ -10,10 +10,12 @@ class SceneNode
public:
SceneNode* m_parent;
SceneTree* m_scene;
// bool m_enabled;
virtual void update() = 0;
virtual Light* getLight() {return nullptr;}
virtual GeometryNode* getGeometryNode() {return nullptr;}
virtual void setSceneTree(SceneTree* tree){m_scene = tree;}
// virtual void toggleNode(){m_enabled = !m_enabled;}
};
#endif // SCENENODE_H

View File

@ -62,49 +62,79 @@ void SparrowShell::scrollDown(){
}
}
void SparrowShell::update()
{
//Font *shellfont = RESOURCE_GET(Font,"shellfont");
void SparrowShell::toggleShell(){
m_shellEnabled = !m_shellEnabled;
// if (m_shellEnabled){
// for(unsigned int i = 0;i<m_buffer.size();i++)
// m_scene->addToIndex(m_buffer[i]);
// }else{
// for(unsigned int i = 0;i<m_buffer.size();i++)
// m_scene->removeFromIndex(m_buffer[i]);
// }
for(auto child : m_children){
MeshNode* meshchild = dynamic_cast<MeshNode*>(child);
if(meshchild)
meshchild->toggleVisibility();
}
m_buffer.toggleBuffer();
m_background->toggleVisibility();
}
void SparrowShell::update(){
TextNode* tnode;
glm::vec2 text_pos(0);
// if(m_indexMoved){
// unsigned int count_stop = m_buffer.size() > BUFFER_DISPLAYED_NUMBER ? m_index + BUFFER_DISPLAYED_NUMBER: m_buffer.size();
//move position of shellBuffer
// position textnode inside shellBuffer
for(unsigned int i = 0; i<m_buffer.size(); i++){
tnode = (TextNode*)m_buffer[i];
if (i >= m_index && i < m_index + BUFFER_DISPLAYED_NUMBER){
utils::setPosition2D(tnode,text_pos);
text_pos.y += m_buffer.getFontSize();
m_currentScene->addToIndex(tnode);
// m_currentScene->addObject(this,mnode);
for(auto action : m_input->getActions()){
if(action == 15){
toggleShell();
}
}
//move position of shellBuffer
// position textnode inside shellBuffer
if(m_shellEnabled){
for(unsigned int i = 0; i<m_buffer.size(); i++){
tnode = (TextNode*)m_buffer[i];
if (i >= m_index && i < m_index + BUFFER_DISPLAYED_NUMBER){
utils::setPosition2D(tnode,text_pos);
text_pos.y += m_buffer.getFontSize();
m_scene->addToIndex(tnode);
}
}
}
// m_indexMoved = false;
// }
m_scrollbar.update();
}
void SparrowShell::ShellBuffer::toggleBuffer(){
for(auto child : m_children){
MeshNode* meshchild = dynamic_cast<MeshNode*>(child);
if(meshchild)
meshchild->toggleVisibility();
}
}
void SparrowShell::ShellBuffer::push(TextNode* s){
if (m_children.size() >= m_max_size){
m_children[m_zero_offset++] = s;
m_zero_offset %= m_max_size;
}
else
}else
m_children.push_back(s);
}
SparrowShell::ScrollBar::ScrollBar(SparrowShell* shell):m_shell(shell){
m_position = glm::ivec2(m_shell->m_dimension.x - SparrowShell::SCROLLBAR_PIXEL_WIDTH,0);
m_dimension = glm::ivec2(SparrowShell::SCROLLBAR_PIXEL_WIDTH,m_shell->m_dimension.y);
Mesh* mesh = new Mesh();
mesh->addRectangle2D(glm::vec2(0),m_dimension);
PhongMaterial *mat = new PhongMaterial();
mat->diffuse = glm::vec3(0,0,0.5);
mesh->setDepth(SHELL_DEPTH+1);
mesh->setMaterial(mat);
mesh->initGL();
m_mesh = new MeshNode(mesh);
utils::setPosition2D(m_mesh,m_position);
m_shell->addChild(m_mesh);

View File

@ -23,7 +23,6 @@ private:
glm::ivec2 m_position;
glm::ivec2 m_dimension;
MeshNode *m_mesh;
//TODO : Add rectangle mesh
public:
ScrollBar(){}
ScrollBar(SparrowShell* shell);
@ -40,6 +39,7 @@ private:
SceneNode* operator[](int i){return m_children[(m_zero_offset+i)%m_max_size];}
void push(TextNode*);
unsigned int size(){return m_children.size();}
void toggleBuffer();
// if this font_size is scaling down, sizes which are power of 2 render better.
void setFontSize(float font_size){m_font_size = font_size;}
@ -53,7 +53,6 @@ private:
sf::Window* m_window;
Input* m_input;
SceneTree* m_currentScene;
glm::ivec2 m_position;
glm::ivec2 m_dimension;
@ -61,7 +60,7 @@ private:
unsigned int m_index = 0;
bool m_resizeScrollBar = false;
bool m_indexMoved = false;
bool m_shellEnabled = false;
//textMesh
MeshNode* m_background;
ScrollBar m_scrollbar;
@ -70,10 +69,12 @@ public:
SparrowShell(sf::Window*, Input*);
void update();
void setScene(SceneTree *scene){m_currentScene = scene;}
// void setScene(SceneTree *scene){m_currentScene = scene;}
void scrollUp();
void scrollDown();
void toggleShell();
void out(std::string);
};

View File

@ -19,10 +19,10 @@ void InputSystem::initInput(sf::Window *window){
}
void InputSystem::update(){
int action;
Message* message;
while ((action = m_input->getAction()) != NO_ACTION){
message = new Message(std::to_string(action),SystemType::INPUT_SYSTEM);
m_msgBus->postMessage(message);
}
// int action;
// Message* message;
// while ((action = m_input->getAction()) != NO_ACTION){
// message = new Message(std::to_string(action),SystemType::INPUT_SYSTEM);
// m_msgBus->postMessage(message);
// }
}

View File

@ -19,6 +19,21 @@
#include <sparrowshell.h>
class myKeysMap : public IKeysMap{
public:
enum{TOGGLE_CONSOLE = 15};
myKeysMap(){
Binding b;
b.action = TOGGLE_CONSOLE;
b.key = sf::Keyboard::F3;
b.type = IKeysMap::PRESSED;
keys.push_back(b);
}
};
int main(){
Engine engine;
@ -94,6 +109,16 @@ int main(){
engine.outputShell(std::to_string(i));
}
Input* input = engine.getInput();
std::vector<int> v = {myKeysMap::TOGGLE_CONSOLE};
input->addContext(Context("default",v));
IKeysMap km = myKeysMap();
input->setKeysMap(km);
input->setCurrentContext("default");
input->updateKeyBindings();
engine.start();
/* GraphNode n1 = GraphNode();