Model.AddActionSource
 
 
 

Model.AddActionSource

Description

Creates and adds an ActionSource to the model's collection of sources.

C# Syntax

ActionSource Model.AddActionSource( String in_vName, Object in_vTargetArray, Object in_vSourceArray, Object in_vActiveArray );

Scripting Syntax

oReturn = Model.AddActionSource( [Name], [TargetArray], [SourceArray], [ActiveArray] );

Return Value

ActionSource

Parameters

Parameter Type Description
Name String Name of the new action source
TargetArray Array Array of source item target paths.
SourceArray Array Array of source item sources. For now only FCurve, StaticSource or Double values representing static values are valid sources.
ActiveArray Array Array of source item active flags.

Examples

VBScript Example

'
' This example illustrates how to create an ActionSource 
' from FCurve information.
'
set oRoot = Application.ActiveProject.ActiveScene.Root
if Application.Selection.Count <> 0 then
        set oObject = Application.Selection(0)
else
        ' Create sample scene
        set oNull = oRoot.AddNull
        set oObject = oNull.AddNull()
        oObject.posx.AddFCurve2( Array(1, -10, 50, 0, 100, 10) )
        oObject.posy.AddFCurve2( Array(1, 10, 50, 0, 100, 10) )
end if
CreateActionSourceFromLocalFCurves oObject
sub CreateActionSourceFromLocalFCurves( in_object )
        strTitle = "Create ActionSource from Local FCurves"
        if IsObject(in_object) <> True then
                MsgBox "Please select an object", vbExclamation, strTitle
                exit sub
        end if
        if InStr(in_object.Families, "3D Object") = 0 then
                MsgBox "Please select a 3D object", vbExclamation, strTitle
                exit sub
        end if
        set k = in_object.Kinematics
        ' ... assuming all animation is on local transform
        set oAnimatedParams = k.AnimatedParameters(siFCurveSource)
        if oAnimatedParams.Count = 0 then
                MsgBox "Please select an object with animation", vbExclamation, strTitle
                exit sub
        end if
        ' Find local parameters         
        set oLocalParams = CreateObject("XSI.Collection")
        for each oAnimatedParam in oAnimatedParams
                ' Poor man's test for local parameters 
                if InStr( oAnimatedParam.FullName, ".local." ) <> 0 then
                        ' Only support fcurves for now.
                        if TypeName(oAnimatedParam.Source) = "FCurve" then
                                oLocalParams.Add oAnimatedParam 
                        end if
                end if  
        next
        if oLocalParams.Count = 0 then
                exit sub
        end if
        Dim aTarget, aSource, aActive
        ReDim aTarget(oLocalParams.Count-1)
        ReDim aSource(oLocalParams.Count-1)
        ReDim aActive(oLocalParams.Count-1)
        i=0
        for each oLocalParam in oLocalParams
                aTarget(i) = oLocalParam.FullName
                set aSource(i) = oLocalParam.Source
                aActive(i) = True
                i = i + 1
        next
        set oActionSource = oRoot.AddActionSource( in_object.Name & "-localfcurves", _
                aTarget, aSource, aActive )
        LogMessage "Created new ActionSource " & oActionSource.FullName
end sub