X-Git-Url: https://git.xonotic.org/?a=blobdiff_plain;f=world.c;h=60bd0937728f7a5e6275c8281bdcd4adca5cf17d;hb=98b5c5bdb76e2a329ca27b2a91b935dad3747722;hp=ffa54d19992c93da7afebab69af2745fdf611ae1;hpb=8b0bf5eaa634a3e9a92d371c4a1127c97f8ccf86;p=xonotic%2Fdarkplaces.git diff --git a/world.c b/world.c index ffa54d19..60bd0937 100644 --- a/world.c +++ b/world.c @@ -185,8 +185,11 @@ int World_EntitiesInBox(world_t *world, const vec3_t requestmins, const vec3_t r vec3_t paddedmins, paddedmaxs; int igrid[3], igridmins[3], igridmaxs[3]; - VectorSet(paddedmins, requestmins[0] - 1.0f, requestmins[1] - 1.0f, requestmins[2] - 1.0f); - VectorSet(paddedmaxs, requestmaxs[0] + 1.0f, requestmaxs[1] + 1.0f, requestmaxs[2] + 1.0f); + // LordHavoc: discovered this actually causes its own bugs (dm6 teleporters being too close to info_teleport_destination) + //VectorSet(paddedmins, requestmins[0] - 1.0f, requestmins[1] - 1.0f, requestmins[2] - 1.0f); + //VectorSet(paddedmaxs, requestmaxs[0] + 1.0f, requestmaxs[1] + 1.0f, requestmaxs[2] + 1.0f); + VectorCopy(requestmins, paddedmins); + VectorCopy(requestmaxs, paddedmaxs); // FIXME: if areagrid_marknumber wraps, all entities need their // ent->priv.server->areagridmarknumber reset @@ -362,7 +365,7 @@ cvar_t physics_ode = {0, "physics_ode", "0", "run ODE physics (VERY experimental // LordHavoc: this large chunk of definitions comes from the ODE library // include files. -#ifdef ODE_STATIC +#ifdef LINK_TO_LIBODE #include "ode/ode.h" #else #ifdef WINAPI @@ -1467,14 +1470,20 @@ dllhandle_t ode_dll = NULL; static void World_Physics_Init(void) { #ifdef USEODE -#ifdef ODE_DYNAMIC +#ifndef LINK_TO_LIBODE const char* dllnames [] = { # if defined(WIN32) + "libode3.dll", + "libode2.dll", "libode1.dll", # elif defined(MACOSX) + "libode.3.dylib", + "libode.2.dylib", "libode.1.dylib", # else + "libode.so.3", + "libode.so.2", "libode.so.1", # endif NULL @@ -1511,14 +1520,14 @@ static void World_Physics_Init(void) Cvar_RegisterVariable(&physics_ode_allowconvex); Cvar_RegisterVariable(&physics_ode); -#ifdef ODE_DYNAMIC +#ifndef LINK_TO_LIBODE // Load the DLL if (Sys_LoadLibrary (dllnames, &ode_dll, odefuncs)) #endif { dInitODE(); // dInitODE2(0); -#ifdef ODE_DYNAMIC +#ifndef LINK_TO_LIBODE # ifdef dSINGLE if (!dCheckConfiguration("ODE_single_precision")) # else @@ -1550,12 +1559,12 @@ static void World_Physics_Init(void) static void World_Physics_Shutdown(void) { #ifdef USEODE -#ifdef ODE_DYNAMIC +#ifndef LINK_TO_LIBODE if (ode_dll) #endif { dCloseODE(); -#ifdef ODE_DYNAMIC +#ifndef LINK_TO_LIBODE Sys_UnloadLibrary(&ode_dll); ode_dll = NULL; #endif @@ -1607,7 +1616,7 @@ static void World_Physics_EnableODE(world_t *world) dVector3 center, extents; if (world->physics.ode) return; -#ifdef ODE_DYNAMIC +#ifndef LINK_TO_LIBODE if (!ode_dll) return; #endif @@ -1713,9 +1722,9 @@ void World_Physics_RemoveFromEntity(world_t *world, prvm_edict_t *ed) void World_Physics_ApplyCmd(prvm_edict_t *ed, edict_odefunc_t *f) { +#ifdef USEODE dBodyID body = (dBodyID)ed->priv.server->ode_body; -#ifdef USEODE switch(f->type) { case ODEFUNC_ENABLE: @@ -2105,7 +2114,7 @@ static void World_Physics_Frame_BodyFromEntity(world_t *world, prvm_edict_t *ed) prvm_prog_t *prog = world->prog; const float *iv; const int *ie; - dBodyID body = (dBodyID)ed->priv.server->ode_body; + dBodyID body; dMass mass; const dReal *ovelocity, *ospinvelocity; void *dataID; @@ -2151,7 +2160,7 @@ static void World_Physics_Frame_BodyFromEntity(world_t *world, prvm_edict_t *ed) qboolean *mapped, *used, convex_compatible; int numplanes = 0, numpoints = 0, i; -#ifdef ODE_DYNAMIC +#ifndef LINK_TO_LIBODE if (!ode_dll) return; #endif @@ -3003,11 +3012,11 @@ static void nearCallback (void *data, dGeomID o1, dGeomID o2) void World_Physics_Frame(world_t *world, double frametime, double gravity) { +#ifdef USEODE prvm_prog_t *prog = world->prog; double tdelta, tdelta2, tdelta3, simulationtime, collisiontime; tdelta = Sys_DirtyTime(); -#ifdef USEODE if (world->physics.ode && physics_ode.integer) { int i;