Răsfoiți Sursa

added report function decorator

Josh Wilson 19 ani în urmă
părinte
comite
adb1b3411c
1 a modificat fișierele cu 33 adăugiri și 0 ștergeri
  1. 33 0
      direct/src/showbase/PythonUtil.py

+ 33 - 0
direct/src/showbase/PythonUtil.py

@@ -2392,6 +2392,39 @@ class ClassTree:
     def __repr__(self):
     def __repr__(self):
         return self._getStr()
         return self._getStr()
 
 
+
+def report(types = [],notifyName = None,notifyLevel = 'fatal'):
+    if __dev__:
+        def decorator(f):
+            def wrap(*args,**kwargs):
+                rArgs = [`x`+', ' for x in args] + [ x + ' = ' + '%s, ' % `y` for x,y in kwargs.items()]
+                    
+                if not rArgs:
+                    rArgs = '()'
+                else:
+                    rArgs = '(' + reduce(str.__add__,rArgs)[:-2] + ')'
+
+                outStr = f.func_name + rArgs
+
+                if 'frameCount' in types:
+                    outStr = `globalClock.getFrameCount()` + ': ' + outStr
+
+                if args and notifyName:
+                    eval('args[0].%s.%s(\'%s\')'%(notifyName,notifyLevel,outStr))
+                else:
+                    print outStr
+
+                return f(*args,**kwargs)
+
+            wrap.func_name = f.func_name
+            wrap.__doc__ = f.__doc__
+            return wrap
+    else:
+        def decorator(f):
+            return f
+        
+    return decorator
+
 def getBase():
 def getBase():
     try:
     try:
         return base
         return base