Beispiel #1
0
 /// <summary>
 /// Adds an engine binaries directory.
 /// </summary>
 public void AddBinariesDirectory(string inDirectory, bool isGameDirectory)
 {
     using (FStringUnsafe inDirectoryUnsafe = new FStringUnsafe(inDirectory))
     {
         Native_FModuleManager.AddBinariesDirectory(Address, ref inDirectoryUnsafe.Array, isGameDirectory);
     }
 }
Beispiel #2
0
 /// <summary>
 /// Set the game binaries directory
 /// </summary>
 /// <param name="inDirectory">The game binaries directory.</param>
 public void SetGameBinariesDirectory(string inDirectory)
 {
     using (FStringUnsafe inDirectoryUnsafe = new FStringUnsafe(inDirectory))
     {
         Native_FModuleManager.SetGameBinariesDirectory(Address, ref inDirectoryUnsafe.Array);
     }
 }
Beispiel #3
0
 /// <summary>
 /// Determines if a module with the given name exists, regardless of whether it is currently loaded.
 /// </summary>
 /// <param name="moduleName">Name of the module to look for.</param>
 /// <returns>Whether the module exists.</returns>
 public bool ModuleExists(string moduleName)
 {
     using (FStringUnsafe moduleNameUnsafe = new FStringUnsafe(moduleName))
     {
         return(Native_FModuleManager.ModuleExists(Address, ref moduleNameUnsafe.Array));
     }
 }
Beispiel #4
0
 /// <summary>
 /// Gets the game binaries directory
 /// </summary>
 public string GetGameBinariesDirectory()
 {
     using (FStringUnsafe resultUnsafe = new FStringUnsafe())
     {
         Native_FModuleManager.GetGameBinariesDirectory(Address, ref resultUnsafe.Array);
         return(resultUnsafe.Value);
     }
 }
Beispiel #5
0
 public static FModuleManager Get()
 {
     if (instance == null)
     {
         instance         = new FModuleManager();
         instance.Address = Native_FModuleManager.Get();
     }
     return(instance);
 }
Beispiel #6
0
        /// <summary>
        /// Queries information about a specific module name.
        /// </summary>
        /// <param name="moduleName">Module to query status for.</param>
        /// <param name="outModuleStatus">Status of the specified module.</param>
        /// <returns>true if the module was found and the OutModuleStatus is valid, false otherwise.</returns>
        public bool QueryModule(FName moduleName, out FModuleStatus outModuleStatus)
        {
            FModuleStatusNative outModuleStatusUnsafe = new FModuleStatusNative();
            bool result = Native_FModuleManager.QueryModule(Address, ref moduleName, ref outModuleStatusUnsafe);

            outModuleStatus = new FModuleStatus(outModuleStatusUnsafe);
            outModuleStatusUnsafe.Dispose();
            return(result);
        }
Beispiel #7
0
 /// <summary>
 /// Finds module files on the disk for loadable modules matching the specified wildcard.
 /// </summary>
 /// <param name="wildcardWithoutExtension">Filename part (no path, no extension, no build config info) to search for.</param>
 /// <returns>List of modules found.</returns>
 public FName[] FindModules(string wildcardWithoutExtension)
 {
     using (FStringUnsafe wildcardWithoutExtensionUnsafe = new FStringUnsafe(wildcardWithoutExtension))
         using (TArrayUnsafe <FName> modulesUnsafe = new TArrayUnsafe <FName>())
         {
             Native_FModuleManager.FindModules(Address, ref wildcardWithoutExtensionUnsafe.Array, modulesUnsafe.Address);
             return(modulesUnsafe.ToArray());
         }
 }
Beispiel #8
0
        /// <summary>
        /// Checks to see if the specified module exists and is compatible with the current engine version.
        /// </summary>
        /// <param name="inModuleName">The base name of the module file.</param>
        /// <returns>true if module exists and is up to date, false otherwise.</returns>
        public bool IsModuleUpToDate(FName inModuleName)
        {
            // !IS_MONOLITHIC
            if (Native_FModuleManager.IsModuleUpToDate == null)
            {
                // Default to true or false?
                return(false);
            }

            return(Native_FModuleManager.IsModuleUpToDate(Address, ref inModuleName));
        }
Beispiel #9
0
        /// <summary>
        /// Gets the filename for a module. The return value is a full path of a module known to the module manager.
        /// </summary>
        public string GetModuleFilename(FName moduleName)
        {
            // !IS_MONOLITHIC
            if (Native_FModuleManager.IsModuleUpToDate == null)
            {
                return(null);
            }

            using (FStringUnsafe resultUnsafe = new FStringUnsafe())
            {
                Native_FModuleManager.GetModuleFilename(Address, ref moduleName, ref resultUnsafe.Array);
                return(resultUnsafe.Value);
            }
        }
Beispiel #10
0
        /// <summary>
        /// Queries information about all of the currently known modules.
        /// </summary>
        /// <returns>Status of all modules.</returns>
        public FModuleStatus[] QueryModules()
        {
            List <FModuleStatus> modules = new List <FModuleStatus>();

            using (TArrayUnsafe <FModuleStatusNative> modulesUnsafe = new TArrayUnsafe <FModuleStatusNative>())
            {
                Native_FModuleManager.QueryModules(Address, modulesUnsafe.Address);
                foreach (FModuleStatusNative moduleStatusUnsafe in modulesUnsafe)
                {
                    modules.Add(new FModuleStatus(moduleStatusUnsafe));
                }
            }
            return(modules.ToArray());
        }
Beispiel #11
0
 /// <summary>
 /// Checks whether the specified module is currently loaded.
 ///
 /// This is an O(1) operation.
 /// </summary>
 /// <param name="moduleName">The base name of the module file.  Should not include path, extension or platform/configuration info.  This is just the "module name" part of the module file name.  Names should be globally unique.</param>
 /// <returns>true if module is currently loaded, false otherwise.</returns>
 public bool IsModuleLoaded(FName moduleName)
 {
     return(Native_FModuleManager.IsModuleLoaded(Address, ref moduleName));
 }
Beispiel #12
0
 /// <summary>
 /// Adds a module to our list of modules, unless it's already known.
 /// </summary>
 /// <param name="moduleName">The base name of the module file.  Should not include path, extension or platform/configuration info.  This is just the "name" part of the module file name.  Names should be globally unique.</param>
 public void AddModule(FName moduleName)
 {
     Native_FModuleManager.AddModule(Address, ref moduleName);
 }
Beispiel #13
0
 /// <summary>
 /// Determines whether the specified module contains UObjects.  The module must already be loaded into
 /// memory before calling this function.
 /// </summary>
 /// <param name="moduleName">ModuleName Name of the loaded module to check.</param>
 /// <returns>True if the module was found to contain UObjects, or false if it did not (or wasn't loaded.)</returns>
 public bool DoesLoadedModuleHaveUObjects(FName moduleName)
 {
     return(Native_FModuleManager.DoesLoadedModuleHaveUObjects(Address, ref moduleName));
 }
Beispiel #14
0
 /// <summary>
 /// Called by the engine at startup to let the Module Manager know that it's now
 /// safe to process new UObjects discovered by loading C++ modules.
 /// </summary>
 public void StartProcessingNewlyLoadedObjects()
 {
     Native_FModuleManager.StartProcessingNewlyLoadedObjects(Address);
 }
Beispiel #15
0
 /// <summary>
 /// Gets the number of loaded modules.
 /// </summary>
 /// <returns>The number of modules.</returns>
 public int GetModuleCount()
 {
     return(Native_FModuleManager.GetModuleCount(Address));
 }
Beispiel #16
0
 /// <summary>
 /// Loads the specified module, checking to ensure it exists.
 /// </summary>
 /// <param name="moduleName">The base name of the module file.  Should not include path, extension or platform/configuration info.  This is just the "module name" part of the module file name.  Names should be globally unique.</param>
 /// <returns>The loaded module, or nullptr if the load operation failed.</returns>
 public IntPtr LoadModuleChecked(FName moduleName)
 {
     return(Native_FModuleManager.LoadModuleChecked(Address, ref moduleName));
 }
Beispiel #17
0
 /// <summary>
 /// Loads a module in memory then calls PostLoad.
 /// </summary>
 /// <param name="moduleName">The name of the module to load.</param>
 /// <returns>true on success, false otherwise.</returns>
 public bool LoadModuleWithCallback(FName moduleName)
 {
     return(Native_FModuleManager.LoadModuleWithCallback(Address, ref moduleName, IntPtr.Zero));
 }
Beispiel #18
0
 /// <summary>
 /// Loads the specified module and returns a result.
 /// </summary>
 /// <param name="moduleName">The base name of the module file.  Should not include path, extension or platform/configuration info.  This is just the "module name" part of the module file name.  Names should be globally unique.</param>
 /// <param name="failureReason">Will contain the result.</param>
 /// <returns>The loaded module (null if the load operation failed).</returns>
 public IntPtr LoadModuleWithFailureReason(FName moduleName, out EModuleLoadResult failureReason)
 {
     return(Native_FModuleManager.LoadModuleWithFailureReason(Address, ref moduleName, out failureReason));
 }