Browse Source

do not load font until it is actually needed

David Rose 22 years ago
parent
commit
7753bf7e24
1 changed files with 14 additions and 5 deletions
  1. 14 5
      direct/src/showbase/OnScreenDebug.py

+ 14 - 5
direct/src/showbase/OnScreenDebug.py

@@ -8,9 +8,18 @@ import DirectUtil
 
 
 class OnScreenDebug:
 class OnScreenDebug:
     def __init__(self):
     def __init__(self):
+        self.enabled = config.GetBool("on-screen-debug-enabled", 0)
+        self.onScreenText = None
+        self.frame = 0
+        self.text = ""
+        self.data = {}
+
+    def load(self):
+        if self.onScreenText:
+            return
+        
         fontPath = config.GetString("on-screen-debug-font", "cmtt12")
         fontPath = config.GetString("on-screen-debug-font", "cmtt12")
         fontScale = config.GetFloat("on-screen-debug-font-scale", 0.05)
         fontScale = config.GetFloat("on-screen-debug-font-scale", 0.05)
-        self.enabled = config.GetBool("on-screen-debug-enabled", 0)
         font = loader.loadFont(fontPath)
         font = loader.loadFont(fontPath)
         if not font.isValid():
         if not font.isValid():
             print "failed to load OnScreenDebug font", fontPath
             print "failed to load OnScreenDebug font", fontPath
@@ -21,13 +30,12 @@ class OnScreenDebug:
                 mayChange = 1, font = font)
                 mayChange = 1, font = font)
         # Make sure readout is never lit or drawn in wireframe
         # Make sure readout is never lit or drawn in wireframe
         DirectUtil.useDirectRenderStyle(self.onScreenText)
         DirectUtil.useDirectRenderStyle(self.onScreenText)
-        self.frame = 0
-        self.text = ""
-        self.data = {}
 
 
     def render(self):
     def render(self):
         if not self.enabled:
         if not self.enabled:
             return
             return
+        if not self.onScreenText:
+            self.load()
         self.onScreenText.clearText()
         self.onScreenText.clearText()
         for k, v in self.data.items():
         for k, v in self.data.items():
             if v[0] == self.frame:
             if v[0] == self.frame:
@@ -49,7 +57,8 @@ class OnScreenDebug:
 
 
     def clear(self):
     def clear(self):
         self.text = ""
         self.text = ""
-        self.onScreenText.clearText()
+        if self.onScreenText:
+            self.onScreenText.clearText()
 
 
     def add(self, key, value):
     def add(self, key, value):
         self.data[key] = (self.frame, value)
         self.data[key] = (self.frame, value)