
    \
j#                        d dl Z d dlZd dlZd dlmZmZmZmZmZ d dlm	Z	m
Z
mZmZ ddlmZmZmZmZ ddlmZmZ eded	ed
ede	dediZeded	edede	dediZedededede	dediZddddddddZe
dediZdddddddddZ G d d          Z G d d           Z G d! d"          Zd# Z G d$ d%e          Zd& Zd' Z dS )(    N)GL_BYTEGL_UNSIGNED_BYTEGL_SHORTGL_UNSIGNED_SHORTGL_FLOAT)GL_UNSIGNED_INTGL_ELEMENT_ARRAY_BUFFERGL_ARRAY_BUFFERGL_TRIANGLES   )ModelMaterialMaterialGroupTexturedMaterialGroup   )ModelDecodeExceptionModelDecoderbBsSIfhH      	      )SCALARVEC2VEC3VEC4MAT2MAT3MAT4element_arrayarrayvn0t1tc)POSITIONNORMALTANGENT
TEXCOORD_0
TEXCOORD_1COLOR_0JOINTS_0	WEIGHTS_0c                       e Zd Zd Zd ZdS )Bufferc                 "    || _         || _        d S N)_length_uri)selflengthuris      R/DATA/AppData/hermes/venv/lib/python3.11/site-packages/pyglet/model/codecs/gltf.py__init__zBuffer.__init__l   s    			    c                     t           j                            | j        d          }|                    |           |                    |          }|                                 |S )Nrb)pygletresourcefiler;   seekreadclose)r<   offsetr=   rF   datas        r?   rH   zBuffer.readp   sP    ##DIt44		&yy  

rA   N__name__
__module____qualname__r@   rH    rA   r?   r7   r7   i   s2              rA   r7   c                       e Zd Zd ZdS )
BufferViewc                 L    || _         || _        || _        || _        || _        d S r9   )bufferrJ   r=   targetstride)r<   rT   rJ   r=   rU   rV   s         r?   r@   zBufferView.__init__y   s)    rA   N)rM   rN   rO   r@   rP   rA   r?   rR   rR   x   s#            rA   rR   c                       e Zd Zd Zd ZdS )Accessorc	                     || _         || _        || _        || _        || _        || _        || _        || _        t          |         t          |         z  | _
        d S r9   )buffer_viewrJ   component_typecountmaximumminimumtypesparse_component_sizes_accessor_type_sizessize)	r<   rZ   rJ   	comp_typer\   r]   r^   accessor_typer`   s	            r?   r@   zAccessor.__init__   sW    &'
!	$Y/2F}2UU			rA   c                     | j         | j        j         z   }| j        | j        z  }| j        j        pd}| j        j                            ||          }|S )Nr   )rJ   rZ   rc   r\   rV   rT   rH   )r<   rJ   r=   rV   rK   s        r?   rH   zAccessor.read   sR    t/66TZ'!(-A&++FF;;rA   NrL   rP   rA   r?   rX   rX      s5        
V 
V 
V    rA   rX   c                 
   | !t           j                            |d          } n?| j        dk    r4|                                  t           j                            |d          } 	 t          j        |           }n"# t
          j        $ r t          d          w xY w	 |                                  n# |                                  w xY wd|vrt          d          t          |d         d                   dk     rt          d          t                      }t                      }t                      }t                      }t          |                    dg                     D ]$\  }}	t          |	d	         |	d
                   ||<   %t          |                    dg                     D ]\  }}	|	d         }
||
         }|	                    dd          }|	                    d	          }|	                    d          }|	                    dd          }t          |||||          ||<   t          |                    dg                     D ]\  }}	|	                    d          }||         }|	                    dd          }|	                    d          }|	                    d          }|	                    d          }|	                    d          }|	                    d          }|	                    dd           }t          ||||||||          ||<   g }|                    d          D ]}|                    dg           D ]}d }g }d}|d                                         D ]\  }}||         }t"          |         }|st$          |j                 } t(          |j                 }!d                    || |!          }"|j        }t1          || z            t2          |j                 z   }#t5          j        d|#z   |                                          }$|                    |"|$f           d|v r|                    d          }%||%         }t$          |j                 } t1          |j        | z            t2          |j                 z   }&t5          j        d|&z   |                                          }g d }'g d }(g d })g d!}*d"}+d#},t=          d$|'|(|)|*|+|,          }-t?          |-%          }.|r |j         |tB          |.|g|R  }/n |j"        |tB          |.g|R  }/|                    |/           	|S )&Nrz4Json error. Does not appear to be a valid glTF file.assetz0Not a valid glTF file. Asset property not found.versiong       @z#Only glTF 2.0+ models are supportedbuffers
byteLengthr>   bufferViewsrT   
byteOffsetr   rU   
byteStrider   	accessors
bufferViewcomponentTyper\   maxminr_   r`   meshes
primitives
attributesz	{0}{1}{2}<indices)      ?rz   rz   )        r{   r{   g      Y@rz   Default)material)#rD   rE   rF   moderI   jsonloadJSONDecodeErrorr   floatdict	enumerategetr7   rR   rX   items_attributesrb   r_   _pyglet_typesr[   formatr\   str_struct_typesstructunpackrH   appendr   r   add_indexedr   add)0rF   filenamebatchrK   rk   buffer_viewsrp   	materialsiitembuffer_indexrT   rJ   r=   rU   rV   buf_view_indexbuf_viewrd   r\   maximiniacc_typer`   vertex_lists	mesh_data	primitivery   attribute_listattribute_typeaccessorattribattrib_sizepyglet_type
pyglet_fmt
struct_fmtr(   indices_indexfmtdiffuseambientspecularemission	shininessopacityr}   groupvlists0                                                   r?   parse_gltf_filer      sH   |##Hc22	c		

##Hc22y [ [ ["#YZZZ[ 	 	



d"#UVVVgy)**S00&'LMMMffG66LIITXXi4455 = =4D.U<<

TXXmR8899 M M4H~&,**,''(##,**$VVVVVLLQTXXk26677 
b 
b4,///,**HH_--	!!xxxx88F##(D))&)UD$PXZ`aa	!LXXh'' 1' 1'	"|R88 /	' /	'IGNE%.|%<%B%B%D%D ; ;!$Q<$^4 28=A+H,CD(//[QQ
  !455hF]8^^
cJ&6HH%%z5&9::::I%% )i 8 8$]328=A(.;677-H_:`` -c	8==??CC &ooG%ooG&H&HIG	7GXxQZ\cddH!8444E O))%ug_P^___!	%uN~NNN&&&&_/	'b s   $A9 8B1 9BB1 1Cc                       e Zd Zd Zd ZdS )GLTFModelDecoderc                     dgS )Nz.gltfrP   )r<   s    r?   get_file_extensionsz$GLTFModelDecoder.get_file_extensions  s
    yrA   c                     |st           j                                        }t          |||          }i }t	          |||          S )N)rF   r   r   )r   )rD   graphicsBatchr   r   )r<   rF   r   r   r   texturess         r?   decodezGLTFModelDecoder.decode
  sK     	,O))++E&D85QQQ\859999rA   N)rM   rN   rO   r   r   rP   rA   r?   r   r     s2          : : : : :rA   r   c                       t                      gS r9   )r   rP   rA   r?   get_decodersr     s    rA   c                      g S r9   rP   rP   rA   r?   get_encodersr     s    IrA   )!r   r   rD   	pyglet.glr   r   r   r   r   r   r	   r
   r    r   r   r   r   r   r   r   r   ra   rb   _targetsr   r7   rR   rX   r   r   r   r   rP   rA   r?   <module>r      s]  F    V V V V V V V V V V V V V V ] ] ] ] ] ] ] ] ] ] ] ] D D D D D D D D D D D D 0 0 0 0 0 0 0 0
 SccsSc SccsSc QaaqQa     _W 	 	                     .g g g\: : : : :| : : :         rA   