]> git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - model_shared.c
fix handling of entities which change movetype at runtime
[xonotic/darkplaces.git] / model_shared.c
index ac16b9acf0bc8600a6381dd09b550d85c8924932..dcf5d8c763f913e7cba30163ae4f4dff632c1290 100644 (file)
@@ -1263,6 +1263,7 @@ void Mod_CreateCollisionMesh(dp_model_t *mod)
        if (!mempool && mod->brush.parentmodel)
                mempool = mod->brush.parentmodel->mempool;
        // make a single combined collision mesh for physics engine use
+       // TODO rewrite this to use the collision brushes as source, to fix issues with e.g. common/caulk which creates no drawsurface
        numcollisionmeshtriangles = 0;
        for (k = 0;k < mod->nummodelsurfaces;k++)
        {
@@ -2534,13 +2535,14 @@ static void Mod_Decompile_OBJ(dp_model_t *model, const char *filename, const cha
                countvertices += surface->num_vertices;
                countfaces += surface->num_triangles;
                texname = (surface->texture && surface->texture->name[0]) ? surface->texture->name : "default";
-               for (textureindex = 0;textureindex < maxtextures && texturenames[textureindex*MAX_QPATH];textureindex++)
+               for (textureindex = 0;textureindex < counttextures;textureindex++)
                        if (!strcmp(texturenames + textureindex * MAX_QPATH, texname))
                                break;
+               if (textureindex < counttextures)
+                       continue; // already wrote this material entry
                if (textureindex >= maxtextures)
                        continue; // just a precaution
-               if (counttextures < textureindex + 1)
-                       counttextures = textureindex + 1;
+               textureindex = counttextures++;
                strlcpy(texturenames + textureindex * MAX_QPATH, texname, MAX_QPATH);
                if (outbufferpos >= outbuffermax >> 1)
                {