38 lines
1.2 KiB
C#
38 lines
1.2 KiB
C#
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
|
|
namespace MSCO
|
|
{
|
|
/// <summary>
|
|
/// 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).
|
|
/// </summary>
|
|
public static class MenuInputBlocker
|
|
{
|
|
static readonly Dictionary<Camera, int> savedMasks = new Dictionary<Camera, int>();
|
|
|
|
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<Camera, int> kv in savedMasks)
|
|
if (kv.Key != null) kv.Key.eventMask = kv.Value;
|
|
savedMasks.Clear();
|
|
}
|
|
}
|
|
}
|
|
}
|