]> de.git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - model_shared.c
increased build number to 103
[xonotic/darkplaces.git] / model_shared.c
index ecfe872a74720ee91fa995af4c15ab7cd32f5b02..9b5fc1d115e4131ab955df9db92f8146557905d8 100644 (file)
@@ -27,20 +27,11 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 model_t        *loadmodel;
 char   loadname[32];   // for hunk tags
 
-void Mod_LoadSpriteModel (model_t *mod, void *buffer);
-void Mod_LoadBrushModel (model_t *mod, void *buffer);
-void Mod_LoadAliasModel (model_t *mod, void *buffer);
-void Mod_LoadQ2AliasModel (model_t *mod, void *buffer);
-model_t *Mod_LoadModel (model_t *mod, qboolean crash);
-
-#define        MAX_MOD_KNOWN   512
+// LordHavoc: increased from 512 to 2048
+#define        MAX_MOD_KNOWN   2048
 model_t        mod_known[MAX_MOD_KNOWN];
 int            mod_numknown;
 
-extern void Mod_BrushInit();
-extern void Mod_AliasInit();
-extern void Mod_SpriteInit();
-
 /*
 ===============
 Mod_Init
@@ -86,7 +77,7 @@ void Mod_ClearAll (void)
        model_t *mod;
        
        for (i=0 , mod=mod_known ; i<mod_numknown ; i++, mod++)
-               if (mod->type != mod_alias)
+               if (!mod->cachesize)
                        mod->needload = true;
 }
 
@@ -136,10 +127,8 @@ void Mod_TouchModel (char *name)
        mod = Mod_FindName (name);
        
        if (!mod->needload)
-       {
-               if (mod->type == mod_alias)
+               if (mod->cachesize)
                        Cache_Check (&mod->cache);
-       }
 }
 
 /*
@@ -153,11 +142,10 @@ model_t *Mod_LoadModel (model_t *mod, qboolean crash)
 {
        void    *d;
        unsigned *buf;
-//     byte    stackbuf[1024];         // avoid dirtying the cache heap
 
        if (!mod->needload)
        {
-               if (mod->type == mod_alias)
+               if (mod->cachesize)
                {
                        d = Cache_Check (&mod->cache);
                        if (d)
@@ -167,9 +155,10 @@ model_t *Mod_LoadModel (model_t *mod, qboolean crash)
                        return mod;             // not cached at all
        }
 
+       Con_DPrintf("loading model %s\n", mod->name);
+
 // load the file
        buf = (unsigned *)COM_LoadMallocFile (mod->name, false);
-//     buf = (unsigned *)COM_LoadStackFile (mod->name, stackbuf, sizeof(stackbuf), false);
        if (!buf)
        {
                if (crash)
@@ -178,7 +167,8 @@ model_t *Mod_LoadModel (model_t *mod, qboolean crash)
        }
        
 // allocate a new model
-       COM_FileBase (mod->name, loadname);
+//     COM_FileBase (mod->name, loadname);
+       strcpy(loadname, mod->name);
        
        loadmodel = mod;
 
@@ -194,6 +184,10 @@ model_t *Mod_LoadModel (model_t *mod, qboolean crash)
        case MD2IDALIASHEADER: // LordHavoc: added Quake2 model support
                Mod_LoadQ2AliasModel (mod, buf);
                break;
+
+       case (('O'<<24)+('M'<<16)+('Y'<<8)+'Z'):
+               Mod_LoadZymoticModel(mod, buf);
+               break;
                
        case IDSPRITEHEADER:
                Mod_LoadSpriteModel (mod, buf);
@@ -203,7 +197,7 @@ model_t *Mod_LoadModel (model_t *mod, qboolean crash)
                Mod_LoadBrushModel (mod, buf);
                break;
        }
-       free(buf);
+       qfree(buf);
 
        return mod;
 }
@@ -257,7 +251,7 @@ void Mod_Print (void)
        Con_Printf ("Cached models:\n");
        for (i=0, mod=mod_known ; i < mod_numknown ; i++, mod++)
        {
-               Con_Printf ("%8p : %s\n",mod->cache.data, mod->name);
+               Con_Printf ("%4iK : %8p : %s\n", (mod->cachesize + 1023) / 1024, mod->cache.data, mod->name);
        }
 }