/* * Reads keyboard input and updates scene variables. * 'w' moves forward, 's' moves back * 'a' strafes left, 'd' strafes right * 'r' resets the view * 'f' Sets movement to free, 'p' sets movement to person */ void input_update () { float distance = 60.0f * getTimeStep(); static float walkTheta = 0; vect3_t old_position, boundingBox = {1,1,1}; VectorCopy(camera.position, old_position); // walk motion if (keys_down[SDLK_w] || keys_down[SDLK_s]) { walkTheta -= getTimeStep(); walkHeight = WALK_POSITION_SCALE*sin(walkTheta * WALK_TIME_SCALE); } // WASD movement if(keys_down[SDLK_w]) { camera_translateForward(-1 * distance); } if(keys_down[SDLK_s]) { camera_translateForward(distance); } if(keys_down[SDLK_a]) camera_translateStrafe(-1 * distance); if(keys_down[SDLK_d]) camera_translateStrafe(distance); if (world_testCollision(boundingBox)) VectorCopy(old_position, camera.position); if(keys_down[SDLK_z]) camera.position[_X] += 1; if(keys_down[SDLK_x]) camera.position[_X] -= 1; if(keys_down[SDLK_c]) camera.position[_Y] += 1; if(keys_down[SDLK_v]) camera.position[_Y] -= 1; if(keys_down[SDLK_b]) camera.position[_Z] += 1; if(keys_down[SDLK_n]) camera.position[_Z] -= 1; // r for reset if(keys_down[SDLK_r]){ reset_position(); } // Set movement to free or person if (keys_down[SDLK_f]) free_move = 1; else if (keys_down[SDLK_p]) free_move = 0; }
/* * input_update */ static void input_update() { //WASD //The input values are arbitrary if(keys_down[SDLK_w]) camera_translateForward(0.05); if(keys_down[SDLK_s]) camera_translateForward(-0.05); if(keys_down[SDLK_a]) camera_translateStrafe(0.05); if(keys_down[SDLK_d]) camera_translateStrafe(-0.05); //Reset, sometimes you can get pretty lost... if(keys_down[SDLK_r]) { VectorClear(camera.angles_deg); VectorClear(camera.angles_rad); VectorClear(camera.position); } }
/* * input_update */ static void input_update(int delta) { double movement_mag = 0.01; //This should be funny. movement_mag = movement_mag * delta; //WASD //The input values are arbitrary if(keys_down[SDLK_w]) camera_translateForward(movement_mag); if(keys_down[SDLK_s]) camera_translateForward(-movement_mag); if(keys_down[SDLK_a]) camera_translateStrafe(movement_mag); if(keys_down[SDLK_d]) camera_translateStrafe(-movement_mag); //Reset, sometimes you can get pretty lost... if(keys_down[SDLK_r]) { VectorClear(camera.angles_deg); VectorClear(camera.angles_rad); } }