Skip to content

Commit e47b3ac

Browse files
WWise refactor and Wuthering Waves, Neverness To Everness update
2 parents 4099697 + 87fe6ed commit e47b3ac

4 files changed

Lines changed: 50 additions & 4 deletions

File tree

CUE4Parse

Submodule CUE4Parse updated 246 files

FModel/ViewModels/AudioPlayerViewModel.cs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -617,6 +617,16 @@ private bool TryConvertCriware()
617617
_ => throw new NotSupportedException()
618618
};
619619

620+
if (wavData.Length is 0)
621+
{
622+
if (TryConvert(out var wavFilePathFallback))
623+
{
624+
var newAudioFallback = new AudioFile(SelectedAudioFile.Id, new FileInfo(wavFilePathFallback));
625+
Replace(newAudioFallback);
626+
return true;
627+
}
628+
}
629+
620630
string wavFilePath = Path.Combine(
621631
UserSettings.Default.AudioDirectory,
622632
SelectedAudioFile.FilePath.TrimStart('/'));

FModel/ViewModels/CUE4ParseViewModel.cs

Lines changed: 35 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1108,7 +1108,7 @@ public void ExtractAndScroll(CancellationToken cancellationToken, string fullPat
11081108
TabControl.SelectedTab.AddImage(sourceFile.SubstringAfterLast('/'), false, bitmap, false, updateUi);
11091109
return false;
11101110
}
1111-
// The Dark Pictures Anthology
1111+
// Supermassive Games (for example - The Dark Pictures Anthology: House of Ashes etc.)
11121112
case UExternalSource when (isNone || saveAudio) && pointer.Object.Value is UExternalSource externalSource:
11131113
{
11141114
var audioName = Path.GetFileNameWithoutExtension(externalSource.ExternalSourcePath);
@@ -1166,6 +1166,10 @@ public void ExtractAndScroll(CancellationToken cancellationToken, string fullPat
11661166
case UAkMediaAssetData when isNone || saveAudio:
11671167
case USoundWave when isNone || saveAudio:
11681168
{
1169+
// If UAkMediaAsset exists in the same package it should be used to handle the audio instead (because it contains actual audio name)
1170+
if (pointer.Object.Value is UAkMediaAssetData dataObj && dataObj.Outer is UAkMediaAsset)
1171+
return false;
1172+
11691173
var shouldDecompress = UserSettings.Default.CompressedAudioMode == ECompressedAudio.PlayDecompressed;
11701174
pointer.Object.Value.Decode(shouldDecompress, out var audioFormat, out var data);
11711175
var hasAf = !string.IsNullOrEmpty(audioFormat);
@@ -1178,6 +1182,36 @@ public void ExtractAndScroll(CancellationToken cancellationToken, string fullPat
11781182
SaveAndPlaySound(TabControl.SelectedTab.Entry.PathWithoutExtension.Replace('\\', '/'), audioFormat, data, saveAudio);
11791183
return false;
11801184
}
1185+
case UAkMediaAsset when (isNone || saveAudio) && pointer.Object.Value is UAkMediaAsset akMediaAsset:
1186+
{
1187+
var audioName = akMediaAsset.MediaName;
1188+
if (akMediaAsset.CurrentMediaAssetData?.TryLoad<UAkMediaAssetData>(out var akMediaAssetData) is true)
1189+
{
1190+
var shouldDecompress = UserSettings.Default.CompressedAudioMode is ECompressedAudio.PlayDecompressed;
1191+
akMediaAssetData.Decode(shouldDecompress, out var audioFormat, out var data);
1192+
1193+
SaveAndPlaySound(audioName, audioFormat, data, saveAudio);
1194+
}
1195+
return false;
1196+
}
1197+
case UAkAudioEventData when (isNone || saveAudio) && pointer.Object.Value is UAkAudioEventData akAudioEventData:
1198+
{
1199+
var shouldDecompress = UserSettings.Default.CompressedAudioMode is ECompressedAudio.PlayDecompressed;
1200+
foreach (var mediaIndex in akAudioEventData.MediaList)
1201+
{
1202+
if (mediaIndex.TryLoad<UAkMediaAsset>(out var akMediaAsset))
1203+
{
1204+
if (akMediaAsset.CurrentMediaAssetData?.TryLoad<UAkMediaAssetData>(out var akMediaAssetData) is true)
1205+
{
1206+
var audioName = akMediaAsset.MediaName ?? $"{akAudioEventData.Outer.Name} ({akMediaAsset.ID})";
1207+
akMediaAssetData.Decode(shouldDecompress, out var audioFormat, out var data);
1208+
1209+
SaveAndPlaySound(audioName, audioFormat, data, saveAudio);
1210+
}
1211+
}
1212+
}
1213+
return false;
1214+
}
11811215
case UWorld when isNone && UserSettings.Default.PreviewWorlds:
11821216
case UBlueprintGeneratedClass when isNone && UserSettings.Default.PreviewWorlds && TabControl.SelectedTab.ParentExportType switch
11831217
{

FModel/ViewModels/GameFileViewModel.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -235,12 +235,14 @@ private Task ResolveByPackageAsync(EResolveCompute resolve)
235235
UObjectRedirector => (EAssetCategory.ObjectRedirector, EBulkType.None),
236236
UPhysicalMaterial => (EAssetCategory.PhysicalMaterial, EBulkType.None),
237237

238-
USoundAtomCue or UAkAudioEvent or USoundCue or UFMODEvent => (EAssetCategory.AudioEvent, EBulkType.Audio),
238+
USoundAtomCue or UAkAudioEvent or USoundCue or UFMODEvent
239+
or UAkAssetData or UAkAssetPlatformData => (EAssetCategory.AudioEvent, EBulkType.Audio),
239240

240241
UFMODBank or UAkAudioBank or UAtomWaveBank or UAkInitBank => (EAssetCategory.SoundBank, EBulkType.Audio),
241242

242243
UWwiseAssetLibrary or USoundBase or UAkMediaAssetData or UAtomCueSheet
243-
or USoundAtomCueSheet or UAkAudioType or UExternalSource or UExternalSourceBank => (EAssetCategory.Audio, EBulkType.Audio),
244+
or USoundAtomCueSheet or UAkAudioType or UExternalSource or UExternalSourceBank
245+
or UAkMediaAsset => (EAssetCategory.Audio, EBulkType.Audio),
244246

245247
UFileMediaSource => (EAssetCategory.Video, EBulkType.None),
246248
UFont or UFontFace or USMGLocaleFontUMG => (EAssetCategory.Font, EBulkType.None),

0 commit comments

Comments
 (0)