X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FMain%2Fviewmgr.hxx;h=ea4470fbb6a93bbd0dd78d416b611b3fcb83166c;hb=18d1593c42c2df60d7fb44ace722ca3e8a7fd82c;hp=f5812db122d80e30f8025b61ec0c5c0496294b17;hpb=79b3e3925104361001fa9da14cd2b1d89a3fe5c2;p=flightgear.git diff --git a/src/Main/viewmgr.hxx b/src/Main/viewmgr.hxx index f5812db12..ea4470fbb 100644 --- a/src/Main/viewmgr.hxx +++ b/src/Main/viewmgr.hxx @@ -2,7 +2,7 @@ // // Written by Curtis Olson, started October 2000. // -// Copyright (C) 2000 Curtis L. Olson - curt@flightgear.org +// Copyright (C) 2000 Curtis L. Olson - http://www.flightgear.org/~curt // // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License as @@ -16,7 +16,7 @@ // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. // // $Id$ @@ -24,28 +24,23 @@ #ifndef _VIEWMGR_HXX #define _VIEWMGR_HXX - -#ifndef __cplusplus -# error This library requires C++ -#endif - +#include #include +#include #ifdef HAVE_CONFIG_H # include #endif -#include - -#include "fgfs.hxx" +#include "fg_props.hxx" #include "viewer.hxx" -SG_USING_STD(vector); +using std::vector; // Define a structure containing view information -class FGViewMgr : public FGSubsystem +class FGViewMgr : public SGSubsystem { public: @@ -90,18 +85,13 @@ public: return views[i]; } inline FGViewer *next_view() { - ++current; - if ( current >= (int)views.size() ) { - current = 0; - } - copyToCurrent(); + setView((current+1 < (int)views.size()) ? (current + 1) : 0); + view_number->fireValueChanged(); return views[current]; } inline FGViewer *prev_view() { - --current; - if ( current < 0 ) { - current = views.size() - 1; - } + setView((0 < current) ? (current - 1) : (views.size() - 1)); + view_number->fireValueChanged(); return views[current]; } @@ -130,6 +120,10 @@ private: double getViewPitchOffset_deg () const; void setViewPitchOffset_deg (double tilt); double getGoalViewPitchOffset_deg () const; + void setGoalViewRollOffset_deg (double tilt); + double getViewRollOffset_deg () const; + void setViewRollOffset_deg (double tilt); + double getGoalViewRollOffset_deg () const; void setGoalViewPitchOffset_deg (double tilt); double getViewXOffset_m () const; void setViewXOffset_m (double x); @@ -145,6 +139,8 @@ private: void setViewTargetZOffset_m (double z); double getFOV_deg () const; void setFOV_deg (double fov); + double getARM_deg () const; // Aspect Ratio Multiplier + void setARM_deg (double fov); double getNear_m () const; void setNear_m (double near_m); void setViewAxisLong (double axis); @@ -152,8 +148,11 @@ private: int getView () const; void setView (int newview); - typedef vector < FGViewer * > viewer_list; + SGPropertyNode_ptr view_number; + vector config_list; + typedef vector > viewer_list; viewer_list views; + SGVec3d abs_viewer_position; int current;