- Updated the original map to the new system of lightmap layers
- Added time trial triggers to the original map
- Forced respawn (from
trigger_respawn) is now also deferred to GameManager - Hitting a respawn trigger in timetrial mode will now attempt to respawn you at the last checkpoint.
- The default respawn/segmented run behaviour is now “Practice mode”. Added
tt_practiceto toggle practice mode. When practice mode is disabled, all respawns are replaced with return to start. This enforces that all runs are valid - Added
r_show_crosshair. Toggles visibility of a 2px square in the center of the screen. Starts disabled
- Hitting a force respawn in speedrun_mode now correctly restarts the level
- Timetrial UI now shows the stored best time next to the current time
- Fixed depth sorting on fogplanes so they now appear correctly behind checkpoint zones
- Removed hardcoded player spawn for the original map, now uses an
info_spawnpoint. Also rotated it to be slightly more forgiving
- Added
env_lightblocker. Uses very tiny lightmap size to still effect shadows and is manually hidden after bake via script. Once #96538 is fixed this won’t be necessary.
- Added
AudioMultiPlayerandAudioMultiPlayer3D. Automates playing sounds across cycling set of AudioStreamPlayers to get multi-sample polyphony. - Massive refactor of
PlayerController.gd, reduced linecount by 50%- Moved all sound related code out of
PlayerController.gdintoPlayerSoundManager.gdand switched to using the above mentioned AudioMultiPlayers. (ReducedPlayerController.gdby ~250 lines) - Migrated all the state specific logic out of
PlayerController.gdinto PlayerAirState, PlayerSlideState, PlayerLedgeGrabState, etc. (ReducedPlayerController.gdby ~250 lines)
- Moved all sound related code out of