Example #1
0
void RaycastCar::updateVehicle( btScalar step )
{
    m_currentVehicleSpeedKmHour = btScalar(3.6f) * getRigidBody()->getLinearVelocity().length();
    const btTransform & chassisTrans = getChassisWorldTransform();

    btVector3 forwardW(chassisTrans.getBasis()[0][m_indexForwardAxis],
                       chassisTrans.getBasis()[1][m_indexForwardAxis],
                       chassisTrans.getBasis()[2][m_indexForwardAxis]);

    if (forwardW.dot(getRigidBody()->getLinearVelocity()) < btScalar(0.0f))
        m_currentVehicleSpeedKmHour *= btScalar(-1.0f);

    for (int i = 0; i < getNumWheels(); i++)
    {
        updateWheelTransform(i, false);
        btScalar depth;
        depth = rayCast(m_wheelInfo[i]);
    }

    update_suspension(step);
    update_engine(step);
    update_forces(step);
    apply_impulses(step);
}
Example #2
0
int main(int argc, char *argv[])
{
  int time;
  char method[SCREEN_UPDATE_STR_LEN];
  char fps_text[16];
  
  if (argc > 1) {
    if (strstr(argv[1], "help")) {
      printf("Type \"kwestkingdom\" to play!\n");
      exit(0);
    }
  }

  if (!init_kwestkingdom()) {
    return 1;
  }

  init_engine();

  /**
   * Reset the timers just before the game begins.
   */
  reset_timer();

  /**
   * BEGIN MAIN LOOP
   */
  while (!quitting) {

    while (get_ticks() == 0) {
      rest(1);
    }

    while (get_ticks() > 0) {

      time = get_ticks();

      /**
       * UPDATE
       */
      update_engine();

      decrease_timer();

      if (time <= get_ticks()) {
        break;
      }

    }

    /**
     * DRAW
     */
    paint_engine(grab_canvas());

    /**
     * Show FPS
     */
    sprintf(fps_text, "FPS %d", get_fps());
    show_text(grab_canvas(), fps_text, 10, 10, WHITE, BLACK);

    /**
     * Show the method of screen updating.
     */
    find_screen_update_method(method);

    show_text(
      grab_canvas(),
      method,
      grab_tile_size() / 5, /* x */
      grab_canvas_height() - (grab_tile_size() / 2), /* y */
      WHITE,
      BLACK
    );

    /**
     * Show all of the new screen changes
     */
    refresh_screen();

    mark_frame_complete();
  }
  /**
   * END MAIN LOOP
   */

  /**
   * Cleanup
   */
  stop_engine();
  stop_screen();
  stop_resources();
  
  check_memory();
  
  return 0;
}