mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-04 02:42:49 -04:00
*** empty log message ***
This commit is contained in:
parent
63a253f0bd
commit
99094b4a9d
@ -24,7 +24,7 @@ class ActorInterval(Interval):
|
||||
# will play once and then nothing will happen for the remainder of the
|
||||
# interval
|
||||
def __init__(self, actor, animName, loop=0, duration=0.0,
|
||||
startTime = 0.0, name=None):
|
||||
startTime=0.0, endTime=None, name=None):
|
||||
"""__init__(name)
|
||||
"""
|
||||
# Generate unique id
|
||||
@ -42,19 +42,37 @@ class ActorInterval(Interval):
|
||||
if (name == None):
|
||||
name = id
|
||||
# Compute duration if no duration specified
|
||||
reverse = 0
|
||||
if duration == 0.0:
|
||||
duration = max(self.actor.getDuration(self.animName) - startTime,
|
||||
0.0)
|
||||
if (endTime == None):
|
||||
duration = max(self.actor.getDuration(self.animName) - \
|
||||
startTime, 0.0)
|
||||
else:
|
||||
duration = endTime - startTime
|
||||
if (duration < 0.0):
|
||||
duration = -duration
|
||||
if (endTime == None):
|
||||
self.finishTime = self.startTime + duration
|
||||
else:
|
||||
self.finishTime = endTime
|
||||
if (self.startTime > self.finishTime):
|
||||
reverse = 1
|
||||
|
||||
# Initialize superclass
|
||||
Interval.__init__(self, name, duration)
|
||||
Interval.__init__(self, name, duration, reverse=reverse)
|
||||
# Update stopEvent
|
||||
if self.loop:
|
||||
self.stopEvent = id + '_stopEvent'
|
||||
self.stopEventList = [self.stopEvent]
|
||||
|
||||
def calcFrame(self, t):
|
||||
offset = t % abs(self.finishTime - self.startTime)
|
||||
# Compute current frame based upon current time
|
||||
floatFrame = self.frameRate * (self.startTime + t)
|
||||
if (self.reverse == 0):
|
||||
floatFrame = self.frameRate * (self.startTime + offset)
|
||||
else:
|
||||
negOffset = (self.startTime - self.finishTime) - offset
|
||||
floatFrame = self.frameRate * (self.finishTime + negOffset)
|
||||
# Need max to avoid frame = -1 when t = 0
|
||||
frame = max(0, int(math.ceil(floatFrame)) - 1)
|
||||
# Modulo in case of looping anim
|
||||
@ -70,7 +88,7 @@ class ActorInterval(Interval):
|
||||
(self.name,frame))
|
||||
return frame
|
||||
|
||||
def updateFunc(self, t, event = IVAL_NONE):
|
||||
def updateFunc(self, t, event=IVAL_NONE):
|
||||
""" updateFunc(t, event)
|
||||
Go to time t
|
||||
"""
|
||||
@ -79,7 +97,7 @@ class ActorInterval(Interval):
|
||||
return
|
||||
# Update animation based upon current time
|
||||
# Pose or stop anim
|
||||
if (t >= (self.startTime + self.getDuration())):
|
||||
if (t >= self.getDuration()):
|
||||
self.actor.stop()
|
||||
frame = self.goToT(self.getDuration())
|
||||
if self.loop:
|
||||
|
@ -20,8 +20,8 @@ class Interval(DirectObject):
|
||||
clock = ClockObject.ClockObject.getGlobalClock()
|
||||
|
||||
# Class methods
|
||||
def __init__(self, name, duration, openEnded = 1):
|
||||
"""__init__(name, duration)
|
||||
def __init__(self, name, duration, openEnded=1, reverse=0):
|
||||
"""__init__(name, duration, openEnded, reverse)
|
||||
"""
|
||||
self.name = name
|
||||
self.duration = duration
|
||||
@ -31,6 +31,7 @@ class Interval(DirectObject):
|
||||
self.setTHooks = []
|
||||
# Set true if interval responds to setT(t): t>duration
|
||||
self.fOpenEnded = openEnded
|
||||
self.reverse = reverse
|
||||
|
||||
def getName(self):
|
||||
""" getName()
|
||||
|
Loading…
x
Reference in New Issue
Block a user