some reworks

This commit is contained in:
Henrique Santiago
2011-12-26 04:14:57 -02:00
parent 3abbf5255e
commit 37a6a38ca6
9 changed files with 197 additions and 117 deletions

View File

@@ -65,34 +65,61 @@ void Particle::update(double elapsedTime)
}
updateColor();
updateSize();
updatePosition(elapsedTime);
// update size
m_size = m_startSize + (m_finalSize - m_startSize) / m_duration * m_elapsedTime;
m_elapsedTime += elapsedTime;
}
void Particle::updatePosition(double elapsedTime)
{
bool mustRedraw = false;
// update position
if(m_ignorePhysicsAfter < 0 || m_elapsedTime < m_ignorePhysicsAfter ) {
// update position
PointF delta = m_velocity * elapsedTime;
delta.y *= -1; // painter orientate Y axis in the inverse direction
m_position += delta;
PointF position = m_position + delta;
if(m_position != position) {
mustRedraw = true;
m_position += delta;
}
// update acceleration
m_velocity += m_acceleration * elapsedTime;
}
m_rect.moveTo((int)m_position.x - m_size.width() / 2, (int)m_position.y - m_size.height() / 2);
m_rect.resize(m_size);
}
m_elapsedTime += elapsedTime;
void Particle::updateSize()
{
bool mustRedraw = false;
Size size = m_startSize + (m_finalSize - m_startSize) / m_duration * m_elapsedTime;
if(m_size != size) {
mustRedraw = true;
m_size = size;
}
m_rect.resize(m_size);
}
void Particle::updateColor()
{
bool mustRedraw = false;
if(m_elapsedTime < m_colorsStops[1]) {
m_color.setRGBA(m_colors[0].r() + (m_colors[1].r() - m_colors[0].r()) / (m_colorsStops[1] - m_colorsStops[0]) * (m_elapsedTime - m_colorsStops[0]),
m_colors[0].g() + (m_colors[1].g() - m_colors[0].g()) / (m_colorsStops[1] - m_colorsStops[0]) * (m_elapsedTime - m_colorsStops[0]),
m_colors[0].b() + (m_colors[1].b() - m_colors[0].b()) / (m_colorsStops[1] - m_colorsStops[0]) * (m_elapsedTime - m_colorsStops[0]),
m_colors[0].a() + (m_colors[1].a() - m_colors[0].a()) / (m_colorsStops[1] - m_colorsStops[0]) * (m_elapsedTime - m_colorsStops[0]));
Color color = Color(m_colors[0].r() + (m_colors[1].r() - m_colors[0].r()) / (m_colorsStops[1] - m_colorsStops[0]) * (m_elapsedTime - m_colorsStops[0]),
m_colors[0].g() + (m_colors[1].g() - m_colors[0].g()) / (m_colorsStops[1] - m_colorsStops[0]) * (m_elapsedTime - m_colorsStops[0]),
m_colors[0].b() + (m_colors[1].b() - m_colors[0].b()) / (m_colorsStops[1] - m_colorsStops[0]) * (m_elapsedTime - m_colorsStops[0]),
m_colors[0].a() + (m_colors[1].a() - m_colors[0].a()) / (m_colorsStops[1] - m_colorsStops[0]) * (m_elapsedTime - m_colorsStops[0]));
if(m_color != color) {
mustRedraw = true;
m_color = color;
}
}
else {
if(m_colors.size() > 1) {
@@ -100,7 +127,10 @@ void Particle::updateColor()
m_colorsStops.erase(m_colorsStops.begin());
}
else {
m_color = m_colors[0];
if(m_color != m_colors[0]) {
mustRedraw = true;
m_color = m_colors[0];
}
}
}
}

View File

@@ -44,6 +44,8 @@ public:
private:
void updateColor();
void updatePosition(double elapsedTime);
void updateSize();
Color m_color;
std::vector<Color> m_colors;