public void Reset()
 {
     if (IsScheduled)
     {
         _scheduleTimeStamp = Ch3TimeManager.CreateTimeStamp();
         schedule();
     }
 }
            public void Debounce(float p_delay, Ch3TimeType p_timeType = Ch3TimeType.SCALED_FIXED, bool p_repeat = false)
            {
                _scheduleTimeStamp = Ch3TimeManager.CreateTimeStamp();
                _isRepeating       = p_repeat;
                _delay             = (p_delay < MIN_DELAY) ? MIN_DELAY : p_delay;
                _timeType          = p_timeType;

                schedule();
            }
            public Tween(_updateBehaviour p_updateBehaviour, Ch3EasingFunctionDelegate p_easingFunction, double p_duration)
            {
                _updateBehaviour = p_updateBehaviour;
                _timeStamp       = Ch3TimeManager.CreateTimeStamp();
                _easingFunction  = p_easingFunction;

                _duration = p_duration == 0 ? double.Epsilon : p_duration;
                _lastStep = false;
                _isActive = false;
            }
 public Ch3Invoke(_fixedUpdateBehaviour p_fixedUpdateBehaviour, System.Action p_action)
 {
     _fixedUpdateBehaviour = p_fixedUpdateBehaviour;
     _action            = p_action;
     _scheduleTimeStamp = Ch3TimeManager.CreateTimeStamp();
     _isScheduled       = false;
     _isRepeating       = false;
     _delay             = MIN_DELAY;
     _timeType          = Ch3TimeType.SCALED_FIXED;
 }
            public ITween Restart()
            {
                _timeStamp = Ch3TimeManager.CreateTimeStamp();

                activate();

                if (_onStart != null)
                {
                    _onStart(0.0);
                }

                return(this);
            }
            public void ExecuteInternally()
            {
                _action();

                if (!IsRepeating)
                {
                    cancel();
                }
                else
                {
                    _scheduleTimeStamp = Ch3TimeManager.CreateTimeStamp();
                }
            }
            public void ExecuteImmediateScheduled()
            {
                if (IsScheduled)
                {
                    _action();

                    if (!IsRepeating)
                    {
                        cancel();
                    }
                    else
                    {
                        _scheduleTimeStamp = Ch3TimeManager.CreateTimeStamp();
                    }
                }
            }