/* 
-------------------------------------------------------------------------------
Author: Mihail Lupu
Description: Scale uv clusters by centers.
-------------------------------------------------------------------------------
 */
clearlistener()
uvMod2 = modpanel.getCurrentObject()
allElements = #()
/* 
fn shellBbox var = (
	
	xmin = ymin = 9999.0
	xmax = ymax = -9999.0
	
	for o in var do
	(
		uv = uvMod2.getVertexPosition 0 o
		if uv.x < xmin do xmin = uv.x
		if uv.x > xmax do xmax = uv.x
		if uv.y < ymin do ymin = uv.y
		if uv.y > ymax do ymax = uv.y
	)
	
	xcen = ( xmin + xmax ) / 2
	ycen = ( ymin + ymax ) / 2
	cen = [xcen,ycen]
	return cen
-- 	format "center is: % , %  \n" cen.x cen.y
)
 */
 
 fn getAlluvElements uvMod =
(
	if classof uvMod == Unwrap_UVW then
	(
		modPanel.setCurrentObject uvMod
			getSubMode = subobjectLevel
			if getSubMode == 1 then	(
				uvMod.vertToFaceSelect() 
				subobjectLevel = 3
			)
			if getSubMode == 2 then	(
				uvMod.edgeToFaceSelect () 
				subobjectLevel = 3
			)
-- 		subobjectLevel = 3
		facesArr = for f=1 to uvMod.numberPolygons() collect f
		allElements = #()
		 
		while facesArr.count > 0 do
		(
			uvMod.selectFaces #{facesArr[1]}
			uvMod.selectElement()
			element = (uvMod.getSelectedFaces()) as array
			append allElements element
			for faceID in element do deleteItem facesArr (findItem facesArr faceID)
		)
	)
)

getAlluvElements uvMod2

	if classof uvMod2 == Unwrap_UVW then (
		for i = 1 to allElements.count do 
			(
				$.modifiers[#unwrap_uvw].unwrap6.selectFacesByNode (allElements[i] as bitarray) $
				center = uvMod2.getSelCenter()
				$.modifiers[#unwrap_uvw].unwrap2.ScaleSelectedXY 0.98 0.98 [center.x,center.y,0]
			)
	)else (messagebox "No Unwrap_UVW modifier on selected object!" beep:false )