/*//////////   SCRIPT:   BoxBaker v1.0   //////////*/
/*//////////   WRITTEN BY:   Branko Zivkovic   //////////*/
/*//////////   EMAIL:   barigazy@hotmail.com   //////////*/
try(destroyDialog ::bgaRoll)catch()
rollout bgaRoll "BoxBaker by barigazy"
(
	local sourceObj
	fn bakeBoxes sourcePlane: boxSize: start: end: step: = if isvalidNode sourcePlane do
	(
		local b
		local verts = if (sourcePlane.selectedverts).count != 0 then (sourcePlane.selectedverts as bitarray) else (#{1..(sourcePlane.verts.count)})
		verts = verts as array
		local bArr = for v = 1 to verts.count collect
		(
			if v == 1 then (b = box width:boxSize[1] length:boxSize[2] height:boxSize[3])
			else instance b
		)
		animate on
		(
			for i = start to end by step do
			(
				at time i
				(
					for n = 1 to bArr.count do
					(
						bArr[n].pos = getVert sourcePlane verts[n]
						bArr[n].dir = getNormal sourcePlane verts[n]
					)
				)
			)
		)
	)
	group "Source Object:"
	(
		pickbutton pb_source "Pick Animated Object" offset:[0,0] width:140 height:20
	)
	group "Animation Range:"
	(
		spinner spn_start "Anim. Start:" offset:[-5,0] width:140 height:20 type:#integer range:[0,(1e5-1),0]
		spinner spn_end "Anim. End:  " offset:[-5,-5] width:140 height:20 type:#integer range:[1,1e5,100]
		spinner spn_step "Anim. Step:" offset:[-6,-5] width:140 height:20 type:#integer range:[1,1e5,2]
	)
	group "Target Object (BOX) :"
	(
		spinner spn_width "Box Width:" offset:[-5,0] width:140 height:20 type:#float range:[.1,1e5-1,5]
		spinner spn_length "Box Length:  " offset:[0,-5] width:140 height:20 type:#float range:[.1,1e5,5]
		spinner spn_height "Box Leight:" offset:[-5,-5] width:140 height:20 type:#float range:[.1,1e5,5]
	)
	button btn_bake "Bake Box Animation" pos:[4,231] width:152 height:30
	on pb_source picked obj do
	(
		if not isValidNode obj then (sourceObj = null ; pb_source.text = "Pick Animated Object") else
		(
			pb_source.text = obj.name
			sourceObj = obj
		)
	)
	on btn_bake pressed do 
	(
		if isValidNode sourceObj do
		(
			bakeBoxes sourcePlane:sourceObj \
			boxSize:#((spn_width.value),(spn_length.value),(spn_height.value)) \
			start:(spn_start.value) end:(spn_end.value)  step:(spn_step.value)
		)
	)
)
createDialog bgaRoll 160 263 style:#(#style_titlebar, #style_sysmenu, #style_toolwindow)