Commit graph

2335 commits

Author SHA1 Message Date
Christoph Oelckers
520d838a8c - use Scale wrappers in global code and parts of Duke. 2022-10-30 16:51:23 +01:00
Christoph Oelckers
1085752e01 - added more Scale wrappers to spritetype. 2022-10-30 16:51:23 +01:00
Christoph Oelckers
6a3a811a42 - repeats in the wall sprite renderer 2022-10-30 16:51:22 +01:00
Christoph Oelckers
9d8df61324 - got rid of the int version of GetOffsetAndHeight. 2022-10-30 16:51:21 +01:00
Christoph Oelckers
a6fb831894 - scaling demessification in the voxel renderer
(needs thorough testing!!!)
2022-10-30 16:51:21 +01:00
Christoph Oelckers
91c318b708 - renamed most non-sprite xrepeat and yrepeat as refactpring aid.
These will be renamed back later but now they create too much search noise.
A few local variables have been permanently renamed to scale*.
2022-10-30 16:51:20 +01:00
Christoph Oelckers
c678298141 - wrap repeats in the renderer. 2022-10-30 16:51:20 +01:00
Christoph Oelckers
adb3cb888e - manual repeats in Blood. 2022-10-30 16:51:20 +01:00
Christoph Oelckers
2589e7030c - more repeats replaced by SetScale. 2022-10-30 16:51:19 +01:00
Christoph Oelckers
e60fafec52 - got rid of most REPEAT_SCALE factors. 2022-10-30 16:51:19 +01:00
Christoph Oelckers
8c308c8d3e - added ScaleY method to spritetype and used it to get rid of a large amount of 'yrepeat * REPEAT_SCALE' 2022-10-30 16:51:18 +01:00
Christoph Oelckers
c7c3b2a20c - added a SetScale method to spritetype and used it for all places setting x/yrepeat to 0. 2022-10-30 16:51:17 +01:00
Christoph Oelckers
a6e35edc6c - replaced all set_native_clipdist
Note that truncation has to be preserved here to ensure the size stays the same as before so the MulScales were not resolved into their factors.
2022-10-30 16:51:16 +01:00
Christoph Oelckers
d22c473c31 - manual set_const_clipdist replacements 2022-10-30 16:51:15 +01:00
Christoph Oelckers
4af4983d3e - floatified clipdist and replaced fClipdist wrapper.
This uses a new variable because a few things use clipdist as a flag byte
2022-10-30 16:51:14 +01:00
Christoph Oelckers
3577b53c4d - GetWallSpritePosition also benefits from using .dot 2022-10-30 16:51:14 +01:00
Christoph Oelckers
f1baf5c69c - use dot product for getslopeval as well 2022-10-30 16:51:13 +01:00
Christoph Oelckers
02f1f79333 - use .dot() for calculating slopes 2022-10-30 16:51:13 +01:00
Christoph Oelckers
e83d0930bf - clean out the unused sintable stuff 2022-10-30 16:51:13 +01:00
Mitchell Richters
cea2b6b428 - Rename PlayerHorizon::__horiz back to horiz. 2022-10-30 16:51:12 +01:00
Mitchell Richters
0600bf5860 - Negate everything to do with PlayerHorizon::__horiz where appropriate, including some loose horizoff members. 2022-10-30 16:51:11 +01:00
Mitchell Richters
619b8005ac - Rename PlayerHorizon::horiz in prep for negating this angle throughout code. 2022-10-30 16:51:11 +01:00
Christoph Oelckers
513fc478bf - moved clipupdatesector to updatesector.h 2022-10-30 16:51:10 +01:00
Christoph Oelckers
479c732a72 - moved some more things out of build.h 2022-10-30 16:51:10 +01:00
Christoph Oelckers
0eea776065 - moved RS_ bits to gamehud.h because that's all that uses these flags. 2022-10-30 16:51:09 +01:00
Christoph Oelckers
94b91f6ec3 - build.h cleanup
* moved krand and krandf into the games/duke folder because no other game uses them
* moved CVARS to gamefuncs.h.
2022-10-30 16:51:09 +01:00
Christoph Oelckers
4af1461ec3 - got rid of int_clipdist. 2022-10-30 16:51:09 +01:00
Christoph Oelckers
7d3babd678 - ported all pushmove calls to the float version. 2022-10-30 16:51:08 +01:00
Christoph Oelckers
600c2a0243 - map all clipmove calls to the version with a full float interface. 2022-10-30 16:50:48 +01:00
Christoph Oelckers
63c8960769 - deleted mdsprite.* files. 2022-10-27 16:55:54 +02:00
Christoph Oelckers
a4dd5bb4ce - rewrote the model storage code.
Using proper C++ containers now.
2022-10-27 16:55:54 +02:00
Mitchell Richters
c00c8d196e - Simple VecToAngle() > .Angle() replacements. 2022-10-27 16:55:52 +02:00
Christoph Oelckers
6636064d1f - did a few checks with the compatibility optioned slope adjustment and decided to enable it unconditionally.
A CVar was added to make it user-settable, but having this dramatically improves handling on slope edges.
2022-10-27 16:55:52 +02:00
Christoph Oelckers
c505da79e4 - fixed: getzrange must look a bit further for sprites affecting the current position.
This was missed when the function was rewritten because the code was too unclear about it.
2022-10-27 16:55:52 +02:00
Christoph Oelckers
8e9ddf370c - rewrote getzrange
Not using any old Build code anymore. Aside from the trivial stuff this uses code from Doom and SW instead.
2022-10-27 16:55:28 +02:00
Mitchell Richters
13d643deb5 - Duke: Move Duke-exclusive code from PlayerHorizon struct into displayweapon_d() and clamp tangent to handle high pitches.
* Clamped range is slightly higher than original (200 vs. 256), however when tested with idle knuckle cracking, etc, hands were drawn not above the screen unlike unclamped tangent.
2022-10-25 07:07:15 +02:00
Mitchell Richters
c3adf5ea58 - Slight clean up of input constants. 2022-10-25 07:07:14 +02:00
Mitchell Richters
fc8c0b80aa - Clean up chase cam backwards scaling since we're now using floats of the same scale. 2022-10-25 07:07:14 +02:00
Mitchell Richters
3db6a38b4b - Make dragpoint() inline since its a wrapper for another function anyway. 2022-10-25 07:07:14 +02:00
Mitchell Richters
9dd27ee3a2 - Remove old integer dragpoint() interface that was used by floats in lots of places.
* Cannot wait until all the narrowing warnings can be re-enabled...
2022-10-25 07:07:14 +02:00
Mitchell Richters
5cc9774873 - Apply same signedness fix from - fixed signedness issue with slope sprite coefficient. to spriteGetSlope(). 2022-10-25 07:07:14 +02:00
Mitchell Richters
2e8e5f99e7 - Fix mixed X/Y pos subtraction in spriteGetZOfSlopef() and use a bit more of the backend.
* Confirmed coordinate mix-up when reviewing commit `- added spriteGetZOfSlopeF for the backend`.
2022-10-25 07:07:14 +02:00
Christoph Oelckers
310eff6e71 - clean out many wrappers. 2022-10-25 07:07:10 +02:00
Christoph Oelckers
1a03c56eec - floatifying player::slope, part 1 2022-10-25 07:07:09 +02:00
Christoph Oelckers
f0dc95597b - deleted several unused wrappers and overloads. 2022-10-25 07:07:05 +02:00
Christoph Oelckers
fd3ca33aea - deleted set_int_bvel inlines 2022-10-25 07:07:04 +02:00
Mitchell Richters
789fa71a14 - Use g_atan2() within maphoriz() so consistent math is used throughout engine. 2022-10-25 07:07:03 +02:00
Mitchell Richters
5d8cc1b4fc - Store all input speed constants as DAngle to avoid calling DAngle::fromDeg() all the time. 2022-10-25 07:07:02 +02:00
Christoph Oelckers
3c3af06413 - deleted getincangle. 2022-10-25 07:07:02 +02:00
Christoph Oelckers
2ba68df27f - eliminate int_floorz / int_ceilingz in the backend. 2022-10-25 07:07:00 +02:00
Christoph Oelckers
0655db77b9 - delete set_int_floorz and set_int_ceilingz. 2022-10-25 07:07:00 +02:00
Christoph Oelckers
5e2e53d684 - more CanMove fixes, plus salvaging the rest of the old commit.
CanMove twice uses the texel-based nRange as a Build-unit value, this caused strange problems with the initial floatification.
2022-10-25 07:06:57 +02:00
Christoph Oelckers
6b579156aa - Blood HitScan fixes
- changed target parameter of hitscan to a double to simplify its handling.
- HitScan's nRange parameter may be an int, but it is in texel units, not Build units.
2022-10-25 07:06:56 +02:00
Mitchell Richters
2baf35ed2d - Slightly tidy up PlayerHorizon::applyinput(). 2022-10-25 07:06:55 +02:00
Mitchell Richters
1e19b32b59 - Add CVAR to allow unclamping the player's view pitch. 2022-10-25 07:06:55 +02:00
Mitchell Richters
8d3f3c6025 - Cut over to DAngle from fixedhoriz and remove the latter. 2022-10-25 07:06:55 +02:00
Mitchell Richters
0d8b2ba59d - Tidy up all constants in gameinput.cpp and convert to native degrees/pitch where appropriate. 2022-10-25 07:06:55 +02:00
Mitchell Richters
41bbbd9df5 - Remove all remaining uses of fixedhoriz::asbuild(). 2022-10-25 07:06:55 +02:00
Mitchell Richters
a952c35669 - SW: Convert DoPlayerDeathHoriz() to work on pitch and remove now-unused buildhoriz(). 2022-10-25 07:06:55 +02:00
Mitchell Richters
92798b5a07 - Remove most buildhoriz() calls. 2022-10-25 07:06:55 +02:00
Mitchell Richters
293a71ed55 - Remove horizon from gi->WarpToCoords() since we don't even print the horizon in our stats. 2022-10-25 07:06:54 +02:00
Mitchell Richters
eedcfb46c6 - Convert calcviewpitch() to work with a temporary DAngle so we can eliminate the temporary tanhoriz() friend. 2022-10-25 07:06:54 +02:00
Mitchell Richters
ca8f8d6d36 - Remove all remaining q16horiz() calls, also correcting a long-standing Duke bug. 2022-10-25 07:06:54 +02:00
Mitchell Richters
8697e5f054 - Replace all q16horiz(0) calls. 2022-10-25 07:06:54 +02:00
Mitchell Richters
22a9f89b64 - Remove all uses of fixedhoriz::asq16(). 2022-10-25 07:06:54 +02:00
Mitchell Richters
5bf23f0642 - Develop new scaled horizon return to centre with initial return from full articulation scaled by the pitch's sine.
* When coming back from a full view pitch using the original algorithm, the initial snap-back from 90 degrees is very aggressive.
* Return to centre speed retuned to be 1:1 to the ms with the tangent at Duke/SW's clamped pitch.
2022-10-25 07:06:54 +02:00
Mitchell Richters
d923ef9a8c - Perform horizon's return to centre using pitch instead of tangent.
* Return to centre speed tuned to be 1:1 to the ms with the tangent at Duke/SW's clamped pitch.
2022-10-25 07:06:53 +02:00
Mitchell Richters
5851c0f2c6 - Clean up some q16horiz usage and how the view pitch is clamped. 2022-10-25 07:06:53 +02:00
Mitchell Richters
4ef9ec93ea - Remove fixedhoriz::asbuildf() and associated buildf friend.
* The new friend `tanhoriz()` is just for the input code for now.
2022-10-25 07:06:53 +02:00
Mitchell Richters
d8a6471680 - Add fixedhoriz::Tan() and replace most asbuildf() calls with it. 2022-10-25 07:06:53 +02:00
Mitchell Richters
fcdb360b92 - Add fixedhoriz::Sgn(). 2022-10-25 07:06:53 +02:00
Mitchell Richters
e4ae726015 - Rename fixedhoriz::aspitch() to Degrees() to match DAngle objects. 2022-10-25 07:06:53 +02:00
Mitchell Richters
5e11fc1a15 - Remove unused fixedhoriz methods and friends. 2022-10-25 07:06:52 +02:00
Christoph Oelckers
c94a361788 - deleted int_hitpos. 2022-10-25 07:06:48 +02:00
Christoph Oelckers
427e41d388 - allow 'sw...' cheats from the chat in Shadow Warrior. 2022-10-24 23:30:16 +02:00
Christoph Oelckers
38998f36b5 - minor int_* replacements in the backend. 2022-10-23 18:47:17 +02:00
Christoph Oelckers
a409e03570 - deleted set_int_ang 2022-10-23 18:47:17 +02:00
Christoph Oelckers
0eacc8e68e - add_int_z is gone. 2022-10-23 18:47:16 +02:00
Christoph Oelckers
e2d0cbf772 - allow entering cheats in the chat editor without using '#'. 2022-10-23 18:46:18 +02:00
Christoph Oelckers
f1514bbc52 - alternative math for slope planes in hitscan. 2022-10-22 20:41:27 +02:00
Christoph Oelckers
74cf9a2ff2 - hitscan fully rewritten.
No traces of Build code left here! :)
2022-10-22 20:41:27 +02:00
Christoph Oelckers
2991bc752b - split out the pure math stuff from gamefuncs.h into a utility header in 'common'.
Also did a bit of reshuffling on gamefuncs.h to group content better.
2022-10-22 20:41:26 +02:00
Christoph Oelckers
116ba340b2 - further hitscan overhaul.
* added floating point sprite intersect handlers for all sprite types. Hopefully this code is more understandable than Build's original variant.
* cleaned up intersectSprite a bit and moved the geometry math into the utility header.
* made some minor corrections to neartag.
* moved SW's testpointinquad to the backend because it was useful here.
2022-10-22 20:41:26 +02:00
Mitchell Richters
6ca42dc08c - Slightly clean up calcChaseCamPos(). 2022-10-22 20:41:26 +02:00
Christoph Oelckers
e6cfb165f8 - converted all remaining add_int_bvel* calls. 2022-10-22 20:41:26 +02:00
Christoph Oelckers
e00eda6cb8 - Blood: floatified VectorScan.
The texture checks in here definitely need some more verification, though.
Doing a quick test looked ok, but I do not think this was enough.
2022-10-22 20:41:25 +02:00
Christoph Oelckers
044b9e555b - floatified a bit more of nnExtProcessSuperSprites 2022-10-22 20:41:25 +02:00
Christoph Oelckers
09d66914f4 - LinePlaneIntersect
This is for calculating intersections with slope sprites later.
2022-10-22 12:17:04 +02:00
Christoph Oelckers
243c071834 - got rid of bsinf and bcosf. 2022-10-22 12:17:04 +02:00
Christoph Oelckers
6dd7fac902 - eliminated the sine table and moved tilehasmodelorvoxel to a different file to delete engine.cpp. 2022-10-22 12:17:04 +02:00
Christoph Oelckers
ef2f781e09 - rewrite from scratch of neartag. 2022-10-22 12:17:04 +02:00
Christoph Oelckers
20043f6223 - use symbolic constants in neartag calls. 2022-10-22 12:17:03 +02:00
Christoph Oelckers
dcd4ee133b - use a simpler method to calculate the intersection point in intersectSprite and fixed the distance check. 2022-10-22 12:17:03 +02:00
Christoph Oelckers
9c564db015 - replaced try_facespr_intersect with something independently written. 2022-10-22 12:17:03 +02:00
Christoph Oelckers
28a169d02d - cansee floating point rewrite using backend utilities. 2022-10-22 12:17:02 +02:00
Christoph Oelckers
14a8dd451e - redid lintersect with backend utilities.
I left out EDuke32's new handling for collinear traces because it not only was never active but also makes really no sense with neartag which is lintersect's only caller.
2022-10-22 12:17:02 +02:00
Mitchell Richters
95cd74bdc0 - renamed slope functions so that the int versions get a special name. 2022-10-22 12:17:02 +02:00
Christoph Oelckers
9172ab27ca - move all deprecated functions to the bottom in gamefuncs.h. 2022-10-22 12:17:02 +02:00
Christoph Oelckers
ac2a3c443f - got rid of all deprecated updatesector variants.
This required a few changes in the map loader and render interface.
2022-10-22 12:17:02 +02:00
Christoph Oelckers
e4ca397898 - corrected sector check output in validateSprite. 2022-10-22 12:17:02 +02:00
Mitchell Richters
2e4996e8fc - floatified nnextCanMove and deleted most deprecated updatesector variants. 2022-10-22 12:17:02 +02:00
Christoph Oelckers
c5a5e3cef5 - deleted some unused deprecated functions. 2022-10-22 12:17:01 +02:00
Christoph Oelckers
2cc81d0165 - floating point version of rintersect, based on GZDoom's P_InterceptVector. 2022-10-22 12:17:01 +02:00
Christoph Oelckers
b7ddd9e784 - added InterceptVector from GZDoom.
This will be useful for some backend stuff.
2022-10-22 12:17:01 +02:00
Christoph Oelckers
335df86213 - output floating point coordinates in validateSprite 2022-10-22 12:17:00 +02:00
Christoph Oelckers
a8ae8babe2 - cleanup of updatesector.h
Mainly not routing the float variants through the integer variants anymore and deprecating those.
FindSector was also moved into DoUpdateSector because both always need to be used together.
2022-10-22 12:17:00 +02:00
Mitchell Richters
85f716e49b - floatify calcviewpitch 2022-10-22 12:17:00 +02:00
Christoph Oelckers
6a1ff029b7 - floatified getslopeval and all related code. 2022-10-22 12:17:00 +02:00
Christoph Oelckers
ece8663f5e - floatified calcSlope and cleaned up the get*slope interface 2022-10-22 12:17:00 +02:00
Christoph Oelckers
bd9dfadf6d - use REPEAT_SCALE ih the wall/floorsprite getter functions. 2022-10-22 12:16:57 +02:00
Christoph Oelckers
e6807964ae - don't use Build utilities in the render backend. 2022-10-22 12:16:57 +02:00
Christoph Oelckers
b2d1988e50 - use engine utilities for the section builder’s inside check 2022-10-22 12:16:57 +02:00
Christoph Oelckers
f5e6503b26 - merge NearestPointLine into NearestPointOnWall 2022-10-22 12:16:57 +02:00
Christoph Oelckers
c44fd07f37 - floatified the portal displacement 2022-10-22 12:16:57 +02:00
Christoph Oelckers
c87b4a581b - got rid of the WallStart/End macros
They never got much use and the places where they were used work just as well without them
2022-10-22 12:16:56 +02:00
Christoph Oelckers
cbfc9a8252 - added spriteGetZOfSlopeF for the backend 2022-10-22 12:16:56 +02:00
Christoph Oelckers
fd4f04b5fd - eliminated fixed point GetSoundPos variants 2022-10-22 12:16:56 +02:00
Christoph Oelckers
ab23f6b114 - floatify clipangle math in HWLineToLinePortal::Setup 2022-10-22 12:16:56 +02:00
Christoph Oelckers
375d346ae8 - pass a vector to the processSprites interface. 2022-10-22 12:16:56 +02:00
Christoph Oelckers
bbf77c908b - pass a floating point view position to the bunch drawer 2022-10-22 12:16:56 +02:00
Christoph Oelckers
0b8f7f6a9f - deleted add_int_pos 2022-10-22 12:16:53 +02:00
Christoph Oelckers
fb2c4efa2f - eliminated the last place where tspritetype’s add_int_z was used 2022-10-22 12:16:53 +02:00
Christoph Oelckers
ca8b9e9793 - overhauled getzrangepoint to use backend utilities 2022-10-22 12:09:54 +02:00
Christoph Oelckers
c511e5dca9 - eliminated int_xvel 2022-10-22 11:33:16 +02:00
Christoph Oelckers
671e75ba5f - eliminate the last int_zvel call 2022-10-22 09:34:16 +02:00
Christoph Oelckers
666f768413 - deleted set_int_xvel and set_int_zvel. 2022-10-22 09:34:15 +02:00
Christoph Oelckers
9cfd56a912 - mathutil is not needed anymore. 2022-10-22 09:34:13 +02:00
Christoph Oelckers
1111251887 type safe CVAR declaration. 2022-10-22 09:25:27 +02:00
Mitchell Richters
db5fcde0db - Fix issues with startup on fresh config following CVAR overhaul. 2022-10-22 14:42:12 +11:00
Mitchell Richters
4e8331b16b - Fix broken wrap-around in the double version of BobVal().
* My first time actually witnessing this, but was only a problem with GCC...
2022-10-22 13:51:31 +11:00
Christoph Oelckers
479616a80f - got new CVar system from GZDoom. 2022-10-22 00:12:17 +02:00
Christoph Oelckers
e224abb949 - silenced warnings. 2022-10-21 00:00:07 +02:00
Christoph Oelckers
1814274124 - eliminated all of add_int_zvel. 2022-10-21 00:00:05 +02:00
Christoph Oelckers
0432930e5b - converted all dist() calls to vector math and deleted the utilities 2022-10-21 00:00:04 +02:00
Christoph Oelckers
3c9a94dba8 - consolidated Duke’s ‚away from wall‘ check in the backend
This was also very useful in SW to avoid spawning ‚floating‘ footprints due to lack of an equivalent check in the original.
2022-10-21 00:00:02 +02:00
Christoph Oelckers
19bca44f37 - added a float version of BobVal.
We will need this later.
2022-10-20 23:59:27 +02:00
Christoph Oelckers
5eb9af1e00 - Backend update from GZDoom
IQM model support and a few bugfixes.
2022-10-20 22:24:25 +02:00
Mitchell Richters
bfafe4e21c - Tidy up some of the spaces on SetValueForKey() calls.
* Although I hate the spaces and have no idea why anyone would do this, there's too many such calls in the document so easiest to just stick with it :/
2022-10-21 00:35:59 +11:00
Mitchell Richters
8d2e022250 - Fix broken paths in default configuration on Unix how I asked for it to be fixed. 2022-10-21 00:35:58 +11:00
Unrud
8459ee1cb2 Fix broken paths in default configuraiton on Unix
The default paths for **FileSearch.Directories** and **SoundfontSearch.Directories** are somewhat broken.

`SHARE_DIR` is defined as just `/usr/local/share/`.
The paths `…/games/raze` are not added to **FileSearch.Directories**.
`GAME_DIR` is defined as `.config/raze` on Unix. Combining it with the prefix `…/share/` is wrong.

Excerpt from the default configuration:

```ini
[FileSearch.Directories]
…
Path=/usr/local/share/
…

[SoundfontSearch.Directories]
…
Path=/usr/local/share/.config/raze/soundfonts
Path=/usr/local/share/games/.config/raze/soundfonts
Path=/usr/share/.config/raze/soundfonts
Path=/usr/share/games/.config/raze/soundfonts
```
2022-10-20 23:54:46 +11:00
Mitchell Richters
8bfcb8c939 - Floatify InputPacket::fvel and InputPacket::svel.
* Since all velocities are floated, we can now take each game's keymove scaling into its ticker and use a consistent keymove size, making non-mouselook and controller input truly identical across the games without having to try and fudge any values.
2022-10-20 00:48:09 +02:00
Mitchell Richters
def2b9d483 - Flip svel around in the input code so we can use proper anti-clockwise vector math. 2022-10-20 00:48:09 +02:00
Christoph Oelckers
b0b5dbc55b - eliminated add_int_ceilingz 2022-10-19 18:26:16 +02:00
Christoph Oelckers
23c529589e - eliminated add_int_xvel 2022-10-19 18:26:16 +02:00
Mitchell Richters
bc018dd946 - Use getCorrectedScale() in conjunction with looking keys like scaletozero() functions. 2022-10-18 19:52:02 +02:00
Mitchell Richters
bdc6a5cf69 - Remove fudging from I_GetInputFrac() and correct getPushBuild(). 2022-10-18 19:52:02 +02:00
Christoph Oelckers
72dc3d5da9 - use mapangle in more places, mainly constants and random values using special formula 2022-10-18 19:01:45 +02:00
Christoph Oelckers
0e1a566d62 - added mapangle function for converting angles from map data.
This is just a wrapper around DAngle::fromBuild, its purpose is to clearly highlight data that cannot be refactored and needs to be converted
2022-10-18 19:01:45 +02:00
Christoph Oelckers
559fe495fb - floatified movesprite and the thrust vector. 2022-10-18 18:34:24 +02:00
Christoph Oelckers
8137718133 - floatified movespritez 2022-10-18 18:34:24 +02:00