def __faceOff(self, ts, name, callback): elevatorPos = self.toons[0].getPos() if len(self.suits) == 1: leaderIndex = 0 if self.bossBattle == 1: leaderIndex = 1 maxTypeNum = -1 for suit in self.suits: suitTypeNum = AvatarDNA.getSuitType(suit.dna.name) if maxTypeNum < suitTypeNum: maxTypeNum = suitTypeNum leaderIndex = self.suits.index(suit) delay = FACEOFF_TAUNT_T suitTracks = [] suitLeader = None for suit in self.suits: suit.setState('Battle') suitIsLeader = 0 suitIvals = [] suitIvals.append(FunctionInterval(suit.loop, extraArgs=['neutral'])) suitIvals.append( FunctionInterval(suit.headsUp, extraArgs=[elevatorPos])) if self.suits.index(suit) == leaderIndex: suitLeader = suit suitIsLeader = 1 if self.bossBattle == 1: taunt = Localizer.BattleBldgBossTaunt else: taunt = SuitBattleGlobals.getFaceoffTaunt( suit.getStyleName(), suit.doId) suitIvals.append( FunctionInterval(suit.setChatAbsolute, extraArgs=[taunt, CFSpeech | CFTimeout])) destPos, destHpr = self.getActorPosHpr(suit, self.suits) suitIvals.append(WaitInterval(delay)) if suitIsLeader == 1: suitIvals.append(FunctionInterval(suit.clearChat)) suitIvals.append(self.createAdjustInterval(suit, destPos, destHpr)) suitTracks.append(Track(suitIvals)) suitTrack = Track([MultiTrack(suitTracks)]) toonTracks = [] for toon in self.toons: toonIvals = [] destPos, destHpr = self.getActorPosHpr(toon, self.toons) toonIvals.append((delay, self.createAdjustInterval(toon, destPos, destHpr, toon=1, run=1))) toonTracks.append(Track(toonIvals)) toonTrack = Track([MultiTrack(toonTracks)]) camIvals = [] def setCamFov(fov): base.camLens.setFov(fov) camIvals.append( FunctionInterval(camera.wrtReparentTo, extraArgs=[suitLeader])) camIvals.append(FunctionInterval(setCamFov, extraArgs=[self.camFOFov])) suitHeight = suitLeader.getHeight() suitOffsetPnt = Point3(0, 0, suitHeight) MidTauntCamHeight = suitHeight * 0.66 MidTauntCamHeightLim = suitHeight - 1.8 if MidTauntCamHeight < MidTauntCamHeightLim: MidTauntCamHeight = MidTauntCamHeightLim TauntCamY = 18 TauntCamX = 0 TauntCamHeight = whrandom.choice((MidTauntCamHeight, 1, 11)) camIvals.append( FunctionInterval(camera.setPos, extraArgs=[TauntCamX, TauntCamY, TauntCamHeight])) camIvals.append( FunctionInterval(camera.lookAt, extraArgs=[suitLeader, suitOffsetPnt])) camIvals.append(WaitInterval(delay)) camPos = Point3(0, -6, 4) camHpr = Vec3(0, 0, 0) camIvals.append( FunctionInterval(camera.reparentTo, extraArgs=[toonbase.localToon])) camIvals.append( FunctionInterval(setCamFov, extraArgs=[DefaultCameraFov])) camIvals.append( FunctionInterval(camera.setPosHpr, extraArgs=[camPos, camHpr])) camTrack = Track(camIvals) mtrack = MultiTrack([suitTrack, toonTrack, camTrack]) done = FunctionInterval(callback) track = Track([mtrack, done], name) track.start(ts) self.activeIntervals[name] = track return