public static int GetDifferenceInDirection(Vector3 position, Vector3 direction) { direction = direction.normalized; List <Vector3> inColumn = new List <Vector3> (); Vector3 valueFinder = VectorHelper.BinaryInverse(direction); valueFinder = VectorHelper.Abs(valueFinder); Vector3 columnPosition = VectorHelper.Multiply(position, valueFinder); Vector3 valueGetter = VectorHelper.Abs(direction); float min = -1; foreach (Vector3Int key in Level.Singleton.Entities.Keys) { Vector3 keyV = key.PositionFloats; if (!(position == keyV) && VectorHelper.Eq(VectorHelper.Multiply(keyV, valueFinder), columnPosition)) { Vector3 directionTemp = keyV - position; float diff = Vector3.Dot(direction, directionTemp); if (diff > 0) { if (min == -1) { min = diff; } else { min = Mathf.Min(min, diff); } } } } return(Mathf.RoundToInt(min)); }