v3.0
Deletes the specified list of shaders after disconnecting them.
This is a safer approach than using the DeleteObj command on the same list because
this command only deletes the specified shader node in the
rendertree (rather than the entire subtree, which is what would
happen with DeleteObj).
Removes the shader compound ports when an internal connection is
broken. Prevents image clips and materials from being deleted from
within the render tree.
Note: This command does not unnest image clips properly from the
current container. You should use DisconnectAndDeleteOrUnnestShaders
instead, or call DeleteUnusedImageClips after this
call to clean up a container of unconnected image clips.
DisconnectAndDeleteShaders( Shaders ); |
| Parameter | Type | Description |
|---|---|---|
| Shaders | String | List of shaders to delete. This ensures that all the shaders are disconnected before they are deleted, which is important in the rendertree, where if you delete a node you only want that node to be deleted, and not the entire subtree. |
/*
This example demonstrates how to use the DisconnectAndDeleteShaders command by
creating two shaders in a simple render tree, and deleting the phong without
deleting the attached fractal.
*/
NewScene( null, false );
// Build our shaders (a Phong and a Fractal)
var oSph = CreatePrim( "Sphere", "MeshSurface" );
var oPhong = SIApplyShader( "Phong", oSph );
var oFractal = BlendInPresets( "Fractal", null, null, true, siReplaceNoBlend,
false, false, true );
// Now display the render tree. A message box appears so that you can see the
// contents of the render tree before deleting one of the shaders. When you are
// ready to proceed, click OK...
OpenView( "Render Tree" );
var lResponse = XSIUIToolkit.MsgBox( "When you are ready to proceed, click OK. "
+ "The message box will close and the DisconnectAndDeleteShaders command "
+ "will remove the shader node only.", siMsgOkCancel + siMsgInformation,
"DisconnectAndDeleteShaders Demo" );
if ( lResponse == siMsgOk ) {
DisconnectAndDeleteShaders( oPhong );
} else {
Application.LogMessage( "You opted not to complete the demonstration." );
}
|