Modified behaviour of KRSprite's
KRSprite's no longer have a "sprite_size" attribute. Instead, the node's scale is used. KRSprite's no longer orient towards the camera automatically. This enables applications to perform their own orientation behaviours and use the sprites for UI elements that may rotate. --HG-- branch : nfb
This commit is contained in:
@@ -28,7 +28,6 @@ KRSprite::KRSprite(KRScene &scene, std::string name) : KRNode(scene, name)
|
|||||||
{
|
{
|
||||||
m_spriteTexture = "";
|
m_spriteTexture = "";
|
||||||
m_pSpriteTexture = NULL;
|
m_pSpriteTexture = NULL;
|
||||||
m_spriteSize = 0.0f;
|
|
||||||
m_spriteAlpha = 1.0f;
|
m_spriteAlpha = 1.0f;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -43,7 +42,6 @@ std::string KRSprite::getElementName() {
|
|||||||
tinyxml2::XMLElement *KRSprite::saveXML( tinyxml2::XMLNode *parent)
|
tinyxml2::XMLElement *KRSprite::saveXML( tinyxml2::XMLNode *parent)
|
||||||
{
|
{
|
||||||
tinyxml2::XMLElement *e = KRNode::saveXML(parent);
|
tinyxml2::XMLElement *e = KRNode::saveXML(parent);
|
||||||
e->SetAttribute("sprite_size", m_spriteSize);
|
|
||||||
e->SetAttribute("sprite_texture", m_spriteTexture.c_str());
|
e->SetAttribute("sprite_texture", m_spriteTexture.c_str());
|
||||||
e->SetAttribute("sprite_alpha", m_spriteAlpha);
|
e->SetAttribute("sprite_alpha", m_spriteAlpha);
|
||||||
return e;
|
return e;
|
||||||
@@ -52,9 +50,6 @@ tinyxml2::XMLElement *KRSprite::saveXML( tinyxml2::XMLNode *parent)
|
|||||||
void KRSprite::loadXML(tinyxml2::XMLElement *e) {
|
void KRSprite::loadXML(tinyxml2::XMLElement *e) {
|
||||||
KRNode::loadXML(e);
|
KRNode::loadXML(e);
|
||||||
|
|
||||||
if(e->QueryFloatAttribute("sprite_size", &m_spriteSize) != tinyxml2::XML_SUCCESS) {
|
|
||||||
m_spriteSize = 0.0f;
|
|
||||||
}
|
|
||||||
if(e->QueryFloatAttribute("sprite_alpha", &m_spriteAlpha) != tinyxml2::XML_SUCCESS) {
|
if(e->QueryFloatAttribute("sprite_alpha", &m_spriteAlpha) != tinyxml2::XML_SUCCESS) {
|
||||||
m_spriteAlpha = 1.0f;
|
m_spriteAlpha = 1.0f;
|
||||||
}
|
}
|
||||||
@@ -73,11 +68,6 @@ void KRSprite::setSpriteTexture(std::string sprite_texture) {
|
|||||||
m_pSpriteTexture = NULL;
|
m_pSpriteTexture = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
void KRSprite::setSpriteSize(float sprite_size) {
|
|
||||||
// TODO - Deprecated - This should come from the localScale
|
|
||||||
m_spriteSize = sprite_size;
|
|
||||||
}
|
|
||||||
|
|
||||||
void KRSprite::setSpriteAlpha(float alpha)
|
void KRSprite::setSpriteAlpha(float alpha)
|
||||||
{
|
{
|
||||||
m_spriteAlpha = alpha;
|
m_spriteAlpha = alpha;
|
||||||
@@ -89,7 +79,7 @@ float KRSprite::getSpriteAlpha() const
|
|||||||
}
|
}
|
||||||
|
|
||||||
KRAABB KRSprite::getBounds() {
|
KRAABB KRSprite::getBounds() {
|
||||||
return KRAABB(KRVector3(-m_spriteSize), KRVector3(m_spriteSize), getModelMatrix());
|
return KRAABB(-KRVector3::One() * 0.5f, KRVector3::One() * 0.5f, getModelMatrix());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -99,7 +89,7 @@ void KRSprite::render(KRCamera *pCamera, std::vector<KRPointLight *> &point_ligh
|
|||||||
|
|
||||||
|
|
||||||
if(renderPass == KRNode::RENDER_PASS_ADDITIVE_PARTICLES) {
|
if(renderPass == KRNode::RENDER_PASS_ADDITIVE_PARTICLES) {
|
||||||
if(m_spriteTexture.size() && m_spriteSize > 0.0f && m_spriteAlpha > 0.0f) {
|
if(m_spriteTexture.size() && m_spriteAlpha > 0.0f) {
|
||||||
|
|
||||||
|
|
||||||
if(!m_pSpriteTexture && m_spriteTexture.size()) {
|
if(!m_pSpriteTexture && m_spriteTexture.size()) {
|
||||||
@@ -128,7 +118,6 @@ void KRSprite::render(KRCamera *pCamera, std::vector<KRPointLight *> &point_ligh
|
|||||||
KRVector3 rim_color;
|
KRVector3 rim_color;
|
||||||
if(getContext().getShaderManager()->selectShader(*pCamera, pShader, viewport, getModelMatrix(), point_lights, directional_lights, spot_lights, 0, renderPass, rim_color, 0.0f)) {
|
if(getContext().getShaderManager()->selectShader(*pCamera, pShader, viewport, getModelMatrix(), point_lights, directional_lights, spot_lights, 0, renderPass, rim_color, 0.0f)) {
|
||||||
pShader->setUniform(KRShader::KRENGINE_UNIFORM_MATERIAL_ALPHA, m_spriteAlpha);
|
pShader->setUniform(KRShader::KRENGINE_UNIFORM_MATERIAL_ALPHA, m_spriteAlpha);
|
||||||
pShader->setUniform(KRShader::KRENGINE_UNIFORM_FLARE_SIZE, m_spriteSize);
|
|
||||||
m_pContext->getTextureManager()->selectTexture(0, m_pSpriteTexture);
|
m_pContext->getTextureManager()->selectTexture(0, m_pSpriteTexture);
|
||||||
m_pContext->getModelManager()->bindVBO(getContext().getModelManager()->KRENGINE_VBO_2D_SQUARE_VERTICES, getContext().getModelManager()->KRENGINE_VBO_2D_SQUARE_INDEXES, getContext().getModelManager()->KRENGINE_VBO_2D_SQUARE_ATTRIBS, true);
|
m_pContext->getModelManager()->bindVBO(getContext().getModelManager()->KRENGINE_VBO_2D_SQUARE_VERTICES, getContext().getModelManager()->KRENGINE_VBO_2D_SQUARE_INDEXES, getContext().getModelManager()->KRENGINE_VBO_2D_SQUARE_ATTRIBS, true);
|
||||||
GLDEBUG(glDrawArrays(GL_TRIANGLE_STRIP, 0, 4));
|
GLDEBUG(glDrawArrays(GL_TRIANGLE_STRIP, 0, 4));
|
||||||
|
|||||||
@@ -23,7 +23,6 @@ public:
|
|||||||
virtual void loadXML(tinyxml2::XMLElement *e);
|
virtual void loadXML(tinyxml2::XMLElement *e);
|
||||||
|
|
||||||
void setSpriteTexture(std::string sprite_texture);
|
void setSpriteTexture(std::string sprite_texture);
|
||||||
void setSpriteSize(float sprite_size);
|
|
||||||
void setSpriteAlpha(float alpha);
|
void setSpriteAlpha(float alpha);
|
||||||
float getSpriteAlpha() const;
|
float getSpriteAlpha() const;
|
||||||
|
|
||||||
@@ -35,7 +34,6 @@ protected:
|
|||||||
|
|
||||||
std::string m_spriteTexture;
|
std::string m_spriteTexture;
|
||||||
KRTexture *m_pSpriteTexture;
|
KRTexture *m_pSpriteTexture;
|
||||||
float m_spriteSize;
|
|
||||||
float m_spriteAlpha;
|
float m_spriteAlpha;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -32,11 +32,10 @@
|
|||||||
attribute mediump vec2 vertex_uv;
|
attribute mediump vec2 vertex_uv;
|
||||||
uniform highp mat4 mvp_matrix; // mvp_matrix is the result of multiplying the model, view, and projection matrices
|
uniform highp mat4 mvp_matrix; // mvp_matrix is the result of multiplying the model, view, and projection matrices
|
||||||
uniform mediump vec4 viewport;
|
uniform mediump vec4 viewport;
|
||||||
uniform mediump float flare_size;
|
|
||||||
|
|
||||||
varying mediump vec2 texCoord;
|
varying mediump vec2 texCoord;
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
texCoord = vertex_uv;
|
texCoord = vertex_uv;
|
||||||
gl_Position = mvp_matrix * vec4(0.0, 0.0, 0.0, 1.0) + vec4(vertex_uv.x * viewport.w / viewport.z * 2.0 - 1.0, vertex_uv.y * 2.0 - 1.0, 0.0, 0.0) * flare_size;
|
gl_Position = mvp_matrix * vec4(vertex_uv.x * 2.0 - 1.0, vertex_uv.y * 2.0 - 1.0, 0.0, 1.0);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -32,11 +32,10 @@
|
|||||||
attribute mediump vec2 vertex_uv;
|
attribute mediump vec2 vertex_uv;
|
||||||
uniform highp mat4 mvp_matrix; // mvp_matrix is the result of multiplying the model, view, and projection matrices
|
uniform highp mat4 mvp_matrix; // mvp_matrix is the result of multiplying the model, view, and projection matrices
|
||||||
uniform mediump vec4 viewport;
|
uniform mediump vec4 viewport;
|
||||||
uniform mediump float flare_size;
|
|
||||||
|
|
||||||
varying mediump vec2 texCoord;
|
varying mediump vec2 texCoord;
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
texCoord = vertex_uv;
|
texCoord = vertex_uv;
|
||||||
gl_Position = mvp_matrix * vec4(0.0, 0.0, 0.0, 1.0) + vec4(vertex_uv.x * viewport.w / viewport.z * 2.0 - 1.0, vertex_uv.y * 2.0 - 1.0, 0.0, 0.0) * flare_size;
|
gl_Position = mvp_matrix * vec4(vertex_uv.x * 2.0 - 1.0, vertex_uv.y * 2.0 - 1.0, 0.0, 1.0);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user