/// <summary> /// 结束所有的相关task /// </summary> public void EndAllResourceConsumingTasksOwnedBy(IGameplayTaskOwnerInterface TaskOwner) { for (int Idx = 0; Idx < TaskPriorityQueue.Count; Idx++) { if (TaskPriorityQueue[Idx].GetTaskOwner() == TaskOwner) { ///完成任务, task event会在后面统一删除 TaskPriorityQueue[Idx].TaskOwnerEnded(); } } }
/// <summary> /// 结束所有的相关task /// </summary> public bool FindAllResourceConsumingTasksOwnedBy(IGameplayTaskOwnerInterface TaskOwner, List <UGameplayTask> FoundTasks) { int NumFound = 0; for (int TaskIndex = 0; TaskIndex < TaskPriorityQueue.Count; TaskIndex++) { if (TaskPriorityQueue[TaskIndex].GetTaskOwner() == TaskOwner) { FoundTasks.Add(TaskPriorityQueue[TaskIndex]); NumFound++; } } return(NumFound > 0); }
/// <summary> /// 初始化任务, 但不激活. 激活需要调用Activate方法 /// </summary> public void InitTask(IGameplayTaskOwnerInterface InTaskOwner, int InPriority) { //Priority = InPriority; TaskOwner = InTaskOwner; TaskState = EGameplayTaskState.AwaitingActivation; if (bClaimRequiredResources) { ClaimedResources.AddSet(RequiredResources); } InTaskOwner.OnGameplayTaskInitialized(this); TasksComponent = InTaskOwner.GetGameplayTasksComponent(this); bOwnedByTasksComponent = (TaskOwner == TasksComponent); //避免两次调用OnGameplayTaskInitialized方法 if (!bOwnedByTasksComponent) { TasksComponent.OnGameplayTaskInitialized(this); } }
/// <summary> /// Notify called after GameplayTask changes state from Active (finishing or pausing) /// </summary> public static void OnGameplayTaskDeactivated(this IGameplayTaskOwnerInterface obj, UGameplayTask task) { Native_IGameplayTaskOwnerInterface.Internal_OnGameplayTaskDeactivated(obj.GetAddress(), task.Address); }
/// <summary> /// Get default priority for running a task /// </summary> public static byte GetGameplayTaskDefaultPriority(this IGameplayTaskOwnerInterface obj) { return(Native_IGameplayTaskOwnerInterface.Internal_GetGameplayTaskDefaultPriority(obj.GetAddress())); }
/// <summary> /// Get "body" of task's owner / default, having location in world (e.g. Owner = AIController, Avatar = Pawn) /// </summary> public static AActor GetGameplayTaskAvatar(this IGameplayTaskOwnerInterface obj, UGameplayTask task) { return(GCHelper.Find <AActor>( Native_IGameplayTaskOwnerInterface.Internal_GetGameplayTaskAvatar(obj.GetAddress(), task.Address))); }
/// <summary> /// Finds tasks component for given GameplayTask, Task.GetGameplayTasksComponent() may not be initialized at this point! /// </summary> public static UGameplayTasksComponent GetGameplayTasksComponent(this IGameplayTaskOwnerInterface obj, UGameplayTask task) { return(GCHelper.Find <UGameplayTasksComponent>( Native_IGameplayTaskOwnerInterface.Internal_GetGameplayTasksComponent(obj.GetAddress(), task.Address))); }
/// <summary> /// Initailizes the task with the task owner interface instance but does not actviate until Activate() is called /// </summary> protected void InitTask(IGameplayTaskOwnerInterface taskOwner, byte priority) { Native_UUSharpGameplayTask.Internal_InitTask(Address, taskOwner.GetAddress(), priority); }