CM_* methods take a model as parameter (to keep client & server separated)
This commit is contained in:
parent
12dc8b4ee8
commit
69b03db688
4 changed files with 54 additions and 54 deletions
|
@ -1870,7 +1870,7 @@ void PF_SetAreaPortalState(void)
|
||||||
int area1 = G_FLOAT(OFS_PARM0);
|
int area1 = G_FLOAT(OFS_PARM0);
|
||||||
int area2 = G_FLOAT(OFS_PARM1);
|
int area2 = G_FLOAT(OFS_PARM1);
|
||||||
int open = G_FLOAT(OFS_PARM2);
|
int open = G_FLOAT(OFS_PARM2);
|
||||||
CM_SetAreaPortalState(area1,area2,open);
|
CM_SetAreaPortalState(sv.worldmodel, area1,area2,open);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -444,7 +444,7 @@ void SV_WriteEntitiesToClient (edict_t *clent, sizebuf_t *msg)
|
||||||
|
|
||||||
//find the client's Area Portal state
|
//find the client's Area Portal state
|
||||||
clientleaf = Mod_PointInLeaf(org, sv.worldmodel);
|
clientleaf = Mod_PointInLeaf(org, sv.worldmodel);
|
||||||
areabytes = CM_WriteAreaBits(areabits, clientleaf->area);
|
areabytes = CM_WriteAreaBits(sv.worldmodel, areabits, clientleaf->area);
|
||||||
|
|
||||||
// send over all entities (excpet the client) that touch the pvs
|
// send over all entities (excpet the client) that touch the pvs
|
||||||
ent = NEXT_EDICT(sv.edicts);
|
ent = NEXT_EDICT(sv.edicts);
|
||||||
|
|
|
@ -28,7 +28,7 @@ mplane_t *box_planes;
|
||||||
int box_firstbrush;
|
int box_firstbrush;
|
||||||
mbrush_t *box_brush;
|
mbrush_t *box_brush;
|
||||||
|
|
||||||
#define M sv.worldmodel
|
//#define M sv.worldmodel
|
||||||
|
|
||||||
//timestamp variables
|
//timestamp variables
|
||||||
int c_pointcontents = 0;
|
int c_pointcontents = 0;
|
||||||
|
@ -44,7 +44,7 @@ Set up the planes and nodes so that the six floats of a bounding box
|
||||||
can just be stored out and get a proper clipping hull structure.
|
can just be stored out and get a proper clipping hull structure.
|
||||||
===================
|
===================
|
||||||
*/
|
*/
|
||||||
void CM_InitBoxHull (void)
|
void CM_InitBoxHull (model_t *M)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
int side;
|
int side;
|
||||||
|
@ -65,7 +65,7 @@ void CM_InitBoxHull (void)
|
||||||
// brush sides
|
// brush sides
|
||||||
s = &M->brushsides[M->numbrushsides+i];
|
s = &M->brushsides[M->numbrushsides+i];
|
||||||
s->plane = M->planes + (M->numplanes+i*2+side);
|
s->plane = M->planes + (M->numplanes+i*2+side);
|
||||||
s->texture = NULL;
|
s->shader = NULL;
|
||||||
|
|
||||||
// planes
|
// planes
|
||||||
p = &box_planes[i*2];
|
p = &box_planes[i*2];
|
||||||
|
@ -139,7 +139,7 @@ CM_PointLeafnum_r
|
||||||
|
|
||||||
==================
|
==================
|
||||||
*/
|
*/
|
||||||
int CM_PointLeafnum_r (vec3_t p, int num)
|
int CM_PointLeafnum_r (model_t *M, vec3_t p, int num)
|
||||||
{
|
{
|
||||||
float d;
|
float d;
|
||||||
mnode_t *node;
|
mnode_t *node;
|
||||||
|
@ -165,11 +165,11 @@ int CM_PointLeafnum_r (vec3_t p, int num)
|
||||||
return -1 - num;
|
return -1 - num;
|
||||||
}
|
}
|
||||||
|
|
||||||
int CM_PointLeafnum (vec3_t p)
|
int CM_PointLeafnum (model_t *M, vec3_t p)
|
||||||
{
|
{
|
||||||
if (!M->numplanes)
|
if (!M->numplanes)
|
||||||
return 0; // sound may call this without map loaded
|
return 0; // sound may call this without map loaded
|
||||||
return CM_PointLeafnum_r (p, 0);
|
return CM_PointLeafnum_r (M, p, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -186,7 +186,7 @@ int *leaf_list;
|
||||||
float *leaf_mins, *leaf_maxs;
|
float *leaf_mins, *leaf_maxs;
|
||||||
int leaf_topnode;
|
int leaf_topnode;
|
||||||
|
|
||||||
void CM_BoxLeafnums_r (int nodenum)
|
void CM_BoxLeafnums_r (model_t *M, int nodenum)
|
||||||
{
|
{
|
||||||
mplane_t *plane;
|
mplane_t *plane;
|
||||||
mnode_t *node;
|
mnode_t *node;
|
||||||
|
@ -217,14 +217,14 @@ void CM_BoxLeafnums_r (int nodenum)
|
||||||
{ // go down both
|
{ // go down both
|
||||||
if (leaf_topnode == -1)
|
if (leaf_topnode == -1)
|
||||||
leaf_topnode = nodenum;
|
leaf_topnode = nodenum;
|
||||||
CM_BoxLeafnums_r (node->ichildren[0]);
|
CM_BoxLeafnums_r (M, node->ichildren[0]);
|
||||||
nodenum = node->ichildren[1];
|
nodenum = node->ichildren[1];
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int CM_BoxLeafnums_headnode (vec3_t mins, vec3_t maxs, int *list, int listsize, int headnode, int *topnode)
|
int CM_BoxLeafnums_headnode (model_t *M, vec3_t mins, vec3_t maxs, int *list, int listsize, int headnode, int *topnode)
|
||||||
{
|
{
|
||||||
leaf_list = list;
|
leaf_list = list;
|
||||||
leaf_count = 0;
|
leaf_count = 0;
|
||||||
|
@ -234,7 +234,7 @@ int CM_BoxLeafnums_headnode (vec3_t mins, vec3_t maxs, int *list, int listsize,
|
||||||
|
|
||||||
leaf_topnode = -1;
|
leaf_topnode = -1;
|
||||||
|
|
||||||
CM_BoxLeafnums_r (headnode);
|
CM_BoxLeafnums_r (M, headnode);
|
||||||
|
|
||||||
if (topnode)
|
if (topnode)
|
||||||
*topnode = leaf_topnode;
|
*topnode = leaf_topnode;
|
||||||
|
@ -242,9 +242,9 @@ int CM_BoxLeafnums_headnode (vec3_t mins, vec3_t maxs, int *list, int listsize,
|
||||||
return leaf_count;
|
return leaf_count;
|
||||||
}
|
}
|
||||||
|
|
||||||
int CM_BoxLeafnums (vec3_t mins, vec3_t maxs, int *list, int listsize, int *topnode)
|
int CM_BoxLeafnums (model_t *M,vec3_t mins, vec3_t maxs, int *list, int listsize, int *topnode)
|
||||||
{
|
{
|
||||||
return CM_BoxLeafnums_headnode (mins, maxs, list,
|
return CM_BoxLeafnums_headnode (M,mins, maxs, list,
|
||||||
listsize, 0 /*headnode??*/, topnode);
|
listsize, 0 /*headnode??*/, topnode);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -256,7 +256,7 @@ CM_PointContents
|
||||||
|
|
||||||
==================
|
==================
|
||||||
*/
|
*/
|
||||||
int CM_PointContents (vec3_t p, int headnode)
|
int CM_PointContents (model_t *M, vec3_t p, int headnode)
|
||||||
{
|
{
|
||||||
int l, contents, i, j;
|
int l, contents, i, j;
|
||||||
mleaf_t *leaf;
|
mleaf_t *leaf;
|
||||||
|
@ -266,7 +266,7 @@ int CM_PointContents (vec3_t p, int headnode)
|
||||||
if (!M->numnodes) // map not loaded
|
if (!M->numnodes) // map not loaded
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
l = CM_PointLeafnum_r (p, 0 /*headnode*/);
|
l = CM_PointLeafnum_r (M, p, 0 /*headnode*/);
|
||||||
|
|
||||||
//PENTA: Based on qfusion contents soucre
|
//PENTA: Based on qfusion contents soucre
|
||||||
leaf = &M->leafs[l];
|
leaf = &M->leafs[l];
|
||||||
|
@ -307,7 +307,7 @@ Handles offseting and rotation of the end points for moving and
|
||||||
rotating entities
|
rotating entities
|
||||||
==================
|
==================
|
||||||
*/
|
*/
|
||||||
int CM_TransformedPointContents (vec3_t p, int headnode, vec3_t origin, vec3_t angles)
|
int CM_TransformedPointContents (model_t *M, vec3_t p, int headnode, vec3_t origin, vec3_t angles)
|
||||||
{
|
{
|
||||||
vec3_t p_l;
|
vec3_t p_l;
|
||||||
vec3_t temp;
|
vec3_t temp;
|
||||||
|
@ -328,7 +328,7 @@ int CM_TransformedPointContents (vec3_t p, int headnode, vec3_t origin, vec3_t a
|
||||||
p_l[2] = DotProduct (temp, up);
|
p_l[2] = DotProduct (temp, up);
|
||||||
}
|
}
|
||||||
|
|
||||||
l = CM_PointLeafnum_r (p_l, headnode);
|
l = CM_PointLeafnum_r (M, p_l, headnode);
|
||||||
|
|
||||||
return M->leafs[l].contents;
|
return M->leafs[l].contents;
|
||||||
}
|
}
|
||||||
|
@ -358,7 +358,7 @@ qboolean trace_ispoint; // optimized case
|
||||||
CM_ClipBoxToBrush
|
CM_ClipBoxToBrush
|
||||||
================
|
================
|
||||||
*/
|
*/
|
||||||
void CM_ClipBoxToBrush (vec3_t mins, vec3_t maxs, vec3_t p1, vec3_t p2,
|
void CM_ClipBoxToBrush (model_t *M, vec3_t mins, vec3_t maxs, vec3_t p1, vec3_t p2,
|
||||||
trace_t *trace, mbrush_t *brush)
|
trace_t *trace, mbrush_t *brush)
|
||||||
{
|
{
|
||||||
int i, j;
|
int i, j;
|
||||||
|
@ -474,7 +474,7 @@ void CM_ClipBoxToBrush (vec3_t mins, vec3_t maxs, vec3_t p1, vec3_t p2,
|
||||||
CM_TestBoxInBrush
|
CM_TestBoxInBrush
|
||||||
================
|
================
|
||||||
*/
|
*/
|
||||||
void CM_TestBoxInBrush (vec3_t mins, vec3_t maxs, vec3_t p1,
|
void CM_TestBoxInBrush (model_t *M, vec3_t mins, vec3_t maxs, vec3_t p1,
|
||||||
trace_t *trace, mbrush_t *brush)
|
trace_t *trace, mbrush_t *brush)
|
||||||
{
|
{
|
||||||
int i, j;
|
int i, j;
|
||||||
|
@ -531,7 +531,7 @@ void CM_TestBoxInBrush (vec3_t mins, vec3_t maxs, vec3_t p1,
|
||||||
CM_TraceToLeaf
|
CM_TraceToLeaf
|
||||||
================
|
================
|
||||||
*/
|
*/
|
||||||
void CM_TraceToLeaf (int leafnum)
|
void CM_TraceToLeaf (model_t *M, int leafnum)
|
||||||
{
|
{
|
||||||
int k;
|
int k;
|
||||||
int brushnum;
|
int brushnum;
|
||||||
|
@ -568,7 +568,7 @@ void CM_TraceToLeaf (int leafnum)
|
||||||
if ( !(b->contents & trace_contents))
|
if ( !(b->contents & trace_contents))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
CM_ClipBoxToBrush (trace_mins, trace_maxs, trace_start, trace_end, &trace_trace, b);
|
CM_ClipBoxToBrush (M, trace_mins, trace_maxs, trace_start, trace_end, &trace_trace, b);
|
||||||
if (!trace_trace.fraction)
|
if (!trace_trace.fraction)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -583,7 +583,7 @@ PENTA: Clips to the given brush model
|
||||||
Q3 doesn't have bsp's associated with map models anymore, just a list of brushes
|
Q3 doesn't have bsp's associated with map models anymore, just a list of brushes
|
||||||
================
|
================
|
||||||
*/
|
*/
|
||||||
void CM_TraceToBrushModel (int firstbrush, int numbrushes, vec3_t mins, vec3_t maxs,
|
void CM_TraceToBrushModel (model_t *M, int firstbrush, int numbrushes, vec3_t mins, vec3_t maxs,
|
||||||
vec3_t start, vec3_t end, trace_t *trace, int brushmask)
|
vec3_t start, vec3_t end, trace_t *trace, int brushmask)
|
||||||
{
|
{
|
||||||
int i, brushnum;
|
int i, brushnum;
|
||||||
|
@ -605,7 +605,7 @@ void CM_TraceToBrushModel (int firstbrush, int numbrushes, vec3_t mins, vec3_t m
|
||||||
if ( !(b->contents & trace_contents))
|
if ( !(b->contents & trace_contents))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
CM_ClipBoxToBrush (mins, maxs, start, end, trace, b);
|
CM_ClipBoxToBrush (M, mins, maxs, start, end, trace, b);
|
||||||
if (!trace->fraction)
|
if (!trace->fraction)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -627,7 +627,7 @@ void CM_TraceToBrushModel (int firstbrush, int numbrushes, vec3_t mins, vec3_t m
|
||||||
CM_TestInLeaf
|
CM_TestInLeaf
|
||||||
================
|
================
|
||||||
*/
|
*/
|
||||||
void CM_TestInLeaf (int leafnum)
|
void CM_TestInLeaf (model_t *M, int leafnum)
|
||||||
{
|
{
|
||||||
int k;
|
int k;
|
||||||
int brushnum;
|
int brushnum;
|
||||||
|
@ -648,7 +648,7 @@ void CM_TestInLeaf (int leafnum)
|
||||||
|
|
||||||
if ( !(b->contents & trace_contents))
|
if ( !(b->contents & trace_contents))
|
||||||
continue;
|
continue;
|
||||||
CM_TestBoxInBrush (trace_mins, trace_maxs, trace_start, &trace_trace, b);
|
CM_TestBoxInBrush (M, trace_mins, trace_maxs, trace_start, &trace_trace, b);
|
||||||
if (!trace_trace.fraction)
|
if (!trace_trace.fraction)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -662,7 +662,7 @@ CM_RecursiveHullCheck
|
||||||
|
|
||||||
==================
|
==================
|
||||||
*/
|
*/
|
||||||
void CM_RecursiveHullCheck (int num, float p1f, float p2f, vec3_t p1, vec3_t p2)
|
void CM_RecursiveHullCheck (model_t *M, int num, float p1f, float p2f, vec3_t p1, vec3_t p2)
|
||||||
{
|
{
|
||||||
mnode_t *node;
|
mnode_t *node;
|
||||||
mplane_t *plane;
|
mplane_t *plane;
|
||||||
|
@ -680,7 +680,7 @@ void CM_RecursiveHullCheck (int num, float p1f, float p2f, vec3_t p1, vec3_t p2)
|
||||||
// if < 0, we are in a leaf node
|
// if < 0, we are in a leaf node
|
||||||
if (num < 0)
|
if (num < 0)
|
||||||
{
|
{
|
||||||
CM_TraceToLeaf (-1-num);
|
CM_TraceToLeaf (M, -1-num);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -711,20 +711,20 @@ void CM_RecursiveHullCheck (int num, float p1f, float p2f, vec3_t p1, vec3_t p2)
|
||||||
|
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
CM_RecursiveHullCheck (node->ichildren[0], p1f, p2f, p1, p2);
|
CM_RecursiveHullCheck (M, node->ichildren[0], p1f, p2f, p1, p2);
|
||||||
CM_RecursiveHullCheck (node->ichildren[1], p1f, p2f, p1, p2);
|
CM_RecursiveHullCheck (M, node->ichildren[1], p1f, p2f, p1, p2);
|
||||||
return;
|
return;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// see which sides we need to consider
|
// see which sides we need to consider
|
||||||
if (t1 >= offset && t2 >= offset)
|
if (t1 >= offset && t2 >= offset)
|
||||||
{
|
{
|
||||||
CM_RecursiveHullCheck (node->ichildren[0], p1f, p2f, p1, p2);
|
CM_RecursiveHullCheck (M, node->ichildren[0], p1f, p2f, p1, p2);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (t1 < -offset && t2 < -offset)
|
if (t1 < -offset && t2 < -offset)
|
||||||
{
|
{
|
||||||
CM_RecursiveHullCheck (node->ichildren[1], p1f, p2f, p1, p2);
|
CM_RecursiveHullCheck (M, node->ichildren[1], p1f, p2f, p1, p2);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -760,7 +760,7 @@ return;
|
||||||
for (i=0 ; i<3 ; i++)
|
for (i=0 ; i<3 ; i++)
|
||||||
mid[i] = p1[i] + frac*(p2[i] - p1[i]);
|
mid[i] = p1[i] + frac*(p2[i] - p1[i]);
|
||||||
|
|
||||||
CM_RecursiveHullCheck (node->ichildren[side], p1f, midf, p1, mid);
|
CM_RecursiveHullCheck (M, node->ichildren[side], p1f, midf, p1, mid);
|
||||||
|
|
||||||
|
|
||||||
// go past the node
|
// go past the node
|
||||||
|
@ -773,7 +773,7 @@ return;
|
||||||
for (i=0 ; i<3 ; i++)
|
for (i=0 ; i<3 ; i++)
|
||||||
mid[i] = p1[i] + frac2*(p2[i] - p1[i]);
|
mid[i] = p1[i] + frac2*(p2[i] - p1[i]);
|
||||||
|
|
||||||
CM_RecursiveHullCheck (node->ichildren[side^1], midf, p2f, mid, p2);
|
CM_RecursiveHullCheck (M, node->ichildren[side^1], midf, p2f, mid, p2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -785,7 +785,7 @@ return;
|
||||||
CM_BoxTrace
|
CM_BoxTrace
|
||||||
==================
|
==================
|
||||||
*/
|
*/
|
||||||
trace_t CM_BoxTrace (vec3_t start, vec3_t end,
|
trace_t CM_BoxTrace (model_t *M, vec3_t start, vec3_t end,
|
||||||
vec3_t mins, vec3_t maxs,
|
vec3_t mins, vec3_t maxs,
|
||||||
int headnode, int brushmask)
|
int headnode, int brushmask)
|
||||||
{
|
{
|
||||||
|
@ -828,10 +828,10 @@ trace_t CM_BoxTrace (vec3_t start, vec3_t end,
|
||||||
c2[i] += 1;
|
c2[i] += 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
numleafs = CM_BoxLeafnums_headnode (c1, c2, leafs, 1024, headnode, &topnode);
|
numleafs = CM_BoxLeafnums_headnode (M, c1, c2, leafs, 1024, headnode, &topnode);
|
||||||
for (i=0 ; i<numleafs ; i++)
|
for (i=0 ; i<numleafs ; i++)
|
||||||
{
|
{
|
||||||
CM_TestInLeaf (leafs[i]);
|
CM_TestInLeaf (M, leafs[i]);
|
||||||
if (trace_trace.allsolid)
|
if (trace_trace.allsolid)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -859,7 +859,7 @@ trace_t CM_BoxTrace (vec3_t start, vec3_t end,
|
||||||
//
|
//
|
||||||
// general sweeping through world
|
// general sweeping through world
|
||||||
//
|
//
|
||||||
CM_RecursiveHullCheck (headnode, 0, 1, start, end);
|
CM_RecursiveHullCheck (M, headnode, 0, 1, start, end);
|
||||||
|
|
||||||
if (trace_trace.fraction == 1)
|
if (trace_trace.fraction == 1)
|
||||||
{
|
{
|
||||||
|
@ -887,7 +887,7 @@ rotating entities
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
trace_t CM_TransformedBoxTrace (vec3_t start, vec3_t end,
|
trace_t CM_TransformedBoxTrace (model_t *M, vec3_t start, vec3_t end,
|
||||||
vec3_t mins, vec3_t maxs,
|
vec3_t mins, vec3_t maxs,
|
||||||
int headnode, int brushmask,
|
int headnode, int brushmask,
|
||||||
vec3_t origin, vec3_t angles)
|
vec3_t origin, vec3_t angles)
|
||||||
|
@ -925,7 +925,7 @@ trace_t CM_TransformedBoxTrace (vec3_t start, vec3_t end,
|
||||||
}
|
}
|
||||||
|
|
||||||
// sweep the box through the model
|
// sweep the box through the model
|
||||||
trace = CM_BoxTrace (start_l, end_l, mins, maxs, headnode, brushmask);
|
trace = CM_BoxTrace (M, start_l, end_l, mins, maxs, headnode, brushmask);
|
||||||
|
|
||||||
if (rotated && trace.fraction != 1.0)
|
if (rotated && trace.fraction != 1.0)
|
||||||
{
|
{
|
||||||
|
@ -1047,7 +1047,7 @@ FloodAreaConnections
|
||||||
|
|
||||||
====================
|
====================
|
||||||
*/
|
*/
|
||||||
void FloodAreaConnections (void)
|
void FloodAreaConnections (model_t *M)
|
||||||
{
|
{
|
||||||
int i, j;
|
int i, j;
|
||||||
|
|
||||||
|
@ -1060,7 +1060,7 @@ void FloodAreaConnections (void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void CM_SetAreaPortalState (int area1, int area2, qboolean open)
|
void CM_SetAreaPortalState (model_t *M, int area1, int area2, qboolean open)
|
||||||
{
|
{
|
||||||
if (area1 > M->numareas || area2 > M->numareas) {
|
if (area1 > M->numareas || area2 > M->numareas) {
|
||||||
Con_Printf ("CM_SetAreaPortalState: area > M->numareas\n");
|
Con_Printf ("CM_SetAreaPortalState: area > M->numareas\n");
|
||||||
|
@ -1085,7 +1085,7 @@ void CM_SetAreaPortalState (int area1, int area2, qboolean open)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
qboolean CM_AreasConnected (int area1, int area2)
|
qboolean CM_AreasConnected (model_t *M, int area1, int area2)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
/*
|
/*
|
||||||
|
@ -1120,7 +1120,7 @@ that area in the same flood as the area parameter
|
||||||
This is used by the client refreshes to cull visibility
|
This is used by the client refreshes to cull visibility
|
||||||
=================
|
=================
|
||||||
*/
|
*/
|
||||||
int CM_WriteAreaBits (byte *buffer, int area)
|
int CM_WriteAreaBits (model_t *M, byte *buffer, int area)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
int bytes;
|
int bytes;
|
||||||
|
@ -1138,7 +1138,7 @@ int CM_WriteAreaBits (byte *buffer, int area)
|
||||||
|
|
||||||
for (i=1 ; i<M->numareas ; i++)
|
for (i=1 ; i<M->numareas ; i++)
|
||||||
{
|
{
|
||||||
if (!area || CM_AreasConnected ( i, area ) || i == area)
|
if (!area || CM_AreasConnected (M, i, area ) || i == area)
|
||||||
buffer[i>>3] |= 1<<(i&7);
|
buffer[i>>3] |= 1<<(i&7);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1153,13 +1153,13 @@ int CM_WriteAreaBits (byte *buffer, int area)
|
||||||
CM_MergeAreaBits
|
CM_MergeAreaBits
|
||||||
=================
|
=================
|
||||||
*/
|
*/
|
||||||
void CM_MergeAreaBits (byte *buffer, int area)
|
void CM_MergeAreaBits (model_t *M, byte *buffer, int area)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
for (i=1 ; i<M->numareas ; i++)
|
for (i=1 ; i<M->numareas ; i++)
|
||||||
{
|
{
|
||||||
if ( CM_AreasConnected ( i, area ) || i == area)
|
if ( CM_AreasConnected (M, i, area ) || i == area)
|
||||||
buffer[i>>3] |= 1<<(i&7);
|
buffer[i>>3] |= 1<<(i&7);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1171,7 +1171,7 @@ CM_WritePortalState
|
||||||
Writes the portal state to a savegame file
|
Writes the portal state to a savegame file
|
||||||
===================
|
===================
|
||||||
*/
|
*/
|
||||||
void CM_WritePortalState (FILE *f)
|
void CM_WritePortalState (model_t *M, FILE *f)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1183,7 +1183,7 @@ Reads the portal state from a savegame file
|
||||||
and recalculates the area connections
|
and recalculates the area connections
|
||||||
===================
|
===================
|
||||||
*/
|
*/
|
||||||
void CM_ReadPortalState (FILE *f)
|
void CM_ReadPortalState (model_t *M, FILE *f)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
10
world.c
10
world.c
|
@ -253,7 +253,7 @@ SV_ClearWorld
|
||||||
void SV_ClearWorld (void)
|
void SV_ClearWorld (void)
|
||||||
{
|
{
|
||||||
SV_InitBoxHull ();
|
SV_InitBoxHull ();
|
||||||
CM_InitBoxHull ();
|
CM_InitBoxHull (sv.worldmodel);
|
||||||
|
|
||||||
memset (sv_areanodes, 0, sizeof(sv_areanodes));
|
memset (sv_areanodes, 0, sizeof(sv_areanodes));
|
||||||
sv_numareanodes = 0;
|
sv_numareanodes = 0;
|
||||||
|
@ -562,7 +562,7 @@ int SV_PointContents (vec3_t p)
|
||||||
int cont;
|
int cont;
|
||||||
|
|
||||||
//cont = SV_HullPointContents (&sv.worldmodel->hulls[0], 0, p);
|
//cont = SV_HullPointContents (&sv.worldmodel->hulls[0], 0, p);
|
||||||
cont = CM_PointContents(p,0);
|
cont = CM_PointContents(sv.worldmodel, p,0);
|
||||||
if (cont <= CONTENTS_CURRENT_0 && cont >= CONTENTS_CURRENT_DOWN)
|
if (cont <= CONTENTS_CURRENT_0 && cont >= CONTENTS_CURRENT_DOWN)
|
||||||
cont = CONTENTS_WATER;
|
cont = CONTENTS_WATER;
|
||||||
return cont;
|
return cont;
|
||||||
|
@ -591,7 +591,7 @@ int SV_SimplePointContents (int c)
|
||||||
int SV_TruePointContents (vec3_t p)
|
int SV_TruePointContents (vec3_t p)
|
||||||
{
|
{
|
||||||
// return SV_HullPointContents (&sv.worldmodel->hulls[0], 0, p);
|
// return SV_HullPointContents (&sv.worldmodel->hulls[0], 0, p);
|
||||||
return CM_PointContents(p,0);
|
return CM_PointContents(sv.worldmodel, p,0);
|
||||||
}
|
}
|
||||||
|
|
||||||
//===========================================================================
|
//===========================================================================
|
||||||
|
@ -845,7 +845,7 @@ trace_t SV_ClipMoveToEntity (edict_t *ent, vec3_t start, vec3_t mins, vec3_t max
|
||||||
|
|
||||||
// trace a line through the apropriate brushes
|
// trace a line through the apropriate brushes
|
||||||
//SV_RecursiveHullCheck (hull, hull->firstclipnode, 0, 1, start_l, end_l, &trace);
|
//SV_RecursiveHullCheck (hull, hull->firstclipnode, 0, 1, start_l, end_l, &trace);
|
||||||
CM_TraceToBrushModel (firstbrush, numbrushes, mins, maxs, start_l, end_l, &trace, CONTENTS_SOLID);
|
CM_TraceToBrushModel (sv.worldmodel, firstbrush, numbrushes, mins, maxs, start_l, end_l, &trace, CONTENTS_SOLID);
|
||||||
|
|
||||||
// rotate endpos back to world frame of reference
|
// rotate endpos back to world frame of reference
|
||||||
if (rotated && trace.fraction != 1.0)
|
if (rotated && trace.fraction != 1.0)
|
||||||
|
@ -1013,7 +1013,7 @@ trace_t SV_Move (vec3_t start, vec3_t mins, vec3_t maxs, vec3_t end, int type, e
|
||||||
|
|
||||||
// clip to world
|
// clip to world
|
||||||
//clip.trace = SV_ClipMoveToEntity ( sv.edicts, start, mins, maxs, end );
|
//clip.trace = SV_ClipMoveToEntity ( sv.edicts, start, mins, maxs, end );
|
||||||
clip.trace = CM_BoxTrace (start, end, mins, maxs, 0, CONTENTS_SOLID | CONTENTS_PLAYERCLIP | CONTENTS_MONSTERCLIP);
|
clip.trace = CM_BoxTrace (sv.worldmodel, start, end, mins, maxs, 0, CONTENTS_SOLID | CONTENTS_PLAYERCLIP | CONTENTS_MONSTERCLIP);
|
||||||
clip.trace.ent = &sv.edicts[0]; //world
|
clip.trace.ent = &sv.edicts[0]; //world
|
||||||
|
|
||||||
if (clip.trace.fraction == 0)
|
if (clip.trace.fraction == 0)
|
||||||
|
|
Loading…
Reference in a new issue