Example #1
0
KeyboardStatus GCKeyboard::GetInput() const
{
  const auto lock = GetStateLock();

  KeyboardStatus kb = {};

  m_keys0x->GetState(&kb.key0x, keys0_bitmasks);
  m_keys1x->GetState(&kb.key1x, keys1_bitmasks);
  m_keys2x->GetState(&kb.key2x, keys2_bitmasks);
  m_keys3x->GetState(&kb.key3x, keys3_bitmasks);
  m_keys4x->GetState(&kb.key4x, keys4_bitmasks);
  m_keys5x->GetState(&kb.key5x, keys5_bitmasks);

  return kb;
}
Example #2
0
GCPadStatus GCPad::GetInput() const
{
  const auto lock = GetStateLock();

  ControlState x, y, triggers[2];
  GCPadStatus pad = {};

  if (!(m_always_connected->GetValue() || IsDefaultDeviceConnected()))
  {
    pad.isConnected = false;
    return pad;
  }

  // buttons
  m_buttons->GetState(&pad.button, button_bitmasks);

  // set analog A/B analog to full or w/e, prolly not needed
  if (pad.button & PAD_BUTTON_A)
    pad.analogA = 0xFF;
  if (pad.button & PAD_BUTTON_B)
    pad.analogB = 0xFF;

  // dpad
  m_dpad->GetState(&pad.button, dpad_bitmasks);

  // sticks
  m_main_stick->GetState(&x, &y);
  pad.stickX =
      static_cast<u8>(GCPadStatus::MAIN_STICK_CENTER_X + (x * GCPadStatus::MAIN_STICK_RADIUS));
  pad.stickY =
      static_cast<u8>(GCPadStatus::MAIN_STICK_CENTER_Y + (y * GCPadStatus::MAIN_STICK_RADIUS));

  m_c_stick->GetState(&x, &y);
  pad.substickX =
      static_cast<u8>(GCPadStatus::C_STICK_CENTER_X + (x * GCPadStatus::C_STICK_RADIUS));
  pad.substickY =
      static_cast<u8>(GCPadStatus::C_STICK_CENTER_Y + (y * GCPadStatus::C_STICK_RADIUS));

  // triggers
  m_triggers->GetState(&pad.button, trigger_bitmasks, triggers);
  pad.triggerLeft = static_cast<u8>(triggers[0] * 0xFF);
  pad.triggerRight = static_cast<u8>(triggers[1] * 0xFF);

  return pad;
}
Example #3
0
bool GCPad::GetMicButton() const
{
  const auto lock = GetStateLock();
  return (0.0f != m_mic->controls.back()->control_ref->State());
}
Example #4
0
void GCPad::SetOutput(const ControlState strength)
{
  const auto lock = GetStateLock();
  m_rumble->controls[0]->control_ref->State(strength);
}