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; }