> 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.ksconverginginputpredictor/ks.reactor.client.ksconverginginputpredictor.configdata.md).

# Class ksConvergingInputPredictor.ConfigData

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

Configuration parameters for the converging input predictor.

```csharp
public class ksConvergingInputPredictor.ConfigData
```

#### Inheritance

[object](https://learn.microsoft.com/dotnet/api/system.object) â† [ksConvergingInputPredictor.ConfigData](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksconverginginputpredictor/ks.reactor.client.ksconverginginputpredictor.configdata.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)

## Fields

### AngularVelocityTolerance <a href="#ks_reactor_client_ksconverginginputpredictor_configdata_angularvelocitytolerance" id="ks_reactor_client_ksconverginginputpredictor_configdata_angularvelocitytolerance"></a>

Maximum difference between client and server angular velocity before inputs are replayed. Less than or equal to zero for no limit.

```csharp
public float AngularVelocityTolerance
```

#### Field Value

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

### CheckKinematicDynamicCollisions <a href="#ks_reactor_client_ksconverginginputpredictor_configdata_checkkinematicdynamiccollisions" id="ks_reactor_client_ksconverginginputpredictor_configdata_checkkinematicdynamiccollisions"></a>

If true and the controlled entity is a kinematic rigid body, [MoveCheck](#KS_Reactor_Client_ksConvergingInputPredictor_ConfigData_MoveCheck) will check for collisions with dynamic rigid bodies when updating the render position to prevent the render position from embedding with dynamic rigid bodies that will get pushed out of the way.

```csharp
public bool CheckKinematicDynamicCollisions
```

#### Field Value

[bool](https://learn.microsoft.com/dotnet/api/system.boolean)

### ConvergeMultiplier <a href="#ks_reactor_client_ksconverginginputpredictor_configdata_convergemultiplier" id="ks_reactor_client_ksconverginginputpredictor_configdata_convergemultiplier"></a>

Lower values mean we try to converge more aggressively.

```csharp
public float ConvergeMultiplier
```

#### Field Value

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

### DefaultLatency <a href="#ks_reactor_client_ksconverginginputpredictor_configdata_defaultlatency" id="ks_reactor_client_ksconverginginputpredictor_configdata_defaultlatency"></a>

Latency in seconds to use before latency is determined.

```csharp
public float DefaultLatency
```

#### Field Value

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

### MaxDeltaTime <a href="#ks_reactor_client_ksconverginginputpredictor_configdata_maxdeltatime" id="ks_reactor_client_ksconverginginputpredictor_configdata_maxdeltatime"></a>

Maximum time step for the client over a single frame. If a frame's time delta is larger than this, this is used as the time delta instead. The predictor behaves poorly with large time steps, and limiting the maximum time step can improve the behaviour when there are dips in frame rate.

```csharp
public float MaxDeltaTime
```

#### Field Value

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

### MoveCheck <a href="#ks_reactor_client_ksconverginginputpredictor_configdata_movecheck" id="ks_reactor_client_ksconverginginputpredictor_configdata_movecheck"></a>

Sometimes the predictor needs to move the entity between two points. Use this to test for collisions along the way and change the final position of the entity. By default this is set to [MoveCheck](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksconverginginputpredictor.md#KS_Reactor_Client_ksConvergingInputPredictor_MoveCheck_KS_Reactor_Client_ksBaseEntity_2cKS_Reactor_ksVector3_2cKS_Reactor_ksVector3_2cSystem_Boolean_). You should not need to change this unless you are using a custom collision detection system. Set to null to disable collision checks.

```csharp
public ksConvergingInputPredictor.MoveChecker MoveCheck
```

#### Field Value

[ksConvergingInputPredictor](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksconverginginputpredictor.md).[MoveChecker](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksconverginginputpredictor/ks.reactor.client.ksconverginginputpredictor.movechecker.md)

### TunnelDistance <a href="#ks_reactor_client_ksconverginginputpredictor_configdata_tunneldistance" id="ks_reactor_client_ksconverginginputpredictor_configdata_tunneldistance"></a>

Maximum difference between client and server positions before the client will tunnel through objects to get to the server position. If negative, a tunnel distance is calculated for the entity by [TunnelDistanceCalculator](#KS_Reactor_Client_ksConvergingInputPredictor_ConfigData_TunnelDistanceCalculator) if it is not null, otherwise one is used.

```csharp
public float TunnelDistance
```

#### Field Value

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

### TunnelDistanceCalculator <a href="#ks_reactor_client_ksconverginginputpredictor_configdata_tunneldistancecalculator" id="ks_reactor_client_ksconverginginputpredictor_configdata_tunneldistancecalculator"></a>

Calculates the tunnel distance for an entity. Called when [TunnelDistance](#KS_Reactor_Client_ksConvergingInputPredictor_ConfigData_TunnelDistance) is negative.

```csharp
public static ksConvergingInputPredictor.ConfigData.ToleranceCalculator TunnelDistanceCalculator
```

#### Field Value

[ksConvergingInputPredictor](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksconverginginputpredictor.md).[ConfigData](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksconverginginputpredictor/ks.reactor.client.ksconverginginputpredictor.configdata.md).[ToleranceCalculator](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksconverginginputpredictor/ks.reactor.client.ksconverginginputpredictor.configdata/ks.reactor.client.ksconverginginputpredictor.configdata.tolerancecalculator.md)

### UseClientOnlyPosition <a href="#ks_reactor_client_ksconverginginputpredictor_configdata_useclientonlyposition" id="ks_reactor_client_ksconverginginputpredictor_configdata_useclientonlyposition"></a>

If true, converging prediction is not run on the position. Instead the player controller alone determines the client position. Changing this after [Initialize](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksconverginginputpredictor.md#KS_Reactor_Client_ksConvergingInputPredictor_Initialize_KS_Reactor_Client_ksBaseRoom_2cKS_Reactor_Client_ksBaseEntity_2cKS_Reactor_Client_ksBasePlayer_) is called does nothing.

```csharp
public bool UseClientOnlyPosition
```

#### Field Value

[bool](https://learn.microsoft.com/dotnet/api/system.boolean)

### UseClientOnlyRotation <a href="#ks_reactor_client_ksconverginginputpredictor_configdata_useclientonlyrotation" id="ks_reactor_client_ksconverginginputpredictor_configdata_useclientonlyrotation"></a>

If true, converging prediction is not run on the rotation. Instead the player controller alone determines the client rotation. Changing this after [Initialize](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksconverginginputpredictor.md#KS_Reactor_Client_ksConvergingInputPredictor_Initialize_KS_Reactor_Client_ksBaseRoom_2cKS_Reactor_Client_ksBaseEntity_2cKS_Reactor_Client_ksBasePlayer_) is called does nothing.

```csharp
public bool UseClientOnlyRotation
```

#### Field Value

[bool](https://learn.microsoft.com/dotnet/api/system.boolean)

### UseClientOnlyScale <a href="#ks_reactor_client_ksconverginginputpredictor_configdata_useclientonlyscale" id="ks_reactor_client_ksconverginginputpredictor_configdata_useclientonlyscale"></a>

If true, converging prediction is not run on the scale. Instead the player controller alone determines the client scale. Changing this after [Initialize](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksconverginginputpredictor.md#KS_Reactor_Client_ksConvergingInputPredictor_Initialize_KS_Reactor_Client_ksBaseRoom_2cKS_Reactor_Client_ksBaseEntity_2cKS_Reactor_Client_ksBasePlayer_) is called does nothing.

```csharp
public bool UseClientOnlyScale
```

#### Field Value

[bool](https://learn.microsoft.com/dotnet/api/system.boolean)

### VelocityTolerance <a href="#ks_reactor_client_ksconverginginputpredictor_configdata_velocitytolerance" id="ks_reactor_client_ksconverginginputpredictor_configdata_velocitytolerance"></a>

Maximum difference between client and server velocity before inputs are replayed. Zero for no limit. If negative, a velocity tolerance is calculated for the entity by [VelocityToleranceCalculator](#KS_Reactor_Client_ksConvergingInputPredictor_ConfigData_VelocityToleranceCalculator) if it is not null, otherwise one is used.

```csharp
public float VelocityTolerance
```

#### Field Value

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

### VelocityToleranceCalculator <a href="#ks_reactor_client_ksconverginginputpredictor_configdata_velocitytolerancecalculator" id="ks_reactor_client_ksconverginginputpredictor_configdata_velocitytolerancecalculator"></a>

Calculates the velocity tolerance for an entity. Called when [VelocityTolerance](#KS_Reactor_Client_ksConvergingInputPredictor_ConfigData_VelocityTolerance) is negative.

```csharp
public static ksConvergingInputPredictor.ConfigData.ToleranceCalculator VelocityToleranceCalculator
```

#### Field Value

[ksConvergingInputPredictor](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksconverginginputpredictor.md).[ConfigData](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksconverginginputpredictor/ks.reactor.client.ksconverginginputpredictor.configdata.md).[ToleranceCalculator](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksconverginginputpredictor/ks.reactor.client.ksconverginginputpredictor.configdata/ks.reactor.client.ksconverginginputpredictor.configdata.tolerancecalculator.md)

## Properties

### Default <a href="#ks_reactor_client_ksconverginginputpredictor_configdata_default" id="ks_reactor_client_ksconverginginputpredictor_configdata_default"></a>

Default configuration values. Values can be changed to change the defaults.

```csharp
public static ksConvergingInputPredictor.ConfigData Default { get; }
```

#### Property Value

[ksConvergingInputPredictor](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksconverginginputpredictor.md).[ConfigData](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksconverginginputpredictor/ks.reactor.client.ksconverginginputpredictor.configdata.md)

### MaxSlideAngle <a href="#ks_reactor_client_ksconverginginputpredictor_configdata_maxslideangle" id="ks_reactor_client_ksconverginginputpredictor_configdata_maxslideangle"></a>

Do not allow slides that change the movement direction by more than this angle in degrees. Less than zero for no limit.

```csharp
public float MaxSlideAngle { get; set; }
```

#### Property Value

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

### MaxTotalSlideAngle <a href="#ks_reactor_client_ksconverginginputpredictor_configdata_maxtotalslideangle" id="ks_reactor_client_ksconverginginputpredictor_configdata_maxtotalslideangle"></a>

Do not allow sliding in a direction that differs from the original direction by more than this angle in degrees. Less than zero for no limit.

```csharp
public float MaxTotalSlideAngle { get; set; }
```

#### Property Value

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

### PositionResetCallback <a href="#ks_reactor_client_ksconverginginputpredictor_configdata_positionresetcallback" id="ks_reactor_client_ksconverginginputpredictor_configdata_positionresetcallback"></a>

Called before replaying inputs with new position and velocity values.

```csharp
public ksConvergingInputPredictor.ResetPropertyCallback PositionResetCallback { get; set; }
```

#### Property Value

[ksConvergingInputPredictor](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksconverginginputpredictor.md).[ResetPropertyCallback](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksconverginginputpredictor/ks.reactor.client.ksconverginginputpredictor.resetpropertycallback.md)

### PredictedProperties <a href="#ks_reactor_client_ksconverginginputpredictor_configdata_predictedproperties" id="ks_reactor_client_ksconverginginputpredictor_configdata_predictedproperties"></a>

Keys are which properties to predict, and values describe how to predict them.

```csharp
public Dictionary<uint, ksConvergingInputPredictor.PropertyBehaviour> PredictedProperties { get; set; }
```

#### Property Value

[Dictionary](https://learn.microsoft.com/dotnet/api/system.collections.generic.dictionary-2)<[uint](https://learn.microsoft.com/dotnet/api/system.uint32), [ksConvergingInputPredictor](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksconverginginputpredictor.md).[PropertyBehaviour](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksconverginginputpredictor/ks.reactor.client.ksconverginginputpredictor.propertybehaviour.md)>

### RotationResetCallback <a href="#ks_reactor_client_ksconverginginputpredictor_configdata_rotationresetcallback" id="ks_reactor_client_ksconverginginputpredictor_configdata_rotationresetcallback"></a>

Called before replaying inputs with new rotation and angular velocity values.

```csharp
public ksConvergingInputPredictor.ResetPropertyCallback RotationResetCallback { get; set; }
```

#### Property Value

[ksConvergingInputPredictor](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksconverginginputpredictor.md).[ResetPropertyCallback](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksconverginginputpredictor/ks.reactor.client.ksconverginginputpredictor.resetpropertycallback.md)

### SeparationOffset <a href="#ks_reactor_client_ksconverginginputpredictor_configdata_separationoffset" id="ks_reactor_client_ksconverginginputpredictor_configdata_separationoffset"></a>

Keep this much distance between other objects. Helps prevent penetrations.

```csharp
public float SeparationOffset { get; set; }
```

#### Property Value

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

### SweepAndSlideIterations <a href="#ks_reactor_client_ksconverginginputpredictor_configdata_sweepandslideiterations" id="ks_reactor_client_ksconverginginputpredictor_configdata_sweepandslideiterations"></a>

Max number of sweep-and-slide iterations for predicting collisions. One to stop after the first sweep without sliding.

```csharp
public int SweepAndSlideIterations { get; set; }
```

#### Property Value

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

## Methods

### Clone() <a href="#ks_reactor_client_ksconverginginputpredictor_configdata_clone" id="ks_reactor_client_ksconverginginputpredictor_configdata_clone"></a>

Creates a copy of this [ConfigData](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksconverginginputpredictor/ks.reactor.client.ksconverginginputpredictor.configdata.md).

```csharp
public ksConvergingInputPredictor.ConfigData Clone()
```

#### Returns

[ksConvergingInputPredictor](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksconverginginputpredictor.md).[ConfigData](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksconverginginputpredictor/ks.reactor.client.ksconverginginputpredictor.configdata.md)

Copy of the config.
