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:
parent
496f3d49e4
commit
b11d52eda1
3d-viewer
3d_canvas
3d_enums.h3d_model_viewer
3d_rendering
3d_render_ogl_legacy
3d_render_raytracing
accelerators
c3d_render_createscene.cppc3d_render_raytracing.cppray.cppray.hshapes2D
cfilledcircle2d.cppcitemlayercsg2d.cppcobject2d.cppcobject2d.hcpolygon2d.cppcpolygon4pts2d.cppcring2d.cppcroundsegment2d.cppctriangle2d.cpp
shapes3D
3d_viewer
include
@ -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" ),
|
||||
|
@ -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 );
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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_
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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 ) );
|
||||
|
@ -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
|
||||
|
@ -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();
|
||||
|
||||
|
@ -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();
|
||||
|
@ -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] ) ) );
|
||||
|
@ -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 (
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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
|
||||
};
|
||||
|
||||
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
||||
|
@ -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 )] );
|
||||
}
|
||||
}
|
||||
|
@ -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;
|
||||
};
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
||||
|
@ -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
Loading…
Reference in New Issue
Block a user