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(); } }
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; } }
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; } } }
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; } }
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; }
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; } }
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; } }
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 }
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(); } } }