コード例 #1
0
ファイル: cCamera.cpp プロジェクト: dhuartel/OpenGLLast
void cCamera::Update(cInput *Input)
{
	int mx,my;
	int middleX,middleY;
	float angle;

	Input->GetMousePosition(&mx,&my);

	// Move the camera's view by the mouse
	middleX = width  >> 1;
	middleY = height >> 1;

	if(mx!=middleX)
	{
		angle = ((float)(middleX - mx)) / 50.0f;
		RotateY(angle);
	}
	if(my!=middleY)
	{
		angle = ((float)(middleY - my)) / 50.0f;
		RotateX(angle);
	}

	if(Input->KeyIsDown(GLUT_KEY_UP))		MoveForwards(-speed);				
	if(Input->KeyIsDown(GLUT_KEY_DOWN))		MoveForwards( speed);
	if(Input->KeyIsDown(GLUT_KEY_LEFT))		StrafeRight(-speed);
	if(Input->KeyIsDown(GLUT_KEY_RIGHT))	StrafeRight( speed);
}
コード例 #2
0
void cPlayer::Update(unsigned char keys[], int mouseX, int mouseY, int *map)
{
	this->map = map;
	if (keys['w'])		MoveForwards(-speed);
	if (keys['s'])		MoveForwards(speed);
	if (keys['a'])		StrafeRight(-speed);
	if (keys['d'])		StrafeRight(speed);
	if (keys[' '])		Jump();
}
コード例 #3
0
void cCamera::Update(bool keys[],int mouseX,int mouseY, object *plane)
{
	float angle;
	float alfa;
	Map = plane;
	if(mouseX!=middleX)
	{
		angle = (middleX - mouseX) / 50.0f;
		RotateY(angle);
	}
	if(mouseY!=middleY)
	{
		angle = (middleY - mouseY) / 50.0f;
		RotateX(angle);
	}

	if (keys['w'])		MoveForwards(-speed);
	if (keys['s'])		MoveForwards(speed);
	if (keys['a'])		StrafeRight(-speed);
	if (keys['d'])		StrafeRight(speed);
	if (keys[' '])		Jump();


	// JUMP & GRAVITY
	if (jumping)
	{
		jump_alfa += JUMP_STEP;

		if (jump_alfa == 180)
		{
			jumping = false;
			Position.y = jump_y;
		}
		else
		{
			alfa = ((float)jump_alfa) * 0.017453f;
			Position.y = jump_y + (int)(((float)JUMP_HEIGHT) * sin(alfa));

			if (jump_alfa > 90)
			{
				//Over floor?
				jumping = !CollidesMap(GetCollider(), Map);
			}
		}
	}
	else
	{
		//Over floor?
		if (!CollidesMap(GetCollider(), Map))
			Position.y -= (2 * speed);
	}


}
コード例 #4
0
void PlayerCamera::UpdateCamera(float inTimeDelta)
{

	D3DXMatrixRotationY(&tmpMat, (_pInput->_mouseState).lX / 300.0f);
	D3DXVec3TransformCoord(&_right, &_right, &tmpMat);
	D3DXVec3TransformCoord(&_look3, &_look3, &tmpMat);

	D3DXMatrixRotationAxis(&tmpMat, &_right, (_pInput->_mouseState).lY / 300.0f);
	D3DXVec3TransformCoord(&_up, &_up, &tmpMat);
	D3DXVec3TransformCoord(&_look3, &_look3, &tmpMat);


	if( _pInput->IsWPressed() )
	{
		MoveForwards(inTimeDelta);
	}

	if( _pInput->IsSPressed() )
	{
		MoveBackwards(inTimeDelta);
	}

	if( _pInput->IsAPressed() )
	{
		StrafeLeft(inTimeDelta);
	}

	if( _pInput->IsDPressed() )
	{
		StrafeRight(inTimeDelta);
	}

	_position4.x = _position3.x;
	_position4.y = _position3.y;
	_position4.z = _position3.z;
	_position4.w = 1.0f;

	_look4.x = _look3.x;
	_look4.y = _look3.y;
	_look4.z = _look3.z;
	_look4.w = 1.0f;

	UpdateViewMatrix();

	D3DXMatrixMultiply(&_viewProjectionMatrix , &_viewMatrix, &_projectionMatrix);
}
コード例 #5
0
/*!
	Move in the backward direction.
 */
void Camera::MoveBackwards	 ( GLfloat Distance )
{
    MoveForwards( -Distance );
}