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