## 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