2023-08-25 14:34:57 +02:00
|
|
|
######################################
|
|
|
|
# THE CORE FRAMEWORK #
|
|
|
|
# MADE BY THE STAROPENSOURCE PROJECT #
|
|
|
|
# AND CONTRIBUTERS (THANK YOU!) #
|
|
|
|
# #
|
|
|
|
# COPYRIGHT 2023 THE STAROPENSOURCE #
|
|
|
|
# PROJECT AND CONTRIBUTERS #
|
|
|
|
# #
|
|
|
|
# LICENSED UNDER THE GNU GENERAL #
|
|
|
|
# PUBLIC LICENSE VERSION 3 (ONLY) #
|
|
|
|
######################################
|
|
|
|
extends Node
|
|
|
|
|
|
|
|
# CORE modules
|
|
|
|
var core: Node = null
|
|
|
|
|
|
|
|
# Delta value, used for get_fps() and get_delta()
|
|
|
|
var delta: float = 0.0
|
|
|
|
|
|
|
|
# Updates delta variable
|
|
|
|
func _process(delta_process) -> void:
|
|
|
|
delta = delta_process
|
|
|
|
|
|
|
|
# Returns the title of the main window
|
|
|
|
## Included as DisplayServer.window_get_title() (for some
|
|
|
|
## reason) does not exist and not many know that /root/
|
|
|
|
## is a Window node (which does have a "title" variable)
|
|
|
|
func get_title() -> String:
|
|
|
|
if core.protection_mode: return ""
|
|
|
|
return get_tree().root.title
|
|
|
|
|
|
|
|
# Returns the current FPS (Frames Per Second) value
|
|
|
|
func get_fps(flatten:bool = false) -> float:
|
|
|
|
if core.protection_mode: return 0.0
|
|
|
|
if str(delta) == "0":
|
|
|
|
# In the rare case where delta is zero, return INF
|
|
|
|
return INF
|
|
|
|
else:
|
|
|
|
if flatten:
|
|
|
|
# Removes decimal numbers
|
|
|
|
return float(int(1/delta))
|
|
|
|
else:
|
|
|
|
# Yes, it's weird but 1/delta does return the FPS value.
|
|
|
|
return 1/delta
|
|
|
|
|
|
|
|
# Returns the time it took Godot to render a frame
|
|
|
|
func get_rendertime() -> float:
|
|
|
|
if core.protection_mode: return 0.0
|
|
|
|
return Performance.get_monitor(Performance.TIME_PROCESS)
|
|
|
|
|
|
|
|
# Returns the delta time
|
|
|
|
func get_delta() -> float:
|
|
|
|
if core.protection_mode: return 0.0
|
|
|
|
return delta
|
|
|
|
|
|
|
|
# Converts a number of bytes to a number of mebibytes
|
|
|
|
func byte_to_mib(bytes:int,flatten:bool = true) -> float:
|
|
|
|
if flatten:
|
|
|
|
@warning_ignore("integer_division")
|
|
|
|
return bytes/1048576
|
|
|
|
return bytes/float(1048576)
|
|
|
|
|
|
|
|
# Flattens a floating point number
|
|
|
|
func flat_float(number:float) -> float:
|
|
|
|
return float(int(number))
|
|
|
|
|
|
|
|
func flat_float_int(number:float) -> int:
|
|
|
|
return int(number)
|
2023-08-25 16:57:17 +02:00
|
|
|
|
|
|
|
# Get object center
|
|
|
|
func get_object_center(child_size:float,parent_size:float) -> float:
|
|
|
|
return parent_size/2-child_size/2
|