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

# Interface ksIServerEntity

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

Public interface for server entities. An entity is an object in the scene.

```csharp
public interface ksIServerEntity : ksIEntity
```

#### Implements

ksIEntity

## Properties

### CollisionFilter <a href="#ks_reactor_server_ksiserverentity_collisionfilter" id="ks_reactor_server_ksiserverentity_collisionfilter"></a>

Determines which entities to collide with and notify of collision/overlap events. Setting this will set the collision filter on all colliders with [UseEntityCollisionFilter](/reactor/api-reference/ks.reactor.server/ks.reactor.server.kscollider.md#KS_Reactor_Server_ksCollider_UseEntityCollisionFilter) set to true. Setting to null will throw ArgumentNullException.

```csharp
ksCollisionFilter CollisionFilter { get; set; }
```

#### Property Value

ksCollisionFilter

### DestroyOnOwnerDisconnect <a href="#ks_reactor_server_ksiserverentity_destroyonownerdisconnect" id="ks_reactor_server_ksiserverentity_destroyonownerdisconnect"></a>

Should the entity be destroyed when its owner disconnects?

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

#### Property Value

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

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

Invoked when a player calls an RPC on the entity. 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)>

### OnValidateOwnerProperty <a href="#ks_reactor_server_ksiserverentity_onvalidateownerproperty" id="ks_reactor_server_ksiserverentity_onvalidateownerproperty"></a>

Invoked to validate a property update from the entity's owner. If any of the handlers return [FAIL](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksvalidationresult.md#KS_Reactor_Server_ksValidationResult_FAIL) or [ABORT](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksvalidationresult.md#KS_Reactor_Server_ksValidationResult_ABORT) the property update will not be applied.

```csharp
ksEvent<ksServerEvents.PropertyValidator> OnValidateOwnerProperty { get; set; }
```

#### Property Value

ksEvent<[ksServerEvents](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksserverevents.md).[PropertyValidator](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksserverevents/ks.reactor.server.ksserverevents.propertyvalidator.md)>

### OnValidateOwnerTransform <a href="#ks_reactor_server_ksiserverentity_onvalidateownertransform" id="ks_reactor_server_ksiserverentity_onvalidateownertransform"></a>

Invoked to validate a transform update from the entity's owner. If any of the handlers return [FAIL](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksvalidationresult.md#KS_Reactor_Server_ksValidationResult_FAIL) or [ABORT](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksvalidationresult.md#KS_Reactor_Server_ksValidationResult_ABORT) the transform update will not be applied.

```csharp
ksEvent<ksServerEvents.TransformValidator> OnValidateOwnerTransform { get; set; }
```

#### Property Value

ksEvent<[ksServerEvents](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksserverevents.md).[TransformValidator](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksserverevents/ks.reactor.server.ksserverevents.transformvalidator.md)>

### Owner <a href="#ks_reactor_server_ksiserverentity_owner" id="ks_reactor_server_ksiserverentity_owner"></a>

Owner of [PlayerController](#KS_Reactor_Server_ksIServerEntity_PlayerController)

```csharp
ksIServerPlayer Owner { get; }
```

#### Property Value

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

### OwnerPermissions <a href="#ks_reactor_server_ksiserverentity_ownerpermissions" id="ks_reactor_server_ksiserverentity_ownerpermissions"></a>

Owner permission flags.

```csharp
ksOwnerPermissions OwnerPermissions { get; }
```

#### Property Value

ksOwnerPermissions

### PhysXActor <a href="#ks_reactor_server_ksiserverentity_physxactor" id="ks_reactor_server_ksiserverentity_physxactor"></a>

Get/Set the PhysX actor

```csharp
pxActor PhysXActor { get; set; }
```

#### Property Value

[pxActor](/reactor/api-reference/ks.reactor.server.physx/ks.reactor.server.physx.pxactor.md)

### PhysicsMaterial <a href="#ks_reactor_server_ksiserverentity_physicsmaterial" id="ks_reactor_server_ksiserverentity_physicsmaterial"></a>

Determines the friction and resitution of attached colliders. Setting this will set the material on all colliders with [UseEntityPhysicsMaterial](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksshapecollider.md#KS_Reactor_Server_ksShapeCollider_UseEntityPhysicsMaterial) set to true.

```csharp
ksPhysicsMaterial PhysicsMaterial { get; set; }
```

#### Property Value

[ksPhysicsMaterial](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksphysicsmaterial.md)

### PlayerController <a href="#ks_reactor_server_ksiserverentity_playercontroller" id="ks_reactor_server_ksiserverentity_playercontroller"></a>

Player controller

```csharp
ksPlayerController PlayerController { get; }
```

#### Property Value

ksPlayerController

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

Room the entity 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_ksiserverentity_scripts" id="ks_reactor_server_ksiserverentity_scripts"></a>

List of scripts attached to the entity.

```csharp
ksScriptList<ksIServerEntity, ksServerEntityScript> Scripts { get; }
```

#### Property Value

ksScriptList<[ksIServerEntity](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksiserverentity.md), [ksServerEntityScript](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksserverentityscript.md)>

### SyncGroup <a href="#ks_reactor_server_ksiserverentity_syncgroup" id="ks_reactor_server_ksiserverentity_syncgroup"></a>

Get/Set the sync group for this entity

```csharp
uint SyncGroup { get; set; }
```

#### Property Value

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

### Transform <a href="#ks_reactor_server_ksiserverentity_transform" id="ks_reactor_server_ksiserverentity_transform"></a>

Transform

```csharp
ksTransform Transform { get; }
```

#### Property Value

ksTransform

### Transform2D <a href="#ks_reactor_server_ksiserverentity_transform2d" id="ks_reactor_server_ksiserverentity_transform2d"></a>

2D Transform

```csharp
ksTransform2D Transform2D { get; }
```

#### Property Value

ksTransform2D

## Methods

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

Calls an RPC on this entity. All players who can see this entity will receive the RPC.

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

#### Parameters

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

`arguments` ksMultiType\[]

arguments

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

Calls a function on this entity for 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 call the RPC on.

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

rpcId of function to call on client.

`arguments` ksMultiType\[]

arguments to send to the client.

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

Calls a function on this entity for 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 call the RPC on.

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

rpcId of function to call on client.

`arguments` ksMultiType\[]

arguments to send to the client.

### Destroy() <a href="#ks_reactor_server_ksiserverentity_destroy" id="ks_reactor_server_ksiserverentity_destroy"></a>

Destroys this entity.

```csharp
void Destroy()
```

### RegisterRPC(uint, RPCHandler) <a href="#ks_reactor_server_ksiserverentity_registerrpc_system_uint32_ks_reactor_server_ksserverevents_rpchand" id="ks_reactor_server_ksiserverentity_registerrpc_system_uint32_ks_reactor_server_ksserverevents_rpchand"></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 delegate

### RemoveController(bool) <a href="#ks_reactor_server_ksiserverentity_removecontroller_system_boolean" id="ks_reactor_server_ksiserverentity_removecontroller_system_boolean"></a>

Removes the player controller from this entity. If the owner has no permissions and

If false and the owner has no permission, removes their ownership.

```csharp
void RemoveController(bool keepOwnership = false)
```

#### Parameters

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

### SetController(ksPlayerController, ksIServerPlayer) <a href="#ks_reactor_server_ksiserverentity_setcontroller_ks_reactor_ksplayercontroller_ks_reactor_server_ksis" id="ks_reactor_server_ksiserverentity_setcontroller_ks_reactor_ksplayercontroller_ks_reactor_server_ksis"></a>

Sets the player controller on this entity and informs the owner of the controller.

```csharp
[Obsolete("Use SetOwner(owner, controller) instead.")]
void SetController(ksPlayerController controller, ksIServerPlayer owner)
```

#### Parameters

`controller` ksPlayerController

controller to control this entity.

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

owner who will control this entity.

### SetOwner(ksIServerPlayer, ksOwnerPermissions) <a href="#ks_reactor_server_ksiserverentity_setowner_ks_reactor_server_ksiserverplayer_ks_reactor_ksownerpermi" id="ks_reactor_server_ksiserverentity_setowner_ks_reactor_server_ksiserverplayer_ks_reactor_ksownerpermi"></a>

Sets an entity's owner and the owner permissions. If the entity has a player controller, removes it.

```csharp
void SetOwner(ksIServerPlayer owner, ksOwnerPermissions permissions = ksOwnerPermissions.ALL)
```

#### Parameters

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

The player who owns the entity.

`permissions` ksOwnerPermissions

Flags that determine what the owner can do with the entity. If `owner` is null, this value is ignored and [OwnerPermissions](#KS_Reactor_Server_ksIServerEntity_OwnerPermissions) will be set to [NONE](/reactor/api-reference/ks.reactor/ks.reactor.ksownerpermissions.md#KS_Reactor_ksOwnerPermissions_NONE).

### SetOwner(ksIServerPlayer, ksPlayerController, ksOwnerPermissions) <a href="#ks_reactor_server_ksiserverentity_setowner_ks_reactor_server_ksiserverplayer_ks_reactor_ksplayercont" id="ks_reactor_server_ksiserverentity_setowner_ks_reactor_server_ksiserverplayer_ks_reactor_ksplayercont"></a>

Sets an entity's owner, player controller, and the owner permissions.

```csharp
void SetOwner(ksIServerPlayer owner, ksPlayerController controller, ksOwnerPermissions permissions = ksOwnerPermissions.NONE)
```

#### Parameters

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

The player who owns the entity.

`controller` ksPlayerController

The player controller to set. If `owner` is null, this must also be null.

`permissions` ksOwnerPermissions

Flags that determine what the owner can do with the entity. If `owner` is null, this value is ignored and [OwnerPermissions](#KS_Reactor_Server_ksIServerEntity_OwnerPermissions) will be set to [NONE](/reactor/api-reference/ks.reactor/ks.reactor.ksownerpermissions.md#KS_Reactor_ksOwnerPermissions_NONE).

### UnregisterRPC(uint, RPCHandler) <a href="#ks_reactor_server_ksiserverentity_unregisterrpc_system_uint32_ks_reactor_server_ksserverevents_rpcha" id="ks_reactor_server_ksiserverentity_unregisterrpc_system_uint32_ks_reactor_server_ksserverevents_rpcha"></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 delegate

### UpdateScale() <a href="#ks_reactor_server_ksiserverentity_updatescale" id="ks_reactor_server_ksiserverentity_updatescale"></a>

If the transform's scale is dirty, finds and updates the scale on all colliders attached to the entity.

```csharp
void UpdateScale()
```

### OnCollision <a href="#ks_reactor_server_ksiserverentity_oncollision" id="ks_reactor_server_ksiserverentity_oncollision"></a>

Invoked when this entity collides with another.

```csharp
event ksServerEvents.CollisionHandler OnCollision
```

#### Event Type

[ksServerEvents](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksserverevents.md).[CollisionHandler](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksserverevents/ks.reactor.server.ksserverevents.collisionhandler.md)

### OnContactLost <a href="#ks_reactor_server_ksiserverentity_oncontactlost" id="ks_reactor_server_ksiserverentity_oncontactlost"></a>

Invoked when this entity loses contact with another.

```csharp
event ksServerEvents.OverlapHandler OnContactLost
```

#### Event Type

[ksServerEvents](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksserverevents.md).[OverlapHandler](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksserverevents/ks.reactor.server.ksserverevents.overlaphandler.md)

### OnContactUpdate <a href="#ks_reactor_server_ksiserverentity_oncontactupdate" id="ks_reactor_server_ksiserverentity_oncontactupdate"></a>

Invoked every frame this entity remains in contact with another. Not invoked if both entities are asleep.

```csharp
event ksServerEvents.CollisionHandler OnContactUpdate
```

#### Event Type

[ksServerEvents](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksserverevents.md).[CollisionHandler](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksserverevents/ks.reactor.server.ksserverevents.collisionhandler.md)

### OnDestroy <a href="#ks_reactor_server_ksiserverentity_ondestroy" id="ks_reactor_server_ksiserverentity_ondestroy"></a>

Invoked when the entity is destroyed.

```csharp
event ksServerEvents.DestroyHandler OnDestroy
```

#### Event Type

[ksServerEvents](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksserverevents.md).[DestroyHandler](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksserverevents/ks.reactor.server.ksserverevents.destroyhandler.md)

### OnOverlapEnd <a href="#ks_reactor_server_ksiserverentity_onoverlapend" id="ks_reactor_server_ksiserverentity_onoverlapend"></a>

Invoked when the entity stops overlapping another.

```csharp
event ksServerEvents.OverlapHandler OnOverlapEnd
```

#### Event Type

[ksServerEvents](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksserverevents.md).[OverlapHandler](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksserverevents/ks.reactor.server.ksserverevents.overlaphandler.md)

### OnOverlapStart <a href="#ks_reactor_server_ksiserverentity_onoverlapstart" id="ks_reactor_server_ksiserverentity_onoverlapstart"></a>

Invoked when the entity starts overlapping another.

```csharp
event ksServerEvents.OverlapHandler OnOverlapStart
```

#### Event Type

[ksServerEvents](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksserverevents.md).[OverlapHandler](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksserverevents/ks.reactor.server.ksserverevents.overlaphandler.md)

### OnSleep <a href="#ks_reactor_server_ksiserverentity_onsleep" id="ks_reactor_server_ksiserverentity_onsleep"></a>

Invoked when the entity falls asleep in the physics system.

```csharp
event ksServerEvents.SleepStateChangeHandler OnSleep
```

#### Event Type

[ksServerEvents](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksserverevents.md).[SleepStateChangeHandler](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksserverevents/ks.reactor.server.ksserverevents.sleepstatechangehandler.md)

### OnWake <a href="#ks_reactor_server_ksiserverentity_onwake" id="ks_reactor_server_ksiserverentity_onwake"></a>

Invoked when the entity awakens in the physics system.

```csharp
event ksServerEvents.SleepStateChangeHandler OnWake
```

#### Event Type

[ksServerEvents](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksserverevents.md).[SleepStateChangeHandler](/reactor/api-reference/ks.reactor.server/ks.reactor.server.ksserverevents/ks.reactor.server.ksserverevents.sleepstatechangehandler.md)
