summaryrefslogtreecommitdiffstats
path: root/rwsdk/include/d3d8/rpusrdat.h
diff options
context:
space:
mode:
Diffstat (limited to 'rwsdk/include/d3d8/rpusrdat.h')
-rw-r--r--rwsdk/include/d3d8/rpusrdat.h124
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 */