sparkygd/scripts/origin/region_origin.gd

25 lines
723 B
GDScript

# no name - meant to be an autoload
# Handles regional origin.
extends Node
@export var region_size := 1000.0
@export var origin := Vector3i.ZERO
@export var anchor: RegionTransform
var nodes_to_move: Dictionary[Node3D, bool]
func _physics_process(_delta: float) -> void:
if (anchor and anchor.region != origin):
move_origin(anchor.region)
func add_node(new_node: Node3D) -> void:
nodes_to_move[new_node] = true
func remove_node(old_node: Node3D) -> void:
nodes_to_move.erase(old_node)
func move_origin(new_origin: Vector3i) -> void:
origin = new_origin
var move_amount := Vector3(new_origin - origin * 1000)
for node in nodes_to_move:
node.transform.origin += move_amount