void CreateLftRgtXAxis(int lft_rgt, RoadSegment segment) { //lft_rgt is 1 when going left, -1 when going right Vector3 pos; Vector3 scale; GameObject proposed_road = Instantiate(road_segment); float value = GM_.Instance.procedural.GetPointCutOff(segment.transform.position.x, segment.transform.position.z + (lft_rgt * min_segment_length)); float random_length_up = min_segment_length + ((max_segment_length - min_segment_length) * value); pos = segment.transform.position; pos.x += lft_rgt * (random_length_up / 2) + (lft_rgt * segment_width / 2); pos.z = Random.Range(segment.transform.position.z - ((segment.transform.localScale.x / 2) - (0.3f * (segment.transform.localScale.x / 2))), segment.transform.position.z + ((segment.transform.localScale.x / 2) - (0.3f * (segment.transform.localScale.x / 2)))); scale = segment.transform.localScale; scale.x = random_length_up; scale.z = segment_width; proposed_road.GetComponent <RoadSegment>().RoadSegmentInit(pos, scale, Mathf.Round(segment.transform.rotation.eulerAngles.y + (90)), segment.GetTransform(), new Vector3(lft_rgt, 0, 0), proposed_road); proposed_road.GetComponent <RoadSegment>().AddConnectedSegmentEndPoint(segment.GetObj()); segment.AddConnectedSegmentMidPoints(proposed_road); segment.AddChildNode(proposed_road); road_segment_queue.Enqueue(proposed_road); }
void CreateFwdBckZAxis(int fwd_bck, RoadSegment segment) { //fwd_bck is 1 when going forward, -1 when going back Vector3 pos; Vector3 scale; GameObject proposed_road = Instantiate(road_segment); float value = GM_.Instance.procedural.GetPointCutOff(segment.transform.position.x + (fwd_bck * min_segment_length), segment.transform.position.z); float random_length_forward = min_segment_length + ((max_segment_length - min_segment_length) * value); pos = segment.transform.position; pos.z += fwd_bck * ((segment.transform.localScale.x / 2) + (random_length_forward / 2)); scale = segment.transform.localScale; scale.x = random_length_forward; scale.z = segment_width; proposed_road.GetComponent <RoadSegment>().RoadSegmentInit(pos, scale, Mathf.Round(segment.transform.rotation.eulerAngles.y), segment.GetTransform(), new Vector3(0, 0, fwd_bck), proposed_road); proposed_road.GetComponent <RoadSegment>().AddConnectedSegmentEndPoint(segment.GetObj()); segment.AddConnectedSegmentEndPoint(proposed_road); segment.AddChildNode(proposed_road); road_segment_queue.Enqueue(proposed_road); }