def changeYaw(self, yawSpeed = None): if not yawSpeed: yawSpeed = self.yawSpeed current = CIGlobals.angleMod(self.getYaw()) ideal = self.idealYaw #print(current, ideal) if current != ideal: speed = yawSpeed * globalClock.getDt() * 10 move = ideal - current if ideal > current: if move >= 180: move -= 360 else: if move <= -180: move += 360 if move > 0: if move > speed: # turning left move = speed else: if move < -speed: # turning right move = -speed self.setYaw(CIGlobals.angleMod(current + move)) else: move = 0 return move
def isPlayerInVisionCone_FromPlayer(self, plyr): # Am I in the player's vision cone? toSelf = self.getPos() - plyr.getPos() yaw = CIGlobals.angleMod(CIGlobals.vecToYaw(toSelf)) diff = CIGlobals.angleDiff(yaw, CIGlobals.angleMod(plyr.getH())) #print("Vision cone from player->self:", diff) return abs(diff) <= self.MAX_VISION_ANGLE
def isPlayerInVisionCone(self, plyr): # Is the player in my angle of vision? toPlyr = plyr.getPos() - self.getPos() yaw = CIGlobals.angleMod(CIGlobals.vecToYaw(toPlyr)) diff = CIGlobals.angleDiff(yaw, CIGlobals.angleMod(self.getYaw())) #print("Vision cone from self->player:", diff) return abs(diff) <= self.MAX_VISION_ANGLE
def getYawDiff(self): currentYaw = CIGlobals.angleMod(self.getYaw()) if currentYaw == self.idealYaw: return 0 return CIGlobals.angleDiff(self.idealYaw, currentYaw)
def setIdealYaw(self, yaw): self.idealYaw = CIGlobals.angleMod(yaw)