Units/Animator.cs
using Sandbox.Citizen;
namespace PlanetMeat;
[Group( "Planet Meat - Units" ), Title( "Animator" ), Icon( "emoji_people" )]
public sealed class Animator : Component
{
[RequireComponent] public CitizenAnimationHelper AnimHelper { get; set; }
public SkinnedModelRenderer SkinnedModel => AnimHelper.Target;
[Property] public CitizenAnimationHelper.HoldTypes StartingHold { get; set; }
[Property] public CitizenAnimationHelper.Hand StartingHandedness { get; set; }
protected override void OnStart()
{
base.OnStart();
AnimHelper.HoldType = StartingHold;
AnimHelper.Handedness = StartingHandedness;
}
public void Move( Vector3 velocity, Vector3 look )
{
AnimHelper.WithVelocity( velocity / SkinnedModel.WorldScale.x );
AnimHelper.WithLook( look - WorldPosition );
}
public void Move( Vector3 velocity ) => Move( velocity, SkinnedModel.WorldTransform.Forward );
public void StopMoving() => Move( Vector3.Zero );
public void Attack()
{
AnimHelper.Target.Set( "b_attack", true );
}
public void TurnTo( Rotation worldRotation )
{
SkinnedModel.WorldRotation = worldRotation;
}
public void TurnTo( Vector3 direction ) => TurnTo( Rotation.LookAt( direction ) );
}