51#ifndef _SO_MODEL_MATRIX_ELEMENT
52#define _SO_MODEL_MATRIX_ELEMENT
54#include <Inventor/SbLinear.h>
55#include <Inventor/elements/SoAccumulatedElement.h>
180 virtual void init(
SoState *state);
188 virtual SoElement* copyMatchInfo()
const;
192 static void initClass();
193 static void exitClass();
194 const SbMatrix& getModelMatrix()
const {
return modelMatrix; }
195 SbBool isIdent()
const {
return flags.isModelIdentity; }
234 static void resetForwardTraversalMatrix(
SoState *state);
238 virtual void makeEltIdentity();
241 virtual void setElt(
const SbMatrix &matrix,
SbBool sendToGL = TRUE);
244 virtual void multElt(
const SbMatrix &matrix);
248 virtual void translateEltBy(
const SbVec3f &translation);
249 virtual void rotateEltBy(
const SbRotation &translation);
250 virtual void scaleEltBy(
const SbVec3f &scaleFactor);
254 virtual void popMatrixElt(
const SbMatrix &m);
271 unsigned int isModelIdentity : 1;
272 unsigned int haveCullMatrix : 1;
273 unsigned int haveModelCull : 1;
Class for representing a rotation.
Abstract base class for each state element whose value may be accumulated when it is set.
Abstract base class for all state elements.
Stores the transformation matrix from object space to some local coordinate space during application ...
Stores the current model matrix.
static void mult(SoState *state, SoNode *node, const SbMatrix &matrix)
Multiplies the given matrix into the model matrix.
static void scaleBy(SoState *state, SoNode *node, const SbVec3f &scaleFactor)
This multiplies a matrix that performs the specified transformation into the model matrix.
virtual void push(SoState *state)
Overrides push() method to copy values from next instance in the stack.
static void popMatrix(SoState *state, const SbMatrix &m)
This method is used by the TransformSeparator node.
static const SbMatrix & get(SoState *state, SbBool &isIdent)
Returns current model matrix from the state, sets given flag to TRUE if matrix is known to be identit...
virtual void print(FILE *fp) const
Prints element (for debugging).
static void rotateBy(SoState *state, SoNode *node, const SbRotation &rotation)
This multiplies a matrix that performs the specified transformation into the model matrix.
static void makeIdentity(SoState *state, SoNode *node)
Sets the model matrix to the identity matrix.
static void set(SoState *state, SoNode *node, const SbMatrix &matrix, SbBool sendToGL=TRUE)
Sets the model matrix to the given matrix.
static const SbMatrix & get(SoState *state)
Returns current model matrix from the state.
static void translateBy(SoState *state, SoNode *node, const SbVec3f &translation)
This multiplies a matrix that performs the specified transformation into the model matrix.
static void setCullMatrix(SoState *state, SoNode *node, const SbMatrix &matrix)
Sets the transformation that defines the volume that view-volume culling should be tested against.
static const SbMatrix & getCombinedCullMatrix(SoState *state)
This method gets the model*cullMatrix combined matrix (which is cached by this element).
static SbMatrix pushMatrix(SoState *state)
This method is used by the TransformSeparator node.
Abstract base class for all database nodes.