Browse Source

added getter functions for fadeIn and fadeOut ivals for use in cutscenes

Samir Naik 18 years ago
parent
commit
42a7730537
1 changed files with 43 additions and 21 deletions
  1. 43 21
      direct/src/showbase/Transitions.py

+ 43 - 21
direct/src/showbase/Transitions.py

@@ -80,6 +80,42 @@ class Transitions:
                 )
                 )
             self.fade.setBin('unsorted', 0)
             self.fade.setBin('unsorted', 0)
 
 
+    
+    def getFadeInIval(self, t=0.5, finishIval=None):
+        """
+        Returns an interval without starting it.  This is particularly useful in
+        cutscenes, so when the cutsceneIval is escaped out of we can finish the fade immediately
+        """
+        transitionIval = Sequence(Func(self.noTransitions),
+                                  Func(self.loadFade),
+                                  Func(self.fade.reparentTo, render2d, FADE_SORT_INDEX),
+                                  self.lerpFunc(self.fade, t,
+                                                self.alphaOff,
+                                                self.alphaOn),
+                                  Func(self.fade.detachNode),
+                                  name = self.fadeTaskName,
+                                  )
+        if finishIval:
+            transitionIval.append(finishIval)
+        return transitionIval
+
+    def getFadeOutIval(self, t=0.5, finishIval=None):
+        """
+        Create a sequence that lerps the color out, then
+        parents the fade to hidden
+        """
+        transitionIval = Sequence(Func(self.noTransitions),
+                                  Func(self.noFade),
+                                  Func(self.fade.reparentTo,render2d,FADE_SORT_INDEX),
+                                  self.lerpFunc(self.fade, t,
+                                                self.alphaOn,
+                                                self.alphaOff),
+                                  name = self.fadeTaskName,
+                                  )
+        if finishIval:
+            transitionIval.append(finishIval)
+        return transitionIval
+    
     def fadeIn(self, t=0.5, finishIval=None):
     def fadeIn(self, t=0.5, finishIval=None):
         """
         """
         Play a fade in transition over t seconds.
         Play a fade in transition over t seconds.
@@ -87,23 +123,15 @@ class Transitions:
         from black to transparent. When the color lerp is finished, it
         from black to transparent. When the color lerp is finished, it
         parents the fade polygon to hidden.
         parents the fade polygon to hidden.
         """
         """
-        self.noTransitions()
-        self.loadFade()
         if (t == 0):
         if (t == 0):
             # Fade in immediately with no lerp
             # Fade in immediately with no lerp
+            self.noTransitions()
+            self.loadFade()
             self.fade.detachNode()
             self.fade.detachNode()
         else:
         else:
             # Create a sequence that lerps the color out, then
             # Create a sequence that lerps the color out, then
             # parents the fade to hidden
             # parents the fade to hidden
-            self.fade.reparentTo(render2d, FADE_SORT_INDEX)
-            self.transitionIval = Sequence(self.lerpFunc(self.fade, t,
-                                                         self.alphaOff,
-                                                         self.alphaOn),
-                                 Func(self.fade.detachNode),
-                                 name = self.fadeTaskName,
-                                 )
-            if finishIval:
-                self.transitionIval.append(finishIval)
+            self.transitionIval = self.getFadeInIval(t, finishIval)
             self.transitionIval.start()
             self.transitionIval.start()
 
 
     def fadeOut(self, t=0.5, finishIval=None):
     def fadeOut(self, t=0.5, finishIval=None):
@@ -115,22 +143,16 @@ class Transitions:
         fadeIn or call noFade.
         fadeIn or call noFade.
         lerp
         lerp
         """
         """
-        self.noTransitions()
-        self.loadFade()
-        self.fade.reparentTo(render2d, FADE_SORT_INDEX)
         if (t == 0):
         if (t == 0):
             # Fade out immediately with no lerp
             # Fade out immediately with no lerp
+            self.noTransitions()
+            self.loadFade()
+            self.fade.reparentTo(render2d, FADE_SORT_INDEX)
             self.fade.setColor(self.alphaOn)
             self.fade.setColor(self.alphaOn)
         else:
         else:
             # Create a sequence that lerps the color out, then
             # Create a sequence that lerps the color out, then
             # parents the fade to hidden
             # parents the fade to hidden
-            self.transitionIval = Sequence(self.lerpFunc(self.fade, t,
-                                                         self.alphaOn,
-                                                         self.alphaOff),
-                                 name = self.fadeTaskName,
-                                 )
-            if finishIval:
-                self.transitionIval.append(finishIval)
+            self.transitionIval = self.getFadeOutIval(t,finishIval)
             self.transitionIval.start()
             self.transitionIval.start()
 
 
     def fadeOutActive(self):
     def fadeOutActive(self):