mirror of
https://github.com/panda3d/panda3d.git
synced 2025-09-30 00:32:57 -04:00
interval: Remove unrunnable IntervalTest module
This commit is contained in:
parent
b8ea788440
commit
ef25b67ddb
@ -10,12 +10,6 @@ from direct.directnotify.DirectNotifyGlobal import directNotify
|
|||||||
from . import Interval
|
from . import Interval
|
||||||
|
|
||||||
|
|
||||||
#############################################################
|
|
||||||
### ###
|
|
||||||
### See examples of function intervals in IntervalTest.py ###
|
|
||||||
### ###
|
|
||||||
#############################################################
|
|
||||||
|
|
||||||
class FunctionInterval(Interval.Interval):
|
class FunctionInterval(Interval.Interval):
|
||||||
# Name counter
|
# Name counter
|
||||||
functionIntervalNum = 1
|
functionIntervalNum = 1
|
||||||
|
@ -1,222 +0,0 @@
|
|||||||
"""Undocumented Module"""
|
|
||||||
|
|
||||||
__all__ = ()
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
|
||||||
from panda3d.core import Filename, Point3, Vec3
|
|
||||||
from direct.showbase.DirectObject import DirectObject
|
|
||||||
from direct.showbase.ShowBase import ShowBase
|
|
||||||
from direct.actor.Actor import Actor
|
|
||||||
from direct.directutil import Mopath
|
|
||||||
from direct.showbase.MessengerGlobal import messenger
|
|
||||||
from .ActorInterval import ActorInterval
|
|
||||||
from .FunctionInterval import (
|
|
||||||
AcceptInterval,
|
|
||||||
EventInterval,
|
|
||||||
FunctionInterval,
|
|
||||||
IgnoreInterval,
|
|
||||||
PosHprInterval,
|
|
||||||
)
|
|
||||||
from .LerpInterval import LerpPosInterval, LerpHprInterval, LerpPosHprInterval
|
|
||||||
from .MopathInterval import MopathInterval
|
|
||||||
from .SoundInterval import SoundInterval
|
|
||||||
from .MetaInterval import PREVIOUS_END, PREVIOUS_START, TRACK_START, Track
|
|
||||||
|
|
||||||
base = ShowBase()
|
|
||||||
|
|
||||||
boat = base.loader.loadModel('models/misc/smiley')
|
|
||||||
boat.reparentTo(base.render)
|
|
||||||
|
|
||||||
donald = Actor()
|
|
||||||
donald.loadModel("phase_6/models/char/donald-wheel-1000")
|
|
||||||
donald.loadAnims({"steer":"phase_6/models/char/donald-wheel-wheel"})
|
|
||||||
donald.reparentTo(boat)
|
|
||||||
|
|
||||||
dock = base.loader.loadModel('models/misc/smiley')
|
|
||||||
dock.reparentTo(base.render)
|
|
||||||
|
|
||||||
sound = base.loader.loadSfx('phase_6/audio/sfx/SZ_DD_waterlap.mp3')
|
|
||||||
foghorn = base.loader.loadSfx('phase_6/audio/sfx/SZ_DD_foghorn.mp3')
|
|
||||||
|
|
||||||
mp = Mopath.Mopath()
|
|
||||||
mp.loadFile(Filename('phase_6/paths/dd-e-w'))
|
|
||||||
|
|
||||||
# Set up the boat
|
|
||||||
boatMopath = MopathInterval(mp, boat, 'boatpath')
|
|
||||||
boatTrack = Track([boatMopath], 'boattrack')
|
|
||||||
BOAT_START = boatTrack.getIntervalStartTime('boatpath')
|
|
||||||
BOAT_END = boatTrack.getIntervalEndTime('boatpath')
|
|
||||||
|
|
||||||
# This will create an anim interval that is posed every frame
|
|
||||||
donaldSteerInterval = ActorInterval(donald, 'steer')
|
|
||||||
# This will create an anim interval that is started at t = 0 and then
|
|
||||||
# loops for 10 seconds
|
|
||||||
donaldLoopInterval = ActorInterval(donald, 'steer', loop=1, duration = 10.0)
|
|
||||||
donaldSteerTrack = Track([donaldSteerInterval, donaldLoopInterval],
|
|
||||||
name = 'steerTrack')
|
|
||||||
|
|
||||||
# Make the dock lerp up so that it's up when the boat reaches the end of
|
|
||||||
# its mopath
|
|
||||||
dockLerp = LerpPosHprInterval(dock, 5.0,
|
|
||||||
pos=Point3(0, 0, -5),
|
|
||||||
hpr=Vec3(0, 0, 0),
|
|
||||||
name='dock-lerp')
|
|
||||||
# We need the dock's state to be defined before the lerp
|
|
||||||
dockPos = PosHprInterval(dock, dock.getPos(), dock.getHpr(), 1.0, 'dockpos')
|
|
||||||
dockUpTime = BOAT_END - dockLerp.getDuration()
|
|
||||||
hpr2 = Vec3(90.0, 90.0, 90.0)
|
|
||||||
dockLerp2 = LerpHprInterval(dock, 3.0, hpr2, name='hpr-lerp')
|
|
||||||
dockTrack = Track([dockLerp2, dockPos, dockLerp], 'docktrack')
|
|
||||||
dockTrack.setIntervalStartTime('dock-lerp', dockUpTime)
|
|
||||||
dockTrack.setIntervalStartTime('hpr-lerp', BOAT_START)
|
|
||||||
|
|
||||||
# Start the water sound 5 seconds after the boat starts moving
|
|
||||||
waterStartTime = BOAT_START + 5.0
|
|
||||||
waterSound = SoundInterval(sound, name='watersound')
|
|
||||||
soundTrack = Track([waterSound], 'soundtrack')
|
|
||||||
soundTrack.setIntervalStartTime('watersound', waterStartTime)
|
|
||||||
|
|
||||||
# Throw an event when the water track ends
|
|
||||||
eventTime = soundTrack.getIntervalEndTime('watersound')
|
|
||||||
waterDone = EventInterval('water-is-done')
|
|
||||||
waterEventTrack = Track([waterDone])
|
|
||||||
waterEventTrack.setIntervalStartTime('water-is-done', eventTime)
|
|
||||||
|
|
||||||
def handleWaterDone():
|
|
||||||
print('water is done')
|
|
||||||
|
|
||||||
# Interval can handle its own event
|
|
||||||
messenger.accept('water-is-done', waterDone, handleWaterDone)
|
|
||||||
|
|
||||||
foghornStartTime = BOAT_START + 4.0
|
|
||||||
foghornSound = SoundInterval(foghorn, name='foghorn')
|
|
||||||
soundTrack2 = Track([(foghornStartTime, foghornSound)], 'soundtrack2')
|
|
||||||
|
|
||||||
mtrack = MultiTrack([boatTrack, dockTrack, soundTrack, soundTrack2, waterEventTrack, # type: ignore[name-defined]
|
|
||||||
donaldSteerTrack])
|
|
||||||
# Print out MultiTrack parameters
|
|
||||||
print(mtrack)
|
|
||||||
|
|
||||||
### Using lambdas and functions ###
|
|
||||||
# Using a lambda
|
|
||||||
i1 = FunctionInterval(lambda: base.transitions.fadeOut())
|
|
||||||
i2 = FunctionInterval(lambda: base.transitions.fadeIn())
|
|
||||||
|
|
||||||
def caughtIt():
|
|
||||||
print('Caught here-is-an-event')
|
|
||||||
|
|
||||||
class DummyAcceptor(DirectObject):
|
|
||||||
pass
|
|
||||||
|
|
||||||
da = DummyAcceptor()
|
|
||||||
i3 = AcceptInterval(da, 'here-is-an-event', caughtIt)
|
|
||||||
|
|
||||||
i4 = EventInterval('here-is-an-event')
|
|
||||||
|
|
||||||
i5 = IgnoreInterval(da, 'here-is-an-event')
|
|
||||||
|
|
||||||
# Using a function
|
|
||||||
def printDone():
|
|
||||||
print('done')
|
|
||||||
|
|
||||||
i6 = FunctionInterval(printDone)
|
|
||||||
|
|
||||||
# Create track
|
|
||||||
t1 = Track([
|
|
||||||
# Fade out
|
|
||||||
(0.0, i1),
|
|
||||||
# Fade in
|
|
||||||
(2.0, i2),
|
|
||||||
# Accept event
|
|
||||||
(4.0, i3),
|
|
||||||
# Throw it,
|
|
||||||
(5.0, i4),
|
|
||||||
# Ignore event
|
|
||||||
(6.0, i5),
|
|
||||||
# Throw event again and see if ignore worked
|
|
||||||
(7.0, i4),
|
|
||||||
# Print done
|
|
||||||
(8.0, i6)], name = 'demo')
|
|
||||||
|
|
||||||
print(t1)
|
|
||||||
|
|
||||||
### Specifying interval start times during track construction ###
|
|
||||||
# Interval start time can be specified relative to three different points:
|
|
||||||
# PREVIOUS_END
|
|
||||||
# PREVIOUS_START
|
|
||||||
# TRACK_START
|
|
||||||
|
|
||||||
startTime = 0.0
|
|
||||||
def printStart():
|
|
||||||
global startTime
|
|
||||||
startTime = base.clock.getFrameTime()
|
|
||||||
print('Start')
|
|
||||||
|
|
||||||
def printPreviousStart():
|
|
||||||
global startTime
|
|
||||||
currTime = base.clock.getFrameTime()
|
|
||||||
print('PREVIOUS_END %0.2f' % (currTime - startTime))
|
|
||||||
|
|
||||||
def printPreviousEnd():
|
|
||||||
global startTime
|
|
||||||
currTime = base.clock.getFrameTime()
|
|
||||||
print('PREVIOUS_END %0.2f' % (currTime - startTime))
|
|
||||||
|
|
||||||
def printTrackStart():
|
|
||||||
global startTime
|
|
||||||
currTime = base.clock.getFrameTime()
|
|
||||||
print('TRACK_START %0.2f' % (currTime - startTime))
|
|
||||||
|
|
||||||
def printArguments(a, b, c):
|
|
||||||
print('My args were %d, %d, %d' % (a, b, c))
|
|
||||||
|
|
||||||
i1 = FunctionInterval(printStart)
|
|
||||||
# Just to take time
|
|
||||||
i2 = LerpPosInterval(base.camera, 2.0, Point3(0, 10, 5))
|
|
||||||
# This will be relative to end of camera move
|
|
||||||
i3 = FunctionInterval(printPreviousEnd) # type: ignore[assignment]
|
|
||||||
# Just to take time
|
|
||||||
i4 = LerpPosInterval(base.camera, 2.0, Point3(0, 0, 5))
|
|
||||||
# This will be relative to the start of the camera move
|
|
||||||
i5 = FunctionInterval(printPreviousStart) # type: ignore[assignment]
|
|
||||||
# This will be relative to track start
|
|
||||||
i6 = FunctionInterval(printTrackStart)
|
|
||||||
# This will print some arguments
|
|
||||||
# This will be relative to track start
|
|
||||||
i7 = FunctionInterval(printArguments, extraArgs = [1, 10, 100])
|
|
||||||
# Create the track, if you don't specify offset type in tuple it defaults to
|
|
||||||
# relative to TRACK_START (first entry below)
|
|
||||||
t2 = Track([(0.0, i1), # i1 start at t = 0, duration = 0.0
|
|
||||||
(1.0, i2, TRACK_START), # i2 start at t = 1, duration = 2.0
|
|
||||||
(2.0, i3, PREVIOUS_END), # i3 start at t = 5, duration = 0.0
|
|
||||||
(1.0, i4, PREVIOUS_END), # i4 start at t = 6, duration = 2.0
|
|
||||||
(3.0, i5, PREVIOUS_START), # i5 start at t = 9, duration = 0.0
|
|
||||||
(10.0, i6, TRACK_START), # i6 start at t = 10, duration = 0.0
|
|
||||||
(12.0, i7)], # i7 start at t = 12, duration = 0.0
|
|
||||||
name = 'startTimeDemo')
|
|
||||||
|
|
||||||
print(t2)
|
|
||||||
|
|
||||||
# Play tracks
|
|
||||||
# mtrack.play()
|
|
||||||
# t1.play()
|
|
||||||
# t2.play()
|
|
||||||
|
|
||||||
|
|
||||||
def test(n):
|
|
||||||
lerps = []
|
|
||||||
for i in range(n):
|
|
||||||
lerps.append(LerpPosHprInterval(dock, 5.0,
|
|
||||||
pos=Point3(0, 0, -5),
|
|
||||||
hpr=Vec3(0, 0, 0),
|
|
||||||
startPos=dock.getPos(),
|
|
||||||
startHpr=dock.getHpr(),
|
|
||||||
name='dock-lerp'))
|
|
||||||
lerps.append(EventInterval("joe"))
|
|
||||||
t = Track(lerps)
|
|
||||||
mt = MultiTrack([t])
|
|
||||||
# return mt
|
|
||||||
|
|
||||||
test(5)
|
|
||||||
base.run()
|
|
Loading…
x
Reference in New Issue
Block a user