using System.Collections; using System.Collections.Generic; using UnityEngine; public class addPatrolSystemToAI : MonoBehaviour { [Header ("Components")] [Space] public AIPatrolSystem mainAIPatrolSystem; public GameObject AIWaypointPatrolUniversalPrefab; public AIWayPointPatrol mainAIWaypointPatrol; [Space] [Space] [TextArea (1, 10)] public string explanation = "The button Add Patrol System to AI will add a custom patrol to this character.\n\n" + "The button Assign AI Waypoint Patrol will search for any previous patrol on scene to assign it to this AI.\n" + "So that allows that 2 AI share the same patrol. You can also drop a specific patrol from the scene on the field " + "Main AI Waypoint Patrol and it will that the patrol assigned to the character."; public void enableOrdisablePatrolOnAI (bool state) { if (mainAIPatrolSystem == null) { playerComponentsManager currentPlayerComponentsManager = GetComponentInChildren (); if (currentPlayerComponentsManager != null) { findObjectivesSystem currentFindObjectivesSystem = currentPlayerComponentsManager.getFindObjectivesSystem (); if (currentFindObjectivesSystem != null) { mainAIPatrolSystem = currentFindObjectivesSystem.AIPatrolManager; } } } if (mainAIPatrolSystem != null) { mainAIPatrolSystem.pauseOrPlayPatrol (!state); mainAIPatrolSystem.gameObject.SetActive (state); GKC_Utils.updateComponent (mainAIPatrolSystem); updateComponent (); } } public void assignAIWaypointPatrol () { if (mainAIWaypointPatrol == null) { mainAIWaypointPatrol = FindObjectOfType (); } if (mainAIWaypointPatrol == null) { GameObject newAIWaypointPatrol = (GameObject)Instantiate (AIWaypointPatrolUniversalPrefab, transform.position + Vector3.forward * 6, Quaternion.identity); newAIWaypointPatrol.name = "AI Waypoint Patrol"; mainAIWaypointPatrol = newAIWaypointPatrol.GetComponent (); } if (mainAIWaypointPatrol != null) { playerComponentsManager currentPlayerComponentsManager = GetComponentInChildren (); if (currentPlayerComponentsManager != null) { AIPatrolSystem currentAIPatrolSystem = currentPlayerComponentsManager.getAIPatrolSystem (); findObjectivesSystem currentFindObjectivesSystem = currentPlayerComponentsManager.getFindObjectivesSystem (); if (currentAIPatrolSystem != null) { currentAIPatrolSystem.patrolPath = mainAIWaypointPatrol; currentAIPatrolSystem.pauseOrPlayPatrol (false); currentFindObjectivesSystem.AIPatrolManager = currentAIPatrolSystem; GKC_Utils.updateComponent (currentAIPatrolSystem); GKC_Utils.updateComponent (currentFindObjectivesSystem); updateComponent (); } } } } public void addPatrolSystem () { if (AIWaypointPatrolUniversalPrefab == null) { print ("Patrol prefab not configured"); return; } findObjectivesSystem currentFindObjectivesSystem = GetComponentInChildren (); if (currentFindObjectivesSystem != null && mainAIWaypointPatrol == null) { GameObject newAIWaypointPatrol = (GameObject)Instantiate (AIWaypointPatrolUniversalPrefab, currentFindObjectivesSystem.transform.position + Vector3.forward * 6, Quaternion.identity); newAIWaypointPatrol.name = "AI Waypoint Patrol"; playerComponentsManager currentPlayerComponentsManager = GetComponentInChildren (); if (currentPlayerComponentsManager != null) { AIPatrolSystem currentAIPatrolSystem = currentPlayerComponentsManager.getAIPatrolSystem (); if (currentAIPatrolSystem != null) { currentAIPatrolSystem.patrolPath = newAIWaypointPatrol.GetComponent (); currentAIPatrolSystem.pauseOrPlayPatrol (false); currentFindObjectivesSystem.AIPatrolManager = currentAIPatrolSystem; mainAIWaypointPatrol = newAIWaypointPatrol.GetComponent (); GKC_Utils.updateComponent (currentAIPatrolSystem); } } GKC_Utils.updateComponent (currentFindObjectivesSystem); updateComponent (); print ("Patrol system added to AI"); } else { print ("WARNING: patrol system already configured on this AI"); } } void updateComponent () { GKC_Utils.updateComponent (this); GKC_Utils.updateDirtyScene ("Adding patrol to AI", gameObject); } }