
    ai                        S SK r S SKJr  S SKJrJrJrJr  S SKJ	r
Jr   " S S\5      r " S S\5      r " S	 S
\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S \5      r " S! S"\5      r\\\\\\\\\\\\\\\4rg)#    N)Operator)BoolPropertyEnumPropertyIntPropertyStringProperty)pgettext_rptcontextsc                       \ rS rSr% SrSrSrSS1rSr\	" S\
R                  S	S
SS9\S'   \" SSSS9\S'   \" SSSS9\S'   S rS rS r\S 5       rSrg)SelectPattern   z(Select objects matching a naming patternzobject.select_patternzSelect PatternREGISTERUNDOpatternPatternz;Name filter using '*', '?' and '[abc]' unix style wildcards   *)nametranslation_contextdescriptionmaxlendefaultzCase SensitivezDo a case sensitive compareFr   r   r   case_sensitiveExtendExtend the existing selectionTextendc                   ^	 SS K m	U R                  (       a  T	R                  nOU	4S jnSnSnUR                  nU(       aa  UR                  S:X  aQ  UR
                  R                  nU R                  (       d'  [        R                  R
                  R                  SS9  SnOU(       aq  UR                  S:X  aa  UR                  S	:X  aQ  UR                  R                  nU R                  (       d'  [        R                  R                  R                  SS9  SnODUR                  nU R                  (       d'  [        R                  R                  R                  SS9  U H  nU" UR                   U R"                  5      (       d  M'  U(       aB  SUl        SUl        SUl        UR*                  (       a  UR,                  nUb	  SUl        Ml  Mn  Mp  U(       a	  SUl        M  UR/                  S5        M     S
1$ )Nr   c                 `   > TR                  U R                  5       UR                  5       5      $ N)fnmatchcaseupper)abfnmatchs     [/home/wildlama/Downloads/blender-5.1.2-linux-x64/5.1/scripts/startup/bl_operators/object.py<lambda>'SelectPattern.execute.<locals>.<lambda>5   s    ##AGGIqwwy9    FPOSEDESELECTactionTARMATUREEDITFINISHED)r$   r   r    objectmodeposebonesr   bpyops
select_alltypedata
edit_bonesarmaturevisible_objectsr   r   selectselect_headselect_tailuse_connectparent
select_set)
selfcontextpattern_matchis_eboneis_pboneobjitemsitemitem_parentr$   s
            @r%   executeSelectPattern.execute-   s|   #//M:  nn388v%HHNNE;;''z':HSXX+F0BHH''E;;  ++:+>H++E;;)))< DTYY55 "&DK'+D$'+D$''&*kk&26:K3 3 ( "&DKOOD) " |r(   c                 <    UR                   nUR                  X5      $ r   )window_managerinvoke_props_popup)rB   rC   eventwms       r%   invokeSelectPattern.invoke^   s    ##$$T11r(   c                     U R                   nUR                  U S5        UR                  5       nUR                  U S5        UR                  U S5        g )Nr   r   r   )layoutproprow)rB   _contextrU   rW   s       r%   drawSelectPattern.drawb   sA    D)$jjl'(x r(   c                     UR                   nU(       + =(       d%    UR                  S:H  =(       d    UR                  S:H  $ )NOBJECTr-   )r0   r1   r7   clsrC   rG   s      r%   pollSelectPattern.pollj   s/    nnNSXX1Nsxx:7MNr(    N)__name__
__module____qualname____firstlineno____doc__	bl_idnamebl_label
bl_optionsbl_propertyr   i18n_contextsid_text__annotations__r   rK   rR   rY   classmethodr_   __static_attributes__ra   r(   r%   r   r      s    2'IHf%JK)11'  !1 
 3 /b2! O Or(   r   c                   F    \ rS rSr% SrSrSrSS1r\" SSS	S
9\	S'   S r
Srg)SelectCamerap   zSelect the active camerazobject.select_camerazSelect Camerar   r   r   zExtend the selectionFr   r   c                    UR                   nUR                  nUR                  nU(       a.  UR                  S:X  a  UR                  (       a  UR
                  nOUR
                  nUc  U R                  S1S5        S	1$ UR                  UR                  ;  a  U R                  S1S5        S	1$ U R                  (       d'  [        R                  R                  R                  SS9  XSR                  l        UR                  S5        S1$ )
NVIEW_3DWARNINGzNo camera foundz"Active camera is not in this scener*   r+   Tr/   	CANCELLED)scene
view_layer
space_datar7   use_local_cameracamerareportr   objectsr   r4   r5   r0   r6   activerA   )rB   rC   rw   rx   viewr{   s         r%   rK   SelectCamera.execute|   s    ''
!!DII*t/D/D[[F\\F>KK%67 } [[-KK%IJ } ;;)))<(.%d#<r(   ra   N)rb   rc   rd   re   rf   rg   rh   ri   r   rm   rK   ro   ra   r(   r%   rq   rq   p   s4    "&IHf%J* r(   rq   c                   n    \ rS rSr% SrSrSrSS1r\" SSS	S
S9\	S'   \
" SSSS9\	S'   \S 5       rS rSrg)SelectHierarchy   zGSelect object relative to the active object's position in the hierarchyzobject.select_hierarchyzSelect Hierarchyr   r   ))PARENTParent )CHILDChildr   	Directionz$Direction to select in the hierarchyr   rH   r   r   r   	directionr   r   Fr   r   c                     UR                   $ r   r0   r^   rC   s     r%   r_   SelectHierarchy.poll   s    ~~r(   c                    UR                   n/ nS nUR                  nUR                  nUR                  U;  a  UR                  UR                  5        U R                  S:X  aN  U HG  nUR
                  nU(       d  M  UR                  5       (       d  M/  Xg:X  a  UnUR                  U5        MI     OgU HE  nUR                  UR                   V	s/ s H  oR                  5       (       d  M  U	PM     sn	5        MG     U(       a  UR                  S S9  US   nU(       ae  U R                  (       d'  [        R                  R                  R                  SS9  U H  nUR                  S5        M     XBR                  l        S1$ S	1$ s  sn	f )
Nr   c                     U R                   $ r   )r   )obj_iters    r%   r&   )SelectHierarchy.execute.<locals>.<lambda>   s    X]]r(   )keyr   r*   r+   Tr/   rv   )rx   selected_objectsr0   appendr   r@   visible_getr   childrensortr4   r5   r6   rA   r}   r~   )
rB   rC   rx   
select_newact_newr   obj_actrG   r@   childs
             r%   rK   SelectHierarchy.execute   sG   ''

"33..>>!11##GNN3>>X%'6f0022~"(%%f- ( (!!cll"ZlUFWFWFY5l"Z[ ( $BC$Q- ;;)))<!t$ " )0%<}# #[s   F
,F
ra   N)rb   rc   rd   re   rf   rg   rh   ri   r   rm   r   rn   r_   rK   ro   ra   r(   r%   r   r      si    )I!Hf%J
 :  3   (r(   r   c            	       |    \ rS rSr% SrSrSrSS1r\" SSS	S
SSS9\	S'   \
" SSSS9\	S'   \
" SSSS1S9\	S'   S rSrg)SubdivisionSet   z)Sets a Subdivision Surface level (1 to 5)zobject.subdivision_setzSubdivision Setr   r   Levelid   i      )r   minmaxsoft_minsoft_maxr   levelRelativezNApply the subdivision surface level as an offset relative to the current levelFr   relativezEnsure Modifierz6Create the corresponding modifier if it does not existTHIDDEN)r   r   r   optionsensure_modifierc                   ^ ^^	^
 T R                   m	T R                  m
T R                  mUR                  nU(       a  UR                  S;   a  U/nOUR
                  nU(       d  T R                  S1S5        S1$ T
(       a	  T	S:X  a  S1$ T(       d  SnU Hk  nUR                  S:X  a   U[        S UR                   5       5      -  nO/UR                  S	:X  a  U[        S
 UR                   5       5      -  nU(       d  Mk    O   U(       dE  SnWR                  S:X  a  SnOSnT R                  S1[        S5      R                  U5      5        S1$ T
(       d  T	S:  a	  S=T l         m	UU	U
U 4S jnU H  nU" U5        M     S1$ )N>   SCULPTVERTEX_PAINTWEIGHT_PAINTTEXTURE_PAINTru   *No selected editable objects to operate onrv   r   Fr   c              3   >   #    U  H  oR                   S :H  v   M     g7f)MULTIRESNr7   .0mods     r%   	<genexpr>)SubdivisionSet.execute.<locals>.<genexpr>  s     ;l^kWZHH
<R^k   r\   c              3   >   #    U  H  oR                   S :H  v   M     g7f)SUBSURFNr   r   s     r%   r   r     s     ;k]jVYHH	<Q]jr   r   MultiresolutionzSubdivision SurfacezNo {:s} modifiers foundc                   > U R                    GH  nUR                  S:X  Ga9  T(       d  TUR                  :  aH  TUR                  -
  n[        U5       H*  n[        R
                  R                  R                  SS9  M,     U R                  S:X  a  UR                  T:w  a  TUl	          g U R                  S:X  a  UR                  T:w  a  TUl
          g U R                  S:X  a4  UR                  T-   UR                  ::  a  U=R                  T-  sl	          g U R                  S:X  a2  UR                  T-   UR                  ::  a  U=R                  T-  sl
          g UR                  S:X  d  GMa  T(       a  U=R                  T-  sl
          g UR                  T:w  a  TUl
          g    T(       a   U R                  S:X  a]  U R                   R                  SS5      nTS:  a:  [        T5       H*  n[        R
                  R                  R                  SS9  M,     g g U R                   R                  SS5      nTUl
        g g ! [         a8    TR                  S	1[        S
5      R                  U R                   5      5         g f = f)Nr   Multires)modifierr   r\   r   r   Subdivisionru   z)Modifiers cannot be added to object: {:s})	modifiersr7   total_levelsranger4   r5   r0   multires_subdivider1   sculpt_levelslevelsnew	Exceptionr|   rpt_formatr   )rG   r   sub_r   r   r   rB   s       r%   set_object_subd/SubdivisionSet.execute.<locals>.set_object_subd  s   }}88z)# 3#3#33"'#*:*:":C%*3Z # A A: A V &0 88x/"00E949 1  !XX1"zzU2-2
88x/"0058C<L<LL # 1 1U : 1  !XX1"zzE1S5E5EE #

e 3
XX*

e+

  ::.).CJ? %D 
qxx8+!mm//
JG 19%*5\ # A A: A V &2 % "mm//yI%*
  ! qKKT2]-^-e-efifnfn-opqs   0A+I #I ?JJr/   )r   r   r   active_objectr1   selected_editable_objectsr|   anyr   r   r   )rB   rC   r   objs any_object_has_relevant_modifierrG   mod_namer   r   r   r   s   `       @@@r%   rK   SubdivisionSet.execute   sw   

==..-- ]//3nn!?D44D KK%QR= 
= /4,88x'4;l^a^k^k;l8ll4XX)4;k]`]j]j;k8kk433  488x'0H4HYK.G)H)O)OPX)YZ#}$EAI!""DJ.	q .	q` CC   |r(   )r   N)rb   rc   rd   re   rf   rg   rh   ri   r   rm   r   rK   ro   ra   r(   r%   r   r      sq    3(I Hf%Jca	  d 
 "L
	 _r(   r   c                   x    \ rS rSr% SrSrSrSS1r\" SSS	S
S9\	S'   \
" SSSS9\	S'   SS jr\S 5       rS rSrg)ShapeTransferiT  z@Copy the active shape key of another selected object to this onezobject.shape_key_transferzTransfer Shape Keyr   r   ))OFFSETOffsetz$Apply the relative positional offset)RELATIVE_FACEzRelative Facez)Calculate relative position (using faces))RELATIVE_EDGEzRelative Edgez)Calculate relative position (using edges)zTransformation Modez0Relative shape positions to the new shape methodr   r   r1   zClamp OffsetzPClamp the transformation to the distance each vertex moves in the original shapeFr   	use_clampc                 j   S nS nS nSSK Jn  SSKJn	  U(       a  US:X  a  SnUR                  n
UR
                  R                  nU" UR
                  R                  5      nU" U
R                  5      nU" U
R                  R                  S   R                  5      nU GH  nUR                  S	:w  a7  U R                  S
1[        S5      R                  UR                  5      5        MK  UR                  n[        UR                  5      [        U
R                  5      :w  a7  U R                  S
1[        S5      R                  UR                  5      5        M  U" UR                  5      nUR                  (       a*  U" UR                  R                  S   R                  5      nOU" UR                  5      nU" X5        UR
                  R                   Vs/ s H  nUR                  PM     nn[!        [        U
R                  5      5       Vs/ s H  n/ PM     nnUS:X  a7  [#        U5       H&  u  nnUR%                  UU   UU   UU   -
  -   5        M(     GOGUS:X  aq  U
R&                   H`  nUR                  S S  nUS   nUS   nU H>  nU" UU   UU   UU   UU   UU   UU   UU   5      nUU   R%                  U5        UnUnM@     Mb     OUS:X  a  U
R(                   H  nUR                  u  nnUU   UU   n!n U U!-
  R*                  n"U UU   U"-  -   n#U!UU   U"-  -   n$UU   UU   n&n%U%U&-
  R*                  n'U%UU   U'-  -   n(U&UU   U'-  -   n)U" UU   U!U U#U&U%U(5      nUU   R%                  U5        U" UU   U U!U$U%U&U)5      nUU   R%                  U5        M     SSKJn*  U	R0                  n+[#        U5       H_  u  nnU(       d  M  U*" U+U5      [        U5      -  n,U(       a,  UU   UU   -
  R*                  n-U,UU   -
  n.U-U.l        UU   U.-   n,U,UU   S S & Ma     GM     S1$ s  snf s  snf )Nc                 `    U  Vs/ s H  oR                   R                  5       PM     sn$ s  snf r   )normalcopyvertsvs     r%   me_nos#ShapeTransfer._main.<locals>.me_nosv  s"    -23UHHMMOU333   #+c                 `    U  Vs/ s H  oR                   R                  5       PM     sn$ s  snf r   )cor   r   s     r%   me_cos#ShapeTransfer._main.<locals>.me_cosy  s"    )./ADDIIK///r   c                 "   U R                   nU R                  SS9n[        UR                  R                  5      S:X  a  SUl        U R                  SS9nSUl        Xl        [        UR                  R                  5      S-
  U l        SU l        g )NF)from_mixr   Basis        T)	r8   shape_key_addlen
shape_keys
key_blocksr   valueactive_shape_key_indexshow_only_shape_key)obr   mer   s       r%   ob_add_shape)ShapeTransfer._main.<locals>.ob_add_shape|  s    B""E"2C2==++,1"&&&6CIH(+BMM,D,D(E(IB%%)B"r(   r   )barycentric_transformVectorr   FMESHru   zSkipping '{:s}', not a meshz%Skipping '{:s}', vertex count differsr   r   )reducer/   )mathutils.geometryr   	mathutilsr  r8   active_shape_keyr   verticesr   r   r7   r|   r   r   r   r   r   	enumerater   polygonsedgeslength	functoolsr  __add__)/rB   ob_actr}   r1   r   r   r   r   r   r  r   orig_key_nameorig_shape_coordsorig_normalsorig_coordsob_otherme_othertarget_normalstarget_coordsr   target_shape_coordsimedian_coordsvert_cospolyidxsv_beforev_afterptedi1i2v1v2edge_lengthn1locn2locv1_tov2_toedlen_ton1loc_ton2loc_tor  	VectorAddr   len_fromofss/                                                  r%   _mainShapeTransfer._maint  so   	4	0		* 	=$)I[[//44"6#:#:#?#?@bkk* R]]55a8==>H}}&K67>>x}}M }}H8$$%R[[)99K@AHHW #H$5$56N"" &x':':'E'Ea'H'M'M N &x'8'8 91 2:1J1J1O1O"P1OA1441O"P).s2;;/?)@A)@AR)@MA x#,]#;KAxOO%a(*1-A>@ $< (KKD==+D#BxHRA#'2-a0'1'N'0)(3)!,)'2 &a(//3#$# $(	 ($ (((B[[FB(_k"oB#%7"2"2Kb!1K!??Eb!1K!??E $1#4mB6G5E %55H$~b'9H'DDH$~b'9H'DDH.)"-BuhB
 ""%,,R0.)"-BuhB
 ""%,,R03 #8 )I(788	84s8}DB  %6a$8;q>$I#Q#Q =#33%-
*1-302'*1-  8o  J |[ #QAs   P+P0c                 v    UR                   nU=(       a%    UR                  S:H  =(       a    UR                  S:g  $ )Nr  r.   )r   r7   r1   r]   s      r%   r_   ShapeTransfer.poll  s/    ##AF*Asxx6/ABr(   c                    UR                   nUR                   Vs/ s H  nX2:w  d  M
  UPM     nn[        U5      S:w  a  U R                  S1S5        S1$ US   U/pBUR                  S:w  d  US   R                  S:w  a  U R                  S1S5        S1$ UR
                  c  U R                  S1S5        S1$ U R                  X$U R                  U R                  5      $ s  snf )	Nr   ERRORz4Expected one other selected mesh object to copy fromrv   r   r  zBoth objects must be mesheszOther object has no shape key)	r   r   r   r|   r7   r  r2  r1   r   )rB   rC   r  r   r}   s        r%   rK   ShapeTransfer.execute  s    && ::
:2| : 	 

 w<1KK	#YZ= !!*vh;;& GAJOOv$=KK	#@A= ""*KK	#BC= zz&499dnnEE%
s
   	CCra   N)r   F)rb   rc   rd   re   rf   rg   rh   ri   r   rm   r   r2  rn   r_   rK   ro   ra   r(   r%   r   r   T  sq    J+I#Hf%J

 #F# & f HT C CFr(   r   c                   D    \ rS rSrSrSrSrSS1r\S 5       r	S r
S	 rS
rg)JoinUVsi  zJTransfer UV Maps from active to selected objects (needs matching geometry)zobject.join_uvszTransfer UV Mapsr   r   c                 J    UR                   nU=(       a    UR                  S:H  $ )Nr  )r   r7   r]   s      r%   r_   JoinUVs.poll!  s!    ##*F*+r(   c                    SS K nUR                  nUR                  nUR                  S:H  nU(       a(  [        R
                  R                  R                  SSS9  UR                  (       dB  U R                  S1[        S5      R                  UR                  UR                  5      5        GO*[        UR                  5      nUR                  SS	/S
-  5      U-  nUR                  R                  R                  R!                  SU5        UR"                  S S  nU H&  n	U	R$                  S:X  d  M  SU	R                  l        M(     U GH  n	X:w  a  U	R$                  S:X  d  M  U	R                  n
X:X  a  M.  U
R&                  SL a  M?  SU
l        [        U
R                  5      U:w  ak  U R                  S1[        S5      R                  U	R                  U
R                  [        U
R                  5      [        U
R(                  5      U5      5        M  U
R                  R                  nU(       dw  U
R                  R+                  5         U
R                  R                  nU(       d@  U R                  S1[        S5      R                  U	R                  U
R                  5      5        UR                  R-                  SU5        U
R/                  5         GM     U(       a)  [        R
                  R                  R                  SSS9  g g )Nr   r.   r\   F)r1   toggleru   z%Object: {:s}, Mesh: '{:s}' has no UVsfr      uvr  TzIObject: {:s}, Mesh: '{:s}' has {:d} loops (for {:d} faces), expected {:d}r7  z9Could not add a new UV map to object '{:s}' (Mesh '{:s}'))arrayr   r8   r1   r4   r5   r0   mode_set	uv_layersr|   r   r   r   r   loopsr~   foreach_getr   r7   tagr  r   foreach_setupdate)rB   rC   rB  rG   meshis_editmode	nbr_loopsuv_arrayr}   	obj_other
mesh_otheruv_others               r%   r2  JoinUVs._main&  s`   ##xxxx6)GGNN##%#@~~KK<=DDSXXtyyY
 DJJI {{3	2Y>HNN!!&&224B77:G$	>>V+).INN& % %	!(Y^^v-E&^^
%>>T)!%
z''(I5KK"g &%NN&OO
 0 01
 3 34%	  *33::H#",,002#-#7#7#>#>' KK!(	 $$_!""(&$-NN$.OO#"	 MM--dH=%%'S %V GGNN###> r(   c                 *    U R                  U5        S1$ Nr/   r2  rB   rC   s     r%   rK   JoinUVs.executeo      

7|r(   ra   N)rb   rc   rd   re   rf   rg   rh   ri   rn   r_   r2  rK   ro   ra   r(   r%   r:  r:    s9    (!I!Hf%J, ,G?Rr(   r:  c                   >    \ rS rSrSrSrSrSS1r\S 5       r	S r
S	rg
)MakeDupliFaceit  z$Convert objects into instanced faceszobject.make_dupli_facezMake Instance Facer   r   c           	        ^ SSK Jn  SSKJn  SnSU-  nU" U* U* S45      U" U7U* S45      U" U7U7S45      U" U* U7S45      4mU4S jnU" [        5      nU R
                   H  nUR                  S:X  a  XgR                     R                  U5        M2  UR                  S	:X  d  MD  UR                  S
:X  d  MV  UR                  (       d  Mi  XgR                     R                  U5        M     UR                  5        GH  u  pU	 VV
Vs/ s H)  nU" UR                  5        H  n
U
  H  nUPM     M     M+     nn
nn[        U5      S-  nUS-  n[	        [        U5      5      n[        R                  R                   R#                  UR$                  S-   5      nUR&                  R)                  U5        UR*                  R)                  US-  5        UR,                  R)                  U5        UR&                  R/                  SU5        UR*                  R/                  SU5        UR,                  R/                  S[        SUS-  S5      5        UR1                  5         [        R                  R2                  R#                  UR$                  U5      nU R4                  R2                  R7                  U5        [        U5      [        R8                  R:                  L aC  [        R                  R2                  R#                  UR$                  S 5      nS
Ul	        UUl
        O4[        R                  R2                  R#                  UR$                  U5      nU R4                  R2                  R7                  U5        SUl	        UUl        SUl        SU-  Ul         URC                  S5        URC                  S5        U	 H1  nURD                   H  nUR2                  RG                  U5        M      M3     GM     g s  snn
nf )Nr   r   )defaultdictg{Gz?g      ?r   c                 ~   > U R                  5       nU R                  5       nT Vs/ s H
  o2U-  U-   PM     sn$ s  snf r   )to_translationto_3x3)matrixtransrotr#   base_tris       r%   matrix_to_quad+MakeDupliFace._main.<locals>.matrix_to_quad  s;    ))+E--/C/78x!1W%x888s   :r  EMPTY
COLLECTION      _duplir   vertex_index
loop_startFACESTg      ?)$r  r  collectionsr[  listr   r7   r8   r   instance_typeinstance_collectionrH   matrix_worldr   r   r4   meshesr   r   r	  addrE  r  rH  rI  r}   
collectionlinktypes
Collectionr@   use_instance_faces_scaleinstance_faces_scalerA   users_collectionunlink)rC   r  r[  	SCALE_FACoffsetrc  linkedrG   r8   r}   r   axis
face_verts	nbr_verts	nbr_facesfacesrJ  ob_newob_instrt  rb  s                       @r%   r2  MakeDupliFace._mainz  s?   $+	yVGfWc*+VGfWc*+VGfWc*+VGfWc*+	
	9 T"++Cxx6!xx '',W$):):l)JsOfOfOf../66s;	 , $\\^MD ' ''(8(89AD  9   
 J1,I!QIy)*E88??&&tyy8';<DMMi(JJNN9q=)MMi(MM%%dJ7JJ"">59MM%%lE!Y]A4NOKKMXX%%))$))T:F&&++F3DzSYY111((**..tyy$?(4%.2+((**..tyy$?&&++G4#*F #GN.2F+*-	/F't$d#"%"6"6J&&--c2 #7 S ,s   0O;
c                 *    U R                  U5        S1$ rS  rT  rU  s     r%   rK   MakeDupliFace.execute  rW  r(   ra   N)rb   rc   rd   re   rf   rg   rh   ri   staticmethodr2  rK   ro   ra   r(   r%   rY  rY  t  s3    .(I#Hf%JE3 E3Nr(   rY  c                   >    \ rS rSrSrSrSrSS1r\S 5       r	S r
S	rg
)IsolateTypeRenderi  zUHide unselected render objects of same type as active by setting the hide render flagzobject.isolate_type_renderzRestrict Render Unselectedr   r   c                 "    UR                   nUS L$ r   r   )r^   rC   r   s      r%   r_   IsolateTypeRender.poll  s    ^^$r(   c                     UR                   R                  nUR                   H:  nUR                  5       (       a	  SUl        M!  UR                  U:X  d  M3  SUl        M<     S1$ )NFTr/   )r0   r7   r;   
select_gethide_render)rB   rC   act_typerG   s       r%   rK   IsolateTypeRender.execute  sR    >>&&**C~~"'88x'&*CO + |r(   ra   Nrb   rc   rd   re   rf   rg   rh   ri   rn   r_   rK   ro   ra   r(   r%   r  r    s2    .,I+Hf%J   r(   r  c                   .    \ rS rSrSrSrSrSS1rS rSr	g	)
ClearAllRestrictRenderi  z9Reveal all render objects by setting the hide render flagzobject.hide_render_clear_allzClear All Restrict Renderr   r   c                 P    UR                   R                   H
  nSUl        M     S1$ )NFr/   )rw   r}   r  )rB   rC   rG   s      r%   rK   ClearAllRestrictRender.execute  s%    ==((C#CO )|r(   ra   N
rb   rc   rd   re   rf   rg   rh   ri   rK   ro   ra   r(   r%   r  r    s    C.I*Hf%Jr(   r  c                       \ rS rSr% SrSrSrSS1r\" SSS	S
S9\	S'   \
" SSSS9\	S'   \S 5       rS rS rS rS rSrg)TransformsToDeltasi  zlConvert normal object transforms to delta transforms, any existing delta transforms will be included as wellzobject.transforms_to_deltaszTransforms to Deltasr   r   ))ALLzAll Transformsz1Transfer location, rotation, and scale transforms)LOCLocationz!Transfer location transforms only)ROTRotationz!Transfer rotation transforms only)SCALEScalezTransfer scale transforms onlyModezWhich transforms to transferr  r   r1   zReset Valuesz3Clear transform values after transferring to deltasTr   reset_valuesc                 .    UR                   R                  $ r   rw   is_editabler   s     r%   r_   TransformsToDeltas.poll      }}(((r(   c                 6   UR                   nU(       d  U R                  S1S5        S1$ U Hh  nU R                  S;   a  U R                  U5        U R                  S;   a  U R	                  U5        U R                  S;   d  MW  U R                  U5        Mj     S1$ )Nru   r   rv   >   r  r  >   r  r  >   r  r  r/   )r   r|   r1   transfer_locationtransfer_rotationtransfer_scale)rB   rC   r}   rG   s       r%   rK   TransformsToDeltas.execute	  s    33KK%QR= CyyN*&&s+yyN*&&s+yy,,##C(  |r(   c                     U=R                   UR                  -  sl         U R                  (       a  UR                  R                  5         g g r   )delta_locationlocationr  zerorB   rG   s     r%   r  $TransformsToDeltas.transfer_location  s5    cll*LL r(   c                    UR                   S:X  as  UR                  R                  5       nUR                  Ul        UR                  R	                  U5        U R
                  (       a  UR                  R                  5         g g UR                   S:X  a  g UR                  R                  5       nUR                  Ul        UR                  R	                  U5        U R
                  (       a  UR                  R                  5         g g )N
QUATERNION
AXIS_ANGLE)
rotation_modedelta_rotation_quaternionr   rotation_quaternionrotater  identitydelta_rotation_eulerrotation_eulerr  )rB   rG   deltas      r%   r  $TransformsToDeltas.transfer_rotation!  s    ,11668E,/,C,CC)))007  ''002 !,.,,113E'*'9'9C$$$++E2  ""'') !r(   c                    UR                   S==   UR                  S   -  ss'   UR                   S==   UR                  S   -  ss'   UR                   S==   UR                  S   -  ss'   U R                  (       a  SUR                  S S & g g )Nr   r   r@  )r   r   r   )delta_scalescaler  r  s     r%   r  !TransformsToDeltas.transfer_scale4  sq    ciil*ciil*ciil*$CIIaL r(   ra   N)rb   rc   rd   re   rf   rg   rh   ri   r   rm   r   rn   r_   rK   r  r  r  ro   ra   r(   r%   r  r    sy    E-I%Hf%J

 2
 
 J  ) )$ *&%r(   r  c                   >    \ rS rSrSrSrSrSS1r\S 5       r	S r
S	rg
)TransformsToDeltasAnimi=  zBConvert object animation for normal transforms to delta transformsz object.anim_transforms_to_deltaszAnimated Transforms to Deltasr   r   c                 .    UR                   R                  $ r   r  r   s     r%   r_   TransformsToDeltasAnim.pollC  r  r(   c           	      h   SSK Jn  SSSSS.nUR                  5       nUR                  nU(       d  U R	                  S1S	5        S
1$ U GH  nUR
                  nUb  UR                  c7  U R	                  S1[        S5      R                  UR                  5      5        MW  0 nUR                  UR                  UR                  5      n	U	(       d  M  U	R                   H  n
U
R                  nX;   a  X;   nO
X;   a  UnOM#  X;   ah  U
R                  X   ;   a=  U R	                  S1[        S5      R                  UR                  U5      5        S
1s  s  $ X==   U
R                  /-  ss'   M  U
R                  /X'   M     U	R                   H\  n
U
R                  nU
R                  n X=   nXl        UR                   R"                  U   R$                  n['        Xm5      nUU   UU'   M^     GM     UR(                  R+                  UR(                  R,                  5        S1$ ! [         a     M  f = f)Nr   )
anim_utilsr  r  r  r  )r  r  r  r  ru   r   rv   z,No animation data to convert on object: {!r}r7  zIObject {!r} already has {!r} F-Curve(s). Remove these before trying againr/   )
bpy_extrasr  valuesr   r|   animation_datar,   r   r   r   action_get_channelbag_for_slotaction_slotfcurves	data_patharray_indexKeyErrorbl_rna
propertiesdefault_arraygetattrrw   	frame_setframe_current)rB   rC   r  STANDARD_TO_DELTA_PATHSDELTA_PATHSr}   rG   adtexistingFCurves
channelbagfcupathdpathstandard_pathr  
delta_pathr  property_arrays                     r%   rK   TransformsToDeltasAnim.executeG  s*   ) )4#>"#
 .44633KK%QR=  C$$C!3KGHOOPSPXPXY  !O#BB3::s_J!))}}239E( E  +/*@@$I !C %fSXXu57 !,}, (.3??2CC. /2oo->O*? *D ")) #!oo!8!GJ !+ !$

 5 5m D R R!(!<.;K.H{+ *c F 	 ; ;<|   s   (H##
H10H1ra   Nr  ra   r(   r%   r  r  =  s1    L2I.Hf%J) )Xr(   r  c                   .    \ rS rSrSrSrSrSS1rS rSr	g	)
DupliOffsetFromCursori  zASet offset used for collection instances based on cursor positionz"object.instance_offset_from_cursorzSet Offset from CursorINTERNALr   c                 n    UR                   nUR                  nUR                  R                  Ul        S1$ rS  )rw   rt  cursorr  instance_offsetrB   rC   rw   rt  s       r%   rK   DupliOffsetFromCursor.execute  s0    ''
%*\\%:%:
"|r(   ra   Nr  ra   r(   r%   r  r    s    K4I'Hf%Jr(   r  c                   .    \ rS rSrSrSrSrSS1rS rSr	g	)
DupliOffsetToCursori  z?Set cursor position to the offset used for collection instancesz object.instance_offset_to_cursorzSet Cursor to Offsetr  r   c                 n    UR                   nUR                  nUR                  UR                  l        S1$ rS  )rw   rt  r  r  r  r  s       r%   rK   DupliOffsetToCursor.execute  s0    ''
 * : :|r(   ra   Nr  ra   r(   r%   r  r    s    I2I%Hf%Jr(   r  c                   >    \ rS rSrSrSrSrSS1r\S 5       r	S r
S	rg
)DupliOffsetFromObjecti  zLSet offset used for collection instances based on the active object positionz"object.instance_offset_from_objectzSet Offset from Objectr  r   c                     UR                   S L$ r   )r   r   s     r%   r_   DupliOffsetFromObject.poll  s    %%T12r(   c                     UR                   R                  UR                  R                  5      nUR                  R                  5       nUR                  nX4l        S1$ rS  )r   evaluated_getrx   	depsgraphrq  r]  rt  r  )rB   rC   ob_eval	world_locrt  s        r%   rK   DupliOffsetFromObject.execute  sQ    ''55g6H6H6R6RS((779	''
%."|r(   ra   Nr  ra   r(   r%   r  r    s0    V4I'Hf%J3 3r(   r  c                   x    \ rS rSr% SrSrSrSS1r\" SSS	9\	S
'   \" SSS	9\	S'   \
S 5       r\S 5       rS rSrg)"OBJECT_OT_assign_property_defaultsi  z|Assign the current values of custom properties as their defaults, for use as part of the rest pose state in NLA track mixingzobject.assign_property_defaultsz(Assign Custom Property Values as Defaultr   r   zProcess data propertiesT)r   r   process_datazProcess bone propertiesprocess_bonesc                 t    UR                   nUS L=(       a"    UR                  =(       a    UR                  S;   $ )N>   r)   r\   )r   r  r1   r]   s      r%   r_   'OBJECT_OT_assign_property_defaults.poll  s/    ##$U3??UsxxCU7UUr(   c                     SSK Jn  U R                  R                   Vs1 s H!  o"R                  (       d  M  UR
                  iM#     nnU R                  5        H  u  p$X#;  d  M  U" XU5        M     g s  snf )Nr   )rna_idprop_ui_prop_default_set)rna_prop_uir  r  r  
is_runtime
identifierrH   )rG   r  rV   rna_propertiesr   s        r%   assign_defaults2OBJECT_OT_assign_property_defaults.assign_defaults  sW    >69jj6K6K_6Kd/$//6K_99;KD).s%@ ' `s
   A3A3c                 v   UR                   nU R                  U5        U R                  (       a?  UR                  (       a.  UR                  R                   H  nU R                  U5        M     U R
                  (       a  UR                  (       a  UR                  R                  (       a  U R                  UR                  5        U R                  (       aa  [        UR                  [        R                  R                  5      (       a.  UR                  R                   H  nU R                  U5        M     S1$ rS  )r   r  r  r2   r3   r  r8   r  
isinstancer4   rv  Armature)rB   rC   rG   pbonebones        r%   rK   *OBJECT_OT_assign_property_defaults.execute  s    ##S!#(($$U+ ( chh.B.B  *!!j399;M;M&N&NHHNND((. + |r(   ra   N)rb   rc   rd   re   rf   rg   rh   ri   r   rm   rn   r_   r  r  rK   ro   ra   r(   r%   r  r    sg    I1I9H*%J$=tLL%>MMV V A Ar(   r  )r4   	bpy.typesr   	bpy.propsr   r   r   r   bpy.app.translationsr   r   r	   rk   r   rq   r   r   r   r:  rY  r  r  r  r  r  r  r  r  classesra   r(   r%   <module>r     s$  
   ZOH ZOz!8 !HBh BJxX xvCFH CFLWh WtPH Pf 4	X 	M% M%`bX bJH 
( 
H $) )Z &r(   