コード例 #1
0
ファイル: Note.cs プロジェクト: Rakjavik/BeatmapMaker
        private void OnTriggerEnter(Collider other)
        {
            if (IsOnCooldown() || BeatMap.Inverted != noteDetails.inverted)
            {
                Debug.LogWarning("Note is on cooldown");
                return;
            }
            saberTouched = other.GetComponent <Saber>();
            if (saberTouched != null)
            {
                bool refresh = false;
                currentCooldown += Time.deltaTime;
                BeatMap.EditorState currentState = BeatMap.GetCurrentState();
                // During playback, remove notes as they are hit //
                if (noteDetails.IsVisible() && (currentState == BeatMap.EditorState.Playback ||
                                                currentState == BeatMap.EditorState.Recording))
                {
                    Debug.LogWarning("INversion map-note - " + BeatMap.Inverted + "-" + noteDetails.inverted);
                    Debug.LogWarning("Current beat - " + BeatMap.GetCurrentBeat());
                    Debug.LogWarning("Note beat - " + noteDetails.timeToSpawn);
                    Debug.LogWarning("Difference - " + (BeatMap.GetCurrentBeat() - noteDetails.timeToSpawn));
                    saberTouched.addVibration(.5f, .05f, false);
                    meshRenderer.enabled = false;
                    noteDetails.inverted = !noteDetails.inverted;
                    Debug.LogWarning("Note changed to " + noteDetails.inverted);
                    refresh = true;
                }
                // During editing, highlight if the Note color has already been set //
                else if (currentState == BeatMap.EditorState.Editing && !noteDetails.inverted)
                {
                    saberTouched.Attach(gameObject);
                }

                // During editing if set to neutral, record saber direction and color //
                if ((currentState == BeatMap.EditorState.Editing || currentState == BeatMap.EditorState.Recording) &&
                    noteDetails.color == NoteColor.NONE)
                {
                    SlashDirection direction = saberTouched.GetSlashDirection(this);
                    NoteColor      color     = saberTouched.GetSaberColor();
                    noteDetails.color          = color;
                    noteDetails.slashDirection = direction;
                    refresh = true;
                }
                if (refresh)
                {
                    Refresh();
                    Debug.LogWarning("Notiying mini map of change inverted?- " + noteDetails.inverted);
                    MiniMap.AddNoteChange(noteDetails);
                }
            }
        }
コード例 #2
0
ファイル: MiniMap.cs プロジェクト: Rakjavik/BeatmapMaker
 private void Update()
 {
     if (!initialized)
     {
         return;
     }
     if (IsGrabbed())
     {
         if (transform.position.z > MAX_Z)
         {
             Vector3 newPosition = transform.position;
             newPosition.z      = MAX_Z;
             transform.position = newPosition;
         }
         else if (transform.position.z < MIN_Z)
         {
             Vector3 newPosition = transform.position;
             newPosition.z      = MIN_Z;
             transform.position = newPosition;
         }
         float relativeBeat = totalBeats - (transform.position.z / zPerBeat) - 45;
         relativeBeat = BeatMap.RoundToRelativeBeat(relativeBeat, BeatMap.currentNoteMode);
         currentTimeBar.GetComponentInChildren <Text>().text = (relativeBeat * totalBeats).ToString();
     }
     else
     {
         currentTimeBar.GetComponentInChildren <Text>().text = BeatMap.GetMostRecentBeat.ToString();
     }
     if (BeatMap.IsRunning())
     {
         //Debug.Log("Current Beat - " + BeatMap.GetCurrentBeat() + " current Z - "
         //+ transform.position.z + " ZDiff - " + (MAX_Z-transform.position.z));
         Vector3 newPosition = transform.position;
         newPosition.z      = MAX_Z - (zPerBeat * BeatMap.GetCurrentBeat());
         transform.position = newPosition;
     }
     if (changes.Count > 0)
     {
         //Debug.LogWarning("Changes detected - " + changes.Count);
         foreach (NoteDetails change in changes)
         {
             littleNoteMap[change].GetComponent <MeshRenderer>().enabled =
                 !littleNoteMap[change].GetComponent <MeshRenderer>().enabled;
             Debug.LogWarning("Meshrendered inverted on game object " + littleNoteMap[change].name);
         }
         changes = new List <NoteDetails>();
     }
 }
コード例 #3
0
 public void ResumeSong()
 {
     Debug.LogWarning("Resume called running, state " + running + "-" + BeatMap.state);
     if (!running)
     {
         if (beatManager.rewinding)
         {
             //Debug.Log("Current beat - " + currentBeat + " BPS - " + (beatMapData.beatsPerMinute / 60));
             //Debug.Log("Setting to " + currentBeat * (beatMapData.beatsPerMinute / 60));
             beatManager.SetRewinding(false);
             float skipToTime = beatManager.currentBeat / (beatMapData.beatsPerMinute / 60);
             if (skipToTime < 0)
             {
                 skipToTime = 0;
             }
             audioSource.time = skipToTime;
         }
         SetRunning(true);
         if (state == EditorState.Editing)
         {
             SetCurrentState(EditorState.Recording);
             leftSaber.DetachSelector();
             rightSaber.DetachSelector();
         }
         else if (state == EditorState.PlaybackPaused)
         {
             SetCurrentState(EditorState.Playback);
         }
         // If we have a negative beat, don't start the song, let the update method handle it //
         if (!(BeatMap.GetCurrentBeat() < 0))
         {
             audioSource.time = GetCurrentBeat() / beatManager.beatsPerSecond;
             audioSource.UnPause();
         }
     }
 }
コード例 #4
0
        private void ProcessControls(bool vrControls)
        {
            bool triggerCooldown = false;

            BeatMap.EditorState currentState = BeatMap.GetCurrentState();
            if (vrControls && steamVRController.GetPressDown(EVRButtonId.k_EButton_SteamVR_Trigger) ||
                Input.GetKeyDown(KeyCode.Space) && !vrControls)
            {
                triggerDown = true;
                if (!BeatMap.Inverted)
                {
                    map.InvertNotes();
                }
            }
            else if (vrControls && steamVRController.GetPressUp(EVRButtonId.k_EButton_SteamVR_Trigger) ||
                     Input.GetKeyUp(KeyCode.Space) && !vrControls)
            {
                triggerDown = false;
                if (BeatMap.Inverted)
                {
                    map.InvertNotes();
                }
            }
            else if (vrControls && steamVRController.GetPressDown(EVRButtonId.k_EButton_ApplicationMenu) ||
                     Input.GetKeyDown(KeyCode.A) && !vrControls)
            {
                menuButtonDown = true;
                bool bothControllersPressing = otherSaber.menuButtonDown;

                if (bothControllersPressing)
                {
                    if (currentState == BeatMap.EditorState.Editing ||
                        currentState == BeatMap.EditorState.PlaybackPaused)
                    {
                        map.ResumeSong();
                        triggerCooldown = true;
                        return;
                    }
                    else if (currentState == BeatMap.EditorState.Playback ||
                             currentState == BeatMap.EditorState.Recording)
                    {
                        map.PauseSong();
                        triggerCooldown = true;
                        return;
                    }
                }
                else
                {
                    if (currentState == BeatMap.EditorState.Editing)
                    {
                        if (selector.GetAttachedObject() != null)
                        {
                            Note note = selector.GetAttachedObject().GetComponent <Note>();
                            if (note != null)
                            {
                                if (!note.noteDetails.inverted)
                                {
                                    note.MakeNeutral();
                                    if (isLeft)
                                    {
                                        note.Invert(true);
                                    }
                                    DetachSelector();
                                    triggerCooldown = true;
                                }
                            }
                        }
                    }
                }
            }
            else if (vrControls && steamVRController.GetPressUp(EVRButtonId.k_EButton_ApplicationMenu) ||
                     Input.GetKeyUp(KeyCode.A) && !vrControls)
            {
                menuButtonDown = false;
            }
            if (vrControls && steamVRController.GetPressDown(EVRButtonId.k_EButton_SteamVR_Touchpad) ||
                Input.GetKeyDown(KeyCode.Y) && !vrControls)
            {
            }
            if (vrControls && steamVRController.GetTouchDown(EVRButtonId.k_EButton_SteamVR_Touchpad) ||
                Input.GetKeyDown(KeyCode.T) && !vrControls)
            {
                if (currentState == BeatMap.EditorState.Recording)
                {
                    BeatMap.currentNoteMode = BeatMap.NoteMode.HalfNote;
                }
            }
            else if (vrControls && steamVRController.GetTouchUp(EVRButtonId.k_EButton_SteamVR_Touchpad) ||
                     Input.GetKeyUp(KeyCode.T) && !vrControls)
            {
                if (currentState == BeatMap.EditorState.Recording)
                {
                    BeatMap.currentNoteMode = BeatMap.NoteMode.WholeNote;
                }
            }
            if (vrControls && steamVRController.GetPressDown(EVRButtonId.k_EButton_Grip) ||
                Input.GetKeyDown(KeyCode.G) && !vrControls)
            {
                if (gripHeldFor == 0) // Fresh push
                {
                    if (selector.HasTarget())
                    {
                        BeatMap.Log("Calling Grab on object " + selector.GetAttachedObject().name);
                        Grab(selector.GetAttachedObject());
                        if (selector.GetAttachedObject().GetComponent <MiniMap>() != null)
                        {
                            map.PauseSong();
                        }
                        triggerCooldown = true;
                    }
                }
                gripHeldFor += Time.deltaTime;
            }
            else if (vrControls && steamVRController.GetPressUp(EVRButtonId.k_EButton_Grip) ||
                     Input.GetKeyUp(KeyCode.G) && !vrControls)
            {
                BeatMap.Log("Grip let go, grabbing? " + grabbing);
                gripHeldFor = 0;
                if (grabbing)
                {
                    UnGrab();
                    triggerCooldown = true;
                }
            }
            // KEYBOARD ONLY //
            if (!vrControls)
            {
                if (Input.GetKeyDown(KeyCode.W))
                {
                    transform.position += transform.forward;
                }
                else if (Input.GetKeyDown(KeyCode.A))
                {
                    transform.position += -transform.right;
                }
                else if (Input.GetKeyDown(KeyCode.S))
                {
                    transform.position += -transform.forward;
                }
                else if (Input.GetKeyDown(KeyCode.D))
                {
                    transform.position += transform.right;
                }
                else if (Input.GetKeyDown(KeyCode.Q))
                {
                    transform.position += transform.up;
                }
                else if (Input.GetKeyDown(KeyCode.E))
                {
                    transform.position += -transform.up;
                }
                else if (Input.GetKeyDown(KeyCode.RightArrow))
                {
                    BeatMap.SkipToBeat(BeatMap.GetCurrentBeat() + 10);
                }
                else if (Input.GetKeyDown(KeyCode.LeftArrow))
                {
                    BeatMap.SkipToBeat(BeatMap.GetCurrentBeat() - 10);
                }
                else if (Input.GetKeyDown(KeyCode.P) && !IsOnCoolDown() && isLeft)
                {
                    triggerCooldown = true;
                    if (BeatMap.GetCurrentState() == BeatMap.EditorState.Editing)
                    {
                        map.ResumeSong();
                    }
                    else if (BeatMap.GetCurrentState() == BeatMap.EditorState.PlaybackPaused)
                    {
                        map.ResumeSong();
                    }
                    else if (BeatMap.GetCurrentState() == BeatMap.EditorState.Playback)
                    {
                        map.PauseSong();
                    }
                    else if (BeatMap.GetCurrentState() == BeatMap.EditorState.Recording)
                    {
                        map.PauseSong();
                    }
                }
            }
            if (triggerCooldown)
            {
                currentCooldown += Time.deltaTime;
            }
        }
コード例 #5
0
ファイル: MiniMap.cs プロジェクト: Rakjavik/BeatmapMaker
        // Use this for initialization
        public void Initialize(int totalBeats, float beatsThatFit)
        {
            zPerBeat              = (MAX_Z - MIN_Z) / totalBeats;
            changes               = new List <NoteDetails>();
            littleNoteMap         = new Dictionary <NoteDetails, GameObject>();
            currentWidthOfMinimap = 1;
            Debug.LogWarning("Minimap width - " + currentWidthOfMinimap);
            this.totalBeats = totalBeats;
            notes           = BeatMap.GetAllNotes(true);
            GameObject container = new GameObject("NoteContainer");

            container.transform.SetParent(transform);
            container.transform.localPosition = Vector3.zero;
            foreach (NoteDetails note in notes)
            {
                GameObject smallNote;
                if (note.color == Note.NoteColor.LEFT)
                {
                    smallNote = Instantiate(noteRed);
                }
                else
                {
                    smallNote = Instantiate(noteBlue);
                }
                smallNote.transform.SetParent(container.transform);
                smallNote.transform.localPosition = Vector3.zero;
                Vector3 newPosition = new Vector3(
                    note.gridPosition.x / NoteSpacingXY,
                    note.gridPosition.y / NoteSpacingXY,
                    MIN_Z + note.timeToSpawn * zPerBeat);
                smallNote.transform.localPosition = newPosition;
                if (!showNotes)
                {
                    smallNote.GetComponent <MeshRenderer>().enabled = false;
                }
                littleNoteMap.Add(note, smallNote);
            }
            GameObject barContainer = new GameObject("BarContainer");

            barContainer.transform.SetParent(transform);
            barContainer.transform.position = transform.position;
            float startAtZ = barContainer.transform.position.z;

            currentTimeBar      = Instantiate(miniBarPrefab).GetComponent <BeatBar>();
            currentTimeBar.name = "TimeBar";
            currentTimeBar.transform.SetParent(null);
            currentTimeBar.transform.position = new Vector3(1.306f, 1.47f, MAX_Z + .0447f);
            currentTimeBar.SetBeatNumber(0);

            BeatBar spawnPointBar = Instantiate(miniBarNoDisplayPrefab, currentTimeBar.transform)
                                    .GetComponent <BeatBar>();

            float totalZ = beatsThatFit * zPerBeat;

            spawnPointBar.transform.localScale    = Vector3.one;
            spawnPointBar.transform.localPosition = Vector3.zero;
            Vector3 newSpawnBarPosition = spawnPointBar.transform.position;

            newSpawnBarPosition.z += totalZ;

            spawnPointBar.transform.position = newSpawnBarPosition;
            SetZBasedOnBeat(BeatMap.GetCurrentBeat());
            GameObject miniMapContainer = new GameObject("Minimap Container");

            transform.SetParent(miniMapContainer.transform);
            initialized = true;
        }
コード例 #6
0
ファイル: InfoDisplay.cs プロジェクト: Rakjavik/BeatmapMaker
        private void Update()
        {
            if (!gameObject.activeInHierarchy)
            {
                return;
            }
            if (isNoteDisplay)
            {
                Note note = GetComponentInParent <Note>();
                if (note.noteDetails.inverted != BeatMap.Inverted)
                {
                    gameObject.SetActive(false);
                }
                else
                {
                    if (!gameObject.activeSelf)
                    {
                        gameObject.SetActive(true);
                    }
                    SetText(note.noteDetails.timeToSpawn.ToString());
                }
                return;
            }
            else if (isBeatDisplay)
            {
                SetText(GetComponentInParent <BeatBar>().GetBeatNumber().ToString());
            }
            else if (BeatMap.currentFrame % 15 == 0 && !isSaberdisplay)
            {
                string text = "Mode - " + BeatMap.GetCurrentState() + "\nCurrent Beat - " + BeatMap.GetCurrentBeat()
                              + "\nRecord Mode - ";
                if (BeatMap.currentNoteMode == BeatMap.NoteMode.HalfNote)
                {
                    text += "Half Notes";
                }
                else if (BeatMap.currentNoteMode == BeatMap.NoteMode.QuarterNote)
                {
                    text += "Quarter Notes";
                }
                else if (BeatMap.currentNoteMode == BeatMap.NoteMode.WholeNote)
                {
                    text += "Whole Notes";
                }

                SetText(text);
            }
        }