Пример #1
0
 //* -----------------------------------------------------------------------*
 /// <summary>グラデーション計算をします。</summary>
 ///
 /// <param name="nNow">現在値</param>
 /// <param name="nSize">分割数</param>
 /// <returns>補完値</returns>
 public float smooth(int nNow, int nSize)
 {
     if (limit1 == limit2)
     {
         return(limit1);
     }
     return(MathHelper.Clamp(CInterpolate._clampSmooth(start, end, nNow, nSize),
                             MathHelper.Min(limit1, limit2), MathHelper.Max(limit1, limit2)));
 }
Пример #2
0
        //* -----------------------------------------------------------------------*
        /// <summary>音量値を文字列化します。</summary>
        ///
        /// <param name="bSlider">スライダーを挿入するかどうか</param>
        /// <returns>文字列化した音量値</returns>
        public string ToString(bool bSlider)
        {
            string strResult = string.Empty;
            string strDB     = String.Format("{0:+0.0;-0.0;0}dB", dB.ToString());

            if (bSlider)
            {
                char[] szVolume = new string('・', 10).ToCharArray();
                szVolume[(int)MathHelper.Min(CInterpolate._clampSmooth(0, 10, volume, 2), 9)] = '◆';
                strResult += new string(szVolume) + Environment.NewLine;
                strDB      = string.Format("({0})", strDB);
            }
            return(strResult + strDB);
        }
Пример #3
0
        //* -----------------------------------------------------------------------*
        /// <summary>音量値を文字列化します。</summary>
        ///
        /// <param name="bSlider">スライダーを挿入するかどうか</param>
        /// <returns>文字列化した音量値</returns>
        public string ToString(bool bSlider)
        {
            string strResult = string.Empty;
            string strDB     = String.Format("{0:+00.0;-00.0;+00.0}dB", dB);

            if (bSlider)
            {
                char[] szVolume = new string('.', 10).ToCharArray();
                int    cursor   = (int)MathHelper.Min(
                    CInterpolate._clampSmooth(0, 10, volume, MAX_VOLUME), 9);
                szVolume[cursor] = 'V';
                strResult       += new string(szVolume) + Environment.NewLine;
                strDB            = string.Format("({0})", strDB);
            }
            return(strResult + strDB);
        }
Пример #4
0
        //* ────________________________________*
        //* methods ───────────────────────────────-*

        //* -----------------------------------------------------------------------*
        /// <summary>ボタン入力を検出します。</summary>
        /// <remarks>
        /// 注意: このメソッドを呼び出すと、自動的に登録されているクラスに対して
        /// <c>update()</c>が実行されます。レガシ ゲームパッドが高位入力管理クラスにて
        /// アクティブの状態でこのメソッドを呼び出すと、高位入力側の判定が
        /// 1フレーム分欠落します。
        /// </remarks>
        ///
        /// <param name="gameTime">前フレームが開始してからの経過時間。</param>
        /// <returns>
        /// ボタン入力が検出されたデバイスの管理クラス。検出しなかった場合、<c>null</c>。
        /// </returns>
        public CLegacyInput detectInput(GameTime gameTime)
        {
            CLegacyInput result    = null;
            int          threshold =
                (int)CInterpolate._clampSmooth(0, CLegacyInput.RANGE, this.threshold, 1);

            for (int i = inputList.Count; --i >= 0 && result == null;)
            {
                CLegacyInput input = inputList[i];
                input.update(gameTime);
                JoystickState state = input.nowInputState;
                if (state.Equals(input.prevInputState) && (
                        Array.Exists <byte>(state.GetButtons(), b => b != 0) ||
                        Math.Abs(state.X) >= threshold ||
                        Math.Abs(state.Y) >= threshold ||
                        Math.Abs(state.Z) >= threshold))
                {
                    result = input;
                }
            }
            return(result);
        }