## ShaderArrayParamDef

Object Hierarchy | Related C++ Class: ShaderArrayParamDef

### Inheritance

###

SIObject

ShaderParamDef

ShaderArrayParamDef

### Introduced

v9.0 (2011)

### Description

This object represents a definition for a ShaderArrayParameter instance. It allows you to set and get the array elements contained by this shader parameter (ShaderArrayParamDef.ItemInitialValues, which returns a ValueMap object that you can populate or query).
To create a ShaderArrayParamDef object, use the ShaderParamDefContainer.AddArrayParamDef method when adding a new parameter definition to the shader parameter definition container.

### Methods

IsClassOf | IsEqualTo |  |

### Properties

Application | Attributes | Capabilities | Categories
DataType | DefaultValue | DisplayName | FullName
HasDefaultValue | Help | IsArray | IsInput
IsOutput | IsStructure | ItemDef | ItemDef2
ItemInitialCount | ItemInitialValues | ItemName | MainPort
MaxValue | MinValue | Name | NestedObjects
Origin | OriginPath | Parent | StaticArray
SuggestedMaxValue | SuggestedMinValue | Texturable | Type

### Examples

#### JScript Example

    /*

    	This example demonstrates how to create a dynamic shader definition

    	with an input array parameter and then populate the array using the

    	ValueMap object created via the ItemInitialValues property.

    */

    app = Application;

    app.NewScene("", false);

    var oShaderDef = XSIFactory.CreateShaderDef("MyParser", "MyArrayDemo", 1, 0);

    oShaderDef.AddShaderFamily(siShaderFamilyTexture);

    app.LogMessage("Shader definition name: " + oShaderDef.Name);

    // Set up shader parameter definition options to use with new input parameter

    oShaderInParamDefOptions = XSIFactory.CreateShaderParamDefOptions();

    oShaderInParamDefOptions.SetAnimatable(false);

    oShaderInParamDefOptions.SetTexturable(true);

    oShaderInParamDefOptions.SetInspectable(true);

    oShaderInParamDefOptions.SetShortName("Fluffy Bunnies");

    // Add input parameter to definition

    oInputParams = oShaderDef.InputParamDefs;

    var oArrayParamDef = oInputParams.AddArrayParamDef("flurry", siScalarParameterType, oShaderInParamDefOptions);

    // Make it an array of 6 items and populate the array via the ValueMap interface

    oArrayParamDef.ItemInitialCount = 6;

    var oValueMap = oArrayParamDef.ItemInitialValues;

    oValueMap.Set("a", 0);

    oValueMap.Set("b", 8);

    oValueMap.Set("c", 16);

    oValueMap.Set("d", 32);

    oValueMap.Set("e", 64);

    oValueMap.Set("f", 128);

    // Now print info to see what we have

    for (var i=0; i<oShaderDef.InputParamDefs.Definitions.Count; i++) {

    	LogParamInfo("\t", oShaderDef.InputParamDefs.Definitions.Item(i));

    }

    // INFO : Shader definition name: MyParser.MyArrayDemo.1.0

    // INFO : 	Parameter name: Fluffy Bunnies

    // INFO : 	ClassName: ShaderArrayParamDef

    // INFO : 	Family: 65

    // INFO : 	Yes, I'm an array!

    // INFO : 	I'm an INPUT parameter

    // INFO : 		Parameter name: Item

    // INFO : 		ClassName: ShaderStructParamDef

    // INFO : 		Family: 3

    // INFO : 		I'm an INPUT parameter

    // INFO : 		ItemName: Item

    // INFO : 		ItemInitialCount: 6

    // INFO : 		ItemInitialValues:

    // INFO : 			Names: a, b, c, d, e, f

    // INFO : 			Values: 0, 8, 16, 32, 64, 128

    // Convenience function to log info iteratively

    function LogParamInfo( in_indent, in_paramdef )

    {

    	app.LogMessage(in_indent + "Parameter name: " + in_paramdef.DisplayName);

    	app.LogMessage(in_indent + "ClassName: " + app.ClassName(in_paramdef));

    	app.LogMessage(in_indent + "Family: " + in_paramdef.DataType);

    	if (in_paramdef.IsArray) {

    		app.LogMessage(in_indent + "Yes, I'm an array!");

    	}

    	if (in_paramdef.IsInput) {

    		app.LogMessage(in_indent + "I'm an INPUT parameter");

    	}

    	if (in_paramdef.IsOutput) {

    		app.LogMessage(in_indent + "I'm an OUTPUT parameter");

    	}

    	if (in_paramdef.DataType == siShaderDataTypeArray) {

    		LogParamInfo(in_indent + "\t", in_paramdef.ItemDef);

    		in_indent += "\t";

    		app.LogMessage(in_indent + "ItemName: " + in_paramdef.ItemName);

    		if (in_paramdef.StaticArray) {

    			app.LogMessage(in_indent + "Is a Static Array");

    		}

    		app.LogMessage(in_indent + "ItemInitialCount: " + in_paramdef.ItemInitialCount);

    		if (in_paramdef.ItemInitialCount) {

    			app.LogMessage(in_indent + "ItemInitialValues: ");

    			var vbaInitNames = new VBArray(in_paramdef.ItemInitialValues.Names);

    			var aInitNames = vbaInitNames.toArray();

    			var vbaInitValues = new VBArray(in_paramdef.ItemInitialValues.Values);

    			var aInitValues = vbaInitValues.toArray();

    			app.LogMessage(in_indent + "\tNames: " + aInitNames.join(", "));

    			app.LogMessage(in_indent + "\tValues: " + aInitValues.join(", "));

    		}

    	}

    }

### See Also

ShaderParamDefContainer.AddParamDef ShaderParamDefContainer.AddArrayParamDef ShaderParameter.Definition ShaderParamDefContainer ShaderStructParamDef Shader Definition examples installed with Softimage Shader Parser examples installed with Softimage