Skip to content

Fix flipper live catch and EOS rubber physics#566

Draft
freezy wants to merge 8 commits into
masterfrom
physics/flipper-eos-rubber-dampening
Draft

Fix flipper live catch and EOS rubber physics#566
freezy wants to merge 8 commits into
masterfrom
physics/flipper-eos-rubber-dampening

Conversation

@freezy

@freezy freezy commented Jul 13, 2026

Copy link
Copy Markdown
Owner

Fixes #438.

Summary

  • fix live-catch EOS timing by latching the real physics clock once per upstroke
  • use the captured pre-response impact speed for live-catch eligibility
  • add opt-in VPW held-EOS rubber dampening with the original velocity gate and COR curve
  • keep live catch and EOS rubber fallback mutually exclusive
  • prevent rapid release/re-press at EOS from re-arming the live-catch window
  • document the behavior and expose the settings as a dedicated inspector section
  • add focused state, collision-order, catch-outcome, and transformed/kinematic collider regression coverage

Validation

  • Unity 6000.5 EditMode: 36/36 focused flipper physics tests pass
  • full branch diff passes git diff --check

Compatibility

  • the feature remains opt-in through the existing UseFlipperLiveCatch setting
  • serialized flipper packaging is unchanged
  • existing tables retain their current behavior unless VPW catch physics is enabled

@greptile-apps

greptile-apps Bot commented Jul 13, 2026

Copy link
Copy Markdown

Greptile Summary

This PR updates VPW flipper catch physics and related editor/test coverage.

  • Latched live-catch EOS timing from the physics clock.
  • Ball impact speed used for live-catch eligibility.
  • Held-EOS rubber dampening added behind VPW catch physics.
  • Live catch and EOS rubber fallback kept mutually exclusive.
  • Inspector text, docs, and focused physics tests updated.

Confidence Score: 5/5

This looks safe to merge.

  • No blocking issues found in the changed code.

Important Files Changed

Filename Overview
VisualPinball.Unity/VisualPinball.Unity/VPT/Flipper/FlipperCollider.cs Updates live-catch eligibility, explicit catch outcomes, and held-EOS rubber fallback behavior.
VisualPinball.Unity/VisualPinball.Unity/Game/PhysicsStaticCollision.cs Passes pre-collision playfield velocity, solenoid state, and transform context into flipper collision handling.
VisualPinball.Unity/VisualPinball.Unity/VPT/Flipper/FlipperDisplacementPhysics.cs Latches live-catch EOS timing once per upstroke using the physics clock.
VisualPinball.Unity/VisualPinball.Unity/VPT/Flipper/FlipperVelocityPhysics.cs Clears live-catch EOS timing on solenoid edges and keeps solenoid edge tracking updated.
VisualPinball.Unity/VisualPinball.Unity.Test/Physics/FlipperPhysicsTests.cs Adds focused tests for EOS timing, live-catch eligibility, and EOS rubber gates.
VisualPinball.Unity/VisualPinball.Unity.Test/Physics/FlipperCollisionIntegrationTests.cs Adds collision integration tests for slow-ball catch behavior, transform handling, and EOS rubber response.

Reviews (2): Last reviewed commit: "flipper: gate live catch on ball speed" | Re-trigger Greptile

Comment thread VisualPinball.Unity/VisualPinball.Unity/VPT/Flipper/FlipperCollider.cs Outdated
@freezy

freezy commented Jul 13, 2026

Copy link
Copy Markdown
Owner Author

@greptile-ai re-review

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add Flipper Rubber Dampening when Flipper is in Up-Position

1 participant