Best way to create a group of systems that must only be updated manually?

I have a a group of systems that I wish to update manually, and they should never update automatically every frame. They are systems that must launch jobs that filter some results after some other systems have run, so they may be updated anywhere from 0 to 10+ times every frame

What would be the best approach for this? Right now I’m thinking I’ll have a ComponentSystemGroup that these systems will register in. But how do I tell this ComponentSystemGroup to never update by itself?

Would there be anything wrong with doing this (Enabled = false):

If I call Update() on a disabled group, will all job dependency and GetArchetypeChunkComponentType(), etc… still work exactly as expected?

And am I right in assuming that a system registered in a Disabled group will also be disabled?

[DisableAutoCreation]
[UpdateBefore]
[UpdateAfter]
https://docs.unity3d.com/Packages/com.unity.entities@0.1/manual/system_update_order.html

I can’t really make use of [UpdateBefore] and [UpdateAfter], since they won’t just update once in the frame.

As for [DisableAutoCreation], I’m in a situation where people might want to add custom systems to the “HitProcessingGroup”, and I’d prefer if they don’t have to remember to add [DisableAutoCreation] on their systems and create these systems manually on Start. I’d prefer things to be completely automatic when you register your system in HitProcessingGroup, which is why I’m wondering if the “Enabled = false” approach would work

EDIT: oh snap, I forgot I could add [DisableAutoCreation] on the group itself. If I do that and I manually create that group on start:

  • Will that automatically create all of its child systems as well?
  • Will it make it so that it doesn’t receive automatic Update()s?

5233391--522083--20191202023250.png 5233391--522086--20191202023305.png 5233391--522089--20191202023321.png
I see the official code from the multiple player demo(NetCube)
You can test it…

1 Like