@@ -23,7 +23,8 @@ class Stats:
23
23
The alignment of the stats window, either "left" or "right". Default is "left".
24
24
auto_render : bool
25
25
If True, the render method will be called automatically. Default is True.
26
-
26
+ extra_data : dict
27
+ A dictionary of extra data (key, value) to display in the stats window. Default is None.
27
28
"""
28
29
29
30
def __init__ (
@@ -35,6 +36,7 @@ def __init__(
35
36
background = (0 , 0.2 , 0 , 0.5 ),
36
37
align = "left" ,
37
38
auto_render = True ,
39
+ extra_data = None ,
38
40
):
39
41
self ._foreground = foreground
40
42
self ._background = background
@@ -66,14 +68,18 @@ def __init__(
66
68
self ._ms_samples = np .zeros (100 , dtype = np .float32 )
67
69
68
70
self ._mode = 0
69
- self ._auto_render = auto_render
71
+
72
+ self .auto_render = auto_render
73
+ self .extra_data = extra_data or {}
74
+ self .__window_size = None
70
75
71
76
def _draw_imgui (self ):
72
77
imgui .new_frame ()
73
78
74
- imgui .set_next_window_size ((130 , 0 ), imgui .Cond_ .always )
75
- if self ._align == "right" :
76
- pos = imgui .get_io ().display_size .x - 130
79
+ imgui .set_next_window_size ((0 , 0 ), imgui .Cond_ .always )
80
+
81
+ if self ._align == "right" and self .__window_size is not None :
82
+ pos = imgui .get_io ().display_size .x - self .__window_size .x
77
83
else :
78
84
pos = 0
79
85
@@ -107,6 +113,12 @@ def _draw_imgui(self):
107
113
imgui .text (f"{ int (ms )} ms({ self ._tmin } -{ self ._tmax } )" )
108
114
imgui .plot_lines ("##" , self ._ms_samples , graph_size = (115 , 25 ))
109
115
116
+ if self ._extra_data :
117
+ imgui .separator ()
118
+ for k , v in self ._extra_data .items ():
119
+ imgui .text (f"{ k } : { v } " )
120
+
121
+ self .__window_size = imgui .get_window_size ()
110
122
imgui .pop_style_color ()
111
123
112
124
imgui .end ()
@@ -131,6 +143,16 @@ def auto_render(self):
131
143
def auto_render (self , value ):
132
144
self ._auto_render = bool (value )
133
145
146
+ @property
147
+ def extra_data (self ):
148
+ """A dictionary of extra data (key, value) to display in the stats window."""
149
+ return self ._extra_data
150
+
151
+ @extra_data .setter
152
+ def extra_data (self , value ):
153
+ assert isinstance (value , dict ), "extra_data must be a dictionary"
154
+ self ._extra_data = value
155
+
134
156
def start (self ):
135
157
if not self ._init :
136
158
return
0 commit comments