Project::OSiRiON - Git repositories
Project::OSiRiON
News . About . Screenshots . Downloads . Forum . Wiki . Tracker . Git
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStijn Buys <ingar@osirion.org>2008-02-11 00:19:11 +0000
committerStijn Buys <ingar@osirion.org>2008-02-11 00:19:11 +0000
commitafec8e7c3aec1a186512b997ed3b717efef8fc43 (patch)
tree92f19ef9144bd271c72a19a15ae32b7dcdcd994c /src/client/camera.cc
parent825d5a44bd312772c53fdaa8924e4009cfb320a3 (diff)
renamed Entity.base_* to Entity.core_*
fixed camera::mode::Overview
Diffstat (limited to 'src/client/camera.cc')
-rw-r--r--src/client/camera.cc58
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;
}