def enterThrowGear(self, point, ts=0): lookNode = render.attachNewNode('pointNode') lookNode.setPos(point) #self.gearModel.reparentTo(render) #self.gearModel.setPos(point) throwSfx = base.audio3d.loadSfx( "phase_9/audio/sfx/CHQ_VP_frisbee_gears.mp3") base.audio3d.attachSoundToObject(throwSfx, self) if hasattr(self, 'uniqueName'): name = self.uniqueName('vpThrowGear') else: name = 'vpThrowGear' self.track = Sequence(NPCLookInterval(self.vp_torso_node, lookNode, blendType='easeInOut', isBackwards=False), Func(VicePresident.throwGear, self, point), Func(base.playSfx, throwSfx), ActorInterval(self, "throw"), name=name) self.track.setDoneEvent(self.track.getName()) self.acceptOnce(self.track.getDoneEvent(), self.fsm.request, ["neutral"]) self.track.start(ts) lookNode.removeNode() del lookNode
def enterSeekTarget(self, event): dialogue = random.choice(CGG.GuardDialog[event]) self.setChat(dialogue) self.loop('walk') self.moveTrack = NPCLookInterval(self, base.localAvatar) self.moveTrack.setDoneEvent(self.uniqueName('SeekLocalAvatar')) self.acceptOnce(self.moveTrack.getDoneEvent(), self.request, ['TryToConfirmTarget']) self.moveTrack.start()
def enterTurn2Target(self, toon): self.turnIval = NPCLookInterval(self, toon, fluid=1, name=self.uniqueName('turnIval')) if self.turnIval.distance > 30: self.loop('walk') else: if self.turnIval.distance < 10.0: self.headsUp(toon) self.neutralFSM.request('talk2target') return self.turnIval.setDoneEvent(self.turnIval.getName()) self.acceptOnce(self.turnIval.getDoneEvent(), self.__handleTurningDone) self.turnIval.start()
def enterNeutral(self, ts=0): if self.getCurrentAnim() != 'stand-angry': if self.knockedDown: base.playSfx(self.chirps, looping=1) self.loop("dn_neutral") else: self.loop("stand-angry") self.track = NPCLookInterval(self.vp_torso_node, Vec3(0, 0, 0), blendType='easeInOut', name='lookAtCenter', isBackwards=False) self.track.start(ts)