aboutsummaryrefslogtreecommitdiff
path: root/game/addons/zylann.hterrain/tools/minimap/ratio_container.gd
diff options
context:
space:
mode:
Diffstat (limited to 'game/addons/zylann.hterrain/tools/minimap/ratio_container.gd')
-rw-r--r--game/addons/zylann.hterrain/tools/minimap/ratio_container.gd32
1 files changed, 32 insertions, 0 deletions
diff --git a/game/addons/zylann.hterrain/tools/minimap/ratio_container.gd b/game/addons/zylann.hterrain/tools/minimap/ratio_container.gd
new file mode 100644
index 0000000..1bd6aca
--- /dev/null
+++ b/game/addons/zylann.hterrain/tools/minimap/ratio_container.gd
@@ -0,0 +1,32 @@
+# Simple container keeping its children under the same aspect ratio
+
+@tool
+extends Container
+
+
+@export var ratio := 1.0
+
+
+func _notification(what: int):
+ if what == NOTIFICATION_SORT_CHILDREN:
+ _sort_children2()
+
+
+# TODO Function with ugly name to workaround a Godot 3.1 issue
+# See https://github.com/godotengine/godot/pull/38396
+func _sort_children2():
+ for i in get_child_count():
+ var child = get_child(i)
+ if not (child is Control):
+ continue
+ var w := size.x
+ var h := size.x / ratio
+
+ if h > size.y:
+ h = size.y
+ w = h * ratio
+
+ var rect := Rect2(0, 0, w, h)
+
+ fit_child_in_rect(child, rect)
+