Physik: On collision stay mit Kontaktdaten, aber nicht in jedem Tick #149

Closed
opened 2026-09-18 17:48:10 +02:00 by meleki · 2 comments
Owner

Aus #146, Antwort 6: vorerst kein Stay mit Kontaktdaten. Später vielleicht ein Stay, das nicht in jedem Tick feuert.

Stand nach #146

  • On collision enter hat die Ausgänge normal x, normal y und impulse aus Rapiers Kontakt. On collision stay und On collision exit haben sie nicht.
  • On collision stay feuert wie bisher in jedem Tick, solange das Paar besteht.

Zu klären

  • Welche Form das Feuern haben soll: ein Intervall am Node (wie On timer), nur bei geänderter Normale, oder ein Daten-Node „Contact of (a, b)“, den man bei Bedarf abfragt.
  • Welche Daten dazukommen: Normale, Impuls, Kontaktpunkt.
Aus #146, Antwort 6: vorerst kein Stay mit Kontaktdaten. Später vielleicht ein Stay, das nicht in jedem Tick feuert. ## Stand nach #146 - `On collision enter` hat die Ausgänge `normal x`, `normal y` und `impulse` aus Rapiers Kontakt. `On collision stay` und `On collision exit` haben sie nicht. - `On collision stay` feuert wie bisher in jedem Tick, solange das Paar besteht. ## Zu klären - Welche Form das Feuern haben soll: ein Intervall am Node (wie `On timer`), nur bei geänderter Normale, oder ein Daten-Node „Contact of (a, b)“, den man bei Bedarf abfragt. - Welche Daten dazukommen: Normale, Impuls, Kontaktpunkt.
admin added this to the Development project 2026-09-18 18:01:02 +02:00
admin moved this to Next in Development on 2026-09-18 18:01:24 +02:00
admin moved this to Queue in Development on 2026-09-18 18:01:44 +02:00
admin added the low-priority label 2026-09-18 18:01:50 +02:00
admin moved this to Next in Development on 2026-09-19 11:07:28 +02:00
admin removed the low-priority label 2026-09-19 11:08:28 +02:00
Author
Owner

Umgesetzt in 6a31f5e, zusammen mit #153 und #155.

Was gebaut ist

  • On collision stay hat ein Feld Interval (s). Bei 0 feuert es wie bisher jeden Frame. Sonst feuert es einmal pro Intervall seit dem Treffen — mit einer eigenen Uhr pro Node und Paar, die bei einem neuen Treffen von vorn beginnt.
  • Stay und Enter liefern normal, impulse und neu point (Kontaktpunkt). Die Kontaktdaten werden nur geholt, wenn der Node wirklich feuert. Im Editor-Run (ohne Rapier) sind alle drei 0.

Selbst entschieden

Zu den offenen Punkten stand kein Vorschlag. Gewählt habe ich das Intervall am Node statt eines Daten-Nodes „Contact of“.

Gemessen

Rapier meldet für einen ruhenden Body konstant 1,25 × m·g·dt als Impuls, nicht den reinen Nettoimpuls. Der Wert wird unverändert weitergegeben; der Test prüft nur, dass er mit der Masse wächst (Faktor 3 bei dreifacher Dichte), und das Wiki sagt es so.

Tests

  • tests/core/collision-stay.test.ts: Intervall, Uhr pro Paar, Neustart beim erneuten Treffen, Kontaktdaten.
  • e2e-Modul 43: Stay alle 0,5 s mit normal −1 und impulse > 0.
  • Lokal: npm run check → 1560 Tests, CHECK EXIT 0; GM_STEPS=39-43 → ALL PASSED – 99 checks. CI zu 6a31f5e lief beim Schreiben noch — Nachtrag folgt.
Umgesetzt in `6a31f5e`, zusammen mit #153 und #155. ## Was gebaut ist - `On collision stay` hat ein Feld **Interval (s)**. Bei 0 feuert es wie bisher jeden Frame. Sonst feuert es einmal pro Intervall seit dem Treffen — mit einer eigenen Uhr pro Node und Paar, die bei einem neuen Treffen von vorn beginnt. - Stay und Enter liefern **normal**, **impulse** und neu **point** (Kontaktpunkt). Die Kontaktdaten werden nur geholt, wenn der Node wirklich feuert. Im Editor-Run (ohne Rapier) sind alle drei 0. ## Selbst entschieden Zu den offenen Punkten stand kein Vorschlag. Gewählt habe ich das Intervall am Node statt eines Daten-Nodes „Contact of“. ## Gemessen Rapier meldet für einen ruhenden Body konstant **1,25 × m·g·dt** als Impuls, nicht den reinen Nettoimpuls. Der Wert wird unverändert weitergegeben; der Test prüft nur, dass er mit der Masse wächst (Faktor 3 bei dreifacher Dichte), und das Wiki sagt es so. ## Tests - `tests/core/collision-stay.test.ts`: Intervall, Uhr pro Paar, Neustart beim erneuten Treffen, Kontaktdaten. - e2e-Modul 43: Stay alle 0,5 s mit normal −1 und impulse > 0. - Lokal: `npm run check` → 1560 Tests, `CHECK EXIT 0`; `GM_STEPS=39-43` → `ALL PASSED – 99 checks`. CI zu `6a31f5e` lief beim Schreiben noch — Nachtrag folgt.
admin moved this to Done in Development on 2026-09-19 11:53:33 +02:00
Author
Owner

Nachtrag CI zu 6a31f5e: grün, selbst in den Job-Logs nachgelesen. Gate (Task 144): 109 Testdateien grün, CHECK EXIT 0. Suite (Task 145): ALL PASSED – 1073 checks – die Summe 1073 in README und Wiki ist damit gemessen. Smokes 24 / 19 / 21, alle grün.

**Nachtrag CI zu `6a31f5e`:** grün, selbst in den Job-Logs nachgelesen. Gate (Task 144): 109 Testdateien grün, `CHECK EXIT 0`. Suite (Task 145): `ALL PASSED – 1073 checks` – die Summe 1073 in README und Wiki ist damit gemessen. Smokes 24 / 19 / 21, alle grün.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: meleki/feuerwerk#149