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