//public void HookBase(HookPoint hookPoint, HookOrder order, NLua.LuaFunction callback) //{ // if (initialized) // hookPoint.HookBase(this, new HookAction<Object>((ref HookContext ctx, ref Object args) => // { // callback.Call(ctx, args); // })); // else // { // lock (desiredHooks) // desiredHooks.Add(new HookEntry // { // hookPoint = hookPoint, // callback = new HookAction<Object>((ref HookContext ctx, ref Object args) => // { // callback.Call(ctx, args); // }), // order = order // }); // } //} public void Unhook(HookPoint hookPoint) { if (initialized) { hookPoint.Unhook(this); } else { lock (desiredHooks) { int i = 0; foreach (var h in desiredHooks) { if (h.hookPoint == hookPoint) { desiredHooks.RemoveAt(i); break; } i++; } } } }