player's angles_x gets reset to 0 but not angles_y?

Discuss programming in the QuakeC language.
Post Reply
kawadahitomi
Posts: 3
Joined: Sun Oct 28, 2012 8:17 pm

player's angles_x gets reset to 0 but not angles_y?

Post by kawadahitomi »

Having trouble getting the player's self.angles_x to stay set. Some background: I am trying to control the player camera in Xonotic (runs on Darkplaces) using a gyroscope I wear on my head. This gives me the Euler angle differences associated with me moving my head. I'm not currently using roll. My code:

Code: Select all

print("self.angles before is", vtos(self.angles));
self.angles_x += pitch_difference;
self.angles_y += yaw_difference;
print(", after is ", vtos(self.angles), "\n");
self.fixangle = TRUE;
I added this in PlayerPreThink() in cl_client.qc. I know it's working for yaw because I can see the view moving left and right. However pitch seems to get reset to 0 every frame or two. You would think this would result in shaking but instead I just see my view pointed up a constant amount (probably 10 degrees). Here is sample console output:

Code: Select all

self.angles before is'  0.0  32.7   0.0', after is '-10.0  31.7   0.0'
self.angles before is'-10.0  31.7   0.0', after is '-20.0  30.7   0.0'
self.angles before is'-20.0  30.7   0.0', after is '-30.0  29.7   0.0'
self.angles before is'  0.0  30.7   0.0', after is '-10.0  29.7   0.0'
self.angles before is'  0.0  30.7   0.0', after is '-10.0  29.7   0.0'
self.angles before is'-10.0  29.7   0.0', after is '-20.0  28.7   0.0'
self.angles before is'  0.0  28.7   0.0', after is '-10.0  27.7   0.0'
self.angles before is'-10.0  27.7   0.0', after is '-20.0  26.7   0.0'
self.angles before is'-20.0  26.7   0.0', after is '-30.0  25.7   0.0'
self.angles before is'  0.0  26.7   0.0', after is '-10.0  25.7   0.0'
self.angles before is'  0.0  26.7   0.0', after is '-10.0  25.7   0.0'
self.angles before is'-10.0  25.7   0.0', after is '-20.0  24.7   0.0'
self.angles before is'  0.0  24.7   0.0', after is '-10.0  23.7   0.0'
self.angles before is'-10.0  23.7   0.0', after is '-20.0  22.7   0.0'
self.angles before is'-20.0  22.7   0.0', after is '-30.0  21.7   0.0'
self.angles before is'  0.0  22.7   0.0', after is '-10.0  21.7   0.0'
self.angles before is'  0.0  22.7   0.0', after is '-10.0  21.7   0.0'
self.angles before is'-10.0  21.7   0.0', after is '-20.0  20.7   0.0'
self.angles before is'  0.0  20.7   0.0', after is '-10.0  19.7   0.0'
self.angles before is'-10.0  19.7   0.0', after is '-20.0  18.7   0.0'
self.angles before is'-20.0  18.7   0.0', after is '-30.0  17.7   0.0'
self.angles before is'  0.0  18.7   0.0', after is '-10.0  17.7   0.0'
self.angles before is'  0.0  18.7   0.0', after is '-10.0  17.7   0.0'
self.angles before is'-10.0  17.7   0.0', after is '-20.0  16.7   0.0'
It was generated just by setting pitch_difference to -10 and yaw_difference to -1. As you can see, something is resetting self.angles_x to 0 whereas it is leaving self.angles_y alone. I have already grepped the rest of the Darkplaces quakec source and I couldn't find where it is doing this.

Does anyone have any insight? Maybe I need to put my code somewhere else? Thanks in advance.
mankrip
Posts: 924
Joined: Fri Jul 04, 2008 3:02 am

Re: player's angles_x gets reset to 0 but not angles_y?

Post by mankrip »

Is the cl_lookspring cvar turned on?
Ph'nglui mglw'nafh mankrip Hell's end wgah'nagl fhtagn.
==-=-=-=-=-=-=-=-=-=-==
Dev blog / Twitter / YouTube
kawadahitomi
Posts: 3
Joined: Sun Oct 28, 2012 8:17 pm

Re: player's angles_x gets reset to 0 but not angles_y?

Post by kawadahitomi »

lookspring is "0"

:cry: must be something else ...
Nahuel
Posts: 495
Joined: Wed Jan 12, 2011 8:42 pm
Location: mar del plata

Re: player's angles_x gets reset to 0 but not angles_y?

Post by Nahuel »

maybe controlling the camera with csqc
hi, I am nahuel, I love quake and qc.
kawadahitomi
Posts: 3
Joined: Sun Oct 28, 2012 8:17 pm

Re: player's angles_x gets reset to 0 but not angles_y?

Post by kawadahitomi »

found in SV_PlayerPhysics() in cl_physics.qc:

Code: Select all

	if (!self.fixangle && !g_bugrigs)
	{
		self.angles_x = 0;
		self.angles_y = self.v_angle_y;
		self.angles_z = 0;
	}
commenting out self.angles_x = 0; seems to have solved that problem ...
Post Reply