Symulator EU07 (i nie tylko) > Na warsztacie

 Ratowanie MaSZyny, implementacja ficzerow od Q do głównej gałęzi, lifting exe

<< < (75/205) > >>

queuedEU:
Opis funkcjonowania wsiadania i wysiadania pasazerow.

Po pierwsze w celu rozpoznania kategorii modelu bez potrzeby porownywania kilku parametrow wpisu, wprowadzilem nowy typ include'a, ktory nieco rozni sie formatem. Roznica jest tylko taka, ze jako pierwszy parametr (zaraz po slowie kluczowym incfile) jest podawana kategoria modelu. W przypadku modelu pasazera potrzebne beda jeszcze dwie dodatkowe informacje - numer pociagu na ktory czeka i nazwa stacji do ktorej sie udaje. Te dwa parametry juz sa dane zaraz po parametrach okreslajacych pozycje i rotacje.W parserze rozpoznawane sa po przedrostkach rel-, dst-. Podczas parsowania nastepuje przydzielenie GroundNode'owi liczbowego identyfikatora dla kategorii oraz zapisanie do zmiennych informacji o numerze pociagu i stacji przeznaczenia (w funkcji AddGroundNode()). Ponadto w funkcji TGround::Init() zaraz po wykonaniu funkcji AddGroundNode() przydzielany jest wlasnie identyfikator liczbowy oraz losowo generowane czas opoznienia rozpoczecia podchodzenia do skladu i predkosc poruszania sie pasazera. Druga wazna sprawa jest przechowywanie i pobieranie informacji o nazwie stacji na ktorej znajduje sie sklad. W tym celu dodalem nowa wlasnosc toru (stationnname), w ktorej przechowywana jest nazwa stacji. To by bylo na tyle odnosnie fazy wczytywania danych. Teraz przejdziemy do opisu wykorzystywania ich w czasie symulacji.
    Kazdy pojazd dostaje informacje pobierana z toru na jakiej stacji aktualnie sie znajduje (odcinki torow przechowujace nazwe stacji powinny byc sytuowane przed semaforami wjazdowymi, zas przed nim powinien byc odcinek zawierajacy w tej wlasnosci info o wyjezdzie na szlak zamiast nazwe stacji). Przypisywanie pojazdom aktualnej stacji odbywa sie w funkcji TDynamicObject::Update(). Gdy juz pojazd dostal informacje o stacji, kolejnym krokiem jest sprawdzenie czy jest on wagonem pasazerskim - odbywa sie to sprawdzajac obslugiwany typ ladunku (passengers) i czy czasem nie jest on lokomotywa w oparciu o parametr power. Teraz juz mamy tylko wagony pasazerskie coby przeliczac ich pozycje lokalne drzwi zdefiniowane w pliku .mmd na pozycje globalne w swiecie. Przeliczone pozycje trafiaja do tablicy globalnej PEP[512], a wraz znimi nazwa pojazdu, numerpociagu do jakiego nalezy oraz miejsce przeznaczenia. Nalezy nadmienic ze pozycje drzwi pojazdow liczone i wrzucane do tablicy sa tylko ponizej pewnej predkosci przy zatrzymywaniu sie skladu.

    Obsluga zjawiska wsiadania od strony modelu pasazera realizowana jest w funkcji Global::findpassengerdynamic(pCenter, asName, asTrainNumber, asDest, this) a wywolywana jest w TGroundNode::RenderVBO() lub TGroundNode::RenderDL() w zaleznosci od typu renderingu. W funkcji tej, w petli omiatajacej tablice PEP[512] ktora przechowuje pozycje wszystkich drzwi wagonow na scenerii, pobierane sa z niej numer pociagu, nazwa pojazdu oraz pozycja jednej sztuki drzwi coby obliczyc pomiedzy nimi a modelem pasazera odleglosc.
Mamy juz odleglosc wiec sprawdzamy czy nie jest ona wieksza niz maksymalna odleglosc reakcji na sklad (60m) i jesli pasazer nie jest w pociagu i jego numer pociagu zgadza sie z numerem ktory maja przypisane drzwi (Passenger Entry Point), to nastepuje przeliczenie dystansu pomiedzy wszystkimi PEP a modelem pasazera i posortowanie ich tak aby najblizsze byly na pierwszym miejscu. Kolejnym elementem jest wyszukanie wskaznika na pojazd do ktorego nalezaly najblizsze drzwi. Sprawdzan tutaj bedzie predkosc pojazdu ktory hamuje i jezeli bedzie mniejsza niz 3km/h to rozpoczyna sie naliczanie wczesniej (podczas wczytywania) wygenerowanego czasu zwloki pasazera (aby nie wszyscy w jednym momencie ruszyli do drzwi), po ktorym uda sie w kierunku najblizszych mu drzwi. Wejscie do wagonu bedzie moglo nastapic tylko gdy pojazd bedzie mial predkosc mniejsza niz 0.2km/h i dystans do entry pointu bedzie mniejszy od 30cm. Wtedy nastepuje doliczenie masy do wagonu i ustawienia flagi bINTRAIN pasazerowi. Ostatnia czynnoscia jest zaktualizowanie
listy pojazdow w skladzie.   


incfile;POSERS;posers/cman0001-st.inc;none03;807.439;1.4022;2095.38;-22.6724;rel-LCE87224;dst-wyjsciowo_gorne;end //Passive
incfile;POSERS;posers/cman0009-st.inc;none04;3.94594;1.29938;741.431;0.0;rel-LCE87224;dst-wyjsciowo_dolne;end //Passive
incfile;POSERS;posers/cman0001-st.inc;none05;5.27227;1.29938;739.02;-33.4864;rel-LCE89224;dst-cel_maly;end //Passive
incfile;POSERS;posers/cman0004-st.inc;none06;5.66695;1.29938;746.712;-33.4864;rel-LCE89224;dst-cel_wielki;end //Passive

youBy:
Człony silnikowe zespołów trakcyjnych i wagony motorowe mają Power większy od 0.

trzecia_bateria:
Może pierdółka, ale... A więc OIDP przy "zwykłych" exe PPM wciśnięty będąc w kabinie przenosił kamerę do punktu gdzieś w okolicach siedzenia maszynisty, zerując przy okazji jej obrót. Teraz użycie rolki myszy ustawia tylko widok na wprost, na siedzeniu maszynisty trzeba już "usadzić się" ręcznie kursorami i PGUP/ PGDOWN. Może to być trochę irytujące, szczególnie w scenariuszach z dużą ilością manewrów (częsta zmiana kabin) :)

Tak jeszcze przy okazji- mamy zwracać uwagę na wysypujące się scenariusze, czy póki co nowe exeki mamy testować tylko na TD2?

Krzysiek626:
Mój userpid 1951237055. Nie wyświetliło karty graficznej, mam GF 9600. Robi poprawne zdjęcia pod F11, Pasażerowie się wymieniają. Z błędów widocznych na pierwszy ogląd to, rozjechanie wskazań haslera i wyświetlacza w debug mode. Przy czym różnica jest 3 krotna. Wyświetlanie na ekranie pokazuje 45 km/h a hasler już 125. Co ciekawe, na pozycji 43 przy i 6 boczniku mamy 90A poboru z sieci przy prędkości 45km/h. Coś tu nie trybi. No i wywaliło mi komunikaty po F10 i Y (program wykonał nieprawidłową operację.

trzecia_bateria:
Błędu z rozjechaniem wskazań w debugmode nie potwierdzę, u mnie jest i na haslerze i na wyświetlaczu tyle samo +/- kilka kilometrów :) W załączniku screen z TD2 w debugmode. W razie czego to mam Radeona HD 5850 z jakimiś mało świeżymi sterownikami i działam na świeżo wypakowanej PC 15.04 plus patch .26.

Nawigacja

[0] Indeks wiadomości

[#] Następna strona

[*] Poprzednia strona

Idź do wersji pełnej
Powered by Advanced Topic Prefix Pro
Powered by SMFPacks Likes Pro Mod