]> git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/server/pathlib/movenode.qc
take3: format 903 files
[xonotic/xonotic-data.pk3dir.git] / qcsrc / server / pathlib / movenode.qc
index cbcfe3d4c6038f07c00abb44047019d6988748a3..188fa23b4980cc4bf842513de7630796e0b61226 100644 (file)
 #include "pathlib.qh"
 #include "utility.qh"
 
-.vector        pos1, pos2;
+.vector pos1, pos2;
 
 vector pathlib_wateroutnode(entity this, vector start, vector end, float doedge)
 {
-    vector surface;
+       vector surface;
 
-    pathlib_movenode_goodnode = false;
+       pathlib_movenode_goodnode = false;
 
-    end.x = fsnap(end.x, pathlib_gridsize);
-    end.y = fsnap(end.y, pathlib_gridsize);
+       end.x = fsnap(end.x, pathlib_gridsize);
+       end.y = fsnap(end.y, pathlib_gridsize);
 
-    traceline(end + ('0 0 0.25' * pathlib_gridsize),end - ('0 0 1' * pathlib_gridsize),MOVE_WORLDONLY,this);
-    end = trace_endpos;
+       traceline(end + ('0 0 0.25' * pathlib_gridsize), end - ('0 0 1' * pathlib_gridsize), MOVE_WORLDONLY, this);
+       end = trace_endpos;
 
-    if (!(pointcontents(end - '0 0 1') == CONTENT_SOLID))
-        return end;
+       if (!(pointcontents(end - '0 0 1') == CONTENT_SOLID)) {
+               return end;
+       }
 
-    for(surface = start ; surface.z < (end.z + 32); ++surface.z)
-    {
-        if(pointcontents(surface) == CONTENT_EMPTY)
-            break;
-    }
+       for (surface = start; surface.z < (end.z + 32); ++surface.z) {
+               if (pointcontents(surface) == CONTENT_EMPTY) {
+                       break;
+               }
+       }
 
-    if(pointcontents(surface + '0 0 1') != CONTENT_EMPTY)
-        return end;
+       if (pointcontents(surface + '0 0 1') != CONTENT_EMPTY) {
+               return end;
+       }
 
-    tracebox(start + '0 0 64', movenode_boxmin,movenode_boxmax, end + '0 0 64', MOVE_WORLDONLY, this);
-    if(trace_fraction == 1)
-        pathlib_movenode_goodnode = true;
+       tracebox(start + '0 0 64', movenode_boxmin, movenode_boxmax, end + '0 0 64', MOVE_WORLDONLY, this);
+       if (trace_fraction == 1) {
+               pathlib_movenode_goodnode = true;
+       }
 
-    if(fabs(surface.z - end.z) > 32)
-        pathlib_movenode_goodnode = false;
+       if (fabs(surface.z - end.z) > 32) {
+               pathlib_movenode_goodnode = false;
+       }
 
-    return end;
+       return end;
 }
 
 vector pathlib_swimnode(entity this, vector start, vector end, float doedge)
 {
-    pathlib_movenode_goodnode = false;
+       pathlib_movenode_goodnode = false;
 
-    if(pointcontents(start) != CONTENT_WATER)
-        return end;
+       if (pointcontents(start) != CONTENT_WATER) {
+               return end;
+       }
 
-    end.x = fsnap(end.x, pathlib_gridsize);
-    end.y = fsnap(end.y, pathlib_gridsize);
+       end.x = fsnap(end.x, pathlib_gridsize);
+       end.y = fsnap(end.y, pathlib_gridsize);
 
-    if(pointcontents(end) == CONTENT_EMPTY)
-        return pathlib_wateroutnode(this, start, end, doedge);
+       if (pointcontents(end) == CONTENT_EMPTY) {
+               return pathlib_wateroutnode(this, start, end, doedge);
+       }
 
-    tracebox(start, movenode_boxmin,movenode_boxmax, end, MOVE_WORLDONLY, this);
-    if(trace_fraction == 1)
-        pathlib_movenode_goodnode = true;
+       tracebox(start, movenode_boxmin, movenode_boxmax, end, MOVE_WORLDONLY, this);
+       if (trace_fraction == 1) {
+               pathlib_movenode_goodnode = true;
+       }
 
-    return end;
+       return end;
 }
 
 vector pathlib_flynode(entity this, vector start, vector end, float doedge)
 {
-    pathlib_movenode_goodnode = false;
+       pathlib_movenode_goodnode = false;
 
-    end.x = fsnap(end.x, pathlib_gridsize);
-    end.y = fsnap(end.y, pathlib_gridsize);
+       end.x = fsnap(end.x, pathlib_gridsize);
+       end.y = fsnap(end.y, pathlib_gridsize);
 
-    tracebox(start, movenode_boxmin,movenode_boxmax, end, MOVE_WORLDONLY, this);
-    if(trace_fraction == 1)
-        pathlib_movenode_goodnode = true;
+       tracebox(start, movenode_boxmin, movenode_boxmax, end, MOVE_WORLDONLY, this);
+       if (trace_fraction == 1) {
+               pathlib_movenode_goodnode = true;
+       }
 
-    return end;
+       return end;
 }
 
 void a_think(entity this)
 {
-    te_lightning1(this,this.origin, this.pos1);
-    if(this.cnt < time)
-        delete(this);
-    else
-        this.nextthink = time + 0.2;
+       te_lightning1(this, this.origin, this.pos1);
+       if (this.cnt < time) {
+               delete(this);
+       } else {
+               this.nextthink = time + 0.2;
+       }
 }
 
 vector pathlib_walknode(entity this, vector start, vector end, float doedge)
 {
-    vector point;
-
-    LOG_DEBUG("Walking node from ", vtos(start), " to ", vtos(end));
-
-    pathlib_movenode_goodnode = false;
-
-    end.x = fsnap(end.x,pathlib_gridsize);
-    end.y = fsnap(end.y,pathlib_gridsize);
-    start.x = fsnap(start.x,pathlib_gridsize);
-    start.y = fsnap(start.y,pathlib_gridsize);
-
-    // Find the floor
-    traceline(start + movenode_stepup, start - movenode_maxdrop, MOVE_WORLDONLY, this);
-    if(trace_fraction == 1.0)
-    {
-        entity a;
-        a = spawn();
-        setthink(a, a_think);
-        a.nextthink = time;
-        setorigin(a, start + movenode_stepup);
-        a.pos1 = trace_endpos;
-        //start - movenode_maxdrop
-        a.cnt = time + 10;
-
-        LOG_TRACE("I cant walk on air!");
-        return trace_endpos;
-    }
-
-    start = trace_endpos;
-
-    // Find the direcion, without Z
-    vector s   = start;
-    vector e   = end;
-    //e_z = 0; s_z = 0;
-    vector direction = normalize(e - s);
-
-    float distance  = vlen(start - end);
-    int steps     = rint(distance / movenode_stepsize);
-
-    vector last_point = start;
-    for(int i = 1; i < steps; ++i)
-    {
-        point = last_point + (direction * movenode_stepsize);
-        traceline(point + movenode_stepup,point - movenode_maxdrop,MOVE_WORLDONLY,this);
-        if(trace_fraction == 1.0)
-            return trace_endpos;
-
-        last_point = trace_endpos;
-    }
-
-    point = last_point + (direction * movenode_stepsize);
-    point.x = fsnap(point.x,pathlib_gridsize);
-    point.y = fsnap(point.y,pathlib_gridsize);
-
-    //dprint("end_x:  ",ftos(end_x),  "  end_y:  ",ftos(end_y),"\n");
-    //dprint("point_x:",ftos(point_x),"  point_y:",ftos(point_y),"\n\n");
-
-    traceline(point + movenode_stepup, point - movenode_maxdrop,MOVE_WORLDONLY,this);
-    if(trace_fraction == 1.0)
-        return trace_endpos;
-
-    last_point = trace_endpos;
-
-    tracebox(start + movenode_boxup, movenode_boxmin,movenode_boxmax, last_point + movenode_boxup, MOVE_WORLDONLY, this);
-    if(trace_fraction != 1.0)
-        return trace_endpos;
-
-    pathlib_movenode_goodnode = true;
-    return last_point;
+       vector point;
+
+       LOG_DEBUG("Walking node from ", vtos(start), " to ", vtos(end));
+
+       pathlib_movenode_goodnode = false;
+
+       end.x = fsnap(end.x, pathlib_gridsize);
+       end.y = fsnap(end.y, pathlib_gridsize);
+       start.x = fsnap(start.x, pathlib_gridsize);
+       start.y = fsnap(start.y, pathlib_gridsize);
+
+       // Find the floor
+       traceline(start + movenode_stepup, start - movenode_maxdrop, MOVE_WORLDONLY, this);
+       if (trace_fraction == 1.0) {
+               entity a;
+               a = spawn();
+               setthink(a, a_think);
+               a.nextthink = time;
+               setorigin(a, start + movenode_stepup);
+               a.pos1 = trace_endpos;
+               // start - movenode_maxdrop
+               a.cnt = time + 10;
+
+               LOG_TRACE("I cant walk on air!");
+               return trace_endpos;
+       }
+
+       start = trace_endpos;
+
+       // Find the direcion, without Z
+       vector s   = start;
+       vector e   = end;
+       // e_z = 0; s_z = 0;
+       vector direction = normalize(e - s);
+
+       float distance  = vlen(start - end);
+       int steps     = rint(distance / movenode_stepsize);
+
+       vector last_point = start;
+       for (int i = 1; i < steps; ++i) {
+               point = last_point + (direction * movenode_stepsize);
+               traceline(point + movenode_stepup, point - movenode_maxdrop, MOVE_WORLDONLY, this);
+               if (trace_fraction == 1.0) {
+                       return trace_endpos;
+               }
+
+               last_point = trace_endpos;
+       }
+
+       point = last_point + (direction * movenode_stepsize);
+       point.x = fsnap(point.x, pathlib_gridsize);
+       point.y = fsnap(point.y, pathlib_gridsize);
+
+       // dprint("end_x:  ",ftos(end_x),  "  end_y:  ",ftos(end_y),"\n");
+       // dprint("point_x:",ftos(point_x),"  point_y:",ftos(point_y),"\n\n");
+
+       traceline(point + movenode_stepup, point - movenode_maxdrop, MOVE_WORLDONLY, this);
+       if (trace_fraction == 1.0) {
+               return trace_endpos;
+       }
+
+       last_point = trace_endpos;
+
+       tracebox(start + movenode_boxup, movenode_boxmin, movenode_boxmax, last_point + movenode_boxup, MOVE_WORLDONLY, this);
+       if (trace_fraction != 1.0) {
+               return trace_endpos;
+       }
+
+       pathlib_movenode_goodnode = true;
+       return last_point;
 }