Skip to content

Commit 909a316

Browse files
committed
make it so camera anim preview doesnt rotate weirdly due to mouse movement
1 parent cabc39b commit 909a316

File tree

3 files changed

+25
-0
lines changed

3 files changed

+25
-0
lines changed

include/scene/Camera.hpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,10 @@ class LSceneCamera
3232
glm::vec3 mRight;
3333
glm::vec3 mUp;
3434

35+
glm::vec3 mOldForward;
36+
glm::vec3 mOldRight;
37+
glm::vec3 mOldUp;
38+
3539
/*=== Movement ===*/
3640
bool mAllowUpdates;
3741
float mMoveSpeed;
@@ -40,6 +44,10 @@ class LSceneCamera
4044
void Rotate(float deltaTime, glm::vec2 mouseDelta);
4145

4246
public:
47+
48+
void UnRotate();
49+
void ReRotate();
50+
4351
float NearPlane;
4452
float FarPlane;
4553
float Fovy;

src/DOM/CameraAnimationDOMNode.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,9 @@ namespace CameraAnimation {
6868
scene->Camera.SetCenter(mCenter);
6969
scene->Camera.Fovy = mFovY;
7070

71+
scene->Camera.UnRotate();
7172
scene->RenderSubmit(640, 480);
73+
scene->Camera.ReRotate();
7274

7375
scene->Camera.mCamMode = mode;
7476
scene->Camera.SetEye(eye);

src/scene/Camera.cpp

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,21 @@ void LSceneCamera::Update(GLFWwindow* window, float dt)
8282
mCenter = mEye - mForward;
8383
}
8484

85+
void LSceneCamera::UnRotate(){
86+
mOldForward = mForward;
87+
mOldRight = mRight;
88+
mOldUp = mUp;
89+
mForward = glm::normalize(mEye - mCenter);
90+
mRight = glm::normalize(glm::cross(mForward, UNIT_Y));
91+
mUp = glm::normalize(glm::cross(mRight, mForward));
92+
}
93+
94+
void LSceneCamera::ReRotate(){
95+
mForward = mOldForward;
96+
mRight = mOldRight;
97+
mUp = mOldUp;
98+
}
99+
85100
void LSceneCamera::Rotate(float deltaTime, glm::vec2 mouseDelta)
86101
{
87102
if (mouseDelta.x == 0.f && mouseDelta.y == 0.f)

0 commit comments

Comments
 (0)