summaryrefslogtreecommitdiffstats
path: root/rwsdk/include/d3d8/rpcollis.h
diff options
context:
space:
mode:
Diffstat (limited to 'rwsdk/include/d3d8/rpcollis.h')
-rw-r--r--rwsdk/include/d3d8/rpcollis.h372
1 files changed, 0 insertions, 372 deletions
diff --git a/rwsdk/include/d3d8/rpcollis.h b/rwsdk/include/d3d8/rpcollis.h
deleted file mode 100644
index 908fb68e..00000000
--- a/rwsdk/include/d3d8/rpcollis.h
+++ /dev/null
@@ -1,372 +0,0 @@
-
-/*****************************************************************************
- *
- * File : rpcollis.h
- *
- * Abstract : World collision plugin for 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) 2000 Criterion Software Ltd.
- * All Rights Reserved.
- *
- * RenderWare is a trademark of Canon Inc.
- *
- *****************************************************************************/
-
-#ifndef RPCOLLIS_H
-#define RPCOLLIS_H
-
-/* Doxygen plugin groups. */
-
-/**
- * \defgroup rpcollis RpCollision
- * \ingroup rpplugin
- *
- * Collision Plugin for RenderWare Graphics.
- */
-
-/******************************************************************************
- * Include files
- */
-
-#include <rwcore.h>
-#include <rpworld.h>
-
-#include "rpcollis.rpe" /* automatically generated header file */
-
-/******************************************************************************
- * Global Types
- */
-
-/**
- * \ingroup rpcollis
- * RpIntersectType, this type represents the different types of
- * primitives that can be used to intersect with an object (for example, see
- * \ref RpCollisionWorldForAllIntersections):
- */
-enum RpIntersectType
-{
- rpINTERSECTNONE = 0,
- rpINTERSECTLINE, /**<Line Intersection */
- rpINTERSECTPOINT, /**<Point Intersection */
- rpINTERSECTSPHERE, /**<Sphere Intersection */
- rpINTERSECTBOX, /**<Box intersection */
- rpINTERSECTATOMIC, /**<Atomic Intersection based on bounding sphere */
- rpINTERSECTTYPEFORCEENUMSIZEINT = RWFORCEENUMSIZEINT
-};
-typedef enum RpIntersectType RpIntersectType;
-
-/**
- * \ingroup rpcollis
- * RpIntersectData, this union type is used to specify the parameters
- * for an intersection primitive of the desired type (\ref RpIntersectType)
- */
-typedef union RpIntersectData RpIntersectData;
-union RpIntersectData
-{
- RwLine line; /**<For type rpINTERSECTLINE */
- RwV3d point; /**<For type rpINTERSECTPOINT */
- RwSphere sphere; /**<For type rpINTERSECTSPHERE */
- RwBBox box; /**<For type rpINTERSECTBOX */
- void *object; /**<For type rpINTERSECTATOMIC - this
- * should hold a pointer to the atomic */
-};
-
-typedef struct RpIntersection RpIntersection;
-/**
- * \ingroup rpcollis
- * \struct RpIntersection
- * Intersection Object. This type represents data for an
- * intersection primitive. It specifies the intersection type
- * (line, sphere, etc.) (type) and parameters describing the given type (t):
- */
-struct RpIntersection
-{
- RpIntersectData t; /**< Intersection data. Union type - one
- * of line, point, sphere or RW object */
- RpIntersectType type; /**< Intersection type - see
- * \ref RpIntersectType */
-};
-
-typedef struct RpCollisionTriangle RpCollisionTriangle;
-/**
- * \ingroup rpcollis
- * \struct RpCollisionTriangle
- * A structure representing a collision between
- * an \ref RpIntersection primitive and a triangle.
- * The collision is specified by the triangle's plane normal
- * (normal), the first triangle vertex (point), an index to the triangle in
- * the object geometry's triangle list (index) and the positions of the
- * triangle's vertices (vertices). Note all vector components are in object
- * space.
- *
- * \see RpCollisionWorldForAllIntersections
- * \see RpCollisionGeometryForAllIntersections
- * \see RpAtomicForAllIntersections
- * \see RpIntersectionCallBackWorldTriangle
- * \see RpIntersectionCallBackGeometryTriangle
- */
-struct RpCollisionTriangle
-{
- RwV3d normal; /**< Triangle normal */
- RwV3d point; /**< First triangle vertex */
- RwInt32 index; /**< Index of triangle in object (if applicable) */
- RwV3d *vertices[3]; /**< Pointers to three triangle vertices */
-};
-
-typedef struct RpCollisionBuildParam RpCollisionBuildParam;
-/**
- * \ingroup rpcollis
- * \struct RpCollisionBuildParam
- * This structure is a place-holder for parameters that may be
- * introduced in future to control the generation of collision data when using
- * the functions \ref RpCollisionWorldSectorBuildData,
- * \ref RpCollisionWorldBuildData or \ref RpCollisionGeometryBuildData.
- * Currently, a NULL pointer should be passed to these functions, as no
- * parameters are defined. If parameters are introduced, a NULL pointer will
- * indicate that default values should be used.
- */
-struct RpCollisionBuildParam
-{
- RwInt32 dummy; /**< Not used */
-};
-
-/**
- * \ingroup rpcollis
- * \typedef RpIntersectionCallBackWorldTriangle
- * \ref RpIntersectionCallBackWorldTriangle represents the function called
- * from \ref RpCollisionWorldForAllIntersections for all intersections between
- * the specified primitive and the static geometry in a given world. This
- * function should return a pointer to the current collision triangle to
- * indicate success. The callback may return NULL to terminate further
- * callbacks on the world.
- *
- * \param intersection Pointer to the intersection primitive.
- * \param sector Pointer to the world sector containing the triangle.
- * \param collTriangle Pointer to the \ref RpCollisionTriangle representing
- * the triangle in the world's static geometry that is intersected.
- * \param distance The distance to the intersection point(s).
- * Note that the distance returned depends on the intersection type and is
- * normalized for the given intersection primitive.
- * \li rpINTERSECTLINE Distance from start of line to collision
- * triangle, normalized to length of line.
- * \li rpINTERSECTSPHERE Distance of sphere's center from the collision
- * triangle along the direction of the normal, and normalized
- * to the sphere's radius (may be negative if the sphere center
- * is behind the triangle's plane with respect to the direction
- * of the normal).
- * \li rpINTERSECTBOX Distance is undefined.
- * \li rpINTERSECTATOMIC Distance of atomic's bounding-sphere center
- * from the collision triangle along the direction of the normal
- * and normalized to sphere's radius.
- * \param data User defined data pointer
- *
- * \return Pointer to the current collision triangle.
- */
-typedef RpCollisionTriangle *(*RpIntersectionCallBackWorldTriangle)
- (RpIntersection * intersection,
- RpWorldSector * sector,
- RpCollisionTriangle * collTriangle, RwReal distance, void *data);
-
-/**
- * \ingroup rpcollis
- * \typedef RpIntersectionCallBackAtomic
- * \ref RpIntersectionCallBackAtomic represents the function called from
- * \ref RpWorldForAllAtomicIntersections for all intersections between the
- * specified primitive and collision atomics in a given world. This function
- * should return the current atomic to indicate success. The callback may
- * return NULL to terminate further callbacks on the world.
- *
- * \param intersection Pointer to the intersection primitive.
- * \param sector Pointer to the world sector containing
- * the intersected triangles.
- * \param atomic Pointer to the intersected atomic.
- * \param distance The collision distance. The distance returned
- * depends on the intersection type which is defined in \ref RpIntersectType.
- * \li rpINTERSECTPOINT Distance of point from atomic's bounding
- * sphere center, normalized to sphere's radius.
- * \li rpINTERSECTLINE Distance of atomic's bounding-sphere center from
- * start of line, projected onto the line, normalized to length of line.
- * Note that by this definition, if the line starts or ends inside the
- * sphere, this distance maybe negative or greater than one.
- * \li rpINTERSECTSPHERE Distance of atomic's bounding-sphere center
- * from sphere's center, normalized to sum of spheres' radii.
- * \li rpINTERSECTBOX Distance undefined.
- * \li rpINTERSECTATOMIC Distance between atomics' bounding-sphere
- * centers, normalized to sum of spheres' radii.
- * \param data User defined data pointer.
- *
- * \return Pointer to the current atomic.
- */
-typedef RpAtomic *(*RpIntersectionCallBackAtomic)
- (RpIntersection * intersection,
- RpWorldSector * sector, RpAtomic * atomic, RwReal distance, void *data);
-
-/**
- * \ingroup rpcollis
- * \typedef RpIntersectionCallBackWorldSector
- * \ref RpIntersectionCallBackWorldSector represents the function called from
- * \ref RpWorldForAllWorldSectorIntersections for all intersections between the
- * specified primitive and world sectors in a given world. This function should
- * return the current world sector to indicate success. The callback may return
- * NULL to terminate further callbacks on the world.
- *
- * \param intersection Pointer to the intersection primitive.
- * \param sector Pointer to the world sector containing the intersected
- * polygons.
- * \param data User defined data pointer
- *
- * \return Pointer to the current world sector.
- */
-typedef RpWorldSector *(*RpIntersectionCallBackWorldSector)
- (RpIntersection * intersection, RpWorldSector * worldSector, void *data);
-
-/**
- * \ingroup rpcollis
- * \typedef RpIntersectionCallBackGeometryTriangle
- * \ref RpIntersectionCallBackGeometryTriangle represents the function called
- * from \ref RpAtomicForAllIntersections and
- * \ref RpCollisionGeometryForAllIntersections
- * for all intersections between the specified primitive and a given atomic.
- * This function should return a pointer to the current collision triangle to
- * indicate success. The callback may return NULL to terminate further
- * callbacks on the atomic.
- *
- * Note that the vertices and normal of the collision triangle are given
- * in the coordinate space of the geometry. If they are required in world
- * coordinates, they must be transformed using \ref RwV3dTransformPoints and
- * \ref RwV3dTransformVectors with the LTM of the atomic's frame. This must
- * be passed via the user-defined data if required.
- *
- * \param intersection Pointer to the intersection primitive.
- * \param collTri Pointer to the \ref RpCollisionTriangle
- * representing the triangle in the atomic that is intersected.
- * \param distance The distance to the intersection point(s).
- * Note that the distance returned depends on the intersection type and is
- * normalized for the given intersection primitive.
- * \li rpINTERSECTLINE Distance from start of line to collision
- * triangle, normalized to length of line.
- * \li rpINTERSECTSPHERE Distance of sphere's center from the collision
- * triangle along the direction of the normal, and normalized
- * to the sphere's radius (may be negative if the sphere center
- * is behind the triangle's plane with respect to the direction
- * of the normal).
- * \li rpINTERSECTATOMIC Distance of atomic's bounding-sphere center
- * from the collision triangle along the direction of the normal, and
- * normalized to sphere's radius.
- * \param data User defined data pointer
- *
- * \return Pointer to the current collision triangle.
- */
-typedef RpCollisionTriangle *(*RpIntersectionCallBackGeometryTriangle)
- (RpIntersection *intersection, RpCollisionTriangle *collTriangle,
- RwReal distance, void *data);
-
-
-/******************************************************************************
- * Plugin API Functions
- */
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-/* Plugin attachment */
-extern RwBool
-RpCollisionPluginAttach(void);
-
-/* World collisions */
-extern RpWorldSector *
-RpCollisionWorldSectorBuildData(
- RpWorldSector *worldSector,
- RpCollisionBuildParam *param);
-
-extern RpWorldSector *
-RpCollisionWorldSectorDestroyData(
- RpWorldSector *worldSector);
-
-extern RwBool
-RpCollisionWorldSectorQueryData(
- RpWorldSector *worldSector);
-
-extern RpWorld *
-RpCollisionWorldBuildData(
- RpWorld *world,
- RpCollisionBuildParam *param);
-
-extern RpWorld *
-RpCollisionWorldDestroyData(
- RpWorld *world);
-
-extern RwBool
-RpCollisionWorldQueryData(
- RpWorld *world);
-
-
-extern RpWorld *
-RpWorldForAllWorldSectorIntersections(
- RpWorld *world,
- RpIntersection *intersection,
- RpIntersectionCallBackWorldSector callBack,
- void *data);
-
-extern RpWorld *
-RpWorldForAllAtomicIntersections(
- RpWorld *world,
- RpIntersection *intersection,
- RpIntersectionCallBackAtomic callBack,
- void *data);
-
-extern RpWorld *
-RpCollisionWorldForAllIntersections(
- RpWorld *world,
- RpIntersection *intersection,
- RpIntersectionCallBackWorldTriangle callBack,
- void *data);
-
-/* Geometry and atomic collisions */
-extern RpGeometry *
-RpCollisionGeometryBuildData(
- RpGeometry *geometry,
- RpCollisionBuildParam *param);
-
-extern RwBool
-RpCollisionGeometryQueryData(
- RpGeometry *geometry);
-
-extern RpGeometry *
-RpCollisionGeometryDestroyData(
- RpGeometry *geometry);
-
-extern RpGeometry *
-RpCollisionGeometryForAllIntersections(
- RpGeometry *geometry,
- RpIntersection *intersection,
- RpIntersectionCallBackGeometryTriangle callBack,
- void *data);
-
-extern RpAtomic *
-RpAtomicForAllIntersections(
- RpAtomic *atomic,
- RpIntersection *intersection,
- RpIntersectionCallBackGeometryTriangle callBack,
- void *data);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* RPCOLLIS_H */
-