I’ve been using [DisableAutoCreation] for a while now, however such systems don’t seem to appear in the entity debugger, even when using [UpdateInGroup( typeof( SimulationSystemGroup ) )].
With this issue still present after updating to 2019.3, I now wonder if my setup is wrong somehow?
Additionally, despite using UpdateInGroup & CreateSystem in the game init phase, the System doesn’t seem to update.
This is an designed behavior.[DisableAutoCreation]means you would like to manually update this system, so it’s out of player loop. What the debugger show is player loop.
If you want to see this system info, you can find out the entity this system update, and expand “Used by Systems” label in the inspector.
If you want to update this system, you should use this somewhere else; World.GetOrCreateSystem<YOURSYSTEM>().Update();
@eterlan that’s what I’ve been doing so far, but that causes the systems to be disconnected from others in regards to execution order.
I understand the design intention, but not why there couldn’t be an alternative to manually add to that debug list, especially considering that information is exposed somewhere else. Many “designed” things have changed over the course of ECS development, so I’m hopeful this one will be among them
I extended on @DreamingImLatios ’ solution, I changed my CustomBootstrap to iterate through the systems I added manually and put them into the systems array that goes to the AddSystems and UpdatePlayerLoop methods. This way we don’t need to manually add the systems to their groups. This worked and my systems are in the correct system groups
public bool Initialize(string defaultWorldName)
{
var systems = DefaultWorldInitialization.GetAllSystems(WorldSystemFilterFlags.Default).ToList();
// HACK
var enumerator = BootstrapWorld.Systems.GetEnumerator();
while (enumerator.MoveNext())
{
systems.Add(enumerator.Current.GetType());
}
enumerator.Dispose();
DefaultWorldInitialization.AddSystemsToRootLevelSystemGroups(BootstrapWorld, systems.ToArray());
ScriptBehaviourUpdateOrder.UpdatePlayerLoop(BootstrapWorld);
return true;
}