Softimage SDK Programmer's Guide > Plug-in Development > Working with Parameters >

# Compound Parameters

Compound parameters represent bundles of parameters in Softimage. These bundles are like an intermediate node between parameters and their property owners. The most common compound parameter is the local or global kinematics or local or global kinematics.

For the SDK, compound parameters usually implement their own class ID which derive from an internal class called CompoundParameter. Since this class implements no methods or properties and serves only as an intermediate class for more specific classes, the only time you will encounter the class is if you SIObject.IsClassOf or CBase::IsA against the siCompoundParameterID) class ID. Compound parameters also identify themselves as being of type CompoundParameter when you SIObject.Type or SIObject::GetType.

VBScript Example: Testing for Property, Simple and Compound Parameters

    NewScene , false
    set oTorus = Application.ActiveSceneRoot.AddGeometry( "Torus", "MeshSurface" )

    ' Test a property and its simple parameter
    LogInfo oTorus.Properties( "Visibility" )
    LogInfo oTorus.Properties( "Visibility" ).Parameters( "viewvis" )

    ' Test property, its compound and simple parameters
    LogInfo oTorus.Kinematics
    LogInfo oTorus.Kinematics.Local
    LogInfo oTorus.Kinematics.Local.Parameters( "PosX" )

    ' Ouput:
    ' INFO : ----------------------
    ' INFO : Name: torus.visibility
    ' INFO : Type: visibility
    ' INFO : Class: Property
    ' INFO : IsClassOf(siParameterID): False
    ' INFO : IsClassOf(siCompoundParameterID): False
    ' INFO : IsClassOf(siPropertyID): True
    ' INFO : ----------------------
    ' INFO : Name: torus.visibility.viewvis
    ' INFO : Type: Parameter
    ' INFO : Class: Parameter
    ' INFO : IsClassOf(siParameterID): True
    ' INFO : IsClassOf(siCompoundParameterID): False
    ' INFO : IsClassOf(siPropertyID): False
    ' INFO : ----------------------
    ' INFO : Name: torus.kine
    ' INFO : Type: kine
    ' INFO : Class: Kinematics
    ' INFO : IsClassOf(siParameterID): False
    ' INFO : IsClassOf(siCompoundParameterID): False
    ' INFO : IsClassOf(siPropertyID): True
    ' INFO : ----------------------
    ' INFO : Name: torus.kine.local
    ' INFO : Type: CompoundParameter
    ' INFO : Class: KinematicState
    ' INFO : IsClassOf(siParameterID): True
    ' INFO : IsClassOf(siCompoundParameterID): True
    ' INFO : IsClassOf(siPropertyID): False
    ' INFO : ----------------------
    ' INFO : Name: torus.kine.local.posx
    ' INFO : Type: Parameter
    ' INFO : Class: Parameter
    ' INFO : IsClassOf(siParameterID): True
    ' INFO : IsClassOf(siCompoundParameterID): False
    ' INFO : IsClassOf(siPropertyID): False

    ' Convenience method to print info easily
    sub LogInfo( in_obj )
    	Application.LogMessage "----------------------"
    	Application.LogMessage "Name: " & in_obj.FullName
    	Application.LogMessage "Type: " & in_obj.Type
    	Application.LogMessage "Class: " & TypeName(in_obj)
    	Application.LogMessage "IsClassOf(siParameterID): " & in_obj.IsClassOf(siParameterID)
    	Application.LogMessage "IsClassOf(siCompoundParameterID): " & in_obj.IsClassOf(siCompoundParameterID)
    	Application.LogMessage "IsClassOf(siPropertyID): " & in_obj.IsClassOf(siPropertyID)
    end sub