
    Ui	                     $    S SK r  " S S\5      rg)    Nc                   L    \ 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g)
CyGLFW3App	   z
Uses the glfw library via the cyglfw3 bindings to create an opengl context, listen to keyboard
and VR HMD/controller events, and clean up
c                 8    Xl         X l        SU l        S U l        g NF)renderertitle_is_initializedwindow)selfr   r	   s      X/home/james-whalen/.local/lib/python3.13/site-packages/openvr/glframework/cyglfw3_app.py__init__CyGLFW3App.__init__   s     
$    c                     U $ )zsetup for 'with' keyword r   s    r   	__enter__CyGLFW3App.__enter__   s    r   c                 $    U R                  5         g)zcleanup for 'with' keywordN)
dispose_gl)r   type_argvalue	tracebacks       r   __exit__CyGLFW3App.__exit__   s    r   c                    U R                   (       a  g [        R                  " 5       (       d  [        S5      e[        R                  " [        R
                  S5        [        R                  " [        R                  S5        [        R                  " [        R                  [        R                  5        [        R                  " [        R                  S5        [        R                  " S5        [        R                  " U R                  R                  S   U R                  R                  S   U R                  5      U l        U R                  c   [        R                   " 5         [        S5      e[        R"                  " U R                  U R$                  5        [        R&                  " U R                  5        U R                  b  U R                  R)                  5         SU l         g )NzGLFW Initialization failed      Fr   zGLFW Window creation failedT)r
   glfwInitRuntimeError
WindowHintCONTEXT_VERSION_MAJORCONTEXT_VERSION_MINOROPENGL_PROFILEOPENGL_CORE_PROFILEDOUBLEBUFFERSwapIntervalCreateWindowr   window_sizer	   r   	TerminateSetKeyCallbackkey_callbackMakeContextCurrentinit_glr   s    r   r0   CyGLFW3App.init_gl   s3   yy{{;<<22A622A6++T-E-EF))51!''(A(A!(DdmmF_F_`aFb(,

4;;NN<==DKK):):;,==$MM!!##r   c                    U R                  5         [        R                  " U R                  5        U R                  R                  5         [        R                  " U R                  5        [        R                  " 5         g)zrender scene one timeN)r0   r    r/   r   r   render_sceneSwapBuffers
PollEventsr   s    r   r3   CyGLFW3App.render_scene2   sI    ,""$%r   c                     U R                   bG  [        R                  " U R                   5        U R                  b  U R                  R	                  5         [        R
                  " 5         SU l        g r   )r   r    r/   r   r   r,   r
   r   s    r   r   CyGLFW3App.dispose_gl:   sJ    ;;"##DKK0}}(((*$r   c                     U[         R                  :X  a7  U[         R                  :X  a"  [         R                  " U R                  S5        ggg)z%press ESCAPE to quite the applicationTN)r    
KEY_ESCAPEPRESSSetWindowShouldCloser   )r   r   keyscancodeactionmodss         r   r.   CyGLFW3App.key_callbackB   s5    $//!f

&:%%dkk48 ';!r   c                     [         R                  " U R                  5      (       d8  U R                  5         [         R                  " U R                  5      (       d  M7  gg)z,keep rendering until the user presses escapeN)r    WindowShouldCloser   r3   r   s    r   run_loopCyGLFW3App.run_loopG   s:    ((55 ((55r   )r
   r   r	   r   N)zCyGLFW3 test)__name__
__module____qualname____firstlineno____doc__r   r   r   r0   r3   r   r.   rD   __static_attributes__r   r   r   r   r   	   s/    
$*%9
 r   r   )cyglfw3r    objectr   r   r   r   <module>rN      s    A  A r   