# Root Motion Controller

## Description

The `RootMotionController` is a utility component designed to enhance root motion support. This component is responsible for calculating and supplying root motion velocity and rotation to the `Character` class.

{% hint style="info" %}
The `RootMotionController` component must be added to the `GameObject` with your `Animator`, usually the model of your character.
{% endhint %}

## Public Methods

```csharp
/// <summary>
/// Flush any accumulated deltas.
/// This prevents accumulation while character is toggling root motion.
/// </summary>

public virtual void FlushAccumulatedDeltas()

/// <summary>
/// Return current root motion rotation and clears accumulated delta rotation.
/// </summary>

public virtual Quaternion ConsumeRootMotionRotation()

/// <summary>
/// Return current root motion velocity and clears accumulated delta positions.
/// </summary>

public virtual Vector3 ConsumeRootMotionVelocity(float deltaTime)
```
