Browse Source

add show-scene-graph-analyzer-meter config var

David Rose 14 years ago
parent
commit
0f96fafca5
1 changed files with 20 additions and 0 deletions
  1. 20 0
      direct/src/showbase/ShowBase.py

+ 20 - 0
direct/src/showbase/ShowBase.py

@@ -149,6 +149,7 @@ class ShowBase(DirectObject.DirectObject):
         # *all* windows.  Similarly with base.camList.
         self.win = None
         self.frameRateMeter = None
+        self.sceneGraphAnalyzerMeter = None
         self.winList = []
         self.winControls = []
         self.mainWinMinimized = 0
@@ -704,6 +705,9 @@ class ShowBase(DirectObject.DirectObject):
             if self.frameRateMeter:
                 self.frameRateMeter.clearWindow()
                 self.frameRateMeter = None
+            if self.sceneGraphAnalyzerMeter:
+                self.sceneGraphAnalyzerMeter.clearWindow()
+                self.sceneGraphAnalyzerMeter = None
 
         messenger.send('close_window', [win, mainWindow])
         if mainWindow:
@@ -856,6 +860,8 @@ class ShowBase(DirectObject.DirectObject):
                 # set.
                 flag = True
             self.setFrameRateMeter(flag)
+            flag = self.config.GetBool('show-scene-graph-analyzer-meter', False)
+            self.setSceneGraphAnalyzerMeter(flag)
         return success
 
     def setSleep(self, amount):
@@ -892,6 +898,20 @@ class ShowBase(DirectObject.DirectObject):
                 self.frameRateMeter.clearWindow()
                 self.frameRateMeter = None
 
+    def setSceneGraphAnalyzerMeter(self, flag):
+        """
+        Turns on or off (according to flag) a standard frame rate
+        meter in the upper-right corner of the main window.
+        """
+        if flag:
+            if not self.sceneGraphAnalyzerMeter:
+                self.sceneGraphAnalyzerMeter = SceneGraphAnalyzerMeter('sceneGraphAnalyzerMeter', self.render.node())
+                self.sceneGraphAnalyzerMeter.setupWindow(self.win)
+        else:
+            if self.sceneGraphAnalyzerMeter:
+                self.sceneGraphAnalyzerMeter.clearWindow()
+                self.sceneGraphAnalyzerMeter = None
+
     # [gjeon] now you can add more winControls after creating a showbase instance
     def setupWindowControls(self, winCtrl=None):
         if winCtrl is None: