OSG  3.4.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
MatrixTransform.h
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_MATRIXTRANSFORM
15 #define OSG_MATRIXTRANSFORM 1
16 
17 #include <osg/Transform>
18 
19 namespace osg {
20 
26 {
27  public :
28 
29 
31 
34 
35  MatrixTransform(const Matrix& matix);
36 
38 
39  virtual MatrixTransform* asMatrixTransform() { return this; }
40  virtual const MatrixTransform* asMatrixTransform() const { return this; }
41 
42 
44  void setMatrix(const Matrix& mat) { _matrix = mat; _inverseDirty=true; dirtyBound(); }
45 
47  inline const Matrix& getMatrix() const { return _matrix; }
48 
50  void preMult(const Matrix& mat) { _matrix.preMult(mat); _inverseDirty=true; dirtyBound(); }
51 
53  void postMult(const Matrix& mat) { _matrix.postMult(mat); _inverseDirty=true; dirtyBound(); }
54 
56  inline const Matrix& getInverseMatrix() const
57  {
58  if (_inverseDirty)
59  {
60  _inverse.invert(_matrix);
61  _inverseDirty = false;
62  }
63  return _inverse;
64  }
65 
66  virtual bool computeLocalToWorldMatrix(Matrix& matrix,NodeVisitor*) const;
67 
68  virtual bool computeWorldToLocalMatrix(Matrix& matrix,NodeVisitor*) const;
69 
70 
71  protected :
72 
73  virtual ~MatrixTransform();
74 
76  mutable Matrix _inverse;
77  mutable bool _inverseDirty;
78 
79 
80 };
81 
82 }
83 
84 #endif
#define OSG_EXPORT
Definition: Export.h:43
void setMatrix(const Matrix &mat)
virtual const MatrixTransform * asMatrixTransform() const
#define META_Node(library, name)
Definition: Node.h:59
const Matrix & getMatrix() const
void preMult(const Matrix &mat)
Definition: AlphaFunc.h:19
bool invert(const Matrixd &rhs)
Definition: Matrixd.h:233
const Matrix & getInverseMatrix() const
void postMult(const Matrix &mat)
virtual MatrixTransform * asMatrixTransform()