Ejemplo n.º 1
0
        public static Rectangle GetSidedefPartSize(Sidedef side, VisualGeometryType type)
        {
            Rectangle rect = new Rectangle(0, 0, Math.Max(1, (int)Math.Round(side.Line.Length)), 0);

            switch (type)
            {
            case VisualGeometryType.WALL_LOWER:
                if (side.LowRequired())
                {
                    rect.Y      = -side.Other.Sector.FloorHeight;
                    rect.Height = side.GetLowHeight();
                }
                break;

            case VisualGeometryType.WALL_UPPER:
                if (side.HighRequired())
                {
                    rect.Y      = -side.Sector.CeilHeight;
                    rect.Height = side.GetHighHeight();
                }
                break;

            case VisualGeometryType.WALL_MIDDLE:
                if (side.MiddleRequired())
                {
                    rect.Y = -side.Sector.CeilHeight;
                }
                else if (side.Other.Sector != null)                        // Double-sided
                {
                    rect.Y = -Math.Min(side.Sector.CeilHeight, side.Other.Sector.CeilHeight);
                }
                rect.Height = side.GetMiddleHeight();
                break;

            default:
                throw new NotImplementedException("GetSidedefPartSize: got unsupported geometry type: \"" + type + "\"");
            }

            return(rect);
        }