> 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.adaptors/ks.reactor.client.adaptors.ksroom.md).

# Class ksRoom

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

Engine agnostic stub implementation of [ksBaseRoom](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseroom.md). Prefabs/types and physics are not implemented.

```csharp
public class ksRoom : ksBaseRoom<ksPlayer, ksEntity>, ksIRoom<ksPlayer, ksEntity>
```

#### Inheritance

[object](https://learn.microsoft.com/dotnet/api/system.object) â† [ksBaseRoom](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseroom.md) â† [ksBaseRoom\<ksPlayer, ksEntity>](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseroom-2.md) â† [ksRoom](/reactor/api-reference/ks.reactor.client.adaptors/ks.reactor.client.adaptors.ksroom.md)

#### Implements

[ksIRoom\<ksPlayer, ksEntity>](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksiroom-2.md)

#### Inherited Members

[ksBaseRoom\<ksPlayer, ksEntity>.OnConnect](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseroom-2.md#KS_Reactor_Client_ksBaseRoom_2_OnConnect), [ksBaseRoom\<ksPlayer, ksEntity>.OnDisconnect](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseroom-2.md#KS_Reactor_Client_ksBaseRoom_2_OnDisconnect), [ksBaseRoom\<ksPlayer, ksEntity>.OnPlayerJoin](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseroom-2.md#KS_Reactor_Client_ksBaseRoom_2_OnPlayerJoin), [ksBaseRoom\<ksPlayer, ksEntity>.OnPlayerLeave](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseroom-2.md#KS_Reactor_Client_ksBaseRoom_2_OnPlayerLeave), [ksBaseRoom\<ksPlayer, ksEntity>.OnSpawnEntity](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseroom-2.md#KS_Reactor_Client_ksBaseRoom_2_OnSpawnEntity), [ksBaseRoom\<ksPlayer, ksEntity>.OnDestroyEntity](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseroom-2.md#KS_Reactor_Client_ksBaseRoom_2_OnDestroyEntity), [ksBaseRoom\<ksPlayer, ksEntity>.OnInputUpdate](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseroom-2.md#KS_Reactor_Client_ksBaseRoom_2_OnInputUpdate), [ksBaseRoom\<ksPlayer, ksEntity>.PreSendFrame](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseroom-2.md#KS_Reactor_Client_ksBaseRoom_2_PreSendFrame), [ksBaseRoom\<ksPlayer, ksEntity>.OnSentFrame](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseroom-2.md#KS_Reactor_Client_ksBaseRoom_2_OnSentFrame), [ksBaseRoom\<ksPlayer, ksEntity>.OnPropertyChange](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseroom-2.md#KS_Reactor_Client_ksBaseRoom_2_OnPropertyChange), [ksBaseRoom\<ksPlayer, ksEntity>.OnRPC](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseroom-2.md#KS_Reactor_Client_ksBaseRoom_2_OnRPC), [ksBaseRoom\<ksPlayer, ksEntity>.Coroutines](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseroom-2.md#KS_Reactor_Client_ksBaseRoom_2_Coroutines), [ksBaseRoom\<ksPlayer, ksEntity>.Info](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseroom-2.md#KS_Reactor_Client_ksBaseRoom_2_Info), [ksBaseRoom\<ksPlayer, ksEntity>.Time](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseroom-2.md#KS_Reactor_Client_ksBaseRoom_2_Time), [ksBaseRoom\<ksPlayer, ksEntity>.Properties](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseroom-2.md#KS_Reactor_Client_ksBaseRoom_2_Properties), [ksBaseRoom\<ksPlayer, ksEntity>.Predictor](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseroom-2.md#KS_Reactor_Client_ksBaseRoom_2_Predictor), [ksBaseRoom\<ksPlayer, ksEntity>.TimeAdjusters](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseroom-2.md#KS_Reactor_Client_ksBaseRoom_2_TimeAdjusters), [ksBaseRoom\<ksPlayer, ksEntity>.IsConnecting](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseroom-2.md#KS_Reactor_Client_ksBaseRoom_2_IsConnecting), [ksBaseRoom\<ksPlayer, ksEntity>.IsConnected](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseroom-2.md#KS_Reactor_Client_ksBaseRoom_2_IsConnected), [ksBaseRoom\<ksPlayer, ksEntity>.IsDisconnecting](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseroom-2.md#KS_Reactor_Client_ksBaseRoom_2_IsDisconnecting), [ksBaseRoom\<ksPlayer, ksEntity>.SuppressCannotCallRPCWarning](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseroom-2.md#KS_Reactor_Client_ksBaseRoom_2_SuppressCannotCallRPCWarning), [ksBaseRoom\<ksPlayer, ksEntity>.LocalPlayer](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseroom-2.md#KS_Reactor_Client_ksBaseRoom_2_LocalPlayer), [ksBaseRoom\<ksPlayer, ksEntity>.Players](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseroom-2.md#KS_Reactor_Client_ksBaseRoom_2_Players), [ksBaseRoom\<ksPlayer, ksEntity>.GetPlayer(uint)](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseroom-2.md#KS_Reactor_Client_ksBaseRoom_2_GetPlayer_System_UInt32_), [ksBaseRoom\<ksPlayer, ksEntity>.Entities](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseroom-2.md#KS_Reactor_Client_ksBaseRoom_2_Entities), [ksBaseRoom\<ksPlayer, ksEntity>.PermanentEntities](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseroom-2.md#KS_Reactor_Client_ksBaseRoom_2_PermanentEntities), [ksBaseRoom\<ksPlayer, ksEntity>.DynamicEntities](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseroom-2.md#KS_Reactor_Client_ksBaseRoom_2_DynamicEntities), [ksBaseRoom\<ksPlayer, ksEntity>.OwnedEntities](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseroom-2.md#KS_Reactor_Client_ksBaseRoom_2_OwnedEntities), [ksBaseRoom\<ksPlayer, ksEntity>.ControlledEntities](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseroom-2.md#KS_Reactor_Client_ksBaseRoom_2_ControlledEntities), [ksBaseRoom\<ksPlayer, ksEntity>.LocalPlayerId](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseroom-2.md#KS_Reactor_Client_ksBaseRoom_2_LocalPlayerId), [ksBaseRoom\<ksPlayer, ksEntity>.InputAcknowledged](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseroom-2.md#KS_Reactor_Client_ksBaseRoom_2_InputAcknowledged), [ksBaseRoom\<ksPlayer, ksEntity>.SendRate](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseroom-2.md#KS_Reactor_Client_ksBaseRoom_2_SendRate), [ksBaseRoom\<ksPlayer, ksEntity>.InputInterval](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseroom-2.md#KS_Reactor_Client_ksBaseRoom_2_InputInterval), [ksBaseRoom\<ksPlayer, ksEntity>.SendUnchangedInput](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseroom-2.md#KS_Reactor_Client_ksBaseRoom_2_SendUnchangedInput), [ksBaseRoom\<ksPlayer, ksEntity>.MultiButtonStateEnabled](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseroom-2.md#KS_Reactor_Client_ksBaseRoom_2_MultiButtonStateEnabled), [ksBaseRoom\<ksPlayer, ksEntity>.NetStats](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseroom-2.md#KS_Reactor_Client_ksBaseRoom_2_NetStats), [ksBaseRoom\<ksPlayer, ksEntity>.EnableUDPClientFrames](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseroom-2.md#KS_Reactor_Client_ksBaseRoom_2_EnableUDPClientFrames), [ksBaseRoom\<ksPlayer, ksEntity>.RPCLatency](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseroom-2.md#KS_Reactor_Client_ksBaseRoom_2_RPCLatency), [ksBaseRoom\<ksPlayer, ksEntity>.Latency](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseroom-2.md#KS_Reactor_Client_ksBaseRoom_2_Latency), [ksBaseRoom\<ksPlayer, ksEntity>.ReadProgress](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseroom-2.md#KS_Reactor_Client_ksBaseRoom_2_ReadProgress), [ksBaseRoom\<ksPlayer, ksEntity>.WriteProgress](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseroom-2.md#KS_Reactor_Client_ksBaseRoom_2_WriteProgress), [ksBaseRoom\<ksPlayer, ksEntity>.GetEntity(ksEntityId)](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseroom-2.md#KS_Reactor_Client_ksBaseRoom_2_GetEntity_KS_Reactor_ksEntityId_), [ksBaseRoom\<ksPlayer, ksEntity>.GetTime(uint)](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseroom-2.md#KS_Reactor_Client_ksBaseRoom_2_GetTime_System_UInt32_), [ksBaseRoom\<ksPlayer, ksEntity>.GetTimeAdjuster\<T>()](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseroom-2.md#KS_Reactor_Client_ksBaseRoom_2_GetTimeAdjuster__1), [ksBaseRoom\<ksPlayer, ksEntity>.AddTimeAdjuster(ksITimeAdjuster)](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseroom-2.md#KS_Reactor_Client_ksBaseRoom_2_AddTimeAdjuster_KS_Reactor_Client_ksITimeAdjuster_), [ksBaseRoom\<ksPlayer, ksEntity>.RemoveTimeAdjuster(ksITimeAdjuster)](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseroom-2.md#KS_Reactor_Client_ksBaseRoom_2_RemoveTimeAdjuster_KS_Reactor_Client_ksITimeAdjuster_), [ksBaseRoom\<ksPlayer, ksEntity>.RemoveTimeAdjuster\<T>()](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseroom-2.md#KS_Reactor_Client_ksBaseRoom_2_RemoveTimeAdjuster__1), [ksBaseRoom\<ksPlayer, ksEntity>.ClearTimeAdjusters()](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseroom-2.md#KS_Reactor_Client_ksBaseRoom_2_ClearTimeAdjusters), [ksBaseRoom\<ksPlayer, ksEntity>.SendInput(bool, float)](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseroom-2.md#KS_Reactor_Client_ksBaseRoom_2_SendInput_System_Boolean_System_Single_), [ksBaseRoom\<ksPlayer, ksEntity>.CleanUp()](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseroom-2.md#KS_Reactor_Client_ksBaseRoom_2_CleanUp), [ksBaseRoom\<ksPlayer, ksEntity>.Equals(ksBaseRoom)](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseroom-2.md#KS_Reactor_Client_ksBaseRoom_2_Equals_KS_Reactor_Client_ksBaseRoom_), [ksBaseRoom\<ksPlayer, ksEntity>.CreatePlayer(uint)](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseroom-2.md#KS_Reactor_Client_ksBaseRoom_2_CreatePlayer_System_UInt32_), [ksBaseRoom\<ksPlayer, ksEntity>.CreateEntity()](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseroom-2.md#KS_Reactor_Client_ksBaseRoom_2_CreateEntity), [ksBaseRoom\<ksPlayer, ksEntity>.ConnectionStarted()](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseroom-2.md#KS_Reactor_Client_ksBaseRoom_2_ConnectionStarted), [ksBaseRoom\<ksPlayer, ksEntity>.Connected()](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseroom-2.md#KS_Reactor_Client_ksBaseRoom_2_Connected), [ksBaseRoom\<ksPlayer, ksEntity>.Disconnected()](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseroom-2.md#KS_Reactor_Client_ksBaseRoom_2_Disconnected), [ksBaseRoom\<ksPlayer, ksEntity>.Initialized()](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseroom-2.md#KS_Reactor_Client_ksBaseRoom_2_Initialized), [ksBaseRoom\<ksPlayer, ksEntity>.LoadPermanentEntities(List\<ksEntity>)](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseroom-2.md#KS_Reactor_Client_ksBaseRoom_2_LoadPermanentEntities_System_Collections_Generic_List__1__), [ksBaseRoom\<ksPlayer, ksEntity>.LoadPlayerScripts(ksPlayer)](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseroom-2.md#KS_Reactor_Client_ksBaseRoom_2_LoadPlayerScripts__0_), [ksBaseRoom\<ksPlayer, ksEntity>.InitializeScripts()](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseroom-2.md#KS_Reactor_Client_ksBaseRoom_2_InitializeScripts), [ksBaseRoom\<ksPlayer, ksEntity>.UpdateScripts()](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseroom-2.md#KS_Reactor_Client_ksBaseRoom_2_UpdateScripts), [ksBaseRoom\<ksPlayer, ksEntity>.DiagnoseConnectionFailure()](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseroom-2.md#KS_Reactor_Client_ksBaseRoom_2_DiagnoseConnectionFailure), [ksBaseRoom\<ksPlayer, ksEntity>.CallSpawnRPC(ksSpawnParams, params ksMultiType\[\])](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseroom-2.md#KS_Reactor_Client_ksBaseRoom_2_CallSpawnRPC_KS_Reactor_ksSpawnParams_KS_Reactor_ksMultiType___), [ksBaseRoom\<ksPlayer, ksEntity>.GetPrefabScale(ksSpawnParams)](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseroom-2.md#KS_Reactor_Client_ksBaseRoom_2_GetPrefabScale_KS_Reactor_ksSpawnParams_), [ksBaseRoom\<ksPlayer, ksEntity>.CallRPC(uint, params ksMultiType\[\])](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseroom-2.md#KS_Reactor_Client_ksBaseRoom_2_CallRPC_System_UInt32_KS_Reactor_ksMultiType___), [ksBaseRoom\<ksPlayer, ksEntity>.CallEntityRPC(ksBaseEntity, uint, params ksMultiType\[\])](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseroom-2.md#KS_Reactor_Client_ksBaseRoom_2_CallEntityRPC_KS_Reactor_Client_ksBaseEntity_System_UInt32_KS_Reactor_ksMultiType___), [ksBaseRoom\<ksPlayer, ksEntity>.CallBatchRPC(IList\<ksEntity>, uint, params ksMultiType\[\])](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseroom-2.md#KS_Reactor_Client_ksBaseRoom_2_CallBatchRPC_System_Collections_Generic_IList__1__System_UInt32_KS_Reactor_ksMultiType___), [ksBaseRoom\<ksPlayer, ksEntity>.RegisterRPC(uint, ksBaseRoom.RPCHandler)](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseroom-2.md#KS_Reactor_Client_ksBaseRoom_2_RegisterRPC_System_UInt32_KS_Reactor_Client_ksBaseRoom_RPCHandler_), [ksBaseRoom\<ksPlayer, ksEntity>.UnregisterRPC(uint, ksBaseRoom.RPCHandler)](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseroom-2.md#KS_Reactor_Client_ksBaseRoom_2_UnregisterRPC_System_UInt32_KS_Reactor_Client_ksBaseRoom_RPCHandler_), [ksBaseRoom\<ksPlayer, ksEntity>.GetPropertyServerValue(uint)](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseroom-2.md#KS_Reactor_Client_ksBaseRoom_2_GetPropertyServerValue_System_UInt32_), [ksBaseRoom\<ksPlayer, ksEntity>.IsIdle](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseroom-2.md#KS_Reactor_Client_ksBaseRoom_2_IsIdle), [ksBaseRoom\<ksPlayer, ksEntity>.IdleTime](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseroom-2.md#KS_Reactor_Client_ksBaseRoom_2_IdleTime), [ksBaseRoom\<ksPlayer, ksEntity>.Protocol](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseroom-2.md#KS_Reactor_Client_ksBaseRoom_2_Protocol), [ksBaseRoom\<ksPlayer, ksEntity>.ToString()](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseroom-2.md#KS_Reactor_Client_ksBaseRoom_2_ToString), [ksBaseRoom.MIN\_SEND\_RATE](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseroom.md#KS_Reactor_Client_ksBaseRoom_MIN_SEND_RATE), [ksBaseRoom.MAX\_SEND\_RATE](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseroom.md#KS_Reactor_Client_ksBaseRoom_MAX_SEND_RATE), [ksBaseRoom.OnStateChange](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseroom.md#KS_Reactor_Client_ksBaseRoom_OnStateChange), [ksBaseRoom.ConnectionState](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseroom.md#KS_Reactor_Client_ksBaseRoom_ConnectionState), [ksBaseRoom.m\_connectionState](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseroom.md#KS_Reactor_Client_ksBaseRoom_m_connectionState), [ksBaseRoom.Id](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseroom.md#KS_Reactor_Client_ksBaseRoom_Id), [ksBaseRoom.Address](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseroom.md#KS_Reactor_Client_ksBaseRoom_Address), [ksBaseRoom.Info](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseroom.md#KS_Reactor_Client_ksBaseRoom_Info), [ksBaseRoom.Time](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseroom.md#KS_Reactor_Client_ksBaseRoom_Time), [ksBaseRoom.Physics](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseroom.md#KS_Reactor_Client_ksBaseRoom_Physics), [ksBaseRoom.IsConnecting](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseroom.md#KS_Reactor_Client_ksBaseRoom_IsConnecting), [ksBaseRoom.IsConnected](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseroom.md#KS_Reactor_Client_ksBaseRoom_IsConnected), [ksBaseRoom.IsDisconnecting](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseroom.md#KS_Reactor_Client_ksBaseRoom_IsDisconnecting), [ksBaseRoom.SuppressCannotCallRPCWarning](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseroom.md#KS_Reactor_Client_ksBaseRoom_SuppressCannotCallRPCWarning), [ksBaseRoom.LocalPlayerId](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseroom.md#KS_Reactor_Client_ksBaseRoom_LocalPlayerId), [ksBaseRoom.InputAcknowledged](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseroom.md#KS_Reactor_Client_ksBaseRoom_InputAcknowledged), [ksBaseRoom.Gravity](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseroom.md#KS_Reactor_Client_ksBaseRoom_Gravity), [ksBaseRoom.ApplyServerTimeScale(float)](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseroom.md#KS_Reactor_Client_ksBaseRoom_ApplyServerTimeScale_System_Single_), [ksBaseRoom.RPCLatency](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseroom.md#KS_Reactor_Client_ksBaseRoom_RPCLatency), [ksBaseRoom.Latency](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseroom.md#KS_Reactor_Client_ksBaseRoom_Latency), [ksBaseRoom.GetTimeAdjuster\<T>()](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseroom.md#KS_Reactor_Client_ksBaseRoom_GetTimeAdjuster__1), [ksBaseRoom.GetTime(uint)](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseroom.md#KS_Reactor_Client_ksBaseRoom_GetTime_System_UInt32_), [ksBaseRoom.DiagnoseConnectionFailure()](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseroom.md#KS_Reactor_Client_ksBaseRoom_DiagnoseConnectionFailure), [ksBaseRoom.CallEntityRPC(ksBaseEntity, uint, params ksMultiType\[\])](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseroom.md#KS_Reactor_Client_ksBaseRoom_CallEntityRPC_KS_Reactor_Client_ksBaseEntity_System_UInt32_KS_Reactor_ksMultiType___), [ksBaseRoom.RegisterConnectionFactory(ksConnectionProtocols, ksConnection.Factory)](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseroom.md#KS_Reactor_Client_ksBaseRoom_RegisterConnectionFactory_KS_Reactor_ksConnectionProtocols_KS_Reactor_Client_ksConnection_Factory_), [ksBaseRoom.IsIdle](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseroom.md#KS_Reactor_Client_ksBaseRoom_IsIdle), [ksBaseRoom.IdleTime](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseroom.md#KS_Reactor_Client_ksBaseRoom_IdleTime), [ksBaseRoom.Protocol](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseroom.md#KS_Reactor_Client_ksBaseRoom_Protocol), [ksBaseRoom.InvokeRPC(uint, ksMultiType\[\])](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseroom.md#KS_Reactor_Client_ksBaseRoom_InvokeRPC_System_UInt32_KS_Reactor_ksMultiType___), [ksBaseRoom.EnableUDPClientFrames](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseroom.md#KS_Reactor_Client_ksBaseRoom_EnableUDPClientFrames), [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)

## Constructors

### ksRoom(ksRoomInfo) <a href="#ks_reactor_client_adaptors_ksroom__ctor_ks_reactor_ksroominfo" id="ks_reactor_client_adaptors_ksroom__ctor_ks_reactor_ksroominfo"></a>

Constructor

```csharp
public ksRoom(ksRoomInfo roomInfo)
```

#### Parameters

`roomInfo` [ksRoomInfo](/reactor/api-reference/ks.reactor/ks.reactor.ksroominfo.md)

Determines where we connect.

### ksRoom() <a href="#ks_reactor_client_adaptors_ksroom__ctor" id="ks_reactor_client_adaptors_ksroom__ctor"></a>

Constructor

```csharp
public ksRoom()
```

## Properties

### Gravity <a href="#ks_reactor_client_adaptors_ksroom_gravity" id="ks_reactor_client_adaptors_ksroom_gravity"></a>

Gravity

```csharp
protected override sealed ksVector3 Gravity { get; set; }
```

#### Property Value

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

### OnUpdate <a href="#ks_reactor_client_adaptors_ksroom_onupdate" id="ks_reactor_client_adaptors_ksroom_onupdate"></a>

Delegates are invoked every update in sorted order of indices.

```csharp
public ksOrderedEventMap<ksEvent<ksRoom.UpdateHandler>> OnUpdate { get; }
```

#### Property Value

[ksOrderedEventMap](/reactor/api-reference/ks.reactor/ks.reactor.ksorderedeventmap-1.md)<[ksEvent](/reactor/api-reference/ks.reactor/ks.reactor.ksevent-1.md)<[ksRoom](/reactor/api-reference/ks.reactor.client.adaptors/ks.reactor.client.adaptors.ksroom.md).[UpdateHandler](/reactor/api-reference/ks.reactor.client.adaptors/ks.reactor.client.adaptors.ksroom/ks.reactor.client.adaptors.ksroom.updatehandler.md)>>

### Physics <a href="#ks_reactor_client_adaptors_ksroom_physics" id="ks_reactor_client_adaptors_ksroom_physics"></a>

This is not implemented and will be null.

```csharp
public override ksBasePhysics Physics { get; }
```

#### Property Value

[ksBasePhysics](/reactor/api-reference/ks.reactor/ks.reactor.ksbasephysics.md)

### Scripts <a href="#ks_reactor_client_adaptors_ksroom_scripts" id="ks_reactor_client_adaptors_ksroom_scripts"></a>

List of scripts attached to the room.

```csharp
public ksScriptList<ksRoom, ksRoomScript> Scripts { get; }
```

#### Property Value

[ksScriptList](/reactor/api-reference/ks.reactor/ks.reactor.ksscriptlist-2.md)<[ksRoom](/reactor/api-reference/ks.reactor.client.adaptors/ks.reactor.client.adaptors.ksroom.md), [ksRoomScript](/reactor/api-reference/ks.reactor.client.adaptors/ks.reactor.client.adaptors.ksroomscript.md)>

## Methods

### CreateEntity() <a href="#ks_reactor_client_adaptors_ksroom_createentity" id="ks_reactor_client_adaptors_ksroom_createentity"></a>

Creates an entity.

```csharp
protected override ksEntity CreateEntity()
```

#### Returns

[ksEntity](/reactor/api-reference/ks.reactor.client.adaptors/ks.reactor.client.adaptors.ksentity.md)

Entity

### CreatePlayer(uint) <a href="#ks_reactor_client_adaptors_ksroom_createplayer_system_uint32" id="ks_reactor_client_adaptors_ksroom_createplayer_system_uint32"></a>

Creates a player.

```csharp
protected override ksPlayer CreatePlayer(uint id)
```

#### Parameters

`id` [uint](https://learn.microsoft.com/dotnet/api/system.uint32)

id of player.

#### Returns

[ksPlayer](/reactor/api-reference/ks.reactor.client.adaptors/ks.reactor.client.adaptors.ksplayer.md)

### InitializeScripts() <a href="#ks_reactor_client_adaptors_ksroom_initializescripts" id="ks_reactor_client_adaptors_ksroom_initializescripts"></a>

Initializes room scripts.

```csharp
protected override void InitializeScripts()
```

### InvokeRPC(uint, ksMultiType\[]) <a href="#ks_reactor_client_adaptors_ksroom_invokerpc_system_uint32_ks_reactor_ksmultitype" id="ks_reactor_client_adaptors_ksroom_invokerpc_system_uint32_ks_reactor_ksmultitype"></a>

Invoke managed RPCs on all room scripts.

```csharp
protected override bool InvokeRPC(uint rpcId, ksMultiType[] rpcArgs)
```

#### Parameters

`rpcId` [uint](https://learn.microsoft.com/dotnet/api/system.uint32)

RPC ID

`rpcArgs` [ksMultiType](/reactor/api-reference/ks.reactor/ks.reactor.ksmultitype.md)\[]

RPC arguments

#### Returns

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

True if the method invoked any RPC handler

### LoadPlayerScripts(ksPlayer) <a href="#ks_reactor_client_adaptors_ksroom_loadplayerscripts_ks_reactor_client_adaptors_ksplayer" id="ks_reactor_client_adaptors_ksroom_loadplayerscripts_ks_reactor_client_adaptors_ksplayer"></a>

Loads and attaches player scripts to a player. This is not implemented.

```csharp
protected override void LoadPlayerScripts(ksPlayer player)
```

#### Parameters

`player` [ksPlayer](/reactor/api-reference/ks.reactor.client.adaptors/ks.reactor.client.adaptors.ksplayer.md)

player to attach scripts to.

### SpawnEntity(ksSpawnParams, params ksMultiType\[]) <a href="#ks_reactor_client_adaptors_ksroom_spawnentity_ks_reactor_ksspawnparams_ks_reactor_ksmultitype" id="ks_reactor_client_adaptors_ksroom_spawnentity_ks_reactor_ksspawnparams_ks_reactor_ksmultitype"></a>

Spawns an entity on the client and sends a request to the server to spawn the entity. The entity will have a temporary spawn id until the server validates the spawn. If the server denies the spawn, the entity will be destroyed.

```csharp
public ksEntity SpawnEntity(ksSpawnParams spawnParams, params ksMultiType[] args)
```

#### Parameters

`spawnParams` [ksSpawnParams](/reactor/api-reference/ks.reactor/ks.reactor.ksspawnparams.md)

Spawn parameters. Must have a non-zero asset id.

`args` [ksMultiType](/reactor/api-reference/ks.reactor/ks.reactor.ksmultitype.md)\[]

Additional arguments to send to the server. These will be available in the server player spawn entity event.

#### Returns

[ksEntity](/reactor/api-reference/ks.reactor.client.adaptors/ks.reactor.client.adaptors.ksentity.md)

Spawned entity

### UpdateScripts() <a href="#ks_reactor_client_adaptors_ksroom_updatescripts" id="ks_reactor_client_adaptors_ksroom_updatescripts"></a>

Calls registered update handlers.

```csharp
protected override void UpdateScripts()
```
