public void UpdateSeperatorSelectedType() { int newType = (int)(scroll.value * 2); if (newType == (int)selectedType) { return; } selectedType = (MeasureSeperatorType)(scroll.value * 2); foreach (MeasureSeperator seperator in activeSeperators) { if ((int)seperator.type > (int)selectedType) { seperator.gameObject.SetActive(false); } else { if (!seperator.gameObject.activeInHierarchy) { seperator.gameObject.SetActive(true); seperator.UpdateSeperatorPosition(); } } } }
private MeasureSeperator SpawnSeperator(float songPosition, MeasureSeperatorType type, int selectedBeat) { float ratio = songPosition / (EditorConductor.instance.spb * NoteHelper.Whole * 2f); Vector3 spawnPosition = new Vector3(0f, BoardObject.transform.position.y + defaultDistanceFromHitboard * ratio * Mathf.Sin(xSpawnRotation) + 0.1f, BoardObject.transform.position.z + defaultDistanceFromHitboard * ratio * Mathf.Cos(xSpawnRotation)); MeasureSeperator tmp; switch (type) { case MeasureSeperatorType.Quarter: tmp = Instantiate(MSQuarter, spawnPosition, baseRotation).GetComponent <MeasureSeperator>(); break; case MeasureSeperatorType.Eighth: tmp = Instantiate(MSEighth, spawnPosition, baseRotation).GetComponent <MeasureSeperator>(); break; case MeasureSeperatorType.Sixteenth: tmp = Instantiate(MSSixteenth, spawnPosition, baseRotation).GetComponent <MeasureSeperator>(); break; default: tmp = Instantiate(MSQuarter, spawnPosition, baseRotation).GetComponent <MeasureSeperator>(); break; } tmp.Construct(songPosition, basePosition, type, selectedBeat); return(tmp); }
public void Construct(float timestamp, Vector3 defaultStartPosition, MeasureSeperatorType type, int beatSegment) { this.timestamp = timestamp; this.defaultStartPosition = defaultStartPosition; this.beatSegment = beatSegment; this.type = type; baseMat = GetComponent <Renderer>().material; rTP = 1f; }
private GameBeatSeperator SpawnSeperator(float songPosition, MeasureSeperatorType type, int selectedBeat) { float ratio = songPosition / (Conductor.spb * NoteHelper.Whole * 2f); Vector3 spawnPosition = new Vector3(0f, BoardObject.transform.position.y + defaultDistanceFromHitboard * ratio * Mathf.Sin(xSpawnRotation) + 0.1f, BoardObject.transform.position.z + defaultDistanceFromHitboard * ratio * Mathf.Cos(xSpawnRotation)); GameBeatSeperator tmp = Instantiate(MSQuarter, spawnPosition, baseRotation).GetComponent <GameBeatSeperator>(); tmp.Construct(songPosition, basePosition, type, selectedBeat); return(tmp); }
public void Construct(float timestamp, Vector3 defaultStartPosition, MeasureSeperatorType type, int beatSegment) { this.timestamp = timestamp; this.defaultStartPosition = defaultStartPosition; this.beatSegment = beatSegment; this.type = type; baseMat = GetComponent <Renderer>().material; rTP = 1f; if ((int)type > (int)MeasureSeperatorManager.instance.selectedType) { gameObject.SetActive(false); } }
private void Update() { // Add a new measure seperator if needed. if (EditorConductor.instance.source.isPlaying && activeSeperators.Count > 0) { MeasureSeperator final = activeSeperators[activeSeperators.Count - 1]; if (final.timestamp < EditorConductor.instance.songPosition + (EditorConductor.instance.spb * NoteHelper.Whole * 2f)) { int beat = (final.beatSegment + 1) % 4; MeasureSeperatorType type = GetMeasureSeperatorTypeFromBeat(beat); MeasureSeperator newInstance = SpawnSeperator(final.timestamp + EditorConductor.instance.spb * NoteHelper.Sixteenth, type, beat); activeSeperators.Add(newInstance); } } }
public MeasureSeperator closestSeperator; // This will be used when we need to place a note, it will be faster than looping through the entire list to find where the player should place their note. // Use this for initialization void Start() { if (instance == null) { instance = this; selectedType = MeasureSeperatorType.Quarter; activeSeperators = new List <MeasureSeperator>(); basePosition = new Vector3(0f, BoardObject.transform.position.y + defaultDistanceFromHitboard * Mathf.Sin(xSpawnRotation) + 0.1f, BoardObject.transform.position.z + defaultDistanceFromHitboard * Mathf.Cos(xSpawnRotation)); baseRotation = BoardObject.transform.rotation; } else { Destroy(this.gameObject); } }
public void ScrollForward() { float songPosition = EditorConductor.instance.songPosition; int index = 0; bool spawnNewInstance = false; for (index = 0; index < activeSeperators.Count; index++) { if (activeSeperators[index].timestamp < songPosition + 0.05f) { continue; } // Else, Set the the spong position and the closestSeperator var- to the current Seperator, an else { EditorConductor.instance.SetSongPosition(activeSeperators[index].timestamp); spawnNewInstance = true; if (activeSeperators[index].gameObject.activeInHierarchy) { activeSeperators[index].SetClosest(); } break; } } // Spawn New Instance and Destory the first instance if (spawnNewInstance) { MeasureSeperator finalInstance = activeSeperators[activeSeperators.Count - 1]; int beat = (finalInstance.beatSegment + 1) % 4; MeasureSeperatorType type = GetMeasureSeperatorTypeFromBeat(beat); MeasureSeperator newInstance = SpawnSeperator(finalInstance.timestamp + EditorConductor.instance.spb * NoteHelper.Sixteenth, type, beat); activeSeperators.Add(newInstance); } foreach (MeasureSeperator seperator in activeSeperators) { seperator.UpdateSeperatorPosition(); } }
private MeasureSeperatorType GetMeasureSeperatorTypeFromBeat(int beat) { MeasureSeperatorType type = MeasureSeperatorType.Quarter; // A default must be set, but this means nothing. if (beat == 0) { type = MeasureSeperatorType.Quarter; } else if (beat == 2) { type = MeasureSeperatorType.Eighth; } else if (beat == 1f || beat == 3) { type = MeasureSeperatorType.Sixteenth; } return(type); }
public void InitializeSeperators() { float currentSongPos = EditorConductor.instance.offset; while (currentSongPos < EditorConductor.instance.offset * NoteHelper.Whole * 2f) { if (currentSongPos < 0) { currentSongPos += EditorConductor.instance.spb * NoteHelper.Sixteenth; continue; } MeasureSeperatorType spawnType = GetMeasureSeperatorTypeFromBeat(selectedBeat); MeasureSeperator seperator = SpawnSeperator(currentSongPos, spawnType, selectedBeat); activeSeperators.Add(seperator); selectedBeat = (selectedBeat + 1) % 4; currentSongPos += EditorConductor.instance.spb * NoteHelper.Sixteenth; } }