def spawnManager(self): cameras = [] for cameraId in range(5): cam = DistributedElectionCameraAI(simbase.air) cam.setState('Waiting', globalClockDelta.getRealNetworkTime(), 31, -5, 8, -80, -5, 0) cam.generateWithRequired(2000) cam.b_setPosHpr(0, 0, 10, 0, 0, 0) cameras.append(cam.getDoId()) self.setMainCamera(cameras[0]) self.setCameraIds(cameras) self.generateWithRequired(2000)
def cameras(cmd, args=''): if not hasattr(simbase.air, 'cameraManager') and cmd != 'spawn': return 'There is no Camera Manager!' if cmd == 'spawn': if hasattr(simbase.air, 'cameraManager'): return 'A Camera Manager already exists!' camMgr = DistributedElectionCameraManagerAI(simbase.air) camMgr.spawnManager() return 'Camera Manager has been spawned successfully.' args = args.split() camMgr = simbase.air.cameraManager if cmd == 'gib': if len(args) != 1: return 'I need to know how many cameras to gib!' num = int(args[0]) if num <= 0: return "I can't gib you less than 1 camera." cameras = camMgr.ids for i in range(num): cam = DistributedElectionCameraAI(simbase.air) cam.setState('Waiting', globalClockDelta.getRealNetworkTime(), 0, 0, 0, 0, 0, 0) cam.generateWithRequired(2000) cam.b_setPosHpr(0, 0, 0, 0, 0, 0) cameras.append(cam.getDoId()) camMgr.b_setCameraIds(cameras) return 'I gib %d cameras to you.' % num if cmd == 'move': if len(args) < 2: return "You haven't specified enough parameters!" camId = int(args[0]) if not 0 <= camId <= len(camMgr.ids): return 'Invalid Camera ID specified.' cam = simbase.air.doId2do.get(camMgr.ids[camId], None) if not cam: return 'Could not locate camera in the AIR doId2do table.' if args[1] == 'here': av = spellbook.getTarget() cam._moveTo(av.getX(), av.getY(), av.getZ() + 3.0, av.getH(), 0) return 'Camera %d is moving to %s.' % (camId, av.getName()) if args[1] == 'to': if len(args) < 7: return "You haven't specified enough position parameters! (x, y, z, h, p)" cam._moveTo(float(args[2]), float(args[3]), float(args[4]), float(args[5]), float(args[6])) return 'Camera %d is moving to the specified location.' % camId return "Invalid arguments for 'move' specified. (to, here valid)" if cmd == 'follow': if len(args) < 2: return "You haven't specified enough parameters!" camId = int(args[0]) if not 0 <= camId <= len(camMgr.ids): return 'Invalid Camera ID specified.' cam = simbase.air.doId2do.get(camMgr.ids[camId], None) if not cam: return 'Could not locate camera in the AIR doId2do table.' if args[1] == 'behind': cam._followBehind(spellbook.getTarget()) return 'Camera %d is now stalking target from behind.' % camId if args[1] == 'front': cam._watch(spellbook.getTarget()) return 'Camera %d is now stalking target from the front.' % camId return "Invalid arguments for 'follow' specified. (behind, front)" if cmd == 'setmain': camId = int(args[0]) if not 0 <= camId <= len(camMgr.ids): return 'Invalid Camera ID specified.' camMgr.b_setMainCamera(camMgr.ids[camId]) return 'Camera %d is now main camera.' % camId return "That command doesn't exist. (try setmain, follow, or move)"
def cameras(cmd, args=''): if not hasattr(simbase.air, 'cameraManager') and cmd != 'spawn': return "There is no Camera Manager!" if cmd == 'spawn': if hasattr(simbase.air, 'cameraManager'): return "A Camera Manager already exists!" camMgr = DistributedElectionCameraManagerAI(simbase.air) camMgr.spawnManager() return "Camera Manager has been spawned successfully." args = args.split() camMgr = simbase.air.cameraManager if cmd == 'gib': if len(args) != 1: return 'I need to know how many cameras to gib!' num = int(args[0]) if num <= 0: return 'I can\'t gib you less than 1 camera.' cameras = camMgr.ids for i in range(num): cam = DistributedElectionCameraAI(simbase.air) cam.setState('Waiting', globalClockDelta.getRealNetworkTime(), 0, 0, 0, 0, 0, 0) cam.generateWithRequired(2000) cam.b_setPosHpr(0, 0, 0, 0, 0, 0) cameras.append(cam.getDoId()) camMgr.b_setCameraIds(cameras) return 'I gib %d cameras to you.' % num if cmd == 'move': # A bunch of sanity checks... if len(args) < 2: return "You haven't specified enough parameters!" camId = int(args[0]) if not 0 <= camId <= len(camMgr.ids): return "Invalid Camera ID specified." cam = simbase.air.doId2do.get(camMgr.ids[camId], None) if not cam: return "Could not locate camera in the AIR doId2do table." # Lets move the camera somewhere... if args[1] == 'here': av = spellbook.getTarget() cam._moveTo(av.getX(), av.getY(), av.getZ() + 3.0, av.getH(), 0) return "Camera %d is moving to %s." % (camId, av.getName()) if args[1] == 'to': # This is fun... if len(args) < 7: return "You haven't specified enough position parameters! (x, y, z, h, p)" cam._moveTo(float(args[2]), float(args[3]), float(args[4]), float(args[5]), float(args[6])) return "Camera %d is moving to the specified location." % camId return "Invalid arguments for 'move' specified. (to, here valid)" if cmd == 'follow': if len(args) < 2: return "You haven't specified enough parameters!" camId = int(args[0]) if not 0 <= camId <= len(camMgr.ids): return "Invalid Camera ID specified." cam = simbase.air.doId2do.get(camMgr.ids[camId], None) if not cam: return "Could not locate camera in the AIR doId2do table." if args[1] == 'behind': cam._followBehind(spellbook.getTarget()) return "Camera %d is now stalking target from behind." % camId elif args[1] == 'front': cam._watch(spellbook.getTarget()) return "Camera %d is now stalking target from the front." % camId return "Invalid arguments for 'follow' specified. (behind, front)" if cmd == 'setmain': camId = int(args[0]) if not 0 <= camId <= len(camMgr.ids): return "Invalid Camera ID specified." camMgr.b_setMainCamera(camMgr.ids[camId]) return 'Camera %d is now main camera.' % camId return 'That command doesn\'t exist. (try setmain, follow, or move)'