![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /***************************************************************************** 00002 * Copyright (c) 2011 MAK Technologies, Inc. 00003 * All rights reserved. 00004 *****************************************************************************/ 00005 /***************************************************************************** 00006 * $RCSfile: DtObserverObject.h,v $ $Revision: 1.46 $ $State: Exp $ 00007 *****************************************************************************/ 00008 00012 00013 #pragma once 00014 00015 #include <vrvCore/vrvCore.h> 00016 00017 #include <vrvCore/DtUniqueID.h> 00018 00019 #include <string> 00020 #include <vector> 00021 #include <map> 00022 00023 namespace makVrv 00024 { 00025 00026 class DtDe; 00027 class DtInputDriver; 00028 00032 class DT_DLL_VRVCORE DtObserverObject 00033 { 00034 00035 public: 00036 00037 typedef std::map<int, bool> ModeSettingsMap; 00038 00039 enum ScaleType { XRScale, LinearScale }; 00040 00041 enum AttachType 00042 { 00043 AttachTypeTether, 00044 AttachTypeMimic, 00045 AttachTypeFollow, 00046 AttachTypeTrack, 00047 AttachTypeTetherTrack, 00048 AttachTypeMimicTrack, 00049 AttachTypeModelView, 00050 AttachTypeSpaceFollow 00051 }; 00052 00054 DtObserverObject( DtDe& de, DtUniqueID id, const std::string& name="" ); 00055 00057 virtual ~DtObserverObject(); 00058 00060 virtual const std::string& name() const; 00061 00063 virtual bool is2D() const; 00064 00066 virtual void setIs2D( bool is2D ); 00067 00069 virtual bool displaySky() const; 00070 00072 virtual void setDisplaySky( bool hasSky ); 00073 00076 virtual bool isScaling() const; 00077 00079 virtual void setScaling(bool scale); 00080 00082 virtual double scaleFactor() const; 00083 00085 virtual void setScaleFactor( double scaleFactor ); 00086 00088 virtual DtObserverObject::ScaleType scaleType() const; 00089 00091 virtual void setScaleType( DtObserverObject::ScaleType scaleType ); 00092 00094 virtual int modelSet() const; 00095 00097 virtual void setModelSet( int modelSet ); 00098 00102 virtual void clearModeSettings(); 00103 00106 virtual void setModeSetting( int setting, bool value ); 00107 00110 virtual bool modeSetting( int setting ) const; 00111 00112 virtual const ModeSettingsMap& modeSettings() const; 00113 00117 virtual void setNameAndRegister( const std::string& name ); 00118 00124 virtual void tick( double ) {} 00125 00127 virtual void setTerrainIsGlobal(bool global); 00128 00130 virtual double altitude() const = 0; 00131 00133 virtual double viewResolution() const { return 1.; }; 00134 00137 virtual void setViewMagnification( double mag ) = 0; 00138 00139 // 00140 // 00142 // 00143 // 00144 00146 00147 00148 virtual void startMoveObserverRight() {} 00149 virtual void stopMoveObserverRight() {} 00150 virtual void moveObserverRight( double ) {} 00151 00153 00154 00155 virtual void startMoveObserverForward() {} 00156 virtual void stopMoveObserverForward() {} 00157 virtual void moveObserverForward( double ) {} 00159 00161 00162 00163 virtual void startMoveObserverUp() {} 00164 virtual void stopMoveObserverUp() {} 00165 virtual void moveObserverUp( double ) {} 00167 00169 00170 00171 virtual void startMoveObserverLeft() {} 00172 virtual void stopMoveObserverLeft() {} 00173 virtual void moveObserverLeft( double ) {} 00175 00177 00178 00179 virtual void startMoveObserverBack() {} 00180 virtual void stopMoveObserverBack() {} 00181 virtual void moveObserverBack( double ) {} 00183 00185 00186 00187 virtual void startMoveObserverDown() {} 00188 virtual void stopMoveObserverDown() {} 00189 virtual void moveObserverDown( double ) {} 00191 00193 00194 00195 00196 virtual void startMoveLevelObserverRight() {} 00197 virtual void stopMoveLevelObserverRight() {} 00198 virtual void moveLevelObserverRight( double ) {} 00200 00202 00203 00204 00205 virtual void startMoveLevelObserverForward() {} 00206 virtual void stopMoveLevelObserverForward() {} 00207 virtual void moveLevelObserverForward( double ) {} 00209 00211 00212 00213 00214 virtual void startMoveLevelObserverUp() {} 00215 virtual void stopMoveLevelObserverUp() {} 00216 virtual void moveLevelObserverUp( double ) {} 00218 00220 00221 00222 00223 virtual void startMoveLevelObserverLeft() {} 00224 virtual void stopMoveLevelObserverLeft() {} 00225 virtual void moveLevelObserverLeft( double ) {} 00227 00229 00230 00231 00232 virtual void startMoveLevelObserverBack() {} 00233 virtual void stopMoveLevelObserverBack() {} 00234 virtual void moveLevelObserverBack( double ) {} 00236 00238 00239 00240 virtual void startMoveLevelObserverDown() {} 00241 virtual void stopMoveLevelObserverDown() {} 00242 virtual void moveLevelObserverDown( double ) {} 00244 00246 00247 00248 virtual void startMoveAttachedRight() {} 00249 virtual void stopMoveAttachedRight() {} 00250 virtual void moveAttachedRight( double ) {} 00251 00253 00254 00255 virtual void startMoveAttachedForward() {} 00256 virtual void stopMoveAttachedForward() {} 00257 virtual void moveAttachedForward( double ) {} 00259 00261 00262 00263 virtual void startMoveAttachedUp() {} 00264 virtual void stopMoveAttachedUp() {} 00265 virtual void moveAttachedUp( double ) {} 00267 00269 00270 00271 virtual void startMoveAttachedLeft() {} 00272 virtual void stopMoveAttachedLeft() {} 00273 virtual void moveAttachedLeft( double ) {} 00275 00277 00278 00279 virtual void startMoveAttachedBack() {} 00280 virtual void stopMoveAttachedBack() {} 00281 virtual void moveAttachedBack( double ) {} 00283 00285 00286 00287 virtual void startMoveAttachedDown() {} 00288 virtual void stopMoveAttachedDown() {} 00289 virtual void moveAttachedDown( double ) {} 00291 00293 00294 00295 00296 virtual void startMoveLevelAttachedRight() {} 00297 virtual void stopMoveLevelAttachedRight() {} 00298 virtual void moveLevelAttachedRight( double ) {} 00300 00302 00303 00304 00305 virtual void startMoveLevelAttachedForward() {} 00306 virtual void stopMoveLevelAttachedForward() {} 00307 virtual void moveLevelAttachedForward( double ) {} 00309 00311 00312 00313 00314 virtual void startMoveLevelAttachedUp() {} 00315 virtual void stopMoveLevelAttachedUp() {} 00316 virtual void moveLevelAttachedUp( double ) {} 00318 00320 00321 00322 00323 virtual void startMoveLevelAttachedLeft() {} 00324 virtual void stopMoveLevelAttachedLeft() {} 00325 virtual void moveLevelAttachedLeft( double ) {} 00327 00329 00330 00331 00332 virtual void startMoveLevelAttachedBack() {} 00333 virtual void stopMoveLevelAttachedBack() {} 00334 virtual void moveLevelAttachedBack( double ) {} 00336 00338 00339 00340 virtual void startMoveLevelAttachedDown() {} 00341 virtual void stopMoveLevelAttachedDown() {} 00342 virtual void moveLevelAttachedDown( double ) {} 00344 00346 00347 00348 virtual void startMoveAttachedContextRight() {} 00349 virtual void stopMoveAttachedContextRight() {} 00350 virtual void moveAttachedContextRight( double ) {} 00352 00354 00355 00356 virtual void startMoveAttachedContextForward() {} 00357 virtual void stopMoveAttachedContextForward() {} 00358 virtual void moveAttachedContextForward( double ) {} 00360 00362 00363 00364 virtual void startMoveAttachedContextUp() {} 00365 virtual void stopMoveAttachedContextUp() {} 00366 virtual void moveAttachedContextUp( double ) {} 00368 00370 00371 00372 virtual void startMoveAttachedContextLeft() {} 00373 virtual void stopMoveAttachedContextLeft() {} 00374 virtual void moveAttachedContextLeft( double ) {} 00376 00378 00379 00380 virtual void startMoveAttachedContextBack() {} 00381 virtual void stopMoveAttachedContextBack() {} 00382 virtual void moveAttachedContextBack( double ) {} 00384 00386 00387 virtual void startMoveAttachedContextDown() {} 00388 virtual void stopMoveAttachedContextDown() {} 00389 virtual void moveAttachedContextDown( double ) {} 00391 00393 00394 00395 virtual void startYawLeft() {} 00396 virtual void stopYawLeft() {} 00397 virtual void rotateYawLeft( double rads ) {} 00399 00401 00402 00403 00404 virtual void startYawRight() {} 00405 virtual void stopYawRight() {} 00406 virtual void rotateYawRight( double rads ) {} 00408 00410 00411 00412 virtual void startPitchUp() {} 00413 virtual void stopPitchUp() {} 00414 virtual void rotatePitchUp( double rads ) {} 00416 00418 00419 00420 virtual void startPitchDown() {} 00421 virtual void stopPitchDown() {} 00422 virtual void rotatePitchDown( double rads ) {} 00424 00426 00427 00428 virtual void startRollLeft() {} 00429 virtual void stopRollLeft() {} 00430 virtual void rollLeft( double rads ) {} 00432 00434 00435 00436 virtual void startRollRight() {} 00437 virtual void stopRollRight() {} 00438 virtual void rollRight( double rads ) {} 00440 00442 00443 00444 virtual void startLevelYawLeft() {} 00445 virtual void stopLevelYawLeft() {} 00446 virtual void rotateLevelYawLeft( double rads ) {} 00448 00450 00451 00452 00453 virtual void startLevelYawRight() {} 00454 virtual void stopLevelYawRight() {} 00455 virtual void rotateLevelYawRight( double rads ) {} 00457 00459 00460 00461 virtual void startLevelPitchUp() {} 00462 virtual void stopLevelPitchUp() {} 00463 virtual void rotateLevelPitchUp( double rads ) {} 00465 00467 00468 00469 virtual void startLevelPitchDown() {} 00470 virtual void stopLevelPitchDown() {} 00471 virtual void rotateLevelPitchDown( double rads ) {} 00473 00475 00476 00477 virtual void startLevelRollLeft() {} 00478 virtual void stopLevelRollLeft() {} 00479 virtual void rollLevelLeft( double rads ) {} 00481 00483 00484 00485 virtual void startLevelRollRight() {} 00486 virtual void stopLevelRollRight() {} 00487 virtual void rollLevelRight( double rads ) {} 00489 00491 00492 00493 virtual void startOrbitingLeft() {} 00494 virtual void stopOrbitingLeft() {} 00495 virtual void orbitLeft( double rads ) {} 00497 00499 00500 00501 virtual void startOrbitingRight() {} 00502 virtual void stopOrbitingRight() {} 00503 virtual void orbitRight( double rads ) {} 00505 00507 00508 00509 virtual void startOrbitingUp( ) {} 00510 virtual void stopOrbitingUp() {} 00511 virtual void orbitUp( double rads ) {} 00513 00515 00516 00517 virtual void startOrbitingDown() {} 00518 virtual void stopOrbitingDown() {} 00519 virtual void orbitDown( double rads ) {} 00521 00525 virtual void level() {} 00526 00528 virtual void setLocation( double x, double y, double z ) {} 00529 00532 virtual void jumpTo( double x, double y, double z ) {} 00533 00536 virtual void jumpTo( DtUniqueID id ) {} 00537 00538 virtual void orientTo( double x, double y, double z ) {} // = 0; 00539 00541 virtual void dragTerrain( double lastX, double lastY, double lastZ, 00542 double currX, double currY, double currZ ) {} 00543 00544 virtual void dragTerrain2( double myStartDragX, double myStartDragY, 00545 double myStartDragZ, int deltaMouseX, int deltaMouseY ) {} 00546 00547 virtual void dragGravityUp( double windowUnits ) {} 00548 virtual void dragGravityDown( double windowUnits ) {} 00549 virtual void dragGravityLeft( double windowUnits ) {} 00550 virtual void dragGravityRight( double windowUnits ) {} 00551 virtual void scrollObserverForward( int wheelUnits ) {} 00552 virtual void scrollObserverBack( int wheelUnits ) {} 00553 virtual void scrollLevelObserverForward( int wheelUnits ) {} 00554 virtual void scrollLevelObserverBack( int wheelUnits ) {} 00555 00556 // 00557 // 00559 // 00560 // 00561 00563 00564 00565 virtual void startLookLeft() {} 00566 virtual void stopLookLeft() {} 00567 virtual void lookLeft( double rads ) {} 00569 00571 00572 00573 virtual void startLookRight() {} 00574 virtual void stopLookRight() {} 00575 virtual void lookRight( double rads ) {} 00577 00579 00580 00581 virtual void startLookUp( ) {} 00582 virtual void stopLookUp() {} 00583 virtual void lookUp( double rads ) {} 00585 00587 00588 00589 virtual void startLookDown() {} 00590 virtual void stopLookDown() {} 00591 virtual void lookDown( double rads ) {} 00593 00595 00596 00597 virtual void startLookTiltRight() {} 00598 virtual void stopLookTiltRight() {} 00599 virtual void lookTiltRight( double rads ) {} 00601 00603 00604 00605 virtual void startLookTiltLeft() {} 00606 virtual void stopLookTiltLeft() {} 00607 virtual void lookTiltLeft( double rads ) {} 00609 00611 virtual void resetCamera() {} 00612 00613 // 00614 // 00616 // 00617 // 00618 00620 virtual void setOrbitSpeed( double speed ) {} 00621 00623 virtual void setSpeedScaledSpeed( double speed ) {} 00624 00626 virtual void setLinearSpeed( double speed ) {} 00627 00629 virtual void setRotationSpeed( double speed ) {} 00630 00632 virtual void setMaxLinearSpeed( double maxSpeed ) {} 00633 00635 virtual void setMinLinearSpeed( double minSpeed ) {} 00636 00638 virtual void setLinearScaledSpeedGain( double gain ) {} 00639 00643 virtual void resetOrientation() {} 00644 00648 virtual void gotoTerrainCenter( DtUniqueID terrainPatch, bool retry ) {} 00649 00651 virtual void resetAttachment() {} 00652 00653 00655 virtual void stopAll() {} 00656 00657 virtual void attachToObjects( const std::vector<DtUniqueID>& ids ) {} 00658 virtual void setSecondaryAttachment( const std::vector<DtUniqueID>& ids ) {} 00659 00660 virtual void attachToPart( int partId) {} 00661 virtual void detach() {} 00662 00664 virtual void setSpeedScaling( bool trueFalse ) {} 00665 00667 virtual void setConstrainToTerrain( bool trueFalse ) {} 00668 virtual void setConstrainToCenter( bool trueFalse ) {} 00669 00671 00672 virtual void increaseViewResolution() {} 00673 virtual void startIncreasingViewResolution() {} 00674 virtual void stopIncreasingViewResolution() {} 00675 virtual void decreaseViewResolution() {} 00676 virtual void startDecreasingViewResolution() {} 00677 virtual void stopDecreasingViewResolution() {} 00678 virtual void setViewResolution( double resolution ) {} 00680 00683 virtual void suppressConstrainToTerrain( bool trueFalse ) {} 00684 virtual void setAttachType( DtObserverObject::AttachType type ) {} 00685 00686 virtual void setHideModelOnAttach( bool hide ) {} 00687 virtual void setOrientToTargetConstraint( bool orient ) {} 00688 virtual void setOrbiting( bool orient ) {} 00689 virtual void setOrientCameraToTargetConstraint( bool orient ) {} 00690 00691 virtual void getLocation( double &x, double &y, double& z ) const 00692 { 00693 x = y = z = 0.; 00694 } 00695 00696 virtual void getOrientation( double& psi, double& theta, double& phi ) const 00697 { 00698 psi = theta = phi = 0.; 00699 } 00700 00702 virtual void getLinearVelocity( double &x, double &y, double &z ) const 00703 { 00704 x = y = z = 0; 00705 } 00706 00708 virtual void getRotationalVelocity( double& x, double& y, double& z) const 00709 { 00710 x = y = z = 0.; 00711 } 00712 00713 virtual void getObserverOffsetVector( double& x, double& y, double& z ) const 00714 { 00715 x = y = z = 0.; 00716 } 00717 00719 virtual void setAttachedLocation( double x, double y, double z ) {} 00720 00722 virtual void setOrientation( double psi, double theta, double phi ) {} 00723 00725 virtual void setOrientation( double x, double y, double z, double w ) {} 00726 00728 virtual void setAttachedOrientation( double psi, double theta, double phi ) {} 00729 00730 virtual void setLocalModelScalingEnabled( bool enabled ) {} 00731 00732 virtual void setLocalModelScalingAmount( float amount ) {} 00733 00734 virtual void setObserverOffsetVector( double x, double y, double z ) {} 00735 00736 virtual void getAttachedRotationOffset( double& x, double& y, double& z, double& w ) const 00737 { 00738 x = y = z = 0.; 00739 w = 1.; 00740 } 00741 00742 virtual void getOrientation( double& x, double& y, double& z, double& w ) const 00743 { 00744 x = y = z = 0.; 00745 w = 1.; 00746 } 00747 00748 virtual void setAttachedRotationOffset( double x, double y, double z, 00749 double w ) {} 00750 00753 virtual bool isMoving() const { return false; } 00754 00755 virtual double topographicHeading() const 00756 { 00757 return 0.0; 00758 } 00759 00761 bool isGlobalTerrain() const 00762 { 00763 return myTerrainIsGlobalFlag; 00764 } 00765 00766 // Sends the location of the observer on the master to all others; only used 00767 // if different 00768 virtual void synchronizeLocation( double x, double y, double z ) {} 00769 00770 // Sends the orientation of the observer on the master to all others; only used 00771 // if different 00772 virtual void synchronizeOrientation( double x, double y, double z, double w ) {} 00773 00774 private: 00775 00777 DtObserverObject( const DtObserverObject& ); 00778 00780 DtObserverObject& operator=( const DtObserverObject& ); 00781 00782 protected: 00783 00784 DtDe& myDe; 00785 std::string myName; 00786 bool myIs2D; 00787 double myScaleFactor; 00788 int myModelSet; 00789 ScaleType myScaleType; 00790 bool myTerrainIsGlobalFlag; 00791 ModeSettingsMap myModeSettingsMap; 00792 00793 }; 00794 00795 }