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