ArrayParameter.Move

説明

指定された配列パラメータを配列内で上下に移動します。UpOrDown パラメータで負の値を使用するとパラメータは下に(配列の先頭の方へ)移動し、正の値を指定すると上へ(配列の末尾の方へ)移動します。配列の境界を越えて移動することはできません。

スクリプト構文

ArrayParameter.Move( Parameter, UpOrDown );

パラメータ

パラメータ タイプ 説明
Parameter Variant 削除する配列パラメータ。配列内のゼロから始まるインデックスを使用することも、配列のメンバであるパラメータオブジェクトとして使用することもできます。その他のタイプでは Invalid Argument エラーが発生します。
UpOrDown Integer インデックスの数とパラメータの移動方向。パラメータの新しいインデックスは、現在のインデックスにこの値を足したものになります。配列の境界を越えてパラメータを移動することはできません。

1. VBScript の例

NewScene ,false

GetPrimLight "Point.Preset", "Point"

SIApplyShaderToCnxPoint "Volume\Fast_volume_effects.Preset", "Passes.Default_Pass.VolumeShaderStack", , False

AddObjectsToShader "light", "Passes.Default_Pass.Fast_volume_effects.Lights"

AddObjectsToShader "Point", "Passes.Default_Pass.Fast_volume_effects.Lights"

Set oShader = GetValue( "Passes.Default_Pass.Fast_volume_effects" )

Set oLights = oShader.Lights

LogMessage oLights.type

LogMessage "No Light: " & oLights.Count

For i = 0 To oLights.Count - 1

Set oLight = oLights.Parameters( i ).NestedObjects(0)

LogMessage "Light " & i & " : " & oLight.FullName

Next

2. JScript の例

/*

	This example demonstrates how to move elements 

	up and down in a parameter array.

*/

NewScene( null, false );

var oCube = ActiveSceneRoot.AddGeometry( "Cube", "MeshSurface" );

var oMat = oCube.AddMaterial( "Phong" );

var oMixer = oMat.surface.ConnectFromProgid( "Softimage.XSIColorMixer.1" );

var oLayers = oMixer.layers;

var aLayers = new Array();

for( i = 0; i < 4; i++ )

{

	aLayers[ i ] = oLayers.Add();

	aLayers[ i ].parameters("layer_mixmode").value = i;

}

var strMsg = "Before : ";

for( i = 0; i < oLayers.Count; i++ )

	strMsg += oLayers.Parameters( i ).parameters("layer_mixmode").value + " ";

LogMessage( strMsg );

// Move element by index, ten indices down. The move will be

// clamped to the beginning of the array.

oLayers.Move( 3, -10 );

strMsg = "After 1: ";

for( i = 0; i < oLayers.Count; i++ )

	strMsg += oLayers.Parameters( i ).parameters("layer_mixmode").value + " ";

LogMessage( strMsg );

// Move the element by reference, three indices up. The move will

// again be clamped, this time to the end of the array.

oLayers.Move( aLayers[ 1 ], 3 );

// Move element by reference

strMsg = "After 2: ";

for( i = 0; i < oLayers.Count; i++ )

	strMsg += oLayers.Parameters( i ).parameters("layer_mixmode").value + " ";

LogMessage( strMsg );

// Output of above script is:

// --------------------------

// INFO : "Before : 0 1 2 3"

// INFO : "After 1: 3 0 1 2"

// INFO : "After 2: 3 0 2 1"

関連項目

ArrayParameter.Add