void OnDestroy() { Log("Stopping listening to bone data"); listener.KinectService.StopListeningBoneData(); running = false; ThreadHelper.CancelSynchronousIo(threadID); Log("Closing the listener pipe"); listenerReceiver.Dispose(); Log("Closing the service pipe"); Close(); Log("Freeing the library"); NativeUtil.FreeLibrary(nativeLibrary); }
void Awake() { DontDestroyOnLoad(this); Log($"Native binaries path: {BinariesFolder}"); if (!Directory.Exists(BinariesFolder)) { Error( "Native binaries path does not exist (and thus has no binaries)! Creating empty folder and aborting..."); Directory.CreateDirectory(BinariesFolder); Destroy(this); return; } var nativeDllPath = Path.Combine(BinariesFolder, $"{NATIVE_DLL_NAME}.dll"); if (!File.Exists(nativeDllPath)) { Error($"{NATIVE_DLL_NAME}.dll does not exist in the native binaries path! Aborting..."); Destroy(this); return; } AppDomain.CurrentDomain.AssemblyResolve += ResolveNatives; nativeLibrary = NativeUtil.LoadLibrary(nativeDllPath); InitializeConnection = (Action)Marshal.GetDelegateForFunctionPointer( NativeUtil.GetProcAddress(nativeLibrary, nameof(InitializeConnection)), typeof(Action)); Close = (Action)Marshal.GetDelegateForFunctionPointer( NativeUtil.GetProcAddress(nativeLibrary, nameof(Close)), typeof(Action)); //Log( // $"Address of {nameof(InitializeConnection)}: {NativeUtil.GetProcAddress(nativeLibrary, nameof(InitializeConnection))}; {nameof(Close)}: {NativeUtil.GetProcAddress(nativeLibrary, nameof(Close))}"); InitializeService(); }