openscenegraph
AutoTransform
Go to the documentation of this file.
1/* -*-c++-*- OpenSceneGraph - Copyright (C) 1998-2006 Robert Osfield
2 *
3 * This library is open source and may be redistributed and/or modified under
4 * the terms of the OpenSceneGraph Public License (OSGPL) version 0.0 or
5 * (at your option) any later version. The full license is in LICENSE file
6 * included with this distribution, and on the openscenegraph.org website.
7 *
8 * This library is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * OpenSceneGraph Public License for more details.
12*/
13
14#ifndef OSG_AUTOTRANSFORM
15#define OSG_AUTOTRANSFORM 1
16
17#include <osg/Group>
18#include <osg/Transform>
19#include <osg/Quat>
20#include <osg/Viewport>
21
22namespace osg {
23
28{
29 public :
31
32 AutoTransform(const AutoTransform& pat,const CopyOp& copyop=CopyOp::SHALLOW_COPY);
33
34 virtual osg::Object* cloneType() const { return new AutoTransform (); }
35 virtual osg::Object* clone(const osg::CopyOp& copyop) const { return new AutoTransform (*this,copyop); }
36 virtual bool isSameKindAs(const osg::Object* obj) const { return dynamic_cast<const AutoTransform *>(obj)!=NULL; }
37 virtual const char* className() const { return "AutoTransform"; }
38 virtual const char* libraryName() const { return "osg"; }
39
40 virtual AutoTransform* asAutoTransform() { return this; }
41 virtual const AutoTransform* asAutoTransform() const { return this; }
42
43 inline void setPosition(const Vec3d& pos) { _position = pos; dirtyBound(); }
44 inline const Vec3d& getPosition() const { return _position; }
45
46
47 inline void setRotation(const Quat& quat) { _rotation = quat; dirtyBound(); }
48 inline const Quat& getRotation() const { return _rotation; }
49
50 inline void setScale(double scale) { setScale(osg::Vec3(scale,scale,scale)); }
51
52 void setScale(const Vec3d& scale);
53 inline const Vec3d& getScale() const { return _scale; }
54
55 void setMinimumScale(double minimumScale) { _minimumScale = minimumScale; }
56 double getMinimumScale() const { return _minimumScale; }
57
58 void setMaximumScale(double maximumScale) { _maximumScale = maximumScale; }
59 double getMaximumScale() const { return _maximumScale; }
60
61 inline void setPivotPoint(const Vec3d& pivot) { _pivotPoint = pivot; dirtyBound(); }
62 inline const Vec3d& getPivotPoint() const { return _pivotPoint; }
63
64
65 void setAutoUpdateEyeMovementTolerance(float tolerance) { _autoUpdateEyeMovementTolerance = tolerance; }
66 float getAutoUpdateEyeMovementTolerance() const { return _autoUpdateEyeMovementTolerance; }
67
68
76
78
79 AutoRotateMode getAutoRotateMode() const { return _autoRotateMode; }
80
83 void setAxis(const Vec3& axis);
85 inline const Vec3& getAxis() const { return _axis; }
86
88 void setNormal(const Vec3& normal);
90 inline const Vec3& getNormal() const { return _normal; }
91
92 void setAutoScaleToScreen(bool autoScaleToScreen);
93 bool getAutoScaleToScreen() const { return _autoScaleToScreen; }
94
95 void setAutoScaleTransitionWidthRatio(float ratio) { _autoScaleTransitionWidthRatio = ratio; }
96 float getAutoScaleTransitionWidthRatio() const { return _autoScaleTransitionWidthRatio; }
97
98
99 virtual bool computeLocalToWorldMatrix(Matrix& matrix,NodeVisitor* nv) const;
100
101 virtual bool computeWorldToLocalMatrix(Matrix& matrix,NodeVisitor* nv) const;
102
103 protected :
104
105 virtual ~AutoTransform() {}
106
110
112
114
116 mutable Vec3d _scale;
117
121
123
125 {
126 AXIAL_ROT_X_AXIS=ROTATE_TO_AXIS+1,
129 CACHE_DIRTY
130 };
131
134
135 // used internally as cache of which what _axis is aligned to help
136 // decide which method of rotation to use.
140
141};
142
143}
144
145#endif
Definition AutoTransform:28
bool getAutoScaleToScreen() const
Definition AutoTransform:93
double getMinimumScale() const
Definition AutoTransform:56
Vec3 _axis
Definition AutoTransform:132
Quat _rotation
Definition AutoTransform:115
void setAutoRotateMode(AutoRotateMode mode)
float getAutoScaleTransitionWidthRatio() const
Definition AutoTransform:96
AxisAligned
Definition AutoTransform:125
@ AXIAL_ROT_Y_AXIS
Definition AutoTransform:127
@ AXIAL_ROT_Z_AXIS
Definition AutoTransform:128
int _cachedMode
Definition AutoTransform:137
bool _autoScaleToScreen
Definition AutoTransform:113
double _maximumScale
Definition AutoTransform:119
const Vec3d & getScale() const
Definition AutoTransform:53
void setPivotPoint(const Vec3d &pivot)
Definition AutoTransform:61
double _minimumScale
Definition AutoTransform:118
const Vec3d & getPosition() const
Definition AutoTransform:44
Vec3 _side
Definition AutoTransform:138
const Vec3d & getPivotPoint() const
Definition AutoTransform:62
void setAutoScaleToScreen(bool autoScaleToScreen)
virtual ~AutoTransform()
Definition AutoTransform:105
AutoRotateMode _autoRotateMode
Definition AutoTransform:111
double getMaximumScale() const
Definition AutoTransform:59
AutoRotateMode getAutoRotateMode() const
Definition AutoTransform:79
void setAxis(const Vec3 &axis)
Vec3d _pivotPoint
Definition AutoTransform:108
virtual osg::Object * cloneType() const
Definition AutoTransform:34
Vec3 _normal
Definition AutoTransform:133
void setAutoScaleTransitionWidthRatio(float ratio)
Definition AutoTransform:95
AutoRotateMode
Definition AutoTransform:70
@ ROTATE_TO_CAMERA
Definition AutoTransform:73
@ ROTATE_TO_SCREEN
Definition AutoTransform:72
@ NO_ROTATION
Definition AutoTransform:71
virtual const char * libraryName() const
Definition AutoTransform:38
double _autoScaleTransitionWidthRatio
Definition AutoTransform:120
const Quat & getRotation() const
Definition AutoTransform:48
virtual bool computeWorldToLocalMatrix(Matrix &matrix, NodeVisitor *nv) const
virtual bool computeLocalToWorldMatrix(Matrix &matrix, NodeVisitor *nv) const
Vec3d _position
Definition AutoTransform:107
Vec3d _scale
Definition AutoTransform:116
virtual const char * className() const
Definition AutoTransform:37
AutoTransform(const AutoTransform &pat, const CopyOp &copyop=CopyOp::SHALLOW_COPY)
virtual const AutoTransform * asAutoTransform() const
Definition AutoTransform:41
void setScale(const Vec3d &scale)
void setMinimumScale(double minimumScale)
Definition AutoTransform:55
osg::Matrixd computeMatrix(const osg::NodeVisitor *nv) const
float getAutoUpdateEyeMovementTolerance() const
Definition AutoTransform:66
double _autoUpdateEyeMovementTolerance
Definition AutoTransform:109
virtual osg::Object * clone(const osg::CopyOp &copyop) const
Definition AutoTransform:35
const Vec3 & getNormal() const
Definition AutoTransform:90
virtual AutoTransform * asAutoTransform()
Definition AutoTransform:40
void setRotation(const Quat &quat)
Definition AutoTransform:47
void setMaximumScale(double maximumScale)
Definition AutoTransform:58
void setPosition(const Vec3d &pos)
Definition AutoTransform:43
void setAutoUpdateEyeMovementTolerance(float tolerance)
Definition AutoTransform:65
void setNormal(const Vec3 &normal)
const Vec3 & getAxis() const
Definition AutoTransform:85
void setScale(double scale)
Definition AutoTransform:50
virtual bool isSameKindAs(const osg::Object *obj) const
Definition AutoTransform:36
Definition CopyOp:41
Definition Matrixd:27
Definition NodeVisitor:82
Definition Object:61
Definition Quat:30
Definition Transform:75
Definition Vec3d:30
Definition Vec3f:29
author: Julien Valentin 2017 (mp3butcher@hotmail.com)
Definition AlphaFunc:19
#define NULL
Definition osg/Export:55
#define OSG_EXPORT
Definition osg/Export:39