You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
31 lines
629 B
31 lines
629 B
#pragma once
|
|
|
|
#include <glm/mat4x4.hpp>
|
|
#include <glm/gtc/quaternion.hpp>
|
|
#include <vulkan/vulkan_core.h>
|
|
#include "input.hpp"
|
|
|
|
class Camera : private MouseListener {
|
|
private:
|
|
glm::vec3 position {0, 0, 5};
|
|
|
|
float velocityMultiplier = 0;
|
|
|
|
float phi = 0;
|
|
float theta = 0;
|
|
|
|
float fov = 45;
|
|
float near = 0.1;
|
|
float far = 100;
|
|
|
|
VkExtent2D &extent;
|
|
public:
|
|
explicit Camera(VkExtent2D &extent);
|
|
void update(float dt);
|
|
glm::mat4 view() const;
|
|
glm::mat4 projection() const;
|
|
glm::vec2 viewport() const;
|
|
glm::vec3 localToWorld(const glm::vec3 &direction) const;
|
|
protected:
|
|
void mouseMoved(const glm::vec2 &delta) override;
|
|
}; |