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

# Class ksRoom

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

Unity implementation of ksBaseRoom. Rooms are used to connect to server rooms. The room maintains a simulation state that is regularly synced with the server.

```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.unity/ks.reactor.client.unity.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_unity_ksroom__ctor_ks_reactor_ksroominfo" id="ks_reactor_client_unity_ksroom__ctor_ks_reactor_ksroominfo"></a>

Constructor

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

#### Parameters

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

Room connection information.

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

Default constructor.

```csharp
public ksRoom()
```

## Properties

### AllowPlayerSpawning <a href="#ks_reactor_client_unity_ksroom_allowplayerspawning" id="ks_reactor_client_unity_ksroom_allowplayerspawning"></a>

Are players allowed to spawn entities? If you change the value to true at runtime, you must also change Room.AllowPlayerSpawns on the server.

```csharp
public bool AllowPlayerSpawning { get; set; }
```

#### Property Value

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

### GameObject <a href="#ks_reactor_client_unity_ksroom_gameobject" id="ks_reactor_client_unity_ksroom_gameobject"></a>

Game object for attaching room scripts.

```csharp
public GameObject GameObject { get; }
```

#### Property Value

GameObject

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

Gravity applied in physics simulations.

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

#### Property Value

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

### IsSceneLoaded <a href="#ks_reactor_client_unity_ksroom_issceneloaded" id="ks_reactor_client_unity_ksroom_issceneloaded"></a>

Is the scene for this room loaded?

```csharp
public bool IsSceneLoaded { get; }
```

#### Property Value

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

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

Reactor physics API.

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

#### Property Value

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

### RoomType <a href="#ks_reactor_client_unity_ksroom_roomtype" id="ks_reactor_client_unity_ksroom_roomtype"></a>

The room type component for this room.

```csharp
public ksRoomType RoomType { get; }
```

#### Property Value

[ksRoomType](/reactor/api-reference/ks.reactor.client.unity/ks.reactor.client.unity.ksroomtype.md)

## Methods

### AddEntityFactory(string, ksEntityFactory) <a href="#ks_reactor_client_unity_ksroom_addentityfactory_system_string_ks_reactor_client_unity_ksentityfactor" id="ks_reactor_client_unity_ksroom_addentityfactory_system_string_ks_reactor_client_unity_ksentityfactor"></a>

Factories can only be added once. This is to allow mapping the asset ID to a factory after a match is found in [GetEntityFactory](#KS_Reactor_Client_Unity_ksRoom_GetEntityFactory_System_UInt32_2cSystem_String_). This avoids repetative regex tests against the entity type after a match has been found.

```csharp
public void AddEntityFactory(string regexPattern, ksEntityFactory factory)
```

#### Parameters

`regexPattern` [string](https://learn.microsoft.com/dotnet/api/system.string)

`factory` [ksEntityFactory](/reactor/api-reference/ks.reactor.client.unity/ks.reactor.client.unity.ksentityfactory.md)

### ApplyServerTimeScale(float) <a href="#ks_reactor_client_unity_ksroom_applyservertimescale_system_single" id="ks_reactor_client_unity_ksroom_applyservertimescale_system_single"></a>

Apply the server time scale to the unity time object.

```csharp
protected override void ApplyServerTimeScale(float timeScale)
```

#### Parameters

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

Amount to scale time by.

### CleanUp() <a href="#ks_reactor_client_unity_ksroom_cleanup" id="ks_reactor_client_unity_ksroom_cleanup"></a>

Destroys all entities and players in the room. Call this after disconnecting. If called while connected, does nothing.

```csharp
public override bool CleanUp()
```

#### Returns

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

Returns false if the room was in a state which prevented cleanup.

### Connect(Session, params ksMultiType\[]) <a href="#ks_reactor_client_unity_ksroom_connect_ks_reactor_ksplayerapi_session_ks_reactor_ksmultitype" id="ks_reactor_client_unity_ksroom_connect_ks_reactor_ksplayerapi_session_ks_reactor_ksmultitype"></a>

Connect to the server room.

```csharp
public void Connect(ksPlayerAPI.Session session, params ksMultiType[] authArgs)
```

#### Parameters

`session` [ksPlayerAPI](/reactor/api-reference/ks.reactor/ks.reactor.ksplayerapi.md).[Session](/reactor/api-reference/ks.reactor/ks.reactor.ksplayerapi/ks.reactor.ksplayerapi.session.md)

Player session

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

Room authentication arguments.

### Connect(params ksMultiType\[]) <a href="#ks_reactor_client_unity_ksroom_connect_ks_reactor_ksmultitype" id="ks_reactor_client_unity_ksroom_connect_ks_reactor_ksmultitype"></a>

Connect to the server room.

```csharp
public void Connect(params ksMultiType[] authArgs)
```

#### Parameters

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

Room authentication arguments.

### Connected() <a href="#ks_reactor_client_unity_ksroom_connected" id="ks_reactor_client_unity_ksroom_connected"></a>

Called when a succesful connection is made. Invokes the [OnRoomConnect](/reactor/api-reference/ks.reactor.client.unity/ks.reactor.client.unity.ksreactor.md#KS_Reactor_Client_Unity_ksReactor_OnRoomConnect) event.

```csharp
protected override void Connected()
```

### ConnectionStarted() <a href="#ks_reactor_client_unity_ksroom_connectionstarted" id="ks_reactor_client_unity_ksroom_connectionstarted"></a>

Called when a connection attempt starts. Constructs the room's game object and initializes the [ksEntityLinker](/reactor/api-reference/ks.reactor.client.unity/ks.reactor.client.unity.ksentitylinker.md) for the scene. Does nothing if the room's game object already exists.

```csharp
protected override bool ConnectionStarted()
```

#### Returns

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

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

Create a new [ksEntity](/reactor/api-reference/ks.reactor.client.unity/ks.reactor.client.unity.ksentity.md)

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

#### Returns

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

Entity object

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

Create a new [ksPlayer](/reactor/api-reference/ks.reactor.client.unity/ks.reactor.client.unity.ksplayer.md)

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

#### Parameters

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

Player ID

#### Returns

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

Player object

### Disconnect(bool) <a href="#ks_reactor_client_unity_ksroom_disconnect_system_boolean" id="ks_reactor_client_unity_ksroom_disconnect_system_boolean"></a>

Disconnect from the server.

```csharp
public void Disconnect(bool immediate = false)
```

#### Parameters

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

If immediate is false, then disconnection will be delayed until all queued RPC calls have been sent.

### Disconnected() <a href="#ks_reactor_client_unity_ksroom_disconnected" id="ks_reactor_client_unity_ksroom_disconnected"></a>

Called when the room disconnects. Invokes the [OnRoomDisconnect](/reactor/api-reference/ks.reactor.client.unity/ks.reactor.client.unity.ksreactor.md#KS_Reactor_Client_Unity_ksReactor_OnRoomDisconnect) event.

```csharp
protected override void Disconnected()
```

### GetEntityFactory(uint, string) <a href="#ks_reactor_client_unity_ksroom_getentityfactory_system_uint32_system_string" id="ks_reactor_client_unity_ksroom_getentityfactory_system_uint32_system_string"></a>

Look for a factory mapped to the asset ID. If one is not found, then find the first factory mapped to a regex pattern that matches the entity type. If a factory was found, add it to the asset mapping and return the factory. Else if a factory still has not been found, then use the default factory and add it to the asset mapping before returning it.

```csharp
public ksEntityFactory GetEntityFactory(uint assetId, string entityType)
```

#### Parameters

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

`entityType` [string](https://learn.microsoft.com/dotnet/api/system.string)

#### Returns

[ksEntityFactory](/reactor/api-reference/ks.reactor.client.unity/ks.reactor.client.unity.ksentityfactory.md)

### GetPrefabScale(ksSpawnParams) <a href="#ks_reactor_client_unity_ksroom_getprefabscale_ks_reactor_ksspawnparams" id="ks_reactor_client_unity_ksroom_getprefabscale_ks_reactor_ksspawnparams"></a>

Gets the scale from the prefab the `spawnParams` will spawn.

```csharp
protected override ksVector3 GetPrefabScale(ksSpawnParams spawnParams)
```

#### Parameters

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

Spawn parameters to get prefab scale for.

#### Returns

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

Prefab scale.

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

Initializes room scripts.

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

### Initialized() <a href="#ks_reactor_client_unity_ksroom_initialized" id="ks_reactor_client_unity_ksroom_initialized"></a>

Called after room scripts and entities are initialized after the initial sync with the server. Invokes the [OnRoomInitialized](/reactor/api-reference/ks.reactor.client.unity/ks.reactor.client.unity.ksreactor.md#KS_Reactor_Client_Unity_ksReactor_OnRoomInitialized) event.

```csharp
protected override void Initialized()
```

### InvokeRPC(uint, ksMultiType\[]) <a href="#ks_reactor_client_unity_ksroom_invokerpc_system_uint32_ks_reactor_ksmultitype" id="ks_reactor_client_unity_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

### LoadPermanentEntities(List\<ksEntity>) <a href="#ks_reactor_client_unity_ksroom_loadpermanententities_system_collections_generic_list_ks_reactor_clie" id="ks_reactor_client_unity_ksroom_loadpermanententities_system_collections_generic_list_ks_reactor_clie"></a>

Loads permanent entities from the scene.

```csharp
protected override void LoadPermanentEntities(List<ksEntity> entities)
```

#### Parameters

`entities` [List](https://learn.microsoft.com/dotnet/api/system.collections.generic.list-1)<[ksEntity](/reactor/api-reference/ks.reactor.client.unity/ks.reactor.client.unity.ksentity.md)>

List to load entities that have [IsPermanent](/reactor/api-reference/ks.reactor.client.unity/ks.reactor.client.unity.ksentitycomponent.md#KS_Reactor_Client_Unity_ksEntityComponent_IsPermanent) set to true into.

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

Loads and attaches player scripts to a player.

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

#### Parameters

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

Player to attach the [ksPlayerScript](/reactor/api-reference/ks.reactor.client.unity/ks.reactor.client.unity.ksplayerscript.md) components to.

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

Spawns an entity on the client and sends a request to spawn it on the server. The entity will have a temporary spawn id until the server confirms the spawn.

```csharp
public ksEntity SpawnEntity(GameObject prefab, params ksMultiType[] args)
```

#### Parameters

`prefab` GameObject

Prefab to spawn. Must have a [ksEntityComponent](/reactor/api-reference/ks.reactor.client.unity/ks.reactor.client.unity.ksentitycomponent.md) with a non-zero asset id. If asset is is zero, make sure your prefab is in a Resources folder or asset bundles.

`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.unity/ks.reactor.client.unity.ksentity.md)

Spawned entity

### SpawnEntity(GameObject, ksVector3, params ksMultiType\[]) <a href="#ks_reactor_client_unity_ksroom_spawnentity_unityengine_gameobject_ks_reactor_ksvector3_ks_reactor_ks" id="ks_reactor_client_unity_ksroom_spawnentity_unityengine_gameobject_ks_reactor_ksvector3_ks_reactor_ks"></a>

Spawns an entity on the client and sends a request to spawn it on the server. The entity will have a temporary spawn id until the server confirms the spawn.

```csharp
public ksEntity SpawnEntity(GameObject prefab, ksVector3 position, params ksMultiType[] args)
```

#### Parameters

`prefab` GameObject

Prefab to spawn. Must have a [ksEntityComponent](/reactor/api-reference/ks.reactor.client.unity/ks.reactor.client.unity.ksentitycomponent.md) with a non-zero asset id. If asset is is zero, make sure your prefab is in a Resources folder or asset bundles.

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

Position to spawn at.

`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.unity/ks.reactor.client.unity.ksentity.md)

Spawned entity

### SpawnEntity(GameObject, ksVector3, ksQuaternion, params ksMultiType\[]) <a href="#ks_reactor_client_unity_ksroom_spawnentity_unityengine_gameobject_ks_reactor_ksvector3_ks_reactor_ks" id="ks_reactor_client_unity_ksroom_spawnentity_unityengine_gameobject_ks_reactor_ksvector3_ks_reactor_ks"></a>

Spawns an entity on the client and sends a request to spawn it on the server. The entity will have a temporary spawn id until the server confirms the spawn.

```csharp
public ksEntity SpawnEntity(GameObject prefab, ksVector3 position, ksQuaternion rotation, params ksMultiType[] args)
```

#### Parameters

`prefab` GameObject

Prefab to spawn. Must have a [ksEntityComponent](/reactor/api-reference/ks.reactor.client.unity/ks.reactor.client.unity.ksentitycomponent.md) with a non-zero asset id. If asset is is zero, make sure your prefab is in a Resources folder or asset bundles.

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

Position to spawn at.

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

`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.unity/ks.reactor.client.unity.ksentity.md)

Spawned entity

### SpawnEntity(GameObject, ksVector3, ksQuaternion, ksVector3, params ksMultiType\[]) <a href="#ks_reactor_client_unity_ksroom_spawnentity_unityengine_gameobject_ks_reactor_ksvector3_ks_reactor_ks" id="ks_reactor_client_unity_ksroom_spawnentity_unityengine_gameobject_ks_reactor_ksvector3_ks_reactor_ks"></a>

Spawns an entity on the client and sends a request to spawn it on the server. The entity will have a temporary spawn id until the server confirms the spawn.

```csharp
public ksEntity SpawnEntity(GameObject prefab, ksVector3 position, ksQuaternion rotation, ksVector3 scale, params ksMultiType[] args)
```

#### Parameters

`prefab` GameObject

Prefab to spawn. Must have a [ksEntityComponent](/reactor/api-reference/ks.reactor.client.unity/ks.reactor.client.unity.ksentitycomponent.md) with a non-zero asset id. If asset is is zero, make sure your prefab is in a Resources folder or asset bundles.

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

Position to spawn at.

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

Rotation to spawn at.

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

Absolute scale to spawn at.

`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.unity/ks.reactor.client.unity.ksentity.md)

Spawned entity

### SpawnEntity(GameObject, ksVector3, ksQuaternion, ksVector3, ScaleModes, params ksMultiType\[]) <a href="#ks_reactor_client_unity_ksroom_spawnentity_unityengine_gameobject_ks_reactor_ksvector3_ks_reactor_ks" id="ks_reactor_client_unity_ksroom_spawnentity_unityengine_gameobject_ks_reactor_ksvector3_ks_reactor_ks"></a>

Spawns an entity on the client and sends a request to spawn it on the server. The entity will have a temporary spawn id until the server confirms the spawn.

```csharp
public ksEntity SpawnEntity(GameObject prefab, ksVector3 position, ksQuaternion rotation, ksVector3 scale, ksSpawnParams.ScaleModes scaleMode, params ksMultiType[] args)
```

#### Parameters

`prefab` GameObject

Prefab to spawn. Must have a [ksEntityComponent](/reactor/api-reference/ks.reactor.client.unity/ks.reactor.client.unity.ksentitycomponent.md) with a non-zero asset id. If asset is is zero, make sure your prefab is in a Resources folder or asset bundles.

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

Position to spawn at.

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

Rotation to spawn at.

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

Scale to spawn at.

`scaleMode` [ksSpawnParams](/reactor/api-reference/ks.reactor/ks.reactor.ksspawnparams.md).[ScaleModes](/reactor/api-reference/ks.reactor/ks.reactor.ksspawnparams/ks.reactor.ksspawnparams.scalemodes.md)

Determines if `scale` is relative or absolute.

`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.unity/ks.reactor.client.unity.ksentity.md)

Spawned entity

### SpawnEntity(GameObject, ksVector2, params ksMultiType\[]) <a href="#ks_reactor_client_unity_ksroom_spawnentity_unityengine_gameobject_ks_reactor_ksvector2_ks_reactor_ks" id="ks_reactor_client_unity_ksroom_spawnentity_unityengine_gameobject_ks_reactor_ksvector2_ks_reactor_ks"></a>

Spawns an entity on the client and sends a request to spawn it on the server. The entity will have a temporary spawn id until the server confirms the spawn.

```csharp
public ksEntity SpawnEntity(GameObject prefab, ksVector2 position, params ksMultiType[] args)
```

#### Parameters

`prefab` GameObject

Prefab to spawn. Must have a [ksEntityComponent](/reactor/api-reference/ks.reactor.client.unity/ks.reactor.client.unity.ksentitycomponent.md) with a non-zero asset id. If asset is is zero, make sure your prefab is in a Resources folder or asset bundles.

`position` [ksVector2](/reactor/api-reference/ks.reactor/ks.reactor.ksvector2.md)

Position to spawn at.

`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.unity/ks.reactor.client.unity.ksentity.md)

Spawned entity

### SpawnEntity(GameObject, ksVector2, float, params ksMultiType\[]) <a href="#ks_reactor_client_unity_ksroom_spawnentity_unityengine_gameobject_ks_reactor_ksvector2_system_single" id="ks_reactor_client_unity_ksroom_spawnentity_unityengine_gameobject_ks_reactor_ksvector2_system_single"></a>

Spawns an entity on the client and sends a request to spawn it on the server. The entity will have a temporary spawn id until the server confirms the spawn.

```csharp
public ksEntity SpawnEntity(GameObject prefab, ksVector2 position, float rotation, params ksMultiType[] args)
```

#### Parameters

`prefab` GameObject

Prefab to spawn. Must have a [ksEntityComponent](/reactor/api-reference/ks.reactor.client.unity/ks.reactor.client.unity.ksentitycomponent.md) with a non-zero asset id. If asset is is zero, make sure your prefab is in a Resources folder or asset bundles.

`position` [ksVector2](/reactor/api-reference/ks.reactor/ks.reactor.ksvector2.md)

Position to spawn at.

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

Rotation to spawn at.

`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.unity/ks.reactor.client.unity.ksentity.md)

Spawned entity

### SpawnEntity(GameObject, ksVector2, float, ksVector2, params ksMultiType\[]) <a href="#ks_reactor_client_unity_ksroom_spawnentity_unityengine_gameobject_ks_reactor_ksvector2_system_single" id="ks_reactor_client_unity_ksroom_spawnentity_unityengine_gameobject_ks_reactor_ksvector2_system_single"></a>

Spawns an entity on the client and sends a request to spawn it on the server. The entity will have a temporary spawn id until the server confirms the spawn.

```csharp
public ksEntity SpawnEntity(GameObject prefab, ksVector2 position, float rotation, ksVector2 scale, params ksMultiType[] args)
```

#### Parameters

`prefab` GameObject

Prefab to spawn. Must have a [ksEntityComponent](/reactor/api-reference/ks.reactor.client.unity/ks.reactor.client.unity.ksentitycomponent.md) with a non-zero asset id. If asset is is zero, make sure your prefab is in a Resources folder or asset bundles.

`position` [ksVector2](/reactor/api-reference/ks.reactor/ks.reactor.ksvector2.md)

Position to spawn at.

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

Rotation to spawn at.

`scale` [ksVector2](/reactor/api-reference/ks.reactor/ks.reactor.ksvector2.md)

Absolute scale to spawn at.

`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.unity/ks.reactor.client.unity.ksentity.md)

Spawned entity

### SpawnEntity(GameObject, ksVector2, float, ksVector2, ScaleModes, params ksMultiType\[]) <a href="#ks_reactor_client_unity_ksroom_spawnentity_unityengine_gameobject_ks_reactor_ksvector2_system_single" id="ks_reactor_client_unity_ksroom_spawnentity_unityengine_gameobject_ks_reactor_ksvector2_system_single"></a>

Spawns an entity on the client and sends a request to spawn it on the server. The entity will have id zero until the server confirms the spawn.

```csharp
public ksEntity SpawnEntity(GameObject prefab, ksVector2 position, float rotation, ksVector2 scale, ksSpawnParams.ScaleModes scaleMode, params ksMultiType[] args)
```

#### Parameters

`prefab` GameObject

Prefab to spawn. Must have a [ksEntityComponent](/reactor/api-reference/ks.reactor.client.unity/ks.reactor.client.unity.ksentitycomponent.md) with a non-zero asset id. If asset is is zero, make sure your prefab is in a Resources folder or asset bundles.

`position` [ksVector2](/reactor/api-reference/ks.reactor/ks.reactor.ksvector2.md)

Position to spawn at.

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

Rotation to spawn at.

`scale` [ksVector2](/reactor/api-reference/ks.reactor/ks.reactor.ksvector2.md)

Scale to spawn at.

`scaleMode` [ksSpawnParams](/reactor/api-reference/ks.reactor/ks.reactor.ksspawnparams.md).[ScaleModes](/reactor/api-reference/ks.reactor/ks.reactor.ksspawnparams/ks.reactor.ksspawnparams.scalemodes.md)

Determines if `scale` is relative or absolute.

`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.unity/ks.reactor.client.unity.ksentity.md)

Spawned entity

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

Spawns an entity on the client and sends a request to spawn it on the server. The entity will have a temporary spawn id until the server confirms the spawn.

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

#### Parameters

`spawnParams` [ksClientSpawnParams](/reactor/api-reference/ks.reactor.client.unity/ks.reactor.client.unity.ksclientspawnparams.md)

Spawn parameters

`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.unity/ks.reactor.client.unity.ksentity.md)

Spawned entity

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

Does nothing in Unity. Updates are handled by Unity's MonoBehaviour Update() methods.

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