Autor Wątek:  Ratowanie MaSZyny, implementacja ficzerow od Q do głównej gałęzi, lifting exe  (Przeczytany 301343 razy)

0 użytkowników i 2 Gości przegląda ten wątek.

Offline queuedEU

  • Zasłużony dla Symulatora
  • Wiadomości: 1265
    • Zobacz profil
    • Celebrity Maszyna
  • Otrzymane polubienia: 33
Wstepne parametry platka sniegu, czy o czyms waznym moze zapomnialem?

// ***********************************************************************************************************
// INICJALIZACJA CZASTEK SNIEGU, Funkcja ustawiajaca wlasnosci sniegu odczytywane z pliku scenerii
// parametry wejsciowe:
// - ilosc platkow:                      max 150000
// - obszar padania:                  max 2000m
// - rozmiar platka:                   max 0.2
// - typ obiektu platka:              1-triangle, 2-polygon, 3-line, 4-point
// - losowy kolor platka od:        0.0 - 1.0
// - losowy kolor platka do:        0.0 - 1.0
// - losowa przezroczystosc od:   0.0 - 1.0
// - losowa przezroczystosc do:   0.0 - 1.0
// - kolorowe czy jednolite:         true/false
// - czy teksturowac obiekt:        true/false
// - czy obiekt odbiera swiatlo:    true/false
// - rodzaj blendowania:            1,2
// ***********************************************************************************************************
bool __fastcall TSnow::Init(int snowflakesnum, float sarea, float ssize, int stype, float srcf, float srct, float sraf, float srat, bool scolor, bool stex, int sbf)
{
...
}
« Ostatnia zmiana: 03 Marca 2016, 14:48:24 wysłana przez queuedEU »

Offline firleju

  • Zasłużony dla Symulatora
  • Wiadomości: 1588
  • bawię się (w) exe...
    • Zobacz profil
  • Otrzymane polubienia: 121
1. A fastcall to co tam robi?
2. Typ płatka jest enumem czy czym, bo w ini jest tekstem a w Init jest int.
3. Może jednak zmienne bardziej po ludzku? Bo srat nic mi nie mówi co to jest.
Skrypty do Blendera dostępne tutaj
W miarę aktualne wiki EXE wiki.eu07.es

Offline queuedEU

  • Zasłużony dla Symulatora
  • Wiadomości: 1265
    • Zobacz profil
    • Celebrity Maszyna
  • Otrzymane polubienia: 33
        else if (str == AnsiString("snow"))
        { //
            WriteLog("Scenery snow definition");
            parser.getTokens(2);
            parser >> QGlobal::snow_type >> QGlobal::snow_flakes;
            parser.getTokens(6);
            parser >> QGlobal::snow_area >> QGlobal::snow_size >> QGlobal::snow_srcf >> QGlobal::snow_srct >> QGlobal::snow_sraf >> QGlobal::snow_srat;
            parser.getTokens(4);
            parser >> QGlobal::snow_color >> QGlobal::snow_tex >> QGlobal::snow_light >> QGlobal::snow_blend;


            if (QGlobal::snow_flakes > 150000) QGlobal::snow_flakes = 150000;
            if (QGlobal::snow_area > 2000) QGlobal::snow_area = 2000;
            if (QGlobal::snow_size > 0.2) QGlobal::snow_size = 0.2;
            if (QGlobal::snow_blend > 2) QGlobal::snow_blend = 1;
            if (QGlobal::snow_type > 4) QGlobal::snow_type = 1;
           
            parser.getTokens();
            parser >> token;
            while (token.compare("endsnow") != 0)
            { // a kolejne parametry są pomijane
                parser.getTokens();
                parser >> token;
            }
        }

snow 1 135000 150 0.05 0.1 0.7 0.2 0.4 1 0 1 1 endsnow

No moge zrobic typy numeryczne dla przejrzystosci.
« Ostatnia zmiana: 03 Marca 2016, 22:20:22 wysłana przez queuedEU »

Offline firleju

  • Zasłużony dla Symulatora
  • Wiadomości: 1588
  • bawię się (w) exe...
    • Zobacz profil
  • Otrzymane polubienia: 121
Jak dla mnie we wpisie ini podajesz typ jako string (zgodnie z tym co napisałeś) a w parserze próbujesz odczytać int. Czegoś nie rozumiem?
Skrypty do Blendera dostępne tutaj
W miarę aktualne wiki EXE wiki.eu07.es

Offline queuedEU

  • Zasłużony dla Symulatora
  • Wiadomości: 1265
    • Zobacz profil
    • Celebrity Maszyna
  • Otrzymane polubienia: 33
To nie ma znaczenia w przypadku znaku numerycznego. Da sie w c++ cos takiego wykonac?
function StrToEnumTest(aStr:String):TEnumTest;
begin
  result := TEnumTest(GetEnumValue(TypeInfo(TEnumTest),aStr));
end;

i odwrotnosc...

s := GetEnumName(TypeInfo(TIncType), integer(inctype)) ;

  Dodano: 03 Marca 2016, 17:33:31
Patch z optymalizacja silnika czasteczek sniegu jak i dymu (ale to jescze nie koniec)
EU07-300216-1p2
wpis do scenerii (ma priorytet - nadpisuje wlaczenie sniegu i ilosc podana w config.txt):
snow 1 53000 150 0.05 0.1 0.7 0.2 0.4 1 0 1 1 endsnow

wpisy emiterow dymu juz dzialaja, mozna wstawiac z kilkoma opcjami, do ogarniecia zostaja wpisy emiterow ognia.


« Ostatnia zmiana: 03 Marca 2016, 21:42:10 wysłana przez queuedEU »

Offline tmj

  • Zasłużony dla Symulatora
  • Wiadomości: 3808
    • Zobacz profil
  • Otrzymane polubienia: 2351
Jak dla mnie we wpisie ini podajesz typ jako string (zgodnie z tym co napisałeś) a w parserze próbujesz odczytać int. Czegoś nie rozumiem?
Na moje to typ jest podany jako liczba w zakresie 1-4. Parser wywiedziony jest z std::basic_stringstream i jako taki przeprowadza automatyczna konwersje takiego "tekstu" do podstawowych typow numerycznych (w tym wypadku int) poprzez operator>> Podobnie jak robi to z reszta parametrow.
Edit: a tak przy okazji
Cytuj
            parser.getTokens(7);
            parser >> QGlobal::snow_area >> QGlobal::snow_size >> QGlobal::snow_srcf >> QGlobal::snow_srct >> QGlobal::snow_sraf >> QGlobal::snow_srat;
            parser.getTokens(3);
            parser >> QGlobal::snow_color >> QGlobal::snow_tex >> QGlobal::snow_light >> QGlobal::snow_blend;
Tu jest chyba blad -- parser pobiera 7 parametrow, ale przekazuje dalej 6. Potem odczytuje 3 ale probuje przekazac 4. Problem w tym ze getTokens() kasuje poprzednia zawartosc bufora, wiec snow_color dostanie zawartosc snow_tex itd, a snow_blend nie dostanie nic.
« Ostatnia zmiana: 04 Marca 2016, 09:21:39 wysłana przez Pedrosiasty »

Offline queuedEU

  • Zasłużony dla Symulatora
  • Wiadomości: 1265
    • Zobacz profil
    • Celebrity Maszyna
  • Otrzymane polubienia: 33
Ano, przy edytowaniu zmian wkleilem nowa zmienna a nie poprawilem ile pobiera, no ale w kodzie jest wszystko ok. A ktos Ty? Nowy programista do pomocy? :D
« Ostatnia zmiana: 04 Marca 2016, 09:21:01 wysłana przez Pedrosiasty »

Offline firleju

  • Zasłużony dla Symulatora
  • Wiadomości: 1588
  • bawię się (w) exe...
    • Zobacz profil
  • Otrzymane polubienia: 121
Nie zauważyłem, że opis jest jednocześnie int i string ;) Cały czas bylem pewien, że typ jest podawany we wpisie jako string nie jako int. Z drugiej strony byłoby to troszkę bardziej intuicyjne.
Skrypty do Blendera dostępne tutaj
W miarę aktualne wiki EXE wiki.eu07.es

Offline queuedEU

  • Zasłużony dla Symulatora
  • Wiadomości: 1265
    • Zobacz profil
    • Celebrity Maszyna
  • Otrzymane polubienia: 33
Zrobilbym nawet we wpisie podawanie nazwy typu wyliczeniowego, ale w c++ konwersja typow na string i odwrotnie nie jest userfriendly.
W pascalu to  jest jedna linijka kodu, przyklady dla c++ sa na internetach, ale jest to przerost formy nad trescia.
« Ostatnia zmiana: 04 Marca 2016, 09:20:34 wysłana przez Pedrosiasty »

Offline firleju

  • Zasłużony dla Symulatora
  • Wiadomości: 1588
  • bawię się (w) exe...
    • Zobacz profil
  • Otrzymane polubienia: 121
Najprostsze rozwiązania są najlepsze:
if ... else if ... else if ...
Skrypty do Blendera dostępne tutaj
W miarę aktualne wiki EXE wiki.eu07.es

Offline tmj

  • Zasłużony dla Symulatora
  • Wiadomości: 3808
    • Zobacz profil
  • Otrzymane polubienia: 2351
zrobilbym nawet we wpisie podawanie nazwy typu wyliczeniowego, ale w c++ konwersja typow na string i odwrotnie nie jest userfriendly.
W pascalu to  jest jedna linijka kodu, przyklady dla c++ sa na internetach ale jest to przerost formy nad trescia.
Oj tam oj tam, technika poszla do przodu:

std::unordered_map<std::string, int> values = { { "triangle", 1 }, { "polygon", 2 }, { "line", 3 }, { "point", 4 } };

auto lookup = values.find( "polygon" );
auto value = lookup == values.end() ? 0 : lookup->second; // zamiast 0 mozna podac wartosc default

I juz. Jedna linijka inicjalizacji a potem dwie, zeby znalezc co trzeba (albo 0 jak nie znajdzie) zaraz tam przerost formy :d

(parametr dla find() powinien byc pewnie konwertowany do lowercase na wszelki wypadek, bo znajac zycie to ktos zaraz sobie napisze w .ini "Point" bo tak ladniej i beda cztery litery)

Offline queuedEU

  • Zasłużony dla Symulatora
  • Wiadomości: 1265
    • Zobacz profil
    • Celebrity Maszyna
  • Otrzymane polubienia: 33
To jest zgodne z C99? Bo mnie sie wydaje ze to moze byc C++11...
No juz widze ze unordered_map nie ma w std... No wiec odpada :). Do przeportowania kodu na C11 jeszcze dluga droga, ale mam nadzieje ze do konca roku.
« Ostatnia zmiana: 04 Marca 2016, 09:19:50 wysłana przez Pedrosiasty »

Offline tmj

  • Zasłużony dla Symulatora
  • Wiadomości: 3808
    • Zobacz profil
  • Otrzymane polubienia: 2351
To jest zgodne z C99? Bo mnie sie wydaje, ze to moze byc C++11...
Auto jest c++11 ale to tylko moje lenistwo, zawsze mozna podac typ recznie. Inicjalizacja listy, nie jestem pewien; VS2012 chyba tego nie przelknie, 2013 kompiluje bez problemu (podobnie z reszta jak auto) i jest darmowa wersja Express z MS, wiec to tez raczej nie tragedia..?
Edit: unordered_map w starszej wersji byla pod nazwa hash_map, jesli uzywasz VS2012 to bedzie w stdext::
« Ostatnia zmiana: 04 Marca 2016, 09:19:20 wysłana przez Pedrosiasty »

Offline queuedEU

  • Zasłużony dla Symulatora
  • Wiadomości: 1265
    • Zobacz profil
    • Celebrity Maszyna
  • Otrzymane polubienia: 33
Nie, no jak juz sie rozpocznie translacja na dobre, znaczy pierw bedzie translacja tej starej kompletnie na c++ bo jest fizyka w pascalu, nastepnie gdy juz bede kontynuowal przenoszeni na MSVS to bedzie to 2013 Express

  Dodano: 04 Marca 2016, 00:48:09
MaSZyne sie kompiluje na Borland C++ Builder 5.02 z 2001r :-)
« Ostatnia zmiana: 04 Marca 2016, 00:48:32 wysłana przez queuedEU »

Offline firleju

  • Zasłużony dla Symulatora
  • Wiadomości: 1588
  • bawię się (w) exe...
    • Zobacz profil
  • Otrzymane polubienia: 121
Ale po co 2013 EE jeśli można użyć 2015 Community?
Skrypty do Blendera dostępne tutaj
W miarę aktualne wiki EXE wiki.eu07.es

Offline joxar

  • Wiadomości: 1
    • Zobacz profil
  • Otrzymane polubienia: 0
queuedEU, chciałbym zgłosić, że najnowszy .exe odmawia mi współpracy w trybie pełnoekranowym. Przy uruchamianiu wyrzuca komunikat, że "Requested fullscreen mode is not suported by your video card." Rzeczona karta to Nvidia GeForce GT 440, sterownik w wersji 10.18.13.5891. W oknie 1280x1024 wszystko hula.
« Ostatnia zmiana: 04 Marca 2016, 14:26:02 wysłana przez joxar »

Offline queuedEU

  • Zasłużony dla Symulatora
  • Wiadomości: 1265
    • Zobacz profil
    • Celebrity Maszyna
  • Otrzymane polubienia: 33
Firley, rok temu ShaxBe mowil ze lepiej bedzie pisac na Express 2013 niz 2012, bo takie bylo wtedy najpopularniejsze. Idac tym tropem mam rozumiec ze za rok zmienisz zdanie i bedziesz mnie goraco namawial  na przesiadke na 2017 bo dodali jakas ***? No nie popadajmy w skrajnosc ;). 2013 i jego mozliwosci kompletnie wystarcza do stworzenia wypasionej grafiki na kolejne 20 lat.
Joxar, prawdopodobnie rozdzielczosc ktora jes tw config.txt (1280x1024) nie jest obslugiwana w trybie pelnego ekranu przez twoja karte.
Mozesz sciagnac starterr scenerii QLauncher, ktory zaczal powstawac wlasnie z mysla zastapienia recznego grzebania w config.txt przez bardziej intuicyjny interfejs.
« Ostatnia zmiana: 04 Marca 2016, 14:27:39 wysłana przez queuedEU »

Offline firleju

  • Zasłużony dla Symulatora
  • Wiadomości: 1588
  • bawię się (w) exe...
    • Zobacz profil
  • Otrzymane polubienia: 121
Ale to jest jakiś problem z przesiadką na VS2015? Po prostu jest nowszy kompilator, uwzględnia więcej rzeczy z C++11 i zaczyna wstępnie uwzględniać C++14, reszta została w zasadzie taka sama.
Skrypty do Blendera dostępne tutaj
W miarę aktualne wiki EXE wiki.eu07.es

Offline queuedEU

  • Zasłużony dla Symulatora
  • Wiadomości: 1265
    • Zobacz profil
    • Celebrity Maszyna
  • Otrzymane polubienia: 33
Tylko uwzglednij to, ze przepisywanie na te srodowisko zaczalem w zeszlym roku, projekt jest zapauzowany ze tak powiem. Na razie mowie jak mowie, a pozniej jak przyjdzie co do czego bede myslal czy warto instalowac i zapoznawac sie z nowa wersja i konwertowac projekt ;d
« Ostatnia zmiana: 04 Marca 2016, 17:03:47 wysłana przez Pedrosiasty »

Offline tmj

  • Zasłużony dla Symulatora
  • Wiadomości: 3808
    • Zobacz profil
  • Otrzymane polubienia: 2351
MaSZyne sie kompiluje na Borland C++ Builder 5.02 z 2001r :-)
No to faktycznie, kamieni kupa. Tak sie zastanawiam, jesli te kawalki w Pascalu tak wszystko blokuja, to moze sprobowac automatycznej konwersji na poczatek i potem to ewentualnie doszlifowac? Jakies narzedzia sa: http://www.garret.ru/lang.html i dokumentacja na http://www.garret.ru/ptoc/Readme.htm chociaz nie wiem na ile skuteczne.

Offline queuedEU

  • Zasłużony dla Symulatora
  • Wiadomości: 1265
    • Zobacz profil
    • Celebrity Maszyna
  • Otrzymane polubienia: 33
Reczne przepisanie fizyki na c++ zajmuje jakies 2 tygodnie. Ja osobiscie sie pogubilem ze wskaznikami i cos nie dzialalo jak trzeba z hamulcami. Ale to bylo podczas pierwszej proby translacji wszystkiego bezposrednio na MSVS. Najlepiej po trochu przenosic funkcje wykorzystujac napisany  po stronie kodu C przez @Ra wrapper. Tam juz jest kilka funkcji przetlumaczonych.

Offline firleju

  • Zasłużony dla Symulatora
  • Wiadomości: 1588
  • bawię się (w) exe...
    • Zobacz profil
  • Otrzymane polubienia: 121
Projektu się już nie konwertuje, bo nie zmieniła się struktura plików opisujących. W zasadzie nie ma znaczenia dopóki ktoś nie zacznie używać funkcji języka dostępnych dopiero w 2015.
Skrypty do Blendera dostępne tutaj
W miarę aktualne wiki EXE wiki.eu07.es

Offline MarcinW

  • Zasłużony dla Symulatora
  • Wiadomości: 36
    • Zobacz profil
  • Otrzymane polubienia: 0
To i ja się dołączam do oczekiwaczy na przepisanie fizyki na coś sensownego, zamiast implementowania lanserskich bzdetów. Tam ciągle jest trochę przydatnych rzeczy, a łatwiej w nich dłubać, jeśli będą w czymś sensownym napisane :)

Swoją drogą to gdybyście tę fizykę pisali w czymkolwiek 'managed', np c#', to byście mieli praktycznie od ręki możliwość skryptowego rozszerzania jej bez dziwnych kompilacji. Zamiast miliona ifów, kawałki customowego kodu c# w .fiz :)

Offline firleju

  • Zasłużony dla Symulatora
  • Wiadomości: 1588
  • bawię się (w) exe...
    • Zobacz profil
  • Otrzymane polubienia: 121
Marcin, to było trzeba to od razu pisać w C++, a nie w jakiejś dziwnej hybrydzie ;)
Skrypty do Blendera dostępne tutaj
W miarę aktualne wiki EXE wiki.eu07.es

Offline MarcinW

  • Zasłużony dla Symulatora
  • Wiadomości: 36
    • Zobacz profil
  • Otrzymane polubienia: 0
Nie miałem skąd zdobyć visuala, miałem tylko buildera. A Maciek już miał zaczątki fizyki w Pascalu :)

Offline Michal1983

  • Wiadomości: 67
    • Zobacz profil
  • Otrzymane polubienia: 2
Jakie parametry powinien mieć snow aby można było zasypywać śniegiem scenerię baltyk_zima? Gdzie można na tej scenerii obserwować takie opady?
« Ostatnia zmiana: 07 Marca 2016, 18:03:06 wysłana przez Michal1983 »
Używam Rainsted 17.2.124.12566

Offline Krzysiek626

  • Zasłużony dla Symulatora
  • Wiadomości: 5925
  • EXIT
    • Zobacz profil
    • Krzysiek626
  • Otrzymane polubienia: 443
W zależności od mocy komputera zaznaczasz w QLauncherze odpowiednio opcję śnieg i ustawiasz jego parametry. Śnieg jest zawsze tam, gdzie kamera.

Offline queuedEU

  • Zasłużony dla Symulatora
  • Wiadomości: 1265
    • Zobacz profil
    • Celebrity Maszyna
  • Otrzymane polubienia: 33
Na dniach bedzie apdejt i opis sczegolowy parametrow. Bedzie tez mozliwosc wstawiania emiterow dymu i ognia poprzez wpis do scenerii ale ograniczona do pewnej ilosci.

Kolejny system czasteczek dodany. To mamy juz wodotryski, jescze tylko fajerwerkow i wybuchow brakuje ;). Oczywiscie fontanny rowniez beda posiadac spora konfiguracje. Natomiast na ta chwile trwa obmyslanie systemu generowania oswietlenia przeszkodowego dla kominow i nie tylko.


Jak zapewne wszyscy wiecie, oswietlenie przeszkodowe kominow bywa rozne - jedne maja stale swiecace lampy na wszystkich pomostach,
drugie migajace, inne jescze stale z migajacymi na ostatnim lub na odwrot i jescze wiele innych kombinacji. Rowniez czasy
trzymaina w wygaszeniu/zalaczeniu bywaja rozne oraz synchronizacje pomiedzy poziomami czy np jak w przypadku turbin wiatrowychch,
gdzie na rzedzie wiatrakow sygnalizacja jest zapalana na moment od pierwszego do ostatniego. Takie wlasnie mozliwosci oswietlenia kominow chcialbym oprogramowac. Nie bedzie to trudne a dane beda trzymane w pliku tekstowym w ktorym bedzie konfiguracja osobno dla poszczegolnych poziomow oswietlenia. Naglowek pliku bedzie okreslal maksymalny dystans renderowania pozycje xyz i liczbe poziomow.
Kolejne linie beda juz definicjami okreslajacymi takie sprawy jak kolor i zachowanie lamp na poszczegolnych poziomach. Ktos ma cos do dodania w tej kwestii od siebie? cos jest nie jasne, do wyjasnienia?


  Dodano: 12 Marca 2016, 12:27:32
Czy ktos sie spotkal z innym kolorem oswietlenia przeszkodowego kominow niz czerwony?


« Ostatnia zmiana: 12 Marca 2016, 12:54:14 wysłana przez queuedEU »

Offline mareczek

  • Deweloper
  • Wiadomości: 653
    • Zobacz profil
    • Galeria Fotograficzna Mareczka
  • Otrzymane polubienia: 317
ROZPORZĄDZENIE MINISTRA INFRASTRUKTURY
z dnia 25 czerwca 2003 r.

w sprawie sposobu zgłaszania oraz oznakowania przeszkód lotniczych

 Załącznik nr 2
PODSTAWOWE CHARAKTERYSTYKI ŚWIATEŁ PRZESZKODOWYCH



Wychodzi że jest tylko czerwone.

Offline queuedEU

  • Zasłużony dla Symulatora
  • Wiadomości: 1265
    • Zobacz profil
    • Celebrity Maszyna
  • Otrzymane polubienia: 33
Ok, ja np nie przypominam sobie zebym sie spotkal z innym oswietleniem kominow jak czerwone, moze ze slunska ludki sie wypowiedza? - Tam jest tego wiecej. A jeszcze o osygnalizowanie turbin wiatrowych bym zapytal, bo wiem, ze za granica sa markowane na bialo tez, jak z nimi jest u nas i w ogole od jakiej wysokosci obiekt powinien byc oswietlany?