void UAITask_MoveTo::OnDestroy(bool bInOwnerFinished) { Super::OnDestroy(bInOwnerFinished); ResetObservers(); ResetTimers(); if (MoveRequestID.IsValid()) { UPathFollowingComponent* PFComp = OwnerController ? OwnerController->GetPathFollowingComponent() : nullptr; if (PFComp && PFComp->GetStatus() != EPathFollowingStatus::Idle) { PFComp->AbortMove(*this, FPathFollowingResultFlags::OwnerFinished, MoveRequestID); } } // clear the shared pointer now to make sure other systems // don't think this path is still being used Path = nullptr; }
void UAITask_MoveTo::FinishMoveTask(EPathFollowingResult::Type InResult) { if (MoveRequestID.IsValid()) { UPathFollowingComponent* PFComp = OwnerController ? OwnerController->GetPathFollowingComponent() : nullptr; if (PFComp && PFComp->GetStatus() != EPathFollowingStatus::Idle) { ResetObservers(); PFComp->AbortMove(*this, FPathFollowingResultFlags::OwnerFinished, MoveRequestID); } } MoveResult = InResult; EndTask(); if (InResult == EPathFollowingResult::Invalid) { OnRequestFailed.Broadcast(); } else { OnMoveFinished.Broadcast(InResult); } }