107 lines
3.6 KiB
C
107 lines
3.6 KiB
C
/*
|
|
0 1 2 3 4 5 6 7
|
|
01234567890123456789012345678901234567890123456789012345678901234567890123456789
|
|
--------------------------------------------------------------------------------
|
|
-- Description : Geometric object collision part
|
|
--------------------------------------------------------------------------------
|
|
-- Creation date : 22 aug 1996 Author : FPI
|
|
--------------------------------------------------------------------------------
|
|
*/
|
|
|
|
#include "acp_base.h"
|
|
#include "MTH.h"
|
|
#include "MEC.h"
|
|
#include "GMT.h"
|
|
#include "GEO.h"
|
|
#include "GLI.h"
|
|
|
|
#include "COL/CollGOUt.h"
|
|
|
|
/*
|
|
--------------------------------------------------------------------------------
|
|
-- Description : Get if there is an surfacic element in geometric object
|
|
--------------------------------------------------------------------------------
|
|
-- Creation date : 12 feb 1997 Author : FPI
|
|
--------------------------------------------------------------------------------
|
|
*/
|
|
|
|
/* test si il existe un element surfacique */
|
|
ACP_tdxBool COL_fn_bGetSurfaceInGeometricObject ( ACP_tdxHandleOfObject _hGeometricObject )
|
|
{
|
|
ACP_tdxIndex xElementIndex;
|
|
|
|
/* pour les elements */
|
|
for ( xElementIndex = 0 ; xElementIndex < _hGeometricObject->xNbElements ; xElementIndex++ )
|
|
{
|
|
switch ( _hGeometricObject->d_xListOfElementsTypes[xElementIndex] )
|
|
{
|
|
#ifdef USE_ALTIMAPS
|
|
case GEO_C_xElementAltimap :
|
|
#endif /*USE_ALTIMAPS*/
|
|
case GEO_C_xElementIndexedTriangles :
|
|
/* case GEO_C_xElementFaceMapDescriptors :*/
|
|
case GEO_C_xElementSpheres :
|
|
case GEO_C_xElementAlignedBoxes :
|
|
return TRUE;
|
|
}
|
|
}
|
|
|
|
return FALSE;
|
|
}
|
|
|
|
/*
|
|
--------------------------------------------------------------------------------
|
|
-- Description : Get if the geometric object is composed of sphere and point only
|
|
--------------------------------------------------------------------------------
|
|
-- Creation date : 26 feb 1997 Author : FPI
|
|
--------------------------------------------------------------------------------
|
|
*/
|
|
|
|
/* test si il n y a que des spheres et des points */
|
|
/* pour corriger la desoptimisation des editeurs */
|
|
ACP_tdxBool COL_fn_bGetSphereAndPointOnlyInGeometricObject ( ACP_tdxHandleOfObject _hGeometricObject )
|
|
{
|
|
ACP_tdxIndex xElementIndex;
|
|
GEO_tdstElementIndexedTriangles *p_stElementIndexedTriangles;
|
|
/* GEO_tdstElementFaceMapDescriptors *p_stElementFaceMapDescriptors;*/
|
|
GEO_tdstElementAlignedBoxes *p_stElementAlignedBoxes;
|
|
|
|
/* pour les elements */
|
|
for ( xElementIndex = 0 ; xElementIndex < _hGeometricObject->xNbElements ; xElementIndex++ )
|
|
{
|
|
switch ( _hGeometricObject->d_xListOfElementsTypes[xElementIndex] )
|
|
{
|
|
case GEO_C_xElementIndexedTriangles :
|
|
p_stElementIndexedTriangles = (GEO_tdstElementIndexedTriangles *)(_hGeometricObject->d_stListOfElements[xElementIndex]);
|
|
if ( p_stElementIndexedTriangles->xNbFaces > 0 )
|
|
{
|
|
return FALSE;
|
|
}
|
|
break;
|
|
|
|
/*
|
|
case GEO_C_xElementFaceMapDescriptors :
|
|
p_stElementFaceMapDescriptors = (GEO_tdstElementFaceMapDescriptors *)(_hGeometricObject->d_stListOfElements[xElementIndex]);
|
|
if ( p_stElementFaceMapDescriptors->xNbFaces > 0 )
|
|
{
|
|
return FALSE;
|
|
}
|
|
break;
|
|
*/
|
|
|
|
case GEO_C_xElementAlignedBoxes :
|
|
p_stElementAlignedBoxes = (GEO_tdstElementAlignedBoxes *)(_hGeometricObject->d_stListOfElements[xElementIndex]);
|
|
if ( p_stElementAlignedBoxes->xNbAlignedBoxes > 0 )
|
|
{
|
|
return FALSE;
|
|
}
|
|
break;
|
|
|
|
default :
|
|
break;
|
|
}
|
|
}
|
|
|
|
return TRUE;
|
|
}
|