示例#1
0
 // Token: 0x06000041 RID: 65 RVA: 0x0000A540 File Offset: 0x00008740
 private void BuildCCallbackBase()
 {
     m_CallbackBaseVTable = new CCallbackBaseVTable
     {
         m_RunCallback          = new CCallbackBaseVTable.RunCBDel(OnRunCallback),
         m_RunCallResult        = new CCallbackBaseVTable.RunCRDel(OnRunCallResult),
         m_GetCallbackSizeBytes = new CCallbackBaseVTable.GetCallbackSizeBytesDel(OnGetCallbackSizeBytes)
     };
     m_pVTable = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(CCallbackBaseVTable)));
     Marshal.StructureToPtr(m_CallbackBaseVTable, m_pVTable, false);
     m_CCallbackBase = new CCallbackBase
     {
         m_vfptr          = m_pVTable,
         m_nCallbackFlags = 0,
         m_iCallback      = CallbackIdentities.GetCallbackIdentity(typeof(T))
     };
     m_pCCallbackBase = GCHandle.Alloc(m_CCallbackBase, GCHandleType.Pinned);
 }
示例#2
0
 // Token: 0x06000022 RID: 34 RVA: 0x0000A14C File Offset: 0x0000834C
 public void Register(Callback <T> .DispatchDelegate func)
 {
     if (func == null)
     {
         throw new Exception("Callback function must not be null.");
     }
     if ((m_CCallbackBase.m_nCallbackFlags & 1) == 1)
     {
         Unregister();
     }
     if (m_bGameServer)
     {
         SetGameserverFlag();
     }
     m_Func = func;
     NativeMethods.SteamAPI_RegisterCallback(m_pCCallbackBase.AddrOfPinnedObject(), CallbackIdentities.GetCallbackIdentity(typeof(T)));
 }