# ControlState

Roblox Engine API class from Roblox Studio 0.744.0.7441077 (version-7aaa6838d36c4448).

- Inherits from, nearest first: [Instance](https://rapi.sleaze.dev/classes/Instance.md), [Object](https://rapi.sleaze.dev/classes/Object.md)
- Tags: Not browsable
- Memory category: Instances
- HTML page: https://rapi.sleaze.dev/classes/ControlState/
- Roblox documentation: https://create.roblox.com/docs/reference/engine/classes/ControlState

## Properties

### Owner

```luau
ControlState.Owner: Player
```

- Tags: Simulation access

### StateSchema

```luau
ControlState.StateSchema: string = ""
```

- Tags: Hidden, Not scriptable, Roblox engine security

## Methods

### AddBoolField

```luau
ControlState:AddBoolField(name: string, defaultValue: boolean? = false)
```

### AddCFrameField

```luau
ControlState:AddCFrameField(name: string, defaultValue: CFrame? = CFrame.identity)
```

### AddInstanceField

```luau
ControlState:AddInstanceField(name: string)
```

### AddIntField

```luau
ControlState:AddIntField(name: string, defaultValue: number? = 0, min: number? = 0, max: number? = 255)
```

### AddNumberField

```luau
ControlState:AddNumberField(name: string, defaultValue: number? = 0, min: number? = 0, max: number? = 1)
```

### AddUnitVector3Field

```luau
ControlState:AddUnitVector3Field(name: string, defaultValue: Vector3? = Vector3.zero)
```

### AddVector2Field

```luau
ControlState:AddVector2Field(name: string, defaultValue: Vector2? = Vector2.zero, maxMagnitude: number? = 1)
```

### AddVector3Field

```luau
ControlState:AddVector3Field(name: string, defaultValue: Vector3? = Vector3.zero, maxMagnitude: number? = 100)
```

### GetChangedState

```luau
ControlState:GetChangedState(prev: Enum.StateReferenceFrame? = Enum.StateReferenceFrame.PreviousState, next: Enum.StateReferenceFrame? = Enum.StateReferenceFrame.CurrentState): { [string]: any }
```

- Tags: Simulation access

### GetReplicationWeight

```luau
ControlState:GetReplicationWeight(): number
```

### GetState

```luau
ControlState:GetState(ref: Enum.StateReferenceFrame? = Enum.StateReferenceFrame.CurrentState): { [string]: any }
```

- Tags: Simulation access

### HasField

```luau
ControlState:HasField(name: string): boolean
```

- Tags: Not browsable

### SetField

```luau
ControlState:SetField(name: string, value: any)
```

### UpdateFields

```luau
ControlState:UpdateFields(state: { [string]: any })
```

## Events

### OnStateChanged

```luau
ControlState.OnStateChanged: RBXScriptSignal<()>
```

## Inherited members

- From [Instance](https://rapi.sleaze.dev/classes/Instance.md): `Archivable`, `archivable`, `Attributes`, `AttributesReplicate`, `AttributesSerialize`, `HistoryId`, `Name`, `Parent`, `PredictionMode`, `PropertyStatusStudio`, `RobloxLocked`, `SerializedOverrides`, `SourceAssetId`, `Tags`, `UniqueId`, `numExpectedDirectChildren`, `DataCost`, `Capabilities`, `DefinesCapabilities`, `IsInSandbox`, `Sandboxed`, `AddTag`, `ClearAllChildren`, `Clone`, `Destroy`, `FindFirstAncestor`, `FindFirstAncestorOfClass`, `FindFirstAncestorWhichIsA`, `FindFirstChild`, `FindFirstChildOfClass`, `FindFirstChildWhichIsA`, `FindFirstDescendant`, `GetActor`, `GetAttribute`, `GetAttributeChangedSignal`, `GetAttributes`, `GetChildren`, `GetDebugId`, `GetDescendants`, `GetFullName`, `GetStyled`, `GetStyledPropertyChangedSignal`, `GetTags`, `HasTag`, `IsAncestorOf`, `IsDescendantOf`, `IsPropertyModified`, `QueryDescendants`, `RemoveTag`, `ResetPropertyToDefault`, `SetAttribute`, `WaitForChild`, `Remove`, `children`, `clone`, `destroy`, `findFirstChild`, `getChildren`, `isDescendantOf`, `remove`, `AncestryChanged`, `AttributeChanged`, `ChildAdded`, `ChildRemoved`, `DescendantAdded`, `DescendantRemoving`, `Destroying`, `StyledPropertiesChanged`, `childAdded`
- From [Object](https://rapi.sleaze.dev/classes/Object.md): `ClassName`, `className`, `GetPropertyChangedSignal`, `IsA`, `isA`, `Changed`
