public static void CallFunction(GameObject p_owner, System.Delegate p_functionPointer, List <object> p_params, float p_time, bool p_canCreateNewOne = true)
 {
     if (p_owner != null)
     {
         GlobalScheduler v_instance = GlobalScheduler.GetInstance(p_canCreateNewOne);
         if (v_instance != null && Application.isPlaying)
         {
             FunctionCallerScheduler v_scheduler = v_instance.RegisterScheduler <FunctionCallerScheduler>(p_owner);
             if (v_scheduler != null)
             {
                 v_scheduler.DestroyOptionWhenStop = WhenStopDestroyEnum.DestroyScript;
                 v_scheduler.FunctionToCall        = p_functionPointer;
                 v_scheduler.Parameters            = p_params;
                 v_scheduler.MaxTime = p_time;
                 v_scheduler.Owner   = p_owner;
                 v_scheduler.StartTimer();
             }
         }
         else
         {
             FunctionAndParameters v_newStruct = new FunctionAndParameters();
             v_newStruct.DelegatePointer = p_functionPointer;
             v_newStruct.Params          = p_params;
             v_newStruct.Target          = p_owner;
             RegisterInCallerOverTime(v_newStruct, p_time);
         }
     }
 }
    public static void CallFunctionWhenOutOfMainThread(System.Delegate p_functionPointer, List <object> p_params, float p_time)
    {
        FunctionAndParameters v_newStruct = new FunctionAndParameters();

        v_newStruct.DelegatePointer = p_functionPointer;
        v_newStruct.Params          = p_params;
        v_newStruct.Target          = null;
        if (p_time <= 0)
        {
            p_time = 0.001f;
        }
        RegisterInCallerOverTime(v_newStruct, p_time);
    }
 static void RegisterInCallerOverTime(FunctionAndParameters p_struct, float p_time)
 {
     if (p_struct != null)
     {
         if (p_time <= 0)
         {
             p_struct.CallFunction();
         }
         else
         {
             FunctionsToCallOverTime.AddChecking(p_time, p_struct);
         }
     }
 }