void Update()
    {
        if (Input.touchCount == 0)
        {
            return;
        }

        Touch touch = Input.GetTouch(0);

        if (IsTouchOverUIObject(touch))
        {
            return;
        }

        if (touch.phase == TouchPhase.Began)
        {
            if (m_RaycastManager.Raycast(touch.position, m_Hits, TrackableType.PlaneWithinPolygon))
            {
                Pose hitPose = m_Hits[0].pose;

                if (spawnedObject != null)
                {
                    // Destroy existing object
                    Destroy(spawnedObject);
                }

                spawnedObject = Instantiate(placedPrefab, hitPose.position, hitPose.rotation);

                // content face the user
                Vector3 lookVector = Camera.main.transform.position - spawnedObject.transform.position;
                spawnedObject.transform.rotation = Quaternion.LookRotation(lookVector, Vector3.up);
                spawnedObject.transform.rotation = new Quaternion(0, spawnedObject.transform.rotation.y, 0, spawnedObject.transform.rotation.w) * Quaternion.Euler(0, 180, 0);

                ObjectPlacementHandler objectPlacementHandler = spawnedObject.GetComponent <ObjectPlacementHandler>();

                objectPlacementHandler.SetObject(hitPose.position);
                m_UIPanelRoot.SetActive(true);

                ObjectPlaced?.Invoke(objectPlacementHandler);
            }
        }
    }
Example #2
0
    private void OnObjectPlaced(ObjectPlacementHandler placedObject)
    {
        if (placedObject != null)
        {
            if (m_ShowingTapToPlace)
            {
                if (m_TapToPlaceAnimation)
                {
                    m_TapToPlaceAnimation.SetTrigger(k_FadeOffAnim);
                }

                m_ShowingTapToPlace = false;
            }
        }
        else
        {
            // Show tap to place again
            if (!m_ShowingTapToPlace)
            {
                if (m_TapToPlaceAnimation)
                {
                    m_TapToPlaceAnimation.SetTrigger(k_FadeOnAnim);
                }

                m_ShowingTapToPlace = true;
            }

            if (m_ShowingMoveDevice)
            {
                if (m_MoveDeviceAnimation)
                {
                    m_MoveDeviceAnimation.SetTrigger(k_FadeOffAnim);
                }

                m_ShowingMoveDevice = false;
            }
        }
    }
    private void OnObjectedPlaced(ObjectPlacementHandler placedObject)
    {
        m_CurrentObject = placedObject;

        if (m_CurrentObject != null)
        {
            m_CurrentObject.objectMat.color = GetColor(m_CurrentColor);

#if UNITY_ANDROID
            try
            {
                AndroidJavaClass  jc = new AndroidJavaClass("com.company.product.OverrideUnityActivity");
                AndroidJavaObject overrideActivity = jc.GetStatic <AndroidJavaObject>("instance");
                overrideActivity.Call("itemPlacedInAR");
            }
            catch (Exception e)
            {
                Debug.LogError(e.Message);
            }
#elif UNITY_IOS
            NativeAPI.itemPlacedInAR();
#endif
        }
    }