macroscript MultiRes_Batch category:"MultiRes"
(

-------------------------------------------------------------------------------
--	 Name:			MultiRes_Batch
--	 Version:		v0.1
--	 Started:       08/08/00
--	 Last Modified: 08/08/00
--   Description:	Applies MultiRes modifier to any number of objects. 
--					Option to Collapse to EMesh.
--	 Code by:		Borislav Petrov [Boboland]		bobo@email.archlab.tuwien.ac.at
--	 NOTE:			Requires MultiRes Modifier by Digimation/Intel
-------------------------------------------------------------------------------

global mrb_float 

rollout mrb_roll "MultiRes Batch" 
(
group "Affect Objects"
(
radiobuttons batch_mode labels:#("Selection","All Meshes")
button batch_process "PROCESS WITH MULTIRES" width:170 height:30
checkbox convert_to_mesh "Convert to EditableMesh" checked:true
)

group "MultiRes Settings"
(
radiobuttons multires_mode labels:#("Percentage","Count")
spinner percentage_value "Vertex %" range:[0,100,50] fieldwidth:50
spinner v_count "Vertex Count" range:[1,1000000,1000] enabled:false type:#integer fieldwidth:50

checkbox v_merging "Vertex Merging" checked:false
spinner v_m_thresh "Threshold" range:[0,10000,0] enabled:false fieldwidth:50
checkbox v_m_within "Within Mesh?" checked:false enabled:false align:#right


checkbox b_metric "Boundary Metric" checked:false
checkbox m_base_verts "Maintain Base Vertices" checked:false
checkbox multi_normals "Multiple Normals" checked:true
spinner crease_angle "Crease Angle" range:[0,180,75] enabled:true
)

on v_merging changed state do
(
v_m_thresh.enabled = v_m_within.enabled = state
)

on multires_mode changed state do
(
percentage_value.enabled = state == 1
v_count.enabled = state == 2
)

on multi_normals changed state do crease_angle.enabled = state


on batch_process pressed do
(
	case batch_mode.state of
	(
	1: selection_array = selection as array
	2: selection_array = for i in Geometry where classof != Target collect i
	)

	for o in selection_array do
	(
	try
		(
		max modify mode
		select o
		modPanel.addModToSelection (MultiRes ())
	
		if v_merging.checked then 
			(
			o.modifiers[1].Vertex_Merging = true
			o.modifiers[1].Threshold = v_m_thresh.value
			o.modifiers[1].Merge_Within = v_m_within.checked
			)
		
		o.modifiers[1].Boundary_Metric = b_metric.checked
		o.modifiers[1].Maintain_Base_Vertices = m_base_verts.checked
		o.modifiers[1].Multiple_Normals_Per_Vertex = multi_normals.checked 
		if multi_normals.checked then o.modifiers[1].Crease_Angle = Crease_Angle.value
		
		case multires_mode.state of
		(
		1: o.modifiers[1].vertex_Percentage = percentage_value.value
		2: o.modifiers[1].vtx_Count = v_count.value
		)
		o.modifiers[1].generate = true
			
		if convert_to_mesh.checked then converttomesh o
		
		)
		catch
		(
		format "Couldn't MultiRes Object %\n" o.name
		)
	)--end loop
)--end on

)--end roll

try(closerolloutfloater mrb_float)catch()
mrb_float = newrolloutfloater "MultiResBatch" 220 400 100 100
addrollout mrb_roll mrb_float
)--end script