void Camera::Update(float t){ if (m_Input->IsPressed(INPUT_ROTATELEFT))m_CameraRotation.y -= (m_CameraSpeed * t) / 2; if (m_Input->IsPressed(INPUT_ROTATERIGHT))m_CameraRotation.y += (m_CameraSpeed * t) / 2; // MOVE XMFLOAT3 moveFloat = XMFLOAT3{ 0.0f,0.0f,0.0f }; if (m_Input->IsPressed(INPUT_UP))moveFloat.z = 1.0f; if (m_Input->IsPressed(INPUT_DOWN))moveFloat.z = -1.0f; if (m_Input->IsPressed(INPUT_RIGHT))moveFloat.x = 1.0f; if (m_Input->IsPressed(INPUT_LEFT))moveFloat.x = -1.0f; XMVECTOR moveVector = XMLoadFloat3(&moveFloat); XMVector3Normalize(moveVector); moveVector *= t * m_CameraSpeed; Move(moveVector); // END MOVE XMMATRIX cameraScreenMatrix = CreateCameraMatrix() * CreateScreenMatrix(); XMStoreFloat4x4(&m_CameraScreenMatrix, cameraScreenMatrix); m_PrevMousePosition = m_MousePosition; }
void Camera::tick(){ Matrix ViewMatrix = CreateCameraMatrix(position, lookat, orientation); glUniformMatrix4fv(matrixUniformLocation, 1, GL_FALSE, ViewMatrix.m); }