void DoLightning() { var go = Fsm.GetOwnerDefaultTarget(gameObject); if (go == null) { return; } if (go != previousGo) { lrender = go.GetComponent <LightningRenderer>(); previousGo = go; } if (lrender == null) { return; } if (Emitter.Value != null) { lrender.emitterTransform = Emitter.Value.transform; } else { lrender.emitterPosition = EmitterPosition.Value; } if (Receiver.Value != null) { lrender.receiverTransform = Receiver.Value.transform; } else { lrender.receiverPosition = ReceiverPosition.Value; } lrender.throttle = throttle.Value; lrender.pulseInterval = pulse.Value; lrender.boltLength = boltLength.Value; lrender.lengthRandomness = lengthRandom.Value; lrender.noiseAmplitude = noiseAmplitude.Value; lrender.noiseFrequency = noiseFrequency.Value; lrender.noiseMotion = noiseMotion.Value; lrender.color = color.Value; lrender.enabled = enabled.Value; }
public static void ChangeLightningColor(LightningRenderer renderer, Color[] colors) { LightningRenderer_electricityColors.SetValue(renderer, colors); var bolts = LightningRenderer_bolts.GetValue(renderer); List <object> objs = ((IEnumerable <object>)bolts).Cast <object>().ToList(); for (int i = 0; i < objs.Count; i++) { object obj = objs[i]; if (Bolt_color == null) { Bolt_color = obj.GetType().GetField("color", BindingFlags.Instance | BindingFlags.NonPublic); } Bolt_color.SetValue(obj, colors[i % 2]); } }
public IEnumerator RainbowElectricityRoutine(LightningRenderer renderer, Color[] colors) { colors = new Color[] { Calc.HexToColor("400000"), Calc.HexToColor("900000") }; while (renderer != null) { // rainbow for (int i = 0; i < colors.Length; i++) { if (colors[i].R > 0 && colors[i].B == 0) { colors[i].R -= 1; colors[i].G += 1; } if (colors[i].G > 0 && colors[i].R == 0) { colors[i].G -= 1; colors[i].B += 1; } if (colors[i].B > 0 && colors[i].G == 0) { colors[i].R += 1; colors[i].B -= 1; } } var bolts = LightningRenderer_bolts.GetValue(renderer); List <object> objs = ((IEnumerable <object>)bolts).Cast <object>().ToList(); for (int i = 0; i < objs.Count; i++) { object obj = objs[i]; if (Bolt_color == null) { Bolt_color = obj.GetType().GetField("color", BindingFlags.Instance | BindingFlags.NonPublic); } Bolt_color.SetValue(obj, colors[i % 2]); } LightningRenderer_electricityColors.SetValue(renderer, colors); yield return(null); } yield break; }
public override void OnEnter(Player player) { base.OnEnter(player); LightningRenderer r = player.Scene.Tracker.GetEntity <LightningRenderer>(); ChangeLightningColor(r, electricityColors); if (persistent) { var session = SceneAs <Level>().Session; SessionHelper.WriteColorToSession(session, "fh.lightningColorA", electricityColors[0]); SessionHelper.WriteColorToSession(session, "fh.lightningColorB", electricityColors[1]); } if (rainbow) { Coroutine c = r.Get <Coroutine>(); if (c != null) { r.Remove(c); } r.Add(new Coroutine(RainbowElectricityRoutine(r, electricityColors))); } }
private void LightningRenderer_Render(On.Celeste.LightningRenderer.orig_Render orig, LightningRenderer self) { self.DrawEdges = !Settings.SimplifiedGraphics; orig.Invoke(self); }
private static void LightningRenderer_Reset(On.Celeste.LightningRenderer.orig_Reset orig, LightningRenderer self) { if (self.Scene is Level) { var session = (self.Scene as Level).Session; Color[] colors = new Color[2] { SessionHelper.ReadColorFromSession(session, "fh.lightningColorA", Color.White), SessionHelper.ReadColorFromSession(session, "fh.lightningColorB", Color.White) }; if (colors[0] != Color.White) { ChangeLightningColor(self, colors); } } orig(self); }
private static void LightningRenderer_Update(On.Celeste.LightningRenderer.orig_Update orig, LightningRenderer self) { orig(self); // Update any coroutines foreach (Component c in self.Components) { c.Update(); } }