Example #1
0
    void SpawnRotator()
    {
        if (!rotationIndicator)
        {
            Debug.LogError($"No rotation indicator connected to PlaceOnPlane");
            return;
        }

        GameObject rotIndicator = Instantiate(rotationIndicator, spawnedObject.transform);

        rotIndicator.transform.localPosition = new Vector3(0, 0.022f, 0);
        Camera mainCamera = GetComponent <ARSessionOrigin>().camera;
        Canvas canv       = rotIndicator.GetComponent <Canvas>();

        canv.worldCamera = mainCamera;
        RotationUIPanel panelController = rotIndicator.GetComponent <RotationUIPanel>();

        panelController.AssignRefences(spawnedObject, mainCamera);
    }
Example #2
0
    private void Update()
    {
        if (!arCamera)
        {
            return;
        }

        if (TryGetRayPosition(out Vector2 rayPos))
        {
            Ray        ray = arCamera.ScreenPointToRay(rayPos);
            RaycastHit hit;
            if (Physics.Raycast(ray, out hit))
            {
                preHoldTimer += Time.deltaTime;
                if (preHoldTimer < activationDelay)
                {
                    return;
                }

                if (!movingObject && hit.collider.gameObject.layer == 8)
                {
                    if (!spawnedArch)
                    {
                        spawnedArch = Instantiate(uiArchPrefab, Input.mousePosition + new Vector3(0f, 50f, 0f), Quaternion.identity, uiCanvas.transform).GetComponent <FillArch>();
                        Debug.Log($"Insatntiating new arch");
                    }
                    spawnedArch.transform.position = Input.mousePosition + new Vector3(0f, 50f, 0f);
                    spawnedArch.SetFillValue(normalizedTimer);
                    holdingOverObject = true;
                    hitObject         = hit.collider.gameObject;
                    selectedObjectRotataionIndicator = hitObject.GetComponentInChildren <RotationUIPanel>();
                    shadowQuad      = hitObject.GetComponentInChildren <ARShadowQuad>().transform;
                    objectOriginalY = hitObject.transform.localPosition.y;
                    timer          += Time.deltaTime;
                    normalizedTimer = timer / timeToActivate;

                    if (normalizedTimer >= 1)
                    {
                        DestroyHoldIndicator();
                        LiftObject(hitObject);
                    }
                }
                else
                {
                    if (spawnedArch)
                    {
                        DestroyHoldIndicator();
                        LowerObject(hitObject);
                    }
                    if (movingObject)
                    {
                        MoveObject();
                    }
                }
            }
            else
            {
                if (movingObject)
                {
                    MoveObject();
                }
            }
        }
        else
        {
            if (hitObject)
            {
                LeanTween.cancel(hitObject);
            }
            if (hitObject && hitObject.transform.localPosition.y != objectOriginalY)
            {
                LowerObject(hitObject);
            }

            Reset();
        }
    }