void Camera::FollowCharacter(DirectX::XMFLOAT3 p_playerPos)
{
	// Lock shadows on the player.
	DirectX::XMFLOAT3 playerPosition = p_playerPos;
	DirectX::XMFLOAT3 position = DirectX::XMFLOAT3(playerPosition.x + 25.0f, playerPosition.y + 100.0f, playerPosition.z + 50.0f);
	DirectX::XMFLOAT3 target = playerPosition;

	UpdatePosition(position);
	UpdateTarget(target);
	UpdateViewMatrix();
	UpdateProjectionMatrix(true);
	GraphicsEngine::SetLightViewAndProjection(GetViewMatrix(), GetProjectionMatrix());

	// Visibility view projection..
	playerPosition = p_playerPos;
	position = DirectX::XMFLOAT3(playerPosition.x, playerPosition.y + 30.0f, playerPosition.z);
	target = playerPosition;

	UpdatePosition(position);
	UpdateTarget(target);
	UpdateViewMatrix();
	GraphicsEngine::SetViewPolygonMatrix(GetViewMatrix());
	

	// Lock camera on the player.
	playerPosition = p_playerPos;
	position = DirectX::XMFLOAT3(playerPosition.x, playerPosition.y + 30.0f, playerPosition.z - 15.0f);
	target = playerPosition;

	SetOutliningRayPosition(position);
	SetOutliningRayTarget(target);

	if (GLOBAL::GetInstance().CAMERA_MOVING)
	{
		MovingCamera(playerPosition);
	}
	else
	{
		UpdatePosition(position);
		UpdateTarget(target);
		UpdateViewMatrix();
		UpdateProjectionMatrix(false);
		GraphicsEngine::SetViewAndProjection(GetViewMatrix(), GetProjectionMatrix());
		m_oldPosition = position;
	}	

	GraphicsEngine::UpdateVisibilityPolygon(Point(playerPosition.x, playerPosition.z), (float)GLOBAL::GetInstance().GetDeltaTime());
}
int DrawGLScene(GLvoid)									// Here's Where We Do All The Drawing
{

	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);	// Clear The Screen And The Depth Buffer
	glLoadIdentity();									// Reset The View
	/******new motion variables****/
	xpos *= 0.8f;
	zpos *= 0.8f;
	xtrans2 += xpos/10;
	ztrans2 += zpos/10;
	// tu wczesniej byly deklaracje - czy to duza zmiana?
	xtrans = -xtrans2;
	ztrans = -ztrans2;
	zprot*=0.9;
	_heading += zprot;
	heading = mouse_xpos_cursor + _heading;
	yrot = heading;
	//ytrans = ytrans-walkbias-0.35f;
	GLfloat sceneroty = 360.0f - yrot;	
		
	glRotatef(lookupdown,1.0f,0,0);
	glRotated(mouse_ypos_cursor,1.0f,0,0);
	glRotatef(sceneroty,0,1.0f,0);		
	
	glTranslatef(xtrans,ytrans,ztrans);		
	
	SetLights();

	/****end of new variables****/
	DrawGLMap( current );

	glBegin(GL_TRIANGLES);
		glNormal3f( 0, 1, 0 );
		glVertex3f(x_light,y_light,z_light);
		glVertex3f(x_light,y_light,z_light-0.05f);
		glVertex3f( x_light, y_light-0.05f, z_light-0.05f);
	glEnd();
	
				// dzwieki ruchu gracza - w jakim miejscu?
				MovingCamera();
	//gluCylinder(quadratic,0.2f,0.2f,3.0f,32,32);	// Draw Our Cylinder

	return TRUE;										// Everything Went OK
}