/**
 * Copyright (c) 2021 Dominic Msters
 * 
 * This software is released under the MIT License.
 * https://opensource.org/licenses/MIT
 */

#include "camera.h"

void cameraLookAt(camera_t *camera,
  float x, float y, float z,
  float targetX, float targetY, float targetZ
) {
  glm_mat4_identity(camera->view);
  glm_lookat(
    (vec3){ x, y, z },
    (vec3){ targetX, targetY, targetZ },
    (vec3){ 0,1,0 },
    camera->view
  );
}

void cameraLook(camera_t *camera,
  float x, float y, float z,
  float pitch, float yaw, float roll
) {
  glm_mat4_identity(camera->view);
  glm_look(
    (vec3){ x, y, z },
    (vec3){ pitch, yaw, roll },
    (vec3){ 0,1,0 },
    camera->view
  );
}

void cameraPerspective(camera_t *camera,
  float fov, float aspect, float near, float far
) {
  glm_mat4_identity(camera->projection);
  glm_perspective(mathDeg2Rad(fov), aspect, near, far, camera->projection);
}

void cameraOrtho(camera_t *camera,
  float left, float right, float bottom, float top, float near, float far
) {
  glm_mat4_identity(camera->projection);
  glm_ortho(left, right, bottom, top, near, far, camera->projection);
}