Пример #1
0
        public static List <Vector3Int> MakeWalls(WorldEdit.AreaSelection area, int border = 1)
        {
            List <Vector3Int> affected = new List <Vector3Int>();

            int minX = Math.Min(area.posA.x, area.posB.x);
            int maxX = Math.Max(area.posA.x, area.posB.x);
            int minZ = Math.Min(area.posA.z, area.posB.z);
            int maxZ = Math.Max(area.posA.z, area.posB.z);

            Vector3Int relative;

            for (int x = area.cornerB.x; x >= area.cornerA.x; x--)
            {
                for (int y = area.cornerB.y; y >= area.cornerA.y; y--)
                {
                    for (int z = area.cornerB.z; z >= area.cornerA.z; z--)
                    {
                        relative = new Vector3Int(x, y, z);
                        if (relative.x > (maxX - border) || relative.x < (minX + border) || relative.z > (maxZ - border) || relative.z < (minZ + border))
                        {
                            affected.Add(relative);
                        }
                    }
                }
            }

            return(affected);
        }
Пример #2
0
        public static List <Vector3Int> MakeFloors(WorldEdit.AreaSelection area, int border = 1)
        {
            List <Vector3Int> affected = new List <Vector3Int>();

            int minY = area.posA.y;
            int maxY = area.posB.y;

            Vector3Int relative;

            for (int x = area.cornerB.x; x >= area.cornerA.x; x--)
            {
                for (int y = area.cornerB.y; y >= area.cornerA.y; y--)
                {
                    for (int z = area.cornerB.z; z >= area.cornerA.z; z--)
                    {
                        relative = new Vector3Int(x, y, z);
                        if (relative.y > (maxY - border) || relative.y < (minY + border))
                        {
                            affected.Add(new Vector3Int(x, y, z) + area.posA);
                        }
                    }
                }
            }

            return(affected);
        }
Пример #3
0
        public static List <Vector3Int> MakeOutline(WorldEdit.AreaSelection area, int border = 1)
        {
            List <Vector3Int> affected = new List <Vector3Int>();

            int minX = Math.Min(area.posA.x, area.posB.x);
            int maxX = Math.Max(area.posA.x, area.posB.x);
            int minY = Math.Min(area.posA.y, area.posB.y);
            int maxY = Math.Max(area.posA.y, area.posB.y);
            int minZ = Math.Min(area.posA.z, area.posB.z);
            int maxZ = Math.Max(area.posA.z, area.posB.z);

            Vector3Int  relative;
            List <bool> truth;

            for (int x = area.cornerB.x; x >= area.cornerA.x; x--)
            {
                for (int y = area.cornerB.y; y >= area.cornerA.y; y--)
                {
                    for (int z = area.cornerB.z; z >= area.cornerA.z; z--)
                    {
                        relative = new Vector3Int(x, y, z);
                        {
                            truth = new List <bool>
                            {
                                relative.y >= (maxY - border),
                                relative.y <= (minY + border),
                                relative.x >= (maxX - border),
                                relative.x <= (minX + border),
                                relative.z >= (maxZ - border),
                                relative.z <= (minZ + border)
                            };
                            Log.Write($"{truth.FindAll(i => i == true).ToList().Count}");
                            if (truth.Where(i => i == true).ToList().Count >= 2)
                            {
                                affected.Add(relative);
                            }
                        }
                    }
                }
            }

            return(affected);
        }
Пример #4
0
        public static List <Vector3Int> MakeCuboid(WorldEdit.AreaSelection area, int border = 1, bool hollow = false)
        {
            List <Vector3Int> affected = new List <Vector3Int>();

            int minX = Math.Min(area.posA.x, area.posB.x);
            int maxX = Math.Max(area.posA.x, area.posB.x);
            int minY = Math.Min(area.posA.y, area.posB.y);
            int maxY = Math.Max(area.posA.y, area.posB.y);
            int minZ = Math.Min(area.posA.z, area.posB.z);
            int maxZ = Math.Max(area.posA.z, area.posB.z);

            Vector3Int relative;

            for (int x = area.cornerB.x; x >= area.cornerA.x; x--)
            {
                for (int y = area.cornerB.y; y >= area.cornerA.y; y--)
                {
                    for (int z = area.cornerB.z; z >= area.cornerA.z; z--)
                    {
                        relative = new Vector3Int(x, y, z);
                        if (hollow)
                        {
                            if (!(relative.y > (maxY - border) || relative.y < (minY + border) || relative.x > (maxX - border) || x < (minX + border) || relative.z > (maxZ - border) || relative.z < (minZ + border)))
                            {
                                affected.Add(relative);
                            }
                        }
                        else
                        {
                            if (relative.y > (maxY - border) || relative.y < (minY + border) || relative.x > (maxX - border) || x < (minX + border) || relative.z > (maxZ - border) || relative.z < (minZ + border))
                            {
                                affected.Add(relative);
                            }
                        }
                    }
                }
            }

            return(affected);
        }