*** empty log message ***

This commit is contained in:
Mark Mine 2001-02-17 23:30:23 +00:00
parent 1f1427fb8d
commit 8d4e5940d5

View File

@ -109,7 +109,7 @@ class MopathRecorder(AppShell, PandaObject):
self.startStopHook = 'f6' self.startStopHook = 'f6'
self.keyframeHook = 'f10' self.keyframeHook = 'f10'
# Curve fitter object # Curve fitter object
self.startPos = Point3(0) self.lastPos = Point3(0)
self.xyzCurveFitter = CurveFitter() self.xyzCurveFitter = CurveFitter()
self.hprCurveFitter = CurveFitter() self.hprCurveFitter = CurveFitter()
# Curve variables # Curve variables
@ -139,6 +139,7 @@ class MopathRecorder(AppShell, PandaObject):
self.desampleFrequency = 1 self.desampleFrequency = 1
self.numSamples = 100 self.numSamples = 100
self.recordStart = 0.0 self.recordStart = 0.0
self.deltaTime = 0.0
self.controlStart = 0.0 self.controlStart = 0.0
self.controlStop = 0.0 self.controlStop = 0.0
self.recordStop = 0.0 self.recordStop = 0.0
@ -410,7 +411,7 @@ class MopathRecorder(AppShell, PandaObject):
widget = self.createEntryScale( widget = self.createEntryScale(
resampleFrame, 'Resample', 'Num. Samples', resampleFrame, 'Resample', 'Num. Samples',
'Number of samples in resampled curve', 'Number of samples in resampled curve',
resolution = 1, max = 1000, command = self.setNumSamples, resolution = 1, min = 2, max = 1000, command = self.setNumSamples,
side = LEFT) side = LEFT)
widget.component('hull')['relief'] = RIDGE widget.component('hull')['relief'] = RIDGE
widget.onRelease = widget.onReturnRelease = self.sampleCurve widget.onRelease = widget.onReturnRelease = self.sampleCurve
@ -744,6 +745,7 @@ class MopathRecorder(AppShell, PandaObject):
self.ignore(self.startStopHook) self.ignore(self.startStopHook)
self.ignore(self.keyframeHook) self.ignore(self.keyframeHook)
self.curveNodePath.reparentTo(self.recorderNodePath) self.curveNodePath.reparentTo(self.recorderNodePath)
self.trace.reparentTo(self.recorderNodePath)
self.recorderNodePath.removeNode() self.recorderNodePath.removeNode()
# Make sure markers are deselected # Make sure markers are deselected
direct.deselect(self.playbackMarker) direct.deselect(self.playbackMarker)
@ -937,8 +939,11 @@ class MopathRecorder(AppShell, PandaObject):
# Keyframe mode? # Keyframe mode?
if (self.samplingMode == 'Keyframe'): if (self.samplingMode == 'Keyframe'):
# Record first point # Record first point
self.startPos = Point3( self.lastPos.assign(Point3(
self['nodePath'].getPos(self.nodePathParent)) self['nodePath'].getPos(self.nodePathParent)))
# Init delta time
self.deltaTime = 0.0
# Record first point
self.recordPoint(self.recordStart) self.recordPoint(self.recordStart)
# Everything else # Everything else
else: else:
@ -1010,15 +1015,19 @@ class MopathRecorder(AppShell, PandaObject):
# This will automatically add the first point # This will automatically add the first point
self.toggleRecordVar() self.toggleRecordVar()
else: else:
time = (self.recordStart + # Use distance as a time
(Vec3(self['nodePath'].getPos(self.nodePathParent) - pos = self['nodePath'].getPos(self.nodePathParent)
self.startPos).length())) deltaPos = Vec3(pos - self.lastPos).length()
# Did we move at all? if deltaPos != 0:
if len(self.pointSet) > 0: # If we've moved at all, use delta Pos as time
if time == self.pointSet[-1][0]: self.deltaTime = self.deltaTime + deltaPos
print 'No delta' else:
return # Otherwise add one second
self.recordPoint(time) self.deltaTime = self.deltaTime + 1.0
# Record point at new time
self.recordPoint(self.recordStart + self.deltaTime)
# Update last pos
self.lastPos.assign(pos)
def easeInOut(self, t): def easeInOut(self, t):
x = t * t x = t * t
@ -1320,16 +1329,23 @@ class MopathRecorder(AppShell, PandaObject):
cTime = state.currentTime + dTime cTime = state.currentTime + dTime
# Stop task if not looping and at end of curve # Stop task if not looping and at end of curve
# Or if refining curve and past recordStop # Or if refining curve and past recordStop
if (((self.loopPlayback == 0) & (cTime > self.maxT)) | if ((self.recordingType.get() == 'Refine') &
((self.recordingType.get() == 'Extend') & (cTime > self.maxT)) | (cTime > self.recordStop)):
((self.recordingType.get() == 'Refine') & # Go to recordStop
(cTime > self.recordStop))): self.getWidget('Playback', 'Time').set(self.recordStop)
# Then stop playback
self.stopPlayback() self.stopPlayback()
if (self.recordingType.get() == 'Refine'): # Also kill record task
# Also kill record task self.toggleRecordVar()
self.toggleRecordVar()
return Task.done return Task.done
# Otherwise go to specified time elif (((self.loopPlayback == 0) & (cTime > self.maxT)) |
((self.recordingType.get() == 'Extend') & (cTime > self.maxT))):
# Go to maxT
self.getWidget('Playback', 'Time').set(self.maxT)
# Then stop playback
self.stopPlayback()
return Task.done
# Otherwise go to specified time and continue
self.getWidget('Playback', 'Time').set(cTime) self.getWidget('Playback', 'Time').set(cTime)
state.currentTime = cTime state.currentTime = cTime
return Task.cont return Task.cont
@ -1394,7 +1410,7 @@ class MopathRecorder(AppShell, PandaObject):
lookAtCS = self.playbackMarker.attachNewNode('lookAt') lookAtCS = self.playbackMarker.attachNewNode('lookAt')
# Now sample the hprNurbsCurve using the same delta T # Now sample the hprNurbsCurve using the same delta T
for i in range(self.numSamples): for i in range(self.numSamples):
t = self.maxT * (i / float(self.numSamples)) t = self.maxT * (i / float(self.numSamples - 1))
hpr = Point3(0) hpr = Point3(0)
if self.fForward: if self.fForward:
# Use xyz curve tangent # Use xyz curve tangent