*** empty log message ***

This commit is contained in:
Dave Schuyler 2003-10-10 06:04:15 +00:00
parent fb49afdfc4
commit fd4965ce1d
2 changed files with 164 additions and 2 deletions

162
direct/src/level/CutScene.py Executable file
View File

@ -0,0 +1,162 @@
"""CutScene.py"""
import DirectObject
import DirectNotifyGlobal
import Entity
from PandaModules import *
from ShowBaseGlobal import *
from IntervalGlobal import *
from ClockDelta import *
import ToontownGlobals
import DirectNotifyGlobal
import FSM
import DistributedInteractiveEntity
import DelayDelete
import Localizer
# effects #
def nothing(self, track, subjectNodePath, duration):
assert(self.debugPrint(
"nothing(track=%s, subjectNodePath=%s, duration=%s)"%(
track, subjectNodePath, duration)))
return track
def irisInOut(self, track, subjectNodePath, duration):
assert(self.debugPrint(
"irisInOut(track=%s, subjectNodePath=%s, duration=%s)"%(
track, subjectNodePath, duration)))
track.append(Sequence(
Func(base.transitions.irisOut, 0.5),
Func(base.transitions.irisIn, 1.5),
Wait(duration),
Func(base.transitions.irisOut, 1.0),
Func(base.transitions.irisIn, 1.0),
))
return track
def letterBox(self, track, subjectNodePath, duration):
assert(self.debugPrint(
"letterBox(track=%s, subjectNodePath=%s, duration=%s)"%(
track, subjectNodePath, duration)))
track.append(Sequence(
#Func(base.transitions.letterBox, 0.5),
Wait(duration),
#Func(base.transitions.letterBox, 0.5),
))
return track
# motions #
def foo1(self, track, subjectNodePath, duration):
assert(self.debugPrint(
"foo1(track=%s, subjectNodePath=%s, duration=%s)"%(
track, subjectNodePath, duration)))
track.append(Sequence(
Func(toonbase.localToon.stopUpdateSmartCamera),
LerpPosHprInterval(node=camera,
other=subjectNodePath,
duration=0.0,
pos=Point3(-2, -35, 7.5),
hpr=VBase3(-7, 0, 0),
blendType="easeInOut"),
LerpPosHprInterval(node=camera,
other=subjectNodePath,
duration=duration,
pos=Point3(2, -22, 7.5),
hpr=VBase3(4, 0, 0),
blendType="easeInOut"),
LerpPosHprInterval(node=camera,
other=subjectNodePath,
duration=0.0,
pos=Point3(0, -28, 7.5),
hpr=VBase3(0, 0, 0),
blendType="easeInOut"),
Func(toonbase.localToon.startUpdateSmartCamera),
))
return track
class CutScene(Entity.Entity, DirectObject.DirectObject):
if __debug__:
notify = DirectNotifyGlobal.directNotify.newCategory('CutScene')
effects={
"nothing": nothing,
"irisInOut": irisInOut,
"letterBox": letterBox,
}
motions={
"foo1": foo1,
}
def __init__(self, level, entId):
assert(self.debugPrint(
"CutScene(level=%s, entId=%s)"
%(level, entId)))
DirectObject.DirectObject.__init__(self)
Entity.Entity.__init__(self, level, entId)
self.track = None
self.setEffect(self.effect)
self.setMotion(self.motion)
self.subjectNodePath = render.attachNewNode("CutScene")
self.subjectNodePath.setPos(self.pos)
self.subjectNodePath.setHpr(self.hpr)
#self.setSubjectNodePath(self.subjectNodePath)
self.setStartStop(self.startStop)
def destroy(self):
assert(self.debugPrint("destroy()"))
self.ignore(self.startStop)
self.startStop = None
Entity.Entity.destroy(self)
#DirectObject.DirectObject.destroy(self)
def setEffect(self, effect):
assert(self.debugPrint("setEffect(effect=%s)"%(effect,)))
self.effect=effect
assert self.effects[effect]
self.getEffect=self.effects[effect]
def setMotion(self, motion):
assert(self.debugPrint("setMotion(motion=%s)"%(motion,)))
self.motionType=motion
assert self.motions[motion]
self.getMotion=self.motions[motion]
def setSubjectNodePath(self, subjectNodePath):
assert(self.debugPrint("setSubjectNodePath(subjectNodePath=%s)"%(subjectNodePath,)))
self.subjectNodePath=subjectNodePath
def startOrStop(self, start):
assert(self.debugPrint("startOrStop(start=%s)"%(start,)))
trackName = "cutSceneTrack-%d" % (id(self),)
if start:
if self.track:
self.track.pause()
self.track = None
track = Parallel(name = trackName)
track = self.getEffect(self, track, self.subjectNodePath, self.duration)
track = self.getMotion(self, track, self.subjectNodePath, self.duration)
track.start(0.0)
self.track = track
else:
if self.track:
self.track.pause()
self.track = None
def setStartStop(self, event):
assert(self.debugPrint("setStartStop(event=%s)"%(event,)))
if self.startStop:
self.ignore(self.startStop)
self.startStop = "switch-%s"%(event,)
if self.startStop:
self.accept(self.startStop, self.startOrStop)
def getName(self):
#return "CutScene-%s"%(self.entId,)
return "switch-%s"%(self.entId,)

View File

@ -20,7 +20,7 @@ class DistributedInteractiveEntity(DistributedEntity.DistributedEntity):
def __init__(self, cr):
"""constructor for the DistributedInteractiveEntity"""
DistributedEntity.DistributedEntity.__init__(self, cr)
assert(self.debugPrint("__init()"))
assert(self.debugPrint("DistributedInteractiveEntity()"))
self.fsm = FSM.FSM('DistributedInteractiveEntity',
[State.State('off',
@ -45,7 +45,7 @@ class DistributedInteractiveEntity(DistributedEntity.DistributedEntity):
# self.generate will be called automatically.
def generate(self):
"""generate(self)
"""
This method is called when the DistributedEntity is introduced
to the world, either for the first time or from the cache.
"""