 
/* (c) Ubi Studios 1996*/
/* See Vincent Greco or Marc Villemain for any comment or question*/
 
 
 
#ifndef __HIEPICK_H__
#define __HIEPICK_H__
 
#ifdef  __cplusplus
extern "C" {
#endif
 
/* For DLL using these function :*/
#include "cpa_expt.h" 
 
 
#define HIE_C_DepthPickingObjects 3
 
 
typedef struct HIE_tdstPickInfo_
{
  HIE_tdxHandleToSuperObject hSprObject;      /* handle du super objet*/
  ACP_tdxHandleOfObject hGeoObject;
  GLI_tdstPickedObject stPickedObject;
} HIE_tdstPickInfo;
 
 
typedef HIE_tdstPickInfo HIE_aDEF_stTabOfPickInfo[HIE_C_DepthPickingObjects];
 
/*Chris 11/06/97*/
/*#define HIE_C_MaxTriangles 8
 
typedef struct HIE_tdstShadowInfo_
{
  HIE_tdxHandleToSuperObject hSprObject;      // handle du super objet
  ACP_tdxHandleOfObject hGeoObject;
  COL_tdstShadowElement a_stShadowObject[HIE_C_MaxTriangles];
  ACP_tdxIndex xNbElement;
} HIE_tdstShadowInfo;
 
typedef HIE_tdstShadowInfo HIE_aDEF_stTabOfShadowInfo[HIE_C_DepthPickingObjects];
*/
 
/*Intersection with the Visual Set*/
extern CPA_EXPORT ACP_tdxIndex HIE_xIsSuperObjectPick(GLI_tdeModePicking xModePicking,
                                    GLD_tdhDevice hDev,
                                    GLD_tdhViewport hVp,
                                    GLI_tdst2DVertex *p_stSouris2D, 
                                    HIE_tdxHandleToSuperObject hSprObj,
                                    HIE_tdstPickInfo *p_stPickInfo );
 
/*Intersection with the ZDR of the Collide Set*/
extern CPA_EXPORT ACP_tdxIndex HIE_bIntersectSemiAxeWithSuperObject(GLI_tdeModePicking xModePicking,
                                                  MTH3D_tdstVector *p_stVertexA,
                                                  MTH3D_tdstVector *p_stVertexB,
                                                  MTH3D_tdstVector *p_stVectAB,
                                                  HIE_tdxHandleToSuperObject hSprObj,
                                                  HIE_tdstPickInfo *p_stPickInfo );
 
/*Intersection with the ZDR of the Collide Set (condensed result)*/
extern CPA_EXPORT ACP_tdxBool HIE_bIntersectSemiAxeWithFirstSuperObject ( MTH3D_tdstVector *_p_stVertexA,
                                             MTH3D_tdstVector *_p_stVectAB,
                                             HIE_tdxHandleToSuperObject hSprObj,
                                             MTH3D_tdstVector *_p_stHit,
                                             MTH3D_tdstVector *_p_stNormal,
											 HIE_tdxHandleToSuperObject *_p_hSprObjHit);
 
 
 
extern CPA_EXPORT ACP_tdxIndex HIE_bIntersectSegmentWithSuperObject(MTH3D_tdstVector *p_stVertexA,
                                                  MTH3D_tdstVector *p_stVectAB,
                                                  HIE_tdxHandleToSuperObject hSprObj,
                                                  HIE_tdstPickInfo *p_stPickInfo );
 
 
/* FPU pour la camera */
extern CPA_EXPORT ACP_tdxBool HIE_bDetectIntersectSegmentWithSuperObject ( MTH3D_tdstVector *p_stVertexA,
                                                         MTH3D_tdstVector *p_stVectAB,
                                                         HIE_tdxHandleToSuperObject hSprObj );
 
extern CPA_EXPORT ACP_tdxBool fn_bDetectIntersectSegmentWithBoundingSphere(GEO_tdxHandleToMatrix _p_stCurrentMatrix, MTH3D_tdstVector *_p_stVertexA,
																		   MTH3D_tdstVector *_p_stVectAB, GEO_tdxHandleToBoundingSphere	_hBoundingSphere);
 
extern CPA_EXPORT ACP_tdxBool HIE_bIntersectSegmentWithFirstSuperObject ( MTH3D_tdstVector *_p_stVertexA,
                                             MTH3D_tdstVector *_p_stVectAB,
                                             HIE_tdxHandleToSuperObject hSprObj,
                                             MTH3D_tdstVector *_p_stHit,
                                             MTH3D_tdstVector *_p_stNormal,
											 HIE_tdxHandleToSuperObject *_p_hSprObjHit);
 
/*Chris 11/06/97*/
/*extern CPA_EXPORT 
ACP_tdxIndex HIE_bIntersectShadowSuperObject(MTH3D_tdstVector *p_stVertexA,
                                             MTH3D_tdstVector *p_stVertexB,
                                             MTH3D_tdstVector *p_stVectAB,
                                             MTH_tdxReal      _xNearDistance,
                                             HIE_tdxHandleToSuperObject _hSprObj,
																	           HIE_aDEF_stTabOfShadowInfo _a_stTabShadowInfo);
*/
#ifdef  __cplusplus
}/* extern "C" */
#endif
 
#endif /* __HIEPICK_H__ */
