private static void Shutdown() { Game.LogTrivialDebug($"[RAGENativeUI::Shared] Shutdown from '{System.AppDomain.CurrentDomain.FriendlyName}'"); // cleanup { // in case there is any visible menus when unloading the plugin NumberOfVisibleMenus -= UIMenu.NumberOfVisibleMenus; NumberOfVisiblePauseMenus -= TabView.NumberOfVisiblePauseMenus; Hooks.Shutdown(); } // dispose mapped file if (mappedFileAccessor != null) { data = null; mappedFileAccessor.SafeMemoryMappedViewHandle.ReleasePointer(); mappedFileAccessor.Dispose(); mappedFileAccessor = null; } if (mappedFile != null) { mappedFile.Dispose(); mappedFile = null; } }
static Shared() { Game.LogTrivialDebug($"[RAGENativeUI::Shared] Init from '{System.AppDomain.CurrentDomain.FriendlyName}'"); Game.LogTrivialDebug($"[RAGENativeUI::Shared] > sizeof(SharedData) = {sizeof(SharedData)}"); mappedFile = MemoryMappedFile.CreateOrOpen(MappedFileName, sizeof(SharedData)); mappedFileAccessor = mappedFile.CreateViewAccessor(0, sizeof(SharedData)); byte *ptr = null; mappedFileAccessor.SafeMemoryMappedViewHandle.AcquirePointer(ref ptr); data = (SharedData *)ptr; }