Skip to content

Commit 9c84e3d

Browse files
committed
Fix tests, create basic STMG parse tests
1 parent 282d5c6 commit 9c84e3d

File tree

5 files changed

+67
-10
lines changed

5 files changed

+67
-10
lines changed
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
using ME3Tweaks.Wwiser.Model.RTPC;
2+
3+
namespace ME3Tweaks.Wwiser.Tests.GlobalSettingsTests;
4+
5+
public class STMGChunkTests
6+
{
7+
[TestCase("STMG_v134.bin", 134u)]
8+
public void STMGChunk_Reserializes(string filename, uint version)
9+
{
10+
var data = TestData.GetTestDataBytes(@"GlobalSettings", filename);
11+
var (serializer, result) = TestHelpers.Deserialize<ChunkContainer>(data, version);
12+
13+
var reserialized = TestHelpers.Serialize(result, version);
14+
Assert.That(reserialized, Is.EquivalentTo(data));
15+
}
16+
17+
[Test]
18+
public void STMGChunk_v134_Parses()
19+
{
20+
var data = TestData.GetTestDataBytes(@"GlobalSettings", @"STMG_v134.bin");
21+
var (serializer, result) = TestHelpers.Deserialize<ChunkContainer>(data, 134);
22+
23+
Assert.Multiple(() =>
24+
{
25+
Assert.That(result.Tag, Is.EqualTo("STMG"));
26+
Assert.That(result.Chunk, Is.InstanceOf<GlobalSettingsChunk>());
27+
});
28+
29+
if (result.Chunk is GlobalSettingsChunk stmg)
30+
{
31+
Assert.Multiple(() =>
32+
{
33+
Assert.That(stmg.StateGroupCount, Is.EqualTo(12));
34+
Assert.That(stmg.ParamCount, Is.EqualTo(84));
35+
36+
var switchGroup = stmg.SwitchGroups[0];
37+
Assert.That(switchGroup.RtpcType.Value, Is.EqualTo(RtpcType.RtpcTypeInner.GameParameter));
38+
Assert.That(switchGroup.Graph[0].Interp, Is.EqualTo(CurveInterpolation.Constant));
39+
40+
var param = stmg.Params[2];
41+
Assert.That(param.Value, Is.EqualTo( -96.0));
42+
});
43+
}
44+
}
45+
46+
}
Binary file not shown.

ME3Tweaks.Wwiser/Model/GlobalSettings/STMGAcousticTexture.cs renamed to ME3Tweaks.Wwiser/Model/GlobalSettings/STMGAcousticTextures.cs

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,24 @@
11
using BinarySerialization;
2+
using ME3Tweaks.Wwiser.Attributes;
23

34
namespace ME3Tweaks.Wwiser.Model.GlobalSettings;
45

6+
public class STMGAcousticTextures
7+
{
8+
[FieldOrder(1)]
9+
public uint TextureCount { get; set; }
10+
11+
[FieldOrder(2)]
12+
[FieldCount(nameof(TextureCount))]
13+
[SerializeWhenVersion(122, ComparisonOperator.LessThanOrEqual)]
14+
public List<AcousticTextureV122> TexturesV122 { get; set; } = new();
15+
16+
[FieldOrder(3)]
17+
[FieldCount(nameof(TextureCount))]
18+
[SerializeWhenVersion(122, ComparisonOperator.GreaterThan)]
19+
public List<AcousticTextureV126> TexturesV126 { get; set; } = new();
20+
}
21+
522
public abstract class AcousticTexture : AkIdentifiable;
623

724
public class AcousticTextureV122 : AcousticTexture

ME3Tweaks.Wwiser/Model/GlobalSettings/STMGParam.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ public enum TransitionRampingType : uint
3535
FilteringOverTime
3636
}
3737

38-
public enum BuiltInParam : uint
38+
public enum BuiltInParam : byte
3939
{
4040
None,
4141
StartDistance,

ME3Tweaks.Wwiser/Model/GlobalSettingsChunk.cs

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -45,22 +45,16 @@ public class GlobalSettingsChunk : Chunk
4545
[FieldCount(nameof(ParamCount))]
4646
[SerializeWhenVersion(38, ComparisonOperator.GreaterThan)]
4747
public List<STMGParam> Params { get; set; } = new();
48-
48+
4949
[FieldOrder(11)]
5050
[SerializeWhenVersion(118, ComparisonOperator.GreaterThan)]
51-
public uint TextureCount { get; set; }
51+
public STMGAcousticTextures Textures { get; set; } = new();
5252

5353
[FieldOrder(12)]
54-
[SerializeWhenVersion(118, ComparisonOperator.GreaterThan)]
55-
[Subtype(nameof(BankSerializationContext.Version), 122, typeof(AcousticTextureV122), RelativeSourceMode = RelativeSourceMode.SerializationContext)]
56-
[SubtypeDefault(typeof(AcousticTextureV126))]
57-
public List<AcousticTexture> Textures { get; set; } = new();
58-
59-
[FieldOrder(13)]
6054
[SerializeWhenVersionBetween(119, 122)]
6155
public uint ReverberatorCount { get; set; }
6256

63-
[FieldOrder(14)]
57+
[FieldOrder(13)]
6458
[FieldCount(nameof(ReverberatorCount))]
6559
[SerializeWhenVersionBetween(119, 122)]
6660
public List<STMGReverberator> Reverberators { get; set; } = new();

0 commit comments

Comments
 (0)