예제 #1
0
        public void Remove(ScriptState luaState, int index)
        {
            if (_cache.ContainsKey(index))
            {
                var o = _cache[index];
                _mappings.Remove(o);
                _cache.Remove(index);

                var disposer = o as IDisposable;
                if (disposer != null)
                {
                    disposer.Dispose();
                }

                // remove dotNet_objects value
                LuaCore.GetMetatable(luaState, DotNetObjectsMetatable.GlobalName);
                LuaCore.PushNull(luaState);
                LuaCore.RawSetIndex(luaState, -2, index);
            }
        }