basilisk-engine 0.0.1__py3-none-any.whl → 0.0.2__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.

Files changed (62) hide show
  1. basilisk/bsk_assets/__init__.py +0 -0
  2. basilisk/collisions/__init__.py +0 -0
  3. basilisk/collisions/broad/__init__.py +0 -0
  4. basilisk/collisions/broad/broad_aabb.py +96 -0
  5. basilisk/collisions/broad/broad_bvh.py +102 -0
  6. basilisk/collisions/collider.py +75 -0
  7. basilisk/collisions/collider_handler.py +163 -0
  8. basilisk/collisions/narrow/__init__.py +0 -0
  9. basilisk/collisions/narrow/epa.py +86 -0
  10. basilisk/collisions/narrow/gjk.py +66 -0
  11. basilisk/collisions/narrow/helper.py +23 -0
  12. basilisk/draw/__init__.py +0 -0
  13. basilisk/draw/draw.py +101 -0
  14. basilisk/draw/draw_handler.py +208 -0
  15. basilisk/draw/font_renderer.py +28 -0
  16. basilisk/generic/__init__.py +0 -0
  17. basilisk/generic/abstract_bvh.py +16 -0
  18. basilisk/generic/collisions.py +26 -0
  19. basilisk/generic/input_validation.py +28 -0
  20. basilisk/generic/math.py +7 -0
  21. basilisk/generic/matrices.py +34 -0
  22. basilisk/generic/meshes.py +73 -0
  23. basilisk/generic/quat.py +119 -0
  24. basilisk/generic/quat_methods.py +8 -0
  25. basilisk/generic/vec3.py +112 -0
  26. basilisk/input/__init__.py +1 -0
  27. basilisk/input/mouse.py +60 -0
  28. basilisk/mesh/__init__.py +0 -0
  29. basilisk/mesh/built-in/__init__.py +0 -0
  30. basilisk/mesh/cube.py +20 -0
  31. basilisk/mesh/mesh.py +216 -0
  32. basilisk/mesh/mesh_from_data.py +48 -0
  33. basilisk/mesh/model.py +272 -0
  34. basilisk/mesh/narrow_aabb.py +81 -0
  35. basilisk/mesh/narrow_bvh.py +84 -0
  36. basilisk/mesh/narrow_primative.py +24 -0
  37. basilisk/nodes/__init__.py +0 -0
  38. basilisk/nodes/node.py +508 -0
  39. basilisk/nodes/node_handler.py +94 -0
  40. basilisk/physics/__init__.py +0 -0
  41. basilisk/physics/physics_body.py +36 -0
  42. basilisk/physics/physics_engine.py +37 -0
  43. basilisk/render/__init__.py +0 -0
  44. basilisk/render/batch.py +85 -0
  45. basilisk/render/camera.py +166 -0
  46. basilisk/render/chunk.py +85 -0
  47. basilisk/render/chunk_handler.py +139 -0
  48. basilisk/render/frame.py +182 -0
  49. basilisk/render/image.py +76 -0
  50. basilisk/render/image_handler.py +119 -0
  51. basilisk/render/light.py +97 -0
  52. basilisk/render/light_handler.py +54 -0
  53. basilisk/render/material.py +196 -0
  54. basilisk/render/material_handler.py +123 -0
  55. basilisk/render/shader_handler.py +95 -0
  56. basilisk/render/sky.py +118 -0
  57. basilisk/shaders/__init__.py +0 -0
  58. {basilisk_engine-0.0.1.dist-info → basilisk_engine-0.0.2.dist-info}/METADATA +1 -1
  59. basilisk_engine-0.0.2.dist-info/RECORD +65 -0
  60. basilisk_engine-0.0.1.dist-info/RECORD +0 -8
  61. {basilisk_engine-0.0.1.dist-info → basilisk_engine-0.0.2.dist-info}/WHEEL +0 -0
  62. {basilisk_engine-0.0.1.dist-info → basilisk_engine-0.0.2.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,95 @@
1
+ import moderngl as mgl
2
+ import glm
3
+
4
+ # Predefined uniforms that do not change each frame
5
+ single_frame_uniforms = ['m_proj']
6
+
7
+
8
+ class ShaderHandler:
9
+ engine: ...
10
+ """Back reference to the parent engine"""
11
+ scene: ...
12
+ """Back reference to the parent scene"""
13
+ ctx: mgl.Context
14
+ """Back reference to the parent context"""
15
+ programs: dict = {}
16
+ """Dictionary containing all the shaders"""
17
+ shader_uniforms: dict = {}
18
+ """Dictionary all the uniforms present in a shader"""
19
+ uniform_values: dict = {}
20
+ """Dictionary containing uniform values"""
21
+
22
+ def __init__(self, scene) -> None:
23
+ """
24
+ Handles all the shader programs in a basilisk scene
25
+ """
26
+
27
+ # Back references
28
+ self.scene = scene
29
+ self.engine = scene.engine
30
+ self.ctx = scene.engine.ctx
31
+
32
+ # Initalize dictionaries
33
+ self.programs = {}
34
+ self.shader_uniforms = {}
35
+
36
+ self.load('batch', self.engine.root + '/shaders/batch.vert', self.engine.root + '/shaders/batch.frag')
37
+ self.load('draw', self.engine.root + '/shaders/draw.vert', self.engine.root + '/shaders/draw.frag')
38
+ self.load('sky', self.engine.root + '/shaders/sky.vert', self.engine.root + '/shaders/sky.frag')
39
+
40
+ def load(self, name: str, vert_path: str, frag_path: str) -> None:
41
+ """
42
+ Creates a shader program from a file name.
43
+ Parses through shaders to identify uniforms and save for writting
44
+ """
45
+
46
+ # Read the shaders
47
+ with open(vert_path) as file:
48
+ vertex_shader = file.read()
49
+ with open(frag_path) as file:
50
+ fragment_shader = file.read()
51
+
52
+ # Create blank list for uniforms
53
+ self.shader_uniforms[name] = []
54
+ # Create a list of all lines in both shaders
55
+ lines = f'{vertex_shader}\n{fragment_shader}'.split('\n')
56
+ # Parse through shader to find uniform variables
57
+ for line in lines:
58
+ tokens = line.strip().split(' ')
59
+ if tokens[0] == 'uniform' and len(tokens) > 2:
60
+ self.shader_uniforms[name].append(tokens[2][:-1])
61
+
62
+ # Create a program with shaders
63
+ program = self.ctx.program(vertex_shader=vertex_shader, fragment_shader=fragment_shader)
64
+ self.programs[name] = program
65
+
66
+ def get_uniforms_values(self) -> None:
67
+ """
68
+ Gets uniforms from various parts of the scene.
69
+ These values are stored and used in write_all_uniforms and update_uniforms.
70
+ This is called by write_all_uniforms and update_uniforms, so there is no need to call this manually.
71
+ """
72
+
73
+ self.uniform_values = {
74
+ 'projectionMatrix' : self.scene.camera.m_proj,
75
+ 'viewMatrix' : self.scene.camera.m_view,
76
+ 'cameraPosition' : self.scene.camera.position,
77
+ }
78
+
79
+ def write(self) -> None:
80
+ """
81
+ Writes all of the uniforms in every shader program.
82
+ """
83
+
84
+ self.get_uniforms_values()
85
+ for uniform in self.uniform_values:
86
+ for program in self.programs:
87
+ if not uniform in self.shader_uniforms[program]: continue # Does not write uniforms not in the shader
88
+ self.programs[program][uniform].write(self.uniform_values[uniform])
89
+
90
+ def release(self) -> None:
91
+ """
92
+ Releases all shader programs in handler
93
+ """
94
+
95
+ [program.release() for program in self.programs.values()]
basilisk/render/sky.py ADDED
@@ -0,0 +1,118 @@
1
+ import numpy as np
2
+ from PIL import Image as PIL_Image
3
+
4
+ class Sky:
5
+ texture_cube=None
6
+ vbo = None
7
+ vao = None
8
+ def __init__(self, engine, sky_texture: str | list=None):
9
+ """
10
+ Handler for all skybox rendering
11
+ """
12
+
13
+ self.scene = engine.scene
14
+ self.ctx = engine.ctx
15
+
16
+ if not sky_texture: sky_texture = engine.root + '/bsk_assets/skybox.png'
17
+
18
+ self.set_renderer()
19
+ self.set_texture(sky_texture)
20
+
21
+ def render(self):
22
+ """
23
+ Render the skybox to current render destination
24
+ """
25
+ self.vao.render()
26
+
27
+ def write(self):
28
+ # Write the texture cube to the sky shader
29
+ self.program['skyboxTexture'] = 8
30
+ self.texture_cube.use(location = 8)
31
+
32
+ batch_program = self.scene.shader_handler.programs['batch']
33
+ batch_program['skyboxTexture'] = 8
34
+ self.texture_cube.use(location = 8)
35
+
36
+
37
+ def set_texture(self, skybox_images: list):
38
+ """
39
+ Sets the skybox texture. Can either be set with 6 images for each skybox side or a single skybox image.
40
+ List items should be string paths.
41
+ The six images should be should be in the following order: right, left, top, bottom, front, back
42
+ """
43
+
44
+ # Release any existing memory
45
+ if self.texture_cube: self.texture_cube.release()
46
+
47
+ # Function-Scoped data
48
+ images = None
49
+
50
+ # Given a sinlge image for the skybox
51
+ if isinstance(skybox_images, str) or ((isinstance(skybox_images, list) or isinstance(skybox_images, tuple)) and len(skybox_images) == 1):
52
+ path = skybox_images if isinstance(skybox_images, str) else skybox_images[0]
53
+
54
+ # Verify the path type
55
+ if not isinstance(path, str): raise ValueError(f"Skybox: Invalid image path type {type(path)}")
56
+
57
+ image = PIL_Image.open(path).convert('RGB')
58
+ width, height = image.size[0] // 4, image.size[1] // 3
59
+
60
+ images = [image.crop((x * width, y * height, (x + 1) * width, (y + 1) * height)) for x, y in [(2, 1), (0, 1), (1, 0), (1, 2), (1, 1), (3, 1)]]
61
+
62
+ # Given a list of images for the skybox
63
+ elif isinstance(skybox_images, list) or isinstance(skybox_images, tuple):
64
+ # Verify the correct number of images was given
65
+ if len(skybox_images) != 6: raise ValueError("Skybox: Invalid number of images for skybox. Expected 1 or 6")
66
+ # Verify the all image path types
67
+ if not all([isinstance(path, str) for path in skybox_images]): raise ValueError(f"Skybox: Invalid image path type {type(path)}")
68
+
69
+ images = [PIL_Image.open(path).convert('RGB') for path in skybox_images]
70
+
71
+ else:
72
+ raise ValueError(f"Skybox: Invalid skybox type {type(skybox_images)}. Expected list of string paths or a single image")
73
+
74
+ # Create a texture map from the images
75
+ size = min(images[0].size)
76
+ size = (size, size)
77
+ images = [img.resize(size) for img in images]
78
+ images = [img.tobytes() for img in images]
79
+ self.texture_cube = self.ctx.texture_cube(size=size, components=3, data=None)
80
+ for i, data in enumerate(images):
81
+ self.texture_cube.write(face=i, data=data)
82
+
83
+ def set_renderer(self):
84
+ """
85
+
86
+ """
87
+
88
+ # Release any existing memory
89
+ if self.vbo: self.vbo.release()
90
+ if self.vao: self.vao.release()
91
+
92
+ # Get the cube vertex data
93
+ vertices = [(-1, -1, 1), ( 1, -1, 1), (1, 1, 1), (-1, 1, 1),
94
+ (-1, 1, -1), (-1, -1, -1), (1, -1, -1), ( 1, 1, -1)]
95
+
96
+ indices = [(0, 2, 3), (0, 1, 2),
97
+ (1, 7, 2), (1, 6, 7),
98
+ (6, 5, 4), (4, 7, 6),
99
+ (3, 4, 5), (3, 5, 0),
100
+ (3, 7, 4), (3, 2, 7),
101
+ (0, 6, 1), (0, 5, 6)]
102
+
103
+ vertex_data = np.array([vertices[ind] for trigangle in indices for ind in trigangle], dtype='f4')
104
+ vertex_data = np.flip(vertex_data, 1).copy(order='C')
105
+
106
+ # Create a renderable vao
107
+ self.vbo = self.ctx.buffer(vertex_data)
108
+ self.program = self.scene.shader_handler.programs['sky']
109
+ self.vao = self.ctx.vertex_array(self.program, [(self.vbo, '3f', 'in_position')], skip_errors=True)
110
+
111
+ def __del__(self):
112
+ """
113
+ Releases all data used by the skybox
114
+ """
115
+
116
+ if self.texture_cube: self.texture_cube.release()
117
+ if self.vbo: self.vbo.release()
118
+ if self.vao: self.vao.release()
File without changes
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: basilisk-engine
3
- Version: 0.0.1
3
+ Version: 0.0.2
4
4
  Summary: Python 3D Framework
5
5
  Home-page: https://basilisk-website.vercel.app/
6
6
  Author: Name
@@ -0,0 +1,65 @@
1
+ basilisk/__init__.py,sha256=hJVKd8NebPIdDzhfRMZsOElR5w2wGkrsW7WJqb0tpB0,368
2
+ basilisk/config.py,sha256=ynTRlX633DGoEtZOeAK8KNJF6offV3k3XFD7cia3Keg,61
3
+ basilisk/engine.py,sha256=R1COiHLHNgsfIJ72U_XxAR2oftBRsVYyYOrVqTr48Xc,5709
4
+ basilisk/scene.py,sha256=ow3w2ZouBdn7E1xw39-aMu7_gbsnDxzeNi1mqbYqa-M,4452
5
+ basilisk/bsk_assets/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
6
+ basilisk/collisions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
7
+ basilisk/collisions/collider.py,sha256=wGOZOaHD2cOerbPsJDQ61Zt0EfvjBLOOZoClbBfQOCk,3477
8
+ basilisk/collisions/collider_handler.py,sha256=TquzaPW0WRIlUsjh_ClpF4hNuVnCnP_A2hGFsK3yOd4,7318
9
+ basilisk/collisions/broad/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
10
+ basilisk/collisions/broad/broad_aabb.py,sha256=4__sd6CoIE6_Vk18X60loPTPH8YqD6fBBXLJraGOqqk,4194
11
+ basilisk/collisions/broad/broad_bvh.py,sha256=ZidQcGWrdIsz8T4Nbt6T-V0Tjd_XeqHamsFaYAXmUCA,3739
12
+ basilisk/collisions/narrow/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
13
+ basilisk/collisions/narrow/epa.py,sha256=YTfdR9ToHEDCIYXsWaNexpYDVhYeu04fQSVCr_ffBv4,4410
14
+ basilisk/collisions/narrow/gjk.py,sha256=iqGfqN7Yxgl_vPfR3DkTUyAvFS0ydZeunTxZSz5IIDc,3056
15
+ basilisk/collisions/narrow/helper.py,sha256=gTnyiyYLfTaRWYXi8EMUHvxN-sLbOf1esTLC69mG1UU,895
16
+ basilisk/draw/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
17
+ basilisk/draw/draw.py,sha256=S1eMkuOiM2M0GQTxb1LgFMX7OCDn3YsUCkNc6-t-ClU,3631
18
+ basilisk/draw/draw_handler.py,sha256=5NYo6gMAY4drl00jp-_J6ul9yLyzFVzVJoxgXm5oLqo,7479
19
+ basilisk/draw/font_renderer.py,sha256=xM17puuAUOvRacDrciS9g_gKkOZkX_b-_rZHQn-i0Ao,1086
20
+ basilisk/generic/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
21
+ basilisk/generic/abstract_bvh.py,sha256=iQ6HjcI8Msw34dZ3YuDAhWSqEc4NTBHAaGqAZZAoLL8,383
22
+ basilisk/generic/collisions.py,sha256=usdbNidhDOn_JBXnA58iNvdCfQEetmoMoAT5R9_Y28w,930
23
+ basilisk/generic/input_validation.py,sha256=-N2q1S1MMsrwBR9617waBe2VTVx4G3hkfVrN7bVB60o,1325
24
+ basilisk/generic/math.py,sha256=_MfMdu1t0JIdGplGnU9_Tj4ECuxhSNmauLg8zw1zcNs,176
25
+ basilisk/generic/matrices.py,sha256=NNvD0m6Y8lZLa5m6TeXI9k_pMJH0Bo2recL8eVqKjvo,1254
26
+ basilisk/generic/meshes.py,sha256=0Zq5EkWEtqz-2V-kEQt-R3JZvUS5RTqflih8Mj9vL4o,2639
27
+ basilisk/generic/quat.py,sha256=u8vqFWCVouKPJCi79fhWhRvqHoKduqUwgYs10-C4WvQ,4625
28
+ basilisk/generic/quat_methods.py,sha256=FFqS2Iy1OLH6oJf1elhH9RbWiE_KMXe5eO95ayrEhbc,241
29
+ basilisk/generic/vec3.py,sha256=jlCbRJUejnmQerEaiyOBki0uKh37pUzV6whcqtEnmBg,4394
30
+ basilisk/input/__init__.py,sha256=gZNSeo1hVcucAob7E3NmKyhxCUCnU7wFGzoQsexAy0M,7
31
+ basilisk/input/mouse.py,sha256=H5evv3K7ibCSFy2N3A7KWvlfTXKJxvqCsAua0n5x0co,1900
32
+ basilisk/mesh/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
33
+ basilisk/mesh/cube.py,sha256=tlOnYpT7XUWrKs-T0gt-LkKLUez5JTr8I-_SVW9Pqr4,730
34
+ basilisk/mesh/mesh.py,sha256=pnSxWNK6_RqwYS-Nygj53v4O9uW5g-ZngJ2ynelZRbo,9297
35
+ basilisk/mesh/mesh_from_data.py,sha256=KC-5u0x5jrY8PyXLyRUo-OPZYe4uLtnPHmWqETkmQ3E,1538
36
+ basilisk/mesh/model.py,sha256=uVnYm_XYSoZslNWmOego59Ku-gqKxZHpta_dHi65X1s,11993
37
+ basilisk/mesh/narrow_aabb.py,sha256=gPsZ6f-W-wiHJbQhthit23N_Nh6PWJTil-jWCl35xzg,3303
38
+ basilisk/mesh/narrow_bvh.py,sha256=a2fqUn_EDweEy_6QyhmPdkGjgPRodYorMuI2rC5VE9g,3921
39
+ basilisk/mesh/narrow_primative.py,sha256=vWpIeo8I9le-EAvcr9rFUQlbl9mi6eYroqCSMK-m9eY,953
40
+ basilisk/mesh/built-in/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
41
+ basilisk/nodes/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
42
+ basilisk/nodes/node.py,sha256=d2BtVMsnuuAwbkley7VI2U3FWFFNDnkcB4ppvtakmoE,23285
43
+ basilisk/nodes/node_handler.py,sha256=_-wL6Cj7nqkkTpB5bPEmXquD7wkpvt8Bs73Sq-p5uy4,3214
44
+ basilisk/physics/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
45
+ basilisk/physics/physics_body.py,sha256=9Tau3y_vdI2-z-BE85zrEHty8yfeGfZWEZBSteWUv74,1316
46
+ basilisk/physics/physics_engine.py,sha256=OsGPn6Qe3-vgmFqeW57NC2JqlkuIGHu2hrDPaKM1UPw,1767
47
+ basilisk/render/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
48
+ basilisk/render/batch.py,sha256=YGhmTIY3SHWft6ESuFJc1WluZNh8_w2TMNdRK6wTJjM,2950
49
+ basilisk/render/camera.py,sha256=nTlp48fhtSo9cc0dLIwPyx6lW3o595FhZM2r1iBCjEQ,6056
50
+ basilisk/render/chunk.py,sha256=hU1xjy_ibQO40YDeWULNMofLsI4EfOYGmtxN6FqhwfE,2246
51
+ basilisk/render/chunk_handler.py,sha256=2ZsUiLw9SA_YzBQXtTZMMQ6-Lc1oJVo_VENZDWXXHh0,5652
52
+ basilisk/render/frame.py,sha256=kJVl0meCYm56CrU-RpAxt4mOpZaqf05eksQ_i5RH78w,6706
53
+ basilisk/render/image.py,sha256=27Jg8LuLjJ-NhSgbueFHc8RC8WmTOJOf2R6k1SLzI6I,2628
54
+ basilisk/render/image_handler.py,sha256=giebUrgf9OpJ0vwljyJe1YdDtmB5oUisYmCL-t0kIRY,4119
55
+ basilisk/render/light.py,sha256=hFqODv9iK4GEDZeDyBHxOWwwd4v8Pm089_xoScBMjVY,3879
56
+ basilisk/render/light_handler.py,sha256=-3VgtRB6PoDy4m9AY-Grit5KYNVG3WAwaDrOcKR3TZg,1910
57
+ basilisk/render/material.py,sha256=Tl8ya67NOMhzx9Lyp9hnxGP9Pr83OF_5a5fO3YWugRs,8397
58
+ basilisk/render/material_handler.py,sha256=pYgDBFFJw9TASVBQ33F4eO7SEh4vpVIHIDoVfBOTTdI,3928
59
+ basilisk/render/shader_handler.py,sha256=DBpW_Dx4GAaR_YHAslu4ZuXk35mL4iZaEIGMCpBQX7U,3557
60
+ basilisk/render/sky.py,sha256=aYC8W_RehC084OcJK22HQnViu_wFPWqHv8lMzSwBJMw,4725
61
+ basilisk/shaders/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
62
+ basilisk_engine-0.0.2.dist-info/METADATA,sha256=H0OcTPdqW78RzOnfaJaF7KxWnKwSXCH2HC9BX1xrsxk,1118
63
+ basilisk_engine-0.0.2.dist-info/WHEEL,sha256=OVMc5UfuAQiSplgO0_WdW7vXVGAt9Hdd6qtN4HotdyA,91
64
+ basilisk_engine-0.0.2.dist-info/top_level.txt,sha256=enlSYSf7CUyAly1jmUCNNGInTbaFUjGk4SKwyckZQkw,9
65
+ basilisk_engine-0.0.2.dist-info/RECORD,,
@@ -1,8 +0,0 @@
1
- basilisk/__init__.py,sha256=hJVKd8NebPIdDzhfRMZsOElR5w2wGkrsW7WJqb0tpB0,368
2
- basilisk/config.py,sha256=ynTRlX633DGoEtZOeAK8KNJF6offV3k3XFD7cia3Keg,61
3
- basilisk/engine.py,sha256=R1COiHLHNgsfIJ72U_XxAR2oftBRsVYyYOrVqTr48Xc,5709
4
- basilisk/scene.py,sha256=ow3w2ZouBdn7E1xw39-aMu7_gbsnDxzeNi1mqbYqa-M,4452
5
- basilisk_engine-0.0.1.dist-info/METADATA,sha256=HFZUa45YFHSowm4nExijxFuTmQMU6JioaHB4Js201OY,1118
6
- basilisk_engine-0.0.1.dist-info/WHEEL,sha256=OVMc5UfuAQiSplgO0_WdW7vXVGAt9Hdd6qtN4HotdyA,91
7
- basilisk_engine-0.0.1.dist-info/top_level.txt,sha256=enlSYSf7CUyAly1jmUCNNGInTbaFUjGk4SKwyckZQkw,9
8
- basilisk_engine-0.0.1.dist-info/RECORD,,