X-Git-Url: http://de.git.xonotic.org/?p=xonotic%2Fnetradiant.git;a=blobdiff_plain;f=libs%2Fpicomodel.h;h=370afef92266fb994ab5b5a14aeb631ca9d30488;hp=98d5452f1a70e7d270429b82790b30380ebc10a1;hb=dcc68affa33fc45d4d49eb5bfaa92ef9f567a13c;hpb=830125fad042fad35dc029b6eb57c8156ad7e176 diff --git a/libs/picomodel.h b/libs/picomodel.h index 98d5452f..370afef9 100644 --- a/libs/picomodel.h +++ b/libs/picomodel.h @@ -43,6 +43,8 @@ extern "C" { #endif +#include + /* version */ @@ -105,6 +107,7 @@ struct picoSurface_s int numVertexes, maxVertexes; picoVec3_t *xyz; picoVec3_t *normal; + picoIndex_t *smoothingGroup; int numSTArrays, maxSTArrays; picoVec2_t **st; @@ -172,16 +175,16 @@ enum /* convenience (makes it easy to add new params to the callbacks) */ #define PM_PARAMS_CANLOAD \ - char *fileName, const void *buffer, int bufSize + const char *fileName, const void *buffer, int bufSize #define PM_PARAMS_LOAD \ - char *fileName, int frameNum, const void *buffer, int bufSize + const char *fileName, int frameNum, const void *buffer, int bufSize #define PM_PARAMS_CANSAVE \ void #define PM_PARAMS_SAVE \ - char *fileName, picoModel_t * model + const char *fileName, picoModel_t * model /* pico file format module structure */ struct picoModule_s @@ -208,14 +211,16 @@ int PicoError( void ); void PicoSetMallocFunc( void *( *func )( size_t ) ); void PicoSetFreeFunc( void ( *func )( void* ) ); -void PicoSetLoadFileFunc( void ( *func )( char*, unsigned char**, int* ) ); +void PicoSetLoadFileFunc( void ( *func )( const char*, unsigned char**, int* ) ); void PicoSetFreeFileFunc( void ( *func )( void* ) ); void PicoSetPrintFunc( void ( *func )( int, const char* ) ); const picoModule_t **PicoModuleList( int *numModules ); -picoModel_t *PicoLoadModel( char *name, int frameNum ); +picoModel_t *PicoLoadModel( const char *name, int frameNum ); +typedef size_t ( *PicoInputStreamReadFunc )( void* inputStream, unsigned char* buffer, size_t length ); +picoModel_t* PicoModuleLoadModelStream( const picoModule_t* module, void* inputStream, PicoInputStreamReadFunc inputStreamRead, size_t streamLength, int frameNum, const char *fileName ); /* model functions */ picoModel_t *PicoNewModel( void ); @@ -237,8 +242,8 @@ int PicoAdjustSurface( picoSurface_t *surface, int numVe /* setter functions */ -void PicoSetModelName( picoModel_t *model, char *name ); -void PicoSetModelFileName( picoModel_t *model, char *fileName ); +void PicoSetModelName( picoModel_t *model, const char *name ); +void PicoSetModelFileName( picoModel_t *model, const char *fileName ); void PicoSetModelFrameNum( picoModel_t *model, int frameNum ); void PicoSetModelNumFrames( picoModel_t *model, int numFrames ); void PicoSetModelData( picoModel_t *model, void *data ); @@ -253,7 +258,7 @@ void PicoSetShaderShininess( picoShader_t *shader, float void PicoSetSurfaceData( picoSurface_t *surface, void *data ); void PicoSetSurfaceType( picoSurface_t *surface, picoSurfaceType_t type ); -void PicoSetSurfaceName( picoSurface_t *surface, char *name ); +void PicoSetSurfaceName( picoSurface_t *surface, const char *name ); void PicoSetSurfaceShader( picoSurface_t *surface, picoShader_t *shader ); void PicoSetSurfaceXYZ( picoSurface_t *surface, int num, picoVec3_t xyz ); void PicoSetSurfaceNormal( picoSurface_t *surface, int num, picoVec3_t normal ); @@ -263,6 +268,7 @@ void PicoSetSurfaceIndex( picoSurface_t *surface, int num void PicoSetSurfaceIndexes( picoSurface_t *surface, int num, picoIndex_t *index, int count ); void PicoSetFaceNormal( picoSurface_t *surface, int num, picoVec3_t normal ); void PicoSetSurfaceSpecial( picoSurface_t *surface, int num, int special ); +void PicoSetSurfaceSmoothingGroup( picoSurface_t *surface, int num, picoIndex_t smoothingGroup ); /* getter functions */ @@ -330,12 +336,12 @@ picoVertexCombinationHash_t *PicoFindVertexCombinationInHashTable( picoVertexCom picoVertexCombinationHash_t *PicoAddVertexCombinationToHashTable( picoVertexCombinationHash_t **hashTable, picoVec3_t xyz, picoVec3_t normal, picoVec3_t st, picoColor_t color, picoIndex_t index ); /* specialized functions */ -int PicoFindSurfaceVertexNum( picoSurface_t *surface, picoVec3_t xyz, picoVec3_t normal, int numSTs, picoVec2_t *st, int numColors, picoColor_t *color ); +int PicoFindSurfaceVertexNum( picoSurface_t *surface, picoVec3_t xyz, picoVec3_t normal, int numSTs, picoVec2_t *st, int numColors, picoColor_t *color, picoIndex_t smoothingGroup ); void PicoFixSurfaceNormals( picoSurface_t *surface ); int PicoRemapModel( picoModel_t *model, char *remapFile ); -void PicoAddTriangleToModel( picoModel_t *model, picoVec3_t** xyz, picoVec3_t** normals, int numSTs, picoVec2_t **st, int numColors, picoColor_t **colors, picoShader_t* shader ); +void PicoAddTriangleToModel( picoModel_t *model, picoVec3_t** xyz, picoVec3_t** normals, int numSTs, picoVec2_t **st, int numColors, picoColor_t **colors, picoShader_t* shader, const char *name, picoIndex_t* smoothingGroup ); /* end marker */ #ifdef __cplusplus