Provided by: inventor-doc_2.1.5-10-18_all bug

NAME

       SoArray — group node that creates a regular IxJxK array of copies of its children

INHERITS FROM

       SoBase > SoFieldContainer > SoNode > SoGroup > SoArray

SYNOPSIS

       #include <Inventor/nodes/SoArray.h>

     enum Origin {
          SoArray::FIRST      First  copy  is  rendered  at  the  current  local  origin;  all  other copies are
                                   distributed relative to it
          SoArray::CENTER     Copies are distributed relative to the center of the array
          SoArray::LAST       Last copy  is  rendered  at  the  current  local  origin;  all  other  copies  are
                                   distributed relative to it
     }

          Fields from class SoArray:

     SoSFShort           numElements1
     SoSFShort           numElements2
     SoSFShort           numElements3
     SoSFVec3f           separation1
     SoSFVec3f           separation2
     SoSFVec3f           separation3
     SoSFEnum            origin

          Methods from class SoArray:

                         SoArray()
     static SoType       getClassTypeId()

          Methods from class SoGroup:

     void                addChild(SoNode *child)
     void                insertChild(SoNode *child, int newChildIndex)
     SoNode *            getChild(int index) const
     int                 findChild(const SoNode *child) const
     int                 getNumChildren() const
     void                removeChild(int index)
     void                removeChild(SoNode *child)
     void                removeAllChildren()
     void                replaceChild(int index, SoNode *newChild)
     void                replaceChild(SoNode *oldChild, SoNode *newChild)

          Methods from class SoNode:

     void                setOverride(SbBool state)
     SbBool              isOverride() const
     SoNode *            copy(SbBool copyConnections = FALSE) const
     virtual SbBool      affectsState() const
     static SoNode *     getByName(const SbName &name)
     static int          getByName(const SbName &name, SoNodeList &list)

          Methods from class SoFieldContainer:

     void                setToDefaults()
     SbBool              hasDefaultValues() const
     SbBool              fieldsAreEqual(const SoFieldContainer *fc) const
     void                copyFieldValues(const SoFieldContainer *fc, SbBool copyConnections = FALSE)
     SbBool              set(const char *fieldDataString)
     void                get(SbString &fieldDataString)
     virtual int         getFields(SoFieldList &resultList) const
     virtual SoField *   getField(const SbName &fieldName) const
     SbBool              getFieldName(const SoField *field, SbName &fieldName) const
     SbBool              isNotifyEnabled() const
     SbBool              enableNotify(SbBool flag)

          Methods from class SoBase:

     void                ref()
     void                unref() const
     void                unrefNoDelete() const
     void                touch()
     virtual SoType      getTypeId() const
     SbBool              isOfType(SoType type) const
     virtual void        setName(const SbName &name)
     virtual SbName      getName() const

DESCRIPTION

       This group node traverses its children, in order, several times, creating a regular 3D array of copies of
       them. The number of copies in each of the three directions is specified by fields,  as  are  the  vectors
       used to separate the copies in each of the three dimensions.

       For  example,  an  SoArray  node can be used to create a 2x3x4 array of copies of its children, where the
       separation vectors between adjacent copies in the three array dimensions  are  (1,2,3),  (-4,-5,-6),  and
       (7,8,9),  respectively.  The base point of the array can be set to one of several values, as described in
       the origin field.

       Copies are traversed so that the first dimension cycles most quickly, followed by the  second,  and  then
       the  third.  This order is important because SoArray sets the current switch value to N before traversing
       the children for the Nth time (for use with inherited switch values - see SoSwitch).

FIELDS

     SoSFShort           numElements1
     SoSFShort           numElements2
     SoSFShort           numElements3
          Number of elements in each of the three array dimensions.

     SoSFVec3f           separation1
     SoSFVec3f           separation2
     SoSFVec3f           separation3
          Separation vector in each of the three array dimensions.

     SoSFEnum            origin
          Defines the base point from which copies are distributed.

METHODS

                         SoArray()
          Creates an array node with default settings.

     static SoType       getClassTypeId()
          Returns type identifier for this class.

ACTION BEHAVIOR

       SoGLRenderAction, SoCallbackAction, SoGetBoundingBoxAction, SoRayPickAction
          Traverses all children for each array element, saving  and  restoring  state  before  and  after  each
          traversal.

     SoSearchAction
          Traverses all children once, setting the inherited switch value to SO_SWITCH_ALL first.

FILE FORMAT/DEFAULTS

       Array {
          numElements1  1
          numElements2  1
          numElements3  1
          separation1   1 0 0
          separation2   0 1 0
          separation3   0 0 1
          origin        FIRST
     }

SEE ALSO

       SoMultipleCopy, SoSwitch

                                                                                                  SoArray(3IV)()