#ifndef __CAM_VIS_H__
#define __CAM_VIS_H__
 
/*
 *	For _cMode.
 */
#define C_mode_MUSTSEE					1
#define C_mode_MUSTGO					2
#define C_mode_FAILURE					4
#define C_mode_MORE_CORRECT				8
 
/*
 *	For cCantTest
 */
#define C_cantest_NOTEST_NORMAL			0
#define C_cantest_TEST_NORMAL			1
 
/*------------------------------------------------------------------------------------------*/
 
extern struct tdstInternalStructurCineinfo_		gst_Ideal;
 
/*------------------------------------------------------------------------------------------*/
 
extern char			CAM_fn_cIsSectorInCollisionList(HIE_tdxHandleToSuperObject, HIE_tdxHandleToSuperObject);
extern char			CAM_fn_cSendSegmentInDynamicWorld(MTH3D_tdstVector *, MTH3D_tdstVector *, HIE_tdxHandleToSuperObject, HIE_tdxHandleToSuperObject);
extern char			CAM_fn_cSendSegment(CAM_tdstUpdateCamera *, MTH3D_tdstVector *, MTH3D_tdstVector *);
extern char			CAM_fn_cSendMultiSegment(CAM_tdstUpdateCamera *, MTH3D_tdstVector *, MTH3D_tdstVector *, MTH_tdxReal, MTH_tdxReal, long);
 
extern char			CAM_fn_cCameraCantGo(CAM_tdstUpdateCamera *, MTH3D_tdstVector *, MTH3D_tdstVector *);
extern char			CAM_fn_cCameraCantSee(CAM_tdstUpdateCamera *, MTH3D_tdstVector *, MTH3D_tdstVector *);
extern char			CAM_fn_cIsWantedPosIncorrect(CAM_tdstUpdateCamera *, MTH3D_tdstVector *, char);
 
extern MTH_tdxReal	CAM_fnx_ComputePosPound(CAM_tdstUpdateCamera *, MTH3D_tdstVector *);
extern char			CAM_fnc_IsDirectionCorrect(CAM_tdstUpdateCamera *, MTH3D_tdstVector *, MTH_tdxReal, MTH_tdxReal, char);
extern void			CAM_fn_vFillVectorArray(CAM_tdstUpdateCamera *,  char);
 
extern int			CAM_fni_ComparePosition(void *_pv_Elem1, void *_pv_Elem2);
extern char			CAM_fn_cFindCorrectPosWithDir(CAM_tdstUpdateCamera *, MTH3D_tdstVector *, MTH3D_tdstVector *, char);
extern char			CAM_fn_cFindNewGoodIdealPos(CAM_tdstUpdateCamera *, MTH3D_tdstVector *, char);
 
extern void			CAM_fn_vForceFailureVisibility(CAM_tdstUpdateCamera *);
extern void			CAM_fn_vComputeFailureVisibility(CAM_tdstUpdateCamera *);
 
extern void			CAM_fn_vTestBadDistance(CAM_tdstUpdateCamera *);
extern void			CAM_fn_vTestBadVisibility(CAM_tdstUpdateCamera	*);
extern void			CAM_fn_vTestOppositeCollision(CAM_tdstUpdateCamera *);
 
extern void			CAM_fn_vComputeCineinfoWorkForAPosition(CAM_tdstUpdateCamera *, MTH3D_tdstVector *);
extern void			CAM_fn_vComputeCineinfoCurrentForAPosition(CAM_tdstUpdateCamera *, MTH3D_tdstVector *);
extern void			CAM_fn_vMakeAsNewIdealPosition(CAM_tdstUpdateCamera *, MTH3D_tdstVector *);
 
extern char			CAM_fn_cCanResetConstraintMoveVisFailure(CAM_tdstUpdateCamera *, MTH3D_tdstVector *);
extern void			CAM_fn_vRestoreNormalState(CAM_tdstUpdateCamera *);
extern void			CAM_fn_vCheckForABetterPos(CAM_tdstUpdateCamera *);
 
#endif /* __CAM_VIS_H__ */
