SoArray(3IV)

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