tl;dr: Polish and bug-fixing for slippery-surface backtracking calculations.
What happened last week?
- Polish and bug-fixing for slippery-surface backtracking calculations.
- Finish intra-surface-edge slippery-surface backtracking calculations:
- Fix intra-surface-edge trajectory min/max clamping when backtracking.
- Fix intra-surface-edge stopping-distance calculation when backtracking.
- Fix intra-surface-edge is-pressing-left calculation when backtracking.
- Fix intra-surface-edge velocity-end calculation when backtracking.
- Rename is_backtracking_edge_to_end_at_destination to is_backtracking.
- Update IntraSurfaceEdge calculation logic to consider that the edge is backtracking under more circumstances.
- Update the intra-surface-edge distance calculation to include the distance to and from a turn-around point when the edge backtracks on itself.
- Fix an issue with deceleration sometimes being applied in the wrong direction during intra-surface-edge trajectory calculation.
- Fix an issue with velocity values exceeding the expected max in calculate_velocity_end_for_displacement.
- Fix calculate_duration_for_displacement reaches_destination_before_max_speed to support backtracking in the same manner as calculate_velocity_end_for_displacement.
- Apply velocity one-frame earlier when calculating intra-surface-edge trajectories.
- Fix issue with checking previous_velocity instead of next velocity.
- Remove min/max x-coordinate clamping in intra-surface-edge trajectory calculations for non-floor surfaces.
- This fixes a bug I was seeing with teleporting on ceiling surfaces.
- I spent most of Tuesday trying to debug a very frustrating issue.
- When overshooting the target on a slippering surface and then backtracking to it, the character ends navigation while having too much speed.
- They should instead decelerate smoothly to end with zero speed.
- I thought the issue was in my stopping-distance logic.
- But the issue ended up being a tiny bug in my button-press-release-time logic.
- And I swear I had already fixed that specific logic before...
- Update the correct surface-state parameters in sync_state_for_surface_release.
- Fix sync_state_for_surface_grab and sync_state_for_surface_release to update additional properties.
- Update sync_state_for_surface_grab to also update the character's reachable surfaces.
- Update the player-nav and default behavior classes to not cancel themselves on nav interruptions.
- Update the character to replace the default-behavior when a player-nav-behavior is used.
- Fix a issue with referencing the wrong type of type (edge_type instead of surface_type).
- Downgrade an error to a warning when PlayerNavigationBehavior._on_finished is called, since it is reasonable for it to be called.
- Fix an issue with calculate_duration_for_displacement and calculate_velocity_end_for_displacement using displacement instead of duration when trying to determine whether max-speed is reached before the destination is reached (displacement is ambiguous and can represent movement in either direction).
- Hopefully this will be the final fix for these two recently-problematic functions...
- Update ScaffolderSpawnPosition nodes to instead be SurfacerSpawnPosition nodes.
- Re-calculate platform graphs.
- 🎄🎁🍪❄️🎊🍾🥳 Holidays next week!
- If I have time, I'll create some new Squirrel Away tile art.