18#ifndef AGXOSG_SCCAMERA_MANIPULATOR
19#define AGXOSG_SCCAMERA_MANIPULATOR
24#include <osgGA/StandardManipulator>
29# pragma warning( disable : 4251 )
41 typedef osgGA::StandardManipulator inherited;
47 const osg::CopyOp& copyOp = osg::CopyOp::SHALLOW_COPY );
57 virtual void setTransformation(
const osg::Vec3d& eye,
const osg::Vec3d& center,
const osg::Vec3d& up );
59 virtual void getTransformation( osg::Vec3d& eye, osg::Vec3d& center, osg::Vec3d& up )
const;
69 inline double getTrackballSize()
const;
71 inline double getWheelZoomFactor()
const;
73 virtual void setMinimumDistance(
const double& minimumDistance,
bool relativeToModelSize =
false );
81 virtual bool handleMousePush(
const osgGA::GUIEventAdapter& ea, osgGA::GUIActionAdapter& us);
83 virtual bool handleMouseWheel(
const osgGA::GUIEventAdapter& ea, osgGA::GUIActionAdapter& us );
91 bool handleKeyDown(
const osgGA::GUIEventAdapter& ea, osgGA::GUIActionAdapter& us);
92 bool handleKeyUp(
const osgGA::GUIEventAdapter& ea, osgGA::GUIActionAdapter& us);
97 const float px1,
const float py1,
const float scale );
99 bool rotate(
const double eventTimeDelta,
const double dx,
const double dy);
102 virtual void panModel(
const float dx,
const float dy,
const float dz = 0.f );
103 virtual void zoomModel(
const float dy,
bool pushForwardIfNeeded =
true );
104 void trackball( osg::Vec3d& axis,
float& angle,
float p1x,
float p1y,
float p2x,
float p2y );
124 void start(
const osg::Vec3d& movement,
const double startTime );
void start(const osg::Vec3d &movement, const double startTime)
SCCameraManipulator is base class for camera control based on focal center, distance from the center,...
virtual void setTransformation(const osg::Vec3d &eye, const osg::Vec3d ¢er, const osg::Vec3d &up)
virtual void setCenter(const osg::Vec3d ¢er)
SCCameraManipulator(int flags=DEFAULT_SETTINGS)
virtual void setByInverseMatrix(const osg::Matrixd &matrix)
void trackball(osg::Vec3d &axis, float &angle, float p1x, float p1y, float p2x, float p2y)
virtual bool handleMouseWheel(const osgGA::GUIEventAdapter &ea, osgGA::GUIActionAdapter &us)
virtual void rotateTrackball(const float px0, const float py0, const float px1, const float py1, const float scale)
static int _minimumDistanceFlagIndex
virtual bool startAnimationByMousePointerIntersection(const osgGA::GUIEventAdapter &ea, osgGA::GUIActionAdapter &us)
virtual void setWheelZoomFactor(double wheelZoomFactor)
virtual void setByMatrix(const osg::Matrixd &matrix)
virtual osgUtil::SceneView::FusionDistanceMode getFusionDistanceMode() const
virtual void setRotation(const osg::Quat &rotation)
bool setCenterByMousePointerIntersection(const osgGA::GUIEventAdapter &ea, osgGA::GUIActionAdapter &us)
const osg::Quat & getRotation() const
bool rotate(const double eventTimeDelta, const double dx, const double dy)
double getWheelZoomFactor() const
Get the mouse wheel zoom factor.
const osg::Vec3d & getCenter() const
virtual osg::Matrixd getInverseMatrix() const
osg::Vec3 _rotationCenter
virtual void panModel(const float dx, const float dy, const float dz=0.f)
META_Object(agxOSG, SCCameraManipulator)
SCCameraManipulator(const SCCameraManipulator &om, const osg::CopyOp ©Op=osg::CopyOp::SHALLOW_COPY)
virtual void allocAnimationData()
virtual bool performMovementRightMouseButton(const double eventTimeDelta, const double dx, const double dy)
double getDistance() const
virtual bool performMovementLeftMouseButton(const double eventTimeDelta, const double dx, const double dy)
virtual void rotateWithFixedVertical(const float dx, const float dy, const osg::Vec3f &up)
virtual bool performMouseDeltaMovement(const float dx, const float dy)
virtual void setTransformation(const osg::Vec3d &eye, const osg::Quat &rotation)
virtual void setMinimumDistance(const double &minimumDistance, bool relativeToModelSize=false)
virtual void zoomModel(const float dy, bool pushForwardIfNeeded=true)
virtual void getTransformation(osg::Vec3d &eye, osg::Vec3d ¢er, osg::Vec3d &up) const
virtual float getFusionDistanceValue() const
virtual void setTrackballSize(const double &size)
virtual osg::Matrixd getMatrix() const
virtual void applyAnimationStep(const double currentProgress, const double prevProgress)
double getTrackballSize() const
Get the size of the trackball relative to the model size.
virtual bool handleMousePush(const osgGA::GUIEventAdapter &ea, osgGA::GUIActionAdapter &us)
float tb_project_to_sphere(float r, float x, float y)
virtual void getTransformation(osg::Vec3d &eye, osg::Quat &rotation) const
bool handleKeyUp(const osgGA::GUIEventAdapter &ea, osgGA::GUIActionAdapter &us)
bool handleKeyDown(const osgGA::GUIEventAdapter &ea, osgGA::GUIActionAdapter &us)
virtual bool performMovementMiddleMouseButton(const double eventTimeDelta, const double dx, const double dy)
virtual void setDistance(double distance)
double getMinimumDistance(bool *relativeToModelSize=nullptr) const
virtual void rotateWithFixedVertical(const float dx, const float dy)
The agxOSG namespace provides functionality for visualizing AGX simulations with OpenSceneGraph.