Пример #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);
                }
            }
        }
Пример #2
0
 private static bool IsRoofAbove(IRoof roof, Vector3 position)
 {
     return(roof.GetLevel() > position.y && MathEx.IsPointInPolygon(position, roof.GetPolygon()));
 }