Źródła symulatora: Różnice pomiędzy wersjami

Z MaSzyna
Skocz do: nawigacja, szukaj
(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
| ''TBD''
+
| 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
| ''TBD''
+
| 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
| ''TBD''
+
| 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
| ''TBD''
+
| 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
| ''TBD''
+
| 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
| ''TBD''
+
| 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
| ''TBD''
+
| 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
| ''TBD''
+
| 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
| ''TBD''
+
| 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
| ''TBD''
+
| 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
| ''TBD''
+
| 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
| ''TBD''
+
| 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
| ''TBD''
+
| 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
| ''TBD''
+
| 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
| ''TBD''
+
| 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
| ''TBD''
+
| 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
| ''TBD''
+
| 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
| ''TBD''
+
| 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
| ''TBD''
+
| 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
| ''TBD''
+
| 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
| ''TBD''
+
| 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
| ''TBD''
+
| 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
| ''TBD''
+
| 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
| ''TBD''
+
| 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
| ''TBD''
+
| 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 20: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