|
@@ -1,5 +1,5 @@
|
|
from dataclasses import dataclass
|
|
from dataclasses import dataclass
|
|
-from typing import Callable, Dict, List, Optional
|
|
|
|
|
|
+from typing import Callable, Dict, List, Optional, Union
|
|
|
|
|
|
from ..element import Element
|
|
from ..element import Element
|
|
from ..vue import register_component
|
|
from ..vue import register_component
|
|
@@ -29,6 +29,11 @@ class SceneCamera:
|
|
up_z: float = 1
|
|
up_z: float = 1
|
|
|
|
|
|
|
|
|
|
|
|
+@dataclass
|
|
|
|
+class SceneObject:
|
|
|
|
+ id: str = 'scene'
|
|
|
|
+
|
|
|
|
+
|
|
class Scene(Element):
|
|
class Scene(Element):
|
|
from .scene_objects import Box as box
|
|
from .scene_objects import Box as box
|
|
from .scene_objects import Curve as curve
|
|
from .scene_objects import Curve as curve
|
|
@@ -60,15 +65,15 @@ class Scene(Element):
|
|
super().__init__('scene')
|
|
super().__init__('scene')
|
|
self._props['width'] = width
|
|
self._props['width'] = width
|
|
self._props['height'] = height
|
|
self._props['height'] = height
|
|
- self.objects: Dict[Object3D] = {}
|
|
|
|
- self.stack: List[Object3D] = []
|
|
|
|
- with self:
|
|
|
|
- SceneObject()
|
|
|
|
|
|
+ self.objects: Dict[str, Object3D] = {}
|
|
|
|
+ self.stack: List[Union[Object3D, SceneObject]] = [SceneObject()]
|
|
self.camera: SceneCamera = SceneCamera()
|
|
self.camera: SceneCamera = SceneCamera()
|
|
self.on('connect', self.handle_connect)
|
|
self.on('connect', self.handle_connect)
|
|
|
|
|
|
- def handle_connect(self, msg: Dict) -> None:
|
|
|
|
- print('CONNECT', msg, flush=True)
|
|
|
|
|
|
+ def handle_connect(self, _) -> None:
|
|
|
|
+ self.run_method('init')
|
|
|
|
+ for object in self.objects.values():
|
|
|
|
+ object.send()
|
|
|
|
|
|
def __len__(self) -> int:
|
|
def __len__(self) -> int:
|
|
return len(self.objects)
|
|
return len(self.objects)
|