55#ifndef _SO_MODEL_MATRIX_ELEMENT
56#define _SO_MODEL_MATRIX_ELEMENT
#define SoEXTENDER
Provide inline template functions for abs, swap, min, max, and clamp.
#define INVENTOR_API
Disable some annoying warnings on MSVC 6.
#define SO_ELEMENT_HEADER(className)
This one is for non-abstract element classes.
Class for representing a rotation.
This is the abstract base class for each state element whose value may be accumulated when it is set.
SoElement()
Constructor; use typeId.createInstance to create elements.
Element that stores the current model matrix - the cumulative transformation applied to subsequent sh...
unsigned int isModelIdentity
virtual void translateEltBy(const SbVec3f &translation)
Each of these performs the appropriate operation on the matrix in an instance.
virtual void multElt(const SbMatrix &matrix)
Multiplies into the matrix in an instance.
virtual ~SoModelMatrixElement()
static void mult(SoState *state, SoNode *node, const SbMatrix &matrix)
Multiplies the given matrix into the model matrix.
static void set(SoState *state, SoNode *node, const SbMatrix &matrix)
Sets the model matrix to the given matrix.
virtual void scaleEltBy(const SbVec3f &scaleFactor)
static void scaleBy(SoState *state, SoNode *node, const SbVec3f &scaleFactor)
static const SbMatrix & get(SoState *state, bool &isIdent)
Returns current model matrix from the state, sets given flag to TRUE if matrix is known to be identit...
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)
virtual void init(SoState *state)
Initializes element.
friend class SoLocalBBoxMatrixElement
virtual void makeEltIdentity()
Sets the matrix in an instance to identity.
virtual SbMatrix pushMatrixElt()
virtual methods for push/pop so GL element can Do The Right Thing:
virtual bool matches(const SoElement *elt) const
Override standard matches to invalidate on cull-test.
virtual void popMatrixElt(const SbMatrix &m)
virtual void print(FILE *fp) const
Prints element (for debugging)
static void rotateBy(SoState *state, SoNode *node, const SbRotation &rotation)
static void makeIdentity(SoState *state, SoNode *node)
Sets the model matrix to the identity matrix.
virtual void rotateEltBy(const SbRotation &translation)
unsigned int haveCullMatrix
TRUE if cullMatrix set.
static void initClass()
Initializes the SoModelMatrixElement class.
static const SbMatrix & get(SoState *state)
Returns current model matrix from the state.
virtual void setElt(const SbMatrix &matrix)
Sets the matrix in an instance to given matrix.
static void translateBy(SoState *state, SoNode *node, const SbVec3f &translation)
Each of these 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.
unsigned int haveModelCull
TRUE if model*cull computed.
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)
These methods are used by the TransformSeparator node.
Abstract base class for all database nodes.