Hello, this is a bit of a technical question concerning procedural generation and ECS (as stated in the title). Here's the context : - I have a procedural generation engine - I use ECS to generate 40+k blocks with different textures (not one texture with multiple block texture similar to an atlas, but full HD textures, one per block type). - As it is a sandbox game with destructible/constructible terrain, i need to access data on each block per coordinate/index - ECS gives block list in random order - I want to be able to move only some blocks to new positions, and keep the other where they are so the terrain can follow the player, and not recreating 40+k blocks each time the system's update is called (pooling the entities essentially) What would be a recommended way to access a block by coordinates. I thought of a few solutions : - Using a loop and check for Position values, but it would be very complicated for a pooling system. - Using some kind of id to mark entities needing change, and keeping the data in a table outside ECS systems, which would be used by the systems. But then it adds a need for more resources. Also, i took a look at job interfaces, and it's a bit confusing. If i have to change the MeshInstanceRenderer of a lot of blocks in a single frame, which would be the most appropriate? I thought of using IJobParallelFor, since the other don't seem to fit the criteria, but am i right?