summaryrefslogtreecommitdiffstats
path: root/rwsdk/include/d3d8/rppvs.h
diff options
context:
space:
mode:
Diffstat (limited to 'rwsdk/include/d3d8/rppvs.h')
-rw-r--r--rwsdk/include/d3d8/rppvs.h395
1 files changed, 0 insertions, 395 deletions
diff --git a/rwsdk/include/d3d8/rppvs.h b/rwsdk/include/d3d8/rppvs.h
deleted file mode 100644
index 29fc2343..00000000
--- a/rwsdk/include/d3d8/rppvs.h
+++ /dev/null
@@ -1,395 +0,0 @@
-/*
- * Potentially Visible Set plug-in
- */
-
-/**********************************************************************
- *
- * file : rppvs.h
- *
- * abstract : handle culling of worldsectors in RenderWare
- *
- **********************************************************************
- *
- * This file is a product of Criterion Software Ltd.
- *
- * This file is provided as is with no warranties of any kind and is
- * provided without any obligation on Criterion Software Ltd. or
- * Canon Inc. to assist in its use or modification.
- *
- * Criterion Software Ltd. will not, under any
- * circumstances, be liable for any lost revenue or other damages arising
- * from the use of this file.
- *
- * Copyright (c) 2001 Criterion Software Ltd.
- * All Rights Reserved.
- *
- * RenderWare is a trademark of Canon Inc.
- *
- ************************************************************************/
-
-#ifndef _RPPVS_H
-#define _RPPVS_H
-
-/**
- * \defgroup rppvs RpPVS
- * \ingroup rpplugin
- *
- * Geometric Potentially Visible Set Plugin for RenderWare Graphics.
- */
-
-/****************************************************************************
- Defines
- */
-
-typedef RwUInt8 RpPVSVisMap;
-
-#define PVSFROMWORLDSECTOR(sector) \
- ((RpPVS *)(((char *)(sector))+rpPVSGlobals.sectorOffset))
-
-#define WORLDSECTORFROMPVS(pvs) \
- ((RpWorldSector *)(((char *)(pvs))-rpPVSGlobals.sectorOffset))
-
-#define PVSFROMCONSTWORLDSECTOR(sector) \
- ((const RpPVS *)(((const char *)(sector))+rpPVSGlobals.sectorOffset))
-
-
-#define PVSCACHEFROMWORLD(world) \
- ((RpPVSCache *)(((char *)(world))+rpPVSGlobals.worldOffset))
-#define PVSCACHEFROMCONSTWORLD(world) \
- ((const RpPVSCache *)(((const char *)(world))+rpPVSGlobals.worldOffset))
-
-#define PVSVISMAPSETSECTOR(_vismap, _id) \
- (_vismap)[(_id) >> 3] |= (1 << ((_id) & 7))
-
-#define PVSVISMAPUNSETSECTOR(_vismap, _id) \
- (_vismap)[(_id) >> 3] ^= (1 << ((_id) & 7))
-
-#define PVSVISMAPGETSECTOR(_vismap, _id) \
- ((_vismap)[(_id) >> 3] & (1 << ((_id) & 7)))
-
-#define PVSVISMAPLENGTH(_vismaplength, _nosectors) \
- (_vismaplength) = ((_nosectors + 7) >> 3)
-
-
-/* Progress callback message types */
-#define rpPVSPROGRESSSTART 20
-#define rpPVSPROGRESSUPDATE 12
-#define rpPVSPROGRESSEND 22
-
-/**
- * \ingroup rppvs
- * \ref RpPVSProgressCallBack
- * This typedef sets the callback function for sampling within a world sector.
- *
- * \param value A value between 0.0 and 100.0 to represent the percentage completion.
- * \param msg The message may take one of the following:
- *
- * \li rpPVSPROGRESSSTART
- * The PVS creation process is about to start. The argument value is equal to 0.0.
- *
- * \li rpPVSPROGRESSUPDATE
- * The PVS creation process has finished processing a subsection of the world.
- * The argument value is equal to the percentage of the world processed up to this point.
- *
- * \li rpPVSPROGRESSEND
- * The PVS creation process has ended. All world sectors have been processed.
- * The argument value is equal to 100.0.
- *
- * The progress callback may return FALSE to indicate that the generation of PVS data
- * should terminate. Otherwise, return TRUE to continue.
- *
- * The PVS plugin must be attached before using this function.
- *
- *
- */
-typedef RwBool(*RpPVSProgressCallBack) (RwInt32 msg,
- RwReal value);
-
-
-/**
- * \ingroup rppvs
- * \ref RpPVSCallBack
- * This typedef sets the callback function for sampling within a world sector.
- *
- * \param worldSector A pointer to the \ref RpWorldSector being sampled.
- * \param box The bounding box of the region being sampled.
- * \param pData A pointer to private data for the sampling function.
- */
-typedef RpWorldSector *(*RpPVSCallBack) (RpWorldSector * worldSector,
- const RwBBox * box,
- void *pData);
-
-#define RpPVSCallback RpPVSCallBack
-
-typedef struct _RpPVSCallBack _RpPVSCallBack;
-struct _RpPVSCallBack
-{
- RpPVSCallBack callback;
- void *data;
-};
-
-enum _rpPVSPartitionId
-{
- rpNAPVSPARTITIONID = 0,
- rpPVSFRONT,
- rpPVSBACK,
- rpPVSSPLIT,
- rpPVSCOPLANAR,
- rpPVSPARTITIONIDFORCEENUMSIZEINT = RWFORCEENUMSIZEINT
-};
-typedef enum _rpPVSPartitionId _rpPVSPartitionId;
-
-typedef struct _rpPVSPolyList _rpPVSPolyList;
-typedef struct _rpPVSPolyList *_rpPVSPolyListPtr;
-
-typedef struct _rpPVSPoly _rpPVSPoly;
-typedef struct _rpPVSPoly *_rpPVSPolyPtr;
-
-typedef struct _rpPVSPlaneEq _rpPVSPlaneEq;
-struct _rpPVSPlaneEq
-{
- RwReal x;
- RwReal y;
- RwReal z;
- RwReal w;
-
- RwReal l; /* recip of length of the normal */
-
- _rpPVSPartitionId lastresult; /* temp: stores result of last polygon wrt this plane */
-};
-
-typedef struct
-{
- RwInt32 x;
- RwInt32 y;
- RwInt32 z;
-}RwV3i;
-
-typedef struct _rpPVSPolyRecord _rpPVSPolyRecord;
-struct _rpPVSPolyRecord
-{
- RwBool original; /* True if not a fragment */
- RwReal priority; /* Used for sorting, lower values higher priority */
- _rpPVSPolyListPtr parent; /* Unique pointer to original parent */
- _rpPVSPolyPtr geom; /* corners of the poly */
- _rpPVSPlaneEq plane; /* plane equation of the poly */
- RwInt32 home; /* world sector id in range 0..numsectors */
- RpWorldSector *homeaddr; /* world sector pointer */
- RwBool translucent;
-
- RwBool hasbeenclipper; /* Used during WA creation */
-
- /* used by proximity culling, calculated once */
- RwV3d centroid;
- RwReal radius;
- RwV3d extreme; /* the vertex furthest away from the centroid */
-
- RwReal coneRadius; /* Used during clipping only */
-
-};
-
-struct _rpPVSPoly
-{
- RwV3d v;
- _rpPVSPoly *next;
-
- RwInt32 pscalar; /* Used during clipping only */
- RwReal scalar; /* Used during clipping only */
- _rpPVSPlaneEq shadowPlane; /* Used during clipping only */
-};
-
-struct _rpPVSPolyList
-{
- _rpPVSPolyRecord data;
- _rpPVSPolyList *next;
-};
-
-typedef struct RpPVS RpPVS;
-struct RpPVS
-{
- RwInt32 sectorID; /* Id of the sector */
- RwInt32 vismaplength; /* Length of vismap */
- RwInt32 sampleKey; /* Currently unused, for future use */
-
- RpPVSVisMap *vismap;
-
- _rpPVSPolyListPtr sectailpoly; /* Pointer to last polygon in polygons list that is in this sector */
-
- _rpPVSPartitionId potential; /* temp: is sector in out or split from current shadow volume - for heirarchical clip */
- RwUInt32 numpols;
- RwBBox sbox; /* Bounding box of the sector */
- RwBBox gbox; /* Bounding box of the geometry of the sector */
- RwReal diagonal; /* Diagonal size of bounding box of the sector */
- RwV3d centre; /* Centre of the sector */
- RwInt32 axessig[3]; /* sampling significance of the axes of the gbox */
-};
-
-typedef struct RpPVSCache RpPVSCache;
-struct RpPVSCache
-{
- RwBool processed; /* flag to indicate exisiting PVS data for the world */
- RwBool formatted; /* flag to indicate exisiting intermediate polygonal data for PVS generation */
-
- /* stats collection */
- RwInt32 ptotal;
- RwInt32 paccept;
-
- /* pipeline hooking */
- RwBool hooked;
-
- /* used during vismap allocation */
- RwUInt32 nextID;
-
- RwInt32 viscount;
-
- /* Used during construction */
- RpPVSProgressCallBack progressCallBack;
-
- _rpPVSPolyListPtr polygons; /* A copy of the input data set of all world polygons */
-
- RpWorldSectorCallBackRender renderCallBack;
-};
-
-typedef struct RpPVSGlobalVars RpPVSGlobalVars;
-struct RpPVSGlobalVars
-{
- RpWorld *World;
-
- RwInt32 worldOffset; /* Offset into global data */
- RwInt32 sectorOffset; /* Offset into global data */
-
- RwBool collis; /* Collision detection */
- RwBool bfc; /* Backface culling */
-
- RwInt32 NumWorldSectors;
-
- RwInt32 progress_count;
- RwReal diagonal;
-
- RwReal gran;
-
- RwInt32 InSector; /* Current sector id */
- RwV3d ViewPos; /* Current view pos */
- RpPVS *CurrPVS; /* Current PVS sector */
-};
-
-
-/****************************************************************************
- Function prototypes
- */
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-extern RpPVSGlobalVars rpPVSGlobals;
-
-extern RpWorld *
-RpPVSSetProgressCallBack(RpWorld * wpWorld,
- RpPVSProgressCallBack
- callback);
-
-extern RpWorldSector *
-RpPVSSetViewPosition(RpWorld * wpWorld,
- RwV3d * pos);
-
-extern RpWorldSector *
-RpPVSSetViewSector(RpWorld * wpWorld, RpWorldSector * spSect);
-
-extern RpWorldSector *
-RpPVSSetWorldSectorPairedVisibility(RpWorldSector * spSectA,
- RpWorldSector * spSectB,
- RwBool visible,
- RwBool mutual);
-
-extern RpWorld *
-RpPVSDestroy(RpWorld * wpWorld);
-
-extern RwBool
-RpPVSWorldSectorVisible(RpWorldSector * spSect);
-
-extern RwBool
-RpPVSPluginAttach(void);
-
-extern RwBool
-RpPVSQuery(RpWorld * wpWorld);
-
-extern RwBool
-RpPVSAtomicVisible(RpAtomic * atom);
-
-extern RpWorld *
-RpPVSStatisticsGet(RpWorld * wpWorld,
- RwInt32 * ptotal,
- RwInt32 * paccept);
-
-extern RpPVSProgressCallBack
-RpPVSGetProgressCallBack(RpWorld *
- wpWorld);
-
-extern RpWorld *
-RpPVSConstruct(RpWorld * wpWorld,
- RpPVSCallBack callback,
- void *pData);
-
-extern RpWorld*
-RpPVSConstructSector(RpWorld * wpWorld,
- RpWorldSector * spSector,
- RpPVSCallBack callback,
- void *pData);
-
-
-extern RpWorldSector *
-RpPVSGeneric(RpWorldSector * spSect,
- const RwBBox __RWUNUSED__ * box,
- void *data);
-
-extern RwBool
-RpPVSSetCollisionDetection(RwBool collis);
-
-extern RwBool
-RpPVSSetBackFaceCulling(RwBool bfc);
-
-extern RpWorld *
-RpPVSUnhook(RpWorld * wpWorld);
-
-extern RpWorld *
-RpPVSHook(RpWorld * wpWorld);
-
-extern RpWorldSector *
-RpPVSSetWorldSectorVisibility(RpWorldSector * spSect,
- RwBool visible);
-
-extern RwBool
-RpPVSSamplePOV(RwV3d * pos,
- RwBool colltest);
-
-extern RxNodeDefinition *
-RxNodeDefinitionGetPVSWorldSectorCSL(void);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-/* These functions are added for backwards compatibility... */
-#define RpPVSCreate(_wpWorld, \
- _raster, _zraster, _mindist, \
- _maxdist, _maxdepth, _callback, _pData) \
- RpPVSConstruct(_wpWorld, _callback, _pData)
-
-#define RpPVSAddPOV(_pos) \
- RpPVSSamplePOV(_pos, FALSE)
-
-#define RpPVSAddWorldSector(_sector) \
- RpPVSSetWorldSectorVisibility(_sector, TRUE)
-
-#define RpPVSAddExtraPOV(_world, _raster, _zraster, _mindist, _mazdist, _matrix) \
-MACRO_START \
-{ \
- rpPVSGlobals.World = (_world); \
- RpPVSSamplePOV(&((_matrix)->pos), TRUE); \
-} \
-MACRO_STOP
-
-
-#endif /* _RPPVS_H */