СПРАВОЧНИККОМПОНЕНТЫ
UCFBreakableUnitsComponent
Реплицируемое ядро набора разрушаемых элементов; каждый проходит уровни от 0 (целый) до MaxLevel (разрушен окончательно). Владелец раскладывает элементы и вызывает InitUnits на каждом инстансе с одинаковыми данными; индекс элемента — его идентичность везде. Авторити подтверждает уровни (RaiseUnitLevelOnAuthority) и реплицирует их кольцевым буфером недавних событий, клиент предсказывает уровень на шаг вперёд (PredictUnitLevel), а трекер хранит то, что показывает каждый инстанс. Подкласс задаёт, как выглядит элемент и где он стоит; сам реплицируемое состояние он никогда не трогает.
Функции
Компонент элементов, для элемента которого стоит Primitive, и индекс этого элемента: через ICFBreakableUnitPart на примитиве, иначе через первого родителя прикрепления, который знает примитив. nullptr, если ни один не знает.
- Категория
- Crushform|Breakable
Авторити: применяет внешний удар по примитиву к элементу, которому он принадлежит. Точка удара — место удара, направление — направление трассировки (обратная нормаль поверхности для трассировки нулевой длины).
- Категория
- Crushform|Breakable
Любой инстанс: предсказательный аналог ApplyHitResultOnAuthority.
- Категория
- Crushform|Breakable
Авторити: поднимает элемент до уровня, который его определение задаёт для этого удара (HitResponses), реплицирует его и проигрывает. Возвращает false, если ничего не изменилось. Виртуальная функция: подкласс, чьи удары требуют собственного решения (трещина стеклянной панели), переопределяет её.
- Категория
- Crushform|Breakable
Любой инстанс: сразу показывает уровень удара и ждёт авторити; отменяется через PredictionConfirmTimeoutSeconds. Вызывающий код сам отвечает за канал связи с сервером.
- Категория
- Crushform|Breakable
Сколько элементов разложил владелец.
- Категория
- Crushform|Breakable
Наивысший уровень, которого может достичь элемент, как задано в InitUnits; элемент цел на уровне 0.
- Категория
- Crushform|Breakable
Уровень, который показывает этот инстанс: уровень на авторити или предсказание, опережающее этот уровень.
- Категория
- Crushform|Breakable
Уровень, подтверждённый на авторити в текущем поколении.
- Категория
- Crushform|Breakable
true для корректного индекса, показанный уровень которого равен 0; false для некорректного индекса.
- Категория
- Crushform|Breakable
Сразу показывает уровень StoredImpact, опережая авторити, вместе с элементами, которые добавляет GatherUnitsRaisedWith. Возвращает false для некорректного индекса или уровня либо когда элемент уже показывает этот уровень или выше.
Авторити: подтверждает Level для элемента и для элементов, которые добавляет GatherUnitsRaisedWith, реплицирует его, проигрывает здесь и сообщает OnUnitsRaisedOnAuthority. Возвращает false на инстансе без авторити, при некорректном индексе или уровне либо если элемент уже находится на этом уровне или выше.
Откатывает предсказание элемента к подтверждённому уровню, а вместе с ним предсказания элементов, которые добавляет GatherUnitsRaisedWith. Возвращает false для некорректного индекса или элемента без предсказания.
Любой инстанс: первое поколение, которое узнаёт этот компонент (отсюда или из реплицированных уровней), принимается, каким бы оно ни было; после этого более новое поколение сразу возвращает все элементы здесь к целому состоянию, а равное или более старое игнорируется. Авторити также очищает реплицированные уровни и кольцевой буфер событий.
Элемент, для которого стоит примитив (и его экземпляр, ItemIndex), или INDEX_NONE. Вызывается для примитивов, прикреплённых ниже этого компонента.
События
Оба срабатывают на каждом инстансе, когда меняется показанный уровень элемента. Догоняющее обновление подключившегося позже игрока (инициализация на 0, затем реплицированные уровни) срабатывает для каждого уже поднятого элемента, поэтому одноразовым эффектам здесь не место. Обработчики могут поднимать, предсказывать или отменять другие элементы и применять поколение.
- Категория
- Crushform|Breakable