§
    ¡)ýf*  ã                   óL   — d dl Z d dlZ G d„ de j        j        ¦  «        ZefZdS )é    Nc                   ór   — e Zd ZdZdZddhZdZed„ ¦   «         Zd„ Z	e
d„ ¦   «         Zd	„ Zd
„ Zd„ Zd„ Zd„ ZdS )ÚWORLD_OT_convert_volume_to_meshz�Convert the volume of a world to a mesh. The world's volume used to be rendered by EEVEE Legacy. Conversion is needed for it to render properlyzConvert VolumeÚREGISTERÚUNDOzworld.convert_volume_to_meshc                 ó¸   — |                       |¦  «        }|r|j        sdS |j        }|                     d¦  «        }t	          |j        d         j        ¦  «        S )NFÚEEVEEÚVolume)Ú
_world_getÚ	use_nodesÚ	node_treeÚget_output_nodeÚboolÚinputsÚlinks)ÚclsÚcontextÚworldÚntreeÚnodes        úX/home/blender/git/blender-v430/install_release/4.3/scripts/startup/bl_operators/world.pyÚpollz$WORLD_OT_convert_volume_to_mesh.poll   s[   € à—’˜wÑ'Ô'ˆØð 	˜EœOð 	Ø�5à”ˆØ×$Ò$ WÑ-Ô-ˆÝ�D”K Ô)Ô/Ñ0Ô0Ð0ó    c                 ó¸  — | j         }|                     |¦  «        }|j        }|j        }|                     d¦  «        }d                     |j        ¦  «        }t          j        j	         
                    |¦  «        }|j        j        j                             |¦  «         t          j        j         
                    |¦  «        }	t          j        j         
                    ||	¦  «        }
d|
j        _        t'          j
        ¦   «         }t&          j                             |dd¬¦  «         |                     |	¦  «         |                     ¦   «          |	j        D ]+}|j        s|j        rŒ|	j                             |¦  «         Œ,t          j        j         
                    |¦  «        }|	j                             |¦  «         d|_        |j        }|j        D ]'}|j         dk    r|j                             |¦  «         Œ(|                     d¦  «        }g }|  !                    ||¦  «         |  "                    |||j#        d	         ||j#        d	         |¦  «         |  $                    ||¦  «         |j%        dk    rg|j         
                    d
¬¦  «        }|j         
                    d¬¦  «        }|j&         
                    |j'        d         |j#        d         ¦  «         |j#        d	         j&        D ]}|j&                             |¦  «         Œ|j                             |
¦  «         |
 (                    d¦  «         |
|j        _)        d|_*        dhS )Nr   z{:s}_volumeFr   g     jø@)ÚsubdivisionsÚradiusTÚOUTPUT_MATERIALr	   ÚShaderNodeOutputMaterial)ÚtypeÚShaderNodeBsdfTransparentÚFINISHED)+Ú	__class__r
   Ú
view_layerr   r   ÚformatÚnameÚbpyÚdataÚcollectionsÚnewÚlayer_collectionÚ
collectionÚchildrenÚlinkÚmeshesÚobjectsÚdisplayÚshow_shadowsÚbmeshÚopsÚcreate_icosphereÚto_meshÚfreeÚ
attributesÚis_internalÚis_requiredÚremoveÚ	materialsÚappendr   Únodesr   Ú_sync_rna_propertiesÚ_sync_node_inputr   Ú_sync_linksÚtargetr   ÚoutputsÚ
select_setÚactiveÚuse_eevee_finite_volume)Úselfr   r   r   r"   Ú
world_treeÚworld_outputr$   r*   ÚmeshÚobjectÚbmÚ	attributeÚmaterialÚvolume_treer   Úvolume_outputÚlinks_to_addÚ
all_outputÚtransparentr,   s                        r   Úexecutez'WORLD_OT_convert_volume_to_mesh.execute   s-  € ØŒnˆØ—’˜wÑ'Ô'ˆØÔ'ˆ
à”_ˆ
Ø!×1Ò1°'Ñ:Ô:ˆØ×#Ò# E¤JÑ/Ô/ˆå”XÔ)×-Ò-¨dÑ3Ô3ˆ
ØÔ#Ô.Ô7×<Ò<¸ZÑHÔHÐHõ ŒxŒ×"Ò" 4Ñ(Ô(ˆÝ”Ô!×%Ò% d¨DÑ1Ô1ˆØ&+ˆŒÔ#åŒY‰[Œ[ˆÝŒ	×"Ò" 2°A¸cÐ"ÑBÔBÐBØ
�
Š
�4ÑÔÐØ
�Š‰	Œ	ˆ	ð œð 	.ð 	.ˆIØÔ$ð ¨	Ô(=ð ØØŒO×"Ò" 9Ñ-Ô-Ð-Ð-å”8Ô%×)Ò)¨$Ñ/Ô/ˆØŒ×Ò˜hÑ'Ô'Ð'Ø!ˆÔØÔ(ˆØÔ%ð 	/ð 	/ˆDØŒyÐ-Ò-Ð-ØÔ!×(Ò(¨Ñ.Ô.Ð.øØ#×3Ò3°GÑ<Ô<ˆàˆØ×!Ò! -°Ñ>Ô>Ð>Ø×ÒØØØÔ  Ô*ØØÔ Ô)Øñ	ô 	ð 	ð 	×Ò˜ lÑ3Ô3Ð3ð Ô 7Ò*Ð*Ø$Ô*×.Ò.Ð4NÐ.ÑOÔOˆJØ%Ô+×/Ò/Ð5PÐ/ÑQÔQˆKØÔ×!Ò! +Ô"5°aÔ"8¸*Ô:KÈAÔ:NÑOÔOÐOð !Ô'¨Ô1Ô7ð 	*ð 	*ˆDØÔ×#Ò# DÑ)Ô)Ð)Ð)àÔ×Ò Ñ'Ô'Ð'Ø×Ò˜$ÑÔÐØ$*ˆ
ÔÔ!à(-ˆÔ%àˆ|Ðr   c                 óD   — t          | dd ¦  «        x}r|S | j        j        S )Nr   )ÚgetattrÚscener   )r   r   s     r   r
   z*WORLD_OT_convert_volume_to_mesh._world_get\   s+   € å˜G W¨dÑ3Ô3Ð3ˆ5ð 	ØˆLØŒ}Ô"Ð"r   c                 ó  — |                       ||¦  «         |j        D ]j}|j        }|                      |||¦  «        }	|j                             |j        j        ¦  «        }
|j                             |	j        |
         |¦  «         Œkd S ©N)	r=   r   Ú	from_nodeÚ
_sync_noderA   ÚfindÚfrom_socketr$   r(   )rE   Údst_treeÚdst_nodeÚ
dst_socketÚsrc_nodeÚ
src_socketrO   Úsrc_linkÚsrc_linked_nodeÚdst_linked_nodeÚfrom_socket_indexs              r   r>   z0WORLD_OT_convert_volume_to_mesh._sync_node_inputb   sž   € ð 	×!Ò! *¨jÑ9Ô9Ð9Ø"Ô(ð 	ð 	ˆHØ&Ô0ˆOØ"Ÿošo¨h¸ÈÑVÔVˆOà (Ô 0× 5Ò 5°hÔ6JÔ6OÑ PÔ PÐØŒN×ÒØÔ'Ð(9Ô:Øñô ð ð ð	ð 	r   c                 óà   — |j         |j        v r|j        |j                  S |j                             |j        ¦  «        }|                      ||¦  «         |                      ||||¦  «         |S )z½
        Find the counter part of the src_node in dst_tree. When found return the counter part. When not found
        create the counter part, sync it and return the created node.
        )r$   r<   r(   Ú	bl_idnamer=   Ú_sync_node_inputs)rE   r\   r_   rO   r]   s        r   rY   z*WORLD_OT_convert_volume_to_mesh._sync_nodev   so   € ð Œ=˜HœNÐ*Ð*Ø”> (¤-Ô0Ð0à”>×%Ò% hÔ&8Ñ9Ô9ˆà×!Ò! (¨HÑ5Ô5Ð5Ø×Ò˜x¨°8¸\ÑJÔJÐJØˆr   c           	      óŠ   — |j         j        D ]5}|j        rŒ
|j        }|dv rŒt	          ||t          ||¦  «        ¦  «         Œ6d S )N>   rf   Úbl_static_type)Úbl_rnaÚ
propertiesÚis_readonlyÚ
identifierÚsetattrrT   )rE   ÚdstÚsrcÚrna_propÚ	attr_names        r   r=   z4WORLD_OT_convert_volume_to_mesh._sync_rna_properties‰   sd   € Øœ
Ô-ð 	=ð 	=ˆHØÔ#ð Øà Ô+ˆIØÐ;Ð;Ð;ØÝ�C˜¥G¨C°Ñ$;Ô$;Ñ<Ô<Ð<Ð<ð	=ð 	=r   c           	      ó¶   — t          t          |j        ¦  «        ¦  «        D ]6}|j        |         }|j        |         }|                      ||||||¦  «         Œ7d S rW   )ÚrangeÚlenr   r>   )rE   r\   r]   r_   rO   Úindexr`   r^   s           r   rg   z1WORLD_OT_convert_volume_to_mesh._sync_node_inputs“   sm   € õ �3˜xœÑ/Ô/Ñ0Ô0ð 	fð 	fˆEØ!œ¨Ô/ˆJØ!œ¨Ô/ˆJØ×!Ò! (¨H°jÀ(ÈJÐXdÑeÔeÐeÐeð	fð 	fr   c                 ó   — d S rW   © )rE   r\   rO   s      r   r?   z+WORLD_OT_convert_volume_to_mesh._sync_linksŸ   s	   € ð
 	ˆr   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Úbl_labelÚ
bl_optionsrf   Úclassmethodr   rR   Ústaticmethodr
   r>   rY   r=   rg   r?   rx   r   r   r   r   	   sÉ   € € € € € ðuð uà€HØ˜fÐ%€JØ.€Iàð1ð 1ñ „[ð1ð@ð @ð @ðD ð#ð #ñ „\ð#ð
ð ð ð(ð ð ð&=ð =ð =ð
fð 
fð 
fðð ð ð ð r   r   )r%   r1   ÚtypesÚOperatorr   Úclassesrx   r   r   ú<module>r„      sa   ðð
 €
€
€
Ø €€€ð[ð [ð [ð [ð [ c¤iÔ&8ñ [ô [ð [ð~ $ð€€€r   