
    ai*                     t    S SK r S SKJr  S SKJrJr   " S S\5      r " S S\5      r " S S	\5      r\\\4r	g)
    N)Operator)EnumPropertyIntPropertyc                   B    \ rS rSrSrSrSrSS1rSr\	S 5       r
S	 rS
rg)CopyRigidbodySettings   z7Copy 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                 D    UR                   nU=(       a    UR                  $ Nobject
rigid_bodyclscontextobjs      ^/home/wildlama/Downloads/blender-5.1.2-linux-x64/5.1/scripts/startup/bl_operators/rigidbody.pypollCopyRigidbodySettings.poll(       nn&'    c           
      4   UR                   n/ nUR                   HS  nUR                  S:w  d  UR                  c  M"  UR	                  S5        UR                  c  MB  UR                  U5        MU     [        R                  R                  R                  5         U H  nUR	                  S5        M     UR                  nU(       aP  UR                  nU H>  nUR                  nXB:X  a  M  U R                   H  n[        Xx[        Xh5      5        M     M@     S1$ )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&   executeCopyRigidbodySettings.execute-   s    .. 
))Avv1<<#;U#<<+%%a(	 * 	%%' ALL  **((G< KKDE)?@ (	  |r*    N)__name__
__module____qualname____firstlineno____doc__	bl_idnamebl_label
bl_optionsr5   classmethodr'   r@   __static_attributes__rB   r*   r&   r   r      s9    A0I)Hf%JF* ( (r*   r   c                       \ rS rSr% SrSrSrSS1r\" SSS	S
SS9\	S'   \" SSSS
SS9\	S'   \" SSSSSS9\	S'   \
S 5       rS rS rSrg)BakeToKeyframesN   z@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 Stepx   stepc                 D    UR                   nU=(       a    UR                  $ r   r   r"   s      r&   r'   BakeToKeyframes.pollg   r)   r*   c                 ,   SSK Jn  / n/ nUR                  nUR                  n[	        U R
                  U R                  S-   U R                  5      n[	        U R
                  U R                  S-   5      nUR                   HA  n	U	R                  (       a  U	R                  R                  S:w  d  M0  U	R                  S5        MC     UR                  nU(       Ga:  U H^  n
UR                  U
5        X;   d  M  0 n[        U5       H!  u  pU	R                  R                  5       X'   M#     UR!                  U5        M`     [        U5       GHq  u  pUR                  U
5        [        U5       GH#  u  pX<   U   nU	R"                  (       aB  U	R$                  R'                  5       U	R"                  R                  R'                  5       -  U-  nUR)                  5       U	l        U	R,                  nUS:X  aD  U	R.                  nUR1                  5       nUR3                  U5      S:  a
  U* U	l        M  UU	l        M  US:X  a2  UR1                  5       R5                  5       nUS   /US   Q7U	l        GM  UR9                  XR:                  5      U	l        GM&     [<        R>                  R@                  RC                  S	S
9  GMt     [<        R>                  RD                  RG                  5         U GH  n	URI                  U	RJ                  RL                  U	RJ                  RN                  5      nU(       d  MG  URP                   H  nURR                  nSnU[U        U5      S-
  :  a  UUS-
     RV                  S   nUUS-      RV                  S   nUU   RV                  S   n[Y        UU-
  5      [Y        UU-
  5      -   S:  a  UR[                  UU   5        OUS-  nU[U        U5      S-
  :  a  M  U H
  nSUl.        M     M     GM     UR                  U5        S1$ )Nr   )
anim_utilsrP   ACTIVEF
QUATERNIONg        
AXIS_ANGLEBUILTIN_KSI_LocRot)r   g-C6?LINEARr-   )/
bpy_extrasr^   sceneframe_currentrangerV   rX   rZ   r.   r!   r   r/   	frame_set	enumeratematrix_worldcopyr0   parentmatrix_parent_inverseinvertedto_translationlocationrotation_moderotation_quaternionto_quaterniondotto_axis_anglerotation_axis_angleto_eulerrotation_eulerr1   r2   animkeyframe_insert_by_namer3   objects_removeaction_get_channelbag_for_slotanimation_dataactionaction_slotfcurveskeyframe_pointslencoabsremoveinterpolation)r8   r$   r^   baker<   re   
frame_origframes_stepframes_fullr%   fmatijrot_modeq1q2aa
channelbagfcur   val_prevval_nextvalkeyframes                            r&   r@   BakeToKeyframes.executel   s   )((
D,,dnnq.@$))LD,,dnnq.@A ++C>>S^^%8%8H%Du% , ** !"#C"+G"4!$!1!1!6!6!8 #5KK$ ! "+."'0FA'!*Czz!77@@BSZZE\E\EeEeEggjmm#&#5#5#7CL"00H</ 44 ..066":+79cC368C3!\1 ..0>>@35a5/2a5// .1\\(DVDV-W*1 14 44:N4O9 /> GG,,. 'FF&&--&&22
 "%--C&)&9&9OAc/2Q66#21q5#9#<#<Q#?#21q5#9#<#<Q#?-a033A6sX~.S8^1DDvM+22?13EFFA c/2Q66 %419. %4 . 2 OOJ'|r*   c                     UR                   nUR                  U l        UR                  U l        UR                  nUR	                  U 5      $ r   )re   rV   rX   window_managerinvoke_props_dialog)r8   r$   _eventre   wms        r&   invokeBakeToKeyframes.invoke   s@     ,,##%%d++r*   )rX   rV   N)rC   rD   rE   rF   rG   rH   rI   rJ   r   __annotations__rK   r'   r@   r   rL   rB   r*   r&   rN   rN   N   s    J-I"Hf%J,6	  *6	   3	  ( (Zx,r*   rN   c            	          \ rS rSr% SrSrSrSS1r\" SS\	" S	 \
R                  R                  R                  R                  S
   R                   5       5      SS9\S'   \" SSSSS9\S'   \" SSSSS9\S'   \S 5       rS rS rSrg)ConnectRigidBodies   z;Create rigid body constraints between selected rigid bodieszrigidbody.connectzConnect Rigid Bodiesr	   r
   TypezType of generated constraintc              #   ~   #    U  H3  nUR                   UR                  UR                  UR                  4v   M5     g 7fr   )
identifierrQ   rR   value).0es     r&   	<genexpr>ConnectRigidBodies.<genexpr>   s0      
W \\1661==!((;Ws   ;=r   FIXED)rQ   rR   itemsrU   con_typeLocationzConstraint pivot location))CENTERCenterz6Pivot location is between the constrained rigid bodies)r_   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                 D    UR                   nU=(       a    UR                  $ r   r   r"   s      r&   r'   ConnectRigidBodies.poll   r)   r*   c                    X#:X  a  g U R                   S:X  a  UR                  nO9U R                   S:X  a  UR                  nOUR                  UR                  -   S-  n[        R                  R                  R                  SS S9nXEl        UR                  R                  R                  R                  U5        XQR                  R                  l
        UR                  S5        [        R                  R                  R                  5         UR                  nSUl        UR"                  nU R$                  Ul        X'l        X7l        g )Nr_   r   g       @
Constraint)object_dataTARROWS)r   rp   r1   datar<   newre   
collectionlink
view_layeractiver/   r2   r3   constraint_addactive_objectempty_display_typerigid_body_constraintr   r   object1object2)r8   r$   r   r   locobcon_objcons           r&   _add_constraint"ConnectRigidBodies._add_constraint   s    ??h&""C__
*""C##g&6&66#=CXX!!,D!A  ((--b1,."")
d((*''%-"++==r*   c                   ^
 UR                   nUR                  nUR                  nSnU R                  S:X  a  U/nUR                  n UR	                  U5        Um
U(       a>  UR                  U
4S jS9  UR                  S5      m
UR                  T
5        U(       a  M>  [        S[        U5      5       H  nU R                  XUS-
     Xh   5        SnM!     OU H  n	U R                  XU	5        SnM     U(       aT  [        R                  R                  R                  SS	9  U H  n	U	R!                  S5        M     XBR"                  l        S
1$ U R'                  S1S5        S1$ ! [
         a     GNf = f)NFr   c                 J   > TR                   U R                   -
  R                  $ r   )rp   length)r;   last_objs    r&   <lambda>,ConnectRigidBodies.execute.<locals>.<lambda>&  s    0A0AAJJ0N/V/Vr*   )keyr   rP   TDESELECT)r~   r-   WARNINGzNo other objects selected	CANCELLED)r   r.   r   r   r   
ValueErrorsortpopr0   rg   r   r   r1   r2   r    
select_allr/   r<   r   report)r8   r$   r   r<   r9   changeobjs_sortedobjects_tmpr   r%   r   s             @r&   r@   ConnectRigidBodies.execute  sj   ''
**''""&66")K!22K""7+ H  %V W&??1-""8, +
 1c+./$$W!a%.@+.Q 0
 $$Ws;  GGNN%%Z%8t$ (/%<KK%@A= 9  s   E' '
E54E5rB   N)rC   rD   rE   rF   rG   rH   rI   rJ   r   tupler1   typesRigidBodyConstraintbl_rna
properties
enum_itemsr   rK   r'   r   r@   rL   rB   r*   r&   r   r      s    E#I%Hf%J2 
YY2299DDVLWW
 
 	 	 /

 	 	 %!5

 %	 	 ( (4'!r*   r   )
r1   	bpy.typesr   	bpy.propsr   r   r   rN   r   classesrB   r*   r&   <module>r      sO   
  >H >B@,h @,Fk! k!^ r*   