/// <summary>
        ///     Lock cursor under given name.
        /// </summary>
        /// <param name="source"></param>
        /// <param name="state"></param>
        /// <param name="forceNewState">Force to update cursor in this frame.</param>
        public static void LockCursor(string source, bool state, bool forceNewState = false)
        {
            if (string.IsNullOrEmpty(source))
            {
                source = "default";
            }

            if (CursorLock.ContainsKey(source))
            {
                CursorLock[source] = state;
            }
            else
            {
                CursorLock.Add(source, state);
            }

            CursorLocked = true;
            foreach (var i in CursorLock)
            {
                if (i.Value)
                {
                    continue;
                }
                CursorLocked = false;
                break;
            }

            if (Instance == null || !forceNewState)
            {
                return;
            }

            Instance.InternalUpdateCursorState();
        }
 /// <summary>
 ///     Gets state of cursor lock.
 /// </summary>
 public static bool GetCursorLock(string source)
 {
     return(CursorLock.ContainsKey(source) && CursorLock[source]);
 }