using Gameplay.Level; using Gameplay.Performance; using TGS; namespace Gameplay { using UnityEngine; public static class GroundHitHelper { private static RaycastHit[] _raycastHits = new RaycastHit[10]; public static int CalcHitCellIndex(Vector2 mousePose, TerrainGridSystem tgs) { var camera = Camera.main; var ray = camera.ScreenPointToRay(mousePose * PerformanceManager.instance.screenScale); var layerMask = LayerMask.GetMask("Ground"); var raycastCount = Physics.RaycastNonAlloc(ray, _raycastHits, 1000, layerMask); if (raycastCount > 0) { var firstHit = _raycastHits[0]; var hitPoint = firstHit.point; var cell = tgs.CellGetAtPosition(hitPoint, true); return cell?.index ?? -1; } return -1; } } }