///////////////////////////////////////////////////////////////////////////////////////////// //// Force Feedback (FFB) // Register CB function that takes a C# object as userdata public void FfbRegisterGenCB(FfbCbFunc cb, object data) { // Free existing GCHandle (if exists) if (hFfbUserData.IsAllocated && hFfbUserData.Target != null) { hFfbUserData.Free(); } // Convert object to pointer hFfbUserData = GCHandle.Alloc(data); // Apply the user-defined CB function UserFfbCB = new FfbCbFunc(cb); wf = new WrapFfbCbFunc(WrapperFfbCB); _FfbRegisterGenCB(wf, (IntPtr)hFfbUserData); }
///////////////////////////////////////////////////////////////////////////////////////////// //// Force Feedback (FFB) // Register CB function that takes a C# object as userdata public void FfbRegisterGenCB(FfbCbFunc cb, object data) { // Free existing GCHandle (if exists) if (hFfbUserData.IsAllocated && hFfbUserData.Target != null) hFfbUserData.Free(); // Convert object to pointer hFfbUserData = GCHandle.Alloc(data); // Apply the user-defined CB function UserFfbCB = new FfbCbFunc(cb); wf = new WrapFfbCbFunc(WrapperFfbCB); _FfbRegisterGenCB(wf, (IntPtr)hFfbUserData); }