> 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.server/ks.reactor.server.ksiserverroom.md).

# Interface ksIServerRoom

Namespace: [KS.Reactor.Server](/reactor/api-reference/ks.reactor.server.md)\
Assembly: KSReactor.dll

Public interface for a server room. A room can have a simulation. Players can connect to rooms.

```csharp
public interface ksIServerRoom
```

## Properties

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

Are players allowed to spawn entities? Changing this value at runtime will not sync to clients, so if you change it to true at runtime, you must also change the spawn rule on the clients to allow them to spawn entities.

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

#### Property Value

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

### CacheTimer <a href="#ks_reactor_server_ksiserverroom_cachetimer" id="ks_reactor_server_ksiserverroom_cachetimer"></a>

Perfomance timer that tracks the amount of time it takes to cache a frame for the encoder.

```csharp
ksIPerformanceTimer CacheTimer { get; }
```

#### Property Value

ksIPerformanceTimer

### Cluster <a href="#ks_reactor_server_ksiserverroom_cluster" id="ks_reactor_server_ksiserverroom_cluster"></a>

Cluster Interface

```csharp
ksICluster Cluster { get; }
```

#### Property Value

[ksICluster](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksicluster.md)

### ConnectedPlayerCount <a href="#ks_reactor_server_ksiserverroom_connectedplayercount" id="ks_reactor_server_ksiserverroom_connectedplayercount"></a>

Number of connected (non-virtual) players.

```csharp
int ConnectedPlayerCount { get; }
```

#### Property Value

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

### ControllersTimer <a href="#ks_reactor_server_ksiserverroom_controllerstimer" id="ks_reactor_server_ksiserverroom_controllerstimer"></a>

Performance timer that tracks the amount of time it takes to update all player controllers.

```csharp
ksIPerformanceTimer ControllersTimer { get; }
```

#### Property Value

ksIPerformanceTimer

### Coroutines <a href="#ks_reactor_server_ksiserverroom_coroutines" id="ks_reactor_server_ksiserverroom_coroutines"></a>

Access to the coroutine sub system.

```csharp
ksCoroutineManager Coroutines { get; }
```

#### Property Value

ksCoroutineManager

### DefaultPhysXScene <a href="#ks_reactor_server_ksiserverroom_defaultphysxscene" id="ks_reactor_server_ksiserverroom_defaultphysxscene"></a>

Get the default PhysX scene. When spawning new entities, they will be added to this scene.

```csharp
pxScene DefaultPhysXScene { get; }
```

#### Property Value

[pxScene](/reactor/api-reference/ks.reactor.server.physx/ks.reactor.server.physx.pxscene.md)

### DefaultPhysXSceneIndex <a href="#ks_reactor_server_ksiserverroom_defaultphysxsceneindex" id="ks_reactor_server_ksiserverroom_defaultphysxsceneindex"></a>

Get the default PhysX scene index.

```csharp
int DefaultPhysXSceneIndex { get; set; }
```

#### Property Value

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

### DynamicEntities <a href="#ks_reactor_server_ksiserverroom_dynamicentities" id="ks_reactor_server_ksiserverroom_dynamicentities"></a>

List of dynamic (non-permanent) in the room.

```csharp
ksConstList<ksIServerEntity> DynamicEntities { get; }
```

#### Property Value

ksConstList<[ksIServerEntity](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksiserverentity.md)>

### EncodeTimer <a href="#ks_reactor_server_ksiserverroom_encodetimer" id="ks_reactor_server_ksiserverroom_encodetimer"></a>

Perfomance timer that tracks the amount of time it takes to enocde and send data to connected clients.

```csharp
ksIPerformanceTimer EncodeTimer { get; }
```

#### Property Value

ksIPerformanceTimer

### Entities <a href="#ks_reactor_server_ksiserverroom_entities" id="ks_reactor_server_ksiserverroom_entities"></a>

List of entities in the room.

```csharp
ksMultiList<ksIServerEntity> Entities { get; }
```

#### Property Value

ksMultiList<[ksIServerEntity](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksiserverentity.md)>

### Id <a href="#ks_reactor_server_ksiserverroom_id" id="ks_reactor_server_ksiserverroom_id"></a>

Room ID

```csharp
[Obsolete("Use Info.Id")]
uint Id { get; }
```

#### Property Value

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

### Info <a href="#ks_reactor_server_ksiserverroom_info" id="ks_reactor_server_ksiserverroom_info"></a>

Room info containing data that is part of the response to [GetRoomInfo](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksicluster.md#KS_Reactor_Server_ksICluster_GetRoomInfo_System_Collections_Generic_IEnumerable_7bSystem_String_7d_) calls, and, for public rooms, is also part of the response when client's call ksReactor.GetServers. Includes data required for connecting to the room.

```csharp
ksRoomInfo Info { get; }
```

#### Property Value

ksRoomInfo

### InputBufferDropLimit <a href="#ks_reactor_server_ksiserverroom_inputbufferdroplimit" id="ks_reactor_server_ksiserverroom_inputbufferdroplimit"></a>

Drop inputs if a player's input buffer reaches this size.

```csharp
int InputBufferDropLimit { get; set; }
```

#### Property Value

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

### InputBufferWarnLimit <a href="#ks_reactor_server_ksiserverroom_inputbufferwarnlimit" id="ks_reactor_server_ksiserverroom_inputbufferwarnlimit"></a>

Warn that inputs are overloaded when a player's input buffer size goes over this limit.

```csharp
int InputBufferWarnLimit { get; set; }
```

#### Property Value

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

### IsPublic <a href="#ks_reactor_server_ksiserverroom_ispublic" id="ks_reactor_server_ksiserverroom_ispublic"></a>

Is the room public

```csharp
[Obsolete("Use Info.IsPublic")]
bool IsPublic { get; set; }
```

#### Property Value

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

### IsShuttingDown <a href="#ks_reactor_server_ksiserverroom_isshuttingdown" id="ks_reactor_server_ksiserverroom_isshuttingdown"></a>

Is the room shutting down?

```csharp
[Obsolete("Use State == ksServerRoomStates.STOPPING")]
bool IsShuttingDown { get; }
```

#### Property Value

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

### OnPlayerSpawnEntity <a href="#ks_reactor_server_ksiserverroom_onplayerspawnentity" id="ks_reactor_server_ksiserverroom_onplayerspawnentity"></a>

Contains a [Validate](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksserverevents/ks.reactor.server.ksserverevents.playerspawnentity.md#KS_Reactor_Server_ksServerEvents_PlayerSpawnEntity_Validate) event for validating a player request to spawn an entity, and a [Complete](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksserverevents/ks.reactor.server.ksserverevents.playerspawnentity.md#KS_Reactor_Server_ksServerEvents_PlayerSpawnEntity_Complete) event that fire when a player spawns an entity.

```csharp
ksServerEvents.PlayerSpawnEntity OnPlayerSpawnEntity { get; }
```

#### Property Value

[ksServerEvents](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksserverevents.md).[PlayerSpawnEntity](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksserverevents/ks.reactor.server.ksserverevents.playerspawnentity.md)

### OnRPC <a href="#ks_reactor_server_ksiserverroom_onrpc" id="ks_reactor_server_ksiserverroom_onrpc"></a>

Invoked when a player calls an RPC on the room. Indexed by RPC id.

```csharp
ksEventMap<ksServerEvents.RPCHandler> OnRPC { get; }
```

#### Property Value

ksEventMap<[ksServerEvents](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksserverevents.md).[RPCHandler](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksserverevents/ks.reactor.server.ksserverevents.rpchandler.md)>

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

Delegates are invoked every update in sorted order of indices.

```csharp
ksOrderedEventMap<ksUpdateEvent<ksServerEvents.UpdateHandler>> OnUpdate { get; }
```

#### Property Value

ksOrderedEventMap<[ksUpdateEvent](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksupdateevent-1.md)<[ksServerEvents](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksserverevents.md).[UpdateHandler](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksserverevents/ks.reactor.server.ksserverevents.updatehandler.md)>>

### ParallelControllerUpdates <a href="#ks_reactor_server_ksiserverroom_parallelcontrollerupdates" id="ks_reactor_server_ksiserverroom_parallelcontrollerupdates"></a>

Should player controller updates use multithreading to update in parallel?

```csharp
bool ParallelControllerUpdates { get; set; }
```

#### Property Value

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

### ParallelOwnedEntityUpdates <a href="#ks_reactor_server_ksiserverroom_parallelownedentityupdates" id="ks_reactor_server_ksiserverroom_parallelownedentityupdates"></a>

Should entity transform and property updates from client-owned entities be applied in parallel on the server using multithreading?

```csharp
bool ParallelOwnedEntityUpdates { get; set; }
```

#### Property Value

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

### PermanentEntities <a href="#ks_reactor_server_ksiserverroom_permanententities" id="ks_reactor_server_ksiserverroom_permanententities"></a>

List of permanent entities in the room.

```csharp
ksConstList<ksIServerEntity> PermanentEntities { get; }
```

#### Property Value

ksConstList<[ksIServerEntity](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksiserverentity.md)>

### PhysXScenes <a href="#ks_reactor_server_ksiserverroom_physxscenes" id="ks_reactor_server_ksiserverroom_physxscenes"></a>

PhysX scenes managed by the room.

```csharp
ksConstList<pxScene> PhysXScenes { get; }
```

#### Property Value

ksConstList<[pxScene](/reactor/api-reference/ks.reactor.server.physx/ks.reactor.server.physx.pxscene.md)>

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

Physics API

```csharp
ksBaseServerPhysics Physics { get; }
```

#### Property Value

[ksBaseServerPhysics](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksbaseserverphysics.md)

### PhysicsTimer <a href="#ks_reactor_server_ksiserverroom_physicstimer" id="ks_reactor_server_ksiserverroom_physicstimer"></a>

Perfomance timer that tracks the amount of time it takes to perform a physics simulation step.

```csharp
ksIPerformanceTimer PhysicsTimer { get; }
```

#### Property Value

ksIPerformanceTimer

### Players <a href="#ks_reactor_server_ksiserverroom_players" id="ks_reactor_server_ksiserverroom_players"></a>

List of players in the room.

```csharp
ksConstList<ksIServerPlayer> Players { get; }
```

#### Property Value

ksConstList<[ksIServerPlayer](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksiserverplayer.md)>

### Properties <a href="#ks_reactor_server_ksiserverroom_properties" id="ks_reactor_server_ksiserverroom_properties"></a>

Room Properties

```csharp
ksPropertyMap Properties { get; }
```

#### Property Value

ksPropertyMap

### PublicData <a href="#ks_reactor_server_ksiserverroom_publicdata" id="ks_reactor_server_ksiserverroom_publicdata"></a>

Public room data.

```csharp
[Obsolete("Use Info.PublicData")]
ksJSON PublicData { get; set; }
```

#### Property Value

ksJSON

### PublicTags <a href="#ks_reactor_server_ksiserverroom_publictags" id="ks_reactor_server_ksiserverroom_publictags"></a>

Public room tags. Tags can be retrieved from ksRoomInfo objects returned in GetRooms calls from the cluster or on the client.

```csharp
[Obsolete("Use Info.PublicTags")]
ksHashSet<string> PublicTags { get; }
```

#### Property Value

ksHashSet<[string](https://learn.microsoft.com/dotnet/api/system.string)>

### RPCTimer <a href="#ks_reactor_server_ksiserverroom_rpctimer" id="ks_reactor_server_ksiserverroom_rpctimer"></a>

Performance timer that tracks the amount of time it takes to decode and invoke RPCs.

```csharp
ksIPerformanceTimer RPCTimer { get; }
```

#### Property Value

ksIPerformanceTimer

### Scene <a href="#ks_reactor_server_ksiserverroom_scene" id="ks_reactor_server_ksiserverroom_scene"></a>

Scene name

```csharp
[Obsolete("Use Info.Scene")]
string Scene { get; }
```

#### Property Value

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

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

List of scripts attached to the room.

```csharp
ksScriptList<ksIServerRoom, ksServerRoomScript> Scripts { get; }
```

#### Property Value

ksScriptList<[ksIServerRoom](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksiserverroom.md), [ksServerRoomScript](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksserverroomscript.md)>

### ScriptsTimer <a href="#ks_reactor_server_ksiserverroom_scriptstimer" id="ks_reactor_server_ksiserverroom_scriptstimer"></a>

Perfomance timer that tracks the amount of time it takes to run all script update methods.

```csharp
ksIPerformanceTimer ScriptsTimer { get; }
```

#### Property Value

ksIPerformanceTimer

### SkipFrameUpdates <a href="#ks_reactor_server_ksiserverroom_skipframeupdates" id="ks_reactor_server_ksiserverroom_skipframeupdates"></a>

Check or set whether updates should be run this frame. At the end of each frame this value is set to false. Setting this to true during an update will finish running all update handlers in the current execution group and prevent later execution groups from running.

```csharp
bool SkipFrameUpdates { get; set; }
```

#### Property Value

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

### State <a href="#ks_reactor_server_ksiserverroom_state" id="ks_reactor_server_ksiserverroom_state"></a>

Room state

```csharp
ksServerRoomStates State { get; }
```

#### Property Value

[ksServerRoomStates](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksserverroomstates.md)

### Time <a href="#ks_reactor_server_ksiserverroom_time" id="ks_reactor_server_ksiserverroom_time"></a>

Server time

```csharp
ksServerTime Time { get; }
```

#### Property Value

[ksServerTime](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksservertime.md)

### Type <a href="#ks_reactor_server_ksiserverroom_type" id="ks_reactor_server_ksiserverroom_type"></a>

Room type

```csharp
[Obsolete("Use Info.Type")]
string Type { get; }
```

#### Property Value

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

### UpdateTimer <a href="#ks_reactor_server_ksiserverroom_updatetimer" id="ks_reactor_server_ksiserverroom_updatetimer"></a>

Perfomance timer that tracks the amount of time update cycles take.

```csharp
ksIPerformanceTimer UpdateTimer { get; }
```

#### Property Value

ksIPerformanceTimer

### VirtualPlayerCount <a href="#ks_reactor_server_ksiserverroom_virtualplayercount" id="ks_reactor_server_ksiserverroom_virtualplayercount"></a>

Number of virtual players.

```csharp
int VirtualPlayerCount { get; }
```

#### Property Value

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

## Methods

### AddPhysXScene(pxScene, bool) <a href="#ks_reactor_server_ksiserverroom_addphysxscene_ks_reactor_server_physx_pxscene_system_boolean" id="ks_reactor_server_ksiserverroom_addphysxscene_ks_reactor_server_physx_pxscene_system_boolean"></a>

Add a PhysX scene to the list of scenes managed by the room.

```csharp
void AddPhysXScene(pxScene scene, bool setAsDefault)
```

#### Parameters

`scene` [pxScene](/reactor/api-reference/ks.reactor.server.physx/ks.reactor.server.physx.pxscene.md)

PhysX scene

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

If true, this scene will be set as the default scene.

### CallBatchRPC(uint, IList\<ksIServerEntity>, params ksMultiType\[]) <a href="#ks_reactor_server_ksiserverroom_callbatchrpc_system_uint32_system_collections_generic_ilist_ks_react" id="ks_reactor_server_ksiserverroom_callbatchrpc_system_uint32_system_collections_generic_ilist_ks_react"></a>

Calls a function on multiple entities for all players.

```csharp
void CallBatchRPC(uint rpcId, IList<ksIServerEntity> entities, params ksMultiType[] arguments)
```

#### Parameters

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

RPC ID to invoke

`entities` [IList](https://learn.microsoft.com/dotnet/api/system.collections.generic.ilist-1)<[ksIServerEntity](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksiserverentity.md)>

Entities to send the RPC to.

`arguments` ksMultiType\[]

RPC arguments

### CallBatchRPC(ksIServerPlayer, uint, IList\<ksIServerEntity>, params ksMultiType\[]) <a href="#ks_reactor_server_ksiserverroom_callbatchrpc_ks_reactor_server_ksiserverplayer_system_uint32_system" id="ks_reactor_server_ksiserverroom_callbatchrpc_ks_reactor_server_ksiserverplayer_system_uint32_system"></a>

Calls a function on multiple entities for a single player.

```csharp
void CallBatchRPC(ksIServerPlayer player, uint rpcId, IList<ksIServerEntity> entities, params ksMultiType[] arguments)
```

#### Parameters

`player` [ksIServerPlayer](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksiserverplayer.md)

Player to send the RPC to.

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

RPC ID to invoke

`entities` [IList](https://learn.microsoft.com/dotnet/api/system.collections.generic.ilist-1)<[ksIServerEntity](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksiserverentity.md)>

Entities to send the RPC to.

`arguments` ksMultiType\[]

RPC arguments

### CallBatchRPC(IList\<ksIServerPlayer>, uint, IList\<ksIServerEntity>, params ksMultiType\[]) <a href="#ks_reactor_server_ksiserverroom_callbatchrpc_system_collections_generic_ilist_ks_reactor_server_ksis" id="ks_reactor_server_ksiserverroom_callbatchrpc_system_collections_generic_ilist_ks_reactor_server_ksis"></a>

Calls a function on multiple entities for a group of players.

```csharp
void CallBatchRPC(IList<ksIServerPlayer> players, uint rpcId, IList<ksIServerEntity> entities, params ksMultiType[] arguments)
```

#### Parameters

`players` [IList](https://learn.microsoft.com/dotnet/api/system.collections.generic.ilist-1)<[ksIServerPlayer](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksiserverplayer.md)>

Players to send the RPC to.

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

RPC ID to invoke

`entities` [IList](https://learn.microsoft.com/dotnet/api/system.collections.generic.ilist-1)<[ksIServerEntity](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksiserverentity.md)>

Entities to send the RPC to.

`arguments` ksMultiType\[]

RPC arguments

### CallRPC(uint, params ksMultiType\[]) <a href="#ks_reactor_server_ksiserverroom_callrpc_system_uint32_ks_reactor_ksmultitype" id="ks_reactor_server_ksiserverroom_callrpc_system_uint32_ks_reactor_ksmultitype"></a>

Calls a function on all players.

```csharp
void CallRPC(uint rpcId, params ksMultiType[] arguments)
```

#### Parameters

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

RPC ID to invoke.

`arguments` ksMultiType\[]

RPC arguments

### CallRPC(ksIServerPlayer, uint, params ksMultiType\[]) <a href="#ks_reactor_server_ksiserverroom_callrpc_ks_reactor_server_ksiserverplayer_system_uint32_ks_reactor_k" id="ks_reactor_server_ksiserverroom_callrpc_ks_reactor_server_ksiserverplayer_system_uint32_ks_reactor_k"></a>

Calls a function on a player.

```csharp
void CallRPC(ksIServerPlayer player, uint rpcId, params ksMultiType[] arguments)
```

#### Parameters

`player` [ksIServerPlayer](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksiserverplayer.md)

Player to send the RPC to.

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

RPC ID to invoke

`arguments` ksMultiType\[]

RPC arguments

### CallRPC(IList\<ksIServerPlayer>, uint, params ksMultiType\[]) <a href="#ks_reactor_server_ksiserverroom_callrpc_system_collections_generic_ilist_ks_reactor_server_ksiserver" id="ks_reactor_server_ksiserverroom_callrpc_system_collections_generic_ilist_ks_reactor_server_ksiserver"></a>

Calls a function on a group of players.

```csharp
void CallRPC(IList<ksIServerPlayer> players, uint rpcId, params ksMultiType[] arguments)
```

#### Parameters

`players` [IList](https://learn.microsoft.com/dotnet/api/system.collections.generic.ilist-1)<[ksIServerPlayer](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksiserverplayer.md)>

Players to send the RPC to.

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

RPC ID to invoke

`arguments` ksMultiType\[]

RPC arguments

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

Create a virtual player and pass authentication arguments.

```csharp
void CreateVirtualPlayer(params ksMultiType[] authArgs)
```

#### Parameters

`authArgs` ksMultiType\[]

Authentication argurments.

### GetEntity(ksEntityId) <a href="#ks_reactor_server_ksiserverroom_getentity_ks_reactor_ksentityid" id="ks_reactor_server_ksiserverroom_getentity_ks_reactor_ksentityid"></a>

Gets the entity in this room with the given id.

```csharp
ksIServerEntity GetEntity(ksEntityId entityId)
```

#### Parameters

`entityId` ksEntityId

Entity ID

#### Returns

[ksIServerEntity](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksiserverentity.md)

Entity

### GetEntity(ksEntityId, uint) <a href="#ks_reactor_server_ksiserverroom_getentity_ks_reactor_ksentityid_system_uint32" id="ks_reactor_server_ksiserverroom_getentity_ks_reactor_ksentityid_system_uint32"></a>

Gets an entity by id. The id may be a temporary spawn id. If it is not a temporary id and the entity has a temporary spawn id, removes it from the player-spawned entity map.

```csharp
ksIServerEntity GetEntity(ksEntityId entityId, uint playerId)
```

#### Parameters

`entityId` ksEntityId

Entity id

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

Id of player who sent the message with the entity id. This is needed to get the entity if the id a temporary spawn id for an entity the player spawned.

#### Returns

[ksIServerEntity](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksiserverentity.md)

Entity, or null if none was found.

### GetPlayer(uint, bool) <a href="#ks_reactor_server_ksiserverroom_getplayer_system_uint32_system_boolean" id="ks_reactor_server_ksiserverroom_getplayer_system_uint32_system_boolean"></a>

Gets the player with the given id connected to this room.

```csharp
ksIServerPlayer GetPlayer(uint playerId, bool includeUnauthenticated = false)
```

#### Parameters

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

Player ID

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

If true, a player who has not yet passed authentication may be returned.

#### Returns

[ksIServerPlayer](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksiserverplayer.md)

Player

### HasActivity(ActivityFlags) <a href="#ks_reactor_server_ksiserverroom_hasactivity_ks_reactor_server_ksserverroomscript_activityflags" id="ks_reactor_server_ksiserverroom_hasactivity_ks_reactor_server_ksserverroomscript_activityflags"></a>

Check for specific server activities. If a combination of flags is checked then the result will return true if any of the flags are set.

```csharp
bool HasActivity(ksServerRoomScript.ActivityFlags flag)
```

#### Parameters

`flag` [ksServerRoomScript](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksserverroomscript.md).[ActivityFlags](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksserverroomscript/ks.reactor.server.ksserverroomscript.activityflags.md)

Activity flags

#### Returns

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

True if an activity corresponding to any of the set flags was tracked

### RegisterRPC(uint, RPCHandler) <a href="#ks_reactor_server_ksiserverroom_registerrpc_system_uint32_ks_reactor_server_ksserverevents_rpchandle" id="ks_reactor_server_ksiserverroom_registerrpc_system_uint32_ks_reactor_server_ksserverevents_rpchandle"></a>

Register an RPC

```csharp
void RegisterRPC(uint rpcId, ksServerEvents.RPCHandler rpcHandler)
```

#### Parameters

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

RPC ID

`rpcHandler` [ksServerEvents](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksserverevents.md).[RPCHandler](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksserverevents/ks.reactor.server.ksserverevents.rpchandler.md)

RPC Handler

### RemovePhysXScene(pxScene) <a href="#ks_reactor_server_ksiserverroom_removephysxscene_ks_reactor_server_physx_pxscene" id="ks_reactor_server_ksiserverroom_removephysxscene_ks_reactor_server_physx_pxscene"></a>

Remove a PhysX scene from the list of scenes managed by the room.

```csharp
void RemovePhysXScene(pxScene scene)
```

#### Parameters

`scene` [pxScene](/reactor/api-reference/ks.reactor.server.physx/ks.reactor.server.physx.pxscene.md)

PhysX scene to remove

### ShutDown() <a href="#ks_reactor_server_ksiserverroom_shutdown" id="ks_reactor_server_ksiserverroom_shutdown"></a>

Shut down the room.

```csharp
void ShutDown()
```

### SpawnCollection(ksSpawnParams) <a href="#ks_reactor_server_ksiserverroom_spawncollection_ks_reactor_ksspawnparams" id="ks_reactor_server_ksiserverroom_spawncollection_ks_reactor_ksspawnparams"></a>

Spawns an entity collection using spawn parameters.

```csharp
List<ksIServerEntity> SpawnCollection(ksSpawnParams spawnParams)
```

#### Parameters

`spawnParams` ksSpawnParams

Spawn parameters

#### Returns

[List](https://learn.microsoft.com/dotnet/api/system.collections.generic.list-1)<[ksIServerEntity](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksiserverentity.md)>

Spawned entities

### SpawnCollection(string) <a href="#ks_reactor_server_ksiserverroom_spawncollection_system_string" id="ks_reactor_server_ksiserverroom_spawncollection_system_string"></a>

Spawns a collection of entities from a prefab.

```csharp
List<ksIServerEntity> SpawnCollection(string type)
```

#### Parameters

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

Prefab type.

#### Returns

[List](https://learn.microsoft.com/dotnet/api/system.collections.generic.list-1)<[ksIServerEntity](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksiserverentity.md)>

Spawned entities.

### SpawnCollection(string, ksVector3) <a href="#ks_reactor_server_ksiserverroom_spawncollection_system_string_ks_reactor_ksvector3" id="ks_reactor_server_ksiserverroom_spawncollection_system_string_ks_reactor_ksvector3"></a>

Spawns a collection of entities from a prefab.

```csharp
List<ksIServerEntity> SpawnCollection(string type, ksVector3 position)
```

#### Parameters

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

Prefab type.

`position` ksVector3

Entity position

#### Returns

[List](https://learn.microsoft.com/dotnet/api/system.collections.generic.list-1)<[ksIServerEntity](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksiserverentity.md)>

Spawned entities.

### SpawnCollection(string, ksVector3, ksQuaternion) <a href="#ks_reactor_server_ksiserverroom_spawncollection_system_string_ks_reactor_ksvector3_ks_reactor_ksquat" id="ks_reactor_server_ksiserverroom_spawncollection_system_string_ks_reactor_ksvector3_ks_reactor_ksquat"></a>

Spawns a collection of entities from a prefab.

```csharp
List<ksIServerEntity> SpawnCollection(string type, ksVector3 position, ksQuaternion rotation)
```

#### Parameters

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

Prefab type.

`position` ksVector3

Entity position

`rotation` ksQuaternion

Entity rotation

#### Returns

[List](https://learn.microsoft.com/dotnet/api/system.collections.generic.list-1)<[ksIServerEntity](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksiserverentity.md)>

Spawned entities.

### SpawnCollection(string, ksVector3, ksQuaternion, ksVector3, ScaleModes) <a href="#ks_reactor_server_ksiserverroom_spawncollection_system_string_ks_reactor_ksvector3_ks_reactor_ksquat" id="ks_reactor_server_ksiserverroom_spawncollection_system_string_ks_reactor_ksvector3_ks_reactor_ksquat"></a>

Spawns a collection of entities from a prefab.

```csharp
List<ksIServerEntity> SpawnCollection(string type, ksVector3 position, ksQuaternion rotation, ksVector3 scale, ksSpawnParams.ScaleModes scaleMode = ScaleModes.ABSOLUTE)
```

#### Parameters

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

Prefab type.

`position` ksVector3

Entity position

`rotation` ksQuaternion

Entity rotation

`scale` ksVector3

Entity scale

`scaleMode` ksSpawnParams.ScaleModes

Is the scale an absolute or relative scale? Unlike with [ksSpawnParams](/reactor/api-reference/ks.reactor/ks.reactor.ksspawnparams.md), this method defaults to absolute.

#### Returns

[List](https://learn.microsoft.com/dotnet/api/system.collections.generic.list-1)<[ksIServerEntity](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksiserverentity.md)>

Spawned entities.

### SpawnCollection(string, ksVector2) <a href="#ks_reactor_server_ksiserverroom_spawncollection_system_string_ks_reactor_ksvector2" id="ks_reactor_server_ksiserverroom_spawncollection_system_string_ks_reactor_ksvector2"></a>

Spawns a collection of entities from a prefab.

```csharp
List<ksIServerEntity> SpawnCollection(string type, ksVector2 position)
```

#### Parameters

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

Prefab type.

`position` ksVector2

Entity position

#### Returns

[List](https://learn.microsoft.com/dotnet/api/system.collections.generic.list-1)<[ksIServerEntity](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksiserverentity.md)>

Spawned entities.

### SpawnCollection(string, ksVector2, float) <a href="#ks_reactor_server_ksiserverroom_spawncollection_system_string_ks_reactor_ksvector2_system_single" id="ks_reactor_server_ksiserverroom_spawncollection_system_string_ks_reactor_ksvector2_system_single"></a>

Spawns a collection of entities from a prefab.

```csharp
List<ksIServerEntity> SpawnCollection(string type, ksVector2 position, float rotation)
```

#### Parameters

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

Prefab type.

`position` ksVector2

Entity position

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

Entity rotation

#### Returns

[List](https://learn.microsoft.com/dotnet/api/system.collections.generic.list-1)<[ksIServerEntity](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksiserverentity.md)>

Spawned entities.

### SpawnCollection(string, ksVector2, float, ksVector2, ScaleModes) <a href="#ks_reactor_server_ksiserverroom_spawncollection_system_string_ks_reactor_ksvector2_system_single_ks" id="ks_reactor_server_ksiserverroom_spawncollection_system_string_ks_reactor_ksvector2_system_single_ks"></a>

Spawns a collection of entities from a prefab.

```csharp
List<ksIServerEntity> SpawnCollection(string type, ksVector2 position, float rotation, ksVector2 scale, ksSpawnParams.ScaleModes scaleMode = ScaleModes.ABSOLUTE)
```

#### Parameters

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

Prefab type.

`position` ksVector2

Entity position

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

Entity rotation

`scale` ksVector2

Entity scale

`scaleMode` ksSpawnParams.ScaleModes

Is the scale an absolute or relative scale? Unlike with [ksSpawnParams](/reactor/api-reference/ks.reactor/ks.reactor.ksspawnparams.md), this method defaults to absolute.

#### Returns

[List](https://learn.microsoft.com/dotnet/api/system.collections.generic.list-1)<[ksIServerEntity](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksiserverentity.md)>

Spawned entities.

### SpawnEntity(ksSpawnParams) <a href="#ks_reactor_server_ksiserverroom_spawnentity_ks_reactor_ksspawnparams" id="ks_reactor_server_ksiserverroom_spawnentity_ks_reactor_ksspawnparams"></a>

Spawns an entity using spawn parameters.

```csharp
ksIServerEntity SpawnEntity(ksSpawnParams spawnParams)
```

#### Parameters

`spawnParams` ksSpawnParams

Spawn parameters

#### Returns

[ksIServerEntity](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksiserverentity.md)

Spawned entity

### SpawnEntity() <a href="#ks_reactor_server_ksiserverroom_spawnentity" id="ks_reactor_server_ksiserverroom_spawnentity"></a>

Spawns an entity.

```csharp
ksIServerEntity SpawnEntity()
```

#### Returns

[ksIServerEntity](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksiserverentity.md)

Spawned entity.

### SpawnEntity(string) <a href="#ks_reactor_server_ksiserverroom_spawnentity_system_string" id="ks_reactor_server_ksiserverroom_spawnentity_system_string"></a>

Spawns an entity from a prefab.

```csharp
ksIServerEntity SpawnEntity(string type)
```

#### Parameters

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

Prefab type.

#### Returns

[ksIServerEntity](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksiserverentity.md)

Spawned entity.

### SpawnEntity(string, ksVector3) <a href="#ks_reactor_server_ksiserverroom_spawnentity_system_string_ks_reactor_ksvector3" id="ks_reactor_server_ksiserverroom_spawnentity_system_string_ks_reactor_ksvector3"></a>

Spawns an entity from a prefab.

```csharp
ksIServerEntity SpawnEntity(string type, ksVector3 position)
```

#### Parameters

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

Prefab type.

`position` ksVector3

Entity position

#### Returns

[ksIServerEntity](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksiserverentity.md)

Spawned entity.

### SpawnEntity(string, ksVector3, ksQuaternion) <a href="#ks_reactor_server_ksiserverroom_spawnentity_system_string_ks_reactor_ksvector3_ks_reactor_ksquaterni" id="ks_reactor_server_ksiserverroom_spawnentity_system_string_ks_reactor_ksvector3_ks_reactor_ksquaterni"></a>

Spawns an entity from a prefab.

```csharp
ksIServerEntity SpawnEntity(string type, ksVector3 position, ksQuaternion rotation)
```

#### Parameters

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

Prefab type.

`position` ksVector3

Entity position

`rotation` ksQuaternion

Entity rotation

#### Returns

[ksIServerEntity](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksiserverentity.md)

Spawned entity.

### SpawnEntity(string, ksVector3, ksQuaternion, ksVector3, ScaleModes) <a href="#ks_reactor_server_ksiserverroom_spawnentity_system_string_ks_reactor_ksvector3_ks_reactor_ksquaterni" id="ks_reactor_server_ksiserverroom_spawnentity_system_string_ks_reactor_ksvector3_ks_reactor_ksquaterni"></a>

Spawns an entity from a prefab.

```csharp
ksIServerEntity SpawnEntity(string type, ksVector3 position, ksQuaternion rotation, ksVector3 scale, ksSpawnParams.ScaleModes scaleMode = ScaleModes.ABSOLUTE)
```

#### Parameters

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

Prefab type.

`position` ksVector3

Entity position

`rotation` ksQuaternion

Entity rotation

`scale` ksVector3

Entity scale

`scaleMode` ksSpawnParams.ScaleModes

Is the scale an absolute or relative scale? Unlike with [ksSpawnParams](/reactor/api-reference/ks.reactor/ks.reactor.ksspawnparams.md), this method defaults to absolute.

#### Returns

[ksIServerEntity](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksiserverentity.md)

Spawned entity.

### SpawnEntity(string, ksVector2) <a href="#ks_reactor_server_ksiserverroom_spawnentity_system_string_ks_reactor_ksvector2" id="ks_reactor_server_ksiserverroom_spawnentity_system_string_ks_reactor_ksvector2"></a>

Spawns an entity from a prefab.

```csharp
ksIServerEntity SpawnEntity(string type, ksVector2 position)
```

#### Parameters

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

Prefab type.

`position` ksVector2

Entity position

#### Returns

[ksIServerEntity](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksiserverentity.md)

Spawned entity.

### SpawnEntity(string, ksVector2, float) <a href="#ks_reactor_server_ksiserverroom_spawnentity_system_string_ks_reactor_ksvector2_system_single" id="ks_reactor_server_ksiserverroom_spawnentity_system_string_ks_reactor_ksvector2_system_single"></a>

Spawns an entity from a prefab.

```csharp
ksIServerEntity SpawnEntity(string type, ksVector2 position, float rotation)
```

#### Parameters

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

Prefab type.

`position` ksVector2

Entity position

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

Entity rotation

#### Returns

[ksIServerEntity](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksiserverentity.md)

Spawned entity.

### SpawnEntity(string, ksVector2, float, ksVector2, ScaleModes) <a href="#ks_reactor_server_ksiserverroom_spawnentity_system_string_ks_reactor_ksvector2_system_single_ks_reac" id="ks_reactor_server_ksiserverroom_spawnentity_system_string_ks_reactor_ksvector2_system_single_ks_reac"></a>

Spawns an entity from a prefab.

```csharp
ksIServerEntity SpawnEntity(string type, ksVector2 position, float rotation, ksVector2 scale, ksSpawnParams.ScaleModes scaleMode = ScaleModes.ABSOLUTE)
```

#### Parameters

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

Prefab type.

`position` ksVector2

Entity position

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

Entity rotation

`scale` ksVector2

Entity scale

`scaleMode` ksSpawnParams.ScaleModes

Is the scale an absolute or relative scale? Unlike with [ksSpawnParams](/reactor/api-reference/ks.reactor/ks.reactor.ksspawnparams.md), this method defaults to absolute.

#### Returns

[ksIServerEntity](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksiserverentity.md)

Spawned entity.

### UnregisterRPC(uint, RPCHandler) <a href="#ks_reactor_server_ksiserverroom_unregisterrpc_system_uint32_ks_reactor_server_ksserverevents_rpchand" id="ks_reactor_server_ksiserverroom_unregisterrpc_system_uint32_ks_reactor_server_ksserverevents_rpchand"></a>

Unregister an RPC

```csharp
void UnregisterRPC(uint rpcId, ksServerEvents.RPCHandler rpcHandler)
```

#### Parameters

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

RPC ID

`rpcHandler` [ksServerEvents](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksserverevents.md).[RPCHandler](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksserverevents/ks.reactor.server.ksserverevents.rpchandler.md)

RPC Handler

### OnAuthenticate <a href="#ks_reactor_server_ksiserverroom_onauthenticate" id="ks_reactor_server_ksiserverroom_onauthenticate"></a>

Authentication event. If any of the handlers return a non-zero result, authentication fails and subsequent handlers are not called. The handlers return a task for asynchronous authentication. The next handler is not called until the task from the previous handler completes. Handlers cannot be modified after room scripts are initialized.

```csharp
event ksServerEvents.AuthenticateHandler OnAuthenticate
```

#### Event Type

[ksServerEvents](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksserverevents.md).[AuthenticateHandler](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksserverevents/ks.reactor.server.ksserverevents.authenticatehandler.md)

### OnDestroyEntity <a href="#ks_reactor_server_ksiserverroom_ondestroyentity" id="ks_reactor_server_ksiserverroom_ondestroyentity"></a>

Invoked when an entity is destroyed.

```csharp
event ksServerEvents.DestroyEntityHandler OnDestroyEntity
```

#### Event Type

[ksServerEvents](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksserverevents.md).[DestroyEntityHandler](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksserverevents/ks.reactor.server.ksserverevents.destroyentityhandler.md)

### OnPlayerJoin <a href="#ks_reactor_server_ksiserverroom_onplayerjoin" id="ks_reactor_server_ksiserverroom_onplayerjoin"></a>

Invoked when a player joins the room.

```csharp
event ksServerEvents.PlayerJoinHandler OnPlayerJoin
```

#### Event Type

[ksServerEvents](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksserverevents.md).[PlayerJoinHandler](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksserverevents/ks.reactor.server.ksserverevents.playerjoinhandler.md)

### OnPlayerLeave <a href="#ks_reactor_server_ksiserverroom_onplayerleave" id="ks_reactor_server_ksiserverroom_onplayerleave"></a>

Invoked when a player leaves the room.

```csharp
event ksServerEvents.PlayerLeaveHandler OnPlayerLeave
```

#### Event Type

[ksServerEvents](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksserverevents.md).[PlayerLeaveHandler](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksserverevents/ks.reactor.server.ksserverevents.playerleavehandler.md)

### OnShutDown <a href="#ks_reactor_server_ksiserverroom_onshutdown" id="ks_reactor_server_ksiserverroom_onshutdown"></a>

Invoked when room begins to shut down.

```csharp
event ksServerEvents.RoomShutDownEvent OnShutDown
```

#### Event Type

[ksServerEvents](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksserverevents.md).[RoomShutDownEvent](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksserverevents/ks.reactor.server.ksserverevents.roomshutdownevent.md)

### OnSpawnEntity <a href="#ks_reactor_server_ksiserverroom_onspawnentity" id="ks_reactor_server_ksiserverroom_onspawnentity"></a>

Invoked when an entity is spawned.

```csharp
event ksServerEvents.SpawnEntityHandler OnSpawnEntity
```

#### Event Type

[ksServerEvents](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksserverevents.md).[SpawnEntityHandler](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksserverevents/ks.reactor.server.ksserverevents.spawnentityhandler.md)
