Beispiel #1
0
 public void CheckFrameTack()
 {
     currentFrame++;
     for (int i = 0; i < tempFrameTaskList.Count; i++)
     {
         frameTaskList.Add(tempFrameTaskList[i]);
     }
     tempFrameTaskList.Clear();
     for (int i = 0; i < frameTaskList.Count; i++)
     {
         CyFrameTask frameTask = frameTaskList[i];
         if (currentFrame < frameTask.FinishedFrame)
         {
             continue;
         }
         Action action = frameTask.CallBack;
         action?.Invoke();
         if (frameTask.Count == 1)
         {
             frameTaskList.RemoveAt(i);
             taskIDSet.Remove(frameTask.TaskID);
             i--;
         }
         else
         {
             frameTask.FinishedFrame += frameTask.Delay;
             if (frameTask.Count != 0)
             {
                 frameTask.Count--;
             }
         }
     }
 }
Beispiel #2
0
    public int AddFrameTask(Action callBack, int delay, int count = 1)
    {
        int         taskID   = GetTaskID();
        CyFrameTask timeTask = new CyFrameTask(taskID, callBack, currentFrame + delay, delay, count >= 0 ? count : 1);

        tempFrameTaskList.Add(timeTask);
        taskIDSet.Add(taskID);
        return(taskID);
    }