public void AddSidewalk(Block block) { Sidewalk s = new Sidewalk(block); s.name = "sidewalk"; s.material = MaterialManager.Instance.Get("mat_sidewalk"); _sidewalks.Add(s); }
public override void OnInspectorGUI() { base.OnInspectorGUI(); // Button to generate the mesh again if (GUILayout.Button("Regenerate Mesh")) { Sidewalk sidewalk = target as Sidewalk; sidewalk.CalculateVertices(); sidewalk.CreateMesh(); } }
public Way(string name, Node[] nodes, int?lanes, RoadType roadType, Sidewalk sidewalk, int?layer, CrossingType crossing, Surface surface, bool oneWay) { Name = name; Nodes = nodes; Lanes = lanes; RoadType = roadType; Sidewalk = sidewalk; OneWay = oneWay; Layer = layer; Crossing = crossing; Surface = surface; }
// Use this for initialization void Start () { _theGrid = new GridOfGame(); _theGrid.new_level( level ); List< GameObject > _theHouses = new List<GameObject>() { _theHousePrefab_1, _theHousePrefab_2, _theHousePrefab_3, _theHousePrefab_4, _theHousePrefab_5, _theHousePrefab_6, _theHousePrefab_7, _theHousePrefab_8, _theHousePrefab_9, _theHousePrefab_10 }; _theSidewalk = new Sidewalk( _theGrid, _theSidewalkPrefab, _theHouses ); _theSidewalk.new_level(); }
public void GenerateSegment() { int rand = Random.Range(0, ObjectsDB.instance.allHouses.Length); House housePrefab = ObjectsDB.instance.allHouses[rand]; GameObject houseLeft = Instantiate(housePrefab.gameObject, houseZoneLeft.transform); houseLeft.GetComponent <House>().GenerateHouse(); GameObject houseRight = Instantiate(houseLeft, houseZoneRight.transform); PairObjects(houseLeft, houseRight); if (Random.Range(0, 100) > 50) { SetDifferenceInZone(houseLeft); Debug.Log("Difference on the left of " + TrackManager.instance.totalSegmentCount + " tile"); } else { SetDifferenceInZone(houseRight); Debug.Log("Difference on the right of " + TrackManager.instance.totalSegmentCount + " tile"); } rand = Random.Range(0, ObjectsDB.instance.allSidewalks.Length); Sidewalk sidewalkPrefab = ObjectsDB.instance.allSidewalks[rand]; GameObject sidewalkLeft = Instantiate(sidewalkPrefab.gameObject, sidewalkZoneLeft.transform); GameObject sidewalkRight = Instantiate(sidewalkPrefab.gameObject, sidewalkZoneRight.transform); if (withWater) { rand = Random.Range(0, ObjectsDB.instance.allWater.Length); Water waterPrefab = ObjectsDB.instance.allWater[rand]; GameObject water = Instantiate(waterPrefab.gameObject, waterZone.transform); } if (gameObject.GetComponentInChildren <MeshesCombiner>().isActiveAndEnabled) { gameObject.GetComponentInChildren <MeshesCombiner>().CombineMeshes(); } }
void Awake() { building = GetComponentInChildren <BuildingContainer>(); manager = FindObjectOfType <SceneManagerState>(); sidewalk = GetComponentInChildren <Sidewalk>(); }
/// <summary> /// Gets all the points that will form a sidewalk /// </summary> /// <param name="startIntersection"></param> /// <param name="roadSegment"></param> /// <param name="checks"></param> /// <param name="parent"></param> private Sidewalk CreateSidewalk(Intersection startIntersection, RoadSegment roadSegment, HashSet <SidewalkCheckHelper> checks, GameObject parent) { Intersection current = startIntersection; Intersection next = roadSegment.GetOtherSide(startIntersection); RoadSegment nextSegment = null; GameObject go = new GameObject(); go.name = "Sidewalk Mesh"; Sidewalk sidewalk = go.AddComponent <Sidewalk>(); sidewalk.OriginalVertices.Add(roadSegment.GetVertexWorldPosition(startIntersection, false)); SidewalkCheckHelper check = new SidewalkCheckHelper(); while (next != startIntersection) { int nextIndex = (next.Roads.IndexOf(roadSegment) + 1) % (next.Roads.Count); nextSegment = next.Roads[nextIndex]; check.Intersection = next; check.Road = nextSegment; checks.Add(check); if (next.Roads.Count == 1) { sidewalk.OriginalVertices.Add(nextSegment.GetVertexWorldPosition(next, true)); sidewalk.OriginalVertices.Add(nextSegment.GetVertexWorldPosition(next, false)); } else if (!(Mathf.Approximately(roadSegment.GetVertexWorldPosition(next, true).x, nextSegment.GetVertexWorldPosition(next, false).x) && Mathf.Approximately(roadSegment.GetVertexWorldPosition(next, true).z, nextSegment.GetVertexWorldPosition(next, false).z))) { sidewalk.OriginalVertices.Add(roadSegment.GetVertexWorldPosition(next, true)); sidewalk.OriginalVertices.Add(nextSegment.GetVertexWorldPosition(next, false)); } else { sidewalk.OriginalVertices.Add(nextSegment.GetVertexWorldPosition(next, false)); } current = next; next = nextSegment.GetOtherSide(next); roadSegment = nextSegment; } if (nextSegment != null && !(Mathf.Approximately(sidewalk.OriginalVertices[0].x, nextSegment.GetVertexWorldPosition(next, true).x) && Mathf.Approximately(sidewalk.OriginalVertices[0].z, nextSegment.GetVertexWorldPosition(next, true).z))) { sidewalk.OriginalVertices.Add(nextSegment.GetVertexWorldPosition(next, true)); } Vector3 sum = Vector3.zero; for (int i = 0; i < sidewalk.OriginalVertices.Count; i++) { sum += sidewalk.OriginalVertices[i]; } go.transform.position = sum / sidewalk.OriginalVertices.Count; sidewalk.SidewalkMaterial = city.SidewalkMaterial; sidewalk.InnerMaterial = city.InnerBlockMaterial; sidewalk.FixMeshOffset(); sidewalk.FindDirection(); sidewalk.CalculateVertices(); sidewalk.CreateMesh(); go.transform.parent = parent.transform; go.isStatic = true; return(sidewalk); }