/*
* Farseer Physics Engine based on Box2D.XNA port:
* Copyright (c) 2010 Ian Qvist
*
* Box2D.XNA port of Box2D:
* Copyright (c) 2009 Brandon Furtwangler, Nathan Furtwangler
*
* Original source Box2D:
* Copyright (c) 2006-2009 Erin Catto http://www.gphysics.com
*
* This software is provided 'as-is', without any express or implied
* warranty. In no event will the authors be held liable for any damages
* arising from the use of this software.
* Permission is granted to anyone to use this software for any purpose,
* including commercial applications, and to alter it and redistribute it
* freely, subject to the following restrictions:
* 1. The origin of this software must not be misrepresented; you must not
* claim that you wrote the original software. If you use this software
* in a product, an acknowledgment in the product documentation would be
* appreciated but is not required.
* 2. Altered source versions must be plainly marked as such, and must not be
* misrepresented as being the original software.
* 3. This notice may not be removed or altered from any source distribution.
*/
using FarseerPhysics.Collision;
using FarseerPhysics.Controllers;
using FarseerPhysics.Dynamics.Contacts;
using FarseerPhysics.Dynamics.Joints;
using Microsoft.Xna.Framework;
namespace FarseerPhysics.Dynamics
{
///
/// Called for each fixture found in the query. You control how the ray cast
/// proceeds by returning a float:
/// -1 to filter, 0 to terminate, fraction to clip the ray for closest hit, 1 to continue
///
public delegate float RayCastCallback(Fixture fixture, Vector2 point, Vector2 normal, float fraction);
///
/// This delegate is called when a contact is deleted
///
public delegate void EndContactDelegate(Contact contact);
///
/// This delegate is called when a contact is created
///
public delegate bool BeginContactDelegate(Contact contact);
public delegate void PreSolveDelegate(Contact contact, ref Manifold oldManifold);
public delegate void PostSolveDelegate(Contact contact, ContactConstraint impulse);
public delegate void FixtureDelegate(Fixture fixture);
public delegate void JointDelegate(Joint joint);
public delegate void BodyDelegate(Body body);
public delegate void ControllerDelegate(Controller controller);
public delegate bool CollisionFilterDelegate(Fixture fixtureA, Fixture fixtureB);
public delegate void BroadphaseDelegate(ref FixtureProxy proxyA, ref FixtureProxy proxyB);
public delegate bool BeforeCollisionEventHandler(Fixture fixtureA, Fixture fixtureB);
public delegate bool OnCollisionEventHandler(Fixture fixtureA, Fixture fixtureB, Contact contact);
public delegate void AfterCollisionEventHandler(Fixture fixtureA, Fixture fixtureB, Contact contact);
public delegate void OnSeparationEventHandler(Fixture fixtureA, Fixture fixtureB);
}