// Update is called once per frame void Update() { try { if (queuedLayers == null || queuedLayers.Count == 0) { Debug.Log("Fixed"); queuedLayers.Add(3); } else { // Debug.Log("target of" + this.gameObject.name + "is " + animalProperties.target + "layer " + queuedLayers[0]); ScreenWrap(); queuedLayers.Sort(); //Debug.Log(queuedLayers.Count); switch (queuedLayers[0]) { case 0: //flee //Debug.Log("Flee"); animalProperties.isRunning = true; steeringBehaviour.TargetAnimal(); steeringBehaviour.FleeFromTarget(animalProperties.target); steeringBehaviour.MoveAnimal(); break; case 1: //attack //Debug.Log("attack"); steeringBehaviour.TargetAnimal(); steeringBehaviour.SeekToTarget(animalProperties.target); steeringBehaviour.MoveAnimal(); break; case 2: //seek food //Debug.Log("seek and eat"); steeringBehaviour.getFood(); steeringBehaviour.SeekToTarget(animalProperties.target); steeringBehaviour.MoveAnimal(); break; case 3: //wander // Debug.Log("wander"); animalProperties.target = steeringBehaviour.WanderRandom(); steeringBehaviour.SeekToTarget(animalProperties.target); steeringBehaviour.MoveAnimal(); break; } queuedLayers.RemoveAt(0); } } catch (System.IndexOutOfRangeException e) { //System.Console.WriteLine(e.Message); // Set IndexOutOfRangeException to the new exception's InnerException. throw new System.ArgumentOutOfRangeException("index parameter is out of range.", e); } }