def __init__(self, doneEvent, character, diffPath=None): StateData.StateData.__init__(self, doneEvent) self._CharWalkStateAI__doneEvent = doneEvent self.character = character if diffPath == None: self.paths = CCharPaths.getPaths(character.getName(), character.getCCLocation()) else: self.paths = CCharPaths.getPaths(diffPath, character.getCCLocation()) self.speed = character.walkSpeed() self._CharWalkStateAI__lastWalkNode = CCharPaths.startNode self._CharWalkStateAI__curWalkNode = CCharPaths.startNode
def __init__(self, doneEvent, character, diffPath=None): StateData.StateData.__init__(self, doneEvent) self.__doneEvent = doneEvent self.character = character if diffPath == None: self.paths = CCharPaths.getPaths(character.getName(), character.getCCLocation()) else: self.paths = CCharPaths.getPaths(diffPath, character.getCCLocation()) self.speed = character.walkSpeed() self.__lastWalkNode = CCharPaths.startNode self.__curWalkNode = CCharPaths.startNode return
def generate(self, diffPath = None): DistributedChar.DistributedChar.generate(self) if diffPath == None: self.setPos(CCharPaths.getNodePos(CCharPaths.startNode, CCharPaths.getPaths(self.getName(), self.getCCLocation()))) else: self.setPos(CCharPaths.getNodePos(CCharPaths.startNode, CCharPaths.getPaths(diffPath, self.getCCLocation()))) self.setHpr(0, 0, 0) self.setParent(ToontownGlobals.SPRender) self.startBlink() self.startEarTask() self.chatTrack = Sequence() self.chatterDialogue = None self.acceptOnce('enter' + self.cSphereNode.getName(), self._DistributedCCharBase__handleCollisionSphereEnter) self.accept('exitSafeZone', self._DistributedCCharBase__handleExitSafeZone)
def __init__(self, doneEvent, character, diffPath = None): StateData.StateData.__init__(self, doneEvent) self.doneEvent = doneEvent self.character = character if diffPath == None: self.paths = CCharPaths.getPaths(character.getName(), character.getCCLocation()) else: self.paths = CCharPaths.getPaths(diffPath, character.getCCLocation()) self.speed = character.walkSpeed() self.offsetX = 0 self.offsetY = 0 self.oldOffsetX = 0 self.olfOffsetY = 0 self.walkTrack = None
def __init__(self, doneEvent, character, diffPath = None): StateData.StateData.__init__(self, doneEvent) self.doneEvent = doneEvent self.character = character if diffPath == None: self.paths = CCharPaths.getPaths(character.getName(), character.getCCLocation()) else: self.paths = CCharPaths.getPaths(diffPath, character.getCCLocation()) self.speed = character.walkSpeed() self.offsetX = 0 self.offsetY = 0 self.oldOffsetX = 0 self.olfOffsetY = 0 self.walkTrack = None return
def generate(self, diffPath = None): DistributedChar.DistributedChar.generate(self) if diffPath == None: self.setPos(CCharPaths.getNodePos(CCharPaths.startNode, CCharPaths.getPaths(self.getName(), self.getCCLocation()))) else: self.setPos(CCharPaths.getNodePos(CCharPaths.startNode, CCharPaths.getPaths(diffPath, self.getCCLocation()))) self.setHpr(0, 0, 0) self.setParent(ToontownGlobals.SPRender) self.startBlink() self.startEarTask() self.chatTrack = Sequence() self.chatterDialogue = None self.acceptOnce('enter' + self.cSphereNode.getName(), self.__handleCollisionSphereEnter) self.accept('exitSafeZone', self.__handleExitSafeZone) return
def __init__(self, doneEvent, character, followedChar): StateData.StateData.__init__(self, doneEvent) self._CharFollowChipStateAI__doneEvent = doneEvent self.character = character self.followedChar = followedChar self.paths = CCharPaths.getPaths(character.getName(), character.getCCLocation()) self.speed = character.walkSpeed() self._CharFollowChipStateAI__lastWalkNode = CCharPaths.startNode self._CharFollowChipStateAI__curWalkNode = CCharPaths.startNode
def __init__(self, doneEvent, character, followedChar): StateData.StateData.__init__(self, doneEvent) self.__doneEvent = doneEvent self.character = character self.followedChar = followedChar self.paths = CCharPaths.getPaths(character.getName(), character.getCCLocation()) self.speed = character.walkSpeed() self.__lastWalkNode = CCharPaths.startNode self.__curWalkNode = CCharPaths.startNode
def makePathTrack(self, nodePath, posPoints, velocity, raycast=0): retval = Sequence() if raycast: retval.append(Func(nodePath.enableRaycast, 1)) chip = base.cr.doId2do.get(self.chipId) self.chipPaths = CCharPaths.getPaths(chip.getName(), chip.getCCLocation()) self.posPoints = posPoints chipDuration = chip.walk.walkTrack.getDuration() self.notify.debug('chipDuration = %f' % chipDuration) chipDistance = CCharPaths.getWalkDistance(self.srcNode, self.destNode, ToontownGlobals.ChipSpeed, self.chipPaths) self.revolutions = chipDistance / self.completeRevolutionDistance srcOffset = (0, 0) if self.srcNode in self.offsetDict: srcOffset = self.offsetDict[self.srcNode] srcTheta = math.atan2(srcOffset[1], srcOffset[0]) if srcTheta < 0: srcTheta += 2 * math.pi if srcTheta > 0: srcRev = (2 * math.pi - srcTheta) / 2 * math.pi else: srcRev = 0 self.srcTheta = srcTheta destOffset = (0, 0) if self.destNode in self.offsetDict: destOffset = self.offsetDict[self.destNode] destTheta = math.atan2(destOffset[1], destOffset[0]) if destTheta < 0: destTheta += 2 * math.pi self.destTheta = destTheta self.revolutions += srcRev endingTheta = srcTheta + (self.revolutions % 1.0) * 2 * math.pi diffTheta = destTheta - endingTheta destRev = diffTheta / 2 * math.pi self.revolutions += destRev while self.revolutions < 1: self.revolutions += 1 def positionDale(t): self.orbitChip(t) retval.append(LerpFunctionInterval(positionDale, chipDuration)) if raycast: retval.append(Func(nodePath.enableRaycast, 0)) return retval
def generate(self, diffPath=None): """ This method is called when the DistributedObject is reintroduced to the world, either for the first time or from the cache. """ DistributedChar.DistributedChar.generate(self) if diffPath == None: self.setPos( CCharPaths.getNodePos( CCharPaths.startNode, CCharPaths.getPaths(self.getName(), self.getCCLocation()))) else: self.setPos( CCharPaths.getNodePos( CCharPaths.startNode, CCharPaths.getPaths(diffPath, self.getCCLocation()))) self.setHpr(0, 0, 0) # The characters can be immediately parented to render. self.setParent(ToontownGlobals.SPRender) # hmm. does this character ever blink? self.startBlink() self.startEarTask() # the character's chat track self.chatTrack = Sequence() # Currently playing dialog self.chatterDialogue = None # listen for the collision sphere enter event self.acceptOnce("enter" + self.cSphereNode.getName(), self.__handleCollisionSphereEnter) # listen for safe zone exit event self.accept("exitSafeZone", self.__handleExitSafeZone)
def generate(self): DistributedChar.DistributedChar.generate(self) self.setPos( CCharPaths.getNodePos(CCharPaths.startNode, CCharPaths.getPaths(self.getName()))) self.setHpr(0, 0, 0) self.setParent(ToontownGlobals.SPRender) self.startBlink() self.startEarTask() self.chatTrack = Sequence() self.acceptOnce('enter' + self.cSphereNode.getName(), self.__handleCollisionSphereEnter) self.accept('exitSafeZone', self.__handleExitSafeZone)
def makePathTrack(self, nodePath, posPoints, velocity, raycast = 0): retval = Sequence() if raycast: retval.append(Func(nodePath.enableRaycast, 1)) chip = base.cr.doId2do.get(self.chipId) self.chipPaths = CCharPaths.getPaths(chip.getName(), chip.getCCLocation()) self.posPoints = posPoints chipDuration = chip.walk.walkTrack.getDuration() self.notify.debug('chipDuration = %f' % chipDuration) chipDistance = CCharPaths.getWalkDistance(self.srcNode, self.destNode, ToontownGlobals.ChipSpeed, self.chipPaths) self.revolutions = chipDistance / self.completeRevolutionDistance srcOffset = (0, 0) if self.srcNode in self.offsetDict: srcOffset = self.offsetDict[self.srcNode] srcTheta = math.atan2(srcOffset[1], srcOffset[0]) if srcTheta < 0: srcTheta += 2 * math.pi if srcTheta > 0: srcRev = (2 * math.pi - srcTheta) / 2 * math.pi else: srcRev = 0 self.srcTheta = srcTheta destOffset = (0, 0) if self.destNode in self.offsetDict: destOffset = self.offsetDict[self.destNode] destTheta = math.atan2(destOffset[1], destOffset[0]) if destTheta < 0: destTheta += 2 * math.pi self.destTheta = destTheta self.revolutions += srcRev endingTheta = srcTheta + (self.revolutions % 1.0) * 2 * math.pi diffTheta = destTheta - endingTheta destRev = diffTheta / 2 * math.pi self.revolutions += destRev while self.revolutions < 1: self.revolutions += 1 def positionDale(t): self.orbitChip(t) retval.append(LerpFunctionInterval(positionDale, chipDuration)) if raycast: retval.append(Func(nodePath.enableRaycast, 0)) return retval
def makePathTrack(self, nodePath, posPoints, velocity, raycast=0): """Create the interval of dale orbiting chip.""" retval = Sequence() if raycast: retval.append( Func(nodePath.enableRaycast, 1)) chip = base.cr.doId2do.get(self.chipId) self.chipPaths = CCharPaths.getPaths( chip.getName(), chip.getCCLocation() ) self.posPoints = posPoints #chipDuration = CCharPaths.getWalkDuration(self.srcNode, # self.destNode, # ToontownGlobals.ChipSpeed, # self.chipPaths) # using getWalkDuration returns a bigger duration than chip uses chipDuration = chip.walk.walkTrack.getDuration() self.notify.debug('chipDuration = %f' % chipDuration) chipDistance = CCharPaths.getWalkDistance(self.srcNode, self.destNode, ToontownGlobals.ChipSpeed, self.chipPaths) #import pdb; pdb.set_trace() self.revolutions = chipDistance / self.completeRevolutionDistance # now lets add in the extra revs from the randomization offset srcOffset = (0,0) if self.srcNode in self.offsetDict: srcOffset = self.offsetDict[self.srcNode] srcTheta = math.atan2(srcOffset[1], srcOffset[0]) # srcTheta returns a value in range -pi to pi if srcTheta < 0: srcTheta += 2 * math.pi if srcTheta > 0: srcRev = ( (2 * math.pi) - srcTheta) / ( 2 * math.pi) else: srcRev = 0 self.srcTheta = srcTheta destOffset = (0,0) if self.destNode in self.offsetDict: destOffset = self.offsetDict[self.destNode] destTheta = math.atan2(destOffset[1], destOffset[0]) # destTheta returns a value in range -pi to pi if destTheta < 0: destTheta += 2 * math.pi self.destTheta = destTheta self.revolutions += srcRev endingTheta = srcTheta+ ((self.revolutions % 1.0) * 2 * math.pi) diffTheta = destTheta - endingTheta destRev = diffTheta / ( 2 * math.pi) self.revolutions += destRev # really short segments might produce negative revolutions while self.revolutions < 1: self.revolutions += 1 def positionDale(t): self.orbitChip(t) retval.append(LerpFunctionInterval(positionDale, chipDuration)) if raycast: retval.append( Func(nodePath.enableRaycast, 0)) return retval
def __init__(self, doneEvent, character): StateData.StateData.__init__(self, doneEvent) self.__doneEvent = doneEvent self.character = character self.paths = CCharPaths.getPaths(character.getName()) self.speed = character.walkSpeed()