using System; using System.Collections.Generic; using JetBrains.Annotations; namespace Robust.Shared.GameObjects { /// /// A subsystem that acts on all components of a type at once. /// Entity systems are similar to TGstation13 subsystems. /// They have a set of entities to run over and run every once in a while. /// They get managed by an . /// [UsedImplicitly(ImplicitUseTargetFlags.WithInheritors)] [NotContentImplementable] public interface IEntitySystem : IEntityEventSubscriber { IEnumerable UpdatesAfter { get; } IEnumerable UpdatesBefore { get; } /// /// If prediction is disabled on the client, will not be ran unless this flag is set. /// bool UpdatesOutsidePrediction { get; } /// /// Called once when the system is created to initialize its state. /// void Initialize(); /// /// Called once before the system is destroyed so that the system can clean up. /// void Shutdown(); /// /// Called once per frame/tick to update the system. /// /// Delta time since Update() was last called. void Update(float frameTime); void FrameUpdate(float frameTime); } }