private void OnComponentStart(EntityUid uid, RgbLightControllerComponent rgb, ComponentStartup args) { GetOriginalColors(uid, rgb); // trigger visuals updated events _itemSystem.VisualsChanged(uid); }
private void OnHeldVisualsUpdated(EntityUid uid, RgbLightControllerComponent rgb, HeldVisualsUpdatedEvent args) { if (args.RevealedLayers.Count == 0) { rgb.Holder = null; rgb.HolderLayers = null; return; } rgb.Holder = args.User; rgb.HolderLayers = new(); if (!TryComp(args.User, out SpriteComponent? sprite)) { return; } foreach (var key in args.RevealedLayers) { if (!sprite.LayerMapTryGet(key, out var index) || sprite[index] is not Layer layer) { continue; } if (layer.ShaderPrototype == "unshaded") { rgb.HolderLayers.Add(key); } } }
private void OnComponentShutdown(EntityUid uid, RgbLightControllerComponent rgb, ComponentShutdown args) { ResetOriginalColors(uid, rgb); // and reset any in-hands or clothing sprites _itemSystem.VisualsChanged(uid); }
public static Color GetCurrentRgbColor(TimeSpan curTime, TimeSpan offset, RgbLightControllerComponent rgb) { return(Color.FromHsv(new Vector4( (float)(((curTime.TotalSeconds - offset.TotalSeconds) * rgb.CycleRate + Math.Abs(rgb.Owner.GetHashCode() * 0.1)) % 1), 1.0f, 1.0f, 1.0f ))); }
private void OnHandleState(EntityUid uid, RgbLightControllerComponent rgb, ref ComponentHandleState args) { if (args.Current is not RgbLightControllerState state) { return; } ResetOriginalColors(uid, rgb); rgb.CycleRate = state.CycleRate; rgb.Layers = state.Layers; GetOriginalColors(uid, rgb); }
private void OnHandleState(EntityUid uid, RgbLightControllerComponent rgb, ref ComponentHandleState args) { if (args.Current is not RgbLightControllerState state) { return; } ResetSpriteColors(uid, rgb); rgb.CycleRate = state.CycleRate; rgb.Layers = state.Layers; // get the new original sprite colors (necessary if rgb.Layers was updated). GetOriginalSpriteColors(uid, rgb); }
private void OnComponentShutdown(EntityUid uid, RgbLightControllerComponent rgb, ComponentShutdown args) { if (TryComp(uid, out PointLightComponent? light)) { light.Color = rgb.OriginalLightColor; } if (TryComp(uid, out SharedItemComponent? item)) { item.Color = rgb.OriginalItemColor; } ResetSpriteColors(uid, rgb); }
private void OnComponentStart(EntityUid uid, RgbLightControllerComponent rgb, ComponentStartup args) { if (TryComp(uid, out PointLightComponent? light)) { rgb.OriginalLightColor = light.Color; } if (TryComp(uid, out SharedItemComponent? item)) { rgb.OriginalItemColor = item.Color; } GetOriginalSpriteColors(uid, rgb); }
private void OnGetState(EntityUid uid, RgbLightControllerComponent component, ref ComponentGetState args) { args.State = new RgbLightControllerState(component.CycleRate, component.Layers); }
private void OnGotUnequipped(EntityUid uid, RgbLightControllerComponent rgb, GotUnequippedEvent args) { rgb.Holder = null; rgb.HolderLayers = null; }