Merge branch 'master' of https://git.epicsparrow.com/EpicSparrow/SparrowEngine
This commit is contained in:
commit
9ee0dcd581
57
src/scene/gui/scrollbarnode.cpp
Normal file
57
src/scene/gui/scrollbarnode.cpp
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
#include "scrollbarnode.h"
|
||||||
|
|
||||||
|
#include "scene/meshnode.h"
|
||||||
|
|
||||||
|
#include "SparrowRenderer/mesh.h"
|
||||||
|
#include "SparrowRenderer/phongmaterial.h"
|
||||||
|
#include "sparrowshell/sparrowshell.h"
|
||||||
|
|
||||||
|
ScrollBarNode::ScrollBarNode(glm::vec2 dimension):
|
||||||
|
m_dimension(dimension),
|
||||||
|
m_bar_position(glm::vec2(0)),
|
||||||
|
m_bar_dimension(glm::vec2(0))
|
||||||
|
{
|
||||||
|
Mesh* mesh = new Mesh();
|
||||||
|
mesh->addRectangle2D(glm::vec2(0),m_dimension);
|
||||||
|
PhongMaterial* mat = new PhongMaterial();
|
||||||
|
mat->diffuse = glm::vec3(0,0,0.5);
|
||||||
|
mat->m_opacity = 0.8;
|
||||||
|
mesh->setMaterial(mat);
|
||||||
|
mesh->setDepth(SparrowShell::SHELL_DEPTH+1);
|
||||||
|
mesh->initGL();
|
||||||
|
m_bar = new MeshNode(mesh,false);
|
||||||
|
addChild(m_bar);
|
||||||
|
}
|
||||||
|
|
||||||
|
void ScrollBarNode::update()
|
||||||
|
{
|
||||||
|
GUINode::update();
|
||||||
|
if(m_barResized)
|
||||||
|
{
|
||||||
|
m_bar->resize2D(m_bar_dimension,m_last_bar_dimension);
|
||||||
|
m_barResized = false;
|
||||||
|
}
|
||||||
|
if(m_barMoved)
|
||||||
|
{
|
||||||
|
m_bar->moveTo2D(m_bar_position);
|
||||||
|
m_barMoved = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ScrollBarNode::moveBar(glm::vec2 position)
|
||||||
|
{
|
||||||
|
m_bar_position = position;
|
||||||
|
m_barMoved = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void ScrollBarNode::resizeBar(glm::vec2 dimension)
|
||||||
|
{
|
||||||
|
m_last_bar_dimension = m_bar_dimension;
|
||||||
|
m_bar_dimension = dimension;
|
||||||
|
m_barResized = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
glm::vec2 ScrollBarNode::getDimension()
|
||||||
|
{
|
||||||
|
return m_dimension;
|
||||||
|
}
|
26
src/scene/gui/scrollbarnode.h
Normal file
26
src/scene/gui/scrollbarnode.h
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
#ifndef SCROLLBARNODE_H
|
||||||
|
#define SCROLLBARNODE_H
|
||||||
|
|
||||||
|
#include "scene/gui/guinode.h"
|
||||||
|
|
||||||
|
class MeshNode;
|
||||||
|
|
||||||
|
class ScrollBarNode : public GUINode
|
||||||
|
{
|
||||||
|
protected:
|
||||||
|
glm::vec2 m_dimension;
|
||||||
|
glm::vec2 m_bar_position;
|
||||||
|
glm::vec2 m_bar_dimension;
|
||||||
|
glm::vec2 m_last_bar_dimension;
|
||||||
|
MeshNode* m_bar;
|
||||||
|
bool m_barResized;
|
||||||
|
bool m_barMoved;
|
||||||
|
public:
|
||||||
|
ScrollBarNode(glm::vec2 dimension);
|
||||||
|
void update();
|
||||||
|
glm::vec2 getDimension();
|
||||||
|
void moveBar(glm::vec2 position);
|
||||||
|
void resizeBar(glm::vec2 dimension);
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // SCROLLBARNODE_H
|
@ -88,7 +88,7 @@ void TextInputNode::update()
|
|||||||
{
|
{
|
||||||
if(m_text_mesh){
|
if(m_text_mesh){
|
||||||
this->removeChild(m_text_mesh);
|
this->removeChild(m_text_mesh);
|
||||||
delete(m_text_mesh);
|
// delete(m_text_mesh);
|
||||||
}
|
}
|
||||||
m_text_mesh = shellfont->getTextNode(m_text,m_text_color,m_font_size,false);
|
m_text_mesh = shellfont->getTextNode(m_text,m_text_color,m_font_size,false);
|
||||||
if(m_text_mesh){
|
if(m_text_mesh){
|
||||||
|
@ -8,12 +8,12 @@
|
|||||||
#include "SparrowRenderer/Version.h"
|
#include "SparrowRenderer/Version.h"
|
||||||
#include "SparrowSerializer/Version.h"
|
#include "SparrowSerializer/Version.h"
|
||||||
|
|
||||||
#define LUASETFUN(var) m_script.set_function(#var,&ScriptNode::var,this)
|
#define LUA_SET_FUN(var) m_script.set_function(#var,&ScriptNode::var,this)
|
||||||
|
|
||||||
ScriptNode::ScriptNode()
|
ScriptNode::ScriptNode()
|
||||||
{
|
{
|
||||||
LUASETFUN(print);
|
LUA_SET_FUN(print);
|
||||||
LUASETFUN(version);
|
LUA_SET_FUN(version);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ScriptNode::update(){
|
void ScriptNode::update(){
|
||||||
|
@ -8,39 +8,45 @@
|
|||||||
|
|
||||||
|
|
||||||
ShellScrollBar::ShellScrollBar(SparrowShell *shell):
|
ShellScrollBar::ShellScrollBar(SparrowShell *shell):
|
||||||
MeshNode(nullptr,false), m_shell(shell)
|
ScrollBarNode(
|
||||||
|
glm::vec2(
|
||||||
|
SparrowShell::SCROLLBAR_PIXEL_WIDTH,
|
||||||
|
SparrowShell::DEFAULT_FONT_SIZE*SparrowShell::BUFFER_DISPLAYED_LINES
|
||||||
|
)
|
||||||
|
),
|
||||||
|
m_shell(shell)
|
||||||
{
|
{
|
||||||
m_position = glm::vec2(m_shell->getDimension().x-SparrowShell::SCROLLBAR_PIXEL_WIDTH,0);
|
// MeshNode(nullptr,false);
|
||||||
m_max_height = SparrowShell::DEFAULT_FONT_SIZE*SparrowShell::BUFFER_DISPLAYED_LINES;
|
// m_position = glm::vec2(m_shell->getDimension().x-SparrowShell::SCROLLBAR_PIXEL_WIDTH,0);
|
||||||
m_dimension = glm::vec2(SparrowShell::SCROLLBAR_PIXEL_WIDTH, m_max_height);
|
// m_max_height = ;
|
||||||
moveTo2D(m_position);
|
// m_dimension = glm::vec2(SparrowShell::SCROLLBAR_PIXEL_WIDTH, m_max_height);
|
||||||
|
// moveTo2D(m_position);
|
||||||
|
|
||||||
Mesh* mesh = new Mesh();
|
// Mesh* mesh = new Mesh();
|
||||||
|
|
||||||
mesh->addRectangle2D(glm::vec2(0),m_dimension);
|
// mesh->addRectangle2D(glm::vec2(0),m_dimension);
|
||||||
PhongMaterial* mat = new PhongMaterial();
|
// PhongMaterial* mat = new PhongMaterial();
|
||||||
mat->diffuse = glm::vec3(0,0,0.5);
|
// mat->diffuse = glm::vec3(0,0,0.5);
|
||||||
mat->m_opacity = 0.8;
|
// mat->m_opacity = 0.8;
|
||||||
mesh->setMaterial(mat);
|
// mesh->setMaterial(mat);
|
||||||
mesh->setDepth(SparrowShell::SHELL_DEPTH+1);
|
// mesh->setDepth(SparrowShell::SHELL_DEPTH+1);
|
||||||
mesh->initGL();
|
// mesh->initGL();
|
||||||
m_geometry.mesh = mesh;
|
// m_geometry.mesh = mesh;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ShellScrollBar::update(){
|
void ShellScrollBar::update(){
|
||||||
MeshNode::update();
|
ScrollBarNode::update();
|
||||||
int size = m_shell->getBuffer()->size();
|
int size = m_shell->getBuffer()->size();
|
||||||
float cran = (m_max_height/(float)size);
|
float cran = (m_dimension.y/(float)size);
|
||||||
int indexCursor = m_shell->getIndex();
|
int indexCursor = m_shell->getIndex();
|
||||||
|
|
||||||
if (m_shell->isBufferResized()){
|
if (m_shell->isBufferResized()){
|
||||||
glm::ivec2 new_dim(m_dimension.x,(int)(cran * SparrowShell::BUFFER_DISPLAYED_LINES));
|
resizeBar(glm::vec2(m_dimension.x,(int)(cran * SparrowShell::BUFFER_DISPLAYED_LINES)));
|
||||||
resize2D(m_dimension,new_dim);
|
// resize2D(m_dimension,new_dim);
|
||||||
m_dimension = new_dim;
|
|
||||||
}
|
}
|
||||||
if (m_shell->indexMoved())
|
if (m_shell->indexMoved())
|
||||||
{
|
{
|
||||||
m_position.y = cran * indexCursor;
|
m_bar_position.y = cran * indexCursor;
|
||||||
moveTo2D(m_position);
|
moveBar(m_bar_position);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2,16 +2,15 @@
|
|||||||
#define SHELLSCROLLBAR_H
|
#define SHELLSCROLLBAR_H
|
||||||
|
|
||||||
#include "glm/vec2.hpp"
|
#include "glm/vec2.hpp"
|
||||||
#include "scene/meshnode.h"
|
#include "scene/gui/scrollbarnode.h"
|
||||||
|
|
||||||
class SparrowShell;
|
class SparrowShell;
|
||||||
|
|
||||||
class ShellScrollBar : public MeshNode
|
class ShellScrollBar : public ScrollBarNode
|
||||||
{
|
{
|
||||||
SparrowShell* m_shell;
|
SparrowShell* m_shell;
|
||||||
float m_max_height;
|
// float m_max_height;
|
||||||
glm::ivec2 m_position;
|
glm::ivec2 m_position;
|
||||||
glm::ivec2 m_dimension;
|
|
||||||
|
|
||||||
glm::vec3 m_color;
|
glm::vec3 m_color;
|
||||||
public:
|
public:
|
||||||
|
@ -244,6 +244,7 @@ public:
|
|||||||
|
|
||||||
void exec(){
|
void exec(){
|
||||||
m_demo->initScene();
|
m_demo->initScene();
|
||||||
|
m_engine->getShell()->out("button!");
|
||||||
m_engine->setScene(m_demo->getScene());
|
m_engine->setScene(m_demo->getScene());
|
||||||
m_engine->getInput()->setCurrentContext("default");
|
m_engine->getInput()->setCurrentContext("default");
|
||||||
m_engine->getInput()->setMouseGrabbed(true);
|
m_engine->getInput()->setMouseGrabbed(true);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user