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)()