]> git.rm.cloudns.org Git - xonotic/darkplaces.git/commitdiff
added Mod_FindTriangleWithEdge and Mod_BuildTriangleNeighbors functions (not used...
authorhavoc <havoc@d7cf8633-e32d-0410-b094-e92efae38249>
Fri, 27 Sep 2002 05:23:34 +0000 (05:23 +0000)
committerhavoc <havoc@d7cf8633-e32d-0410-b094-e92efae38249>
Fri, 27 Sep 2002 05:23:34 +0000 (05:23 +0000)
added Mod_LoadModels function, which is called when renderer is restarted or "modelflush" is used, it reloads all models that are used

git-svn-id: svn://svn.icculus.org/twilight/trunk/darkplaces@2450 d7cf8633-e32d-0410-b094-e92efae38249

model_shared.c
model_shared.h

index 9da66893d9f1c089716ee2b4504a6976fb6d7496..0d3eacfd0642c16c27e332dbc81d1e12f659aa4a 100644 (file)
@@ -75,6 +75,7 @@ static void mod_start(void)
        for (i = 0;i < MAX_MOD_KNOWN;i++)
                if (mod_known[i].name[0])
                        Mod_UnloadModel(&mod_known[i]);
+       Mod_LoadModels();
 
        Mod_SetupNoTexture();
        Mod_BrushStartup();
@@ -270,6 +271,17 @@ void Mod_PurgeUnused(void)
                                Mod_FreeModel(mod);
 }
 
+void Mod_LoadModels(void)
+{
+       int i;
+       model_t *mod;
+
+       for (i = 0, mod = mod_known;i < MAX_MOD_KNOWN;i++, mod++)
+               if (mod->name[0])
+                       if (mod->used)
+                               Mod_CheckLoaded(mod);
+}
+
 /*
 ==================
 Mod_FindName
@@ -368,4 +380,32 @@ static void Mod_Flush (void)
        for (i = 0;i < MAX_MOD_KNOWN;i++)
                if (mod_known[i].name[0])
                        Mod_UnloadModel(&mod_known[i]);
+       Mod_LoadModels();
+}
+
+int Mod_FindTriangleWithEdge(int *elements, int numtriangles, int start, int end)
+{
+       int i;
+       for (i = 0;i < numtriangles;i++, elements += 3)
+       {
+               if (elements[0] == start && elements[1] == end)
+                       return i;
+               if (elements[1] == start && elements[2] == end)
+                       return i;
+               if (elements[2] == start && elements[0] == end)
+                       return i;
+       }
+       return -1;
+}
+
+int *Mod_BuildTriangleNeighbors(int *neighbors, int *elements, int numtriangles)
+{
+       int i, *e, *n;
+       for (i = 0, e = elements, n = neighbors;i < numtriangles;i++, e += 3, n += 3)
+       {
+               n[0] = Mod_FindTriangleWithEdge(elements, numtriangles, e[1], e[0]);
+               n[1] = Mod_FindTriangleWithEdge(elements, numtriangles, e[2], e[1]);
+               n[2] = Mod_FindTriangleWithEdge(elements, numtriangles, e[0], e[2]);
+       }
+       return neighbors;
 }
index 4fb9af4fcb59ed3f0ef616aa950fa0c13463070f..898d30beb89bec148d1c8b8606034dd84ecb1e1b 100644 (file)
@@ -230,9 +230,13 @@ void Mod_UnloadModel (model_t *mod);
 
 void Mod_ClearUsed(void);
 void Mod_PurgeUnused(void);
+void Mod_LoadModels(void);
 
 extern model_t *loadmodel;
 extern char loadname[32];      // for hunk tags
 
+int Mod_FindTriangleWithEdge(int *elements, int numtriangles, int start, int end);
+int *Mod_BuildTriangleNeighbors(int *neighbors, int *elements, int numtriangles);
+
 #endif // __MODEL__