public bool Initialize(ImGuiIOPtr io) { io.SetBackendPlatformName("Unity Input Manager"); // setup backend info and capabilities io.BackendFlags |= ImGuiBackendFlags.HasMouseCursors; // can honor GetMouseCursor() values io.BackendFlags &= ~ImGuiBackendFlags.HasSetMousePos; // can't honor io.WantSetMousePos requests // io.BackendFlags |= ImGuiBackendFlags.HasGamepad; // set by UpdateGamepad() unsafe { #if IMGUI_FEATURE_CUSTOM_ASSERT PlatformCallbacks.SetClipboardFunctions( GetClipboardTextCallback, SetClipboardTextCallback, LogAssertCallback, DebugBreakCallback); #else PlatformCallbacks.SetClipboardFunctions( GetClipboardTextCallback, SetClipboardTextCallback); #endif } _callbacks.Assign(io); // assign platform callbacks io.ClipboardUserData = IntPtr.Zero; if (_iniSettings != null) // ini settings { io.SetIniFilename(null); // handle ini saving manually ImGui.LoadIniSettingsFromMemory(_iniSettings.Load()); // call after CreateContext(), before first call to NewFrame() } SetupKeyboard(io); // sets key mapping, text input, and IME return(true); }