Пример #1
0
        /// <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);
        }
Пример #2
0
        /// <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);
        }