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

# Interface ksIServerPlayer

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

Public interface for server player. A player represents a client connected to the room.

```csharp
public interface ksIServerPlayer
```

## Properties

### Address <a href="#ks_reactor_server_ksiserverplayer_address" id="ks_reactor_server_ksiserverplayer_address"></a>

Address the player is connected from.

```csharp
string Address { get; }
```

#### Property Value

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

### AuthenticatedId <a href="#ks_reactor_server_ksiserverplayer_authenticatedid" id="ks_reactor_server_ksiserverplayer_authenticatedid"></a>

Player Authenticated Id

```csharp
string AuthenticatedId { get; }
```

#### Property Value

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

### Connected <a href="#ks_reactor_server_ksiserverplayer_connected" id="ks_reactor_server_ksiserverplayer_connected"></a>

True if this player is connected to the room.

```csharp
[Obsolete("Use IsConnected")]
bool Connected { get; }
```

#### Property Value

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

### ConnectionState <a href="#ks_reactor_server_ksiserverplayer_connectionstate" id="ks_reactor_server_ksiserverplayer_connectionstate"></a>

Connection state

```csharp
ksConnectionStates ConnectionState { get; }
```

#### Property Value

ksConnectionStates

### ControlledEntities <a href="#ks_reactor_server_ksiserverplayer_controlledentities" id="ks_reactor_server_ksiserverplayer_controlledentities"></a>

```csharp
[Obsolete("Use OwnedEntities instead and check for a player controller.")]
ksConstList<ksIServerEntity> ControlledEntities { get; }
```

#### Property Value

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

### Frame <a href="#ks_reactor_server_ksiserverplayer_frame" id="ks_reactor_server_ksiserverplayer_frame"></a>

Latest server frame number processed by the player and received by the server.

```csharp
ulong Frame { get; }
```

#### Property Value

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

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

Player id

```csharp
uint Id { get; }
```

#### Property Value

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

### IdleTime <a href="#ks_reactor_server_ksiserverplayer_idletime" id="ks_reactor_server_ksiserverplayer_idletime"></a>

Amount of time the client has been idle.

```csharp
double IdleTime { get; }
```

#### Property Value

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

### IsConnected <a href="#ks_reactor_server_ksiserverplayer_isconnected" id="ks_reactor_server_ksiserverplayer_isconnected"></a>

True if the player is connected and authenticated.

```csharp
bool IsConnected { get; }
```

#### Property Value

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

### IsIdle <a href="#ks_reactor_server_ksiserverplayer_isidle" id="ks_reactor_server_ksiserverplayer_isidle"></a>

Is the player idle?

```csharp
bool IsIdle { get; }
```

#### Property Value

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

### IsVirtual <a href="#ks_reactor_server_ksiserverplayer_isvirtual" id="ks_reactor_server_ksiserverplayer_isvirtual"></a>

True if this is a virtual players

```csharp
bool IsVirtual { get; }
```

#### Property Value

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

### IsVisible <a href="#ks_reactor_server_ksiserverplayer_isvisible" id="ks_reactor_server_ksiserverplayer_isvisible"></a>

Does the player sync?

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

#### Property Value

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

### OwnedEntities <a href="#ks_reactor_server_ksiserverplayer_ownedentities" id="ks_reactor_server_ksiserverplayer_ownedentities"></a>

Entities owned by this player.

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

#### Property Value

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

### Port <a href="#ks_reactor_server_ksiserverplayer_port" id="ks_reactor_server_ksiserverplayer_port"></a>

Port the player is connected on.

```csharp
string Port { get; }
```

#### Property Value

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

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

Properties

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

#### Property Value

ksPropertyMap

### Room <a href="#ks_reactor_server_ksiserverplayer_room" id="ks_reactor_server_ksiserverplayer_room"></a>

Room the player is in.

```csharp
ksIServerRoom Room { get; }
```

#### Property Value

[ksIServerRoom](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksiserverroom.md)

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

List of scripts attached to the player.

```csharp
ksScriptList<ksIServerPlayer, ksServerPlayerScript> Scripts { get; }
```

#### Property Value

ksScriptList<[ksIServerPlayer](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksiserverplayer.md), [ksServerPlayerScript](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksserverplayerscript.md)>

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

Latest player UTC time received by the server.

```csharp
DateTime Time { get; }
```

#### Property Value

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

### VirtualInput <a href="#ks_reactor_server_ksiserverplayer_virtualinput" id="ks_reactor_server_ksiserverplayer_virtualinput"></a>

Get an input object for virtual players

```csharp
ksVirtualInput VirtualInput { get; }
```

#### Property Value

[ksVirtualInput](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksvirtualinput.md)

## Methods

### AddToSyncGroup(uint) <a href="#ks_reactor_server_ksiserverplayer_addtosyncgroup_system_uint32" id="ks_reactor_server_ksiserverplayer_addtosyncgroup_system_uint32"></a>

Add a player to a sync group.

```csharp
void AddToSyncGroup(uint syncGroup)
```

#### Parameters

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

Sync group

### DestroyControlledEntities() <a href="#ks_reactor_server_ksiserverplayer_destroycontrolledentities" id="ks_reactor_server_ksiserverplayer_destroycontrolledentities"></a>

```csharp
[Obsolete("Use DestroyOwnedEntities instead.")]
void DestroyControlledEntities()
```

### DestroyOwnedEntities() <a href="#ks_reactor_server_ksiserverplayer_destroyownedentities" id="ks_reactor_server_ksiserverplayer_destroyownedentities"></a>

Destroys all entities owned by this player.

```csharp
void DestroyOwnedEntities()
```

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

Disconnects this client.

```csharp
void Disconnect()
```

### GetSyncGroups() <a href="#ks_reactor_server_ksiserverplayer_getsyncgroups" id="ks_reactor_server_ksiserverplayer_getsyncgroups"></a>

Get a list of sync groups the player is in.

```csharp
uint[] GetSyncGroups()
```

#### Returns

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

Sync groups

### RemoveAllControllers() <a href="#ks_reactor_server_ksiserverplayer_removeallcontrollers" id="ks_reactor_server_ksiserverplayer_removeallcontrollers"></a>

Removes all player controllers owned by this player.

```csharp
void RemoveAllControllers()
```

### RemoveFromSyncGroup(uint) <a href="#ks_reactor_server_ksiserverplayer_removefromsyncgroup_system_uint32" id="ks_reactor_server_ksiserverplayer_removefromsyncgroup_system_uint32"></a>

Remove a player from a sync group.

```csharp
void RemoveFromSyncGroup(uint syncGroup)
```

#### Parameters

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

Sync group

### RemoveOwnedEntities() <a href="#ks_reactor_server_ksiserverplayer_removeownedentities" id="ks_reactor_server_ksiserverplayer_removeownedentities"></a>

Removes ownership from all entities owned by this player. Also removes player controllers.

```csharp
void RemoveOwnedEntities()
```

### UpdateControllers(float, ksInput) <a href="#ks_reactor_server_ksiserverplayer_updatecontrollers_system_single_ks_reactor_ksinput" id="ks_reactor_server_ksiserverplayer_updatecontrollers_system_single_ks_reactor_ksinput"></a>

Calls Update on all player controllers controlled by this player.

```csharp
void UpdateControllers(float unscaledDeltaTime = -1, ksInput input = null)
```

#### Parameters

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

if non-negative, changes [UnscaledDelta](/reactor/api-reference/ks.reactor/ks.reactor.kstime.md#KS_Reactor_ksTime_UnscaledDelta) to this value when updating the controllers, and[Delta](/reactor/api-reference/ks.reactor/ks.reactor.kstime.md#KS_Reactor_ksTime_Delta) to `unscaledDeltaTime` \* [TimeScale](/reactor/api-reference/ks.reactor/ks.reactor.kstime.md#KS_Reactor_ksTime_TimeScale).

`input` ksInput

if non-null, overrides the current input.

### OnLeave <a href="#ks_reactor_server_ksiserverplayer_onleave" id="ks_reactor_server_ksiserverplayer_onleave"></a>

Invoked when the player leaves the room.

```csharp
event ksServerEvents.LeaveHandler OnLeave
```

#### Event Type

[ksServerEvents](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksserverevents.md).[LeaveHandler](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksserverevents/ks.reactor.server.ksserverevents.leavehandler.md)
