I mean, you can convert these structures to arrays, you can just drag a pin from “structure” and type “convert” and use the function that pops up.
But again, no matter how you optimize the algorithm, you’re still generally going to be creating at least a few new vertices every time you apply the boolean. If you have a game like you showed, with a fairly large “Diggable” object, you’ll eventually reach a point where the most optimized object still has too many vertices for the boolean to work fast enough, causing significant lag. This is a limitation of the boolean algorithm, it wasn’t designed to work at runtime on objects with many vertices. I don’t think there’s much you can do for a single object to ensure that there are no lags in the long run.
Voxel splitting is the only good option designed to solve these kinds of problems. It’s a complex topic, but it’s the only good solution I can suggest here.