diff --git a/Content.Client/GameObjects/Components/Weapons/FlashableComponent.cs b/Content.Client/GameObjects/Components/Weapons/FlashableComponent.cs index d7c5199396..05e6305a59 100644 --- a/Content.Client/GameObjects/Components/Weapons/FlashableComponent.cs +++ b/Content.Client/GameObjects/Components/Weapons/FlashableComponent.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Threading; using Content.Shared.GameObjects.Components.Weapons; using Robust.Client.Graphics.Drawing; @@ -116,7 +116,7 @@ namespace Content.Client.GameObjects.Components.Weapons Duration = duration; } - protected override void Draw(DrawingHandleBase handle) + protected override void Draw(DrawingHandleBase handle, OverlaySpace currentSpace) { var elapsedTime = (_timer.CurTime - StartTime).TotalSeconds; if (elapsedTime > Duration) diff --git a/Content.Client/GameObjects/EntitySystems/AI/ClientPathfindingDebugSystem.cs b/Content.Client/GameObjects/EntitySystems/AI/ClientPathfindingDebugSystem.cs index c35dbe93d7..9d8d341b94 100644 --- a/Content.Client/GameObjects/EntitySystems/AI/ClientPathfindingDebugSystem.cs +++ b/Content.Client/GameObjects/EntitySystems/AI/ClientPathfindingDebugSystem.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.Linq; using Content.Shared.AI; @@ -174,6 +174,7 @@ namespace Content.Client.GameObjects.EntitySystems.AI // TODO: Add a box like the debug one and show the most recent path stuff public override OverlaySpace Space => OverlaySpace.ScreenSpace; + private readonly ShaderInstance _shader; public PathfindingDebugMode Modes { get; set; } = PathfindingDebugMode.None; @@ -202,7 +203,7 @@ namespace Content.Client.GameObjects.EntitySystems.AI public DebugPathfindingOverlay() : base(nameof(DebugPathfindingOverlay)) { - Shader = IoCManager.Resolve().Index("unshaded").Instance(); + _shader = IoCManager.Resolve().Index("unshaded").Instance(); _eyeManager = IoCManager.Resolve(); _playerManager = IoCManager.Resolve(); } @@ -455,13 +456,14 @@ namespace Content.Client.GameObjects.EntitySystems.AI #endregion - protected override void Draw(DrawingHandleBase handle) + protected override void Draw(DrawingHandleBase handle, OverlaySpace currentSpace) { if (Modes == 0) { return; } + handle.UseShader(_shader); var screenHandle = (DrawingHandleScreen) handle; var viewport = _eyeManager.GetWorldViewport(); diff --git a/Content.Client/Graphics/Overlays/CircleMaskOverlay.cs b/Content.Client/Graphics/Overlays/CircleMaskOverlay.cs index ba4942d83b..f16cbf52e4 100644 --- a/Content.Client/Graphics/Overlays/CircleMaskOverlay.cs +++ b/Content.Client/Graphics/Overlays/CircleMaskOverlay.cs @@ -17,15 +17,17 @@ namespace Content.Client.Graphics.Overlays #pragma warning restore 649 public override OverlaySpace Space => OverlaySpace.WorldSpace; + private readonly ShaderInstance _shader; public CircleMaskOverlay() : base(nameof(SharedOverlayID.CircleMaskOverlay)) { IoCManager.InjectDependencies(this); - Shader = _prototypeManager.Index("CircleMask").Instance(); + _shader = _prototypeManager.Index("CircleMask").Instance(); } - protected override void Draw(DrawingHandleBase handle) + protected override void Draw(DrawingHandleBase handle, OverlaySpace currentSpace) { + handle.UseShader(_shader); var worldHandle = (DrawingHandleWorld)handle; var viewport = _eyeManager.GetWorldViewport(); worldHandle.DrawRect(viewport, Color.White); diff --git a/Content.Client/Graphics/Overlays/FlashOverlay.cs b/Content.Client/Graphics/Overlays/FlashOverlay.cs index 5ef3884d15..2d76466b32 100644 --- a/Content.Client/Graphics/Overlays/FlashOverlay.cs +++ b/Content.Client/Graphics/Overlays/FlashOverlay.cs @@ -27,6 +27,7 @@ namespace Content.Client.Graphics.Overlays #pragma warning restore 649 public override OverlaySpace Space => OverlaySpace.ScreenSpace; + private readonly ShaderInstance _shader; private double _startTime; private int lastsFor = 5000; private Texture _screenshotTexture; @@ -34,7 +35,7 @@ namespace Content.Client.Graphics.Overlays public FlashOverlay() : base(nameof(SharedOverlayID.FlashOverlay)) { IoCManager.InjectDependencies(this); - Shader = _prototypeManager.Index("FlashedEffect").Instance().Duplicate(); + _shader = _prototypeManager.Index("FlashedEffect").Instance().Duplicate(); _startTime = _gameTiming.CurTime.TotalMilliseconds; _displayManager.Screenshot(ScreenshotType.BeforeUI, image => @@ -44,10 +45,11 @@ namespace Content.Client.Graphics.Overlays }); } - protected override void Draw(DrawingHandleBase handle) + protected override void Draw(DrawingHandleBase handle, OverlaySpace currentSpace) { + handle.UseShader(_shader); var percentComplete = (float) ((_gameTiming.CurTime.TotalMilliseconds - _startTime) / lastsFor); - Shader?.SetParameter("percentComplete", percentComplete); + _shader?.SetParameter("percentComplete", percentComplete); var screenSpaceHandle = handle as DrawingHandleScreen; var screenSize = UIBox2.FromDimensions((0, 0), _displayManager.ScreenSize); diff --git a/Content.Client/Graphics/Overlays/GradientCircleMask.cs b/Content.Client/Graphics/Overlays/GradientCircleMask.cs index 315fb592f9..28dce7b66b 100644 --- a/Content.Client/Graphics/Overlays/GradientCircleMask.cs +++ b/Content.Client/Graphics/Overlays/GradientCircleMask.cs @@ -16,15 +16,17 @@ namespace Content.Client.Graphics.Overlays [Dependency] private readonly IEyeManager _eyeManager; #pragma warning restore 649 public override OverlaySpace Space => OverlaySpace.WorldSpace; + private readonly ShaderInstance _shader; public GradientCircleMaskOverlay() : base(nameof(SharedOverlayID.GradientCircleMaskOverlay)) { IoCManager.InjectDependencies(this); - Shader = _prototypeManager.Index("GradientCircleMask").Instance(); + _shader = _prototypeManager.Index("GradientCircleMask").Instance(); } - protected override void Draw(DrawingHandleBase handle) + protected override void Draw(DrawingHandleBase handle, OverlaySpace currentSpace) { + handle.UseShader(_shader); var worldHandle = (DrawingHandleWorld)handle; var viewport = _eyeManager.GetWorldViewport(); worldHandle.DrawRect(viewport, Color.White); diff --git a/Content.Client/Parallax/ParallaxOverlay.cs b/Content.Client/Parallax/ParallaxOverlay.cs index b6679f81bc..a5dd984b72 100644 --- a/Content.Client/Parallax/ParallaxOverlay.cs +++ b/Content.Client/Parallax/ParallaxOverlay.cs @@ -26,11 +26,12 @@ namespace Content.Client.Parallax private Texture _parallaxTexture; public override OverlaySpace Space => OverlaySpace.ScreenSpaceBelowWorld; + private readonly ShaderInstance _shader; public ParallaxOverlay() : base(nameof(ParallaxOverlay)) { IoCManager.InjectDependencies(this); - Shader = _prototypeManager.Index("unshaded").Instance(); + _shader = _prototypeManager.Index("unshaded").Instance(); if (_parallaxManager.ParallaxTexture == null) { @@ -42,13 +43,14 @@ namespace Content.Client.Parallax } } - protected override void Draw(DrawingHandleBase handle) + protected override void Draw(DrawingHandleBase handle, OverlaySpace currentSpace) { if (_parallaxTexture == null) { return; } + handle.UseShader(_shader); var screenHandle = (DrawingHandleScreen) handle; var (sizeX, sizeY) = _parallaxTexture.Size; diff --git a/RobustToolbox b/RobustToolbox index f0c59f21b0..a5125a0561 160000 --- a/RobustToolbox +++ b/RobustToolbox @@ -1 +1 @@ -Subproject commit f0c59f21b0409109d95e84157c8ec90e245fd848 +Subproject commit a5125a05613ea9dd395f8ab26b5754f60a72567d