Operator.DisconnectGroup

Introduced

v4.0

Description

Disconnects the object connected to a PortGroup instance.

Scripting Syntax

Operator.DisconnectGroup( Group, Instance, [Force] );

Parameters

Parameter Type Description
Group Long Which port group to disconnect
Instance Long Port group index to which the object is connected.
Force Boolean Force the disconnection of the object even if the port is not optional.

Default Value: False

Examples

JScript Example

/*
        This example demonstrates how to disconnect an object from a group in a runtime custom operator.
*/
NewScene( null, false );
var null1 = GetPrim( "null" );
var null2 = GetPrim( "null" );
var sop = XSIFactory.CreateScriptedOp( "myexpr", myexpr_Update.toString(), "JScript" );
sop.Debug = 1;
var group1 = sop.AddPortGroup( "MainGroup" );
sop.AddIOPort( null1.Kinematics.Local,"", group1.Index );
// Add a second group with an optional port
var group2 = sop.AddPortGroup( "SecondGroup", 0, 1 );
sop.AddInputPort( null2.Kinematics.Local, "", group2.Index, -1, siOptionalInputPort );
// Connect operator
sop.Connect( null1 + ";" + null2 );
// null2 will rotate with null1
Rotate( null2, 90 );
// Disconnect null2 from second port group
sop.DisconnectGroup( group2.Index, 0 );
// null1 is no longer constrained
Rotate( null2, 180 );
// This operator constrains the rotation of the connected (target) object to the
// rotation of the object connected through the second portgroup.
function myexpr_Update( ctx, out, inlocal1, inlocal2 )
{
        Application.LogMessage( "myexpr_Update: " + out.Name );
        Application.LogMessage( ""+(inlocal2) );
        var transfo = inlocal1.Value.Transform;
        // Is an object connected to this group?
        if ( ctx.Operator.GetNumInstancesInGroup( 1 ) )
        {
                var inlocal2 = ctx.Operator.PortAt( 0, 1, 0 );
                // Is the port connected?
                if ( inlocal2.IsConnected )
                {
                        var rot = XSIMath.CreateRotation();
                        inlocal2.Value.Transform.GetRotation(rot);
                        transfo.SetRotation( rot );
                }
        }
        out.Value.Transform = transfo;
}
// Expected results:
//INFO : 4000 - myexpr<238> Evaluate frame(sec)=0.033367, Outlocal(null.kine.local)
//INFO : myexpr_Update: Outlocal
//INFO : undefined

See Also

Operator.ConnectToGroup