*******************************************************************************/
+#include <iostream>
+
#include "Character.hh"
#include "Log.hh"
current.mass = 1.0;
current.inverseMass = 1.0 / current.mass;
- current.force = Mf::Vector2(0.0, -120.0);
+ // gravity
+ //current.force = Mf::Vector2(0.0, -120.0);
+ // starting position
current.position = Mf::Vector2(64.0, 64.0);
current.momentum = Mf::Vector2(0.0, 0.0);
current.recalculate();
updateContainers();
}
-Character::~Character()
-{
- //delete texture;
- //delete anim;
-}
-
void Character::update(Mf::Scalar t, Mf::Scalar dt)
{
previous = current;
+
+ Mf::Scalar epsilon = 100.0;
+
+ //current.momentum = Mf::Vector2(0.0, -120.0);
+ current.momentum = -5 * (current.position - Mf::Vector2(500.0, 200.0))
+ - 2.0 * current.velocity;
+ current.recalculate();
+ std::cout << "force: " << current.momentum << std::endl;
+
+ //if (std::abs(current.force[0]) < epsilon && std::abs(current.force[1]) < epsilon &&
+ //std::abs(current.velocity[0]) < epsilon && std::abs(current.velocity[1]) < epsilon)
+ //{
+ //current.force = Mf::Vector2(0.0, 0.0);
+ //current.velocity = Mf::Vector2(0.0, 0.0);
+ //current.momentum = Mf::Vector2(0.0, 0.0);
+ //}
+
Mf::integrate<State,Derivative>(current, t, dt);
animation_.update(t, dt);
break;
}
- Mf::logInfo("current force [%f %f]", current.force[0], current.force[1]);
+ //Mf::logInfo("current force [%f %f]", current.force[0], current.force[1]);
+ //std::cerr << "current force: " << current.force << std::endl;
}
Mf::Scalar s = 16.0;
- glBegin(GL_QUADS);
+ glBegin(GL_TRIANGLE_FAN);
glTexCoord2f(coords[0], coords[1]);
glVertex3(state.position[0]-s, state.position[1]-s, z);
glTexCoord2f(coords[2], coords[3]);