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