shaders
This commit is contained in:
@@ -3,70 +3,64 @@
|
||||
#include "gameobject.h"
|
||||
#include "input.h"
|
||||
|
||||
|
||||
const float CAMERA_MINSPEED = 1.f;
|
||||
const float CAMERA_MAXSPEED = 300.f;
|
||||
const float CAMERA_ROTATESPEED = 6.f;
|
||||
|
||||
void cam_goto_object(struct mCamera *cam, struct mTransform *transform)
|
||||
{
|
||||
mfloat_t fwd[3] = { 0.f };
|
||||
vec3_subtract(cam->transform.position, transform->position,
|
||||
vec3_multiply_f(fwd, trans_forward(fwd, transform),
|
||||
10.f));
|
||||
void cam_goto_object(struct mCamera *cam, struct mTransform *transform) {
|
||||
mfloat_t fwd[3] = {0.f};
|
||||
vec3_subtract(cam->transform.position, transform->position,
|
||||
vec3_multiply_f(fwd, trans_forward(fwd, transform),
|
||||
10.f));
|
||||
}
|
||||
|
||||
void cam_inverse_goto(struct mCamera *cam, struct mTransform *transform)
|
||||
{
|
||||
mfloat_t fwd[3] = { 0.f };
|
||||
vec3_add(transform->position, cam->transform.position,
|
||||
vec3_multiply_f(fwd, trans_forward(fwd, &cam->transform),
|
||||
10.f));
|
||||
void cam_inverse_goto(struct mCamera *cam, struct mTransform *transform) {
|
||||
mfloat_t fwd[3] = {0.f};
|
||||
vec3_add(transform->position, cam->transform.position,
|
||||
vec3_multiply_f(fwd, trans_forward(fwd, &cam->transform),
|
||||
10.f));
|
||||
}
|
||||
|
||||
mfloat_t *getviewmatrix(mfloat_t view[16],
|
||||
const struct mCamera *const camera)
|
||||
{
|
||||
mfloat_t fwd[3] = { 0.f };
|
||||
mfloat_t look[3] = { 0.f };
|
||||
vec3_rotate_quat(fwd, FORWARD, camera->transform.rotation);
|
||||
vec3_add(look, camera->transform.position, fwd);
|
||||
mat4_look_at(view, camera->transform.position, look, UP);
|
||||
return view;
|
||||
/*return mat4_look_at(view, ncam.transform.position,
|
||||
vec3_add(look, ncam.transform.position,
|
||||
trans_forward(fwd, &ncam.transform)),
|
||||
UP); */
|
||||
const struct mCamera *const camera) {
|
||||
mfloat_t fwd[3] = {0.f};
|
||||
mfloat_t look[3] = {0.f};
|
||||
vec3_rotate_quat(fwd, FORWARD, camera->transform.rotation);
|
||||
vec3_add(look, camera->transform.position, fwd);
|
||||
mat4_look_at(view, camera->transform.position, look, UP);
|
||||
return view;
|
||||
/*return mat4_look_at(view, ncam.transform.position,
|
||||
vec3_add(look, ncam.transform.position,
|
||||
trans_forward(fwd, &ncam.transform)),
|
||||
UP); */
|
||||
}
|
||||
|
||||
void camera_2d_update(struct mCamera *camera, float deltaT)
|
||||
{
|
||||
static mfloat_t frame[3];
|
||||
vec3_zero(frame);
|
||||
if (action_down(GLFW_KEY_W))
|
||||
vec3_add(frame, frame, UP);
|
||||
if (action_down(GLFW_KEY_S))
|
||||
vec3_add(frame, frame, DOWN);
|
||||
if (action_down(GLFW_KEY_A))
|
||||
vec3_add(frame, frame, LEFT);
|
||||
if (action_down(GLFW_KEY_D))
|
||||
vec3_add(frame, frame, RIGHT);
|
||||
void camera_2d_update(struct mCamera *camera, float deltaT) {
|
||||
static mfloat_t frame[3];
|
||||
vec3_zero(frame);
|
||||
if (action_down(GLFW_KEY_W))
|
||||
vec3_add(frame, frame, UP);
|
||||
if (action_down(GLFW_KEY_S))
|
||||
vec3_add(frame, frame, DOWN);
|
||||
if (action_down(GLFW_KEY_A))
|
||||
vec3_add(frame, frame, LEFT);
|
||||
if (action_down(GLFW_KEY_D))
|
||||
vec3_add(frame, frame, RIGHT);
|
||||
|
||||
float speedMult = action_down(GLFW_KEY_LEFT_SHIFT) ? 2.f : 1.f;
|
||||
|
||||
if (!vec3_is_zero(frame)) {
|
||||
vec3_normalize(frame, frame);
|
||||
vec3_add(camera->transform.position, camera->transform.position,
|
||||
vec3_multiply_f(frame, frame,
|
||||
camera->speed * speedMult * deltaT));
|
||||
}
|
||||
float speedMult = action_down(GLFW_KEY_LEFT_SHIFT) ? 2.f : 1.f;
|
||||
|
||||
if (!vec3_is_zero(frame)) {
|
||||
vec3_normalize(frame, frame);
|
||||
vec3_add(camera->transform.position, camera->transform.position,
|
||||
vec3_multiply_f(frame, frame,
|
||||
camera->speed * speedMult * deltaT));
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
void camera_update(struct mCamera * camera, float mouseX, float mouseY,
|
||||
const uint8_t * keystate, int32_t mouseWheelY,
|
||||
float deltaTime)
|
||||
const uint8_t * keystate, int32_t mouseWheelY,
|
||||
float deltaTime)
|
||||
{
|
||||
// if (SDL_GetRelativeMouseMode()) vec3_zero(camera->frame_move);
|
||||
|
||||
@@ -74,43 +68,43 @@ void camera_update(struct mCamera * camera, float mouseX, float mouseY,
|
||||
vec3_zero(camera->frame_move);
|
||||
|
||||
if (currentKeystates[SDL_SCANCODE_W])
|
||||
vec3_add(camera->frame_move, camera->frame_move,
|
||||
trans_forward(holdvec, &camera->transform));
|
||||
vec3_add(camera->frame_move, camera->frame_move,
|
||||
trans_forward(holdvec, &camera->transform));
|
||||
|
||||
if (currentKeystates[SDL_SCANCODE_S])
|
||||
vec3_subtract(camera->frame_move, camera->frame_move,
|
||||
trans_forward(holdvec, &camera->transform));
|
||||
vec3_subtract(camera->frame_move, camera->frame_move,
|
||||
trans_forward(holdvec, &camera->transform));
|
||||
|
||||
if (currentKeystates[SDL_SCANCODE_A])
|
||||
vec3_subtract(camera->frame_move, camera->frame_move,
|
||||
trans_right(holdvec, &camera->transform));
|
||||
vec3_subtract(camera->frame_move, camera->frame_move,
|
||||
trans_right(holdvec, &camera->transform));
|
||||
|
||||
if (currentKeystates[SDL_SCANCODE_D])
|
||||
vec3_add(camera->frame_move, camera->frame_move,
|
||||
trans_right(holdvec, &camera->transform));
|
||||
vec3_add(camera->frame_move, camera->frame_move,
|
||||
trans_right(holdvec, &camera->transform));
|
||||
|
||||
if (currentKeystates[SDL_SCANCODE_E])
|
||||
vec3_add(camera->frame_move, camera->frame_move,
|
||||
trans_up(holdvec, &camera->transform));
|
||||
vec3_add(camera->frame_move, camera->frame_move,
|
||||
trans_up(holdvec, &camera->transform));
|
||||
|
||||
if (currentKeystates[SDL_SCANCODE_Q])
|
||||
vec3_subtract(camera->frame_move, camera->frame_move,
|
||||
trans_up(holdvec, &camera->transform));
|
||||
vec3_subtract(camera->frame_move, camera->frame_move,
|
||||
trans_up(holdvec, &camera->transform));
|
||||
|
||||
camera->speedMult = currentKeystates[SDL_SCANCODE_LSHIFT] ? 2.f : 1.f;
|
||||
|
||||
|
||||
if (!vec3_is_zero(camera->frame_move)) {
|
||||
vec3_normalize(camera->frame_move, camera->frame_move);
|
||||
vec3_add(camera->transform.position, camera->transform.position,
|
||||
vec3_multiply_f(camera->frame_move, camera->frame_move,
|
||||
camera->speed * camera->speedMult *
|
||||
deltaTime));
|
||||
vec3_normalize(camera->frame_move, camera->frame_move);
|
||||
vec3_add(camera->transform.position, camera->transform.position,
|
||||
vec3_multiply_f(camera->frame_move, camera->frame_move,
|
||||
camera->speed * camera->speedMult *
|
||||
deltaTime));
|
||||
}
|
||||
// Adjust speed based on mouse wheel
|
||||
camera->speed =
|
||||
clampf(camera->speed + mouseWheelY, CAMERA_MINSPEED,
|
||||
CAMERA_MAXSPEED);
|
||||
clampf(camera->speed + mouseWheelY, CAMERA_MINSPEED,
|
||||
CAMERA_MAXSPEED);
|
||||
|
||||
|
||||
// TODO: Handle this as additive quaternions
|
||||
@@ -120,9 +114,9 @@ void camera_update(struct mCamera * camera, float mouseX, float mouseY,
|
||||
|
||||
|
||||
if (camera->pitch > 89.f)
|
||||
camera->pitch = 89.f;
|
||||
camera->pitch = 89.f;
|
||||
if (camera->pitch < -89.f)
|
||||
camera->pitch = -89.f;
|
||||
camera->pitch = -89.f;
|
||||
|
||||
mfloat_t qyaw[4] = {0.f};
|
||||
mfloat_t qpitch[4] = {0.f};
|
||||
|
||||
Reference in New Issue
Block a user