fix(vehicle): машина едет видимо — исключить кузов из LOD-freeze
Some checks failed
Some checks failed
Регрессия: LOD-оптимизация (_updateModelLOD) замораживала worldMatrix далёких моделей. Кузов машины (modelManager-инстанс) под неё попадал, а после парентинга к chassisNode его root.position стала локальной (≈0,0,0) → LOD мерял дистанцию неверно и замораживал машину → меш переставал следовать за коллайдером (едешь на невидимой машине, видимая стоит). Фикс: помечаем кузов _spawnedAtRuntime=true (+_isVehicleBody) при спавне — LOD его не трогает (как зомби/динамику). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
89bdeff657
commit
22026f2f1d
@ -76,6 +76,14 @@ export class VehicleManager {
|
|||||||
veh.bodyInstanceId = bodyId;
|
veh.bodyInstanceId = bodyId;
|
||||||
const inst = this._models.instances.get(bodyId);
|
const inst = this._models.instances.get(bodyId);
|
||||||
if (inst && inst.rootMesh) {
|
if (inst && inst.rootMesh) {
|
||||||
|
// Кузов машины — динамический объект: им двигает VehicleManager
|
||||||
|
// (через парентинг к chassisNode). Исключаем из LOD-freeze, иначе
|
||||||
|
// freezeWorldMatrix замораживает меш и он перестаёт следовать за
|
||||||
|
// chassisNode → «едешь на невидимой машине, видимая стоит».
|
||||||
|
// (LOD меряет дистанцию по локальной root.position запарентенного
|
||||||
|
// кузова ≈0,0,0 — некорректно, и замораживает машину.)
|
||||||
|
inst._spawnedAtRuntime = true;
|
||||||
|
inst._isVehicleBody = true;
|
||||||
// Габариты AABB + вертикальный offset кузова СЧИТАЕМ ДО парентинга
|
// Габариты AABB + вертикальный offset кузова СЧИТАЕМ ДО парентинга
|
||||||
// (в мировых координатах, кузов ещё в (x,y,z)).
|
// (в мировых координатах, кузов ещё в (x,y,z)).
|
||||||
try {
|
try {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user