public static BlamSound GetXMA(GameCache cache, SoundCacheFileGestalt soundGestalt, Sound sound, int pitchRangeIndex, int permutationIndex, byte[] data) { int pitchRangeGestaltIndex = sound.SoundReference.PitchRangeIndex + pitchRangeIndex; int permutationGestaltIndex = soundGestalt.PitchRanges[pitchRangeGestaltIndex].FirstPermutationIndex + permutationIndex; var permutationSize = soundGestalt.GetPermutationSize(permutationGestaltIndex); var permutationOffset = soundGestalt.GetPermutationOffset(permutationGestaltIndex); byte[] permutationData = new byte[permutationSize]; Array.Copy(data, permutationOffset, permutationData, 0, permutationSize); return(new BlamSound(sound, permutationGestaltIndex, permutationData, cache.Version, soundGestalt)); }
public static BlamSound GetXMA(CacheFile cache, SoundCacheFileGestalt soundGestalt, Sound sound, int pitchRangeIndex, int permutationIndex, byte[] data) { if (cache.ResourceLayoutTable == null || cache.ResourceGestalt == null) { cache.LoadResourceTags(); } int pitchRangeGestaltIndex = sound.SoundReference.PitchRangeIndex + pitchRangeIndex; int permutationGestaltIndex = soundGestalt.PitchRanges[pitchRangeGestaltIndex].FirstPermutationIndex + permutationIndex; var permutationSize = soundGestalt.GetPermutationSize(permutationGestaltIndex); var permutationOffset = soundGestalt.GetPermutationOffset(permutationGestaltIndex); byte[] permutationData = new byte[permutationSize]; Array.Copy(data, permutationOffset, permutationData, 0, permutationSize); return(new BlamSound(sound, permutationGestaltIndex, permutationData, cache.Version, soundGestalt)); }