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-01-06 18:22:25 +0000
committerStijn Buys <ingar@osirion.org>2008-01-06 18:22:25 +0000
commita71a525675826589aa7e5209118201acb54f5405 (patch)
tree33836dee36d89f456cbd4ce5bf7e263fa0129e43 /src/client/camera.cc
parentf14ad6c7f3efd0c91a1ab8a4013b1975ddb02545 (diff)
new camera settings
Diffstat (limited to 'src/client/camera.cc')
-rw-r--r--src/client/camera.cc26
1 files changed, 21 insertions, 5 deletions
diff --git a/src/client/camera.cc b/src/client/camera.cc
index 03eff83..c195d20 100644
--- a/src/client/camera.cc
+++ b/src/client/camera.cc
@@ -18,6 +18,7 @@ namespace client
Camera::Camera()
{
+ pitch_overview = -60.0f;
pitch_track = -15.0f;
offset_inc = 5.0f;
@@ -61,6 +62,11 @@ void Camera::draw(float elapsed)
gl::rotate(-pitch_current, 0, 0, 1.0f);
gl::rotate(-yaw_current, 0, 1.0f, 0);
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);
+ break;
default:
break;
}
@@ -68,21 +74,21 @@ void Camera::draw(float elapsed)
void Camera::rotate_right()
{
- if (mode == Free ) {
+ if (mode == Free || mode == Overview) {
yaw_target = degrees360f( yaw_target + offset_inc);
}
}
void Camera::rotate_left()
{
- if (mode == Free ) {
+ if (mode == Free || mode == Overview) {
yaw_target = degrees360f( yaw_target - offset_inc);
}
}
void Camera::rotate_up()
{
- if (mode == Free ) {
+ if (mode == Free) {
pitch_target = pitch_target - offset_inc;
if (pitch_target < -90.0f) pitch_target = -90.0f;
}
@@ -90,7 +96,7 @@ void Camera::rotate_up()
void Camera::rotate_down()
{
- if (mode == Free ) {
+ if (mode == Free) {
pitch_target = pitch_target + offset_inc;
if (pitch_target > 90.0f) pitch_target = 90.0f;
}
@@ -98,13 +104,14 @@ void Camera::rotate_down()
void Camera::nextmode() {
switch(mode) {
- case Free:
+ case Overview:
// switch camera to Track mode
mode = Track;
yaw_target = game::ship.yaw();
yaw_current = yaw_target;
pitch_target = pitch_track;
pitch_current = pitch_target;
+ distance = 0.4f;
break;
case Track:
// switch camera to Free mode
@@ -113,7 +120,16 @@ void Camera::nextmode() {
yaw_current = yaw_target;
pitch_target = pitch_track;
pitch_current = pitch_target;
+ distance = 0.4f;
break;
+ 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;
default:
break;
}