コード例 #1
0
ファイル: Camera.cs プロジェクト: danbystrom/VisionQuest
 public void UpdateInputDevices()
 {
     KeyboardState = KeyboardManager.GetState();
     KeyboardState.GetDownKeys(_downKeys);
     MouseState = MouseManager.GetState();
     if(PointerManager!=null)
         PointerState = PointerManager.GetState();
 }
コード例 #2
0
        ////////////////////////////////////////////////////////////////////////////    
        ////////////////////////////////////////////////////////////////////////////
        private void UpdateKeys(KeyboardState state, GameTime gameTime)
        {
            #if (!XBOX && !XBOX_FAKE)

              KeyEventArgs e = new KeyEventArgs();

              e.Caps = (((ushort)NativeMethods.GetKeyState(0x14)) & 0xffff) != 0;

              List<Keys> downKeys = new List<Keys>();
              state.GetDownKeys(downKeys);
              foreach (Keys key in downKeys)
              {
            if (key == Keys.LeftAlt || key == Keys.RightAlt) e.Alt = true;
            else if (key == Keys.LeftShift || key == Keys.RightShift) e.Shift = true;
            else if (key == Keys.LeftControl || key == Keys.RightControl) e.Control = true;
              }

              foreach (InputKey key in keys)
              {
            if (key.Key == Keys.LeftAlt || key.Key == Keys.RightAlt ||
            key.Key == Keys.LeftShift || key.Key == Keys.RightShift ||
            key.Key == Keys.LeftControl || key.Key == Keys.RightControl)
            {
              continue;
            }

            bool pressed = state.IsKeyDown(key.Key);

            double ms = gameTime.ElapsedGameTime.TotalMilliseconds;
            if (pressed) key.Countdown -= ms;

            if ((pressed) && (!key.Pressed))
            {
              key.Pressed = true;
              e.Key = key.Key;

              if (KeyDown != null) KeyDown.Invoke(this, e);
              if (KeyPress != null) KeyPress.Invoke(this, e);
            }
            else if ((!pressed) && (key.Pressed))
            {
              key.Pressed = false;
              key.Countdown = RepeatDelay;
              e.Key = key.Key;

              if (KeyUp != null) KeyUp.Invoke(this, e);
            }
            else if (key.Pressed && key.Countdown < 0)
            {
              key.Countdown = RepeatRate;
              e.Key = key.Key;

              if (KeyPress != null) KeyPress.Invoke(this, e);
            }
              }
              #endif
        }