Valid/ok to call other ComponentSystems from within a ComponentSystem

We did have a few demos initially where we relied on injections from different systems in somewhat similar ways to the original post. One huge drawback of injecting other systems and using their component injection is that our ECS implementation no longer has all the information about what components you are accessing, which means it cannot give you correct dependencies when you start jobifying your code.

When you loose the dependency information and no longer know which systems access what components your codebase quickly become impossible to optimize, so I would strongly recommend against using such a design.

I know it is not always easy and you often have to rethink your problem, but you should always strive to make sure all systems define all data it is going to access upfront (by using injection / component groups directly) and that all data communicated between systems is stored in components which are using that injection. We have a few examples now where we even use empty dummy components to track access to static managed data shared between systems just to get the dependencies right.