/// <summary> /// Check-out the shared anchor. /// </summary> /// <param name="result">Will be set to true if anchor is checked out by this player</param> public IEnumerator CheckOutAnchorAsync() { CheckoutRequest request; lock (currentRequestLock) { request = currentRequest = CheckoutRequest.CreateNext(currentRequest); } Debug.LogFormat("[NetworkAnchorPlayer] Making check-out request. {0}", DebugInfo()); CmdCheckOutAnchor(request.Id); bool?checkedOut = null; while (!checkedOut.HasValue) { yield return(null); lock (currentRequestLock) { if (request == currentRequest && request.Success.HasValue) { checkedOut = request.Success.Value; } else if (request != currentRequest) { checkedOut = false; } } } Debug.LogFormat("[NetworkAnchorPlayer] Done making check-out request. (result: {0}) {1}", CheckedOutAnchor, DebugInfo()); if (checkedOut.Value) { lock (checkedOutAnchorCountLock) { checkedOutAnchorCount++; } } }