mirror of
https://github.com/RHeavenStudioPlus/HeavenStudioPlus.git
synced 2024-11-14 05:35:08 +00:00
optimize remix saving / loading
stream is now saved to a buffer so we don't have to convert every time we save, only once when loading a new audio file - make a distinction between Load Remix and New Remix
This commit is contained in:
parent
86b34fbb52
commit
3adb82c504
3 changed files with 40 additions and 18 deletions
|
@ -19238,8 +19238,8 @@ MonoBehaviour:
|
||||||
m_TargetGraphic: {fileID: 1589389272}
|
m_TargetGraphic: {fileID: 1589389272}
|
||||||
m_HandleRect: {fileID: 1589389271}
|
m_HandleRect: {fileID: 1589389271}
|
||||||
m_Direction: 2
|
m_Direction: 2
|
||||||
m_Value: 1
|
m_Value: 0
|
||||||
m_Size: 0.99952716
|
m_Size: 1
|
||||||
m_NumberOfSteps: 0
|
m_NumberOfSteps: 0
|
||||||
m_OnValueChanged:
|
m_OnValueChanged:
|
||||||
m_PersistentCalls:
|
m_PersistentCalls:
|
||||||
|
@ -24820,7 +24820,7 @@ RectTransform:
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
m_AnchorMin: {x: 0, y: 0.5}
|
m_AnchorMin: {x: 0, y: 0.5}
|
||||||
m_AnchorMax: {x: 1, y: 0.5}
|
m_AnchorMax: {x: 1, y: 0.5}
|
||||||
m_AnchoredPosition: {x: 0, y: 129.91016}
|
m_AnchoredPosition: {x: 0, y: 129.9111}
|
||||||
m_SizeDelta: {x: 0, y: 0}
|
m_SizeDelta: {x: 0, y: 0}
|
||||||
m_Pivot: {x: 0.5, y: 1}
|
m_Pivot: {x: 0.5, y: 1}
|
||||||
--- !u!114 &1154875944
|
--- !u!114 &1154875944
|
||||||
|
@ -35580,9 +35580,9 @@ MonoBehaviour:
|
||||||
m_PersistentCalls:
|
m_PersistentCalls:
|
||||||
m_Calls:
|
m_Calls:
|
||||||
- m_Target: {fileID: 1423699437}
|
- m_Target: {fileID: 1423699437}
|
||||||
m_TargetAssemblyTypeName: RhythmHeavenMania.Editor.Editor, Assembly-CSharp
|
m_TargetAssemblyTypeName: HeavenStudio.Editor.Editor, Assembly-CSharp
|
||||||
m_MethodName: LoadRemix
|
m_MethodName: NewRemix
|
||||||
m_Mode: 5
|
m_Mode: 1
|
||||||
m_Arguments:
|
m_Arguments:
|
||||||
m_ObjectArgument: {fileID: 0}
|
m_ObjectArgument: {fileID: 0}
|
||||||
m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
|
m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
|
||||||
|
|
|
@ -70,6 +70,8 @@ namespace HeavenStudio.Editor
|
||||||
public bool editingInputField = false;
|
public bool editingInputField = false;
|
||||||
public bool isCursorEnabled = true;
|
public bool isCursorEnabled = true;
|
||||||
|
|
||||||
|
private byte[] MusicBytes;
|
||||||
|
|
||||||
public static Editor instance { get; private set; }
|
public static Editor instance { get; private set; }
|
||||||
|
|
||||||
private void Start()
|
private void Start()
|
||||||
|
@ -158,7 +160,7 @@ namespace HeavenStudio.Editor
|
||||||
{
|
{
|
||||||
if (Input.GetKeyDown(KeyCode.N))
|
if (Input.GetKeyDown(KeyCode.N))
|
||||||
{
|
{
|
||||||
LoadRemix("");
|
NewRemix();
|
||||||
}
|
}
|
||||||
else if (Input.GetKeyDown(KeyCode.O))
|
else if (Input.GetKeyDown(KeyCode.O))
|
||||||
{
|
{
|
||||||
|
@ -294,6 +296,22 @@ namespace HeavenStudio.Editor
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (clip != null)
|
||||||
|
MusicBytes = OggVorbis.VorbisPlugin.GetOggVorbis(Conductor.instance.musicSource.clip, 1);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
MusicBytes = null;
|
||||||
|
Debug.LogWarning("Failed to load music file! The stream is currently empty.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (System.Exception)
|
||||||
|
{
|
||||||
|
MusicBytes = null;
|
||||||
|
Debug.LogWarning("Failed to load music file! The stream is currently empty.");
|
||||||
|
}
|
||||||
|
|
||||||
return clip;
|
return clip;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -343,15 +361,12 @@ namespace HeavenStudio.Editor
|
||||||
using (var zipStream = levelFile.Open())
|
using (var zipStream = levelFile.Open())
|
||||||
zipStream.Write(Encoding.UTF8.GetBytes(GetJson()), 0, Encoding.UTF8.GetBytes(GetJson()).Length);
|
zipStream.Write(Encoding.UTF8.GetBytes(GetJson()), 0, Encoding.UTF8.GetBytes(GetJson()).Length);
|
||||||
|
|
||||||
if (changedMusic || currentRemixPath != path)
|
if (MusicBytes != null)
|
||||||
{
|
{
|
||||||
// this gets rid of the music file for some reason, someone remind me to find a fix for this soon
|
var musicFile = archive.CreateEntry("song.ogg", System.IO.Compression.CompressionLevel.NoCompression);
|
||||||
|
using (var zipStream = musicFile.Open())
|
||||||
|
zipStream.Write(MusicBytes, 0, MusicBytes.Length);
|
||||||
}
|
}
|
||||||
|
|
||||||
byte[] bytes = OggVorbis.VorbisPlugin.GetOggVorbis(Conductor.instance.musicSource.clip, 1);
|
|
||||||
var musicFile = archive.CreateEntry("song.ogg", System.IO.Compression.CompressionLevel.NoCompression);
|
|
||||||
using (var zipStream = musicFile.Open())
|
|
||||||
zipStream.Write(bytes, 0, bytes.Length);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
currentRemixPath = path;
|
currentRemixPath = path;
|
||||||
|
@ -359,6 +374,12 @@ namespace HeavenStudio.Editor
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void NewRemix()
|
||||||
|
{
|
||||||
|
MusicBytes = null;
|
||||||
|
LoadRemix("");
|
||||||
|
}
|
||||||
|
|
||||||
public void LoadRemix(string json = "")
|
public void LoadRemix(string json = "")
|
||||||
{
|
{
|
||||||
GameManager.instance.LoadRemix(json);
|
GameManager.instance.LoadRemix(json);
|
||||||
|
@ -367,6 +388,8 @@ namespace HeavenStudio.Editor
|
||||||
Timeline.instance.VolumeInfo.UpdateStartingVolumeText();
|
Timeline.instance.VolumeInfo.UpdateStartingVolumeText();
|
||||||
Timeline.instance.TempoInfo.UpdateOffsetText();
|
Timeline.instance.TempoInfo.UpdateOffsetText();
|
||||||
Timeline.FitToSong();
|
Timeline.FitToSong();
|
||||||
|
|
||||||
|
currentRemixPath = string.Empty;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void OpenRemix()
|
public void OpenRemix()
|
||||||
|
@ -408,12 +431,11 @@ namespace HeavenStudio.Editor
|
||||||
{
|
{
|
||||||
using (var stream = entry.Open())
|
using (var stream = entry.Open())
|
||||||
{
|
{
|
||||||
byte[] bytes;
|
|
||||||
using (var ms = new MemoryStream())
|
using (var ms = new MemoryStream())
|
||||||
{
|
{
|
||||||
stream.CopyTo(ms);
|
stream.CopyTo(ms);
|
||||||
bytes = ms.ToArray();
|
MusicBytes = ms.ToArray();
|
||||||
Conductor.instance.musicSource.clip = OggVorbis.VorbisPlugin.ToAudioClip(bytes, "music");
|
Conductor.instance.musicSource.clip = OggVorbis.VorbisPlugin.ToAudioClip(MusicBytes, "music");
|
||||||
loadedMusic = true;
|
loadedMusic = true;
|
||||||
Timeline.FitToSong();
|
Timeline.FitToSong();
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
ManifestFileVersion: 0
|
ManifestFileVersion: 0
|
||||||
CRC: 1477632056
|
CRC: 1516953164
|
||||||
AssetBundleManifest:
|
AssetBundleManifest:
|
||||||
AssetBundleInfos:
|
AssetBundleInfos:
|
||||||
Info_0:
|
Info_0:
|
||||||
|
|
Loading…
Reference in a new issue