public static Vector3 Raycast_addBlockOrigin(Player player, int interactions = 20) { // Initialize variables Vector3 destroyBlockOrigin = new Vector3(0, -1, 0); Vector3 directionRay = Raycast.Ray_Direction(player); // Checking for interaction with blocks and direction vector int i; Vector3 calculatedOrigin; for (i = 0; i < interactions; i++) { calculatedOrigin = Chunk.getBlockOffset(player.camera.Position + directionRay * i); if (GameDictionaries.blocksDictionary.ContainsKey(calculatedOrigin)) { if (GameDictionaries.blocksDictionary[calculatedOrigin] != BlockType.Water) { destroyBlockOrigin = calculatedOrigin; break; } } } if (destroyBlockOrigin != new Vector3(0, -1, 0) && i != 0) { return(Chunk.getBlockOffset(player.camera.Position + directionRay * (i - 1))); } else { return(destroyBlockOrigin); } }