void AddNew(GameObject stickerPrefab)
    {
        if (selectedTouchCollider)
        {
            manipulating = false;
        }
        selectedTouchCollider = Instantiate(stickerPrefab).GetComponentInChildren <TouchCollider>();
        var sticker = selectedTouchCollider.sticker;

        selectedTouchCollider.sticker.parent = currentStickerParent.transform;
        var        ray  = arCamera.ScreenPointToRay(screenCenter);
        var        hits = Physics.RaycastAll(ray, maxRayDistance, arKitPlaneLayer);
        RaycastHit?highestPriorityHit = null;

        foreach (var hit in hits)
        {
            highestPriorityHit = hit;
            if (hit.transform.tag == arDetectedPlaneTag)
            {
                break;
            }
        }
        if (highestPriorityHit.HasValue)
        {
            sticker.position = highestPriorityHit.Value.point;
            var arCameraPosition = arCamera.transform.position;
            sticker.LookAt(new Vector3(arCameraPosition.x, sticker.position.y, arCameraPosition.z));
        }
    }
Ejemplo n.º 2
0
    protected override NPCConversation GetNextConversation()
    {
        if (hasFallen)
        {
            if (!isConversationAfterFallDone)
            {
                isConversationAfterFallDone = true;
                return(conversationAfterFall);
            }
            return(PromptConversation);
        }
        else if (isConversation1Done)
        {
            foreach (Transform apple in appleTransforms)
            {
                if (TouchCollider.OverlapPoint(apple.position))
                {
                    Destroy(apple.gameObject);
                    return(conversation2);
                }
            }
        }
        else if (!isConversation1Done && CurrentConversation == PromptConversation)
        {
            return(conversation1);
        }

        return(PromptConversation);
    }
 public void OnPointerUpDeleteButton()
 {
     if (selectedTouchCollider)
     {
         Destroy(selectedTouchCollider.sticker.gameObject);
         deleteButtonDot.enabled = false;
         selectedTouchCollider   = null;
         manipulating            = false;
     }
 }
    void ResetSurfboard()
    {
        ResetLightingRotation();
        selectedTouchCollider = surfboardTouchCollider;
        var        sticker            = surfboardTouchCollider.sticker;
        var        ray                = arCamera.ScreenPointToRay(screenCenter);
        var        hits               = Physics.RaycastAll(ray, maxRayDistance, arKitPlaneLayer);
        RaycastHit?highestPriorityHit = null;

        foreach (var hit in hits)
        {
            highestPriorityHit = hit;
            if (hit.transform.tag == arDetectedPlaneTag)
            {
                break;
            }
        }
        if (highestPriorityHit.HasValue)
        {
            sticker.position = highestPriorityHit.Value.point;
            var arCameraPosition = arCamera.transform.position;
            sticker.LookAt(new Vector3(arCameraPosition.x, sticker.position.y, arCameraPosition.z));
        }
    }
Ejemplo n.º 5
0
 public override bool PressDown(TouchCollider tc)
 {
     eventSet.DoPress();
     return(base.PressDown(tc));
 }
Ejemplo n.º 6
0
 public override bool Release(TouchCollider tc)
 {
     eventSet.DoRelease();
     return(base.Release(tc));
 }
Ejemplo n.º 7
0
 public override bool Hold(TouchCollider tc)
 {
     eventSet.DoHold();
     return(base.Hold(tc));
 }
Ejemplo n.º 8
0
 public override void PressDown(TouchCollider tc)
 {
     base.PressDown(tc);
     eventSet.DoPress();
 }
Ejemplo n.º 9
0
 public override void Release(TouchCollider tc)
 {
     base.Release(tc);
     eventSet.DoRelease();
 }
Ejemplo n.º 10
0
 public override void Hold(TouchCollider tc)
 {
     base.Hold(tc);
     eventSet.DoHold();
 }
    void Update()
    {
        if (Input.touchCount > 0)
        {
            if (Input.touchCount < 2)
            {
                var fingerId = Input.touches[0].fingerId;
                switch (Input.touches[0].phase)
                {
                case TouchPhase.Began:
                    RaycastHit stickerHit;
                    var        ray = arCamera.ScreenPointToRay(Input.touches[0].position);
                    if (Physics.Raycast(ray, out stickerHit, maxRayDistance, stickerLayer))
                    {
                        selectedTouchCollider = stickerHit.transform.GetComponent <TouchCollider>();
                        draggingFingerId      = fingerId;
                        touchOffset           = Input.touches[0].position - RemoveZVector(arCamera.WorldToScreenPoint(selectedTouchCollider.sticker.position));
                    }
                    ray = arCamera.ScreenPointToRay(Input.touches[0].position - touchOffset);
                    var        planeHits          = Physics.RaycastAll(ray, maxRayDistance, arKitPlaneLayer);
                    RaycastHit?highestPriorityHit = null;
                    foreach (var planeHit in planeHits)
                    {
                        highestPriorityHit = planeHit;
                        if (planeHit.transform.tag == arDetectedPlaneTag)
                        {
                            break;
                        }
                    }
                    if (highestPriorityHit.HasValue)
                    {
                        lastHitPoint = highestPriorityHit.Value.point;
                    }
                    break;

                case TouchPhase.Moved:
                case TouchPhase.Stationary:
                    ray                = arCamera.ScreenPointToRay(Input.touches[0].position - touchOffset);
                    planeHits          = Physics.RaycastAll(ray, maxRayDistance, arKitPlaneLayer);
                    highestPriorityHit = null;
                    foreach (var planeHit in planeHits)
                    {
                        highestPriorityHit = planeHit;
                        if (planeHit.transform.tag == arDetectedPlaneTag)
                        {
                            break;
                        }
                    }
                    if (draggingFingerId == fingerId && selectedTouchCollider && highestPriorityHit.HasValue)
                    {
                        var hitPoint = highestPriorityHit.Value.point;
                        if (!wasTwoFinger)
                        {
                            selectedTouchCollider.sticker.Translate((hitPoint - lastHitPoint), Space.World);
                        }
                        lastHitPoint = hitPoint;
                        manipulating = true;
                        wasTwoFinger = false;
                    }
                    break;
                }
            }
        }
        else
        {
            draggingFingerId = -1;
            if (selectedTouchCollider)
            {
                manipulating = false;
            }
        }
    }