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
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
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()
def initialize(self): from com.threed.jpct import FrameBuffer self.buffer = FrameBuffer(self.width, self.height, FrameBuffer.SAMPLINGMODE_NORMAL)
def initialize(self): self.buffer = FrameBuffer(self.width, self.height, FrameBuffer.SAMPLINGMODE_NORMAL)
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()