internal static PostEffect Parse(BinaryReader reader, ushort version) { // v1 (BFME II) was hardcoded to store LookupTable's parameters. // v2 added a more flexible structure, generically storing the effect name and parameters. var result = new PostEffect { Name = reader.ReadUInt16PrefixedAsciiString() }; if (version >= 2) { var numParameters = reader.ReadUInt32(); result.Parameters = new PostEffectParameter[numParameters]; for (var i = 0; i < numParameters; i++) { result.Parameters[i] = PostEffectParameter.Parse(reader); } } else { result.BlendFactor = reader.ReadSingle(); result.LookupImage = reader.ReadUInt16PrefixedAsciiString(); } return(result); }
internal static PostEffectsChunk Parse(BinaryReader reader, MapParseContext context) { return(ParseAsset(reader, context, version => { var numPostEffects = version >= 2 ? reader.ReadUInt32() : reader.ReadByte(); var postEffects = new PostEffect[numPostEffects]; for (var i = 0; i < numPostEffects; i++) { postEffects[i] = PostEffect.Parse(reader, version); } return new PostEffectsChunk { PostEffects = postEffects }; })); }