/******************************************************************************
* Copyright (C) Ultraleap, Inc. 2011-2021. *
* *
* Use subject to the terms of the Apache License 2.0 available at *
* http://www.apache.org/licenses/LICENSE-2.0, or another agreement *
* between Ultraleap and you, your company or other organization. *
******************************************************************************/
using Leap.Unity.Infix;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace Leap.Unity.Geometry
{
[System.Serializable]
///
/// A transformless Plane defined by a position and normal vector.
///
public struct LocalPlane
{
public Vector3 position;
public Vector3 normal;
public LocalPlane(Vector3 position, Vector3 normal)
{
this.position = position;
this.normal = normal;
}
public Plane With(Transform t)
{
return new Plane(position, normal, t);
}
}
public static class LocalPlaneExtensions
{
///
/// Returns a transformless LocalPlane corresponding to the world-space plane of this
/// Rect.
///
public static LocalPlane ToWorldPlane(this Rect rect)
{
var pose = rect.pose;
return new LocalPlane(pose.position, pose.rotation * Rect.PLANE_NORMAL);
}
///
/// Returns a transformless LocalPlane corresponding to the local-space plane of this
/// Rect.
///
public static LocalPlane ToLocalPlane(this Rect rect)
{
var pose = rect.pose;
return new LocalPlane(Vector3.zero, Rect.PLANE_NORMAL);
}
}
}