WIP: MusicTransition SyncPoint

This commit is contained in:
2026-04-16 17:55:29 +08:00
parent 91f1b18771
commit dac34089dd
11 changed files with 29 additions and 23 deletions
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -108,18 +108,6 @@ public partial class AudioObject : IBinarySerializable
/// </summary> /// </summary>
public bool ContainerPlayMode { get; set; } public bool ContainerPlayMode { get; set; }
/// <summary>
/// 按段落配置每段响应范围,用|分隔不同段落
/// </summary>
public string BlendRanges { get; set; }
/// <summary>
/// 0 = 指数
/// 1 = 线形
/// 2 = 对数
/// </summary>
public BlendCrossFadeType BlendCrossFadeType { get; set; }
/// <summary> /// <summary>
/// 指定避免重复的次数 /// 指定避免重复的次数
/// </summary> /// </summary>
@@ -190,8 +178,6 @@ public partial class AudioObject : IBinarySerializable
Haptic = reader.ReadUInt32(); Haptic = reader.ReadUInt32();
ContainerType = (ContainerType)reader.ReadByte(); ContainerType = (ContainerType)reader.ReadByte();
ContainerPlayMode = reader.ReadBoolean(); ContainerPlayMode = reader.ReadBoolean();
BlendRanges = reader.ReadString();
BlendCrossFadeType = (BlendCrossFadeType)reader.ReadByte();
LimitRepetition = reader.ReadByte(); LimitRepetition = reader.ReadByte();
RandomType = reader.ReadBoolean(); RandomType = reader.ReadBoolean();
VolumeStepThreshold = reader.ReadUInt32(); VolumeStepThreshold = reader.ReadUInt32();
@@ -231,8 +217,6 @@ public partial class AudioObject : IBinarySerializable
writer.Write(Haptic); writer.Write(Haptic);
writer.Write((byte)ContainerType); writer.Write((byte)ContainerType);
writer.Write(ContainerPlayMode); writer.Write(ContainerPlayMode);
writer.Write(BlendRanges);
writer.Write((byte)BlendCrossFadeType);
writer.Write(LimitRepetition); writer.Write(LimitRepetition);
writer.Write(RandomType); writer.Write(RandomType);
writer.Write(VolumeStepThreshold); writer.Write(VolumeStepThreshold);
@@ -25,7 +25,8 @@ public partial class MusicContainer : IBinarySerializable
/// <summary> /// <summary>
/// 0 = 随机播放 /// 0 = 随机播放
/// 1 = 顺序播放 /// 1 = 顺序播放
/// 2 = 同时播放 /// 2 = 混合播放
/// 3 = 切换播放
/// </summary> /// </summary>
public ContainerType ContainerType { get; set; } public ContainerType ContainerType { get; set; }
@@ -45,9 +45,20 @@ public partial class MusicTransition : IBinarySerializable
public AlignMode AlignMode { get; set; } public AlignMode AlignMode { get; set; }
/// <summary> /// <summary>
/// /// 0 = Start
/// 1 = Same Time
/// </summary> /// </summary>
public uint Segment { get; set; } public SyncPoint SyncPoint { get; set; }
/// <summary>
/// samples
/// </summary>
public uint StartOffset { get; set; }
/// <summary>
/// samples
/// </summary>
public uint EndOffset { get; set; }
public void DeSerialize(BinaryReader reader) public void DeSerialize(BinaryReader reader)
@@ -58,7 +69,9 @@ public partial class MusicTransition : IBinarySerializable
FadeInTime = reader.ReadSingle(); FadeInTime = reader.ReadSingle();
FadeInOffset = reader.ReadSingle(); FadeInOffset = reader.ReadSingle();
AlignMode = (AlignMode)reader.ReadByte(); AlignMode = (AlignMode)reader.ReadByte();
Segment = reader.ReadUInt32(); SyncPoint = (SyncPoint)reader.ReadByte();
StartOffset = reader.ReadUInt32();
EndOffset = reader.ReadUInt32();
} }
public void Serialize(BinaryWriter writer) public void Serialize(BinaryWriter writer)
@@ -69,7 +82,9 @@ public partial class MusicTransition : IBinarySerializable
writer.Write(FadeInTime); writer.Write(FadeInTime);
writer.Write(FadeInOffset); writer.Write(FadeInOffset);
writer.Write((byte)AlignMode); writer.Write((byte)AlignMode);
writer.Write(Segment); writer.Write((byte)SyncPoint);
writer.Write(StartOffset);
writer.Write(EndOffset);
} }
} }
@@ -244,7 +244,7 @@ namespace OCES.Audio
{ {
// ── 启动默认音乐与环境音 ── // ── 启动默认音乐与环境音 ──
// 触发一次初始状态,让音乐系统从默认状态开始匹配 // 触发一次初始状态,让音乐系统从默认状态开始匹配
SetState(GameState.Home); //SetState(GameState.Home);
} }
AudioObject ResolveSwitchContainer(AudioObject switchContainer) AudioObject ResolveSwitchContainer(AudioObject switchContainer)
@@ -52,6 +52,12 @@ namespace OCES.Audio
Playing, // 已经开始播放 Playing, // 已经开始播放
Finished, Finished,
} }
public enum SyncPoint
{
Start,
SameAsCurrentSegment,
}
public interface IBinarySerializable public interface IBinarySerializable
{ {
+1 -1
View File
@@ -7,7 +7,7 @@ namespace OCES
{ {
public class SetStateBind : MonoBehaviour public class SetStateBind : MonoBehaviour
{ {
public GameState targetGameState; public TileMaterial targetGameState;
public bool enableLowpass; public bool enableLowpass;
public Text buttonText; public Text buttonText;