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);
{
// 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;
// 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)
{
else
{
if(Drag_CanDrag(self))
- if(self.BUTTON_DRAG)
+ if(self.BUTTON_DRAG && inrange)
{
crosshair_trace_plusvisibletriggers(self);
if(e)
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
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"));