Example #1
0
    public static void DrawArcColliders( ref List<Angle> x, int size, Angle start, Angle end, Angle RenderAngle, float Radius, float Width, float Heigth, Material mat )
    {
        if (size == 0)
            DrawArc ( start, end, RenderAngle, Radius, Width, Heigth, mat );
        else {
            int starte = -2, ende = -2;
            bool f = false;
            for ( int e = 0; e < size - 1; e+= 2 )
                if ( start.IsBetween( x[e], x[e+1] ) )
                    start = x[e+1];

            for ( int e = size - 1; e > 0; e-= 2 )
                if ( end.IsBetween ( x[e-1], x[e] ) )
                    end = x[e-1];

            for ( int e = 0; e < size - 1; e += 2 ) {
                if ( x[e].IsBetween ( start, end ) && f == false ) {
                    starte = e;
                    f = true;
                }

                if ( !x[e].IsBetween ( start, end )&& f == true ) {
                    ende = e-1;
                    f = false;
                }
            }

            if ( starte == ende || ende == -1 )
                DrawArc ( start, end, RenderAngle, Radius, Width, Heigth, mat );
            else {
                if ( ende == -2 )
                    ende = size - 1;

                int e = starte;
                Angle f1 = start, f2 = end;
                while ( f1 != x[ende] ) {
                    f2 = x[e];
                    DrawArc ( f1, f2, RenderAngle, Radius, Width, Heigth, mat );
                    e = ( e + 1 ) % size;
                    f1 = x[e];
                    e = ( e + 1 ) % size;
                }

                DrawArc ( f1, end, RenderAngle, Radius, Width, Heigth, mat );
            }
        }
    }