Exemple #1
0
        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();
        }
Exemple #2
0
        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();
        }
Exemple #3
0
        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();
        }
Exemple #4
0
        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();
        }
Exemple #5
0
        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();
        }
Exemple #6
0
        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;
            }
        }
Exemple #7
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);
 }