mirror of
https://github.com/nzp-team/fteqw.git
synced 2024-11-22 20:11:44 +00:00
fix ffov, for now.
fix server crash(es). git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@4798 fc73d0e0-1445-4013-8a0c-d673dee63da5
This commit is contained in:
parent
5c2533e207
commit
95cfa0cfac
7 changed files with 53 additions and 25 deletions
|
@ -1079,6 +1079,13 @@ static void QCBUILTIN PF_R_AddEntityMask(pubprogfuncs_t *prinst, struct globalva
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//enum {vb_vertexcoord, vb_texcoord, vb_rgba, vb_normal, vb_sdir, vb_tdir, vb_indexes, vb_rgb, vb_alpha};
|
||||||
|
//vboidx = vbuff_create(numverts, numidx, flags)
|
||||||
|
//vbuff_updateptr(vboidx, datatype, ptr, firstvert, numverts)
|
||||||
|
//vbuff_updateone(vboidx, datatype, index, __variant data)
|
||||||
|
//vbuff_render(vboidx, shaderid, uniforms, uniformssize)
|
||||||
|
//vbuff_delete(vboidx), vboidx=0
|
||||||
|
|
||||||
static shader_t *csqc_poly_shader;
|
static shader_t *csqc_poly_shader;
|
||||||
static int csqc_poly_startvert;
|
static int csqc_poly_startvert;
|
||||||
static int csqc_poly_startidx;
|
static int csqc_poly_startidx;
|
||||||
|
@ -1780,8 +1787,27 @@ static void QCBUILTIN PF_cs_SetSize (pubprogfuncs_t *prinst, struct globalvars_s
|
||||||
World_LinkEdict (w, (wedict_t*)e, false);
|
World_LinkEdict (w, (wedict_t*)e, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void cs_settracevars(trace_t *tr, struct globalvars_s *pr_globals)
|
static void cs_settracevars(pubprogfuncs_t *prinst, struct globalvars_s *pr_globals, trace_t *tr)
|
||||||
{
|
{
|
||||||
|
/*
|
||||||
|
world_t *w = prinst->parms->user;
|
||||||
|
*w->g.trace_allsolid = tr->allsolid;
|
||||||
|
*w->g.trace_startsolid = tr->startsolid;
|
||||||
|
*w->g.trace_fraction = tr->fraction;
|
||||||
|
*w->g.trace_inwater = tr->inwater;
|
||||||
|
*w->g.trace_inopen = tr->inopen;
|
||||||
|
VectorCopy (tr->endpos, w->g.trace_endpos);
|
||||||
|
VectorCopy (tr->plane.normal, w->g.trace_plane_normal);
|
||||||
|
*w->g.trace_plane_dist = tr->plane.dist;
|
||||||
|
if (w->g.trace_surfaceflags)
|
||||||
|
*w->g.trace_surfaceflags = tr->surface?tr->surface->flags:0;
|
||||||
|
if (w->g.trace_endcontents)
|
||||||
|
*w->g.trace_endcontents = tr->contents;
|
||||||
|
if (tr->ent)
|
||||||
|
*w->g.trace_ent = EDICT_TO_PROG(prinst, (void*)tr->ent);
|
||||||
|
else
|
||||||
|
*w->g.trace_ent = EDICT_TO_PROG(prinst, (void*)w->edicts);
|
||||||
|
*/
|
||||||
*csqcg.trace_allsolid = tr->allsolid;
|
*csqcg.trace_allsolid = tr->allsolid;
|
||||||
*csqcg.trace_startsolid = tr->startsolid;
|
*csqcg.trace_startsolid = tr->startsolid;
|
||||||
*csqcg.trace_fraction = tr->fraction;
|
*csqcg.trace_fraction = tr->fraction;
|
||||||
|
@ -1829,7 +1855,7 @@ static void QCBUILTIN PF_cs_traceline(pubprogfuncs_t *prinst, struct globalvars_
|
||||||
trace = World_Move (&csqc_world, v1, mins, maxs, v2, nomonsters, (wedict_t*)ent);
|
trace = World_Move (&csqc_world, v1, mins, maxs, v2, nomonsters, (wedict_t*)ent);
|
||||||
ent->xv->hull = savedhull;
|
ent->xv->hull = savedhull;
|
||||||
|
|
||||||
cs_settracevars(&trace, pr_globals);
|
cs_settracevars(prinst, pr_globals, &trace);
|
||||||
}
|
}
|
||||||
static void QCBUILTIN PF_cs_tracebox(pubprogfuncs_t *prinst, struct globalvars_s *pr_globals)
|
static void QCBUILTIN PF_cs_tracebox(pubprogfuncs_t *prinst, struct globalvars_s *pr_globals)
|
||||||
{
|
{
|
||||||
|
@ -1851,7 +1877,7 @@ static void QCBUILTIN PF_cs_tracebox(pubprogfuncs_t *prinst, struct globalvars_s
|
||||||
trace = World_Move (&csqc_world, v1, mins, maxs, v2, nomonsters, (wedict_t*)ent);
|
trace = World_Move (&csqc_world, v1, mins, maxs, v2, nomonsters, (wedict_t*)ent);
|
||||||
ent->xv->hull = savedhull;
|
ent->xv->hull = savedhull;
|
||||||
|
|
||||||
cs_settracevars(&trace, pr_globals);
|
cs_settracevars(prinst, pr_globals, &trace);
|
||||||
}
|
}
|
||||||
|
|
||||||
static trace_t CS_Trace_Toss (csqcedict_t *tossent, csqcedict_t *ignore)
|
static trace_t CS_Trace_Toss (csqcedict_t *tossent, csqcedict_t *ignore)
|
||||||
|
@ -1909,7 +1935,7 @@ static void QCBUILTIN PF_cs_tracetoss (pubprogfuncs_t *prinst, struct globalvars
|
||||||
|
|
||||||
trace = CS_Trace_Toss (ent, ignore);
|
trace = CS_Trace_Toss (ent, ignore);
|
||||||
|
|
||||||
cs_settracevars(&trace, pr_globals);
|
cs_settracevars(prinst, pr_globals, &trace);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void QCBUILTIN PF_cs_pointcontents(pubprogfuncs_t *prinst, struct globalvars_s *pr_globals)
|
static void QCBUILTIN PF_cs_pointcontents(pubprogfuncs_t *prinst, struct globalvars_s *pr_globals)
|
||||||
|
|
|
@ -285,7 +285,7 @@ void Q2BSP_FindTouchedLeafs(model_t *mod, struct pvscache_s *ent, float *mins, f
|
||||||
|
|
||||||
/*sv_move.c*/
|
/*sv_move.c*/
|
||||||
qboolean World_CheckBottom (world_t *world, wedict_t *ent, vec3_t up);
|
qboolean World_CheckBottom (world_t *world, wedict_t *ent, vec3_t up);
|
||||||
qboolean World_movestep (world_t *world, wedict_t *ent, vec3_t move, vec3_t axis[3], qboolean relink, qboolean noenemy, void (*set_move_trace)(trace_t *trace, struct globalvars_s *pr_globals), struct globalvars_s *set_trace_globs);
|
qboolean World_movestep (world_t *world, wedict_t *ent, vec3_t move, vec3_t axis[3], qboolean relink, qboolean noenemy, void (*set_move_trace)(pubprogfuncs_t *prinst, struct globalvars_s *pr_globals, trace_t *trace), struct globalvars_s *set_trace_globs);
|
||||||
qboolean World_MoveToGoal (world_t *world, wedict_t *ent, float dist);
|
qboolean World_MoveToGoal (world_t *world, wedict_t *ent, float dist);
|
||||||
qboolean World_GetEntGravityAxis(wedict_t *ent, vec3_t axis[3]);
|
qboolean World_GetEntGravityAxis(wedict_t *ent, vec3_t axis[3]);
|
||||||
|
|
||||||
|
|
|
@ -1358,7 +1358,8 @@ static void R_RenderMotionBlur(void)
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
#if 0
|
#if 1
|
||||||
|
#include "shader.h"
|
||||||
/*FIXME: we could use geometry shaders to draw to all 6 faces at once*/
|
/*FIXME: we could use geometry shaders to draw to all 6 faces at once*/
|
||||||
qboolean R_RenderScene_Cubemap(void)
|
qboolean R_RenderScene_Cubemap(void)
|
||||||
{
|
{
|
||||||
|
@ -1431,7 +1432,7 @@ qboolean R_RenderScene_Cubemap(void)
|
||||||
// prect.y = (vrect.y * vid.pixelheight)/vid.height;
|
// prect.y = (vrect.y * vid.pixelheight)/vid.height;
|
||||||
// prect.height = (vrect.height * vid.pixelheight)/vid.height;
|
// prect.height = (vrect.height * vid.pixelheight)/vid.height;
|
||||||
|
|
||||||
if (r_config.texture_non_power_of_two_limited)
|
if (sh_config.texture_non_power_of_two_pic)
|
||||||
{
|
{
|
||||||
if (prect.width < prect.height)
|
if (prect.width < prect.height)
|
||||||
cmapsize = prect.width;
|
cmapsize = prect.width;
|
||||||
|
@ -1453,7 +1454,7 @@ qboolean R_RenderScene_Cubemap(void)
|
||||||
{
|
{
|
||||||
if (!TEXVALID(scenepp_postproc_cube))
|
if (!TEXVALID(scenepp_postproc_cube))
|
||||||
{
|
{
|
||||||
scenepp_postproc_cube = Image_CreateTexture("***fish***", IF_CUBEMAP);
|
scenepp_postproc_cube = Image_CreateTexture("***fish***", NULL, IF_CUBEMAP|IF_RENDERTARGET|IF_CLAMP|IF_LINEAR);
|
||||||
qglGenTextures(1, &scenepp_postproc_cube->num);
|
qglGenTextures(1, &scenepp_postproc_cube->num);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1725,11 +1726,11 @@ void GLR_RenderView (void)
|
||||||
time1 = Sys_DoubleTime ();
|
time1 = Sys_DoubleTime ();
|
||||||
}
|
}
|
||||||
|
|
||||||
// if (!dofbo && !(r_refdef.flags & RDF_NOWORLDMODEL) && R_RenderScene_Cubemap())
|
if (!dofbo && !(r_refdef.flags & RDF_NOWORLDMODEL) && R_RenderScene_Cubemap())
|
||||||
// {
|
{
|
||||||
//
|
|
||||||
// }
|
}
|
||||||
// else
|
else
|
||||||
{
|
{
|
||||||
GL_SetShaderState2D(false);
|
GL_SetShaderState2D(false);
|
||||||
|
|
||||||
|
|
|
@ -3086,7 +3086,7 @@ static void QCBUILTIN PF_LocalSound(pubprogfuncs_t *prinst, struct globalvars_s
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
static void set_trace_globals(trace_t *trace, struct globalvars_s *pr_globals)
|
static void set_trace_globals(pubprogfuncs_t *prinst, struct globalvars_s *pr_globals, trace_t *trace)
|
||||||
{
|
{
|
||||||
pr_global_struct->trace_allsolid = trace->allsolid;
|
pr_global_struct->trace_allsolid = trace->allsolid;
|
||||||
pr_global_struct->trace_startsolid = trace->startsolid;
|
pr_global_struct->trace_startsolid = trace->startsolid;
|
||||||
|
@ -3157,7 +3157,7 @@ void QCBUILTIN PF_svtraceline (pubprogfuncs_t *prinst, struct globalvars_s *pr_g
|
||||||
trace = World_Move (&sv.world, v1, mins, maxs, v2, nomonsters, (wedict_t*)ent);
|
trace = World_Move (&sv.world, v1, mins, maxs, v2, nomonsters, (wedict_t*)ent);
|
||||||
ent->xv->hull = savedhull;
|
ent->xv->hull = savedhull;
|
||||||
|
|
||||||
set_trace_globals(&trace, pr_globals);
|
set_trace_globals(prinst, pr_globals, &trace);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef HEXEN2
|
#ifdef HEXEN2
|
||||||
|
@ -3181,7 +3181,7 @@ static void QCBUILTIN PF_traceboxh2 (pubprogfuncs_t *prinst, struct globalvars_s
|
||||||
trace = World_Move (&sv.world, v1, mins, maxs, v2, nomonsters, (wedict_t*)ent);
|
trace = World_Move (&sv.world, v1, mins, maxs, v2, nomonsters, (wedict_t*)ent);
|
||||||
ent->xv->hull = savedhull;
|
ent->xv->hull = savedhull;
|
||||||
|
|
||||||
set_trace_globals(&trace, pr_globals);
|
set_trace_globals(prinst, pr_globals, &trace);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -3205,7 +3205,7 @@ static void QCBUILTIN PF_traceboxdp (pubprogfuncs_t *prinst, struct globalvars_s
|
||||||
trace = World_Move (&sv.world, v1, mins, maxs, v2, nomonsters, (wedict_t*)ent);
|
trace = World_Move (&sv.world, v1, mins, maxs, v2, nomonsters, (wedict_t*)ent);
|
||||||
ent->xv->hull = savedhull;
|
ent->xv->hull = savedhull;
|
||||||
|
|
||||||
set_trace_globals(&trace, pr_globals);
|
set_trace_globals(prinst, pr_globals, &trace);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void QCBUILTIN PF_TraceToss (pubprogfuncs_t *prinst, struct globalvars_s *pr_globals)
|
static void QCBUILTIN PF_TraceToss (pubprogfuncs_t *prinst, struct globalvars_s *pr_globals)
|
||||||
|
@ -3221,7 +3221,7 @@ static void QCBUILTIN PF_TraceToss (pubprogfuncs_t *prinst, struct globalvars_s
|
||||||
|
|
||||||
trace = WPhys_Trace_Toss (&sv.world, (wedict_t*)ent, (wedict_t*)ignore);
|
trace = WPhys_Trace_Toss (&sv.world, (wedict_t*)ent, (wedict_t*)ignore);
|
||||||
|
|
||||||
set_trace_globals(&trace, pr_globals);
|
set_trace_globals(prinst, pr_globals, &trace);
|
||||||
}
|
}
|
||||||
|
|
||||||
//============================================================================
|
//============================================================================
|
||||||
|
@ -5732,6 +5732,7 @@ void QCBUILTIN PF_sqlreadfloat (pubprogfuncs_t *prinst, struct globalvars_s *pr_
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Con_Printf("Invalid sql request/row\n");
|
Con_Printf("Invalid sql request/row\n");
|
||||||
|
PR_StackTrace(prinst, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -149,7 +149,7 @@ possible, no move is done, false is returned, and
|
||||||
pr_global_struct->trace_normal is set to the normal of the blocking wall
|
pr_global_struct->trace_normal is set to the normal of the blocking wall
|
||||||
=============
|
=============
|
||||||
*/
|
*/
|
||||||
qboolean World_movestep (world_t *world, wedict_t *ent, vec3_t move, vec3_t axis[3], qboolean relink, qboolean noenemy, void (*set_move_trace)(trace_t *trace, struct globalvars_s *pr_globals), struct globalvars_s *set_trace_globs)
|
qboolean World_movestep (world_t *world, wedict_t *ent, vec3_t move, vec3_t axis[3], qboolean relink, qboolean noenemy, void (*set_move_trace)(pubprogfuncs_t *prinst, struct globalvars_s *pr_globals, trace_t *trace), struct globalvars_s *set_trace_globs)
|
||||||
{
|
{
|
||||||
float dz;
|
float dz;
|
||||||
vec3_t oldorg, neworg, end;
|
vec3_t oldorg, neworg, end;
|
||||||
|
@ -199,7 +199,7 @@ qboolean World_movestep (world_t *world, wedict_t *ent, vec3_t move, vec3_t axis
|
||||||
}
|
}
|
||||||
trace = World_Move (world, ent->v->origin, ent->v->mins, ent->v->maxs, neworg, false, ent);
|
trace = World_Move (world, ent->v->origin, ent->v->mins, ent->v->maxs, neworg, false, ent);
|
||||||
if (set_move_trace)
|
if (set_move_trace)
|
||||||
set_move_trace(&trace, set_trace_globs);
|
set_move_trace(world->progs, set_trace_globs, &trace);
|
||||||
|
|
||||||
if (trace.fraction == 1)
|
if (trace.fraction == 1)
|
||||||
{
|
{
|
||||||
|
@ -225,7 +225,7 @@ qboolean World_movestep (world_t *world, wedict_t *ent, vec3_t move, vec3_t axis
|
||||||
|
|
||||||
trace = World_Move (world, neworg, ent->v->mins, ent->v->maxs, end, false, ent);
|
trace = World_Move (world, neworg, ent->v->mins, ent->v->maxs, end, false, ent);
|
||||||
if (set_move_trace)
|
if (set_move_trace)
|
||||||
set_move_trace(&trace, set_trace_globs);
|
set_move_trace(world->progs, set_trace_globs, &trace);
|
||||||
|
|
||||||
if (trace.allsolid)
|
if (trace.allsolid)
|
||||||
return false;
|
return false;
|
||||||
|
@ -236,7 +236,7 @@ qboolean World_movestep (world_t *world, wedict_t *ent, vec3_t move, vec3_t axis
|
||||||
VectorMA(neworg, -movevars.stepheight, axis[2], neworg);
|
VectorMA(neworg, -movevars.stepheight, axis[2], neworg);
|
||||||
trace = World_Move (world, neworg, ent->v->mins, ent->v->maxs, end, false, ent);
|
trace = World_Move (world, neworg, ent->v->mins, ent->v->maxs, end, false, ent);
|
||||||
if (set_move_trace)
|
if (set_move_trace)
|
||||||
set_move_trace(&trace, set_trace_globs);
|
set_move_trace(world->progs, set_trace_globs, &trace);
|
||||||
if (trace.allsolid || trace.startsolid)
|
if (trace.allsolid || trace.startsolid)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
|
@ -558,10 +558,10 @@ static void SQL_DeallocResult(sqlserver_t *server, queryresult_t *qres)
|
||||||
case SQLDRV_SQLITE:
|
case SQLDRV_SQLITE:
|
||||||
if (qres->result)
|
if (qres->result)
|
||||||
{
|
{
|
||||||
char **mat = qres->result;
|
sqliteresult_t *mat = qres->result;
|
||||||
int i;
|
int i;
|
||||||
for (i = 0; i < qres->columns * (qres->rows+1); i++)
|
for (i = 0; i < qres->columns * (qres->rows+1); i++)
|
||||||
free(mat[i]);
|
free(mat[i].ptr);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -1120,7 +1120,7 @@ void SV_SendClientPrespawnInfo(client_t *client)
|
||||||
|
|
||||||
if (client->prespawn_idx >= client->maxmodels || !sv.strings.model_precache[client->prespawn_idx])
|
if (client->prespawn_idx >= client->maxmodels || !sv.strings.model_precache[client->prespawn_idx])
|
||||||
{
|
{
|
||||||
if (*sv.strings.model_precache[client->prespawn_idx] && !(client->plimitwarned & PLIMIT_MODELS))
|
if (sv.strings.model_precache[client->prespawn_idx] && !(client->plimitwarned & PLIMIT_MODELS))
|
||||||
{
|
{
|
||||||
client->plimitwarned |= PLIMIT_MODELS;
|
client->plimitwarned |= PLIMIT_MODELS;
|
||||||
SV_ClientPrintf(client, PRINT_HIGH, "WARNING: Your client's network protocol only supports %i models. Please upgrade or enable extensions.\n", client->prespawn_idx);
|
SV_ClientPrintf(client, PRINT_HIGH, "WARNING: Your client's network protocol only supports %i models. Please upgrade or enable extensions.\n", client->prespawn_idx);
|
||||||
|
|
Loading…
Reference in a new issue