Package javax.media.j3d

# Class ShaderAttributeArray

java.lang.Object
javax.media.j3d.SceneGraphObject
javax.media.j3d.NodeComponent
javax.media.j3d.ShaderAttribute
javax.media.j3d.ShaderAttributeObject
javax.media.j3d.ShaderAttributeArray

public class ShaderAttributeArray extends ShaderAttributeObject
The ShaderAttributeArray object encapsulates a uniform shader attribute whose value is specified explicitly. The shader variable `attrName` is explicitly set to the specified `value` during rendering. `attrName` must be the name of a valid uniform attribute in the shader in which it is used. Otherwise, the attribute name will be ignored and a runtime error may be generated. The `value` must be an array of one of the allowed classes. The allowed classes are: `Integer[]`, `Float[]`, `Tuple{2,3,4}{i,f}[]`, `Matrix{3,4}f[]`. A ClassCastException will be thrown if a specified `value` object is not one of the allowed types. Further, the type and length of the value is immutable once a ShaderAttributeArray is constructed. Subsequent setValue operations must be called with an array of the same type and length as the one that was used to construct the ShaderAttributeArray. Finally, the type of the `value` object must match the type of the corresponding `attrName` variable in the shader in which it is used. Otherwise, the shader will not be able to use the attribute and a runtime error may be generated.

Since:
  Java 3D 1.4
See Also:
  - `ShaderAttributeSet`
  - `ShaderProgram`

## Field Summary

### Fields inherited from class javax.media.j3d.ShaderAttributeObject

`ALLOW_VALUE_READ, ALLOW_VALUE_WRITE`

## Constructor Summary

Constructors
Constructor
Description
`ShaderAttributeArray(String attrName, Object value)`
Constructs a new ShaderAttributeArray object with the specified `(attrName, value)` pair.

## Method Summary

Modifier and Type
Method
Description
`Object`
`getValue()`
Retrieves the value of this shader attribute.
`int`
`length()`
Returns the number of elements in the value array.
`void`
`setValue(int index, Object value)`
Sets the specified array element of the value of this shader attribute to the specified value.
`void`
`setValue(Object value)`
Sets the value of this shader attribute to the specified value.

### Methods inherited from class javax.media.j3d.ShaderAttributeObject

`getValueClass`

### Methods inherited from class javax.media.j3d.ShaderAttribute

`getAttributeName`

### Methods inherited from class javax.media.j3d.NodeComponent

`cloneNodeComponent, cloneNodeComponent, duplicateNodeComponent, duplicateNodeComponent, getDuplicateOnCloneTree, setDuplicateOnCloneTree`

### Methods inherited from class javax.media.j3d.SceneGraphObject

`clearCapability, clearCapabilityIsFrequent, duplicateSceneGraphObject, getCapability, getCapabilityIsFrequent, getName, getUserData, isCompiled, isLive, setCapability, setCapabilityIsFrequent, setName, setUserData, toString, updateNodeReferences`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

## Constructor Details

### ShaderAttributeArray

public ShaderAttributeArray(String attrName, Object value)
Constructs a new ShaderAttributeArray object with the specified `(attrName, value)` pair. The specified value must be an array of one of the allowed class types. A deep copy of the array is stored.

Parameters:
  `attrName` - the name of the shader attribute
  `value` - the value of the shader attribute
Throws:
  `NullPointerException` - if attrName or value is null
  `ClassCastException` - if value is not an array of one of the allowed classes

## Method Details

### getValue

public Object getValue()
Description copied from class: `ShaderAttributeObject`
Retrieves the value of this shader attribute. A copy of the object is returned.

Specified by:
  `getValue` in class `ShaderAttributeObject`
Returns:
  a copy of the value of this shader attribute

### setValue

public void setValue(Object value)
Description copied from class: `ShaderAttributeObject`
Sets the value of this shader attribute to the specified value. A copy of the object is stored.

Specified by:
  `setValue` in class `ShaderAttributeObject`
Parameters:
  `value` - the new value of the shader attribute

### setValue

public void setValue(int index, Object value)
Sets the specified array element of the value of this shader attribute to the specified value. A copy of the object is stored.

Parameters:
  `value` - the new value of the shader attribute
Throws:
  `NullPointerException` - if value is null
  `ClassCastException` - if value is not an instance of the same base class as the individual elements of the array object used to construct this shader attribute object.
  `CapabilityNotSetException` - if appropriate capability is not set and this object is part of live or compiled scene graph

### length

public int length()
Returns the number of elements in the value array.

Returns:
  the number of elements in the value array
Throws:
  `CapabilityNotSetException` - if appropriate capability is not set and this object is part of live or compiled scene graph