Build 2104
SVN-
Make a couple of often-used operations not spam messages to the log.
SVN handles and Git names are merged into one person.
Make a couple of often-used operations not spam messages to the log.
Fix another dragpoint() bug that was wrongly omitting walls.
This one could have only happened with TROR maps, I think.
When joining sectors and there's more than one non-grayed-out sector under the
cursor, query the mapper to pick one. The joining can still fail afterwards, which makes it only a semi-automatic helper feature.
This fixes the aforementioned TROR corruption. It happened because Mapster32
allowed circle-walls started on the unconstrained _other_ side of a constrained wall. Also fix a potential invalid wall access when inserting a point (pretty serious, that!)
(Almost) correct insertion of points in the midst of having some walls drawn,
also for make-circle (C, SPACE). There's still a TROR corruption happening probably when inserting on constrained walls, but I've yet to get behind the real cause.
Make deleting points correct while having some walls drawn. For that,
some wall drawing state is ripped out from overheadeditor() into a a file-scope struct (even if we don't yet need it there). If the deleting touches the first drawn point, the walls drawn so far are cleared.
Workaround (two, actually) for the hardware gamma bug in 8-bit fullscreen with
ATI cards. From the time of OpenGL initialization, gamma lookup in classic/fullscreen will be done in software. Before that, always do a setgamma() after setting the palette, since this is what resets the HW gamma. However, this may lead to unappealing artifacts with portions of the scene being sent to the screen with different gammas.
remove ebacktrace1.dll as dependency to eduke32 and mapster32 and
add it to the 'all' target instead source/midi.c: eliminate one 'variable set but not used' warning
Make Polymer's FOV depend viewingrange variable in a 'tangent-linear'
fashion. Among other things, this makes the FOV widening when shrunk work. User CON code should always check the initial viewingrange value when attempting to do FOV effects like zoom, because it is not guaranteed to be 65536 due to different screen aspect ratios etc.
Two tweaks when keying in values directly in the editor's 3D mode.
First, when pressing 'S on signed members (like the shade), display the real signed value instead of the value cast to an unsigned type. Second, when aiming at an overwall and pressing G, affect the overwall instead of the wall. Maybe these changes affect a few other queries too...
mapster32 script: when defining an event, enable it automatically
Fix being squished in sectors with little headroom but extended non-blocking
ceilings or floors. In such cases, you're not squished unconditionally (instead of fetching the ceiling or floor height of the neighbor sector), but TROR isn't meant for small-scale RoR anyway.
Fix dragpoint()!!! There was a bug that omitted setting the new position of certain wall-points since the TROR introduction.
Initialize prlights[lighti].flags.invalidate with 0 when calling
polymer_addlight(). I have no idea whether it's the 'right' thing, but it fixes this: Conditional jump or move depends on uninitialised value(s) at polymer_updatelights (polymer.c:5090) by polymer_drawrooms (polymer.c:938) . . . Uninitialised value was created by a stack allocation at loadmaphack (engine.c:9482) Fix another uninitialized access when rendering jpegs.
Delete maphack lights when changing from Polymer to another renderer.
This fixes a crash when loading a map afterwards. Tweak a few debugging messages and some whitespace.
support for creating a debugging context in winlayer
This also fixes a warning when building for Windows.
Show fake TROR texture when show-invisibility [I] is on in Mapster32/Polymer.
Also move a 'int16_t editstatus' declaration from polymost.c to engine_priv.h.
fix stupid typo that broke r2057
remove two instances of duplicate USE_OPENGL preprocessor checks missed by the removal of the POLYMOST definition
constantly get the textures handle for projective spotlights
Getting the texture handles without requiring invalidation means we can handle ART-animating tilenums without impacting performance too much.
fix horizontal spotlight SEs constantly getting invalidated
Polymer has a hack that snaps horiz values of spotlights between 90 and 110 to 90 and 110 to avoid triggering aliasing artifacts with perfectly horizontal spotlights. Propagate that change all the way to the spotlight SE sprite so that the code won't think that the horiz is always different from the light and mark it invalid each frame.
preliminary support for GL_ARB_debug_output
This won't actually do anything until the a debug bit is added when creating the context, but that requires support for GLX_create_context which SDL doesn't support. I'll add support for WGL_create_context to winlayer in a bit as a stopgap. Also updates our local copy of glext.h with a fresh one from the Khronos registry.
Fix upside-down projective textures
We need to Y-invert the projection texcoords when sampling from the lightmap.
apply ART animation to spotlight lightmaps.
Discard cached sprite planes on texinvalidate
Sprites would stick with their old material on global palette change. This goes through all prsprites and clobbers their CRCs so that an alternate skin / tint / highpal can be applied accordingly.
account for model flipping for backface culling.
The winding order of faces is different if only flipping about X or Y, and we were unconditionally culling CW faces.
fix leading whitespace in polymer_drawmdsprite
fix a stupid copy&paste error that made sector[].ceilingbunch/floorbunch not functioning
When X- or Y-flipping a selection of highlighted sectors, also handle setting
the nextwall pointers correctly; Add some 'asksave=1' and 'make old-nextwalls invalid'.
Sanitize drawing sprites at different levels with TROR/classic. This should fix
most problems where sprites appear to be drawn through walls.
Two tweaks to make the precaching more efficient/less redundant in the game.
First, if we're in Polymer, don't precache tinted tiles that have a highpal for that certain pal. Second, don't precache tiles for palnum 251 (the last non-reserved one, which is used as a crosshair pal). Assuming that there are no other tints, this cuts the initial precache time and cache size on disk in half.
When inserting a new sprite and determining its picnum by frequency count
of the picnums of all sprites, omit the newly inserted sprite itself!