예제 #1
0
        public static void Register(ITickable task, UpdateType updateType = UpdateType.normal)
        {
            // be assure instance exist
            Checkinstance();
            var ableTask = Tasks.Find(x => x.InstanceId() == task.InstanceId() && x.InstanceId() != 0);

            if (ableTask != null)
            {
                switch (ableTask)
                {
                case MoveTask move:
                    move.Join(((MoveTask)task).CurrentData); break;

                case DirectionTask drecTask:
                    drecTask.Join(((DirectionTask)task).CurrentData); break;

                case UpdateTask updateTask:
                    Debug2.Log("update task exist it will add in queue");
                    updateTask.Join(((UpdateTask)task).currentData); break;
                }
            }
            else
            {
                if (updateType == UpdateType.normal)
                {
                    Tasks.Add(task);
                }
                else if (updateType == UpdateType.fixedTime)
                {
                    FixedTasks.Add(task);
                }
            }
        }