Advertisement
Guest User

SomeScheduler

a guest
Apr 24th, 2014
39
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.84 KB | None | 0 0
  1. using UnityEngine;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4.  
  5. [RequireComponent(typeof(NodeController))]
  6. public class AnimalScheduler : NPCScheduler {
  7.  
  8. [SerializeField] float idleTime;
  9. private List<Node> listNode = new List<Node>();
  10. float updateTick;
  11. void Start(){
  12. base.Start();
  13. }
  14.  
  15. void Update () {
  16. elapsedTime += GameTime.deltaTime;
  17. OldTime += GameTime.deltaTime;
  18. if(elapsedTime > updateTick){
  19. updateTick = elapsedTime + 0.01f;
  20. switch (state){
  21. case State.IDLE:
  22. if(OldTime > idleTime){
  23. OldTime = 0;
  24. if(nodeManager.listNode.Count > 0){
  25. Node node = RandomNodeICanSee();
  26. if(node != null){
  27. scheduledTargets.Add(node.GetTransform());
  28. SetTarget(node.GetTransform());
  29. }
  30. }
  31. }
  32. break;
  33.  
  34. case State.MOVING:
  35. OldTime = elapsedTime + 0.01f;
  36. if (onNode){
  37. onNode = false;
  38. if (route.Count > 0){
  39. currNode = this.route[0].position;
  40. }
  41. } else{
  42. MoveToward();
  43. }
  44. break;
  45. }
  46. }
  47. }
  48.  
  49. Node RandomNodeICanSee(){
  50. listNode.Clear();
  51. for(int x=0; x<nodeManager.listNode.Count; x++){
  52. Node neighbor = nodeManager.listNode[x];
  53. if(neighbor.GetTransform() == transform) {break;}
  54. Vector3 offset = (neighbor.GetPos() - transform.position).normalized;
  55. float distance = Vector3.Distance(transform.position+offset, neighbor.GetPos());
  56. RaycastHit2D hit = Physics2D.Raycast(transform.position+offset, neighbor.GetPos() - transform.position,distance);
  57. if(hit.collider != null){
  58. if(hit.transform == neighbor.GetTransform() && neighbor.locationId == LocationID.none){
  59. Debug.DrawLine(transform.position+offset, neighbor.GetPos(), Color.white, 10.1f);
  60. listNode.Add(neighbor);
  61. }
  62. }
  63. }
  64.  
  65. return (listNode.Count > 0)? listNode[Random.Range(0,listNode.Count)] : null;
  66. }
  67. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement