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

1338 lines
57 KiB
C

/*
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
DESCRIPTION :
~~~~~~~~~~~
THIS IS AN EXAMPLE OF ACP HEADER FILES
For a given file <HeaderName>.h, all occurences of the string HEADERNAME
must be replaced with the string <HeaderName>.
For a given module, all occurences of the string MODULETAG must be replaced
with the CPA tag of the module (GLI, MTH ...) .
You must do :
#define MODULETAG_GLOBALS
in one (and only one) .c file of your Module.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*/
/* To avoid unnecessary includes : */
#ifndef __GEO_ELEMENT_H
#define __GEO_ELEMENT_H
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
/* For DLLs who are using this module : */
#undef CPA_EXPORT
#if defined(CPA_WANTS_IMPORT)
#define CPA_EXPORT __declspec(dllimport)
#elif defined(CPA_WANTS_EXPORT)
#define CPA_EXPORT __declspec(dllexport)
#else
#define CPA_EXPORT
#endif
/* For Global declaration in C files : */
#ifdef GEO_GLOBALS
#define __GEO_EXTERN extern
#else /* !GEO_GLOBALS */
#define __GEO_EXTERN
#endif /* !GEO_GLOBALS */
/*
-----------------------------------------------------------------------------
INCLUDES FILES :
Include here any other header files of your module you need !
Ex :
Note : Do Not include header files from other Modules (do this in C files
only)
-----------------------------------------------------------------------------
*/
#include "ErrGEO.h"
#include "MmgGEO.h"
#include "color.h"
#include "fmd.h"
/*#include "GeoObj.h"*/
#include "MEC/hMecMatC.h"
#include "gmt.h"
/*
-----------------------------------------------------------------------------
CONSTANT DECLARATION:
Ex :
#define MODULETAG_C_LMAX 100
-----------------------------------------------------------------------------
*/
/* ELEMENTS */
#define GEO_C_xElementNULL 0
#define GEO_C_xElementIndexedTriangles 1
//XB99/04/27
#ifndef U64
#define GEO_C_xElementFaceMapDescriptors 2
#endif U64
//End XB99/04/27
#define GEO_C_xElementSprites 3
//XB99/04/27
#ifndef U64
#define GEO_C_xElementTMeshes 4
#endif U64
//End XB99/04/27
#define GEO_C_xElementPoints 5
#define GEO_C_xElementLines 6
#define GEO_C_xElementSpheres 7
#define GEO_C_xElementAlignedBoxes 8
#define GEO_C_xElementCones 9
//XB99/04/27
#ifndef U64
#define GEO_C_xElementAltimap 11
#endif U64
//End XB99/04/27
/* Oliv' - 01/04/1998*/
/* ATTENTION : more defines in Specif folder.*/
/* ====> ATTENTION : GEO_C_xElement??????? numbers start at 128 for Specif elements !!!!! <====*/
/* EndOfOliv'*/
#define MeshFunctionSwap 0xFFFF
#define MeshFunctionEnd 0xFFFE
#ifdef USE_ALTIMAPS
/*----------------------------------------------------*/
/* ALTIMAPS*/
/*----------------------------------------------------*/
/* Direction of splitting one basic square into two triangles */
#define GEO_C_xAltiSquareSplitTLBR 1 /* from TOP-LEFT to BOTTOM-RIGHT */
#define GEO_C_xAltiSquareSplitBLTR 2 /* from BOTTOM-LEFT to TOP-RIGHT */
/* Same definition but in the other direction (TLBR == BRTL ) */
#define GEO_C_xAltiSquareSplitBRTL GEO_C_xAltiSquareSplitTLBR
#define GEO_C_xAltiSquareSplitTRBL GEO_C_xAltiSquareSplitBLTR
/* ------------ Identification of triangles --------------------------------------
TL _____ _____ _____ _____ _____ _____ _____ TR
| | |\xxxx| |\ | |\xxxx| |xxxx/| | /| |xxxx/|
| | | \xx| |xx\ | |xx\xx| |xx/ | | /xx| |xx/xx|
| | | \| |xxxx\| |xxxx\| |/ | |/xxxx| |/xxxx|
BL '-----' '-----' '-----' '-----' '-----' '-----' '-----' BR
0 1 2 3 4 8 12
We have to assume that he vertices are given in a specific order in .MOD files
They must follow this rule :
- numrotation begins from 0, at the (0, 0) relatives coordinates
- numerotation if done horizontally first, from left to right.
- At the end of the horiz. line, we start a new line one step higher
and from left to right again.
6 7 8
,---------.
| | |
3+----4----+5
| | |
'---------'
0 1 2
-------------------------------------------------------------------------------- */
#define GEO_C_xAltiSquareVoid 0
#define GEO_C_xAltiSquareTopRight 1
#define GEO_C_xAltiSquareBottomLeft 2
#define GEO_C_xAltiSquareBothTRBL 3
#define GEO_C_xAltiSquareBothBLTR GEO_C_xAltiSquareBothTRBL
#define GEO_C_xAltiSquareTopLeft 4
#define GEO_C_xAltiSquareBottomRight 8
#define GEO_C_xAltiSquareBothTLBR 12
#define GEO_C_xAltiSquareBothBRTL GEO_C_xAltiSquareBothTLBR
/*----------------------------------------------------*/
#endif /*USE_ALTIMAPS*/
/*
-----------------------------------------------------------------------------
TYPES DEFINITION :
Declare here any type you need, and constant you need to do this :
Ex : typedef struct MODULETAG_tdstToto_
{
long aLMAX_lBuffer[MODULETAG_C_LMAX];
...
} MODULETAG_tdst_Toto ;
-----------------------------------------------------------------------------
*/
typedef struct GEO_tdstTripledIndex_
{
ACP_tdxIndex a3_xIndex[3];
/*ACP_tdxIndex xA;
ACP_tdxIndex xB;
ACP_tdxIndex xC;*/
}
GEO_tdstTripledIndex ;
/*typedef struct ACP_tdxHandleOfMaterial_
{
ACP_tdxHandleOfMaterial hMat;
}
ACP_tdxHandleOfMaterial ;*/
typedef struct GEO_tdstDoubledIndex_
{
ACP_tdxIndex a2_xIndex[2];
}
GEO_tdstDoubledIndex ;
#ifndef D_THROW_COMPLEX_SPRITE
typedef struct GEO_tdstIndexedSprite_
{
ACP_tdxHandleOfSprite hSprite;
MTH2D_tdstVector stSize;
/* ANNECY JMD {*/
MTH3D_tdstVector stAxe ;
ACP_tdst2DUVValues stUVpos ;
ACP_tdst2DUVValues stUVsize ;
/*END ANNECY JMD }*/
ACP_tdxIndex xCenterPoint;
} GEO_tdstIndexedSprite;
#endif /* D_THROW_COMPLEX_SPRITE */
#ifndef D_THROW_COMPLEX_SPRITE
typedef struct GEO_tdstElementSprite_
{
GEO_tdstIndexedSprite *d_stListOfSprites;
/* ANNECY MT 20/02/98 {*/
ACP_tdxIndex xNbSprites;
ACP_tdxIndex xIndexOfParallelBox;
/* ANNECY MT }*/
/*ANNECY VL PRT 18/03/98{*/
char cFastDraw;
/*ENDANNECY VL}*/
} GEO_tdstElementSprite;
#else
typedef struct GEO_tdstElementSprite_
{
ACP_tdxHandleOfMaterial hVisualMaterial ;
MTH2D_tdstVector stSizeOfSprite;
ACP_tdxIndex xIndexOfParallelBox;
ACP_tdxIndex xCenterPoint;
short xSpriteDrawMode;
} GEO_tdstElementSprite;
#endif /* D_THROW_COMPLEX_SPRITE */
typedef struct GEO_tdstElementIndexedTriangles_
{
GMT_tdxHandleToGameMaterial hMaterial;
ACP_tdxIndex xNbFaces;
ACP_tdxIndex xNbElementUV;
GEO_tdstTripledIndex *d_stListOfFacesTripled;
GEO_tdstTripledIndex *d_stListOfFacesTripledIndexUV;
MTH3D_tdstVector *d_stListOfFacesNormals;
/*GEO_tdstColor *d_stListOfFacesReceivedLightIntensity;*/
ACP_tdst2DUVValues *d_stListOfElementUV;
ACP_tdxIndex *d_stListOfIndexUsedByThisElement;
/* ANNECY MT 20/02/98 {*/
ACP_tdxIndex xNumberOfIndexsUsed;
ACP_tdxIndex xIndexOfParallelBox;
/* ANNECY MT }*/
} GEO_tdstElementIndexedTriangles ;
typedef struct GEO_tdstFaceMapTriangle_
{
GEO_tdstTripledIndex stFaceTripled;
ACP_tdxHandleOfFMD hFaceMapDescriptor;
} GEO_tdstFaceMapTriangle;
typedef struct GEO_tdstElementFaceMapDescriptors_
{
ACP_tdxIndex xNbFaces;
GEO_tdstFaceMapTriangle *d_stListOfFacesQuadrupled;
MTH3D_tdstVector *d_stListOfFacesNormals;
/* GEO_tdstColor *d_stListOfFacesReceivedLightIntensity;*/
/* ANNECY MT 20/02/98 {*/
ACP_tdxIndex xIndexOfParallelBox;
/* ANNECY MT }*/
} GEO_tdstElementFaceMapDescriptors;
typedef struct GEO_tdstElementTMeshes_
{
/* ACP_tdxHandleOfMaterial hMaterial;*/
GMT_tdxHandleToGameMaterial hMaterial;
ACP_tdxIndex xNbMeshAtoms;
ACP_tdxIndex xNbFaces;
ACP_tdxIndex xNbUV;
ACP_tdxIndex *d_stListOfMeshAtoms;
MTH3D_tdstVector *d_stListOfFacesNormals;
/* GEO_tdstColor *d_stListOfFacesReceivedLightIntensity;*/
ACP_tdst2DUVValues *d_stListOfElementUV;
/* ANNECY MT 20/02/98 {*/
ACP_tdxIndex xIndexOfParallelBox;
/* ANNECY MT }*/
} GEO_tdstElementTMeshes;
typedef struct GEO_tdstElementPoints_
{
MTH_tdxReal xFatness;
ACP_tdxIndex *d_xListOfPointIndex;
/* ACP_tdxHandleOfMaterial hMaterial;*/
GMT_tdxHandleToGameMaterial hMaterial;
/* ANNECY MT 20/02/98 {*/
ACP_tdxIndex xNbPoints;
ACP_tdxIndex xIndexOfParallelBox;
/* ANNECY MT }*/
} GEO_tdstElementPoints;
typedef struct GEO_tdstElementLines_
{
MTH_tdxReal xThickness;
GEO_tdstDoubledIndex *d_stListOfLineIndex;
/*ACP_tdxHandleOfMaterial *d_hListOfLinesMaterial;*/
GMT_tdxHandleToGameMaterial *d_hListOfLinesMaterial;
GEO_tdstColor *d_stListOfLinesReceivedLightIntensity;
/* ANNECY MT 20/02/98 {*/
ACP_tdxIndex xNbLines;
ACP_tdxIndex xIndexOfParallelBox;
/* ANNECY MT }*/
} GEO_tdstElementLines;
typedef struct GEO_tdstIndexedSphere_
{
MTH_tdxReal xRadius;
/* ACP_tdxHandleOfMaterial hMaterial;*/
GMT_tdxHandleToGameMaterial hMaterial;
ACP_tdxIndex xCenterPoint;
} GEO_tdstIndexedSphere;
typedef struct GEO_tdstElementSpheres_
{
GEO_tdstIndexedSphere *d_stListOfSpheres;
/* ANNECY MT 20/02/98 {*/
ACP_tdxIndex xNbSpheres;
ACP_tdxIndex xIndexOfParallelBox;
/* ANNECY MT }*/
} GEO_tdstElementSpheres;
typedef struct GEO_tdstIndexedAlignedBox_
{
ACP_tdxIndex xMinPoint;
ACP_tdxIndex xMaxPoint;
/* ACP_tdxHandleOfMaterial hMaterial;*/
GMT_tdxHandleToGameMaterial hMaterial;
} GEO_tdstIndexedAlignedBox;
typedef struct GEO_tdstElementAlignedBoxes_
{
GEO_tdstIndexedAlignedBox *d_stListOfAlignedBoxes;
/* ANNECY MT 20/02/98 {*/
ACP_tdxIndex xNbAlignedBoxes;
ACP_tdxIndex xIndexOfParallelBox;
/* ANNECY MT }*/
} GEO_tdstElementAlignedBoxes;
typedef struct GEO_tdstIndexedCone_
{
ACP_tdxIndex xTopPoint;
ACP_tdxIndex xBasePoint;
MTH_tdxReal xBaseRadius;
/* ACP_tdxHandleOfMaterial hMaterial;*/
GMT_tdxHandleToGameMaterial hMaterial;
} GEO_tdstIndexedCone;
typedef struct GEO_tdstElementCones_
{
GEO_tdstIndexedCone *d_stListOfCones;
/* ANNECY MT 20/02/98 {*/
ACP_tdxIndex xNbCones;
ACP_tdxIndex xIndexOfParallelBox;
/* ANNECY MT }*/
} GEO_tdstElementCones;
#ifdef USE_ALTIMAPS
/*----------------------------------------------------*/
/* ALTIMAPS*/
/*----------------------------------------------------*/
/* --- Square descripton for an Altimap --- */
typedef struct GEO_tdstAltimapSquare_
{
ACP_tdxIndex xFaceIndex; /* Contains the index of the first square's face in the map arrays */
unsigned char ucType; /* Contains the identification type for a square */
} GEO_tdstAltimapSquare;
/* --- Properties of an Altimap triangle --- */
typedef struct GEO_tdstAltimapFace_
{
MTH3D_tdstVector stNormal; /* Normal vector of the face */
ACP_tdxIndex xUVIndex[3]; /* Index of UV values of the face */
unsigned char ucMatIndex; /* Index of the right Handle of Game Material for this face */
} GEO_tdstAltimapFace;
/* --- Element Altimap --- */
typedef struct GEO_tdstElementAltimap_
{
MTH3D_tdstVector stOrigin; /* position of the Bottom-Left cornet in the scene */
MTH_tdxReal xDeltaX; /* width of an altimap square */
MTH_tdxReal xDeltaY; /* height of an altimap square */
ACP_tdxIndex xWidth; /* number of squares for X axis */
ACP_tdxIndex xDepth; /* number of squares for Y axis */
ACP_tdxIndex xNbFaces; /* number of visible triangles */
ACP_tdxIndex xNbUVValues; /* number of UV Values stored in the Altimap */
MTH_tdxReal * d_xHeight; /* Array for the height of the map's vertices */
MTH3D_tdstVector * d_stPointNormals; /* Array containing the normal vector of vertices */
ACP_tdst2DUVValues * d_stUVValues; /* Array with the different UV values for the altimap */
GEO_tdstAltimapFace * d_stFaces; /* Array describing the attributes of each face */
GEO_tdstAltimapSquare * d_stSquare; /* Array with the description of the squares */
GMT_tdxHandleToGameMaterial * d_hMaterial; /* Array of handles of Game Materials for the faces */
ACP_tdxIndex xNbMaterials; /* number of handles to game materials stored */
} GEO_tdstElementAltimap;
/*----------------------------------------------------*/
#endif /*USE_ALTIMAPS*/
/*
-----------------------------------------------------------------------------
GLOBAL VARIABLE DECLARATION :
Ex :
__MODULETAG_EXTERN <type> <variable name>
#ifdef MODULETAG_GLOBALS
= <initial values>
#endif
;
-----------------------------------------------------------------------------
*/
/*
-----------------------------------------------------------------------------
PUBLIC FUNCTIONS DECLARATION:
Ex :
extern CPA_EXPORT void MODULETAG_fn_vMyPublicFunction(void);
Note : Public functions declaration must be done in PUBLIC HEADER files (.h)
in your Inc directory
-----------------------------------------------------------------------------
*/
/*----------------------------------------------------*/
/* SPRITES*/
/*----------------------------------------------------*/
#ifndef _FIRE_DEADCODE_U64_
extern CPA_EXPORT void
GEO_vCreateElementSprite ( ACP_tdxHandleOfObject hObject ,
ACP_tdxHandleOfElement *p_hElement ,
ACP_tdxIndex xNbSprites);
#endif /* _FIRE_DEADCODE_U64_ */
#ifndef _FIRE_DEADCODE_U64_
/* ANNECY MT 23/02/98 {*/
extern CPA_EXPORT GEO_tdstElementSprite*
GEO_p_stAllocElementSprite ( ACP_tdxIndex xNbSprites );
/* END ANNECY MT }*/
#endif /* _FIRE_DEADCODE_U64_ */
extern CPA_EXPORT void
GEO_vSetSizeOfIndexedSprite (
ACP_tdxHandleOfObject hObject ,
ACP_tdxHandleOfElement hElement ,
ACP_tdxIndex xIndexOfSprite,
MTH2D_tdstVector *p_stSize);
extern CPA_EXPORT void
GEO_vGetSizeOfIndexedSprite (
ACP_tdxHandleOfObject hObject ,
ACP_tdxHandleOfElement hElement ,
ACP_tdxIndex xIndexOfSprite,
MTH2D_tdstVector *p_stSize);
extern CPA_EXPORT void
GEO_vSetCenterPointOfIndexedSprite(
ACP_tdxHandleOfObject hObject ,
ACP_tdxHandleOfElement hElement ,
ACP_tdxIndex xIndexOfSprite,
ACP_tdxIndex xCenterPoint);
extern CPA_EXPORT void
GEO_vGetCenterPointOfIndexedSprite (
ACP_tdxHandleOfObject hObject ,
ACP_tdxHandleOfElement hElement ,
ACP_tdxIndex xIndexOfSprite,
ACP_tdxIndex *p_xCenterPoint);
extern CPA_EXPORT void
GEO_vSetHandleOfIndexedSprite (
ACP_tdxHandleOfObject hObject ,
ACP_tdxHandleOfElement hElement ,
ACP_tdxIndex xIndexOfSprite,
ACP_tdxHandleOfSprite hSprite);
extern CPA_EXPORT void
GEO_vGetHandleOfIndexedSprite (
ACP_tdxHandleOfObject hObject ,
ACP_tdxHandleOfElement hElement ,
ACP_tdxIndex xIndexOfSprite,
ACP_tdxHandleOfSprite *p_hSprite);
/*ANNECY JMD {*/
extern CPA_EXPORT
void GEO_vSetConstraintOfIndexedSprite ( ACP_tdxHandleOfObject hObject,
ACP_tdxHandleOfElement hElement,
ACP_tdxIndex xIndexOfSprite,
MTH3D_tdstVector *p_stAxe) ;
extern CPA_EXPORT
void GEO_vSetUVOfIndexedSprite ( ACP_tdxHandleOfObject hObject,
ACP_tdxHandleOfElement hElement,
ACP_tdxIndex xIndexOfSprite,
ACP_tdst2DUVValues *p_stUVpos,
ACP_tdst2DUVValues *p_stUVsize) ;
/*END ANNECY JMD }*/
/*----------------------------------------------------*/
/* INDEXED TRIANGLES*/
/*----------------------------------------------------*/
extern CPA_EXPORT void
GEO_vCreateElementIndexedTriangles (
ACP_tdxHandleOfObject hObject ,
ACP_tdxHandleOfElement *p_hElement ,
ACP_tdxIndex xNbFaces,
ACP_tdxIndex xNbElementUV);
/* ANNECY MT 23/02/98 {*/
extern CPA_EXPORT GEO_tdstElementIndexedTriangles*
GEO_p_stAllocElementIndexedTriangles ( ACP_tdxIndex xNbFaces,
ACP_tdxIndex xNbElementUV);
/* END ANNECY MT }*/
extern CPA_EXPORT void
GEO_vSetIndexedUVOfFaceOfIndexedTriangles (
ACP_tdxHandleOfObject hObject ,
ACP_tdxHandleOfElement hElement ,
ACP_tdxIndex xIndexOfFace,
ACP_tdxIndex xUV1,
ACP_tdxIndex xUV2,
ACP_tdxIndex xUV3);
extern CPA_EXPORT void
GEO_vSetReceivedLightIntensityOfFaceOfIndexedTriangles (
ACP_tdxHandleOfObject hObject ,
ACP_tdxHandleOfElement hElement ,
ACP_tdxIndex xIndexOfFace,
GEO_tdstColor *p_stReceivedLightIntensity);
extern CPA_EXPORT void
GEO_vSetNormalOfIndexedTrianges (
ACP_tdxHandleOfObject hObject ,
ACP_tdxHandleOfElement hElement ,
ACP_tdxIndex xIndexOfFace,
MTH3D_tdstVector *p_stNormal);
extern CPA_EXPORT void
GEO_vSetUVOfIndexedTriangles (
ACP_tdxHandleOfObject hObject ,
ACP_tdxHandleOfElement hElement ,
ACP_tdxIndex xIndexOfUV,
ACP_tdst2DUVValues *p_stUV);
extern CPA_EXPORT void
GEO_vGetUVOfIndexedTriangles (
ACP_tdxHandleOfObject hObject ,
ACP_tdxHandleOfElement hElement ,
ACP_tdxIndex xIndexOfUV,
ACP_tdst2DUVValues *p_stUV);
extern CPA_EXPORT void
GEO_vSetMaterialOfIndexedTriangles (
ACP_tdxHandleOfObject hObject ,
ACP_tdxHandleOfElement hElement ,
ACP_tdxHandleOfMaterial hMaterial);
extern CPA_EXPORT void
GEO_vSetFaceOfIndexedTriangles (
ACP_tdxHandleOfObject hObject ,
ACP_tdxHandleOfElement hElement ,
ACP_tdxIndex xIndexOfFace,
ACP_tdxIndex xPoint1,
ACP_tdxIndex xPoint2,
ACP_tdxIndex xPoint3);
extern CPA_EXPORT void
GEO_vGetFaceOfIndexedTriangles (
ACP_tdxHandleOfObject hObject ,
ACP_tdxHandleOfElement hElement ,
ACP_tdxIndex xIndexOfFace,
ACP_tdxIndex *p_xPoint1,
ACP_tdxIndex *p_xPoint2,
ACP_tdxIndex *p_xPoint3);
extern CPA_EXPORT void
GEO_vGetIndexedUVOfFaceOfIndexedTriangles (
ACP_tdxHandleOfObject hObject ,
ACP_tdxHandleOfElement hElement ,
ACP_tdxIndex xIndexOfFace,
ACP_tdxIndex *p_xUV1,
ACP_tdxIndex *p_xUV2,
ACP_tdxIndex *p_xUV3);
extern CPA_EXPORT void
GEO_vGetColorOfFaceOfIndexedTriangles (
ACP_tdxHandleOfObject hObject ,
ACP_tdxHandleOfElement hElement ,
ACP_tdxIndex xIndexOfFace,
GEO_tdstColor *p_stReceivedLightIntensity);
extern CPA_EXPORT void
GEO_vGetNormalOfIndexedTrianges (
ACP_tdxHandleOfObject hObject ,
ACP_tdxHandleOfElement hElement ,
ACP_tdxIndex xIndexOfFace,
MTH3D_tdstVector *p_stNormal);
extern CPA_EXPORT long
GEO_lGetIndexedTriangleNbFaces(ACP_tdxHandleOfObject hobj ,ACP_tdxHandleOfElement helem ) ;
extern CPA_EXPORT void
GEO_vGetMaterialOfIndexedTriangles (
ACP_tdxHandleOfObject hObject ,
ACP_tdxHandleOfElement hElement ,
ACP_tdxHandleOfMaterial *p_hMaterial);
extern CPA_EXPORT void
GEO_vSetGameMaterialOfIndexedTriangles (
ACP_tdxHandleOfObject hObject ,
ACP_tdxHandleOfElement hElement ,
GMT_tdxHandleToGameMaterial hMaterial);
extern CPA_EXPORT void
GEO_vGetGameMaterialOfIndexedTriangles (
ACP_tdxHandleOfObject hObject ,
ACP_tdxHandleOfElement hElement ,
GMT_tdxHandleToGameMaterial *p_hMaterial);
/*----------------------------------------------------*/
/* FACE MAP DESCRIPTOR*/
/*----------------------------------------------------*/
extern CPA_EXPORT void
GEO_xCreateElementFaceMap (
ACP_tdxHandleOfObject hObject ,
ACP_tdxHandleOfElement *p_hElement ,
ACP_tdxIndex xNbFaces);
/* ANNECY MT 23/02/98 {*/
extern CPA_EXPORT GEO_tdstElementFaceMapDescriptors*
GEO_p_stAllocElementFaceMap ( ACP_tdxIndex xNbFaces );
/* END ANNECY MT }*/
extern CPA_EXPORT void
GEO_xSetFaceOfElementFaceMap (
ACP_tdxHandleOfObject hObject ,
ACP_tdxHandleOfElement hElement ,
ACP_tdxIndex xIndexOfFace,
ACP_tdxIndex xPoint1,
ACP_tdxIndex xPoint2,
ACP_tdxIndex xPoint3,
ACP_tdxHandleOfFMD hFaceMapDescriptor);
extern CPA_EXPORT void
GEO_xGetFaceOfElementFaceMap (
ACP_tdxHandleOfObject hObject ,
ACP_tdxHandleOfElement hElement ,
ACP_tdxIndex xIndexOfFace,
ACP_tdxIndex *p_xPoint1,
ACP_tdxIndex *p_xPoint2,
ACP_tdxIndex *p_xPoint3,
ACP_tdxHandleOfFMD *p_hFaceMapDescriptor);
extern CPA_EXPORT void
GEO_xSetNormalOfFaceOfElementFaceMap (
ACP_tdxHandleOfObject hObject ,
ACP_tdxHandleOfElement hElement ,
ACP_tdxIndex xIndexOfFace,
MTH3D_tdstVector *p_stNormal);
extern CPA_EXPORT void
GEO_xGetNormalOfFaceOfElementFaceMap (
ACP_tdxHandleOfObject hObject ,
ACP_tdxHandleOfElement hElement ,
ACP_tdxIndex xIndexOfFace,
MTH3D_tdstVector *p_stNormal);
extern CPA_EXPORT void
GEO_xSetColorOfFaceOfElementFaceMap (
ACP_tdxHandleOfObject hObject ,
ACP_tdxHandleOfElement hElement ,
ACP_tdxIndex xIndexOfFace,
GEO_tdstColor *p_stReceivedLightIntensity);
extern CPA_EXPORT void
GEO_xGetColorOfFaceOfElementFaceMap (
ACP_tdxHandleOfObject hObject ,
ACP_tdxHandleOfElement hElement ,
ACP_tdxIndex xIndexOfFace,
GEO_tdstColor *p_stReceivedLightIntensity);
/*----------------------------------------------------*/
/* TMESHES*/
/*----------------------------------------------------*/
extern CPA_EXPORT void
GEO_xCreateElementTMesh (
ACP_tdxHandleOfObject hObject ,
ACP_tdxHandleOfElement *p_hElement ,
ACP_tdxIndex xNumberOfMeshAtoms ,
ACP_tdxIndex xNumberOfUV ,
ACP_tdxIndex xNumberOfFaces);
/* ANNECY MT 23/02/98 {*/
extern CPA_EXPORT GEO_tdstElementTMeshes*
GEO_p_stAllocElementTMeshes ( ACP_tdxIndex xNumberOfMeshAtoms ,
ACP_tdxIndex xNumberOfUV ,
ACP_tdxIndex xNumberOfFaces);
/* END ANNECY MT }*/
extern CPA_EXPORT void
GEO_xSetAtomOfElementTMesh (
ACP_tdxHandleOfObject hObject ,
ACP_tdxHandleOfElement hElement ,
ACP_tdxIndex xIndexOfMeshAtom,
ACP_tdxIndex xMeshAtom);
extern CPA_EXPORT void
GEO_xGetAtomOfElementTMesh (
ACP_tdxHandleOfObject hObject ,
ACP_tdxHandleOfElement hElement ,
ACP_tdxIndex xIndexOfMeshAtom,
ACP_tdxIndex *p_xMeshAtom);
extern CPA_EXPORT void
GEO_xSetUVOfAtomOfElementTMesh (
ACP_tdxHandleOfObject hObject ,
ACP_tdxHandleOfElement hElement ,
ACP_tdxIndex xIndexOfMeshAtom,
ACP_tdst2DUVValues *p_stUV);
extern CPA_EXPORT void
GEO_xGetUVOfAtomOfElementTMesh (
ACP_tdxHandleOfObject hObject ,
ACP_tdxHandleOfElement hElement ,
ACP_tdxIndex xIndexOfMeshAtom,
ACP_tdst2DUVValues *p_stUV);
extern CPA_EXPORT void
GEO_xSetNormalOfFaceOfTMesh (
ACP_tdxHandleOfObject hObject ,
ACP_tdxHandleOfElement hElement ,
ACP_tdxIndex xIndexOfFace,
MTH3D_tdstVector *p_stNormal);
extern CPA_EXPORT void
GEO_xGetNormalOfFaceOfTMesh (
ACP_tdxHandleOfObject hObject ,
ACP_tdxHandleOfElement hElement ,
ACP_tdxIndex xIndexOfFace,
MTH3D_tdstVector *p_stNormal);
extern CPA_EXPORT void
GEO_xSetColorOfFaceOfTMesh (
ACP_tdxHandleOfObject hObject ,
ACP_tdxHandleOfElement hElement ,
ACP_tdxIndex xIndexOfFace,
GEO_tdstColor *p_stReceivedLightIntensity);
extern CPA_EXPORT void
GEO_xGetColorOfFaceOfTMesh (
ACP_tdxHandleOfObject hObject ,
ACP_tdxHandleOfElement hElement ,
ACP_tdxIndex xIndexOfFace,
GEO_tdstColor *p_stReceivedLightIntensity);
/*----------------------------------------------------*/
/* POINTS*/
/*----------------------------------------------------*/
extern CPA_EXPORT void
GEO_xCreateElementPoints ( ACP_tdxHandleOfObject hObject ,
ACP_tdxHandleOfElement *p_hElement ,
ACP_tdxIndex xNumberOfPoints);
/* ANNECY MT 23/02/98 {*/
extern CPA_EXPORT GEO_tdstElementPoints*
GEO_p_stAllocElementPoints ( ACP_tdxIndex xNumberOfPoints);
/* END ANNECY MT }*/
extern CPA_EXPORT void
GEO_xSetFatnessOfElementPoints (ACP_tdxHandleOfObject hObject ,
ACP_tdxHandleOfElement hElement ,
MTH_tdxReal xFatness);
extern CPA_EXPORT MTH_tdxReal
GEO_xGetFatnessOfElementPoints (ACP_tdxHandleOfObject hObject ,
ACP_tdxHandleOfElement hElement );
extern CPA_EXPORT ACP_tdxIndex
GEO_xGetIndexOfElementPoints (ACP_tdxHandleOfObject hObject,
ACP_tdxHandleOfElement hElement,
ACP_tdxIndex xNumberOfPoint);
extern CPA_EXPORT void
GEO_xSetIndexOfElementPoints (ACP_tdxHandleOfObject hObject,
ACP_tdxHandleOfElement hElement,
ACP_tdxIndex xNumberOfPoint,
ACP_tdxIndex xIndexOfPoint);
extern CPA_EXPORT ACP_tdxHandleOfMaterial
GEO_xGetMaterialOfElementPoints (ACP_tdxHandleOfObject hObject,
ACP_tdxHandleOfElement hElement);
extern CPA_EXPORT void
GEO_xSetMaterialOfElementPoints (ACP_tdxHandleOfObject hObject,
ACP_tdxHandleOfElement hElement,
ACP_tdxHandleOfMaterial hMaterial);
extern CPA_EXPORT GMT_tdxHandleToGameMaterial
GEO_xGetGameMaterialOfElementPoints (ACP_tdxHandleOfObject hObject,
ACP_tdxHandleOfElement hElement);
extern CPA_EXPORT void
GEO_xSetGameMaterialOfElementPoints (ACP_tdxHandleOfObject hObject,
ACP_tdxHandleOfElement hElement,
GMT_tdxHandleToGameMaterial hMaterial);
/*----------------------------------------------------*/
/* LINES*/
/*----------------------------------------------------*/
extern CPA_EXPORT void
GEO_xCreateElementLines ( ACP_tdxHandleOfObject hObject ,
ACP_tdxHandleOfElement *p_hElement ,
ACP_tdxIndex xNumberOfLines);
/* ANNECY MT 23/02/98 {*/
extern CPA_EXPORT GEO_tdstElementLines*
GEO_p_stAllocElementLines ( ACP_tdxIndex xNumberOfLines);
/* END ANNECY MT }*/
extern CPA_EXPORT void
GEO_xSetThicknessOfElementLines (ACP_tdxHandleOfObject hObject ,
ACP_tdxHandleOfElement hElement ,
MTH_tdxReal xThickness);
extern CPA_EXPORT MTH_tdxReal
GEO_xGetThicknessOfElementLines (ACP_tdxHandleOfObject hObject ,
ACP_tdxHandleOfElement hElement );
extern CPA_EXPORT void
GEO_xSetIndexOfElementLines (ACP_tdxHandleOfObject hObject ,
ACP_tdxHandleOfElement hElement ,
ACP_tdxIndex xLineToSet,
GEO_tdstDoubledIndex *p_xIndexNumber);
extern CPA_EXPORT void
GEO_xGetIndexOfElementLines (ACP_tdxHandleOfObject hObject ,
ACP_tdxHandleOfElement hElement ,
ACP_tdxIndex xLineToGet,
GEO_tdstDoubledIndex *p_xIndexNumber);
extern CPA_EXPORT void
GEO_xSetMaterialOfElementLines (ACP_tdxHandleOfObject hObject ,
ACP_tdxHandleOfElement hElement ,
ACP_tdxIndex xLineToSet,
ACP_tdxHandleOfMaterial hMaterial);
extern CPA_EXPORT void
GEO_xGetMaterialOfElementLines (ACP_tdxHandleOfObject hObject ,
ACP_tdxHandleOfElement hElement ,
ACP_tdxIndex xLineToGet,
ACP_tdxHandleOfMaterial *p_hMaterial);
extern CPA_EXPORT void
GEO_xSetGameMaterialOfElementLines (ACP_tdxHandleOfObject hObject ,
ACP_tdxHandleOfElement hElement ,
ACP_tdxIndex xLineToSet,
GMT_tdxHandleToGameMaterial hMaterial);
extern CPA_EXPORT void
GEO_xGetGameMaterialOfElementLines (ACP_tdxHandleOfObject hObject ,
ACP_tdxHandleOfElement hElement ,
ACP_tdxIndex xLineToGet,
GMT_tdxHandleToGameMaterial *p_hMaterial);
/*----------------------------------------------------*/
/* SPHERES*/
/*----------------------------------------------------*/
extern CPA_EXPORT void
GEO_vCreateElementSpheres ( ACP_tdxHandleOfObject hObject,
ACP_tdxHandleOfElement *p_hElement,
ACP_tdxIndex xNbSpheres );
/* ANNECY MT 23/02/98 {*/
extern CPA_EXPORT GEO_tdstElementSpheres*
GEO_p_stAllocElementSpheres ( ACP_tdxIndex xNumberOfSpheres);
/* END ANNECY MT }*/
extern CPA_EXPORT void
GEO_vSetCenterPointOfIndexedSphere ( ACP_tdxHandleOfObject hObject,
ACP_tdxHandleOfElement hElement,
ACP_tdxIndex xNumberOfSphere,
ACP_tdxIndex xIndexOfPoint );
extern CPA_EXPORT ACP_tdxIndex
GEO_xGetCenterPointOfIndexedSphere ( ACP_tdxHandleOfObject hObject,
ACP_tdxHandleOfElement hElement,
ACP_tdxIndex xNumberOfSphere );
extern CPA_EXPORT void
GEO_vSetRadiusOfIndexedSphere ( ACP_tdxHandleOfObject hObject,
ACP_tdxHandleOfElement hElement,
ACP_tdxIndex xNumberOfSphere,
MTH_tdxReal xRadius );
extern CPA_EXPORT MTH_tdxReal
GEO_xGetRadiusOfIndexedSphere ( ACP_tdxHandleOfObject hObject,
ACP_tdxHandleOfElement hElement,
ACP_tdxIndex xNumberOfSphere );
extern CPA_EXPORT void
GEO_vSetMaterialOfIndexedSphere ( ACP_tdxHandleOfObject hObject,
ACP_tdxHandleOfElement hElement,
ACP_tdxIndex xNumberOfSphere,
ACP_tdxHandleOfMaterial hMaterial );
extern CPA_EXPORT ACP_tdxHandleOfMaterial
GEO_hGetMaterialOfIndexedSphere ( ACP_tdxHandleOfObject hObject,
ACP_tdxHandleOfElement hElement,
ACP_tdxIndex xNumberOfSphere );
extern CPA_EXPORT void
GEO_vSetGameMaterialOfIndexedSphere ( ACP_tdxHandleOfObject hObject,
ACP_tdxHandleOfElement hElement,
ACP_tdxIndex xNumberOfSphere,
GMT_tdxHandleToGameMaterial hMaterial );
extern CPA_EXPORT GMT_tdxHandleToGameMaterial
GEO_hGetGameMaterialOfIndexedSphere ( ACP_tdxHandleOfObject hObject,
ACP_tdxHandleOfElement hElement,
ACP_tdxIndex xNumberOfSphere );
/*----------------------------------------------------*/
/* ALIGNED BOXES*/
/*----------------------------------------------------*/
extern CPA_EXPORT void
GEO_vCreateElementAlignedBoxes ( ACP_tdxHandleOfObject hObject,
ACP_tdxHandleOfElement *p_hElement,
ACP_tdxIndex xNbAlignedBoxes );
/* ANNECY MT 23/02/98 {*/
extern CPA_EXPORT GEO_tdstElementAlignedBoxes*
GEO_p_stAllocElementAlignedBoxes ( ACP_tdxIndex xNumberOfAlignedBoxes );
/* END ANNECY MT }*/
extern CPA_EXPORT void
GEO_vSetMinMaxPointOfIndexedAlignedBox ( ACP_tdxHandleOfObject hObject,
ACP_tdxHandleOfElement hElement,
ACP_tdxIndex xNumberOfAlignedBox,
ACP_tdxIndex xMinPoint,
ACP_tdxIndex xMaxPoint );
extern CPA_EXPORT void
GEO_vGetMinMaxPointOfIndexedAlignedBox ( ACP_tdxHandleOfObject hObject,
ACP_tdxHandleOfElement hElement,
ACP_tdxIndex xNumberOfAlignedBox,
ACP_tdxIndex *p_xMinPoint,
ACP_tdxIndex *p_xMaxPoint );
extern CPA_EXPORT void
GEO_vSetMaterialOfIndexedAlignedBox ( ACP_tdxHandleOfObject hObject,
ACP_tdxHandleOfElement hElement,
ACP_tdxIndex xNumberOfAlignedBox,
ACP_tdxHandleOfMaterial hMaterial );
extern CPA_EXPORT ACP_tdxHandleOfMaterial
GEO_vGetMaterialOfIndexedAlignedBox ( ACP_tdxHandleOfObject hObject,
ACP_tdxHandleOfElement hElement,
ACP_tdxIndex xNumberOfAlignedBox );
extern CPA_EXPORT void
GEO_vSetGameMaterialOfIndexedAlignedBox ( ACP_tdxHandleOfObject hObject,
ACP_tdxHandleOfElement hElement,
ACP_tdxIndex xNumberOfAlignedBox,
GMT_tdxHandleToGameMaterial hMaterial );
extern CPA_EXPORT GMT_tdxHandleToGameMaterial
GEO_vGetGameMaterialOfIndexedAlignedBox ( ACP_tdxHandleOfObject hObject,
ACP_tdxHandleOfElement hElement,
ACP_tdxIndex xNumberOfAlignedBox );
/*----------------------------------------------------*/
/* MISC*/
/*----------------------------------------------------*/
extern CPA_EXPORT ACP_tdxIndex
GEO_lGetElementLinesNbLines( ACP_tdxHandleOfObject hObject ,
ACP_tdxHandleOfElement hElement );
extern CPA_EXPORT ACP_tdxIndex
GEO_lGetIndexedSphereNbSpheres ( ACP_tdxHandleOfObject hObject,
ACP_tdxHandleOfElement hElement);
extern CPA_EXPORT ACP_tdxIndex
GEO_lGetAlignedBoxNbBoxes ( ACP_tdxHandleOfObject hObject,
ACP_tdxHandleOfElement hElement);
extern CPA_EXPORT ACP_tdxIndex
GEO_lGetElementPointsNbPoints( ACP_tdxHandleOfObject hObject ,
ACP_tdxHandleOfElement hElement );
/*----------------------------------------------------*/
/* CONES*/
/*----------------------------------------------------*/
extern CPA_EXPORT void
GEO_vCreateElementCones ( ACP_tdxHandleOfObject hObject,
ACP_tdxHandleOfElement *p_hElement,
ACP_tdxIndex xNbCones );
/* ANNECY MT 23/02/98 {*/
extern CPA_EXPORT GEO_tdstElementCones*
GEO_p_stAllocElementCones ( ACP_tdxIndex xNumberOfCones);
/* END ANNECY MT }*/
extern CPA_EXPORT ACP_tdxIndex
GEO_lGetConeNbCones ( ACP_tdxHandleOfObject hObject,
ACP_tdxHandleOfElement hElement);
extern CPA_EXPORT void
GEO_vSetPointsOfIndexedCone ( ACP_tdxHandleOfObject hObject,
ACP_tdxHandleOfElement hElement,
ACP_tdxIndex xNumberOfCone,
ACP_tdxIndex xTopPoint,
ACP_tdxIndex xBasePoint );
extern CPA_EXPORT void
GEO_vGetPointsOfIndexedCone ( ACP_tdxHandleOfObject hObject,
ACP_tdxHandleOfElement hElement,
ACP_tdxIndex xNumberOfCone,
ACP_tdxIndex *p_xTopPoint,
ACP_tdxIndex *p_xBasePoint );
extern CPA_EXPORT void
GEO_vSetRadiusOfIndexedCone ( ACP_tdxHandleOfObject hObject,
ACP_tdxHandleOfElement hElement,
ACP_tdxIndex xNumberOfCone,
MTH_tdxReal xRadius );
extern CPA_EXPORT MTH_tdxReal
GEO_xGetRadiusOfIndexedCone ( ACP_tdxHandleOfObject hObject,
ACP_tdxHandleOfElement hElement,
ACP_tdxIndex xNumberOfCone );
extern CPA_EXPORT void
GEO_vSetMaterialOfIndexedCone ( ACP_tdxHandleOfObject hObject,
ACP_tdxHandleOfElement hElement,
ACP_tdxIndex xNumberOfCone,
ACP_tdxHandleOfMaterial hMaterial );
extern CPA_EXPORT ACP_tdxHandleOfMaterial
GEO_vGetMaterialOfIndexedCone ( ACP_tdxHandleOfObject hObject,
ACP_tdxHandleOfElement hElement,
ACP_tdxIndex xNumberOfCone );
extern CPA_EXPORT void
GEO_vSetGameMaterialOfIndexedCone ( ACP_tdxHandleOfObject hObject,
ACP_tdxHandleOfElement hElement,
ACP_tdxIndex xNumberOfCone,
GMT_tdxHandleToGameMaterial hMaterial );
extern CPA_EXPORT GMT_tdxHandleToGameMaterial
GEO_vGetGameMaterialOfIndexedCone ( ACP_tdxHandleOfObject hObject,
ACP_tdxHandleOfElement hElement,
ACP_tdxIndex xNumberOfCone );
#ifdef USE_ALTIMAPS
/*----------------------------------------------------*/
/* ALTIMAPS*/
/*----------------------------------------------------*/
extern CPA_EXPORT void
GEO_vCreateElementAltimap( ACP_tdxHandleOfObject hObject,
ACP_tdxHandleOfElement *p_hElement,
ACP_tdxIndex xNbVertices,
ACP_tdxIndex xNbSquares,
ACP_tdxIndex xNbVisibleTriangles,
ACP_tdxIndex xNbUVValues,
ACP_tdxIndex xNbMaterials );
/*------------------------------------------*/
extern CPA_EXPORT void
GEO_vSetAltimapOrigin( ACP_tdxHandleOfObject hObject,
ACP_tdxHandleOfElement hElement,
MTH3D_tdstVector stOrigin );
extern CPA_EXPORT void
GEO_vGetAltimapOrigin( ACP_tdxHandleOfObject hObject,
ACP_tdxHandleOfElement hElement,
MTH3D_tdstVector *stOrigin );
/*------------------------------------------*/
extern CPA_EXPORT void
GEO_vSetAltimapSquarePattern( ACP_tdxHandleOfObject hObject,
ACP_tdxHandleOfElement hElement,
ACP_tdxIndex xWidth,
MTH_tdxReal xSquareDimX,
ACP_tdxIndex xDepth,
MTH_tdxReal xSquareDimY );
extern CPA_EXPORT void
GEO_vGetAltimapSquarePattern( ACP_tdxHandleOfObject hObject,
ACP_tdxHandleOfElement hElement,
ACP_tdxIndex *xWidth,
MTH_tdxReal *xSquareDimX,
ACP_tdxIndex *xDepth,
MTH_tdxReal *xSquareDimY );
/*------------------------------------------*/
extern CPA_EXPORT void
GEO_vSetAltimapNbUVValues( ACP_tdxHandleOfObject hObject,
ACP_tdxHandleOfElement hElement,
ACP_tdxIndex xNbUVValues );
extern CPA_EXPORT void
GEO_vGetAltimapNbUVValues( ACP_tdxHandleOfObject hObject,
ACP_tdxHandleOfElement hElement,
ACP_tdxIndex *xNbUVValues );
/*------------------------------------------*/
extern CPA_EXPORT void
GEO_vSetAltimapNbFaces( ACP_tdxHandleOfObject hObject,
ACP_tdxHandleOfElement hElement,
ACP_tdxIndex xNbFace );
extern CPA_EXPORT void
GEO_vGetAltimapNbFaces( ACP_tdxHandleOfObject hObject,
ACP_tdxHandleOfElement hElement,
ACP_tdxIndex *xNbFace );
/*------------------------------------------*/
extern CPA_EXPORT void
GEO_vSetAltimapVertexHeight( ACP_tdxHandleOfObject hObject,
ACP_tdxHandleOfElement hElement,
ACP_tdxIndex xNumPoint,
MTH_tdxReal xHeight );
extern CPA_EXPORT void
GEO_vGetAltimapVertexHeight( ACP_tdxHandleOfObject hObject,
ACP_tdxHandleOfElement hElement,
ACP_tdxIndex xNumPoint,
MTH_tdxReal *xHeight );
/*------------------------------------------*/
extern CPA_EXPORT void
GEO_vSetAltimapPointNormal( ACP_tdxHandleOfObject hObject,
ACP_tdxHandleOfElement hElement,
ACP_tdxIndex xNumPoint,
MTH3D_tdstVector stNormal );
extern CPA_EXPORT void
GEO_vGetAltimapPointNormal( ACP_tdxHandleOfObject hObject,
ACP_tdxHandleOfElement hElement,
ACP_tdxIndex xNumPoint,
MTH3D_tdstVector *stNormal );
/*------------------------------------------*/
extern CPA_EXPORT void
GEO_vSetAltimapSquare( ACP_tdxHandleOfObject hObject,
ACP_tdxHandleOfElement hElement,
ACP_tdxIndex xNumSquare,
unsigned char ucTypeOfSquare,
ACP_tdxIndex xIndexOfFirstSquareTriangle );
extern CPA_EXPORT void
GEO_vGetAltimapSquare( ACP_tdxHandleOfObject hObject,
ACP_tdxHandleOfElement hElement,
ACP_tdxIndex xNumSquare,
unsigned char *ucTypeOfSquare,
ACP_tdxIndex *xIndexOfFirstSquareTriangle );
/*------------------------------------------*/
extern CPA_EXPORT void
GEO_vSetAltimapUVValue( ACP_tdxHandleOfObject hObject,
ACP_tdxHandleOfElement hElement,
ACP_tdxIndex xNumUV,
ACP_tdst2DUVValues stUV );
extern CPA_EXPORT void
GEO_vGetAltimapUVValue( ACP_tdxHandleOfObject hObject,
ACP_tdxHandleOfElement hElement,
ACP_tdxIndex xNumUV,
ACP_tdst2DUVValues *stUV );
/*------------------------------------------*/
extern CPA_EXPORT void
GEO_vSetAltimapNbMaterials( ACP_tdxHandleOfObject hObject,
ACP_tdxHandleOfElement hElement,
ACP_tdxIndex xNbMaterials );
extern CPA_EXPORT void
GEO_vGetAltimapNbMaterials( ACP_tdxHandleOfObject hObject,
ACP_tdxHandleOfElement hElement,
ACP_tdxIndex *xNbMaterials );
/*------------------------------------------*/
extern CPA_EXPORT void
GEO_vSetAltimapFaceNormal( ACP_tdxHandleOfObject hObject,
ACP_tdxHandleOfElement hElement,
ACP_tdxIndex xNumFace,
MTH3D_tdstVector stNormal );
extern CPA_EXPORT void
GEO_vGetAltimapFaceNormal( ACP_tdxHandleOfObject hObject,
ACP_tdxHandleOfElement hElement,
ACP_tdxIndex xNumFace,
MTH3D_tdstVector *stNormal );
/*------------------------------------------*/
extern CPA_EXPORT void
GEO_vSetAltimapFaceUVIndex( ACP_tdxHandleOfObject hObject,
ACP_tdxHandleOfElement hElement,
ACP_tdxIndex xNumFace,
ACP_tdxIndex xUVIndex1,
ACP_tdxIndex xUVIndex2,
ACP_tdxIndex xUVIndex3 );
extern CPA_EXPORT void
GEO_vGetAltimapFaceUVIndex( ACP_tdxHandleOfObject hObject,
ACP_tdxHandleOfElement hElement,
ACP_tdxIndex xNumFace,
ACP_tdxIndex *xUVIndex1,
ACP_tdxIndex *xUVIndex2,
ACP_tdxIndex *xUVIndex3 );
/*------------------------------------------*/
extern CPA_EXPORT void
GEO_vSetAltimapFaceMaterialIndex( ACP_tdxHandleOfObject hObject,
ACP_tdxHandleOfElement hElement,
ACP_tdxIndex xNumFace,
unsigned char ucMatIndex );
extern CPA_EXPORT void
GEO_vGetAltimapFaceMaterialIndex( ACP_tdxHandleOfObject hObject,
ACP_tdxHandleOfElement hElement,
ACP_tdxIndex xNumFace,
unsigned char *ucMatIndex );
/*----------------------------------------------------*/
#endif /*USE_ALTIMAPS*/
/* ANNECY MT 20/02/98 {*/
extern CPA_EXPORT void
GEO_vSetParallelBoxOfElementIndexedTriangles( ACP_tdxHandleOfObject hObject,
ACP_tdxHandleOfElement hElement,
ACP_tdxIndex xNumFace);
extern CPA_EXPORT ACP_tdxIndex
GEO_xGetParallelBoxOfElementIndexedTriangles( ACP_tdxHandleOfObject hObject,
ACP_tdxHandleOfElement hElement);
extern CPA_EXPORT void
GEO_vSetParallelBoxOfElementFaceMapDescriptors( ACP_tdxHandleOfObject hObject,
ACP_tdxHandleOfElement hElement,
ACP_tdxIndex xNumFace);
extern CPA_EXPORT ACP_tdxIndex
GEO_xGetParallelBoxOfElementFaceMapDescriptors( ACP_tdxHandleOfObject hObject,
ACP_tdxHandleOfElement hElement);
extern CPA_EXPORT void
GEO_vSetParallelBoxOfElementSprites( ACP_tdxHandleOfObject hObject,
ACP_tdxHandleOfElement hElement,
ACP_tdxIndex xNumFace);
extern CPA_EXPORT ACP_tdxIndex
GEO_xGetParallelBoxOfElementSprites( ACP_tdxHandleOfObject hObject,
ACP_tdxHandleOfElement hElement);
extern CPA_EXPORT void
GEO_vSetParallelBoxOfElementTMeshes( ACP_tdxHandleOfObject hObject,
ACP_tdxHandleOfElement hElement,
ACP_tdxIndex xNumFace);
extern CPA_EXPORT ACP_tdxIndex
GEO_xGetParallelBoxOfElementTMeshes( ACP_tdxHandleOfObject hObject,
ACP_tdxHandleOfElement hElement);
extern CPA_EXPORT void
GEO_vSetParallelBoxOfElementPoints( ACP_tdxHandleOfObject hObject,
ACP_tdxHandleOfElement hElement,
ACP_tdxIndex xNumFace);
extern CPA_EXPORT ACP_tdxIndex
GEO_xGetParallelBoxOfElementPoints( ACP_tdxHandleOfObject hObject,
ACP_tdxHandleOfElement hElement);
extern CPA_EXPORT void
GEO_vSetParallelBoxOfElementLines( ACP_tdxHandleOfObject hObject,
ACP_tdxHandleOfElement hElement,
ACP_tdxIndex xNumFace);
extern CPA_EXPORT ACP_tdxIndex
GEO_xGetParallelBoxOfElementLines( ACP_tdxHandleOfObject hObject,
ACP_tdxHandleOfElement hElement);
extern CPA_EXPORT void
GEO_vSetParallelBoxOfElementAlignedBoxes( ACP_tdxHandleOfObject hObject,
ACP_tdxHandleOfElement hElement,
ACP_tdxIndex xNumFace);
extern CPA_EXPORT ACP_tdxIndex
GEO_xGetParallelBoxOfElementAlignedBoxes( ACP_tdxHandleOfObject hObject,
ACP_tdxHandleOfElement hElement);
extern CPA_EXPORT void
GEO_vSetParallelBoxOfElementSpheres( ACP_tdxHandleOfObject hObject,
ACP_tdxHandleOfElement hElement,
ACP_tdxIndex xNumFace);
extern CPA_EXPORT ACP_tdxIndex
GEO_xGetParallelBoxOfElementSpheres( ACP_tdxHandleOfObject hObject,
ACP_tdxHandleOfElement hElement);
extern CPA_EXPORT void
GEO_vSetParallelBoxOfElementCones( ACP_tdxHandleOfObject hObject,
ACP_tdxHandleOfElement hElement,
ACP_tdxIndex xNumFace);
extern CPA_EXPORT ACP_tdxIndex
GEO_xGetParallelBoxOfElementCones( ACP_tdxHandleOfObject hObject,
ACP_tdxHandleOfElement hElement);
/* ANNECY MT }*/
/*
-----------------------------------------------------------------------------
PRIVATE FUNCTIONS DECLARATION:
Ex :
extern void MODULETAG_fn_vMyPrivateFunction(void);
Note : Private functions MUST appear ONLY in PRIVATE HEADER files (.h) in
your Src directory with source files (.c)
-----------------------------------------------------------------------------
*/
#ifdef __cplusplus
};
#endif /* __cplusplus */
#endif /* __GEO_ELEMENT_H */