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)); }
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); }
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)); }
/// <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)); }
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); }
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)); }
private GLua(Lua_State luaState) { this.State = luaState; this.LuaBase = JIT.ConvertInstance <ILuaBase>(luaState.Luabase); }
private GLua(lua_State luaState) { State = luaState; LuaBase = JIT.ConvertInstance <ILuaBase>(luaState.luabase); LuaInterface = JIT.ConvertInstance <ILuaInterface>(luaState.luabase); }