7
mirror of https://gitlab.com/kicad/code/kicad.git synced 2025-04-21 00:21:25 +00:00

Scope 3d viewer enums

Also fix one rogue character in a gerbview file that wasn't proper UTF8.
This commit is contained in:
Mark Roszko 2019-12-30 13:01:06 +00:00 committed by Ian McInerney
parent 496f3d49e4
commit b11d52eda1
41 changed files with 648 additions and 574 deletions

View File

@ -53,13 +53,13 @@ CINFO3D_VISU::CINFO3D_VISU() :
{
wxLogTrace( m_logTrace, wxT( "CINFO3D_VISU::CINFO3D_VISU" ) );
m_board = NULL;
m_board = NULL;
m_3d_model_manager = NULL;
m_3D_grid_type = GRID3D_NONE;
m_3D_grid_type = GRID3D_TYPE::NONE;
m_drawFlags.resize( FL_LAST, false );
m_render_engine = RENDER_ENGINE_OPENGL_LEGACY;
m_material_mode = MATERIAL_MODE_NORMAL;
m_render_engine = RENDER_ENGINE::OPENGL_LEGACY;
m_material_mode = MATERIAL_MODE::NORMAL;
m_boardPos = wxPoint();
m_boardSize = wxSize();
@ -187,8 +187,7 @@ bool CINFO3D_VISU::Is3DLayerEnabled( PCB_LAYER_ID aLayer ) const
default:
// the layer is an internal copper layer, used the visibility
if( GetFlag( FL_SHOW_BOARD_BODY ) &&
(m_render_engine == RENDER_ENGINE_OPENGL_LEGACY) )
if( GetFlag( FL_SHOW_BOARD_BODY ) && ( m_render_engine == RENDER_ENGINE::OPENGL_LEGACY ) )
{
// Do not render internal layers if it is overlap with the board
// (on OpenGL render)
@ -487,9 +486,9 @@ void CINFO3D_VISU::CameraSetType( CAMERA_TYPE aCameraType )
{
switch( aCameraType )
{
case CAMERA_TRACKBALL:
case CAMERA_TYPE::TRACKBALL:
m_currentCamera = m_trackBallCamera;
break;
break;
default:
wxLogMessage( wxT( "CINFO3D_VISU::CameraSetType() error: unknown camera type %d" ),

View File

@ -223,10 +223,10 @@ void CINFO3D_VISU::createLayers( REPORTER *aStatusTextReporter )
CBVHCONTAINER2D *layerContainer = new CBVHCONTAINER2D;
m_layers_container2D[curr_layer_id] = layerContainer;
if( GetFlag( FL_RENDER_OPENGL_COPPER_THICKNESS ) &&
(m_render_engine == RENDER_ENGINE_OPENGL_LEGACY) )
if( GetFlag( FL_RENDER_OPENGL_COPPER_THICKNESS )
&& ( m_render_engine == RENDER_ENGINE::OPENGL_LEGACY ) )
{
SHAPE_POLY_SET *layerPoly = new SHAPE_POLY_SET;
SHAPE_POLY_SET* layerPoly = new SHAPE_POLY_SET;
m_layers_poly[curr_layer_id] = layerPoly;
}
}
@ -454,8 +454,8 @@ void CINFO3D_VISU::createLayers( REPORTER *aStatusTextReporter )
// Creates outline contours of the tracks and add it to the poly of the layer
// /////////////////////////////////////////////////////////////////////////
if( GetFlag( FL_RENDER_OPENGL_COPPER_THICKNESS ) &&
(m_render_engine == RENDER_ENGINE_OPENGL_LEGACY) )
if( GetFlag( FL_RENDER_OPENGL_COPPER_THICKNESS )
&& ( m_render_engine == RENDER_ENGINE::OPENGL_LEGACY ) )
{
for( unsigned int lIdx = 0; lIdx < layer_id.size(); ++lIdx )
{
@ -587,8 +587,8 @@ void CINFO3D_VISU::createLayers( REPORTER *aStatusTextReporter )
// Add modules PADs poly contourns
// /////////////////////////////////////////////////////////////////////////
if( GetFlag( FL_RENDER_OPENGL_COPPER_THICKNESS ) &&
(m_render_engine == RENDER_ENGINE_OPENGL_LEGACY) )
if( GetFlag( FL_RENDER_OPENGL_COPPER_THICKNESS )
&& ( m_render_engine == RENDER_ENGINE::OPENGL_LEGACY ) )
{
for( unsigned int lIdx = 0; lIdx < layer_id.size(); ++lIdx )
{
@ -683,8 +683,8 @@ void CINFO3D_VISU::createLayers( REPORTER *aStatusTextReporter )
// Add graphic item on copper layers to poly contourns
// /////////////////////////////////////////////////////////////////////////
if( GetFlag( FL_RENDER_OPENGL_COPPER_THICKNESS ) &&
(m_render_engine == RENDER_ENGINE_OPENGL_LEGACY) )
if( GetFlag( FL_RENDER_OPENGL_COPPER_THICKNESS )
&& ( m_render_engine == RENDER_ENGINE::OPENGL_LEGACY ) )
{
for( unsigned int lIdx = 0; lIdx < layer_id.size(); ++lIdx )
{
@ -771,9 +771,8 @@ void CINFO3D_VISU::createLayers( REPORTER *aStatusTextReporter )
start_Time = GetRunningMicroSecs();
#endif
if( GetFlag( FL_ZONE ) &&
GetFlag( FL_RENDER_OPENGL_COPPER_THICKNESS ) &&
(m_render_engine == RENDER_ENGINE_OPENGL_LEGACY) )
if( GetFlag( FL_ZONE ) && GetFlag( FL_RENDER_OPENGL_COPPER_THICKNESS )
&& ( m_render_engine == RENDER_ENGINE::OPENGL_LEGACY ) )
{
// ADD COPPER ZONES
for( int ii = 0; ii < m_board->GetAreaCount(); ++ii )
@ -801,8 +800,8 @@ void CINFO3D_VISU::createLayers( REPORTER *aStatusTextReporter )
if( aStatusTextReporter )
aStatusTextReporter->Report( _( "Simplifying copper layers polygons" ) );
if( GetFlag( FL_RENDER_OPENGL_COPPER_THICKNESS ) &&
(m_render_engine == RENDER_ENGINE_OPENGL_LEGACY) )
if( GetFlag( FL_RENDER_OPENGL_COPPER_THICKNESS )
&& ( m_render_engine == RENDER_ENGINE::OPENGL_LEGACY ) )
{
std::atomic<size_t> nextItem( 0 );
std::atomic<size_t> threadsFinished( 0 );

View File

@ -387,11 +387,11 @@ void EDA_3D_CANVAS::OnPaint( wxPaintEvent &event )
{
m_3d_render = m_3d_render_ogl_legacy;
m_render_raytracing_was_requested = false;
m_settings.RenderEngineSet( RENDER_ENGINE_OPENGL_LEGACY );
m_settings.RenderEngineSet( RENDER_ENGINE::OPENGL_LEGACY );
}
// Check if a raytacing was requested and need to switch to raytracing mode
if( m_settings.RenderEngineGet() == RENDER_ENGINE_OPENGL_LEGACY )
if( m_settings.RenderEngineGet() == RENDER_ENGINE::OPENGL_LEGACY )
{
const bool was_camera_changed = m_settings.CameraGet().ParametersChanged();
@ -899,7 +899,7 @@ void EDA_3D_CANVAS::move_pivot_based_on_cur_mouse_position()
// Test it with the board bounding box
if( m_settings.GetBBox3DU().Intersect( mouseRay, &hit_t ) )
{
m_settings.CameraGet().SetInterpolateMode( INTERPOLATION_BEZIER );
m_settings.CameraGet().SetInterpolateMode( CAMERA_INTERPOLATION::BEZIER );
m_settings.CameraGet().SetT0_and_T1_current_T();
m_settings.CameraGet().SetLookAtPos_T1( mouseRay.at( hit_t ) );
m_settings.CameraGet().ResetXYpos_T1();
@ -925,35 +925,35 @@ bool EDA_3D_CANVAS::SetView3D( int aKeycode )
return true;
case WXK_LEFT:
m_settings.CameraGet().SetInterpolateMode( INTERPOLATION_LINEAR );
m_settings.CameraGet().SetInterpolateMode( CAMERA_INTERPOLATION::LINEAR );
m_settings.CameraGet().SetT0_and_T1_current_T();
m_settings.CameraGet().Pan_T1( SFVEC3F( -delta_move, 0.0f, 0.0f ) );
request_start_moving_camera( arrow_moving_time_speed, false );
return true;
case WXK_RIGHT:
m_settings.CameraGet().SetInterpolateMode( INTERPOLATION_LINEAR );
m_settings.CameraGet().SetInterpolateMode( CAMERA_INTERPOLATION::LINEAR );
m_settings.CameraGet().SetT0_and_T1_current_T();
m_settings.CameraGet().Pan_T1( SFVEC3F( +delta_move, 0.0f, 0.0f ) );
request_start_moving_camera( arrow_moving_time_speed, false );
return true;
case WXK_UP:
m_settings.CameraGet().SetInterpolateMode( INTERPOLATION_LINEAR );
m_settings.CameraGet().SetInterpolateMode( CAMERA_INTERPOLATION::LINEAR );
m_settings.CameraGet().SetT0_and_T1_current_T();
m_settings.CameraGet().Pan_T1( SFVEC3F( 0.0f, +delta_move, 0.0f ) );
request_start_moving_camera( arrow_moving_time_speed, false );
return true;
case WXK_DOWN:
m_settings.CameraGet().SetInterpolateMode( INTERPOLATION_LINEAR );
m_settings.CameraGet().SetInterpolateMode( CAMERA_INTERPOLATION::LINEAR );
m_settings.CameraGet().SetT0_and_T1_current_T();
m_settings.CameraGet().Pan_T1( SFVEC3F( 0.0f, -delta_move, 0.0f ) );
request_start_moving_camera( arrow_moving_time_speed, false );
return true;
case WXK_HOME:
m_settings.CameraGet().SetInterpolateMode( INTERPOLATION_BEZIER );
m_settings.CameraGet().SetInterpolateMode( CAMERA_INTERPOLATION::BEZIER );
m_settings.CameraGet().SetT0_and_T1_current_T();
m_settings.CameraGet().Reset_T1();
request_start_moving_camera( glm::min( glm::max( m_settings.CameraGet().ZoomGet(), 1/1.26f ), 1.26f ) );
@ -963,7 +963,7 @@ bool EDA_3D_CANVAS::SetView3D( int aKeycode )
break;
case WXK_TAB:
m_settings.CameraGet().SetInterpolateMode( INTERPOLATION_EASING_IN_OUT );
m_settings.CameraGet().SetInterpolateMode( CAMERA_INTERPOLATION::EASING_IN_OUT );
m_settings.CameraGet().SetT0_and_T1_current_T();
m_settings.CameraGet().RotateZ_T1( glm::radians( 45.0f ) );
request_start_moving_camera();
@ -971,7 +971,7 @@ bool EDA_3D_CANVAS::SetView3D( int aKeycode )
break;
case WXK_F1:
m_settings.CameraGet().SetInterpolateMode( INTERPOLATION_BEZIER );
m_settings.CameraGet().SetInterpolateMode( CAMERA_INTERPOLATION::BEZIER );
m_settings.CameraGet().SetT0_and_T1_current_T();
if( m_settings.CameraGet().Zoom_T1( 1.26f ) ) // 3 steps per doubling
@ -980,7 +980,7 @@ bool EDA_3D_CANVAS::SetView3D( int aKeycode )
return true;
case WXK_F2:
m_settings.CameraGet().SetInterpolateMode( INTERPOLATION_BEZIER );
m_settings.CameraGet().SetInterpolateMode( CAMERA_INTERPOLATION::BEZIER );
m_settings.CameraGet().SetT0_and_T1_current_T();
if( m_settings.CameraGet().Zoom_T1( 1/1.26f ) ) // 3 steps per halving
@ -1018,14 +1018,14 @@ bool EDA_3D_CANVAS::SetView3D( int aKeycode )
case 'r':
case 'R':
m_settings.CameraGet().SetInterpolateMode( INTERPOLATION_BEZIER );
m_settings.CameraGet().SetInterpolateMode( CAMERA_INTERPOLATION::BEZIER );
m_settings.CameraGet().SetT0_and_T1_current_T();
m_settings.CameraGet().Reset_T1();
request_start_moving_camera( glm::min( glm::max( m_settings.CameraGet().ZoomGet(), 0.5f ), 1.125f ) );
return true;
case 'X':
m_settings.CameraGet().SetInterpolateMode( INTERPOLATION_BEZIER );
m_settings.CameraGet().SetInterpolateMode( CAMERA_INTERPOLATION::BEZIER );
m_settings.CameraGet().SetT0_and_T1_current_T();
m_settings.CameraGet().Reset_T1();
m_settings.CameraGet().RotateZ_T1( glm::radians( -90.0f ) );
@ -1034,7 +1034,7 @@ bool EDA_3D_CANVAS::SetView3D( int aKeycode )
return true;
case GR_KB_SHIFT + 'X':
m_settings.CameraGet().SetInterpolateMode( INTERPOLATION_BEZIER );
m_settings.CameraGet().SetInterpolateMode( CAMERA_INTERPOLATION::BEZIER );
m_settings.CameraGet().SetT0_and_T1_current_T();
m_settings.CameraGet().Reset_T1();
m_settings.CameraGet().RotateZ_T1( glm::radians( 90.0f ) );
@ -1043,7 +1043,7 @@ bool EDA_3D_CANVAS::SetView3D( int aKeycode )
return true;
case 'Y':
m_settings.CameraGet().SetInterpolateMode( INTERPOLATION_BEZIER );
m_settings.CameraGet().SetInterpolateMode( CAMERA_INTERPOLATION::BEZIER );
m_settings.CameraGet().SetT0_and_T1_current_T();
m_settings.CameraGet().Reset_T1();
m_settings.CameraGet().RotateX_T1( glm::radians( -90.0f ) );
@ -1051,7 +1051,7 @@ bool EDA_3D_CANVAS::SetView3D( int aKeycode )
return true;
case GR_KB_SHIFT + 'Y':
m_settings.CameraGet().SetInterpolateMode( INTERPOLATION_BEZIER );
m_settings.CameraGet().SetInterpolateMode( CAMERA_INTERPOLATION::BEZIER );
m_settings.CameraGet().SetT0_and_T1_current_T();
m_settings.CameraGet().Reset_T1();
m_settings.CameraGet().RotateX_T1( glm::radians( -90.0f ) );
@ -1060,7 +1060,7 @@ bool EDA_3D_CANVAS::SetView3D( int aKeycode )
return true;
case 'Z':
m_settings.CameraGet().SetInterpolateMode( INTERPOLATION_BEZIER );
m_settings.CameraGet().SetInterpolateMode( CAMERA_INTERPOLATION::BEZIER );
m_settings.CameraGet().SetT0_and_T1_current_T();
m_settings.CameraGet().Reset_T1();
request_start_moving_camera(
@ -1068,7 +1068,7 @@ bool EDA_3D_CANVAS::SetView3D( int aKeycode )
return true;
case GR_KB_SHIFT + 'Z':
m_settings.CameraGet().SetInterpolateMode( INTERPOLATION_BEZIER );
m_settings.CameraGet().SetInterpolateMode( CAMERA_INTERPOLATION::BEZIER );
m_settings.CameraGet().SetT0_and_T1_current_T();
m_settings.CameraGet().Reset_T1();
m_settings.CameraGet().RotateY_T1( glm::radians( 180.0f ) );
@ -1093,14 +1093,13 @@ bool EDA_3D_CANVAS::SetView3D( int aKeycode )
void EDA_3D_CANVAS::RenderEngineChanged()
{
switch( m_settings.RenderEngineGet() )
{
case RENDER_ENGINE_OPENGL_LEGACY:
case RENDER_ENGINE::OPENGL_LEGACY:
m_3d_render = m_3d_render_ogl_legacy;
break;
case RENDER_ENGINE_RAYTRACING:
case RENDER_ENGINE::RAYTRACING:
m_3d_render = m_3d_render_raytracing;
break;

View File

@ -61,37 +61,37 @@ enum DISPLAY3D_FLG {
/// Camera types
enum CAMERA_TYPE
enum class CAMERA_TYPE
{
CAMERA_TRACKBALL
TRACKBALL
};
/// Grid types
enum GRID3D_TYPE
enum class GRID3D_TYPE
{
GRID3D_NONE,
GRID3D_1MM,
GRID3D_2P5MM,
GRID3D_5MM,
GRID3D_10MM
NONE,
GRID_1MM,
GRID_2P5MM,
GRID_5MM,
GRID_10MM
};
/// Render engine mode
enum RENDER_ENGINE
enum class RENDER_ENGINE
{
RENDER_ENGINE_OPENGL_LEGACY,
RENDER_ENGINE_RAYTRACING,
OPENGL_LEGACY,
RAYTRACING,
};
/// Render 3d model shape materials mode
enum MATERIAL_MODE
enum class MATERIAL_MODE
{
MATERIAL_MODE_NORMAL, ///< Use all material properties from model file
MATERIAL_MODE_DIFFUSE_ONLY, ///< Use only diffuse material properties
MATERIAL_MODE_CAD_MODE ///< Use a gray shading based on diffuse material
NORMAL, ///< Use all material properties from model file
DIFFUSE_ONLY, ///< Use only diffuse material properties
CAD_MODE ///< Use a gray shading based on diffuse material
};
#endif // _3D_ENUMS_H_

View File

@ -264,7 +264,7 @@ void C3D_MODEL_VIEWER::OnPaint( wxPaintEvent &event )
wxLogTrace( m_logTrace, wxT( "C3D_MODEL_VIEWER::OnPaint m_reload_is_needed" ) );
m_reload_is_needed = false;
m_ogl_3dmodel = new C_OGL_3DMODEL( *m_3d_model, MATERIAL_MODE_NORMAL );
m_ogl_3dmodel = new C_OGL_3DMODEL( *m_3d_model, MATERIAL_MODE::NORMAL );
// It convert a model as it was a board, so get the max size dimension of the board
// and compute the conversion scale

View File

@ -285,27 +285,26 @@ CLAYERS_OGL_DISP_LISTS *C3D_RENDER_OGL_LEGACY::generate_holes_display_list(
itemOnLayer != aListHolesObject2d.end();
++itemOnLayer )
{
const COBJECT2D *object2d_A = static_cast<const COBJECT2D *>(*itemOnLayer);
const COBJECT2D* object2d_A = static_cast<const COBJECT2D*>( *itemOnLayer );
wxASSERT( (object2d_A->GetObjectType() == OBJ2D_FILLED_CIRCLE) ||
(object2d_A->GetObjectType() == OBJ2D_ROUNDSEG) );
wxASSERT( ( object2d_A->GetObjectType() == OBJECT2D_TYPE::FILLED_CIRCLE )
|| ( object2d_A->GetObjectType() == OBJECT2D_TYPE::ROUNDSEG ) );
switch( object2d_A->GetObjectType() )
{
case OBJ2D_FILLED_CIRCLE:
add_object_to_triangle_layer( (const CFILLEDCIRCLE2D *)object2d_A,
layerTriangles,
aZtop, aZbot );
case OBJECT2D_TYPE::FILLED_CIRCLE:
add_object_to_triangle_layer( static_cast<const CFILLEDCIRCLE2D*>( object2d_A ),
layerTriangles, aZtop, aZbot );
break;
case OBJ2D_ROUNDSEG:
add_object_to_triangle_layer( (const CROUNDSEGMENT2D *) object2d_A,
layerTriangles,
aZtop, aZbot );
case OBJECT2D_TYPE::ROUNDSEG:
add_object_to_triangle_layer( static_cast<const CROUNDSEGMENT2D*>( object2d_A ),
layerTriangles, aZtop, aZbot );
break;
default:
wxFAIL_MSG("C3D_RENDER_OGL_LEGACY::generate_holes_display_list: Object type is not implemented");
default:
wxFAIL_MSG(
"C3D_RENDER_OGL_LEGACY::generate_holes_display_list: Object type is not implemented" );
break;
}
}
@ -394,7 +393,7 @@ void C3D_RENDER_OGL_LEGACY::reload( REPORTER *aStatusTextReporter )
{
const COBJECT2D *object2d_A = static_cast<const COBJECT2D *>(*itemOnLayer);
wxASSERT( object2d_A->GetObjectType() == OBJ2D_TRIANGLE );
wxASSERT( object2d_A->GetObjectType() == OBJECT2D_TYPE::TRIANGLE );
const CTRIANGLE2D *tri = (const CTRIANGLE2D *)object2d_A;
@ -563,27 +562,27 @@ void C3D_RENDER_OGL_LEGACY::reload( REPORTER *aStatusTextReporter )
switch( object2d_A->GetObjectType() )
{
case OBJ2D_FILLED_CIRCLE:
case OBJECT2D_TYPE::FILLED_CIRCLE:
add_object_to_triangle_layer( (const CFILLEDCIRCLE2D *)object2d_A,
layerTriangles, layer_z_top, layer_z_bot );
break;
case OBJ2D_POLYGON4PT:
case OBJECT2D_TYPE::POLYGON4PT:
add_object_to_triangle_layer( (const CPOLYGON4PTS2D *)object2d_A,
layerTriangles, layer_z_top, layer_z_bot );
break;
case OBJ2D_RING:
case OBJECT2D_TYPE::RING:
add_object_to_triangle_layer( (const CRING2D *)object2d_A,
layerTriangles, layer_z_top, layer_z_bot );
break;
case OBJ2D_TRIANGLE:
case OBJECT2D_TYPE::TRIANGLE:
add_object_to_triangle_layer( (const CTRIANGLE2D *)object2d_A,
layerTriangles, layer_z_top, layer_z_bot );
break;
case OBJ2D_ROUNDSEG:
case OBJECT2D_TYPE::ROUNDSEG:
add_object_to_triangle_layer( (const CROUNDSEGMENT2D *) object2d_A,
layerTriangles, layer_z_top, layer_z_bot );
break;
@ -856,7 +855,7 @@ void C3D_RENDER_OGL_LEGACY::generate_3D_Vias_and_Pads()
{
const COBJECT2D *object2d_A = static_cast<const COBJECT2D *>(*itemOnLayer);
wxASSERT( object2d_A->GetObjectType() == OBJ2D_TRIANGLE );
wxASSERT( object2d_A->GetObjectType() == OBJECT2D_TYPE::TRIANGLE );
const CTRIANGLE2D *tri = (const CTRIANGLE2D *)object2d_A;

View File

@ -65,7 +65,7 @@ C3D_RENDER_OGL_LEGACY::C3D_RENDER_OGL_LEGACY( CINFO3D_VISU &aSettings ) :
m_ogl_circle_texture = 0;
m_ogl_disp_list_grid = 0;
m_last_grid_type = GRID3D_NONE;
m_last_grid_type = GRID3D_TYPE::NONE;
m_3dmodel_map.clear();
}
@ -752,7 +752,7 @@ bool C3D_RENDER_OGL_LEGACY::Redraw( bool aIsMoving,
// Render Grid
// /////////////////////////////////////////////////////////////////////////
if( m_settings.GridGet() != GRID3D_NONE )
if( m_settings.GridGet() != GRID3D_TYPE::NONE )
{
glDisable( GL_LIGHTING );
@ -802,7 +802,7 @@ bool C3D_RENDER_OGL_LEGACY::initializeOpenGL()
CIMAGE *circleImage_Copy = new CIMAGE( *circleImage );
circleImage->EfxFilter( circleImage_Copy, FILTER_BLUR_3X3 );
circleImage->EfxFilter( circleImage_Copy, IMAGE_FILTER::BLUR_3X3 );
m_ogl_circle_texture = OGL_LoadTexture( *circleImage );
@ -1108,7 +1108,7 @@ void C3D_RENDER_OGL_LEGACY::generate_new_3DGrid( GRID3D_TYPE aGridType )
m_ogl_disp_list_grid = 0;
if( aGridType == GRID3D_NONE )
if( aGridType == GRID3D_TYPE::NONE )
return;
m_ogl_disp_list_grid = glGenLists( 1 );
@ -1136,18 +1136,18 @@ void C3D_RENDER_OGL_LEGACY::generate_new_3DGrid( GRID3D_TYPE aGridType )
switch( aGridType )
{
default:
case GRID3D_NONE:
case GRID3D_TYPE::NONE:
return;
case GRID3D_1MM:
case GRID3D_TYPE::GRID_1MM:
griSizeMM = 1.0;
break;
case GRID3D_2P5MM:
case GRID3D_TYPE::GRID_2P5MM:
griSizeMM = 2.5;
break;
case GRID3D_5MM:
case GRID3D_TYPE::GRID_5MM:
griSizeMM = 5.0;
break;
case GRID3D_10MM:
case GRID3D_TYPE::GRID_10MM:
griSizeMM = 10.0;
break;
}

View File

@ -113,8 +113,8 @@ C_OGL_3DMODEL::C_OGL_3DMODEL( const S3DMODEL &a3DModel,
if( mesh.m_MaterialIdx < a3DModel.m_MaterialsSize )
transparency = a3DModel.m_Materials[mesh.m_MaterialIdx].m_Transparency;
if( (transparency > FLT_EPSILON) &&
(aMaterialMode == MATERIAL_MODE_NORMAL) )
if( ( transparency > FLT_EPSILON )
&& ( aMaterialMode == MATERIAL_MODE::NORMAL ) )
{
// Create a new array of RGBA colors
pColorRGBA = new SFVEC4F[mesh.m_VertexSize];
@ -131,12 +131,12 @@ C_OGL_3DMODEL::C_OGL_3DMODEL( const S3DMODEL &a3DModel,
{
switch( aMaterialMode )
{
case MATERIAL_MODE_NORMAL:
case MATERIAL_MODE_DIFFUSE_ONLY:
case MATERIAL_MODE::NORMAL:
case MATERIAL_MODE::DIFFUSE_ONLY:
// load the original RGB color array
glColorPointer( 3, GL_FLOAT, 0, mesh.m_Color );
break;
case MATERIAL_MODE_CAD_MODE:
case MATERIAL_MODE::CAD_MODE:
// Create a new array of RGBA colors
pColorRGBA = new SFVEC4F[mesh.m_VertexSize];
@ -185,14 +185,14 @@ C_OGL_3DMODEL::C_OGL_3DMODEL( const S3DMODEL &a3DModel,
{
switch( aMaterialMode )
{
case MATERIAL_MODE_NORMAL:
case MATERIAL_MODE::NORMAL:
OGL_SetMaterial( a3DModel.m_Materials[mesh.m_MaterialIdx] );
break;
case MATERIAL_MODE_DIFFUSE_ONLY:
case MATERIAL_MODE::DIFFUSE_ONLY:
OGL_SetDiffuseOnlyMaterial(
a3DModel.m_Materials[mesh.m_MaterialIdx].m_Diffuse );
break;
case MATERIAL_MODE_CAD_MODE:
case MATERIAL_MODE::CAD_MODE:
OGL_SetDiffuseOnlyMaterial(
MaterialDiffuseToColorCAD(
a3DModel.m_Materials[mesh.m_MaterialIdx].m_Diffuse ) );

View File

@ -275,7 +275,7 @@ CBVH_PBRT::CBVH_PBRT( const CGENERICCONTAINER &aObjectContainer,
BVHBuildNode *root;
if( m_splitMethod == SPLIT_HLBVH )
if( m_splitMethod == SPLITMETHOD::HLBVH )
root = HLBVHBuild( primitiveInfo, &totalNodes, orderedPrims);
else
root = recursiveBuild( primitiveInfo, 0, m_primitives.size(),
@ -314,10 +314,18 @@ CBVH_PBRT::CBVH_PBRT( const CGENERICCONTAINER &aObjectContainer,
switch( m_splitMethod )
{
case SPLIT_MIDDLE: printf( "using SPLIT_MIDDLE\n" ); break;
case SPLIT_EQUALCOUNTS: printf( "using SPLIT_EQUALCOUNTS\n" ); break;
case SPLIT_SAH: printf( "using SPLIT_SAH\n" ); break;
case SPLIT_HLBVH: printf( "using SPLIT_HLBVH\n" ); break;
case SPLITMETHOD::MIDDLE:
printf( "using SPLITMETHOD::MIDDLE\n" );
break;
case SPLITMETHOD::EQUALCOUNTS:
printf( "using SPLITMETHOD::EQUALCOUNTS\n" );
break;
case SPLITMETHOD::SAH:
printf( "using SPLITMETHOD::SAH\n" );
break;
case SPLITMETHOD::HLBVH:
printf( "using SPLITMETHOD::HLBVH\n" );
break;
}
printf( " BVH created with %d nodes (%.2f MB)\n",
@ -533,7 +541,7 @@ BVHBuildNode *CBVH_PBRT::recursiveBuild ( std::vector<BVHPrimitiveInfo> &primiti
// Partition primitives based on _splitMethod_
switch( m_splitMethod )
{
case SPLIT_MIDDLE:
case SPLITMETHOD::MIDDLE:
{
// Partition primitives through node's midpoint
float pmid = centroidBounds.GetCenter( dim );
@ -549,11 +557,11 @@ BVHBuildNode *CBVH_PBRT::recursiveBuild ( std::vector<BVHPrimitiveInfo> &primiti
if( (mid != start) && (mid != end) )
// for lots of prims with large overlapping bounding boxes, this
// may fail to partition; in that case don't break and fall through
// to SPLIT_EQUAL_COUNTS
// to SPLITMETHOD::EQUAL_COUNTS
break;
}
case SPLIT_EQUALCOUNTS:
case SPLITMETHOD::EQUALCOUNTS:
{
// Partition primitives into equally-sized subsets
mid = (start + end) / 2;
@ -566,7 +574,7 @@ BVHBuildNode *CBVH_PBRT::recursiveBuild ( std::vector<BVHPrimitiveInfo> &primiti
break;
}
case SPLIT_SAH:
case SPLITMETHOD::SAH:
default:
{
// Partition primitives using approximate SAH

View File

@ -98,22 +98,20 @@ struct LinearBVHNode
};
enum SPLITMETHOD
enum class SPLITMETHOD
{
SPLIT_MIDDLE,
SPLIT_EQUALCOUNTS,
SPLIT_SAH,
SPLIT_HLBVH
MIDDLE,
EQUALCOUNTS,
SAH,
HLBVH
};
class CBVH_PBRT : public CGENERICACCELERATOR
{
public:
CBVH_PBRT( const CGENERICCONTAINER &aObjectContainer,
int aMaxPrimsInNode = 4,
SPLITMETHOD aSplitMethod = SPLIT_SAH );
CBVH_PBRT( const CGENERICCONTAINER& aObjectContainer, int aMaxPrimsInNode = 4,
SPLITMETHOD aSplitMethod = SPLITMETHOD::SAH );
~CBVH_PBRT();

View File

@ -74,7 +74,7 @@ CGENERICCONTAINER2D::~CGENERICCONTAINER2D()
// CCONTAINER2D
// /////////////////////////////////////////////////////////////////////////////
CCONTAINER2D::CCONTAINER2D() : CGENERICCONTAINER2D( OBJ2D_CONTAINER )
CCONTAINER2D::CCONTAINER2D() : CGENERICCONTAINER2D( OBJECT2D_TYPE::CONTAINER )
{
}
@ -123,7 +123,7 @@ bool CCONTAINER2D::Intersect( const RAYSEG2D &aSegRay, float *aOutT, SFVEC2F *aN
INTERSECTION_RESULT CCONTAINER2D::IsBBoxInside( const CBBOX2D &aBBox ) const
{
return INTR_MISSES;
return INTERSECTION_RESULT::MISSES;
}
@ -160,7 +160,7 @@ void CCONTAINER2D::GetListObjectsIntersects( const CBBOX2D & aBBox,
// CBVHCONTAINER2D
// /////////////////////////////////////////////////////////////////////////////
CBVHCONTAINER2D::CBVHCONTAINER2D() : CGENERICCONTAINER2D( OBJ2D_BVHCONTAINER )
CBVHCONTAINER2D::CBVHCONTAINER2D() : CGENERICCONTAINER2D( OBJECT2D_TYPE::BVHCONTAINER )
{
m_isInitialized = false;
m_bbox.Reset();

View File

@ -176,72 +176,61 @@ void C3D_RENDER_RAYTRACING::setupMaterials()
* @param aZMin
* @param aZMax
*/
void C3D_RENDER_RAYTRACING::create_3d_object_from( CCONTAINER &aDstContainer,
const COBJECT2D *aObject2D,
float aZMin, float aZMax,
const CMATERIAL *aMaterial,
const SFVEC3F &aObjColor )
void C3D_RENDER_RAYTRACING::create_3d_object_from( CCONTAINER& aDstContainer,
const COBJECT2D* aObject2D, float aZMin, float aZMax, const CMATERIAL* aMaterial,
const SFVEC3F& aObjColor )
{
switch( aObject2D->GetObjectType() )
{
case OBJ2D_DUMMYBLOCK:
{
m_stats_converted_dummy_to_plane++;
case OBJECT2D_TYPE::DUMMYBLOCK:
{
m_stats_converted_dummy_to_plane++;
#if 1
CXYPLANE *objPtr;
objPtr = new CXYPLANE( CBBOX ( SFVEC3F( aObject2D->GetBBox().Min().x,
aObject2D->GetBBox().Min().y,
aZMin ),
SFVEC3F( aObject2D->GetBBox().Max().x,
aObject2D->GetBBox().Max().y,
aZMin ) ) );
objPtr->SetMaterial( aMaterial );
objPtr->SetColor( ConvertSRGBToLinear( aObjColor ) );
aDstContainer.Add( objPtr );
CXYPLANE* objPtr;
objPtr = new CXYPLANE( CBBOX(
SFVEC3F( aObject2D->GetBBox().Min().x, aObject2D->GetBBox().Min().y, aZMin ),
SFVEC3F( aObject2D->GetBBox().Max().x, aObject2D->GetBBox().Max().y, aZMin ) ) );
objPtr->SetMaterial( aMaterial );
objPtr->SetColor( ConvertSRGBToLinear( aObjColor ) );
aDstContainer.Add( objPtr );
objPtr = new CXYPLANE( CBBOX ( SFVEC3F( aObject2D->GetBBox().Min().x,
aObject2D->GetBBox().Min().y,
aZMax ),
SFVEC3F( aObject2D->GetBBox().Max().x,
aObject2D->GetBBox().Max().y,
aZMax ) ) );
objPtr->SetMaterial( aMaterial );
objPtr->SetColor( ConvertSRGBToLinear( aObjColor ) );
aDstContainer.Add( objPtr );
objPtr = new CXYPLANE( CBBOX(
SFVEC3F( aObject2D->GetBBox().Min().x, aObject2D->GetBBox().Min().y, aZMax ),
SFVEC3F( aObject2D->GetBBox().Max().x, aObject2D->GetBBox().Max().y, aZMax ) ) );
objPtr->SetMaterial( aMaterial );
objPtr->SetColor( ConvertSRGBToLinear( aObjColor ) );
aDstContainer.Add( objPtr );
#else
objPtr = new CDUMMYBLOCK( CBBOX ( SFVEC3F( aObject2D->GetBBox().Min().x,
aObject2D->GetBBox().Min().y,
aZMin ),
SFVEC3F( aObject2D->GetBBox().Max().x,
aObject2D->GetBBox().Max().y,
aZMax ) ) );
objPtr->SetMaterial( aMaterial );
aDstContainer.Add( objPtr );
objPtr = new CDUMMYBLOCK( CBBOX(
SFVEC3F( aObject2D->GetBBox().Min().x, aObject2D->GetBBox().Min().y, aZMin ),
SFVEC3F( aObject2D->GetBBox().Max().x, aObject2D->GetBBox().Max().y, aZMax ) ) );
objPtr->SetMaterial( aMaterial );
aDstContainer.Add( objPtr );
#endif
}
break;
}
break;
case OBJ2D_ROUNDSEG:
{
m_stats_converted_roundsegment2d_to_roundsegment++;
case OBJECT2D_TYPE::ROUNDSEG:
{
m_stats_converted_roundsegment2d_to_roundsegment++;
const CROUNDSEGMENT2D *aRoundSeg2D = static_cast<const CROUNDSEGMENT2D *>( aObject2D );
CROUNDSEG *objPtr = new CROUNDSEG( *aRoundSeg2D, aZMin, aZMax );
objPtr->SetMaterial( aMaterial );
objPtr->SetColor( ConvertSRGBToLinear( aObjColor ) );
aDstContainer.Add( objPtr );
}
break;
const CROUNDSEGMENT2D* aRoundSeg2D = static_cast<const CROUNDSEGMENT2D*>( aObject2D );
CROUNDSEG* objPtr = new CROUNDSEG( *aRoundSeg2D, aZMin, aZMax );
objPtr->SetMaterial( aMaterial );
objPtr->SetColor( ConvertSRGBToLinear( aObjColor ) );
aDstContainer.Add( objPtr );
}
break;
default:
{
CLAYERITEM *objPtr = new CLAYERITEM( aObject2D, aZMin, aZMax );
objPtr->SetMaterial( aMaterial );
objPtr->SetColor( ConvertSRGBToLinear( aObjColor ) );
aDstContainer.Add( objPtr );
}
break;
default:
{
CLAYERITEM* objPtr = new CLAYERITEM( aObject2D, aZMin, aZMax );
objPtr->SetMaterial( aMaterial );
objPtr->SetColor( ConvertSRGBToLinear( aObjColor ) );
aDstContainer.Add( objPtr );
}
break;
}
}
@ -405,7 +394,7 @@ void C3D_RENDER_RAYTRACING::reload( REPORTER *aStatusTextReporter )
switch( hole2d->GetObjectType() )
{
case OBJ2D_FILLED_CIRCLE:
case OBJECT2D_TYPE::FILLED_CIRCLE:
{
const float radius = hole2d->GetBBox().GetExtent().x * 0.5f * 0.999f;
@ -1332,7 +1321,7 @@ void C3D_RENDER_RAYTRACING::add_3D_models( const S3DMODEL *a3DModel,
imat < a3DModel->m_MaterialsSize;
++imat )
{
if( m_settings.MaterialModeGet() == MATERIAL_MODE_NORMAL )
if( m_settings.MaterialModeGet() == MATERIAL_MODE::NORMAL )
{
const SMATERIAL &material = a3DModel->m_Materials[imat];
@ -1511,14 +1500,14 @@ void C3D_RENDER_RAYTRACING::add_3D_models( const S3DMODEL *a3DModel,
const SFVEC3F diffuseColor =
a3DModel->m_Materials[mesh.m_MaterialIdx].m_Diffuse;
if( m_settings.MaterialModeGet() == MATERIAL_MODE_CAD_MODE )
if( m_settings.MaterialModeGet() == MATERIAL_MODE::CAD_MODE )
newTriangle->SetColor( ConvertSRGBToLinear( MaterialDiffuseToColorCAD( diffuseColor ) ) );
else
newTriangle->SetColor( ConvertSRGBToLinear( diffuseColor ) );
}
else
{
if( m_settings.MaterialModeGet() == MATERIAL_MODE_CAD_MODE )
if( m_settings.MaterialModeGet() == MATERIAL_MODE::CAD_MODE )
newTriangle->SetColor( ConvertSRGBToLinear( MaterialDiffuseToColorCAD( mesh.m_Color[idx0] ) ),
ConvertSRGBToLinear( MaterialDiffuseToColorCAD( mesh.m_Color[idx1] ) ),
ConvertSRGBToLinear( MaterialDiffuseToColorCAD( mesh.m_Color[idx2] ) ) );

View File

@ -308,7 +308,7 @@ void C3D_RENDER_RAYTRACING::render( GLubyte *ptrPBO , REPORTER *aStatusTextRepor
if( m_camera_light )
m_camera_light->SetDirection( -m_settings.CameraGet().GetDir() );
if( m_settings.RenderEngineGet() == RENDER_ENGINE_OPENGL_LEGACY )
if( m_settings.RenderEngineGet() == RENDER_ENGINE::OPENGL_LEGACY )
{
// Set all pixels of PBO transparent (Alpha to 0)
// This way it will draw the full buffer but only shows the updated (

View File

@ -86,34 +86,34 @@ void RAY::Init( const SFVEC3F& o, const SFVEC3F& d )
{
if( m_Dir.z < 0 )
{
m_Classification = MMM;
m_Classification = RAY_CLASSIFICATION::MMM;
}
else if( m_Dir.z > 0 ){
m_Classification = MMP;
m_Classification = RAY_CLASSIFICATION::MMP;
}
else//( m_Dir.z >= 0 )
{
m_Classification = MMO;
m_Classification = RAY_CLASSIFICATION::MMO;
}
}
else//( m_Dir.y >= 0 )
{
if( m_Dir.z < 0 )
{
m_Classification = MPM;
m_Classification = RAY_CLASSIFICATION::MPM;
if( m_Dir.y == 0 )
m_Classification = MOM;
m_Classification = RAY_CLASSIFICATION::MOM;
}
else//( m_Dir.z >= 0 )
{
if( ( m_Dir.y == 0 ) && ( m_Dir.z == 0 ) )
m_Classification = MOO;
m_Classification = RAY_CLASSIFICATION::MOO;
else if( m_Dir.z == 0 )
m_Classification = MPO;
m_Classification = RAY_CLASSIFICATION::MPO;
else if( m_Dir.y == 0 )
m_Classification = MOP;
m_Classification = RAY_CLASSIFICATION::MOP;
else
m_Classification = MPP;
m_Classification = RAY_CLASSIFICATION::MPP;
}
}
}
@ -123,20 +123,20 @@ void RAY::Init( const SFVEC3F& o, const SFVEC3F& d )
{
if( m_Dir.z < 0 )
{
m_Classification = PMM;
m_Classification = RAY_CLASSIFICATION::PMM;
if( m_Dir.x == 0 )
m_Classification = OMM;
m_Classification = RAY_CLASSIFICATION::OMM;
}
else//( m_Dir.z >= 0 )
{
if( ( m_Dir.x == 0 ) && ( m_Dir.z == 0 ) )
m_Classification = OMO;
m_Classification = RAY_CLASSIFICATION::OMO;
else if( m_Dir.z == 0 )
m_Classification = PMO;
m_Classification = RAY_CLASSIFICATION::PMO;
else if( m_Dir.x == 0 )
m_Classification = OMP;
m_Classification = RAY_CLASSIFICATION::OMP;
else
m_Classification = PMP;
m_Classification = RAY_CLASSIFICATION::PMP;
}
}
else//( m_Dir.y >= 0 )
@ -144,35 +144,35 @@ void RAY::Init( const SFVEC3F& o, const SFVEC3F& d )
if( m_Dir.z < 0 )
{
if( ( m_Dir.x == 0 ) && ( m_Dir.y == 0 ) )
m_Classification = OOM;
m_Classification = RAY_CLASSIFICATION::OOM;
else if( m_Dir.x == 0 )
m_Classification = OPM;
m_Classification = RAY_CLASSIFICATION::OPM;
else if( m_Dir.y == 0 )
m_Classification = POM;
m_Classification = RAY_CLASSIFICATION::POM;
else
m_Classification = PPM;
m_Classification = RAY_CLASSIFICATION::PPM;
}
else//( m_Dir.z > 0 )
{
if( m_Dir.x == 0 )
{
if( m_Dir.y == 0 )
m_Classification = OOP;
m_Classification = RAY_CLASSIFICATION::OOP;
else if( m_Dir.z == 0 )
m_Classification = OPO;
m_Classification = RAY_CLASSIFICATION::OPO;
else
m_Classification = OPP;
m_Classification = RAY_CLASSIFICATION::OPP;
}
else
{
if( ( m_Dir.y == 0 ) && ( m_Dir.z == 0 ) )
m_Classification = POO;
m_Classification = RAY_CLASSIFICATION::POO;
else if( m_Dir.y == 0 )
m_Classification = POP;
m_Classification = RAY_CLASSIFICATION::POP;
else if( m_Dir.z == 0 )
m_Classification = PPO;
m_Classification = RAY_CLASSIFICATION::PPO;
else
m_Classification = PPP;
m_Classification = RAY_CLASSIFICATION::PPP;
}
}
}

View File

@ -33,10 +33,34 @@
#include <plugins/3dapi/xv3d_types.h>
enum RAY_CLASSIFICATION
enum class RAY_CLASSIFICATION
{
MMM, MMP, MPM, MPP, PMM, PMP, PPM, PPP, POO, MOO, OPO, OMO, OOP, OOM, OMM,
OMP,OPM,OPP,MOM,MOP,POM,POP,MMO,MPO,PMO,PPO
MMM,
MMP,
MPM,
MPP,
PMM,
PMP,
PPM,
PPP,
POO,
MOO,
OPO,
OMO,
OOP,
OOM,
OMM,
OMP,
OPM,
OPP,
MOM,
MOP,
POM,
POP,
MMO,
MPO,
PMO,
PPO
};

View File

@ -31,10 +31,9 @@
#include <wx/debug.h>
CFILLEDCIRCLE2D::CFILLEDCIRCLE2D( const SFVEC2F &aCenter,
float aRadius,
const BOARD_ITEM &aBoardItem ) :
COBJECT2D( OBJ2D_FILLED_CIRCLE, aBoardItem )
CFILLEDCIRCLE2D::CFILLEDCIRCLE2D(
const SFVEC2F& aCenter, float aRadius, const BOARD_ITEM& aBoardItem )
: COBJECT2D( OBJECT2D_TYPE::FILLED_CIRCLE, aBoardItem )
{
wxASSERT( aRadius > 0.0f ); // If that happens, it should be handled before create this circle
@ -125,7 +124,7 @@ bool CFILLEDCIRCLE2D::Intersect( const RAYSEG2D &aSegRay,
INTERSECTION_RESULT CFILLEDCIRCLE2D::IsBBoxInside( const CBBOX2D &aBBox ) const
{
if( !m_bbox.Intersects( aBBox ) )
return INTR_MISSES;
return INTERSECTION_RESULT::MISSES;
SFVEC2F v[4];
@ -153,16 +152,16 @@ INTERSECTION_RESULT CFILLEDCIRCLE2D::IsBBoxInside( const CBBOX2D &aBBox ) const
isInside[1] &&
isInside[2] &&
isInside[3] )
return INTR_FULL_INSIDE;
return INTERSECTION_RESULT::FULL_INSIDE;
// Check if any point is inside the circle
if( isInside[0] ||
isInside[1] ||
isInside[2] ||
isInside[3] )
return INTR_INTERSECTS;
return INTERSECTION_RESULT::INTERSECTS;
return INTR_MISSES;
return INTERSECTION_RESULT::MISSES;
}

View File

@ -31,14 +31,13 @@
#include "3d_fastmath.h"
#include <wx/debug.h>
CITEMLAYERCSG2D::CITEMLAYERCSG2D( const COBJECT2D *aObjectA,
std::vector<const COBJECT2D *> *aObjectB,
const COBJECT2D *aObjectC,
const BOARD_ITEM &aBoardItem ):
COBJECT2D( OBJ2D_CSG, aBoardItem ),
m_objectA(aObjectA),
m_objectB(aObjectB),
m_objectC(aObjectC)
CITEMLAYERCSG2D::CITEMLAYERCSG2D( const COBJECT2D* aObjectA,
std::vector<const COBJECT2D*>* aObjectB, const COBJECT2D* aObjectC,
const BOARD_ITEM& aBoardItem )
: COBJECT2D( OBJECT2D_TYPE::CSG, aBoardItem ),
m_objectA( aObjectA ),
m_objectB( aObjectB ),
m_objectC( aObjectC )
{
wxASSERT( aObjectA );
@ -85,7 +84,7 @@ bool CITEMLAYERCSG2D::Intersect( const RAYSEG2D &aSegRay,
wxASSERT( aOutT );
wxASSERT( aNormalOut );
if( m_objectA->GetObjectType() == OBJ2D_DUMMYBLOCK )
if( m_objectA->GetObjectType() == OBJECT2D_TYPE::DUMMYBLOCK )
return false;
float currentRayDist;
@ -187,7 +186,7 @@ INTERSECTION_RESULT CITEMLAYERCSG2D::IsBBoxInside( const CBBOX2D &aBBox ) const
// !TODO:
return INTR_MISSES;
return INTERSECTION_RESULT::MISSES;
}

View File

@ -42,27 +42,33 @@ COBJECT2D::COBJECT2D( OBJECT2D_TYPE aObjType, const BOARD_ITEM &aBoardItem )
}
static const char *OBJECT2D_STR[OBJ2D_MAX] =
/*
* Lookup table for OBJECT2D_TYPE printed names
*/
// clang-format off
const std::map<OBJECT2D_TYPE, const char*> objectTypeNames
{
"OBJ2D_FILLED_CIRCLE",
"OBJ2D_CSG",
"OBJ2D_POLYGON",
"OBJ2D_DUMMYBLOCK",
"OBJ2D_POLYGON4PT",
"OBJ2D_RING",
"OBJ2D_ROUNDSEG",
"OBJ2D_TRIANGLE",
"OBJ2D_CONTAINER",
"OBJ2D_BVHCONTAINER"
{ OBJECT2D_TYPE::FILLED_CIRCLE, "OBJECT2D_TYPE::FILLED_CIRCLE" },
{ OBJECT2D_TYPE::CSG, "OBJECT2D_TYPE::CSG" },
{ OBJECT2D_TYPE::POLYGON, "OBJECT2D_TYPE::POLYGON" },
{ OBJECT2D_TYPE::DUMMYBLOCK, "OBJECT2D_TYPE::DUMMYBLOCK" },
{ OBJECT2D_TYPE::POLYGON4PT, "OBJECT2D_TYPE::POLYGON4PT" },
{ OBJECT2D_TYPE::RING, "OBJECT2D_TYPE::RING" },
{ OBJECT2D_TYPE::ROUNDSEG, "OBJECT2D_TYPE::ROUNDSEG" },
{ OBJECT2D_TYPE::TRIANGLE, "OBJECT2D_TYPE::TRIANGLE" },
{ OBJECT2D_TYPE::CONTAINER, "OBJECT2D_TYPE::CONTAINER" },
{ OBJECT2D_TYPE::BVHCONTAINER, "OBJECT2D_TYPE::BVHCONTAINER" },
};
// clang-format on
void COBJECT2D_STATS::PrintStats()
{
printf( "OBJ2D Statistics:\n" );
for( unsigned int i = 0; i < OBJ2D_MAX; ++i )
for( auto& objectType : objectTypeNames )
{
printf( " %20s %u\n", OBJECT2D_STR[i], m_counter[i] );
printf( " %20s %u\n", objectType.second,
m_counter[static_cast<int>( objectType.first )] );
}
}

View File

@ -35,27 +35,27 @@
#include <class_board_item.h>
enum INTERSECTION_RESULT
enum class INTERSECTION_RESULT
{
INTR_MISSES,
INTR_INTERSECTS,
INTR_FULL_INSIDE
MISSES,
INTERSECTS,
FULL_INSIDE
};
enum OBJECT2D_TYPE
enum class OBJECT2D_TYPE
{
OBJ2D_FILLED_CIRCLE,
OBJ2D_CSG,
OBJ2D_POLYGON,
OBJ2D_DUMMYBLOCK,
OBJ2D_POLYGON4PT,
OBJ2D_RING,
OBJ2D_ROUNDSEG,
OBJ2D_TRIANGLE,
OBJ2D_CONTAINER,
OBJ2D_BVHCONTAINER,
OBJ2D_MAX
FILLED_CIRCLE,
CSG,
POLYGON,
DUMMYBLOCK,
POLYGON4PT,
RING,
ROUNDSEG,
TRIANGLE,
CONTAINER,
BVHCONTAINER,
MAX
};
@ -132,14 +132,20 @@ public:
class COBJECT2D_STATS
{
public:
void ResetStats() { memset( m_counter, 0, sizeof( unsigned int ) * OBJ2D_MAX ); }
void ResetStats()
{
memset( m_counter, 0, sizeof( unsigned int ) * static_cast<int>( OBJECT2D_TYPE::MAX ) );
}
unsigned int GetCountOf( OBJECT2D_TYPE aObjType ) const
{
return m_counter[aObjType];
return m_counter[static_cast<int>( aObjType )];
}
void AddOne( OBJECT2D_TYPE aObjType ) { m_counter[aObjType]++; }
void AddOne( OBJECT2D_TYPE aObjType )
{
m_counter[static_cast<int>( aObjType )]++;
}
void PrintStats();
@ -158,7 +164,7 @@ private:
~COBJECT2D_STATS(){}
private:
unsigned int m_counter[OBJ2D_MAX];
unsigned int m_counter[static_cast<int>( OBJECT2D_TYPE::MAX )];
static COBJECT2D_STATS *s_instance;
};

View File

@ -70,10 +70,9 @@ static bool polygon_IsPointInside( const SEGMENTS &aSegments, const SFVEC2F &aPo
}
CPOLYGONBLOCK2D::CPOLYGONBLOCK2D( const SEGMENTS_WIDTH_NORMALS &aOpenSegmentList,
const OUTERS_AND_HOLES &aOuter_and_holes,
const BOARD_ITEM &aBoardItem ) :
COBJECT2D( OBJ2D_POLYGON, aBoardItem )
CPOLYGONBLOCK2D::CPOLYGONBLOCK2D( const SEGMENTS_WIDTH_NORMALS& aOpenSegmentList,
const OUTERS_AND_HOLES& aOuter_and_holes, const BOARD_ITEM& aBoardItem )
: COBJECT2D( OBJECT2D_TYPE::POLYGON, aBoardItem )
{
m_open_segments.resize( aOpenSegmentList.size() );
@ -190,7 +189,7 @@ bool CPOLYGONBLOCK2D::Intersect( const RAYSEG2D &aSegRay,
INTERSECTION_RESULT CPOLYGONBLOCK2D::IsBBoxInside( const CBBOX2D &aBBox ) const
{
return INTR_MISSES;
return INTERSECTION_RESULT::MISSES;
}
@ -221,9 +220,9 @@ bool CPOLYGONBLOCK2D::IsPointInside( const SFVEC2F &aPoint ) const
// CDUMMYBLOCK2D
// /////////////////////////////////////////////////////////////////////////////
CDUMMYBLOCK2D::CDUMMYBLOCK2D( const SFVEC2F &aPbMin, const SFVEC2F &aPbMax,
const BOARD_ITEM &aBoardItem ) :
COBJECT2D( OBJ2D_DUMMYBLOCK, aBoardItem )
CDUMMYBLOCK2D::CDUMMYBLOCK2D(
const SFVEC2F& aPbMin, const SFVEC2F& aPbMax, const BOARD_ITEM& aBoardItem )
: COBJECT2D( OBJECT2D_TYPE::DUMMYBLOCK, aBoardItem )
{
m_bbox.Set( aPbMin, aPbMax );
m_bbox.ScaleNextUp();
@ -231,9 +230,8 @@ CDUMMYBLOCK2D::CDUMMYBLOCK2D( const SFVEC2F &aPbMin, const SFVEC2F &aPbMax,
}
CDUMMYBLOCK2D::CDUMMYBLOCK2D( const CBBOX2D &aBBox,
const BOARD_ITEM &aBoardItem ) :
COBJECT2D( OBJ2D_DUMMYBLOCK, aBoardItem )
CDUMMYBLOCK2D::CDUMMYBLOCK2D( const CBBOX2D& aBBox, const BOARD_ITEM& aBoardItem )
: COBJECT2D( OBJECT2D_TYPE::DUMMYBLOCK, aBoardItem )
{
m_bbox.Set( aBBox );
m_bbox.ScaleNextUp();
@ -267,7 +265,7 @@ bool CDUMMYBLOCK2D::Intersect( const RAYSEG2D &aSegRay,
INTERSECTION_RESULT CDUMMYBLOCK2D::IsBBoxInside( const CBBOX2D &aBBox ) const
{
//!TODO:
return INTR_MISSES;
return INTERSECTION_RESULT::MISSES;
}

View File

@ -31,12 +31,9 @@
#include <wx/debug.h>
CPOLYGON4PTS2D::CPOLYGON4PTS2D( const SFVEC2F &v1,
const SFVEC2F &v2,
const SFVEC2F &v3,
const SFVEC2F &v4,
const BOARD_ITEM &aBoardItem ) :
COBJECT2D( OBJ2D_POLYGON4PT, aBoardItem )
CPOLYGON4PTS2D::CPOLYGON4PTS2D( const SFVEC2F& v1, const SFVEC2F& v2, const SFVEC2F& v3,
const SFVEC2F& v4, const BOARD_ITEM& aBoardItem )
: COBJECT2D( OBJECT2D_TYPE::POLYGON4PT, aBoardItem )
{/*
if( (v1.x > v2.x) || (v1.y < v2.y) )
{
@ -177,7 +174,7 @@ INTERSECTION_RESULT CPOLYGON4PTS2D::IsBBoxInside( const CBBOX2D &aBBox ) const
{
// !TODO:
return INTR_MISSES;
return INTERSECTION_RESULT::MISSES;
}

View File

@ -32,8 +32,9 @@
#include <wx/debug.h>
CRING2D::CRING2D( const SFVEC2F &aCenter, float aInnerRadius, float aOuterRadius,
const BOARD_ITEM &aBoardItem ) : COBJECT2D( OBJ2D_RING, aBoardItem )
CRING2D::CRING2D( const SFVEC2F& aCenter, float aInnerRadius, float aOuterRadius,
const BOARD_ITEM& aBoardItem )
: COBJECT2D( OBJECT2D_TYPE::RING, aBoardItem )
{
wxASSERT( aInnerRadius < aOuterRadius );
@ -141,7 +142,7 @@ INTERSECTION_RESULT CRING2D::IsBBoxInside( const CBBOX2D &aBBox ) const
{
/*
if( !m_bbox.Overlaps( aBBox ) )
return INTR_MISSES;
return INTERSECTION_RESULT::MISSES;
SFVEC2F v[4];
@ -169,16 +170,16 @@ INTERSECTION_RESULT CRING2D::IsBBoxInside( const CBBOX2D &aBBox ) const
isInside[1] &&
isInside[2] &&
isInside[3] )
return INTR_FULL_INSIDE;
return INTERSECTION_RESULT::FULL_INSIDE;
// Check if any point is inside the circle
if( isInside[0] ||
isInside[1] ||
isInside[2] ||
isInside[3] )
return INTR_INTERSECTS;
return INTERSECTION_RESULT::INTERSECTS;
*/
return INTR_MISSES;
return INTERSECTION_RESULT::MISSES;
}

View File

@ -31,12 +31,9 @@
#include <wx/debug.h>
CROUNDSEGMENT2D::CROUNDSEGMENT2D( const SFVEC2F &aStart,
const SFVEC2F &aEnd,
float aWidth,
const BOARD_ITEM &aBoardItem ) :
COBJECT2D( OBJ2D_ROUNDSEG, aBoardItem ),
m_segment( aStart, aEnd )
CROUNDSEGMENT2D::CROUNDSEGMENT2D(
const SFVEC2F& aStart, const SFVEC2F& aEnd, float aWidth, const BOARD_ITEM& aBoardItem )
: COBJECT2D( OBJECT2D_TYPE::ROUNDSEG, aBoardItem ), m_segment( aStart, aEnd )
{
wxASSERT( aStart != aEnd );
@ -297,7 +294,7 @@ bool CROUNDSEGMENT2D::Intersect( const RAYSEG2D &aSegRay,
INTERSECTION_RESULT CROUNDSEGMENT2D::IsBBoxInside( const CBBOX2D &aBBox ) const
{
if( !m_bbox.Intersects( aBBox ) )
return INTR_MISSES;
return INTERSECTION_RESULT::MISSES;
SFVEC2F v[4];
@ -318,16 +315,16 @@ INTERSECTION_RESULT CROUNDSEGMENT2D::IsBBoxInside( const CBBOX2D &aBBox ) const
isInside[1] &&
isInside[2] &&
isInside[3] )
return INTR_FULL_INSIDE;
return INTERSECTION_RESULT::FULL_INSIDE;
// Check if any point is inside the circle
if( isInside[0] ||
isInside[1] ||
isInside[2] ||
isInside[3] )
return INTR_INTERSECTS;
return INTERSECTION_RESULT::INTERSECTS;
return INTR_MISSES;
return INTERSECTION_RESULT::MISSES;
}

View File

@ -39,12 +39,9 @@
#include "../../../3d_fastmath.h"
CTRIANGLE2D::CTRIANGLE2D ( const SFVEC2F &aV1,
const SFVEC2F &aV2,
const SFVEC2F &aV3,
const BOARD_ITEM &aBoardItem ) : COBJECT2D( OBJ2D_TRIANGLE,
aBoardItem )
CTRIANGLE2D::CTRIANGLE2D(
const SFVEC2F& aV1, const SFVEC2F& aV2, const SFVEC2F& aV3, const BOARD_ITEM& aBoardItem )
: COBJECT2D( OBJECT2D_TYPE::TRIANGLE, aBoardItem )
{
p1 = aV1;
p2 = aV2;
@ -98,9 +95,9 @@ bool CTRIANGLE2D::Intersect( const RAYSEG2D &aSegRay,
INTERSECTION_RESULT CTRIANGLE2D::IsBBoxInside( const CBBOX2D &aBBox ) const
{
if( !m_bbox.Intersects( aBBox ) )
return INTR_MISSES;
return INTERSECTION_RESULT::MISSES;
// !TODO:
return INTR_MISSES;
return INTERSECTION_RESULT::MISSES;
}

View File

@ -47,7 +47,7 @@ bool CBBOX::Intersect( const RAY& aRay, float* t ) const
{
switch( aRay.m_Classification )
{
case MMM:
case RAY_CLASSIFICATION::MMM:
{
if( ( aRay.m_Origin.x < m_min.x )
|| ( aRay.m_Origin.y < m_min.y )
@ -79,7 +79,7 @@ bool CBBOX::Intersect( const RAY& aRay, float* t ) const
}
case MMP:
case RAY_CLASSIFICATION::MMP:
{
if( ( aRay.m_Origin.x < m_min.x )
|| ( aRay.m_Origin.y < m_min.y )
@ -108,7 +108,7 @@ bool CBBOX::Intersect( const RAY& aRay, float* t ) const
return true;
}
case MPM:
case RAY_CLASSIFICATION::MPM:
{
if( ( aRay.m_Origin.x < m_min.x )
|| ( aRay.m_Origin.y > m_max.y )
@ -137,7 +137,7 @@ bool CBBOX::Intersect( const RAY& aRay, float* t ) const
return true;
}
case MPP:
case RAY_CLASSIFICATION::MPP:
{
if( ( aRay.m_Origin.x < m_min.x )
|| ( aRay.m_Origin.y > m_max.y )
@ -166,7 +166,7 @@ bool CBBOX::Intersect( const RAY& aRay, float* t ) const
return true;
}
case PMM:
case RAY_CLASSIFICATION::PMM:
{
if( ( aRay.m_Origin.x > m_max.x )
|| ( aRay.m_Origin.y < m_min.y )
@ -196,7 +196,7 @@ bool CBBOX::Intersect( const RAY& aRay, float* t ) const
}
case PMP:
case RAY_CLASSIFICATION::PMP:
{
if( ( aRay.m_Origin.x > m_max.x )
|| ( aRay.m_Origin.y < m_min.y )
@ -225,7 +225,7 @@ bool CBBOX::Intersect( const RAY& aRay, float* t ) const
return true;
}
case PPM:
case RAY_CLASSIFICATION::PPM:
{
if( ( aRay.m_Origin.x > m_max.x )
|| ( aRay.m_Origin.y > m_max.y )
@ -254,7 +254,7 @@ bool CBBOX::Intersect( const RAY& aRay, float* t ) const
return true;
}
case PPP:
case RAY_CLASSIFICATION::PPP:
{
if( ( aRay.m_Origin.x > m_max.x )
|| ( aRay.m_Origin.y > m_max.y )
@ -283,7 +283,7 @@ bool CBBOX::Intersect( const RAY& aRay, float* t ) const
return true;
}
case OMM:
case RAY_CLASSIFICATION::OMM:
{
if( ( aRay.m_Origin.x < m_min.x )
|| ( aRay.m_Origin.x > m_max.x )
@ -303,7 +303,7 @@ bool CBBOX::Intersect( const RAY& aRay, float* t ) const
return true;
}
case OMP:
case RAY_CLASSIFICATION::OMP:
{
if( ( aRay.m_Origin.x < m_min.x )
|| ( aRay.m_Origin.x > m_max.x )
@ -323,7 +323,7 @@ bool CBBOX::Intersect( const RAY& aRay, float* t ) const
return true;
}
case OPM:
case RAY_CLASSIFICATION::OPM:
{
if( ( aRay.m_Origin.x < m_min.x) || ( aRay.m_Origin.x > m_max.x)
|| ( aRay.m_Origin.y > m_max.y) || ( aRay.m_Origin.z < m_min.z)
@ -342,7 +342,7 @@ bool CBBOX::Intersect( const RAY& aRay, float* t ) const
return true;
}
case OPP:
case RAY_CLASSIFICATION::OPP:
{
if( ( aRay.m_Origin.x < m_min.x) || ( aRay.m_Origin.x > m_max.x)
|| ( aRay.m_Origin.y > m_max.y) || ( aRay.m_Origin.z > m_max.z)
@ -362,7 +362,7 @@ bool CBBOX::Intersect( const RAY& aRay, float* t ) const
}
case MOM:
case RAY_CLASSIFICATION::MOM:
{
if( ( aRay.m_Origin.y < m_min.y) || ( aRay.m_Origin.y > m_max.y)
|| ( aRay.m_Origin.x < m_min.x) || ( aRay.m_Origin.z < m_min.z)
@ -382,7 +382,7 @@ bool CBBOX::Intersect( const RAY& aRay, float* t ) const
}
case MOP:
case RAY_CLASSIFICATION::MOP:
{
if( ( aRay.m_Origin.y < m_min.y) || ( aRay.m_Origin.y > m_max.y)
|| ( aRay.m_Origin.x < m_min.x) || ( aRay.m_Origin.z > m_max.z)
@ -401,7 +401,7 @@ bool CBBOX::Intersect( const RAY& aRay, float* t ) const
return true;
}
case POM:
case RAY_CLASSIFICATION::POM:
{
if( ( aRay.m_Origin.y < m_min.y) || ( aRay.m_Origin.y > m_max.y)
|| ( aRay.m_Origin.x > m_max.x) || ( aRay.m_Origin.z < m_min.z)
@ -421,7 +421,7 @@ bool CBBOX::Intersect( const RAY& aRay, float* t ) const
}
case POP:
case RAY_CLASSIFICATION::POP:
{
if( ( aRay.m_Origin.y < m_min.y) || ( aRay.m_Origin.y > m_max.y)
|| ( aRay.m_Origin.x > m_max.x) || ( aRay.m_Origin.z > m_max.z)
@ -440,7 +440,7 @@ bool CBBOX::Intersect( const RAY& aRay, float* t ) const
return true;
}
case MMO:
case RAY_CLASSIFICATION::MMO:
{
if( ( aRay.m_Origin.z < m_min.z) || ( aRay.m_Origin.z > m_max.z)
|| ( aRay.m_Origin.x < m_min.x) || ( aRay.m_Origin.y < m_min.y)
@ -459,7 +459,7 @@ bool CBBOX::Intersect( const RAY& aRay, float* t ) const
return true;
}
case MPO:
case RAY_CLASSIFICATION::MPO:
{
if( ( aRay.m_Origin.z < m_min.z) || ( aRay.m_Origin.z > m_max.z)
|| ( aRay.m_Origin.x < m_min.x) || ( aRay.m_Origin.y > m_max.y)
@ -479,7 +479,7 @@ bool CBBOX::Intersect( const RAY& aRay, float* t ) const
}
case PMO:
case RAY_CLASSIFICATION::PMO:
{
if( ( aRay.m_Origin.z < m_min.z) || ( aRay.m_Origin.z > m_max.z)
|| ( aRay.m_Origin.x > m_max.x) || ( aRay.m_Origin.y < m_min.y)
@ -498,7 +498,7 @@ bool CBBOX::Intersect( const RAY& aRay, float* t ) const
return true;
}
case PPO:
case RAY_CLASSIFICATION::PPO:
{
if( ( aRay.m_Origin.z < m_min.z) || ( aRay.m_Origin.z > m_max.z)
|| ( aRay.m_Origin.x > m_max.x) || ( aRay.m_Origin.y > m_max.y)
@ -518,7 +518,7 @@ bool CBBOX::Intersect( const RAY& aRay, float* t ) const
}
case MOO:
case RAY_CLASSIFICATION::MOO:
{
if( ( aRay.m_Origin.x < m_min.x)
|| ( aRay.m_Origin.y < m_min.y) || ( aRay.m_Origin.y > m_max.y)
@ -531,7 +531,7 @@ bool CBBOX::Intersect( const RAY& aRay, float* t ) const
return true;
}
case POO:
case RAY_CLASSIFICATION::POO:
{
if( ( aRay.m_Origin.x > m_max.x)
|| ( aRay.m_Origin.y < m_min.y) || ( aRay.m_Origin.y > m_max.y)
@ -544,7 +544,7 @@ bool CBBOX::Intersect( const RAY& aRay, float* t ) const
return true;
}
case OMO:
case RAY_CLASSIFICATION::OMO:
{
if( ( aRay.m_Origin.y < m_min.y)
|| ( aRay.m_Origin.x < m_min.x) || ( aRay.m_Origin.x > m_max.x)
@ -557,7 +557,7 @@ bool CBBOX::Intersect( const RAY& aRay, float* t ) const
return true;
}
case OPO:
case RAY_CLASSIFICATION::OPO:
{
if( ( aRay.m_Origin.y > m_max.y)
|| ( aRay.m_Origin.x < m_min.x) || ( aRay.m_Origin.x > m_max.x)
@ -571,7 +571,7 @@ bool CBBOX::Intersect( const RAY& aRay, float* t ) const
}
case OOM:
case RAY_CLASSIFICATION::OOM:
{
if( ( aRay.m_Origin.z < m_min.z)
|| ( aRay.m_Origin.x < m_min.x) || ( aRay.m_Origin.x > m_max.x)
@ -584,7 +584,7 @@ bool CBBOX::Intersect( const RAY& aRay, float* t ) const
return true;
}
case OOP:
case RAY_CLASSIFICATION::OOP:
{
if( ( aRay.m_Origin.z > m_max.z)
|| ( aRay.m_Origin.x < m_min.x) || ( aRay.m_Origin.x > m_max.x)
@ -606,7 +606,7 @@ bool CBBOX::Intersect( const RAY& aRay ) const
{
switch( aRay.m_Classification )
{
case MMM:
case RAY_CLASSIFICATION::MMM:
{
if( ( aRay.m_Origin.x < m_min.x )
|| ( aRay.m_Origin.y < m_min.y )
@ -624,7 +624,7 @@ bool CBBOX::Intersect( const RAY& aRay ) const
}
case MMP:
case RAY_CLASSIFICATION::MMP:
{
if( ( aRay.m_Origin.x < m_min.x )
|| ( aRay.m_Origin.y < m_min.y )
@ -641,7 +641,7 @@ bool CBBOX::Intersect( const RAY& aRay ) const
return true;
}
case MPM:
case RAY_CLASSIFICATION::MPM:
{
if( ( aRay.m_Origin.x < m_min.x )
|| ( aRay.m_Origin.y > m_max.y )
@ -658,7 +658,7 @@ bool CBBOX::Intersect( const RAY& aRay ) const
return true;
}
case MPP:
case RAY_CLASSIFICATION::MPP:
{
if( ( aRay.m_Origin.x < m_min.x )
|| ( aRay.m_Origin.y > m_max.y )
@ -675,7 +675,7 @@ bool CBBOX::Intersect( const RAY& aRay ) const
return true;
}
case PMM:
case RAY_CLASSIFICATION::PMM:
{
if( ( aRay.m_Origin.x > m_max.x )
|| ( aRay.m_Origin.y < m_min.y )
@ -693,7 +693,7 @@ bool CBBOX::Intersect( const RAY& aRay ) const
}
case PMP:
case RAY_CLASSIFICATION::PMP:
{
if( ( aRay.m_Origin.x > m_max.x )
|| ( aRay.m_Origin.y < m_min.y )
@ -710,7 +710,7 @@ bool CBBOX::Intersect( const RAY& aRay ) const
return true;
}
case PPM:
case RAY_CLASSIFICATION::PPM:
{
if( ( aRay.m_Origin.x > m_max.x )
|| ( aRay.m_Origin.y > m_max.y )
@ -727,7 +727,7 @@ bool CBBOX::Intersect( const RAY& aRay ) const
return true;
}
case PPP:
case RAY_CLASSIFICATION::PPP:
{
if( ( aRay.m_Origin.x > m_max.x )
|| ( aRay.m_Origin.y > m_max.y )
@ -744,7 +744,7 @@ bool CBBOX::Intersect( const RAY& aRay ) const
return true;
}
case OMM:
case RAY_CLASSIFICATION::OMM:
{
if( ( aRay.m_Origin.x < m_min.x )
|| ( aRay.m_Origin.x > m_max.x )
@ -756,7 +756,7 @@ bool CBBOX::Intersect( const RAY& aRay ) const
return true;
}
case OMP:
case RAY_CLASSIFICATION::OMP:
{
if( ( aRay.m_Origin.x < m_min.x )
|| ( aRay.m_Origin.x > m_max.x )
@ -769,7 +769,7 @@ bool CBBOX::Intersect( const RAY& aRay ) const
return true;
}
case OPM:
case RAY_CLASSIFICATION::OPM:
{
if( ( aRay.m_Origin.x < m_min.x )
|| ( aRay.m_Origin.x > m_max.x )
@ -782,7 +782,7 @@ bool CBBOX::Intersect( const RAY& aRay ) const
return true;
}
case OPP:
case RAY_CLASSIFICATION::OPP:
{
if( ( aRay.m_Origin.x < m_min.x )
|| ( aRay.m_Origin.x > m_max.x )
@ -796,7 +796,7 @@ bool CBBOX::Intersect( const RAY& aRay ) const
}
case MOM:
case RAY_CLASSIFICATION::MOM:
{
if( ( aRay.m_Origin.y < m_min.y) || ( aRay.m_Origin.y > m_max.y)
|| ( aRay.m_Origin.x < m_min.x) || ( aRay.m_Origin.z < m_min.z)
@ -809,7 +809,7 @@ bool CBBOX::Intersect( const RAY& aRay ) const
}
case MOP:
case RAY_CLASSIFICATION::MOP:
{
if( ( aRay.m_Origin.y < m_min.y) || ( aRay.m_Origin.y > m_max.y)
|| ( aRay.m_Origin.x < m_min.x) || ( aRay.m_Origin.z > m_max.z)
@ -821,7 +821,7 @@ bool CBBOX::Intersect( const RAY& aRay ) const
return true;
}
case POM:
case RAY_CLASSIFICATION::POM:
{
if( ( aRay.m_Origin.y < m_min.y) || ( aRay.m_Origin.y > m_max.y)
|| ( aRay.m_Origin.x > m_max.x) || ( aRay.m_Origin.z < m_min.z)
@ -834,7 +834,7 @@ bool CBBOX::Intersect( const RAY& aRay ) const
}
case POP:
case RAY_CLASSIFICATION::POP:
{
if( ( aRay.m_Origin.y < m_min.y) || ( aRay.m_Origin.y > m_max.y)
|| ( aRay.m_Origin.x > m_max.x) || ( aRay.m_Origin.z > m_max.z)
@ -846,7 +846,7 @@ bool CBBOX::Intersect( const RAY& aRay ) const
return true;
}
case MMO:
case RAY_CLASSIFICATION::MMO:
{
if( ( aRay.m_Origin.z < m_min.z) || ( aRay.m_Origin.z > m_max.z)
|| ( aRay.m_Origin.x < m_min.x) || ( aRay.m_Origin.y < m_min.y)
@ -858,7 +858,7 @@ bool CBBOX::Intersect( const RAY& aRay ) const
return true;
}
case MPO:
case RAY_CLASSIFICATION::MPO:
{
if( ( aRay.m_Origin.z < m_min.z) || ( aRay.m_Origin.z > m_max.z)
|| ( aRay.m_Origin.x < m_min.x) || ( aRay.m_Origin.y > m_max.y)
@ -871,7 +871,7 @@ bool CBBOX::Intersect( const RAY& aRay ) const
}
case PMO:
case RAY_CLASSIFICATION::PMO:
{
if( ( aRay.m_Origin.z < m_min.z) || ( aRay.m_Origin.z > m_max.z)
|| ( aRay.m_Origin.x > m_max.x) || ( aRay.m_Origin.y < m_min.y)
@ -883,7 +883,7 @@ bool CBBOX::Intersect( const RAY& aRay ) const
return true;
}
case PPO:
case RAY_CLASSIFICATION::PPO:
{
if( ( aRay.m_Origin.z < m_min.z) || ( aRay.m_Origin.z > m_max.z)
|| ( aRay.m_Origin.x > m_max.x) || ( aRay.m_Origin.y > m_max.y)
@ -896,7 +896,7 @@ bool CBBOX::Intersect( const RAY& aRay ) const
}
case MOO:
case RAY_CLASSIFICATION::MOO:
{
if( ( aRay.m_Origin.x < m_min.x)
|| ( aRay.m_Origin.y < m_min.y) || ( aRay.m_Origin.y > m_max.y)
@ -907,7 +907,7 @@ bool CBBOX::Intersect( const RAY& aRay ) const
return true;
}
case POO:
case RAY_CLASSIFICATION::POO:
{
if( ( aRay.m_Origin.x > m_max.x)
|| ( aRay.m_Origin.y < m_min.y) || ( aRay.m_Origin.y > m_max.y)
@ -918,7 +918,7 @@ bool CBBOX::Intersect( const RAY& aRay ) const
return true;
}
case OMO:
case RAY_CLASSIFICATION::OMO:
{
if( ( aRay.m_Origin.y < m_min.y)
|| ( aRay.m_Origin.x < m_min.x) || ( aRay.m_Origin.x > m_max.x)
@ -929,7 +929,7 @@ bool CBBOX::Intersect( const RAY& aRay ) const
return true;
}
case OPO:
case RAY_CLASSIFICATION::OPO:
{
if( ( aRay.m_Origin.y > m_max.y)
|| ( aRay.m_Origin.x < m_min.x) || ( aRay.m_Origin.x > m_max.x)
@ -941,7 +941,7 @@ bool CBBOX::Intersect( const RAY& aRay ) const
}
case OOM:
case RAY_CLASSIFICATION::OOM:
{
if( ( aRay.m_Origin.z < m_min.z)
|| ( aRay.m_Origin.x < m_min.x) || ( aRay.m_Origin.x > m_max.x)
@ -952,7 +952,7 @@ bool CBBOX::Intersect( const RAY& aRay ) const
return true;
}
case OOP:
case RAY_CLASSIFICATION::OOP:
{
if( ( aRay.m_Origin.z > m_max.z)
|| ( aRay.m_Origin.x < m_min.x) || ( aRay.m_Origin.x > m_max.x)

Some files were not shown because too many files have changed in this diff Show More