25 lines
866 B
GDScript
25 lines
866 B
GDScript
extends Node
|
|
|
|
var screen_size = Vector2(1920.0, 1080.0) # Default screen size (this is a float for some reason)
|
|
var viewport_size
|
|
@onready var extent: Rect2 = get_viewport().get_visible_rect()
|
|
|
|
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
|