logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

SoSurroundScale — transformation node that adjusts the current matrix so a default cube will surround

Action Behavior

SoGLRenderAction,SoCallbackAction,SoGetBoundingBoxAction,SoRayPickAction
          Accumulates scaling and translation transformations into the current transformation.

     SoGetMatrixAction
          Returns the matrix corresponding to the scaling and translation.

Description

       When traversed by an action, this node appends a transformation to the current transformation  matrix  so
       that  a default size cube will surround the objects specified by its fields. Transform manipulators, such
       as SoHandleBoxManip, use these nodes to make themselves surround other objects.

       This node only recalculates after the invalidate() method has been called.  Otherwise  it  uses  a  saved
       scale and translation.

       When calculating what to surround, the SoSurroundScale looks at the current path in the action and at its
       own   field  values.  Then  SoSurroundScale  applies  an  SoGetBoundingBoxAction  to  the  node  that  is
       numNodesUpToContainer nodes above it on the path. SoSurroundScale also tells  the  action  to  reset  the
       bounding  box  upon  traversal  of  the  node  located  numNodesUpToReset nodes above it in the path. The
       SoSurroundScale then appends a translation and scale to the current transformation so that a default size
       SoCube will translate and scale to fit this bounding box.

       For example, when an SoHandleBoxManip wants to surround the objects it is going to move, the scene  graph
       will look something like this:
                           RootNode-------------------------||handleBoxManipmovingStuff|handleBoxDragger|separator-----------------------------------|||motionMatrixsurroundScalecubeGeom
     The SoHandleBoxDragger wants to transform the cubeGeom so that it surrounds the movingStuff. So it sets the
     surroundScale fields to:

               numNodesUpToContainer = 4;
               numNodesUpToReset = 3;

     The   SoBoundingBoxAction   will   then  be  applied  to  RootNode,  with  a  reset  after  traversing  the
     SoHandleBoxManip. So the SoSurroundScale will surround the objects below separator, and  to  the  right  of
     handleBoxManip, producing the desired effect.

Fields

SoSFInt32numNodesUpToContainer
          When traversed by an action, if surroundScale needs to calculate a new box, surroundScale looks at the
          current path in the action. It travels up this path a distance of numNodesUpToContainer and applies an
          SoGetBoundingBoxAction to the node that it finds there.

     SoSFInt32numNodesUpToReset
          Before   applying   the   SoGetBoundingBoxAction   (see  the  numNodesUpToContainer  field  aove)  the
          surroundScale node travels up the path a distance of numNodesUpToReset and tells the action  to  reset
          the bounding box upon traversal of that node.

File Format/Defaults

SurroundScale{numNodesUpToContainer0numNodesUpToReset0}

Inherits From

       SoBase > SoFieldContainer > SoNode > SoTransformation > SoSurroundScale

Methods

SoSurroundScale()
          Creates a surround scale node with default settings.

     voidinvalidate()
          If  you  call  this,  then  next  time  an  action  is  applied the node will re-calculate it's cached
          translation and scale values.

     staticSoTypegetClassTypeId()
          Returns type identifier for this class.

Name

       SoSurroundScale  —  transformation  node  that adjusts the current matrix so a default cube will surround
       other objects

See Also

SoTransformation,SoTransformManip,SoCenterballDragger,SoCenterballManip,SoHandleBoxDragger,SoHandleBoxManip,SoJackDragger,SoJackManip,SoTabBoxDragger,SoTabBoxManip,SoTrackballDragger,SoTrackballManip,SoTransformBoxDragger,SoTransformBoxManipSoSurroundScale(3IV)()

Synopsis

#include<Inventor/nodes/SoSurroundScale.h>

          Fields from class SoSurroundScale:

     SoSFInt32numNodesUpToContainerSoSFInt32numNodesUpToReset

          Methods from class SoSurroundScale:

                         SoSurroundScale()voidinvalidate()staticSoTypegetClassTypeId()

          Methods from class SoNode:

     voidsetOverride(SbBoolstate)SbBoolisOverride()constSoNode*copy(SbBoolcopyConnections=FALSE)constvirtualSbBoolaffectsState()conststaticSoNode*getByName(constSbName&name)staticintgetByName(constSbName&name,SoNodeList&list)

          Methods from class SoFieldContainer:

     voidsetToDefaults()SbBoolhasDefaultValues()constSbBoolfieldsAreEqual(constSoFieldContainer*fc)constvoidcopyFieldValues(constSoFieldContainer*fc,SbBoolcopyConnections=FALSE)SbBoolset(constchar*fieldDataString)voidget(SbString&fieldDataString)virtualintgetFields(SoFieldList&resultList)constvirtualSoField*getField(constSbName&fieldName)constSbBoolgetFieldName(constSoField*field,SbName&fieldName)constSbBoolisNotifyEnabled()constSbBoolenableNotify(SbBoolflag)

          Methods from class SoBase:

     voidref()voidunref()constvoidunrefNoDelete()constvoidtouch()virtualSoTypegetTypeId()constSbBoolisOfType(SoTypetype)constvirtualvoidsetName(constSbName&name)virtualSbNamegetName()const

See Also