// Start method void Start() { terrain = FindObjectOfType <Terrain>(); show_node = true; width = 4; min_length = 5; nodeColStart = NodeColliderType.OnTerrain; nodeColEnd = NodeColliderType.OnTerrain; }
// Use this for initialization void Start() { this.terrain = FindObjectOfType <Terrain>(); node_list = new NodeList(); node_prefab = Resources.Load("Prefabs/Streets/Node"); NodeParent = new GameObject("Road System") as GameObject; node_origin_collider = NodeColliderType.OnTerrain; node_end_collider = NodeColliderType.OnTerrain; }
// update void Update() { // On mouse button down if (Input.GetMouseButtonDown(0)) { prefab_node = Resources.Load(node_path) as GameObject; // load node prefab // defines the start of the street and node Vector3 street_start; // If we hit something if (clickLocation(out street_start)) { node_start = Instantiate(prefab_node, street_start, Quaternion.identity) as GameObject; // Set last node as current one node_start.GetComponent <NodeClick>().ground = this; nodeColStart = NodeColliderType.OnTerrain; } } // On Mouse Button up if (Input.GetMouseButtonUp(0)) { // defines the end of the street and node Vector3 street_end; // If mouse up location is on terrain if (node_start != null && clickLocation(out street_end)) { node_end = Instantiate(prefab_node, street_end, Quaternion.identity) as GameObject; // Set last node as current one node_end.GetComponent <NodeClick>().ground = this; nodeColEnd = NodeColliderType.OnTerrain; // if street wasnt created if (!createStreet(node_start.transform.position, node_end.transform.position)) { destroyNodes(); } } // else if mouse up location is on node else if (node_start != null && clickLocationNode(out street_end)) { if (!createStreet(node_start.transform.position, street_end)) { destroyNodes(); } } showNode(); // Inspector mode only node_start = null; } }
void Awake() { /* MeshFilter mf = road.GetComponent<MeshFilter>(); * if (mf == null) * { * CreateRoad(); * return; * } * if (mf.mesh == null) * { * Destroy(road.GetComponent<MeshRenderer>()); * Destroy(mf); * CreateRoad(); * }*/ terrain = FindObjectOfType <Terrain>(); show_node = true; width = 1; min_length = 5; nodeColStart = NodeColliderType.OnTerrain; nodeColEnd = NodeColliderType.OnTerrain; }
// Set the start node public void setNodeStart(GameObject node) { node_start = node; nodeColStart = NodeColliderType.OnNode; }
// Update is called once per frame void Update() { // Mouse Button Down if (Input.GetMouseButtonDown(0)) { // hit terrain if (TerrainRayCast(out node_start_pos, out node_start_normal)) { node_obj_origin = Instantiate(node_prefab, node_start_pos, Quaternion.Euler(Vector3.zero)) as GameObject; node_obj_origin.transform.parent = NodeParent.transform; // Set last node clicked as current one node_obj_origin.GetComponent <NodeClick>().straightRoad = this; //if(node_obj_origin.GetComponent<Node>().connected_roads.Count <= 0) // node_list.add2(node_obj_origin); //else node_list.add(node_obj_origin); node_origin_collider = NodeColliderType.OnTerrain; Debug.Log("Node Count: " + node_list.countIt(node_list.list)); } } // Mouse up if (Input.GetMouseButtonUp(0)) { if (node_obj_origin != null) { GameObject nodeHit; // MouseUp hit terrain if (TerrainRayCast(out node_end_pos, out node_end_normal)) { node_obj_end = Instantiate(node_prefab, node_end_pos, Quaternion.Euler(Vector3.zero)) as GameObject; node_obj_end.transform.parent = NodeParent.transform; // Set last node clicked as current one node_obj_end.GetComponent <NodeClick>().straightRoad = this; node_end_collider = NodeColliderType.OnTerrain; // if road was not created delete nodes if (!createRoad(node_obj_origin.transform.position, node_obj_end.transform.position)) { destroyNodes(); } else { // add node to list and register road to node if (node_obj_origin.GetComponent <Node>().connected_roads.Count <= 0) { node_list.add(node_obj_end); } else { node_list.insert(node_obj_origin, node_obj_end); } node_obj_origin.GetComponent <Node>().connected_roads.Add(this.road); node_obj_end.GetComponent <Node>().connected_roads.Add(this.road); } Debug.Log("Node Count: " + node_list.countIt(node_list.list)); } // MouseUp hit node else if (NodeRayCast(out nodeHit)) { node_obj_end = nodeHit.collider.transform.parent.gameObject; node_end_collider = NodeColliderType.OnNode; if (!createRoad(node_obj_origin.transform.position, node_obj_end.transform.position)) { destroyNodes(); } else { // register road to node node_obj_origin.GetComponent <Node>().connected_roads.Add(this.road); node_obj_end.GetComponent <Node>().connected_roads.Add(this.road); } Debug.Log("Node Count: " + node_list.countIt(node_list.list)); } } } }
// Set the start node public void setNodeStart(GameObject node) { node_obj_origin = node; node_origin_collider = NodeColliderType.OnNode; }