EventDispatcher → Node → InputNode → UniformNode → BufferNode →

# UniformArrayNode

Similar to BufferNode this module represents array-like data as uniform buffers. Unlike BufferNode, it can handle more common data types in the array (e.g `three.js` primitives) and automatically manage buffer padding. It should be the first choice when working with uniforms buffers.

## Code Example

    const tintColors = uniformArray( [
    	new Color( 1, 0, 0 ),
    	new Color( 0, 1, 0 ),
    	new Color( 0, 0, 1 )
    ], 'color' );
    const redColor = tintColors.element( 0 );

## Constructor

### new UniformArrayNode ( value : Array.<any>, elementType : string )

Constructs a new uniform array node.

value | Array holding the buffer data.
elementType | The data type of a buffer element. Default is `null`.

## Properties

### .array : Array.<any>

Array holding the buffer data. Unlike BufferNode, the array can hold number primitives as well as three.js objects like vectors, matrices or colors.

### .elementType : string

The data type of an array element.

### .isArrayBufferNode : boolean (readonly)

This flag can be used for type testing.

Default is `true`.

### .paddedType : string

The padded type. Uniform buffers must conform to a certain buffer layout so a separate type is computed to ensure correct buffer size.

### .updateType : string

Overwritten since uniform array nodes are updated per render.

Default is `'render'`.

Overrides: BufferNode#updateType

## Methods

### .element ( indexNode : IndexNode ) : UniformArrayElementNode

Overwrites the default `element()` method to provide element access based on UniformArrayNode.

indexNode | The index node.

### .getElementType ( builder : NodeBuilder ) : string

The data type of the array elements.

builder | The current node builder.

Overrides: BufferNode#getElementType

Returns: The element type.

### .getNodeType ( builder : NodeBuilder ) : string

This method is overwritten since the node type is inferred from the UniformArrayNode#paddedType.

builder | The current node builder.

Overrides: BufferNode#getNodeType

Returns: The node type.

### .getPaddedType () : string

Returns the padded type based on the element type.

Returns: The padded type.

### .setup ( builder : NodeBuilder ) : null

Implement the value buffer creation based on the array data.

builder | A reference to the current node builder.

Overrides: BufferNode#setup

### .update ( frame : NodeFrame )

The update makes sure to correctly transfer the data from the (complex) objects in the array to the internal, correctly padded value buffer.

frame | A reference to the current node frame.

Overrides: BufferNode#update

## Source

src/nodes/accessors/UniformArrayNode.js