public static void SetStateMachine(ref AsyncUniTaskVoidMethodBuilder builder, ref TStateMachine stateMachine) { if (!pool.TryPop(out var result)) { result = new AsyncUniTaskVoid <TStateMachine>(); } TaskTracker.TrackActiveTask(result, 3); builder.runner = result; // set runner before copied. result.stateMachine = stateMachine; // copy struct StateMachine(in release build). }
public static void SetStateMachine(ref TStateMachine stateMachine, ref IStateMachineRunner runnerFieldRef) { if (!pool.TryPop(out var result)) { result = new AsyncUniTaskVoid <TStateMachine>(); } TaskTracker.TrackActiveTask(result, 3); runnerFieldRef = result; // set runner before copied. result.stateMachine = stateMachine; // copy struct StateMachine(in release build). }