Exemplo n.º 1
0
        public static TClass Load <TClass>(string dllname, string interfaceVersionString) where TClass : class
        {
            var factory  = LoadCreateInterface(dllname);
            var classptr = factory(interfaceVersionString, IntPtr.Zero);

            return(JIT.ConvertInstance <TClass>(classptr));
        }
Exemplo n.º 2
0
        public static int Open(ref lua_State state)
        {
            ClientConsole.RerouteConsole();
            ClientConsole.Color = new Color(0, 150, 255);
            Lua = GLua.Get(state);

            Lua.CreateTable();

            Lua.Push <Action <string> >(Dump);
            Lua.SetField(-2, "Dump");

            Lua.SetField(GLua.LUA_GLOBALSINDEX, "csluaview");

            var container = NativeInterface.Load <INetworkStringTableContainer>("engine", StringTableInterfaceName.CLIENT);
            var tablePtr  = container.FindTable("client_lua_files");
            var table     = JIT.ConvertInstance <INetworkStringTable>(tablePtr);

            Console.WriteLine($"dotnet table ptr: {tablePtr.ToString("X8")}");
            //var path0 = table.GetString(0); //hangs here

            //for (int i = 0; i < table.GetNumStrings(); i++)
            //{
            //}

            //var stringTable = StringTable.FindTable<int>("client_lua_files");
            //var luaFiles = stringTable.Select(s => new LuaFile { Path = s.String, CRC = s.UserData }).ToList();

            Console.WriteLine("DotNet Clientside Lua Viewer Loaded!");
            return(0);
        }
Exemplo n.º 3
0
        public static IServer GetIServer()
        {
            var ptrptr = SymbolFinder.ResolveOnBinary("engine.dll", IServer_sig);//this is IServer**
            var ptr    = Marshal.ReadIntPtr(ptrptr);

            return(JIT.ConvertInstance <IServer>(ptr));
        }
Exemplo n.º 4
0
        /// <summary>
        /// Creates Instance of <typeparamref name="TClass"/>, using a preloaded CreateInterface delegate from a Module in memory
        /// </summary>
        /// <typeparam name="TClass">Interface Wrapper/Representory Class</typeparam>
        /// <param name="factory">CreateInterface Delegate</param>
        /// <returns>Instance of <typeparamref name="TClass"/></returns>
        public static TClass GetFromFactory <TClass>(CreateInterfaceFn factory) where TClass : class
        {
            if (factory == null)
            {
                return(null);
                //throw new JITEngineException("GetFromFactory called with NULL factory");
            }

            // Create Instance of TClass
            IntPtr classptr = factory(InterfaceVersions.GetInterfaceIdentifier(typeof(TClass)), IntPtr.Zero);

            // if not NULL cast Pointer to TClass via JIT Conversion. And Return
            return(classptr == IntPtr.Zero ? null : JIT.ConvertInstance <TClass>(classptr));
        }
Exemplo n.º 5
0
        private static INetworkStringTable FindTableInternal(string name)
        {
            if (container == null)
            {
                return(null);
            }
            var stringTablePointer = container.FindTable(name);

            if (stringTablePointer == IntPtr.Zero)
            {
                return(null);
            }
            var stringTable = JIT.ConvertInstance <INetworkStringTable>(stringTablePointer);

            return(stringTable);
        }
Exemplo n.º 6
0
        public static TClass GetFromFactory <TClass>(CreateInterfaceFn factory) where TClass : class
        {
            if (factory == null)
            {
                return(null);
                //throw new JITEngineException("GetFromFactory called with NULL factory");
            }

            IntPtr classptr = factory(InterfaceVersions.GetInterfaceIdentifier(typeof(TClass)), IntPtr.Zero);

            if (classptr == IntPtr.Zero)
            {
                return(null);
            }

            return(JIT.ConvertInstance <TClass>(classptr));
        }
Exemplo n.º 7
0
 private GLua(Lua_State luaState)
 {
     this.State   = luaState;
     this.LuaBase = JIT.ConvertInstance <ILuaBase>(luaState.Luabase);
 }
Exemplo n.º 8
0
 private GLua(lua_State luaState)
 {
     State        = luaState;
     LuaBase      = JIT.ConvertInstance <ILuaBase>(luaState.luabase);
     LuaInterface = JIT.ConvertInstance <ILuaInterface>(luaState.luabase);
 }