Skip to content

Commit bf05f13

Browse files
committed
Automatic merge of T1.5.1-687-gd279e384a and 13 pull requests
- Pull request #570 at c59c788: Experimental glTF 2.0 support with PBR lighting - Pull request #839 at d00beb9: First phase of https://blueprints.launchpad.net/or/+spec/additional-cruise-control-parameters - Pull request #865 at 67014b7: Dispatcher window improvements - Pull request #874 at f8dbeab: Dynamic brake controller refactoring - Pull request #875 at 43bf33e: Bug fix for https://bugs.launchpad.net/or/+bug/2036346 Player train switching doesn't work with 3D cabs - Pull request #876 at f92de76: docs: add source for documents previously on website to source Documentation folder - Pull request #878 at 25f5e06: Implement Polach Adhesion - Pull request #882 at d8a1c4d: Blueprint/train car operations UI window - Pull request #883 at edcc2dd: SwitchPanel disconnect/connect handling - Pull request #885 at c81447b: feat: Add notifications to Menu - Pull request #886 at 7c4922e: Scene viewer extension to TrackViewer - Pull request #887 at 4665bda: docs: Document projects, assemblies, namespaces - Pull request #888 at d7daf62: docs: Document player application model
15 parents b688ca2 + d279e38 + c59c788 + d00beb9 + 67014b7 + f8dbeab + 43bf33e + f92de76 + 25f5e06 + d8a1c4d + edcc2dd + c81447b + 7c4922e + 4665bda + d7daf62 commit bf05f13

File tree

1 file changed

+38
-0
lines changed

1 file changed

+38
-0
lines changed

Docs/Architecture.md

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,28 @@
22

33
This document will describe the overall structure of Open Rails and how we expect different areas of the program to work together.
44

5+
## Player application model
6+
7+
The player model describes the desired application components used when playing Open Rails (vs. editing) and their relationships.
8+
9+
```mermaid
10+
flowchart TB
11+
AI["Orts.AI"]
12+
Formats["Orts.Formats"]
13+
Input["Orts.Input"]
14+
Multiplayer["Orts.Multiplayer"]
15+
Parsers["Orts.Parsers"]
16+
Player["Player"]
17+
Simulation["Orts.Simulation"]
18+
Sound["Orts.Sound"]
19+
UI["Orts.UI"]
20+
Viewer["Orts.Viewer"]
21+
Web["Orts.Web"]
22+
Player --- UI --- Viewer --- Simulation
23+
Player --- Input --- Viewer & Simulation --- Formats --- Parsers
24+
AI & Sound --- Simulation --- Multiplayer & Web
25+
```
26+
527
## Threading model
628

729
The threading in Open Rails has two key threads working together (Render and Updater) to simulate and render the world, with a number of auxiliary threads for other functions.
@@ -29,6 +51,22 @@ The threading in Open Rails has two key threads working together (Render and Upd
2951
- Web Server process
3052
- Handle all web and API requests
3153

54+
## Projects, assemblies, namespaces
55+
56+
Open Rails is made up of several component projects which are organised into subdirectories with the following naming pattern:
57+
58+
- `Orts.Component\Orts.Component.csproj` (project file)
59+
- `Orts.Component.dll` (assembly name)
60+
- `Orts.Component` (default namespace)
61+
62+
The namespaces used within code files should match the directory structure like this:
63+
64+
| *Filename* | *Namespace*
65+
|---|---|
66+
| `Orts.Component\File.cs` | `Orts.Component` |
67+
| `Orts.Component\Section\File.cs` | `Orts.Component.Section` |
68+
| `Orts.Component\Section\Subsection\File.cs` | `Orts.Component.Section.Subsection` |
69+
3270
## Simulator object relationships
3371

3472
This tree is a summary of the important object relationships (aggregation) inside the simulation. Each entry is a class whose instances can be accessed from the parent item.

0 commit comments

Comments
 (0)