changed .viewzoom field to scale view frustum slopes rather than fov
angle, this makes zooming more fluid and straightforward, and causes a 1
to 1 correspondence between the sensitivity decrease and the view size
decrease
added cls.timedemo check in S_PaintAndSubmit to use cl.mtime[0] for sound sync when doing timedemos, this greatly improves the accuracy of benchmarks with respect to sound mixing time
player model no longer shadows gun model
technical explanation: this was done by adding a RENDER_NOSELFSHADOW flag which is used on view models, this flag prevents any entities using the flag from shadowing themselves or eachother... then another hack was added to queue the shadowing of the RENDER_EXTERIORMODEL entities in the RENDER_NOSELFSHADOW batch (so it does not shadow other RENDER_NOSELFSHADOW entities), but still have it receive shadows by lighting it in the normal self-shadowing batch... In more general use the RENDER_NOSELFSHADOW flag could be used to make characters not shadow themselves (like in Doom3), however r_shadow_frontsidecasting 0 is a better approach to that problem (partial self-shadowing characters)
added GL_DepthRange function and MATERIALFLAG_SHORTDEPTHRANGE (now used by viewmodels), this prevents viewmodels from poking into walls
changed EF_NODEPTHTEST code to set MATERIALFLAG_SHORTDEPTHRANGE instead of MATERIALFLAG_NODEPTHTEST, this causes proper rendering of opaque models (such as the held item in prydon gate)
this also reenabled stencil shadows on view models but they render as if they are very very small (due to MATERIALFLAG_SHORTDEPTHRANGE)
changed default value of cl_viewmodel_scale from 0.3 to 1, this makes stereo rendering look better (small gun model looks silly when you can actually see that it is small) and makes rtlight cubemaps affect the gun more realistically
view models no longer receive stencil shadows (only basic light visibility culling like transparent surfaces receive), this makes the gun much more visible and protects it the player's own shadow, this change may is a major one and may get further changes (such as better culling perhaps)
check vid_activewindow in several spammy prints that occur when the client is running slower than the server
changed cl.time warnings from developer 10 to developer 100 and check vid_activewindow
made the following changes to CL_NetworkTimeReceived:
changed cl_nettimesyncmode 2 to be more tolerant of out of bounds values, this fixes occasional choppyness
now prints warnings if time is out of bounds if developer is 10 or higher
simplified some code
disabled time interpolation code during signon process, this should give better starting values for cl.time
fixed a bug where the loading plaque caused front buffer rendering of all later stereo views (glDrawBuffer was not being set in stereo rendering, except when vid_stereobuffer was used)
swapped left/right views so that positive values for r_stereo_separation produce normal stereo, not cross-eyed
added r_stereo_angle cvar based on a patch from Thomas Spriggs, this allows you to make the views look different directions, in addition to the existing offset capability
cl_bobmodel_side and cl_bobmodel_up cvars now are scaled by cl_viewmodel_scale so that cl_viewmodel_scale can be changed without affecting the amount of viewmodel movement on the screen
reworked predicted player physics to call PlayerPreThink before the move and PlayerPostThink after the move, in addition to calling those surrounding the regular physics code, hopefully this doesn't break anything, it fixes the jumping bug introduced in the recent changes
fixed two timing flaws where cl.realframetime was used instead of (cl.time - cl.oldtime), one being centerprint fade time, and the other being ambient sky/water noise fading
changed PlayerPrethink/think/PlayerPostThink to occur regardless of movement prediction, so they are guarenteed to run every server frame like in quake/quakeworld, only the movement itself is done elsewhere and only for MOVETYPE_WALK cases, this means that animations keep proper sync regardless of prediction timing
havoc [Sat, 31 Mar 2007 09:42:34 +0000 (09:42 +0000)]
patch from div0 that improves mac keyboard support in the AGL client, this includes a copy of SDL_mackeys.h (as vid_agl_mackeys.h), it should be kept up to date as appropriate
havoc [Fri, 30 Mar 2007 20:42:13 +0000 (20:42 +0000)]
added back bullet impact sparks due to complaints
made grenade smoke trails only last 2/3rd as long (this matches the quake grenade trail vs the quake rocket trail length)
havoc [Fri, 30 Mar 2007 08:25:12 +0000 (08:25 +0000)]
changed cl_particles_quake mode to use size 1.5 for particles rather than size 1.0, this makes them about as visible as in glquake
changed explosion sparks to not be affected by gravity and some other differences in how they are spawned
removed sparks on bullet/nail impact effects, made smoke bigger and a bit darker so it's not just small white puffs, it now looks rather nice, and more true to the original quake gunshot/spike/superspike effect
havoc [Fri, 30 Mar 2007 03:28:56 +0000 (03:28 +0000)]
cleaned up R_DrawCoronas code to be more readable/maintainable
modified R_DrawCoronas to use a spherical distance check on coronas rather than a view-direction dependent one, and changed the distance checks, this should get rid of the 'seeing your own muzzleflash corona when looking down' issue
havoc [Thu, 29 Mar 2007 09:18:03 +0000 (09:18 +0000)]
changed Sys_Sleep functions to take microseconds instead of milliseconds (this may mildly improve sleep accuracy on Linux dedicated servers)
modified the host main loop to check for server packets each iteration of the loop rather than at the server framerate (this doesn't accomplish much yet but has potential)
added sv_checkforpacketsduringsleep cvar to enable use of select() instead of Sys_Sleep()
havoc [Thu, 29 Mar 2007 00:39:50 +0000 (00:39 +0000)]
added r_shadow_usenormalmap cvar which allows you to disable directional shading on rtlights, looking a bit more like glquake lights, this also renders somewhat faster so it may be of use as a performance tweak for some cards
added an optimized ambient-without-diffuse path in the GLSL shader to help r_shadow_usenormalmap 0 performance
havoc [Thu, 29 Mar 2007 00:33:16 +0000 (00:33 +0000)]
added NetConn_SleepMicroseconds function, and LHNET_SleepUntilPacket_Microseconds function, this uses select() to wait for a specified amount of time or until a packet is received
havoc [Tue, 27 Mar 2007 19:48:09 +0000 (19:48 +0000)]
added .float disableclientprediction field for qc to use to disable prediction intentionally if it so wishes
added .movetype check to disable prediction whenever movetype is not MOVETYPE_WALK, this fixes unwanted prediction issues in all known cases
moved prediction disabling code from SV_ReadClientMove to SV_ExecuteClientMoves as a minor cleanup
havoc [Sat, 24 Mar 2007 23:04:58 +0000 (23:04 +0000)]
changed default value of cl_netinputpacketlosstolerance from 4 to 1, matching Quake3, as it's actually quite rare for more than every other packet to be lost
havoc [Sat, 24 Mar 2007 17:46:19 +0000 (17:46 +0000)]
moved clearing of self.fixangle to SV_Physics_ClientEntity so that it is only cleared each time PlayerPreThink is called, fixing bugs with irregular move times causing spectating smoothing to fail
havoc [Sun, 18 Mar 2007 22:44:59 +0000 (22:44 +0000)]
changed bestweapon command to match the one in proquake - taking each weapon identifier as a separate parameter, rather than one string of them, I don't know why the person asking for bestweapon support gave me an example of a single parameter as no other engine seems to do it that way
havoc [Sat, 17 Mar 2007 13:08:52 +0000 (13:08 +0000)]
play a different sound (sound/misc/talk2.wav) for team chat messages (only if the file exists of course), to accomplish this the team chat messages now have () around the player name, which is compatible with other engines with this feature
havoc [Thu, 15 Mar 2007 14:06:03 +0000 (14:06 +0000)]
disabled cl_movement prediction when cls.servermovesequence is 0 (either a protocol that does not support move synchronization, or prediction is disabled)
removed cl_movement_latency cvar as it no longer serves any purpose with the removal of support for prediction on unsynchronized move protocols
havoc [Thu, 15 Mar 2007 13:54:37 +0000 (13:54 +0000)]
rewrote stringlist stuff, now uses a (dynamically resizing) array of pointers rather than a linked list, and uses a selection sort rather than a bubble sort, this has changed the "maps" command from taking about 7 seconds on my system to about 70ms
havoc [Thu, 15 Mar 2007 11:34:14 +0000 (11:34 +0000)]
main options menu now has only the most frequently used options, and contains several presets for effects and lighting (renamed Graphics Options to Lighting)
main options menu now fits on a 320x240 display
havoc [Thu, 15 Mar 2007 11:23:50 +0000 (11:23 +0000)]
reworked quake query code (CCREQ_/CCREP_ handling) to use MSG_Read functions, it was previously using a mixture of these and direct packet parsing, which was not working, this means quake query tools work again
havoc [Thu, 15 Mar 2007 10:34:24 +0000 (10:34 +0000)]
separated the code that sends player name and such into CL_SendPlayerInfo
moved call to CL_SendPlayerInfo from signon 2 to signon 1
moved cl_begindownloads from signon 2 to signon 1, this fixes the 'no ambient sounds' bug
havoc [Thu, 15 Mar 2007 10:32:11 +0000 (10:32 +0000)]
changed default snd_soundradius from 1000 to 2000, matching proquake (which attempts to match dos quake), this means you can fire a rocket across the outdoor pent area in dm3 and hear the explosion
havoc [Thu, 15 Mar 2007 10:12:52 +0000 (10:12 +0000)]
implemented support for fuhquake macros in fuhquake/QIZMO format .loc files, hardcoded the strings for these rather than using cvars (unlike fuhquake) because excess settings is silly