Files
millimeters-of-aluminum/scenes/celestial_bodies/barycenter.gd
2025-12-05 15:50:48 +01:00

26 lines
662 B
GDScript

# scripts/barycenter.gd
class_name Barycenter
extends OrbitalBody3D
func _ready():
physics_mode = PhysicsMode.INDEPENDENT
await get_tree().process_frame
# We no longer run a local simulation here.
# We only need physics_process to integrate our own movement.
set_physics_process(true)
func get_internal_attractors() -> Array[OrbitalBody3D]:
var internal_attractors: Array[OrbitalBody3D] = []
for child in get_children():
if child is OrbitalBody3D:
internal_attractors.append(child)
return internal_attractors
func recalculate_total_mass():
base_mass = 0.0
for child in get_internal_attractors():
base_mass += child.mass
mass = base_mass