public override void Step(Settings settings)
{
base.Step(settings);
Sweep sweepA = new Sweep();
sweepA.C0.Set(0.0f, -0.2f);
sweepA.A0 = 0.0f;
sweepA.C = sweepA.C0;
sweepA.A = sweepA.A0;
sweepA.T0 = 0.0f;
sweepA.LocalCenter.SetZero();
Sweep sweepB = new Sweep();
sweepB.C0.Set(-0.076157160f, 0.16447277f);
sweepB.A0 = -9.4497271f;
sweepB.C.Set(-0.25650328f, -0.63657403f);
sweepB.A = -9.0383911f;
sweepB.T0 = 0.0f;
sweepB.LocalCenter.SetZero();
Collision.TOIInput input = new Collision.TOIInput();
input.ProxyA.Set(_shapeA);
input.ProxyB.Set(_shapeB);
input.SweepA = sweepA;
input.SweepB = sweepB;
input.Tolerance = Box2DX.Common.Settings.LinearSlop;
float toi = Collision.TimeOfImpact(input);
OpenGLDebugDraw.DrawString(5, _textLine, string.Format("toi = {0}", toi));
_textLine += 15;
#warning "get variables from TOI implementation"
int _maxToiIters = 0, _maxToiRootIters = 0;
OpenGLDebugDraw.DrawString(5, _textLine, string.Format("max toi iters = {1}, max root iters = {1}", _maxToiIters, _maxToiRootIters));
_textLine += 15;
Vec2[] vertices = new Vec2[Box2DX.Common.Settings.MaxPolygonVertices];
Transform transformA;
sweepA.GetTransform(out transformA, 0.0f);
for (int i = 0; i < _shapeA.VertexCount; ++i)
{
vertices[i] = Math.Mul(transformA, _shapeA.Vertices[i]);
}
_debugDraw.DrawPolygon(vertices, _shapeA.VertexCount, new Color(0.9f, 0.9f, 0.9f));
Transform transformB;
sweepB.GetTransform(out transformB, 0.0f);
for (int i = 0; i < _shapeB.VertexCount; ++i)
{
vertices[i] = Math.Mul(transformB, _shapeB.Vertices[i]);
}
_debugDraw.DrawPolygon(vertices, _shapeB.VertexCount, new Color(0.5f, 0.9f, 0.5f));
sweepB.GetTransform(out transformB, toi);
for (int i = 0; i < _shapeB.VertexCount; ++i)
{
vertices[i] = Math.Mul(transformB, _shapeB.Vertices[i]);
}
_debugDraw.DrawPolygon(vertices, _shapeB.VertexCount, new Color(0.5f, 0.7f, 0.9f));
sweepB.GetTransform(out transformB, 1.0f);
for (int i = 0; i < _shapeB.VertexCount; ++i)
{
vertices[i] = Math.Mul(transformB, _shapeB.Vertices[i]);
}
_debugDraw.DrawPolygon(vertices, _shapeB.VertexCount, new Color(0.9f, 0.5f, 0.5f));
}