예제 #1
0
    public void HandleInteractiveHitTest(HitTestResult result)
    {
        if (result == null)
        {
            Debug.LogError("Invalid hit test result!");
            return;
        }

        // if (!m_GroundPlaneUI.IsCanvasButtonPressed())
        //{
        Debug.Log("HandleInteractiveHitTest() called.");

        // If the PlaneFinderBehaviour's Mode is Automatic, then the Interactive HitTestResult will be centered.

        // PlaneMode.Ground and PlaneMode.Placement both use PlaneFinder's ContentPositioningBehaviour
        m_ContentPositioningBehaviour = m_PlaneFinder.GetComponent <ContentPositioningBehaviour>();
        m_ContentPositioningBehaviour.DuplicateStage = false;

        // Place object based on Ground Plane mode
        switch (planeMode)
        {
        case PlaneMode.GROUND:

            m_ContentPositioningBehaviour.AnchorStage = m_PlaneAnchor;
            m_ContentPositioningBehaviour.PositionContentAtPlaneAnchor(result);
            UtilityHelper.EnableRendererColliderCanvas(m_PlaneAugmentation, true);

            // Astronaut should rotate toward camera with each placement
            m_PlaneAugmentation.transform.localPosition = Vector3.zero;
            UtilityHelper.RotateTowardCamera(m_PlaneAugmentation);

            AstronautIsPlaced = true;

            break;

        case PlaneMode.PLACEMENT:

            if (!m_ProductPlacement.IsPlaced || TouchHandler.DoubleTap)
            {
                m_ContentPositioningBehaviour.AnchorStage = m_PlacementAnchor;
                m_ContentPositioningBehaviour.PositionContentAtPlaneAnchor(result);
                UtilityHelper.EnableRendererColliderCanvas(m_PlacementAugmentation, true);
            }

            if (!m_ProductPlacement.IsPlaced)
            {
                m_ProductPlacement.SetProductAnchor(m_PlacementAnchor.transform);
                m_TouchHandler.enableRotation = true;
            }

            break;
            // }
        }
    }
예제 #2
0
    public void HandleInteractiveHitTest(HitTestResult result)
    {
        if (result == null)
        {
            //Debug.LogError("Invalid hit test result!");
            return;
        }

        if (!m_GroundPlaneUI.IsCanvasUIPressed())
        {
            if (indicator.activeSelf)
            {
                indicator.SetActive(false);
            }
            m_ContentPositioningBehaviour = m_PlaneFinderBehaviour.GetComponent <ContentPositioningBehaviour>();
            m_ContentPositioningBehaviour.DuplicateStage = false;

            if (!m_ProductPlacement.IsPlaced || TouchHandler.DoubleTap)
            {
                m_ContentPositioningBehaviour.AnchorStage = m_PlacementAnchor;
                m_ContentPositioningBehaviour.PositionContentAtPlaneAnchor(result);
                UtilityHelper.EnableRendererColliderCanvas(m_PlacementAugmentation, true);
            }

            if (!m_ProductPlacement.IsPlaced)
            {
                //m_ProductPlacement.SetProductAnchor(m_PlacementAnchor.transform);
                m_TouchHandler.enableRotation = true;
            }
        }
    }
예제 #3
0
    public void HandleInteractiveHitTest(HitTestResult result)
    {
        //Debug.Log("WE ARE INSIDE HandleInteractiveHitTest");
        if (result == null)
        {
            Debug.LogError("Invalid hit test result!");
            return;
        }

        if (!m_GroundPlaneUI.IsCanvasButtonPressed())
        {
            Debug.Log("HandleInteractiveHitTest() called.");

            // If the PlaneFinderBehaviour's Mode is Automatic, then the Interactive HitTestResult will be centered.

            m_ContentPositioningBehaviour = m_PlaneFinder.GetComponent <ContentPositioningBehaviour>();
            m_ContentPositioningBehaviour.DuplicateStage = false;

            // Place object based on Ground Plane mode
            switch (planeMode)
            {
            case PlaneMode.TGO:

                if (!m_TGOProductPlacement.IsPlaced || TGOTouchHandlerTest.DoubleTap)
                {
                    m_ContentPositioningBehaviour.AnchorStage = m_TGOAnchor;
                    m_ContentPositioningBehaviour.PositionContentAtPlaneAnchor(result);
                    UtilityHelperTest.EnableRendererColliderCanvas(m_TGOAugmentation, true);
                }

                if (!m_TGOProductPlacement.IsPlaced)
                {
                    m_TGOProductPlacement.SetProductAnchor(m_TGOAnchor.transform);
                    m_TGOTouchHandler.enableRotation  = true;
                    m_BEPITouchHandler.enableRotation = false;
                }

                break;

            case PlaneMode.BEPI:

                if (!m_BEPIProductPlacement.IsPlaced || BEPITouchHandlerTest.DoubleTap)
                {
                    m_ContentPositioningBehaviour.AnchorStage = m_BEPIAnchor;
                    m_ContentPositioningBehaviour.PositionContentAtPlaneAnchor(result);
                    UtilityHelperTest.EnableRendererColliderCanvas(m_BEPIAugmentation, true);
                }

                if (!m_BEPIProductPlacement.IsPlaced)
                {
                    m_BEPIProductPlacement.SetProductAnchor(m_BEPIAnchor.transform);
                    m_BEPITouchHandler.enableRotation = true;
                    m_TGOTouchHandler.enableRotation  = false;
                }

                break;
            }
        }
    }
예제 #4
0
 // Use this for initialization
 void Start()
 {
     pivotAdjuster      = FindObjectOfType <PivotAdjuster>();
     planeFinder        = FindObjectOfType <PlaneFinderBehaviour>();
     contentPositioning = planeFinder.GetComponent <ContentPositioningBehaviour>();
     //debugText.text = Application.persistentDataPath;
     //selectedModel = test;
     ////modelSelected = true;
     //selectedModel = tobasco;
     //modelSelected = true;
 }
예제 #5
0
    public void HandleAutomaticHitTest(HitTestResult result)
    {
        AutomaticHitTestFrameCount = Time.frameCount;

        if (!m_Playmat.IsPlaced)
        {
            //m_Playmat.SetPlaymatAnchor(m_PlaymatAnchor.transform);
            m_Playmat.SetPlaced();
            m_ContentPositioningBehaviour = m_PlaneFinder.GetComponent <ContentPositioningBehaviour>();
            m_ContentPositioningBehaviour.DuplicateStage = false;
            m_ContentPositioningBehaviour.PositionContentAtPlaneAnchor(result);
        }
    }
    public void HandleInteractiveHitTest(HitTestResult result)
    {
        Debug.Log("HandleInteractiveHitTest() called.");


        if (result == null && primo)
        {
            Debug.LogError("Invalid hit test result!");
            return;
        }

        // Place object based on Ground Plane mode
        switch (planeMode)
        {
        case PlaneMode.GROUND:
            //  Debug.Log("case PlaneGround");
            if (positionalDeviceTracker != null && positionalDeviceTracker.IsActive)
            {
                DestroyAnchors();

                contentPositioningBehaviour = m_PlaneFinder.GetComponent <ContentPositioningBehaviour>();
                contentPositioningBehaviour.PositionContentAtPlaneAnchor(result);



                // m_ResetButton.interactable = true;
            }

            if (!m_PlaneAugmentation.activeInHierarchy && !primo)
            {
                Debug.Log("Setting Plane Augmentation to Active");
                // On initial run, unhide the augmentation

                m_PlaneAugmentation.SetActive(true);
                primo = true;
            }


            Debug.Log("Positioning Plane Augmentation at: " + cube.transform.position);

            m_PlaneAugmentation.PositionAt(cube.transform.position);
            RotateTowardImageTarget(m_PlaneAugmentation);


            break;

        default:
            Debug.LogError("Invalid Ground Plane state: " + planeMode);
            break;
        }
    }
예제 #7
0
    private void SpawnDroid()
    {
        Debug.Log("SpawnDroid Setting Plane Augmentation to Active");

        if (positionalDeviceTracker != null && positionalDeviceTracker.IsActive)
        {
            DestroyAnchors();

            contentPositioningBehaviour = m_PlaneFinder.GetComponent <ContentPositioningBehaviour>();
            contentPositioningBehaviour.PositionContentAtPlaneAnchor(currentResult);
            m_ResetButton.interactable = true;
        }

        if (!m_PlaneAugmentation.activeInHierarchy)
        {
            Debug.Log("Setting Plane Augmentation to Active");
            // On initial run, unhide the augmentation
            m_PlaneAugmentation.SetActive(true);
        }

        Debug.Log("Positioning Plane Augmentation at: " + currentResult.Position);
        m_PlaneAugmentation.PositionAt(currentResult.Position);
        RotateTowardCamera(m_PlaneAugmentation);
    }
예제 #8
0
    public void HandleInteractiveHitTest(HitTestResult result)
    {
        Debug.Log("HandleInteractiveHitTest() called.");

        if (result == null)
        {
            Debug.LogError("Invalid hit test result!");
            return;
        }


        // Place object based on Ground Plane mode
        switch (planeMode)
        {
        case PlaneMode.GROUND:

            if (positionalDeviceTracker != null && positionalDeviceTracker.IsActive)
            {
                DestroyAnchors();

                contentPositioningBehaviour = m_PlaneFinder.GetComponent <ContentPositioningBehaviour>();
                contentPositioningBehaviour.PositionContentAtPlaneAnchor(result);

//					if (!m_MidAirToggle.interactable)
//					{
                // Runs only once after first successful Ground Anchor is created
//						m_MidAirToggle.interactable = true;
//						m_ResetButton.interactable = true;
//					}
            }

            if (blockToggle.isOn)
            {
                Vector2d geoloc = result.Position.GetGeoPosition(_map.CenterMercator, _map.WorldRelativeScale);
                BlocksSpawner.Instance.SaveMessage("test", result.Position.y, geoloc.x, geoloc.y, Input.location.lastData.altitude, 1, 1);
                BlocksSpawner.Instance.CleanPool(true);
            }
            //Debug.Log("Positioning Plane Augmentation at: " + result.Position);
            //m_PlaneAugmentation.PositionAt(result.Position);
            //RotateTowardCamera(m_PlaneAugmentation);

            break;

        default:
            Debug.LogError("Invalid Ground Plane state: " + planeMode);
            break;
        }
    }
예제 #9
0
    public void HandleInteractiveHitTest(HitTestResult result)
    {
        Debug.Log("HandleInteractiveHitTest() called.");

        if (result == null)
        {
            Debug.LogError("Invalid hit test result!");
            return;
        }

        // Place object based on Ground Plane mode
        switch (planeMode)
        {
        case PlaneMode.GROUND:

            if (positionalDeviceTracker != null && positionalDeviceTracker.IsActive)
            {
                DestroyAnchors();

                contentPositioningBehaviour = m_PlaneFinder.GetComponent <ContentPositioningBehaviour>();
                contentPositioningBehaviour.PositionContentAtPlaneAnchor(result);

                if (!m_MidAirToggle.interactable)
                {
                    // Runs only once after first successful Ground Anchor is created
                    m_MidAirToggle.interactable = true;
                    m_ResetButton.interactable  = true;
                }
            }

            if (!m_PlaneAugmentation.activeInHierarchy)
            {
                Debug.Log("Setting Plane Augmentation to Active");
                // On initial run, unhide the augmentation
                m_PlaneAugmentation.SetActive(true);
            }

            Debug.Log("Positioning Plane Augmentation at: " + result.Position);
            m_PlaneAugmentation.PositionAt(result.Position);
            RotateTowardCamera(m_PlaneAugmentation);

            break;

        default:
            Debug.LogError("Invalid Ground Plane state: " + planeMode);
            break;
        }
    }
예제 #10
0
    public void HandleInteractiveHitTest(HitTestResult result)
    {
        if (result == null)
        {
            Debug.LogError("Invalid hit test result!");
            return;
        }

        if (!m_GroundPlaneUI.IsCanvasButtonPressed() && allowInterActive)
        {
            Debug.Log("HandleInteractiveHitTest() called.");

            // If the PlaneFinderBehaviour's Mode is Automatic, then the Interactive HitTestResult will be centered.

            // PlaneMode.Ground and PlaneMode.Placement both use PlaneFinder's ContentPositioningBehaviour
            m_ContentPositioningBehaviour = m_PlaneFinder.GetComponent <ContentPositioningBehaviour>();
            m_ContentPositioningBehaviour.DuplicateStage = false;

            // Place object based on Ground Plane mode
            switch (planeMode)
            {
            case PlaneMode.GROUND:

                m_ContentPositioningBehaviour.AnchorStage = m_PlaneAnchor;
                m_ContentPositioningBehaviour.PositionContentAtPlaneAnchor(result);
                UtilityHelper.EnableRendererColliderCanvas(m_PlaneAugmentation, true);

                // Astronaut should rotate toward camera with each placement
                m_PlaneAugmentation.transform.localPosition = Vector3.zero;
                UtilityHelper.RotateTowardCamera(m_PlaneAugmentation);

                CityIsPlaced     = true;
                allowInterActive = false;
                if (CommonData.currentUser == null)
                {
                    CommonData.currentUser = new DBStruct <UserData>("player");
                }
                // CommonData.currentUser.data.Plus += 300;
                // CommonData.currentUser.data.Minus -= 200;
                CommonData.mainManager.stateManager.PushState(new ShowTitle());
                CommonData.prefabs.gameobjectLookup[StringConstants.ARCamera].GetComponent <AudioSource>().Play();
                // CommonData.StateAnimal = true;
                setOblect = true;
                break;
            }
        }
    }
예제 #11
0
    public void HandleInteractiveHitTest(HitTestResult result)
    {
        if (PlaymatIsPlaced)
        {
            return;
        }
        if (result == null)
        {
            Debug.LogError("Invalid hit test result!");
            return;
        }

        m_ContentPositioningBehaviour = m_PlaneFinder.GetComponent <ContentPositioningBehaviour>();
        m_ContentPositioningBehaviour.DuplicateStage = false;
        m_ContentPositioningBehaviour.PositionContentAtPlaneAnchor(result);
        m_PlaneFinder.enabled = false;
        PlaymatIsPlaced       = true;
    }
    public void HandleInteractiveHitTest(HitTestResult result)
    {
        if (result == null)
        {
            Debug.LogError("Invalid hit test result!");
            return;
        }

        if (m_StatusInfo == TrackableBehaviour.StatusInfo.NORMAL ||
            (m_StatusInfo == TrackableBehaviour.StatusInfo.UNKNOWN && !VuforiaRuntimeUtilities.IsPlayMode()))
        {
            if (!m_GroundPlaneUI.IsCanvasButtonPressed())
            {
                Debug.Log("HandleInteractiveHitTest() called.");

                // If the PlaneFinderBehaviour's Mode is Automatic, then the Interactive HitTestResult will be centered.

                // PlaneMode.Ground and PlaneMode.Placement both use PlaneFinder's ContentPositioningBehaviour
                m_ContentPositioningBehaviour = m_PlaneFinder.GetComponent <ContentPositioningBehaviour>();
                m_ContentPositioningBehaviour.DuplicateStage = false;

                // Place object based on Ground Plane mode
                switch (planeMode)
                {
                case PlaneMode.NONE:
                    /*
                     * m_ContentPositioningBehaviour.AnchorStage = m_PlaneAnchor;
                     * m_ContentPositioningBehaviour.PositionContentAtPlaneAnchor(result);
                     * UtilityHelper.EnableRendererColliderCanvas(m_PlaneAugmentation, true);
                     *
                     * // Astronaut should rotate toward camera with each placement
                     * m_PlaneAugmentation.transform.localPosition = Vector3.zero;
                     * UtilityHelper.RotateTowardCamera(m_PlaneAugmentation);
                     */
                    UtilityHelper.EnableRendererColliderCanvas(m_PlacementAugmentation, false);
                    ResetScene();
                    ResetTrackers();

                    arRCM.FadeCanvas(false);

                    break;

                /*
                 *
                 * case PlaneMode.GROUND:
                 *
                 * m_ContentPositioningBehaviour.AnchorStage = m_PlaneAnchor;
                 * m_ContentPositioningBehaviour.PositionContentAtPlaneAnchor(result);
                 * UtilityHelper.EnableRendererColliderCanvas(m_PlaneAugmentation, true);
                 *
                 * // Astronaut should rotate toward camera with each placement
                 * m_PlaneAugmentation.transform.localPosition = Vector3.zero;
                 * UtilityHelper.RotateTowardCamera(m_PlaneAugmentation);
                 *
                 * break;
                 */


                case PlaneMode.PLACEMENT:

                    if (!m_ProductPlacement.IsPlaced || TouchHandler.DoubleTap)
                    {
                        m_ContentPositioningBehaviour.AnchorStage = m_PlacementAnchor;
                        m_ContentPositioningBehaviour.PositionContentAtPlaneAnchor(result);
                        UtilityHelper.EnableRendererColliderCanvas(m_PlacementAugmentation, true);

                        arRCM.FadeCanvas(true);
                    }

                    if (!m_ProductPlacement.IsPlaced)
                    {
                        m_ProductPlacement.SetProductAnchor(m_PlacementAnchor.transform);
                        m_TouchHandler.enableRotation = true;
                    }

                    break;
                }
            }
        }
    }
예제 #13
0
    public virtual void HandleInteractiveHitTest(HitTestResult result)
    {
        if (result == null)
        {
            Debug.LogError("Invalid hit test result!");
            return;
        }
        if (!m_GroundPlaneUI.IsCanvasButtonPressed())
        {
            Debug.Log("HandleInteractiveHitTest() called.");
            // If the PlaneFinderBehaviour's Mode is Automatic, then the Interactive HitTestResult will be centered.
            // PlaneMode.Ground and PlaneMode.Placement both use PlaneFinder's ContentPositioningBehaviour
            m_ContentPositioningBehaviour = m_PlaneFinder.GetComponent <ContentPositioningBehaviour>();
            m_ContentPositioningBehaviour.DuplicateStage = false;
            // Place object based on Ground Plane mode
            if (showGameObject != null && lastName != showGameObjectName)
            {
                lastName = showGameObjectName;
                showGameObject.gameObject.SetActive(true);
                isPlaced = true;
                if (showGameObjectName == "haiou")
                {
                    showGameObject.GetComponent <Haiou>().Init();
                }
                else
                {
                    FingerTouchEL.Instance.targetGameObject = showGameObject;
                }


                UtilityHelper.EnableRendererColliderCanvas(showGameObject, true);

                switch (showGameObject.GetComponent <WriteItem>().goodsPositionEnum)
                {
                case PlaneMode.None:
                    break;

                case PlaneMode.GROUND:
                    m_ContentPositioningBehaviour.AnchorStage = m_PlaneAnchor;
                    m_ContentPositioningBehaviour.PositionContentAtPlaneAnchor(result);
                    showGameObject.transform.parent = planeAnchor.transform;

                    break;

                case PlaneMode.MIDAIR:
                    m_ContentPositioningBehaviour.AnchorStage = m_MidAirAnchor;
                    m_ContentPositioningBehaviour.PositionContentAtMidAirAnchor(showGameObject.transform);
                    showGameObject.transform.parent = midAirAnchor.transform;
                    break;

                default:
                    break;
                }


                showGameObject.transform.localPosition    = Vector3.zero;
                showGameObject.transform.localEulerAngles = Vector3.zero;
                if (showGameObject.name == "wurenji")
                {
                    showGameObject.GetComponentInChildren <Cloth>().enabled = false;
                }
                showGameObject.transform.localScale = Vector3.one * 0.5f;
                if (showGameObject.name == "wurenji")
                {
                    showGameObject.GetComponentInChildren <Cloth>().enabled = true;
                }
                UtilityHelper.RotateTowardCameraVuforia(showGameObject);
                // YiyouStaticDataManager.Instance.ShowModel = showGameObject;
                FirstUseTipManager.Instance.ShowNextTip(TipType.WriteTip);
                WriteItem writeItem = showGameObject.GetComponent <WriteItem>();
                if (writeItem != null && writeItem.goodsEnum != GoodsWriteEnum.None)
                {
                    ShowInput();
                    GroundPlaneUI.Instance.SetIntroductionText("请选择字体并输入文字");
                }
                else
                {
                    GroundPlaneUI.Instance.SetIntroductionText("", false);

                    ShowButtonPanel();
                }

                ShowEffectPanel();
                GroundPlaneUI.Instance.SetReticleVisiblity(false);
                WriteManager.Instance.SetGoodsEnum(showGameObject.GetComponent <WriteItem>().goodsEnum);
                InitLight(showGameObject.name);
            }
            else
            {
                if (showGameObject == null)
                {
                    GroundPlaneUI.Instance.SetIntroductionText("请先选择合影道具");
                }
            }
        }
    }