public static void Generate(BuildrData data) { BuildrGenerateConstraints constraints = data.generatorConstraints; uint seed = (uint)(constraints.useSeed ? constraints.seed : Random.Range(0, int.MaxValue)); constraints.seed = (int)seed;//reassign value incase it's changed constraints.rgen = new RandomGen(seed); RandomGen rgen = constraints.rgen; data.ResetData(constraints.constrainPlanByPlan); if (!constraints.constrainPlanByPlan) GenerateFloorPlan(data); else data.plan = constraints.plan; data.floorHeight = rgen.OutputRange(constraints.minimumFloorHeight, constraints.maximumFloorHeight); float minBuildingSize = (constraints.constrainHeight) ? constraints.minimumHeight : BuildrGenerateConstraints.MINIMUM_BUILDING_HEIGHT; float maxBuildingSize = (constraints.constrainHeight) ? constraints.maximumHeight : BuildrGenerateConstraints.MAXIMUM_BUILDING_HEIGHT; foreach(BuildrVolume volume in data.plan.volumes) { volume.height = rgen.OutputRange(minBuildingSize, maxBuildingSize); volume.numberOfFloors = Mathf.FloorToInt(volume.height / data.floorHeight); } //texture generation GetTextures(data); //facade generation GenerateFacades(data); //roof generation GenerateRoof(data); }
public static void Generate(BuildrData data, BuildrRuntimeConstraints _constraints) { constraints = _constraints; uint seed = (uint)(constraints.useSeed ? constraints.seed : Random.Range(0, int.MaxValue)); constraints.seed = (int)seed;//reassign value incase it's changed constraints.rgen = new RandomGen(seed); RandomGen rgen = constraints.rgen; //Debug.Log("Generate Seed "+seed); data.ResetData(constraints.constrainPlanByPlan); if (!constraints.constrainPlanByPlan) { GenerateFloorPlan(data); } else { data.plan = constraints.plan; } data.floorHeight = rgen.OutputRange(constraints.minimumFloorHeight, constraints.maximumFloorHeight); float minBuildingSize = (constraints.constrainHeight) ? constraints.minimumHeight : BuildrGenerateConstraints.MINIMUM_BUILDING_HEIGHT; float maxBuildingSize = (constraints.constrainHeight) ? constraints.maximumHeight : BuildrGenerateConstraints.MAXIMUM_BUILDING_HEIGHT; foreach (BuildrVolume volume in data.plan.volumes) { volume.height = rgen.OutputRange(minBuildingSize, maxBuildingSize); volume.numberOfFloors = Mathf.FloorToInt(volume.height / data.floorHeight); } //texture generation GetTextures(data); //facade generation GenerateFacades(data); //roof generation GenerateRoof(data); //building generation //build/optimise }