Pawn/PawnAnimator.cs
namespace Skateboard;
public abstract class PawnAnimator : Component
{
[Property] public SkinnedModelRenderer Target { get; set; }
protected SkinnedModelRenderer AnimPawn => Target ?? Components.Get<SkinnedModelRenderer>();
public virtual void SetLookAt( string name, Vector3 worldPosition )
{
var pawn = Components.Get<Skateboard.Player.SkatePawn>();
if ( pawn is null )
return;
var localPos = (worldPosition - pawn.EyePosition) * pawn.EyeRotation.Inverse;
SetAnimParameter( name, localPos );
}
public virtual void SetAnimParameter( string name, Vector3 value )
{
AnimPawn?.Set( name, value );
}
public virtual void SetAnimParameter( string name, float value )
{
AnimPawn?.Set( name, value );
}
public virtual void SetAnimParameter( string name, bool value )
{
AnimPawn?.Set( name, value );
}
public virtual void SetAnimParameter( string name, int value )
{
AnimPawn?.Set( name, value );
}
public virtual void Trigger( string name )
{
SetAnimParameter( name, true );
}
public virtual void ResetParameters()
{
AnimPawn?.ClearParameters();
}
}