]> de.git.xonotic.org Git - xonotic/netradiant.git/blobdiff - libs/picomodel.h
allow undo “make detail/structural”, <3 @SpiKe, thanks @Garux, fix #76
[xonotic/netradiant.git] / libs / picomodel.h
index 98d5452f1a70e7d270429b82790b30380ebc10a1..370afef92266fb994ab5b5a14aeb631ca9d30488 100644 (file)
@@ -43,6 +43,8 @@ extern "C"
 {
 #endif
 
+#include <stddef.h>
+
 
 
 /* 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