mreinstein / ecs

data oriented, functional entity component system
MIT License
86 stars 8 forks source link

provide a way to pause/resume sets of systems #43

Open mreinstein opened 3 months ago

mreinstein commented 3 months ago

There are some cases where a number of systems should be turned on and off as a group. For example, when an in-game menu is open, and we want to pause the physics, sprite animations, player input, and timers, but we don't want to pause the menu system or the renderer.

Currently I have logic at the beginning of every system I want to pause that essentially looks like:

const onFixedUpdate = function () {
      if (Global.paused)
          return

      ...
}

But this is kind of ugly. It might be nice to offer a way to register systems as part of a set, and pause/resume that set.

mreinstein commented 3 months ago

I could see a downside to this feature: later when systems aren't running because they're paused it wouldn't be clear immediately that it's part of a paused set. With the explicit return in each system, it's a lot more clear. Whether a system is paused or not would be in the system declaration code, which might be in another file/location.