def activate(self, position = Vec3(5.0, 5.0, 5.0)): print "Activating FreeLook Camera" # No moar cursor! wp = WindowProperties() wp.setCursorHidden(True) # does not exist panda 1.3.2 / but is reqired for osx-mouse movement try: wp.setMouseMode(WindowProperties.MAbsolute) except: pass base.win.requestProperties(wp) # initialize camera base.camLens.setFov(70) # field of view base.camera.reparentTo(base.render) # attach it to the render ## set position base.camera.setPos(position) base.camera.setR(0) # initialize mouse controls ## walking and stopping if input is lost self.accept("s" , self.set_walk, [self.BACK]) self.accept("s-up" , self.set_walk, [self.STOP]) self.accept("w" , self.set_walk, [self.FORWARD]) self.accept("w-up" , self.set_walk, [self.STOP]) self.accept("d" , self.set_strafe, [self.RIGHT]) self.accept("d-up" , self.set_strafe, [self.STOP]) self.accept("a" , self.set_strafe, [self.LEFT]) self.accept("a-up" , self.set_strafe, [self.STOP]) # initialize camera task base.taskMgr.add(self.update, "update_camera_task")
def buildInGameMenu(self): props = WindowProperties() props.setCursorHidden(False) base.win.requestProperties(props) resume_button = DirectButton(text = "Resume", scale = .1, command = (lambda: self.switchGameMode(PLAY)), rolloverSound=None) main_menu_button = DirectButton(text = "Main Menu", scale = .1, command = self.b, rolloverSound=None) options_button = DirectButton(text = "Options", scale = .1, command = self.b, rolloverSound=None) exit_button = DirectButton(text = "Exit", scale = .1, command = exit, rolloverSound=None) BUTTON_SPACING = .2 BUTTON_HEIGHT = resume_button.getSy() button_positions = self.evenButtonPositions(BUTTON_SPACING, BUTTON_HEIGHT, 4) resume_button.setPos(Vec3(0, 0, button_positions[0])) main_menu_button.setPos(Vec3(0, 0, button_positions[1])) options_button.setPos(Vec3(0, 0, button_positions[2])) exit_button.setPos(Vec3(0, 0, button_positions[3])) self.gui_elements.append(resume_button) self.gui_elements.append(main_menu_button) self.gui_elements.append(options_button) self.gui_elements.append(exit_button)
def __init__(self, useJOD=None): """ @keyword useJOD: connected to actual drumpads and spinners to read from (default: read from config.prc) @type useJOD: bool """ self.configPath = Filename("/c/jamoconfig.txt") self.logPath = Filename("/c/jamoconfig.log") self.clearConfig() self.simulate() self.log = sys.stdout self.configMissing = 0 self.hardwareChanged = 0 if (useJOD==None): useJOD = base.config.GetBool("want-jamodrum", True) self.useJOD = useJOD if (useJOD): self.setLog(self.logPath) self.devindices = range(1,base.win.getNumInputDevices()) self.readConfigFile(self.configPath) self.prepareDevices() props = WindowProperties() props.setCursorHidden(1) if (sys.platform == "win32"): props.setZOrder(WindowProperties.ZTop) base.win.requestProperties(props) self.setLog(None)
def toggleMouseLook(): global _MOUSELOOK _MOUSELOOK = not _MOUSELOOK props = WindowProperties() props.setCursorHidden(_MOUSELOOK) base.win.requestProperties(props) return _MOUSELOOK
def toggle_mouse(self, capture=True): win_props = WindowProperties() win_props.setCursorHidden(capture) base.win.requestProperties(win_props) self.capture_mouse = capture win_x, win_y = base.win.getXSize(), base.win.getYSize() base.win.movePointer(0, win_x // 2, win_y // 2)
def buildMainMenu(self): props = WindowProperties() props.setCursorHidden(False) base.win.requestProperties(props) start_game_button = DirectButton(text = "Start", scale = .1, command = self.b) select_level_button = DirectButton(text = "Select Level", scale = .1, command = self.b) game_options_button = DirectButton(text = "Options", scale = .1, command = self.b) exit_button = DirectButton(text = "Exit", scale = .1, command = exit) BUTTON_SPACING = .2 BUTTON_HEIGHT = start_game_button.getSy() button_positions = self.evenButtonPositions(BUTTON_SPACING, BUTTON_HEIGHT) start_game_button.setPos(Vec3(0, 0, button_positions[0])) select_level_button.setPos(Vec3(0, 0, button_positions[1])) game_options_button.setPos(Vec3(0, 0, button_positions[2])) exit_button.setPos(Vec3(0, 0, button_positions[3])) self.gui_elements.append(start_game_button) self.gui_elements.append(select_level_button) self.gui_elements.append(game_options_button) self.gui_elements.append(exit_button)
def __init__(self, useJOD=None): """ @keyword useJOD: connected to actual drumpads and spinners to read from (default: read from config.prc) @type useJOD: bool """ self.configPath = Filename("/c/jamoconfig.txt") self.logPath = Filename("/c/jamoconfig.log") self.clearConfig() self.simulate() self.log = sys.stdout self.configMissing = 0 self.hardwareChanged = 0 if (useJOD == None): useJOD = base.config.GetBool("want-jamodrum", True) self.useJOD = useJOD if (useJOD): self.setLog(self.logPath) self.devindices = range(1, base.win.getNumInputDevices()) self.readConfigFile(self.configPath) self.prepareDevices() props = WindowProperties() props.setCursorHidden(1) if (sys.platform == "win32"): props.setZOrder(WindowProperties.ZTop) base.win.requestProperties(props) self.setLog(None)
def hide_cursor(): """set the Cursor invisible""" props = WindowProperties() props.setCursorHidden(True) # somehow the window gets undecorated after hiding the cursor # so we reset it here to the value we need #props.setUndecorated(settings.fullscreen) base.win.requestProperties(props)
def show_cursor(): props = WindowProperties() props.setCursorHidden(False) # set the filename to the mouse cursor # at the time the realization is valid for Windows only win = "assets/gui/Cursor.cur" props.setCursorFilename(win) base.win.requestProperties(props)
def disable_rot(self): if self.free_look_task is not None: taskMgr.remove(self.free_look_task) # show the mouse cursor again. props = WindowProperties() props.setCursorHidden(False) base.win.requestProperties(props)
def _init_graphics(self): base.disableMouse() props = WindowProperties() props.setCursorHidden(True) base.win.requestProperties(props) base.setFrameRateMeter(True) render.setShaderAuto() render.setAntialias(AntialiasAttrib.MAuto)
def __exitWheel(self, event): # Window properties props = WindowProperties() props.setCursorHidden(False) base.win.requestProperties(props) # Stop tracking our mouse pointer taskMgr.remove('MATColorWheel-mouse')
def __init__(self): ShowBase.__init__(self) #Disable mouse controls self.disableMouse() #Load enviromnment model self.scene = self.loader.loadModel("models/environment") #Reparent model top renderer self.scene.reparentTo(self.render) #Apply scale and position transforms on the model self.scene.setScale(0.25, 0.25, 0.25) self.scene.setPos(-8, 42, 0) #Add task spinCameraTask procedure to task manager self.taskMgr.add(self.setCameraTask, "setCameraTask") self.taskMgr.add(self.keyInput, "keyInput") self.taskMgr.add(self.moveCharacter, "movecharacter") self.taskMgr.add(self.mouseInput, "mouseInput") self.taskMgr.add(self.lookCharacter, "lookCharacter") #Positions of character/camera self.xpos = 0 self.ypos = 0 self.zpos = 10 self.angleH = 0 self.angleP = 0 self.xInterval = 0.0 self.yInterval = 0.0 #Speed at which the character/camera moves self.movementInterval = 1 self.lookInterval = 2 #Dictionary of key states self.keys = {"w" : False, "s" : False, "a" : False, "d" : False, "arrow_right" : False, "arrow_left": False} #Configuring cursor settings wp = WindowProperties() wp.setMouseMode(WindowProperties.MRelative) wp.setCursorHidden(True) self.win.requestProperties(wp) self.mw = self.mouseWatcherNode
def togglePause(self): print ("pause pressed") if MyApp.paused: self.makeMouseRelative() MyApp.paused = False else: props = WindowProperties() # initiates window node props.setCursorHidden(False) # cursor shows props.setMouseMode(WindowProperties.M_absolute) # cursor moves self.win.requestProperties(props) # window accepts changes MyApp.paused = True
def setPlanar(): for citizen in citizenIndex: location = citizen.getLocation() citizen.glide(location) global mode mode = 1 LerpPosInterval(base.camera, 1, VBase3(0, 0, 75), fluid = 1).start() LerpHprInterval(base.camera, 1, VBase3(0, -90, 0), fluid = 1).start() #base.camera.setPosHpr(0, 0, 75, 0, -90, 0) props = WindowProperties() props.setCursorHidden(False) base.win.requestProperties(props)
def show_cursor(): """set the Cursor visible again""" props = WindowProperties() props.setCursorHidden(False) # set the filename to the mouse cursor x11 = "Cursor.x11" win = "Cursor.ico" if sys.platform.startswith("linux"): props.setCursorFilename(x11) else: props.setCursorFilename(win) base.win.requestProperties(props)
def beginGame(self): self.textObject.destroy() self.imageObject.destroy() self.b.destroy() props = WindowProperties() props.setCursorHidden(True) base.win.requestProperties(props) self.taskMgr.add(self.moveForward, "MoveForward") self.accept("mouse1",self.jump) self.textScore = OnscreenText(text = '\1red\1\1slant\1Score : 0', pos = (-0.8, 0.8), scale = 0.1) self.textTimer = OnscreenText(text = '\1red\1\1slant\1Time Left : 2:00', pos = (-0.8, 0.7), scale = 0.1) print 'GameBegin'
def finish(self): """ Invoke this before this class object will be off duty """ self.ignoreAll() if self.mouseTask: taskMgr.remove(self.mouseTask) self.mouseTask=None if self.pyga_joytask: taskMgr.remove(self.pyga_joytask) self.pyga_joytask=None props = WindowProperties() props.setCursorHidden(False) props.setMouseMode(WindowProperties.MAbsolute) base.win.requestProperties(props)
def show_cursor(): """set the Cursor visible again""" props = WindowProperties() props.setCursorHidden(False) # set the filename to the mouse cursor #x11 = os.path.join("data", "Cursor.x11") #win = os.path.join("data", "Cursor.ico") #if sys.platform.startswith("linux"): # props.setCursorFilename(x11) #else: # props.setCursorFilename(win) #props.setUndecorated(settings.fullscreen) base.win.requestProperties(props)
def start_map(self): try: self.r_region.setActive(0) self.ih_node.detach_node() except: # probably self.r_region isn't set because # we never loaded it (map arg on cmd line) pass self.lp = LocalPlayer(self.map, self.showbase) taskMgr.add(self.map.world.update, 'worldUpdateTask') props = WindowProperties() props.setCursorHidden(True) self.win.requestProperties(props) print self.render.analyze()
def setCubic(): for citizen in citizenIndex: color = citizen.getColor() position = VBase3((color[0]-0.5)*50, (color[1]-0.5)*50, (color[2]-0.5)*50) citizen.glide(position) global mode mode = 4 #base.camera.setPos(VBase3(0, -50, 0)) LerpPosInterval(base.camera, 1, VBase3(0, -100, 0), fluid = 1).start() LerpHprInterval(base.camera, 1, VBase3(0, 0, 0), fluid = 1).start() #base.camera.lookAt((0, 0, 0)) props = WindowProperties() props.setCursorHidden(True) base.win.requestProperties(props)
def show_cursor(): """set the Cursor visible again""" props = WindowProperties() props.setCursorHidden(False) # set the filename to the mouse cursor cursors = ["cursorRed", "cursorBlue", "cursorViolet", "cursorGreen"] cursor = random.choice(cursors) x11 = "cursors/{}.x11".format(cursor) win = "cursors/{}.ico".format(cursor) if sys.platform.startswith("linux"): props.setCursorFilename(x11) else: props.setCursorFilename(win) base.win.requestProperties(props)
def enable_rot(self): # get the current mouse pos. self.mouse_x = base.mouseWatcherNode.getMouseX() self.mouse_y = base.mouseWatcherNode.getMouseY() #print 'mouse: enabling freelook.' self.mouse_freefloat_enabled = True self.prev_time = 0 self.speed = 10 props = WindowProperties() props.setCursorHidden(True) #props.setMouseMode(WindowProperties.MRelative) base.win.requestProperties(props) self.free_look_task = base.taskMgr.add(self.mouse_rot_coordinate_task, 'freeLook')
def set_mouse_read(self, readmouse, activate): if self.mouseTask: taskMgr.remove(self.mouseTask) self.mouseTask=None if activate: if not self.readmouse_binds: for xy in ['mouse-x', 'mouse-y']: self.readmouse_binds[xy]=readmouse.get(xy, self._foo) taskName = "_esnptmo-%s" % id(self) self.mouseTask = taskMgr.add(self._read_mouse, taskName, sort=40) props = WindowProperties() props.setCursorHidden(activate) props.setMouseMode( [WindowProperties.MAbsolute, WindowProperties.MRelative][activate]) base.win.requestProperties(props)
def disable( self ): ''' disable first person camera rotation of mouse and free/show the mouse ''' self.rotationSpeed = 0 # disable the mouse rotation task taskMgr.remove('cameraRotationTask') # show mouse cursor wp = WindowProperties() wp.setCursorHidden(False) # does not exist panda 1.3.2 / but is reqired for osx-mouse movement try: wp.setMouseMode(WindowProperties.MAbsolute) except: pass base.win.requestProperties(wp) # remove the cross from the window self.aimingCross.detachNode() self.enabled = False
def __wheelTask(self, task): if base.mouseWatcherNode.hasMouse(): x=base.mouseWatcherNode.getMouseX() y=base.mouseWatcherNode.getMouseY() else: return task.done # Centre of the wheel center_x = self.wheel.getX(render2d) center_y = self.wheel.getZ(render2d) # Window properties props = WindowProperties() # Are we inside the wheel? dist = math.sqrt(((center_x - x) ** 2) + ((center_y - y) ** 2)) radius = render2d.getRelativePoint(self.wheel, ( self.wheel.getX() + (self.wheel.getWidth() / 2.0), 0, self.wheel.getZ() + (self.wheel.getHeight() / 2.0) ) ) if dist < radius[2]: if self.buttonDown: props.setCursorHidden(True) # Get the hue, saturation and value. hue = math.degrees(math.atan2(center_x - x, center_y - y)) sat = (dist / 0.23) * 100 # We want hue as a direction 0-360 if hue < 0: hue += 360 # Set our properties self.setHsv(hue, sat, self.raw_hsv[2]) else: props.setCursorHidden(False) # Continue the task! base.win.requestProperties(props) return task.cont
def enable( self ): ''' enable first person camera rotation by mouse and bind/hide the mouse ''' # the mouse is not centered self.mouseCentered = False # enable the mouse rotation task taskMgr.add(self.rotationTask, 'cameraRotationTask') # hide mouse cursor wp = WindowProperties() wp.setCursorHidden(True) # does not exist panda 1.3.2 / but is reqired for osx-mouse movement try: wp.setMouseMode(WindowProperties.MRelative) except: pass base.win.requestProperties(wp) # add the cross to the window self.aimingCross.reparentTo( render2d ) self.enabled = True
def deactivate(self): print "Deactivating FreeLook Camera" # No moar cursor! wp = WindowProperties() wp.setCursorHidden(True) # does not exist panda 1.3.2 / but is reqired for osx-mouse movement try: wp.setMouseMode(WindowProperties.MAbsolute) except: pass base.win.requestProperties(wp) self.ignore("s") self.ignore("s-up") self.ignore("w") self.ignore("w-up") self.ignore("d") self.ignore("d-up") self.ignore("a") self.ignore("a-up") base.taskMgr.remove("update_camera_task")
def stopOrbit(self): # This function takes the camera out of orbiting mode. self.orbiting = False # Sets the orbiting variable to false to designate orbiting mode as off. self.showbase.win.movePointer(0, int((self.storeX + 1.0) / 2 * self.showbase.win.getXSize()), int(self.showbase.win.getYSize() - ((self.storeY + 1.0) / 2 * self.showbase.win.getYSize()))) # set to taken cursor values from startOrbit if self.showbase.mouseWatcherNode.hasMouse(): # We're going to use the mouse, so we have to make sure it's in the game window. If it's not and we try to use it, we'll get # a crash error. mpos = self.showbase.mouseWatcherNode.getMouse() self.mx = mpos.getX() self.my = mpos.getY() # Get windows properties props = WindowProperties() # Set Hide Cursor Property props.setCursorHidden(False) # Set properties self.showbase.win.requestProperties(props)
def start_map(self): try: self.r_region.setActive(0) self.ih_node.detach_node() except: pass incarn = self.map.world.get_incarn() walker_color_dict = { "barrel_color": [.7,.7,.7], "visor_color": [2.0/255, 94.0/255, 115.0/255], "body_primary_color": [3.0/255, 127.0/255, 140.0/255], "body_secondary_color": [217.0/255, 213.0/255, 154.0/255] } self.walker = self.map.world.attach(Walker(incarn, colordict=walker_color_dict, player=True)) taskMgr.add(self.move, 'move') taskMgr.add(self.map.world.update, 'worldUpdateTask') self.setup_input() props = WindowProperties() props.setCursorHidden(True) self.win.requestProperties(props) print self.render.analyze()
def __wheelTask(self, task): if base.mouseWatcherNode.hasMouse(): x = base.mouseWatcherNode.getMouseX() y = base.mouseWatcherNode.getMouseY() else: return task.done # Centre of the wheel center_x = self.wheel.getX(render2d) center_y = self.wheel.getZ(render2d) # Window properties props = WindowProperties() # Are we inside the wheel? dist = math.sqrt(((center_x - x)**2) + ((center_y - y)**2)) radius = render2d.getRelativePoint( self.wheel, (self.wheel.getX() + (self.wheel.getWidth() / 2.0), 0, self.wheel.getZ() + (self.wheel.getHeight() / 2.0))) if dist < radius[2]: if self.buttonDown: props.setCursorHidden(True) # Get the hue, saturation and value. hue = math.degrees(math.atan2(center_x - x, center_y - y)) sat = (dist / 0.23) * 100 # We want hue as a direction 0-360 if hue < 0: hue += 360 # Set our properties self.setHsv(hue, sat, self.raw_hsv[2]) else: props.setCursorHidden(False) # Continue the task! base.win.requestProperties(props) return task.cont
def __init__(self): super().__init__(self) # Initialize self variables self.environ = None self.bufsize = 2048 self.addr = None self.my_socket = None self.z = None self.handmodel = None self.hand = None self.knuckle = None self.tknuckle = None self.thumb = None # This creates the on screen title that is in every tutorial self.title = OnscreenText(text="Gyro Glove", style=1, fg=(1, 1, 1, 1), pos=(0.87, -0.95), scale=.07) # Turn cursor on props = WindowProperties() props.setCursorHidden(False) self.win.requestProperties(props) self.setBackgroundColor(.6, .6, 1) # Set the background color self.trackball.node().setPos(0, 30, -3) self.trackball.node().setHpr(-70, 0, 5) self.draw_grid() self.frameNav = self.draw_axis(self.render, [0, 0, 0]) self.frameBody = self.draw_axis(self.render, [0, 0, 0]) self.load_models() # Load and position our models self.init_socket() self.taskMgr.add(self.roll_task, "rollTask")
def enable(self): if not self.isEnabled(): base.win.movePointer(0, base.win.getXSize() / 2, base.win.getYSize() / 2) self.enabled = True base_properties = base.win.getProperties() props = WindowProperties() props.setCursorHidden(True) base.win.requestProperties(props) self.prev_time = 0 self.speed = 30 self.x = base.mouseWatcherNode.getMouseX() self.y = base.mouseWatcherNode.getMouseY() # start the freefloat mouse task. self.free_look_task = base.taskMgr.add(self.mouseWatcherWindowMode, 'cubemode/flycamera/mouse') self.free_look_kb_task = base.taskMgr.add( self.kbTask, 'cubemode/flycamera/keyboard') # start the keyboard task for x in 'wsadf': self.keys_status[x] = False base.accept('w', self.eventW) base.accept('w-up', self.eventWup) base.accept('s', self.eventS) base.accept('s-up', self.eventSup) base.accept('a', self.eventA) base.accept('a-up', self.eventAup) base.accept('d', self.eventD) base.accept('d-up', self.eventDup) base.accept('escape', self.disable)
def __init__(self): ShowBase.__init__(self) self.title = "Monkeys" self.setFrameRateMeter(True) # Disable the camera trackball controls. self.disableMouse() props = WindowProperties() props.setCursorHidden(True) props.setTitle("Stay Away From The Monkeys") props.setMouseMode(WindowProperties.M_relative) self.win.requestProperties(props) # set scene self.scene = self.loader.loadModel("models/skyTest.egg") self.scene.reparentTo(self.render) m = 37 self.scene.setScale(m, m, m) self.scene.setPos(0, 0, -5) # set camera self.camera.setPos(0, 0, 1) self.camera.setHpr(0, 0, 0) self.cameraSpeed = (0, 0, 0) self.maxSpeed = 0.09 self.lastKeyPressed = "" self.blockList = [] self.mobMax = 0 self.player = Player(self.camera) self.loadModel() self.createBars() self.die = False self.paused = True self.helpScreen() self.accept("p", self.flipPause) self.accept("h", self.helpFlip) self.accept("escape", sys.exit) self.taskMgr.add(self.update, "updateAll")
def setCameraMode(self, mode): if mode == self.cameraMode: return winProps = WindowProperties() # Tear-down code for the current mode. if self.cameraMode == MOUSELOOK: winProps.setCursorHidden(False) self.removeTask(self.viewTask) elif self.cameraMode == TRACKBALL: self.removeTask(self.viewTask) # Set-up code for the new mode. if mode == MOUSELOOK: winProps.setCursorHidden(True) # Mouse accumulator. Whenever the mouse moves, it is reset to the # center of the window. The accumulator keeps track of the total # movement self.mouseAccX = 0 self.mouseAccY = 0 self.recenterMouse = True # Add a task that moves the camera based on mouse position. self.viewTask = taskMgr.add(self._mlViewTask, 'MLViewTask') self.lastFrameTime = 0 # Used to calculate dt in mlViewTask. self.instructionText.setText('[ESC]: Leave Mouselook Mode') elif mode == TRACKBALL: self.instructionText.setText('[m]: Enter Mouselook Mode') self.viewTask = taskMgr.add(self._trackballTask, 'TrackballTask') self.cameraMode = mode self.eventDispatcher.dispatchEvent(EVT_CAMERA_MODE, self) base.win.requestProperties(winProps)
def __init__(self): ShowBase.__init__(self) # This creates the on screen title that is in every tutorial self.title = OnscreenText(text="IMU Glove", style=1, fg=(1, 1, 1, 1), pos=(0.87, -0.95), scale=0.07) # Turn cursor on props = WindowProperties() props.setCursorHidden(False) base.win.requestProperties(props) base.setBackgroundColor(0.6, 0.6, 1) # Set the background color base.trackball.node().setPos(0, 30, -3) base.trackball.node().setHpr(-70, 0, 5) self.drawGrid() self.frameNav = self.drawAxis(render, [0, 0, 0]) self.frameBody = self.drawAxis(render, [0, 0, 0]) self.loadModels() # Load and position our models self.initSocket() self.taskMgr.add(self.rollTask, "rollTask")
def stopOrbit(self): # This function takes the camera out of orbiting mode. self.orbiting = False # Sets the orbiting variable to false to designate orbiting mode as off. self.showbase.win.movePointer( 0, int((self.storeX + 1.0) / 2 * self.showbase.win.getXSize()), int(self.showbase.win.getYSize() - ((self.storeY + 1.0) / 2 * self.showbase.win.getYSize()))) # set to taken cursor values from startOrbit if self.showbase.mouseWatcherNode.hasMouse(): # We're going to use the mouse, so we have to make sure it's in the game window. If it's not and we try to use it, we'll get # a crash error. mpos = self.showbase.mouseWatcherNode.getMouse() self.mx = mpos.getX() self.my = mpos.getY() # Get windows properties props = WindowProperties() # Set Hide Cursor Property props.setCursorHidden(False) # Set properties self.showbase.win.requestProperties(props)
def disable(self): # Stop the mouse and kb tasks. self.enabled = False # ignore events base.ignore('w') base.ignore('w-up') base.ignore('s') base.ignore('s-up') base.ignore('a', ) base.ignore('a-up') base.ignore('d') base.ignore('d-up') # Stop the camera task! taskMgr.remove(self.free_look_task) taskMgr.remove(self.free_look_kb_task) # Reset the camera position!! # show the mouse again props = WindowProperties() props.setCursorHidden(False) base.win.requestProperties(props)
def __init__(self): ShowBase.__init__(self) self.title = "Monkeys" self.setFrameRateMeter(True) # Disable the camera trackball controls. self.disableMouse() props = WindowProperties() props.setCursorHidden(True) props.setTitle("Stay Away From The Monkeys") props.setMouseMode(WindowProperties.M_relative) self.win.requestProperties(props) # set scene self.scene = self.loader.loadModel("models/skyTest.egg") self.scene.reparentTo(self.render) m = 37 self.scene.setScale(m, m, m) self.scene.setPos(0, 0, -5) # set camera self.camera.setPos(0, 0, 1) self.camera.setHpr(0, 0, 0) self.cameraSpeed = (0, 0, 0) self.maxSpeed = 0.09 self.lastKeyPressed = "" self.blockList = [] self.mobMax = 0 self.player = Player(self.camera) self.loadModel() self.createBars() self.die = False self.paused = True self.helpScreen() self.accept("p",self.flipPause) self.accept("h",self.helpFlip) self.accept("escape",sys.exit) self.taskMgr.add(self.update, "updateAll")
def gameLoop(self, task): #Compensate for inconsistent update intervals dt = globalClock.getDt() if self.GAME_MODE == MAIN_MENU: if not self.mode_initialized: self.buildMainMenu() self.mode_initialized = True if self.GAME_MODE == IN_GAME_MENU: if not self.mode_initialized: #Fog out background inGameMenuFogColor = (50, 150, 50) inGameMenuFog = Fog("inGameMenuFog") inGameMenuFog.setMode(Fog.MExponential) inGameMenuFog.setColor(*inGameMenuFogColor) inGameMenuFog.setExpDensity(.01) render.setFog(inGameMenuFog) self.buildInGameMenu() self.mode_initialized = True if self.GAME_MODE == PLAY: if not self.mode_initialized: props = WindowProperties() props.setCursorHidden(True) base.win.requestProperties(props) self.last_mouse_x = self.win.getPointer(0).getX() self.last_mouse_y = self.win.getPointer(0).getY() self.mode_initialized = True if self.play_mode == TERRAIN: self.maintainTurrets() self.avatar.move(dt) elif self.play_mode == SPACE: self.asteroidManager.maintainAsteroidField(self.avatar.objectNP.getPos(), self.avatar.speed, dt) #Handle keyboard input self.avatar.handleKeys(self.keys, self.play_mode) ########## Mouse-based viewpoint rotation ########## mouse_pos = self.win.getPointer(0) current_mouse_x = mouse_pos.getX() current_mouse_y = mouse_pos.getY() #Side to side if self.play_mode == TERRAIN: mouse_shift_x = current_mouse_x - self.last_mouse_x self.last_mouse_x = current_mouse_x if current_mouse_x < 5 or current_mouse_x >= (self.win_center_x * 1.5): base.win.movePointer(0, self.win_center_x, current_mouse_y) self.last_mouse_x = self.win_center_x yaw_shift = -((mouse_shift_x) * Camera.ROT_RATE[0]) self.avatar.yawRot += yaw_shift self.avatar.objectNP.setH(self.avatar.yawRot) #Up and down mouse_shift_y = current_mouse_y - self.last_mouse_y self.last_mouse_y = current_mouse_y if current_mouse_y < 5 or current_mouse_y >= (self.win_center_y * 1.5): base.win.movePointer(0, current_mouse_x, self.win_center_y) self.last_mouse_y = self.win_center_y pitch_shift = -((mouse_shift_y) * Camera.ROT_RATE[1]) self.mainCamera.pitchRot += pitch_shift if self.mainCamera.pitchRot > Camera.FLEX_ROT_MAG[0]: self.mainCamera.pitchRot = Camera.FLEX_ROT_MAG[0] elif self.mainCamera.pitchRot < -Camera.FLEX_ROT_MAG[0]: self.mainCamera.pitchRot = -Camera.FLEX_ROT_MAG[0] xy_plane_cam_dist = Camera.AVATAR_DIST cam_x_adjust = xy_plane_cam_dist*sin(radians(self.avatar.yawRot)) cam_y_adjust = xy_plane_cam_dist*cos(radians(self.avatar.yawRot)) cam_z_adjust = Camera.ELEVATION self.mainCamera.camObject.setH(self.avatar.yawRot) self.mainCamera.camObject.setP(self.mainCamera.pitchRot) self.mainCamera.camObject.setPos(self.avatar.objectNP.getX() + cam_x_adjust, self.avatar.objectNP.getY() - cam_y_adjust, self.avatar.objectNP.getZ() + cam_z_adjust) #Find collisions #self.cTrav.traverse(render) #print self.environ.getBounds() return Task.cont
def makeMouseRelative(self): props = WindowProperties() # initates window node props.setCursorHidden(True) # hides cursor props.setMouseMode(WindowProperties.M_relative) # cursor stays self.win.requestProperties(props) # window accepts changes
def show(self): props = WindowProperties() props.setCursorHidden(False) base.win.requestProperties(props)
def hide(self): props = WindowProperties() props.setCursorHidden(True) base.win.requestProperties(props)
def disableMouse(): base.disableMouse() props = WindowProperties() props.setCursorHidden(True) base.win.requestProperties(props)
def __init__(self): ShowBase.__init__(self) ################ #Terrain ################ ####### #self.environ = GeoMipTerrain("terrain") #self.environ.setHeightfield("../terrain/first.png") #self.environ.setColorMap("../terrain/first-c.png") #self.environ.generate() #self.environ.getRoot().setScale(1, 1, 100) #self.environ.getRoot().setPos(0, 0, 0) #self.environ.getRoot().reparentTo(render) #self.environ.getRoot().setName("terrain") #self.environ.getRoot().setCollideMask(BitMask32.bit(0)) ####### self.environ = loader.loadModel("models/environment") self.environ.setScale(.25, .25, .25) self.environ.reparentTo(render) self.environ.setCollideMask(BitMask32.bit(0)) ################ #Game objects ################ self.pandaActor = Actor("models/panda", {"walk": "models/panda-walk"}) self.pandaActor.setScale(.5, .5, .5) self.pandaActor.setHpr(180, 0, 0) #self.pandaActor.setPos(50, 50, 50) self.pandaActor.setPythonTag("moving", False) self.pandaActor.setCollideMask(BitMask32.allOff()) self.avatarYawRot = 0 self.avatarPitchRot = 0 #self.teapot = loader.loadModel("models/teapot") #self.teapot.setScale(1, 1, 1) #self.teapot.setPos(60, 60, 50) #self.teapot.reparentTo(render) self.last_mouse_y = self.win.getPointer(0).getY() ################ #Physics ################ base.enableParticles() self.avatarNP=base.render.attachNewNode(ActorNode("actor")) # Sets up the mass. Note that in this scenario, mass is not taken into consideration. self.avatarNP.node().getPhysicsObject().setMass(100.) self.avatarNP.setPos(0,0,0) # Parent our avatar to the ready to go physics node self.pandaActor.reparentTo(self.avatarNP) gravityFN=ForceNode('world-forces') gravityFNP=render.attachNewNode(gravityFN) gravityForce=LinearVectorForce(0,0,-.1) gravityForce.setMassDependent(False) gravityFN.addForce(gravityForce) # Attach it to the global physics manager base.physicsMgr.addLinearForce(gravityForce) base.physicsMgr.attachPhysicalNode(self.avatarNP.node()) ################ #Collisions ################ self.cTrav = CollisionTraverser() self.cTrav.showCollisions(base.render) self.pandaGroundRay = CollisionSphere(0,0,0,1) self.pandaGroundRayNode = CollisionNode('pandaGroundRay') self.pandaGroundRayNode.addSolid(self.pandaGroundRay) self.pandaGroundRayNode.setFromCollideMask(BitMask32.bit(0)) self.pandaGroundRayNode.setIntoCollideMask(BitMask32.allOff()) self.pandaGroundRayNodepath = self.avatarNP.attachNewNode(self.pandaGroundRayNode) self.pandaGroundRayNodepath.show() self.pandaGroundCollisionHandler = PhysicsCollisionHandler() self.pandaGroundCollisionHandler.addCollider(self.pandaGroundRayNodepath, self.avatarNP) self.cTrav.addCollider(self.pandaGroundRayNodepath, self.pandaGroundCollisionHandler) #self.teapotRay = CollisionSphere(0,0,0,5) #self.teapotGroundCol = CollisionNode('teapotRay') #self.teapotGroundCol.addSolid(self.teapotRay) #self.teapotGroundCol.setFromCollideMask(BitMask32.allOff()) #self.teapotGroundCol.setIntoCollideMask(BitMask32.bit(0)) #self.teapotGroundColNp = self.teapot.attachNewNode(self.teapotGroundCol) #self.teapotGroundHandler = CollisionHandlerQueue() #self.cTrav.addCollider(self.teapotGroundColNp, self.teapotGroundHandler) ################ #Camera ################ self.disableMouse() self.cam_away = 20 self.cam_elevation = 0 self.rot_rate = .5 self.cam_dist = (self.cam_away**2 + self.cam_elevation**2) ** .5 self.cam.setHpr(0, 0, 0) ################ #Events ################ self.taskMgr.add(self.gameLoop, "gameLoop", priority = 35) self.keys = {"w" : 0, "s" : 0, "a" : 0, "d" : 0} self.accept("w", self.setKey, ["w", 1]) self.accept("w-up", self.setKey, ["w", 0]) self.accept("s", self.setKey, ["s", 1]) self.accept("s-up", self.setKey, ["s", 0]) self.accept("a", self.setKey, ["a", 1]) self.accept("a-up", self.setKey, ["a", 0]) self.accept("d", self.setKey, ["d", 1]) self.accept("d-up", self.setKey, ["d", 0]) self.accept("wheel_up", self.zoomCamera, [-1]) self.accept("wheel_down", self.zoomCamera, [1]) self.accept('window-event', self.handleWindowEvent) props = WindowProperties() props.setCursorHidden(True) base.win.requestProperties(props) self.last_mouse_x = self.win.getPointer(0).getX()
def hideMouse(hidden): wp = WindowProperties() wp.setCursorHidden(hidden) base.win.requestProperties(wp)
class NSDApp(ShowBase): def __init__(self): ShowBase.__init__(self) self.keys = ReadKeys() self.wp = WindowProperties() self.wp.setFullscreen(1) self.wp.setSize(RESOLUTION) self.openMainWindow() self.win.requestProperties(self.wp) self.graphicsEngine.openWindows() self.setBackgroundColor(0, 0, 0) self.disableMouse() self.props = WindowProperties() self.props.setCursorHidden(True) self.win.requestProperties(self.props) self.title() def title(self): #Removes title and loads current room def destroyTitle(task): card.removeNode() startGame() def startGame(): if os.path.isfile('saves/location.json'): self.directToRoom() else: self.homeFirst() #Loads title animation titleText = self.loader.loadTexture('resources/titleText.avi') titleText.setLoopCount(1) titleText.play() #Displays title cm = CardMaker('titleText') cm.setFrameFullscreenQuad() cm.setUvRange(titleText) # noinspection PyArgumentList card = NodePath(cm.generate()) card.reparentTo(self.render2d) card.setTexture(titleText) self.taskMgr.doMethodLater(5.6, destroyTitle, 'endTitle') def saveRoom(self, cr): with open('saves/location.json', 'w+') as outfile: saveInfo = {'currentRoom': cr} json.dump(saveInfo, outfile, sort_keys=True, indent=4, ensure_ascii=False) def directToRoom(self): with open('saves/location.json') as df: data = json.load(df) def homeFirst(self): self.homeRoom() def homeRoom(self): self.saveRoom("1")