[nexuiz-commits] r8696 - in trunk/data/qcsrc: client server warpzonelib

DONOTREPLY at icculus.org DONOTREPLY at icculus.org
Sun Feb 28 14:43:08 EST 2010


Author: div0
Date: 2010-02-28 14:43:08 -0500 (Sun, 28 Feb 2010)
New Revision: 8696

Modified:
   trunk/data/qcsrc/client/projectile.qc
   trunk/data/qcsrc/server/cheats.qc
   trunk/data/qcsrc/server/portals.qc
   trunk/data/qcsrc/warpzonelib/anglestransform.qc
   trunk/data/qcsrc/warpzonelib/anglestransform.qh
   trunk/data/qcsrc/warpzonelib/common.qc
Log:
turn the angles the other way for consistency

Modified: trunk/data/qcsrc/client/projectile.qc
===================================================================
--- trunk/data/qcsrc/client/projectile.qc	2010-02-28 19:43:03 UTC (rev 8695)
+++ trunk/data/qcsrc/client/projectile.qc	2010-02-28 19:43:08 UTC (rev 8696)
@@ -88,7 +88,7 @@
 			default:
 				break;
 		}
-		self.angles = AnglesTransform_Multiply(self.angles, rot * (t - self.spawntime));
+		self.angles = AnglesTransform_ApplyToAngles(self.angles, rot * (t - self.spawntime));
 	}
 
 	fixedmakevectors(self.angles);

Modified: trunk/data/qcsrc/server/cheats.qc
===================================================================
--- trunk/data/qcsrc/server/cheats.qc	2010-02-28 19:43:03 UTC (rev 8695)
+++ trunk/data/qcsrc/server/cheats.qc	2010-02-28 19:43:08 UTC (rev 8696)
@@ -339,7 +339,7 @@
 					if(f == 1)
 					{
 						e.angles = fixedvectoangles2(trace_plane_normal, v_forward);
-						e.angles = AnglesTransform_Multiply(e.angles, '-90 0 0'); // so unrotated models work
+						e.angles = AnglesTransform_ApplyToAngles(e.angles, '-90 0 0'); // so unrotated models work
 					}
 					oldself = self;
 					self = e;

Modified: trunk/data/qcsrc/server/portals.qc
===================================================================
--- trunk/data/qcsrc/server/portals.qc	2010-02-28 19:43:03 UTC (rev 8695)
+++ trunk/data/qcsrc/server/portals.qc	2010-02-28 19:43:08 UTC (rev 8696)
@@ -30,13 +30,13 @@
 	ang = vangle;
 	/*
 	   ang_x = bound(-89, mod(-ang_x + 180, 360) - 180, 89);
-	   ang = AnglesTransform_Multiply(transform, ang);
+	   ang = AnglesTransform_ApplyToVAngles(transform, ang);
 	 */
 
 	// PLAYERS use different math
 	ang_x = -ang_x;
 
-	//print("reference: ", vtos(AnglesTransform_Multiply(transform, ang)), "\n");
+	//print("reference: ", vtos(AnglesTransform_ApplyToVAngles(transform, ang)), "\n");
 
 	fixedmakevectors(ang);
 	old_forward = v_forward;
@@ -144,7 +144,7 @@
 	if(player.classname == "player")
 		ang = Portal_ApplyTransformToPlayerAngle(transform, player.v_angle);
 	else
-		ang = AnglesTransform_Multiply(transform, player.angles);
+		ang = AnglesTransform_ApplyToAngles(transform, player.angles);
 
 	// factor -1 allows chaining portals, but may be weird
 	player.right_vector = -1 * AnglesTransform_Apply(transform, player.right_vector);

Modified: trunk/data/qcsrc/warpzonelib/anglestransform.qc
===================================================================
--- trunk/data/qcsrc/warpzonelib/anglestransform.qc	2010-02-28 19:43:03 UTC (rev 8695)
+++ trunk/data/qcsrc/warpzonelib/anglestransform.qc	2010-02-28 19:43:08 UTC (rev 8696)
@@ -1,10 +1,26 @@
-// helper function
+#ifdef POSITIVE_PITCH_IS_DOWN
+vector fixedvectoangles(vector a)
+{
+	vector ang;
+	ang = vectoangles(a);
+	ang_x = -ang_x;
+	return ang;
+}
+vector fixedvectoangles2(vector a, vector b)
+{
+	vector ang;
+	ang = vectoangles2(a, b);
+	ang_x = -ang_x;
+	return ang;
+}
+#else
 void fixedmakevectors(vector a)
 {
 	// a makevectors that actually inverts vectoangles
 	a_x = -a_x;
 	makevectors(a);
 }
+#endif
 
 // angles transforms
 // angles in fixedmakevectors/fixedvectoangles space
@@ -12,8 +28,8 @@
 {
 	fixedmakevectors(transform);
 	return v_forward * v_x
-	     + v_right   * (-v_y)
-		 + v_up      * v_z;
+		+ v_right   * (-v_y)
+		+ v_up      * v_z;
 }
 
 vector AnglesTransform_Multiply(vector t1, vector t2)
@@ -93,18 +109,62 @@
 	return t;
 }
 
+vector AnglesTransform_CancelRoll(vector t)
+{
+	const float epsilon = 30;
+	float f;
+
+	// constraints:
+	// forward vector (NOT SO important)
+	// right vector, up vector: screen rotation (MORE important)
+	// choose best match among all pitch-yaw only rotations
+
+	// FIXME find a better method
+
+	f = fabs(t_x - (-90)) / epsilon;
+	if(f < 1)
+	{
+		//t_x = -90;
+		t_y += t_z;
+		t_z = 0;
+	}
+	else
+	{
+		f = fabs(t_x - 90) / epsilon;
+		if(f < 1)
+		{
+			//t_x = 90;
+			t_y -= t_z;
+			t_z = 0;
+		}
+	}
+	return t;
+}
+
+#ifdef POSITIVE_PITCH_IS_DOWN
 vector AnglesTransform_ApplyToAngles(vector transform, vector v)
 {
-	//v_x = -v_x;
+	v_x = -v_x;
 	v = AnglesTransform_Multiply(transform, v);
-	//v_x = -v_x;
+	v_x = -v_x;
 	return v;
 }
-
 vector AnglesTransform_ApplyToVAngles(vector transform, vector v)
 {
+	v = AnglesTransform_Multiply(transform, v);
+	return v;
+}
+#else
+vector AnglesTransform_ApplyToAngles(vector transform, vector v)
+{
+	v = AnglesTransform_Multiply(transform, v);
+	return v;
+}
+vector AnglesTransform_ApplyToVAngles(vector transform, vector v)
+{
 	v_x = -v_x;
 	v = AnglesTransform_Multiply(transform, v);
 	v_x = -v_x;
 	return v;
 }
+#endif

Modified: trunk/data/qcsrc/warpzonelib/anglestransform.qh
===================================================================
--- trunk/data/qcsrc/warpzonelib/anglestransform.qh	2010-02-28 19:43:03 UTC (rev 8695)
+++ trunk/data/qcsrc/warpzonelib/anglestransform.qh	2010-02-28 19:43:08 UTC (rev 8696)
@@ -1,6 +1,14 @@
+#define POSITIVE_PITCH_IS_DOWN
+
+#ifdef POSITIVE_PITCH_IS_DOWN
+#define fixedmakevectors makevectors
+vector fixedvectoangles(vector a);
+vector fixedvectoangles2(vector a, vector b);
+#else
 void fixedmakevectors(vector a);
 #define fixedvectoangles2 vectoangles2
 #define fixedvectoangles vectoangles
+#endif
 
 vector AnglesTransform_Apply(vector transform, vector v);
 vector AnglesTransform_Multiply(vector t1, vector t2);

Modified: trunk/data/qcsrc/warpzonelib/common.qc
===================================================================
--- trunk/data/qcsrc/warpzonelib/common.qc	2010-02-28 19:43:03 UTC (rev 8695)
+++ trunk/data/qcsrc/warpzonelib/common.qc	2010-02-28 19:43:08 UTC (rev 8696)
@@ -30,6 +30,7 @@
 	*/
 
 	ang = AnglesTransform_Normalize(ang, TRUE);
+	ang = AnglesTransform_CancelRoll(ang);
 
 	/*
 	print(vtos(ang), " output\n");



More information about the nexuiz-commits mailing list