I have a dynamic spawning system where at runtime all the trees/rocks/etc are placed somewhere on the terrain. It's definitely a bit of a performance bottleneck at the moment for startup times, so would benefit greatly from being multithreaded. I'm struggling to think of how I would go about converting it to ECS/job systems though. Of course I understand some of these features may not be in ECS yet, nor is it production ready, so I don't intend to do this right away. Just thinking ahead a bit. So my spawning systems have a number of features Min/max slope of the terrain Min/max elevation Terrain texture Min distance from other objects The first three I get from a raycast at a random point on the terrain. From there I do an overlap sphere to check if there's anything near by. So basically I loop for a max number of iterations, picking a random vector position, and then run the other commands to see if that is a valid location. Can you run jobs within jobs without having to do them separately? If so then I can just do the raycast and overlap sphere in a new job where it's mostly identical to current code potentially. If not, then I'm kind of at a loss for how I would convert it over. My other concern is how to get it actually multithreaded, and not risk having two objects spawn in the same location.