private static void SetFlickeringNeonColor(FlickeringNeonSign flicker, Color color) { try { var prePassLight = flicker.GetPrivateField <TubeBloomPrePassLight>("_light"); var lightType = prePassLight.GetBasePrivateField <BloomPrePassLightTypeSO>("_lightType"); prePassLight.SetBasePrivateField("_registeredWithLightType", lightType); prePassLight.color = color.ColorWithAlpha(prePassLight.color.a); var sprite = flicker.GetPrivateField <SpriteRenderer>("_flickeringSprite"); sprite.color = color.ColorWithAlpha(sprite.color.a); flicker.Start(); foreach (Transform child in flicker.transform) { if (child.name.Contains("Sparks")) { var particle = child.GetComponent <ParticleSystem>(); ParticleSystem.MinMaxGradient particleColor = new ParticleSystem.MinMaxGradient(); particleColor.mode = ParticleSystemGradientMode.Color; particleColor.color = color.ColorWithAlpha(particleColor.color.a); ParticleSystem.MainModule main = particle.main; main.startColor = particleColor; } } } catch (Exception e) { Plugin.Logger.Error(e); } }
static bool Prefix(FlickeringNeonSign __instance) { clipPickerRef(__instance) = new CustomAudioPicker(clipsRef(__instance), 0.1f); return(!(Configuration.PluginConfig.Instance.enabled && Configuration.PluginConfig.Instance.disableFlicker)); }
public void OnUpdate() { if (_colorInit == false) { foreach (XWeaponTrail trail in weapontrails) { var oldCol = ReflectionUtil.GetPrivateField <Color>(trail, "MyColor"); if (oldCol.r == 1.0f) { ReflectionUtil.SetPrivateField(trail, "MyColor", new Color(_colorLeft.r, _colorLeft.g, _colorLeft.b, oldCol.a)); } else { ReflectionUtil.SetPrivateField(trail, "MyColor", new Color(_colorRight.r, _colorRight.g, _colorRight.b, oldCol.a)); } } if (prePassLights.Length > 0) { foreach (TubeBloomPrePassLight prePassLight in prePassLights) { var oldCol = ReflectionUtil.GetPrivateField <Color>(prePassLight, "_color"); if (oldCol.r == 1.0f) { ReflectionUtil.SetPrivateField(prePassLight, "_color", _colorLeft); } else { ReflectionUtil.SetPrivateField(prePassLight, "_color", _colorRight); } } } foreach (Material mat in envLights) { mat.SetColor("_Color", new Color(_colorRight.r * 0.5f, _colorRight.g * 0.5f, _colorRight.b * 0.5f, 1.0f)); } if (SceneManager.GetActiveScene().name == "Menu") { TextMeshPro[] texts = UnityEngine.Object.FindObjectsOfType <TextMeshPro>(); if (texts.Length > 0) { foreach (TextMeshPro text in texts) { var oldCol = ReflectionUtil.GetPrivateField <Color>(text, "m_fontColor"); if (oldCol.r == 1.0f) { ReflectionUtil.SetPrivateField(text, "m_fontColor", _colorLeft); } else { ReflectionUtil.SetPrivateField(text, "m_fontColor", _colorRight); } } } FlickeringNeonSign E = UnityEngine.Object.FindObjectOfType <FlickeringNeonSign>(); if (E != null) { ReflectionUtil.SetPrivateField(E, "_onColor", _colorRight); } } _colorInit = true; } }
public SignColorSwapper(Config.Menu config, MenuEnvironmentManager menuEnvironmentManager) { _config = config; _menuEnvironmentManager = menuEnvironmentManager; _flickeringNeonSign = menuEnvironmentManager.transform.GetComponentInChildren <FlickeringNeonSign>(); }