]> Untitled Git - baabarian.git/blob - class/ux/debug_stats.gd
* Fixed skin states in process_player
[baabarian.git] / class / ux / debug_stats.gd
1 extends MarginContainer
2 class_name DebugStats
3
4
5 var _vbox: VBoxContainer = null
6
7
8 class Property:
9         var num_format = "%4.2f"
10         var object  # The object being tracked.
11         var property  # The property to display (NodePath).
12         var label_ref  # A reference to the Label.
13         var display  # Display option (rounded, etc.)
14
15         func _init(_object, _property, _label, _display):
16                 object = _object
17                 property = _property
18                 label_ref = _label
19                 display = _display
20
21         func set_label():
22                 # Sets the label's text.
23                 var s = object.name + "/" + property + " : "
24                 var p = object.get_indexed(property)
25                 match display:
26                         "":
27                                 s += str(p)
28                         "length":
29                                 s += num_format % p.length()
30                         "round":
31                                 match typeof(p):
32                                         TYPE_INT, TYPE_FLOAT:
33                                                 s += num_format % p
34                                         TYPE_VECTOR2, TYPE_VECTOR3:
35                                                 s += str(p.round())
36                 label_ref.text = s
37
38 var props = []  # An array of the tracked properties.
39 var _labelSettings: LabelSettings = null
40
41
42 func _ready() -> void:
43         _labelSettings = LabelSettings.new()
44         _labelSettings.font_size = 15
45         
46         # add VBoxContainer as child
47         _vbox = VBoxContainer.new()
48         add_child(_vbox)
49         print(str(get_tree()))
50
51
52 func _process(_delta):
53         if not visible:
54                 return
55         for prop in props:
56                 prop.set_label()
57
58
59 func add_property(object, property, display):
60         var label = Label.new()
61         label.label_settings = _labelSettings
62         _vbox.add_child(label)
63         props.append(Property.new(object, property, label, display))
64
65
66 func remove_property(object, property):
67         for prop in props:
68                 if prop.object == object and prop.property == property:
69                         props.erase(prop)