All pastes #510952 Raw Edit

Path

public python v1 · immutable
#510952 ·published 2007-05-26 04:37 UTC
rendered paste body
class PathFollower(soya.World):    """A World that Follows the path of the points. PathFollower(parent,points,model)"""    def __init__(self,parent,points,model,speed):        soya.World.__init__(self,parent)        self.points = points        self.speed = speed        self.modela = model        self.follower = soya.Body(self,self.modela)        self.state1 = soya.CoordSystState(self)	self.state2 = soya.CoordSystState(self)        self.cur_point = 0        self.state1.move(self.points[self.cur_point])        self.state2.move(self.points[self.cur_point+1])        self.factor = 1.0        self.maxpoint = len(points)    def begin_round(self):        soya.World.begin_round(self)        #print self.distance_to(self.points[self.cur_point])        #print self.factor        if self.factor > 1:            self.cur_point = self.cur_point +1                        if self.maxpoint == self.cur_point:                self.cur_point = 0            self.state1.move(self.points[self.cur_point-1])            self.state2.move(self.points[self.cur_point])            self.state1.look_at(self.points[self.cur_point])            try:                self.state2.look_at(self.points[self.cur_point+1])            except IndexError:                self.state2.look_at(self.points[0])            #self.follower.look_at(self.points[self.cur_point])            self.factor = 0                def advance_time(self,p):        soya.World.advance_time(self,p)        self.factor += self.speed * p        self.interpolate(self.state1, self.state2, self.factor)        #self.add_mul_vector(p,self.speed)mypath = [soya.Point(scene, 3,0,0),          soya.Point(scene, 0,-5,-1),          soya.Point(scene, 2,0,-3),          soya.Point(scene, -2,0,-5)]mymodel = soya.Model.get("caterpillar_head")follower = PathFollower(scene,mypath,mymodel,0.05)