
    Ui                     \    S SK r S SKJr    " S S\5      r " S S\5      r " S S\5      rg)	    N)glFlushc                   R    \ rS rSrSrSS jrS rS rS rS r	S r
S	 rS
 rS rSrg)GlfwBaseApp   zBase version renders to desktopc                 ,   Xl         X l        SU l        [        R                  " 5       (       d  [        S5      e[        R                  " [        R                  S5        [        R                  " [        R                  S5        [        R                  " [        R                  [        R                  5        U R                  5         [        R                  " U R                   R                  S   U R                   R                  S   U R                  SS5      U l        U R                  c   [        R                  " 5         [        S5      e[        R                   " U R                  U R"                  5        [        R$                  " U R                  5        g)	zECreates an OpenGL context and a window, and acquires OpenGL resourcesFzGLFW Initialization error      r      NzGLFW window creation error)renderertitle_is_initializedglfwinit	Exceptionwindow_hintCONTEXT_VERSION_MAJORCONTEXT_VERSION_MINOROPENGL_PROFILEOPENGL_CORE_PROFILE_configure_contextcreate_windowwindow_sizewindow	terminateset_key_callbackkey_callbackmake_context_current)selfr   r   s      U/home/james-whalen/.local/lib/python3.13/site-packages/openvr/glframework/glfw_app.py__init__GlfwBaseApp.__init__   s    
$yy{{78833Q733Q7,,d.F.FG!(()B)B1)Et}}G`G`abGceieoeoquw{|;;NN899dkk4+<+<=!!$++.    c                     g )N r   s    r   r   GlfwBaseApp._configure_context%   s    r"   c                     U $ )z#setup for RAII using 'with' keywordr$   r%   s    r   	__enter__GlfwBaseApp.__enter__(   s    r"   c                 $    U R                  5         g)z%cleanup for RAII using 'with' keywordN)
dispose_gl)r   type_argvalue	tracebacks       r   __exit__GlfwBaseApp.__exit__,   s    r"   c                     U R                   (       a  g [        R                  " U R                  5        U R                  (       a  U R                  R                  5         SU l         g )NT)r   r   r   r   r   init_glr%   s    r   r2   GlfwBaseApp.init_gl0   s?    !!$++.==MM!!##r"   c                     U R                  5         [        R                  " U R                  5        U R                  R                  5         [        5         [        R                  " 5         g)zrender scene one timeN)r2   r   r   r   r   render_scener   poll_eventsr%   s    r   r5   GlfwBaseApp.render_scene8   s@    !!$++.""$ 		r"   c                 4   U R                   (       aK  [        R                  " U R                   5        U R                  (       a  U R                  R	                  5         [        R
                  " U R                   5        [        R                  " 5         SU l        g NF)r   r   r   r   r+   destroy_windowr   r   r%   s    r   r+   GlfwBaseApp.dispose_glB   sV    ;;%%dkk2}}((*DKK($r"   c                     U[         R                  :X  a7  U[         R                  :X  a"  [         R                  " U R                  S5        ggg)z$press ESCAPE to quit the applicationTN)r   
KEY_ESCAPEPRESSset_window_should_closer   )r   r   keyscancodeactionmodss         r   r   GlfwBaseApp.key_callbackK   s5    $//!f

&:((d; ';!r"   c                     [         R                  " U R                  5      (       d8  U R                  5         [         R                  " U R                  5      (       d  M7  gg)z'keep rendering until the user says quitN)r   window_should_closer   r5   r%   s    r   run_loopGlfwBaseApp.run_loopP   s:    **4;;77 **4;;77r"   )r   r   r   r   N)r   )__name__
__module____qualname____firstlineno____doc__r    r   r(   r/   r2   r5   r+   r   rG   __static_attributes__r$   r"   r   r   r      s2    %/($%<
 r"   r   c                   6   ^  \ rS rSrSrSU 4S jjrS rSrU =r$ )GlfwAppV   z^GlfwApp uses glfw library to create an opengl context, listen to keyboard events, and clean upc                 T   > [         [        U ]  XS9  [        R                  " S5        g )N)r   r   r   )superrP   r    r   swap_interval)r   r   r   	__class__s      r   r    GlfwApp.__init__Y   s#    gt%x%E1r"   c                 N    [         R                  " [         R                  S5        g r9   )r   r   DOUBLEBUFFERr%   s    r   r   GlfwApp._configure_context]   s     	**E2r"   r$   )rP   )	rI   rJ   rK   rL   rM   r    r   rN   __classcell__rU   s   @r   rP   rP   V   s    d3 3r"   rP   c                   0   ^  \ rS rSr/ S 4U 4S jjrSrU =r$ )	GlfwVrAppc   c                    > SS K nUR                  R                  USS9n[        [        U ]  US9  [        R                  " S5        g )Nr      )actormultisample)r   )openvr.gl_renderergl_rendererOpenVrGlRendererrS   r]   r    r   rT   )r   actorsr   openvrr   rU   s        r   r    GlfwVrApp.__init__d   sB    !%%66VQR6Si'':1r"   r$   )rI   rJ   rK   rL   r    rN   rZ   r[   s   @r   r]   r]   c   s       r"   r]   )r   	OpenGL.GLr   objectr   rP   r]   r$   r"   r   <module>rk      s9   
  
E & E P
3k 
3 r"   