X-Git-Url: http://git.xonotic.org/?a=blobdiff_plain;f=world.c;h=5f703a5d8522f413236ba1535b56ea4abfb04e11;hb=f50a1192fbe86bfdd69d3372620db0b661db5f20;hp=d73696927ff5f1e00e62c03f3a4b872ef5bc2102;hpb=feb22f39c2c1a481b8c7a2364767b6402d5d94a1;p=xonotic%2Fdarkplaces.git diff --git a/world.c b/world.c index d7369692..5f703a5d 100644 --- a/world.c +++ b/world.c @@ -22,6 +22,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #include "quakedef.h" #include "clvm_cmds.h" #include "cl_collision.h" +#include "com_list.h" /* @@ -147,10 +148,10 @@ void World_UnlinkAll(world_t *world) // unlink all entities one by one grid = &world->areagrid_outside; while (grid->list.next != &grid->list) - World_UnlinkEdict(PRVM_EDICT_NUM(List_Container(*grid->list.next, link_t, list)->entitynumber)); + World_UnlinkEdict(PRVM_EDICT_NUM(List_Entry(grid->list.next, link_t, list)->entitynumber)); for (i = 0, grid = world->areagrid;i < AREA_GRIDNODES;i++, grid++) while (grid->list.next != &grid->list) - World_UnlinkEdict(PRVM_EDICT_NUM(List_Container(*grid->list.next, link_t, list)->entitynumber)); + World_UnlinkEdict(PRVM_EDICT_NUM(List_Entry(grid->list.next, link_t, list)->entitynumber)); } /* @@ -172,7 +173,6 @@ int World_EntitiesInBox(world_t *world, const vec3_t requestmins, const vec3_t r { prvm_prog_t *prog = world->prog; int numlist; - llist_t *pos; link_t *grid; link_t *l; prvm_edict_t *ent; @@ -215,9 +215,8 @@ int World_EntitiesInBox(world_t *world, const vec3_t requestmins, const vec3_t r if (world->areagrid_outside.list.next) { grid = &world->areagrid_outside; - List_ForEach(pos, &grid->list) + List_For_Each_Entry(l, &grid->list, list) { - l = List_Container(*pos, link_t, list); ent = PRVM_EDICT_NUM(l->entitynumber); if (ent->priv.server->areagridmarknumber != world->areagrid_marknumber) { @@ -240,9 +239,8 @@ int World_EntitiesInBox(world_t *world, const vec3_t requestmins, const vec3_t r { if (grid->list.next) { - List_ForEach(pos, &grid->list) + List_For_Each_Entry(l, &grid->list, list) { - l = List_Container(*pos, link_t, list); ent = PRVM_EDICT_NUM(l->entitynumber); if (ent->priv.server->areagridmarknumber != world->areagrid_marknumber) { @@ -1522,7 +1520,7 @@ static void World_Physics_Init(void) #ifndef LINK_TO_LIBODE // Load the DLL - if (Sys_LoadLibrary (dllnames, &ode_dll, odefuncs)) + if (Sys_LoadDependency (dllnames, &ode_dll, odefuncs)) #endif { dInitODE(); @@ -1539,7 +1537,7 @@ static void World_Physics_Init(void) # else Con_Printf("ODE library not compiled for double precision - incompatible! Not using ODE physics.\n"); # endif - Sys_UnloadLibrary(&ode_dll); + Sys_FreeLibrary(&ode_dll); ode_dll = NULL; } else @@ -1565,7 +1563,7 @@ static void World_Physics_Shutdown(void) { dCloseODE(); #ifndef LINK_TO_LIBODE - Sys_UnloadLibrary(&ode_dll); + Sys_FreeLibrary(&ode_dll); ode_dll = NULL; #endif } @@ -2290,9 +2288,9 @@ static void World_Physics_Frame_BodyFromEntity(world_t *world, prvm_edict_t *ed) // check if trimesh can be defined with convex convex_compatible = false; - for (i = 0;i < model->nummodelsurfaces;i++) + for (i = model->submodelsurfaces_start;i < model->submodelsurfaces_end;i++) { - if (!strcmp(((msurface_t *)(model->data_surfaces + model->firstmodelsurface + i))->texture->name, "collisionconvex")) + if (!strcmp(model->data_surfaces[i].texture->name, "collisionconvex")) { convex_compatible = true; break;