> 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/ks.reactor.ksreadonlytransformstate.md).

# Class ksReadOnlyTransformState

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

Read-only transform data.

```csharp
public class ksReadOnlyTransformState : ksIReadOnlyTransform
```

#### Inheritance

[object](https://learn.microsoft.com/dotnet/api/system.object) ← [ksReadOnlyTransformState](/reactor/api-reference/ks.reactor/ks.reactor.ksreadonlytransformstate.md)

#### Derived

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

#### Implements

[ksIReadOnlyTransform](/reactor/api-reference/ks.reactor/ks.reactor.ksireadonlytransform.md)

#### Inherited Members

[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)

#### Extension Methods

[ksReadOnlyTransformExtension.Backwards(ksIReadOnlyTransform)](/reactor/api-reference/ks.reactor/ks.reactor.ksreadonlytransformextension.md#KS_Reactor_ksReadOnlyTransformExtension_Backwards_KS_Reactor_ksIReadOnlyTransform_), [ksReadOnlyTransformExtension.Down(ksIReadOnlyTransform)](/reactor/api-reference/ks.reactor/ks.reactor.ksreadonlytransformextension.md#KS_Reactor_ksReadOnlyTransformExtension_Down_KS_Reactor_ksIReadOnlyTransform_), [ksReadOnlyTransformExtension.Forward(ksIReadOnlyTransform)](/reactor/api-reference/ks.reactor/ks.reactor.ksreadonlytransformextension.md#KS_Reactor_ksReadOnlyTransformExtension_Forward_KS_Reactor_ksIReadOnlyTransform_), [ksReadOnlyTransformExtension.Left(ksIReadOnlyTransform)](/reactor/api-reference/ks.reactor/ks.reactor.ksreadonlytransformextension.md#KS_Reactor_ksReadOnlyTransformExtension_Left_KS_Reactor_ksIReadOnlyTransform_), [ksReadOnlyTransformExtension.Right(ksIReadOnlyTransform)](/reactor/api-reference/ks.reactor/ks.reactor.ksreadonlytransformextension.md#KS_Reactor_ksReadOnlyTransformExtension_Right_KS_Reactor_ksIReadOnlyTransform_), [ksReadOnlyTransformExtension.ToLocal(ksIReadOnlyTransform, ksVector3, bool)](/reactor/api-reference/ks.reactor/ks.reactor.ksreadonlytransformextension.md#KS_Reactor_ksReadOnlyTransformExtension_ToLocal_KS_Reactor_ksIReadOnlyTransform_KS_Reactor_ksVector3_System_Boolean_), [ksReadOnlyTransformExtension.ToLocal(ksIReadOnlyTransform, ksQuaternion)](/reactor/api-reference/ks.reactor/ks.reactor.ksreadonlytransformextension.md#KS_Reactor_ksReadOnlyTransformExtension_ToLocal_KS_Reactor_ksIReadOnlyTransform_KS_Reactor_ksQuaternion_), [ksReadOnlyTransformExtension.ToLocalDirection(ksIReadOnlyTransform, ksVector3, bool)](/reactor/api-reference/ks.reactor/ks.reactor.ksreadonlytransformextension.md#KS_Reactor_ksReadOnlyTransformExtension_ToLocalDirection_KS_Reactor_ksIReadOnlyTransform_KS_Reactor_ksVector3_System_Boolean_), [ksReadOnlyTransformExtension.ToWorld(ksIReadOnlyTransform, ksVector3, bool)](/reactor/api-reference/ks.reactor/ks.reactor.ksreadonlytransformextension.md#KS_Reactor_ksReadOnlyTransformExtension_ToWorld_KS_Reactor_ksIReadOnlyTransform_KS_Reactor_ksVector3_System_Boolean_), [ksReadOnlyTransformExtension.ToWorld(ksIReadOnlyTransform, ksQuaternion)](/reactor/api-reference/ks.reactor/ks.reactor.ksreadonlytransformextension.md#KS_Reactor_ksReadOnlyTransformExtension_ToWorld_KS_Reactor_ksIReadOnlyTransform_KS_Reactor_ksQuaternion_), [ksReadOnlyTransformExtension.ToWorldDirection(ksIReadOnlyTransform, ksVector3, bool)](/reactor/api-reference/ks.reactor/ks.reactor.ksreadonlytransformextension.md#KS_Reactor_ksReadOnlyTransformExtension_ToWorldDirection_KS_Reactor_ksIReadOnlyTransform_KS_Reactor_ksVector3_System_Boolean_), [ksReadOnlyTransformExtension.Up(ksIReadOnlyTransform)](/reactor/api-reference/ks.reactor/ks.reactor.ksreadonlytransformextension.md#KS_Reactor_ksReadOnlyTransformExtension_Up_KS_Reactor_ksIReadOnlyTransform_)

## Fields

### m\_flags <a href="#ks_reactor_ksreadonlytransformstate_m_flags" id="ks_reactor_ksreadonlytransformstate_m_flags"></a>

```csharp
protected ksReadOnlyTransformState.DirtyFlag m_flags
```

#### Field Value

[ksReadOnlyTransformState](/reactor/api-reference/ks.reactor/ks.reactor.ksreadonlytransformstate.md).[DirtyFlag](/reactor/api-reference/ks.reactor/ks.reactor.ksreadonlytransformstate/ks.reactor.ksreadonlytransformstate.dirtyflag.md)

### m\_position <a href="#ks_reactor_ksreadonlytransformstate_m_position" id="ks_reactor_ksreadonlytransformstate_m_position"></a>

```csharp
protected ksVector3 m_position
```

#### Field Value

[ksVector3](/reactor/api-reference/ks.reactor/ks.reactor.ksvector3.md)

### m\_rotation <a href="#ks_reactor_ksreadonlytransformstate_m_rotation" id="ks_reactor_ksreadonlytransformstate_m_rotation"></a>

```csharp
protected ksQuaternion m_rotation
```

#### Field Value

[ksQuaternion](/reactor/api-reference/ks.reactor/ks.reactor.ksquaternion.md)

### m\_scale <a href="#ks_reactor_ksreadonlytransformstate_m_scale" id="ks_reactor_ksreadonlytransformstate_m_scale"></a>

```csharp
protected ksVector3 m_scale
```

#### Field Value

[ksVector3](/reactor/api-reference/ks.reactor/ks.reactor.ksvector3.md)

## Properties

### DirtyFlags <a href="#ks_reactor_ksreadonlytransformstate_dirtyflags" id="ks_reactor_ksreadonlytransformstate_dirtyflags"></a>

Dirty flags

```csharp
public ksReadOnlyTransformState.DirtyFlag DirtyFlags { get; }
```

#### Property Value

[ksReadOnlyTransformState](/reactor/api-reference/ks.reactor/ks.reactor.ksreadonlytransformstate.md).[DirtyFlag](/reactor/api-reference/ks.reactor/ks.reactor.ksreadonlytransformstate/ks.reactor.ksreadonlytransformstate.dirtyflag.md)

### Position <a href="#ks_reactor_ksreadonlytransformstate_position" id="ks_reactor_ksreadonlytransformstate_position"></a>

Position

```csharp
public ksVector3 Position { get; }
```

#### Property Value

[ksVector3](/reactor/api-reference/ks.reactor/ks.reactor.ksvector3.md)

### Rotation <a href="#ks_reactor_ksreadonlytransformstate_rotation" id="ks_reactor_ksreadonlytransformstate_rotation"></a>

Rotation

```csharp
public ksQuaternion Rotation { get; }
```

#### Property Value

[ksQuaternion](/reactor/api-reference/ks.reactor/ks.reactor.ksquaternion.md)

### Scale <a href="#ks_reactor_ksreadonlytransformstate_scale" id="ks_reactor_ksreadonlytransformstate_scale"></a>

Scale

```csharp
public ksVector3 Scale { get; }
```

#### Property Value

[ksVector3](/reactor/api-reference/ks.reactor/ks.reactor.ksvector3.md)

## Methods

### IsDirty(DirtyFlag) <a href="#ks_reactor_ksreadonlytransformstate_isdirty_ks_reactor_ksreadonlytransformstate_dirtyflag" id="ks_reactor_ksreadonlytransformstate_isdirty_ks_reactor_ksreadonlytransformstate_dirtyflag"></a>

Checks if the property associated with the `flag` is dirty. Note that if a predictor writes a value, that value will be marked dirty even if the value written was the same as the previous value. If this is called on ksBaseEntity.ServerTransform outside of a predictor, it will return false.

```csharp
public bool IsDirty(ksReadOnlyTransformState.DirtyFlag flag)
```

#### Parameters

`flag` [ksReadOnlyTransformState](/reactor/api-reference/ks.reactor/ks.reactor.ksreadonlytransformstate.md).[DirtyFlag](/reactor/api-reference/ks.reactor/ks.reactor.ksreadonlytransformstate/ks.reactor.ksreadonlytransformstate.dirtyflag.md)

Dirty flag to check.

#### Returns

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

True if the property is dirty.
