示例#1
0
	Camera::Camera(const CameraData& cameraData)
		: m_pos(cameraData.m_pos), m_direction(cameraData.m_direction), m_up(cameraData.m_up),
		  m_ratio(cameraData.m_ratio), m_fov(cameraData.m_fov), m_zNear(cameraData.m_znear),
		  m_zFar(cameraData.m_zfar), m_mousePos(cameraData.m_mouse_pos)
	{
		m_strafeDirection = glm::cross(m_direction, m_up);
		UpdateViewProjection();
	}
示例#2
0
 void Camera::Update() const
 {
     if (isDirty_)
     {
         isDirty_ = false;
         UpdateProjection();
         UpdateViewProjection();
         signalUpdated_->Run();
     }
 }
示例#3
0
	void Camera::mouseUpdate(const glm::vec2& position)
	{
		glm::vec2 delta = (m_mousePos - position) / ROTATION_SPEED;

		if (glm::length(delta) < 0.075f)
		{
			m_strafeDirection = glm::cross(m_direction, m_up);
			glm::mat4 rotation = glm::rotate(delta.x, m_up) *
				glm::rotate(delta.y, m_strafeDirection);
			m_direction = glm::mat3(rotation) * m_direction;
			UpdateViewProjection();
		}

		m_mousePos = position;
	}
示例#4
0
	void Camera::moveDown()
	{
		m_pos -= MOVEMENT_SPEED * m_up;
		UpdateViewProjection();
	}
示例#5
0
	void Camera::strafeRight()
	{
		m_pos += MOVEMENT_SPEED * m_strafeDirection;
		UpdateViewProjection();
	}
示例#6
0
	void Camera::moveBackward()
	{
		m_pos -= MOVEMENT_SPEED * m_direction;
		UpdateViewProjection();
	}
示例#7
0
void RendererD3D::SetProjectionMatrix(const Matrix4x4& projection)
{
    mProjectionMatrix = projection;
    UpdateViewProjection();
}
示例#8
0
void RendererD3D::SetViewMatrix(const Matrix4x4& view)
{
    mViewMatrix = view;
    UpdateViewProjection();
}