Commit graph

1646 commits

Author SHA1 Message Date
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
Christoph Oelckers
d8a3035bcc - invalidate plane meshes when the sector is retriangulated.
After this any old mesh has become invalid and needs to be rebuilt.
2021-12-30 09:53:09 +01:00
Christoph Oelckers
37e49ed775 After this any old mesh has become invalid and needs to be rebuilt.
- use only one Section type.
2021-12-30 09:53:09 +01:00
Christoph Oelckers
8e01d559e8 - store sector as an index in Section2 and renamed walls to lines.
Now everything has the same name and type as in the old section.
2021-12-30 09:53:08 +01:00
Christoph Oelckers
208ca4f783 - merge old SectionLine and new Section2Wall into one type and use the same global array. 2021-12-30 09:53:08 +01:00
Christoph Oelckers
d353787d31 - add a global list of section walls. 2021-12-30 09:53:08 +01:00
Christoph Oelckers
f8f6c345fc - use index fields in Section2Wall.
There's little benefit of using pointers here - it inflates a critical render struct, does not make any code more readable and requires quite deep refactoring of hw_bunchdrawer.
Now, with all fields having the same tyoe and name a lot less code needs to be changed.
2021-12-30 09:53:08 +01:00
Christoph Oelckers
a407e86ff6 - migrated automap to new SectionGeometry class. 2021-12-30 09:53:08 +01:00
Christoph Oelckers
362b824775 - ClipWindow WIP 2021-12-30 09:53:08 +01:00
Christoph Oelckers
4364e68d05 - automap work to transition to new sections. 2021-12-30 09:53:08 +01:00
Christoph Oelckers
411e3e6f9c - make SectionGeometry create some data. 2021-12-30 09:53:07 +01:00
Christoph Oelckers
ca19c265f8 - interface from Section2 to the flat processing. 2021-12-30 09:53:07 +01:00
Christoph Oelckers
69593fd5c7 - Triangulation WIP
# Conflicts:
#	source/core/sectorgeometry.cpp
2021-12-30 09:53:07 +01:00
Christoph Oelckers
449362dcb3 - better debug output. 2021-12-30 09:53:07 +01:00
Christoph Oelckers
a255e90c96 - more work on the new section creator. 2021-12-30 09:53:06 +01:00
Christoph Oelckers
b1bf12df9d - section fixes. 2021-12-30 09:53:06 +01:00
Christoph Oelckers
ad018db80a - new section builder. 2021-12-30 09:53:06 +01:00
Christoph Oelckers
9397eb6a19 - automatically handle one specific case of bad wall loops.
Both RRRA E3L1.map and SW $yamato.map have this:

Wall x and Wall x+1 have identical properties and both reference Wall x+2 as point2.
The duplicate in this case can be safely deleted to make the sector well formed.
2021-12-30 09:53:06 +01:00
Christoph Oelckers
a733de618f - new section WIP. 2021-12-30 09:53:06 +01:00
Christoph Oelckers
1bf654036a - delete duplicated walls in RRRA E1L3 and E1L6. 2021-12-30 09:48:50 +01:00
Christoph Oelckers
6db1ba47c2 - SW: fixed some savegame issues:
* the saveable tables were initialized too late when reading in the actors.
* the abort messages for the saveables did not show. We need to use I_FatalError here, plus some actor list modifications to make this work.
2021-12-26 23:10:07 +01:00
Mitchell Richters
a4d165a84e - Tidy some specified bound equals destination size warnings from GCC. 2021-12-26 23:10:05 +01:00
Christoph Oelckers
9e94573ae3 - free the current level before taking down other things on exit.
Nor doing so can cause memory corruption when the object hierarchy gets deleted later which may still reference some stale data.
2021-12-26 23:10:05 +01:00
Christoph Oelckers
7b14aacdf4 - match alignment of NPOT flat textures to the software renderer
Tested in RR E1L4, sector 224+40, probably needs more checking in other places as well to confirm that it is correct there as well.
2021-12-26 23:10:04 +01:00
Christoph Oelckers
5e09a43e91 - added auto-patcher for overlapping wall ranges.
This is for cases where the proper sector can be found by looking at the walls' point2 links.
2021-12-26 23:10:04 +01:00
Christoph Oelckers
fee8df8a1b - fix range check for nextwall in map loader 2021-12-26 23:10:03 +01:00
Christoph Oelckers
177e84881e - added a warning for multiple sectors referencing the same walls.
RR E3L1 contains such a setup, for example.
2021-12-26 23:10:03 +01:00
Mitchell Richters
14b8eda436 - Get rid of some now irrelevant comments. 2021-12-26 23:10:03 +01:00
Christoph Oelckers
106ec53d1f - disabled sector splitter for now because it's broken and useless.
The entire section format needs to be redone for better triangulation so fixing this messy code is pointless.
2021-12-26 23:10:03 +01:00
Christoph Oelckers
74da3e5fa7 - added savegame support for the new actor management. 2021-12-26 23:10:03 +01:00
Mitchell Richters
2dda3ee505 - Tidy up some GCC warnings about ininitialised variables, memsetting non-trivial types and some others. 2021-12-26 23:10:02 +01:00
Christoph Oelckers
b8c4354691 - got rid of the MAX... constants and adjusted all places still using them. 2021-12-26 23:10:02 +01:00
Christoph Oelckers
1a3b9f8ac0 - made several arrays holding sector related data dynamic. 2021-12-26 23:10:02 +01:00
Christoph Oelckers
838bed7800 - final cleanup of sectnum related stuff.
Made sure that remaining uses of sector indices are safe to be kept and deleted a few redundant functions.
2021-12-26 23:10:01 +01:00
Christoph Oelckers
6d432fca0a - made spritetype::sectnum a pointer. 2021-12-26 23:10:01 +01:00
Christoph Oelckers
6a43a270fa - use sectno() access function where we really need a sector index. 2021-12-26 23:10:01 +01:00
Christoph Oelckers
2d913982da - changed map loader to work without relying on spritetype::sectnum.
All access to this field is done through access functions now.
2021-12-26 23:10:01 +01:00
Christoph Oelckers
8ee5d1b0d7 - activated the garbage collector
This finally gets rid of all static storage for actors - so no more indices ever! :)
2021-12-26 23:10:00 +01:00
Christoph Oelckers
0dd756fa32 - added GC handling for all backend pointers in the map data.
GC is not active yet!
2021-12-26 23:10:00 +01:00
Christoph Oelckers
8dde6a3074 - Added GC support to Exhumed 2021-12-26 23:09:59 +01:00
Christoph Oelckers
38c8f2a3b8 - the last 16 bit limits in the new renderer. 2021-12-26 23:09:59 +01:00
Christoph Oelckers
42e4e9288f - deleted GetSpriteIndex.
It's not needed anymore.
2021-12-26 23:09:58 +01:00
Christoph Oelckers
b0ecf7e87b - unlimit the wall index in sections. 2021-12-26 23:09:57 +01:00
Christoph Oelckers
a2e280e188 - use wallsofsector in 4 more places.
# Conflicts:
#	source/build/src/polymost.cpp
2021-12-26 23:09:57 +01:00
Christoph Oelckers
588f88c9cc - migrated the actors to DObjects.
No GC yet, only the classes have been altered and some GC-related features been added.
Full switchover will require adding GC support to all data in the game.
2021-12-26 23:09:57 +01:00