Commit e30ceb0a authored by Marco Mattila's avatar Marco Mattila
Browse files

Fix 3d drawing of board edges defined in modules, now pcb edge layer is always drawn.

parent 314aa18e
Loading
Loading
Loading
Loading
+20 −15
Original line number Diff line number Diff line
@@ -661,6 +661,7 @@ void MODULE::Draw3D( Pcb3D_GLCanvas* glcanvas )
    /* Draw module shape: 3D shape if exists (or module outlines if not exists) */
    S3D_MASTER* Struct3D  = m_3D_Drawings;
    bool        As3dShape = FALSE;

    if( g_Parm_3D_Visu.m_Draw3DModule )
    {
        glPushMatrix();
@@ -673,6 +674,7 @@ void MODULE::Draw3D( Pcb3D_GLCanvas* glcanvas )
        {
            glRotatef( (double) m_Orient / 10, 0.0, 0.0, 1.0 );
        }

        if( m_Layer == LAYER_N_BACK )
        {
            glRotatef( 180.0, 0.0, 1.0, 0.0 );
@@ -692,9 +694,6 @@ void MODULE::Draw3D( Pcb3D_GLCanvas* glcanvas )
        glPopMatrix();
    }

    if( !As3dShape )
    {
        // The footprint does not have a 3D shape, draw its 2D shape instead
    EDA_ITEM* Struct = m_Drawings;
    glNormal3f( 0.0, 0.0, 1.0 ); // Normal is Z axis

@@ -706,7 +705,14 @@ void MODULE::Draw3D( Pcb3D_GLCanvas* glcanvas )
            break;

        case TYPE_EDGE_MODULE:
                ( (EDGE_MODULE*) Struct )->Draw3D( glcanvas );
        {
            EDGE_MODULE* edge = (EDGE_MODULE*) Struct;

            // Draw module edges when no 3d shape exists.
            // Always draw pcb edges.
            if( !As3dShape || edge->GetLayer() == EDGE_N )
                edge->Draw3D( glcanvas );
        }
        break;

        default:
@@ -714,7 +720,6 @@ void MODULE::Draw3D( Pcb3D_GLCanvas* glcanvas )
        }
    }
}
}


void EDGE_MODULE::Draw3D( Pcb3D_GLCanvas* glcanvas )