added back r_speeds2, with masses of information (6 lines high), and made it print...
[xonotic/darkplaces.git] / world.c
diff --git a/world.c b/world.c
index 5a8d033..ec9942e 100644 (file)
--- a/world.c
+++ b/world.c
@@ -378,7 +378,10 @@ loc0:
        if ( node->contents < 0)
        {
                if (ent->num_leafs == MAX_ENT_LEAFS)
+               {
+                       Con_DPrintf("FindTouchedLeafs overflow\n");
                        return;
+               }
 
                leaf = (mleaf_t *)node;
                leafnum = leaf - sv.worldmodel->leafs - 1;
@@ -435,21 +438,28 @@ void SV_LinkEdict (edict_t *ent, qboolean touch_triggers)
 // set the abs box
 
 // LordHavoc: enabling rotating bmodels
-       if (ent->v.solid == SOLID_BSP && (ent->v.angles[0] || ent->v.angles[1] || ent->v.angles[2]) )
+       if (ent->v.solid == SOLID_BSP && (ent->v.angles[0] || ent->v.angles[1] || ent->v.angles[2]))
        {       // expand for rotation
                float           max, v;
                int                     i;
 
+               max = DotProduct(ent->v.mins, ent->v.mins);
+               v = DotProduct(ent->v.maxs, ent->v.maxs);
+               if (max < v)
+                       max = v;
+               max = sqrt(max);
+               /*
                max = 0;
                for (i=0 ; i<3 ; i++)
                {
-                       v =fabs( ent->v.mins[i]);
-                       if (v > max)
+                       v = fabs(ent->v.mins[i]);
+                       if (max < v)
                                max = v;
-                       v =fabs( ent->v.maxs[i]);
-                       if (v > max)
+                       v = fabs(ent->v.maxs[i]);
+                       if (max < v)
                                max = v;
                }
+               */
                for (i=0 ; i<3 ; i++)
                {
                        ent->v.absmin[i] = ent->v.origin[i] - max;
@@ -483,7 +493,7 @@ void SV_LinkEdict (edict_t *ent, qboolean touch_triggers)
                ent->v.absmax[1] += 1;
                ent->v.absmax[2] += 1;
        }
-       
+
 // link to PVS leafs
        ent->num_leafs = 0;
        if (ent->v.modelindex)
@@ -505,7 +515,7 @@ void SV_LinkEdict (edict_t *ent, qboolean touch_triggers)
                else
                        break;          // crosses the node
        }
-       
+
 // link it in  
 
        if (ent->v.solid == SOLID_TRIGGER)
@@ -682,11 +692,7 @@ loc0:
        }
        else
        {
-               // LordHavoc: unrolled vector operation because the compiler can't be sure vec3_origin is 0
-//             VectorSubtract (vec3_origin, plane->normal, trace->plane.normal);
-               trace->plane.normal[0] = -plane->normal[0];
-               trace->plane.normal[1] = -plane->normal[1];
-               trace->plane.normal[2] = -plane->normal[2];
+               VectorNegate (plane->normal, trace->plane.normal);
                trace->plane.dist = -plane->dist;
        }
 
@@ -814,11 +820,7 @@ loc0:
        }
        else
        {
-               // LordHavoc: vec3_origin is evil; the compiler can not rely on it being '0 0 0'
-//             VectorSubtract (vec3_origin, plane->normal, trace->plane.normal);
-               trace->plane.normal[0] = -plane->normal[0];
-               trace->plane.normal[1] = -plane->normal[1];
-               trace->plane.normal[2] = -plane->normal[2];
+               VectorNegate (plane->normal, trace->plane.normal);
                trace->plane.dist = -plane->dist;
        }
 
@@ -933,8 +935,7 @@ trace_t SV_ClipMoveToEntity (edict_t *ent, vec3_t start, vec3_t mins, vec3_t max
 
 // LordHavoc: enabling rotating bmodels
        // rotate start and end into the models frame of reference
-       if (ent->v.solid == SOLID_BSP && 
-       (ent->v.angles[0] || ent->v.angles[1] || ent->v.angles[2]) )
+       if (ent->v.solid == SOLID_BSP && (ent->v.angles[0] || ent->v.angles[1] || ent->v.angles[2]))
        {
                vec3_t  forward, right, up;
                vec3_t  temp;
@@ -957,8 +958,7 @@ trace_t SV_ClipMoveToEntity (edict_t *ent, vec3_t start, vec3_t mins, vec3_t max
 
 // LordHavoc: enabling rotating bmodels
        // rotate endpos back to world frame of reference
-       if (ent->v.solid == SOLID_BSP && 
-       (ent->v.angles[0] || ent->v.angles[1] || ent->v.angles[2]) )
+       if (ent->v.solid == SOLID_BSP && (ent->v.angles[0] || ent->v.angles[1] || ent->v.angles[2]))
        {
                vec3_t  a;
                vec3_t  forward, right, up;
@@ -966,7 +966,7 @@ trace_t SV_ClipMoveToEntity (edict_t *ent, vec3_t start, vec3_t mins, vec3_t max
 
                if (trace.fraction != 1)
                {
-                       VectorSubtract (vec3_origin, ent->v.angles, a);
+                       VectorNegate (ent->v.angles, a);
                        AngleVectors (a, forward, right, up);
 
                        VectorCopy (trace.endpos, temp);