]> git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/common/physics/movetypes/movetypes.qc
Remove uses of WITHSELF
[xonotic/xonotic-data.pk3dir.git] / qcsrc / common / physics / movetypes / movetypes.qc
index de623b5033d94e3f258f082494763ce82513d5c7..06ccde2a57fc3db941ef6c61ed3f95a8b5b0d0f6 100644 (file)
@@ -317,20 +317,20 @@ void _Movetype_Impact(entity this, entity oth)  // SV_Impact
 {
        entity oldother = other;
 
-       if(this.move_touch)
+       if(gettouch(this))
        {
                other = oth;
 
-               WITH(entity, self, this, this.move_touch());
+               gettouch(this)(this);
 
                other = oldother;
        }
 
-       if(oth.move_touch)
+       if(gettouch(oth))
        {
                other = this;
 
-               WITH(entity, self, oth, oth.move_touch());
+               gettouch(oth)(oth);
 
                other = oldother;
        }
@@ -343,11 +343,10 @@ void _Movetype_LinkEdict_TouchAreaGrid(entity this)  // SV_LinkEdict_TouchAreaGr
 
        entity oldother = other;
 
-       for (entity e = findradius(0.5 * (this.absmin + this.absmax), 0.5 * vlen(this.absmax - this.absmin)); e; e = e.chain)
-       {
-               if(e.solid == SOLID_TRIGGER && e != this)
-               if(e.move_nomonsters != MOVE_NOMONSTERS && e.move_nomonsters != MOVE_WORLDONLY)
-               if(e.move_touch && boxesoverlap(e.absmin, e.absmax, this.absmin, this.absmax))
+    FOREACH_ENTITY_RADIUS(0.5 * (this.absmin + this.absmax), 0.5 * vlen(this.absmax - this.absmin), true, {
+               if (it.solid == SOLID_TRIGGER && it != this)
+               if (it.move_nomonsters != MOVE_NOMONSTERS && it.move_nomonsters != MOVE_WORLDONLY)
+               if (gettouch(it) && boxesoverlap(it.absmin, it.absmax, this.absmin, this.absmax))
                {
                        other = this;
 
@@ -356,14 +355,14 @@ void _Movetype_LinkEdict_TouchAreaGrid(entity this)  // SV_LinkEdict_TouchAreaGr
                        trace_fraction = 1;
                        trace_inwater = false;
                        trace_inopen = true;
-                       trace_endpos = e.move_origin;
+                       trace_endpos = it.move_origin;
                        trace_plane_normal = '0 0 1';
                        trace_plane_dist = 0;
                        trace_ent = this;
 
-                       WITH(entity, self, e, e.move_touch());
+                       gettouch(it)(it);
                }
-       }
+    });
 
        other = oldother;
 }
@@ -411,9 +410,10 @@ void _Movetype_LinkEdict(entity this, bool touch_triggers)  // SV_LinkEdict
                _Movetype_LinkEdict_TouchAreaGrid(this);
 }
 
-bool _Movetype_TestEntityPosition(/*entity this, */ vector ofs)  // SV_TestEntityPosition
+entity _Movetype_TestEntityPosition_ent;
+bool _Movetype_TestEntityPosition(vector ofs)  // SV_TestEntityPosition
 {
-    SELFPARAM(); // XXX: performance
+    entity this = _Movetype_TestEntityPosition_ent;
 //     vector org = this.move_origin + ofs;
 
        int cont = this.dphitcontentsmask;
@@ -431,13 +431,11 @@ bool _Movetype_TestEntityPosition(/*entity this, */ vector ofs)  // SV_TestEntit
 
 bool _Movetype_UnstickEntity(entity this)  // SV_UnstickEntity
 {
-    entity oldself = this;
-    setself(this);
-       if (!_Movetype_TestEntityPosition(/* this, */ ' 0  0  0')) {
-           setself(oldself);
+    _Movetype_TestEntityPosition_ent = this;
+       if (!_Movetype_TestEntityPosition(' 0  0  0')) {
            return true;
        }
-       #define X(v) if (_Movetype_TestEntityPosition(/* this, */ v))
+       #define X(v) if (_Movetype_TestEntityPosition(v))
        X('-1  0  0') X(' 1  0  0')
        X(' 0 -1  0') X(' 0  1  0')
        X('-1 -1  0') X(' 1 -1  0')
@@ -445,20 +443,18 @@ bool _Movetype_UnstickEntity(entity this)  // SV_UnstickEntity
        #undef X
        {
         #define X(i) \
-            if (_Movetype_TestEntityPosition(/* this, */ '0 0 -1' * i)) \
-            if (_Movetype_TestEntityPosition(/* this, */ '0 0 1' * i))
+            if (_Movetype_TestEntityPosition('0 0 -1' * i)) \
+            if (_Movetype_TestEntityPosition('0 0 1' * i))
         X(01) X(02) X(03) X(04) X(05) X(06) X(07) X(08)
         X(09) X(10) X(11) X(12) X(13) X(14) X(15) X(16)
         X(17)
         #undef X
         {
-            setself(oldself);
             LOG_DEBUGF("Can't unstick an entity (edict: %d, classname: %s, origin: %s)\n",
                 etof(this), this.classname, vtos(this.move_origin));
             return false;
         }
        }
-       setself(oldself);
        LOG_DEBUGF("Sucessfully unstuck an entity (edict: %d, classname: %s, origin: %s)\n",
                etof(this), this.classname, vtos(this.move_origin));
        _Movetype_LinkEdict(this, true);