Made all overlays compatible with the new Overlay changes in engine.

This commit is contained in:
Acruid
2020-07-31 14:01:34 -07:00
parent 7a983062a9
commit 86f74b35d1
7 changed files with 25 additions and 15 deletions

View File

@@ -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)

View File

@@ -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<IPrototypeManager>().Index<ShaderPrototype>("unshaded").Instance();
_shader = IoCManager.Resolve<IPrototypeManager>().Index<ShaderPrototype>("unshaded").Instance();
_eyeManager = IoCManager.Resolve<IEyeManager>();
_playerManager = IoCManager.Resolve<IPlayerManager>();
}
@@ -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();

View File

@@ -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<ShaderPrototype>("CircleMask").Instance();
_shader = _prototypeManager.Index<ShaderPrototype>("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);

View File

@@ -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<ShaderPrototype>("FlashedEffect").Instance().Duplicate();
_shader = _prototypeManager.Index<ShaderPrototype>("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);

View File

@@ -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<ShaderPrototype>("GradientCircleMask").Instance();
_shader = _prototypeManager.Index<ShaderPrototype>("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);

View File

@@ -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<ShaderPrototype>("unshaded").Instance();
_shader = _prototypeManager.Index<ShaderPrototype>("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;