VR-Forces 4.1.1 Class Documentation
DtOsgObserverObject.h
Go to the documentation of this file.
1 /*****************************************************************************
2  * Copyright (c) 2012 MAK Technologies, Inc.
3  * All rights reserved.
4  *****************************************************************************/
5 
9 
10 #pragma once
11 
12 #include <vrvOsg/vrvOsg.h>
13 
15 
16 #include <boost/unordered_map.hpp>
17 
18 #include <osg/Matrixd>
19 #include <osg/Vec3d>
20 #include <osg/Vec3>
21 
22 class DtTaitBryan;
23 
24 namespace osg
25 {
26  class Node;
27 }
28 
29 namespace makVrv
30 {
31 
32  class DtOsgChannel;
34  class DtSceneObject;
35  class DtTerrainPatchObject;
36  class DtAgentUpdateResolverInterface;
37 
42  {
43 
44  public:
45 
47  {
48  TerrainResultNoData = 0,
50  TerrainResultComplete
51  };
52 
54  DtOsgObserverObject( DtDe& de, DtUniqueID id, const std::string& name="" );
55 
57  virtual ~DtOsgObserverObject();
58 
60  virtual void tick( double simTime );
61 
62  virtual void tickAttachment();
63 
66  virtual void setModelSet( int modelSet );
67 
69  virtual double altitude() const;
70 
71  virtual void setNameAndRegister( const std::string& name );
72 
73  virtual void getCameraPositionAndOrientation( osg::Vec3d& position,
74  osg::Quat& rotation ) const;
75 
76  //
77  //
79  //
80  //
81 
83 
84 
85  virtual void startMoveObserverRight();
86  virtual void stopMoveObserverRight();
87  virtual void moveObserverRight( double meters );
88 
90 
91 
92  virtual void startMoveObserverForward();
93  virtual void stopMoveObserverForward();
94  virtual void moveObserverForward( double meters );
96 
98 
99 
100  virtual void startMoveObserverUp();
101  virtual void stopMoveObserverUp();
102  virtual void moveObserverUp( double meters );
104 
106 
107 
108  virtual void startMoveObserverLeft();
109  virtual void stopMoveObserverLeft();
110  virtual void moveObserverLeft( double meters );
112 
114 
115 
116  virtual void startMoveObserverBack();
117  virtual void stopMoveObserverBack();
118  virtual void moveObserverBack( double meters );
120 
122 
123 
124  virtual void startMoveObserverDown();
125  virtual void stopMoveObserverDown();
126  virtual void moveObserverDown( double meters );
128 
130 
131 
132 
133  virtual void startMoveLevelObserverRight();
134  virtual void stopMoveLevelObserverRight();
135  virtual void moveLevelObserverRight( double meters );
137 
139 
140 
141 
142  virtual void startMoveLevelObserverForward();
143  virtual void stopMoveLevelObserverForward();
144  virtual void moveLevelObserverForward( double meters );
146 
148 
149 
150 
151  virtual void startMoveLevelObserverUp();
152  virtual void stopMoveLevelObserverUp();
153  virtual void moveLevelObserverUp( double meters );
155 
157 
158 
159 
160  virtual void startMoveLevelObserverLeft();
161  virtual void stopMoveLevelObserverLeft();
162  virtual void moveLevelObserverLeft( double meters );
164 
166 
167 
168 
169  virtual void startMoveLevelObserverBack();
170  virtual void stopMoveLevelObserverBack();
171  virtual void moveLevelObserverBack( double meters );
173 
175 
176 
177  virtual void startMoveLevelObserverDown();
178  virtual void stopMoveLevelObserverDown();
179  virtual void moveLevelObserverDown( double meters );
181 
183 
184 
185  virtual void startMoveAttachedRight();
186  virtual void stopMoveAttachedRight();
187  virtual void moveAttachedRight( double meters );
188 
190 
191 
192  virtual void startMoveAttachedForward();
193  virtual void stopMoveAttachedForward();
194  virtual void moveAttachedForward( double meters );
196 
198 
199 
200  virtual void startMoveAttachedUp();
201  virtual void stopMoveAttachedUp();
202  virtual void moveAttachedUp( double meters );
204 
206 
207 
208  virtual void startMoveAttachedLeft();
209  virtual void stopMoveAttachedLeft();
210  virtual void moveAttachedLeft( double meters );
212 
214 
215 
216  virtual void startMoveAttachedBack();
217  virtual void stopMoveAttachedBack();
218  virtual void moveAttachedBack( double meters );
220 
222 
223 
224  virtual void startMoveAttachedDown();
225  virtual void stopMoveAttachedDown();
226  virtual void moveAttachedDown( double meters );
228 
230 
231 
232 
233  virtual void startMoveLevelAttachedRight();
234  virtual void stopMoveLevelAttachedRight();
235  virtual void moveLevelAttachedRight( double meters );
237 
239 
240 
241 
242  virtual void startMoveLevelAttachedForward();
243  virtual void stopMoveLevelAttachedForward();
244  virtual void moveLevelAttachedForward( double meters );
246 
248 
249 
250 
251  virtual void startMoveLevelAttachedUp();
252  virtual void stopMoveLevelAttachedUp();
253  virtual void moveLevelAttachedUp( double meters );
255 
257 
258 
259 
260  virtual void startMoveLevelAttachedLeft();
261  virtual void stopMoveLevelAttachedLeft();
262  virtual void moveLevelAttachedLeft( double meters );
264 
266 
267 
268 
269  virtual void startMoveLevelAttachedBack();
270  virtual void stopMoveLevelAttachedBack();
271  virtual void moveLevelAttachedBack( double meters );
273 
275 
276 
277  virtual void startMoveLevelAttachedDown();
278  virtual void stopMoveLevelAttachedDown();
279  virtual void moveLevelAttachedDown( double meters );
281 
283 
284 
285  virtual void startMoveAttachedContextRight();
286  virtual void stopMoveAttachedContextRight();
287  virtual void moveAttachedContextRight( double meters );
289 
291 
292 
293  virtual void startMoveAttachedContextForward();
294  virtual void stopMoveAttachedContextForward();
295  virtual void moveAttachedContextForward( double meters );
297 
299 
300 
301  virtual void startMoveAttachedContextUp();
302  virtual void stopMoveAttachedContextUp();
303  virtual void moveAttachedContextUp( double meters );
305 
307 
308 
309  virtual void startMoveAttachedContextLeft();
310  virtual void stopMoveAttachedContextLeft();
311  virtual void moveAttachedContextLeft( double meters );
313 
315 
316 
317  virtual void startMoveAttachedContextBack();
318  virtual void stopMoveAttachedContextBack();
319  virtual void moveAttachedContextBack( double meters );
321 
323 
324  virtual void startMoveAttachedContextDown();
325  virtual void stopMoveAttachedContextDown();
326  virtual void moveAttachedContextDown( double meters );
328 
330 
331 
332  virtual void startYawLeft();
333  virtual void stopYawLeft();
335 
337 
338 
339 
340  virtual void startYawRight();
341  virtual void stopYawRight();
343 
345 
346 
347  virtual void startPitchUp();
348  virtual void stopPitchUp();
349  virtual void rotatePitchUp( double rads );
351 
353 
354 
355  virtual void startPitchDown();
356  virtual void stopPitchDown();
357  virtual void rotatePitchDown( double rads );
359 
361 
362 
363  virtual void startRollLeft();
364  virtual void stopRollLeft();
366 
368 
369 
370  virtual void startRollRight();
371  virtual void stopRollRight();
373 
375 
376 
377  virtual void startLevelYawLeft();
378  virtual void stopLevelYawLeft();
380 
382 
383 
384 
385  virtual void startLevelYawRight();
386  virtual void stopLevelYawRight();
388 
390 
391 
392  virtual void startLevelPitchUp();
393  virtual void stopLevelPitchUp();
395 
397 
398 
399  virtual void startLevelPitchDown();
400  virtual void stopLevelPitchDown();
402 
404 
405 
406  virtual void startLevelRollLeft();
407  virtual void stopLevelRollLeft();
409 
411 
412 
413  virtual void startLevelRollRight();
414  virtual void stopLevelRollRight();
416 
417  virtual void rotateLevelYawLeft( double rads );
418  virtual void rotateLevelYawRight( double rads );
419 
420  virtual void startLookLeft();
421  virtual void stopLookLeft();
422  virtual void lookLeft( double rads );
423 
424  virtual void startLookRight();
425  virtual void stopLookRight();
426  virtual void lookRight( double rads );
427 
428  virtual void startLookUp();
429  virtual void stopLookUp();
430  virtual void lookUp( double rads );
431 
432  virtual void startLookDown();
433  virtual void stopLookDown();
434  virtual void lookDown( double rads );
435 
436  virtual void startLookTiltRight();
437  virtual void stopLookTiltRight();
438  virtual void lookTiltRight( double rads );
439 
440  virtual void startLookTiltLeft();
441  virtual void stopLookTiltLeft();
442  virtual void lookTiltLeft( double rads );
443 
445 
446 
447  virtual void startOrbitingLeft();
448  virtual void stopOrbitingLeft();
449  virtual void orbitLeft( double rads );
451 
453 
454 
455  virtual void startOrbitingRight();
456  virtual void stopOrbitingRight();
457  virtual void orbitRight( double rads );
459 
461 
462 
463  virtual void startOrbitingUp();
464  virtual void stopOrbitingUp();
465  virtual void orbitUp( double rads );
467 
469 
470 
471  virtual void startOrbitingDown();
472  virtual void stopOrbitingDown();
473  virtual void orbitDown( double rads );
475 
477  virtual void setLocation( double x, double y, double z);
478 
482  virtual void setAttachedLocation( double x, double y, double z );
483 
485  virtual void setOrientation( double psi, double theta, double phi );
486 
488  virtual void setOrientation( double x, double y, double z, double w);
489 
491  virtual void setAttachedOrientation( double psi, double theta, double phi );
492 
495  void setLocalModelScalingEnabled( bool enabled );
496 
499  void setLocalModelScalingAmount( float amount );
500 
503  virtual void jumpTo( double x, double y, double z );
504 
506  virtual void jumpTo( DtUniqueID elementID );
507 
508  virtual void orientTo( double x, double y, double z );
509 
511  virtual void dragTerrain( double lastX, double lastY, double lastZ,
512  double currX, double currY, double currZ );
513 
514  virtual void dragTerrain2( double myStartDragX, double myStartDragY,
515  double myStartDragZ, int deltaMouseX, int deltaMouseY );
516 
517  virtual void dragGravityUp( double windowUnits );
518  virtual void dragGravityDown( double windowUnits );
519  virtual void dragGravityLeft( double windowUnits );
520  virtual void dragGravityRight( double windowUnits );
521  virtual void scrollObserverForward( int wheelUnits );
522  virtual void scrollObserverBack( int wheelUnits );
523  virtual void scrollLevelObserverForward( int wheelUnits );
524  virtual void scrollLevelObserverBack( int wheelUnits );
525 
526  //{@
528  virtual void startIncreasingViewResolution();
529  virtual void stopIncreasingViewResolution();
530  virtual void increaseViewResolution();
531 
532  virtual void startDecreasingViewResolution();
533  virtual void stopDecreasingViewResolution();
534  virtual void decreaseViewResolution();
535 
536  // Sets the view resolution in meters per pixel.
537  virtual void setViewResolution( double resolution);
538 
539  // Get the current view resolution.
540  virtual double viewResolution() const;
541 
543  virtual void setViewMagnification( double mag );
544 
546  virtual double viewMagnification() const;
547 
549 
550  //
552  //
553 
555  virtual void setOrbitSpeed( double speed );
556 
558  virtual void setLinearSpeed( double speed );
559 
561  virtual void setRotationSpeed( double speed );
562 
564  virtual void setMinLinearSpeed( double minSpeed );
565 
567  virtual void setLinearScaledSpeedGain( double gain );
568 
574  virtual void gotoTerrainCenter( DtUniqueID terrainPatch, bool retry );
575 
577  virtual void resetAttachment();
578 
579  virtual void resetOrientation();
580 
582  virtual void resetCamera();
583  virtual void level();
584 
585  virtual void stopAll();
586 
587  virtual void attachToObjects( const std::vector<DtUniqueID>& elementIds );
588  virtual void setSecondaryAttachment( const std::vector<DtUniqueID>& elementIds );
589  virtual void attachToPart( int partId);
590  virtual void detach();
591  virtual void setAttachType( DtObserverObject::AttachType type );
592  virtual void setHideModelOnAttach( bool hide );
593  virtual void scaleCurrentAttachments( bool scaled );
594  virtual void setOrientToTargetConstraint( bool orient );
595  virtual void setOrbiting( bool orbit );
596  virtual void setOrientCameraToTargetConstraint( bool orient );
597 
598  virtual void setConstrainToTerrain( bool trueFalse );
599  virtual void setConstrainToCenter( bool trueFalse );
600 
603  virtual void suppressConstrainToTerrain( bool trueFalse );
604 
605  virtual void setSpeedScaling( bool trueFalse );
606 
608  virtual void setSpeedScaledSpeed( double speed );
609 
610  virtual void getLocation( double &x, double &y, double& z ) const;
611 
612  virtual void getOrientation( double& psi, double& theta, double& phi ) const;
613 
614  virtual void getOrientation( double& x, double& y, double& z, double& w ) const;
615 
616 
620  virtual double fixed2DAltitude();
621 
624  virtual double heightAboveTerrainFromCurrentZoom();
625 
628  virtual double topographicHeading() const;
629 
631  virtual void getLinearVelocity(double &x, double &y, double &z) const;
632 
634  virtual void getRotationalVelocity( double& x, double& y, double& z) const;
635 
639  virtual void setModeSetting( int setting, bool value );
640 
641  private:
642 
645 
647  DtOsgObserverObject& operator=( const DtOsgObserverObject& );
648 
649  protected:
650 
653  virtual double zoomFromCurrentAltitude();
654 
657  virtual double altitudeFromCurrentZoom();
658 
659  virtual void calcObserverWorldVectors();
660  virtual const osg::Vec3d& observerWorldUp() const;
661  virtual const osg::Vec3d& observerWorldNorth() const;
662  virtual const osg::Vec3d& observerWorldEast() const;
663 
664  virtual const osg::Vec3d& attachedWorldUp() const;
665 
666  virtual osg::Vec3d& observerUp();
667  virtual osg::Vec3d& observerFront();
668  virtual osg::Vec3d& observerRight();
669 
670  virtual osg::Vec3d& attachedUp();
671  virtual osg::Vec3d& attachedFront();
672  virtual osg::Vec3d& attachedRight();
673 
674  virtual osg::Vec3d& attachedOffsetUp();
675  virtual osg::Vec3d& attachedOffsetFront();
676  virtual osg::Vec3d& attachedOffsetRight();
677 
679  virtual osg::Vec3d& levelAttachedUp();
680  virtual osg::Vec3d& levelAttachedFront();
681  virtual osg::Vec3d& levelAttachedRight();
682 
684  virtual osg::Vec3d& levelObserverMimicUp();
685  virtual osg::Vec3d& levelObserverMimicFront();
686  virtual osg::Vec3d& levelObserverMimicRight();
687 
688  virtual osg::Vec3d& cameraUp();
689  virtual osg::Vec3d& cameraFront();
690  virtual osg::Vec3d& cameraRight();
691 
692  virtual osg::Vec3d& levelObserverUp();
693  virtual osg::Vec3d& levelObserverFront();
694  virtual osg::Vec3d& levelObserverRight();
695 
696  virtual void advanceOrbitLeft( double rads );
697  virtual void advanceOrbitRight( double rads );
698  virtual void advanceOrbitUp( double rads );
699  virtual void advanceOrbitDown( double rads );
700 
701  virtual void makeLevelObserverMatrix();
702 
704  virtual void calculateLevelAttachedRotation();
705 
707  virtual void makeLevelObserverMimicMatrix();
708 
712  virtual osg::Vec3d calcWorldPositionChange();
713 
714  virtual osg::Vec3d calcMimicPositionChange();
715  virtual osg::Vec3d calcFollowPositionChange();
716  virtual osg::Vec3d calcSpaceFollowPositionChange();
717  virtual osg::Vec3d calcTetherPositionChange();
718  virtual osg::Vec3d calcTetherTrackPositionChange();
719  virtual osg::Vec3d calcTrackPositionChange();
720  virtual osg::Quat calcTetherTrackRotation();
721 
722  virtual osg::Quat calcWorldOrientationChange();
723  virtual osg::Quat calcTetherOrientationChange();
724  virtual osg::Quat calcMimicOrientationChange();
725  virtual osg::Quat calcFollowOrientationChange();
726 
727  virtual void setCurrentAttachmentsVisibility( bool visible );
728 
735 
738  virtual void orientTo( const osg::Vec3d& target );
739 
741  virtual void orientCameraTo( const osg::Vec3d& target );
742 
743  virtual TerrainResult getTerrainCenter( const DtUniqueID& patchID, osg::Vec3d& center );
744 
745  virtual DtCoordinateConverter& coordinateConverter();
746  virtual const DtCoordinateConverter& coordinateConverter() const;
747 
748  virtual void initializeAttachment();
749 
750  virtual void getScalingIntersection();
751  virtual void getViewIntersection();
752 
754  virtual double linearSpeed();
755 
757  virtual double speedScalingGain() const;
758 
759  virtual void calcTerrainConstraint( osg::Vec3d prev );
760 
766  virtual bool updateAttachPositionAndOrientation();
767 
768  virtual bool getSecondaryAttachPosition( osg::Vec3d& position );
769 
770  virtual void getObserverOffsetVector( double& x, double& y, double& z ) const;
771  virtual void setObserverOffsetVector( double x, double y, double z );
772 
773  virtual void getAttachedRotationOffset( double& x, double& y, double& z, double& w ) const;
774  virtual void setAttachedRotationOffset( double x, double y, double z,
775  double w );
776 
777  virtual void getBoundingVolume( DtSceneObject& sceneObject,
778  osg::Vec3& bvolExtents, osg::Vec3d& bvolCenter );
779 
780  virtual void getBoundingVolume( DtTerrainPatchObject& patchObject,
781  osg::Vec3& bvolExtents, osg::Vec3d& bvolCenter );
782 
783  virtual void setLocation( const osg::Vec3d& location, bool suppress=true );
784 
785  virtual bool isMoving() const;
786  virtual bool isRotating() const;
787 
788  virtual double computeNearClipDistance( DtSceneObject* sceneObject );
789  virtual float computeLocalModelScalingAmount( DtSceneObject* sceneObject );
790 
792  static void matrixdToTaitBryan( const osg::Matrixd& mat, DtTaitBryan& tb, bool isWorld2D = false );
793  static double clampUnity( double x );
794 
795  virtual void calcScaledSpeed();
796  virtual bool getTerrainOrPropIntersection( const osg::Vec3d& startPos,
797  const osg::Vec3d& endPos, osg::Vec3d& result ) const;
798 
800  virtual DtSceneObject* findSceneObjectFromElement(const DtElementID& id);
801 
803  virtual DtTerrainPatchObject* findTerrainPatchObjectFromElement( const DtElementID& id );
804 
805  virtual void getPositionAndOrientation( DtSceneObject& sceneObject, osg::Vec3d& position,
806  osg::Vec3d& orientToPosition, osg::Quat& orientation );
807 
808  virtual void getPositionAndOrientation( DtTerrainPatchObject& patchObject, osg::Vec3d& position,
809  osg::Vec3d& orientToPosition, osg::Quat& orientation );
810 
812  virtual void getPositionFromSceneObject( DtSceneObject& sceneObject, osg::Vec3d& position ) const;
813 
816  virtual bool getPartPositionOriFromSceneObject( DtSceneObject& sceneObject,
817  int partId, osg::Vec3d& position, osg::Quat& ori ) const;
818 
821  virtual void force2D();
822 
824  virtual void dimensionChanged( bool is2D );
825  virtual void setIs2D( bool is2D );
826 
828  virtual double calculate3DAltitude() const;
829 
831  virtual void calculateAltitude();
832 
835  virtual double zoomFromAltitude( double altitude );
836 
839  virtual double zoomFromHeightAboveTerrain( double hat );
840 
841  virtual double calcEarthRadiusAtLocalCoord( const osg::Vec3d& local ) const;
842 
843  // Sends the location of the observer on the master to all others; only used
844  // if different
845  virtual void synchronizeLocation( double x, double y, double z );
846 
847  // Sends the orientation of the observer on the master to all others; only used
848  // if different
849  virtual void synchronizeOrientation( double x, double y, double z, double w );
850 
851  protected:
852 
853  static const double theZoomAltitudeConstant;
854  static const double theObserverBoundingSphere;
855  static const double theSpeedScaleUpdatePeriod;
856 
857  static const double theMaxTerrainRetryTime;
858 
859  // below this altitude, ignore myConstrainToCenter
860  static const double theCenterConstrainHeight;
861 
862  // Zoom won't get any smaller than this
863  static const double theMinViewResolution;
864 
865  // Zoom won't get any larger than this
866  static const double theMaxViewResolution;
867 
868 
869  protected:
870 
871  std::vector<DtUniqueID> myCurrentAttachments;
872  std::vector<DtUniqueID> mySecondaryAttachments;
874 
875  bool myChanged;
877 
878  //
880  //
889 
892 
895 
898 
900  osg::Vec3d myObserverPosition;
901 
904 
905  osg::Vec3d myAttachedPosition;
906 
908 
910  osg::Vec3d myDragMove;
911 
912  osg::Vec3d myOrientToPosition;
913 
914  osg::Vec3d myOrbitAdvance;
915 
921 
924 
927  osg::Quat myMasterRotation;
928 
931 
936 
939 
942 
945 
949 
950  //bool myGlobeObserverMode;
953 
956 
958  {
959  public:
960 
962  {
963  Stopped = 0,
964  Forward = 1,
965  Backward = 2,
966  Left = 4,
967  Right = 8,
968  Up = 16,
969  Down = 32
970  };
971 
973  : myState(Stopped)
974  {
975  }
976 
978  inline void applyMovement(double linearDistance)
979  {
980  if(moving(Right)) myAdvance[0] += linearDistance;
981  if(moving(Left)) myAdvance[0] -= linearDistance;
982  if(moving(Forward)) myAdvance[1] += linearDistance;
983  if(moving(Backward)) myAdvance[1] -= linearDistance;
984  if(moving(Up)) myAdvance[2] += linearDistance;
985  if(moving(Down)) myAdvance[2] -= linearDistance;
986  }
987 
989  inline const osg::Vec3d& advance() const
990  {
991  return myAdvance;
992  }
993 
994  inline void stop()
995  {
996  myState = Stopped;
997  myAdvance.set(0.0,0.0,0.0);
998  myEuler.set(0.0,0.0,0.0);
999  }
1000 
1001  inline void clearAdvance()
1002  {
1003  myAdvance.set(0.0,0.0,0.0);
1004  }
1005 
1006  inline bool stopped()
1007  {
1008  return myState == Stopped;
1009  }
1010 
1011  inline bool moving() const
1012  {
1013  return myState != Stopped;
1014  }
1015 
1016  inline bool moving(Direction d) const
1017  {
1018  return (myState & d) != 0;
1019  }
1020 
1021  inline void setMoving(Direction d, bool moving)
1022  {
1023  myState = moving ? myState | d : myState & ~d;
1024  }
1025 
1026  enum Angle
1027  {
1028  YawLeft = 1,
1029  YawRight = 2,
1030  PitchUp = 4,
1031  PitchDown = 8,
1032  RollLeft = 16,
1033  RollRight = 32
1034  };
1035 
1036  inline void applyRotation(double angle)
1037  {
1038  if(rotating(YawRight)) myEuler[0] -= angle;
1039  if(rotating(YawLeft)) myEuler[0] += angle;
1040  if(rotating(PitchUp)) myEuler[1] += angle;
1041  if(rotating(PitchDown)) myEuler[1] -= angle;
1042  if(rotating(RollRight)) myEuler[2] += angle;
1043  if(rotating(RollLeft)) myEuler[2] -= angle;
1044  }
1045 
1046  inline const osg::Vec3d& euler() const
1047  {
1048  return myEuler;
1049  }
1050 
1051  inline osg::Vec3d& euler()
1052  {
1053  return myEuler;
1054  }
1055 
1056  inline void level()
1057  {
1058  myEuler.set(0.0,0.0,0.0);
1059  }
1060 
1061  inline bool rotating() const
1062  {
1063  return myState != Stopped;
1064  }
1065 
1066  inline bool rotating( Angle d ) const
1067  {
1068  return (myState & d) != 0;
1069  }
1070 
1071  inline void setRotating( Angle d, bool rotating )
1072  {
1073  myState = rotating ? myState | d : myState & ~d;
1074  }
1075 
1076  protected:
1077 
1081  osg::Vec3d myAdvance;
1082  osg::Vec3d myEuler;
1083 
1084  unsigned char myState;
1085  };
1086 
1091 
1096 
1101 
1105 
1111 
1115 
1116  //
1125 
1129 
1133 
1135  osg::Vec3d myCameraOffset;
1137  osg::Quat myCameraRotation;
1138 
1139  osg::Vec3d myObserverWorldUp;
1142 
1143  osg::Vec3d myAttachedWorldUp;
1146 
1147  osg::Vec3d myObserverUp;
1148  osg::Vec3d myObserverFront;
1149  osg::Vec3d myObserverRight;
1150 
1151  osg::Vec3d myLevelObserverUp;
1154 
1155  osg::Vec3d myAttachedUp;
1156  osg::Vec3d myAttachedFront;
1157  osg::Vec3d myAttachedRight;
1158 
1159  osg::Vec3d myLevelAttachedUp;
1162 
1166 
1170 
1171  osg::Vec3d myCameraUp;
1172  osg::Vec3d myCameraFront;
1173  osg::Vec3d myCameraRight;
1174 
1177 
1181 
1183 
1186 
1189 
1198  // force an orientation reset AFTER the next time the observer position is updated
1199  // Needed when making large attach jumps
1201 
1203 
1205  osg::Vec3d myViewIntersect;
1206 
1208  // set to false on reset
1210  osg::Vec3d myDownIntersect;
1211 
1212  osg::Vec3d myAttachPosition;
1213 
1215 
1219 
1220  double myAltitude;
1221 
1226 
1230 
1231  typedef boost::unordered_map<DtElementID, bool> ElementVisibilityMap;
1233 
1234  // Paged terrain initialization
1240 
1241  // curvature adjustment
1243  };
1244 
1245 }

Document ID: Generated on Mon Apr 8 19:24:01 EDT 2013 from SVN revision 125877
Copyright © 2005-2013 VT MÄK. All Rights Reserved (www.mak.com)