feat: implement volume step feature

- Add volume step functionality with VolumeStepResolver class
- Add VolumeStepThreshold, Volume, and VolumeStep properties to AudioObject
- Integrate volume step resolution in SfxSystem for dynamic audio volume control
This commit is contained in:
2026-04-13 16:56:34 +08:00
parent 0f204aa794
commit 31d117851e
15 changed files with 192 additions and 11 deletions
@@ -130,6 +130,23 @@ public partial class AudioObject : IBinarySerializable
/// </summary>
public bool RandomType { get; set; }
/// <summary>
/// Volume Step阈值 ms
/// </summary>
public uint VolumeStepThreshold { get; set; }
/// <summary>
/// 起始音量
/// dB
/// </summary>
public int Volume { get; set; }
/// <summary>
/// 音量变化幅度
/// dB
/// </summary>
public int VolumeStep { get; set; }
public void DeSerialize(BinaryReader reader)
{
@@ -166,6 +183,9 @@ public partial class AudioObject : IBinarySerializable
BlendCrossFadeType = (BlendCrossFadeType)reader.ReadByte();
LimitRepetition = reader.ReadByte();
RandomType = reader.ReadBoolean();
VolumeStepThreshold = reader.ReadUInt32();
Volume = reader.ReadInt32();
VolumeStep = reader.ReadInt32();
}
public void Serialize(BinaryWriter writer)
@@ -202,6 +222,9 @@ public partial class AudioObject : IBinarySerializable
writer.Write((byte)BlendCrossFadeType);
writer.Write(LimitRepetition);
writer.Write(RandomType);
writer.Write(VolumeStepThreshold);
writer.Write(Volume);
writer.Write(VolumeStep);
}
}