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