reman3/Rayman_X/cpa/public/GEO/Culling.h

124 lines
4.0 KiB
C

#ifndef __CULLING_H__
#define __CULLING_H__
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
/* For DLL using these function :*/
#include "cpa_expt.h"
#include "GLD.h"
#include "POS.h"
/*
=======================================================================================
define
=======================================================================================
*/
#define GEO_C_lCullingOut 0x00
#define GEO_C_lCullingLeft 0x01
#define GEO_C_lCullingRight 0x02
#define GEO_C_lCullingUp 0x04
#define GEO_C_lCullingDown 0x08
#define GEO_C_lCullingNear 0x10
#define GEO_C_lCullingFar 0x20
#define GEO_C_lCullingIntersect 0x40 /*not in nor out, but the exact intersected planes are not known*/
#define GEO_C_lCullingIn 0x7f /*In means inside all planes*/
/*
=======================================================================================
globals
=======================================================================================
*/
extern MTH_tdxReal GEO_g_xZFar;
extern MTH_tdxReal GEO_g_xZFarTransparencyZone;
extern MTH_tdxReal GEO_g_xOoZFarTransparencyZone;
extern MTH_tdxReal GEO_g_xZFarTransparencyLevel;
/*
=======================================================================================
Functions
=======================================================================================
*/
/*
* ZFar parameters access functions
*/
extern CPA_EXPORT MTH_tdxReal GEO_xGetZFar( void );
extern CPA_EXPORT void GEO_vSetZFar( MTH_tdxReal _xZ );
extern CPA_EXPORT MTH_tdxReal GEO_xGetZFarTransparencyZone( void );
extern CPA_EXPORT void GEO_vSetZFarTransparencyZone( MTH_tdxReal _xZ );
extern CPA_EXPORT MTH_tdxReal GEO_xGetZFarTransparencyLevel( void );
/*
***************************************************************************************
pre compute camera parameters for faster culling
compute clipping plane normal in global system axis to avoid object transformation
from global to camera system axis
***************************************************************************************
*/
extern CPA_EXPORT void GEO_fn_vComputeCameraParametersForCulling( GLD_tdstViewportAttributes *p_stVpt, MTH_tdxReal _xZFar );
/**********************************************************************************************/
/* Name: GEO_lCullingSphere 1.0*/
/* Goal: Return 1 if the sphere is visible.*/
/**********************************************************************************************/
extern CPA_EXPORT long GEO_lCullingSphere
(
GLD_tdstViewportAttributes *p_stVpt ,
MTH3D_tdstVector *p_stSphereCenter ,
MTH_tdxReal xRadius,
POS_tdstCompletePosition *p_stMatrix,
long _lCullingresult
);
/**********************************************************************************************/
/* Name: GEO_lCullingSphere 1.0*/
/* Goal: Return 1 if the sphere is visible.*/
extern CPA_EXPORT long GEO_lCullingGlobalSphere
(
GLD_tdstViewportAttributes *_p_stVpt,
MTH3D_tdstVector *_p_stSphereCenter,
MTH_tdxReal _xRadius,
long _lCullingresult
);
/**********************************************************************************************/
/* Name: GEO_lCullingBox 1.0*/
/* Goal: Return 1 if aligned box is visible.*/
/**********************************************************************************************/
extern CPA_EXPORT long GEO_lCullingBox
(
GLD_tdstViewportAttributes *p_stVpt,
MTH3D_tdstVector *p_stMin,
MTH3D_tdstVector *p_stMax,
long _lCullingresult
);
/**********************************************************************************************/
/* Name: GEO_lCullingSphereNoMMM*/
/* Goal: Return 1 if the sphere is visible.*/
/**********************************************************************************************/
extern CPA_EXPORT long GEO_lCullingSphereNoMMM
(
GLD_tdstViewportAttributes *p_stVpt ,
MTH3D_tdstVector *p_stShereCenter ,
MTH_tdxReal xRadius,
POS_tdstCompletePosition *p_stMatrix,
long _lCullingresult
);
#ifdef __cplusplus
} /*extern "C"*/
#endif
#endif /*__CULLING_H__ */