ECS splits up models with multiple materials into multiple entities (one per material). So when you want to override a material, you would be adding/modifying the component on one of its children. The order of those children is mostly random, and the only thing unique about them is the Material/Mesh id. So you have to search through them, retrieve the mesh id and match it to the material array, where you have the material names. You can't Burst this, and I'm not sure how much of this you can cache, given that ECS shuffles everything around after the structural changes. Am I missing something?