Esempio n. 1
0
/*
 * 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;
}
Esempio n. 2
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);
	}
}
Esempio n. 3
0
/*
 * 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);
	}
}