Show
Ignore:
Timestamp:
02/15/10 21:15:32 (4 years ago)
Author:
robert
Message:

Refactor various NodeTracker? and MatrixManipulator? classes to use the osg::ObserverNodePath? and osg::oberserver_ptr<> classes

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • OpenSceneGraph/trunk/include/osgGA/NodeTrackerManipulator

    r10764 r11061  
    1616 
    1717#include <osgGA/MatrixManipulator> 
    18  
     18#include <osg/ObserverNodePath> 
    1919#include <osg/Quat> 
    20 #include <osg/observer_ptr> 
    21  
    22 #include <iterator> 
    2320 
    2421namespace osgGA{ 
     
    3229        virtual const char* className() const { return "NodeTrackerManipulator"; } 
    3330 
    34         typedef std::vector< osg::observer_ptr<osg::Node> >   ObserverNodePath; 
    35  
    36         void setTrackNodePath(const osg::NodePath& nodePath) 
    37         { 
    38            _trackNodePath.clear(); 
    39            _trackNodePath.reserve(nodePath.size()); 
    40            std::copy(nodePath.begin(), nodePath.end(), std::back_inserter(_trackNodePath)); 
    41         } 
    42  
    43         void setTrackNodePath(const ObserverNodePath& nodePath) { _trackNodePath = nodePath; } 
    44         ObserverNodePath& getTrackNodePath() { return _trackNodePath; } 
     31        void setTrackNodePath(const osg::NodePath& nodePath) { _trackNodePath.setNodePath(nodePath); } 
     32        void setTrackNodePath(const osg::ObserverNodePath& nodePath) { _trackNodePath = nodePath; } 
     33        osg::ObserverNodePath& getTrackNodePath() { return _trackNodePath; } 
    4534 
    4635        void setTrackNode(osg::Node* node); 
    47         osg::Node* getTrackNode() { return _trackNodePath.empty() ? 0 : _trackNodePath.back().get(); } 
    48         const osg::Node* getTrackNode() const { return _trackNodePath.empty() ? 0 : _trackNodePath.back().get(); } 
     36        osg::Node* getTrackNode(); 
     37        const osg::Node* getTrackNode() const; 
    4938 
    5039        enum TrackerMode  
     
    129118 
    130119        virtual ~NodeTrackerManipulator(); 
    131          
    132         osg::NodePath getNodePath() const; 
    133  
    134         bool validateNodePath() const; 
    135120 
    136121        /** Reset the internal GUIEvent stack.*/ 
    137122        void flushMouseEventStack(); 
     123 
    138124        /** Add the current mouse GUIEvent to internal stack.*/ 
    139125        void addMouseEvent(const GUIEventAdapter& ea); 
    140  
    141         void computeNodeWorldToLocal(osg::Matrixd& worldToLocal) const; 
    142         void computeNodeLocalToWorld(osg::Matrixd& localToWorld) const; 
    143126 
    144127        void computeNodeCenterAndRotation(osg::Vec3d& center, osg::Quat& rotation) const; 
     
    166149        osg::ref_ptr<const GUIEventAdapter> _ga_t0; 
    167150 
    168         osg::ref_ptr<osg::Node> _node; 
    169          
    170         ObserverNodePath      _trackNodePath; 
     151        osg::observer_ptr<osg::Node> _node; 
     152 
     153        osg::ObserverNodePath   _trackNodePath; 
    171154 
    172155        TrackerMode             _trackerMode; 
     
    174157 
    175158        bool                    _thrown; 
    176          
     159 
    177160        osg::Quat               _nodeRotation; 
    178161        osg::Quat               _rotation;