mirror of
https://github.com/RHeavenStudioPlus/HeavenStudioPlus.git
synced 2024-11-08 18:55:07 +00:00
Swing UI and other stuff (#908)
* no more "new section" "" * Change Swing Labels 0% > 50% 100% > 75% * math :( @minenice55 please help me thank you :)))))))))) * i have no idea what im doing * Done! - added presets - fixed bugs - should have 100% compatibility - also documented the weird-ass setup --------- Co-authored-by: Zeo <67521686+ThatZeoGal@users.noreply.github.com>
This commit is contained in:
parent
eece21b1a7
commit
59ef5a2d60
3 changed files with 1251 additions and 115 deletions
File diff suppressed because it is too large
Load diff
|
@ -243,7 +243,7 @@ namespace HeavenStudio.Editor.Track
|
|||
|
||||
if (create)
|
||||
{
|
||||
RiqEntity sectionC = GameManager.instance.Beatmap.AddNewSectionMarker(Timeline.instance.MousePos2BeatSnap, "New Section");
|
||||
RiqEntity sectionC = GameManager.instance.Beatmap.AddNewSectionMarker(Timeline.instance.MousePos2BeatSnap, "");
|
||||
|
||||
sectionC.CreateProperty("startPerfect", false);
|
||||
sectionC.CreateProperty("weight", 1f);
|
||||
|
|
|
@ -51,7 +51,7 @@ public class TempoDialog : Dialog
|
|||
deleteButton.gameObject.SetActive(!tempoObj.first);
|
||||
|
||||
tempoInput.text = tempoObj.chartEntity["tempo"].ToString("F");
|
||||
swingInput.text = (tempoObj.chartEntity["swing"] * 400).ToString("F");
|
||||
swingInput.text = (tempoObj.chartEntity["swing"] * 100 + 50).ToString("F");
|
||||
swingSlider.value = tempoObj.chartEntity["swing"];
|
||||
|
||||
swingDivisionToggle.isOn = tempoObj.chartEntity["swingDivision"] != 1f;
|
||||
|
@ -97,24 +97,81 @@ public class TempoDialog : Dialog
|
|||
}
|
||||
}
|
||||
|
||||
public void RefreshSwingUI()
|
||||
{
|
||||
swingInput.text = (tempoObj.chartEntity["swing"] * 100 + 50).ToString("F");
|
||||
swingSlider.value = tempoObj.chartEntity["swing"];
|
||||
}
|
||||
|
||||
public void SwingSliderUpdate()
|
||||
{
|
||||
if (tempoObj != null)
|
||||
{
|
||||
tempoObj.SetSwing(System.MathF.Round(swingSlider.value, 4));
|
||||
swingInput.text = (tempoObj.chartEntity["swing"] * 400).ToString("F");
|
||||
swingSlider.value = tempoObj.chartEntity["swing"];
|
||||
RefreshSwingUI();
|
||||
}
|
||||
}
|
||||
|
||||
public void SetSwing()
|
||||
public void SwingManualUpdate()
|
||||
{
|
||||
if (tempoObj != null)
|
||||
{
|
||||
float swing = float.Parse(swingInput.text);
|
||||
tempoObj.SetSwing(swing * 0.25f / 100f);
|
||||
swingInput.text = (tempoObj.chartEntity["swing"] * 400).ToString("F");
|
||||
swingSlider.value = tempoObj.chartEntity["swing"];
|
||||
tempoObj.SetSwing(swing / 100f - 0.5f);
|
||||
RefreshSwingUI();
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
a note for future reference:
|
||||
|
||||
all stored swing values (like ones in remix.json) are the SWING RATIO - 0.5
|
||||
for example, a swing ratio of 50% would be 0.5 - 0.5 = 0
|
||||
and a ratio of 66.67% would be 0.6667 - 0.5 = 0.1667
|
||||
|
||||
you put that final value into tempoObj.SetSwing() to set it,
|
||||
hence why the above functions use that weird formula and the below functions set it directly
|
||||
|
||||
in addition, you can get the swing ratio (as a percentage) from this value by
|
||||
multiplying the value by 100, then adding 50
|
||||
|
||||
this is really stupid lol
|
||||
minenice why didnt you write any of this down lmao - zeo
|
||||
*/
|
||||
|
||||
public void SetStraightSwing()
|
||||
{
|
||||
if (tempoObj != null)
|
||||
{
|
||||
tempoObj.SetSwing(0f);
|
||||
RefreshSwingUI();
|
||||
}
|
||||
}
|
||||
|
||||
public void SetLightSwing()
|
||||
{
|
||||
if (tempoObj != null)
|
||||
{
|
||||
tempoObj.SetSwing(0.1f);
|
||||
RefreshSwingUI();
|
||||
}
|
||||
}
|
||||
|
||||
public void SetNormalSwing()
|
||||
{
|
||||
if (tempoObj != null)
|
||||
{
|
||||
tempoObj.SetSwing(0.1667f);
|
||||
RefreshSwingUI();
|
||||
}
|
||||
}
|
||||
|
||||
public void SetHeavySwing()
|
||||
{
|
||||
if (tempoObj != null)
|
||||
{
|
||||
tempoObj.SetSwing(0.25f);
|
||||
RefreshSwingUI();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue