37 lines
1.8 KiB
Markdown
37 lines
1.8 KiB
Markdown
# Physics Placement Tool - 2026-07-12
|
|
|
|
Issue: Gitea #25 (`BS-JD-304`)
|
|
|
|
## Outcome
|
|
|
|
Selected authored props can be released into deterministic Avian gravity, preview their
|
|
settled transforms in the Scene viewport, and either commit the result as one undoable
|
|
transform operation or cancel back to the exact pre-placement state.
|
|
|
|
## Contract
|
|
|
|
- Physics is paused during normal Edit mode and while Play mode is paused.
|
|
- Placement runs only in Edit mode and owns a transactional physics session.
|
|
- Selected mutable level objects must have active rigid-body and non-trigger collider
|
|
authoring. Invalid selections produce a precise, non-destructive diagnostic.
|
|
- Selected bodies are temporarily dynamic with clean motion state.
|
|
- Other movable bodies are temporarily static so they remain collision surfaces without
|
|
advancing unrelated authored state.
|
|
- Commit restores all temporary runtime overrides and records only changed local transforms
|
|
as one grouped history command.
|
|
- Cancel restores transforms and runtime physics state exactly and creates no history entry.
|
|
- Escape cancels. Enter commits once the session has reached rest. A bounded timeout keeps
|
|
unstable scenes controllable.
|
|
|
|
## Work
|
|
|
|
- [x] Establish Edit/Play ownership of `Time<Physics>` and preserve paused single-step PIE.
|
|
- [x] Implement placement validation, runtime snapshots, deterministic stepping, settling,
|
|
timeout, commit, and cancel.
|
|
- [x] Add the placement action and session controls to the existing horizontal viewport
|
|
toolbar plus a compact status HUD.
|
|
- [x] Add unit/integration coverage for prerequisites, settling, cancel, commit, and history.
|
|
- [x] Update editor workflow documentation and implementation checklist.
|
|
- [x] Run source gates and live Wayland acceptance; packaged tests remain skipped by request.
|
|
- [x] Commit, push, attach native Gitea evidence, and close #25.
|