17
0
mirror of https://github.com/MaSzyna-EU07/maszyna.git synced 2026-11-08 19:52:47 +01:00
Files
maszyna/pr-reviews/PR-261.md

2.8 KiB
Raw Blame History

Review PR #261 — feat(cab): 401Da oil pump lamp and slotted speedometer lever

Autor: @jerrrrycho · base: master · 7 plików, +218/−1 · Closes eu07/maszyna#546 https://github.com/MaSzyna-EU07/maszyna/pull/261

Werdykt: Request changes — wydzielić poprawkę AVX2, reszta OK

Podsumowanie

  • Nowa lampka i-oilpump: (pompa smarowania wstępnego; gaśnie po uruchomieniu silnika).
  • Nowy klucz .mmd animslottedlever: — dźwignia z jarzmem napędzana czopem wiązara (napęd prędkościomierza).
  • Dodatkowe testy opóźnienia startu sprężarki (CompressorStartDelay, już na master z #217).
  • Poprawka builda: GLM_FORCE_AVX2 tylko gdy kompilator faktycznie celuje w AVX2.

Uwagi

  1. Poprawka AVX2 powinna być osobnym PR-em. To ważna poprawka (crash na CPU bez AVX2 przy ENABLE_AVX2=OFF), niezwiązana z 401Da. Osobny PR szybciej przejdzie review, łatwiej ją zcherry-pickować na gałąź wydania 26.11 i na feat/gl46-migration, i będzie widoczna w changelogu. Sama zmiana (#elif defined(__AVX2__)) jest poprawna dla MSVC (/arch:AVX2) i GCC (-mavx2).
  2. animslottedlever: — kompatybilność OK (nowy opcjonalny klucz; bez niego nic się nie zmienia). Proszę o:
    • wpis do dokumentacji formatu .mmd (wiki), skoro żaden pojazd jeszcze go nie używa,
    • informację, czy brak submodelu ma logować błąd Bad model — dla nowej funkcji to OK (prawdziwy błąd danych).
  3. Matematyka bez testu. slottedlever_angle() to czysta funkcja geometrii, a nie jest testowana tylko dlatego, że siedzi w TDynamicObject. Proponuję przenieść ją do małego nagłówka (np. utilities/ albo wolna funkcja w anonimowym namespace + deklaracja w nagłówku testowalnym) i dopisać testy: oś wewnątrz okręgu → pełny obrót, okrąg przez oś → wahanie ±90°.
  4. float3 w SetRotate(float3(1,0,0), angle) — #224 właśnie migruje float3d na glm. Nowy kod lepiej od razu na glm::vec3, żeby nie powiększać konfliktu.
  5. update_slottedlevers() jest wołane w ABuLittleUpdate() poza sprawdzeniem odległości (ObjSqrDist < 50*50) — dla pustego wektora to nic nie kosztuje, ale dla pojazdów z dźwigniami liczy się zawsze. Rozważyć wołanie razem z animacjami kół (te same warunki LOD).
  6. Indeks wheelid: warunek lever.axle < iAnimType[ANIM_WHEELS] && lever.axle < pAnimations.size() zakłada, że animacje kół są na początku pAnimations — proszę o komentarz albo assert.
  7. Lampka i-oilpump: pokazuje OilPump.is_active. Dla pojazdów, gdzie pompa oleju pracuje cały czas (nie tylko smarowanie wstępne), lampka będzie świecić stale — to raczej poprawne, ale warto opisać semantykę w dokumentacji .mmd.
  8. Opis: „SM42 stood in for the diesel” — test z prawdziwym modelem 401Da jest w „Known issues”; OK, ale niech ktoś od modelu 401Da potwierdzi przed wydaniem.