]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/server/vehicles/collision.qc
Switching branch
[xonotic/xonotic-data.pk3dir.git] / qcsrc / server / vehicles / collision.qc
index 60597c0171b08bbfcc55426e01ccabd3cde5c7eb..11488a0d5a24ce3cba118fe62935214827c99f66 100644 (file)
@@ -6,7 +6,7 @@ vector bb2[9];
 
 float collision_run()
 {
-    vector vtmp, vmin, vmax, vrot, vforce;
+    vector vtmp, vmin, vmax, vrot, vforce, vtmp2, vtmp3;
     float i, fvel, bcol;
 
 
@@ -23,7 +23,8 @@ float collision_run()
     vtmp   = vmax; vtmp_z = vmin_z; bb1[7] = vtmp;
 
     makevectors(self.angles + '-2 0 0' * self.angles_x);
-    bcol = FALSE;
+    bcol = 0;
+
     // Pass1: Transform by rotation, ajust points by impact/s
     for(i = 8; i >= 0; --i)
     {
@@ -33,48 +34,22 @@ float collision_run()
         te_lightning1(world,self.origin,vtmp);
         if(trace_fraction != 1.0)
         {
-            //bb2[i] = trace_endpos;
             vforce += (trace_endpos - vtmp);
-            bcol = TRUE;
+            vtmp3 = self.origin + self.velocity * frametime;
+            vtmp2 =  vectoangles(normalize(vtmp - vtmp3));
+            vrot   += (vectoangles(normalize(trace_endpos - vtmp3)) - vtmp2);
+            bcol += 1;
         }
-        else
-            bb2[i] = bb1[i];
     }
 
     if(bcol)
     {
-        //self.angles   += vectoangles(vrot) * frametime;
-        //self.angles   -= (self.velocity - vectoangles(normalize(vforce))) * frametime;
 
         vtmp = self.origin + self.velocity * frametime;
-        vrot = self.origin + vforce * frametime;
-        //self.angles += vectoangles(normalize(vtmp - vrot)) * frametime;
+        self.angles += vrot * frametime;
         self.velocity += vforce * frametime;
 
     }
 
-
-// Extract the 8 bbox corners from mins/maxs for self
-/*
-    bb1[0] = self.absmax;
-    vtmp   = self.absmax; vtmp_x = self.absmin_x; bb1[1] = vtmp;
-    vtmp   = self.absmax; vtmp_y = self.absmin_y; bb1[2] = vtmp;
-    vtmp   = self.absmin; vtmp_z = self.absmax_z; bb1[3] = vtmp;
-    bb1[4] = self.absmin;
-    vtmp   = self.absmin; vtmp_x = self.absmax_x; bb1[5] = vtmp;
-    vtmp   = self.absmin; vtmp_y = self.absmax_y; bb1[6] = vtmp;
-    vtmp   = self.absmax; vtmp_z = self.absmin_z; bb1[7] = vtmp;
-
-
-// Extract the 8 bbox corners from mins/maxs for other
-    bb1[0] = other.absmax;
-    vtmp   = other.absmax; vtmp_x = other.absmin_x; bb2[1] = vtmp;
-    vtmp   = other.absmax; vtmp_y = other.absmin_y; bb2[2] = vtmp;
-    vtmp   = other.absmin; vtmp_z = other.absmax_z; bb2[3] = vtmp;
-    bb2[4] = other.absmin;
-    vtmp   = other.absmin; vtmp_x = other.absmax_x; bb2[5] = vtmp;
-    vtmp   = other.absmin; vtmp_y = other.absmax_y; bb2[6] = vtmp;
-    vtmp   = other.absmax; vtmp_z = other.absmin_z; bb2[7] = vtmp;
-*/
 }