Commit graph

1465 commits

Author SHA1 Message Date
Rachael Alexanderson
6b8bdcc449 - fix math error on ARM architectures 2022-12-28 02:07:10 -05:00
Christoph Oelckers
b1e2b2addf - backend cleanup from GZDoom. 2022-12-18 16:31:50 +01:00
Christoph Oelckers
d7da983c5e - removed Vulksn SDK from main source folder.
This is now part of ZVulkan.
2022-12-18 16:27:24 +01:00
Christoph Oelckers
e3d16d254d - fixed: when deactivating the app, pausing the sound system should not depend on the game's internal pause state.
All this tells is that the gameplay was halted. Sound was not stopped when the user either minimized or tabbed away in the in-game menu.

This commit had to be reapplied because it got lost in a backend update.
2022-12-18 15:28:17 +01:00
Christoph Oelckers
be2112a507 - fixed ESC pressing on Duke's monitors.
This got busted by an update from GZDoom.
2022-12-18 13:06:09 +01:00
Christoph Oelckers
20edd800f9 - big texture system refactor.
Finally that quickly slapped together BuildTiles class is gone and replaced with something that better integrates with the underlying texture manager
2022-12-18 13:05:58 +01:00
Mitchell Richters
67b40ee1d5 - Convert angle in hud_drawsprite() to work on true degrees, and in the right direction. 2022-12-11 19:46:26 +01:00
Christoph Oelckers
bea6834f8e - code cleanup. 2022-12-11 19:45:38 +01:00
Christoph Oelckers
3874cf365c - use TEXMAN_ForceLookup where it was missing. 2022-12-11 19:45:38 +01:00
Christoph Oelckers
630276f7e0 - migrated texture flags parsing from .def to RMAPINFO.
This was the final piece of non-tile-related data to be in there.
.def should be restricted to existing use cases concerning setup of render data, not for game content.
2022-12-11 19:45:18 +01:00
Christoph Oelckers
aa58b152ab - use a TArray in BuildTiles for the tile descriptors.
For some reason MSVC wants to put this in the EXE now and the array is quite large.
2022-12-11 19:45:00 +01:00
Christoph Oelckers
e37de147dc - disabled the automatic location feature in the texture manager.
For something that was never used it is simply too costly as it sits in a critical segment of code where it prevents optimization of multiple calls to GetGameTexture in a code block.
If this ever gets reimplemented it must be on a higher level - this simply does not work right.
2022-12-11 19:44:01 +01:00
Christoph Oelckers
0869497ecb - rewrote the tile pixel cache to work on texture IDs instead of tile IDs.
This allows using the related checking features with other textures as well.
2022-12-11 19:44:00 +01:00
Christoph Oelckers
a0722c55ea - removed canvas hack stuff from Buildtiles after cleaning up the mess in SW. 2022-12-11 19:43:58 +01:00
Christoph Oelckers
51ad64f71e - initialize all special tiles to their intended type before starting the game.
This ensures that we have an immutable mapping of tile number to texture ID now.
2022-12-11 19:43:58 +01:00
Christoph Oelckers
6d9a8bfaa5 - scriptified the pool balls. 2022-12-11 19:43:47 +01:00
Christoph Oelckers
2b7e094019 - fixed: aliases for null textures must still be set.
Also added 'listtexturealiases' CCMD for debugging.
2022-12-11 19:43:12 +01:00
Christoph Oelckers
5a2819239c - moved Duke's tile flags into the tile manager.
This is so that .def can access them. Later the other games also might make use of this.
2022-12-11 18:42:01 +01:00
Mitchell Richters
318ff64f36 - Allow passing angle through when drawing the generic crosshair. 2022-12-11 18:42:00 +01:00
Christoph Oelckers
10c552fb66 - did a bit of optimization on FGameTexture.
Since all material layers except the brightmaps are relatively rare encounters these were taken out of the main texture object and offloaded to a substructure that is only allocated on demand.
2022-12-11 18:41:52 +01:00
Christoph Oelckers
c60fea678d - replace the homegrown hash chain in the sound engine with a TMap. 2022-12-11 18:41:52 +01:00
Christoph Oelckers
a825dfb8ca - Duke sound is working again. 2022-12-11 18:41:52 +01:00
Christoph Oelckers
f103e33300 - fixed code up to the point where everything compiles again. Duke sounds are currently non-functional.
All Duke script code has been changed to use strings as sound names now, just like GZDoom these will be looked up at compile time.
Original Duke sound indices still exist but are now being managed as resource IDs, not sound engine indices anymore.
2022-12-11 18:41:51 +01:00
Mitchell Richters
59e8821332 - Use the interpolated sine table for tangent instead of Cephis math in TAngle<T>.
* Performed testing and it's ~6.5x faster this way.
2022-12-11 18:41:38 +01:00
Christoph Oelckers
9cd1e9adb1 - updated Vulkan backend to use ZVulkan. 2022-12-11 18:30:01 +01:00
Christoph Oelckers
fbf5cdc18f - pulled in the ZScript map fixes from GZDoom. 2022-12-11 16:38:20 +01:00
Mitchell Richters
4bf8ea140c - Fix IWADBoxCallback() and MENUDEF setup for GLES backend. 2022-12-11 19:45:07 +11:00
Christoph Oelckers
ff8863833a - fixed GC::FullGC not collecting everything anymore.
With the delayed handling of internal references of destroyed objects the function now returned without making sure that it really got everything.
Repeating until it cannot delete anything new anymore makes it work again as intended.
2022-12-05 12:29:18 +01:00
Christoph Oelckers
1061e3e2ca - backend update from GZDoom. 2022-12-04 16:51:44 +01:00
Christoph Oelckers
b5ad3b9f3b - imported two fixes from GZDoom 2022-11-25 12:33:52 +01:00
Christoph Oelckers
003f4a035e - backend update from GZDoom
menu enhancements, IQM indices and an important fix in the sound system.
2022-11-25 11:14:38 +01:00
Christoph Oelckers
d710407b08 - another backend uodate from GZDoom to fix a memory leak in ZScript backend. 2022-11-25 00:04:05 +01:00
Rachael Alexanderson
b4e19ec6a0 - move posix I_GetGogPaths() stub to program specific code 2022-11-24 17:46:33 -05:00
Christoph Oelckers
d43ebd22ae - fixed merge errors from backend update. 2022-11-24 18:05:47 +01:00
Christoph Oelckers
9219d24535 - removed unneeded WantEscape function from backend interface. 2022-11-24 17:57:40 +01:00
Christoph Oelckers
ed4f49ac86 - fixed sound code for backend update. 2022-11-24 17:46:39 +01:00
Christoph Oelckers
2ffdf3d0e1 - backend update from GZDoom.
Mainly quaternion math and sound system cleanup.
2022-11-24 16:56:46 +01:00
Christoph Oelckers
4d6920e80b - fixed failiure to initialize the ambient tags array.
Also adding range checks to all places where it gets used. This is from CON code so proper values are never guaranteed.
2022-11-24 09:01:44 +01:00
Christoph Oelckers
c6b3cf3e0a - Duke: fixed long standing problem that pressing Escape or walking backwards does not switch off the camera view. 2022-11-19 18:26:17 +01:00
Christoph Oelckers
6b3e57fd2c - added 'foreach' loop to ZScript.
Syntax:

foreach(variable : array)
{
}

the variable's type is automatically deducted.
2022-11-15 21:29:04 +01:00
Christoph Oelckers
3bc34ec773 - fix last commit.
One change got lost by the update.
2022-11-14 23:50:30 +01:00
Christoph Oelckers
6e49f0bf8f - Backend update from GZDoom.
Bone model support in GLES and ZScript quaternions.
2022-11-14 19:46:25 +01:00
Christoph Oelckers
cbf47b4dee - added a 'Sum()' intrinsic to the vectors. 2022-11-14 12:07:51 +01:00
Christoph Oelckers
e62b79c7c9 - allow 'nullptr' in ZScript.
This makes it a lot easier to port C++ code.
2022-11-13 12:20:00 +01:00
Christoph Oelckers
166235027c - Backend update from GZDoom
adding some intrinsics to ZScript.
2022-11-13 08:32:09 +01:00
Christoph Oelckers
8806fb930b - Backend update from GZDoom
* Vector 4 in zscript
* garbage collector fixes
2022-11-12 10:45:39 +01:00
Mitchell Richters
0033826544 - Allow proper setting of progdir for SDL targets. 2022-11-12 11:26:05 +11:00
Christoph Oelckers
800e7939b8 - fixed: when deactivating the app, pausing the sound system should not depend on the game's internal pause state.
All this tells is that the gameplay was halted. Sound was not stopped when the user either minimized or tabbed away in the in-game menu.
2022-11-11 18:40:36 +01:00
Christoph Oelckers
2290f05dcb Revert "- Use std::fma() in the interpolation code."
This reverts commit ff7e0afa6f.

On Visual Studio with precise math, which is our main target this generates a very expensive function call instead of optimized assembly which renders the function's purpose ad absurdum.
2022-11-07 10:36:34 +01:00
Mitchell Richters
ff7e0afa6f - Use std::fma() in the interpolation code.
* From everything I've read, this more accurate, can be ~5% faster and is heavily optimised on CPUs of the last 10-12 years.
* This homegrown solution can be removed for `std::lerp()` once we go C++20.
2022-11-07 19:28:34 +11:00
Mitchell Richters
274899c9db - Get rid of useless lerp() function I added last night for lack of C++20.
* We already have a generic linear interpolator that _I_ added, so let's use it.
2022-11-07 17:31:17 +11:00
Mitchell Richters
c8114e7ed0 - Revert change to TAngle<T>'s / operator that snuck in. 2022-11-07 15:43:00 +11:00
Mitchell Richters
8ec475aec8 - Replace clamped off tangent values with a linear interpolation of the player's pitch.
* Gives a tangent-like ramping where it's noticeable without having to use the tangent at all.
* Had to do homegrown lerper since we're not C++20 yet.
2022-11-06 21:59:04 +11:00
Christoph Oelckers
41fc5660e5 - Backend update from GZDoom
* IQM enhancements
* config storage in Users
* moving of savegame filename generation to the backend
2022-11-06 11:46:26 +01:00
Christoph Oelckers
a3dbfab54b - return some invalid but recognizable magic value when IntersectLines is being passed two collinear lines.
This actually should check if the two lines are identical but since this is rather expensive and rarely needed it's better handled by returning a distinct value the caller can handle if needed.
2022-10-30 16:51:37 +01:00
Christoph Oelckers
e3254a8546 - fixed an edge case in cansee where an actor placed directly on a two-sided wall would fail to register that wall's back sector. 2022-10-30 16:51:37 +01:00
Christoph Oelckers
98e2fecd37 - another bunch of type conversion warnings fixed.
the ones in the findplayer functions are not critical in singleplayer.
2022-10-30 16:51:35 +01:00
Christoph Oelckers
902f8c9706 - silenced lots of warnings for deliberate type conversions.
The ones in d_net.cpp are not in active code.
2022-10-30 16:51:35 +01:00
Christoph Oelckers
a4dd5bb4ce - rewrote the model storage code.
Using proper C++ containers now.
2022-10-27 16:55:54 +02:00
Mitchell Richters
75047b6ad5 - Eliminate MulScaleF(). 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
bb6e12a2b1 - Eliminate remaining calls to TAngle<T>::fromBuildf(). 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
2fe5655394 - added 'Resized()' to TVector2 and fixed its const state for all vectors. 2022-10-25 07:06:56 +02:00
Christoph Oelckers
0672a1a958 - replaced mapangle(85) with DAngle15. 2022-10-25 07:06:50 +02:00
Christoph Oelckers
861423248f - Backend update from GZDoom.
Mainly fixing CVar setup.
2022-10-25 07:03:25 +02:00
alexey.lysiuk
2df33e7d8a - removed obsolete defaults from Cocoa backend
This legacy code from the time of exclusive fullscreen mode began to crash after changes in console variables handling
2022-10-24 10:26:57 +03:00
Christoph Oelckers
de70e802ec - downgraded all LGPL3 license headers in the backend to LGPL2.
This had already been agreed by all involved authors, but apparently not all files were changed accordingly.
2022-10-23 18:46:17 +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
243c071834 - got rid of bsinf and bcosf. 2022-10-22 12:17:04 +02:00
Christoph Oelckers
0501482160 - added missing distance check for sprites to hitscan. 2022-10-22 12:17:03 +02:00
Mitchell Richters
8e851c8b00 - Blood: Initial pass at floatifying actFloorBounceVector().
* Direct translation of the original code.
2022-10-22 12:16:58 +02:00
Mitchell Richters
6efe565f7c - Blood: Floatified vector addition in ConcussSprite(). 2022-10-22 12:16:57 +02:00
Christoph Oelckers
04e98f2f77 - avoid inflation of random functions. 2022-10-22 12:16:56 +02:00
Christoph Oelckers
9f219ce809 - floatified bounce() 2022-10-22 09:34:14 +02:00
Christoph Oelckers
1111251887 type safe CVAR declaration. 2022-10-22 09:25:27 +02:00
Mitchell Richters
70b6aa848f - Clean up the availability detection of kdialog and gxmessage in POSIX sources.
* Both `kdialog` and `gxmessage` are not core components of the KDE or GNOME desktop environments.
* The environment variable `GNOME_DESKTOP_SESSION_ID` has been deprecated for nearly a decade.
* Systems like Steam Deck are shipping with stripped down DEs where these environment variables were set, but without the associated binaries.
2022-10-22 13:51:27 +11:00
Mitchell Richters
3f9a2a2103 - Don't copy delayed events in D_ProcessEvents(), instead store the current pointer. 2022-10-22 13:51:23 +11:00
Christoph Oelckers
479616a80f - got new CVar system from GZDoom. 2022-10-22 00:12:17 +02:00
Christoph Oelckers
1a597c4e0b - fixed and floatified chickenarrow. 2022-10-21 00:00:02 +02:00
Christoph Oelckers
3352783be2 - added a Sum function to TVector familiy
Duke uses this kind of distance check quite a lot so it makes sense to add it to the vectors.
2022-10-21 00:00:02 +02:00
Christoph Oelckers
5eb9af1e00 - Backend update from GZDoom
IQM model support and a few bugfixes.
2022-10-20 22:24:25 +02:00
Christoph Oelckers
50a9ca49f3 - floatified player_struct::hitang 2022-10-20 00:33:31 +02:00
Christoph Oelckers
c51a71ed94 - made some changes to let the engine start up with ASAN enabled on MSVC. 2022-10-19 18:01:28 +02:00
Mitchell Richters
bdc6a5cf69 - Remove fudging from I_GetInputFrac() and correct getPushBuild(). 2022-10-18 19:52:02 +02:00
Christoph Oelckers
e7f581a4fd - floatified AngleChase. 2022-10-18 18:34:25 +02:00
Christoph Oelckers
9d8f06612f - floatified MoveSector 2022-10-18 18:34:25 +02:00
Christoph Oelckers
31eb2e5f10 - fixed: Arrays serialized as array elements may not skip their serialization if their content are all zero. 2022-10-16 23:47:18 +02:00
Christoph Oelckers
7f3c5ae18d - added a 'dot' function to DVector2 because using the '|' operator is not intuitive. 2022-10-15 17:52:07 +02:00
Mitchell Richters
acee39ad68 - Restore a dedicated interpolatedvalue() overload just for angles, which need special treatment. 2022-10-15 13:32:03 +02:00
Mitchell Richters
74167e1a7c - Remove interpolators for TVector and TAngle objects, replacing with single generic version. 2022-10-15 13:32:01 +02:00
Christoph Oelckers
2b5422cc53 - floatified USER::goalAng 2022-10-15 13:32:00 +02:00
Christoph Oelckers
45690a0e23 - cleanup of the DrawLine interface, 2022-10-15 12:10:46 +02:00
Christoph Oelckers
62ba753585 - remove vel clear wrappers 2022-10-15 10:15:21 +02:00
Christoph Oelckers
e361abb96d - added some utilities 2022-10-14 23:55:32 +02:00
Mitchell Richters
7cef3ac655 - Restore non-vector F2DDrawer::AddLine() and F2DDrawer::AddThickLine() interfaces. 2022-10-14 23:55:31 +02:00
Christoph Oelckers
09b31afd40 - movieplayer update from GZDoom. 2022-10-14 20:20:06 +02:00
Christoph Oelckers
5a580c145e - Backend update from GZDoom. 2022-10-14 20:19:48 +02:00
Christoph Oelckers
972df67d92 - sound system update from GZDoom. 2022-10-14 19:58:39 +02:00
Mitchell Richters
03bb820944 - Removed unused variable CamRoll from TRotator<> class.
* Residual value left behind in be9b25e760.
2022-10-14 18:19:04 +02:00