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);
}
void ScrollBarNode::computeTransform()
{
m_bar->resetTransform();
m_bar->moveTo2D(m_bar_position);
m_bar->resize2D(m_dimension, m_bar_dimension);
}
void ScrollBarNode::update()
{
GUINode::update();
bool needTransformUpdate = false;
if(m_bar_resized)
{
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->resize2D(m_dimension,m_bar_dimension);
m_bar_resized = false;
needTransformUpdate = true;
}
}
if(m_bar_moved)
{
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;
needTransformUpdate = true;
}
if(m_bar_color_updated)
{
@ -57,6 +60,8 @@ void ScrollBarNode::update()
mat->diffuse = m_bar_color;
m_bar_color_updated = false;
}
if(needTransformUpdate)
computeTransform();
}
glm::vec2 ScrollBarNode::getDimension()

View File

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

View File

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