From 3325259280ed3bbbce03c353377551363f000949 Mon Sep 17 00:00:00 2001 From: Mircea Kitsune Date: Tue, 25 Oct 2011 01:51:52 +0300 Subject: [PATCH] Use a different method of checking grab distance --- qcsrc/server/cheats.qc | 14 +++++++++----- qcsrc/server/cheats.qh | 2 +- qcsrc/server/mutators/sandbox.qc | 5 ++--- 3 files changed, 12 insertions(+), 9 deletions(-) diff --git a/qcsrc/server/cheats.qc b/qcsrc/server/cheats.qc index 500a36ebe..e35adab35 100644 --- a/qcsrc/server/cheats.qc +++ b/qcsrc/server/cheats.qc @@ -664,7 +664,7 @@ float CheatCommand(float argc) END_CHEAT_FUNCTION(); } -float Drag(entity e); +float Drag(entity e, float dist); void Drag_Begin(entity dragger, entity draggee, vector touchpoint); void Drag_Finish(entity dragger); float Drag_IsDraggable(entity draggee); @@ -694,7 +694,7 @@ float CheatFrame() { // only use non-sandbox dragging if cheats are enabled crosshair_trace_plusvisibletriggers(self); - if(Drag(trace_ent) && !cvar("g_sandbox")) + if(Drag(trace_ent, FALSE) && !cvar("g_sandbox")) DID_CHEAT(); } break; @@ -709,11 +709,15 @@ float CheatFrame() // ENTITY DRAGGING -float Drag(entity e) +float Drag(entity e, float dist) { + float inrange; + if(vlen(e.origin - self.origin) <= dist || !dist) + inrange = TRUE; + if(Drag_IsDragging(self)) { - if(self.BUTTON_DRAG) + if(self.BUTTON_DRAG && inrange) { if(self.impulse == 10 || self.impulse == 15 || self.impulse == 18) { @@ -745,7 +749,7 @@ float Drag(entity e) else { if(Drag_CanDrag(self)) - if(self.BUTTON_DRAG) + if(self.BUTTON_DRAG && inrange) { crosshair_trace_plusvisibletriggers(self); if(e) diff --git a/qcsrc/server/cheats.qh b/qcsrc/server/cheats.qh index c9a449b53..b563c0e13 100644 --- a/qcsrc/server/cheats.qh +++ b/qcsrc/server/cheats.qh @@ -12,4 +12,4 @@ float CheatFrame(); void Drag_MoveDrag(entity from, entity to); // call this from CopyBody -float Drag(entity e); // used by sandbox code \ No newline at end of file +float Drag(entity e, float dist); // used by sandbox code \ No newline at end of file diff --git a/qcsrc/server/mutators/sandbox.qc b/qcsrc/server/mutators/sandbox.qc index a97067fc7..685425102 100644 --- a/qcsrc/server/mutators/sandbox.qc +++ b/qcsrc/server/mutators/sandbox.qc @@ -109,10 +109,9 @@ MUTATOR_HOOKFUNCTION(sandbox_PlayerPreThink) if(autocvar_sv_cheats) return FALSE; // cheats already allow dragging all objects - makevectors(self.v_angle); - WarpZone_TraceLine(self.origin + self.view_ofs, self.origin + self.view_ofs + v_forward * autocvar_g_sandbox_editor_distance_edit, MOVE_NORMAL, self); + crosshair_trace_plusvisibletriggers(self); if(trace_ent.classname == "object") - if(Drag(trace_ent)) // executes the dragging + if(Drag(trace_ent, autocvar_g_sandbox_editor_distance_edit)) // execute the dragging if(autocvar_g_sandbox_info) print(strcat(self.netname, " grabbed an object at origin ", vtos(trace_ent.origin), "\n")); -- 2.39.2