using System.Collections.Generic; using EcsRx.Collections; using EcsRx.Collections.Database; using EcsRx.Events; using EcsRx.Executor; using EcsRx.Infrastructure.Dependencies; using EcsRx.Infrastructure.Plugins; namespace EcsRx.Infrastructure { /// /// Acts as an entry point and bootstrapper for the framework /// public interface IEcsRxApplication { /// /// The dependency injection container /// /// This will abstract away the underlying DI system, in most cases you wont need it IDependencyContainer Container { get; } /// /// The system executor, this orchestrates the systems /// ISystemExecutor SystemExecutor { get; } /// /// The event system to publish and subscribe to events /// IEventSystem EventSystem { get; } /// /// The entity database, allows you to create and manage entity collections /// IEntityDatabase EntityDatabase { get; } /// /// The observable group manager, allows you to get observable groups /// IObservableGroupManager ObservableGroupManager { get; } /// /// Any plugins which have been registered within the application /// IEnumerable Plugins { get; } /// /// This starts the application initialization process /// void StartApplication(); /// /// This stops the application process /// void StopApplication(); } }