Перейти к содержимому
CRUSHFORMV1.1.0
ПОЛУЧИТЬ НА FAB

СПРАВОЧНИККОМПОНЕНТЫ

UCFTireComponent

МОДУЛЬCrushformTireЗАГОЛОВОКCFTireComponent.hРОДИТЕЛЬUActorComponent

По одному на автомобиль. Отслеживает колёса автомобиля, владеет деформером каждого колеса, которому его выделил бюджет, и тикает их после того, как host-объект разместил меши колёс. Владелец реализует ICFTireHost.

Функции

AUTHORITY · сервер, на каждом инстансеLOCAL · этот инстансPURE · только чтение
void SetProfile(UCFTireProfile* InProfile)
C++ ONLY

Задаёт профиль шины. Заданный после BeginPlay профиль также ставит в бюджет подсистемы компонент, который начал игру без профиля.

UCFTireProfile* GetProfile() const
PUREC++ ONLY

Профиль шины или null.

void SetCrushformHost(UObject* NewHost)
C++ ONLY

Кто отвечает за этот компонент через ICFTireHost; null = host-объект владельца из реестра, иначе сам владелец. Вызывайте до BeginPlay: компонент один раз читает свои колёса у host-объекта, до ForgetWheels.

UObject* GetCrushformHost() const
PUREC++ ONLY

Явно заданный host-объект, иначе UCFHostRegistry::FindHost(Owner, UCFTireHost), иначе null.

void ResolveWheels()
C++ ONLY

Читает колёса host-объекта один раз, при первом сообщении о них, и опускает каждую шину, чтобы она стояла на земле. Host-объект может создать меши колёс после BeginPlay, поэтому вызывающий спрашивает снова, пока список не перестанет быть пустым.

void ForgetWheels()
C++ ONLY

Возвращает каждое колесо в состояние, как было у host-объекта (без деформера, собственное смещение host-объекта, собственное состояние рендера меша), и забывает список, так что следующий ResolveWheels снова читает колёса host-объекта. Host-объект, у которого меняется набор колёс, вызывает его BEFORE замены своего списка: смещения возвращаются через host-объект по индексу каждого колеса в ещё сохранённом списке. Никогда не вызывайте его изнутри callback host-объекта, который выдал этот компонент (GatherLoadRatios во время обновления загрузки обходит Wheels, который этот метод очищает).

const TArray<FCFTireWheel>& GetWheels() const
PUREC++ ONLY

Колёса, прочитанные у host-объекта; пусто, пока ResolveWheels не найдёт их.

float FindRimRadiusInMaterials(TConstArrayView<const UMaterialInterface*> Materials)
C++ ONLY

Радиус обода в единицах меша из скаляра RimRadius материалов шины; 0, если ни у одного его нет. Побеждает первый материал, который сам задаёт RimRadius. Если такого нет, значение по умолчанию даёт первый материал, у которого параметр есть, поэтому материал обода на том же мастере не скрывает собственное значение шины. Материалы null пропускаются.

void GrantWheel(int32 WheelIndex, uint8 Tier)
C++ ONLY

Даёт колесу деформер с плотностью трассировки уровня, либо переводит существующий на этот уровень и снова включает его трассировку.

void RevokeWheel(int32 WheelIndex)
C++ ONLY

Колесо выходит из бюджета: его деформер прекращает трассировку, а вмятина гаснет. Деформер остаётся, пока DestroyRelaxedDeformers не найдёт его расслабленным, так что шина не возвращается в круглую форму рывком.

int32 DestroyRelaxedDeformers()
C++ ONLY

Удаляет затухающие деформеры, у которых вмятина уже пропала; возвращает число колёс, которые ещё затухают. Выключает тик, когда не осталось ни одного деформера.

FCFTireDeformer* FindDeformer(int32 WheelIndex)
C++ ONLY

Деформер колеса или null, если его нет. Указатель действителен до тех пор, пока колёса не будут снова определены или деформер не будет удалён.

void SetDrawDebug(bool bInDrawDebug)
C++ ONLY

Отрисовывает лучи и контакты каждого деформера.

void SetRestingSink(bool bInRestingSink)
C++ ONLY

Выкл.: колесо без деформера стоит на земле, а не проседает на величину статического прогиба. Колесо, на котором ещё есть деформер, остаётся просевшим.

void UpdateLoadSink(float DeltaTime)
C++ ONLY

Сдвигает коэффициент нагрузки каждого деформированного колеса к значению, которое сообщает host-объект, и заново применяет смещение, когда тот заметно изменился.

float StepLoadFactor(float CurrentFactor, float LoadRatio, const UCFTireProfile& Profile, float DeltaTime)
C++ ONLY

Один шаг сглаживания коэффициента нагрузки колеса. Целевое значение равно 1 + LoadSensitivity * (LoadRatio - 1) и ограничено диапазоном [0, MaxLoadFactor]; коэффициент растёт за LoadAttackTime и падает за LoadReleaseTime. LoadRatio — это сила контакта host-объекта, делённая на номинальную нагрузку.

Свойства

TObjectPtr<UCFTireProfile> Profile

Профиль шины, который настраивает деформацию. Без него шины автомобиля остаются круглыми.

Категория
Tire Deformation