Project::OSiRiON - Git repositories
Project::OSiRiON
News . About . Screenshots . Downloads . Forum . Wiki . Tracker . Git
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/render/camera.cc')
-rw-r--r--src/render/camera.cc33
1 files changed, 32 insertions, 1 deletions
diff --git a/src/render/camera.cc b/src/render/camera.cc
index 74eb674..283f40f 100644
--- a/src/render/camera.cc
+++ b/src/render/camera.cc
@@ -126,7 +126,7 @@ void Camera::set_mode(Mode newmode) {
}
-void Camera::next_mode()
+void Camera::view_next()
{
if (!core::localcontrol()) {
@@ -158,6 +158,37 @@ void Camera::next_mode()
}
}
+void Camera::view_previous()
+{
+
+ if (!core::localcontrol()) {
+ set_mode(Overview);
+ return;
+ }
+
+ switch(camera_mode) {
+ case Cockpit:
+ // switch camera to Track mode
+ set_mode(Track);
+ core::application()->notify_message(std::string("view: track"));
+ break;
+
+ case Free:
+ // switch camera to Cockpit mode
+ set_mode(Cockpit);
+ core::application()->notify_message(std::string("view: cockpit"));
+ break;
+
+ case Track:
+ // switch camera to Free mode
+ set_mode(Free);
+ core::application()->notify_message(std::string("view: free"));
+ break;
+
+ default:
+ break;
+ }
+}
void Camera::frame(float seconds)
{
math::Axis target_axis;