Parameter.Disconnect

Introduced

v2.0

Description

Disconnects any Shader or animation connected to the parameter. Animation that can be removed with this method includes FCurves, Expressions and Operators.

C# Syntax

DataSource Parameter.Disconnect();

Scripting Syntax

oDataSource = Parameter.Disconnect();

Return Value

Previously connected DataSource. Note: The returned object is valid if it is a Shader, but not if it is an FCurve.

Examples

1. VBScript Example

'
' This example illustrates how to disconnect a shader from the photon parameter of a material.
'
NewScene , false
set grid = Application.ActiveSceneRoot.AddGeometry( "Cube","MeshSurface" )
set mat = grid.AddMaterial( "Phong" )
set photon = mat.Parameters("Photon")
set shader = photon.Disconnect()

2. VBScript Example

' 
' Demonstration of using Disconnect to remove an FCurve from a Parameter
' 
NewScene , false
set oCube = Application.ActiveSceneRoot.AddGeometry( "Cube", "MeshSurface" )
set oPosXParam = oCube.PosX
dim aValues
aValues = Array( 0.00, 5.00, 1.00, 6.00, 2.00, 7.00, 3.00, 8.00 )
oPosXParam.AddFCurve2( aValues )
set oFCurve = oPosXParam.Source
Application.LogMessage "Expected value at frame 10: " & oFCurve.Eval( 10 )  
' Disconnect the FCurve
set oFCurve = oPosXParam.Disconnect
' You can still evalute the fcurve but it doesn't belong to the parameter
Application.LogMessage "FCurve value at Frame 10:" & oFCurve.Eval( 10 )  
' Prove that the FCurve is gone.
Application.LogMessage "Source driving Parameter value: " & TypeName( oPosXParam.Source ) 
SetValue "PlayControl.Current", 10
Application.LogMessage( "Parameter value with no FCurve: " & oPosXParam.Value ) 
' Expected output
'INFO : Expected value at frame 10: 8
'INFO : FCurve value at Frame 10:8
'INFO : Source driving Parameter value: Nothing
'INFO : Parameter value with no FCurve: 5

3. JScript Example

/*
	Demonstrates deleting an FCurve with Parameter.Disconnect
*/
NewScene( null, false ) ;
var oCube = Application.ActiveSceneRoot.AddGeometry( "Cube", "MeshSurface" ) ;
var oPosXParam = oCube.PosX
aValues = new Array( 0.00, 5.00, 1.00, 6.00, 2.00, 7.00, 3.00, 8.00 ) ;
oPosXParam.AddFCurve2( aValues ) ;
Application.LogMessage( oPosXParam.Source == null ) ;
oPosXParam.Disconnect();
Application.LogMessage( oPosXParam.Source == null ) ;
// Expected results:
//INFO: false
//INFO: true

4. JScript Example

/*
	Demonstration of removing an expression with Parameter.Disconnect
*/
NewScene( null, false ) ;
var oCube = Application.ActiveSceneRoot.AddGeometry( "Cube","MeshSurface" ) ;
var oLocalKine = oCube.Kinematics.Local
var oPosXParam = oLocalKine.PosX
var oPosYParam = oLocalKine.PosY
oPosXParam.AddExpression( oPosYParam.FullName + " * 2.0" ) ;
Application.LogMessage( "Before disconnecting:" ) ;
Application.LogMessage( "Source: " + oPosXParam.Source.Type  ) ;
Application.LogMessage( "Number of Animated parameters: " + oCube.AnimatedParameters().Count ) ;
oPosXParam.Disconnect();
Application.LogMessage( "After disconnecting:" ) ;
Application.LogMessage( "Source is null? " + ( oPosXParam.Source == null ) ) ;
Application.LogMessage( "Number of Animated parameters: " + oCube.AnimatedParameters().Count ) ;
//INFO : Before disconnecting:
//INFO : Source: Expression
//INFO : Number of Animated parameters: 1
//INFO : After disconnecting:
//INFO : Source is null? true
//INFO : Number of Animated parameters: 0

5. JScript Example

/*
	Example of removing an Operator using Parameter.Disconnect
*/
NewScene( null, false );
var obj = Application.ActiveSceneRoot.AddNull();
obj.posx.AddScriptedOp( myexpr_Update.toString(), obj.posy, "myexpr", "JScript" );
// Invoke the custom operator
obj.posy = 26 ;
// posx will have been changed to 20 by the operator
Application.LogMessage( "Value of posx:" + obj.posx.Value ) ;
obj.posx.Disconnect() ;
// Change the value of posy again
// However because there is no operator 
// now it will have no effect on posx
obj.posy = 18 ;
Application.LogMessage( "No source anymore? " + (obj.posx.Source == null) ) ;
Application.LogMessage( "Value of posx " + obj.posx.Value ) ;
//Expected output:
//INFO : Value of posx:20
//INFO : No source anymore? true
//INFO : Value of posx 20
function myexpr_Update( ctx, out, inposy )
{
	var posYVal = inposy.Value ;
	if ( posYVal < 20 )	
		out.Value = inposy;
	else
		out.Value = 20 ;	
}

See Also

RemoveAnimation Parameter.Source Parameter.Connect Parameter.ConnectFromFile Parameter.ConnectFromPreset Parameter.ConnectFromProgID