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:
Matz05
2022-01-04 22:25:37 -07:00
committed by GitHub
parent adbc4ee5b0
commit 919053c5f1
5 changed files with 63 additions and 34 deletions

View File

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

View File

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

View File

@@ -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;
}
}

View File

@@ -60,6 +60,9 @@
- type: LightBulb
bulb: Bulb
color: "#FFD1A3" # 4000K color temp
lightEnergy: 1.0
lightRadius: 6
lightSoftness: 1.1
- type: Sprite
sprite: Objects/Power/light_bulb.rsi
state: normal
@@ -73,6 +76,9 @@
- type: LightBulb
bulb: Tube
color: "#FFE4CE" # 5000K color temp
lightEnergy: 0.8
lightRadius: 10
lightSoftness: 1
- type: Sprite
sprite: Objects/Power/light_tube.rsi
state: normal
@@ -85,6 +91,9 @@
- type: LightBulb
bulb: Tube
color: "#EEEEFF"
lightEnergy: 4
lightRadius: 10
lightSoftness: 0.9
BurningTemperature: 350
PowerUse: 9
- type: Sprite

View File

@@ -61,14 +61,14 @@
- type: entity
name: light
description: "A powered wall light emitting... light."
id: Poweredlight
suffix: Powered
description: "A light fixture. Draws power and produces light when equipped with a light tube."
id: PoweredlightEmpty
suffix: Empty, Powered
parent: WallLight
components:
- type: Sprite
sprite: Structures/Wallmounts/Lighting/light_tube.rsi
state: off
state: empty
- type: PointLight
enabled: false
- type: PoweredLight
@@ -88,15 +88,27 @@
path: "/Audio/Machines/light_tube_on.ogg"
- type: entity
id: PoweredlightEmpty
description: "A wall light. It's empty."
suffix: Empty, Powered
parent: Poweredlight
id: Poweredlight
description: "A light fixture. Draws power and produces light when equipped with a light tube."
suffix: Powered
parent: PoweredlightEmpty
components:
- type: Sprite
state: empty
state: off
- type: PoweredLight
hasLampOnSpawn: False
hasLampOnSpawn: LightTube
damage:
types:
Heat: 20
- type: entity
id: PoweredlightLED
description: "A light fixture. Draws power and produces light when equipped with a light tube."
suffix: LED tube, Powered
parent: Poweredlight
components:
- type: PoweredLight
hasLampOnSpawn: LedLightTube
damage:
types:
Heat: 20
@@ -143,14 +155,14 @@
- type: entity
name: small light
description: "A powered wall light emitting... light."
id: PoweredSmallLight
suffix: Powered
description: "A light fixture. Draws power and produces light when equipped with a light bulb."
id: PoweredSmallLightEmpty
suffix: Empty, Powered
parent: SmallLight
components:
- type: Sprite
sprite: Structures/Wallmounts/Lighting/light_small.rsi
state: off
state: empty
- type: PointLight
enabled: false
offset: "0, -0.5"
@@ -176,14 +188,14 @@
- type: PoweredLightVisualizer
- type: entity
id: PoweredSmallLightEmpty
suffix: Empty, Powered
parent: PoweredSmallLight
id: PoweredSmallLight
suffix: Powered
parent: PoweredSmallLightEmpty
components:
- type: Sprite
state: empty
state: off
- type: PoweredLight
hasLampOnSpawn: False
hasLampOnSpawn: LightBulb
damage:
types:
Heat: 20