added floating camera
This commit is contained in:
@@ -18,7 +18,9 @@ add_executable(${PROJECT_NAME} src/main.cpp
|
|||||||
src/camera/Camera.cpp
|
src/camera/Camera.cpp
|
||||||
src/camera/FPS_Camera.cpp
|
src/camera/FPS_Camera.cpp
|
||||||
src/glPipeline/IndexBuffer.cpp
|
src/glPipeline/IndexBuffer.cpp
|
||||||
src/glPipeline/VertexBuffer.cpp)
|
src/glPipeline/VertexBuffer.cpp
|
||||||
|
include/camera/Floating_Camera.hpp
|
||||||
|
src/camera/Floating_Camera.cpp)
|
||||||
|
|
||||||
target_compile_definitions(${PROJECT_NAME} PRIVATE $<$<CONFIG:Debug>:_DEBUG>)
|
target_compile_definitions(${PROJECT_NAME} PRIVATE $<$<CONFIG:Debug>:_DEBUG>)
|
||||||
|
|
||||||
|
|||||||
12
include/camera/Floating_Camera.hpp
Normal file
12
include/camera/Floating_Camera.hpp
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "FPS_Camera.hpp"
|
||||||
|
|
||||||
|
class FloatingCamera : public FPSCamera {
|
||||||
|
private:
|
||||||
|
|
||||||
|
public:
|
||||||
|
FloatingCamera(float fov, float width, float height);
|
||||||
|
|
||||||
|
void moveUp(float amount);
|
||||||
|
};
|
||||||
8
src/camera/Floating_Camera.cpp
Normal file
8
src/camera/Floating_Camera.cpp
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
#include "camera/Floating_Camera.hpp"
|
||||||
|
|
||||||
|
FloatingCamera::FloatingCamera(float fov, float width, float height) : FPSCamera(fov, width, height) {
|
||||||
|
}
|
||||||
|
|
||||||
|
void FloatingCamera::moveUp(float amount) {
|
||||||
|
translate(up * amount);
|
||||||
|
}
|
||||||
17
src/main.cpp
17
src/main.cpp
@@ -7,9 +7,8 @@
|
|||||||
#include "defines.hpp"
|
#include "defines.hpp"
|
||||||
#include "Shader.hpp"
|
#include "Shader.hpp"
|
||||||
#define STB_IMAGE_IMPLEMENTATION
|
#define STB_IMAGE_IMPLEMENTATION
|
||||||
#include "camera/Camera.hpp"
|
|
||||||
#include "stb_image.hpp"
|
#include "stb_image.hpp"
|
||||||
#include "camera/FPS_Camera.hpp"
|
#include "camera/Floating_Camera.hpp"
|
||||||
#include "glm/glm.hpp"
|
#include "glm/glm.hpp"
|
||||||
#include "glm/ext/matrix_transform.hpp"
|
#include "glm/ext/matrix_transform.hpp"
|
||||||
#include "glm/gtc/matrix_transform.hpp"
|
#include "glm/gtc/matrix_transform.hpp"
|
||||||
@@ -172,7 +171,7 @@ int main() {
|
|||||||
auto model = glm::mat4(1.0f);
|
auto model = glm::mat4(1.0f);
|
||||||
model = glm::scale(model, glm::vec3(1.2f));
|
model = glm::scale(model, glm::vec3(1.2f));
|
||||||
|
|
||||||
FPSCamera camera(90.0f, 800.0f, 600.0f);
|
FloatingCamera camera(90.0f, 800.0f, 600.0f);
|
||||||
camera.translate(glm::vec3(0.0f, 0.0f, 5.0f));
|
camera.translate(glm::vec3(0.0f, 0.0f, 5.0f));
|
||||||
camera.update();
|
camera.update();
|
||||||
|
|
||||||
@@ -193,6 +192,8 @@ int main() {
|
|||||||
bool btnS;
|
bool btnS;
|
||||||
bool btnA;
|
bool btnA;
|
||||||
bool btnD;
|
bool btnD;
|
||||||
|
bool btnSpace;
|
||||||
|
bool btnShift;
|
||||||
|
|
||||||
while (running) {
|
while (running) {
|
||||||
while (SDL_PollEvent(&e)) {
|
while (SDL_PollEvent(&e)) {
|
||||||
@@ -204,6 +205,8 @@ int main() {
|
|||||||
case SDLK_S: btnS = true; break;
|
case SDLK_S: btnS = true; break;
|
||||||
case SDLK_A: btnA = true; break;
|
case SDLK_A: btnA = true; break;
|
||||||
case SDLK_D: btnD = true; break;
|
case SDLK_D: btnD = true; break;
|
||||||
|
case SDLK_SPACE: btnSpace = true; break;
|
||||||
|
case SDLK_LSHIFT: btnShift = true; break;
|
||||||
default: break;
|
default: break;
|
||||||
}
|
}
|
||||||
} else if (e.type == SDL_EVENT_KEY_UP) {
|
} else if (e.type == SDL_EVENT_KEY_UP) {
|
||||||
@@ -212,6 +215,8 @@ int main() {
|
|||||||
case SDLK_S: btnS = false; break;
|
case SDLK_S: btnS = false; break;
|
||||||
case SDLK_A: btnA = false; break;
|
case SDLK_A: btnA = false; break;
|
||||||
case SDLK_D: btnD = false; break;
|
case SDLK_D: btnD = false; break;
|
||||||
|
case SDLK_SPACE: btnSpace = false; break;
|
||||||
|
case SDLK_LSHIFT: btnShift = false; break;
|
||||||
default: break;
|
default: break;
|
||||||
}
|
}
|
||||||
} else if (e.type == SDL_EVENT_MOUSE_MOTION) {
|
} else if (e.type == SDL_EVENT_MOUSE_MOTION) {
|
||||||
@@ -235,6 +240,12 @@ int main() {
|
|||||||
if (btnD) {
|
if (btnD) {
|
||||||
camera.moveSideways(delta * cameraSpeed);
|
camera.moveSideways(delta * cameraSpeed);
|
||||||
}
|
}
|
||||||
|
if (btnSpace) {
|
||||||
|
camera.moveUp(delta * cameraSpeed);
|
||||||
|
}
|
||||||
|
if (btnShift) {
|
||||||
|
camera.moveUp(- delta * cameraSpeed);
|
||||||
|
}
|
||||||
|
|
||||||
camera.update();
|
camera.update();
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user