Źródła symulatora: Różnice pomiędzy wersjami
(start - lista klas, link do repozytorium, bedzie uzupelniane) |
(→Pliki *.cpp, *.h) |
||
Linia 31: | Linia 31: | ||
| style="background-color:#8f8"|tak | | style="background-color:#8f8"|tak | ||
| style="background-color:#8f8"|tak | | style="background-color:#8f8"|tak | ||
− | | '' | + | | Steruje widocznością submodeli takich jak haki czy węże pneumatyczne, których nazwy kończą się na '''_off''', '''_on''' lub '''_xon'''. |
|- | |- | ||
| '''AnimModel''' | | '''AnimModel''' | ||
| style="background-color:#8f8"|tak | | style="background-color:#8f8"|tak | ||
| style="background-color:#8f8"|tak | | style="background-color:#8f8"|tak | ||
− | | | + | | Zarządza animacją modeli wstawionych na scenerie i wywoływanych eventami, takich jak obrotnice czy latarnie zwrotnic. |
|- | |- | ||
| '''Button''' | | '''Button''' | ||
| style="background-color:#8f8"|tak | | style="background-color:#8f8"|tak | ||
| style="background-color:#8f8"|tak | | style="background-color:#8f8"|tak | ||
− | | '' | + | | Guzik dwupozycyjny. Obsługuje dźwięki włączania i wyłączania oraz opcjonalne submodele kończące się na '''_off''' i '''_on'''. |
|- | |- | ||
| '''Camera''' | | '''Camera''' | ||
| style="background-color:#8f8"|tak | | style="background-color:#8f8"|tak | ||
| style="background-color:#8f8"|tak | | style="background-color:#8f8"|tak | ||
− | | | + | | Steruje pracą kamery w kabinie jak i poza nią. |
|- | |- | ||
| '''Classes''' | | '''Classes''' | ||
Linia 61: | Linia 61: | ||
| style="background-color:#f88"|nie | | style="background-color:#f88"|nie | ||
| style="background-color:#8f8"|tak | | style="background-color:#8f8"|tak | ||
− | | | + | | Nagłówek klasy znajdującej się w pliku ? |
|- | |- | ||
| '''Driver''' | | '''Driver''' | ||
| style="background-color:#8f8"|tak | | style="background-color:#8f8"|tak | ||
| style="background-color:#8f8"|tak | | style="background-color:#8f8"|tak | ||
− | | | + | | Zarządza komendami dla pojazdów oraz sterowaniem przez AI. |
|- | |- | ||
| '''DynObj''' | | '''DynObj''' | ||
| style="background-color:#8f8"|tak | | style="background-color:#8f8"|tak | ||
| style="background-color:#8f8"|tak | | style="background-color:#8f8"|tak | ||
− | | | + | | Reprezentuje pojedynczy pojazd. |
|- | |- | ||
| '''EU07''' | | '''EU07''' | ||
Linia 86: | Linia 86: | ||
| style="background-color:#8f8"|tak | | style="background-color:#8f8"|tak | ||
| style="background-color:#8f8"|tak | | style="background-color:#8f8"|tak | ||
− | | | + | | Zawiera logikę wszystkich dostępnych typów eventów w symulatorze. |
|- | |- | ||
| '''Float3d''' | | '''Float3d''' | ||
| style="background-color:#8f8"|tak | | style="background-color:#8f8"|tak | ||
| style="background-color:#8f8"|tak | | style="background-color:#8f8"|tak | ||
− | | | + | | Zawiera definicje klas wektorów 3D, kwaternionów i macierzy transformacji. |
|- | |- | ||
| '''Gauge''' | | '''Gauge''' | ||
| style="background-color:#8f8"|tak | | style="background-color:#8f8"|tak | ||
| style="background-color:#8f8"|tak | | style="background-color:#8f8"|tak | ||
− | | | + | | Kod obsługi gałek, np. wskazówek zegarów, nastawników, kranów hamulca czy innych przełączników wielopozycyjnych. |
|- | |- | ||
| '''Globals''' | | '''Globals''' | ||
Linia 111: | Linia 111: | ||
| style="background-color:#8f8"|tak | | style="background-color:#8f8"|tak | ||
| style="background-color:#8f8"|tak | | style="background-color:#8f8"|tak | ||
− | | '' | + | | Menedżer modeli. Przechowuje wszystkie załadowane modele (''.e3d'', ''.t3d'') i zarządza ich wczytywaniem. |
|- | |- | ||
| '''MemCell''' | | '''MemCell''' | ||
| style="background-color:#8f8"|tak | | style="background-color:#8f8"|tak | ||
| style="background-color:#8f8"|tak | | style="background-color:#8f8"|tak | ||
− | | | + | | Obsługuje komórki pamięci (memcelle). |
|- | |- | ||
| '''Model3d''' | | '''Model3d''' | ||
| style="background-color:#8f8"|tak | | style="background-color:#8f8"|tak | ||
| style="background-color:#8f8"|tak | | style="background-color:#8f8"|tak | ||
− | | '' | + | | Reprezentuje pojedynczą instancję modelu. Czyta pliki ''.t3d'' i ''.e3d''. |
|- | |- | ||
| '''Names''' | | '''Names''' | ||
| style="background-color:#f88"|nie | | style="background-color:#f88"|nie | ||
| style="background-color:#8f8"|tak | | style="background-color:#8f8"|tak | ||
− | | | + | | Kod do tworzenia tablic asocjacyjnych, kluczowanych po nazwach. |
|- | |- | ||
| '''PyInt''' | | '''PyInt''' | ||
| style="background-color:#8f8"|tak | | style="background-color:#8f8"|tak | ||
| style="background-color:#8f8"|tak | | style="background-color:#8f8"|tak | ||
− | | | + | | Zarządza komunikacją z wątkiem służącym do generowania tekstur za pomocą skryptów napisanych w Pythonie. |
|- | |- | ||
| '''PyIntStub''' | | '''PyIntStub''' | ||
| style="background-color:#8f8"|tak | | style="background-color:#8f8"|tak | ||
| style="background-color:#f88"|nie | | style="background-color:#f88"|nie | ||
− | | '' | + | | Klasa używana zamiast klasy z pliku '''PyInt.cpp''', jeżeli skrypty Pythona zostały wyłączone. |
|- | |- | ||
| '''ResourceManager''' | | '''ResourceManager''' | ||
Linia 146: | Linia 146: | ||
| style="background-color:#8f8"|tak | | style="background-color:#8f8"|tak | ||
| style="background-color:#8f8"|tak | | style="background-color:#8f8"|tak | ||
− | | | + | | Implementuje pojedynczy kawałek toru. |
|- | |- | ||
| '''Spring''' | | '''Spring''' | ||
| style="background-color:#8f8"|tak | | style="background-color:#8f8"|tak | ||
| style="background-color:#8f8"|tak | | style="background-color:#8f8"|tak | ||
− | | | + | | Symuluje sprężynę. Używane do bujania kabiny. |
|- | |- | ||
| '''Texture''' | | '''Texture''' | ||
| style="background-color:#8f8"|tak | | style="background-color:#8f8"|tak | ||
| style="background-color:#8f8"|tak | | style="background-color:#8f8"|tak | ||
− | | | + | | Zarządza wczytywaniem, dekompresją i przechowywaniem plików tekstur. |
|- | |- | ||
| '''Timer''' | | '''Timer''' | ||
| style="background-color:#8f8"|tak | | style="background-color:#8f8"|tak | ||
| style="background-color:#8f8"|tak | | style="background-color:#8f8"|tak | ||
− | | | + | | Liczy czas między klatkami w symulacji. |
|- | |- | ||
| '''Track''' | | '''Track''' | ||
| style="background-color:#8f8"|tak | | style="background-color:#8f8"|tak | ||
| style="background-color:#8f8"|tak | | style="background-color:#8f8"|tak | ||
− | | | + | | Implementuje pojedynczy kawałek toru. Generuje geometrię szyn. |
|- | |- | ||
| '''Traction''' | | '''Traction''' | ||
| style="background-color:#8f8"|tak | | style="background-color:#8f8"|tak | ||
| style="background-color:#8f8"|tak | | style="background-color:#8f8"|tak | ||
− | | '' | + | | Implementuje pojedynczy kawałek sieci trakcyjnej. Generuje linie sieci trakcyjnej renderowane jako ''node::lines''. |
|- | |- | ||
| '''TractionPower''' | | '''TractionPower''' | ||
| style="background-color:#8f8"|tak | | style="background-color:#8f8"|tak | ||
| style="background-color:#8f8"|tak | | style="background-color:#8f8"|tak | ||
− | | | + | | Zawiera kod podstacji sieci trakcyjnej. |
|- | |- | ||
| '''Train''' | | '''Train''' | ||
| style="background-color:#8f8"|tak | | style="background-color:#8f8"|tak | ||
| style="background-color:#8f8"|tak | | style="background-color:#8f8"|tak | ||
− | | | + | | Reprezentuje pociąg. Odbiera komendy wysyłane z poszczególnych pojazdów trakcyjnych. |
|- | |- | ||
| '''TrkFoll''' | | '''TrkFoll''' | ||
Linia 456: | Linia 456: | ||
| style="background-color:#8f8"|tak | | style="background-color:#8f8"|tak | ||
| style="background-color:#8f8"|tak | | style="background-color:#8f8"|tak | ||
− | | '' | + | | Główny kod parsera. Dzieli treści plików na kawałki, pomija komentarze, wczytuje pliki z dyrektyw ''include'' oraz podmienia parametry. Więcej informacji: [[Plik tekstowy]]. |
|- | |- | ||
| '''particles''' | | '''particles''' |
Wersja z 19:03, 10 sie 2023
Kod źródłowy Symulatora MaSzyna udostępniony jest na licencji Mozilla Public License 2.0.
Sam symulator jest napisany w języku C++.
Repozytorium
Najbardziej aktualna wersja kodu MaSzyny znajduje się na serwisie GitHub i jest dostępna tutaj.
Tylko branch sim użytkownika @Milek7 jest brany pod uwagę i to ta wersja EXE trafia do kolejnych wydań MaSzyny.
W celu wprowadzenia własnych zmian należy zrobić pull request do tego właśnie brancha.
Struktura plików
Ta sekcja jest w fazie tworzenia.
Kod MaSzyny jest rozwijany od ponad 20 lat i nie był nigdy porządkowany. Z tego powodu rozkład plików źródłowych może nie być intuicyjny. Pełna lista plików źródłowych wraz z zastosowaniem została podana poniżej.
Pliki *.cpp, *.h
Na liście brakuje plików z podfolderów: Console, McZapkie, gl, launcher, network, openvrconfig, vr, widgets.
Nazwa pliku | .cpp | .h | Funkcja |
---|---|---|---|
AirCoupler | tak | tak | Steruje widocznością submodeli takich jak haki czy węże pneumatyczne, których nazwy kończą się na _off, _on lub _xon. |
AnimModel | tak | tak | Zarządza animacją modeli wstawionych na scenerie i wywoływanych eventami, takich jak obrotnice czy latarnie zwrotnic. |
Button | tak | tak | Guzik dwupozycyjny. Obsługuje dźwięki włączania i wyłączania oraz opcjonalne submodele kończące się na _off i _on. |
Camera | tak | tak | Steruje pracą kamery w kabinie jak i poza nią. |
Classes | nie | tak | TBD |
Console | tak | tak | Główny kod do sterowania pulpitami za pomocą PoKeys/Arduino. |
Curve | nie | tak | Nagłówek klasy znajdującej się w pliku ? |
Driver | tak | tak | Zarządza komendami dla pojazdów oraz sterowaniem przez AI. |
DynObj | tak | tak | Reprezentuje pojedynczy pojazd. |
EU07 | tak | nie | Punkt wejścia aplikacji. Wykrywa tryb eksportu E3D i zawiera handler błędów alokacji pamięci. |
EvLaunch | tak | tak | Odpowiada za sprawdzanie warunków do wywołania event launchera (wciśnięcie klawisza, określona godzina w symulacji lub wywołanie sygnałem ZEW1/ZEW3). |
Event | tak | tak | Zawiera logikę wszystkich dostępnych typów eventów w symulatorze. |
Float3d | tak | tak | Zawiera definicje klas wektorów 3D, kwaternionów i macierzy transformacji. |
Gauge | tak | tak | Kod obsługi gałek, np. wskazówek zegarów, nastawników, kranów hamulca czy innych przełączników wielopozycyjnych. |
Globals | tak | tak | Odpowiada za wczytywanie i zapisywanie pliku eu07.ini, przechowuje ustawienia tam zawarte oraz takie informacje jak: czy jest włączony debugmode, czy jest wciśnięty któryś z klawiszów: Alt, Ctrl albo Shift czy też seed symulacji. |
Logs | tak | tak | Umożliwia wpisywanie treści do plików log.txt i errors.txt. |
MdlMngr | tak | tak | Menedżer modeli. Przechowuje wszystkie załadowane modele (.e3d, .t3d) i zarządza ich wczytywaniem. |
MemCell | tak | tak | Obsługuje komórki pamięci (memcelle). |
Model3d | tak | tak | Reprezentuje pojedynczą instancję modelu. Czyta pliki .t3d i .e3d. |
Names | nie | tak | Kod do tworzenia tablic asocjacyjnych, kluczowanych po nazwach. |
PyInt | tak | tak | Zarządza komunikacją z wątkiem służącym do generowania tekstur za pomocą skryptów napisanych w Pythonie. |
PyIntStub | tak | nie | Klasa używana zamiast klasy z pliku PyInt.cpp, jeżeli skrypty Pythona zostały wyłączone. |
ResourceManager | tak | tak | TBD |
Segment | tak | tak | Implementuje pojedynczy kawałek toru. |
Spring | tak | tak | Symuluje sprężynę. Używane do bujania kabiny. |
Texture | tak | tak | Zarządza wczytywaniem, dekompresją i przechowywaniem plików tekstur. |
Timer | tak | tak | Liczy czas między klatkami w symulacji. |
Track | tak | tak | Implementuje pojedynczy kawałek toru. Generuje geometrię szyn. |
Traction | tak | tak | Implementuje pojedynczy kawałek sieci trakcyjnej. Generuje linie sieci trakcyjnej renderowane jako node::lines. |
TractionPower | tak | tak | Zawiera kod podstacji sieci trakcyjnej. |
Train | tak | tak | Reprezentuje pociąg. Odbiera komendy wysyłane z poszczególnych pojazdów trakcyjnych. |
TrkFoll | tak | tak | Definiuje pojedynczą oś w pojeździe. |
application | tak | tak | Przetwarza sygnały wejściowe z klawiatury, myszy i gamepada, zawiera główną pętle programu oraz przetwarza argumenty linii poleceń inne niż -e3d. |
applicationmode | nie | tak | Nadklasa (interfejs), który jest rozszerzany przez klasy będące trybami pracy symulatora. |
audio | tak | tak | TBD |
audiorenderer | tak | tak | TBD |
audiorenderer_extra | nie | tak | TBD |
color | nie | tak | TBD |
command | tak | tak | TBD |
comparison | nie | tak | TBD |
driverhints | tak | tak | TBD |
driverhints_def | nie | tak | TBD |
driverkeyboardinput | tak | tak | TBD |
drivermode | tak | tak | TBD |
drivermouseinput | tak | tak | TBD |
driveruilayer | tak | tak | TBD |
driveruipanels | tak | tak | TBD |
dumb3d | tak | tak | TBD |
editorkeyboardinput | tak | tak | TBD |
editormode | tak | tak | TBD |
editormouseinput | tak | tak | TBD |
editoruilayer | tak | tak | TBD |
editoruipanels | tak | tak | TBD |
export_e3d_standalone | tak | nie | TBD |
frustum | tak | tak | TBD |
gamepadinput | tak | tak | TBD |
geometrybank | tak | tak | TBD |
headtrack | tak | tak | TBD |
keyboardinput | tak | tak | TBD |
ladderlogic | tak | tak | TBD |
light | nie | tak | TBD |
lightarray | tak | tak | TBD |
lua | tak | tak | TBD |
lua_ffi | nie | tak | TBD |
material | tak | tak | TBD |
messaging | tak | tak | TBD |
moon | tak | tak | TBD |
motiontelemetry | tak | tak | TBD |
mtable | tak | tak | TBD |
nullrenderer | tak | tak | TBD |
opengl33geometrybank | tak | tak | TBD |
opengl33light | tak | tak | TBD |
opengl33particles | tak | tak | TBD |
opengl33precipitation | tak | tak | TBD |
opengl33renderer | tak | tak | TBD |
opengl33skydome | tak | tak | TBD |
openglcamera | tak | tak | TBD |
openglcolor | tak | tak | TBD |
openglgeometrybank | tak | tak | TBD |
opengllight | tak | tak | TBD |
openglmatrixstack | tak | tak | TBD |
openglparticles | tak | tak | TBD |
openglprecipitation | tak | tak | TBD |
openglrenderer | tak | tak | TBD |
openglskydome | tak | tak | TBD |
parser | tak | tak | Główny kod parsera. Dzieli treści plików na kawałki, pomija komentarze, wczytuje pliki z dyrektyw include oraz podmienia parametry. Więcej informacji: Plik tekstowy. |
particles | tak | tak | TBD |
precipitation | tak | tak | TBD |
pythonscreenviewer | tak | tak | TBD |
renderer | tak | tak | TBD |
resource | nie | tak | TBD |
scenarioloadermode | tak | tak | TBD |
scenarioloaderuilayer | nie | tak | TBD |
scene | tak | tak | TBD |
sceneeditor | tak | tak | TBD |
scenenode | tak | tak | TBD |
scenenodegroup | tak | tak | TBD |
screenshot | tak | tak | TBD |
simulation | tak | tak | TBD |
simulationenvironment | tak | tak | TBD |
simulationsounds | tak | tak | TBD |
simulationstateserializer | tak | tak | TBD |
simulationtime | tak | tak | TBD |
sky | tak | tak | TBD |
skydome | tak | tak | TBD |
sn_utils | tak | tak | TBD |
sound | tak | tak | TBD |
stars | tak | tak | TBD |
station | tak | tak | TBD |
stdafx | tak | tak | TBD |
sun | tak | tak | TBD |
targetver | nie | tak | TBD |
translation | tak | tak | TBD |
uart | tak | tak | TBD |
uilayer | tak | tak | TBD |
uitranscripts | tak | tak | TBD |
utilities | tak | tak | TBD |
vertex | tak | tak | TBD |
windows | tak | nie | TBD |
winheaders | nie | tak | TBD |
zmq_input | tak | tak | TBD |