58 lines
1.4 KiB
C++
58 lines
1.4 KiB
C++
#include "backgroundnode.h"
|
|
|
|
#include "engine.h"
|
|
#include "scene/scenetree.h"
|
|
|
|
#include "glm/vec2.hpp"
|
|
#include "glm/vec3.hpp"
|
|
|
|
#include "SparrowRenderer/mesh.h"
|
|
#include "SparrowRenderer/pbrmaterial.h"
|
|
|
|
BackGroundNode::BackGroundNode(glm::vec2 dimension, glm::vec3 color, float opacity,float depth):
|
|
m_dimension(dimension),
|
|
m_color(color),
|
|
m_color_updated(false),
|
|
m_opacity(opacity),
|
|
m_opacity_updated(false)
|
|
{
|
|
Mesh* mesh = new Mesh("background");
|
|
mesh->addRectangle2D(glm::vec2(0),dimension);
|
|
PBRMaterial *mat = new PBRMaterial();
|
|
mat->albedo = color;
|
|
mat->opacity = opacity;
|
|
mesh->setMaterial(mat);
|
|
mesh->setDepth(depth);
|
|
mesh->initGL();
|
|
m_mesh = new MeshNode(mesh);
|
|
addChild(m_mesh);
|
|
}
|
|
|
|
void BackGroundNode::update(){
|
|
if(m_color_updated){
|
|
PBRMaterial* mat = (PBRMaterial*) m_mesh->getGeometryNode()->mesh->getMaterial();
|
|
mat->albedo = m_color;
|
|
m_color_updated = false;
|
|
}
|
|
if(m_opacity_updated){
|
|
PBRMaterial* mat = (PBRMaterial*) m_mesh->getGeometryNode()->mesh->getMaterial();
|
|
mat->opacity = m_opacity;
|
|
m_opacity_updated = false;
|
|
}
|
|
GUINode::update();
|
|
}
|
|
|
|
void BackGroundNode::setColor(glm::vec3 color){
|
|
m_color = color;
|
|
m_color_updated = true;
|
|
}
|
|
|
|
void BackGroundNode::setOpacity(float opacity){
|
|
m_opacity = opacity;
|
|
m_opacity_updated = true;
|
|
}
|
|
|
|
glm::vec2 BackGroundNode::getDimension(){
|
|
return m_dimension;
|
|
}
|