示例#1
0
    protected override void Execute(CharacterAnimationRequested e)
    {
        if (!state.IsEnemy(e.MemberId))
        {
            return;
        }

        var enemyIndex = state.GetEnemyIndexByMemberId(e.MemberId);
        var enemy      = active[enemyIndex];

        Log.Info($"Began Animation for {enemy.name}");
        var animator = enemy.GetComponentInChildren <Animator>();

        if (animator == null)
        {
            Debug.LogWarning($"No Animator found for {enemy.name}");
        }
        else
        {
            StartCoroutine(animator.PlayAnimationUntilFinished(e.Animation, elapsed =>
            {
                Log.Info($"Finished {e.Animation} in {elapsed} seconds.");
                Message.Publish(new Finished <CharacterAnimationRequested>());
            }));
        }
    }