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); } } }