Пример #1
0
        public static void LoadLights()
        {
            bool laserNull = false;
            bool ringNull  = false;

            Plugin.Log.Info("Loading lights...");

            try
            {
                lasers     = GameObject.Find("MultiplayerLocalActivePlayerController(Clone)/IsActiveObjects/Lasers");
                ringLights = GameObject.Find("MultiplayerLocalActivePlayerController(Clone)/IsActiveObjects/DirectionalLights");

                // Load the lasers
                if (lasers != null)
                {
                    laserLeft        = lasers.transform.Find("LaserL").gameObject.GetComponent <TubeBloomPrePassLight>();
                    laserRight       = lasers.transform.Find("LaserR").gameObject.GetComponent <TubeBloomPrePassLight>();
                    backLaserLeft    = lasers.transform.Find("LaserFrontL").gameObject.GetComponent <TubeBloomPrePassLight>();
                    backLaserRight   = lasers.transform.Find("LaserFrontR").gameObject.GetComponent <TubeBloomPrePassLight>();
                    behindLaserLeft  = lasers.transform.Find("LaserBackL").gameObject.GetComponent <TubeBloomPrePassLight>();
                    behindLaserRight = lasers.transform.Find("LaserBackR").gameObject.GetComponent <TubeBloomPrePassLight>();
                    farLaserLeft     = lasers.transform.Find("LaserFarL").gameObject.GetComponent <TubeBloomPrePassLight>();
                    farLaserRight    = lasers.transform.Find("LaserFarR").gameObject.GetComponent <TubeBloomPrePassLight>();
                    allLasers        = new List <TubeBloomPrePassLight>()
                    {
                        laserLeft, laserRight, backLaserLeft, backLaserRight, behindLaserLeft, behindLaserRight, farLaserLeft, farLaserRight
                    };

                    foreach (TubeBloomPrePassLight l in allLasers)
                    {
                        LightingController.HandleLightEvent(l, new LightArrangement()
                        {
                            enabled = false, color = null
                        });
                    }
                    playerLaserErr = false;
                }
                else
                {
                    Plugin.Log.Error("Lasers are disabled.");
                    playerLaserErr = true;
                }

                // Loaded the other player's lasers
                connectedPlayerLighting = new List <ConnectedPlayerLighting>();
                var players = Resources.FindObjectsOfTypeAll <GameObject>().Where(obj => obj.name == "MultiplayerConnectedPlayerController(Clone)");
                if (players != null)
                {
                    foreach (GameObject o in players)
                    {
                        ConnectedPlayerLighting l = new ConnectedPlayerLighting();
                        GameObject _lasers        = o.transform.Find("Lasers").gameObject;
                        l.laserLeft          = _lasers.transform.Find("SideLaserL").gameObject.GetComponent <TubeBloomPrePassLight>();
                        l.laserRight         = _lasers.transform.Find("SideLaserR").gameObject.GetComponent <TubeBloomPrePassLight>();
                        l.laserFront         = _lasers.transform.Find("FrontLaserC2").gameObject.GetComponent <TubeBloomPrePassLight>();
                        l.downLaserLeft      = _lasers.transform.Find("FrontLaserL").gameObject.GetComponent <TubeBloomPrePassLight>();
                        l.downLaserRight     = _lasers.transform.Find("FrontLaserR").gameObject.GetComponent <TubeBloomPrePassLight>();
                        l.downLaserConnector = _lasers.transform.Find("FrontLaserC").gameObject.GetComponent <TubeBloomPrePassLight>();
                        l.extendedLaserLeft  = _lasers.transform.Find("ThinLaserL").gameObject.GetComponent <TubeBloomPrePassLight>();
                        l.extendedLaserRight = _lasers.transform.Find("ThinLaserR").gameObject.GetComponent <TubeBloomPrePassLight>();
                        l.AddAllToList();

                        allLasers.AddRange(l.allLasers);
                        connectedPlayerLighting.Add(l);
                        Plugin.Log.Info("Loaded a Connected Player's lights");
                    }
                }

                cpOffColour = GetCSO(new Color(0, 0, 0));
                LightingController.HandleGlobalCPLightEvent(new LightArrangement()
                {
                    enabled = false, color = cpOffColour
                });

                // Load the ring lights
                if (ringLights != null)
                {
                    ringLightBehind = ringLights.transform.Find("DirectionalLight1").gameObject.GetComponent <DirectionalLight>();
                    ringLightFront  = ringLights.transform.Find("DirectionalLight2").gameObject.GetComponent <DirectionalLight>();
                    ringLightLeft   = ringLights.transform.Find("DirectionalLight4").gameObject.GetComponent <DirectionalLight>();
                    ringLightRight  = ringLights.transform.Find("DirectionalLight3").gameObject.GetComponent <DirectionalLight>();
                    allRings        = new List <DirectionalLight>()
                    {
                        ringLightBehind, ringLightFront, ringLightLeft, ringLightRight
                    };

                    foreach (DirectionalLight l in allRings)
                    {
                        LightingController.HandleLightEvent(l, new LightArrangement()
                        {
                            enabled = false, color = null
                        });
                    }
                    ringErr = false;
                }
                else
                {
                    Plugin.Log.Error("Ring Lights are disabled.");
                    ringErr = true;
                }

                Plugin.Log.Info("Lasers: " + (laserNull == true || lasers == null ? "error" : "working"));
                Plugin.Log.Info("Ring Lights: " + (ringNull == true || ringLights == null ? "error" : "working"));
                Plugin.Log.Info("CP Lights: " + (connectedPlayerLighting.Count == 0 ? "none found" : "working (" + connectedPlayerLighting.Count + ")"));

                if (ringErr && playerLaserErr)
                {
                    loadError = true;
                    Plugin.Log.Critical("Both rings and lasers failed to load. Lighting has been disabled.");
                }
                else
                {
                    loadedLights = true;
                }
            } catch (Exception e)
            {
                Plugin.Log.Critical("Error loading lights: " + e.Message);
                loadError = true;
            }
        }