mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-05 19:34:18 -04:00
*** empty log message ***
This commit is contained in:
parent
e2a3d907e5
commit
a06b37181c
@ -2,6 +2,10 @@
|
|||||||
|
|
||||||
from DirectObject import *
|
from DirectObject import *
|
||||||
|
|
||||||
|
PREVIOUS_END = 1
|
||||||
|
PREVIOUS_START = 2
|
||||||
|
TRACK_START = 3
|
||||||
|
|
||||||
class Interval(DirectObject):
|
class Interval(DirectObject):
|
||||||
"""Interval class: Base class for timeline functionality"""
|
"""Interval class: Base class for timeline functionality"""
|
||||||
|
|
||||||
@ -15,7 +19,7 @@ class Interval(DirectObject):
|
|||||||
|
|
||||||
# special methods
|
# special methods
|
||||||
|
|
||||||
def __init__(self, name, duration, t0 = 0.0, type = PrevEndRelative):
|
def __init__(self, name, duration, t0=0.0, type=PREVIOUS_END):
|
||||||
"""__init__(name, duration, t0, type)
|
"""__init__(name, duration, t0, type)
|
||||||
"""
|
"""
|
||||||
self.name = name
|
self.name = name
|
||||||
|
12
direct/src/interval/IntervalGlobal.py
Normal file
12
direct/src/interval/IntervalGlobal.py
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
"""IntervalGlobal module"""
|
||||||
|
|
||||||
|
from DirectObject import *
|
||||||
|
from Interval import *
|
||||||
|
from LerpInterval import *
|
||||||
|
from MopathInterval import *
|
||||||
|
from PosHprInterval import *
|
||||||
|
from SoundInterval import *
|
||||||
|
from WaitInterval import *
|
||||||
|
|
||||||
|
import Track
|
||||||
|
import MultiTrack
|
@ -18,9 +18,11 @@ sound = loader.loadSound('phase_6/audio/sfx/SZ_DD_waterlap.mp3')
|
|||||||
mp = Mopath.Mopath()
|
mp = Mopath.Mopath()
|
||||||
mp.loadFile(Filename('phase_6/paths/dd-e-w'))
|
mp.loadFile(Filename('phase_6/paths/dd-e-w'))
|
||||||
|
|
||||||
|
# Set up the boat
|
||||||
boatMopath = MopathInterval('boatpath', mp, boat)
|
boatMopath = MopathInterval('boatpath', mp, boat)
|
||||||
|
|
||||||
boatTrack = Track.Track([boatMopath], 'boattrack')
|
boatTrack = Track.Track([boatMopath], 'boattrack')
|
||||||
|
BOAT_START = boatTrack.getIntervalStartTime('boatpath')
|
||||||
|
BOAT_END = boatTrack.getIntervalEndTime('boatpath')
|
||||||
|
|
||||||
# Make the dock lerp up so that it's up when the boat reaches the end of
|
# Make the dock lerp up so that it's up when the boat reaches the end of
|
||||||
# its mopath
|
# its mopath
|
||||||
@ -29,14 +31,14 @@ hpr = Vec3(0, 0, 0)
|
|||||||
dockLerp = LerpPosHprInterval('lerp', dock, pos, hpr, 5.0)
|
dockLerp = LerpPosHprInterval('lerp', dock, pos, hpr, 5.0)
|
||||||
# We need the dock's state to be defined before the lerp
|
# We need the dock's state to be defined before the lerp
|
||||||
dockPos = PosHprInterval('dockpos', dock, dock.getPos(), dock.getHpr(), 1.0)
|
dockPos = PosHprInterval('dockpos', dock, dock.getPos(), dock.getHpr(), 1.0)
|
||||||
dockUpTime = boatTrack.getTrackRelativeEndTime('boatpath') - dockLerp.getDuration()
|
dockUpTime = BOAT_END - dockLerp.getDuration()
|
||||||
dockLerp.setStartTime(dockUpTime, Interval.Interval.TrackStartRelative)
|
dockLerp.setStartTime(dockUpTime, TRACK_START)
|
||||||
dockTrack = Track.Track([dockPos, dockLerp], 'docktrack')
|
dockTrack = Track.Track([dockPos, dockLerp], 'docktrack')
|
||||||
|
|
||||||
# Start the water sound 5 seconds after the boat starts moving
|
# Start the water sound 5 seconds after the boat starts moving
|
||||||
waterStartTime = boatTrack.getTrackRelativeStartTime('boatpath') + 5.0
|
waterStartTime = BOAT_START + 5.0
|
||||||
waterSound = SoundInterval('watersound', sound, loop=1)
|
waterSound = SoundInterval('watersound', sound, loop=1)
|
||||||
waterSound.setStartTime(waterStartTime, Interval.Interval.TrackStartRelative)
|
waterSound.setStartTime(waterStartTime, TRACK_START)
|
||||||
soundTrack = Track.Track([waterSound], 'soundtrack')
|
soundTrack = Track.Track([waterSound], 'soundtrack')
|
||||||
|
|
||||||
mtrack = MultiTrack.MultiTrack([boatTrack, dockTrack, soundTrack])
|
mtrack = MultiTrack.MultiTrack([boatTrack, dockTrack, soundTrack])
|
||||||
|
@ -9,7 +9,7 @@ class LerpInterval(Interval.Interval):
|
|||||||
# special methods
|
# special methods
|
||||||
|
|
||||||
def __init__(self, name, node, duration, t0=0.0,
|
def __init__(self, name, node, duration, t0=0.0,
|
||||||
type=Interval.Interval.PrevEndRelative):
|
type=Interval.PREVIOUS_END):
|
||||||
"""__init__(name, node, duration, t0, type)
|
"""__init__(name, node, duration, t0, type)
|
||||||
"""
|
"""
|
||||||
self.name = name
|
self.name = name
|
||||||
@ -21,8 +21,7 @@ class LerpInterval(Interval.Interval):
|
|||||||
class LerpPosHprInterval(LerpInterval):
|
class LerpPosHprInterval(LerpInterval):
|
||||||
|
|
||||||
def __init__(self, name, node, pos, hpr, duration, t0=0.0,
|
def __init__(self, name, node, pos, hpr, duration, t0=0.0,
|
||||||
type=Interval.Interval.PrevEndRelative, other=None,
|
type=Interval.PREVIOUS_END, other=None, blendType='noBlend'):
|
||||||
blendType='noBlend'):
|
|
||||||
""" __init__(name, node, pos, hpr, duration, t0, type, other,
|
""" __init__(name, node, pos, hpr, duration, t0, type, other,
|
||||||
blendType)
|
blendType)
|
||||||
"""
|
"""
|
||||||
|
@ -9,7 +9,7 @@ class MopathInterval(Interval.Interval):
|
|||||||
# special methods
|
# special methods
|
||||||
|
|
||||||
def __init__(self, name, mopath, node, t0=0.0,
|
def __init__(self, name, mopath, node, t0=0.0,
|
||||||
type=Interval.Interval.PrevEndRelative):
|
type=Interval.PREVIOUS_END):
|
||||||
"""__init__(name, mopath, node, t0, type)
|
"""__init__(name, mopath, node, t0, type)
|
||||||
"""
|
"""
|
||||||
self.name = name
|
self.name = name
|
||||||
|
@ -20,7 +20,7 @@ class MultiTrack(Interval.Interval):
|
|||||||
self.tlist = trackList
|
self.tlist = trackList
|
||||||
self.duration = self.getDuration()
|
self.duration = self.getDuration()
|
||||||
self.startTime = 0.0
|
self.startTime = 0.0
|
||||||
self.type = Interval.Interval.PrevEndRelative
|
self.type = Interval.PREVIOUS_END
|
||||||
|
|
||||||
def getDuration(self):
|
def getDuration(self):
|
||||||
""" getDuration()
|
""" getDuration()
|
||||||
|
@ -9,7 +9,7 @@ class PosHprInterval(Interval.Interval):
|
|||||||
# special methods
|
# special methods
|
||||||
|
|
||||||
def __init__(self, name, node, pos, hpr, duration, t0=0.0,
|
def __init__(self, name, node, pos, hpr, duration, t0=0.0,
|
||||||
type=Interval.Interval.PrevEndRelative):
|
type=Interval.PREVIOUS_END):
|
||||||
"""__init__(name, node, pos, hpr, duration, t0, type)
|
"""__init__(name, node, pos, hpr, duration, t0, type)
|
||||||
"""
|
"""
|
||||||
self.name = name
|
self.name = name
|
||||||
|
@ -10,7 +10,7 @@ class SoundInterval(Interval.Interval):
|
|||||||
# special methods
|
# special methods
|
||||||
|
|
||||||
def __init__(self, name, sound, loop=0, t0=0.0,
|
def __init__(self, name, sound, loop=0, t0=0.0,
|
||||||
type=Interval.Interval.PrevEndRelative):
|
type=Interval.PREVIOUS_END):
|
||||||
"""__init__(name, sound, loop, t0, type)
|
"""__init__(name, sound, loop, t0, type)
|
||||||
"""
|
"""
|
||||||
self.name = name
|
self.name = name
|
||||||
|
@ -21,7 +21,7 @@ class Track(Interval.Interval):
|
|||||||
self.ilist = intervalList
|
self.ilist = intervalList
|
||||||
self.duration = self.__computeDuration(len(self.ilist))
|
self.duration = self.__computeDuration(len(self.ilist))
|
||||||
self.startTime = 0.0
|
self.startTime = 0.0
|
||||||
self.type = Interval.Interval.PrevEndRelative
|
self.type = Interval.PREVIOUS_END
|
||||||
|
|
||||||
def __computeDuration(self, length):
|
def __computeDuration(self, length):
|
||||||
""" __computeDuration(length)
|
""" __computeDuration(length)
|
||||||
@ -34,12 +34,12 @@ class Track(Interval.Interval):
|
|||||||
t0 = i.getStartTime()
|
t0 = i.getStartTime()
|
||||||
assert(t0 >= 0.0)
|
assert(t0 >= 0.0)
|
||||||
fillTime = t0
|
fillTime = t0
|
||||||
if (type == Interval.Interval.PrevEndRelative):
|
if (type == Interval.PREVIOUS_END):
|
||||||
pass
|
pass
|
||||||
elif (type == Interval.Interval.PrevStartRelative):
|
elif (type == Interval.PREVIOUS_START):
|
||||||
if (prev != None):
|
if (prev != None):
|
||||||
fillTime = t0 - prev.getDuration()
|
fillTime = t0 - prev.getDuration()
|
||||||
elif (type == Interval.Interval.TrackStartRelative):
|
elif (type == Interval.TRACK_START):
|
||||||
fillTime = t0 - duration
|
fillTime = t0 - duration
|
||||||
else:
|
else:
|
||||||
Interval.notify.error(
|
Interval.notify.error(
|
||||||
@ -51,30 +51,30 @@ class Track(Interval.Interval):
|
|||||||
prev = i
|
prev = i
|
||||||
return duration
|
return duration
|
||||||
|
|
||||||
def getTrackRelativeStartTime(self, name):
|
def getIntervalStartTime(self, name):
|
||||||
""" getTrackRelativeStartTime(name)
|
""" getIntervalStartTime(name)
|
||||||
"""
|
"""
|
||||||
for i in range(len(self.ilist)):
|
for i in range(len(self.ilist)):
|
||||||
if (self.ilist[i].getName() == name):
|
if (self.ilist[i].getName() == name):
|
||||||
return self.__computeDuration(i+1) - self.ilist[i].getDuration()
|
return self.__computeDuration(i+1) - self.ilist[i].getDuration()
|
||||||
Interval.notify.warning(
|
Interval.notify.warning(
|
||||||
'Track.getRelativeStartTime(): no Interval named: %s' % name)
|
'Track.getIntervalStartTime(): no Interval named: %s' % name)
|
||||||
return 0.0
|
return 0.0
|
||||||
|
|
||||||
def __getTrackRelativeStartTime(self, interval):
|
def __getIntervalStartTime(self, interval):
|
||||||
""" __getTrackRelativeStartTime(interval)
|
""" __getIntervalStartTime(interval)
|
||||||
"""
|
"""
|
||||||
return (self.__computeDuration(self.ilist.index(interval)+1) -
|
return (self.__computeDuration(self.ilist.index(interval)+1) -
|
||||||
interval.getDuration())
|
interval.getDuration())
|
||||||
|
|
||||||
def getTrackRelativeEndTime(self, name):
|
def getIntervalEndTime(self, name):
|
||||||
""" getTrackRelativeEndTime(name)
|
""" getIntervalEndTime(name)
|
||||||
"""
|
"""
|
||||||
for i in range(len(self.ilist)):
|
for i in range(len(self.ilist)):
|
||||||
if (self.ilist[i].getName() == name):
|
if (self.ilist[i].getName() == name):
|
||||||
return self.__computeDuration(i+1)
|
return self.__computeDuration(i+1)
|
||||||
Interval.notify.warning(
|
Interval.notify.warning(
|
||||||
'Track.getRelativeEndTime(): no Interval named: %s' % name)
|
'Track.getIntervalEndTime(): no Interval named: %s' % name)
|
||||||
return 0.0
|
return 0.0
|
||||||
|
|
||||||
def setT(self, t):
|
def setT(self, t):
|
||||||
@ -93,7 +93,7 @@ class Track(Interval.Interval):
|
|||||||
prev = None
|
prev = None
|
||||||
for i in self.ilist:
|
for i in self.ilist:
|
||||||
# Calculate the track relative start time for the interval
|
# Calculate the track relative start time for the interval
|
||||||
t0 = self.__getTrackRelativeStartTime(i)
|
t0 = self.__getIntervalStartTime(i)
|
||||||
|
|
||||||
# Determine if the Interval is applicable
|
# Determine if the Interval is applicable
|
||||||
if (t < t0):
|
if (t < t0):
|
||||||
|
@ -11,7 +11,7 @@ class Wait(Interval.Interval):
|
|||||||
# special methods
|
# special methods
|
||||||
|
|
||||||
def __init__(self, duration, name=None, t0=0.0,
|
def __init__(self, duration, name=None, t0=0.0,
|
||||||
type=Interval.Interval.PrevEndRelative):
|
type=Interval.PREVIOUS_END):
|
||||||
"""__init__(duration, name, t0, type)
|
"""__init__(duration, name, t0, type)
|
||||||
"""
|
"""
|
||||||
if (name == None):
|
if (name == None):
|
||||||
|
Loading…
x
Reference in New Issue
Block a user