internal static void PullReactorResults(UpdateTiming updateTiming) { Profiler.BeginSample("BoingManager.PullReactorResults"); foreach (var itReactor in s_reactorMap) { var reactor = itReactor.Value; if (reactor.UpdateTiming != updateTiming) { continue; } itReactor.Value.PullResults(); } foreach (var itSampler in s_cpuSamplerMap) { var sampler = itSampler.Value; if (sampler.UpdateTiming != updateTiming) { continue; } itSampler.Value.SampleFromField(); } Profiler.EndSample(); }
internal static void ExecuteBones(UpdateTiming updateTiming) { if (s_bonesMap.Count == 0) { return; } Profiler.BeginSample("BoingManager.ExecuteBones"); foreach (var itBones in s_bonesMap) { var bones = itBones.Value; if (bones.InitRebooted) { continue; } bones.Reboot(); bones.InitRebooted = true; } #if UNITY_2018_1_OR_NEWER if (UseAsynchronousJobs) { BoingWorkAsynchronous.ExecuteBones(s_aEffectorParams, s_bonesMap, updateTiming); } else #endif { BoingWorkSynchronous.ExecuteBones(s_aEffectorParams, s_bonesMap, updateTiming); } Profiler.EndSample(); }
internal static void ExecuteReactors(UpdateTiming updateTiming) { if (s_effectorMap.Count == 0 && s_reactorMap.Count == 0 && s_fieldMap.Count == 0 && s_cpuSamplerMap.Count == 0) { return; } Profiler.BeginSample("BoingManager.ExecuteReactors"); foreach (var itReactor in s_reactorMap) { var reactor = itReactor.Value; if (reactor.InitRebooted) { continue; } reactor.Reboot(); reactor.InitRebooted = true; } #if UNITY_2018_1_OR_NEWER if (UseAsynchronousJobs) { BoingWorkAsynchronous.ExecuteReactors(s_effectorMap, s_reactorMap, s_fieldMap, s_cpuSamplerMap, updateTiming); } else #endif { BoingWorkSynchronous.ExecuteReactors(s_aEffectorParams, s_reactorMap, s_fieldMap, s_cpuSamplerMap, updateTiming); } Profiler.EndSample(); }
internal static void ExecuteBehaviors(UpdateTiming updateTiming) { if (s_behaviorMap.Count == 0) { return; } Profiler.BeginSample("BoingManager.ExecuteBehaviors"); foreach (var itBehavior in s_behaviorMap) { var behavior = itBehavior.Value; if (behavior.InitRebooted) { continue; } behavior.Reboot(); behavior.InitRebooted = true; } #if UNITY_2018_1_OR_NEWER if (UseAsynchronousJobs) { BoingWorkAsynchronous.ExecuteBehaviors(s_behaviorMap, updateTiming); } else #endif { BoingWorkSynchronous.ExecuteBehaviors(s_behaviorMap, updateTiming); } Profiler.EndSample(); }
internal static void PullBehaviorResults(UpdateTiming updateTiming) { Profiler.BeginSample("BoingManager.PullBehaviorResults"); foreach (var itBehavior in s_behaviorMap) { var behavior = itBehavior.Value; if (behavior.UpdateTiming != updateTiming) { continue; } itBehavior.Value.PullResults(); } Profiler.EndSample(); }
internal static void Execute(UpdateTiming updateTiming) { if (updateTiming == UpdateTiming.Early) { s_deltaTime = Time.deltaTime; } RefreshEffectorParams(); // execute bones first, so they operate on unmodified transform hierarchy ExecuteBones(updateTiming); ExecuteBehaviors(updateTiming); ExecuteReactors(updateTiming); if (updateTiming == UpdateTiming.Late) { s_numFixedUpdateIterations = 0; } }
internal static void PullBonesResults(UpdateTiming updateTiming) { if (s_bonesMap.Count == 0) { return; } Profiler.BeginSample("BoingManager.PullBonesResults"); #if UNITY_2018_1_OR_NEWER if (UseAsynchronousJobs) { BoingWorkAsynchronous.PullBonesResults(s_aEffectorParams, s_bonesMap, updateTiming); } else #endif { BoingWorkSynchronous.PullBonesResults(s_aEffectorParams, s_bonesMap, updateTiming); } Profiler.EndSample(); }
public static void RunOnUpdate(NetworkMode mode, Action action, UpdateTiming updateTiming) { Instance.updateActionsDictionary[mode].Add(action); }