def SUB_CalcMove(tdest, tspeed, func, *qwp_extra): vdestdelta = Vector(0, 0, 0) len = 0 traveltime = 0 if not tspeed: qc.objerror('No speed is defined!') qc.self.think1 = func qc.self.finaldest = tdest qc.self.think = SUB_CalcMoveDone if tdest == qc.self.origin: qc.self.velocity = Vector(0, 0, 0) qc.self.nextthink = qc.self.ltime + 0.1 return # set destdelta to the vector needed to move vdestdelta = tdest - qc.self.origin # calculate length of vector len = vdestdelta.length() # divide by speed to get time to reach dest traveltime = len / tspeed if traveltime < 0.03: traveltime = 0.03 # set nextthink to trigger a think when dest is reached qc.self.nextthink = qc.self.ltime + traveltime # scale the destdelta vector by the time spent traveling to get velocity qc.self.velocity = vdestdelta * (1 / traveltime) # qcc won't take vec/float
def SUB_CalcAngleMove(destangle, tspeed, func, *qwp_extra): destdelta = Vector(0, 0, 0) len = 0 traveltime = 0 if not tspeed: qc.objerror('No speed is defined!') # set destdelta to the vector needed to move destdelta = destangle - qc.self.angles # calculate length of vector len = destdelta.length() # divide by speed to get time to reach dest traveltime = len / tspeed # set nextthink to trigger a think when dest is reached qc.self.nextthink = qc.self.ltime + traveltime # scale the destdelta vector by the time spent traveling to get velocity qc.self.avelocity = destdelta * (1 / traveltime) qc.self.think1 = func qc.self.finalangle = destangle qc.self.think = SUB_CalcAngleMoveDone