]> de.git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - world.c
adding two new extensions: DP_QC_WHICHPACK (identify a pk3 containing a file), and...
[xonotic/darkplaces.git] / world.c
diff --git a/world.c b/world.c
index 017aad98e02c662dee8bc0832046a0c72952ea39..a9192494a5535e31cb2b25fc5668aa2dd846cbd5 100644 (file)
--- a/world.c
+++ b/world.c
@@ -76,13 +76,18 @@ void World_PrintAreaStats(world_t *world, const char *worldname)
 
 /*
 ===============
-World_Clear
+World_SetSize
 
 ===============
 */
-void World_Clear(world_t *world)
+void World_SetSize(world_t *world, const char *filename, const vec3_t mins, const vec3_t maxs)
 {
        int i;
+
+       strlcpy(world->filename, filename, sizeof(world->filename));
+       VectorCopy(mins, world->mins);
+       VectorCopy(maxs, world->maxs);
+
        // the areagrid_marknumber is not allowed to be 0
        if (world->areagrid_marknumber < 1)
                world->areagrid_marknumber = 1;
@@ -105,9 +110,28 @@ void World_Clear(world_t *world)
        World_ClearLink(&world->areagrid_outside);
        for (i = 0;i < AREA_GRIDNODES;i++)
                World_ClearLink(&world->areagrid[i]);
-       Con_DPrintf("areagrid settings: divisions %ix%ix1 : box %f %f %f : %f %f %f size %f %f %f grid %f %f %f (mingrid %f)\n", AREA_GRID, AREA_GRID, world->areagrid_mins[0], world->areagrid_mins[1], world->areagrid_mins[2], world->areagrid_maxs[0], world->areagrid_maxs[1], world->areagrid_maxs[2], world->areagrid_size[0], world->areagrid_size[1], world->areagrid_size[2], 1.0f / world->areagrid_scale[0], 1.0f / world->areagrid_scale[1], 1.0f / world->areagrid_scale[2], sv_areagrid_mingridsize.value);
+       if (developer.integer >= 10)
+               Con_Printf("areagrid settings: divisions %ix%ix1 : box %f %f %f : %f %f %f size %f %f %f grid %f %f %f (mingrid %f)\n", AREA_GRID, AREA_GRID, world->areagrid_mins[0], world->areagrid_mins[1], world->areagrid_mins[2], world->areagrid_maxs[0], world->areagrid_maxs[1], world->areagrid_maxs[2], world->areagrid_size[0], world->areagrid_size[1], world->areagrid_size[2], 1.0f / world->areagrid_scale[0], 1.0f / world->areagrid_scale[1], 1.0f / world->areagrid_scale[2], sv_areagrid_mingridsize.value);
 }
 
+/*
+===============
+World_UnlinkAll
+
+===============
+*/
+void World_UnlinkAll(world_t *world)
+{
+       int i;
+       link_t *grid;
+       // unlink all entities one by one
+       grid = &world->areagrid_outside;
+       while (grid->next != grid)
+               World_UnlinkEdict(PRVM_EDICT_NUM(grid->next->entitynumber));
+       for (i = 0, grid = world->areagrid;i < AREA_GRIDNODES;i++, grid++)
+               while (grid->next != grid)
+                       World_UnlinkEdict(PRVM_EDICT_NUM(grid->next->entitynumber));
+}
 
 /*
 ===============
@@ -127,7 +151,7 @@ void World_UnlinkEdict(prvm_edict_t *ent)
        }
 }
 
-int World_EntitiesInBox(world_t *world, vec3_t mins, vec3_t maxs, int maxlist, prvm_edict_t **list)
+int World_EntitiesInBox(world_t *world, const vec3_t mins, const vec3_t maxs, int maxlist, prvm_edict_t **list)
 {
        int numlist;
        link_t *grid;