TextureLayer.Move

導入

v4.0

詳細

順序付けされたレイヤ スタック内でテクスチャ レイヤを上下に移動します。 このメソッドでは、指定されたテクスチャレイヤを共有する別のコンテナ(ShaderまたはMaterial)でのレイヤの全体的な順序が考慮されるため、順序の一貫性が常に保持されます。共有されているレイヤを上下に移動すると、別のコンテナでのレイヤ順序も変更される可能性があります。このメソッドを使用すると、たとえば、シェーダPhong にレイヤ A、B があり、シェーダLambert でもその 2 つのレイヤが B、A の順番で共有されている場合などに、サイクルの発生を防ぐことができます。

スクリプト 構文

TextureLayer.Move( [Offset] );

パラメータ

パラメータ タイプ 詳細
オフセット Long レイヤをどれだけ移動するか。負の値を指定するとリスト内で上へ移動し、正の値を指定すると下へ移動します。絶対値は、その方向での移動のステップ数になります。

どのような値でも有効ですが、実際に可能な数より多くのオフセットステップ数が要求された場合は、レイヤはそれが含まれているすべてのコンテナで単純に末尾(正の値)または先頭(負の値)へ移動します。したがって、レイヤをすべてのコンテナで最終レイヤに設定する場合には、非常に大きなオフセット値を指定すると便利です。

デフォルト値: -1

1. JScript の例

// This example shows moving texture layers up
// and down within their containers.
oRoot = ActiveProject.ActiveScene.Root;
oSph = oRoot.AddGeometry( "Sphere", "MeshSurface" );
oMat = oSph.AddMaterial( "Phong" );
oPhong = oMat.Shaders(0);
// Add three layers.
oLayers = new Array(3);
oLayers[0] = oPhong.CreateTextureLayer( "A" );
oLayers[1] = oPhong.CreateTextureLayer( "B" );
oLayers[2] = oPhong.CreateTextureLayer( "C" );
Application.LogMessage( "Created " + oPhong.TextureLayers.count + " layers." );
DumpLayerOrder( oPhong );
oLayers[2].Move( -2 );
Application.LogMessage( "Moved layer C up two." );
DumpLayerOrder( oPhong );
oLayers[0].Move( 1 );
Application.LogMessage( "Moved layer A down one." );
DumpLayerOrder( oPhong );
function DumpLayerOrder( in_container )
{
        for ( i = 0; i < in_container.TextureLayers.count; i++ )
        {
                oLayer = in_container.TextureLayers(i);
                Application.LogMessage( (i+1) + ": " + oLayer.fullname );
        }
}
// This example should log something like:
//INFO : "Created 3 layers."
//INFO : "1: sphere.Material.Phong.A"
//INFO : "2: sphere.Material.Phong.B"
//INFO : "3: sphere.Material.Phong.C"
//INFO : "Moved layer C up two."
//INFO : "1: sphere.Material.Phong.C"
//INFO : "2: sphere.Material.Phong.A"
//INFO : "3: sphere.Material.Phong.B"
//INFO : "Moved layer A down one."
//INFO : "1: sphere.Material.Phong.C"
//INFO : "2: sphere.Material.Phong.B"
//INFO : "3: sphere.Material.Phong.A"

2. VBScript の例

' This example shows moving texture layers up
' and down within their containers.
set oRoot = ActiveProject.ActiveScene.Root
set oSph = oRoot.AddGeometry( "Sphere", "MeshSurface" )
set oMat = oSph.AddMaterial( "Phong" )
set oPhong = oMat.Shaders(0)
' Add three layers.
dim oLayers(2)
set oLayers(0) = oPhong.CreateTextureLayer( "A" )
set oLayers(1) = oPhong.CreateTextureLayer( "B" )
set oLayers(2) = oPhong.CreateTextureLayer( "C" )
logmessage "Created " & oPhong.TextureLayers.count & " layers."
DumpLayerOrder oPhong
oLayers(2).Move -2
logmessage "Moved layer C up two."
DumpLayerOrder oPhong
oLayers(0).Move 1
logmessage "Moved layer A down one."
DumpLayerOrder oPhong
sub DumpLayerOrder( in_container )
        dim i, oLayer
        i = 1
        for each oLayer in in_container.TextureLayers
                logmessage i & ": " & oLayer.fullname
                i = i + 1
        next
end sub
' This example should log something like:
'INFO : "Created 3 layers."
'INFO : "1: sphere.Material.Phong.A"
'INFO : "2: sphere.Material.Phong.B"
'INFO : "3: sphere.Material.Phong.C"
'INFO : "Moved layer C up two."
'INFO : "1: sphere.Material.Phong.C"
'INFO : "2: sphere.Material.Phong.A"
'INFO : "3: sphere.Material.Phong.B"
'INFO : "Moved layer A down one."
'INFO : "1: sphere.Material.Phong.C"
'INFO : "2: sphere.Material.Phong.B"
'INFO : "3: sphere.Material.Phong.A"

関連項目

MoveTextureLayers Material.TextureLayers Shader.TextureLayers