basilisk-engine 0.1.29__tar.gz → 0.1.31__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.

Potentially problematic release.


This version of basilisk-engine might be problematic. Click here for more details.

Files changed (163) hide show
  1. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/PKG-INFO +1 -1
  2. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/basilisk/engine.py +1 -5
  3. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/basilisk/nodes/node.py +20 -10
  4. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/basilisk/render/chunk.py +1 -1
  5. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/basilisk/render/framebuffer.py +10 -1
  6. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/basilisk/render/shader.py +2 -2
  7. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/basilisk/render/shader_handler.py +1 -1
  8. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/basilisk/scene.py +16 -6
  9. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/basilisk_engine.egg-info/PKG-INFO +1 -1
  10. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/setup.py +1 -1
  11. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/MANIFEST.in +0 -0
  12. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/README.md +0 -0
  13. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/basilisk/__init__.py +0 -0
  14. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/basilisk/audio/__init__.py +0 -0
  15. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/basilisk/audio/sound.py +0 -0
  16. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/basilisk/bsk_assets/Roboto-Regular.ttf +0 -0
  17. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/basilisk/bsk_assets/__init__.py +0 -0
  18. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/basilisk/bsk_assets/basilisk.png +0 -0
  19. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/basilisk/bsk_assets/cube.obj +0 -0
  20. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/basilisk/bsk_assets/skybox.png +0 -0
  21. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/basilisk/collisions/__init__.py +0 -0
  22. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/basilisk/collisions/broad/__init__.py +0 -0
  23. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/basilisk/collisions/broad/broad_aabb.py +0 -0
  24. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/basilisk/collisions/broad/broad_bvh.py +0 -0
  25. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/basilisk/collisions/collider.py +0 -0
  26. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/basilisk/collisions/collider_handler.py +0 -0
  27. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/basilisk/collisions/narrow/__init__.py +0 -0
  28. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/basilisk/collisions/narrow/contact_manifold.py +0 -0
  29. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/basilisk/collisions/narrow/dataclasses.py +0 -0
  30. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/basilisk/collisions/narrow/deprecated.py +0 -0
  31. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/basilisk/collisions/narrow/epa.py +0 -0
  32. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/basilisk/collisions/narrow/gjk.py +0 -0
  33. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/basilisk/collisions/narrow/graham_scan.py +0 -0
  34. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/basilisk/collisions/narrow/helper.py +0 -0
  35. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/basilisk/collisions/narrow/line_intersections.py +0 -0
  36. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/basilisk/collisions/narrow/sutherland_hodgman.py +0 -0
  37. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/basilisk/config.py +0 -0
  38. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/basilisk/draw/__init__.py +0 -0
  39. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/basilisk/draw/draw.py +0 -0
  40. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/basilisk/draw/draw_handler.py +0 -0
  41. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/basilisk/draw/font_renderer.py +0 -0
  42. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/basilisk/generic/__init__.py +0 -0
  43. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/basilisk/generic/abstract_bvh.py +0 -0
  44. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/basilisk/generic/abstract_custom.py +0 -0
  45. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/basilisk/generic/collisions.py +0 -0
  46. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/basilisk/generic/input_validation.py +0 -0
  47. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/basilisk/generic/math.py +0 -0
  48. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/basilisk/generic/matrices.py +0 -0
  49. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/basilisk/generic/meshes.py +0 -0
  50. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/basilisk/generic/quat.py +0 -0
  51. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/basilisk/generic/quat_methods.py +0 -0
  52. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/basilisk/generic/raycast_result.py +0 -0
  53. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/basilisk/generic/vec3.py +0 -0
  54. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/basilisk/input_output/IO_handler.py +0 -0
  55. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/basilisk/input_output/__init__.py +0 -0
  56. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/basilisk/input_output/clock.py +0 -0
  57. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/basilisk/input_output/keys.py +0 -0
  58. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/basilisk/input_output/mouse.py +0 -0
  59. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/basilisk/input_output/path.py +0 -0
  60. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/basilisk/mesh/__init__.py +0 -0
  61. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/basilisk/mesh/cube.py +0 -0
  62. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/basilisk/mesh/mesh.py +0 -0
  63. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/basilisk/mesh/mesh_from_data.py +0 -0
  64. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/basilisk/mesh/model.py +0 -0
  65. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/basilisk/mesh/narrow_aabb.py +0 -0
  66. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/basilisk/mesh/narrow_bvh.py +0 -0
  67. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/basilisk/mesh/narrow_primative.py +0 -0
  68. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/basilisk/nodes/__init__.py +0 -0
  69. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/basilisk/nodes/helper.py +0 -0
  70. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/basilisk/nodes/node_handler.py +0 -0
  71. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/basilisk/particles/__init__.py +0 -0
  72. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/basilisk/particles/particle_handler.py +0 -0
  73. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/basilisk/particles/particle_renderer.py +0 -0
  74. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/basilisk/physics/__init__.py +0 -0
  75. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/basilisk/physics/impulse.py +0 -0
  76. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/basilisk/physics/physics_body.py +0 -0
  77. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/basilisk/physics/physics_engine.py +0 -0
  78. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/basilisk/render/__init__.py +0 -0
  79. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/basilisk/render/batch.py +0 -0
  80. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/basilisk/render/camera.py +0 -0
  81. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/basilisk/render/chunk_handler.py +0 -0
  82. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/basilisk/render/frame.py +0 -0
  83. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/basilisk/render/image.py +0 -0
  84. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/basilisk/render/image_handler.py +0 -0
  85. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/basilisk/render/light.py +0 -0
  86. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/basilisk/render/light_handler.py +0 -0
  87. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/basilisk/render/material.py +0 -0
  88. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/basilisk/render/material_handler.py +0 -0
  89. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/basilisk/render/post_process.py +0 -0
  90. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/basilisk/render/sky.py +0 -0
  91. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/basilisk/shaders/__init__.py +0 -0
  92. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/basilisk/shaders/batch.frag +0 -0
  93. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/basilisk/shaders/batch.vert +0 -0
  94. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/basilisk/shaders/crt.frag +0 -0
  95. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/basilisk/shaders/draw.frag +0 -0
  96. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/basilisk/shaders/draw.vert +0 -0
  97. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/basilisk/shaders/filter.frag +0 -0
  98. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/basilisk/shaders/frame.frag +0 -0
  99. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/basilisk/shaders/frame.vert +0 -0
  100. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/basilisk/shaders/geometry.frag +0 -0
  101. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/basilisk/shaders/geometry.vert +0 -0
  102. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/basilisk/shaders/normal.frag +0 -0
  103. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/basilisk/shaders/normal.vert +0 -0
  104. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/basilisk/shaders/particle.frag +0 -0
  105. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/basilisk/shaders/particle.vert +0 -0
  106. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/basilisk/shaders/sky.frag +0 -0
  107. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/basilisk/shaders/sky.vert +0 -0
  108. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/basilisk_engine.egg-info/SOURCES.txt +0 -0
  109. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/basilisk_engine.egg-info/dependency_links.txt +0 -0
  110. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/basilisk_engine.egg-info/requires.txt +0 -0
  111. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/basilisk_engine.egg-info/top_level.txt +0 -0
  112. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/docs/images/0_boilerplate.png +0 -0
  113. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/images/cloth.png +0 -0
  114. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/images/floor.png +0 -0
  115. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/images/foil.png +0 -0
  116. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/images/mud.png +0 -0
  117. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/setup.cfg +0 -0
  118. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/tests/SkySkybox.png +0 -0
  119. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/tests/box_three.obj +0 -0
  120. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/tests/box_three_lid.obj +0 -0
  121. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/tests/brick.png +0 -0
  122. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/tests/brick_normal.png +0 -0
  123. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/tests/bunny.obj +0 -0
  124. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/tests/closet_001.obj +0 -0
  125. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/tests/cloth_albedo.png +0 -0
  126. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/tests/cloth_normal.png +0 -0
  127. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/tests/cube.obj +0 -0
  128. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/tests/cubemaps_skybox.png +0 -0
  129. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/tests/cylinder.obj +0 -0
  130. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/tests/demo_sphere.obj +0 -0
  131. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/tests/dirt.png +0 -0
  132. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/tests/drawer.obj +0 -0
  133. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/tests/dresser.obj +0 -0
  134. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/tests/floor_albedo.png +0 -0
  135. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/tests/floor_normal.png +0 -0
  136. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/tests/foil_normal.png +0 -0
  137. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/tests/fridge_001.obj +0 -0
  138. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/tests/grass.jpg +0 -0
  139. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/tests/grass_ao.jpg +0 -0
  140. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/tests/grass_block_side.png +0 -0
  141. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/tests/grass_block_top.png +0 -0
  142. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/tests/grass_normal.png +0 -0
  143. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/tests/grass_roughness.jpg +0 -0
  144. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/tests/image.png +0 -0
  145. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/tests/john.obj +0 -0
  146. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/tests/key.obj +0 -0
  147. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/tests/lucy.obj +0 -0
  148. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/tests/monkey.obj +0 -0
  149. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/tests/mud.png +0 -0
  150. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/tests/mud_normal.png +0 -0
  151. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/tests/oak_tree.obj +0 -0
  152. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/tests/picture_frame.obj +0 -0
  153. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/tests/shaders/custom_format.frag +0 -0
  154. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/tests/shaders/custom_format.vert +0 -0
  155. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/tests/shaders/image_test.frag +0 -0
  156. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/tests/shaders/image_test.vert +0 -0
  157. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/tests/shaders/multi_render_test.frag +0 -0
  158. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/tests/shaders/multi_render_test.vert +0 -0
  159. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/tests/skybox.png +0 -0
  160. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/tests/sock.obj +0 -0
  161. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/tests/sphere.obj +0 -0
  162. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/tests/wedge.obj +0 -0
  163. {basilisk_engine-0.1.29 → basilisk_engine-0.1.31}/tests/wheel_eight.obj +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: basilisk-engine
3
- Version: 0.1.29
3
+ Version: 0.1.31
4
4
  Summary: Python 3D Framework
5
5
  Home-page: https://basilisk-website.vercel.app/
6
6
  Author: Name
@@ -163,8 +163,4 @@ class Engine():
163
163
 
164
164
 
165
165
  @property
166
- def shader(self): return self._shader
167
- @shader.setter
168
- def shader(self, value):
169
- self._shader = value
170
- value.set_main()
166
+ def shader(self): return self._shader
@@ -19,11 +19,11 @@ class Node():
19
19
  """The scale of the node in meters in each direction"""
20
20
  rotation: Quat
21
21
  """The rotation of the node"""
22
- position_relative: bool
22
+ relative_position: bool
23
23
  """The position of this node relative to the parent node"""
24
- scale_relative: bool
24
+ relative_scale: bool
25
25
  """The scale of this node relative to the parent node"""
26
- rotation_relative: bool
26
+ relative_rotation: bool
27
27
  """The rotation of this node relative to the parent node"""
28
28
  forward: glm.vec3
29
29
  """The forward facing vector of the node"""
@@ -239,9 +239,9 @@ class Node():
239
239
  if self.relative_scale: transform = glm.scale(transform, self.parent.scale.data)
240
240
 
241
241
  # set this node's transforms based on the parent
242
- self.position = transform * self.relative_position
243
- self.scale = self.relative_scale * self.parent.scale.data
244
- self.rotation = self.relative_rotation * self.parent.rotation.data
242
+ if self.relative_position: self.position = transform * self.relative_position
243
+ if self.relative_scale: self.scale = self.relative_scale * self.parent.scale.data
244
+ if self.relative_rotation: self.rotation = self.relative_rotation * self.parent.rotation.data
245
245
 
246
246
  for child in self.children: child.sync_data()
247
247
 
@@ -287,12 +287,22 @@ class Node():
287
287
  """
288
288
  Adopts a node as a child. Relative transforms can be changed, if left bank they will not be chnaged from the current child nodes settings.
289
289
  """
290
- if child in self.children: return
290
+ if child in self.children or child is self: return
291
+ assert isinstance(child, Node), 'Nodes can only accept other Nodes as children.'
292
+
293
+ relative = glm.inverse(self.model_matrix) * child.model_matrix
294
+ position = glm.vec3(relative[3])
295
+ scale = glm.vec3([glm.length(relative[i]) for i in range(3)])
296
+ rotation = glm.quat_cast(glm.mat3x3(*[glm.vec3(relative[i]) / scale[i] for i in range(3)])) # TODO ensure that these are the correct calculations
291
297
 
292
298
  # compute relative transformations
293
- if relative_position or (relative_position is None and child.relative_position): child.relative_position = child.position.data - self.position.data
294
- if relative_scale or (relative_scale is None and child.relative_scale): child.relative_scale = child.scale.data / self.scale.data
295
- if relative_rotation or (relative_rotation is None and child.relative_rotation): child.relative_rotation = child.rotation.data * glm.inverse(self.rotation.data)
299
+ if relative_position or (relative_position is None and child.relative_position): child.relative_position = position
300
+ if relative_scale or (relative_scale is None and child.relative_scale): child.relative_scale = scale
301
+ if relative_rotation or (relative_rotation is None and child.relative_rotation): child.relative_rotation = rotation
302
+
303
+ print(child.relative_position)
304
+ print(child.relative_scale)
305
+ print(child.relative_rotation)
296
306
 
297
307
  # add as a child to by synchronized and controlled
298
308
  if self.node_handler: self.node_handler.add(child)
@@ -87,7 +87,7 @@ class Chunk():
87
87
  shader = self.shader
88
88
 
89
89
  if shader: return shader
90
- return self.chunk_handler.engine.shader
90
+ return self.chunk_handler.scene.shader
91
91
 
92
92
  def swap_shader(self, shader):
93
93
  """
@@ -166,9 +166,18 @@ class Framebuffer:
166
166
  def show(self, value: int) -> None:
167
167
  value = validate_int("Framebuffer", "show", value)
168
168
  if value == self._show: return
169
+
170
+ # Verify the range
171
+ if value < 0 or value > len(self.color_attachments): raise ValueError(f'Framebuffer.show: invalid color attachement to show, {value} is out of range')
172
+ elif value == len(self.color_attachments): src = self.depth
173
+ else: src = self.color_attachments[value]
174
+
175
+ # Update value
169
176
  self._show = value
177
+
178
+ # Bind the correct texture
170
179
  self.shader.program['screenTexture'] = value+1
171
- self.color_attachments[value].use(location=value+1)
180
+ src.use(location=value+1)
172
181
 
173
182
  def __repr__(self) -> str:
174
183
  return f'<bsk.Framebuffer | size: {self.size}>'
@@ -98,13 +98,13 @@ class Shader:
98
98
  # Create a program with shaders
99
99
  self.program = self.ctx.program(vertex_shader=self.vertex_shader, fragment_shader=self.fragment_shader)
100
100
 
101
- def set_main(self):
101
+ def set_main(self, scene):
102
102
  """
103
103
  Selects a shader for use
104
104
  """
105
105
 
106
106
  self.engine.shader_handler.add(self)
107
- self.engine.scene.node_handler.chunk_handler.swap_default(self)
107
+ if scene.node_handler: scene.node_handler.chunk_handler.swap_default(self)
108
108
 
109
109
  def write(self, name: str, value) -> None:
110
110
  """
@@ -28,7 +28,7 @@ class ShaderHandler:
28
28
  self.shaders = set()
29
29
 
30
30
  # Load a default shader
31
- self.default_shader = Shader(self, self.engine.root + '/shaders/batch.vert', self.engine.root + '/shaders/batch.frag')
31
+ self.default_shader = Shader(self.engine, self.engine.root + '/shaders/batch.vert', self.engine.root + '/shaders/batch.frag')
32
32
  self.default_shader.hash = self.default_shader.hash + hash('engine_shader')
33
33
  self.add(self.default_shader)
34
34
  setattr(self.engine, "_shader", self.default_shader)
@@ -4,8 +4,7 @@ import pygame as pg
4
4
 
5
5
  from .mesh.mesh import Mesh
6
6
  from .render.material import Material
7
- from .render.shader_handler import ShaderHandler
8
- from .render.material_handler import MaterialHandler
7
+ from .render.shader import Shader
9
8
  from .render.light_handler import LightHandler
10
9
  from .render.camera import Camera, FreeCamera
11
10
  from .nodes.node_handler import NodeHandler
@@ -34,13 +33,14 @@ class Scene():
34
33
  node_handler: NodeHandler=None
35
34
  """"""
36
35
 
37
- def __init__(self, engine: ...) -> None:
36
+ def __init__(self, engine: ..., shader: Shader=None) -> None:
38
37
  """
39
38
  Basilisk scene object. Contains all nodes for the scene
40
39
  """
41
40
 
42
41
  self.engine = engine
43
42
  self.ctx = engine.ctx
43
+ self.shader = shader if shader else engine.shader
44
44
  self.camera = FreeCamera()
45
45
  self.light_handler = LightHandler(self)
46
46
  self.physics_engine = PhysicsEngine()
@@ -69,7 +69,11 @@ class Scene():
69
69
  self.collider_handler.resolve_collisions()
70
70
 
71
71
  # Render by default to the engine frame
72
- if render: self.render()
72
+ if not render: return
73
+
74
+ # Check if the user is giving a destination
75
+ if not isinstance(render, bool): self.render(renders)
76
+ else: self.render()
73
77
 
74
78
  def render(self, render_target: Framebuffer|Frame=None) -> None:
75
79
  """
@@ -92,7 +96,6 @@ class Scene():
92
96
  if self.engine.headless or not show: return
93
97
 
94
98
 
95
-
96
99
  def add(self, *objects: Node | None) -> None | Node | list:
97
100
  """
98
101
  Adds the given object(s) to the scene. Can pass in any scene objects:
@@ -263,6 +266,8 @@ class Scene():
263
266
  def sky(self): return self._sky
264
267
  @property
265
268
  def nodes(self): return self.node_handler.nodes
269
+ @property
270
+ def shader(self): return self._shader
266
271
 
267
272
  @camera.setter
268
273
  def camera(self, value: Camera):
@@ -277,4 +282,9 @@ class Scene():
277
282
  if not isinstance(value, Sky) and not isinstance(value, type(None)):
278
283
  raise TypeError(f'Scene: Invalid sky type: {type(value)}. Expected type bsk.Sky or None')
279
284
  self._sky = value
280
- if value: self._sky.write()
285
+ if value: self._sky.write()
286
+
287
+ @shader.setter
288
+ def shader(self, value):
289
+ self._shader = value
290
+ value.set_main(self)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: basilisk-engine
3
- Version: 0.1.29
3
+ Version: 0.1.31
4
4
  Summary: Python 3D Framework
5
5
  Home-page: https://basilisk-website.vercel.app/
6
6
  Author: Name
@@ -7,7 +7,7 @@ with open(path.join(working_directory, 'README.md'), encoding='utf-8') as f:
7
7
 
8
8
  setup(
9
9
  name = 'basilisk-engine', # Name of folder containing scripts and __init__
10
- version = '0.1.29',
10
+ version = '0.1.31',
11
11
  url = 'https://basilisk-website.vercel.app/',
12
12
  author = 'Name',
13
13
  author_email = 'basiliskengine@gmail.com',