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

# Class ksEntityLinker

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

Maps entity ids to game objects that existed in the scene before joining a room, and room type names to room types.

```csharp
public class ksEntityLinker : ksEntityFactory
```

#### Inheritance

[object](https://learn.microsoft.com/dotnet/api/system.object) â† [ksEntityFactory](/reactor/api-reference/ks.reactor.client.unity/ks.reactor.client.unity.ksentityfactory.md) â† [ksEntityLinker](/reactor/api-reference/ks.reactor.client.unity/ks.reactor.client.unity.ksentitylinker.md)

#### Inherited Members

[ksEntityFactory.GetGameObject(ksEntity, GameObject)](/reactor/api-reference/ks.reactor.client.unity/ks.reactor.client.unity.ksentityfactory.md#KS_Reactor_Client_Unity_ksEntityFactory_GetGameObject_KS_Reactor_Client_Unity_ksEntity_UnityEngine_GameObject_), [ksEntityFactory.ReleaseGameObject(ksEntityComponent)](/reactor/api-reference/ks.reactor.client.unity/ks.reactor.client.unity.ksentityfactory.md#KS_Reactor_Client_Unity_ksEntityFactory_ReleaseGameObject_KS_Reactor_Client_Unity_ksEntityComponent_), [ksEntityFactory.ReleaseGameObject(ksEntity)](/reactor/api-reference/ks.reactor.client.unity/ks.reactor.client.unity.ksentityfactory.md#KS_Reactor_Client_Unity_ksEntityFactory_ReleaseGameObject_KS_Reactor_Client_Unity_ksEntity_), [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)

## Properties

### IsLoaded <a href="#ks_reactor_client_unity_ksentitylinker_isloaded" id="ks_reactor_client_unity_ksentitylinker_isloaded"></a>

Are the permanent objects loaded?

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

#### Property Value

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

## Methods

### AddRoomType(ksRoomType) <a href="#ks_reactor_client_unity_ksentitylinker_addroomtype_ks_reactor_client_unity_ksroomtype" id="ks_reactor_client_unity_ksentitylinker_addroomtype_ks_reactor_client_unity_ksroomtype"></a>

Add a [ksRoomType](/reactor/api-reference/ks.reactor.client.unity/ks.reactor.client.unity.ksroomtype.md) to the collection of rooms the linker tracks.

```csharp
public void AddRoomType(ksRoomType roomType)
```

#### Parameters

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

ksRoomType component attached to a gameobject.

### Contains(GameObject) <a href="#ks_reactor_client_unity_ksentitylinker_contains_unityengine_gameobject" id="ks_reactor_client_unity_ksentitylinker_contains_unityengine_gameobject"></a>

Checks if a game object is a child of the linker's container object.

```csharp
public bool Contains(GameObject gameObject)
```

#### Parameters

`gameObject` GameObject

#### Returns

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

True if the game object is a child of the container object.

### GetGameObject(ksEntity, GameObject) <a href="#ks_reactor_client_unity_ksentitylinker_getgameobject_ks_reactor_client_unity_ksentity_unityengine_ga" id="ks_reactor_client_unity_ksentitylinker_getgameobject_ks_reactor_client_unity_ksentity_unityengine_ga"></a>

Gets the game object for the `entity`'s id and removes it from the map.

```csharp
public override GameObject GetGameObject(ksEntity entity, GameObject prefab)
```

#### Parameters

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

Entity to get game object for.

`prefab` GameObject

Prefab associated with the entity's asset id. Unused.

#### Returns

GameObject

Game object for the entity, or null if none was found.

### GetGameObjectForEntity(uint) <a href="#ks_reactor_client_unity_ksentitylinker_getgameobjectforentity_system_uint32" id="ks_reactor_client_unity_ksentitylinker_getgameobjectforentity_system_uint32"></a>

Gets the game object with the given entity id and removes it from the map.

```csharp
public GameObject GetGameObjectForEntity(uint entityId)
```

#### Parameters

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

Entity id

#### Returns

GameObject

GameObject for the entity, or null if none was found.

### GetPermanentObjects() <a href="#ks_reactor_client_unity_ksentitylinker_getpermanentobjects" id="ks_reactor_client_unity_ksentitylinker_getpermanentobjects"></a>

Get a list of entities that have been marked permanent. Permanent entities exist on both the client and server and will not move. These entities will never receive transform updates from the server.

```csharp
public List<ksEntityComponent> GetPermanentObjects()
```

#### Returns

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

List of [ksEntityComponent](/reactor/api-reference/ks.reactor.client.unity/ks.reactor.client.unity.ksentitycomponent.md) components whose [IsPermanent](/reactor/api-reference/ks.reactor.client.unity/ks.reactor.client.unity.ksentitycomponent.md#KS_Reactor_Client_Unity_ksEntityComponent_IsPermanent) proeprty is true.

### GetRoomType(string, out ksRoomType) <a href="#ks_reactor_client_unity_ksentitylinker_getroomtype_system_string_ks_reactor_client_unity_ksroomtype" id="ks_reactor_client_unity_ksentitylinker_getroomtype_system_string_ks_reactor_client_unity_ksroomtype"></a>

Gets a room type from the scene by name.

```csharp
public bool GetRoomType(string name, out ksRoomType roomType)
```

#### Parameters

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

Name of the room type

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

Set to the room type component, or null if none is found.

#### Returns

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

True if a room type with the given name was found in the scene.

### Initialize() <a href="#ks_reactor_client_unity_ksentitylinker_initialize" id="ks_reactor_client_unity_ksentitylinker_initialize"></a>

Creates a map of entity IDs to game objects with [ksEntityComponent](/reactor/api-reference/ks.reactor.client.unity/ks.reactor.client.unity.ksentitycomponent.md) components, and a map of room type names to [ksRoomType](/reactor/api-reference/ks.reactor.client.unity/ks.reactor.client.unity.ksroomtype.md) components. All entities are then added to a game object that tracks inactive entities in a scene.

```csharp
public void Initialize()
```

### ReleaseGameObject(ksEntityComponent) <a href="#ks_reactor_client_unity_ksentitylinker_releasegameobject_ks_reactor_client_unity_ksentitycomponent" id="ks_reactor_client_unity_ksentitylinker_releasegameobject_ks_reactor_client_unity_ksentitycomponent"></a>

Returns an entity to the linker.

```csharp
public override void ReleaseGameObject(ksEntityComponent entity)
```

#### Parameters

`entity` [ksEntityComponent](/reactor/api-reference/ks.reactor.client.unity/ks.reactor.client.unity.ksentitycomponent.md)

### RemoveRoomType(ksRoomType) <a href="#ks_reactor_client_unity_ksentitylinker_removeroomtype_ks_reactor_client_unity_ksroomtype" id="ks_reactor_client_unity_ksentitylinker_removeroomtype_ks_reactor_client_unity_ksroomtype"></a>

Remove a [ksRoomType](/reactor/api-reference/ks.reactor.client.unity/ks.reactor.client.unity.ksroomtype.md) from the collection of rooms the linker tracks.

```csharp
public void RemoveRoomType(ksRoomType roomType)
```

#### Parameters

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

ksRoomType component attached to a gameobject.

### TrackEntity(ksEntityComponent) <a href="#ks_reactor_client_unity_ksentitylinker_trackentity_ks_reactor_client_unity_ksentitycomponent" id="ks_reactor_client_unity_ksentitylinker_trackentity_ks_reactor_client_unity_ksentitycomponent"></a>

Add an entity to the linker. If the entity component is linked to an entity or has a non-zero id, does nothing.

```csharp
public void TrackEntity(ksEntityComponent entityComponent)
```

#### Parameters

`entityComponent` [ksEntityComponent](/reactor/api-reference/ks.reactor.client.unity/ks.reactor.client.unity.ksentitycomponent.md)
