AnimNotifyState 的 Trigger 核心是三个数组:
- ActiveAnimNotifyState: 记录上一帧在 Active 的 NotifyState(简称 Act)
- NotifyQueue.AnimNotifies: 记录这一帧 Montage 上所有 Notify(包括 Notify 和 NotifyState)
- NewActiveAnimNotifyState(局部变量): 通过 1 和 2 计算出有哪些是这一帧新的 NotifyState(简称 NewAct)
- NotifyStateBeginEvent(不太重要,局部):只用来触发新的 NotifyState 的 Begin
TriggerAnimNotifies
(在这里进行动画通知 AnimNotify、动画通知状态 AnimNotifyState 的 Begin、End、Tick 的触发)里的流程如下:
1. 创建 NewActiveAnimNotifyState
创建 NewActiveAnimNotifyState
并设为 NotifyQueue.AnimNotifies
的 大小(NotifyQueue.AnimNotifies
是每帧算这一帧动画上有哪些动画通知并存起来的)
// Array that will replace the 'ActiveAnimNotifyState' at the end of this function.
TArray<FAnimNotifyEvent> NewActiveAnimNotifyState;
NewActiveAnimNotifyState.Reserve(NotifyQueue.AnimNotifies.Num());
2. 添加 NotifyStateBeginEvent
// AnimNotifyState freshly added that need their 'NotifyBegin' event called.
TArray<const FAnimNotifyEvent *> NotifyStateBeginEvent;
for (int32 Index=0; Index<NotifyQueue.AnimNotifies.Num(); Index++)
{