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