Ejemplo n.º 1
0
 /// <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();
         }
     }
 }
Ejemplo n.º 2
0
        /// <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);
        }
Ejemplo n.º 3
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)));
 }
Ejemplo n.º 8
0
 /// <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);
 }