Commit graph

143 commits

Author SHA1 Message Date
Professor Hastig
ab8711b57a removed several bad casts to 'long'.
The 'long' type should generally be avoided because its size differs on Windows and Linux/Mac so it is almost guaranteed to cause undefined behavior
2023-10-04 16:47:43 +02:00
Sally Coolatta
15521e5181 Fix a very rare crash with complex Polyobjects
If all of the worst stars align when compiling Polyobject BSP and splitting a seg into two sets:
- The very first seg in the current set fails all of the metrics for determining which side of a split it is on, and doesn't know which side it should go to. Since there are 0 are in front, it goes to front by default.
- Every other seg in the same set don't fail their metrics, and they all decide they are meant to go to the front side.
- Oops! Now there's nothing in the back side!
I've fixed this by collecting all of the undecided segs in a split, and setting the new side after the other segs. Doing it in the normal loop means there's a non-zero chance the crash prevention will fail depending on how the segs are in memory.

This can technically happen with even the most simplistic Polyobjects, but it becomes more common the more complex it is (add tons of lines, move and rotate it at the same time, so on). Quite an annoying crash since it doesn't always replicate consistently.
2023-09-15 00:13:22 +02:00
Christoph Oelckers
47b76180d6 - fixed several warnings emitted by Clang. 2023-03-26 08:48:54 +02:00
Christoph Oelckers
595975fcc7 - did a test compile as C++20 and fixed all warnings that got emitted. 2022-07-15 09:17:50 +02:00
Christoph Oelckers
07a181090b - missed some MAX's. 2021-10-30 10:45:58 +02:00
Christoph Oelckers
1d0aed219e - replaced MIN/MAX in all non-common code. 2021-10-30 10:16:52 +02:00
Christoph Oelckers
58d8ce1a4f - cleanup of m_fixed.h.
With fixed point math barely being used anywhere with the vast majority of calls in the software voxel drawer it makes sense to reduce the function interface to the minimum possible and move the shift value into the function call as an argument.
2020-11-22 10:25:04 +01:00
Christoph Oelckers
e3fdf2194e - moved a few leftover utility classes to 'common'. 2020-04-29 17:51:04 +02:00
Christoph Oelckers
6afa73bdcd - moved m_bbox to 'common' 2020-04-27 00:07:17 +02:00
Christoph Oelckers
67a50d084a - started cleanup of model code.
* refactored FBoundingBox so that the game dependent members are global functions now.
* changed some methods of the model renderer to take a render style parameter instead of a full actor.
2020-04-27 00:03:23 +02:00
Christoph Oelckers
c7db5b932e - switched the entire status bar code to use FGameTexture.
- scale the automap parchment to clean 320x200 dimensions.
2020-04-19 10:57:45 +02:00
Christoph Oelckers
932f5c64c2 - moved stats.cpp to common. 2020-04-11 20:20:57 +02:00
Christoph Oelckers
a28182fe35 - moved the script compiler's backend to 'common'. 2020-04-11 20:20:55 +02:00
Christoph Oelckers
7b292cca57 - split the serializer in two to keep the Doom specific parts out of the main file. 2020-04-11 20:20:53 +02:00
Christoph Oelckers
f8e9cb8fbc - major dependency reduction of the texture system. 2020-04-11 20:20:37 +02:00
Christoph Oelckers
f94e4a908c - m_png is common. 2020-04-11 20:19:52 +02:00
alexey.lysiuk
0d420a75b7 - fixed compilation for Linux and macOS 2020-04-11 20:36:36 +03:00
Christoph Oelckers
c713850dac - moved sc_man and palettecontainer to the 'common' folder. 2020-04-11 14:00:21 +02:00
Christoph Oelckers
98472d999b - moved name.cpp to 'common'.
Still got to find a way to handle namedef.h without polluting the low level code with game content.
2020-04-11 14:00:21 +02:00
Christoph Oelckers
a00c976245 - removed a large batch of unused names. 2020-04-11 14:00:21 +02:00
Christoph Oelckers
5ac88ebce2 - added some Raze-specific file system utilities so that both can work with the same code. 2020-04-11 14:00:21 +02:00
Christoph Oelckers
05d8856fe0 - moved file system implementation to 'common'. 2020-04-11 14:00:20 +02:00
Christoph Oelckers
80c6d5b276 - renamed more stuff and also moved the Strife teaser voice handling out of the file system. 2020-04-11 14:00:19 +02:00
Christoph Oelckers
c1bb7de23a - more file system refactoring.
* moved the sprite renaming out of the file system entirely into a caller-provided callback.
* renamed several functions to closer match the terms of a file system.
* moved the VM interface out of the implementation.
2020-04-11 14:00:19 +02:00
Christoph Oelckers
6bccde3b51 - renamed the file system related classes to actually use the term "FileSystem". 2020-04-11 14:00:18 +02:00
Christoph Oelckers
76352dd9b3 - moved the last remaining utilities. 2020-04-11 14:00:14 +02:00
Christoph Oelckers
5a1c4693de - moved SFMT to 'common'.
Now it is third party code with no hooks into higher level dependencies.
2020-04-11 14:00:14 +02:00
Christoph Oelckers
9ef6b15bfa - moved more stuff and split FRandom in two so that the high level baggage does not need to be pulled in to use the RNG. 2020-04-11 14:00:14 +02:00
Christoph Oelckers
fb1a7679ec - moved most basic utility code without any dependencies on the rest of the engine to 'common' directory.
Again the objective is easier sharing with Raze.
2020-04-11 14:00:13 +02:00
Christoph Oelckers
ace3e29473 - removed the implicit conversion operators from FName.
These were creating dangerous interdependencies. It is better to do explicit conversions when needed.
As an added plus, this means that zstring.h no longer depends on name.h which was very annoying.
2020-04-11 14:00:13 +02:00
Christoph Oelckers
6996d54a23 - moved more code to 'common'.
This is all low level utilities with no dependencies on game logic. Having this in a separate directory makes sharing with Raze a lot easier.
2020-04-11 14:00:12 +02:00
Christoph Oelckers
e230420f88 - moved all character set utilities to utf8.cpp.
- moved matrix class to 'common'.
2020-04-11 14:00:12 +02:00
Christoph Oelckers
669e8fbe48 - started some reorganization of low level utility code by moving all third party dependencies to a separate place. 2020-04-11 14:00:12 +02:00
Christoph Oelckers
820fe8b3f9 - split off the container for the translation data into its own file. 2020-04-11 14:00:11 +02:00
Christoph Oelckers
66a837f983 - took the translation slot definition out of the container and use a dynamic array to store the data. 2020-04-11 14:00:11 +02:00
Christoph Oelckers
cf757ba834 - made the translation container a class.
This also splits off some Doom-specific implementation details into higher level headers.
2020-04-11 14:00:11 +02:00
Christoph Oelckers
b0ecb02d6b - move SuperFastHash to its own set of files, instead of having this tied to the console.
- replace swapvalues with std::swap globally.
- added some additions to utility code from Raze, mainly to reduce file content differences.
- reduced some unused utilities
2020-04-11 14:00:10 +02:00
Christoph Oelckers
003294e598 - added printf.h header to avoid including more dirty ones for the console printing functions. 2020-04-11 14:00:09 +02:00
Christoph Oelckers
1fe667c6a0 - cleaned up the includes in m_png.h, this file had far too many and far too broad dependencies. 2020-04-11 14:00:09 +02:00
Christoph Oelckers
cc48f18303 - moved the dictionary implementation into the 'scripting' folder where it really belongs. 2020-04-11 14:00:09 +02:00
Christoph Oelckers
40e380f2c0 - updated m_argv.cpp from Raze. 2020-04-11 14:00:08 +02:00
Christoph Oelckers
6847ea027d - updated files.cpp with some new features from Raze.
Not really needed for GZDoom but it's convenient to have the files being identical.
2020-04-11 14:00:08 +02:00
Christoph Oelckers
c623b04170 - copied some fixes for overlong config entries from Raze.
- renamed basictypes.h to basics.h to keep the file name in line with Raze and make comparisons easier.
2020-04-11 14:00:08 +02:00
Christoph Oelckers
58afc3d5b2 - added some utilities to cmdlib.cpp and changed its license to BSD, because no original Quake code is left here. 2020-04-11 14:00:08 +02:00
Christoph Oelckers
6bfdf904b9 - removed use of copystring in Dehacked code and cleaned up the list of includes in cmdlib.cpp 2020-04-11 14:00:07 +02:00
Christoph Oelckers
fabe772833 - moved high level code out of i_time.cpp. 2020-03-27 12:39:56 +01:00
Magnus Norddahl
d19527cf87 Fix compile error when using std::sort with Visual Studio 16.5.0 2020-03-18 21:11:44 +01:00
Alexander Kromm
b038c168c6 aggregate TMap into Dictionary instead of deriving from it 2020-03-08 18:46:37 +01:00
Alexander Kromm
3607ffaf66 fix Dictionary and DictionaryIterator memory leaks 2020-03-08 18:46:37 +01:00
Christoph Oelckers
3a2eaf2bfd - fixed: Windows must call the wide version of _mkdir for Unicode support. 2020-02-25 18:51:42 +01:00