Systems with [DisableAutoCreation] don't appear in the entity debugger?

Hi all,

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();

World.GetExistingSystem<SimulationSystemGroup>().AddSystemToUpdateList(systemWithDisableAutoCreation);
5 Likes

Thanks @DreamingImLatios ! that solves my update issue.

@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 :wink:

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 :slight_smile:

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;
}
1 Like