/*!**************************************************************************** @file PVRTBoneBatch.h @copyright Copyright (c) Imagination Technologies Limited. @brief Utility functions which process vertices. ******************************************************************************/ #ifndef _PVRTBONEBATCH_H_ #define _PVRTBONEBATCH_H_ #include "PVRTVertex.h" #include <stdlib.h> /*!*************************************************************************** Handles a batch of bones *****************************************************************************/ /*!*************************************************************************** @class CPVRTBoneBatches @brief A class for processing vertices into bone batches *****************************************************************************/ class CPVRTBoneBatches { public: int *pnBatches; /*!< Space for nBatchBoneMax bone indices, per batch */ int *pnBatchBoneCnt; /*!< Actual number of bone indices, per batch */ int *pnBatchOffset; /*!< Offset into triangle array, per batch */ int nBatchBoneMax; /*!< Stored value as was passed into Create() */ int nBatchCnt; /*!< Number of batches to render */ /*!*********************************************************************** @brief Fills the bone batch structure @param[out] pnVtxNumOut vertex count @param[out] pVtxOut Output vertices (program must free() this) @param[in,out] pui32Idx index array for triangle list @param[in] nVtxNum vertex count @param[in] pVtx vertices @param[in] nStride Size of a vertex (in bytes) @param[in] nOffsetWeight Offset in bytes to the vertex bone-weights @param[in] eTypeWeight Data type of the vertex bone-weights @param[in] nOffsetIdx Offset in bytes to the vertex bone-indices @param[in] eTypeIdx Data type of the vertex bone-indices @param[in] nTriNum Number of triangles @param[in] nBatchBoneMax Number of bones a batch can reference @param[in] nVertexBones Number of bones affecting each vertex @return PVR_SUCCESS if successful *************************************************************************/ EPVRTError Create( int * const pnVtxNumOut, char ** const pVtxOut, unsigned int * const pui32Idx, const int nVtxNum, const char * const pVtx, const int nStride, const int nOffsetWeight, const EPVRTDataType eTypeWeight, const int nOffsetIdx, const EPVRTDataType eTypeIdx, const int nTriNum, const int nBatchBoneMax, const int nVertexBones); /*!*********************************************************************** @brief Destroy the bone batch structure *************************************************************************/ void Release() { FREE(pnBatches); FREE(pnBatchBoneCnt); FREE(pnBatchOffset); nBatchCnt = 0; } }; #endif /* _PVRTBONEBATCH_H_ */ /***************************************************************************** End of file (PVRTBoneBatch.h) *****************************************************************************/