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; } }