v4.0
順序付けされたレイヤ スタック内でテクスチャ レイヤを上下に移動します。 このメソッドでは、指定されたテクスチャレイヤを共有する別のコンテナ(Shader または Material)でのレイヤの全体的な順序が考慮されるため、順序の一貫性が常に保持されます。共有されているレイヤを上下に移動すると、別のコンテナでのレイヤ順序も変更される可能性があります。このメソッドを使用すると、たとえば、シェーダ Phong にレイヤ A、B があり、シェーダ Lambert でもその 2 つのレイヤが B、A の順番で共有されている場合などに、サイクルの発生を防ぐことができます。
TextureLayer.Move( Int32 in_lOffset ); |
TextureLayer.Move( [Offset] ); |
パラメータ | タイプ | 説明 |
---|---|---|
Offset | Long |
レイヤをどれだけ移動するか。負の値を指定するとリスト内で上へ移動し、正の値を指定すると下へ移動します。絶対値は、その方向での移動のステップ数になります。 どのような値でも有効ですが、実際に可能な数より多くのオフセットステップ数が要求された場合は、レイヤはそれが含まれているすべてのコンテナで単純に末尾(正の値)または先頭(負の値)へ移動します。したがって、レイヤをすべてのコンテナで最終レイヤに設定する場合には、非常に大きなオフセット値を指定すると便利です。 デフォルト値: -1 |
// 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" |
' 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" |