Show
Ignore:
Timestamp:
11/26/07 22:53:32 (1 year ago)
Author:
vossg
Message:

changed: more flexible navigators, allow user navigator (thanks to M. Spindler for the code)

: add _d when pulling windows dlls

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/Source/System/Window/Utilities/OSGNavigator.h

    r948 r1021  
    5151#include "OSGQuaternion.h" 
    5252#include "OSGIntersectAction.h" 
    53 #include "OSGTrackballNavigator.h" 
    54 #include "OSGFlyNavigator.h" 
    55 #include "OSGWalkNavigator.h" 
    5653 
    5754OSG_BEGIN_NAMESPACE 
     55 
     56class NavigatorEngine; 
     57class TrackballEngine; 
     58class FlyEngine; 
     59class WalkEngine; 
     60class NoneEngine; 
     61 
     62typedef TrackballEngine TrackballNavigator; 
     63typedef FlyEngine       FlyNavigator; 
     64typedef WalkEngine      WalkNavigator; 
    5865 
    5966/*! \brief General Navigator for wrapping simple navigators. See \ref  
     
    7077        FLY, 
    7178        WALK, 
    72         NONE 
     79        NONE, 
     80        USER 
    7381    }; 
    7482 
     
    152160    void setCameraTransformation(const NodePtr & new_cartn); 
    153161 
     162    void setUserEngine(NavigatorEngine* userEngine); 
     163 
    154164    /*! \}                                                                 */ 
    155165    /*---------------------------------------------------------------------*/ 
     
    169179          bool    getClickCenter(); 
    170180          bool    getClickNoIntersect(); 
    171      
    172           TrackballNavigator* getTrackballNavigator() { return &_trackball; } 
    173           FlyNavigator      * getFlyNavigator      () { return &_flyer;     } 
    174           WalkNavigator     * getWalkNavigator     () { return &_walker;    } 
     181 
     182          // --- added by Martin: 
     183          bool    getMoved(void); 
     184          Real32  getLastX(void); 
     185          Real32  getLastY(void); 
     186    ViewportPtr   getViewport(void); 
     187 
     188    TrackballEngine*  getTrackballNavigator(void); 
     189    FlyEngine*        getFlyNavigator(void); 
     190    WalkEngine*       getWalkNavigator(void); 
     191    NoneEngine*       getNoneNavigator(void); 
     192    NavigatorEngine*  getUserNavigator(void); 
    175193 
    176194    /*! \}                                                                 */ 
     
    182200    /*! \{                                                                 */ 
    183201 
    184     TrackballNavigator _trackball; 
    185     FlyNavigator       _flyer; 
    186     WalkNavigator      _walker; 
    187  
    188     Real32      _rRotationAngle; 
    189     Real32      _rMotionFactor; 
    190     State       _currentState; 
    191     Mode        _currentMode; 
    192     bool        _absolute; 
    193  
    194     ViewportPtr _vp; 
    195     NodePtr     _cartN; 
    196  
    197     bool        _moved; 
    198     bool        _clickCenter; 
    199     bool        _clickNoIntersect; 
    200     Real32      _lastX, _lastY; 
    201     Pnt3f       _ip; 
    202     Vec3f       _dir; 
     202    NavigatorEngine*   _engine; // pointer to current engine 
     203 
     204    TrackballEngine*   _trackballEngine; 
     205    FlyEngine*         _flyEngine; 
     206    WalkEngine*        _walkEngine; 
     207    NoneEngine*        _noneEngine; 
     208    NavigatorEngine*   _userEngine; 
     209 
     210    Real32             _rRotationAngle; 
     211    Real32             _rMotionFactor; 
     212    bool               _absolute; 
     213 
     214    ViewportPtr        _vp; 
     215    NodePtr            _cartN; 
     216 
     217    bool               _moved; 
     218    bool               _clickCenter; 
     219    bool               _clickNoIntersect; 
     220    Real32             _lastX, _lastY; 
     221 
    203222    Matrix      theMatrix; 
    204223 
    205     Matrix      _NoneMatrix; 
    206  
    207     /*! \}                                                                 */ 
    208  
    209     void setNoneMatrix(Pnt3f new_from, Pnt3f new_at, Vec3f new_up); 
    210  
    211     void getIntersectionPoint(Int16 x, Int16 y); 
    212     void calcDeltas(Int16 fromX, Int16 fromY, Int16 toX, Int16 toY, 
    213                           Real32 &distanceX, Real32 &distanceY); 
    214  
     224    /*! \}                                                                 */ 
     225 
     226 public: 
     227    bool calcFromTo(Int16 x, Int16 y, Real32& fromX, Real32& fromY, 
     228                    Real32& toX, Real32& toY); 
    215229}; 
    216230