using UnityEngine;
using UnityEngine.UI;
using UnityEngine.XR.ARFoundation;
using UnityEngine.XR.ARSubsystems;
namespace UnityEngine.XR.ARFoundation.Samples
{
///
/// This example demonstrates disabling vertical planes as they are
/// detected and instantiated by the ARPlaneManager.
///
[RequireComponent(typeof(ARPlaneManager))]
public class DisableVerticalPlanes : MonoBehaviour
{
[Tooltip("The UI Text element used to display log messages.")]
[SerializeField]
Text m_LogText;
///
/// The UI Text element used to display log messages.
///
public Text logText
{
get { return m_LogText; }
set { m_LogText = value; }
}
void OnEnable()
{
GetComponent().planesChanged += OnPlaneAdded;
}
void OnDisable()
{
GetComponent().planesChanged -= OnPlaneAdded;
}
void OnPlaneAdded(ARPlanesChangedEventArgs eventArgs)
{
foreach (var plane in eventArgs.added)
DisableIfVertical(plane);
}
void DisableIfVertical(ARPlane plane)
{
// Check whether the plane is a vertical plane.
if (plane.alignment == PlaneAlignment.Vertical)
{
// Disable the entire GameObject.
plane.gameObject.SetActive(false);
// Add to our log so the user knows something happened.
if (logText != null)
logText.text = string.Format("\n{0}", plane.trackableId);
}
}
}
}