Пример #1
0
void Control(float movevel,float mousevel,bool mi)
{
	if(mi)
	{
		int MidX=320;
		int MidY=240;
		SDL_ShowCursor(SDL_DISABLE);
		int tmpx,tmpy;
		SDL_GetMouseState(&tmpx,&tmpy);
		camYaw+=mousevel*(MidX-tmpx);
		camPitch+=mousevel*(MidY-tmpy);
		lockCamera();
		SDL_WarpMouse(MidX,MidY);
		Uint8* state=SDL_GetKeyState(NULL);
		if(state[SDLK_w])
		{
			if(camPitch!=90 && camPitch!=-90)
				moveCamera(movevel,0.0);
			moveCameraUp(movevel,0.0);
		}else if(state[SDLK_s])
		{
			if(camPitch!=90 && camPitch!=-90)
				moveCamera(movevel,180.0);
			moveCameraUp(movevel,180.0);
		}
		if(state[SDLK_a])
			moveCamera(movevel,90.0);
		else if(state[SDLK_d])
			moveCamera(movevel,270);
	}
	glRotatef(-camPitch,1.0,0.0,0.0);
	glRotatef(-camYaw,0.0,1.0,0.0);
}
void EG_FirstPersonPovCamera::Control(int mid_x, int mid_y)
{
	if(m_mouseIn)
	{
		int MidX=mid_x;
		int MidY=mid_y;
		SDL_ShowCursor(SDL_DISABLE);

		int tmpx,tmpy;
		SDL_GetMouseState(&tmpx,&tmpy);

		m_yawDegrees += CAMERA_ROTATION_SPEED*(MidX-tmpx);
		m_pitchDegrees += CAMERA_ROTATION_SPEED*(MidY-tmpy);


		lockCamera();
		SDL_WarpMouse(MidX,MidY);
		Uint8* state=SDL_GetKeyState(NULL);
		ismoved=false;
		if(state[SDLK_w])
		{
			ismoved=true;
			if(m_pitchDegrees!=90 && m_pitchDegrees!=-90)
				moveCamera(0.0);
			moveCameraUp(0.0);
		}else if(state[SDLK_s])
		{
			ismoved=true;
			if(m_pitchDegrees!=90 && m_pitchDegrees!=-90)
				moveCamera(180.0);
			moveCameraUp(180.0);
		}
		if(state[SDLK_a])
		{
			ismoved=true;
			moveCamera(90.0);
		}
		else if(state[SDLK_d])
		{
			ismoved=true;
			moveCamera(270);
		}
	}

}
Пример #3
0
void Navigation::moveCameraDown(float length) {
    moveCameraUp( -length );
}