aether-engine 1.3.0__tar.gz → 1.3.1__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.
- {aether_engine-1.3.0/aether_engine.egg-info → aether_engine-1.3.1}/PKG-INFO +4 -4
- {aether_engine-1.3.0 → aether_engine-1.3.1}/aether/__init__.py +1 -1
- {aether_engine-1.3.0 → aether_engine-1.3.1}/aether/core/_identity.py +1 -1
- {aether_engine-1.3.0 → aether_engine-1.3.1}/aether/resources/serialization.py +19 -9
- {aether_engine-1.3.0 → aether_engine-1.3.1/aether_engine.egg-info}/PKG-INFO +4 -4
- {aether_engine-1.3.0 → aether_engine-1.3.1}/setup.py +21 -5
- {aether_engine-1.3.0 → aether_engine-1.3.1}/LICENSE +0 -0
- {aether_engine-1.3.0 → aether_engine-1.3.1}/MANIFEST.in +0 -0
- {aether_engine-1.3.0 → aether_engine-1.3.1}/README.md +0 -0
- {aether_engine-1.3.0 → aether_engine-1.3.1}/aether/ai/behavior_tree.py +0 -0
- {aether_engine-1.3.0 → aether_engine-1.3.1}/aether/ai/navmesh.py +0 -0
- {aether_engine-1.3.0 → aether_engine-1.3.1}/aether/animation/skeleton.py +0 -0
- {aether_engine-1.3.0 → aether_engine-1.3.1}/aether/assets/asset_pipeline.py +0 -0
- {aether_engine-1.3.0 → aether_engine-1.3.1}/aether/audio/__init__.py +0 -0
- {aether_engine-1.3.0 → aether_engine-1.3.1}/aether/audio/audio_manager.py +0 -0
- {aether_engine-1.3.0 → aether_engine-1.3.1}/aether/audio/music.py +0 -0
- {aether_engine-1.3.0 → aether_engine-1.3.1}/aether/audio/sfx.py +0 -0
- {aether_engine-1.3.0 → aether_engine-1.3.1}/aether/audio/sound.py +0 -0
- {aether_engine-1.3.0 → aether_engine-1.3.1}/aether/core/__init__.py +0 -0
- {aether_engine-1.3.0 → aether_engine-1.3.1}/aether/core/achievement_system.py +0 -0
- {aether_engine-1.3.0 → aether_engine-1.3.1}/aether/core/application.py +0 -0
- {aether_engine-1.3.0 → aether_engine-1.3.1}/aether/core/boot_splash.py +0 -0
- {aether_engine-1.3.0 → aether_engine-1.3.1}/aether/core/branding_guard.py +0 -0
- {aether_engine-1.3.0 → aether_engine-1.3.1}/aether/core/config.py +0 -0
- {aether_engine-1.3.0 → aether_engine-1.3.1}/aether/core/console.py +0 -0
- {aether_engine-1.3.0 → aether_engine-1.3.1}/aether/core/engine.py +0 -0
- {aether_engine-1.3.0 → aether_engine-1.3.1}/aether/core/event_bus.py +0 -0
- {aether_engine-1.3.0 → aether_engine-1.3.1}/aether/core/input.py +0 -0
- {aether_engine-1.3.0 → aether_engine-1.3.1}/aether/core/plugin_system.py +0 -0
- {aether_engine-1.3.0 → aether_engine-1.3.1}/aether/core/save_system.py +0 -0
- {aether_engine-1.3.0 → aether_engine-1.3.1}/aether/core/time_manager.py +0 -0
- {aether_engine-1.3.0 → aether_engine-1.3.1}/aether/core/window.py +0 -0
- {aether_engine-1.3.0 → aether_engine-1.3.1}/aether/editor/__init__.py +0 -0
- {aether_engine-1.3.0 → aether_engine-1.3.1}/aether/editor/__main__.py +0 -0
- {aether_engine-1.3.0 → aether_engine-1.3.1}/aether/editor/gizmo.py +0 -0
- {aether_engine-1.3.0 → aether_engine-1.3.1}/aether/editor/imgui_integration.py +0 -0
- {aether_engine-1.3.0 → aether_engine-1.3.1}/aether/editor/model_editor.py +0 -0
- {aether_engine-1.3.0 → aether_engine-1.3.1}/aether/environment/environment_system.py +0 -0
- {aether_engine-1.3.0 → aether_engine-1.3.1}/aether/graphics/__init__.py +0 -0
- {aether_engine-1.3.0 → aether_engine-1.3.1}/aether/graphics/camera.py +0 -0
- {aether_engine-1.3.0 → aether_engine-1.3.1}/aether/graphics/first_person.py +0 -0
- {aether_engine-1.3.0 → aether_engine-1.3.1}/aether/graphics/framebuffer.py +0 -0
- {aether_engine-1.3.0 → aether_engine-1.3.1}/aether/graphics/light.py +0 -0
- {aether_engine-1.3.0 → aether_engine-1.3.1}/aether/graphics/lod_system.py +0 -0
- {aether_engine-1.3.0 → aether_engine-1.3.1}/aether/graphics/material.py +0 -0
- {aether_engine-1.3.0 → aether_engine-1.3.1}/aether/graphics/mesh.py +0 -0
- {aether_engine-1.3.0 → aether_engine-1.3.1}/aether/graphics/mesh_factory.py +0 -0
- {aether_engine-1.3.0 → aether_engine-1.3.1}/aether/graphics/particle_system.py +0 -0
- {aether_engine-1.3.0 → aether_engine-1.3.1}/aether/graphics/post_process.py +0 -0
- {aether_engine-1.3.0 → aether_engine-1.3.1}/aether/graphics/renderer.py +0 -0
- {aether_engine-1.3.0 → aether_engine-1.3.1}/aether/graphics/shader.py +0 -0
- {aether_engine-1.3.0 → aether_engine-1.3.1}/aether/graphics/shader_library.py +0 -0
- {aether_engine-1.3.0 → aether_engine-1.3.1}/aether/graphics/sky_atmosphere.py +0 -0
- {aether_engine-1.3.0 → aether_engine-1.3.1}/aether/graphics/terrain.py +0 -0
- {aether_engine-1.3.0 → aether_engine-1.3.1}/aether/graphics/texture.py +0 -0
- {aether_engine-1.3.0 → aether_engine-1.3.1}/aether/graphics/water.py +0 -0
- {aether_engine-1.3.0 → aether_engine-1.3.1}/aether/graphics2d/__init__.py +0 -0
- {aether_engine-1.3.0 → aether_engine-1.3.1}/aether/network/network_manager.py +0 -0
- {aether_engine-1.3.0 → aether_engine-1.3.1}/aether/physics/__init__.py +0 -0
- {aether_engine-1.3.0 → aether_engine-1.3.1}/aether/physics/bullet_backend.py +0 -0
- {aether_engine-1.3.0 → aether_engine-1.3.1}/aether/physics/collider.py +0 -0
- {aether_engine-1.3.0 → aether_engine-1.3.1}/aether/physics/physics2d.py +0 -0
- {aether_engine-1.3.0 → aether_engine-1.3.1}/aether/physics/physics3d.py +0 -0
- {aether_engine-1.3.0 → aether_engine-1.3.1}/aether/physics/physics_world.py +0 -0
- {aether_engine-1.3.0 → aether_engine-1.3.1}/aether/physics/raycast.py +0 -0
- {aether_engine-1.3.0 → aether_engine-1.3.1}/aether/physics/rigidbody.py +0 -0
- {aether_engine-1.3.0 → aether_engine-1.3.1}/aether/platform/steam_api.py +0 -0
- {aether_engine-1.3.0 → aether_engine-1.3.1}/aether/resources/__init__.py +0 -0
- {aether_engine-1.3.0 → aether_engine-1.3.1}/aether/resources/asset_database.py +0 -0
- {aether_engine-1.3.0 → aether_engine-1.3.1}/aether/resources/loaders/model_loader.py +0 -0
- {aether_engine-1.3.0 → aether_engine-1.3.1}/aether/resources/loaders/obj_loader.py +0 -0
- {aether_engine-1.3.0 → aether_engine-1.3.1}/aether/resources/loaders/texture_loader.py +0 -0
- {aether_engine-1.3.0 → aether_engine-1.3.1}/aether/resources/resource_manager.py +0 -0
- {aether_engine-1.3.0 → aether_engine-1.3.1}/aether/resources/save_load.py +0 -0
- {aether_engine-1.3.0 → aether_engine-1.3.1}/aether/scene/__init__.py +0 -0
- {aether_engine-1.3.0 → aether_engine-1.3.1}/aether/scene/component.py +0 -0
- {aether_engine-1.3.0 → aether_engine-1.3.1}/aether/scene/entity.py +0 -0
- {aether_engine-1.3.0 → aether_engine-1.3.1}/aether/scene/scene.py +0 -0
- {aether_engine-1.3.0 → aether_engine-1.3.1}/aether/scene/scene_graph.py +0 -0
- {aether_engine-1.3.0 → aether_engine-1.3.1}/aether/scene/scene_manager.py +0 -0
- {aether_engine-1.3.0 → aether_engine-1.3.1}/aether/ui/__init__.py +0 -0
- {aether_engine-1.3.0 → aether_engine-1.3.1}/aether/ui/button.py +0 -0
- {aether_engine-1.3.0 → aether_engine-1.3.1}/aether/ui/canvas.py +0 -0
- {aether_engine-1.3.0 → aether_engine-1.3.1}/aether/ui/hud.py +0 -0
- {aether_engine-1.3.0 → aether_engine-1.3.1}/aether/ui/text.py +0 -0
- {aether_engine-1.3.0 → aether_engine-1.3.1}/aether/utils/__init__.py +0 -0
- {aether_engine-1.3.0 → aether_engine-1.3.1}/aether/utils/fonts.py +0 -0
- {aether_engine-1.3.0 → aether_engine-1.3.1}/aether/utils/logger.py +0 -0
- {aether_engine-1.3.0 → aether_engine-1.3.1}/aether/utils/math_utils.py +0 -0
- {aether_engine-1.3.0 → aether_engine-1.3.1}/aether/utils/object_pool.py +0 -0
- {aether_engine-1.3.0 → aether_engine-1.3.1}/aether/utils/profiler.py +0 -0
- {aether_engine-1.3.0 → aether_engine-1.3.1}/aether_engine.egg-info/SOURCES.txt +0 -0
- {aether_engine-1.3.0 → aether_engine-1.3.1}/aether_engine.egg-info/dependency_links.txt +0 -0
- {aether_engine-1.3.0 → aether_engine-1.3.1}/aether_engine.egg-info/entry_points.txt +0 -0
- {aether_engine-1.3.0 → aether_engine-1.3.1}/aether_engine.egg-info/requires.txt +3 -3
- {aether_engine-1.3.0 → aether_engine-1.3.1}/aether_engine.egg-info/top_level.txt +0 -0
- {aether_engine-1.3.0 → aether_engine-1.3.1}/examples/01_hello_cube.py +0 -0
- {aether_engine-1.3.0 → aether_engine-1.3.1}/examples/02_sphere_scene.py +0 -0
- {aether_engine-1.3.0 → aether_engine-1.3.1}/examples/03_first_person.py +0 -0
- {aether_engine-1.3.0 → aether_engine-1.3.1}/examples/04_physics2d.py +0 -0
- {aether_engine-1.3.0 → aether_engine-1.3.1}/pyproject.toml +0 -0
- {aether_engine-1.3.0 → aether_engine-1.3.1}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: aether-engine
|
|
3
|
-
Version: 1.3.
|
|
3
|
+
Version: 1.3.1
|
|
4
4
|
Summary: 3D/2D game engine by entiti937 — OpenGL, physics, FPS, mandatory branding splash
|
|
5
5
|
Home-page: https://pypi.org/project/aether-engine/
|
|
6
6
|
Author: entiti937
|
|
@@ -29,12 +29,12 @@ Requires-Dist: pymunk>=6.0; extra == "physics"
|
|
|
29
29
|
Provides-Extra: models
|
|
30
30
|
Requires-Dist: trimesh>=3.21; extra == "models"
|
|
31
31
|
Provides-Extra: full
|
|
32
|
-
Requires-Dist: trimesh>=3.21; extra == "full"
|
|
33
|
-
Requires-Dist: freetype-py>=2.4; extra == "full"
|
|
34
32
|
Requires-Dist: pygame-ce>=2.5; extra == "full"
|
|
33
|
+
Requires-Dist: imageio>=2.31; extra == "full"
|
|
35
34
|
Requires-Dist: pyyaml>=6.0; extra == "full"
|
|
35
|
+
Requires-Dist: trimesh>=3.21; extra == "full"
|
|
36
36
|
Requires-Dist: pymunk>=6.0; extra == "full"
|
|
37
|
-
Requires-Dist:
|
|
37
|
+
Requires-Dist: freetype-py>=2.4; extra == "full"
|
|
38
38
|
Dynamic: author
|
|
39
39
|
Dynamic: classifier
|
|
40
40
|
Dynamic: description
|
|
@@ -1,10 +1,16 @@
|
|
|
1
1
|
"""Сериализация сцен и префабов"""
|
|
2
2
|
import json
|
|
3
|
-
import
|
|
3
|
+
from abc import ABC, abstractmethod
|
|
4
4
|
from typing import Dict, Any, Type
|
|
5
|
+
|
|
5
6
|
from aether.scene.entity import Entity
|
|
6
7
|
from aether.scene.component import Component
|
|
7
8
|
|
|
9
|
+
try:
|
|
10
|
+
import yaml
|
|
11
|
+
except ImportError:
|
|
12
|
+
yaml = None
|
|
13
|
+
|
|
8
14
|
|
|
9
15
|
class Serializer:
|
|
10
16
|
"""Сериализатор игровых объектов"""
|
|
@@ -88,18 +94,22 @@ class SceneSerializer:
|
|
|
88
94
|
entity_data = self.entity_serializer.serialize_entity(entity)
|
|
89
95
|
data['entities'].append(entity_data)
|
|
90
96
|
|
|
91
|
-
with open(path,
|
|
92
|
-
if path.endswith(
|
|
93
|
-
json.dump(data, f, indent=2)
|
|
94
|
-
elif path.endswith(
|
|
95
|
-
yaml
|
|
97
|
+
with open(path, "w", encoding="utf-8") as f:
|
|
98
|
+
if path.endswith(".json"):
|
|
99
|
+
json.dump(data, f, indent=2, ensure_ascii=False)
|
|
100
|
+
elif path.endswith((".yaml", ".yml")):
|
|
101
|
+
if yaml is None:
|
|
102
|
+
raise ImportError("pyyaml required for YAML scene save")
|
|
103
|
+
yaml.dump(data, f, default_flow_style=False, allow_unicode=True)
|
|
96
104
|
|
|
97
105
|
def load_scene(self, path: str) -> 'Scene':
|
|
98
106
|
"""Загружает сцену из файла"""
|
|
99
|
-
with open(path,
|
|
100
|
-
if path.endswith(
|
|
107
|
+
with open(path, "r", encoding="utf-8") as f:
|
|
108
|
+
if path.endswith(".json"):
|
|
101
109
|
data = json.load(f)
|
|
102
|
-
elif path.endswith(
|
|
110
|
+
elif path.endswith((".yaml", ".yml")):
|
|
111
|
+
if yaml is None:
|
|
112
|
+
raise ImportError("pyyaml required for YAML scene load")
|
|
103
113
|
data = yaml.safe_load(f)
|
|
104
114
|
else:
|
|
105
115
|
raise ValueError(f"Unsupported format: {path}")
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: aether-engine
|
|
3
|
-
Version: 1.3.
|
|
3
|
+
Version: 1.3.1
|
|
4
4
|
Summary: 3D/2D game engine by entiti937 — OpenGL, physics, FPS, mandatory branding splash
|
|
5
5
|
Home-page: https://pypi.org/project/aether-engine/
|
|
6
6
|
Author: entiti937
|
|
@@ -29,12 +29,12 @@ Requires-Dist: pymunk>=6.0; extra == "physics"
|
|
|
29
29
|
Provides-Extra: models
|
|
30
30
|
Requires-Dist: trimesh>=3.21; extra == "models"
|
|
31
31
|
Provides-Extra: full
|
|
32
|
-
Requires-Dist: trimesh>=3.21; extra == "full"
|
|
33
|
-
Requires-Dist: freetype-py>=2.4; extra == "full"
|
|
34
32
|
Requires-Dist: pygame-ce>=2.5; extra == "full"
|
|
33
|
+
Requires-Dist: imageio>=2.31; extra == "full"
|
|
35
34
|
Requires-Dist: pyyaml>=6.0; extra == "full"
|
|
35
|
+
Requires-Dist: trimesh>=3.21; extra == "full"
|
|
36
36
|
Requires-Dist: pymunk>=6.0; extra == "full"
|
|
37
|
-
Requires-Dist:
|
|
37
|
+
Requires-Dist: freetype-py>=2.4; extra == "full"
|
|
38
38
|
Dynamic: author
|
|
39
39
|
Dynamic: classifier
|
|
40
40
|
Dynamic: description
|
|
@@ -2,11 +2,9 @@
|
|
|
2
2
|
from setuptools import setup, find_packages
|
|
3
3
|
import sys
|
|
4
4
|
import importlib.util
|
|
5
|
+
import compileall
|
|
5
6
|
from pathlib import Path
|
|
6
|
-
|
|
7
|
-
# Add scripts for custom build
|
|
8
|
-
sys.path.insert(0, str(Path(__file__).parent / "scripts"))
|
|
9
|
-
from build_protected import BuildPyProtected
|
|
7
|
+
from setuptools.command.build_py import build_py
|
|
10
8
|
|
|
11
9
|
with open("README.md", "r", encoding="utf-8") as f:
|
|
12
10
|
long_description = f.read()
|
|
@@ -19,6 +17,24 @@ def is_installed(package_name):
|
|
|
19
17
|
return importlib.util.find_spec(name) is not None
|
|
20
18
|
|
|
21
19
|
|
|
20
|
+
class BuildPyProtected(build_py):
|
|
21
|
+
"""Compile branding modules to bytecode during build."""
|
|
22
|
+
|
|
23
|
+
_PROTECTED = (
|
|
24
|
+
"aether/core/_identity.py",
|
|
25
|
+
"aether/core/branding_guard.py",
|
|
26
|
+
"aether/core/boot_splash.py",
|
|
27
|
+
)
|
|
28
|
+
|
|
29
|
+
def run(self):
|
|
30
|
+
super().run()
|
|
31
|
+
root = Path(self.build_lib)
|
|
32
|
+
for rel in self._PROTECTED:
|
|
33
|
+
target = root / rel
|
|
34
|
+
if target.exists():
|
|
35
|
+
compileall.compile_file(str(target), force=True, quiet=1)
|
|
36
|
+
|
|
37
|
+
|
|
22
38
|
install_requires = [
|
|
23
39
|
"numpy>=1.24",
|
|
24
40
|
"glfw>=2.6",
|
|
@@ -54,7 +70,7 @@ extras_require = {
|
|
|
54
70
|
|
|
55
71
|
setup(
|
|
56
72
|
name="aether-engine",
|
|
57
|
-
version="1.3.
|
|
73
|
+
version="1.3.1",
|
|
58
74
|
author="entiti937",
|
|
59
75
|
description="3D/2D game engine by entiti937 — OpenGL, physics, FPS, mandatory branding splash",
|
|
60
76
|
long_description=long_description,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|