X-Git-Url: https://git.dogcows.com/gitweb?p=chaz%2Fyoink;a=blobdiff_plain;f=src%2FMoof%2FCamera.cc;h=b38dd143cf04a51bc4dc30068a322ea77e073a42;hp=cdebc7a7b735b7e681e3b28f041f576aa9166d7f;hb=bfa6212d09d8735d8fd5e2638188e4a99f21ada4;hpb=eebb993ca929c3f4c235cad9e01dc4797fcd2945 diff --git a/src/Moof/Camera.cc b/src/Moof/Camera.cc index cdebc7a..b38dd14 100644 --- a/src/Moof/Camera.cc +++ b/src/Moof/Camera.cc @@ -37,6 +37,7 @@ namespace Mf { void Camera::setPosition(const Vector3& point) { position_ = point; + calculateSecondary(); //Vector3 coeff[2] = {position_, point}; //pInterp_.init(coeff, 0.1); } @@ -79,7 +80,8 @@ void Camera::update(Scalar t, Scalar dt) void Camera::lookAt(const Vector3& point) { - quaternion_rotation_aim_at(rotation_, position_, point); + cml::quaternion_rotation_aim_at(rotation_, position_, point, Vector3(0.0, -1.0, 0.0)); + calculateSecondary(); } void Camera::adjustFromInput(const Event& event) @@ -87,29 +89,25 @@ void Camera::adjustFromInput(const Event& event) switch (event.type) { case SDL_KEYDOWN: - if (event.key.keysym.sym == SDLK_RIGHT || - event.key.keysym.sym == SDLK_d) + if (event.key.keysym.sym == SDLK_RIGHT) { Vector3 vec = position_; vec[0] -= 50.0; setPosition(vec); } - else if (event.key.keysym.sym == SDLK_LEFT || - event.key.keysym.sym == SDLK_a) + else if (event.key.keysym.sym == SDLK_LEFT) { Vector3 vec = position_; vec[0] += 50.0; setPosition(vec); } - else if (event.key.keysym.sym == SDLK_UP || - event.key.keysym.sym == SDLK_w) + else if (event.key.keysym.sym == SDLK_UP) { Vector3 vec = position_; vec[1] -= 50.0; setPosition(vec); } - else if (event.key.keysym.sym == SDLK_DOWN || - event.key.keysym.sym == SDLK_s) + else if (event.key.keysym.sym == SDLK_DOWN) { Vector3 vec = position_; vec[1] += 50.0; @@ -123,7 +121,6 @@ void Camera::adjustFromInput(const Event& event) } else if (event.key.keysym.sym == SDLK_PAGEDOWN) { - //position_[2] -= 50.0; Vector3 vec = position_; vec[2] -= 50.0; setPosition(vec); @@ -137,9 +134,9 @@ void Camera::adjustFromInput(const Event& event) Quaternion rotation = rotation_; - quaternion_rotate_about_world_x(rotation, yrel); + cml::quaternion_rotate_about_world_x(rotation, yrel); //rotation_.normalize(); - quaternion_rotate_about_world_y(rotation, xrel); + cml::quaternion_rotate_about_world_y(rotation, xrel); rotation.normalize(); setRotation(rotation); @@ -167,13 +164,14 @@ void Camera::adjustFromInput(const Event& event) void Camera::calculateSecondary() { - matrix_rotation_quaternion(modelview_, rotation_); + cml::matrix_rotation_quaternion(modelview_, rotation_); Matrix4 translate; - matrix_translation(translate, position_); + cml::matrix_translation(translate, position_); - //modelview_ = translate * modelview_; + //modelview_.transpose(); modelview_ *= translate; + //modelview_ = translate * modelview_; frustum_.init(modelview_, projection_); }