> ## Documentation Index
> Fetch the complete documentation index at: https://docs.kinemation.xyz/llms.txt
> Use this file to discover all available pages before exploring further.

# 📑Animator Profiles

> In this section you will learn about new layer system.

## Legacy system

In previous versions of the **FPS Animation Framework**, we had a fixed amount of animation layers, specified directly in the **FPSAnimator** component:

<Frame caption={"Legacy system."}>
  <img src="https://mintcdn.com/kinemation/IMbHDDWE_rjJU7jO/images/scriptable-animation-system/dd961d671836c8492954.png?fit=max&auto=format&n=IMbHDDWE_rjJU7jO&q=85&s=9ebe2012aa453e1e6048f72529bc25bd" alt="" width={407} data-path="images/scriptable-animation-system/dd961d671836c8492954.png" />
</Frame>

The problem with this design is obvious - scalability. What if we want to add an unarmed state? Or maybe swimming? What if we want a unique animation feature for this specific weapon?

The new **Scriptable Animation System** eliminates this problem by introducing a dynamic linking system for animation features.

## Dynamic Linking

This concept is incredibly simple - animation feature encapsulation. To achieve this, the new system relies on **Animator Profiles**:

<Frame caption={"Profiles!"}>
  <img src="https://mintcdn.com/kinemation/IMbHDDWE_rjJU7jO/images/scriptable-animation-system/46cb853a790a59716499.png?fit=max&auto=format&n=IMbHDDWE_rjJU7jO&q=85&s=9382120e111420c807146faf22a3b414" alt="" width={410} data-path="images/scriptable-animation-system/46cb853a790a59716499.png" />
</Frame>

An **Animator Profile** is a Scriptable Object, that contains procedural animation features (**FPSAnimatorLayerSettings**). There are no limitations on how to use a profile. Whether it is a weapon, item, or a climbing state - it is possible to add custom features required for a specific gameplay scenario.

<Tip>
  **Example:** imagine you want to add a ladder-climbing feature. You don't need Aiming or Recoil animation layers in this case. So you can create a new profile, which will include the features you need for this specific climbing state.
</Tip>

Here is how to link a new animator profile:

In this example, we dynamically link an **Animator Profile** from the currently equipped weapon. For items and weapons, there's a special component called **FPS Animator Entity**:

<Frame caption={"Entity can be a weapon or an item."}>
  <img src="https://mintcdn.com/kinemation/IMbHDDWE_rjJU7jO/images/scriptable-animation-system/e949f4695a2acbebf4ff.png?fit=max&auto=format&n=IMbHDDWE_rjJU7jO&q=85&s=a91db47fb4e39a2f6a54b6f65d344bba" alt="" width={384} data-path="images/scriptable-animation-system/e949f4695a2acbebf4ff.png" />
</Frame>

This is just a data component, that contains an **Animator Profile** and a *Default Aim Point* transform (the [Ads Layer](/scriptable-animation-system/fundamentals/animator-layers/ads-layer) uses it).

## Procedural Animation Features

A procedural animation feature consists of 2 entities:

* **Animation Layer Settings**: a Scriptable Object that contains feature data.

* **Animation Layer Job**: a struct that runs the procedural animation logic.

<Tip>
  **Tip**: separating data and execution entities makes the workflow more convenient. We can modify the data and see the runtime changes. It is also essential for Version Control since managing data assets is quite simple.
</Tip>

**Animation Layer Settings** asset is also responsible for instantiating a new **Animation Layer Job** when a new **Animator Profile** is linked. This is how it is handled in code:
