using Photon.Pun; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.AI; public class NPCAnimatorControllerBase : MonoBehaviour { protected Animator anim; protected NavMeshAgent agent; protected PhotonView photonView; protected NPCControllerBase npcController; protected bool isLockedInAnimation = false; protected virtual void Awake() { anim = GetComponent(); agent = GetComponentInParent(); photonView = GetComponentInParent(); npcController = GetComponentInParent(); } protected virtual void Start() { } protected void Update() { if (!photonView.IsMine) return; anim.SetFloat("movementSpeed", agent.velocity.magnitude); } protected virtual void OnAttackAnimationEvent() { if (!photonView.IsMine) return; Debug.Log("Sending Notice On Attack Animation Event Trigger"); //send notice for brain/abilitybinder to execute queued action/ability npcController.OnAttackAnimationEventTriggered(); } protected virtual void OnDeathAnimationEvent() { if (!photonView.IsMine) return; //send notice for brain/abilitybinder to execute queued action/ability npcController.OnDeathAnimationEventTriggered(); } public void SetDead() { anim.SetTrigger("dead"); } public virtual void SetTriggerBasedOnAbility(AbilityAnimationType animationType) { Debug.Log("Setting animation trigger = " + animationType); switch (animationType) { case AbilityAnimationType.Throw: anim.SetTrigger("throw"); break; case AbilityAnimationType.Spell: anim.SetTrigger("cast"); break; case AbilityAnimationType.Melee: anim.SetTrigger("melee"); break; case AbilityAnimationType.Jump: anim.SetTrigger("jump"); break; default: break; } } }