All pastes #510549 Raw Edit

Unnamed

public text v1 · immutable
·published 2007-05-25 22:57 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.speed = soya.Vector(self,0,0,-0.09)
        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.follower.look_at(self.points[self.cur_point])
        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("sword")
follower = PathFollower(scene,mypath,mymodel,0.05)