Exemplo n.º 1
0
 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
Exemplo n.º 2
0
 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)
Exemplo n.º 4
0
 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
Exemplo n.º 5
0
 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
Exemplo n.º 6
0
 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
Exemplo n.º 7
0
 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
Exemplo n.º 8
0
 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
Exemplo n.º 10
0
    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)
Exemplo n.º 11
0
 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)
Exemplo n.º 12
0
    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
Exemplo n.º 13
0
    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
Exemplo n.º 14
0
 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()