Sets functions for the collision callbacks during the world update.

Four Lua functions can be given as arguments. The value nil removes a function.

When called, each function will be passed three arguments. The first two arguments are the colliding fixtures and the third argument is the [[Contact]] between them. The postSolve callback additionally gets the normal and tangent impulse for each contact point. See notes.

If you are interested to know when exactly each callback is called, consult a Box2d [http://www.iforce2d.net/b2dtut/collision-anatomy manual]

{{notice|Making changes to a [[World]] is not allowed inside of the [[beginContact]], [[endContact]], [[preSolve]], and [[postSolve]] callback functions, as BOX2D locks the world during these callbacks.}}

== Function ==
{{newin|[[0.8.0]]|080|type=method}}
=== Synopsis ===
<source lang="lua">
World:setCallbacks( beginContact, endContact, preSolve, postSolve )
</source>
=== Arguments ===
{{param|function|beginContact|Gets called when two fixtures begin to overlap.}}
{{param|function|endContact|Gets called when two fixtures cease to overlap. This will also be called outside of a world update, when colliding objects are destroyed.}}
{{param|function|preSolve|Gets called before a collision gets resolved.}}
{{param|function|postSolve|Gets called after the collision has been resolved.}}
=== Returns ===
Nothing.

<br /><br />
== Function ==
{{oldin|[[0.8.0]]|080|type=variant}}
=== Synopsis ===
<source lang="lua">
World:setCallbacks( add, persist, remove, result )
</source>
=== Arguments ===
{{param|function|add|Called when two shapes first collide.}}
{{param|function|persist|Called each frame, if collision lasts more than 1 frame.}}
{{param|function|remove|Called when two shapes finish colliding.}}
{{param|function|result|Called after a collision has been calculated. Note: This callback is not properly bound in LOVE at the time of writing, as a result, this callback does not get called, nor do proper arguments get passed for it.}}
=== Returns ===
Nothing.

== Notes ==
Below are the parameters for the postSolve callback. Note that the numbers of normal and tangent impulse correspond with the numbers of contact points.
<source lang="lua">
function postSolve(fixture1, fixture2, contact, normal_impulse1, tangent_impulse1, normal_impulse2, tangent_impulse2)
-- do stuff
end
</source>

== See Also ==
* [[parent::World]]
* [[Tutorial:PhysicsCollisionCallbacks]]
[[Category:Functions]]
{{#set:Description=Sets functions to be called when shapes collide.}}
{{#set:Since=000}}
== Other Languages ==
{{i18n|World:setCallbacks}}