fix draw of uicreature

This commit is contained in:
Eduardo Bart 2012-02-07 05:59:20 -02:00
parent 0b220e2e88
commit d6ade5a8e0
4 changed files with 11 additions and 5 deletions

View File

@ -3,8 +3,10 @@ uniform vec4 color; // painter color
uniform float time; // time in seconds since shader linkage uniform float time; // time in seconds since shader linkage
uniform sampler2D texture; // map texture uniform sampler2D texture; // map texture
varying vec2 textureCoords; // map texture coords varying vec2 textureCoords; // map texture coords
//uniform int itemId; // item id
void main() void main()
{ {
gl_FragColor = texture2D(texture, textureCoords) * opacity; vec4 outColor = texture2D(texture, textureCoords);
gl_FragColor = outColor * opacity;
} }

View File

@ -49,7 +49,7 @@ ItemPtr Item::create(int id)
} }
PainterShaderProgramPtr itemProgram; PainterShaderProgramPtr itemProgram;
int ITEM_ID_UNIFORM = 10; //int ITEM_ID_UNIFORM = 10;
void Item::draw(const Point& dest, float scaleFactor, bool animate) void Item::draw(const Point& dest, float scaleFactor, bool animate)
{ {
@ -168,11 +168,11 @@ void Item::draw(const Point& dest, float scaleFactor, bool animate)
itemProgram->addShaderFromSourceCode(Shader::Vertex, glslMainWithTexCoordsVertexShader + glslPositionOnlyVertexShader); itemProgram->addShaderFromSourceCode(Shader::Vertex, glslMainWithTexCoordsVertexShader + glslPositionOnlyVertexShader);
itemProgram->addShaderFromSourceFile(Shader::Fragment, "/game_shaders/item.frag"); itemProgram->addShaderFromSourceFile(Shader::Fragment, "/game_shaders/item.frag");
assert(itemProgram->link()); assert(itemProgram->link());
itemProgram->bindUniformLocation(ITEM_ID_UNIFORM, "itemId"); //itemProgram->bindUniformLocation(ITEM_ID_UNIFORM, "itemId");
} }
g_painter.setCustomProgram(itemProgram); g_painter.setCustomProgram(itemProgram);
itemProgram->bind(); itemProgram->bind();
itemProgram->setUniformValue(ITEM_ID_UNIFORM, (int)m_id); //itemProgram->setUniformValue(ITEM_ID_UNIFORM, (int)m_id);
// now we can draw the item // now we can draw the item
internalDraw(dest, scaleFactor, xPattern, yPattern, zPattern, animationPhase); internalDraw(dest, scaleFactor, xPattern, yPattern, zPattern, animationPhase);

View File

@ -91,6 +91,7 @@ public:
Size getDimension() { return Size(m_type->dimensions[ThingType::Width], m_type->dimensions[ThingType::Height]); } Size getDimension() { return Size(m_type->dimensions[ThingType::Width], m_type->dimensions[ThingType::Height]); }
int getDimensionWidth() { return m_type->dimensions[ThingType::Width]; } int getDimensionWidth() { return m_type->dimensions[ThingType::Width]; }
int getDimensionHeight() { return m_type->dimensions[ThingType::Height]; } int getDimensionHeight() { return m_type->dimensions[ThingType::Height]; }
int getExactSize() { return m_type->dimensions[ThingType::ExactSize]; }
Point getDisplacement() { return Point(m_type->parameters[ThingType::DisplacementX], m_type->parameters[ThingType::DisplacementY]); } Point getDisplacement() { return Point(m_type->parameters[ThingType::DisplacementX], m_type->parameters[ThingType::DisplacementY]); }
int getNumPatternsX() { return m_type->dimensions[ThingType::PatternX]; } int getNumPatternsX() { return m_type->dimensions[ThingType::PatternX]; }
int getNumPatternsY() { return m_type->dimensions[ThingType::PatternY]; } int getNumPatternsY() { return m_type->dimensions[ThingType::PatternY]; }

View File

@ -30,7 +30,10 @@ void UICreature::draw()
if(m_creature) { if(m_creature) {
g_painter.setColor(Fw::white); g_painter.setColor(Fw::white);
m_creature->draw(m_rect.bottomRight() - Point(32, 32) + Point(m_padding.left, m_padding.top), 1, false);
Rect drawRect = getChildrenRect();
float scaleFactor = drawRect.width() / (float)m_creature->getExactSize();
m_creature->draw(drawRect.bottomRight() - Point(32, 32) * scaleFactor , scaleFactor, false);
} }
drawChildren(); drawChildren();