Beispiel #1
0
        // 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));
        }
Beispiel #3
0
        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);
            }
        }