This eliminates nearly all palette dependencies, most importantly font translation will now be done on True Color data, making translations on True Color font less destructive.
- useBloodColor: when true, the sprayed decal will be shaded to match the calling actor's blood color.
- decalColor: when defined, the sprayed decal will be shaded to the specified color. Note that this will take precedence over useBloodColor. It is recommended to use only one parameter.
Note that due to how decals work in the engine, the "decalColor" parameter will only properly colorize the decal if the image is grayscale.
This also gives the caller the information whether the LineAttack
hitscan passed through a portal regardless of whether it actually hit an
actor or not as a nice bonus.
This reverts commit 668f8f2cf6.
Revert "- added a proper error message when '--' or '++' gets used on 8 or 16 bit values."
This reverts commit a94f5dd1b3.
None of this was necessary - the triggered assert was bogus and had to be removed.
This requires SDL >= 2.0.4.
Since <https://bugzilla.libsdl.org/show_bug.cgi?id=2464> was fixed in
SDL 2.0.4, SDL behaves as a CMake "config-file package", even if it was
not itself built using CMake: it installs a sdl2-config.cmake file to
${libdir}/cmake/SDL2, which tells CMake where to find SDL's headers and
library, analogous to a pkg-config .pc file.
As a result, we no longer need to copy/paste a "find-module package"
to be able to find a system copy of SDL >= 2.0.4 with find_package(SDL2).
Find-module packages are now discouraged by the CMake developers, in
favour of having upstream projects behave as config-file packages.
This results in a small API change: FindSDL2 used to set SDL2_INCLUDE_DIR
and SDL2_LIBRARY, but the standard behaviour for config-file packages is
to set <name>_INCLUDE_DIRS and <name>_LIBRARIES. Use the CONFIG keyword
to make sure we search in config-file package mode, and will not find a
FindSDL2.cmake in some other directory that implements the old interface.
In addition to deleting redundant code, this avoids some assumptions in
FindSDL2 about the layout of a SDL installation. The current libsdl2-dev
package in Debian breaks those assumptions; this is considered a bug
and will hopefully be fixed soon, but it illustrates how fragile these
assumptions can be. We can be more robust against different installation
layouts by relying on SDL's own CMake integration.
When linking to a copy of CMake in a non-standard location, users can
now set the SDL2_DIR or CMAKE_PREFIX_PATH environment variable to point
to it; previously, these users would have used the SDL2DIR environment
variable. This continues to be unnecessary if using matching system-wide
installations of CMake and SDL2, for example both from Debian.
This is based on the patch written by Simon McVittie for OpenJK:
52030235f0
The wiki currently says they should be fixed point but the code
currently treats them as integers. Given that they are placed with
double precision horizontally, it is odd that the same precision
cannot be applied vertically. Changing this would break existing maps
so add two flags to support both types.
* Remove threading from the drawers
* Fix some r_scene_multithreaded related bugs
* Fix some r_scene_multithreaded crashes
* Fix fullbright shade bug
* Fix truecolor drawer crash
* Add debug code for showing the render slices
* Fix texture loading race condition and improve performance by only locking the load mutex if data hasn't already been updated for this frame
Co-authored-by: Magnus Norddahl <dpjudas@users.noreply.github.com>
Previously Vel would be reset only if the target was moving. This change
ensures that Vel is always reset, as seems to be the intent of the
oldvel parameter.
It wasn't respecting the map's pixel ratio setting. This wouldn't have
been very noticeable with the default pixel ratio of 1.2 but it was
very obvious with 1.8.
Both synth and sound font can be very relevant here for the final volume so using the same song with different settings needs to create different strings.
# draw upper and lower textures when the back sector does not properly match
# do not draw middle textures on portal lines
# minor optimization to 'is***Portal' functions to avoid memory access in the most common case of no portal being present.
Re-worded error messages which were unprecise or unfitting before (model index below 0 was not acknowledged at all, or grouped together with a "too many models" message).
modelIDs are given a default value of -1.
Important: A MODELDEF's FrameIndex lines can no longer refer to model indices that are beyond the number of models of that MODELDEF entry. There is in fact a check to avoid going beyond the number of an actor's models which would abort program operation at startup, but it never caught any such occurances.
surfaceSkinIDs was two-dimensional and is now a one-dimensional TArray as well, elements are accessed via [Row + Column * NumRows], in this case surfaceIndex + modelIndex * MD3_MAX_SURFACES]
Used TArray.Alloc to make TArrays have the correct size depending on the number of models.
Also removed MAX_MODELS_PER_FRAME.
Edited skinSurfaceIDs access for one-dimensional TArray
Added MD3_MODELS_MIN
To ensure compatibility with mods, all model-related TArrays (four in total) have a minimum size of 4, defined by MD3_MODELS_MIN.
The problem I discovered is that these backends do not respect the GUI-side system setting for swapping the buttons, so this needs to be done in-application so that swapped buttons can behave the same in the menu and the game.
* Changed model-related arrays to TArrays.
* Update models.cpp
Used TArray.Alloc to make TArrays have the correct size depending on the number of models.
surfaceSkinIDs was two-dimensional and is now a one-dimensional TArray as well, it's size is now (models * MD3_MAX_SURFACES)
surfaceSkinIDs was two-dimensional and is now a one-dimensional TArray as well, elements are accessed via [Row + Column * NumRows], in this case sSurfaceIndex + modelIndex * MD3_MAX_SURFACES]
* Edited skinSurfaceIDs access for one-dimensional TArray
* Edited skinSurfaceIDs access for one-dimensional TArray
* Edited skinSurfaceIDs access for one-dimensional TArray
* Changed model-related arrays to TArrays.
Also removed MAX_MODELS_PER_FRAME.
* Used TArray.Alloc to make TArrays have the correct size depending on the number of models.
surfaceSkinIDs was two-dimensional and is now a one-dimensional TArray as well, elements are accessed via [Row + Column * NumRows], in this case surfaceIndex + modelIndex * MD3_MAX_SURFACES]
* Used TArray.Alloc to make TArrays have the correct size depending on the number of models.
surfaceSkinIDs was two-dimensional and is now a one-dimensional TArray as well, elements are accessed via [Row + Column * NumRows], in this case surfaceIndex + modelIndex * MD3_MAX_SURFACES]
* Update models.h
* Edited MAX_MODELS_MD3
* Update models_obj.cpp
The ConversationNPC and ConversationPC fields were not cleared if the conversation was closed by selecting the goodbye option, or if the conversation was closed from the item checks.
https://forum.zdoom.org/viewtopic.php?f=2&t=53655
This was the result of an issue which stumped the entire Discord, which led to me having to debug from source to find why some relatively standard publicly available PBR materials work. GZDoom is the ONLY program in the typical development stack (GIMP, Slade, UDB) with this narrow of support for the PNG format. As such, the average developer will have no other way to figure out what's going wrong without these: these CANNOT be allowed to fail silently. As things like PNG-compression and 64-bit color become more common in royalty-free PBR materials, support should be an eventual target. Even then, these warnings should remain to prevent this from being an issue the next time things change.
Prototype of overridden function with optional argument(s) missing could extend unrelated prototype of previously defined function when their arguments and return value(s) match
https://forum.zdoom.org/viewtopic.php?t=71340
- vid_aspect is now set to change to 21:9's ACTUAL aspect - 64:27
- screen elements now scale to 64:27 properly. to restore classic behavior, set cvar `vid_allowtrueultrawide` to false
There was one VMCall in DLevelScript::ScriptCall that didn't use default arguments. This was causing assertion failures in the GZDoom debug build when trying to run Wolfenstein: Blade of Agony on any map that wasn't TITLEMAP, because ACSTools.FindInventoryClass returns a boolean, and it has a default argument.
* Added SBSLETTERBOX to menudef.txt
* Changed PresentSideBySide in gl_renderer
Needed for new side-by-side mode
* Added VR_SIDEBYSIDELETTERBOX to gl_stereo3d.cpp
For side by side letterbox display mode
* Added VR_SIDEBYSIDELETTERBOX to hw_modes.h
For new side by side letterbox display mode
* Added VR_SIDEBYSIDELETTERBOX to hw_vrmodes.cpp
For Side By Side Letterbox display mode
* - modify Shape2D so that it manages its own vertex buffer
* - fix the last commit failing on Shape2Ds that were modified after AddShape was called
* - make buffers an array of F2DVertexBuffers instead of an array of pointers
* - fix AddShape with the same VBO but different transformation crashing the game
* - formatting fixes
- Always allow skyboxes by default
- Add option to disable skyboxes through mapinfo
Squashed commit of the following:
commit d4c4d9310d
Author: Marisa Kirisame <marisa@sayachan.org>
Date: Wed Dec 30 09:58:39 2020 +0100
Disable AO for skybox portals (can be forced back with MAPINFO flag).
commit bbfb934e80
Author: Rachael Alexanderson <madame-rachelle@users.noreply.github.com>
Date: Sun Dec 6 23:50:15 2020 -0500
- and now it builds! but ... does it run?
commit 67096c8966
Author: Rachael Alexanderson <madame-rachelle@users.noreply.github.com>
Date: Sun Dec 6 22:25:13 2020 -0500
- one more step closer to compile
commit 5a0c84dd2d
Author: Rachael Alexanderson <madame-rachelle@users.noreply.github.com>
Date: Sun Dec 6 22:13:39 2020 -0500
- set up dynamic opengl load for windows
commit 6ef8118b80
Author: Rachael Alexanderson <madame-rachelle@users.noreply.github.com>
Date: Sat Dec 5 16:38:53 2020 -0500
- allow compiling for win-arm64
commit 7d6f3797c4
Author: Rachael Alexanderson <madame-rachelle@users.noreply.github.com>
Date: Fri Dec 4 05:18:29 2020 -0500
- allow targeting ARM64 on Windows
Co-authored-by: Rachael Alexanderson <madame-rachelle@users.noreply.github.com>
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.
include\algorithm(7419,17): error C3892: '_First': you cannot assign to a variable that is const (compiling source file src\rendering\hwrenderer\scene\hw_drawlist.cpp)
Such invisible decals were not taken into account when calculating their total number
Changing cl_maxdecals CVAR may not work as expected because of limit counter's inconsistent value
https://forum.zdoom.org/viewtopic.php?t=70457
src/common/console/c_console.cpp:1032:4: warning: this statement may fall through [-Wimplicit-fallthrough=]
src/common/console/c_console.cpp:958:4: warning: this statement may fall through [-Wimplicit-fallthrough=]
src/common/scripting/backend/codegen.cpp:2969:4: warning: this statement may fall through [-Wimplicit-fallthrough=]
src/common/scripting/frontend/zcc_compile.cpp:2656:4: warning: this statement may fall through [-Wimplicit-fallthrough=]
src/common/scripting/frontend/zcc_compile.cpp:521:5: warning: this statement may fall through [-Wimplicit-fallthrough=]
src/common/scripting/jit/jit_math.cpp:966:19: warning: this statement may fall through [-Wimplicit-fallthrough=]
src/d_main.cpp:1538:3: warning: this statement may fall through [-Wimplicit-fallthrough=]
src/d_main.cpp:1549:3: warning: this statement may fall through [-Wimplicit-fallthrough=]
src/d_main.cpp:3820:3: warning: this statement may fall through [-Wimplicit-fallthrough=]
src/gameconfigfile.cpp:544:25: warning: this statement may fall through [-Wimplicit-fallthrough=]
src/gamedata/p_xlat.cpp:193:11: warning: this statement may fall through [-Wimplicit-fallthrough=]
src/gamedata/p_xlat.cpp:200:11: warning: this statement may fall through [-Wimplicit-fallthrough=]
src/gamedata/p_xlat.cpp:210:11: warning: this statement may fall through [-Wimplicit-fallthrough=]
src/g_game.cpp:1145:20: warning: this statement may fall through [-Wimplicit-fallthrough=]
src/maploader/maploader.cpp:2142:3: warning: this statement may fall through [-Wimplicit-fallthrough=]
src/menu/doommenu.cpp:159:28: warning: this statement may fall through [-Wimplicit-fallthrough=]
src/m_cheat.cpp:109:3: warning: this statement may fall through [-Wimplicit-fallthrough=]
src/playsim/mapthinkers/a_ceiling.cpp:254:24: warning: this statement may fall through [-Wimplicit-fallthrough=]
src/playsim/mapthinkers/a_floor.cpp:322:18: warning: this statement may fall through [-Wimplicit-fallthrough=]
src/playsim/mapthinkers/a_floor.cpp:330:18: warning: this statement may fall through [-Wimplicit-fallthrough=]
src/playsim/mapthinkers/a_floor.cpp:344:10: warning: this statement may fall through [-Wimplicit-fallthrough=]
src/playsim/mapthinkers/a_plats.cpp:129:47: warning: this statement may fall through [-Wimplicit-fallthrough=]
src/playsim/mapthinkers/a_plats.cpp:284:8: warning: this statement may fall through [-Wimplicit-fallthrough=]
src/playsim/p_acs.cpp:6302:18: warning: this statement may fall through [-Wimplicit-fallthrough=]
src/playsim/p_acs.cpp:8111:16: warning: this statement may fall through [-Wimplicit-fallthrough=]
src/playsim/p_spec.cpp:344:6: warning: this statement may fall through [-Wimplicit-fallthrough=]
src/scripting/decorate/thingdef_parse.cpp:1343:9: warning: this statement may fall through [-Wimplicit-fallthrough=]
src/scripting/zscript/zcc_compile_doom.cpp:298:12: warning: this statement may fall through [-Wimplicit-fallthrough=]
src/wi_stuff.cpp:463:14: warning: this statement may fall through [-Wimplicit-fallthrough=]
src/common/menu/menudef.cpp:785:19: warning: comparison of integers of different signs: 'int' and 'unsigned int' [-Wsign-compare]
src/playsim/p_pspr.cpp:178:3: warning: field 'processPending' will be initialized after field 'HAlign' [-Wreorder]
Syntax: AddListMenu "MenuName" [<before|after> "SubMenuName"] { ... }
By default, new items will be added to the end of the menu. Specifying before/after allows inserting items before or after a specific submenu item.
The real issue is that the number of unattenuated sounds was unchecked and the near limit never kicked in.
To do this properly it is necessary to adjust the limit distance by the attenuation - zero attenuation must mean infinite distance and for high attenuations the distance must be lowered for limiting to work as intended.
The limit for the Doom boss sounds was increased to 4 to compensate for this change.
# Conflicts:
# src/common/audio/sound/oalsound.cpp
- Setting WOF_INTERPOLATE on any of the functions with flags (except A_OverlayFlags) will enable one tic for interpolating.
- Setting PSPF_INTERPOLATE with A_OverlayFlags will permanently enable it for that layer, but requires manual calling.
A_OverlayPivotAlign(int layer, int halign, int valign)
- Aligns the pivot point origin to a corner of the PSprite before applying offsets.
- - halign: Horizontal. Applicable constants are PSPA_<LEFT/CENTER/RIGHT>.
- - valign: Vertical. Applicable constants are PSPA_<TOP/CENTER/BOTTOM>.
- - Default is top left.
A_OverlayVertexOffset(int layer, int index, double x, double y, int flags)
- Allows offsetting the corners of the psprite, granting modders the ability to skew weapon sprites as they see fit.
- - index: The index of the vertice. Valid ranges are between [0,3].
- - x/y: Offsets of vertices.
- - flags: Takes WOF_ flags.
Other changes:
- Removed pivot point interpolation since it's pointless.
- Removed PSPF_PIVOTSCREEN due to complications with it having relativity. This will be revisited either later or in another submission.
- Added ResetPSprite() to be called with BringUpWeapon(), A_Lower(), and morph weapon raising to reset all the new properties to 0.
Nearly ready now. Just some final testing needed.
- Fixed PSPF_PIVOTPERCENT not being applied at start by default.
- Pivots now start in the upper left corner. Alignment flags are planned next for pivot point starting.
Significant progress made, but more testing still required.
- Fixed A_OverlayPivot carrying over copying of X to Y if Y is zero. This is meant to be exclusive to A_OverlayScale only.
- Added WOF_ZeroY to prevent copying X to Y for A_OverlayScale when desired, mirroring A_SetScale's behavior.
The idea behind this is to outright remove the relative position adding from the engine side and let it happen with A_OverlayOffset instead. Still more work to do.
* it is now possible to switch back to the main intro loop from the fullscreen console.
* do not distort the background of the fullscreen console. Always draw the console on top of what the main loop currently displays with a translucent black overlay.
* do not use the CONPIC for the fullscreen console as it tends to be more of a distraction than an asset when filling the entire screen.
* cleaned up c_console.cpp and moved several pieces of code unrelated to actual console management out of it.
I think it is inevitable that such status bars will appear in mods sooner or later and with the old code it is virtually impossible to create a wide status bar that displays properly but gets subjected to this code.
This only concerns the actual horizontal scroller. The vertical one still needs work and the "The End" screen only works if the second picture of the scroller is the full widescreen image because this page is done as a regular single image page which does not know anything about widescreen asset replacements.
The option still remains for cases where it does not work but the cases where mode 3 causes real problems are rare.
All I could find were a handful of poor intermission pics in some old mods which aren't worth keeping this artificial limitation.
This should only flag the tree as new if it is different from the last one.
This not only caused issues with dynamic updates but also made the renderer recreate the tree's data structures repeatedly.
Mainly to allow using 'if constexpr'.
Older CI compiler setups like GCC 5 for Linux were removed as a consequence.
Windows 32 bit was also removed because there are no plans to do any more 32 bit releases of GZDoom.