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