#region usings using System; using System.Drawing; using OpenTK; using SM.Base.Scene; using SM.OGL.Framebuffer; #endregion namespace SM.Base.Window { /// /// This interface sets ground functions for windows. /// public interface IGenericWindow : IFramebufferWindow { /// /// If true, the window is currently loading. /// bool Loading { get; } /// /// Holds the aspect ratio of the window. /// float AspectRatio { get; set; } /// /// The viewport camera is used, when no camera is found in the scene. /// GenericCamera ViewportCamera { get; set; } /// /// Turning this to true, will force the window to render in the viewport camera. /// bool ForceViewportCamera { get; set; } /// /// Turning this to false will not allow drawing while the window is not in focus. /// bool DrawWhileUnfocused { get; set; } /// /// Turning this to false will not allow updating while the window is not in focus. /// bool UpdateWhileUnfocused { get; set; } /// /// Contains the window size. /// Vector2 WindowSize { get; set; } /// /// The rectangle the window is using. /// Rectangle ClientRectangle { get; } /// /// The setup that was applied to the window. /// ISetup AppliedSetup { get; } /// /// The scene that is currently used. /// GenericScene CurrentScene { get; } /// /// The render pipeline that is currently used. /// RenderPipeline CurrentRenderPipeline { get; } /// /// An event, when the window resizes. /// event Action Resize; /// /// An event, when the window is loading. /// event Action Load; /// /// This gets executed, when the window should update something. /// /// The context of the update. void Update(UpdateContext context); /// /// This applies a setup to the window. /// /// void ApplySetup(ISetup setup); /// /// This sets a scene for the window to use. /// /// void SetScene(GenericScene scene); /// /// This sets a render pipeline, from where the scene gets rendered. /// /// void SetRenderPipeline(RenderPipeline renderPipeline); /// /// This triggeres the event. /// void TriggerLoad(); /// /// This triggeres the event. /// void TriggerResize(); /// /// This closes the window. /// void Close(); } }