Animating Cameras DOF

Need some advice and testing before doing final posting. Thoughts everyone?

--Bugs
	--Delay only affects DOF Keys
	--Delay does not offset each individual key properly in frames
	--Needs to place a key at 0 even though there is an delay value
 
rollout rlCameraFocus "Camera Focus"
(
	local FocusObj
	local RendCam
	local start = animationRange.start
	local end = animationRange.end
 
	fn ObjFilter obj = 
	(
		superclassof obj != Camera --Helpers
	)
 
	fn camFilter obj = 
	(
		superclassof obj == Camera --Cameras
	)
 
	groupbox gpbxFocusObj "Focus Object" width:140 height:52 pos:[5,2]
	pickbutton pkbtnFocusObj "Pick Object" width:120 height:24 pos:[15,20] filter:ObjFilter
 
	groupbox gpbxCamera "Camera" width:140 height:52 pos:[5,60]
	pickbutton pkbtnCamera "Pick Camera" width:120 height:24 pos:[15,80] filter:camFilter
 
	groupbox gpbxAnimate " " width:140 height:52 pos:[5,118] enabled:true
	checkbox ckbxAnimateOn "Animate" pos:[15,118] checked: true
	spinner spnKeyAmount "Key every: " fieldwidth:35 pos:[16,142] range:[0,999999,6] type:#float enabled:true
	label lbFrames "frs" pos:[122,142] enabled:true
 
	groupbox gpbxDelay "" width:140 height:38 pos:[5,162] enabled:true
	spinner spnDelayAmount "DOF Delay: " fieldwidth:35 pos:[14,176] range:[0,999999,0] type:#float enabled:true
	label lbFramesDelay "frs" pos:[122,176] enabled:true
 
	button btnMakeInFocus "Make In Focus" width:140 height:24 pos:[5,210]
 
	on ckbxAnimateOn changed state do
	(
		if ckbxAnimateOn.checked == true then
		(
			lbFramesDelay.enabled = spnDelayAmount.enabled = spnKeyAmount.enabled = lbFrames.enabled = true
		)
		else
		(
			lbFramesDelay.enabled = spnDelayAmount.enabled = spnKeyAmount.enabled = lbFrames.enabled = false
		)
	)
 
	on pkbtnCamera picked obj do
	(
		RendCam = obj
		pkbtnCamera.text = RendCam.name
	)
 
	on pkbtnFocusObj picked obj do
	(
		FocusObj = obj
		pkbtnFocusObj.text = FocusObj.name
	)
 
-- Calculation
	on btnMakeInFocus pressed do
	(
		if FocusObj != undefined then
		(		
			if RendCam != undefined then
			(
				if ckbxAnimateOn.checked == true then --Animate On
				(
					with animate on 
					(	
						for FV = start to end by spnKeyAmount.value do
						(
							at time FV 
							(
								fromHere = RendCam
								toThere = FocusObj
								FocVal = (distance fromHere toThere)
								RendCam.baseObject.targetDistance = FocVal
								moveKeys RendCam (spnDelayAmount.value)
							)
						)
					)
				)
				else --Animate Off
				(
					fromHere = RendCam
					toThere = FocusObj
					FocVal = (distance fromHere toThere)
					print FocVal
					RendCam.baseObject.targetDistance = FocVal
				)
			)
		)
	)
 
)
createDialog rlCameraFocus 150 240