From: Mircea Kitsune Date: Mon, 24 Oct 2011 21:52:28 +0000 (+0300) Subject: More changes to the dragging system, to make it usable outside of the cheats code X-Git-Tag: xonotic-v0.6.0~35^2~18^2~201 X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=b0e967731c5c551b812f65c468e3d87f89a27f31;p=xonotic%2Fxonotic-data.pk3dir.git More changes to the dragging system, to make it usable outside of the cheats code --- diff --git a/qcsrc/server/cheats.qc b/qcsrc/server/cheats.qc index 6bed7eb32..ec2b661c3 100644 --- a/qcsrc/server/cheats.qc +++ b/qcsrc/server/cheats.qc @@ -664,8 +664,7 @@ float CheatCommand(float argc) END_CHEAT_FUNCTION(); } -void crosshair_trace_plusvisibletriggers(entity pl); -float Drag(); +float Drag(entity e); void Drag_Begin(entity dragger, entity draggee, vector touchpoint); void Drag_Finish(entity dragger); float Drag_IsDraggable(entity draggee); @@ -688,7 +687,8 @@ float CheatFrame() default: if(self.BUTTON_DRAG) IS_CHEAT(0, 0, CHRAME_DRAG); - if(Drag()) + crosshair_trace_plusvisibletriggers(self); + if(Drag(trace_ent)) DID_CHEAT(); break; } @@ -702,23 +702,7 @@ float CheatFrame() // ENTITY DRAGGING -void crosshair_trace_plusvisibletriggers(entity pl) -{ - entity first; - entity e; - first = findchainfloat(solid, SOLID_TRIGGER); - - for (e = first; e; e = e.chain) - if (e.model != "") - e.solid = SOLID_BSP; - - crosshair_trace(pl); - - for (e = first; e; e = e.chain) - e.solid = SOLID_TRIGGER; -} - -float Drag() +float Drag(entity e) { if(Drag_IsDragging(self)) { @@ -757,14 +741,14 @@ float Drag() if(self.BUTTON_DRAG) { crosshair_trace_plusvisibletriggers(self); - if(trace_ent) - if(Drag_IsDraggable(trace_ent)) + if(e) + if(Drag_IsDraggable(e)) { - if(trace_ent.draggedby) - Drag_Finish(trace_ent.draggedby); - if(trace_ent.tag_entity) - detach_sameorigin(trace_ent); - Drag_Begin(self, trace_ent, trace_endpos); + if(e.draggedby) + Drag_Finish(e.draggedby); + if(e.tag_entity) + detach_sameorigin(e); + Drag_Begin(self, e, trace_endpos); return TRUE; } } diff --git a/qcsrc/server/miscfunctions.qc b/qcsrc/server/miscfunctions.qc index 1cf28efff..6db6454f6 100644 --- a/qcsrc/server/miscfunctions.qc +++ b/qcsrc/server/miscfunctions.qc @@ -8,6 +8,21 @@ void crosshair_trace(entity pl) { traceline_antilag(pl, pl.cursor_trace_start, pl.cursor_trace_start + normalize(pl.cursor_trace_endpos - pl.cursor_trace_start) * MAX_SHOT_DISTANCE, MOVE_NORMAL, pl, ANTILAG_LATENCY(pl)); } +void crosshair_trace_plusvisibletriggers(entity pl) +{ + entity first; + entity e; + first = findchainfloat(solid, SOLID_TRIGGER); + + for (e = first; e; e = e.chain) + if (e.model != "") + e.solid = SOLID_BSP; + + crosshair_trace(pl); + + for (e = first; e; e = e.chain) + e.solid = SOLID_TRIGGER; +} void WarpZone_traceline_antilag (entity source, vector v1, vector v2, float nomonst, entity forent, float lag); void WarpZone_crosshair_trace(entity pl) {