mirror of
https://github.com/RHeavenStudioPlus/HeavenStudioPlus.git
synced 2024-11-10 11:45:09 +00:00
Editor: Starting BPM can be entered via input field as well as through the BPM change tool.
This commit is contained in:
parent
12c70d4311
commit
19a76babd2
5 changed files with 1105 additions and 277 deletions
File diff suppressed because it is too large
Load diff
|
@ -350,6 +350,7 @@ namespace RhythmHeavenMania.Editor
|
|||
string json = Encoding.Default.GetString(bytes);
|
||||
GameManager.instance.LoadRemix(json);
|
||||
Timeline.instance.LoadRemix();
|
||||
Timeline.instance.TempoInfo.UpdateStartingBPMText();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -71,12 +71,13 @@ namespace RhythmHeavenMania.Editor
|
|||
slider.maxValue = fl.max;
|
||||
|
||||
slider.value = System.Convert.ToSingle(parameterManager.entity[propertyName]);
|
||||
inputField.text = slider.value.ToString("G4"); // G4 = Display no more than 4 decimal places.
|
||||
inputField.text = slider.value.ToString("G");
|
||||
|
||||
slider.onValueChanged.AddListener(delegate
|
||||
{
|
||||
inputField.text = slider.value.ToString("G4");
|
||||
parameterManager.entity[propertyName] = (float)System.Math.Round(slider.value, 4);
|
||||
var newValue = (float)System.Math.Round(slider.value, 4);
|
||||
inputField.text = newValue.ToString("G");
|
||||
parameterManager.entity[propertyName] = newValue;
|
||||
});
|
||||
|
||||
inputField.onEndEdit.AddListener(delegate
|
||||
|
|
|
@ -2,6 +2,7 @@ using System.Collections;
|
|||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
using System;
|
||||
|
||||
using TMPro;
|
||||
using Starpelly;
|
||||
|
@ -13,13 +14,17 @@ namespace RhythmHeavenMania.Editor.Track
|
|||
[Header("Components")]
|
||||
private RectTransform rectTransform;
|
||||
[SerializeField] private RectTransform RefTempoChange;
|
||||
[SerializeField] private RectTransform StartingBPM;
|
||||
public TMP_InputField StartingBPM;
|
||||
private RectTransform StartingBPMRect;
|
||||
|
||||
public List<TempoTimelineObj> tempoTimelineObjs = new List<TempoTimelineObj>();
|
||||
|
||||
private bool firstUpdate;
|
||||
|
||||
private void Start()
|
||||
{
|
||||
rectTransform = this.GetComponent<RectTransform>();
|
||||
StartingBPMRect = StartingBPM.GetComponent<RectTransform>();
|
||||
|
||||
for (int i = 0; i < GameManager.instance.Beatmap.tempoChanges.Count; i++)
|
||||
{
|
||||
|
@ -30,7 +35,14 @@ namespace RhythmHeavenMania.Editor.Track
|
|||
|
||||
private void Update()
|
||||
{
|
||||
StartingBPM.GetChild(0).GetComponent<TMP_Text>().text = GameManager.instance.Beatmap.bpm.ToString();
|
||||
if (!firstUpdate)
|
||||
{
|
||||
UpdateStartingBPMText();
|
||||
firstUpdate = true;
|
||||
}
|
||||
|
||||
if (Timeline.instance.userIsEditingInputField)
|
||||
return;
|
||||
|
||||
if (Timeline.instance.timelineState.tempoChange && !Conductor.instance.NotStopped())
|
||||
{
|
||||
|
@ -45,7 +57,7 @@ namespace RhythmHeavenMania.Editor.Track
|
|||
}
|
||||
}
|
||||
|
||||
if (RectTransformUtility.RectangleContainsScreenPoint(StartingBPM, Input.mousePosition, Editor.instance.EditorCamera))
|
||||
if (RectTransformUtility.RectangleContainsScreenPoint(StartingBPMRect, Input.mousePosition, Editor.instance.EditorCamera))
|
||||
{
|
||||
float increase = Input.mouseScrollDelta.y;
|
||||
if (Input.GetKey(KeyCode.LeftControl))
|
||||
|
@ -53,19 +65,42 @@ namespace RhythmHeavenMania.Editor.Track
|
|||
if (Input.GetKey(KeyCode.LeftShift))
|
||||
increase *= 5f;
|
||||
|
||||
GameManager.instance.Beatmap.bpm += increase;
|
||||
StartingBPM.transform.GetChild(0).GetComponent<TMP_Text>().text = GameManager.instance.Beatmap.bpm.ToString();
|
||||
if (increase != 0f)
|
||||
{
|
||||
GameManager.instance.Beatmap.bpm += increase;
|
||||
UpdateStartingBPMText();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
StartingBPM.GetComponent<Image>().enabled = true;
|
||||
StartingBPM.GetComponent<Button>().enabled = true;
|
||||
}
|
||||
else
|
||||
public void UpdateStartingBPMText()
|
||||
{
|
||||
StartingBPM.text = GameManager.instance.Beatmap.bpm.ToString("G");
|
||||
}
|
||||
|
||||
public void UpdateStartingBPMFromText()
|
||||
{
|
||||
// Failsafe against empty string.
|
||||
if (String.IsNullOrEmpty(StartingBPM.text))
|
||||
StartingBPM.text = "120";
|
||||
|
||||
var newBPM = Convert.ToSingle(StartingBPM.text);
|
||||
|
||||
// Failsafe against negative BPM.
|
||||
if (newBPM < 1f)
|
||||
{
|
||||
StartingBPM.GetComponent<Image>().enabled = false;
|
||||
StartingBPM.GetComponent<Button>().enabled = false;
|
||||
StartingBPM.GetComponent<Button>().targetGraphic.color = Color.white;
|
||||
StartingBPM.text = "120";
|
||||
newBPM = 100;
|
||||
}
|
||||
|
||||
// Limit decimal places to 4.
|
||||
newBPM = (float)System.Math.Round(newBPM, 4);
|
||||
|
||||
GameManager.instance.Beatmap.bpm = newBPM;
|
||||
|
||||
// In case the newBPM ended up differing from the inputted string.
|
||||
UpdateStartingBPMText();
|
||||
}
|
||||
|
||||
private void AddTempoChange(bool create, Beatmap.TempoChange tempoChange_ = null)
|
||||
|
|
|
@ -68,6 +68,7 @@ namespace RhythmHeavenMania.Editor.Track
|
|||
[SerializeField] private RectTransform TimelineSongPosLineRef;
|
||||
[SerializeField] private RectTransform TimelineEventObjRef;
|
||||
[SerializeField] private RectTransform LayersRect;
|
||||
public TempoTimeline TempoInfo;
|
||||
private RectTransform TimelineSongPosLine;
|
||||
|
||||
[Header("Timeline Playbar")]
|
||||
|
@ -83,7 +84,7 @@ namespace RhythmHeavenMania.Editor.Track
|
|||
|
||||
public static Timeline instance { get; private set; }
|
||||
|
||||
private bool userIsEditingInputField
|
||||
public bool userIsEditingInputField
|
||||
{
|
||||
get
|
||||
{
|
||||
|
|
Loading…
Reference in a new issue