riversong code showcase

This commit is contained in:
Daniele Marotta
2026-05-21 15:52:18 +02:00
commit 4c9eea1c02
462 changed files with 23406 additions and 0 deletions

View File

@@ -0,0 +1,52 @@
using System;
using Cysharp.Threading.Tasks;
using UnityEngine;
namespace DanieleMarotta.RiversongCodeShowcase
{
public class PlayAnimationIntentExecutionLogic : IntentExecutionLogic
{
private static readonly int ChopTree = Animator.StringToHash("ChopTree");
private static readonly int Farming = Animator.StringToHash("Farming");
private static readonly int FireProjectile = Animator.StringToHash("FireProjectile");
private IAgentVisualizationCollection _agentVisualizationCollection;
public override UniTask InitializeAsync(IServiceLocator serviceLocator)
{
_agentVisualizationCollection = serviceLocator.GetService<IAgentVisualizationCollection>();
return UniTask.CompletedTask;
}
public override IntentExecutionResult OnStartingIntent(Agent agent, in AgentIntent intent)
{
if (!_agentVisualizationCollection.TryGetVisualization(agent.Id, out var visualization)) return IntentExecutionResult.Failure;
var triggerID = GetAnimatorTriggerID((AgentAnimation)intent.TargetId);
visualization.SetAnimatorTrigger(triggerID);
return IntentExecutionResult.Success;
}
public override IntentExecutionResult Execute(Agent agent, in AgentIntent intent)
{
if (!_agentVisualizationCollection.TryGetVisualization(agent.Id, out var visualization)) return IntentExecutionResult.Failure;
return !visualization.WaitAnimationCompleted() ? IntentExecutionResult.InProgress : IntentExecutionResult.Success;
}
private int GetAnimatorTriggerID(AgentAnimation animation)
{
return animation switch
{
AgentAnimation.ChopTree => ChopTree,
AgentAnimation.Farming => Farming,
AgentAnimation.FireProjectile => FireProjectile,
_ => throw new ArgumentOutOfRangeException()
};
}
}
}