예제 #1
0
        public void UnregisterFixedTick(ITickableObject tickable)
        {
            if (_fixedTicksHolder.Contains(tickable) == false)
            {
                FLog.Warning(CLASS_TYPE.Name, $"{tickable.Name} has not registered for fixed tick but wants to unregister.");

                return;
            }

            _registeredFixedTick.Remove(tickable);

            _fixedTicksHolder.Remove(tickable);
        }
예제 #2
0
        public void RegisterFixedTick(ITickableObject tickable)
        {
            if (_fixedTicksHolder.Contains(tickable))
            {
                FLog.Warning(CLASS_TYPE.Name, $"{tickable.Name} already registered for fixed tick.");

                return;
            }

            _registeredFixedTick.Add(tickable);

            _fixedTicksHolder.Add(tickable);
        }
예제 #3
0
        public void RegisterLateTick(ITickableObject tickable)
        {
            if (_lateTicksHolder.Contains(tickable))
            {
                FLog.Warning(CLASS_TYPE.Name, $"{tickable.Name} already registered for late tick.");

                return;
            }

            _registeredLateTicks.Add(tickable);

            _lateTicksHolder.Add(tickable);
        }
예제 #4
0
        private void LateUpdate()
        {
            for (int i = 0; i < _registeredLateTicks.Count; ++i)
            {
                ITickableObject tickable = _registeredLateTicks[i];

                if (tickable == null)
                {
                    continue;
                }

                if (this.HasInitialized == false)
                {
                    continue;
                }

                if (tickable is IInitializableObject initializable && initializable.HasInitialized == false)
                {
                    continue;
                }

                if (tickable.CanEverLateTick == false)
                {
                    continue;
                }

                if (HasBeganPlay == false && tickable.CanLateTickBeforePlay == false)
                {
                    continue;
                }

                try
                {
                    tickable.LateTick(Time.deltaTime);
                }
                catch (Exception exception)
                {
                    FLog.Error(CLASS_TYPE.Name, exception.Message);
                }

                InitializePendingObjects();
            }
        }
예제 #5
0
        private void FixedUpdate()
        {
            for (int i = 0; i < _registeredFixedTick.Count; ++i)
            {
                ITickableObject tickable = _registeredFixedTick[i];

                if (tickable == null)
                {
                    continue;
                }

                if (this.HasInitialized == false)
                {
                    continue;
                }

                if (tickable is IInitializableObject initializable && initializable.HasInitialized == false)
                {
                    continue;
                }

                if (tickable.CanEverFixedTick == false)
                {
                    continue;
                }

                if (HasBeganPlay == false && tickable.CanFixedTickBeforePlay == false)
                {
                    continue;
                }

                try
                {
                    tickable.FixedTick(Time.fixedDeltaTime);
                }
                catch (Exception exception)
                {
                    FLog.Error(CLASS_TYPE.Name, exception.Message);
                }
            }
        }