bool UPawnAction_Repeat::PushSubAction() { if (ActionToRepeat == NULL) { Finish(EPawnActionResult::Failed); return false; } else if (RepeatsLeft == 0) { Finish(EPawnActionResult::Success); return true; } if (RepeatsLeft > 0) { --RepeatsLeft; } UPawnAction* ActionCopy = SubActionTriggeringPolicy == EPawnSubActionTriggeringPolicy::CopyBeforeTriggering ? Cast<UPawnAction>(StaticDuplicateObject(ActionToRepeat, this, NULL)) : ActionToRepeat; UE_VLOG(GetPawn(), LogPawnAction, Log, TEXT("%s> pushing repeted action %s %s, repeats left: %d") , *GetName(), SubActionTriggeringPolicy == EPawnSubActionTriggeringPolicy::CopyBeforeTriggering ? TEXT("copy") : TEXT("instance") , *GetNameSafe(ActionCopy), RepeatsLeft); check(ActionCopy); RecentActionCopy = ActionCopy; return PushChildAction(*ActionCopy); }
bool UPawnAction_Sequence::PushNextActionCopy() { if (CurrentActionIndex >= uint32(ActionSequence.Num())) { Finish(EPawnActionResult::Success); return true; } UPawnAction* ActionCopy = SubActionTriggeringPolicy == EPawnSubActionTriggeringPolicy::CopyBeforeTriggering ? Cast<UPawnAction>(StaticDuplicateObject(ActionSequence[CurrentActionIndex], this, NULL)) : ActionSequence[CurrentActionIndex]; UE_VLOG(GetPawn(), LogPawnAction, Log, TEXT("%s> pushing action %s") , *GetName(), *GetNameSafe(ActionCopy)); ++CurrentActionIndex; check(ActionCopy); RecentActionCopy = ActionCopy; return PushChildAction(*ActionCopy); }