imperfect-space/scripts/GravityZone.cs

23 lines
515 B
C#

using Godot;
public partial class GravityZone : Area3D
{
public Node3D Parent;
public override void _Ready()
{
Parent = GetParent<Node3D>();
}
public void OnBodyEntered(Node3D body)
{
GravityReceiver receiver = body.GetNodeOrNull<GravityReceiver>("GravityReceiver");
receiver?.EnterGravityZone(this, Parent.GetParent<Node3D>());
}
public void OnBodyExited(Node3D body)
{
GravityReceiver receiver = body.GetNodeOrNull<GravityReceiver>("GravityReceiver");
receiver?.ExitGravityZone(this);
}
}