СПРАВОЧНИКПОДСИСТЕМЫ И БИБЛИОТЕКИ
UCFDebrisSubsystem
Клиентский пул косметических кусков обломков, разлетающихся при разрушении элементов.
Никогда не создаётся на выделенном сервере: обломки служат только для представления и не реплицируются. Куски сталкиваются с миром, целыми объектами и друг с другом, но никогда с пешками (настройка Debris Collision Profile; без неё кусок только физический, поэтому ни один trace, sweep или overlap его не находит); определение с выключенным bDebrisCollidesWithDebris заставляет свои куски игнорировать собственный тип объекта профиля. Автомобили тоже проезжают сквозь них, если только определение не задаёт bDebrisPushedByVehicles: тогда тело автомобиля толкает кусок в одну сторону, а тело без CCD сохраняет свою скорость, так как кусок не использует CCD (Chaos разрешает CCD вне one-way). Толчок длится DebrisVehicleContactSeconds определения от момента разрушения, после чего автомобили снова проезжают сквозь кусок; кусок, который всё ещё лежит на автомобиле, продолжает получать толчки, пока не сойдёт с него, поэтому он не висит там, где его оставил автомобиль, и не проваливается сквозь него. Толкаемый кусок, который лежит на автомобиле в момент начала своего погружения, уменьшается и исчезает, уезжая вместе с автомобилем, вместо того чтобы провалиться сквозь него. Толкаемый кусок, центр которого остаётся внутри автомобиля (помятый корпус, разрезанный на блоки коллизии, может зажать тонкий кусок, вдавленный в него), перестаёт ощущать автомобили и выпадает наружу. Определение того, что кусок лежит на автомобиле и что он находится внутри него, — это запрос к типу объекта Vehicle вокруг куска, поэтому учитываются только тела автомобилей с query-коллизией. Толкаемый кусок никогда не считается ударом по автомобилю: потребители ударов, например отклик на удар, его пропускают, см. GetPoolActor.
Функции
Подсистема обломков мира WorldContext; nullptr, если её нет.
Симулирует ли мир в NetMode обломки: все режимы, кроме выделенного сервера.
Бросает запечённые части Definition из UnitWorldTransform: части рядом с Impact.Location перенимают больше скорости удара, дальние в основном опрокидываются. Seed делает бросок повторяемым. Owner и OwnerKey помечают части для ReleaseOwnedPieces; передавайте их для любого определения, чьи обломки живут до респауна. Возвращает количество созданных частей (0 — если дальше дистанции обломков от локального вида, на выделенном сервере или для определения без запекания). Каждая часть также движется со скоростью CarrierVelocity — скоростью того, что несло элемент.
Скорости, с которыми бросается фрагмент в PieceLocation, от Impact: доля скорости удара и бросок наружу, оба тем слабее, чем дальше фрагмент от Impact.Location, плюс случайный разброс и CarrierVelocity. Вращение — случайная доля самого быстрого в определении, слабеющая так же. Берёт числа из Random в фиксированном порядке, поэтому один поток снова бросает те же фрагменты.
Сразу возвращает части Owner в пул, без погружения: только созданные с OwnerKey или все для INDEX_NONE.
Каждая живая часть возвращается в пул: принадлежащие, ничьи и постоянные — все. Только на этом инстансе.
Сколько частей сейчас живо, включая постоянные.
Живые части определений, чьи обломки живут до респауна; GetLivePieceCount включает их.
Живые части, которые автомобили ещё толкают и толчок которых заканчивается через заданное время.
Живые части, которые автомобили сейчас толкают: толчок либо заканчивается через заданное время, либо длится, пока они лежат.
Заполняет OutPieces компонентом каждой живой части.
Временный эктор, которому принадлежит каждая часть из пула; nullptr до первой части. Потребители ударов, которые не должны реагировать на обломки, игнорируют его.
Лежит ли Location в пределах UCFBreakableSettings::DebrisMaxSpawnDistanceCm от наблюдателя: точки, заданной SetViewerOverride, иначе позиции вида, о которой сообщает host-объект. True, когда нет наблюдателя, от которого мерить, поэтому ничего не отбрасывается.
Отсечение по дистанции измеряется от этой точки, а не от локальной камеры, пока она задана.
Игровая сторона пула: камера, от которой измеряется отсечение по дистанции, и отклик на удар части. Не принадлежит пулу.
Сила удара по части в диапазоне [0, 1] по её импульсу и массе или -1, если удар слишком слабый для проигрывания.