 
#ifndef MATERPLANEH
#define MATERPLANEH
 
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
 
/* For DLL using these function :*/
#include "cpa_expt.h" 
 
#include "gld.h"
 
#define GLI_C_l2DPlaneIsEnable 1
#define GLI_C_lWaterPlaneHorizonIsNotInScreen 2
#define GLI_C_lWaterPlaneDoItForAll 4
#define GLI_C_lWaterPlaneCameraIsInWater 8
#define GLI_C_lWaterPlaneNoRefraction 16
#define GLI_C_lWaterPlaneNoSinusMoves 32
#define GLI_C_lWaterPlaneNoFog 64
 
extern CPA_EXPORT void GLI_vInitWaterplaneModule();
extern CPA_EXPORT void GLI_vSetWaterplaneOn();
extern CPA_EXPORT void GLI_vSetWaterplaneOff();
extern CPA_EXPORT void GLI_vSetWaterplane(struct GLD_tdstViewportAttributes_ *p_stVpt,MTH3D_tdstVector *p_stNormale,MTH_tdxReal xDistance);
extern CPA_EXPORT void GLI_vSetWaterplaneRefraction(MTH_tdxReal xRefraction);
extern CPA_EXPORT void GLI_vSetWaterplane2DMoveSize(MTH_tdxReal xSizeInPixels);
extern CPA_EXPORT void GLI_vWaterplaneEnableRefraction();
extern CPA_EXPORT void GLI_vWaterplaneDisableRefraction();
extern CPA_EXPORT void GLI_vWaterplaneEnable2DSinus();
extern CPA_EXPORT void GLI_vWaterplaneDisable2DSinus();
extern CPA_EXPORT void GLI_vSetWaterplane2DMoveDepthStart(MTH_tdxReal xDepth);
extern CPA_EXPORT void GLI_vFogWaterPlaneEffect(struct GLI_tdstInternalGlobalValuesFor3dEngine_ *p_stGlobalsParrameters,long xStart,long xNumber);
extern CPA_EXPORT void GLI_v2DWaterPlaneEffect(struct GLI_tdstInternalGlobalValuesFor3dEngine_ *p_stGlobalsParrameters,long xStart,long xNumber);
extern CPA_EXPORT void GLI_v3DWaterPlaneEffect(struct GLI_tdstInternalGlobalValuesFor3dEngine_ *p_stGlobalsParrameters,long xStart,long xNumber);
extern CPA_EXPORT void GLI_vSetWaterFog(MTH_tdxReal xDepth,GLI_tdstColor *p_stFogColor);
extern CPA_EXPORT long GLI_vIsWaterplaneEnable(struct GLI_tdstInternalGlobalValuesFor3dEngine_ *p_stGlobalsParrameters);
 
/*ANNECY VL04/03/98{*/
/*
 * function for sinus effect
 */
#define C_SinusEffect_cAffectSecondViewPort	1
#define C_SinusEffect_cUseZFactor			2
 
extern char g_cSinusEffectState;
extern char g_cSinusEffectFlag;
extern CPA_EXPORT char GLI_fn_SinusEffect_cIsSecondViewportAffected( void );
extern CPA_EXPORT void GLI_fn_SinusEffect_vSetFlag( char _cFlag );
extern CPA_EXPORT char GLI_fn_SinusEffect_vGetFlag( void );
extern CPA_EXPORT void GLI_fn_SinusEffect_vSetState( char _cState );
extern CPA_EXPORT char GLI_fn_SinusEffect_vGetState( void );
extern CPA_EXPORT void GLI_fn_SinusEffect_vSetFreq( long _lXFreq, long _lYFreq, long _lZFreq );
extern CPA_EXPORT void GLI_fn_SinusEffect_vSetAmplitude( MTH3D_tdstVector *_p_stAmpVector );
extern CPA_EXPORT void GLI_v3DSinusEffect( struct GLI_tdstInternalGlobalValuesFor3dEngine_ *_p_stGP, long _xStart, long _xNumber);
extern CPA_EXPORT void GLI_v2DSinusEffect(struct GLI_tdstInternalGlobalValuesFor3dEngine_ *p_stGlobalsParrameters,long xStart,long xNumber);
/*ENDANNECY VL}*/
 
extern CPA_EXPORT void GLI_vSetSinusEffectOnRLIAmp ( MTH_tdxReal xRed, MTH_tdxReal xGreen, MTH_tdxReal xBlue ) ;
extern CPA_EXPORT void GLI_vSetSinusEffectOnRLIBase ( MTH_tdxReal xRed, MTH_tdxReal xGreen, MTH_tdxReal xBlue ) ;
extern CPA_EXPORT void GLI_vSetSinEffetBase (MTH_tdxReal xBase) ;
extern CPA_EXPORT void GLI_vSaveSinusContext ( void ) ;
extern CPA_EXPORT void GLI_vRestoreSinusContext ( void ) ;
/*
 * function to update some effect var each trame
 */
void GLI_vUpdateEffectData( unsigned long _ulDeltaT );
 
#ifdef __cplusplus
};
#endif /* __cplusplus */
 
#endif  /* OBJECTH*/
