using System.Collections.Generic; using UnityEngine; namespace MSCO { /// /// Das Hauptmenü reagiert über OnMouseEnter/OnMouseDown auf Collider in der 3D-Szene - /// auch durch unser GUI hindurch (z.B. öffnet sich der Changelog). Solange die Maus über /// unserem Fenster ist, werden die Maus-Events der Kameras abgeschaltet (eventMask = 0). /// public static class MenuInputBlocker { static readonly Dictionary savedMasks = new Dictionary(); public static bool IsBlocked { get { return savedMasks.Count > 0; } } public static void SetBlocked(bool blocked) { if (blocked == IsBlocked) return; if (blocked) { foreach (Camera cam in Camera.allCameras) { savedMasks[cam] = cam.eventMask; cam.eventMask = 0; } } else { foreach (KeyValuePair kv in savedMasks) if (kv.Key != null) kv.Key.eventMask = kv.Value; savedMasks.Clear(); } } } }