basilisk-engine 0.1.36__py3-none-any.whl → 0.1.38__py3-none-any.whl

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.

@@ -43,6 +43,9 @@ class DrawHandler():
43
43
 
44
44
  if not self.draw_data: return
45
45
 
46
+ self.ctx.enable(mgl.BLEND)
47
+ self.ctx.blend_func = mgl.ADDITIVE_BLENDING
48
+
46
49
  # Reverse the draw order, and convert to C-like array
47
50
  self.draw_data.reverse()
48
51
  data = np.array(self.draw_data, dtype='f4')
@@ -54,8 +57,6 @@ class DrawHandler():
54
57
  self.vao = self.ctx.vertex_array(self.shader.program, [(self.vbo, '2f 4f 1i 1f', *['in_position', 'in_color', 'in_uses_image', 'in_alpha'])], skip_errors=True)
55
58
 
56
59
  # Render the VAO
57
- self.ctx.enable(mgl.BLEND)
58
- self.ctx.blend_equation = mgl.ADDITIVE_BLENDING
59
60
  self.vao.render()
60
61
 
61
62
  # Clera the draw data
@@ -65,6 +66,8 @@ class DrawHandler():
65
66
  self.vao = None
66
67
  self.draw_data.clear()
67
68
 
69
+ self.ctx.disable(mgl.BLEND)
70
+
68
71
  def draw_rect(self, color: tuple, rect: tuple) -> None:
69
72
  """
70
73
  Draws a rect to the screen
@@ -42,7 +42,7 @@ class ParticleHandler:
42
42
 
43
43
  # Get material ID
44
44
  if material == None: material_index = 0
45
- elif isinstance(material, Material):
45
+ elif isinstance(material, Material):
46
46
  self.scene.engine.material_handler.add(material)
47
47
  material_index = material.index
48
48
  else: raise ValueError(f'particle_handler.add: Invalid particle material type: {type(material)}')
@@ -31,6 +31,7 @@ class ParticleRenderer:
31
31
  root = scene.engine.root
32
32
  if shader: self.shader = shader
33
33
  else: self.shader = Shader(scene.engine, vert=root + '/shaders/particle.vert', frag=root + '/shaders/particle.frag')
34
+
34
35
  scene.engine.shader_handler.add(self.shader)
35
36
 
36
37
  self.particle_cube_size = 25
basilisk/render/frame.py CHANGED
@@ -28,9 +28,6 @@ class Frame:
28
28
  self.framebuffer.texture.repeat_x = False
29
29
  self.framebuffer.texture.repeat_y = False
30
30
 
31
- self.ctx.enable(mgl.BLEND)
32
- self.ctx.blend_func = mgl.ADDITIVE_BLENDING
33
-
34
31
  # Load Shaders
35
32
  self.shader = Shader(self.engine, self.engine.root + '/shaders/frame.vert', self.engine.root + '/shaders/bloom_frame.frag')
36
33
  self.engine.shader_handler.add(self.shader)
@@ -50,21 +47,27 @@ class Frame:
50
47
  Renders the current frame to the screen
51
48
  """
52
49
 
50
+ self.ctx.enable(mgl.BLEND)
51
+ self.ctx.blend_func = mgl.ADDITIVE_BLENDING
52
+
53
53
  if self.engine.event_resize: self.bloom.generate_bloom_buffers()
54
54
 
55
+ self.bloom.render()
56
+
55
57
  for process in self.post_processes:
56
- self.ping_pong_buffer = process.apply(self.framebuffer, self.ping_pong_buffer)
58
+ self.ping_pong_buffer = process.apply([('screenTexture', self.framebuffer)], self.ping_pong_buffer)
57
59
 
58
60
  temp = self.framebuffer
59
61
  self.framebuffer = self.ping_pong_buffer
60
62
  self.ping_pong_buffer = temp
61
63
 
62
- self.bloom.render()
63
64
  self.ctx.screen.use()
64
65
  self.shader.bind(self.framebuffer.texture, 'screenTexture', 0)
65
66
  self.shader.bind(self.bloom.texture, 'bloomTexture', 1)
66
67
  self.vao.render()
67
68
 
69
+ self.ctx.disable(mgl.BLEND)
70
+
68
71
  def use(self) -> None:
69
72
  """
70
73
  Uses the frame as a render target
@@ -35,7 +35,7 @@ class PostProcess:
35
35
 
36
36
  # Load Shaders
37
37
  self.shader = Shader(self.engine, self.engine.root + f'/shaders/frame.vert', frag)
38
- self.engine.scene.shader_handler.add(self.shader)
38
+ self.engine.shader_handler.add(self.shader)
39
39
 
40
40
  # Load VAO
41
41
  self.vbo = self.ctx.buffer(np.array([[-1, -1, 0, 0, 0], [1, -1, 0, 1, 0], [1, 1, 0, 1, 1], [-1, 1, 0, 0, 1], [-1, -1, 0, 0, 0], [1, 1, 0, 1, 1]], dtype='f4'))
@@ -49,15 +49,15 @@ class PostProcess:
49
49
  self.fbo.texture.filter = self.filter
50
50
 
51
51
 
52
- def apply(self, source: mgl.Texture | Image | Framebuffer, destination: mgl.Texture | Image | Framebuffer=None) -> mgl.Texture | Image | Framebuffer:
52
+ def apply(self, source: list[tuple[str, mgl.Texture]] | list[tuple[str, Image]] | list[tuple[str, Framebuffer]], destination: mgl.Texture | Image | Framebuffer=None) -> mgl.Texture | Image | Framebuffer:
53
53
  """
54
54
  Applies a post process shader to a texture source.
55
55
  Returns the modified texture or renders to the destination if given
56
56
  """
57
57
 
58
- if isinstance(source, Framebuffer): return self._apply_to_framebuffer(source, destination)
59
- elif isinstance(source, mgl.Texture): return self._apply_to_texture(source, destination)
60
- elif isinstance(source, Image): return self._apply_to_image(source, destination)
58
+ if isinstance(source[0][1], Framebuffer): return self._apply_to_framebuffer(source, destination)
59
+ elif isinstance(source[0][1], mgl.Texture): return self._apply_to_texture(source, destination)
60
+ elif isinstance(source[0][1], Image): return self._apply_to_image(source, destination)
61
61
 
62
62
  raise ValueError(f'PostProces.apply: Invalid postprocess source type {type(source)}')
63
63
 
@@ -74,8 +74,9 @@ class PostProcess:
74
74
  self.fbo.clear()
75
75
 
76
76
  # Load the source texture to the shader
77
- self.shader.program['screenTexture'] = 0
78
- source.use(location=0)
77
+ for i, src in enumerate(source):
78
+ self.shader.program[src[0]] = i
79
+ src[1].use(location=i)
79
80
 
80
81
  # Apply the post process
81
82
  self.vao.render()
@@ -93,12 +94,13 @@ class PostProcess:
93
94
  fbo.texture.filter = self.filter
94
95
  else:
95
96
  fbo = detination
96
- old_filter = fbo.filter
97
+ old_filter = fbo.texture_filter
97
98
  fbo.texture.filter = self.filter
98
99
 
99
100
  # Load the source texture to the shader
100
- self.shader.program['screenTexture'] = 0
101
- source.texture.use(location=0)
101
+ for i, src in enumerate(source):
102
+ self.shader.program[src[0]] = i
103
+ src[1].texture.use(location=i)
102
104
 
103
105
  fbo.use()
104
106
  fbo.clear()
@@ -137,4 +139,9 @@ class PostProcess:
137
139
 
138
140
  # Make an image from the texture
139
141
  image = Image()
140
- return image
142
+ return image
143
+
144
+ def __del__(self):
145
+ if self.vao: self.vao.release()
146
+ if self.vbo: self.vbo.release()
147
+ if self.fbo: self.fbo.release()
@@ -0,0 +1 @@
1
+ source[0][
basilisk/scene.py CHANGED
@@ -287,4 +287,5 @@ class Scene():
287
287
  @shader.setter
288
288
  def shader(self, value):
289
289
  self._shader = value
290
- value.set_main(self)
290
+ value.set_main(self)
291
+ if self.light_handler: self.light_handler.write(value)
@@ -1,9 +1,11 @@
1
1
  #version 330 core
2
2
 
3
3
  layout (location = 0) out vec4 fragColor;
4
+ layout (location = 1) out vec4 bloomColor;
4
5
 
5
6
 
6
7
  void main() {
7
8
  // Output fragment color
8
9
  fragColor = vec4(1.0, 1.0, 1.0, 1.0);
10
+ bloomColor = vec4(0.0);
9
11
  }
@@ -1,6 +1,7 @@
1
1
  #version 330 core
2
2
 
3
3
  layout (location = 0) out vec4 fragColor;
4
+ layout (location = 1) out vec4 bloomColor;
4
5
 
5
6
  // Structs needed for the shader
6
7
  struct textArray {
@@ -57,4 +58,6 @@ void main() {
57
58
 
58
59
  // Output fragment color
59
60
  fragColor = vec4(normal, 1.0);
61
+
62
+ bloomColor = vec4(0.0);
60
63
  }
@@ -1,5 +1,7 @@
1
1
  #version 330 core
2
- out vec4 fragColor;
2
+
3
+ layout (location = 0) out vec4 fragColor;
4
+ layout (location = 1) out vec4 bloomColor;
3
5
 
4
6
  in vec2 uv;
5
7
  in vec3 position;
@@ -12,6 +14,7 @@ uniform textArray textureArrays[5];
12
14
 
13
15
  struct Material {
14
16
  vec3 color;
17
+ vec3 emissiveColor;
15
18
  float roughness;
16
19
  float subsurface;
17
20
  float sheen;
@@ -69,4 +72,6 @@ void main()
69
72
  // Get color and gamma correction
70
73
  fragColor = vec4(color * (.2 + diff), 1.0);
71
74
  fragColor.rgb = pow(fragColor.rgb, vec3(1.0/gamma));
75
+
76
+ bloomColor = vec4(mtl.emissiveColor, 1.0);
72
77
  }
@@ -21,6 +21,7 @@ uniform sampler2D materialsTexture;
21
21
 
22
22
  struct Material {
23
23
  vec3 color;
24
+ vec3 emissiveColor;
24
25
  float roughness;
25
26
  float subsurface;
26
27
  float sheen;
@@ -71,14 +72,15 @@ void main() {
71
72
  uv = in_uv;
72
73
 
73
74
  // Material Data
74
- int mtl_size = 25;
75
+ int mtl_size = 28;
75
76
  int materialID = int(in_instance_mtl);
76
- mtl = Material(vec3(0), 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, vec2(0), 0, vec2(0), 0, vec2(0), 0, vec2(0));
77
+ mtl = Material(vec3(0), vec3(0), 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, vec2(0), 0, vec2(0), 0, vec2(0), 0, vec2(0));
77
78
  mtl.color = vec3(texelFetch(materialsTexture, ivec2(0, 0 + materialID * mtl_size), 0).r, texelFetch(materialsTexture, ivec2(0, 1 + materialID * mtl_size), 0).r, texelFetch(materialsTexture, ivec2(0, 2 + materialID * mtl_size), 0).r);
78
79
  mtl.hasAlbedoMap = int(texelFetch(materialsTexture, ivec2(0, 13 + materialID * mtl_size), 0).r);
79
80
  mtl.albedoMap = vec2(texelFetch(materialsTexture, ivec2(0, 14 + materialID * mtl_size), 0).r, texelFetch(materialsTexture, ivec2(0, 15 + materialID * mtl_size), 0).r);
80
81
  mtl.hasNormalMap = int(texelFetch(materialsTexture, ivec2(0, 16 + materialID * mtl_size), 0).r);
81
82
  mtl.normalMap = vec2(texelFetch(materialsTexture, ivec2(0, 17 + materialID * mtl_size), 0).r, texelFetch(materialsTexture, ivec2(0, 18 + materialID * mtl_size), 0).r);
83
+ mtl.emissiveColor = vec3(texelFetch(materialsTexture, ivec2(0, 25 + materialID * mtl_size), 0).r, texelFetch(materialsTexture, ivec2(0, 26 + materialID * mtl_size), 0).r, texelFetch(materialsTexture, ivec2(0, 27 + materialID * mtl_size), 0).r);
82
84
 
83
85
  // Send position to the frag
84
86
  gl_Position = projectionMatrix * viewMatrix * modelMatrix * vec4(in_position, 1.0);
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: basilisk-engine
3
- Version: 0.1.36
3
+ Version: 0.1.38
4
4
  Summary: Python 3D Framework
5
5
  Home-page: https://basilisk-website.vercel.app/
6
6
  Author: Name
@@ -1,7 +1,7 @@
1
1
  basilisk/__init__.py,sha256=iek4GeDKFC1oFX6JHCzyB-6F1iqHY9fiQo6S-qiotsk,1160
2
2
  basilisk/config.py,sha256=czvjhMD2QVOGfxrdVfxI-jOex54dRwwwYzBiACYuZ0s,1765
3
3
  basilisk/engine.py,sha256=9cKvXoRn8BC6eV8u2kJly-lfmp-zb7xlI-MW2DLYIRg,5887
4
- basilisk/scene.py,sha256=NJUySG4vk4D9DOfajB6gdy_EgWZi2-R0rm28SfL_CII,12486
4
+ basilisk/scene.py,sha256=UZVIXAVwuu9ktTh-FO2dVNlshGNz_KU-RDwKX8V0fY4,12550
5
5
  basilisk/audio/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
6
6
  basilisk/audio/sound.py,sha256=BjqaPv_07iD_-NDRy1cc0TS4PJzAnQc4hfsW9ntNjGQ,719
7
7
  basilisk/bsk_assets/Roboto-Regular.ttf,sha256=kqYnZjMRQMpbyLulIChCLSdgYa1XF8GsUIoRi2Gcauw,168260
@@ -27,7 +27,7 @@ basilisk/collisions/narrow/line_intersections.py,sha256=CGtttZ6n51u4l8JtQXzkClgZ
27
27
  basilisk/collisions/narrow/sutherland_hodgman.py,sha256=SUjSU5y7AuzIDiljMcTXxlGuFHT5IwtrOJ_k5HS1S2Y,3140
28
28
  basilisk/draw/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
29
29
  basilisk/draw/draw.py,sha256=j6vMAww5RqU_4VM4UcgxXl7FASBPbxy1Dqr-2eLx2pY,3620
30
- basilisk/draw/draw_handler.py,sha256=O8PXvyDigDv_GBHARzLl7nbuu-gS18WP2-8vrg3a0Ds,6246
30
+ basilisk/draw/draw_handler.py,sha256=aoN0p2lQWUCRtn5M7dR2zwPqe03d0_Sm75BV64BNcSM,6283
31
31
  basilisk/draw/font_renderer.py,sha256=gyI59fW3DUswIcSg5VJLLcJti3OLTMdXNQrYJaw18dE,1092
32
32
  basilisk/generic/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
33
33
  basilisk/generic/abstract_bvh.py,sha256=iQ6HjcI8Msw34dZ3YuDAhWSqEc4NTBHAaGqAZZAoLL8,383
@@ -60,8 +60,8 @@ basilisk/nodes/helper.py,sha256=VdlGuEaMtLa992_8yNOB-QIgz4Izr5wNMSm8H6KftKE,2097
60
60
  basilisk/nodes/node.py,sha256=Bfi2OquiuSl_AJtQyXhwzkrE5ZO8FlIOBxuwD8h4No0,33619
61
61
  basilisk/nodes/node_handler.py,sha256=V8OYMuI7WkULuoprE8_mN2bCrkml_no8fJN2sNcXPGQ,4203
62
62
  basilisk/particles/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
63
- basilisk/particles/particle_handler.py,sha256=fFvvwtT-dw-Tst7Y6xLyjl2ljiP9u6T0ccNPZo3xy-8,2992
64
- basilisk/particles/particle_renderer.py,sha256=PEJ5qKCEPbPG__NSQcv2NKjTHtKviK5LqfCJS1vDbP8,3792
63
+ basilisk/particles/particle_handler.py,sha256=g35CwFRvYVT5mxssEKaj9PgkCErbfP7kDcsu4e_VyFI,2991
64
+ basilisk/particles/particle_renderer.py,sha256=GPC7txDpCP5cuRsrBvg-3xWNgof7vztfWuHwTtxzOfU,3794
65
65
  basilisk/physics/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
66
66
  basilisk/physics/impulse.py,sha256=zv6MoGTSlu8qVbsbe2QxERGeyQZYbtzR_WVSqVLsmhw,5873
67
67
  basilisk/physics/physics_body.py,sha256=_mi-AVMgQqUsC3bQIca5tgk2xWXTIUw0D_uC4DcQqqs,1508
@@ -72,7 +72,7 @@ basilisk/render/bloom.py,sha256=VX-8k1ySGNX8OCo-29ph4MPWPXYZuSPLrKwa3seaK98,4184
72
72
  basilisk/render/camera.py,sha256=Bzyqp1ESNqjTR03hZIhil7pU1In5JDz-7sCj1Pter-M,9909
73
73
  basilisk/render/chunk.py,sha256=yFAflMaiOKH3Fl7cBIm4RGtOhXwYyVIFTO4_UgBX9x8,2866
74
74
  basilisk/render/chunk_handler.py,sha256=zJPYv3vw6_mtYQ0fW46j87dGrZENMBcRuHFzFOxqY-Q,6572
75
- basilisk/render/frame.py,sha256=l8NwJdqSvfKxzS7Eb6pUh269UJlvR3HFVn3Mp7XtnEM,3486
75
+ basilisk/render/frame.py,sha256=_8G1nUlK7QmUoOHUrEAGp5qbXvN5Jot2osgUXJ15jpc,3556
76
76
  basilisk/render/framebuffer.py,sha256=3A7k9vhtInMNwrhY3l3DydjGhivLz9hH_DwNNFSpKOM,7209
77
77
  basilisk/render/image.py,sha256=r-khPFJkZS8D0n_I4HeKk72lzbHeEYEM0Cp-KuR22Jk,4104
78
78
  basilisk/render/image_handler.py,sha256=CJyel7POIserAoLQ8YCc3SY24zia2ry6P3wMNK0-Vms,4295
@@ -80,10 +80,11 @@ basilisk/render/light.py,sha256=hFqODv9iK4GEDZeDyBHxOWwwd4v8Pm089_xoScBMjVY,3879
80
80
  basilisk/render/light_handler.py,sha256=baJ1p0ob_5OK2Dyd5zZYcldAGWUyVlF21dp_Yfopyd8,2162
81
81
  basilisk/render/material.py,sha256=umGdE-wI8CEXTArPzZc5rmyHKendsQWkOkpb0l5B6m8,10304
82
82
  basilisk/render/material_handler.py,sha256=dXdJeH4h9m6dJRrAsm-aGDtNzlvDcAtdX3pEgKg4wzA,4198
83
- basilisk/render/post_process.py,sha256=w71zgvnc1VyQAK7xTAyEe1FsUBDzch_6TrkhxZ27MgA,5098
83
+ basilisk/render/post_process.py,sha256=RQCk8E0Xr4QUGDDYH-OfNQCDnjy6VTs_7YoniGGxIWU,5407
84
84
  basilisk/render/shader.py,sha256=jgVuFe4TjV6IMtEnVknYQ78RdKq8ZybDIFP9usNjgeY,4954
85
85
  basilisk/render/shader_handler.py,sha256=k3pbbBBUxDlgwD0c_dhtn2bOXQMMAKzeRiZxDvychgc,2931
86
86
  basilisk/render/sky.py,sha256=tu4ldzQpGjhS8SgooGo9lQZFNbog6-M43ju7vV95iE8,4888
87
+ basilisk/render/tempCodeRunnerFile.py,sha256=ep1eVZzUd30SDCNE5l3OJsqp2fW2LEXrjYGW31AMWgw,10
87
88
  basilisk/shaders/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
88
89
  basilisk/shaders/batch.frag,sha256=Iz0FugHCv8yjTZdTXBVTNqaSv1-YXB02Un2h1EMu2xA,9830
89
90
  basilisk/shaders/batch.vert,sha256=xh-9DWRVi5ySMl23vqSEueGDdz1K_2RT9CKMtlY-xmA,5672
@@ -96,15 +97,15 @@ basilisk/shaders/draw.vert,sha256=rMtpZFcF3Batup8xgAoJuxJhZ03c8DZ6uu7G5BdJe-A,62
96
97
  basilisk/shaders/filter.frag,sha256=m_egR4yiFRmIHGwCCfpcdvGXQi1w1Ago_iABlbnX80c,584
97
98
  basilisk/shaders/frame.frag,sha256=rs_AA1u7DL3CxtqpTqvhgQjYYthl_l_Dg7RXpU9_5Ks,160
98
99
  basilisk/shaders/frame.vert,sha256=KPB-Q3-Rix9-JxSj5tBHbZOu7QCdFgCzHwiZKEYIbFc,227
99
- basilisk/shaders/geometry.frag,sha256=Vh57G0r7Jj0uaTQEYuovZSgzOIJyZi-bzGvNsWZ--Oc,157
100
+ basilisk/shaders/geometry.frag,sha256=6Fcd1mMX5UAslw2GfREuA510UAAKrGdPYQHsaEDqLck,230
100
101
  basilisk/shaders/geometry.vert,sha256=2yPpezklovRQczpuf2pUhi4mMv3-YaOjDQCbrzdcdpk,1473
101
- basilisk/shaders/normal.frag,sha256=E6EwJUf76VCT8B_huuLfHRVRF7PkWxG1YGjdWh6sC44,1333
102
+ basilisk/shaders/normal.frag,sha256=I1kU5-u_UeDJJJZLuSU6Dl-9oYmzP040_SLqbGFHWw8,1408
102
103
  basilisk/shaders/normal.vert,sha256=4BlcNsIw3fQFsZlfF7VZr6EAV2Y-M-72tXhfaE0uReM,3320
103
- basilisk/shaders/particle.frag,sha256=Cv8cWQpVVQvhZeWj3NqL0D5nLtSO3EWV0VzOU-ZVL4Y,1816
104
- basilisk/shaders/particle.vert,sha256=ElXzT7ywiZ0SjrFcUistVDBi4wOobQ7_J5O7XVxrsVs,3027
104
+ basilisk/shaders/particle.frag,sha256=XZurKUl0oK9sfXXTa1-6rsGS7qBsuQSKajKN4tbMFaY,1960
105
+ basilisk/shaders/particle.vert,sha256=NbA_WKpxx1IAQt5wso5dZAZRqwVlejPjNdFg_GeJXEE,3313
105
106
  basilisk/shaders/sky.frag,sha256=Fr9SQHPKPV9a1mgSeprSiOaFjPrQX9qqZu3Uc_fQT0c,579
106
107
  basilisk/shaders/sky.vert,sha256=v_BSdnMiljSJGPqno-J_apAiom38IrBzbDoxM7pIgwI,345
107
- basilisk_engine-0.1.36.dist-info/METADATA,sha256=sbqmClimB7n89iktI5jnAQwPiC-exqTsSeiqKWtuz50,3882
108
- basilisk_engine-0.1.36.dist-info/WHEEL,sha256=52BFRY2Up02UkjOa29eZOS2VxUrpPORXg1pkohGGUS8,91
109
- basilisk_engine-0.1.36.dist-info/top_level.txt,sha256=enlSYSf7CUyAly1jmUCNNGInTbaFUjGk4SKwyckZQkw,9
110
- basilisk_engine-0.1.36.dist-info/RECORD,,
108
+ basilisk_engine-0.1.38.dist-info/METADATA,sha256=irGGvAh5prOpzl05k8k0_ScC3LpkrK-6xqF_EzOGhW4,3882
109
+ basilisk_engine-0.1.38.dist-info/WHEEL,sha256=52BFRY2Up02UkjOa29eZOS2VxUrpPORXg1pkohGGUS8,91
110
+ basilisk_engine-0.1.38.dist-info/top_level.txt,sha256=enlSYSf7CUyAly1jmUCNNGInTbaFUjGk4SKwyckZQkw,9
111
+ basilisk_engine-0.1.38.dist-info/RECORD,,