Skip to content

Commit 468cbdc

Browse files
committed
add scale to camera
1 parent e0a56ff commit 468cbdc

File tree

2 files changed

+8
-3
lines changed

2 files changed

+8
-3
lines changed

include/reactive/Scene/Camera.hpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,8 @@ class Camera {
8585
}
8686
}
8787

88+
void setScale(float _scale) { scale = _scale; }
89+
8890
protected:
8991
Type type = Type::Orbital;
9092

@@ -95,6 +97,7 @@ class Camera {
9597
float zNear = 0.1f;
9698
float zFar = 1000.0f;
9799
float fovY = glm::radians(45.0f);
100+
float scale = 1.0f;
98101

99102
std::variant<FirstPersonParams, OrbitalParams> params = OrbitalParams{};
100103
};

src/Scene/Camera.cpp

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ auto Camera::getView() const -> glm::mat4 {
6969
}
7070

7171
auto Camera::getProj() const -> glm::mat4 {
72-
return glm::perspective(fovY, aspect, zNear, zFar);
72+
return glm::perspective(fovY, aspect, zNear * scale, zFar * scale);
7373
}
7474

7575
auto Camera::getInvView() const -> glm::mat4 {
@@ -83,12 +83,14 @@ auto Camera::getInvProj() const -> glm::mat4 {
8383
auto Camera::getPosition() const -> glm::vec3 {
8484
if (type == Type::FirstPerson) {
8585
auto& _params = std::get<FirstPersonParams>(params);
86-
return _params.position;
86+
return _params.position * scale;
8787
} else {
8888
auto& _params = std::get<OrbitalParams>(params);
8989
glm::mat4 rotX = glm::rotate(eulerRotation.x, glm::vec3(1, 0, 0));
9090
glm::mat4 rotY = glm::rotate(eulerRotation.y, glm::vec3(0, 1, 0));
91-
return _params.target + glm::vec3{rotY * rotX * glm::vec4{0, 0, _params.distance, 1}};
91+
glm::vec3 position =
92+
_params.target + glm::vec3{rotY * rotX * glm::vec4{0, 0, _params.distance, 1}};
93+
return position * scale;
9294
}
9395
}
9496

0 commit comments

Comments
 (0)