Playback visualization + started on timeline in editor

This commit is contained in:
Starpelly
2022-01-07 06:36:23 -05:00
parent 459e6c7090
commit afa2d6d482
29 changed files with 6788 additions and 358 deletions

View File

@ -0,0 +1,56 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using TMPro;
namespace RhythmHeavenMania.Editor
{
public class BeatGrid : MonoBehaviour
{
private RectTransform rectTransform;
public float snap;
public float count;
private float lastPosX;
private List<GameObject> Lines = new List<GameObject>();
private void Start()
{
rectTransform = GetComponent<RectTransform>();
for (int i = 0; i < count; i++)
{
GameObject line = Instantiate(transform.GetChild(0).gameObject, transform);
line.transform.localPosition = new Vector3(i, line.transform.localPosition.y);
line.SetActive(true);
Lines.Add(line);
}
}
private void Update()
{
var pos = new Vector2(Mathf.RoundToInt(Mathf.Abs(transform.parent.localPosition.x) / 100) - 1, transform.localPosition.y);
transform.localPosition = pos;
if (pos.x != lastPosX)
UpdateGridNum();
lastPosX = transform.localPosition.x;
}
private void UpdateGridNum()
{
for (int i = 0; i < Lines.Count; i++)
{
var line = Lines[i];
float newNum = transform.localPosition.x + i;
line.transform.GetChild(0).GetComponent<TMP_Text>().text = newNum.ToString();
}
}
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 9c7a9db66b8fb65479a81158697db051
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -18,7 +18,10 @@ namespace RhythmHeavenMania.Editor
private float lastBeatPos = 0;
[Header("Timeline Components")]
[SerializeField] private Slider TimelineSlider;
[SerializeField] private RectTransform TimelineSlider;
[SerializeField] private RectTransform TimelineContent;
[SerializeField] private RectTransform TimelineSongPosLineRef;
private RectTransform TimelineSongPosLine;
#region Initializers
@ -33,7 +36,7 @@ namespace RhythmHeavenMania.Editor
SongBeat.text = $"Beat {string.Format("{0:0.000}", Conductor.instance.songPositionInBeats)}";
SongPos.text = FormatTime(Conductor.instance.songPosition);
isPlaying = Conductor.instance.musicSource.isPlaying;
isPlaying = Conductor.instance.isPlaying;
if (Input.GetKeyDown(KeyCode.Space))
{
@ -54,11 +57,10 @@ namespace RhythmHeavenMania.Editor
private void SliderControl()
{
TimelineSlider.maxValue = Conductor.instance.SongLengthInBeats();
if (isPlaying)
if (TimelineSongPosLine != null)
{
TimelineSlider.value = Conductor.instance.songPositionInBeats;
TimelineSongPosLine.transform.localPosition = new Vector3(Conductor.instance.songPositionInBeats, TimelineSlider.transform.localPosition.y);
TimelineSongPosLine.transform.localScale = new Vector3(1f / TimelineContent.transform.localScale.x, TimelineSlider.transform.localScale.y, 1);
}
}
@ -67,14 +69,14 @@ namespace RhythmHeavenMania.Editor
{
if (fromStart)
{
if (isPlaying && Conductor.instance.musicSource.clip)
if (isPlaying)
Play(true);
else
Stop();
}
else
{
if (!isPlaying && Conductor.instance.musicSource.clip)
if (!isPlaying)
{
Play(false);
}
@ -88,22 +90,30 @@ namespace RhythmHeavenMania.Editor
public void Play(bool fromStart)
{
if (fromStart) Stop();
// isPaused = false;
Conductor.instance.musicSource.Play();
if (!Conductor.instance.isPaused)
{
TimelineSongPosLine = Instantiate(TimelineSongPosLineRef, TimelineSongPosLineRef.parent).GetComponent<RectTransform>();
TimelineSongPosLine.gameObject.SetActive(true);
}
Conductor.instance.Play();
}
public void Pause()
{
// isPaused = true;
Conductor.instance.musicSource.Pause();
Conductor.instance.Pause();
}
public void Stop()
{
// isPaused = true;
// timelineSlider.value = 0;
Conductor.instance.musicSource.time = 0;
Conductor.instance.musicSource.Stop();
Destroy(TimelineSongPosLine.gameObject);
Conductor.instance.Stop();
}
#endregion