Browse Source

integrate click handler on ui.scene

Falko Schindler 2 năm trước cách đây
mục cha
commit
2a59bd7cc9
2 tập tin đã thay đổi với 7 bổ sung1 xóa
  1. 5 1
      nicegui/elements/scene.js
  2. 2 0
      nicegui/elements/scene.py

+ 5 - 1
nicegui/elements/scene.js

@@ -110,7 +110,7 @@ export default {
       let x = (mouseEvent.offsetX / renderer.domElement.width) * 2 - 1;
       let y = -(mouseEvent.offsetY / renderer.domElement.height) * 2 + 1;
       raycaster.setFromCamera({ x: x, y: y }, this.camera);
-      this.$emit("click", {
+      this.$emit("click3d", {
         hits: raycaster
           .intersectObjects(this.scene.children, true)
           .filter((o) => o.object.object_id)
@@ -119,6 +119,10 @@ export default {
             point: o.point,
           })),
         click_type: mouseEvent.type,
+        button: mouseEvent.button,
+        alt_key: mouseEvent.altKey,
+        ctrl_key: mouseEvent.ctrlKey,
+        meta_key: mouseEvent.metaKey,
         shift_key: mouseEvent.shiftKey,
       });
     };

+ 2 - 0
nicegui/elements/scene.py

@@ -2,6 +2,7 @@ from dataclasses import dataclass
 from typing import Callable, Dict, List, Optional, Union
 
 from ..element import Element
+from ..events import handle_event
 from ..vue import register_component
 from .scene_object3d import Object3D
 from .scene_objects import Scene as SceneObject
@@ -69,6 +70,7 @@ class Scene(Element):
         self.stack: List[Union[Object3D, SceneObject]] = [SceneObject()]
         self.camera: SceneCamera = SceneCamera()
         self.on('connect', self.handle_connect)
+        self.on('click3d', lambda msg: handle_event(on_click, msg['args']), ['*'])
 
     def handle_connect(self, _) -> None:
         self.run_method('init')