// Copyright 2024 SquareBlock Inc. All Rights Reserved.
// Author: tianlei.richard@qq.com (tianlei.richard)

#include "common.h"

class Camera {
public:
  explicit Camera(const Vector3d &up);
  explicit Camera(const Vector3d &up, const float camera_speed);

public:
  TransformMatrix get_view_transform() const;

public:
  void move(const Point3d &offset);
  void set_gaze(const Vector3d &gaze);

private:
  Point3d position_;
  Vector3d gaze_;
  Vector3d up_;

  float camera_speed_;
};
