Esempio n. 1
0
    // 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));
    }
Esempio n. 2
0
        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));
            }
        }