# Sandbox.PhysicsBody.ComputePenetration

## Overload 1

```csharp
bool ComputePenetration(PhysicsBody body, out Vector3 direction, out float distance)
```

Finds the smallest move needed to separate us from another body, ignoring all collision rules.
Returns true if we're overlapping; moving us by `direction` * `distance` pushes us clear.

### Parameters

- `body` (`PhysicsBody`)
- `out direction` (`Vector3`)
- `out distance` (`float`)

### Returns

`bool`

## Overload 2

```csharp
bool ComputePenetration(PhysicsBody body, Transform transform, out Vector3 direction, out float distance)
```

Finds the smallest move needed to separate us from another body placed at a given transform, ignoring
all collision rules. Returns true if we're overlapping; moving us by `direction` *
`distance` pushes us clear.

### Parameters

- `body` (`PhysicsBody`)
- `transform` (`Transform`)
- `out direction` (`Vector3`)
- `out distance` (`float`)

### Returns

`bool`

Declared in [Sandbox.PhysicsBody](/api/Sandbox.PhysicsBody).
Assembly: `Sandbox.Engine`.
