diff --git a/Assets/uDesktopDuplication/Examples/Scenes/Multiple Monitors Roundly.unity b/Assets/uDesktopDuplication/Examples/Scenes/Multiple Monitors Roundly.unity index 178c755..c92a21a 100644 Binary files a/Assets/uDesktopDuplication/Examples/Scenes/Multiple Monitors Roundly.unity and b/Assets/uDesktopDuplication/Examples/Scenes/Multiple Monitors Roundly.unity differ diff --git a/Assets/uDesktopDuplication/Examples/Scenes/Multiple Monitors.unity b/Assets/uDesktopDuplication/Examples/Scenes/Multiple Monitors.unity index 59c50ed..dabb2a6 100644 Binary files a/Assets/uDesktopDuplication/Examples/Scenes/Multiple Monitors.unity and b/Assets/uDesktopDuplication/Examples/Scenes/Multiple Monitors.unity differ diff --git a/Assets/uDesktopDuplication/Examples/Scripts/MultipleMonitorCreator.cs b/Assets/uDesktopDuplication/Examples/Scripts/MultipleMonitorCreator.cs index a747aa2..efd8ff5 100644 --- a/Assets/uDesktopDuplication/Examples/Scripts/MultipleMonitorCreator.cs +++ b/Assets/uDesktopDuplication/Examples/Scripts/MultipleMonitorCreator.cs @@ -68,10 +68,6 @@ public class MultipleMonitorCreator : MonoBehaviour { ResetRemoveTimer(); - // Sort monitors in coordinate order - var monitors = uDesktopDuplication.Manager.monitors; - monitors.Sort((a, b) => a.left - b.left); - // Create monitors for (int i = 0; i < uDesktopDuplication.Manager.monitorCount; ++i) { // Create monitor obeject @@ -104,6 +100,9 @@ public class MultipleMonitorCreator : MonoBehaviour info.mesh = mesh; monitors_.Add(info); } + + // Sort monitors in coordinate order + monitors_.Sort((a, b) => a.uddTexture.monitor.left - b.uddTexture.monitor.left); } void Clear() diff --git a/Assets/uDesktopDuplication/Plugins/x86_64/uDesktopDuplication.dll b/Assets/uDesktopDuplication/Plugins/x86_64/uDesktopDuplication.dll index 7de5804..bae1631 100644 Binary files a/Assets/uDesktopDuplication/Plugins/x86_64/uDesktopDuplication.dll and b/Assets/uDesktopDuplication/Plugins/x86_64/uDesktopDuplication.dll differ diff --git a/Assets/uDesktopDuplication/Scripts/Lib.cs b/Assets/uDesktopDuplication/Scripts/Lib.cs index 1458d68..1ed3b2f 100644 --- a/Assets/uDesktopDuplication/Scripts/Lib.cs +++ b/Assets/uDesktopDuplication/Scripts/Lib.cs @@ -85,6 +85,8 @@ public static class Lib [DllImport("uDesktopDuplication")] public static extern IntPtr GetRenderEventFunc(); [DllImport("uDesktopDuplication")] + public static extern int GetId(int id); + [DllImport("uDesktopDuplication")] public static extern MonitorState GetState(int id); [DllImport("uDesktopDuplication")] public static extern void GetName(int id, StringBuilder buf, int len); diff --git a/Plugins/uDesktopDuplication/uDesktopDuplication/Cursor.cpp b/Plugins/uDesktopDuplication/uDesktopDuplication/Cursor.cpp index 2ebb3cb..6c60b02 100644 --- a/Plugins/uDesktopDuplication/uDesktopDuplication/Cursor.cpp +++ b/Plugins/uDesktopDuplication/uDesktopDuplication/Cursor.cpp @@ -24,16 +24,16 @@ void Cursor::UpdateBuffer(const DXGI_OUTDUPL_FRAME_INFO& frameInfo) return; } - x_ = frameInfo.PointerPosition.Position.x; - y_ = frameInfo.PointerPosition.Position.y; isVisible_ = frameInfo.PointerPosition.Visible != 0; - timestamp_ = frameInfo.LastMouseUpdateTime; - if (isVisible_) { GetMonitorManager()->SetCursorMonitorId(monitor_->GetId()); } + x_ = frameInfo.PointerPosition.Position.x; + y_ = frameInfo.PointerPosition.Position.y; + timestamp_ = frameInfo.LastMouseUpdateTime; + if (!IsCursorOnParentMonitor()) { return; diff --git a/Plugins/uDesktopDuplication/uDesktopDuplication/main.cpp b/Plugins/uDesktopDuplication/uDesktopDuplication/main.cpp index 58b8aff..88a6e7b 100644 --- a/Plugins/uDesktopDuplication/uDesktopDuplication/main.cpp +++ b/Plugins/uDesktopDuplication/uDesktopDuplication/main.cpp @@ -138,6 +138,15 @@ extern "C" g_manager->SetTimeout(timeout); } + UNITY_INTERFACE_EXPORT void UNITY_INTERFACE_API GetId(int id) + { + if (!g_manager) return; + if (auto monitor = g_manager->GetMonitor(id)) + { + monitor->GetId(); + } + } + UNITY_INTERFACE_EXPORT MonitorState UNITY_INTERFACE_API GetState(int id) { if (!g_manager) return MonitorState::NotSet;