+void Character::draw(Mf::Scalar alpha) const
+{
+ //Mf::Vector2 position = cml::lerp(mPrevState.position, mState.position, alpha);
+ Mf::State2 state = getState(alpha);
+ Mf::Vector2 position = state.position;
+
+ //glColor3f(1.0f, 1.0f, 1.0f);
+ tilemap.bind();
+
+ Tilemap::Index frame = animation.getFrame();
+
+ Tilemap::Orientation orientation = Tilemap::NORMAL;
+
+ if (mState.velocity[0] < 0.0) orientation = Tilemap::REVERSE;
+
+ Mf::Scalar coords[8];
+ tilemap.getTileCoords(frame, coords, orientation);
+
+ Mf::Scalar s = 0.5;
+
+ glBegin(GL_TRIANGLE_FAN);
+ glTexCoord(coords[0], coords[1]);
+ glVertex(position[0]-s, position[1]-s);
+ glTexCoord(coords[2], coords[3]);
+ glVertex(position[0]+s, position[1]-s);
+ glTexCoord(coords[4], coords[5]);
+ glVertex(position[0]+s, position[1]+s);
+ glTexCoord(coords[6], coords[7]);
+ glVertex(position[0]-s, position[1]+s);
+ glEnd();
+}
+
+
+/*int Character::getOctant(const Mf::Aabb<3>& aabb) const
+{
+ int octantNum = -1;
+
+ Mf::Plane::Halfspace halfspace;
+
+ Mf::Plane xy = aabb.getPlaneXY();
+ halfspace = xy.intersects(mSphere);
+ if (halfspace == Mf::Plane::INTERSECT)
+ {
+ halfspace = xy.intersects(mAabb);
+ }
+
+ if (halfspace == Mf::Plane::POSITIVE)
+ {
+ Mf::Plane xz = aabb.getPlaneXZ();
+ halfspace = xz.intersects(mSphere);
+ if (halfspace == Mf::Plane::INTERSECT)
+ {
+ halfspace = xz.intersects(mAabb);
+ }
+
+ if (halfspace == Mf::Plane::POSITIVE)
+ {
+ Mf::Plane yz = aabb.getPlaneYZ();
+ halfspace = yz.intersects(mSphere);
+ if (halfspace == Mf::Plane::INTERSECT)
+ {
+ halfspace = yz.intersects(mAabb);
+ }
+
+ if (halfspace == Mf::Plane::POSITIVE)
+ {
+ octantNum = 2;
+ }
+ else if (halfspace == Mf::Plane::NEGATIVE)
+ {
+ octantNum = 3;
+ }
+ }
+ else if (halfspace == Mf::Plane::NEGATIVE)
+ {
+ Mf::Plane yz = aabb.getPlaneYZ();
+ halfspace = yz.intersects(mSphere);
+ if (halfspace == Mf::Plane::INTERSECT)
+ {
+ halfspace = yz.intersects(mAabb);
+ }
+
+ if (halfspace == Mf::Plane::POSITIVE)
+ {
+ octantNum = 1;
+ }
+ else if (halfspace == Mf::Plane::NEGATIVE)
+ {
+ octantNum = 0;
+ }
+ }
+ }
+ else if (halfspace == Mf::Plane::NEGATIVE)
+ {
+ Mf::Plane xz = aabb.getPlaneXZ();
+ halfspace = xz.intersects(mSphere);
+ if (halfspace == Mf::Plane::INTERSECT)
+ {
+ halfspace = xz.intersects(mAabb);
+ }
+
+ if (halfspace == Mf::Plane::POSITIVE)
+ {
+ Mf::Plane yz = aabb.getPlaneYZ();
+ halfspace = yz.intersects(mSphere);
+ if (halfspace == Mf::Plane::INTERSECT)
+ {
+ halfspace = yz.intersects(mAabb);
+ }
+
+ if (halfspace == Mf::Plane::POSITIVE)
+ {
+ octantNum = 6;
+ }
+ else if (halfspace == Mf::Plane::NEGATIVE)
+ {
+ octantNum = 7;
+ }
+ }
+ else if (halfspace == Mf::Plane::NEGATIVE)
+ {
+ Mf::Plane yz = aabb.getPlaneYZ();
+ halfspace = yz.intersects(mSphere);
+ if (halfspace == Mf::Plane::INTERSECT)
+ {
+ halfspace = yz.intersects(mAabb);
+ }
+
+ if (halfspace == Mf::Plane::POSITIVE)
+ {
+ octantNum = 5;
+ }
+ else if (halfspace == Mf::Plane::NEGATIVE)
+ {
+ octantNum = 4;
+ }
+ }
+ }
+
+ return octantNum;
+}
+*/
+
+
+void Character::addImpulse(Mf::Vector2 impulse)
+{
+ mState.momentum += impulse;
+}