public static LightArrangement CreateArrangement(BeatmapEventData data) { LightArrangement arr = new LightArrangement(); switch (data.value) { case 0: arr.enabled = false; arr.color = null; break; case 1: case 2: case 3: arr.color = GetCSO(colour1); arr.enabled = true; break; case 5: case 6: case 7: arr.color = GetCSO(colour0); arr.enabled = true; break; default: arr.enabled = false; arr.color = null; break; } return(arr); }
public static void HandleGlobalCPLightEvent(LightArrangement arr) { foreach (ConnectedPlayerLighting c in connectedPlayerLighting) { foreach (TubeBloomPrePassLight light in c.allLasers) { HandleCPLightEvent(light, arr); } } }
public static void HandleLightEvent(DirectionalLight light, LightArrangement arr) { if (ringErr) { return; } try { light.gameObject.SetActive(arr.enabled); light.enabled = arr.enabled; light.color = arr.color; } catch (Exception e) { Plugin.Log.Critical("Ring error 2: " + e.Message); } }
public static void HandleLightEvent(TubeBloomPrePassLight light, LightArrangement arr) { if (playerLaserErr) { return; } try { light.gameObject.SetActive(arr.enabled); light.enabled = arr.enabled; light.color = arr.color; } catch (Exception e) { Plugin.Log.Critical("Laser error: " + e.Message); } }
public static void HandleRingEvent(LightArrangement arr) { if (ringErr) { return; } try { HandleLightEvent(ringLightBehind, arr); HandleLightEvent(ringLightFront, arr); HandleLightEvent(farLaserLeft, arr); HandleLightEvent(farLaserRight, arr); } catch (Exception e) { ringErr = true; Plugin.Log.Critical("Ring error: " + e.Message); } }
public static void HandleCPLightEvent(TubeBloomPrePassLight light, LightArrangement arr) { try { light.enabled = arr.enabled; if (arr.enabled) { light.gameObject.SetActive(arr.enabled); light.color = arr.color; } else { light.color = cpOffColour; } } catch (Exception e) { Plugin.Log.Critical("CP Laser error: " + e.Message); } }
public static void Postfix([HarmonyArgument(0)] BeatmapEventData data) { if (loadError) { return; } if (!isInMultiplayer) { return; } if (staticLights) { return; } if (!loadedLights) { LoadLights(); } LightArrangement arr = CreateArrangement(data); switch (data.type) { case BeatmapEventType.Event0: { HandleLightEvent(backLaserLeft, arr); HandleLightEvent(backLaserRight, arr); foreach (ConnectedPlayerLighting c in connectedPlayerLighting) { HandleCPLightEvent(c.downLaserLeft, arr); HandleCPLightEvent(c.downLaserRight, arr); HandleCPLightEvent(c.downLaserConnector, arr); } break; } case BeatmapEventType.Event1: { HandleRingEvent(arr); foreach (ConnectedPlayerLighting c in connectedPlayerLighting) { HandleCPLightEvent(c.extendedLaserLeft, arr); HandleCPLightEvent(c.extendedLaserRight, arr); } break; } case BeatmapEventType.Event2: { HandleLightEvent(laserLeft, arr); foreach (ConnectedPlayerLighting c in connectedPlayerLighting) { HandleCPLightEvent(c.laserLeft, arr); } break; } case BeatmapEventType.Event3: { HandleLightEvent(laserRight, arr); HandleLightEvent(laserLeft, arr); foreach (ConnectedPlayerLighting c in connectedPlayerLighting) { HandleCPLightEvent(c.laserRight, arr); } break; } case BeatmapEventType.Event4: { HandleLightEvent(behindLaserLeft, arr); HandleLightEvent(behindLaserRight, arr); HandleLightEvent(ringLightLeft, arr); HandleLightEvent(ringLightRight, arr); foreach (ConnectedPlayerLighting c in connectedPlayerLighting) { HandleCPLightEvent(c.laserFront, arr); } break; } case BeatmapEventType.Event5: { HandleBoost(data.value); break; } default: { break; } } }