/// <summary> /// Loads the given file specified by PackagePath and /// returns the serialized UnrealPackage. /// </summary> public static UnrealPackage LoadPackage(string packagePath, FileAccess fileAccess = FileAccess.Read) { var packageName = Path.GetFileNameWithoutExtension(packagePath); UPackageStream stream; if (packageName.EndsWith("_decrypted")) { stream = new UPackageStream(packagePath, FileMode.Open, fileAccess); Log.Info("Loading decrypted RL package"); } else { try { stream = new RLPackageStream(packagePath); Log.Info("Loading encrypted RL package"); } catch (InvalidDataException e) { stream = new UPackageStream(packagePath, FileMode.Open, fileAccess); stream.Position = 0; } } var package = new UnrealPackage(stream); package.Deserialize(stream); return(package); }
/// <summary> /// Loads the given file specified by PackagePath and /// returns the serialized UnrealPackage. /// </summary> public static UnrealPackage LoadPackage(string packagePath, FileAccess fileAccess = FileAccess.Read) { var stream = new UPackageStream(packagePath, FileMode.Open, fileAccess); var package = new UnrealPackage(stream); package.Deserialize(stream); return(package); }
/// <summary> /// Loads the given file specified by PackagePath and /// returns the serialized UnrealPackage. /// </summary> public static UnrealPackage LoadPackage(string packagePath, FileAccess fileAccess = FileAccess.Read) { var packageName = Path.GetFileNameWithoutExtension(packagePath); UPackageStream stream; if (packageName.EndsWith("_decrypted")) { stream = new UPackageStream(packagePath, FileMode.Open, fileAccess); Log.Info("Loading decrypted RL package"); } else { try { var rlStream = new RLPackageStream(packagePath); if (rlStream.decryptionState == RLUPKT.Core.DecryptionState.Success) { stream = rlStream; } else { return(null); } Log.Info("Loading encrypted RL package"); } catch (InvalidDataException e) { stream = new UPackageStream(packagePath, FileMode.Open, fileAccess) { Position = 0 }; } } var package = new UnrealPackage(stream); package.Deserialize(stream); FullyLoadImportPackages(package, Path.GetDirectoryName(packagePath)); Log.Info($"[LoadPackage] done Loading {packageName}"); return(package); }