orbit/js/entities
Brian Fertig ebd26ad7ba Stop thrusting ship dead when it hits an obstacle or the tether rim
- constrainShip on Planet, Star, Station, JumpGate, and AsteroidCluster now
  returns a contact boolean (true only when position/velocity/acceleration
  actually changed) so the scene can distinguish "touched" from "no-op".
- GameScene.onPostUpdate reads those flags and, if the ship is in its
  Shift+click thrust state, calls stop() + setState('normal', 'contact')
  the first frame any solid or the tether rim touches it — the hold ends
  and the ship rests on the rim instead of driving through.
- Non-thrust ships are left alone by the rule; their existing arrival/brake
  logic still owns their stop.
- dev/contact.test.mjs: headless tests covering no-contact outside the
  keep-out, contact + push-out + inward-motion strip on approach, no
  spurious contact while sliding off the rim, the full thrust-into-planet
  stop-dead-on-rim integration, and that the rule only fires in thrust.
- dev/smoke-game.mjs: add a third thrusttest check (c) verifying a
  Shift+click straight into the planet stops it dead on the rim.
2026-09-07 00:21:30 -06:00
..
AsteroidCluster.js Stop thrusting ship dead when it hits an obstacle or the tether rim 2026-09-07 00:21:30 -06:00
JumpGate.js Stop thrusting ship dead when it hits an obstacle or the tether rim 2026-09-07 00:21:30 -06:00
Planet.js Stop thrusting ship dead when it hits an obstacle or the tether rim 2026-09-07 00:21:30 -06:00
Ship.js Stop thrusting ship dead when it hits an obstacle or the tether rim 2026-09-07 00:21:30 -06:00
Star.js Stop thrusting ship dead when it hits an obstacle or the tether rim 2026-09-07 00:21:30 -06:00
Station.js Stop thrusting ship dead when it hits an obstacle or the tether rim 2026-09-07 00:21:30 -06:00