from panda3d.core import * from otp.movement import Impulse class PetLeash(Impulse.Impulse): def __init__(self, origin, length): Impulse.Impulse.__init__(self) self.origin = origin self.length = length def _process(self, dt): Impulse.Impulse._process(self, dt) myPos = self.nodePath.getPos() myDist = self.VecType(myPos - self.origin.getPos()).length() if myDist > self.length: excess = myDist - self.length shove = self.VecType(myPos) shove.normalize() shove *= -excess self.mover.addShove(shove)