From 11aba6af99f6dca8e0f07c3522fbd4fb557795fa Mon Sep 17 00:00:00 2001 From: havoc Date: Tue, 28 Mar 2006 01:04:23 +0000 Subject: [PATCH] patch from div0 to fix disappearing items in nexuiz (trace_* globals in qc were not being cleared before calling touch) git-svn-id: svn://svn.icculus.org/twilight/trunk/darkplaces@6195 d7cf8633-e32d-0410-b094-e92efae38249 --- world.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/world.c b/world.c index 427fe1cb..a4354477 100644 --- a/world.c +++ b/world.c @@ -254,9 +254,27 @@ void SV_TouchAreaGrid(prvm_edict_t *ent) touch = touchedicts[i]; if (touch != ent && (int)touch->fields.server->solid == SOLID_TRIGGER && touch->fields.server->touch) { + prvm_eval_t *val; prog->globals.server->self = PRVM_EDICT_TO_PROG(touch); prog->globals.server->other = PRVM_EDICT_TO_PROG(ent); prog->globals.server->time = sv.time; + prog->globals.server->trace_allsolid = false; + prog->globals.server->trace_startsolid = false; + prog->globals.server->trace_fraction = 1; + prog->globals.server->trace_inwater = false; + prog->globals.server->trace_inopen = true; + VectorCopy (touch->fields.server->origin, prog->globals.server->trace_endpos); + VectorSet (prog->globals.server->trace_plane_normal, 0, 0, 1); + prog->globals.server->trace_plane_dist = 0; + prog->globals.server->trace_ent = PRVM_EDICT_TO_PROG(ent); + if ((val = PRVM_GETGLOBALFIELDVALUE(gval_trace_dpstartcontents))) + val->_float = 0; + if ((val = PRVM_GETGLOBALFIELDVALUE(gval_trace_dphitcontents))) + val->_float = 0; + if ((val = PRVM_GETGLOBALFIELDVALUE(gval_trace_dphitq3surfaceflags))) + val->_float = 0; + if ((val = PRVM_GETGLOBALFIELDVALUE(gval_trace_dphittexturename))) + val->string = 0; PRVM_ExecuteProgram (touch->fields.server->touch, "QC function self.touch is missing"); } } -- 2.39.2