15#ifndef OSGMANIPULATOR_DRAGGER
16#define OSGMANIPULATOR_DRAGGER 1
30class CompositeDragger;
32class TranslateInLineCommand;
33class TranslateInPlaneCommand;
36class ScaleUniformCommand;
49 HANDLE_TRANSLATE_IN_LINE = 1<<0,
50 HANDLE_TRANSLATE_IN_PLANE = 1<<1,
51 HANDLE_SCALED_1D = 1<<2,
52 HANDLE_SCALED_2D = 1<<3,
53 HANDLE_SCALED_UNIFORM = 1<<4,
54 HANDLE_ROTATE_3D = 1<<5,
55 HANDLE_ALL = 0x8ffffff
90 _hitList(rhs._hitList),
91 _nearPoint(rhs._nearPoint),
92 _farPoint(rhs._farPoint),
95 _hitIter = _hitList.begin();
101 _hitIter = _hitList.begin();
106 bool completed()
const {
return _hitIter==_hitList.end(); }
110 if (!completed()) ++_hitIter;
122 _nearPoint = nearPoint;
124 _eyeDir = farPoint - nearPoint;
130 nearPoint = _nearPoint;
131 farPoint = _farPoint;
143 _inverseMVPW.invert(_MVPW);
146 _eyeDir = eye - center;
151 _MVPW.makeIdentity();
152 _inverseMVPW.makeIdentity();
160 bool needToResetHitIter = _hitList.empty();
162 if (needToResetHitIter) _hitIter = _hitList.begin();
167 projectWindowXYIntoObject(
osg::Vec2d(pixel_x, pixel_y), _nearPoint, _farPoint);
259 void addTransformUpdating(MatrixTransform* transform,
int handleCommandMask = DraggerTransformCallback::HANDLE_ALL);
Definition GUIActionAdapter:62
Definition GUIEventAdapter:82
bool containsDragger(const osg::ref_ptr< T > &dc) const
Definition Dragger:346
virtual ~CompositeDragger()
Definition Dragger:357
std::vector< osg::ref_ptr< Dragger > > DraggerList
Definition Dragger:324
bool containsDragger(const Dragger *dragger) const
virtual void setParentDragger(Dragger *parent)
META_Node(osgManipulator, CompositeDragger)
CompositeDragger(const CompositeDragger &rhs, const osg::CopyOp ©op=osg::CopyOp::SHALLOW_COPY)
virtual CompositeDragger * getComposite()
Definition Dragger:327
DraggerList _draggerList
Definition Dragger:359
virtual bool handle(const PointerInfo &pi, const osgGA::GUIEventAdapter &ea, osgGA::GUIActionAdapter &aa)
virtual bool addDragger(Dragger *dragger)
const Dragger * getDragger(unsigned int i) const
Definition Dragger:343
bool removeDragger(const osg::ref_ptr< T > &dc)
Definition Dragger:338
CompositeDragger()
Definition Dragger:354
Dragger * getDragger(unsigned int i)
Definition Dragger:342
virtual const CompositeDragger * getComposite() const
Definition Dragger:326
DraggerList::iterator findDragger(const Dragger *dragger)
virtual bool removeDragger(Dragger *dragger)
bool addDragger(const osg::ref_ptr< T > &dc)
Definition Dragger:335
virtual void setIntersectionMask(osg::Node::NodeMask intersectionMask)
unsigned int getNumDraggers() const
Definition Dragger:340
Constraints _constraints
Definition Dragger:307
const Constraints & getConstraints() const
Definition Dragger:245
osgManipulator::PointerInfo _pointer
Definition Dragger:302
bool _activationPermittedByKeyEvent
Definition Dragger:300
virtual void setupDefaultGeometry()
Definition Dragger:263
unsigned int _activationModKeyMask
Definition Dragger:295
Dragger * getParentDragger()
Definition Dragger:207
virtual void setIntersectionMask(osg::Node::NodeMask intersectionMask)
Definition Dragger:275
bool _activationPermittedByModKeyMask
Definition Dragger:298
void removeTransformUpdating(MatrixTransform *transform)
osg::Node::NodeMask _intersectionMask
Definition Dragger:309
virtual const CompositeDragger * getComposite() const
Definition Dragger:211
virtual bool handle(const osgGA::GUIEventAdapter &ea, osgGA::GUIActionAdapter &aa)
void setActivationMouseButtonMask(unsigned int mask)
Definition Dragger:223
bool getDraggerActive() const
Definition Dragger:269
void addTransformUpdating(MatrixTransform *transform, int handleCommandMask=DraggerTransformCallback::HANDLE_ALL)
int _activationKeyEvent
Definition Dragger:297
virtual void traverse(osg::NodeVisitor &nv)
void removeConstraint(const osg::ref_ptr< T > &c)
Definition Dragger:242
DraggerCallbacks _draggerCallbacks
Definition Dragger:308
virtual bool receive(const MotionCommand &command)
bool _draggerActive
Definition Dragger:293
void addConstraint(Constraint *constraint)
unsigned int getActivationMouseButtonMask() const
Definition Dragger:224
void setHandleEvents(bool flag)
Dragger * _parentDragger
Definition Dragger:304
void addDraggerCallback(DraggerCallback *dc)
const DraggerCallbacks & getDraggerCallbacks() const
Definition Dragger:257
virtual void dispatch(MotionCommand &command)
unsigned int getActivationModKeyMask() const
Definition Dragger:221
void removeConstraint(Constraint *constraint)
void setActivationKeyEvent(int key)
Definition Dragger:226
int getActivationKeyEvent() const
Definition Dragger:227
void addConstraint(const osg::ref_ptr< T > &c)
Definition Dragger:239
osg::Node::NodeMask getIntersectionMask() const
Definition Dragger:276
virtual bool handle(const PointerInfo &, const osgGA::GUIEventAdapter &, osgGA::GUIActionAdapter &)
Definition Dragger:233
bool getHandleEvents() const
Definition Dragger:218
META_Node(osgManipulator, Dragger)
osg::ref_ptr< DraggerCallback > _selfUpdater
Definition Dragger:306
Dragger(const Dragger &rhs, const osg::CopyOp ©op=osg::CopyOp::SHALLOW_COPY)
DraggerCallbacks & getDraggerCallbacks()
Definition Dragger:256
void addDraggerCallback(const osg::ref_ptr< T > &dc)
Definition Dragger:251
const Dragger * getParentDragger() const
Definition Dragger:208
void setActivationModKeyMask(unsigned int mask)
Definition Dragger:220
std::vector< osg::ref_ptr< DraggerCallback > > DraggerCallbacks
Definition Dragger:248
Constraints & getConstraints()
Definition Dragger:244
unsigned int _activationMouseButtonMask
Definition Dragger:296
virtual CompositeDragger * getComposite()
Definition Dragger:214
void removeDraggerCallback(DraggerCallback *dc)
void removeDraggerCallback(const osg::ref_ptr< T > &dc)
Definition Dragger:254
std::vector< osg::ref_ptr< Constraint > > Constraints
Definition Dragger:236
void setDraggerActive(bool active)
Definition Dragger:268
virtual void setParentDragger(Dragger *parent)
Definition Dragger:205
bool _handleEvents
Definition Dragger:292
void applyAppropriateFrontFace(osg::StateSet *ss) const
bool _activationPermittedByMouseButtonMask
Definition Dragger:299
void next()
Definition Dragger:108
void setCamera(osg::Camera *camera)
Definition Dragger:136
void setMousePosition(float pixel_x, float pixel_y)
Definition Dragger:165
osg::Matrix _MVPW
Definition Dragger:182
IntersectionList::const_iterator _hitIter
Definition Dragger:175
osg::Vec3d _eyeDir
Definition Dragger:180
IntersectionList _hitList
Definition Dragger:174
std::list< NodePathIntersectionPair > IntersectionList
Definition Dragger:114
osg::Matrix _inverseMVPW
Definition Dragger:183
const osg::Vec3d & getEyeDir() const
Definition Dragger:127
void getNearFarPoints(osg::Vec3d &nearPoint, osg::Vec3d &farPoint) const
Definition Dragger:129
void addIntersection(const osg::NodePath &nodePath, const osg::Vec3d &intersectionPoint)
Definition Dragger:158
std::pair< osg::NodePath, osg::Vec3d > NodePathIntersectionPair
Definition Dragger:113
void setNearFarPoints(osg::Vec3d nearPoint, osg::Vec3d farPoint)
Definition Dragger:121
bool projectWindowXYIntoObject(const osg::Vec2d &windowCoord, osg::Vec3d &nearPoint, osg::Vec3d &farPoint) const
osg::Vec3d _farPoint
Definition Dragger:179
osg::Vec3d getLocalIntersectPoint() const
Definition Dragger:117
void reset()
Definition Dragger:98
PointerInfo(const PointerInfo &rhs)
Definition Dragger:89
bool contains(const osg::Node *node) const
bool completed() const
Definition Dragger:106
osg::Matrixd & getProjectionMatrix()
Definition Camera:216
const Viewport * getViewport() const
Definition Camera:156
osg::Matrixd & getViewMatrix()
Definition Camera:250
@ SHALLOW_COPY
Definition CopyOp:47
Vec3f postMult(const Vec3f &v) const
Definition Matrixd:602
void getLookAt(Vec3f &eye, Vec3f ¢er, Vec3f &up, value_type lookDistance=1.0f) const
Definition NodeVisitor:82
unsigned int NodeMask
Definition Node:363
const osg::Matrix computeWindowMatrix() const
Definition Viewport:129
Definition observer_ptr:39
T * get() const
Definition ref_ptr:117
void OSGMANIPULATOR_EXPORT setDrawableToAlwaysCull(osg::Drawable &drawable)
void OSGMANIPULATOR_EXPORT setMaterialColor(const osg::Vec4 &color, osg::Node &node)
OSGMANIPULATOR_EXPORT void computeNodePathToRoot(osg::Node &node, osg::NodePath &np)
std::vector< Node * > NodePath
Definition Node:47
#define OSGMANIPULATOR_EXPORT
Definition osgManipulator/Export:27