参考组件
UCFGlassUnitsComponent
Crushform 车身的玻璃:拥有者的每个 UCFGlassComponent 都是一个两级单元(开裂、破碎),按名称编号,以使所有端保持一致。裂纹与等级一同复制;负责绘制的端会将其写入每块玻璃板的 Custom Primitive Data 中,通过隐藏来显示已破碎的玻璃板,并播放开裂与破碎的反馈。
函数
本机是否绘制玻璃:裂纹、碎片和声音。在专用服务器上为 false。
InDeform 的 BeginPlay:按名称为拥有者的玻璃板编号,映射跟随件和车门部件,读取它们的包围盒,并写入其数据。
拥有者是否有任何玻璃板。
任一端:较新的 Crushform 版本会将每块玻璃板恢复完整,并丢弃旧版本的所有裂纹。
权威端:根据判定结果提高玻璃板的等级,并记录其裂纹。若玻璃板的等级或裂纹发生变化,则为 true。
撞击源:立即显示判定结果,并等待权威端;Seq 为携带该结果的报告。若有任何变化,则为 true。
权威端拒绝了这些报告:它们预测过的每块玻璃板立即恢复。
权威端在将一次命中应用到晶格之后调用(Hit 为 null 时表示没有接触点的挤压,仅针对框架)。ReachedChunks:命中所及的每个区块对应的位 c(CFGlass::ToChunkMask)。SourceSeq:当前正在判定的报告,权威端自身的命中为 0。bLatticeChanged:命中是否移动了晶格;只有此时才会判定框架,因此旧凹陷永远不会被再次判定。
撞击源,基于解码后的报告以及随之绘制的晶格。只要任何玻璃板发生变化即为 true:该报告必须丢弃。
单元的玻璃板组件;对于没有玻璃板的索引,为 null。
- 分类
- Crushform|Glass
Primitive 本身所对应的玻璃板,或以 Primitive 为跟随件的玻璃板;否则为 INDEX_NONE。
用于判定命中的玻璃板所在位置;对于没有玻璃板的索引,为 null。
玻璃板所悬挂部件的铰链索引;位于车身上时为 INDEX_NONE。
Crushform 是否可以判定该玻璃板:它有定义且形状有效,并且其所属部件未脱落(UCFDeformComponent::IsPartOffOrReportedOff)。
玻璃板当前所在的位置:车身的读取姿态,或其部件的读取姿态(UCFHingeComponent::GetPartReadPose)。
本机在玻璃板上绘制的裂纹:本版本权威端的裂纹,每条都会被距其 1 cm 以内的自身预测替换(预测的扩展,且不小于权威端的裂纹),然后是其他预测;至多 MaxCracksPerPane 条。
一块碎裂的玻璃板抛出的碎片,按碎片系统接收的形式给出:定义中的碎片铺在玻璃板最靠近撞击点的平面上形成分块,每个碎片处于其所在分块中的位姿,并按碎片池抛出碎片的方式被抛出,抛出时玻璃板以其被绘制的样子为准。Scale 是保留的碎片比例,范围 0 到 1,从最先的碎片开始取。没有可抛出的东西时返回 false,OutSpawn 中没有碎片。
根据碎片系统导出的粒子数据,为这块玻璃板播放碎片系统的撞击:最快碎片的速度决定强度,玻璃板每隔 UCFBreakableSettings::DebrisImpactCooldownSeconds 最多发声一次。没有碎裂的玻璃板不播放任何内容。
函数
- Find
Units Primitive 所属单元的单元组件,以及该单元的索引:先通过基元上的 ICFBreakableUnitPart 查找,否则取第一个认识该基元的附着父级。若都找不到,则返回 nullptr。For Primitive - Apply
Hit 权威端:将作用于某基元的外部命中应用到其所属的单元。Result On Authority - Predict
Hit 任一端:ApplyHitResultOnAuthority 的预测对应函数。Result - Apply
Hit 权威端:将单元提升到其定义为此次命中给出的等级(HitResponses),复制该结果并播放。On Authority - Predict
Hit 任一端:立即显示此次命中的等级,并等待权威端确认;在 PredictionConfirmTimeoutSeconds 之后撤销。 - Get
Unit 拥有者布置的单元数量。Count - Get
Max 单元可达到的最高等级,即传给 InitUnits 的值;单元在等级 0 时完好。Level - Get
Unit 本端显示的等级:权威端的等级,或领先于权威端的预测等级。Level - Get
Confirmed 权威端在当前世代中确认的等级。Unit Level - Is
Unit 对于有效索引且显示等级为 0 的情况返回 true;对于无效索引返回 false。Intact - Predict
Unit 立即显示 StoredImpact 的等级(领先于权威端),同时显示 GatherUnitsRaisedWith 添加的单元。Level - Raise
Unit 权威端:为该单元及 GatherUnitsRaisedWith 添加的单元确认 Level,复制该结果,在此端播放,并通知 OnUnitsRaisedOnAuthority。Level On Authority - Cancel
Prediction 将单元的预测回滚到已确认的等级,同时回滚 GatherUnitsRaisedWith 添加的单元的预测。 - Apply
Generation 任一端:本组件学到的第一个世代(无论来自本端还是复制的等级)都会被接受,无论其值为何;此后,更新的世代会立即将本端所有单元恢复为完好状态,相同或更旧的世代则被忽略。 - Find
Unit 基元(及其实例,即 ItemIndex)所代表的单元;若无则为 INDEX_NONE。For Primitive
事件
- On
Unit 每当单元的显示等级发生变化时,两者都会在每一端触发。Level Changed Native - On
Unit Level Changed