Example #1
0
    public FilledRegion Apply(FillData data)
    {
        float OuterCircle = data.BeingFilled.Width * 0.5f;

        if (OuterCircle <= InnerCircle)
        {
            throw new ArgumentOutOfRangeException("The outer radius has to be larger than the inner radius!");
        }

        Location center = data.BeingFilled.Center;

        //Make the circles.
        data.FillCircle(true, center, OuterCircle);
        data.FillCircle(false, center, InnerCircle);

        //Make the lines to get to the inner circle.
        data.FillLine(false, center, data.BeingFilled.BottomMid);
        data.FillLine(false, center, data.BeingFilled.TopMid);
        data.FillLine(false, center, data.BeingFilled.LeftMid);
        data.FillLine(false, center, data.BeingFilled.RightMid);

        //For spawn points, give the two points just to the left/right of the inner circle.
        return(new CircleRegion(data.BeingFilled, InnerCircle));
    }