Build 7293
SVN-
Generale
Fix issue where the option to enable or disable Polymer wasn't being saved properly
Nickname SVN e nomi Git sono unificati per persona.
Fix issue where the option to enable or disable Polymer wasn't being saved properly
Revert "engine.cpp/.h: clean up & fix lintersect(). Additionally, add support for finding intersections of collinear line segments."
This reverts r6886.
Fix issue with editor not allowing wall and floor aligned sprites to be resized in 2d mode without textured view mode enabled
This should fix the too many sprites spawned issue in single player
Change A_AddToDeleteQueue() to call A_DeleteSprite() on sprites it removes from the queue directly, as sprites with statnums other than STAT_ACTOR and STAT_MISC are not deleted automatically when their xrepeat is 0. This fixes using CON_INSERTSPRITEQ with sprites of statnums other than STAT_ACTOR and STAT_MISC.
- Packet code implementation (merge from private c/s repo), world updates are now synced through snapshots. See tag SVN_SyncPoint_Dec2018 on master of the other repo.
- "Scratch pad" sprites implementation, to avoid desyncs in sprite indexes, clients will insert temporary sprites which are cleared out when they receive the next snapshot from the server. - Patches from Striker which fix player stomping frag counts, the accept button when hosting a game through the menu, and a "noffire" command line parameter. - Patches from NY00123: t_data sync optimizations to improve some jittery behavior on the client side.
Fix oversight with wall texture rotation on tile 0
CON syntax extension: the empty "[]" shortcut for accessing a struct at index THISACTOR can now be omitted.
This allows cleaner syntax such as "geta .x temp", "ife sprite.x temp", etc.
WIP wall texture rotation bit
stop playing sounds when entering the tile selector in 3d mode
Fix Polymer checkbox not showing up in the startup window in Visual Studio builds
Direct struct access for tsprite, and break special gamevar access out of Gv_GetVar() and into a separate function like it already was with Gv_GetVarX()
This is supposed to fix some errors with HIGH_PRECISION_SPRITE reported by a static analyzer, wherein 32-bit values were shifted and truncated as 32-bit before being widened to a 64-bit type, which didn't seem like the intended behavior. This is the commit to look at if anything is suddenly fucked up in the classic software renderer.
Rename the implementation of _lrotl() found at the top of kplib.cpp to klrotl() and use it unconditionally on platforms other than Win32 (it's only used in .bmp rendering).
Add CSTAT_SPRITE_ALIGNMENT_MASK. It's identical to CSTAT_SPRITE_ALIGNMENT_SLAB, but should be used in cases where you're checking either CSTAT_SPRITE_ALIGNMENT_WALL or CSTAT_SPRITE_ALIGNMENT_FLOOR rather than checking for a slab (voxel).
Update engine headers so that argument names in function declarations match the actual function definitions. This also removes const from function declarations in cases when it isn't meaningful.
Same sort of thing as the previous commits, but for the engine. Forward declaration cleanup and constification.
engine.cpp: fix crash when calling `setrendermode 3` where PolymostProcessVoxels would be called before Polymost is initialized.
PolymostProcessVoxels would call videoNextPage during processing which would attempt to render the OSD and lead to a segfault due to Polymost not being properly initialized.
polymost.cpp: temporarily disable experimental r_enablepolymost2 cvar
polymost.h: fix order of parameters to match polymost.cpp
polymost.cpp: fix lockup bug that would occur with polymost_waitForSubBuffer() when glClientWaitSync consistently returned GL_WAIT_FAILED on certain hardware/drivers.
Additionally, fix conditional check for r_persistentStreamBuffer requirements in polymost_glinit().
Further revise a couple of null pointer checks in Polymost
Fix potential OOB spriteext[] access when checking SPREXT_NOTMD to determine whether or not to render a sprite's model, if available
Tweak osdfunc_setrendermode() to report whether the classic renderer is the C or ASM version
Fix overcomputation in the classic renderer due to a bug caused by a previous optimization attempt
Fix issue in the C version of the classic renderer where someone had attempted to negate a bool
Fix potential null pointer dereferences when rendering a model with no animations (?)
Apply the same autoaim Z position offsetting logic used on GREENSLIME and ROTATEGUN to any sprite with CSTAT_SPRITE_YCENTER set
Remove redundant code from Polymost fog
Patch from Fox.
polymost.cpp/glsurface.cpp: Don't print shader compile status to the console on success.
Create P_GetOverheadPal() and restore the DOS definition of it.
DOS: the player sprite's pal (including pants color and frozenness), unaffected by sector floor pal what the code had for some reason: the sector's floor pal, neglecting the nofloorpal bit, frozenness, and the player's pants color I contend that it is okay for the automap sprite to ignore the sector's color for map legibility purposes.
Clean up variables in overhead map player sprite draw code.
Support software renderer upscaling engine-side in sdlayer and sdlayer12 with various scaling factors (beyond just pixel doubling).
When glsurface is available, use GL to upscale the render buffer. Additionally, fix build issues with sdlayer12 introduced by GLAD changes (r6656).
sdlayer.cpp: Don't destroy window resouces if switching between software rendering on glsurface and Polymost/Polymer
polymost.cpp: make c_wrapThreshold consistent between POLYMOST1_BASIC_FRAGMENT_SHADER_CODE and POLYMOST1_EXTENDED_FRAGMENT_SHADER_CODE
polymost.cpp: fix rendering for indexed colour textures to match original behaviour when !r_usetileshades or globalflags & GLOBAL_NO_GL_TILESHADES
Additionally, fix issue in polymost_setShade() where shade calculation was happening after a check for whether or not the shade needed to be updated.
sdlayer.cpp: fix software renderer crash affecting Mapster32 due to improper handling of lockcount in videoBeginDrawing()/videoEndDrawing() when using glsurface