OGSR / OGSR-Engine

OGSR Project - Evolution of X-Ray Engine for S.T.A.L.K.E.R.: Shadow of Chernobyl
https://discord.gg/Q6QDxbNcfR
Other
471 stars 88 forks source link

Баг с дистанцией до цели #387

Open DmitriySolontsevoy opened 2 years ago

DmitriySolontsevoy commented 2 years ago

Если вращать камерой, стоя на месте, расстояние до цели на радаре будет меняться. ss_dima_01-04-22_16-20-18_(l01_escape) ss_dima_01-04-22_16-20-13_(l01_escape) В оригинале такого не наблюдал

xrSimpodin commented 2 years ago

Не подтверждаю ss_admin_01-06-22_17-31-00_(l03_agroprom) ss_admin_01-06-22_17-31-03_(l03_agroprom)

DmitriySolontsevoy commented 2 years ago

Специально проверял на чистой игре + последний релиз OGSR

xrSimpodin commented 2 years ago

кстати да, есть. Но не всегда и не везде. ЧуднО.

xrModder commented 2 years ago

Подсказка: проблема в функции CUIMapWnd::SetTargetMap

xrSimpodin commented 2 years ago

Сомнительно

v2v3v4 commented 2 years ago

Там берётся позиция Device.vCameraPosition: xrGame\map_location.cpp

DmitriySolontsevoy commented 2 years ago

В методе UpdateSpotPointer (map_location.cpp) сделал вместо:

Fvector2 tt = map->ConvertLocalToReal(m_position_on_map);
Fvector ttt;
ttt.set     (tt.x, 0.0f, tt.y);
float dist_to_target = Level().CurrentEntity()->Position().distance_to(ttt);
map->SetPointerDistance (dist_to_target);

Вот так:

Fvector2 tt = sp->MapLocation()->Position();
Fvector ttt;
ttt.set(tt.x, 0.0f, tt.y);
float dist_to_target = Actor()->Position().distance_to(ttt);
map->SetPointerDistance (dist_to_target);

Полечило

joye-ramone commented 2 years ago

выглядит логично. я перенесу в репу

joye-ramone commented 2 years ago

Нет, не работает нормально. Вообще я этот баг не могу повторить. Нужно больше информации

DmitriySolontsevoy commented 2 years ago

@joye-ramone да, заметил. Мой вариант работает правильно только тогда, когда я нахожусь на той же локации, на которой метка цели. Если быть на другой локации, дистанция приведёт к рандомной точке на карте (предположительно к координатам, которые занимает цель на той локации, на которой она находится). А по поводу воспроизведения бага. Специально только что повторил на свежем релизе OGSR и чистой игре. Первое же задание на кордоне пойти к Петрухе - при вращении камеры дистанция меняется

joye-ramone commented 2 years ago

Ок проверим.

joye-ramone commented 2 years ago

да, так и есть

  1. сейчас в движке если точка на той же карте где ГГ - баг есть, но если точка на другой локе - указываються координаты до ближайшего перехода и бага нету
  2. с твоим фиксом наоборо расстояние до точки на одной локе начинает работать верно, а для другой локи нет

Можно просто в лоб совместить в целом, ну или найти причину бага. Посмотрю что можно сдлеть