[bug] Дроны и баллистика взрываются у старой точки/высоты цели после разрушения платформы или горы #34
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Наблюдение владельца, подтверждённое кодом и native-тестами на опубликованном
90379f6.Сценарии в игре:
Причина — не только возможный устаревший Ground cache:
at_target = d.pos.distance(d.target) < speed.max(1.5)само по себе вызывает explode(). Проверка наличия блока/поверхности в этой точке не требуется.(d.vel.y < 0.0 && d.pos.y < d.target.y - 1.0). Последний — фактически горизонтальная плоскость прежней высоты цели, без требования приблизиться к цели по X/Z или коснуться земли.Результаты трёх исполняемых проверок исходного Sim::step_drones (glam=0.30.10, cargo test --release, без Horizon/GPU):
Во всех проверках использовался СВЕЖИЙ ответ высоты Y=64, а не прежняя высота платформы. sim.damage=false выключал отправку реальных TNT-команд; сама логика попадания и explode выполнялась. Тесты характеризуют текущий дефект, реальную игровую сцену с разрушением блоков здесь не запускали.
Что исправить:
pos.y <= top_height. Согласовать API запросов/батчинг с форком, не добавляя полный обход всех блоков каждым дроном на каждом тике. Устаревшие/неизвестные данные не считать доказанным контактом.Acceptance/regression:
Код:
🤖 Agent: исправлено в https://gitea.maoniao.team/chexit/airdef/commit/e08fc65 (запушено в main).