pyglet 3.0.dev1__tar.gz → 3.0.dev2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (931) hide show
  1. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/PKG-INFO +3 -2
  2. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/contrib/toys/follow_mouse.py +1 -1
  3. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/programming_guide/examplegame.rst +72 -65
  4. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/examples/graphics/instancing.py +1 -2
  5. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/examples/opengl/minimal_shader.py +2 -2
  6. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/examples/opengl/opengl_core.py +1 -2
  7. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/examples/opengl/torus.py +1 -1
  8. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/__init__.py +1 -1
  9. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/enums.py +11 -1
  10. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/experimental/geoshader_sprite.py +1 -1
  11. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/experimental/particles.py +26 -34
  12. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/graphics/__init__.py +0 -2
  13. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/graphics/api/gl/draw.py +1 -1
  14. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/graphics/api/gl/enums.py +1 -2
  15. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/graphics/api/gl/shader.py +1 -1
  16. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/graphics/api/gl/vertexdomain.py +2 -1
  17. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/graphics/api/gl2/draw.py +1 -1
  18. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/graphics/api/gl2/vertexdomain.py +1 -1
  19. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/graphics/api/webgl/draw.py +1 -1
  20. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/graphics/api/webgl/enums.py +1 -2
  21. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/graphics/api/webgl/shader.py +1 -1
  22. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/graphics/api/webgl/vertexdomain.py +2 -2
  23. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/graphics/draw.py +1 -2
  24. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/graphics/shader.py +2 -1
  25. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/graphics/vertexdomain.py +2 -1
  26. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/gui/ninepatch.py +2 -2
  27. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/gui/widgets.py +1 -1
  28. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/input/base.py +3 -2
  29. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/input/win32/xinput.py +2 -2
  30. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/media/codecs/webaudio_pyodide.py +3 -4
  31. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/model/__init__.py +9 -35
  32. pyglet-3.0.dev2/pyglet/model/codecs/base.py +157 -0
  33. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/model/codecs/gltf.py +107 -63
  34. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/model/codecs/obj.py +60 -57
  35. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/shapes.py +3 -2
  36. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/sprite.py +2 -2
  37. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/text/caret.py +1 -1
  38. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/text/formats/structured.py +1 -2
  39. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/text/layout/base.py +2 -2
  40. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/integration/graphics/opengl_core/test_opengl_instancing.py +1 -1
  41. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/integration/graphics/test_vertex_list.py +2 -1
  42. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/interactive/text/test_inline_elements.py +1 -1
  43. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/interactive/text/test_inline_elements_style_change.py +1 -1
  44. pyglet-3.0.dev1/pyglet/graphics/base.py +0 -10
  45. pyglet-3.0.dev1/pyglet/model/codecs/base.py +0 -140
  46. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/.coveragerc +0 -0
  47. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  48. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  49. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/.github/ISSUE_TEMPLATE/questions--or-other.md +0 -0
  50. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/.github/workflows/codeql.yml +0 -0
  51. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/.github/workflows/unittests.yml +0 -0
  52. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/.gitignore +0 -0
  53. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/.readthedocs.yml +0 -0
  54. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/API_CHANGES.rst +0 -0
  55. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/LICENSE +0 -0
  56. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/MANIFEST.in +0 -0
  57. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/README.md +0 -0
  58. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/RELEASE_NOTES +0 -0
  59. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/TODO.txt +0 -0
  60. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/contrib/aseprite_codec/README +0 -0
  61. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/contrib/aseprite_codec/asedemo.py +0 -0
  62. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/contrib/aseprite_codec/aseprite.py +0 -0
  63. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/contrib/aseprite_codec/running.ase +0 -0
  64. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/contrib/logo3d/logo3d.jpg +0 -0
  65. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/contrib/logo3d/logo3d.obj.zip +0 -0
  66. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/contrib/logo3d/logo3d.wings +0 -0
  67. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/contrib/qt_sprite_preview.py +0 -0
  68. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/contrib/scenemanager.py +0 -0
  69. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/Makefile +0 -0
  70. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/_static/css/custom.css +0 -0
  71. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/_static/favicon.ico +0 -0
  72. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/_static/logo.png +0 -0
  73. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/_static/logo5.svg +0 -0
  74. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/_static/relatedlogo.png +0 -0
  75. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/conf.py +0 -0
  76. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/external_resources.rst +0 -0
  77. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/index.rst +0 -0
  78. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/internal/contributing.rst +0 -0
  79. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/internal/dist.rst +0 -0
  80. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/internal/doc.rst +0 -0
  81. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/internal/generated.rst +0 -0
  82. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/internal/gl.rst +0 -0
  83. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/internal/media_logging_manual.rst +0 -0
  84. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/internal/media_manual.rst +0 -0
  85. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/internal/testing.rst +0 -0
  86. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/internal/virtualenv.rst +0 -0
  87. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/internal/wraptypes-class.svg +0 -0
  88. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/internal/wraptypes.rst +0 -0
  89. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/make.bat +0 -0
  90. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/modules/app.rst +0 -0
  91. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/modules/clock.rst +0 -0
  92. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/modules/customtypes.rst +0 -0
  93. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/modules/display.rst +0 -0
  94. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/modules/enums.rst +0 -0
  95. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/modules/event.rst +0 -0
  96. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/modules/font/index.rst +0 -0
  97. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/modules/font/user.rst +0 -0
  98. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/modules/graphics/allocation.rst +0 -0
  99. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/modules/graphics/atlas.rst +0 -0
  100. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/modules/graphics/draw.rst +0 -0
  101. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/modules/graphics/framebuffer.rst +0 -0
  102. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/modules/graphics/index.rst +0 -0
  103. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/modules/graphics/shader.rst +0 -0
  104. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/modules/graphics/vertexbuffer.rst +0 -0
  105. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/modules/graphics/vertexdomain.rst +0 -0
  106. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/modules/gui.rst +0 -0
  107. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/modules/image/animation.rst +0 -0
  108. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/modules/image/index.rst +0 -0
  109. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/modules/info.rst +0 -0
  110. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/modules/input.rst +0 -0
  111. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/modules/math.rst +0 -0
  112. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/modules/media.rst +0 -0
  113. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/modules/media_synthesis.rst +0 -0
  114. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/modules/models.rst +0 -0
  115. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/modules/pyglet.rst +0 -0
  116. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/modules/resource.rst +0 -0
  117. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/modules/shapes.rst +0 -0
  118. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/modules/sprite.rst +0 -0
  119. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/modules/text/caret.rst +0 -0
  120. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/modules/text/document.rst +0 -0
  121. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/modules/text/index.rst +0 -0
  122. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/modules/text/layout.rst +0 -0
  123. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/modules/window.rst +0 -0
  124. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/modules/window_key.rst +0 -0
  125. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/modules/window_mouse.rst +0 -0
  126. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/programming_guide/context.rst +0 -0
  127. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/programming_guide/debug.rst +0 -0
  128. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/programming_guide/eventloop.rst +0 -0
  129. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/programming_guide/events.rst +0 -0
  130. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/programming_guide/gl.rst +0 -0
  131. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/programming_guide/gui.rst +0 -0
  132. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/programming_guide/image.rst +0 -0
  133. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/programming_guide/img/abstract_image.png +0 -0
  134. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/programming_guide/img/abstract_image.svg +0 -0
  135. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/programming_guide/img/buffer_image.png +0 -0
  136. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/programming_guide/img/buffer_image.svg +0 -0
  137. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/programming_guide/img/context_flow.png +0 -0
  138. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/programming_guide/img/context_flow.svg +0 -0
  139. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/programming_guide/img/cursor_mac_crosshair.png +0 -0
  140. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/programming_guide/img/cursor_mac_default.png +0 -0
  141. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/programming_guide/img/cursor_mac_hand.png +0 -0
  142. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/programming_guide/img/cursor_mac_no.png +0 -0
  143. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/programming_guide/img/cursor_mac_size_down.png +0 -0
  144. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/programming_guide/img/cursor_mac_size_left.png +0 -0
  145. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/programming_guide/img/cursor_mac_size_left_right.png +0 -0
  146. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/programming_guide/img/cursor_mac_size_right.png +0 -0
  147. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/programming_guide/img/cursor_mac_size_up.png +0 -0
  148. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/programming_guide/img/cursor_mac_size_up_down.png +0 -0
  149. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/programming_guide/img/cursor_mac_text.png +0 -0
  150. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/programming_guide/img/cursor_mac_wait.png +0 -0
  151. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/programming_guide/img/cursor_win_crosshair.png +0 -0
  152. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/programming_guide/img/cursor_win_default.png +0 -0
  153. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/programming_guide/img/cursor_win_hand.png +0 -0
  154. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/programming_guide/img/cursor_win_help.png +0 -0
  155. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/programming_guide/img/cursor_win_no.png +0 -0
  156. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/programming_guide/img/cursor_win_size.png +0 -0
  157. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/programming_guide/img/cursor_win_size_left_right.png +0 -0
  158. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/programming_guide/img/cursor_win_size_nesw.png +0 -0
  159. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/programming_guide/img/cursor_win_size_nwse.png +0 -0
  160. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/programming_guide/img/cursor_win_size_up_down.png +0 -0
  161. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/programming_guide/img/cursor_win_text.png +0 -0
  162. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/programming_guide/img/cursor_win_wait.png +0 -0
  163. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/programming_guide/img/cursor_win_wait_arrow.png +0 -0
  164. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/programming_guide/img/explosion.png +0 -0
  165. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/programming_guide/img/font_metrics.png +0 -0
  166. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/programming_guide/img/font_metrics.svg +0 -0
  167. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/programming_guide/img/image_classes.png +0 -0
  168. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/programming_guide/img/image_classes.svg +0 -0
  169. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/programming_guide/img/image_grid.png +0 -0
  170. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/programming_guide/img/image_grid.svg +0 -0
  171. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/programming_guide/img/image_sequence.png +0 -0
  172. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/programming_guide/img/image_sequence.svg +0 -0
  173. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/programming_guide/img/mouse_coordinates.png +0 -0
  174. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/programming_guide/img/mouse_coordinates.svg +0 -0
  175. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/programming_guide/img/screens.png +0 -0
  176. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/programming_guide/img/screens.svg +0 -0
  177. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/programming_guide/img/text_classes.png +0 -0
  178. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/programming_guide/img/text_classes.svg +0 -0
  179. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/programming_guide/img/window_location.png +0 -0
  180. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/programming_guide/img/window_location.svg +0 -0
  181. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/programming_guide/img/window_osx_borderless.png +0 -0
  182. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/programming_guide/img/window_osx_default.png +0 -0
  183. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/programming_guide/img/window_osx_dialog.png +0 -0
  184. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/programming_guide/img/window_osx_tool.png +0 -0
  185. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/programming_guide/img/window_xp_default.png +0 -0
  186. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/programming_guide/img/window_xp_dialog.png +0 -0
  187. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/programming_guide/img/window_xp_overlay.png +0 -0
  188. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/programming_guide/img/window_xp_tool.png +0 -0
  189. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/programming_guide/img/window_xp_transparent.png +0 -0
  190. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/programming_guide/input.rst +0 -0
  191. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/programming_guide/installation.rst +0 -0
  192. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/programming_guide/keyboard.rst +0 -0
  193. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/programming_guide/math.rst +0 -0
  194. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/programming_guide/media.rst +0 -0
  195. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/programming_guide/migration.rst +0 -0
  196. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/programming_guide/migration2.rst +0 -0
  197. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/programming_guide/models.rst +0 -0
  198. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/programming_guide/mouse.rst +0 -0
  199. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/programming_guide/opengles.rst +0 -0
  200. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/programming_guide/options.rst +0 -0
  201. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/programming_guide/pyodide.rst +0 -0
  202. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/programming_guide/quickstart.rst +0 -0
  203. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/programming_guide/rendering.rst +0 -0
  204. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/programming_guide/resources.rst +0 -0
  205. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/programming_guide/shapes.rst +0 -0
  206. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/programming_guide/text.rst +0 -0
  207. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/programming_guide/time.rst +0 -0
  208. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/programming_guide/windowing.rst +0 -0
  209. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/doc/requirements.txt +0 -0
  210. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/examples/clipboard.py +0 -0
  211. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/examples/dpi_scaled_window.py +0 -0
  212. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/examples/events/events_key_state_handler.py +0 -0
  213. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/examples/events/register_event_type.py +0 -0
  214. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/examples/events/window_events.py +0 -0
  215. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/examples/events/window_platform_event.py +0 -0
  216. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/examples/game/resources/asteroid.png +0 -0
  217. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/examples/game/resources/bullet.png +0 -0
  218. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/examples/game/resources/bullet.wav +0 -0
  219. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/examples/game/resources/engine_flame.png +0 -0
  220. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/examples/game/resources/player.png +0 -0
  221. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/examples/game/version1/asteroid.py +0 -0
  222. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/examples/game/version1/game/__init__.py +0 -0
  223. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/examples/game/version1/game/load.py +0 -0
  224. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/examples/game/version1/game/resources.py +0 -0
  225. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/examples/game/version2/asteroid.py +0 -0
  226. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/examples/game/version2/game/__init__.py +0 -0
  227. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/examples/game/version2/game/load.py +0 -0
  228. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/examples/game/version2/game/physicalobject.py +0 -0
  229. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/examples/game/version2/game/player.py +0 -0
  230. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/examples/game/version2/game/resources.py +0 -0
  231. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/examples/game/version3/asteroid.py +0 -0
  232. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/examples/game/version3/game/__init__.py +0 -0
  233. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/examples/game/version3/game/load.py +0 -0
  234. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/examples/game/version3/game/physicalobject.py +0 -0
  235. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/examples/game/version3/game/player.py +0 -0
  236. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/examples/game/version3/game/resources.py +0 -0
  237. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/examples/game/version3/game/util.py +0 -0
  238. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/examples/game/version4/asteroid.py +0 -0
  239. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/examples/game/version4/game/__init__.py +0 -0
  240. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/examples/game/version4/game/asteroid.py +0 -0
  241. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/examples/game/version4/game/bullet.py +0 -0
  242. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/examples/game/version4/game/load.py +0 -0
  243. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/examples/game/version4/game/physicalobject.py +0 -0
  244. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/examples/game/version4/game/player.py +0 -0
  245. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/examples/game/version4/game/resources.py +0 -0
  246. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/examples/game/version4/game/util.py +0 -0
  247. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/examples/game/version5/asteroid.py +0 -0
  248. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/examples/game/version5/game/__init__.py +0 -0
  249. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/examples/game/version5/game/asteroid.py +0 -0
  250. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/examples/game/version5/game/bullet.py +0 -0
  251. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/examples/game/version5/game/load.py +0 -0
  252. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/examples/game/version5/game/physicalobject.py +0 -0
  253. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/examples/game/version5/game/player.py +0 -0
  254. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/examples/game/version5/game/resources.py +0 -0
  255. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/examples/game/version5/game/util.py +0 -0
  256. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/examples/gui/bar.png +0 -0
  257. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/examples/gui/button_hover.png +0 -0
  258. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/examples/gui/button_pressed.png +0 -0
  259. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/examples/gui/button_unpressed.png +0 -0
  260. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/examples/gui/knob.png +0 -0
  261. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/examples/gui/widgets.py +0 -0
  262. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/examples/hello_world.py +0 -0
  263. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/examples/image/image_convert.py +0 -0
  264. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/examples/image/image_display.py +0 -0
  265. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/examples/input/apple_remote.py +0 -0
  266. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/examples/input/controller.py +0 -0
  267. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/examples/input/input.py +0 -0
  268. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/examples/input/joystick.py +0 -0
  269. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/examples/input/tablet.py +0 -0
  270. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/examples/media/media_info.py +0 -0
  271. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/examples/media/media_player.py +0 -0
  272. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/examples/media/noisy/README +0 -0
  273. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/examples/media/noisy/ball.png +0 -0
  274. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/examples/media/noisy/ball.wav +0 -0
  275. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/examples/media/noisy/noisy.py +0 -0
  276. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/examples/media/soundspace/README +0 -0
  277. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/examples/media/soundspace/reader.py +0 -0
  278. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/examples/media/soundspace/res/bass.wav +0 -0
  279. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/examples/media/soundspace/res/drums.wav +0 -0
  280. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/examples/media/soundspace/res/guitar.wav +0 -0
  281. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/examples/media/soundspace/res/piano.wav +0 -0
  282. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/examples/media/soundspace/res/space.txt +0 -0
  283. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/examples/media/soundspace/soundspace.py +0 -0
  284. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/examples/media/synthesizer.py +0 -0
  285. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/examples/media/video.py +0 -0
  286. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/examples/model/box.mtl +0 -0
  287. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/examples/model/box.obj +0 -0
  288. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/examples/model/fpscamera.py +0 -0
  289. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/examples/model/logo3d.mtl +0 -0
  290. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/examples/model/logo3d.obj +0 -0
  291. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/examples/model/model.py +0 -0
  292. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/examples/model/pyglet.png +0 -0
  293. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/examples/opengl/compute_shader.py +0 -0
  294. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/examples/opengl/egl_context.py +0 -0
  295. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/examples/opengl/opengl_context.py +0 -0
  296. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/examples/opengl/opengl_scissor.py +0 -0
  297. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/examples/opengl/pyglet.png +0 -0
  298. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/examples/programming_guide/animation.py +0 -0
  299. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/examples/programming_guide/dinosaur.gif +0 -0
  300. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/examples/programming_guide/events.py +0 -0
  301. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/examples/programming_guide/hello_world.py +0 -0
  302. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/examples/programming_guide/image_viewer.py +0 -0
  303. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/examples/programming_guide/kitten.jpg +0 -0
  304. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/examples/programming_guide/window_subclass.py +0 -0
  305. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/examples/resources/Brick1Blue.png +0 -0
  306. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/examples/resources/Brick1Crack3.png +0 -0
  307. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/examples/resources/Brick1Gray.png +0 -0
  308. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/examples/resources/kitten.jpg +0 -0
  309. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/examples/resources/pyglet.png +0 -0
  310. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/examples/shapes.py +0 -0
  311. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/examples/sprite/depth_sprite.py +0 -0
  312. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/examples/sprite/display_sprite.py +0 -0
  313. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/examples/sprite/multi_texture_sprite.py +0 -0
  314. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/examples/sprite/sprite_batching.py +0 -0
  315. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/examples/text/advanced_font.py +0 -0
  316. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/examples/text/font_groups.py +0 -0
  317. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/examples/text/html_label.py +0 -0
  318. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/examples/text/pyglet.png +0 -0
  319. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/examples/text/text_input.py +0 -0
  320. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/examples/text/user_bitmap_font.py +0 -0
  321. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/examples/timer.py +0 -0
  322. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/examples/window/camera.py +0 -0
  323. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/examples/window/camera_group.py +0 -0
  324. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/examples/window/file_dialogs.py +0 -0
  325. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/examples/window/fixed_resolution.py +0 -0
  326. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/examples/window/fps_change.py +0 -0
  327. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/examples/window/multiple_windows.py +0 -0
  328. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/examples/window/no_backend.py +0 -0
  329. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/examples/window/overlay_window.py +0 -0
  330. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/examples/window/transparent_window.py +0 -0
  331. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/experimental/dist_field/README +0 -0
  332. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/experimental/dist_field/genfield.py +0 -0
  333. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/experimental/dist_field/py.df.png +0 -0
  334. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/experimental/dist_field/py.png +0 -0
  335. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/experimental/dist_field/renderfield.py +0 -0
  336. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/experimental/flaccodec.py +0 -0
  337. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/experimental/hello_world.svg +0 -0
  338. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/experimental/instancing/sprite_instance.py +0 -0
  339. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/experimental/instancing/sprite_instance_object.py +0 -0
  340. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/experimental/multitexture_sprite/multitexturesprite.py +0 -0
  341. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/experimental/spritebenchmark.py +0 -0
  342. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/experimental/svg_test.py +0 -0
  343. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/experimental/wayland/gbm_egl_context.py +0 -0
  344. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/experimental/win32priority.py +0 -0
  345. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/make.py +0 -0
  346. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/__init__.pyi +0 -0
  347. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/app/__init__.py +0 -0
  348. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/app/async_app.py +0 -0
  349. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/app/base.py +0 -0
  350. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/app/cocoa.py +0 -0
  351. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/app/linux.py +0 -0
  352. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/app/win32.py +0 -0
  353. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/clock.py +0 -0
  354. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/config/__init__.py +0 -0
  355. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/config/gl/__init__.py +0 -0
  356. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/config/gl/egl.py +0 -0
  357. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/config/gl/macos.py +0 -0
  358. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/config/gl/windows.py +0 -0
  359. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/config/gl/x11.py +0 -0
  360. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/customtypes.py +0 -0
  361. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/display/__init__.py +0 -0
  362. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/display/__init__.pyi +0 -0
  363. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/display/base.py +0 -0
  364. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/display/cocoa.py +0 -0
  365. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/display/emscripten.py +0 -0
  366. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/display/headless.py +0 -0
  367. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/display/wayland.py +0 -0
  368. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/display/win32.py +0 -0
  369. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/display/xlib.py +0 -0
  370. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/display/xlib_vidmoderestore.py +0 -0
  371. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/event.py +0 -0
  372. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/experimental/README.md +0 -0
  373. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/experimental/hidraw.py +0 -0
  374. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/experimental/jobs.py +0 -0
  375. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/experimental/multitexture_sprite.py +0 -0
  376. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/experimental/net.py +0 -0
  377. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/extlibs/__init__.py +0 -0
  378. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/extlibs/earcut.py +0 -0
  379. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/extlibs/png.py +0 -0
  380. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/font/__init__.py +0 -0
  381. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/font/base.py +0 -0
  382. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/font/dwrite/__init__.py +0 -0
  383. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/font/dwrite/d2d1_lib.py +0 -0
  384. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/font/dwrite/d2d1_types_lib.py +0 -0
  385. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/font/dwrite/dwrite_lib.py +0 -0
  386. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/font/fontconfig.py +0 -0
  387. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/font/freetype.py +0 -0
  388. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/font/freetype_lib.py +0 -0
  389. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/font/group.py +0 -0
  390. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/font/harfbuzz/__init__.py +0 -0
  391. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/font/harfbuzz/harfbuzz_lib.py +0 -0
  392. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/font/pyodide_js.py +0 -0
  393. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/font/quartz.py +0 -0
  394. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/font/ttf.py +0 -0
  395. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/font/user.py +0 -0
  396. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/font/win32.py +0 -0
  397. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/graphics/allocation.py +0 -0
  398. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/graphics/api/__init__.py +0 -0
  399. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/graphics/api/base.py +0 -0
  400. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/graphics/api/gl/__init__.py +0 -0
  401. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/graphics/api/gl/base.py +0 -0
  402. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/graphics/api/gl/buffer.py +0 -0
  403. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/graphics/api/gl/cocoa/__init__.py +0 -0
  404. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/graphics/api/gl/cocoa/context.py +0 -0
  405. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/graphics/api/gl/context.py +0 -0
  406. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/graphics/api/gl/default_shaders.py +0 -0
  407. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/graphics/api/gl/egl/__init__.py +0 -0
  408. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/graphics/api/gl/egl/context.py +0 -0
  409. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/graphics/api/gl/framebuffer.py +0 -0
  410. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/graphics/api/gl/gl.py +0 -0
  411. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/graphics/api/gl/gl_info.py +0 -0
  412. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/graphics/api/gl/global_opengl.py +0 -0
  413. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/graphics/api/gl/lib.py +0 -0
  414. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/graphics/api/gl/shapes.py +0 -0
  415. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/graphics/api/gl/sprite.py +0 -0
  416. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/graphics/api/gl/state.py +0 -0
  417. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/graphics/api/gl/text.py +0 -0
  418. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/graphics/api/gl/texture.py +0 -0
  419. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/graphics/api/gl/vertexarray.py +0 -0
  420. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/graphics/api/gl/win32/__init__.py +0 -0
  421. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/graphics/api/gl/win32/context.py +0 -0
  422. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/graphics/api/gl/win32/wgl_info.py +0 -0
  423. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/graphics/api/gl/xlib/__init__.py +0 -0
  424. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/graphics/api/gl/xlib/context.py +0 -0
  425. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/graphics/api/gl/xlib/glx_info.py +0 -0
  426. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/graphics/api/gl1/__init__.py +0 -0
  427. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/graphics/api/gl1/gl_compat.py +0 -0
  428. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/graphics/api/gl2/__init__.py +0 -0
  429. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/graphics/api/gl2/buffer.py +0 -0
  430. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/graphics/api/gl2/global_opengl.py +0 -0
  431. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/graphics/api/gl2/shader.py +0 -0
  432. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/graphics/api/gl2/shapes.py +0 -0
  433. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/graphics/api/gl2/sprite.py +0 -0
  434. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/graphics/api/gl2/text.py +0 -0
  435. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/graphics/api/webgl/__init__.py +0 -0
  436. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/graphics/api/webgl/buffer.py +0 -0
  437. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/graphics/api/webgl/context.py +0 -0
  438. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/graphics/api/webgl/framebuffer.py +0 -0
  439. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/graphics/api/webgl/gl.py +0 -0
  440. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/graphics/api/webgl/gl_info.py +0 -0
  441. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/graphics/api/webgl/shapes.py +0 -0
  442. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/graphics/api/webgl/sprite.py +0 -0
  443. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/graphics/api/webgl/state.py +0 -0
  444. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/graphics/api/webgl/text.py +0 -0
  445. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/graphics/api/webgl/texture.py +0 -0
  446. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/graphics/api/webgl/vertexarray.py +0 -0
  447. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/graphics/api/webgl/webgl_js.pyi +0 -0
  448. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/graphics/atlas.py +0 -0
  449. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/graphics/buffer.py +0 -0
  450. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/graphics/framebuffer.py +0 -0
  451. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/graphics/instance.py +0 -0
  452. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/graphics/state.py +0 -0
  453. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/graphics/texture.py +0 -0
  454. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/gui/__init__.py +0 -0
  455. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/gui/frame.py +0 -0
  456. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/image/__init__.py +0 -0
  457. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/image/animation.py +0 -0
  458. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/image/base.py +0 -0
  459. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/image/codecs/__init__.py +0 -0
  460. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/image/codecs/bmp.py +0 -0
  461. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/image/codecs/dds.py +0 -0
  462. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/image/codecs/gdiplus.py +0 -0
  463. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/image/codecs/gdkpixbuf2.py +0 -0
  464. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/image/codecs/gif.py +0 -0
  465. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/image/codecs/js_image.py +0 -0
  466. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/image/codecs/ktx2.py +0 -0
  467. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/image/codecs/pil.py +0 -0
  468. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/image/codecs/png.py +0 -0
  469. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/image/codecs/quartz.py +0 -0
  470. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/image/codecs/wic.py +0 -0
  471. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/image/codecs/wincodec_lib.py +0 -0
  472. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/info.py +0 -0
  473. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/input/__init__.py +0 -0
  474. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/input/controller.py +0 -0
  475. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/input/controller_db.py +0 -0
  476. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/input/emscripten/__init__.py +0 -0
  477. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/input/emscripten/gamepad_js.py +0 -0
  478. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/input/linux/__init__.py +0 -0
  479. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/input/linux/evdev.py +0 -0
  480. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/input/linux/evdev_constants.py +0 -0
  481. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/input/linux/x11_xinput.py +0 -0
  482. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/input/linux/x11_xinput_tablet.py +0 -0
  483. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/input/macos/__init__.py +0 -0
  484. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/input/macos/darwin_gc.py +0 -0
  485. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/input/macos/darwin_hid.py +0 -0
  486. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/input/win32/__init__.py +0 -0
  487. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/input/win32/directinput.py +0 -0
  488. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/input/win32/wintab.py +0 -0
  489. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/lib.py +0 -0
  490. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/libs/__init__.py +0 -0
  491. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/libs/darwin/__init__.py +0 -0
  492. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/libs/darwin/agl.py +0 -0
  493. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/libs/darwin/cocoapy/__init__.py +0 -0
  494. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/libs/darwin/cocoapy/cocoahelpers.py +0 -0
  495. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/libs/darwin/cocoapy/cocoalibs.py +0 -0
  496. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/libs/darwin/cocoapy/cocoatypes.py +0 -0
  497. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/libs/darwin/cocoapy/runtime.py +0 -0
  498. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/libs/darwin/coreaudio.py +0 -0
  499. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/libs/darwin/lib_agl.py +0 -0
  500. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/libs/darwin/quartzkey.py +0 -0
  501. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/libs/egl/__init__.py +0 -0
  502. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/libs/egl/egl_lib.py +0 -0
  503. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/libs/egl/eglext.py +0 -0
  504. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/libs/linux/__init__.py +0 -0
  505. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/libs/linux/egl/__init__.py +0 -0
  506. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/libs/linux/egl/egl.py +0 -0
  507. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/libs/linux/egl/eglext.py +0 -0
  508. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/libs/linux/egl/lib.py +0 -0
  509. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/libs/linux/glx/__init__.py +0 -0
  510. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/libs/linux/glx/glx.py +0 -0
  511. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/libs/linux/glx/glxext_arb.py +0 -0
  512. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/libs/linux/glx/glxext_mesa.py +0 -0
  513. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/libs/linux/glx/glxext_nv.py +0 -0
  514. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/libs/linux/glx/lib_glx.py +0 -0
  515. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/libs/linux/ioctl.py +0 -0
  516. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/libs/linux/wayland/__init__.py +0 -0
  517. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/libs/linux/wayland/client.py +0 -0
  518. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/libs/linux/wayland/gbm.py +0 -0
  519. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/libs/linux/wayland/lib_wayland.py +0 -0
  520. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/libs/linux/wayland/wayland_egl.py +0 -0
  521. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/libs/linux/wayland/xkbcommon.py +0 -0
  522. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/libs/linux/x11/__init__.py +0 -0
  523. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/libs/linux/x11/cursorfont.py +0 -0
  524. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/libs/linux/x11/xf86vmode.py +0 -0
  525. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/libs/linux/x11/xinerama.py +0 -0
  526. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/libs/linux/x11/xinput.py +0 -0
  527. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/libs/linux/x11/xlib.py +0 -0
  528. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/libs/linux/x11/xrandr.py +0 -0
  529. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/libs/linux/x11/xrender.py +0 -0
  530. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/libs/linux/x11/xsync.py +0 -0
  531. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/libs/shared/__init__.py +0 -0
  532. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/libs/shared/spirv/__init__.py +0 -0
  533. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/libs/shared/spirv/lib_shaderc.py +0 -0
  534. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/libs/shared/spirv/lib_spirv_cross.py +0 -0
  535. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/libs/win32/__init__.py +0 -0
  536. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/libs/win32/com.py +0 -0
  537. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/libs/win32/constants.py +0 -0
  538. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/libs/win32/context_managers.py +0 -0
  539. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/libs/win32/dinput.py +0 -0
  540. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/libs/win32/lib_wgl.py +0 -0
  541. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/libs/win32/libwintab.py +0 -0
  542. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/libs/win32/types.py +0 -0
  543. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/libs/win32/wgl.py +0 -0
  544. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/libs/win32/wglext_arb.py +0 -0
  545. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/libs/win32/winkey.py +0 -0
  546. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/math.py +0 -0
  547. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/media/__init__.py +0 -0
  548. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/media/buffered_logger.py +0 -0
  549. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/media/codecs/__init__.py +0 -0
  550. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/media/codecs/base.py +0 -0
  551. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/media/codecs/coreaudio.py +0 -0
  552. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/media/codecs/ffmpeg.py +0 -0
  553. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/media/codecs/ffmpeg_lib/__init__.py +0 -0
  554. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/media/codecs/ffmpeg_lib/compat.py +0 -0
  555. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/media/codecs/ffmpeg_lib/libavcodec.py +0 -0
  556. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/media/codecs/ffmpeg_lib/libavformat.py +0 -0
  557. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/media/codecs/ffmpeg_lib/libavutil.py +0 -0
  558. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/media/codecs/ffmpeg_lib/libswresample.py +0 -0
  559. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/media/codecs/ffmpeg_lib/libswscale.py +0 -0
  560. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/media/codecs/gstreamer.py +0 -0
  561. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/media/codecs/pyogg.py +0 -0
  562. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/media/codecs/wave.py +0 -0
  563. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/media/codecs/wmf.py +0 -0
  564. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/media/devices/__init__.py +0 -0
  565. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/media/devices/base.py +0 -0
  566. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/media/devices/win32.py +0 -0
  567. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/media/drivers/__init__.py +0 -0
  568. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/media/drivers/base.py +0 -0
  569. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/media/drivers/directsound/__init__.py +0 -0
  570. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/media/drivers/directsound/adaptation.py +0 -0
  571. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/media/drivers/directsound/exceptions.py +0 -0
  572. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/media/drivers/directsound/interface.py +0 -0
  573. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/media/drivers/directsound/lib_dsound.py +0 -0
  574. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/media/drivers/listener.py +0 -0
  575. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/media/drivers/openal/__init__.py +0 -0
  576. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/media/drivers/openal/adaptation.py +0 -0
  577. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/media/drivers/openal/interface.py +0 -0
  578. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/media/drivers/openal/lib_alc.py +0 -0
  579. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/media/drivers/openal/lib_openal.py +0 -0
  580. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/media/drivers/pulse/__init__.py +0 -0
  581. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/media/drivers/pulse/adaptation.py +0 -0
  582. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/media/drivers/pulse/interface.py +0 -0
  583. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/media/drivers/pulse/lib_pulseaudio.py +0 -0
  584. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/media/drivers/pyodide_js/__init__.py +0 -0
  585. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/media/drivers/pyodide_js/adaptation.py +0 -0
  586. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/media/drivers/silent/__init__.py +0 -0
  587. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/media/drivers/silent/adaptation.py +0 -0
  588. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/media/drivers/xaudio2/__init__.py +0 -0
  589. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/media/drivers/xaudio2/adaptation.py +0 -0
  590. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/media/drivers/xaudio2/interface.py +0 -0
  591. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/media/drivers/xaudio2/lib_xaudio2.py +0 -0
  592. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/media/exceptions.py +0 -0
  593. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/media/instrumentation.py +0 -0
  594. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/media/player.py +0 -0
  595. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/media/player_worker_thread.py +0 -0
  596. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/media/synthesis.py +0 -0
  597. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/model/codecs/__init__.py +0 -0
  598. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/py.typed +0 -0
  599. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/resource.py +0 -0
  600. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/text/__init__.py +0 -0
  601. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/text/document.py +0 -0
  602. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/text/formats/__init__.py +0 -0
  603. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/text/formats/attributed.py +0 -0
  604. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/text/formats/html.py +0 -0
  605. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/text/formats/plaintext.py +0 -0
  606. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/text/layout/__init__.py +0 -0
  607. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/text/layout/incremental.py +0 -0
  608. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/text/layout/scrolling.py +0 -0
  609. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/text/runlist.py +0 -0
  610. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/util.py +0 -0
  611. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/window/__init__.py +0 -0
  612. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/window/cocoa/__init__.py +0 -0
  613. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/window/cocoa/pyglet_delegate.py +0 -0
  614. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/window/cocoa/pyglet_textview.py +0 -0
  615. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/window/cocoa/pyglet_view.py +0 -0
  616. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/window/cocoa/pyglet_window.py +0 -0
  617. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/window/cocoa/systemcursor.py +0 -0
  618. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/window/dialog/__init__.py +0 -0
  619. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/window/dialog/base.py +0 -0
  620. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/window/dialog/darwin.py +0 -0
  621. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/window/dialog/linux.py +0 -0
  622. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/window/dialog/windows.py +0 -0
  623. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/window/emscripten/__init__.py +0 -0
  624. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/window/event.py +0 -0
  625. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/window/headless/__init__.py +0 -0
  626. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/window/key.py +0 -0
  627. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/window/mouse.py +0 -0
  628. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/window/wayland/__init__.py +0 -0
  629. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/window/win32/__init__.py +0 -0
  630. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyglet/window/xlib/__init__.py +0 -0
  631. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pyproject.toml +0 -0
  632. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/pytest.ini +0 -0
  633. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/setup.py +0 -0
  634. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/__init__.py +0 -0
  635. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/annotations.py +0 -0
  636. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/base/__init__.py +0 -0
  637. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/base/data.py +0 -0
  638. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/base/event_loop.py +0 -0
  639. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/base/interactive.py +0 -0
  640. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/base/performance.py +0 -0
  641. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/conftest.py +0 -0
  642. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/data/fonts/README +0 -0
  643. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/data/fonts/action_man.ttf +0 -0
  644. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/data/fonts/action_man_atlas.png +0 -0
  645. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/data/fonts/action_man_bold.ttf +0 -0
  646. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/data/fonts/action_man_bold_italic.ttf +0 -0
  647. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/data/fonts/action_man_italic.ttf +0 -0
  648. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/data/fonts/courR12-ISO8859-1.pcf +0 -0
  649. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/data/images/8bpp.gif +0 -0
  650. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/data/images/cursor.png +0 -0
  651. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/data/images/dinosaur.gif +0 -0
  652. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/data/images/gdk_close.png +0 -0
  653. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/data/images/grey_background.png +0 -0
  654. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/data/images/icon1.png +0 -0
  655. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/data/images/icon_size1.png +0 -0
  656. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/data/images/icon_size2.png +0 -0
  657. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/data/images/icon_size3.png +0 -0
  658. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/data/images/icon_size4.png +0 -0
  659. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/data/images/icon_size5.png +0 -0
  660. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/data/images/l.png +0 -0
  661. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/data/images/la.png +0 -0
  662. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/data/images/multitexture.png +0 -0
  663. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/data/images/rgb.png +0 -0
  664. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/data/images/rgb_16bpp.bmp +0 -0
  665. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/data/images/rgb_1bpp.bmp +0 -0
  666. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/data/images/rgb_24bpp.bmp +0 -0
  667. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/data/images/rgb_32bpp.bmp +0 -0
  668. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/data/images/rgb_4bpp.bmp +0 -0
  669. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/data/images/rgb_8bpp.bmp +0 -0
  670. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/data/images/rgb_8bpp.png +0 -0
  671. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/data/images/rgb_8bpp_trans.png +0 -0
  672. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/data/images/rgb_bc6s.dds +0 -0
  673. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/data/images/rgb_dxt1.dds +0 -0
  674. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/data/images/rgba.png +0 -0
  675. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/data/images/rgba_32bpp.bmp +0 -0
  676. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/data/images/rgba_bc7.dds +0 -0
  677. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/data/images/rgba_bc7.ktx2 +0 -0
  678. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/data/images/rgba_dxt1.dds +0 -0
  679. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/data/images/rgba_dxt3.dds +0 -0
  680. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/data/images/rgba_dxt5.dds +0 -0
  681. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/data/images/tests.interactive.test_interactive_test_base._Test.test_1.001.png +0 -0
  682. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/data/media/README +0 -0
  683. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/data/media/alert.wav +0 -0
  684. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/data/media/login.wav +0 -0
  685. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/data/media/logout.wav +0 -0
  686. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/data/media/receive.wav +0 -0
  687. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/data/media/send.wav +0 -0
  688. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/data/media/synthesis_sawtooth_16_11025_1ch.wav +0 -0
  689. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/data/media/synthesis_sawtooth_16_44800_1ch.wav +0 -0
  690. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/data/media/synthesis_silence_16_11025_1ch.wav +0 -0
  691. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/data/media/synthesis_silence_16_44800_1ch.wav +0 -0
  692. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/data/media/synthesis_simplefm_16_11025_1ch.wav +0 -0
  693. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/data/media/synthesis_simplefm_16_44800_1ch.wav +0 -0
  694. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/data/media/synthesis_sine_16_11025_1ch.wav +0 -0
  695. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/data/media/synthesis_sine_16_44800_1ch.wav +0 -0
  696. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/data/media/synthesis_square_16_11025_1ch.wav +0 -0
  697. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/data/media/synthesis_square_16_44800_1ch.wav +0 -0
  698. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/data/media/synthesis_triangle_16_11025_1ch.wav +0 -0
  699. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/data/media/synthesis_triangle_16_44800_1ch.wav +0 -0
  700. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/data/models/logo3d.mtl +0 -0
  701. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/data/models/logo3d.obj +0 -0
  702. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/integration/__init__.py +0 -0
  703. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/integration/app/__init__.py +0 -0
  704. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/integration/app/test_eventloop.py +0 -0
  705. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/integration/conftest.py +0 -0
  706. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/integration/font/__init__.py +0 -0
  707. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/integration/font/test_font.py +0 -0
  708. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/integration/font/test_freetype_face.py +0 -0
  709. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/integration/graphics/__init__.py +0 -0
  710. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/integration/graphics/opengl_core/__init__.py +0 -0
  711. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/integration/graphics/test_allocation.py +0 -0
  712. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/integration/graphics/test_batch_migration.py +0 -0
  713. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/integration/graphics/test_groups.py +0 -0
  714. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/integration/graphics/test_shaders.py +0 -0
  715. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/integration/graphics/test_texture3d.py +0 -0
  716. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/integration/graphics/test_texturearray.py +0 -0
  717. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/integration/image/__init__.py +0 -0
  718. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/integration/image/test_gdkpixbuf2.py +0 -0
  719. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/integration/image/test_imagegrid.py +0 -0
  720. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/integration/media/__init__.py +0 -0
  721. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/integration/media/mock_player.py +0 -0
  722. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/integration/media/test_directsound.py +0 -0
  723. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/integration/media/test_driver.py +0 -0
  724. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/integration/media/test_openal.py +0 -0
  725. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/integration/media/test_player.py +0 -0
  726. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/integration/media/test_pulse.py +0 -0
  727. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/integration/model/__init__.py +0 -0
  728. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/integration/model/test_loading.py +0 -0
  729. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/integration/platform/__init__.py +0 -0
  730. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/integration/platform/test_win_context_managers.py +0 -0
  731. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/integration/platform/test_win_multicore_clock.py +0 -0
  732. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/integration/resource/__init__.py +0 -0
  733. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/integration/resource/dir1/dir1/f3.txt +0 -0
  734. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/integration/resource/dir1/f2.txt +0 -0
  735. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/integration/resource/dir1/res.zip +0 -0
  736. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/integration/resource/dir2/f6.txt +0 -0
  737. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/integration/resource/f1.txt +0 -0
  738. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/integration/resource/rgbm.png +0 -0
  739. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/integration/resource/test_resource_image_loading.py +0 -0
  740. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/integration/resource/test_resource_loading.py +0 -0
  741. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/integration/test_integrations.py +0 -0
  742. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/integration/text/__init__.py +0 -0
  743. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/integration/text/test_empty_document.py +0 -0
  744. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/integration/text/test_label_creation.py +0 -0
  745. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/integration/text/test_layout.py +0 -0
  746. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/integration/window/__init__.py +0 -0
  747. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/integration/window/test_context_share.py +0 -0
  748. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/integration/window/test_event_sequence.py +0 -0
  749. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/integration/window/test_window_caption.py +0 -0
  750. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/interactive/__init__.py +0 -0
  751. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/interactive/conftest.py +0 -0
  752. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/interactive/image/__init__.py +0 -0
  753. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/interactive/image/test_image.py +0 -0
  754. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/interactive/media/__init__.py +0 -0
  755. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/interactive/media/test_player.py +0 -0
  756. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/interactive/screenshots/committed/README +0 -0
  757. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/interactive/screenshots/session/README +0 -0
  758. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/interactive/shapes/test_shapes.py +0 -0
  759. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/interactive/test_interactive_test_base.py +0 -0
  760. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/interactive/text/__init__.py +0 -0
  761. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/interactive/text/test_caret_color.py +0 -0
  762. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/interactive/text/test_content_valign.py +0 -0
  763. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/interactive/text/test_html.py +0 -0
  764. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/interactive/text/test_multiline_wrap.py +0 -0
  765. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/interactive/text/test_plain.py +0 -0
  766. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/interactive/text/test_style.py +0 -0
  767. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/interactive/window/__init__.py +0 -0
  768. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/interactive/window/test_window_events.py +0 -0
  769. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/interactive/window/test_window_fullscreen.py +0 -0
  770. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/interactive/window/test_window_modes.py +0 -0
  771. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/interactive/window/test_window_multisample.py +0 -0
  772. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/interactive/window/test_window_open.py +0 -0
  773. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/interactive/window/test_window_settings.py +0 -0
  774. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/interactive/window/test_window_styles.py +0 -0
  775. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/interactive/window/window_util.py +0 -0
  776. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/interactive/windowed_test_base.py +0 -0
  777. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/requirements.txt +0 -0
  778. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/unit/__init__.py +0 -0
  779. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/unit/conftest.py +0 -0
  780. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/unit/math/__init__.py +0 -0
  781. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/unit/math/test_mat.py +0 -0
  782. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/unit/math/test_quat.py +0 -0
  783. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/unit/math/test_vec2.py +0 -0
  784. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/unit/math/test_vec3.py +0 -0
  785. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/unit/math/test_vec4.py +0 -0
  786. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/unit/media/__init__.py +0 -0
  787. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/unit/media/test_listener.py +0 -0
  788. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/unit/media/test_player.py +0 -0
  789. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/unit/media/test_sources.py +0 -0
  790. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/unit/media/test_synthesis.py +0 -0
  791. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/unit/platform/__init__.py +0 -0
  792. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/unit/platform/test_mac_objc.py +0 -0
  793. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/unit/shader/__init__.py +0 -0
  794. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/unit/shader/conftest.py +0 -0
  795. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/unit/shader/test_shader.py-SUSPENDED +0 -0
  796. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/unit/shapes/__init__.py +0 -0
  797. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/unit/shapes/conftest.py +0 -0
  798. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/unit/shapes/test_bordered_rectangle.py +0 -0
  799. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/unit/shapes/test_shapes.py +0 -0
  800. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/unit/test_atlas.py +0 -0
  801. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/unit/test_clock.py +0 -0
  802. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/unit/test_clock_freq.py +0 -0
  803. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/unit/test_events.py +0 -0
  804. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/unit/test_input.py +0 -0
  805. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/unit/test_resource_path.py +0 -0
  806. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/unit/test_sprite.py +0 -0
  807. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/unit/text/__init__.py +0 -0
  808. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/unit/text/test_caret.py +0 -0
  809. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tests/unit/text/test_text.py +0 -0
  810. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tools/al_info.py +0 -0
  811. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tools/ffmpeg/bokeh_timeline.py +0 -0
  812. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tools/ffmpeg/compare.py +0 -0
  813. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tools/ffmpeg/configure.py +0 -0
  814. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tools/ffmpeg/extractors.py +0 -0
  815. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tools/ffmpeg/fs.py +0 -0
  816. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tools/ffmpeg/mp.py +0 -0
  817. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tools/ffmpeg/mpexceptions.py +0 -0
  818. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tools/ffmpeg/playmany.py +0 -0
  819. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tools/ffmpeg/readme_ffmpeg_debbuging_branch.txt +0 -0
  820. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tools/ffmpeg/readme_run_tests.txt +0 -0
  821. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tools/ffmpeg/report.py +0 -0
  822. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tools/ffmpeg/reports.py +0 -0
  823. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tools/ffmpeg/retry_crashed.py +0 -0
  824. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tools/ffmpeg/run_test_suite.py +0 -0
  825. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tools/ffmpeg/summarize.py +0 -0
  826. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tools/ffmpeg/test_instrumentation.py +0 -0
  827. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tools/ffmpeg/timeline.py +0 -0
  828. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tools/gencontrollerdb.py +0 -0
  829. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tools/gengl.py +0 -0
  830. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tools/genwrappers.py +0 -0
  831. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tools/gl.template +0 -0
  832. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tools/gl.xml +0 -0
  833. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tools/gl_info.py +0 -0
  834. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tools/gl_stub.template +0 -0
  835. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tools/inspect_font.py +0 -0
  836. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tools/pyodide/dev_style.css +0 -0
  837. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tools/pyodide/example.py +0 -0
  838. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tools/pyodide/gen_pyodide_project.py +0 -0
  839. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tools/pyodide/index.html +0 -0
  840. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tools/pyodide/script.js +0 -0
  841. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tools/requirements.txt +0 -0
  842. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tools/wgl.h +0 -0
  843. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tools/wraptypes/__init__.py +0 -0
  844. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tools/wraptypes/cparser.py +0 -0
  845. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tools/wraptypes/ctypesparser.py +0 -0
  846. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tools/wraptypes/lex.py +0 -0
  847. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tools/wraptypes/preprocessor.py +0 -0
  848. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tools/wraptypes/wrap.py +0 -0
  849. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/tools/wraptypes/yacc.py +0 -0
  850. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/website/LICENSE.txt +0 -0
  851. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/website/README.rst +0 -0
  852. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/website/assets/favicon.ico +0 -0
  853. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/website/assets/static/css/example-custom-styles.css +0 -0
  854. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/website/assets/static/images/pyglet.png +0 -0
  855. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/website/content/404.html/contents.lr +0 -0
  856. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/website/content/404.html/ngc-5793.jpg +0 -0
  857. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/website/content/authors/benjamin/contents.lr +0 -0
  858. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/website/content/authors/benjamin/pyglet.png +0 -0
  859. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/website/content/authors/contents.lr +0 -0
  860. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/website/content/blog/contents.lr +0 -0
  861. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/website/content/blog/welcome-blog/contents.lr +0 -0
  862. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/website/content/contents.lr +0 -0
  863. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/website/content/eclipse.jpg +0 -0
  864. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/website/pyglet.lektorproject +0 -0
  865. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/website/themes/lektor-icon/AUTHORS.txt +0 -0
  866. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/website/themes/lektor-icon/CHANGELOG.md +0 -0
  867. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/website/themes/lektor-icon/CONTRIBUTING.md +0 -0
  868. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/website/themes/lektor-icon/LICENSE.txt +0 -0
  869. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/website/themes/lektor-icon/NOTICE.txt +0 -0
  870. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/website/themes/lektor-icon/README.md +0 -0
  871. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/website/themes/lektor-icon/assets/static/css/bootstrap.css +0 -0
  872. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/website/themes/lektor-icon/assets/static/css/icomoon.css +0 -0
  873. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/website/themes/lektor-icon/assets/static/css/magnific-popup.css +0 -0
  874. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/website/themes/lektor-icon/assets/static/css/style.css +0 -0
  875. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/website/themes/lektor-icon/assets/static/fonts/bootstrap/glyphicons-halflings-regular.ttf +0 -0
  876. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/website/themes/lektor-icon/assets/static/fonts/bootstrap/glyphicons-halflings-regular.woff +0 -0
  877. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/website/themes/lektor-icon/assets/static/fonts/bootstrap/glyphicons-halflings-regular.woff2 +0 -0
  878. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/website/themes/lektor-icon/assets/static/fonts/icomoon/icomoon.ttf +0 -0
  879. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/website/themes/lektor-icon/assets/static/fonts/icomoon/icomoon.woff +0 -0
  880. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/website/themes/lektor-icon/assets/static/images/Preloader_2.gif +0 -0
  881. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/website/themes/lektor-icon/assets/static/images/placeholder_person.png +0 -0
  882. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/website/themes/lektor-icon/assets/static/js/jquery-3.3.1.min.js +0 -0
  883. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/website/themes/lektor-icon/assets/static/js/jquery.easing.min.js +0 -0
  884. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/website/themes/lektor-icon/assets/static/js/jquery.magnific-popup.min.js +0 -0
  885. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/website/themes/lektor-icon/assets/static/js/jquery.stellar.js +0 -0
  886. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/website/themes/lektor-icon/assets/static/js/jquery.stellar.min.js +0 -0
  887. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/website/themes/lektor-icon/assets/static/js/jquery.waypoints.min.js +0 -0
  888. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/website/themes/lektor-icon/assets/static/js/magnific-popup-options.js +0 -0
  889. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/website/themes/lektor-icon/assets/static/js/main-singlelayout.js +0 -0
  890. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/website/themes/lektor-icon/assets/static/js/main.js +0 -0
  891. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/website/themes/lektor-icon/flowblocks/content.ini +0 -0
  892. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/website/themes/lektor-icon/flowblocks/gallery.ini +0 -0
  893. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/website/themes/lektor-icon/flowblocks/gallery_item.ini +0 -0
  894. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/website/themes/lektor-icon/flowblocks/member.ini +0 -0
  895. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/website/themes/lektor-icon/flowblocks/mission.ini +0 -0
  896. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/website/themes/lektor-icon/flowblocks/mission_tab.ini +0 -0
  897. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/website/themes/lektor-icon/flowblocks/service.ini +0 -0
  898. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/website/themes/lektor-icon/flowblocks/services.ini +0 -0
  899. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/website/themes/lektor-icon/flowblocks/team.ini +0 -0
  900. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/website/themes/lektor-icon/images/blog-index.png +0 -0
  901. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/website/themes/lektor-icon/images/full-blog.png +0 -0
  902. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/website/themes/lektor-icon/images/full-page.png +0 -0
  903. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/website/themes/lektor-icon/images/gallery-404.png +0 -0
  904. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/website/themes/lektor-icon/images/gallery-singlepage.png +0 -0
  905. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/website/themes/lektor-icon/images/mainpage-screenshots.png +0 -0
  906. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/website/themes/lektor-icon/images/responsive-layout.png +0 -0
  907. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/website/themes/lektor-icon/models/404.ini +0 -0
  908. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/website/themes/lektor-icon/models/author.ini +0 -0
  909. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/website/themes/lektor-icon/models/authors.ini +0 -0
  910. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/website/themes/lektor-icon/models/blog-post.ini +0 -0
  911. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/website/themes/lektor-icon/models/blog.ini +0 -0
  912. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/website/themes/lektor-icon/models/page.ini +0 -0
  913. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/website/themes/lektor-icon/models/single-layout.ini +0 -0
  914. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/website/themes/lektor-icon/templates/404.html +0 -0
  915. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/website/themes/lektor-icon/templates/author.html +0 -0
  916. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/website/themes/lektor-icon/templates/authors.html +0 -0
  917. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/website/themes/lektor-icon/templates/blocks/content.html +0 -0
  918. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/website/themes/lektor-icon/templates/blocks/gallery.html +0 -0
  919. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/website/themes/lektor-icon/templates/blocks/mission.html +0 -0
  920. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/website/themes/lektor-icon/templates/blocks/services.html +0 -0
  921. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/website/themes/lektor-icon/templates/blocks/team.html +0 -0
  922. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/website/themes/lektor-icon/templates/blog-layout.html +0 -0
  923. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/website/themes/lektor-icon/templates/blog-post.html +0 -0
  924. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/website/themes/lektor-icon/templates/blog.html +0 -0
  925. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/website/themes/lektor-icon/templates/layout.html +0 -0
  926. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/website/themes/lektor-icon/templates/macros/blog.html +0 -0
  927. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/website/themes/lektor-icon/templates/macros/pagination.html +0 -0
  928. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/website/themes/lektor-icon/templates/none.html +0 -0
  929. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/website/themes/lektor-icon/templates/page.html +0 -0
  930. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/website/themes/lektor-icon/templates/single-layout.html +0 -0
  931. {pyglet-3.0.dev1 → pyglet-3.0.dev2}/website/themes/lektor-icon/theme.ini +0 -0
@@ -1,10 +1,11 @@
1
- Metadata-Version: 2.3
1
+ Metadata-Version: 2.4
2
2
  Name: pyglet
3
- Version: 3.0.dev1
3
+ Version: 3.0.dev2
4
4
  Summary: pyglet is a cross-platform games and multimedia package.
5
5
  Author-email: Alex Holkner & contributors <Alex.Holkner@gmail.com>
6
6
  Requires-Python: >=3.8
7
7
  Description-Content-Type: text/markdown
8
+ License-File: LICENSE
8
9
  Project-URL: Home, https://pyglet.org
9
10
 
10
11
  [![pypi](https://badge.fury.io/py/pyglet.svg)](https://pypi.python.org/pypi/pyglet) [![rtd](https://readthedocs.org/projects/pyglet/badge/?version=latest)](https://pyglet.readthedocs.io) [![PyTest](https://github.com/pyglet/pyglet/actions/workflows/unittests.yml/badge.svg)](https://github.com/pyglet/pyglet/actions/workflows/unittests.yml)
@@ -17,7 +17,7 @@ import sys
17
17
 
18
18
  import pyglet
19
19
  from pyglet.config import OpenGLConfig
20
- from pyglet.graphics import GeometryMode
20
+ from pyglet.enums import GeometryMode
21
21
 
22
22
  from pyglet.graphics.api.gl import (
23
23
  GL_BLEND,
@@ -8,7 +8,7 @@ clone. It is assumed that the reader is familiar with writing and running
8
8
  Python programs. This is not a programming tutorial, but it should hopefully
9
9
  be clear enough to follow even if you're a beginner. If you get stuck,
10
10
  first have a look at the relevant sections of the programming guide.
11
- The full source code can also be found in the `examples/game/` folder
11
+ The full source code can also be found in the ``examples/game/`` folder
12
12
  of the pyglet source directory, which you can follow along with.
13
13
  If anything is still not clear, let us know!
14
14
 
@@ -24,11 +24,11 @@ Setting up
24
24
 
25
25
  First things first, make sure you have pyglet installed. Then, we will set
26
26
  up the folder structure for our project. Since this example game is written
27
- in stages, we will have several `version` folders at various stages of
27
+ in stages, we will have several ``version`` folders at various stages of
28
28
  development. We will also have a shared resource folder with the images,
29
- called resources,’ outside of the example folders. Each `version` folder
30
- contains a Python file called `asteroid.py` which runs the game, as well as
31
- a sub-folder named `game` where we will place additional modules; this is
29
+ called '``resources``', outside of the example folders. Each ``version`` folder
30
+ contains a Python file called ``asteroid.py`` which runs the game, as well as
31
+ a sub-folder named ``game`` where we will place additional modules; this is
32
32
  where most of the logic will be. Your folder structure should look like this::
33
33
 
34
34
  game/
@@ -42,8 +42,8 @@ where most of the logic will be. Your folder structure should look like this::
42
42
  Getting a window
43
43
  ^^^^^^^^^^^^^^^^
44
44
 
45
- To set up a window, simply `import pyglet`, create a new instance of
46
- :class:`pyglet.window.Window`, and call `pyglet.app.run()`::
45
+ To set up a window, simply ``import pyglet``, create a new instance of
46
+ :class:`pyglet.window.Window`, and call ``pyglet.app.run()``::
47
47
 
48
48
  import pyglet
49
49
  game_window = pyglet.window.Window(800, 600)
@@ -51,9 +51,8 @@ To set up a window, simply `import pyglet`, create a new instance of
51
51
  if __name__ == '__main__':
52
52
  pyglet.app.run()
53
53
 
54
- If you run the code above, you should see a window full of junk that
55
- goes away when you press Esc. (What you are seeing is raw uninitialized
56
- graphics memory).
54
+ If you run the code above, you should see a window full of random graphical junk (or just a blank window)
55
+ that goes away when you press Esc. (What you are seeing is raw uninitialized graphics memory).
57
56
 
58
57
  Loading and displaying an image
59
58
  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -68,42 +67,50 @@ directory, we need to tell pyglet where to find them::
68
67
  pyglet's :mod:`pyglet.resource` module takes all of the hard work out of
69
68
  finding and loading game resources such as images, sounds, etc.. All that
70
69
  you need to do is tell it where to look, and reindex it. In this example
71
- game, the resource path starts with `../` because the resources folder is
72
- on the same level as the `version1` folder. If we left it off, pyglet
73
- would look inside `version1/` for the `resources/` folder.
70
+ game, the resource path starts with ``../`` because the resources folder is
71
+ on the same level as the ``version1`` folder. If we left it off, pyglet
72
+ would look inside ``version1/`` for the ``resources/`` folder.
74
73
 
75
74
  Now that pyglet’s resource module is initialized, we can easily load the images
76
- with the :func:`~pyglet.resource.image` function of the resource module::
75
+ with the :func:`~pyglet.resource.texture` function of the resource module::
77
76
 
78
- player_image = pyglet.resource.image("player.png")
79
- bullet_image = pyglet.resource.image("bullet.png")
80
- asteroid_image = pyglet.resource.image("asteroid.png")
77
+ player_texture = pyglet.resource.texture("player.png")
78
+ bullet_texture = pyglet.resource.texture("bullet.png")
79
+ asteroid_texture = pyglet.resource.texture("asteroid.png")
81
80
 
82
- Centering the images
81
+ If you are unfamiliar with the term, a "``texture``" is basically an image that
82
+ has been loaded into GPU memory. You may see the terms used interchangeably, but
83
+ essentially the image data is loaded from disk (and decoded), and then uploaded
84
+ to the GPU memory where it exists as a texture.
85
+
86
+ .. note:: You must create a Window before loading any GPU related resources.
87
+
88
+
89
+ Centering the textures
83
90
  ^^^^^^^^^^^^^^^^^^^^
84
91
 
85
- Pyglet will draw and position all images from their lower left corner by
86
- default. We don’t want this behavior for our images, which need to rotate
92
+ pyglet will draw and position all textures from their lower left corner by
93
+ default. We don’t want this behavior for our textures, which need to rotate
87
94
  around their centers. All we have to do to achieve this is to set their
88
95
  anchor points. Lets create a function to simplify this::
89
96
 
90
- def center_image(image):
91
- """Sets an image's anchor point to its center"""
92
- image.anchor_x = image.width // 2
93
- image.anchor_y = image.height // 2
97
+ def center_texture(texture):
98
+ """Sets an texture's anchor point to its center"""
99
+ texture.anchor_x = texture.width // 2
100
+ texture.anchor_y = texture.height // 2
94
101
 
95
- Now we can just call center_image() on all of our loaded images::
102
+ Now we can just call center_texture() on all of our loaded textures::
96
103
 
97
- center_image(player_image)
98
- center_image(bullet_image)
99
- center_image(asteroid_image)
104
+ center_texture(player_texture)
105
+ center_texture(bullet_texture)
106
+ center_texture(asteroid_texture)
100
107
 
101
- Remember that the center_image() function must be defined before it can be
108
+ Remember that the center_texture() function must be defined before it can be
102
109
  called at the module level. Also, note that zero degrees points directly
103
- to the right in pyglet, so the images are all drawn with their front
110
+ to the right in pyglet, so the textures are all drawn with their front
104
111
  pointing to the right.
105
112
 
106
- To access the images from asteroid.py, we need to use something like
113
+ To access the textures from asteroid.py, we need to use something like
107
114
  `from game import resources`, which we’ll get into in the next section.
108
115
 
109
116
  Initializing objects
@@ -167,7 +174,7 @@ like so::
167
174
 
168
175
  from game import resources
169
176
  ...
170
- player_ship = pyglet.sprite.Sprite(img=resources.player_image, x=400, y=300)
177
+ player_ship = pyglet.sprite.Sprite(img=resources.player_texture, x=400, y=300)
171
178
 
172
179
  To get the player to draw on the screen, add a line to `on_draw()`::
173
180
 
@@ -189,7 +196,7 @@ player. Let’s put the loading code in a new game submodule called load.py::
189
196
  for i in range(num_asteroids):
190
197
  asteroid_x = random.randint(0, 800)
191
198
  asteroid_y = random.randint(0, 600)
192
- new_asteroid = pyglet.sprite.Sprite(img=resources.asteroid_image,
199
+ new_asteroid = pyglet.sprite.Sprite(img=resources.asteroid_texture,
193
200
  x=asteroid_x, y=asteroid_y)
194
201
  new_asteroid.rotation = random.randint(0, 360)
195
202
  asteroids.append(new_asteroid)
@@ -223,7 +230,7 @@ the z value, so we just use a throwaway variable for that::
223
230
  asteroid_x = random.randint(0, 800)
224
231
  asteroid_y = random.randint(0, 600)
225
232
  new_asteroid = pyglet.sprite.Sprite(
226
- img=resources.asteroid_image, x=asteroid_x, y=asteroid_y)
233
+ img=resources.asteroid_texture, x=asteroid_x, y=asteroid_y)
227
234
  new_asteroid.rotation = random.randint(0, 360)
228
235
  asteroids.append(new_asteroid)
229
236
  return asteroids
@@ -292,7 +299,7 @@ each new sprite. Update the function::
292
299
 
293
300
  def asteroids(num_asteroids, player_position, batch=None):
294
301
  ...
295
- new_asteroid = pyglet.sprite.Sprite(img=resources.asteroid_image,
302
+ new_asteroid = pyglet.sprite.Sprite(img=resources.asteroid_texture,
296
303
  x=asteroid_x, y=asteroid_y,
297
304
  batch=batch)
298
305
 
@@ -324,7 +331,7 @@ and scale, and append it to the return list::
324
331
  def player_lives(num_icons, batch=None):
325
332
  player_lives = []
326
333
  for i in range(num_icons):
327
- new_sprite = pyglet.sprite.Sprite(img=resources.player_image,
334
+ new_sprite = pyglet.sprite.Sprite(img=resources.player_texture,
328
335
  x=785-i*30, y=585, batch=batch)
329
336
  new_sprite.scale = 0.5
330
337
  player_lives.append(new_sprite)
@@ -382,10 +389,10 @@ they just wrapped around the screen. Here is a simple function that
382
389
  accomplishes the goal::
383
390
 
384
391
  def check_bounds(self):
385
- min_x = -self.image.width / 2
386
- min_y = -self.image.height / 2
387
- max_x = 800 + self.image.width / 2
388
- max_y = 600 + self.image.height / 2
392
+ min_x = -self.texture.width / 2
393
+ min_y = -self.texture.height / 2
394
+ max_x = 800 + self.texture.width / 2
395
+ max_y = 600 + self.texture.height / 2
389
396
  if self.x < min_x:
390
397
  self.x = max_x
391
398
  elif self.x > max_x:
@@ -450,7 +457,7 @@ periodically or at some specified time in the future. The one we want is
450
457
  pyglet.clock.schedule_interval(update, 1/120.0)
451
458
 
452
459
  Putting this line above `pyglet.app.run()` in the if `__name__ == '__main__'`
453
- block tells pyglet to call `update()` 120 times per second. Pyglet will pass
460
+ block tells pyglet to call `update()` 120 times per second. pyglet will pass
454
461
  in the elapsed time, i.e. `dt`, as the only parameter.
455
462
 
456
463
  Now when you run asteroid.py, you should see your formerly static asteroids
@@ -470,10 +477,10 @@ importing the appropriate modules, and subclassing `PhysicalObject`::
470
477
  class Player(physicalobject.PhysicalObject):
471
478
 
472
479
  def __init__(self, *args, **kwargs):
473
- super().__init__(img=resources.player_image, *args, **kwargs)
480
+ super().__init__(img=resources.player_texture, *args, **kwargs)
474
481
 
475
482
  So far, the only difference between a Player and a PhysicalObject is that a
476
- Player will always have the same image. But Player objects need a couple
483
+ Player will always have the same texture. But Player objects need a couple
477
484
  more attributes. Since the ship will always thrust with the same force in
478
485
  whatever direction it points, we’ll need to define a constant for the
479
486
  magnitude of that force. We should also define a constant for the ship’s
@@ -482,7 +489,7 @@ rotation speed::
482
489
  self.thrust = 300.0
483
490
  self.rotate_speed = 200.0
484
491
 
485
- Now we need to get the class to respond to user input. Pyglet uses an
492
+ Now we need to get the class to respond to user input. pyglet uses an
486
493
  event-based approach to input, sending key press and key release events
487
494
  to registered event handlers. But we want to use a polling approach in
488
495
  this example, checking periodically if a key is down. One way to accomplish
@@ -627,7 +634,7 @@ thrusting forward or not, especially for an observer just watching someone
627
634
  else play the game. One way to provide visual feedback is to show an engine
628
635
  flame behind the player while the player is thrusting.
629
636
 
630
- Loading the flame image
637
+ Loading the flame texture
631
638
  ^^^^^^^^^^^^^^^^^^^^^^^
632
639
 
633
640
  The player will now be made of two sprites. There’s nothing preventing us
@@ -636,31 +643,31 @@ engine_sprite attribute and update it every frame. For our purposes,
636
643
  this approach will be the simplest and most scalable.
637
644
 
638
645
  To make the flame draw in the correct position, we could either do some
639
- complicated math every frame, or we could just move the image’s anchor point.
640
- First, load the image in resources.py::
646
+ complicated math every frame, or we could just move the texture’s anchor point.
647
+ First, load the texture in resources.py::
641
648
 
642
- engine_image = pyglet.resource.image("engine_flame.png")
649
+ engine_texture = pyglet.resource.texture("engine_flame.png")
643
650
 
644
- To get the flame to draw behind the player, we need to move the flame image’s
645
- center of rotation to the right, past the end of the image.
651
+ To get the flame to draw behind the player, we need to move the flame texture’s
652
+ center of rotation to the right, past the end of the texture.
646
653
  To do that, we just set its `anchor_x` and `anchor_y` attributes::
647
654
 
648
- engine_image.anchor_x = engine_image.width * 1.5
649
- engine_image.anchor_y = engine_image.height / 2
655
+ engine_texture.anchor_x = engine_texture.width * 1.5
656
+ engine_texture.anchor_y = engine_texture.height / 2
650
657
 
651
- Now the image is ready to be used by the player class. If you’re still
652
- confused about anchor points, experiment with the values for engine_image’s
658
+ Now the texture is ready to be used by the player class. If you’re still
659
+ confused about anchor points, experiment with the values for engine_texture’s
653
660
  anchor point when you finish this section.
654
661
 
655
662
  Creating and drawing the flame
656
663
  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
657
664
 
658
665
  The engine sprite needs to be initialized with all the same arguments as
659
- Player, except that it needs a different image and must be initially invisible.
666
+ Player, except that it needs a different texture and must be initially invisible.
660
667
  The code for creating it belongs in `Player.__init__()` and is very
661
668
  straightforward::
662
669
 
663
- self.engine_sprite = pyglet.sprite.Sprite(img=resources.engine_image, *args, **kwargs)
670
+ self.engine_sprite = pyglet.sprite.Sprite(img=resources.engine_texture, *args, **kwargs)
664
671
  self.engine_sprite.visible = False
665
672
 
666
673
  To make the engine sprite appear only while the player is thrusting, we need
@@ -777,7 +784,7 @@ Remember to call from util import distance in load.py. Now we can write
777
784
  `PhysicalObject.collides_with()` without duplicating code::
778
785
 
779
786
  def collides_with(self, other_object):
780
- collision_distance = self.image.width/2 + other_object.image.width/2
787
+ collision_distance = self.texture.width/2 + other_object.texture.width/2
781
788
  actual_distance = util.distance(self.position, other_object.position)
782
789
 
783
790
  return (actual_distance <= collision_distance)
@@ -891,7 +898,7 @@ subclass of PhysicalObject::
891
898
 
892
899
  def __init__(self, *args, **kwargs):
893
900
  super().__init__(
894
- resources.bullet_image, *args, **kwargs)
901
+ resources.bullet_texture, *args, **kwargs)
895
902
 
896
903
  To get bullets to disappear after a time, we could keep track of our own
897
904
  age and lifespan attributes, or we could let pyglet do all the work for us.
@@ -906,7 +913,7 @@ We can do this as soon as the object is initialized by adding a call to
906
913
  :meth:`pyglet.clock.schedule_once` to the constructor::
907
914
 
908
915
  def __init__(self, *args, **kwargs):
909
- super().__init__(resources.bullet_image, *args, **kwargs)
916
+ super().__init__(resources.bullet_texture, *args, **kwargs)
910
917
  pyglet.clock.schedule_once(self.die, 0.5)
911
918
 
912
919
  There’s still more work to be done on the Bullet class, but before we
@@ -924,7 +931,7 @@ to its constructor::
924
931
 
925
932
  class Player(physicalobject.PhysicalObject):
926
933
  def __init__(self, *args, **kwargs):
927
- super().__init__(img=resources.player_image, *args, **kwargs)
934
+ super().__init__(img=resources.player_texture, *args, **kwargs)
928
935
  ...
929
936
  self.bullet_speed = 700.0
930
937
 
@@ -949,7 +956,7 @@ As usual, convert to radians and reverse the direction::
949
956
 
950
957
  Next, calculate the bullet’s position and instantiate it::
951
958
 
952
- ship_radius = self.image.width/2
959
+ ship_radius = self.texture.width/2
953
960
  bullet_x = self.x + math.cos(angle_radians) * ship_radius
954
961
  bullet_y = self.y + math.sin(angle_radians) * ship_radius
955
962
  new_bullet = bullet.Bullet(bullet_x, bullet_y, batch=self.batch)
@@ -1058,14 +1065,14 @@ Writing the asteroid class
1058
1065
  ^^^^^^^^^^^^^^^^^^^^^^^^^^
1059
1066
 
1060
1067
  Create a new submodule of game called asteroid.py. Write the usual constructor
1061
- to pass a specific image to the superclass, passing along any other parameters::
1068
+ to pass a specific texture to the superclass, passing along any other parameters::
1062
1069
 
1063
1070
  import pyglet
1064
1071
  from . import resources, physicalobject
1065
1072
 
1066
1073
  class Asteroid(physicalobject.PhysicalObject):
1067
1074
  def __init__(self, *args, **kwargs):
1068
- super().__init__(resources.asteroid_image, *args, **kwargs)
1075
+ super().__init__(resources.asteroid_texture, *args, **kwargs)
1069
1076
 
1070
1077
  Now we need to write a new `handle_collision_with()` method. It should create
1071
1078
  a random number of new, smaller asteroids with random velocities. However,
@@ -1107,7 +1114,7 @@ rotation every frame.
1107
1114
  Add the attribute in the constructor::
1108
1115
 
1109
1116
  def __init__(self, *args, **kwargs):
1110
- super().__init__(resources.asteroid_image, *args, **kwargs)
1117
+ super().__init__(resources.asteroid_texture, *args, **kwargs)
1111
1118
  self.rotate_speed = random.random() * 100.0 - 50.0
1112
1119
 
1113
1120
  Then write the update() method::
@@ -1137,7 +1144,7 @@ Next steps
1137
1144
  ----------
1138
1145
 
1139
1146
  So instead of walking you through a standard refactoring session,
1140
- I’m going to leave it as an exercise for you to do the following::
1147
+ I’m going to leave it as an exercise for you to do the following:
1141
1148
 
1142
1149
  * Make the Score counter mean something
1143
1150
  * Let the player restart the level if they die
@@ -3,8 +3,7 @@ from __future__ import annotations
3
3
  import random
4
4
 
5
5
  import pyglet
6
- from pyglet.graphics import GeometryMode
7
-
6
+ from pyglet.enums import GeometryMode
8
7
 
9
8
  window = pyglet.window.Window(width=540, height=540, resizable=True)
10
9
 
@@ -13,8 +13,8 @@ The code shown here illustrates:
13
13
  """
14
14
  import pyglet
15
15
 
16
- from pyglet.enums import BlendFactor
17
- from pyglet.graphics import Shader, ShaderProgram, Group, GeometryMode
16
+ from pyglet.enums import BlendFactor, GeometryMode
17
+ from pyglet.graphics import Shader, ShaderProgram, Group
18
18
 
19
19
  ###################################
20
20
  # Create a Window, and render Batch
@@ -1,8 +1,7 @@
1
1
  """This is a simple example that visually confirms """
2
2
 
3
3
  import pyglet
4
- from pyglet.graphics import GeometryMode
5
-
4
+ from pyglet.enums import GeometryMode
6
5
 
7
6
  window = pyglet.window.Window(width=540, height=540, resizable=True)
8
7
  batch = pyglet.graphics.Batch()
@@ -17,7 +17,7 @@ from math import pi, sin, cos
17
17
 
18
18
  import pyglet
19
19
  from pyglet.config import OpenGLConfig
20
- from pyglet.graphics import GeometryMode
20
+ from pyglet.enums import GeometryMode
21
21
 
22
22
  from pyglet.graphics.api.gl import (
23
23
  glEnable,
@@ -16,7 +16,7 @@ if TYPE_CHECKING:
16
16
  from typing import Any, Callable, ItemsView, Sized
17
17
 
18
18
  #: The release version
19
- version = '3.0.dev1'
19
+ version = '3.0.dev2'
20
20
  __version__ = version
21
21
 
22
22
  MIN_PYTHON_VERSION = 3, 8
@@ -10,6 +10,15 @@ class GraphicsAPI(Enum):
10
10
  WEBGL = auto()
11
11
 
12
12
 
13
+ class GeometryMode(Enum):
14
+ POINTS = auto()
15
+ LINES = auto()
16
+ LINE_STRIP = auto()
17
+ TRIANGLES = auto()
18
+ TRIANGLE_STRIP = auto()
19
+ TRIANGLE_FAN = auto()
20
+
21
+
13
22
  class BlendFactor(Enum):
14
23
  ZERO = "ZERO"
15
24
  ONE = "ONE"
@@ -86,11 +95,13 @@ class CompareOp(Enum):
86
95
  GREATER_OR_EQUAL = auto()
87
96
  ALWAYS = auto()
88
97
 
98
+
89
99
  class FramebufferTarget(Enum):
90
100
  FRAMEBUFFER = auto()
91
101
  DRAW = auto()
92
102
  READ = auto()
93
103
 
104
+
94
105
  class FramebufferAttachment(Enum):
95
106
  COLOR0 = auto()
96
107
  COLOR1 = auto()
@@ -114,7 +125,6 @@ class FramebufferAttachment(Enum):
114
125
  DEPTH_STENCIL = auto()
115
126
 
116
127
 
117
-
118
128
  class Weight(str, Enum):
119
129
  """An :py:class:`~enum.Enum` of known cross-platform font weight strings.
120
130
 
@@ -4,7 +4,7 @@ import sys
4
4
 
5
5
  import pyglet
6
6
  from pyglet import clock, event, graphics, image
7
- from pyglet.graphics import GeometryMode
7
+ from pyglet.enums import GeometryMode
8
8
  from pyglet.graphics.api.gl import *
9
9
 
10
10
  _is_pyglet_doc_run = hasattr(sys, "is_pyglet_doc_run") and sys.is_pyglet_doc_run
@@ -7,8 +7,7 @@ import time
7
7
 
8
8
  import pyglet
9
9
  from pyglet import clock, event, graphics, image
10
- from pyglet.graphics import GeometryMode
11
- from pyglet.graphics.api.gl import *
10
+ from pyglet.enums import BlendFactor, GeometryMode
12
11
 
13
12
  _is_pyglet_doc_run = hasattr(sys, "is_pyglet_doc_run") and sys.is_pyglet_doc_run
14
13
 
@@ -186,6 +185,9 @@ def get_default_shader():
186
185
 
187
186
 
188
187
  class EmitterGroup(graphics.Group):
188
+ blend_src: BlendFactor
189
+ blend_dest: BlendFactor
190
+
189
191
  def __init__(self, texture, blend_src, blend_dest, program, parent=None):
190
192
  super().__init__(parent=parent)
191
193
  self.texture = texture
@@ -203,15 +205,14 @@ class Emitter(event.EventDispatcher):
203
205
  _animation = None
204
206
  _frame_index = 0
205
207
  _paused = False
206
- _rotation = 0
207
208
  _visible = True
208
209
  _vertex_list = None
209
210
  group_class = EmitterGroup
210
211
 
211
212
  def __init__(self, img, x, y, z, count, velocity, spread,
212
213
  color_start=(255, 255, 255, 255), color_end=(255, 255, 255, 255),
213
- scale_start=(1.0, 1.0), scale_end=(1.0, 1.0),
214
- blend_src=GL_SRC_ALPHA, blend_dest=GL_ONE_MINUS_SRC_ALPHA,
214
+ scale_start=(1.0, 1.0), scale_end=(1.0, 1.0), rotation=0.0,
215
+ blend_src=BlendFactor.SRC_ALPHA, blend_dest=BlendFactor.ONE_MINUS_SRC_ALPHA,
215
216
  batch=None, group=None, program=None):
216
217
 
217
218
  self._img = img
@@ -225,6 +226,7 @@ class Emitter(event.EventDispatcher):
225
226
  self._color_end = color_end
226
227
  self._scale_start = scale_start
227
228
  self._scale_end = scale_end
229
+ self._rotation = rotation
228
230
 
229
231
  if isinstance(img, image.Animation):
230
232
  self._animation = img
@@ -274,7 +276,7 @@ class Emitter(event.EventDispatcher):
274
276
  program,
275
277
  self._user_group)
276
278
  if (self._batch and
277
- self._batch.update_shader(self._vertex_list, GL_POINTS, self._group, program)):
279
+ self._batch.update_shader(self._vertex_list, GeometryMode.POINTS, self._group, program)):
278
280
  # Exit early if changing domain is not needed.
279
281
  return
280
282
 
@@ -290,7 +292,8 @@ class Emitter(event.EventDispatcher):
290
292
  """
291
293
  if self._animation:
292
294
  clock.unschedule(self._animate)
293
- self._vertex_list.delete()
295
+ if self._vertex_list:
296
+ self._vertex_list.delete()
294
297
  self._vertex_list = None
295
298
  self._texture = None
296
299
  self._group = None
@@ -357,47 +360,36 @@ class ParticleManager:
357
360
  def __init__(self, img, lifespan, count, velocity,
358
361
  spread=(10.0, 10.0),
359
362
  color_start=(255, 255, 255, 255), color_end=(255, 255, 255, 255),
360
- scale_start=(1.0, 1.0), scale_end=(1.0, 1.0),
363
+ scale_start=(1.0, 1.0), scale_end=(1.0, 1.0), rotation=0.0,
361
364
  batch=None, group=None):
362
365
 
363
366
  self._img = img
364
- self._lifespan = lifespan
365
- self._count = count
366
- self._velocity = velocity
367
- self._spread = spread
368
- self._color_start = color_start
369
- self._color_end = color_end
370
- self._scale_start = scale_start
371
- self._scale_end = scale_end
367
+ self.lifespan = lifespan
368
+ self.count = count
369
+ self.velocity = velocity
370
+ self.spread = spread
371
+ self.color_start = color_start
372
+ self.color_end = color_end
373
+ self.scale_start = scale_start
374
+ self.scale_end = scale_end
375
+ self.rotation = rotation
372
376
 
373
377
  self._batch = batch
374
378
  self._group = group
375
379
  self._program = get_default_shader()
376
380
  clock.schedule_interval(self._update_shader_time, 1 / 60)
377
381
 
378
- # TODO: remove debug
379
- self.total_number = 0
380
- self.total_label = pyglet.text.Label("particles: 0", 10, 10, dpi=256, color=(10, 200, 10), batch=batch)
381
-
382
382
  def _update_shader_time(self, dt):
383
383
  self._program['time'] = time.perf_counter()
384
384
 
385
- def _delete_callback(self, dt, emitter):
385
+ @staticmethod
386
+ def _delete_callback(dt, emitter):
386
387
  emitter.delete()
387
388
 
388
- # TODO: remove debug
389
- self.total_number -= 1
390
- self.total_label.text = f"particles: {self.total_number * self._count * 8!s}"
391
-
392
389
  def create_emitter(self, x, y, z=0):
393
- emitter = Emitter(self._img, x, y, z, self._count, self._velocity, self._spread,
394
- color_start=self._color_start, color_end=self._color_end,
395
- scale_start=self._scale_start, scale_end=self._scale_end,
390
+ emitter = Emitter(self._img, x, y, z, self.count, self.velocity, self.spread,
391
+ color_start=self.color_start, color_end=self.color_end,
392
+ scale_start=self.scale_start, scale_end=self.scale_end, rotation=self.rotation,
396
393
  batch=self._batch, group=self._group)
397
- pyglet.clock.schedule_once(self._delete_callback, self._lifespan, emitter)
398
-
399
- # TODO: remove debug
400
- self.total_number += 1
401
- self.total_label.text = f"particles: {self.total_number * self._count * 8!s}"
402
-
394
+ pyglet.clock.schedule_once(self._delete_callback, self.lifespan, emitter)
403
395
  return emitter
@@ -8,8 +8,6 @@ See the :ref:`guide_graphics` for details on how to use this graphics API.
8
8
  """
9
9
  from __future__ import annotations
10
10
 
11
-
12
- from pyglet.graphics.base import GeometryMode # noqa: F401
13
11
  from pyglet.graphics import api # noqa: F401
14
12
  from pyglet.graphics.draw import Group, ShaderGroup # noqa: F401
15
13
  from pyglet.graphics.state import State # noqa: F401
@@ -14,7 +14,7 @@ from pyglet.graphics.state import State
14
14
  _debug_graphics_batch = pyglet.options.debug_graphics_batch
15
15
 
16
16
  if TYPE_CHECKING:
17
- from pyglet.graphics import GeometryMode
17
+ from pyglet.enums import GeometryMode
18
18
  from pyglet.graphics.api.gl2.shader import ShaderProgram
19
19
  from pyglet.graphics.api.gl.vertexdomain import VertexList, IndexedVertexList
20
20
 
@@ -1,6 +1,5 @@
1
1
  from __future__ import annotations
2
2
 
3
- from pyglet.graphics import GeometryMode
4
3
  from pyglet.graphics.api.gl import (
5
4
  GL_LINEAR, GL_NEAREST, GL_TEXTURE_1D, GL_TEXTURE_2D, GL_TEXTURE_3D, \
6
5
  GL_TEXTURE_CUBE_MAP, \
@@ -15,7 +14,7 @@ from pyglet.graphics.api.gl import (
15
14
  GL_CONSTANT_ALPHA, GL_ONE_MINUS_CONSTANT_ALPHA, GL_NEVER, GL_LESS, GL_EQUAL, GL_LEQUAL, GL_GREATER, GL_NOTEQUAL,
16
15
  GL_GEQUAL, GL_ALWAYS)
17
16
 
18
- from pyglet.enums import BlendFactor, TextureFilter, TextureType, TextureWrapping, CompareOp
17
+ from pyglet.enums import BlendFactor, TextureFilter, TextureType, TextureWrapping, CompareOp, GeometryMode
19
18
 
20
19
  geometry_map = {
21
20
  GeometryMode.POINTS: GL_POINTS,
@@ -42,7 +42,7 @@ from pyglet.graphics.shader import ShaderSource, ShaderType, ShaderBase, Attribu
42
42
  from pyglet.graphics.shader import ShaderException
43
43
 
44
44
  from pyglet.graphics.api.gl.buffer import BufferObject
45
- from pyglet.graphics import GeometryMode
45
+ from pyglet.enums import GeometryMode
46
46
 
47
47
  if TYPE_CHECKING:
48
48
  from _weakref import CallableProxyType
@@ -64,7 +64,8 @@ from pyglet.graphics.vertexdomain import (
64
64
  if TYPE_CHECKING:
65
65
  from ctypes import Array
66
66
  from pyglet.graphics.shader import AttributeView
67
- from pyglet.graphics import GeometryMode, Group
67
+ from pyglet.graphics import Group
68
+ from pyglet.enums import GeometryMode
68
69
  from pyglet.graphics.shader import Attribute
69
70
  from pyglet.customtypes import CType, DataTypes
70
71
 
@@ -23,7 +23,7 @@ _debug_graphics_batch = pyglet.options.debug_graphics_batch
23
23
 
24
24
  if TYPE_CHECKING:
25
25
  from pyglet.graphics.state import State
26
- from pyglet.graphics import GeometryMode
26
+ from pyglet.enums import GeometryMode
27
27
  from pyglet.graphics.api.gl2.shader import ShaderProgram
28
28
 
29
29