using
System;
using
System.Collections.Generic;
using
System.Linq;
using
System.Text;
using
FarseerPhysics.Dynamics.Contacts;
using
Microsoft.Xna.Framework;
namespace
Axios.Engine.Extensions
{
public
enum
CollisionDirection
{
Right,
Left,
Top,
Bottom
}
public
static
class
AxiosExtensions_Contact
{
/// <summary>
/// Returns the direction that the collision happened.
/// Should be used in the event OnAfterCollision
/// </summary>
/// <param name="c"></param>
/// <returns></returns>
public
static
CollisionDirection Direction(
this
Contact c)
{
CollisionDirection direction;
Vector2 colNorm = c.Manifold.LocalNormal;
if
(Math.Abs(colNorm.X) > Math.Abs(colNorm.Y))
{
if
(colNorm.X > 0)
direction = CollisionDirection.Right;
else
direction = CollisionDirection.Left;
}
else
{
if
(colNorm.Y > 0)
direction = CollisionDirection.Bottom;
else
direction = CollisionDirection.Top;
}
return
direction;
}
}
}