Beispiel #1
0
        public static void AddRoof(IRoof roof)
        {
            List <Vector3> polygon = roof.GetPolygon();

            if (polygon.Count <= 0)
            {
                return;
            }
            Bounds bounds = new Bounds(polygon[0], Vector3.zero);

            for (int i = 1; i < polygon.Count; i++)
            {
                bounds.Encapsulate(polygon[i]);
            }
            InsideCheck.GridPosition gridPosition  = InsideCheck.ToGridPosition(bounds.min);
            InsideCheck.GridPosition gridPosition2 = InsideCheck.ToGridPosition(bounds.max);
            for (int j = gridPosition.x; j <= gridPosition2.x; j++)
            {
                for (int k = gridPosition.y; k <= gridPosition2.y; k++)
                {
                    InsideCheck.AddRoof(new InsideCheck.GridPosition(j, k), roof);
                }
            }
        }
Beispiel #2
0
 private void OnEnable()
 {
     this._polygon = this.CalculatePolygon();
     InsideCheck.AddRoof(this);
 }