|
@@ -31,12 +31,6 @@ void application::setup()
|
|
|
|
|
|
this->particles.push_back(new particle(50, 100, 1.0, 4));
|
|
|
this->particles.push_back(new particle(200, 100, 3.0, 12));
|
|
|
-
|
|
|
- this->liquid.x = 0;
|
|
|
- this->liquid.y = graphics::height() / 2;
|
|
|
- this->liquid.w = graphics::width();
|
|
|
- this->liquid.h = graphics::height() / 2;
|
|
|
-
|
|
|
}
|
|
|
|
|
|
void application::input()
|
|
@@ -114,24 +108,16 @@ void application::syncAndDeltatime()
|
|
|
|
|
|
void application::update()
|
|
|
{
|
|
|
- vec2 wind = vec2(0.2 * PIXELS_PER_METER, 0);
|
|
|
- vec2 weight = vec2(0, 9.81 * PIXELS_PER_METER);
|
|
|
this->syncAndDeltatime();
|
|
|
|
|
|
updateTime.start();
|
|
|
|
|
|
for (auto part:this->particles)
|
|
|
{
|
|
|
- //part->addForce(wind);
|
|
|
part->addForce(this->pushForce);
|
|
|
- part->addForce(weight * part->mass);
|
|
|
|
|
|
- // Apply drag if in liquid.
|
|
|
- if (part->position.y >= this->liquid.y)
|
|
|
- {
|
|
|
- vec2 drag = force::generateDragForce(*part, 0.01);
|
|
|
- part->addForce(drag);
|
|
|
- }
|
|
|
+ vec2 friction = force::generateFrictionForce(*part, 10 * PIXELS_PER_METER);
|
|
|
+ part->addForce(friction);
|
|
|
|
|
|
part->integrate(deltaTime);
|
|
|
|
|
@@ -176,10 +162,6 @@ void application::render()
|
|
|
|
|
|
graphics::clearScreen(0xFF056263);
|
|
|
|
|
|
- // Draw the liquid
|
|
|
- graphics::draw::fillRect(this->liquid.x + this->liquid.w / 2, this->liquid.y + this->liquid.h / 2,
|
|
|
- this->liquid.w, this->liquid.h, 0xFF633713);
|
|
|
-
|
|
|
for (auto part:this->particles)
|
|
|
{
|
|
|
graphics::draw::fillCircle(part->position.x, part->position.y, part->radius, 0xFFFFFFFF);
|