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);
            }
        }
Exemplo n.º 2
0
 static bool Prefix(FlickeringNeonSign __instance)
 {
     clipPickerRef(__instance) = new CustomAudioPicker(clipsRef(__instance), 0.1f);
     return(!(Configuration.PluginConfig.Instance.enabled && Configuration.PluginConfig.Instance.disableFlicker));
 }
Exemplo n.º 3
0
        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;
            }
        }
Exemplo n.º 4
0
 public SignColorSwapper(Config.Menu config, MenuEnvironmentManager menuEnvironmentManager)
 {
     _config = config;
     _menuEnvironmentManager = menuEnvironmentManager;
     _flickeringNeonSign     = menuEnvironmentManager.transform.GetComponentInChildren <FlickeringNeonSign>();
 }