using Godot; using System; using System.Collections.Generic; using RustyOptions; namespace Movementtests.systems; public partial class WallHugSystem : Node3D { private List _raycasts; public void Init() { _raycasts = new List(); _raycasts.Add(GetNode("front")); _raycasts.Add(GetNode("back")); _raycasts.Add(GetNode("left")); _raycasts.Add(GetNode("right")); } public bool IsWallHugging() { foreach (RayCast3D raycast in _raycasts) { if (raycast.IsColliding()) { return true; } } return false; } public Option GetWallNormal() { foreach (RayCast3D raycast in _raycasts) { if (raycast.IsColliding()) { return raycast.GetCollisionNormal().Some(); } } return Option.None; } }