§
    ¡)ýfé)  ã                   óˆ   — d dl Z d dlmZ d dlmZ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ÚIntPropertyc                   óB   — e Zd ZdZdZdZddhZdZed„ ¦   «         Z	d„ Z
d	S )
ÚCopyRigidbodySettingsz7Copy Rigid Body settings from active object to selectedzrigidbody.object_settings_copyzCopy Rigid Body SettingsÚREGISTERÚUNDO)ÚtypeÚ	kinematicÚmassÚcollision_shapeÚ
use_marginÚcollision_marginÚfrictionÚrestitutionÚuse_deactivationÚuse_start_deactivatedÚdeactivate_linear_velocityÚdeactivate_angular_velocityÚlinear_dampingÚangular_dampingÚcollision_collectionsÚmesh_sourceÚ
use_deformÚenabledc                 ó"   — |j         }|o|j        S ©N©ÚobjectÚ
rigid_body©ÚclsÚcontextÚobjs      ú\/home/blender/git/blender-v430/install_release/4.3/scripts/startup/bl_operators/rigidbody.pyÚpollzCopyRigidbodySettings.poll(   ó   € àŒnˆØÐ&˜œÐ'ó    c           
      óÆ  — |j         }g }|j        D ]E}|j        dk    s|j        �1|                     d¦  «         |j        �|                     |¦  «         ŒFt          j        j         	                    ¦   «          |D ]}|                     d¦  «         Œ|j        }|rC|j        }|D ]9}|j        }||k    rŒ| j
        D ]!}t          ||t          ||¦  «        ¦  «         Œ"Œ:dhS )NÚMESHFTÚFINISHED)r   Úselected_objectsr
   r    Ú
select_setÚappendÚbpyÚopsÚ	rigidbodyÚobjects_addÚ_attrsÚsetattrÚgetattr)	Úselfr#   Úobj_actÚ
rb_objectsÚoÚobjectsÚrb_fromÚrb_toÚattrs	            r%   ÚexecutezCopyRigidbodySettings.execute-   s!  € Ø”.ˆð ˆ
ØÔ)ð 	)ð 	)ˆAØŒv˜ÒÐ 1¤<Ð#;Ø—’˜UÑ#Ô#Ð#Ø”<Ð+Ø×%Ò% aÑ(Ô(Ð(øåŒÔ×%Ò%Ñ'Ô'Ð'ð ð 	ð 	ˆAØ�LŠL˜ÑÔÐÐàÔ*ˆØð 	AØÔ(ˆGàð Að A�Øœ�Ø˜’<�<ØØ œKð Að A�DÝ˜E 4­°¸$Ñ)?Ô)?Ñ@Ô@Ð@Ð@ðAð ˆ|Ðr(   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú	bl_idnameÚbl_labelÚ
bl_optionsr3   Úclassmethodr&   r>   © r(   r%   r   r      s_   € € € € € ØAÐAØ0€IØ)€HØ˜fÐ%€Jð€Fð* ð(ð (ñ „[ð(ðð ð ð ð r(   r   c                   ó¸   — e Zd ZU dZdZdZddhZ edddd	d
¬¦  «        ed<    eddd
d	d¬¦  «        ed<    eddd
dd
¬¦  «        ed<   e	d„ ¦   «         Z
d„ Zd„ ZdS )ÚBakeToKeyframesz@Bake rigid body transformations of selected objects to keyframeszrigidbody.bake_to_keyframeszBake to Keyframesr   r	   zStart FramezStart frame for bakingr   ià“ é   )ÚnameÚdescriptionÚminÚmaxÚdefaultÚframe_startz	End FramezEnd frame for bakingéú   Ú	frame_endz
Frame Stepéx   Ústepc                 ó"   — |j         }|o|j        S r   r   r!   s      r%   r&   zBakeToKeyframes.pollg   r'   r(   c                 óB  — g }g }|j         }|j        }t          | j        | j        dz   | j        ¦  «        }t          | j        | j        dz   ¦  «        }|j        D ].}|j        r|j        j        dk    r| 	                    d¦  «         Œ/|j        }|�r|D ]c}	| 
                    |	¦  «         |	|v rHi }
t          |¦  «        D ]!\  }}|j                             ¦   «         |
|<   Œ"|                     |
¦  «         Œdt          |¦  «        D �]w\  }}	| 
                    |	¦  «         t          |¦  «        D �]&\  }}||         |         }
|j        r;|j                             ¦   «         |j        j                             ¦   «         z  |
z  }
|
                     ¦   «         |_        |j        }|dk    rE|j        }|
                     ¦   «         }|                     |¦  «        dk     r	| |_        Œ¹||_        ŒÁ|dk    r?|
                     ¦   «                              ¦   «         }|d         g|d         ¢R |_        �Œ|
                     ||j        ¦  «        |_        �Œ(t8          j        j                             d¬	¦  «         �Œyt8          j        j          !                    ¦   «          |D ]â}|j"        j#        }|j$        D ]Ì}|j%        }d}|tM          |¦  «        dz
  k     rŸ||dz
           j'        d         }||dz            j'        d         }||         j'        d         }tQ          ||z
  ¦  «        tQ          ||z
  ¦  «        z   d
k     r| )                    ||         ¦  «         n|dz  }|tM          |¦  «        dz
  k     °Ÿ|D ]	}d|_*        Œ
ŒÍŒã| 
                    |¦  «         dhS )NrJ   ÚACTIVEFÚ
QUATERNIONg        Ú
AXIS_ANGLEr   ÚBUILTIN_KSI_LocRot)r
   g-Cëâ6?ÚLINEARr+   )+ÚsceneÚframe_currentÚrangerP   rR   rT   r,   r    r
   r-   Ú	frame_setÚ	enumerateÚmatrix_worldÚcopyr.   ÚparentÚmatrix_parent_inverseÚinvertedÚto_translationÚlocationÚrotation_modeÚrotation_quaternionÚto_quaternionÚdotÚto_axis_angleÚrotation_axis_angleÚto_eulerÚrotation_eulerr/   r0   ÚanimÚkeyframe_insert_by_namer1   Úobjects_removeÚanimation_dataÚactionÚfcurvesÚkeyframe_pointsÚlenÚcoÚabsÚremoveÚinterpolation)r6   r#   Úbaker:   r\   Ú
frame_origÚframes_stepÚframes_fullr$   ÚfÚmatÚiÚjÚrot_modeÚq1Úq2Úaart   Úfcurv   Úval_prevÚval_nextÚvalÚkeyframes                           r%   r>   zBakeToKeyframes.executel   sñ  € ØˆØˆØ”ˆØÔ(ˆ
Ý˜DÔ,¨d¬n¸qÑ.@À$Ä)ÑLÔLˆÝ˜DÔ,¨d¬n¸qÑ.@ÑAÔAˆð Ô+ð 	&ð 	&ˆCØ”>ð & S¤^Ô%8¸HÒ%DÐ%DØ—’˜uÑ%Ô%Ð%øàÔ*ˆàñ B	(ð !ð %ð %�Ø—’ Ñ"Ô"Ð"Ø˜Ð#Ð#Ø�CÝ"+¨GÑ"4Ô"4ð 9ð 9™˜˜3Ø!$Ô!1×!6Ò!6Ñ!8Ô!8˜˜A™˜Ø—K’K Ñ$Ô$Ð$øõ " +Ñ.Ô.ð Pñ P‘��1Ø—’ Ñ"Ô"Ð"Ý'¨Ñ0Ô0ð Xñ X‘F�A�sØ˜qœ' !œ*�Cà”zð nØ!Ô7×@Ò@ÑBÔBÀSÄZÔE\×EeÒEeÑEgÔEgÑgÐjmÑm˜à#&×#5Ò#5Ñ#7Ô#7�C”Là"Ô0�HØ <Ò/Ð/Ø Ô4˜Ø ×.Ò.Ñ0Ô0˜àŸ6š6 "™:œ:¨Ò+Ð+Ø79°c˜CÔ3Ð3à68˜CÔ3Ð3Ø! \Ò1Ð1à ×.Ò.Ñ0Ô0×>Ò>Ñ@Ô@˜Ø35°a´5°/¸2¸a¼5°/°/˜Ô/Ñ/ð .1¯\ª\¸(ÀCÔDVÑ-WÔ-W˜Ô*Ñ*å””×4Ò4Ð:NÐ4ÑOÔOÐOÑOõ ŒGÔ×,Ò,Ñ.Ô.Ð.ð ð :ð :�ØÔ+Ô2�Ø!œ>ð :ð :�CØ&)Ô&9�OØ�Aà�c /Ñ2Ô2°QÑ6Ò6Ð6Ø#2°1°q±5Ô#9Ô#<¸QÔ#?˜Ø#2°1°q±5Ô#9Ô#<¸QÔ#?˜Ø-¨aÔ0Ô3°AÔ6˜å˜s X™~Ñ.Ô.µ°S¸8±^Ñ1DÔ1DÑDÀvÒMÐMØ+×2Ò2°?À1Ô3EÑFÔFÐFÐFà ™F˜Að �c /Ñ2Ô2°QÑ6Ò6Ð6ð %4ð :ð :˜Ø19˜Ô.Ð.ð:ð:ð$ �OŠO˜JÑ'Ô'Ð'àˆ|Ðr(   c                 óx   — |j         }|j        | _        |j        | _        |j        }|                     | ¦  «        S r   )r\   rP   rR   Úwindow_managerÚinvoke_props_dialog)r6   r#   Ú_eventr\   Úwms        r%   ÚinvokezBakeToKeyframes.invokeÁ   s9   € Ø”ˆØ Ô,ˆÔØœˆŒàÔ#ˆØ×%Ò% dÑ+Ô+Ð+r(   N)r?   r@   rA   rB   rC   rD   rE   r   Ú__annotations__rF   r&   r>   r’   rG   r(   r%   rI   rI   N   s  € € € € € € ØJÐJØ-€IØ"€HØ˜fÐ%€Jà�ØØ,Ø�6Øð	ñ ô ð ð ñ ð ˆ{ØØ*Ø�6Øð	ñ ô ð ð ñ ð ˆ+ØØ Ø�3Øð	ñ ô ð ð ñ ð ð(ð (ñ „[ð(ðSð Sð Sðj,ð ,ð ,ð ,ð ,r(   rI   c            	       ó  — e Zd ZU dZdZdZddhZ edd ed„ e	j
        j        j        j        d	         j        D ¦   «         ¦  «        d
¬¦  «        ed<    edddd¬¦  «        ed<    edddd¬¦  «        ed<   ed„ ¦   «         Zd„ Zd„ ZdS )ÚConnectRigidBodiesz;Create rigid body constraints between selected rigid bodieszrigidbody.connectzConnect Rigid Bodiesr   r	   ÚTypezType of generated constraintc              #   óJ   K  — | ]}|j         |j        |j        |j        fV — Œd S r   )Ú
identifierrK   rL   Úvalue)Ú.0Úes     r%   ú	<genexpr>zConnectRigidBodies.<genexpr>Ô   sG   è è € ð 
ð 
àð Œ\˜1œ6 1¤=°!´(Ð;ð
ð 
ð 
ð 
ð 
ð 
r(   r
   ÚFIXED)rK   rL   ÚitemsrO   Úcon_typeÚLocationzConstraint pivot location))ÚCENTERÚCenterz6Pivot location is between the constrained rigid bodies)rW   ÚActivez/Pivot location is at the active object position)ÚSELECTEDÚSelectedz1Pivot location is at the selected object positionr¡   Ú
pivot_typezConnection PatternzPattern used to connect objects))ÚSELECTED_TO_ACTIVEzSelected to Activez-Connect selected objects to the active object)ÚCHAIN_DISTANCEzChain by DistancezKConnect objects as a chain based on distance, starting at the active objectr§   Úconnection_patternc                 ó"   — |j         }|o|j        S r   r   r!   s      r%   r&   zConnectRigidBodies.pollï   r'   r(   c                 ó  — ||k    rd S | j         dk    r|j        }n%| j         dk    r|j        }n|j        |j        z   dz  }t          j        j                             dd ¬¦  «        }||_        |j        j        j                             |¦  «         ||j	        j        _
        |                     d¦  «         t          j        j                             ¦   «          |j        }d|_        |j        }| j        |_        ||_        ||_        d S )NrW   r¤   g       @Ú
Constraint)Úobject_dataTÚARROWS)r¦   rg   r/   Údatar:   Únewr\   Ú
collectionÚlinkÚ
view_layerÚactiver-   r0   r1   Úconstraint_addÚactive_objectÚempty_display_typeÚrigid_body_constraintrŸ   r
   Úobject1Úobject2)r6   r#   r¹   rº   ÚlocÚobÚcon_objÚcons           r%   Ú_add_constraintz"ConnectRigidBodies._add_constraintô   sÿ   € Ø�gÒÐØˆFàŒ?˜hÒ&Ð&ØÔ"ˆCˆCØŒ_ 
Ò*Ð*ØÔ"ˆCˆCàÔ# gÔ&6Ñ6¸#Ñ=ˆCåŒXÔ×!Ò! ,¸DÐ!ÑAÔAˆØˆŒØŒÔ Ô(×-Ò-¨bÑ1Ô1Ð1Ø,.ˆÔÔ"Ô)Ø
�Š�dÑÔÐåŒÔ×(Ò(Ñ*Ô*Ð*ØÔ'ˆØ%-ˆÔ"ØÔ+ˆØ”=ˆŒàˆŒØˆŒˆˆr(   c                 óÞ  ‡
— |j         }|j        }|j        }d}| j        dk    rÃ|g}|j        }	 |                     |¦  «         n# t
          $ r Y nw xY w|Š
|rE|                     ˆ
fd„¬¦  «         |                     d¦  «        Š
|                     ‰
¦  «         |°Et          dt          |¦  «        ¦  «        D ]*}|                      |||dz
           ||         ¦  «         d}Œ+n|D ]}	|                      |||	¦  «         d}Œ|rNt          j        j                             d¬	¦  «         |D ]}	|	                     d¦  «         Œ||j        _        d
hS |                      dhd¦  «         dhS )NFr¨   c                 ó,   •— ‰j         | j         z
  j        S r   )rg   Úlength)r9   Úlast_objs    €r%   ú<lambda>z,ConnectRigidBodies.execute.<locals>.<lambda>  s   ø€ °Ô0AÀAÄJÑ0NÔ/V€ r(   )Úkeyr   rJ   TÚDESELECT)rt   r+   ÚWARNINGzNo other objects selectedÚ	CANCELLED)r³   r,   r¶   r©   rz   Ú
ValueErrorÚsortÚpopr.   r^   rw   r¿   r/   r0   r   Ú
select_allr-   r:   r´   Úreport)r6   r#   r³   r:   r7   ÚchangeÚobjs_sortedÚobjects_tmpr‚   r$   rÃ   s             @r%   r>   zConnectRigidBodies.execute  sÖ  ø€ ØÔ'ˆ
ØÔ*ˆØÔ'ˆØˆàÔ"Ð&6Ò6Ð6Ø"˜)ˆKØ!Ô2ˆKðØ×"Ò" 7Ñ+Ô+Ð+Ð+øÝð ð ð Ø�ðøøøð ˆHàð -Ø× Ò Ð%VÐ%VÐ%VÐ%VÐ ÑWÔWÐWØ&Ÿ?š?¨1Ñ-Ô-�Ø×"Ò" 8Ñ,Ô,Ð,ð ð -õ
 ˜1�c +Ñ.Ô.Ñ/Ô/ð ð �Ø×$Ò$ W¨k¸!¸a¹%Ô.@À+ÈaÄ.ÑQÔQÐQØ��ðð
 ð ð �Ø×$Ò$ W¨g°sÑ;Ô;Ð;Ø��àð 		!åŒGŒN×%Ò%¨ZÐ%Ñ8Ô8Ð8Øð %ð %�Ø—’˜tÑ$Ô$Ð$Ð$Ø(/ˆJÔÔ%Ø�<Ðà�KŠK˜˜Ð%@ÑAÔAÐAØ�=Ð s   ¯A Á
AÁAN)r?   r@   rA   rB   rC   rD   rE   r   Útupler/   ÚtypesÚRigidBodyConstraintÚbl_rnaÚ
propertiesÚ
enum_itemsr“   rF   r&   r¿   r>   rG   r(   r%   r•   r•   Ê   s?  € € € € € € ØEÐEØ#€IØ%€HØ˜fÐ%€JàˆlØØ2àˆeð 
ð 
à”YÔ2Ô9ÔDÀVÔLÔWð
ñ 
ô 
ñ 
ô 
ð ð	ñ 	ô 	ð 	ð 	ñ 	ð �ØØ/ð
ð
 ð	ñ 	ô 	ð 	ð 	ñ 	ð %˜Ø!Ø5ð
ð
 %ð	ñ 	ô 	ð 	ð 	ñ 	ð ð(ð (ñ „[ð(ðð ð ð4'!ð '!ð '!ð '!ð '!r(   r•   )
r/   Ú	bpy.typesr   Ú	bpy.propsr   r   r   rI   r•   ÚclassesrG   r(   r%   ú<module>rÚ      sñ   ðð
 €
€
€
Ø Ð Ð Ð Ð Ð ðð ð ð ð ð ð ð ð>ð >ð >ð >ð >˜Hñ >ô >ð >ðBy,ð y,ð y,ð y,ð y,�hñ y,ô y,ð y,ðxk!ð k!ð k!ð k!ð k!˜ñ k!ô k!ð k!ð^ ØØð€€€r(   