Browse Source

added osd support

Darren Ranalli 20 years ago
parent
commit
0b79545908
1 changed files with 45 additions and 1 deletions
  1. 45 1
      direct/src/task/Task.py

+ 45 - 1
direct/src/task/Task.py

@@ -312,6 +312,8 @@ class TaskManager:
 
     doLaterCleanupCounter = 2000
 
+    OsdPrefix = 'task.'
+
     def __init__(self):
         self.running = 0
         self.stepping = 0
@@ -935,7 +937,49 @@ class TaskManager:
         # Ask for the time last frame
         return globalClock.getFrameTime(), globalClock.getFrameCount()
 
-
+    def startOsd(self):
+        self.add(self.doOsd, 'taskMgr.doOsd')
+        self._osdEnabled = None
+    def osdEnabled(self):
+        return hasattr(self, '_osdEnabled')
+    def stopOsd(self):
+        onScreenDebug.removeAllWithPrefix(TaskManager.OsdPrefix)
+        self.remove('taskMgr.doOsd')
+        del self._osdEnabled
+    def doOsd(self, task):
+        import fpformat
+        prefix = TaskManager.OsdPrefix
+        onScreenDebug.removeAllWithPrefix(prefix)
+        i = 0
+        taskNameWidth = 32
+        dtWidth = 10
+        priorityWidth = 10
+        totalDt = 0
+        totalAvgDt = 0
+        for taskPriList in self.taskList:
+            priority = `taskPriList.getPriority()`
+            for task in taskPriList:
+                if task is None:
+                    break
+                if task.isRemoved():
+                    taskName = '(R)' + task.name
+                else:
+                    taskName = task.name
+                totalDt = totalDt + task.dt
+                totalAvgDt = totalAvgDt + task.avgDt
+                onScreenDebug.add(
+                    ('%s%02s.%s' % (prefix, i, task.name)).ljust(taskNameWidth),
+                    '%s %s %s %s' % (
+                    fpformat.fix(task.dt*1000, 2).rjust(dtWidth),
+                    fpformat.fix(task.avgDt*1000, 2).rjust(dtWidth),
+                    fpformat.fix(task.maxDt*1000, 2).rjust(dtWidth),
+                    priority.rjust(priorityWidth)))
+                i += 1
+        onScreenDebug.add(('%s%02s.total' % (prefix, i)).ljust(taskNameWidth),
+                          '%s %s' % (
+            fpformat.fix(totalDt*1000, 2).rjust(dtWidth),
+            fpformat.fix(totalAvgDt*1000, 2).rjust(dtWidth),))
+        return cont
 """
 
 import Task