예제 #1
0
        private int method_0()
        {
            int num = 0;

            foreach (BasicWildLifeAI eai in UnityEngine.Object.FindObjectsOfType <BasicWildLifeAI>())
            {
                TakeDamage component = eai.GetComponent <TakeDamage>();
                if ((component != null) && component.alive)
                {
                    NavMeshMovement movement = eai.GetComponent <NavMeshMovement>();
                    if (((movement == null) || (movement._agent == null)) || (movement._agent.pathStatus == NavMeshPathStatus.PathInvalid))
                    {
                        int index = WildlifeManager.Data.lifeInstances.IndexOf(eai);
                        if ((index != -1) && (index < WildlifeManager.Data.lifeInstanceCount))
                        {
                            if (movement != null)
                            {
                                Helper.Log(string.Concat(new object[] { "WildLifeAI: Creature '", Helper.NiceName(eai.gameObject.name), " at ", eai.gameObject.transform.position, "' has been removed because creature without mesh agent." }), false);
                            }
                            else
                            {
                                Helper.Log(string.Concat(new object[] { "WildLifeAI: Creature '", Helper.NiceName(eai.gameObject.name), " at ", eai.gameObject.transform.position, "' has been removed because mesh agent have invalid path." }), false);
                            }
                            WildlifeManager.Data.lifeInstances.RemoveAt(index);
                            WildlifeManager.Data.lifeInstanceCount--;
                            WildlifeManager.Data.thinkIterator = 0;
                            NetCull.Destroy(eai.gameObject);
                            num++;
                        }
                    }
                }
            }
            return(num);
        }
예제 #2
0
 // Start is called before the first frame update
 void Start()
 {
     dog        = GameObject.FindGameObjectWithTag("PlayerDog").transform;
     dogNavMesh = dog.GetComponent <NavMeshMovement>();
     dogAgent   = dog.GetComponent <NavMeshAgent>();
     dogfollow  = true;
 }
예제 #3
0
    public override void CopyFrom(ITarget other)
    {
        var navTarget = other as NavTarget;

        if (navTarget == null)
        {
            return;
        }

        this.movement = navTarget.movement;
    }
예제 #4
0
        private int method_0()
        {
            int num = 0;

            BasicWildLifeAI[] array  = UnityEngine.Object.FindObjectsOfType <BasicWildLifeAI>();
            BasicWildLifeAI[] array2 = array;
            for (int i = 0; i < array2.Length; i++)
            {
                BasicWildLifeAI basicWildLifeAI = array2[i];
                TakeDamage      component       = basicWildLifeAI.GetComponent <TakeDamage>();
                if (!(component == null) && component.alive)
                {
                    NavMeshMovement component2 = basicWildLifeAI.GetComponent <NavMeshMovement>();
                    if (component2 == null || component2._agent == null || component2._agent.pathStatus == NavMeshPathStatus.PathInvalid)
                    {
                        int num2 = WildlifeManager.Data.lifeInstances.IndexOf(basicWildLifeAI);
                        if (num2 != -1 && num2 < WildlifeManager.Data.lifeInstanceCount)
                        {
                            if (component2 != null)
                            {
                                Helper.Log(string.Concat(new object[]
                                {
                                    "WildLifeAI: Creature '",
                                    Helper.NiceName(basicWildLifeAI.gameObject.name),
                                    " at ",
                                    basicWildLifeAI.gameObject.transform.position,
                                    "' has been removed because creature without mesh agent."
                                }), false);
                            }
                            else
                            {
                                Helper.Log(string.Concat(new object[]
                                {
                                    "WildLifeAI: Creature '",
                                    Helper.NiceName(basicWildLifeAI.gameObject.name),
                                    " at ",
                                    basicWildLifeAI.gameObject.transform.position,
                                    "' has been removed because mesh agent have invalid path."
                                }), false);
                            }
                            WildlifeManager.Data.lifeInstances.RemoveAt(num2);
                            WildlifeManager.Data.lifeInstanceCount--;
                            WildlifeManager.Data.thinkIterator = 0;
                            NetCull.Destroy(basicWildLifeAI.gameObject);
                            num++;
                        }
                    }
                }
            }
            return(num);
        }
    /*void OnTriggerStay(Collider other){
     *  if (other.tag=="PlayerDog"){
     *      Debug.Log("playerdogtrigger");
     *      NavMeshAgent a = other.GetComponent<NavMeshAgent>();
     *      if (a) agent = a;
     *  }
     * }
     * void OnTriggerExit(Collider other){
     *  if (other.tag=="PlayerDog"){
     *      if (agent == other.GetComponent<NavMeshAgent>()){
     *          agent = null;
     *      }
     *  }
     * }*/

    public void SetAgent(bool active)
    {
        if (!triggered)
        {
            triggered = true;
        }
        else if (active == activated)
        {
            return;
        }
        activated = active;
        //Debug.Log("SetAgent: "+name);

        /*if (active){
         *  NavMeshLinkPoints s = GetComponentInChildren<NavMeshLinkPoints>();
         *  if (s) {
         *      s.AlighPoints();
         *  }
         * }*/
        NavMeshAgent agent = GameObject.FindGameObjectWithTag("PlayerDog").GetComponent <NavMeshAgent>();

        if (agent)
        {
            if (!col)
            {
                return;
            }
            if (col.bounds.Contains(agent.transform.position))
            {
                //Debug.Log("disabler has agent");
                //NavMeshSurface s = GetComponent<NavMeshSurface>();
                //s.BuildNavMesh();
                agent.enabled = active;
                NavMeshMovement movement = agent.GetComponent <NavMeshMovement>();
                if (movement)
                {
                    movement.enabled = active;
                }
            }
        }
    }
예제 #6
0
 public NavTarget(NavMeshMovement movement)
 {
     this.movement = movement;
 }
예제 #7
0
 void Start()
 {
     movementScript = GetComponentInChildren <NavMeshMovement>();
 }
예제 #8
0
 public void QueueResolve(NavMeshMovement movement)
 {
     this.pathQueue.Enqueue(movement);
 }