diff options
author | Stijn Buys <ingar@osirion.org> | 2008-02-11 00:19:11 +0000 |
---|---|---|
committer | Stijn Buys <ingar@osirion.org> | 2008-02-11 00:19:11 +0000 |
commit | afec8e7c3aec1a186512b997ed3b717efef8fc43 (patch) | |
tree | 92f19ef9144bd271c72a19a15ae32b7dcdcd994c /src/client/camera.cc | |
parent | 825d5a44bd312772c53fdaa8924e4009cfb320a3 (diff) |
renamed Entity.base_* to Entity.core_*
fixed camera::mode::Overview
Diffstat (limited to 'src/client/camera.cc')
-rw-r--r-- | src/client/camera.cc | 58 |
1 files changed, 36 insertions, 22 deletions
diff --git a/src/client/camera.cc b/src/client/camera.cc index 45cd65a..2def781 100644 --- a/src/client/camera.cc +++ b/src/client/camera.cc @@ -40,18 +40,26 @@ Mode mode; float yaw_current; // current pitch, angle in XY, positive is looking up float pitch_current; -// default pitch in mode::Track -float pitch_track; + // default pitch in mode::Overview float pitch_overview; -// default offset increment -float offset_inc; + + +// current x offset +float x_offset; +// current z offset +float z_offset; + +// default pitch in mode::Track +const float pitch_track = -15.0f; +// default rotate offset increase/decrease +float rotate_offset_inc; +// default translate offset increase/decrease +const float translate_offset_inc = 0.1; void init() { - pitch_overview = -60.0f; - pitch_track = -15.0f; - offset_inc = 5.0f; + rotate_offset_inc = 5.0f; yaw_current = 0; yaw_target = 0; @@ -96,10 +104,10 @@ void draw(float elapsed) gl::rotate(-yaw_current, 0, 1.0f, 0); gl::translate(-1*target); break; - case Overview: - gl::translate(-distance/2, -distance, 0.0f); - gl::rotate(-pitch_current, 0, 0, 1.0f); - gl::rotate(-yaw_current, 0, 1.0f, 0); + case Overview: + gl::rotate(75.0f, 0.0f, 0.0f, 1.0f); + gl::translate(0.0f, -distance, 0.0f); + //gl::translate(x_offset, 0.0f, z_offset); gl::translate(-1*target); break; default: @@ -109,31 +117,39 @@ void draw(float elapsed) void key_right() { - if (mode == Free || mode == Overview) { - yaw_target = degrees360f( yaw_target + offset_inc); + if (mode == Free) { + yaw_target = degrees360f( yaw_target + rotate_offset_inc); + } else if (mode == Overview) { + z_offset += translate_offset_inc; } } void key_left() { - if (mode == Free || mode == Overview) { - yaw_target = degrees360f( yaw_target - offset_inc); + if (mode == Free) { + yaw_target = degrees360f( yaw_target - rotate_offset_inc); + } else if (mode == Overview) { + z_offset -= translate_offset_inc; } } void key_up() { if (mode == Free) { - pitch_target = pitch_target - offset_inc; + pitch_target = pitch_target - rotate_offset_inc; if (pitch_target < -90.0f) pitch_target = -90.0f; + } else if (mode == Overview) { + x_offset += translate_offset_inc; } } void key_down() { if (mode == Free) { - pitch_target = pitch_target + offset_inc; + pitch_target = pitch_target + rotate_offset_inc; if (pitch_target > 90.0f) pitch_target = 90.0f; + } else if (mode == Overview) { + x_offset -= translate_offset_inc; } } @@ -160,11 +176,9 @@ void next_mode() { case Free: // switch camera to Overview mode mode = Overview; - yaw_target = 0; - yaw_current = 0; - pitch_target = pitch_overview; - pitch_current = pitch_target; - distance = 10.0f; + x_offset = 0; + z_offset = 0; + distance = 20.0f; default: break; } |