toggle working for textnode (TODO: check relative positioning)
This commit is contained in:
parent
c105feeee9
commit
2c451a8892
@ -96,8 +96,8 @@ void Engine::update()
|
|||||||
void Engine::start()
|
void Engine::start()
|
||||||
{
|
{
|
||||||
m_running = true;
|
m_running = true;
|
||||||
for(int i = 0;i<5;i++)
|
// for(int i = 0;i<5;i++)
|
||||||
m_sparrowshell->scrollUp();
|
// m_sparrowshell->scrollUp();
|
||||||
while(!m_input->isCloseRequested() && m_running)
|
while(!m_input->isCloseRequested() && m_running)
|
||||||
update();
|
update();
|
||||||
}
|
}
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
#define GRAPHICALCONTAINERNODE_H
|
#define GRAPHICALCONTAINERNODE_H
|
||||||
|
|
||||||
#include "graphicalnode.h"
|
#include "graphicalnode.h"
|
||||||
|
#include "glm/vec2.hpp"
|
||||||
#include "glm/mat4x4.hpp"
|
#include "glm/mat4x4.hpp"
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
|
@ -46,6 +46,31 @@ void GraphicalNode::scale(const glm::vec3 &scaleFactor)
|
|||||||
m_transformChanged = true;
|
m_transformChanged = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void GraphicalNode::moveTo2D(const glm::vec2 &position)
|
||||||
|
{
|
||||||
|
setTransform(glm::translate(m_transform,glm::vec3(position.x,position.y,0) - glm::vec3(m_transform[3])));
|
||||||
|
}
|
||||||
|
|
||||||
|
void GraphicalNode::resize2D(const glm::vec2 oldDimension, glm::vec2 newDimension)
|
||||||
|
{
|
||||||
|
scale2D(glm::vec2(newDimension / oldDimension));
|
||||||
|
}
|
||||||
|
|
||||||
|
void GraphicalNode::scale2D(const glm::vec2 scaleFactor)
|
||||||
|
{
|
||||||
|
setTransform(glm::scale(m_transform, glm::vec3(scaleFactor.x,scaleFactor.y,1)));
|
||||||
|
}
|
||||||
|
|
||||||
|
void GraphicalNode::rotate2D(const glm::vec2 ¢er, float angle)
|
||||||
|
{
|
||||||
|
setTransform(glm::rotate(m_transform,angle,glm::vec3(0,0,1)));
|
||||||
|
}
|
||||||
|
|
||||||
|
void GraphicalNode::setDepth2D(float depth)
|
||||||
|
{
|
||||||
|
// don't have access to depth here? :(
|
||||||
|
}
|
||||||
|
|
||||||
// setters
|
// setters
|
||||||
void GraphicalNode::setTransform(const glm::mat4 &transform)
|
void GraphicalNode::setTransform(const glm::mat4 &transform)
|
||||||
{
|
{
|
||||||
|
@ -66,6 +66,13 @@ public:
|
|||||||
void rotate(float angle, const glm::vec3 &vector);
|
void rotate(float angle, const glm::vec3 &vector);
|
||||||
void scale(const glm::vec3 &scaleFactor);
|
void scale(const glm::vec3 &scaleFactor);
|
||||||
|
|
||||||
|
//2D tools:
|
||||||
|
void moveTo2D(const glm::vec2 &position);
|
||||||
|
void rotate2D(const glm::vec2 ¢er, float angle);
|
||||||
|
void scale2D(const glm::vec2 scaleFactor);
|
||||||
|
void resize2D(const glm::vec2 oldDimension, glm::vec2 newDimension);
|
||||||
|
void setDepth2D(float depth);
|
||||||
|
|
||||||
// this is used to synchronize a bullet rigidbody's transform with a GraphicalNode transform
|
// this is used to synchronize a bullet rigidbody's transform with a GraphicalNode transform
|
||||||
SparrowMotionState* getMotionState() { return &m_motionState; }
|
SparrowMotionState* getMotionState() { return &m_motionState; }
|
||||||
};
|
};
|
||||||
|
@ -13,34 +13,39 @@ void ShellBuffer::toggleBuffer(){
|
|||||||
void ShellBuffer::update()
|
void ShellBuffer::update()
|
||||||
{
|
{
|
||||||
TextNode* tnode;
|
TextNode* tnode;
|
||||||
glm::vec2 text_pos(0);
|
glm::vec2 text_pos(0,0);
|
||||||
|
|
||||||
// std::cout << m_children.size() << std::endl;
|
SparrowShell* shell = dynamic_cast<SparrowShell*>(m_parent);
|
||||||
|
if(shell->isEnabled())
|
||||||
// if (m_parent){
|
{
|
||||||
// SparrowShell* shell = dynamic_cast<SparrowShell*>(m_parent);
|
for(unsigned int i = 0; i< size();i++)
|
||||||
// if(shell && shell->isEnabled())
|
{
|
||||||
// {
|
tnode = (TextNode*) (*this)[i];
|
||||||
// for(unsigned int i = 0; i< size();i++)
|
if (i >= m_index && i < m_index+SparrowShell::BUFFER_DISPLAYED_NUMBER)
|
||||||
// {
|
{
|
||||||
// tnode = (TextNode*) (*this)[i];
|
tnode->moveTo2D(text_pos);
|
||||||
// std::cout << tnode->getString() << std::endl;
|
text_pos.y += m_font_size;
|
||||||
// if (i >= m_index && i < m_index+SparrowShell::BUFFER_DISPLAYED_NUMBER)
|
// std::cout << tnode->getString() << ": " << text_pos.x << " " << text_pos.y << std::endl;
|
||||||
// {
|
}
|
||||||
// tnode->moveTo(glm::vec3(text_pos,0));
|
else
|
||||||
// text_pos.y += m_font_size;
|
tnode->moveTo2D(glm::vec2(-100,-100));
|
||||||
// }
|
}
|
||||||
// else
|
}
|
||||||
// tnode->moveTo(glm::vec3(-100,-100,0));
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void ShellBuffer::push(TextNode* s){
|
void ShellBuffer::push(TextNode* tnode){
|
||||||
|
if(tnode != nullptr)
|
||||||
|
{
|
||||||
|
if(m_scene != nullptr)
|
||||||
|
tnode->setSceneTree(m_scene);
|
||||||
|
|
||||||
if (m_children.size() >= m_max_size){
|
if (m_children.size() >= m_max_size){
|
||||||
m_children[m_zero_offset++] = s;
|
m_children[m_zero_offset++] = tnode;
|
||||||
m_zero_offset %= m_max_size;
|
m_zero_offset %= m_max_size;
|
||||||
}else
|
}else
|
||||||
m_children.push_back(s);
|
m_children.push_back(tnode);
|
||||||
|
tnode->m_parent = this;
|
||||||
|
tnode->setParentTransform(m_transform);
|
||||||
|
tnode->setParentVisible(isVisible());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
|
|
||||||
#include "scene/graphicalcontainernode.h"
|
#include "scene/graphicalcontainernode.h"
|
||||||
|
|
||||||
|
|
||||||
class TextNode;
|
class TextNode;
|
||||||
|
|
||||||
class ShellBuffer : public GraphicalContainerNode {
|
class ShellBuffer : public GraphicalContainerNode {
|
||||||
@ -12,7 +13,10 @@ private:
|
|||||||
float m_font_size;
|
float m_font_size;
|
||||||
unsigned int m_index = 0;
|
unsigned int m_index = 0;
|
||||||
public:
|
public:
|
||||||
ShellBuffer(int buffer_size):m_max_size(buffer_size), m_zero_offset(0),m_font_size(16.f){m_visible = false;}
|
ShellBuffer(int buffer_size):m_max_size(buffer_size), m_zero_offset(0),m_font_size(16.f){
|
||||||
|
m_visible = false;
|
||||||
|
moveTo2D(glm::vec2(0,0));
|
||||||
|
}
|
||||||
GraphicalNode* operator[](int i){return m_children[(m_zero_offset+i)%m_max_size];}
|
GraphicalNode* operator[](int i){return m_children[(m_zero_offset+i)%m_max_size];}
|
||||||
void push(TextNode*);
|
void push(TextNode*);
|
||||||
unsigned int size(){return m_children.size();}
|
unsigned int size(){return m_children.size();}
|
||||||
|
@ -20,13 +20,15 @@ const float SparrowShell::SHELL_DEPTH = 10;
|
|||||||
SparrowShell::SparrowShell(sf::Window* window, Input* input):
|
SparrowShell::SparrowShell(sf::Window* window, Input* input):
|
||||||
m_window(window),
|
m_window(window),
|
||||||
m_input(input),
|
m_input(input),
|
||||||
m_position(glm::ivec2(0,0)),
|
m_position(glm::ivec2(10,0)),
|
||||||
m_buffer(new ShellBuffer(BUFFER_MAX_LENGTH))
|
m_buffer(new ShellBuffer(BUFFER_MAX_LENGTH))
|
||||||
{
|
{
|
||||||
sf::Vector2u size = m_window->getSize();
|
sf::Vector2u size = m_window->getSize();
|
||||||
m_dimension = glm::ivec2(size.x,size.y/2);
|
m_dimension = glm::ivec2(size.x,size.y/2);
|
||||||
m_buffer->setFontSize(16.f);
|
m_buffer->setFontSize(16.f);
|
||||||
|
|
||||||
|
moveTo2D(glm::vec2(m_position));
|
||||||
|
|
||||||
Font* fonte_des_neiges = Loader::loadFont("../data/consolas.fnt","../data/consolas.png");
|
Font* fonte_des_neiges = Loader::loadFont("../data/consolas.fnt","../data/consolas.png");
|
||||||
RESOURCE_ADD(fonte_des_neiges,Font,"shellfont");
|
RESOURCE_ADD(fonte_des_neiges,Font,"shellfont");
|
||||||
|
|
||||||
@ -66,10 +68,8 @@ void SparrowShell::out(std::string s)
|
|||||||
TextNode* tnode = shellfont->getTextNode(s,glm::vec3(0.7,1,0.3),m_buffer->getFontSize(),false);
|
TextNode* tnode = shellfont->getTextNode(s,glm::vec3(0.7,1,0.3),m_buffer->getFontSize(),false);
|
||||||
tnode->setDepth(SHELL_DEPTH+1);
|
tnode->setDepth(SHELL_DEPTH+1);
|
||||||
m_buffer->push(tnode);
|
m_buffer->push(tnode);
|
||||||
// if(m_shellEnabled)
|
if (m_buffer->size() > SparrowShell::BUFFER_DISPLAYED_NUMBER)
|
||||||
// m_scene->addToIndex(tnode);
|
m_resizeBuffer = true;
|
||||||
// if (m_buffer->size() > SparrowShell::BUFFER_DISPLAYED_NUMBER)
|
|
||||||
// m_resizeBuffer = true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void SparrowShell::scrollUp(){
|
void SparrowShell::scrollUp(){
|
||||||
|
@ -165,15 +165,15 @@ int main(){
|
|||||||
scene->getRootObject()->addChild(sunLight);
|
scene->getRootObject()->addChild(sunLight);
|
||||||
|
|
||||||
// terrain
|
// terrain
|
||||||
generateTerrain(scene, engine.getPhysics());
|
// generateTerrain(scene, engine.getPhysics());
|
||||||
|
|
||||||
// shell output tests
|
// shell output tests
|
||||||
engine.outputShell("Hello World!");
|
engine.outputShell("Hello World!");
|
||||||
engine.outputShell("Starting test :");
|
engine.outputShell("Starting test :");
|
||||||
|
|
||||||
for(int i = 0; i < 17; i++){
|
// for(int i = 0; i < 17; i++){
|
||||||
engine.outputShell(std::to_string(i));
|
// engine.outputShell(std::to_string(i));
|
||||||
}
|
// }
|
||||||
|
|
||||||
// preparing shaders and launching the engine
|
// preparing shaders and launching the engine
|
||||||
scene->updateShaders();
|
scene->updateShaders();
|
||||||
|
@ -14,14 +14,10 @@ std::vector<std::string> utils::split(const std::string &line, char sep){
|
|||||||
tokens.push_back(line.substr(start));
|
tokens.push_back(line.substr(start));
|
||||||
return tokens;
|
return tokens;
|
||||||
}
|
}
|
||||||
|
/*
|
||||||
void utils::setPosition2D(MeshNode *mnode, glm::vec2 pos){
|
void utils::setPosition2D(MeshNode *mnode, glm::vec2 pos){
|
||||||
const glm::mat4 &tr = mnode->getTransform();
|
const glm::mat4 &tr = mnode->getTransform();
|
||||||
//mnode->moveTo(pos)
|
|
||||||
// glm::vec3 v1(pos.x,pos.y,0);
|
|
||||||
// glm::vec3 v2(tr[3]);
|
|
||||||
mnode->setTransform(glm::translate(tr,glm::vec3(pos.x,pos.y,0) - glm::vec3(tr[3])));
|
mnode->setTransform(glm::translate(tr,glm::vec3(pos.x,pos.y,0) - glm::vec3(tr[3])));
|
||||||
// mnode->setTransform(glm::translate(tr,v1 - v2));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void utils::resize2D(MeshNode *mnode, glm::vec2 dim, glm::vec2 new_dim){
|
void utils::resize2D(MeshNode *mnode, glm::vec2 dim, glm::vec2 new_dim){
|
||||||
@ -45,3 +41,4 @@ void setDepth2D(MeshNode* mnode, float depth){
|
|||||||
//Mesh* mesh; //= getMesh here
|
//Mesh* mesh; //= getMesh here
|
||||||
//mesh.setDepth(depth);
|
//mesh.setDepth(depth);
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
@ -10,11 +10,11 @@ class MeshNode;
|
|||||||
namespace utils
|
namespace utils
|
||||||
{
|
{
|
||||||
std::vector<std::string> split(const std::string &line, char sep);
|
std::vector<std::string> split(const std::string &line, char sep);
|
||||||
void setPosition2D(MeshNode*, glm::vec2);
|
//void setPosition2D(MeshNode*, glm::vec2);
|
||||||
void resize2D(MeshNode*, glm::vec2, glm::vec2);
|
//void resize2D(MeshNode*, glm::vec2, glm::vec2);
|
||||||
void scale2D(MeshNode*, glm::vec2);
|
//void scale2D(MeshNode*, glm::vec2);
|
||||||
void rotate2D(MeshNode* mnode, glm::vec2 center, float angle);
|
//void rotate2D(MeshNode* mnode, glm::vec2 center, float angle);
|
||||||
void setDepth2D(MeshNode* mnode, float depth);
|
//void setDepth2D(MeshNode* mnode, float depth);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif // UTILS_H
|
#endif // UTILS_H
|
||||||
|
Loading…
x
Reference in New Issue
Block a user