// printing char each cycle -> going into serial monitor (Arduino IDE) -> enabling timestamps => Subtract earlier time from newer time. void Awake() { _spawnController = FindObjectOfType <BeatmapObjectManager>(); Plugin.log.Notice("Initializing.."); Plugin.log.Notice(Settings.instance.EventChoice); BSEvents.gameSceneActive += OnGameSceneActive; BSEvents.songPaused += OnSongPaused; BSEvents.songUnpaused += OnSongUnpaused; Ec = Resources.FindObjectsOfTypeAll <BeatmapObjectCallbackController>().FirstOrDefault(); Cm = Resources.FindObjectsOfTypeAll <ColorManager>().LastOrDefault(); BMD = Resources.FindObjectsOfTypeAll <BeatmapLevelSO>().FirstOrDefault(); if (Settings.instance.EventChoice == "noteCuts") { Plugin.log.Info("Adding event listner to noteCuts"); _spawnController.noteWasCutEvent += OnNoteCut; //Flash on note cuts } if (Settings.instance.EventChoice == "lightEvents") { Plugin.log.Info("Adding event listner to lightEvents"); Ec.beatmapEventDidTriggerEvent += EventHappened; //Flash on map's light events } BSEvents.menuSceneActive += menuSceneActive; C1 = Cm.ColorForNoteType(NoteType.NoteB); redLeft = Mathf.RoundToInt(C1.r * 255); greenLeft = Mathf.RoundToInt(C1.g * 255); blueLeft = Mathf.RoundToInt(C1.b * 255); C2 = Cm.ColorForNoteType(NoteType.NoteA); redRight = Mathf.RoundToInt(C2.r * 255); greenRight = Mathf.RoundToInt(C2.g * 255); blueRight = Mathf.RoundToInt(C2.b * 255); BPM = (int)BMD.beatsPerMinute; //Not used, may come useful in future Plugin.log.Info(" BPM = " + BPM.ToString()); if (Settings.arduinoPort.IsOpen) { if (Settings.instance.RainbowMode) { StartRainbowMode(Settings.arduinoPort); } else { Plugin.log.Info("Sending Color to arduino..."); SendColorToArduino(Settings.arduinoPort); } } }
void Init() { Debug.Log("Initializing.."); Ec.beatmapEventDidTriggerEvent += EventHappened; C1 = Cm.ColorForNoteType(NoteType.NoteA); C2 = Cm.ColorForNoteType(NoteType.NoteB); BPM = (int)BMD.beatsPerMinute; port.Write(new byte[] { (byte)0, (byte)(C1.r * 255), (byte)(C1.g * 255), (byte)(C1.b * 255) }, 0, 4); port.Write(new byte[] { (byte)1, (byte)(C2.r * 255), (byte)(C2.g * 255), (byte)(C2.b * 255) }, 0, 4); port.Write(new byte[] { (byte)2, (byte)BPM, (byte)0, (byte)0 }, 0, 4); Debug.Log("C1/" + (int)(C1.r * 255) + "/" + (int)(C1.g * 255) + "/" + (int)(C1.b * 255)); Debug.Log("C2/" + (int)(C2.r * 255) + "/" + (int)(C2.g * 255) + "/" + (int)(C2.b * 255)); }
private void GameSceneLoaded() { PlayerDataModel dataModel = UnityEngine.Resources.FindObjectsOfTypeAll <PlayerDataModel>().FirstOrDefault(); if (!ConfigHelper.Config.Enabled || (dataModel?.playerData.playerSpecificSettings.noTextsAndHuds ?? false)) { return; } _colorManager = GameObject.FindObjectOfType <ColorManager>(); _spawnController = GameObject.FindObjectOfType <BeatmapObjectManager>(); _spawnController.noteWasCutEvent += OnNoteCut; _parentCanvas = GameObject.Instantiate(AssetBundleHelper.Canvas).transform; if (TwoNoteMode) { _sliceControllers = new SliceController[2]; float minX = -Separation * 0.5f; for (int x = 0; x < 2; ++x) { int index = x; float posX = minX + (Separation * x); float posY = 0f; SliceController controller = CreateSliceController(posX, posY); Color color = UseCustomNoteColors ? _colorManager.ColorForNoteType((NoteType)index) : _defaultColors[index]; controller.UpdateBlockColor(color); _sliceControllers[index] = controller; } } else { _sliceControllers = new SliceController[12]; float minX = -Separation * 1.5f; for (int x = 0; x < 4; ++x) { for (int y = 0; y < 3; ++y) { int index = 3 * x + y; float posX = minX + (Separation * x); float posY = (Separation * y); _sliceControllers[index] = CreateSliceController(posX, posY); } } } _parentCanvas.localPosition = Position; _parentCanvas.eulerAngles = Rotation; _parentCanvas.localScale *= Scale; }
public static bool Prefix(Vector3 pos, NoteController noteController, NoteCutInfo noteCutInfo, ref ColorManager ____colorManager, ref NoteCutParticlesEffect ____noteCutParticlesEffect, ref bool ____spawnScores, ref ScoreController ____scoreController, ref FlyingScoreSpawner ____flyingScoreSpawner, ref ShockwaveEffect ____shockwaveEffect, ref FlyingSpriteSpawner ____failFlyingSpriteSpawner, ref NoteDebrisSpawner ____noteDebrisSpawner) { if (!Plugin.active) { return(true); } if (noteCutInfo.allIsOK) { NoteData noteData = noteController.noteData; Color color = ____colorManager.ColorForNoteType(noteData.noteType).ColorWithAlpha(0.5f); ____noteCutParticlesEffect.SpawnParticles(pos, noteCutInfo.cutNormal, noteCutInfo.saberDir, color, 150, 50, Mathf.Clamp(noteData.timeToNextBasicNote, 0.4f, 1f), noteCutInfo.saberType); if (____spawnScores) { int multiplierWithFever = ____scoreController.multiplierWithFever; FlyingScoreSpawnerPatch.lastNoteRotation = noteController.transform.rotation; FlyingScoreSpawnerPatch.lastNoteRotationSet = true; Vector3 pos2 = Quaternion.Inverse(FlyingSpriteSpawnerPatch.lastNoteRotation) * pos; ____flyingScoreSpawner.SpawnFlyingScore(noteCutInfo, noteData.lineIndex, multiplierWithFever, pos2, new Color(0.8f, 0.8f, 0.8f)); } Vector3 pos3 = pos; pos3.y = 0.01f; ____shockwaveEffect.SpawnShockwave(pos3); } else { FlyingSpriteSpawnerPatch.lastNoteRotation = noteController.transform.rotation; FlyingSpriteSpawnerPatch.lastNoteRotationSet = true; Vector3 pos4 = Quaternion.Inverse(FlyingSpriteSpawnerPatch.lastNoteRotation) * pos; ____failFlyingSpriteSpawner.SpawnFlyingSprite(pos4); } ____noteDebrisSpawner.SpawnDebris(noteCutInfo, noteController); return(false); }
public static void Postfix(ref ColorNoteVisuals __instance, NoteController noteController, ref MeshRenderer ____arrowMeshRenderer, ref SpriteRenderer ____arrowGlowSpriteRenderer, ref SpriteRenderer ____circleGlowSpriteRenderer, ref float ____arrowGlowIntensity, ref MaterialPropertyBlockController[] ____materialPropertyBlockControllers, ref int ____colorID, ref ColorManager ____colorManager) { try { var noteMesh = noteController.gameObject.GetComponentInChildren <MeshRenderer>(); // noteMesh.enabled = true; CustomNote activeNote = Plugin.customNotes[Plugin.selectedNote]; Transform child = noteController.gameObject.transform.Find("NoteCube"); GameObject.Destroy(child.Find("customNote")?.gameObject); if (activeNote.path != "DefaultNotes") { GameObject customNote; switch (noteController.noteData.noteType) { case NoteType.NoteA: if (noteController.noteData.cutDirection == NoteCutDirection.Any) { customNote = activeNote.noteDotLeft ?? activeNote.noteLeft; } else { customNote = activeNote.noteLeft; } break; case NoteType.NoteB: if (noteController.noteData.cutDirection == NoteCutDirection.Any) { customNote = activeNote.noteDotRight ?? activeNote.noteRight; } else { customNote = activeNote.noteRight; } break; default: return; } noteMesh.enabled = false; if (activeNote.noteDescriptor.UsesNoteColor) { Color noteColor = ____colorManager.ColorForNoteType(noteController.noteData.noteType) * activeNote.noteDescriptor.NoteColorStrength; for (int i = 0; i < customNote.GetComponentsInChildren <Transform>().Length; i++) { DisableNoteColorOnGameobject colorDisabled = customNote.GetComponentsInChildren <Transform>()[i].GetComponent <DisableNoteColorOnGameobject>(); if (!colorDisabled) { Renderer childRenderer = customNote.GetComponentsInChildren <Transform>()[i].GetComponent <Renderer>(); if (childRenderer) { childRenderer.material.SetColor("_Color", noteColor); } } } } if (activeNote.noteDescriptor.DisableBaseNoteArrows) { ____arrowMeshRenderer.enabled = false; ____arrowGlowSpriteRenderer.enabled = false; ____circleGlowSpriteRenderer.enabled = false; // if (noteController.noteData.cutDirection != NoteCutDirection.Any) // noteController.gameObject.transform.Find("NoteCube").Find("NoteArrow").GetComponent<MeshRenderer>().enabled = false; // noteController.gameObject.transform.Find("NoteCube").Find("NoteArrowGlow").GetComponent<SpriteRenderer>().enabled = false; // noteController.gameObject.transform.Find("NoteCube").Find("NoteCircleGlow").GetComponent<SpriteRenderer>().enabled = false; } GameObject fakeMesh = GameObject.Instantiate(customNote); fakeMesh.name = "customNote"; fakeMesh.transform.SetParent(child); fakeMesh.transform.localPosition = new Vector3(0.0f, 0.0f, 0.0f); fakeMesh.transform.localScale = new Vector3(0.4f, 0.4f, 0.4f); fakeMesh.transform.Rotate(new Vector3(0, 0, 0), Space.Self); /*var field = ____colorManager.GetType().GetField("_colorA", BindingFlags.Instance | BindingFlags.NonPublic); * var leftColor = field.GetValue(____colorManager); * var field2 = ____colorManager.GetType().GetField("_colorB", BindingFlags.Instance | BindingFlags.NonPublic); * var rightColor = field2.GetValue(____colorManager); */ } } catch (Exception err) { Logger.log.Error(err); } }