Commit graph

1690 commits

Author SHA1 Message Date
Christoph Oelckers
27ae8d627b - vertex height map creator for precise render mode like in GZDoom. 2021-12-30 09:58:44 +01:00
Christoph Oelckers
3fee8f3c4e - replaced dragpoint (both the generic and the Blood variant) with a newly written vertexscan function.
This is a template allowing to run any task on a set of walls with equivalent start point.
Code was redesigned from scratch to be more clear than the existing variants.

The idea here is to reuse the base algorithm for other things that need to operate on the equivalent set of a given wall's start point.
2021-12-30 09:58:15 +01:00
Christoph Oelckers
a15e5399fa - don't use a full sector backup in the triangulator for comparing changes.
Instead use a smaller struct only containing the relevant data.
2021-12-30 09:58:14 +01:00
Christoph Oelckers
fb53f32603 - handle the remaining write accesses to ceilingz and floorz.
Everything is routed through the wrapper functions now.
2021-12-30 09:58:14 +01:00
Christoph Oelckers
059412b75e - first batch of routing all write access to sectortype::ceilingz and floorz through a function interface.
We need this for implementing "precise" rendering to flag vertices as dirty.
2021-12-30 09:58:14 +01:00
Christoph Oelckers
8710e76a2d - delete voxel models when shutting down 2021-12-30 09:58:10 +01:00
Christoph Oelckers
dc7082f264 - removed duplicate PClass::StaticInit call. 2021-12-30 09:58:10 +01:00
Christoph Oelckers
12619671e6 - Duke/RR: added fudging to work around aiming randomization issues with the pistol when autoaim is off.
Solution is the same as in RedNukem/EDuke32: do one hitscan directly in aiming order and if that hits a sprite, use it as aiming target.
2021-12-30 09:58:10 +01:00
Christoph Oelckers
1f2abda23c - fixed map ccmd.
Something got lost when implementing user maps.
2021-12-30 09:58:10 +01:00
Christoph Oelckers
eaac9de1a4 - Added skill selection for user maps. 2021-12-30 09:58:09 +01:00
Christoph Oelckers
e5c9691166 - fixed clipping issue with sloped walls.
The window was calculated too narrow for this case, it needs to use the lower point of a floor slope and the upper point of a ceiling slope.
2021-12-30 09:58:09 +01:00
Christoph Oelckers
50bad91f14 - handle edge case in clipper where adding a new window will remove the entire clipper's content before adding the new range.
This case would have passed the actual logic but not the asserts.
2021-12-30 09:58:09 +01:00
Christoph Oelckers
04f3268893 - silenced the debug output that was still present in the section creator. 2021-12-30 09:58:08 +01:00
Christoph Oelckers
00a7be545d - added a map preview to the user map browser. 2021-12-30 09:58:08 +01:00
Christoph Oelckers
6dfd975f88 - activated the user map menu item in the episode selection. 2021-12-30 09:58:08 +01:00
Christoph Oelckers
ffd23c23ca - implemented user map browser. 2021-12-30 09:58:08 +01:00
Christoph Oelckers
3be2128b3a - added utilities to read all usermaps into a directory tree 2021-12-30 09:58:08 +01:00
Christoph Oelckers
ccf50c7812 - fixed user map music lookup for real without disabling other things. 2021-12-30 09:58:08 +01:00
Christoph Oelckers
87a32d9095 Revert "- fixed music lookup for user maps."
This reverts commit 9558e7d518c1d5f7a898fcb2564078bd9ec956ac.
2021-12-30 09:58:08 +01:00
Christoph Oelckers
4843cf98d8 - usermap files 2021-12-30 09:58:07 +01:00
Christoph Oelckers
7204b7c616 - fixed music lookup for user maps.
This was only looking for real files, but instead needs to check the file system. The game directory's content will always be part of that so other checks are counterproductive.
2021-12-30 09:58:07 +01:00
Christoph Oelckers
99b069d122 - fixed the user map label.
TXT_USERMAP does not exist, only MNU_USERMAP does.
2021-12-30 09:58:07 +01:00
Christoph Oelckers
34f14aa4c3 - added vector variants of FindDistance2D and FindDistance3D 2021-12-30 09:58:07 +01:00
Christoph Oelckers
6dcc8761fe - replaced the last remaining s() calls in Blood's interface and deleted the method. 2021-12-30 09:57:51 +01:00
Christoph Oelckers
9e14b168bb - addressed more shadowed variables in common code. 2021-12-30 09:57:32 +01:00
Christoph Oelckers
ca9d73ffee - renamed some shadowing variables in common code. 2021-12-30 09:57:32 +01:00
Mitchell Richters
a1900253e5 - Fix GCC warning warning: "/*" within comment [-Wcomment]. 2021-12-30 09:57:31 +01:00
Christoph Oelckers
0ebd7532b8 - don't use s() in other getters. 2021-12-30 09:57:30 +01:00
Christoph Oelckers
3992dfae84 - fixed: When merging clip nodes the redundant one needs to be deleted with RemoveRange.
Calling Free is not enough.
2021-12-30 09:57:29 +01:00
Christoph Oelckers
b00f197be3 - fixed: RemoveClipRange did not shorten the range if it had to split it up. 2021-12-30 09:57:29 +01:00
Christoph Oelckers
5699488bea - get rid of spritetype in inactive code. (Search noise removal) 2021-12-30 09:57:20 +01:00
Christoph Oelckers
6766a5922a - pass actors to calcChaseCamPos. 2021-12-30 09:57:18 +01:00
Christoph Oelckers
40a307650d - the really final parts of the shared code using s() cleaned up. 2021-12-30 09:57:15 +01:00
Christoph Oelckers
09634c4993 - use actors instead of sprites in the new renderer's API. 2021-12-30 09:57:15 +01:00
Christoph Oelckers
f602cf3806 - deal with s() in shared code.
clip.cpp was left alone, except for the actual call.
2021-12-30 09:57:14 +01:00
Christoph Oelckers
d0143db8fe - got rid of sx() and sm() inlines. 2021-12-30 09:57:13 +01:00
Christoph Oelckers
a2fc415b30 - fixed Exhumed panning setup.
Converted it to floating point and removed the nonsensical & with the texture size that was clearing significant bits.
2021-12-30 09:57:09 +01:00
Mitchell Richters
dd0ff465b0 - Replace spritetypebase oz with opos.Z calls and eliminate spritetypebase opos union. 2021-12-30 09:57:07 +01:00
Mitchell Richters
a79b4b5ffc - Replace spritetypebase oy with opos.Y calls. 2021-12-30 09:57:06 +01:00
Mitchell Richters
e0fb92bb01 - Replace spritetypebase ox with opos.X calls. 2021-12-30 09:57:06 +01:00
Mitchell Richters
baf78848eb - Replace spritetypebase z with pos.Z calls and eliminate spritetypebase pos union. 2021-12-30 09:57:06 +01:00
Mitchell Richters
cecb8dc48e - Replace spritetypebase y with pos.Y calls. 2021-12-30 09:57:05 +01:00
Mitchell Richters
33ca55023f - Replace spritetypebase x with pos.X calls. 2021-12-30 09:57:05 +01:00
Mitchell Richters
09e00a69fe - Replace walltype y with pos.Y calls and eliminate walltype pos union. 2021-12-30 09:57:04 +01:00
Mitchell Richters
51b647da87 - Replace walltype x with pos.X calls. 2021-12-30 09:57:04 +01:00
Mitchell Richters
cab4ddb1c8 - Eliminate some stale code out of intvec.h. 2021-12-30 09:57:04 +01:00
Mitchell Richters
b24f07f281 - Capitalise vec2_16_t y variable. 2021-12-30 09:57:03 +01:00
Mitchell Richters
e52c3e6d82 - Capitalise vec2_16_t x variable. 2021-12-30 09:57:03 +01:00
Mitchell Richters
b2ab64bb62 - Capitalise vec3_t z variable. 2021-12-30 09:57:03 +01:00
Mitchell Richters
68e2691be7 - Capitalise vec3_t y variable. 2021-12-30 09:57:03 +01:00
Mitchell Richters
c549cc5276 - Capitalise vec3_t x variable. 2021-12-30 09:57:02 +01:00
Mitchell Richters
118ceb18ca - Capitalise vec2_t y variable. 2021-12-30 09:57:02 +01:00
Mitchell Richters
3c9cd926ba - Capitalise vec2_t x variable. 2021-12-30 09:57:02 +01:00
Christoph Oelckers
d9d05e90b5 - globally replaced all occurences of '->s().' with '->spr.' 2021-12-30 09:57:00 +01:00
Christoph Oelckers
56e56e9d2f - removed the triangulator type visualization. 2021-12-30 09:57:00 +01:00
Christoph Oelckers
beddf1e1ca - add slope sprite support to the new renderer.
Some fudging was needed to avoid positioning problems as the renderer is more sensitive to this than Polymost.
2021-12-30 09:56:55 +01:00
Christoph Oelckers
6fd4d6d550 - ported slope sorite support from NBlood.
For Polymost only so far.
2021-12-30 09:56:54 +01:00
Christoph Oelckers
785c7d4ceb - removed numsectors and numwalls entirely.
With Blood's Polymost mirror hack the risk of getting out of sync with the arrays was a genuine issue, so now only the array size counts.
2021-12-30 09:56:54 +01:00
Christoph Oelckers
df0c577cf4 - replaced most of numsectors, too. 2021-12-30 09:56:54 +01:00
Christoph Oelckers
f1c0298825 - replaced numwalls with wall.Size in several places. 2021-12-30 09:56:54 +01:00
Christoph Oelckers
65bc6e6aef - removed the now redundant wall() and sector() interator helper functions.
With both wall and sector now being TArrays they are not needed anymore.
2021-12-30 09:56:53 +01:00
Christoph Oelckers
6608096ea3 - added a bit more debug validation to the new clipper code. 2021-12-30 09:56:53 +01:00
Christoph Oelckers
fd741c4d49 - Disable debug output 2021-12-30 09:56:52 +01:00
Christoph Oelckers
756ed1c14b - removed the workaround to make Lunatic Fringe not glitch. 2021-12-30 09:56:52 +01:00
Christoph Oelckers
c141c89cfd - fixed the clipper.
* must do proper checks for merged ranges when inserting new ones. The checking code assumes that closed ranges are contiguous.
* when discarding parts of overlapping ranges this may not use merged clip values for its checks.
* ranges that have their clip values altered must be released and reinserted to ensure everything is correct.
2021-12-30 09:56:52 +01:00
Christoph Oelckers
f152a4d9b5 - clipper clean up.
The horizontal part of the logic should work now.
2021-12-30 09:56:52 +01:00
Christoph Oelckers
213ed28398 - WindowClipper WIP 2021-12-30 09:56:52 +01:00
Christoph Oelckers
8b427e35c2 - stuff that needs FromInt 2021-12-30 09:56:51 +01:00
Christoph Oelckers
13186cec6d - the rest of Blood's flags. 2021-12-30 09:56:50 +01:00
Christoph Oelckers
092cb1e5a3 - second set of Blood flags. 2021-12-30 09:56:50 +01:00
Christoph Oelckers
3bc337264a - flags in blood's actor.cpp
plus a few others caught by search&replace.
2021-12-30 09:56:50 +01:00
Christoph Oelckers
8e0b9f7ce6 - some automatic, some manual sprite flag replacements 2021-12-30 09:56:49 +01:00
Christoph Oelckers
82fb03e399 - another batch of search&replace, with smaller results. 2021-12-30 09:56:48 +01:00
Christoph Oelckers
8f012d1beb - made wall flags type safe 2021-12-30 09:56:47 +01:00
Christoph Oelckers
1883aad7c2 - flag names in SetupGibWallState and TranslateSector 2021-12-30 09:56:47 +01:00
Christoph Oelckers
adbf5177a7 - flag combo stuff. 2021-12-30 09:56:46 +01:00
Christoph Oelckers
b263c3ac6b - wall and sprite flags in Duke, just simple cases. 2021-12-30 09:56:46 +01:00
Christoph Oelckers
6e32832428 - made sector ceiling/floor flags type safe.
- made sector flags type safe.
2021-12-30 09:56:46 +01:00
Christoph Oelckers
b0e3c6b5ec - some remaining sector flag stuff 2021-12-30 09:56:45 +01:00
Christoph Oelckers
d0a06ae961 - deal with most of CSTAT_SECTOR_SKY and CSTAT_SECTOR_SLOPE 2021-12-30 09:56:45 +01:00
Christoph Oelckers
1edccf1423 - added slope setter methods to sectortype.
To make sure that setting the slope flags is always done properly. (Why are the flags even needed?)
As a nice side effect, this, plus use of other inlines made the align*slope functions implode into virtually nothing.
2021-12-30 09:53:56 +01:00
Christoph Oelckers
24a6d45f97 - minor slope math optimization.
May save one division and merges the '<< 5' into the main calculation.
2021-12-30 09:53:56 +01:00
Christoph Oelckers
11f41a97d5 - made gotpic a FixedBitArray.
gets rid of some inline garbage.
2021-12-30 09:53:56 +01:00
Christoph Oelckers
5f18109371 - consolidated all getslope code into a single function.
This also caches a wall's length to avoid taking the square root every single time for a slope calculation.
2021-12-30 09:53:55 +01:00
Christoph Oelckers
bea394a734 - replace SW specific sector flags with the global ones. 2021-12-30 09:53:55 +01:00
Christoph Oelckers
dddf48fd3e - cleaned up and renamed buildtypes.h.
Content was reordered so that the file can contain the inlines belonging to the map data types that previously had to be stored elsewhere.
Also moved out of the Build folder because virtually everything in here can be traced to content available in Duke Nukem 3D's and Shadow Warrior's source releases.
2021-12-30 09:53:46 +01:00
Christoph Oelckers
4a5de6f56e - make sure that all changes of wall coordinates invalidate associated data.
walltype::move should be the preferred function to be used for this, otherwise walltype::moved needs to be called.
2021-12-30 09:53:11 +01:00
Christoph Oelckers
0e6242626c - removed the viewpoint from the clipper as we don't need this.
ClipWindow will go elsewhere, it has no place here.
2021-12-30 09:53:11 +01:00
Mitchell Richters
83000fab77 - Remove last remaining node builder code. 2021-12-30 09:53:11 +01:00
Mitchell Richters
95d60deecd - Rename remaining hw_sections*.* files to hw_sections.*. 2021-12-30 09:53:11 +01:00
Mitchell Richters
520412075f - Delete empty hw_sections.cpp file. 2021-12-30 09:53:11 +01:00
Christoph Oelckers
4700299fc6 - fixed bad assert.
This can indeed be called with both angles being identical and should accept this case.
2021-12-30 09:53:10 +01:00
Christoph Oelckers
d1f088a858 - SW/Exhumed fixed sound relinking on actor destruction.
This still passed the sprites instead of the actors. Moved the relinking code to DCoreActor::Destroy because it is the same for all games.
Also did a little bit of sound cleanup to ensure the sound backend does not hold stale actor pointers.
2021-12-30 09:53:10 +01:00
Christoph Oelckers
7c5080f654 - reimplemented sector splitting.
With the new setup this is a lot easier than with the old one.
2021-12-30 09:53:10 +01:00
Christoph Oelckers
d46e3c87e0 - removed development output of the loop grouping code. 2021-12-30 09:53:10 +01:00
Christoph Oelckers
fc41a2bd85 - renamed sections2 and sections2PerSector.
No more need for a '2'.
2021-12-30 09:53:10 +01:00
Christoph Oelckers
f6d852b5a0 - removed the old section builder 2021-12-30 09:53:09 +01:00
Christoph Oelckers
b0e4b49771 - removed the node builder.
With libtess2 working we do not need this anymore.
2021-12-30 09:53:09 +01:00
Christoph Oelckers
bb9313454d - removed SectorGeometry class. 2021-12-30 09:53:09 +01:00
Christoph Oelckers
7a9596ae81 - use SectionGeometry for 3D rendering. 2021-12-30 09:53:09 +01:00