* Feature-complete isometric mode fork.
* Dithered transparency condition tweaks.
* Dithered transparency for non-corpse monsters only (and missiles).
* SpectatorCamera vertical shift.
* Including math.h in hw_sprites.cpp to keep visual studio happy (it couldn't find M_SQRT2 definition).
* Defining MY_SQRT2 in hw_sprites.cpp to keep visual studio happy (it couldn't find M_SQRT2 definition).
* Defining MY_SQRT2 in r_utility.cpp also to keep visual studio happy.
* retrigger checks
* Have correct sprite angle-frame face the camera with orthographic projection enabled.
* Dithered Transparency now works properly on 3D floors. Moved that dither-trans flag setting code within hw_bsp.cpp to handle double-processing of linedefs. Added helper functions to FRenderViewpoint class 'bool IsOrtho()' and 'bool IsAllowedOoB()' to clean up checks everywhere in the code.
* Fixed indents. Added bbox property to subsector struct and use it instead of BSP nodes and Clippers (creating a bbox around viewpoint and checking for overlap) in orthographic mode when no fog of war is active. Turns out to be much faster. Though you need really big maps (Winter's Fury MAP01) to see a difference in fps.
* Non-linux checks don't like uint. Changed to unsigned int.
* Small change of a float to camera.zs. Ignore for testing. Should make no difference.
* Update actor.h to remain mergeable
RF2_NOMIPMAP was introduced, so I had to displace RF_ISOMETRICSPRITES to next bit.
cleaned up function interface to avoid referencing the file system in the worker functions.
replaced StringTable's operators with functions.. The main reason is that these are far easier to look up when browsing the source.
This also fixes a premature translation in SBARINFO that was done in the parsing stage, not the printing stage.
- AMBUSH flag on nodes makes them blind and untargetable when getting `startnode` and `goalnode` for `FindPath()`. This is useful for indicating a node should be skipped when tele/portaling, so the current path can be preserved.
- Setup is simple: place nodes behind lines that tele/portal entities and mark them as AMBUSH.
Other changes:
- Restored global array since blockmap is not a viable option here.
- Added MAPINFO `pathing` flag which enables pathing by default.
- Added NOPATHING flag to disable pathing entirely, useful for maps that have pathing enabled.
- Added `ReachedNode(Actor mo)` virtual, responsible for handling node traversal.
- Nodes now make use of MeleeRange to limit their sight checking functions.
All CVars, mapinfo variables, and playerinfo/playerpawn variables are gone.
A Camera actor named 'SpectatorCamera' is defined in warsrc/static/zscript/actors/shared/camera.zs
The following new flag bits were defined in the 'DViewPosition' struct for use with actor->ViewPos in src/playsim/actor.h:
VPSF_ALLOWOUTOFBOUNDS = 1 << 3, // Allow viewpoint to go out of bounds (hardware renderer only).
VPSF_ORTHOGRAPHIC = 1 << 4, // Use orthographic projection.
VPSF_ISOMETRICSPRITES = 1 << 5, // Displace sprites towards camera and don't billboard (drawn from isometric perspective).
Basically, spawn a SpectatorCamera actor with the appropriate flags and set it to player.camera.
See example template: https://www.mediafire.com/file/fv8rytayjt9l6g1/isometric_actor_wads.zip/file
Has been tested with multiplayer death and disconnection (and respawns). Not tested with portals.
Still only works with hardware renderer (mostly). But should be compatible with older mods and libraries.
Revert "Restored r_orthographic behavior."
This reverts commit 26908f5bc5.
Revert "Changed all of the isometric functionality to mapinfo and playerinfo variables. Retained function of most of the CVars."
This reverts commit dc897eacc0.
Revert "Adding isometric camera mode with orthographic projection to current state of master branch of GZDoom."
This reverts commit d2c2c93cf1.
This cannot of course set real complevels, so what it does is set all appropriate compatibility flags from the respective preset.
It does leave out a few flags that are preferably left to the user, like infinitely tall actors or wall running.
* make all legacy light modes except 'Doom' MAPINFO only. A CVAR still exists for testing but its value won't be saved to the config.
* user can only select between "performance', 'software' and 'vanilla'. 'performance' is the old 'Doom' mode which is still needed to speed things up on low end hardware.
* MAPINFO can not enforce any of the two software light modes, as low end users require the option to change this to the 'performance' setting. Selecting one will always revert to the user's light mode selection.
Due to C++ conversion rules this was a bit too volatile. There's really not enough places where being able to pass a string directly into the sound API was beneficial - the two most frequent functions now got overloaded variants.
Turns out that there's a few old maps that have the extended line flags set but not the guard bit that forces their clearance.
Astrostein 1's first map is an example for this.
The reason this was never added was the hard dependency on the line trigger types. This implements some modified logic that does not try to find all potential lifts in the map.
Also moving the MBF flags to compatflags so that they are easier to control by the user as these must be part of compatibility presets.
Prompted by 'Hurt' which has > 4000 lights and runs into both performance issues and unpredictable light selection for the limited amount of shadowmap slots.
- Always allow skyboxes by default
- Add option to disable skyboxes through mapinfo
Squashed commit of the following:
commit d4c4d9310d0157ce575f52989b5b080398cf7629
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).
* Add FALLDAMAGE flag and add property to properly apply falling damage to the monsters
* Change name of propermonsterdamage property to propermonsterfallingdamage