Disconnect (Parameter)

Introduced

2.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();

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

 

 



Autodesk Softimage v7.5