§
    ¡)ýfÔ  ã                   ó”   — d dl Z d dlmZ d dlmZmZ d dlmZ  G d„ de¦  «        Z	 G d„ de¦  «        Z
 G d	„ d
e¦  «        Ze	e
efZdS )é    N)ÚOperator)ÚEnumPropertyÚIntProperty)Úpgettext_rptc            	       ó�   — e Zd ZU dZdZdZddhZ edd¬¦  «        ed	<    e	d
dddddd¬¦  «        ed<   d„ Z
ed„ ¦   «         Zd„ ZdS )ÚMeshMirrorUVzACopy mirror UV coordinates on the X axis based on a mirrored meshzmesh.faces_mirror_uvzCopy Mirrored UV CoordsÚREGISTERÚUNDOzAxis Direction))ÚPOSITIVEÚPositiveÚ )ÚNEGATIVEÚNegativer   )ÚnameÚitemsÚ	directionÚ	Precisionz'Tolerance for finding vertex duplicatesé   é   é   )r   ÚdescriptionÚminÚmaxÚsoft_minÚsoft_maxÚdefaultÚ	precisionc           	      ó  ‡"‡#— | j         Š"d}|j        j        sdS i }i }ˆ"fd„|j        D ¦   «         }t	          |¦  «        D ]5\  }}|d         dk    r|||v z  }|||<   |d         dk    r|||v z  }|||<   Œ6i Š#||f||ffD ]S\  }	}
|	                     ¦   «         D ]9\  }}|d          |d         |d         f}|
                     |¦  «        }|�|‰#|<   Œ:ŒT|j        }|j        }|j        j        j	        }t          |¦  «        }i }i }d g|z  }d g|z  }d g|z  }d g|z  }d g|z  }t	          |¦  «        D ]Ê\  }}|j        x}}||j        z  }t          d„ |||…         D ¦   «         ¦  «        ||<   t          d„ ||         D ¦   «         ¦  «        ||<   d	d
„ |||…         D ¦   «         v||<   t          d„ |||…         D ¦   «         ¦  «        ||<   |j        ||<   ||t          t          ||         ¦  «        ¦  «        <   ŒËt!          |¦  «        D ]W}ˆ#fd„||         D ¦   «         }d |vr=|                     ¦   «          |                     t          |¦  «        ¦  «        }|�|||<   ŒX|                     ¦   «         D �]\  }}||         r||         sŒ|dk    r||         d         dk     rŒ0|dk    r||         d         dk    rŒI||         }||         }||         }t          ˆ#fd„||         D ¦   «         ¦  «        }t          |¦  «        t          |¦  «        k    rft!          t          |¦  «        ¦  «        D ]I} |                     ||          ¦  «        }!||!         j        dz
   dz   ||!         j        f||          _        ŒJ�Œ
d|fS )Nr   )Fr   c              3   óL   •K  — | ]}|j                              ‰¦  «        V — Œd S ©N)ÚcoÚto_tuple)Ú.0Úvr   s     €úW/home/blender/git/blender-v430/install_release/4.3/scripts/startup/bl_operators/mesh.pyú	<genexpr>z1MeshMirrorUV.do_mesh_mirror_UV.<locals>.<genexpr>2   s1   øè è € Ð@Ð@¨Q�”—’˜iÑ(Ô(Ð@Ð@Ð@Ð@Ð@Ð@ó    g        r   é   c              3   ó$   K  — | ]}|j         V — Œd S r    )Úuv©r#   r*   s     r%   r&   z1MeshMirrorUV.do_mesh_mirror_UV.<locals>.<genexpr>V   s$   è è € ÐBÐB b˜BœEÐBÐBÐBÐBÐBÐBr'   c              3   ó>   K  — | ]}|                      ¦   «         V — Œd S r    )Úcopyr+   s     r%   r&   z1MeshMirrorUV.do_mesh_mirror_UV.<locals>.<genexpr>W   s*   è è € Ð<Ð<¨b §¢¡	¤	Ð<Ð<Ð<Ð<Ð<Ð<r'   Fc              3   ó$   K  — | ]}|j         V — Œd S r    )Úselectr+   s     r%   r&   z1MeshMirrorUV.do_mesh_mirror_UV.<locals>.<genexpr>Y   s$   è è € ÐDÐD¨˜"œ)ÐDÐDÐDÐDÐDÐDr'   c              3   ó$   K  — | ]}|j         V — Œd S r    )Úvertex_index)r#   Úls     r%   r&   z1MeshMirrorUV.do_mesh_mirror_UV.<locals>.<genexpr>[   s$   è è € ÐHÐH°˜Qœ^ÐHÐHÐHÐHÐHÐHr'   c                 ó:   •— g | ]}‰                      |¦  «        ‘ŒS © )Úget)r#   ÚjÚvmaps     €r%   ú
<listcomp>z2MeshMirrorUV.do_mesh_mirror_UV.<locals>.<listcomp>b   s#   ø€ Ð4Ð4Ð4 a�d—h’h˜q‘k”kÐ4Ð4Ð4r'   c              3   ó(   •K  — | ]}‰|         V — Œd S r    r4   )r#   Úkr7   s     €r%   r&   z1MeshMirrorUV.do_mesh_mirror_UV.<locals>.<genexpr>w   s'   øè è € Ð1Ð1 1�t˜A”wÐ1Ð1Ð1Ð1Ð1Ð1r'   g      à?T)r   Ú	uv_layersÚactiveÚverticesÚ	enumerater   r5   ÚpolygonsÚloopsÚdataÚlenÚ
loop_startÚ
loop_totalÚtupleÚcenterÚsortedÚrangeÚsortÚindexÚxÚyÚxy)$ÚselfÚmeshÚDIRÚdouble_warnÚ	mirror_gtÚ	mirror_ltÚvcosÚir!   Úmirror_aÚmirror_bÚncor6   Úpolysr@   Úuv_loopsÚ	nbr_polysÚ	mirror_pmÚpmapÚpuvsÚpuvs_cpyÚpuvselÚpcentsÚvidxsÚpÚlstartÚlendÚtvidxsÚuv1Úuv2Úv1Úv2r:   Úk_mapr   r7   s$                                     @@r%   Údo_mesh_mirror_UVzMeshMirrorUV.do_mesh_mirror_UV&   sL  øø€ Ø”Nˆ	ØˆàŒ~Ô$ð 	à�8ð ˆ	Øˆ	à@Ð@Ð@Ð@°$´-Ð@Ñ@Ô@ˆå˜t‘_”_ð 	"ð 	"‰EˆAˆrØ�!Œu˜Š|ˆ|Ø˜r Y˜Ñ.�Ø !�	˜"‘Ø�!Œu˜Š|ˆ|Ø˜r Y˜Ñ.�Ø !�	˜"‘øàˆà˜IÐ&Ø˜IÐ&ð#
ð 	 ð 	 ÑˆH�hð "ŸšÑ)Ô)ð  ð  ‘��AØ˜1œ�v˜r !œu b¨¤eÐ,�Ø—L’L Ñ%Ô%�Ø�=Ø�D˜‘Gøð	 ð ”ˆØ”
ˆØ”>Ô(Ô-ˆÝ˜‘J”Jˆ	àˆ	ØˆØˆv˜	Ñ!ˆØ�6˜IÑ%ˆØ�˜)Ñ#ˆØ�˜)Ñ#ˆØ�˜Ñ"ˆÝ˜eÑ$Ô$ð 	3ð 	3‰DˆAˆqØœLÐ(ˆF�TØ�A”LÑ ˆDÝÐBÐB¨H°V¸D°[Ô,AÐBÑBÔBÑBÔBˆD�‰GÝÐ<Ð<°D¸´GÐ<Ñ<Ô<Ñ<Ô<ˆH�Q‰KØØDÐD¨h°v¸d°{Ô.CÐDÑDÔDðEˆF�1‰Iõ ÐHÐH°U¸6À$¸;Ô5GÐHÑHÔHÑHÔHˆE�!‰HØœˆF�1‰Ià12ˆI•e�F 5¨¤8Ñ,Ô,Ñ-Ô-Ñ.Ð.å�yÑ!Ô!ð 	 ð 	 ˆAà4Ð4Ð4Ð4¨5°¬8Ð4Ñ4Ô4ˆFØ˜6Ð!Ð!Ø—’‘”�Ø—M’M¥%¨¡-¤-Ñ0Ô0�Ø�=Ø�D˜‘Gøà—J’J‘L”Lð 	Kñ 	K‰DˆAˆqØ˜!”9ð  F¨1¤Ið ØØ�aŠxˆx˜F 1œI aœL¨3Ò.Ð.ØØ�aŠxˆx˜F 1œI aœL¨3Ò.Ð.Øð �q”'ˆCØ˜1”+ˆCð �q”ˆBÝÐ1Ð1Ð1Ð1¨¨a¬Ð1Ñ1Ô1Ñ1Ô1ˆBå�2‰wŒw�#˜b™'œ'Ò!Ð!Ý�s 2™wœw™œð Kð K�AØŸHšH R¨¤U™OœO�EØ#& u¤:¤<°#Ñ#5Ð 6¸Ñ <¸cÀ%¼j¼lÐ J�C˜”F”I�Iùð �[Ð Ð r'   c                 ó>   — |j         j        j        }|o
|j        dk    S )NÚMESH)Ú
view_layerÚobjectsr<   Útype)ÚclsÚcontextÚobjs      r%   ÚpollzMeshMirrorUV.poll�   s"   € àÔ Ô(Ô/ˆØÐ*˜œ FÒ*Ð+r'   c                 ó6  — | j         dk    }d}d}d}|j        j        j        }|j        dk    }|r&t
          j        j                             dd¬¦  «         d„ |j        j        j	        D ¦   «         }|D ]	}	d|	_
        Œ
|D ]>}	|	j
        rŒ
d|	_
        |                      |	|¦  «        \  }
}|
s|d	z   }Œ2|r
||z  }|d	z   }Œ?|r&t
          j        j                             dd¬¦  «         |r<|r:|                      d
ht          d¦  «                             |||¦  «        ¦  «         nt|r8|                      d
ht          d¦  «                             |¦  «        ¦  «         n:|r8|                      d
ht          d¦  «                             ||¦  «        ¦  «         dhS )Nr   r   ÚEDITÚOBJECTF)ÚmodeÚtogglec                 óJ   — g | ] }|j         d k    ¯|j        j        ¯|j        ‘Œ!S )rn   )rq   rA   Úis_editable)r#   Úobs     r%   r8   z(MeshMirrorUV.execute.<locals>.<listcomp>’   s;   € ð 
ð 
ð 
ØØŒw˜&Ò Ð  R¤WÔ%8Ð ð ŒGØ Ð Ð r'   Tr   ÚWARNINGzg{:d} mesh(es) with no active UV layer, {:d} duplicates found in {:d} mesh(es), mirror may be incompletez%{:d} mesh(es) with no active UV layerz@{:d} duplicates found in {:d} mesh(es), mirror may be incompleteÚFINISHED)r   ro   rp   r<   ry   ÚbpyÚopsÚobjectÚmode_setÚselectedÚtagrl   ÚreportÚrpt_Úformat)rN   rs   rP   Útotal_no_active_UVÚtotal_duplicatesÚmeshes_with_duplicatesr}   Úis_editmodeÚmeshesrO   Úhas_active_UV_layerrQ   s               r%   ÚexecutezMeshMirrorUV.execute†   s+  € ØŒ~ Ò+ˆàÐØÐØ!"ÐàÔÔ'Ô.ˆØ”w &Ò(ˆØð 	AÝŒGŒN×#Ò#¨¸%Ð#Ñ@Ô@Ð@ð
ð 
Ø%Ô0Ô8ÔAð
ñ 
ô 
ˆð
 ð 	ð 	ˆDØˆDŒHˆHàð 	Dð 	DˆDØŒxð ØàˆDŒHà/3×/EÒ/EÀdÈCÑ/PÔ/PÑ,Ð à&ð DØ%7¸!Ñ%;Ð"Ð"àð DØ  KÑ/Ð Ø)?À!Ñ)CÐ&øàð 	?ÝŒGŒN×#Ò#¨¸Ð#Ñ>Ô>Ð>àð 	Ð 2ð 	Ø�KŠKØ�ÝðWñô ÷ ’&Ð+Ð-=Ð?UÑVÔVñô ð ð ð  ð 	Ø�KŠKØ�ÝÐ<Ñ=Ô=×DÒDÐEWÑXÔXñô ð ð ð ð 	Ø�KŠKØ�ÝØVñô ç’&Ð)Ð+AÑBÔBñ	ô ð ð ˆ|Ðr'   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú	bl_idnameÚbl_labelÚ
bl_optionsr   Ú__annotations__r   rl   Úclassmethodru   r�   r4   r'   r%   r   r      sÐ   € € € € € € ØKÐKØ&€IØ(€HØ˜fÐ%€Jàˆ|Øð
ðñ ô ð ð ñ ð ˆ{ØØ>Ø�2Ø˜RØðñ ô ð ð ñ ðY!ð Y!ð Y!ðv ð,ð ,ñ „[ð,ð;ð ;ð ;ð ;ð ;r'   r   c                   ó>   — e Zd ZdZdZdZddhZed„ ¦   «         Zd„ Z	dS )	ÚMeshSelectNextz/Select the next element (using selection order)zmesh.select_next_itemzSelect Next Elementr	   r
   c                 ó   — |j         dk    S ©NÚ	EDIT_MESH©ry   ©rr   rs   s     r%   ru   zMeshSelectNext.pollÊ   ó   € à” Ò+Ð,r'   c                 óî   — dd l }ddl m} |j        }|j        }|                     |¦  «        }|                     || j        ¦  «        r+|                     ¦   «          |                     |d¬¦  «         dhS ©Nr   r   )Úfind_adjacentF)Úloop_trianglesr   )	Úbmeshr£   Úactive_objectrA   Úfrom_edit_meshÚselect_nextr†   Úselect_flush_modeÚupdate_edit_mesh©rN   rs   r¥   r£   rt   ÚmeÚbms          r%   r�   zMeshSelectNext.executeÎ   óŒ   € ØˆˆˆØ(Ð(Ð(Ð(Ð(Ð(àÔ#ˆØŒXˆØ×!Ò! "Ñ%Ô%ˆà×$Ò$ R¨¬Ñ5Ô5ð 	=Ø× Ò Ñ"Ô"Ð"Ø×"Ò" 2°eÐ"Ñ<Ô<Ð<àˆ|Ðr'   N©
r�   r‘   r’   r“   r”   r•   r–   r˜   ru   r�   r4   r'   r%   rš   rš   Ä   sV   € € € € € Ø9Ð9Ø'€IØ$€HØ˜fÐ%€Jàð-ð -ñ „[ð-ðð ð ð ð r'   rš   c                   ó>   — e Zd ZdZdZdZddhZed„ ¦   «         Zd„ Z	dS )	ÚMeshSelectPrevz3Select the previous element (using selection order)zmesh.select_prev_itemzSelect Previous Elementr	   r
   c                 ó   — |j         dk    S rœ   rž   rŸ   s     r%   ru   zMeshSelectPrev.pollã   r    r'   c                 óî   — dd l }ddl m} |j        }|j        }|                     |¦  «        }|                     || j        ¦  «        r+|                     ¦   «          |                     |d¬¦  «         dhS r¢   )	r¥   r£   r¦   rA   r§   Úselect_prevr†   r©   rª   r«   s          r%   r�   zMeshSelectPrev.executeç   r®   r'   Nr¯   r4   r'   r%   r±   r±   Ý   sV   € € € € € Ø=Ð=Ø'€IØ(€HØ˜fÐ%€Jàð-ð -ñ „[ð-ðð ð ð ð r'   r±   )r€   Ú	bpy.typesr   Ú	bpy.propsr   r   Úbpy.app.translationsr   r‡   r   rš   r±   Úclassesr4   r'   r%   ú<module>r¹      sû   ðð
 €
€
€
Ø Ð Ð Ð Ð Ð ðð ð ð ð ð ð ð ð 6Ð 5Ð 5Ð 5Ð 5Ð 5ðrð rð rð rð r�8ñ rô rð rðjð ð ð ð �Xñ ô ð ð2ð ð ð ð �Xñ ô ð ð4 ØØð€€€r'   