I love the 4.16 update. It works so smooth, and quick! It has trouble removing when I spam at a target further ahead of me in my test project, but once I implement it into my game the way I want it won't be a problem. There are a few things I would like to get going but I will need help with where to look, and an idea how to do them:
1) I want to take an area of my choosing, kind of like with stamp mesh, and scan the contents of that area, returning two arrays: one containing material ID's detected, and the other containing the volume of the corresponding ID at the same index. Maybe an option to include/exclude scanning for 0? Anyways, this would help with replacing. Take any non-zero and make it this material! (Or tell me what scripts to look inside of, please! I would like to scan an area for data and make use of it, and possibly even store the data somehow.)
2) Is there any way you guys can make it so that potentially useful parts of the entire voxel farm plugin are exposed to blueprints? At the very least, that we can assign our own blueprint made of a child derivative of one of the other classes (VoxelFarmActor, VoxelManager, VoxelFarmCells, etc). For example: in the last version we were able to assign the cells blueprint, but it seems to have disappeared. I would like to bring it back so I can have my own separate collision and trace channels for voxels so that I can look for them to use with other blueprints. Perhaps maybe even exposing your voxel tracing method? You could even expose this to the "Project Settings", make a section for the Voxel Farm plugin in the Plugins section. With those two things, I can make hammers and axes and pickaxes smash holes, but only the pickaxe allows you to collect the fragments automatically. Just with that alone, I could have a whole crafting/destruction system in place that would be expansive. With those two things exposed, much of the rest anyone could take care of in blueprints.
But again, let us make derivative blueprints of the VoxelFarm scripts that we can assign somewhere so we can customize in BP what we want. It will broaden your base.
3) This is a simple question, really: I want to use a grass texture on the terrain only at LOD levels where the terrain/material is further away. When it is up close, I want to be able to change it to dirt and instantiate grass mesh to it. So essentially: The material is dirt up close with a bunch of instanced grass foliage, but further away it is just a grass material. How can I achieve this?
4) I mentioned this, about wanting to detect damage to voxels. Is there somewhere I could just enable "Can Be Damaged" and use that event? I tried on my child BP of VoxelFarmWorldActor, but it wasn't able to pick anything up on the blueprints, so I imagine it falls to the VoxelFarmCell.
5) How goes the progress with the terrain editing? Will that include a way to, say, build a structure and save it as a template? What about recovering original terrain data?
6) Another thing that occurred to me which is kind of ideas 1 & 5 about saving a template: Would it be possible to, say I have a wall I want to put up that has been pre-saved: is there a way for me to store that wall without stamping it in a specific place? A simple command to "Partial-stamp" that would require the stamp's location, rotation, scale, MaterialID, physics scan, and then an "area mesh" that could be another mesh of your choosing, and it's location, rotation, and scale. Result: MeshA is stamped only where it overlaps MeshB. You could even include a filter to only "Stamp MaterialID_X of MeshA where it overlaps MeshB", so they could both be separate. But that could be done (technically by us) by first using the partial stamp, and then filtering the voxels in the space dimensions of MeshB, and remove the unwanted voxel materials... but then in that case we'd be wasting resources on adding and then subtracting instead of otherwise adding only specific things. It might be best to just place an non-renderable "instance" of the voxel of MeshA that people want to partially stamp and place it in the work, and then be able to do scans for these invisible voxels, and use a function to simply stamp materials into existence based on the overlap between the non-renderable voxel instance and the chosen mesh designated for MeshB. You could also make a simple option to instantaneously stamp the rest of that voxel accordingly.
Keep up the great work!