fixed scrollbar scale issue

This commit is contained in:
Anselme 2017-02-20 18:17:27 +01:00
parent 4dfed2e701
commit d155a4f603
3 changed files with 15 additions and 8 deletions

View File

@ -29,27 +29,30 @@ ScrollBarNode::ScrollBarNode(glm::vec2 dimension, glm::vec3 bar_color):
addChild(m_bar); addChild(m_bar);
} }
void ScrollBarNode::computeTransform()
{
m_bar->resetTransform();
m_bar->moveTo2D(m_bar_position);
m_bar->resize2D(m_dimension, m_bar_dimension);
}
void ScrollBarNode::update() void ScrollBarNode::update()
{ {
GUINode::update(); GUINode::update();
bool needTransformUpdate = false;
if(m_bar_resized) if(m_bar_resized)
{ {
if(m_total_size > m_bar_size){ if(m_total_size > m_bar_size){
m_bar->resetTransform();
m_bar_dimension.y = m_dimension.y * ((float)m_bar_size / (float)m_total_size); m_bar_dimension.y = m_dimension.y * ((float)m_bar_size / (float)m_total_size);
m_bar->resize2D(m_dimension,m_bar_dimension);
m_bar_resized = false; m_bar_resized = false;
needTransformUpdate = true;
} }
} }
if(m_bar_moved) if(m_bar_moved)
{ {
m_bar_position = glm::vec2(0,(m_dimension.y /m_total_size) * m_index_position); m_bar_position = glm::vec2(0,(m_dimension.y /m_total_size) * m_index_position);
std::cout<< "Pos vec: " << m_bar_position.x << " " << m_bar_position.y << std::endl;
m_bar->moveTo2D(m_bar_position);
glm::mat4 m = m_bar->getTransform();
glm::vec2 v = glm::vec2(m[3].x,m[3].y);
std::cout << "Pos tr : " << v.x << " " << v.y << std::endl;
m_bar_moved = false; m_bar_moved = false;
needTransformUpdate = true;
} }
if(m_bar_color_updated) if(m_bar_color_updated)
{ {
@ -57,6 +60,8 @@ void ScrollBarNode::update()
mat->diffuse = m_bar_color; mat->diffuse = m_bar_color;
m_bar_color_updated = false; m_bar_color_updated = false;
} }
if(needTransformUpdate)
computeTransform();
} }
glm::vec2 ScrollBarNode::getDimension() glm::vec2 ScrollBarNode::getDimension()

View File

@ -20,6 +20,9 @@ protected:
MeshNode* m_bar; MeshNode* m_bar;
bool m_bar_resized; bool m_bar_resized;
bool m_bar_moved; bool m_bar_moved;
void computeTransform();
public: public:
ScrollBarNode(glm::vec2 dimension,glm::vec3 bar_color); ScrollBarNode(glm::vec2 dimension,glm::vec3 bar_color);
void update(); void update();

View File

@ -83,7 +83,6 @@ void SparrowShell::out(std::string str,glm::vec3 color)
tnode->setDepth(SHELL_DEPTH+1); tnode->setDepth(SHELL_DEPTH+1);
m_buffer->push(tnode); m_buffer->push(tnode);
scrollDown(); scrollDown();
std::cout << "size: " << m_buffer->size() << std::endl;
if (m_buffer->size() > SparrowShell::BUFFER_DISPLAYED_LINES) if (m_buffer->size() > SparrowShell::BUFFER_DISPLAYED_LINES)
m_resizeBuffer = true; m_resizeBuffer = true;
} }