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

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

UCFPropContactComponent

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

Позволяет телу владельца разрушать разрушаемые элементы, сквозь которые оно проезжает, на инстансе, который его симулирует. Каждый кадр выполняет один оверлап-бокс по типу объекта элементов (CFBreakable::GetUnitObjectType), разрушает элемент локально без физического контакта (элементы игнорируют тело), применяет настроенное изменение скорости, затем сообщает о разрушении серверу, который проверяет его и реплицирует. Телом служит корневой примитив владельца. Владелец или host-объект, зарегистрированный для него в UCFHostRegistry (адаптер автомобиля регистрирует себя сам), может реализовать ICFBreakerHost, чтобы назвать другое тело, указать, где оно симулируется, направить свои отчёты через компонент другого эктора и получать вмятины на теле. Без host-объекта тело симулирует авторити, отчёты идут через этот компонент, и тело никогда не мнётся. Он также взводит разрушаемые деревья вокруг тела каждый тик на каждом инстансе, поэтому дерево никогда не является кинематической стеной для автомобиля, который симулирует другой инстанс.

Функции

AUTHORITY · сервер, на каждом инстансеLOCAL · этот инстансPURE · только чтение
bool IsReportPlausible(const FVector& ServerBodyLocation, float BodyRadiusCm, const FVector& UnitCenter, float UnitRadiusCm, float BodySpeedCmS)
C++ ONLY

Правдоподобен ли отчёт клиента о разрушении с точки зрения сервера, где тот видит кузов. Длины в см, BodySpeedCmS в см/с.

FCFBreakImpact SanitizeReportedImpact(const FCFBreakImpact& Reported, const FBox& UnitBounds)
C++ ONLY

Отчёт клиента об ударе, приведённый к безопасному виду для рассылки всем клиентам: помещён в собственные границы элемента, скорость ограничена тем, что может заявить кузов.

void SetCrushformHost(UObject* NewHost)
C++ ONLY

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

UObject* GetCrushformHost() const
PUREC++ ONLY

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

bool IsSimulatedHere() const
PUREC++ ONLY

Двигает ли этот инстанс тело владельца: ICFBreakerHost::IsBreakerSimulatedHere, иначе авторити.

bool IsReportingActorOurs(const AActor* ReportingActor) const
PUREC++ ONLY

Относится ли отчёт, сделанный от имени ReportingActor, к этому компоненту: к самому владельцу или к эктору, чей host-объект направляет свои отчёты через нас.

void ReportBreakToServer(AActor* ReportingActor, UCFBreakableInstancesComponent* Instances, int32 UnitIndex, const FCFBreakImpact& Impact)
C++ ONLY

Отправляет на сервер разрушение, смоделированное на этом инстансе, через эктор этого компонента, принадлежащий соединению.

Свойства

float MinContactSpeedCmS = 50.f
По умолчанию
50.f
Категория
Contact
float TreeArmMinSpeedCmS = 5.f
По умолчанию
5.f
Категория
Contact|Trees