diff --git a/Assets/uDesktopDuplication/Examples/Scripts/MultipleMonitorCreator.cs b/Assets/uDesktopDuplication/Examples/Scripts/MultipleMonitorCreator.cs index f91e8cb..c745e8d 100644 --- a/Assets/uDesktopDuplication/Examples/Scripts/MultipleMonitorCreator.cs +++ b/Assets/uDesktopDuplication/Examples/Scripts/MultipleMonitorCreator.cs @@ -8,20 +8,30 @@ public class MultipleMonitorCreator : MonoBehaviour [SerializeField] float margin = 1f; private List monitors_ = new List(); + private float totalWidth_ = 0f; + + void Start() + { + Create(); + } void OnEnable() { - Create(); - uDesktopDuplication.Manager.instance.onReinitialized += Recreate; + uDesktopDuplication.Manager.onReinitialized += Recreate; } void OnDisable() { - Clear(); - uDesktopDuplication.Manager.instance.onReinitialized -= Recreate; + uDesktopDuplication.Manager.onReinitialized -= Recreate; } void Create() + { + CreateMonitors(); + LayoutMonitors(); + } + + void CreateMonitors() { // Sort monitors in coordinate order var monitors = uDesktopDuplication.Manager.monitors; @@ -29,7 +39,7 @@ public class MultipleMonitorCreator : MonoBehaviour // Create monitors var n = monitors.Count; - var totalWidth = 0f; + totalWidth_ = 0f; for (int i = 0 ; i < n; ++i) { // Create monitor obeject var go = Instantiate(monitorPrefab); @@ -51,12 +61,15 @@ public class MultipleMonitorCreator : MonoBehaviour // Calc actual size considering mesh size var scaleX = go.GetComponent().sharedMesh.bounds.extents.x * 2f; - totalWidth += w * scaleX; + totalWidth_ += w * scaleX; } + } + void LayoutMonitors() + { // Set positions with margin - totalWidth += margin * (n - 1); - var x = -totalWidth / 2; + totalWidth_ += margin * (monitors_.Count - 1); + var x = -totalWidth_ / 2; foreach (var go in monitors_) { var texture = go.GetComponent(); var halfScaleX = go.GetComponent().sharedMesh.bounds.extents.x; diff --git a/Assets/uDesktopDuplication/Scripts/Manager.cs b/Assets/uDesktopDuplication/Scripts/Manager.cs index 15cbf08..099cffb 100644 --- a/Assets/uDesktopDuplication/Scripts/Manager.cs +++ b/Assets/uDesktopDuplication/Scripts/Manager.cs @@ -54,7 +54,7 @@ public class Manager : MonoBehaviour private float reinitializationTimer = 0f; public delegate void ReinitializeHandler(); - public event ReinitializeHandler onReinitialized; + public static event ReinitializeHandler onReinitialized; void Awake() { @@ -92,9 +92,11 @@ public class Manager : MonoBehaviour ReinitializeIfNeeded(); UpdateMessage(); + /* foreach (var monitor in monitors_) { Debug.LogFormat("[{0}] {1}", monitor.id, monitor.state); } + */ } [ContextMenu("Reinitialize")] diff --git a/Assets/uDesktopDuplication/Shaders/uDD_Unlit.shader b/Assets/uDesktopDuplication/Shaders/uDD_Unlit.shader index 16c229b..88910b1 100644 --- a/Assets/uDesktopDuplication/Shaders/uDD_Unlit.shader +++ b/Assets/uDesktopDuplication/Shaders/uDD_Unlit.shader @@ -6,7 +6,7 @@ Properties _Color ("Color", Color) = (1, 1, 1, 1) _MainTex ("Texture", 2D) = "white" {} [Toggle(USE_BEND)] _UseBend("UseBend", Float) = 0 - [PowerSlider(10.0)]_Radius ("Radius", Range(3, 100)) = 10 + [PowerSlider(10.0)]_Radius ("Radius", Range(10, 100)) = 30 [KeywordEnum(Off, Front, Back)] _Cull("Culling", Int) = 2 }