1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- /****************************************************************************
- * Copyright 2019 Nreal Techonology Limited. All rights reserved.
- *
- * This file is part of NRSDK.
- *
- * https://www.nreal.ai/
- *
- *****************************************************************************/
- using System;
- using UnityEngine;
- using UnityEngine.UI;
- namespace NRKernal.Experimental.Persistence
- {
- /// <summary>
- /// Uses 4 frame corner objects to visualize an TrackingImage.
- /// </summary> </summary>
- public class TrackingImageVisualizerForAnchor : MonoBehaviour
- {
- public Action OnConfirm;
- /// <summary> The TrackingImage to visualize. </summary>
- public NRTrackableImage Image;
- /// <summary>
- /// A model for the lower left corner of the frame to place when an image is detected. </summary>
- public GameObject FrameLowerLeft;
- /// <summary>
- /// A model for the lower right corner of the frame to place when an image is detected. </summary>
- public GameObject FrameLowerRight;
- /// <summary>
- /// A model for the upper left corner of the frame to place when an image is detected. </summary>
- public GameObject FrameUpperLeft;
- /// <summary>
- /// A model for the upper right corner of the frame to place when an image is detected. </summary>
- public GameObject FrameUpperRight;
- /// <summary> The axis. </summary>
- public GameObject Axis;
- /// <summary> The save control. </summary>
- public Button SaveButton;
- void Start()
- {
- SaveButton.onClick.AddListener(new UnityEngine.Events.UnityAction(() =>
- {
- OnConfirm?.Invoke();
- }));
- }
- /// <summary> Updates this object. </summary>
- public void Update()
- {
- if (Image == null || Image.GetTrackingState() != TrackingState.Tracking)
- {
- FrameLowerLeft.SetActive(false);
- FrameLowerRight.SetActive(false);
- FrameUpperLeft.SetActive(false);
- FrameUpperRight.SetActive(false);
- Axis.SetActive(false);
- SaveButton.gameObject.SetActive(false);
- return;
- }
- float halfWidth = Image.ExtentX / 2;
- float halfHeight = Image.ExtentZ / 2;
- FrameLowerLeft.transform.localPosition = (halfWidth * Vector3.left) + (halfHeight * Vector3.back);
- FrameLowerRight.transform.localPosition = (halfWidth * Vector3.right) + (halfHeight * Vector3.back);
- FrameUpperLeft.transform.localPosition = (halfWidth * Vector3.left) + (halfHeight * Vector3.forward);
- FrameUpperRight.transform.localPosition = (halfWidth * Vector3.right) + (halfHeight * Vector3.forward);
- SaveButton.transform.localPosition = (halfHeight + 0.1f) * Vector3.back;
- var center = Image.GetCenterPose();
- transform.position = center.position;
- transform.rotation = center.rotation;
- FrameLowerLeft.SetActive(true);
- FrameLowerRight.SetActive(true);
- FrameUpperLeft.SetActive(true);
- FrameUpperRight.SetActive(true);
- SaveButton.gameObject.SetActive(true);
- Axis.SetActive(true);
- }
- }
- }
|