Add borderSize to Cube3DOverlay

This commit is contained in:
Ryan Huffman 2014-11-25 12:05:13 -08:00
parent b3ca6fda72
commit c5f2b3b588
2 changed files with 49 additions and 3 deletions

View file

@ -19,7 +19,7 @@
#include "Cube3DOverlay.h"
#include "renderer/GlowEffect.h"
Cube3DOverlay::Cube3DOverlay() {
Cube3DOverlay::Cube3DOverlay() : _borderSize(0) {
}
Cube3DOverlay::Cube3DOverlay(const Cube3DOverlay* cube3DOverlay) :
@ -63,8 +63,25 @@ void Cube3DOverlay::render(RenderArgs* args) {
glm::vec3 positionToCenter = center - position;
glTranslatef(positionToCenter.x, positionToCenter.y, positionToCenter.z);
if (_isSolid) {
glScalef(dimensions.x, dimensions.y, dimensions.z);
Application::getInstance()->getDeferredLightingEffect()->renderSolidCube(1.0f);
if (_borderSize > 0) {
// Disable writing to the depth mask so that the following draw
// will not be occluded by this one. This means the border
// could be covered by overlays that are further back and drawn
// later, but this is good enough for the use-case.
glDepthMask(GL_FALSE);
glPushMatrix();
glColor4f(MAX_COLOR, MAX_COLOR, MAX_COLOR, 1.0f);
glScalef(dimensions.x * _borderSize, dimensions.y * _borderSize, dimensions.z * _borderSize);
Application::getInstance()->getDeferredLightingEffect()->renderSolidCube(1.0f);
glPopMatrix();
glDepthMask(GL_TRUE);
}
glPushMatrix();
glColor4f(color.red / MAX_COLOR, color.green / MAX_COLOR, color.blue / MAX_COLOR, alpha);
glScalef(dimensions.x, dimensions.y, dimensions.z);
Application::getInstance()->getDeferredLightingEffect()->renderSolidCube(1.0f);
glPopMatrix();
} else {
glLineWidth(_lineWidth);
@ -111,3 +128,22 @@ void Cube3DOverlay::render(RenderArgs* args) {
Cube3DOverlay* Cube3DOverlay::createClone() const {
return new Cube3DOverlay(this);
}
void Cube3DOverlay::setProperties(const QScriptValue& properties) {
Volume3DOverlay::setProperties(properties);
QScriptValue borderSize = properties.property("borderSize");
if (borderSize.isValid()) {
float value = borderSize.toVariant().toFloat();
setBorderSize(value);
}
}
QScriptValue Cube3DOverlay::getProperty(const QString& property) {
if (property == "borderSize") {
return _borderSize;
}
return Volume3DOverlay::getProperty(property);
}

View file

@ -23,6 +23,16 @@ public:
virtual void render(RenderArgs* args);
virtual Cube3DOverlay* createClone() const;
float getBorderSize() const { return _borderSize; }
void setBorderSize(float value) { _borderSize = value; }
virtual void setProperties(const QScriptValue& properties);
virtual QScriptValue getProperty(const QString& property);
private:
float _borderSize;
};