SoSeparator(3IV)

SoSeparator (SoSep) - group node that saves and restores traversal state

As shipped in IRIX 6.5.22. Added in IRIX 6.5.22.

NAME
     SoSeparator (SoSep) - group node that saves and restores traversal state

INHERITS FROM
     SoBase > SoFieldContainer > SoNode > SoGroup > SoSeparator

SYNOPSIS
     #include <Inventor_c/nodes/SoSeparator.h>

     typedef SoSeparator  SoSep

     enum SoSeparatorCacheEnabled {
          SO_SEP_OFF          Never build a cache
          SO_SEP_ON           Always try to build a cache
          SO_SEP_AUTO         Decide whether to cache based on some heuristic
     }

          Fields from class SoSeparator:

     SoSFEnum            renderCaching
     SoSFEnum            boundingBoxCaching
     SoSFEnum            renderCulling
     SoSFEnum            pickCulling

          Functions from class SoSeparator:

     SoSeparator *       SoSepCreate()
     SoSeparator *       SoSepCreateN(int nChildren)
     void                SoSepSetNumRenderCaches(int howMany)
     int                 SoSepGetNumRenderCaches()
     SoType              SoSepGetClassTypeId()

          Functions from class SoGroup:

     void                SoSepAddChild(SoSep *this, SoNode *child)
     void                SoSepInsertChild(SoSep *this, SoNode *child, int
                              newChildIndex)
     SoNode *            SoSepGetChild(const SoSep *this, int index)
     int                 SoSepFindChild(const SoSep *this, const SoNode
                              *child)
     int                 SoSepGetNumChildren(const SoSep *this)
     void                SoSepRemoveChild(SoSep *this, int index)
     void                SoSepRemoveChildNode(SoSep *this, SoNode *child)
     void                SoSepRemoveAllChildren(SoSep *this)
     void                SoSepReplaceChild(SoSep *this, int index, SoNode
                              *newChild)
     void                SoSepReplaceChildNode(SoSep *this, SoNode *oldChild,
                              SoNode *newChild)

          Functions from class SoNode:

     void                SoSepSetOverride(SoSep *this, SbBool state)
     SbBool              SoSepIsOverride(const SoSep *this)
     SoNode *            SoSepCopy(const SoSep *this, SbBool copyConnections =
                              FALSE)
     SbBool              SoSepAffectsState(const SoSep *this)
     SoNode *            SoSepGetByName(const char *name)
     int                 SoSepGetByNameList(const char *name, SoNodeList
                              *list)

          Functions from class SoFieldContainer:

     void                SoSepSetToDflts(SoSep *this)
     SbBool              SoSepHasDfltVals(const SoSep *this)
     SbBool              SoSepFldsAreEq(const SoSep *this, const
                              SoFieldContainer *fc)
     void                SoSepCopyFieldVals(SoSep *this, const
                              SoFieldContainer *fc, SbBool copyConnections =
                              FALSE)
     SbBool              SoSepSet(SoSep *this, const char *fieldDataString)
     void                SoSepGet(SoSep *this, SbString *fieldDataString)
     int                 SoSepGetFields(const SoSep *this, SoFieldList
                              *resultList)
     SoField *           SoSepGetField(const SoSep *this, const char
                              *fieldName)
     SbBool              SoSepGetFieldName(const SoSep *this, const SoField
                              *field, SbName *fieldName)
     SbBool              SoSepIsNotifyEnabled(const SoSep *this)
     SbBool              SoSepEnableNotify(SoSep *this, SbBool flag)

          Functions from class SoBase:

     void                SoSepRef(SoSep *this)
     void                SoSepUnref(const SoSep *this)
     void                SoSepUnrefNoDelete(const SoSep *this)
     void                SoSepTouch(SoSep *this)
     SoType              SoSepGetTypeId(const SoSep *this)
     SbBool              SoSepIsOfType(const SoSep *this, SoType type)
     void                SoSepSetName(SoSep *this, const char *name)
     SbName              SoSepGetName(const SoSep *this)


DESCRIPTION
     This group node performs a push (save) of the traversal state before
     traversing its children and a pop (restore) after traversing them. This
     isolates the separator's children from the rest of the scene graph. A
     separator can include lights, cameras, coordinates, normals, bindings,
     and all other properties. Separators are relatively inexpensive, so they
     can be used freely within scenes.

     The SoSeparator node provides caching of state during rendering and
     bounding box computation. This feature can be enabled by setting the
     renderCaching and boundingBoxCaching fields. By default, these are set to
     AUTO, which means that Inventor decides whether to build a cache based on
     internal heuristics.

     Separators can also perform culling during rendering and picking. Culling
     skips over traversal of the separator's children if they are not going to
     be rendered or picked, based on the comparison of the separator's
     bounding box with the current view volume. Culling is controlled by the
     renderCulling and pickCulling fields. These are also set to AUTO by
     default; however, render culling can be expensive (and can interfere with
     render caching), so the AUTO heuristics leave it disabled unless
     specified otherwise.

FIELDS
     SoSFEnum            renderCaching
          Whether to cache during rendering traversal.

     SoSFEnum            boundingBoxCaching
          Whether to cache during bounding box traversal.

     SoSFEnum            renderCulling
          Whether to cull during rendering traversal.

     SoSFEnum            pickCulling
          Whether to cull during picking traversal.


FUNCTIONS
     SoSeparator *       SoSepCreate()
          Creates a separator node with default settings.

     SoSeparator *       SoSepCreateN(int nChildren)
          Constructor that takes approximate number of children.

     void                SoSepSetNumRenderCaches(int howMany)
          By default, each separator node maintains 2 render caches. (This is
          to allow two different representations, such as filled and wire-
          frame, to both be cached.) The  SoSepSetNumRenderCaches() function
          sets the number of render caches each separator will have. Each
          render cache uses memory, so increasing this number may increase the
          memory requirements of the application. This method affects only
          separators that are created after it is called, not separators that
          were created before. Setting the number of caches to 0 turns off
          render caching globally from then on.

     int                 SoSepGetNumRenderCaches()
          Returns the current number of render caches.

     SoType              SoSepGetClassTypeId()
          Returns type identifier for this class.

ACTION BEHAVIOR
     SoGLRenderAction, SoCallbackAction, SoGetBoundingBoxAction,
     SoGetMatrixAction, SoHandleEventAction, SoRayPickAction, SoSearchAction
          Saves the current traversal state, traverses all children, and
          restores the previous traversal state.


FILE FORMAT/DEFAULTS
     Separator {
          renderCaching       AUTO
          boundingBoxCaching  AUTO
          renderCulling       AUTO
          pickCulling         AUTO
     }

SEE ALSO
     SoSelection, SoTransformSeparator