Ejemplo n.º 1
0
        private void WaitForHostedReferencePoint()
        {
            OutputText.text = m_AppMode.ToString();

            CloudReferenceState cloudReferenceState = m_CloudReferencePoint.cloudReferenceState;

            OutputText.text += " - " + cloudReferenceState.ToString();

            if (cloudReferenceState == CloudReferenceState.Success)
            {
                GameObject cloudAnchor = Instantiate(
                    Board,
                    Vector3.zero,
                    Quaternion.identity);
                cloudAnchor.transform.SetParent(
                    m_CloudReferencePoint.transform, false);

                m_CloudReferenceId    = m_CloudReferencePoint.cloudReferenceId;
                m_CloudReferencePoint = null;

                OutputText.text = m_CloudReferenceId;

                InstantiateBoardPieces();
                m_AppMode = AppMode.PlayState;
            }
            else
            {
                OutputText.text = cloudReferenceState.ToString();
            }
        }
Ejemplo n.º 2
0
        private void TouchToResolveCloudReferencePoint()
        {
            OutputText.text = m_CloudReferenceId;

            if (Input.touchCount >= 1 &&
                Input.GetTouch(0).phase == TouchPhase.Began &&
                !EventSystem.current.IsPointerOverGameObject(
                    Input.GetTouch(0).fingerId))
            {
                m_CloudReferencePoint =
                    ReferencePointManager.ResolveCloudReferenceId(
                        m_CloudReferenceId);
                if (m_CloudReferencePoint == null)
                {
                    OutputText.text    = "Resolve Failed!";
                    m_CloudReferenceId = string.Empty;
                    m_AppMode          = AppMode.TouchToHostCloudReferencePoint;
                    return;
                }

                m_CloudReferenceId = string.Empty;

                // Wait for the reference point to be ready.
                m_AppMode = AppMode.WaitingForResolvedReferencePoint;
            }
        }
Ejemplo n.º 3
0
        private void TouchtoHostCloudReferencePoint()
        {
            OutputText.text = m_AppMode.ToString();

            if (Input.touchCount >= 1 &&
                Input.GetTouch(0).phase == TouchPhase.Began &&
                !EventSystem.current.IsPointerOverGameObject(
                    Input.GetTouch(0).fingerId))
            {
                List <ARRaycastHit> hitResults = new List <ARRaycastHit>();
                RaycastManager.Raycast(Input.GetTouch(0).position, hitResults);
                if (hitResults.Count > 0)
                {
                    pose = hitResults[0].pose;

                    // Create a reference point at the touch.
                    ARReferencePoint referencePoint =
                        ReferencePointManager.AddReferencePoint(
                            pose);

                    // Create Cloud Reference Point.
                    m_CloudReferencePoint =
                        ReferencePointManager.AddCloudReferencePoint(
                            referencePoint);
                    if (m_CloudReferencePoint == null)
                    {
                        OutputText.text = "Create Failed!";
                        return;
                    }

                    // Wait for the reference point to be ready.
                    m_AppMode = AppMode.WaitingForHostedReferencePoint;
                }
            }
        }
Ejemplo n.º 4
0
    private void Update_WaitingForResolvedReferencePoint()
    {
        OutputText.text = "Waiting for server to resolve";
        CloudReferenceState cloudReferenceState =
            m_CloudReferencePoint.cloudReferenceState;

        OutputText.text += " - " + cloudReferenceState.ToString();

        if (cloudReferenceState == CloudReferenceState.Success)
        {
            print("GOT EM, ID: " + m_CloudReferencePoint.cloudReferenceId);
            CloudAnchors.Add(m_CloudReferencePoint.transform);
            CloudAnchorCreated?.Invoke(m_CloudReferencePoint.transform);

            m_CloudReferencePoint = null;
            m_AppMode             = AppMode.TouchToHostCloudReferencePoint;
        }
        else if (cloudReferenceState != CloudReferenceState.TaskInProgress)
        {
            print("Failed, TRYING AGAIN");
            OutputText.text = "Failed, Retrying in 5s";
            StartCoroutine(LoadPointFromIdInTime(idToLoad, 5f));
            m_AppMode = AppMode.TouchToHostCloudReferencePoint;
        }
    }
Ejemplo n.º 5
0
 private void LoadPointFromId(string id)
 {
     m_CloudReferenceId    = string.Empty;
     m_CloudReferencePoint =
         ReferencePointManager.ResolveCloudReferenceId(id);
     if (m_CloudReferencePoint == null)
     {
         OutputText.text = "Resolve Failed!";
         m_AppMode       = AppMode.TouchToHostCloudReferencePoint;
         return;
     }
     // Wait for the reference point to be ready.
     m_AppMode = AppMode.WaitingForResolvedReferencePoint;
 }
Ejemplo n.º 6
0
        private void WaitForResolvedReferencePoint()
        {
            OutputText.text = m_AppMode.ToString();

            CloudReferenceState cloudReferenceState =
                m_CloudReferencePoint.cloudReferenceState;

            OutputText.text += " - " + cloudReferenceState.ToString();

            if (cloudReferenceState == CloudReferenceState.Success)
            {
                GameObject cloudAnchor = Instantiate(
                    ResolvedPointPrefab,
                    Vector3.zero,
                    Quaternion.identity);
                cloudAnchor.transform.SetParent(
                    m_CloudReferencePoint.transform, false);

                m_CloudReferencePoint = null;

                m_AppMode = AppMode.PlayState;
            }
        }
Ejemplo n.º 7
0
    private void Update_WaitingForHostedReferencePoint()
    {
        OutputText.text = "Waiting for server";
        CloudReferenceState cloudReferenceState =
            m_CloudReferencePoint.cloudReferenceState;

        OutputText.text += " - " + cloudReferenceState.ToString();

        if (cloudReferenceState == CloudReferenceState.Success)
        {
            GameObject cloudAnchor = Instantiate(
                HostedPointPrefab,
                Vector3.zero,
                Quaternion.identity);
            cloudAnchor.transform.SetParent(
                m_CloudReferencePoint.transform, false);

            _debugAnchorObjects.Add(cloudAnchor);

            m_CloudReferenceId    = m_CloudReferencePoint.cloudReferenceId;
            m_CloudReferencePoint = null;
            m_AppMode             = AppMode.TouchToResolveCloudReferencePoint;
        }
    }
Ejemplo n.º 8
0
    void Update()
    {
        if (!photonView.IsMine)
        {
            return;
        }
        #region AppMode.TouchToHostCloudReferencePoint
        if (m_AppMode == AppMode.TouchToHostCloudReferencePoint)
        {
            if (Input.touchCount >= 1 &&
                Input.GetTouch(0).phase == TouchPhase.Began &&
                !EventSystem.current.IsPointerOverGameObject(Input.GetTouch(0).fingerId))
            {
                List <ARRaycastHit> hitResults = new List <ARRaycastHit>();
                RaycastManager.Raycast(Input.GetTouch(0).position, hitResults);
                if (hitResults.Count > 0)
                {
                    Pose pose = hitResults[0].pose;

                    // Create a reference point at the touch.
                    ARReferencePoint referencePoint = ReferencePointManager.AddReferencePoint(hitResults[0].pose);

                    // Create Cloud Reference Point.
                    m_CloudReferencePoint = ReferencePointManager.AddCloudReferencePoint(referencePoint);
                    if (m_CloudReferencePoint == null)
                    {
                        Message.text = "Create Failed!";
                        return;
                    }

                    //Ref point created we can now turn off environment visualization
                    StartCoroutine(VisualizePlanes(false));
                    StartCoroutine(VisualizePoints(false));
                    // Wait for the reference point to be ready.
                    m_AppMode = AppMode.WaitingForHostedReferencePoint;
                }
            }
        }
        #endregion AppMode.TouchToHostCloudReferencePoint

        #region AppMode.WaitingForHostedReferencePoint
        else if (m_AppMode == AppMode.WaitingForHostedReferencePoint)
        {
            CloudReferenceState cloudReferenceState = m_CloudReferencePoint.cloudReferenceState;

            if (cloudReferenceState == CloudReferenceState.Success)
            {
                //GameObject cloudAnchor = Instantiate(HostedPointPrefab, Vector3.zero, Quaternion.identity);
                //cloudAnchor.transform.SetParent(m_CloudReferencePoint.transform, false);

                m_CloudReferenceId = m_CloudReferencePoint.cloudReferenceId;  // Getting cloud id to share with Others

                PhotonPlayersSingleton.Instance.CloudReferencePointId = m_CloudReferenceId;

                //m_CloudReferencePoint = null;

                //m_AppMode = AppMode.TouchToResolveCloudReferencePoint;

                this.photonView.RPC("Set_CloudReferenceId", RpcTarget.OthersBuffered, m_CloudReferenceId);
                m_AppMode = AppMode.WaitingForResolvedReferencePoint;
            }
        }
        #endregion AppMode.WaitingForHostedReferencePoint

        #region AppMode.ResolveCloudReferencePoint
        //All other than MasterClient
        else if (m_AppMode == AppMode.ResolveCloudReferencePoint && PhotonPlayersSingleton.Instance.CloudReferencePointId != "" && PhotonPlayersSingleton.Instance.CloudReferencePointId != null)
        {
            m_CloudReferencePoint = null;
            m_CloudReferencePoint = ReferencePointManager.ResolveCloudReferenceId(PhotonPlayersSingleton.Instance.CloudReferencePointId);

            if (m_CloudReferencePoint == null)
            {
                Message.text = "Resolve Failed!";
                return;
            }
            m_AppMode    = AppMode.WaitingForResolvedReferencePoint;
            Message.text = "Mode: AppMode.WaitingForResolvedReferencePoint";
        }
        #endregion AppMode.ResolveCloudReferencePoint

        #region AppMode.WaitingForResolvedReferencePoint
        else if (m_AppMode == AppMode.WaitingForResolvedReferencePoint)
        {
            CloudReferenceState cloudReferenceState = m_CloudReferencePoint.cloudReferenceState;
            if (cloudReferenceState == CloudReferenceState.Success)
            {
                Message.text = "XCloudReferenceId: " + PhotonPlayersSingleton.Instance.CloudReferencePointId +
                               "\nCloudReferencePoint position: " + m_CloudReferencePoint.transform.position.ToString();

                GameObject cloudAnchor = Instantiate(ResolvedPointPrefab, Vector3.zero, Quaternion.identity);

                //if (PhotonNetwork.LocalPlayer.IsMasterClient)
                {
                    cloudAnchor.transform.SetParent(m_CloudReferencePoint.transform, false);
                    StartCoroutine(VisualizePlanes(false));
                    StartCoroutine(VisualizePoints(false));
                }

                PhotonPlayersSingleton.Instance.LocalPlayerCloudReferencePose = m_CloudReferencePoint.pose;
                m_AppMode    = AppMode.Finished;
                Message.text = "Mode: AppMode.Finished";

                //this.enabled = false;  //
            }
        }
        #endregion AppMode.WaitingForResolvedReferencePoint
    }
Ejemplo n.º 9
0
        void Update()
        {
            if (m_AppMode == AppMode.TouchToHostCloudReferencePoint)
            {
                OutputText.text = m_AppMode.ToString();

                if (Input.touchCount >= 1 &&
                    Input.GetTouch(0).phase == TouchPhase.Began &&
                    !EventSystem.current.IsPointerOverGameObject(
                        Input.GetTouch(0).fingerId))
                {
                    List <ARRaycastHit> hitResults = new List <ARRaycastHit>();
                    RaycastManager.Raycast(Input.GetTouch(0).position, hitResults);
                    if (hitResults.Count > 0)
                    {
                        Pose pose = hitResults[0].pose;

                        // Create a reference point at the touch.
                        ARReferencePoint referencePoint =
                            ReferencePointManager.AddReferencePoint(
                                hitResults[0].pose);

                        // Create Cloud Reference Point.
                        m_CloudReferencePoint =
                            ReferencePointManager.AddCloudReferencePoint(
                                referencePoint);
                        if (m_CloudReferencePoint == null)
                        {
                            OutputText.text = "Create Failed!";
                            return;
                        }

                        // Wait for the reference point to be ready.
                        m_AppMode = AppMode.WaitingForHostedReferencePoint;
                    }
                }
            }
            else if (m_AppMode == AppMode.WaitingForHostedReferencePoint)
            {
                OutputText.text = m_AppMode.ToString();

                CloudReferenceState cloudReferenceState =
                    m_CloudReferencePoint.cloudReferenceState;
                OutputText.text += " - " + cloudReferenceState.ToString();

                if (cloudReferenceState == CloudReferenceState.Success)
                {
                    GameObject cloudAnchor = Instantiate(
                        HostedPointPrefab,
                        Vector3.zero,
                        Quaternion.identity);
                    cloudAnchor.transform.SetParent(
                        m_CloudReferencePoint.transform, false);

                    m_CloudReferenceId    = m_CloudReferencePoint.cloudReferenceId;
                    m_CloudReferencePoint = null;

                    m_AppMode = AppMode.TouchToResolveCloudReferencePoint;
                }
            }
            else if (m_AppMode == AppMode.TouchToResolveCloudReferencePoint)
            {
                OutputText.text = m_CloudReferenceId;

                if (Input.touchCount >= 1 &&
                    Input.GetTouch(0).phase == TouchPhase.Began &&
                    !EventSystem.current.IsPointerOverGameObject(
                        Input.GetTouch(0).fingerId))
                {
                    m_CloudReferencePoint =
                        ReferencePointManager.ResolveCloudReferenceId(
                            m_CloudReferenceId);
                    if (m_CloudReferencePoint == null)
                    {
                        OutputText.text    = "Resolve Failed!";
                        m_CloudReferenceId = string.Empty;
                        m_AppMode          = AppMode.TouchToHostCloudReferencePoint;
                        return;
                    }

                    m_CloudReferenceId = string.Empty;

                    // Wait for the reference point to be ready.
                    m_AppMode = AppMode.WaitingForResolvedReferencePoint;
                }
            }
            else if (m_AppMode == AppMode.WaitingForResolvedReferencePoint)
            {
                OutputText.text = m_AppMode.ToString();

                CloudReferenceState cloudReferenceState =
                    m_CloudReferencePoint.cloudReferenceState;
                OutputText.text += " - " + cloudReferenceState.ToString();

                if (cloudReferenceState == CloudReferenceState.Success)
                {
                    GameObject cloudAnchor = Instantiate(
                        ResolvedPointPrefab,
                        Vector3.zero,
                        Quaternion.identity);
                    cloudAnchor.transform.SetParent(
                        m_CloudReferencePoint.transform, false);

                    m_CloudReferencePoint = null;

                    m_AppMode = AppMode.TouchToHostCloudReferencePoint;
                }
            }
        }
    void Update()
    {
        //When the master client place the popcorn machine in their local copy, isPlaced=true
        if (m_AppMode == AppMode.ReadyToHostCloudReferencePoint && isPlaced)
        {
            placePos        = new Pose(popcornMachine.transform.position, Quaternion.identity);
            OutputText.text = m_AppMode.ToString();
            ARReferencePoint referencePoint =
                ReferencePointManager.AddReferencePoint(
                    placePos);

            // Create Cloud Reference Point.
            m_CloudReferencePoint =
                ReferencePointManager.AddCloudReferencePoint(
                    referencePoint);
            if (m_CloudReferencePoint == null)
            {
                OutputText.text = "Create Failed!";
                return;
            }

            // Wait for the reference point to be ready.
            m_AppMode = AppMode.WaitingForHostedReferencePoint;
        }

        else if (m_AppMode == AppMode.WaitingForHostedReferencePoint)
        {
            CloudReferenceState cloudReferenceState =
                m_CloudReferencePoint.cloudReferenceState;

            if (cloudReferenceState == CloudReferenceState.Success)
            {
                //Instantiate an empty game object to indicate the cloud anchor is placed at the position, can be replaced with other game object for debugging
                OutputText.text = "Success! Click Ready when you are ready";
                GameObject cloudAnchor = Instantiate(
                    HostedPointPrefab,
                    Vector3.zero,
                    Quaternion.identity);
                cloudAnchor.transform.SetParent(
                    m_CloudReferencePoint.transform, false);

                //Popcorn machine will follow the transform of cloud anchor
                popcornMachine.transform.position = cloudAnchor.transform.position;
                popcornMachine.transform.SetParent(m_CloudReferencePoint.transform);

                //Get the cloud anchor reference Id and send this ID to other clients
                m_CloudReferenceId    = m_CloudReferencePoint.cloudReferenceId;
                m_CloudReferencePoint = null;
                _photonView.RPC("setCloudReferenceId", RpcTarget.Others, m_CloudReferenceId);
            }
            else
            {
                OutputText.text = /*m_AppMode.ToString() +*/ " Please wait for a few seconds..." + " - " + cloudReferenceState.ToString();
            }
        }

        else if (m_AppMode == AppMode.ReadyToResolveCloudReferencePoint)
        {
            OutputText.text = m_CloudReferenceId;
            {
                m_CloudReferencePoint =
                    ReferencePointManager.ResolveCloudReferenceId(
                        m_CloudReferenceId);
                if (m_CloudReferencePoint == null)
                {
                    OutputText.text    = "Resolve Failed!";
                    m_CloudReferenceId = string.Empty;
                    return;
                }

                m_CloudReferenceId = string.Empty;

                // Wait for the reference point to be ready.
                m_AppMode = AppMode.WaitingForResolvedReferencePoint;
            }
        }

        else if (m_AppMode == AppMode.WaitingForResolvedReferencePoint)
        {
            CloudReferenceState cloudReferenceState =
                m_CloudReferencePoint.cloudReferenceState;
            if (cloudReferenceState == CloudReferenceState.Success)
            {
                OutputText.text = "Success! Click Ready when you are ready";
                GameObject cloudAnchor = Instantiate(
                    ResolvedPointPrefab,
                    Vector3.zero,
                    Quaternion.identity);
                cloudAnchor.transform.SetParent(
                    m_CloudReferencePoint.transform, false);
                popcornMachine.transform.position = cloudAnchor.transform.position;
                popcornMachine.transform.SetParent(m_CloudReferencePoint.transform);
                m_CloudReferencePoint = null;
            }
            else
            {
                OutputText.text = /*m_AppMode.ToString()+*/ " Please wait for a few seconds..." + " - " + cloudReferenceState.ToString();
            }
        }
    }