fx: wrapping

This commit is contained in:
2026-03-01 17:41:15 +01:00
parent 0e447f80ec
commit 9d9ed22ea8
2 changed files with 15 additions and 13 deletions

View File

@@ -6,7 +6,7 @@ var mainSceneInstance
# Screen
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()
var extent: Rect2
# utils.
var rng = RandomNumberGenerator.new()
@@ -57,6 +57,8 @@ func init_screen_size(x:float, y:float) -> void:
screen_size.x = x
screen_size.y = y
extent = Rect2(Vector2(-viewport_size.x/2, -viewport_size.y/2), viewport_size + screen_size)
# This can take a vector of any size (but should be 2d, other components are unused)
func get_boundaried_position(position):
# clamp

View File

@@ -52,34 +52,34 @@ func _handle_wrapping():
# Find corresponding section of the screen
if owner.collision.position.x < GameManager.screen_size.x/2 and owner.collision.position.y < GameManager.screen_size.y/2:
# Right
mirrors[0].global_position = owner.collision.global_position + Vector2(GameManager.screen_size.x, 0)
mirrors[0].global_position = owner.collision.global_position + Vector2(GameManager.extent.size.x, 0)
# Diag
mirrors[2].global_position = owner.collision.global_position + Vector2(GameManager.screen_size.x, GameManager.screen_size.y)
mirrors[2].global_position = owner.collision.global_position + Vector2(GameManager.extent.size.x, GameManager.extent.size.y)
# Bottom
mirrors[1].global_position = owner.collision.global_position + Vector2(0, GameManager.screen_size.y)
mirrors[1].global_position = owner.collision.global_position + Vector2(0, GameManager.extent.size.y)
elif owner.collision.position.x < GameManager.screen_size.x/2:
# Top
mirrors[0].global_position = owner.collision.global_position + Vector2(0, - GameManager.screen_size.y)
mirrors[0].global_position = owner.collision.global_position + Vector2(0, - GameManager.extent.size.y)
# Diag
mirrors[1].global_position = owner.collision.global_position + Vector2(GameManager.screen_size.x, - GameManager.screen_size.y)
mirrors[1].global_position = owner.collision.global_position + Vector2(GameManager.extent.size.x, - GameManager.extent.size.y)
# Right
mirrors[2].global_position = owner.collision.global_position + Vector2(GameManager.screen_size.x, 0)
mirrors[2].global_position = owner.collision.global_position + Vector2(GameManager.extent.size.x, 0)
elif owner.collision.position.y < GameManager.screen_size.y/2:
# Left
mirrors[0].global_position = owner.collision.global_position + Vector2(- GameManager.screen_size.x, 0)
mirrors[0].global_position = owner.collision.global_position + Vector2(- GameManager.extent.size.x, 0)
# Bottom
mirrors[1].global_position = owner.collision.global_position + Vector2(0, GameManager.screen_size.y)
mirrors[1].global_position = owner.collision.global_position + Vector2(0, GameManager.extent.size.y)
# Diag
mirrors[2].global_position = owner.collision.global_position + Vector2(- GameManager.screen_size.x, GameManager.screen_size.y)
mirrors[2].global_position = owner.collision.global_position + Vector2(- GameManager.extent.size.x, GameManager.extent.size.y)
else:
# Left
mirrors[0].global_position = owner.collision.global_position + Vector2(- GameManager.screen_size.x, 0)
mirrors[0].global_position = owner.collision.global_position + Vector2(- GameManager.extent.size.x, 0)
# Diag
mirrors[1].global_position = owner.collision.global_position + Vector2(- GameManager.screen_size.x, - GameManager.screen_size.y)
mirrors[1].global_position = owner.collision.global_position + Vector2(- GameManager.extent.size.x, - GameManager.extent.size.y)
# Top
mirrors[2].global_position = owner.collision.global_position + Vector2(0, - GameManager.screen_size.y)
mirrors[2].global_position = owner.collision.global_position + Vector2(0, - GameManager.extent.size.y)