'/// SetRangeFromCamera 1.0 for XSI 3.5+
'/// By Homam Bahnassi - In|Framez 2003
'--------------------------------------

set oSelection = Application.Selection

SetRangeFromObject oSelection

function SetRangeFromObject(oObjectsCollection)

SetRangeFromObject = false

if oObjectsCollection.Count = 0 then
	logmessage "SetRangeFromObject : No object selected...", siError
	exit function
end if

if oObjectsCollection.Count <> 1 then
	logmessage "SetRangeFromObject : More than one object is selected...", siWarning
	logmessage "SetRangeFromObject : First object is considered...", siWarning
end if

'// if oObjectsCollection(0).type <> "camera" then
'//	logmessage "SetRangeFromCamera : Camera type is required...", siError
'//	exit function
'// end if

set oObject = oObjectsCollection(0)

set oAnimParams = oObject.AnimatedParameters( siFCurveSource )
if oAnimParams.Count = 0 then
	logmessage "SetRangeFromObject : " & oObject & " is not animated...", siError
	exit function
end if

set oFCurveA = oAnimParams(0).Source
if oFCurveA.Keys.Count > 0 Then
          dFCKeyAA = oFCurveA.Keys(0).Time
          dFCKeyZZ = oFCurveA.Keys(oFCurveA.Keys.Count - 1).Time
end if

for each oAnimParam in oObject.AnimatedParameters( siFCurveSource )
	set oFCurve = oAnimParam.Source
	if oFCurve.Keys.Count > 0 Then
          dFCKeyA = oFCurve.Keys(0).Time
          dFCKeyZ = oFCurve.Keys(oFCurve.Keys.Count - 1).Time
	end if
	
	if dFCKeyA < dFCKeyAA then dFCKeyAA = dFCKeyA
	if dFCKeyZ > dFCKeyZZ then dFCKeyZZ = dFCKeyZ
next

SetValue "PlayControl.In", dFCKeyAA
SetValue "PlayControl.Out", dFCKeyZZ

SetRangeFromObject = true
end function
