]> de.git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - model_shared.c
new command line option -modname to override DP's idea of com_modname (useful to...
[xonotic/darkplaces.git] / model_shared.c
index 94c3b0150d5d0d679614c604bf8b0ff95d9a9ee9..edf096aaeba004612a3ee13bca1f0f15cca08705 100644 (file)
@@ -425,8 +425,10 @@ dp_model_t *Mod_LoadModel(dp_model_t *mod, qboolean crash, qboolean checkdisk)
 
                buf = FS_LoadFile (va("%s.framegroups", mod->name), tempmempool, false, &filesize);
                if(buf)
+               {
                        Mod_FrameGroupify(mod, buf);
-               Mem_Free(buf);
+                       Mem_Free(buf);
+               }
 
                Mod_BuildVBOs();
        }
@@ -1337,7 +1339,14 @@ static void Q3Shader_AddToHash (q3shaderinfo_t* shader)
        {
                if (strcasecmp (entry->shader.name, shader->name) == 0)
                {
-                       Con_Printf("Shader '%s' already defined\n", shader->name);
+                       unsigned char *start, *end, *start2;
+                       start = (unsigned char *) (&shader->Q3SHADERINFO_COMPARE_START);
+                       end = ((unsigned char *) (&shader->Q3SHADERINFO_COMPARE_END)) + sizeof(shader->Q3SHADERINFO_COMPARE_END);
+                       start2 = (unsigned char *) (&entry->shader.Q3SHADERINFO_COMPARE_START);
+                       if(memcmp(start, start2, end - start))
+                               Con_Printf("Shader '%s' already defined, ignoring mismatching redeclaration\n", shader->name);
+                       else
+                               Con_DPrintf("Shader '%s' already defined\n", shader->name);
                        return;
                }
                lastEntry = entry;
@@ -2726,7 +2735,7 @@ static void Mod_Decompile_f(void)
                                        if ((animname[l] < '0' || animname[l] > '9') && animname[l] != '_')
                                                k = l + 1;
                                animname[k] = 0;
-                               count = (mod->num_poses / mod->num_bones) - first;
+                               count = mod->num_poses - first;
                                for (j = i + 1;j < mod->numframes;j++)
                                {
                                        strlcpy(animname2, mod->animscenes[j].name, sizeof(animname2));