Skip to content

M165: Add first functional Train workspace#195

Merged
Coasterpete merged 1 commit into
mainfrom
milestone/m165-train-workspace
Jul 20, 2026
Merged

M165: Add first functional Train workspace#195
Coasterpete merged 1 commit into
mainfrom
milestone/m165-train-workspace

Conversation

@Coasterpete

Copy link
Copy Markdown
Owner

Summary

This milestone introduces the first functional Train Workspace to the Quantum CoasterWorks Avalonia editor.

M165 focuses on a stable engineering foundation built on the existing immutable backend train types while preserving the architecture established in previous milestones.

What's Included

  • Enabled the Train workspace profile
  • Added Train Configuration, Preview, and Summary panes
  • Atomic editing of:
    • Car count
    • Car-center spacing
    • Car body length
    • Car body width
    • Car body height
    • Bogie spacing
  • Validation using the existing immutable backend:
    • TrainConsistDefinition
    • TrainCarGeometry
    • TrainBogieLayout
  • Preservation of the last valid consist after invalid edits
  • Deterministic top-view consist schematic
  • Calculated engineering readouts:
    • Approximate consist length
    • Inter-car gap
    • Car dimensions
    • Bogie spacing
  • Independent Track and Train docking layouts
  • Workspace-specific command visibility
  • Documentation and automated tests

Architecture

  • Backend train types remain the authoritative source of truth.
  • No duplicate Avalonia train-domain model was introduced.
  • The frontend stages edits before atomically constructing immutable backend definitions.
  • The preview is intentionally schematic so future visual train assets can be added without changing the consist model.

Verification

  • dotnet build QuantumCoasterWorks.sln --nologo
  • dotnet test QuantumCoasterWorks.sln --no-build --nologo
  • 1,816 tests passed
  • Zero build warnings or errors

Manual smoke testing verified:

  • Track ↔ Train workspace switching
  • Consist editing and validation
  • Preview updates
  • Summary calculations
  • Independent workspace layout persistence
  • Returning to Track preserves the existing Track workspace state

Deferred

This milestone intentionally does not implement:

  • Train asset importing
  • .glb / .gltf train models
  • Train style packages
  • 3D visualization
  • Seats or restraints
  • Wheel assembly editing
  • Articulation editing
  • Train-on-track placement
  • Physics playback
  • Simulation controls

These capabilities are planned for future milestones built on top of the Train Workspace foundation.

Screenshots

Track Workspace

image

Engineering Math Plots

image

Train Workspace (M165)

image

Workspace Switching

95a0f22d73540e21b95646eeb13fa8e2.mp4

@Coasterpete
Coasterpete merged commit 4e8422a into main Jul 20, 2026
1 check passed
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.

1 participant