extends Node var screen_size = Vector2(1920.0, 1080.0) # Default screen size (this is a float for some reason) var viewport_size func _ready() -> void: viewport_size = get_viewport().get_visible_rect().size # TODO: This needs to be called from a script inheriting a CharacterBody2D (e.g. the player) # Alternative would be to pass the player reference to this script (which might be better?) func init_screen_size(x:float, y:float) -> void: screen_size.x = x screen_size.y = y # This can take a vector of any size (but should be 2d, other components are unused) func get_boundaried_position(position): ## clamp #return position.clamp(Vector2.ZERO, screen_size) ## periodic position.x = wrapf(position.x, 0, screen_size.x) position.y = wrapf(position.y, 0, screen_size.y) return position