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); } } }
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>(); } }
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(); } } }
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; } }
// 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; }
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); } }