Commit graph

468 commits

Author SHA1 Message Date
Christoph Oelckers
42b87362ee - When keeping around a dummy sprite, make sure that the engine's utilities cannot find it anymore.
This was causing issues with the master switch sprites in Duke that have to be kept for sound purposes.
Unfortunately, both hitscan and neartag are far too dumb to analyze sprites they may hit in any way and needed some help skipping such sprites.
2021-04-17 09:37:38 +02:00
Christoph Oelckers
ac82838859 - removed unused 'wallvisible' function. 2021-03-15 18:58:14 +01:00
Christoph Oelckers
2094b6420f - use local screen size variables in automap code. 2021-02-27 12:30:20 +01:00
Christoph Oelckers
99f1f0952a - little bit of engine cleanup. 2021-02-25 12:16:21 +01:00
Christoph Oelckers
cf672b508f - removed unused 'updatesectorexclude' function. 2021-02-02 23:13:40 +01:00
Mitchell Richters
5124c0daec - Amalgamate ksgn and sgn into Sgn in cmdlib.h, and remove pragmas.h. 2021-01-05 07:31:37 +11:00
Mitchell Richters
b36bea7c69 - Replace scale() calls with Scale() from common. 2021-01-05 07:31:34 +11:00
Mitchell Richters
d460f048fa - Remove klabs() define and replace with abs(). 2021-01-05 07:31:28 +11:00
Mitchell Richters
868aa7f07a - Replace mulscale() calls with MulScale() from common. 2021-01-05 07:31:24 +11:00
Mitchell Richters
aae175f287 - Replace divscale##() calls with MulScale() from common.
* Regex for reference: divscale([0-9]+)\((.+)(\)+)
2021-01-05 07:31:20 +11:00
Mitchell Richters
2396179dfc - Replace mulscale##() calls with MulScale() from common.
* Regex for reference: mulscale([0-9]+)\((.+)(\)+)
2021-01-05 07:31:15 +11:00
Mitchell Richters
7d9f868e4c - Replace dmulscale##() calls with DMulScale() from common.
* Regex for reference: dmulscale([0-9]+)\((.+)(\)+)
2021-01-05 07:31:10 +11:00
Christoph Oelckers
0f8e73ce77 - inlined calc_globalshifts to get rid of two global variables. 2020-12-30 09:55:57 +01:00
Christoph Oelckers
25ef58f897 - re-enabled all model specific code in Duke's animatesprites function and removed some remaining software renderer-only code in the engine. 2020-12-01 23:57:39 +01:00
Christoph Oelckers
d545eb7aa9 - make sector panning variables floats and added some convenience wrappers. 2020-11-26 18:32:35 +01:00
Christoph Oelckers
9a4073508d - Blood: Savegame fully transitioned to JSON
not tested yet.
2020-11-23 09:53:58 +01:00
Christoph Oelckers
169d708547 - removed all remaining uses of tilesiz. 2020-11-23 08:55:02 +01:00
Christoph Oelckers
d60bc8be9f - replaced all remaining uses of tilesiz[].y 2020-11-23 08:39:49 +01:00
Christoph Oelckers
bbf1352db1 - replaced approx 1/3 of all accesses to the tilesiz wrapper class. 2020-11-23 00:18:30 +01:00
Mitchell Richters
0190a98a10 - Remove calcSinTableValue() inline function and clean up use of PI/fPI and BANG2RAD #defines. 2020-11-22 21:18:10 +01:00
Mitchell Richters
32a1796728 - buildutils: Replace sintable[] use within Build with bsin()/bcos(), using bsinf()/bcosf() where appropriate.
* Includes a few header include shuffles to make it all come together.
2020-11-22 21:18:02 +01:00
Christoph Oelckers
5f54eac297 - made palette loader part of the game interface.
This gets rid of the Blood 'replace' hook for thus.
2020-11-21 12:54:09 +01:00
Christoph Oelckers
7621d3e105 - removed redundant dosetaspect function.
This was software rendering only.
2020-11-04 22:30:11 +01:00
Christoph Oelckers
78afb67c7f - setup for Duke actor data transition to something more scripting friendly.
The main problem here is that there's two data arrays representing an actor - sprite and hittype and the engine only uses indices for reference.
By setting up hittype to contain a sprite reference, the function and iterator interface can be rewritten to use a single pointer instead to represent an actor.
The main objective is to reduce the number of accesses to the global arrays which constitute the biggest refactoring blocker.
2020-10-21 16:31:17 +02:00
Christoph Oelckers
4f7c0b696c - and finally the iterators in the backend. 2020-10-15 20:22:40 +02:00
Christoph Oelckers
817fa8aba3 - save the entire engine state as JSON.
The sprite lists may still need optimization. Due to different handling between Blood and the core engine they need to be written out completely which is quite wasteful.
2020-10-13 20:18:08 +02:00
Christoph Oelckers
f12c6b0319 - removed wallext because its only member 'blend' is not used by anything.
This is a feature not worth preserving, render style + alpha should be done directly, not via indirect lookup tables.
2020-10-11 18:44:16 +02:00
Christoph Oelckers
fe2e96d3a6 Merge branch 'master' into InputContinuation
# Conflicts:
#	source/games/duke/src/duke3d.h
2020-10-10 21:39:27 +02:00
Mitchell Richters
09a05f354c - Re-standardise horizon around 0 and not 100.
* Blood had this right. It makes sense that the horizon be based around as it's easier to work with.
* Removed all associated game math to deduct default horizon of 100 when doing weapon zvel etc, meaning actual horizon can just be used.
* Re-did return to center function to work on the already converted pitch. Return speed should be 1:1 with previous code.
2020-10-07 13:28:45 +11:00
Christoph Oelckers
82612a1330 - it compiles again (with lots of code commented out.) 2020-10-04 20:11:02 +02:00
Christoph Oelckers
5e6317b8b9 Merge remote-tracking branch 'remotes/Github_private/Blood_InputReworking' 2020-09-22 23:32:28 +02:00
Christoph Oelckers
880b811e0d - rewrote map loader to work independently of data structure sizes.
This is needed to extend a few fields that are too narrow - e.g. the texture offset fields have no room for interpolating scrolling textures.
Blood not done yet, will also need to be changed to get rid of the limits.
2020-09-22 22:40:53 +02:00
Christoph Oelckers
43a9be0ad0 - removed Blood's loadboard replacement hook.
It never calls engineLoadBoard but always its own map loading function directly.
2020-09-22 22:38:08 +02:00
Mitchell Richters
fdbc4d0e67 - Build: Fix precision loss when calculating an angle in renderPrepareMirror(). 2020-09-22 23:12:31 +10:00
Mitchell Richters
d40a2d3e95 Merge branch 'back_to_basics2' into Blood_InputReworking
# Conflicts:
#	source/blood/src/hudsprites.cpp
#	source/exhumed/src/status.cpp
#	source/games/duke/src/game_misc.cpp
#	source/sw/src/draw.cpp
2020-09-22 07:34:39 +10:00
Mitchell Richters
bdc53ed7b0 - Exhumed: Standardise horizon on 100 and remove backend extern'd polymostcenterhoriz variable. 2020-09-21 18:41:56 +10:00
Christoph Oelckers
78be8f866b - always use the containing sector's fog when rendering sprites.
This is for consistency, otherwise sprites with a palette translation would stand out. Also use shade dependent fog density instead of a single global value.
Currently this only has an effect in true color rendering mode.
2020-09-20 20:39:11 +02:00
Christoph Oelckers
0e58203d92 - fixed rintersect and removed some unused bits from engine.cpp. 2020-09-13 20:15:46 +02:00
Christoph Oelckers
a4754d7f34 - rewrote the map hack parser using sc_man.
This unexpectedly turned out a complete rewrite so now it is under my own license.
Also moved the remaining parts of map hack loading into the engine.

Overall I have to say that the feature is not what I expected, it's merely used to fudge the positioning of model sprites and for adding Polymer lights.
2020-09-13 13:01:44 +02:00
Christoph Oelckers
19a26f7959 - removed some unused code from engine.cpp.
Looks like editor utilities.
2020-09-13 08:30:03 +02:00
Christoph Oelckers
b2105f28e1 - replaced swapptr with std::swap. 2020-09-11 19:28:19 +02:00
Christoph Oelckers
298949ceb8 - more compat.h cleanup
Its elimination is getting closer. :)
2020-09-08 18:48:18 +02:00
Christoph Oelckers
ec1c42b04a - got rid of common.h
All still relevant content was moved to places closer to its use.
2020-09-08 18:39:47 +02:00
Christoph Oelckers
18b39fd952 - first stage of generic automap code.
Lines and textures get rendered, not all colors are correct - sprites yet to do...
2020-09-06 20:49:43 +02:00
Christoph Oelckers
2395749192 - restored the automap texture drawer in the backend.
While ultimately this needs to be tossed into the deepest bowels of hell for being one gargantuan piece of bad code, it is still needed and does not really work when placed in a separate source file, due to its endless list of global dependencies.
2020-09-06 17:35:08 +02:00
Christoph Oelckers
809f8b5d4b - hooked up the new automap framework. 2020-09-06 12:44:58 +02:00
Christoph Oelckers
a6c92aec64 - removed all automap code from SW and the flat drawer from the backend.
This should have been the last parts of automap code.
Now on to rebuild this thing in a cleaner fashion...
2020-09-06 12:14:08 +02:00
Christoph Oelckers
d6b80bda52 - force the renderer to use radial fog.
Plane-distance based fog does not work with Polymost's projection settings - the distance value appears to be completely off and useless.
Fixes #243
2020-09-06 00:19:38 +02:00
Christoph Oelckers
8114309e89 - compat.h cleanup.
* use static_assert directly. Raze is C++17, no need for that macro shit.
* removed CONSTEXPR - I seriously fail to see the use here, many of the functions marked as CONSTEXPR cannot possibly even be constant evaluated so the declaration makes no sense. Removed most of these and replaced the valid ones with the official constexpr keyword.
* got rid of EDUKE_PREDICT_FALSE - this makes zero sense in script parsing code, at best it will save a few microseconds. Clean code wins.
* replaced Blrintf with xs_CRoundToInt. Shitty name is shitty name, even if derived from POSIX.
* replaced Bstr*casecmp with str*icmp. As these get defined in the CMake project based on actual compiler checks they are preferable here.
* removed lots of other stuff that is not needed with a minimum compiler requirement of C++17.
2020-09-04 21:24:48 +02:00
Mitchell Richters
1354d52c05 - Major cleanup of Q16.16 utilisation within games and engine.
* Remove fix16.h/cpp and utilise library from m_fixed.h.
* Extend m_fixed.h with two inline functions for int to/from float operations.
* Replace fix16_floor operations with those from xs_Float.h
* Replace multiple Q16.16 conversions from 0 to just be 0.
* Replaced all found in-game bit-shifts and multiplications/divisions with inline functions from m_fixed.h
* Replaced many casts of FRACUNIT as double in SW's panel.cpp as it is converted to double by way of type promotion.
* Fixed missed precision fixes in SW's panel.cpp where some types weren't declared correctly.
* Replaced 100+ `Cos()/Sin() >> 16` operations for Blood with inline functions `CosScale16()/SinScale16()`.
2020-09-01 23:00:47 +10:00