ArrayParameter.Move

説明

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

スクリプト 構文

ArrayParameter.Move( Parameter, UpOrDown );

パラメータ

パラメータ タイプ 詳細
パラメータ 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