fix draw of uicreature
This commit is contained in:
parent
0b220e2e88
commit
d6ade5a8e0
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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]; }
|
||||||
|
|
|
@ -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();
|
||||||
|
|
Loading…
Reference in New Issue