Light bulb brightness (and other settings) change clientside PointLights (#5869)
Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
This commit is contained in:
@@ -29,6 +29,15 @@ namespace Content.Server.Light.Components
|
||||
[DataField("BurningTemperature")]
|
||||
public int BurningTemperature = 1400;
|
||||
|
||||
[DataField("lightEnergy")]
|
||||
public float lightEnergy = 0.8f;
|
||||
|
||||
[DataField("lightRadius")]
|
||||
public float lightRadius = 10;
|
||||
|
||||
[DataField("lightSoftness")]
|
||||
public float lightSoftness = 1;
|
||||
|
||||
[DataField("PowerUse")]
|
||||
public int PowerUse = 40;
|
||||
|
||||
|
||||
@@ -7,6 +7,8 @@ using Robust.Shared.Analyzers;
|
||||
using Robust.Shared.Containers;
|
||||
using Robust.Shared.GameObjects;
|
||||
using Robust.Shared.Serialization.Manager.Attributes;
|
||||
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype;
|
||||
using Robust.Shared.Prototypes;
|
||||
using Robust.Shared.ViewVariables;
|
||||
|
||||
namespace Content.Server.Light.Components
|
||||
@@ -25,8 +27,8 @@ namespace Content.Server.Light.Components
|
||||
[DataField("turnOnSound")]
|
||||
public SoundSpecifier TurnOnSound = new SoundPathSpecifier("/Audio/Machines/light_tube_on.ogg");
|
||||
|
||||
[DataField("hasLampOnSpawn")]
|
||||
public bool HasLampOnSpawn = true;
|
||||
[DataField("hasLampOnSpawn", customTypeSerializer: typeof(PrototypeIdSerializer<EntityPrototype>))]
|
||||
public string? HasLampOnSpawn = null;
|
||||
|
||||
[DataField("bulb")]
|
||||
public LightBulbType BulbType;
|
||||
|
||||
@@ -64,19 +64,11 @@ namespace Content.Server.Light.EntitySystems
|
||||
|
||||
private void OnMapInit(EntityUid uid, PoweredLightComponent light, MapInitEvent args)
|
||||
{
|
||||
if (light.HasLampOnSpawn)
|
||||
if (light.HasLampOnSpawn != null)
|
||||
{
|
||||
var prototype = light.BulbType switch
|
||||
{
|
||||
LightBulbType.Bulb => "LightBulb",
|
||||
LightBulbType.Tube => "LightTube",
|
||||
_ => throw new ArgumentOutOfRangeException()
|
||||
};
|
||||
|
||||
var entity = EntityManager.SpawnEntity(prototype, EntityManager.GetComponent<TransformComponent>(light.Owner).Coordinates);
|
||||
var entity = EntityManager.SpawnEntity(light.HasLampOnSpawn, EntityManager.GetComponent<TransformComponent>(light.Owner).Coordinates);
|
||||
light.LightBulbContainer.Insert(entity);
|
||||
}
|
||||
|
||||
// need this to update visualizers
|
||||
UpdateLight(uid, light);
|
||||
}
|
||||
@@ -158,7 +150,6 @@ namespace Content.Server.Light.EntitySystems
|
||||
return false;
|
||||
|
||||
UpdateLight(uid, light);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -260,7 +251,7 @@ namespace Content.Server.Light.EntitySystems
|
||||
case LightBulbState.Normal:
|
||||
if (powerReceiver.Powered && light.On)
|
||||
{
|
||||
SetLight(uid, true, lightBulb.Color, light);
|
||||
SetLight(uid, true, lightBulb.Color, light, lightBulb.lightRadius, lightBulb.lightEnergy, lightBulb.lightSoftness);
|
||||
appearance?.SetData(PoweredLightVisuals.BulbState, PoweredLightState.On);
|
||||
var time = _gameTiming.CurTime;
|
||||
if (time > light.LastThunk + ThunkDelay)
|
||||
@@ -363,7 +354,7 @@ namespace Content.Server.Light.EntitySystems
|
||||
SetState(uid, enabled, component);
|
||||
}
|
||||
|
||||
private void SetLight(EntityUid uid, bool value, Color? color = null, PoweredLightComponent? light = null)
|
||||
private void SetLight(EntityUid uid, bool value, Color? color = null, PoweredLightComponent? light = null, float? radius = null, float? energy = null, float? softness=null)
|
||||
{
|
||||
if (!Resolve(uid, ref light))
|
||||
return;
|
||||
@@ -377,6 +368,12 @@ namespace Content.Server.Light.EntitySystems
|
||||
|
||||
if (color != null)
|
||||
pointLight.Color = color.Value;
|
||||
if (radius != null)
|
||||
pointLight.Radius = (float) radius;
|
||||
if (energy != null)
|
||||
pointLight.Energy = (float) energy;
|
||||
if (softness != null)
|
||||
pointLight.Softness = (float) softness;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user