Add wall-based ambient occlusion (#38276)
* Add wall ambient occlusion * wawawewa * Work * cvars * Comment to make slart happy
This commit is contained in:
@@ -1,17 +1,51 @@
|
||||
using Content.Shared.CCVar;
|
||||
using Robust.Client.Graphics;
|
||||
using Robust.Shared.Configuration;
|
||||
|
||||
namespace Content.Client.Light.EntitySystems;
|
||||
|
||||
public sealed class PlanetLightSystem : EntitySystem
|
||||
{
|
||||
[Dependency] private readonly IConfigurationManager _cfgManager = default!;
|
||||
[Dependency] private readonly IOverlayManager _overlayMan = default!;
|
||||
|
||||
/// <summary>
|
||||
/// Enables / disables the ambient occlusion overlay.
|
||||
/// </summary>
|
||||
public bool AmbientOcclusion
|
||||
{
|
||||
get => _ambientOcclusion;
|
||||
set
|
||||
{
|
||||
if (_ambientOcclusion == value)
|
||||
return;
|
||||
|
||||
_ambientOcclusion = value;
|
||||
|
||||
if (value)
|
||||
{
|
||||
_overlayMan.AddOverlay(new AmbientOcclusionOverlay());
|
||||
}
|
||||
else
|
||||
{
|
||||
_overlayMan.RemoveOverlay<AmbientOcclusionOverlay>();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private bool _ambientOcclusion;
|
||||
|
||||
public override void Initialize()
|
||||
{
|
||||
base.Initialize();
|
||||
|
||||
SubscribeLocalEvent<GetClearColorEvent>(OnClearColor);
|
||||
|
||||
_cfgManager.OnValueChanged(CCVars.AmbientOcclusion, val =>
|
||||
{
|
||||
AmbientOcclusion = val;
|
||||
}, true);
|
||||
|
||||
_overlayMan.AddOverlay(new BeforeLightTargetOverlay());
|
||||
_overlayMan.AddOverlay(new RoofOverlay(EntityManager));
|
||||
_overlayMan.AddOverlay(new TileEmissionOverlay(EntityManager));
|
||||
|
||||
Reference in New Issue
Block a user