public IEnumerator generateImmediate() { initData(); int squareChance = (int)(100 / total); int steps = 0; generateFirstRect(); steps++; while (steps < total) { if (Randomiser.rollUnder(squareChance)) { yield return(StartCoroutine(squareStep(0))); } else { yield return(StartCoroutine(rectangleStep(0))); } steps++; squareChance = (int)(100 * steps / total); } while (minaretNumber > 0) { yield return(StartCoroutine(minaretStep(0))); minaretNumber--; } updateFreeCorners(); GameObject[] cubes = GameObject.FindGameObjectsWithTag("temp"); foreach (GameObject cube in cubes) { Destroy(cube); } }
public static float oneOf(float x, float y) { if (Randomiser.rollUnder(50)) { return(x); } return(y); }
Graph <Vector2, Segment> generate(List <Vector2> seed) { int segmentCount = 0; G = new Graph <Vector2, Segment>(false); aliveSegments = new List <Segment>(); Segment cur, continuation, fork; Vector2 v; foreach (Vector2 s in seed) { v = Random.insideUnitCircle * (MIN_SEGMENT_LENGTH + 1); cur = new Segment(s, s + v); aliveSegments.Add(cur); G.addEdge(cur.from, cur.to, cur); } while (aliveSegments.Count > 0 && segmentCount < segmentLimit) { cur = aliveSegments[0]; aliveSegments.Remove(cur); if (!isInMap(cur)) { segmentCount++; continue; } continuation = proposeContinuation(cur); if (tryAdd(continuation)) { segmentCount++; } if (Randomiser.rollUnder(FORK_CHANCE)) { fork = proposeFork(continuation, 90); if (tryAdd(fork)) { segmentCount++; } } if (Randomiser.rollUnder(FORK_CHANCE)) { fork = proposeFork(continuation, -90); if (tryAdd(fork)) { segmentCount++; } } } return(G); }
IEnumerator mainCoroutine() { Building building; GameObject newBuilding; foundGen = gameObject.GetComponent <FoundationGenerator>(); yield return(StartCoroutine(foundGen.generateImmediate())); foundData.receiveData(foundGen); foreach (BuildingFoundation b in foundData.rectangles) { if (Randomiser.rollUnder(50)) { newBuilding = Part.placeRootPart <PlainBuilding>("plain building", b.center); } else { newBuilding = Part.placeRootPart <Courtyard>("plain building", b.center); } building = newBuilding.GetComponent <Building> (); building.foundation = b; building.go(); } foreach (BuildingFoundation b in foundData.minarets) { newBuilding = Part.placeRootPart <Minaret>("minaret", b.center); building = newBuilding.GetComponent <Building>(); building.foundation = b; building.go(); } foreach (Junction j in foundData.junctions) { newBuilding = Part.placeRootPart <JunctionPart>("junction", j.position); newBuilding.transform.LookAt(newBuilding.transform.position + j.axis); } foreach (BuildingFoundation m in foundData.squares) { newBuilding = Part.placeRootPart <Mosque>("mosque", m.center); building = newBuilding.GetComponent <Building> (); building.foundation = m; building.go(); } }