]> de.git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - model_shared.h
corrected a few LittleLongs to LittleFloat in md3 loading (EEP those were bad)
[xonotic/darkplaces.git] / model_shared.h
index 2de9ec8ff6dca8be2879d9ab6b01e25cfb4316f8..0d22a5010dc5a4455824126b3b0f6c44ed967e76 100644 (file)
@@ -61,6 +61,20 @@ skinframe_t;
 
 #define MAX_SKINS 256
 
+typedef struct overridetagname_s
+{
+       char name[MAX_QPATH];
+}
+overridetagname_t;
+
+// a replacement set of tag names, per skin
+typedef struct overridetagnameset_s
+{
+       int num_overridetagnames;
+       overridetagname_t *data_overridetagnames;
+}
+overridetagnameset_t;
+
 #define SHADOWMESHVERTEXHASH 1024
 typedef struct shadowmeshvertexhash_s
 {
@@ -83,12 +97,12 @@ typedef struct shadowmesh_s
 shadowmesh_t;
 
 
+#include "matrixlib.h"
+
 #include "model_brush.h"
 #include "model_sprite.h"
 #include "model_alias.h"
 
-#include "matrixlib.h"
-
 typedef struct model_alias_s
 {
        // LordHavoc: Q2/ZYM model support
@@ -98,6 +112,10 @@ typedef struct model_alias_s
        int                             aliasnum_meshes;
        aliasmesh_t             *aliasdata_meshes;
 
+       int                             aliasnum_tags;
+       int                             aliasnum_tagframes;
+       aliastag_t              *aliasdata_tags;
+
        // for Zymotic models
        int                             zymnum_verts;
        int                             zymnum_tris;
@@ -449,8 +467,6 @@ typedef struct model_s
        float                   radius2;
        // skin animation info
        animscene_t             *skinscenes; // [numskins]
-       // skin frame info
-       skinframe_t             *skinframes;
        // skin animation info
        animscene_t             *animscenes; // [numframes]
        // draw the model's sky polygons (only used by brush models)
@@ -472,6 +488,8 @@ typedef struct model_s
        model_brushq2_t brushq2;
        */
        model_brushq3_t brushq3;
+       // skin files can have different tags for each skin
+       overridetagnameset_t    *data_overridetagnamesforskin;
 }
 model_t;
 
@@ -526,5 +544,26 @@ void Mod_ShadowMesh_Free(shadowmesh_t *mesh);
 int Mod_LoadSkinFrame(skinframe_t *skinframe, char *basename, int textureflags, int loadpantsandshirt, int usedetailtexture, int loadglowtexture);
 int Mod_LoadSkinFrame_Internal(skinframe_t *skinframe, char *basename, int textureflags, int loadpantsandshirt, int usedetailtexture, int loadglowtexture, qbyte *skindata, int width, int height);
 
+extern cvar_t r_mipskins;
+
+typedef struct skinfileitem_s
+{
+       struct skinfileitem_s *next;
+       char name[MAX_QPATH];
+       char replacement[MAX_QPATH];
+}
+skinfileitem_t;
+
+typedef struct skinfile_s
+{
+       struct skinfile_s *next;
+       skinfileitem_t *items;
+}
+skinfile_t;
+
+skinfile_t *Mod_LoadSkinFiles(void);
+void Mod_FreeSkinFiles(skinfile_t *skinfile);
+int Mod_CountSkinFiles(skinfile_t *skinfile);
+
 #endif // __MODEL__