> 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.ksitimeadjuster.md).

# Interface ksITimeAdjuster

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

Interface for synchronizing time with the server. The room has time adjuster, and each player that owns entities with the transform permission also has a time adjuster, accessible via [Adjuster](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksclienttime.md#KS_Reactor_Client_ksClientTime_Adjuster) [Time](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseroom.md#KS_Reactor_Client_ksBaseRoom_Time) for the room and [GetTime](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseroom.md#KS_Reactor_Client_ksBaseRoom_GetTime_System_UInt32_) for the players.

Every client frame, [UnscaledDelta](/reactor/api-reference/ks.reactor/ks.reactor.kstime.md#KS_Reactor_ksTime_UnscaledDelta) is passed to [OnClientUpdate](#KS_Reactor_Client_ksITimeAdjuster_OnClientUpdate_System_Single_) to calculate [AdjustedUnscaledDelta](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksclienttime.md#KS_Reactor_Client_ksClientTime_AdjustedUnscaledDelta). [OnServerUpdate](#KS_Reactor_Client_ksITimeAdjuster_OnServerUpdate_System_Single_2cSystem_UInt64_) is called when we process a server frame.

The same process happens for the player time adjusters for players who own entities with the transform permission, except [OnServerUpdate](#KS_Reactor_Client_ksITimeAdjuster_OnServerUpdate_System_Single_2cSystem_UInt64_) is called when we receive owned-entity updates from that player, and OnPlayerUpdatesStopped is called when all entities owned by that player stop updating and we don't expect to receive more updates until they start updating again.

```csharp
public interface ksITimeAdjuster
```

## Methods

### Initialize() <a href="#ks_reactor_client_ksitimeadjuster_initialize" id="ks_reactor_client_ksitimeadjuster_initialize"></a>

Initialization

```csharp
void Initialize()
```

### OnClientUpdate(float) <a href="#ks_reactor_client_ksitimeadjuster_onclientupdate_system_single" id="ks_reactor_client_ksitimeadjuster_onclientupdate_system_single"></a>

Called once per frame to adjust deltaTime to stay in sync with the server.

```csharp
float OnClientUpdate(float deltaTime)
```

#### Parameters

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

Unscaled time delta in seconds of simulation time since the last frame.

#### Returns

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

adjusted delta time in seconds.

### OnServerUpdate(float, ulong) <a href="#ks_reactor_client_ksitimeadjuster_onserverupdate_system_single_system_uint64" id="ks_reactor_client_ksitimeadjuster_onserverupdate_system_single_system_uint64"></a>

Called once per server update.

```csharp
void OnServerUpdate(float unscaledDeltaTime, ulong frameNum)
```

#### Parameters

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

Time delta in seconds of server simulation time (unscaled) since the last update.

`frameNum` [ulong](https://learn.microsoft.com/dotnet/api/system.uint64)

frame number from the server.
