mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-17 20:23:47 -04:00
added prefix and network time (deltaStamp) reporting to report()
This commit is contained in:
parent
d5d97fb009
commit
41c519ad20
@ -2509,7 +2509,45 @@ class ClassTree:
|
|||||||
return self._getStr()
|
return self._getStr()
|
||||||
|
|
||||||
|
|
||||||
def report(types = [], notifyFunc = None, dConfigParam = []):
|
def report(types = [], prefix = '', notifyFunc = None, dConfigParam = []):
|
||||||
|
"""
|
||||||
|
This is a decorator generating function. Use is similar to
|
||||||
|
a @decorator, except you must be sure to call it as a function.
|
||||||
|
It actually returns the decorator which is then used to transform
|
||||||
|
your decorated function. Confusing at first, I know.
|
||||||
|
|
||||||
|
Decoration occurs at function definition time.
|
||||||
|
|
||||||
|
If __dev__ is not defined, or resolves to False, this function
|
||||||
|
has no effect and no wrapping/transform occurs. So in production,
|
||||||
|
it's as if the report has been asserted out.
|
||||||
|
|
||||||
|
Parameters::
|
||||||
|
types : A subset list of ['timeStamp', 'frameCount', 'avLocation']
|
||||||
|
This allows you to specify certain common bits of info.
|
||||||
|
|
||||||
|
args: Prints the arguments as they were passed to this
|
||||||
|
function.
|
||||||
|
timeStamp: Adds the current frame time to the output.
|
||||||
|
|
||||||
|
frameCount: Adds the current frame count to the output.
|
||||||
|
Usually cleaner than the timeStamp output.
|
||||||
|
|
||||||
|
avLocation: Adds the localAvatar's network location
|
||||||
|
to the output. Useful for interest debugging.
|
||||||
|
|
||||||
|
prefix: Optional string to prepend to output, just before the function.
|
||||||
|
Allows for easy grepping.
|
||||||
|
notifyFunc: A notify function such as info, debug, warning, etc.
|
||||||
|
By default the report will be printed to stdout. This
|
||||||
|
will allow you send the report to a designated 'notify'
|
||||||
|
output.
|
||||||
|
|
||||||
|
dConfigParams: A list of Config.prc string variables.
|
||||||
|
By default the report will always print. If you
|
||||||
|
specify this param, it will only print if one of the
|
||||||
|
specified config strings resolve to True.
|
||||||
|
"""
|
||||||
def decorator(f):
|
def decorator(f):
|
||||||
return f
|
return f
|
||||||
try:
|
try:
|
||||||
@ -2518,28 +2556,43 @@ def report(types = [], notifyFunc = None, dConfigParam = []):
|
|||||||
except NameError,e:
|
except NameError,e:
|
||||||
return decorator
|
return decorator
|
||||||
|
|
||||||
|
from direct.distributed.ClockDelta import globalClockDelta
|
||||||
|
|
||||||
def decorator(f):
|
def decorator(f):
|
||||||
def wrap(*args,**kwargs):
|
def wrap(*args,**kwargs):
|
||||||
aargs = args
|
if args:
|
||||||
kkwargs = kwargs
|
rArgs = [args[0].__class__.__name__ + ', ']
|
||||||
rArgs = [`x`+', ' for x in args] + [ x + ' = ' + '%s, ' % `y` for x,y in kwargs.items()]
|
else:
|
||||||
|
rArgs = []
|
||||||
|
|
||||||
|
if 'args' in types:
|
||||||
|
rArgs += [`x`+', ' for x in args[1:]] + \
|
||||||
|
[ x + ' = ' + '%s, ' % `y` for x,y in kwargs.items()]
|
||||||
|
|
||||||
if not rArgs:
|
if not rArgs:
|
||||||
rArgs = '()'
|
rArgs = '()'
|
||||||
else:
|
else:
|
||||||
rArgs = '(' + reduce(str.__add__,rArgs)[:-2] + ')'
|
rArgs = '(' + reduce(str.__add__,rArgs)[:-2] + ')'
|
||||||
|
|
||||||
outStr = f.func_name + rArgs
|
outStr = '%s%s' % (f.func_name, rArgs)
|
||||||
|
|
||||||
|
preStr = ''
|
||||||
|
|
||||||
if 'frameCount' in types:
|
if 'frameCount' in types:
|
||||||
outStr = '%8d : %s' % (globalClock.getFrameCount(), outStr)
|
outStr = '%8d : %s' % (globalClock.getFrameCount(), outStr)
|
||||||
|
|
||||||
if 'timeStamp' in types:
|
if 'timeStamp' in types:
|
||||||
outStr = '%5.3f : %s' % (globalClock.getFrameTime(), outStr)
|
outStr = '%8.3f : %s' % (globalClock.getFrameTime(), outStr)
|
||||||
|
|
||||||
|
if 'deltaStamp' in types:
|
||||||
|
outStr = '%8.2f : %s' % (globalClock.getRealTime() - \
|
||||||
|
globalClockDelta.delta, outStr)
|
||||||
if 'avLocation' in types:
|
if 'avLocation' in types:
|
||||||
outStr = '%s : %s' % (outStr, str(localAvatar.getLocation()))
|
outStr = '%s : %s' % (outStr, str(localAvatar.getLocation()))
|
||||||
|
|
||||||
|
if prefix:
|
||||||
|
outStr = '%s %s' % (prefix, outStr)
|
||||||
|
|
||||||
# determine whether we should print
|
# determine whether we should print
|
||||||
doPrint = False
|
doPrint = False
|
||||||
if not dConfigParam:
|
if not dConfigParam:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user