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

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

UCFBreakableInstancesComponent

МОДУЛЬCrushformBreakableЗАГОЛОВОКCFBreakableInstancesComponent.hРОДИТЕЛЬUCFBreakableUnitsComponent

Разрушаемые элементы на ядре элементов Crushform, уложенные владельцем: ISM-инстансы, которые их показывают, раскладка, в которой они стоят, респаун на стороне сервера и, для определений, которые этого требуют, разрушение от любого тела. Ничего не знает о том, вдоль чего владелец их раскладывает. Владелец раскладывает элементы и передаёт их в SetUnits на каждом инстансе с одинаковыми данными; индекс элемента — его идентичность везде, и он не меняется за время жизни владельца. ISMs, переданные в SetInstanceSlots, должны быть прикреплены к этому компоненту с единичным преобразованием: FindForPrimitive идёт от перекрытого ISM к его родителю прикрепления. У элемента два уровня, целый (0) и разрушенный (1); базовый компонент реплицирует, предсказывает и проигрывает их.

Любое тело: элемент, у определения которого задано bBreaksFromAnyBody, разрушается только на авторити физическим телом или идущей пешкой, у которых нет собственного компонента контакта (CFBreakable::IsContactBody). Зацикленный таймер (UCFBreakableSettings::AnyBodyCheckIntervalSeconds) при каждом срабатывании один раз ищет тела в боксе вокруг стоящих помеченных элементов; пока одно из них тяжёлое и достаточно быстрое, компонент тикает после физики и проверяет путь каждого такого тела в кадре относительно границ элементов, а кадр без таких тел выключает тик. Без помеченного определения, а также на клиенте и в мире, который не является игровым, компонент не держит таймера и никогда не тикает.

Функции

AUTHORITY · сервер, на каждом инстансеLOCAL · этот инстансPURE · только чтение
UCFBreakableInstancesComponent* FindForPrimitive(const UPrimitiveComponent* Primitive)
C++ ONLY

Компонент экземпляров, которому принадлежат экземпляры Primitive, или nullptr.

void SetInstanceSlots(const TArray<UCFBreakablePropDefinition*>& InDefinitions, const TArray<UInstancedStaticMeshComponent*>& InInstances)
C++ ONLY

Один ISM на каждый слот определения (FCFBreakableUnit::DefinitionIndex индексирует оба массива); задаёт меш каждого ISM.

void SetUnits(const TArray<FCFBreakableUnit>& InUnits)
C++ ONLY

Заменяет список элементов и показывает каждый элемент, который реплицированное состояние не помечает как разрушенный.

bool IsUnitConfirmedBroken(int32 UnitIndex) const
PUREC++ ONLY

Реплицированное представление авторити.

FBox GetUnitWorldBounds(int32 UnitIndex) const
PUREC++ ONLY

Мировой бокс неразрушенного меша элемента.

int32 FindUnitForOverlap(const UPrimitiveComponent* Component, int32 ItemIndex) const
PUREC++ ONLY

Элемент, к которому относится результат пересечения с одним из ISMs этого компонента; INDEX_NONE, если это не наш элемент.

bool TryBreakLocal(int32 UnitIndex, const FCFBreakImpact& Impact)
LOCALC++ ONLY

Немедленно разрушает элемент на этом инстансе (скрывает его, разбрасывает обломки, проигрывает отклик) и ждёт подтверждения от авторити; неподтверждённые разрушения отменяются через PredictionConfirmTimeoutSeconds. Возвращает false, если элемент здесь уже разрушен. Ещё стоящие элементы из FCFBreakableUnit::LinkedUnits разрушаются вместе с ним, каждый как самостоятельное разрушение.

void BreakOnAuthority(int32 UnitIndex, const FCFBreakImpact& Impact)
AUTHORITYC++ ONLY

Только для авторити: записывает и реплицирует разрушение и планирует респаун. Для уже разрушенного элемента ничего не делает. Ещё стоящие элементы из FCFBreakableUnit::LinkedUnits разрушаются вместе с ним, каждый как самостоятельное разрушение.

int32 RespawnAllOnAuthority()
AUTHORITYC++ ONLY

Авторити: все разрушенные элементы сразу встают, независимо от того, что возвращает CanRespawnUnit. Возвращает количество поднявшихся элементов.

bool IsWatchingAnyBody() const
PUREC++ ONLY

Взведён ли поиск тела любого типа: компонент находится в игровом мире на авторити и содержит элемент, чьё определение разрушается от любого тела.

bool IsAnyBodyTickOn() const
PUREC++ ONLY

Тикает ли компонент сейчас; он тикает, только пока последний поиск нашёл тело, способное разрушить элемент.

Унаследовано от UCFBreakableUnitsComponent

Функции

  • FindUnitsForPrimitiveКомпонент элементов, для элемента которого стоит Primitive, и индекс этого элемента: через ICFBreakableUnitPart на примитиве, иначе через первого родителя прикрепления, который знает примитив. nullptr, если ни один не знает.
  • ApplyHitResultOnAuthorityАвторити: применяет внешний удар по примитиву к элементу, которому он принадлежит.
  • PredictHitResultЛюбой инстанс: предсказательный аналог ApplyHitResultOnAuthority.
  • ApplyHitOnAuthorityАвторити: поднимает элемент до уровня, который его определение задаёт для этого удара (HitResponses), реплицирует его и проигрывает.
  • PredictHitЛюбой инстанс: сразу показывает уровень удара и ждёт авторити; отменяется через PredictionConfirmTimeoutSeconds.
  • GetUnitCountСколько элементов разложил владелец.
  • GetMaxLevelНаивысший уровень, которого может достичь элемент, как задано в InitUnits; элемент цел на уровне 0.
  • GetUnitLevelУровень, который показывает этот инстанс: уровень на авторити или предсказание, опережающее этот уровень.
  • GetConfirmedUnitLevelУровень, подтверждённый на авторити в текущем поколении.
  • IsUnitIntacttrue для корректного индекса, показанный уровень которого равен 0; false для некорректного индекса.
  • PredictUnitLevelСразу показывает уровень StoredImpact, опережая авторити, вместе с элементами, которые добавляет GatherUnitsRaisedWith.
  • RaiseUnitLevelOnAuthorityАвторити: подтверждает Level для элемента и для элементов, которые добавляет GatherUnitsRaisedWith, реплицирует его, проигрывает здесь и сообщает OnUnitsRaisedOnAuthority.
  • CancelPredictionОткатывает предсказание элемента к подтверждённому уровню, а вместе с ним предсказания элементов, которые добавляет GatherUnitsRaisedWith.
  • ApplyGenerationЛюбой инстанс: первое поколение, которое узнаёт этот компонент (отсюда или из реплицированных уровней), принимается, каким бы оно ни было; после этого более новое поколение сразу возвращает все элементы здесь к целому состоянию, а равное или более старое игнорируется.
  • FindUnitForPrimitiveЭлемент, для которого стоит примитив (и его экземпляр, ItemIndex), или INDEX_NONE.

События