Ejemplo n.º 1
0
/////////////////////////////////////
/////////PRIVATE FUNCTIONS///////////
/////////////////////////////////////
void GLCamera::initialize(
	const int width, const int height,
	const int x, const int y,
	const float near, const float far,
	const float FOV,
	const  glm::vec3 camPos,
	const  glm::vec3 target,
	const glm::vec3 up)
{
	m_CamPos = camPos;
	m_Target = target;
	m_up = up;

	m_Viewport.X = x;
	m_Viewport.Y = y;
	m_Viewport.WIDTH = width;
	m_Viewport.HEIGHT = height;

	m_zNear = near;
	m_zFar = far;
	m_FOV = FOV;

	m_dist = glm::length(camPos - target);
	m_roll = 0.0f;

	m_x_offset = 0;
	m_y_offset = 0;

	updateView();
	updateProj();
	
	std::cout << this;

	m_isInitialized = true;
}
Ejemplo n.º 2
0
void Cam::getProj(float p_fov, float p_aspect,
             Mat4F& io_proj) {
    m_fov = p_fov;
    m_aspect = p_aspect;
    
    updateProj();
    io_proj = m_proj;
}
void CameraComponent::onUpdate(float delta)
{
	//Event_GetWindowResolution windowResolution;
	//SEND_EVENT(&windowResolution);
	//// Calculate split screen attribute
	//float aspectRatio = windowResolution.getAspectRatio();

	// Update rotation
	while(itrPlayer.hasNext())
	{
		AttributePtr<Attribute_Player> ptr_player = itrPlayer.getNext();

		AttributePtr<Attribute_Health> ptr_health = ptr_player->ptr_health;
		AttributePtr<Attribute_Input> ptr_input = ptr_player->ptr_input;
		AttributePtr<Attribute_Camera> ptr_camera = ptr_player->ptr_camera;
		if(ptr_health->health <= 0)
		{
			//camera->aspectRatio += delta*100;

			//updateProj(camera);
		}
		else
		{
			yaw(ptr_input->rotation.x, ptr_camera);
			pitch(ptr_input->rotation.y, ptr_camera);
		}
		
		//Entity* entity = itrInput.owner();
		//if(entity->hasAttribute(ATTRIBUTE_CAMERA))
		//{
			//std::vector<Attribute_Camera*> cameras = itrCamera.getMultiple(entity->getAttributes(ATTRIBUTE_CAMERA));
			//for(int i=0; i<(int)cameras.size(); i++)
			//{
				//Attribute_Camera* camera = itrCamera.at(player->ptr_camera);//cameras.at(i);
				//yaw(input->rotation.x, camera);
				//pitch(input->rotation.y, camera);
			//}
		//}
	}

	// Recalculate view
	while(itrCamera.hasNext())
	{
		AttributePtr<Attribute_Camera> ptr_camera = itrCamera.getNext();
		AttributePtr<Attribute_Spatial> ptr_spatial = ptr_camera->ptr_spatial;
		updateView(ptr_camera);
		updateProj(ptr_camera);
	}
}
void updateAspectRatio()
{
	// Recalculate view and 
	// resize aspect ratios of all cameras 
	while(itrSplitScreen.hasNext())
	{
		AttributePtr<Attribute_SplitScreen> ptr_splitScreen = itrSplitScreen.getNext();
		AttributePtr<Attribute_Camera> ptr_camera = ptr_splitScreen->ptr_camera;
		AttributePtr<Attribute_Spatial> ptr_spatial = ptr_camera->ptr_spatial;
		AttributePtr<Attribute_Position> ptr_position = ptr_spatial->ptr_position;

		ptr_camera->aspectRatio = ptr_splitScreen->getAspectRatio();
		updateProj(ptr_camera);
		updateView(ptr_camera);
	}
}
Ejemplo n.º 5
0
void GLCamera::setParameter(const CameraParameter& param)
{
	m_CamPos = param.cam_pos;
	m_Target = param.tar_pos;
	m_up = glm::vec3(0, 1, 0);
	m_Viewport.WIDTH = param.screen_width;
	m_Viewport.HEIGHT = param.screen_height;
	m_Viewport.X = 0;
	m_Viewport.Y = 0;
	
	m_zNear = param.near_z;
	m_zFar = param.far_z;
	m_FOV = param.fov_y;
	m_roll = param.roll;

	m_x_offset = param.offset_x;
	m_y_offset = param.offset_y;

	updateProj();
	updateView();
}
Ejemplo n.º 6
0
void GLCamera::zoomOut()
{
	m_FOV = glm::max(0.1f, m_FOV - (glm::pi<float>() / 100)); updateProj();
}
Ejemplo n.º 7
0
void GLCamera::zoomIn()
{
	m_FOV = glm::min(glm::pi<float>() / 2, m_FOV + (glm::pi<float>() / 100)); updateProj();
}
Ejemplo n.º 8
0
void GLCamera::setFOV(const float fov)														{ m_FOV = fov; updateProj(); }
Ejemplo n.º 9
0
void GLCamera::setNear(const float f)														{ m_zNear = f; updateProj(); }
Ejemplo n.º 10
0
void GLCamera::setViewPort(const int x, const int y, const int width, const int height)		{ m_Viewport.X = x; m_Viewport.Y = y; m_Viewport.WIDTH = width; m_Viewport.HEIGHT = height; updateProj(); }
Ejemplo n.º 11
0
void GLCamera::resize(const int width, const int height)
{
	m_Viewport.WIDTH = width;
	m_Viewport.HEIGHT = height;
	updateProj();
}