46 lines
1.2 KiB
GDScript
46 lines
1.2 KiB
GDScript
# MIT License
|
|
# Copyright (c) 2019 Lupo Dharkael
|
|
|
|
class_name FpsLabel
|
|
|
|
extends CanvasLayer
|
|
|
|
|
|
enum Position {TOP_LEFT, TOP_RIGHT, BOTTOM_LEFT, BOTTOM_RIGHT, NONE}
|
|
|
|
export (Position) var position = Position.TOP_LEFT
|
|
export(int) var margin : int = 5
|
|
|
|
var label : Label
|
|
|
|
|
|
func _ready() -> void:
|
|
label = Label.new()
|
|
add_child(label)
|
|
var _ignore = get_tree().get_root().connect("size_changed", self, "update_position")
|
|
update_position()
|
|
|
|
# pos should be of type Position
|
|
func set_position(pos : int):
|
|
position = pos
|
|
update_position()
|
|
|
|
|
|
func update_position():
|
|
var viewport_size : Vector2 = get_viewport().size
|
|
var label_size : Vector2 = label.rect_size
|
|
|
|
match position:
|
|
Position.TOP_LEFT:
|
|
offset = Vector2(margin, margin)
|
|
Position.BOTTOM_LEFT:
|
|
offset = Vector2(margin, viewport_size.y - margin - label_size.y)
|
|
Position.TOP_RIGHT:
|
|
offset = Vector2(viewport_size.x - margin - label_size.x, margin)
|
|
Position.BOTTOM_RIGHT:
|
|
offset = Vector2(viewport_size.x - margin - label_size.x, viewport_size.y - margin - label_size.y)
|
|
|
|
|
|
func _process(_delta : float) -> void:
|
|
label.text = "fps: " + str(Engine.get_frames_per_second()) + " " + str(Performance.get_monitor(Performance.TIME_FPS))
|