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

# Instance Transform

Represents an instance’s position, rotation, and scale

`FloraInstanceTransform` stores position, rotation, and scale relative to a parent, or in world space when no parent is assigned.

***

## Usage

### Defining an Instance Transform

Instances can be placed using local-space transform data relative to a parent `Transform`:

```csharp
var localTransform = new FloraInstanceTransform(localPosition, localRotation, localScale);
FloraSystem.Instance.CreateInstance(prefab, this.transform, localTransform);
```

### Converting from a Unity Transform

You can construct a `FloraInstanceTransform` from a `Transform`, in either local or world space:

```csharp
var local = FloraInstanceTransform.FromUnityTransform(this.transform, Space.Self);
var world = FloraInstanceTransform.FromUnityTransform(this.transform, Space.World);
```

### Writing Instance Transforms

To update an instance’s transform after creation:

```csharp
FloraSystem.Instance.UpdateInstanceWorldTransform(handle, transform);
```

You can also update multiple instances at once using arrays or native containers.

### Transform Composition and Manipulation

`FloraInstanceTransform` includes utility methods for manipulating transform data:

```csharp
transform = transform.RotateY(math.radians(90)).Translate(new float3(0, 1, 0));
```
