> For the complete documentation index, see [llms.txt](https://kinematicsoup.gitbook.io/reactor/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://kinematicsoup.gitbook.io/reactor/api-reference/ks.reactor.client/ks.reactor.client.kspredictorutils.md).

# Class ksPredictorUtils

Namespace: [KS.Reactor.Client](/reactor/api-reference/ks.reactor.client.md)\
Assembly: KSUnity.dll

Client-side predictor utility.

```csharp
public class ksPredictorUtils
```

#### Inheritance

[object](https://learn.microsoft.com/dotnet/api/system.object) â† [ksPredictorUtils](/reactor/api-reference/ks.reactor.client/ks.reactor.client.kspredictorutils.md)

#### Inherited Members

[object.Equals(object)](https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals\(system-object\)), [object.Equals(object, object)](https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals\(system-object-system-object\)), [object.GetHashCode()](https://learn.microsoft.com/dotnet/api/system.object.gethashcode), [object.GetType()](https://learn.microsoft.com/dotnet/api/system.object.gettype), [object.MemberwiseClone()](https://learn.microsoft.com/dotnet/api/system.object.memberwiseclone), [object.ReferenceEquals(object, object)](https://learn.microsoft.com/dotnet/api/system.object.referenceequals), [object.ToString()](https://learn.microsoft.com/dotnet/api/system.object.tostring)

## Methods

### ApplyChildTranformUpdates(ksBaseEntity, ksVector3, ksVector3, ksQuaternion, ksQuaternion) <a href="#ks_reactor_client_kspredictorutils_applychildtranformupdates_ks_reactor_client_ksbaseentity_ks_react" id="ks_reactor_client_kspredictorutils_applychildtranformupdates_ks_reactor_client_ksbaseentity_ks_react"></a>

Use old and new transform values to apply predictor changes to entity children.

```csharp
public static void ApplyChildTranformUpdates(ksBaseEntity entity, ksVector3 oldPosition, ksVector3 newPosition, ksQuaternion oldRotation, ksQuaternion newRotation)
```

#### Parameters

`entity` [ksBaseEntity](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseentity.md)

`oldPosition` [ksVector3](/reactor/api-reference/ks.reactor/ks.reactor.ksvector3.md)

`newPosition` [ksVector3](/reactor/api-reference/ks.reactor/ks.reactor.ksvector3.md)

`oldRotation` [ksQuaternion](/reactor/api-reference/ks.reactor/ks.reactor.ksquaternion.md)

`newRotation` [ksQuaternion](/reactor/api-reference/ks.reactor/ks.reactor.ksquaternion.md)

### ApplyRigidBodyMotion(ksBaseEntity, ksTransformState, float, ksSweepSlideParams) <a href="#ks_reactor_client_kspredictorutils_applyrigidbodymotion_ks_reactor_client_ksbaseentity_ks_reactor_ks" id="ks_reactor_client_kspredictorutils_applyrigidbodymotion_ks_reactor_client_ksbaseentity_ks_reactor_ks"></a>

Applies motion to an entity from rigid body physics, optionally checking for collisions and sliding.

```csharp
public static void ApplyRigidBodyMotion(ksBaseEntity entity, ksTransformState transform, float deltaTime, ksSweepSlideParams sweepSlideParams = null)
```

#### Parameters

`entity` [ksBaseEntity](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseentity.md)

Entity to apply rigid body motion to.

`transform` [ksTransformState](/reactor/api-reference/ks.reactor/ks.reactor.kstransformstate.md)

Transform to update.

`deltaTime` [float](https://learn.microsoft.com/dotnet/api/system.single)

Amount of time in seconds to simulate.

`sweepSlideParams` [ksSweepSlideParams](/reactor/api-reference/ks.reactor/ks.reactor.kssweepslideparams.md)

If not null and the rigid body is dynamic, checks for collisions using sweep-and-slide movement with these parameters. [Entity](/reactor/api-reference/ks.reactor/ks.reactor.ksoverlapparams.md#KS_Reactor_ksOverlapParams_Entity), ksBasePhysicsQueryParams.ExcludeEntity, ksBasePhysicsQueryParams.Filter, ksBasePhysicsQueryParams.Flags will be overwritten to use simulation filter rules. If [CollideCallback](/reactor/api-reference/ks.reactor/ks.reactor.kssweepslideparams.md#KS_Reactor_ksSweepSlideParams_CollideCallback) is null, a callback will be assigned to eliminate the velocity in the direction of the surface normal.

### UpdateController(ksBaseEntity, ksTransformState, float, float, ksInput) <a href="#ks_reactor_client_kspredictorutils_updatecontroller_ks_reactor_client_ksbaseentity_ks_reactor_kstran" id="ks_reactor_client_kspredictorutils_updatecontroller_ks_reactor_client_ksbaseentity_ks_reactor_kstran"></a>

Updates a `transform` based on a player controller update.

```csharp
public static void UpdateController(ksBaseEntity entity, ksTransformState transform, float unscaledDeltaTime, float timeScale, ksInput input = null)
```

#### Parameters

`entity` [ksBaseEntity](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseentity.md)

Entity with player controller to update.

`transform` [ksTransformState](/reactor/api-reference/ks.reactor/ks.reactor.kstransformstate.md)

Transform to update.

`unscaledDeltaTime` [float](https://learn.microsoft.com/dotnet/api/system.single)

Delta time in seconds, unscaled by [TimeScale](/reactor/api-reference/ks.reactor/ks.reactor.kstime.md#KS_Reactor_ksTime_TimeScale).

`timeScale` [float](https://learn.microsoft.com/dotnet/api/system.single)

Time scale

`input` [ksInput](/reactor/api-reference/ks.reactor/ks.reactor.ksinput.md)

Input for the controller. If null, the current input will be used.

### UpdateController(ksBaseEntity, float, float, ksInput, PhysicsFlags, int) <a href="#ks_reactor_client_kspredictorutils_updatecontroller_ks_reactor_client_ksbaseentity_system_single_sys" id="ks_reactor_client_kspredictorutils_updatecontroller_ks_reactor_client_ksbaseentity_system_single_sys"></a>

```csharp
[Obsolete("Use the overload to update the controller, and ApplyRigidBodyMotion to simulate rigid body physics.")]
public static void UpdateController(ksBaseEntity entity, float unscaledDeltaTime, float timeScale, ksInput input = null, ksPredictorUtils.PhysicsFlags flags = PhysicsFlags.ALL, int maxSweepAndSlideIterations = 4)
```

#### Parameters

`entity` [ksBaseEntity](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseentity.md)

`unscaledDeltaTime` [float](https://learn.microsoft.com/dotnet/api/system.single)

`timeScale` [float](https://learn.microsoft.com/dotnet/api/system.single)

`input` [ksInput](/reactor/api-reference/ks.reactor/ks.reactor.ksinput.md)

`flags` [ksPredictorUtils](/reactor/api-reference/ks.reactor.client/ks.reactor.client.kspredictorutils.md).[PhysicsFlags](/reactor/api-reference/ks.reactor.client/ks.reactor.client.kspredictorutils/ks.reactor.client.kspredictorutils.physicsflags.md)

`maxSweepAndSlideIterations` [int](https://learn.microsoft.com/dotnet/api/system.int32)
