clearlistener()
if jcameraOptimize != undefined do destroydialog jcameraOptimize
--- funtions
fn firtAction FstArray =  
(
	try
	(
		for obj in FstArray do 
		(
			if obj.modifiers[#TurboSmooth] != undefined do 
			(
				obj.modifiers[#TurboSmooth].iterations = 1 
				obj.modifiers[#TurboSmooth].enabled = true
			)
			if obj.modifiers[#optimize] != undefined do deletemodifier obj obj.modifiers[#optimize]
		)
	)
	catch(false)
)
fn secondAction FstArray =  
(
	try
	(
	for obj in FstArray do
	(
		if obj.modifiers[#TurboSmooth] != undefined do 
		(
			obj.modifiers[#TurboSmooth].iterations = 0
			obj.modifiers[#TurboSmooth].enabled = true
		)
		if obj.modifiers[#optimize] != undefined do deletemodifier obj obj.modifiers[#optimize]
	)
	)
	catch(false)
)
fn backAction FstArray = 
( 
	try
	(
		for obj in FstArray do 
		(
			modOpt = optimize ()
			if obj.modifiers[#TurboSmooth] != undefined do obj.modifiers[#TurboSmooth].iterations = 0 
			obj.modifiers[#TurboSmooth].enabled = false
			if obj.modifiers[#optimize] != undefined do deletemodifier obj obj.modifiers[#optimize]
			addmodifier obj modOpt
		)
	)
	catch(false)
)
--- rollout
rollout jcameraOptimize "jCamera Optimize"
(
	pickbutton selectCamera "Select camera" align:#center width:120 enabled:true
	button IniOptimize "Scene optimize" align:#center width:120 enabled:false
	progressbar prgBar width:120 height:8 color:orange align:#center
	on selectCamera picked obj do
	(
		if (superclassof obj) == camera then 
		(
			selectCamera.text = "Camera: " + obj.name
			selectCamera.enabled = false
			IniOptimize.enabled = true
			prgBar.value = 100
		)
		else messagebox "This object is not camera"
	)
	on IniOptimize pressed do
	(
		cameraAll = selectCamera.object  
		cameraBody = getnodebyname cameraAll.name
		cameraTarget = getnodebyname (cameraAll.name + ".Target")
		distForOptimize = distance cameraBody cameraTarget
		otherObj = #()
		FirstPlane = #()
		secondPlane = #()
		backPlane = #()
		for obj in objects do
		(
			if (distance obj cameraBody) <= distForOptimize and (superclassof obj) == geometryClass do append FirstPlane obj 
			if (distance obj cameraBody) > distForOptimize and (superclassof obj) == geometryClass do append secondPlane obj 
			if (distance obj cameraBody) > (distForOptimize*2) and (superclassof obj) == geometryClass do append backPlane obj 
		)
		firtAction FirstPlane
		secondAction secondPlane
		backAction backPlane
		IniOptimize.text = "Escene optimize ok!"
		prgBar.value = 100
		prgBar.color = green
		IniOptimize.enabled = false
	)
)
createdialog jcameraOptimize 