private void DestroyHoldIndicator() { if (spawnedArch) { Destroy(spawnedArch.gameObject); spawnedArch = null; } }
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(); } }