*** empty log message ***
This commit is contained in:
parent
9f0e337d16
commit
fcbecf7877
|
|
@ -0,0 +1,151 @@
|
|||
|
||||
from PandaModules import *
|
||||
import Task
|
||||
|
||||
class Transitions:
|
||||
def __init__(self, loader):
|
||||
self.iris = loader.loadModel("phase_3/models/misc/iris")
|
||||
self.fade = loader.loadModel("phase_3/models/misc/fade")
|
||||
|
||||
self.iris.setPos(0,0,0)
|
||||
self.fade.setScale(2.0, 2.0, 2.6666)
|
||||
|
||||
self.irisTaskName = "irisTask"
|
||||
self.fadeTaskName = "fadeTask"
|
||||
|
||||
def fadeInLerpDone(self, task):
|
||||
# This is a helper function to the fadeIn sequence
|
||||
self.fade.reparentTo(hidden)
|
||||
return Task.done
|
||||
|
||||
def fadeIn(self, t=0.4):
|
||||
"""
|
||||
Play a fade in transition over t seconds.
|
||||
Places a polygon on the render2d plane then lerps the color
|
||||
from black to transparent. When the color lerp is finished, it
|
||||
parents the fade polygon to hidden.
|
||||
"""
|
||||
self.noTransitions()
|
||||
|
||||
self.fade.reparentTo(render2d)
|
||||
|
||||
if (t == 0):
|
||||
# Fade in immediately with no lerp
|
||||
self.fade.reparentTo(hidden)
|
||||
else:
|
||||
# Create a sequence that lerps the color out, then
|
||||
# parents the fade to hidden
|
||||
task = Task.sequence(
|
||||
self.fade.lerpColor(0,0,0,1,
|
||||
0,0,0,0,
|
||||
t),
|
||||
Task.Task(self.fadeInLerpDone))
|
||||
# Spawn the sequence
|
||||
taskMgr.spawnTaskNamed(task, self.fadeTaskName)
|
||||
|
||||
def fadeOut(self, t=0.4):
|
||||
"""
|
||||
Play a fade out transition over t seconds.
|
||||
Places a polygon on the render2d plane then lerps the color
|
||||
from transparent to full black. When the color lerp is finished,
|
||||
it leaves the fade polygon covering the render2d plane until you
|
||||
fadeIn or call noFade.
|
||||
"""
|
||||
self.noTransitions()
|
||||
|
||||
self.fade.reparentTo(render2d)
|
||||
|
||||
if (t == 0):
|
||||
# Fade out immediately with no lerp
|
||||
self.fade.setColor(0,0,0,1)
|
||||
else:
|
||||
# Spawn a lerp of the color from no alpha to full alpha
|
||||
self.fade.lerpColor(0,0,0,0,
|
||||
0,0,0,1,
|
||||
t, task=self.fadeTaskName)
|
||||
|
||||
def noFade(self):
|
||||
"""
|
||||
Removes any current fade tasks and parents the fade polygon away
|
||||
"""
|
||||
taskMgr.removeTasksNamed(self.fadeTaskName)
|
||||
self.fade.reparentTo(hidden)
|
||||
|
||||
|
||||
def irisInLerpDone(self, task):
|
||||
# This is a helper function to the fadeIn sequence
|
||||
self.iris.reparentTo(hidden)
|
||||
return Task.done
|
||||
|
||||
def irisIn(self, t=0.4):
|
||||
"""
|
||||
Play an iris in transition over t seconds.
|
||||
Places a polygon on the render2d plane then lerps the scale
|
||||
of the iris polygon up so it looks like we iris in. When the
|
||||
scale lerp is finished, it parents the iris polygon to hidden.
|
||||
"""
|
||||
self.noTransitions()
|
||||
|
||||
if (t == 0):
|
||||
self.iris.reparentTo(hidden)
|
||||
else:
|
||||
self.iris.reparentTo(render2d)
|
||||
self.iris.setScale(0.0015, 0.0015, 0.002)
|
||||
# Create a sequence that scales the iris up,
|
||||
# then parents the fade to hidden
|
||||
task = Task.sequence(
|
||||
self.iris.lerpScale(0.1, 0.1, 0.1333,
|
||||
t, blendType="easeIn"),
|
||||
Task.Task(self.irisInLerpDone))
|
||||
# Spawn the sequence
|
||||
taskMgr.spawnTaskNamed(task, self.irisTaskName)
|
||||
|
||||
|
||||
def irisOutLerpDone(self, task):
|
||||
# This is a helper function to the fadeIn sequence
|
||||
self.iris.reparentTo(hidden)
|
||||
# Use the fade to cover up the hole that the iris would leave
|
||||
self.fadeOut(0)
|
||||
return Task.done
|
||||
|
||||
def irisOut(self, t=0.4):
|
||||
"""
|
||||
Play an iris out transition over t seconds.
|
||||
Places a polygon on the render2d plane then lerps the scale
|
||||
of the iris down so it looks like we iris out. When the scale
|
||||
lerp is finished, it leaves the iris polygon covering the
|
||||
render2d plane until you irisIn or call noIris.
|
||||
"""
|
||||
self.noTransitions()
|
||||
|
||||
if (t == 0):
|
||||
self.iris.reparentTo(hidden)
|
||||
else:
|
||||
self.iris.reparentTo(render2d)
|
||||
self.iris.setScale(0.1, 0.1, 0.13333)
|
||||
# Create a sequence that scales the iris up,
|
||||
# then parents the fade to hidden
|
||||
task = Task.sequence(
|
||||
self.iris.lerpScale(0.0015, 0.0015, 0.002,
|
||||
t, blendType="easeIn"),
|
||||
Task.Task(self.irisOutLerpDone))
|
||||
# Spawn the sequence
|
||||
taskMgr.spawnTaskNamed(task, self.irisTaskName)
|
||||
|
||||
|
||||
def noIris(self):
|
||||
"""
|
||||
Removes any current iris tasks and parents the iris polygon away
|
||||
"""
|
||||
taskMgr.removeTasksNamed(self.irisTaskName)
|
||||
self.iris.reparentTo(hidden)
|
||||
# Actually we need to remove the fade to, because the iris effect uses it
|
||||
self.noFade()
|
||||
|
||||
|
||||
def noTransitions(self):
|
||||
"""
|
||||
This call should immediately remove any and all transitions running
|
||||
"""
|
||||
self.noFade()
|
||||
self.noIris()
|
||||
Loading…
Reference in New Issue