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

# Class ksAnimationSync

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

Syncs animation parameters and optionally layer states for an entity that has an owner with the [PROPERTIES](/reactor/api-reference/ks.reactor/ks.reactor.ksownerpermissions.md#KS_Reactor_ksOwnerPermissions_PROPERTIES) permission. Each animation parameter (and layer if [SyncLayerStates](#KS_Reactor_Client_Unity_ksAnimationSync_SyncLayerStates) is true) is synced as an entity property, starting at id [AnimationPropertiesStart](#KS_Reactor_Client_Unity_ksAnimationSync_AnimationPropertiesStart).

```csharp
[ksHideInOwnershipManager(true)]
[RequireComponent(typeof(ksEntityComponent))]
[AddComponentMenu("Reactor/ksAnimationSync")]
public class ksAnimationSync : ksEntityScript
```

#### Inheritance

[object](https://learn.microsoft.com/dotnet/api/system.object) â† Object â† Component â† Behaviour â† MonoBehaviour â† [ksMonoScript\<ksEntity, ksEntityScript>](/reactor/api-reference/ks.reactor.client.unity/ks.reactor.client.unity.ksmonoscript-2.md) â† [ksEntityScript](/reactor/api-reference/ks.reactor.client.unity/ks.reactor.client.unity.ksentityscript.md) â† [ksAnimationSync](/reactor/api-reference/ks.reactor.client.unity/ks.reactor.client.unity.ksanimationsync.md)

#### Inherited Members

[ksEntityScript.Entity](/reactor/api-reference/ks.reactor.client.unity/ks.reactor.client.unity.ksentityscript.md#KS_Reactor_Client_Unity_ksEntityScript_Entity), [ksEntityScript.Room](/reactor/api-reference/ks.reactor.client.unity/ks.reactor.client.unity.ksentityscript.md#KS_Reactor_Client_Unity_ksEntityScript_Room), [ksEntityScript.Properties](/reactor/api-reference/ks.reactor.client.unity/ks.reactor.client.unity.ksentityscript.md#KS_Reactor_Client_Unity_ksEntityScript_Properties), [ksEntityScript.OnEnable()](/reactor/api-reference/ks.reactor.client.unity/ks.reactor.client.unity.ksentityscript.md#KS_Reactor_Client_Unity_ksEntityScript_OnEnable), [ksMonoScript\<ksEntity, ksEntityScript>.InstanceType](/reactor/api-reference/ks.reactor.client.unity/ks.reactor.client.unity.ksmonoscript-2.md#KS_Reactor_Client_Unity_ksMonoScript_2_InstanceType), [ksMonoScript\<ksEntity, ksEntityScript>.Room](/reactor/api-reference/ks.reactor.client.unity/ks.reactor.client.unity.ksmonoscript-2.md#KS_Reactor_Client_Unity_ksMonoScript_2_Room), [ksMonoScript\<ksEntity, ksEntityScript>.Time](/reactor/api-reference/ks.reactor.client.unity/ks.reactor.client.unity.ksmonoscript-2.md#KS_Reactor_Client_Unity_ksMonoScript_2_Time), [ksMonoScript\<ksEntity, ksEntityScript>.IsAttached](/reactor/api-reference/ks.reactor.client.unity/ks.reactor.client.unity.ksmonoscript-2.md#KS_Reactor_Client_Unity_ksMonoScript_2_IsAttached), [ksMonoScript\<ksEntity, ksEntityScript>.IsInitialized](/reactor/api-reference/ks.reactor.client.unity/ks.reactor.client.unity.ksmonoscript-2.md#KS_Reactor_Client_Unity_ksMonoScript_2_IsInitialized), [ksMonoScript\<ksEntity, ksEntityScript>.Assets](/reactor/api-reference/ks.reactor.client.unity/ks.reactor.client.unity.ksmonoscript-2.md#KS_Reactor_Client_Unity_ksMonoScript_2_Assets), [ksMonoScript\<ksEntity, ksEntityScript>.EnableOnAttach](/reactor/api-reference/ks.reactor.client.unity/ks.reactor.client.unity.ksmonoscript-2.md#KS_Reactor_Client_Unity_ksMonoScript_2_EnableOnAttach), [ksMonoScript\<ksEntity, ksEntityScript>.OnDestroy()](/reactor/api-reference/ks.reactor.client.unity/ks.reactor.client.unity.ksmonoscript-2.md#KS_Reactor_Client_Unity_ksMonoScript_2_OnDestroy), [ksMonoScript\<ksEntity, ksEntityScript>.Attached()](/reactor/api-reference/ks.reactor.client.unity/ks.reactor.client.unity.ksmonoscript-2.md#KS_Reactor_Client_Unity_ksMonoScript_2_Attached), [ksMonoScript\<ksEntity, ksEntityScript>.Initialize()](/reactor/api-reference/ks.reactor.client.unity/ks.reactor.client.unity.ksmonoscript-2.md#KS_Reactor_Client_Unity_ksMonoScript_2_Initialize), [ksMonoScript\<ksEntity, ksEntityScript>.Detached()](/reactor/api-reference/ks.reactor.client.unity/ks.reactor.client.unity.ksmonoscript-2.md#KS_Reactor_Client_Unity_ksMonoScript_2_Detached), [ksMonoScript\<ksEntity, ksEntityScript>.Awake()](/reactor/api-reference/ks.reactor.client.unity/ks.reactor.client.unity.ksmonoscript-2.md#KS_Reactor_Client_Unity_ksMonoScript_2_Awake), MonoBehaviour.IsInvoking(), MonoBehaviour.CancelInvoke(), MonoBehaviour.Invoke(string, float), MonoBehaviour.InvokeRepeating(string, float, float), MonoBehaviour.CancelInvoke(string), MonoBehaviour.IsInvoking(string), MonoBehaviour.StartCoroutine(string), MonoBehaviour.StartCoroutine(string, object), MonoBehaviour.StartCoroutine(IEnumerator), MonoBehaviour.StartCoroutine\_Auto(IEnumerator), MonoBehaviour.StopCoroutine(IEnumerator), MonoBehaviour.StopCoroutine(Coroutine), MonoBehaviour.StopCoroutine(string), MonoBehaviour.StopAllCoroutines(), MonoBehaviour.print(object), MonoBehaviour.destroyCancellationToken, MonoBehaviour.useGUILayout, MonoBehaviour.runInEditMode, Behaviour.enabled, Behaviour.isActiveAndEnabled, Component.GetComponent(Type), Component.GetComponent\<T>(), Component.TryGetComponent(Type, out Component), Component.TryGetComponent\<T>(out T), Component.GetComponent(string), Component.GetComponentInChildren(Type, bool), Component.GetComponentInChildren(Type), Component.GetComponentInChildren\<T>(bool), Component.GetComponentInChildren\<T>(), Component.GetComponentsInChildren(Type, bool), Component.GetComponentsInChildren(Type), Component.GetComponentsInChildren\<T>(bool), Component.GetComponentsInChildren\<T>(bool, List\<T>), Component.GetComponentsInChildren\<T>(), Component.GetComponentsInChildren\<T>(List\<T>), Component.GetComponentInParent(Type, bool), Component.GetComponentInParent(Type), Component.GetComponentInParent\<T>(bool), Component.GetComponentInParent\<T>(), Component.GetComponentsInParent(Type, bool), Component.GetComponentsInParent(Type), Component.GetComponentsInParent\<T>(bool), Component.GetComponentsInParent\<T>(bool, List\<T>), Component.GetComponentsInParent\<T>(), Component.GetComponents(Type), Component.GetComponents(Type, List\<Component>), Component.GetComponents\<T>(List\<T>), Component.GetComponents\<T>(), Component.CompareTag(string), Component.SendMessageUpwards(string, object, SendMessageOptions), Component.SendMessageUpwards(string, object), Component.SendMessageUpwards(string), Component.SendMessageUpwards(string, SendMessageOptions), Component.SendMessage(string, object), Component.SendMessage(string), Component.SendMessage(string, object, SendMessageOptions), Component.SendMessage(string, SendMessageOptions), Component.BroadcastMessage(string, object, SendMessageOptions), Component.BroadcastMessage(string, object), Component.BroadcastMessage(string), Component.BroadcastMessage(string, SendMessageOptions), Component.transform, Component.gameObject, Component.tag, Object.GetInstanceID(), Object.GetHashCode(), Object.Equals(object), Object.Instantiate(Object, Vector3, Quaternion), Object.Instantiate(Object, Vector3, Quaternion, Transform), Object.Instantiate(Object), Object.Instantiate(Object, Transform), Object.Instantiate(Object, Transform, bool), Object.Instantiate\<T>(T), Object.Instantiate\<T>(T, Vector3, Quaternion), Object.Instantiate\<T>(T, Vector3, Quaternion, Transform), Object.Instantiate\<T>(T, Transform), Object.Instantiate\<T>(T, Transform, bool), Object.Destroy(Object, float), Object.Destroy(Object), Object.DestroyImmediate(Object, bool), Object.DestroyImmediate(Object), Object.FindObjectsOfType(Type), Object.FindObjectsOfType(Type, bool), Object.FindObjectsByType(Type, FindObjectsSortMode), Object.FindObjectsByType(Type, FindObjectsInactive, FindObjectsSortMode), Object.DontDestroyOnLoad(Object), Object.DestroyObject(Object, float), Object.DestroyObject(Object), Object.FindSceneObjectsOfType(Type), Object.FindObjectsOfTypeIncludingAssets(Type), Object.FindObjectsOfType\<T>(), Object.FindObjectsByType\<T>(FindObjectsSortMode), Object.FindObjectsOfType\<T>(bool), Object.FindObjectsByType\<T>(FindObjectsInactive, FindObjectsSortMode), Object.FindObjectOfType\<T>(), Object.FindObjectOfType\<T>(bool), Object.FindFirstObjectByType\<T>(), Object.FindAnyObjectByType\<T>(), Object.FindFirstObjectByType\<T>(FindObjectsInactive), Object.FindAnyObjectByType\<T>(FindObjectsInactive), Object.FindObjectsOfTypeAll(Type), Object.FindObjectOfType(Type), Object.FindFirstObjectByType(Type), Object.FindAnyObjectByType(Type), Object.FindObjectOfType(Type, bool), Object.FindFirstObjectByType(Type, FindObjectsInactive), Object.FindAnyObjectByType(Type, FindObjectsInactive), Object.ToString(), Object.name, Object.hideFlags, [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)

## Fields

### DEFAULT\_PRECISION <a href="#ks_reactor_client_unity_ksanimationsync_default_precision" id="ks_reactor_client_unity_ksanimationsync_default_precision"></a>

Default precision for float animation parameters.

```csharp
public const float DEFAULT_PRECISION = 0.001
```

#### Field Value

[float](https://learn.microsoft.com/dotnet/api/system.single)

## Properties

### AnimationPropertiesStart <a href="#ks_reactor_client_unity_ksanimationsync_animationpropertiesstart" id="ks_reactor_client_unity_ksanimationsync_animationpropertiesstart"></a>

The start of the property ids used to sync animation data. Each animation parameter (and layer if [SyncLayerStates](#KS_Reactor_Client_Unity_ksAnimationSync_SyncLayerStates) is true) will use one property.

```csharp
public uint AnimationPropertiesStart { get; }
```

#### Property Value

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

### Animator <a href="#ks_reactor_client_unity_ksanimationsync_animator" id="ks_reactor_client_unity_ksanimationsync_animator"></a>

The animator to sync animation state for.

```csharp
public Animator Animator { get; set; }
```

#### Property Value

Animator

### CrossFadeDuration <a href="#ks_reactor_client_unity_ksanimationsync_crossfadeduration" id="ks_reactor_client_unity_ksanimationsync_crossfadeduration"></a>

The cross fade duration in seconds when switching layer states.

```csharp
public float CrossFadeDuration { get; set; }
```

#### Property Value

[float](https://learn.microsoft.com/dotnet/api/system.single)

### Precision <a href="#ks_reactor_client_unity_ksanimationsync_precision" id="ks_reactor_client_unity_ksanimationsync_precision"></a>

The accuracy of quantized float values synced over the network. 0 or less = full float precision.

```csharp
public float Precision { get; set; }
```

#### Property Value

[float](https://learn.microsoft.com/dotnet/api/system.single)

### SyncLayerStates <a href="#ks_reactor_client_unity_ksanimationsync_synclayerstates" id="ks_reactor_client_unity_ksanimationsync_synclayerstates"></a>

Should the animation layer states be synced? If your layer states are driven by animation properties, this should be false. If they are set programmatically, this should be true.

```csharp
public bool SyncLayerStates { get; set; }
```

#### Property Value

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

## Methods

### Detached() <a href="#ks_reactor_client_unity_ksanimationsync_detached" id="ks_reactor_client_unity_ksanimationsync_detached"></a>

Unregisters event listeners.

```csharp
public override void Detached()
```

### GetPrecision(int) <a href="#ks_reactor_client_unity_ksanimationsync_getprecision_system_int32" id="ks_reactor_client_unity_ksanimationsync_getprecision_system_int32"></a>

Gets the precision for a float animation parameter.

```csharp
public float GetPrecision(int nameHash)
```

#### Parameters

`nameHash` [int](https://learn.microsoft.com/dotnet/api/system.int32)

Parameter name hash

#### Returns

[float](https://learn.microsoft.com/dotnet/api/system.single)

Precision value. 0 = full precision.

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

Initialization. Registers event listeners for syncing animation data.

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

### RemovePrecisionOverride(int) <a href="#ks_reactor_client_unity_ksanimationsync_removeprecisionoverride_system_int32" id="ks_reactor_client_unity_ksanimationsync_removeprecisionoverride_system_int32"></a>

Removes a precision override for a float animation parameter. The parameter will use [Precision](#KS_Reactor_Client_Unity_ksAnimationSync_Precision) as its precision value.

```csharp
public void RemovePrecisionOverride(int nameHash)
```

#### Parameters

`nameHash` [int](https://learn.microsoft.com/dotnet/api/system.int32)

Parameter name hash

### SetPrecisionOverride(int, float) <a href="#ks_reactor_client_unity_ksanimationsync_setprecisionoverride_system_int32_system_single" id="ks_reactor_client_unity_ksanimationsync_setprecisionoverride_system_int32_system_single"></a>

Sets a precision override for a float animation parameter.

```csharp
public void SetPrecisionOverride(int nameHash, float precision)
```

#### Parameters

`nameHash` [int](https://learn.microsoft.com/dotnet/api/system.int32)

Paramter name hash

`precision` [float](https://learn.microsoft.com/dotnet/api/system.single)

Float precision. 0 or less = full float precision.

### TryGetPrecisionOverride(int, out float) <a href="#ks_reactor_client_unity_ksanimationsync_trygetprecisionoverride_system_int32_system_single" id="ks_reactor_client_unity_ksanimationsync_trygetprecisionoverride_system_int32_system_single"></a>

Tries to get a precision override for a float animation parameter.

```csharp
public bool TryGetPrecisionOverride(int nameHash, out float precisionOverride)
```

#### Parameters

`nameHash` [int](https://learn.microsoft.com/dotnet/api/system.int32)

Parameter name hash

`precisionOverride` [float](https://learn.microsoft.com/dotnet/api/system.single)

Set to the precision override if the animation parameter has one, otherwise set to -1.

#### Returns

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

True if the animation parameter has a precision override set.
