from direct.showbase.DirectObject import DirectObject
from pmachines.items.background import Background
from pmachines.items.box import Box
+from pmachines.sidepanel import SidePanel
from lib.engine.gui.cursor import MouseCursor
+from lib.lib.p3d.gfx import P3dGfxMgr
class Scene(DirectObject):
self._set_mouse_plane()
Background()
self.items = [Box(world, self._mouse_plane_node, 3, self.cb_inst)]
+ self._side_panel = SidePanel(world, self._mouse_plane_node, (-5, 4), (-3, 1), 1)
taskMgr.add(self.on_frame, 'on_frame')
def _set_camera(self):
def _get_hits(self):
if not base.mouseWatcherNode.has_mouse(): return []
- 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
+ p_from, p_to = P3dGfxMgr.world_from_to(base.mouseWatcherNode.get_mouse())
return self._world.ray_test_all(p_from, p_to).get_hits()
def _on_click(self, method):
def on_aspect_ratio_changed(self):
[item.on_aspect_ratio_changed() for item in self.items]
+ self._side_panel.update(self.items)
def on_frame(self, task):
hits = self._get_hits()