using System; using System.Collections.Generic; using Robust.Client.Input; using Robust.Client.ResourceManagement; using Robust.Client.UserInterface; using Robust.Shared.Graphics; using Robust.Shared.Map; using Robust.Shared.Maths; using Robust.Shared.Timing; namespace Robust.Client.Graphics { internal interface IClydeInternal : IClyde, IClipboardManager { // Basic main loop hooks. void Render(); void FrameProcess(FrameEventArgs eventArgs); void ProcessInput(FrameEventArgs frameEventArgs); // Init. bool SeparateWindowThread { get; } bool InitializePreWindowing(); void EnterWindowLoop(); bool InitializePostWindowing(); void Ready(); void TerminateWindowLoop(); event Action TextEntered; event Action TextEditing; event Action MouseMove; event Action MouseEnterLeave; event Action KeyUp; event Action KeyDown; event Action MouseWheel; event Action CloseWindow; event Action DestroyWindow; ClydeHandle LoadShader(ParsedShader shader, string? name = null, Dictionary? defines = null); void ReloadShader(ClydeHandle handle, ParsedShader newShader); /// /// Creates a new instance of a shader. /// ShaderInstance InstanceShader(ShaderSourceResource handle, bool? light = null, ShaderBlendMode? blend = null); /// /// This is purely a hook for , use that instead. /// ScreenCoordinates MouseScreenPosition { get; } IClydeDebugInfo DebugInfo { get; } IClydeDebugStats DebugStats { get; } Texture GetStockTexture(ClydeStockTexture stockTexture); IEnumerable<(Clyde.Clyde.ClydeTexture, Clyde.Clyde.LoadedTexture)> GetLoadedTextures(); IEnumerable<(Clyde.Clyde.RenderTargetBase, Clyde.Clyde.LoadedRenderTarget)> GetLoadedRenderTextures(); ClydeDebugLayers DebugLayers { get; set; } string GetKeyName(Keyboard.Key key); void Shutdown(); /// Null if not running on X11. uint? GetX11WindowId(); void RegisterGridEcsEvents(); void ShutdownGridEcsEvents(); void RunOnWindowThread(Action action); IFileDialogManagerImplementation? FileDialogImpl { get; } bool VsyncEnabled { get; set; } // Viewports #if TOOLS /// /// Fires on all viewports. For debugging. /// void ViewportsClearAllCached(); #endif // TOOLS void RenderNow(IRenderTarget renderTarget, Action callback); } }