mirror of
https://github.com/space-wizards/RobustToolbox.git
synced 2026-09-06 17:58:05 +02:00
* Cut down RobustTree * Better LoD * Add PvsPriority flag * Undo cvar name change * reorganize grafana metrics * Fix tests * Fix replays * Don't try process empty chunks * Fix move benchmark * Fix benchmark * Remove obsolete audio methods * Moar benchmarks * Rename EntityData * A * B
85 lines
2.7 KiB
C#
85 lines
2.7 KiB
C#
using System.Diagnostics.CodeAnalysis;
|
|
using Robust.Shared.Maths;
|
|
|
|
namespace Robust.Shared.GameObjects;
|
|
|
|
public abstract class SharedPointLightSystem : EntitySystem
|
|
{
|
|
public abstract SharedPointLightComponent EnsureLight(EntityUid uid);
|
|
|
|
public abstract bool ResolveLight(EntityUid uid, [NotNullWhen(true)] ref SharedPointLightComponent? component);
|
|
|
|
public abstract bool TryGetLight(EntityUid uid, [NotNullWhen(true)] out SharedPointLightComponent? component);
|
|
|
|
public abstract bool RemoveLightDeferred(EntityUid uid);
|
|
|
|
protected abstract void UpdatePriority(EntityUid uid, SharedPointLightComponent comp, MetaDataComponent meta);
|
|
|
|
public void SetCastShadows(EntityUid uid, bool value, SharedPointLightComponent? comp = null, MetaDataComponent? meta = null)
|
|
{
|
|
if (!ResolveLight(uid, ref comp) || value == comp.CastShadows)
|
|
return;
|
|
|
|
comp.CastShadows = value;
|
|
if (!Resolve(uid, ref meta))
|
|
return;
|
|
|
|
Dirty(uid, comp, meta);
|
|
UpdatePriority(uid, comp, meta);
|
|
}
|
|
|
|
public void SetColor(EntityUid uid, Color value, SharedPointLightComponent? comp = null)
|
|
{
|
|
if (!ResolveLight(uid, ref comp) || value == comp.Color)
|
|
return;
|
|
|
|
comp.Color = value;
|
|
Dirty(uid, comp);
|
|
}
|
|
|
|
public virtual void SetEnabled(EntityUid uid, bool enabled, SharedPointLightComponent? comp = null, MetaDataComponent? meta = null)
|
|
{
|
|
if (!ResolveLight(uid, ref comp) || enabled == comp.Enabled)
|
|
return;
|
|
|
|
comp.Enabled = enabled;
|
|
RaiseLocalEvent(uid, new PointLightToggleEvent(comp.Enabled));
|
|
if (!Resolve(uid, ref meta))
|
|
return;
|
|
|
|
Dirty(uid, comp, meta);
|
|
UpdatePriority(uid, comp, meta);
|
|
}
|
|
|
|
public void SetEnergy(EntityUid uid, float value, SharedPointLightComponent? comp = null)
|
|
{
|
|
if (!ResolveLight(uid, ref comp) || MathHelper.CloseToPercent(comp.Energy, value))
|
|
return;
|
|
|
|
comp.Energy = value;
|
|
Dirty(uid, comp);
|
|
}
|
|
|
|
public virtual void SetRadius(EntityUid uid, float radius, SharedPointLightComponent? comp = null, MetaDataComponent? meta = null)
|
|
{
|
|
if (!ResolveLight(uid, ref comp) || MathHelper.CloseToPercent(comp.Radius, radius))
|
|
return;
|
|
|
|
comp.Radius = radius;
|
|
if (!Resolve(uid, ref meta))
|
|
return;
|
|
|
|
Dirty(uid, comp, meta);
|
|
UpdatePriority(uid, comp, meta);
|
|
}
|
|
|
|
public void SetSoftness(EntityUid uid, float value, SharedPointLightComponent? comp = null)
|
|
{
|
|
if (!ResolveLight(uid, ref comp) || MathHelper.CloseToPercent(comp.Softness, value))
|
|
return;
|
|
|
|
comp.Softness = value;
|
|
Dirty(uid, comp);
|
|
}
|
|
}
|