public static ReloadConfigConsoleFunction Init()
        {
            if (instance != null)
            {
                throw new InvalidOperationException();
            }

            // We have to replace the original function with our custom one
            // So we first need to find it in the console function list
            var consoleFunctionList = Engine.ConsoleFunctionList;

            for (int x = 0; x < consoleFunctionList.Count; x++)
            {
                IConsoleFunctionClass currentConsoleFunction = ((IVectorClass <IConsoleFunctionClass>)consoleFunctionList)[x];

                // Check if the current console function is the reloadconfig function
                if (currentConsoleFunction.Name.Equals("reloadconfig", StringComparison.InvariantCultureIgnoreCase))
                {
                    // Ok, instantiate replacement
                    instance = new ReloadConfigConsoleFunction(currentConsoleFunction);
                    instance.AttachToUnmanagedObject();
                    instance.RegisterManagedObject();

                    // It is ok to replace the function now
                    ((IVectorClass <IConsoleFunctionClass>)consoleFunctionList)[x] = instance.AsUnmanagedObject();

                    return(instance);
                }
            }

            throw new InvalidOperationException("Console functions not loaded");
        }
        private ReloadConfigConsoleFunction(IConsoleFunctionClass originalCommand)
            : base(originalCommand.Name, originalCommand.Help)
        {
            disposedResources         = false;
            originalPointer           = originalCommand.ConsoleFunctionClassPointer;
            originalIsManagedFunction = originalCommand.IsManagedConsoleFunction;

            OriginalFunction = originalCommand;
        }