Found problem , triangles always returns hit and always says its the first one that's closest. Even though there should be no hit and not always the first one in the array to be closest. This can be tracked down to the function that checks if hit any triangle and calculates the closest one OR the TriangleCollision function