Пример #1
0
class View(JComponent):
    def __init__(self, obj, location, size=(800, 600), keys=None):
        JComponent.__init__(self)
        self.location = list(location)
        self.buffer = FrameBuffer(
            size[0], size[1], FrameBuffer.SAMPLINGMODE_NORMAL)
        self.obj = obj
        self.frame = JFrame(keyPressed=self.keyPressed,
                            keyReleased=self.keyReleased)
        self.frame.add(self)
        self.size = size
        self.frame.pack()
        self.frame.size = size
        self.frame.visible = True
        self.clearColor = Color(0x666666)
        self.keys = keys

    def paint(self, g):
        x, y, z = self.location
        self.obj.world.camera.setPosition(x, -y, z)
        self.obj.world.camera.lookAt(SimpleVector(0, 0, 0))

        self.buffer.clear(self.clearColor)
        self.obj.world.renderScene(self.buffer)
        self.obj.world.draw(self.buffer)
        self.buffer.update()
        self.buffer.display(g)
        self.repaint()

    def keyReleased(self, event):
        if self.keys is not None and hasattr(self.keys, 'key_released'):
            self.keys.key_released(KeyEvent.getKeyText(event.keyCode))

    def keyPressed(self, event):
        if self.keys is not None and hasattr(self.keys, 'key_pressed'):
            self.keys.key_pressed(KeyEvent.getKeyText(event.keyCode))
        if event.keyCode == KeyEvent.VK_ESCAPE:
            self.frame.dispose()
        elif event.keyCode == KeyEvent.VK_PAGE_UP:
            self.obj.sch.rate *= 1.1
            self.frame.title = 'rate: %1.3f' % self.obj.sch.rate
        elif event.keyCode == KeyEvent.VK_PAGE_DOWN:
            self.obj.sch.rate /= 1.1
            self.frame.title = 'rate: %1.3f' % self.obj.sch.rate
        elif event.keyCode == KeyEvent.VK_Z:
            self.location[2] += 1
        elif event.keyCode == KeyEvent.VK_X:
            self.location[2] -= 1
        elif event.keyCode == KeyEvent.VK_W:
            self.location[1] += 1
        elif event.keyCode == KeyEvent.VK_S:
            self.location[1] -= 1
        elif event.keyCode == KeyEvent.VK_A:
            self.location[0] += 1
        elif event.keyCode == KeyEvent.VK_D:
            self.location[0] -= 1
Пример #2
0
 def __init__(self, obj, location, size=(800, 600), keys=None):
     JComponent.__init__(self)
     self.location = list(location)
     self.buffer = FrameBuffer(
         size[0], size[1], FrameBuffer.SAMPLINGMODE_NORMAL)
     self.obj = obj
     self.frame = JFrame(keyPressed=self.keyPressed,
                         keyReleased=self.keyReleased)
     self.frame.add(self)
     self.size = size
     self.frame.pack()
     self.frame.size = size
     self.frame.visible = True
     self.clearColor = Color(0x666666)
     self.keys = keys
Пример #3
0
class View3D(core.DataViewComponent, ComponentListener, KeyListener):
    def __init__(self, view, name, func, args=()):
        core.DataViewComponent.__init__(self)
        self.addComponentListener(self)
        self.view = view
        self.view.frame.addKeyListener(self)
        self.name = name
        self.func = func
        self.data = self.view.watcher.watch(name, func, args=args)
        self.clearColor = Color(0x666666)
        self.setSize(300, 200)
        self.location = (0, 0, 10)
        self.initialize()

    def initialize(self):
        from com.threed.jpct import FrameBuffer

        self.buffer = FrameBuffer(self.width, self.height, FrameBuffer.SAMPLINGMODE_NORMAL)

    def componentHidden(self, event):
        pass

    def componentMoved(self, event):
        pass

    def componentResized(self, event):
        self.initialize()

    def componentShown(self, event):
        pass

    def keyPressed(self, event):
        # java.lang.System.out.println("key: "%event.keyCode)
        if event.keyCode == KeyEvent.VK_W:
            camera = self.view.watcher.objects[self.name]._simulator.model.world.camera
            camera.moveCamera(camera.getZAxis(), 1)

    def keyReleased(self, event):
        pass

    def keyTyped(self, event):
        pass

    def mouseWheelMoved(self, event):
        delta = event.wheelRotation

        camera = self.view.watcher.objects[self.name]._simulator.model.world.camera
        camera.moveCamera(camera.getZAxis(), delta * 0.5)

    def mouseDragged(self, event):
        if event.isControlDown():
            camera = self.view.watcher.objects[self.name]._simulator.model.world.camera
            dx = event.x - self.mouse_pressed_x
            dy = event.y - self.mouse_pressed_y
            self.mouse_pressed_x = event.x
            self.mouse_pressed_y = event.y
            # java.lang.System.out.println("event %s "%(event))
            if event.modifiersEx & InputEvent.BUTTON3_DOWN_MASK:
                from com.threed.jpct import SimpleVector

                camera.rotateCameraAxis(SimpleVector(-dy, dx, 0), 0.003)
                # camera.align(self.view.watcher.objects[self.name]._simulator.model.room)
                # camera.setOrientation(camera.getDirection(),SimpleVector(0,0,1))
            else:
                camera.moveCamera(camera.getXAxis(), dx * 0.01)
                camera.moveCamera(camera.getYAxis(), -dy * 0.01)

                # camera.moveCamera(SimpleVector(dx,-dy,0),0.01)

        else:
            core.DataViewComponent.mouseDragged(self, event)

    def paintComponent(self, g):
        core.DataViewComponent.paintComponent(self, g)

        obj = self.view.watcher.objects[self.name]._simulator.model
        self.buffer.clear(self.clearColor)

        physics = self.data.get(start=self.view.current_tick, count=1)[0]
        if physics is not None:
            obj.update_shapes(physics)

            obj.world.renderScene(self.buffer)
            obj.world.draw(self.buffer)
        self.buffer.update()
        self.buffer.display(g)
        self.repaint()
Пример #4
0
    def initialize(self):
        from com.threed.jpct import FrameBuffer

        self.buffer = FrameBuffer(self.width, self.height, FrameBuffer.SAMPLINGMODE_NORMAL)
Пример #5
0
 def initialize(self):
     self.buffer = FrameBuffer(self.width, self.height, FrameBuffer.SAMPLINGMODE_NORMAL)
Пример #6
0
class View3D(core.DataViewComponent, ComponentListener, KeyListener):
    def __init__(self, view, name, func, args=()):
        core.DataViewComponent.__init__(self)
        self.addComponentListener(self)
        self.view = view
        self.view.frame.addKeyListener(self)
        self.name = name
        self.func = func
        self.data = self.view.watcher.watch(name, func, args=args)
        self.clearColor = Color(0x666666)
        self.setSize(300, 200)
        self.location = (0, 0, 10)
        self.initialize()

    def initialize(self):
        from com.threed.jpct import FrameBuffer
        self.buffer = FrameBuffer(self.width, self.height,
                                  FrameBuffer.SAMPLINGMODE_NORMAL)

    def componentHidden(self, event):
        pass

    def componentMoved(self, event):
        pass

    def componentResized(self, event):
        self.initialize()

    def componentShown(self, event):
        pass

    def keyPressed(self, event):
        #java.lang.System.out.println("key: "%event.keyCode)
        if event.keyCode == KeyEvent.VK_W:
            camera = self.view.watcher.objects[
                self.name]._simulator.model.world.camera
            camera.moveCamera(camera.getZAxis(), 1)

    def keyReleased(self, event):
        pass

    def keyTyped(self, event):
        pass

    def mouseWheelMoved(self, event):
        delta = event.wheelRotation

        camera = self.view.watcher.objects[
            self.name]._simulator.model.world.camera
        camera.moveCamera(camera.getZAxis(), delta * 0.5)

    def mouseDragged(self, event):
        if event.isControlDown():
            camera = self.view.watcher.objects[
                self.name]._simulator.model.world.camera
            dx = event.x - self.mouse_pressed_x
            dy = event.y - self.mouse_pressed_y
            self.mouse_pressed_x = event.x
            self.mouse_pressed_y = event.y
            #java.lang.System.out.println("event %s "%(event))
            if event.modifiersEx & InputEvent.BUTTON3_DOWN_MASK:
                from com.threed.jpct import SimpleVector
                camera.rotateCameraAxis(SimpleVector(-dy, dx, 0), 0.003)
                #camera.align(self.view.watcher.objects[self.name]._simulator.model.room)
                #camera.setOrientation(camera.getDirection(),SimpleVector(0,0,1))
            else:
                camera.moveCamera(camera.getXAxis(), dx * 0.01)
                camera.moveCamera(camera.getYAxis(), -dy * 0.01)

                #camera.moveCamera(SimpleVector(dx,-dy,0),0.01)

        else:
            core.DataViewComponent.mouseDragged(self, event)

    def paintComponent(self, g):
        core.DataViewComponent.paintComponent(self, g)

        obj = self.view.watcher.objects[self.name]._simulator.model
        self.buffer.clear(self.clearColor)

        physics = self.data.get(start=self.view.current_tick, count=1)[0]
        if physics is not None:
            obj.update_shapes(physics)

            obj.world.renderScene(self.buffer)
            obj.world.draw(self.buffer)
        self.buffer.update()
        self.buffer.display(g)
        self.repaint()
Пример #7
0
 def initialize(self):
     from com.threed.jpct import FrameBuffer
     self.buffer = FrameBuffer(self.width, self.height,
                               FrameBuffer.SAMPLINGMODE_NORMAL)