diff options
Diffstat (limited to 'rwsdk/include/d3d8/rpusrdat.h')
-rw-r--r-- | rwsdk/include/d3d8/rpusrdat.h | 124 |
1 files changed, 124 insertions, 0 deletions
diff --git a/rwsdk/include/d3d8/rpusrdat.h b/rwsdk/include/d3d8/rpusrdat.h new file mode 100644 index 00000000..3665e064 --- /dev/null +++ b/rwsdk/include/d3d8/rpusrdat.h @@ -0,0 +1,124 @@ +#ifndef RPUSERDATAPLUGIN_H +#define RPUSERDATAPLUGIN_H + +/** + * \defgroup rpuserdata RpUserData + * \ingroup rpplugin + * + * User Data Plugin for RenderWare Graphics. + */ + +/* + * UserData plugin + */ + +#include <rwcore.h> +#include <rpworld.h> + +/** + * \ingroup rpuserdata + * User data formats + */ +enum RpUserDataFormat +{ + rpNAUSERDATAFORMAT = 0, + rpINTUSERDATA, /**< 32 bit int data */ + rpREALUSERDATA, /**< 32 bit float data */ + rpSTRINGUSERDATA, /**< unsigned byte pointer data */ + rpUSERDATAFORCEENUMSIZEINT = RWFORCEENUMSIZEINT +}; +typedef enum RpUserDataFormat RpUserDataFormat; + +typedef struct RpUserDataArray RpUserDataArray; + +/** + * \ingroup rpuserdata + * \struct RpUserDataArray + * A structure representing an array of user data values + */ + +struct RpUserDataArray +{ + RwChar *name; /**< Identifier for this data array */ + RpUserDataFormat format; /**< Data format of this array */ + RwInt32 numElements; /**< Number of elements in this array */ + void *data; /**< Pointer to the array data */ +}; + +#ifdef __cplusplus +extern "C" +{ +#endif + +/* Plugin API */ +extern RwBool RpUserDataPluginAttach(void); + +/* Geometry API */ +extern RwInt32 RpGeometryAddUserDataArray(RpGeometry *geometry, RwChar *name, + RpUserDataFormat format, RwInt32 numElements); +extern RpGeometry *RpGeometryRemoveUserDataArray(RpGeometry *geometry, RwInt32 index); +extern RpUserDataArray *RpGeometryGetUserDataArray(const RpGeometry *geometry, RwInt32 data); +extern RwInt32 RpGeometryGetUserDataArrayCount(const RpGeometry *geometry); + +/* World Sector API */ +extern RwInt32 RpWorldSectorAddUserDataArray(RpWorldSector *sector, RwChar *name, + RpUserDataFormat format, RwInt32 numElements); +extern RpWorldSector *RpWorldSectorRemoveUserDataArray(RpWorldSector *sector, RwInt32 index); +extern RpUserDataArray *RpWorldSectorGetUserDataArray(const RpWorldSector *sector, RwInt32 data); +extern RwInt32 RpWorldSectorGetUserDataArrayCount(const RpWorldSector *sector); + +/* RwFrame API */ +extern RwInt32 RwFrameAddUserDataArray(RwFrame *frame, RwChar *name, + RpUserDataFormat format, RwInt32 numElements); +extern RwFrame *RwFrameRemoveUserDataArray(RwFrame *frame, RwInt32 index); +extern RpUserDataArray *RwFrameGetUserDataArray(const RwFrame *frame, RwInt32 data); +extern RwInt32 RwFrameGetUserDataArrayCount(const RwFrame *frame); + +/* RwCamera API */ +extern RwInt32 RwCameraAddUserDataArray(RwCamera *camera, RwChar *name, + RpUserDataFormat format, RwInt32 numElements); +extern RwCamera *RwCameraRemoveUserDataArray(RwCamera *camera, RwInt32 index); +extern RpUserDataArray *RwCameraGetUserDataArray(const RwCamera *camera, RwInt32 data); +extern RwInt32 RwCameraGetUserDataArrayCount(const RwCamera *camera); + +/* RpLight API */ +extern RwInt32 RpLightAddUserDataArray(RpLight *light, RwChar *name, + RpUserDataFormat format, RwInt32 numElements); +extern RpLight *RpLightRemoveUserDataArray(RpLight *light, RwInt32 index); +extern RpUserDataArray *RpLightGetUserDataArray(const RpLight *light, RwInt32 data); +extern RwInt32 RpLightGetUserDataArrayCount(const RpLight *light); + +/* RpMaterial API */ +extern RwInt32 RpMaterialAddUserDataArray(RpMaterial *material, RwChar *name, + RpUserDataFormat format, RwInt32 numElements); +extern RpMaterial *RpMaterialRemoveUserDataArray(RpMaterial *material, RwInt32 index); +extern RpUserDataArray *RpMaterialGetUserDataArray(const RpMaterial *material, RwInt32 data); +extern RwInt32 RpMaterialGetUserDataArrayCount(const RpMaterial *material); + +/* RwTexture API */ +extern RwInt32 RwTextureAddUserDataArray(RwTexture *texture, RwChar *name, + RpUserDataFormat format, RwInt32 numElements); +extern RwTexture *RwTextureRemoveUserDataArray(RwTexture *texture, RwInt32 index); +extern RpUserDataArray *RwTextureGetUserDataArray(const RwTexture *texture, RwInt32 data); +extern RwInt32 RwTextureGetUserDataArrayCount(const RwTexture *texture); + +/* User Data Array API */ +extern RwChar *RpUserDataArrayGetName(RpUserDataArray *userData); +extern RpUserDataFormat RpUserDataArrayGetFormat(RpUserDataArray *userData); +extern RwInt32 RpUserDataArrayGetNumElements(RpUserDataArray *userData); + +extern RwInt32 RpUserDataArrayGetInt(RpUserDataArray *userData, RwInt32 index); +extern RwReal RpUserDataArrayGetReal(RpUserDataArray *userData, RwInt32 index); +extern RwChar *RpUserDataArrayGetString(RpUserDataArray *userData, RwInt32 index); + +extern void RpUserDataArraySetInt(RpUserDataArray *userData, RwInt32 index, RwInt32 value); +extern void RpUserDataArraySetReal(RpUserDataArray *userData, RwInt32 index, RwReal value); +extern void RpUserDataArraySetString(RpUserDataArray *userData, RwInt32 index, RwChar *value); + +extern RwInt32 RpUserDataGetFormatSize(RpUserDataFormat format); + +#ifdef __cplusplus +} +#endif + +#endif /* RPUSERDATAPLUGIN_H */ |