Commit graph

21721 commits

Author SHA1 Message Date
Major Cooke
f081ef1850 Enhanced pathing for floaters
Their checks are now 2D instead of 3D.
2024-03-12 18:09:02 -04:00
nashmuhandes
0d9855cfe7 Expose LandingSpeed to ZScript. This controls the minimum Z velocity from falling down that's needed to "squat" the player's view (defaults to -8). 2024-03-12 18:08:42 -04:00
Boondorl
730ef1a23a Adjusted view angle interpolation
Now uses deltaangle to get the shortest interpolation path for angles.
2024-03-10 13:48:25 -03:00
Boondorl
0ef042562e Fix for Morph virtual
Allows class<MorphedMonster> to be used as an argument type in place of class<Actor> within the third argument for backwards compatibility.
2024-03-08 20:10:40 +01:00
Major Cooke
05167fd4ef Missed this one. 2024-03-05 13:44:38 -05:00
Major Cooke
d71af3683a Clear the path instead of advancing the node when crossing portals.
- If an actor crosses back over a portal because they're blocked, it will result in false positives.
- Fixed nodes not being targeted for aim direction.
2024-03-05 13:44:38 -05:00
Major Cooke
257ddb520a Extra safety checks. 2024-03-05 13:44:38 -05:00
Major Cooke
5abd7e1ebf Comment warning to modders. 2024-03-05 13:44:38 -05:00
Major Cooke
79fb3dfd31 Implemented KEEPPATH flag. 2024-03-05 13:44:38 -05:00
Major Cooke
69001ad4f7 Added ExcludeNode virtual for actors to reject certain nodes of choice.
- Changed MeleeRange to FriendlySeeBlocks so it's supported by Doom Builder.
2024-03-05 13:44:38 -05:00
Major Cooke
81ebd8c8c4 More progress.
- 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.
2024-03-05 13:44:38 -05:00
Ricardo Luís Vaz Silva
ad52e2cc1e AStar 2024-03-05 13:44:38 -05:00
Ricardo Luís Vaz Silva
3348822390 ... 2024-03-05 13:44:38 -05:00
Ricardo Luís Vaz Silva
cc51b486e0 TArray Binary Search 2024-03-05 13:44:38 -05:00
Major Cooke
b2cb4b0a6d Begin adding PathNodes. 2024-03-05 13:44:38 -05:00
Boondorl
3033fafaa7 Improvements to death and cheat handling
Extra safety to ensure dummy Actor deaths properly emulate a real death and aren't duplicate called. Fixed a crash when using the kill command while set to unmorph on death. Super morphing is now possible while using the morphme cheat if passing the morph class directly. Added a flag to ignore player invulnerability completely when morphing.
2024-03-01 08:35:31 -05:00
Boondorl
6c64a4403c Improved ZScript interface for morphing
Added getter and setter functions for handling whether or not the player fields should be gotten/set. Added MRF_KEEPARMOR flag to prevent stripping armor on morph. Optimized unmorphed Actor by setting it to NoInteraction and removing it from the blockmap and sector lists.
2024-03-01 08:35:31 -05:00
Boondorl
12dc5c1506 Further morphing clean up
Players will now use their Alternative field to check if they're morphed instead of their MorphTics. This makes the current state of morphing more reliable, otherwise setting this to 0 manually without unmorphing could have very odd results. Both monsters and players consider 0 morph time to mean infinite now (previously this only applied to monsters). Player unmorphs no longer die in the case of a failed unmorph on death. Removed inventory swapping on player pointer substitution as it's too messy to do here.
2024-03-01 08:35:31 -05:00
Boondorl
30730647fe Fixed inconsistencies between player and monster morphing
The Tome of Power and Chaos Device will now work on non-players. The STAYMORPHED flag will now work on players.
2024-03-01 08:35:31 -05:00
Boondorl
2c09a443b4 Reworked Morphing
Removed StaticPointerSubstitution in favor of a much safer function that only changes select pointers. As a result the ability to properly modify morphing has been opened back up to ZScript. Many missing virtual callbacks were amended and MorphedDeath has been reworked to only be called back on an actual morphed death. MorphedMonster is no longer required to morph an Actor. CheckUnmorph virtual added that gets called back on morphed Actors. Fixed numerous bugs related to morph behavior.
2024-03-01 08:35:31 -05:00
Boondorl
b469770ecc Reworked view offsetting
View offsets are now added after the base position and angles (accounting for interpolation) are calculated. Behavior was centralized into a singular tracer that all view offsets now use to prevent clipping out of the map. Cleaned up camera rendering behavior. Angles are now properly normalized after all offsetting is accounted for. The chase cam can now update in real-time instead of forcing interpolation.
2024-03-01 07:10:26 -05:00
Rachael Alexanderson
08a093ffda
- merge pull request https://github.com/ZDoom/gzdoom/pull/1577/files 2024-03-01 05:56:15 -05:00
Christoph Oelckers
ef4c4ee503 fixed resource leak in OpenDecompressor 2024-02-27 07:20:40 +01:00
RaveYard
205d4b5ff3 Support negative fadestep for particles 2024-02-27 07:03:16 +01:00
Rachael Alexanderson
47be9c1e54
- fix https://github.com/ZDoom/gzdoom/issues/2415 - wait to call V_Init2() until after exec commands are processed 2024-02-26 13:55:54 -05:00
Boondorl
49cac88c12 Improvements to Network Commands/Buffers
Fixed a memory leak in DNetworkBuffer. Added native function support to FNetworkCommand and DNetworkBuffer. Exposed EndOfStream() for FNetworkCommand.
2024-02-26 06:23:25 -05:00
Boondorl
e37c19b5b4 New API for assigning unique network ids to objects 2024-02-26 06:23:12 -05:00
Boondorl
4d1590ad82 Fixed view position forcing camera interpolation
Fixed absolute view position not working. Camera Actor is no longer visible when using view offsets.
2024-02-26 06:47:05 +01:00
Boondorl
a1a916a823 Added real-time client camera tracking for texture cams 2024-02-24 17:57:53 +01:00
Boondorl
e4ea5ad307 Fixes for SCALEDNOLERP
No longer relies on last input fraction to determine offset on frame (now uses TicFrac). No longer modifies Actor angle in real-time. Fixed offsetting breaking when other viewports are being renderer.
2024-02-23 22:44:18 +01:00
Ricardo Luís Vaz Silva
d848a57bac Fix readonly for SpecialBounceHit virtual 2024-02-23 07:07:56 +01:00
Magnus Norddahl
144caa0902
Fix precache unload bug in FHardwareTextureContainer::UnmarkAll 2024-02-19 06:45:30 -05:00
Magnus Norddahl
c9612b0cab
Fix memory leak due to IHardwareTexture forward declaration 2024-02-19 06:45:18 -05:00
Kevin Caccamo
6de9d83b81 Allow GZDoom to use custom Doom 1 E4 soundtracks
Attempt to fix #2403 by assigning E4 music to Doom 1 E4 maps, and adding a SNDINFO lump with $musicalias commands, which will use the existing songs if a custom E4 soundtrack isn't available for Doom 1.
2024-02-17 07:24:33 +01:00
Ricardo Luís Vaz Silva
6829a37aa5 Fix structs missing readonly 2024-02-17 07:23:00 +01:00
Ricardo Luís Vaz Silva
bc26c54b15 Fix readonly native structs 2024-02-17 07:23:00 +01:00
Rachael Alexanderson
d8ef27e0ed
Squashed commit of the following:
commit ad25b50089b6e01b8e4291e34cfe3a008af9128d
Author: Rachael Alexanderson <madame-rachelle@users.noreply.github.com>
Date:   Fri Feb 9 12:12:46 2024 -0500

    Revert "Adding isometric camera mode with orthographic projection to current state of master branch of GZDoom."

    This reverts commit d2c2c93cf1.

commit 8537f0d8db804f0076b90daa66b750e44dccf44c
Author: Rachael Alexanderson <madame-rachelle@users.noreply.github.com>
Date:   Fri Feb 9 12:12:41 2024 -0500

    Revert "Changed all of the isometric functionality to mapinfo and playerinfo variables. Retained function of most of the CVars."

    This reverts commit dc897eacc0.

commit d45f6ebf11f31d246f2de4f3bbd11f7970783125
Author: Rachael Alexanderson <madame-rachelle@users.noreply.github.com>
Date:   Fri Feb 9 12:10:21 2024 -0500

    Revert "Restored r_orthographic behavior."

    This reverts commit 26908f5bc5.

commit be0836feef9b95f12828eeed4319c726ef13780d
Author: Rachael Alexanderson <madame-rachelle@users.noreply.github.com>
Date:   Fri Feb 9 12:09:15 2024 -0500

    Revert "Adding isometric camera mode with orthographic projection to current state of master branch of GZDoom."

    This reverts commit 08b03e6b19.

commit 688288a9199b912203022cb4db37503f6270e0c3
Author: Rachael Alexanderson <madame-rachelle@users.noreply.github.com>
Date:   Fri Feb 9 12:09:06 2024 -0500

    Revert "Changed all of the isometric functionality to mapinfo and playerinfo variables. Retained function of most of the CVars."

    This reverts commit d3405837ce.

commit 72b7df9fa1841d665c2846dd31a89c6f48123e55
Author: Rachael Alexanderson <madame-rachelle@users.noreply.github.com>
Date:   Fri Feb 9 12:08:59 2024 -0500

    Revert "Restored r_orthographic behavior."

    This reverts commit e171f4eb6a.

commit aa954132bf29f2f8a51bf09dae127e5ffe2c5670
Author: Rachael Alexanderson <madame-rachelle@users.noreply.github.com>
Date:   Fri Feb 9 12:08:48 2024 -0500

    Revert "Merged with latest master and made small change (zcenter -> center.Z) to hw_sprites.cpp. Now compiles and works."

    This reverts commit c8a7507e8e.

commit 3ce90e87a3a9956b615995b57b90619e89bbcff4
Author: Rachael Alexanderson <madame-rachelle@users.noreply.github.com>
Date:   Fri Feb 9 12:00:46 2024 -0500

    Revert "Cleaning up implementation of isometric camera with optional orthographic projection."

    This reverts commit 25f1407228.

commit 3aafd363e40c8d1d2ebbe3c61aeb2b80a74e565a
Author: Rachael Alexanderson <madame-rachelle@users.noreply.github.com>
Date:   Fri Feb 9 11:59:25 2024 -0500

    Revert "Small change to SpectatorCamera actor."

    This reverts commit 2b555d7556.

commit a41911f8907731c098de71ca3e14261ac432ec8c
Author: Rachael Alexanderson <madame-rachelle@users.noreply.github.com>
Date:   Fri Feb 9 11:59:16 2024 -0500

    Revert "SpectatorCamera can now follow the 'tracer' actor. Also added a 'lagdistance' property for lazy follow."

    This reverts commit 7fbb4cd06c.

commit 19398edd065b7b483b8c7be42cb16026695e241a
Author: Rachael Alexanderson <madame-rachelle@users.noreply.github.com>
Date:   Fri Feb 9 11:59:05 2024 -0500

    Revert "Minor addition toe SpectatorCamera. Added three chase modes to lazy follow. 0: Catch up until tracer is centered again. 1: Same but don't move if tracer isn't moving (camera moving when character is not is jarring). 2: Stop chasing if tracer is closer than lagdistance. Game modes benefit from a 'center camera' button but that doesn't have to be hard-baked into the engine."

    This reverts commit c3ca564cfc.
2024-02-09 12:15:17 -05:00
Ștefan Talpalaru
07d6b1448a undo CI change 2024-02-05 17:40:37 +01:00
Ștefan Talpalaru
b5eb8f47db GCC-13 support, when precompiled headers are off 2024-02-05 17:40:37 +01:00
Hugo Locurcio
97cfd32677 Add a cvar to swap health and armor position on alternative HUD
When enabled, this makes the layout identical to the standard HUD
(similar to how most other games lay out health and armor on a HUD).
2024-02-04 20:13:18 -03:00
Christoph Oelckers
5b793958f9 fix uniform buffer size check 2024-02-04 23:06:02 +01:00
nashmuhandes
01a462e9d4 Fix the default controller axes on Linux. The third axis is actually the Left Trigger, which causes the player to uncontrollably look upwards. Fixed by mapping said axis to nothing. 2024-02-04 22:45:34 +01:00
nashmuhandes
d744f8f983 Add more gamepad bindings for Joystick API devices. Most beneficial for Steam Deck and Linux users 2024-02-04 22:45:04 +01:00
Christoph Oelckers
f1db369883 moved a few things out of the common code that should be defined privately. 2024-02-04 13:54:25 +01:00
Christoph Oelckers
d0a2713820 limit uniform blocks to 64kb.
The GL uniform code is not capable of dealing with large blocks, so restrict it to what most drivers report as their maximum.
2024-02-04 13:36:25 +01:00
Major Cooke
3f72f8acd5 Fixed psprites & viewpos being completely broken for non-isometric mode.
This line of code was altering a global cvar.
2024-02-03 11:22:16 -05:00
Christoph Oelckers
b37ea19f86 remove unnecessary #defines 2024-02-03 16:07:12 +01:00
nashmuhandes
cf4841c7de Allow the Joy2 button to cancel binding a key in the controls menu 2024-02-02 13:14:00 +01:00
nashmuhandes
481b2c1a70 Expose the main menu key in the controls menu so that it can be assigned (most useful for gamepad users) 2024-02-02 13:13:25 +01:00
nashmuhandes
662b4b07a4 Swap the default binding for the "Start" and "Select" buttons on gamepads. Using "Start" to access the main menu is a more commonly-accepted standard set by most released games out there - players would tend to reach for that button first to access the menu. 2024-02-02 13:12:41 +01:00