> For the complete documentation index, see [llms.txt](https://kinematicsoup.gitbook.io/reactor/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://kinematicsoup.gitbook.io/reactor/api-reference/ks.reactor.client.adaptors/ks.reactor.client.adaptors.ksentity.md).

# Class ksEntity

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

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

```csharp
public class ksEntity : ksBaseEntity, ksIEntity
```

#### Inheritance

[object](https://learn.microsoft.com/dotnet/api/system.object) â† [ksBaseEntity](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseentity.md) â† [ksEntity](/reactor/api-reference/ks.reactor.client.adaptors/ks.reactor.client.adaptors.ksentity.md)

#### Implements

[ksIEntity](/reactor/api-reference/ks.reactor/ks.reactor.ksientity.md)

#### Inherited Members

[ksBaseEntity.OnPropertyChange](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseentity.md#KS_Reactor_Client_ksBaseEntity_OnPropertyChange), [ksBaseEntity.OnRPC](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseentity.md#KS_Reactor_Client_ksBaseEntity_OnRPC), [ksBaseEntity.OnControllerChange](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseentity.md#KS_Reactor_Client_ksBaseEntity_OnControllerChange), [ksBaseEntity.OnOwnershipChange](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseentity.md#KS_Reactor_Client_ksBaseEntity_OnOwnershipChange), [ksBaseEntity.OnConfirmPlayerSpawn](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseentity.md#KS_Reactor_Client_ksBaseEntity_OnConfirmPlayerSpawn), [ksBaseEntity.OnDestroy](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseentity.md#KS_Reactor_Client_ksBaseEntity_OnDestroy), [ksBaseEntity.Id](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseentity.md#KS_Reactor_Client_ksBaseEntity_Id), [ksBaseEntity.Type](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseentity.md#KS_Reactor_Client_ksBaseEntity_Type), [ksBaseEntity.AssetId](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseentity.md#KS_Reactor_Client_ksBaseEntity_AssetId), [ksBaseEntity.SyncGroup](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseentity.md#KS_Reactor_Client_ksBaseEntity_SyncGroup), [ksBaseEntity.OwnerId](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseentity.md#KS_Reactor_Client_ksBaseEntity_OwnerId), [ksBaseEntity.OwnerPermissions](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseentity.md#KS_Reactor_Client_ksBaseEntity_OwnerPermissions), [ksBaseEntity.IsOwner](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseentity.md#KS_Reactor_Client_ksBaseEntity_IsOwner), [ksBaseEntity.Parent](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseentity.md#KS_Reactor_Client_ksBaseEntity_Parent), [ksBaseEntity.Children](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseentity.md#KS_Reactor_Client_ksBaseEntity_Children), [ksBaseEntity.ForEachDescendant(Action\<ksBaseEntity>)](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseentity.md#KS_Reactor_Client_ksBaseEntity_ForEachDescendant_System_Action_KS_Reactor_Client_ksBaseEntity__), [ksBaseEntity.Transform](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseentity.md#KS_Reactor_Client_ksBaseEntity_Transform), [ksBaseEntity.Transform2D](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseentity.md#KS_Reactor_Client_ksBaseEntity_Transform2D), [ksBaseEntity.ServerTransform](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseentity.md#KS_Reactor_Client_ksBaseEntity_ServerTransform), [ksBaseEntity.ServerTransform2D](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseentity.md#KS_Reactor_Client_ksBaseEntity_ServerTransform2D), [ksBaseEntity.Properties](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseentity.md#KS_Reactor_Client_ksBaseEntity_Properties), [ksBaseEntity.PredictionEnabled](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseentity.md#KS_Reactor_Client_ksBaseEntity_PredictionEnabled), [ksBaseEntity.Predictor](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseentity.md#KS_Reactor_Client_ksBaseEntity_Predictor), [ksBaseEntity.IsNonInputPredictorAssigned](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseentity.md#KS_Reactor_Client_ksBaseEntity_IsNonInputPredictorAssigned), [ksBaseEntity.NonInputPredictor](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseentity.md#KS_Reactor_Client_ksBaseEntity_NonInputPredictor), [ksBaseEntity.IsInputPredictorAssigned](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseentity.md#KS_Reactor_Client_ksBaseEntity_IsInputPredictorAssigned), [ksBaseEntity.InputPredictor](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseentity.md#KS_Reactor_Client_ksBaseEntity_InputPredictor), [ksBaseEntity.RigidBody](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseentity.md#KS_Reactor_Client_ksBaseEntity_RigidBody), [ksBaseEntity.RigidBody2D](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseentity.md#KS_Reactor_Client_ksBaseEntity_RigidBody2D), [ksBaseEntity.CharacterController](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseentity.md#KS_Reactor_Client_ksBaseEntity_CharacterController), [ksBaseEntity.PlayerController](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseentity.md#KS_Reactor_Client_ksBaseEntity_PlayerController), [ksBaseEntity.IsPermanent](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseentity.md#KS_Reactor_Client_ksBaseEntity_IsPermanent), [ksBaseEntity.CollisionFilter](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseentity.md#KS_Reactor_Client_ksBaseEntity_CollisionFilter), [ksBaseEntity.IsWaitingForPlayerSpawnResponse](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseentity.md#KS_Reactor_Client_ksBaseEntity_IsWaitingForPlayerSpawnResponse), [ksBaseEntity.SpawnedByLocalPlayer](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseentity.md#KS_Reactor_Client_ksBaseEntity_SpawnedByLocalPlayer), [ksBaseEntity.IsDestroyed](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseentity.md#KS_Reactor_Client_ksBaseEntity_IsDestroyed), [ksBaseEntity.IsDestroyedLocally](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseentity.md#KS_Reactor_Client_ksBaseEntity_IsDestroyedLocally), [ksBaseEntity.LocalOwnerTeleported](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseentity.md#KS_Reactor_Client_ksBaseEntity_LocalOwnerTeleported), [ksBaseEntity.BaseRoom](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseentity.md#KS_Reactor_Client_ksBaseEntity_BaseRoom), [ksBaseEntity.Initialize(ksEntityId, uint, ksTransformState, ksBaseRoom, ksSpawnParams)](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseentity.md#KS_Reactor_Client_ksBaseEntity_Initialize_KS_Reactor_ksEntityId_System_UInt32_KS_Reactor_ksTransformState_KS_Reactor_Client_ksBaseRoom_KS_Reactor_ksSpawnParams_), [ksBaseEntity.Initialize(ksSpawnParams)](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseentity.md#KS_Reactor_Client_ksBaseEntity_Initialize_KS_Reactor_ksSpawnParams_), [ksBaseEntity.CleanUp()](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseentity.md#KS_Reactor_Client_ksBaseEntity_CleanUp), [ksBaseEntity.UpdateTransform(ksReadOnlyTransformState.DirtyFlag)](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseentity.md#KS_Reactor_Client_ksBaseEntity_UpdateTransform_KS_Reactor_ksReadOnlyTransformState_DirtyFlag_), [ksBaseEntity.UpdateEntityTransform()](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseentity.md#KS_Reactor_Client_ksBaseEntity_UpdateEntityTransform), [ksBaseEntity.GetTransformUpdate(ksTransformState)](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseentity.md#KS_Reactor_Client_ksBaseEntity_GetTransformUpdate_KS_Reactor_ksTransformState_), [ksBaseEntity.CreateNonInputPredictor(out ksIPredictor)](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseentity.md#KS_Reactor_Client_ksBaseEntity_CreateNonInputPredictor_KS_Reactor_Client_ksIPredictor__), [ksBaseEntity.CreateInputPredictor(out ksIPredictor)](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseentity.md#KS_Reactor_Client_ksBaseEntity_CreateInputPredictor_KS_Reactor_Client_ksIPredictor__), [ksBaseEntity.CallRPC(uint, params ksMultiType\[\])](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseentity.md#KS_Reactor_Client_ksBaseEntity_CallRPC_System_UInt32_KS_Reactor_ksMultiType___), [ksBaseEntity.AttachScripts()](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseentity.md#KS_Reactor_Client_ksBaseEntity_AttachScripts), [ksBaseEntity.InitializeScripts()](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseentity.md#KS_Reactor_Client_ksBaseEntity_InitializeScripts), [ksBaseEntity.Destroy(ksDestroyReason)](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseentity.md#KS_Reactor_Client_ksBaseEntity_Destroy_KS_Reactor_Client_ksDestroyReason_), [ksBaseEntity.InvokeRPC(uint, ksMultiType\[\])](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseentity.md#KS_Reactor_Client_ksBaseEntity_InvokeRPC_System_UInt32_KS_Reactor_ksMultiType___), [ksBaseEntity.OwnershipChanged()](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseentity.md#KS_Reactor_Client_ksBaseEntity_OwnershipChanged), [ksBaseEntity.PlayerSpawnConfirmed()](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseentity.md#KS_Reactor_Client_ksBaseEntity_PlayerSpawnConfirmed), [ksBaseEntity.RegisterRPC(uint, ksBaseEntity.RPCHandler)](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseentity.md#KS_Reactor_Client_ksBaseEntity_RegisterRPC_System_UInt32_KS_Reactor_Client_ksBaseEntity_RPCHandler_), [ksBaseEntity.UnregisterRPC(uint, ksBaseEntity.RPCHandler)](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseentity.md#KS_Reactor_Client_ksBaseEntity_UnregisterRPC_System_UInt32_KS_Reactor_Client_ksBaseEntity_RPCHandler_), [ksBaseEntity.HasOwnerPermission(ksOwnerPermissions)](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseentity.md#KS_Reactor_Client_ksBaseEntity_HasOwnerPermission_KS_Reactor_ksOwnerPermissions_), [ksBaseEntity.GetPropertyServerValue(uint)](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseentity.md#KS_Reactor_Client_ksBaseEntity_GetPropertyServerValue_System_UInt32_), [ksBaseEntity.GetColliders()](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksbaseentity.md#KS_Reactor_Client_ksBaseEntity_GetColliders), [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

### ksEntity() <a href="#ks_reactor_client_adaptors_ksentity__ctor" id="ks_reactor_client_adaptors_ksentity__ctor"></a>

Default constructor

```csharp
public ksEntity()
```

## Fields

### InputPredictorFactory <a href="#ks_reactor_client_adaptors_ksentity_inputpredictorfactory" id="ks_reactor_client_adaptors_ksentity_inputpredictorfactory"></a>

Factory for creating predictors for entities with player controllers that use input prediction.

```csharp
public static ksEntity.PredictorFactory InputPredictorFactory
```

#### Field Value

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

### NonInputPredictorFactory <a href="#ks_reactor_client_adaptors_ksentity_noninputpredictorfactory" id="ks_reactor_client_adaptors_ksentity_noninputpredictorfactory"></a>

Factory for creating predictors for entities without player controllers that use input prediction.

```csharp
public static ksEntity.PredictorFactory NonInputPredictorFactory
```

#### Field Value

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

## Properties

### OwnedTransformUpdater <a href="#ks_reactor_client_adaptors_ksentity_ownedtransformupdater" id="ks_reactor_client_adaptors_ksentity_ownedtransformupdater"></a>

Callback to call if the entity is owned-locally with the transform permission to get a transform update to send to the server.

```csharp
public ksEntity.TransformUpdater OwnedTransformUpdater { get; set; }
```

#### Property Value

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

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

Room the entity is in.

```csharp
public ksRoom Room { get; }
```

#### Property Value

[ksRoom](/reactor/api-reference/ks.reactor.client.adaptors/ks.reactor.client.adaptors.ksroom.md)

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

List of scripts attached to the entity.

```csharp
public ksScriptList<ksEntity, ksEntityScript> Scripts { get; }
```

#### Property Value

[ksScriptList](/reactor/api-reference/ks.reactor/ks.reactor.ksscriptlist-2.md)<[ksEntity](/reactor/api-reference/ks.reactor.client.adaptors/ks.reactor.client.adaptors.ksentity.md), [ksEntityScript](/reactor/api-reference/ks.reactor.client.adaptors/ks.reactor.client.adaptors.ksentityscript.md)>

## Methods

### AttachScripts() <a href="#ks_reactor_client_adaptors_ksentity_attachscripts" id="ks_reactor_client_adaptors_ksentity_attachscripts"></a>

Not implemented.

```csharp
protected override void AttachScripts()
```

### CreateInputPredictor(out ksIPredictor) <a href="#ks_reactor_client_adaptors_ksentity_createinputpredictor_ks_reactor_client_ksipredictor" id="ks_reactor_client_adaptors_ksentity_createinputpredictor_ks_reactor_client_ksipredictor"></a>

```csharp
protected override bool CreateInputPredictor(out ksIPredictor predictor)
```

#### Parameters

`predictor` [ksIPredictor](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksipredictor.md)

#### Returns

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

### CreateNonInputPredictor(out ksIPredictor) <a href="#ks_reactor_client_adaptors_ksentity_createnoninputpredictor_ks_reactor_client_ksipredictor" id="ks_reactor_client_adaptors_ksentity_createnoninputpredictor_ks_reactor_client_ksipredictor"></a>

Calls an RPC on this entity on the server.

```csharp
protected override bool CreateNonInputPredictor(out ksIPredictor predictor)
```

#### Parameters

`predictor` [ksIPredictor](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksipredictor.md)

#### Returns

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

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

Detaches all scripts and cleans up the entity for reuse.

```csharp
protected override void Destroy(ksDestroyReason reason)
```

#### Parameters

`reason` [ksDestroyReason](/reactor/api-reference/ks.reactor.client/ks.reactor.client.ksdestroyreason.md)

The reason the entity was destroyed.

### GetTransformUpdate(ksTransformState) <a href="#ks_reactor_client_adaptors_ksentity_gettransformupdate_ks_reactor_kstransformstate" id="ks_reactor_client_adaptors_ksentity_gettransformupdate_ks_reactor_kstransformstate"></a>

Called on locally owned entities with the transform permission. Calls the [OwnedTransformUpdater](#KS_Reactor_Client_Adaptors_ksEntity_OwnedTransformUpdater) if there is one to get a transform update to send to the server.

```csharp
protected override void GetTransformUpdate(ksTransformState transform)
```

#### Parameters

`transform` [ksTransformState](/reactor/api-reference/ks.reactor/ks.reactor.kstransformstate.md)

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

Initializes entity scripts.

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

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

Invoke managed RPCs on all entity 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
