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>()); })); } }