From 61d882ddd4f7dc14849ef66e5d0085e2711fe59b Mon Sep 17 00:00:00 2001 From: Mark Mine Date: Thu, 13 Dec 2001 21:59:46 +0000 Subject: [PATCH] *** empty log message *** --- direct/src/directutil/Mopath.py | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/direct/src/directutil/Mopath.py b/direct/src/directutil/Mopath.py index aa45967448..f299ea6f9b 100644 --- a/direct/src/directutil/Mopath.py +++ b/direct/src/directutil/Mopath.py @@ -12,21 +12,23 @@ class Mopath(PandaObject): name = 'mopath%d' % self.nameIndex self.nameIndex = self.nameIndex + 1 self.name = name + self.tPoint = Point3(0) self.reset() def getMaxT(self): return self.maxT def loadFile(self, filename): + self.reset() nodePath = loader.loadModel(filename) if nodePath: self.__extractCurves(nodePath) - if (self.xyzNurbsCurve != None): + if (self.tNurbsCurve != None): + self.maxT = self.tNurbsCurve[-1].getMaxT() + elif (self.xyzNurbsCurve != None): self.maxT = self.xyzNurbsCurve.getMaxT() elif (self.hprNurbsCurve != None): self.maxT = self.hprNurbsCurve.getMaxT() - elif (self.tNurbsCurve != None): - self.maxT = self.tNurbsCurve.getMaxT() else: print 'Mopath: no valid curves in file: %s' % filename @@ -40,7 +42,7 @@ class Mopath(PandaObject): self.loop = 0 self.xyzNurbsCurve = None self.hprNurbsCurve = None - self.tNurbsCurve = None + self.tNurbsCurve = [] self.node = None def __extractCurves(self, nodePath): @@ -56,12 +58,22 @@ class Mopath(PandaObject): else: print 'Mopath: got a PCT_NONE curve and an XYZ Curve!' elif (node.getCurveType() == PCTT): - self.tNurbsCurve = node + self.tNurbsCurve.append(node) else: # Iterate over children if any for child in nodePath.getChildrenAsList(): self.__extractCurves(child) + def calcTime(self, tIn): + return self.__calcTime(tIn, self.tNurbsCurve) + + def __calcTime(self, tIn, tCurveList): + if tCurveList: + tCurveList[-1].getPoint(tIn, self.tPoint) + return self.__calcTime(self.tPoint[0], tCurveList[:-1]) + else: + return tIn + def getFinalState(self): """ getFinalState() """ @@ -77,7 +89,7 @@ class Mopath(PandaObject): if (self.xyzNurbsCurve == None) and (self.hprNurbsCurve == None): print 'Mopath: Mopath has no curves' return - self.playbackTime = CLAMP(time, 0.0, self.maxT) + self.playbackTime = self.calcTime(CLAMP(time, 0.0, self.maxT)) if (self.xyzNurbsCurve != None): pos = Point3(0) self.xyzNurbsCurve.getPoint(self.playbackTime, pos)