// LOGIC

        public FP Step(FP i_Target, FP i_FrameTime)
        {
            FP smoothStepFactor = (i_Target < m_Position) ? m_LowerStepFactor : m_RaiseStepFactor;
            FP smoothFactor     = (smoothStepFactor > FP.Zero) ? FP.One - MathFP.Pow(FP.Half, i_FrameTime / smoothStepFactor) : FP.One;

            m_Position += (i_Target - m_Position) * smoothFactor;

            return(m_Position);
        }