ya2 · news · projects · code · about

instantiation
[pmachines.git] / pmachines / scene.py
index f67c45b75587804f3ca316eb6455df4e94c548eb..5d046e9b925b15b50b30d140e1562d75f43590cb 100644 (file)
@@ -23,7 +23,7 @@ class Scene(DirectObject):
         self._set_input()
         self._set_mouse_plane()
         Background()
-        self.items = [Box(world)]
+        self.items = [Box(world, self._mouse_plane_node, 3, self.cb_inst)]
         taskMgr.add(self.on_frame, 'on_frame')
 
     def _set_camera(self):
@@ -111,8 +111,7 @@ class Scene(DirectObject):
 
     def _get_hits(self):
         if not base.mouseWatcherNode.has_mouse(): return []
-        p_from = Point3()  # in camera coordinates
-        p_to = Point3()    # in camera coordinates
+        p_from, p_to = Point3(), Point3()    # in camera coordinates
         base.camLens.extrude(base.mouseWatcherNode.get_mouse(), p_from, p_to)
         p_from = render.get_relative_point(base.cam, p_from)  # global coords
         p_to = render.get_relative_point(base.cam, p_to)  # global coords
@@ -153,6 +152,9 @@ class Scene(DirectObject):
             [itm.on_mouse_move(pos) for itm in self.items]
         return task.cont
 
+    def cb_inst(self, item):
+        self.items += [item]
+
     def on_play(self):
         [itm.play() for itm in self.items]