static void playerDerivativeFn(const float* state, float* derivs) {
    // state[0] = x.x
    // state[1] = x.y
    // state[2] = o
    // state[3] = v.x
    // state[4] = v.y
    // state[5] = w

    // derivs[0] = v.x
    // derivs[1] = v.y
    // derivs[2] = w
    // derivs[3] = a.x
    // derivs[4] = a.y
    // derivs[5] = t

    derivs[0] = state[3];
    derivs[1] = state[4];
    derivs[2] = state[5];
    
    derivs[3] = -state[3] * 5.0f;
    derivs[4] = -state[4] * 5.0f;
    derivs[5] = -state[5] * 5.0f;

    if (keyIsPressed(ArrowLeft )) derivs[5] += 10.0f;
    if (keyIsPressed(ArrowRight)) derivs[5] -= 10.0f;

    if (keyIsPressed(ArrowUp)) {
        vec2 f;

        derivs[3] += cosf(state[2]) * 10.0f;
        derivs[4] += sinf(state[2]) * 10.0f;
    }
}
Example #2
0
bool InputManager::setKeyPressed(unsigned char key)
{
	if (keyIsPressed(key)) return true;
	pressed_keys[num_pressed_keys] = key;
	num_pressed_keys++;
	return true;
}
Example #3
0
	bool KeyboardInput::keyWasPressed(KeyboardKey keyID, KeyboardKey modID, KeyboardKey modID2)
	{
		if (keyIsPressed(keyID, modID, modID2) == true && keyWasDown(keyID, modID, modID2) == false)
		{
			return true;
		}
		return false;
	}
Example #4
0
	bool KeyboardInput::keyWasReleased(KeyboardKey keyID)
	{
		if (keyIsPressed(keyID) == false && keyWasDown(keyID) == true)
		{
			return true;
		}
		return false;
	}
Example #5
0
    void processCameraInput(SpectatorCamera* camera, float dt)
    {
        if (uiState != STATE_DEFAULT)
        {
            if (mouseIsCaptured()) mouseRelease();
            return;
        }

        bool LCTRL_Down_LALT_Released     = keyIsPressed  (SDL_SCANCODE_LCTRL) && keyWasReleased(SDL_SCANCODE_LALT );
        bool LALT_Down_LCTRL_Released     = keyIsPressed  (SDL_SCANCODE_LALT ) && keyWasReleased(SDL_SCANCODE_LCTRL);
        bool LALT_Released_LCTRL_Released = keyWasReleased(SDL_SCANCODE_LALT ) && keyWasReleased(SDL_SCANCODE_LCTRL);

        bool actionReleaseMouse = LCTRL_Down_LALT_Released || LALT_Down_LCTRL_Released || LALT_Released_LCTRL_Released;

        if (mouseWasPressed(SDL_BUTTON_LEFT))
        {
            mouseCapture();
        }
        else if (mouseIsCaptured() && actionReleaseMouse)
        {
            mouseRelease();
        }
        else if (mouseIsCaptured())
        {
            float   dx = 0.0f, dy = 0.0f, dz = 0.0f;
            float   heading = 0.0f;
            float   pitch   = 0.0f;

            dx += ui::keyIsPressed(SDL_SCANCODE_D)?1.0f:0.0f;
            dx -= ui::keyIsPressed(SDL_SCANCODE_A)?1.0f:0.0f;
            dy += ui::keyIsPressed(SDL_SCANCODE_E)?1.0f:0.0f;
            dy -= ui::keyIsPressed(SDL_SCANCODE_Q)?1.0f:0.0f;
            dz += ui::keyIsPressed(SDL_SCANCODE_W)?1.0f:0.0f;
            dz -= ui::keyIsPressed(SDL_SCANCODE_S)?1.0f:0.0f;

            pitch   += ui::keyIsPressed(SDL_SCANCODE_KP_8)?1.50f:0.0f;
            pitch   -= ui::keyIsPressed(SDL_SCANCODE_KP_5)?1.50f:0.0f;
            heading += ui::keyIsPressed(SDL_SCANCODE_KP_4)?1.50f:0.0f;
            heading -= ui::keyIsPressed(SDL_SCANCODE_KP_6)?1.50f:0.0f;

            camera->rotateSmoothly(heading * FLT_DEG_TO_RAD_SCALE, pitch * FLT_DEG_TO_RAD_SCALE);
            camera->rotateSmoothly((float)-ui::deltaX * FLT_DEG_TO_RAD_SCALE, (float)-ui::deltaY * FLT_DEG_TO_RAD_SCALE);
            camera->updatePosition(dx, dy, dz, dt);
        }
    }
Example #6
0
EventHandlerResult TopsyTurvy::onKeyswitchEvent(Key &mapped_key, byte row, byte col, uint8_t key_state) {

  if (mapped_key == Key_LeftShift ||
      mapped_key == Key_RightShift) {
    is_shifted_ = keyIsPressed(key_state);
    if (is_active_)
      return EventHandlerResult::EVENT_CONSUMED;
  }

  if (mapped_key < ranges::TT_FIRST || mapped_key > ranges::TT_LAST) {
    if (keyToggledOn(key_state) && (mapped_key < Key_LeftControl || mapped_key > Key_RightGui)) {
      last_pressed_position_ = row * COLS + col;
    }

    return EventHandlerResult::OK;
  }

  is_active_ = keyIsPressed(key_state);

  if (keyToggledOn(key_state)) {
    last_pressed_position_ = row * COLS + col;
  } else {
    if (last_pressed_position_ != row * COLS + col) {
      return EventHandlerResult::EVENT_CONSUMED;
    }
  }

  mapped_key.raw = mapped_key.raw - ranges::TT_FIRST;

  // invert the shift state
  if (!is_shifted_) {
    mapped_key.flags |= SHIFT_HELD;
    return EventHandlerResult::OK;
  }

  if (keyIsPressed(key_state)) {
    hid::releaseKey(Key_LeftShift);
    hid::releaseKey(Key_RightShift);

    return EventHandlerResult::OK;
  }

  return EventHandlerResult::EVENT_CONSUMED;
}