Exemple #1
0
    private WaitLock StartWait(KeyCode keyCode = KeyCode.Space)
    {
        var waitLock = new WaitLock();

        StartCoroutine(WaitForInput(waitLock, keyCode));
        return(waitLock);
    }
Exemple #2
0
    private IEnumerator WaitForInput(WaitLock waitLock, KeyCode keyCode = KeyCode.Space)
    {
        ShowWaitIcon();
        yield return(new WaitForEndOfFrame());

        yield return(new WaitUntil(() => Input.GetKeyUp(keyCode)));

        HideWaitIcon();
        waitLock.Complete = true;
    }
Exemple #3
0
 private static void DecrementReference(string key, WaitLock waitLock)
 {
     lock (_referenceCountLock)
     {
         waitLock.NumberOfReferences--;
         if (waitLock.NumberOfReferences <= 0)
         {
             keys.Remove(key);
         }
     }
 }
Exemple #4
0
        private static WaitLock GetAndIncrementReference(string key)
        {
            lock (_referenceCountLock)
            {
                WaitLock waitLock = null;
                if (!keys.TryGetValue(key, out waitLock))
                {
                    waitLock = new WaitLock();
                    keys.Add(key, waitLock);
                }

                waitLock.NumberOfReferences++;

                return(waitLock);
            }
        }
Exemple #5
0
        public static void On(string key, Action action)
        {
            WaitLock waitLock = GetAndIncrementReference(key);

            try
            {
                lock (waitLock)
                {
                    action();
                }
            }
            finally
            {
                DecrementReference(key, waitLock);
            }
        }