Exemplo n.º 1
0
        /// <summary>
        /// Publish the spacePin.
        /// </summary>
        /// <param name="spacePin">SpacePinASA to publish</param>
        /// <returns>True on success.</returns>
        /// <remarks>
        /// It may be this should be a private member.
        /// </remarks>
        public async Task <bool> Publish(SpacePinASA spacePin)
        {
            if (!IsReady)
            {
                // mafinc - Should we wait until it is ready? Maybe as a binder option?
                return(false);
            }

            int idx = FindSpacePin(spacePin);

            if (idx < 0)
            {
                Debug.LogError($"Trying to publish unknown space pin. Must be added in inspector or AddSpacePin() first.");
                return(false);
            }

            int cloudIdx = FindBindingBySpacePinId(spacePin.SpacePinId);

            if (cloudIdx >= 0)
            {
                SimpleConsole.AddLine(ConsoleHigh, $"Publishing previously published space pin={spacePin.SpacePinId}, deleting from cloud first.");
                await publisher.Delete(bindings[cloudIdx].cloudAnchorId);

                RemoveBinding(spacePin.SpacePinId);
            }

            var obj = ExtractForPublisher(spacePin);

            if (obj == null)
            {
                return(false);
            }
            CloudAnchorId cloudAnchorId = await publisher.Create(obj);

            if (string.IsNullOrEmpty(cloudAnchorId))
            {
                Debug.LogError($"Failed to create cloud anchor for {spacePin.SpacePinId}");
                return(false);
            }
            SetBinding(spacePin.SpacePinId, cloudAnchorId);
            return(true);
        }
Exemplo n.º 2
0
        /// <summary>
        /// Create or update (by space pin id) a binding to a cloud anchor.
        /// </summary>
        /// <param name="spacePinId">Id of the space pin.</param>
        /// <param name="cloudAnchorId">Id of the cloud anchor.</param>
        private void SetBinding(string spacePinId, CloudAnchorId cloudAnchorId)
        {
            DebugLogExtra($"Setting binding between sp={spacePinId} ca={cloudAnchorId}");
            int bindingIdx = FindBindingBySpacePinId(spacePinId);
            var binding    = new SpacePinCloudBinding()
            {
                spacePinId = spacePinId, cloudAnchorId = cloudAnchorId
            };

            if (bindingIdx < 0)
            {
                DebugLogExtra($"Adding new binding sp={spacePinId} ca={cloudAnchorId}");
                bindings.Add(binding);
            }
            else
            {
                DebugLogExtra($"Updating existing binding sp={spacePinId} from ca={bindings[bindingIdx].cloudAnchorId} to ca={cloudAnchorId}");
                bindings[bindingIdx] = binding;
            }
        }