> For the complete documentation index, see [llms.txt](https://flora.magneticarcade.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://flora.magneticarcade.com/scripts/instance-handle.md).

# Instance Handle

A lightweight struct used to uniquely identify and reference individual instances.

A `FloraInstanceHandle` identifies one instance managed by [FloraSystem](/scripts/system.md).

## Validity

A handle is valid while its `Index` and `Version` match an active instance. Destroying the instance invalidates all copies of its handle.

## Usage

### Create

```csharp
FloraInstanceHandle handle = FloraSystem.GetOrCreate().CreateInstance(
    prefab,
    parentObject,
    position,
    rotation,
    scale
);
```

### Destroy

```csharp
FloraSystem.Instance.DestroyInstance(handle);
FloraSystem.Instance.DestroyInstances(handlesArray);
```

### Check validity

```csharp
bool exists = handle.Exists();
```

### Enable or disable

```csharp
bool isEnabled = FloraSystem.Instance.IsInstanceEnabled(handle);
FloraSystem.Instance.SetInstanceEnabled(handle, true);
```

### Read position or bounds

```csharp
float3 position = FloraSystem.Instance.GetInstancePosition(handle);
Bounds bounds = FloraSystem.Instance.GetInstanceBounds(handle);
```

Terrain details do not have instance handles. They are transient GPU data and cannot be queried or modified individually through `FloraSystem`.
