NPCs/EnemyAnimator.cs
using Sandbox;
namespace Opium.AI;
public partial class EnemyAnimator : AgentAnimator
{
private void UpdateUpperState()
{
var stateMachine = Agent?.StateMachine;
var chosenState = UpperBodyState.Default;
if ( stateMachine is not null )
{
chosenState = stateMachine.CurrentState.GetUpperAnimationState();
}
UpperBodyState = chosenState;
}
private void UpdateLowerState()
{
var stateMachine = Agent?.StateMachine;
var chosenState = LowerBodyState.Default;
if ( stateMachine is not null )
{
chosenState = stateMachine.CurrentState.GetLowerAnimationState();
}
LowerBodyState = chosenState;
}
private void UpdateFullState()
{
var stateMachine = Agent?.StateMachine;
FullBodyState? chosenState = null;
if ( stateMachine is not null )
{
chosenState = stateMachine.CurrentState.GetFullBodyState();
}
if ( chosenState is not null )
{
IsFullBody = true;
FullBodyState = chosenState.Value;
}
else
{
IsFullBody = false;
}
}
protected override void OnUpdate()
{
UpdateUpperState();
UpdateLowerState();
UpdateFullState();
base.OnUpdate();
}
}