using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Artemis.Core.Events;
namespace Artemis.Core.Services.Interfaces
{
public interface ICoreService : IArtemisService, IDisposable
{
///
/// Gets whether the or not the core has been initialized
///
bool IsInitialized { get; }
///
/// The time the last frame took to render
///
TimeSpan FrameTime { get; }
///
/// Gets or sets whether modules are rendered each frame by calling their Render method
///
bool ModuleRenderingDisabled { get; set; }
///
/// Gets or sets a list of startup arguments
///
List StartupArguments { get; set; }
///
/// Initializes the core, only call once
///
void Initialize();
///
/// Occurs the core has finished initializing
///
event EventHandler Initialized;
///
/// Occurs whenever a frame is rendering, after modules have rendered
///
event EventHandler FrameRendering;
///
/// Occurs whenever a frame is finished rendering and processed by RGB.NET
///
event EventHandler FrameRendered;
}
}