Point & Click Turning Bug!

The way it is now, the heading is being reduced before the movement sequence starts. This is why the player is spinning each time. The reduction needs to happen after the turn interval has finished.

    #define this somewhere
    def reducePlayerH(self):
        """reduce the player heading to eliminate wrap-around"""
        reducedH = self.player.getH()%360.0
        self.player.setH(reducedH) 
        .
        .
        .
        
        #in moveToPosition
        self.playerMovement = Sequence(playerTurn, Func(self.reduceH), playerMove) 
        

Alternatively, you can reduce the player heading before you calculate the closesDestAngle:


        # Calculate the new hpr
        self.npLook.setPos(self.player.getPos())
        self.npLook.lookAt(self.position) # Look at the clicked position.

        reducedH = self.player.getH()%360.0
        self.player.setH(reducedH) 

        currHpr = self.player.getHpr()
        newHpr = self.npLook.getHpr()
        newH = closestDestAngle(currHpr[0], newHpr[0])