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

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

UCFGlassUnitsComponent

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

Стекло одного кузова Crushform: каждый UCFGlassComponent владельца — это элемент с двумя уровнями (треснувший, разбитый), пронумерованный по имени, чтобы все инстансы совпадали. Трещины реплицируются наряду с уровнями; инстанс, который рисует, записывает их в Custom Primitive Data каждой панели, показывает разбитую панель, скрывая её, и проигрывает отклик на трещины и разрушение.

Функции

AUTHORITY · сервер, на каждом инстансеLOCAL · этот инстансPURE · только чтение
bool ShouldDrawInNetMode(ENetMode NetMode)
C++ ONLY

Рисует ли этот инстанс стекло: трещины, осколки и звук. На выделенном сервере False.

void InitPanes(UCFDeformComponent& InDeform)
C++ ONLY

BeginPlay для InDeform: нумерует панели владельца по имени, сопоставляет последователей и детали дверей, читает их боксы и записывает их данные.

bool HasPanes() const
PUREC++ ONLY

Есть ли у владельца хотя бы одна панель.

void ResetForGeneration(uint8 InGeneration)
C++ ONLY

На любом инстансе: новое поколение Crushform возвращает каждую панель целой и убирает все трещины старого.

bool ApplyVerdictOnAuthority(int32 UnitIndex, const FCFGlassVerdict& Verdict, uint16 SourceSeq, uint8 ResponseIndex = CFBreakable::NoResponse)
AUTHORITYC++ ONLY

Авторити: поднимает панель по вердикту и записывает её трещину. True, если уровень или трещины панели изменились.

bool PredictVerdict(int32 UnitIndex, const FCFGlassVerdict& Verdict, uint16 Seq, uint8 ResponseIndex = CFBreakable::NoResponse)
C++ ONLY

Источник удара: сразу показывает вердикт и ждёт авторити; Seq — это отчёт, который его несёт. True, если что-либо изменилось.

void OnReportsRejected(TConstArrayView<uint16> Seqs)
C++ ONLY

Эти отчёты отклонены на авторити: каждая панель, которую они предсказывали, сразу откатывается назад.

void JudgeOnAuthority(const FCFLattice& Lattice, const FCFHitInput* Hit, uint32 ReachedChunks, uint16 SourceSeq, bool bLatticeChanged)
C++ ONLY

Авторити, после того как удар был применён к решётке (Hit null: сдавливание без точки контакта, оценивается только рама). ReachedChunks: бит c для каждого чанка, до которого дошёл удар (CFGlass::ToChunkMask). SourceSeq: отчёт, который оценивается сейчас, 0 для собственного удара авторити. bLatticeChanged: удар сдвинул решётку; рама оценивается только тогда, поэтому старая вмятина никогда не оценивается повторно.

bool JudgePredicted(const FCFLattice& Lattice, const FCFHitInput& Hit, uint32 ReachedChunks, uint16 Seq, bool bLatticeChanged)
C++ ONLY

Источник удара: по декодированному отчёту и решётке, какой она отрисована вместе с ним. True, если меняется любая панель: отчёт нужно отбросить.

UCFGlassComponent* GetPane(int32 UnitIndex) const
PURE

Компонент панелей элемента; null для индекса без панели.

Категория
Crushform|Glass
int32 FindPane(const UPrimitiveComponent* Primitive) const
PUREC++ ONLY

Панель, которой является Primitive, или панель, последователем которой он является; иначе INDEX_NONE.

const CFGlass::FPaneShape* GetPaneShape(int32 UnitIndex) const
PUREC++ ONLY

Где лежит панель, для оценки удара; null для индекса без панели.

int32 GetPanePart(int32 UnitIndex) const
PUREC++ ONLY

Индекс шарнира детали, под которой висит панель; INDEX_NONE, если панель на теле.

bool IsPaneJudged(int32 UnitIndex) const
PUREC++ ONLY

Может ли Crushform оценивать панель: у неё есть определение и корректная форма, и её деталь не отключена (UCFDeformComponent::IsPartOffOrReportedOff).

FTransform GetPaneWorldTransform(int32 UnitIndex) const
PUREC++ ONLY

Где панель сейчас: по позе тела, которую оно читает, или по позе её детали (UCFHingeComponent::GetPartReadPose).

TArray<FCFGlassCrack, TInlineAllocator<CFGlass::MaxCracksPerPane>> GetDrawnCracks(int32 UnitIndex) const
PUREC++ ONLY

Трещины, которые этот инстанс рисует на панели: трещины авторити этого поколения, каждая заменена собственным предсказанием в пределах 1 см от этой трещины (предсказанный рост, никогда не меньше трещины авторити), затем остальные предсказания этого инстанса; не более MaxCracksPerPane.

bool BuildShardSpawn(int32 UnitIndex, const UCFGlassDefinition& Definition, const FCFBreakImpact& WorldImpact, uint32 Seed, float Scale, FCFGlassShardSpawn& OutSpawn) const
PUREC++ ONLY

Осколки, которые бросает разбитая панель, в том виде, в каком их берёт система осколков: плитки из фрагментов определения, уложенные на плоскость панели, ближайшую к удару, каждый фрагмент в своём положении на плитке и брошенный так, как его бросает пул обломков, от панели в том виде, как она нарисована. Scale — доля сохраняемых осколков, от 0 до 1, берущихся с первых. Возвращает false, без осколков в OutSpawn, когда бросать нечего.

void OnShardsHit(int32 UnitIndex, TConstArrayView<FBasicParticleData> Data, const FVector& SimulationPositionOffset)
C++ ONLY

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

Унаследовано от 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.

События