using Photon.Pun; using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.AI; public class CastingStateController : MonoBehaviour { public bool isCasting; public PlayerMovement playerMovement; public LayerMask movementMask; Camera cam; Ray ray; RaycastHit hit; PhotonView photonView; ProjectileSpawnLocationController projectileSpawnLocationController; private void Awake() { cam = Camera.main; photonView = GetComponentInParent(); projectileSpawnLocationController = transform.root.GetComponentInChildren(); } private void Start() { if (!photonView.IsMine) this.enabled = false; } public void RequestAbilityCast(BaseAbility ability, Action abilityExecution) { if (isCasting) return; if (!ability.castableWhileMoving) playerMovement.ToggleAgentMoving(true); StartCoroutine(Casting(ability, abilityExecution)); } private IEnumerator Casting(BaseAbility ability, Action abilityExecution) { isCasting = true; CastBarHandler.Instance.ShowCastBar(ability); playerMovement.InstantFaceCast(projectileSpawnLocationController.GetLookat()); //cast animation yield return new WaitForSeconds(ability.castTime); abilityExecution.Invoke(); isCasting = false; if (!ability.castableWhileMoving) playerMovement.ToggleAgentMoving(false); } }