# PhysicsEvents

> Various events that can be retrieved during and after the simulation has completed. See PhysicsWorld.Simulate and PhysicsWorld.Simulate.

## Definition

* **Type:** Struct
* **Namespace:** [UnityEngine.LowLevelPhysics2D](/engine/6000.3/script-reference/unityengine/lowlevelphysics2d.md)
* **Assembly:** UnityEngine.Physics2DModule

```csharp
public readonly struct PhysicsEvents
```

## Static Events

| Member                                                                                                      | Description                                                                                                                                                                                                                                                                                        |
| ----------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [PostSimulate](/engine/6000.3/script-reference/unityengine/lowlevelphysics2d/physicsevents/postsimulate.md) | Event callback for a post-simulate event. This is called after the simulation has finished running and is always called on the main-thread. See [PhysicsEvents.PostSimulateEventHandler](/engine/6000.3/script-reference/unityengine/lowlevelphysics2d/physicsevents/postsimulateeventhandler.md). |
| [PreSimulate](/engine/6000.3/script-reference/unityengine/lowlevelphysics2d/physicsevents/presimulate.md)   | Event callback for a pre-simulate event. This is called prior to the simulation running and is always called on the main-thread. See [PhysicsEvents.PreSimulateEventHandler](/engine/6000.3/script-reference/unityengine/lowlevelphysics2d/physicsevents/presimulateeventhandler.md).              |

## Structs

| Struct                                                                                                                                  | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| --------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [PhysicsEvents.BodyUpdateEvent](/engine/6000.3/script-reference/unityengine/lowlevelphysics2d/physicsevents/bodyupdateevent.md)         | An event produced by a [PhysicsBody](/engine/6000.3/script-reference/unityengine/lowlevelphysics2d/physicsbody.md) that indicates the simulation changed the body in one of the following ways:                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| [PhysicsEvents.ContactBeginEvent](/engine/6000.3/script-reference/unityengine/lowlevelphysics2d/physicsevents/contactbeginevent.md)     | An event produced by a pair of Shapes, neither of which are a trigger, began touching. The shapes provided may have been destroyed so they should always be validated with [PhysicsShape.isValid](/engine/6000.3/script-reference/unityengine/lowlevelphysics2d/physicsshape/isvalid.md). See [PhysicsWorld.contactBeginEvents](/engine/6000.3/script-reference/unityengine/lowlevelphysics2d/physicsworld/contactbeginevents.md).                                                                                                                                                                                                                                |
| [PhysicsEvents.ContactEndEvent](/engine/6000.3/script-reference/unityengine/lowlevelphysics2d/physicsevents/contactendevent.md)         | An event produced by a pair of Shapes, neither of which are a trigger, stopped touching. You will get an end event if you do anything that destroys contacts prior to the last world simulation step which include things like setting the body transform, destroying a body etc. The shapes provided may have been destroyed so they should always be validated with [PhysicsShape.isValid](/engine/6000.3/script-reference/unityengine/lowlevelphysics2d/physicsshape/isvalid.md). See [PhysicsWorld.contactEndEvents](/engine/6000.3/script-reference/unityengine/lowlevelphysics2d/physicsworld/contactendevents.md).                                         |
| [PhysicsEvents.ContactFilterEvent](/engine/6000.3/script-reference/unityengine/lowlevelphysics2d/physicsevents/contactfilterevent.md)   | An event produced when a pair of [PhysicsShape](/engine/6000.3/script-reference/unityengine/lowlevelphysics2d/physicsshape.md) come into contact. This can be used to decide if a contact between the two shapes should be created or not.                                                                                                                                                                                                                                                                                                                                                                                                                        |
| [PhysicsEvents.ContactHitEvent](/engine/6000.3/script-reference/unityengine/lowlevelphysics2d/physicsevents/contacthitevent.md)         | An event produced when a pair of [PhysicsShape](/engine/6000.3/script-reference/unityengine/lowlevelphysics2d/physicsshape.md) come into contact at relative speed exceeding the [PhysicsWorld.contactHitEventThreshold](/engine/6000.3/script-reference/unityengine/lowlevelphysics2d/physicsworld/contacthiteventthreshold.md).                                                                                                                                                                                                                                                                                                                                 |
| [PhysicsEvents.JointThresholdEvent](/engine/6000.3/script-reference/unityengine/lowlevelphysics2d/physicsevents/jointthresholdevent.md) | An event produced by a Joint which exceeds either its [PhysicsJoint.forceThreshold](/engine/6000.3/script-reference/unityengine/lowlevelphysics2d/physicsjoint/forcethreshold.md) or [PhysicsJoint.torqueThreshold](/engine/6000.3/script-reference/unityengine/lowlevelphysics2d/physicsjoint/torquethreshold.md).                                                                                                                                                                                                                                                                                                                                               |
| [PhysicsEvents.PreSolveEvent](/engine/6000.3/script-reference/unityengine/lowlevelphysics2d/physicsevents/presolveevent.md)             | An event produced when a contact between a pair of [PhysicsShape](/engine/6000.3/script-reference/unityengine/lowlevelphysics2d/physicsshape.md) is updated, used to provide the ability to decide if the contact should be disabled or not.                                                                                                                                                                                                                                                                                                                                                                                                                      |
| [PhysicsEvents.TriggerBeginEvent](/engine/6000.3/script-reference/unityengine/lowlevelphysics2d/physicsevents/triggerbeginevent.md)     | An event produced when a pair of Shapes, one of which was a trigger, began touching. The shapes provided may have been destroyed so they should always be validated with [PhysicsShape.isValid](/engine/6000.3/script-reference/unityengine/lowlevelphysics2d/physicsshape/isvalid.md). See [PhysicsWorld.triggerBeginEvents](/engine/6000.3/script-reference/unityengine/lowlevelphysics2d/physicsworld/triggerbeginevents.md).                                                                                                                                                                                                                                  |
| [PhysicsEvents.TriggerEndEvent](/engine/6000.3/script-reference/unityengine/lowlevelphysics2d/physicsevents/triggerendevent.md)         | An event produced when a pair of Shapes, one of which was a trigger, stopped touching. An end event will be produced anything that destroys contacts happens, prior to the last world simulation step, which include things like setting the body transform, destroying a body or shape or changing a contact filter etc. The shapes provided may have been destroyed so they should always be validated with [PhysicsShape.isValid](/engine/6000.3/script-reference/unityengine/lowlevelphysics2d/physicsshape/isvalid.md). See [PhysicsWorld.triggerEndEvents](/engine/6000.3/script-reference/unityengine/lowlevelphysics2d/physicsworld/triggerendevents.md). |

## Delegates

| Delegate                                                                                                                                          | Description                                                                                                                                                                                                                                                                                                                                                                          |
| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| [PhysicsEvents.PostSimulateEventHandler](/engine/6000.3/script-reference/unityengine/lowlevelphysics2d/physicsevents/postsimulateeventhandler.md) | Event handler for a post-simulate event callback. This is called after the simulation has finished running and is always called on the main-thread. See [PhysicsWorld](/engine/6000.3/script-reference/unityengine/lowlevelphysics2d/physicsworld.md) and [PhysicsEvents.PostSimulate](/engine/6000.3/script-reference/unityengine/lowlevelphysics2d/physicsevents/postsimulate.md). |
| [PhysicsEvents.PreSimulateEventHandler](/engine/6000.3/script-reference/unityengine/lowlevelphysics2d/physicsevents/presimulateeventhandler.md)   | Event handler for a pre-simulate event callback. This is called prior to the simulation running and is always called on the main-thread. See [PhysicsWorld](/engine/6000.3/script-reference/unityengine/lowlevelphysics2d/physicsworld.md) and [PhysicsEvents.PreSimulate](/engine/6000.3/script-reference/unityengine/lowlevelphysics2d/physicsevents/presimulate.md).              |
