// Use this for initialization void Start() { float startTime = Time.realtimeSinceStartup; for (int i = 0; i < 10; i++) { FloorType[,] layout = HouseLayout.CreateHouse(HouseType.Small, Direction.Down); FloorType[,] lineMode = LayoutToBuilding.LayoutCellToLine(layout); LayoutToBuilding.AddWindow(lineMode); int[,] distanceToWall = LayoutToBuilding.GetDistanceToWall(lineMode); //Game.BlockType[,,] blocks = LayoutToBuilding.CreateBuilding(lineMode,true); string s = BuildingDebugTools.GetLayoutString(lineMode); Debug.Log(s); string dtw = Array2DTool.GetDebugStringFormat(distanceToWall, "{0:00}", ","); Debug.Log(dtw); } Debug.Log("time = " + (Time.realtimeSinceStartup - startTime)); }
static void addHouse(BlockManager blockManager, int i, int j, int k, ref List <HouseItem> items) { FloorType[,] layout = HouseLayout.CreateHouse(HouseType.Small, (Direction)UnityEngine.Random.Range(0, 4)); FloorType[,] lineMode = LayoutToBuilding.LayoutCellToLine(layout); LayoutToBuilding.AddWindow(lineMode); Game.BlockType[, ,] blocks = LayoutToBuilding.CreateBuilding(lineMode, true); int dx = blocks.GetLength(0); int dy = blocks.GetLength(1); int dz = blocks.GetLength(2); int baseX = i - dx / 2; int baseY = j; int baseZ = k - dz / 2; for (int x = 0; x < dx; x++) { for (int y = 0; y < dy; y++) { for (int z = 0; z < dz; z++) { int gx = x + baseX; int gy = y + baseY; int gz = z + baseZ; if (blocks[x, y, z] != Game.BlockType.Air) { setBlock(blockManager, gx, gy, gz, (short)blocks[x, y, z]); } } } } int[,] distanceToWall = LayoutToBuilding.GetDistanceToWall(lineMode); List <HouseItem> itemsToAdd = HouseItemGenerator.GenerateItems(lineMode, distanceToWall); for (int a = 0; a < itemsToAdd.Count; a++) { HouseItem t = itemsToAdd[a]; items.Add(new HouseItem(new VecInt3(t.pos.x + baseX, t.pos.y + baseY, t.pos.z + baseZ), t.item)); } }