Animator Parameters
Controller parameters are stored in the rig entity's DynamicBuffer<AnimatorControllerParameterComponent>. Use AnimatorParametersAspect to access them by name, or index the buffer when you control the parameter layout. Despite its name, AnimatorParametersAspect is a plain helper struct, not an Entities IAspect.
Direct Buffer Indexing
The following job increments the first parameter only if it exists and is a float:
using Rukhanka;
using Unity.Burst;
using Unity.Entities;
[BurstCompile]
public partial struct IncrementFirstFloatParameterJob : IJobEntity
{
void Execute(DynamicBuffer<AnimatorControllerParameterComponent> parameters)
{
if (parameters.IsEmpty || parameters[0].type != ControllerParameterType.Float)
return;
var parameter = parameters[0];
parameter.FloatValue += 1.0f;
parameters[0] = parameter;
}
}
Parameters follow the order in the authoring Animator Controller. Reordering or replacing the controller can change their indices. Write modified values back to the buffer: its indexer returns a value copy.

Accessing by Hash
FastAnimatorParameter stores Rukhanka Animation's hash of a parameter name. Construct it once and reuse it. AnimatorParametersAspect uses the baked perfect hash table when available and otherwise searches the parameter buffer. Names are case-sensitive and must match the controller exactly, including spaces; use the setter appropriate to the declared parameter type.
This complete system demonstrates float, integer, Boolean, and trigger parameters. Add PlayerAnimationInput to the rig entity and update it from your gameplay input system. Create matching controller parameters named Speed (float), Mode (int), Grounded (bool), and Jump (trigger).
using Rukhanka;
using Unity.Burst;
using Unity.Entities;
public struct PlayerAnimationInput : IComponentData
{
public float speed;
public int mode;
public bool grounded;
public bool jumpRequested;
}
[UpdateInGroup(typeof(SimulationSystemGroup))]
[UpdateBefore(typeof(RukhankaAnimationSystemGroup))]
public partial struct PlayerAnimationParameterSystem : ISystem
{
FastAnimatorParameter speed, mode, grounded, jump;
public void OnCreate(ref SystemState state)
{
speed = new FastAnimatorParameter("Speed");
mode = new FastAnimatorParameter("Mode");
grounded = new FastAnimatorParameter("Grounded");
jump = new FastAnimatorParameter("Jump");
}
[BurstCompile]
partial struct UpdateParametersJob : IJobEntity
{
public FastAnimatorParameter speed, mode, grounded, jump;
void Execute(ref PlayerAnimationInput input,
DynamicBuffer<AnimatorControllerParameterComponent> parameters,
in AnimatorControllerParameterIndexTableComponent indexTable)
{
var animator = new AnimatorParametersAspect(parameters, indexTable);
animator.SetFloatParameter(speed, input.speed);
animator.SetIntParameter(mode, input.mode);
animator.SetBoolParameter(grounded, input.grounded);
if (input.jumpRequested)
{
animator.SetTrigger(jump);
input.jumpRequested = false;
}
}
}
[BurstCompile]
public void OnUpdate(ref SystemState state)
{
state.Dependency = new UpdateParametersJob
{
speed = speed, mode = mode, grounded = grounded, jump = jump
}.ScheduleParallel(state.Dependency);
}
}
Read values with GetFloatParameter, GetIntParameter, or GetBoolParameter. Use HasParameter before accessing a parameter when your query includes different controllers. ResetTrigger explicitly clears a trigger; do not reset it every frame before the controller has a chance to consume it.
Overloads accepting FixedString512Bytes names compute a hash on each call. They are useful for prototyping; cache FastAnimatorParameter values in frequently executed code. Do not substitute UnityEngine.Animator.StringToHash: use Rukhanka Animation's hashing helpers.