Commit graph

66 commits

Author SHA1 Message Date
Bill Currie
84a24dbb34 [renderer] Make R_RenderView private
This is actually a better solution to the renderer directly accessing
client code than provided by 7e078c7f9c.

Essentially, V_RenderView should not have been calling R_RenderView, and
CL_UpdateScreen should have been calling V_RenderView directly. The
issue was that the renderers expected the world entity model to be valid
at all times. Now, R_RenderView checks the world entity model's validity
and immediately bails if it is not, and R_ClearState (which is called
whenever the client disconnects and thus no longer has a world to
render) clears the world entity model. Thus R_RenderView can (and is)
now called unconditionally from within the renderer, simplifying
renderer-specific variants.
2021-12-24 06:45:12 +09:00
Bill Currie
4dc2e6cac2 [nq,qw] Reset view animation pose when model changes
I think this bug has been haunting us since we introduced lerping. I do
remember chasing bad pose indices 20 years ago and never finding the
cause. I guess we never thought to check the view model.
2021-12-17 08:21:32 +09:00
Bill Currie
076f424d39 [qw] Actually fix the idle scale
Oops. I really need to get cl_view merged.
2021-07-24 11:38:28 +09:00
Bill Currie
d3b7f7fbc8 [nq,qw] Fix broken intermission view
The idle scale was 114.591559 time too big (forgot both half angle for the
quaternion and converting from degrees to radians for the idle rotations).

Also, take the intermission view position and rotation direct from the
player entity, not viewstate, as while viewstate.origin is the same,
viewstate.rotation is the player's input, not the rotation set by the
server. Fixes the unlocked view angle.
2021-07-24 11:33:53 +09:00
Bill Currie
5cf1da7c25 [client] Finish moving onground to viewstate
Missed this in the entity cleanup (really, should have been separate
commits, but oh well).
2021-03-20 00:58:37 +09:00
Bill Currie
5bf21931c7 [renderer] Remove more old fields from entity_t
The only transform related field remaining is old_origin. This also
brings the renderer closer to using simd (lots of stuff to fix still,
though).
2021-03-20 00:08:21 +09:00
Bill Currie
2015474468 Move and clean up clview.h
Redundant or dead prototypes deleted, and the client/view.h seems a good
place for the file.
2021-03-12 11:48:53 +09:00
Bill Currie
8466de2325 [client] Use vec4_t in entity_state_t
And clean up the mess (sort of:P)
2021-03-11 16:19:49 +09:00
Bill Currie
ca38f9b616 [qw] Use entity_state_t as a base for player_state_t
This will, in the long run, help clean up a lot of the differences in
the handling of entities in the clients.
2021-03-11 14:27:36 +09:00
Bill Currie
c9bbc2971a [qw] Rename view_message to view_state
Makes more sense to me.
2021-03-11 12:47:08 +09:00
Bill Currie
098ceed5ff [client] Merge nq and qw temp entity handling
This finally gets cl_tent merged away.
2021-03-10 18:04:18 +09:00
Bill Currie
fbc1bd9f6e [renderer] Clean up entity_t to a certain extent
This is the first step towards component-based entities.

There's still some transform-related stuff in the struct that needs to
be moved, but it's all entirely client related (rather than renderer)
and will probably go into a "client" component. Also, the current
components are directly included structs rather than references as I
didn't want to deal with the object management at this stage.

As part of the process (because transforms use simd) this also starts
the process of moving QF to using simd for vectors and matrices. There's
now a mess of simd and sisd code mixed together, but it works
surprisingly well together.
2021-03-10 00:01:41 +09:00
Bill Currie
6d5ffa9f8e [build] Move to non-recursive make
There's still some cleanup to do, but everything seems to be working
nicely: `make -j` works, `make distcheck` passes. There is probably
plenty of bitrot in the package directories (RPM, debian), though.

The vc project files have been removed since those versions are way out
of date and quakeforge is pretty much dependent on gcc now anyway.

Most of the old Makefile.am files  are now Makemodule.am.  This should
allow for new Makefile.am files that allow local building (to be added
on an as-needed bases).  The current remaining Makefile.am files are for
standalone sub-projects.a

The installable bins are currently built in the top-level build
directory. This may change if the clutter gets to be too much.

While this does make a noticeable difference in build times, the main
reason for the switch was to take care of the growing dependency issues:
now it's possible to build tools for code generation (eg, using qfcc and
ruamoko programs for code-gen).
2020-06-25 11:35:37 +09:00
Bill Currie
2897dc5a16 Frame-rate independent cshift fades.
As per mh's post on inside3d.com. I don't see any difference, but it still
fades well, so... :)
http://forums.inside3d.com/viewtopic.php?f=12&t=4899
2012-06-15 22:02:18 +09:00
Bill Currie
8dc1961e8c Yet more diff noise reduction. 2012-06-15 22:02:17 +09:00
Bill Currie
c8e3cf05d0 Finish the "merge" of V_CalcBob.
qw now uses cl.onground instead of pmove's onground (d'oh). nq now has a
dummy spectator flag.
2012-06-15 22:02:17 +09:00
Bill Currie
c4d7b65a05 Much diff noise reduction in V_CalcRefdef.
NQ's client-side onground now works similarly to QW's: -1 = not on ground,
0+ = on ground (plane num?) but only 0 is used in NQ as the necessary
information is not sent over the network.
2012-06-15 22:02:17 +09:00
Bill Currie
7dd400d04a "Merge" V_CalcRoll. 2012-06-15 22:02:16 +09:00
Bill Currie
301a6431c6 Correct a comment, and more diff reduction.
It turns out NQ "never" sent coordinats at 1/16 resolution: even q1source
sends coords at 1/8 resolution. This gets rid of an annoying difference.
2012-06-15 22:02:16 +09:00
Bill Currie
5bae5b3740 Much diff noise reduction. 2012-06-15 22:02:16 +09:00
Bill Currie
81dc750857 Pretend to allow screen offsets.
Because qw's maxclients is always > 1, they'll never work, though :)
2012-06-15 22:02:16 +09:00
Bill Currie
e6ce44fde7 Change qw's punchangle to a vector.
Consistency with nq :) (however, only pitch works in qw).
2012-06-15 22:02:16 +09:00
Bill Currie
d561d5587d Move the simangles hack out of cl_view.
The places that will need to be fixed are now three, but cl_view.c now
doesn't mess with values it shouldn't alter.
2012-06-15 22:02:16 +09:00
Bill Currie
83d6dd7262 Fix idealpitch and viewheight in qw.
For certain values of "fix" ;). Both are brought back to life but
idealpitch is never set (always 0) and veiwheight is set in V_RenderView().
However, this brings the rest of the code in cl_view.c just that little bit
closer to merged :)
2012-06-15 22:02:15 +09:00
Bill Currie
e7c3ae911f Clean up some diff noise. 2012-06-14 22:45:24 +09:00
Bill Currie
96785ccec7 Clean up chase/spectator camera stuff.
o  Rename nq's cl_cam.c to cl_chase.c.
 o  Split out the chase cam stuff from qw's cl_cam.c to cl_chase.c
2012-06-14 22:45:05 +09:00
Bill Currie
23a38738fc Massive whitespace cleanup.
Lots of trailing whitespace and otherwise blank lines.
2012-05-22 08:23:22 +09:00
Bill Currie
bc1b483525 Nuke the rcsid stuff.
It's pretty useless in git.
2012-04-22 10:56:32 +09:00
Bill Currie
4d9c3408a1 Start putting the pieces back together.
The renderer now gets initialized and things sort of work (qw-client will
idle, though nothing is displayed). However, as the viddef stuff is broken,
it segs on trying to run the overkill demo.
2012-04-11 14:58:55 +09:00
Bill Currie
8e91fb7bc1 Get the basics linking.
Still, nothing will work: no plugins are loaded and they're all broken
anyway.

glx, sgl, glslx etc are going away, just the basics will be built: fbdev
(probably go away eventually), sdl, x11 and hopefully someday win. That's
actually the only reason anything links.
2012-04-11 14:58:53 +09:00
Bill Currie
7e078c7f9c Revamp cshifts and implement in glsl.
The renderer should now be free of any direct access to client code. Even
3d rendering is now done via a function pointer.

The cshift code is done as a 2d screen function.
2012-01-28 20:45:14 +09:00
Bill Currie
7bfddd7ffe Gut most of the old skin code.
Custom skins are smashed on most targets. Player colors don't work, etc.
However, this will let me do a much cleaner implementation.
2012-01-23 16:16:30 +09:00
Bill Currie
3eb859a88f Move the entity transform setup into the clients.
This has several benifits:
  o The silly issue with alias model pitches being backwards is kept out
    of the renderer (it's a quakec thing: entites do their pitch
    backwards, but originally, only alias models were rotated. Hipnotic
    did brush entity rotations in the correct direction).
  o Angle to frame vector conversions are done only when the entity's
    angles vector changes, rather than every frame. This avoids a lot of
    unnecessary trig function calls.
  o Once transformed, an entity's frame vectors are always available.
    However, the vectors are left handed rather than right handed (ie,
    forward/left/up instead of forward/right/up): just a matter of
    watching the sign. This avoids even more trig calls (flag models in
    qw).
  o This paves the way for merging brush entity surface rendering with the
    world model surface rendering (the actual goal of this patch).
  o This also paves the way for using quaternions to represent entity
    orientation, as that would be a protocol change.
2011-12-15 17:09:01 +09:00
Bill Currie
62f7d14ed2 White space cleanups. 2011-09-04 09:58:11 +09:00
Bill Currie
245cfb0b6f Much diff reduction.
In the process, found a bug where the yaw speed was not being limited as
desired.
2011-09-04 09:58:11 +09:00
Bill Currie
88005f6710 Diff reduction. 2011-09-04 09:58:11 +09:00
Bill Currie
efa0105748 Rename some headers to fix doxygen warnings. 2011-07-23 15:58:45 +09:00
Bill Currie
997102fea8 audit the usage of "only"
There are still a few iffy places (notably around certain prepositions), but
the relevant sentences are now much easier to read.
2010-01-13 06:42:26 +00:00
Bill Currie
3fb03fc2be hah, should have been using __attribute__((used)) all that time (rather
than __attribute__((unused))). fixes the missing console in -x11
2005-08-04 15:27:09 +00:00
Bill Currie
a409ea4a74 spawn code complete 2005-05-08 08:04:50 +00:00
Bill Currie
cd2f9434fc proxy now stays connected :) also gets the server data packet. most changes
due to move of pmove.h
2005-05-02 04:09:15 +00:00
Bill Currie
d308d324cc o misc little cleanups
o add plent_state_t, packet_players_t and delta_t in preparation for
    re-worked delta compression code.
  o use plent_state_t in the client.
2005-04-30 03:59:23 +00:00
Bill Currie
2cc2da4d90 various little cleanups that should very fractionally speed up Host_Frame 2005-04-25 01:28:37 +00:00
Bill Currie
8a237169c3 patches to allow for multiple view ports 2004-05-07 03:54:35 +00:00
Bill Currie
31db390df5 rename cl_overlay_gravity to cl_scoreboard_gravity, rename the hud/sbar,
stuff from cl_* to hud_*, add hud_scoreboard_gravity to nq.
2003-05-09 20:30:50 +00:00
Ragnvald Maartmann-Moe IV
5fb8aa07f3 Code style, people. Love it or leave it! 2003-03-21 21:25:44 +00:00
Bill Currie
761a7546dd re-arrange things so __attribute__ and __builtin_expect are properly
autoconfiscated so rcsid will continue to work with gcc 3.3
2003-01-15 15:31:36 +00:00
Bill Currie
71196fedf6 make gcc more anal about prototypes, string constants and function
visibility (ie, global functions must have a prototype)
2003-01-06 18:28:13 +00:00
Ragnvald Maartmann-Moe IV
6cef69545e Whitespace, prune dead code. 2002-07-07 02:33:00 +00:00
Ragnvald Maartmann-Moe IV
1478dcd9c9 Prune dead code. 2002-07-02 21:37:22 +00:00